@botonic/react 0.30.3 → 0.30.5-alpha.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/lib/cjs/components/button.d.ts +11 -10
- package/lib/cjs/components/button.js +39 -25
- package/lib/cjs/components/button.js.map +1 -1
- package/lib/cjs/components/index-types.d.ts +4 -15
- 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/contexts.js +3 -0
- package/lib/cjs/contexts.js.map +1 -1
- package/lib/cjs/index-types.d.ts +5 -3
- package/lib/cjs/webchat/cover-component/index.d.ts +6 -0
- package/lib/cjs/webchat/cover-component/index.js +21 -0
- package/lib/cjs/webchat/cover-component/index.js.map +1 -0
- package/lib/cjs/webchat/hooks/use-webchat.d.ts +3 -3
- package/lib/cjs/webchat/hooks/use-webchat.js.map +1 -1
- package/lib/cjs/webchat/webchat.js +8 -15
- package/lib/cjs/webchat/webchat.js.map +1 -1
- package/lib/esm/components/button.d.ts +11 -10
- package/lib/esm/components/button.js +39 -25
- package/lib/esm/components/button.js.map +1 -1
- package/lib/esm/components/index-types.d.ts +4 -15
- 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/contexts.js +3 -0
- package/lib/esm/contexts.js.map +1 -1
- package/lib/esm/index-types.d.ts +5 -3
- package/lib/esm/webchat/cover-component/index.d.ts +6 -0
- package/lib/esm/webchat/cover-component/index.js +17 -0
- package/lib/esm/webchat/cover-component/index.js.map +1 -0
- package/lib/esm/webchat/hooks/use-webchat.d.ts +3 -3
- package/lib/esm/webchat/hooks/use-webchat.js.map +1 -1
- package/lib/esm/webchat/webchat.js +8 -15
- package/lib/esm/webchat/webchat.js.map +1 -1
- package/package.json +1 -1
- package/src/components/{button.jsx → button.tsx} +49 -20
- package/src/components/index-types.ts +4 -16
- 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/contexts.tsx +3 -0
- package/src/index-types.ts +7 -3
- package/src/webchat/cover-component/index.tsx +33 -0
- package/src/webchat/hooks/use-webchat.ts +2 -2
- package/src/webchat/webchat.jsx +42 -46
- 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
package/src/webchat/webchat.jsx
CHANGED
|
@@ -44,6 +44,7 @@ import {
|
|
|
44
44
|
import { ChatArea } from './chat-area'
|
|
45
45
|
import { OpenedPersistentMenu } from './components/opened-persistent-menu'
|
|
46
46
|
import { BotonicContainerId } from './constants'
|
|
47
|
+
import { CoverComponent } from './cover-component'
|
|
47
48
|
import { WebchatHeader } from './header'
|
|
48
49
|
import {
|
|
49
50
|
useComponentWillMount,
|
|
@@ -407,37 +408,17 @@ export const Webchat = forwardRef((props, ref) => {
|
|
|
407
408
|
(props.coverComponent.component || props.coverComponent)
|
|
408
409
|
)
|
|
409
410
|
}
|
|
410
|
-
const
|
|
411
|
-
|
|
412
|
-
const closeCoverComponent = () => {
|
|
413
|
-
toggleCoverComponent(false)
|
|
414
|
-
}
|
|
411
|
+
const coverComponent = getCoverComponent()
|
|
415
412
|
|
|
416
413
|
useEffect(() => {
|
|
417
|
-
if (!
|
|
414
|
+
if (!coverComponent) return
|
|
418
415
|
if (
|
|
419
416
|
!botonicState ||
|
|
420
|
-
(botonicState.messages && botonicState.messages.length
|
|
417
|
+
(botonicState.messages && botonicState.messages.length === 0)
|
|
421
418
|
)
|
|
422
419
|
toggleCoverComponent(true)
|
|
423
420
|
}, [])
|
|
424
421
|
|
|
425
|
-
const coverComponent = () => {
|
|
426
|
-
const coverComponentProps = getThemeProperty(
|
|
427
|
-
WEBCHAT.CUSTOM_PROPERTIES.coverComponentProps,
|
|
428
|
-
props.coverComponent && props.coverComponent.props
|
|
429
|
-
)
|
|
430
|
-
|
|
431
|
-
if (CoverComponent && webchatState.isCoverComponentOpen)
|
|
432
|
-
return (
|
|
433
|
-
<CoverComponent
|
|
434
|
-
closeComponent={closeCoverComponent}
|
|
435
|
-
{...coverComponentProps}
|
|
436
|
-
/>
|
|
437
|
-
)
|
|
438
|
-
return null
|
|
439
|
-
}
|
|
440
|
-
|
|
441
422
|
const messageComponentFromInput = input => {
|
|
442
423
|
let messageComponent = null
|
|
443
424
|
if (isText(input)) {
|
|
@@ -708,6 +689,7 @@ export const Webchat = forwardRef((props, ref) => {
|
|
|
708
689
|
toggleWebchat,
|
|
709
690
|
toggleEmojiPicker,
|
|
710
691
|
togglePersistentMenu,
|
|
692
|
+
toggleCoverComponent,
|
|
711
693
|
updateLatestInput,
|
|
712
694
|
updateMessage,
|
|
713
695
|
updateReplies,
|
|
@@ -744,36 +726,50 @@ export const Webchat = forwardRef((props, ref) => {
|
|
|
744
726
|
toggleWebchat(false)
|
|
745
727
|
}}
|
|
746
728
|
/>
|
|
747
|
-
{webchatState.error.message && (
|
|
748
|
-
<ErrorMessageContainer>
|
|
749
|
-
<ErrorMessage>{webchatState.error.message}</ErrorMessage>
|
|
750
|
-
</ErrorMessageContainer>
|
|
751
|
-
)}
|
|
752
|
-
<ChatArea />
|
|
753
729
|
|
|
754
|
-
{webchatState.
|
|
755
|
-
<
|
|
756
|
-
|
|
757
|
-
|
|
758
|
-
<InputPanel
|
|
759
|
-
persistentMenu={props.persistentMenu}
|
|
760
|
-
enableEmojiPicker={props.enableEmojiPicker}
|
|
761
|
-
enableAttachments={props.enableAttachments}
|
|
762
|
-
handleAttachment={handleAttachment}
|
|
763
|
-
textareaRef={textareaRef}
|
|
764
|
-
host={host}
|
|
765
|
-
onUserInput={props.onUserInput}
|
|
730
|
+
{webchatState.isCoverComponentOpen ? (
|
|
731
|
+
<CoverComponent
|
|
732
|
+
component={coverComponent}
|
|
733
|
+
componentProps={props.coverComponent.props}
|
|
766
734
|
/>
|
|
735
|
+
) : (
|
|
736
|
+
<>
|
|
737
|
+
{webchatState.error.message && (
|
|
738
|
+
<ErrorMessageContainer>
|
|
739
|
+
<ErrorMessage>{webchatState.error.message}</ErrorMessage>
|
|
740
|
+
</ErrorMessageContainer>
|
|
741
|
+
)}
|
|
742
|
+
|
|
743
|
+
<ChatArea />
|
|
744
|
+
|
|
745
|
+
{webchatState.isPersistentMenuOpen && (
|
|
746
|
+
<DarkenBackground component={persistentMenu()} />
|
|
747
|
+
)}
|
|
748
|
+
|
|
749
|
+
{!webchatState.handoff && userInputEnabled && (
|
|
750
|
+
<InputPanel
|
|
751
|
+
persistentMenu={props.persistentMenu}
|
|
752
|
+
enableEmojiPicker={props.enableEmojiPicker}
|
|
753
|
+
enableAttachments={props.enableAttachments}
|
|
754
|
+
handleAttachment={handleAttachment}
|
|
755
|
+
textareaRef={textareaRef}
|
|
756
|
+
host={host}
|
|
757
|
+
onUserInput={props.onUserInput}
|
|
758
|
+
/>
|
|
759
|
+
)}
|
|
760
|
+
|
|
761
|
+
{webchatState.webview && webchatWebview()}
|
|
762
|
+
|
|
763
|
+
{webchatState.isCustomComponentRendered &&
|
|
764
|
+
customComponent &&
|
|
765
|
+
_renderCustomComponent()}
|
|
766
|
+
</>
|
|
767
767
|
)}
|
|
768
|
-
{webchatState.webview && webchatWebview()}
|
|
769
|
-
{webchatState.isCoverComponentOpen && coverComponent()}
|
|
770
|
-
{webchatState.isCustomComponentRendered &&
|
|
771
|
-
customComponent &&
|
|
772
|
-
_renderCustomComponent()}
|
|
773
768
|
</StyledWebchat>
|
|
774
769
|
)}
|
|
775
770
|
</WebchatContext.Provider>
|
|
776
771
|
)
|
|
772
|
+
|
|
777
773
|
return props.shadowDOM ? (
|
|
778
774
|
<StyleSheetManager target={host}>{WebchatComponent}</StyleSheetManager>
|
|
779
775
|
) : (
|
|
@@ -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
|
-
}
|