@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,46 @@
|
|
|
1
|
+
import r from"styled-components";import{COLORS as o}from"../../constants/Theme.js";r.div`
|
|
2
|
+
position: absolute;
|
|
3
|
+
width: 8px;
|
|
4
|
+
height: 8px;
|
|
5
|
+
left: -5px;
|
|
6
|
+
bottom: 2px;
|
|
7
|
+
`;const d=r.div`
|
|
8
|
+
padding: ${r=>"small"===r.size?"12px 32px 12px 12px":"16px 56px 12px 16px"};
|
|
9
|
+
background: ${o.surface.standard};
|
|
10
|
+
border-radius: 4px;
|
|
11
|
+
`,p=r.div`
|
|
12
|
+
padding: 16px;
|
|
13
|
+
background: ${o.surface.standard};
|
|
14
|
+
border-top-left-radius: 4px;
|
|
15
|
+
border-top-right-radius: 4px;
|
|
16
|
+
border-bottom: 1px solid ${o.stroke.primary};
|
|
17
|
+
`;r.div`
|
|
18
|
+
border: 1px solid ${o.stroke.primary};
|
|
19
|
+
height: 100%;
|
|
20
|
+
border-top-left-radius: 4px;
|
|
21
|
+
border-top-right-radius: 4px;
|
|
22
|
+
`,r.div`
|
|
23
|
+
margin-top: ${r=>r.hideHeader?0:"16px"};
|
|
24
|
+
border-radius: 4px;
|
|
25
|
+
border-color: ${o.stroke.primary};
|
|
26
|
+
border-width: ${r=>r.outsidePreview?0:"1px"};
|
|
27
|
+
`,r.div`
|
|
28
|
+
position: absolute;
|
|
29
|
+
width: 30px;
|
|
30
|
+
height: 30px;
|
|
31
|
+
left: -10px;
|
|
32
|
+
bottom: -1px;
|
|
33
|
+
`,r.div`
|
|
34
|
+
padding: 12px;
|
|
35
|
+
background: ${o.background.base};
|
|
36
|
+
border-radius: 16px;
|
|
37
|
+
`;const t=r.div`
|
|
38
|
+
padding: 10px;
|
|
39
|
+
position: sticky;
|
|
40
|
+
top: 0;
|
|
41
|
+
z-index: 1;
|
|
42
|
+
background: ${o.surface.standard};
|
|
43
|
+
display: flex;
|
|
44
|
+
justify-content: space-between;
|
|
45
|
+
border-bottom: 1px solid ${o.background.base};
|
|
46
|
+
`;export{d as SMSBubbleContainer,p as SMSCardHeader,t as SMSHeader};
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
import React from 'react';
|
|
2
|
+
import { CHANNEL_TYPE } from './models/Channels';
|
|
3
|
+
import { EmailMeta, EmailTemplateType } from './models/EmailTemplate';
|
|
4
|
+
import { SMSMeta, SMSTemplateType } from './models/SmsTemplate';
|
|
5
|
+
import { WhatsappMeta, WhatsAppTemplate } from './models/WhatsAppTemplate';
|
|
6
|
+
export declare const TemplatePreview: React.FC<{
|
|
7
|
+
template: WhatsAppTemplate | SMSTemplateType | EmailTemplateType;
|
|
8
|
+
channel: CHANNEL_TYPE;
|
|
9
|
+
onlyTemplateContent?: boolean;
|
|
10
|
+
outsidePreview?: boolean;
|
|
11
|
+
templateCreationsInfo?: boolean;
|
|
12
|
+
whatsAppSpecificMeta?: WhatsappMeta;
|
|
13
|
+
emailSpecificMeta?: EmailMeta;
|
|
14
|
+
smsSpecificMeta?: SMSMeta;
|
|
15
|
+
hideHeader?: boolean;
|
|
16
|
+
size?: 'small' | 'large';
|
|
17
|
+
templateContainerStyles?: React.CSSProperties;
|
|
18
|
+
}>;
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
import{jsx as e,jsxs as t,Fragment as l}from"react/jsx-runtime";import i from"../../utils/StringUtils.js";import{COLORS as a}from"../../constants/Theme.js";import{TitleRegular as n}from"../TypographyStyle.js";import o from"./EmailTemplateThumbnailPreview.js";import{CHANNEL_TYPE as r}from"./models/Channels.js";import s from"./SmsTemplatePreview.js";import d from"./WhatsAppTemplatePreview.js";const p=p=>{let{template:c,channel:u,whatsAppSpecificMeta:v,templateContainerStyles:h,templateCreationsInfo:y,hideHeader:b,size:S,onlyTemplateContent:g,emailSpecificMeta:j,smsSpecificMeta:T,outsidePreview:C}=p;var f,w;return u===r.SMS?e("div",Object.assign({style:Object.assign({marginTop:y?16:0,border:y?`1px solid ${a.stroke.primary}`:"none",borderRadius:4},null==T?void 0:T.templateContainerStyles)},{children:e(s,{template:c,hideHeader:b,onlyTemplateContent:g,size:null!=S?S:"large",variableStore:null==T?void 0:T.smsVariableStore,display_content:null==T?void 0:T.smsDisplayContent})})):u===r.EMAIL?e("div",Object.assign({style:Object.assign({marginTop:y?16:0},null==j?void 0:j.templateContainerStyles)},{children:e(o,{template:c,handleViewTemplate:()=>{var e;null===(e=null==j?void 0:j.handleViewTemplate)||void 0===e||e.call(j)},hideHeader:b,hideViewButton:null==j?void 0:j.hideViewButtonForEmail,containerStyle:null==j?void 0:j.containerStyle,emailDisplayContent:null==j?void 0:j.emailDisplayContent})})):u===r.WHATSAPP?t("div",Object.assign({style:Object.assign(Object.assign({},null==v?void 0:v.templateContainerStyles),y?m.WhatsAppWrapper:{})},{children:[y?e("div",Object.assign({style:{padding:16}},{children:e(n,{children:i.convertToTitleCase(null!==(f=null==c?void 0:c.label)&&void 0!==f?f:"")})})):e(l,{}),e(d,{showHeader:null==v?void 0:v.showWhatsAppHeader,extras:null==v?void 0:v.whatsAppExtras,template:c,size:y?"small":null!=S?S:"large",containerStyle:Object.assign({borderWidth:y?0:1,borderTopWidth:1},null!==(w=null==v?void 0:v.containerStyle)&&void 0!==w?w:{}),zeroStateComponent:null==v?void 0:v.zeroStateComponent,usePlaceHolderName:null==v?void 0:v.usePlaceHolderName})]})):e(l,{})},m={WhatsAppWrapper:{backgroundColor:a.surface.standard,borderRadius:4,border:`1px solid ${a.background.inactive}`,marginTop:16}};export{p as TemplatePreview};
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
import{jsx as e,jsxs as t}from"react/jsx-runtime";import{Caption as r,BodySecondary as n}from"../../TypographyStyle.js";import{COLORS as o}from"../../../constants/Theme.js";import{ChatBtnContainer as c}from"./ChatUI.style.js";const i=i=>{let{Icon:l,text:s,extraContent:a,placeholder:p,textTypography:h,size:m}=i;const d=h||n;return e(c,{children:t("div",Object.assign({style:{textAlign:"center",maxWidth:"100%"}},{children:[t("div",Object.assign({style:{display:"flex",flexDirection:"row",justifyContent:"center",alignItems:"center"}},{children:[l&&e(l,{color:o.special.brand.facebook,height:16,width:16,style:{marginRight:8}}),e(d,Object.assign({style:{color:o.special.brand.facebook,textAlign:"center",fontSize:"small"===m?12:14}},{children:s}))]})),!!a&&e(r,Object.assign({style:{marginTop:2,color:o.content.placeholder}},{children:p?function(e){return e.replace("[[","").replace("]]","").replace(/([A-Z])/g," $1").replace(/^./,(function(e){return e.toUpperCase()}))}(p):a}))]}))})};export{i as ChatBtn};
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
import{jsxs as r,jsx as e}from"react/jsx-runtime";import t from"../../../assets/icons/arrow_left.svg.js";import s from"../../../assets/icons/user_icon.svg.js";import o from"../../../assets/icons/vertical_dots.svg.js";import{BodyTiny as i}from"../../TypographyStyle.js";import{COLORS as n}from"../../../constants/Theme.js";import{HeaderContainer as c,LeftContainer as m,IconContainer as a,TitleContainer as h,SubTitle as l}from"./ChatHeader.style.js";const p=()=>r(c,{children:[r(m,{children:[e(t,{height:16,width:16,color:n.content.primaryInverse}),e(a,{children:e(s,{height:14,width:14,color:n.content.primaryInverse})}),r(h,{children:[e(i,Object.assign({color:n.content.primaryInverse},{children:"Brand name"})),e(l,{children:"Business account"})]})]}),e(o,{height:16,width:16,color:n.content.primaryInverse})]});export{p as default};
|
|
@@ -0,0 +1,5 @@
|
|
|
1
|
+
export declare const HeaderContainer: import("styled-components").StyledComponent<"div", any, {}, never>;
|
|
2
|
+
export declare const LeftContainer: import("styled-components").StyledComponent<"div", any, {}, never>;
|
|
3
|
+
export declare const IconContainer: import("styled-components").StyledComponent<"div", any, {}, never>;
|
|
4
|
+
export declare const TitleContainer: import("styled-components").StyledComponent<"div", any, {}, never>;
|
|
5
|
+
export declare const SubTitle: import("styled-components").StyledComponent<"p", any, {}, never>;
|
|
@@ -0,0 +1,37 @@
|
|
|
1
|
+
import e from"styled-components";import{COLORS as t}from"../../../constants/Theme.js";const n=e.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
|
+
`,i=e.div`
|
|
13
|
+
display: flex;
|
|
14
|
+
align-items: center;
|
|
15
|
+
gap: 5px;
|
|
16
|
+
`,o=e.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=e.div`
|
|
26
|
+
display: flex;
|
|
27
|
+
flex-direction: column;
|
|
28
|
+
justify-content: space-between;
|
|
29
|
+
`,r=e.p`
|
|
30
|
+
font-family: 'Inter';
|
|
31
|
+
font-style: normal;
|
|
32
|
+
font-weight: 400;
|
|
33
|
+
font-size: 8px;
|
|
34
|
+
line-height: 11px;
|
|
35
|
+
color: ${t.content.primaryInverse};
|
|
36
|
+
margin-bottom: 0px;
|
|
37
|
+
`;export{n as HeaderContainer,o as IconContainer,i as LeftContainer,r as SubTitle,p as TitleContainer};
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
import{jsxs as e,jsx as t,Fragment as r}from"react/jsx-runtime";import o from"../../../assets/icons/halfRectangle.svg.js";import i from"../../../assets/icons/phone.svg.js";import a from"../../../assets/icons/RedirectToNew.svg.js";import{useMemo as s}from"react";import n from"styled-components";import{BodySecondary as m,Caption as p}from"../../TypographyStyle.js";import{COLORS as d,FONTS as h}from"../../../constants/Theme.js";import{WhatsAppFormatToHTML as l}from"../helpers/WhatsAppFormatToHTML.js";import{HEADER_TYPES as c,ACTIONS_TYPES as f}from"../models/TemplateMeta.js";import{ChatBtn as y}from"./ChatBtn.js";import{Container as T,FooterWrapper as x,TimeStamp as g}from"./ChatUI.style.js";import{MediaCard as j}from"./MediaCard.js";import v from"./RenderTemplateWithVariable.js";const w=n.div`
|
|
2
|
+
position: absolute;
|
|
3
|
+
width: 8px;
|
|
4
|
+
height: 8px;
|
|
5
|
+
left: -8px;
|
|
6
|
+
top: -9px;
|
|
7
|
+
`,b=n=>{const{bodyText:b,footerText:S,headerMediaType:u,headerText:N,headerAssetLink:A,headerAssetName:M,quickReplybtn:C,ctaBtn:L,actionTypes:k,textType:z,extras:B,showHeader:E,imagePreviewStyles:I,size:R}=n,W=new l,H=s((()=>({color:d.content.primary,margin:12,fontSize:E?h.caption.fontSize:h.bodySecondary.fontSize,fontWeight:h.bodySecondary.fontWeight,maxWidth:"100%",whiteSpace:"pre-wrap",marginBottom:0,marginTop:8,wordBreak:"break-word"})),[]);return e(T,{children:[t(w,{children:t(o,{color:"white",height:8,width:8})}),u===c.TEXT?t(v,{bold:!0,text:N}):u!==c.NONE?t(j,{headerAssetLink:A,headerAssetName:M,mediaType:u,imagePreviewStyles:u===c.IMAGE?I:{}}):t(r,{}),!!b&&t(r,{children:"html"===z?t("div",{className:"richTextEditor",style:H,dangerouslySetInnerHTML:{__html:W.convertToHTML(b)}}):t(m,{children:b})}),e(x,{children:[t(g,Object.assign({style:{flex:1}},{children:S})),t(g,{children:"16:48"})]}),k===f.QUICK_REPLY?t("div",{children:null==C?void 0:C.map(((e,r)=>t(y,{text:e.text},r)))}):k===f.CTA_BTN?t("div",{children:null==L?void 0:L.map(((e,r)=>t(y,{textTypography:E?p:m,extraContent:B?e.extra:void 0,placeholder:e.placeholder,text:e.text,Icon:"phoneNumber"===e.type?i:a,size:R},r)))}):t(r,{})]})};export{b as default};
|
|
@@ -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
|
+
import t from"styled-components";import{Caption as o}from"../../TypographyStyle.js";import{COLORS as e}from"../../../constants/Theme.js";const r=t.div`
|
|
2
|
+
background: ${e.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
|
+
`,i=t(o)`
|
|
11
|
+
color: ${e.content.secondary};
|
|
12
|
+
`,p=t.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
|
+
`,d=t.div`
|
|
22
|
+
padding: 12px;
|
|
23
|
+
display: flex;
|
|
24
|
+
flex-direction: row;
|
|
25
|
+
justify-content: center;
|
|
26
|
+
align-items: center;
|
|
27
|
+
border-top: 1px solid ${e.stroke.primary};
|
|
28
|
+
`,n=t.div`
|
|
29
|
+
display: flex;
|
|
30
|
+
|
|
31
|
+
flex-direction: row;
|
|
32
|
+
justify-content: space-between;
|
|
33
|
+
margin: 8px 12px;
|
|
34
|
+
`;t.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: ${e.surface.hovered};
|
|
46
|
+
border-bottom-right-radius: 8px;
|
|
47
|
+
border-bottom-left-radius: 8px;
|
|
48
|
+
`,t.div`
|
|
49
|
+
position: absolute;
|
|
50
|
+
top: 16px;
|
|
51
|
+
right: 16px;
|
|
52
|
+
`;export{d as ChatBtnContainer,r as Container,n as FooterWrapper,p as MediaContainer,i as TimeStamp};
|
|
@@ -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
|
+
import{jsx as e,Fragment as s,jsxs as t}from"react/jsx-runtime";import r from"../../../assets/icons/filePdf.svg.js";import i from"../../../assets/icons/image.svg.js";import o from"../../../assets/icons/videoRecorder.svg.js";import{BodySecondary as a}from"../../TypographyStyle.js";import{COLORS as n}from"../../../constants/Theme.js";import{HEADER_TYPES as c}from"../models/TemplateMeta.js";import{MediaContainer as m}from"./ChatUI.style.js";const d=s=>{let{headerAssetName:d,mediaType:l}=s;const p=l===c.IMAGE?i:l===c.VIDEO?o:r;return t(m,{children:[e(p,{height:40,width:40,color:n.icon.placeholder}),!!d&&e(a,Object.assign({style:{color:n.content.secondary,marginTop:8}},{children:d}))]})},l=t=>{let{headerAssetLink:r,headerAssetName:i,mediaType:o,imagePreviewStyles:a}=t;if(!r||o===c.DOCUMENT)return e(d,Object.assign({},{headerAssetLink:r,headerAssetName:i,mediaType:o}));const n={width:"100%",minHeight:"156px",borderRadius:8};return e(m,{children:o===c.IMAGE?e("img",{alt:"Header displays here",style:Object.assign(Object.assign({},n),a),src:r}):o===c.VIDEO?e("video",Object.assign({src:r,style:n,controls:!0},{children:e("track",{default:!0,kind:"captions",srcLang:"en",src:r})})):e(s,{})})};export{l as MediaCard,d as NoMediaCard};
|
|
@@ -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
|
+
import{jsx as t,Fragment as n,jsxs as e}from"react/jsx-runtime";import o from"styled-components";import{BodyRegular as r}from"../../TypographyStyle.js";import{COLORS as s}from"../../../constants/Theme.js";import{templateVariablePattern as i}from"../constants/regexPatterns.js";const l=o.div`
|
|
2
|
+
padding: 8px 12px 0px;
|
|
3
|
+
/* display: inline; */
|
|
4
|
+
`,c=o=>{const{text:c,bold:p}=o,a=null==c?void 0:c.match(i),d=p?{fontWeight:"600"}:{};return c?t(l,{children:c.split(i).map(((o,i)=>e(n,{children:[t(r,Object.assign({style:d},{children:o})),!!(null==a?void 0:a[i])&&t(r,Object.assign({style:Object.assign({color:s.content.brand},d)},{children:null==a?void 0:a[i]}))]})))}):t(n,{})};export{c as default};
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
import{jsx as e,Fragment as r,jsxs as o}from"react/jsx-runtime";import t from"styled-components";import{TitleRegular as i}from"../../TypographyStyle.js";import{COLORS as a}from"../../../constants/Theme.js";import{getPreviewPropLen as s}from"../utils/getPreviewPropLen.js";import n from"./ChatHeader.js";import d from"./ChatUI.js";const p=t.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
|
+
${a.stroke.primary};
|
|
5
|
+
border-radius: 4px;
|
|
6
|
+
background-repeat: no-repeat;
|
|
7
|
+
background-position: center;
|
|
8
|
+
background-size: cover;
|
|
9
|
+
position: relative;
|
|
10
|
+
`,m=t(i)`
|
|
11
|
+
color: ${a.content.primary};
|
|
12
|
+
`,c=t=>{const i=s(t);return e(r,3===i?{children:t.zeroStateComponent}:{children:o(p,Object.assign({style:t.containerStyle,showHeader:t.showHeader},{children:[t.showHeader&&e(n,{}),o("div",Object.assign({style:{padding:"small"===t.size?"12px 32px 12px 12px":"16px 56px 12px 16px"}},{children:[!t.hidePreviewText&&e("div",Object.assign({style:{marginBottom:16}},{children:e(m,{children:"Preview"})})),e(d,Object.assign({showHeader:t.showHeader},t))]}))]}))})};export{c as WhatsappLikePreview};
|
|
@@ -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
|
+
import{jsx as e,Fragment as t}from"react/jsx-runtime";import{useState as l,useEffect as o}from"react";import{TemplateCreatorHelper as n}from"./helpers/TemplateCreatorHelper.js";import{HEADER_TYPES as i}from"./models/TemplateMeta.js";import{TemplateHelperUtils as a}from"./utils/TemplateHelperUtils.js";import{WhatsappLikePreview as r}from"./WhatsApp/WhatsAppLikePreview.js";const d=d=>{let{template:p,extras:s,containerStyle:u,usePlaceHolderName:v,showHeader:m,zeroStateComponent:h,size:c}=d;var x,b,T,y,B,w,k,f,N,j,L,A,V,C,H,P;const[S,g]=l(),F=new n,O=new a,z=[];return(null===(b=null===(x=null==S?void 0:S.ctaBtn)||void 0===x?void 0:x.phoneNumber)||void 0===b?void 0:b.isChecked)&&z.push({type:"phoneNumber",text:null!==(T=S.ctaBtn.phoneNumber.btnText)&&void 0!==T?T:"",extra:null!==(y=S.ctaBtn.phoneNumber.phoneNumber)&&void 0!==y?y:""}),(null===(w=null===(B=null==S?void 0:S.ctaBtn)||void 0===B?void 0:B.websiteLinkBtn)||void 0===w?void 0:w.isChecked)&&z.push({type:"website",text:null!==(k=S.ctaBtn.websiteLinkBtn.btnText)&&void 0!==k?k:"",extra:null!==(N=null===(f=S.ctaBtn.websiteLinkBtn)||void 0===f?void 0:f.linkOpens)&&void 0!==N?N:"",placeholder:null!==(j=S.ctaBtn.websiteLinkBtn.placeholder)&&void 0!==j?j:""}),o((()=>{p&&F.parseUITemplateFromDBFormat(p).then((e=>{g(Object.assign({},e))}))}),[p]),p?e(r,{showHeader:m,containerPadding:"large"===c?"16px 56px 12px 16px":"12px 56px 12px 12px",containerStyle:u,textType:"html",bodyText:O.whatsappOnlyFillVariablesValueInBodyText(null!==(L=null==S?void 0:S.bodyText)&&void 0!==L?L:"",null!==(A=null==S?void 0:S.bodyVariables)&&void 0!==A?A:[],v),footerText:null==S?void 0:S.footerText,headerMediaType:(null==S?void 0:S.headerType)||i.NONE,headerText:O.fillVariablesValInBodyText(null!==(V=null==S?void 0:S.headerText)&&void 0!==V?V:"",null!==(C=null==S?void 0:S.headerVariables)&&void 0!==C?C:[],v),headerAssetLink:null!==(H=null==S?void 0:S.headerAssetLink)&&void 0!==H?H:"",headerAssetName:null!==(P=null==S?void 0:S.headerAssetName)&&void 0!==P?P:"",quickReplybtn:null==S?void 0:S.quickReply,ctaBtn:z,actionTypes:null==S?void 0:S.actionsType,extras:s,hidePreviewText:!0,imagePreviewStyles:{objectFit:"cover"},zeroStateComponent:null!=h?h:e(t,{children:" "})}):e(t,{children:h})};export{d as default};
|
|
@@ -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
|
+
const e="create-template",a={name:`${e}-name`,header:`${e}-header`,body:`${e}-body`,actionButtons:`${e}-action-buttons`,footer:`${e}-footer`},t="Required field",o="Maximum 60 characters are allowed",r="Maximum 512 characters allowed",l="No special characters allowed",d="Maximum 1,024 characters are allowed",i="Maximum 20 characters are allowed",n="Buttons with same name are not allowed",c="Please enter a valid 10-digit phone number",m="Emojis are not allowed in button",s="Please attach the required media",h="Only one variable allowed in text header",u=60,w=512,b=1024,x=25,$=20;export{d as BODY_LEN_ERROR,b as BODY_TEXT_LEN_LIMIT,m as BUTTON_EMOJI_ERROR,a as CREATE_TEMPLATE_DOM_IDS,s as HEADER_ASSET_LINK_ERROR,o as HEADER_LEN_ERROR,u as HEADER_TEXT_LEN_LIMIT,r as NAME_LEN_ERROR,w as NAME_LEN_LIMIT,l as NO_SPECIAL_CHAR,h as ONE_VAR_ALLOWED,x as QUICK_REPLY_BTN_TEXT_LIMIT,i as QUICK_REPLY_LEN_ERROR,n as QUICK_REPLY_NAME_ERROR,$ as QUICK_REPLY_NAME_LEN_LIMIT,t as REQUIRED_FIELD,c as VALID_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
|
+
const a=/\[\[[A-Za-z0-9 ]+\]\]/,z=/\((\(|\[)[A-Za-z0-9 ]+(\]|\))\)/,A=/(\[\[|\(\()(.*)(\)\)|\]\])/,Z=/\{\{[A-Za-z0-9 ]+\}\}/g,g=Z,_=/\{\{[a-zA-Z0-9]+(?=( |\}))(?!\}\})/g,o=/[!@#$%^&*()_+\-=[\]{};':"\\|,.<>/?]+/,t=/\{\{[A-Za-z0-9 _]+\}\}/,c=/\{\{[A-Za-z0-9 _]+\}\}/g,e=/\[([^[]+)\](\(.*\))/,n=/[((|))]/;export{n as editableBracketPattern,z as editableVarPattern,_ as globalHalfVariablePattern,Z as globalVariablePattern,a as lockedVarPattern,A as placeHolderNamePattern,e as previewLinkMDFormatPattern,o as specialCharPattern,g as templateVariablePattern,t as variablePattern,c as variablePatternGlobal};
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
import{COLORS as n}from"../../../constants/Theme.js";import{variablePatternGlobal as t,variablePattern as o}from"../constants/regexPatterns.js";const e=function(e,a){let r=arguments.length>2&&void 0!==arguments[2]?arguments[2]:n.content.brand;const l=(null==a?void 0:a.length)?null==a?void 0:a.map((n=>n.updatedValue)):e.match(t);return t.lastIndex=0,e.split(o).map(((n,t)=>{var o;return(null==l?void 0:l[t])?`${n}<span></span><span id="connectors_variable_${t+1}" style="color: ${r}; text-decoration: underline; word-break: break-word;">${null!==(o=null==l?void 0:l[t])&&void 0!==o?o:""}</span><span> </span>`:n})).join("")};export{e as renderVariableUIForPreview};
|
|
@@ -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
|
+
import{__awaiter as e}from"../../../_virtual/_tslib.js";import{COLORS as t}from"../../../constants/Theme.js";import{specialCharPattern as n,placeHolderNamePattern as i,editableVarPattern as o}from"../constants/regexPatterns.js";import{REQUIRED_FIELD as l,NAME_LEN_LIMIT as a,NAME_LEN_ERROR as d,NO_SPECIAL_CHAR as r,HEADER_TEXT_LEN_LIMIT as v,HEADER_LEN_ERROR as s,ONE_VAR_ALLOWED as u,HEADER_ASSET_LINK_ERROR as p,BODY_TEXT_LEN_LIMIT as c,BODY_LEN_ERROR as m,QUICK_REPLY_BTN_TEXT_LIMIT as b,QUICK_REPLY_LEN_ERROR as h,BUTTON_EMOJI_ERROR as T,VALID_PHONE_NUMBER as y,QUICK_REPLY_NAME_LEN_LIMIT as B,CREATE_TEMPLATE_DOM_IDS as x,QUICK_REPLY_NAME_ERROR as f}from"../constants/TemplateConstants.js";import{HEADER_TYPES as k,ACTIONS_TYPES as N}from"../models/TemplateMeta.js";import{TemplateHelperUtils as C}from"../utils/TemplateHelperUtils.js";class g{parseDataFromHeaderComponent(e){var t,n,i,o,l,a,d;const r={headerType:k.NONE,headerVariables:[]},v=null===(t=e.components)||void 0===t?void 0:t.find((e=>"HEADER"===e.type));if(v){r.headerType=v.format,r.headerText=v.text,r.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===(l=null===(o=v.example)||void 0===o?void 0:o.header_text)||void 0===l?void 0:l[0],s=null===(d=null===(a=e.mapping)||void 0===a?void 0:a.header)||void 0===d?void 0:d[0];if(t&&s){const e=/\(\(/.test(s),n={idx:0,variableVal:t,editable:e,editableDefaultValues:e?void 0:t,variableName:s};r.headerVariables=[n]}}return r}validateState(e){var t,i,o,g,L,E,R,w,_,A,V,I,D,U,O,q,F,j,P,Y,K;const M=/\p{Extended_Pictographic}/u;let Q="valid";const H={meta:{},ctaBtn:{phoneNumber:{btnText:"",link:""},websiteLink:{btnText:"",link:""}},quickReply:[null,null,null]},S=new C;let $=!1;const G=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>a?(H.meta.name=d,Q="invalid"):n.test(e.meta.name.trim())&&(H.meta.name=r,Q="invalid"):(H.meta.name=l,Q="invalid"),H.meta.name&&!$&&(G(x.name),$=!0),e.headerType===k.TEXT){const t=null!==(o=null===(i=e.headerText)||void 0===i?void 0:i.trim())&&void 0!==o?o:"";if(t)if(t.length>v)H.header=s,Q="invalid";else{const e=S.getTemplateVariablesFromState(t);e&&e.length>1&&(H.header=u,Q="invalid")}else H.header=l,Q="invalid"}else e.headerType===k.DOCUMENT||e.headerType===k.IMAGE||(e.headerType,k.VIDEO);if(e.headerType!==k.DOCUMENT&&e.headerType!==k.IMAGE&&e.headerType!==k.VIDEO||e.headerAssetLink||(H.header=p,Q="invalid"),H.header&&!$&&(G(x.header),$=!0),e.bodyText?e.bodyTextRaw&&(null===(g=e.bodyTextRaw)||void 0===g?void 0:g.trim().length)>c&&(H.body=m,Q="invalid"):(H.body=l,Q="invalid"),H.body&&!$&&(G(x.body),$=!0),e.footerText&&e.footerText.length>v&&(H.footer=s,Q="invalid"),(null==H?void 0:H.footer)&&!$&&(G(x.footer),$=!0),e.actionsType===N.CTA_BTN){if(null===(E=null===(L=e.ctaBtn)||void 0===L?void 0:L.phoneNumber)||void 0===E?void 0:E.isChecked){const t=null===(R=e.ctaBtn.phoneNumber.btnText)||void 0===R?void 0:R.trim(),n=e.ctaBtn.phoneNumber.phoneNumber;H.ctaBtn&&!t?(H.ctaBtn.phoneNumber.btnText=l,Q="invalid"):H.ctaBtn&&t&&t.length>b?(H.ctaBtn.phoneNumber.btnText=h,Q="invalid"):H.ctaBtn&&t&&M.test(t)&&(H.ctaBtn.phoneNumber.btnText=T,Q="invalid"),H.ctaBtn&&!n?(H.ctaBtn.phoneNumber.link=l,Q="invalid"):H.ctaBtn&&n&&n.length<10&&(H.ctaBtn.phoneNumber.link=y,Q="invalid")}if(null===(_=null===(w=e.ctaBtn)||void 0===w?void 0:w.websiteLinkBtn)||void 0===_?void 0:_.isChecked){const t=null===(A=e.ctaBtn.websiteLinkBtn.btnText)||void 0===A?void 0:A.trim(),n=null===(V=e.ctaBtn.websiteLinkBtn.linkOpens)||void 0===V?void 0:V.trim(),i=null===(I=e.ctaBtn.websiteLinkBtn.placeholder)||void 0===I?void 0:I.trim();H.ctaBtn&&!t?(H.ctaBtn.websiteLink.btnText=l,Q="invalid"):H.ctaBtn&&t&&t.length>b?(H.ctaBtn.websiteLink.btnText=h,Q="invalid"):H.ctaBtn&&t&&M.test(t)&&(H.ctaBtn.websiteLink.btnText=T,Q="invalid"),!H.ctaBtn||n||i||(H.ctaBtn.websiteLink.link=l,Q="invalid")}}else if(e.actionsType===N.QUICK_REPLY){const t=["","",""];e.quickReply.forEach(((n,i)=>{const o=n.text.trim();if(o)if(o.length>B)t[i]=h,Q="invalid";else if(M.test(o))t[i]=T,Q="invalid";else{const n=[...e.quickReply];n.splice(i,1);n.find((e=>e.text===o))&&(t[i]=f,Q="invalid")}else t[i]=l,Q="invalid"})),H.quickReply=t}if(e.actionsType===N.CTA_BTN||e.actionsType===N.QUICK_REPLY){const e=null===(D=H.quickReply)||void 0===D?void 0:D.reduce(((e,t)=>e||!!t),!1);((null===(O=null===(U=null==H?void 0:H.ctaBtn)||void 0===U?void 0:U.websiteLink)||void 0===O?void 0:O.link)||(null===(F=null===(q=H.ctaBtn)||void 0===q?void 0:q.websiteLink)||void 0===F?void 0:F.btnText)||(null===(P=null===(j=H.ctaBtn)||void 0===j?void 0:j.phoneNumber)||void 0===P?void 0:P.link)||(null===(K=null===(Y=H.ctaBtn)||void 0===Y?void 0:Y.phoneNumber)||void 0===K?void 0:K.btnText)||e)&&!$&&(G(x.actionButtons),$=!0)}return{status:Q,errors:H}}parseBodyComponent(e){var n,o,l,a,d;const r=[];let v="";const s=null===(n=e.components)||void 0===n?void 0:n.find((e=>"BODY"===e.type));return s&&(null===(l=null===(o=s.example)||void 0===o?void 0:o.body_text)||void 0===l||l[0].forEach(((t,n)=>{var o,l;let a=null===(l=null===(o=e.mapping)||void 0===o?void 0:o.body)||void 0===l?void 0:l[n];const d=a&&/\(\(/.test(a),v=null==a?void 0:a.match(i);(null==v?void 0:v[2])&&(a=null==v?void 0:v[2]),r.push({idx:n,variableVal:t,editable:!!d,editableDefaultValues:d?void 0:t,variableName:null!=a?a:""})})),v=e.htmlContentUrl?e.htmlContentUrl:(null===(a=s.text)||void 0===a?void 0:a.split(/\{\{[0-9]+\}\}/).length)?null===(d=s.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.content.brand}; text-decoration: underline;">{{${i}}}</span><span> </span>`}return e})).join(""):""),{bodyVariable:r,bodyText:v}}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,n,i,l,a,d;const r={actionsType:N.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===(n=null==v?void 0:v.buttons)||void 0===n?void 0:n.length)){const t="QUICK_REPLY"===(null===(i=null==v?void 0:v.buttons)||void 0===i?void 0:i[0].type)?N.QUICK_REPLY:N.CTA_BTN;if(r.actionsType=t,t===N.QUICK_REPLY){const e=null!==(a=null===(l=null==v?void 0:v.buttons)||void 0===l?void 0:l.map((e=>e)))&&void 0!==a?a:[];return r.quickReply=e,r}t===N.CTA_BTN&&(null===(d=null==v?void 0:v.buttons)||void 0===d||d.forEach((t=>{var n,i,l,a;if(t.phone_number&&(r.ctaBtn.phoneNumber={isChecked:!0,btnText:t.text,phoneNumber:t.phone_number}),t.url){const d=null!==(l=null===(i=null===(n=null==e?void 0:e.mapping)||void 0===n?void 0:n.buttons)||void 0===i?void 0:i[0])&&void 0!==l?l:void 0;let v=!1;d&&o.test(d)&&(v=!0),r.ctaBtn.websiteLinkBtn={isChecked:!0,btnText:t.text,linkOpens:v?null===(a=t.example)||void 0===a?void 0:a[0]:t.url,placeholder:v?void 0:d}}})))}return r}parseUITemplateFromDBFormat(t,n){var i;return e(this,void 0,void 0,(function*(){const{headerType:e,headerAssetLink:o,headerAssetName:l,headerText:a,headerVariables:d}=yield this.parseDataFromHeaderComponent(t),{bodyText:r,bodyVariable:v}=yield this.parseBodyComponent(t),{actionsType:s,quickReply:u,ctaBtn:p}=yield this.parseButtonComponent(t),c={quickReply:u,ctaBtn:p,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:s,footerText:this.parseFooterComponent(t),bodyVariables:v,bodyText:r,headerType:e,headerAssetLink:o,headerAssetName:l,headerText:a,headerVariables:d,alreadyAsADraft:t.isDraft,mode:"edit",initialLoading:!1},{errors:m}=this.validateState(c);return c.error=m,c}))}}export{g as TemplateCreatorHelper};
|
|
@@ -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
|
+
class e{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")}}export{e as WhatsAppFormatToHTML};
|
|
@@ -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
|
+
var a;!function(a){a.WHATSAPP="whatsapp",a.INSTAGRAM="instagram",a.TIKTOK="tiktok",a.EMAIL="email",a.SMS="message",a.WEBPUSH="webpush"}(a||(a={}));export{a as CHANNEL_TYPE};
|
|
@@ -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
|
+
var E,D,N,I;!function(E){E.SEND_GRID="sendgrid",E.BEE="bee"}(E||(E={})),function(E){E.APPROVED="APPROVED",E.DISABLED="DISABLED",E.FLAGGED="FLAGGED",E.PENDING="PENDING",E.DRAFT="DRAFT",E.REJECTED="REJECTED",E.PENDING_DELETION="PENDING_DELETION",E.IN_REVIEW="IN REVIEW",E.PAUSED="PAUSED",E.ACTIVE="ACTIVE",E.LIBRARY="LIBRARY"}(D||(D={})),function(E){E.NONE="NONE",E.TEXT="TEXT",E.IMAGE="IMAGE",E.VIDEO="VIDEO",E.DOCUMENT="DOCUMENT"}(N||(N={})),function(E){E.NONE="NONE",E.CTA_BTN="CTA_BTN",E.QUICK_REPLY="QUICK_REPLY"}(I||(I={}));export{I as ACTIONS_TYPES,N as HEADER_TYPES,E as TEMPLATE_EDITOR,D as TEMPLATE_STATUS};
|