@markopolo_ai_inc/markopolo-email-editor 1.0.21 → 1.0.23
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/lib/index.js +1 -1
- package/lib/index.mjs +1 -1
- package/package.json +1 -1
package/lib/index.js
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
"use strict";Object.defineProperty(exports,"__esModule",{value:!0});var e=require("react"),t=require("antd"),n=require("@fortawesome/react-fontawesome"),o=require("@fortawesome/free-solid-svg-icons"),a=require("framer-motion"),i=require("react/jsx-runtime"),l=require("react-color");function r(e,t){if(!e||!t)return e;const n=t?.companyContext?.navigation_links,o=Array.isArray(n)&&n.length>0,a=t?.companyContext?.social_links,i=a&&"object"==typeof a&&Object.keys(a).length>0;if(!o&&!i)return e;const l={...e};let r=!1;return Object.keys(e).forEach(t=>{const s=e[t];if(s){if("menu"===s.key&&s.useNavigationLinks&&o){const e=n.map(e=>({label:e.label??"Link",url:e.url??"#",target:e.target??"_self"}));l[t]={...s,list:e},r=!0}if("social_link"===s.key&&s.useCompanySocialLinks&&i){const e="https://s.magecdn.com/social",n=[{key:"facebook",image:`${e}/tc-facebook.svg`,title:"Facebook"},{key:"twitter",image:`${e}/tc-x.svg`,title:"Twitter"},{key:"instagram",image:`${e}/tc-instagram.svg`,title:"Instagram"},{key:"linkedin",image:`${e}/tc-linkedin.svg`,title:"LinkedIn"},{key:"tiktok",image:`${e}/tc-tiktok.svg`,title:"TikTok"},{key:"youtube",image:`${e}/tc-youtube.svg`,title:"YouTube"}].map(({key:e,image:t,title:n})=>{const o=a[e];return{image:t,title:n,linkURL:null!=o&&String(o).trim()?String(o).replace(/^https?:\/\//,""):""}});l[t]={...s,list:n},r=!0}}}),r?l:e}const s=e=>{const t=e.constructor===Array?[]:{};for(let n in e)e.hasOwnProperty(n)&&(e[n]&&"object"==typeof e[n]?(t[n]=e[n].constructor===Array?[]:{},t[n]=s(e[n])):t[n]=e[n]);return t},c=(e,t)=>{let n=null;return function(){n||(n=setTimeout(()=>{e.apply(this,arguments),n=null},t))}};function d(e,t={}){if(null==e||"string"!=typeof e)return e;const n=null!=t.fontSize?Number(t.fontSize):14,o=null!=t.fontFamily?String(t.fontFamily):"sans-serif",a=null!=t.color?String(t.color):"",i=["direction: ltr",`font-size: ${n}px`,`font-family: ${o}`];a&&i.push(`color: ${a}`);const l=i.join("; ");let r=function(e){if(null==e||"string"!=typeof e)return e;let t=e.replace(/\sstyle\s*=\s*["']([^"']*)["']/gi,(e,t)=>{const n=t.replace(/\s*font-size\s*:[^;]+;?/gi,"").replace(/\s*font-family\s*:[^;]+;?/gi,"").replace(/\s*color\s*:[^;]+;?/gi,"").replace(/^;\s*|;\s*$/g,"").trim();return n?` style="${n}"`:""}),n="";for(let e=0;e<20&&n!==t;e++)n=t,t=t.replace(/<font(\s[^>]*)?>([\s\S]*?)<\/font>/gi,"$2");return t}(e.trim());const s=/^<span(?:\s[^>]*)?>([\s\S]*)<\/span>$/i.exec(r.trim()),c=/^<div(?:\s[^>]*)?>([\s\S]*)<\/div>$/i.exec(r.trim());return s?r=s[1]:c&&(r=c[1]),`<span style="${l}">${r}</span>`}function p(){return"undefined"!=typeof crypto&&crypto.randomUUID?crypto.randomUUID():"xxxxxxxx-xxxx-4xxx-yxxx-xxxxxxxxxxxx".replace(/[xy]/g,e=>{const t=16*Math.random()|0;return("x"===e?t:3&t|8).toString(16)})}function u(e){if(!e||"object"!=typeof e)return;e.id||(e.id=p());const t=e.children;Array.isArray(t)&&t.forEach(u)}function m(e){if(!e||"object"!=typeof e)return e;const t=s(e);return u(t),t}function g(e="Drag block here"){return{id:p(),name:e,key:"empty",width:"100%",styles:{desktop:{backgroundColor:"transparent",paddingTop:0,paddingLeft:0,paddingRight:0,paddingBottom:0},mobile:{}}}}function y(e){const t={},n=[];function o(e){if(e&&"object"==typeof e)if(e.id||(e.id=p()),"column"===e.key){const n=(e.children||[]).map(e=>{e.id||(e.id=p());const t=[];return(e.children||[]).forEach(e=>{e.id||(e.id=p()),o(e),t.push(e.id)}),{id:e.id,width:e.width,styles:e.styles,childrenIds:t}}),{children:a,...i}=e;t[e.id]={...i,cells:n}}else t[e.id]=e}return(e||[]).forEach(e=>{e.id||(e.id=p()),o(e),n.push(e.id)}),{blockMap:t,rootOrder:n}}function h(e,t){function n(t){const o=e[t];if(!o)return null;if("column"===o.key){const e=(o.cells||[]).map(e=>({id:e.id,name:"Content",key:"content",width:e.width,styles:e.styles,children:(e.childrenIds||[]).map(e=>n(e)).filter(Boolean)})),{cells:t,...a}=o;return{...a,children:e}}return{...o}}return(t||[]).map(e=>n(e)).filter(Boolean)}function b(e,t){const n=t[e];if(!n)return null;if("column"!==n.key)return n;const o=(n.cells||[]).map(e=>({id:e.id,name:"Content",key:"content",width:e.width,styles:e.styles,children:(e.childrenIds||[]).map(e=>{const n=t[e];return n?"column"===n.key?b(e,t):n:null}).filter(Boolean)})),{cells:a,...i}=n;return{...i,children:o}}function f(e,t,n){function o(t){const a=e[t];if(!a||"column"!==a.key)return null;for(let i=0;i<(a.cells||[]).length;i++){const l=a.cells[i];for(let a=0;a<(l.childrenIds||[]).length;a++){if(l.childrenIds[a]===n)return{containerId:t,cellIndex:i,itemIndex:a};const r=e[l.childrenIds[a]];if(r&&"column"===r.key){const e=o(l.childrenIds[a]);if(e)return e}}}return null}for(const e of t||[]){const t=o(e);if(t)return t}return null}function k(e,t,n){const o=(t||[]).indexOf(n);if(-1!==o){const t=e[n];return[{containerBlock:t??null,containerType:t?.containerType??"none",cellIndex:0,isRoot:!0,rootIndex:o}]}function a(t,o=[]){const i=e[t];if(!i||"column"!==i.key)return null;for(let t=0;t<(i.cells||[]).length;t++){const l=i.cells[t];for(let r=0;r<(l.childrenIds||[]).length;r++){const s=l.childrenIds[r];if(s===n)return[{containerBlock:i,containerType:i?.containerType??"none",cellIndex:t,isRoot:!1},...o];const c=e[s];if(c&&"column"===c.key){const e=a(s,[{containerBlock:i,containerType:i?.containerType??"none",cellIndex:t,isRoot:!1},...o]);if(e)return e}}}return null}for(const e of t||[]){const t=a(e,[]);if(t)return t}return[]}function _(e,t,n){const o=k(e,t,n),a=o.find(e=>e?.containerType&&"none"!==e.containerType)||o[0]||null,i=a?.cellIndex??0,l=a?.containerBlock??null,r=l?.columnProducts?.[i]??null,s=Array.isArray(l?.columnProducts)?l.columnProducts.find(e=>null!=e)??null:null;return{containerType:a?.containerType??"none",columnIndex:i,columnProduct:r??s,containerBlock:l,lineage:o}}function x(e,t,n,o,a){const i=e[t];if(!i)return e;const l=i.cells.map((e,t)=>{if(t!==n)return e;const i=[...e.childrenIds];return i[o]=a,{...e,childrenIds:i}});return{...e,[t]:{...i,cells:l}}}function v(e,t,n,o){const a=e[t];if(!a)return{blockMap:e,removedId:null};const i=a.cells[n];if(!i)return{blockMap:e,removedId:null};const l=i.childrenIds[o],r=[...i.childrenIds];r.splice(o,1);const s=a.cells.map((e,t)=>t===n?{...e,childrenIds:r}:e);return{blockMap:{...e,[t]:{...a,cells:s}},removedId:l}}function C(e,t,n,o,a){const i=e[t];if(!i)return e;const l=i.cells[n];if(!l)return e;const r=[...l.childrenIds];r.splice(o,0,a);const s=i.cells.map((e,t)=>t===n?{...e,childrenIds:r}:e);return{...e,[t]:{...i,cells:s}}}function w(e,t){const n={...e};return function e(t){const o=n[t];o&&("column"===o.key&&(o.cells||[]).forEach(t=>(t.childrenIds||[]).forEach(t=>e(t))),delete n[t])}(t),n}function S(e,t){if(!t)return{newBlockMap:e,rootId:null};if("column"===t.key){const{blockMap:n,rootOrder:o}=y([t]);return{newBlockMap:{...e,...n},rootId:o[0]??null}}return{newBlockMap:{...e,[t.id]:t},rootId:t.id}}const j="SET_BLOCK_LIST",I="SET_BLOCKS",N="SET_IS_DRAG_START",T="SET_ACTION_TYPE",A="SET_PREVIEW_MODE",L="SET_CURRENT_ITEM",P="SET_BODY_SETTINGS",R="SET_SELECTION_RANGE",$="SET_TEXT_RANGE",B="SET_LANGUAGE",D="SET_LANGUAGE_LIBRARIES",M="SET_TEMPLATE_VARIABLES",E=e=>({type:T,actionType:e}),U=e=>({type:L,currentItem:e}),F={blockMap:{},rootOrder:[],blockList:[],isDragStart:!1,actionType:"firstRender",previewMode:"desktop",currentItem:null,bodySettings:{preHeader:"",contentWidth:600,styles:{backgroundColor:"#f5f5f5",color:"#152b2a",fontFamily:"Arial"}},selectionRange:null,textRange:null,language:"en",languageLibraries:{},templateData:null},O=e.createContext();function H(e,t,n){const o=r(t,e.templateData),a=h(o,n);let{currentItem:i}=e;if(i?.id&&o[i.id]){const e=b(i.id,o);e&&e!==i.data&&(i={...i,data:e})}return{...e,blockMap:o,rootOrder:n,blockList:a,currentItem:i}}function K(e,t){switch(t.type){case I:return H(e,t.blockMap,t.rootOrder);case j:{const{blockMap:n,rootOrder:o}=y(t.blockList);return H(e,n,o)}case N:return{...e,isDragStart:t.isDragStart};case T:return{...e,actionType:t.actionType};case A:return{...e,previewMode:t.previewMode};case L:{let n=t.currentItem;if(n?.id&&"column"===n.data?.key&&e.blockMap[n.id]){const t=b(n.id,e.blockMap);t&&(n={...n,data:t})}return{...e,currentItem:n}}case P:return{...e,bodySettings:t.bodySettings};case R:return{...e,selectionRange:t.selectionRange};case $:return{...e,textRange:t.textRange};case B:return{...e,language:t.language};case D:return{...e,languageLibraries:t.languageLibraries};case M:{const n=t.templateData,o=r(e.blockMap,n),a=h(o,e.rootOrder);return{...e,templateData:n,blockMap:o,blockList:a}}default:return e}}var z={global:[{key:"CustomerName",token:"{{CustomerName}}",label:"Customer Name",labelKey:"variable_customer_name",type:"text",fallback:"Customer",source:"derived"},{key:"BrandName",token:"{{BrandName}}",label:"Brand Name",labelKey:"variable_brand_name",type:"text",fallback:"Company Name",source:"companyContext.name"},{key:"Tagline",token:"{{Tagline}}",label:"Tagline",labelKey:"variable_tagline",type:"text",fallback:"Your tagline here",source:"brandContext.tagline"},{key:"LogoUrl",token:"{{LogoUrl}}",label:"BrandLogo",labelKey:"variable_image_logo",type:"image",fallback:"https://via.placeholder.com/150x50/ffffff/333333?text=Logo",source:"brandContext.logo_url"},{key:"Website",token:"{{Website}}",label:"Website",labelKey:"variable_website",type:"text",fallback:"www.example.com",source:"companyContext.website"},{key:"Address",token:"{{Address}}",label:"Address",labelKey:"variable_address",type:"text",fallback:"123 Main St, City, Country",source:"companyContext.address"}],product:[{key:"ProductName",token:"{{ProductName}}",label:"Product Name",labelKey:"variable_product_name",type:"text",fallback:"Product Name",source:"content.products[].name"},{key:"ProductDescription",token:"{{ProductDescription}}",label:"Product Description",labelKey:"variable_product_description",type:"text",fallback:"Product description goes here.",source:"content.products[].description"},{key:"ProductImage",token:"{{ProductImage}}",label:"Product Image URL",labelKey:"variable_product_image",type:"image",fallback:"https://via.placeholder.com/300x300/eeeeee/666666?text=Product",source:"content.products[].image"},{key:"ProductLink",token:"{{ProductLink}}",label:"Product Link",labelKey:"variable_product_link",type:"url",fallback:"https://www.example.com",source:"content.products[].link"},{key:"ProductPrice",token:"{{ProductPrice}}",label:"Product Price (Amount)",labelKey:"variable_product_price",type:"number",fallback:"0",source:"content.products[].price.amount"},{key:"ProductCurrency",token:"{{ProductCurrency}}",label:"Product Currency",labelKey:"variable_product_currency",type:"text",fallback:"USD",source:"content.products[].price.currency"},{key:"ProductOldPrice",token:"{{ProductOldPrice}}",label:"Product Old Price",labelKey:"variable_product_old_price",type:"number",fallback:"0",source:"content.products[].old_price"},{key:"ProductNewPrice",token:"{{ProductNewPrice}}",label:"Product New Price",labelKey:"variable_product_new_price",type:"number",fallback:"0",source:"content.products[].new_price"},{key:"ProductPriceDisplay",token:"{{ProductPriceDisplay}}",label:"Product Price Display",labelKey:"variable_product_price_display",type:"text",fallback:"USD 0",source:"derived"}],discount:[{key:"DiscountValue",token:"{{DiscountValue}}",label:"Discount Value",labelKey:"variable_discount_value",type:"text",fallback:"20%",source:"content.discount.value"},{key:"DiscountCode",token:"{{DiscountCode}}",label:"Discount Code",labelKey:"variable_discount_code",type:"text",fallback:"SAVE20",source:"content.discount.code"},{key:"ValidUntil",token:"{{ValidUntil}}",label:"Valid Until",labelKey:"variable_valid_until",type:"date",fallback:"12-31-2025",source:"content.discount.valid_until"}]};const V=[{value:"none",labelKey:"container_type_none"},{value:"discount",labelKey:"container_type_discount"},{value:"product",labelKey:"container_type_product"}],W="CustomerName",q="DiscountValue",J="DiscountCode",G="ValidUntil",Y="CompanyName",Z="Address",Q="Website",X="BrandName",ee="LogoUrl",te="Tagline",ne="HeroBanner",oe="FooterBanner",ae="NavLabel",ie="NavUrl",le="ProductName",re="ProductDescription",se="ProductImage",ce="ProductLink",de="ProductPrice",pe="ProductCurrency",ue="ProductOldPrice",me="ProductNewPrice",ge="ProductPriceDisplay",ye="CTALabel",he="CTAUrl",be=new Set([ue,me]);function fe(e){return`{{${e}}}`}const ke=z;let _e=ke;function xe(e,t=_e){return t&&Array.isArray(t[e])?t[e].map(e=>({...e,token:e.token||fe(e.key)})):[]}let ve=[],Ce=[],we=[],Se={},je=[],Ie=[],Ne=[];function Te(){ve=xe("global",_e),Ce=xe("product",_e),we=xe("discount",_e),Se=[...ve,...Ce,...we].reduce((e,t)=>(e[t.key]=t,e),{}),je=we.map(e=>({variableKey:e.key,labelKey:e.labelKey}));const e=Ce.filter(e=>!be.has(e.key));Ie=e.map(e=>({variableKey:e.key,labelKey:e.labelKey})),Ne=ve.map(e=>({value:e.token,label:e.label,key:e.key,labelKey:e.labelKey,source:e.source,type:e.type})),we.map(e=>({value:e.token,label:e.label,key:e.key,labelKey:e.labelKey,source:e.source,type:e.type})),e.map(e=>({value:e.token,label:e.label,key:e.key,labelKey:e.labelKey,source:e.source,type:e.type}))}Te();const Ae={[W]:"Customer",[q]:"20%",[J]:"SAVE20",[G]:"12-31-2025",[Y]:"Company Name",[X]:"Company Name",[Z]:"123 Main St, City, Country",[Q]:"www.example.com",[ee]:"https://via.placeholder.com/150x50/ffffff/333333?text=Logo",[te]:"Your tagline here",[ne]:"https://via.placeholder.com/600x200/eeeeee/666666?text=Hero",[oe]:"https://via.placeholder.com/600x100/eeeeee/666666?text=Footer",[ae]:"Link",[ie]:"https://www.example.com",[le]:"Product Name",[re]:"Product description goes here.",[se]:"https://via.placeholder.com/300x300/eeeeee/666666?text=Product",[ce]:"https://www.example.com",[de]:"0",[pe]:"USD",[ue]:"0",[me]:"0",[ge]:"USD 0",[ye]:"Shop Now",[he]:"www.example.com"};function Le(e){return null==e||"string"!=typeof e?"":e.replace(/&/g,"&").replace(/</g,"<").replace(/>/g,">").replace(/"/g,""")}const Pe=new Set([ge]);function Re(e,t,n={}){if(null==e||"string"!=typeof e)return"";const o=e.replace(/\{\{(\w+)\}\}/g,(e,o)=>{const a=Me(t,o,n);return Pe.has(o)?a:Le(a)});return null==(a=o)||"string"!=typeof a?a:a.replace(/^(<p[^>]*>\s*(?:<br\s*\/?>| )?\s*<\/p>\s*)+/i,"");var a}function $e(e){return Ae[e]??"—"}const Be=/^\{\{\s*[\w.]+\s*\}\}$/;function De(e,t,{allowEmpty:n=!1}={}){if(null==e)return $e(t);const o=String(e).trim();return n||""!==o?function(e){return"string"==typeof e&&Be.test(e.trim())}(o)?$e(t):o:$e(t)}function Me(e,t,n={}){if(!e)return $e(t);const{columnIndex:o,columnProduct:a}=n;let i=a;switch(!i&&e.content?.products&&"number"==typeof o&&(i=e.content.products[o]||null),t){case W:return $e(W);case q:return De(e.content?.discount?.value,q);case J:return De(e.content?.discount?.code,J);case G:return De(e.content?.discount?.valid_until,G);case Y:case X:return De(e.companyContext?.name,t);case Z:return De(e.companyContext?.address,Z);case Q:return De(e.companyContext?.website,Q);case ee:return De(e.brandContext?.logo_url,ee);case te:return De(e.brandContext?.tagline,te);case ne:return De(e.brandContext?.heroBanner,ne);case oe:return De(e.brandContext?.footerBanner,oe);case ae:case ie:return $e(t);case le:return De(i?.name,le);case re:return De(i?.description,re);case se:return De(i?.image,se);case ce:return De(i?.link,ce);case de:return null!=i?.price&&"number"==typeof i.price||null!=i?.price&&"string"==typeof i.price?String(i.price):null!=i?.new_price?String(i.new_price):$e(de);case pe:return De(i?.currency,pe);case ue:return De(i?.old_price,ue);case me:return null!=i?.new_price?De(i.new_price,me):null!=i?.price?De(i.price,me):$e(me);case ge:{const e=null!=i?.currency?String(i.currency):"",t=null!=i?.price?String(i.price):null!=i?.new_price?String(i.new_price):null,n=null!=i?.old_price||null!=i?.new_price,o=null!=i?.old_price?String(i.old_price):null,a=null!=i?.new_price?String(i.new_price):null!=i?.price?String(i.price):null;if(n&&(null!=o||null!=a)){const t=null!=o?Le(e?`${e} ${o}`:o):"";return[""!==t?`<span style="text-decoration: line-through;">${t}</span>`:"",null!=a?Le(e?`${e} ${a}`:a):""].filter(Boolean).join(" ")||$e(ge)}return e&&null!=t?Le(`${e} ${t}`):$e(ge)}case ye:{const t=e.content?.cta?.text;return De(t,ye)}case he:{const t=e.content?.cta?.url;return De(null!=t?t:e.companyContext?.website,he)}default:return $e(t)}}const Ee=[{variableKey:ee,labelKey:"variable_image_logo"},{variableKey:ne,labelKey:"variable_image_hero_banner"},{variableKey:oe,labelKey:"variable_image_footer_banner"}],Ue=[{variableKey:se,labelKey:"variable_image_product_image"}],Fe=[{variableKey:ye,labelKey:"variable_cta_label"}],Oe=[{variableKey:he,labelKey:"variable_cta_url"}];function He(e,t,n,o={}){let a=[];return"discount"===t?a=[...je]:"product"===t&&(a=[...Ie]),a.map(({variableKey:e,labelKey:t})=>({...Se[e]||{},variableKey:e,labelKey:t,value:fe(e),pasteValue:Me(n,e,o)}))}function Ke(e,t,n,o={},a=[]){const i="none"===t?Ne.map(e=>({...e,pasteValue:Me(n,e.key,o)})):He(0,t,n,o),l=(a||[]).filter(e=>e&&e.containerType&&"none"!==e.containerType).flatMap(e=>He(0,e.containerType,n,e.context||{})),r=new Set,s=[];return[...i,...l].forEach(e=>{const t=e.variableKey||e.key||e.value;t&&!r.has(t)&&(r.add(t),s.push(e))}),s}const ze={display_text:"DisplayText",introduction:"Introduction",heading:"Heading",subheading:"Subheading",products_description:"ProductDescription"};function Ve(e,t,n,o){return{value:fe(e),labelKey:t,variableKey:e,key:e,type:"image",pasteValue:Me(n,e,o)}}function We(e,t,n={}){const o=Ee.map(({variableKey:e,labelKey:o})=>Ve(e,o,t,n));if("product"===e){const e=Ue.map(({variableKey:e,labelKey:o})=>Ve(e,o,t,n));return[...o,...e]}return o}function qe(e){return!1!==e?.linkEnabled}const Je=e=>String(e??"").replace(/&/g,"&").replace(/</g,"<").replace(/>/g,">"),Ge=e=>Je(e).replace(/"/g,""").replace(/'/g,"'"),Ye=(e,t="#")=>{if(null==e)return t;const n=String(e).trim();if(!n)return t;const o=n.toLowerCase();return/^\s*(?:javascript|vbscript):/i.test(o)||/^\s*data:/i.test(o)?t:/^https?:\/\//i.test(n)||/^mailto:/i.test(n)||/^tel:/i.test(n)?n:n.startsWith("//")?`https:${n}`:/^[a-z][a-z\d+.-]*:/i.test(n)?n:`https://${n.replace(/^\/+/,"")}`},Ze=(e,t)=>{const n=new RegExp(/[A-Z]/g),o=e=>e.replace(n,e=>`-${e.toLowerCase()}`),a={desktop:t?.desktop??{},mobile:t?.mobile??{}};let i={className:e,desktop:"",mobile:""};for(let e of Object.entries(a.desktop))e[1]&&"contentBackground"!==e[0]&&(i.desktop+=`${o(e[0])}:${"number"==typeof e[1]?e[1]+"px":e[1]};`);if(Object.keys(a.mobile).length){let t="";for(let e of Object.entries(a.mobile))e[1]&&"contentBackground"!==e[0]&&(t+=`${o(e[0])}:${"number"==typeof e[1]?e[1]+"px":e[1]} !important;`);i.mobile+=`@media(max-width:620px){\n .${e} {\n ${t}\n }\n }`}return i},Qe=(e,t="",n)=>{const o=e.map((e,o)=>{let a={...e};const i={desktop:e?.styles?.desktop??{},mobile:e?.styles?.mobile??{}};if(a.styleConfig=Ze(n?`${n}-${e.key}-${o}`:`${e.key}-${o}`,i),a.contentStyles){const n={desktop:a.contentStyles?.desktop??{},mobile:a.contentStyles?.mobile??{}};a.contentStyleConfig=Ze(`${e.key}-content-${o}`,n),a.contentStyleConfig.mobile&&(t+=a.contentStyleConfig.mobile)}if(a.styleConfig.mobile&&(t+=a.styleConfig.mobile),i.desktop.contentBackground&&(a.contentStyleConfig={className:`${e.key}-content-${o}`,desktop:`background-color:${i.desktop.contentBackground};`,mobile:""}),i.mobile.contentBackground&&(a.contentStyleConfig||(a.contentStyleConfig={className:`${e.key}-content-${o}`,desktop:"",mobile:""}),a.contentStyleConfig.mobile=` @media(max-width:620px){\n .${a.contentStyleConfig.className} {background-color:${i.mobile.contentBackground};}\n }`,t+=a.contentStyleConfig.mobile),e.children?.length){const{newBlockList:n,styles:i}=Qe(e.children,t,o);t+=i,a.children=n}return{...a}});return{newBlockList:o,styles:t}};function Xe(e,t){return e&&t?String(e).replace(/<a\b([^>]*)>/gi,(e,n)=>{const o=n.match(/\sstyle\s*=\s*"([^"]*)"/i);if(o){const e=(o[1]||"").replace(/\s*color\s*:[^;]+;?/gi,"").replace(/^\s*;|;\s*$/g,"").trim(),a=`${e?`${e}; `:""}color: ${t};`;return`<a${n.replace(o[0],` style="${a}"`)}>`}return`<a${n} style="color: ${t};">`}):e}function et(e){const t=String(e??"");return null!=(n=t)&&"string"==typeof n&&/<[a-zA-Z!/?]/.test(n.trim())?function(e){if(!e||!/<a\b/i.test(e))return e;const t=(e,t,n)=>{const o=(t[1]||"").replace(/\s*text-decoration(-line)?\s*:[^;]+;?/gi,"").replace(/^\s*;|;\s*$/g,"").trim(),a=(o?`${o}; `:"")+"text-decoration: none;",i='"'===n?` style="${a}"`:` style='${a}'`;return`<a${e.replace(t[0],i)}>`};return String(e).replace(/<a\b([^>]*)>/gi,(e,n)=>{const o=n.match(/\sstyle\s*=\s*"([^"]*)"/i);if(o)return t(n,o,'"');const a=n.match(/\sstyle\s*=\s*'([^']*)'/i);return a?t(n,a,"'"):`<a${n} style="text-decoration: none;">`})}(t):Je(t);var n}const tt=(e,t,n={})=>{let o=e.dynamicSelectedContent??e.text??"";t&&o&&(o=Re(o,t,n));return o=Xe(o,e?.styles?.desktop?.linkColor||e?.styles?.desktop?.color),`<${e.type} ${e.styleConfig?.mobile?`class="${e.styleConfig.className}"`:""} \n style="${e.styleConfig?.desktop||""}">\n ${o}\n </${e.type}>`},nt=(e,t,n,o,a,i)=>{let l="";const r={columnIndex:a??0,columnProduct:o?.columnProducts?.[i??0]??null};return e.forEach((e,s)=>{if("column"===e.key){const r=e.styles?.desktop?.borderRadius,c=r?`border-radius:${"number"==typeof r?r+"px":r};`:"",d=c?"overflow:hidden;":"",p=e.containerType&&"none"!==e.containerType?e:o,u=e.containerType&&"none"!==e.containerType?s:a,m=e.containerType&&"none"!==e.containerType?0:i;l+=`<div ${e.styleConfig.mobile?`class="${e.styleConfig.className}"`:""} \n style="${e.styleConfig.desktop};width:100%;display:block;${d}">\n <table ${e.contentStyleConfig.mobile?`class="${e.contentStyleConfig.className}"`:""} \n style="width:100%;max-width:${t.contentWidth}px;margin:0 auto;${c}${e.contentStyleConfig.desktop}">\n <tbody><tr>${nt(e.children,t,n,p,u,m)}</tr></tbody>\n </table></div>`}if("content"===e.key&&(l+=`<td ${e.styleConfig.mobile?`class="${e.styleConfig.className}"`:""} \n style="width:${e.width}; ${e.styleConfig.desktop}">${nt(e.children,t,n,o,a,s)}</td>`),"text"===e.key){const t=null!=o?{columnIndex:a??0,columnProduct:o?.columnProducts?.[i??0]??null}:r;e.type&&/^h[1-4]$/.test(e.type)?l+=tt(e,n,t):l+=((e,t,n={},o=null)=>{let a=e.dynamicSelectedContent??e.text??"";t&&a&&(a=Re(a,t,n)),a=Xe(a,e?.styles?.desktop?.linkColor||e?.styles?.desktop?.color);const i="footer"===o?.containerType,l=null==(r=a)||"string"!=typeof r?"":r.replace(/<[^>]+>/g,"").replace(/\s+/g," ").trim();var r;return!i||""!==l&&"{{Address}}"!==l&&"{{Tagline}}"!==l?`<div ${e.styleConfig?.mobile?`class="${e.styleConfig.className}"`:""} \n style="${e.styleConfig?.desktop||""}">${a}</div>`:""})(e,n,t,o)}if("heading"===e.key&&(l+=tt(e,n,r)),"image"===e.key){l+=((e,t,n={})=>{let o=e.src||"";const a="string"==typeof e.src&&/^\{\{\s*[\w.]+\s*\}\}$/.test(e.src.trim())?e.src.trim():"";if(t&&a){const e=Me(t,a.replace(/^\{\{\s*|\s*\}\}$/g,""),n);e&&!/^\{\{\s*[\w.]+\s*\}\}$/.test(String(e).trim())&&(o=e)}const i=`<img src="${Ge(o)}" alt="${Ge(e.alt||"Image")}" style="max-width:100%;${e.styleConfig.desktop}" \n ${e.styleConfig.mobile?`class="${e.styleConfig.className}"`:""}/>`,l=null!=e.linkURL?String(e.linkURL).trim():"",r=qe(e)&&""!==l?`<a href="${Ge(Ye(l))}" target="_blank" rel="noopener noreferrer" style="text-decoration:none;">${i}</a>`:i;return`<div ${e.contentStyleConfig.mobile?`class="${e.contentStyleConfig.className}"`:""} \n style="${e.contentStyleConfig.desktop}">\n ${r}\n </div>`})(e,n,null!=o?{columnIndex:a??0,columnProduct:o?.columnProducts?.[i??0]??null}:r)}if("button"===e.key){l+=((e,t,n={})=>{let o=e.text||"",a=e.linkURL||"";if(t){const i=o.match(/\{\{(\w+)\}\}/),l=e.labelVariable?e.labelVariable.replace(/^\{\{|\}\}$/g,"").trim():i?i[1]:void 0;if(l){const e=Me(t,l,n);null==e||String(e).startsWith("{{")||(o=String(e))}if(e.urlVariable){const o=Me(t,e.urlVariable.replace(/^\{\{|\}\}$/g,""),n);o&&!o.startsWith("{{")&&(a=String(o))}}const i=et(o),l=Ge(Ye(a)),r=e.styleConfig.desktop||"",s=r.includes("background-color:")?"":`background-color:${(e=>e?.brandContext?.brand_color??"#111111")(t)};`;return`<div ${e.contentStyleConfig.mobile?`class="${e.contentStyleConfig.className}"`:""} \n style="${e.contentStyleConfig.desktop}">\n <a ${e.styleConfig.mobile?`class="${e.styleConfig.className}"`:""} \n style="${r}${s}text-align:center;text-decoration:none;" target="_blank" rel="noopener noreferrer" href="${l}">${i}</a>\n </div>`})(e,n,null!=o?{columnIndex:a??0,columnProduct:o?.columnProducts?.[i??0]??null}:r)}var c,d,p;"divider"===e.key&&(l+=`<div ${(c=e).contentStyleConfig.mobile?`class="${c.contentStyleConfig.className}"`:""} \n style="${c.contentStyleConfig.desktop}">\n <div ${c.styleConfig.mobile?`class="${c.styleConfig.className}"`:""} \n style="${c.styleConfig.desktop}"></div>\n </div>`),"spacer"===e.key&&(l+=(d=e,`<div ${d.contentStyleConfig?.mobile?`class="${d.contentStyleConfig.className}"`:""} \n style="${d.contentStyleConfig?.desktop||""}">\n <div ${d.styleConfig?.mobile?`class="${d.styleConfig.className}"`:""} \n style="${d.styleConfig?.desktop||""}"></div>\n </div>`)),"menu"===e.key&&(l+=(e=>{const t=e.list||[],n=null!=e.separator?String(e.separator):" | ",o=e.styleConfig?.desktop||"",a=e.contentStyleConfig?.desktop||"",i=t.map(e=>{const t=Ye(e.url,"#"),n="_blank"===e.target?"_blank":"_self",a=Je(e.label||"Link");return`<a target="${n}" href="${Ge(t)}" style="${o};text-decoration:none;display:inline-block;">${a}</a>`}).join(n);return`<div ${e.contentStyleConfig?.mobile?`class="${e.contentStyleConfig.className}"`:""} style="${a}">${i}</div>`})(e)),"avatar"===e.key&&(l+=(e=>{const t=e.src||"",n=e.alt||"Avatar",o=e.linkURL,a=e.styleConfig?.desktop||"",i=e.styles?.desktop?.width??64,l=`max-width:100%;width:${"number"==typeof i?i+"px":i};height:${"number"==typeof i?i+"px":i};object-fit:cover;border-radius:${e.styles?.desktop?.borderRadius??"50%"};${a}`,r=Ge(t),s=Ge(n),c=t?`<img src="${r}" alt="${s}" style="${l}" />`:`<div style="${l};background:#eee;display:flex;align-items:center;justify-content:center;"></div>`,d=e.contentStyleConfig?.desktop||"",p=o?`<a href="${Ge(Ye(o))}" target="_blank" rel="noopener noreferrer">${c}</a>`:c;return`<div ${e.contentStyleConfig?.mobile?`class="${e.contentStyleConfig.className}"`:""} style="${d}">${p}</div>`})(e)),"social_link"===e.key&&(l+=`<div ${(p=e).contentStyleConfig.mobile?`class="${p.contentStyleConfig.className}"`:""} \n style="${p.contentStyleConfig.desktop}">\n ${p.list.map(e=>{const{image:t,title:n,linkURL:o}=e;return`<a target="_blank" rel="noopener noreferrer" href="${Ge(Ye(o))}" style="${p.styleConfig.desktop};display:inline-block;">\n <img src="${Ge(t)}" alt="${Ge(n)}" style="width:${p.imageWidth}px;" \n ${p.styleConfig.mobile?`class="${p.styleConfig.className}"`:""}/> \n </a>`}).join("")}\n </div>`)}),l},ot={preHeader:"",contentWidth:600,styles:{backgroundColor:"#f5f5f5",color:"#152b2a",fontFamily:"Arial"}},at=({bodySettings:e,blockList:t,templateData:n})=>{let o="";const a=((e,t)=>{if(!Array.isArray(e))return e;const n=t?.content?.products;if(!Array.isArray(n)||0===n.length)return e;const o=t?.content?.primaryProductId,a=(o?n.find(e=>e?.id===o):n[0])??n[0]??null;if(!a)return e;const i=n.filter(e=>e?.id!==a.id),l=e=>{if(!e||"object"!=typeof e)return e;const t=Array.isArray(e.children)?e.children.map(l):e.children;if("column"!==e.key||"product"!==e.containerType)return{...e,children:t};const n="additional"===e.productRole?"additional":"main",o=Math.max(Array.isArray(t)?t.length:0,Array.isArray(e.columnProducts)?e.columnProducts.length:0,1),r=Array.from({length:o},(e,t)=>"main"===n||0===i.length?a:i[t%i.length]);return{...e,children:t,columnProducts:r}};return e.map(l)})(t,n),{newBlockList:i,styles:l}=Qe(a);return o=nt(i,e,n),`<html>\n <head>\n <meta charset="UTF-8">\n <title>email</title>\n <meta name="viewport" content="width=device-width, initial-scale=1" />\n <style type="text/css">\n *{\n margin: 0;\n padding: 0;\n border: none;\n box-sizing: border-box;\n }\n\n html,body {\n height:100%;\n overflow-y:auto;\n }\n\n table {\n width: 100%;\n color:unset;\n }\n\n table, tr, td {\n vertical-align: top;\n border-collapse: collapse;\n }\n\n h1,h2,h3,h4 {\n display: block;\n margin-block-start: 0px;\n margin-block-end: 0px;\n margin-inline-start: 0px;\n margin-inline-end: 0px;\n font-weight: bold;\n }\n\n @media(max-width:620px){\n td {\n display:inline-block;\n width:100% !important;\n }\n }\n ${l}\n</style>\n </head>\n <body>\n <div style="opacity:0;">${e.preHeader}</div>\n <div style="background-color:${e.styles.backgroundColor};color:${e.styles.color}; font-family:${e.styles.fontFamily};"> ${o}</div>\n </body>\n </html>`};function it(e){let t=e;if("string"==typeof e)try{t=JSON.parse(e)}catch(e){throw new Error("exportNormalizerToHtml: invalid JSON")}if(null==t)throw new Error("exportNormalizerToHtml: input is null or undefined");let n=[],o={...ot,styles:{...ot.styles}};Array.isArray(t)?n=t:"object"==typeof t&&(n=Array.isArray(t.blockList)?t.blockList:[],t.bodySettings&&"object"==typeof t.bodySettings&&(o={preHeader:null!=t.bodySettings.preHeader?t.bodySettings.preHeader:ot.preHeader,contentWidth:Number(t.bodySettings.contentWidth)||ot.contentWidth,styles:{backgroundColor:t.bodySettings.styles?.backgroundColor??ot.styles.backgroundColor,color:t.bodySettings.styles?.color??ot.styles.color,fontFamily:t.bodySettings.styles?.fontFamily??ot.styles.fontFamily}}));return`<!DOCTYPE html>\n${at({bodySettings:o,blockList:n,templateData:t.templateData})}`}const lt=["product"];function rt(e){return Array.isArray(e)?e:e&&"object"==typeof e?Object.values(e):[]}function st(e,t={}){if(!e||"object"!=typeof e)return e;if("image"===e.key){const n="string"==typeof e.imageVariable&&/^\{\{\w+\}\}$/.test(e.imageVariable.trim())?e.imageVariable.trim():"",o="string"==typeof e.src&&/^\{\{\w+\}\}$/.test(e.src.trim())?e.src.trim():"",{imageVariable:a,...i}=e;return{...i,src:o||n||e.src,children:rt(e.children).map(e=>st(e,t))}}if("column"===e.key){const{ctaText:n,...o}=e,a=e.containerType,i=function(e){return null==e||"none"===e?"none":"discount"===e?"discount":"product"===e||"hero_product"===e||"additional_product"===e?"product":"none"}(a),l="product"===i?e.productRole??("additional_product"===a?"additional":"main"):void 0,r=rt(e.children);let s=e.columnProducts;if(lt.includes(i)){const e=r.length;Array.isArray(s)||(s=[]),s=Array.from({length:e},(e,t)=>s[t]??null)}else s=[];return{...o,containerType:i,productRole:l,columnProducts:s,children:(r||[]).map(e=>st(e,t))}}if("heading"===e.key){const n=e.id?t?.[e.id]:null,o={...e,key:"text",name:e.name,type:e.type||"h1",contentType:e.contentType??"static",text:e.text,styles:e.styles,contentStyles:e.contentStyles,selectedVariableKey:e.selectedVariableKey,dynamicVariable:n?.variable??e.dynamicVariable,dynamicPrompt:n?.prompt??e.dynamicPrompt,dynamicSelectedContent:n?.selectedContent??e.dynamicSelectedContent,dynamicOptions:Array.isArray(n?.options)?n.options:n?.selectedContent?[n.selectedContent]:e.dynamicOptions};return"dynamic"===o.contentType&&(o.dynamicVariable=o.dynamicVariable??"",o.dynamicPrompt=o.dynamicPrompt??"",o.dynamicSelectedContent=o.dynamicSelectedContent??"",o.dynamicOptions=Array.isArray(o.dynamicOptions)?o.dynamicOptions:[]),{...o,children:rt(e.children).map(e=>st(e,t))}}if("text"===e.key){const n=e.id?t?.[e.id]:null,o=e.contentType??"static",a={...e,type:e.type||"p",contentType:o};return"dynamic"===o&&(a.dynamicVariable=n?.variable??e.dynamicVariable??"",a.dynamicPrompt=n?.prompt??e.dynamicPrompt??"",a.dynamicSelectedContent=n?.selectedContent??e.dynamicSelectedContent??"",a.dynamicOptions=Array.isArray(n?.options)?n.options:n?.selectedContent?[n.selectedContent]:Array.isArray(e.dynamicOptions)?e.dynamicOptions:[]),{...a,children:rt(e.children).map(e=>st(e,t))}}return{...e,children:rt(e.children).map(e=>st(e,t))}}function ct(e,t={}){const n=Array.isArray(e)?e:e&&"object"==typeof e?Object.values(e):null;if(!Array.isArray(n))return e;const o=n.map(e=>st(e,t));return o.forEach(u),o}const dt="https://api-alpha.markopolo.ai/v1",pt="https://nbq-ml-api-stg.markopolo.ai/v1",ut="95b48b5b-cf5e-486d-817e-9839d4c4e618";function mt(e,t){const n=null!=(o=e)&&"string"==typeof o&&o.trim()?o.replace(/\/$/,""):dt;var o;const a=function(e){return null!=e&&"string"==typeof e&&e.trim()?e.replace(/\/$/,""):pt}(t);return{imageUploadEndpoint:`${n}/upload-file`,imageUploadQueryParams:{show:!1},imageUploadCompanyField:"comment",productsEndpoint:`${n}/knowledge-base/products`,mlEmailNodesEndpoint:`${a}/ml-service/content/generate-email-nodes`}}function gt(e={}){const t=e&&"object"==typeof e?e:{},{apiBaseUrlV1:n,apiBaseV1:o,mlGenerationApiBaseUrlV1:a,mlApiBaseUrlV1:i,headers:l,...r}=t,s=n||o||dt,c="undefined"!=typeof process&&process.env?.REACT_APP_ML_API_BASE_V1,d=mt(s,a||i||c||pt),p="undefined"!=typeof process?String(process.env?.REACT_APP_EMAIL_TEMPLATE_ID??"").trim():"",u={...d,...r},m=String(u.emailTemplateId??"").trim()||p||ut;return{...u,emailTemplateId:m,headers:{...u.headers||{},...l||{}}}}const yt={preHeader:"",contentWidth:600,styles:{backgroundColor:"#f5f5f5",color:"#152b2a",fontFamily:"Arial"}};function ht(e){if(!e||"object"!=typeof e)return"";return`${e.severity??"unknown"}:${e.code??"issue"}:${e.blockId??"global"}:${e.location??""}`}function bt(e,t=!1){if(null==e||""===String(e).trim())return t;const n=String(e).trim();try{return/^https?:\/\//i.test(n)?new URL(n):new URL("https://"+n),!0}catch{return!1}}const ft={text:"Text",heading:"Heading",button:"Button",image:"Image",avatar:"Profile image",menu:"Menu",social_link:"Social links"};const kt={none:"Container",product:"Product",discount:"Discount",header:"Header",footer:"Footer",navigation_bar:"Navigation",introduction:"Introduction",hero:"Hero",hero_product:"Hero product",body:"Body",additional_product:"Additional product"};function _t(e,t,n){const o=e.containerType??"none",a=function(e){const t=e??"none";return kt[t]?kt[t]:String(t).replace(/_/g," ").replace(/\b\w/g,e=>e.toUpperCase())}(o);return n<=1?a:"none"===o?`${xt(t+1)} section`:`${xt(t+1)} ${a} block`}function xt(e){const t=e%10,n=e%100;return 1===t&&11!==n?`${e}st`:2===t&&12!==n?`${e}nd`:3===t&&13!==n?`${e}rd`:`${e}th`}function vt(e,t){return t<=1?null:`${xt(e+1)} of ${t} stacked blocks`}function Ct(e,t,n,o){const a=function(e){return ft[e]?ft[e]:String(e||"block").replace(/_/g," ").replace(/\b\w/g,e=>e.toUpperCase())}(t),i=[...e];o&&i.push(o);const l=i.length>0?i.join(" → "):"Email body";return n?`${a} ("${n}") — ${l}`:`${a} — ${l}`}function wt(e,t){const n=function(e){return null==e||"object"!=typeof e?{...yt,styles:{...yt.styles}}:{preHeader:null!=e.preHeader?e.preHeader:yt.preHeader,contentWidth:Number(e.contentWidth)||yt.contentWidth,styles:{backgroundColor:null!=e.styles?.backgroundColor?e.styles.backgroundColor:yt.styles.backgroundColor,color:null!=e.styles?.color?e.styles.color:yt.styles.color,fontFamily:null!=e.styles?.fontFamily?e.styles.fontFamily:yt.styles.fontFamily}}}(e);("number"!=typeof n.contentWidth||n.contentWidth<=0)&&t.push({severity:"error",code:"body_content_width_invalid",message:"Body content width must be a positive number.",location:"Theme settings"});const o=n.styles;null!=o.backgroundColor&&""!==String(o.backgroundColor).trim()||t.push({severity:"error",code:"body_background_color_missing",message:"Theme background color is missing.",location:"Theme settings"}),null!=o.color&&""!==String(o.color).trim()||t.push({severity:"error",code:"body_text_color_missing",message:"Theme text color is missing.",location:"Theme settings"}),null!=o.fontFamily&&""!==String(o.fontFamily).trim()||t.push({severity:"error",code:"body_font_family_missing",message:"Theme font family is missing.",location:"Theme settings"})}function St(e,t){e.push(t)}const jt=["product"];function It(e,t,n,o,a,i){if("dynamic"!==(e.contentType??"static"))return;const l=e.dynamicSelectedContent,r=null!=e?.id?i?.[e.id]?.selectedContent:void 0;let s=null!=l&&""!==String(l).trim()?l:r;var c;null!=s&&""!==String(s).trim()||null==e.text||""===(null==(c=e.text)?"":String(c).replace(/<[^>]+>/g," ").replace(/\s+/g," ").trim())||(s=e.text),null!=s&&""!==String(s).trim()||St(n,{severity:"warning",code:"dynamic_content_empty",message:"Dynamic content not generated; export will use static text if available.",location:Ct(t,o,void 0,a),blockId:e.id??null})}function Nt(e,t,n,o,a){if(!Array.isArray(e))return;const i=e.length;e.forEach((e,l)=>{if(!e||"object"!=typeof e)return;const r=e.key;if("column"===r){const r=_t(e,l,i),s=[...t,r];return function(e,t,n){const o=e.containerType??"none";if(!jt.includes(o))return;const a=e.children??[],i=e.columnProducts??[];a.forEach((o,l)=>{const r=i[l];if(null==r||"object"==typeof r&&!r.id){const o=a.length>1?`Column ${l+1} of ${a.length}`:"This column",i=[...t,o].join(" → ");St(n,{severity:"warning",code:"container_product_not_assigned",message:"A product is not assigned to this column; assign a product in Container settings.",location:i,blockId:e.id??null})}})}(e,s,n),void(Array.isArray(e.children)&&Nt(e.children,s,n,o,a))}if("content"===r){const r=i>1?`Column ${l+1} of ${i}`:null,s=r?[...t,r]:t;return void(Array.isArray(e.children)&&Nt(e.children,s,n,o,a))}const s=vt(l,i);switch(r){case"image":!function(e,t,n,o){const a=e.src,i=()=>Ct(t,"image",void 0,o);null!=a&&""!==String(a).trim()?(bt(a,!1)||St(n,{severity:"warning",code:"image_invalid_src",message:"Image URL format is invalid.",location:i(),blockId:e.id??null}),null!=e.alt&&""!==String(e.alt).trim()||St(n,{severity:"info",code:"image_empty_alt",message:"Image alt text is empty; consider adding for accessibility.",location:i(),blockId:e.id??null})):St(n,{severity:"error",code:"image_empty_src",message:"Image URL is empty; the image will not display.",location:i(),blockId:e.id??null})}(e,t,n,s);break;case"avatar":!function(e,t,n,o){const a=e.src,i=()=>Ct(t,"avatar",void 0,o);null==a||""===String(a).trim()?St(n,{severity:"warning",code:"avatar_empty_src",message:"Avatar image URL is empty; avatar will not display.",location:i(),blockId:e.id??null}):bt(a,!1)||St(n,{severity:"warning",code:"avatar_invalid_src",message:"Avatar image URL format is invalid.",location:i(),blockId:e.id??null})}(e,t,n,s);break;case"button":!function(e,t,n,o){const a=e.linkURL,i=()=>Ct(t,"button",void 0,o);null!=a&&""!==String(a).trim()?bt(a,!1)||St(n,{severity:"warning",code:"button_invalid_link",message:"Button link URL format is invalid.",location:i(),blockId:e.id??null}):St(n,{severity:"warning",code:"button_empty_link",message:'Button link URL is empty; will be saved as href="https://".',location:i(),blockId:e.id??null})}(e,t,n,s);break;case"menu":!function(e,t,n,o){const a=e.list||[];a.forEach((a,i)=>{const l=e=>Ct(t,"menu",e||`Item ${i+1}`,o);null!=a.label&&""!==String(a.label).trim()||St(n,{severity:"info",code:"menu_empty_label",message:'Menu item label is empty; will show as "Link".',location:l(`item ${i+1}`),blockId:e.id??null});const r=a.url;null==r||""===String(r).trim()?St(n,{severity:"warning",code:"menu_empty_url",message:'Menu item URL is empty; will be saved as href="#".',location:l(a.label||`item ${i+1}`),blockId:e.id??null}):bt(r,!1)||St(n,{severity:"warning",code:"menu_invalid_url",message:"Menu item URL format is invalid.",location:l(a.label||`item ${i+1}`),blockId:e.id??null})}),0===a.length&&St(n,{severity:"info",code:"menu_no_items",message:"Menu block has no items.",location:Ct(t,"menu",void 0,o),blockId:e.id??null})}(e,t,n,s);break;case"social_link":!function(e,t,n,o){const a=e.list||[];a.forEach((a,i)=>{const l=a.title||a.image||`link ${i+1}`,r=e=>Ct(t,"social_link",e||l,o),s=a.linkURL;null==s||""===String(s).trim()?St(n,{severity:"warning",code:"social_empty_link",message:'Social link URL is empty; will be saved as href="https://".',location:r(l),blockId:e.id??null}):bt(s,!1)||St(n,{severity:"warning",code:"social_invalid_link",message:"Social link URL format is invalid.",location:r(l),blockId:e.id??null});const c=a.image;null==c||""===String(c).trim()?St(n,{severity:"warning",code:"social_empty_icon",message:"Social link icon URL is empty; icon will not display.",location:r(l),blockId:e.id??null}):bt(c,!1)||St(n,{severity:"warning",code:"social_invalid_icon",message:"Social link icon URL format is invalid.",location:r(l),blockId:e.id??null})}),0===a.length&&St(n,{severity:"info",code:"social_no_links",message:"Social link block has no links.",location:Ct(t,"social_link",void 0,o),blockId:e.id??null})}(e,t,n,s);break;case"text":It(e,t,n,"text",s,a);break;case"heading":It(e,t,n,"heading",s,a)}})}function Tt({blockList:e,bodySettings:t,aiContentRefs:n={}}){const o=[];return wt(t,o),Nt(Array.isArray(e)?e:[],[],o,t,n),o}function At(){const e="undefined"!=typeof window&&null!=window?window:"undefined"!=typeof global&&null!=global?global:void 0;if(!e)return;const t=e.Image;return"function"==typeof t?t:void 0}const Lt=/^\{\{\s*[\w.]+\s*\}\}$/;function Pt(e){if(null==e||""===String(e).trim())return null;const t=String(e).trim();if(function(e){return null!=e&&"string"==typeof e&&Lt.test(e.trim())}(t))return null;if(/^https?:\/\//i.test(t))return bt(t,!1)?t:null;if(t.startsWith("//")){const e=`https:${t}`;return bt(e,!1)?e:null}return null}function Rt(e,t=[],n=e?.length??0){const o=[];return Array.isArray(e)?(e.forEach((e,a)=>{if(!e||"object"!=typeof e)return;const i=e.key;if("column"===i){const i=_t(e,a,n),l=[...t,i],r=e.children;return void o.push(...Rt(r,l,r?.length??0))}if("content"===i){const i=n>1?`Column ${a+1} of ${n}`:null,l=i?[...t,i]:t,r=e.children;return void o.push(...Rt(r,l,r?.length??0))}const l=vt(a,n);if("image"===i){const n=Pt(e.src);n&&o.push({url:n,location:Ct(t,"image",void 0,l),blockId:e.id??null})}}),o):o}function $t(e,t=12e3){const n=At();if(!n)return Promise.resolve(!1);const o=String(e).trim();return o?new Promise(e=>{const a=new n;let i=!1;const l=t=>{i||(i=!0,clearTimeout(r),a.onload=null,a.onerror=null,e(t))},r=setTimeout(()=>l(!1),t);a.onload=()=>l(!0),a.onerror=()=>l(!1);try{a.src=o}catch{l(!1)}}):Promise.resolve(!1)}async function Bt(e,t={}){const{timeoutMs:n=12e3,concurrent:o=6}=t;if(!At())return[];const a=Rt(Array.isArray(e)?e:[]);if(0===a.length)return[];const i=new Map;for(const e of a)i.has(e.url)||i.set(e.url,[]),i.get(e.url).push(e.location);const l=[...i.keys()],r=new Map;let s=0;const c=Math.max(1,Math.min(o,l.length));await Promise.all(Array.from({length:c},()=>async function(){for(;s<l.length;){const e=s++,t=l[e],o=await $t(t,n);r.set(t,o)}}()));const d=[];for(const[e,t]of i)if(!0!==r.get(e))for(const n of t)d.push({severity:"warning",code:"image_url_not_loadable",message:"Image URL could not be loaded or previewed; the link may be broken, expired, or blocked.",location:n,blockId:a.find(t=>t.url===e&&t.location===n)?.blockId??null});return d}async function Dt(e,t){return[...Tt(e),...await Bt(e?.blockList??[],t)]}const Mt=(...e)=>e.filter(Boolean).join(" "),Et={drag_block_here:"请将模块拖放到此处",blocks:"模块",photos:"图片",powered_by_pexels:"图片由Pexels提供",loading:"加载中...",content:"内容",styles:"样式",ai_powered:"AI 驱动",layout:"布局",components:"组件",presets:"预设",body_settings:"邮件主题设置",global:"全局",text_and_headings:"文本与标题",pre_header:"预标题",pre_header_description:"预标题是在收件箱中查看电子邮件时跟随主题行的简短摘要文本。",confirm:"确认",cancel:"取消",add_blocks:"请添加块",block_product:"产品",block_product_single:"单个",block_product_multi:"多个",block_discount:"折扣",block_introduction:"引言",block_body:"正文",block_header:"页眉",block_footer:"页脚",no_product_found:"未找到产品",no_products_matching_search:"没有符合搜索条件的产品。清空搜索可查看完整列表。",load_more_products:"加载更多",add_products:"添加产品",add_products_in_store:"请在店铺中添加产品。",column:"列",columns:"列排版",column_settings:"列设置",column_styles:"列样式",size_px:"尺寸",column_delete:"删除列",column_delete_desc:"您确定删除多余的{{count}}列吗?",container:"容器",container_settings:"容器设置",container_type:"容器类型",container_type_help:"决定该容器可用的变量和产品映射。",container_type_none:"无",container_type_header:"页眉",container_type_discount:"折扣",container_type_introduction:"引言",container_type_body:"正文",container_type_product:"产品",container_type_hero_product:"主推产品",container_type_additional_product:"附加产品",container_type_footer:"页脚",product_role:"产品角色",product_role_main_hero:"主推产品",product_role_additional:"附加产品",assign_product_to_column:"为列分配产品",text:"文本",text_content:"这是一个文本,点击修改文本",text_settings:"文本设置",text_styles:"文本样式",text_align:"文本对齐方式",heading:"标题",heading_content:"这是一个标题,点击修改标题",heading_settings:"标题设置",heading_type:"标题类型",button:"按钮",button_settings:"按钮设置",button_action:"点击按钮触发",button_styles:"按钮样式",button_padding:"按钮内边距",spacer:"间距",spacer_block:"间距块",spacer_settings:"间距设置",divider:"分割线",divider_settings:"分割线设置",divider_type:"分割线类型",divider_styles:"分割线样式",image:"图片",image_settings:"图片设置",image_action:"点击图片跳转",image_url:"图片URL",image_alt:"图片alt",image_styles:"图片样式",image_source:"图片来源",image_source_url:"输入URL",image_source_upload:"上传图片",image_upload:"上传",image_upload_click:"点击上传",image_upload_not_configured:"未配置图片上传。请在 apiConfig 中设置 imageUploadEndpoint,或传入 null 关闭;默认使用内置 API 根地址。",image_uploaded:"图片上传成功",image_upload_failed:"图片上传失败",image_upload_error:"上传图片时出错",uploading:"上传中…",image_source_variable:"使用变量",menu:"导航栏",menu_settings:"导航栏设置",menu_items:"菜单项",menu_item:"菜单项",menu_styles:"菜单样式",add_new_item:"添加新项",label:"标签",page:"页面",url:"链接地址",target:"打开方式",same_tab:"当前窗口",new_tab:"新窗口",separator:"分隔符",letter_spacing:"字间距",link_color:"链接颜色",avatar:"头像",avatar_settings:"头像设置",avatar_image:"头像图片",avatar_border_radius:"圆角",social_link:"社交链接",add_social_link:"添加社交链接",social_link_size:"社交链接大小",social_links:"社交链接",social_link_settings:"社交链接设置",content_background_color:"内容背景颜色",background_color:"背景颜色",text_color:"文本颜色",email_theme_background_color:"邮件主题色",font_color:"字体颜色",button_color:"按钮颜色",divider_color:"分割线颜色",action_type:"按钮类型",top:"上",right:"右",left:"左",bottom:"下",line_height:"行高",link:"超链接",link_url:"超链接URL",link_url_placeholder:"example.com",padding_settings:"内边距设置",width_auto:"宽度自适应",width:"宽度",height:"高度",font_size:"字体大小",font_family:"字体",align:"对齐方式",solid:"实线",dotted:"虚线(点)",dashed:"虚线(破折号)",spacing:"间距",border_radius:"圆角",export_html:"导出html",export_json:"导出JSON",export_checking_images:"正在检查图片…",language_zh:"中文",export_validation_title:"导出前校验",export_validation_issues_found:"导出前发现以下问题",export_validation_errors:"错误",export_validation_warnings:"警告",export_validation_info:"提示",export_anyway:"仍要导出",ignore:"忽略",validation_body_content_width_invalid:"邮件内容宽度必须为正数。",validation_body_background_color_missing:"主题背景色未设置。",validation_body_text_color_missing:"主题文字颜色未设置。",validation_body_font_family_missing:"主题字体未设置。",validation_image_empty_src:"图片地址为空,图片将无法显示。",validation_image_invalid_src:"图片地址格式无效。",validation_image_url_not_loadable:"图片地址无法加载或预览;链接可能已失效、过期或被拦截。",validation_image_empty_alt:"图片未设置 alt 文本,建议添加以提升可访问性。",validation_avatar_empty_src:"头像图片地址为空,头像将无法显示。",validation_avatar_invalid_src:"头像图片地址格式无效。",validation_button_empty_link:'按钮链接为空,将被保存为 href="https://"。',validation_button_invalid_link:"按钮链接格式无效。",validation_menu_empty_label:"菜单项标签为空,将显示为「链接」。",validation_menu_empty_url:'菜单项链接为空,将被保存为 href="#"。',validation_menu_invalid_url:"菜单项链接格式无效。",validation_menu_no_items:"菜单块没有任何项。",validation_social_empty_link:'社交链接地址为空,将被保存为 href="https://"。',validation_social_invalid_link:"社交链接地址格式无效。",validation_social_empty_icon:"社交链接图标地址为空,图标将无法显示。",validation_social_invalid_icon:"社交链接图标地址格式无效。",validation_social_no_links:"社交链接块没有任何链接。",validation_container_product_not_assigned:"该列未分配产品;请在容器设置中分配产品。",validation_dynamic_content_empty:"未生成动态内容;导出将使用静态文本(如有)。",tooltip_bold:"加粗",tooltip_italic:"斜体",tooltip_underline:"下划线",tooltip_strikethrough:"删除线",tooltip_align_left:"居左",tooltip_align_center:"居中",tooltip_align_right:"居右",tooltip_ordered_list:"有序列表",tooltip_unordered_list:"无序列表",tooltip_link:"超链接",tooltip_remove_link:"删除超链接",add_link_modal_title:"添加超链接",content_type:"内容类型",content_type_static:"静态",content_type_dynamic:"动态",ai_enabled:"使用 AI 撰写",text_and_content_type:"内容类型",heading_or_body:"标题",body_paragraph:"正文",heading_h1:"H1",heading_h2:"H2",heading_h3:"H3",heading_h4:"H4",variables:"变量",insert_merge_field:"选择或输入变量...",dynamic_prompt_help:"描述语气,我们将推荐示例内容。",generate:"生成",ml_generation_failed:"无法生成 AI 内容",ml_ai_unavailable:"AI 生成需要分栏布局、公司 ID、模板 ID 和 ML 接口。请将文本放在栏目内并检查 apiConfig。",ml_no_variations:"未返回任何建议。请更换提示词或确认服务器上存在该模板。",ml_generation_unexpected_error:"生成内容时发生意外错误。",sample_ai_content:"示例 AI 内容",select_content:"选择内容",variable_dynamic_placeholder:"无(可选)",variable_display_text:"展示文案",variable_introduction:"引言",variable_heading:"标题",variable_subheading:"副标题",variable_products_description:"产品描述",variable_customer_name:"客户姓名",variable_introduction_title:"引言标题",variable_introduction_subtitle:"引言副标题",variable_body_title:"正文标题",variable_body_subtitle:"正文副标题",variable_discount_value:"折扣力度",variable_discount_code:"折扣码",variable_valid_until:"有效期至",variable_company_name:"公司名称",variable_brand_name:"品牌名称",variable_address:"地址",variable_website:"网站",variable_logo_url:"Logo URL",variable_tagline:"标语",variable_nav_label:"导航文案",variable_nav_url:"导航链接",variable_product_name:"产品名称",variable_product_description:"产品描述",variable_product_image:"产品图片 URL",variable_product_link:"产品链接",variable_product_price:"产品价格",variable_product_currency:"货币",variable_product_old_price:"原价",variable_product_new_price:"现价",variable_product_price_display:"产品价格展示",variable_image_logo:"Logo",variable_image_hero_banner:"主图横幅",variable_image_footer_banner:"页脚横幅",variable_image_product_image:"产品图片",variable_cta_label:"CTA 文案",variable_cta_url:"CTA 链接",button_label_variable:"按钮文案(变量)",button_url_variable:"按钮链接(变量)",button_text:"按钮文案",button_label_manual:"输入文案",button_url_manual:"输入链接",use_company_social_links:"使用公司社交链接",use_navigation_links:"使用导航链接",tooltip_container_type:"决定该容器可用的变量和产品映射。",tooltip_variables_static:"将合并字段插入内容,发送邮件时将被替换。",tooltip_dynamic_prompt:"描述语气或意图,我们将推荐示例内容。(预览模式 — 连接 AI API 后可生成真实内容。)"},Ut={drag_block_here:"Drag block here",blocks:"Blocks",photos:"Photos",powered_by_pexels:"Powered by Pexels",loading:"Loading...",content:"Content",styles:"Styles",ai_powered:"AI powered",layout:"Layout",components:"Components",presets:"Presets",body_settings:"Theme Settings",global:"Global",text_and_headings:"Text and headings",pre_header:"Pre-header",pre_header_description:"The pre-header is a short summary text that follows the subject line when viewing an email in the inbox.",confirm:"Confirm",cancel:"Cancel",add_blocks:"Add blocks",block_product:"Product",block_product_single:"Single",block_product_multi:"Multi",block_discount:"Discount",block_introduction:"Introduction",block_body:"Body",block_header:"Header",block_footer:"Footer",no_product_found:"No product found",no_products_matching_search:"No products match your search. Clear the search to see the full list.",load_more_products:"Load more",add_products:"Add products",add_products_in_store:"Add products in your store.",column:"Column",columns:"Columns",column_settings:"Column Settings",column_styles:"Column Styles",size_px:"Size",column_delete:"Delete Column",column_delete_desc:"Are you sure you want to delete {{count}} extra columns? ",container:"Container",container_settings:"Container Settings",container_type:"Container Type",container_type_help:"Determines which variables and product mappings are available.",container_type_none:"None",container_type_header:"Header",container_type_discount:"Discount",container_type_introduction:"Introduction",container_type_body:"Body",container_type_product:"Product",container_type_hero_product:"Hero Product",container_type_additional_product:"Additional Product",container_type_footer:"Footer",product_role:"Product Role",product_role_main_hero:"Primary",product_role_additional:"Secondary",assign_product_to_column:"Assign product to column",text:"Text",text_content:"This is a text, click to edit text",text_settings:"Text Settings",text_styles:"Text Styles",text_align:"Text Align",heading:"Heading",heading_content:"This is a heading, click to edit heading",heading_settings:"Heading Settings",heading_type:"Heading Type",button:"Button",button_settings:"Button Settings",button_action:"Button Action",button_styles:"Button Styles",button_padding:"Button Padding",spacer:"Spacer",spacer_block:"SPACER BLOCK",spacer_settings:"Spacer Settings",divider:"Divider",divider_settings:"Divider Settings",divider_type:"Divider Type",divider_styles:"Divider Styles",image:"Image",image_action:"Image Action",image_url:"Image URL",image_alt:"Image Alt",image_styles:"Image Styles",image_settings:"Image Settings",image_source:"Image source",image_source_url:"Enter URL",image_source_upload:"Upload image",image_upload:"Upload",image_upload_click:"Click to upload",image_upload_not_configured:"Image upload is not configured. Set imageUploadEndpoint in apiConfig or pass null to disable; defaults use the built-in API base.",image_uploaded:"Image uploaded successfully",image_upload_failed:"Failed to upload image",image_upload_error:"Error uploading image",uploading:"Uploading…",image_source_variable:"Use variable",menu:"Navigation bar",menu_settings:"Navigation bar Settings",menu_items:"Menu Items",menu_item:"Menu Item",menu_styles:"Menu Styles",add_new_item:"Add New Item",label:"Label",page:"Page",url:"URL",target:"Target",same_tab:"Same Tab",new_tab:"New Tab",separator:"Separator",letter_spacing:"Letter Spacing",link_color:"Link Color",avatar:"Avatar",avatar_settings:"Avatar Settings",avatar_image:"Avatar image",avatar_border_radius:"Border radius",social_link:"Social Link",social_link_settings:"Social Link Settings",add_social_link:"Add Social Link",social_link_size:"Social Link Size",social_links:"Social Links",content_background_color:"Content Background Color",background_color:"Background Color",text_color:"Text Color",email_theme_background_color:"Email Theme Background Color",font_color:"Font Color",button_color:"Button Color",divider_color:"Divider Color",action_type:"Action Type",top:"Top",right:"Right",left:"Left",bottom:"Bottom",line_height:"Line Height",link:"Link",link_url:"Link URL",link_url_placeholder:"example.com",padding_settings:"Padding Settings",width:"Width",height:"Height",width_auto:"Width Auto",font_size:"Font Size",font_family:"Font Family",solid:"Solid",dotted:"Dotted",dashed:"Dashed",align:"Align",spacing:"Spacing",border_radius:"Border radius",export_html:"Export HTML",export_json:"Export JSON",export_checking_images:"Checking images…",language_zh:"中文",export_validation_title:"Export validation",export_validation_issues_found:"Issues found before export",export_validation_errors:"Errors",export_validation_warnings:"Warnings",export_validation_info:"Info",export_anyway:"Export anyway",ignore:"Ignore",validation_body_content_width_invalid:"Body content width must be a positive number.",validation_body_background_color_missing:"Theme background color is missing.",validation_body_text_color_missing:"Theme text color is missing.",validation_body_font_family_missing:"Theme font family is missing.",validation_image_empty_src:"Image URL is empty; the image will not display.",validation_image_invalid_src:"Image URL format is invalid.",validation_image_url_not_loadable:"Image URL could not be loaded or previewed; the link may be broken, expired, or blocked.",validation_image_empty_alt:"Image alt text is empty; consider adding for accessibility.",validation_avatar_empty_src:"Avatar image URL is empty; avatar will not display.",validation_avatar_invalid_src:"Avatar image URL format is invalid.",validation_button_empty_link:'Button link URL is empty; will be saved as href="https://".',validation_button_invalid_link:"Button link URL format is invalid.",validation_menu_empty_label:'Menu item label is empty; will show as "Link".',validation_menu_empty_url:'Menu item URL is empty; will be saved as href="#".',validation_menu_invalid_url:"Menu item URL format is invalid.",validation_menu_no_items:"Menu block has no items.",validation_social_empty_link:'Social link URL is empty; will be saved as href="https://".',validation_social_invalid_link:"Social link URL format is invalid.",validation_social_empty_icon:"Social link icon URL is empty; icon will not display.",validation_social_invalid_icon:"Social link icon URL format is invalid.",validation_social_no_links:"Social link block has no links.",validation_container_product_not_assigned:"A product is not assigned to this column; assign a product in Container settings.",validation_dynamic_content_empty:"Dynamic content not generated; export will use static text if available.",tooltip_bold:"Bold",tooltip_italic:"Italic",tooltip_underline:"Underline",tooltip_strikethrough:"Strikethrough",tooltip_align_left:"Align left",tooltip_align_center:"Align center",tooltip_align_right:"Align right",tooltip_ordered_list:"Ordered list",tooltip_unordered_list:"Unordered list",tooltip_link:"Link",tooltip_remove_link:"Remove link",add_link_modal_title:"Add link",content_type:"Content type",content_type_static:"Static",content_type_dynamic:"Dynamic",ai_enabled:"Write using AI",text_and_content_type:"Content type",heading_or_body:"Heading",body_paragraph:"Body",heading_h1:"H1",heading_h2:"H2",heading_h3:"H3",heading_h4:"H4",variables:"Variables",insert_merge_field:"Select or type variable...",dynamic_prompt_help:"Describe the tone; we'll suggest sample content.",generate:"Generate",ml_generation_failed:"Could not generate AI content",ml_ai_unavailable:"AI generation needs a column layout, company ID, template ID, and ML endpoint. Open this text inside a section column and check apiConfig.",ml_no_variations:"No suggestions were returned. Try another prompt or verify the template exists on the server.",ml_generation_unexpected_error:"Something went wrong while generating content.",sample_ai_content:"Sample AI content",select_content:"Select content",variable_dynamic_placeholder:"None (optional)",variable_display_text:"Display text",variable_introduction:"Introduction",variable_heading:"Heading",variable_subheading:"Subheading",variable_products_description:"Products description",variable_customer_name:"Customer Name",variable_introduction_title:"Introduction Title",variable_introduction_subtitle:"Introduction Subtitle",variable_body_title:"Body Title",variable_body_subtitle:"Body Subtitle",variable_discount_value:"Discount value",variable_discount_code:"Discount code",variable_valid_until:"Valid until",variable_company_name:"Company name",variable_brand_name:"Brand name",variable_address:"Address",variable_website:"Website",variable_logo_url:"Logo URL",variable_tagline:"Tagline",variable_nav_label:"Nav link label",variable_nav_url:"Nav link URL",variable_product_name:"Product name",variable_product_description:"Product description",variable_product_image:"Product image URL",variable_product_link:"Product link",variable_product_price:"Product price",variable_product_currency:"Product currency",variable_product_old_price:"Product old price",variable_product_new_price:"Product new price",variable_product_price_display:"Product price display",variable_image_logo:"Logo",variable_image_hero_banner:"Hero banner",variable_image_footer_banner:"Footer banner",variable_image_product_image:"Product image",variable_cta_label:"CTA label",variable_cta_url:"CTA URL",button_label_variable:"Button label (variable)",button_url_variable:"Button URL (variable)",button_text:"Button text",button_label_manual:"Enter label",button_url_manual:"Enter URL",use_company_social_links:"Use company social links",use_navigation_links:"Use navigation links",tooltip_container_type:"Determines which variables and product mappings are available for this container.",tooltip_variables_static:"Insert a merge field into your content. It will be replaced when the email is sent.",tooltip_dynamic_prompt:"Describe the tone or intent; we'll suggest sample content. (Preview mode — connect an AI API for real generation.)"},Ft=()=>{const{language:t,languageLibraries:n}=e.useContext(O);let o={zh:Et,en:Ut};n&&(o={...o,...n,zh:{...Et,...o.zh||{}},en:{...Ut,...o.en||{}}});return{t:(e,n)=>{let a=(o[t]||{})[e];return n&&n instanceof Object&&Object.keys(n).forEach(e=>{a=a.replace(`{{${e}}}`,n[e])}),a||e}}},Ot=/\{\{(\w+)\}\}/g;function Ht(e,t){if(null!=e)if("string"!=typeof e){if(Array.isArray(e))e.forEach(e=>Ht(e,t));else if("object"==typeof e){if(void 0!==e.$$typeof)return;Object.values(e).forEach(e=>Ht(e,t))}}else(function(e){if("string"!=typeof e||0===e.length)return[];const t=[];let n;for(;null!==(n=Ot.exec(e));){const e=n[1];e&&t.push(e)}return Ot.lastIndex=0,t})(e).forEach(e=>t.add(e))}function Kt(e,t,n){e&&"object"==typeof e&&(e.id&&n.has(e.id)||(e.id&&n.add(e.id),"column"!==e.key?Ht(e,t):(e.children||[]).forEach(e=>{(e?.children||[]).forEach(e=>Kt(e,t,n))})))}function zt(e,t,n,o){if(!e||o.has(e))return;o.add(e);const a=t[e];a&&"object"==typeof a&&("column"===a.key?(a.cells||[]).forEach(e=>{(e.childrenIds||[]).forEach(e=>zt(e,t,n,o))}):Ht(a,n))}function Vt(e,t){const n=new Set;if(!e||"object"!=typeof e)return n;if(Array.isArray(e.children)){const t=new Set;return Kt(e,n,t),n}if(!t||"object"!=typeof t)return n;const o=new Set;return(e.cells||[]).forEach(e=>{(e.childrenIds||[]).forEach(e=>zt(e,t,n,o))}),n}const Wt=()=>{const t=(e,n)=>e?e.classList?.contains("text-content_editable")?null:e&&e.tagName?.toLocaleLowerCase()===n?e:t(e.parentNode,n):null,n=e.useCallback((e,t)=>e?e.classList?.contains("text-content_editable")?null:e&&e.style?.[t]?e.style[t]:n(e.parentNode,t):null,[]);return{getSelectionNode:t,getSectionStyle:n}},qt=({modifyText:t,setTextContent:a})=>{const{selectionRange:l}=e.useContext(O),{getSelectionNode:r}=Wt(),{t:s}=Ft(),c=e.useMemo(()=>l?r(l.commonAncestorContainer,"b"):null,[l,r]);return i.jsx("button",{className:Mt("rich-text-tools-button ",c&&"rich-text-tools-button-active"),title:s("tooltip_bold"),onClick:()=>{t("bold",!1,null),a()},children:i.jsx(n.FontAwesomeIcon,{icon:o.faBold,className:"rich-text-tools-button-icon"})})},Jt=({modifyText:t,setTextContent:a})=>{const{selectionRange:l}=e.useContext(O),{getSelectionNode:r}=Wt(),{t:s}=Ft(),c=e.useMemo(()=>l?r(l.commonAncestorContainer,"i"):null,[l,r]);return i.jsx("button",{className:Mt("rich-text-tools-button ",c&&"rich-text-tools-button-active"),title:s("tooltip_italic"),onClick:()=>{t("italic",!1,null),a()},children:i.jsx(n.FontAwesomeIcon,{icon:o.faItalic,className:"rich-text-tools-button-icon"})})},Gt=({modifyText:t,setTextContent:a})=>{const{selectionRange:l}=e.useContext(O),{getSelectionNode:r}=Wt(),{t:s}=Ft(),c=e.useMemo(()=>l?r(l.commonAncestorContainer,"u"):null,[l,r]);return i.jsx("button",{className:Mt("rich-text-tools-button ",c&&"rich-text-tools-button-active"),title:s("tooltip_underline"),onClick:()=>{t("underline",!1,null),a()},children:i.jsx(n.FontAwesomeIcon,{icon:o.faUnderline,className:"rich-text-tools-button-icon"})})},Yt=({modifyText:t,setTextContent:a})=>{const{selectionRange:l}=e.useContext(O),{getSelectionNode:r}=Wt(),{t:s}=Ft(),c=e.useMemo(()=>l?r(l.commonAncestorContainer,"strike"):null,[l,r]);return i.jsx("button",{className:Mt("rich-text-tools-button ",c&&"rich-text-tools-button-active"),title:s("tooltip_strikethrough"),onClick:()=>{t("strikethrough",!1,null),a()},children:i.jsx(n.FontAwesomeIcon,{icon:o.faStrikethrough,className:"rich-text-tools-button-icon"})})},Zt=({modifyText:t,setTextContent:a})=>{const{selectionRange:l}=e.useContext(O),{getSelectionNode:r}=Wt(),{t:s}=Ft(),c=e.useMemo(()=>l?r(l.commonAncestorContainer,"ol"):null,[l,r]);return i.jsx("button",{className:Mt("rich-text-tools-button ",c&&"rich-text-tools-button-active"),title:s("tooltip_ordered_list"),onClick:()=>{t("insertOrderedList",!1,null),a()},children:i.jsx(n.FontAwesomeIcon,{icon:o.faListOl,className:"rich-text-tools-button-icon"})})},Qt=({modifyText:t,setTextContent:a})=>{const{selectionRange:l}=e.useContext(O),{getSelectionNode:r}=Wt(),{t:s}=Ft(),c=e.useMemo(()=>l?r(l.commonAncestorContainer,"ul"):null,[l,r]);return i.jsx("button",{className:Mt("rich-text-tools-button ",c&&"rich-text-tools-button-active"),title:s("tooltip_unordered_list"),onClick:()=>{t("insertUnorderedList",!1,null),a()},children:i.jsx(n.FontAwesomeIcon,{icon:o.faListUl,className:"rich-text-tools-button-icon"})})},Xt=({modifyText:a,setTextContent:l})=>{const{selectionRange:r}=e.useContext(O),{t:s}=Ft(),{getSelectionNode:c}=Wt(),[d,p]=e.useState(!1),[u,m]=e.useState({value:"",range:null}),g=e.useMemo(()=>r?c(r.commonAncestorContainer,"a"):null,[r,c]),y=()=>{p(!1),m({value:"",range:null})};return i.jsxs(i.Fragment,{children:[i.jsx("button",{className:Mt("rich-text-tools-button ",g&&"rich-text-tools-button-active"),title:s("tooltip_link"),onClick:()=>{let e=window.getSelection().getRangeAt(0);const t=e.commonAncestorContainer.parentNode,n="A"===t.nodeName,o={...u,range:e};n&&(o.rangeIsLink=!0,o.value=t.href.replace("https://","")),m(o),p(!0),l()},children:i.jsx(n.FontAwesomeIcon,{icon:o.faLink,className:"rich-text-tools-button-icon"})}),i.jsx("button",{className:Mt("rich-text-tools-button"),title:s("tooltip_remove_link"),onClick:()=>{a("unlink",!1,null),l()},children:i.jsx(n.FontAwesomeIcon,{icon:o.faUnlink,className:"rich-text-tools-button-icon"})}),i.jsx(t.Modal,{title:s("add_link_modal_title"),open:d,zIndex:1100,onOk:()=>{const{range:e,value:t,rangeIsLink:n}=u;if(n)e.commonAncestorContainer.parentNode.href=t;else{let n=document.createElement("a");n.target="_blank",n.href=t,e.surroundContents(n)}l(),y()},onCancel:y,okText:s("confirm"),cancelText:s("cancel"),wrapClassName:"ee-modal-dark",children:i.jsx(t.Input,{addonBefore:"https://",value:u.value.replace("https://",""),onChange:e=>m({...u,value:"https://"+e.target.value})})})]})},en=({id:l,textBlock:r,styles:s})=>{const{blockMap:c,rootOrder:d,templateData:p}=e.useContext(O),{t:u}=Ft(),m=e.useRef(null),[g,y]=e.useState(!1),[h,b]=e.useState(!1),f=e.useMemo(()=>{const e=k(c,d,l),t=e?.[0]??null;return{containerBlock:t?.containerBlock??null,containerType:t?.containerType??"none",cellIndex:t?.cellIndex??0,lineage:e}},[c,d,l]),_=e.useMemo(()=>{const e=f?.cellIndex??0,t=f?.containerBlock;return{columnIndex:e,columnProduct:t?.columnProducts?.[e]??null}},[f]),x=e.useMemo(()=>(f?.lineage??[]).slice(1).filter(e=>e?.containerType&&"none"!==e.containerType).map(e=>{const t=e.cellIndex??0;return{containerType:e.containerType,context:{columnIndex:t,columnProduct:e.containerBlock?.columnProducts?.[t]??null}}}),[f?.lineage]),v=e.useMemo(()=>Ke(0,f?.containerType??"none",p,_,x),[f?.containerType,p,_,x]),C=e.useMemo(()=>Vt(f?.containerBlock,c),[f?.containerBlock,c]),w=e.useMemo(()=>v.filter(e=>"image"!==e.type&&!C.has(e.variableKey??e.key)),[v,C]);e.useEffect(()=>{if(m.current){var e=m.current.parentNode?.getBoundingClientRect();const t=document.querySelector("#preview").getBoundingClientRect();e.top-190<0?(m.current.style.bottom="auto",m.current.style.top="110%"):(m.current.style.bottom="110%",m.current.style.top="auto"),e.left+375>t.left+t.width?(m.current.style.left="auto",m.current.style.right="0"):(m.current.style.left="0",m.current.style.right="auto")}},[]);const S=(e,t,n)=>{document.execCommand(e,t,n)},j=()=>{r?.current&&r.current.dispatchEvent(new Event("input",{bubbles:!0}))};return i.jsx("div",{className:"rich-text",ref:m,onClick:e=>{e.preventDefault(),e.stopPropagation()},children:i.jsx(a.motion.div,{className:"rich-text-tools",initial:{scale:0,x:0},animate:{scale:1,x:0},style:{width:g?"auto":"375px"},children:i.jsxs("div",{className:"rich-text-tools-body items-center",children:[!g&&i.jsxs(i.Fragment,{children:[i.jsx(qt,{modifyText:S,setTextContent:j}),i.jsx(Jt,{modifyText:S,setTextContent:j}),i.jsx(Gt,{modifyText:S,setTextContent:j}),i.jsx(Yt,{modifyText:S,setTextContent:j}),i.jsx(Zt,{modifyText:S,setTextContent:j}),i.jsx(Qt,{modifyText:S,setTextContent:j}),i.jsx(Xt,{modifyText:S,setTextContent:j}),i.jsx(t.Popover,{zIndex:1070,trigger:"click",open:h,onOpenChange:b,overlayClassName:"ee-rich-text-variables-popover",getPopupContainer:()=>document.querySelector("#preview")||document.body,content:i.jsxs("div",{className:"ee-rich-text-variables-menu",children:[i.jsx("div",{className:"ee-rich-text-variables-header",children:u("variables")}),w.map(e=>i.jsx("div",{className:"ee-rich-text-variables-item",onMouseDown:t=>{t.preventDefault(),(e=>{if(!r?.current||!e)return;const t=window.getSelection();let n=null;if(t?.rangeCount){const e=t.getRangeAt(0);r.current.contains(e.commonAncestorContainer)&&(n=e)}n||(n=document.createRange(),n.selectNodeContents(r.current),n.collapse(!1)),n.deleteContents();const o=document.createTextNode(e);n.insertNode(o),n.setStartAfter(o),n.collapse(!0),t&&(t.removeAllRanges(),t.addRange(n)),j(),b(!1)})(e.value)},children:e.labelKey?u(e.labelKey):e.label||e.value},`variables-${e.value}`))]}),children:i.jsx("button",{className:"rich-text-tools-button",title:u("insert_merge_field"),onMouseDown:e=>e.preventDefault(),children:i.jsx("span",{className:"rich-text-tools-button-icon",style:{color:"#fff",fontFamily:"monospace",fontWeight:700,fontSize:13,lineHeight:1},children:"{}"})})})]}),i.jsx("button",{className:"rich-text-tools-button",onClick:()=>y(!g),children:i.jsx(n.FontAwesomeIcon,{icon:g?o.faExpandAlt:o.faCompressAlt,className:"rich-text-tools-button-icon"})})]})})})},tn=({id:t,blockItem:n,displayContent:o})=>{const{currentItem:a,previewMode:l,blockMap:r,rootOrder:s,setBlocks:c,setCurrentItem:d,isDragStart:p,templateData:u}=e.useContext(O),m=e.useRef(null),g=a&&a.id===(t??n?.id),y="desktop"===l?n.styles?.desktop??{}:{...n.styles?.desktop??{},...n.styles?.mobile??{}},h=y.linkColor||y.color,{linkColor:b,...f}=y,_={...f,direction:"ltr",unicodeBidi:"isolate",...h?{"--ee-rich-text-link-color":h}:{}},x=e.useRef(!1),v=null!=o?o:n.text||"",C=e.useMemo(()=>{const e=k(r,s,t??n?.id),o=e?.[0]??null;return{containerBlock:o?.containerBlock??null,containerType:o?.containerType??"none",cellIndex:o?.cellIndex??0,lineage:e}},[r,s,t,n?.id]),w=e.useMemo(()=>{const e=C?.cellIndex??0,t=C?.containerBlock;return{columnIndex:e,columnProduct:t?.columnProducts?.[e]??null}},[C]),S=e.useMemo(()=>(C?.lineage??[]).slice(1).filter(e=>e?.containerType&&"none"!==e.containerType).map(e=>{const t=e.cellIndex??0;return{containerType:e.containerType,context:{columnIndex:t,columnProduct:e.containerBlock?.columnProducts?.[t]??null}}}),[C?.lineage]),j=e.useMemo(()=>Ke(0,C?.containerType??"none",u,w,S).map(e=>{return t=e.value,n=e.pasteValue,{token:t,pasteValue:String(n||"")};var t,n}).filter(e=>e.token&&e.pasteValue&&""!==e.pasteValue.trim()&&!e.pasteValue.includes("{{")&&e.pasteValue!==e.token).sort((e,t)=>t.pasteValue.length-e.pasteValue.length),[u,w,C?.containerType,S]);e.useEffect(()=>{if(g&&m.current){const e=I(v);if(x.current){const t=m.current.innerHTML||"";e!==I(t)&&(m.current.innerHTML=e)}else m.current.innerHTML=e,m.current.focus();x.current=!0}else x.current=!1},[g,t,v]);const I=e=>"string"!=typeof e?e:e.replace(/\u202E/g,"").replace(/\u202D/g,"").replace(/\u202A/g,"").replace(/\u202B/g,"").replace(/\u202C/g,"").replace(/\sdir\s*=\s*["']rtl["']/gi,' dir="ltr"').replace(/\sstyle\s*=\s*["']([^"']*)["']/gi,(e,t)=>{const n=t.replace(/\s*direction\s*:\s*rtl\s*;?/gi,"").trim();return n?` style="${n}"`:""}),N=I(v),T=t??n?.id;return i.jsxs("div",{className:"relative",dir:"ltr",style:{direction:"ltr",unicodeBidi:"isolate"},children:[g&&n&&!p&&i.jsx(en,{textBlock:m,id:T,styles:_}),i.jsx("div",{className:Mt(g&&"text-block","text-content_editable"),onClick:e=>{e.preventDefault(),e.stopPropagation()},onInput:e=>{const i=t??n?.id,l=e.target.innerHTML,p=I(l),u=null!=o?I(o):null,m=null!=u&&p===u,g=r[i]||{};let y=m?n.text:p;"text"===(g.key??n?.key)&&(y=(e=>{if(!e||!j.length||"undefined"==typeof document)return e;const t=document.createElement("div");t.innerHTML=e;const n=document.createTreeWalker(t,NodeFilter.SHOW_TEXT);let o=n.nextNode();for(;o;){let e=o.nodeValue||"";j.forEach(({token:t,pasteValue:n})=>{n&&e.includes(n)&&(e=e.split(n).join(t))}),o.nodeValue=e,o=n.nextNode()}return t.innerHTML})(y));const h={...g,text:y,selectedVariableKey:m?g.selectedVariableKey:void 0},b={...r,[i]:h};c(b,s),d({...a,data:h})},style:_,dir:"ltr",contentEditable:g,suppressContentEditableWarning:!0,ref:m,dangerouslySetInnerHTML:g?void 0:{__html:N}})]})},nn=t=>{const{id:n,blockItem:o}=t,{currentItem:a,previewMode:l,templateData:r,blockMap:s,rootOrder:c}=e.useContext(O),d="desktop"===l?o.styles?.desktop??{}:{...o.styles?.desktop??{},...o.styles?.mobile??{}},p=a&&a.id===n,u=e.useMemo(()=>_(s,c,n),[s,c,n]),m=e.useMemo(()=>Re(o.text,r,u),[o.text,r,u]),g=p?o.text||"":m,y=d.linkColor||d.color,h=e.useMemo(()=>{return t=y,(e=g)&&t?String(e).replace(/<a\b([^>]*)>/gi,(e,n)=>{const o=n.match(/\sstyle\s*=\s*"([^"]*)"/i);if(o){const e=(o[1]||"").replace(/\s*color\s*:[^;]+;?/gi,"").replace(/^\s*;|;\s*$/g,"").trim(),a=`${e?`${e}; `:""}color: ${t};`;return`<a${n.replace(o[0],` style="${a}"`)}>`}return`<a${n} style="color: ${t};">`}):e;var e,t},[g,y]),b=u?.containerBlock,f="footer"===b?.containerType,k=(m||"").replace(/<[^>]+>/g,"").replace(/\s+/g," ").trim();if(f&&(""===k||"{{Address}}"===k||"{{Tagline}}"===k))return null;const x=o.type&&/^h[1-4]$/.test(o.type)?o.type:"div";return p?i.jsx(tn,{...t,blockItem:o}):e.createElement(x,{style:{...d,direction:"ltr",unicodeBidi:"isolate"},dir:"ltr",dangerouslySetInnerHTML:{__html:h}})},on=e=>e?.brandContext?.brand_color??"#111111",an=t=>{const{blockItem:n,id:o}=t,{currentItem:a,previewMode:l,templateData:r,blockMap:s,rootOrder:c}=e.useContext(O),d=e.useMemo(()=>_(s,c,o),[o,s,c]),p=e.useMemo(()=>{const e=n.text??"",t=e.match(/\{\{(\w+)\}\}/),o=n.labelVariable?n.labelVariable.replace(/^\{\{|\}\}$/g,"").trim():t?t[1]:void 0;if(!r||!o)return e;const a=Me(r,o,d);return null==a||String(a).startsWith("{{")?e:String(a)},[n.text,n.labelVariable,r,d]),u=a&&a.id===o,m="desktop"===l?n.styles?.desktop??{}:{...n.styles?.desktop??{},...n.styles?.mobile??{}},g={...m,backgroundColor:m.backgroundColor??on(r)},y="desktop"===l?n.contentStyles?.desktop:{...n.contentStyles?.desktop,...n.contentStyles?.mobile},h=e.useMemo(()=>i.jsx(tn,{...t,blockItem:n,displayContent:p}),[n,p]);return i.jsx("div",{style:{...y},children:u?h:i.jsx("div",{style:{...g,textAlign:"center"},dangerouslySetInnerHTML:{__html:p}})})},ln=({blockItem:t})=>{const{previewMode:n}=e.useContext(O),o="desktop"===n?t.styles?.desktop??{}:{...t.styles?.desktop??{},...t.styles?.mobile??{}},a="desktop"===n?t.contentStyles?.desktop:{...t.contentStyles?.desktop,...t.contentStyles?.mobile};return i.jsx("div",{className:"relative",children:i.jsx("div",{style:{...a},children:i.jsx("div",{style:{...o}})})})},rn=({blockItem:t})=>{const{previewMode:n}=e.useContext(O),o="desktop"===n?t.styles?.desktop??{}:{...t.styles?.desktop??{},...t.styles?.mobile??{}},a="desktop"===n?t.contentStyles?.desktop:{...t.contentStyles?.desktop,...t.contentStyles?.mobile};return i.jsx("div",{className:"relative",style:{...a},children:i.jsx("div",{style:{width:"100%",height:"number"==typeof o.height?`${o.height}px`:o.height||"16px",display:o.display||"block"}})})},sn=({blockItem:t})=>{const{previewMode:n}=e.useContext(O),{list:o=[],separator:a=" | "}=t,l=o,r="desktop"===n?t.styles?.desktop??{}:{...t.styles?.desktop??{},...t.styles?.mobile??{}},s="desktop"===n?t.contentStyles?.desktop:{...t.contentStyles?.desktop,...t.contentStyles?.mobile},c={fontSize:null!=r.fontSize?`${r.fontSize}px`:"14px",fontFamily:r.fontFamily||"sans-serif",color:r.linkColor||r.color||"#2faade",fontWeight:r.fontWeight||"normal",letterSpacing:null!=r.letterSpacing?`${r.letterSpacing}px`:"0px",textDecoration:"none",paddingLeft:null!=r.paddingLeft?`${r.paddingLeft}px`:"8px",paddingRight:null!=r.paddingRight?`${r.paddingRight}px`:"8px",paddingTop:null!=r.paddingTop?`${r.paddingTop}px`:"4px",paddingBottom:null!=r.paddingBottom?`${r.paddingBottom}px`:"4px"},d={fontSize:null!=r.fontSize?`${r.fontSize}px`:"14px",color:r.color||"#333",paddingLeft:4,paddingRight:4};return i.jsx("div",{className:"relative",children:i.jsx("div",{style:{...s,display:"flex",flexWrap:"wrap",alignItems:"center",justifyContent:s.textAlign||"center"},children:l.map((e,t)=>i.jsxs("span",{style:{display:"inline-flex",alignItems:"center"},children:[t>0&&i.jsx("span",{style:d,children:a}),i.jsx("a",{href:e.url?e.url.startsWith("http")?e.url:`https://${e.url}`:"#",target:"_blank"===e.target?"_blank":"_self",rel:"_blank"===e.target?"noopener noreferrer":void 0,style:c,children:e.label||"Link"})]},t))})})},cn=({blockItem:t,id:a})=>{const{src:l,alt:r,linkURL:s}=t,{previewMode:c,templateData:d,blockMap:p,rootOrder:u}=e.useContext(O),m="desktop"===c?t.styles?.desktop??{}:{...t.styles?.desktop??{},...t.styles?.mobile??{}},g="desktop"===c?t.contentStyles?.desktop:{...t.contentStyles?.desktop,...t.contentStyles?.mobile},y=e.useMemo(()=>{const e="string"==typeof l&&/^\{\{\w+\}\}$/.test(l.trim())?l.trim():"";if(l&&!e)return l;if(!d||!e)return l||"";const t=_(p,u,a),n=e.replace(/^\{\{|\}\}$/g,"").trim(),o=Me(d,n,t);return o&&!o.startsWith("{{")?o:l||""},[l,d,p,u,a]),h="string"==typeof l&&/^\{\{\w+\}\}$/.test(l.trim())?l.trim():"",b=!y||y.startsWith("{{"),f=r||"Image",k=m.width,x=k&&"auto"!==k,v="string"==typeof s?s.trim():"",C=""===v?"":v.startsWith("http")?v:`https://${v.replace(/^\/+/,"")}`,w=()=>y&&!b?x?i.jsx("div",{style:{width:k,display:"inline-block"},children:i.jsx("img",{src:y,style:{...m,width:"100%",maxWidth:"100%"},alt:f,className:"inline-block"})}):i.jsx("img",{src:y,style:m,alt:f,className:"inline-block"}):i.jsx("div",{className:"empty-image",style:{...m,width:"auto"===m.width?"100%":m.width},title:b&&h?h:void 0,children:b&&h?i.jsx("span",{className:"empty-image-variable-label",children:h}):i.jsx(n.FontAwesomeIcon,{icon:o.faImage,className:"empty-image-icon"})}),S=qe(t)&&C&&y&&!b?i.jsx("a",{href:C,target:"_blank",rel:"noopener noreferrer",style:{textDecoration:"none",display:"inline-block"},onClick:e=>e.stopPropagation(),children:w()}):w();return i.jsx("div",{className:"relative",children:i.jsx("div",{style:{...g},children:S})})},dn=({blockItem:t})=>{const{src:a,alt:l,linkURL:r}=t,{previewMode:s}=e.useContext(O),c="desktop"===s?t.styles?.desktop??{}:{...t.styles?.desktop??{},...t.styles?.mobile??{}},d="desktop"===s?t.contentStyles?.desktop:{...t.contentStyles?.desktop,...t.contentStyles?.mobile},p=a?i.jsx("img",{src:a,style:{...c,width:c.width??64,height:c.width??64,objectFit:"cover",borderRadius:c.borderRadius??"50%"},alt:l||"Avatar",className:"inline-block"}):i.jsx("div",{className:"empty-avatar",style:{width:c.width??64,height:c.width??64,borderRadius:c.borderRadius??"50%",display:"flex",alignItems:"center",justifyContent:"center",backgroundColor:"var(--ee-border, #eee)"},children:i.jsx(n.FontAwesomeIcon,{icon:o.faUser,style:{fontSize:"24px",color:"#999"}})}),u={...d,width:"100%"};return i.jsx("div",{className:"relative",children:i.jsx("div",{style:u,children:r?i.jsx("a",{href:r.startsWith("http")?r:`https://${r}`,target:"_blank",rel:"noopener noreferrer",style:{display:"inline-block"},children:p}):p})})},pn=({blockItem:t})=>{const{previewMode:n}=e.useContext(O),{list:o=[],imageWidth:a}=t,l="desktop"===n?t.styles?.desktop??{}:{...t.styles?.desktop??{},...t.styles?.mobile??{}},r="desktop"===n?t.contentStyles?.desktop:{...t.contentStyles?.desktop,...t.contentStyles?.mobile},s=o;return i.jsx("div",{className:"relative",children:i.jsx("div",{style:r,children:s.map((e,t)=>{const{image:n,title:o,linkURL:r}=e,s=i.jsx("img",{src:n,alt:o,style:{width:a}});return i.jsx("div",{style:{...l,display:"inline-block"},children:r?i.jsx("a",{href:r.startsWith("http")?r:`https://${r}`,target:"_blank",rel:"noopener noreferrer",style:{display:"inline-block"},children:s}):s},t)})})})},un=({blockItem:e,id:t})=>{if(!e)return null;const n={blockItem:e,id:t};switch(e.key){case"text":return i.jsx(nn,{...n});case"button":return i.jsx(an,{...n});case"divider":return i.jsx(ln,{...n});case"spacer":return i.jsx(rn,{...n});case"menu":return i.jsx(sn,{...n});case"image":return i.jsx(cn,{...n});case"avatar":return i.jsx(dn,{...n});case"social_link":return i.jsx(pn,{...n});default:return null}},mn=a=>{const{block:l,blockIndex:r,clearStyles:s}=a,{t:c}=Ft(),{previewMode:d,blockMap:p,rootOrder:u,validationMarkers:m,ignoreValidationIssue:y,setBlocks:h,currentItem:b,setCurrentItem:k,setIsDragStart:_,isDragStart:x,bodySettings:C,setActionType:S}=e.useContext(O),j="desktop"===d?l.styles?.desktop??{}:{...l.styles?.desktop??{},...l.styles?.mobile??{}},{contentBackground:I,...N}=j,T="undefined"!=typeof window?window.__eeDragItemData:null,A=T?.key??(b?.id?p[b.id]?.key:null)??b?.data?.key,L=b?.id?f(p,u,b.id):null,P=x&&("column"!==A||"add"===b?.type||Boolean(L)),R=e=>t=>{t.preventDefault(),t.stopPropagation(),k({id:e.id,data:e,type:"edit"}),S("edit")},$=e=>t=>{t.preventDefault(),t.stopPropagation();const n=p[e];n&&(k({id:n.id,data:n,type:"edit"}),S("edit"))},B=(e,t,n)=>o=>{o.preventDefault(),o.stopPropagation();const{blockMap:a,removedId:i}=v(p,e,t,n);let l=a;const r=a[e];if(r&&0===r.cells[t].childrenIds.length){const n=g(c("drag_block_here"));l={...a,[n.id]:n,[e]:{...r,cells:r.cells.map((e,o)=>o===t?{...e,childrenIds:[n.id]}:e)}}}i&&(l=w(l,i)),h(l,u,"delete"),k(null)},D=e=>()=>{_(!0),k({id:e.id,data:e,type:"move"}),S("move")},M=e=>{e.preventDefault(),e.stopPropagation(),setTimeout(()=>{e.target.style.border="",e.target.children[0]&&e.target.children[0].classList.remove("sidebar-block-move"),_(!1),s&&s()},50)},E=e=>e.preventDefault(),U=e=>"desktop"===d?e.styles?.desktop||{}:{...e.styles?.desktop||{},...e.styles?.mobile||{}},F=e=>{const n=m?.[e];if(!n)return null;const o="error"===n.severity?`${n.errorCount} error${1===n.errorCount?"":"s"}`:`${n.warningCount} warning${1===n.warningCount?"":"s"}`,a=i.jsx("div",{className:"block-validation-popover",children:n.issues.map((e,n)=>i.jsxs("div",{className:"block-validation-popover-item",children:[i.jsx("div",{className:"block-validation-popover-message",children:e.message}),i.jsx(t.Button,{size:"small",type:"text",className:"block-validation-popover-ignore",onClick:t=>{t.preventDefault(),t.stopPropagation(),y(e)},children:c("ignore")})]},`${e.code}-${n}`))});return i.jsx(t.Popover,{trigger:["hover","click"],placement:"topRight",overlayClassName:"block-validation-popover-overlay",content:a,getPopupContainer:()=>document.querySelector("#preview")||document.body,children:i.jsxs("button",{type:"button",className:Mt("block-validation-indicator","error"===n.severity?"block-validation-indicator-error":"block-validation-indicator-warning"),"aria-label":o,onClick:e=>{e.preventDefault(),e.stopPropagation()},onMouseDown:e=>{e.preventDefault(),e.stopPropagation()},children:[i.jsx("span",{className:"block-validation-indicator-dot"}),i.jsx("span",{className:"block-validation-indicator-count",children:n.totalCount})]})})},H=(t,a,l,r,s,p,u=1)=>{const m=U({styles:t.styles}),{contentBackground:g,...y}=m,h=b?.id===t.id,f=((e=1)=>({"--nested-level":Math.max(1,e),"--nested-width":"100%"}))(u);return i.jsxs(i.Fragment,{children:[i.jsxs("div",{className:"relative block-content-drag-label-content","data-drop-key":s,children:[i.jsx("div",{className:"absolute block-move-top",children:i.jsx("span",{className:"block-tools-drag_here",children:c("drag_block_here")})}),P&&i.jsx("div",{className:"block-move-content-top","data-name":"dragTools","data-position":"top","data-container-id":a,"data-cell-index":l,"data-item-index":r,"data-drop-key":s,"data-type":"block-item-move"})]}),i.jsx("div",{className:Mt("block-item block-item-container",h&&"block-item-focus"),style:f,"data-block-id":t.id,onMouseEnter:e=>{e.currentTarget.dataset.hovered="true"},onMouseLeave:e=>{delete e.currentTarget.dataset.hovered},children:i.jsxs("div",{className:"relative",children:[F(t.id),i.jsxs("div",{className:"block-item-tools",onDragOver:E,onClick:R(t),children:[P&&i.jsxs(i.Fragment,{children:[i.jsx("div",{className:"block-move-content-top","data-name":"dragTools","data-position":"top","data-container-id":a,"data-cell-index":l,"data-item-index":r,"data-drop-key":s,"data-type":"block-item-move"}),i.jsx("div",{className:"block-move-content-bottom","data-name":"dragTools","data-position":"bottom","data-container-id":a,"data-cell-index":l,"data-item-index":r+1,"data-drop-key":p,"data-type":"block-item-move"})]}),i.jsx("span",{className:"absolute block-item-parent",onClick:$(a),title:"Select Parent",children:i.jsx(n.FontAwesomeIcon,{icon:o.faLevelUpAlt})}),i.jsx("span",{className:"absolute block-item-delete",onClick:B(a,l,r),children:i.jsx(n.FontAwesomeIcon,{icon:o.faTrash})}),i.jsx("span",{className:"absolute block-item-move current-move-block-arrows",draggable:"true",onDragEnd:M,onDragStart:D(t),children:i.jsx(n.FontAwesomeIcon,{icon:o.faArrowsAlt})})]}),i.jsx("div",{style:{...y,overflow:y.borderRadius?"hidden":void 0},children:i.jsx("div",{className:"block-content block-item-container-body",style:{background:g,borderRadius:y.borderRadius},children:(t.children||[]).map((n,o)=>{const a=U(n);return i.jsx("div",{style:{...a,width:"mobile"===d?"100%":n.width},children:(n.children||[]).map((a,l)=>{const r=`${t.id}:${o}:${l}`,s=`${t.id}:${o}:${l+1}`,d=l===n.children.length-1&&"empty"!==a.key&&"column"!==a.key;return i.jsxs(e.Fragment,{children:[K(a,t.id,o,l,r,s,u),d&&i.jsx("div",{className:"relative block-content-drag-label-content","data-drop-key":s,children:i.jsx("div",{className:"absolute block-move-bottom",children:i.jsx("span",{className:"block-tools-drag_here",children:c("drag_block_here")})})})]},`${t.id}:${o}:${a.id||l}`)})},`${t.id}:${n.id||"cell"}:${o}`)})})})]})}),i.jsxs("div",{className:"relative block-content-drag-label-content","data-drop-key":p,children:[i.jsx("div",{className:"absolute block-move-bottom",children:i.jsx("span",{className:"block-tools-drag_here",children:c("drag_block_here")})}),P&&i.jsx("div",{className:"block-move-content-bottom","data-name":"dragTools","data-position":"bottom","data-container-id":a,"data-cell-index":l,"data-item-index":r+1,"data-drop-key":p,"data-type":"block-item-move"})]})]})},K=(t,a,l,r,s,d,p=0)=>"empty"===t.key?i.jsxs("div",{className:"block-empty-content p-4 h-32 relative width-full",children:[P&&i.jsx("div",{className:"block-empty-content-tools",onDragOver:E,"data-container-id":a,"data-cell-index":l,"data-item-index":r,"data-type":"empty-block-item",children:c("drag_block_here")}),t.name]},t.id||r):"column"===t.key?i.jsx(e.Fragment,{children:H(t,a,l,r,s,d,p+1)},`${a}:${l}:${t.id||r}`):i.jsxs(e.Fragment,{children:[i.jsx("div",{className:"relative block-content-drag-label-content","data-drop-key":s,children:i.jsx("div",{className:"absolute block-move-top",children:i.jsx("span",{className:"block-tools-drag_here",children:c("drag_block_here")})})}),i.jsx("div",{className:Mt("block-item",b?.id===t.id&&"block-item-focus"),"data-block-id":t.id,children:i.jsxs("div",{className:"relative",children:[F(t.id),i.jsxs("div",{className:"block-item-tools",onDragOver:E,onClick:e=>{e.preventDefault(),e.stopPropagation(),k({id:t.id,data:t,type:"edit"}),S("edit")},children:[P&&i.jsxs(i.Fragment,{children:[i.jsx("div",{className:"block-move-content-top","data-name":"dragTools","data-position":"top","data-container-id":a,"data-cell-index":l,"data-item-index":r,"data-drop-key":s,"data-type":"block-item-move"}),i.jsx("div",{className:"block-move-content-bottom","data-name":"dragTools","data-position":"bottom","data-container-id":a,"data-cell-index":l,"data-item-index":r+1,"data-drop-key":d,"data-type":"block-item-move"})]}),i.jsx("span",{className:"absolute block-item-parent",onClick:$(a),title:"Select Parent",children:i.jsx(n.FontAwesomeIcon,{icon:o.faLevelUpAlt})}),i.jsx("span",{className:"absolute block-item-delete",onClick:B(a,l,r),children:i.jsx(n.FontAwesomeIcon,{icon:o.faTrash})}),i.jsx("span",{className:"absolute block-item-move current-move-block-arrows",draggable:"true",onDragEnd:M,onDragStart:D(t),children:i.jsx(n.FontAwesomeIcon,{icon:o.faArrowsAlt})})]}),i.jsx(un,{blockItem:t,id:t.id})]})})]},`${a}:${l}:${t.id||r}`);return i.jsx(i.Fragment,{children:i.jsxs("div",{className:"relative block-drag-label-content","data-index":r,"data-position":"top",children:[i.jsx("div",{className:"absolute block-move-top",children:i.jsx("span",{className:"block-tools-drag_here",children:c("drag_block_here")})}),i.jsxs("div",{className:Mt("relative block",b?.id===l.id&&"block-focus","mobile"===d&&"mobile-block-focus"),"data-block-id":l.id,onClick:R(l),children:[i.jsxs("div",{className:"hover-visible",children:[F(l.id),i.jsx("span",{className:"absolute block-delete",onClick:e=>{e.preventDefault(),e.stopPropagation();const t=w(p,l.id),n=u.filter(e=>e!==l.id);h(t,n,"delete"),k(null)},children:i.jsx(n.FontAwesomeIcon,{icon:o.faTrash})}),i.jsx("span",{className:"absolute block-move current-move-block-arrows",draggable:"true",onDragEnd:M,onDragStart:()=>{_(!0),k({id:l.id,data:l,type:"move"}),S("move")},children:i.jsx(n.FontAwesomeIcon,{icon:o.faArrowsAlt})})]}),i.jsx("div",{className:"width-full height-full absolute",onDragOver:E,style:{pointerEvents:x&&"column"===A?"auto":"none"},children:x&&"column"===A&&i.jsxs(i.Fragment,{children:[i.jsx("div",{className:"block-move-content-top","data-name":"dragTools","data-type":"drag-over-column","data-position":"top","data-index":r}),i.jsx("div",{className:"block-move-content-bottom","data-name":"dragTools","data-type":"drag-over-column","data-position":"bottom","data-index":r+1})]})}),i.jsx("div",{className:"column margin-auto",style:{...N,maxWidth:"100%",overflow:N.borderRadius?"hidden":void 0},children:i.jsx("div",{className:"block-content",style:{background:I,borderRadius:N.borderRadius,width:C.contentWidth},"data-index":r,children:l.children.map((t,n)=>{const o="desktop"===d?t.styles?.desktop??{}:{...t.styles?.desktop??{},...t.styles?.mobile??{}};return i.jsx(e.Fragment,{children:i.jsx("div",{id:`block-content-${r}-${n}`,style:{...o,width:"mobile"===d?"100%":t.width},children:t.children.map((o,a)=>{const r=`${l.id}:${n}:${a}`,s=`${l.id}:${n}:${a+1}`,d=a===t.children.length-1&&"empty"!==o.key&&"column"!==o.key;return i.jsxs(e.Fragment,{children:[K(o,l.id,n,a,r,s,0),d&&i.jsx("div",{className:"relative block-content-drag-label-content","data-drop-key":s,children:i.jsx("div",{className:"absolute block-move-bottom",children:i.jsx("span",{className:"block-tools-drag_here",children:c("drag_block_here")})})})]},`${l.id}:${n}:${o.id||a}`)})})},`${l.id}:${t.id||"content"}:${n}`)})})})]})]})})},gn=()=>{const{previewMode:t,setPreviewMode:a,bodySettings:l,blockList:r,actionType:c,setBlockList:d,setBodySettings:p}=e.useContext(O),[u,m]=e.useState({histories:[],index:0}),{histories:g,index:y}=u,h=e.useRef(null);e.useEffect(()=>{const e=s(r),t=s(l),n=JSON.stringify({blockList:e,bodySettings:t});if(h.current!==n)return"firstRender"===c?(h.current=n,void m({histories:[{blockList:e,bodySettings:t}],index:0})):void(c.includes("set_history")?h.current=n:m(o=>{const a=o.histories.slice(0,o.index+1);return a.push({blockList:e,bodySettings:t}),h.current=n,{histories:a,index:o.index+1}}))},[r,l,c]);return i.jsxs("div",{className:"header",children:[i.jsxs("div",{className:"header-box",children:[i.jsx(n.FontAwesomeIcon,{onClick:()=>a("desktop"),icon:o.faDesktop,className:Mt("header-icon-small","desktop"===t&&"header-icon_active","desktop"!==t&&"header-icon_disabled")}),i.jsx(n.FontAwesomeIcon,{icon:o.faMobileAlt,onClick:()=>a("mobile"),className:Mt("header-icon-small","mobile"===t&&"header-icon_active","mobile"!==t&&"header-icon_disabled")})]}),i.jsx("div",{className:"header-box text-center"}),i.jsxs("div",{className:"header-box text-right",children:[i.jsx(n.FontAwesomeIcon,{onClick:()=>{if(g[y-1]){const e=s(g[y-1]);m({...u,index:y-1}),d(e.blockList,"set_history_"+(y-1)),p(e.bodySettings)}},icon:o.faUndo,className:Mt("header-icon-history",g[y-1]&&"header-icon-history_active",!g[y-1]&&"header-icon-history_disabled")}),i.jsx(n.FontAwesomeIcon,{onClick:()=>{if(g[y+1]){const e=s(g[y+1]);m({...u,index:y+1}),d(e.blockList,`set_history_${y+1}`),p(e.bodySettings)}},icon:o.faRedo,className:Mt("header-icon-history",g[y+1]&&"header-icon-history_active",!g[y+1]&&"header-icon-history_disabled")})]})]})},yn=t=>{const{clearStyles:n}=t,{t:o}=Ft(),{previewMode:a,bodySettings:l,blockList:r,setSelectionRange:s}=e.useContext(O),d=e.useRef(null);e.useEffect(()=>{const e=c(()=>{try{const n=window.getSelection();if(!n||0===n.rangeCount)return;const o=n.getRangeAt(0),a=document.getElementById("preview");if(!(!!a&&(a.contains(o.commonAncestorContainer)||a===o.commonAncestorContainer)))return;const i=(e=>e?{startContainer:e.startContainer,startOffset:e.startOffset,endContainer:e.endContainer,endOffset:e.endOffset,collapsed:e.collapsed}:null)(o);if(e=d.current,t=i,e&&t&&e.startContainer===t.startContainer&&e.startOffset===t.startOffset&&e.endContainer===t.endContainer&&e.endOffset===t.endOffset&&e.collapsed===t.collapsed)return;d.current=i,s(o.cloneRange())}catch(e){console.warn(e)}var e,t},100);return document.addEventListener("selectionchange",e),()=>{document.removeEventListener("selectionchange",e)}},[s]);return i.jsxs("div",{className:"preview-main",children:[i.jsx(gn,{}),i.jsx("div",{className:"default-scrollbar",id:"preview",children:i.jsx("div",{className:"preview-content",style:{width:"desktop"===a?"100%":364,...l.styles},children:i.jsx("div",{className:"margin-auto",style:{maxWidth:"100%",width:"100%"},children:r.length?i.jsxs(i.Fragment,{children:[r.map((t,o)=>i.jsx(e.Fragment,{children:i.jsx(mn,{block:t,blockIndex:o,clearStyles:n})},`${t?.id||"block"}-${o}`)),i.jsx("div",{className:"relative block-drag-label-content","data-index":r.length,"data-position":"bottom",children:i.jsx("div",{className:"absolute block-move-bottom",children:i.jsx("span",{className:"block-tools-drag_here",children:o("drag_block_here")})})})]}):i.jsx("div",{"data-name":"dragEmpty",className:"start-to-add",style:{width:l.contentWidth,maxWidth:"100%"},"data-type":"empty-block",onDragOver:e=>{e.preventDefault()},children:o("add_blocks")})})})})]})},hn=({color:n,setColor:o})=>{const[a,r]=e.useState(!1);return i.jsx(t.Popover,{zIndex:1070,getPopupContainer:()=>document.querySelector(".right-settings")||document.body,content:i.jsx("div",{className:"select-none ee-color-picker-popover",children:i.jsx(l.ChromePicker,{color:n,style:{boxShadow:"none"},onChange:o})}),trigger:"click",open:a,onOpenChange:r,children:i.jsx("button",{className:"color-picker-button",style:{background:n}})})},bn=({padding:e,setPadding:n})=>{const{t:o}=Ft();return i.jsx("div",{className:"padding-settings",children:[{name:o("top"),value:"paddingTop"},{name:o("right"),value:"paddingRight"},{name:o("left"),value:"paddingLeft"},{name:o("bottom"),value:"paddingBottom"}].map(({name:o,value:a})=>{const l=e[a];return i.jsxs("div",{children:[i.jsx("div",{children:o}),i.jsx(t.InputNumber,{className:"width-full",addonAfter:"px",min:0,value:l,onChange:(r=a,t=>{const o={...e,[r]:t};n(o)})})]},a);var r})})},fn=e=>{if(!e||"string"!=typeof e)return!1;try{const t=new URL(e);return/\/knowledge-base\/products$/i.test(t.pathname.replace(/\/$/,""))}catch{return/knowledge-base\/products\/?$/i.test(String(e).trim().replace(/\/$/,""))}},kn=e=>{if(!e||"object"!=typeof e)return null;const t=null!=e.id?String(e.id):null!=e.resourceId?String(e.resourceId):"";if(!t)return null;const n=e.price,o="number"==typeof n?n:parseFloat(String(n??"").replace(/,/g,""));return{id:t,name:e.name??"",description:e.description??"",image:e.image_url??e.image??"",link:e.url??"",price:Number.isFinite(o)?o:0,currency:e.currency??"USD",old_price:null!=e.old_price?e.old_price:null,new_price:null!=e.new_price?e.new_price:null,resourceId:e.resourceId,source:e.source}},_n=async(e,t,n={},{page:o=1,limit:a=20,search:i=""}={})=>{if(!e)return null;try{if(fn(e)){if(!t)return null;const l=e.replace(/\/$/,""),r=new URL(`${l}/${encodeURIComponent(t)}`);r.searchParams.set("page",String(o)),r.searchParams.set("limit",String(a)),r.searchParams.set("search",i??"");const s=await fetch(r.toString(),{method:"GET",headers:{"Content-Type":"application/json",...n}});if(!s.ok)return console.error("[API Service] KB products fetch failed:",s.status,s.statusText),null;const c=await s.json(),d=Array.isArray(c.data)?c.data:[];return{products:d.map(kn).filter(Boolean),meta:c.meta&&"object"==typeof c.meta?c.meta:{}}}const l=new URL(e);t&&l.searchParams.append("companyId",t);const r=await fetch(l.toString(),{method:"GET",headers:{"Content-Type":"application/json",...n}});if(!r.ok)return console.error("[API Service] Products fetch failed:",r.status,r.statusText),null;const s=await r.json();if(!1===s.success)return console.error("[API Service] Products API returned error:",s.error),null;const c=s.data?.products??[];return Array.isArray(c)&&0!==c.length?{products:c,meta:{hasMore:!1,hasProducts:!0}}:{products:[],meta:{hasMore:!1,hasProducts:!1}}}catch(e){return console.error("[API Service] Error fetching products:",e),null}},xn={};function vn(){return"undefined"!=typeof document?document.body:null}function Cn(e){if(!e)return"";const t=e.currency??"",n=e.price?.amount??e.price??"";return`${e.name} — ${t} ${n}`.trim()}function wn(e,t){const n=new Map;return[...e,...t].forEach(e=>{e&&e.id&&n.set(e.id,e)}),Array.from(n.values())}function Sn({apiConfig:n,templateData:o,value:a,selectedProduct:l,onChange:r,placeholder:s,staticProductList:c=[],getPopupContainer:d}){const{t:p}=Ft(),u=n?.productsEndpoint,m=n?.companyId??o?.companyId,g=e.useMemo(()=>{const e=n?.headers;return e&&"object"==typeof e?e:xn},[n?.headers]),y=Boolean(u&&m)&&fn(u),[h,b]=e.useState([]),[f,k]=e.useState({}),[_,x]=e.useState(!1),[v,C]=e.useState(""),[w,S]=e.useState(""),j=e.useRef(null),I=e.useRef(0),N=e.useRef(1),T=e.useRef(""),A=e.useRef(!1),L=e.useRef(""),P=e.useCallback(async(e,t,n)=>{if(!y)return;const o=(t??"").trim();if(n){const t=`${o}::${e}`;if(A.current&&L.current===t)return;A.current=!0,L.current=t}const a=++I.current;x(!0);try{const i=await _n(u,m,g,{page:e,limit:20,search:o});if(a!==I.current)return;if(!i)return n||(b([]),S((t??"").trim())),void k({});k(i.meta||{}),b(e=>n?wn(e,i.products):i.products),N.current=e}finally{n&&(A.current=!1,L.current=""),a===I.current&&x(!1)}},[y,u,m,g]),R=e.useCallback(async e=>{if(!y)return;const t=(e??"").trim();A.current=!1,L.current="";const n=++I.current;x(!0);try{if(""!==t){const e=await _n(u,m,g,{page:1,limit:20,search:t});if(n!==I.current)return;return e?(k(e.meta||{}),b(e.products),S(t),void(N.current=1)):(b([]),k({}),S(t),void(N.current=1))}let e=1,o=[],a={};for(;o.length<10&&e<=15;){const t=await _n(u,m,g,{page:e,limit:20,search:""});if(n!==I.current)return;if(!t?.products?.length)break;if(o=wn(o,t.products),a=t.meta||{},N.current=e,!a.hasMore)break;e+=1}k(a),b(o),S("")}finally{n===I.current&&x(!1)}},[y,u,m,g]),$=e.useCallback(()=>{if(!y||_||!f?.hasMore)return;const e=N.current+1;P(e,T.current,!0)},[y,_,f?.hasMore,P]),B=d??vn,D=e.useCallback(e=>i.jsxs("div",{children:[e,_&&h.length>0&&i.jsxs("div",{className:"ee-kb-product-select-footer",children:[i.jsx(t.Spin,{size:"small"})," ",i.jsx("span",{children:p("loading")})]}),!_&&f?.hasMore&&i.jsx("div",{className:"ee-kb-product-select-footer",children:i.jsx("button",{type:"button",className:"ee-kb-product-select-load-more",onClick:$,children:p("load_more_products")})})]}),[_,h.length,f?.hasMore,$,p]),M=e.useMemo(()=>{const e=y?h:c;return wn(l?.id?[l]:[],e)},[y,h,c,l]),E=e.useMemo(()=>M.map(e=>({value:e.id,label:Cn(e)})),[M]),U=e=>{if(!e)return r(null),void(y&&(clearTimeout(j.current),C(""),T.current="",N.current=1,S(""),R("")));const t=M.find(t=>t.id===e)||c.find(t=>t.id===e);r(t||null)},F="ee-kb-product-select-dropdown";return y?i.jsx(t.Select,{className:"ee-stack-control ee-kb-product-select",value:a??void 0,placeholder:s,style:{width:"100%"},virtual:!0,dropdownMatchSelectWidth:!0,listHeight:320,listItemHeight:32,dropdownClassName:F,getPopupContainer:B,onChange:U,allowClear:!0,showSearch:!0,filterOption:!1,searchValue:v,onSearch:e=>{if(!y)return;const t=e??"";C(t);const n=t.trim();if(clearTimeout(j.current),""===n)return T.current="",N.current=1,void R("");j.current=setTimeout(()=>{T.current=n,N.current=1,R(n)},400)},onOpenChange:e=>{clearTimeout(j.current),e?(A.current=!1,L.current="",C(""),T.current="",N.current=1,R("")):(A.current=!1,L.current="",C(""),T.current="")},notFoundContent:_?i.jsxs("span",{className:"ee-kb-product-select-loading",children:[i.jsx(t.Spin,{size:"small"})," ",p("loading")]}):E.length>0?null:i.jsx("span",{className:"ee-kb-product-select-empty",children:""!==w.trim()?p("no_products_matching_search"):p("no_product_found")}),options:E,dropdownRender:D}):i.jsx(t.Select,{className:"ee-stack-control",value:a??void 0,placeholder:s,style:{width:"100%"},virtual:!0,dropdownMatchSelectWidth:!0,listHeight:320,listItemHeight:32,dropdownClassName:F,getPopupContainer:B,onChange:U,allowClear:!0,showSearch:!0,optionFilterProp:"label",options:c.map(e=>({value:e.id,label:Cn(e)}))})}const jn=()=>{const{previewMode:t,currentItem:n,blockMap:o,rootOrder:a,setBlocks:l,setCurrentItem:r}=e.useContext(O),c=e=>{let t;if("column"===e.key){const{blockMap:n}=y([e]);t={...o,...n}}else t={...o,[n.id]:e};l(t,a,`edit_${(new Date).getTime()}`),r({...n,data:e})};return{findStyleItem:(e,n)=>{let o=e[t][n];return o||(o=e.desktop[n]),o},cardItemElement:(e,t)=>i.jsxs("div",{className:"card-item",children:[i.jsx("div",{className:"card-item-title",children:e}),i.jsx("div",{children:t})]}),updateItemStyles:c,colorChange:e=>({hex:o})=>{const a=s(n.data);a.styles[t][e]=o,c(a)},paddingChange:e=>{const o=s(n.data);o.styles[t]={...o.styles[t],...e},c(o)},otherStylesChange:(e,o)=>{const a=s(n.data);a.styles||(a.styles={desktop:{},mobile:{}}),a.styles[t]||(a.styles[t]={}),a.styles[t][e]=o,"desktop"!==t&&(a.styles.desktop[e]=o),c(a)},inputChange:e=>o=>{const a=s(n.data);a.styles||(a.styles={desktop:{},mobile:{}}),a.styles[t]||(a.styles[t]={}),a.styles[t][e]=o,"desktop"!==t&&(a.styles.desktop[e]=o),c(a)}}},In=()=>{const{t:e}=Ft(),t=(e=>[{id:p(),name:e("container"),key:"column",type:"full",containerType:"none",styles:{key:"column",desktop:{backgroundColor:"transparent",paddingTop:12,paddingLeft:6,paddingRight:6,paddingBottom:12,contentBackground:"#fff"},mobile:{}},children:[{id:p(),name:e("content"),key:"content",width:"100%",styles:{key:"column",desktop:{backgroundColor:"transparent",paddingTop:12,paddingLeft:6,paddingRight:6,paddingBottom:12,contentBackground:"transparent"},mobile:{}},children:[{id:p(),name:e("drag_block_here"),key:"empty",width:"100%",styles:{desktop:{backgroundColor:"transparent",paddingTop:0,paddingLeft:0,paddingRight:0,paddingBottom:0},mobile:{}}}]}]},{id:p(),name:e("text"),key:"text",text:e("text_content"),type:"p",contentType:"static",styles:{desktop:{fontSize:14,fontFamily:"sans-serif",color:void 0,lineHeight:"120%",paddingTop:12,paddingBottom:12,paddingLeft:12,paddingRight:12,textAlign:"left"},mobile:{}}},{id:p(),name:e("button"),key:"button",text:e("button"),type:"link",linkURL:"",contentStyles:{desktop:{textAlign:"center",paddingTop:12,paddingBottom:12,paddingLeft:12,paddingRight:12},mobile:{}},styles:{desktop:{width:"auto",fontSize:12,lineHeight:"140%",borderRadius:4,fontFamily:"sans-serif",paddingTop:10,paddingBottom:10,paddingLeft:20,paddingRight:20,backgroundColor:void 0,color:"#fff",display:"inline-block"},mobile:{}}},{id:p(),name:e("spacer"),key:"spacer",contentStyles:{desktop:{paddingTop:0,paddingBottom:0,paddingLeft:0,paddingRight:0},mobile:{}},styles:{desktop:{height:16,width:"100%",display:"block"},mobile:{}}},{id:p(),name:e("divider"),key:"divider",contentStyles:{desktop:{paddingTop:12,paddingBottom:12,paddingLeft:12,paddingRight:12,textAlign:"center"},mobile:{}},styles:{desktop:{width:"100%",borderTopStyle:"solid",borderTopColor:"#ccc",borderTopWidth:1,display:"inline-block",verticalAlign:"middle"},mobile:{}}},{id:p(),name:e("image"),key:"image",src:"",alt:"Image",type:"link",linkEnabled:!1,linkURL:"",contentStyles:{desktop:{paddingTop:12,paddingBottom:12,paddingLeft:12,paddingRight:12,textAlign:"center"},mobile:{}},styles:{desktop:{width:"auto"},mobile:{}}},{id:p(),name:e("menu"),key:"menu",list:[{label:"Page",url:"",target:"_self"},{label:"Page",url:"",target:"_self"}],separator:" | ",contentStyles:{desktop:{paddingTop:12,paddingBottom:12,paddingLeft:12,paddingRight:12,textAlign:"center"},mobile:{}},styles:{desktop:{fontSize:14,fontFamily:"sans-serif",color:"#333333",linkColor:"#2faade",paddingTop:5,paddingBottom:5,paddingLeft:15,paddingRight:15,textAlign:"center",letterSpacing:0,fontWeight:"normal"},mobile:{}}},{id:p(),name:e("avatar"),key:"avatar",src:"",alt:"Avatar",type:"link",linkURL:"",contentStyles:{desktop:{paddingTop:12,paddingBottom:12,paddingLeft:12,paddingRight:12,textAlign:"center"},mobile:{}},styles:{desktop:{width:64,borderRadius:"50%",display:"block"},mobile:{}}},{id:p(),name:e("social_link"),key:"social_link",list:[{image:"https://s.magecdn.com/social/tc-facebook.svg",title:"Facebook",linkURL:""},{image:"https://s.magecdn.com/social/tc-instagram.svg",title:"Instagram",linkURL:""},{image:"https://s.magecdn.com/social/tc-tiktok.svg",title:"TikTok",linkURL:""},{image:"https://s.magecdn.com/social/tc-x.svg",title:"Twitter",linkURL:""}],imageWidth:32,contentStyles:{desktop:{paddingTop:12,paddingBottom:12,paddingLeft:12,paddingRight:12,textAlign:"left"},mobile:{}},styles:{desktop:{paddingTop:4,paddingBottom:4,paddingLeft:6,paddingRight:6},mobile:{}}}])(e),n=(e=>{const t={desktop:{textAlign:"center",paddingTop:12,paddingBottom:12,paddingLeft:12,paddingRight:12},mobile:{}},n={key:"column",desktop:{backgroundColor:"transparent",paddingTop:12,paddingLeft:6,paddingRight:6,paddingBottom:12,contentBackground:"transparent"},mobile:{}};return{full:{columns:1,type:"full",children:[{name:e("content"),key:"content",width:"100%",styles:n,children:[{name:e("drag_block_here"),key:"empty",width:"100%",styles:t}]}]},"1-1":{columns:2,type:"1-1",children:Array.from({length:2}).map(()=>({name:e("content"),key:"content",width:"50%",styles:n,children:[{name:e("drag_block_here"),key:"empty",width:"100%",styles:t}]}))},"1-1-1":{columns:3,type:"1-1-1",children:Array.from({length:3}).map(()=>({name:e("content"),key:"content",width:"33.3%",styles:n,children:[{name:e("drag_block_here"),key:"empty",width:"100%",styles:t}]}))},"1-1-1-1":{columns:4,type:"1-1-1-1",children:Array.from({length:4}).map(()=>({name:e("content"),key:"content",width:"25%",styles:n,children:[{name:e("drag_block_here"),key:"empty",width:"100%",styles:t}]}))},"1-2":{columns:2,type:"1-2",children:Array.from({length:2}).map((o,a)=>({name:e("content"),key:"content",width:0===a?"33.3%":"66.6%",styles:n,children:[{name:e("drag_block_here"),key:"empty",width:"100%",styles:t}]}))},"2-1":{columns:2,type:"2-1",children:Array.from({length:2}).map((o,a)=>({name:e("content"),key:"content",width:0===a?"66.6%":"33.3%",styles:n,children:[{name:e("drag_block_here"),key:"empty",width:"100%",styles:t}]}))},"2-4-2-4":{columns:4,type:"2-4-2-4",children:Array.from({length:4}).map((o,a)=>({name:e("content"),key:"content",width:a%2==0?"16.6%":"33.3%",styles:n,children:[{name:e("drag_block_here"),key:"empty",width:"100%",styles:t}]}))},"4-2-4-2":{columns:4,type:"4-2-4-2",children:Array.from({length:4}).map((o,a)=>({name:e("content"),key:"content",width:a%2==0?"33.3%":"16.6%",styles:n,children:[{name:e("drag_block_here"),key:"empty",width:"100%",styles:t}]}))}}})(e),o=(e=>t=>{const n={id:p(),name:e("drag_block_here"),key:"empty",width:"100%",styles:{desktop:{backgroundColor:"transparent",paddingTop:0,paddingLeft:0,paddingRight:0,paddingBottom:0},mobile:{}}};return{id:p(),name:e("container"),key:"column",type:"full",containerType:"none",styles:{key:"column",desktop:{backgroundColor:"transparent",paddingTop:0,paddingLeft:0,paddingRight:0,paddingBottom:0,contentBackground:"#fff"},mobile:{}},children:[{id:p(),name:e("content"),key:"content",width:"100%",styles:{key:"column",desktop:{backgroundColor:"transparent",paddingTop:12,paddingLeft:6,paddingRight:6,paddingBottom:12,contentBackground:"transparent"},mobile:{}},children:[t||n]}]}})(e);return{blockConfigsList:t,columnsSetting:n,getColumnConfig:o}},Nn=[{id:"dolor-sit-amet",name:"Dolor Sit Amet",description:"Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat.",image:"https://plus.unsplash.com/premium_photo-1681711647066-ef84575c0d95?fm=jpg&q=30&w=300&auto=format&fit=crop&ixlib=rb-4.1.0&ixid=M3wxMjA3fDB8MHxzZWFyY2h8MXx8cHJvZHVjdCUyMHBob3RvZ3JhcGh5fGVufDB8fDB8fHww",link:"https://loremipsum.com/checkout/cart/12345",price:2e3,currency:"USD",old_price:2500,new_price:2e3},{id:"sample-2",name:"Sample Pearl Necklace",description:"Classic strand of lustrous freshwater pearls with a sterling silver clasp. Timeless elegance for any outfit.",image:"https://picsum.photos/seed/necklace2/200/200",link:"https://www.example.com/products/sample-2",price:750,currency:"USD",old_price:null,new_price:null},{id:"sample-3",name:"Sample Gold Bracelet",description:"Handcrafted 14K yellow gold link bracelet. Lightweight and comfortable for everyday wear.",image:"https://picsum.photos/seed/bracelet3/200/200",link:"https://www.example.com/products/sample-3",price:450,currency:"USD",old_price:500,new_price:450},{id:"sample-4",name:"Sample Silver Earrings",description:"Delicate sterling silver drop earrings with subtle sparkle. A versatile addition to your jewelry collection.",image:"https://picsum.photos/seed/earrings4/200/200",link:"https://www.example.com/products/sample-4",price:199,currency:"USD",old_price:null,new_price:null},{id:"sample-5",name:"Sample Gemstone Pendant",description:"Stunning pendant with a natural gemstone centerpiece on a fine silver chain. Makes a memorable gift.",image:"https://picsum.photos/seed/pendant5/200/200",link:"https://www.example.com/products/sample-5",price:320,currency:"USD",old_price:400,new_price:320}],Tn=["product"],An=e=>"discount"===e||"none"===e?e:"product",Ln=e=>"additional"===e?"additional":"main",Pn=()=>{const{blockMap:a,rootOrder:l,setBlocks:r,currentItem:c,setCurrentItem:d,previewMode:p,bodySettings:u,templateData:m,setIsDragStart:g,setActionType:h,apiConfig:b}=e.useContext(O),{t:f}=Ft(),[_,x]=e.useState(!1),[v,C]=e.useState(null),[w,S]=e.useState(!1),{findStyleItem:j,cardItemElement:I,colorChange:N,inputChange:T,paddingChange:A}=jn(),{columnsSetting:L,blockConfigsList:P}=In(),R=An(c.data.containerType??"none"),$=c.data.productRole??"main",B=c.data.columnProducts,D=e.useMemo(()=>Array.isArray(B)?B:[],[B]),M=m?.content?.products?.length>0?m.content.products:m?.catalogProducts?.length>0?m.catalogProducts:Nn,E=m?.content?.primaryProductId,U=e=>{const{blockMap:t}=y([e]);let n={...a,...t};const o=Ln(e.productRole);"product"===e.containerType&&"main"===o&&Object.keys(n).forEach(t=>{if(t===e.id)return;const o=n[t];if(!o||"column"!==o.key)return;if("product"!==o.containerType)return;"main"===Ln(o.productRole)&&(n[t]={...o,productRole:"additional"})}),r(n,l,`edit_${(new Date).getTime()}`),d({...c,data:e})},F=e=>{const t=An(c.data.containerType),n=e.children,o=n.length,a=c.data.children?.length??0,i=c.data.columnProducts??[],l=Array.from({length:o},(e,t)=>t<a?i[t]??null:null);return{...c.data,...e,containerType:t,columnProducts:l,children:n.map((e,t)=>{let n=e;if(c.data.children?.[t]){const o=c.data.children[t];n={...o,key:e.key,name:e.name,width:e.width,styles:s(e.styles??o.styles),children:o.children}}return{...n}})}},H=e=>{if(G)return;const t=s(c.data);t.containerType=An(e);const n=t.containerType,o=Tn.includes(n);t.productRole=o?t.productRole??"main":void 0;const a=t.children?.length??0;let i=o?Array.from({length:a},(e,n)=>t.columnProducts?.[n]??null):[];if(o&&a>0&&M.length>0){const e=E?M.find(e=>e.id===E):M[0];e&&(i[0]=e)}t.columnProducts=i,U(t)},K=e=>{const t=s(c.data);t.productRole=Ln(e);const n=t.children?.length??0;let o=Array.from({length:n},(e,n)=>t.columnProducts?.[n]??null);if(n>0&&M.length>0){const e=E?M.find(e=>e.id===E):M[0];e&&!o[0]&&(o[0]=e)}t.columnProducts=o,U(t)},z=Tn.includes(R),W=e.useMemo(()=>Vt(c.data,a),[c.data,a]),q=e.useMemo(()=>k(a,l,c.data?.id),[a,l,c.data?.id]),J=e.useMemo(()=>(q||[]).filter(e=>e?.containerBlock&&e.containerBlock.id!==c.data?.id&&"none"!==e.containerType).map(e=>{const t=e.cellIndex??0;return{containerType:e.containerType,context:{columnIndex:t,columnProduct:e.containerBlock?.columnProducts?.[t]??null}}}),[q,c.data?.id]),G=e.useMemo(()=>(q||[]).some(e=>e?.containerBlock&&e.containerBlock.id!==c.data?.id&&"none"!==e.containerType),[q,c.data?.id]),Y=Ke(0,R,m,{},J).filter(({variableKey:e,key:t})=>!("product"===R)||(e??t)!==ge).filter(({variableKey:e,key:t})=>!W.has(e??t)),Z=e.useMemo(()=>{const e={columnIndex:0,columnProduct:D[0]??null};return We(R,m,e).filter(e=>e.variableKey&&!W.has(e.variableKey))},[R,m,D,W]),Q=e.useMemo(()=>{const e=new Set(Y.map(e=>e.variableKey??e.key)),t=Z.filter(t=>{const n=t.variableKey;return!(!n||e.has(n))&&(e.add(n),!0)});return[...Y,...t]},[Y,Z]),X=e=>t=>{const n=(e=>{const{value:t,type:n}=e;if("image"===n){const e=s(P.find(e=>"image"===e.key));return e?(e.src=t,e):{name:f("image"),key:"image",src:t,alt:"Image",type:"link",linkEnabled:!1,linkURL:"",contentStyles:{desktop:{paddingTop:12,paddingBottom:12,paddingLeft:12,paddingRight:12,textAlign:"center"},mobile:{}},styles:{desktop:{width:"auto"},mobile:{}}}}const o=s(P.find(e=>"text"===e.key));return o?(o.text=`<p>${t}</p>`,o.type="p",o.contentType="static",o):{name:f("text"),key:"text",text:`<p>${t}</p>`,type:"p",contentType:"static",styles:{desktop:{fontSize:14,fontFamily:"sans-serif",lineHeight:"120%",paddingTop:12,paddingBottom:12,paddingLeft:12,paddingRight:12,textAlign:"left"},mobile:{}}}})(e);"undefined"!=typeof window&&(window.__eeDragItemData=n,window.__eeDragSource="product-variables"),g(!0),h("add"),t.target.classList.add("ee-product-variable-item-dragging"),t.dataTransfer&&(t.dataTransfer.effectAllowed="copy")},ee=e=>{e.target.classList.remove("ee-product-variable-item-dragging"),"undefined"!=typeof window&&(window.__eeDragItemData=null,window.__eeDragSource=null),setTimeout(()=>{g(!1)},50)},te=[{key:"full",widths:["100%"],columns:1},{key:"1-1",widths:["50%","50%"],columns:2},{key:"1-1-1",widths:["33.33%","33.33%","33.33%"],columns:3},{key:"1-1-1-1",widths:["25%","25%","25%","25%"],columns:4}],ne="product"===R?te.filter(e=>1===e.columns):te,oe=e=>t=>{const n=s(c.data);n.children[e].styles[p]={...n.children[e].styles[p],...t},U(n)},ae=e=>{if("number"==typeof e)return e;if("string"!=typeof e)return;const t=Number.parseFloat(e);if(!Number.isNaN(t)){if(e.endsWith("%")){const e=Number(u?.contentWidth)||600;return Math.round(e*t/100)}return Math.round(t)}},ie=e=>t=>{if(null==t||Number.isNaN(Number(t)))return;const n=Math.max(1,Math.round(Number(t))),o=s(c.data);o.children[e].width=`${n}px`,U(o)};return i.jsxs(i.Fragment,{children:[i.jsxs("div",{className:"margin-y-30",children:[i.jsxs(i.Fragment,{children:[i.jsx("div",{className:"right-setting-block-item-title",children:f("container_settings")}),i.jsxs("div",{className:"ee-right-panel-stack",children:[i.jsxs("span",{className:"ee-stack-label",children:[f("container_type"),i.jsx(t.Tooltip,{title:f("tooltip_container_type"),children:i.jsx("span",{className:"ee-help-icon","aria-label":"Help",children:i.jsx(n.FontAwesomeIcon,{icon:o.faInfoCircle})})})]}),i.jsx(t.Select,{className:"ee-stack-control",value:R,onChange:H,disabled:G,style:{width:"100%"},options:V.map(({value:e,labelKey:t})=>({value:e,label:f(t)})),getPopupContainer:()=>document.querySelector(".right-settings")||document.body}),z&&i.jsxs("div",{className:"ee-product-assign-section margin-top-12",children:[i.jsx("span",{className:"ee-stack-label",children:f("product_role")}),i.jsx(t.Select,{className:"ee-stack-control",value:$,style:{width:"100%"},getPopupContainer:()=>document.querySelector(".right-settings")||document.body,onChange:K,options:[{value:"main",label:f("product_role_main_hero")},{value:"additional",label:f("product_role_additional")}]})]}),z&&i.jsxs("div",{className:"ee-product-assign-section margin-top-12",children:[i.jsx("span",{className:"ee-stack-label",children:f("assign_product_to_column")}),i.jsx(Sn,{apiConfig:b,templateData:m,value:D[0]?.id??void 0,selectedProduct:D[0],onChange:e=>((e,t)=>{const n=s(c.data),o=[...n.columnProducts??[]];o[e]=t,n.columnProducts=o,U(n)})(0,e),placeholder:f("assign_product_to_column"),staticProductList:M})]}),i.jsxs("div",{className:"ee-product-variables-section margin-top-12",children:[i.jsxs("button",{type:"button",className:"ee-product-variables-toggle",onClick:()=>S(e=>!e),children:[i.jsx("span",{children:f("variables")}),i.jsx("span",{className:"ee-product-variables-toggle-icon",children:w?"▴":"▾"})]}),w&&i.jsx("div",{className:"ee-product-variables-dropdown",children:Q.length>0?Q.map(e=>i.jsxs("div",{className:"ee-product-variable-item",draggable:!0,onDragStart:X(e),onDragEnd:ee,title:e.value,children:[i.jsx("span",{className:"ee-product-variable-item-label",children:e.labelKey?f(e.labelKey):e.label}),i.jsx("span",{className:"ee-product-variable-item-token",children:e.value})]},e.value)):i.jsx("div",{className:"ee-stack-help",children:"No variables available for this container type."})})]})]})]}),i.jsxs(i.Fragment,{children:[i.jsxs("div",{className:"right-setting-block-item-title",children:[" ",f("columns")]}),i.jsx("div",{children:ne.map((e,t)=>{return i.jsx("div",{className:Mt(c.data.type===e.key?"column-item-active":"column-item-un_active","column-item"),onClick:(n=e.key,()=>{if(c.data.children.length>L[n].children.length)return x(!0),void C(n);const e=F(L[n]);U(e)}),children:e.widths.map((t,n)=>{const o=n===e.widths.length-1;return i.jsx("span",{style:{width:t},className:Mt(o?"":"column-item-border-right",c.data.type===e.key?"column-item-active":"column-item-un_active","height-full")},n)})},t);var n})})]}),i.jsxs(i.Fragment,{children:[i.jsxs("div",{className:"right-setting-block-item-title",children:[" ",f("column_settings")]}),i.jsx(t.Tabs,{defaultActiveKey:"1",animated:{inkBar:!0,tabPane:!0},items:c.data.children.map((e,n)=>{const o=n+1,a=j(e.styles,"backgroundColor");return{label:`${f("column")} ${o}`,key:o,children:i.jsxs(i.Fragment,{children:[I(f("content_background_color"),i.jsx(hn,{color:a,setColor:({hex:e})=>((e,t)=>n=>{const o=s(c.data);o.children[t].styles[p][e]=n,U(o)})("backgroundColor",n)(e)})),I(f("size_px"),i.jsx(t.InputNumber,{min:1,className:"input-width",addonAfter:"px",value:ae(e.width),onChange:ie(n)})),i.jsx(bn,{padding:{paddingTop:j(e.styles,"paddingTop"),paddingRight:j(e.styles,"paddingRight"),paddingLeft:j(e.styles,"paddingLeft"),paddingBottom:j(e.styles,"paddingBottom")},setPadding:oe(n)})]})}})})]}),(()=>{const e=j(c.data.styles,"backgroundColor"),n=j(c.data.styles,"contentBackground"),o=j(c.data.styles,"borderRadius"),a="number"==typeof o?o:parseInt(String(o||"").replace("px",""),10)||0;return i.jsxs(i.Fragment,{children:[i.jsxs("div",{className:"right-setting-block-item-title",children:[" ",f("column_styles")]}),I(f("background_color"),i.jsx(hn,{color:e,setColor:N("backgroundColor")})),I(f("content_background_color"),i.jsx(hn,{color:n,setColor:N("contentBackground")})),I(f("border_radius"),i.jsx(t.InputNumber,{min:0,className:"input-width",addonAfter:"px",value:a,onChange:e=>T("borderRadius")(Number(e)||0)})),i.jsx(bn,{padding:{paddingTop:j(c.data.styles,"paddingTop"),paddingRight:j(c.data.styles,"paddingRight"),paddingLeft:j(c.data.styles,"paddingLeft"),paddingBottom:j(c.data.styles,"paddingBottom")},setPadding:A})]})})()]}),i.jsx(t.Modal,{title:f("column_delete"),open:_,onOk:()=>{const e=F(L[v]);U(e),x(!1),C(null)},onCancel:()=>{x(!1)},width:400,okText:f("confirm"),cancelText:f("cancel"),wrapClassName:"ee-modal-dark",children:i.jsx("p",{className:"margin-y-30",dangerouslySetInnerHTML:{__html:f("column_delete_desc",{count:`<span class="column-modal-context">\n ${v?c.data.children.length-L[v].children.length:0}\n </span>`})}})})]})},Rn=({mlEmailNodesEndpoint:t,mlGenerationEndpoint:n,headers:o={},templateData:a,blockId:i,containerType:l,containerId:r,productId:s,blockName:c="Text",blockElementType:d="p",emailTemplateId:p,companyId:u,language:m="en"}={})=>{const g=!!(t&&String(p??"").trim()&&String(u??"").trim()&&i&&r),y=!!n,h=g||y;return{generateOptions:e.useCallback(async(e,h,b={})=>{const{previousPrompt:f="",previousSelectedAiContent:k=""}=b,_=function(e,t={}){const{containerType:n}=t,o=String(e??"").trim();let a;return a=ze[o]?ze[o]:o?o.split(/[-_]/).map(e=>e.length?e[0].toUpperCase()+e.slice(1).toLowerCase():"").join(""):"DisplayText",a||(a="DisplayText"),"product"===n&&"DisplayText"===a?"ProductDescription":a}(e,{containerType:l});if(g){const e={containerType:l||"none",id:r};if("product"===(l||"")&&null!=s){const t=String(s).trim();t&&(e.productId=t)}const n={blockContext:{blockId:i,name:c,type:d||"p"},companyId:u,containerContext:e,emailTemplateId:p,language:m||"en",promptContext:{newPrompt:h||"",previousPrompt:f||"",previousSelectedAiContent:k||""},type:_},a=await(async(e,t,n={})=>{if(!e)return console.error("[API Service] generate-email-nodes: no endpoint"),{success:!1,error:"ML endpoint is not configured."};try{const o=await fetch(e,{method:"POST",headers:{"Content-Type":"application/json",...n},body:JSON.stringify(t)});let a={};try{a=await o.json()}catch{a={}}if(!o.ok||!1===a.success){let e="";const t=a.error;if(t&&"object"==typeof t){const n=null!=t.code?String(t.code):"",o=null!=t.message?String(t.message):"";e=[n,o].filter(Boolean).join(" — ")||o||n}return e||(e=null!=a.message?String(a.message):`${o.status} ${o.statusText}`),console.error("[API Service] generate-email-nodes failed:",e),{success:!1,error:String(e),errorCode:t&&"object"==typeof t&&null!=t.code?String(t.code):void 0}}const i=Array.isArray(a.variations)?a.variations:[],l=i.map(e=>e&&"string"==typeof e.value?e.value.trim():"").filter(Boolean);return 0===l.length?(console.error("[API Service] generate-email-nodes: empty variations"),{success:!1,error:"No variations were returned for this request."}):{success:!0,options:l,variations:i,emailJson:"string"==typeof a.emailJson?a.emailJson:void 0,blockId:a.blockId,emailTemplateId:a.emailTemplateId}}catch(e){return console.error("[API Service] Error calling generate-email-nodes:",e),{success:!1,error:e&&"object"==typeof e&&"message"in e?String(e.message):"Unable to reach the ML service. Check your network and try again."}}})(t,n,o);if(a&&a.success&&a.options?.length)return a.options;return{error:a&&"object"==typeof a&&a.error?String(a.error):"No response from the ML service."}}if(y){const e={variable:_,prompt:h,context:{templateData:a,blockId:i,containerType:l}},t=await(async(e,t,n={})=>{if(!e)return console.error("[API Service] ML endpoint not configured"),null;try{const o=await fetch(e,{method:"POST",headers:{"Content-Type":"application/json",...n},body:JSON.stringify(t)});if(!o.ok)return console.error("[API Service] ML endpoint failed:",o.status,o.statusText),null;const a=await o.json();if(!a.success)return console.error("[API Service] ML API returned error:",a.error),null;const i=a.data?.options??[];return Array.isArray(i)&&0!==i.length?i:(console.error("[API Service] ML API returned empty options"),null)}catch(e){return console.error("[API Service] Error calling ML endpoint:",e),null}})(n,e,o);return t&&t.length?t:{error:"The legacy ML endpoint did not return any options. Check the API response."}}return{i18nKey:"ml_ai_unavailable"}},[g,y,t,n,o,a,i,l,r,s,c,d,p,u,m]),isConfigured:h}};function $n(){const{blockMap:t,rootOrder:n,currentItem:o}=e.useContext(O);return e.useMemo(()=>{if(!t||!o?.id)return{containerBlock:null,containerType:"none",columnIndex:0,cellIndex:0};const{containerBlock:e,containerType:a,cellIndex:i,isRoot:l,rootIndex:r}=function(e,t,n){const o=(t||[]).indexOf(n);if(-1!==o){const t=e[n];return{containerBlock:t??null,containerType:t?.containerType??"none",cellIndex:0,isRoot:!0,rootIndex:o}}const a=f(e,t,n);if(!a)return{containerBlock:null,containerType:"none",cellIndex:0,isRoot:!1};const i=e[a.containerId];return{containerBlock:i??null,containerType:i?.containerType??"none",cellIndex:a.cellIndex,isRoot:!1}}(t,n,o.id);let s=0;if(l)s=r??0;else if(e){const t=n.indexOf(e.id);s=t>=0?t:0}const c=i??0;return{containerBlock:e??null,containerType:a??"none",columnIndex:s,cellIndex:c,contentIndex:c}},[t,n,o?.id])}const{TextArea:Bn}=t.Input;const Dn=()=>{const{currentItem:a,previewMode:l,templateData:r,apiConfig:c,language:p,aiEnabled:u=!0}=e.useContext(O),{t:m}=Ft(),{findStyleItem:g,cardItemElement:y,paddingChange:h,otherStylesChange:b,inputChange:f,updateItemStyles:k}=jn(),{containerBlock:_,containerType:x,cellIndex:v}=$n(),C="product"===x?_?.columnProducts?.[v??0]?.id:void 0,{generateOptions:w}=Rn({mlEmailNodesEndpoint:c?.mlEmailNodesEndpoint,mlGenerationEndpoint:c?.mlGenerationEndpoint,headers:c?.headers||{},templateData:r,blockId:a?.id,containerType:x,containerId:_?.id,productId:C,blockName:a?.data?.name||"Text",blockElementType:a?.data?.type||"p",emailTemplateId:c?.emailTemplateId,companyId:c?.companyId??r?.companyId,language:p||"en"}),[S,j]=e.useState(""),I=(e,t)=>{const n=s(a.data);n.styles||(n.styles={desktop:{},mobile:{}}),n.styles.desktop||(n.styles.desktop={}),n.styles.mobile||(n.styles.mobile={}),n.styles.desktop[e]=t,n.styles[l][e]=t,n.text=d(n.text,n.styles.desktop),k(n)},[N,T]=e.useState([]),[A,L]=e.useState(!1),[P,R]=e.useState(""),$=a.data.contentType??"dynamic",B=a.data.type||"p",D=e=>{if(!u)return;const t=e?"dynamic":"static",n=s(a.data);n.contentType=t,"dynamic"===t&&(n.selectedVariableKey=void 0,n.dynamicVariable=n.dynamicVariable??"",n.dynamicPrompt=n.dynamicPrompt??"",n.dynamicSelectedContent=n.dynamicSelectedContent??"",n.dynamicOptions=Array.isArray(n.dynamicOptions)?n.dynamicOptions:[]),k(n)},M=async()=>{const e=a.data.dynamicVariable??"",t=a.data.dynamicPrompt??S??"";L(!0),R("");try{const o=await w(e,t,{previousPrompt:a.data.dynamicPreviousPrompt??"",previousSelectedAiContent:(n=a.data.dynamicSelectedContent||a.data.text,null==n||"string"!=typeof n?"":n.replace(/<[^>]+>/g," ").replace(/\s+/g," ").trim())});if(o&&"object"==typeof o&&!Array.isArray(o))return o.i18nKey?R(m(o.i18nKey)):o.error?R(String(o.error)):R(m("ml_no_variations")),void T([]);if(Array.isArray(o)&&o.length>0){R(""),T(o);const e=s(a.data);e.dynamicOptions=o,e.dynamicPrompt=t,e.dynamicPreviousPrompt=t,k(e)}else R(m("ml_no_variations")),T([])}catch(e){console.error("[TextStyleSettings] Error during content generation:",e),R(e&&"object"==typeof e&&"message"in e?String(e.message):m("ml_generation_unexpected_error")),T([])}finally{L(!1)}var n},E=e=>{const t=e.target.value;j(t),R("");const n=s(a.data);n.dynamicPrompt=t,k(n)};return i.jsxs("div",{className:"margin-y-30",children:[i.jsxs(i.Fragment,{children:[i.jsx("div",{className:"right-setting-block-item-title",children:m("text_and_content_type")}),i.jsxs("div",{className:"ee-content-type-two-rows margin-bottom-12",children:[u&&i.jsxs("div",{className:"ee-content-type-row ee-content-type-row-1",children:[i.jsx("span",{className:"ee-ai-label",children:m("ai_enabled")}),i.jsx(t.Switch,{checked:"dynamic"===$,onChange:D})]}),i.jsx("div",{className:"ee-content-type-row ee-content-type-row-2",children:[{name:m("body_paragraph"),value:"p"},{name:m("heading_h1"),value:"h1"},{name:m("heading_h2"),value:"h2"},{name:m("heading_h3"),value:"h3"},{name:m("heading_h4"),value:"h4"}].map(({name:e,value:t})=>{return i.jsx("div",{className:Mt(B===t?"align-style-item-active":"align-style-item-un_active","align-style-item"),onClick:(n=t,()=>{let e=a.data.styles.desktop.fontSize;switch(n){case"h1":e=22;break;case"h2":e=20;break;case"h3":e=18;break;case"h4":e=16;break;default:e=e||14}const t=s(a.data);t.type=n,t.styles={...t.styles,desktop:{...t.styles.desktop,fontSize:e,fontWeight:"p"!==n?"bold":t.styles.desktop.fontWeight}},t.text=d(t.text,t.styles.desktop),k(t)}),children:e},t);var n})})]}),u&&"dynamic"===$&&i.jsxs(i.Fragment,{children:[i.jsxs("div",{className:"ee-dynamic-prompt-block",children:[i.jsxs("span",{className:"ee-prompt-label",children:[m("dynamic_prompt_help"),i.jsx(t.Tooltip,{title:m("tooltip_dynamic_prompt"),children:i.jsx("span",{className:"ee-help-icon","aria-label":"Help",children:i.jsx(n.FontAwesomeIcon,{icon:o.faInfoCircle})})})]}),i.jsx(Bn,{rows:3,value:a.data.dynamicPrompt??S,onChange:E,placeholder:m("dynamic_prompt_help")}),i.jsx(t.Button,{type:"primary",size:"small",loading:A,disabled:!(a.data.dynamicPrompt??S??"").trim(),onClick:M,children:m("generate")}),P?i.jsx("div",{className:"ee-ml-generation-error",role:"alert",children:P}):null]}),(a.data.dynamicOptions?.length>0||N.length>0)&&i.jsxs("div",{className:"ee-sample-content-block",children:[i.jsx("div",{className:"card-item-title",children:m("select_content")}),(a.data.dynamicOptions||N).map((e,t)=>{const n="string"==typeof e?e:String(e),o=(a.data.text||a.data.dynamicSelectedContent||"").replace(/<[^>]+>/g,"").replace(/\s+/g," ").trim(),l=n.replace(/\s+/g," ").trim(),r=o.length>0&&o===l;return i.jsx("div",{className:Mt("ee-sample-content-item",r&&"ee-sample-content-item-selected"),onClick:()=>(e=>{const t=s(a.data);t.dynamicSelectedContent=e,t.text=e,k(t),T([]),R("")})(e),children:e},t)})]})]})]}),(()=>{const e=g(a.data.styles,"color"),r=g(a.data.styles,"linkColor"),c=g(a.data.styles,"textAlign"),d=g(a.data.styles,"fontFamily"),p=g(a.data.styles,"fontSize"),u=null!=p&&""!==p?Number(p):14,h=g(a.data.styles,"lineHeight"),_=null!=h&&""!==h&&Number(String(h).replace(/%/g,""))||120;return i.jsxs(i.Fragment,{children:[i.jsx("div",{className:"right-setting-block-item-title",children:m("text_styles")}),y(m("font_color"),i.jsx(hn,{color:e,setColor:({hex:e})=>I("color",e)})),y(m("link_color"),i.jsx(hn,{color:r||e||"#2faade",setColor:({hex:e})=>((e,t)=>{const n=s(a.data);n.styles||(n.styles={desktop:{},mobile:{}}),n.styles.desktop||(n.styles.desktop={}),n.styles.mobile||(n.styles.mobile={}),n.styles.desktop[e]=t,n.styles[l][e]=t,k(n)})("linkColor",e)})),y(m("text_align"),i.jsx("div",{className:"flex justify-center items-center",children:[{icon:o.faAlignLeft,value:"left"},{icon:o.faAlignCenter,value:"center"},{icon:o.faAlignRight,value:"right"},{icon:o.faAlignJustify,value:"justify"}].map(({icon:e,value:t})=>i.jsx("div",{className:Mt(c===t?"align-style-item-active":"align-style-item-un_active","align-style-item"),onClick:()=>b("textAlign",t),children:i.jsx(n.FontAwesomeIcon,{icon:e,className:"tag-style-size"})},t))})),y(m("font_family"),i.jsx(t.Select,{className:"input-width",value:d,onChange:e=>I("fontFamily",e),getPopupContainer:()=>document.querySelector(".right-settings")||document.body,children:["sans-serif","Arial","Verdana","Times New Roman","Garamond","Georgia","Courier New","cursive"].map(e=>i.jsx(t.Select.Option,{value:e,children:e},e))})),y(m("font_size"),i.jsx(t.InputNumber,{min:1,max:999,className:"input-width",addonAfter:"px",value:u,onChange:e=>I("fontSize",null!=e&&""!==e?Number(e):14)})),y(m("line_height"),i.jsx(t.InputNumber,{className:"input-width",addonAfter:"%",min:1,max:999,value:_,onChange:e=>f("lineHeight")(null!=e&&""!==e?`${e}%`:"120%")}))]})})(),i.jsxs(i.Fragment,{children:[i.jsx("div",{className:"right-setting-block-item-title",children:m("padding_settings")}),i.jsx(bn,{padding:{paddingTop:g(a.data.styles,"paddingTop"),paddingRight:g(a.data.styles,"paddingRight"),paddingLeft:g(a.data.styles,"paddingLeft"),paddingBottom:g(a.data.styles,"paddingBottom")},setPadding:h})]})]})},Mn=()=>{const{currentItem:a,previewMode:l,templateData:r,blockList:c}=e.useContext(O),{t:d}=Ft(),{containerType:p,columnIndex:u,contentIndex:m}=$n(),g=["header","footer","discount"].includes(p),{findStyleItem:y,cardItemElement:h,colorChange:b,paddingChange:f,inputChange:k,updateItemStyles:_}=jn(),{labelOptions:x,urlOptions:v}=function(e,t){return{labelOptions:Fe.map(({variableKey:e,labelKey:n})=>({value:fe(e),labelKey:n,pasteValue:Me(t,e,{})})),urlOptions:Oe.map(({variableKey:e,labelKey:n})=>({value:fe(e),labelKey:n,pasteValue:Me(t,e,{})}))}}(0,r);return i.jsxs("div",{className:"margin-y-30",children:[(()=>{const{linkURL:e,text:n,labelVariable:o,urlVariable:l}=a.data,p=n?.replace(/<[^>]+>/g,"").trim()??"",y=o||p&&/\{\{\w+\}\}/.test(p),b=o?o.replace(/^\{\{|\}\}$/g,"").trim():p.match(/\{\{(\w+)\}\}/)?.[1]||"CTALabel",f={columnIndex:m,columnProduct:c?.[u]?.columnProducts?.[m]??null},k=r&&y?Me(r,b,f):null,C=null==k||String(k).startsWith("{{")?p:k,w=l?l.replace(/^\{\{|\}\}$/g,"").trim():"",S=!e&&w&&r?Me(r,w,f):null,j=e||(null==S||"string"!=typeof S||S.startsWith("{{")?"":String(S).replace(/^https?:\/\//,"").trim())||"";return i.jsxs("div",{children:[i.jsx("div",{className:"right-setting-block-item-title",children:d("button_action")}),g&&x.length>0&&i.jsx(i.Fragment,{children:h(d("button_label_variable"),i.jsx(t.Select,{className:"ee-variable-select width-full",placeholder:d("button_label_manual"),allowClear:!0,value:o||void 0,onChange:e=>{const t=s(a.data);if(!e)return t.labelVariable="",t.text=t.text||"",void _(t);const n=x.find(t=>t.value===e);t.labelVariable=e,t.text=n?n.pasteValue:e,_(t)},getPopupContainer:()=>document.querySelector(".right-settings")||document.body,options:[{value:"",label:d("button_label_manual")},...x.map(e=>({value:e.value,label:d(e.labelKey)}))]}))}),i.jsx("div",{className:"card-item-title",children:d("button_text")}),i.jsx("div",{className:"margin-top-6",children:i.jsx(t.Input,{value:C,onChange:e=>{const t=e.target.value,n=s(a.data);n.text=t,t&&t.startsWith("{{")||(n.labelVariable=""),_(n)},placeholder:d("button_label_manual")})}),i.jsx("div",{className:"ee-button-action-divider"}),h(d("action_type"),i.jsx("div",{className:"link-tag",children:d("link")})),g&&v.length>0&&i.jsx(i.Fragment,{children:h(d("button_url_variable"),i.jsx(t.Select,{className:"ee-variable-select width-full",placeholder:d("button_url_manual"),allowClear:!0,value:l||void 0,onChange:e=>{const t=s(a.data);if(!e)return t.urlVariable="",t.linkURL=t.linkURL||"",void _(t);const n=v.find(t=>t.value===e);t.urlVariable=e;const o=n?n.pasteValue:e;t.linkURL="string"==typeof o?o.replace(/^https?:\/\//,""):"",_(t)},getPopupContainer:()=>document.querySelector(".right-settings")||document.body,options:[{value:"",label:d("button_url_manual")},...v.map(e=>({value:e.value,label:d(e.labelKey)}))]}))}),i.jsx("div",{className:"card-item-title",children:d("link_url")}),i.jsx("div",{className:"margin-top-6",children:i.jsx(t.Input,{addonBefore:"https://",value:j,onChange:e=>{const t=e.target.value,n=s(a.data);n.linkURL=t,t&&t.startsWith("{{")||(n.urlVariable=""),_(n)}})})]})})(),(()=>{const e=y(a.data.styles,"width"),c=y(a.data.styles,"borderRadius"),p="number"==typeof c?c:parseInt(String(c||"").replace("px",""),10)||0,u=a.data.contentStyles?.[l]?.textAlign??"center",m=y(a.data.styles,"color"),g=y(a.data.styles,"fontFamily"),x=y(a.data.styles,"fontSize"),v=y(a.data.styles,"lineHeight"),C=y(a.data.styles,"backgroundColor")??(e=>e?.brandContext?.brand_color??"#111111")(r);return i.jsxs(i.Fragment,{children:[i.jsx("div",{className:"right-setting-block-item-title",children:d("button_styles")}),h(d("width_auto"),i.jsx(t.Switch,{checked:"auto"===e,className:Mt("auto"===e?"switch-active":"switch-disabled"),onChange:()=>{const t="auto"===e?"100%":"auto";k("width")(t)}})),"auto"!==e&&i.jsx(t.Slider,{value:Number(e.replace("%","")),onChange:e=>k("width")(e+"%")}),"auto"!==e&&h(d("align"),i.jsx("div",{className:"flex justify-center items-center",children:[{icon:o.faAlignLeft,value:"left"},{icon:o.faAlignCenter,value:"center"},{icon:o.faAlignRight,value:"right"}].map(({icon:e,value:t})=>i.jsx("div",{className:Mt(u===t?"align-style-item-active":"align-style-item-un_active","align-style-item"),onClick:()=>{const e=s(a.data);e.styles={...e.styles||{},[l]:{...e.styles?.[l]||{},textAlign:"center"}},e.contentStyles={...e.contentStyles||{},[l]:{...e.contentStyles?.[l]||{},textAlign:t}},_(e)},children:i.jsx(n.FontAwesomeIcon,{icon:e,className:"tag-style-size"})},t))})),h(d("font_color"),i.jsx(hn,{color:m,setColor:b("color")})),h(d("button_color"),i.jsx(hn,{color:C,setColor:b("backgroundColor")})),h(d("border_radius"),i.jsx(t.InputNumber,{min:0,className:"input-width",addonAfter:"px",value:p,onChange:e=>k("borderRadius")(Number(e)||0)})),h(d("font_family"),i.jsx(t.Select,{className:"input-width",value:g,onChange:k("fontFamily"),getPopupContainer:()=>document.querySelector(".right-settings")||document.body,children:["sans-serif","Arial","Verdana","Times New Roman","Garamond","Georgia","Courier New","cursive"].map(e=>i.jsx(t.Select.Option,{value:e,children:e},e))})),h(d("font_size"),i.jsx(t.InputNumber,{min:0,className:"input-width",addonAfter:"px",value:x,onChange:k("fontSize")})),h(d("line_height"),i.jsx(t.InputNumber,{className:"input-width",addonAfter:"%",min:0,value:Number(v.replace("%","")),onChange:e=>k("lineHeight")(e+"%")})),i.jsx("div",{className:"card-item-title",children:d("button_padding")}),i.jsx(bn,{padding:{paddingTop:y(a.data.styles,"paddingTop"),paddingRight:y(a.data.styles,"paddingRight"),paddingLeft:y(a.data.styles,"paddingLeft"),paddingBottom:y(a.data.styles,"paddingBottom")},setPadding:f})]})})(),i.jsxs(i.Fragment,{children:[i.jsxs("div",{className:"right-setting-block-item-title",children:[" ",d("padding_settings")]}),i.jsx(bn,{padding:{paddingTop:y(a.data.contentStyles,"paddingTop"),paddingRight:y(a.data.contentStyles,"paddingRight"),paddingLeft:y(a.data.contentStyles,"paddingLeft"),paddingBottom:y(a.data.contentStyles,"paddingBottom")},setPadding:e=>{const t=s(a.data);t.contentStyles[l]={...t.contentStyles[l],...e},_(t)}})]})]})},En=()=>{const{currentItem:a,previewMode:l}=e.useContext(O),{t:r}=Ft(),{findStyleItem:c,cardItemElement:d,colorChange:p,updateItemStyles:u,inputChange:m}=jn(),g=e=>{const t=s(a.data);t.contentStyles[l]={...t.contentStyles[l],...e},u(t)};return i.jsx("div",{className:"margin-y-30",children:(()=>{const e=c(a.data.contentStyles,"textAlign"),y=c(a.data.styles,"width"),h=c(a.data.styles,"borderTopColor"),b=c(a.data.styles,"borderTopWidth"),f=c(a.data.styles,"borderTopStyle"),k=[{label:r("solid"),value:"solid"},{label:r("dotted"),value:"dotted"},{label:r("dashed"),value:"dashed"}];return i.jsxs(i.Fragment,{children:[i.jsxs("div",{className:"right-setting-block-item-title",children:[" ",r("divider_styles")]}),d(r("divider_type"),i.jsx(t.Select,{className:"input-width",value:f,onChange:m("borderTopStyle"),getPopupContainer:()=>document.querySelector(".right-settings")||document.body,children:k.map(e=>i.jsx(t.Select.Option,{value:e.value,children:e.label},e.value))})),d(r("height"),i.jsx(t.InputNumber,{min:0,className:"input-width",addonAfter:"px",value:b,onChange:m("borderTopWidth")})),d(r("divider_color"),i.jsx(hn,{color:h,setColor:p("borderTopColor")})),i.jsx("div",{className:"card-item-title",children:r("width")}),i.jsx(t.Slider,{value:Number(y.replace("%","")),onChange:e=>m("width")(e+"%")}),d(r("align"),i.jsx("div",{className:"flex justify-center items-center",children:[{icon:o.faAlignLeft,value:"left"},{icon:o.faAlignCenter,value:"center"},{icon:o.faAlignRight,value:"right"},{icon:o.faAlignJustify,value:"justify"}].map(({icon:t,value:o})=>i.jsx("div",{className:Mt(e===o?"align-style-item-active":"align-style-item-un_active","align-style-item"),onClick:()=>(e=>{const t=s(a.data);t.contentStyles[l]={...t.contentStyles[l],textAlign:e},u(t)})(o),children:i.jsx(n.FontAwesomeIcon,{icon:t,className:"tag-style-size"})},o))})),i.jsxs("div",{className:"card-item-title",children:[" ",r("padding_settings")]}),i.jsx(bn,{padding:{paddingTop:c(a.data.contentStyles,"paddingTop"),paddingRight:c(a.data.contentStyles,"paddingRight"),paddingLeft:c(a.data.contentStyles,"paddingLeft"),paddingBottom:c(a.data.contentStyles,"paddingBottom")},setPadding:g})]})})()})},Un=()=>{const{currentItem:a}=e.useContext(O),{t:l}=Ft(),{findStyleItem:r,cardItemElement:s,inputChange:c}=jn(),d=r(a.data.styles,"height"),p="number"==typeof d?d:parseInt(d,10)||16;return i.jsxs("div",{className:"margin-y-30",children:[i.jsx("div",{className:"right-setting-block-item-title",children:l("spacer_block")}),s(i.jsxs("span",{className:"flex items-center gap-2",children:[i.jsx(n.FontAwesomeIcon,{icon:o.faArrowsAltV,className:"tag-style-size"}),l("height")]}),i.jsx(t.InputNumber,{min:0,max:500,className:"input-width",addonAfter:"px",value:p,onChange:e=>c("height")(e??0)}))]})},Fn=()=>{const{currentItem:a,previewMode:l}=e.useContext(O),{t:r}=Ft(),{findStyleItem:d,paddingChange:p,updateItemStyles:u,cardItemElement:m,colorChange:g,inputChange:y}=jn(),{list:h=[],separator:b=" | "}=a.data,[f,k]=e.useState(null),[_,x]=e.useState(!1),[v,C]=e.useState(null),w=e.useRef(null),S=(e,t)=>{const n=s(a.data);n[e]=t,u(n)},j=e.useCallback(c(e=>{e.preventDefault();const t=w.current;if(!t)return;const n=e.target.closest("[data-index]");if(!n)return;const o=Array.from(t.children).indexOf(n);if(-1===o)return;const a=parseInt(v,10);if(a===o)return;const i=s(h);[i[o],i[a]]=[i[a],i[o]],C(String(o)),S("list",i)},50),[h,v]),I=[{label:r("same_tab"),value:"_self"},{label:r("new_tab"),value:"_blank"}];return i.jsxs("div",{className:"margin-y-30",children:[i.jsx("div",{className:"right-setting-block-item-title",children:r("menu_items")}),i.jsx("div",{ref:w,onDragOver:j,className:"margin-top-12",onDragStart:e=>{const t=e.target.closest("[data-index]"),n=t?.getAttribute("data-index");null!=n&&(t.classList.add("social-link-item-current"),k(t),x(!0),C(n))},onDragEnd:()=>{const e=f?.closest?.("[data-index]");e&&e.classList.remove("social-link-item-current"),k(null),x(!1),C(null)},children:h.map((e,a)=>i.jsx("div",{"data-index":a,draggable:!0,className:Mt("social-link-item",_&&"social-link-item-drag_start",v===String(a)?"social-link-item-current":"border-transparent"),children:i.jsxs("div",{className:"social-link-item-content ee-menu-item-content",children:[i.jsxs("div",{className:"ee-menu-item-header flex items-center justify-between margin-bottom-8",children:[i.jsxs("div",{className:"flex items-center gap-2 cursor-grab",children:[i.jsx(n.FontAwesomeIcon,{icon:o.faGripVertical,className:"tag-style-size"}),i.jsxs("span",{className:"font-semibold",children:[r("menu_item")," ",a+1]})]}),i.jsx("div",{className:"social-link-item-icon social-link-item-icon-slate ee-menu-item-delete",onClick:()=>S("list",h.filter((e,t)=>t!==a)),children:i.jsx(n.FontAwesomeIcon,{icon:o.faTrash,className:"social-link-item-icon-svg social-link-item-icon-svg-deep"})})]}),i.jsxs("div",{className:"ee-menu-item-fields",children:[m(r("label"),i.jsx(t.Input,{className:"ee-menu-item-input",value:e.label||"",onChange:e=>S("list",h.map((t,n)=>n===a?{...t,label:e.target.value}:t)),placeholder:"Page"})),m(r("url"),i.jsx(t.Input,{addonBefore:"https://",className:"ee-menu-item-input",value:(e.url||"").replace(/^https?:\/\//,""),onChange:e=>S("list",h.map((t,n)=>n===a?{...t,url:e.target.value}:t)),placeholder:"example.com"})),m(r("target"),i.jsx(t.Select,{className:"input-width ee-menu-item-input",value:e.target||"_self",onChange:e=>S("list",h.map((t,n)=>n===a?{...t,target:e}:t)),getPopupContainer:()=>document.querySelector(".right-settings")||document.body,children:I.map(e=>i.jsx(t.Select.Option,{value:e.value,children:e.label},e.value))}))]})]})},a))}),i.jsxs("button",{type:"button",className:"menu-add-new-item margin-top-12",onClick:()=>S("list",h.concat({label:r("page"),url:"",target:"_self"})),children:[i.jsx("span",{className:"menu-add-new-item-icon",children:"+"})," ",r("add_new_item")]}),i.jsx("div",{className:"right-setting-block-item-title margin-top-18",children:r("menu_styles")}),m(r("font_family"),i.jsx(t.Select,{className:"input-width",value:d(a.data.styles,"fontFamily"),onChange:y("fontFamily"),getPopupContainer:()=>document.querySelector(".right-settings")||document.body,children:["sans-serif","Arial","Verdana","Times New Roman","Georgia","Courier New"].map(e=>i.jsx(t.Select.Option,{value:e,children:e},e))})),m(r("font_size"),i.jsx(t.InputNumber,{min:8,max:72,className:"input-width",addonAfter:"px",value:d(a.data.styles,"fontSize"),onChange:y("fontSize")})),m(r("letter_spacing"),i.jsx(t.InputNumber,{className:"input-width",addonAfter:"px",value:d(a.data.styles,"letterSpacing"),onChange:y("letterSpacing")})),m(r("text_color"),i.jsx(hn,{color:d(a.data.styles,"color"),setColor:g("color")})),m(r("link_color"),i.jsx(hn,{color:d(a.data.styles,"linkColor"),setColor:g("linkColor")})),m(r("align"),i.jsx("div",{className:"flex justify-center items-center",children:[{icon:o.faAlignLeft,value:"left"},{icon:o.faAlignCenter,value:"center"},{icon:o.faAlignRight,value:"right"}].map(({icon:e,value:t})=>i.jsx("div",{className:Mt(d(a.data.contentStyles,"textAlign")===t?"align-style-item-active":"align-style-item-un_active","align-style-item"),onClick:()=>(e=>{const t=s(a.data);t.contentStyles[l]={...t.contentStyles[l],textAlign:e},u(t)})(t),children:i.jsx(n.FontAwesomeIcon,{icon:e,className:"tag-style-size"})},t))})),m(r("separator"),i.jsx(t.Input,{value:b,onChange:e=>S("separator",e.target.value),placeholder:" | "})),i.jsx("div",{className:"right-setting-block-item-title margin-top-18",children:r("padding_settings")}),i.jsx(bn,{padding:{paddingTop:d(a.data.contentStyles,"paddingTop"),paddingRight:d(a.data.contentStyles,"paddingRight"),paddingLeft:d(a.data.contentStyles,"paddingLeft"),paddingBottom:d(a.data.contentStyles,"paddingBottom")},setPadding:e=>{const t=s(a.data);t.contentStyles[l]={...t.contentStyles[l],...e},u(t)}}),i.jsx("div",{className:"card-item-title margin-top-18",children:r("spacing")}),i.jsx(bn,{padding:{paddingTop:d(a.data.styles,"paddingTop"),paddingRight:d(a.data.styles,"paddingRight"),paddingLeft:d(a.data.styles,"paddingLeft"),paddingBottom:d(a.data.styles,"paddingBottom")},setPadding:p})]})},On=({imageUploadEndpoint:t,headers:n={},companyId:o,imageUploadQueryParams:a,imageUploadCompanyField:i="companyId"}={})=>{const l=!!t;return{uploadImageFile:e.useCallback(async e=>{if(!l)return console.error("[useImageUpload] No image upload endpoint configured"),null;if(!e)return console.error("[useImageUpload] No file provided"),null;if(!e.type.startsWith("image/"))return console.error("[useImageUpload] File is not an image:",e.type),null;if(e.size>10485760)return console.error("[useImageUpload] File too large:",e.size,"bytes"),null;const r=await(async(e,t,n,o={},a={})=>{if(!e)return console.error("[API Service] No image upload endpoint configured"),null;if(!t)return console.error("[API Service] No file provided for upload"),null;const{queryParams:i={},companyField:l="companyId"}=a;try{const a=new FormData;a.append("file",t),n&&("comment"===l?a.append("comment",n):a.append("companyId",n));let r=e;if(i&&Object.keys(i).length>0){const t="undefined"!=typeof window&&window.location?.origin?window.location.origin:"http://localhost",n=new URL(e,t);Object.entries(i).forEach(([e,t])=>{null!=t&&n.searchParams.set(e,String(t))}),r=n.toString()}const s={...o};Object.keys(s).forEach(e=>{"content-type"===e.toLowerCase()&&delete s[e]});const c=await fetch(r,{method:"POST",headers:{...s},body:a});if(!c.ok)return console.error("[API Service] Image upload failed:",c.status,c.statusText),null;const d=await c.json();if(d&&!1===d.success)return console.error("[API Service] Upload API returned error:",d.error),null;if(d&&"string"==typeof d.url&&d.url.trim())return d.url.trim();const p=d?.data?.url;return p&&"string"==typeof p?p.trim():(console.error("[API Service] Upload API returned no URL"),null)}catch(e){return console.error("[API Service] Error uploading image:",e),null}})(t,e,o,n,{queryParams:a,companyField:i});return r},[l,t,n,o,a,i]),isConfigured:l}},Hn=()=>{const{currentItem:a,previewMode:l,templateData:r,apiConfig:c}=e.useContext(O),{t:d}=Ft(),{containerBlock:p,containerType:u,contentIndex:m}=$n(),g=p?.columnProducts?.[m]??null,{findStyleItem:y,cardItemElement:h,inputChange:b,updateItemStyles:f}=jn(),k=e.useRef(null),[_,x]=e.useState(!1),v=e.useMemo(()=>({columnIndex:m,columnProduct:g}),[m,g]),C=e.useMemo(()=>We(u,r,v),[u,r,v]),{uploadImageFile:w,isConfigured:S}=On({imageUploadEndpoint:c?.imageUploadEndpoint,headers:c?.headers||{},companyId:c?.companyId,imageUploadQueryParams:c?.imageUploadQueryParams,imageUploadCompanyField:c?.imageUploadCompanyField}),j=e=>{const t=s(a.data);t.contentStyles[l]={...t.contentStyles[l],...e},f(t)};return i.jsxs("div",{className:"margin-y-30",children:[(()=>{const{linkURL:e}=a.data,n=qe(a.data);return i.jsxs(i.Fragment,{children:[i.jsx("div",{className:"right-setting-block-item-title",children:d("image_action")}),h(d("action_type"),i.jsxs("div",{className:"ee-image-action-type-row",children:[i.jsx("span",{className:Mt("link-tag",!n&&"ee-image-link-tag-inactive"),children:d("link")}),i.jsx(t.Switch,{checked:n,onChange:e=>{const t=s(a);t.data.linkEnabled=Boolean(e),f(t.data)},className:Mt(n?"bg-sky-500":"bg-gray-400")})]})),n?i.jsxs(i.Fragment,{children:[i.jsx("div",{className:"card-item-title",children:d("link_url")}),i.jsx("div",{className:"margin-top-6",children:i.jsx(t.Input,{addonBefore:"https://",value:e??"",onChange:e=>{const t=e.target.value??"",n=s(a);n.data.linkURL=t,f(n.data)},placeholder:d("link_url_placeholder")})})]}):null]})})(),(()=>{const{src:e,alt:l}=a.data,c="string"==typeof e&&/^\{\{\w+\}\}$/.test(e.trim())?String(e).replace(/\{\{|\}\}/g,"").trim():"",p=r&&c?Me(r,c,v):null,u=null==p||String(p).startsWith("{{")?e||"":p,m=e=>t=>{const n=s(a),o=t.target.value;n.data[e]=o,f(n.data)},g=e=>{const t=s(a);t.data.src=e,f(t.data)};return i.jsxs(i.Fragment,{children:[i.jsx("div",{className:"right-setting-block-item-title",children:d("image_settings")}),i.jsx("div",{className:"card-item",children:i.jsxs("div",{className:"width-full",children:[i.jsx("div",{className:"card-item-title",children:d("image_upload")}),i.jsx("input",{ref:k,type:"file",accept:"image/*",className:"ee-image-upload-input-hidden",onChange:async e=>{const n=e.target.files?.[0];if(n){if(!S)return t.message.error(d("image_upload_not_configured")||"Image upload not configured"),console.warn("[ImageStyleSettings] Image upload endpoint not configured"),void(e.target.value="");x(!0);try{const e=await w(n);e?(g(e),t.message.success(d("image_uploaded")||"Image uploaded successfully")):t.message.error(d("image_upload_failed")||"Failed to upload image")}catch(e){console.error("[ImageStyleSettings] Upload error:",e),t.message.error(d("image_upload_error")||"Error uploading image")}finally{x(!1),e.target.value=""}}},disabled:_}),i.jsx(t.Spin,{spinning:_,children:i.jsxs("div",{role:"button",tabIndex:0,className:"ee-image-upload-trigger",onClick:()=>{k.current?.click()},onDrop:async e=>{e.preventDefault(),e.stopPropagation();const n=e.dataTransfer?.files?.[0];if(n?.type?.startsWith("image/")){if(!S)return t.message.error(d("image_upload_not_configured")||"Image upload not configured"),void console.warn("[ImageStyleSettings] Image upload endpoint not configured");x(!0);try{const e=await w(n);e?(g(e),t.message.success(d("image_uploaded")||"Image uploaded successfully")):t.message.error(d("image_upload_failed")||"Failed to upload image")}catch(e){console.error("[ImageStyleSettings] Upload error:",e),t.message.error(d("image_upload_error")||"Error uploading image")}finally{x(!1),k.current.value=""}}},onDragOver:e=>{e.preventDefault(),e.stopPropagation()},style:{opacity:_?.6:1,cursor:_?"not-allowed":"pointer"},children:[i.jsx(n.FontAwesomeIcon,{icon:o.faCloudUploadAlt,className:"ee-image-upload-icon"}),i.jsx("span",{children:_?d("uploading")||"Uploading...":d("image_upload_click")})]})})]})}),C.length>0&&h(d("image_source_variable"),i.jsx(t.Select,{className:"ee-variable-select width-full",placeholder:d("image_source_variable"),allowClear:!0,value:"string"==typeof e&&/^\{\{\w+\}\}$/.test(String(e).trim())?String(e).trim():void 0,onChange:e=>g(e??""),getPopupContainer:()=>document.querySelector(".right-settings")||document.body,options:C.map(e=>({value:e.value,label:d(e.labelKey)}))})),i.jsx("div",{className:"card-item",children:i.jsxs("div",{className:"width-full",children:[i.jsx("div",{className:"card-item-title",children:d("image_url")}),i.jsx("div",{className:"margin-top-6",children:i.jsx(t.Input,{value:u,onChange:m("src"),placeholder:"https://..."})})]})}),i.jsx("div",{className:"card-item",children:i.jsxs("div",{className:"width-full",children:[i.jsx("div",{className:"card-item-title",children:d("image_alt")}),i.jsx("div",{className:"margin-top-6",children:i.jsx(t.Input,{value:l||"",onChange:m("alt")})})]})})]})})(),(()=>{const e=y(a.data.styles,"width"),r=y(a.data.styles,"borderRadius"),c="number"==typeof r?r:parseInt(String(r||"").replace("px",""),10)||0,p=y(a.data.contentStyles,"textAlign");return i.jsxs(i.Fragment,{children:[i.jsx("div",{className:"right-setting-block-item-title",children:d("image_styles")}),h(d("width_auto"),i.jsx(t.Switch,{checked:"auto"===e,className:Mt("auto"===e?"bg-sky-500":"bg-gray-400"),onChange:()=>{const t="auto"===e?"100%":"auto";b("width")(t)}})),"auto"!==e&&i.jsx(t.Slider,{value:Number(e.replace("%","")),onChange:e=>b("width")(e+"%")}),h(d("border_radius"),i.jsx(t.InputNumber,{min:0,className:"input-width",addonAfter:"px",value:c,onChange:e=>b("borderRadius")(Number(e)||0)})),h(d("align"),i.jsx("div",{className:"flex justify-center items-center",children:[{icon:o.faAlignLeft,value:"left"},{icon:o.faAlignCenter,value:"center"},{icon:o.faAlignRight,value:"right"},{icon:o.faAlignJustify,value:"justify"}].map(({icon:e,value:t})=>i.jsx("div",{className:Mt(p===t?"align-style-item-active":"align-style-item-un_active","align-style-item"),onClick:()=>(e=>{const t=s(a.data);t.contentStyles[l]={...t.contentStyles[l],textAlign:e},f(t)})(t),children:i.jsx(n.FontAwesomeIcon,{icon:e,className:"tag-style-size"})},t))})),i.jsx("div",{className:"card-item-title",children:d("padding_settings")}),i.jsx(bn,{padding:{paddingTop:y(a.data.contentStyles,"paddingTop"),paddingRight:y(a.data.contentStyles,"paddingRight"),paddingLeft:y(a.data.contentStyles,"paddingLeft"),paddingBottom:y(a.data.contentStyles,"paddingBottom")},setPadding:j})]})})()]})},Kn=()=>{const{currentItem:n}=e.useContext(O),{t:o}=Ft(),{findStyleItem:a,cardItemElement:l,updateItemStyles:r}=jn(),{src:c,alt:d,linkURL:p}=n.data,u=a(n.data.styles,"width")??64,m=a(n.data.styles,"borderRadius"),g="50%"===m?50:parseInt(String(m).replace("px",""),10)||0;return i.jsxs("div",{className:"margin-y-30",children:[i.jsx("div",{className:"right-setting-block-item-title",children:o("avatar_image")}),l(o("image_url"),i.jsx(t.Input,{addonBefore:"https://",value:c,onChange:e=>{const t=s(n.data);t.src=e.target.value??"",r(t)}})),l(o("image_alt"),i.jsx(t.Input,{value:d,onChange:e=>{const t=s(n.data);t.alt=e.target.value??"",r(t)},placeholder:"Avatar"})),l(o("link_url"),i.jsx(t.Input,{addonBefore:"https://",value:p,onChange:e=>{const t=s(n.data);t.linkURL=e.target.value??"",r(t)},placeholder:o("link_url_placeholder")})),i.jsx("div",{className:"right-setting-block-item-title margin-top-18",children:o("image_styles")}),l(o("width"),i.jsx(t.InputNumber,{min:16,max:256,value:"number"==typeof u?u:64,onChange:e=>{const t=s(n.data);t.styles.desktop||(t.styles.desktop={}),t.styles.desktop.width=e,r(t)},addonAfter:"px"})),l(o("avatar_border_radius"),i.jsx(t.InputNumber,{min:0,max:50,value:g,onChange:e=>{const t=s(n.data);t.styles.desktop||(t.styles.desktop={}),t.styles.desktop.borderRadius=50===e?"50%":`${e}px`,r(t)},addonAfter:50===g?"%":"px"})),i.jsx("div",{className:"right-setting-block-item-title margin-top-18",children:o("padding_settings")}),i.jsx(bn,{padding:{paddingTop:a(n.data.contentStyles,"paddingTop"),paddingRight:a(n.data.contentStyles,"paddingRight"),paddingLeft:a(n.data.contentStyles,"paddingLeft"),paddingBottom:a(n.data.contentStyles,"paddingBottom")},setPadding:e=>{const t=s(n.data);t.contentStyles||(t.contentStyles={desktop:{},mobile:{}}),t.contentStyles.desktop={...t.contentStyles.desktop,...e},r(t)}})]})},zn="https://s.magecdn.com/social",Vn=()=>{const{currentItem:a,previewMode:l}=e.useContext(O),{t:r}=Ft(),{findStyleItem:d,paddingChange:p,updateItemStyles:u,cardItemElement:m}=jn(),{list:g}=a.data,[y,h]=e.useState(null),[b,f]=e.useState(!1),[k,_]=e.useState(null),x=e.useRef(null),v=[{image:`${zn}/tc-facebook.svg`,title:"Facebook",linkURL:""},{image:`${zn}/tc-github.svg`,title:"Github",linkURL:""},{image:`${zn}/tc-linkedin.svg`,title:"LinkedIn",linkURL:""},{image:`${zn}/tc-instagram.svg`,title:"Instagram",linkURL:""},{image:`${zn}/tc-tiktok.svg`,title:"TikTok",linkURL:""},{image:`${zn}/tc-x.svg`,title:"Twitter",linkURL:""},{image:`${zn}/tc-youtube.svg`,title:"YouTube",linkURL:""}],C=(e,t)=>{const n=s(a);n.data={...n.data,[e]:t},u(n.data)},w=e.useCallback(c(e=>{e.preventDefault();const t=x.current,n=Array.from(t.childNodes).indexOf(e.target);if(-1===n)return;const o=k,a=s(g);o!==n&&([a[n],a[o]]=[a[o],a[n]],_(n),C("list",a))},50),[y,k]),S=e=>{const t=s(a.data);t.contentStyles[l]={...t.contentStyles[l],...e},u(t)},j=e=>{const t=s(a.data);t.imageWidth=e,u(t)};return i.jsxs("div",{className:"margin-y-30",children:[(()=>{const e=d(a.data.contentStyles,"textAlign"),c=a.data.imageWidth;return i.jsxs(i.Fragment,{children:[i.jsxs("div",{className:"right-setting-block-item-title",children:[" ",r("social_link_settings")]}),m(r("align"),i.jsx("div",{className:"flex justify-center items-center",children:[{icon:o.faAlignLeft,value:"left"},{icon:o.faAlignCenter,value:"center"},{icon:o.faAlignRight,value:"right"},{icon:o.faAlignJustify,value:"justify"}].map(({icon:t,value:o})=>i.jsx("div",{className:Mt(e===o?"align-style-item-active":"align-style-item-un_active","align-style-item"),onClick:()=>(e=>{const t=s(a.data);t.contentStyles[l]={...t.contentStyles[l],textAlign:e},u(t)})(o),children:i.jsx(n.FontAwesomeIcon,{icon:t,className:"tag-style-size"})},o))})),m(r("social_link_size"),i.jsx(t.InputNumber,{min:0,className:"input-width",addonAfter:"px",value:c,onChange:j})),i.jsx("div",{className:"card-item-title margin-top-18",children:r("social_links")}),i.jsx("div",{ref:x,onDragOver:w,className:"margin-top-12",onDragStart:e=>{h(e.target),f(!0),_(e.target.dataset.index)},onDragEnd:()=>{y.childNodes[0].classList.remove("social-link-item-current"),h(null),f(!1),_(null)},children:g.map((e,a)=>{const{image:l,title:r,linkURL:s}=e;return i.jsx("div",{"data-index":a,draggable:!0,className:Mt("social-link-item","cursor-grab",b&&"social-link-item-drag_start",k===a?"social-link-item-current":"border-transparent"),children:i.jsxs("div",{className:"social-link-item-content",children:[i.jsxs("div",{className:"flex items-center justify-between",children:[i.jsxs("div",{className:"flex items-center",children:[i.jsx("img",{src:l,alt:r,className:"social-link-item-img"}),i.jsx("div",{className:"font-semibold",children:r})]}),i.jsx("div",{className:"flex items-center",children:i.jsx("div",{className:"social-link-item-icon social-link-item-icon-slate",onClick:()=>{C("list",g.filter((e,t)=>t!==a))},children:i.jsx(n.FontAwesomeIcon,{icon:o.faTrash,className:"social-link-item-icon-svg social-link-item-icon-svg-deep"})})})]}),i.jsx("div",{className:"margin-top-12 relative",children:i.jsx(t.Input,{addonBefore:"https://",value:s||"",onChange:e=>C("list",g.map((t,n)=>n===a?{...t,linkURL:e.target.value}:t))})})]})},a)})}),i.jsx("div",{className:"card-item-title margin-top-18",children:r("add_social_link")}),i.jsx("div",{className:"social-link-add margin-top-12",children:v.map((e,t)=>{const{image:n,title:o}=e;return i.jsx("img",{src:n,alt:o,className:"social-link-add-img",onClick:()=>C("list",g.concat(e))},t)})}),i.jsxs("div",{className:"card-item-title margin-top-18",children:[" ",r("spacing")]}),i.jsx(bn,{padding:{paddingTop:d(a.data.styles,"paddingTop"),paddingRight:d(a.data.styles,"paddingRight"),paddingLeft:d(a.data.styles,"paddingLeft"),paddingBottom:d(a.data.styles,"paddingBottom")},setPadding:p})]})})(),i.jsxs(i.Fragment,{children:[i.jsxs("div",{className:"right-setting-block-item-title",children:[" ",r("padding_settings")]}),i.jsx(bn,{padding:{paddingTop:d(a.data.contentStyles,"paddingTop"),paddingRight:d(a.data.contentStyles,"paddingRight"),paddingLeft:d(a.data.contentStyles,"paddingLeft"),paddingBottom:d(a.data.contentStyles,"paddingBottom")},setPadding:S})]})]})},Wn=()=>{const{currentItem:t}=e.useContext(O);return i.jsxs(i.Fragment,{children:["column"===t?.data.key&&i.jsx(Pn,{}),"text"===t?.data.key&&i.jsx(Dn,{}),"button"===t?.data.key&&i.jsx(Mn,{}),"divider"===t?.data.key&&i.jsx(En,{}),"spacer"===t?.data.key&&i.jsx(Un,{}),"menu"===t?.data.key&&i.jsx(Fn,{}),"image"===t?.data.key&&i.jsx(Hn,{}),"avatar"===t?.data.key&&i.jsx(Kn,{}),"social_link"===t?.data.key&&i.jsx(Vn,{})]})};var qn={presets:[{id:"preset_header",presetName:"Header",nameKey:"preset_header",containerType:"none",block:{name:"Container",key:"column",type:"full",containerType:"none",styles:{key:"column",desktop:{backgroundColor:"transparent",paddingTop:0,paddingLeft:0,paddingRight:0,paddingBottom:0,contentBackground:"#fff"},mobile:{}},isPreset:!0,children:[{name:"Content",key:"content",width:"100%",styles:{key:"column",desktop:{backgroundColor:"transparent",paddingTop:0,paddingLeft:0,paddingRight:0,paddingBottom:0,contentBackground:"transparent"},mobile:{}},children:[{name:"Image",key:"image",src:"{{LogoUrl}}",alt:"Image",type:"link",linkURL:"",contentStyles:{desktop:{paddingTop:12,paddingBottom:12,paddingLeft:12,paddingRight:12,textAlign:"center"},mobile:{}},styles:{desktop:{width:"50%"},mobile:{}}},{name:"Container",key:"column",type:"full",containerType:"none",width:"50%",styles:{key:"column",desktop:{backgroundColor:"transparent",paddingTop:0,paddingLeft:0,paddingRight:0,paddingBottom:0,contentBackground:"transparent"},mobile:{}},children:[{name:"Content",key:"content",width:"100%",styles:{key:"column",desktop:{backgroundColor:"transparent",paddingTop:0,paddingLeft:0,paddingRight:0,paddingBottom:0,contentBackground:"transparent"},mobile:{}},children:[{name:"Text",key:"text",text:'<span style="direction: ltr; font-size: 14px; font-family: Verdana; color: #333333"><a target="_blank" href="https://example.com">Shop</a> | <a target="_blank" href="https://example.com">Frey </a> | <a target="_blank" href="https://example.com">Our Story</a></span>',type:"p",contentType:"static",styles:{desktop:{fontSize:14,fontFamily:"Verdana",color:"#333333",lineHeight:"120%",paddingTop:25,paddingBottom:15,paddingLeft:5,paddingRight:5,textAlign:"center"},mobile:{}},isPreset:!0},{name:"Image",key:"image",src:"{{HeroBanner}}",alt:"Image",type:"link",linkURL:"",contentStyles:{desktop:{paddingTop:12,paddingBottom:12,paddingLeft:12,paddingRight:12,textAlign:"center"},mobile:{}},styles:{desktop:{width:"auto"},mobile:{}}}]}]}]}]}},{id:"navigation_bar",presetName:"Navigation Bar",nameKey:"preset_navigation_bar",containerType:"none",block:{name:"Text",key:"text",text:'<span style="direction: ltr; font-size: 14px; font-family: Verdana; color: #333333"><a target="_blank" href="https://example.com">Shop</a> | <a target="_blank" href="https://example.com">Frey </a> | <a target="_blank" href="https://example.com">Our Story</a></span>',type:"p",contentType:"static",styles:{desktop:{fontSize:14,fontFamily:"Verdana",color:"#333333",lineHeight:"120%",paddingTop:25,paddingBottom:15,paddingLeft:5,paddingRight:5,textAlign:"center"},mobile:{}},isPreset:!0}},{id:"product_single",nameKey:"preset_product_single",containerType:"product",presetName:"Hero Product",block:{name:"Container",key:"column",type:"full",containerType:"product",styles:{key:"column",desktop:{backgroundColor:"transparent",paddingTop:null,paddingLeft:null,paddingRight:null,paddingBottom:null,contentBackground:"#fff"},mobile:{}},isPreset:!0,productRole:"main",columnProducts:[{id:"product-1",name:"Abundance Butterfly Diamond Ring",description:"The Maia Diamond Ring features round diamonds set along a delicate gold band, creating a refined and minimalistic look. Its versatile design makes it perfect for everyday wear or for layering with other rings.",image:"https://www.psylish.com/cdn/shop/files/IMG_4632.jpg?v=1773123202&width=1220",link:"https://www.psylish.com",price:2e3,currency:"USD",old_price:null,new_price:null}],children:[{name:"Content",key:"content",width:"100%",styles:{key:"column",desktop:{backgroundColor:"transparent",paddingTop:null,paddingLeft:null,paddingRight:null,paddingBottom:null,contentBackground:"transparent"},mobile:{}},children:[{name:"Image",key:"image",src:"{{ProductImage}}",alt:"Image",type:"link",linkURL:"",contentStyles:{desktop:{paddingTop:null,paddingBottom:null,paddingLeft:null,paddingRight:null,textAlign:"center"},mobile:{}},styles:{desktop:{width:"auto"},mobile:{}}},{name:"Text",key:"text",text:'<span style="direction: ltr; font-size: 20px; font-family: sans-serif"><p>{{ProductName}}</p></span>',type:"h2",contentType:"static",styles:{desktop:{fontSize:20,fontFamily:"sans-serif",lineHeight:"120%",paddingTop:12,paddingBottom:null,paddingLeft:12,paddingRight:12,textAlign:"left",fontWeight:"bold"},mobile:{}}},{name:"Text",key:"text",text:'<span style="direction: ltr; font-size: 16px; font-family: sans-serif">{{ProductCurrency}} {{ProductPrice}}<br></span>',type:"p",contentType:"static",styles:{desktop:{fontSize:16,fontFamily:"sans-serif",lineHeight:"140%",paddingTop:null,paddingBottom:6,paddingLeft:12,paddingRight:12,textAlign:"left"},mobile:{}}},{name:"Text",key:"text",text:"<p>{{ProductDescription}}</p>",type:"p",contentType:"static",styles:{desktop:{fontSize:14,fontFamily:"sans-serif",lineHeight:"120%",paddingTop:12,paddingBottom:12,paddingLeft:12,paddingRight:12,textAlign:"left"},mobile:{}}},{name:"Button",key:"button",text:"Shop Now",type:"link",linkURL:"",contentStyles:{desktop:{textAlign:"center",paddingTop:12,paddingBottom:12,paddingLeft:null,paddingRight:null},mobile:{}},styles:{desktop:{width:"100%",fontSize:16,lineHeight:"140%",borderRadius:4,fontFamily:"sans-serif",paddingTop:10,paddingBottom:10,paddingLeft:null,paddingRight:null,backgroundColor:"#263d2d",color:"#fff",display:"inline-block"},mobile:{}}},{name:"Divider",key:"divider",contentStyles:{desktop:{paddingTop:2,paddingBottom:12,paddingLeft:12,paddingRight:12,textAlign:"center"},mobile:{}},styles:{desktop:{width:"100%",borderTopStyle:"solid",borderTopColor:"#ccc",borderTopWidth:1,display:"inline-block",verticalAlign:"middle"},mobile:{}}}]}]}},{id:"product_two_column",presetName:"Additional Products",nameKey:"preset_product_two_column",containerType:"product",block:{name:"Container",key:"column",type:"1-1",containerType:"none",styles:{key:"column",desktop:{backgroundColor:"transparent",paddingTop:12,paddingLeft:6,paddingRight:6,paddingBottom:12,contentBackground:"#fff"},mobile:{}},isPreset:!0,columns:2,columnProducts:[null,null],children:[{name:"Content",key:"content",width:"50%",styles:{key:"column",desktop:{backgroundColor:"transparent",paddingTop:null,paddingLeft:6,paddingRight:3,paddingBottom:null,contentBackground:"transparent"},mobile:{}},children:[{name:"Container",key:"column",type:"full",containerType:"product",styles:{key:"column",desktop:{backgroundColor:"transparent",paddingTop:null,paddingLeft:null,paddingRight:null,paddingBottom:null,contentBackground:"#fff"},mobile:{}},isPreset:!0,productRole:"additional",columnProducts:[{id:"product-2",name:"Heartline Diamond Ring",description:"The Sariah Diamond Earrings feature round diamonds in a classic hoop design that curves elegantly around the lobe. Their minimalist silhouette makes them perfect for everyday wear or adding a touch of sparkle to layered look.",image:"https://www.psylish.com/cdn/shop/files/Psylish3.0_15.png?v=1770880382&width=1220",link:"https://www.psylish.com/",price:1e3,currency:"USD",old_price:1200,new_price:1e3}],children:[{name:"Content",key:"content",width:"100%",styles:{key:"column",desktop:{backgroundColor:"transparent",paddingTop:null,paddingLeft:null,paddingRight:null,paddingBottom:null,contentBackground:"transparent"},mobile:{}},children:[{name:"Image",key:"image",src:"{{ProductImage}}",alt:"Image",type:"link",linkURL:"",contentStyles:{desktop:{paddingTop:0,paddingBottom:0,paddingLeft:0,paddingRight:0,textAlign:"center"},mobile:{}},styles:{desktop:{width:"auto"},mobile:{}}},{name:"Text",key:"text",text:'<span style="direction: ltr; font-size: 20px; font-family: Arial"><p>{{ProductName}}</p></span>',type:"h2",contentType:"static",styles:{desktop:{fontSize:20,fontFamily:"Arial",lineHeight:"140%",paddingTop:12,paddingBottom:0,paddingLeft:0,paddingRight:0,textAlign:"left",fontWeight:"bold"},mobile:{}}},{name:"Text",key:"text",text:'<span style="direction: ltr; font-size: 16px; font-family: Arial"><strike>{{ProductOldPrice}}</strike> {{ProductNewPrice}}<br></span>',type:"p",contentType:"static",styles:{desktop:{fontSize:16,fontFamily:"Arial",lineHeight:"140%",paddingTop:2,paddingBottom:2,paddingLeft:0,paddingRight:0,textAlign:"left"},mobile:{}}},{name:"Text",key:"text",text:"<p>{{ProductDescription}}</p>",type:"p",contentType:"static",styles:{desktop:{fontSize:14,fontFamily:"sans-serif",lineHeight:"140%",paddingTop:12,paddingBottom:12,paddingLeft:0,paddingRight:0,textAlign:"left"},mobile:{}}},{name:"Button",key:"button",text:"Add to Cart",type:"link",linkURL:"",contentStyles:{desktop:{textAlign:"center",paddingTop:12,paddingBottom:12,paddingLeft:0,paddingRight:0},mobile:{}},styles:{desktop:{width:"100%",fontSize:16,lineHeight:"140%",borderRadius:4,fontFamily:"sans-serif",paddingTop:10,paddingBottom:10,paddingLeft:0,paddingRight:0,backgroundColor:"#263d2d",color:"#fff",display:"inline-block"},mobile:{}}}]}]}]},{name:"Content",key:"content",width:"50%",styles:{key:"column",desktop:{backgroundColor:"transparent",paddingTop:null,paddingLeft:3,paddingRight:6,paddingBottom:null,contentBackground:"transparent"},mobile:{}},children:[{name:"Container",key:"column",type:"full",containerType:"product",styles:{key:"column",desktop:{backgroundColor:"transparent",paddingTop:null,paddingLeft:null,paddingRight:null,paddingBottom:null,contentBackground:"#fff"},mobile:{}},isPreset:!0,productRole:"additional",columnProducts:[{id:"product-3",name:"Lynx Heart Diamond Ring",description:"The Sariah Diamond Earrings feature round diamonds in a classic hoop design that curves elegantly around the lobe. Their minimalist silhouette makes them perfect for everyday wear or adding a touch of sparkle to layered look.",image:"https://www.psylish.com/cdn/shop/files/Psylish3.0_48.png?v=1770881768&width=1220",link:"https://www.psylish.com/",price:900,currency:"USD",old_price:1200,new_price:900}],children:[{name:"Content",key:"content",width:"100%",styles:{key:"column",desktop:{backgroundColor:"transparent",paddingTop:null,paddingLeft:null,paddingRight:null,paddingBottom:null,contentBackground:"transparent"},mobile:{}},children:[{name:"Image",key:"image",src:"{{ProductImage}}",alt:"Image",type:"link",linkURL:"",contentStyles:{desktop:{paddingTop:0,paddingBottom:0,paddingLeft:0,paddingRight:0,textAlign:"center"},mobile:{}},styles:{desktop:{width:"auto"},mobile:{}}},{name:"Text",key:"text",text:'<span style="direction: ltr; font-size: 20px; font-family: Arial"><p>{{ProductName}}</p></span>',type:"h2",contentType:"static",styles:{desktop:{fontSize:20,fontFamily:"Arial",lineHeight:"140%",paddingTop:12,paddingBottom:0,paddingLeft:0,paddingRight:0,textAlign:"left",fontWeight:"bold"},mobile:{}}},{name:"Text",key:"text",text:'<span style="direction: ltr; font-size: 16px; font-family: Arial"><strike>{{ProductOldPrice}}</strike> {{ProductNewPrice}}<br></span>',type:"p",contentType:"static",styles:{desktop:{fontSize:16,fontFamily:"Arial",lineHeight:"140%",paddingTop:2,paddingBottom:2,paddingLeft:0,paddingRight:0,textAlign:"left"},mobile:{}}},{name:"Text",key:"text",text:"<p>{{ProductDescription}}</p>",type:"p",contentType:"static",styles:{desktop:{fontSize:14,fontFamily:"sans-serif",lineHeight:"140%",paddingTop:12,paddingBottom:12,paddingLeft:0,paddingRight:0,textAlign:"left"},mobile:{}}},{name:"Button",key:"button",text:"Add to Cart",type:"link",linkURL:"",contentStyles:{desktop:{textAlign:"center",paddingTop:12,paddingBottom:12,paddingLeft:0,paddingRight:0},mobile:{}},styles:{desktop:{width:"100%",fontSize:16,lineHeight:"140%",borderRadius:4,fontFamily:"sans-serif",paddingTop:10,paddingBottom:10,paddingLeft:20,paddingRight:20,backgroundColor:"#263d2d",color:"#fff",display:"inline-block"},mobile:{}}}]}]}]}]}},{id:"preset_discount",presetName:"Discount",nameKey:"preset_discount",containerType:"discount",block:{name:"Container",key:"column",type:"full",containerType:"discount",styles:{key:"column",desktop:{backgroundColor:"transparent",paddingTop:0,paddingLeft:0,paddingRight:0,paddingBottom:0,contentBackground:"#ffa7aa"},mobile:{}},isPreset:!0,children:[{name:"Content",key:"content",width:"100%",styles:{key:"column",desktop:{backgroundColor:"transparent",paddingTop:0,paddingLeft:0,paddingRight:0,paddingBottom:0,contentBackground:"transparent"},mobile:{}},children:[{name:"Text",key:"text",text:'<div style="text-align: center;"><font face="Arial">Use <b>{{DiscountCode}}</b> for <b>{{DiscountValue}}</b> OFF. Expires on {{ValidUntil}}</font></div>',type:"p",contentType:"static",styles:{desktop:{fontSize:14,fontFamily:"sans-serif",lineHeight:"120%",paddingTop:12,paddingBottom:12,paddingLeft:12,paddingRight:12,textAlign:"center"},mobile:{}}}]}]}},{id:"preset_footer",presetName:"Footer",nameKey:"preset_footer",containerType:"none",block:{name:"Container",key:"column",type:"full",containerType:"none",styles:{key:"column",desktop:{backgroundColor:"transparent",paddingTop:0,paddingLeft:0,paddingRight:0,paddingBottom:0,contentBackground:"#fff"},mobile:{}},isPreset:!0,children:[{name:"Content",key:"content",width:"100%",styles:{key:"column",desktop:{backgroundColor:"transparent",paddingTop:0,paddingLeft:0,paddingRight:0,paddingBottom:0,contentBackground:"transparent"},mobile:{}},children:[{name:"Image",key:"image",src:"{{FooterBanner}}",alt:"Image",type:"link",linkURL:"",contentStyles:{desktop:{paddingTop:12,paddingBottom:12,paddingLeft:12,paddingRight:12,textAlign:"center"},mobile:{}},styles:{desktop:{width:"auto"},mobile:{}}},{name:"Image",key:"image",src:"{{LogoUrl}}",alt:"Image",type:"link",linkURL:"",contentStyles:{desktop:{paddingTop:12,paddingBottom:12,paddingLeft:12,paddingRight:12,textAlign:"center"},mobile:{}},styles:{desktop:{width:"35%"},mobile:{}}},{name:"Text",key:"text",text:"<p><i><b>{{Tagline}}</b></i></p>",type:"p",contentType:"static",styles:{desktop:{fontSize:14,fontFamily:"Arial",lineHeight:"120%",paddingTop:2,paddingBottom:2,paddingLeft:12,paddingRight:12,textAlign:"center"},mobile:{}}},{name:"Text",key:"text",text:"<p>{{Address}}</p>",type:"p",contentType:"static",styles:{desktop:{fontSize:14,fontFamily:"Arial",lineHeight:"120%",paddingTop:2,paddingBottom:2,paddingLeft:12,paddingRight:12,textAlign:"center"},mobile:{}}},{name:"Social Link",key:"social_link",list:[{image:"https://s.magecdn.com/social/tc-facebook.svg",title:"Facebook",linkURL:"facebook.com/psylish"},{image:"https://s.magecdn.com/social/tc-x.svg",title:"Twitter",linkURL:"twitter.com/psylish"},{image:"https://s.magecdn.com/social/tc-instagram.svg",title:"Instagram",linkURL:"instagram.com/psylish"},{image:"https://s.magecdn.com/social/tc-linkedin.svg",title:"LinkedIn",linkURL:"linkedin.com/company/psylish"},{image:"https://s.magecdn.com/social/tc-tiktok.svg",title:"TikTok",linkURL:"www.tiktok.com/@psylish"},{image:"https://s.magecdn.com/social/tc-youtube.svg",title:"YouTube",linkURL:"www.youtube.com/@psylish"}],imageWidth:32,contentStyles:{desktop:{paddingTop:2,paddingBottom:12,paddingLeft:12,paddingRight:12,textAlign:"center"},mobile:{}},styles:{desktop:{paddingTop:4,paddingBottom:4,paddingLeft:6,paddingRight:6},mobile:{}},useCompanySocialLinks:!0},{name:"Divider",key:"divider",contentStyles:{desktop:{paddingTop:12,paddingBottom:2,paddingLeft:12,paddingRight:12,textAlign:"center"},mobile:{}},styles:{desktop:{width:"100%",borderTopStyle:"solid",borderTopColor:"#ccc",borderTopWidth:1,display:"inline-block",verticalAlign:"middle"},mobile:{}}},{name:"Text",key:"text",text:'<p><a href="#" style="color:#263d2d;text-decoration:underline">{{Website}}</a></p>',type:"p",contentType:"static",styles:{desktop:{fontSize:14,fontFamily:"Arial",lineHeight:"120%",paddingTop:2,paddingBottom:2,paddingLeft:12,paddingRight:12,textAlign:"center",color:"#263d2d",textDecoration:"underline"},mobile:{}}}]}]}}]};function Jn(e){if(!e||"object"!=typeof e)return e;const t={...e,id:p()};return Array.isArray(t.children)&&(t.children=t.children.map(Jn)),Array.isArray(t.columnProducts)&&(t.columnProducts=t.columnProducts.map(e=>e&&"object"==typeof e?{...e}:e)),t}const Gn={column:o.faColumns,text:o.faFont,button:o.faMinusSquare,divider:o.faGripLines,spacer:o.faArrowsAltV,menu:o.faBars,image:o.faImage,social_link:o.faShareAltSquare,product:o.faCube,header:o.faWindowMaximize,footer:o.faWindowMinimize,discount:o.faTag,avatar:o.faUserCircle},Yn={Header:"header",Footer:"footer",Discount:"discount","Navigation Bar":"menu"};function Zn(e){const t=Yn[e];return t&&Gn[t]?Gn[t]:Gn.product}const Qn=["ai_powered","components","presets"],Xn=["column","divider","spacer","button","image","avatar","social_link"];function eo(e,t,n){const o={ai_powered:[],components:[],presets:[]},a=function(e){return e?{ai_powered:["text"],components:Xn,presets:[]}:{ai_powered:[],components:["text",...Xn],presets:[]}}(n);qn.presets.forEach(e=>{o.presets.push({key:e.id,name:e.presetName,icon:Zn(e.presetName),isPreset:!0,getColumn:()=>function(e){const t=qn.presets.find(t=>t.id===e);return t?Jn(JSON.parse(JSON.stringify(t.block))):null}(e.id)})});for(const t of Qn){const i=a[t];i&&0!==i.length&&i.forEach(a=>{const i=e.find(e=>e.key===a);i&&("ai_powered"===t&&"text"===a&&n?o[t].push({...i,contentType:"dynamic",dynamicPrompt:"",dynamicSelectedContent:"",dynamicOptions:[],dynamicVariable:"",isPreset:!1}):o[t].push({...i,isPreset:!1}))})}return o}const to=({clearStyles:t})=>{const{setCurrentItem:a,setIsDragStart:l,setActionType:r,templateData:c,aiEnabled:d=!0}=e.useContext(O),{blockConfigsList:p}=In(),{t:u}=Ft(),m=eo(p,0,d),g=e=>{e.target.style.border="";const n=e.target.querySelector(".right-panel-block-inner");n&&n.classList.remove("right-panel-block-move"),setTimeout(()=>{l(!1),t&&t()},50)},y=e=>t=>{const n=e.isPreset?s(e.getColumn(u,c)):s(e);a({id:null,data:n,type:"add"}),l(!0),t.target.style.border="1px dashed var(--ee-primary)";const o=t.target.querySelector(".right-panel-block-inner");o&&o.classList.add("right-panel-block-move"),r("add")},h={ai_powered:u("ai_powered"),components:u("components"),presets:u("presets")};return i.jsx("div",{className:"right-panel-block-list",children:Qn.map(e=>{const t=m[e];return t&&0!==t.length?i.jsxs("div",{className:"right-panel-block-category",children:[i.jsx("div",{className:"right-panel-block-category-title",children:h[e]}),t.map(e=>(e=>i.jsx("div",{className:"right-panel-block-row",draggable:!0,onDragEnd:g,onDragStart:y(e),children:i.jsxs("div",{className:"right-panel-block-inner",children:[i.jsx("span",{className:"right-panel-block-drag-handle",title:u("drag_block_here"),children:i.jsx(n.FontAwesomeIcon,{icon:o.faGripVertical,className:"right-panel-block-drag-icon"})}),i.jsx("span",{className:"right-panel-block-separator","aria-hidden":!0}),i.jsx(n.FontAwesomeIcon,{icon:e.icon||Gn[e.key]||o.faFont,className:"right-panel-block-icon"}),i.jsx("span",{className:"right-panel-block-text",children:e.name}),d&&"text"===e.key&&!e.isPreset&&i.jsx("span",{className:"right-panel-block-ai-pill",children:"+ AI"})]})},e.key))(e))]},e):null})})},no="content",oo="styles",ao=a=>{const{clearStyles:l}=a,{currentItem:r,isDragStart:s,bodySettings:c,setBodySettings:d,setCurrentItem:p,setActionType:u,blockMap:m,rootOrder:g}=e.useContext(O),{t:y}=Ft(),{cardItemElement:h}=jn(),[b,k]=e.useState(no),_=e.useRef(null),x=()=>{if(!r?.id||!m[r.id])return[];const e=[r.id],t=new Set(e);let n=r.id;for(;;){const o=f(m,g,n);if(!o||t.has(o.containerId))break;e.unshift(o.containerId),t.add(o.containerId),n=o.containerId}return e.map(e=>({id:e,data:m[e]})).filter(e=>Boolean(e.data))},v=()=>{let e="Block";const t=r?.data.key;switch(t){case"text":e=y("text_settings");break;case"column":{const t=r?.data?.containerType;e=y("product"===t?"block_product":"container_settings");break}case"button":e=y("button_settings");break;case"divider":e=y("divider_settings");break;case"spacer":e=y("spacer_settings");break;case"menu":e=y("menu_settings");break;case"image":e=y("image_settings");break;case"avatar":e=y("avatar_settings");break;case"social_link":e=y("social_link_settings")}return e},C=e=>t=>{d({...c,styles:{...c.styles,[e]:t.hex}},"set_body_settings")},w="undefined"!=typeof window&&"product-variables"===window.__eeDragSource,S=r&&"edit"===r.type&&(!s||w);e.useLayoutEffect(()=>{if(!S)return;const e=_.current;e&&(e.scrollTop=0)},[S,r?.id]);return i.jsx("div",{ref:_,className:"right-settings default-scrollbar",onClick:e=>{e.stopPropagation()},children:S?i.jsxs(i.Fragment,{children:[i.jsxs("div",{className:"right-panel-block-settings-header",children:[i.jsx("button",{type:"button",className:"right-panel-back-btn",onClick:()=>p(null),"aria-label":"Back",children:i.jsx(n.FontAwesomeIcon,{icon:o.faChevronLeft})}),i.jsx("h2",{className:"right-setting-block-title right-panel-block-title-inline",children:v()})]}),i.jsx("div",{className:"right-panel-breadcrumb-bar","aria-label":"Selection path",children:x().map((t,n,o)=>{const a=n===o.length-1,l=(e=>{if(!e)return"";switch(e.key){case"column":{const t=e.containerType;return y("product"===t?"block_product":"discount"===t?"block_discount":"container")}case"text":return y("text");case"button":return y("button");case"image":return y("image");case"divider":return y("divider");case"spacer":return y("spacer");case"menu":return y("menu");case"avatar":return y("avatar");case"social_link":return y("social_link");case"empty":return y("drag_block_here");default:return e.name||"Block"}})(t.data);return i.jsxs(e.Fragment,{children:[a?i.jsx("span",{className:"right-panel-breadcrumb-current",children:l}):i.jsx("button",{type:"button",className:"right-panel-breadcrumb-btn",onClick:(r=t.id,e=>{e.preventDefault(),e.stopPropagation();const t=m[r];t&&(p({id:r,data:t,type:"edit"}),u("edit"))}),children:l}),!a&&i.jsx("span",{className:"right-panel-breadcrumb-separator",children:"›"})]},`${t.id||"crumb"}-${n}`);var r})}),i.jsx("div",{className:"right-panel-block-settings-form",children:i.jsx(Wn,{})})]}):i.jsxs(i.Fragment,{children:[i.jsxs("div",{className:"right-panel-tabs",children:[i.jsx("button",{type:"button",className:"right-panel-tab "+(b===no?"right-panel-tab-active":""),onClick:()=>k(no),children:y("content")}),i.jsx("button",{type:"button",className:"right-panel-tab "+(b===oo?"right-panel-tab-active":""),onClick:()=>k(oo),children:y("styles")})]}),i.jsxs("div",{className:"right-panel-tab-content",children:[b===no&&i.jsx(to,{clearStyles:l}),b===oo&&i.jsxs(i.Fragment,{children:[i.jsxs("section",{className:"right-panel-styles-section",children:[i.jsx("h3",{className:"right-panel-styles-section-title",children:y("global")}),i.jsxs("div",{className:"right-panel-styles-section-body",children:[h(y("text_color"),i.jsx(hn,{color:c.styles.color,setColor:C("color")})),h(y("email_theme_background_color"),i.jsx(hn,{color:c.styles.backgroundColor,setColor:C("backgroundColor")})),h(y("line_height"),i.jsx(t.InputNumber,{className:"input-width",addonAfter:"px",min:0,max:900,value:Number(c.contentWidth),onChange:e=>d({...c,contentWidth:e},"set_body_settings")}))]})]}),i.jsxs("section",{className:"right-panel-styles-section",children:[i.jsx("h3",{className:"right-panel-styles-section-title",children:y("text_and_headings")}),i.jsx("div",{className:"right-panel-styles-section-body",children:i.jsxs("div",{children:[i.jsx("div",{className:"pre_header",children:y("pre_header")}),i.jsx(t.Input,{className:"margin-top-12",value:c.preHeader,onChange:e=>d({...c,preHeader:e.target.value},"set_body_settings")}),i.jsx("div",{className:"pre_header-desc",children:y("pre_header_description")})]})})]})]})]})]})})},io=({language:t})=>{const{blockMap:n,rootOrder:o,setBlocks:a,currentItem:l,setCurrentItem:r,setIsDragStart:s,setLanguage:d,templateData:p}=e.useContext(O),{t:u}=Ft(),{getColumnConfig:y}=In(),h=e=>{if(!e||"object"!=typeof e)return e;const t=p?.content?.products,n=p?.catalogProducts,o=p?.content?.primaryProductId,a=Array.isArray(t)&&t.length>0?t:Array.isArray(n)&&n.length>0?n:Nn,i=o?a.find(e=>e.id===o):a[0],l=i?a.filter(e=>e?.id!==i.id):a,r=e=>{if(!e||"object"!=typeof e)return e;const t=Array.isArray(e.children)?e.children.map(r):e.children;if("column"!==e.key||"product"!==e.containerType||!i)return{...e,children:t};const n=Math.max(Array.isArray(t)?t.length:0,Array.isArray(e.columnProducts)?e.columnProducts.length:0,1),o="additional"===e.productRole?"additional":"main",a=Array.from({length:n},(e,t)=>"main"===o||0===l.length?i:l[t%l.length]);return{...e,children:t,columnProducts:a}};return r(e)};e.useEffect(()=>{d(t)},[t,d]);const b=()=>{const e=document.getElementsByClassName("block-drag-label-content");Array.from(e).forEach(e=>{e.children[0]&&(e.children[0].style.visibility="hidden")})},k=()=>{const e=document.getElementsByClassName("block-content-drag-label-content");Array.from(e).forEach(e=>{e.children[0]&&(e.children[0].style.visibility="hidden")})},_=()=>{document.querySelectorAll(".block-empty-content").forEach(e=>{e.style.borderStyle="",e.style.borderColor=""})},w=()=>{b(),k(),_()},j=e.useCallback(c(e=>{e.preventDefault(),e.stopPropagation();const{type:t}=e.target.dataset;switch(t){case"empty-block":b(),k(),e.target.style.border="1px dashed #2faade";break;case"drag-over-column":{k();const t=e.target.dataset.index,n=document.getElementsByClassName("block-drag-label-content");Array.from(n).forEach(e=>{Number(e.dataset.index)===Number(t)?e.children[0].style.visibility="visible":e.children[0].style.visibility="hidden"});break}case"block-item-move":{b();const t=e.target.dataset.dropKey,n=document.getElementsByClassName("block-content-drag-label-content");Array.from(n).forEach(e=>{e.dataset.dropKey===t?e.children[0].style.visibility="visible":e.children[0].style.visibility="hidden"});break}case"empty-block-item":b(),k();{const t=e.target.parentNode;t&&t.classList.contains("block-empty-content")&&(t.style.borderStyle="solid")&&(t.style.borderColor="var(--ee-primary)")}break;default:b(),k()}},30),[]),I=(e,t)=>{const{blockMap:n,removedId:o}=v(e,t.containerId,t.cellIndex,t.itemIndex);return{result:n,removedId:o}},N=(e,t,n,o)=>{const a=e[t];if(!a||a.cells[n].childrenIds.length>0)return e;const i=g(o("drag_block_here"));return{...e,[i.id]:i,[t]:{...a,cells:a.cells.map((e,t)=>t===n?{...e,childrenIds:[i.id]}:e)}}},T=(e,t,n)=>{if(!t||!n)return!1;if(t===n)return!0;const o=t=>{const a=e[t];if(!a||"column"!==a.key)return!1;for(const e of a.cells||[])for(const t of e.childrenIds||[]){if(t===n)return!0;if(o(t))return!0}return!1};return o(t)};return i.jsx(i.Fragment,{children:i.jsx("div",{className:"email-editor",onDragOver:j,onDrop:e=>{e.preventDefault(),e.stopPropagation();const{type:t}=e.target.dataset;s(!1);const i="undefined"!=typeof window?window.__eeDragItemData:null,c=()=>{"undefined"!=typeof window&&(window.__eeDragItemData=null,window.__eeDragSource=null)},d=i?"add":l?.type,p=i?m(i):l?.data;if(p){switch(t){case"empty-block":{const e="column"===p.key?p:y(p),t=h(e),{newBlockMap:o,rootId:i}=S(n,t);if(!i)return void c();a(o,[i],"add"),r({id:i,data:o[i],type:"edit"});break}case"empty-block-item":{_();const t=e.target.dataset.containerId,i=Number(e.target.dataset.cellIndex),s=Number(e.target.dataset.itemIndex);if(!t)return void c();let g={...n};if("add"===d){const e="column"===p.key?p:m(p),n=h(e),{newBlockMap:l,rootId:d}=S(g,n);if(!d)return void c();g=x(l,t,i,s,d),a(g,o,"add"),r({id:d,data:g[d],type:"edit"})}else{const e=l.id;if(T(g,e,t))return c(),void w();const n=f(g,o,e);if(!n)return void c();{const{result:e,removedId:o}=I(g,n);g=e?N(e,n.containerId,n.cellIndex,u):g,o&&(g=x(g,t,i,s,o))}a(g,o,"move"),r({...l,data:g[e]??l.data,type:"edit"})}break}case"drag-over-column":{const t=Number(e.target.dataset.index);let i,s=[...o],u={...n};if("add"===d){const e=m(p),n=h(e),{newBlockMap:o,rootId:a}=S(u,n);if(!a)return void c();u=o,s.splice(t,0,a),i={id:a,data:u[a],type:"edit"}}else{const e=l.id,n=o.indexOf(e);if(-1===n)return void c();s.splice(n,1),s.splice(t>n?t-1:t,0,e),i={...l,type:"edit"}}a(u,s,"move"),r(i),setTimeout(()=>{const e=document.getElementsByClassName("block-drag-label-content");Array.from(e).forEach(e=>{e.children[0]&&(e.children[0].style.visibility="hidden")})},30);break}case"block-item-move":{const t=e.target.dataset.dropKey;if(!t)return void c();const[i,s,y]=t.split(":"),b=Number(s),k=Number(y);let _,x={...n};if("add"===d){const e="column"===p.key?p:m(p),t=h(e),{newBlockMap:n,rootId:o}=S(x,t);if(!o)return void c();x=C(n,i,b,k,o),_={id:o,data:x[o],type:"edit"}}else{const e=l.id;if(T(x,e,i))return c(),void w();const t=f(x,o,e);if(!t)return void c();const{blockMap:n,removedId:a}=v(x,t.containerId,t.cellIndex,t.itemIndex);x=n;const r=x[t.containerId];if(r&&0===r.cells[t.cellIndex].childrenIds.length){const e=g(u("drag_block_here"));x={...x,[e.id]:e,[t.containerId]:{...r,cells:r.cells.map((n,o)=>o===t.cellIndex?{...n,childrenIds:[e.id]}:n)}}}let s=k;t.containerId===i&&t.cellIndex===b&&t.itemIndex<k&&(s=k-1),x=C(x,i,b,s,a),_={...l,type:"edit"}}a(x,o,"move"),r(_),setTimeout(()=>{const e=document.getElementsByClassName("block-content-drag-label-content");Array.from(e).forEach(e=>{e.children[0]&&(e.children[0].style.visibility="hidden")})},30);break}}c()}else c()},onDragLeave:e=>setTimeout(()=>{switch(e.target.dataset.type){case"empty-block":e.target.style.border="";break;case"empty-block-item":e.target.parentNode&&e.target.parentNode.classList.contains("block-empty-content")&&(e.target.parentNode.style.borderStyle="",e.target.parentNode.style.borderColor="")}},50),children:i.jsxs("div",{className:"email-editor-main",onClick:e=>{e.preventDefault(),e.stopPropagation(),r(null)},children:[i.jsx(yn,{clearStyles:w}),i.jsx(ao,{clearStyles:w})]})})})},lo=e=>Array.isArray(e)?e.map(e=>e&&"object"==typeof e?{...e,children:lo(e.children)}:e):e&&"object"==typeof e?Object.values(e).map(e=>e&&"object"==typeof e?{...e,children:lo(e.children)}:e):[],ro=e=>{const t={},n=(e,o=[])=>{Array.isArray(e)&&e.forEach(e=>{if(!e||"object"!=typeof e)return;const a={blockId:e.id??null,key:e.key??null,containerType:"column"===e.key?e.containerType??"none":null},i=[...o,a];if("text"===e.key&&"dynamic"===e.contentType){const n="string"==typeof e.dynamicPrompt?e.dynamicPrompt.trim():"",o="string"==typeof e.dynamicSelectedContent?e.dynamicSelectedContent.trim():"";if(!n&&!o)return;t[e.id]={blockId:e.id,path:i,key:e.key,type:e.type||"p",selectedContent:o,options:Array.isArray(e.dynamicOptions)?e.dynamicOptions:[],prompt:n,variable:e.dynamicVariable??""}}Array.isArray(e.children)&&n(e.children,i)})};return n(e,[]),t},so=e=>Array.isArray(e)?e.map(e=>{if(!e||"object"!=typeof e)return e;const{dynamicPrompt:t,dynamicOptions:n,dynamicSelectedContent:o,dynamicVariable:a,children:i,...l}=e;return{...l,children:so(i)}}):e,co=e.forwardRef(({defaultBlockList:t,defaultBodySettings:n,aiContentRefs:o,language:a="en",customLanguageLibraries:l,templateData:s,variableDefinitions:c,apiConfig:d={},aiEnabled:p=!0},u)=>{e.useEffect(()=>{var e;_e=(e=c)&&"object"==typeof e?e:ke,Te()},[c]);const m=e.useMemo(()=>gt(d),[d]),g=t&&!Array.isArray(t)&&"object"==typeof t?t:null,h=g?g.blocks??g.blockList??[]:t,f=(k=h,Array.isArray(k)?k.map(e=>e&&"object"==typeof e?{...e,children:lo(e.children)}:e):k&&"object"==typeof k?Object.values(k).map(e=>e&&"object"==typeof e?{...e,children:lo(e.children)}:e):[]);var k;const _=o??g?.aiContentRefs??{},x=n??g?.bodySettings??F.bodySettings,v=s??F.templateData,C=((e,t)=>{if(!Array.isArray(e))return e;const n=t?.content?.products;if(!Array.isArray(n)||0===n.length)return e;const o=t?.content?.primaryProductId,a=(o?n.find(e=>e?.id===o):n[0])??n[0]??Nn[0]??null;if(!a)return e;const i=n.filter(e=>e?.id!==a.id),l=e=>{if(!e||"object"!=typeof e)return e;const t=Array.isArray(e.children)?e.children.map(l):e.children;if("column"!==e.key||"product"!==e.containerType)return{...e,children:t};const n="additional"===e.productRole?"additional":"main",o=Math.max(Array.isArray(t)?t.length:0,Array.isArray(e.columnProducts)?e.columnProducts.length:0,1),r=Array.from({length:o},(e,t)=>"main"===n||0===i.length?a:i[t%i.length]);return{...e,children:t,columnProducts:r}};return e.map(l)})(f,v),w=ct(C,_),{blockMap:S,rootOrder:T}=y(w),L=r(S,v),[H,z]=e.useReducer(K,{...F,blockMap:L,rootOrder:T,blockList:w,bodySettings:x,languageLibraries:l,templateData:v}),[V,W]=e.useState([]),q=e.useMemo(()=>new Set(V),[V]),J=e.useCallback(e=>(Array.isArray(e)?e:[]).filter(e=>!q.has(ht(e))),[q]),G=e.useCallback(e=>{const t=ht(e);t&&W(e=>e.includes(t)?e:[...e,t])},[]),Y=e.useCallback(()=>{const e=H.blockList??[];return{blockList:so(e),bodySettings:H.bodySettings??null,aiContentRefs:ro(e)}},[H.blockList,H.bodySettings]),Z=e.useMemo(()=>J(Tt({blockList:H.blockList??[],bodySettings:H.bodySettings??null,aiContentRefs:ro(H.blockList??[])})).filter(e=>e?.blockId&&("warning"===e.severity||"error"===e.severity)).reduce((e,t)=>{const n=t.blockId,o=e[n]??{severity:t.severity,warningCount:0,errorCount:0,totalCount:0,messages:[],issues:[]};return"error"===t.severity&&(o.errorCount+=1),"warning"===t.severity&&(o.warningCount+=1),o.totalCount+=1,o.severity=o.errorCount>0?"error":"warning",o.messages.push(t.message),o.issues.push(t),e[n]=o,e},{}),[H.blockList,H.bodySettings,J]);e.useImperativeHandle(u,()=>({blockList:so(H.blockList??[]),bodySettings:H.bodySettings,aiContentRefs:ro(H.blockList??[]),actionType:H.actionType,exportJson:Y,filterIgnoredValidationIssues:J,ignoreValidationIssue:G,focusBlock:e=>{if(!e||!H.blockMap?.[e])return!1;const t=H.blockMap[e],n="column"===t?.key?b(e,H.blockMap)??t:t;return z(U({id:e,data:n,type:"edit"})),z(E("edit")),"undefined"!=typeof window&&window.requestAnimationFrame(()=>{const t="function"==typeof window.CSS?.escape?window.CSS.escape(String(e)):String(e).replace(/([ #;?%&,.+*~':\"!^$\[\]()=>|/@])/g,"\\$1"),n=document.querySelector(`[data-block-id="${t}"]`);n&&"function"==typeof n.scrollIntoView&&n.scrollIntoView({behavior:"smooth",block:"center",inline:"nearest"})}),!0},exportHtml:()=>at({bodySettings:H.bodySettings,blockList:H.blockList,templateData:H.templateData})}),[H.blockList,H.bodySettings,H.actionType,H.templateData,Y,J,G]);const Q=e.useCallback(e=>{z((e=>({type:N,isDragStart:e}))(e))},[]),X=e.useCallback((e,t)=>{t&&z(E(t)),z((e=>({type:P,bodySettings:e}))(e))},[]),ee=e.useCallback((e,t,n)=>{n&&z(E(n)),z(((e,t)=>({type:I,blockMap:e,rootOrder:t}))(e,t))},[]),te=e.useCallback((e,t)=>{t&&z(E(t)),z((e=>({type:j,blockList:e}))(e))},[]),ne=e.useCallback(e=>{z((e=>({type:A,previewMode:e}))(e))},[]),oe=e.useCallback(e=>{z(U(e))},[]),ae=e.useCallback(e=>{z((e=>({type:R,selectionRange:e}))(e))},[]),ie=e.useCallback(e=>{z((e=>({type:$,textRange:e}))(e))},[]),le=e.useCallback(e=>{z(E(e))},[]),re=e.useCallback(e=>{z((e=>({type:B,language:e}))(e))},[]),se=e.useCallback(e=>{z((e=>({type:D,languageLibraries:e}))(e))},[]),ce=e.useCallback(e=>{z((e=>({type:M,templateData:e}))(e))},[]),de=e.useMemo(()=>({blockMap:H.blockMap,rootOrder:H.rootOrder,blockList:H.blockList,actionType:H.actionType,previewMode:H.previewMode,currentItem:H.currentItem,bodySettings:H.bodySettings,isDragStart:H.isDragStart,selectionRange:H.selectionRange,textRange:H.textRange,language:H.language,languageLibraries:H.languageLibraries,templateData:H.templateData,apiConfig:m,validationMarkers:Z,ignoreValidationIssue:G,aiEnabled:p,setIsDragStart:Q,setBodySettings:X,setBlocks:ee,setBlockList:te,setPreviewMode:ne,setCurrentItem:oe,setSelectionRange:ae,setTextRange:ie,setActionType:le,setLanguage:re,setLanguageLibraries:se,setTemplateData:ce}),[H.blockMap,H.rootOrder,H.blockList,H.actionType,H.previewMode,H.currentItem,H.bodySettings,H.isDragStart,H.selectionRange,H.textRange,H.language,H.languageLibraries,H.templateData,m,Z,G,p,Q,X,ee,te,ne,oe,ae,ie,le,re,se,ce]);return i.jsx(O.Provider,{value:de,children:i.jsx(io,{language:a})})});const po=/\{\{Product\w+\}\}/;function uo(e,t,n,o,a){if("text"===e.key||"image"===e.key){const a="text"===e.key?e.text:"image"===e.key?e.src:null;if(a&&po.test(a)){const i=t?t.id:null;if(!o.has(i)){const e={containerId:i,containerType:t?.containerType||t?.key||"none",nodes:[]};o.set(i,e),n.push(e)}o.get(i).nodes.push({id:e.id,key:e.key,value:a,contentType:e.key})}}if("dynamic"===e.contentType){const i=t?t.id:null;if(!o.has(i)){const e={containerId:i,containerType:t?.containerType||t?.key||"none",nodes:[]};o.set(i,e),n.push(e)}const l=a[e.id];o.get(i).nodes.push({id:e.id,key:e.key,value:"",contentType:"dynamic",ai:{prompt:l?.prompt??"",selectedSampleAiContent:l?.selectedContent??""}})}if(e.children)for(const t of e.children)uo(t,e,n,o,a)}const mo={text:"text",image:"src"};function go(e,t){if(0===t.size)return!0;if(e.id&&t.has(e.id)){const n=t.get(e.id),o=mo[e.key];o&&(e[o]=n,t.delete(e.id))}if(e.children)for(const n of e.children)if(go(n,t))return!0;return 0===t.size}var yo=Object.freeze({__proto__:null,jsonToHtml:function(e){return it(e)},normalizeJson:function(e){const t="string"==typeof e?JSON.parse(e):e,n=[],o=new Map,a=t.aiContentRefs||{},i=t.blockList||[];for(const e of i)uo(e,null,n,o,a);return{groups:n}},updateJsonWithMlContent:function(e,t){const n="string"==typeof e?JSON.parse(e):e,o=structuredClone(n),a=new Map;for(const e of t)e.variations.length>0&&a.set(e.nodeId,e.variations[0].value);const i=o.blockList||[];for(const e of i)if(go(e,a))break;return o}});const ho=Object.freeze({keys:["content","catalogProducts","companyContext","brandContext","companyId"],description:"templateData drives placeholders, product columns, and menu/social sync. content.products + content.primaryProductId, when non-empty, override product column assignments on load. catalogProducts (optional array) is the KB/catalog list for the product picker and for newly added preset product blocks; it does not replace columnProducts in a saved template when content.products is empty. companyContext.navigation_links and companyContext.social_links sync into menu/social blocks; brandContext (including brand_color) resolves branding tokens and CTA/button fallback colors in HTML export."});exports.DEFAULT_EMAIL_TEMPLATE_ID=ut,exports.DEFAULT_MARKOPOLO_API_BASE_V1=dt,exports.DEFAULT_ML_GENERATION_API_BASE_V1=pt,exports.EmailEditor=co,exports.TEMPLATE_DATA_SCHEMA=ho,exports.createDefaultTemplateData=function(e={}){const t={name:"",website:"",navigation_links:[],social_links:{}},n={brand_color:"#111111",logo_url:"",tagline:"",heroBanner:"",footerBanner:""},o=null;return{content:{...{products:[],primaryProductId:null},...e.content&&"object"==typeof e.content?e.content:{}},companyContext:{...t,...e.companyContext&&"object"==typeof e.companyContext?e.companyContext:{}},brandContext:{...n,..."string"==typeof e.brandColor&&e.brandColor.trim()?{brand_color:e.brandColor.trim()}:{},...e.brandContext&&"object"==typeof e.brandContext?e.brandContext:{}},companyId:null!=e.companyId?e.companyId:o}},exports.default=co,exports.exportNormalizerToHtml=it,exports.exportTemplateJson=function(e,t={}){const{validate:n=!0}=t,o=e?.current;if(!o||"function"!=typeof o.exportJson)throw new Error("exportTemplateJson: ref must be attached to EmailEditor (expected ref.current.exportJson to be a function).");const a=o.exportJson();if(!a||"object"!=typeof a)throw new Error("exportTemplateJson: exportJson() returned an invalid payload.");return{payload:a,issues:n?Tt({blockList:a.blockList,bodySettings:a.bodySettings,aiContentRefs:a.aiContentRefs}):[]}},exports.exportTemplateJsonAsync=async function(e,t={}){const{validate:n=!0,checkImages:o=!0,imageProbe:a}=t,i=e?.current;if(!i||"function"!=typeof i.exportJson)throw new Error("exportTemplateJsonAsync: ref must be attached to EmailEditor (expected ref.current.exportJson to be a function).");const l=i.exportJson();if(!l||"object"!=typeof l)throw new Error("exportTemplateJsonAsync: exportJson() returned an invalid payload.");return n?{payload:l,issues:o?await Dt({blockList:l.blockList,bodySettings:l.bodySettings,aiContentRefs:l.aiContentRefs},a):Tt({blockList:l.blockList,bodySettings:l.bodySettings,aiContentRefs:l.aiContentRefs})}:{payload:l,issues:[]}},exports.mergeMarkopoloApiConfig=gt,exports.utils=yo,exports.validateExportPayload=Tt,exports.validateExportPayloadComplete=Dt,exports.validateImageUrlsReachable=Bt,exports.validateTemplateDataShape=function(e){const t=[];if(null==e||"object"!=typeof e)return{ok:!1,warnings:["templateData must be a non-null object"]};const n=e;if(null!=n.content&&"object"!=typeof n.content)t.push("templateData.content should be an object when provided");else if(n.content&&"object"==typeof n.content){const e=n.content;null==e.products||Array.isArray(e.products)||t.push("templateData.content.products should be an array when provided")}if(null==n.catalogProducts||Array.isArray(n.catalogProducts)||t.push("templateData.catalogProducts should be an array when provided"),null!=n.companyContext&&"object"!=typeof n.companyContext&&t.push("templateData.companyContext should be an object when provided"),null!=n.brandContext&&"object"!=typeof n.brandContext&&t.push("templateData.brandContext should be an object when provided"),n.brandContext&&"object"==typeof n.brandContext){const e=n.brandContext;null!=e.brand_color&&"string"!=typeof e.brand_color&&t.push("templateData.brandContext.brand_color should be a string when provided")}return{ok:0===t.length,warnings:t}};
|
|
1
|
+
"use strict";Object.defineProperty(exports,"__esModule",{value:!0});var e=require("react"),t=require("antd"),n=require("@fortawesome/react-fontawesome"),o=require("@fortawesome/free-solid-svg-icons"),a=require("framer-motion"),i=require("react/jsx-runtime"),l=require("react-color");function r(e,t){if(!e||!t)return e;const n=t?.companyContext?.navigation_links,o=Array.isArray(n)&&n.length>0,a=t?.companyContext?.social_links,i=a&&"object"==typeof a&&Object.keys(a).length>0;if(!o&&!i)return e;const l={...e};let r=!1;return Object.keys(e).forEach(t=>{const s=e[t];if(s){if("menu"===s.key&&s.useNavigationLinks&&o){const e=n.map(e=>({label:e.label??"Link",url:e.url??"#",target:e.target??"_self"}));l[t]={...s,list:e},r=!0}if("social_link"===s.key&&s.useCompanySocialLinks&&i){const e="https://s.magecdn.com/social",n=[{key:"facebook",image:`${e}/tc-facebook.svg`,title:"Facebook"},{key:"twitter",image:`${e}/tc-x.svg`,title:"Twitter"},{key:"instagram",image:`${e}/tc-instagram.svg`,title:"Instagram"},{key:"linkedin",image:`${e}/tc-linkedin.svg`,title:"LinkedIn"},{key:"tiktok",image:`${e}/tc-tiktok.svg`,title:"TikTok"},{key:"youtube",image:`${e}/tc-youtube.svg`,title:"YouTube"}].map(({key:e,image:t,title:n})=>{const o=a[e];return{image:t,title:n,linkURL:null!=o&&String(o).trim()?String(o).replace(/^https?:\/\//,""):""}});l[t]={...s,list:n},r=!0}}}),r?l:e}const s=e=>{const t=e.constructor===Array?[]:{};for(let n in e)e.hasOwnProperty(n)&&(e[n]&&"object"==typeof e[n]?(t[n]=e[n].constructor===Array?[]:{},t[n]=s(e[n])):t[n]=e[n]);return t},c=(e,t)=>{let n=null;return function(){n||(n=setTimeout(()=>{e.apply(this,arguments),n=null},t))}};function d(e,t={}){if(null==e||"string"!=typeof e)return e;const n=null!=t.fontSize?Number(t.fontSize):14,o=null!=t.fontFamily?String(t.fontFamily):"sans-serif",a=null!=t.color?String(t.color):"",i=["direction: ltr",`font-size: ${n}px`,`font-family: ${o}`];a&&i.push(`color: ${a}`);const l=i.join("; ");let r=function(e){if(null==e||"string"!=typeof e)return e;let t=e.replace(/\sstyle\s*=\s*["']([^"']*)["']/gi,(e,t)=>{const n=t.replace(/\s*font-size\s*:[^;]+;?/gi,"").replace(/\s*font-family\s*:[^;]+;?/gi,"").replace(/\s*color\s*:[^;]+;?/gi,"").replace(/^;\s*|;\s*$/g,"").trim();return n?` style="${n}"`:""}),n="";for(let e=0;e<20&&n!==t;e++)n=t,t=t.replace(/<font(\s[^>]*)?>([\s\S]*?)<\/font>/gi,"$2");return t}(e.trim());const s=/^<span(?:\s[^>]*)?>([\s\S]*)<\/span>$/i.exec(r.trim()),c=/^<div(?:\s[^>]*)?>([\s\S]*)<\/div>$/i.exec(r.trim());return s?r=s[1]:c&&(r=c[1]),`<span style="${l}">${r}</span>`}function p(){return"undefined"!=typeof crypto&&crypto.randomUUID?crypto.randomUUID():"xxxxxxxx-xxxx-4xxx-yxxx-xxxxxxxxxxxx".replace(/[xy]/g,e=>{const t=16*Math.random()|0;return("x"===e?t:3&t|8).toString(16)})}function u(e){if(!e||"object"!=typeof e)return;e.id||(e.id=p());const t=e.children;Array.isArray(t)&&t.forEach(u)}function m(e){if(!e||"object"!=typeof e)return e;const t=s(e);return u(t),t}function g(e="Drag block here"){return{id:p(),name:e,key:"empty",width:"100%",styles:{desktop:{backgroundColor:"transparent",paddingTop:0,paddingLeft:0,paddingRight:0,paddingBottom:0},mobile:{}}}}function y(e){const t={},n=[];function o(e){if(e&&"object"==typeof e)if(e.id||(e.id=p()),"column"===e.key){const n=(e.children||[]).map(e=>{e.id||(e.id=p());const t=[];return(e.children||[]).forEach(e=>{e.id||(e.id=p()),o(e),t.push(e.id)}),{id:e.id,width:e.width,styles:e.styles,childrenIds:t}}),{children:a,...i}=e;t[e.id]={...i,cells:n}}else t[e.id]=e}return(e||[]).forEach(e=>{e.id||(e.id=p()),o(e),n.push(e.id)}),{blockMap:t,rootOrder:n}}function h(e,t){function n(t){const o=e[t];if(!o)return null;if("column"===o.key){const e=(o.cells||[]).map(e=>({id:e.id,name:"Content",key:"content",width:e.width,styles:e.styles,children:(e.childrenIds||[]).map(e=>n(e)).filter(Boolean)})),{cells:t,...a}=o;return{...a,children:e}}return{...o}}return(t||[]).map(e=>n(e)).filter(Boolean)}function b(e,t){const n=t[e];if(!n)return null;if("column"!==n.key)return n;const o=(n.cells||[]).map(e=>({id:e.id,name:"Content",key:"content",width:e.width,styles:e.styles,children:(e.childrenIds||[]).map(e=>{const n=t[e];return n?"column"===n.key?b(e,t):n:null}).filter(Boolean)})),{cells:a,...i}=n;return{...i,children:o}}function f(e,t,n){function o(t){const a=e[t];if(!a||"column"!==a.key)return null;for(let i=0;i<(a.cells||[]).length;i++){const l=a.cells[i];for(let a=0;a<(l.childrenIds||[]).length;a++){if(l.childrenIds[a]===n)return{containerId:t,cellIndex:i,itemIndex:a};const r=e[l.childrenIds[a]];if(r&&"column"===r.key){const e=o(l.childrenIds[a]);if(e)return e}}}return null}for(const e of t||[]){const t=o(e);if(t)return t}return null}function k(e,t,n){const o=(t||[]).indexOf(n);if(-1!==o){const t=e[n];return[{containerBlock:t??null,containerType:t?.containerType??"none",cellIndex:0,isRoot:!0,rootIndex:o}]}function a(t,o=[]){const i=e[t];if(!i||"column"!==i.key)return null;for(let t=0;t<(i.cells||[]).length;t++){const l=i.cells[t];for(let r=0;r<(l.childrenIds||[]).length;r++){const s=l.childrenIds[r];if(s===n)return[{containerBlock:i,containerType:i?.containerType??"none",cellIndex:t,isRoot:!1},...o];const c=e[s];if(c&&"column"===c.key){const e=a(s,[{containerBlock:i,containerType:i?.containerType??"none",cellIndex:t,isRoot:!1},...o]);if(e)return e}}}return null}for(const e of t||[]){const t=a(e,[]);if(t)return t}return[]}function _(e,t,n){const o=k(e,t,n),a=o.find(e=>e?.containerType&&"none"!==e.containerType)||o[0]||null,i=a?.cellIndex??0,l=a?.containerBlock??null,r=l?.columnProducts?.[i]??null,s=Array.isArray(l?.columnProducts)?l.columnProducts.find(e=>null!=e)??null:null;return{containerType:a?.containerType??"none",columnIndex:i,columnProduct:r??s,containerBlock:l,lineage:o}}function x(e,t,n,o,a){const i=e[t];if(!i)return e;const l=i.cells.map((e,t)=>{if(t!==n)return e;const i=[...e.childrenIds];return i[o]=a,{...e,childrenIds:i}});return{...e,[t]:{...i,cells:l}}}function v(e,t,n,o){const a=e[t];if(!a)return{blockMap:e,removedId:null};const i=a.cells[n];if(!i)return{blockMap:e,removedId:null};const l=i.childrenIds[o],r=[...i.childrenIds];r.splice(o,1);const s=a.cells.map((e,t)=>t===n?{...e,childrenIds:r}:e);return{blockMap:{...e,[t]:{...a,cells:s}},removedId:l}}function w(e,t,n,o,a){const i=e[t];if(!i)return e;const l=i.cells[n];if(!l)return e;const r=[...l.childrenIds];r.splice(o,0,a);const s=i.cells.map((e,t)=>t===n?{...e,childrenIds:r}:e);return{...e,[t]:{...i,cells:s}}}function C(e,t){const n={...e};return function e(t){const o=n[t];o&&("column"===o.key&&(o.cells||[]).forEach(t=>(t.childrenIds||[]).forEach(t=>e(t))),delete n[t])}(t),n}function S(e,t){if(!t)return{newBlockMap:e,rootId:null};if("column"===t.key){const{blockMap:n,rootOrder:o}=y([t]);return{newBlockMap:{...e,...n},rootId:o[0]??null}}return{newBlockMap:{...e,[t.id]:t},rootId:t.id}}const j="SET_BLOCK_LIST",I="SET_BLOCKS",N="SET_IS_DRAG_START",T="SET_ACTION_TYPE",A="SET_PREVIEW_MODE",L="SET_CURRENT_ITEM",P="SET_BODY_SETTINGS",R="SET_SELECTION_RANGE",$="SET_TEXT_RANGE",B="SET_LANGUAGE",D="SET_LANGUAGE_LIBRARIES",M="SET_TEMPLATE_VARIABLES",E=e=>({type:T,actionType:e}),U=e=>({type:L,currentItem:e}),F={blockMap:{},rootOrder:[],blockList:[],isDragStart:!1,actionType:"firstRender",previewMode:"desktop",currentItem:null,bodySettings:{preHeader:"",contentWidth:600,styles:{backgroundColor:"#f5f5f5",color:"#152b2a",fontFamily:"Arial"}},selectionRange:null,textRange:null,language:"en",languageLibraries:{},templateData:null},O=e.createContext();function H(e,t,n){const o=r(t,e.templateData),a=h(o,n);let{currentItem:i}=e;if(i?.id&&o[i.id]){const e=b(i.id,o);e&&e!==i.data&&(i={...i,data:e})}return{...e,blockMap:o,rootOrder:n,blockList:a,currentItem:i}}function K(e,t){switch(t.type){case I:return H(e,t.blockMap,t.rootOrder);case j:{const{blockMap:n,rootOrder:o}=y(t.blockList);return H(e,n,o)}case N:return{...e,isDragStart:t.isDragStart};case T:return{...e,actionType:t.actionType};case A:return{...e,previewMode:t.previewMode};case L:{let n=t.currentItem;if(n?.id&&"column"===n.data?.key&&e.blockMap[n.id]){const t=b(n.id,e.blockMap);t&&(n={...n,data:t})}return{...e,currentItem:n}}case P:return{...e,bodySettings:t.bodySettings};case R:return{...e,selectionRange:t.selectionRange};case $:return{...e,textRange:t.textRange};case B:return{...e,language:t.language};case D:return{...e,languageLibraries:t.languageLibraries};case M:{const n=t.templateData,o=r(e.blockMap,n),a=h(o,e.rootOrder);return{...e,templateData:n,blockMap:o,blockList:a}}default:return e}}var z={global:[{key:"CustomerName",token:"{{CustomerName}}",label:"Customer Name",labelKey:"variable_customer_name",type:"text",fallback:"Customer",source:"derived"},{key:"BrandName",token:"{{BrandName}}",label:"Brand Name",labelKey:"variable_brand_name",type:"text",fallback:"Company Name",source:"companyContext.name"},{key:"Tagline",token:"{{Tagline}}",label:"Tagline",labelKey:"variable_tagline",type:"text",fallback:"Your tagline here",source:"brandContext.tagline"},{key:"LogoUrl",token:"{{LogoUrl}}",label:"BrandLogo",labelKey:"variable_image_logo",type:"image",fallback:"https://via.placeholder.com/150x50/ffffff/333333?text=Logo",source:"brandContext.logo_url"},{key:"Website",token:"{{Website}}",label:"Website",labelKey:"variable_website",type:"text",fallback:"www.example.com",source:"companyContext.website"},{key:"Address",token:"{{Address}}",label:"Address",labelKey:"variable_address",type:"text",fallback:"123 Main St, City, Country",source:"companyContext.address"}],product:[{key:"ProductName",token:"{{ProductName}}",label:"Product Name",labelKey:"variable_product_name",type:"text",fallback:"Product Name",source:"content.products[].name"},{key:"ProductDescription",token:"{{ProductDescription}}",label:"Product Description",labelKey:"variable_product_description",type:"text",fallback:"Product description goes here.",source:"content.products[].description"},{key:"ProductImage",token:"{{ProductImage}}",label:"Product Image URL",labelKey:"variable_product_image",type:"image",fallback:"https://via.placeholder.com/300x300/eeeeee/666666?text=Product",source:"content.products[].image"},{key:"ProductLink",token:"{{ProductLink}}",label:"Product Link",labelKey:"variable_product_link",type:"url",fallback:"https://www.example.com",source:"content.products[].link"},{key:"ProductPrice",token:"{{ProductPrice}}",label:"Product Price (Amount)",labelKey:"variable_product_price",type:"number",fallback:"0",source:"content.products[].price.amount"},{key:"ProductCurrency",token:"{{ProductCurrency}}",label:"Product Currency",labelKey:"variable_product_currency",type:"text",fallback:"USD",source:"content.products[].price.currency"},{key:"ProductOldPrice",token:"{{ProductOldPrice}}",label:"Product Old Price",labelKey:"variable_product_old_price",type:"number",fallback:"0",source:"content.products[].old_price"},{key:"ProductNewPrice",token:"{{ProductNewPrice}}",label:"Product New Price",labelKey:"variable_product_new_price",type:"number",fallback:"0",source:"content.products[].new_price"},{key:"ProductPriceDisplay",token:"{{ProductPriceDisplay}}",label:"Product Price Display",labelKey:"variable_product_price_display",type:"text",fallback:"USD 0",source:"derived"}],discount:[{key:"DiscountValue",token:"{{DiscountValue}}",label:"Discount Value",labelKey:"variable_discount_value",type:"text",fallback:"20%",source:"content.discount.value"},{key:"DiscountCode",token:"{{DiscountCode}}",label:"Discount Code",labelKey:"variable_discount_code",type:"text",fallback:"SAVE20",source:"content.discount.code"},{key:"ValidUntil",token:"{{ValidUntil}}",label:"Valid Until",labelKey:"variable_valid_until",type:"date",fallback:"12-31-2025",source:"content.discount.valid_until"}]};const V=[{value:"none",labelKey:"container_type_none"},{value:"discount",labelKey:"container_type_discount"},{value:"product",labelKey:"container_type_product"}],W="CustomerName",q="DiscountValue",J="DiscountCode",G="ValidUntil",Y="CompanyName",Z="Address",Q="Website",X="BrandName",ee="LogoUrl",te="Tagline",ne="HeroBanner",oe="FooterBanner",ae="NavLabel",ie="NavUrl",le="ProductName",re="ProductDescription",se="ProductImage",ce="ProductLink",de="ProductPrice",pe="ProductCurrency",ue="ProductOldPrice",me="ProductNewPrice",ge="ProductPriceDisplay",ye="CTALabel",he="CTAUrl",be=new Set([ue,me]);function fe(e){return`{{${e}}}`}const ke=z;let _e=ke;function xe(e,t=_e){return t&&Array.isArray(t[e])?t[e].map(e=>({...e,token:e.token||fe(e.key)})):[]}let ve=[],we=[],Ce=[],Se={},je=[],Ie=[],Ne=[];function Te(){ve=xe("global",_e),we=xe("product",_e),Ce=xe("discount",_e),Se=[...ve,...we,...Ce].reduce((e,t)=>(e[t.key]=t,e),{}),je=Ce.map(e=>({variableKey:e.key,labelKey:e.labelKey}));const e=we.filter(e=>!be.has(e.key));Ie=e.map(e=>({variableKey:e.key,labelKey:e.labelKey})),Ne=ve.map(e=>({value:e.token,label:e.label,key:e.key,labelKey:e.labelKey,source:e.source,type:e.type})),Ce.map(e=>({value:e.token,label:e.label,key:e.key,labelKey:e.labelKey,source:e.source,type:e.type})),e.map(e=>({value:e.token,label:e.label,key:e.key,labelKey:e.labelKey,source:e.source,type:e.type}))}Te();const Ae={[W]:"Customer",[q]:"20%",[J]:"SAVE20",[G]:"12-31-2025",[Y]:"Company Name",[X]:"Company Name",[Z]:"123 Main St, City, Country",[Q]:"www.example.com",[ee]:"https://via.placeholder.com/150x50/ffffff/333333?text=Logo",[te]:"Your tagline here",[ne]:"https://via.placeholder.com/600x200/eeeeee/666666?text=Hero",[oe]:"https://via.placeholder.com/600x100/eeeeee/666666?text=Footer",[ae]:"Link",[ie]:"https://www.example.com",[le]:"Product Name",[re]:"Product description goes here.",[se]:"https://via.placeholder.com/300x300/eeeeee/666666?text=Product",[ce]:"https://www.example.com",[de]:"0",[pe]:"USD",[ue]:"0",[me]:"0",[ge]:"USD 0",[ye]:"Shop Now",[he]:"www.example.com"};function Le(e){return null==e||"string"!=typeof e?"":e.replace(/&/g,"&").replace(/</g,"<").replace(/>/g,">").replace(/"/g,""")}const Pe=new Set([ge]);function Re(e,t,n={}){if(null==e||"string"!=typeof e)return"";const o=e.replace(/\{\{(\w+)\}\}/g,(e,o)=>{const a=Me(t,o,n);return Pe.has(o)?a:Le(a)});return null==(a=o)||"string"!=typeof a?a:a.replace(/^(<p[^>]*>\s*(?:<br\s*\/?>| )?\s*<\/p>\s*)+/i,"");var a}function $e(e){return Ae[e]??"—"}const Be=/^\{\{\s*[\w.]+\s*\}\}$/;function De(e,t,{allowEmpty:n=!1}={}){if(null==e)return $e(t);const o=String(e).trim();return n||""!==o?function(e){return"string"==typeof e&&Be.test(e.trim())}(o)?$e(t):o:$e(t)}function Me(e,t,n={}){if(!e)return $e(t);const{columnIndex:o,columnProduct:a}=n;let i=a;switch(!i&&e.content?.products&&"number"==typeof o&&(i=e.content.products[o]||null),t){case W:return $e(W);case q:return De(e.content?.discount?.value,q);case J:return De(e.content?.discount?.code,J);case G:return De(e.content?.discount?.valid_until,G);case Y:case X:return De(e.companyContext?.name,t);case Z:return De(e.companyContext?.address,Z);case Q:return De(e.companyContext?.website,Q);case ee:return De(e.brandContext?.logo_url,ee);case te:return De(e.brandContext?.tagline,te);case ne:return De(e.brandContext?.heroBanner,ne);case oe:return De(e.brandContext?.footerBanner,oe);case ae:case ie:return $e(t);case le:return De(i?.name,le);case re:return De(i?.description,re);case se:return De(i?.image,se);case ce:return De(i?.link,ce);case de:return null!=i?.price&&"number"==typeof i.price||null!=i?.price&&"string"==typeof i.price?String(i.price):null!=i?.new_price?String(i.new_price):$e(de);case pe:return De(i?.currency,pe);case ue:return De(i?.old_price,ue);case me:return null!=i?.new_price?De(i.new_price,me):null!=i?.price?De(i.price,me):$e(me);case ge:{const e=null!=i?.currency?String(i.currency):"",t=null!=i?.price?String(i.price):null!=i?.new_price?String(i.new_price):null,n=null!=i?.old_price||null!=i?.new_price,o=null!=i?.old_price?String(i.old_price):null,a=null!=i?.new_price?String(i.new_price):null!=i?.price?String(i.price):null;if(n&&(null!=o||null!=a)){const t=null!=o?Le(e?`${e} ${o}`:o):"";return[""!==t?`<span style="text-decoration: line-through;">${t}</span>`:"",null!=a?Le(e?`${e} ${a}`:a):""].filter(Boolean).join(" ")||$e(ge)}return e&&null!=t?Le(`${e} ${t}`):$e(ge)}case ye:{const t=e.content?.cta?.text;return De(t,ye)}case he:{const t=e.content?.cta?.url;return De(null!=t?t:e.companyContext?.website,he)}default:return $e(t)}}const Ee=[{variableKey:ee,labelKey:"variable_image_logo"},{variableKey:ne,labelKey:"variable_image_hero_banner"},{variableKey:oe,labelKey:"variable_image_footer_banner"}],Ue=[{variableKey:se,labelKey:"variable_image_product_image"}],Fe=[{variableKey:ye,labelKey:"variable_cta_label"}],Oe=[{variableKey:he,labelKey:"variable_cta_url"}];function He(e,t,n,o={}){let a=[];return"discount"===t?a=[...je]:"product"===t&&(a=[...Ie]),a.map(({variableKey:e,labelKey:t})=>({...Se[e]||{},variableKey:e,labelKey:t,value:fe(e),pasteValue:Me(n,e,o)}))}function Ke(e,t,n,o={},a=[]){const i="none"===t?Ne.map(e=>({...e,pasteValue:Me(n,e.key,o)})):He(0,t,n,o),l=(a||[]).filter(e=>e&&e.containerType&&"none"!==e.containerType).flatMap(e=>He(0,e.containerType,n,e.context||{})),r=new Set,s=[];return[...i,...l].forEach(e=>{const t=e.variableKey||e.key||e.value;t&&!r.has(t)&&(r.add(t),s.push(e))}),s}const ze={display_text:"DisplayText",introduction:"Introduction",heading:"Heading",subheading:"Subheading",products_description:"ProductDescription"};function Ve(e,t,n,o){return{value:fe(e),labelKey:t,variableKey:e,key:e,type:"image",pasteValue:Me(n,e,o)}}function We(e,t,n={}){const o=Ee.map(({variableKey:e,labelKey:o})=>Ve(e,o,t,n));if("product"===e){const e=Ue.map(({variableKey:e,labelKey:o})=>Ve(e,o,t,n));return[...o,...e]}return o}function qe(e){return!1!==e?.linkEnabled}const Je=e=>String(e??"").replace(/&/g,"&").replace(/</g,"<").replace(/>/g,">"),Ge=e=>Je(e).replace(/"/g,""").replace(/'/g,"'"),Ye=(e,t="#")=>{if(null==e)return t;const n=String(e).trim();if(!n)return t;const o=n.toLowerCase();return/^\s*(?:javascript|vbscript):/i.test(o)||/^\s*data:/i.test(o)?t:/^https?:\/\//i.test(n)||/^mailto:/i.test(n)||/^tel:/i.test(n)?n:n.startsWith("//")?`https:${n}`:/^[a-z][a-z\d+.-]*:/i.test(n)?n:`https://${n.replace(/^\/+/,"")}`},Ze=(e,t)=>{const n=new RegExp(/[A-Z]/g),o=e=>e.replace(n,e=>`-${e.toLowerCase()}`),a={desktop:t?.desktop??{},mobile:t?.mobile??{}};let i={className:e,desktop:"",mobile:""};for(let e of Object.entries(a.desktop))e[1]&&"contentBackground"!==e[0]&&(i.desktop+=`${o(e[0])}:${"number"==typeof e[1]?e[1]+"px":e[1]};`);if(Object.keys(a.mobile).length){let t="";for(let e of Object.entries(a.mobile))e[1]&&"contentBackground"!==e[0]&&(t+=`${o(e[0])}:${"number"==typeof e[1]?e[1]+"px":e[1]} !important;`);i.mobile+=`@media(max-width:620px){\n .${e} {\n ${t}\n }\n }`}return i},Qe=(e,t="",n)=>{const o=e.map((e,o)=>{let a={...e};const i={desktop:e?.styles?.desktop??{},mobile:e?.styles?.mobile??{}};if(a.styleConfig=Ze(n?`${n}-${e.key}-${o}`:`${e.key}-${o}`,i),a.contentStyles){const n={desktop:a.contentStyles?.desktop??{},mobile:a.contentStyles?.mobile??{}};a.contentStyleConfig=Ze(`${e.key}-content-${o}`,n),a.contentStyleConfig.mobile&&(t+=a.contentStyleConfig.mobile)}if(a.styleConfig.mobile&&(t+=a.styleConfig.mobile),i.desktop.contentBackground&&(a.contentStyleConfig={className:`${e.key}-content-${o}`,desktop:`background-color:${i.desktop.contentBackground};`,mobile:""}),i.mobile.contentBackground&&(a.contentStyleConfig||(a.contentStyleConfig={className:`${e.key}-content-${o}`,desktop:"",mobile:""}),a.contentStyleConfig.mobile=` @media(max-width:620px){\n .${a.contentStyleConfig.className} {background-color:${i.mobile.contentBackground};}\n }`,t+=a.contentStyleConfig.mobile),e.children?.length){const{newBlockList:n,styles:i}=Qe(e.children,t,o);t+=i,a.children=n}return{...a}});return{newBlockList:o,styles:t}};function Xe(e,t){return e&&t?String(e).replace(/<a\b([^>]*)>/gi,(e,n)=>{const o=n.match(/\sstyle\s*=\s*"([^"]*)"/i);if(o){const e=(o[1]||"").replace(/\s*color\s*:[^;]+;?/gi,"").replace(/^\s*;|;\s*$/g,"").trim(),a=`${e?`${e}; `:""}color: ${t};`;return`<a${n.replace(o[0],` style="${a}"`)}>`}return`<a${n} style="color: ${t};">`}):e}function et(e){const t=String(e??"");return null!=(n=t)&&"string"==typeof n&&/<[a-zA-Z!/?]/.test(n.trim())?function(e){if(!e||!/<a\b/i.test(e))return e;const t=(e,t,n)=>{const o=(t[1]||"").replace(/\s*text-decoration(-line)?\s*:[^;]+;?/gi,"").replace(/^\s*;|;\s*$/g,"").trim(),a=(o?`${o}; `:"")+"text-decoration: none;",i='"'===n?` style="${a}"`:` style='${a}'`;return`<a${e.replace(t[0],i)}>`};return String(e).replace(/<a\b([^>]*)>/gi,(e,n)=>{const o=n.match(/\sstyle\s*=\s*"([^"]*)"/i);if(o)return t(n,o,'"');const a=n.match(/\sstyle\s*=\s*'([^']*)'/i);return a?t(n,a,"'"):`<a${n} style="text-decoration: none;">`})}(t):Je(t);var n}const tt=(e,t,n={})=>{let o=e.dynamicSelectedContent??e.text??"";t&&o&&(o=Re(o,t,n));return o=Xe(o,e?.styles?.desktop?.linkColor||e?.styles?.desktop?.color),`<${e.type} ${e.styleConfig?.mobile?`class="${e.styleConfig.className}"`:""} \n style="${e.styleConfig?.desktop||""}">\n ${o}\n </${e.type}>`},nt=(e,t,n,o,a,i)=>{let l="";const r={columnIndex:a??0,columnProduct:o?.columnProducts?.[i??0]??null};return e.forEach((e,s)=>{if("column"===e.key){const r=e.styles?.desktop?.borderRadius,c=r?`border-radius:${"number"==typeof r?r+"px":r};`:"",d=c?"overflow:hidden;":"",p=e.containerType&&"none"!==e.containerType?e:o,u=e.containerType&&"none"!==e.containerType?s:a,m=e.containerType&&"none"!==e.containerType?0:i;l+=`<div ${e.styleConfig.mobile?`class="${e.styleConfig.className}"`:""} \n style="${e.styleConfig.desktop};width:100%;display:block;${d}">\n <table ${e.contentStyleConfig.mobile?`class="${e.contentStyleConfig.className}"`:""} \n style="width:100%;max-width:${t.contentWidth}px;margin:0 auto;${c}${e.contentStyleConfig.desktop}">\n <tbody><tr>${nt(e.children,t,n,p,u,m)}</tr></tbody>\n </table></div>`}if("content"===e.key&&(l+=`<td ${e.styleConfig.mobile?`class="${e.styleConfig.className}"`:""} \n style="width:${e.width}; ${e.styleConfig.desktop}">${nt(e.children,t,n,o,a,s)}</td>`),"text"===e.key){const t=null!=o?{columnIndex:a??0,columnProduct:o?.columnProducts?.[i??0]??null}:r;e.type&&/^h[1-4]$/.test(e.type)?l+=tt(e,n,t):l+=((e,t,n={},o=null)=>{let a=e.dynamicSelectedContent??e.text??"";t&&a&&(a=Re(a,t,n)),a=Xe(a,e?.styles?.desktop?.linkColor||e?.styles?.desktop?.color);const i="footer"===o?.containerType,l=null==(r=a)||"string"!=typeof r?"":r.replace(/<[^>]+>/g,"").replace(/\s+/g," ").trim();var r;return!i||""!==l&&"{{Address}}"!==l&&"{{Tagline}}"!==l?`<div ${e.styleConfig?.mobile?`class="${e.styleConfig.className}"`:""} \n style="${e.styleConfig?.desktop||""}">${a}</div>`:""})(e,n,t,o)}if("heading"===e.key&&(l+=tt(e,n,r)),"image"===e.key){l+=((e,t,n={})=>{let o=e.src||"";const a="string"==typeof e.src&&/^\{\{\s*[\w.]+\s*\}\}$/.test(e.src.trim())?e.src.trim():"";if(t&&a){const e=Me(t,a.replace(/^\{\{\s*|\s*\}\}$/g,""),n);e&&!/^\{\{\s*[\w.]+\s*\}\}$/.test(String(e).trim())&&(o=e)}const i=`<img src="${Ge(o)}" alt="${Ge(e.alt||"Image")}" style="max-width:100%;${e.styleConfig.desktop}" \n ${e.styleConfig.mobile?`class="${e.styleConfig.className}"`:""}/>`,l=null!=e.linkURL?String(e.linkURL).trim():"",r=qe(e)&&""!==l?`<a href="${Ge(Ye(l))}" target="_blank" rel="noopener noreferrer" style="text-decoration:none;">${i}</a>`:i;return`<div ${e.contentStyleConfig.mobile?`class="${e.contentStyleConfig.className}"`:""} \n style="${e.contentStyleConfig.desktop}">\n ${r}\n </div>`})(e,n,null!=o?{columnIndex:a??0,columnProduct:o?.columnProducts?.[i??0]??null}:r)}if("button"===e.key){l+=((e,t,n={})=>{let o=e.text||"",a=e.linkURL||"";if(t){const i=o.match(/\{\{(\w+)\}\}/),l=e.labelVariable?e.labelVariable.replace(/^\{\{|\}\}$/g,"").trim():i?i[1]:void 0;if(l){const e=Me(t,l,n);null==e||String(e).startsWith("{{")||(o=String(e))}if(e.urlVariable){const o=Me(t,e.urlVariable.replace(/^\{\{|\}\}$/g,""),n);o&&!o.startsWith("{{")&&(a=String(o))}}const i=et(o),l=Ge(Ye(a)),r=e.styleConfig.desktop||"",s=r.includes("background-color:")?"":`background-color:${(e=>e?.brandContext?.brand_color??"#111111")(t)};`;return`<div ${e.contentStyleConfig.mobile?`class="${e.contentStyleConfig.className}"`:""} \n style="${e.contentStyleConfig.desktop}">\n <a ${e.styleConfig.mobile?`class="${e.styleConfig.className}"`:""} \n style="${r}${s}text-align:center;text-decoration:none;" target="_blank" rel="noopener noreferrer" href="${l}">${i}</a>\n </div>`})(e,n,null!=o?{columnIndex:a??0,columnProduct:o?.columnProducts?.[i??0]??null}:r)}var c,d,p;"divider"===e.key&&(l+=`<div ${(c=e).contentStyleConfig.mobile?`class="${c.contentStyleConfig.className}"`:""} \n style="${c.contentStyleConfig.desktop}">\n <div ${c.styleConfig.mobile?`class="${c.styleConfig.className}"`:""} \n style="${c.styleConfig.desktop}"></div>\n </div>`),"spacer"===e.key&&(l+=(d=e,`<div ${d.contentStyleConfig?.mobile?`class="${d.contentStyleConfig.className}"`:""} \n style="${d.contentStyleConfig?.desktop||""}">\n <div ${d.styleConfig?.mobile?`class="${d.styleConfig.className}"`:""} \n style="${d.styleConfig?.desktop||""}"></div>\n </div>`)),"menu"===e.key&&(l+=(e=>{const t=e.list||[],n=null!=e.separator?String(e.separator):" | ",o=e.styleConfig?.desktop||"",a=e.contentStyleConfig?.desktop||"",i=t.map(e=>{const t=Ye(e.url,"#"),n="_blank"===e.target?"_blank":"_self",a=Je(e.label||"Link");return`<a target="${n}" href="${Ge(t)}" style="${o};text-decoration:none;display:inline-block;">${a}</a>`}).join(n);return`<div ${e.contentStyleConfig?.mobile?`class="${e.contentStyleConfig.className}"`:""} style="${a}">${i}</div>`})(e)),"avatar"===e.key&&(l+=(e=>{const t=e.src||"",n=e.alt||"Avatar",o=e.linkURL,a=e.styleConfig?.desktop||"",i=e.styles?.desktop?.width??64,l=`max-width:100%;width:${"number"==typeof i?i+"px":i};height:${"number"==typeof i?i+"px":i};object-fit:cover;border-radius:${e.styles?.desktop?.borderRadius??"50%"};${a}`,r=Ge(t),s=Ge(n),c=t?`<img src="${r}" alt="${s}" style="${l}" />`:`<div style="${l};background:#eee;display:flex;align-items:center;justify-content:center;"></div>`,d=e.contentStyleConfig?.desktop||"",p=o?`<a href="${Ge(Ye(o))}" target="_blank" rel="noopener noreferrer">${c}</a>`:c;return`<div ${e.contentStyleConfig?.mobile?`class="${e.contentStyleConfig.className}"`:""} style="${d}">${p}</div>`})(e)),"social_link"===e.key&&(l+=`<div ${(p=e).contentStyleConfig.mobile?`class="${p.contentStyleConfig.className}"`:""} \n style="${p.contentStyleConfig.desktop}">\n ${p.list.map(e=>{const{image:t,title:n,linkURL:o}=e;return`<a target="_blank" rel="noopener noreferrer" href="${Ge(Ye(o))}" style="${p.styleConfig.desktop};display:inline-block;">\n <img src="${Ge(t)}" alt="${Ge(n)}" style="width:${p.imageWidth}px;" \n ${p.styleConfig.mobile?`class="${p.styleConfig.className}"`:""}/> \n </a>`}).join("")}\n </div>`)}),l},ot={preHeader:"",contentWidth:600,styles:{backgroundColor:"#f5f5f5",color:"#152b2a",fontFamily:"Arial"}},at=({bodySettings:e,blockList:t,templateData:n})=>{let o="";const a=((e,t)=>{if(!Array.isArray(e))return e;const n=t?.content?.products;if(!Array.isArray(n)||0===n.length)return e;const o=t?.content?.primaryProductId,a=(o?n.find(e=>e?.id===o):n[0])??n[0]??null;if(!a)return e;const i=n.filter(e=>e?.id!==a.id),l=e=>{if(!e||"object"!=typeof e)return e;const t=Array.isArray(e.children)?e.children.map(l):e.children;if("column"!==e.key||"product"!==e.containerType)return{...e,children:t};const n="additional"===e.productRole?"additional":"main",o=Math.max(Array.isArray(t)?t.length:0,Array.isArray(e.columnProducts)?e.columnProducts.length:0,1),r=Array.from({length:o},(e,t)=>"main"===n||0===i.length?a:i[t%i.length]);return{...e,children:t,columnProducts:r}};return e.map(l)})(t,n),{newBlockList:i,styles:l}=Qe(a);return o=nt(i,e,n),`<html>\n <head>\n <meta charset="UTF-8">\n <title>email</title>\n <meta name="viewport" content="width=device-width, initial-scale=1" />\n <style type="text/css">\n *{\n margin: 0;\n padding: 0;\n border: none;\n box-sizing: border-box;\n }\n\n html,body {\n height:100%;\n overflow-y:auto;\n }\n\n table {\n width: 100%;\n color:unset;\n }\n\n table, tr, td {\n vertical-align: top;\n border-collapse: collapse;\n }\n\n h1,h2,h3,h4 {\n display: block;\n margin-block-start: 0px;\n margin-block-end: 0px;\n margin-inline-start: 0px;\n margin-inline-end: 0px;\n font-weight: bold;\n }\n\n @media(max-width:620px){\n td {\n display:inline-block;\n width:100% !important;\n }\n }\n ${l}\n</style>\n </head>\n <body>\n <div style="opacity:0;">${e.preHeader}</div>\n <div style="background-color:${e.styles.backgroundColor};color:${e.styles.color}; font-family:${e.styles.fontFamily};"> ${o}</div>\n </body>\n </html>`};function it(e){let t=e;if("string"==typeof e)try{t=JSON.parse(e)}catch(e){throw new Error("exportNormalizerToHtml: invalid JSON")}if(null==t)throw new Error("exportNormalizerToHtml: input is null or undefined");let n=[],o={...ot,styles:{...ot.styles}};Array.isArray(t)?n=t:"object"==typeof t&&(n=Array.isArray(t.blockList)?t.blockList:[],t.bodySettings&&"object"==typeof t.bodySettings&&(o={preHeader:null!=t.bodySettings.preHeader?t.bodySettings.preHeader:ot.preHeader,contentWidth:Number(t.bodySettings.contentWidth)||ot.contentWidth,styles:{backgroundColor:t.bodySettings.styles?.backgroundColor??ot.styles.backgroundColor,color:t.bodySettings.styles?.color??ot.styles.color,fontFamily:t.bodySettings.styles?.fontFamily??ot.styles.fontFamily}}));return`<!DOCTYPE html>\n${at({bodySettings:o,blockList:n,templateData:t.templateData})}`}const lt=["product"];function rt(e){return Array.isArray(e)?e:e&&"object"==typeof e?Object.values(e):[]}function st(e,t={}){if(!e||"object"!=typeof e)return e;if("image"===e.key){const n="string"==typeof e.imageVariable&&/^\{\{\w+\}\}$/.test(e.imageVariable.trim())?e.imageVariable.trim():"",o="string"==typeof e.src&&/^\{\{\w+\}\}$/.test(e.src.trim())?e.src.trim():"",{imageVariable:a,...i}=e;return{...i,src:o||n||e.src,children:rt(e.children).map(e=>st(e,t))}}if("column"===e.key){const{ctaText:n,...o}=e,a=e.containerType,i=function(e){return null==e||"none"===e?"none":"discount"===e?"discount":"product"===e||"hero_product"===e||"additional_product"===e?"product":"none"}(a),l="product"===i?e.productRole??("additional_product"===a?"additional":"main"):void 0,r=rt(e.children);let s=e.columnProducts;if(lt.includes(i)){const e=r.length;Array.isArray(s)||(s=[]),s=Array.from({length:e},(e,t)=>s[t]??null)}else s=[];return{...o,containerType:i,productRole:l,columnProducts:s,children:(r||[]).map(e=>st(e,t))}}if("heading"===e.key){const n=e.id?t?.[e.id]:null,o={...e,key:"text",name:e.name,type:e.type||"h1",contentType:e.contentType??"static",text:e.text,styles:e.styles,contentStyles:e.contentStyles,selectedVariableKey:e.selectedVariableKey,dynamicVariable:n?.variable??e.dynamicVariable,dynamicPrompt:n?.prompt??e.dynamicPrompt,dynamicSelectedContent:n?.selectedContent??e.dynamicSelectedContent,dynamicOptions:Array.isArray(n?.options)?n.options:n?.selectedContent?[n.selectedContent]:e.dynamicOptions};return"dynamic"===o.contentType&&(o.dynamicVariable=o.dynamicVariable??"",o.dynamicPrompt=o.dynamicPrompt??"",o.dynamicSelectedContent=o.dynamicSelectedContent??"",o.dynamicOptions=Array.isArray(o.dynamicOptions)?o.dynamicOptions:[]),{...o,children:rt(e.children).map(e=>st(e,t))}}if("text"===e.key){const n=e.id?t?.[e.id]:null,o=e.contentType??"static",a={...e,type:e.type||"p",contentType:o};return"dynamic"===o&&(a.dynamicVariable=n?.variable??e.dynamicVariable??"",a.dynamicPrompt=n?.prompt??e.dynamicPrompt??"",a.dynamicSelectedContent=n?.selectedContent??e.dynamicSelectedContent??"",a.dynamicOptions=Array.isArray(n?.options)?n.options:n?.selectedContent?[n.selectedContent]:Array.isArray(e.dynamicOptions)?e.dynamicOptions:[]),{...a,children:rt(e.children).map(e=>st(e,t))}}return{...e,children:rt(e.children).map(e=>st(e,t))}}function ct(e,t={}){const n=Array.isArray(e)?e:e&&"object"==typeof e?Object.values(e):null;if(!Array.isArray(n))return e;const o=n.map(e=>st(e,t));return o.forEach(u),o}const dt="https://api-alpha.markopolo.ai/v1",pt="https://nbq-ml-api-stg.markopolo.ai/v1",ut="95b48b5b-cf5e-486d-817e-9839d4c4e618";function mt(e,t){const n=null!=(o=e)&&"string"==typeof o&&o.trim()?o.replace(/\/$/,""):dt;var o;const a=function(e){return null!=e&&"string"==typeof e&&e.trim()?e.replace(/\/$/,""):pt}(t);return{imageUploadEndpoint:`${n}/upload-file`,imageUploadQueryParams:{show:!1},imageUploadCompanyField:"comment",productsEndpoint:`${n}/knowledge-base/products`,mlEmailNodesEndpoint:`${a}/ml-service/content/generate-email-nodes`}}function gt(e={}){const t=e&&"object"==typeof e?e:{},{apiBaseUrlV1:n,apiBaseV1:o,mlGenerationApiBaseUrlV1:a,mlApiBaseUrlV1:i,headers:l,...r}=t,s=n||o||dt,c="undefined"!=typeof process&&process.env?.REACT_APP_ML_API_BASE_V1,d=mt(s,a||i||c||pt),p="undefined"!=typeof process?String(process.env?.REACT_APP_EMAIL_TEMPLATE_ID??"").trim():"",u={...d,...r},m=String(u.emailTemplateId??"").trim()||p||ut;return{...u,emailTemplateId:m,headers:{...u.headers||{},...l||{}}}}function yt(e){const t=String(e??"").trim();return/^(?:javascript|vbscript)\s*:/i.test(t)||/^data\s*:/i.test(t)}function ht(e,t={}){const{allowMailtoTel:n=!0}=t,o=String(e??"").trim();return o?yt(o)?null:/^https?:\/\//i.test(o)||n&&(/^mailto:/i.test(o)||/^tel:/i.test(o))?o:`https://${o.replace(/^\/+/,"")}`:null}function bt(e,t=!1,n={}){const{allowMailtoTel:o=!0}=n;if(null==e||""===String(e).trim())return t;const a=String(e).trim();if(yt(a))return!1;let i;i=/^https?:\/\//i.test(a)||o&&/^mailto:/i.test(a)||o&&/^tel:/i.test(a)?a:`https://${a}`;try{const e=new URL(i);return"http:"===e.protocol||"https:"===e.protocol||(!(!o||"mailto:"!==e.protocol)||!(!o||"tel:"!==e.protocol))}catch{return!1}}const ft={preHeader:"",contentWidth:600,styles:{backgroundColor:"#f5f5f5",color:"#152b2a",fontFamily:"Arial"}};function kt(e){if(!e||"object"!=typeof e)return"";return`${e.severity??"unknown"}:${e.code??"issue"}:${e.blockId??"global"}:${e.location??""}`}function _t(e,t=!1){if(null==e||""===String(e).trim())return t;const n=String(e).trim();try{return/^https?:\/\//i.test(n)?new URL(n):new URL("https://"+n),!0}catch{return!1}}const xt={text:"Text",heading:"Heading",button:"Button",image:"Image",avatar:"Profile image",menu:"Menu",social_link:"Social links"};const vt={none:"Container",product:"Product",discount:"Discount",header:"Header",footer:"Footer",navigation_bar:"Navigation",introduction:"Introduction",hero:"Hero",hero_product:"Hero product",body:"Body",additional_product:"Additional product"};function wt(e,t,n){const o=e.containerType??"none",a=function(e){const t=e??"none";return vt[t]?vt[t]:String(t).replace(/_/g," ").replace(/\b\w/g,e=>e.toUpperCase())}(o);return n<=1?a:"none"===o?`${Ct(t+1)} section`:`${Ct(t+1)} ${a} block`}function Ct(e){const t=e%10,n=e%100;return 1===t&&11!==n?`${e}st`:2===t&&12!==n?`${e}nd`:3===t&&13!==n?`${e}rd`:`${e}th`}function St(e,t){return t<=1?null:`${Ct(e+1)} of ${t} stacked blocks`}function jt(e,t,n,o){const a=function(e){return xt[e]?xt[e]:String(e||"block").replace(/_/g," ").replace(/\b\w/g,e=>e.toUpperCase())}(t),i=[...e];o&&i.push(o);const l=i.length>0?i.join(" → "):"Email body";return n?`${a} ("${n}") — ${l}`:`${a} — ${l}`}function It(e,t){const n=function(e){return null==e||"object"!=typeof e?{...ft,styles:{...ft.styles}}:{preHeader:null!=e.preHeader?e.preHeader:ft.preHeader,contentWidth:Number(e.contentWidth)||ft.contentWidth,styles:{backgroundColor:null!=e.styles?.backgroundColor?e.styles.backgroundColor:ft.styles.backgroundColor,color:null!=e.styles?.color?e.styles.color:ft.styles.color,fontFamily:null!=e.styles?.fontFamily?e.styles.fontFamily:ft.styles.fontFamily}}}(e);("number"!=typeof n.contentWidth||n.contentWidth<=0)&&t.push({severity:"error",code:"body_content_width_invalid",message:"Body content width must be a positive number.",location:"Theme settings"});const o=n.styles;null!=o.backgroundColor&&""!==String(o.backgroundColor).trim()||t.push({severity:"error",code:"body_background_color_missing",message:"Theme background color is missing.",location:"Theme settings"}),null!=o.color&&""!==String(o.color).trim()||t.push({severity:"error",code:"body_text_color_missing",message:"Theme text color is missing.",location:"Theme settings"}),null!=o.fontFamily&&""!==String(o.fontFamily).trim()||t.push({severity:"error",code:"body_font_family_missing",message:"Theme font family is missing.",location:"Theme settings"})}function Nt(e,t){e.push(t)}const Tt=["product"];function At(e,t,n,o,a,i){if("dynamic"!==(e.contentType??"static"))return;const l=e.dynamicSelectedContent,r=null!=e?.id?i?.[e.id]?.selectedContent:void 0;let s=null!=l&&""!==String(l).trim()?l:r;var c;null!=s&&""!==String(s).trim()||null==e.text||""===(null==(c=e.text)?"":String(c).replace(/<[^>]+>/g," ").replace(/\s+/g," ").trim())||(s=e.text),null!=s&&""!==String(s).trim()||Nt(n,{severity:"warning",code:"dynamic_content_empty",message:"Dynamic content not generated; export will use static text if available.",location:jt(t,o,void 0,a),blockId:e.id??null})}function Lt(e,t,n,o){const a=e.list||[],i=new Set;a.forEach((a,l)=>{const r=a.title||a.image||`link ${l+1}`,s=e=>jt(t,"social_link",e||r,o),c=function(e){const t=String(e?.image||"").trim();if(t)return`img:${t}`;const n=String(e?.title||"").trim().toLowerCase();return n?`title:${n}`:null}(a);c&&(i.has(c)?Nt(n,{severity:"warning",code:"social_duplicate_platform",message:"Duplicate social platform in this block; only one entry per platform should be kept.",location:s(r),blockId:e.id??null}):i.add(c));const d=a.linkURL;null==d||""===String(d).trim()?Nt(n,{severity:"warning",code:"social_empty_link",message:'Social link URL is empty; will be saved as href="https://".',location:s(r),blockId:e.id??null}):yt(d)?Nt(n,{severity:"error",code:"social_blocked_scheme",message:"Social link uses a blocked URL scheme (javascript:, data:, etc.). Use http(s) URLs only (e.g. www.example.com or https://…).",location:s(r),blockId:e.id??null}):bt(d,!1,{allowMailtoTel:!1})||Nt(n,{severity:"warning",code:"social_invalid_link",message:"Social link URL format is invalid.",location:s(r),blockId:e.id??null});const p=a.image;null==p||""===String(p).trim()?Nt(n,{severity:"warning",code:"social_empty_icon",message:"Social link icon URL is empty; icon will not display.",location:s(r),blockId:e.id??null}):_t(p,!1)||Nt(n,{severity:"warning",code:"social_invalid_icon",message:"Social link icon URL format is invalid.",location:s(r),blockId:e.id??null})}),0===a.length&&Nt(n,{severity:"info",code:"social_no_links",message:"Social link block has no links.",location:jt(t,"social_link",void 0,o),blockId:e.id??null})}function Pt(e,t,n,o,a){if(!Array.isArray(e))return;const i=e.length;e.forEach((e,l)=>{if(!e||"object"!=typeof e)return;const r=e.key;if("column"===r){const r=wt(e,l,i),s=[...t,r];return function(e,t,n){const o=e.containerType??"none";if(!Tt.includes(o))return;const a=e.children??[],i=e.columnProducts??[];a.forEach((o,l)=>{const r=i[l];if(null==r||"object"==typeof r&&!r.id){const o=a.length>1?`Column ${l+1} of ${a.length}`:"This column",i=[...t,o].join(" → ");Nt(n,{severity:"warning",code:"container_product_not_assigned",message:"A product is not assigned to this column; assign a product in Container settings.",location:i,blockId:e.id??null})}})}(e,s,n),void(Array.isArray(e.children)&&Pt(e.children,s,n,o,a))}if("content"===r){const r=i>1?`Column ${l+1} of ${i}`:null,s=r?[...t,r]:t;return void(Array.isArray(e.children)&&Pt(e.children,s,n,o,a))}const s=St(l,i);switch(r){case"image":!function(e,t,n,o){const a=e.src,i=()=>jt(t,"image",void 0,o);null!=a&&""!==String(a).trim()?(_t(a,!1)||Nt(n,{severity:"warning",code:"image_invalid_src",message:"Image URL format is invalid.",location:i(),blockId:e.id??null}),null!=e.alt&&""!==String(e.alt).trim()||Nt(n,{severity:"info",code:"image_empty_alt",message:"Image alt text is empty; consider adding for accessibility.",location:i(),blockId:e.id??null})):Nt(n,{severity:"error",code:"image_empty_src",message:"Image URL is empty; the image will not display.",location:i(),blockId:e.id??null})}(e,t,n,s);break;case"avatar":!function(e,t,n,o){const a=e.src,i=()=>jt(t,"avatar",void 0,o);null==a||""===String(a).trim()?Nt(n,{severity:"warning",code:"avatar_empty_src",message:"Avatar image URL is empty; avatar will not display.",location:i(),blockId:e.id??null}):_t(a,!1)||Nt(n,{severity:"warning",code:"avatar_invalid_src",message:"Avatar image URL format is invalid.",location:i(),blockId:e.id??null})}(e,t,n,s);break;case"button":!function(e,t,n,o){const a=e.linkURL,i=()=>jt(t,"button",void 0,o);null!=a&&""!==String(a).trim()?yt(a)?Nt(n,{severity:"error",code:"button_blocked_scheme",message:"Button link uses a blocked URL scheme (javascript:, data:, etc.). Use http(s), mailto:, or tel: only.",location:i(),blockId:e.id??null}):bt(a,!1,{allowMailtoTel:!0})||Nt(n,{severity:"warning",code:"button_invalid_link",message:"Button link URL format is invalid.",location:i(),blockId:e.id??null}):Nt(n,{severity:"warning",code:"button_empty_link",message:'Button link URL is empty; will be saved as href="https://".',location:i(),blockId:e.id??null})}(e,t,n,s);break;case"menu":!function(e,t,n,o){const a=e.list||[];a.forEach((a,i)=>{const l=e=>jt(t,"menu",e||`Item ${i+1}`,o);null!=a.label&&""!==String(a.label).trim()||Nt(n,{severity:"info",code:"menu_empty_label",message:'Menu item label is empty; will show as "Link".',location:l(`item ${i+1}`),blockId:e.id??null});const r=a.url;null==r||""===String(r).trim()?Nt(n,{severity:"warning",code:"menu_empty_url",message:'Menu item URL is empty; will be saved as href="#".',location:l(a.label||`item ${i+1}`),blockId:e.id??null}):yt(r)?Nt(n,{severity:"error",code:"menu_blocked_scheme",message:"Menu item URL uses a blocked scheme (javascript:, data:, etc.). Use http(s), mailto:, or tel: only.",location:l(a.label||`item ${i+1}`),blockId:e.id??null}):bt(r,!1,{allowMailtoTel:!0})||Nt(n,{severity:"warning",code:"menu_invalid_url",message:"Menu item URL format is invalid.",location:l(a.label||`item ${i+1}`),blockId:e.id??null})}),0===a.length&&Nt(n,{severity:"info",code:"menu_no_items",message:"Menu block has no items.",location:jt(t,"menu",void 0,o),blockId:e.id??null})}(e,t,n,s);break;case"social_link":Lt(e,t,n,s);break;case"text":At(e,t,n,"text",s,a);break;case"heading":At(e,t,n,"heading",s,a)}})}function Rt({blockList:e,bodySettings:t,aiContentRefs:n={}}){const o=[];return It(t,o),Pt(Array.isArray(e)?e:[],[],o,t,n),o}function $t(){const e="undefined"!=typeof window&&null!=window?window:"undefined"!=typeof global&&null!=global?global:void 0;if(!e)return;const t=e.Image;return"function"==typeof t?t:void 0}const Bt=/^\{\{\s*[\w.]+\s*\}\}$/;function Dt(e){if(null==e||""===String(e).trim())return null;const t=String(e).trim();if(function(e){return null!=e&&"string"==typeof e&&Bt.test(e.trim())}(t))return null;if(/^https?:\/\//i.test(t))return _t(t,!1)?t:null;if(t.startsWith("//")){const e=`https:${t}`;return _t(e,!1)?e:null}return null}function Mt(e,t=[],n=e?.length??0){const o=[];return Array.isArray(e)?(e.forEach((e,a)=>{if(!e||"object"!=typeof e)return;const i=e.key;if("column"===i){const i=wt(e,a,n),l=[...t,i],r=e.children;return void o.push(...Mt(r,l,r?.length??0))}if("content"===i){const i=n>1?`Column ${a+1} of ${n}`:null,l=i?[...t,i]:t,r=e.children;return void o.push(...Mt(r,l,r?.length??0))}const l=St(a,n);if("image"===i){const n=Dt(e.src);n&&o.push({url:n,location:jt(t,"image",void 0,l),blockId:e.id??null})}}),o):o}function Et(e,t=12e3){const n=$t();if(!n)return Promise.resolve(!1);const o=String(e).trim();return o?new Promise(e=>{const a=new n;let i=!1;const l=t=>{i||(i=!0,clearTimeout(r),a.onload=null,a.onerror=null,e(t))},r=setTimeout(()=>l(!1),t);a.onload=()=>l(!0),a.onerror=()=>l(!1);try{a.src=o}catch{l(!1)}}):Promise.resolve(!1)}async function Ut(e,t={}){const{timeoutMs:n=12e3,concurrent:o=6}=t;if(!$t())return[];const a=Mt(Array.isArray(e)?e:[]);if(0===a.length)return[];const i=new Map;for(const e of a)i.has(e.url)||i.set(e.url,[]),i.get(e.url).push(e.location);const l=[...i.keys()],r=new Map;let s=0;const c=Math.max(1,Math.min(o,l.length));await Promise.all(Array.from({length:c},()=>async function(){for(;s<l.length;){const e=s++,t=l[e],o=await Et(t,n);r.set(t,o)}}()));const d=[];for(const[e,t]of i)if(!0!==r.get(e))for(const n of t)d.push({severity:"warning",code:"image_url_not_loadable",message:"Image URL could not be loaded or previewed; the link may be broken, expired, or blocked.",location:n,blockId:a.find(t=>t.url===e&&t.location===n)?.blockId??null});return d}async function Ft(e,t){return[...Rt(e),...await Ut(e?.blockList??[],t)]}const Ot=(...e)=>e.filter(Boolean).join(" "),Ht={drag_block_here:"请将模块拖放到此处",blocks:"模块",photos:"图片",powered_by_pexels:"图片由Pexels提供",loading:"加载中...",content:"内容",styles:"样式",ai_powered:"AI 驱动",layout:"布局",components:"组件",presets:"预设",body_settings:"邮件主题设置",global:"全局",text_and_headings:"文本与标题",pre_header:"预标题",pre_header_description:"预标题是在收件箱中查看电子邮件时跟随主题行的简短摘要文本。",confirm:"确认",cancel:"取消",add_blocks:"请添加块",block_product:"产品",block_product_single:"单个",block_product_multi:"多个",block_discount:"折扣",block_introduction:"引言",block_body:"正文",block_header:"页眉",block_footer:"页脚",no_product_found:"未找到产品",no_products_matching_search:"没有符合搜索条件的产品。清空搜索可查看完整列表。",load_more_products:"加载更多",add_products:"添加产品",add_products_in_store:"请在店铺中添加产品。",column:"列",columns:"列排版",column_settings:"列设置",column_styles:"列样式",size_px:"尺寸",column_delete:"删除列",column_delete_desc:"您确定删除多余的{{count}}列吗?",container:"容器",container_settings:"容器设置",container_type:"容器类型",container_type_help:"决定该容器可用的变量和产品映射。",container_type_none:"无",container_type_header:"页眉",container_type_discount:"折扣",container_type_introduction:"引言",container_type_body:"正文",container_type_product:"产品",container_type_hero_product:"主推产品",container_type_additional_product:"附加产品",container_type_footer:"页脚",product_role:"产品角色",product_role_main_hero:"主推产品",product_role_additional:"附加产品",assign_product_to_column:"为列分配产品",text:"文本",text_content:"这是一个文本,点击修改文本",text_settings:"文本设置",text_styles:"文本样式",text_align:"文本对齐方式",heading:"标题",heading_content:"这是一个标题,点击修改标题",heading_settings:"标题设置",heading_type:"标题类型",button:"按钮",button_settings:"按钮设置",button_action:"点击按钮触发",button_styles:"按钮样式",button_padding:"按钮内边距",spacer:"间距",spacer_block:"间距块",spacer_settings:"间距设置",divider:"分割线",divider_settings:"分割线设置",divider_type:"分割线类型",divider_styles:"分割线样式",image:"图片",image_settings:"图片设置",image_action:"点击图片跳转",image_url:"图片URL",image_alt:"图片alt",image_styles:"图片样式",image_source:"图片来源",image_source_url:"输入URL",image_source_upload:"上传图片",image_upload:"上传",image_upload_click:"点击上传",image_upload_not_configured:"未配置图片上传。请在 apiConfig 中设置 imageUploadEndpoint,或传入 null 关闭;默认使用内置 API 根地址。",image_uploaded:"图片上传成功",image_upload_failed:"图片上传失败",image_upload_error:"上传图片时出错",uploading:"上传中…",image_source_variable:"使用变量",menu:"导航栏",menu_settings:"导航栏设置",menu_items:"菜单项",menu_item:"菜单项",menu_styles:"菜单样式",add_new_item:"添加新项",label:"标签",page:"页面",url:"链接地址",target:"打开方式",same_tab:"当前窗口",new_tab:"新窗口",separator:"分隔符",letter_spacing:"字间距",link_color:"链接颜色",avatar:"头像",avatar_settings:"头像设置",avatar_image:"头像图片",avatar_border_radius:"圆角",social_link:"社交链接",add_social_link:"添加社交链接",social_link_size:"社交链接大小",social_links:"社交链接",social_link_settings:"社交链接设置",content_background_color:"内容背景颜色",background_color:"背景颜色",text_color:"文本颜色",email_theme_background_color:"邮件主题色",font_color:"字体颜色",button_color:"按钮颜色",divider_color:"分割线颜色",action_type:"按钮类型",top:"上",right:"右",left:"左",bottom:"下",line_height:"行高",link:"超链接",link_url:"超链接URL",link_url_placeholder:"example.com",padding_settings:"内边距设置",width_auto:"宽度自适应",width:"宽度",height:"高度",font_size:"字体大小",font_family:"字体",align:"对齐方式",solid:"实线",dotted:"虚线(点)",dashed:"虚线(破折号)",spacing:"间距",border_radius:"圆角",export_html:"导出html",export_json:"导出JSON",export_checking_images:"正在检查图片…",language_zh:"中文",export_validation_title:"导出前校验",export_validation_issues_found:"导出前发现以下问题",export_validation_errors:"错误",export_validation_warnings:"警告",export_validation_info:"提示",export_anyway:"仍要导出",ignore:"忽略",validation_body_content_width_invalid:"邮件内容宽度必须为正数。",validation_body_background_color_missing:"主题背景色未设置。",validation_body_text_color_missing:"主题文字颜色未设置。",validation_body_font_family_missing:"主题字体未设置。",validation_image_empty_src:"图片地址为空,图片将无法显示。",validation_image_invalid_src:"图片地址格式无效。",validation_image_url_not_loadable:"图片地址无法加载或预览;链接可能已失效、过期或被拦截。",validation_image_empty_alt:"图片未设置 alt 文本,建议添加以提升可访问性。",validation_avatar_empty_src:"头像图片地址为空,头像将无法显示。",validation_avatar_invalid_src:"头像图片地址格式无效。",validation_button_empty_link:'按钮链接为空,将被保存为 href="https://"。',validation_button_invalid_link:"按钮链接格式无效。",validation_button_blocked_scheme:"按钮链接使用了被禁止的 URL 协议(如 javascript:、data: 等)。请仅使用 http(s)、mailto: 或 tel:。",validation_menu_empty_label:"菜单项标签为空,将显示为「链接」。",validation_menu_empty_url:'菜单项链接为空,将被保存为 href="#"。',validation_menu_invalid_url:"菜单项链接格式无效。",validation_menu_blocked_scheme:"菜单项链接使用了被禁止的协议(如 javascript:、data: 等)。请仅使用 http(s)、mailto: 或 tel:。",validation_menu_no_items:"菜单块没有任何项。",validation_social_empty_link:'社交链接地址为空,将被保存为 href="https://"。',validation_social_invalid_link:"社交链接地址格式无效。",validation_social_blocked_scheme:"社交链接使用了被禁止的 URL 协议(如 javascript:、data: 等)。请仅使用 http(s) 地址(例如 www.example.com 或 https://…)。",validation_social_empty_icon:"社交链接图标地址为空,图标将无法显示。",validation_social_invalid_icon:"社交链接图标地址格式无效。",validation_social_no_links:"社交链接块没有任何链接。",validation_social_duplicate_platform:"社交链接块中存在重复平台,每个平台仅应保留一条。",validation_container_product_not_assigned:"该列未分配产品;请在容器设置中分配产品。",validation_dynamic_content_empty:"未生成动态内容;导出将使用静态文本(如有)。",tooltip_bold:"加粗",tooltip_italic:"斜体",tooltip_underline:"下划线",tooltip_strikethrough:"删除线",tooltip_align_left:"居左",tooltip_align_center:"居中",tooltip_align_right:"居右",tooltip_ordered_list:"有序列表",tooltip_unordered_list:"无序列表",tooltip_link:"超链接",tooltip_remove_link:"删除超链接",add_link_modal_title:"添加超链接",content_type:"内容类型",content_type_static:"静态",content_type_dynamic:"动态",ai_enabled:"使用 AI 撰写",text_and_content_type:"内容类型",heading_or_body:"标题",body_paragraph:"正文",heading_h1:"H1",heading_h2:"H2",heading_h3:"H3",heading_h4:"H4",variables:"变量",insert_merge_field:"选择或输入变量...",dynamic_prompt_help:"描述语气,我们将推荐示例内容。",generate:"生成",ml_generation_failed:"无法生成 AI 内容",ml_ai_unavailable:"AI 生成需要分栏布局、公司 ID、模板 ID 和 ML 接口。请将文本放在栏目内并检查 apiConfig。",ml_no_variations:"未返回任何建议。请更换提示词或确认服务器上存在该模板。",ml_generation_unexpected_error:"生成内容时发生意外错误。",sample_ai_content:"示例 AI 内容",select_content:"选择内容",variable_dynamic_placeholder:"无(可选)",variable_display_text:"展示文案",variable_introduction:"引言",variable_heading:"标题",variable_subheading:"副标题",variable_products_description:"产品描述",variable_customer_name:"客户姓名",variable_introduction_title:"引言标题",variable_introduction_subtitle:"引言副标题",variable_body_title:"正文标题",variable_body_subtitle:"正文副标题",variable_discount_value:"折扣力度",variable_discount_code:"折扣码",variable_valid_until:"有效期至",variable_company_name:"公司名称",variable_brand_name:"品牌名称",variable_address:"地址",variable_website:"网站",variable_logo_url:"Logo URL",variable_tagline:"标语",variable_nav_label:"导航文案",variable_nav_url:"导航链接",variable_product_name:"产品名称",variable_product_description:"产品描述",variable_product_image:"产品图片 URL",variable_product_link:"产品链接",variable_product_price:"产品价格",variable_product_currency:"货币",variable_product_old_price:"原价",variable_product_new_price:"现价",variable_product_price_display:"产品价格展示",variable_image_logo:"Logo",variable_image_hero_banner:"主图横幅",variable_image_footer_banner:"页脚横幅",variable_image_product_image:"产品图片",variable_cta_label:"CTA 文案",variable_cta_url:"CTA 链接",button_label_variable:"按钮文案(变量)",button_url_variable:"按钮链接(变量)",button_text:"按钮文案",button_label_manual:"输入文案",button_url_manual:"输入链接",use_company_social_links:"使用公司社交链接",use_navigation_links:"使用导航链接",tooltip_container_type:"决定该容器可用的变量和产品映射。",tooltip_variables_static:"将合并字段插入内容,发送邮件时将被替换。",tooltip_dynamic_prompt:"描述语气或意图,我们将推荐示例内容。(预览模式 — 连接 AI API 后可生成真实内容。)"},Kt={drag_block_here:"Drag block here",blocks:"Blocks",photos:"Photos",powered_by_pexels:"Powered by Pexels",loading:"Loading...",content:"Content",styles:"Styles",ai_powered:"AI powered",layout:"Layout",components:"Components",presets:"Presets",body_settings:"Theme Settings",global:"Global",text_and_headings:"Text and headings",pre_header:"Pre-header",pre_header_description:"The pre-header is a short summary text that follows the subject line when viewing an email in the inbox.",confirm:"Confirm",cancel:"Cancel",add_blocks:"Add blocks",block_product:"Product",block_product_single:"Single",block_product_multi:"Multi",block_discount:"Discount",block_introduction:"Introduction",block_body:"Body",block_header:"Header",block_footer:"Footer",no_product_found:"No product found",no_products_matching_search:"No products match your search. Clear the search to see the full list.",load_more_products:"Load more",add_products:"Add products",add_products_in_store:"Add products in your store.",column:"Column",columns:"Columns",column_settings:"Column Settings",column_styles:"Column Styles",size_px:"Size",column_delete:"Delete Column",column_delete_desc:"Are you sure you want to delete {{count}} extra columns? ",container:"Container",container_settings:"Container Settings",container_type:"Container Type",container_type_help:"Determines which variables and product mappings are available.",container_type_none:"None",container_type_header:"Header",container_type_discount:"Discount",container_type_introduction:"Introduction",container_type_body:"Body",container_type_product:"Product",container_type_hero_product:"Hero Product",container_type_additional_product:"Additional Product",container_type_footer:"Footer",product_role:"Product Role",product_role_main_hero:"Primary",product_role_additional:"Secondary",assign_product_to_column:"Assign product to column",text:"Text",text_content:"This is a text, click to edit text",text_settings:"Text Settings",text_styles:"Text Styles",text_align:"Text Align",heading:"Heading",heading_content:"This is a heading, click to edit heading",heading_settings:"Heading Settings",heading_type:"Heading Type",button:"Button",button_settings:"Button Settings",button_action:"Button Action",button_styles:"Button Styles",button_padding:"Button Padding",spacer:"Spacer",spacer_block:"SPACER BLOCK",spacer_settings:"Spacer Settings",divider:"Divider",divider_settings:"Divider Settings",divider_type:"Divider Type",divider_styles:"Divider Styles",image:"Image",image_action:"Image Action",image_url:"Image URL",image_alt:"Image Alt",image_styles:"Image Styles",image_settings:"Image Settings",image_source:"Image source",image_source_url:"Enter URL",image_source_upload:"Upload image",image_upload:"Upload",image_upload_click:"Click to upload",image_upload_not_configured:"Image upload is not configured. Set imageUploadEndpoint in apiConfig or pass null to disable; defaults use the built-in API base.",image_uploaded:"Image uploaded successfully",image_upload_failed:"Failed to upload image",image_upload_error:"Error uploading image",uploading:"Uploading…",image_source_variable:"Use variable",menu:"Navigation bar",menu_settings:"Navigation bar Settings",menu_items:"Menu Items",menu_item:"Menu Item",menu_styles:"Menu Styles",add_new_item:"Add New Item",label:"Label",page:"Page",url:"URL",target:"Target",same_tab:"Same Tab",new_tab:"New Tab",separator:"Separator",letter_spacing:"Letter Spacing",link_color:"Link Color",avatar:"Avatar",avatar_settings:"Avatar Settings",avatar_image:"Avatar image",avatar_border_radius:"Border radius",social_link:"Social Link",social_link_settings:"Social Link Settings",add_social_link:"Add Social Link",social_link_size:"Social Link Size",social_links:"Social Links",content_background_color:"Content Background Color",background_color:"Background Color",text_color:"Text Color",email_theme_background_color:"Email Theme Background Color",font_color:"Font Color",button_color:"Button Color",divider_color:"Divider Color",action_type:"Action Type",top:"Top",right:"Right",left:"Left",bottom:"Bottom",line_height:"Line Height",link:"Link",link_url:"Link URL",link_url_placeholder:"example.com",padding_settings:"Padding Settings",width:"Width",height:"Height",width_auto:"Width Auto",font_size:"Font Size",font_family:"Font Family",solid:"Solid",dotted:"Dotted",dashed:"Dashed",align:"Align",spacing:"Spacing",border_radius:"Border radius",export_html:"Export HTML",export_json:"Export JSON",export_checking_images:"Checking images…",language_zh:"中文",export_validation_title:"Export validation",export_validation_issues_found:"Issues found before export",export_validation_errors:"Errors",export_validation_warnings:"Warnings",export_validation_info:"Info",export_anyway:"Export anyway",ignore:"Ignore",validation_body_content_width_invalid:"Body content width must be a positive number.",validation_body_background_color_missing:"Theme background color is missing.",validation_body_text_color_missing:"Theme text color is missing.",validation_body_font_family_missing:"Theme font family is missing.",validation_image_empty_src:"Image URL is empty; the image will not display.",validation_image_invalid_src:"Image URL format is invalid.",validation_image_url_not_loadable:"Image URL could not be loaded or previewed; the link may be broken, expired, or blocked.",validation_image_empty_alt:"Image alt text is empty; consider adding for accessibility.",validation_avatar_empty_src:"Avatar image URL is empty; avatar will not display.",validation_avatar_invalid_src:"Avatar image URL format is invalid.",validation_button_empty_link:'Button link URL is empty; will be saved as href="https://".',validation_button_invalid_link:"Button link URL format is invalid.",validation_button_blocked_scheme:"Button link uses a blocked URL scheme (javascript:, data:, etc.). Use http(s), mailto:, or tel: only.",validation_menu_empty_label:'Menu item label is empty; will show as "Link".',validation_menu_empty_url:'Menu item URL is empty; will be saved as href="#".',validation_menu_invalid_url:"Menu item URL format is invalid.",validation_menu_blocked_scheme:"Menu item URL uses a blocked scheme (javascript:, data:, etc.). Use http(s), mailto:, or tel: only.",validation_menu_no_items:"Menu block has no items.",validation_social_empty_link:'Social link URL is empty; will be saved as href="https://".',validation_social_invalid_link:"Social link URL format is invalid.",validation_social_blocked_scheme:"Social link uses a blocked URL scheme (javascript:, data:, etc.). Use http(s) only (e.g. www.example.com or https://…).",validation_social_empty_icon:"Social link icon URL is empty; icon will not display.",validation_social_invalid_icon:"Social link icon URL format is invalid.",validation_social_no_links:"Social link block has no links.",validation_social_duplicate_platform:"Duplicate social platform in this block; only one entry per platform should be kept.",validation_container_product_not_assigned:"A product is not assigned to this column; assign a product in Container settings.",validation_dynamic_content_empty:"Dynamic content not generated; export will use static text if available.",tooltip_bold:"Bold",tooltip_italic:"Italic",tooltip_underline:"Underline",tooltip_strikethrough:"Strikethrough",tooltip_align_left:"Align left",tooltip_align_center:"Align center",tooltip_align_right:"Align right",tooltip_ordered_list:"Ordered list",tooltip_unordered_list:"Unordered list",tooltip_link:"Link",tooltip_remove_link:"Remove link",add_link_modal_title:"Add link",content_type:"Content type",content_type_static:"Static",content_type_dynamic:"Dynamic",ai_enabled:"Write using AI",text_and_content_type:"Content type",heading_or_body:"Heading",body_paragraph:"Body",heading_h1:"H1",heading_h2:"H2",heading_h3:"H3",heading_h4:"H4",variables:"Variables",insert_merge_field:"Select or type variable...",dynamic_prompt_help:"Describe the tone; we'll suggest sample content.",generate:"Generate",ml_generation_failed:"Could not generate AI content",ml_ai_unavailable:"AI generation needs a column layout, company ID, template ID, and ML endpoint. Open this text inside a section column and check apiConfig.",ml_no_variations:"No suggestions were returned. Try another prompt or verify the template exists on the server.",ml_generation_unexpected_error:"Something went wrong while generating content.",sample_ai_content:"Sample AI content",select_content:"Select content",variable_dynamic_placeholder:"None (optional)",variable_display_text:"Display text",variable_introduction:"Introduction",variable_heading:"Heading",variable_subheading:"Subheading",variable_products_description:"Products description",variable_customer_name:"Customer Name",variable_introduction_title:"Introduction Title",variable_introduction_subtitle:"Introduction Subtitle",variable_body_title:"Body Title",variable_body_subtitle:"Body Subtitle",variable_discount_value:"Discount value",variable_discount_code:"Discount code",variable_valid_until:"Valid until",variable_company_name:"Company name",variable_brand_name:"Brand name",variable_address:"Address",variable_website:"Website",variable_logo_url:"Logo URL",variable_tagline:"Tagline",variable_nav_label:"Nav link label",variable_nav_url:"Nav link URL",variable_product_name:"Product name",variable_product_description:"Product description",variable_product_image:"Product image URL",variable_product_link:"Product link",variable_product_price:"Product price",variable_product_currency:"Product currency",variable_product_old_price:"Product old price",variable_product_new_price:"Product new price",variable_product_price_display:"Product price display",variable_image_logo:"Logo",variable_image_hero_banner:"Hero banner",variable_image_footer_banner:"Footer banner",variable_image_product_image:"Product image",variable_cta_label:"CTA label",variable_cta_url:"CTA URL",button_label_variable:"Button label (variable)",button_url_variable:"Button URL (variable)",button_text:"Button text",button_label_manual:"Enter label",button_url_manual:"Enter URL",use_company_social_links:"Use company social links",use_navigation_links:"Use navigation links",tooltip_container_type:"Determines which variables and product mappings are available for this container.",tooltip_variables_static:"Insert a merge field into your content. It will be replaced when the email is sent.",tooltip_dynamic_prompt:"Describe the tone or intent; we'll suggest sample content. (Preview mode — connect an AI API for real generation.)"},zt=()=>{const{language:t,languageLibraries:n}=e.useContext(O);let o={zh:Ht,en:Kt};n&&(o={...o,...n,zh:{...Ht,...o.zh||{}},en:{...Kt,...o.en||{}}});return{t:(e,n)=>{let a=(o[t]||{})[e];return n&&n instanceof Object&&Object.keys(n).forEach(e=>{a=a.replace(`{{${e}}}`,n[e])}),a||e}}},Vt=/\{\{(\w+)\}\}/g;function Wt(e,t){if(null!=e)if("string"!=typeof e){if(Array.isArray(e))e.forEach(e=>Wt(e,t));else if("object"==typeof e){if(void 0!==e.$$typeof)return;Object.values(e).forEach(e=>Wt(e,t))}}else(function(e){if("string"!=typeof e||0===e.length)return[];const t=[];let n;for(;null!==(n=Vt.exec(e));){const e=n[1];e&&t.push(e)}return Vt.lastIndex=0,t})(e).forEach(e=>t.add(e))}function qt(e,t,n){e&&"object"==typeof e&&(e.id&&n.has(e.id)||(e.id&&n.add(e.id),"column"!==e.key?Wt(e,t):(e.children||[]).forEach(e=>{(e?.children||[]).forEach(e=>qt(e,t,n))})))}function Jt(e,t,n,o){if(!e||o.has(e))return;o.add(e);const a=t[e];a&&"object"==typeof a&&("column"===a.key?(a.cells||[]).forEach(e=>{(e.childrenIds||[]).forEach(e=>Jt(e,t,n,o))}):Wt(a,n))}function Gt(e,t){const n=new Set;if(!e||"object"!=typeof e)return n;if(Array.isArray(e.children)){const t=new Set;return qt(e,n,t),n}if(!t||"object"!=typeof t)return n;const o=new Set;return(e.cells||[]).forEach(e=>{(e.childrenIds||[]).forEach(e=>Jt(e,t,n,o))}),n}const Yt=()=>{const t=(e,n)=>e?e.classList?.contains("text-content_editable")?null:e&&e.tagName?.toLocaleLowerCase()===n?e:t(e.parentNode,n):null,n=e.useCallback((e,t)=>e?e.classList?.contains("text-content_editable")?null:e&&e.style?.[t]?e.style[t]:n(e.parentNode,t):null,[]);return{getSelectionNode:t,getSectionStyle:n}},Zt=({modifyText:t,setTextContent:a})=>{const{selectionRange:l}=e.useContext(O),{getSelectionNode:r}=Yt(),{t:s}=zt(),c=e.useMemo(()=>l?r(l.commonAncestorContainer,"b"):null,[l,r]);return i.jsx("button",{className:Ot("rich-text-tools-button ",c&&"rich-text-tools-button-active"),title:s("tooltip_bold"),onClick:()=>{t("bold",!1,null),a()},children:i.jsx(n.FontAwesomeIcon,{icon:o.faBold,className:"rich-text-tools-button-icon"})})},Qt=({modifyText:t,setTextContent:a})=>{const{selectionRange:l}=e.useContext(O),{getSelectionNode:r}=Yt(),{t:s}=zt(),c=e.useMemo(()=>l?r(l.commonAncestorContainer,"i"):null,[l,r]);return i.jsx("button",{className:Ot("rich-text-tools-button ",c&&"rich-text-tools-button-active"),title:s("tooltip_italic"),onClick:()=>{t("italic",!1,null),a()},children:i.jsx(n.FontAwesomeIcon,{icon:o.faItalic,className:"rich-text-tools-button-icon"})})},Xt=({modifyText:t,setTextContent:a})=>{const{selectionRange:l}=e.useContext(O),{getSelectionNode:r}=Yt(),{t:s}=zt(),c=e.useMemo(()=>l?r(l.commonAncestorContainer,"u"):null,[l,r]);return i.jsx("button",{className:Ot("rich-text-tools-button ",c&&"rich-text-tools-button-active"),title:s("tooltip_underline"),onClick:()=>{t("underline",!1,null),a()},children:i.jsx(n.FontAwesomeIcon,{icon:o.faUnderline,className:"rich-text-tools-button-icon"})})},en=({modifyText:t,setTextContent:a})=>{const{selectionRange:l}=e.useContext(O),{getSelectionNode:r}=Yt(),{t:s}=zt(),c=e.useMemo(()=>l?r(l.commonAncestorContainer,"strike"):null,[l,r]);return i.jsx("button",{className:Ot("rich-text-tools-button ",c&&"rich-text-tools-button-active"),title:s("tooltip_strikethrough"),onClick:()=>{t("strikethrough",!1,null),a()},children:i.jsx(n.FontAwesomeIcon,{icon:o.faStrikethrough,className:"rich-text-tools-button-icon"})})},tn=({modifyText:t,setTextContent:a})=>{const{selectionRange:l}=e.useContext(O),{getSelectionNode:r}=Yt(),{t:s}=zt(),c=e.useMemo(()=>l?r(l.commonAncestorContainer,"ol"):null,[l,r]);return i.jsx("button",{className:Ot("rich-text-tools-button ",c&&"rich-text-tools-button-active"),title:s("tooltip_ordered_list"),onClick:()=>{t("insertOrderedList",!1,null),a()},children:i.jsx(n.FontAwesomeIcon,{icon:o.faListOl,className:"rich-text-tools-button-icon"})})},nn=({modifyText:t,setTextContent:a})=>{const{selectionRange:l}=e.useContext(O),{getSelectionNode:r}=Yt(),{t:s}=zt(),c=e.useMemo(()=>l?r(l.commonAncestorContainer,"ul"):null,[l,r]);return i.jsx("button",{className:Ot("rich-text-tools-button ",c&&"rich-text-tools-button-active"),title:s("tooltip_unordered_list"),onClick:()=>{t("insertUnorderedList",!1,null),a()},children:i.jsx(n.FontAwesomeIcon,{icon:o.faListUl,className:"rich-text-tools-button-icon"})})},on=({modifyText:a,setTextContent:l})=>{const{selectionRange:r}=e.useContext(O),{t:s}=zt(),{getSelectionNode:c}=Yt(),[d,p]=e.useState(!1),[u,m]=e.useState({value:"",range:null}),g=e.useMemo(()=>r?c(r.commonAncestorContainer,"a"):null,[r,c]),y=()=>{p(!1),m({value:"",range:null})};return i.jsxs(i.Fragment,{children:[i.jsx("button",{className:Ot("rich-text-tools-button ",g&&"rich-text-tools-button-active"),title:s("tooltip_link"),onClick:()=>{let e=window.getSelection().getRangeAt(0);const t=e.commonAncestorContainer.parentNode,n="A"===t.nodeName,o={...u,range:e};n&&(o.rangeIsLink=!0,o.value=t.href.replace("https://","")),m(o),p(!0),l()},children:i.jsx(n.FontAwesomeIcon,{icon:o.faLink,className:"rich-text-tools-button-icon"})}),i.jsx("button",{className:Ot("rich-text-tools-button"),title:s("tooltip_remove_link"),onClick:()=>{a("unlink",!1,null),l()},children:i.jsx(n.FontAwesomeIcon,{icon:o.faUnlink,className:"rich-text-tools-button-icon"})}),i.jsx(t.Modal,{title:s("add_link_modal_title"),open:d,zIndex:1100,onOk:()=>{const{range:e,value:t,rangeIsLink:n}=u;if(n)e.commonAncestorContainer.parentNode.href=t;else{let n=document.createElement("a");n.target="_blank",n.href=t,e.surroundContents(n)}l(),y()},onCancel:y,okText:s("confirm"),cancelText:s("cancel"),wrapClassName:"ee-modal-dark",children:i.jsx(t.Input,{addonBefore:"https://",value:u.value.replace("https://",""),onChange:e=>m({...u,value:"https://"+e.target.value})})})]})},an=({id:l,textBlock:r,styles:s})=>{const{blockMap:c,rootOrder:d,templateData:p}=e.useContext(O),{t:u}=zt(),m=e.useRef(null),[g,y]=e.useState(!1),[h,b]=e.useState(!1),f=e.useMemo(()=>{const e=k(c,d,l),t=e?.[0]??null;return{containerBlock:t?.containerBlock??null,containerType:t?.containerType??"none",cellIndex:t?.cellIndex??0,lineage:e}},[c,d,l]),_=e.useMemo(()=>{const e=f?.cellIndex??0,t=f?.containerBlock;return{columnIndex:e,columnProduct:t?.columnProducts?.[e]??null}},[f]),x=e.useMemo(()=>(f?.lineage??[]).slice(1).filter(e=>e?.containerType&&"none"!==e.containerType).map(e=>{const t=e.cellIndex??0;return{containerType:e.containerType,context:{columnIndex:t,columnProduct:e.containerBlock?.columnProducts?.[t]??null}}}),[f?.lineage]),v=e.useMemo(()=>Ke(0,f?.containerType??"none",p,_,x),[f?.containerType,p,_,x]),w=e.useMemo(()=>Gt(f?.containerBlock,c),[f?.containerBlock,c]),C=e.useMemo(()=>v.filter(e=>"image"!==e.type&&!w.has(e.variableKey??e.key)),[v,w]);e.useEffect(()=>{if(m.current){var e=m.current.parentNode?.getBoundingClientRect();const t=document.querySelector("#preview").getBoundingClientRect();e.top-190<0?(m.current.style.bottom="auto",m.current.style.top="110%"):(m.current.style.bottom="110%",m.current.style.top="auto"),e.left+375>t.left+t.width?(m.current.style.left="auto",m.current.style.right="0"):(m.current.style.left="0",m.current.style.right="auto")}},[]);const S=(e,t,n)=>{document.execCommand(e,t,n)},j=()=>{r?.current&&r.current.dispatchEvent(new Event("input",{bubbles:!0}))};return i.jsx("div",{className:"rich-text",ref:m,onClick:e=>{e.preventDefault(),e.stopPropagation()},children:i.jsx(a.motion.div,{className:"rich-text-tools",initial:{scale:0,x:0},animate:{scale:1,x:0},style:{width:g?"auto":"375px"},children:i.jsxs("div",{className:"rich-text-tools-body items-center",children:[!g&&i.jsxs(i.Fragment,{children:[i.jsx(Zt,{modifyText:S,setTextContent:j}),i.jsx(Qt,{modifyText:S,setTextContent:j}),i.jsx(Xt,{modifyText:S,setTextContent:j}),i.jsx(en,{modifyText:S,setTextContent:j}),i.jsx(tn,{modifyText:S,setTextContent:j}),i.jsx(nn,{modifyText:S,setTextContent:j}),i.jsx(on,{modifyText:S,setTextContent:j}),i.jsx(t.Popover,{zIndex:1070,trigger:"click",open:h,onOpenChange:b,overlayClassName:"ee-rich-text-variables-popover",getPopupContainer:()=>document.querySelector("#preview")||document.body,content:i.jsxs("div",{className:"ee-rich-text-variables-menu",children:[i.jsx("div",{className:"ee-rich-text-variables-header",children:u("variables")}),C.map(e=>i.jsx("div",{className:"ee-rich-text-variables-item",onMouseDown:t=>{t.preventDefault(),(e=>{if(!r?.current||!e)return;const t=window.getSelection();let n=null;if(t?.rangeCount){const e=t.getRangeAt(0);r.current.contains(e.commonAncestorContainer)&&(n=e)}n||(n=document.createRange(),n.selectNodeContents(r.current),n.collapse(!1)),n.deleteContents();const o=document.createTextNode(e);n.insertNode(o),n.setStartAfter(o),n.collapse(!0),t&&(t.removeAllRanges(),t.addRange(n)),j(),b(!1)})(e.value)},children:e.labelKey?u(e.labelKey):e.label||e.value},`variables-${e.value}`))]}),children:i.jsx("button",{className:"rich-text-tools-button",title:u("insert_merge_field"),onMouseDown:e=>e.preventDefault(),children:i.jsx("span",{className:"rich-text-tools-button-icon",style:{color:"#fff",fontFamily:"monospace",fontWeight:700,fontSize:13,lineHeight:1},children:"{}"})})})]}),i.jsx("button",{className:"rich-text-tools-button",onClick:()=>y(!g),children:i.jsx(n.FontAwesomeIcon,{icon:g?o.faExpandAlt:o.faCompressAlt,className:"rich-text-tools-button-icon"})})]})})})},ln=({id:t,blockItem:n,displayContent:o})=>{const{currentItem:a,previewMode:l,blockMap:r,rootOrder:s,setBlocks:c,setCurrentItem:d,isDragStart:p,templateData:u}=e.useContext(O),m=e.useRef(null),g=a&&a.id===(t??n?.id),y="desktop"===l?n.styles?.desktop??{}:{...n.styles?.desktop??{},...n.styles?.mobile??{}},h=y.linkColor||y.color,{linkColor:b,...f}=y,_={...f,direction:"ltr",unicodeBidi:"isolate",...h?{"--ee-rich-text-link-color":h}:{}},x=e.useRef(!1),v=null!=o?o:n.text||"",w=e.useMemo(()=>{const e=k(r,s,t??n?.id),o=e?.[0]??null;return{containerBlock:o?.containerBlock??null,containerType:o?.containerType??"none",cellIndex:o?.cellIndex??0,lineage:e}},[r,s,t,n?.id]),C=e.useMemo(()=>{const e=w?.cellIndex??0,t=w?.containerBlock;return{columnIndex:e,columnProduct:t?.columnProducts?.[e]??null}},[w]),S=e.useMemo(()=>(w?.lineage??[]).slice(1).filter(e=>e?.containerType&&"none"!==e.containerType).map(e=>{const t=e.cellIndex??0;return{containerType:e.containerType,context:{columnIndex:t,columnProduct:e.containerBlock?.columnProducts?.[t]??null}}}),[w?.lineage]),j=e.useMemo(()=>Ke(0,w?.containerType??"none",u,C,S).map(e=>{return t=e.value,n=e.pasteValue,{token:t,pasteValue:String(n||"")};var t,n}).filter(e=>e.token&&e.pasteValue&&""!==e.pasteValue.trim()&&!e.pasteValue.includes("{{")&&e.pasteValue!==e.token).sort((e,t)=>t.pasteValue.length-e.pasteValue.length),[u,C,w?.containerType,S]);e.useEffect(()=>{if(g&&m.current){const e=I(v);if(x.current){const t=m.current.innerHTML||"";e!==I(t)&&(m.current.innerHTML=e)}else m.current.innerHTML=e,m.current.focus();x.current=!0}else x.current=!1},[g,t,v]);const I=e=>"string"!=typeof e?e:e.replace(/\u202E/g,"").replace(/\u202D/g,"").replace(/\u202A/g,"").replace(/\u202B/g,"").replace(/\u202C/g,"").replace(/\sdir\s*=\s*["']rtl["']/gi,' dir="ltr"').replace(/\sstyle\s*=\s*["']([^"']*)["']/gi,(e,t)=>{const n=t.replace(/\s*direction\s*:\s*rtl\s*;?/gi,"").trim();return n?` style="${n}"`:""}),N=I(v),T=t??n?.id;return i.jsxs("div",{className:"relative",dir:"ltr",style:{direction:"ltr",unicodeBidi:"isolate"},children:[g&&n&&!p&&i.jsx(an,{textBlock:m,id:T,styles:_}),i.jsx("div",{className:Ot(g&&"text-block","text-content_editable"),onClick:e=>{e.preventDefault(),e.stopPropagation()},onInput:e=>{const i=t??n?.id,l=e.target.innerHTML,p=I(l),u=null!=o?I(o):null,m=null!=u&&p===u,g=r[i]||{};let y=m?n.text:p;"text"===(g.key??n?.key)&&(y=(e=>{if(!e||!j.length||"undefined"==typeof document)return e;const t=document.createElement("div");t.innerHTML=e;const n=document.createTreeWalker(t,NodeFilter.SHOW_TEXT);let o=n.nextNode();for(;o;){let e=o.nodeValue||"";j.forEach(({token:t,pasteValue:n})=>{n&&e.includes(n)&&(e=e.split(n).join(t))}),o.nodeValue=e,o=n.nextNode()}return t.innerHTML})(y));const h={...g,text:y,selectedVariableKey:m?g.selectedVariableKey:void 0},b={...r,[i]:h};c(b,s),d({...a,data:h})},style:_,dir:"ltr",contentEditable:g,suppressContentEditableWarning:!0,ref:m,dangerouslySetInnerHTML:g?void 0:{__html:N}})]})},rn=t=>{const{id:n,blockItem:o}=t,{currentItem:a,previewMode:l,templateData:r,blockMap:s,rootOrder:c}=e.useContext(O),d="desktop"===l?o.styles?.desktop??{}:{...o.styles?.desktop??{},...o.styles?.mobile??{}},p=a&&a.id===n,u=e.useMemo(()=>_(s,c,n),[s,c,n]),m=e.useMemo(()=>Re(o.text,r,u),[o.text,r,u]),g=p?o.text||"":m,y=d.linkColor||d.color,h=e.useMemo(()=>{return t=y,(e=g)&&t?String(e).replace(/<a\b([^>]*)>/gi,(e,n)=>{const o=n.match(/\sstyle\s*=\s*"([^"]*)"/i);if(o){const e=(o[1]||"").replace(/\s*color\s*:[^;]+;?/gi,"").replace(/^\s*;|;\s*$/g,"").trim(),a=`${e?`${e}; `:""}color: ${t};`;return`<a${n.replace(o[0],` style="${a}"`)}>`}return`<a${n} style="color: ${t};">`}):e;var e,t},[g,y]),b=u?.containerBlock,f="footer"===b?.containerType,k=(m||"").replace(/<[^>]+>/g,"").replace(/\s+/g," ").trim();if(f&&(""===k||"{{Address}}"===k||"{{Tagline}}"===k))return null;const x=o.type&&/^h[1-4]$/.test(o.type)?o.type:"div";return p?i.jsx(ln,{...t,blockItem:o}):e.createElement(x,{style:{...d,direction:"ltr",unicodeBidi:"isolate"},dir:"ltr",dangerouslySetInnerHTML:{__html:h}})},sn=e=>e?.brandContext?.brand_color??"#111111",cn=t=>{const{blockItem:n,id:o}=t,{currentItem:a,previewMode:l,templateData:r,blockMap:s,rootOrder:c}=e.useContext(O),d=e.useMemo(()=>_(s,c,o),[o,s,c]),p=e.useMemo(()=>{const e=n.text??"",t=e.match(/\{\{(\w+)\}\}/),o=n.labelVariable?n.labelVariable.replace(/^\{\{|\}\}$/g,"").trim():t?t[1]:void 0;if(!r||!o)return e;const a=Me(r,o,d);return null==a||String(a).startsWith("{{")?e:String(a)},[n.text,n.labelVariable,r,d]),u=a&&a.id===o,m="desktop"===l?n.styles?.desktop??{}:{...n.styles?.desktop??{},...n.styles?.mobile??{}},g={...m,backgroundColor:m.backgroundColor??sn(r)},y="desktop"===l?n.contentStyles?.desktop:{...n.contentStyles?.desktop,...n.contentStyles?.mobile},h=e.useMemo(()=>i.jsx(ln,{...t,blockItem:{...n,styles:{...n.styles,desktop:{...n.styles?.desktop,backgroundColor:g.backgroundColor}}},displayContent:p}),[n,p,g.backgroundColor]);return i.jsx("div",{style:{...y},children:u?h:i.jsx("div",{style:{...g,textAlign:"center"},dangerouslySetInnerHTML:{__html:p}})})},dn=({blockItem:t})=>{const{previewMode:n}=e.useContext(O),o="desktop"===n?t.styles?.desktop??{}:{...t.styles?.desktop??{},...t.styles?.mobile??{}},a="desktop"===n?t.contentStyles?.desktop:{...t.contentStyles?.desktop,...t.contentStyles?.mobile};return i.jsx("div",{className:"relative",children:i.jsx("div",{style:{...a},children:i.jsx("div",{style:{...o}})})})},pn=({blockItem:t})=>{const{previewMode:n}=e.useContext(O),o="desktop"===n?t.styles?.desktop??{}:{...t.styles?.desktop??{},...t.styles?.mobile??{}},a="desktop"===n?t.contentStyles?.desktop:{...t.contentStyles?.desktop,...t.contentStyles?.mobile};return i.jsx("div",{className:"relative",style:{...a},children:i.jsx("div",{style:{width:"100%",height:"number"==typeof o.height?`${o.height}px`:o.height||"16px",display:o.display||"block"}})})},un=({blockItem:t})=>{const{previewMode:n}=e.useContext(O),{list:o=[],separator:a=" | "}=t,l=o,r="desktop"===n?t.styles?.desktop??{}:{...t.styles?.desktop??{},...t.styles?.mobile??{}},s="desktop"===n?t.contentStyles?.desktop:{...t.contentStyles?.desktop,...t.contentStyles?.mobile},c={fontSize:null!=r.fontSize?`${r.fontSize}px`:"14px",fontFamily:r.fontFamily||"sans-serif",color:r.linkColor||r.color||"#2faade",fontWeight:r.fontWeight||"normal",letterSpacing:null!=r.letterSpacing?`${r.letterSpacing}px`:"0px",textDecoration:"none",paddingLeft:null!=r.paddingLeft?`${r.paddingLeft}px`:"8px",paddingRight:null!=r.paddingRight?`${r.paddingRight}px`:"8px",paddingTop:null!=r.paddingTop?`${r.paddingTop}px`:"4px",paddingBottom:null!=r.paddingBottom?`${r.paddingBottom}px`:"4px"},d={fontSize:null!=r.fontSize?`${r.fontSize}px`:"14px",color:r.color||"#333",paddingLeft:4,paddingRight:4};return i.jsx("div",{className:"relative",children:i.jsx("div",{style:{...s,display:"flex",flexWrap:"wrap",alignItems:"center",justifyContent:s.textAlign||"center"},children:l.map((e,t)=>i.jsxs("span",{style:{display:"inline-flex",alignItems:"center"},children:[t>0&&i.jsx("span",{style:d,children:a}),i.jsx("a",{href:e.url?e.url.startsWith("http")?e.url:`https://${e.url}`:"#",target:"_blank"===e.target?"_blank":"_self",rel:"_blank"===e.target?"noopener noreferrer":void 0,style:c,children:e.label||"Link"})]},t))})})},mn=({blockItem:t,id:a})=>{const{src:l,alt:r,linkURL:s}=t,{previewMode:c,templateData:d,blockMap:p,rootOrder:u}=e.useContext(O),m="desktop"===c?t.styles?.desktop??{}:{...t.styles?.desktop??{},...t.styles?.mobile??{}},g="desktop"===c?t.contentStyles?.desktop:{...t.contentStyles?.desktop,...t.contentStyles?.mobile},y=e.useMemo(()=>{const e="string"==typeof l&&/^\{\{\w+\}\}$/.test(l.trim())?l.trim():"";if(l&&!e)return l;if(!d||!e)return l||"";const t=_(p,u,a),n=e.replace(/^\{\{|\}\}$/g,"").trim(),o=Me(d,n,t);return o&&!o.startsWith("{{")?o:l||""},[l,d,p,u,a]),h="string"==typeof l&&/^\{\{\w+\}\}$/.test(l.trim())?l.trim():"",b=!y||y.startsWith("{{"),f=r||"Image",k=m.width,x=k&&"auto"!==k,v="string"==typeof s?s.trim():"",w=""===v?"":ht(v,{allowMailtoTel:!0})??"",C=()=>y&&!b?x?i.jsx("div",{style:{width:k,display:"inline-block"},children:i.jsx("img",{src:y,style:{...m,width:"100%",maxWidth:"100%"},alt:f,className:"inline-block"})}):i.jsx("img",{src:y,style:m,alt:f,className:"inline-block"}):i.jsx("div",{className:"empty-image",style:{...m,width:"auto"===m.width?"100%":m.width},title:b&&h?h:void 0,children:b&&h?i.jsx("span",{className:"empty-image-variable-label",children:h}):i.jsx(n.FontAwesomeIcon,{icon:o.faImage,className:"empty-image-icon"})}),S=qe(t)&&w&&y&&!b?i.jsx("a",{href:w,target:"_blank",rel:"noopener noreferrer",style:{textDecoration:"none",display:"inline-block"},onClick:e=>e.stopPropagation(),children:C()}):C();return i.jsx("div",{className:"relative",children:i.jsx("div",{style:{...g},children:S})})},gn=({blockItem:t})=>{const{src:a,alt:l,linkURL:r}=t,{previewMode:s}=e.useContext(O),c="desktop"===s?t.styles?.desktop??{}:{...t.styles?.desktop??{},...t.styles?.mobile??{}},d="desktop"===s?t.contentStyles?.desktop:{...t.contentStyles?.desktop,...t.contentStyles?.mobile},p=a?i.jsx("img",{src:a,style:{...c,width:c.width??64,height:c.width??64,objectFit:"cover",borderRadius:c.borderRadius??"50%"},alt:l||"Avatar",className:"inline-block"}):i.jsx("div",{className:"empty-avatar",style:{width:c.width??64,height:c.width??64,borderRadius:c.borderRadius??"50%",display:"flex",alignItems:"center",justifyContent:"center",backgroundColor:"var(--ee-border, #eee)"},children:i.jsx(n.FontAwesomeIcon,{icon:o.faUser,style:{fontSize:"24px",color:"#999"}})}),u={...d,width:"100%"},m=null!=r&&String(r).trim()?ht(r,{allowMailtoTel:!0}):null;return i.jsx("div",{className:"relative",children:i.jsx("div",{style:u,children:m?i.jsx("a",{href:m,target:"_blank",rel:"noopener noreferrer",style:{display:"inline-block"},children:p}):p})})},yn=({blockItem:t})=>{const{previewMode:n}=e.useContext(O),{list:o=[],imageWidth:a}=t,l="desktop"===n?t.styles?.desktop??{}:{...t.styles?.desktop??{},...t.styles?.mobile??{}},r="desktop"===n?t.contentStyles?.desktop:{...t.contentStyles?.desktop,...t.contentStyles?.mobile},s=o;return i.jsx("div",{className:"relative",children:i.jsx("div",{style:r,children:s.map((e,t)=>{const{image:n,title:o,linkURL:r}=e,s=i.jsx("img",{src:n,alt:o,style:{width:a}}),c=null!=r&&String(r).trim()?ht(r,{allowMailtoTel:!1}):null;return i.jsx("div",{style:{...l,display:"inline-block"},children:c?i.jsx("a",{href:c,target:"_blank",rel:"noopener noreferrer",style:{display:"inline-block"},children:s}):s},t)})})})},hn=({blockItem:e,id:t})=>{if(!e)return null;const n={blockItem:e,id:t};switch(e.key){case"text":return i.jsx(rn,{...n});case"button":return i.jsx(cn,{...n});case"divider":return i.jsx(dn,{...n});case"spacer":return i.jsx(pn,{...n});case"menu":return i.jsx(un,{...n});case"image":return i.jsx(mn,{...n});case"avatar":return i.jsx(gn,{...n});case"social_link":return i.jsx(yn,{...n});default:return null}},bn=a=>{const{block:l,blockIndex:r,clearStyles:s}=a,{t:c}=zt(),{previewMode:d,blockMap:p,rootOrder:u,validationMarkers:m,ignoreValidationIssue:y,setBlocks:h,currentItem:b,setCurrentItem:k,setIsDragStart:_,isDragStart:x,bodySettings:w,setActionType:S}=e.useContext(O),j="desktop"===d?l.styles?.desktop??{}:{...l.styles?.desktop??{},...l.styles?.mobile??{}},{contentBackground:I,...N}=j,T="undefined"!=typeof window?window.__eeDragItemData:null,A=T?.key??(b?.id?p[b.id]?.key:null)??b?.data?.key,L=b?.id?f(p,u,b.id):null,P=x&&("column"!==A||"add"===b?.type||Boolean(L)),R=e=>t=>{t.preventDefault(),t.stopPropagation(),k({id:e.id,data:e,type:"edit"}),S("edit")},$=e=>t=>{t.preventDefault(),t.stopPropagation();const n=p[e];n&&(k({id:n.id,data:n,type:"edit"}),S("edit"))},B=(e,t,n)=>o=>{o.preventDefault(),o.stopPropagation();const{blockMap:a,removedId:i}=v(p,e,t,n);let l=a;const r=a[e];if(r&&0===r.cells[t].childrenIds.length){const n=g(c("drag_block_here"));l={...a,[n.id]:n,[e]:{...r,cells:r.cells.map((e,o)=>o===t?{...e,childrenIds:[n.id]}:e)}}}i&&(l=C(l,i)),h(l,u,"delete"),k(null)},D=e=>()=>{_(!0),k({id:e.id,data:e,type:"move"}),S("move")},M=e=>{e.preventDefault(),e.stopPropagation(),setTimeout(()=>{e.target.style.border="",e.target.children[0]&&e.target.children[0].classList.remove("sidebar-block-move"),_(!1),s&&s()},50)},E=e=>e.preventDefault(),U=e=>"desktop"===d?e.styles?.desktop||{}:{...e.styles?.desktop||{},...e.styles?.mobile||{}},F=e=>{const n=m?.[e];if(!n)return null;const o="error"===n.severity?`${n.errorCount} error${1===n.errorCount?"":"s"}`:`${n.warningCount} warning${1===n.warningCount?"":"s"}`,a=i.jsx("div",{className:"block-validation-popover",children:n.issues.map((e,n)=>i.jsxs("div",{className:"block-validation-popover-item",children:[i.jsx("div",{className:"block-validation-popover-message",children:e.message}),i.jsx(t.Button,{size:"small",type:"text",className:"block-validation-popover-ignore",onClick:t=>{t.preventDefault(),t.stopPropagation(),y(e)},children:c("ignore")})]},`${e.code}-${n}`))});return i.jsx(t.Popover,{trigger:["hover","click"],placement:"topRight",overlayClassName:"block-validation-popover-overlay",content:a,getPopupContainer:()=>document.querySelector("#preview")||document.body,children:i.jsxs("button",{type:"button",className:Ot("block-validation-indicator","error"===n.severity?"block-validation-indicator-error":"block-validation-indicator-warning"),"aria-label":o,onClick:e=>{e.preventDefault(),e.stopPropagation()},onMouseDown:e=>{e.preventDefault(),e.stopPropagation()},children:[i.jsx("span",{className:"block-validation-indicator-dot"}),i.jsx("span",{className:"block-validation-indicator-count",children:n.totalCount})]})})},H=(t,a,l,r,s,p,u=1)=>{const m=U({styles:t.styles}),{contentBackground:g,...y}=m,h=b?.id===t.id,f=((e=1)=>({"--nested-level":Math.max(1,e),"--nested-width":"100%"}))(u);return i.jsxs(i.Fragment,{children:[i.jsxs("div",{className:"relative block-content-drag-label-content","data-drop-key":s,children:[i.jsx("div",{className:"absolute block-move-top",children:i.jsx("span",{className:"block-tools-drag_here",children:c("drag_block_here")})}),P&&i.jsx("div",{className:"block-move-content-top","data-name":"dragTools","data-position":"top","data-container-id":a,"data-cell-index":l,"data-item-index":r,"data-drop-key":s,"data-type":"block-item-move"})]}),i.jsx("div",{className:Ot("block-item block-item-container",h&&"block-item-focus"),style:f,"data-block-id":t.id,onMouseEnter:e=>{e.currentTarget.dataset.hovered="true"},onMouseLeave:e=>{delete e.currentTarget.dataset.hovered},children:i.jsxs("div",{className:"relative",children:[F(t.id),i.jsxs("div",{className:"block-item-tools",onDragOver:E,onClick:R(t),children:[P&&i.jsxs(i.Fragment,{children:[i.jsx("div",{className:"block-move-content-top","data-name":"dragTools","data-position":"top","data-container-id":a,"data-cell-index":l,"data-item-index":r,"data-drop-key":s,"data-type":"block-item-move"}),i.jsx("div",{className:"block-move-content-bottom","data-name":"dragTools","data-position":"bottom","data-container-id":a,"data-cell-index":l,"data-item-index":r+1,"data-drop-key":p,"data-type":"block-item-move"})]}),i.jsx("span",{className:"absolute block-item-parent",onClick:$(a),title:"Select Parent",children:i.jsx(n.FontAwesomeIcon,{icon:o.faLevelUpAlt})}),i.jsx("span",{className:"absolute block-item-delete",onClick:B(a,l,r),children:i.jsx(n.FontAwesomeIcon,{icon:o.faTrash})}),i.jsx("span",{className:"absolute block-item-move current-move-block-arrows",draggable:"true",onDragEnd:M,onDragStart:D(t),children:i.jsx(n.FontAwesomeIcon,{icon:o.faArrowsAlt})})]}),i.jsx("div",{style:{...y,overflow:y.borderRadius?"hidden":void 0},children:i.jsx("div",{className:"block-content block-item-container-body",style:{background:g,borderRadius:y.borderRadius},children:(t.children||[]).map((n,o)=>{const a=U(n);return i.jsx("div",{style:{...a,width:"mobile"===d?"100%":n.width},children:(n.children||[]).map((a,l)=>{const r=`${t.id}:${o}:${l}`,s=`${t.id}:${o}:${l+1}`,d=l===n.children.length-1&&"empty"!==a.key&&"column"!==a.key;return i.jsxs(e.Fragment,{children:[K(a,t.id,o,l,r,s,u),d&&i.jsx("div",{className:"relative block-content-drag-label-content","data-drop-key":s,children:i.jsx("div",{className:"absolute block-move-bottom",children:i.jsx("span",{className:"block-tools-drag_here",children:c("drag_block_here")})})})]},`${t.id}:${o}:${a.id||l}`)})},`${t.id}:${n.id||"cell"}:${o}`)})})})]})}),i.jsxs("div",{className:"relative block-content-drag-label-content","data-drop-key":p,children:[i.jsx("div",{className:"absolute block-move-bottom",children:i.jsx("span",{className:"block-tools-drag_here",children:c("drag_block_here")})}),P&&i.jsx("div",{className:"block-move-content-bottom","data-name":"dragTools","data-position":"bottom","data-container-id":a,"data-cell-index":l,"data-item-index":r+1,"data-drop-key":p,"data-type":"block-item-move"})]})]})},K=(t,a,l,r,s,d,p=0)=>"empty"===t.key?i.jsxs("div",{className:"block-empty-content p-4 h-32 relative width-full",children:[P&&i.jsx("div",{className:"block-empty-content-tools",onDragOver:E,"data-container-id":a,"data-cell-index":l,"data-item-index":r,"data-type":"empty-block-item",children:c("drag_block_here")}),t.name]},t.id||r):"column"===t.key?i.jsx(e.Fragment,{children:H(t,a,l,r,s,d,p+1)},`${a}:${l}:${t.id||r}`):i.jsxs(e.Fragment,{children:[i.jsx("div",{className:"relative block-content-drag-label-content","data-drop-key":s,children:i.jsx("div",{className:"absolute block-move-top",children:i.jsx("span",{className:"block-tools-drag_here",children:c("drag_block_here")})})}),i.jsx("div",{className:Ot("block-item",b?.id===t.id&&"block-item-focus"),"data-block-id":t.id,children:i.jsxs("div",{className:"relative",children:[F(t.id),i.jsxs("div",{className:"block-item-tools",onDragOver:E,onClick:e=>{e.preventDefault(),e.stopPropagation(),k({id:t.id,data:t,type:"edit"}),S("edit")},children:[P&&i.jsxs(i.Fragment,{children:[i.jsx("div",{className:"block-move-content-top","data-name":"dragTools","data-position":"top","data-container-id":a,"data-cell-index":l,"data-item-index":r,"data-drop-key":s,"data-type":"block-item-move"}),i.jsx("div",{className:"block-move-content-bottom","data-name":"dragTools","data-position":"bottom","data-container-id":a,"data-cell-index":l,"data-item-index":r+1,"data-drop-key":d,"data-type":"block-item-move"})]}),i.jsx("span",{className:"absolute block-item-parent",onClick:$(a),title:"Select Parent",children:i.jsx(n.FontAwesomeIcon,{icon:o.faLevelUpAlt})}),i.jsx("span",{className:"absolute block-item-delete",onClick:B(a,l,r),children:i.jsx(n.FontAwesomeIcon,{icon:o.faTrash})}),i.jsx("span",{className:"absolute block-item-move current-move-block-arrows",draggable:"true",onDragEnd:M,onDragStart:D(t),children:i.jsx(n.FontAwesomeIcon,{icon:o.faArrowsAlt})})]}),i.jsx(hn,{blockItem:t,id:t.id})]})})]},`${a}:${l}:${t.id||r}`);return i.jsx(i.Fragment,{children:i.jsxs("div",{className:"relative block-drag-label-content","data-index":r,"data-position":"top",children:[i.jsx("div",{className:"absolute block-move-top",children:i.jsx("span",{className:"block-tools-drag_here",children:c("drag_block_here")})}),i.jsxs("div",{className:Ot("relative block",b?.id===l.id&&"block-focus","mobile"===d&&"mobile-block-focus"),"data-block-id":l.id,onClick:R(l),children:[i.jsxs("div",{className:"hover-visible",children:[F(l.id),i.jsx("span",{className:"absolute block-delete",onClick:e=>{e.preventDefault(),e.stopPropagation();const t=C(p,l.id),n=u.filter(e=>e!==l.id);h(t,n,"delete"),k(null)},children:i.jsx(n.FontAwesomeIcon,{icon:o.faTrash})}),i.jsx("span",{className:"absolute block-move current-move-block-arrows",draggable:"true",onDragEnd:M,onDragStart:()=>{_(!0),k({id:l.id,data:l,type:"move"}),S("move")},children:i.jsx(n.FontAwesomeIcon,{icon:o.faArrowsAlt})})]}),i.jsx("div",{className:"width-full height-full absolute",onDragOver:E,style:{pointerEvents:x&&"column"===A?"auto":"none"},children:x&&"column"===A&&i.jsxs(i.Fragment,{children:[i.jsx("div",{className:"block-move-content-top","data-name":"dragTools","data-type":"drag-over-column","data-position":"top","data-index":r}),i.jsx("div",{className:"block-move-content-bottom","data-name":"dragTools","data-type":"drag-over-column","data-position":"bottom","data-index":r+1})]})}),i.jsx("div",{className:"column margin-auto",style:{...N,maxWidth:"100%",overflow:N.borderRadius?"hidden":void 0},children:i.jsx("div",{className:"block-content",style:{background:I,borderRadius:N.borderRadius,width:w.contentWidth},"data-index":r,children:l.children.map((t,n)=>{const o="desktop"===d?t.styles?.desktop??{}:{...t.styles?.desktop??{},...t.styles?.mobile??{}};return i.jsx(e.Fragment,{children:i.jsx("div",{id:`block-content-${r}-${n}`,style:{...o,width:"mobile"===d?"100%":t.width},children:t.children.map((o,a)=>{const r=`${l.id}:${n}:${a}`,s=`${l.id}:${n}:${a+1}`,d=a===t.children.length-1&&"empty"!==o.key&&"column"!==o.key;return i.jsxs(e.Fragment,{children:[K(o,l.id,n,a,r,s,0),d&&i.jsx("div",{className:"relative block-content-drag-label-content","data-drop-key":s,children:i.jsx("div",{className:"absolute block-move-bottom",children:i.jsx("span",{className:"block-tools-drag_here",children:c("drag_block_here")})})})]},`${l.id}:${n}:${o.id||a}`)})})},`${l.id}:${t.id||"content"}:${n}`)})})})]})]})})},fn=()=>{const{previewMode:t,setPreviewMode:a,bodySettings:l,blockList:r,actionType:c,setBlockList:d,setBodySettings:p}=e.useContext(O),[u,m]=e.useState({histories:[],index:0}),{histories:g,index:y}=u,h=e.useRef(null);e.useEffect(()=>{const e=s(r),t=s(l),n=JSON.stringify({blockList:e,bodySettings:t});if(h.current!==n)return"firstRender"===c?(h.current=n,void m({histories:[{blockList:e,bodySettings:t}],index:0})):void(c.includes("set_history")?h.current=n:m(o=>{const a=o.histories.slice(0,o.index+1);return a.push({blockList:e,bodySettings:t}),h.current=n,{histories:a,index:o.index+1}}))},[r,l,c]);return i.jsxs("div",{className:"header",children:[i.jsxs("div",{className:"header-box",children:[i.jsx(n.FontAwesomeIcon,{onClick:()=>a("desktop"),icon:o.faDesktop,className:Ot("header-icon-small","desktop"===t&&"header-icon_active","desktop"!==t&&"header-icon_disabled")}),i.jsx(n.FontAwesomeIcon,{icon:o.faMobileAlt,onClick:()=>a("mobile"),className:Ot("header-icon-small","mobile"===t&&"header-icon_active","mobile"!==t&&"header-icon_disabled")})]}),i.jsx("div",{className:"header-box text-center"}),i.jsxs("div",{className:"header-box text-right",children:[i.jsx(n.FontAwesomeIcon,{onClick:()=>{if(g[y-1]){const e=s(g[y-1]);m({...u,index:y-1}),d(e.blockList,"set_history_"+(y-1)),p(e.bodySettings)}},icon:o.faUndo,className:Ot("header-icon-history",g[y-1]&&"header-icon-history_active",!g[y-1]&&"header-icon-history_disabled")}),i.jsx(n.FontAwesomeIcon,{onClick:()=>{if(g[y+1]){const e=s(g[y+1]);m({...u,index:y+1}),d(e.blockList,`set_history_${y+1}`),p(e.bodySettings)}},icon:o.faRedo,className:Ot("header-icon-history",g[y+1]&&"header-icon-history_active",!g[y+1]&&"header-icon-history_disabled")})]})]})},kn=t=>{const{clearStyles:n}=t,{t:o}=zt(),{previewMode:a,bodySettings:l,blockList:r,setSelectionRange:s}=e.useContext(O),d=e.useRef(null);e.useEffect(()=>{const e=c(()=>{try{const n=window.getSelection();if(!n||0===n.rangeCount)return;const o=n.getRangeAt(0),a=document.getElementById("preview");if(!(!!a&&(a.contains(o.commonAncestorContainer)||a===o.commonAncestorContainer)))return;const i=(e=>e?{startContainer:e.startContainer,startOffset:e.startOffset,endContainer:e.endContainer,endOffset:e.endOffset,collapsed:e.collapsed}:null)(o);if(e=d.current,t=i,e&&t&&e.startContainer===t.startContainer&&e.startOffset===t.startOffset&&e.endContainer===t.endContainer&&e.endOffset===t.endOffset&&e.collapsed===t.collapsed)return;d.current=i,s(o.cloneRange())}catch(e){console.warn(e)}var e,t},100);return document.addEventListener("selectionchange",e),()=>{document.removeEventListener("selectionchange",e)}},[s]);return i.jsxs("div",{className:"preview-main",children:[i.jsx(fn,{}),i.jsx("div",{className:"default-scrollbar",id:"preview",children:i.jsx("div",{className:"preview-content",style:{width:"desktop"===a?"100%":364,...l.styles},children:i.jsx("div",{className:"margin-auto",style:{maxWidth:"100%",width:"100%"},children:r.length?i.jsxs(i.Fragment,{children:[r.map((t,o)=>i.jsx(e.Fragment,{children:i.jsx(bn,{block:t,blockIndex:o,clearStyles:n})},`${t?.id||"block"}-${o}`)),i.jsx("div",{className:"relative block-drag-label-content","data-index":r.length,"data-position":"bottom",children:i.jsx("div",{className:"absolute block-move-bottom",children:i.jsx("span",{className:"block-tools-drag_here",children:o("drag_block_here")})})})]}):i.jsx("div",{"data-name":"dragEmpty",className:"start-to-add",style:{width:l.contentWidth,maxWidth:"100%"},"data-type":"empty-block",onDragOver:e=>{e.preventDefault()},children:o("add_blocks")})})})})]})},_n=({color:n,setColor:o})=>{const[a,r]=e.useState(!1);return i.jsx(t.Popover,{zIndex:1070,getPopupContainer:()=>document.querySelector(".right-settings")||document.body,content:i.jsx("div",{className:"select-none ee-color-picker-popover",children:i.jsx(l.ChromePicker,{color:n,style:{boxShadow:"none"},onChange:o})}),trigger:"click",open:a,onOpenChange:r,children:i.jsx("button",{className:"color-picker-button",style:{background:n}})})},xn=({padding:e,setPadding:n})=>{const{t:o}=zt();return i.jsx("div",{className:"padding-settings",children:[{name:o("top"),value:"paddingTop"},{name:o("right"),value:"paddingRight"},{name:o("left"),value:"paddingLeft"},{name:o("bottom"),value:"paddingBottom"}].map(({name:o,value:a})=>{const l=e[a];return i.jsxs("div",{children:[i.jsx("div",{children:o}),i.jsx(t.InputNumber,{className:"width-full",addonAfter:"px",min:0,value:l,onChange:(r=a,t=>{const o={...e,[r]:t};n(o)})})]},a);var r})})},vn=e=>{if(!e||"string"!=typeof e)return!1;try{const t=new URL(e);return/\/knowledge-base\/products$/i.test(t.pathname.replace(/\/$/,""))}catch{return/knowledge-base\/products\/?$/i.test(String(e).trim().replace(/\/$/,""))}},wn=e=>{if(!e||"object"!=typeof e)return null;const t=null!=e.id?String(e.id):null!=e.resourceId?String(e.resourceId):"";if(!t)return null;const n=e.price,o="number"==typeof n?n:parseFloat(String(n??"").replace(/,/g,""));return{id:t,name:e.name??"",description:e.description??"",image:e.image_url??e.image??"",link:e.url??"",price:Number.isFinite(o)?o:0,currency:e.currency??"USD",old_price:null!=e.old_price?e.old_price:null,new_price:null!=e.new_price?e.new_price:null,resourceId:e.resourceId,source:e.source}},Cn=async(e,t,n={},{page:o=1,limit:a=20,search:i=""}={})=>{if(!e)return null;try{if(vn(e)){if(!t)return null;const l=e.replace(/\/$/,""),r=new URL(`${l}/${encodeURIComponent(t)}`);r.searchParams.set("page",String(o)),r.searchParams.set("limit",String(a)),r.searchParams.set("search",i??"");const s=await fetch(r.toString(),{method:"GET",headers:{"Content-Type":"application/json",...n}});if(!s.ok)return console.error("[API Service] KB products fetch failed:",s.status,s.statusText),null;const c=await s.json(),d=Array.isArray(c.data)?c.data:[];return{products:d.map(wn).filter(Boolean),meta:c.meta&&"object"==typeof c.meta?c.meta:{}}}const l=new URL(e);t&&l.searchParams.append("companyId",t);const r=await fetch(l.toString(),{method:"GET",headers:{"Content-Type":"application/json",...n}});if(!r.ok)return console.error("[API Service] Products fetch failed:",r.status,r.statusText),null;const s=await r.json();if(!1===s.success)return console.error("[API Service] Products API returned error:",s.error),null;const c=s.data?.products??[];return Array.isArray(c)&&0!==c.length?{products:c,meta:{hasMore:!1,hasProducts:!0}}:{products:[],meta:{hasMore:!1,hasProducts:!1}}}catch(e){return console.error("[API Service] Error fetching products:",e),null}},Sn={};function jn(){return"undefined"!=typeof document?document.body:null}function In(e){if(!e)return"";const t=e.currency??"",n=e.price?.amount??e.price??"";return`${e.name} — ${t} ${n}`.trim()}function Nn(e,t){const n=new Map;return[...e,...t].forEach(e=>{e&&e.id&&n.set(e.id,e)}),Array.from(n.values())}function Tn({apiConfig:n,templateData:o,value:a,selectedProduct:l,onChange:r,placeholder:s,staticProductList:c=[],getPopupContainer:d}){const{t:p}=zt(),u=n?.productsEndpoint,m=n?.companyId??o?.companyId,g=e.useMemo(()=>{const e=n?.headers;return e&&"object"==typeof e?e:Sn},[n?.headers]),y=Boolean(u&&m)&&vn(u),[h,b]=e.useState([]),[f,k]=e.useState({}),[_,x]=e.useState(!1),[v,w]=e.useState(""),[C,S]=e.useState(""),j=e.useRef(null),I=e.useRef(0),N=e.useRef(1),T=e.useRef(""),A=e.useRef(!1),L=e.useRef(""),P=e.useCallback(async(e,t,n)=>{if(!y)return;const o=(t??"").trim();if(n){const t=`${o}::${e}`;if(A.current&&L.current===t)return;A.current=!0,L.current=t}const a=++I.current;x(!0);try{const i=await Cn(u,m,g,{page:e,limit:20,search:o});if(a!==I.current)return;if(!i)return n||(b([]),S((t??"").trim())),void k({});k(i.meta||{}),b(e=>n?Nn(e,i.products):i.products),N.current=e}finally{n&&(A.current=!1,L.current=""),a===I.current&&x(!1)}},[y,u,m,g]),R=e.useCallback(async e=>{if(!y)return;const t=(e??"").trim();A.current=!1,L.current="";const n=++I.current;x(!0);try{if(""!==t){const e=await Cn(u,m,g,{page:1,limit:20,search:t});if(n!==I.current)return;return e?(k(e.meta||{}),b(e.products),S(t),void(N.current=1)):(b([]),k({}),S(t),void(N.current=1))}let e=1,o=[],a={};for(;o.length<10&&e<=15;){const t=await Cn(u,m,g,{page:e,limit:20,search:""});if(n!==I.current)return;if(!t?.products?.length)break;if(o=Nn(o,t.products),a=t.meta||{},N.current=e,!a.hasMore)break;e+=1}k(a),b(o),S("")}finally{n===I.current&&x(!1)}},[y,u,m,g]),$=e.useCallback(()=>{if(!y||_||!f?.hasMore)return;const e=N.current+1;P(e,T.current,!0)},[y,_,f?.hasMore,P]),B=d??jn,D=e.useCallback(e=>i.jsxs("div",{children:[e,_&&h.length>0&&i.jsxs("div",{className:"ee-kb-product-select-footer",children:[i.jsx(t.Spin,{size:"small"})," ",i.jsx("span",{children:p("loading")})]}),!_&&f?.hasMore&&i.jsx("div",{className:"ee-kb-product-select-footer",children:i.jsx("button",{type:"button",className:"ee-kb-product-select-load-more",onClick:$,children:p("load_more_products")})})]}),[_,h.length,f?.hasMore,$,p]),M=e.useMemo(()=>{const e=y?h:c;return Nn(l?.id?[l]:[],e)},[y,h,c,l]),E=e.useMemo(()=>M.map(e=>({value:e.id,label:In(e)})),[M]),U=e=>{if(!e)return r(null),void(y&&(clearTimeout(j.current),w(""),T.current="",N.current=1,S(""),R("")));const t=M.find(t=>t.id===e)||c.find(t=>t.id===e);r(t||null)},F="ee-kb-product-select-dropdown";return y?i.jsx(t.Select,{className:"ee-stack-control ee-kb-product-select",value:a??void 0,placeholder:s,style:{width:"100%"},virtual:!0,dropdownMatchSelectWidth:!0,listHeight:320,listItemHeight:32,dropdownClassName:F,getPopupContainer:B,onChange:U,allowClear:!0,showSearch:!0,filterOption:!1,searchValue:v,onSearch:e=>{if(!y)return;const t=e??"";w(t);const n=t.trim();if(clearTimeout(j.current),""===n)return T.current="",N.current=1,void R("");j.current=setTimeout(()=>{T.current=n,N.current=1,R(n)},400)},onOpenChange:e=>{clearTimeout(j.current),e?(A.current=!1,L.current="",w(""),T.current="",N.current=1,R("")):(A.current=!1,L.current="",w(""),T.current="")},notFoundContent:_?i.jsxs("span",{className:"ee-kb-product-select-loading",children:[i.jsx(t.Spin,{size:"small"})," ",p("loading")]}):E.length>0?null:i.jsx("span",{className:"ee-kb-product-select-empty",children:""!==C.trim()?p("no_products_matching_search"):p("no_product_found")}),options:E,dropdownRender:D}):i.jsx(t.Select,{className:"ee-stack-control",value:a??void 0,placeholder:s,style:{width:"100%"},virtual:!0,dropdownMatchSelectWidth:!0,listHeight:320,listItemHeight:32,dropdownClassName:F,getPopupContainer:B,onChange:U,allowClear:!0,showSearch:!0,optionFilterProp:"label",options:c.map(e=>({value:e.id,label:In(e)}))})}const An=()=>{const{previewMode:t,currentItem:n,blockMap:o,rootOrder:a,setBlocks:l,setCurrentItem:r}=e.useContext(O),c=e=>{let t;if("column"===e.key){const{blockMap:n}=y([e]);t={...o,...n}}else t={...o,[n.id]:e};l(t,a,`edit_${(new Date).getTime()}`),r({...n,data:e})};return{findStyleItem:(e,n)=>{let o=e[t][n];return o||(o=e.desktop[n]),o},cardItemElement:(e,t)=>i.jsxs("div",{className:"card-item",children:[i.jsx("div",{className:"card-item-title",children:e}),i.jsx("div",{children:t})]}),updateItemStyles:c,colorChange:e=>({hex:o})=>{const a=s(n.data);a.styles[t][e]=o,c(a)},paddingChange:e=>{const o=s(n.data);o.styles[t]={...o.styles[t],...e},c(o)},otherStylesChange:(e,o)=>{const a=s(n.data);a.styles||(a.styles={desktop:{},mobile:{}}),a.styles[t]||(a.styles[t]={}),a.styles[t][e]=o,"desktop"!==t&&(a.styles.desktop[e]=o),c(a)},inputChange:e=>o=>{const a=s(n.data);a.styles||(a.styles={desktop:{},mobile:{}}),a.styles[t]||(a.styles[t]={}),a.styles[t][e]=o,"desktop"!==t&&(a.styles.desktop[e]=o),c(a)}}},Ln=()=>{const{t:e}=zt(),t=(e=>[{id:p(),name:e("container"),key:"column",type:"full",containerType:"none",styles:{key:"column",desktop:{backgroundColor:"transparent",paddingTop:12,paddingLeft:6,paddingRight:6,paddingBottom:12,contentBackground:"#fff"},mobile:{}},children:[{id:p(),name:e("content"),key:"content",width:"100%",styles:{key:"column",desktop:{backgroundColor:"transparent",paddingTop:12,paddingLeft:6,paddingRight:6,paddingBottom:12,contentBackground:"transparent"},mobile:{}},children:[{id:p(),name:e("drag_block_here"),key:"empty",width:"100%",styles:{desktop:{backgroundColor:"transparent",paddingTop:0,paddingLeft:0,paddingRight:0,paddingBottom:0},mobile:{}}}]}]},{id:p(),name:e("text"),key:"text",text:e("text_content"),type:"p",contentType:"static",styles:{desktop:{fontSize:14,fontFamily:"sans-serif",color:void 0,lineHeight:"120%",paddingTop:12,paddingBottom:12,paddingLeft:12,paddingRight:12,textAlign:"left"},mobile:{}}},{id:p(),name:e("button"),key:"button",text:e("button"),type:"link",linkURL:"",contentStyles:{desktop:{textAlign:"center",paddingTop:12,paddingBottom:12,paddingLeft:12,paddingRight:12},mobile:{}},styles:{desktop:{width:"auto",fontSize:12,lineHeight:"140%",borderRadius:4,fontFamily:"sans-serif",paddingTop:10,paddingBottom:10,paddingLeft:20,paddingRight:20,backgroundColor:void 0,color:"#fff",display:"inline-block"},mobile:{}}},{id:p(),name:e("spacer"),key:"spacer",contentStyles:{desktop:{paddingTop:0,paddingBottom:0,paddingLeft:0,paddingRight:0},mobile:{}},styles:{desktop:{height:16,width:"100%",display:"block"},mobile:{}}},{id:p(),name:e("divider"),key:"divider",contentStyles:{desktop:{paddingTop:12,paddingBottom:12,paddingLeft:12,paddingRight:12,textAlign:"center"},mobile:{}},styles:{desktop:{width:"100%",borderTopStyle:"solid",borderTopColor:"#ccc",borderTopWidth:1,display:"inline-block",verticalAlign:"middle"},mobile:{}}},{id:p(),name:e("image"),key:"image",src:"",alt:"Image",type:"link",linkEnabled:!1,linkURL:"",contentStyles:{desktop:{paddingTop:12,paddingBottom:12,paddingLeft:12,paddingRight:12,textAlign:"center"},mobile:{}},styles:{desktop:{width:"auto"},mobile:{}}},{id:p(),name:e("menu"),key:"menu",list:[{label:"Page",url:"",target:"_self"},{label:"Page",url:"",target:"_self"}],separator:" | ",contentStyles:{desktop:{paddingTop:12,paddingBottom:12,paddingLeft:12,paddingRight:12,textAlign:"center"},mobile:{}},styles:{desktop:{fontSize:14,fontFamily:"sans-serif",color:"#333333",linkColor:"#2faade",paddingTop:5,paddingBottom:5,paddingLeft:15,paddingRight:15,textAlign:"center",letterSpacing:0,fontWeight:"normal"},mobile:{}}},{id:p(),name:e("avatar"),key:"avatar",src:"",alt:"Avatar",type:"link",linkURL:"",contentStyles:{desktop:{paddingTop:12,paddingBottom:12,paddingLeft:12,paddingRight:12,textAlign:"center"},mobile:{}},styles:{desktop:{width:64,borderRadius:"50%",display:"block"},mobile:{}}},{id:p(),name:e("social_link"),key:"social_link",list:[{image:"https://s.magecdn.com/social/tc-facebook.svg",title:"Facebook",linkURL:""},{image:"https://s.magecdn.com/social/tc-instagram.svg",title:"Instagram",linkURL:""},{image:"https://s.magecdn.com/social/tc-tiktok.svg",title:"TikTok",linkURL:""},{image:"https://s.magecdn.com/social/tc-x.svg",title:"Twitter",linkURL:""}],imageWidth:32,contentStyles:{desktop:{paddingTop:12,paddingBottom:12,paddingLeft:12,paddingRight:12,textAlign:"left"},mobile:{}},styles:{desktop:{paddingTop:4,paddingBottom:4,paddingLeft:6,paddingRight:6},mobile:{}}}])(e),n=(e=>{const t={desktop:{textAlign:"center",paddingTop:12,paddingBottom:12,paddingLeft:12,paddingRight:12},mobile:{}},n={key:"column",desktop:{backgroundColor:"transparent",paddingTop:12,paddingLeft:6,paddingRight:6,paddingBottom:12,contentBackground:"transparent"},mobile:{}};return{full:{columns:1,type:"full",children:[{name:e("content"),key:"content",width:"100%",styles:n,children:[{name:e("drag_block_here"),key:"empty",width:"100%",styles:t}]}]},"1-1":{columns:2,type:"1-1",children:Array.from({length:2}).map(()=>({name:e("content"),key:"content",width:"50%",styles:n,children:[{name:e("drag_block_here"),key:"empty",width:"100%",styles:t}]}))},"1-1-1":{columns:3,type:"1-1-1",children:Array.from({length:3}).map(()=>({name:e("content"),key:"content",width:"33.3%",styles:n,children:[{name:e("drag_block_here"),key:"empty",width:"100%",styles:t}]}))},"1-1-1-1":{columns:4,type:"1-1-1-1",children:Array.from({length:4}).map(()=>({name:e("content"),key:"content",width:"25%",styles:n,children:[{name:e("drag_block_here"),key:"empty",width:"100%",styles:t}]}))},"1-2":{columns:2,type:"1-2",children:Array.from({length:2}).map((o,a)=>({name:e("content"),key:"content",width:0===a?"33.3%":"66.6%",styles:n,children:[{name:e("drag_block_here"),key:"empty",width:"100%",styles:t}]}))},"2-1":{columns:2,type:"2-1",children:Array.from({length:2}).map((o,a)=>({name:e("content"),key:"content",width:0===a?"66.6%":"33.3%",styles:n,children:[{name:e("drag_block_here"),key:"empty",width:"100%",styles:t}]}))},"2-4-2-4":{columns:4,type:"2-4-2-4",children:Array.from({length:4}).map((o,a)=>({name:e("content"),key:"content",width:a%2==0?"16.6%":"33.3%",styles:n,children:[{name:e("drag_block_here"),key:"empty",width:"100%",styles:t}]}))},"4-2-4-2":{columns:4,type:"4-2-4-2",children:Array.from({length:4}).map((o,a)=>({name:e("content"),key:"content",width:a%2==0?"33.3%":"16.6%",styles:n,children:[{name:e("drag_block_here"),key:"empty",width:"100%",styles:t}]}))}}})(e),o=(e=>t=>{const n={id:p(),name:e("drag_block_here"),key:"empty",width:"100%",styles:{desktop:{backgroundColor:"transparent",paddingTop:0,paddingLeft:0,paddingRight:0,paddingBottom:0},mobile:{}}};return{id:p(),name:e("container"),key:"column",type:"full",containerType:"none",styles:{key:"column",desktop:{backgroundColor:"transparent",paddingTop:0,paddingLeft:0,paddingRight:0,paddingBottom:0,contentBackground:"#fff"},mobile:{}},children:[{id:p(),name:e("content"),key:"content",width:"100%",styles:{key:"column",desktop:{backgroundColor:"transparent",paddingTop:12,paddingLeft:6,paddingRight:6,paddingBottom:12,contentBackground:"transparent"},mobile:{}},children:[t||n]}]}})(e);return{blockConfigsList:t,columnsSetting:n,getColumnConfig:o}},Pn=[{id:"dolor-sit-amet",name:"Dolor Sit Amet",description:"Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat.",image:"https://plus.unsplash.com/premium_photo-1681711647066-ef84575c0d95?fm=jpg&q=30&w=300&auto=format&fit=crop&ixlib=rb-4.1.0&ixid=M3wxMjA3fDB8MHxzZWFyY2h8MXx8cHJvZHVjdCUyMHBob3RvZ3JhcGh5fGVufDB8fDB8fHww",link:"https://loremipsum.com/checkout/cart/12345",price:2e3,currency:"USD",old_price:2500,new_price:2e3},{id:"sample-2",name:"Sample Pearl Necklace",description:"Classic strand of lustrous freshwater pearls with a sterling silver clasp. Timeless elegance for any outfit.",image:"https://picsum.photos/seed/necklace2/200/200",link:"https://www.example.com/products/sample-2",price:750,currency:"USD",old_price:null,new_price:null},{id:"sample-3",name:"Sample Gold Bracelet",description:"Handcrafted 14K yellow gold link bracelet. Lightweight and comfortable for everyday wear.",image:"https://picsum.photos/seed/bracelet3/200/200",link:"https://www.example.com/products/sample-3",price:450,currency:"USD",old_price:500,new_price:450},{id:"sample-4",name:"Sample Silver Earrings",description:"Delicate sterling silver drop earrings with subtle sparkle. A versatile addition to your jewelry collection.",image:"https://picsum.photos/seed/earrings4/200/200",link:"https://www.example.com/products/sample-4",price:199,currency:"USD",old_price:null,new_price:null},{id:"sample-5",name:"Sample Gemstone Pendant",description:"Stunning pendant with a natural gemstone centerpiece on a fine silver chain. Makes a memorable gift.",image:"https://picsum.photos/seed/pendant5/200/200",link:"https://www.example.com/products/sample-5",price:320,currency:"USD",old_price:400,new_price:320}],Rn=["product"],$n=e=>"discount"===e||"none"===e?e:"product",Bn=e=>"additional"===e?"additional":"main",Dn=()=>{const{blockMap:a,rootOrder:l,setBlocks:r,currentItem:c,setCurrentItem:d,previewMode:p,bodySettings:u,templateData:m,setIsDragStart:g,setActionType:h,apiConfig:b}=e.useContext(O),{t:f}=zt(),[_,x]=e.useState(!1),[v,w]=e.useState(null),[C,S]=e.useState(!1),{findStyleItem:j,cardItemElement:I,colorChange:N,inputChange:T,paddingChange:A}=An(),{columnsSetting:L,blockConfigsList:P}=Ln(),R=$n(c.data.containerType??"none"),$=c.data.productRole??"main",B=c.data.columnProducts,D=e.useMemo(()=>Array.isArray(B)?B:[],[B]),M=m?.content?.products?.length>0?m.content.products:m?.catalogProducts?.length>0?m.catalogProducts:Pn,E=m?.content?.primaryProductId,U=e=>{const{blockMap:t}=y([e]);let n={...a,...t};const o=Bn(e.productRole);"product"===e.containerType&&"main"===o&&Object.keys(n).forEach(t=>{if(t===e.id)return;const o=n[t];if(!o||"column"!==o.key)return;if("product"!==o.containerType)return;"main"===Bn(o.productRole)&&(n[t]={...o,productRole:"additional"})}),r(n,l,`edit_${(new Date).getTime()}`),d({...c,data:e})},F=e=>{const t=$n(c.data.containerType),n=e.children,o=n.length,a=c.data.children?.length??0,i=c.data.columnProducts??[],l=Array.from({length:o},(e,t)=>t<a?i[t]??null:null);return{...c.data,...e,containerType:t,columnProducts:l,children:n.map((e,t)=>{let n=e;if(c.data.children?.[t]){const o=c.data.children[t];n={...o,key:e.key,name:e.name,width:e.width,styles:s(e.styles??o.styles),children:o.children}}return{...n}})}},H=e=>{if(G)return;const t=s(c.data);t.containerType=$n(e);const n=t.containerType,o=Rn.includes(n);t.productRole=o?t.productRole??"main":void 0;const a=t.children?.length??0;let i=o?Array.from({length:a},(e,n)=>t.columnProducts?.[n]??null):[];if(o&&a>0&&M.length>0){const e=E?M.find(e=>e.id===E):M[0];e&&(i[0]=e)}t.columnProducts=i,U(t)},K=e=>{const t=s(c.data);t.productRole=Bn(e);const n=t.children?.length??0;let o=Array.from({length:n},(e,n)=>t.columnProducts?.[n]??null);if(n>0&&M.length>0){const e=E?M.find(e=>e.id===E):M[0];e&&!o[0]&&(o[0]=e)}t.columnProducts=o,U(t)},z=Rn.includes(R),W=e.useMemo(()=>Gt(c.data,a),[c.data,a]),q=e.useMemo(()=>k(a,l,c.data?.id),[a,l,c.data?.id]),J=e.useMemo(()=>(q||[]).filter(e=>e?.containerBlock&&e.containerBlock.id!==c.data?.id&&"none"!==e.containerType).map(e=>{const t=e.cellIndex??0;return{containerType:e.containerType,context:{columnIndex:t,columnProduct:e.containerBlock?.columnProducts?.[t]??null}}}),[q,c.data?.id]),G=e.useMemo(()=>(q||[]).some(e=>e?.containerBlock&&e.containerBlock.id!==c.data?.id&&"none"!==e.containerType),[q,c.data?.id]),Y=Ke(0,R,m,{},J).filter(({variableKey:e,key:t})=>!("product"===R)||(e??t)!==ge).filter(({variableKey:e,key:t})=>!W.has(e??t)),Z=e.useMemo(()=>{const e={columnIndex:0,columnProduct:D[0]??null};return We(R,m,e).filter(e=>e.variableKey&&!W.has(e.variableKey))},[R,m,D,W]),Q=e.useMemo(()=>{const e=new Set(Y.map(e=>e.variableKey??e.key)),t=Z.filter(t=>{const n=t.variableKey;return!(!n||e.has(n))&&(e.add(n),!0)});return[...Y,...t]},[Y,Z]),X=e=>t=>{const n=(e=>{const{value:t,type:n}=e;if("image"===n){const e=s(P.find(e=>"image"===e.key));return e?(e.src=t,e):{name:f("image"),key:"image",src:t,alt:"Image",type:"link",linkEnabled:!1,linkURL:"",contentStyles:{desktop:{paddingTop:12,paddingBottom:12,paddingLeft:12,paddingRight:12,textAlign:"center"},mobile:{}},styles:{desktop:{width:"auto"},mobile:{}}}}const o=s(P.find(e=>"text"===e.key));return o?(o.text=`<p>${t}</p>`,o.type="p",o.contentType="static",o):{name:f("text"),key:"text",text:`<p>${t}</p>`,type:"p",contentType:"static",styles:{desktop:{fontSize:14,fontFamily:"sans-serif",lineHeight:"120%",paddingTop:12,paddingBottom:12,paddingLeft:12,paddingRight:12,textAlign:"left"},mobile:{}}}})(e);"undefined"!=typeof window&&(window.__eeDragItemData=n,window.__eeDragSource="product-variables"),g(!0),h("add"),t.target.classList.add("ee-product-variable-item-dragging"),t.dataTransfer&&(t.dataTransfer.effectAllowed="copy")},ee=e=>{e.target.classList.remove("ee-product-variable-item-dragging"),"undefined"!=typeof window&&(window.__eeDragItemData=null,window.__eeDragSource=null),setTimeout(()=>{g(!1)},50)},te=[{key:"full",widths:["100%"],columns:1},{key:"1-1",widths:["50%","50%"],columns:2},{key:"1-1-1",widths:["33.33%","33.33%","33.33%"],columns:3},{key:"1-1-1-1",widths:["25%","25%","25%","25%"],columns:4}],ne="product"===R?te.filter(e=>1===e.columns):te,oe=e=>t=>{const n=s(c.data);n.children[e].styles[p]={...n.children[e].styles[p],...t},U(n)},ae=e=>{if("number"==typeof e)return e;if("string"!=typeof e)return;const t=Number.parseFloat(e);if(!Number.isNaN(t)){if(e.endsWith("%")){const e=Number(u?.contentWidth)||600;return Math.round(e*t/100)}return Math.round(t)}},ie=e=>t=>{if(null==t||Number.isNaN(Number(t)))return;const n=Math.max(1,Math.round(Number(t))),o=s(c.data);o.children[e].width=`${n}px`,U(o)};return i.jsxs(i.Fragment,{children:[i.jsxs("div",{className:"margin-y-30",children:[i.jsxs(i.Fragment,{children:[i.jsx("div",{className:"right-setting-block-item-title",children:f("container_settings")}),i.jsxs("div",{className:"ee-right-panel-stack",children:[i.jsxs("span",{className:"ee-stack-label",children:[f("container_type"),i.jsx(t.Tooltip,{title:f("tooltip_container_type"),children:i.jsx("span",{className:"ee-help-icon","aria-label":"Help",children:i.jsx(n.FontAwesomeIcon,{icon:o.faInfoCircle})})})]}),i.jsx(t.Select,{className:"ee-stack-control",value:R,onChange:H,disabled:G,style:{width:"100%"},options:V.map(({value:e,labelKey:t})=>({value:e,label:f(t)})),getPopupContainer:()=>document.querySelector(".right-settings")||document.body}),z&&i.jsxs("div",{className:"ee-product-assign-section margin-top-12",children:[i.jsx("span",{className:"ee-stack-label",children:f("product_role")}),i.jsx(t.Select,{className:"ee-stack-control",value:$,style:{width:"100%"},getPopupContainer:()=>document.querySelector(".right-settings")||document.body,onChange:K,options:[{value:"main",label:f("product_role_main_hero")},{value:"additional",label:f("product_role_additional")}]})]}),z&&i.jsxs("div",{className:"ee-product-assign-section margin-top-12",children:[i.jsx("span",{className:"ee-stack-label",children:f("assign_product_to_column")}),i.jsx(Tn,{apiConfig:b,templateData:m,value:D[0]?.id??void 0,selectedProduct:D[0],onChange:e=>((e,t)=>{const n=s(c.data),o=[...n.columnProducts??[]];o[e]=t,n.columnProducts=o,U(n)})(0,e),placeholder:f("assign_product_to_column"),staticProductList:M})]}),i.jsxs("div",{className:"ee-product-variables-section margin-top-12",children:[i.jsxs("button",{type:"button",className:"ee-product-variables-toggle",onClick:()=>S(e=>!e),children:[i.jsx("span",{children:f("variables")}),i.jsx("span",{className:"ee-product-variables-toggle-icon",children:C?"▴":"▾"})]}),C&&i.jsx("div",{className:"ee-product-variables-dropdown",children:Q.length>0?Q.map(e=>i.jsxs("div",{className:"ee-product-variable-item",draggable:!0,onDragStart:X(e),onDragEnd:ee,title:e.value,children:[i.jsx("span",{className:"ee-product-variable-item-label",children:e.labelKey?f(e.labelKey):e.label}),i.jsx("span",{className:"ee-product-variable-item-token",children:e.value})]},e.value)):i.jsx("div",{className:"ee-stack-help",children:"No variables available for this container type."})})]})]})]}),i.jsxs(i.Fragment,{children:[i.jsxs("div",{className:"right-setting-block-item-title",children:[" ",f("columns")]}),i.jsx("div",{children:ne.map((e,t)=>{return i.jsx("div",{className:Ot(c.data.type===e.key?"column-item-active":"column-item-un_active","column-item"),onClick:(n=e.key,()=>{if(c.data.children.length>L[n].children.length)return x(!0),void w(n);const e=F(L[n]);U(e)}),children:e.widths.map((t,n)=>{const o=n===e.widths.length-1;return i.jsx("span",{style:{width:t},className:Ot(o?"":"column-item-border-right",c.data.type===e.key?"column-item-active":"column-item-un_active","height-full")},n)})},t);var n})})]}),i.jsxs(i.Fragment,{children:[i.jsxs("div",{className:"right-setting-block-item-title",children:[" ",f("column_settings")]}),i.jsx(t.Tabs,{defaultActiveKey:"1",animated:{inkBar:!0,tabPane:!0},items:c.data.children.map((e,n)=>{const o=n+1,a=j(e.styles,"backgroundColor");return{label:`${f("column")} ${o}`,key:o,children:i.jsxs(i.Fragment,{children:[I(f("content_background_color"),i.jsx(_n,{color:a,setColor:({hex:e})=>((e,t)=>n=>{const o=s(c.data);o.children[t].styles[p][e]=n,U(o)})("backgroundColor",n)(e)})),I(f("size_px"),i.jsx(t.InputNumber,{min:1,className:"input-width",addonAfter:"px",value:ae(e.width),onChange:ie(n)})),i.jsx(xn,{padding:{paddingTop:j(e.styles,"paddingTop"),paddingRight:j(e.styles,"paddingRight"),paddingLeft:j(e.styles,"paddingLeft"),paddingBottom:j(e.styles,"paddingBottom")},setPadding:oe(n)})]})}})})]}),(()=>{const e=j(c.data.styles,"backgroundColor"),n=j(c.data.styles,"contentBackground"),o=j(c.data.styles,"borderRadius"),a="number"==typeof o?o:parseInt(String(o||"").replace("px",""),10)||0;return i.jsxs(i.Fragment,{children:[i.jsxs("div",{className:"right-setting-block-item-title",children:[" ",f("column_styles")]}),I(f("background_color"),i.jsx(_n,{color:e,setColor:N("backgroundColor")})),I(f("content_background_color"),i.jsx(_n,{color:n,setColor:N("contentBackground")})),I(f("border_radius"),i.jsx(t.InputNumber,{min:0,className:"input-width",addonAfter:"px",value:a,onChange:e=>T("borderRadius")(Number(e)||0)})),i.jsx(xn,{padding:{paddingTop:j(c.data.styles,"paddingTop"),paddingRight:j(c.data.styles,"paddingRight"),paddingLeft:j(c.data.styles,"paddingLeft"),paddingBottom:j(c.data.styles,"paddingBottom")},setPadding:A})]})})()]}),i.jsx(t.Modal,{title:f("column_delete"),open:_,onOk:()=>{const e=F(L[v]);U(e),x(!1),w(null)},onCancel:()=>{x(!1)},width:400,okText:f("confirm"),cancelText:f("cancel"),wrapClassName:"ee-modal-dark",children:i.jsx("p",{className:"margin-y-30",dangerouslySetInnerHTML:{__html:f("column_delete_desc",{count:`<span class="column-modal-context">\n ${v?c.data.children.length-L[v].children.length:0}\n </span>`})}})})]})},Mn=({mlEmailNodesEndpoint:t,mlGenerationEndpoint:n,headers:o={},templateData:a,blockId:i,containerType:l,containerId:r,productId:s,blockName:c="Text",blockElementType:d="p",emailTemplateId:p,companyId:u,language:m="en"}={})=>{const g=!!(t&&String(p??"").trim()&&String(u??"").trim()&&i&&r),y=!!n,h=g||y;return{generateOptions:e.useCallback(async(e,h,b={})=>{const{previousPrompt:f="",previousSelectedAiContent:k=""}=b,_=function(e,t={}){const{containerType:n}=t,o=String(e??"").trim();let a;return a=ze[o]?ze[o]:o?o.split(/[-_]/).map(e=>e.length?e[0].toUpperCase()+e.slice(1).toLowerCase():"").join(""):"DisplayText",a||(a="DisplayText"),"product"===n&&"DisplayText"===a?"ProductDescription":a}(e,{containerType:l});if(g){const e={containerType:l||"none",id:r};if("product"===(l||"")&&null!=s){const t=String(s).trim();t&&(e.productId=t)}const n={blockContext:{blockId:i,name:c,type:d||"p"},companyId:u,containerContext:e,emailTemplateId:p,language:m||"en",promptContext:{newPrompt:h||"",previousPrompt:f||"",previousSelectedAiContent:k||""},type:_},a=await(async(e,t,n={})=>{if(!e)return console.error("[API Service] generate-email-nodes: no endpoint"),{success:!1,error:"ML endpoint is not configured."};try{const o=await fetch(e,{method:"POST",headers:{"Content-Type":"application/json",...n},body:JSON.stringify(t)});let a={};try{a=await o.json()}catch{a={}}if(!o.ok||!1===a.success){let e="";const t=a.error;if(t&&"object"==typeof t){const n=null!=t.code?String(t.code):"",o=null!=t.message?String(t.message):"";e=[n,o].filter(Boolean).join(" — ")||o||n}return e||(e=null!=a.message?String(a.message):`${o.status} ${o.statusText}`),console.error("[API Service] generate-email-nodes failed:",e),{success:!1,error:String(e),errorCode:t&&"object"==typeof t&&null!=t.code?String(t.code):void 0}}const i=Array.isArray(a.variations)?a.variations:[],l=i.map(e=>e&&"string"==typeof e.value?e.value.trim():"").filter(Boolean);return 0===l.length?(console.error("[API Service] generate-email-nodes: empty variations"),{success:!1,error:"No variations were returned for this request."}):{success:!0,options:l,variations:i,emailJson:"string"==typeof a.emailJson?a.emailJson:void 0,blockId:a.blockId,emailTemplateId:a.emailTemplateId}}catch(e){return console.error("[API Service] Error calling generate-email-nodes:",e),{success:!1,error:e&&"object"==typeof e&&"message"in e?String(e.message):"Unable to reach the ML service. Check your network and try again."}}})(t,n,o);if(a&&a.success&&a.options?.length)return a.options;return{error:a&&"object"==typeof a&&a.error?String(a.error):"No response from the ML service."}}if(y){const e={variable:_,prompt:h,context:{templateData:a,blockId:i,containerType:l}},t=await(async(e,t,n={})=>{if(!e)return console.error("[API Service] ML endpoint not configured"),null;try{const o=await fetch(e,{method:"POST",headers:{"Content-Type":"application/json",...n},body:JSON.stringify(t)});if(!o.ok)return console.error("[API Service] ML endpoint failed:",o.status,o.statusText),null;const a=await o.json();if(!a.success)return console.error("[API Service] ML API returned error:",a.error),null;const i=a.data?.options??[];return Array.isArray(i)&&0!==i.length?i:(console.error("[API Service] ML API returned empty options"),null)}catch(e){return console.error("[API Service] Error calling ML endpoint:",e),null}})(n,e,o);return t&&t.length?t:{error:"The legacy ML endpoint did not return any options. Check the API response."}}return{i18nKey:"ml_ai_unavailable"}},[g,y,t,n,o,a,i,l,r,s,c,d,p,u,m]),isConfigured:h}};function En(){const{blockMap:t,rootOrder:n,currentItem:o}=e.useContext(O);return e.useMemo(()=>{if(!t||!o?.id)return{containerBlock:null,containerType:"none",columnIndex:0,cellIndex:0};const{containerBlock:e,containerType:a,cellIndex:i,isRoot:l,rootIndex:r}=function(e,t,n){const o=(t||[]).indexOf(n);if(-1!==o){const t=e[n];return{containerBlock:t??null,containerType:t?.containerType??"none",cellIndex:0,isRoot:!0,rootIndex:o}}const a=f(e,t,n);if(!a)return{containerBlock:null,containerType:"none",cellIndex:0,isRoot:!1};const i=e[a.containerId];return{containerBlock:i??null,containerType:i?.containerType??"none",cellIndex:a.cellIndex,isRoot:!1}}(t,n,o.id);let s=0;if(l)s=r??0;else if(e){const t=n.indexOf(e.id);s=t>=0?t:0}const c=i??0;return{containerBlock:e??null,containerType:a??"none",columnIndex:s,cellIndex:c,contentIndex:c}},[t,n,o?.id])}const{TextArea:Un}=t.Input;const Fn=()=>{const{currentItem:a,previewMode:l,templateData:r,apiConfig:c,language:p,aiEnabled:u=!0}=e.useContext(O),{t:m}=zt(),{findStyleItem:g,cardItemElement:y,paddingChange:h,otherStylesChange:b,inputChange:f,updateItemStyles:k}=An(),{containerBlock:_,containerType:x,cellIndex:v}=En(),w="product"===x?_?.columnProducts?.[v??0]?.id:void 0,{generateOptions:C}=Mn({mlEmailNodesEndpoint:c?.mlEmailNodesEndpoint,mlGenerationEndpoint:c?.mlGenerationEndpoint,headers:c?.headers||{},templateData:r,blockId:a?.id,containerType:x,containerId:_?.id,productId:w,blockName:a?.data?.name||"Text",blockElementType:a?.data?.type||"p",emailTemplateId:c?.emailTemplateId,companyId:c?.companyId??r?.companyId,language:p||"en"}),[S,j]=e.useState(""),I=(e,t)=>{const n=s(a.data);n.styles||(n.styles={desktop:{},mobile:{}}),n.styles.desktop||(n.styles.desktop={}),n.styles.mobile||(n.styles.mobile={}),n.styles.desktop[e]=t,n.styles[l][e]=t,n.text=d(n.text,n.styles.desktop),k(n)},[N,T]=e.useState([]),[A,L]=e.useState(!1),[P,R]=e.useState(""),$=a.data.contentType??"dynamic",B=a.data.type||"p",D=e=>{if(!u)return;const t=e?"dynamic":"static",n=s(a.data);n.contentType=t,"dynamic"===t&&(n.selectedVariableKey=void 0,n.dynamicVariable=n.dynamicVariable??"",n.dynamicPrompt=n.dynamicPrompt??"",n.dynamicSelectedContent=n.dynamicSelectedContent??"",n.dynamicOptions=Array.isArray(n.dynamicOptions)?n.dynamicOptions:[]),k(n)},M=async()=>{const e=a.data.dynamicVariable??"",t=a.data.dynamicPrompt??S??"";L(!0),R("");try{const o=await C(e,t,{previousPrompt:a.data.dynamicPreviousPrompt??"",previousSelectedAiContent:(n=a.data.dynamicSelectedContent||a.data.text,null==n||"string"!=typeof n?"":n.replace(/<[^>]+>/g," ").replace(/\s+/g," ").trim())});if(o&&"object"==typeof o&&!Array.isArray(o))return o.i18nKey?R(m(o.i18nKey)):o.error?R(String(o.error)):R(m("ml_no_variations")),void T([]);if(Array.isArray(o)&&o.length>0){R(""),T(o);const e=s(a.data);e.dynamicOptions=o,e.dynamicPrompt=t,e.dynamicPreviousPrompt=t,k(e)}else R(m("ml_no_variations")),T([])}catch(e){console.error("[TextStyleSettings] Error during content generation:",e),R(e&&"object"==typeof e&&"message"in e?String(e.message):m("ml_generation_unexpected_error")),T([])}finally{L(!1)}var n},E=e=>{const t=e.target.value;j(t),R("");const n=s(a.data);n.dynamicPrompt=t,k(n)};return i.jsxs("div",{className:"margin-y-30",children:[i.jsxs(i.Fragment,{children:[i.jsx("div",{className:"right-setting-block-item-title",children:m("text_and_content_type")}),i.jsxs("div",{className:"ee-content-type-two-rows margin-bottom-12",children:[u&&i.jsxs("div",{className:"ee-content-type-row ee-content-type-row-1",children:[i.jsx("span",{className:"ee-ai-label",children:m("ai_enabled")}),i.jsx(t.Switch,{checked:"dynamic"===$,onChange:D})]}),i.jsx("div",{className:"ee-content-type-row ee-content-type-row-2",children:[{name:m("body_paragraph"),value:"p"},{name:m("heading_h1"),value:"h1"},{name:m("heading_h2"),value:"h2"},{name:m("heading_h3"),value:"h3"},{name:m("heading_h4"),value:"h4"}].map(({name:e,value:t})=>{return i.jsx("div",{className:Ot(B===t?"align-style-item-active":"align-style-item-un_active","align-style-item"),onClick:(n=t,()=>{let e=a.data.styles.desktop.fontSize;switch(n){case"h1":e=22;break;case"h2":e=20;break;case"h3":e=18;break;case"h4":e=16;break;default:e=e||14}const t=s(a.data);t.type=n,t.styles={...t.styles,desktop:{...t.styles.desktop,fontSize:e,fontWeight:"p"!==n?"bold":t.styles.desktop.fontWeight}},t.text=d(t.text,t.styles.desktop),k(t)}),children:e},t);var n})})]}),u&&"dynamic"===$&&i.jsxs(i.Fragment,{children:[i.jsxs("div",{className:"ee-dynamic-prompt-block",children:[i.jsxs("span",{className:"ee-prompt-label",children:[m("dynamic_prompt_help"),i.jsx(t.Tooltip,{title:m("tooltip_dynamic_prompt"),children:i.jsx("span",{className:"ee-help-icon","aria-label":"Help",children:i.jsx(n.FontAwesomeIcon,{icon:o.faInfoCircle})})})]}),i.jsx(Un,{rows:3,value:a.data.dynamicPrompt??S,onChange:E,placeholder:m("dynamic_prompt_help")}),i.jsx(t.Button,{type:"primary",size:"small",loading:A,disabled:!(a.data.dynamicPrompt??S??"").trim(),onClick:M,children:m("generate")}),P?i.jsx("div",{className:"ee-ml-generation-error",role:"alert",children:P}):null]}),(a.data.dynamicOptions?.length>0||N.length>0)&&i.jsxs("div",{className:"ee-sample-content-block",children:[i.jsx("div",{className:"card-item-title",children:m("select_content")}),(a.data.dynamicOptions||N).map((e,t)=>{const n="string"==typeof e?e:String(e),o=(a.data.text||a.data.dynamicSelectedContent||"").replace(/<[^>]+>/g,"").replace(/\s+/g," ").trim(),l=n.replace(/\s+/g," ").trim(),r=o.length>0&&o===l;return i.jsx("div",{className:Ot("ee-sample-content-item",r&&"ee-sample-content-item-selected"),onClick:()=>(e=>{const t=s(a.data);t.dynamicSelectedContent=e,t.text=e,k(t),T([]),R("")})(e),children:e},t)})]})]})]}),(()=>{const e=g(a.data.styles,"color"),r=g(a.data.styles,"linkColor"),c=g(a.data.styles,"textAlign"),d=g(a.data.styles,"fontFamily"),p=g(a.data.styles,"fontSize"),u=null!=p&&""!==p?Number(p):14,h=g(a.data.styles,"lineHeight"),_=null!=h&&""!==h&&Number(String(h).replace(/%/g,""))||120;return i.jsxs(i.Fragment,{children:[i.jsx("div",{className:"right-setting-block-item-title",children:m("text_styles")}),y(m("font_color"),i.jsx(_n,{color:e,setColor:({hex:e})=>I("color",e)})),y(m("link_color"),i.jsx(_n,{color:r||e||"#2faade",setColor:({hex:e})=>((e,t)=>{const n=s(a.data);n.styles||(n.styles={desktop:{},mobile:{}}),n.styles.desktop||(n.styles.desktop={}),n.styles.mobile||(n.styles.mobile={}),n.styles.desktop[e]=t,n.styles[l][e]=t,k(n)})("linkColor",e)})),y(m("text_align"),i.jsx("div",{className:"flex justify-center items-center",children:[{icon:o.faAlignLeft,value:"left"},{icon:o.faAlignCenter,value:"center"},{icon:o.faAlignRight,value:"right"},{icon:o.faAlignJustify,value:"justify"}].map(({icon:e,value:t})=>i.jsx("div",{className:Ot(c===t?"align-style-item-active":"align-style-item-un_active","align-style-item"),onClick:()=>b("textAlign",t),children:i.jsx(n.FontAwesomeIcon,{icon:e,className:"tag-style-size"})},t))})),y(m("font_family"),i.jsx(t.Select,{className:"input-width",value:d,onChange:e=>I("fontFamily",e),getPopupContainer:()=>document.querySelector(".right-settings")||document.body,children:["sans-serif","Arial","Verdana","Times New Roman","Garamond","Georgia","Courier New","cursive"].map(e=>i.jsx(t.Select.Option,{value:e,children:e},e))})),y(m("font_size"),i.jsx(t.InputNumber,{min:1,max:999,className:"input-width",addonAfter:"px",value:u,onChange:e=>I("fontSize",null!=e&&""!==e?Number(e):14)})),y(m("line_height"),i.jsx(t.InputNumber,{className:"input-width",addonAfter:"%",min:1,max:999,value:_,onChange:e=>f("lineHeight")(null!=e&&""!==e?`${e}%`:"120%")}))]})})(),i.jsxs(i.Fragment,{children:[i.jsx("div",{className:"right-setting-block-item-title",children:m("padding_settings")}),i.jsx(xn,{padding:{paddingTop:g(a.data.styles,"paddingTop"),paddingRight:g(a.data.styles,"paddingRight"),paddingLeft:g(a.data.styles,"paddingLeft"),paddingBottom:g(a.data.styles,"paddingBottom")},setPadding:h})]})]})},On=()=>{const{currentItem:a,previewMode:l,templateData:r,blockList:c}=e.useContext(O),{t:d}=zt(),{containerType:p,columnIndex:u,contentIndex:m}=En(),g=["header","footer","discount"].includes(p),{findStyleItem:y,cardItemElement:h,colorChange:b,paddingChange:f,inputChange:k,updateItemStyles:_}=An(),{labelOptions:x,urlOptions:v}=function(e,t){return{labelOptions:Fe.map(({variableKey:e,labelKey:n})=>({value:fe(e),labelKey:n,pasteValue:Me(t,e,{})})),urlOptions:Oe.map(({variableKey:e,labelKey:n})=>({value:fe(e),labelKey:n,pasteValue:Me(t,e,{})}))}}(0,r);return i.jsxs("div",{className:"margin-y-30",children:[(()=>{const{linkURL:e,text:n,labelVariable:o,urlVariable:l}=a.data,p=n?.replace(/<[^>]+>/g,"").trim()??"",y=o||p&&/\{\{\w+\}\}/.test(p),b=o?o.replace(/^\{\{|\}\}$/g,"").trim():p.match(/\{\{(\w+)\}\}/)?.[1]||"CTALabel",f={columnIndex:m,columnProduct:c?.[u]?.columnProducts?.[m]??null},k=r&&y?Me(r,b,f):null,w=null==k||String(k).startsWith("{{")?p:k,C=l?l.replace(/^\{\{|\}\}$/g,"").trim():"",S=!e&&C&&r?Me(r,C,f):null,j=e||(null==S||"string"!=typeof S||S.startsWith("{{")?"":String(S).replace(/^https?:\/\//,"").trim())||"";return i.jsxs("div",{children:[i.jsx("div",{className:"right-setting-block-item-title",children:d("button_action")}),g&&x.length>0&&i.jsx(i.Fragment,{children:h(d("button_label_variable"),i.jsx(t.Select,{className:"ee-variable-select width-full",placeholder:d("button_label_manual"),allowClear:!0,value:o||void 0,onChange:e=>{const t=s(a.data);if(!e)return t.labelVariable="",t.text=t.text||"",void _(t);const n=x.find(t=>t.value===e);t.labelVariable=e,t.text=n?n.pasteValue:e,_(t)},getPopupContainer:()=>document.querySelector(".right-settings")||document.body,options:[{value:"",label:d("button_label_manual")},...x.map(e=>({value:e.value,label:d(e.labelKey)}))]}))}),i.jsx("div",{className:"card-item-title",children:d("button_text")}),i.jsx("div",{className:"margin-top-6",children:i.jsx(t.Input,{value:w,onChange:e=>{const t=e.target.value,n=s(a.data);n.text=t,t&&t.startsWith("{{")||(n.labelVariable=""),_(n)},placeholder:d("button_label_manual")})}),i.jsx("div",{className:"ee-button-action-divider"}),h(d("action_type"),i.jsx("div",{className:"link-tag",children:d("link")})),g&&v.length>0&&i.jsx(i.Fragment,{children:h(d("button_url_variable"),i.jsx(t.Select,{className:"ee-variable-select width-full",placeholder:d("button_url_manual"),allowClear:!0,value:l||void 0,onChange:e=>{const t=s(a.data);if(!e)return t.urlVariable="",t.linkURL=t.linkURL||"",void _(t);const n=v.find(t=>t.value===e);t.urlVariable=e;const o=n?n.pasteValue:e;t.linkURL="string"==typeof o?o.replace(/^https?:\/\//,""):"",_(t)},getPopupContainer:()=>document.querySelector(".right-settings")||document.body,options:[{value:"",label:d("button_url_manual")},...v.map(e=>({value:e.value,label:d(e.labelKey)}))]}))}),i.jsx("div",{className:"card-item-title",children:d("link_url")}),i.jsx("div",{className:"margin-top-6",children:i.jsx(t.Input,{addonBefore:"https://",value:j,onChange:e=>{const t=e.target.value,n=s(a.data);n.linkURL=t,t&&t.startsWith("{{")||(n.urlVariable=""),_(n)}})})]})})(),(()=>{const e=y(a.data.styles,"width"),c=y(a.data.styles,"borderRadius"),p="number"==typeof c?c:parseInt(String(c||"").replace("px",""),10)||0,u=a.data.contentStyles?.[l]?.textAlign??"center",m=y(a.data.styles,"color"),g=y(a.data.styles,"fontFamily"),x=y(a.data.styles,"fontSize"),v=y(a.data.styles,"lineHeight"),w=y(a.data.styles,"backgroundColor")??(e=>e?.brandContext?.brand_color??"#111111")(r);return i.jsxs(i.Fragment,{children:[i.jsx("div",{className:"right-setting-block-item-title",children:d("button_styles")}),h(d("width_auto"),i.jsx(t.Switch,{checked:"auto"===e,className:Ot("auto"===e?"switch-active":"switch-disabled"),onChange:()=>{const t="auto"===e?"100%":"auto";k("width")(t)}})),"auto"!==e&&i.jsx(t.Slider,{value:Number(e.replace("%","")),onChange:e=>k("width")(e+"%")}),"auto"!==e&&h(d("align"),i.jsx("div",{className:"flex justify-center items-center",children:[{icon:o.faAlignLeft,value:"left"},{icon:o.faAlignCenter,value:"center"},{icon:o.faAlignRight,value:"right"}].map(({icon:e,value:t})=>i.jsx("div",{className:Ot(u===t?"align-style-item-active":"align-style-item-un_active","align-style-item"),onClick:()=>{const e=s(a.data);e.styles={...e.styles||{},[l]:{...e.styles?.[l]||{},textAlign:"center"}},e.contentStyles={...e.contentStyles||{},[l]:{...e.contentStyles?.[l]||{},textAlign:t}},_(e)},children:i.jsx(n.FontAwesomeIcon,{icon:e,className:"tag-style-size"})},t))})),h(d("font_color"),i.jsx(_n,{color:m,setColor:b("color")})),h(d("button_color"),i.jsx(_n,{color:w,setColor:b("backgroundColor")})),h(d("border_radius"),i.jsx(t.InputNumber,{min:0,className:"input-width",addonAfter:"px",value:p,onChange:e=>k("borderRadius")(Number(e)||0)})),h(d("font_family"),i.jsx(t.Select,{className:"input-width",value:g,onChange:k("fontFamily"),getPopupContainer:()=>document.querySelector(".right-settings")||document.body,children:["sans-serif","Arial","Verdana","Times New Roman","Garamond","Georgia","Courier New","cursive"].map(e=>i.jsx(t.Select.Option,{value:e,children:e},e))})),h(d("font_size"),i.jsx(t.InputNumber,{min:0,className:"input-width",addonAfter:"px",value:x,onChange:k("fontSize")})),h(d("line_height"),i.jsx(t.InputNumber,{className:"input-width",addonAfter:"%",min:0,value:Number(v.replace("%","")),onChange:e=>k("lineHeight")(e+"%")})),i.jsx("div",{className:"card-item-title",children:d("button_padding")}),i.jsx(xn,{padding:{paddingTop:y(a.data.styles,"paddingTop"),paddingRight:y(a.data.styles,"paddingRight"),paddingLeft:y(a.data.styles,"paddingLeft"),paddingBottom:y(a.data.styles,"paddingBottom")},setPadding:f})]})})(),i.jsxs(i.Fragment,{children:[i.jsxs("div",{className:"right-setting-block-item-title",children:[" ",d("padding_settings")]}),i.jsx(xn,{padding:{paddingTop:y(a.data.contentStyles,"paddingTop"),paddingRight:y(a.data.contentStyles,"paddingRight"),paddingLeft:y(a.data.contentStyles,"paddingLeft"),paddingBottom:y(a.data.contentStyles,"paddingBottom")},setPadding:e=>{const t=s(a.data);t.contentStyles[l]={...t.contentStyles[l],...e},_(t)}})]})]})},Hn=()=>{const{currentItem:a,previewMode:l}=e.useContext(O),{t:r}=zt(),{findStyleItem:c,cardItemElement:d,colorChange:p,updateItemStyles:u,inputChange:m}=An(),g=e=>{const t=s(a.data);t.contentStyles[l]={...t.contentStyles[l],...e},u(t)};return i.jsx("div",{className:"margin-y-30",children:(()=>{const e=c(a.data.contentStyles,"textAlign"),y=c(a.data.styles,"width"),h=c(a.data.styles,"borderTopColor"),b=c(a.data.styles,"borderTopWidth"),f=c(a.data.styles,"borderTopStyle"),k=[{label:r("solid"),value:"solid"},{label:r("dotted"),value:"dotted"},{label:r("dashed"),value:"dashed"}];return i.jsxs(i.Fragment,{children:[i.jsxs("div",{className:"right-setting-block-item-title",children:[" ",r("divider_styles")]}),d(r("divider_type"),i.jsx(t.Select,{className:"input-width",value:f,onChange:m("borderTopStyle"),getPopupContainer:()=>document.querySelector(".right-settings")||document.body,children:k.map(e=>i.jsx(t.Select.Option,{value:e.value,children:e.label},e.value))})),d(r("height"),i.jsx(t.InputNumber,{min:0,className:"input-width",addonAfter:"px",value:b,onChange:m("borderTopWidth")})),d(r("divider_color"),i.jsx(_n,{color:h,setColor:p("borderTopColor")})),i.jsx("div",{className:"card-item-title",children:r("width")}),i.jsx(t.Slider,{value:Number(y.replace("%","")),onChange:e=>m("width")(e+"%")}),d(r("align"),i.jsx("div",{className:"flex justify-center items-center",children:[{icon:o.faAlignLeft,value:"left"},{icon:o.faAlignCenter,value:"center"},{icon:o.faAlignRight,value:"right"},{icon:o.faAlignJustify,value:"justify"}].map(({icon:t,value:o})=>i.jsx("div",{className:Ot(e===o?"align-style-item-active":"align-style-item-un_active","align-style-item"),onClick:()=>(e=>{const t=s(a.data);t.contentStyles[l]={...t.contentStyles[l],textAlign:e},u(t)})(o),children:i.jsx(n.FontAwesomeIcon,{icon:t,className:"tag-style-size"})},o))})),i.jsxs("div",{className:"card-item-title",children:[" ",r("padding_settings")]}),i.jsx(xn,{padding:{paddingTop:c(a.data.contentStyles,"paddingTop"),paddingRight:c(a.data.contentStyles,"paddingRight"),paddingLeft:c(a.data.contentStyles,"paddingLeft"),paddingBottom:c(a.data.contentStyles,"paddingBottom")},setPadding:g})]})})()})},Kn=()=>{const{currentItem:a}=e.useContext(O),{t:l}=zt(),{findStyleItem:r,cardItemElement:s,inputChange:c}=An(),d=r(a.data.styles,"height"),p="number"==typeof d?d:parseInt(d,10)||16;return i.jsxs("div",{className:"margin-y-30",children:[i.jsx("div",{className:"right-setting-block-item-title",children:l("spacer_block")}),s(i.jsxs("span",{className:"flex items-center gap-2",children:[i.jsx(n.FontAwesomeIcon,{icon:o.faArrowsAltV,className:"tag-style-size"}),l("height")]}),i.jsx(t.InputNumber,{min:0,max:500,className:"input-width",addonAfter:"px",value:p,onChange:e=>c("height")(e??0)}))]})},zn=()=>{const{currentItem:a,previewMode:l}=e.useContext(O),{t:r}=zt(),{findStyleItem:d,paddingChange:p,updateItemStyles:u,cardItemElement:m,colorChange:g,inputChange:y}=An(),{list:h=[],separator:b=" | "}=a.data,[f,k]=e.useState(null),[_,x]=e.useState(!1),[v,w]=e.useState(null),C=e.useRef(null),S=(e,t)=>{const n=s(a.data);n[e]=t,u(n)},j=e.useCallback(c(e=>{e.preventDefault();const t=C.current;if(!t)return;const n=e.target.closest("[data-index]");if(!n)return;const o=Array.from(t.children).indexOf(n);if(-1===o)return;const a=parseInt(v,10);if(a===o)return;const i=s(h);[i[o],i[a]]=[i[a],i[o]],w(String(o)),S("list",i)},50),[h,v]),I=[{label:r("same_tab"),value:"_self"},{label:r("new_tab"),value:"_blank"}];return i.jsxs("div",{className:"margin-y-30",children:[i.jsx("div",{className:"right-setting-block-item-title",children:r("menu_items")}),i.jsx("div",{ref:C,onDragOver:j,className:"margin-top-12",onDragStart:e=>{const t=e.target.closest("[data-index]"),n=t?.getAttribute("data-index");null!=n&&(t.classList.add("social-link-item-current"),k(t),x(!0),w(n))},onDragEnd:()=>{const e=f?.closest?.("[data-index]");e&&e.classList.remove("social-link-item-current"),k(null),x(!1),w(null)},children:h.map((e,a)=>i.jsx("div",{"data-index":a,draggable:!0,className:Ot("social-link-item",_&&"social-link-item-drag_start",v===String(a)?"social-link-item-current":"border-transparent"),children:i.jsxs("div",{className:"social-link-item-content ee-menu-item-content",children:[i.jsxs("div",{className:"ee-menu-item-header flex items-center justify-between margin-bottom-8",children:[i.jsxs("div",{className:"flex items-center gap-2 cursor-grab",children:[i.jsx(n.FontAwesomeIcon,{icon:o.faGripVertical,className:"tag-style-size"}),i.jsxs("span",{className:"font-semibold",children:[r("menu_item")," ",a+1]})]}),i.jsx("div",{className:"social-link-item-icon social-link-item-icon-slate ee-menu-item-delete",onClick:()=>S("list",h.filter((e,t)=>t!==a)),children:i.jsx(n.FontAwesomeIcon,{icon:o.faTrash,className:"social-link-item-icon-svg social-link-item-icon-svg-deep"})})]}),i.jsxs("div",{className:"ee-menu-item-fields",children:[m(r("label"),i.jsx(t.Input,{className:"ee-menu-item-input",value:e.label||"",onChange:e=>S("list",h.map((t,n)=>n===a?{...t,label:e.target.value}:t)),placeholder:"Page"})),m(r("url"),i.jsx(t.Input,{addonBefore:"https://",className:"ee-menu-item-input",value:(e.url||"").replace(/^https?:\/\//,""),onChange:e=>S("list",h.map((t,n)=>n===a?{...t,url:e.target.value}:t)),placeholder:"example.com"})),m(r("target"),i.jsx(t.Select,{className:"input-width ee-menu-item-input",value:e.target||"_self",onChange:e=>S("list",h.map((t,n)=>n===a?{...t,target:e}:t)),getPopupContainer:()=>document.querySelector(".right-settings")||document.body,children:I.map(e=>i.jsx(t.Select.Option,{value:e.value,children:e.label},e.value))}))]})]})},a))}),i.jsxs("button",{type:"button",className:"menu-add-new-item margin-top-12",onClick:()=>S("list",h.concat({label:r("page"),url:"",target:"_self"})),children:[i.jsx("span",{className:"menu-add-new-item-icon",children:"+"})," ",r("add_new_item")]}),i.jsx("div",{className:"right-setting-block-item-title margin-top-18",children:r("menu_styles")}),m(r("font_family"),i.jsx(t.Select,{className:"input-width",value:d(a.data.styles,"fontFamily"),onChange:y("fontFamily"),getPopupContainer:()=>document.querySelector(".right-settings")||document.body,children:["sans-serif","Arial","Verdana","Times New Roman","Georgia","Courier New"].map(e=>i.jsx(t.Select.Option,{value:e,children:e},e))})),m(r("font_size"),i.jsx(t.InputNumber,{min:8,max:72,className:"input-width",addonAfter:"px",value:d(a.data.styles,"fontSize"),onChange:y("fontSize")})),m(r("letter_spacing"),i.jsx(t.InputNumber,{className:"input-width",addonAfter:"px",value:d(a.data.styles,"letterSpacing"),onChange:y("letterSpacing")})),m(r("text_color"),i.jsx(_n,{color:d(a.data.styles,"color"),setColor:g("color")})),m(r("link_color"),i.jsx(_n,{color:d(a.data.styles,"linkColor"),setColor:g("linkColor")})),m(r("align"),i.jsx("div",{className:"flex justify-center items-center",children:[{icon:o.faAlignLeft,value:"left"},{icon:o.faAlignCenter,value:"center"},{icon:o.faAlignRight,value:"right"}].map(({icon:e,value:t})=>i.jsx("div",{className:Ot(d(a.data.contentStyles,"textAlign")===t?"align-style-item-active":"align-style-item-un_active","align-style-item"),onClick:()=>(e=>{const t=s(a.data);t.contentStyles[l]={...t.contentStyles[l],textAlign:e},u(t)})(t),children:i.jsx(n.FontAwesomeIcon,{icon:e,className:"tag-style-size"})},t))})),m(r("separator"),i.jsx(t.Input,{value:b,onChange:e=>S("separator",e.target.value),placeholder:" | "})),i.jsx("div",{className:"right-setting-block-item-title margin-top-18",children:r("padding_settings")}),i.jsx(xn,{padding:{paddingTop:d(a.data.contentStyles,"paddingTop"),paddingRight:d(a.data.contentStyles,"paddingRight"),paddingLeft:d(a.data.contentStyles,"paddingLeft"),paddingBottom:d(a.data.contentStyles,"paddingBottom")},setPadding:e=>{const t=s(a.data);t.contentStyles[l]={...t.contentStyles[l],...e},u(t)}}),i.jsx("div",{className:"card-item-title margin-top-18",children:r("spacing")}),i.jsx(xn,{padding:{paddingTop:d(a.data.styles,"paddingTop"),paddingRight:d(a.data.styles,"paddingRight"),paddingLeft:d(a.data.styles,"paddingLeft"),paddingBottom:d(a.data.styles,"paddingBottom")},setPadding:p})]})},Vn=({imageUploadEndpoint:t,headers:n={},companyId:o,imageUploadQueryParams:a,imageUploadCompanyField:i="companyId"}={})=>{const l=!!t;return{uploadImageFile:e.useCallback(async e=>{if(!l)return console.error("[useImageUpload] No image upload endpoint configured"),null;if(!e)return console.error("[useImageUpload] No file provided"),null;if(!e.type.startsWith("image/"))return console.error("[useImageUpload] File is not an image:",e.type),null;if(e.size>10485760)return console.error("[useImageUpload] File too large:",e.size,"bytes"),null;const r=await(async(e,t,n,o={},a={})=>{if(!e)return console.error("[API Service] No image upload endpoint configured"),null;if(!t)return console.error("[API Service] No file provided for upload"),null;const{queryParams:i={},companyField:l="companyId"}=a;try{const a=new FormData;a.append("file",t),n&&("comment"===l?a.append("comment",n):a.append("companyId",n));let r=e;if(i&&Object.keys(i).length>0){const t="undefined"!=typeof window&&window.location?.origin?window.location.origin:"http://localhost",n=new URL(e,t);Object.entries(i).forEach(([e,t])=>{null!=t&&n.searchParams.set(e,String(t))}),r=n.toString()}const s={...o};Object.keys(s).forEach(e=>{"content-type"===e.toLowerCase()&&delete s[e]});const c=await fetch(r,{method:"POST",headers:{...s},body:a});if(!c.ok)return console.error("[API Service] Image upload failed:",c.status,c.statusText),null;const d=await c.json();if(d&&!1===d.success)return console.error("[API Service] Upload API returned error:",d.error),null;if(d&&"string"==typeof d.url&&d.url.trim())return d.url.trim();const p=d?.data?.url;return p&&"string"==typeof p?p.trim():(console.error("[API Service] Upload API returned no URL"),null)}catch(e){return console.error("[API Service] Error uploading image:",e),null}})(t,e,o,n,{queryParams:a,companyField:i});return r},[l,t,n,o,a,i]),isConfigured:l}},Wn=()=>{const{currentItem:a,previewMode:l,templateData:r,apiConfig:c}=e.useContext(O),{t:d}=zt(),{containerBlock:p,containerType:u,contentIndex:m}=En(),g=p?.columnProducts?.[m]??null,{findStyleItem:y,cardItemElement:h,inputChange:b,updateItemStyles:f}=An(),k=e.useRef(null),[_,x]=e.useState(!1),v=e.useMemo(()=>({columnIndex:m,columnProduct:g}),[m,g]),w=e.useMemo(()=>We(u,r,v),[u,r,v]),{uploadImageFile:C,isConfigured:S}=Vn({imageUploadEndpoint:c?.imageUploadEndpoint,headers:c?.headers||{},companyId:c?.companyId,imageUploadQueryParams:c?.imageUploadQueryParams,imageUploadCompanyField:c?.imageUploadCompanyField}),j=e=>{const t=s(a.data);t.contentStyles[l]={...t.contentStyles[l],...e},f(t)};return i.jsxs("div",{className:"margin-y-30",children:[(()=>{const{linkURL:e}=a.data,n=qe(a.data);return i.jsxs(i.Fragment,{children:[i.jsx("div",{className:"right-setting-block-item-title",children:d("image_action")}),h(d("action_type"),i.jsxs("div",{className:"ee-image-action-type-row",children:[i.jsx("span",{className:Ot("link-tag",!n&&"ee-image-link-tag-inactive"),children:d("link")}),i.jsx(t.Switch,{checked:n,onChange:e=>{const t=s(a);t.data.linkEnabled=Boolean(e),f(t.data)},className:Ot(n?"bg-sky-500":"bg-gray-400")})]})),n?i.jsxs(i.Fragment,{children:[i.jsx("div",{className:"card-item-title",children:d("link_url")}),i.jsx("div",{className:"margin-top-6",children:i.jsx(t.Input,{addonBefore:"https://",value:e??"",onChange:e=>{const t=e.target.value??"",n=s(a);n.data.linkURL=t,f(n.data)},placeholder:d("link_url_placeholder")})})]}):null]})})(),(()=>{const{src:e,alt:l}=a.data,c="string"==typeof e&&/^\{\{\w+\}\}$/.test(e.trim())?String(e).replace(/\{\{|\}\}/g,"").trim():"",p=r&&c?Me(r,c,v):null,u=null==p||String(p).startsWith("{{")?e||"":p,m=e=>t=>{const n=s(a),o=t.target.value;n.data[e]=o,f(n.data)},g=e=>{const t=s(a);t.data.src=e,f(t.data)};return i.jsxs(i.Fragment,{children:[i.jsx("div",{className:"right-setting-block-item-title",children:d("image_settings")}),i.jsx("div",{className:"card-item",children:i.jsxs("div",{className:"width-full",children:[i.jsx("div",{className:"card-item-title",children:d("image_upload")}),i.jsx("input",{ref:k,type:"file",accept:"image/*",className:"ee-image-upload-input-hidden",onChange:async e=>{const n=e.target.files?.[0];if(n){if(!S)return t.message.error(d("image_upload_not_configured")||"Image upload not configured"),console.warn("[ImageStyleSettings] Image upload endpoint not configured"),void(e.target.value="");x(!0);try{const e=await C(n);e?(g(e),t.message.success(d("image_uploaded")||"Image uploaded successfully")):t.message.error(d("image_upload_failed")||"Failed to upload image")}catch(e){console.error("[ImageStyleSettings] Upload error:",e),t.message.error(d("image_upload_error")||"Error uploading image")}finally{x(!1),e.target.value=""}}},disabled:_}),i.jsx(t.Spin,{spinning:_,children:i.jsxs("div",{role:"button",tabIndex:0,className:"ee-image-upload-trigger",onClick:()=>{k.current?.click()},onDrop:async e=>{e.preventDefault(),e.stopPropagation();const n=e.dataTransfer?.files?.[0];if(n?.type?.startsWith("image/")){if(!S)return t.message.error(d("image_upload_not_configured")||"Image upload not configured"),void console.warn("[ImageStyleSettings] Image upload endpoint not configured");x(!0);try{const e=await C(n);e?(g(e),t.message.success(d("image_uploaded")||"Image uploaded successfully")):t.message.error(d("image_upload_failed")||"Failed to upload image")}catch(e){console.error("[ImageStyleSettings] Upload error:",e),t.message.error(d("image_upload_error")||"Error uploading image")}finally{x(!1),k.current.value=""}}},onDragOver:e=>{e.preventDefault(),e.stopPropagation()},style:{opacity:_?.6:1,cursor:_?"not-allowed":"pointer"},children:[i.jsx(n.FontAwesomeIcon,{icon:o.faCloudUploadAlt,className:"ee-image-upload-icon"}),i.jsx("span",{children:_?d("uploading")||"Uploading...":d("image_upload_click")})]})})]})}),w.length>0&&h(d("image_source_variable"),i.jsx(t.Select,{className:"ee-variable-select width-full",placeholder:d("image_source_variable"),allowClear:!0,value:"string"==typeof e&&/^\{\{\w+\}\}$/.test(String(e).trim())?String(e).trim():void 0,onChange:e=>g(e??""),getPopupContainer:()=>document.querySelector(".right-settings")||document.body,options:w.map(e=>({value:e.value,label:d(e.labelKey)}))})),i.jsx("div",{className:"card-item",children:i.jsxs("div",{className:"width-full",children:[i.jsx("div",{className:"card-item-title",children:d("image_url")}),i.jsx("div",{className:"margin-top-6",children:i.jsx(t.Input,{value:u,onChange:m("src"),placeholder:"https://..."})})]})}),i.jsx("div",{className:"card-item",children:i.jsxs("div",{className:"width-full",children:[i.jsx("div",{className:"card-item-title",children:d("image_alt")}),i.jsx("div",{className:"margin-top-6",children:i.jsx(t.Input,{value:l||"",onChange:m("alt")})})]})})]})})(),(()=>{const e=y(a.data.styles,"width"),r=y(a.data.styles,"borderRadius"),c="number"==typeof r?r:parseInt(String(r||"").replace("px",""),10)||0,p=y(a.data.contentStyles,"textAlign");return i.jsxs(i.Fragment,{children:[i.jsx("div",{className:"right-setting-block-item-title",children:d("image_styles")}),h(d("width_auto"),i.jsx(t.Switch,{checked:"auto"===e,className:Ot("auto"===e?"bg-sky-500":"bg-gray-400"),onChange:()=>{const t="auto"===e?"100%":"auto";b("width")(t)}})),"auto"!==e&&i.jsx(t.Slider,{value:Number(e.replace("%","")),onChange:e=>b("width")(e+"%")}),h(d("border_radius"),i.jsx(t.InputNumber,{min:0,className:"input-width",addonAfter:"px",value:c,onChange:e=>b("borderRadius")(Number(e)||0)})),h(d("align"),i.jsx("div",{className:"flex justify-center items-center",children:[{icon:o.faAlignLeft,value:"left"},{icon:o.faAlignCenter,value:"center"},{icon:o.faAlignRight,value:"right"},{icon:o.faAlignJustify,value:"justify"}].map(({icon:e,value:t})=>i.jsx("div",{className:Ot(p===t?"align-style-item-active":"align-style-item-un_active","align-style-item"),onClick:()=>(e=>{const t=s(a.data);t.contentStyles[l]={...t.contentStyles[l],textAlign:e},f(t)})(t),children:i.jsx(n.FontAwesomeIcon,{icon:e,className:"tag-style-size"})},t))})),i.jsx("div",{className:"card-item-title",children:d("padding_settings")}),i.jsx(xn,{padding:{paddingTop:y(a.data.contentStyles,"paddingTop"),paddingRight:y(a.data.contentStyles,"paddingRight"),paddingLeft:y(a.data.contentStyles,"paddingLeft"),paddingBottom:y(a.data.contentStyles,"paddingBottom")},setPadding:j})]})})()]})},qn=()=>{const{currentItem:n}=e.useContext(O),{t:o}=zt(),{findStyleItem:a,cardItemElement:l,updateItemStyles:r}=An(),{src:c,alt:d,linkURL:p}=n.data,u=a(n.data.styles,"width")??64,m=a(n.data.styles,"borderRadius"),g="50%"===m?50:parseInt(String(m).replace("px",""),10)||0;return i.jsxs("div",{className:"margin-y-30",children:[i.jsx("div",{className:"right-setting-block-item-title",children:o("avatar_image")}),l(o("image_url"),i.jsx(t.Input,{addonBefore:"https://",value:c,onChange:e=>{const t=s(n.data);t.src=e.target.value??"",r(t)}})),l(o("image_alt"),i.jsx(t.Input,{value:d,onChange:e=>{const t=s(n.data);t.alt=e.target.value??"",r(t)},placeholder:"Avatar"})),l(o("link_url"),i.jsx(t.Input,{addonBefore:"https://",value:p,onChange:e=>{const t=s(n.data);t.linkURL=e.target.value??"",r(t)},placeholder:o("link_url_placeholder")})),i.jsx("div",{className:"right-setting-block-item-title margin-top-18",children:o("image_styles")}),l(o("width"),i.jsx(t.InputNumber,{min:16,max:256,value:"number"==typeof u?u:64,onChange:e=>{const t=s(n.data);t.styles.desktop||(t.styles.desktop={}),t.styles.desktop.width=e,r(t)},addonAfter:"px"})),l(o("avatar_border_radius"),i.jsx(t.InputNumber,{min:0,max:50,value:g,onChange:e=>{const t=s(n.data);t.styles.desktop||(t.styles.desktop={}),t.styles.desktop.borderRadius=50===e?"50%":`${e}px`,r(t)},addonAfter:50===g?"%":"px"})),i.jsx("div",{className:"right-setting-block-item-title margin-top-18",children:o("padding_settings")}),i.jsx(xn,{padding:{paddingTop:a(n.data.contentStyles,"paddingTop"),paddingRight:a(n.data.contentStyles,"paddingRight"),paddingLeft:a(n.data.contentStyles,"paddingLeft"),paddingBottom:a(n.data.contentStyles,"paddingBottom")},setPadding:e=>{const t=s(n.data);t.contentStyles||(t.contentStyles={desktop:{},mobile:{}}),t.contentStyles.desktop={...t.contentStyles.desktop,...e},r(t)}})]})},Jn="https://s.magecdn.com/social";function Gn(e,t){const n=String(e?.image||"").trim(),o=String(t?.image||"").trim();if(n&&o&&n===o)return!0;const a=String(e?.title||"").trim().toLowerCase(),i=String(t?.title||"").trim().toLowerCase();return Boolean(a&&i&&a===i)}const Yn=()=>{const{currentItem:a,previewMode:l}=e.useContext(O),{t:r}=zt(),{findStyleItem:d,paddingChange:p,updateItemStyles:u,cardItemElement:m}=An(),g=a.data.list??[],[y,h]=e.useState(null),[b,f]=e.useState(!1),[k,_]=e.useState(null),x=e.useRef(null),v=[{image:`${Jn}/tc-facebook.svg`,title:"Facebook",linkURL:""},{image:`${Jn}/tc-linkedin.svg`,title:"LinkedIn",linkURL:""},{image:`${Jn}/tc-instagram.svg`,title:"Instagram",linkURL:""},{image:`${Jn}/tc-tiktok.svg`,title:"TikTok",linkURL:""},{image:`${Jn}/tc-x.svg`,title:"Twitter",linkURL:""},{image:`${Jn}/tc-youtube.svg`,title:"YouTube",linkURL:""}],w=(e,t)=>{const n=s(a),o=function(e){if(!Array.isArray(e))return e;const t=[];for(const n of e)t.some(e=>Gn(e,n))||t.push(n);return t}(t);n.data={...n.data,[e]:o},u(n.data)},C=e.useCallback(c(e=>{e.preventDefault();const t=x.current,n=Array.from(t.childNodes).indexOf(e.target);if(-1===n)return;const o=k,a=s(g);o!==n&&([a[n],a[o]]=[a[o],a[n]],_(n),w("list",a))},50),[y,k]),S=e=>{const t=s(a.data);t.contentStyles[l]={...t.contentStyles[l],...e},u(t)},j=e=>{const t=s(a.data);t.imageWidth=e,u(t)};return i.jsxs("div",{className:"margin-y-30",children:[(()=>{const e=d(a.data.contentStyles,"textAlign"),c=a.data.imageWidth,S=v.filter(e=>!g.some(t=>Gn(t,e)));return i.jsxs(i.Fragment,{children:[i.jsxs("div",{className:"right-setting-block-item-title",children:[" ",r("social_link_settings")]}),m(r("align"),i.jsx("div",{className:"flex justify-center items-center",children:[{icon:o.faAlignLeft,value:"left"},{icon:o.faAlignCenter,value:"center"},{icon:o.faAlignRight,value:"right"},{icon:o.faAlignJustify,value:"justify"}].map(({icon:t,value:o})=>i.jsx("div",{className:Ot(e===o?"align-style-item-active":"align-style-item-un_active","align-style-item"),onClick:()=>(e=>{const t=s(a.data);t.contentStyles[l]={...t.contentStyles[l],textAlign:e},u(t)})(o),children:i.jsx(n.FontAwesomeIcon,{icon:t,className:"tag-style-size"})},o))})),m(r("social_link_size"),i.jsx(t.InputNumber,{min:0,className:"input-width",addonAfter:"px",value:c,onChange:j})),i.jsx("div",{className:"card-item-title margin-top-18",children:r("social_links")}),i.jsx("div",{ref:x,onDragOver:C,className:"margin-top-12",onDragStart:e=>{h(e.target),f(!0),_(e.target.dataset.index)},onDragEnd:()=>{y.childNodes[0].classList.remove("social-link-item-current"),h(null),f(!1),_(null)},children:g.map((e,a)=>{const{image:l,title:r,linkURL:s}=e;return i.jsx("div",{"data-index":a,draggable:!0,className:Ot("social-link-item","cursor-grab",b&&"social-link-item-drag_start",k===a?"social-link-item-current":"border-transparent"),children:i.jsxs("div",{className:"social-link-item-content",children:[i.jsxs("div",{className:"flex items-center justify-between",children:[i.jsxs("div",{className:"flex items-center",children:[i.jsx("img",{src:l,alt:r,className:"social-link-item-img"}),i.jsx("div",{className:"font-semibold",children:r})]}),i.jsx("div",{className:"flex items-center",children:i.jsx("div",{className:"social-link-item-icon social-link-item-icon-slate",onClick:()=>{w("list",g.filter((e,t)=>t!==a))},children:i.jsx(n.FontAwesomeIcon,{icon:o.faTrash,className:"social-link-item-icon-svg social-link-item-icon-svg-deep"})})})]}),i.jsx("div",{className:"margin-top-12 relative",children:i.jsx(t.Input,{addonBefore:"https://",value:s||"",onChange:e=>w("list",g.map((t,n)=>n===a?{...t,linkURL:e.target.value}:t))})})]})},a)})}),S.length>0?i.jsxs(i.Fragment,{children:[i.jsx("div",{className:"card-item-title margin-top-18",children:r("add_social_link")}),i.jsx("div",{className:"social-link-add margin-top-12",children:S.map(e=>{const{image:t,title:n}=e;return i.jsx("img",{src:t,alt:n,className:"social-link-add-img",onClick:()=>w("list",g.concat(e))},t)})})]}):null,i.jsxs("div",{className:"card-item-title margin-top-18",children:[" ",r("spacing")]}),i.jsx(xn,{padding:{paddingTop:d(a.data.styles,"paddingTop"),paddingRight:d(a.data.styles,"paddingRight"),paddingLeft:d(a.data.styles,"paddingLeft"),paddingBottom:d(a.data.styles,"paddingBottom")},setPadding:p})]})})(),i.jsxs(i.Fragment,{children:[i.jsxs("div",{className:"right-setting-block-item-title",children:[" ",r("padding_settings")]}),i.jsx(xn,{padding:{paddingTop:d(a.data.contentStyles,"paddingTop"),paddingRight:d(a.data.contentStyles,"paddingRight"),paddingLeft:d(a.data.contentStyles,"paddingLeft"),paddingBottom:d(a.data.contentStyles,"paddingBottom")},setPadding:S})]})]})},Zn=()=>{const{currentItem:t}=e.useContext(O);return i.jsxs(i.Fragment,{children:["column"===t?.data.key&&i.jsx(Dn,{}),"text"===t?.data.key&&i.jsx(Fn,{}),"button"===t?.data.key&&i.jsx(On,{}),"divider"===t?.data.key&&i.jsx(Hn,{}),"spacer"===t?.data.key&&i.jsx(Kn,{}),"menu"===t?.data.key&&i.jsx(zn,{}),"image"===t?.data.key&&i.jsx(Wn,{}),"avatar"===t?.data.key&&i.jsx(qn,{}),"social_link"===t?.data.key&&i.jsx(Yn,{})]})};var Qn={presets:[{id:"preset_header",presetName:"Header",nameKey:"preset_header",containerType:"none",block:{name:"Container",key:"column",type:"full",containerType:"none",styles:{key:"column",desktop:{backgroundColor:"transparent",paddingTop:0,paddingLeft:0,paddingRight:0,paddingBottom:0,contentBackground:"#fff"},mobile:{}},isPreset:!0,children:[{name:"Content",key:"content",width:"100%",styles:{key:"column",desktop:{backgroundColor:"transparent",paddingTop:0,paddingLeft:0,paddingRight:0,paddingBottom:0,contentBackground:"transparent"},mobile:{}},children:[{name:"Image",key:"image",src:"{{LogoUrl}}",alt:"Image",type:"link",linkURL:"",contentStyles:{desktop:{paddingTop:12,paddingBottom:12,paddingLeft:12,paddingRight:12,textAlign:"center"},mobile:{}},styles:{desktop:{width:"50%"},mobile:{}}},{name:"Container",key:"column",type:"full",containerType:"none",width:"50%",styles:{key:"column",desktop:{backgroundColor:"transparent",paddingTop:0,paddingLeft:0,paddingRight:0,paddingBottom:0,contentBackground:"transparent"},mobile:{}},children:[{name:"Content",key:"content",width:"100%",styles:{key:"column",desktop:{backgroundColor:"transparent",paddingTop:0,paddingLeft:0,paddingRight:0,paddingBottom:0,contentBackground:"transparent"},mobile:{}},children:[{name:"Text",key:"text",text:'<span style="direction: ltr; font-size: 14px; font-family: Verdana; color: #333333"><a target="_blank" href="https://example.com">Shop</a> | <a target="_blank" href="https://example.com">Frey </a> | <a target="_blank" href="https://example.com">Our Story</a></span>',type:"p",contentType:"static",styles:{desktop:{fontSize:14,fontFamily:"Verdana",color:"#333333",lineHeight:"120%",paddingTop:25,paddingBottom:15,paddingLeft:5,paddingRight:5,textAlign:"center"},mobile:{}},isPreset:!0},{name:"Image",key:"image",src:"{{HeroBanner}}",alt:"Image",type:"link",linkURL:"",contentStyles:{desktop:{paddingTop:12,paddingBottom:12,paddingLeft:12,paddingRight:12,textAlign:"center"},mobile:{}},styles:{desktop:{width:"auto"},mobile:{}}}]}]}]}]}},{id:"navigation_bar",presetName:"Navigation Bar",nameKey:"preset_navigation_bar",containerType:"none",block:{name:"Text",key:"text",text:'<span style="direction: ltr; font-size: 14px; font-family: Verdana; color: #333333"><a target="_blank" href="https://example.com">Shop</a> | <a target="_blank" href="https://example.com">Frey </a> | <a target="_blank" href="https://example.com">Our Story</a></span>',type:"p",contentType:"static",styles:{desktop:{fontSize:14,fontFamily:"Verdana",color:"#333333",lineHeight:"120%",paddingTop:25,paddingBottom:15,paddingLeft:5,paddingRight:5,textAlign:"center"},mobile:{}},isPreset:!0}},{id:"product_single",nameKey:"preset_product_single",containerType:"product",presetName:"Hero Product",block:{name:"Container",key:"column",type:"full",containerType:"product",styles:{key:"column",desktop:{backgroundColor:"transparent",paddingTop:null,paddingLeft:null,paddingRight:null,paddingBottom:null,contentBackground:"#fff"},mobile:{}},isPreset:!0,productRole:"main",columnProducts:[{id:"product-1",name:"Abundance Butterfly Diamond Ring",description:"The Maia Diamond Ring features round diamonds set along a delicate gold band, creating a refined and minimalistic look. Its versatile design makes it perfect for everyday wear or for layering with other rings.",image:"https://www.psylish.com/cdn/shop/files/IMG_4632.jpg?v=1773123202&width=1220",link:"https://www.psylish.com",price:2e3,currency:"USD",old_price:null,new_price:null}],children:[{name:"Content",key:"content",width:"100%",styles:{key:"column",desktop:{backgroundColor:"transparent",paddingTop:null,paddingLeft:null,paddingRight:null,paddingBottom:null,contentBackground:"transparent"},mobile:{}},children:[{name:"Image",key:"image",src:"{{ProductImage}}",alt:"Image",type:"link",linkURL:"",contentStyles:{desktop:{paddingTop:null,paddingBottom:null,paddingLeft:null,paddingRight:null,textAlign:"center"},mobile:{}},styles:{desktop:{width:"auto"},mobile:{}}},{name:"Text",key:"text",text:'<span style="direction: ltr; font-size: 20px; font-family: sans-serif"><p>{{ProductName}}</p></span>',type:"h2",contentType:"static",styles:{desktop:{fontSize:20,fontFamily:"sans-serif",lineHeight:"120%",paddingTop:12,paddingBottom:null,paddingLeft:12,paddingRight:12,textAlign:"left",fontWeight:"bold"},mobile:{}}},{name:"Text",key:"text",text:'<span style="direction: ltr; font-size: 16px; font-family: sans-serif">{{ProductCurrency}} {{ProductPrice}}<br></span>',type:"p",contentType:"static",styles:{desktop:{fontSize:16,fontFamily:"sans-serif",lineHeight:"140%",paddingTop:null,paddingBottom:6,paddingLeft:12,paddingRight:12,textAlign:"left"},mobile:{}}},{name:"Text",key:"text",text:"<p>{{ProductDescription}}</p>",type:"p",contentType:"static",styles:{desktop:{fontSize:14,fontFamily:"sans-serif",lineHeight:"120%",paddingTop:12,paddingBottom:12,paddingLeft:12,paddingRight:12,textAlign:"left"},mobile:{}}},{name:"Button",key:"button",text:"Shop Now",type:"link",linkURL:"",contentStyles:{desktop:{textAlign:"center",paddingTop:12,paddingBottom:12,paddingLeft:null,paddingRight:null},mobile:{}},styles:{desktop:{width:"100%",fontSize:16,lineHeight:"140%",borderRadius:4,fontFamily:"sans-serif",paddingTop:10,paddingBottom:10,paddingLeft:null,paddingRight:null,backgroundColor:"#263d2d",color:"#fff",display:"inline-block"},mobile:{}}},{name:"Divider",key:"divider",contentStyles:{desktop:{paddingTop:2,paddingBottom:12,paddingLeft:12,paddingRight:12,textAlign:"center"},mobile:{}},styles:{desktop:{width:"100%",borderTopStyle:"solid",borderTopColor:"#ccc",borderTopWidth:1,display:"inline-block",verticalAlign:"middle"},mobile:{}}}]}]}},{id:"product_two_column",presetName:"Additional Products",nameKey:"preset_product_two_column",containerType:"product",block:{name:"Container",key:"column",type:"1-1",containerType:"none",styles:{key:"column",desktop:{backgroundColor:"transparent",paddingTop:12,paddingLeft:6,paddingRight:6,paddingBottom:12,contentBackground:"#fff"},mobile:{}},isPreset:!0,columns:2,columnProducts:[null,null],children:[{name:"Content",key:"content",width:"50%",styles:{key:"column",desktop:{backgroundColor:"transparent",paddingTop:null,paddingLeft:6,paddingRight:3,paddingBottom:null,contentBackground:"transparent"},mobile:{}},children:[{name:"Container",key:"column",type:"full",containerType:"product",styles:{key:"column",desktop:{backgroundColor:"transparent",paddingTop:null,paddingLeft:null,paddingRight:null,paddingBottom:null,contentBackground:"#fff"},mobile:{}},isPreset:!0,productRole:"additional",columnProducts:[{id:"product-2",name:"Heartline Diamond Ring",description:"The Sariah Diamond Earrings feature round diamonds in a classic hoop design that curves elegantly around the lobe. Their minimalist silhouette makes them perfect for everyday wear or adding a touch of sparkle to layered look.",image:"https://www.psylish.com/cdn/shop/files/Psylish3.0_15.png?v=1770880382&width=1220",link:"https://www.psylish.com/",price:1e3,currency:"USD",old_price:1200,new_price:1e3}],children:[{name:"Content",key:"content",width:"100%",styles:{key:"column",desktop:{backgroundColor:"transparent",paddingTop:null,paddingLeft:null,paddingRight:null,paddingBottom:null,contentBackground:"transparent"},mobile:{}},children:[{name:"Image",key:"image",src:"{{ProductImage}}",alt:"Image",type:"link",linkURL:"",contentStyles:{desktop:{paddingTop:0,paddingBottom:0,paddingLeft:0,paddingRight:0,textAlign:"center"},mobile:{}},styles:{desktop:{width:"auto"},mobile:{}}},{name:"Text",key:"text",text:'<span style="direction: ltr; font-size: 20px; font-family: Arial"><p>{{ProductName}}</p></span>',type:"h2",contentType:"static",styles:{desktop:{fontSize:20,fontFamily:"Arial",lineHeight:"140%",paddingTop:12,paddingBottom:0,paddingLeft:0,paddingRight:0,textAlign:"left",fontWeight:"bold"},mobile:{}}},{name:"Text",key:"text",text:'<span style="direction: ltr; font-size: 16px; font-family: Arial"><strike>{{ProductOldPrice}}</strike> {{ProductNewPrice}}<br></span>',type:"p",contentType:"static",styles:{desktop:{fontSize:16,fontFamily:"Arial",lineHeight:"140%",paddingTop:2,paddingBottom:2,paddingLeft:0,paddingRight:0,textAlign:"left"},mobile:{}}},{name:"Text",key:"text",text:"<p>{{ProductDescription}}</p>",type:"p",contentType:"static",styles:{desktop:{fontSize:14,fontFamily:"sans-serif",lineHeight:"140%",paddingTop:12,paddingBottom:12,paddingLeft:0,paddingRight:0,textAlign:"left"},mobile:{}}},{name:"Button",key:"button",text:"Add to Cart",type:"link",linkURL:"",contentStyles:{desktop:{textAlign:"center",paddingTop:12,paddingBottom:12,paddingLeft:0,paddingRight:0},mobile:{}},styles:{desktop:{width:"100%",fontSize:16,lineHeight:"140%",borderRadius:4,fontFamily:"sans-serif",paddingTop:10,paddingBottom:10,paddingLeft:0,paddingRight:0,backgroundColor:"#263d2d",color:"#fff",display:"inline-block"},mobile:{}}}]}]}]},{name:"Content",key:"content",width:"50%",styles:{key:"column",desktop:{backgroundColor:"transparent",paddingTop:null,paddingLeft:3,paddingRight:6,paddingBottom:null,contentBackground:"transparent"},mobile:{}},children:[{name:"Container",key:"column",type:"full",containerType:"product",styles:{key:"column",desktop:{backgroundColor:"transparent",paddingTop:null,paddingLeft:null,paddingRight:null,paddingBottom:null,contentBackground:"#fff"},mobile:{}},isPreset:!0,productRole:"additional",columnProducts:[{id:"product-3",name:"Lynx Heart Diamond Ring",description:"The Sariah Diamond Earrings feature round diamonds in a classic hoop design that curves elegantly around the lobe. Their minimalist silhouette makes them perfect for everyday wear or adding a touch of sparkle to layered look.",image:"https://www.psylish.com/cdn/shop/files/Psylish3.0_48.png?v=1770881768&width=1220",link:"https://www.psylish.com/",price:900,currency:"USD",old_price:1200,new_price:900}],children:[{name:"Content",key:"content",width:"100%",styles:{key:"column",desktop:{backgroundColor:"transparent",paddingTop:null,paddingLeft:null,paddingRight:null,paddingBottom:null,contentBackground:"transparent"},mobile:{}},children:[{name:"Image",key:"image",src:"{{ProductImage}}",alt:"Image",type:"link",linkURL:"",contentStyles:{desktop:{paddingTop:0,paddingBottom:0,paddingLeft:0,paddingRight:0,textAlign:"center"},mobile:{}},styles:{desktop:{width:"auto"},mobile:{}}},{name:"Text",key:"text",text:'<span style="direction: ltr; font-size: 20px; font-family: Arial"><p>{{ProductName}}</p></span>',type:"h2",contentType:"static",styles:{desktop:{fontSize:20,fontFamily:"Arial",lineHeight:"140%",paddingTop:12,paddingBottom:0,paddingLeft:0,paddingRight:0,textAlign:"left",fontWeight:"bold"},mobile:{}}},{name:"Text",key:"text",text:'<span style="direction: ltr; font-size: 16px; font-family: Arial"><strike>{{ProductOldPrice}}</strike> {{ProductNewPrice}}<br></span>',type:"p",contentType:"static",styles:{desktop:{fontSize:16,fontFamily:"Arial",lineHeight:"140%",paddingTop:2,paddingBottom:2,paddingLeft:0,paddingRight:0,textAlign:"left"},mobile:{}}},{name:"Text",key:"text",text:"<p>{{ProductDescription}}</p>",type:"p",contentType:"static",styles:{desktop:{fontSize:14,fontFamily:"sans-serif",lineHeight:"140%",paddingTop:12,paddingBottom:12,paddingLeft:0,paddingRight:0,textAlign:"left"},mobile:{}}},{name:"Button",key:"button",text:"Add to Cart",type:"link",linkURL:"",contentStyles:{desktop:{textAlign:"center",paddingTop:12,paddingBottom:12,paddingLeft:0,paddingRight:0},mobile:{}},styles:{desktop:{width:"100%",fontSize:16,lineHeight:"140%",borderRadius:4,fontFamily:"sans-serif",paddingTop:10,paddingBottom:10,paddingLeft:20,paddingRight:20,backgroundColor:"#263d2d",color:"#fff",display:"inline-block"},mobile:{}}}]}]}]}]}},{id:"preset_discount",presetName:"Discount",nameKey:"preset_discount",containerType:"discount",block:{name:"Container",key:"column",type:"full",containerType:"discount",styles:{key:"column",desktop:{backgroundColor:"transparent",paddingTop:0,paddingLeft:0,paddingRight:0,paddingBottom:0,contentBackground:"#ffa7aa"},mobile:{}},isPreset:!0,children:[{name:"Content",key:"content",width:"100%",styles:{key:"column",desktop:{backgroundColor:"transparent",paddingTop:0,paddingLeft:0,paddingRight:0,paddingBottom:0,contentBackground:"transparent"},mobile:{}},children:[{name:"Text",key:"text",text:'<div style="text-align: center;"><font face="Arial">Use <b>{{DiscountCode}}</b> for <b>{{DiscountValue}}</b> OFF. Expires on {{ValidUntil}}</font></div>',type:"p",contentType:"static",styles:{desktop:{fontSize:14,fontFamily:"sans-serif",lineHeight:"120%",paddingTop:12,paddingBottom:12,paddingLeft:12,paddingRight:12,textAlign:"center"},mobile:{}}}]}]}},{id:"preset_footer",presetName:"Footer",nameKey:"preset_footer",containerType:"none",block:{name:"Container",key:"column",type:"full",containerType:"none",styles:{key:"column",desktop:{backgroundColor:"transparent",paddingTop:0,paddingLeft:0,paddingRight:0,paddingBottom:0,contentBackground:"#fff"},mobile:{}},isPreset:!0,children:[{name:"Content",key:"content",width:"100%",styles:{key:"column",desktop:{backgroundColor:"transparent",paddingTop:0,paddingLeft:0,paddingRight:0,paddingBottom:0,contentBackground:"transparent"},mobile:{}},children:[{name:"Image",key:"image",src:"{{FooterBanner}}",alt:"Image",type:"link",linkURL:"",contentStyles:{desktop:{paddingTop:12,paddingBottom:12,paddingLeft:12,paddingRight:12,textAlign:"center"},mobile:{}},styles:{desktop:{width:"auto"},mobile:{}}},{name:"Image",key:"image",src:"{{LogoUrl}}",alt:"Image",type:"link",linkURL:"",contentStyles:{desktop:{paddingTop:12,paddingBottom:12,paddingLeft:12,paddingRight:12,textAlign:"center"},mobile:{}},styles:{desktop:{width:"35%"},mobile:{}}},{name:"Text",key:"text",text:"<p><i><b>{{Tagline}}</b></i></p>",type:"p",contentType:"static",styles:{desktop:{fontSize:14,fontFamily:"Arial",lineHeight:"120%",paddingTop:2,paddingBottom:2,paddingLeft:12,paddingRight:12,textAlign:"center"},mobile:{}}},{name:"Text",key:"text",text:"<p>{{Address}}</p>",type:"p",contentType:"static",styles:{desktop:{fontSize:14,fontFamily:"Arial",lineHeight:"120%",paddingTop:2,paddingBottom:2,paddingLeft:12,paddingRight:12,textAlign:"center"},mobile:{}}},{name:"Social Link",key:"social_link",list:[{image:"https://s.magecdn.com/social/tc-facebook.svg",title:"Facebook",linkURL:"facebook.com/psylish"},{image:"https://s.magecdn.com/social/tc-x.svg",title:"Twitter",linkURL:"twitter.com/psylish"},{image:"https://s.magecdn.com/social/tc-instagram.svg",title:"Instagram",linkURL:"instagram.com/psylish"},{image:"https://s.magecdn.com/social/tc-linkedin.svg",title:"LinkedIn",linkURL:"linkedin.com/company/psylish"},{image:"https://s.magecdn.com/social/tc-tiktok.svg",title:"TikTok",linkURL:"www.tiktok.com/@psylish"},{image:"https://s.magecdn.com/social/tc-youtube.svg",title:"YouTube",linkURL:"www.youtube.com/@psylish"}],imageWidth:32,contentStyles:{desktop:{paddingTop:2,paddingBottom:12,paddingLeft:12,paddingRight:12,textAlign:"center"},mobile:{}},styles:{desktop:{paddingTop:4,paddingBottom:4,paddingLeft:6,paddingRight:6},mobile:{}},useCompanySocialLinks:!0},{name:"Divider",key:"divider",contentStyles:{desktop:{paddingTop:12,paddingBottom:2,paddingLeft:12,paddingRight:12,textAlign:"center"},mobile:{}},styles:{desktop:{width:"100%",borderTopStyle:"solid",borderTopColor:"#ccc",borderTopWidth:1,display:"inline-block",verticalAlign:"middle"},mobile:{}}},{name:"Text",key:"text",text:'<p><a href="#" style="color:#263d2d;text-decoration:underline">{{Website}}</a></p>',type:"p",contentType:"static",styles:{desktop:{fontSize:14,fontFamily:"Arial",lineHeight:"120%",paddingTop:2,paddingBottom:2,paddingLeft:12,paddingRight:12,textAlign:"center",color:"#263d2d",textDecoration:"underline"},mobile:{}}}]}]}}]};function Xn(e){if(!e||"object"!=typeof e)return e;const t={...e,id:p()};return Array.isArray(t.children)&&(t.children=t.children.map(Xn)),Array.isArray(t.columnProducts)&&(t.columnProducts=t.columnProducts.map(e=>e&&"object"==typeof e?{...e}:e)),t}const eo={column:o.faColumns,text:o.faFont,button:o.faMinusSquare,divider:o.faGripLines,spacer:o.faArrowsAltV,menu:o.faBars,image:o.faImage,social_link:o.faShareAltSquare,product:o.faCube,header:o.faWindowMaximize,footer:o.faWindowMinimize,discount:o.faTag,avatar:o.faUserCircle},to={Header:"header",Footer:"footer",Discount:"discount","Navigation Bar":"menu"};function no(e){const t=to[e];return t&&eo[t]?eo[t]:eo.product}const oo=["ai_powered","components","presets"],ao=["column","divider","spacer","button","image","avatar","social_link"];function io(e,t,n){const o={ai_powered:[],components:[],presets:[]},a=function(e){return e?{ai_powered:["text"],components:ao,presets:[]}:{ai_powered:[],components:["text",...ao],presets:[]}}(n);Qn.presets.forEach(e=>{o.presets.push({key:e.id,name:e.presetName,icon:no(e.presetName),isPreset:!0,getColumn:()=>function(e){const t=Qn.presets.find(t=>t.id===e);return t?Xn(JSON.parse(JSON.stringify(t.block))):null}(e.id)})});for(const t of oo){const i=a[t];i&&0!==i.length&&i.forEach(a=>{const i=e.find(e=>e.key===a);i&&("ai_powered"===t&&"text"===a&&n?o[t].push({...i,contentType:"dynamic",dynamicPrompt:"",dynamicSelectedContent:"",dynamicOptions:[],dynamicVariable:"",isPreset:!1}):o[t].push({...i,isPreset:!1}))})}return o}const lo=({clearStyles:t})=>{const{setCurrentItem:a,setIsDragStart:l,setActionType:r,templateData:c,aiEnabled:d=!0}=e.useContext(O),{blockConfigsList:p}=Ln(),{t:u}=zt(),m=io(p,0,d),g=e=>{e.target.style.border="";const n=e.target.querySelector(".right-panel-block-inner");n&&n.classList.remove("right-panel-block-move"),setTimeout(()=>{l(!1),t&&t()},50)},y=e=>t=>{const n=e.isPreset?s(e.getColumn(u,c)):s(e);a({id:null,data:n,type:"add"}),l(!0),t.target.style.border="1px dashed var(--ee-primary)";const o=t.target.querySelector(".right-panel-block-inner");o&&o.classList.add("right-panel-block-move"),r("add")},h={ai_powered:u("ai_powered"),components:u("components"),presets:u("presets")};return i.jsx("div",{className:"right-panel-block-list",children:oo.map(e=>{const t=m[e];return t&&0!==t.length?i.jsxs("div",{className:"right-panel-block-category",children:[i.jsx("div",{className:"right-panel-block-category-title",children:h[e]}),t.map(e=>(e=>i.jsx("div",{className:"right-panel-block-row",draggable:!0,onDragEnd:g,onDragStart:y(e),children:i.jsxs("div",{className:"right-panel-block-inner",children:[i.jsx("span",{className:"right-panel-block-drag-handle",title:u("drag_block_here"),children:i.jsx(n.FontAwesomeIcon,{icon:o.faGripVertical,className:"right-panel-block-drag-icon"})}),i.jsx("span",{className:"right-panel-block-separator","aria-hidden":!0}),i.jsx(n.FontAwesomeIcon,{icon:e.icon||eo[e.key]||o.faFont,className:"right-panel-block-icon"}),i.jsx("span",{className:"right-panel-block-text",children:e.name}),d&&"text"===e.key&&!e.isPreset&&i.jsx("span",{className:"right-panel-block-ai-pill",children:"+ AI"})]})},e.key))(e))]},e):null})})},ro="content",so="styles",co=a=>{const{clearStyles:l}=a,{currentItem:r,isDragStart:s,bodySettings:c,setBodySettings:d,setCurrentItem:p,setActionType:u,blockMap:m,rootOrder:g}=e.useContext(O),{t:y}=zt(),{cardItemElement:h}=An(),[b,k]=e.useState(ro),_=e.useRef(null),x=()=>{if(!r?.id||!m[r.id])return[];const e=[r.id],t=new Set(e);let n=r.id;for(;;){const o=f(m,g,n);if(!o||t.has(o.containerId))break;e.unshift(o.containerId),t.add(o.containerId),n=o.containerId}return e.map(e=>({id:e,data:m[e]})).filter(e=>Boolean(e.data))},v=()=>{let e="Block";const t=r?.data.key;switch(t){case"text":e=y("text_settings");break;case"column":{const t=r?.data?.containerType;e=y("product"===t?"block_product":"container_settings");break}case"button":e=y("button_settings");break;case"divider":e=y("divider_settings");break;case"spacer":e=y("spacer_settings");break;case"menu":e=y("menu_settings");break;case"image":e=y("image_settings");break;case"avatar":e=y("avatar_settings");break;case"social_link":e=y("social_link_settings")}return e},w=e=>t=>{d({...c,styles:{...c.styles,[e]:t.hex}},"set_body_settings")},C="undefined"!=typeof window&&"product-variables"===window.__eeDragSource,S=r&&"edit"===r.type&&(!s||C);e.useLayoutEffect(()=>{if(!S)return;const e=_.current;e&&(e.scrollTop=0)},[S,r?.id]);return i.jsx("div",{ref:_,className:"right-settings default-scrollbar",onClick:e=>{e.stopPropagation()},children:S?i.jsxs(i.Fragment,{children:[i.jsxs("div",{className:"right-panel-block-settings-header",children:[i.jsx("button",{type:"button",className:"right-panel-back-btn",onClick:()=>p(null),"aria-label":"Back",children:i.jsx(n.FontAwesomeIcon,{icon:o.faChevronLeft})}),i.jsx("h2",{className:"right-setting-block-title right-panel-block-title-inline",children:v()})]}),i.jsx("div",{className:"right-panel-breadcrumb-bar","aria-label":"Selection path",children:x().map((t,n,o)=>{const a=n===o.length-1,l=(e=>{if(!e)return"";switch(e.key){case"column":{const t=e.containerType;return y("product"===t?"block_product":"discount"===t?"block_discount":"container")}case"text":return y("text");case"button":return y("button");case"image":return y("image");case"divider":return y("divider");case"spacer":return y("spacer");case"menu":return y("menu");case"avatar":return y("avatar");case"social_link":return y("social_link");case"empty":return y("drag_block_here");default:return e.name||"Block"}})(t.data);return i.jsxs(e.Fragment,{children:[a?i.jsx("span",{className:"right-panel-breadcrumb-current",children:l}):i.jsx("button",{type:"button",className:"right-panel-breadcrumb-btn",onClick:(r=t.id,e=>{e.preventDefault(),e.stopPropagation();const t=m[r];t&&(p({id:r,data:t,type:"edit"}),u("edit"))}),children:l}),!a&&i.jsx("span",{className:"right-panel-breadcrumb-separator",children:"›"})]},`${t.id||"crumb"}-${n}`);var r})}),i.jsx("div",{className:"right-panel-block-settings-form",children:i.jsx(Zn,{})})]}):i.jsxs(i.Fragment,{children:[i.jsxs("div",{className:"right-panel-tabs",children:[i.jsx("button",{type:"button",className:"right-panel-tab "+(b===ro?"right-panel-tab-active":""),onClick:()=>k(ro),children:y("content")}),i.jsx("button",{type:"button",className:"right-panel-tab "+(b===so?"right-panel-tab-active":""),onClick:()=>k(so),children:y("styles")})]}),i.jsxs("div",{className:"right-panel-tab-content",children:[b===ro&&i.jsx(lo,{clearStyles:l}),b===so&&i.jsxs(i.Fragment,{children:[i.jsxs("section",{className:"right-panel-styles-section",children:[i.jsx("h3",{className:"right-panel-styles-section-title",children:y("global")}),i.jsxs("div",{className:"right-panel-styles-section-body",children:[h(y("text_color"),i.jsx(_n,{color:c.styles.color,setColor:w("color")})),h(y("email_theme_background_color"),i.jsx(_n,{color:c.styles.backgroundColor,setColor:w("backgroundColor")})),h(y("line_height"),i.jsx(t.InputNumber,{className:"input-width",addonAfter:"px",min:0,max:900,value:Number(c.contentWidth),onChange:e=>d({...c,contentWidth:e},"set_body_settings")}))]})]}),i.jsxs("section",{className:"right-panel-styles-section",children:[i.jsx("h3",{className:"right-panel-styles-section-title",children:y("text_and_headings")}),i.jsx("div",{className:"right-panel-styles-section-body",children:i.jsxs("div",{children:[i.jsx("div",{className:"pre_header",children:y("pre_header")}),i.jsx(t.Input,{className:"margin-top-12",value:c.preHeader,onChange:e=>d({...c,preHeader:e.target.value},"set_body_settings")}),i.jsx("div",{className:"pre_header-desc",children:y("pre_header_description")})]})})]})]})]})]})})},po=({language:t})=>{const{blockMap:n,rootOrder:o,setBlocks:a,currentItem:l,setCurrentItem:r,setIsDragStart:s,setLanguage:d,templateData:p}=e.useContext(O),{t:u}=zt(),{getColumnConfig:y}=Ln(),h=e=>{if(!e||"object"!=typeof e)return e;const t=p?.content?.products,n=p?.catalogProducts,o=p?.content?.primaryProductId,a=Array.isArray(t)&&t.length>0?t:Array.isArray(n)&&n.length>0?n:Pn,i=o?a.find(e=>e.id===o):a[0],l=i?a.filter(e=>e?.id!==i.id):a,r=e=>{if(!e||"object"!=typeof e)return e;const t=Array.isArray(e.children)?e.children.map(r):e.children;if("column"!==e.key||"product"!==e.containerType||!i)return{...e,children:t};const n=Math.max(Array.isArray(t)?t.length:0,Array.isArray(e.columnProducts)?e.columnProducts.length:0,1),o="additional"===e.productRole?"additional":"main",a=Array.from({length:n},(e,t)=>"main"===o||0===l.length?i:l[t%l.length]);return{...e,children:t,columnProducts:a}};return r(e)};e.useEffect(()=>{d(t)},[t,d]);const b=()=>{const e=document.getElementsByClassName("block-drag-label-content");Array.from(e).forEach(e=>{e.children[0]&&(e.children[0].style.visibility="hidden")})},k=()=>{const e=document.getElementsByClassName("block-content-drag-label-content");Array.from(e).forEach(e=>{e.children[0]&&(e.children[0].style.visibility="hidden")})},_=()=>{document.querySelectorAll(".block-empty-content").forEach(e=>{e.style.borderStyle="",e.style.borderColor=""})},C=()=>{b(),k(),_()},j=e.useCallback(c(e=>{e.preventDefault(),e.stopPropagation();const{type:t}=e.target.dataset;switch(t){case"empty-block":b(),k(),e.target.style.border="1px dashed #2faade";break;case"drag-over-column":{k();const t=e.target.dataset.index,n=document.getElementsByClassName("block-drag-label-content");Array.from(n).forEach(e=>{Number(e.dataset.index)===Number(t)?e.children[0].style.visibility="visible":e.children[0].style.visibility="hidden"});break}case"block-item-move":{b();const t=e.target.dataset.dropKey,n=document.getElementsByClassName("block-content-drag-label-content");Array.from(n).forEach(e=>{e.dataset.dropKey===t?e.children[0].style.visibility="visible":e.children[0].style.visibility="hidden"});break}case"empty-block-item":b(),k();{const t=e.target.parentNode;t&&t.classList.contains("block-empty-content")&&(t.style.borderStyle="solid")&&(t.style.borderColor="var(--ee-primary)")}break;default:b(),k()}},30),[]),I=(e,t)=>{const{blockMap:n,removedId:o}=v(e,t.containerId,t.cellIndex,t.itemIndex);return{result:n,removedId:o}},N=(e,t,n,o)=>{const a=e[t];if(!a||a.cells[n].childrenIds.length>0)return e;const i=g(o("drag_block_here"));return{...e,[i.id]:i,[t]:{...a,cells:a.cells.map((e,t)=>t===n?{...e,childrenIds:[i.id]}:e)}}},T=(e,t,n)=>{if(!t||!n)return!1;if(t===n)return!0;const o=t=>{const a=e[t];if(!a||"column"!==a.key)return!1;for(const e of a.cells||[])for(const t of e.childrenIds||[]){if(t===n)return!0;if(o(t))return!0}return!1};return o(t)};return i.jsx(i.Fragment,{children:i.jsx("div",{className:"email-editor",onDragOver:j,onDrop:e=>{e.preventDefault(),e.stopPropagation();const{type:t}=e.target.dataset;s(!1);const i="undefined"!=typeof window?window.__eeDragItemData:null,c=()=>{"undefined"!=typeof window&&(window.__eeDragItemData=null,window.__eeDragSource=null)},d=i?"add":l?.type,p=i?m(i):l?.data;if(p){switch(t){case"empty-block":{const e="column"===p.key?p:y(p),t=h(e),{newBlockMap:o,rootId:i}=S(n,t);if(!i)return void c();a(o,[i],"add"),r({id:i,data:o[i],type:"edit"});break}case"empty-block-item":{_();const t=e.target.dataset.containerId,i=Number(e.target.dataset.cellIndex),s=Number(e.target.dataset.itemIndex);if(!t)return void c();let g={...n};if("add"===d){const e="column"===p.key?p:m(p),n=h(e),{newBlockMap:l,rootId:d}=S(g,n);if(!d)return void c();g=x(l,t,i,s,d),a(g,o,"add"),r({id:d,data:g[d],type:"edit"})}else{const e=l.id;if(T(g,e,t))return c(),void C();const n=f(g,o,e);if(!n)return void c();{const{result:e,removedId:o}=I(g,n);g=e?N(e,n.containerId,n.cellIndex,u):g,o&&(g=x(g,t,i,s,o))}a(g,o,"move"),r({...l,data:g[e]??l.data,type:"edit"})}break}case"drag-over-column":{const t=Number(e.target.dataset.index);let i,s=[...o],u={...n};if("add"===d){const e=m(p),n=h(e),{newBlockMap:o,rootId:a}=S(u,n);if(!a)return void c();u=o,s.splice(t,0,a),i={id:a,data:u[a],type:"edit"}}else{const e=l.id,n=o.indexOf(e);if(-1===n)return void c();s.splice(n,1),s.splice(t>n?t-1:t,0,e),i={...l,type:"edit"}}a(u,s,"move"),r(i),setTimeout(()=>{const e=document.getElementsByClassName("block-drag-label-content");Array.from(e).forEach(e=>{e.children[0]&&(e.children[0].style.visibility="hidden")})},30);break}case"block-item-move":{const t=e.target.dataset.dropKey;if(!t)return void c();const[i,s,y]=t.split(":"),b=Number(s),k=Number(y);let _,x={...n};if("add"===d){const e="column"===p.key?p:m(p),t=h(e),{newBlockMap:n,rootId:o}=S(x,t);if(!o)return void c();x=w(n,i,b,k,o),_={id:o,data:x[o],type:"edit"}}else{const e=l.id;if(T(x,e,i))return c(),void C();const t=f(x,o,e);if(!t)return void c();const{blockMap:n,removedId:a}=v(x,t.containerId,t.cellIndex,t.itemIndex);x=n;const r=x[t.containerId];if(r&&0===r.cells[t.cellIndex].childrenIds.length){const e=g(u("drag_block_here"));x={...x,[e.id]:e,[t.containerId]:{...r,cells:r.cells.map((n,o)=>o===t.cellIndex?{...n,childrenIds:[e.id]}:n)}}}let s=k;t.containerId===i&&t.cellIndex===b&&t.itemIndex<k&&(s=k-1),x=w(x,i,b,s,a),_={...l,type:"edit"}}a(x,o,"move"),r(_),setTimeout(()=>{const e=document.getElementsByClassName("block-content-drag-label-content");Array.from(e).forEach(e=>{e.children[0]&&(e.children[0].style.visibility="hidden")})},30);break}}c()}else c()},onDragLeave:e=>setTimeout(()=>{switch(e.target.dataset.type){case"empty-block":e.target.style.border="";break;case"empty-block-item":e.target.parentNode&&e.target.parentNode.classList.contains("block-empty-content")&&(e.target.parentNode.style.borderStyle="",e.target.parentNode.style.borderColor="")}},50),children:i.jsxs("div",{className:"email-editor-main",onClick:e=>{e.preventDefault(),e.stopPropagation(),r(null)},children:[i.jsx(kn,{clearStyles:C}),i.jsx(co,{clearStyles:C})]})})})},uo=e=>Array.isArray(e)?e.map(e=>e&&"object"==typeof e?{...e,children:uo(e.children)}:e):e&&"object"==typeof e?Object.values(e).map(e=>e&&"object"==typeof e?{...e,children:uo(e.children)}:e):[],mo=e=>{const t={},n=(e,o=[])=>{Array.isArray(e)&&e.forEach(e=>{if(!e||"object"!=typeof e)return;const a={blockId:e.id??null,key:e.key??null,containerType:"column"===e.key?e.containerType??"none":null},i=[...o,a];if("text"===e.key&&"dynamic"===e.contentType){const n="string"==typeof e.dynamicPrompt?e.dynamicPrompt.trim():"",o="string"==typeof e.dynamicSelectedContent?e.dynamicSelectedContent.trim():"";if(!n&&!o)return;t[e.id]={blockId:e.id,path:i,key:e.key,type:e.type||"p",selectedContent:o,options:Array.isArray(e.dynamicOptions)?e.dynamicOptions:[],prompt:n,variable:e.dynamicVariable??""}}Array.isArray(e.children)&&n(e.children,i)})};return n(e,[]),t},go=e=>Array.isArray(e)?e.map(e=>{if(!e||"object"!=typeof e)return e;const{dynamicPrompt:t,dynamicOptions:n,dynamicSelectedContent:o,dynamicVariable:a,children:i,...l}=e;return{...l,children:go(i)}}):e,yo=e.forwardRef(({defaultBlockList:t,defaultBodySettings:n,aiContentRefs:o,language:a="en",customLanguageLibraries:l,templateData:s,variableDefinitions:c,apiConfig:d={},aiEnabled:p=!0},u)=>{e.useEffect(()=>{var e;_e=(e=c)&&"object"==typeof e?e:ke,Te()},[c]);const m=e.useMemo(()=>gt(d),[d]),g=t&&!Array.isArray(t)&&"object"==typeof t?t:null,h=g?g.blocks??g.blockList??[]:t,f=(k=h,Array.isArray(k)?k.map(e=>e&&"object"==typeof e?{...e,children:uo(e.children)}:e):k&&"object"==typeof k?Object.values(k).map(e=>e&&"object"==typeof e?{...e,children:uo(e.children)}:e):[]);var k;const _=o??g?.aiContentRefs??{},x=n??g?.bodySettings??F.bodySettings,v=s??F.templateData,w=((e,t)=>{if(!Array.isArray(e))return e;const n=t?.content?.products;if(!Array.isArray(n)||0===n.length)return e;const o=t?.content?.primaryProductId,a=(o?n.find(e=>e?.id===o):n[0])??n[0]??Pn[0]??null;if(!a)return e;const i=n.filter(e=>e?.id!==a.id),l=e=>{if(!e||"object"!=typeof e)return e;const t=Array.isArray(e.children)?e.children.map(l):e.children;if("column"!==e.key||"product"!==e.containerType)return{...e,children:t};const n="additional"===e.productRole?"additional":"main",o=Math.max(Array.isArray(t)?t.length:0,Array.isArray(e.columnProducts)?e.columnProducts.length:0,1),r=Array.from({length:o},(e,t)=>"main"===n||0===i.length?a:i[t%i.length]);return{...e,children:t,columnProducts:r}};return e.map(l)})(f,v),C=ct(w,_),{blockMap:S,rootOrder:T}=y(C),L=r(S,v),[H,z]=e.useReducer(K,{...F,blockMap:L,rootOrder:T,blockList:C,bodySettings:x,languageLibraries:l,templateData:v}),[V,W]=e.useState([]),q=e.useMemo(()=>new Set(V),[V]),J=e.useCallback(e=>(Array.isArray(e)?e:[]).filter(e=>!q.has(kt(e))),[q]),G=e.useCallback(e=>{const t=kt(e);t&&W(e=>e.includes(t)?e:[...e,t])},[]),Y=e.useCallback(()=>{const e=H.blockList??[];return{blockList:go(e),bodySettings:H.bodySettings??null,aiContentRefs:mo(e)}},[H.blockList,H.bodySettings]),Z=e.useMemo(()=>J(Rt({blockList:H.blockList??[],bodySettings:H.bodySettings??null,aiContentRefs:mo(H.blockList??[])})).filter(e=>e?.blockId&&("warning"===e.severity||"error"===e.severity)).reduce((e,t)=>{const n=t.blockId,o=e[n]??{severity:t.severity,warningCount:0,errorCount:0,totalCount:0,messages:[],issues:[]};return"error"===t.severity&&(o.errorCount+=1),"warning"===t.severity&&(o.warningCount+=1),o.totalCount+=1,o.severity=o.errorCount>0?"error":"warning",o.messages.push(t.message),o.issues.push(t),e[n]=o,e},{}),[H.blockList,H.bodySettings,J]);e.useImperativeHandle(u,()=>({blockList:go(H.blockList??[]),bodySettings:H.bodySettings,aiContentRefs:mo(H.blockList??[]),actionType:H.actionType,exportJson:Y,filterIgnoredValidationIssues:J,ignoreValidationIssue:G,focusBlock:e=>{if(!e||!H.blockMap?.[e])return!1;const t=H.blockMap[e],n="column"===t?.key?b(e,H.blockMap)??t:t;return z(U({id:e,data:n,type:"edit"})),z(E("edit")),"undefined"!=typeof window&&window.requestAnimationFrame(()=>{const t="function"==typeof window.CSS?.escape?window.CSS.escape(String(e)):String(e).replace(/([ #;?%&,.+*~':\x22!^$\x5b\x5d()=>|/@])/g,"\\$1"),n=document.querySelector(`[data-block-id="${t}"]`);n&&"function"==typeof n.scrollIntoView&&n.scrollIntoView({behavior:"smooth",block:"center",inline:"nearest"})}),!0},exportHtml:()=>at({bodySettings:H.bodySettings,blockList:H.blockList,templateData:H.templateData})}),[H.blockList,H.blockMap,H.bodySettings,H.actionType,H.templateData,Y,J,G]);const Q=e.useCallback(e=>{z((e=>({type:N,isDragStart:e}))(e))},[]),X=e.useCallback((e,t)=>{t&&z(E(t)),z((e=>({type:P,bodySettings:e}))(e))},[]),ee=e.useCallback((e,t,n)=>{n&&z(E(n)),z(((e,t)=>({type:I,blockMap:e,rootOrder:t}))(e,t))},[]),te=e.useCallback((e,t)=>{t&&z(E(t)),z((e=>({type:j,blockList:e}))(e))},[]),ne=e.useCallback(e=>{z((e=>({type:A,previewMode:e}))(e))},[]),oe=e.useCallback(e=>{z(U(e))},[]),ae=e.useCallback(e=>{z((e=>({type:R,selectionRange:e}))(e))},[]),ie=e.useCallback(e=>{z((e=>({type:$,textRange:e}))(e))},[]),le=e.useCallback(e=>{z(E(e))},[]),re=e.useCallback(e=>{z((e=>({type:B,language:e}))(e))},[]),se=e.useCallback(e=>{z((e=>({type:D,languageLibraries:e}))(e))},[]),ce=e.useCallback(e=>{z((e=>({type:M,templateData:e}))(e))},[]),de=e.useMemo(()=>({blockMap:H.blockMap,rootOrder:H.rootOrder,blockList:H.blockList,actionType:H.actionType,previewMode:H.previewMode,currentItem:H.currentItem,bodySettings:H.bodySettings,isDragStart:H.isDragStart,selectionRange:H.selectionRange,textRange:H.textRange,language:H.language,languageLibraries:H.languageLibraries,templateData:H.templateData,apiConfig:m,validationMarkers:Z,ignoreValidationIssue:G,aiEnabled:p,setIsDragStart:Q,setBodySettings:X,setBlocks:ee,setBlockList:te,setPreviewMode:ne,setCurrentItem:oe,setSelectionRange:ae,setTextRange:ie,setActionType:le,setLanguage:re,setLanguageLibraries:se,setTemplateData:ce}),[H.blockMap,H.rootOrder,H.blockList,H.actionType,H.previewMode,H.currentItem,H.bodySettings,H.isDragStart,H.selectionRange,H.textRange,H.language,H.languageLibraries,H.templateData,m,Z,G,p,Q,X,ee,te,ne,oe,ae,ie,le,re,se,ce]);return i.jsx(O.Provider,{value:de,children:i.jsx(po,{language:a})})});const ho=/\{\{Product\w+\}\}/;function bo(e,t,n,o,a){if("text"===e.key||"image"===e.key){const a="text"===e.key?e.text:"image"===e.key?e.src:null;if(a&&ho.test(a)){const i=t?t.id:null;if(!o.has(i)){const e={containerId:i,containerType:t?.containerType||t?.key||"none",nodes:[]};o.set(i,e),n.push(e)}o.get(i).nodes.push({id:e.id,key:e.key,value:a,contentType:e.key})}}if("dynamic"===e.contentType){const i=t?t.id:null;if(!o.has(i)){const e={containerId:i,containerType:t?.containerType||t?.key||"none",nodes:[]};o.set(i,e),n.push(e)}const l=a[e.id];o.get(i).nodes.push({id:e.id,key:e.key,value:"",contentType:"dynamic",ai:{prompt:l?.prompt??"",selectedSampleAiContent:l?.selectedContent??""}})}if(e.children)for(const t of e.children)bo(t,e,n,o,a)}const fo={text:"text",image:"src"};function ko(e,t){if(0===t.size)return!0;if(e.id&&t.has(e.id)){const n=t.get(e.id),o=fo[e.key];o&&(e[o]=n,t.delete(e.id))}if(e.children)for(const n of e.children)if(ko(n,t))return!0;return 0===t.size}var _o=Object.freeze({__proto__:null,jsonToHtml:function(e){return it(e)},normalizeJson:function(e){const t="string"==typeof e?JSON.parse(e):e,n=[],o=new Map,a=t.aiContentRefs||{},i=t.blockList||[];for(const e of i)bo(e,null,n,o,a);return{groups:n}},updateJsonWithMlContent:function(e,t){const n="string"==typeof e?JSON.parse(e):e,o=structuredClone(n),a=new Map;for(const e of t)e.variations.length>0&&a.set(e.nodeId,e.variations[0].value);const i=o.blockList||[];for(const e of i)if(ko(e,a))break;return o}});const xo=Object.freeze({keys:["content","catalogProducts","companyContext","brandContext","companyId"],description:"templateData drives placeholders, product columns, and menu/social sync. content.products + content.primaryProductId, when non-empty, override product column assignments on load. catalogProducts (optional array) is the KB/catalog list for the product picker and for newly added preset product blocks; it does not replace columnProducts in a saved template when content.products is empty. companyContext.navigation_links and companyContext.social_links sync into menu/social blocks; brandContext (including brand_color) resolves branding tokens and CTA/button fallback colors in HTML export."});exports.DEFAULT_EMAIL_TEMPLATE_ID=ut,exports.DEFAULT_MARKOPOLO_API_BASE_V1=dt,exports.DEFAULT_ML_GENERATION_API_BASE_V1=pt,exports.EmailEditor=yo,exports.TEMPLATE_DATA_SCHEMA=xo,exports.createDefaultTemplateData=function(e={}){const t={name:"",website:"",navigation_links:[],social_links:{}},n={brand_color:"#111111",logo_url:"",tagline:"",heroBanner:"",footerBanner:""},o=null;return{content:{...{products:[],primaryProductId:null},...e.content&&"object"==typeof e.content?e.content:{}},companyContext:{...t,...e.companyContext&&"object"==typeof e.companyContext?e.companyContext:{}},brandContext:{...n,..."string"==typeof e.brandColor&&e.brandColor.trim()?{brand_color:e.brandColor.trim()}:{},...e.brandContext&&"object"==typeof e.brandContext?e.brandContext:{}},companyId:null!=e.companyId?e.companyId:o}},exports.default=yo,exports.exportNormalizerToHtml=it,exports.exportTemplateJson=function(e,t={}){const{validate:n=!0}=t,o=e?.current;if(!o||"function"!=typeof o.exportJson)throw new Error("exportTemplateJson: ref must be attached to EmailEditor (expected ref.current.exportJson to be a function).");const a=o.exportJson();if(!a||"object"!=typeof a)throw new Error("exportTemplateJson: exportJson() returned an invalid payload.");return{payload:a,issues:n?Rt({blockList:a.blockList,bodySettings:a.bodySettings,aiContentRefs:a.aiContentRefs}):[]}},exports.exportTemplateJsonAsync=async function(e,t={}){const{validate:n=!0,checkImages:o=!0,imageProbe:a}=t,i=e?.current;if(!i||"function"!=typeof i.exportJson)throw new Error("exportTemplateJsonAsync: ref must be attached to EmailEditor (expected ref.current.exportJson to be a function).");const l=i.exportJson();if(!l||"object"!=typeof l)throw new Error("exportTemplateJsonAsync: exportJson() returned an invalid payload.");return n?{payload:l,issues:o?await Ft({blockList:l.blockList,bodySettings:l.bodySettings,aiContentRefs:l.aiContentRefs},a):Rt({blockList:l.blockList,bodySettings:l.bodySettings,aiContentRefs:l.aiContentRefs})}:{payload:l,issues:[]}},exports.mergeMarkopoloApiConfig=gt,exports.utils=_o,exports.validateExportPayload=Rt,exports.validateExportPayloadComplete=Ft,exports.validateImageUrlsReachable=Ut,exports.validateTemplateDataShape=function(e){const t=[];if(null==e||"object"!=typeof e)return{ok:!1,warnings:["templateData must be a non-null object"]};const n=e;if(null!=n.content&&"object"!=typeof n.content)t.push("templateData.content should be an object when provided");else if(n.content&&"object"==typeof n.content){const e=n.content;null==e.products||Array.isArray(e.products)||t.push("templateData.content.products should be an array when provided")}if(null==n.catalogProducts||Array.isArray(n.catalogProducts)||t.push("templateData.catalogProducts should be an array when provided"),null!=n.companyContext&&"object"!=typeof n.companyContext&&t.push("templateData.companyContext should be an object when provided"),null!=n.brandContext&&"object"!=typeof n.brandContext&&t.push("templateData.brandContext should be an object when provided"),n.brandContext&&"object"==typeof n.brandContext){const e=n.brandContext;null!=e.brand_color&&"string"!=typeof e.brand_color&&t.push("templateData.brandContext.brand_color should be a string when provided")}return{ok:0===t.length,warnings:t}};
|