@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.
Files changed (149) hide show
  1. package/dist/cjs/assets/icons/RedirectToNew.svg.js +1 -0
  2. package/dist/cjs/assets/icons/arrow_left.svg.js +1 -0
  3. package/dist/cjs/assets/icons/filePdf.svg.js +1 -0
  4. package/dist/cjs/assets/icons/halfRectangle.svg.js +1 -0
  5. package/dist/cjs/assets/icons/image.svg.js +1 -0
  6. package/dist/cjs/assets/icons/more_vertical.svg.js +1 -0
  7. package/dist/cjs/assets/icons/phone.svg.js +1 -0
  8. package/dist/cjs/assets/icons/union.svg.js +1 -0
  9. package/dist/cjs/assets/icons/user_icon.svg.js +1 -0
  10. package/dist/cjs/assets/icons/vertical_dots.svg.js +1 -0
  11. package/dist/cjs/assets/icons/videoRecorder.svg.js +1 -0
  12. package/dist/cjs/components/TypographyStyle.d.ts +2 -0
  13. package/dist/cjs/components/TypographyStyle.js +62 -50
  14. package/dist/cjs/components/dropdown/Common.styled.js +12 -0
  15. package/dist/cjs/components/dropdown/UnChildDropdown/UnChildDropdown.js +1 -0
  16. package/dist/cjs/components/modals/styledModal.js +1 -1
  17. package/dist/cjs/components/template-preview/EmailTemplatePreview.styled.d.ts +8 -0
  18. package/dist/cjs/components/template-preview/EmailTemplatePreview.styled.js +29 -0
  19. package/dist/cjs/components/template-preview/EmailTemplateThumbnailPreview.d.ts +13 -0
  20. package/dist/cjs/components/template-preview/EmailTemplateThumbnailPreview.js +1 -0
  21. package/dist/cjs/components/template-preview/SMS/SMSBubble.d.ts +9 -0
  22. package/dist/cjs/components/template-preview/SMS/SMSBubble.js +12 -0
  23. package/dist/cjs/components/template-preview/SmsTemplatePreview.d.ts +12 -0
  24. package/dist/cjs/components/template-preview/SmsTemplatePreview.js +1 -0
  25. package/dist/cjs/components/template-preview/SmsTemplatePreview.styled.d.ts +13 -0
  26. package/dist/cjs/components/template-preview/SmsTemplatePreview.styled.js +46 -0
  27. package/dist/cjs/components/template-preview/TemplatePreview.d.ts +18 -0
  28. package/dist/cjs/components/template-preview/TemplatePreview.js +1 -0
  29. package/dist/cjs/components/template-preview/WhatsApp/ChatBtn.d.ts +9 -0
  30. package/dist/cjs/components/template-preview/WhatsApp/ChatBtn.js +1 -0
  31. package/dist/cjs/components/template-preview/WhatsApp/ChatHeader.d.ts +3 -0
  32. package/dist/cjs/components/template-preview/WhatsApp/ChatHeader.js +1 -0
  33. package/dist/cjs/components/template-preview/WhatsApp/ChatHeader.style.d.ts +5 -0
  34. package/dist/cjs/components/template-preview/WhatsApp/ChatHeader.style.js +37 -0
  35. package/dist/cjs/components/template-preview/WhatsApp/ChatUI.d.ts +4 -0
  36. package/dist/cjs/components/template-preview/WhatsApp/ChatUI.js +7 -0
  37. package/dist/cjs/components/template-preview/WhatsApp/ChatUI.style.d.ts +7 -0
  38. package/dist/cjs/components/template-preview/WhatsApp/ChatUI.style.js +52 -0
  39. package/dist/cjs/components/template-preview/WhatsApp/MediaCard.d.ts +14 -0
  40. package/dist/cjs/components/template-preview/WhatsApp/MediaCard.js +1 -0
  41. package/dist/cjs/components/template-preview/WhatsApp/RenderTemplateWithVariable.d.ts +7 -0
  42. package/dist/cjs/components/template-preview/WhatsApp/RenderTemplateWithVariable.js +4 -0
  43. package/dist/cjs/components/template-preview/WhatsApp/WhatsAppLikePreview.d.ts +3 -0
  44. package/dist/cjs/components/template-preview/WhatsApp/WhatsAppLikePreview.js +12 -0
  45. package/dist/cjs/components/template-preview/WhatsAppTemplatePreview.d.ts +13 -0
  46. package/dist/cjs/components/template-preview/WhatsAppTemplatePreview.js +1 -0
  47. package/dist/cjs/components/template-preview/constants/TemplateConstants.d.ts +23 -0
  48. package/dist/cjs/components/template-preview/constants/TemplateConstants.js +1 -0
  49. package/dist/cjs/components/template-preview/constants/regexPatterns.d.ts +11 -0
  50. package/dist/cjs/components/template-preview/constants/regexPatterns.js +1 -0
  51. package/dist/cjs/components/template-preview/helpers/SmsTemplateHelper.d.ts +2 -0
  52. package/dist/cjs/components/template-preview/helpers/SmsTemplateHelper.js +1 -0
  53. package/dist/cjs/components/template-preview/helpers/TemplateCreatorHelper.d.ts +16 -0
  54. package/dist/cjs/components/template-preview/helpers/TemplateCreatorHelper.js +1 -0
  55. package/dist/cjs/components/template-preview/helpers/WhatsAppFormatToHTML.d.ts +8 -0
  56. package/dist/cjs/components/template-preview/helpers/WhatsAppFormatToHTML.js +1 -0
  57. package/dist/cjs/components/template-preview/index.d.ts +6 -0
  58. package/dist/cjs/components/template-preview/models/Channels.d.ts +8 -0
  59. package/dist/cjs/components/template-preview/models/Channels.js +1 -0
  60. package/dist/cjs/components/template-preview/models/EmailTemplate.d.ts +38 -0
  61. package/dist/cjs/components/template-preview/models/SmsTemplate.d.ts +35 -0
  62. package/dist/cjs/components/template-preview/models/TemplateMeta.d.ts +42 -0
  63. package/dist/cjs/components/template-preview/models/TemplateMeta.js +1 -0
  64. package/dist/cjs/components/template-preview/models/WhatsAppTemplate.d.ts +180 -0
  65. package/dist/cjs/components/template-preview/utils/TemplateHelperUtils.d.ts +6 -0
  66. package/dist/cjs/components/template-preview/utils/TemplateHelperUtils.js +1 -0
  67. package/dist/cjs/components/template-preview/utils/getPreviewPropLen.d.ts +2 -0
  68. package/dist/cjs/components/template-preview/utils/getPreviewPropLen.js +1 -0
  69. package/dist/cjs/constants/Theme.d.ts +6 -0
  70. package/dist/cjs/constants/Theme.js +1 -1
  71. package/dist/cjs/index.d.ts +4 -0
  72. package/dist/cjs/index.js +1 -1
  73. package/dist/cjs/utils/StringUtils.d.ts +10 -0
  74. package/dist/cjs/utils/StringUtils.js +1 -0
  75. package/dist/esm/assets/icons/RedirectToNew.svg.js +1 -0
  76. package/dist/esm/assets/icons/arrow_left.svg.js +1 -0
  77. package/dist/esm/assets/icons/filePdf.svg.js +1 -0
  78. package/dist/esm/assets/icons/halfRectangle.svg.js +1 -0
  79. package/dist/esm/assets/icons/image.svg.js +1 -0
  80. package/dist/esm/assets/icons/more_vertical.svg.js +1 -0
  81. package/dist/esm/assets/icons/phone.svg.js +1 -0
  82. package/dist/esm/assets/icons/union.svg.js +1 -0
  83. package/dist/esm/assets/icons/user_icon.svg.js +1 -0
  84. package/dist/esm/assets/icons/vertical_dots.svg.js +1 -0
  85. package/dist/esm/assets/icons/videoRecorder.svg.js +1 -0
  86. package/dist/esm/components/TypographyStyle.d.ts +2 -0
  87. package/dist/esm/components/TypographyStyle.js +60 -48
  88. package/dist/esm/components/dropdown/Common.styled.js +12 -0
  89. package/dist/esm/components/dropdown/UnChildDropdown/UnChildDropdown.js +1 -0
  90. package/dist/esm/components/modals/styledModal.js +1 -1
  91. package/dist/esm/components/template-preview/EmailTemplatePreview.styled.d.ts +8 -0
  92. package/dist/esm/components/template-preview/EmailTemplatePreview.styled.js +29 -0
  93. package/dist/esm/components/template-preview/EmailTemplateThumbnailPreview.d.ts +13 -0
  94. package/dist/esm/components/template-preview/EmailTemplateThumbnailPreview.js +1 -0
  95. package/dist/esm/components/template-preview/SMS/SMSBubble.d.ts +9 -0
  96. package/dist/esm/components/template-preview/SMS/SMSBubble.js +12 -0
  97. package/dist/esm/components/template-preview/SmsTemplatePreview.d.ts +12 -0
  98. package/dist/esm/components/template-preview/SmsTemplatePreview.js +1 -0
  99. package/dist/esm/components/template-preview/SmsTemplatePreview.styled.d.ts +13 -0
  100. package/dist/esm/components/template-preview/SmsTemplatePreview.styled.js +46 -0
  101. package/dist/esm/components/template-preview/TemplatePreview.d.ts +18 -0
  102. package/dist/esm/components/template-preview/TemplatePreview.js +1 -0
  103. package/dist/esm/components/template-preview/WhatsApp/ChatBtn.d.ts +9 -0
  104. package/dist/esm/components/template-preview/WhatsApp/ChatBtn.js +1 -0
  105. package/dist/esm/components/template-preview/WhatsApp/ChatHeader.d.ts +3 -0
  106. package/dist/esm/components/template-preview/WhatsApp/ChatHeader.js +1 -0
  107. package/dist/esm/components/template-preview/WhatsApp/ChatHeader.style.d.ts +5 -0
  108. package/dist/esm/components/template-preview/WhatsApp/ChatHeader.style.js +37 -0
  109. package/dist/esm/components/template-preview/WhatsApp/ChatUI.d.ts +4 -0
  110. package/dist/esm/components/template-preview/WhatsApp/ChatUI.js +7 -0
  111. package/dist/esm/components/template-preview/WhatsApp/ChatUI.style.d.ts +7 -0
  112. package/dist/esm/components/template-preview/WhatsApp/ChatUI.style.js +52 -0
  113. package/dist/esm/components/template-preview/WhatsApp/MediaCard.d.ts +14 -0
  114. package/dist/esm/components/template-preview/WhatsApp/MediaCard.js +1 -0
  115. package/dist/esm/components/template-preview/WhatsApp/RenderTemplateWithVariable.d.ts +7 -0
  116. package/dist/esm/components/template-preview/WhatsApp/RenderTemplateWithVariable.js +4 -0
  117. package/dist/esm/components/template-preview/WhatsApp/WhatsAppLikePreview.d.ts +3 -0
  118. package/dist/esm/components/template-preview/WhatsApp/WhatsAppLikePreview.js +12 -0
  119. package/dist/esm/components/template-preview/WhatsAppTemplatePreview.d.ts +13 -0
  120. package/dist/esm/components/template-preview/WhatsAppTemplatePreview.js +1 -0
  121. package/dist/esm/components/template-preview/constants/TemplateConstants.d.ts +23 -0
  122. package/dist/esm/components/template-preview/constants/TemplateConstants.js +1 -0
  123. package/dist/esm/components/template-preview/constants/regexPatterns.d.ts +11 -0
  124. package/dist/esm/components/template-preview/constants/regexPatterns.js +1 -0
  125. package/dist/esm/components/template-preview/helpers/SmsTemplateHelper.d.ts +2 -0
  126. package/dist/esm/components/template-preview/helpers/SmsTemplateHelper.js +1 -0
  127. package/dist/esm/components/template-preview/helpers/TemplateCreatorHelper.d.ts +16 -0
  128. package/dist/esm/components/template-preview/helpers/TemplateCreatorHelper.js +1 -0
  129. package/dist/esm/components/template-preview/helpers/WhatsAppFormatToHTML.d.ts +8 -0
  130. package/dist/esm/components/template-preview/helpers/WhatsAppFormatToHTML.js +1 -0
  131. package/dist/esm/components/template-preview/index.d.ts +6 -0
  132. package/dist/esm/components/template-preview/models/Channels.d.ts +8 -0
  133. package/dist/esm/components/template-preview/models/Channels.js +1 -0
  134. package/dist/esm/components/template-preview/models/EmailTemplate.d.ts +38 -0
  135. package/dist/esm/components/template-preview/models/SmsTemplate.d.ts +35 -0
  136. package/dist/esm/components/template-preview/models/TemplateMeta.d.ts +42 -0
  137. package/dist/esm/components/template-preview/models/TemplateMeta.js +1 -0
  138. package/dist/esm/components/template-preview/models/WhatsAppTemplate.d.ts +180 -0
  139. package/dist/esm/components/template-preview/utils/TemplateHelperUtils.d.ts +6 -0
  140. package/dist/esm/components/template-preview/utils/TemplateHelperUtils.js +1 -0
  141. package/dist/esm/components/template-preview/utils/getPreviewPropLen.d.ts +2 -0
  142. package/dist/esm/components/template-preview/utils/getPreviewPropLen.js +1 -0
  143. package/dist/esm/constants/Theme.d.ts +6 -0
  144. package/dist/esm/constants/Theme.js +1 -1
  145. package/dist/esm/index.d.ts +4 -0
  146. package/dist/esm/index.js +1 -1
  147. package/dist/esm/utils/StringUtils.d.ts +10 -0
  148. package/dist/esm/utils/StringUtils.js +1 -0
  149. 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,4 @@
1
+ /// <reference types="react" />
2
+ import { WhatsappLikePreviewTypes } from '../models/WhatsAppTemplate';
3
+ declare const ChatUI: (props: WhatsappLikePreviewTypes) => JSX.Element;
4
+ export default ChatUI;
@@ -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,3 @@
1
+ import React from 'react';
2
+ import { WhatsappLikePreviewTypes } from '../models/WhatsAppTemplate';
3
+ export declare const WhatsappLikePreview: React.FC<WhatsappLikePreviewTypes>;
@@ -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,2 @@
1
+ import { CUSTOM_VARIABLE } from '../models/TemplateMeta';
2
+ export declare const renderVariableUIForPreview: (content: string, variablStore?: CUSTOM_VARIABLE[], brandColor?: string) => string;
@@ -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,8 @@
1
+ export declare enum CHANNEL_TYPE {
2
+ WHATSAPP = "whatsapp",
3
+ INSTAGRAM = "instagram",
4
+ TIKTOK = "tiktok",
5
+ EMAIL = "email",
6
+ SMS = "message",
7
+ WEBPUSH = "webpush"
8
+ }
@@ -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
+ }