@jmeirinkmarimed/form-popup 1.0.0

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.
@@ -0,0 +1,45 @@
1
+ (function(T,u){typeof exports=="object"&&typeof module<"u"?u(exports,require("react"),require("react-dom"),require("react/jsx-runtime")):typeof define=="function"&&define.amd?define(["exports","react","react-dom","react/jsx-runtime"],u):(T=typeof globalThis<"u"?globalThis:T||self,u(T.FormPopup={},T.React,T.ReactDOM,T.React))})(this,function(T,u,N,n){"use strict";var Et=Object.defineProperty,kt=(t,e,o)=>e in t?Et(t,e,{enumerable:!0,configurable:!0,writable:!0,value:o}):t[e]=o,P=(t,e,o)=>kt(t,typeof e!="symbol"?e+"":e,o);const Ft={stringify:t=>t?"true":"false",parse:t=>/^[ty1-9]/i.test(t)},Ht={stringify:t=>t.name,parse:(t,e,o)=>{const r=(()=>{if(typeof window<"u"&&t in window)return window[t];if(typeof global<"u"&&t in global)return global[t]})();return typeof r=="function"?r.bind(o):void 0}},Lt={stringify:t=>JSON.stringify(t),parse:t=>JSON.parse(t)},Ot={stringify:t=>`${t}`,parse:t=>parseFloat(t)},Wt={stringify:t=>t,parse:t=>t},M={string:Wt,number:Ot,boolean:Ft,function:Ht,json:Lt};function qt(t){return t.replace(/([a-z0-9])([A-Z])/g,(e,o,r)=>`${o}-${r.toLowerCase()}`)}const j=Symbol.for("r2wc.render"),U=Symbol.for("r2wc.connected"),L=Symbol.for("r2wc.context"),E=Symbol.for("r2wc.props");function Gt(t,e,o){var r,i,p;e.props||(e.props=t.propTypes?Object.keys(t.propTypes):[]),e.events||(e.events=[]);const a=Array.isArray(e.props)?e.props.slice():Object.keys(e.props),w=Array.isArray(e.events)?e.events.slice():Object.keys(e.events),m={},S={},v={},A={};for(const s of a){m[s]=Array.isArray(e.props)?"string":e.props[s];const c=qt(s);v[s]=c,A[c]=s}for(const s of w)S[s]=Array.isArray(e.events)?{}:e.events[s];class F extends HTMLElement{constructor(){super(),P(this,p,!0),P(this,i),P(this,r,{}),P(this,"container"),e.shadow?this.container=this.attachShadow({mode:e.shadow}):this.container=this,this[E].container=this.container;for(const c of a){const g=v[c],h=this.getAttribute(g),f=m[c],b=f?M[f]:null;b!=null&&b.parse&&h&&(this[E][c]=b.parse(h,g,this))}for(const c of w)this[E][c]=g=>{const h=c.replace(/^on/,"").toLowerCase();this.dispatchEvent(new CustomEvent(h,{detail:g,...S[c]}))}}static get observedAttributes(){return Object.keys(A)}connectedCallback(){this[U]=!0,this[j]()}disconnectedCallback(){this[U]=!1,this[L]&&o.unmount(this[L]),delete this[L]}attributeChangedCallback(c,g,h){const f=A[c],b=m[f],C=b?M[b]:null;f in m&&C!=null&&C.parse&&h&&(this[E][f]=C.parse(h,c,this),this[j]())}[(p=U,i=L,r=E,j)](){this[U]&&(this[L]?o.update(this[L],this[E]):this[L]=o.mount(this.container,t,this[E]))}}for(const s of a){const c=v[s],g=m[s];Object.defineProperty(F.prototype,s,{enumerable:!0,configurable:!0,get(){return this[E][s]},set(h){this[E][s]=h;const f=g?M[g]:null;if(f!=null&&f.stringify){const b=f.stringify(h,c,this);this.getAttribute(c)!==b&&this.setAttribute(c,b)}else this[j]()}})}return F}function _t(t,e,o){const r=u.createElement(e,o);return N.render(r,t),{container:t,ReactComponent:e}}function Bt({container:t,ReactComponent:e},o){const r=u.createElement(e,o);N.render(r,t)}function It({container:t}){N.unmountComponentAtNode(t)}function zt(t,e={}){return Gt(t,e,{mount:_t,update:Bt,unmount:It})}const d={boxSizing:"border-box",margin:"0",padding:"0",letterSpacing:"normal"},Dt="#d4ecec",Pt="#111111",nt="#000000",it="#ffffff",jt='system-ui, -apple-system, "Segoe UI", Roboto, Helvetica, Arial, sans-serif',Ut='Georgia, "Times New Roman", Times, serif',$t=t=>{const e=t.fontFamily||jt,o=t.headingFontFamily||Ut,r=t.textColor||Pt;return{overlay:{...d,fontFamily:e,position:"fixed",top:0,left:0,width:"100%",height:"100%",minHeight:"100vh",maxWidth:"100vw",zIndex:2147483647,display:"flex",alignItems:"center",justifyContent:"center",backgroundColor:t.overlayColor||"rgba(0, 0, 0, 0.55)",overflow:"auto",WebkitTextSizeAdjust:"100%",WebkitFontSmoothing:"antialiased",MozOsxFontSmoothing:"grayscale",padding:"1.5rem"},card:{...d,fontFamily:e,position:"relative",width:"100%",maxWidth:"440px",minHeight:"480px",justifyContent:"center",backgroundColor:t.backgroundColor||Dt,color:r,padding:"3rem 2.25rem 1.5rem",display:"flex",flexDirection:"column",alignItems:"center",textAlign:"center",boxShadow:"0 12px 40px rgba(0, 0, 0, 0.18)"},closeButton:{...d,position:"absolute",top:"14px",right:"14px",width:"28px",height:"28px",borderRadius:"50%",border:"none",backgroundColor:"#cfcfcf",color:"#4a4a4a",cursor:"pointer",display:"flex",alignItems:"center",justifyContent:"center",padding:"0",lineHeight:1},formTitle:{...d,fontFamily:o,fontSize:"30px",fontWeight:700,lineHeight:1.25,color:r,maxWidth:"22ch"},formSubtitle:{...d,fontFamily:e,fontSize:"15px",fontWeight:400,lineHeight:1.4,color:r,marginTop:"0.85rem",marginBottom:"1.35rem"},form:{...d,width:"100%",display:"flex",flexDirection:"column",alignItems:"stretch",textAlign:"left"},emailInput:{...d,fontFamily:o,width:"100%",height:"48px",padding:"0 14px",fontSize:"16px",backgroundColor:"#ffffff",color:"#111111",border:"1px solid #e6e6e6",borderRadius:"0",outline:"none",appearance:"none",WebkitAppearance:"none"},stateLabel:{...d,fontFamily:e,fontSize:"15px",fontWeight:700,color:r,marginTop:"1.15rem",marginBottom:"0.75rem"},stateGrid:{...d,display:"grid",gridTemplateColumns:"1fr 1fr",columnGap:"1.25rem",rowGap:"0.7rem",width:"100%"},radioRow:{...d,display:"flex",alignItems:"center",gap:"0.5rem",cursor:"pointer",fontFamily:o,fontSize:"16px",color:r,userSelect:"none"},radio:{...d,width:"16px",height:"16px",flexShrink:0,accentColor:r,cursor:"pointer"},consentList:{...d,display:"flex",flexDirection:"column",gap:"0.65rem",width:"100%",marginTop:"1.15rem"},consentRow:{...d,display:"flex",alignItems:"flex-start",gap:"0.5rem",cursor:"pointer",fontFamily:e,fontSize:"12px",lineHeight:1.4,color:r,userSelect:"none"},consentCheckbox:{...d,width:"16px",height:"16px",marginTop:"1px",flexShrink:0,accentColor:r,cursor:"pointer"},consentRequired:{...d,color:"#9b1c1c",fontSize:"16px",fontWeight:700,lineHeight:1,marginLeft:"0.15em"},submitButton:{...d,fontFamily:o,alignSelf:"center",marginTop:"1.75rem",minWidth:"168px",height:"46px",padding:"0 2rem",border:"none",borderRadius:"0",backgroundColor:t.buttonColor||nt,color:t.buttonTextColor||it,fontSize:"20px",fontWeight:700,cursor:"pointer",lineHeight:1},error:{...d,fontFamily:e,fontSize:"13px",color:"#9b1c1c",textAlign:"center",marginTop:"0.75rem"},recaptcha:{...d,fontFamily:e,fontSize:"11px",color:r,textAlign:"center",marginTop:"1.75rem"},confirmationTitle:{...d,fontFamily:o,fontSize:"26px",fontWeight:700,lineHeight:1.3,color:r,maxWidth:"20ch"},confirmationMessage:{...d,fontFamily:e,fontSize:"15px",fontWeight:400,lineHeight:1.45,color:r,marginTop:"1rem",maxWidth:"34ch"},confirmationButton:{...d,fontFamily:o,marginTop:"1.75rem",minWidth:"168px",height:"46px",padding:"0 1.5rem",border:"none",borderRadius:"0",backgroundColor:t.buttonColor||nt,color:t.buttonTextColor||it,fontSize:"18px",fontWeight:700,cursor:"pointer",lineHeight:1}}};function Vt(t){const{buttonHoverColor:e,buttonHoverTextColor:o}=t;return`
2
+ .sr-only {
3
+ position: absolute !important;
4
+ width: 1px !important;
5
+ height: 1px !important;
6
+ padding: 0 !important;
7
+ margin: -1px !important;
8
+ overflow: hidden !important;
9
+ clip: rect(0, 0, 0, 0) !important;
10
+ white-space: nowrap !important;
11
+ border: 0 !important;
12
+ }
13
+ #form-popup-email:focus {
14
+ border-color: #111111 !important;
15
+ box-shadow: 0 0 0 1px #111111 !important;
16
+ }
17
+ #form-popup-email::placeholder {
18
+ color: #9a9a9a !important;
19
+ font-family: inherit !important;
20
+ }
21
+ #form-popup-close:hover {
22
+ background-color: #bdbdbd !important;
23
+ }
24
+ #form-popup-submit:hover:not(:disabled),
25
+ #form-popup-confirmation-button:hover {
26
+ background-color: ${e} !important;
27
+ color: ${o} !important;
28
+ }
29
+ #form-popup-submit:disabled {
30
+ opacity: 0.65 !important;
31
+ cursor: wait !important;
32
+ }
33
+ @media screen and (max-width: 480px) {
34
+ #form-popup-card {
35
+ padding: 2.5rem 1.25rem 1.25rem !important;
36
+ }
37
+ #form-popup-form-title {
38
+ font-size: 24px !important;
39
+ }
40
+ #form-popup-confirmation-title {
41
+ font-size: 22px !important;
42
+ }
43
+ }
44
+ `}function st(t){return`formPopupSubmitted:${t||"default"}`}function at(t){return typeof window>"u"||!t?!1:localStorage.getItem(st(t))==="true"}function Nt(t){const[e,o]=u.useState(()=>t?!at(t):!1);u.useEffect(()=>{t&&o(!at(t))},[t]);const r=u.useCallback(()=>{t&&localStorage.setItem(st(t),"true")},[t]),i=u.useCallback(()=>{o(!1)},[]);return{showModal:e,markSubmitted:r,dismiss:i}}const Mt="ageVerified",Kt="true",K="age-gate",Jt="#age-gate-modal";function Rt(t,e){return typeof window>"u"?!1:localStorage.getItem(t)===e}function ct(t,e){var o;try{const r=document.querySelectorAll(t);for(const i of r){const p=(o=i.shadowRoot)==null?void 0:o.querySelector(e);if(p)return p}}catch{return null}return null}function Xt(t,e){if(typeof document>"u"||!t)return null;try{const o=document.querySelector(t);if(o)return o}catch{return null}{const o=ct(e,t);if(o)return o}return ct(K,t)}function lt(t){var a,w,m,S;const e=!!t.waitForAgeGate,o=((a=t.waitForStorageKey)==null?void 0:a.trim())||(e?Mt:""),r=((w=t.waitForStorageValue)==null?void 0:w.trim())||Kt,i=((m=t.waitUntilHidden)==null?void 0:m.trim())||(e?Jt:""),p=((S=t.waitUntilHiddenHost)==null?void 0:S.trim())||K;return!o&&!i?!0:!(o&&!Rt(o,r)||i&&Xt(i,p))}function Yt(t){var m,S,v,A;const e=!!t.waitForAgeGate,o=((m=t.waitForStorageKey)==null?void 0:m.trim())||"",r=((S=t.waitForStorageValue)==null?void 0:S.trim())||"",i=((v=t.waitUntilHidden)==null?void 0:v.trim())||"",p=((A=t.waitUntilHiddenHost)==null?void 0:A.trim())||"",[a,w]=u.useState(()=>lt(t));return u.useEffect(()=>{const F={waitForAgeGate:e,waitForStorageKey:o,waitForStorageValue:r,waitUntilHidden:i,waitUntilHiddenHost:p};if(!e&&!o&&!i){w(!0);return}const s=()=>w(lt(F));s();const c=[],g=new WeakSet,h=()=>{const C=p||K;try{document.querySelectorAll(C).forEach(_=>{const l=_.shadowRoot;if(!l||g.has(l))return;g.add(l);const x=new MutationObserver(s);x.observe(l,{childList:!0,subtree:!0}),c.push(x)})}catch{}};h();const f=new MutationObserver(()=>{h(),s()});f.observe(document.documentElement,{childList:!0,subtree:!0});const b=window.setInterval(s,250);return()=>{f.disconnect(),c.forEach(C=>C.disconnect()),window.clearInterval(b)}},[e,o,r,i,p]),a}function Zt(t){return t?Array.isArray(t)?t.map(e=>e.trim()).filter(Boolean):String(t).split(",").map(e=>e.trim()).filter(Boolean):[]}function J(t){if(!t)return;if(t instanceof ShadowRoot)return t.host;const e=t.getRootNode();if(e instanceof ShadowRoot)return e.host}function O(t,e){const o=J(t);if(!(o!=null&&o.hasAttribute(e)))return;const r=o.getAttribute(e);return r??void 0}function Qt(t,e,o){const r=J(e);if(r!=null&&r.hasAttribute(o)){const i=(r.getAttribute(o)??"").trim().toLowerCase();return!(i==="false"||i==="0"||i==="no"||i==="off")}return t===!0||t==="true"}const te="This site is protected by reCAPTCHA.",ee=new Set(["","false","none","off","hidden"]);function oe(t,e){const o=J(e),r=(o==null?void 0:o.hasAttribute("recaptcha-text"))===!0?o.getAttribute("recaptcha-text")??"":t;return r===void 0?te:ee.has(String(r).trim().toLowerCase())?"":String(r)}function re(t){if(!t||typeof t!="object")return null;const e=t,o=String(e.text??"").trim(),r=e.subscriptionTypeId;return!o||typeof r!="string"&&typeof r!="number"||String(r).trim()===""?null:{subscriptionTypeId:r,text:o,required:!!e.required}}function ne(t){if(!t)return[];let e=[];if(Array.isArray(t))e=t;else{const o=t.trim();if(!o)return[];try{const r=JSON.parse(o);if(!Array.isArray(r))return[];e=r}catch{return[]}}return e.flatMap(o=>{const r=re(o);return r?[r]:[]})}function R(t){return String(t.subscriptionTypeId)}function ie(t){if(typeof document>"u")return;const e=document.cookie.match(new RegExp(`(?:^|; )${t}=([^;]*)`));return e?decodeURIComponent(e[1]):void 0}async function se(t){var p;const e=ie("hubspotutk"),o=t.legalConsent,r=(p=o==null?void 0:o.communications)==null?void 0:p.map(a=>({subscriptionTypeId:a.subscriptionTypeId,text:a.text,value:a.value})),i=await fetch(`https://api.hsforms.com/submissions/v3/integration/submit/${t.portalId}/${t.formId}`,{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({fields:t.fields.map(a=>({objectTypeId:"0-1",name:a.name,value:a.value})),context:{pageUri:window.location.href,pageName:document.title,...e?{hutk:e}:{}},...o?{legalConsentOptions:{consent:{consentToProcess:o.consentToProcess,...o.text?{text:o.text}:{},...r!=null&&r.length?{communications:r}:{}}}}:{}})});if(!i.ok){let a="";try{a=await i.text()}catch{a=""}throw new Error(a||`HubSpot submission failed (${i.status})`)}}function ae({styles:t,formTitle:e,formSubtitle:o,email:r,emailPlaceholder:i,state:p,stateLabel:a,states:w,consentToProcessText:m,consentToProcess:S,communicationConsents:v,communicationValues:A,submitButtonText:F,recaptchaText:s,error:c,submitting:g,onEmailChange:h,onStateChange:f,onConsentToProcessChange:b,onCommunicationChange:C,onSubmit:_}){return n.jsxs(n.Fragment,{children:[n.jsx("h1",{id:"form-popup-form-title",style:t.formTitle,children:e}),o!=null&&o.trim()?n.jsx("p",{id:"form-popup-form-subtitle",style:t.formSubtitle,children:o}):null,n.jsxs("form",{id:"form-popup-form",style:t.form,onSubmit:_,noValidate:!0,children:[n.jsx("label",{htmlFor:"form-popup-email",className:"sr-only",children:"Email"}),n.jsx("input",{id:"form-popup-email",name:"email",type:"email",autoComplete:"email",required:!0,value:r,placeholder:i,onChange:l=>h(l.target.value),style:t.emailInput,"aria-required":"true"}),n.jsx("p",{id:"form-popup-state-label",style:t.stateLabel,children:a}),n.jsx("div",{role:"radiogroup","aria-labelledby":"form-popup-state-label","aria-required":"true",style:t.stateGrid,children:w.map(l=>{const x=`form-popup-state-${l.replace(/\s+/g,"-").toLowerCase()}`;return n.jsxs("label",{htmlFor:x,style:t.radioRow,children:[n.jsx("input",{id:x,type:"radio",name:"form-popup-state",value:l,checked:p===l,onChange:()=>f(l),style:t.radio}),l]},l)})}),m||v.length>0?n.jsxs("div",{style:t.consentList,children:[m?n.jsxs("label",{htmlFor:"form-popup-consent-process",style:t.consentRow,children:[n.jsx("input",{id:"form-popup-consent-process",type:"checkbox",checked:S,required:!0,"aria-required":"true",onChange:l=>b(l.target.checked),style:t.consentCheckbox}),n.jsxs("span",{children:[m,n.jsx("span",{style:t.consentRequired,"aria-hidden":"true",children:"*"})]})]}):null,v.map(l=>{const x=R(l),$=`form-popup-consent-comm-${x}`;return n.jsxs("label",{htmlFor:$,style:t.consentRow,children:[n.jsx("input",{id:$,type:"checkbox",checked:!!A[x],required:l.required,"aria-required":l.required?!0:void 0,onChange:X=>C(x,X.target.checked),style:t.consentCheckbox}),n.jsxs("span",{children:[l.text,l.required?n.jsx("span",{style:t.consentRequired,"aria-hidden":"true",children:"*"}):null]})]},x)})]}):null,n.jsx("button",{id:"form-popup-submit",type:"submit",style:t.submitButton,disabled:g,children:g?"Submitting…":F}),c?n.jsx("p",{id:"form-popup-error",role:"alert",style:t.error,children:c}):null]}),s!=null&&s.trim()?n.jsx("p",{id:"form-popup-recaptcha",style:t.recaptcha,children:s}):null]})}function ce({styles:t,confirmationTitle:e,confirmationMessage:o,confirmationButtonText:r,onButtonClick:i}){const p=!!(r!=null&&r.trim());return n.jsxs(n.Fragment,{children:[n.jsx("h1",{id:"form-popup-confirmation-title",style:t.confirmationTitle,children:e}),o!=null&&o.trim()?n.jsx("p",{id:"form-popup-confirmation-message",style:t.confirmationMessage,children:o}):null,p?n.jsx("button",{id:"form-popup-confirmation-button",type:"button",style:t.confirmationButton,onClick:i,children:r}):null]})}const le=/^[^\s@]+@[^\s@]+\.[^\s@]+$/;function ue(t){return!t||t==="demo"}const ut=({hubspotPortalId:t,hubspotFormId:e,emailProperty:o="email",stateProperty:r="state",additionalPropertyName:i,additionalPropertyValue:p,consentToProcessText:a,communicationConsents:w,formTitle:m,formSubtitle:S,states:v,submitButtonText:A="Submit",emailPlaceholder:F="Email *",stateLabel:s="Select A State *",confirmationTitle:c,confirmationMessage:g,confirmationButtonText:h,confirmationButtonUrl:f,recaptchaText:b,backgroundColor:C,overlayColor:_,textColor:l="#111111",buttonColor:x="#000000",buttonTextColor:$="#ffffff",buttonHoverColor:X="#333333",buttonHoverTextColor:pe="#ffffff",fontFamily:fe,headingFontFamily:me,waitForAgeGate:he,waitForStorageKey:Y,waitForStorageValue:Z,waitUntilHidden:Q,waitUntilHiddenHost:tt,container:H})=>{var yt,wt,St,xt,vt,Ct;const B=$t({backgroundColor:C,overlayColor:_,textColor:l,buttonColor:x,buttonTextColor:$,fontFamily:fe,headingFontFamily:me}),pt=(e==null?void 0:e.trim())||((yt=O(H,"hubspot-form-id"))==null?void 0:yt.trim())||"",ft=(t==null?void 0:t.trim())||((wt=O(H,"hubspot-portal-id"))==null?void 0:wt.trim())||"",ge=Qt(he,H,"wait-for-age-gate"),be=(Y==null?void 0:Y.trim())||((St=O(H,"wait-for-storage-key"))==null?void 0:St.trim())||"",ye=(Z==null?void 0:Z.trim())||((xt=O(H,"wait-for-storage-value"))==null?void 0:xt.trim())||"",we=(Q==null?void 0:Q.trim())||((vt=O(H,"wait-until-hidden"))==null?void 0:vt.trim())||"",Se=(tt==null?void 0:tt.trim())||((Ct=O(H,"wait-until-hidden-host"))==null?void 0:Ct.trim())||"",{showModal:xe,markSubmitted:ve,dismiss:I}=Nt(pt),Ce=Yt({waitForAgeGate:ge,waitForStorageKey:be,waitForStorageValue:ye,waitUntilHidden:we,waitUntilHiddenHost:Se}),z=xe&&Ce,[mt,Ae]=u.useState("form"),[ht,Te]=u.useState(""),[et,Ee]=u.useState(""),[ot,ke]=u.useState(!1),[rt,Fe]=u.useState({}),[gt,bt]=u.useState(!1),[V,k]=u.useState(""),He=Zt(v),Le=oe(b,H),W=(a==null?void 0:a.trim())||"",D=ne(w),Oe=!!W||D.length>0;u.useEffect(()=>{if(!z)return;const y=document.body.style.overflow;return document.body.style.overflow="hidden",()=>{document.body.style.overflow=y}},[z]),u.useEffect(()=>{if(!z)return;const y=q=>{q.key==="Escape"&&I()};return window.addEventListener("keydown",y),()=>window.removeEventListener("keydown",y)},[z,I]);const We=async y=>{y.preventDefault();const q=ht.trim();if(!le.test(q)){k("Please enter a valid email address.");return}if(!et){k("Please select a state.");return}if(W&&!ot){k("Please agree to the privacy terms.");return}if(D.find(G=>G.required&&!rt[R(G)])){k("Please agree to the required communications terms.");return}k(""),bt(!0);const Tt=[{name:o,value:q},{name:r,value:et}];i!=null&&i.trim()&&p!=null&&Tt.push({name:i.trim(),value:p});try{ue(ft)||await se({portalId:ft,formId:pt,fields:Tt,legalConsent:Oe?{consentToProcess:!!(W&&ot),...W?{text:W}:{},...D.length?{communications:D.map(G=>({subscriptionTypeId:Number(G.subscriptionTypeId),text:G.text,value:!!rt[R(G)]}))}:{}}:void 0}),ve(),Ae("confirmation")}catch{k("Something went wrong. Please try again.")}finally{bt(!1)}},qe=()=>{if(f){window.location.href=f;return}I()};if(!z)return null;const Ge=mt==="form"?"form-popup-form-title":"form-popup-confirmation-title";return n.jsxs("div",{id:"form-popup-overlay",style:B.overlay,role:"dialog","aria-modal":"true","aria-labelledby":Ge,onClick:y=>{y.target===y.currentTarget&&!gt&&I()},children:[n.jsx("style",{children:Vt({buttonHoverColor:X,buttonHoverTextColor:pe})}),n.jsxs("div",{id:"form-popup-card",style:B.card,role:"document",children:[n.jsx("button",{id:"form-popup-close",type:"button",style:B.closeButton,"aria-label":"Close",onClick:I,children:n.jsx("svg",{width:"10",height:"10",viewBox:"0 0 10 10","aria-hidden":"true",children:n.jsx("path",{d:"M1 1l8 8M9 1L1 9",stroke:"currentColor",strokeWidth:"1.5",strokeLinecap:"round"})})}),mt==="form"?n.jsx(ae,{styles:B,formTitle:m,formSubtitle:S,email:ht,emailPlaceholder:F,state:et,stateLabel:s,states:He,consentToProcessText:W||void 0,consentToProcess:ot,communicationConsents:D,communicationValues:rt,submitButtonText:A,recaptchaText:Le,error:V,submitting:gt,onEmailChange:Te,onStateChange:y=>{Ee(y),V&&k("")},onConsentToProcessChange:y=>{ke(y),V&&k("")},onCommunicationChange:(y,q)=>{Fe(At=>({...At,[y]:q})),V&&k("")},onSubmit:We}):n.jsx(ce,{styles:B,confirmationTitle:c,confirmationMessage:g,confirmationButtonText:h,onButtonClick:qe})]})]})},de=zt(ut,{props:{hubspotPortalId:"string",hubspotFormId:"string",emailProperty:"string",stateProperty:"string",additionalPropertyName:"string",additionalPropertyValue:"string",consentToProcessText:"string",communicationConsents:"string",formTitle:"string",formSubtitle:"string",states:"string",submitButtonText:"string",emailPlaceholder:"string",stateLabel:"string",confirmationTitle:"string",confirmationMessage:"string",confirmationButtonText:"string",confirmationButtonUrl:"string",recaptchaText:"string",backgroundColor:"string",overlayColor:"string",textColor:"string",buttonColor:"string",buttonTextColor:"string",buttonHoverColor:"string",buttonHoverTextColor:"string",fontFamily:"string",headingFontFamily:"string",waitForAgeGate:"string",waitForStorageKey:"string",waitForStorageValue:"string",waitUntilHidden:"string",waitUntilHiddenHost:"string"},shadow:"open"});function dt(){typeof customElements>"u"||customElements.get("form-popup")||customElements.define("form-popup",de)}dt(),dt(),T.FormPopup=ut,Object.defineProperty(T,Symbol.toStringTag,{value:"Module"})});
45
+ //# sourceMappingURL=form-popup.umd.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"form-popup.umd.js","sources":["../node_modules/@r2wc/core/dist/core.js","../node_modules/@r2wc/react-to-web-component/dist/react-to-web-component.js","../src/FormPopup/FormPopup.styles.ts","../src/FormPopup/FormPopup.injected.css.ts","../src/FormPopup/hooks/useFormPopupVisibility.ts","../src/FormPopup/hooks/useDeferredReady.ts","../src/FormPopup/parseStates.ts","../src/FormPopup/getWebComponentHost.ts","../src/FormPopup/resolveRecaptchaText.ts","../src/FormPopup/parseCommunicationConsents.ts","../src/FormPopup/api/submitHubSpotForm.ts","../src/FormPopup/screens/FormScreen.tsx","../src/FormPopup/screens/ConfirmationScreen.tsx","../src/FormPopup/FormPopup.tsx","../src/web-component/registerFormPopupElement.ts","../src/index.ts"],"sourcesContent":["var x = Object.defineProperty;\nvar N = (t, e, n) => e in t ? x(t, e, { enumerable: !0, configurable: !0, writable: !0, value: n }) : t[e] = n;\nvar y = (t, e, n) => N(t, typeof e != \"symbol\" ? e + \"\" : e, n);\nconst P = {\n stringify: (t) => t ? \"true\" : \"false\",\n parse: (t) => /^[ty1-9]/i.test(t)\n}, T = {\n stringify: (t) => t.name,\n parse: (t, e, n) => {\n const a = (() => {\n if (typeof window < \"u\" && t in window)\n return window[t];\n if (typeof global < \"u\" && t in global)\n return global[t];\n })();\n return typeof a == \"function\" ? a.bind(n) : void 0;\n }\n}, V = {\n stringify: (t) => JSON.stringify(t),\n parse: (t) => JSON.parse(t)\n}, E = {\n stringify: (t) => `${t}`,\n parse: (t) => parseFloat(t)\n}, L = {\n stringify: (t) => t,\n parse: (t) => t\n}, A = {\n string: L,\n number: E,\n boolean: P,\n function: T,\n json: V\n};\nfunction $(t) {\n return t.replace(\n /([a-z0-9])([A-Z])/g,\n (e, n, a) => `${n}-${a.toLowerCase()}`\n );\n}\nconst d = Symbol.for(\"r2wc.render\"), g = Symbol.for(\"r2wc.connected\"), l = Symbol.for(\"r2wc.context\"), c = Symbol.for(\"r2wc.props\");\nfunction _(t, e, n) {\n var C, O, j;\n e.props || (e.props = t.propTypes ? Object.keys(t.propTypes) : []), e.events || (e.events = []);\n const a = Array.isArray(e.props) ? e.props.slice() : Object.keys(e.props), v = Array.isArray(e.events) ? e.events.slice() : Object.keys(e.events), h = {}, S = {}, m = {}, w = {};\n for (const s of a) {\n h[s] = Array.isArray(e.props) ? \"string\" : e.props[s];\n const u = $(s);\n m[s] = u, w[u] = s;\n }\n for (const s of v)\n S[s] = Array.isArray(e.events) ? {} : e.events[s];\n class k extends HTMLElement {\n constructor() {\n super();\n y(this, j, !0);\n y(this, O);\n y(this, C, {});\n y(this, \"container\");\n e.shadow ? this.container = this.attachShadow({\n mode: e.shadow\n }) : this.container = this, this[c].container = this.container;\n for (const r of a) {\n const p = m[r], o = this.getAttribute(p), i = h[r], f = i ? A[i] : null;\n f != null && f.parse && o && (this[c][r] = f.parse(o, p, this));\n }\n for (const r of v)\n this[c][r] = (p) => {\n const o = r.replace(/^on/, \"\").toLowerCase();\n this.dispatchEvent(\n new CustomEvent(o, { detail: p, ...S[r] })\n );\n };\n }\n static get observedAttributes() {\n return Object.keys(w);\n }\n connectedCallback() {\n this[g] = !0, this[d]();\n }\n disconnectedCallback() {\n this[g] = !1, this[l] && n.unmount(this[l]), delete this[l];\n }\n attributeChangedCallback(r, p, o) {\n const i = w[r], f = h[i], b = f ? A[f] : null;\n i in h && (b != null && b.parse) && o && (this[c][i] = b.parse(o, r, this), this[d]());\n }\n [(j = g, O = l, C = c, d)]() {\n this[g] && (this[l] ? n.update(this[l], this[c]) : this[l] = n.mount(\n this.container,\n t,\n this[c]\n ));\n }\n }\n for (const s of a) {\n const u = m[s], r = h[s];\n Object.defineProperty(k.prototype, s, {\n enumerable: !0,\n configurable: !0,\n get() {\n return this[c][s];\n },\n set(p) {\n this[c][s] = p;\n const o = r ? A[r] : null;\n if (o != null && o.stringify) {\n const i = o.stringify(p, u, this);\n this.getAttribute(u) !== i && this.setAttribute(u, i);\n } else\n this[d]();\n }\n });\n }\n return k;\n}\nexport {\n _ as default\n};\n","import m from \"react\";\nimport o from \"react-dom\";\nimport u from \"@r2wc/core\";\nfunction c(e, t, n) {\n const r = m.createElement(t, n);\n return o.render(r, e), {\n container: e,\n ReactComponent: t\n };\n}\nfunction f({ container: e, ReactComponent: t }, n) {\n const r = m.createElement(t, n);\n o.render(r, e);\n}\nfunction i({ container: e }) {\n o.unmountComponentAtNode(e);\n}\nfunction p(e, t = {}) {\n return u(e, t, { mount: c, update: f, unmount: i });\n}\nexport {\n p as default\n};\n","import type { CSSProperties } from \"react\"\n\ninterface StyleProps {\n backgroundColor?: string\n overlayColor?: string\n textColor?: string\n buttonColor?: string\n buttonTextColor?: string\n fontFamily?: string\n headingFontFamily?: string\n}\n\nexport const resetStyles: CSSProperties = {\n boxSizing: \"border-box\",\n margin: \"0\",\n padding: \"0\",\n letterSpacing: \"normal\",\n}\n\nconst DEFAULT_CARD = \"#d4ecec\"\nconst DEFAULT_TEXT = \"#111111\"\nconst DEFAULT_BUTTON = \"#000000\"\nconst DEFAULT_BUTTON_TEXT = \"#ffffff\"\nconst DEFAULT_SANS =\n 'system-ui, -apple-system, \"Segoe UI\", Roboto, Helvetica, Arial, sans-serif'\nconst DEFAULT_SERIF = 'Georgia, \"Times New Roman\", Times, serif'\n\nexport const createStyles = (props: StyleProps): Record<string, CSSProperties> => {\n const sans = props.fontFamily || DEFAULT_SANS\n const serif = props.headingFontFamily || DEFAULT_SERIF\n const textColor = props.textColor || DEFAULT_TEXT\n\n return {\n overlay: {\n ...resetStyles,\n fontFamily: sans,\n position: \"fixed\",\n top: 0,\n left: 0,\n width: \"100%\",\n height: \"100%\",\n minHeight: \"100vh\",\n maxWidth: \"100vw\",\n zIndex: 2147483647,\n display: \"flex\",\n alignItems: \"center\",\n justifyContent: \"center\",\n backgroundColor: props.overlayColor || \"rgba(0, 0, 0, 0.55)\",\n overflow: \"auto\",\n WebkitTextSizeAdjust: \"100%\",\n WebkitFontSmoothing: \"antialiased\",\n MozOsxFontSmoothing: \"grayscale\",\n padding: \"1.5rem\",\n },\n\n card: {\n ...resetStyles,\n fontFamily: sans,\n position: \"relative\",\n width: \"100%\",\n maxWidth: \"440px\",\n minHeight: \"480px\",\n justifyContent: \"center\",\n backgroundColor: props.backgroundColor || DEFAULT_CARD,\n color: textColor,\n padding: \"3rem 2.25rem 1.5rem\",\n display: \"flex\",\n flexDirection: \"column\",\n alignItems: \"center\",\n textAlign: \"center\",\n boxShadow: \"0 12px 40px rgba(0, 0, 0, 0.18)\",\n },\n\n closeButton: {\n ...resetStyles,\n position: \"absolute\",\n top: \"14px\",\n right: \"14px\",\n width: \"28px\",\n height: \"28px\",\n borderRadius: \"50%\",\n border: \"none\",\n backgroundColor: \"#cfcfcf\",\n color: \"#4a4a4a\",\n cursor: \"pointer\",\n display: \"flex\",\n alignItems: \"center\",\n justifyContent: \"center\",\n padding: \"0\",\n lineHeight: 1,\n },\n\n formTitle: {\n ...resetStyles,\n fontFamily: serif,\n fontSize: \"30px\",\n fontWeight: 700,\n lineHeight: 1.25,\n color: textColor,\n maxWidth: \"22ch\",\n },\n\n formSubtitle: {\n ...resetStyles,\n fontFamily: sans,\n fontSize: \"15px\",\n fontWeight: 400,\n lineHeight: 1.4,\n color: textColor,\n marginTop: \"0.85rem\",\n marginBottom: \"1.35rem\",\n },\n\n form: {\n ...resetStyles,\n width: \"100%\",\n display: \"flex\",\n flexDirection: \"column\",\n alignItems: \"stretch\",\n textAlign: \"left\",\n },\n\n emailInput: {\n ...resetStyles,\n fontFamily: serif,\n width: \"100%\",\n height: \"48px\",\n padding: \"0 14px\",\n fontSize: \"16px\",\n backgroundColor: \"#ffffff\",\n color: \"#111111\",\n border: \"1px solid #e6e6e6\",\n borderRadius: \"0\",\n outline: \"none\",\n appearance: \"none\",\n WebkitAppearance: \"none\",\n },\n\n stateLabel: {\n ...resetStyles,\n fontFamily: sans,\n fontSize: \"15px\",\n fontWeight: 700,\n color: textColor,\n marginTop: \"1.15rem\",\n marginBottom: \"0.75rem\",\n },\n\n stateGrid: {\n ...resetStyles,\n display: \"grid\",\n gridTemplateColumns: \"1fr 1fr\",\n columnGap: \"1.25rem\",\n rowGap: \"0.7rem\",\n width: \"100%\",\n },\n\n radioRow: {\n ...resetStyles,\n display: \"flex\",\n alignItems: \"center\",\n gap: \"0.5rem\",\n cursor: \"pointer\",\n fontFamily: serif,\n fontSize: \"16px\",\n color: textColor,\n userSelect: \"none\",\n },\n\n radio: {\n ...resetStyles,\n width: \"16px\",\n height: \"16px\",\n flexShrink: 0,\n accentColor: textColor,\n cursor: \"pointer\",\n },\n\n consentList: {\n ...resetStyles,\n display: \"flex\",\n flexDirection: \"column\",\n gap: \"0.65rem\",\n width: \"100%\",\n marginTop: \"1.15rem\",\n },\n\n consentRow: {\n ...resetStyles,\n display: \"flex\",\n alignItems: \"flex-start\",\n gap: \"0.5rem\",\n cursor: \"pointer\",\n fontFamily: sans,\n fontSize: \"12px\",\n lineHeight: 1.4,\n color: textColor,\n userSelect: \"none\",\n },\n\n consentCheckbox: {\n ...resetStyles,\n width: \"16px\",\n height: \"16px\",\n marginTop: \"1px\",\n flexShrink: 0,\n accentColor: textColor,\n cursor: \"pointer\",\n },\n\n consentRequired: {\n ...resetStyles,\n color: \"#9b1c1c\",\n fontSize: \"16px\",\n fontWeight: 700,\n lineHeight: 1,\n marginLeft: \"0.15em\",\n },\n\n submitButton: {\n ...resetStyles,\n fontFamily: serif,\n alignSelf: \"center\",\n marginTop: \"1.75rem\",\n minWidth: \"168px\",\n height: \"46px\",\n padding: \"0 2rem\",\n border: \"none\",\n borderRadius: \"0\",\n backgroundColor: props.buttonColor || DEFAULT_BUTTON,\n color: props.buttonTextColor || DEFAULT_BUTTON_TEXT,\n fontSize: \"20px\",\n fontWeight: 700,\n cursor: \"pointer\",\n lineHeight: 1,\n },\n\n error: {\n ...resetStyles,\n fontFamily: sans,\n fontSize: \"13px\",\n color: \"#9b1c1c\",\n textAlign: \"center\",\n marginTop: \"0.75rem\",\n },\n\n recaptcha: {\n ...resetStyles,\n fontFamily: sans,\n fontSize: \"11px\",\n color: textColor,\n textAlign: \"center\",\n marginTop: \"1.75rem\",\n },\n\n confirmationTitle: {\n ...resetStyles,\n fontFamily: serif,\n fontSize: \"26px\",\n fontWeight: 700,\n lineHeight: 1.3,\n color: textColor,\n maxWidth: \"20ch\",\n },\n\n confirmationMessage: {\n ...resetStyles,\n fontFamily: sans,\n fontSize: \"15px\",\n fontWeight: 400,\n lineHeight: 1.45,\n color: textColor,\n marginTop: \"1rem\",\n maxWidth: \"34ch\",\n },\n\n confirmationButton: {\n ...resetStyles,\n fontFamily: serif,\n marginTop: \"1.75rem\",\n minWidth: \"168px\",\n height: \"46px\",\n padding: \"0 1.5rem\",\n border: \"none\",\n borderRadius: \"0\",\n backgroundColor: props.buttonColor || DEFAULT_BUTTON,\n color: props.buttonTextColor || DEFAULT_BUTTON_TEXT,\n fontSize: \"18px\",\n fontWeight: 700,\n cursor: \"pointer\",\n lineHeight: 1,\n },\n }\n}\n","/** Runtime CSS injected into the modal (needed for Shadow DOM + host-page isolation). */\nexport function getInjectedCss(options: {\n buttonHoverColor: string\n buttonHoverTextColor: string\n}): string {\n const { buttonHoverColor, buttonHoverTextColor } = options\n\n return `\n .sr-only {\n position: absolute !important;\n width: 1px !important;\n height: 1px !important;\n padding: 0 !important;\n margin: -1px !important;\n overflow: hidden !important;\n clip: rect(0, 0, 0, 0) !important;\n white-space: nowrap !important;\n border: 0 !important;\n }\n #form-popup-email:focus {\n border-color: #111111 !important;\n box-shadow: 0 0 0 1px #111111 !important;\n }\n #form-popup-email::placeholder {\n color: #9a9a9a !important;\n font-family: inherit !important;\n }\n #form-popup-close:hover {\n background-color: #bdbdbd !important;\n }\n #form-popup-submit:hover:not(:disabled),\n #form-popup-confirmation-button:hover {\n background-color: ${buttonHoverColor} !important;\n color: ${buttonHoverTextColor} !important;\n }\n #form-popup-submit:disabled {\n opacity: 0.65 !important;\n cursor: wait !important;\n }\n @media screen and (max-width: 480px) {\n #form-popup-card {\n padding: 2.5rem 1.25rem 1.25rem !important;\n }\n #form-popup-form-title {\n font-size: 24px !important;\n }\n #form-popup-confirmation-title {\n font-size: 22px !important;\n }\n }\n `\n}\n","import { useCallback, useEffect, useState } from \"react\"\n\nfunction storageKey(formId: string): string {\n return `formPopupSubmitted:${formId || \"default\"}`\n}\n\nfunction hasSubmitted(formId: string): boolean {\n if (typeof window === \"undefined\" || !formId) return false\n return localStorage.getItem(storageKey(formId)) === \"true\"\n}\n\nexport function useFormPopupVisibility(formId: string) {\n const [showModal, setShowModal] = useState(() =>\n formId ? !hasSubmitted(formId) : false\n )\n\n useEffect(() => {\n if (!formId) return\n setShowModal(!hasSubmitted(formId))\n }, [formId])\n\n const markSubmitted = useCallback(() => {\n if (!formId) return\n localStorage.setItem(storageKey(formId), \"true\")\n }, [formId])\n\n const dismiss = useCallback(() => {\n setShowModal(false)\n }, [])\n\n return { showModal, markSubmitted, dismiss }\n}\n","import { useEffect, useState } from \"react\"\n\nconst AGE_GATE_STORAGE_KEY = \"ageVerified\"\nconst AGE_GATE_STORAGE_VALUE = \"true\"\nconst AGE_GATE_HOST = \"age-gate\"\nconst AGE_GATE_OVERLAY = \"#age-gate-modal\"\n\nexport interface DeferredReadyOptions {\n waitForAgeGate?: boolean\n waitForStorageKey?: string\n waitForStorageValue?: string\n waitUntilHidden?: string\n waitUntilHiddenHost?: string\n}\n\nfunction storageSatisfied(key: string, value: string): boolean {\n if (typeof window === \"undefined\") return false\n return localStorage.getItem(key) === value\n}\n\nfunction findInHostShadow(hostSelector: string, overlaySelector: string): Element | null {\n try {\n const hosts = document.querySelectorAll(hostSelector)\n for (const host of hosts) {\n const found = host.shadowRoot?.querySelector(overlaySelector)\n if (found) return found\n }\n } catch {\n return null\n }\n return null\n}\n\nfunction findOverlay(overlaySelector: string, hostSelector?: string): Element | null {\n if (typeof document === \"undefined\" || !overlaySelector) return null\n try {\n const light = document.querySelector(overlaySelector)\n if (light) return light\n } catch {\n return null\n }\n if (hostSelector) {\n const shadowed = findInHostShadow(hostSelector, overlaySelector)\n if (shadowed) return shadowed\n }\n return findInHostShadow(AGE_GATE_HOST, overlaySelector)\n}\n\nfunction isDeferredReady(options: DeferredReadyOptions): boolean {\n const waitForAgeGate = Boolean(options.waitForAgeGate)\n const storageKey =\n options.waitForStorageKey?.trim() ||\n (waitForAgeGate ? AGE_GATE_STORAGE_KEY : \"\")\n const storageValue =\n options.waitForStorageValue?.trim() || AGE_GATE_STORAGE_VALUE\n const overlaySelector =\n options.waitUntilHidden?.trim() ||\n (waitForAgeGate ? AGE_GATE_OVERLAY : \"\")\n const hostSelector =\n options.waitUntilHiddenHost?.trim() || AGE_GATE_HOST\n\n if (!storageKey && !overlaySelector) return true\n\n if (storageKey && !storageSatisfied(storageKey, storageValue)) return false\n if (overlaySelector && findOverlay(overlaySelector, hostSelector)) return false\n return true\n}\n\nexport function useDeferredReady(options: DeferredReadyOptions): boolean {\n const waitForAgeGate = Boolean(options.waitForAgeGate)\n const storageKey = options.waitForStorageKey?.trim() || \"\"\n const storageValue = options.waitForStorageValue?.trim() || \"\"\n const waitUntilHidden = options.waitUntilHidden?.trim() || \"\"\n const waitUntilHiddenHost = options.waitUntilHiddenHost?.trim() || \"\"\n\n const [ready, setReady] = useState(() => isDeferredReady(options))\n\n useEffect(() => {\n const current = {\n waitForAgeGate,\n waitForStorageKey: storageKey,\n waitForStorageValue: storageValue,\n waitUntilHidden,\n waitUntilHiddenHost,\n }\n if (!waitForAgeGate && !storageKey && !waitUntilHidden) {\n setReady(true)\n return\n }\n\n const check = () => setReady(isDeferredReady(current))\n check()\n\n const shadowObservers: MutationObserver[] = []\n const observedShadows = new WeakSet<ShadowRoot>()\n const watchShadows = () => {\n const hostSel = waitUntilHiddenHost || AGE_GATE_HOST\n try {\n document.querySelectorAll(hostSel).forEach((host) => {\n const root = host.shadowRoot\n if (!root || observedShadows.has(root)) return\n observedShadows.add(root)\n const shadowObserver = new MutationObserver(check)\n shadowObserver.observe(root, {\n childList: true,\n subtree: true,\n })\n shadowObservers.push(shadowObserver)\n })\n } catch {\n /* invalid selector */\n }\n }\n watchShadows()\n\n const observer = new MutationObserver(() => {\n watchShadows()\n check()\n })\n observer.observe(document.documentElement, {\n childList: true,\n subtree: true,\n })\n\n const interval = window.setInterval(check, 250)\n\n return () => {\n observer.disconnect()\n shadowObservers.forEach((item) => item.disconnect())\n window.clearInterval(interval)\n }\n }, [waitForAgeGate, storageKey, storageValue, waitUntilHidden, waitUntilHiddenHost])\n\n return ready\n}\n","export function parseStates(states: string | string[] | undefined): string[] {\n if (!states) return []\n if (Array.isArray(states)) {\n return states.map((state) => state.trim()).filter(Boolean)\n }\n return String(states)\n .split(\",\")\n .map((state) => state.trim())\n .filter(Boolean)\n}\n","export function getWebComponentHost(\n container?: HTMLElement\n): HTMLElement | undefined {\n if (!container) return undefined\n if (container instanceof ShadowRoot) return container.host as HTMLElement\n const root = container.getRootNode()\n if (root instanceof ShadowRoot) return root.host as HTMLElement\n return undefined\n}\n\nexport function readHostAttribute(\n container: HTMLElement | undefined,\n attribute: string\n): string | undefined {\n const host = getWebComponentHost(container)\n if (!host?.hasAttribute(attribute)) return undefined\n const value = host.getAttribute(attribute)\n return value == null ? undefined : value\n}\n\nexport function resolveHostFlag(\n prop: boolean | string | undefined,\n container: HTMLElement | undefined,\n attribute: string\n): boolean {\n const host = getWebComponentHost(container)\n if (host?.hasAttribute(attribute)) {\n const raw = (host.getAttribute(attribute) ?? \"\").trim().toLowerCase()\n if (raw === \"false\" || raw === \"0\" || raw === \"no\" || raw === \"off\") {\n return false\n }\n return true\n }\n return prop === true || prop === \"true\"\n}\n","import { getWebComponentHost } from \"./getWebComponentHost\"\n\nconst DEFAULT_RECAPTCHA_TEXT = \"This site is protected by reCAPTCHA.\"\nconst HIDDEN_VALUES = new Set([\"\", \"false\", \"none\", \"off\", \"hidden\"])\n\n/**\n * r2wc skips empty HTML attributes (`if (value)`), so `recaptcha-text=\"\"` never\n * reaches React. Read the host attribute when present, and treat empty / false /\n * none / off / hidden as hidden.\n */\nexport function resolveRecaptchaText(\n recaptchaText: string | undefined,\n container?: HTMLElement\n): string {\n const host = getWebComponentHost(container)\n const raw =\n host?.hasAttribute(\"recaptcha-text\") === true\n ? (host.getAttribute(\"recaptcha-text\") ?? \"\")\n : recaptchaText\n\n if (raw === undefined) return DEFAULT_RECAPTCHA_TEXT\n if (HIDDEN_VALUES.has(String(raw).trim().toLowerCase())) return \"\"\n return String(raw)\n}\n","import type { CommunicationConsent } from \"./types\"\n\nfunction toConsent(item: unknown): CommunicationConsent | null {\n if (!item || typeof item !== \"object\") return null\n const record = item as Record<string, unknown>\n const text = String(record.text ?? \"\").trim()\n const rawId = record.subscriptionTypeId\n if (!text || (typeof rawId !== \"string\" && typeof rawId !== \"number\")) {\n return null\n }\n if (String(rawId).trim() === \"\") return null\n return {\n subscriptionTypeId: rawId,\n text,\n required: Boolean(record.required),\n }\n}\n\nexport function parseCommunicationConsents(\n value: CommunicationConsent[] | string | undefined\n): CommunicationConsent[] {\n if (!value) return []\n\n let items: unknown[] = []\n if (Array.isArray(value)) {\n items = value\n } else {\n const trimmed = value.trim()\n if (!trimmed) return []\n try {\n const parsed: unknown = JSON.parse(trimmed)\n if (!Array.isArray(parsed)) return []\n items = parsed\n } catch {\n return []\n }\n }\n\n return items.flatMap((item) => {\n const consent = toConsent(item)\n return consent ? [consent] : []\n })\n}\n\nexport function communicationConsentKey(consent: CommunicationConsent): string {\n return String(consent.subscriptionTypeId)\n}\n","export interface HubSpotField {\n name: string\n value: string\n}\n\nexport interface HubSpotCommunicationConsent {\n subscriptionTypeId: number\n text: string\n value: boolean\n}\n\nexport interface HubSpotLegalConsent {\n consentToProcess: boolean\n text?: string\n communications?: HubSpotCommunicationConsent[]\n}\n\nfunction getCookie(name: string): string | undefined {\n if (typeof document === \"undefined\") return undefined\n const match = document.cookie.match(new RegExp(`(?:^|; )${name}=([^;]*)`))\n return match ? decodeURIComponent(match[1]) : undefined\n}\n\nexport async function submitHubSpotForm(options: {\n portalId: string\n formId: string\n fields: HubSpotField[]\n legalConsent?: HubSpotLegalConsent\n}): Promise<void> {\n const hutk = getCookie(\"hubspotutk\")\n const legalConsent = options.legalConsent\n const communications = legalConsent?.communications?.map((item) => ({\n subscriptionTypeId: item.subscriptionTypeId,\n text: item.text,\n value: item.value,\n }))\n\n const response = await fetch(\n `https://api.hsforms.com/submissions/v3/integration/submit/${options.portalId}/${options.formId}`,\n {\n method: \"POST\",\n headers: { \"Content-Type\": \"application/json\" },\n body: JSON.stringify({\n fields: options.fields.map((field) => ({\n objectTypeId: \"0-1\",\n name: field.name,\n value: field.value,\n })),\n context: {\n pageUri: window.location.href,\n pageName: document.title,\n ...(hutk ? { hutk } : {}),\n },\n ...(legalConsent\n ? {\n legalConsentOptions: {\n consent: {\n consentToProcess: legalConsent.consentToProcess,\n ...(legalConsent.text ? { text: legalConsent.text } : {}),\n ...(communications?.length ? { communications } : {}),\n },\n },\n }\n : {}),\n }),\n }\n )\n\n if (!response.ok) {\n let detail = \"\"\n try {\n detail = await response.text()\n } catch {\n detail = \"\"\n }\n throw new Error(detail || `HubSpot submission failed (${response.status})`)\n }\n}\n","import type { CSSProperties, FormEvent } from \"react\"\nimport type { CommunicationConsent } from \"../types\"\nimport { communicationConsentKey } from \"../parseCommunicationConsents\"\n\ninterface FormScreenProps {\n styles: Record<string, CSSProperties>\n formTitle: string\n formSubtitle?: string\n email: string\n emailPlaceholder: string\n state: string\n stateLabel: string\n states: string[]\n consentToProcessText?: string\n consentToProcess: boolean\n communicationConsents: CommunicationConsent[]\n communicationValues: Record<string, boolean>\n submitButtonText: string\n recaptchaText?: string\n error?: string\n submitting: boolean\n onEmailChange: (value: string) => void\n onStateChange: (value: string) => void\n onConsentToProcessChange: (value: boolean) => void\n onCommunicationChange: (key: string, value: boolean) => void\n onSubmit: (event: FormEvent<HTMLFormElement>) => void\n}\n\nexport default function FormScreen({\n styles,\n formTitle,\n formSubtitle,\n email,\n emailPlaceholder,\n state,\n stateLabel,\n states,\n consentToProcessText,\n consentToProcess,\n communicationConsents,\n communicationValues,\n submitButtonText,\n recaptchaText,\n error,\n submitting,\n onEmailChange,\n onStateChange,\n onConsentToProcessChange,\n onCommunicationChange,\n onSubmit,\n}: FormScreenProps) {\n return (\n <>\n <h1 id=\"form-popup-form-title\" style={styles.formTitle}>\n {formTitle}\n </h1>\n {formSubtitle?.trim() ? (\n <p id=\"form-popup-form-subtitle\" style={styles.formSubtitle}>\n {formSubtitle}\n </p>\n ) : null}\n\n <form id=\"form-popup-form\" style={styles.form} onSubmit={onSubmit} noValidate>\n <label htmlFor=\"form-popup-email\" className=\"sr-only\">\n Email\n </label>\n <input\n id=\"form-popup-email\"\n name=\"email\"\n type=\"email\"\n autoComplete=\"email\"\n required\n value={email}\n placeholder={emailPlaceholder}\n onChange={(event) => onEmailChange(event.target.value)}\n style={styles.emailInput}\n aria-required=\"true\"\n />\n\n <p id=\"form-popup-state-label\" style={styles.stateLabel}>\n {stateLabel}\n </p>\n <div\n role=\"radiogroup\"\n aria-labelledby=\"form-popup-state-label\"\n aria-required=\"true\"\n style={styles.stateGrid}\n >\n {states.map((option) => {\n const id = `form-popup-state-${option.replace(/\\s+/g, \"-\").toLowerCase()}`\n return (\n <label key={option} htmlFor={id} style={styles.radioRow}>\n <input\n id={id}\n type=\"radio\"\n name=\"form-popup-state\"\n value={option}\n checked={state === option}\n onChange={() => onStateChange(option)}\n style={styles.radio}\n />\n {option}\n </label>\n )\n })}\n </div>\n\n {consentToProcessText || communicationConsents.length > 0 ? (\n <div style={styles.consentList}>\n {consentToProcessText ? (\n <label htmlFor=\"form-popup-consent-process\" style={styles.consentRow}>\n <input\n id=\"form-popup-consent-process\"\n type=\"checkbox\"\n checked={consentToProcess}\n required\n aria-required=\"true\"\n onChange={(event) => onConsentToProcessChange(event.target.checked)}\n style={styles.consentCheckbox}\n />\n <span>\n {consentToProcessText}\n <span style={styles.consentRequired} aria-hidden=\"true\">\n *\n </span>\n </span>\n </label>\n ) : null}\n {communicationConsents.map((consent) => {\n const key = communicationConsentKey(consent)\n const id = `form-popup-consent-comm-${key}`\n return (\n <label key={key} htmlFor={id} style={styles.consentRow}>\n <input\n id={id}\n type=\"checkbox\"\n checked={Boolean(communicationValues[key])}\n required={consent.required}\n aria-required={consent.required ? true : undefined}\n onChange={(event) =>\n onCommunicationChange(key, event.target.checked)\n }\n style={styles.consentCheckbox}\n />\n <span>\n {consent.text}\n {consent.required ? (\n <span style={styles.consentRequired} aria-hidden=\"true\">\n *\n </span>\n ) : null}\n </span>\n </label>\n )\n })}\n </div>\n ) : null}\n\n <button\n id=\"form-popup-submit\"\n type=\"submit\"\n style={styles.submitButton}\n disabled={submitting}\n >\n {submitting ? \"Submitting…\" : submitButtonText}\n </button>\n\n {error ? (\n <p id=\"form-popup-error\" role=\"alert\" style={styles.error}>\n {error}\n </p>\n ) : null}\n </form>\n\n {recaptchaText?.trim() ? (\n <p id=\"form-popup-recaptcha\" style={styles.recaptcha}>\n {recaptchaText}\n </p>\n ) : null}\n </>\n )\n}\n","import type { CSSProperties } from \"react\"\n\ninterface ConfirmationScreenProps {\n styles: Record<string, CSSProperties>\n confirmationTitle: string\n confirmationMessage?: string\n confirmationButtonText?: string\n onButtonClick: () => void\n}\n\nexport default function ConfirmationScreen({\n styles,\n confirmationTitle,\n confirmationMessage,\n confirmationButtonText,\n onButtonClick,\n}: ConfirmationScreenProps) {\n const showButton = Boolean(confirmationButtonText?.trim())\n\n return (\n <>\n <h1 id=\"form-popup-confirmation-title\" style={styles.confirmationTitle}>\n {confirmationTitle}\n </h1>\n {confirmationMessage?.trim() ? (\n <p id=\"form-popup-confirmation-message\" style={styles.confirmationMessage}>\n {confirmationMessage}\n </p>\n ) : null}\n {showButton ? (\n <button\n id=\"form-popup-confirmation-button\"\n type=\"button\"\n style={styles.confirmationButton}\n onClick={onButtonClick}\n >\n {confirmationButtonText}\n </button>\n ) : null}\n </>\n )\n}\n","import { useEffect, useState, type FormEvent } from \"react\"\nimport { createStyles } from \"./FormPopup.styles\"\nimport { getInjectedCss } from \"./FormPopup.injected.css\"\nimport { useFormPopupVisibility } from \"./hooks/useFormPopupVisibility\"\nimport { useDeferredReady } from \"./hooks/useDeferredReady\"\nimport { parseStates } from \"./parseStates\"\nimport { resolveRecaptchaText } from \"./resolveRecaptchaText\"\nimport { readHostAttribute, resolveHostFlag } from \"./getWebComponentHost\"\nimport {\n communicationConsentKey,\n parseCommunicationConsents,\n} from \"./parseCommunicationConsents\"\nimport { submitHubSpotForm } from \"./api/submitHubSpotForm\"\nimport FormScreen from \"./screens/FormScreen\"\nimport ConfirmationScreen from \"./screens/ConfirmationScreen\"\nimport type { FormPopupProps } from \"./types\"\n\nconst EMAIL_PATTERN = /^[^\\s@]+@[^\\s@]+\\.[^\\s@]+$/\n\nfunction isDemoPortal(portalId: string): boolean {\n return !portalId || portalId === \"demo\"\n}\n\nconst FormPopup = ({\n hubspotPortalId,\n hubspotFormId,\n emailProperty = \"email\",\n stateProperty = \"state\",\n additionalPropertyName,\n additionalPropertyValue,\n consentToProcessText,\n communicationConsents,\n formTitle,\n formSubtitle,\n states,\n submitButtonText = \"Submit\",\n emailPlaceholder = \"Email *\",\n stateLabel = \"Select A State *\",\n confirmationTitle,\n confirmationMessage,\n confirmationButtonText,\n confirmationButtonUrl,\n recaptchaText,\n backgroundColor,\n overlayColor,\n textColor = \"#111111\",\n buttonColor = \"#000000\",\n buttonTextColor = \"#ffffff\",\n buttonHoverColor = \"#333333\",\n buttonHoverTextColor = \"#ffffff\",\n fontFamily,\n headingFontFamily,\n waitForAgeGate,\n waitForStorageKey,\n waitForStorageValue,\n waitUntilHidden,\n waitUntilHiddenHost,\n container,\n}: FormPopupProps & { container?: HTMLElement }) => {\n const styles = createStyles({\n backgroundColor,\n overlayColor,\n textColor,\n buttonColor,\n buttonTextColor,\n fontFamily,\n headingFontFamily,\n })\n\n const resolvedFormId =\n hubspotFormId?.trim() ||\n readHostAttribute(container, \"hubspot-form-id\")?.trim() ||\n \"\"\n const resolvedPortalId =\n hubspotPortalId?.trim() ||\n readHostAttribute(container, \"hubspot-portal-id\")?.trim() ||\n \"\"\n\n const resolvedWaitForAgeGate = resolveHostFlag(\n waitForAgeGate,\n container,\n \"wait-for-age-gate\"\n )\n const resolvedWaitForStorageKey =\n waitForStorageKey?.trim() ||\n readHostAttribute(container, \"wait-for-storage-key\")?.trim() ||\n \"\"\n const resolvedWaitForStorageValue =\n waitForStorageValue?.trim() ||\n readHostAttribute(container, \"wait-for-storage-value\")?.trim() ||\n \"\"\n const resolvedWaitUntilHidden =\n waitUntilHidden?.trim() ||\n readHostAttribute(container, \"wait-until-hidden\")?.trim() ||\n \"\"\n const resolvedWaitUntilHiddenHost =\n waitUntilHiddenHost?.trim() ||\n readHostAttribute(container, \"wait-until-hidden-host\")?.trim() ||\n \"\"\n\n const { showModal, markSubmitted, dismiss } =\n useFormPopupVisibility(resolvedFormId)\n const gateReady = useDeferredReady({\n waitForAgeGate: resolvedWaitForAgeGate,\n waitForStorageKey: resolvedWaitForStorageKey,\n waitForStorageValue: resolvedWaitForStorageValue,\n waitUntilHidden: resolvedWaitUntilHidden,\n waitUntilHiddenHost: resolvedWaitUntilHiddenHost,\n })\n const visible = showModal && gateReady\n\n const [step, setStep] = useState<\"form\" | \"confirmation\">(\"form\")\n const [email, setEmail] = useState(\"\")\n const [state, setState] = useState(\"\")\n const [consentToProcess, setConsentToProcess] = useState(false)\n const [communicationValues, setCommunicationValues] = useState<\n Record<string, boolean>\n >({})\n const [submitting, setSubmitting] = useState(false)\n const [error, setError] = useState(\"\")\n\n const stateOptions = parseStates(states)\n const recaptchaDisclaimer = resolveRecaptchaText(recaptchaText, container)\n const processingConsentText = consentToProcessText?.trim() || \"\"\n const communicationOptions = parseCommunicationConsents(communicationConsents)\n const hasLegalConsent =\n Boolean(processingConsentText) || communicationOptions.length > 0\n\n useEffect(() => {\n if (!visible) return\n const previousOverflow = document.body.style.overflow\n document.body.style.overflow = \"hidden\"\n return () => {\n document.body.style.overflow = previousOverflow\n }\n }, [visible])\n\n useEffect(() => {\n if (!visible) return\n const onKeyDown = (event: KeyboardEvent) => {\n if (event.key === \"Escape\") dismiss()\n }\n window.addEventListener(\"keydown\", onKeyDown)\n return () => window.removeEventListener(\"keydown\", onKeyDown)\n }, [visible, dismiss])\n\n const handleSubmit = async (event: FormEvent<HTMLFormElement>) => {\n event.preventDefault()\n const trimmedEmail = email.trim()\n\n if (!EMAIL_PATTERN.test(trimmedEmail)) {\n setError(\"Please enter a valid email address.\")\n return\n }\n if (!state) {\n setError(\"Please select a state.\")\n return\n }\n if (processingConsentText && !consentToProcess) {\n setError(\"Please agree to the privacy terms.\")\n return\n }\n const missingCommunication = communicationOptions.find(\n (consent) =>\n consent.required && !communicationValues[communicationConsentKey(consent)]\n )\n if (missingCommunication) {\n setError(\"Please agree to the required communications terms.\")\n return\n }\n\n setError(\"\")\n setSubmitting(true)\n\n const fields = [\n { name: emailProperty, value: trimmedEmail },\n { name: stateProperty, value: state },\n ]\n if (additionalPropertyName?.trim() && additionalPropertyValue != null) {\n fields.push({\n name: additionalPropertyName.trim(),\n value: additionalPropertyValue,\n })\n }\n\n try {\n if (!isDemoPortal(resolvedPortalId)) {\n await submitHubSpotForm({\n portalId: resolvedPortalId,\n formId: resolvedFormId,\n fields,\n legalConsent: hasLegalConsent\n ? {\n consentToProcess: Boolean(\n processingConsentText && consentToProcess\n ),\n ...(processingConsentText\n ? { text: processingConsentText }\n : {}),\n ...(communicationOptions.length\n ? {\n communications: communicationOptions.map((consent) => ({\n subscriptionTypeId: Number(consent.subscriptionTypeId),\n text: consent.text,\n value: Boolean(\n communicationValues[communicationConsentKey(consent)]\n ),\n })),\n }\n : {}),\n }\n : undefined,\n })\n }\n markSubmitted()\n setStep(\"confirmation\")\n } catch {\n setError(\"Something went wrong. Please try again.\")\n } finally {\n setSubmitting(false)\n }\n }\n\n const handleConfirmationClick = () => {\n if (confirmationButtonUrl) {\n window.location.href = confirmationButtonUrl\n return\n }\n dismiss()\n }\n\n if (!visible) return null\n\n const labelledBy =\n step === \"form\" ? \"form-popup-form-title\" : \"form-popup-confirmation-title\"\n\n return (\n <div\n id=\"form-popup-overlay\"\n style={styles.overlay}\n role=\"dialog\"\n aria-modal=\"true\"\n aria-labelledby={labelledBy}\n onClick={(event) => {\n if (event.target === event.currentTarget && !submitting) dismiss()\n }}\n >\n <style>\n {getInjectedCss({\n buttonHoverColor,\n buttonHoverTextColor,\n })}\n </style>\n <div id=\"form-popup-card\" style={styles.card} role=\"document\">\n <button\n id=\"form-popup-close\"\n type=\"button\"\n style={styles.closeButton}\n aria-label=\"Close\"\n onClick={dismiss}\n >\n <svg width=\"10\" height=\"10\" viewBox=\"0 0 10 10\" aria-hidden=\"true\">\n <path\n d=\"M1 1l8 8M9 1L1 9\"\n stroke=\"currentColor\"\n strokeWidth=\"1.5\"\n strokeLinecap=\"round\"\n />\n </svg>\n </button>\n\n {step === \"form\" ? (\n <FormScreen\n styles={styles}\n formTitle={formTitle}\n formSubtitle={formSubtitle}\n email={email}\n emailPlaceholder={emailPlaceholder}\n state={state}\n stateLabel={stateLabel}\n states={stateOptions}\n consentToProcessText={processingConsentText || undefined}\n consentToProcess={consentToProcess}\n communicationConsents={communicationOptions}\n communicationValues={communicationValues}\n submitButtonText={submitButtonText}\n recaptchaText={recaptchaDisclaimer}\n error={error}\n submitting={submitting}\n onEmailChange={setEmail}\n onStateChange={(value) => {\n setState(value)\n if (error) setError(\"\")\n }}\n onConsentToProcessChange={(value) => {\n setConsentToProcess(value)\n if (error) setError(\"\")\n }}\n onCommunicationChange={(key, value) => {\n setCommunicationValues((current) => ({\n ...current,\n [key]: value,\n }))\n if (error) setError(\"\")\n }}\n onSubmit={handleSubmit}\n />\n ) : (\n <ConfirmationScreen\n styles={styles}\n confirmationTitle={confirmationTitle}\n confirmationMessage={confirmationMessage}\n confirmationButtonText={confirmationButtonText}\n onButtonClick={handleConfirmationClick}\n />\n )}\n </div>\n </div>\n )\n}\n\nexport default FormPopup\n","import reactToWebComponent from \"@r2wc/react-to-web-component\"\nimport FormPopup from \"../FormPopup/FormPopup\"\n\nconst FormPopupElement = reactToWebComponent(FormPopup, {\n props: {\n hubspotPortalId: \"string\",\n hubspotFormId: \"string\",\n emailProperty: \"string\",\n stateProperty: \"string\",\n additionalPropertyName: \"string\",\n additionalPropertyValue: \"string\",\n consentToProcessText: \"string\",\n communicationConsents: \"string\",\n formTitle: \"string\",\n formSubtitle: \"string\",\n states: \"string\",\n submitButtonText: \"string\",\n emailPlaceholder: \"string\",\n stateLabel: \"string\",\n confirmationTitle: \"string\",\n confirmationMessage: \"string\",\n confirmationButtonText: \"string\",\n confirmationButtonUrl: \"string\",\n recaptchaText: \"string\",\n backgroundColor: \"string\",\n overlayColor: \"string\",\n textColor: \"string\",\n buttonColor: \"string\",\n buttonTextColor: \"string\",\n buttonHoverColor: \"string\",\n buttonHoverTextColor: \"string\",\n fontFamily: \"string\",\n headingFontFamily: \"string\",\n waitForAgeGate: \"string\",\n waitForStorageKey: \"string\",\n waitForStorageValue: \"string\",\n waitUntilHidden: \"string\",\n waitUntilHiddenHost: \"string\",\n },\n shadow: \"open\",\n})\n\n/** Registers `<form-popup>` once. Safe to call multiple times. */\nexport function registerFormPopupElement(): void {\n if (typeof customElements === \"undefined\") return\n if (!customElements.get(\"form-popup\")) {\n customElements.define(\"form-popup\", FormPopupElement)\n }\n}\n\nregisterFormPopupElement()\n\nexport default FormPopupElement\n","import { registerFormPopupElement } from \"./web-component/registerFormPopupElement\"\n\n// Ensure <form-popup> is always registered when the package is imported\nregisterFormPopupElement()\n\nexport { default as FormPopup } from \"./FormPopup/FormPopup\"\nexport type { FormPopupProps, CommunicationConsent } from \"./FormPopup/types\"\n"],"names":["x","N","n","y","P","T","a","V","E","L","A","$","d","g","l","c","_","C","O","j","v","h","m","w","u","k","r","p","o","i","f","b","e","t","resetStyles","DEFAULT_CARD","DEFAULT_TEXT","DEFAULT_BUTTON","DEFAULT_BUTTON_TEXT","DEFAULT_SANS","DEFAULT_SERIF","createStyles","props","sans","serif","textColor","getInjectedCss","options","buttonHoverColor","buttonHoverTextColor","storageKey","formId","hasSubmitted","useFormPopupVisibility","showModal","setShowModal","useState","useEffect","markSubmitted","useCallback","dismiss","AGE_GATE_STORAGE_KEY","AGE_GATE_STORAGE_VALUE","AGE_GATE_HOST","AGE_GATE_OVERLAY","storageSatisfied","key","value","findInHostShadow","hostSelector","overlaySelector","hosts","host","found","_a","findOverlay","light","shadowed","isDeferredReady","waitForAgeGate","storageValue","_b","_c","_d","useDeferredReady","waitUntilHidden","waitUntilHiddenHost","ready","setReady","current","check","shadowObservers","observedShadows","watchShadows","hostSel","root","shadowObserver","observer","interval","item","parseStates","states","state","getWebComponentHost","container","readHostAttribute","attribute","resolveHostFlag","prop","raw","DEFAULT_RECAPTCHA_TEXT","HIDDEN_VALUES","resolveRecaptchaText","recaptchaText","toConsent","record","text","rawId","parseCommunicationConsents","items","trimmed","parsed","consent","communicationConsentKey","getCookie","name","match","submitHubSpotForm","hutk","legalConsent","communications","response","field","detail","FormScreen","styles","formTitle","formSubtitle","email","emailPlaceholder","stateLabel","consentToProcessText","consentToProcess","communicationConsents","communicationValues","submitButtonText","error","submitting","onEmailChange","onStateChange","onConsentToProcessChange","onCommunicationChange","onSubmit","jsxs","Fragment","jsx","event","option","id","ConfirmationScreen","confirmationTitle","confirmationMessage","confirmationButtonText","onButtonClick","showButton","EMAIL_PATTERN","isDemoPortal","portalId","FormPopup","hubspotPortalId","hubspotFormId","emailProperty","stateProperty","additionalPropertyName","additionalPropertyValue","confirmationButtonUrl","backgroundColor","overlayColor","buttonColor","buttonTextColor","fontFamily","headingFontFamily","waitForStorageKey","waitForStorageValue","resolvedFormId","resolvedPortalId","resolvedWaitForAgeGate","resolvedWaitForStorageKey","resolvedWaitForStorageValue","resolvedWaitUntilHidden","_e","resolvedWaitUntilHiddenHost","_f","gateReady","visible","step","setStep","setEmail","setState","setConsentToProcess","setCommunicationValues","setSubmitting","setError","stateOptions","recaptchaDisclaimer","processingConsentText","communicationOptions","hasLegalConsent","previousOverflow","onKeyDown","handleSubmit","trimmedEmail","fields","handleConfirmationClick","labelledBy","FormPopupElement","reactToWebComponent","registerFormPopupElement"],"mappings":"6WAAA,IAAIA,GAAI,OAAO,eACXC,GAAI,CAAC,EAAG,EAAGC,IAAM,KAAK,EAAIF,GAAE,EAAG,EAAG,CAAE,WAAY,GAAI,aAAc,GAAI,SAAU,GAAI,MAAOE,CAAC,CAAE,EAAI,EAAE,CAAC,EAAIA,EACzGC,EAAI,CAAC,EAAG,EAAGD,IAAMD,GAAE,EAAG,OAAO,GAAK,SAAW,EAAI,GAAK,EAAGC,CAAC,EAC9D,MAAME,GAAI,CACR,UAAY,GAAM,EAAI,OAAS,QAC/B,MAAQ,GAAM,YAAY,KAAK,CAAC,CAClC,EAAGC,GAAI,CACL,UAAY,GAAM,EAAE,KACpB,MAAO,CAAC,EAAG,EAAGH,IAAM,CAClB,MAAMI,GAAK,IAAM,CACf,GAAI,OAAO,OAAS,KAAO,KAAK,OAC9B,OAAO,OAAO,CAAC,EACjB,GAAI,OAAO,OAAS,KAAO,KAAK,OAC9B,OAAO,OAAO,CAAC,CACvB,GAAQ,EACJ,OAAO,OAAOA,GAAK,WAAaA,EAAE,KAAKJ,CAAC,EAAI,MAChD,CACA,EAAGK,GAAI,CACL,UAAY,GAAM,KAAK,UAAU,CAAC,EAClC,MAAQ,GAAM,KAAK,MAAM,CAAC,CAC5B,EAAGC,GAAI,CACL,UAAY,GAAM,GAAG,CAAC,GACtB,MAAQ,GAAM,WAAW,CAAC,CAC5B,EAAGC,GAAI,CACL,UAAY,GAAM,EAClB,MAAQ,GAAM,CAChB,EAAGC,EAAI,CACL,OAAQD,GACR,OAAQD,GACR,QAASJ,GACT,SAAUC,GACV,KAAME,EACR,EACA,SAASI,GAAE,EAAG,CACZ,OAAO,EAAE,QACP,qBACA,CAAC,EAAGT,EAAGI,IAAM,GAAGJ,CAAC,IAAII,EAAE,aAAa,EACrC,CACH,CACA,MAAMM,EAAI,OAAO,IAAI,aAAa,EAAGC,EAAI,OAAO,IAAI,gBAAgB,EAAGC,EAAI,OAAO,IAAI,cAAc,EAAGC,EAAI,OAAO,IAAI,YAAY,EAClI,SAASC,GAAE,EAAG,EAAGd,EAAG,CAClB,IAAIe,EAAGC,EAAGC,EACV,EAAE,QAAU,EAAE,MAAQ,EAAE,UAAY,OAAO,KAAK,EAAE,SAAS,EAAI,CAAA,GAAK,EAAE,SAAW,EAAE,OAAS,IAC5F,MAAM,EAAI,MAAM,QAAQ,EAAE,KAAK,EAAI,EAAE,MAAM,MAAK,EAAK,OAAO,KAAK,EAAE,KAAK,EAAGC,EAAI,MAAM,QAAQ,EAAE,MAAM,EAAI,EAAE,OAAO,MAAK,EAAK,OAAO,KAAK,EAAE,MAAM,EAAGC,EAAI,CAAA,EAAI,EAAI,CAAE,EAAEC,EAAI,CAAA,EAAIC,EAAI,CAAE,EACjL,UAAW,KAAK,EAAG,CACjBF,EAAE,CAAC,EAAI,MAAM,QAAQ,EAAE,KAAK,EAAI,SAAW,EAAE,MAAM,CAAC,EACpD,MAAMG,EAAIb,GAAE,CAAC,EACbW,EAAE,CAAC,EAAIE,EAAGD,EAAEC,CAAC,EAAI,CACrB,CACE,UAAW,KAAKJ,EACd,EAAE,CAAC,EAAI,MAAM,QAAQ,EAAE,MAAM,EAAI,CAAE,EAAG,EAAE,OAAO,CAAC,EAClD,MAAMK,UAAU,WAAY,CAC1B,aAAc,CACZ,MAAO,EACPtB,EAAE,KAAMgB,EAAG,EAAE,EACbhB,EAAE,KAAMe,CAAC,EACTf,EAAE,KAAMc,EAAG,EAAE,EACbd,EAAE,KAAM,WAAW,EACnB,EAAE,OAAS,KAAK,UAAY,KAAK,aAAa,CAC5C,KAAM,EAAE,MAChB,CAAO,EAAI,KAAK,UAAY,KAAM,KAAKY,CAAC,EAAE,UAAY,KAAK,UACrD,UAAWW,KAAK,EAAG,CACjB,MAAMC,EAAIL,EAAEI,CAAC,EAAGE,EAAI,KAAK,aAAaD,CAAC,EAAGE,EAAIR,EAAEK,CAAC,EAAGI,EAAID,EAAInB,EAAEmB,CAAC,EAAI,KACnEC,GAAK,MAAQA,EAAE,OAASF,IAAM,KAAKb,CAAC,EAAEW,CAAC,EAAII,EAAE,MAAMF,EAAGD,EAAG,IAAI,EACrE,CACM,UAAWD,KAAKN,EACd,KAAKL,CAAC,EAAEW,CAAC,EAAKC,GAAM,CAClB,MAAMC,EAAIF,EAAE,QAAQ,MAAO,EAAE,EAAE,YAAa,EAC5C,KAAK,cACH,IAAI,YAAYE,EAAG,CAAE,OAAQD,EAAG,GAAG,EAAED,CAAC,CAAG,CAAA,CAC1C,CACF,CACT,CACI,WAAW,oBAAqB,CAC9B,OAAO,OAAO,KAAKH,CAAC,CAC1B,CACI,mBAAoB,CAClB,KAAKV,CAAC,EAAI,GAAI,KAAKD,CAAC,EAAG,CAC7B,CACI,sBAAuB,CACrB,KAAKC,CAAC,EAAI,GAAI,KAAKC,CAAC,GAAKZ,EAAE,QAAQ,KAAKY,CAAC,CAAC,EAAG,OAAO,KAAKA,CAAC,CAChE,CACI,yBAAyBY,EAAGC,EAAGC,EAAG,CAChC,MAAMC,EAAIN,EAAEG,CAAC,EAAGI,EAAIT,EAAEQ,CAAC,EAAGE,EAAID,EAAIpB,EAAEoB,CAAC,EAAI,KACzCD,KAAKR,GAAMU,GAAK,MAAQA,EAAE,OAAUH,IAAM,KAAKb,CAAC,EAAEc,CAAC,EAAIE,EAAE,MAAMH,EAAGF,EAAG,IAAI,EAAG,KAAKd,CAAC,IACxF,CACI,EAAEO,EAAIN,EAAGK,EAAIJ,EAAGG,EAAIF,EAAGH,KAAM,CAC3B,KAAKC,CAAC,IAAM,KAAKC,CAAC,EAAIZ,EAAE,OAAO,KAAKY,CAAC,EAAG,KAAKC,CAAC,CAAC,EAAI,KAAKD,CAAC,EAAIZ,EAAE,MAC7D,KAAK,UACL,EACA,KAAKa,CAAC,CACd,EACA,CACA,CACE,UAAW,KAAK,EAAG,CACjB,MAAMS,EAAIF,EAAE,CAAC,EAAGI,EAAIL,EAAE,CAAC,EACvB,OAAO,eAAeI,EAAE,UAAW,EAAG,CACpC,WAAY,GACZ,aAAc,GACd,KAAM,CACJ,OAAO,KAAKV,CAAC,EAAE,CAAC,CACjB,EACD,IAAIY,EAAG,CACL,KAAKZ,CAAC,EAAE,CAAC,EAAIY,EACb,MAAMC,EAAIF,EAAIhB,EAAEgB,CAAC,EAAI,KACrB,GAAIE,GAAK,MAAQA,EAAE,UAAW,CAC5B,MAAMC,EAAID,EAAE,UAAUD,EAAGH,EAAG,IAAI,EAChC,KAAK,aAAaA,CAAC,IAAMK,GAAK,KAAK,aAAaL,EAAGK,CAAC,CACrD,MACC,KAAKjB,CAAC,EAAG,CACnB,CACA,CAAK,CACL,CACE,OAAOa,CACT,CC/GA,SAASV,GAAEiB,EAAGC,EAAG/B,EAAG,CAClB,MAAM,EAAIoB,EAAE,cAAcW,EAAG/B,CAAC,EAC9B,OAAO0B,EAAE,OAAO,EAAGI,CAAC,EAAG,CACrB,UAAWA,EACX,eAAgBC,CACjB,CACH,CACA,SAASH,GAAE,CAAE,UAAWE,EAAG,eAAgBC,CAAG,EAAE/B,EAAG,CACjD,MAAM,EAAIoB,EAAE,cAAcW,EAAG/B,CAAC,EAC9B0B,EAAE,OAAO,EAAGI,CAAC,CACf,CACA,SAASH,GAAE,CAAE,UAAWG,GAAK,CAC3BJ,EAAE,uBAAuBI,CAAC,CAC5B,CACA,SAASL,GAAEK,EAAGC,EAAI,GAAI,CACpB,OAAOT,GAAEQ,EAAGC,EAAG,CAAE,MAAOlB,GAAG,OAAQe,GAAG,QAASD,GAAG,CACpD,CCPO,MAAMK,EAA6B,CACxC,UAAW,aACX,OAAQ,IACR,QAAS,IACT,cAAe,QACjB,EAEMC,GAAe,UACfC,GAAe,UACfC,GAAiB,UACjBC,GAAsB,UACtBC,GACJ,6EACIC,GAAgB,2CAETC,GAAgBC,GAAqD,CAC1E,MAAAC,EAAOD,EAAM,YAAcH,GAC3BK,EAAQF,EAAM,mBAAqBF,GACnCK,EAAYH,EAAM,WAAaN,GAE9B,MAAA,CACL,QAAS,CACP,GAAGF,EACH,WAAYS,EACZ,SAAU,QACV,IAAK,EACL,KAAM,EACN,MAAO,OACP,OAAQ,OACR,UAAW,QACX,SAAU,QACV,OAAQ,WACR,QAAS,OACT,WAAY,SACZ,eAAgB,SAChB,gBAAiBD,EAAM,cAAgB,sBACvC,SAAU,OACV,qBAAsB,OACtB,oBAAqB,cACrB,oBAAqB,YACrB,QAAS,QACX,EAEA,KAAM,CACJ,GAAGR,EACH,WAAYS,EACZ,SAAU,WACV,MAAO,OACP,SAAU,QACV,UAAW,QACX,eAAgB,SAChB,gBAAiBD,EAAM,iBAAmBP,GAC1C,MAAOU,EACP,QAAS,sBACT,QAAS,OACT,cAAe,SACf,WAAY,SACZ,UAAW,SACX,UAAW,iCACb,EAEA,YAAa,CACX,GAAGX,EACH,SAAU,WACV,IAAK,OACL,MAAO,OACP,MAAO,OACP,OAAQ,OACR,aAAc,MACd,OAAQ,OACR,gBAAiB,UACjB,MAAO,UACP,OAAQ,UACR,QAAS,OACT,WAAY,SACZ,eAAgB,SAChB,QAAS,IACT,WAAY,CACd,EAEA,UAAW,CACT,GAAGA,EACH,WAAYU,EACZ,SAAU,OACV,WAAY,IACZ,WAAY,KACZ,MAAOC,EACP,SAAU,MACZ,EAEA,aAAc,CACZ,GAAGX,EACH,WAAYS,EACZ,SAAU,OACV,WAAY,IACZ,WAAY,IACZ,MAAOE,EACP,UAAW,UACX,aAAc,SAChB,EAEA,KAAM,CACJ,GAAGX,EACH,MAAO,OACP,QAAS,OACT,cAAe,SACf,WAAY,UACZ,UAAW,MACb,EAEA,WAAY,CACV,GAAGA,EACH,WAAYU,EACZ,MAAO,OACP,OAAQ,OACR,QAAS,SACT,SAAU,OACV,gBAAiB,UACjB,MAAO,UACP,OAAQ,oBACR,aAAc,IACd,QAAS,OACT,WAAY,OACZ,iBAAkB,MACpB,EAEA,WAAY,CACV,GAAGV,EACH,WAAYS,EACZ,SAAU,OACV,WAAY,IACZ,MAAOE,EACP,UAAW,UACX,aAAc,SAChB,EAEA,UAAW,CACT,GAAGX,EACH,QAAS,OACT,oBAAqB,UACrB,UAAW,UACX,OAAQ,SACR,MAAO,MACT,EAEA,SAAU,CACR,GAAGA,EACH,QAAS,OACT,WAAY,SACZ,IAAK,SACL,OAAQ,UACR,WAAYU,EACZ,SAAU,OACV,MAAOC,EACP,WAAY,MACd,EAEA,MAAO,CACL,GAAGX,EACH,MAAO,OACP,OAAQ,OACR,WAAY,EACZ,YAAaW,EACb,OAAQ,SACV,EAEA,YAAa,CACX,GAAGX,EACH,QAAS,OACT,cAAe,SACf,IAAK,UACL,MAAO,OACP,UAAW,SACb,EAEA,WAAY,CACV,GAAGA,EACH,QAAS,OACT,WAAY,aACZ,IAAK,SACL,OAAQ,UACR,WAAYS,EACZ,SAAU,OACV,WAAY,IACZ,MAAOE,EACP,WAAY,MACd,EAEA,gBAAiB,CACf,GAAGX,EACH,MAAO,OACP,OAAQ,OACR,UAAW,MACX,WAAY,EACZ,YAAaW,EACb,OAAQ,SACV,EAEA,gBAAiB,CACf,GAAGX,EACH,MAAO,UACP,SAAU,OACV,WAAY,IACZ,WAAY,EACZ,WAAY,QACd,EAEA,aAAc,CACZ,GAAGA,EACH,WAAYU,EACZ,UAAW,SACX,UAAW,UACX,SAAU,QACV,OAAQ,OACR,QAAS,SACT,OAAQ,OACR,aAAc,IACd,gBAAiBF,EAAM,aAAeL,GACtC,MAAOK,EAAM,iBAAmBJ,GAChC,SAAU,OACV,WAAY,IACZ,OAAQ,UACR,WAAY,CACd,EAEA,MAAO,CACL,GAAGJ,EACH,WAAYS,EACZ,SAAU,OACV,MAAO,UACP,UAAW,SACX,UAAW,SACb,EAEA,UAAW,CACT,GAAGT,EACH,WAAYS,EACZ,SAAU,OACV,MAAOE,EACP,UAAW,SACX,UAAW,SACb,EAEA,kBAAmB,CACjB,GAAGX,EACH,WAAYU,EACZ,SAAU,OACV,WAAY,IACZ,WAAY,IACZ,MAAOC,EACP,SAAU,MACZ,EAEA,oBAAqB,CACnB,GAAGX,EACH,WAAYS,EACZ,SAAU,OACV,WAAY,IACZ,WAAY,KACZ,MAAOE,EACP,UAAW,OACX,SAAU,MACZ,EAEA,mBAAoB,CAClB,GAAGX,EACH,WAAYU,EACZ,UAAW,UACX,SAAU,QACV,OAAQ,OACR,QAAS,WACT,OAAQ,OACR,aAAc,IACd,gBAAiBF,EAAM,aAAeL,GACtC,MAAOK,EAAM,iBAAmBJ,GAChC,SAAU,OACV,WAAY,IACZ,OAAQ,UACR,WAAY,CAAA,CAEhB,CACF,ECpSO,SAASQ,GAAeC,EAGpB,CACH,KAAA,CAAE,iBAAAC,EAAkB,qBAAAC,CAAA,EAAyBF,EAE5C,MAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,0BAyBiBC,CAAgB;AAAA,eAC3BC,CAAoB;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,GAkBnC,CCjDA,SAASC,GAAWC,EAAwB,CACnC,MAAA,sBAAsBA,GAAU,SAAS,EAClD,CAEA,SAASC,GAAaD,EAAyB,CAC7C,OAAI,OAAO,OAAW,KAAe,CAACA,EAAe,GAC9C,aAAa,QAAQD,GAAWC,CAAM,CAAC,IAAM,MACtD,CAEO,SAASE,GAAuBF,EAAgB,CAC/C,KAAA,CAACG,EAAWC,CAAY,EAAIC,EAAA,SAAS,IACzCL,EAAS,CAACC,GAAaD,CAAM,EAAI,EACnC,EAEAM,EAAAA,UAAU,IAAM,CACTN,GACQI,EAAA,CAACH,GAAaD,CAAM,CAAC,CAAA,EACjC,CAACA,CAAM,CAAC,EAEL,MAAAO,EAAgBC,EAAAA,YAAY,IAAM,CACjCR,GACL,aAAa,QAAQD,GAAWC,CAAM,EAAG,MAAM,CAAA,EAC9C,CAACA,CAAM,CAAC,EAELS,EAAUD,EAAAA,YAAY,IAAM,CAChCJ,EAAa,EAAK,CACpB,EAAG,EAAE,EAEE,MAAA,CAAE,UAAAD,EAAW,cAAAI,EAAe,QAAAE,CAAQ,CAC7C,CC7BA,MAAMC,GAAuB,cACvBC,GAAyB,OACzBC,EAAgB,WAChBC,GAAmB,kBAUzB,SAASC,GAAiBC,EAAaC,EAAwB,CACzD,OAAA,OAAO,OAAW,IAAoB,GACnC,aAAa,QAAQD,CAAG,IAAMC,CACvC,CAEA,SAASC,GAAiBC,EAAsBC,EAAyC,OACnF,GAAA,CACI,MAAAC,EAAQ,SAAS,iBAAiBF,CAAY,EACpD,UAAWG,KAAQD,EAAO,CACxB,MAAME,GAAQC,EAAAF,EAAK,aAAL,YAAAE,EAAiB,cAAcJ,GAC7C,GAAIG,EAAc,OAAAA,CAAA,CACpB,MACM,CACC,OAAA,IAAA,CAEF,OAAA,IACT,CAEA,SAASE,GAAYL,EAAyBD,EAAuC,CACnF,GAAI,OAAO,SAAa,KAAe,CAACC,EAAwB,OAAA,KAC5D,GAAA,CACI,MAAAM,EAAQ,SAAS,cAAcN,CAAe,EACpD,GAAIM,EAAc,OAAAA,CAAA,MACZ,CACC,OAAA,IAAA,CAES,CACV,MAAAC,EAAWT,GAAiBC,EAAcC,CAAe,EAC/D,GAAIO,EAAiB,OAAAA,CAAA,CAEhB,OAAAT,GAAiBL,EAAeO,CAAe,CACxD,CAEA,SAASQ,GAAgB/B,EAAwC,aACzD,MAAAgC,EAAiB,EAAQhC,EAAQ,eACjCG,IACJwB,EAAA3B,EAAQ,oBAAR,YAAA2B,EAA2B,UAC1BK,EAAiBlB,GAAuB,IACrCmB,IACJC,EAAAlC,EAAQ,sBAAR,YAAAkC,EAA6B,SAAUnB,GACnCQ,IACJY,EAAAnC,EAAQ,kBAAR,YAAAmC,EAAyB,UACxBH,EAAiBf,GAAmB,IACjCK,IACJc,EAAApC,EAAQ,sBAAR,YAAAoC,EAA6B,SAAUpB,EAEzC,MAAI,CAACb,GAAc,CAACoB,EAAwB,GAExC,EAAApB,GAAc,CAACe,GAAiBf,EAAY8B,CAAY,GACxDV,GAAmBK,GAAYL,EAAiBD,CAAY,EAElE,CAEO,SAASe,GAAiBrC,EAAwC,aACjE,MAAAgC,EAAiB,EAAQhC,EAAQ,eACjCG,IAAawB,EAAA3B,EAAQ,oBAAR,YAAA2B,EAA2B,SAAU,GAClDM,IAAeC,EAAAlC,EAAQ,sBAAR,YAAAkC,EAA6B,SAAU,GACtDI,IAAkBH,EAAAnC,EAAQ,kBAAR,YAAAmC,EAAyB,SAAU,GACrDI,IAAsBH,EAAApC,EAAQ,sBAAR,YAAAoC,EAA6B,SAAU,GAE7D,CAACI,EAAOC,CAAQ,EAAIhC,WAAS,IAAMsB,GAAgB/B,CAAO,CAAC,EAEjEU,OAAAA,EAAAA,UAAU,IAAM,CACd,MAAMgC,EAAU,CACd,eAAAV,EACA,kBAAmB7B,EACnB,oBAAqB8B,EACrB,gBAAAK,EACA,oBAAAC,CACF,EACA,GAAI,CAACP,GAAkB,CAAC7B,GAAc,CAACmC,EAAiB,CACtDG,EAAS,EAAI,EACb,MAAA,CAGF,MAAME,EAAQ,IAAMF,EAASV,GAAgBW,CAAO,CAAC,EAC/CC,EAAA,EAEN,MAAMC,EAAsC,CAAC,EACvCC,MAAsB,QACtBC,EAAe,IAAM,CACzB,MAAMC,EAAUR,GAAuBvB,EACnC,GAAA,CACF,SAAS,iBAAiB+B,CAAO,EAAE,QAAStB,GAAS,CACnD,MAAMuB,EAAOvB,EAAK,WAClB,GAAI,CAACuB,GAAQH,EAAgB,IAAIG,CAAI,EAAG,OACxCH,EAAgB,IAAIG,CAAI,EAClB,MAAAC,EAAiB,IAAI,iBAAiBN,CAAK,EACjDM,EAAe,QAAQD,EAAM,CAC3B,UAAW,GACX,QAAS,EAAA,CACV,EACDJ,EAAgB,KAAKK,CAAc,CAAA,CACpC,CAAA,MACK,CAAA,CAGV,EACaH,EAAA,EAEP,MAAAI,EAAW,IAAI,iBAAiB,IAAM,CAC7BJ,EAAA,EACPH,EAAA,CAAA,CACP,EACQO,EAAA,QAAQ,SAAS,gBAAiB,CACzC,UAAW,GACX,QAAS,EAAA,CACV,EAED,MAAMC,EAAW,OAAO,YAAYR,EAAO,GAAG,EAE9C,MAAO,IAAM,CACXO,EAAS,WAAW,EACpBN,EAAgB,QAASQ,GAASA,EAAK,YAAY,EACnD,OAAO,cAAcD,CAAQ,CAC/B,CAAA,EACC,CAACnB,EAAgB7B,EAAY8B,EAAcK,EAAiBC,CAAmB,CAAC,EAE5EC,CACT,CCtIO,SAASa,GAAYC,EAAiD,CACvE,OAACA,EACD,MAAM,QAAQA,CAAM,EACfA,EAAO,IAAKC,GAAUA,EAAM,KAAM,CAAA,EAAE,OAAO,OAAO,EAEpD,OAAOD,CAAM,EACjB,MAAM,GAAG,EACT,IAAKC,GAAUA,EAAM,KAAM,CAAA,EAC3B,OAAO,OAAO,EAPG,CAAC,CAQvB,CCTO,SAASC,EACdC,EACyB,CACrB,GAAA,CAACA,EAAkB,OACnB,GAAAA,aAAqB,WAAY,OAAOA,EAAU,KAChD,MAAAT,EAAOS,EAAU,YAAY,EAC/B,GAAAT,aAAgB,WAAY,OAAOA,EAAK,IAE9C,CAEgB,SAAAU,EACdD,EACAE,EACoB,CACd,MAAAlC,EAAO+B,EAAoBC,CAAS,EAC1C,GAAI,EAAChC,GAAA,MAAAA,EAAM,aAAakC,IAAmB,OACrC,MAAAvC,EAAQK,EAAK,aAAakC,CAAS,EAClC,OAAAvC,GAAgB,MACzB,CAEgB,SAAAwC,GACdC,EACAJ,EACAE,EACS,CACH,MAAAlC,EAAO+B,EAAoBC,CAAS,EACtC,GAAAhC,GAAA,MAAAA,EAAM,aAAakC,GAAY,CAC3B,MAAAG,GAAOrC,EAAK,aAAakC,CAAS,GAAK,IAAI,OAAO,YAAY,EACpE,MAAI,EAAAG,IAAQ,SAAWA,IAAQ,KAAOA,IAAQ,MAAQA,IAAQ,MAGvD,CAEF,OAAAD,IAAS,IAAQA,IAAS,MACnC,CChCA,MAAME,GAAyB,uCACzBC,OAAoB,IAAI,CAAC,GAAI,QAAS,OAAQ,MAAO,QAAQ,CAAC,EAOpD,SAAAC,GACdC,EACAT,EACQ,CACF,MAAAhC,EAAO+B,EAAoBC,CAAS,EACpCK,GACJrC,GAAA,YAAAA,EAAM,aAAa,qBAAsB,GACpCA,EAAK,aAAa,gBAAgB,GAAK,GACxCyC,EAEF,OAAAJ,IAAQ,OAAkBC,GAC1BC,GAAc,IAAI,OAAOF,CAAG,EAAE,OAAO,aAAa,EAAU,GACzD,OAAOA,CAAG,CACnB,CCrBA,SAASK,GAAUf,EAA4C,CAC7D,GAAI,CAACA,GAAQ,OAAOA,GAAS,SAAiB,OAAA,KAC9C,MAAMgB,EAAShB,EACTiB,EAAO,OAAOD,EAAO,MAAQ,EAAE,EAAE,KAAK,EACtCE,EAAQF,EAAO,mBAIrB,MAHI,CAACC,GAAS,OAAOC,GAAU,UAAY,OAAOA,GAAU,UAGxD,OAAOA,CAAK,EAAE,KAAK,IAAM,GAAW,KACjC,CACL,mBAAoBA,EACpB,KAAAD,EACA,SAAU,EAAQD,EAAO,QAC3B,CACF,CAEO,SAASG,GACdnD,EACwB,CACpB,GAAA,CAACA,EAAO,MAAO,CAAC,EAEpB,IAAIoD,EAAmB,CAAC,EACpB,GAAA,MAAM,QAAQpD,CAAK,EACboD,EAAApD,MACH,CACC,MAAAqD,EAAUrD,EAAM,KAAK,EACvB,GAAA,CAACqD,EAAS,MAAO,CAAC,EAClB,GAAA,CACI,MAAAC,EAAkB,KAAK,MAAMD,CAAO,EAC1C,GAAI,CAAC,MAAM,QAAQC,CAAM,QAAU,CAAC,EAC5BF,EAAAE,CAAA,MACF,CACN,MAAO,CAAC,CAAA,CACV,CAGK,OAAAF,EAAM,QAASpB,GAAS,CACvB,MAAAuB,EAAUR,GAAUf,CAAI,EAC9B,OAAOuB,EAAU,CAACA,CAAO,EAAI,CAAC,CAAA,CAC/B,CACH,CAEO,SAASC,EAAwBD,EAAuC,CACtE,OAAA,OAAOA,EAAQ,kBAAkB,CAC1C,CC7BA,SAASE,GAAUC,EAAkC,CAC/C,GAAA,OAAO,SAAa,IAAoB,OACtC,MAAAC,EAAQ,SAAS,OAAO,MAAM,IAAI,OAAO,WAAWD,CAAI,UAAU,CAAC,EACzE,OAAOC,EAAQ,mBAAmBA,EAAM,CAAC,CAAC,EAAI,MAChD,CAEA,eAAsBC,GAAkBhF,EAKtB,OACV,MAAAiF,EAAOJ,GAAU,YAAY,EAC7BK,EAAelF,EAAQ,aACvBmF,GAAiBxD,EAAAuD,GAAA,YAAAA,EAAc,iBAAd,YAAAvD,EAA8B,IAAKyB,IAAU,CAClE,mBAAoBA,EAAK,mBACzB,KAAMA,EAAK,KACX,MAAOA,EAAK,KAAA,IAGRgC,EAAW,MAAM,MACrB,6DAA6DpF,EAAQ,QAAQ,IAAIA,EAAQ,MAAM,GAC/F,CACE,OAAQ,OACR,QAAS,CAAE,eAAgB,kBAAmB,EAC9C,KAAM,KAAK,UAAU,CACnB,OAAQA,EAAQ,OAAO,IAAKqF,IAAW,CACrC,aAAc,MACd,KAAMA,EAAM,KACZ,MAAOA,EAAM,KAAA,EACb,EACF,QAAS,CACP,QAAS,OAAO,SAAS,KACzB,SAAU,SAAS,MACnB,GAAIJ,EAAO,CAAE,KAAAA,GAAS,CAAA,CACxB,EACA,GAAIC,EACA,CACE,oBAAqB,CACnB,QAAS,CACP,iBAAkBA,EAAa,iBAC/B,GAAIA,EAAa,KAAO,CAAE,KAAMA,EAAa,IAAA,EAAS,CAAC,EACvD,GAAIC,GAAA,MAAAA,EAAgB,OAAS,CAAE,eAAAA,GAAmB,CAAA,CAAC,CACrD,CACF,EAEF,CAAA,CACL,CAAA,CAAA,CAEL,EAEI,GAAA,CAACC,EAAS,GAAI,CAChB,IAAIE,EAAS,GACT,GAAA,CACOA,EAAA,MAAMF,EAAS,KAAK,CAAA,MACvB,CACGE,EAAA,EAAA,CAEX,MAAM,IAAI,MAAMA,GAAU,8BAA8BF,EAAS,MAAM,GAAG,CAAA,CAE9E,CCjDA,SAAwBG,GAAW,CACjC,OAAAC,EACA,UAAAC,EACA,aAAAC,EACA,MAAAC,EACA,iBAAAC,EACA,MAAArC,EACA,WAAAsC,EACA,OAAAvC,EACA,qBAAAwC,EACA,iBAAAC,EACA,sBAAAC,EACA,oBAAAC,EACA,iBAAAC,EACA,cAAAhC,EACA,MAAAiC,EACA,WAAAC,EACA,cAAAC,EACA,cAAAC,EACA,yBAAAC,EACA,sBAAAC,EACA,SAAAC,CACF,EAAoB,CAClB,OAEIC,EAAA,KAAAC,WAAA,CAAA,SAAA,CAAAC,MAAC,MAAG,GAAG,wBAAwB,MAAOpB,EAAO,UAC1C,SACHC,EAAA,EACCC,GAAA,MAAAA,EAAc,OACZkB,EAAA,IAAA,IAAA,CAAE,GAAG,2BAA2B,MAAOpB,EAAO,aAC5C,SAAAE,CAAA,CACH,EACE,KAEJgB,EAAAA,KAAC,QAAK,GAAG,kBAAkB,MAAOlB,EAAO,KAAM,SAAAiB,EAAoB,WAAU,GAC3E,SAAA,CAAAG,MAAC,QAAM,CAAA,QAAQ,mBAAmB,UAAU,UAAU,SAEtD,QAAA,EACAA,EAAA,IAAC,QAAA,CACC,GAAG,mBACH,KAAK,QACL,KAAK,QACL,aAAa,QACb,SAAQ,GACR,MAAOjB,EACP,YAAaC,EACb,SAAWiB,GAAUR,EAAcQ,EAAM,OAAO,KAAK,EACrD,MAAOrB,EAAO,WACd,gBAAc,MAAA,CAChB,QAEC,IAAE,CAAA,GAAG,yBAAyB,MAAOA,EAAO,WAC1C,SACHK,EAAA,EACAe,EAAA,IAAC,MAAA,CACC,KAAK,aACL,kBAAgB,yBAChB,gBAAc,OACd,MAAOpB,EAAO,UAEb,SAAAlC,EAAO,IAAKwD,GAAW,CAChB,MAAAC,EAAK,oBAAoBD,EAAO,QAAQ,OAAQ,GAAG,EAAE,aAAa,GACxE,cACG,QAAmB,CAAA,QAASC,EAAI,MAAOvB,EAAO,SAC7C,SAAA,CAAAoB,EAAA,IAAC,QAAA,CACC,GAAAG,EACA,KAAK,QACL,KAAK,mBACL,MAAOD,EACP,QAASvD,IAAUuD,EACnB,SAAU,IAAMR,EAAcQ,CAAM,EACpC,MAAOtB,EAAO,KAAA,CAChB,EACCsB,CAAA,CAAA,EAVSA,CAWZ,CAEH,CAAA,CAAA,CACH,EAEChB,GAAwBE,EAAsB,OAAS,SACrD,MAAI,CAAA,MAAOR,EAAO,YAChB,SAAA,CAAAM,SACE,QAAM,CAAA,QAAQ,6BAA6B,MAAON,EAAO,WACxD,SAAA,CAAAoB,EAAA,IAAC,QAAA,CACC,GAAG,6BACH,KAAK,WACL,QAASb,EACT,SAAQ,GACR,gBAAc,OACd,SAAWc,GAAUN,EAAyBM,EAAM,OAAO,OAAO,EAClE,MAAOrB,EAAO,eAAA,CAChB,SACC,OACE,CAAA,SAAA,CAAAM,QACA,OAAK,CAAA,MAAON,EAAO,gBAAiB,cAAY,OAAO,SAExD,GAAA,CAAA,CAAA,CACF,CAAA,CAAA,CAAA,CACF,EACE,KACHQ,EAAsB,IAAKrB,GAAY,CAChC,MAAAxD,EAAMyD,EAAwBD,CAAO,EACrCoC,EAAK,2BAA2B5F,CAAG,GACzC,cACG,QAAgB,CAAA,QAAS4F,EAAI,MAAOvB,EAAO,WAC1C,SAAA,CAAAoB,EAAA,IAAC,QAAA,CACC,GAAAG,EACA,KAAK,WACL,QAAS,EAAQd,EAAoB9E,CAAG,EACxC,SAAUwD,EAAQ,SAClB,gBAAeA,EAAQ,SAAW,GAAO,OACzC,SAAWkC,GACTL,EAAsBrF,EAAK0F,EAAM,OAAO,OAAO,EAEjD,MAAOrB,EAAO,eAAA,CAChB,SACC,OACE,CAAA,SAAA,CAAQb,EAAA,KACRA,EAAQ,SACPiC,EAAAA,IAAC,OAAK,CAAA,MAAOpB,EAAO,gBAAiB,cAAY,OAAO,SAAA,GAExD,CAAA,EACE,IAAA,CACN,CAAA,CAAA,CAAA,EAnBUrE,CAoBZ,CAEH,CAAA,CAAA,CAAA,CACH,EACE,KAEJyF,EAAA,IAAC,SAAA,CACC,GAAG,oBACH,KAAK,SACL,MAAOpB,EAAO,aACd,SAAUY,EAET,WAAa,cAAgBF,CAAA,CAChC,EAECC,EACES,EAAAA,IAAA,IAAA,CAAE,GAAG,mBAAmB,KAAK,QAAQ,MAAOpB,EAAO,MACjD,SAAAW,CACH,CAAA,EACE,IAAA,EACN,EAECjC,GAAA,MAAAA,EAAe,OACb0C,MAAA,IAAA,CAAE,GAAG,uBAAuB,MAAOpB,EAAO,UACxC,SAAAtB,CACH,CAAA,EACE,IAAA,EACN,CAEJ,CC3KA,SAAwB8C,GAAmB,CACzC,OAAAxB,EACA,kBAAAyB,EACA,oBAAAC,EACA,uBAAAC,EACA,cAAAC,CACF,EAA4B,CAC1B,MAAMC,EAAa,GAAQF,GAAA,MAAAA,EAAwB,QAEnD,OAEIT,EAAA,KAAAC,WAAA,CAAA,SAAA,CAAAC,MAAC,MAAG,GAAG,gCAAgC,MAAOpB,EAAO,kBAClD,SACHyB,EAAA,EACCC,GAAA,MAAAA,EAAqB,OACnBN,EAAA,IAAA,IAAA,CAAE,GAAG,kCAAkC,MAAOpB,EAAO,oBACnD,SAAA0B,CAAA,CACH,EACE,KACHG,EACCT,EAAA,IAAC,SAAA,CACC,GAAG,iCACH,KAAK,SACL,MAAOpB,EAAO,mBACd,QAAS4B,EAER,SAAAD,CAAA,CAAA,EAED,IAAA,EACN,CAEJ,CCxBA,MAAMG,GAAgB,6BAEtB,SAASC,GAAaC,EAA2B,CACxC,MAAA,CAACA,GAAYA,IAAa,MACnC,CAEM,MAAAC,GAAY,CAAC,CACjB,gBAAAC,EACA,cAAAC,EACA,cAAAC,EAAgB,QAChB,cAAAC,EAAgB,QAChB,uBAAAC,EACA,wBAAAC,EACA,qBAAAjC,EACA,sBAAAE,EACA,UAAAP,EACA,aAAAC,EACA,OAAApC,EACA,iBAAA4C,EAAmB,SACnB,iBAAAN,EAAmB,UACnB,WAAAC,EAAa,mBACb,kBAAAoB,EACA,oBAAAC,EACA,uBAAAC,EACA,sBAAAa,EACA,cAAA9D,EACA,gBAAA+D,EACA,aAAAC,EACA,UAAApI,EAAY,UACZ,YAAAqI,EAAc,UACd,gBAAAC,EAAkB,UAClB,iBAAAnI,EAAmB,UACnB,qBAAAC,GAAuB,UACvB,WAAAmI,GACA,kBAAAC,GACA,eAAAtG,GACA,kBAAAuG,EACA,oBAAAC,EACA,gBAAAlG,EACA,oBAAAC,GACA,UAAAkB,CACF,IAAoD,uBAClD,MAAM+B,EAAS9F,GAAa,CAC1B,gBAAAuI,EACA,aAAAC,EACA,UAAApI,EACA,YAAAqI,EACA,gBAAAC,EACA,WAAAC,GACA,kBAAAC,EAAA,CACD,EAEKG,IACJd,GAAA,YAAAA,EAAe,WACfhG,GAAA+B,EAAkBD,EAAW,iBAAiB,IAA9C,YAAA9B,GAAiD,SACjD,GACI+G,IACJhB,GAAA,YAAAA,EAAiB,WACjBxF,GAAAwB,EAAkBD,EAAW,mBAAmB,IAAhD,YAAAvB,GAAmD,SACnD,GAEIyG,GAAyB/E,GAC7B5B,GACAyB,EACA,mBACF,EACMmF,IACJL,GAAA,YAAAA,EAAmB,WACnBpG,GAAAuB,EAAkBD,EAAW,sBAAsB,IAAnD,YAAAtB,GAAsD,SACtD,GACI0G,IACJL,GAAA,YAAAA,EAAqB,WACrBpG,GAAAsB,EAAkBD,EAAW,wBAAwB,IAArD,YAAArB,GAAwD,SACxD,GACI0G,IACJxG,GAAA,YAAAA,EAAiB,WACjByG,GAAArF,EAAkBD,EAAW,mBAAmB,IAAhD,YAAAsF,GAAmD,SACnD,GACIC,IACJzG,IAAA,YAAAA,GAAqB,WACrB0G,GAAAvF,EAAkBD,EAAW,wBAAwB,IAArD,YAAAwF,GAAwD,SACxD,GAEI,CAAE,UAAA1I,GAAW,cAAAI,GAAe,QAAAE,CAAQ,EACxCP,GAAuBmI,EAAc,EACjCS,GAAY7G,GAAiB,CACjC,eAAgBsG,GAChB,kBAAmBC,GACnB,oBAAqBC,GACrB,gBAAiBC,GACjB,oBAAqBE,EAAA,CACtB,EACKG,EAAU5I,IAAa2I,GAEvB,CAACE,GAAMC,EAAO,EAAI5I,EAAAA,SAAkC,MAAM,EAC1D,CAACkF,GAAO2D,EAAQ,EAAI7I,EAAAA,SAAS,EAAE,EAC/B,CAAC8C,GAAOgG,EAAQ,EAAI9I,EAAAA,SAAS,EAAE,EAC/B,CAACsF,GAAkByD,EAAmB,EAAI/I,EAAAA,SAAS,EAAK,EACxD,CAACwF,GAAqBwD,EAAsB,EAAIhJ,EAAAA,SAEpD,CAAA,CAAE,EACE,CAAC2F,GAAYsD,EAAa,EAAIjJ,EAAAA,SAAS,EAAK,EAC5C,CAAC0F,EAAOwD,CAAQ,EAAIlJ,EAAAA,SAAS,EAAE,EAE/BmJ,GAAevG,GAAYC,CAAM,EACjCuG,GAAsB5F,GAAqBC,EAAeT,CAAS,EACnEqG,GAAwBhE,GAAA,YAAAA,EAAsB,SAAU,GACxDiE,EAAuBxF,GAA2ByB,CAAqB,EACvEgE,GACJ,EAAQF,GAA0BC,EAAqB,OAAS,EAElErJ,EAAAA,UAAU,IAAM,CACd,GAAI,CAACyI,EAAS,OACR,MAAAc,EAAmB,SAAS,KAAK,MAAM,SACpC,gBAAA,KAAK,MAAM,SAAW,SACxB,IAAM,CACF,SAAA,KAAK,MAAM,SAAWA,CACjC,CAAA,EACC,CAACd,CAAO,CAAC,EAEZzI,EAAAA,UAAU,IAAM,CACd,GAAI,CAACyI,EAAS,OACR,MAAAe,EAAarD,GAAyB,CACtCA,EAAM,MAAQ,UAAkBhG,EAAA,CACtC,EACO,cAAA,iBAAiB,UAAWqJ,CAAS,EACrC,IAAM,OAAO,oBAAoB,UAAWA,CAAS,CAAA,EAC3D,CAACf,EAAStI,CAAO,CAAC,EAEf,MAAAsJ,GAAe,MAAOtD,GAAsC,CAChEA,EAAM,eAAe,EACf,MAAAuD,EAAezE,GAAM,KAAK,EAEhC,GAAI,CAAC2B,GAAc,KAAK8C,CAAY,EAAG,CACrCT,EAAS,qCAAqC,EAC9C,MAAA,CAEF,GAAI,CAACpG,GAAO,CACVoG,EAAS,wBAAwB,EACjC,MAAA,CAEE,GAAAG,GAAyB,CAAC/D,GAAkB,CAC9C4D,EAAS,oCAAoC,EAC7C,MAAA,CAMF,GAJ6BI,EAAqB,KAC/CpF,GACCA,EAAQ,UAAY,CAACsB,GAAoBrB,EAAwBD,CAAO,CAAC,CAC7E,EAC0B,CACxBgF,EAAS,oDAAoD,EAC7D,MAAA,CAGFA,EAAS,EAAE,EACXD,GAAc,EAAI,EAElB,MAAMW,GAAS,CACb,CAAE,KAAMzC,EAAe,MAAOwC,CAAa,EAC3C,CAAE,KAAMvC,EAAe,MAAOtE,EAAM,CACtC,EACIuE,GAAA,MAAAA,EAAwB,QAAUC,GAA2B,MAC/DsC,GAAO,KAAK,CACV,KAAMvC,EAAuB,KAAK,EAClC,MAAOC,CAAA,CACR,EAGC,GAAA,CACGR,GAAamB,EAAgB,GAChC,MAAM1D,GAAkB,CACtB,SAAU0D,GACV,OAAQD,GACR,OAAA4B,GACA,aAAcL,GACV,CACE,iBAAkB,GAChBF,GAAyB/D,IAE3B,GAAI+D,EACA,CAAE,KAAMA,GACR,CAAC,EACL,GAAIC,EAAqB,OACrB,CACE,eAAgBA,EAAqB,IAAKpF,IAAa,CACrD,mBAAoB,OAAOA,EAAQ,kBAAkB,EACrD,KAAMA,EAAQ,KACd,MAAO,EACLsB,GAAoBrB,EAAwBD,CAAO,CAAC,CACtD,EACA,CAAA,EAEJ,CAAA,CAAC,EAEP,MAAA,CACL,EAEWhE,GAAA,EACd0I,GAAQ,cAAc,CAAA,MAChB,CACNM,EAAS,yCAAyC,CAAA,QAClD,CACAD,GAAc,EAAK,CAAA,CAEvB,EAEMY,GAA0B,IAAM,CACpC,GAAItC,EAAuB,CACzB,OAAO,SAAS,KAAOA,EACvB,MAAA,CAEMnH,EAAA,CACV,EAEI,GAAA,CAACsI,EAAgB,OAAA,KAEf,MAAAoB,GACJnB,KAAS,OAAS,wBAA0B,gCAG5C,OAAA1C,EAAA,KAAC,MAAA,CACC,GAAG,qBACH,MAAOlB,EAAO,QACd,KAAK,SACL,aAAW,OACX,kBAAiB+E,GACjB,QAAU1D,GAAU,CACdA,EAAM,SAAWA,EAAM,eAAiB,CAACT,IAAoBvF,EAAA,CACnE,EAEA,SAAA,CAAA+F,EAAAA,IAAC,SACE,SAAe7G,GAAA,CACd,iBAAAE,EACA,qBAAAC,EACD,CAAA,EACH,EACAwG,EAAAA,KAAC,OAAI,GAAG,kBAAkB,MAAOlB,EAAO,KAAM,KAAK,WACjD,SAAA,CAAAoB,EAAA,IAAC,SAAA,CACC,GAAG,mBACH,KAAK,SACL,MAAOpB,EAAO,YACd,aAAW,QACX,QAAS3E,EAET,SAAA+F,EAAAA,IAAC,OAAI,MAAM,KAAK,OAAO,KAAK,QAAQ,YAAY,cAAY,OAC1D,SAAAA,EAAA,IAAC,OAAA,CACC,EAAE,mBACF,OAAO,eACP,YAAY,MACZ,cAAc,OAAA,CAAA,CAElB,CAAA,CAAA,CACF,EAECwC,KAAS,OACRxC,EAAA,IAACrB,GAAA,CACC,OAAAC,EACA,UAAAC,EACA,aAAAC,EACA,MAAAC,GACA,iBAAAC,EACA,MAAArC,GACA,WAAAsC,EACA,OAAQ+D,GACR,qBAAsBE,GAAyB,OAC/C,iBAAA/D,GACA,sBAAuBgE,EACvB,oBAAA9D,GACA,iBAAAC,EACA,cAAe2D,GACf,MAAA1D,EACA,WAAAC,GACA,cAAekD,GACf,cAAgBlI,GAAU,CACxBmI,GAASnI,CAAK,EACV+E,KAAgB,EAAE,CACxB,EACA,yBAA2B/E,GAAU,CACnCoI,GAAoBpI,CAAK,EACrB+E,KAAgB,EAAE,CACxB,EACA,sBAAuB,CAAChF,EAAKC,IAAU,CACrCqI,GAAwB/G,KAAa,CACnC,GAAGA,GACH,CAACvB,CAAG,EAAGC,CAAA,EACP,EACE+E,KAAgB,EAAE,CACxB,EACA,SAAUgE,EAAA,CAAA,EAGZvD,EAAA,IAACI,GAAA,CACC,OAAAxB,EACA,kBAAAyB,EACA,oBAAAC,EACA,uBAAAC,EACA,cAAemD,EAAA,CAAA,CACjB,CAEJ,CAAA,CAAA,CAAA,CACF,CAEJ,EC5TME,GAAmBC,GAAoBhD,GAAW,CACtD,MAAO,CACL,gBAAiB,SACjB,cAAe,SACf,cAAe,SACf,cAAe,SACf,uBAAwB,SACxB,wBAAyB,SACzB,qBAAsB,SACtB,sBAAuB,SACvB,UAAW,SACX,aAAc,SACd,OAAQ,SACR,iBAAkB,SAClB,iBAAkB,SAClB,WAAY,SACZ,kBAAmB,SACnB,oBAAqB,SACrB,uBAAwB,SACxB,sBAAuB,SACvB,cAAe,SACf,gBAAiB,SACjB,aAAc,SACd,UAAW,SACX,YAAa,SACb,gBAAiB,SACjB,iBAAkB,SAClB,qBAAsB,SACtB,WAAY,SACZ,kBAAmB,SACnB,eAAgB,SAChB,kBAAmB,SACnB,oBAAqB,SACrB,gBAAiB,SACjB,oBAAqB,QACvB,EACA,OAAQ,MACV,CAAC,EAGM,SAASiD,IAAiC,CAC3C,OAAO,eAAmB,KACzB,eAAe,IAAI,YAAY,GACnB,eAAA,OAAO,aAAcF,EAAgB,CAExD,CAEAE,GAAyB,EC/CzBA,GAAyB","x_google_ignoreList":[0,1]}
package/dist/iife.d.ts ADDED
@@ -0,0 +1,2 @@
1
+ export { default as FormPopup } from "./FormPopup/FormPopup";
2
+ export type { FormPopupProps } from "./FormPopup/types";
@@ -0,0 +1,2 @@
1
+ export { default as FormPopup } from "./FormPopup/FormPopup";
2
+ export type { FormPopupProps, CommunicationConsent } from "./FormPopup/types";
@@ -0,0 +1,5 @@
1
+ /**
2
+ * Derives a tiny blurred Cloudinary LQIP URL from a Cloudinary fetch URL.
3
+ * Returns undefined for non-Cloudinary URLs.
4
+ */
5
+ export declare function getCloudinaryPlaceholder(url: string): string | undefined;
@@ -0,0 +1,4 @@
1
+ declare const FormPopupElement: CustomElementConstructor;
2
+ /** Registers `<form-popup>` once. Safe to call multiple times. */
3
+ export declare function registerFormPopupElement(): void;
4
+ export default FormPopupElement;
package/package.json ADDED
@@ -0,0 +1,78 @@
1
+ {
2
+ "name": "@jmeirinkmarimed/form-popup",
3
+ "version": "1.0.0",
4
+ "description": "A React email capture modal with HubSpot submission and web-component support",
5
+ "main": "./dist/form-popup.cjs.js",
6
+ "module": "./dist/form-popup.es.js",
7
+ "unpkg": "./dist/form-popup.min.js",
8
+ "types": "./dist/index.d.ts",
9
+ "exports": {
10
+ ".": {
11
+ "types": "./dist/index.d.ts",
12
+ "import": "./dist/form-popup.es.js",
13
+ "require": "./dist/form-popup.cjs.js"
14
+ },
15
+ "./dist/form-popup.min.js": "./dist/form-popup.min.js"
16
+ },
17
+ "sideEffects": [
18
+ "./dist/form-popup.es.js",
19
+ "./dist/form-popup.cjs.js",
20
+ "./dist/form-popup.umd.js",
21
+ "./dist/form-popup.min.js"
22
+ ],
23
+ "files": [
24
+ "dist",
25
+ "LICENSE",
26
+ "README.md"
27
+ ],
28
+ "private": false,
29
+ "keywords": [
30
+ "react",
31
+ "form",
32
+ "popup",
33
+ "hubspot",
34
+ "modal",
35
+ "web-component"
36
+ ],
37
+ "author": "Jesse Meirink",
38
+ "license": "MIT",
39
+ "repository": {
40
+ "type": "git",
41
+ "url": "https://github.com/marimed-inc/form-popup"
42
+ },
43
+ "scripts": {
44
+ "dev": "bunx --bun vite",
45
+ "clean": "rm -rf dist",
46
+ "build:iife": "VITE_BUILD_FORMAT=iife NODE_ENV=production bunx --bun vite build",
47
+ "build:lib": "VITE_BUILD_FORMAT=lib NODE_ENV=production bunx --bun vite build",
48
+ "build:types": "bunx tsc -p tsconfig.dts.json",
49
+ "build": "bun run clean && bun run build:lib && bun run build:iife && bun run build:types",
50
+ "build:test": "bun run build:lib && bun run build:iife && bun run build:types",
51
+ "examples:serve": "bash examples/serve.sh",
52
+ "lint": "eslint .",
53
+ "preview": "bunx --bun vite preview"
54
+ },
55
+ "dependencies": {
56
+ "@r2wc/react-to-web-component": "1.0.0"
57
+ },
58
+ "peerDependencies": {
59
+ "react": "^17.0.0 || ^18.0.0",
60
+ "react-dom": "^17.0.0 || ^18.0.0"
61
+ },
62
+ "devDependencies": {
63
+ "@eslint/js": "^9.19.0",
64
+ "@types/node": "^22.13.2",
65
+ "@types/react": "^18.0.0",
66
+ "@types/react-dom": "^18.0.0",
67
+ "@vitejs/plugin-react-swc": "^3.5.0",
68
+ "eslint": "^9.19.0",
69
+ "eslint-plugin-react-hooks": "^5.0.0",
70
+ "eslint-plugin-react-refresh": "^0.4.18",
71
+ "globals": "^15.14.0",
72
+ "react": "^18.2.0",
73
+ "react-dom": "^18.2.0",
74
+ "typescript": "~5.7.2",
75
+ "typescript-eslint": "^8.22.0",
76
+ "vite": "^6.1.0"
77
+ }
78
+ }