@bikdotai/bik-component-library 0.0.16 → 0.0.19
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/dist/cjs/assets/icons/RedirectToNew.svg.js +1 -0
- package/dist/cjs/assets/icons/arrow_left.svg.js +1 -0
- package/dist/cjs/assets/icons/filePdf.svg.js +1 -0
- package/dist/cjs/assets/icons/halfRectangle.svg.js +1 -0
- package/dist/cjs/assets/icons/image.svg.js +1 -0
- package/dist/cjs/assets/icons/more_vertical.svg.js +1 -0
- package/dist/cjs/assets/icons/phone.svg.js +1 -0
- package/dist/cjs/assets/icons/union.svg.js +1 -0
- package/dist/cjs/assets/icons/user_icon.svg.js +1 -0
- package/dist/cjs/assets/icons/vertical_dots.svg.js +1 -0
- package/dist/cjs/assets/icons/videoRecorder.svg.js +1 -0
- package/dist/cjs/components/TypographyStyle.d.ts +2 -0
- package/dist/cjs/components/TypographyStyle.js +62 -50
- package/dist/cjs/components/dropdown/Common.styled.js +12 -0
- package/dist/cjs/components/dropdown/UnChildDropdown/UnChildDropdown.js +1 -0
- package/dist/cjs/components/modals/styledModal.js +1 -1
- package/dist/cjs/components/template-preview/EmailTemplatePreview.styled.d.ts +8 -0
- package/dist/cjs/components/template-preview/EmailTemplatePreview.styled.js +29 -0
- package/dist/cjs/components/template-preview/EmailTemplateThumbnailPreview.d.ts +13 -0
- package/dist/cjs/components/template-preview/EmailTemplateThumbnailPreview.js +1 -0
- package/dist/cjs/components/template-preview/SMS/SMSBubble.d.ts +9 -0
- package/dist/cjs/components/template-preview/SMS/SMSBubble.js +12 -0
- package/dist/cjs/components/template-preview/SmsTemplatePreview.d.ts +12 -0
- package/dist/cjs/components/template-preview/SmsTemplatePreview.js +1 -0
- package/dist/cjs/components/template-preview/SmsTemplatePreview.styled.d.ts +13 -0
- package/dist/cjs/components/template-preview/SmsTemplatePreview.styled.js +46 -0
- package/dist/cjs/components/template-preview/TemplatePreview.d.ts +18 -0
- package/dist/cjs/components/template-preview/TemplatePreview.js +1 -0
- package/dist/cjs/components/template-preview/WhatsApp/ChatBtn.d.ts +9 -0
- package/dist/cjs/components/template-preview/WhatsApp/ChatBtn.js +1 -0
- package/dist/cjs/components/template-preview/WhatsApp/ChatHeader.d.ts +3 -0
- package/dist/cjs/components/template-preview/WhatsApp/ChatHeader.js +1 -0
- package/dist/cjs/components/template-preview/WhatsApp/ChatHeader.style.d.ts +5 -0
- package/dist/cjs/components/template-preview/WhatsApp/ChatHeader.style.js +37 -0
- package/dist/cjs/components/template-preview/WhatsApp/ChatUI.d.ts +4 -0
- package/dist/cjs/components/template-preview/WhatsApp/ChatUI.js +7 -0
- package/dist/cjs/components/template-preview/WhatsApp/ChatUI.style.d.ts +7 -0
- package/dist/cjs/components/template-preview/WhatsApp/ChatUI.style.js +52 -0
- package/dist/cjs/components/template-preview/WhatsApp/MediaCard.d.ts +14 -0
- package/dist/cjs/components/template-preview/WhatsApp/MediaCard.js +1 -0
- package/dist/cjs/components/template-preview/WhatsApp/RenderTemplateWithVariable.d.ts +7 -0
- package/dist/cjs/components/template-preview/WhatsApp/RenderTemplateWithVariable.js +4 -0
- package/dist/cjs/components/template-preview/WhatsApp/WhatsAppLikePreview.d.ts +3 -0
- package/dist/cjs/components/template-preview/WhatsApp/WhatsAppLikePreview.js +12 -0
- package/dist/cjs/components/template-preview/WhatsAppTemplatePreview.d.ts +13 -0
- package/dist/cjs/components/template-preview/WhatsAppTemplatePreview.js +1 -0
- package/dist/cjs/components/template-preview/constants/TemplateConstants.d.ts +23 -0
- package/dist/cjs/components/template-preview/constants/TemplateConstants.js +1 -0
- package/dist/cjs/components/template-preview/constants/regexPatterns.d.ts +11 -0
- package/dist/cjs/components/template-preview/constants/regexPatterns.js +1 -0
- package/dist/cjs/components/template-preview/helpers/SmsTemplateHelper.d.ts +2 -0
- package/dist/cjs/components/template-preview/helpers/SmsTemplateHelper.js +1 -0
- package/dist/cjs/components/template-preview/helpers/TemplateCreatorHelper.d.ts +16 -0
- package/dist/cjs/components/template-preview/helpers/TemplateCreatorHelper.js +1 -0
- package/dist/cjs/components/template-preview/helpers/WhatsAppFormatToHTML.d.ts +8 -0
- package/dist/cjs/components/template-preview/helpers/WhatsAppFormatToHTML.js +1 -0
- package/dist/cjs/components/template-preview/index.d.ts +6 -0
- package/dist/cjs/components/template-preview/models/Channels.d.ts +8 -0
- package/dist/cjs/components/template-preview/models/Channels.js +1 -0
- package/dist/cjs/components/template-preview/models/EmailTemplate.d.ts +38 -0
- package/dist/cjs/components/template-preview/models/SmsTemplate.d.ts +35 -0
- package/dist/cjs/components/template-preview/models/TemplateMeta.d.ts +42 -0
- package/dist/cjs/components/template-preview/models/TemplateMeta.js +1 -0
- package/dist/cjs/components/template-preview/models/WhatsAppTemplate.d.ts +180 -0
- package/dist/cjs/components/template-preview/utils/TemplateHelperUtils.d.ts +6 -0
- package/dist/cjs/components/template-preview/utils/TemplateHelperUtils.js +1 -0
- package/dist/cjs/components/template-preview/utils/getPreviewPropLen.d.ts +2 -0
- package/dist/cjs/components/template-preview/utils/getPreviewPropLen.js +1 -0
- package/dist/cjs/constants/Theme.d.ts +6 -0
- package/dist/cjs/constants/Theme.js +1 -1
- package/dist/cjs/index.d.ts +4 -0
- package/dist/cjs/index.js +1 -1
- package/dist/cjs/utils/StringUtils.d.ts +10 -0
- package/dist/cjs/utils/StringUtils.js +1 -0
- package/dist/esm/assets/icons/RedirectToNew.svg.js +1 -0
- package/dist/esm/assets/icons/arrow_left.svg.js +1 -0
- package/dist/esm/assets/icons/filePdf.svg.js +1 -0
- package/dist/esm/assets/icons/halfRectangle.svg.js +1 -0
- package/dist/esm/assets/icons/image.svg.js +1 -0
- package/dist/esm/assets/icons/more_vertical.svg.js +1 -0
- package/dist/esm/assets/icons/phone.svg.js +1 -0
- package/dist/esm/assets/icons/union.svg.js +1 -0
- package/dist/esm/assets/icons/user_icon.svg.js +1 -0
- package/dist/esm/assets/icons/vertical_dots.svg.js +1 -0
- package/dist/esm/assets/icons/videoRecorder.svg.js +1 -0
- package/dist/esm/components/TypographyStyle.d.ts +2 -0
- package/dist/esm/components/TypographyStyle.js +60 -48
- package/dist/esm/components/dropdown/Common.styled.js +12 -0
- package/dist/esm/components/dropdown/UnChildDropdown/UnChildDropdown.js +1 -0
- package/dist/esm/components/modals/styledModal.js +1 -1
- package/dist/esm/components/template-preview/EmailTemplatePreview.styled.d.ts +8 -0
- package/dist/esm/components/template-preview/EmailTemplatePreview.styled.js +29 -0
- package/dist/esm/components/template-preview/EmailTemplateThumbnailPreview.d.ts +13 -0
- package/dist/esm/components/template-preview/EmailTemplateThumbnailPreview.js +1 -0
- package/dist/esm/components/template-preview/SMS/SMSBubble.d.ts +9 -0
- package/dist/esm/components/template-preview/SMS/SMSBubble.js +12 -0
- package/dist/esm/components/template-preview/SmsTemplatePreview.d.ts +12 -0
- package/dist/esm/components/template-preview/SmsTemplatePreview.js +1 -0
- package/dist/esm/components/template-preview/SmsTemplatePreview.styled.d.ts +13 -0
- package/dist/esm/components/template-preview/SmsTemplatePreview.styled.js +46 -0
- package/dist/esm/components/template-preview/TemplatePreview.d.ts +18 -0
- package/dist/esm/components/template-preview/TemplatePreview.js +1 -0
- package/dist/esm/components/template-preview/WhatsApp/ChatBtn.d.ts +9 -0
- package/dist/esm/components/template-preview/WhatsApp/ChatBtn.js +1 -0
- package/dist/esm/components/template-preview/WhatsApp/ChatHeader.d.ts +3 -0
- package/dist/esm/components/template-preview/WhatsApp/ChatHeader.js +1 -0
- package/dist/esm/components/template-preview/WhatsApp/ChatHeader.style.d.ts +5 -0
- package/dist/esm/components/template-preview/WhatsApp/ChatHeader.style.js +37 -0
- package/dist/esm/components/template-preview/WhatsApp/ChatUI.d.ts +4 -0
- package/dist/esm/components/template-preview/WhatsApp/ChatUI.js +7 -0
- package/dist/esm/components/template-preview/WhatsApp/ChatUI.style.d.ts +7 -0
- package/dist/esm/components/template-preview/WhatsApp/ChatUI.style.js +52 -0
- package/dist/esm/components/template-preview/WhatsApp/MediaCard.d.ts +14 -0
- package/dist/esm/components/template-preview/WhatsApp/MediaCard.js +1 -0
- package/dist/esm/components/template-preview/WhatsApp/RenderTemplateWithVariable.d.ts +7 -0
- package/dist/esm/components/template-preview/WhatsApp/RenderTemplateWithVariable.js +4 -0
- package/dist/esm/components/template-preview/WhatsApp/WhatsAppLikePreview.d.ts +3 -0
- package/dist/esm/components/template-preview/WhatsApp/WhatsAppLikePreview.js +12 -0
- package/dist/esm/components/template-preview/WhatsAppTemplatePreview.d.ts +13 -0
- package/dist/esm/components/template-preview/WhatsAppTemplatePreview.js +1 -0
- package/dist/esm/components/template-preview/constants/TemplateConstants.d.ts +23 -0
- package/dist/esm/components/template-preview/constants/TemplateConstants.js +1 -0
- package/dist/esm/components/template-preview/constants/regexPatterns.d.ts +11 -0
- package/dist/esm/components/template-preview/constants/regexPatterns.js +1 -0
- package/dist/esm/components/template-preview/helpers/SmsTemplateHelper.d.ts +2 -0
- package/dist/esm/components/template-preview/helpers/SmsTemplateHelper.js +1 -0
- package/dist/esm/components/template-preview/helpers/TemplateCreatorHelper.d.ts +16 -0
- package/dist/esm/components/template-preview/helpers/TemplateCreatorHelper.js +1 -0
- package/dist/esm/components/template-preview/helpers/WhatsAppFormatToHTML.d.ts +8 -0
- package/dist/esm/components/template-preview/helpers/WhatsAppFormatToHTML.js +1 -0
- package/dist/esm/components/template-preview/index.d.ts +6 -0
- package/dist/esm/components/template-preview/models/Channels.d.ts +8 -0
- package/dist/esm/components/template-preview/models/Channels.js +1 -0
- package/dist/esm/components/template-preview/models/EmailTemplate.d.ts +38 -0
- package/dist/esm/components/template-preview/models/SmsTemplate.d.ts +35 -0
- package/dist/esm/components/template-preview/models/TemplateMeta.d.ts +42 -0
- package/dist/esm/components/template-preview/models/TemplateMeta.js +1 -0
- package/dist/esm/components/template-preview/models/WhatsAppTemplate.d.ts +180 -0
- package/dist/esm/components/template-preview/utils/TemplateHelperUtils.d.ts +6 -0
- package/dist/esm/components/template-preview/utils/TemplateHelperUtils.js +1 -0
- package/dist/esm/components/template-preview/utils/getPreviewPropLen.d.ts +2 -0
- package/dist/esm/components/template-preview/utils/getPreviewPropLen.js +1 -0
- package/dist/esm/constants/Theme.d.ts +6 -0
- package/dist/esm/constants/Theme.js +1 -1
- package/dist/esm/index.d.ts +4 -0
- package/dist/esm/index.js +1 -1
- package/dist/esm/utils/StringUtils.d.ts +10 -0
- package/dist/esm/utils/StringUtils.js +1 -0
- package/package.json +1 -1
|
@@ -0,0 +1,37 @@
|
|
|
1
|
+
"use strict";Object.defineProperty(exports,"__esModule",{value:!0});var e=require("styled-components"),t=require("../../../constants/Theme.js");function n(e){return e&&"object"==typeof e&&"default"in e?e:{default:e}}var i=n(e);const o=i.default.div`
|
|
2
|
+
height: 50px;
|
|
3
|
+
background-color: #008069;
|
|
4
|
+
position: sticky;
|
|
5
|
+
top: 0px;
|
|
6
|
+
z-index: 200;
|
|
7
|
+
padding: 6px 4px;
|
|
8
|
+
display: flex;
|
|
9
|
+
align-items: center;
|
|
10
|
+
justify-content: space-between;
|
|
11
|
+
gap: 5px;
|
|
12
|
+
`,r=i.default.div`
|
|
13
|
+
display: flex;
|
|
14
|
+
align-items: center;
|
|
15
|
+
gap: 5px;
|
|
16
|
+
`,a=i.default.div`
|
|
17
|
+
height: 27px;
|
|
18
|
+
width: 27px;
|
|
19
|
+
border-radius: 15px;
|
|
20
|
+
background-color: #d1d8db;
|
|
21
|
+
display: flex;
|
|
22
|
+
justify-content: center;
|
|
23
|
+
align-items: center;
|
|
24
|
+
gap: 6px;
|
|
25
|
+
`,p=i.default.div`
|
|
26
|
+
display: flex;
|
|
27
|
+
flex-direction: column;
|
|
28
|
+
justify-content: space-between;
|
|
29
|
+
`,s=i.default.p`
|
|
30
|
+
font-family: 'Inter';
|
|
31
|
+
font-style: normal;
|
|
32
|
+
font-weight: 400;
|
|
33
|
+
font-size: 8px;
|
|
34
|
+
line-height: 11px;
|
|
35
|
+
color: ${t.COLORS.content.primaryInverse};
|
|
36
|
+
margin-bottom: 0px;
|
|
37
|
+
`;exports.HeaderContainer=o,exports.IconContainer=a,exports.LeftContainer=r,exports.SubTitle=s,exports.TitleContainer=p;
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
"use strict";Object.defineProperty(exports,"__esModule",{value:!0});var e=require("react/jsx-runtime"),t=require("../../../assets/icons/halfRectangle.svg.js"),r=require("../../../assets/icons/phone.svg.js"),s=require("../../../assets/icons/RedirectToNew.svg.js"),a=require("react"),i=require("styled-components"),o=require("../../TypographyStyle.js"),n=require("../../../constants/Theme.js"),d=require("../helpers/WhatsAppFormatToHTML.js"),l=require("../models/TemplateMeta.js"),h=require("./ChatBtn.js"),p=require("./ChatUI.style.js"),c=require("./MediaCard.js"),x=require("./RenderTemplateWithVariable.js");function T(e){return e&&"object"==typeof e&&"default"in e?e:{default:e}}const u=T(i).default.div`
|
|
2
|
+
position: absolute;
|
|
3
|
+
width: 8px;
|
|
4
|
+
height: 8px;
|
|
5
|
+
left: -8px;
|
|
6
|
+
top: -9px;
|
|
7
|
+
`;exports.default=i=>{const{bodyText:T,footerText:m,headerMediaType:j,headerText:y,headerAssetLink:S,headerAssetName:f,quickReplybtn:g,ctaBtn:E,actionTypes:q,textType:v,extras:C,showHeader:A,imagePreviewStyles:N,size:b}=i,w=new d.WhatsAppFormatToHTML,M=a.useMemo((()=>({color:n.COLORS.content.primary,margin:12,fontSize:A?n.FONTS.caption.fontSize:n.FONTS.bodySecondary.fontSize,fontWeight:n.FONTS.bodySecondary.fontWeight,maxWidth:"100%",whiteSpace:"pre-wrap",marginBottom:0,marginTop:8,wordBreak:"break-word"})),[]);return e.jsxs(p.Container,{children:[e.jsx(u,{children:e.jsx(t.default,{color:"white",height:8,width:8})}),j===l.HEADER_TYPES.TEXT?e.jsx(x.default,{bold:!0,text:y}):j!==l.HEADER_TYPES.NONE?e.jsx(c.MediaCard,{headerAssetLink:S,headerAssetName:f,mediaType:j,imagePreviewStyles:j===l.HEADER_TYPES.IMAGE?N:{}}):e.jsx(e.Fragment,{}),!!T&&e.jsx(e.Fragment,{children:"html"===v?e.jsx("div",{className:"richTextEditor",style:M,dangerouslySetInnerHTML:{__html:w.convertToHTML(T)}}):e.jsx(o.BodySecondary,{children:T})}),e.jsxs(p.FooterWrapper,{children:[e.jsx(p.TimeStamp,Object.assign({style:{flex:1}},{children:m})),e.jsx(p.TimeStamp,{children:"16:48"})]}),q===l.ACTIONS_TYPES.QUICK_REPLY?e.jsx("div",{children:null==g?void 0:g.map(((t,r)=>e.jsx(h.ChatBtn,{text:t.text},r)))}):q===l.ACTIONS_TYPES.CTA_BTN?e.jsx("div",{children:null==E?void 0:E.map(((t,a)=>e.jsx(h.ChatBtn,{textTypography:A?o.Caption:o.BodySecondary,extraContent:C?t.extra:void 0,placeholder:t.placeholder,text:t.text,Icon:"phoneNumber"===t.type?r.default:s.default,size:b},a)))}):e.jsx(e.Fragment,{})]})};
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
export declare const Container: import("styled-components").StyledComponent<"div", any, {}, never>;
|
|
2
|
+
export declare const TimeStamp: import("styled-components").StyledComponent<"div", any, {}, never>;
|
|
3
|
+
export declare const MediaContainer: import("styled-components").StyledComponent<"div", any, {}, never>;
|
|
4
|
+
export declare const ChatBtnContainer: import("styled-components").StyledComponent<"div", any, {}, never>;
|
|
5
|
+
export declare const FooterWrapper: import("styled-components").StyledComponent<"div", any, {}, never>;
|
|
6
|
+
export declare const MediaNameAbsWrapper: import("styled-components").StyledComponent<"div", any, {}, never>;
|
|
7
|
+
export declare const DownloadMediaIconHolder: import("styled-components").StyledComponent<"div", any, {}, never>;
|
|
@@ -0,0 +1,52 @@
|
|
|
1
|
+
"use strict";Object.defineProperty(exports,"__esModule",{value:!0});var e=require("styled-components"),t=require("../../TypographyStyle.js"),r=require("../../../constants/Theme.js");function o(e){return e&&"object"==typeof e&&"default"in e?e:{default:e}}var i=o(e);const a=i.default.div`
|
|
2
|
+
background: ${r.COLORS.surface.standard};
|
|
3
|
+
box-shadow: 0px 2px 8px rgba(0, 0, 0, 0.12);
|
|
4
|
+
border-top-left-radius: 0px;
|
|
5
|
+
border-top-right-radius: 12px;
|
|
6
|
+
border-bottom-right-radius: 12px;
|
|
7
|
+
border-bottom-left-radius: 12px;
|
|
8
|
+
position: relative;
|
|
9
|
+
padding: 8px 0px;
|
|
10
|
+
`,n=i.default(t.Caption)`
|
|
11
|
+
color: ${r.COLORS.content.secondary};
|
|
12
|
+
`,d=i.default.div`
|
|
13
|
+
border-radius: 8px;
|
|
14
|
+
display: flex;
|
|
15
|
+
flex-direction: column;
|
|
16
|
+
align-items: center;
|
|
17
|
+
justify-content: center;
|
|
18
|
+
min-height: 152px;
|
|
19
|
+
margin-bottom: 4px;
|
|
20
|
+
margin: 0px 8px;
|
|
21
|
+
`,p=i.default.div`
|
|
22
|
+
padding: 12px;
|
|
23
|
+
display: flex;
|
|
24
|
+
flex-direction: row;
|
|
25
|
+
justify-content: center;
|
|
26
|
+
align-items: center;
|
|
27
|
+
border-top: 1px solid ${r.COLORS.stroke.primary};
|
|
28
|
+
`,s=i.default.div`
|
|
29
|
+
display: flex;
|
|
30
|
+
|
|
31
|
+
flex-direction: row;
|
|
32
|
+
justify-content: space-between;
|
|
33
|
+
margin: 8px 12px;
|
|
34
|
+
`;i.default.div`
|
|
35
|
+
position: absolute;
|
|
36
|
+
bottom: -1px;
|
|
37
|
+
left: 0;
|
|
38
|
+
text-align: center;
|
|
39
|
+
width: 100%;
|
|
40
|
+
padding: 10px;
|
|
41
|
+
align-items: center;
|
|
42
|
+
display: flex;
|
|
43
|
+
flex-direction: row;
|
|
44
|
+
justify-content: start;
|
|
45
|
+
background: ${r.COLORS.surface.hovered};
|
|
46
|
+
border-bottom-right-radius: 8px;
|
|
47
|
+
border-bottom-left-radius: 8px;
|
|
48
|
+
`,i.default.div`
|
|
49
|
+
position: absolute;
|
|
50
|
+
top: 16px;
|
|
51
|
+
right: 16px;
|
|
52
|
+
`,exports.ChatBtnContainer=p,exports.Container=a,exports.FooterWrapper=s,exports.MediaContainer=d,exports.TimeStamp=n;
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
import React from 'react';
|
|
2
|
+
import { CSSProperties } from 'styled-components';
|
|
3
|
+
import { HEADER_TYPES } from '../models/TemplateMeta';
|
|
4
|
+
export declare const NoMediaCard: React.FC<{
|
|
5
|
+
headerAssetLink?: string;
|
|
6
|
+
headerAssetName?: string;
|
|
7
|
+
mediaType?: HEADER_TYPES;
|
|
8
|
+
}>;
|
|
9
|
+
export declare const MediaCard: React.FC<{
|
|
10
|
+
headerAssetLink?: string;
|
|
11
|
+
headerAssetName?: string;
|
|
12
|
+
mediaType: HEADER_TYPES;
|
|
13
|
+
imagePreviewStyles?: CSSProperties;
|
|
14
|
+
}>;
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
"use strict";Object.defineProperty(exports,"__esModule",{value:!0});var e=require("react/jsx-runtime"),s=require("../../../assets/icons/filePdf.svg.js"),r=require("../../../assets/icons/image.svg.js"),t=require("../../../assets/icons/videoRecorder.svg.js"),a=require("../../TypographyStyle.js"),i=require("../../../constants/Theme.js"),n=require("../models/TemplateMeta.js"),d=require("./ChatUI.style.js");const o=o=>{let{headerAssetName:c,mediaType:l}=o;const j=l===n.HEADER_TYPES.IMAGE?r.default:l===n.HEADER_TYPES.VIDEO?t.default:s.default;return e.jsxs(d.MediaContainer,{children:[e.jsx(j,{height:40,width:40,color:i.COLORS.icon.placeholder}),!!c&&e.jsx(a.BodySecondary,Object.assign({style:{color:i.COLORS.content.secondary,marginTop:8}},{children:c}))]})};exports.MediaCard=s=>{let{headerAssetLink:r,headerAssetName:t,mediaType:a,imagePreviewStyles:i}=s;if(!r||a===n.HEADER_TYPES.DOCUMENT)return e.jsx(o,Object.assign({},{headerAssetLink:r,headerAssetName:t,mediaType:a}));const c={width:"100%",minHeight:"156px",borderRadius:8};return e.jsx(d.MediaContainer,{children:a===n.HEADER_TYPES.IMAGE?e.jsx("img",{alt:"Header displays here",style:Object.assign(Object.assign({},c),i),src:r}):a===n.HEADER_TYPES.VIDEO?e.jsx("video",Object.assign({src:r,style:c,controls:!0},{children:e.jsx("track",{default:!0,kind:"captions",srcLang:"en",src:r})})):e.jsx(e.Fragment,{})})},exports.NoMediaCard=o;
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
/// <reference types="react" />
|
|
2
|
+
export interface RenderTemplateWithVariableInterface {
|
|
3
|
+
text?: string;
|
|
4
|
+
bold?: boolean;
|
|
5
|
+
}
|
|
6
|
+
declare const RenderTemplateWithVariable: (props: RenderTemplateWithVariableInterface) => JSX.Element;
|
|
7
|
+
export default RenderTemplateWithVariable;
|
|
@@ -0,0 +1,4 @@
|
|
|
1
|
+
"use strict";Object.defineProperty(exports,"__esModule",{value:!0});var e=require("react/jsx-runtime"),t=require("styled-components"),r=require("../../TypographyStyle.js"),n=require("../../../constants/Theme.js"),s=require("../constants/regexPatterns.js");function a(e){return e&&"object"==typeof e&&"default"in e?e:{default:e}}const l=a(t).default.div`
|
|
2
|
+
padding: 8px 12px 0px;
|
|
3
|
+
/* display: inline; */
|
|
4
|
+
`;exports.default=t=>{const{text:a,bold:i}=t,o=null==a?void 0:a.match(s.templateVariablePattern),d=i?{fontWeight:"600"}:{};return a?e.jsx(l,{children:a.split(s.templateVariablePattern).map(((t,s)=>e.jsxs(e.Fragment,{children:[e.jsx(r.BodyRegular,Object.assign({style:d},{children:t})),!!(null==o?void 0:o[s])&&e.jsx(r.BodyRegular,Object.assign({style:Object.assign({color:n.COLORS.content.brand},d)},{children:null==o?void 0:o[s]}))]})))}):e.jsx(e.Fragment,{})};
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
"use strict";Object.defineProperty(exports,"__esModule",{value:!0});var e=require("react/jsx-runtime"),r=require("styled-components"),t=require("../../TypographyStyle.js"),s=require("../../../constants/Theme.js"),a=require("../utils/getPreviewPropLen.js"),i=require("./ChatHeader.js"),o=require("./ChatUI.js");function d(e){return e&&"object"==typeof e&&"default"in e?e:{default:e}}var n=d(r);const p=n.default.div`
|
|
2
|
+
background-image: url('https://firebasestorage.googleapis.com/v0/b/bikayi-chat.appspot.com/o/images-uid%2F341dba50-e84e-4457-b5b5-d9d8a0b95a73?alt=media&token=6fd32f23-8bb2-4980-bbee-bef39b38fd9f');
|
|
3
|
+
border: ${e=>e.showHeader?0:1}px solid
|
|
4
|
+
${s.COLORS.stroke.primary};
|
|
5
|
+
border-radius: 4px;
|
|
6
|
+
background-repeat: no-repeat;
|
|
7
|
+
background-position: center;
|
|
8
|
+
background-size: cover;
|
|
9
|
+
position: relative;
|
|
10
|
+
`,l=n.default(t.TitleRegular)`
|
|
11
|
+
color: ${s.COLORS.content.primary};
|
|
12
|
+
`;exports.WhatsappLikePreview=r=>3===a.getPreviewPropLen(r)?e.jsx(e.Fragment,{children:r.zeroStateComponent}):e.jsx(e.Fragment,{children:e.jsxs(p,Object.assign({style:r.containerStyle,showHeader:r.showHeader},{children:[r.showHeader&&e.jsx(i.default,{}),e.jsxs("div",Object.assign({style:{padding:"small"===r.size?"12px 32px 12px 12px":"16px 56px 12px 16px"}},{children:[!r.hidePreviewText&&e.jsx("div",Object.assign({style:{marginBottom:16}},{children:e.jsx(l,{children:"Preview"})})),e.jsx(o.default,Object.assign({showHeader:r.showHeader},r))]}))]}))});
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
import React, { ReactElement } from 'react';
|
|
2
|
+
import { CSSProperties } from 'styled-components';
|
|
3
|
+
import { WhatsAppTemplate } from './models/WhatsAppTemplate';
|
|
4
|
+
declare const WhatsappTemplatePreview: React.FC<{
|
|
5
|
+
template?: WhatsAppTemplate;
|
|
6
|
+
extras?: boolean;
|
|
7
|
+
containerStyle?: CSSProperties;
|
|
8
|
+
usePlaceHolderName?: boolean;
|
|
9
|
+
showHeader?: boolean;
|
|
10
|
+
zeroStateComponent?: ReactElement;
|
|
11
|
+
size?: 'small' | 'large';
|
|
12
|
+
}>;
|
|
13
|
+
export default WhatsappTemplatePreview;
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
"use strict";Object.defineProperty(exports,"__esModule",{value:!0});var e=require("react/jsx-runtime"),t=require("react"),l=require("./helpers/TemplateCreatorHelper.js"),i=require("./models/TemplateMeta.js"),n=require("./utils/TemplateHelperUtils.js"),r=require("./WhatsApp/WhatsAppLikePreview.js");exports.default=a=>{let{template:o,extras:d,containerStyle:s,usePlaceHolderName:u,showHeader:p,zeroStateComponent:v,size:h}=a;var x,c,m,b,T,y,B,w,k,j,N,q,H,L,P,f;const[A,S]=t.useState(),g=new l.TemplateCreatorHelper,C=new n.TemplateHelperUtils,F=[];return(null===(c=null===(x=null==A?void 0:A.ctaBtn)||void 0===x?void 0:x.phoneNumber)||void 0===c?void 0:c.isChecked)&&F.push({type:"phoneNumber",text:null!==(m=A.ctaBtn.phoneNumber.btnText)&&void 0!==m?m:"",extra:null!==(b=A.ctaBtn.phoneNumber.phoneNumber)&&void 0!==b?b:""}),(null===(y=null===(T=null==A?void 0:A.ctaBtn)||void 0===T?void 0:T.websiteLinkBtn)||void 0===y?void 0:y.isChecked)&&F.push({type:"website",text:null!==(B=A.ctaBtn.websiteLinkBtn.btnText)&&void 0!==B?B:"",extra:null!==(k=null===(w=A.ctaBtn.websiteLinkBtn)||void 0===w?void 0:w.linkOpens)&&void 0!==k?k:"",placeholder:null!==(j=A.ctaBtn.websiteLinkBtn.placeholder)&&void 0!==j?j:""}),t.useEffect((()=>{o&&g.parseUITemplateFromDBFormat(o).then((e=>{S(Object.assign({},e))}))}),[o]),o?e.jsx(r.WhatsappLikePreview,{showHeader:p,containerPadding:"large"===h?"16px 56px 12px 16px":"12px 56px 12px 12px",containerStyle:s,textType:"html",bodyText:C.whatsappOnlyFillVariablesValueInBodyText(null!==(N=null==A?void 0:A.bodyText)&&void 0!==N?N:"",null!==(q=null==A?void 0:A.bodyVariables)&&void 0!==q?q:[],u),footerText:null==A?void 0:A.footerText,headerMediaType:(null==A?void 0:A.headerType)||i.HEADER_TYPES.NONE,headerText:C.fillVariablesValInBodyText(null!==(H=null==A?void 0:A.headerText)&&void 0!==H?H:"",null!==(L=null==A?void 0:A.headerVariables)&&void 0!==L?L:[],u),headerAssetLink:null!==(P=null==A?void 0:A.headerAssetLink)&&void 0!==P?P:"",headerAssetName:null!==(f=null==A?void 0:A.headerAssetName)&&void 0!==f?f:"",quickReplybtn:null==A?void 0:A.quickReply,ctaBtn:F,actionTypes:null==A?void 0:A.actionsType,extras:d,hidePreviewText:!0,imagePreviewStyles:{objectFit:"cover"},zeroStateComponent:null!=v?v:e.jsx(e.Fragment,{children:" "})}):e.jsx(e.Fragment,{children:v})};
|
|
@@ -0,0 +1,23 @@
|
|
|
1
|
+
export declare const CREATE_TEMPLATE_DOM_IDS: {
|
|
2
|
+
name: string;
|
|
3
|
+
header: string;
|
|
4
|
+
body: string;
|
|
5
|
+
actionButtons: string;
|
|
6
|
+
footer: string;
|
|
7
|
+
};
|
|
8
|
+
export declare const REQUIRED_FIELD = "Required field";
|
|
9
|
+
export declare const HEADER_LEN_ERROR = "Maximum 60 characters are allowed";
|
|
10
|
+
export declare const NAME_LEN_ERROR = "Maximum 512 characters allowed";
|
|
11
|
+
export declare const NO_SPECIAL_CHAR = "No special characters allowed";
|
|
12
|
+
export declare const BODY_LEN_ERROR = "Maximum 1,024 characters are allowed";
|
|
13
|
+
export declare const QUICK_REPLY_LEN_ERROR = "Maximum 20 characters are allowed";
|
|
14
|
+
export declare const QUICK_REPLY_NAME_ERROR = "Buttons with same name are not allowed";
|
|
15
|
+
export declare const VALID_PHONE_NUMBER = "Please enter a valid 10-digit phone number";
|
|
16
|
+
export declare const BUTTON_EMOJI_ERROR = "Emojis are not allowed in button";
|
|
17
|
+
export declare const HEADER_ASSET_LINK_ERROR = "Please attach the required media";
|
|
18
|
+
export declare const ONE_VAR_ALLOWED = "Only one variable allowed in text header";
|
|
19
|
+
export declare const HEADER_TEXT_LEN_LIMIT = 60;
|
|
20
|
+
export declare const NAME_LEN_LIMIT = 512;
|
|
21
|
+
export declare const BODY_TEXT_LEN_LIMIT = 1024;
|
|
22
|
+
export declare const QUICK_REPLY_BTN_TEXT_LIMIT = 25;
|
|
23
|
+
export declare const QUICK_REPLY_NAME_LEN_LIMIT = 20;
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
"use strict";Object.defineProperty(exports,"__esModule",{value:!0});const e="create-template",t={name:`${e}-name`,header:`${e}-header`,body:`${e}-body`,actionButtons:`${e}-action-buttons`,footer:`${e}-footer`};exports.BODY_LEN_ERROR="Maximum 1,024 characters are allowed",exports.BODY_TEXT_LEN_LIMIT=1024,exports.BUTTON_EMOJI_ERROR="Emojis are not allowed in button",exports.CREATE_TEMPLATE_DOM_IDS=t,exports.HEADER_ASSET_LINK_ERROR="Please attach the required media",exports.HEADER_LEN_ERROR="Maximum 60 characters are allowed",exports.HEADER_TEXT_LEN_LIMIT=60,exports.NAME_LEN_ERROR="Maximum 512 characters allowed",exports.NAME_LEN_LIMIT=512,exports.NO_SPECIAL_CHAR="No special characters allowed",exports.ONE_VAR_ALLOWED="Only one variable allowed in text header",exports.QUICK_REPLY_BTN_TEXT_LIMIT=25,exports.QUICK_REPLY_LEN_ERROR="Maximum 20 characters are allowed",exports.QUICK_REPLY_NAME_ERROR="Buttons with same name are not allowed",exports.QUICK_REPLY_NAME_LEN_LIMIT=20,exports.REQUIRED_FIELD="Required field",exports.VALID_PHONE_NUMBER="Please enter a valid 10-digit phone number";
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
export declare const lockedVarPattern: RegExp;
|
|
2
|
+
export declare const editableVarPattern: RegExp;
|
|
3
|
+
export declare const placeHolderNamePattern: RegExp;
|
|
4
|
+
export declare const globalVariablePattern: RegExp;
|
|
5
|
+
export declare const templateVariablePattern: RegExp;
|
|
6
|
+
export declare const globalHalfVariablePattern: RegExp;
|
|
7
|
+
export declare const specialCharPattern: RegExp;
|
|
8
|
+
export declare const variablePattern: RegExp;
|
|
9
|
+
export declare const variablePatternGlobal: RegExp;
|
|
10
|
+
export declare const previewLinkMDFormatPattern: RegExp;
|
|
11
|
+
export declare const editableBracketPattern: RegExp;
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
"use strict";Object.defineProperty(exports,"__esModule",{value:!0});const e=/\{\{[A-Za-z0-9 ]+\}\}/g,t=e;exports.editableBracketPattern=/[((|))]/,exports.editableVarPattern=/\((\(|\[)[A-Za-z0-9 ]+(\]|\))\)/,exports.globalHalfVariablePattern=/\{\{[a-zA-Z0-9]+(?=( |\}))(?!\}\})/g,exports.globalVariablePattern=e,exports.lockedVarPattern=/\[\[[A-Za-z0-9 ]+\]\]/,exports.placeHolderNamePattern=/(\[\[|\(\()(.*)(\)\)|\]\])/,exports.previewLinkMDFormatPattern=/\[([^[]+)\](\(.*\))/,exports.specialCharPattern=/[!@#$%^&*()_+\-=[\]{};':"\\|,.<>/?]+/,exports.templateVariablePattern=t,exports.variablePattern=/\{\{[A-Za-z0-9 _]+\}\}/,exports.variablePatternGlobal=/\{\{[A-Za-z0-9 _]+\}\}/g;
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
"use strict";Object.defineProperty(exports,"__esModule",{value:!0});var e=require("../../../constants/Theme.js"),n=require("../constants/regexPatterns.js");exports.renderVariableUIForPreview=function(r,a){let t=arguments.length>2&&void 0!==arguments[2]?arguments[2]:e.COLORS.content.brand;const l=(null==a?void 0:a.length)?null==a?void 0:a.map((e=>e.updatedValue)):r.match(n.variablePatternGlobal);return n.variablePatternGlobal.lastIndex=0,r.split(n.variablePattern).map(((e,n)=>{var r;return(null==l?void 0:l[n])?`${e}<span></span><span id="connectors_variable_${n+1}" style="color: ${t}; text-decoration: underline; word-break: break-word;">${null!==(r=null==l?void 0:l[n])&&void 0!==r?r:""}</span><span> </span>`:e})).join("")};
|
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
import { CreateTemplateType, WhatsAppTemplate } from '../models/WhatsAppTemplate';
|
|
2
|
+
export declare class TemplateCreatorHelper {
|
|
3
|
+
private parseDataFromHeaderComponent;
|
|
4
|
+
/**
|
|
5
|
+
* Check if current template state is ready for saving as a draft/submit-template or not
|
|
6
|
+
* @param state
|
|
7
|
+
*/
|
|
8
|
+
validateState(state: CreateTemplateType): {
|
|
9
|
+
status: 'invalid' | 'valid';
|
|
10
|
+
errors: CreateTemplateType['error'];
|
|
11
|
+
};
|
|
12
|
+
private parseBodyComponent;
|
|
13
|
+
private parseFooterComponent;
|
|
14
|
+
private parseButtonComponent;
|
|
15
|
+
parseUITemplateFromDBFormat(dbFormattedTemplate: WhatsAppTemplate, isDuplicate?: boolean): Promise<CreateTemplateType>;
|
|
16
|
+
}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
"use strict";Object.defineProperty(exports,"__esModule",{value:!0});var e=require("../../../_virtual/_tslib.js"),t=require("../../../constants/Theme.js"),n=require("../constants/regexPatterns.js"),i=require("../constants/TemplateConstants.js"),o=require("../models/TemplateMeta.js"),l=require("../utils/TemplateHelperUtils.js");exports.TemplateCreatorHelper=class{parseDataFromHeaderComponent(e){var t,n,i,l,a,d,r;const s={headerType:o.HEADER_TYPES.NONE,headerVariables:[]},v=null===(t=e.components)||void 0===t?void 0:t.find((e=>"HEADER"===e.type));if(v){s.headerType=v.format,s.headerText=v.text,s.headerAssetLink=null===(i=null===(n=v.example)||void 0===n?void 0:n.header_handle)||void 0===i?void 0:i[0];const t=null===(a=null===(l=v.example)||void 0===l?void 0:l.header_text)||void 0===a?void 0:a[0],o=null===(r=null===(d=e.mapping)||void 0===d?void 0:d.header)||void 0===r?void 0:r[0];if(t&&o){const e=/\(\(/.test(o),n={idx:0,variableVal:t,editable:e,editableDefaultValues:e?void 0:t,variableName:o};s.headerVariables=[n]}}return s}validateState(e){var t,a,d,r,s,v,E,u,T,p,_,c,R,m,b,h,I,L,N,y,B;const A=/\p{Extended_Pictographic}/u;let C="valid";const D={meta:{},ctaBtn:{phoneNumber:{btnText:"",link:""},websiteLink:{btnText:"",link:""}},quickReply:[null,null,null]},O=new l.TemplateHelperUtils;let x=!1;const P=e=>{var t;null===(t=document.getElementById(e))||void 0===t||t.scrollIntoView({behavior:"smooth",block:"nearest"})};if((null===(t=e.meta)||void 0===t?void 0:t.name)?e.meta.name.trim().length>i.NAME_LEN_LIMIT?(D.meta.name=i.NAME_LEN_ERROR,C="invalid"):n.specialCharPattern.test(e.meta.name.trim())&&(D.meta.name=i.NO_SPECIAL_CHAR,C="invalid"):(D.meta.name=i.REQUIRED_FIELD,C="invalid"),D.meta.name&&!x&&(P(i.CREATE_TEMPLATE_DOM_IDS.name),x=!0),e.headerType===o.HEADER_TYPES.TEXT){const t=null!==(d=null===(a=e.headerText)||void 0===a?void 0:a.trim())&&void 0!==d?d:"";if(t)if(t.length>i.HEADER_TEXT_LEN_LIMIT)D.header=i.HEADER_LEN_ERROR,C="invalid";else{const e=O.getTemplateVariablesFromState(t);e&&e.length>1&&(D.header=i.ONE_VAR_ALLOWED,C="invalid")}else D.header=i.REQUIRED_FIELD,C="invalid"}else e.headerType===o.HEADER_TYPES.DOCUMENT||e.headerType===o.HEADER_TYPES.IMAGE||(e.headerType,o.HEADER_TYPES.VIDEO);if(e.headerType!==o.HEADER_TYPES.DOCUMENT&&e.headerType!==o.HEADER_TYPES.IMAGE&&e.headerType!==o.HEADER_TYPES.VIDEO||e.headerAssetLink||(D.header=i.HEADER_ASSET_LINK_ERROR,C="invalid"),D.header&&!x&&(P(i.CREATE_TEMPLATE_DOM_IDS.header),x=!0),e.bodyText?e.bodyTextRaw&&(null===(r=e.bodyTextRaw)||void 0===r?void 0:r.trim().length)>i.BODY_TEXT_LEN_LIMIT&&(D.body=i.BODY_LEN_ERROR,C="invalid"):(D.body=i.REQUIRED_FIELD,C="invalid"),D.body&&!x&&(P(i.CREATE_TEMPLATE_DOM_IDS.body),x=!0),e.footerText&&e.footerText.length>i.HEADER_TEXT_LEN_LIMIT&&(D.footer=i.HEADER_LEN_ERROR,C="invalid"),(null==D?void 0:D.footer)&&!x&&(P(i.CREATE_TEMPLATE_DOM_IDS.footer),x=!0),e.actionsType===o.ACTIONS_TYPES.CTA_BTN){if(null===(v=null===(s=e.ctaBtn)||void 0===s?void 0:s.phoneNumber)||void 0===v?void 0:v.isChecked){const t=null===(E=e.ctaBtn.phoneNumber.btnText)||void 0===E?void 0:E.trim(),n=e.ctaBtn.phoneNumber.phoneNumber;D.ctaBtn&&!t?(D.ctaBtn.phoneNumber.btnText=i.REQUIRED_FIELD,C="invalid"):D.ctaBtn&&t&&t.length>i.QUICK_REPLY_BTN_TEXT_LIMIT?(D.ctaBtn.phoneNumber.btnText=i.QUICK_REPLY_LEN_ERROR,C="invalid"):D.ctaBtn&&t&&A.test(t)&&(D.ctaBtn.phoneNumber.btnText=i.BUTTON_EMOJI_ERROR,C="invalid"),D.ctaBtn&&!n?(D.ctaBtn.phoneNumber.link=i.REQUIRED_FIELD,C="invalid"):D.ctaBtn&&n&&n.length<10&&(D.ctaBtn.phoneNumber.link=i.VALID_PHONE_NUMBER,C="invalid")}if(null===(T=null===(u=e.ctaBtn)||void 0===u?void 0:u.websiteLinkBtn)||void 0===T?void 0:T.isChecked){const t=null===(p=e.ctaBtn.websiteLinkBtn.btnText)||void 0===p?void 0:p.trim(),n=null===(_=e.ctaBtn.websiteLinkBtn.linkOpens)||void 0===_?void 0:_.trim(),o=null===(c=e.ctaBtn.websiteLinkBtn.placeholder)||void 0===c?void 0:c.trim();D.ctaBtn&&!t?(D.ctaBtn.websiteLink.btnText=i.REQUIRED_FIELD,C="invalid"):D.ctaBtn&&t&&t.length>i.QUICK_REPLY_BTN_TEXT_LIMIT?(D.ctaBtn.websiteLink.btnText=i.QUICK_REPLY_LEN_ERROR,C="invalid"):D.ctaBtn&&t&&A.test(t)&&(D.ctaBtn.websiteLink.btnText=i.BUTTON_EMOJI_ERROR,C="invalid"),!D.ctaBtn||n||o||(D.ctaBtn.websiteLink.link=i.REQUIRED_FIELD,C="invalid")}}else if(e.actionsType===o.ACTIONS_TYPES.QUICK_REPLY){const t=["","",""];e.quickReply.forEach(((n,o)=>{const l=n.text.trim();if(l)if(l.length>i.QUICK_REPLY_NAME_LEN_LIMIT)t[o]=i.QUICK_REPLY_LEN_ERROR,C="invalid";else if(A.test(l))t[o]=i.BUTTON_EMOJI_ERROR,C="invalid";else{const n=[...e.quickReply];n.splice(o,1);n.find((e=>e.text===l))&&(t[o]=i.QUICK_REPLY_NAME_ERROR,C="invalid")}else t[o]=i.REQUIRED_FIELD,C="invalid"})),D.quickReply=t}if(e.actionsType===o.ACTIONS_TYPES.CTA_BTN||e.actionsType===o.ACTIONS_TYPES.QUICK_REPLY){const e=null===(R=D.quickReply)||void 0===R?void 0:R.reduce(((e,t)=>e||!!t),!1);((null===(b=null===(m=null==D?void 0:D.ctaBtn)||void 0===m?void 0:m.websiteLink)||void 0===b?void 0:b.link)||(null===(I=null===(h=D.ctaBtn)||void 0===h?void 0:h.websiteLink)||void 0===I?void 0:I.btnText)||(null===(N=null===(L=D.ctaBtn)||void 0===L?void 0:L.phoneNumber)||void 0===N?void 0:N.link)||(null===(B=null===(y=D.ctaBtn)||void 0===y?void 0:y.phoneNumber)||void 0===B?void 0:B.btnText)||e)&&!x&&(P(i.CREATE_TEMPLATE_DOM_IDS.actionButtons),x=!0)}return{status:C,errors:D}}parseBodyComponent(e){var i,o,l,a,d;const r=[];let s="";const v=null===(i=e.components)||void 0===i?void 0:i.find((e=>"BODY"===e.type));return v&&(null===(l=null===(o=v.example)||void 0===o?void 0:o.body_text)||void 0===l||l[0].forEach(((t,i)=>{var o,l;let a=null===(l=null===(o=e.mapping)||void 0===o?void 0:o.body)||void 0===l?void 0:l[i];const d=a&&/\(\(/.test(a),s=null==a?void 0:a.match(n.placeHolderNamePattern);(null==s?void 0:s[2])&&(a=null==s?void 0:s[2]),r.push({idx:i,variableVal:t,editable:!!d,editableDefaultValues:d?void 0:t,variableName:null!=a?a:""})})),s=e.htmlContentUrl?e.htmlContentUrl:(null===(a=v.text)||void 0===a?void 0:a.split(/\{\{[0-9]+\}\}/).length)?null===(d=v.text)||void 0===d?void 0:d.split(/\{\{[0-9]+\}\}/).map(((e,n)=>{if(null==r?void 0:r[n]){const i=r[n].variableName;return`${e} <span> </span><span style="color: ${t.COLORS.content.brand}; text-decoration: underline;">{{${i}}}</span><span> </span>`}return e})).join(""):""),{bodyVariable:r,bodyText:s}}parseFooterComponent(e){var t;const n=null===(t=e.components)||void 0===t?void 0:t.find((e=>"FOOTER"===e.type));return null==n?void 0:n.text}parseButtonComponent(e){var t,i,l,a,d,r;const s={actionsType:o.ACTIONS_TYPES.NONE,quickReply:[],ctaBtn:{phoneNumber:void 0,websiteLinkBtn:void 0}},v=null===(t=e.components)||void 0===t?void 0:t.find((e=>"BUTTONS"===e.type));if(v&&(null===(i=null==v?void 0:v.buttons)||void 0===i?void 0:i.length)){const t="QUICK_REPLY"===(null===(l=null==v?void 0:v.buttons)||void 0===l?void 0:l[0].type)?o.ACTIONS_TYPES.QUICK_REPLY:o.ACTIONS_TYPES.CTA_BTN;if(s.actionsType=t,t===o.ACTIONS_TYPES.QUICK_REPLY){const e=null!==(d=null===(a=null==v?void 0:v.buttons)||void 0===a?void 0:a.map((e=>e)))&&void 0!==d?d:[];return s.quickReply=e,s}t===o.ACTIONS_TYPES.CTA_BTN&&(null===(r=null==v?void 0:v.buttons)||void 0===r||r.forEach((t=>{var i,o,l,a;if(t.phone_number&&(s.ctaBtn.phoneNumber={isChecked:!0,btnText:t.text,phoneNumber:t.phone_number}),t.url){const d=null!==(l=null===(o=null===(i=null==e?void 0:e.mapping)||void 0===i?void 0:i.buttons)||void 0===o?void 0:o[0])&&void 0!==l?l:void 0;let r=!1;d&&n.editableVarPattern.test(d)&&(r=!0),s.ctaBtn.websiteLinkBtn={isChecked:!0,btnText:t.text,linkOpens:r?null===(a=t.example)||void 0===a?void 0:a[0]:t.url,placeholder:r?void 0:d}}})))}return s}parseUITemplateFromDBFormat(t,n){var i;return e.__awaiter(this,void 0,void 0,(function*(){const{headerType:e,headerAssetLink:o,headerAssetName:l,headerText:a,headerVariables:d}=yield this.parseDataFromHeaderComponent(t),{bodyText:r,bodyVariable:s}=yield this.parseBodyComponent(t),{actionsType:v,quickReply:E,ctaBtn:u}=yield this.parseButtonComponent(t),T={quickReply:E,ctaBtn:u,meta:{name:n?`${t.label} Copy`:t.label,category:null===(i=t.category)||void 0===i?void 0:i.toUpperCase(),subCategory:t.templateCategory,language:t.language,templateId:t.templateId},error:{header:void 0,body:void 0,footer:void 0,quickReply:void 0,meta:void 0,ctaBtn:void 0},actionsType:v,footerText:this.parseFooterComponent(t),bodyVariables:s,bodyText:r,headerType:e,headerAssetLink:o,headerAssetName:l,headerText:a,headerVariables:d,alreadyAsADraft:t.isDraft,mode:"edit",initialLoading:!1},{errors:p}=this.validateState(T);return T.error=p,T}))}};
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
export declare class WhatsAppFormatToHTML {
|
|
2
|
+
convertToHTML(str: string): string;
|
|
3
|
+
convertToBold(str: string): string;
|
|
4
|
+
convertItalics(str: string): string;
|
|
5
|
+
convertStrike(str: string): string;
|
|
6
|
+
convertNewline(str: string): string;
|
|
7
|
+
removeExtraNewLines(md: string): string;
|
|
8
|
+
}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
"use strict";Object.defineProperty(exports,"__esModule",{value:!0});exports.WhatsAppFormatToHTML=class{convertToHTML(e){return this.convertNewline(this.convertStrike(this.convertItalics(this.convertToBold(e))))}convertToBold(e){return e.replace(/\*(.*?)\*/gim,"<b>$1</b>")}convertItalics(e){return e.replace(/_(.*)_/gim,"<em>$1</em>")}convertStrike(e){return e.replace(/~(.*)~/gim,"<s>$1</s>")}convertNewline(e){return e}removeExtraNewLines(e){return e.replace(/\n\n/g,"\n")}};
|
|
@@ -0,0 +1,6 @@
|
|
|
1
|
+
import * as regexPatterns from './constants/regexPatterns';
|
|
2
|
+
export { regexPatterns };
|
|
3
|
+
export * from './TemplatePreview';
|
|
4
|
+
export * from './WhatsApp/WhatsAppLikePreview';
|
|
5
|
+
export * from './helpers/SmsTemplateHelper';
|
|
6
|
+
export * from './helpers/WhatsAppFormatToHTML';
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
"use strict";var e;Object.defineProperty(exports,"__esModule",{value:!0}),exports.CHANNEL_TYPE=void 0,(e=exports.CHANNEL_TYPE||(exports.CHANNEL_TYPE={})).WHATSAPP="whatsapp",e.INSTAGRAM="instagram",e.TIKTOK="tiktok",e.EMAIL="email",e.SMS="message",e.WEBPUSH="webpush";
|
|
@@ -0,0 +1,38 @@
|
|
|
1
|
+
/// <reference types="react" />
|
|
2
|
+
import { CUSTOM_VARIABLE, TEMPLATE_EDITOR, TEMPLATE_STATUS } from './TemplateMeta';
|
|
3
|
+
export type EmailTemplateType = {
|
|
4
|
+
category: string;
|
|
5
|
+
channel: 'email';
|
|
6
|
+
channelTemplateId: string;
|
|
7
|
+
createdAt: {
|
|
8
|
+
_seconds: number;
|
|
9
|
+
_nanoseconds: number;
|
|
10
|
+
};
|
|
11
|
+
createdBy: 'admin';
|
|
12
|
+
editor: TEMPLATE_EDITOR;
|
|
13
|
+
htmlContentUrl: string;
|
|
14
|
+
name: string;
|
|
15
|
+
subject: string;
|
|
16
|
+
sendGridCategories: string[];
|
|
17
|
+
plainContent: string;
|
|
18
|
+
status: TEMPLATE_STATUS;
|
|
19
|
+
storeId: string;
|
|
20
|
+
templateId: string;
|
|
21
|
+
thumbnailUrl: string;
|
|
22
|
+
html_content?: string;
|
|
23
|
+
mapping: {
|
|
24
|
+
body: CUSTOM_VARIABLE[];
|
|
25
|
+
};
|
|
26
|
+
updatedAt: {
|
|
27
|
+
_seconds: number;
|
|
28
|
+
_nanoseconds: number;
|
|
29
|
+
};
|
|
30
|
+
label: string;
|
|
31
|
+
};
|
|
32
|
+
export type EmailMeta = {
|
|
33
|
+
hideViewButtonForEmail?: boolean;
|
|
34
|
+
containerStyle?: React.CSSProperties | undefined;
|
|
35
|
+
handleViewTemplate?: () => void;
|
|
36
|
+
emailDisplayContent?: string;
|
|
37
|
+
templateContainerStyles?: React.CSSProperties | undefined;
|
|
38
|
+
};
|
|
@@ -0,0 +1,35 @@
|
|
|
1
|
+
/// <reference types="react" />
|
|
2
|
+
import { CUSTOM_VARIABLE } from './TemplateMeta';
|
|
3
|
+
export type SMSTemplateType = {
|
|
4
|
+
category: 'other';
|
|
5
|
+
channel: 'message';
|
|
6
|
+
channelTemplateId: string;
|
|
7
|
+
content: string;
|
|
8
|
+
createdAt: {
|
|
9
|
+
_seconds: number;
|
|
10
|
+
_nanoseconds: number;
|
|
11
|
+
};
|
|
12
|
+
createdBy: 'admin';
|
|
13
|
+
externalStatus: 'APPROVED';
|
|
14
|
+
headers: string[];
|
|
15
|
+
header?: string | null;
|
|
16
|
+
name: string;
|
|
17
|
+
status: 'ACTIVE';
|
|
18
|
+
storeId: string;
|
|
19
|
+
templateId: string;
|
|
20
|
+
templateType: string;
|
|
21
|
+
/** FRONTEND-ONLY DONT SEND TO FINAL PAYLOAD */
|
|
22
|
+
mapping: {
|
|
23
|
+
body: CUSTOM_VARIABLE[];
|
|
24
|
+
};
|
|
25
|
+
updatedAt: {
|
|
26
|
+
_seconds: number;
|
|
27
|
+
_nanoseconds: number;
|
|
28
|
+
};
|
|
29
|
+
label: string;
|
|
30
|
+
};
|
|
31
|
+
export type SMSMeta = {
|
|
32
|
+
smsVariableStore?: CUSTOM_VARIABLE[];
|
|
33
|
+
smsDisplayContent?: string;
|
|
34
|
+
templateContainerStyles?: React.CSSProperties | undefined;
|
|
35
|
+
};
|
|
@@ -0,0 +1,42 @@
|
|
|
1
|
+
export type CUSTOM_VARIABLE = {
|
|
2
|
+
variableName: string;
|
|
3
|
+
type: 'string' | 'link' | 'image';
|
|
4
|
+
isEditableVariable: boolean;
|
|
5
|
+
updatedValue: string;
|
|
6
|
+
index?: number;
|
|
7
|
+
variableValue?: string;
|
|
8
|
+
};
|
|
9
|
+
export declare enum TEMPLATE_EDITOR {
|
|
10
|
+
SEND_GRID = "sendgrid",
|
|
11
|
+
BEE = "bee"
|
|
12
|
+
}
|
|
13
|
+
export declare enum TEMPLATE_STATUS {
|
|
14
|
+
APPROVED = "APPROVED",
|
|
15
|
+
DISABLED = "DISABLED",
|
|
16
|
+
FLAGGED = "FLAGGED",
|
|
17
|
+
PENDING = "PENDING",
|
|
18
|
+
DRAFT = "DRAFT",
|
|
19
|
+
REJECTED = "REJECTED",
|
|
20
|
+
PENDING_DELETION = "PENDING_DELETION",
|
|
21
|
+
IN_REVIEW = "IN REVIEW",
|
|
22
|
+
PAUSED = "PAUSED",
|
|
23
|
+
ACTIVE = "ACTIVE",
|
|
24
|
+
LIBRARY = "LIBRARY"
|
|
25
|
+
}
|
|
26
|
+
export declare enum HEADER_TYPES {
|
|
27
|
+
NONE = "NONE",
|
|
28
|
+
TEXT = "TEXT",
|
|
29
|
+
IMAGE = "IMAGE",
|
|
30
|
+
VIDEO = "VIDEO",
|
|
31
|
+
DOCUMENT = "DOCUMENT"
|
|
32
|
+
}
|
|
33
|
+
export declare enum ACTIONS_TYPES {
|
|
34
|
+
NONE = "NONE",
|
|
35
|
+
CTA_BTN = "CTA_BTN",
|
|
36
|
+
QUICK_REPLY = "QUICK_REPLY"
|
|
37
|
+
}
|
|
38
|
+
export interface QUICK_REPLY_BUTTON {
|
|
39
|
+
text: string;
|
|
40
|
+
flowId: string;
|
|
41
|
+
flowName: string;
|
|
42
|
+
}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
"use strict";var E,T,A,D;Object.defineProperty(exports,"__esModule",{value:!0}),exports.TEMPLATE_EDITOR=void 0,(E=exports.TEMPLATE_EDITOR||(exports.TEMPLATE_EDITOR={})).SEND_GRID="sendgrid",E.BEE="bee",exports.TEMPLATE_STATUS=void 0,(T=exports.TEMPLATE_STATUS||(exports.TEMPLATE_STATUS={})).APPROVED="APPROVED",T.DISABLED="DISABLED",T.FLAGGED="FLAGGED",T.PENDING="PENDING",T.DRAFT="DRAFT",T.REJECTED="REJECTED",T.PENDING_DELETION="PENDING_DELETION",T.IN_REVIEW="IN REVIEW",T.PAUSED="PAUSED",T.ACTIVE="ACTIVE",T.LIBRARY="LIBRARY",exports.HEADER_TYPES=void 0,(A=exports.HEADER_TYPES||(exports.HEADER_TYPES={})).NONE="NONE",A.TEXT="TEXT",A.IMAGE="IMAGE",A.VIDEO="VIDEO",A.DOCUMENT="DOCUMENT",exports.ACTIONS_TYPES=void 0,(D=exports.ACTIONS_TYPES||(exports.ACTIONS_TYPES={})).NONE="NONE",D.CTA_BTN="CTA_BTN",D.QUICK_REPLY="QUICK_REPLY";
|
|
@@ -0,0 +1,180 @@
|
|
|
1
|
+
import React, { ReactElement } from 'react';
|
|
2
|
+
import { CHANNEL_TYPE } from './Channels';
|
|
3
|
+
import { ACTIONS_TYPES, HEADER_TYPES, QUICK_REPLY_BUTTON, TEMPLATE_STATUS } from './TemplateMeta';
|
|
4
|
+
export type WhatsAppTemplate = {
|
|
5
|
+
name: string;
|
|
6
|
+
label: string;
|
|
7
|
+
recommended?: boolean;
|
|
8
|
+
templateId?: string;
|
|
9
|
+
channel: CHANNEL_TYPE;
|
|
10
|
+
templateCategory: string;
|
|
11
|
+
type?: 'email' | 'whatsapp';
|
|
12
|
+
components: {
|
|
13
|
+
type: 'HEADER' | 'BODY' | 'BUTTONS' | 'FOOTER';
|
|
14
|
+
format?: 'TEXT' | 'IMAGE' | 'VIDEO' | 'DOCUMENT' | 'NONE';
|
|
15
|
+
text?: string;
|
|
16
|
+
buttons?: {
|
|
17
|
+
type: 'QUICK_REPLY' | 'URL' | 'PHONE_NUMBER';
|
|
18
|
+
text?: string;
|
|
19
|
+
url?: string;
|
|
20
|
+
example?: string[];
|
|
21
|
+
linkMode?: 'custom' | 'home';
|
|
22
|
+
phone_number?: string;
|
|
23
|
+
flowName?: string;
|
|
24
|
+
flowId?: string;
|
|
25
|
+
}[];
|
|
26
|
+
example?: {
|
|
27
|
+
header_handle?: Array<string>;
|
|
28
|
+
body_text?: Array<string[]>;
|
|
29
|
+
header_text?: Array<string>;
|
|
30
|
+
};
|
|
31
|
+
}[];
|
|
32
|
+
mapping: {
|
|
33
|
+
header?: string[];
|
|
34
|
+
body?: string[];
|
|
35
|
+
buttons?: string[];
|
|
36
|
+
};
|
|
37
|
+
htmlContentUrl?: string;
|
|
38
|
+
language: 'en_US';
|
|
39
|
+
status: TEMPLATE_STATUS;
|
|
40
|
+
category: string;
|
|
41
|
+
thumbnailImageUrl?: string;
|
|
42
|
+
FB_blob_key?: string;
|
|
43
|
+
reason?: string;
|
|
44
|
+
createdAt: number;
|
|
45
|
+
updatedAt: number;
|
|
46
|
+
isDraft?: boolean;
|
|
47
|
+
};
|
|
48
|
+
export type CreateTemplateType = {
|
|
49
|
+
/** Data */
|
|
50
|
+
headerType: HEADER_TYPES;
|
|
51
|
+
headerAssetLink?: string | null;
|
|
52
|
+
headerAssetName?: string | null;
|
|
53
|
+
headerText?: string;
|
|
54
|
+
headerVariables: templateVariable[];
|
|
55
|
+
bodyVariables: templateVariable[];
|
|
56
|
+
bodyText?: string;
|
|
57
|
+
bodyTextRaw?: string;
|
|
58
|
+
footerText?: string;
|
|
59
|
+
actionsType: ACTIONS_TYPES;
|
|
60
|
+
quickReply: Array<QUICK_REPLY_BUTTON>;
|
|
61
|
+
ctaBtn: {
|
|
62
|
+
phoneNumber?: {
|
|
63
|
+
isChecked?: boolean;
|
|
64
|
+
btnText?: string;
|
|
65
|
+
phoneNumber?: string;
|
|
66
|
+
};
|
|
67
|
+
websiteLinkBtn?: {
|
|
68
|
+
isChecked?: boolean;
|
|
69
|
+
btnText?: string;
|
|
70
|
+
linkOpens?: string;
|
|
71
|
+
placeholder?: string;
|
|
72
|
+
};
|
|
73
|
+
};
|
|
74
|
+
meta: {
|
|
75
|
+
name: string;
|
|
76
|
+
category?: string;
|
|
77
|
+
subCategory?: string;
|
|
78
|
+
language?: string;
|
|
79
|
+
templateId?: string;
|
|
80
|
+
};
|
|
81
|
+
mode: 'edit' | 'create';
|
|
82
|
+
alreadyAsADraft?: boolean;
|
|
83
|
+
/** UI */
|
|
84
|
+
initialLoading: boolean;
|
|
85
|
+
error: {
|
|
86
|
+
modalError?: string;
|
|
87
|
+
header?: string;
|
|
88
|
+
body?: string;
|
|
89
|
+
footer?: string;
|
|
90
|
+
quickReply?: Array<string | null>;
|
|
91
|
+
meta?: {
|
|
92
|
+
name?: string;
|
|
93
|
+
};
|
|
94
|
+
ctaBtn?: {
|
|
95
|
+
phoneNumber: {
|
|
96
|
+
btnText: string;
|
|
97
|
+
link: string;
|
|
98
|
+
};
|
|
99
|
+
websiteLink: {
|
|
100
|
+
btnText: string;
|
|
101
|
+
link: string;
|
|
102
|
+
};
|
|
103
|
+
};
|
|
104
|
+
};
|
|
105
|
+
/** DATA DUMP */
|
|
106
|
+
buttonPlaceholders?: templatePlaceHolder[];
|
|
107
|
+
};
|
|
108
|
+
export type templatePlaceHolder = {
|
|
109
|
+
default_value: string;
|
|
110
|
+
placeHolder: string;
|
|
111
|
+
title: string;
|
|
112
|
+
};
|
|
113
|
+
export type templateVariable = {
|
|
114
|
+
editable: boolean;
|
|
115
|
+
variableName: string;
|
|
116
|
+
variableVal?: string;
|
|
117
|
+
editableDefaultValues?: string | null;
|
|
118
|
+
idx: number;
|
|
119
|
+
};
|
|
120
|
+
export type getTemplateByIdResponse = {
|
|
121
|
+
components: WhatsAppTemplate['components'];
|
|
122
|
+
language: string;
|
|
123
|
+
label: string;
|
|
124
|
+
createdAt: any;
|
|
125
|
+
templateId: string;
|
|
126
|
+
name: string;
|
|
127
|
+
createdBy: string;
|
|
128
|
+
channel: string;
|
|
129
|
+
isDraft?: boolean;
|
|
130
|
+
mapping: TemplateVariableMapping;
|
|
131
|
+
isArchive?: boolean;
|
|
132
|
+
storeId: string;
|
|
133
|
+
channelTemplateId: string;
|
|
134
|
+
status: TEMPLATE_STATUS;
|
|
135
|
+
category: string;
|
|
136
|
+
templateCategory: string;
|
|
137
|
+
syncOnboarding?: boolean;
|
|
138
|
+
recomendedForCohorts?: string[];
|
|
139
|
+
htmlContentUrl?: string;
|
|
140
|
+
};
|
|
141
|
+
export type TemplateVariableMapping = {
|
|
142
|
+
body: string[];
|
|
143
|
+
buttons: string[];
|
|
144
|
+
header: string[];
|
|
145
|
+
footer: string[];
|
|
146
|
+
};
|
|
147
|
+
export type WhatsappLikePreviewTypes = {
|
|
148
|
+
bodyText?: string;
|
|
149
|
+
footerText?: string;
|
|
150
|
+
headerMediaType: HEADER_TYPES;
|
|
151
|
+
headerText?: string;
|
|
152
|
+
headerAssetLink?: string;
|
|
153
|
+
headerAssetName?: string;
|
|
154
|
+
quickReplybtn?: QUICK_REPLY_BUTTON[];
|
|
155
|
+
ctaBtn?: {
|
|
156
|
+
type: 'phoneNumber' | 'website';
|
|
157
|
+
text: string;
|
|
158
|
+
extra?: string;
|
|
159
|
+
placeholder?: string;
|
|
160
|
+
}[];
|
|
161
|
+
actionTypes?: ACTIONS_TYPES;
|
|
162
|
+
textType: 'html' | 'markdown';
|
|
163
|
+
hidePreviewText?: boolean;
|
|
164
|
+
extras?: boolean;
|
|
165
|
+
containerStyle?: React.CSSProperties;
|
|
166
|
+
showHeader?: boolean;
|
|
167
|
+
containerPadding?: string;
|
|
168
|
+
imagePreviewStyles?: React.CSSProperties;
|
|
169
|
+
size?: 'small' | 'large';
|
|
170
|
+
zeroStateComponent: ReactElement<any, any>;
|
|
171
|
+
};
|
|
172
|
+
export type WhatsappMeta = {
|
|
173
|
+
containerStyle?: React.CSSProperties | undefined;
|
|
174
|
+
templateContainerStyles?: React.CSSProperties | undefined;
|
|
175
|
+
size?: 'small' | 'large';
|
|
176
|
+
showWhatsAppHeader?: boolean;
|
|
177
|
+
whatsAppExtras?: boolean;
|
|
178
|
+
zeroStateComponent?: ReactElement;
|
|
179
|
+
usePlaceHolderName?: boolean;
|
|
180
|
+
};
|
|
@@ -0,0 +1,6 @@
|
|
|
1
|
+
import { templateVariable } from '../models/WhatsAppTemplate';
|
|
2
|
+
export declare class TemplateHelperUtils {
|
|
3
|
+
fillVariablesValInBodyText(text: string, variableStore: templateVariable[], usePlaceholderName?: boolean): string;
|
|
4
|
+
getTemplateVariablesFromState(text: string): string[] | undefined;
|
|
5
|
+
whatsappOnlyFillVariablesValueInBodyText(text: string, variableStore: templateVariable[], usePlaceholderName?: boolean): string;
|
|
6
|
+
}
|