@botonic/react 0.30.3-alpha.0 → 0.30.4
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/lib/cjs/components/index-types.d.ts +0 -15
- package/lib/cjs/components/message/index.js +1 -1
- package/lib/cjs/components/message/message-feedback.js +1 -1
- package/lib/cjs/components/message/message-feedback.js.map +1 -1
- package/lib/cjs/components/multichannel/multichannel-text.js +4 -4
- package/lib/cjs/components/multichannel/multichannel-text.js.map +1 -1
- package/lib/cjs/components/multichannel/whatsapp/markdown-meta.d.ts +1 -0
- package/lib/cjs/components/multichannel/whatsapp/markdown-meta.js +42 -0
- package/lib/cjs/components/multichannel/whatsapp/markdown-meta.js.map +1 -0
- package/lib/cjs/components/whatsapp-button-list.js +2 -2
- package/lib/cjs/components/whatsapp-button-list.js.map +1 -1
- package/lib/cjs/components/whatsapp-cta-url-button.js +2 -2
- package/lib/cjs/components/whatsapp-cta-url-button.js.map +1 -1
- package/lib/cjs/util/webchat.js +1 -1
- package/lib/cjs/webchat/input-panel/index.js +1 -1
- package/lib/cjs/webchat/webchat.js +1 -1
- package/lib/esm/components/index-types.d.ts +0 -15
- package/lib/esm/components/message/index.js +2 -2
- package/lib/esm/components/message/message-feedback.js +2 -2
- package/lib/esm/components/message/message-feedback.js.map +1 -1
- package/lib/esm/components/multichannel/multichannel-text.js +4 -4
- package/lib/esm/components/multichannel/multichannel-text.js.map +1 -1
- package/lib/esm/components/multichannel/whatsapp/markdown-meta.d.ts +1 -0
- package/lib/esm/components/multichannel/whatsapp/markdown-meta.js +38 -0
- package/lib/esm/components/multichannel/whatsapp/markdown-meta.js.map +1 -0
- package/lib/esm/components/whatsapp-button-list.js +2 -2
- package/lib/esm/components/whatsapp-button-list.js.map +1 -1
- package/lib/esm/components/whatsapp-cta-url-button.js +2 -2
- package/lib/esm/components/whatsapp-cta-url-button.js.map +1 -1
- package/lib/esm/util/webchat.js +2 -2
- package/lib/esm/webchat/input-panel/index.js +2 -2
- package/lib/esm/webchat/webchat.js +2 -2
- package/package.json +3 -2
- package/src/components/index-types.ts +0 -16
- package/src/components/message/index.jsx +2 -2
- package/src/components/message/message-feedback.tsx +2 -2
- package/src/components/multichannel/multichannel-text.jsx +13 -9
- package/src/components/multichannel/whatsapp/markdown-meta.ts +66 -0
- package/src/components/whatsapp-button-list.tsx +2 -2
- package/src/components/whatsapp-cta-url-button.tsx +5 -2
- package/src/util/webchat.js +2 -2
- package/src/webchat/input-panel/index.tsx +2 -2
- package/src/webchat/webchat.jsx +2 -2
- package/lib/cjs/components/multichannel/whatsapp/markdown.d.ts +0 -1
- package/lib/cjs/components/multichannel/whatsapp/markdown.js +0 -57
- package/lib/cjs/components/multichannel/whatsapp/markdown.js.map +0 -1
- package/lib/esm/components/multichannel/whatsapp/markdown.d.ts +0 -1
- package/lib/esm/components/multichannel/whatsapp/markdown.js +0 -53
- package/lib/esm/components/multichannel/whatsapp/markdown.js.map +0 -1
- package/src/components/multichannel/whatsapp/markdown.ts +0 -88
|
@@ -82,20 +82,6 @@ export interface BlobProps {
|
|
|
82
82
|
blobWidth?: string;
|
|
83
83
|
imageStyle?: any;
|
|
84
84
|
}
|
|
85
|
-
export interface ScrollbarProps {
|
|
86
|
-
autoHide?: boolean;
|
|
87
|
-
thumb?: {
|
|
88
|
-
bgcolor?: string;
|
|
89
|
-
border?: string;
|
|
90
|
-
color?: string;
|
|
91
|
-
opacity?: string;
|
|
92
|
-
};
|
|
93
|
-
track?: {
|
|
94
|
-
bgcolor?: string;
|
|
95
|
-
border?: string;
|
|
96
|
-
color?: string;
|
|
97
|
-
};
|
|
98
|
-
}
|
|
99
85
|
export interface ThemeProps extends StyleProp {
|
|
100
86
|
mobileBreakpoint?: number;
|
|
101
87
|
mobileStyle?: any;
|
|
@@ -151,7 +137,6 @@ export interface ThemeProps extends StyleProp {
|
|
|
151
137
|
};
|
|
152
138
|
scrollButton?: EnableProp & CustomProp;
|
|
153
139
|
markdownStyle?: string;
|
|
154
|
-
scrollbar?: ScrollbarProps & EnableProp;
|
|
155
140
|
userInput?: {
|
|
156
141
|
attachments?: EnableProp & CustomProp;
|
|
157
142
|
blockInputs?: BlockInputOption[];
|
|
@@ -28,7 +28,7 @@ const Message = props => {
|
|
|
28
28
|
const markdown = props.markdown;
|
|
29
29
|
const { webchatState, addMessage, updateReplies, getThemeProperty } = (0, react_1.useContext)(contexts_1.WebchatContext);
|
|
30
30
|
const [state, setState] = (0, react_1.useState)({
|
|
31
|
-
id: props.id || (0, uuid_1.
|
|
31
|
+
id: props.id || (0, uuid_1.v7)(),
|
|
32
32
|
});
|
|
33
33
|
const [disabled, setDisabled] = (0, react_1.useState)(false);
|
|
34
34
|
children = buttons_disabler_1.ButtonsDisabler.updateChildrenButtons(children, {
|
|
@@ -46,7 +46,7 @@ const MessageFeedback = ({ botInteractionId, inferenceId, messageId, }) => {
|
|
|
46
46
|
knowledgebaseInferenceId: inferenceId,
|
|
47
47
|
feedbackBotInteractionId: botInteractionId,
|
|
48
48
|
feedbackTargetId: messageId,
|
|
49
|
-
feedbackGroupId: (0, uuid_1.
|
|
49
|
+
feedbackGroupId: (0, uuid_1.v7)(),
|
|
50
50
|
possibleOptions: [tracking_1.FeedbackOption.ThumbsDown, tracking_1.FeedbackOption.ThumbsUp],
|
|
51
51
|
possibleValues: [0, 1],
|
|
52
52
|
option: isUseful ? tracking_1.FeedbackOption.ThumbsUp : tracking_1.FeedbackOption.ThumbsDown,
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"message-feedback.js","sourceRoot":"","sources":["../../../../src/components/message/message-feedback.tsx"],"names":[],"mappings":";;;;;AAAA,iCAA8D;AAC9D,+
|
|
1
|
+
{"version":3,"file":"message-feedback.js","sourceRoot":"","sources":["../../../../src/components/message/message-feedback.tsx"],"names":[],"mappings":"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"}
|
|
@@ -12,7 +12,7 @@ const facebook_1 = require("./facebook/facebook");
|
|
|
12
12
|
const multichannel_button_1 = require("./multichannel-button");
|
|
13
13
|
const multichannel_context_1 = require("./multichannel-context");
|
|
14
14
|
const multichannel_utils_1 = require("./multichannel-utils");
|
|
15
|
-
const
|
|
15
|
+
const markdown_meta_1 = require("./whatsapp/markdown-meta");
|
|
16
16
|
const MultichannelText = props => {
|
|
17
17
|
var _a;
|
|
18
18
|
const requestContext = (0, react_1.useContext)(contexts_1.RequestContext);
|
|
@@ -83,7 +83,7 @@ const MultichannelText = props => {
|
|
|
83
83
|
const texts = getText(props.children);
|
|
84
84
|
const { postbackButtons, urlButtons, webviewButtons } = getWhatsappButtons();
|
|
85
85
|
const textElements = texts.map(text => {
|
|
86
|
-
const textWithMarkdown = (0,
|
|
86
|
+
const textWithMarkdown = (0, markdown_meta_1.convertToMarkdownMeta)(text);
|
|
87
87
|
return (props.newline || '') + textWithMarkdown;
|
|
88
88
|
});
|
|
89
89
|
const webviewButtonElements = webviewButtons.map(regenerateMultichannelButtons(false));
|
|
@@ -155,8 +155,8 @@ const MultichannelText = props => {
|
|
|
155
155
|
const text = getText(props.children);
|
|
156
156
|
const multichannelFacebook = new facebook_1.MultichannelFacebook();
|
|
157
157
|
const { texts, propsLastText, propsWithoutChildren } = multichannelFacebook.convertText(props, text[0]);
|
|
158
|
-
|
|
159
|
-
|
|
158
|
+
const [lastText, ...buttonsAndReplies] = propsLastText.children;
|
|
159
|
+
return ((0, jsx_runtime_1.jsxs)(jsx_runtime_1.Fragment, { children: [texts === null || texts === void 0 ? void 0 : texts.map((message, i) => ((0, jsx_runtime_1.jsx)(text_1.Text, Object.assign({}, propsWithoutChildren, { children: (0, markdown_meta_1.convertToMarkdownMeta)(message) }), i))), (0, jsx_runtime_1.jsxs)(text_1.Text, Object.assign({}, propsLastText, { children: [(0, markdown_meta_1.convertToMarkdownMeta)(lastText), buttonsAndReplies] }))] }));
|
|
160
160
|
}
|
|
161
161
|
return (0, jsx_runtime_1.jsx)(text_1.Text, Object.assign({}, props, { children: props.children }));
|
|
162
162
|
};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"multichannel-text.js","sourceRoot":"","sources":["../../../../src/components/multichannel/multichannel-text.jsx"],"names":[],"mappings":";;;;;AAAA,wCAA6D;AAC7D,uDAAyC;AAEzC,6CAA+C;AAC/C,0BAA6D;AAC7D,kCAA8B;AAC9B,kDAA0D;AAC1D,+DAA0D;AAC1D,iEAA4D;AAC5D,6DAa6B;AAC7B,
|
|
1
|
+
{"version":3,"file":"multichannel-text.js","sourceRoot":"","sources":["../../../../src/components/multichannel/multichannel-text.jsx"],"names":[],"mappings":";;;;;AAAA,wCAA6D;AAC7D,uDAAyC;AAEzC,6CAA+C;AAC/C,0BAA6D;AAC7D,kCAA8B;AAC9B,kDAA0D;AAC1D,+DAA0D;AAC1D,iEAA4D;AAC5D,6DAa6B;AAC7B,4DAAgE;AAEzD,MAAM,gBAAgB,GAAG,KAAK,CAAC,EAAE;;IACtC,MAAM,cAAc,GAAG,IAAA,kBAAU,EAAC,yBAAc,CAAC,CAAA;IACjD,MAAM,mBAAmB,GAAG,IAAA,kBAAU,EAAC,0CAAmB,CAAC,CAAA;IAC3D,MAAM,qBAAqB,GAAG,MAAA,KAAK,CAAC,aAAa,mCAAI,IAAI,CAAA;IAEzD,IAAI,QAAQ,GAAG,EAAE,CAAA;IAEjB,MAAM,OAAO,GAAG,QAAQ,CAAC,EAAE;QACzB,QAAQ,GAAG,KAAK,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAA;QAC1D,MAAM,IAAI,GAAG,QAAQ;aAClB,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC;aACzB,GAAG,CAAC,CAAC,CAAC,EAAE;YACP,IAAI,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC;gBAAE,OAAO,OAAO,CAAC,CAAC,CAAC,CAAA;;gBAClC,OAAO,MAAM,CAAC,CAAC,CAAC,CAAA;QACvB,CAAC,CAAC;aACD,IAAI,CAAC,EAAE,CAAC,CAAA;QACX,IAAI,IAAI,IAAI,SAAS,EAAE;YACrB,OAAO,EAAE,CAAA;SACV;QACD,OAAO,CAAC,IAAI,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,KAAK,EAAE,CAAC,CAAA,CAAC,wEAAwE;IAC9G,CAAC,CAAA;IAED,MAAM,oBAAoB,GAAG,GAAG,EAAE,CAChC,EAAE,CAAC,MAAM,CACP,IAAA,2CAAsB,EAAC,eAAK,CAAC,QAAQ,CAAC,OAAO,CAAC,KAAK,CAAC,QAAQ,CAAC,CAAC,EAC9D,IAAA,2CAAsB,EAAC,eAAK,CAAC,QAAQ,CAAC,OAAO,CAAC,KAAK,CAAC,QAAQ,CAAC,CAAC,CAC/D,CAAA;IAEH,MAAM,kBAAkB,GAAG,GAAG,EAAE;QAC9B,MAAM,eAAe,GAAG,EAAE,CAAA;QAC1B,MAAM,UAAU,GAAG,EAAE,CAAA;QACrB,MAAM,cAAc,GAAG,EAAE,CAAA;QACzB,KAAK,MAAM,MAAM,IAAI,oBAAoB,EAAE,EAAE;YAC3C,IAAI,IAAA,kCAAa,EAAC,MAAM,CAAC;gBAAE,UAAU,CAAC,IAAI,CAAC,MAAM,CAAC,CAAA;iBAC7C,IAAI,IAAA,sCAAiB,EAAC,MAAM,CAAC;gBAAE,cAAc,CAAC,IAAI,CAAC,MAAM,CAAC,CAAA;iBAC1D,IAAI,IAAA,uCAAkB,EAAC,MAAM,CAAC;gBAAE,eAAe,CAAC,IAAI,CAAC,MAAM,CAAC,CAAA;SAClE;QACD,OAAO,EAAE,eAAe,EAAE,UAAU,EAAE,cAAc,EAAE,CAAA;IACxD,CAAC,CAAA;IAED,MAAM,eAAe,GAAG,GAAG,EAAE;QAC3B,IAAI,KAAK,CAAC,SAAS,IAAI,SAAS,EAAE;YAChC,OAAO,SAAS,CAAA;SACjB;QACD,IAAI,mBAAmB,CAAC,YAAY,IAAI,IAAI,EAAE;YAC5C,OAAO,mBAAmB,CAAC,YAAY,CAAA;SACxC;QACD,OAAO,KAAK,CAAC,SAAS,KAAK,QAAQ,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAA;IAC/C,CAAC,CAAA;IAED,MAAM,6BAA6B,GAAG,CAAC,kBAAkB,GAAG,IAAI,EAAE,EAAE;QAClE,MAAM,SAAS,GAAG,CAAC,kBAAkB,EAAE,CAAC,EAAE,EAAE;YAC1C,MAAM,IAAI,GAAG,IAAA,kCAAa,EAAC,kBAAkB,CAAC,CAAA;YAC9C,MAAM,MAAM,GACV,IAAI,KAAK,gCAAW,CAAC,QAAQ,CAAC,CAAC,CAAC,qBAAqB,CAAC,CAAC,CAAC,IAAI,CAAA;YAC9D,MAAM,OAAO,GACX,mBAAmB,CAAC,gBAAgB,IAAI,IAAI;gBAC5C,CAAC,kBAAkB;gBACnB,CAAC,KAAK,CAAC;gBACL,CAAC,CAAC,EAAE;gBACJ,CAAC,CAAC,IAAI,CAAA;YAEV,OAAO,CACL,uBAAC,wCAAkB,kBAEjB,OAAO,EAAE,OAAO,EAChB,MAAM,EAAE,MAAM,IACV,kBAAkB,CAAC,KAAK,cAE3B,kBAAkB,CAAC,KAAK,CAAC,QAAQ,KAL7B,GAAG,IAAI,GAAG,CAAC,EAAE,CAMC,CACtB,CAAA;QACH,CAAC,CAAA;QACD,OAAO,SAAS,CAAA;IAClB,CAAC,CAAA;IAED,MAAM,0BAA0B,GAAG,eAAe,CAAC,EAAE;QACnD,MAAM,QAAQ,GAAG,EAAE,CAAA;QACnB,KACE,IAAI,CAAC,GAAG,CAAC,EACT,CAAC,GAAG,eAAe,CAAC,MAAM,EAC1B,CAAC,IAAI,8CAAyB,EAC9B;YACA,QAAQ,CAAC,IAAI,CAAC,eAAe,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,GAAG,8CAAyB,CAAC,CAAC,CAAA;SACvE;QACD,OAAO,QAAQ,CAAA;IACjB,CAAC,CAAA;IAED,IAAI,IAAA,iBAAU,EAAC,cAAc,CAAC,OAAO,CAAC,EAAE;QACtC,MAAM,KAAK,GAAG,OAAO,CAAC,KAAK,CAAC,QAAQ,CAAC,CAAA;QACrC,MAAM,EAAE,eAAe,EAAE,UAAU,EAAE,cAAc,EAAE,GAAG,kBAAkB,EAAE,CAAA;QAE5E,MAAM,YAAY,GAAG,KAAK,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE;YACpC,MAAM,gBAAgB,GAAG,IAAA,qCAAqB,EAAC,IAAI,CAAC,CAAA;YACpD,OAAO,CAAC,KAAK,CAAC,OAAO,IAAI,EAAE,CAAC,GAAG,gBAAgB,CAAA;QACjD,CAAC,CAAC,CAAA;QAEF,MAAM,qBAAqB,GAAG,cAAc,CAAC,GAAG,CAC9C,6BAA6B,CAAC,KAAK,CAAC,CACrC,CAAA;QAED,MAAM,oBAAoB,GACxB,KAAK,CAAC,oBAAoB,IAAI,0DAAqC,CAAA;QAErE,MAAM,6BAA6B,GACjC,CAAC,qBAAqB,IAAI,eAAe,CAAC,MAAM,GAAG,yCAAoB,CAAA;QAEzE,IAAI,6BAA6B,EAAE;YACjC,MAAM,0BAA0B,GAC9B,KAAK,CAAC,0BAA0B,IAAI,qDAAgC,CAAA;YAEtE,MAAM,iBAAiB,GAAG,UAAU,CAAC,GAAG,CACtC,6BAA6B,CAAC,CAAC,CAAC,KAAK,CAAC,MAAM,CAAC,CAC9C,CAAA;YACD,MAAM,sBAAsB,GAAG,eAAe,CAAC,GAAG,CAChD,6BAA6B,CAAC,CAAC,CAAC,KAAK,CAAC,MAAM,IAAI,CAAC,CAAC,UAAU,CAAC,MAAM,CAAC,CACrE,CAAA;YAED,MAAM,0BAA0B,GAAG,0BAA0B,CAC3D,sBAAsB,CACvB,CAAA;YAED,MAAM,QAAQ,GAAG,0BAA0B,CAAC,GAAG,CAC7C,CAAC,eAAe,EAAE,KAAK,EAAE,EAAE;gBACzB,IAAI,eAAe,CAAC,MAAM,IAAI,yCAAoB,EAAE;oBAClD,OAAO;wBACL,IAAI,EAAE,YAAK,CAAC,IAAI;wBAChB,QAAQ,EAAE,CAAC,GAAG,oBAAoB,EAAE,GAAG,eAAe,CAAC;qBACxD,CAAA;iBACF;gBACD,MAAM,IAAI,GAAG,eAAe,CAAC,GAAG,CAAC,cAAc,CAAC,EAAE;oBAChD,MAAM,GAAG,GAAG;wBACV,EAAE,EAAE,cAAc,CAAC,KAAK,CAAC,IAAI;4BAC3B,CAAC,CAAC,mBAAmB,cAAc,CAAC,KAAK,CAAC,IAAI,EAAE;4BAChD,CAAC,CAAC,cAAc,CAAC,KAAK,CAAC,OAAO;wBAChC,KAAK,EAAE,cAAc,CAAC,KAAK,CAAC,QAAQ;qBACrC,CAAA;oBACD,OAAO,GAAG,CAAA;gBACZ,CAAC,CAAC,CAAA;gBACF,MAAM,oBAAoB,GAAG;oBAC3B,IAAI,EAAE,KAAK,KAAK,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,oBAAoB;oBACzD,MAAM,EAAE,0BAA0B;oBAClC,QAAQ,EAAE,CAAC,EAAE,IAAI,EAAE,CAAC;iBACrB,CAAA;gBAED,OAAO;oBACL,IAAI,EAAE,YAAK,CAAC,oBAAoB;oBAChC,KAAK,EAAE,oBAAoB;iBAC5B,CAAA;YACH,CAAC,CACF,CAAA;YAED,MAAM,4BAA4B,GAAG,CACnC,uBAAC,WAAI,oBAEC,gDAA2B,EAC3B,KAAK,cAER,iBAAiB,KAJb,qBAAqB,CAKrB,CACR,CAAA;YAED,MAAM,gCAAgC,GAAG,CACvC,wBAAC,WAAI,oBAEC,gDAA2B,EAC3B,KAAK,eAER,oBAAoB,EACpB,qBAAqB,MALjB,yBAAyB,CAMzB,CACR,CAAA;YAED,OAAO,CACL,6DACG,QAAQ,CAAC,GAAG,CAAC,CAAC,OAAO,EAAE,CAAC,EAAE,EAAE;wBAC3B,IAAI,OAAO,CAAC,IAAI,KAAK,YAAK,CAAC,oBAAoB;4BAC7C,OAAO,CACL,uBAAC,sBAAkB,oBAEb,OAAO,CAAC,KAAK,GADZ,OAAO,CAAC,gBAAgB,CAE7B,CACH,CAAA;wBACH,OAAO,CACL,uBAAC,WAAI,oBAEC,gDAA2B,EAC3B,KAAK,cAER,OAAO,CAAC,QAAQ,KAJZ,OAAO,CAAC,wBAAwB,CAKhC,CACR,CAAA;oBACH,CAAC,CAAC,EACD,iBAAiB,CAAC,MAAM,GAAG,CAAC,IAAI,4BAA4B,EAC5D,qBAAqB,CAAC,MAAM,GAAG,CAAC,IAAI,gCAAgC,IACpE,CACJ,CAAA;SACF;QAED,mBAAmB,CAAC,YAAY,GAAG,eAAe,EAAE,CAAA;QACpD,MAAM,sBAAsB,GAAG,eAAe,CAAC,GAAG,CAChD,6BAA6B,CAAC,CAAC,CAAC,KAAK,CAAC,MAAM,CAAC,CAC9C,CAAA;QACD,MAAM,iBAAiB,GAAG,UAAU,CAAC,GAAG,CACtC,6BAA6B,CAAC,CAAC,CAAC,KAAK,CAAC,MAAM,IAAI,CAAC,CAAC,eAAe,CAAC,MAAM,CAAC,CAC1E,CAAA;QAED,QAAQ,GAAG,EAAE,CAAC,MAAM,CAClB,CAAC,GAAG,YAAY,CAAC,EACjB,CAAC,GAAG,sBAAsB,CAAC,EAC3B,CAAC,GAAG,iBAAiB,CAAC,CACvB,CAAA;QAED,IAAI,sBAAsB,CAAC,MAAM,KAAK,CAAC,EAAE;YACvC,IAAI,iBAAiB,CAAC,MAAM,KAAK,CAAC,EAAE;gBAClC,OAAO,CACL,uBAAC,wBAAoB,IACnB,IAAI,EAAE,YAAY,CAAC,CAAC,CAAC,EACrB,WAAW,EAAE,iBAAiB,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,QAAQ,EAChD,GAAG,EAAE,iBAAiB,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,GAAG,GACnC,CACH,CAAA;aACF;YAED,IAAI,qBAAqB,CAAC,MAAM,KAAK,CAAC,EAAE;gBACtC,OAAO,CACL,uBAAC,wBAAoB,IACnB,IAAI,EAAE,YAAY,CAAC,CAAC,CAAC,EACrB,WAAW,EAAE,qBAAqB,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,QAAQ,EACpD,OAAO,EAAE,qBAAqB,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,EAC/C,MAAM,EAAE,qBAAqB,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,MAAM,GAC7C,CACH,CAAA;aACF;SACF;QAED,IAAI,mBAAmB,CAAC,gBAAgB,IAAI,IAAI,EAAE;YAChD,OAAO,QAAQ,CAAA;SAChB;QACD,MAAM,QAAQ,GAAG;YACf,uBAAC,WAAI,oBAAa,gDAA2B,EAAM,KAAK,cACrD,QAAQ,KADA,CAAC,CAEL;SACR,CAAA;QACD,IAAI,qBAAqB,CAAC,MAAM,EAAE;YAChC,QAAQ,CAAC,IAAI,CACX,wBAAC,WAAI,oBAAa,gDAA2B,EAAM,KAAK,eACrD,oBAAoB,EACpB,qBAAqB,MAFb,CAAC,CAGL,CACR,CAAA;SACF;QAED,OAAO,2DAAG,QAAQ,GAAI,CAAA;KACvB;IAED,IAAI,IAAA,iBAAU,EAAC,cAAc,CAAC,OAAO,CAAC,EAAE;QACtC,MAAM,IAAI,GAAG,OAAO,CAAC,KAAK,CAAC,QAAQ,CAAC,CAAA;QACpC,MAAM,oBAAoB,GAAG,IAAI,+BAAoB,EAAE,CAAA;QACvD,MAAM,EAAE,KAAK,EAAE,aAAa,EAAE,oBAAoB,EAAE,GAClD,oBAAoB,CAAC,WAAW,CAAC,KAAK,EAAE,IAAI,CAAC,CAAC,CAAC,CAAC,CAAA;QAElD,MAAM,CAAC,QAAQ,EAAE,GAAG,iBAAiB,CAAC,GAAG,aAAa,CAAC,QAAQ,CAAA;QAC/D,OAAO,CACL,6DACG,KAAK,aAAL,KAAK,uBAAL,KAAK,CAAE,GAAG,CAAC,CAAC,OAAO,EAAE,CAAC,EAAE,EAAE,CAAC,CAC1B,uBAAC,WAAI,oBAAa,oBAAoB,cACnC,IAAA,qCAAqB,EAAC,OAAO,CAAC,KADtB,CAAC,CAEL,CACR,CAAC,EACF,wBAAC,WAAI,oBAAK,aAAa,eACpB,IAAA,qCAAqB,EAAC,QAAQ,CAAC,EAC/B,iBAAiB,KACb,IACN,CACJ,CAAA;KACF;IAED,OAAO,uBAAC,WAAI,oBAAK,KAAK,cAAG,KAAK,CAAC,QAAQ,IAAQ,CAAA;AACjD,CAAC,CAAA;AAvRY,QAAA,gBAAgB,oBAuR5B"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export declare function convertToMarkdownMeta(text: string): string;
|
|
@@ -0,0 +1,42 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.convertToMarkdownMeta = void 0;
|
|
4
|
+
const REGEX_MARKDOWN_BOLD = /(\*\*|__)(.*?)\1/g;
|
|
5
|
+
const REGEX_MARKDOWN_ITALIC = /(\*|_)(.*?)\1/g;
|
|
6
|
+
const REGEX_MARKDOWN_LINK = /\[([^\]]+)\]\(([^)]+)\)/g;
|
|
7
|
+
const NORMALIZED_BOLD = '&%BOLD%&';
|
|
8
|
+
const REGEX_NORMALIZED_BOLD = new RegExp(`${NORMALIZED_BOLD}(.*?)${NORMALIZED_BOLD}`, 'g');
|
|
9
|
+
const NORMALIZED_ITALIC = '&%ITALIC%&';
|
|
10
|
+
const REGEX_NORMALIZED_ITALIC = new RegExp(`${NORMALIZED_ITALIC}(.*?)${NORMALIZED_ITALIC}`, 'g');
|
|
11
|
+
const WHATSAPP_BOLD = '*';
|
|
12
|
+
const WHATSAPP_ITALIC = '_';
|
|
13
|
+
// Convert markdown to WhatsApp and Facebook format
|
|
14
|
+
function convertToMarkdownMeta(text) {
|
|
15
|
+
const textWithBoldAndItalic = replaceBoldAndItalic(text);
|
|
16
|
+
return replaceMarkdownLinks(textWithBoldAndItalic);
|
|
17
|
+
}
|
|
18
|
+
exports.convertToMarkdownMeta = convertToMarkdownMeta;
|
|
19
|
+
function replaceBoldAndItalic(text) {
|
|
20
|
+
const normalizedText = normalizeBoldAndItalic(text);
|
|
21
|
+
const boldAndItalicText = normalizedToMarkdownMeta(normalizedText);
|
|
22
|
+
return boldAndItalicText;
|
|
23
|
+
}
|
|
24
|
+
function normalizeBoldAndItalic(text) {
|
|
25
|
+
// Normalize bold
|
|
26
|
+
text = text.replace(REGEX_MARKDOWN_BOLD, `${NORMALIZED_BOLD}$2${NORMALIZED_BOLD}`);
|
|
27
|
+
// Normalize italic
|
|
28
|
+
text = text.replace(REGEX_MARKDOWN_ITALIC, `${NORMALIZED_ITALIC}$2${NORMALIZED_ITALIC}`);
|
|
29
|
+
return text;
|
|
30
|
+
}
|
|
31
|
+
function normalizedToMarkdownMeta(text) {
|
|
32
|
+
// convert &%BOLD%&text&%BOLD%& to *text*
|
|
33
|
+
text = text.replace(REGEX_NORMALIZED_BOLD, `${WHATSAPP_BOLD}$1${WHATSAPP_BOLD}`);
|
|
34
|
+
// convert &%ITALIC%&text&%ITALIC%& to _text_
|
|
35
|
+
text = text.replace(REGEX_NORMALIZED_ITALIC, `${WHATSAPP_ITALIC}$1${WHATSAPP_ITALIC}`);
|
|
36
|
+
return text;
|
|
37
|
+
}
|
|
38
|
+
function replaceMarkdownLinks(text) {
|
|
39
|
+
// $1 = textUrl, $2 = linkUrl
|
|
40
|
+
return text.replace(REGEX_MARKDOWN_LINK, '$1: $2');
|
|
41
|
+
}
|
|
42
|
+
//# sourceMappingURL=markdown-meta.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"markdown-meta.js","sourceRoot":"","sources":["../../../../../src/components/multichannel/whatsapp/markdown-meta.ts"],"names":[],"mappings":";;;AAAA,MAAM,mBAAmB,GAAG,mBAAmB,CAAA;AAC/C,MAAM,qBAAqB,GAAG,gBAAgB,CAAA;AAC9C,MAAM,mBAAmB,GAAG,0BAA0B,CAAA;AAEtD,MAAM,eAAe,GAAG,UAAU,CAAA;AAClC,MAAM,qBAAqB,GAAG,IAAI,MAAM,CACtC,GAAG,eAAe,QAAQ,eAAe,EAAE,EAC3C,GAAG,CACJ,CAAA;AACD,MAAM,iBAAiB,GAAG,YAAY,CAAA;AACtC,MAAM,uBAAuB,GAAG,IAAI,MAAM,CACxC,GAAG,iBAAiB,QAAQ,iBAAiB,EAAE,EAC/C,GAAG,CACJ,CAAA;AAED,MAAM,aAAa,GAAG,GAAG,CAAA;AACzB,MAAM,eAAe,GAAG,GAAG,CAAA;AAE3B,mDAAmD;AACnD,SAAgB,qBAAqB,CAAC,IAAY;IAChD,MAAM,qBAAqB,GAAG,oBAAoB,CAAC,IAAI,CAAC,CAAA;IAExD,OAAO,oBAAoB,CAAC,qBAAqB,CAAC,CAAA;AACpD,CAAC;AAJD,sDAIC;AAED,SAAS,oBAAoB,CAAC,IAAY;IACxC,MAAM,cAAc,GAAG,sBAAsB,CAAC,IAAI,CAAC,CAAA;IACnD,MAAM,iBAAiB,GAAG,wBAAwB,CAAC,cAAc,CAAC,CAAA;IAElE,OAAO,iBAAiB,CAAA;AAC1B,CAAC;AAED,SAAS,sBAAsB,CAAC,IAAY;IAC1C,iBAAiB;IACjB,IAAI,GAAG,IAAI,CAAC,OAAO,CACjB,mBAAmB,EACnB,GAAG,eAAe,KAAK,eAAe,EAAE,CACzC,CAAA;IACD,mBAAmB;IACnB,IAAI,GAAG,IAAI,CAAC,OAAO,CACjB,qBAAqB,EACrB,GAAG,iBAAiB,KAAK,iBAAiB,EAAE,CAC7C,CAAA;IAED,OAAO,IAAI,CAAA;AACb,CAAC;AAED,SAAS,wBAAwB,CAAC,IAAY;IAC5C,yCAAyC;IACzC,IAAI,GAAG,IAAI,CAAC,OAAO,CACjB,qBAAqB,EACrB,GAAG,aAAa,KAAK,aAAa,EAAE,CACrC,CAAA;IACD,6CAA6C;IAC7C,IAAI,GAAG,IAAI,CAAC,OAAO,CACjB,uBAAuB,EACvB,GAAG,eAAe,KAAK,eAAe,EAAE,CACzC,CAAA;IAED,OAAO,IAAI,CAAA;AACb,CAAC;AAED,SAAS,oBAAoB,CAAC,IAAY;IACxC,6BAA6B;IAC7B,OAAO,IAAI,CAAC,OAAO,CAAC,mBAAmB,EAAE,QAAQ,CAAC,CAAA;AACpD,CAAC"}
|
|
@@ -7,7 +7,7 @@ const util_1 = require("../util");
|
|
|
7
7
|
const react_1 = require("../util/react");
|
|
8
8
|
const message_1 = require("./message");
|
|
9
9
|
const multichannel_utils_1 = require("./multichannel/multichannel-utils");
|
|
10
|
-
const
|
|
10
|
+
const markdown_meta_1 = require("./multichannel/whatsapp/markdown-meta");
|
|
11
11
|
// TODO: Add validation in component
|
|
12
12
|
exports.WHATSAPP_MAX_BUTTON_LIST_CHARS = 24;
|
|
13
13
|
exports.WHATSAPP_MAX_BUTTON_LIST_DESCRIPTION_CHARS = 72;
|
|
@@ -43,7 +43,7 @@ const WhatsappButtonList = (props) => {
|
|
|
43
43
|
const renderNode = () => {
|
|
44
44
|
return (
|
|
45
45
|
// @ts-ignore Property 'message' does not exist on type 'JSX.IntrinsicElements'.
|
|
46
|
-
(0, jsx_runtime_1.jsx)("message", Object.assign({}, props, { body: (0,
|
|
46
|
+
(0, jsx_runtime_1.jsx)("message", Object.assign({}, props, { body: (0, markdown_meta_1.convertToMarkdownMeta)(props.body), button: (0, util_1.truncateText)(props.button, multichannel_utils_1.WHATSAPP_MAX_BUTTON_CHARS), sections: JSON.stringify(trucateSectionsContents(props.sections)), type: core_1.INPUT.WHATSAPP_BUTTON_LIST })));
|
|
47
47
|
};
|
|
48
48
|
return (0, react_1.renderComponent)({ renderBrowser, renderNode });
|
|
49
49
|
};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"whatsapp-button-list.js","sourceRoot":"","sources":["../../../src/components/whatsapp-button-list.tsx"],"names":[],"mappings":";;;;AAAA,wCAAqC;AAGrC,kCAAsC;AACtC,yCAA+C;AAC/C,uCAAmC;AACnC,0EAA6E;AAC7E
|
|
1
|
+
{"version":3,"file":"whatsapp-button-list.js","sourceRoot":"","sources":["../../../src/components/whatsapp-button-list.tsx"],"names":[],"mappings":";;;;AAAA,wCAAqC;AAGrC,kCAAsC;AACtC,yCAA+C;AAC/C,uCAAmC;AACnC,0EAA6E;AAC7E,yEAA6E;AAE7E,oCAAoC;AAEvB,QAAA,8BAA8B,GAAG,EAAE,CAAA;AACnC,QAAA,0CAA0C,GAAG,EAAE,CAAA;AAC/C,QAAA,iCAAiC,GAAG,GAAG,CAAA;AAoBpD,MAAM,SAAS,GAAG,wBAAwB,CAAC,EAAE;IAC3C,qGAAqG;IACrG,OAAO,EAAE,CAAA;AACX,CAAC,CAAA;AAEM,MAAM,kBAAkB,GAAG,CAAC,KAA8B,EAAE,EAAE;IACnE,MAAM,uBAAuB,GAAG,CAC9B,QAA0C,EACR,EAAE;QACpC,MAAM,kBAAkB,GAAG,CACzB,GAA+B,EACH,EAAE;YAC9B,MAAM,KAAK,GAAG,IAAA,mBAAY,EAAC,GAAG,CAAC,KAAK,EAAE,sCAA8B,CAAC,CAAA;YACrE,MAAM,WAAW,GAAG,GAAG,CAAC,WAAW;gBACjC,CAAC,CAAC,IAAA,mBAAY,EACV,GAAG,CAAC,WAAW,EACf,kDAA0C,CAC3C;gBACH,CAAC,CAAC,SAAS,CAAA;YACb,IAAI,GAAG,CAAC,EAAE,CAAC,MAAM,GAAG,yCAAiC,EAAE;gBACrD,OAAO,CAAC,KAAK,CACX,cAAc,GAAG,CAAC,EAAE,mCAAmC,yCAAiC,aAAa,CACtG,CAAA;aACF;YACD,uCAAY,GAAG,KAAE,KAAK,EAAE,WAAW,IAAE;QACvC,CAAC,CAAA;QAED,OAAO,QAAQ,CAAC,GAAG,CAAC,OAAO,CAAC,EAAE,CAAC,CAAC;YAC9B,KAAK,EAAE,OAAO,CAAC,KAAK;gBAClB,CAAC,CAAC,IAAA,mBAAY,EAAC,OAAO,CAAC,KAAK,EAAE,sCAA8B,CAAC;gBAC7D,CAAC,CAAC,SAAS;YACb,IAAI,EAAE,OAAO,CAAC,IAAI,CAAC,GAAG,CAAC,kBAAkB,CAAC;SAC3C,CAAC,CAAC,CAAA;IACL,CAAC,CAAA;IAED,MAAM,aAAa,GAAG,GAAG,EAAE;QACzB,qCAAqC;QACrC,MAAM,OAAO,GAAG,GAAG,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC,EAAE,CAAA;QAC1C,OAAO,CACL,uBAAC,iBAAO,kBACN,IAAI,EAAE,SAAS,CAAC,OAAO,CAAC,IACpB,KAAK,IACT,IAAI,EAAE,YAAK,CAAC,oBAAoB,gBAE/B,OAAO,IACA,CACX,CAAA;IACH,CAAC,CAAA;IAED,MAAM,UAAU,GAAG,GAAG,EAAE;QACtB,OAAO;QACL,gFAAgF;QAChF,oDACM,KAAK,IACT,IAAI,EAAE,IAAA,qCAAqB,EAAC,KAAK,CAAC,IAAI,CAAC,EACvC,MAAM,EAAE,IAAA,mBAAY,EAAC,KAAK,CAAC,MAAM,EAAE,8CAAyB,CAAC,EAC7D,QAAQ,EAAE,IAAI,CAAC,SAAS,CAAC,uBAAuB,CAAC,KAAK,CAAC,QAAQ,CAAC,CAAC,EACjE,IAAI,EAAE,YAAK,CAAC,oBAAoB,IAChC,CACH,CAAA;IACH,CAAC,CAAA;IAED,OAAO,IAAA,uBAAe,EAAC,EAAE,aAAa,EAAE,UAAU,EAAE,CAAC,CAAA;AACvD,CAAC,CAAA;AA1DY,QAAA,kBAAkB,sBA0D9B"}
|
|
@@ -8,7 +8,7 @@ const react_1 = require("../util/react");
|
|
|
8
8
|
const webviews_1 = require("../util/webviews");
|
|
9
9
|
const message_1 = require("./message");
|
|
10
10
|
const multichannel_utils_1 = require("./multichannel/multichannel-utils");
|
|
11
|
-
const
|
|
11
|
+
const markdown_meta_1 = require("./multichannel/whatsapp/markdown-meta");
|
|
12
12
|
const serialize = _whatsappCTAUrlButtonProps => {
|
|
13
13
|
// TODO: Implement to have data persistance in localStorage, not needed for this WhatsApp development
|
|
14
14
|
return {};
|
|
@@ -22,7 +22,7 @@ const WhatsappCTAUrlButton = (props) => {
|
|
|
22
22
|
const renderNode = () => {
|
|
23
23
|
const validatedProps = Object.assign(Object.assign({}, props), { header: props.header
|
|
24
24
|
? (0, util_1.truncateText)(props.header, multichannel_utils_1.WHATSAPP_MAX_HEADER_CHARS)
|
|
25
|
-
: undefined, body: (0, util_1.truncateText)((0,
|
|
25
|
+
: undefined, body: (0, util_1.truncateText)((0, markdown_meta_1.convertToMarkdownMeta)(props.body), multichannel_utils_1.WHATSAPP_MAX_BODY_CHARS), footer: props.footer
|
|
26
26
|
? (0, util_1.truncateText)(props.footer, multichannel_utils_1.WHATSAPP_MAX_FOOTER_CHARS)
|
|
27
27
|
: undefined, displayText: (0, util_1.truncateText)(props.displayText, multichannel_utils_1.WHATSAPP_MAX_BUTTON_CHARS), url: 'webview' in props
|
|
28
28
|
? (0, webviews_1.generateWebviewUrlWithParams)(props.webview, props.params)
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"whatsapp-cta-url-button.js","sourceRoot":"","sources":["../../../src/components/whatsapp-cta-url-button.tsx"],"names":[],"mappings":";;;;AAAA,wCAAqC;AAGrC,kCAAsC;AACtC,yCAA+C;AAC/C,+CAA+D;AAC/D,uCAAmC;AACnC,0EAK0C;AAC1C
|
|
1
|
+
{"version":3,"file":"whatsapp-cta-url-button.js","sourceRoot":"","sources":["../../../src/components/whatsapp-cta-url-button.tsx"],"names":[],"mappings":";;;;AAAA,wCAAqC;AAGrC,kCAAsC;AACtC,yCAA+C;AAC/C,+CAA+D;AAC/D,uCAAmC;AACnC,0EAK0C;AAC1C,yEAA6E;AAwB7E,MAAM,SAAS,GAAG,0BAA0B,CAAC,EAAE;IAC7C,qGAAqG;IACrG,OAAO,EAAE,CAAA;AACX,CAAC,CAAA;AAEM,MAAM,oBAAoB,GAAG,CAAC,KAAgC,EAAE,EAAE;IACvE,MAAM,aAAa,GAAG,GAAG,EAAE;QACzB,qCAAqC;QACrC,MAAM,OAAO,GAAG,GAAG,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC,EAAE,CAAA;QAC1C,OAAO,CACL,uBAAC,iBAAO,kBACN,IAAI,EAAE,SAAS,CAAC,OAAO,CAAC,IACpB,KAAK,IACT,IAAI,EAAE,YAAK,CAAC,uBAAuB,gBAElC,OAAO,IACA,CACX,CAAA;IACH,CAAC,CAAA;IAED,MAAM,UAAU,GAAG,GAAG,EAAE;QACtB,MAAM,cAAc,mCACf,KAAK,KACR,MAAM,EAAE,KAAK,CAAC,MAAM;gBAClB,CAAC,CAAC,IAAA,mBAAY,EAAC,KAAK,CAAC,MAAM,EAAE,8CAAyB,CAAC;gBACvD,CAAC,CAAC,SAAS,EACb,IAAI,EAAE,IAAA,mBAAY,EAChB,IAAA,qCAAqB,EAAC,KAAK,CAAC,IAAI,CAAC,EACjC,4CAAuB,CACxB,EACD,MAAM,EAAE,KAAK,CAAC,MAAM;gBAClB,CAAC,CAAC,IAAA,mBAAY,EAAC,KAAK,CAAC,MAAM,EAAE,8CAAyB,CAAC;gBACvD,CAAC,CAAC,SAAS,EACb,WAAW,EAAE,IAAA,mBAAY,EAAC,KAAK,CAAC,WAAW,EAAE,8CAAyB,CAAC,EACvE,GAAG,EACD,SAAS,IAAI,KAAK;gBAChB,CAAC,CAAC,IAAA,uCAA4B,EAAC,KAAK,CAAC,OAAO,EAAE,KAAK,CAAC,MAAM,CAAC;gBAC3D,CAAC,CAAC,KAAK,CAAC,GAAG,GAChB,CAAA;QACD,OAAO;QACL,gFAAgF;QAChF,oDAAa,cAAc,IAAE,IAAI,EAAE,YAAK,CAAC,uBAAuB,IAAI,CACrE,CAAA;IACH,CAAC,CAAA;IAED,OAAO,IAAA,uBAAe,EAAC,EAAE,aAAa,EAAE,UAAU,EAAE,CAAC,CAAA;AACvD,CAAC,CAAA;AAzCY,QAAA,oBAAoB,wBAyChC"}
|
package/lib/cjs/util/webchat.js
CHANGED
|
@@ -35,7 +35,7 @@ const InputPanel = ({ persistentMenu, enableEmojiPicker, enableAttachments, hand
|
|
|
35
35
|
});
|
|
36
36
|
const sendChatEvent = (chatEvent) => tslib_1.__awaiter(void 0, void 0, void 0, function* () {
|
|
37
37
|
const chatEventInput = {
|
|
38
|
-
id: (0, uuid_1.
|
|
38
|
+
id: (0, uuid_1.v7)(),
|
|
39
39
|
type: core_1.INPUT.CHAT_EVENT,
|
|
40
40
|
data: chatEvent,
|
|
41
41
|
};
|
|
@@ -332,7 +332,7 @@ exports.Webchat = (0, react_1.forwardRef)((props, ref) => {
|
|
|
332
332
|
if ((0, message_utils_1.isText)(input) && checkBlockInput(input))
|
|
333
333
|
return;
|
|
334
334
|
if (!input.id)
|
|
335
|
-
input.id = (0, uuid_1.
|
|
335
|
+
input.id = (0, uuid_1.v7)();
|
|
336
336
|
const messageComponent = messageComponentFromInput(input);
|
|
337
337
|
if (messageComponent)
|
|
338
338
|
addMessageComponent(messageComponent);
|
|
@@ -82,20 +82,6 @@ export interface BlobProps {
|
|
|
82
82
|
blobWidth?: string;
|
|
83
83
|
imageStyle?: any;
|
|
84
84
|
}
|
|
85
|
-
export interface ScrollbarProps {
|
|
86
|
-
autoHide?: boolean;
|
|
87
|
-
thumb?: {
|
|
88
|
-
bgcolor?: string;
|
|
89
|
-
border?: string;
|
|
90
|
-
color?: string;
|
|
91
|
-
opacity?: string;
|
|
92
|
-
};
|
|
93
|
-
track?: {
|
|
94
|
-
bgcolor?: string;
|
|
95
|
-
border?: string;
|
|
96
|
-
color?: string;
|
|
97
|
-
};
|
|
98
|
-
}
|
|
99
85
|
export interface ThemeProps extends StyleProp {
|
|
100
86
|
mobileBreakpoint?: number;
|
|
101
87
|
mobileStyle?: any;
|
|
@@ -151,7 +137,6 @@ export interface ThemeProps extends StyleProp {
|
|
|
151
137
|
};
|
|
152
138
|
scrollButton?: EnableProp & CustomProp;
|
|
153
139
|
markdownStyle?: string;
|
|
154
|
-
scrollbar?: ScrollbarProps & EnableProp;
|
|
155
140
|
userInput?: {
|
|
156
141
|
attachments?: EnableProp & CustomProp;
|
|
157
142
|
blockInputs?: BlockInputOption[];
|
|
@@ -2,7 +2,7 @@ import { __rest } from "tslib";
|
|
|
2
2
|
import { Fragment as _Fragment, jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
|
|
3
3
|
import { INPUT, isBrowser } from '@botonic/core';
|
|
4
4
|
import React, { useContext, useEffect, useState } from 'react';
|
|
5
|
-
import {
|
|
5
|
+
import { v7 as uuidv7 } from 'uuid';
|
|
6
6
|
import { COLORS, WEBCHAT } from '../../constants';
|
|
7
7
|
import { RequestContext, WebchatContext } from '../../contexts';
|
|
8
8
|
import { SENDERS } from '../../index-types';
|
|
@@ -25,7 +25,7 @@ export const Message = props => {
|
|
|
25
25
|
const markdown = props.markdown;
|
|
26
26
|
const { webchatState, addMessage, updateReplies, getThemeProperty } = useContext(WebchatContext);
|
|
27
27
|
const [state, setState] = useState({
|
|
28
|
-
id: props.id ||
|
|
28
|
+
id: props.id || uuidv7(),
|
|
29
29
|
});
|
|
30
30
|
const [disabled, setDisabled] = useState(false);
|
|
31
31
|
children = ButtonsDisabler.updateChildrenButtons(children, {
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import { __awaiter } from "tslib";
|
|
2
2
|
import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
|
|
3
3
|
import { useContext, useEffect, useState } from 'react';
|
|
4
|
-
import {
|
|
4
|
+
import { v7 as uuidv7 } from 'uuid';
|
|
5
5
|
import ThumbsDown from '../../assets/thumbs-down.svg';
|
|
6
6
|
import ThumbsUp from '../../assets/thumbs-up.svg';
|
|
7
7
|
import { WebchatContext } from '../../contexts';
|
|
@@ -43,7 +43,7 @@ export const MessageFeedback = ({ botInteractionId, inferenceId, messageId, }) =
|
|
|
43
43
|
knowledgebaseInferenceId: inferenceId,
|
|
44
44
|
feedbackBotInteractionId: botInteractionId,
|
|
45
45
|
feedbackTargetId: messageId,
|
|
46
|
-
feedbackGroupId:
|
|
46
|
+
feedbackGroupId: uuidv7(),
|
|
47
47
|
possibleOptions: [FeedbackOption.ThumbsDown, FeedbackOption.ThumbsUp],
|
|
48
48
|
possibleValues: [0, 1],
|
|
49
49
|
option: isUseful ? FeedbackOption.ThumbsUp : FeedbackOption.ThumbsDown,
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"message-feedback.js","sourceRoot":"","sources":["../../../../src/components/message/message-feedback.tsx"],"names":[],"mappings":";;AAAA,OAAc,EAAE,UAAU,EAAE,SAAS,EAAE,QAAQ,EAAE,MAAM,OAAO,CAAA;AAC9D,OAAO,EAAE,EAAE,IAAI,
|
|
1
|
+
{"version":3,"file":"message-feedback.js","sourceRoot":"","sources":["../../../../src/components/message/message-feedback.tsx"],"names":[],"mappings":";;AAAA,OAAc,EAAE,UAAU,EAAE,SAAS,EAAE,QAAQ,EAAE,MAAM,OAAO,CAAA;AAC9D,OAAO,EAAE,EAAE,IAAI,MAAM,EAAE,MAAM,MAAM,CAAA;AAEnC,OAAO,UAAU,MAAM,8BAA8B,CAAA;AACrD,OAAO,QAAQ,MAAM,4BAA4B,CAAA;AACjD,OAAO,EAAE,cAAc,EAAE,MAAM,gBAAgB,CAAA;AAE/C,OAAO,EAAE,YAAY,EAAE,MAAM,YAAY,CAAA;AACzC,OAAO,EAAE,WAAW,EAAE,cAAc,EAAE,MAAM,wBAAwB,CAAA;AACpE,OAAO,EAAE,cAAc,EAAE,wBAAwB,EAAE,MAAM,UAAU,CAAA;AAanE,MAAM,CAAC,MAAM,eAAe,GAAG,CAAC,EAC9B,gBAAgB,EAChB,WAAW,EACX,SAAS,GACG,EAAE,EAAE;IAChB,MAAM,EAAE,YAAY,EAAE,aAAa,EAAE,UAAU,EAAE,GAAG,UAAU,CAAC,cAAc,CAAC,CAAA;IAE9E,MAAM,CAAC,SAAS,EAAE,YAAY,CAAC,GAAG,QAAQ,CAAC,EAAE,CAAC,CAAA;IAC9C,MAAM,CAAC,QAAQ,EAAE,WAAW,CAAC,GAAG,QAAQ,CAAe;QACrD,QAAQ,EAAE,KAAK;QACf,QAAQ,EAAE,KAAK;KAChB,CAAC,CAAA;IAEF,MAAM,qBAAqB,GAAG,CAAC,eAAwB,EAAE,EAAE;QACzD,MAAM,OAAO,GAAG,YAAY,CAAC,YAAY,CAAC,IAAI,CAC5C,OAAO,CAAC,EAAE,CAAC,OAAO,CAAC,EAAE,KAAK,SAAS,CACpC,CAAA;QACD,MAAM,UAAU,mCACX,OAAO,KACV,eAAe,GAChB,CAAA;QACD,aAAa,CAAC,UAAU,CAAC,CAAA;IAC3B,CAAC,CAAA;IAED,SAAS,CAAC,GAAG,EAAE;QACb,qBAAqB,CAAC,IAAI,CAAC,CAAA;IAC7B,CAAC,EAAE,EAAE,CAAC,CAAA;IAEN,SAAS,CAAC,GAAG,EAAE;QACb,IAAI,QAAQ,CAAC,QAAQ,IAAI,QAAQ,CAAC,QAAQ,EAAE;YAC1C,YAAY,CAAC,SAAS,CAAC,CAAA;YACvB,qBAAqB,CAAC,KAAK,CAAC,CAAA;SAC7B;IACH,CAAC,EAAE,CAAC,QAAQ,CAAC,CAAC,CAAA;IAEd,MAAM,WAAW,GAAG,CAAO,QAAiB,EAAE,EAAE;QAC9C,IAAI,CAAC,UAAU,EAAE;YACf,OAAM;SACP;QAED,IAAI,QAAQ,EAAE;YACZ,WAAW,CAAC,EAAE,QAAQ,EAAE,KAAK,EAAE,QAAQ,EAAE,IAAI,EAAE,CAAC,CAAA;SACjD;aAAM;YACL,WAAW,CAAC,EAAE,QAAQ,EAAE,IAAI,EAAE,QAAQ,EAAE,KAAK,EAAE,CAAC,CAAA;SACjD;QAED,MAAM,IAAI,GAAG;YACX,wBAAwB,EAAE,WAAW;YACrC,wBAAwB,EAAE,gBAAgB;YAC1C,gBAAgB,EAAE,SAAS;YAC3B,eAAe,EAAE,MAAM,EAAE;YACzB,eAAe,EAAE,CAAC,cAAc,CAAC,UAAU,EAAE,cAAc,CAAC,QAAQ,CAAC;YACrE,cAAc,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC;YACtB,MAAM,EAAE,QAAQ,CAAC,CAAC,CAAC,cAAc,CAAC,QAAQ,CAAC,CAAC,CAAC,cAAc,CAAC,UAAU;YACtE,KAAK,EAAE,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;SACxB,CAAA;QAED,MAAM,OAAO,GAAG;YACd,OAAO,oBACF,YAAY,CAAC,OAAO,CACxB;SAC0B,CAAA;QAE7B,MAAM,UAAU,CAAC,OAAO,EAAE,WAAW,CAAC,qBAAqB,EAAE,IAAI,CAAC,CAAA;IACpE,CAAC,CAAA,CAAA;IAED,OAAO,CACL,MAAC,wBAAwB,eACvB,KAAC,cAAc,kBACb,SAAS,EAAE,SAAS,EACpB,QAAQ,EAAE,QAAQ,CAAC,QAAQ,EAC3B,OAAO,EAAE,GAAG,EAAE,CAAC,WAAW,CAAC,IAAI,CAAC,gBAEhC,cAAK,GAAG,EAAE,YAAY,CAAC,QAAQ,CAAC,GAAI,IACrB,EACjB,KAAC,cAAc,kBACb,SAAS,EAAE,SAAS,EACpB,QAAQ,EAAE,QAAQ,CAAC,QAAQ,EAC3B,OAAO,EAAE,GAAG,EAAE,CAAC,WAAW,CAAC,KAAK,CAAC,gBAEjC,cAAK,GAAG,EAAE,YAAY,CAAC,UAAU,CAAC,GAAI,IACvB,IACQ,CAC5B,CAAA;AACH,CAAC,CAAA"}
|
|
@@ -8,7 +8,7 @@ import { MultichannelFacebook } from './facebook/facebook';
|
|
|
8
8
|
import { MultichannelButton } from './multichannel-button';
|
|
9
9
|
import { MultichannelContext } from './multichannel-context';
|
|
10
10
|
import { buttonTypes, DEFAULT_WHATSAPP_MAX_BUTTON_SEPARATOR, elementHasPostback, elementHasUrl, elementHasWebview, getButtonType, getMultichannelButtons, getMultichannelReplies, MENU_BUTTON_WHATSAPP_BUTTON_LIST, MULTICHANNEL_WHATSAPP_PROPS, WHATSAPP_LIST_MAX_BUTTONS, WHATSAPP_MAX_BUTTONS, } from './multichannel-utils';
|
|
11
|
-
import {
|
|
11
|
+
import { convertToMarkdownMeta } from './whatsapp/markdown-meta';
|
|
12
12
|
export const MultichannelText = props => {
|
|
13
13
|
var _a;
|
|
14
14
|
const requestContext = useContext(RequestContext);
|
|
@@ -79,7 +79,7 @@ export const MultichannelText = props => {
|
|
|
79
79
|
const texts = getText(props.children);
|
|
80
80
|
const { postbackButtons, urlButtons, webviewButtons } = getWhatsappButtons();
|
|
81
81
|
const textElements = texts.map(text => {
|
|
82
|
-
const textWithMarkdown =
|
|
82
|
+
const textWithMarkdown = convertToMarkdownMeta(text);
|
|
83
83
|
return (props.newline || '') + textWithMarkdown;
|
|
84
84
|
});
|
|
85
85
|
const webviewButtonElements = webviewButtons.map(regenerateMultichannelButtons(false));
|
|
@@ -151,8 +151,8 @@ export const MultichannelText = props => {
|
|
|
151
151
|
const text = getText(props.children);
|
|
152
152
|
const multichannelFacebook = new MultichannelFacebook();
|
|
153
153
|
const { texts, propsLastText, propsWithoutChildren } = multichannelFacebook.convertText(props, text[0]);
|
|
154
|
-
|
|
155
|
-
|
|
154
|
+
const [lastText, ...buttonsAndReplies] = propsLastText.children;
|
|
155
|
+
return (_jsxs(_Fragment, { children: [texts === null || texts === void 0 ? void 0 : texts.map((message, i) => (_jsx(Text, Object.assign({}, propsWithoutChildren, { children: convertToMarkdownMeta(message) }), i))), _jsxs(Text, Object.assign({}, propsLastText, { children: [convertToMarkdownMeta(lastText), buttonsAndReplies] }))] }));
|
|
156
156
|
}
|
|
157
157
|
return _jsx(Text, Object.assign({}, props, { children: props.children }));
|
|
158
158
|
};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"multichannel-text.js","sourceRoot":"","sources":["../../../../src/components/multichannel/multichannel-text.jsx"],"names":[],"mappings":";AAAA,OAAO,EAAE,KAAK,EAAE,UAAU,EAAE,UAAU,EAAE,MAAM,eAAe,CAAA;AAC7D,OAAO,KAAK,EAAE,EAAE,UAAU,EAAE,MAAM,OAAO,CAAA;AAEzC,OAAO,EAAE,cAAc,EAAE,MAAM,gBAAgB,CAAA;AAC/C,OAAO,EAAE,kBAAkB,EAAE,oBAAoB,EAAE,MAAM,IAAI,CAAA;AAC7D,OAAO,EAAE,IAAI,EAAE,MAAM,SAAS,CAAA;AAC9B,OAAO,EAAE,oBAAoB,EAAE,MAAM,qBAAqB,CAAA;AAC1D,OAAO,EAAE,kBAAkB,EAAE,MAAM,uBAAuB,CAAA;AAC1D,OAAO,EAAE,mBAAmB,EAAE,MAAM,wBAAwB,CAAA;AAC5D,OAAO,EACL,WAAW,EACX,qCAAqC,EACrC,kBAAkB,EAClB,aAAa,EACb,iBAAiB,EACjB,aAAa,EACb,sBAAsB,EACtB,sBAAsB,EACtB,gCAAgC,EAChC,2BAA2B,EAC3B,yBAAyB,EACzB,oBAAoB,GACrB,MAAM,sBAAsB,CAAA;AAC7B,OAAO,EAAE,
|
|
1
|
+
{"version":3,"file":"multichannel-text.js","sourceRoot":"","sources":["../../../../src/components/multichannel/multichannel-text.jsx"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export declare function convertToMarkdownMeta(text: string): string;
|
|
@@ -0,0 +1,38 @@
|
|
|
1
|
+
const REGEX_MARKDOWN_BOLD = /(\*\*|__)(.*?)\1/g;
|
|
2
|
+
const REGEX_MARKDOWN_ITALIC = /(\*|_)(.*?)\1/g;
|
|
3
|
+
const REGEX_MARKDOWN_LINK = /\[([^\]]+)\]\(([^)]+)\)/g;
|
|
4
|
+
const NORMALIZED_BOLD = '&%BOLD%&';
|
|
5
|
+
const REGEX_NORMALIZED_BOLD = new RegExp(`${NORMALIZED_BOLD}(.*?)${NORMALIZED_BOLD}`, 'g');
|
|
6
|
+
const NORMALIZED_ITALIC = '&%ITALIC%&';
|
|
7
|
+
const REGEX_NORMALIZED_ITALIC = new RegExp(`${NORMALIZED_ITALIC}(.*?)${NORMALIZED_ITALIC}`, 'g');
|
|
8
|
+
const WHATSAPP_BOLD = '*';
|
|
9
|
+
const WHATSAPP_ITALIC = '_';
|
|
10
|
+
// Convert markdown to WhatsApp and Facebook format
|
|
11
|
+
export function convertToMarkdownMeta(text) {
|
|
12
|
+
const textWithBoldAndItalic = replaceBoldAndItalic(text);
|
|
13
|
+
return replaceMarkdownLinks(textWithBoldAndItalic);
|
|
14
|
+
}
|
|
15
|
+
function replaceBoldAndItalic(text) {
|
|
16
|
+
const normalizedText = normalizeBoldAndItalic(text);
|
|
17
|
+
const boldAndItalicText = normalizedToMarkdownMeta(normalizedText);
|
|
18
|
+
return boldAndItalicText;
|
|
19
|
+
}
|
|
20
|
+
function normalizeBoldAndItalic(text) {
|
|
21
|
+
// Normalize bold
|
|
22
|
+
text = text.replace(REGEX_MARKDOWN_BOLD, `${NORMALIZED_BOLD}$2${NORMALIZED_BOLD}`);
|
|
23
|
+
// Normalize italic
|
|
24
|
+
text = text.replace(REGEX_MARKDOWN_ITALIC, `${NORMALIZED_ITALIC}$2${NORMALIZED_ITALIC}`);
|
|
25
|
+
return text;
|
|
26
|
+
}
|
|
27
|
+
function normalizedToMarkdownMeta(text) {
|
|
28
|
+
// convert &%BOLD%&text&%BOLD%& to *text*
|
|
29
|
+
text = text.replace(REGEX_NORMALIZED_BOLD, `${WHATSAPP_BOLD}$1${WHATSAPP_BOLD}`);
|
|
30
|
+
// convert &%ITALIC%&text&%ITALIC%& to _text_
|
|
31
|
+
text = text.replace(REGEX_NORMALIZED_ITALIC, `${WHATSAPP_ITALIC}$1${WHATSAPP_ITALIC}`);
|
|
32
|
+
return text;
|
|
33
|
+
}
|
|
34
|
+
function replaceMarkdownLinks(text) {
|
|
35
|
+
// $1 = textUrl, $2 = linkUrl
|
|
36
|
+
return text.replace(REGEX_MARKDOWN_LINK, '$1: $2');
|
|
37
|
+
}
|
|
38
|
+
//# sourceMappingURL=markdown-meta.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"markdown-meta.js","sourceRoot":"","sources":["../../../../../src/components/multichannel/whatsapp/markdown-meta.ts"],"names":[],"mappings":"AAAA,MAAM,mBAAmB,GAAG,mBAAmB,CAAA;AAC/C,MAAM,qBAAqB,GAAG,gBAAgB,CAAA;AAC9C,MAAM,mBAAmB,GAAG,0BAA0B,CAAA;AAEtD,MAAM,eAAe,GAAG,UAAU,CAAA;AAClC,MAAM,qBAAqB,GAAG,IAAI,MAAM,CACtC,GAAG,eAAe,QAAQ,eAAe,EAAE,EAC3C,GAAG,CACJ,CAAA;AACD,MAAM,iBAAiB,GAAG,YAAY,CAAA;AACtC,MAAM,uBAAuB,GAAG,IAAI,MAAM,CACxC,GAAG,iBAAiB,QAAQ,iBAAiB,EAAE,EAC/C,GAAG,CACJ,CAAA;AAED,MAAM,aAAa,GAAG,GAAG,CAAA;AACzB,MAAM,eAAe,GAAG,GAAG,CAAA;AAE3B,mDAAmD;AACnD,MAAM,UAAU,qBAAqB,CAAC,IAAY;IAChD,MAAM,qBAAqB,GAAG,oBAAoB,CAAC,IAAI,CAAC,CAAA;IAExD,OAAO,oBAAoB,CAAC,qBAAqB,CAAC,CAAA;AACpD,CAAC;AAED,SAAS,oBAAoB,CAAC,IAAY;IACxC,MAAM,cAAc,GAAG,sBAAsB,CAAC,IAAI,CAAC,CAAA;IACnD,MAAM,iBAAiB,GAAG,wBAAwB,CAAC,cAAc,CAAC,CAAA;IAElE,OAAO,iBAAiB,CAAA;AAC1B,CAAC;AAED,SAAS,sBAAsB,CAAC,IAAY;IAC1C,iBAAiB;IACjB,IAAI,GAAG,IAAI,CAAC,OAAO,CACjB,mBAAmB,EACnB,GAAG,eAAe,KAAK,eAAe,EAAE,CACzC,CAAA;IACD,mBAAmB;IACnB,IAAI,GAAG,IAAI,CAAC,OAAO,CACjB,qBAAqB,EACrB,GAAG,iBAAiB,KAAK,iBAAiB,EAAE,CAC7C,CAAA;IAED,OAAO,IAAI,CAAA;AACb,CAAC;AAED,SAAS,wBAAwB,CAAC,IAAY;IAC5C,yCAAyC;IACzC,IAAI,GAAG,IAAI,CAAC,OAAO,CACjB,qBAAqB,EACrB,GAAG,aAAa,KAAK,aAAa,EAAE,CACrC,CAAA;IACD,6CAA6C;IAC7C,IAAI,GAAG,IAAI,CAAC,OAAO,CACjB,uBAAuB,EACvB,GAAG,eAAe,KAAK,eAAe,EAAE,CACzC,CAAA;IAED,OAAO,IAAI,CAAA;AACb,CAAC;AAED,SAAS,oBAAoB,CAAC,IAAY;IACxC,6BAA6B;IAC7B,OAAO,IAAI,CAAC,OAAO,CAAC,mBAAmB,EAAE,QAAQ,CAAC,CAAA;AACpD,CAAC"}
|
|
@@ -4,7 +4,7 @@ import { truncateText } from '../util';
|
|
|
4
4
|
import { renderComponent } from '../util/react';
|
|
5
5
|
import { Message } from './message';
|
|
6
6
|
import { WHATSAPP_MAX_BUTTON_CHARS } from './multichannel/multichannel-utils';
|
|
7
|
-
import {
|
|
7
|
+
import { convertToMarkdownMeta } from './multichannel/whatsapp/markdown-meta';
|
|
8
8
|
// TODO: Add validation in component
|
|
9
9
|
export const WHATSAPP_MAX_BUTTON_LIST_CHARS = 24;
|
|
10
10
|
export const WHATSAPP_MAX_BUTTON_LIST_DESCRIPTION_CHARS = 72;
|
|
@@ -40,7 +40,7 @@ export const WhatsappButtonList = (props) => {
|
|
|
40
40
|
const renderNode = () => {
|
|
41
41
|
return (
|
|
42
42
|
// @ts-ignore Property 'message' does not exist on type 'JSX.IntrinsicElements'.
|
|
43
|
-
_jsx("message", Object.assign({}, props, { body:
|
|
43
|
+
_jsx("message", Object.assign({}, props, { body: convertToMarkdownMeta(props.body), button: truncateText(props.button, WHATSAPP_MAX_BUTTON_CHARS), sections: JSON.stringify(trucateSectionsContents(props.sections)), type: INPUT.WHATSAPP_BUTTON_LIST })));
|
|
44
44
|
};
|
|
45
45
|
return renderComponent({ renderBrowser, renderNode });
|
|
46
46
|
};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"whatsapp-button-list.js","sourceRoot":"","sources":["../../../src/components/whatsapp-button-list.tsx"],"names":[],"mappings":";AAAA,OAAO,EAAE,KAAK,EAAE,MAAM,eAAe,CAAA;AAGrC,OAAO,EAAE,YAAY,EAAE,MAAM,SAAS,CAAA;AACtC,OAAO,EAAE,eAAe,EAAE,MAAM,eAAe,CAAA;AAC/C,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAA;AACnC,OAAO,EAAE,yBAAyB,EAAE,MAAM,mCAAmC,CAAA;AAC7E,OAAO,EAAE,
|
|
1
|
+
{"version":3,"file":"whatsapp-button-list.js","sourceRoot":"","sources":["../../../src/components/whatsapp-button-list.tsx"],"names":[],"mappings":";AAAA,OAAO,EAAE,KAAK,EAAE,MAAM,eAAe,CAAA;AAGrC,OAAO,EAAE,YAAY,EAAE,MAAM,SAAS,CAAA;AACtC,OAAO,EAAE,eAAe,EAAE,MAAM,eAAe,CAAA;AAC/C,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAA;AACnC,OAAO,EAAE,yBAAyB,EAAE,MAAM,mCAAmC,CAAA;AAC7E,OAAO,EAAE,qBAAqB,EAAE,MAAM,uCAAuC,CAAA;AAE7E,oCAAoC;AAEpC,MAAM,CAAC,MAAM,8BAA8B,GAAG,EAAE,CAAA;AAChD,MAAM,CAAC,MAAM,0CAA0C,GAAG,EAAE,CAAA;AAC5D,MAAM,CAAC,MAAM,iCAAiC,GAAG,GAAG,CAAA;AAoBpD,MAAM,SAAS,GAAG,wBAAwB,CAAC,EAAE;IAC3C,qGAAqG;IACrG,OAAO,EAAE,CAAA;AACX,CAAC,CAAA;AAED,MAAM,CAAC,MAAM,kBAAkB,GAAG,CAAC,KAA8B,EAAE,EAAE;IACnE,MAAM,uBAAuB,GAAG,CAC9B,QAA0C,EACR,EAAE;QACpC,MAAM,kBAAkB,GAAG,CACzB,GAA+B,EACH,EAAE;YAC9B,MAAM,KAAK,GAAG,YAAY,CAAC,GAAG,CAAC,KAAK,EAAE,8BAA8B,CAAC,CAAA;YACrE,MAAM,WAAW,GAAG,GAAG,CAAC,WAAW;gBACjC,CAAC,CAAC,YAAY,CACV,GAAG,CAAC,WAAW,EACf,0CAA0C,CAC3C;gBACH,CAAC,CAAC,SAAS,CAAA;YACb,IAAI,GAAG,CAAC,EAAE,CAAC,MAAM,GAAG,iCAAiC,EAAE;gBACrD,OAAO,CAAC,KAAK,CACX,cAAc,GAAG,CAAC,EAAE,mCAAmC,iCAAiC,aAAa,CACtG,CAAA;aACF;YACD,uCAAY,GAAG,KAAE,KAAK,EAAE,WAAW,IAAE;QACvC,CAAC,CAAA;QAED,OAAO,QAAQ,CAAC,GAAG,CAAC,OAAO,CAAC,EAAE,CAAC,CAAC;YAC9B,KAAK,EAAE,OAAO,CAAC,KAAK;gBAClB,CAAC,CAAC,YAAY,CAAC,OAAO,CAAC,KAAK,EAAE,8BAA8B,CAAC;gBAC7D,CAAC,CAAC,SAAS;YACb,IAAI,EAAE,OAAO,CAAC,IAAI,CAAC,GAAG,CAAC,kBAAkB,CAAC;SAC3C,CAAC,CAAC,CAAA;IACL,CAAC,CAAA;IAED,MAAM,aAAa,GAAG,GAAG,EAAE;QACzB,qCAAqC;QACrC,MAAM,OAAO,GAAG,GAAG,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC,EAAE,CAAA;QAC1C,OAAO,CACL,KAAC,OAAO,kBACN,IAAI,EAAE,SAAS,CAAC,OAAO,CAAC,IACpB,KAAK,IACT,IAAI,EAAE,KAAK,CAAC,oBAAoB,gBAE/B,OAAO,IACA,CACX,CAAA;IACH,CAAC,CAAA;IAED,MAAM,UAAU,GAAG,GAAG,EAAE;QACtB,OAAO;QACL,gFAAgF;QAChF,kCACM,KAAK,IACT,IAAI,EAAE,qBAAqB,CAAC,KAAK,CAAC,IAAI,CAAC,EACvC,MAAM,EAAE,YAAY,CAAC,KAAK,CAAC,MAAM,EAAE,yBAAyB,CAAC,EAC7D,QAAQ,EAAE,IAAI,CAAC,SAAS,CAAC,uBAAuB,CAAC,KAAK,CAAC,QAAQ,CAAC,CAAC,EACjE,IAAI,EAAE,KAAK,CAAC,oBAAoB,IAChC,CACH,CAAA;IACH,CAAC,CAAA;IAED,OAAO,eAAe,CAAC,EAAE,aAAa,EAAE,UAAU,EAAE,CAAC,CAAA;AACvD,CAAC,CAAA"}
|
|
@@ -5,7 +5,7 @@ import { renderComponent } from '../util/react';
|
|
|
5
5
|
import { generateWebviewUrlWithParams } from '../util/webviews';
|
|
6
6
|
import { Message } from './message';
|
|
7
7
|
import { WHATSAPP_MAX_BODY_CHARS, WHATSAPP_MAX_BUTTON_CHARS, WHATSAPP_MAX_FOOTER_CHARS, WHATSAPP_MAX_HEADER_CHARS, } from './multichannel/multichannel-utils';
|
|
8
|
-
import {
|
|
8
|
+
import { convertToMarkdownMeta } from './multichannel/whatsapp/markdown-meta';
|
|
9
9
|
const serialize = _whatsappCTAUrlButtonProps => {
|
|
10
10
|
// TODO: Implement to have data persistance in localStorage, not needed for this WhatsApp development
|
|
11
11
|
return {};
|
|
@@ -19,7 +19,7 @@ export const WhatsappCTAUrlButton = (props) => {
|
|
|
19
19
|
const renderNode = () => {
|
|
20
20
|
const validatedProps = Object.assign(Object.assign({}, props), { header: props.header
|
|
21
21
|
? truncateText(props.header, WHATSAPP_MAX_HEADER_CHARS)
|
|
22
|
-
: undefined, body: truncateText(
|
|
22
|
+
: undefined, body: truncateText(convertToMarkdownMeta(props.body), WHATSAPP_MAX_BODY_CHARS), footer: props.footer
|
|
23
23
|
? truncateText(props.footer, WHATSAPP_MAX_FOOTER_CHARS)
|
|
24
24
|
: undefined, displayText: truncateText(props.displayText, WHATSAPP_MAX_BUTTON_CHARS), url: 'webview' in props
|
|
25
25
|
? generateWebviewUrlWithParams(props.webview, props.params)
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"whatsapp-cta-url-button.js","sourceRoot":"","sources":["../../../src/components/whatsapp-cta-url-button.tsx"],"names":[],"mappings":";AAAA,OAAO,EAAE,KAAK,EAAE,MAAM,eAAe,CAAA;AAGrC,OAAO,EAAE,YAAY,EAAE,MAAM,SAAS,CAAA;AACtC,OAAO,EAAE,eAAe,EAAE,MAAM,eAAe,CAAA;AAC/C,OAAO,EAAE,4BAA4B,EAAE,MAAM,kBAAkB,CAAA;AAC/D,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAA;AACnC,OAAO,EACL,uBAAuB,EACvB,yBAAyB,EACzB,yBAAyB,EACzB,yBAAyB,GAC1B,MAAM,mCAAmC,CAAA;AAC1C,OAAO,EAAE,
|
|
1
|
+
{"version":3,"file":"whatsapp-cta-url-button.js","sourceRoot":"","sources":["../../../src/components/whatsapp-cta-url-button.tsx"],"names":[],"mappings":";AAAA,OAAO,EAAE,KAAK,EAAE,MAAM,eAAe,CAAA;AAGrC,OAAO,EAAE,YAAY,EAAE,MAAM,SAAS,CAAA;AACtC,OAAO,EAAE,eAAe,EAAE,MAAM,eAAe,CAAA;AAC/C,OAAO,EAAE,4BAA4B,EAAE,MAAM,kBAAkB,CAAA;AAC/D,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAA;AACnC,OAAO,EACL,uBAAuB,EACvB,yBAAyB,EACzB,yBAAyB,EACzB,yBAAyB,GAC1B,MAAM,mCAAmC,CAAA;AAC1C,OAAO,EAAE,qBAAqB,EAAE,MAAM,uCAAuC,CAAA;AAwB7E,MAAM,SAAS,GAAG,0BAA0B,CAAC,EAAE;IAC7C,qGAAqG;IACrG,OAAO,EAAE,CAAA;AACX,CAAC,CAAA;AAED,MAAM,CAAC,MAAM,oBAAoB,GAAG,CAAC,KAAgC,EAAE,EAAE;IACvE,MAAM,aAAa,GAAG,GAAG,EAAE;QACzB,qCAAqC;QACrC,MAAM,OAAO,GAAG,GAAG,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC,EAAE,CAAA;QAC1C,OAAO,CACL,KAAC,OAAO,kBACN,IAAI,EAAE,SAAS,CAAC,OAAO,CAAC,IACpB,KAAK,IACT,IAAI,EAAE,KAAK,CAAC,uBAAuB,gBAElC,OAAO,IACA,CACX,CAAA;IACH,CAAC,CAAA;IAED,MAAM,UAAU,GAAG,GAAG,EAAE;QACtB,MAAM,cAAc,mCACf,KAAK,KACR,MAAM,EAAE,KAAK,CAAC,MAAM;gBAClB,CAAC,CAAC,YAAY,CAAC,KAAK,CAAC,MAAM,EAAE,yBAAyB,CAAC;gBACvD,CAAC,CAAC,SAAS,EACb,IAAI,EAAE,YAAY,CAChB,qBAAqB,CAAC,KAAK,CAAC,IAAI,CAAC,EACjC,uBAAuB,CACxB,EACD,MAAM,EAAE,KAAK,CAAC,MAAM;gBAClB,CAAC,CAAC,YAAY,CAAC,KAAK,CAAC,MAAM,EAAE,yBAAyB,CAAC;gBACvD,CAAC,CAAC,SAAS,EACb,WAAW,EAAE,YAAY,CAAC,KAAK,CAAC,WAAW,EAAE,yBAAyB,CAAC,EACvE,GAAG,EACD,SAAS,IAAI,KAAK;gBAChB,CAAC,CAAC,4BAA4B,CAAC,KAAK,CAAC,OAAO,EAAE,KAAK,CAAC,MAAM,CAAC;gBAC3D,CAAC,CAAC,KAAK,CAAC,GAAG,GAChB,CAAA;QACD,OAAO;QACL,gFAAgF;QAChF,kCAAa,cAAc,IAAE,IAAI,EAAE,KAAK,CAAC,uBAAuB,IAAI,CACrE,CAAA;IACH,CAAC,CAAA;IAED,OAAO,eAAe,CAAC,EAAE,aAAa,EAAE,UAAU,EAAE,CAAC,CAAA;AACvD,CAAC,CAAA"}
|
package/lib/esm/util/webchat.js
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import merge from 'lodash.merge';
|
|
2
2
|
import UAParser from 'ua-parser-js';
|
|
3
|
-
import {
|
|
3
|
+
import { v7 as uuidv7 } from 'uuid';
|
|
4
4
|
import { WEBCHAT } from '../constants';
|
|
5
5
|
import { getProperty } from './objects';
|
|
6
6
|
/**
|
|
@@ -29,7 +29,7 @@ export const createUser = () => {
|
|
|
29
29
|
if (ua.device && ua.device.type)
|
|
30
30
|
name = `${ua.device.type} ${name}`;
|
|
31
31
|
return {
|
|
32
|
-
id:
|
|
32
|
+
id: uuidv7(),
|
|
33
33
|
name,
|
|
34
34
|
};
|
|
35
35
|
};
|
|
@@ -2,7 +2,7 @@ import { __awaiter } from "tslib";
|
|
|
2
2
|
import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
|
|
3
3
|
import { INPUT } from '@botonic/core';
|
|
4
4
|
import { useContext } from 'react';
|
|
5
|
-
import {
|
|
5
|
+
import { v7 as uuidv7 } from 'uuid';
|
|
6
6
|
import { WEBCHAT } from '../../constants';
|
|
7
7
|
import { WebchatContext } from '../../contexts';
|
|
8
8
|
import { getFullMimeWhitelist } from '../../message-utils';
|
|
@@ -32,7 +32,7 @@ export const InputPanel = ({ persistentMenu, enableEmojiPicker, enableAttachment
|
|
|
32
32
|
});
|
|
33
33
|
const sendChatEvent = (chatEvent) => __awaiter(void 0, void 0, void 0, function* () {
|
|
34
34
|
const chatEventInput = {
|
|
35
|
-
id:
|
|
35
|
+
id: uuidv7(),
|
|
36
36
|
type: INPUT.CHAT_EVENT,
|
|
37
37
|
data: chatEvent,
|
|
38
38
|
};
|
|
@@ -4,7 +4,7 @@ import { BotonicAction, INPUT, isMobile, params2queryString, } from '@botonic/co
|
|
|
4
4
|
import merge from 'lodash.merge';
|
|
5
5
|
import React, { forwardRef, useEffect, useImperativeHandle, useRef, useState, } from 'react';
|
|
6
6
|
import styled, { StyleSheetManager } from 'styled-components';
|
|
7
|
-
import {
|
|
7
|
+
import { v7 as uuidv7 } from 'uuid';
|
|
8
8
|
import { Audio, Document, Image, Text, Video } from '../components';
|
|
9
9
|
import { Handoff } from '../components/handoff';
|
|
10
10
|
import { normalizeWebchatSettings } from '../components/webchat-settings';
|
|
@@ -329,7 +329,7 @@ export const Webchat = forwardRef((props, ref) => {
|
|
|
329
329
|
if (isText(input) && checkBlockInput(input))
|
|
330
330
|
return;
|
|
331
331
|
if (!input.id)
|
|
332
|
-
input.id =
|
|
332
|
+
input.id = uuidv7();
|
|
333
333
|
const messageComponent = messageComponentFromInput(input);
|
|
334
334
|
if (messageComponent)
|
|
335
335
|
addMessageComponent(messageComponent);
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@botonic/react",
|
|
3
|
-
"version": "0.30.
|
|
3
|
+
"version": "0.30.4",
|
|
4
4
|
"license": "MIT",
|
|
5
5
|
"description": "Build Chatbots using React",
|
|
6
6
|
"main": "./lib/cjs",
|
|
@@ -32,7 +32,7 @@
|
|
|
32
32
|
"react-textarea-autosize": "^8.5.3",
|
|
33
33
|
"styled-components": "^5.3.0",
|
|
34
34
|
"ua-parser-js": "^1.0.39",
|
|
35
|
-
"uuid": "^
|
|
35
|
+
"uuid": "^10.0.0"
|
|
36
36
|
},
|
|
37
37
|
"devDependencies": {
|
|
38
38
|
"@babel/plugin-transform-runtime": "^7.23.9",
|
|
@@ -43,6 +43,7 @@
|
|
|
43
43
|
"@types/parse5": "^7.0.0",
|
|
44
44
|
"@types/react": "^16.14.56",
|
|
45
45
|
"@types/styled-components": "^5.1.34",
|
|
46
|
+
"@types/uuid": "^10.0.0",
|
|
46
47
|
"babel-plugin-add-module-exports": "^1.0.4",
|
|
47
48
|
"copyfiles": "^2.4.1",
|
|
48
49
|
"identity-obj-proxy": "^3.0.0",
|
|
@@ -100,21 +100,6 @@ export interface BlobProps {
|
|
|
100
100
|
imageStyle?: any
|
|
101
101
|
}
|
|
102
102
|
|
|
103
|
-
export interface ScrollbarProps {
|
|
104
|
-
autoHide?: boolean
|
|
105
|
-
thumb?: {
|
|
106
|
-
bgcolor?: string
|
|
107
|
-
border?: string
|
|
108
|
-
color?: string
|
|
109
|
-
opacity?: string
|
|
110
|
-
}
|
|
111
|
-
track?: {
|
|
112
|
-
bgcolor?: string
|
|
113
|
-
border?: string
|
|
114
|
-
color?: string
|
|
115
|
-
}
|
|
116
|
-
}
|
|
117
|
-
|
|
118
103
|
export interface ThemeProps extends StyleProp {
|
|
119
104
|
mobileBreakpoint?: number
|
|
120
105
|
mobileStyle?: any
|
|
@@ -165,7 +150,6 @@ export interface ThemeProps extends StyleProp {
|
|
|
165
150
|
}
|
|
166
151
|
scrollButton?: EnableProp & CustomProp
|
|
167
152
|
markdownStyle?: string // string template with css styles
|
|
168
|
-
scrollbar?: ScrollbarProps & EnableProp
|
|
169
153
|
userInput?: {
|
|
170
154
|
attachments?: EnableProp & CustomProp
|
|
171
155
|
blockInputs?: BlockInputOption[]
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import { INPUT, isBrowser } from '@botonic/core'
|
|
2
2
|
import React, { useContext, useEffect, useState } from 'react'
|
|
3
|
-
import {
|
|
3
|
+
import { v7 as uuidv7 } from 'uuid'
|
|
4
4
|
|
|
5
5
|
import { COLORS, WEBCHAT } from '../../constants'
|
|
6
6
|
import { RequestContext, WebchatContext } from '../../contexts'
|
|
@@ -49,7 +49,7 @@ export const Message = props => {
|
|
|
49
49
|
const { webchatState, addMessage, updateReplies, getThemeProperty } =
|
|
50
50
|
useContext(WebchatContext)
|
|
51
51
|
const [state, setState] = useState({
|
|
52
|
-
id: props.id ||
|
|
52
|
+
id: props.id || uuidv7(),
|
|
53
53
|
})
|
|
54
54
|
|
|
55
55
|
const [disabled, setDisabled] = useState(false)
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import React, { useContext, useEffect, useState } from 'react'
|
|
2
|
-
import {
|
|
2
|
+
import { v7 as uuidv7 } from 'uuid'
|
|
3
3
|
|
|
4
4
|
import ThumbsDown from '../../assets/thumbs-down.svg'
|
|
5
5
|
import ThumbsUp from '../../assets/thumbs-up.svg'
|
|
@@ -70,7 +70,7 @@ export const MessageFeedback = ({
|
|
|
70
70
|
knowledgebaseInferenceId: inferenceId,
|
|
71
71
|
feedbackBotInteractionId: botInteractionId,
|
|
72
72
|
feedbackTargetId: messageId,
|
|
73
|
-
feedbackGroupId:
|
|
73
|
+
feedbackGroupId: uuidv7(),
|
|
74
74
|
possibleOptions: [FeedbackOption.ThumbsDown, FeedbackOption.ThumbsUp],
|
|
75
75
|
possibleValues: [0, 1],
|
|
76
76
|
option: isUseful ? FeedbackOption.ThumbsUp : FeedbackOption.ThumbsDown,
|
|
@@ -21,7 +21,7 @@ import {
|
|
|
21
21
|
WHATSAPP_LIST_MAX_BUTTONS,
|
|
22
22
|
WHATSAPP_MAX_BUTTONS,
|
|
23
23
|
} from './multichannel-utils'
|
|
24
|
-
import {
|
|
24
|
+
import { convertToMarkdownMeta } from './whatsapp/markdown-meta'
|
|
25
25
|
|
|
26
26
|
export const MultichannelText = props => {
|
|
27
27
|
const requestContext = useContext(RequestContext)
|
|
@@ -116,7 +116,7 @@ export const MultichannelText = props => {
|
|
|
116
116
|
const { postbackButtons, urlButtons, webviewButtons } = getWhatsappButtons()
|
|
117
117
|
|
|
118
118
|
const textElements = texts.map(text => {
|
|
119
|
-
const textWithMarkdown =
|
|
119
|
+
const textWithMarkdown = convertToMarkdownMeta(text)
|
|
120
120
|
return (props.newline || '') + textWithMarkdown
|
|
121
121
|
})
|
|
122
122
|
|
|
@@ -284,15 +284,19 @@ export const MultichannelText = props => {
|
|
|
284
284
|
const multichannelFacebook = new MultichannelFacebook()
|
|
285
285
|
const { texts, propsLastText, propsWithoutChildren } =
|
|
286
286
|
multichannelFacebook.convertText(props, text[0])
|
|
287
|
+
|
|
288
|
+
const [lastText, ...buttonsAndReplies] = propsLastText.children
|
|
287
289
|
return (
|
|
288
290
|
<>
|
|
289
|
-
{texts
|
|
290
|
-
|
|
291
|
-
|
|
292
|
-
|
|
293
|
-
|
|
294
|
-
|
|
295
|
-
|
|
291
|
+
{texts?.map((message, i) => (
|
|
292
|
+
<Text key={i} {...propsWithoutChildren}>
|
|
293
|
+
{convertToMarkdownMeta(message)}
|
|
294
|
+
</Text>
|
|
295
|
+
))}
|
|
296
|
+
<Text {...propsLastText}>
|
|
297
|
+
{convertToMarkdownMeta(lastText)}
|
|
298
|
+
{buttonsAndReplies}
|
|
299
|
+
</Text>
|
|
296
300
|
</>
|
|
297
301
|
)
|
|
298
302
|
}
|
|
@@ -0,0 +1,66 @@
|
|
|
1
|
+
const REGEX_MARKDOWN_BOLD = /(\*\*|__)(.*?)\1/g
|
|
2
|
+
const REGEX_MARKDOWN_ITALIC = /(\*|_)(.*?)\1/g
|
|
3
|
+
const REGEX_MARKDOWN_LINK = /\[([^\]]+)\]\(([^)]+)\)/g
|
|
4
|
+
|
|
5
|
+
const NORMALIZED_BOLD = '&%BOLD%&'
|
|
6
|
+
const REGEX_NORMALIZED_BOLD = new RegExp(
|
|
7
|
+
`${NORMALIZED_BOLD}(.*?)${NORMALIZED_BOLD}`,
|
|
8
|
+
'g'
|
|
9
|
+
)
|
|
10
|
+
const NORMALIZED_ITALIC = '&%ITALIC%&'
|
|
11
|
+
const REGEX_NORMALIZED_ITALIC = new RegExp(
|
|
12
|
+
`${NORMALIZED_ITALIC}(.*?)${NORMALIZED_ITALIC}`,
|
|
13
|
+
'g'
|
|
14
|
+
)
|
|
15
|
+
|
|
16
|
+
const WHATSAPP_BOLD = '*'
|
|
17
|
+
const WHATSAPP_ITALIC = '_'
|
|
18
|
+
|
|
19
|
+
// Convert markdown to WhatsApp and Facebook format
|
|
20
|
+
export function convertToMarkdownMeta(text: string): string {
|
|
21
|
+
const textWithBoldAndItalic = replaceBoldAndItalic(text)
|
|
22
|
+
|
|
23
|
+
return replaceMarkdownLinks(textWithBoldAndItalic)
|
|
24
|
+
}
|
|
25
|
+
|
|
26
|
+
function replaceBoldAndItalic(text: string) {
|
|
27
|
+
const normalizedText = normalizeBoldAndItalic(text)
|
|
28
|
+
const boldAndItalicText = normalizedToMarkdownMeta(normalizedText)
|
|
29
|
+
|
|
30
|
+
return boldAndItalicText
|
|
31
|
+
}
|
|
32
|
+
|
|
33
|
+
function normalizeBoldAndItalic(text: string): string {
|
|
34
|
+
// Normalize bold
|
|
35
|
+
text = text.replace(
|
|
36
|
+
REGEX_MARKDOWN_BOLD,
|
|
37
|
+
`${NORMALIZED_BOLD}$2${NORMALIZED_BOLD}`
|
|
38
|
+
)
|
|
39
|
+
// Normalize italic
|
|
40
|
+
text = text.replace(
|
|
41
|
+
REGEX_MARKDOWN_ITALIC,
|
|
42
|
+
`${NORMALIZED_ITALIC}$2${NORMALIZED_ITALIC}`
|
|
43
|
+
)
|
|
44
|
+
|
|
45
|
+
return text
|
|
46
|
+
}
|
|
47
|
+
|
|
48
|
+
function normalizedToMarkdownMeta(text: string): string {
|
|
49
|
+
// convert &%BOLD%&text&%BOLD%& to *text*
|
|
50
|
+
text = text.replace(
|
|
51
|
+
REGEX_NORMALIZED_BOLD,
|
|
52
|
+
`${WHATSAPP_BOLD}$1${WHATSAPP_BOLD}`
|
|
53
|
+
)
|
|
54
|
+
// convert &%ITALIC%&text&%ITALIC%& to _text_
|
|
55
|
+
text = text.replace(
|
|
56
|
+
REGEX_NORMALIZED_ITALIC,
|
|
57
|
+
`${WHATSAPP_ITALIC}$1${WHATSAPP_ITALIC}`
|
|
58
|
+
)
|
|
59
|
+
|
|
60
|
+
return text
|
|
61
|
+
}
|
|
62
|
+
|
|
63
|
+
function replaceMarkdownLinks(text: string) {
|
|
64
|
+
// $1 = textUrl, $2 = linkUrl
|
|
65
|
+
return text.replace(REGEX_MARKDOWN_LINK, '$1: $2')
|
|
66
|
+
}
|
|
@@ -5,7 +5,7 @@ import { truncateText } from '../util'
|
|
|
5
5
|
import { renderComponent } from '../util/react'
|
|
6
6
|
import { Message } from './message'
|
|
7
7
|
import { WHATSAPP_MAX_BUTTON_CHARS } from './multichannel/multichannel-utils'
|
|
8
|
-
import {
|
|
8
|
+
import { convertToMarkdownMeta } from './multichannel/whatsapp/markdown-meta'
|
|
9
9
|
|
|
10
10
|
// TODO: Add validation in component
|
|
11
11
|
|
|
@@ -85,7 +85,7 @@ export const WhatsappButtonList = (props: WhatsappButtonListProps) => {
|
|
|
85
85
|
// @ts-ignore Property 'message' does not exist on type 'JSX.IntrinsicElements'.
|
|
86
86
|
<message
|
|
87
87
|
{...props}
|
|
88
|
-
body={
|
|
88
|
+
body={convertToMarkdownMeta(props.body)}
|
|
89
89
|
button={truncateText(props.button, WHATSAPP_MAX_BUTTON_CHARS)}
|
|
90
90
|
sections={JSON.stringify(trucateSectionsContents(props.sections))}
|
|
91
91
|
type={INPUT.WHATSAPP_BUTTON_LIST}
|
|
@@ -11,7 +11,7 @@ import {
|
|
|
11
11
|
WHATSAPP_MAX_FOOTER_CHARS,
|
|
12
12
|
WHATSAPP_MAX_HEADER_CHARS,
|
|
13
13
|
} from './multichannel/multichannel-utils'
|
|
14
|
-
import {
|
|
14
|
+
import { convertToMarkdownMeta } from './multichannel/whatsapp/markdown-meta'
|
|
15
15
|
|
|
16
16
|
export interface WhatsappCTAUrlButtonCommonProps {
|
|
17
17
|
header?: string
|
|
@@ -61,7 +61,10 @@ export const WhatsappCTAUrlButton = (props: WhatsappCTAUrlButtonProps) => {
|
|
|
61
61
|
header: props.header
|
|
62
62
|
? truncateText(props.header, WHATSAPP_MAX_HEADER_CHARS)
|
|
63
63
|
: undefined,
|
|
64
|
-
body: truncateText(
|
|
64
|
+
body: truncateText(
|
|
65
|
+
convertToMarkdownMeta(props.body),
|
|
66
|
+
WHATSAPP_MAX_BODY_CHARS
|
|
67
|
+
),
|
|
65
68
|
footer: props.footer
|
|
66
69
|
? truncateText(props.footer, WHATSAPP_MAX_FOOTER_CHARS)
|
|
67
70
|
: undefined,
|
package/src/util/webchat.js
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import merge from 'lodash.merge'
|
|
2
2
|
import UAParser from 'ua-parser-js'
|
|
3
|
-
import {
|
|
3
|
+
import { v7 as uuidv7 } from 'uuid'
|
|
4
4
|
|
|
5
5
|
import { WEBCHAT } from '../constants'
|
|
6
6
|
import { getProperty } from './objects'
|
|
@@ -31,7 +31,7 @@ export const createUser = () => {
|
|
|
31
31
|
let name = `${ua.os.name} ${ua.browser.name}`
|
|
32
32
|
if (ua.device && ua.device.type) name = `${ua.device.type} ${name}`
|
|
33
33
|
return {
|
|
34
|
-
id:
|
|
34
|
+
id: uuidv7(),
|
|
35
35
|
name,
|
|
36
36
|
}
|
|
37
37
|
}
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import { INPUT } from '@botonic/core'
|
|
2
2
|
import React, { useContext } from 'react'
|
|
3
|
-
import {
|
|
3
|
+
import { v7 as uuidv7 } from 'uuid'
|
|
4
4
|
|
|
5
5
|
import { WEBCHAT } from '../../constants'
|
|
6
6
|
import { WebchatContext } from '../../contexts'
|
|
@@ -62,7 +62,7 @@ export const InputPanel = ({
|
|
|
62
62
|
|
|
63
63
|
const sendChatEvent = async chatEvent => {
|
|
64
64
|
const chatEventInput = {
|
|
65
|
-
id:
|
|
65
|
+
id: uuidv7(),
|
|
66
66
|
type: INPUT.CHAT_EVENT,
|
|
67
67
|
data: chatEvent,
|
|
68
68
|
}
|
package/src/webchat/webchat.jsx
CHANGED
|
@@ -13,7 +13,7 @@ import React, {
|
|
|
13
13
|
useState,
|
|
14
14
|
} from 'react'
|
|
15
15
|
import styled, { StyleSheetManager } from 'styled-components'
|
|
16
|
-
import {
|
|
16
|
+
import { v7 as uuidv7 } from 'uuid'
|
|
17
17
|
|
|
18
18
|
import { Audio, Document, Image, Text, Video } from '../components'
|
|
19
19
|
import { Handoff } from '../components/handoff'
|
|
@@ -468,7 +468,7 @@ export const Webchat = forwardRef((props, ref) => {
|
|
|
468
468
|
if (!input || Object.keys(input).length == 0) return
|
|
469
469
|
if (isText(input) && (!input.data || !input.data.trim())) return // in case trim() doesn't work in a browser we can use !/\S/.test(input.data)
|
|
470
470
|
if (isText(input) && checkBlockInput(input)) return
|
|
471
|
-
if (!input.id) input.id =
|
|
471
|
+
if (!input.id) input.id = uuidv7()
|
|
472
472
|
const messageComponent = messageComponentFromInput(input)
|
|
473
473
|
if (messageComponent) addMessageComponent(messageComponent)
|
|
474
474
|
if (isMedia(input)) input.data = await readDataURL(input.data)
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
export declare function whatsappMarkdown(text: string): string;
|
|
@@ -1,57 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.whatsappMarkdown = void 0;
|
|
4
|
-
const MARKDOWN_BOLD_OPTION_1 = '**';
|
|
5
|
-
const MARKDOWN_BOLD_OPTION_2 = '__';
|
|
6
|
-
const MARKDOWN_WHATSAPP_BOLD = '*';
|
|
7
|
-
const MARKDOWN_ITALIC_OPTION_1 = '*';
|
|
8
|
-
const MARKDOWN_WHATSAPP_ITALIC = '_';
|
|
9
|
-
const MARKDOWN_BOLD_OR_ITALIC_REGEX = /(\*\*|__)(.*?)\1|(\*|_)(.*?)\3/g;
|
|
10
|
-
const MARKDOWN_NORMALIZED_BOLD_ITALIC_OPEN = '**_';
|
|
11
|
-
const MARKDOWN_NORMALIZED_BOLD_ITALIC_CLOSE = '_**';
|
|
12
|
-
const MARKDOWN_BOLD_AND_ITALIC_OPTION1 = /(_\*\*)(.*?)(\*\*_)/g;
|
|
13
|
-
const MARKDOWN_BOLD_AND_ITALIC_OPTION2 = /(\*__)(.*?)(__\*)/g;
|
|
14
|
-
const MARKDOWN_BOLD_AND_ITALIC_OPTION3 = /(__\*)(.*?)(\*__)/g;
|
|
15
|
-
function whatsappMarkdown(text) {
|
|
16
|
-
const textNormalized = normalizeMarkdown(text);
|
|
17
|
-
const matches = textNormalized.match(MARKDOWN_BOLD_OR_ITALIC_REGEX);
|
|
18
|
-
if (matches) {
|
|
19
|
-
const matchesResult = matches.map(match => {
|
|
20
|
-
if (match.startsWith(MARKDOWN_BOLD_OPTION_1)) {
|
|
21
|
-
return replaceAllOccurrences(match, MARKDOWN_BOLD_OPTION_1, MARKDOWN_WHATSAPP_BOLD);
|
|
22
|
-
}
|
|
23
|
-
if (match.startsWith(MARKDOWN_BOLD_OPTION_2)) {
|
|
24
|
-
return replaceAllOccurrences(match, MARKDOWN_BOLD_OPTION_2, MARKDOWN_WHATSAPP_BOLD);
|
|
25
|
-
}
|
|
26
|
-
if (match.startsWith(MARKDOWN_ITALIC_OPTION_1)) {
|
|
27
|
-
return replaceAllOccurrences(match, MARKDOWN_ITALIC_OPTION_1, MARKDOWN_WHATSAPP_ITALIC);
|
|
28
|
-
}
|
|
29
|
-
return match;
|
|
30
|
-
});
|
|
31
|
-
let textWhatsapp = textNormalized;
|
|
32
|
-
for (let i = 0; i < matches.length; i++) {
|
|
33
|
-
textWhatsapp = replaceAllOccurrences(textWhatsapp, matches[i], matchesResult[i]);
|
|
34
|
-
}
|
|
35
|
-
return textWhatsapp;
|
|
36
|
-
}
|
|
37
|
-
return text;
|
|
38
|
-
}
|
|
39
|
-
exports.whatsappMarkdown = whatsappMarkdown;
|
|
40
|
-
function normalizeMarkdown(text) {
|
|
41
|
-
text = replaceBoldItalic(text, MARKDOWN_BOLD_AND_ITALIC_OPTION1);
|
|
42
|
-
text = replaceBoldItalic(text, MARKDOWN_BOLD_AND_ITALIC_OPTION2);
|
|
43
|
-
text = replaceBoldItalic(text, MARKDOWN_BOLD_AND_ITALIC_OPTION3);
|
|
44
|
-
return text;
|
|
45
|
-
}
|
|
46
|
-
function replaceBoldItalic(text, regex) {
|
|
47
|
-
return text.replace(regex, (match, markdownOpen, textInsideMarkdown, markdownClose) => {
|
|
48
|
-
if (match.startsWith(markdownOpen) && match.endsWith(markdownClose)) {
|
|
49
|
-
return `${MARKDOWN_NORMALIZED_BOLD_ITALIC_OPEN}${textInsideMarkdown}${MARKDOWN_NORMALIZED_BOLD_ITALIC_CLOSE}`;
|
|
50
|
-
}
|
|
51
|
-
return match;
|
|
52
|
-
});
|
|
53
|
-
}
|
|
54
|
-
function replaceAllOccurrences(text, searchValue, replaceValue) {
|
|
55
|
-
return text.split(searchValue).join(replaceValue);
|
|
56
|
-
}
|
|
57
|
-
//# sourceMappingURL=markdown.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"markdown.js","sourceRoot":"","sources":["../../../../../src/components/multichannel/whatsapp/markdown.ts"],"names":[],"mappings":";;;AAAA,MAAM,sBAAsB,GAAG,IAAI,CAAA;AACnC,MAAM,sBAAsB,GAAG,IAAI,CAAA;AACnC,MAAM,sBAAsB,GAAG,GAAG,CAAA;AAElC,MAAM,wBAAwB,GAAG,GAAG,CAAA;AACpC,MAAM,wBAAwB,GAAG,GAAG,CAAA;AAEpC,MAAM,6BAA6B,GAAG,iCAAiC,CAAA;AAEvE,MAAM,oCAAoC,GAAG,KAAK,CAAA;AAClD,MAAM,qCAAqC,GAAG,KAAK,CAAA;AAEnD,MAAM,gCAAgC,GAAG,sBAAsB,CAAA;AAC/D,MAAM,gCAAgC,GAAG,oBAAoB,CAAA;AAC7D,MAAM,gCAAgC,GAAG,oBAAoB,CAAA;AAE7D,SAAgB,gBAAgB,CAAC,IAAY;IAC3C,MAAM,cAAc,GAAG,iBAAiB,CAAC,IAAI,CAAC,CAAA;IAC9C,MAAM,OAAO,GAAG,cAAc,CAAC,KAAK,CAAC,6BAA6B,CAAC,CAAA;IACnE,IAAI,OAAO,EAAE;QACX,MAAM,aAAa,GAAG,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,EAAE;YACxC,IAAI,KAAK,CAAC,UAAU,CAAC,sBAAsB,CAAC,EAAE;gBAC5C,OAAO,qBAAqB,CAC1B,KAAK,EACL,sBAAsB,EACtB,sBAAsB,CACvB,CAAA;aACF;YACD,IAAI,KAAK,CAAC,UAAU,CAAC,sBAAsB,CAAC,EAAE;gBAC5C,OAAO,qBAAqB,CAC1B,KAAK,EACL,sBAAsB,EACtB,sBAAsB,CACvB,CAAA;aACF;YACD,IAAI,KAAK,CAAC,UAAU,CAAC,wBAAwB,CAAC,EAAE;gBAC9C,OAAO,qBAAqB,CAC1B,KAAK,EACL,wBAAwB,EACxB,wBAAwB,CACzB,CAAA;aACF;YACD,OAAO,KAAK,CAAA;QACd,CAAC,CAAC,CAAA;QACF,IAAI,YAAY,GAAG,cAAc,CAAA;QACjC,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,OAAO,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE;YACvC,YAAY,GAAG,qBAAqB,CAClC,YAAY,EACZ,OAAO,CAAC,CAAC,CAAC,EACV,aAAa,CAAC,CAAC,CAAC,CACjB,CAAA;SACF;QACD,OAAO,YAAY,CAAA;KACpB;IACD,OAAO,IAAI,CAAA;AACb,CAAC;AAvCD,4CAuCC;AAED,SAAS,iBAAiB,CAAC,IAAY;IACrC,IAAI,GAAG,iBAAiB,CAAC,IAAI,EAAE,gCAAgC,CAAC,CAAA;IAChE,IAAI,GAAG,iBAAiB,CAAC,IAAI,EAAE,gCAAgC,CAAC,CAAA;IAChE,IAAI,GAAG,iBAAiB,CAAC,IAAI,EAAE,gCAAgC,CAAC,CAAA;IAChE,OAAO,IAAI,CAAA;AACb,CAAC;AAED,SAAS,iBAAiB,CAAC,IAAY,EAAE,KAAa;IACpD,OAAO,IAAI,CAAC,OAAO,CACjB,KAAK,EACL,CACE,KAAa,EACb,YAAoB,EACpB,kBAA0B,EAC1B,aAAqB,EACrB,EAAE;QACF,IAAI,KAAK,CAAC,UAAU,CAAC,YAAY,CAAC,IAAI,KAAK,CAAC,QAAQ,CAAC,aAAa,CAAC,EAAE;YACnE,OAAO,GAAG,oCAAoC,GAAG,kBAAkB,GAAG,qCAAqC,EAAE,CAAA;SAC9G;QACD,OAAO,KAAK,CAAA;IACd,CAAC,CACF,CAAA;AACH,CAAC;AAED,SAAS,qBAAqB,CAC5B,IAAY,EACZ,WAAmB,EACnB,YAAoB;IAEpB,OAAO,IAAI,CAAC,KAAK,CAAC,WAAW,CAAC,CAAC,IAAI,CAAC,YAAY,CAAC,CAAA;AACnD,CAAC"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
export declare function whatsappMarkdown(text: string): string;
|
|
@@ -1,53 +0,0 @@
|
|
|
1
|
-
const MARKDOWN_BOLD_OPTION_1 = '**';
|
|
2
|
-
const MARKDOWN_BOLD_OPTION_2 = '__';
|
|
3
|
-
const MARKDOWN_WHATSAPP_BOLD = '*';
|
|
4
|
-
const MARKDOWN_ITALIC_OPTION_1 = '*';
|
|
5
|
-
const MARKDOWN_WHATSAPP_ITALIC = '_';
|
|
6
|
-
const MARKDOWN_BOLD_OR_ITALIC_REGEX = /(\*\*|__)(.*?)\1|(\*|_)(.*?)\3/g;
|
|
7
|
-
const MARKDOWN_NORMALIZED_BOLD_ITALIC_OPEN = '**_';
|
|
8
|
-
const MARKDOWN_NORMALIZED_BOLD_ITALIC_CLOSE = '_**';
|
|
9
|
-
const MARKDOWN_BOLD_AND_ITALIC_OPTION1 = /(_\*\*)(.*?)(\*\*_)/g;
|
|
10
|
-
const MARKDOWN_BOLD_AND_ITALIC_OPTION2 = /(\*__)(.*?)(__\*)/g;
|
|
11
|
-
const MARKDOWN_BOLD_AND_ITALIC_OPTION3 = /(__\*)(.*?)(\*__)/g;
|
|
12
|
-
export function whatsappMarkdown(text) {
|
|
13
|
-
const textNormalized = normalizeMarkdown(text);
|
|
14
|
-
const matches = textNormalized.match(MARKDOWN_BOLD_OR_ITALIC_REGEX);
|
|
15
|
-
if (matches) {
|
|
16
|
-
const matchesResult = matches.map(match => {
|
|
17
|
-
if (match.startsWith(MARKDOWN_BOLD_OPTION_1)) {
|
|
18
|
-
return replaceAllOccurrences(match, MARKDOWN_BOLD_OPTION_1, MARKDOWN_WHATSAPP_BOLD);
|
|
19
|
-
}
|
|
20
|
-
if (match.startsWith(MARKDOWN_BOLD_OPTION_2)) {
|
|
21
|
-
return replaceAllOccurrences(match, MARKDOWN_BOLD_OPTION_2, MARKDOWN_WHATSAPP_BOLD);
|
|
22
|
-
}
|
|
23
|
-
if (match.startsWith(MARKDOWN_ITALIC_OPTION_1)) {
|
|
24
|
-
return replaceAllOccurrences(match, MARKDOWN_ITALIC_OPTION_1, MARKDOWN_WHATSAPP_ITALIC);
|
|
25
|
-
}
|
|
26
|
-
return match;
|
|
27
|
-
});
|
|
28
|
-
let textWhatsapp = textNormalized;
|
|
29
|
-
for (let i = 0; i < matches.length; i++) {
|
|
30
|
-
textWhatsapp = replaceAllOccurrences(textWhatsapp, matches[i], matchesResult[i]);
|
|
31
|
-
}
|
|
32
|
-
return textWhatsapp;
|
|
33
|
-
}
|
|
34
|
-
return text;
|
|
35
|
-
}
|
|
36
|
-
function normalizeMarkdown(text) {
|
|
37
|
-
text = replaceBoldItalic(text, MARKDOWN_BOLD_AND_ITALIC_OPTION1);
|
|
38
|
-
text = replaceBoldItalic(text, MARKDOWN_BOLD_AND_ITALIC_OPTION2);
|
|
39
|
-
text = replaceBoldItalic(text, MARKDOWN_BOLD_AND_ITALIC_OPTION3);
|
|
40
|
-
return text;
|
|
41
|
-
}
|
|
42
|
-
function replaceBoldItalic(text, regex) {
|
|
43
|
-
return text.replace(regex, (match, markdownOpen, textInsideMarkdown, markdownClose) => {
|
|
44
|
-
if (match.startsWith(markdownOpen) && match.endsWith(markdownClose)) {
|
|
45
|
-
return `${MARKDOWN_NORMALIZED_BOLD_ITALIC_OPEN}${textInsideMarkdown}${MARKDOWN_NORMALIZED_BOLD_ITALIC_CLOSE}`;
|
|
46
|
-
}
|
|
47
|
-
return match;
|
|
48
|
-
});
|
|
49
|
-
}
|
|
50
|
-
function replaceAllOccurrences(text, searchValue, replaceValue) {
|
|
51
|
-
return text.split(searchValue).join(replaceValue);
|
|
52
|
-
}
|
|
53
|
-
//# sourceMappingURL=markdown.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"markdown.js","sourceRoot":"","sources":["../../../../../src/components/multichannel/whatsapp/markdown.ts"],"names":[],"mappings":"AAAA,MAAM,sBAAsB,GAAG,IAAI,CAAA;AACnC,MAAM,sBAAsB,GAAG,IAAI,CAAA;AACnC,MAAM,sBAAsB,GAAG,GAAG,CAAA;AAElC,MAAM,wBAAwB,GAAG,GAAG,CAAA;AACpC,MAAM,wBAAwB,GAAG,GAAG,CAAA;AAEpC,MAAM,6BAA6B,GAAG,iCAAiC,CAAA;AAEvE,MAAM,oCAAoC,GAAG,KAAK,CAAA;AAClD,MAAM,qCAAqC,GAAG,KAAK,CAAA;AAEnD,MAAM,gCAAgC,GAAG,sBAAsB,CAAA;AAC/D,MAAM,gCAAgC,GAAG,oBAAoB,CAAA;AAC7D,MAAM,gCAAgC,GAAG,oBAAoB,CAAA;AAE7D,MAAM,UAAU,gBAAgB,CAAC,IAAY;IAC3C,MAAM,cAAc,GAAG,iBAAiB,CAAC,IAAI,CAAC,CAAA;IAC9C,MAAM,OAAO,GAAG,cAAc,CAAC,KAAK,CAAC,6BAA6B,CAAC,CAAA;IACnE,IAAI,OAAO,EAAE;QACX,MAAM,aAAa,GAAG,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,EAAE;YACxC,IAAI,KAAK,CAAC,UAAU,CAAC,sBAAsB,CAAC,EAAE;gBAC5C,OAAO,qBAAqB,CAC1B,KAAK,EACL,sBAAsB,EACtB,sBAAsB,CACvB,CAAA;aACF;YACD,IAAI,KAAK,CAAC,UAAU,CAAC,sBAAsB,CAAC,EAAE;gBAC5C,OAAO,qBAAqB,CAC1B,KAAK,EACL,sBAAsB,EACtB,sBAAsB,CACvB,CAAA;aACF;YACD,IAAI,KAAK,CAAC,UAAU,CAAC,wBAAwB,CAAC,EAAE;gBAC9C,OAAO,qBAAqB,CAC1B,KAAK,EACL,wBAAwB,EACxB,wBAAwB,CACzB,CAAA;aACF;YACD,OAAO,KAAK,CAAA;QACd,CAAC,CAAC,CAAA;QACF,IAAI,YAAY,GAAG,cAAc,CAAA;QACjC,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,OAAO,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE;YACvC,YAAY,GAAG,qBAAqB,CAClC,YAAY,EACZ,OAAO,CAAC,CAAC,CAAC,EACV,aAAa,CAAC,CAAC,CAAC,CACjB,CAAA;SACF;QACD,OAAO,YAAY,CAAA;KACpB;IACD,OAAO,IAAI,CAAA;AACb,CAAC;AAED,SAAS,iBAAiB,CAAC,IAAY;IACrC,IAAI,GAAG,iBAAiB,CAAC,IAAI,EAAE,gCAAgC,CAAC,CAAA;IAChE,IAAI,GAAG,iBAAiB,CAAC,IAAI,EAAE,gCAAgC,CAAC,CAAA;IAChE,IAAI,GAAG,iBAAiB,CAAC,IAAI,EAAE,gCAAgC,CAAC,CAAA;IAChE,OAAO,IAAI,CAAA;AACb,CAAC;AAED,SAAS,iBAAiB,CAAC,IAAY,EAAE,KAAa;IACpD,OAAO,IAAI,CAAC,OAAO,CACjB,KAAK,EACL,CACE,KAAa,EACb,YAAoB,EACpB,kBAA0B,EAC1B,aAAqB,EACrB,EAAE;QACF,IAAI,KAAK,CAAC,UAAU,CAAC,YAAY,CAAC,IAAI,KAAK,CAAC,QAAQ,CAAC,aAAa,CAAC,EAAE;YACnE,OAAO,GAAG,oCAAoC,GAAG,kBAAkB,GAAG,qCAAqC,EAAE,CAAA;SAC9G;QACD,OAAO,KAAK,CAAA;IACd,CAAC,CACF,CAAA;AACH,CAAC;AAED,SAAS,qBAAqB,CAC5B,IAAY,EACZ,WAAmB,EACnB,YAAoB;IAEpB,OAAO,IAAI,CAAC,KAAK,CAAC,WAAW,CAAC,CAAC,IAAI,CAAC,YAAY,CAAC,CAAA;AACnD,CAAC"}
|
|
@@ -1,88 +0,0 @@
|
|
|
1
|
-
const MARKDOWN_BOLD_OPTION_1 = '**'
|
|
2
|
-
const MARKDOWN_BOLD_OPTION_2 = '__'
|
|
3
|
-
const MARKDOWN_WHATSAPP_BOLD = '*'
|
|
4
|
-
|
|
5
|
-
const MARKDOWN_ITALIC_OPTION_1 = '*'
|
|
6
|
-
const MARKDOWN_WHATSAPP_ITALIC = '_'
|
|
7
|
-
|
|
8
|
-
const MARKDOWN_BOLD_OR_ITALIC_REGEX = /(\*\*|__)(.*?)\1|(\*|_)(.*?)\3/g
|
|
9
|
-
|
|
10
|
-
const MARKDOWN_NORMALIZED_BOLD_ITALIC_OPEN = '**_'
|
|
11
|
-
const MARKDOWN_NORMALIZED_BOLD_ITALIC_CLOSE = '_**'
|
|
12
|
-
|
|
13
|
-
const MARKDOWN_BOLD_AND_ITALIC_OPTION1 = /(_\*\*)(.*?)(\*\*_)/g
|
|
14
|
-
const MARKDOWN_BOLD_AND_ITALIC_OPTION2 = /(\*__)(.*?)(__\*)/g
|
|
15
|
-
const MARKDOWN_BOLD_AND_ITALIC_OPTION3 = /(__\*)(.*?)(\*__)/g
|
|
16
|
-
|
|
17
|
-
export function whatsappMarkdown(text: string) {
|
|
18
|
-
const textNormalized = normalizeMarkdown(text)
|
|
19
|
-
const matches = textNormalized.match(MARKDOWN_BOLD_OR_ITALIC_REGEX)
|
|
20
|
-
if (matches) {
|
|
21
|
-
const matchesResult = matches.map(match => {
|
|
22
|
-
if (match.startsWith(MARKDOWN_BOLD_OPTION_1)) {
|
|
23
|
-
return replaceAllOccurrences(
|
|
24
|
-
match,
|
|
25
|
-
MARKDOWN_BOLD_OPTION_1,
|
|
26
|
-
MARKDOWN_WHATSAPP_BOLD
|
|
27
|
-
)
|
|
28
|
-
}
|
|
29
|
-
if (match.startsWith(MARKDOWN_BOLD_OPTION_2)) {
|
|
30
|
-
return replaceAllOccurrences(
|
|
31
|
-
match,
|
|
32
|
-
MARKDOWN_BOLD_OPTION_2,
|
|
33
|
-
MARKDOWN_WHATSAPP_BOLD
|
|
34
|
-
)
|
|
35
|
-
}
|
|
36
|
-
if (match.startsWith(MARKDOWN_ITALIC_OPTION_1)) {
|
|
37
|
-
return replaceAllOccurrences(
|
|
38
|
-
match,
|
|
39
|
-
MARKDOWN_ITALIC_OPTION_1,
|
|
40
|
-
MARKDOWN_WHATSAPP_ITALIC
|
|
41
|
-
)
|
|
42
|
-
}
|
|
43
|
-
return match
|
|
44
|
-
})
|
|
45
|
-
let textWhatsapp = textNormalized
|
|
46
|
-
for (let i = 0; i < matches.length; i++) {
|
|
47
|
-
textWhatsapp = replaceAllOccurrences(
|
|
48
|
-
textWhatsapp,
|
|
49
|
-
matches[i],
|
|
50
|
-
matchesResult[i]
|
|
51
|
-
)
|
|
52
|
-
}
|
|
53
|
-
return textWhatsapp
|
|
54
|
-
}
|
|
55
|
-
return text
|
|
56
|
-
}
|
|
57
|
-
|
|
58
|
-
function normalizeMarkdown(text: string) {
|
|
59
|
-
text = replaceBoldItalic(text, MARKDOWN_BOLD_AND_ITALIC_OPTION1)
|
|
60
|
-
text = replaceBoldItalic(text, MARKDOWN_BOLD_AND_ITALIC_OPTION2)
|
|
61
|
-
text = replaceBoldItalic(text, MARKDOWN_BOLD_AND_ITALIC_OPTION3)
|
|
62
|
-
return text
|
|
63
|
-
}
|
|
64
|
-
|
|
65
|
-
function replaceBoldItalic(text: string, regex: RegExp) {
|
|
66
|
-
return text.replace(
|
|
67
|
-
regex,
|
|
68
|
-
(
|
|
69
|
-
match: string,
|
|
70
|
-
markdownOpen: string,
|
|
71
|
-
textInsideMarkdown: string,
|
|
72
|
-
markdownClose: string
|
|
73
|
-
) => {
|
|
74
|
-
if (match.startsWith(markdownOpen) && match.endsWith(markdownClose)) {
|
|
75
|
-
return `${MARKDOWN_NORMALIZED_BOLD_ITALIC_OPEN}${textInsideMarkdown}${MARKDOWN_NORMALIZED_BOLD_ITALIC_CLOSE}`
|
|
76
|
-
}
|
|
77
|
-
return match
|
|
78
|
-
}
|
|
79
|
-
)
|
|
80
|
-
}
|
|
81
|
-
|
|
82
|
-
function replaceAllOccurrences(
|
|
83
|
-
text: string,
|
|
84
|
-
searchValue: string,
|
|
85
|
-
replaceValue: string
|
|
86
|
-
) {
|
|
87
|
-
return text.split(searchValue).join(replaceValue)
|
|
88
|
-
}
|