PageSourceSearch

https://smh.re/EmailNewsletter-4e5bd0.bundle.js

js smh.re collected 2026-10-01 14:07:46 UTC 86,678 bytes, 231 lines download raw bytes

1(self.webpackChunksmarpshare_frontend=self.webpackChunksmarpshare_frontend||[]).push([[5356],{3276:(__unused_webpack_module,__webpack_exports__,__webpack_require__)=>{"use strict";__webpack_require__.d(__webpack_exports__,{Y:()=>useGetMutationWithInvalidateQueries});var react_query__WEBPACK_IMPORTED_MODULE_0__=__webpack_require__(75942);const useGetMutationWithInvalidateQueries=(queryKey,mutationFn)=>{const client=(0,react_query__WEBPACK_IMPORTED_MODULE_0__.useQueryClient)();return(0,react_query__WEBPACK_IMPORTED_MODULE_0__.useMutation)(mutationFn,{onSuccess:()=>{client.invalidateQueries(queryKey)}})}},15539:(__unused_webpack_module,__webpack_exports__,__webpack_require__)=>{"use strict";__webpack_require__.r(__webpack_exports__),__webpack_require__.d(__webpack_exports__,{EmailNewsletter:()=>EmailNewsletter});var EmailNewsletterStep,react=__webpack_require__(96540),react_router=__webpack_require__(56347),free_solid_svg_icons=__webpack_require__(66188),index_es=__webpack_require__(46784),emotion_styled_browser_esm=__webpack_require__(59295),confirmation_dialog=__webpack_require__(86307),use_get_text=__webpack_require__(87914),stepper=__webpack_require__(91751),isFunction=__webpack_require__(89610);!function(EmailNewsletterStep){EmailNewsletterStep[EmailNewsletterStep.Editor=0]="Editor",EmailNewsletterStep[EmailNewsletterStep.Recipients=1]="Recipients",EmailNewsletterStep[EmailNewsletterStep.Info=2]="Info",EmailNewsletterStep[EmailNewsletterStep.Confirmation=3]="Confirmation"}(EmailNewsletterStep||(EmailNewsletterStep={}));var url_utils=__webpack_require__(60059);const Header=emotion_styled_browser_esm.A.header`
2	padding: ${p=>p.theme.spacing.L} 0;
3	border-bottom: 1px solid ${p=>p.theme.color.SpaceDarkest};
4	display: flex;
5`,StepsList=emotion_styled_browser_esm.A.ol`
6	display: flex;
7	justify-content: center;
8	list-style: none;
9	counter-reset: email-stepper-counter;
10	margin: 0 auto;
11`,StepsListItem=emotion_styled_browser_esm.A.li`
12	position: relative;
13	height: 24px;
14	padding-left: ${p=>p.theme.spacing.XL};
15
16	font-size: 16px;
17	font-weight: 600;
18	line-height: 24px;
19
20	counter-increment: email-stepper-counter;
21	color: rgb(43, 43, 43);
22
23	&:not(:first-of-type) {
24		margin-left: ${p=>p.theme.spacing.XXXXXXL};
25	}
26
27	&::before {
28		position: absolute;
29		left: 0;
30		top: 0;
31		width: 24px;
32		height: 24px;
33
34		color: white;
35		background-color: ${p=>p.active?props=>props.theme.color.PrimaryDefault:props=>props.theme.color.InkLighter};
36
37		font-size: 14px;
38		font-weight: normal;
39		line-height: 24px;
40		text-align: center;
41
42		content: counter(email-stepper-counter);
43		border-radius: 50%;
44	}
45`,BackLink=emotion_styled_browser_esm.A.button`
46	color: unset;
47	width: 24px;
48	height: 24px;
49	margin-right: ${p=>p.theme.spacing.L};
50	text-decoration: none;
51	background: none;
52	border: none;
53	padding: 0;
54	cursor: pointer;
55
56	&:hover,
57	&:focus {
58		color: black;
59	}
60`,BackLinkIcon=(0,emotion_styled_browser_esm.A)(index_es.g)`
61	font-size: 24px;
62	width: 24px !important;
63`,EmailNewsletterHeader=({currentFolderId})=>{const{gettext}=(0,use_get_text.z)(),history=(0,react_router.W6)(),[isCloseDialogShown,setIsCloseDialogShown]=react.useState(!1),{activeStep}=(0,stepper.lE)();return react.createElement(react.Fragment,null,react.createElement(Header,null,react.createElement(StepsList,null,react.createElement(StepsListItem,{active:activeStep===EmailNewsletterStep.Editor,"data-testid":"email-header-step"},gettext("Content")),react.createElement(StepsListItem,{active:activeStep===EmailNewsletterStep.Recipients,"data-testid":"email-header-step"},gettext("Audience")),react.createElement(StepsListItem,{active:activeStep===EmailNewsletterStep.Info,"data-testid":"email-header-step"},gettext("Email info")),react.createElement(StepsListItem,{active:activeStep===EmailNewsletterStep.Confirmation,"data-testid":"email-header-step"},gettext("Confirmation"))),react.createElement(BackLink,{type:"button",onClick:()=>setIsCloseDialogShown(!0),"aria-label":gettext("Close email creation"),"data-testid":"email-header-close-button"},react.createElement(BackLinkIcon,{icon:free_solid_svg_icons.GRI}))),react.createElement(confirmation_dialog.K,{title:gettext("Do you want to close?"),text:gettext("You are trying to close email creation page. All changes will be removed."),isDialogShown:isCloseDialogShown,closeModal:()=>setIsCloseDialogShown(!1),onConfirmClick:()=>{setIsCloseDialogShown(!1),history.push((0,url_utils.y4)({folderId:currentFolderId}))}
63,cancelButtonLabel:gettext("No, take me back"),confirmButtonLabel:gettext("Yes, close it")}))};var stencil_generated=__webpack_require__(11432),components=__webpack_require__(66931),noop=__webpack_require__(42302);const EMAIL_NEWSLETTER_CONTEXT_DEFAULT_VALUE={emailInfo:{emailName:"",emailSubject:"",fromName:"",fromEmail:"",emailJson:""},recipients:[],isSendScheduled:!1,isLoading:!1,mode:"new",onEmailInfoUpdate:noop.A,onRecipientsUpdate:noop.A,goToChangeInfo:noop.A,goToChangeRecipients:noop.A,goToChangeContent:noop.A,onIsSendScheduledChange:noop.A,onChangeScheduledFor:noop.A,saveAndSendEmail:noop.A,onClear:noop.A},EmailNewsletterContext=react.createContext(EMAIL_NEWSLETTER_CONTEXT_DEFAULT_VALUE),EmailNewsletterProvider=EmailNewsletterContext.Provider,useEmailNewsletterContext=()=>react.useContext(EmailNewsletterContext);var use_email_html_template_query=__webpack_require__(97109);const default_template_namespaceObject=JSON.parse('{"page":{"title":"Template Base","description":"Test template for BEE","template":{"name":"template-base","type":"basic","version":"0.0.1"},"body":{"type":"mailup-bee-page-proprerties","container":{"style":{"background-color":"#FFFFFF"}},"content":{"style":{"font-family":"Arial, \'Helvetica Neue\', Helvetica, sans-serif","color":"#000000"}
63,"computedStyle":{"linkColor":"#0068A5","messageBackgroundColor":"transparent","messageWidth":"600px"}},"webFonts":[]},"rows":[{"type":"one-column-empty","container":{"style":{"background-color":"transparent","background-image":"none","background-repeat":"no-repeat","background-position":"top left"}},"content":{"style":{"background-color":"transparent","color":"#000000","width":"500px","background-image":"none","background-repeat":"no-repeat","background-position":"top left"},"computedStyle":{"rowColStackOnMobile":true,"rowReverseColStackOnMobile":false}},"columns":[{"grid-columns":12,"modules":[],"style":{"background-color":"transparent","padding-top":"5px","padding-right":"0px","padding-bottom":"5px","padding-left":"0px","border-top":"0px solid transparent","border-right":"0px solid transparent","border-bottom":"0px solid transparent","border-left":"0px solid transparent"},"uuid":"a5f8a222-9d98-433f-a75b-23bcefba795a"}],"uuid":"90c65f85-63ee-4517-a839-71fbd47c94f6"}]},"comments":{}}'),DEFAULT_TEMPLATE=JSON.stringify(default_template_namespaceObject),EMAIL_EDITOR_CONTEXT_DEFAULT_VALUE={emailTemplate:{html:"",json:DEFAULT_TEMPLATE},isEmailTemplateSaved:!1,existingTemplateLoaded:!1,isEmailTemplateCleared:!1,isTemplateLoaded:!1,setIsEmailTemplateSaved:noop.A,setIsEmailTemplateCleared:noop.A,setIsTemplateLoaded:noop.A,onEmailTemplateUpdate:noop.A,onChangeRecipients:noop.A},EmailEditorContext=react.createContext(EMAIL_EDITOR_CONTEXT_DEFAULT_VALUE),EmailEditorProvider=EmailEditorContext.Provider,useEmailEditorContext=()=>react.useContext(EmailEditorContext);var formatting=__webpack_require__(51752),dist=__webpack_require__(71287),image_utils=__webpack_require__(99438);const CTA_ALLOWED_LIST=["linkedin","twitter","xing","facebook"],prepareHtmlTemplate=(post,companySubdomain)=>{var _a,_b;const basePathURL=`https://${companySubdomain}.smarpshare.com`;let imagePath="/images/no-image-16x9.jpg";post.imageMetadataList[0]&&(imagePath=(0,image_utils.x8)(post.imageMetadataList[0].url,dist.JRo.PostX2));const imageUrl=`${basePathURL}${imagePath}`,socnetsCallToActions=null===(_a=post.socnetList)||void 0===_a?void 0:_a.filter((item=>CTA_ALLOWED_LIST.includes(item))),previewLink=`${basePathURL}/#/preview/${post._id}?source=Newsletter`,socnetsCallToActionsToRender=null===(_b=null==socnetsCallToActions?void 0:socnetsCallToActions.map((socnet=>`<td><a href="${previewLink}"\n\t\t\t\t\t\t\t\t\t\t target="_blank">\n\t\t\t\t\t\t\t\t\t<img src="${basePathURL}/images/email/${socnet}-icon.jpg" alt="${socnet} icon"\n                       height="30" width="30">\n                  </a>\n             </td>`)))||void 0===_b?void 0:_b.join("");let postBody=post.body;postBody.length>250&&(postBody=postBody.slice(0,250).concat("..."));const html=((previewLink,imageUrl,title,body,socnetsCallToActions)=>`\n<style type="text/css">\n\tp.mcnTextBody {\n\t\tmargin: 10px 0;\n\t\tpadding: 0;\n\t}\n\n\t#bodyTable, table.templateContainer {\n\t\tborder-collapse: collapse;\n\t\tmso-table-lspace: 0pt;\n\t\tmso-table-rspace: 0pt;\n\t}\n\n\timg.mcnImage,\n\ta img.mcnImage {\n\t\tborder: 0;\n\t\theight: auto;\n\t\toutline: none;\n\t\ttext-decoration: none;\n\t\t-ms-interpolation-mode: bicubic;\n\t}\n\n\t#bodyTable,\n\t#bodyCell {\n\t\theight: 100%;\n\t\tmargin: 0;\n\t\tpadding: 0;\n\t\twidth: 100%;\n\t}\n\n\t.mcnPreviewText {\n\t\tdisplay: none !important;\n\t}\n\n\t#outlook a {\n\t\tpadding: 0;\n\t}\n\n\t#bodyTable p,\n\t#bodyTable a,\n\t#bodyTable li,\n\t#bodyTable td,\n\t#bodyTable blockquote {\n\t\tmso-line-height-rule: exactly;\n\t}\n\n\t#bodyTable,\n\t#bodyTable table,\n\t#bodyTable p,\n\t#bodyTable a,\n\t#bodyTable li,\n\t#bodyTable td,\n\t#bodyTable blockquote {\n\t\t-ms-text-size-adjust: 100%;\n\t\t-webkit-text-size-adjust: 100%;\n\t}\n\n\t#bodyTable a[x-apple-data-detectors] {\n\t\tcolor: inherit !important;\n\t\ttext-decoration: none !important;\n\t\tfont-size: inherit !important;\n\t\tfont-family: inherit !important;\n\t\tfont-weight: inherit !important;\n\t\tline-height: inherit !important;\n\t}\n\n\t#bodyCell {\n\t\tborder-top: 0;\n\t}\n\n\t.templateContainer {\n\t\tmax-width: 100% !important;\n\t\tborder: 0;\n\t}\n\n\t.mcnImage,\n\t.mcnRetinaImage {\n\t\tvertical-align: bottom;\n\t}\n\n\t.mcnTextContent {\n\t\tword-break: break-word;\n\t}\n\n\t.mcnTextContent img {\n\t\theight: auto !important;\n\t}\n\n\t.mcnDividerBlock {\n\t\ttable-layout: fixed !important;\n\t}\n\n\t#templateBody {\n\t\tborder-top: 0;\n\t\tpadding-top: 0;\n\t}\n\n\t#templateBody .mcnChannelContent,\n\t#templateBody .mcnChannelContent p {\n\t\tcolor: #838383;\n\t\tfont-family: Helvetica;\n\t\tfont-size: 16px;\n\t\tline-height: 150%;\n\t\ttext-align: left;\n\t\tmargin-top: 0;\n\t\tmargin-bottom: 0;\n\t}\n\n\t#templateBody .mcnTextContent,\n\t#templateBody .mcnTextContent p {\n\t\tcolor: #373737;\n\t\tfont-family: Helvetica;\n\t\tfont-size: 16px;\n\t\tline-height: 20px;\n\t\ttext-align: left;\n\t}\n\n\t#templateBody .mcnTextContent p.mcnTextBody,\n  #templateBody .mcnTextContent p.mcnTextBody a {\n\t\tfont-size: 13px !important;\n\t\tline-height: 17px !important;\n\t}\n\n\t#templateBody .mcnTextContent a,\n\t#templateBody .mcnTextContent p a {\n\t\tcolor: #ed5d40;\n\t\tfont-weight: normal;\n\t\ttext-decoration: underline;\n\t}\n\n\t#templateBody .mcnCaptionRightContentOuter .mcnTextContent a {\n\t\tcolor: #2b2b2b;;\n\t\tfont-size: 21px;\n\t\tfont-weight: bold;\n\t\ttext-decoration: none;\n\t}\n\t\n\t.templateContainer {\n\t\t\twidth: 100% !important;\n\t}\n\n\t@media only screen and (max-width: 52em) {\n\t\t#bodyTable,\n\t\t#bodyTable table,\n\t\t#bodyTable td,\n\t\t#bodyTable p,\n\t\t#bodyTable a,\n\t\t#bodyTable li,\n\t\t#bodyTable blockquote {\n\t\t\t-webkit-text-size-adjust: none !important;\n\t\t}\n\n\t\t#bodyCell {\n\t\t\tpadding-top: 10px !important;\n\t\t}\n\n\t\t.mcnRetinaImage {\n\t\t\tmax-width: 100% !important;\n\t\t}\n\n\t\t.mcnImage {\n\t\t\twidth: 100% !important;\n\t\t}\n\n\t\t.mcnTextContentContainer,\n\t\t.mcnCaptionRightImageTextContentContainer {\n\t\t\tmax-width: 100% !important;\n\t\t\twidth: 100% !important;\n\t\t}\n\n\t\t.mcnCaptionRightContentOuter .mcnTextContent {\n\t\t\tpadding-top: 9px !important;\n\t\t}\n\n\t\t.mcnTextContent {\n\t\t\tpadding-right: 18px !important;\n\t\t\tpadding-left: 18px !important;\n\t\t}\n\n\t\t#templateBody .mcnChannelContent,\n\t\t#templateBody .mcnChannelContent p {\n\t\t\tfont-size: 12px;\n\t\t}\n\n\t\t#templateBody .mcnTextContent,\n\t\t#templateBody .mcnTextContent p {\n\t\t\tfont-size: 16px !important;\n\t\t\tline-height: 20px !important;\n\t\t}\n\n\t\t#templateBody .mcnTextContent p.mcnTextBody {\n\t\tfont-size: 13px !important;\n\t\tline-height: 17px !important;\n\t\t}\n\t}\n</style>\n<table align="center" height="100%" width="100%" id="bodyTable">\n\t<tr>\n\t\t<td align="center" valign="top" id="bodyCell">\n\t\t\t<table width="100%" class="templateContainer">\n\t\t\t\t<tr>\n\t\t\t\t\t<td valign="top" id="templateBody">\n\t\t\t\t\t\t<table class="mcnCaptionRightContentOuter" width="100%">\n\t\t\t\t\t\t\t<tbody>\n\t\t\t\t\t\t\t\t<tr>\n\t\t\t\t\t\t\t\t\t<td valign="top" class="mcnCaptionRightContentInner" style="padding-bottom: 0;">\n\t\t\t\t\t\t\t\t\t\t<table align="left" class="mcnCaptionRightImageTextContentContainer">\n\t\t\t\t\t\t\t\t\t\t\t<tbody>\n\t\t\t\t\t\t\t\t\t\t\t\t<tr>\n\t\t\t\t\t\t\t\t\t\t\t\t\t<td class="mcnCaptionRightImageContent" align="left" valign="top">\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t<a href="${previewLink}"\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t target="_blank">\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t<img src="${imageUrl}" style="display:block;width:100%;max-width:100%;border-radius: 5px;" width="100%" class="mcnImage">\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t</a>\n\t\t\t\t\t\t\t\t\t\t\t\t\t</td>\n\t\t\t\t\t\t\t\t\t\t\t\t</tr>\n\t\t\t\t\t\t\t\t\t\t\t\t<tr>\n\t\t\t\t\t\t\t\t\t\t\t\t\t<td valign="top" align="left" class="mcnTextContent" style="padding-top: 8px">\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t<a href="${previewLink}"\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t target="_blank">\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t${title}\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t</a>\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t<p class="mcnTextBody" style="padding-top: 8px">\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t${body}\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t</p>\n\t\t\t\t\t\t\t\t\t\t\t\t\t</td>\n\t\t\t\t\t\t\t\t\t\t\t\t</tr>\n\t\t\t\t\t\t\t\t\t\t\t</tbody>\n\t\t\t\t\t\t\t\t\t\t</table>\n\t\t\t\t\t\t\t\t\t</td>\n\t\t\t\t\t\t\t\t</tr>                                    \n\t\t\t\t\t\t\t\t<tr>\n\t\t\t\t\t\t\t\t\t<td valign="top" style="padding-right:10px;">\n\t\t\t\t\t\t\t\t\t\t<table align="left" cellpadding="5" style="border-collapse:separate;">\n\t\t\t\t\t\t\t\t\t\t\t<tbody>\n\t\t\t\t\t\t\t\t\t\t\t\t<tr>\n\t\t\t\t\t\t\t\t\t\t\t\t${socnetsCallToActions}\n\t\t\t\t\t\t\t\t\t\t\t\t</tr>\n\t\t\t\t\t\t\t\t\t\t\t</tbody>\n\t\t\t\t\t\t\t\t\t\t</table>\n\t\t\t\t\t\t\t\t\t</td>\n\t\t\t\t\t\t\t\t</tr>\n\t\t\t\t\t\t\t</tbody>\n\t\t\t\t\t\t</table>\n\t\t\t\t\t</td>\n\t\t\t\t</tr>\n\t\t\t</table>\n\t\t</td>\n\t</tr>\n</table>\n`)(previewLink,imageUrl,post.title,postBody,socnetsCallToActionsToRender||"");return html},getParsedJSONTemplate=jsonString=>jsonString?JSON.parse(jsonString):{},getBlocksForMixpanel=jsonString=>{const result=[],{page}=getParsedJSONTemplate(jsonString);return page.rows.forEach((row=>{row.columns.forEach((column=>
63{column.modules.forEach((module=>{const contentType=module.type.split("-")[4];"addon"===contentType?result.push("smarp-post"):result.push(contentType)}))}))})),result};var use_session=__webpack_require__(84280),tracking_utils=__webpack_require__(48458);const Footer=emotion_styled_browser_esm.A.footer`
64	padding: ${p=>p.theme.spacing.L};
65	display: flex;
66	align-items: center;
67	height: auto;
68	background-color: ${p=>p.theme.color.SpaceDefault};
69	border-top: 1px solid ${p=>p.theme.color.SpaceDarkest};
70`,FooterActions=emotion_styled_browser_esm.A.div`
71	display: flex;
72	margin-left: auto;
73`,STEPS_WITH_CLEAR_BUTTON=[EmailNewsletterStep.Editor,EmailNewsletterStep.Recipients],EmailNewsletterFooter=({isNextButtonDisabled})=>{const{gettext}=(0,use_get_text.z)(),{session}=(0,use_session.w)(),[isConfirmationDialogShown,setIsConfirmationDialogShown]=react.useState(!1),isSaveDraftClicked=react.useRef(!1),{goToPrevStep,goToNextStep,activeStep}=(0,stepper.lE)(),{recipients,scheduledFor,mode,isLoading,isSendScheduled,saveAndSendEmail,onClear}=useEmailNewsletterContext(),{emailTemplate,setIsEmailTemplateSaved,isTemplateLoaded}=useEmailEditorContext(),shouldDisableButtons=!isTemplateLoaded;(0,react.useEffect)((()=>{isSaveDraftClicked.current&&activeStep===EmailNewsletterStep.Editor&&saveDraftAndNavigateToList()}),[emailTemplate]);const saveDraftAndNavigateToList=()=>{saveAndSendEmail(!0)},isTheLastStep=activeStep===EmailNewsletterStep.Confirmation,isClearButtonShown=STEPS_WITH_CLEAR_BUTTON.includes(activeStep),isBackButtonShown=activeStep!==EmailNewsletterStep.Editor,confirmationDialogConfirmButtonLabel=gettext(isSendScheduled?"Confirm scheduling":"Send it now"),confirmationDialogTitle=gettext(isSendScheduled?"Email scheduling":"Email sending");return react.createElement(react.Fragment,null,react.createElement(Footer,{className:"email-newsletter-page__footer"},isBackButtonShown&&react.createElement(components.$n,{style:"secondary",text:gettext("Back"),type:"button",onClick:goToPrevStep,dataTestId:"email-stepper-back-button"}),react.createElement(FooterActions,null,isClearButtonShown&&react.createElement(react.Fragment,null,react.createElement(components.$n,{style:"link",text:gettext("Clear"),type:"button",onClick:onClear,disabled:shouldDisableButtons,dataTestId:"email-stepper-clear-button"}),react.createElement(components.hK,{size:"m",dir:"x"})),react.createElement(stencil_generated.QS,{disabled:!scheduledFor,content:gettext('Saving a draft will remove any scheduled sending time. If you want to save a scheduled time, please select "Schedule post".')},react.createElement(components.$n,{style:"secondary",text:gettext("Save to draft"),type:"button",onClick:()=>{isSaveDraftClicked.current=!0,activeStep!==EmailNewsletterStep.Editor?saveDraftAndNavigateToList():setIsEmailTemplateSaved(!0)},disabled:shouldDisableButtons,dataTestId:"email-stepper-save-draft-button"})),react.createElement(components.hK,{size:"m",dir:"x"}),react.createElement(components.$n,{style:"primary",text:gettext(isTheLastStep?"edit"===mode?"Confirm":isSendScheduled?"Schedule":"Send now":"Next"),type:"button",onClick:()=>{switch(activeStep){case EmailNewsletterStep.Editor:setIsEmailTemplateSaved(!0),tracking_utils.A.event("email_creation_content_set",{type:mode,blocks:getBlocksForMixpanel(emailTemplate.json)});break;case EmailNewsletterStep.Recipients:goToNextStep(),tracking_utils.A.event("email_creation_audience_set",{type:mode});break;case EmailNewsletterStep.Info:goToNextStep(),tracking_utils.A.event("email_creation_info_set",{mode});break;case EmailNewsletterStep.Confirmation:setIsConfirmationDialogShown(!0),tracking_utils.A.event("email_creation_confirm_set",{mode,sent:isSendScheduled?"scheduled":"now"})}},disabled:isNextButtonDisabled||shouldDisableButtons,dataTestId:"email-stepper-next-button"}))),react.createElement(confirmation_dialog.K,{title:gettext(confirmationDialogTitle),text:gettext(isSendScheduled?`${gettext("Email will be sent")} ${(0,formatting.Rt)(scheduledFor,(0,formatting._1)(gettext),session.user.language)} ${gettext("to")} ${recipients.length} ${gettext("recipients")}. ${gettext("You can change the email until this time. Please note: Processing a long list of recipients may take a while.")}`:`${gettext("Email will be sent right now to")} ${recipients.length} ${gettext("recipients")}. ${gettext("This action can’t be undone. Please note: Processing a long list of recipients may take a while.")}`),isDialogShown:isConfirmationDialogShown,isLoading,closeModal:()=>setIsConfirmationDialogShown(!1),onConfirmClick:()=>{saveAndSendEmail(!1)},cancelButtonLabel:gettext("Edit email"),confirmButtonLabel:gettext(confirmationDialogConfirmButtonLabel)}))};var es=__webpack_require__(9053),lib=__webpack_require__(85821),csv_lib=__webpack_require__(91291),string_utils=__webpack_require__(73225),message=__webpack_require__(28962),utils=__webpack_require__(33965),get_text=__webpack_require__(59247),uniqBy=__webpack_require__(5582);const filterDuplicates=recipients=>(0,uniqBy.A)(recipients,"email");const FIVE_MB_IN_BYTES=5*__webpack_require__(98804).K9,AudienceImportDialog=({showDialog,mode,closeDialog})=>{const{gettext}=react.useContext(lib.dg),{recipients,onRecipientsUpdate}=useEmailNewsletterContext(),[newRecipients,setNewRecipients]=react.useState([]),[failedEmails,setFailedEmails]=react.useState([]),[duplicatedEmails,setDuplicatedEmails]=react.useState([]),[totalRecipients,setTotalRecipients]=react.useState(0),[csvError,setCsvError]=react.useState(""),isInErrorState=""!==csvError,isInSuccessState=!!newRecipients.length&&!failedEmails.length&&!duplicatedEmails.length,isInWarningState=!!duplicatedEmails.length||!!failedEmails.length,status=isInErrorState?"error":isInWarningState?"warning":"success",csvFile=react.useRef(null),resetAllStates=()=>{setNewRecipients([]),setFailedEmails([]),setDuplicatedEmails([]),setCsvError("")},submitButtonText=gettext(newRecipients.length?`Import ${newRecipients.length} ${(0,utils.oU)(newRecipients.length,"recipient","recipients")}`:"Next"),successMessage=gettext(`You uploaded ${newRecipients.length} ${(0,utils.oU)(newRecipients.length,"recipient","recipients")}. Check if the information is correct, then you are ready to continue.`);return react.createElement(components.Au,{show:showDialog,onClose:()=>{closeDialog(),resetAllStates()},fixedHeader:!0,"data-testid":"audience-import-dialog"},react.createElement(components.Au.Header,{title:gettext("Import recipients")}),react.createElement(components.Au.Content,null,react.createElement(components.P,null,react.createElement(get_text.q,null,"The CSV file should contain columns in following order:")),react.createElement(components.P,null,react.createElement(get_text.q,null,"1. Email")),react.createElement(components.P,null,react.createElement(get_text.q,null,"2. First name")),react.createElement(components.P,null,react.createElement(get_text.q,null,"3. Last name")),react.createElement(components.hK,{dir:"y",size:"m"}),react.createElement(components.P,null,react.createElement(get_text.q,null,"All the fields are mandatory. Please see the example below:")),react.createElement(components.hK,{dir:"y",size:"m"}),react.createElement("img",{src:"/images/email/email-list-example.png",alt:"email list example",className:"email-list-example-img"}),react.createElement(components.hK,{dir:"y",size:"m"}),react.createElement("input",{ref:csvFile,onChange:event=>{if(!event.target.files||!event.target.files.length)return;resetAllStates();const csvFile=event.target.files[0];if(csvFile.size>FIVE_MB_IN_BYTES)return void setCsvError("File exceed limit");const reader=new FileReader;reader.readAsText(csvFile,"UTF-8"),reader.onload=()=>{const readerResult=reader.result;(0,csv_lib.parse)(readerResult,{delimiter:[",",";"]},((err,csvRows)=>{if(err)return void setCsvError("Problem reading file");const convertedRecipients=csvRows.map((row=>{const[email,firstName,lastName]=row;return{email,firstName:firstName||"",lastName:lastName||""}}));setTotalRecipients(convertedRecipients.length);const failedEmails=[],duplicatedEmails=[],uniqueRecipients=[];
73convertedRecipients.forEach(((recipient,index,recipients)=>{if(!(0,string_utils.xf)(recipient.email))return void failedEmails.push(recipient.email);const emailList=recipients.map((recipient=>recipient.email));emailList.indexOf(recipient.email)!==index?duplicatedEmails.push(recipient.email):uniqueRecipients.push(recipient)})),setFailedEmails(failedEmails),setNewRecipients(uniqueRecipients),setDuplicatedEmails(duplicatedEmails)}))}},type:"file",style:{display:"none"},accept:".csv","data-testid":"upload-file-input"}),react.createElement(components.$n,{text:gettext("Upload file"),style:"secondary",onClick:()=>{var _a;return null===(_a=csvFile.current)||void 0===_a?void 0:_a.click()}}),react.createElement(components.hK,{dir:"y",size:"m"}),react.createElement(components.P,null,react.createElement(get_text.q,null,"Maximum file size: 5MB")),react.createElement(components.hK,{dir:"y",size:"m"}),!!isInSuccessState&&react.createElement(message.A,{type:"info"},react.createElement(components.P,null,successMessage)),isInErrorState&&react.createElement(message.A,{type:"error"},react.createElement(components.P,null,gettext(csvError))),isInWarningState&&react.createElement(DialogWarningMessage,{totalRecipients,failedEmails,duplicatedEmails,newRecipients})),react.createElement(components.Au.FooterActions,null,react.createElement(components.$n,{text:submitButtonText,style:"primary",onClick:()=>{onRecipientsUpdate(filterDuplicates([...recipients,...newRecipients])),closeDialog(),resetAllStates(),tracking_utils.A.event("email_creation_audience_import_done",{mode,status})},disabled:!newRecipients.length})))},DialogWarningMessage=({failedEmails,duplicatedEmails,totalRecipients,newRecipients})=>{const{gettext}=react.useContext(lib.dg),sumWarningEmails=failedEmails.length+duplicatedEmails.length,beginningParagraph=gettext(`You uploaded ${totalRecipients} ${(0,utils.oU)(totalRecipients,"recipient","recipients")}. ${sumWarningEmails} of them can't be imported:`),lastParagraph=gettext(`You still can import ${newRecipients.length} ${(0,utils.oU)(newRecipients.length,"email","emails")}. Check if the information is correct, then you are ready to continue.`);return react.createElement(message.A,{type:"warning","data-testid":"warning-message"},react.createElement(components.P,null,beginningParagraph),react.createElement("ul",{className:"email-list"},duplicatedEmails.map(((email,index)=>react.createElement("li",{key:index},react.createElement(components.P,null,react.createElement(get_text.q,null,email," - duplicated email"))))),failedEmails.map(((email,index)=>react.createElement("li",{key:index},react.createElement(components.P,null,react.createElement(get_text.q,null,email," - wrong email format")))))),react.createElement(components.hK,{dir:"y",size:"m"}),react.createElement(components.P,null,lastParagraph))};var classnames=__webpack_require__(32485),useClickOutsideElement=__webpack_require__(28576),use_debounced_value=__webpack_require__(39717),react_query_es=__webpack_require__(75942),api=__webpack_require__(56433);const useFindRecipients=searchTerm=>(0,react_query_es.useQuery)(["recipient-candidates",searchTerm],(()=>(searchTerm=>api.Y4.mailingFindRecipientEntities(searchTerm).then((res=>res.data)))(searchTerm)),{enabled:searchTerm.length>=3}),getGroupList=()=>api.GA.getGroupList().then((res=>res.data)).then((groups=>groups.filter((group=>group.memberCount>0))));function convertCountToInt(value){const result=parseInt(value,10);return isNaN(result)?0:result}const Row=emotion_styled_browser_esm.A.div`
74	padding: ${p=>p.theme.spacing.S} 0;
75	display: flex;
76	align-items: center;
77	justify-content: space-between;
78
79	.icon {
80		margin-right: ${p=>p.theme.spacing.S};
81	}
82
83	.title {
84		padding-left: ${p=>p.theme.spacing.M};
85		width: 35%;
86	}
87
88	.info {
89		width: 18%;
90	}
91
92	.action {
93		width: 29%;
94		display: flex;
95		justify-content: flex-end;
96		padding-right: ${p=>p.theme.spacing.M};
97	}
98`,AudienceSearchRow=({title,description,additionalInfo,action,icon,className})=>react.createElement(Row,{className},react.createElement("div",{className:"title"},icon?react.createElement(index_es.g,{icon,size:"lg",className:"icon"}):null,react.createElement(components.VY,null,title)),react.createElement("div",{className:"info"},react.createElement(components.VY,null,description)),react.createElement("div",{className:"info"},react.createElement(components.VY,null,additionalInfo)),react.createElement("div",{className:"action"},action));var loader=__webpack_require__(95259);const LoaderWrapper=emotion_styled_browser_esm.A.div`
99	padding: ${p=>p.theme.spacing.S};
100	display: flex;
101	justify-content: center;
102`,audience_search_input_Row=emotion_styled_browser_esm.A.div`
103	padding: ${p=>p.theme.spacing.S} 0;
104	display: flex;
105	align-items: center;
106	justify-content: flex-start;
107`,TitleRow=(0,emotion_styled_browser_esm.A)(audience_search_input_Row)`
108	border-top: 1px solid ${p=>p.theme.color.SpaceDarkest};
109
110	.ds-description {
111		font-weight: 500;
112		padding-left: ${p=>p.theme.spacing.M};
113	}
114`,InputContainer=emotion_styled_browser_esm.A.div`
115	position: relative;
116`,AudienceSearchInputResultStyled=(0,emotion_styled_browser_esm.A)((({isLoading,children,className})=>react.createElement("div",{className:classnames(className)},isLoading?react.createElement(LoaderWrapper,null,react.createElement(loader.a,{isShow:!0,cssStyle:{textAlign:"center"}})):children)))`
117	width: 100%;
118	border: 1px solid ${p=>p.theme.color.SpaceDarkest};
119	background-color: white;
120	box-shadow: 0 2px 8px 0 rgba(0, 0, 0, 0.5);
121	max-height: 300px;
122	overflow-y: auto;
123	border-collapse: collapse;
124	position: absolute;
125	z-index: 1;
126`,AudienceSearchInput=({onSelected,onSelectAll,selectedEntities=[]})=>{const{session,sessionUtil:{isGroupAdmin}}=(0,use_session.w)(),[inputText,setInputText]=react.useState(""),[showDropdown,setShowDropdown]=react.useState(!1),{gettext,ngettext}=(0,use_get_text.z)(),wrapperRef=react.useRef(null),{data:groupList=[]}=(0,react_query_es.useQuery)("email-newsletter-groups",getGroupList),isAllCompany=!(groupList.length!==selectedEntities.length||!selectedEntities.length),allCompanyMembersCount=react.useMemo((()=>groupList.reduce(((count,group)=>count+group.memberCount),0)),[groupList]),getUsersCountString=react.useCallback((count=>ngettext(gettext("%s user"),gettext("%s users"),count)),[gettext,ngettext]),defaultSuggestions=react.useMemo((()=>[{title:gettext("All company"),id:"0",isSelected:isAllCompany,actionText:gettext("Add recipients"),icon:free_solid_svg_icons.u4D,action:isAllCompany?void 0:()=>{onSelectAll(groupList.map((group=>group._id))),setShowDropdown(!1)},description:ngettext(gettext("%s group"),gettext("%s groups"),groupList.length),additionalInfo:getUsersCountString(allCompanyMembersCount),type:dist.HuM.Group}]),[allCompanyMembersCount,getUsersCountString,gettext,groupList,isAllCompany,ngettext,onSelectAll]),{debouncedValue:debouncedInputText}
126=(0,use_debounced_value.o)(inputText,500),showDefault=debouncedInputText.length<3,{data:searchResult,isLoading}=useFindRecipients(debouncedInputText),entityTypesOrder=react.useMemo((()=>showDefault?isGroupAdmin()?[{key:dist.HuM.Group,title:gettext("Group")}]:[{key:dist.HuM.Company,title:gettext("Company")},{key:dist.HuM.Group,title:gettext("Group")}]:[{key:dist.HuM.Group,title:gettext("Group")},{key:dist.HuM.Team,title:gettext("Team")},{key:dist.HuM.User,title:gettext("User")}]),[gettext,isGroupAdmin,showDefault]),defaultList=react.useMemo((()=>groupList.filter((group=>!isGroupAdmin()||group._id===session.user.groupId)).map((group=>({entityId:group._id,entityType:dist.HuM.Group,entityName:group.name,additionalInfo:group.memberCount.toString()})))),[groupList,isGroupAdmin,session.user.groupId]),searchResultFiltered=react.useMemo((()=>searchResult?searchResult.filter((item=>![dist.HuM.Group,dist.HuM.Team].includes(item.entityType)||convertCountToInt(item.additionalInfo))):[]),[searchResult]),searchResultMap=react.useMemo((()=>(showDefault?defaultList:searchResultFiltered).reduce(((map,current)=>{const{entityType:key,entityName,additionalInfo,entityId}=current,isSelected=selectedEntities.includes(entityId),description=key===dist.HuM.User?additionalInfo:getUsersCountString(convertCountToInt(additionalInfo)),suggestion={title:gettext(entityName),id:entityId,isSelected,actionText:gettext("Add recipients"),action:isSelected?void 0:()=>{onSelected(entityId,key),setShowDropdown(!1)},description:gettext(description)},existing=map.get(key);return existing?existing.push(suggestion):map.set(key,[suggestion]),map}),new Map([[dist.HuM.Company,defaultSuggestions]]))),[showDefault,defaultList,searchResultFiltered,defaultSuggestions,selectedEntities,gettext,getUsersCountString,onSelected]);(0,useClickOutsideElement.z)(wrapperRef,(()=>setShowDropdown(!1)));const noResultsFound=!showDefault&&!searchResultFiltered.length;return react.createElement(InputContainer,null,react.createElement("div",{className:"audience-search-input",ref:wrapperRef},react.createElement(components.TZ,{size:"48",type:"text",value:inputText,onChange:event=>setInputText(event.target.value),style:{width:"100%"},icon:free_solid_svg_icons.QLR,placeholder:gettext("Add groups, teams or users"),onFocus:()=>{showDropdown||setShowDropdown(!0)}}),showDropdown&&react.createElement(AudienceSearchInputResultStyled,{"data-testid":"recipients-dropdown",isLoading},noResultsFound?react.createElement(TitleRow,null,react.createElement(components.VY,null,react.createElement(get_text.q,null,"No results found"))):entityTypesOrder.map((({key,title})=>{var _a;const result=searchResultMap.get(key);return(null==result?void 0:result.length)?react.createElement(react.Fragment,{key},key===dist.HuM.Company?null:react.createElement(TitleRow,null,react.createElement(components.VY,null,react.createElement(get_text.q,null,title))),null===(_a=searchResultMap.get(key))||void 0===_a?void 0:_a.map((suggestion=>{const isSelected=suggestion.isSelected,ctaText=key===dist.HuM.User?gettext("Add recipient"):gettext("Add recipients"),actionText=isSelected?gettext("Added"):ctaText;return react.createElement(AudienceSearchRow,{key:suggestion.id,className:classnames(suggestion.className),title:suggestion.title,icon:suggestion.icon,description:suggestion.description,additionalInfo:suggestion.additionalInfo,action:react.createElement(components.$n,{style:"0"!==suggestion.id||isSelected?"link":"secondary",text:gettext(actionText),onClick:suggestion.action})})}))):null})))))},useFetchRecipientCandidates=()=>{const client=(0,react_query_es.useQueryClient)();return react.useCallback((({entityType,id})=>client.fetchQuery(["recipient-candidates",entityType,id],(()=>(({entityType,id})=>api.Y4.mailingRetrieveRecipientCandidates(entityType,id).then((response=>response.data)))({entityType,id})))),[client])},AllRecipientsCounter=emotion_styled_browser_esm.A.span`
127	color: #6c6c6c;
128	font-weight: normal;
129`,EmailNewsletterRecipientsList=()=>{const{gettext}=(0,use_get_text.z)(),[showImportDialog,setShowImportDialog]=react.useState(!1),[recipientsPage,setRecipientsPage]=react.useState(1),[isShowRemovalDialog,setIsShowRemovalDialog]=react.useState(!1),[selectedEmail,setSelectedEmail]=react.useState(""),[selectedEntities,setSelectedEntities]=react.useState([]),closeRemovalDialog=()=>{setIsShowRemovalDialog(!1)},{session}=(0,use_session.w)(),{recipients,onRecipientsUpdate,mode}=useEmailNewsletterContext(),renderRows=react.useMemo((()=>
129{if(recipients.length){const recipientsBoundaries=20*recipientsPage;return recipients.slice(0,recipientsBoundaries)}return[]}),[recipients,recipientsPage]).map((recipient=>[recipient.email,recipient.firstName,recipient.lastName,react.createElement(stencil_generated.s5,{key:recipient.email,triggerA11yLabel:gettext("Recipient actions"),triggerNativeAttributes:{"data-testid":"recipient-action-menu-button"}},react.createElement(stencil_generated.h1,{onClick:()=>{return email=recipient.email,setSelectedEmail(email),void setIsShowRemovalDialog(!0);var email}},gettext("Delete")))])),onUpdateRecipients=react.useCallback((()=>{recipients.length&&setRecipientsPage((page=>page+1))}),[recipients]),onOpenImportDialog=react.useCallback((()=>{setShowImportDialog(!0),tracking_utils.A.event("email_creation_audience_import_started",{mode})}),[mode]),getRecipientCandidates=useFetchRecipientCandidates();return react.createElement("div",{className:"email-newsletter"},react.createElement(components.hK,{dir:"y",size:"xxl"}),react.createElement("div",{className:"email-newsletter-table-intro"},react.createElement(components.H2,null,react.createElement(get_text.q,null,"Audience")),react.createElement(components.$n,{style:"link",text:gettext("Import file"),type:"button",onClick:onOpenImportDialog})),react.createElement(components.hK,{dir:"y",size:"xxl"}),react.createElement(AudienceSearchInput,{selectedEntities,onSelected:async(id,entityType)=>{if(!selectedEntities.includes(id)){setSelectedEntities([...selectedEntities,id]);const data=await getRecipientCandidates({entityType,id});onRecipientsUpdate(filterDuplicates([...recipients,...data]))}},onSelectAll:async selectedGroups=>{setSelectedEntities(selectedGroups);const data=await getRecipientCandidates({entityType:dist.HuM.Company,id:session.company._id});onRecipientsUpdate([...recipients,...data])}}),react.createElement(components.hK,{dir:"y",size:"xxl"}),recipients.length?react.createElement(components.H4,null,react.createElement(get_text.q,null,"All recipients")," ",react.createElement(AllRecipientsCounter,null,recipients.length)):react.createElement(components.YC,null,react.createElement(get_text.q,null,"Please use search for adding users")),react.createElement(components.hK,{dir:"y",size:"l"}),!!recipients.length&&react.createElement(react.Fragment,null,react.createElement(components.bQ,{headings:[gettext("Email"),gettext("First Name"),gettext("Last Name"),gettext("")],columnStyles:[{padding:"14px 16px"},{padding:"14px 16px"},{padding:"14px 16px"},{padding:"14px 16px"}],rows:renderRows}),react.createElement(es.Y,{key:"email-recipients",onEnter:onUpdateRecipients})),react.createElement(AudienceImportDialog,{showDialog:showImportDialog,mode,closeDialog:()=>setShowImportDialog(!1)}),react.createElement(confirmation_dialog.K,{isDialogShown:isShowRemovalDialog,closeModal:closeRemovalDialog,onConfirmClick:async()=>{const newRecipients=recipients.filter((recipient=>recipient.email!==selectedEmail));onRecipientsUpdate(newRecipients),closeRemovalDialog()},title:gettext("Do you really want to remove?"),cancelButtonLabel:gettext("No, leave it"),confirmButtonLabel:gettext("Yes, remove it"),text:gettext("You are trying to remove a user from the recipient list.")}))},useHideHTMLElement=cssSelector=>{const initialDisplayValue=react.useRef("");react.useEffect((()=>{const element=document.querySelector(cssSelector);return element&&(initialDisplayValue.current=element.style.display,element.style.display="none"),()=>{element&&(element.style.display=initialDisplayValue.current)}}),[cssSelector])};var util=__webpack_require__(58151),react_redux_es=__webpack_require__(49924),redux=__webpack_require__(82960),shared_react_components=__webpack_require__(67940);const PostWrapper=emotion_styled_browser_esm.A.div`
130	padding-bottom: ${props=>props.theme.spacing.S};
131	padding-top: ${props=>props.theme.spacing.S};
132	margin: 0 ${props=>`-${props.theme.spacing.S}`};
133	&:not(:last-child) {
134		border-bottom: 1px solid rgba(151, 151, 151, 0.3);
135	}
136`,PostItem=emotion_styled_browser_esm.A.article`
137	display: flex;
138	position: relative;
139	padding: ${props=>props.theme.spacing.S};
140	transition: background-color 0.2s linear;
141	border-radius: 5px;
142	&:hover {
143		background-color: ${props=>(colorRGB=>{const colorArray=colorRGB.match(/\d+/g);if(colorArray){const rgb=colorArray.map((item=>Number(item)));return`rgba(${null==rgb?void 0:rgb.toString()},0.15)`}throw new Error("Color cannot be converted")})(props.theme.color.PrimaryDefault)};
144	}
145	& .image-wrapper {
146		position: relative;
147	}
148`,PostImage=(0,emotion_styled_browser_esm.A)(shared_react_components.Cr)`
149	width: auto;
150	max-height: 120px;
151	border-radius: 5px;
152`,PostTextContainer=emotion_styled_browser_esm.A.div`
153	width: 66%;
154	flex-grow: 1;
155	display: flex;
156	flex-direction: column;
157	justify-content: space-around;
158`,PostClickableCard=emotion_styled_browser_esm.A.button`
159	margin: 0;
160	padding: 0;
161	background: none;
162	border: none;
163	color: inherit;
164	font-family: inherit;
165	font-size: inherit;
166	font-weight: inherit;
167	text-overflow: ellipsis;
168	overflow: hidden;
169	max-width: 100%;
170	&:hover,
171	&:focus,
172	&:active {
173		background: none;
174	}
175	&:after {
176		position: absolute;
177		content: "";
178		z-index: 10000;
179		top: 0;
180		bottom: 0;
181		left: 0;
182		right: 0;
183		cursor: pointer;
184	}
185`,PostBody=(0,emotion_styled_browser_esm.A)(components.P)`
186	display: -webkit-box;
187	-webkit-line-clamp: 3;
188	-webkit-box-orient: vertical;
189	overflow: hidden;
190`,PostImageOverlay=emotion_styled_browser_esm.A.div`
191	position: absolute;
192	top: 0;
193	bottom: 0;
194	right: 0;
195	left: 0;
196	background: rgba(0, 0, 0, 0.28);
197	font-size: 32px;
198	color: white;
199	border-radius: 5px;
200	display: flex;
201	justify-content: center;
202	align-items: center;
203`,EmailEditorPostItem=({post,onSelectPost})=>{var _a,_b;
203const isArticleOrLink=post.type===dist.EA9.Article||post.type===dist.EA9.Link,isImage=post.type===dist.EA9.Image,isVideo=post.type===dist.EA9.Video,postImagesLength=post.imageMetadataList.length,showImageCounter=postImagesLength>1;return react.createElement(PostWrapper,null,react.createElement(PostItem,null,react.createElement("div",{className:"image-wrapper"},react.createElement(PostImage,{token:dist.JRo.Post,fallbackImage:"/images/no-image-16x9.jpg",imageUrl:null!==(_b=null===(_a=post.imageMetadataList[0])||void 0===_a?void 0:_a.url)&&void 0!==_b?_b:"",alt:post.title}),isImage&&showImageCounter&&react.createElement(PostImageOverlay,null,react.createElement("span",null,"+"+(postImagesLength-1))),isVideo&&react.createElement(PostImageOverlay,null,react.createElement("img",{"data-testid":"video-icon",src:"/images/video-icon.svg",alt:""}))),react.createElement(components.hK,{size:"m",dir:"x"}),react.createElement(PostTextContainer,null,react.createElement(components.YC,null,"Author: ",post.createdByDisplay),react.createElement(components.H4,null,react.createElement(PostClickableCard,{onClick:()=>{onSelectPost(post)}},react.createElement(get_text.q,null,post.title))),isArticleOrLink&&react.createElement(PostBody,null,post.body),isImage&&react.createElement(components.P,null,react.createElement(get_text.q,null,`${postImagesLength} ${showImageCounter?"images":"image"}`)),isVideo&&react.createElement(components.P,null,react.createElement(get_text.q,null,"Video file")))))};var loading_indicator=__webpack_require__(77559);const LoadingWrapper=emotion_styled_browser_esm.A.div`
204	& div {
205		margin: 0 auto;
206	}
207`,EmailEditorPostList=({posts,isLoading,onSelectPost,onFetchPosts})=>react.createElement(react.Fragment,null,react.createElement("ul",null,posts.map((post=>react.createElement(EmailEditorPostItem,{key:post._id,post,onSelectPost})))),isLoading&&react.createElement(LoadingWrapper,null,react.createElement(loading_indicator.I,null)),!isLoading&&react.createElement(es.Y,{key:"email-dialog-posts",onEnter:onFetchPosts})),CaptionContainer=emotion_styled_browser_esm.A.div`
208	display: flex;
209
210	& button {
211		margin-top: -4px;
212	}
213`,EmailEditorPostDialogCaption=({searchString,onShowRecentPost})=>{const{gettext}=(0,use_get_text.z)();return searchString?react.createElement(CaptionContainer,null,react.createElement(components.P,null,react.createElement(get_text.q,null,"Search results for "),react.createElement("span",null,"“",searchString,"”")),react.createElement(components.$n,{type:"button",style:"link",text:gettext("Show recent posts"),onClick:onShowRecentPost})):react.createElement(components.P,null,react.createElement(get_text.q,null,"Recent posts"))};var actions=__webpack_require__(14099),typesafe_actions_umd_production=__webpack_require__(77475),axios=__webpack_require__(72505),axios_default=__webpack_require__.n(axios),success_error_effects=__webpack_require__(21507),post_utils=__webpack_require__(733);const fetchPosts=()=>async(dispatch,getState)=>{var _a,_b,_c;const{EmailPosts:{isFetching,isEndReached,filter:{page,q}}}=getState();if(isFetching||isEndReached)return;dispatch(actions.wj.request());const[response,error]=await(0,util.Oi)((async()=>api.d_.getPostList(dist.sjy.Published,page,post_utils.fZ,void 0,q)));if(error){if(axios_default().isCancel(error))return;return dispatch((0,success_error_effects.V)((0,typesafe_actions_umd_production.getType)(actions.wj.request),error,"fetchPosts")),void dispatch(actions.wj.failure(null!==(_c=null===(_b=null===(_a=null==error?void 0:error.response)||void 0===_a?void 0:_a.data)||void 0===_b?void 0:_b.message)&&void 0!==_c?_c:""))}dispatch(actions.wj.success(response.data))},SearchForm=emotion_styled_browser_esm.A.form`
214	display: flex;
215	justify-content: space-between;
216
217	& .ds-input {
218		flex-grow: 1;
219	}
220`,EmailEditorPostDialog=(0,react_redux_es.Ng)((state=>({posts:state.EmailPosts.posts,filter:state.EmailPosts.filter,isFetching:state.EmailPosts.isFetching})),(dispatch=>(0,redux.bindActionCreators)({fetchPosts,setSearchQuery:actions.Ri,reset:actions.cL},dispatch)))((({posts,isFetching,filter,isDialogShown,onSelectPost,onClose,fetchPosts,setSearchQuery,reset})=>{const{gettext}=(0,use_get_text.z)(),[searchInputValue,setSearchInputValue]=react.useState("");(0,react.useEffect)((()=>{isDialogShown&&fetchPosts()}),[isDialogShown]);const isSearchFormValid=()=>searchInputValue.length>=3;return isDialogShown?react.createElement(components.Au,{show:!0,fixedHeader:!0,onClose:()=>{onClose(),setSearchInputValue(""),reset()},width:800,height:"max"},react.createElement(components.Au.Header,{title:gettext("Adding post")}),react.createElement(components.Au.Content,null,react.createElement(SearchForm,{onSubmit:event=>{event.preventDefault(),isSearchFormValid()&&(reset(),setSearchQuery(searchInputValue),fetchPosts())}},react.createElement(components.TZ,{style:{width:"100%"},type:"text",size:"48",icon:free_solid_svg_icons.MjD,placeholder:gettext("Search posts by name…"),value:searchInputValue,onChange:e=>setSearchInputValue(e.target.value)}),react.createElement(components.hK,{dir:"x",size:"xl"}),react.createElement(components.$n,{type:"submit",style:"primary",text:gettext("Search"),size:"large",disabled:!isSearchFormValid()})),react.createElement(components.hK,{dir:"y",size:"l"}),react.createElement(EmailEditorPostDialogCaption,{searchString:filter.q,onShowRecentPost:()=>{setSearchInputValue(""),reset(),fetchPosts()}}),react.createElement(EmailEditorPostList,{posts,isLoading:isFetching,onSelectPost,onFetchPosts:fetchPosts}))):null}));var dist_index_es=__webpack_require__(55163);const renderCustomCss=(color,fontUrl)=>{const customFontFamilyName=fontUrl?util.J9:void 0;return`\n@import url(https://fonts.googleapis.com/css2?family=Lato:wght@400;700&display=swap);\n\n\n:root {\n    /* Dynamically set color here */\n    --company-color: #${color};\n}\n\n${(fontUrl=>fontUrl?`\n@font-face {\n  font-family: ${util.J9};\n  src: url("${fontUrl}");\n  font-display: swap;\n}`:"")(fontUrl)}\n\nhtml,\nbody.bee--cs,\nbody.bee--cs .h1,\nbody.bee--cs .h2,\nbody.bee--cs .h3,\nbody.bee--cs .h4,\nbody.bee--cs .h5,\
220nbody.bee--cs .h6,\nbody.bee--cs .tooltip,\nbody.bee--cs h1,\nbody.bee--cs h2,\nbody.bee--cs h3,\nbody.bee--cs h4,\nbody.bee--cs h5,\nbody.bee--cs h6,\nbody.bee--cs .tgl-title {\n    font-family: ${customFontFamily=customFontFamilyName,customFontFamily?`${customFontFamily}, Lato, Helvetica, Arial, sans-serif`:"Lato, Helvetica, Arial, sans-serif"};\n}\n\n/*Undo and history*/\ndiv button.stagemode__button--active {\n    background: var(--company-color) !important;\n}\n\n.history__step::before {\n    background: var(--company-color) !important;\n}\n\n.history__step--focused::after {\n    background: var(--company-color) !important;\n}\n\n.undo-redo.undo-redo--open  .undo-redo__toggleButton {\n    background: var(--company-color) !important;\n}\n\n/*Sidebar styles*/\n.btn-primary {\n    background: var(--company-color) !important;\n    border: var(--company-color) !important;\n}\n\n.panel:hover {\n    border: 1px solid var(--company-color) !important;\n    box-shadow: none !important;\n}\n\n.rc-slider-track {\n    background: var(--company-color) !important;\n}\n\n.dropdown__control--is-focused {\n    box-shadow: 0 0 0 1px var(--company-color) !important;\n}\n\n.select__control, .select__control.select__control--is-focused, .select__control:hover {\n    border: 1px solid !important;\n    box-shadow: inset 0 1px 2px 0 rgba(53, 53, 53, 0.3);\n}\n\n.select__control {\n    border-color: #9b9b9b !important;\n}\n\n.select__control.select__control--is-focused, .select__control.select__control:hover {\n    outline: none !important;\n    border: 1px solid !important;\n    border-color: var(--company-color) !important;\n}\n\n.select__option {\n    margin: 0 !important;\n    width: 100% !important;\n}\n\n.select__option.select__option--is-focused {\n    outline: none !important;\n    background: var(--company-color) !important;\n}\n\n.wrapper-color-selector--cs input {\n    border: 1px solid #9b9b9b  !important;\n    box-shadow: inset 0 1px 2px 0 rgba(53, 53, 53, 0.3);\n}\n\n.wrapper-color-selector--cs input:focus {\n    border: 1px solid var(--company-color) !important;\n    outline: none !important;\n}\n\n.row-border-radius-container .padding-container .square {\n    background: var(--company-color) !important;\n}\n\n.react-toggle--checked div.react-toggle-track {\n    background: var(--company-color) !important;\n}\n\n.previewbox {\n    background: var(--company-color) !important;\n}\n\n.edit-icons {\n    background: var(--company-color) !important;\n}\n\n/*Email body overlay and selected row styles*/\nbody.bee--cs .module-box > div.icon-move, body.bee--cs .module-box--selected.mouseover:hover > .icon-move, body.bee--cs .row-container > .icon-move, body.bee--cs .row-container-outer.selected .row-container > div.icon-move {\n    background: var(--company-color) !important;\n}\n\nbody.bee--cs div.row-container-outer.selected div.row-container:hover div.row-selector:after, div.module-box:after, div.module-box:not(.grabbed):after, div.module-box--selected:after, div.module-box--selected:hover:after, body.bee--cs div.module-box--selected.mouseover:hover:after {\n    outline-color: var(--company-color) !important;\n}\n\nbody.bee--cs div.row-container:hover div.row-selector:after, div.module-box.hover:after, div.module-box.mouseover:hover:not(.grabbed):after {\n    outline-color: var(--company-color) !important;\n}\n\nbody.bee--cs div.module-box > div.icon-move, body.bee--cs div.module-box--selected.mouseover:hover > div.icon-move, body.bee--cs div.row-container > div.icon-move, body.bee--cs div.row-container-outer.selected div.row-container > div.icon-move {\n    background: var(--company-color) !important;\n}\n\nbody.bee--cs div.row-container:hover > div.icon-move, div.module-box.mouseover:hover div.icon-move {\n    background: var(--company-color) !important;\n}\n\ndiv.widget__textbox textarea, div.row-selector:after {\n    outline-color: var(--company-color) !important;\n}\n\n.row-container-outer {\n    outline-color: var(--company-color) !important;\n}\n\n.row-container-outer--hover {\n    border: var(--company-color) !important;\n}\n\n/* Customize column */\n.column-manager--add {\n    color: var(--company-color) !important;\n}\n\ndiv.widget-bar-column.widget-bar-column--selected {\n    box-shadow: inset 0 0 0 2px var(--company-color) !important;\n}\n\ndiv.widget-bar-column.widget-bar-column--cs:hover {\n    color: var(--company-color) !important;\n    box-shadow: inset 0 0 0 2px var(--company-color) !important;\n\n}\n\n/*Empty states buttons*/\n.content-labels .btn.btn-default {\n    background: var(--company-color) !important;\n}\n\n/*Plugin Spinner*/\n#loadingSpinnerContainer {\n    display: none !important;\n}\n`;var customFontFamily},getCustomCss=(color,fontUrl)=>{if(!/^[a-fA-F0-9]{6}$/.test(color))return"";return`data:text/css;base64,${btoa(renderCustomCss(color,fontUrl))}`};var toast=__webpack_require__(62614);const EmailNewsletterEditor=()=>{const{gettext}=(0,use_get_text.z)(),{emailTemplate,onEmailTemplateUpdate,onChangeRecipients,isEmailTemplateSaved,existingTemplateLoaded,isEmailTemplateCleared,setIsEmailTemplateSaved,setIsEmailTemplateCleared,setIsTemplateLoaded}=useEmailEditorContext(),{mode}=useEmailNewsletterContext(),[showDialog,setShowDialog]=react.useState(!1),[beeAuth,setBeeAuth]=react.useState(null);react.useEffect((()=>{(async()=>{var _a;const[response,error]=await(0,util.Oi)((()=>api.Y4.mailingAuthenticateBeefree()));error?(0,toast.Kf)({message:null!==(_a=(0,string_utils.fi)(error))&&void 0!==_a?_a:gettext("An error occurred while fetching the Bee plugin credentials, please try again later.")}):setBeeAuth(response.data)})()}),[gettext]);const onSave=react.useCallback(((json,html)=>{onEmailTemplateUpdate({json,html}),onChangeRecipients(),setIsEmailTemplateSaved(!1)}),[onEmailTemplateUpdate,onChangeRecipients,setIsEmailTemplateSaved]),showSmarpPostDialog=react.useCallback((()=>setShowDialog(!0)),[]),handleTemplateLoad=react.useCallback((()=>setIsTemplateLoaded(!0)),[]),{session}=(0,use_session.w)(),{user}=session,{language}=user,{beePlugin,isStarted,initializePlugin,resolveBeePluginDialog,rejectBeePluginDialog}=(({containerId,onSave,onLoad,showSmarpPostDialog,language})=>{const beePluginRef=react.useRef(void 0),[resolveFunc,setResolveFunc]=react.useState(),[rejectFunc,setRejectFunc]=react.useState(),[isStarted,setIsStarted]=react.useState(!1),{session}=(0,use_session.w)(),companyColor=react.useMemo((()=>(session.company.HighlightColor||"#ED5D40").slice(1)),[session.company.HighlightColor]),config=react.useMemo((()=>({uid:`smarp-${session.company._id}`,container:containerId,language:"en"===language?"en-US":(0,utils.qz)(language),mergeTags:[{name:"First Name",value:"%firstName%"},{name:"Last Name",value:"%lastName%"}],customCss:getCustomCss(companyColor,session.company.fontUrl),rowsConfiguration:{emptyRows:!0,defaultRows:!0},contentDialog:{addOn:{label:"Smarp post",handler:async(resolve,reject,args)=>{(args=>"object"==typeof args&&null!==args&&"contentDialogId"in args&&"string"==typeof args.contentDialogId)(args)&&"smarpPostHandler"===args.contentDialogId&&(setRejectFunc((()=>reject)),setResolveFunc((()=>resolve)),showSmarpPostDialog())}}},onSave,onLoad})),[session.company._id,session.company.fontUrl,containerId,companyColor,onSave,onLoad,language,showSmarpPostDialog]),initializePlugin=react.useCallback((async(jsonTemplate,credentials)=>{const beeToken=(creds=>{const credentials=creds;return{access_token:"string"==typeof credentials.access_token?credentials.access_token:"string"==typeof credentials.accessToken?credentials.accessToken:null,v2:"boolean"!=typeof credentials.v2||credentials.v2}})(credentials);if(!beeToken.access_token)return void console.error("Missing Bee access token — plugin will not initialize.");const bee=new dist_index_es.A(beeToken);beePluginRef.current=bee,await bee.start(config,jsonTemplate),setIsStarted(!0)}),[config]);return react.useMemo((()=>({initializePlugin,isStarted,beePlugin:beePluginRef.current,resolveBeePluginDialog:resolveFunc,rejectBeePluginDialog:rejectFunc})),[initializePlugin,isStarted,rejectFunc,resolveFunc])})({containerId:"bee-plugin-container",onSave,onLoad:handleTemplateLoad,showSmarpPostDialog,language});react.useEffect((()=>
220{if(!beePlugin&&("new"===mode||"new"!==mode&&existingTemplateLoaded)&&beeAuth){const emailTemplateJsonObject=getParsedJSONTemplate(emailTemplate.json);initializePlugin(emailTemplateJsonObject,beeAuth)}}),[beePlugin,emailTemplate.json,existingTemplateLoaded,initializePlugin,mode,beeAuth]);const loadTemplate=react.useCallback((emailTemplateJsonString=>{if(beePlugin&&isStarted){const emailTemplateJsonObject=getParsedJSONTemplate(emailTemplateJsonString);beePlugin.load(emailTemplateJsonObject)}}),[beePlugin,isStarted]);react.useEffect((()=>{loadTemplate(emailTemplate.json)}),[emailTemplate,loadTemplate]),react.useEffect((()=>{isEmailTemplateSaved&&beePlugin&&beePlugin.save()}),[beePlugin,isEmailTemplateSaved]),react.useEffect((()=>{isEmailTemplateCleared&&(loadTemplate(DEFAULT_TEMPLATE),setIsEmailTemplateCleared(!1))}),[isEmailTemplateCleared,loadTemplate,setIsEmailTemplateCleared]);const onClose=react.useCallback((()=>{setShowDialog(!1),rejectBeePluginDialog&&rejectBeePluginDialog()}),[rejectBeePluginDialog]),onSelectPost=react.useCallback((post=>{setShowDialog(!1),resolveBeePluginDialog&&resolveBeePluginDialog(((post,companySubdomain)=>({type:"html",value:{html:prepareHtmlTemplate(post,companySubdomain)}}))(post,session.company.subdomain))}),[resolveBeePluginDialog,session.company.subdomain]);return react.createElement(react.Fragment,null,react.createElement("div",{id:"bee-plugin-container"}),react.createElement(EmailEditorPostDialog,{isDialogShown:showDialog,onSelectPost,onClose}))};var moment=__webpack_require__(95093),dayjs_min=__webpack_require__(74353),single_date_picker=__webpack_require__(51187),email_details_content=__webpack_require__(74707),email_overview=__webpack_require__(96187);const EmailFieldError=({children})=>react.createElement("div",{className:"email-input-error"},children),EmailNewsletterConfirmation=()=>{const{gettext}=(0,use_get_text.z)(),[sendAtFocus,setSendAtFocus]=react.useState(!1),{onIsSendScheduledChange,isSendScheduled,scheduledFor:scheduledForRaw,onChangeScheduledFor,errors={},emailInfo:{emailSubject,fromEmail,fromName},goToChangeInfo,goToChangeRecipients,goToChangeContent,recipients}=useEmailNewsletterContext(),{emailTemplate:{html}}=useEmailEditorContext(),scheduledFor=scheduledForRaw?moment(scheduledForRaw.toDate()):void 0;react.useEffect((()=>{if(isSendScheduled&&!scheduledFor){const currentTime=dayjs_min(),minutesToAdd=30-currentTime.minute()%30,dateRoundedToNearestHalfHour=currentTime.add(minutesToAdd,"minutes");onChangeScheduledFor(dateRoundedToNearestHalfHour)}}),[isSendScheduled,onChangeScheduledFor,scheduledFor]);const handleChangeScheduledFor=date=>{onChangeScheduledFor(dayjs_min(date.toDate()))},toggleIsSendScheduled=()=>{onIsSendScheduledChange(!isSendScheduled)},{scheduledError=""}=errors;return react.createElement("div",{className:"email-newsletter"},react.createElement(components.hK,{dir:"y",size:"xxl"}),react.createElement(components.H2,null,react.createElement(get_text.q,null,"Confirmation")),react.createElement("div",{className:"email-newsletter-send-options"},react.createElement(components.a,{label:gettext("Schedule email"),checked:isSendScheduled,value:"1",name:"send-scheduled",onChange:toggleIsSendScheduled}),isSendScheduled&&react.createElement("div",{className:"email-schedule-inputs-container"},react.createElement("div",{className:"email-schedule-inputs-row"},react.createElement("div",{className:"email-schedule-inputs"},react.createElement(single_date_picker.X,{date:scheduledFor,onDateChange:handleChangeScheduledFor,onFocusChange:({focused})=>{setSendAtFocus(!!focused)},focused:sendAtFocus,id:"sendAt",isOutsideRange:date=>date.isBefore(dayjs_min(),"days"),customInputIcon:react.createElement(components.hN,{scale:"s15"})}),react.createElement(components.hK,{dir:"x",size:"m"}),react.createElement(shared_react_components.y5,{selected:scheduledFor,onChange:handleChangeScheduledFor})),react.createElement(components.hK,{dir:"x",size:"m"}),react.createElement(components.P,null,react.createElement(get_text.q,null,"Please choose the time in your timezone."))),Boolean(scheduledError)&&react.createElement(EmailFieldError,null,react.createElement(get_text.q,null,scheduledError))),react.createElement(components.a,{label:gettext("Send email r
220ight now"),checked:!isSendScheduled,value:"2",name:"send-now",onChange:toggleIsSendScheduled})),react.createElement(components.H5,null,react.createElement(get_text.q,null,"Email overview")),react.createElement(components.hK,{dir:"y",size:"s"}),react.createElement(components.cG,{type:"default"}),react.createElement(components.hK,{dir:"y",size:"m"}),react.createElement(email_overview._,{emailSubject,recipientsCount:recipients.length,fromName,fromEmail,showContentRow:!0,goToChangeInfo,goToChangeRecipients,goToChangeContent}),react.createElement(components.hK,{dir:"y",size:"m"}),react.createElement(email_details_content.g,{markup:html}))},EmailFieldInput=({error,state="default",className,...props})=>{const errorState=error?"error":state;return react.createElement("div",{className:`email-field-input${className&&" "+className}`},react.createElement(components.TZ,{size:"48",...props,state:errorState}),Boolean(error)&&react.createElement(EmailFieldError,null,react.createElement(get_text.q,null,error)))},EmailNewsletterInfo=()=>{const{gettext}=(0,use_get_text.z)(),{emailInfo:data,onEmailInfoUpdate,errors={}}=useEmailNewsletterContext(),onDataUpdate=event=>{const{name,value}=event.target;onEmailInfoUpdate(name,value)};return react.createElement("div",{className:"email-newsletter"},react.createElement(components.hK,{dir:"y",size:"xxl"}),react.createElement(components.H2,null,react.createElement(get_text.q,null,"Email Info")),react.createElement(components.hK,{dir:"y",size:"xxl"}),react.createElement("form",null,react.createElement(EmailFieldInput,{value:data.emailName,placeholder:gettext("Type email name…"),onChange:onDataUpdate,type:"text",labelText:gettext("Email name (internal)"),required:!0,name:"emailName",error:errors.emailName,style:{width:"100%"}}),react.createElement(components.hK,{dir:"y",size:"xxl"}),react.createElement(EmailFieldInput,{value:data.emailSubject,placeholder:gettext("Type subject…"),onChange:onDataUpdate,type:"text",labelText:gettext("Email subject"),required:!0,name:"emailSubject",error:errors.emailSubject,style:{width:"100%"}}),react.createElement(components.hK,{dir:"y",size:"xxl"}),react.createElement(EmailFieldInput,{value:data.fromName,placeholder:gettext("From name (e.g. Willie Patterson)…"),onChange:onDataUpdate,type:"text",labelText:gettext("From name"),required:!0,style:{width:"100%"},name:"fromName",error:errors.fromName})))};var use_query_params=__webpack_require__(47547),alert_utils=__webpack_require__(20987),use_document_title=__webpack_require__(10207),use_fetch_email_campaign_query=__webpack_require__(87147);function useEmailData({defaultValue,setError,mode,campaignId,currentFolderId}){const[emailInfo,setEmailInfo]=react.useState({emailName:"",emailSubject:"",fromName:"",fromEmail:"",emailJson:"",...defaultValue}),[isSendScheduled,setIsSendScheduled]=react.useState(!0),[scheduledFor,setScheduledFor]=react.useState(),[folderId,setFolderId]=react.useState(currentFolderId),{data:emailCampaign,error,isLoading}=(0,use_fetch_email_campaign_query.a)(campaignId);react.useEffect((()=>{if("new"!==mode&&emailCampaign){const{scheduledAt,fromEmail,fromName,emailSubject,emailName,emailJson,folder}=emailCampaign;setEmailInfo({emailName,emailSubject,fromName,fromEmail,emailJson}),folder&&setFolderId(folder.id),scheduledAt&&(setScheduledFor(dayjs_min(scheduledAt)),setIsSendScheduled(!0))}}),[emailCampaign,mode]);const onEmailInfoUpdate=react.useCallback(((key,value)=>{setEmailInfo((info=>({...info,[key]:value}))),setError(key,"")}),[setError]),onChangeScheduledFor=react.useCallback((date=>{(date=>null==date?void 0:date.isAfter(dayjs_min()))(date)?setError("scheduledError",""):setError("scheduledError","Not correct time. Please select the time in the future"),setScheduledFor(date)}),[setError]);return[react.useMemo((()=>({emailInfo,folderId,isSendScheduled,scheduledFor,onIsSendScheduledChange:setIsSendScheduled,onChangeScheduledFor,onEmailInfoUpdate,mailingListId:null==emailCampaign?void 0:emailCampaign.mailingListId})),[emailCampaign,emailInfo,folderId,isSendScheduled,onChangeScheduledFor,onEmailInfoUpdate,scheduledFor]),{error,isLoading}]}var use_target_audience_query=__webpack_require__(20163);const useCreateAndSendEmail=()=>(0,react_query_es.useMutation)((payload=>(async({recipients,emailInfo,emailTemplate,folderId,isSendScheduled,scheduledFor,isDraft})=>{var _a;const mailingListId=(await api.Y4.mailingCreateMailingList({})).data,recipientsToSave=recipients.map((recipient=>{const{email="",firstName,lastName}=recipient;return{email,firstName,lastName}}));await api.Y4.mailingCreateRecipients(mailingListId,{recipients:recipientsToSave});const[campaignResponse,error]=await(0,util.Oi)((()=>api.Y4.mailingCreateCampaign({mailingListId,emailName:emailInfo.emailName,emailSubject:emailInfo.emailSubject,fromName:emailInfo.fromName,emailHtml:emailTemplate.html,emailJson:emailTemplate.json,scheduledAt:!isDraft&&isSendScheduled?scheduledFor:void 0,folderId})));if(error)return void(0,toast.Kf)({message:null!==(_a=(0,string_utils.fi)(error))&&void 0!==_a?_a:"Something went wrong while storing your email."});const campaignId=campaignResponse.data;return isDraft||isSendScheduled||await api.Y4.mailingSendCampaign(campaignId),campaignId})(payload)));
220var use_get_mutation_with_invalidate_queries=__webpack_require__(3276);const useUpdateAndSendEmail=campaignId=>(0,use_get_mutation_with_invalidate_queries.Y)([...use_fetch_email_campaign_query.A,campaignId],(payload=>(async({campaignId,mailingListId,recipients,emailInfo,emailTemplate,isSendScheduled,scheduledFor,isDraft})=>{var _a,_b;const recipientsToSave=recipients.map((recipient=>{const{email="",firstName,lastName}=recipient;return{email,firstName,lastName}}));await api.Y4.mailingCreateRecipients(mailingListId,{recipients:recipientsToSave});const[,error]=await(0,util.Oi)((()=>api.Y4.editMailingCampaign(campaignId,{emailName:emailInfo.emailName,emailSubject:emailInfo.emailSubject,fromName:emailInfo.fromName,emailHtml:emailTemplate.html,emailJson:emailTemplate.json,scheduledAt:!isDraft&&isSendScheduled?scheduledFor:void 0})));return error?((0,toast.Kf)({message:null!==(_a=(0,string_utils.fi)(error))&&void 0!==_a?_a:"Something went wrong while storing your email."}),void tracking_utils.A.error(null!==(_b=(0,string_utils.fi)(error))&&void 0!==_b?_b:"Something went wrong while storing your email.","updateAndSendEmail.mailingApi.editMailingCampaign",(0,string_utils.hT)(error))):(isDraft||isSendScheduled||await api.Y4.mailingSendCampaign(campaignId),campaignId)})(payload))),EmailNewsletterDialog=()=>{const{gettext}=(0,use_get_text.z)(),[{mode="new",campaignId,folder}]=(0,use_query_params.s)(),history=(0,react_router.W6)();(0,use_document_title.r)({title:gettext("Editing email")});const{errors,setError,setErrors}=function(){const[errors,setErrors]=react.useState({});return{errors,setError:react.useCallback(((key,value)=>setErrors((prev=>({...prev,[key]:value})))),[]),setErrors}}(),[{mailingListId="",...emailData},{error:emailDataError}]=useEmailData({defaultValue:{fromEmail:"[email protected]"},setError,mode,campaignId,currentFolderId:folder}),[{recipients,onRecipientsUpdate},{error:recipientsError}]=((mailingListId,mode)=>{const[recipients,setRecipients]=react.useState([]),onRecipientsUpdate=react.useCallback((newRecipients=>{setRecipients(newRecipients)}),[]),{data:recipientsData,error,isLoading}=(0,use_target_audience_query.Tf)(mailingListId);return react.useEffect((()=>{"new"!==mode&&recipientsData&&setRecipients(recipientsData)}),[mode,recipientsData]),[{recipients,onRecipientsUpdate},{error,isLoading}]})(mailingListId,mode);react.useEffect((()=>{emailDataError&&alert_utils.A.errorFromApi(emailDataError,gettext)}),[emailDataError,gettext]),react.useEffect((()=>{recipientsError&&alert_utils.A.errorFromApi(recipientsError,gettext)}),[recipientsError,gettext]);const{emailInfo,scheduledFor,isSendScheduled}=emailData,validateStep=react.useCallback((activeStep=>{if(activeStep===EmailNewsletterStep.Info){const emailInfoErrors=((emailInfo,textError)=>{const emailInfoErrors={};let hasError=!1;return["emailName","emailSubject","fromName"].forEach((key=>{emailInfo[key]||(emailInfoErrors[key]=textError,hasError=!0)})),hasError?emailInfoErrors:void 0})(emailInfo,gettext("Cannot be empty"));if(emailInfoErrors)return setErrors((prev=>({...prev,...emailInfoErrors}))),!1}return!0}),[emailInfo,setErrors,gettext]),onSent=react.useCallback((newCampaignId=>{history.push((0,url_utils.y4)({folderId:folder,createdItemId:newCampaignId})),tracking_utils.A.event("email_creation_confirm_confirmed",{mode,sent:isSendScheduled?"scheduled":"now"})}),[history,isSendScheduled,mode,folder]),{goToChangeInfo,goToChangeRecipients,goToChangeContent,stepperData}=(({defaultStep=EmailNewsletterStep.Info,validateStep})=>{const stepperData=(0,stepper.yL)(4,defaultStep),goToChangeInfo=react.useCallback((()=>{stepperData.goToStep(EmailNewsletterStep.Info)}),[stepperData]),goToChangeRecipients=react.useCallback((()=>{stepperData.goToStep(EmailNewsletterStep.Recipients)}),[stepperData]),goToChangeContent=react.useCallback((()=>{stepperData.goToStep(EmailNewsletterStep.Editor)}),[stepperData]),goToNextStep=react.useCallback((()=>{(0,isFunction.A)(validateStep)?validateStep(stepperData.activeStep)&&stepperData.goToNextStep():stepperData.goToNextStep()}),[stepperData,validateStep]);return react.useMemo((()=>({goToChangeInfo,goToChangeRecipients,goToChangeContent,stepperData:{...stepperData,goToNextStep}})),[goToNextStep,goToChangeInfo,goToChangeRecipients,goToChangeContent,stepperData])})({defaultStep:EmailNewsletterStep.Editor,validateStep}),emailEditorContextValue=((onChangeRecipients,jsonTemplate,mode,campaignId)=>{const[isEmailTemplateSaved,setIsEmailTemplateSaved]=react.useState(!1),[isEmailTemplateCleared,setIsEmailTemplateCleared]=react.useState(!1),[isTemplateLoaded,setIsTemplateLoaded]=react.useState(!1),[emailTemplate,setEmailTemplate]=react.useState({html:"",json:DEFAULT_TEMPLATE}),[existingTemplateLoaded,setExistingEmailTemplateLoaded]=react.useState(!1),{data:htmlMarkup=""}=(0,use_email_html_template_query.R)(campaignId),isJsonTemplateLoaded=react.useRef(!1);return react.useEffect((()=>{"edit"!==mode||emailTemplate.html||setEmailTemplate((state=>({...state,html:htmlMarkup}))),!isJsonTemplateLoaded.current&&"new"!==mode&&jsonTemplate&&(setEmailTemplate((state=>({...state,json:jsonTemplate}
220))),setExistingEmailTemplateLoaded(!0),isJsonTemplateLoaded.current=!0)}),[emailTemplate.html,htmlMarkup,jsonTemplate,mode]),react.useMemo((()=>({emailTemplate,existingTemplateLoaded,isEmailTemplateSaved,isEmailTemplateCleared,isTemplateLoaded,onChangeRecipients,setIsEmailTemplateSaved,setIsEmailTemplateCleared,setIsTemplateLoaded,onEmailTemplateUpdate:setEmailTemplate})),[emailTemplate,isEmailTemplateCleared,isEmailTemplateSaved,existingTemplateLoaded,isTemplateLoaded,onChangeRecipients])})(goToChangeRecipients,emailInfo.emailJson,mode,campaignId),{emailTemplate,setIsEmailTemplateCleared}=emailEditorContextValue,[saveAndSendEmail,isLoading]=(({mode,campaignId,mailingListId,recipients,emailInfo,folderId,scheduledFor,isSendScheduled,emailTemplate,onSent})=>{const createAndSend=useCreateAndSendEmail(),updateAndSend=useUpdateAndSendEmail(campaignId),isLoading=createAndSend.isLoading||updateAndSend.isLoading;return[react.useCallback((async shouldSaveAsDraft=>{let newCampaignId="";const scheduledForDate=scheduledFor?scheduledFor.toDate():void 0;"edit"===mode?(await updateAndSend.mutateAsync({campaignId,mailingListId,recipients,emailInfo,isSendScheduled,scheduledFor:scheduledForDate,emailTemplate,isDraft:shouldSaveAsDraft}),newCampaignId=campaignId):newCampaignId=await createAndSend.mutateAsync({recipients,emailInfo,folderId,isSendScheduled,scheduledFor:scheduledForDate,emailTemplate,isDraft:shouldSaveAsDraft}),onSent&&onSent(newCampaignId)}),[scheduledFor,mode,onSent,updateAndSend,campaignId,mailingListId,recipients,emailInfo,isSendScheduled,emailTemplate,createAndSend]),isLoading]})({mode,mailingListId,recipients,campaignId,emailInfo,folderId:folder,isSendScheduled,scheduledFor,emailTemplate,onSent}),onClearConfirm=react.useCallback((()=>{switch(stepperData.activeStep){case EmailNewsletterStep.Editor:setIsEmailTemplateCleared(!0);break;case EmailNewsletterStep.Recipients:onRecipientsUpdate([])}}),[onRecipientsUpdate,setIsEmailTemplateCleared,stepperData.activeStep]),{onClear,clearDialogElement}=(({activeStep,onClearConfirm})=>{const{gettext}=(0,use_get_text.z)(),[isShowClearDialog,setIsShowClearDialog]=react.useState(!1),closeClearDialog=()=>{setIsShowClearDialog(!1)},onClear=react.useCallback((()=>{switch(activeStep){case EmailNewsletterStep.Editor:case EmailNewsletterStep.Recipients:setIsShowClearDialog(!0)}}),[activeStep]),dialogProps=react.useMemo((()=>activeStep===EmailNewsletterStep.Editor?{title:gettext("Do you want to clear?"),cancelButtonLabel:gettext("Cancel"),confirmButtonLabel:gettext("Clear"),text:gettext("Are you sure that you want to clear the template?")}:{title:gettext("Do you want to clear?"),cancelButtonLabel:gettext("Cancel"),confirmButtonLabel:gettext("Clear"),text:gettext("Are you sure that you want to clear the list?")}),[activeStep,gettext]);return{clearDialogElement:react.createElement(confirmation_dialog.K,{isDialogShown:isShowClearDialog,closeModal:closeClearDialog,onConfirmClick:()=>{onClearConfirm(),closeClearDialog()},...dialogProps}),onClear}})({activeStep:stepperData.activeStep,onClearConfirm}),emailNewsletterContext=react.useMemo((()=>({...emailData,recipients,errors,mode,isLoading,onRecipientsUpdate,saveAndSendEmail,goToChangeInfo,goToChangeRecipients,goToChangeContent,onClear})),[emailData,recipients,errors,mode,isLoading,onRecipientsUpdate,saveAndSendEmail,goToChangeInfo,goToChangeRecipients,goToChangeContent,onClear]);useHideHTMLElement("iframe#launcher"),useHideHTMLElement(".footer-push"),useHideHTMLElement("footer.ng-scope");const stepsList=[react.createElement(EmailNewsletterEditor,{key:EmailNewsletterStep.Editor}),react.createElement(EmailNewsletterRecipientsList,{key:EmailNewsletterStep.Recipients}),react.createElement(EmailNewsletterInfo,{key:EmailNewsletterStep.Info}),react.createElement(EmailNewsletterConfirmation,{key:EmailNewsletterStep.Confirmation})],isNextButtonDisabled=stepperData.activeStep===EmailNewsletterStep.Recipients&&!recipients.length;return react.createElement("main",{className:"email-newsletter-page"},react.createElement(stepper.N_.Provider,{value:stepperData},react.createElement(EmailNewsletterProvider,{value:emailNewsletterContext},react.createElement(EmailEditorProvider,{value:emailEditorContextValue},react.createElement(EmailNewsletterHeader,{currentFolderId:null!=folder?folder:""}),react.createElement("section",{className:"email-newsletter-page__content"},stepsList[stepperData.activeStep]),clearDialogElement,react.createElement(EmailNewsletterFooter,{isNextButtonDisabled})))))},EmailNewsletter=()=>react.createElement(EmailNewsletterDialog,null)},20163:(__unused_webpack_module,__webpack_exports__,__webpack_require__)=>{"use strict";__webpack_require__.d(__webpack_exports__,{Tf:()=>useTargetAudienceQuery});var react_query__WEBPACK_IMPORTED_MODULE_0__=__webpack_require__(75942),src_api__WEBPACK_IMPORTED_MODULE_1__=__webpack_require__(56433);const useTargetAudienceQuery=id=>(0,react_query__WEBPACK_IMPORTED_MODULE_0__.useQuery)(["email-target-audience",id],(()=>(id=>src_api__WEBPACK_IMPORTED_MODULE_1__.Y4.mailingRetrieveRecipients(id).then((response=>response.data)))(id||"")),{enabled:!!id})},28576:(__unused_webpack_module,__webpack_exports__,__webpack_require__)=>{"use strict";__webpack_require__.d(__webpack_exports__,{z:()=>useClickOutsideElement});var react__WEBPACK_IMPORTED_MODULE_0__=__webpack_require__(96540);const useClickOutsideElement=(ref,callback)=>{react__WEBPACK_IMPORTED_MODULE_0__.useEffect((()=>{const handleClickOutside=event=>{ref.current&&!ref.current.contains(event.target)&&callback()};return document.addEventListener("mousedown",handleClickOutside),()=>{document.removeEventListener("mousedown",handleClickOutside)}}),[ref,callback])}},28962:(__unused_webpack_module,__webpack_exports__,__webpack_require__)=>{"use strict";__webpack_require__.d(__webpack_exports__,{A:()=>DialogMessage,Q:()=>Message});var react__WEBPACK_IMPORTED_MODULE_0__=__webpack_require__(96540),classnames__WEBPACK_IMPORTED_MODULE_1__=__webpack_require__(32485),_fortawesome_free_solid_svg_icons__WEBPACK_IMPORTED_MODULE_4__=__webpack_require__(66188),_fortawesome_react_fontawesome__WEBPACK_IMPORTED_MODULE_2__=__webpack_require__(46784),src_design_system_components__WEBPACK_IMPORTED_MODULE_3__=__webpack_require__(66931);const MessageIcon=({messageType})=>{switch(messageType){case"info":return react__WEBPACK_IMPORTED_MODULE_0__.createElement(_fortawesome_react_fontawesome__WEBPACK_IMPORTED_MODULE_2__.g,{icon:_fortawesome_free_solid_svg_icons__WEBPACK_IMPORTED_MODULE_4__.tUE});case"warning":return react__WEBPACK_IMPORTED_MODULE_0__.createElement(_fortawesome_react_fontawesome__WEBPACK_IMPORTED_MODULE_2__.g,{icon:_fortawesome_free_solid_svg_icons__WEBPACK_IMPORTED_MODULE_4__.zpE});default:return null}},Message=({children,className,style,messageType="info"})=>react__WEBPACK_IMPORTED_MODULE_0__.createElement("div",{className:classnames__WEBPACK_IMPORTED_MODULE_1__(`${messageType}-message`,"message-component",className),style},react__WEBPACK_IMPORTED_MODULE_0__.createElement(MessageIcon,{messageType}),react__WEBPACK_IMPORTED_MODULE_0__.createElement(src_design_system_components__WEBPACK_IMPORTED_MODULE_3__.YC,null,children)),DialogMessageIcon=({type})=>{switch(type){case"info":return react__WEBPACK_IMPORTED_MODULE_0__.createElement(_fortawesome_react_fontawesome__WEBPACK_IMPORTED_MODULE_2__.g,{icon:_fortawesome_free_solid_svg_icons__WEBPACK_IMPORTED_MODULE_4__.SGM,color:"#4395CD",size:"2x"});case"warning":return react__WEBPACK_IMPORTED_MODULE_0__.createElement(_fortawesome_react_fontawesome__WEBPACK_IMPORTED_MODULE_2__.g,{icon:_fortawesome_free_solid_svg_icons__WEBPACK_IMPORTED_MODULE_4__.zpE,color:"#F49342"});case"error":return react__WEBPACK_IMPORTED_MODULE_0__.createElement(_fortawesome_react_fontawesome__WEBPACK_IMPORTED_MODULE_2__.g,{icon:_fortawesome_free_solid_svg_icons__WEBPACK_IMPORTED_MODULE_4__.zpE,color:"#DE3618"});default:return react__WEBPACK_IMPORTED_MODULE_0__.createElement(_fortawesome_react_fontawesome__WEBPACK_IMPORTED_MODULE_2__.g,{icon:_fortawesome_free_solid_svg_icons__WEBPACK_IMPORTED_MODULE_4__.tUE,color:"#4395CD"})}},DialogMessage=({type,children,className})=>react__WEBPACK_IMPORTED_MODULE_0__.createElement("div",{className:classnames__WEBPACK_IMPORTED_MODULE_1__("dialog-message-container",type,className)},react__WEBPACK_IMPORTED_MODULE_0__.createElement(DialogMessageIcon,{type}),react__WEBPACK_IMPORTED_MODULE_0__.createElement(src_design_system_components__WEBPACK_IMPORTED_MODULE_3__.hK,{dir:"x",size:"s"}),react__WEBPACK_IMPORTED_MODULE_0__.createElement("div",{className:"content"},children))},39717:(__unused_webpack_module,__webpack_exports__,__webpack_require__)=>{"use strict";__webpack_require__.d(__webpack_exports__,{o:()=>useDebouncedValue});var react__WEBPACK_IMPORTED_MODULE_0__=__webpack_require__(96540),lodash_es__WEBPACK_IMPORTED_MODULE_1__=__webpack_require__(23549);const useDebouncedValue=(value="",debounceTime=700)=>{const[debouncedValue,_setDebouncedValue]=react__WEBPACK_IMPORTED_MODULE_0__.useState(value),setDebouncedValue=react__WEBPACK_IMPORTED_MODULE_0__.useMemo((()=>(0,lodash_es__WEBPACK_IMPORTED_MODULE_1__.A)(_setDebouncedValue,debounceTime)),[debounceTime]);return react__WEBPACK_IMPORTED_MODULE_0__.useEffect((()=>{setDebouncedValue(value)}),[setDebouncedValue,value]),{debouncedValue}}},63779:()=>{},74707:(__unused_webpack_module,__webpack_exports__,__webpack_require__)=>{"use strict";__webpack_require__.d(__webpack_exports__,{g:()=>EmailDetailsContent});var react__WEBPACK_IMPORTED_MODULE_0__=__webpack_require__(96540),_emotion_styled__WEBPACK_IMPORTED_MODULE_1__=__webpack_require__(59295),src_app_modules_app_shared_layout_components_with_loader__WEBPACK_IMPORTED_MODULE_2__=__webpack_require__(55520);const EmailWrapper=_emotion_styled__WEBPACK_IMPORTED_MODULE_1__.A.div`
221	background-color: rgb(247, 247, 247);
222	border: 1px solid rgb(217, 217, 222);
223	height: 100%;
224`,StyledIframe=_emotion_styled__WEBPACK_IMPORTED_MODULE_1__.A.iframe`
225	border: 1px solid rgb(217, 217, 222);
226	border-radius: 4px;
227	min-width: 640px;
228	margin: ${s=>s.theme.spacing.XXL} auto;
229	display: block;
230	height: 1264px; // according to the designs as average newsletter height
231`,EmailDetailsContent=({markup,isLoading=!1})=>{const srcDataString=react__WEBPACK_IMPORTED_MODULE_0__.useMemo((()=>markup?`data:text/html;charset=utf-8,${encodeURIComponent(markup)}`:""),[markup]);return react__WEBPACK_IMPORTED_MODULE_0__.createElement("section",null,react__WEBPACK_IMPORTED_MODULE_0__.createElement(src_app_modules_app_shared_layout_components_with_loader__WEBPACK_IMPORTED_MODULE_2__.O,{isLoading},react__WEBPACK_IMPORTED_MODULE_0__.createElement(EmailWrapper,null,markup&&react__WEBPACK_IMPORTED_MODULE_0__.createElement(StyledIframe,{title:"Email newsletter markup","data-testid":"markup-frame",id:"markup-frame",sandbox:"",src:srcDataString}))))}},77199:()=>{},77559:(__unused_webpack_module,__webpack_exports__,__webpack_require__)=>{"use strict";__webpack_require__.d(__webpack_exports__,{I:()=>LoadingIndicator});var react=__webpack_require__(96540);const LoadingIndicator=()=>react.createElement("div",{className:"loading-indicator-wrapper"},react.createElement("div",{className:"loading-indicator-item loading-indicator-item-1"}),react.createElement("div",{className:"loading-indicator-item loading-indicator-item-2"}),react.createElement("div",{className:"loading-indicator-item loading-indicator-item-3"}))},86307:(__unused_webpack_module,__webpack_exports__,__webpack_require__)=>{"use strict";__webpack_require__.d(__webpack_exports__,{K:()=>ConfirmationDialog});var react=__webpack_require__(96540),components=__webpack_require__(66931),use_get_text=__webpack_require__(87914);const ConfirmationDialog=({text,isDialogShown,isLoading,closeModal,title,onConfirmClick,cancelButtonLabel,confirmButtonLabel})=>{const{gettext}=(0,use_get_text.z)();return react.createElement(components.Au,{show:isDialogShown,onClose:closeModal,width:640},react.createElement(components.Au.Header,{title}),react.createElement(components.Au.Content,null,react.createElement(components.P,null,text)),react.createElement(components.Au.FooterActions,null,react.createElement(components.$n,{style:"link",text:cancelButtonLabel||gettext("Cancel"),onClick:closeModal}),react.createElement(components.hK,{size:"s",dir:"x"}),react.createElement(components.$n,{style:"primary",text:confirmButtonLabel||gettext("Confirm"),onClick:onConfirmClick,isLoading}
231)))}},87147:(__unused_webpack_module,__webpack_exports__,__webpack_require__)=>{"use strict";__webpack_require__.d(__webpack_exports__,{A:()=>EMAIL_NEWSLETTER_KEYS,a:()=>useFetchEmailCampaign});var react_query__WEBPACK_IMPORTED_MODULE_0__=__webpack_require__(75942),src_api__WEBPACK_IMPORTED_MODULE_1__=__webpack_require__(56433);const EMAIL_NEWSLETTER_KEYS=["email-newsletter","campaign"],useFetchEmailCampaign=(campaignId="")=>(0,react_query__WEBPACK_IMPORTED_MODULE_0__.useQuery)([...EMAIL_NEWSLETTER_KEYS,campaignId],(()=>(campaignId=>src_api__WEBPACK_IMPORTED_MODULE_1__.Y4.retrieveMailingCampaign(campaignId).then((response=>response.data)))(campaignId)),{staleTime:0})},91751:(__unused_webpack_module,__webpack_exports__,__webpack_require__)=>{"use strict";__webpack_require__.d(__webpack_exports__,{N_:()=>StepperContext,lE:()=>useStepper,yL:()=>useProvideStepper});var react__WEBPACK_IMPORTED_MODULE_0__=__webpack_require__(96540);const StepperContext=react__WEBPACK_IMPORTED_MODULE_0__.createContext({activeStep:0,stepsAmount:0,goToStep:()=>{},goToPrevStep:()=>{},goToNextStep:()=>{}}),useStepper=()=>react__WEBPACK_IMPORTED_MODULE_0__.useContext(StepperContext),useProvideStepper=(stepsAmount,initialStep=0)=>{const stepsTopLimit=stepsAmount-1,isOutboundValue=value=>value<0||value>stepsTopLimit,activeStepInitialValue=isOutboundValue(initialStep)?0:initialStep,[activeStep,setActiveStep]=react__WEBPACK_IMPORTED_MODULE_0__.useState(activeStepInitialValue),goToStep=step=>{isOutboundValue(step)||setActiveStep(step)};return{activeStep,stepsAmount,goToStep,goToPrevStep:()=>{goToStep(activeStep-1)},goToNextStep:()=>{goToStep(activeStep+1)}}}},96187:(__unused_webpack_module,__webpack_exports__,__webpack_require__)=>{"use strict";__webpack_require__.d(__webpack_exports__,{_:()=>EmailOverviewTable});var react=__webpack_require__(96540),components=__webpack_require__(66931),get_text=__webpack_require__(59247),use_get_text=__webpack_require__(87914);const EmailOverviewTable=({emailSubject,fromName,fromEmail,showContentRow=!1,recipientsCount,goToChangeRecipients,goToChangeInfo,goToChangeContent})=>{const{gettext}=(0,use_get_text.z)(),showActions=Boolean(goToChangeRecipients&&goToChangeInfo);return react.createElement("table",{className:"email-overview-table"},react.createElement("tbody",null,react.createElement("tr",null,react.createElement("td",null,react.createElement(get_text.q,null,"Subject")),react.createElement("td",null,react.createElement(components.H5,null,gettext(emailSubject))),react.createElement("td",{className:"email-overview-table--align-right"},showActions&&react.createElement(components.$n,{text:gettext("Change email info"),type:"button",style:"link",onClick:goToChangeInfo}))),react.createElement("tr",null,react.createElement("td",null,react.createElement(get_text.q,null,"From")),react.createElement("td",null,react.createElement(components.H5,null,react.createElement(get_text.q,null,function(fromName,fromEmail){return`${fromName} ${fromEmail?`(${fromEmail})`:""}`.trim()}(fromName,fromEmail)))),react.createElement("td",null))),react.createElement("tbody",null,react.createElement("tr",null,react.createElement("td",{colSpan:3},react.createElement(components.cG,{type:"default"}))),react.createElement("tr",null,react.createElement("td",null,react.createElement(get_text.q,null,"Recipients")),react.createElement("td",null,react.createElement(components.H5,null,recipientsCount," ",gettext("entries"))),react.createElement("td",{className:"email-overview-table--align-right"},showActions&&react.createElement(components.$n,{text:gettext("Change audience"),type:"button",style:"link",onClick:goToChangeRecipients})))),showContentRow&&react.createElement(react.Fragment,null,react.createElement("tbody",null,react.createElement("tr",null,react.createElement("td",{colSpan:3},react.createElement(components.cG,{type:"default"}))),react.createElement("tr",null,react.createElement("td",null,react.createElement(get_text.q,null,"Email content")),react.createElement("td",null),react.createElement("td",{className:"email-overview-table--align-right"},showActions&&react.createElement(components.$n,{text:gettext("Change content"),type:"button",style:"link",onClick:goToCh
231angeContent}))))))}},97109:(__unused_webpack_module,__webpack_exports__,__webpack_require__)=>{"use strict";__webpack_require__.d(__webpack_exports__,{R:()=>useEmailHtmlTemplateQuery});var react_query__WEBPACK_IMPORTED_MODULE_0__=__webpack_require__(75942);const useEmailHtmlTemplateQuery=mailingCampaignId=>(0,react_query__WEBPACK_IMPORTED_MODULE_0__.useQuery)(["email-html-template",mailingCampaignId],(()=>(async mailingCampaignId=>{if(!mailingCampaignId)return"";const headers=new Headers,{protocol,host}=window.location;headers.append("X-Requested-With","XMLHttpRequest");const response=await fetch(`${protocol}//${host}/api/mailing/campaign/${mailingCampaignId}/html`,{headers});return await response.text()})(mailingCampaignId)))}}]);

Line numbers count LF bytes from the start of the resource, as the search results do. Vendor segments are library code the classifier recognised; they are stored but not indexed. Bytes are shown as Latin1 characters, one per byte.