@tryghost/portal 2.66.8 → 2.66.10

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/umd/portal.min.js CHANGED
@@ -1814,7 +1814,7 @@ html[dir=rtl] .gh-portal-signup-terms .checkbox:before {
1814
1814
  max-width: calc(100% - 54px);
1815
1815
  }
1816
1816
  }
1817
- `,AT=({hide:e=!1,onClose:t})=>e?null:c.jsx(Cd,{className:"gh-portal-notification-closeicon",alt:"Close",onClick:t}),DT=({message:e,site:t})=>{const a=`mailto:${$o({site:t})}`;return e?c.jsx("p",{children:e}):c.jsx("p",{children:c.jsx(Oe,{string:f("An unexpected error occured. Please try again or <a>contact support</a> if the error persists."),mapping:{a:c.jsx("a",{href:a,onClick:()=>{a&&window.open(a)}})}})})},gm=class gm extends Z.Component{constructor(){super(),this.state={className:""}}onAnimationEnd(t){const{popupNotification:n}=this.context,{type:a}=n||{};(t.animationName==="notification-slideout"||t.animationName==="notification-slideout-mobile")&&(a==="stripe:billing-update"&&$d(["stripe"]),this.context.doAction("clearPopupNotification"))}closeNotification(){this.context.doAction("clearPopupNotification")}componentDidUpdate(){const{popupNotification:t}=this.context;t.count!==this.state.notificationCount&&(clearTimeout(this.timeoutId),this.handlePopupNotification({popupNotification:t}))}handlePopupNotification({popupNotification:t}){if(this.setState({notificationCount:t.count}),t.autoHide){const{duration:n=2600}=t;this.timeoutId=setTimeout(()=>{this.setState(a=>a.className!=="slideout"?{className:"slideout",notificationCount:t.count}:{})},n)}}componentDidMount(){const{popupNotification:t}=this.context;this.handlePopupNotification({popupNotification:t})}componentWillUnmount(){clearTimeout(this.timeoutId)}render(){const{popupNotification:t,site:n}=this.context,{className:a}=this.state,{type:i,status:o,closeable:r,message:s}=t,l=o?` ${o}`:"",u=a?` ${a}`:"";return c.jsxs("div",{className:`gh-portal-notification gh-portal-popupnotification ${l}${u}`,onAnimationEnd:m=>this.onAnimationEnd(m),children:[o==="error"?c.jsx(jd,{className:"gh-portal-notification-icon error",alt:""}):c.jsx(wb,{className:"gh-portal-notification-icon success",alt:""}),c.jsx(DT,{type:i,status:o,message:s,site:n}),c.jsx(AT,{hide:!r,onClose:m=>this.closeNotification(m)})]})}};gm.contextType=_;let Zd=gm;const MT=()=>`
1817
+ `,AT=({hide:e=!1,onClose:t})=>e?null:c.jsx(Cd,{className:"gh-portal-notification-closeicon",alt:"Close",onClick:t}),DT=({message:e,site:t})=>{const a=`mailto:${$o({site:t})}`;return e?c.jsx("p",{children:e}):c.jsx("p",{children:c.jsx(Oe,{string:f("An unexpected error occured. Please try again or <a>contact support</a> if the error persists."),mapping:{a:c.jsx("a",{href:a,onClick:()=>{a&&window.open(a)}})}})})},gm=class gm extends Z.Component{constructor(){super(),this.state={className:""}}onAnimationEnd(t){const{popupNotification:n}=this.context,{type:a}=n||{};(t.animationName==="notification-slideout"||t.animationName==="notification-slideout-mobile")&&(a==="stripe:billing-update"&&$d(["stripe"]),this.context.doAction("clearPopupNotification"))}closeNotification(){this.context.doAction("clearPopupNotification")}componentDidUpdate(){const{popupNotification:t}=this.context;t.count!==this.state.notificationCount&&(clearTimeout(this.timeoutId),this.handlePopupNotification({popupNotification:t}))}handlePopupNotification({popupNotification:t}){if(this.setState({notificationCount:t.count}),t.autoHide){const{duration:n=2600}=t;this.timeoutId=setTimeout(()=>{this.setState(a=>a.className!=="slideout"?{className:"slideout",notificationCount:t.count}:{})},n)}}componentDidMount(){const{popupNotification:t}=this.context;this.handlePopupNotification({popupNotification:t})}componentWillUnmount(){clearTimeout(this.timeoutId)}render(){const{popupNotification:t,site:n}=this.context,{className:a}=this.state,{type:i,status:o,closeable:r,message:s}=t,l=o?` ${o}`:"",u=a?` ${a}`:"";return c.jsxs("div",{className:`gh-portal-notification gh-portal-popupnotification ${l}${u}`,"data-testid":o?`popup-notification-${o}`:"popup-notification",onAnimationEnd:m=>this.onAnimationEnd(m),children:[o==="error"?c.jsx(jd,{className:"gh-portal-notification-icon error",alt:""}):c.jsx(wb,{className:"gh-portal-notification-icon success",alt:""}),c.jsx(DT,{type:i,status:o,message:s,site:n}),c.jsx(AT,{hide:!r,onClose:m=>this.closeNotification(m)})]})}};gm.contextType=_;let Zd=gm;const MT=()=>`
1818
1818
  .gh-portal-offer {
1819
1819
  padding-bottom: 0;
1820
1820
  overflow: unset;
@@ -1951,7 +1951,7 @@ html[dir="rtl"] .gh-portal-offer-title h4 {
1951
1951
  .gh-portal-offer .gh-portal-signup-terms.gh-portal-error {
1952
1952
  margin: 0;
1953
1953
  }
1954
- `,ym=class ym extends Z.Component{constructor(t,n){var a,i;super(t,n),this.state={name:((a=n==null?void 0:n.member)==null?void 0:a.name)||"",email:((i=n==null?void 0:n.member)==null?void 0:i.email)||"",plan:"free",showNewsletterSelection:!1,termsCheckboxChecked:!1}}getFormErrors(t){const a=this.context.site.portal_signup_checkbox_required&&this.context.site.portal_signup_terms_html&&!t.termsCheckboxChecked;return{...Gs({fields:this.getInputFields({state:t})}),checkbox:a}}getInputFields({state:t,fieldNames:n}){const{portal_name:a}=this.context.site,{member:i}=this.context,o=t.errors||{},r=[{type:"email",value:(i==null?void 0:i.email)||t.email,placeholder:f("jamie@example.com"),label:f("Email"),name:"email",disabled:!!i,required:!0,tabIndex:2,errorMessage:o.email||""}];let s=!!a;return i&&!(i!=null&&i.name)&&(s=!1),s&&r.unshift({type:"text",value:(i==null?void 0:i.name)||t.name,placeholder:f("Jamie Larson"),label:f("Name"),name:"name",disabled:!!i,required:!0,tabIndex:1,errorMessage:o.name||""}),r[0].autoFocus=!0,n&&n.length>0?r.filter(l=>n.includes(l.name)):r}renderSignupTerms(){var s;const{site:t}=this.context;if(t.portal_signup_terms_html===null||t.portal_signup_terms_html==="")return null;const n=l=>{this.setState({termsCheckboxChecked:l.target.checked})},a=c.jsx("div",{className:"gh-portal-signup-terms-content",dangerouslySetInnerHTML:{__html:ak(t.portal_signup_terms_html)}}),i=t.portal_signup_checkbox_required?c.jsxs("label",{children:[c.jsx("input",{type:"checkbox",checked:!!this.state.termsCheckboxChecked,required:!0,onChange:n}),c.jsx("span",{className:"checkbox"}),a]}):a,r=`gh-portal-signup-terms ${(s=this.state.errors)!=null&&s.checkbox?"gh-portal-error":""}`;return c.jsx("div",{className:r,onClick:Hb,children:i})}onKeyDown(t){t.keyCode===13&&this.handleSignup(t)}handleSignup(t){t.preventDefault();const{pageData:n,site:a}=this.context;if(!n||!n.tier)return null;const i=Qn({site:a,productId:n.tier.id}),o=n.cadence==="month"?i.monthlyPrice:i.yearlyPrice;this.setState(r=>({errors:this.getFormErrors(r)}),()=>{const{doAction:r}=this.context,{name:s,email:l,phonenumber:u,errors:m}=this.state;if(!(m&&Object.values(m).filter(d=>!!d).length>0)){const d={name:s,email:l,plan:o==null?void 0:o.id,offerId:n==null?void 0:n.id,phonenumber:u};jo({site:a})?this.setState({showNewsletterSelection:!0,pageData:d,errors:{}}):(r("signup",d),this.setState({errors:{}}))}})}handleInputChange(t,n){const a=n.name,i=t.target.value;this.setState({[a]:i})}renderSiteLogo(){const{site:t}=this.context,n=t.icon;return n?c.jsx("img",{className:"gh-portal-signup-logo",src:n,alt:t.title}):null}renderFormHeader(){const{site:t}=this.context,n=t.title||"";return c.jsxs("header",{className:"gh-portal-signup-header",children:[this.renderSiteLogo(),c.jsx("h2",{className:"gh-portal-main-title",children:n})]})}renderForm(){const t=this.getInputFields({state:this.state});return this.state.showNewsletterSelection?c.jsx(Rd,{pageData:this.state.pageData,onBack:()=>{this.setState({showNewsletterSelection:!1})}}):c.jsx("section",{children:c.jsx("div",{className:"gh-portal-section",children:c.jsx(Ws,{fields:t,onChange:(n,a)=>this.handleInputChange(n,a),onKeyDown:n=>this.onKeyDown(n)})})})}renderSubmitButton(){const{action:t,brandColor:n}=this.context,{pageData:a}=this.context;let i=f("Continue");a.type==="trial"&&(i=f("Start {amount}-day free trial",{amount:a.amount}));let o=!1;t==="signup:running"&&(i=f("Sending..."),o=!0);let r=!1;t==="signup:failed"&&(i=f("Retry"),r=!0);const s=t==="signup:running";return c.jsx(fe,{style:{width:"100%"},retry:r,onClick:l=>this.handleSignup(l),disabled:s,brandColor:n,label:i,isRunning:o,tabIndex:3,classes:"sticky bottom"})}renderLoginMessage(){const{member:t}=this.context;if(t)return null;const{brandColor:n,doAction:a}=this.context;return c.jsxs("div",{className:"gh-portal-signup-message",children:[c.jsx("div",{children:f("Already a member?")}),c.jsx("button",{className:"gh-portal-btn gh-portal-btn-link",style:{color:n},onClick:()=>a("switchPage",{page:"signin"}),children:c.jsx("span",{children:f("Sign in")})})]})}renderOfferTag(){const{pageData:t}=this.context;return t.amount<=0?c.jsx(c.Fragment,{}):t.type==="fixed"?c.jsx("h5",{className:"gh-portal-discount-label",children:f("{amount} off",{amount:`${ve(t.currency)}${t.amount/100}`})}):t.type==="trial"?c.jsx("h5",{className:"gh-portal-discount-label",children:f("{amount} days free",{amount:t.amount})}):c.jsx("h5",{className:"gh-portal-discount-label",children:f("{amount} off",{amount:t.amount+"%"})})}renderBenefits({product:t}){const n=t.benefits||[];if(!(n!=null&&n.length))return;const a=n.map((i,o)=>c.jsxs("div",{className:"gh-portal-product-benefit",children:[c.jsx(Eb,{className:"gh-portal-benefit-checkmark"}),c.jsx("div",{className:"gh-portal-benefit-title",children:i.name})]},`${i.name}-${o}`));return c.jsx("div",{className:"gh-portal-product-benefits",children:a})}getOriginalPrice({offer:t,product:n}){const a=t.cadence==="month"?n.monthlyPrice:n.yearlyPrice,i=this.renderRoundedPrice(a.amount/100);return`${ve(a.currency)}${i}/${Ja(t.cadence)}`}renderRoundedPrice(t){if(t%1!==0){const n=Math.round(t*100)/100;return Number(n).toFixed(2)}return t}getOffAmount({offer:t}){return t.type==="fixed"?`${ve(t.currency)}${t.amount/100}`:t.type==="percent"?`${t.amount}%`:t.type==="trial"?t.amount:""}renderOfferMessage({offer:t,product:n}){const a={forever:f("{amount} off forever.",{amount:this.getOffAmount({offer:t})}),firstPeriod:f("{amount} off for first {period}.",{amount:this.getOffAmount({offer:t}),period:Ja(t.cadence)}),firstNMonths:f("{amount} off for first {number} months.",{amount:this.getOffAmount({offer:t}),number:t.duration_in_months||""})},i=this.getOriginalPrice({offer:t,product:n}),o=f("Renews at {price}.",{price:i,interpolation:{escapeValue:!1}});let r="",s=!1;const l=t.duration;return l==="once"?(r=a.firstPeriod,s=!0):l==="forever"?r=a.forever:l==="repeating"&&((t.duration_in_months||"")===1?r=a.firstPeriod:r=a.firstNMonths,s=!0),l==="trial"?c.jsxs("p",{className:"footnote",children:[f("Try free for {amount} days, then {originalPrice}.",{amount:t.amount,originalPrice:i,interpolation:{escapeValue:!1}})," ",c.jsx("span",{className:"gh-portal-cancel",children:f("Cancel anytime.")})]}):c.jsxs("p",{className:"footnote",children:[r," ",s?o:""]})}renderProductLabel({product:t,offer:n}){const{site:a}=this.context;return Ds({site:a})?c.jsxs("h4",{className:"gh-portal-plan-name",children:[t.name," - ",n.cadence==="month"?f("Monthly"):f("Yearly")]}):c.jsx("h4",{className:"gh-portal-plan-name",children:n.cadence==="month"?f("Monthly"):f("Yearly")})}renderUpdatedTierPrice({offer:t,currencyClass:n,updatedPrice:a,price:i}){return t.type==="trial"?c.jsx("div",{className:"gh-portal-product-card-pricecontainer offer-type-trial",children:c.jsxs("div",{className:"gh-portal-product-price",children:[c.jsx("span",{className:"currency-sign "+n,children:ve(i.currency)}),c.jsx("span",{className:"amount",children:qa(this.renderRoundedPrice(a))})]})}):c.jsx("div",{className:"gh-portal-product-card-pricecontainer",children:c.jsxs("div",{className:"gh-portal-product-price",children:[c.jsx("span",{className:"currency-sign "+n,children:ve(i.currency)}),c.jsx("span",{className:"amount",children:qa(this.renderRoundedPrice(a))})]})})}renderOldTierPrice({offer:t,price:n}){return t.type==="trial"?null:c.jsxs("div",{className:"gh-portal-offer-oldprice",children:[ve(n.currency)," ",qa(n.amount/100)]})}renderProductCard({product:t,offer:n,currencyClass:a,updatedPrice:i,price:o,benefits:r}){return this.state.showNewsletterSelection?null:c.jsxs(c.Fragment,{children:[c.jsx("div",{className:"gh-portal-product-card top",children:c.jsxs("div",{className:"gh-portal-product-card-header",children:[c.jsxs("h4",{className:"gh-portal-product-name",children:[t.name," - ",n.cadence==="month"?f("Monthly"):f("Yearly")]}),this.renderOldTierPrice({offer:n,price:o}),this.renderUpdatedTierPrice({offer:n,currencyClass:a,updatedPrice:i,price:o}),this.renderOfferMessage({offer:n,product:t,price:o})]})}),c.jsxs("div",{children:[c.jsx("div",{className:"gh-portal-product-card bottom",children:c.jsxs("div",{className:"gh-portal-product-card-detaildata",children:[t.description?c.jsx("div",{className:"gh-portal-product-description",children:t.description}):"",r.length?this.renderBenefits({product:t}):""]})}),c.jsxs("div",{className:"gh-portal-btn-container sticky m32",children:[c.jsx("div",{className:"gh-portal-signup-terms-wrapper",children:this.renderSignupTerms()}),this.renderSubmitButton()]}),this.renderLoginMessage()]})]})}render(){const{pageData:t,site:n}=this.context;if(!t||!t.tier)return null;const a=Qn({site:n,productId:t.tier.id});if(!a)return null;const i=t.cadence==="month"?a.monthlyPrice:a.yearlyPrice,o=gb({offer:t,price:i}),r=a.benefits||[],s=ve(i.currency).length>1?"long":"";return c.jsx(c.Fragment,{children:c.jsxs("div",{className:"gh-portal-content gh-portal-offer",children:[c.jsx(we,{}),this.renderFormHeader(),c.jsxs("div",{className:"gh-portal-offer-bar",children:[c.jsxs("div",{className:"gh-portal-offer-title",children:[t.display_title?c.jsx("h4",{children:t.display_title}):c.jsx("h4",{className:"placeholder",children:f("Black Friday")}),this.renderOfferTag()]}),t.display_description?c.jsx("p",{children:t.display_description}):""]}),this.renderForm(),this.renderProductCard({product:a,offer:t,currencyClass:s,updatedPrice:o,price:i,benefits:r})]})})}};ym.contextType=_;let Qd=ym;const sk=e=>w.createElement("svg",{xmlns:"http://www.w3.org/2000/svg",fill:"none",viewBox:"0 0 48 48",...e},w.createElement("path",{stroke:"currentColor",strokeLinecap:"round",strokeLinejoin:"round",strokeWidth:3,d:"M42 26.572h-6.2A3.43 3.43 0 0 0 33.024 28l-8.31 12.771a2.92 2.92 0 0 1-3.587.967 2.875 2.875 0 0 1-1.609-3.366l1.5-5.656a3.36 3.36 0 0 0-1.788-3.895 3.438 3.438 0 0 0-1.5-.348H9.397a3.388 3.388 0 0 1-3.251-4.367v-.02l3.24-10.815v-.029c1.32-4.248 3.585-7.146 8.044-7.146 10.682 0 10.072-1.231 22.544 5.073.679.338 1.354.682 2.027 1.03v18.1"})),lk=e=>w.createElement("svg",{xmlns:"http://www.w3.org/2000/svg",fill:"none",viewBox:"0 0 48 48",...e},w.createElement("path",{stroke:"currentColor",strokeLinecap:"round",strokeLinejoin:"round",strokeWidth:3,d:"M6.002 21.429H12.2a3.432 3.432 0 0 0 2.777-1.43L23.29 7.23a2.916 2.916 0 0 1 3.586-.967A2.876 2.876 0 0 1 28.48 9.63l-1.497 5.652a3.36 3.36 0 0 0 1.787 3.897c.466.229.98.347 1.498.35h8.334a3.39 3.39 0 0 1 3.253 4.366v.02l-3.24 10.815v.027c-1.32 4.248-3.588 7.146-8.047 7.146-10.68 0-10.067 1.231-22.544-5.073-.675-.338-1.35-.684-2.025-1.026V18.002"})),OT=e=>w.createElement("svg",{width:96,height:56,viewBox:"0 0 96 56",fill:"none",xmlns:"http://www.w3.org/2000/svg",...e},w.createElement("path",{d:"M9.00004 34.973C9.66499 35.3085 10.3322 35.6418 11.0017 35.9729C23.3405 42.0995 22.7366 40.9062 33.3011 40.9062C37.7115 40.9062 39.954 38.0862 41.2567 33.9563V33.9296L44.4627 23.4164V23.3964C44.6151 22.9038 44.6477 22.3828 44.5578 21.8756C44.4679 21.3683 44.2581 20.8888 43.9453 20.4757C43.6324 20.0626 43.2253 19.7275 42.7565 19.4972C42.2878 19.2669 41.7706 19.1479 41.2466 19.1498H33.0026C32.489 19.1484 31.9825 19.0325 31.5211 18.8108C31.0598 18.5891 30.6558 18.2673 30.3394 17.8698C30.025 17.4718 29.8084 17.0078 29.7066 16.5141C29.6048 16.0203 29.6205 15.51 29.7525 15.0232L31.235 9.5266C31.3503 9.09972 31.3609 8.65208 31.2659 8.2204C31.171 7.78873 30.9732 7.38533 30.6888 7.0433C30.4078 6.70494 30.0511 6.43489 29.6465 6.2542C29.2418 6.07351 28.8002 5.98706 28.3559 6.00157C27.9117 6.01609 27.4769 6.13118 27.0854 6.33789C26.6938 6.5446 26.3562 6.83734 26.0987 7.19329L17.8784 19.6098C17.5652 20.0388 17.1527 20.3885 16.6749 20.6301C16.1971 20.8718 15.6678 20.9985 15.1304 20.9998H9.00004M9 17.6666L9 40.9997",stroke:"black",strokeWidth:2.85,strokeLinecap:"round",strokeLinejoin:"round"}),w.createElement("path",{d:"M86.2148 20.027C85.5499 19.6915 84.8826 19.3582 84.2132 19.0271C71.8743 12.9005 72.4782 14.0938 61.9137 14.0938C57.5034 14.0938 55.2609 16.9138 53.9581 21.0437V21.0704L50.7521 31.5836V31.6036C50.5997 32.0962 50.5672 32.6172 50.657 33.1244C50.7469 33.6317 50.9567 34.1112 51.2695 34.5243C51.5824 34.9374 51.9896 35.2725 52.4583 35.5028C52.927 35.7331 53.4442 35.8521 53.9683 35.8502H62.2123C62.7258 35.8516 63.2324 35.9675 63.6937 36.1892C64.155 36.4109 64.5591 36.7327 64.8754 37.1302C65.1899 37.5282 65.4064 37.9922 65.5082 38.4859C65.61 38.9797 65.5943 39.49 65.4624 39.9768L63.9798 45.4734C63.8646 45.9003 63.854 46.3479 63.9489 46.7796C64.0439 47.2113 64.2416 47.6147 64.526 47.9567C64.807 48.2951 65.1637 48.5651 65.5684 48.7458C65.973 48.9265 66.4147 49.0129 66.8589 48.9984C67.3031 48.9839 67.7379 48.8688 68.1295 48.6621C68.521 48.4554 68.8587 48.1627 69.1162 47.8067L77.3364 35.3902C77.6497 34.9612 78.0622 34.6115 78.5399 34.3699C79.0177 34.1282 79.547 34.0015 80.0844 34.0002H86.2148M86.2148 37.3334V14.0003",stroke:"black",strokeWidth:2.85,strokeLinecap:"round",strokeLinejoin:"round"}));function Zs({siteUrl:e=window.location.origin,apiUrl:t,apiKey:n}){const a="members/api";function i({type:l,resource:u}){return`${e.replace(/\/$/,"")}/${a}/${u}/`}function o({resource:l,params:u={}}){if(t&&n){const m=new URLSearchParams({...u,key:n});return`${t.replace(/\/$/,"")}/${l}/?${m.toString()}`}return""}function r({url:l,method:u="GET",headers:m={},credentials:p=void 0,body:d=void 0}){return fetch(l,{method:u,headers:m,credentials:p,body:d})}const s={};return s.site={read(){const l=i({type:"members",resource:"site"});return r({url:l,method:"GET",headers:{"Content-Type":"application/json"}}).then(function(u){if(u.ok)return u.json();throw new Error("Failed to fetch site data")})},newsletters(){const l=o({resource:"newsletters",params:{limit:100}});return r({url:l,method:"GET",headers:{"Content-Type":"application/json"}}).then(function(u){if(u.ok)return u.json();throw new Error("Failed to fetch site data")})},tiers(){const l=o({resource:"tiers",params:{limit:100,include:"monthly_price,yearly_price,benefits"}});return r({url:l,method:"GET",headers:{"Content-Type":"application/json"}}).then(function(u){if(u.ok)return u.json();throw new Error("Failed to fetch site data")})},settings(){const l=o({resource:"settings"});return r({url:l,method:"GET",headers:{"Content-Type":"application/json"}}).then(function(u){if(u.ok)return u.json();throw new Error("Failed to fetch site data")})},offer({offerId:l}){const u=o({resource:`offers/${l}`});return r({url:u,method:"GET",headers:{"Content-Type":"application/json"}}).then(function(m){if(m.ok)return m.json();throw new Error("Failed to fetch offer data")})},recommendations({limit:l=100}={limit:100}){const u=o({resource:"recommendations",params:{limit:l}});return r({url:u,method:"GET",headers:{"Content-Type":"application/json"}}).then(function(m){if(m.ok)return m.json();throw new Error("Failed to fetch recommendations")})}},s.feedback={async add({uuid:l,key:u,postId:m,score:p}){let d=i({type:"members",resource:"feedback"});l&&u&&(d=d+`?uuid=${l}&key=${u}`);const b=await r({url:d,method:"POST",headers:{"Content-Type":"application/json"},credentials:"same-origin",body:JSON.stringify({feedback:[{post_id:m,score:p}]})});if(b.ok)return b.json();throw await Zt.fromApiResponse(b)??new Error("Failed to save feedback")}},s.recommendations={trackClicked({recommendationId:l}){let u=i({type:"members",resource:"recommendations/"+l+"/clicked"});navigator.sendBeacon(u)},trackSubscribed({recommendationId:l}){let u=i({type:"members",resource:"recommendations/"+l+"/subscribed"});navigator.sendBeacon(u)}},s.member={identity(){const l=i({type:"members",resource:"session"});return r({url:l,credentials:"same-origin"}).then(function(u){return!u.ok||u.status===204?null:u.text()})},sessionData(){const l=i({type:"members",resource:"member"});return r({url:l,credentials:"same-origin"}).then(function(u){return!u.ok||u.status===204?null:u.json()})},update({name:l,subscribed:u,newsletters:m,enableCommentNotifications:p}){const d=i({type:"members",resource:"member"}),h={name:l,subscribed:u,newsletters:m};return p!==void 0&&(h.enable_comment_notifications=p),r({url:d,method:"PUT",headers:{"Content-Type":"application/json"},credentials:"same-origin",body:JSON.stringify(h)}).then(function(b){return b.ok?b.json():null})},deleteSuppression(){const l=i({type:"members",resource:"member/suppression"});return r({url:l,method:"DELETE"}).then(function(u){if(!u.ok)throw new Error("Your email has failed to resubscribe, please try again");return!0})},async getIntegrityToken(){const l=i({type:"members",resource:"integrity-token"}),u=await r({url:l,method:"GET"});if(u.ok)return u.text();{const m=await Zt.fromApiResponse(u);throw m||new Error("Failed to start a members session")}},async sendMagicLink({email:l,emailType:u,labels:m,name:p,oldEmail:d,newsletters:h,redirect:b,integrityToken:v,phonenumber:g,customUrlHistory:y,token:k,autoRedirect:x=!0,includeOTC:E}){const z=i({type:"members",resource:"send-magic-link"}),C={name:p,email:l,newsletters:h,oldEmail:d,emailType:u,labels:m,requestSrc:"portal",redirect:b,integrityToken:v,honeypot:g,token:k,autoRedirect:x,includeOTC:E},N=y??To();N&&(C.urlHistory=N);const I=await r({url:z,method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify(C)});if(I.ok){if((I.headers.get("content-type")||"").toLowerCase().includes("application/json"))try{return await I.json()}catch{}return{}}else{const $=await Zt.fromApiResponse(I);throw $||new Error("Failed to send magic link email")}},async verifyOTC({otc:l,otcRef:u,redirect:m,integrityToken:p}){const d=i({type:"members",resource:"verify-otc"}),b=await r({url:d,method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({otc:l,otcRef:u,redirect:m,integrityToken:p})});if(b.ok)return await b.json();{const v=await Zt.fromApiResponse(b);throw v||new Error("Failed to verify code")}},signout(l=!1){const u=i({type:"members",resource:"session"});return r({url:u,method:"DELETE",headers:{"Content-Type":"application/json"},body:JSON.stringify({all:l})}).then(function(m){if(m.ok)return window.location.replace(e),"Success";throw new Error("Failed to signout")})},async newsletters({uuid:l,key:u}){let m=i({type:"members",resource:"member/newsletters"});return m=m+`?uuid=${l}&key=${u}`,r({url:m,credentials:"same-origin"}).then(function(p){return!p.ok||p.status===204?null:p.json()})},async updateNewsletters({uuid:l,newsletters:u,key:m,enableCommentNotifications:p}){let d=i({type:"members",resource:"member/newsletters"});d=d+`?uuid=${l}&key=${m}`;const h={newsletters:u};return p!==void 0&&(h.enable_comment_notifications=p),r({url:d,method:"PUT",headers:{"Content-Type":"application/json"},body:JSON.stringify(h)}).then(function(b){if(b.ok)return b.json();throw new Error("Failed to update email preferences")})},async updateEmailAddress({email:l}){const u=await s.member.identity(),m=i({type:"members",resource:"member/email"});return r({url:m,method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({email:l,identity:u})}).then(async function(d){var h,b;if(d.ok)return"Success";{const v=await d.json(),g=((b=(h=v==null?void 0:v.errors)==null?void 0:h[0])==null?void 0:b.message)||"Failed to send email address verification email";throw new Error(g)}})},async checkoutPlan({plan:l,tierId:u,cadence:m,cancelUrl:p,successUrl:d,email:h,name:b,offerId:v,newsletters:g,metadata:y={}}={}){var N,I;const k=new URL(e),x=await s.member.identity(),E=i({type:"members",resource:"create-stripe-checkout-session"});if(!p){const $=window.location.href.startsWith(k.href)?new URL(window.location.href):new URL(e);$.searchParams.set("stripe","cancel"),p=$.href}const z={name:b,newsletters:JSON.stringify(g),requestSrc:"portal",fp_tid:(I=(N=window.FPROM||window.$FPROM)==null?void 0:N.data)==null?void 0:I.tid,urlHistory:To(),...y},C={priceId:v?null:l,offerId:v,identity:x,metadata:z,successUrl:d,cancelUrl:p};return h&&(C.customerEmail=h),u&&m&&(delete C.priceId,C.tierId=v?null:u,C.cadence=v?null:m),r({url:E,method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify(C)}).then(async function($){var V,q;if(!$.ok){const ce=await $.json(),ae=((q=(V=ce==null?void 0:ce.errors)==null?void 0:V[0])==null?void 0:q.message)||"Failed to signup, please try again.";throw new Error(ae)}return $.json()}).then(function($){return $.url?window.location.assign($.url):window.Stripe($.publicKey).redirectToCheckout({sessionId:$.sessionId}).then(function(q){if(q.error)throw new Error(q.error.message)})})},async checkoutDonation({successUrl:l,cancelUrl:u,metadata:m={},personalNote:p=""}={}){var k,x,E;const d=await s.member.identity(),h=i({type:"members",resource:"create-stripe-checkout-session"}),b={fp_tid:(x=(k=window.FPROM||window.$FPROM)==null?void 0:k.data)==null?void 0:x.tid,urlHistory:To(),...m},g=await r({url:h,method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({identity:d,metadata:b,successUrl:l,cancelUrl:u,type:"donation",personalNote:p})}),y=await g.json();if(!g.ok){const z=(E=y==null?void 0:y.errors)==null?void 0:E[0];throw z||new Error("We're unable to process your payment right now. Please try again later.")}return y},async editBilling({successUrl:l,cancelUrl:u,subscriptionId:m}={}){const p=new URL(e),d=await s.member.identity(),h=i({type:"members",resource:"create-stripe-update-session"});if(!l){const b=new URL(e);b.searchParams.set("stripe","billing-update-success"),l=b.href}if(!u){const b=window.location.href.startsWith(p.href)?new URL(window.location.href):new URL(e);b.searchParams.set("stripe","billing-update-cancel"),u=b.href}return r({url:h,method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({identity:d,subscription_id:m,successUrl:l,cancelUrl:u})}).then(function(b){if(!b.ok)throw new Error("Unable to create stripe checkout session");return b.json()}).then(function(b){return window.Stripe(b.publicKey).redirectToCheckout({sessionId:b.sessionId})}).then(function(b){if(b.error)throw new Error(b.error.message)}).catch(function(b){throw b})},async manageBilling({returnUrl:l,subscriptionId:u}={}){const m=await s.member.identity(),p=i({type:"members",resource:"create-stripe-billing-portal-session"});if(!l){const d=new URL(e);d.searchParams.set("stripe","billing-portal-closed"),l=d.href}return r({url:p,method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({identity:m,subscription_id:u,returnUrl:l})}).then(function(d){if(!d.ok)throw new Error("Unable to create Stripe billing portal session");return d.json()}).then(function(d){return window.location.assign(d.url)}).catch(function(d){throw d})},async updateSubscription({subscriptionId:l,tierId:u,cadence:m,planId:p,smartCancel:d,cancelAtPeriodEnd:h,cancellationReason:b}){const v=await s.member.identity(),g=i({type:"members",resource:"subscriptions"})+l+"/",y={smart_cancel:d,cancel_at_period_end:h,cancellation_reason:b,identity:v,priceId:p};return u&&m&&(delete y.priceId,y.tierId=u,y.cadence=m),r({url:g,method:"PUT",headers:{"Content-Type":"application/json"},body:JSON.stringify(y)})},async offers(){const l=await s.member.identity(),u=i({type:"members",resource:"member/offers"});return r({url:u,method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({identity:l})}).then(function(m){return m.ok?m.json():{offers:[]}}).catch(function(){return{offers:[]}})},async applyOffer({offerId:l,subscriptionId:u}){const m=await s.member.identity(),p=i({type:"members",resource:`subscriptions/${u}/apply-offer`}),d=await r({url:p,method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({identity:m,offer_id:l})});if(!d.ok){const h=await d.text();throw new Error(h||"Failed to apply offer")}return!0}},s.init=async()=>{let[l]=await Promise.all([s.member.sessionData()]),u={},m=[],p=[],d={},h=[];try{[{settings:d},{tiers:p},{newsletters:m}]=await Promise.all([s.site.settings(),s.site.tiers(),s.site.newsletters()]),u={...d,newsletters:m,tiers:_$({tiers:p})}}catch{}if(l&&l.paid)try{h=(await s.member.offers()).offers||[]}catch(b){console.warn("[Portal] Failed to load member offers:",b)}return u=w$({site:u}),{site:u,member:l,offers:h}},s}class Fo extends Z.Component{render(){return c.jsx("div",{style:{display:"flex",flexDirection:"column",color:"#313131"},children:c.jsx("div",{style:{paddingLeft:"16px",paddingRight:"16px",paddingTop:"12px",height:"50px"},children:c.jsx(Za,{className:"gh-portal-loadingicon dark","data-testid":"loaderIcon"})})})}}const FT=`
1954
+ `,ym=class ym extends Z.Component{constructor(t,n){var a,i;super(t,n),this.state={name:((a=n==null?void 0:n.member)==null?void 0:a.name)||"",email:((i=n==null?void 0:n.member)==null?void 0:i.email)||"",plan:"free",showNewsletterSelection:!1,termsCheckboxChecked:!1}}getFormErrors(t){const a=this.context.site.portal_signup_checkbox_required&&this.context.site.portal_signup_terms_html&&!t.termsCheckboxChecked;return{...Gs({fields:this.getInputFields({state:t})}),checkbox:a}}getInputFields({state:t,fieldNames:n}){const{portal_name:a}=this.context.site,{member:i}=this.context,o=t.errors||{},r=[{type:"email",value:(i==null?void 0:i.email)||t.email,placeholder:f("jamie@example.com"),label:f("Email"),name:"email",disabled:!!i,required:!0,tabIndex:2,errorMessage:o.email||""}];let s=!!a;return i&&!(i!=null&&i.name)&&(s=!1),s&&r.unshift({type:"text",value:(i==null?void 0:i.name)||t.name,placeholder:f("Jamie Larson"),label:f("Name"),name:"name",disabled:!!i,required:!0,tabIndex:1,errorMessage:o.name||""}),r[0].autoFocus=!0,n&&n.length>0?r.filter(l=>n.includes(l.name)):r}renderSignupTerms(){var s;const{site:t}=this.context;if(t.portal_signup_terms_html===null||t.portal_signup_terms_html==="")return null;const n=l=>{this.setState({termsCheckboxChecked:l.target.checked})},a=c.jsx("div",{className:"gh-portal-signup-terms-content",dangerouslySetInnerHTML:{__html:ak(t.portal_signup_terms_html)}}),i=t.portal_signup_checkbox_required?c.jsxs("label",{children:[c.jsx("input",{type:"checkbox",checked:!!this.state.termsCheckboxChecked,required:!0,onChange:n}),c.jsx("span",{className:"checkbox"}),a]}):a,r=`gh-portal-signup-terms ${(s=this.state.errors)!=null&&s.checkbox?"gh-portal-error":""}`;return c.jsx("div",{className:r,onClick:Hb,children:i})}onKeyDown(t){t.keyCode===13&&this.handleSignup(t)}handleSignup(t){t.preventDefault();const{pageData:n,site:a}=this.context;if(!n||!n.tier)return null;const i=Qn({site:a,productId:n.tier.id}),o=n.cadence==="month"?i.monthlyPrice:i.yearlyPrice;this.setState(r=>({errors:this.getFormErrors(r)}),()=>{const{doAction:r}=this.context,{name:s,email:l,phonenumber:u,errors:m}=this.state;if(!(m&&Object.values(m).filter(d=>!!d).length>0)){const d={name:s,email:l,plan:o==null?void 0:o.id,offerId:n==null?void 0:n.id,phonenumber:u};jo({site:a})?this.setState({showNewsletterSelection:!0,pageData:d,errors:{}}):(r("signup",d),this.setState({errors:{}}))}})}handleInputChange(t,n){const a=n.name,i=t.target.value;this.setState({[a]:i})}renderSiteLogo(){const{site:t}=this.context,n=t.icon;return n?c.jsx("img",{className:"gh-portal-signup-logo",src:n,alt:t.title}):null}renderFormHeader(){const{site:t}=this.context,n=t.title||"";return c.jsxs("header",{className:"gh-portal-signup-header",children:[this.renderSiteLogo(),c.jsx("h2",{className:"gh-portal-main-title",children:n})]})}renderForm(){const t=this.getInputFields({state:this.state});return this.state.showNewsletterSelection?c.jsx(Rd,{pageData:this.state.pageData,onBack:()=>{this.setState({showNewsletterSelection:!1})}}):c.jsx("section",{children:c.jsx("div",{className:"gh-portal-section",children:c.jsx(Ws,{fields:t,onChange:(n,a)=>this.handleInputChange(n,a),onKeyDown:n=>this.onKeyDown(n)})})})}renderSubmitButton(){const{action:t,brandColor:n}=this.context,{pageData:a}=this.context;let i=f("Continue");a.type==="trial"&&(i=f("Start {amount}-day free trial",{amount:a.amount}));let o=!1;t==="signup:running"&&(i=f("Sending..."),o=!0);let r=!1;t==="signup:failed"&&(i=f("Retry"),r=!0);const s=t==="signup:running";return c.jsx(fe,{style:{width:"100%"},retry:r,onClick:l=>this.handleSignup(l),disabled:s,brandColor:n,label:i,isRunning:o,tabIndex:3,classes:"sticky bottom"})}renderLoginMessage(){const{member:t}=this.context;if(t)return null;const{brandColor:n,doAction:a}=this.context;return c.jsxs("div",{className:"gh-portal-signup-message",children:[c.jsx("div",{children:f("Already a member?")}),c.jsx("button",{className:"gh-portal-btn gh-portal-btn-link",style:{color:n},onClick:()=>a("switchPage",{page:"signin"}),children:c.jsx("span",{children:f("Sign in")})})]})}renderOfferTag(){const{pageData:t}=this.context;return t.amount<=0?c.jsx(c.Fragment,{}):t.type==="fixed"?c.jsx("h5",{className:"gh-portal-discount-label","data-testid":"offer-discount-label",children:f("{amount} off",{amount:`${ve(t.currency)}${t.amount/100}`})}):t.type==="trial"?c.jsx("h5",{className:"gh-portal-discount-label","data-testid":"offer-discount-label",children:f("{amount} days free",{amount:t.amount})}):c.jsx("h5",{className:"gh-portal-discount-label","data-testid":"offer-discount-label",children:f("{amount} off",{amount:t.amount+"%"})})}renderBenefits({product:t}){const n=t.benefits||[];if(!(n!=null&&n.length))return;const a=n.map((i,o)=>c.jsxs("div",{className:"gh-portal-product-benefit",children:[c.jsx(Eb,{className:"gh-portal-benefit-checkmark"}),c.jsx("div",{className:"gh-portal-benefit-title",children:i.name})]},`${i.name}-${o}`));return c.jsx("div",{className:"gh-portal-product-benefits",children:a})}getOriginalPrice({offer:t,product:n}){const a=t.cadence==="month"?n.monthlyPrice:n.yearlyPrice,i=this.renderRoundedPrice(a.amount/100);return`${ve(a.currency)}${i}/${Ja(t.cadence)}`}renderRoundedPrice(t){if(t%1!==0){const n=Math.round(t*100)/100;return Number(n).toFixed(2)}return t}getOffAmount({offer:t}){return t.type==="fixed"?`${ve(t.currency)}${t.amount/100}`:t.type==="percent"?`${t.amount}%`:t.type==="trial"?t.amount:""}renderOfferMessage({offer:t,product:n}){const a={forever:f("{amount} off forever.",{amount:this.getOffAmount({offer:t})}),firstPeriod:f("{amount} off for first {period}.",{amount:this.getOffAmount({offer:t}),period:Ja(t.cadence)}),firstNMonths:f("{amount} off for first {number} months.",{amount:this.getOffAmount({offer:t}),number:t.duration_in_months||""})},i=this.getOriginalPrice({offer:t,product:n}),o=f("Renews at {price}.",{price:i,interpolation:{escapeValue:!1}});let r="",s=!1;const l=t.duration;return l==="once"?(r=a.firstPeriod,s=!0):l==="forever"?r=a.forever:l==="repeating"&&((t.duration_in_months||"")===1?r=a.firstPeriod:r=a.firstNMonths,s=!0),l==="trial"?c.jsxs("p",{className:"footnote","data-testid":"offer-message",children:[f("Try free for {amount} days, then {originalPrice}.",{amount:t.amount,originalPrice:i,interpolation:{escapeValue:!1}})," ",c.jsx("span",{className:"gh-portal-cancel",children:f("Cancel anytime.")})]}):c.jsxs("p",{className:"footnote","data-testid":"offer-message",children:[r," ",s?o:""]})}renderProductLabel({product:t,offer:n}){const{site:a}=this.context;return Ds({site:a})?c.jsxs("h4",{className:"gh-portal-plan-name",children:[t.name," - ",n.cadence==="month"?f("Monthly"):f("Yearly")]}):c.jsx("h4",{className:"gh-portal-plan-name",children:n.cadence==="month"?f("Monthly"):f("Yearly")})}renderUpdatedTierPrice({offer:t,currencyClass:n,updatedPrice:a,price:i}){return t.type==="trial"?c.jsx("div",{className:"gh-portal-product-card-pricecontainer offer-type-trial",children:c.jsxs("div",{className:"gh-portal-product-price","data-testid":"offer-updated-price",children:[c.jsx("span",{className:"currency-sign "+n,children:ve(i.currency)}),c.jsx("span",{className:"amount",children:qa(this.renderRoundedPrice(a))})]})}):c.jsx("div",{className:"gh-portal-product-card-pricecontainer",children:c.jsxs("div",{className:"gh-portal-product-price","data-testid":"offer-updated-price",children:[c.jsx("span",{className:"currency-sign "+n,children:ve(i.currency)}),c.jsx("span",{className:"amount",children:qa(this.renderRoundedPrice(a))})]})})}renderOldTierPrice({offer:t,price:n}){return t.type==="trial"?null:c.jsxs("div",{className:"gh-portal-offer-oldprice",children:[ve(n.currency)," ",qa(n.amount/100)]})}renderProductCard({product:t,offer:n,currencyClass:a,updatedPrice:i,price:o,benefits:r}){return this.state.showNewsletterSelection?null:c.jsxs(c.Fragment,{children:[c.jsx("div",{className:"gh-portal-product-card top",children:c.jsxs("div",{className:"gh-portal-product-card-header",children:[c.jsxs("h4",{className:"gh-portal-product-name",children:[t.name," - ",n.cadence==="month"?f("Monthly"):f("Yearly")]}),this.renderOldTierPrice({offer:n,price:o}),this.renderUpdatedTierPrice({offer:n,currencyClass:a,updatedPrice:i,price:o}),this.renderOfferMessage({offer:n,product:t,price:o})]})}),c.jsxs("div",{children:[c.jsx("div",{className:"gh-portal-product-card bottom",children:c.jsxs("div",{className:"gh-portal-product-card-detaildata",children:[t.description?c.jsx("div",{className:"gh-portal-product-description",children:t.description}):"",r.length?this.renderBenefits({product:t}):""]})}),c.jsxs("div",{className:"gh-portal-btn-container sticky m32",children:[c.jsx("div",{className:"gh-portal-signup-terms-wrapper",children:this.renderSignupTerms()}),this.renderSubmitButton()]}),this.renderLoginMessage()]})]})}render(){const{pageData:t,site:n}=this.context;if(!t||!t.tier)return null;const a=Qn({site:n,productId:t.tier.id});if(!a)return null;const i=t.cadence==="month"?a.monthlyPrice:a.yearlyPrice,o=gb({offer:t,price:i}),r=a.benefits||[],s=ve(i.currency).length>1?"long":"";return c.jsx(c.Fragment,{children:c.jsxs("div",{className:"gh-portal-content gh-portal-offer",children:[c.jsx(we,{}),this.renderFormHeader(),c.jsxs("div",{className:"gh-portal-offer-bar",children:[c.jsxs("div",{className:"gh-portal-offer-title",children:[t.display_title?c.jsx("h4",{"data-testid":"offer-title",children:t.display_title}):c.jsx("h4",{className:"placeholder","data-testid":"offer-title",children:f("Black Friday")}),this.renderOfferTag()]}),t.display_description?c.jsx("p",{children:t.display_description}):""]}),this.renderForm(),this.renderProductCard({product:a,offer:t,currencyClass:s,updatedPrice:o,price:i,benefits:r})]})})}};ym.contextType=_;let Qd=ym;const sk=e=>w.createElement("svg",{xmlns:"http://www.w3.org/2000/svg",fill:"none",viewBox:"0 0 48 48",...e},w.createElement("path",{stroke:"currentColor",strokeLinecap:"round",strokeLinejoin:"round",strokeWidth:3,d:"M42 26.572h-6.2A3.43 3.43 0 0 0 33.024 28l-8.31 12.771a2.92 2.92 0 0 1-3.587.967 2.875 2.875 0 0 1-1.609-3.366l1.5-5.656a3.36 3.36 0 0 0-1.788-3.895 3.438 3.438 0 0 0-1.5-.348H9.397a3.388 3.388 0 0 1-3.251-4.367v-.02l3.24-10.815v-.029c1.32-4.248 3.585-7.146 8.044-7.146 10.682 0 10.072-1.231 22.544 5.073.679.338 1.354.682 2.027 1.03v18.1"})),lk=e=>w.createElement("svg",{xmlns:"http://www.w3.org/2000/svg",fill:"none",viewBox:"0 0 48 48",...e},w.createElement("path",{stroke:"currentColor",strokeLinecap:"round",strokeLinejoin:"round",strokeWidth:3,d:"M6.002 21.429H12.2a3.432 3.432 0 0 0 2.777-1.43L23.29 7.23a2.916 2.916 0 0 1 3.586-.967A2.876 2.876 0 0 1 28.48 9.63l-1.497 5.652a3.36 3.36 0 0 0 1.787 3.897c.466.229.98.347 1.498.35h8.334a3.39 3.39 0 0 1 3.253 4.366v.02l-3.24 10.815v.027c-1.32 4.248-3.588 7.146-8.047 7.146-10.68 0-10.067 1.231-22.544-5.073-.675-.338-1.35-.684-2.025-1.026V18.002"})),OT=e=>w.createElement("svg",{width:96,height:56,viewBox:"0 0 96 56",fill:"none",xmlns:"http://www.w3.org/2000/svg",...e},w.createElement("path",{d:"M9.00004 34.973C9.66499 35.3085 10.3322 35.6418 11.0017 35.9729C23.3405 42.0995 22.7366 40.9062 33.3011 40.9062C37.7115 40.9062 39.954 38.0862 41.2567 33.9563V33.9296L44.4627 23.4164V23.3964C44.6151 22.9038 44.6477 22.3828 44.5578 21.8756C44.4679 21.3683 44.2581 20.8888 43.9453 20.4757C43.6324 20.0626 43.2253 19.7275 42.7565 19.4972C42.2878 19.2669 41.7706 19.1479 41.2466 19.1498H33.0026C32.489 19.1484 31.9825 19.0325 31.5211 18.8108C31.0598 18.5891 30.6558 18.2673 30.3394 17.8698C30.025 17.4718 29.8084 17.0078 29.7066 16.5141C29.6048 16.0203 29.6205 15.51 29.7525 15.0232L31.235 9.5266C31.3503 9.09972 31.3609 8.65208 31.2659 8.2204C31.171 7.78873 30.9732 7.38533 30.6888 7.0433C30.4078 6.70494 30.0511 6.43489 29.6465 6.2542C29.2418 6.07351 28.8002 5.98706 28.3559 6.00157C27.9117 6.01609 27.4769 6.13118 27.0854 6.33789C26.6938 6.5446 26.3562 6.83734 26.0987 7.19329L17.8784 19.6098C17.5652 20.0388 17.1527 20.3885 16.6749 20.6301C16.1971 20.8718 15.6678 20.9985 15.1304 20.9998H9.00004M9 17.6666L9 40.9997",stroke:"black",strokeWidth:2.85,strokeLinecap:"round",strokeLinejoin:"round"}),w.createElement("path",{d:"M86.2148 20.027C85.5499 19.6915 84.8826 19.3582 84.2132 19.0271C71.8743 12.9005 72.4782 14.0938 61.9137 14.0938C57.5034 14.0938 55.2609 16.9138 53.9581 21.0437V21.0704L50.7521 31.5836V31.6036C50.5997 32.0962 50.5672 32.6172 50.657 33.1244C50.7469 33.6317 50.9567 34.1112 51.2695 34.5243C51.5824 34.9374 51.9896 35.2725 52.4583 35.5028C52.927 35.7331 53.4442 35.8521 53.9683 35.8502H62.2123C62.7258 35.8516 63.2324 35.9675 63.6937 36.1892C64.155 36.4109 64.5591 36.7327 64.8754 37.1302C65.1899 37.5282 65.4064 37.9922 65.5082 38.4859C65.61 38.9797 65.5943 39.49 65.4624 39.9768L63.9798 45.4734C63.8646 45.9003 63.854 46.3479 63.9489 46.7796C64.0439 47.2113 64.2416 47.6147 64.526 47.9567C64.807 48.2951 65.1637 48.5651 65.5684 48.7458C65.973 48.9265 66.4147 49.0129 66.8589 48.9984C67.3031 48.9839 67.7379 48.8688 68.1295 48.6621C68.521 48.4554 68.8587 48.1627 69.1162 47.8067L77.3364 35.3902C77.6497 34.9612 78.0622 34.6115 78.5399 34.3699C79.0177 34.1282 79.547 34.0015 80.0844 34.0002H86.2148M86.2148 37.3334V14.0003",stroke:"black",strokeWidth:2.85,strokeLinecap:"round",strokeLinejoin:"round"}));function Zs({siteUrl:e=window.location.origin,apiUrl:t,apiKey:n}){const a="members/api";function i({type:l,resource:u}){return`${e.replace(/\/$/,"")}/${a}/${u}/`}function o({resource:l,params:u={}}){if(t&&n){const m=new URLSearchParams({...u,key:n});return`${t.replace(/\/$/,"")}/${l}/?${m.toString()}`}return""}function r({url:l,method:u="GET",headers:m={},credentials:p=void 0,body:d=void 0}){return fetch(l,{method:u,headers:m,credentials:p,body:d})}const s={};return s.site={read(){const l=i({type:"members",resource:"site"});return r({url:l,method:"GET",headers:{"Content-Type":"application/json"}}).then(function(u){if(u.ok)return u.json();throw new Error("Failed to fetch site data")})},newsletters(){const l=o({resource:"newsletters",params:{limit:100}});return r({url:l,method:"GET",headers:{"Content-Type":"application/json"}}).then(function(u){if(u.ok)return u.json();throw new Error("Failed to fetch site data")})},tiers(){const l=o({resource:"tiers",params:{limit:100,include:"monthly_price,yearly_price,benefits"}});return r({url:l,method:"GET",headers:{"Content-Type":"application/json"}}).then(function(u){if(u.ok)return u.json();throw new Error("Failed to fetch site data")})},settings(){const l=o({resource:"settings"});return r({url:l,method:"GET",headers:{"Content-Type":"application/json"}}).then(function(u){if(u.ok)return u.json();throw new Error("Failed to fetch site data")})},offer({offerId:l}){const u=o({resource:`offers/${l}`});return r({url:u,method:"GET",headers:{"Content-Type":"application/json"}}).then(function(m){if(m.ok)return m.json();throw new Error("Failed to fetch offer data")})},recommendations({limit:l=100}={limit:100}){const u=o({resource:"recommendations",params:{limit:l}});return r({url:u,method:"GET",headers:{"Content-Type":"application/json"}}).then(function(m){if(m.ok)return m.json();throw new Error("Failed to fetch recommendations")})}},s.feedback={async add({uuid:l,key:u,postId:m,score:p}){let d=i({type:"members",resource:"feedback"});l&&u&&(d=d+`?uuid=${l}&key=${u}`);const b=await r({url:d,method:"POST",headers:{"Content-Type":"application/json"},credentials:"same-origin",body:JSON.stringify({feedback:[{post_id:m,score:p}]})});if(b.ok)return b.json();throw await Zt.fromApiResponse(b)??new Error("Failed to save feedback")}},s.recommendations={trackClicked({recommendationId:l}){let u=i({type:"members",resource:"recommendations/"+l+"/clicked"});navigator.sendBeacon(u)},trackSubscribed({recommendationId:l}){let u=i({type:"members",resource:"recommendations/"+l+"/subscribed"});navigator.sendBeacon(u)}},s.member={identity(){const l=i({type:"members",resource:"session"});return r({url:l,credentials:"same-origin"}).then(function(u){return!u.ok||u.status===204?null:u.text()})},sessionData(){const l=i({type:"members",resource:"member"});return r({url:l,credentials:"same-origin"}).then(function(u){return!u.ok||u.status===204?null:u.json()})},update({name:l,subscribed:u,newsletters:m,enableCommentNotifications:p}){const d=i({type:"members",resource:"member"}),h={name:l,subscribed:u,newsletters:m};return p!==void 0&&(h.enable_comment_notifications=p),r({url:d,method:"PUT",headers:{"Content-Type":"application/json"},credentials:"same-origin",body:JSON.stringify(h)}).then(function(b){return b.ok?b.json():null})},deleteSuppression(){const l=i({type:"members",resource:"member/suppression"});return r({url:l,method:"DELETE"}).then(function(u){if(!u.ok)throw new Error("Your email has failed to resubscribe, please try again");return!0})},async getIntegrityToken(){const l=i({type:"members",resource:"integrity-token"}),u=await r({url:l,method:"GET"});if(u.ok)return u.text();{const m=await Zt.fromApiResponse(u);throw m||new Error("Failed to start a members session")}},async sendMagicLink({email:l,emailType:u,labels:m,name:p,oldEmail:d,newsletters:h,redirect:b,integrityToken:v,phonenumber:g,customUrlHistory:y,token:k,autoRedirect:x=!0,includeOTC:E}){const z=i({type:"members",resource:"send-magic-link"}),C={name:p,email:l,newsletters:h,oldEmail:d,emailType:u,labels:m,requestSrc:"portal",redirect:b,integrityToken:v,honeypot:g,token:k,autoRedirect:x,includeOTC:E},N=y??To();N&&(C.urlHistory=N);const I=await r({url:z,method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify(C)});if(I.ok){if((I.headers.get("content-type")||"").toLowerCase().includes("application/json"))try{return await I.json()}catch{}return{}}else{const $=await Zt.fromApiResponse(I);throw $||new Error("Failed to send magic link email")}},async verifyOTC({otc:l,otcRef:u,redirect:m,integrityToken:p}){const d=i({type:"members",resource:"verify-otc"}),b=await r({url:d,method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({otc:l,otcRef:u,redirect:m,integrityToken:p})});if(b.ok)return await b.json();{const v=await Zt.fromApiResponse(b);throw v||new Error("Failed to verify code")}},signout(l=!1){const u=i({type:"members",resource:"session"});return r({url:u,method:"DELETE",headers:{"Content-Type":"application/json"},body:JSON.stringify({all:l})}).then(function(m){if(m.ok)return window.location.replace(e),"Success";throw new Error("Failed to signout")})},async newsletters({uuid:l,key:u}){let m=i({type:"members",resource:"member/newsletters"});return m=m+`?uuid=${l}&key=${u}`,r({url:m,credentials:"same-origin"}).then(function(p){return!p.ok||p.status===204?null:p.json()})},async updateNewsletters({uuid:l,newsletters:u,key:m,enableCommentNotifications:p}){let d=i({type:"members",resource:"member/newsletters"});d=d+`?uuid=${l}&key=${m}`;const h={newsletters:u};return p!==void 0&&(h.enable_comment_notifications=p),r({url:d,method:"PUT",headers:{"Content-Type":"application/json"},body:JSON.stringify(h)}).then(function(b){if(b.ok)return b.json();throw new Error("Failed to update email preferences")})},async updateEmailAddress({email:l}){const u=await s.member.identity(),m=i({type:"members",resource:"member/email"});return r({url:m,method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({email:l,identity:u})}).then(async function(d){var h,b;if(d.ok)return"Success";{const v=await d.json(),g=((b=(h=v==null?void 0:v.errors)==null?void 0:h[0])==null?void 0:b.message)||"Failed to send email address verification email";throw new Error(g)}})},async checkoutPlan({plan:l,tierId:u,cadence:m,cancelUrl:p,successUrl:d,email:h,name:b,offerId:v,newsletters:g,metadata:y={}}={}){var N,I;const k=new URL(e),x=await s.member.identity(),E=i({type:"members",resource:"create-stripe-checkout-session"});if(!p){const $=window.location.href.startsWith(k.href)?new URL(window.location.href):new URL(e);$.searchParams.set("stripe","cancel"),p=$.href}const z={name:b,newsletters:JSON.stringify(g),requestSrc:"portal",fp_tid:(I=(N=window.FPROM||window.$FPROM)==null?void 0:N.data)==null?void 0:I.tid,urlHistory:To(),...y},C={priceId:v?null:l,offerId:v,identity:x,metadata:z,successUrl:d,cancelUrl:p};return h&&(C.customerEmail=h),u&&m&&(delete C.priceId,C.tierId=v?null:u,C.cadence=v?null:m),r({url:E,method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify(C)}).then(async function($){var V,q;if(!$.ok){const ce=await $.json(),ae=((q=(V=ce==null?void 0:ce.errors)==null?void 0:V[0])==null?void 0:q.message)||"Failed to signup, please try again.";throw new Error(ae)}return $.json()}).then(function($){return $.url?window.location.assign($.url):window.Stripe($.publicKey).redirectToCheckout({sessionId:$.sessionId}).then(function(q){if(q.error)throw new Error(q.error.message)})})},async checkoutDonation({successUrl:l,cancelUrl:u,metadata:m={},personalNote:p=""}={}){var k,x,E;const d=await s.member.identity(),h=i({type:"members",resource:"create-stripe-checkout-session"}),b={fp_tid:(x=(k=window.FPROM||window.$FPROM)==null?void 0:k.data)==null?void 0:x.tid,urlHistory:To(),...m},g=await r({url:h,method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({identity:d,metadata:b,successUrl:l,cancelUrl:u,type:"donation",personalNote:p})}),y=await g.json();if(!g.ok){const z=(E=y==null?void 0:y.errors)==null?void 0:E[0];throw z||new Error("We're unable to process your payment right now. Please try again later.")}return y},async editBilling({successUrl:l,cancelUrl:u,subscriptionId:m}={}){const p=new URL(e),d=await s.member.identity(),h=i({type:"members",resource:"create-stripe-update-session"});if(!l){const b=new URL(e);b.searchParams.set("stripe","billing-update-success"),l=b.href}if(!u){const b=window.location.href.startsWith(p.href)?new URL(window.location.href):new URL(e);b.searchParams.set("stripe","billing-update-cancel"),u=b.href}return r({url:h,method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({identity:d,subscription_id:m,successUrl:l,cancelUrl:u})}).then(function(b){if(!b.ok)throw new Error("Unable to create stripe checkout session");return b.json()}).then(function(b){return window.Stripe(b.publicKey).redirectToCheckout({sessionId:b.sessionId})}).then(function(b){if(b.error)throw new Error(b.error.message)}).catch(function(b){throw b})},async manageBilling({returnUrl:l,subscriptionId:u}={}){const m=await s.member.identity(),p=i({type:"members",resource:"create-stripe-billing-portal-session"});if(!l){const d=new URL(e);d.searchParams.set("stripe","billing-portal-closed"),l=d.href}return r({url:p,method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({identity:m,subscription_id:u,returnUrl:l})}).then(function(d){if(!d.ok)throw new Error("Unable to create Stripe billing portal session");return d.json()}).then(function(d){return window.location.assign(d.url)}).catch(function(d){throw d})},async updateSubscription({subscriptionId:l,tierId:u,cadence:m,planId:p,smartCancel:d,cancelAtPeriodEnd:h,cancellationReason:b}){const v=await s.member.identity(),g=i({type:"members",resource:"subscriptions"})+l+"/",y={smart_cancel:d,cancel_at_period_end:h,cancellation_reason:b,identity:v,priceId:p};return u&&m&&(delete y.priceId,y.tierId=u,y.cadence=m),r({url:g,method:"PUT",headers:{"Content-Type":"application/json"},body:JSON.stringify(y)})},async offers(){const l=await s.member.identity(),u=i({type:"members",resource:"member/offers"});return r({url:u,method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({identity:l})}).then(function(m){return m.ok?m.json():{offers:[]}}).catch(function(){return{offers:[]}})},async applyOffer({offerId:l,subscriptionId:u}){const m=await s.member.identity(),p=i({type:"members",resource:`subscriptions/${u}/apply-offer`}),d=await r({url:p,method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({identity:m,offer_id:l})});if(!d.ok){const h=await d.text();throw new Error(h||"Failed to apply offer")}return!0}},s.init=async()=>{let[l]=await Promise.all([s.member.sessionData()]),u={},m=[],p=[],d={},h=[];try{[{settings:d},{tiers:p},{newsletters:m}]=await Promise.all([s.site.settings(),s.site.tiers(),s.site.newsletters()]),u={...d,newsletters:m,tiers:_$({tiers:p})}}catch{}if(l&&l.paid)try{h=(await s.member.offers()).offers||[]}catch(b){console.warn("[Portal] Failed to load member offers:",b)}return u=w$({site:u}),{site:u,member:l,offers:h}},s}class Fo extends Z.Component{render(){return c.jsx("div",{style:{display:"flex",flexDirection:"column",color:"#313131"},children:c.jsx("div",{style:{paddingLeft:"16px",paddingRight:"16px",paddingTop:"12px",height:"50px"},children:c.jsx(Za,{className:"gh-portal-loadingicon dark","data-testid":"loaderIcon"})})})}}const FT=`
1955
1955
  .gh-portal-feedback {
1956
1956
 
1957
1957
  }
@@ -3560,5 +3560,5 @@ html[dir="rtl"] .gh-portal-list-toggle-wrapper .gh-portal-list-detail {
3560
3560
  .gh-portal-hide {
3561
3561
  display: none;
3562
3562
  }
3563
- `;function cP({site:e}){return dd+rP+Q$+z1+L1+y1()+Z$+G$+J$+rb+IT+kT+MT()+xd+NT+sP+lP+FT+HT+VT+WT+KT+ZT+eP+iP}const bm=class bm extends Z.Component{constructor(t){super(t),this.state={email:"",token:void 0}}componentDidMount(){const{member:t}=this.context;t&&this.context.doAction("switchPage",{page:"accountHome"})}handleSignin(t){t.preventDefault(),this.doSignin()}doSignin(){this.setState(t=>({errors:Gs({fields:this.getInputFields({state:t})})}),async()=>{const{email:t,phonenumber:n,errors:a,token:i}=this.state,{redirect:o}=this.context.pageData??{};a&&Object.values(a).filter(s=>!!s).length>0||this.context.doAction("signin",{email:t,phonenumber:n,redirect:o,token:i})})}handleInputChange(t,n){const a=n.name;this.setState({[a]:t.target.value})}onKeyDown(t){t.keyCode===13&&this.handleSignin(t)}getInputFields({state:t}){const n=t.errors||{};return[{type:"email",value:t.email,placeholder:f("jamie@example.com"),label:f("Email"),name:"email",required:!0,errorMessage:n.email||"",autoFocus:!0},{type:"text",value:t.phonenumber,placeholder:"+1 (123) 456-7890",label:"Phone number",name:"phonenumber",required:!1,tabIndex:-1,autoComplete:"off",hidden:!0}]}renderSubmitButton(){const{action:t}=this.context;let n=!1;const a=t==="signin:running";let i=f(a?"Sending login link...":"Continue");const o=!!a;return t==="signin:failed"&&(i=f("Retry"),n=!0),c.jsx(fe,{dataTestId:"signin",retry:n,style:{width:"100%"},onClick:r=>this.handleSignin(r),disabled:o,brandColor:this.context.brandColor,label:i,isRunning:a})}renderSignupMessage(){const{brandColor:t}=this.context;return c.jsxs("div",{className:"gh-portal-signup-message",children:[c.jsx("div",{children:f("Don't have an account?")}),c.jsx("button",{"data-test-button":"signup-switch",className:"gh-portal-btn gh-portal-btn-link",style:{color:t},onClick:()=>this.context.doAction("switchPage",{page:"signup"}),children:c.jsx("span",{children:f("Sign up")})})]})}renderForm(){const{site:t}=this.context,n=As({site:t})&&Xt({site:t});return Pn({site:t})?c.jsxs("section",{children:[c.jsx("div",{className:"gh-portal-section",children:c.jsx(Ws,{fields:this.getInputFields({state:this.state}),onChange:(a,i)=>this.handleInputChange(a,i),onKeyDown:(a,i)=>this.onKeyDown(a,i)})}),c.jsxs("footer",{className:"gh-portal-signin-footer",children:[this.renderSubmitButton(),n&&this.renderSignupMessage()]})]}):c.jsx("section",{children:c.jsx("div",{className:"gh-portal-section",children:c.jsx("p",{className:"gh-portal-members-disabled-notification","data-testid":"members-disabled-notification-text",children:f("Memberships unavailable, contact the owner for access.")})})})}renderSiteIcon(){const{site:t}=this.context,n=t.icon;return n?c.jsx("img",{className:"gh-portal-signup-logo",src:n,alt:this.context.site.title}):Pn({site:t})?null:c.jsx(Bb,{className:"gh-portal-icon gh-portal-icon-invitation"})}renderSiteTitle(){const{site:t}=this.context,n=t.title;return Pn({site:t})?c.jsx("h1",{className:"gh-portal-main-title",children:f("Sign in")}):c.jsx("h1",{className:"gh-portal-main-title",children:n})}renderFormHeader(){return c.jsxs("header",{className:"gh-portal-signin-header",children:[this.renderSiteIcon(),this.renderSiteTitle()]})}render(){return c.jsxs(c.Fragment,{children:[c.jsx(we,{}),c.jsx("div",{className:"gh-portal-logged-out-form-container",children:c.jsxs("div",{className:"gh-portal-content signin",children:[this.renderFormHeader(),this.renderForm()]})})]})}};bm.contextType=_;let em=bm;const uP=({handleSignout:e,supportAddress:t=""})=>{const n=`mailto:${t}`;return c.jsxs("footer",{className:"gh-portal-account-footer",children:[c.jsx("ul",{className:"gh-portal-account-footermenu",children:c.jsx("li",{children:c.jsx("button",{"data-test-button":"footer-signout",className:"gh-portal-btn",name:"logout","aria-label":"logout",onClick:a=>e(a),children:f("Sign out")})})}),c.jsx("div",{className:"gh-portal-account-footerright",children:c.jsx("ul",{className:"gh-portal-account-footermenu",children:c.jsx("li",{children:c.jsx("a",{"data-test-link":"footer-support",className:"gh-portal-btn gh-portal-btn-branded",href:n,onClick:()=>{n&&window.open(n)},children:f("Contact support")})})})})]})},dP=()=>{const{member:e,brandColor:t}=w.useContext(_),n=e.avatar_image;return c.jsxs("header",{className:"gh-portal-account-header",children:[c.jsx(ud,{gravatar:n,style:{userIcon:{color:t,width:"56px",height:"56px",padding:"2px"}}}),c.jsx("h2",{className:"gh-portal-main-title",children:f("Your account")})]})},mP=()=>{const{site:e,action:t,brandColor:n,doAction:a}=w.useContext(_);if(!As({site:e})||!Xt({site:e}))return null;const i=["checkoutPlan:running"].includes(t),o=()=>{a("switchPage",{page:"accountPlan",lastPage:"accountHome"})};return c.jsx(fe,{dataTestId:"view-plans",isRunning:i,label:f("View plans"),onClick:()=>o(),brandColor:n,style:{width:"100%"}})},pP=()=>{const{member:e,site:t}=w.useContext(_),{is_stripe_configured:n}=t;if(!n||Ka({site:t}))return null;const a=rt({member:e}),i=Tn({member:e});if(i&&!a)return null;if(a){const o=a==null?void 0:a.current_period_end;if(i&&pd({member:e})){const r=pd({member:e}),s=Dt(r);return c.jsx("div",{className:"gh-portal-section",children:c.jsx("p",{className:"gh-portal-text-center gh-portal-free-ctatext",children:f("Your subscription will expire on {expiryDate}",{expiryDate:s})})})}if(a!=null&&a.cancel_at_period_end||i)return null;if(fd({sub:a})){const r=Dt(a.trial_end_at);return c.jsx("div",{className:"gh-portal-section",children:c.jsx("p",{className:"gh-portal-text-center gh-portal-free-ctatext",children:f("Your subscription will start on {subscriptionStart}",{subscriptionStart:r})})})}return c.jsx("div",{className:"gh-portal-section",children:c.jsx("p",{className:"gh-portal-text-center gh-portal-free-ctatext",children:f("Your subscription will renew on {renewalDate}",{renewalDate:Dt(o)})})})}return c.jsxs("div",{className:"gh-portal-section",children:[c.jsx("p",{className:"gh-portal-text-center gh-portal-free-ctatext",children:f("You currently have a free membership, upgrade to a paid subscription for full access.")}),c.jsx(mP,{})]})},hP=()=>{const{member:e,doAction:t,action:n,brandColor:a}=w.useContext(_),i=rt({member:e});if(!i||!i.cancel_at_period_end)return null;const o=f("Resume subscription"),r=["continueSubscription:running"].includes(n),s=!!r,l=Dt(i.current_period_end);return c.jsx("div",{className:"gh-portal-cancelcontinue-container",children:c.jsxs("div",{className:"gh-portal-cancel-banner",children:[c.jsx("p",{children:c.jsx(Oe,{string:f("Your subscription has been canceled and will expire on {expiryDate}."),mapping:{expiryDate:c.jsx("strong",{children:l})}})}),c.jsx(fe,{onClick:()=>{t("continueSubscription",{subscriptionId:i.id})},isRunning:r,disabled:s,isPrimary:!0,brandColor:a,label:o,style:{width:"100%"}})]})})},fP=e=>w.createElement("svg",{width:24,height:24,viewBox:"0 0 24 24",fill:"none",xmlns:"http://www.w3.org/2000/svg",...e},w.createElement("defs",null,w.createElement("style",null,".a{fill:none;stroke:currentColor;stroke-linecap:round;stroke-linejoin:round;stroke-width:1.5px;}")),w.createElement("path",{d:"M22.939 2.56V8.817C22.9391 9.61244 22.6232 10.3754 22.061 10.938L10.5 22.5C10.2187 22.7812 9.83721 22.9392 9.43946 22.9392C9.04172 22.9392 8.66026 22.7812 8.37896 22.5L1.49997 15.62C1.21876 15.3387 1.06079 14.9572 1.06079 14.5595C1.06079 14.1618 1.21876 13.7803 1.49997 13.499L13.061 1.938C13.6236 1.37572 14.3865 1.0599 15.182 1.06H21.439C21.8368 1.06 22.2183 1.21803 22.4996 1.49934C22.7809 1.78064 22.939 2.16217 22.939 2.56V2.56Z",className:"a"}),w.createElement("path",{d:"M17.689 7.81C16.8605 7.81 16.189 7.13842 16.189 6.31C16.189 5.48157 16.8605 4.81 17.689 4.81C18.5174 4.81 19.189 5.48157 19.189 6.31C19.189 7.13842 18.5174 7.81 17.689 7.81Z",className:"a"})),gP=()=>{const{member:e,site:t,doAction:n}=w.useContext(_),a=()=>{const d=rt({member:e});n("manageBilling",{subscriptionId:d.id})},i=()=>{const{is_stripe_configured:d}=t;d&&n("switchPage",{page:"accountPlan",lastPage:"accountHome"})},o=({price:d,isComplimentary:h,subscription:b})=>{const{next_payment:v}=b||{};let g="";if(d){const{amount:C=0,currency:N,interval:I}=d;g=`${Intl.NumberFormat("en",{currency:N,style:"currency"}).format(C/100)}/${f(I)}`}const y=pd({member:e});h&&(y?g=`${f("Complimentary")} - ${f("Expires {expiryDate}",{expiryDate:y})}`:g=g?`${f("Complimentary")} (${g})`:f("Complimentary"));let k="";if(fd({sub:b}))return k="gh-portal-account-old-price",c.jsxs(c.Fragment,{children:[c.jsx("p",{className:k,children:g}),c.jsx(yP,{subscription:b})]});let E=bP({nextPayment:v,currentPeriodEnd:b==null?void 0:b.current_period_end});E&&(k="gh-portal-account-old-price");const z=()=>E?c.jsxs("p",{className:"gh-portal-account-discountcontainer","data-testid":"offer-label",children:[c.jsx(fP,{className:"gh-portal-account-tagicon"}),c.jsx("span",{children:E})]}):null;return c.jsxs(c.Fragment,{children:[c.jsx("p",{className:k,children:g}),c.jsx(z,{})]})},r=({isPaid:d})=>Ka({site:t})&&!d?null:c.jsx("button",{className:"gh-portal-btn gh-portal-btn-list",onClick:h=>i(),"data-test-button":"change-plan",children:f("Change")}),s=({defaultCardLast4:d})=>{if(d){const h=`**** **** **** ${d}`;return c.jsx("p",{children:h})}return null},l=({defaultCardLast4:d,isComplimentary:h})=>{const{action:b}=w.useContext(_),v=b==="manageBilling:running"?c.jsx(Za,{className:"gh-portal-billing-button-loader"}):f("Update");return h?null:c.jsxs("section",{children:[c.jsxs("div",{className:"gh-portal-list-detail",children:[c.jsx("h3",{children:f("Billing info & receipts")}),c.jsx(s,{defaultCardLast4:d})]}),c.jsx("button",{className:"gh-portal-btn gh-portal-btn-list",onClick:g=>a(),"data-test-button":"manage-billing",children:v})]})},u=rt({member:e}),m=Tn({member:e}),p=Mt({member:e});if(u||m){const{price:d,default_payment_card_last4:h}=u||{};let b=f("Plan");return Ds({site:t})&&cb({member:e})&&(b=cb({member:e})),c.jsxs(c.Fragment,{children:[c.jsxs("section",{children:[c.jsxs("div",{className:"gh-portal-list-detail",children:[c.jsxs("h3",{children:[b,(u==null?void 0:u.cancel_at_period_end)&&c.jsx("span",{className:"gh-portal-canceled-badge",children:f("Canceled")})]}),c.jsx(o,{price:d,isComplimentary:m,subscription:u})]}),c.jsx(r,{isPaid:p})]}),c.jsx(l,{isComplimentary:m,defaultCardLast4:h})]})}return null};function yP({subscription:e}){if(fd({sub:e})){const t=Dt(e.trial_end_at);return c.jsx("p",{className:"gh-portal-account-discountcontainer",children:c.jsx("div",{children:c.jsx("span",{children:f("Free Trial – Ends {trialEnd}",{trialEnd:t})})})})}return null}function bP({nextPayment:e,currentPeriodEnd:t}){if(!e)return"";const n=e.discount;if(!n)return"";let a="";return n.duration==="forever"?a=f("Forever"):n.duration==="repeating"&&n.end?a=f("Ends {offerEndDate}",{offerEndDate:Dt(n.end)}):n.duration==="once"&&t&&(a=f("Ends {offerEndDate}",{offerEndDate:Dt(t)})),`${`${Intl.NumberFormat("en",{currency:e.currency,style:"currency"}).format(e.amount/100)}/${f(e.interval)}`}${a?` — ${a}`:""}`}function kP(){const{member:e,site:t,doAction:n}=w.useContext(_);let{newsletters:a}=e;const i=!!(a!=null&&a.length);let o=f(i?"Subscribed":"Unsubscribed");const r=s=>{var m;s.preventDefault();const l=Xn({site:t}),u=(m=e==null?void 0:e.newsletters)!=null&&m.length?[]:l;n("updateNewsletterPreference",{newsletters:u})};return c.jsxs("section",{children:[c.jsxs("div",{className:"gh-portal-list-detail email-newsletter",children:[c.jsx("h3",{children:f("Email newsletter")}),c.jsxs("p",{children:[o," ",gd({member:e})&&i&&c.jsx("button",{className:"gh-portal-btn-text gh-email-faq-page-button",onClick:()=>n("switchPage",{page:"emailReceivingFAQ",lastPage:"accountHome"}),children:f("Not receiving emails?")})]})]}),c.jsx("div",{children:c.jsx(Bs,{dataTestId:"default-newsletter-toggle",id:"default-newsletter-toggle",onToggle:s=>{r(s)},checked:i})})]})}const mk=e=>w.createElement("svg",{fill:"none",xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 20 20",...e},w.createElement("path",{d:"m12.79 12.376 4.08 4.079m-4.08 0 4.08-4.08",stroke:"red",strokeWidth:1.35,strokeLinecap:"round",strokeLinejoin:"round"}),w.createElement("path",{d:"m10.439 17.994-2.664-2.652-2.86 1.478.111-4.239m0 0L1.677 9.232a1.344 1.344 0 0 1-.366-1.222 1.369 1.369 0 0 1 .904-1.05l13.111-4.374a1.369 1.369 0 0 1 1.76 1.758L15 10m-9.974 2.581 11.67-9.727",stroke:"#A3A3A3",strokeWidth:1.35,strokeLinecap:"round",strokeLinejoin:"round"}));function vP(){return c.jsxs("p",{className:"gh-portal-email-notice",children:[c.jsx(mk,{className:"gh-portal-email-notice-icon"}),c.jsx("span",{className:"gh-mobile-only",children:f("You're not receiving emails")}),c.jsx("span",{className:"gh-desktop-only",children:f("You're currently not receiving emails")})]})}function wP(){const{doAction:e,member:t,site:n}=w.useContext(_),a=mb({member:t}),i=xo({site:n}),o=Ms({site:n}),r=a?"emailSuppressed":"accountEmail",s=!i&&!o,l=()=>a||s?c.jsx(vP,{}):c.jsx("p",{children:f("Update your preferences")});return c.jsxs("section",{children:[c.jsxs("div",{className:"gh-portal-list-detail",children:[c.jsx("h3",{children:f("Emails")}),l()]}),c.jsx("button",{className:"gh-portal-btn gh-portal-btn-list",onClick:()=>{e("switchPage",{page:r,lastPage:"accountHome"})},"data-test-button":"manage-newsletters",children:f("Manage")})]})}const SP=()=>{const{member:e,site:t}=w.useContext(_),a=t.transistor_portal_settings||{enabled:t.transistor_portal_enabled===!0,heading:t.transistor_portal_heading,description:t.transistor_portal_description,button_text:t.transistor_portal_button_text,url_template:t.transistor_portal_url_template},i=(a==null?void 0:a.enabled)===!0,o=e==null?void 0:e.uuid,r=yb(),[s,l]=w.useState(r&&i);return w.useEffect(()=>{if(r){l(i);return}if(!i||!o){l(!1);return}l(!1);const u=new AbortController;return(async()=>{try{const p=await fetch(`https://partner.transistor.fm/ghost/member/${o}`,{signal:u.signal});if(p.ok){const d=await p.json();u.signal.aborted||l((d==null?void 0:d.member)===!0)}}catch(p){if(u.signal.aborted)return;console.warn("Error in Transistor request",p)}})(),()=>u.abort()},[i,o,r]),{transistor:{enabled:i,hasPodcasts:s,memberUuid:o,settings:a}}},EP=(e,t)=>jo({site:e})&&xo({site:e})||Ms({site:e})||mb({member:t}),xP=e=>!jo({site:e})&&xo({site:e})&&!Ms({site:e}),CP=()=>{const{member:e,doAction:t,site:n}=w.useContext(_),{name:a,email:i}=e,{transistor:o}=SP(),r=()=>{t("switchPage",{page:"accountProfile",lastPage:"accountHome"})},s=EP(n,e),l=xP(n);return c.jsx("div",{children:c.jsxs("div",{className:"gh-portal-list",children:[c.jsxs("section",{children:[c.jsxs("div",{className:"gh-portal-list-detail",children:[c.jsx("h3",{children:a||f("Account")}),c.jsx("p",{children:i})]}),c.jsx("button",{"data-test-button":"edit-profile",className:"gh-portal-btn gh-portal-btn-list",onClick:u=>r(),children:f("Edit")})]}),c.jsx(gP,{}),s&&c.jsx(wP,{}),l&&c.jsx(kP,{}),o.enabled&&c.jsx(oP,{hasPodcasts:o.hasPodcasts,memberUuid:o.memberUuid,settings:o.settings})]})})},jP=()=>c.jsxs("div",{className:"gh-portal-content gh-portal-account-main",children:[c.jsx(we,{}),c.jsx(dP,{}),c.jsxs("section",{className:"gh-portal-account-data",children:[c.jsx(pP,{}),c.jsx(hP,{}),c.jsx(CP,{})]})]}),km=class km extends Z.Component{componentDidMount(){const{member:t,site:n}=this.context;Pn({site:n})||this.context.doAction("signout"),t||this.context.doAction("switchPage",{page:"signin",pageData:{redirect:window.location.href}})}handleSignout(t){t.preventDefault(),this.context.doAction("signout")}render(){const{member:t,site:n}=this.context,a=$o({site:n});return!t||!Pn({site:n})?null:c.jsxs("div",{className:"gh-portal-account-wrapper",children:[c.jsx(jP,{}),c.jsx(uP,{onClose:()=>this.context.doAction("closePopup"),handleSignout:i=>this.handleSignout(i),supportAddress:a})]})}};km.contextType=_;let tm=km;const vm=class vm extends Z.Component{constructor(t,n){super(t,n);const{name:a="",email:i=""}=n.member||{};this.state={name:a,email:i}}componentDidMount(){const{member:t}=this.context;t||this.context.doAction("switchPage",{page:"signin"})}handleSignout(t){t.preventDefault(),this.context.doAction("signout")}onBack(){this.context.doAction("back")}onProfileSave(t){t.preventDefault(),this.setState(n=>({errors:Gs({fields:this.getInputFields({state:n})})}),()=>{const{email:n,name:a,errors:i}=this.state;i&&Object.values(i).filter(r=>!!r).length>0||(this.context.doAction("clearPopupNotification"),this.context.doAction("updateProfile",{email:n,name:a}))})}renderSaveButton(){const t=this.context.action==="updateProfile:running";let n=f("Save");this.context.action==="updateProfile:failed"&&(n=f("Retry"));const a=!!t;return c.jsx(fe,{dataTestId:"save-button",isRunning:t,onClick:i=>this.onProfileSave(i),disabled:a,brandColor:this.context.brandColor,label:n,style:{width:"100%"}})}renderDeleteAccountButton(){return c.jsx("div",{style:{cursor:"pointer",color:"red"},role:"button",children:f("Delete account")})}renderAccountFooter(){return c.jsx("footer",{className:"gh-portal-action-footer",children:this.renderSaveButton()})}renderHeader(){return c.jsxs("header",{className:"gh-portal-detail-header",children:[c.jsx(Qa,{brandColor:this.context.brandColor,hidden:!this.context.lastPage,onClick:t=>this.onBack(t)}),c.jsx("h3",{className:"gh-portal-main-title",children:f("Account settings")})]})}renderUserAvatar(){const t=this.context.member&&this.context.member.avatar_image,n={position:"relative",display:"flex",width:"64px",height:"64px",marginBottom:"6px",borderRadius:"100%",boxShadow:"0 0 0 3px #fff",border:"1px solid gray",overflow:"hidden",justifyContent:"center",alignItems:"center"};return c.jsx("div",{style:n,children:c.jsx(ud,{gravatar:t,style:{userIcon:{color:"black",width:"56px",height:"56px"}}})})}handleInputChange(t,n){const a=n.name;this.setState({[a]:t.target.value})}getInputFields({state:t,fieldNames:n}){const a=t.errors||{},i=[{type:"text",value:t.name,placeholder:f("Jamie Larson"),label:f("Name"),name:"name",required:!1,errorMessage:a.name||""},{type:"email",value:t.email,placeholder:f("jamie@example.com"),label:f("Email"),name:"email",required:!0,errorMessage:a.email||""}];return n&&n.length>0?i.filter(o=>n.includes(o.name)):i}onKeyDown(t){t.keyCode===13&&this.onProfileSave(t)}renderProfileData(){return c.jsx("div",{className:"gh-portal-section",children:c.jsx(Ws,{fields:this.getInputFields({state:this.state}),onChange:(t,n)=>this.handleInputChange(t,n),onKeyDown:(t,n)=>this.onKeyDown(t,n)})})}render(){const{member:t}=this.context;return t?c.jsxs(c.Fragment,{children:[c.jsxs("div",{className:"gh-portal-content with-footer",children:[c.jsx(we,{}),this.renderHeader(),c.jsx("div",{className:"gh-portal-section",children:this.renderProfileData()})]}),this.renderAccountFooter()]}):null}};vm.contextType=_;let nm=vm;function $P(){const{brandColor:e,lastPage:t,doAction:n}=w.useContext(_);return c.jsxs("header",{className:"gh-portal-detail-header",children:[c.jsx(Qa,{brandColor:e,hidden:!t,onClick:()=>{n("back")}}),c.jsx("h3",{className:"gh-portal-main-title",children:f("Email preferences")})]})}function TP({newsletter:e,subscribedNewsletters:t,setSubscribedNewsletters:n}){const a=t.some(i=>i.id===(e==null?void 0:e.id));return c.jsxs("section",{className:"gh-portal-list-toggle-wrapper","data-testid":"toggle-wrapper",children:[c.jsxs("div",{className:"gh-portal-list-detail",children:[c.jsx("h3",{children:e.name}),c.jsx("p",{children:e==null?void 0:e.description})]}),c.jsx("div",{style:{display:"flex",alignItems:"center"},children:c.jsx(Bs,{id:e.id,onToggle:(i,o)=>{let r=[];o?r=t.filter(s=>s.id!==e.id).concat(e):r=t.filter(s=>s.id!==e.id),n(r)},checked:a,dataTestId:"switch-input"})})]})}function PP({updateCommentNotifications:e,isCommentsEnabled:t,enableCommentNotifications:n}){const{doAction:a}=w.useContext(_),i=!!n;if(!t)return null;const o=async(r,s)=>{await e(s),a("showPopupNotification",{action:"updated:success",message:f("Comment preferences updated.")})};return c.jsxs("section",{className:"gh-portal-list-toggle-wrapper","data-testid":"toggle-wrapper",children:[c.jsxs("div",{className:"gh-portal-list-detail",children:[c.jsx("h3",{children:f("Comments")}),c.jsx("p",{children:f("Get notified when someone replies to your comment")})]}),c.jsx("div",{style:{display:"flex",alignItems:"center"},children:c.jsx(Bs,{id:"comments",onToggle:o,checked:i,dataTestId:"switch-input"})})]})}function zP({subscribedNewsletters:e,setSubscribedNewsletters:t,hasNewslettersEnabled:n}){const{site:a}=w.useContext(_),i=Xn({site:a});return n?i.map(o=>c.jsx(TP,{newsletter:o,subscribedNewsletters:e,setSubscribedNewsletters:t},o==null?void 0:o.id)):null}function IP({site:e,isPaid:t}){return t?c.jsx("p",{style:{textAlign:"center",marginTop:"12px",marginBottom:"0",color:"var(--grey6)"},children:f("Unsubscribing from emails will not cancel your paid subscription to {title}",{title:e==null?void 0:e.title})}):null}function pk({hasNewslettersEnabled:e,notification:t,subscribedNewsletters:n,updateSubscribedNewsletters:a,updateCommentNotifications:i,unsubscribeAll:o,isPaidMember:r,isCommentsEnabled:s,enableCommentNotifications:l}){const{brandColor:u,doAction:m,member:p,site:d}=w.useContext(_),h=!(n!=null&&n.length)&&(s&&!l||!s),v=t||(()=>null);return c.jsxs("div",{className:"gh-portal-content with-footer",children:[c.jsx(we,{}),c.jsx($P,{}),c.jsx(v,{}),c.jsx("div",{className:"gh-portal-section flex",children:c.jsxs("div",{className:"gh-portal-list",children:[c.jsx(zP,{hasNewslettersEnabled:e,subscribedNewsletters:n,setSubscribedNewsletters:g=>{let y=g.map(k=>({id:k.id}));a(y)}}),c.jsx(PP,{isCommentsEnabled:s,enableCommentNotifications:l,updateCommentNotifications:i})]})}),c.jsx("div",{className:"gh-portal-btn-product gh-portal-btn-unsubscribe",style:{marginTop:"-48px",marginBottom:0},children:c.jsx(fe,{isRunning:!1,onClick:()=>{o()},disabled:h,brandColor:u,isPrimary:!1,label:f("Unsubscribe from all emails"),isDestructive:!0,style:{width:"100%",zIndex:900},dataTestId:"unsubscribe-from-all-emails"})}),c.jsxs("footer",{className:"gh-portal-action-footer"+(gd({member:p})?" gh-feature-suppressions":""),children:[c.jsx("div",{style:{width:"100%"},children:c.jsx(IP,{isPaid:r,site:d,subscribedNewsletters:n})}),gd({member:p})&&!h&&c.jsxs("div",{className:"gh-portal-footer-secondary",children:[c.jsx("span",{className:"gh-portal-footer-secondary-light",children:f("Not receiving emails?")}),c.jsxs("button",{className:"gh-portal-btn-text gh-email-faq-page-button",onClick:()=>m("switchPage",{page:"emailReceivingFAQ",pageData:{direct:!1}}),children:[f("Get help")," ",c.jsx("span",{className:"right-arrow",children:"→"})]})]})]})]})}function NP(){const{member:e,doAction:t,site:n,pageData:a}=w.useContext(_);let i,o;a&&(i=a.newsletterUuid,o=a.action);const[r,s]=w.useState(!0),l=Xn({site:n}),u=xo({site:n});w.useEffect(()=>{e||t("switchPage",{page:"signin"})},[e,t]),w.useEffect(()=>{if(i&&o==="unsubscribe"){const g=e==null?void 0:e.newsletters.filter(y=>y.uuid!==i);h(g),s(!1),t("updateNewsletterPreference",{newsletters:g})}},[]);const m=()=>{if(a.comments&&b){const k=r?"gh-portal-hide":"";return c.jsx(c.Fragment,{children:c.jsx("p",{className:`gh-portal-text-center gh-portal-header-message ${k}`,children:c.jsx(Oe,{string:f("{memberEmail} will no longer receive emails when someone replies to your comments."),mapping:{memberEmail:c.jsx("strong",{children:e==null?void 0:e.email})}})})})}const g=l==null?void 0:l.find(k=>k.uuid===a.newsletterUuid);if(!g)return null;const y=r?"gh-portal-hide":"";return c.jsx(c.Fragment,{children:c.jsx("p",{className:`gh-portal-text-center gh-portal-header-message ${y}`,children:c.jsx(Oe,{string:f("{memberEmail} will no longer receive {newsletterName} newsletter."),mapping:{memberEmail:c.jsx("strong",{children:e==null?void 0:e.email}),newsletterName:c.jsx("strong",{children:g==null?void 0:g.name})}})})})},p=[...(e==null?void 0:e.newsletters)||[]],[d,h]=w.useState(p),{comments_enabled:b}=n,{enable_comment_notifications:v}=e||{};return w.useEffect(()=>{h((e==null?void 0:e.newsletters)||[])},[e==null?void 0:e.newsletters]),c.jsx(pk,{hasNewslettersEnabled:u,notification:i?m:null,subscribedNewsletters:d,updateSubscribedNewsletters:g=>{h(g),t("updateNewsletterPreference",{newsletters:g}),t("showPopupNotification",{action:"updated:success",message:f("Email preferences updated.")})},updateCommentNotifications:async g=>{t("updateNewsletterPreference",{enableCommentNotifications:g})},unsubscribeAll:()=>{h([]),t("showPopupNotification",{action:"updated:success",message:f("Unsubscribed from all emails.")});const g={newsletters:[]};b&&(g.enableCommentNotifications=!1),t("updateNewsletterPreference",g)},isPaidMember:Mt({member:e}),isCommentsEnabled:b!=="off",enableCommentNotifications:v})}function AP(){const{site:e}=w.useContext(_),t=e.icon;return t?c.jsx("img",{className:"gh-portal-unsubscribe-logo",src:t,alt:e.title}):null}function DP(){const{site:e}=w.useContext(_),t=e.title||"";return c.jsxs("header",{className:"gh-portal-header",children:[c.jsx(AP,{}),c.jsx("h2",{className:"gh-portal-publication-title",children:t})]})}async function hk({api:e,memberUuid:t,key:n,newsletters:a,enableCommentNotifications:i}){try{return await e.member.updateNewsletters({uuid:t,key:n,newsletters:a,enableCommentNotifications:i})}catch{}}function MP(){const{site:e,api:t,pageData:n,member:a,doAction:i}=w.useContext(_),[o,r]=w.useState(),[s,l]=w.useState(!0),u=Xn({site:e}),m=u.filter(I=>I.subscribe_on_signup),[p,d]=w.useState(!1),[h,b]=w.useState(m),[v,g]=w.useState(!1),{comments_enabled:y}=e,{enable_comment_notifications:k=!1}=o||{},x=xo({site:e}),E=async I=>{a?i("updateNewsletterPreference",{newsletters:I}):await hk({api:t,memberUuid:n.uuid,key:n.key,newsletters:I}),b(I);const $={action:"updated:success",message:f("Email preferences updated.")};i("showPopupNotification",$)},z=async I=>{let $;a?(await i("updateNewsletterPreference",{enableCommentNotifications:I}),$={...a,enable_comment_notifications:I}):$=await hk({api:t,memberUuid:n.uuid,key:n.key,enableCommentNotifications:I}),r($),i("showPopupNotification",{action:"updated:success",message:f("Comment preferences updated.")})},C=async()=>{let I;a?(await i("updateNewsletterPreference",{newsletters:[],enableCommentNotifications:!1}),I={...a},I.newsletters=[],I.enable_comment_notifications=!1):I=await t.member.updateNewsletters({uuid:n.uuid,key:n.key,newsletters:[],enableCommentNotifications:!1}),b([]),r(I),i("showPopupNotification",{action:"updated:success",message:f("Unsubscribed from all emails.")})};if(w.useEffect(()=>{(async()=>{let I;try{I=await t.member.newsletters({uuid:n.uuid,key:n.key}),r(I??null),l(!1)}catch(V){console.error("[PORTAL] Error fetching member newsletters",V),r(null),l(!1);return}if(I===null)return;const $=(I==null?void 0:I.newsletters)||[];b($),(u==null?void 0:u.length)===1&&!y&&!n.newsletterUuid?await E([]):n.newsletterUuid?await E($==null?void 0:$.filter(V=>V.uuid!==n.newsletterUuid)):n.comments&&y&&await z(!1)})()},[y,n.uuid,n.newsletterUuid,n.comments,e.url,u==null?void 0:u.length]),s)return c.jsx(Fo,{});if(!o)return c.jsxs("div",{className:"gh-portal-content gh-portal-feedback with-footer",children:[c.jsx(we,{}),c.jsx("div",{className:"gh-feedback-icon gh-feedback-icon-error",children:c.jsx(jd,{})}),c.jsx("h1",{className:"gh-portal-main-title",children:f("That didn't go to plan")}),c.jsx("div",{children:c.jsx("p",{className:"gh-portal-text-center",children:f("We couldn't unsubscribe you as the email address was not found. Please contact the site owner.")})}),c.jsx(fe,{style:{width:"100%"},retry:!1,onClick:()=>i("closePopup"),disabled:!1,brandColor:"#000000",label:f("Close"),isRunning:!1,tabIndex:3,classes:"sticky bottom"})]});if((u==null?void 0:u.length)===1&&!y&&!v)return c.jsxs("div",{className:"gh-portal-content gh-portal-unsubscribe with-footer",children:[c.jsx(we,{}),c.jsx(DP,{}),c.jsx("h1",{className:"gh-portal-main-title",children:f("Successfully unsubscribed")}),c.jsxs("div",{children:[c.jsx("p",{className:"gh-portal-text-center",children:c.jsx(Oe,{string:f("{memberEmail} will no longer receive this newsletter."),mapping:{memberEmail:c.jsx("strong",{children:o==null?void 0:o.email})}})}),c.jsx("p",{className:"gh-portal-text-center",children:c.jsx(Oe,{string:f("Didn't mean to do this? Manage your preferences <button>here</button>."),mapping:{button:c.jsx("button",{className:"gh-portal-btn-link gh-portal-btn-branded gh-portal-btn-inline",onClick:()=>{g(!0)}})}})})]})]});const N=()=>{if(n.comments&&y){const V=p?"gh-portal-hide":"";return c.jsx(c.Fragment,{children:c.jsx("p",{className:`gh-portal-text-center gh-portal-header-message ${V}`,children:c.jsx(Oe,{string:f("{memberEmail} will no longer receive emails when someone replies to your comments."),mapping:{memberEmail:c.jsx("strong",{children:o==null?void 0:o.email})}})})})}const I=u==null?void 0:u.find(V=>V.uuid===n.newsletterUuid);if(!I)return null;const $=p?"gh-portal-hide":"";return c.jsx(c.Fragment,{children:c.jsx("p",{className:`gh-portal-text-center gh-portal-header-message ${$}`,children:c.jsx(Oe,{string:f("{memberEmail} will no longer receive {newsletterName} newsletter."),mapping:{memberEmail:c.jsx("strong",{children:o==null?void 0:o.email}),newsletterName:c.jsx("strong",{children:I==null?void 0:I.name})}})})})};return c.jsx(pk,{hasNewslettersEnabled:x,notification:N,subscribedNewsletters:h,updateSubscribedNewsletters:async I=>{await E(I),d(!0)},updateCommentNotifications:z,unsubscribeAll:async()=>{await C(),d(!0)},isPaidMember:(o==null?void 0:o.status)!=="free",isCommentsEnabled:y!=="off",enableCommentNotifications:k})}function OP(){const{brandColor:e,lastPage:t,doAction:n,action:a,site:i}=w.useContext(_);w.useEffect(()=>{["removeEmailFromSuppressionList:success"].includes(a)&&n("refreshMemberData"),["removeEmailFromSuppressionList:failed","refreshMemberData:failed"].includes(a)&&n("back"),["refreshMemberData:success"].includes(a)&&(jo({site:i})||Ms({site:i})?(n("switchPage",{page:"accountEmail",lastPage:"accountHome"}),n("showPopupNotification",{message:f("You have been successfully resubscribed")})):n("back"))},[a,n,i,f]);const o=["removeEmailFromSuppressionList:running","refreshMemberData:running"].includes(a),r=()=>{n("removeEmailFromSuppressionList")};return c.jsxs("div",{className:"gh-email-suppressed-page",children:[c.jsxs("header",{className:"gh-portal-detail-header",children:[c.jsx(Qa,{brandColor:e,hidden:!t,onClick:()=>{n("back")}}),c.jsx(we,{})]}),c.jsx(mk,{className:"gh-email-suppressed-page-icon"}),c.jsxs("div",{className:"gh-email-suppressed-page-text",children:[c.jsx("h3",{className:"gh-portal-main-title gh-email-suppressed-page-title",children:f("Emails disabled")}),c.jsx("p",{children:f("You're not receiving emails because you either marked a recent message as spam, or because messages could not be delivered to your provided email address.")})]}),c.jsx(fe,{dataTestId:"resubscribe-email",classes:"gh-portal-confirm-button",onClick:r,disabled:o,brandColor:e,label:f("Re-enable emails"),isRunning:o})]})}function FP(){const{brandColor:e,doAction:t,site:n,pageData:a}=w.useContext(_),i=`mailto:${$o({site:n})}`,o=a&&a.direct||!1;return c.jsxs("div",{className:"gh-email-suppression-faq",children:[!o&&c.jsxs("header",{className:"gh-portal-detail-header",children:[c.jsx(Qa,{brandColor:e,onClick:()=>{t("switchPage",{page:"emailSuppressed",lastPage:"accountHome"})}}),c.jsx(we,{})]}),c.jsxs("div",{className:"gh-longform",children:[c.jsx("h3",{children:f("Why has my email been disabled?")}),c.jsx("p",{children:f("Newsletters can be disabled on your account for two reasons: A previous email was marked as spam, or attempting to send an email resulted in a permanent failure (bounce).")}),c.jsx("h4",{children:f("Spam complaints")}),c.jsx("p",{children:f("If a newsletter is flagged as spam, emails are automatically disabled for that address to make sure you no longer receive any unwanted messages.")}),c.jsx("p",{children:f("If the spam complaint was accidental, or you would like to begin receiving emails again, you can resubscribe to emails by clicking the button on the previous screen.")}),c.jsx("p",{children:f("Once resubscribed, if you still don't see emails in your inbox, check your spam folder. Some inbox providers keep a record of previous spam complaints and will continue to flag emails. If this happens, mark the latest newsletter as 'Not spam' to move it back to your primary inbox.")}),c.jsx("h4",{children:f("Permanent failure (bounce)")}),c.jsx("p",{children:f("When an inbox fails to accept an email it is commonly called a bounce. In many cases, this can be temporary. However, in some cases, a bounced email can be returned as a permanent failure when an email address is invalid or non-existent.")}),c.jsx("p",{children:f("In the event a permanent failure is received when attempting to send a newsletter, emails will be disabled on the account.")}),c.jsx("p",{children:f("If you would like to start receiving emails again, the best next steps are to check your email address on file for any issues and then click resubscribe on the previous screen.")}),c.jsx("p",{children:c.jsx("a",{className:"gh-portal-btn gh-portal-btn-branded no-margin-right",href:i,onClick:()=>{i&&window.open(i)},children:f("Need more help? Contact support")})})]})]})}function _P(){const{brandColor:e,doAction:t,site:n,lastPage:a,member:i,pageData:o}=w.useContext(_),r=$o({site:n}),s=`mailto:${r}`,l=I$({site:n}),u=o&&o.direct||!1;return c.jsxs("div",{className:"gh-email-receiving-faq",children:[c.jsxs("header",{className:"gh-portal-detail-header",children:[!u&&c.jsx(Qa,{brandColor:e,onClick:()=>{a?t("switchPage",{page:"accountHome"}):t("switchPage",{page:"accountEmail",lastPage:"accountHome"})}}),c.jsx(we,{})]}),c.jsxs("div",{className:"gh-longform",children:[c.jsx("h3",{children:f("Help! I'm not receiving emails")}),c.jsx("p",{children:f("If you're not receiving the email newsletter you've subscribed to, here are a few things to check.")}),c.jsx("h4",{children:f("Verify your email address is correct")}),c.jsx("p",{children:c.jsx(Oe,{string:f("The email address we have for you is {memberEmail} — if that's not correct, you can update it in your <button>account settings area</button>."),mapping:{memberEmail:c.jsx("strong",{children:i.email}),button:c.jsx("button",{className:"gh-portal-btn-text",onClick:()=>t("switchPage",{lastPage:"emailReceivingFAQ",page:"accountProfile"})})}})}),c.jsx("h4",{children:f("Check spam & promotions folders")}),c.jsx("p",{children:f(`Make sure emails aren't accidentally ending up in the Spam or Promotions folders of your inbox. If they are, click on "Mark as not spam" and/or "Move to inbox".`)}),c.jsx("h4",{children:f("Create a new contact")}),c.jsx("p",{children:c.jsx(Oe,{string:f("In your email client add {senderEmail} to your contacts list. This signals to your mail provider that emails sent from this address should be trusted."),mapping:{senderEmail:c.jsx("strong",{children:l})}})}),c.jsx("h4",{children:f("Send an email and say hi!")}),c.jsx("p",{children:c.jsx(Oe,{string:f("Send an email to {senderEmail} and say hello. This can also help signal to your mail provider that emails to and from this address should be trusted."),mapping:{senderEmail:c.jsx("strong",{children:l})}})}),c.jsx("h4",{children:f("Check with your mail provider")}),c.jsx("p",{children:c.jsx(Oe,{string:f("If you have a corporate or government email account, reach out to your IT department and ask them to allow emails to be received from {senderEmail}"),mapping:{senderEmail:c.jsx("strong",{children:l})}})}),c.jsx("h4",{children:f("Get in touch for help")}),c.jsx("p",{children:c.jsx(Oe,{string:f("If you've completed all these checks and you're still not receiving emails, you can reach out to get support by contacting {supportAddress}."),mapping:{supportAddress:c.jsx("a",{href:s,onClick:()=>{s&&window.open(s)},children:r})}})})]})]})}const am={signin:em,signup:qd,accountHome:tm,accountPlan:Fd,accountProfile:nm,accountEmail:NP,signupNewsletter:Rd,unsubscribe:MP,magiclink:Jd,loading:Fo,offer:Qd,feedback:BT,emailSuppressed:OP,emailSuppressionFAQ:FP,emailReceivingFAQ:_P,support:()=>{const[e,t]=w.useState(!0),[n,a]=w.useState(null),[i,o]=w.useState(null),{member:r,site:s}=w.useContext(_);return w.useEffect(()=>{async function l(){const u=s.url,m=window.location.origin+window.location.pathname,p=r?`${m}?action=support&success=true`:`${m}#/portal/support/success`,d=m,h=Zs({siteUrl:u});try{const b=await h.member.checkoutDonation({successUrl:p,cancelUrl:d,personalNote:f("Add a personal note")});b.url&&window.location.replace(b.url)}catch(b){b.type&&b.type==="DisabledFeatureError"?o(f("This site is not accepting payments at the moment.")):a(f("Something went wrong, please try again later.")),t(!1)}}s&&s.donations_enabled===!1?(o(f("This site is not accepting donations at the moment.")),t(!1)):l()},[]),e?c.jsx("div",{children:c.jsx(Fo,{})}):n?c.jsx(Xd,{error:n}):i?c.jsx(Xd,{error:i}):null},supportSuccess:qT,supportError:Xd,recommendations:aP},im=function({page:e}){return Object.keys(am).includes(e)?e:"signup"},fk=function({page:e}){return e.includes("account")},RP=function({page:e}){return e.includes("offer")},YP=e=>w.createElement("svg",{width:24,height:24,viewBox:"0 0 24 24",fill:"none",xmlns:"http://www.w3.org/2000/svg",...e},w.createElement("path",{fillRule:"evenodd",clipRule:"evenodd",d:"M24 12C24 18.6274 18.6274 24 12 24C5.37258 24 0 18.6274 0 12C0 5.37258 5.37258 0 12 0C18.6274 0 24 5.37258 24 12ZM11.8326 2.33879C6.37785 2.95189 3.95901 5.20797 3.41126 9.74699C3.34896 10.2632 3.22642 10.7805 3.10443 11.2954C2.93277 12.02 2.76221 12.74 2.76221 13.4458C2.76221 17.9885 6.5856 21.556 11.1283 21.556C12.8959 21.556 14.4433 20.8144 15.8756 20.048C19.0536 18.3478 22.0328 16.2597 22.0328 12.5411C22.0328 9.91512 20.1051 7.56932 18.466 5.5747C18.3834 5.47416 18.3015 5.37451 18.2206 5.27577C17.3866 4.25742 14.4333 2.04643 11.8326 2.33879Z",fill:"#15171A"})),wm=class wm extends Z.Component{render(){return c.jsxs("a",{href:"https://ghost.org",target:"_blank",rel:"noopener noreferrer",onClick:()=>{window.open("https://ghost.org","_blank")},children:[c.jsx(YP,{}),"Powered by Ghost"]})}};wm.contextType=_;let Qs=wm;const gk=()=>({modalContainer:{zIndex:"3999999",position:"fixed",left:"0",top:"0",width:"100%",height:"100%",overflow:"hidden"},frame:{common:{margin:"auto",position:"relative",padding:"0",outline:"0",width:"100%",opacity:"1",overflow:"hidden",height:"100%"}},page:{links:{width:"600px"}}});function LP({message:e}){return Ga()?c.jsx("div",{className:"gh-portal-cookiebanner",children:e}):null}const Sm=class Sm extends Z.Component{componentDidMount(){this.node&&!de(["preview"])&&!this.props.isMobile&&(this.node.focus(),this.keyUphandler=t=>{t.key==="Escape"&&this.dismissPopup(t)},this.node.ownerDocument.removeEventListener("keyup",this.keyUphandler),this.node.ownerDocument.addEventListener("keyup",this.keyUphandler)),this.sendContainerHeightChangeEvent()}dismissPopup(t){var i;const n=t.target&&t.target.tagName;(n!=="INPUT"||n==="INPUT"&&!((i=t==null?void 0:t.target)!=null&&i.value))&&this.context.doAction("closePopup")}sendContainerHeightChangeEvent(){var t,n;this.node&&de(["preview"])&&((t=this.node)==null?void 0:t.clientHeight)!==this.lastContainerHeight&&(this.lastContainerHeight=(n=this.node)==null?void 0:n.clientHeight,window.document.body.style.overflow="hidden",window.document.body.style["scrollbar-width"]="none",window.parent.postMessage({type:"portal-preview-updated",payload:{height:this.lastContainerHeight}},"*"))}componentDidUpdate(){this.sendContainerHeightChangeEvent()}componentWillUnmount(){this.node&&this.node.ownerDocument.removeEventListener("keyup",this.keyUphandler)}handlePopupClose(t){const{page:n,otcRef:a}=this.context;de(["preview"])||a&&n==="magiclink"||t.target===t.currentTarget&&this.context.doAction("closePopup")}renderActivePage(){const{page:t}=this.context;im({page:t});const n=am[t];return c.jsx(n,{})}renderPopupNotification(){const{popupNotification:t}=this.context;return!t||!t.type?null:c.jsx(Zd,{})}sendPortalPreviewReadyEvent(){window.self!==window.parent&&window.parent.postMessage({type:"portal-preview-ready",payload:{}},"*")}render(){const{page:t,pageQuery:n,site:a,customSiteUrl:i}=this.context,r=_s({site:a,pageQuery:n}).length;im({page:t});const l={...gk().page[t]};let u="",m="regular",p="",d=t;switch(t){case"signup":p="Cookies must be enabled in your browser to sign up.";break;case"signin":p="Cookies must be enabled in your browser to sign in.";break;case"accountHome":d="account-home";break;case"accountProfile":d="account-profile";break;case"accountPlan":d="account-plan";break;default:p="Cookies must be enabled in your browser.",d=t;break}r>1&&!Ot({site:a})&&Xt({site:a,pageQuery:n})&&t==="signup"&&(d+=" full-size",m="full");const h=Co({site:a});(h&&r>2||!h&&r>1)&&t==="accountPlan"&&(d+=" full-size",m="full"),(t==="emailSuppressionFAQ"||t==="emailReceivingFAQ")&&(d+=" large-size");let b="gh-portal-popup-container";de(["preview"])&&(d+=" preview"),de(["preview"],{customSiteUrl:i})&&!a.disableBackground&&(b+=" preview"),de(["dev"])&&(b+=" dev");const v=`${b} ${u} ${d}`;return this.sendPortalPreviewReadyEvent(),c.jsxs(c.Fragment,{children:[c.jsxs("div",{className:"gh-portal-popup-wrapper "+d,onClick:g=>this.handlePopupClose(g),children:[this.renderPopupNotification(),c.jsxs("div",{className:v,style:l,ref:g=>this.node=g,tabIndex:-1,children:[c.jsx(LP,{message:p}),this.renderActivePage(),m==="full"?c.jsx("div",{className:"gh-portal-powered inside "+(de(["preview"])?"hidden ":"")+d,children:c.jsx(Qs,{})}):""]})]}),c.jsx("div",{className:"gh-portal-powered outside "+(de(["preview"])?"hidden ":"")+d,children:c.jsx(Qs,{})})]})}};Sm.contextType=_;let om=Sm;const Em=class Em extends Z.Component{constructor(t){super(t),this.state={height:null}}renderCurrentPage(t){const n=am[t];return c.jsx(n,{})}onHeightChange(t){this.setState({height:t})}handlePopupClose(t){t.preventDefault(),t.target===t.currentTarget&&this.context.doAction("closePopup")}renderFrameStyles(){const{site:t,brandColor:n}=this.context,a=cP({site:t}),i=n?`:root { --brandcolor: ${n} }`+a:a;return c.jsxs(c.Fragment,{children:[c.jsx("style",{dangerouslySetInnerHTML:{__html:i}}),c.jsx("meta",{name:"viewport",content:"width=device-width, initial-scale=1, maximum-scale=1"})]})}renderFrameContainer(){const{member:t,site:n,customSiteUrl:a}=this.context,i=gk(),o=window.innerWidth<480,r={...i.frame.common};let s="gh-portal-popup-background";return de(["preview"])&&(i.modalContainer.zIndex="3999997"),de(["preview"],{customSiteUrl:a})&&!n.disableBackground&&(s+=" preview"),de(["dev"])&&(s+=" dev"),c.jsx("div",{style:i.modalContainer,children:c.jsxs(ld,{style:r,title:"portal-popup",head:this.renderFrameStyles(),dataTestId:"portal-popup-frame",dataDir:this.context.dir,children:[c.jsx("div",{className:s,onClick:l=>this.handlePopupClose(l)}),c.jsx(om,{isMobile:o})]})})}render(){const{showPopup:t}=this.context;return t?this.renderFrameContainer():null}};Em.contextType=_;let rm=Em;Xs({products:sm({numOfProducts:1})});function Fe(){return(new Date().getTime()/1e3|0).toString(16)+"xxxxxxxxxxxxxxxx".replace(/[x]/g,function(){return(Math.random()*16|0).toString(16)}).toLowerCase()}function UP(){return"xxxxxxxx-xxxx-4xxx-yxxx-xxxxxxxxxxxx".replace(/[xy]/g,function(e){const t=Math.random()*16|0;return(e==="x"?t:t&3|8).toString(16)})}function Xs({title:e="The Blueprint",description:t="Thoughts, stories and ideas.",logo:n="https://static.ghost.org/v4.0.0/images/ghost-orb-1.png",icon:a="https://static.ghost.org/v4.0.0/images/ghost-orb-1.png",url:i="https://portal.localhost",plans:o={monthly:5e3,yearly:15e4,currency:"USD"},products:r=sm({numOfProducts:1}),portalProducts:s=r.map(V=>V.id),accentColor:l="#45C32E",portalPlans:u=["free","monthly","yearly"],membersSignupAccess:m="all",freePriceName:p="Free",freePriceDescription:d="Free preview",isStripeConfigured:h=!0,portalButton:b=!0,portalName:v=!0,portalButtonIcon:g="icon-1",portalButtonSignupText:y="Subscribe now",portalButtonStyle:k="icon-and-text",membersSupportAddress:x="support@example.com",editorDefaultEmailRecipients:E="visibility",newsletters:z=[],posts:C=BP(),commentsEnabled:N,recommendations:I=[],recommendationsEnabled:$}={}){return{title:e,description:t,logo:n,icon:a,accent_color:l,url:i,plans:o,products:r,portal_products:s,members_signup_access:m,free_price_name:p,free_price_description:d,is_stripe_configured:h,portal_button:b,portal_name:v,portal_plans:u,portal_button_icon:g,portal_button_signup_text:y,portal_button_style:k,members_support_address:x,comments_enabled:N!=="off",newsletters:z,recommendations:I,recommendations_enabled:!!$,editor_default_email_recipients:E,posts:C}}function yk({name:e="Black Friday",code:t="black-friday",displayTitle:n="Black Friday Sale!",displayDescription:a="Special deal for Black Friday. Subscribe now for only $15 per month and get additional benefits like accessing our podcast.",type:i="percent",cadence:o="month",amount:r=50,duration:s="repeating",durationInMonths:l=null,currencyRestriction:u=!1,currency:m=null,status:p="active",tierId:d="",tierName:h="Basic",redemptionType:b="signup"}={}){return{id:`offer_${Fe()}`,name:e,code:t,display_title:n,display_description:a,type:i,cadence:o,amount:r,duration:s,duration_in_months:l,currency_restriction:u,currency:m,status:p,tier:{id:`${d}`,name:h},redemption_type:b}}function xt({name:e="Jamie Larson",email:t="jamie@example.com",firstname:n="Jamie",subscriptions:a=[],paid:i=!1,avatarImage:o="",subscribed:r=!0,email_suppression:s={suppressed:!1,info:null},newsletters:l=[]}={}){return{uuid:UP(),email:t,name:e,firstname:n,paid:i,subscribed:r,avatar_image:o,subscriptions:a,email_suppression:s,newsletters:l}}function BP({numOfPosts:e=3}={}){const t=[];for(let n=0;n<e;n++)t.push(HP({title:`Post ${n+1}`,slug:`post-${n+1}`}));return t.slice(0,e)}function HP({id:e=`post_${Fe()}`,title:t="Post",excerpt:n="Post excerpt",slug:a="post",featured:i=!1}={}){return{id:e,title:t,excerpt:n,slug:a,featured:i}}function sm({numOfProducts:e=3}={}){const n=[ti({name:"Bronze",description:"Access to all members articles",monthlyPrice:yt({interval:"month",amount:700}),yearlyPrice:yt({interval:"year",amount:7e3}),numOfBenefits:2}),ti({name:"Silver",description:"Access to all members articles and weekly podcast",monthlyPrice:yt({interval:"month",amount:1200}),yearlyPrice:yt({interval:"year",amount:12e3}),numOfBenefits:3}),ti({name:"Friends of the Blueprint",description:"Get access to everything and lock in early adopter pricing for life + listen to my podcast",monthlyPrice:yt({interval:"month",amount:18e3}),yearlyPrice:yt({interval:"year",amount:17e3}),numOfBenefits:4})].slice(0,e),a=bk({});return[...n,a]}function ti({type:e="paid",name:t="Basic",description:n="",id:a=`product_${Fe()}`,monthlyPrice:i=yt(),yearlyPrice:o=yt({interval:"year"}),numOfBenefits:r=2,trialDays:s=null}){return{id:a,name:t,description:n,monthlyPrice:e==="free"?null:i,yearlyPrice:e==="free"?null:o,type:e,benefits:kk({numOfBenefits:r}),trial_days:s}}function bk({name:e="Free tier",description:t="Free tier description",id:n=`product_${Fe()}`,numOfBenefits:a=2}){return{id:n,name:e,type:"free",description:t,benefits:kk({numOfBenefits:a})}}function kk({numOfBenefits:e}){const t=Fe();return[el({name:`Limited early adopter pricing #${t.substring(0,6)}`}),el({name:`Latest gear reviews #${t.substring(6,12)}`}),el({name:`Weekly email newsletter #${t.substring(12,18)}`}),el({name:`Listen to my podcast #${t.substring(18)}`})].slice(0,e)}function el({id:e=`benefit_${Fe()}`,name:t="Benefit"}){return{id:e,name:t}}function yt({interval:e="month",amount:t=e==="month"?500:5e3,nickname:n=e==="month"?"Monthly":"Yearly",description:a=null,currency:i="usd",active:o=!0,id:r=`price_${Fe()}`}={}){return{id:r,active:o,nickname:n,currency:i,amount:t,interval:e,description:a,stripe_price_id:`price_${Fe()}`,stripe_product_id:`prod_${Fe()}`,type:"recurring"}}function ta({id:e=`sub_${Fe()}`,status:t="active",currency:n="USD",interval:a="year",amount:i=a==="month"?500:5e3,nickname:o=a==="month"?"Monthly":"Yearly",cardLast4:r="4242",offer:s=WP,priceId:l=`price_${Fe()}`,startDate:u="2021-10-05T03:18:30.000Z",currentPeriodEnd:m="2022-10-05T03:18:30.000Z",cancelAtPeriodEnd:p=!1,trialEndAt:d=null,nextPayment:h=null,tier:b=null}={}){return{id:e,customer:{id:`cus_${Fe()}`,name:"Jamie",email:"jamie@example.com"},plan:{id:`price_${Fe()}`,nickname:o,amount:i,interval:a,currency:n},offer:s,status:t,start_date:u,default_payment_card_last4:r,cancel_at_period_end:p,cancellation_reason:null,current_period_end:m,trial_end_at:d,next_payment:h,tier:b,price:{id:`stripe_price_${Fe()}`,price_id:l,nickname:o,amount:i,interval:a,type:"recurring",currency:n,product:{id:`stripe_prod_${Fe()}`,product_id:`prod_${Fe()}`}}}}function vk(){const e=sm({numOfProducts:1}),t=e.map(a=>a.id);return Xs({products:e,portalPlans:["free","monthly","yearly"],portalProducts:t})}vk();const VP=Xs({products:[ti({numOfBenefits:2,type:"free"})]}),WP=yk({tierId:(Ck=VP.products[0])==null?void 0:Ck.id});xt(),xt({paid:!0,subscriptions:[ta()]}),xt({paid:!0,subscriptions:[]}),xt({paid:!0,subscriptions:[ta({amount:0})]}),xt({paid:!0,subscriptions:[ta({amount:1500,startDate:"2019-05-01T11:42:40.000Z",currentPeriodEnd:"2021-06-05T11:42:40.000Z"})]}),vk();const tl=[bk({name:"Free",description:"Free tier description which is actually a pretty long description",numOfBenefits:2}),ti({name:"The Blueprint",description:"",monthlyPrice:yt({interval:"month",amount:500}),yearlyPrice:yt({interval:"year",amount:5e3}),numOfBenefits:3}),ti({name:"Friends of the Blueprint Silver",description:"Access to all members articles and weekly podcast",monthlyPrice:yt({interval:"month",amount:1200}),yearlyPrice:yt({interval:"year",amount:11e3}),numOfBenefits:4})],ni=Xs({title:"The Blueprint",description:"Thoughts, stories and ideas.",logo:"https://static.ghost.org/v4.0.0/images/ghost-orb-1.png",icon:"https://static.ghost.org/v4.0.0/images/ghost-orb-1.png",accentColor:"#45C32E",url:"https://portal.localhost",plans:{monthly:5e3,yearly:15e4,currency:"USD"},products:tl,portalProducts:tl.map(e=>e.id),membersSignupAccess:"all",freePriceName:"Free",freePriceDescription:"Free preview",isStripeConfigured:!0,portalButton:!0,portalName:!0,portalPlans:["free","monthly","yearly"],portalButtonIcon:"icon-1",portalButtonSignupText:"Subscribe now",portalButtonStyle:"icon-and-text",membersSupportAddress:"support@example.com",commentsEnabled:!0,newsletters:[{id:"weekly",name:"Weekly Rundown",description:"Best of last week",subscribe_on_signup:!0,paid:!0},{id:"daily",name:"Daily Brief",description:"One email every day",subscribe_on_signup:!1,paid:!1}],posts:[{id:"post_66aacfe061c94e10eb6e4fc1",title:"Post 1",excerpt:"Post excerpt",slug:"post-1",featured:!1},{id:"post_66aacfe04f14b8dbb56c5721",title:"Post 2",excerpt:"Post excerpt",slug:"post-2",featured:!1},{id:"post_66aacfe03d609460819af18c",title:"Post 3",excerpt:"Post excerpt",slug:"post-3",featured:!1}]}),wk=yk({tierId:(jk=ni.products[1])==null?void 0:jk.id}),ai={free:xt({name:"Jamie Larson",email:"jamie@example.com",firstname:"Jamie",subscriptions:[],paid:!1,avatarImage:"",subscribed:!0}),paid:xt({paid:!0,subscriptions:[ta({status:"active",currency:"USD",interval:"year",amount:5e3,cardLast4:"4242",startDate:"2021-10-05T03:18:30.000Z",currentPeriodEnd:"2022-10-05T03:18:30.000Z",cancelAtPeriodEnd:!1})]}),complimentary:xt({paid:!0,subscriptions:[]}),complimentaryWithSubscription:xt({paid:!0,subscriptions:[ta({amount:0})]}),preview:xt({paid:!0,subscriptions:[ta({amount:1500,startDate:"2019-05-01T11:42:40.000Z",currentPeriodEnd:new Date().toISOString()})]})};function GP(){var n;if(!tl||!tl[1])return null;let e=(n=ni==null?void 0:ni.products)==null?void 0:n[1].monthlyPrice,t=xt({paid:!0,subscriptions:[ta({offer:null,priceId:e==null?void 0:e.id,status:"active",currency:e==null?void 0:e.currency,interval:e==null?void 0:e.interval,amount:e==null?void 0:e.amount,cardLast4:"4242",startDate:"2021-10-05T03:18:30.000Z",currentPeriodEnd:"2022-10-05T03:18:30.000Z",cancelAtPeriodEnd:!1})]});return{site:ni,member:t}}function KP(e){const t=e.getAttribute("href"),n=new URL(t,window.location.origin);!n.hash||!n.hash.startsWith("#/portal")||t.startsWith("#/portal")||n.origin===window.location.origin&&e.setAttribute("href",n.hash)}function qP({data:e,state:t}){return{page:e.page,popupNotification:null,lastPage:e.lastPage||null,pageData:e.pageData||t.pageData}}function JP({state:e}){return{showPopup:!e.showPopup}}function ZP({data:e}){return{showPopup:!0,reloadOnPopupClose:!1,page:e.page,...e.pageQuery?{pageQuery:e.pageQuery}:{},...e.pageData?{pageData:e.pageData}:{}}}function QP({state:e}){return e.lastPage?{page:e.lastPage}:Sk({state:e})}function Sk({state:e}){return md(),{showPopup:!1,lastPage:null,pageQuery:"",popupNotification:null,page:e.page==="magiclink"?"":e.page}}function XP({data:e}){return{showNotification:!0,...e}}function ez(){return{showNotification:!1}}async function tz({api:e,state:t}){try{return await e.member.signout(),{action:"signout:success"}}catch{return{action:"signout:failed",popupNotification:le({type:"signout:failed",autoHide:!1,closeable:!0,state:t,status:"error",message:f("Failed to log out, please try again")})}}}async function nz({data:e,api:t,state:n}){try{const a=await t.member.getIntegrityToken(),i={...e,emailType:"signin",integrityToken:a,includeOTC:!0},{otc_ref:o,inboxLinks:r}=await t.member.sendMagicLink(i);return{page:"magiclink",lastPage:"signin",...o?{otcRef:o}:{},inboxLinks:r,pageData:{...n.pageData||{},email:((e==null?void 0:e.email)||"").trim()}}}catch(a){return{action:"signin:failed",popupNotification:le({type:"signin:failed",autoHide:!1,closeable:!0,state:n,status:"error",message:Qt(a,f("Failed to log in, please try again"))})}}}function az({data:e,state:t}){const n=((e==null?void 0:e.email)||"").trim(),a=e==null?void 0:e.otcRef,i=e==null?void 0:e.inboxLinks;return a?{showPopup:!0,page:"magiclink",lastPage:"signin",otcRef:a,inboxLinks:i,pageData:{...t.pageData||{},email:n},popupNotification:null}:{}}async function iz({data:e,api:t}){var a;const n=f("Failed to verify code, please try again");try{const i=await t.member.getIntegrityToken(),o=await t.member.verifyOTC({...e,integrityToken:i});return o.redirectUrl?window.location.assign(o.redirectUrl):{action:"verifyOTC:failed",actionErrorMessage:Qt((a=o.errors)==null?void 0:a[0],n)}}catch(i){return{action:"verifyOTC:failed",actionErrorMessage:Qt(i,n)}}}async function oz({data:e,state:t,api:n}){try{let{plan:a,tierId:i,cadence:o,email:r,name:s,newsletters:l,offerId:u}=e;s=s==null?void 0:s.trim();let m;if(a.toLowerCase()==="free"){const p=await n.member.getIntegrityToken();({inboxLinks:m}=await n.member.sendMagicLink({emailType:"signup",integrityToken:p,...e,name:s}))}else return i&&o?await n.member.checkoutPlan({plan:a,tierId:i,cadence:o,email:r,name:s,newsletters:l,offerId:u}):({tierId:i,cadence:o}=ea({site:t==null?void 0:t.site,priceId:a}),await n.member.checkoutPlan({plan:a,tierId:i,cadence:o,email:r,name:s,newsletters:l,offerId:u})),{page:"loading"};return{page:"magiclink",lastPage:"signup",inboxLinks:m,pageData:{...t.pageData||{},email:(r||"").trim()}}}catch(a){const i=Qt(a,f("Failed to sign up, please try again"));return{action:"signup:failed",popupNotification:le({type:"signup:failed",autoHide:!1,closeable:!0,state:t,status:"error",message:i})}}}async function rz({data:e,state:t,api:n}){try{let{plan:a,offerId:i,tierId:o,cadence:r}=e;(!o||!r)&&({tierId:o,cadence:r}=ea({site:t==null?void 0:t.site,priceId:a})),await n.member.checkoutPlan({plan:a,tierId:o,cadence:r,offerId:i,metadata:{checkoutType:"upgrade"}})}catch{return{action:"checkoutPlan:failed",popupNotification:le({type:"checkoutPlan:failed",autoHide:!1,closeable:!0,state:t,status:"error",message:f("Failed to process checkout, please try again")})}}}async function sz({data:e,state:t,api:n}){try{const{plan:a,planId:i,subscriptionId:o,cancelAtPeriodEnd:r}=e,{tierId:s,cadence:l}=ea({site:t==null?void 0:t.site,priceId:i});await n.member.updateSubscription({planName:a,tierId:s,cadence:l,subscriptionId:o,cancelAtPeriodEnd:r,planId:i});const u=await n.member.sessionData(),m="updateSubscription:success";return{action:m,popupNotification:le({type:m,autoHide:!0,closeable:!0,state:t,status:"success",message:f("Subscription plan updated successfully")}),page:"accountHome",member:u}}catch{return{action:"updateSubscription:failed",popupNotification:le({type:"updateSubscription:failed",autoHide:!1,closeable:!0,state:t,status:"error",message:f("Failed to update subscription, please try again")})}}}async function lz({data:e,state:t,api:n}){try{const{subscriptionId:a,cancellationReason:i}=e;return await n.member.updateSubscription({subscriptionId:a,smartCancel:!0,cancellationReason:i}),{action:"cancelSubscription:success",page:"accountHome",member:await n.member.sessionData(),reloadOnPopupClose:!0}}catch{return{action:"cancelSubscription:failed",popupNotification:le({type:"cancelSubscription:failed",autoHide:!1,closeable:!0,state:t,status:"error",message:f("Failed to cancel subscription, please try again")})}}}async function cz({data:e,state:t,api:n}){try{const{subscriptionId:a}=e;return await n.member.updateSubscription({subscriptionId:a,cancelAtPeriodEnd:!1}),{action:"continueSubscription:success",page:"accountHome",member:await n.member.sessionData(),reloadOnPopupClose:!0}}catch{return{action:"continueSubscription:failed",popupNotification:le({type:"continueSubscription:failed",autoHide:!1,closeable:!0,state:t,status:"error",message:f("Failed to cancel subscription, please try again")})}}}async function uz({data:e,state:t,api:n}){try{const{offerId:a,subscriptionId:i}=e;return await n.member.applyOffer({offerId:a,subscriptionId:i}),{action:"applyOffer:success",page:"accountHome",member:await n.member.sessionData(),offers:[],reloadOnPopupClose:!0,popupNotification:le({type:"applyOffer:success",autoHide:!0,closeable:!0,state:t,status:"success",message:"Offer applied successfully!"})}}catch{return{action:"applyOffer:failed",popupNotification:le({type:"applyOffer:failed",autoHide:!1,closeable:!0,state:t,status:"error",message:"Failed to apply offer, please try again"})}}}async function dz({data:e,state:t,api:n}){try{await n.member.editBilling(e)}catch{return{action:"editBilling:failed",popupNotification:le({type:"editBilling:failed",autoHide:!1,closeable:!0,state:t,status:"error",message:f("Failed to update billing information, please try again")})}}}async function mz({data:e,state:t,api:n}){try{await n.member.manageBilling(e)}catch{return{action:"manageBilling:failed",popupNotification:le({type:"manageBilling:failed",autoHide:!1,closeable:!0,state:t,status:"error",message:f("Failed to open billing portal, please try again")})}}}async function pz(){return{popupNotification:null}}async function hz({data:e,state:t}){let{action:n,message:a=""}=e;return n=n||"showPopupNotification:success",{popupNotification:le({type:n,autoHide:!0,closeable:!0,state:t,status:"success",message:a})}}async function fz({data:e,state:t,api:n}){try{const{newsletters:a,enableCommentNotifications:i}=e;if(!a&&i===void 0)return{};const o={};return a&&(o.newsletters=a),i!==void 0&&(o.enableCommentNotifications=i),{action:"updateNewsletterPref:success",member:await n.member.update(o)}}catch{return{action:"updateNewsletterPref:failed",popupNotification:le({type:"updateNewsletter:failed",autoHide:!0,closeable:!0,state:t,status:"error",message:f("Failed to update newsletter settings")})}}}async function gz({state:e,api:t}){try{return await t.member.deleteSuppression(),{action:"removeEmailFromSuppressionList:success",popupNotification:le({type:"removeEmailFromSuppressionList:success",autoHide:!0,closeable:!0,state:e,status:"success",message:f("You have been successfully resubscribed")})}}catch{return{action:"removeEmailFromSuppressionList:failed",popupNotification:le({type:"removeEmailFromSuppressionList:failed",autoHide:!0,closeable:!0,state:e,status:"error",message:f("Your email has failed to resubscribe, please try again")})}}}async function yz({data:e,state:t,api:n}){try{const{subscribed:a}=e,i=await n.member.update({subscribed:a});if(!i)throw new Error("Failed to update newsletter");const o="updateNewsletter:success";return{action:o,member:i,popupNotification:le({type:o,autoHide:!0,closeable:!0,state:t,status:"success",message:f("Email newsletter settings updated")})}}catch{return{action:"updateNewsletter:failed",popupNotification:le({type:"updateNewsletter:failed",autoHide:!0,closeable:!0,state:t,status:"error",message:f("Failed to update newsletter settings")})}}}async function bz({data:e,state:t,api:n}){const{email:a}=e,i=T$({member:t.member});if(a!==i)try{return await n.member.updateEmailAddress({email:a}),{success:!0}}catch(o){return{success:!1,error:o}}return null}async function kz({data:e,state:t,api:n}){var o;const a=(o=e==null?void 0:e.name)==null?void 0:o.trim();if(z$({member:t.member})!==a)try{const r=await n.member.update({name:a});if(!r)throw new Error("Failed to update member");return{member:r,success:!0}}catch(r){return{success:!1,error:r}}return null}async function vz({state:e,api:t}){if(e.member)try{const n=await t.member.sessionData();return n?{member:n,success:!0,action:"refreshMemberData:success"}:null}catch(n){return{success:!1,error:n,action:"refreshMemberData:failed"}}return null}async function wz({data:e,state:t,api:n}){const[a,i]=await Promise.all([kz({data:e,state:t,api:n}),bz({data:e,state:t,api:n})]);if(a&&i){if(i.success)return{action:"updateProfile:success",...a.success?{member:a.member}:{},page:"accountHome",popupNotification:le({type:"updateProfile:success",autoHide:!0,closeable:!0,status:"success",state:t,message:f("Check your inbox to verify email update")})};const o=a.success?f("Failed to send verification email"):f("Failed to update account data");return{action:"updateProfile:failed",...a.success?{member:a.member}:{},popupNotification:le({type:"updateProfile:failed",autoHide:!0,closeable:!0,status:"error",message:o,state:t})}}else if(a){const o=a.success?"updateProfile:success":"updateProfile:failed",r=a.success?"success":"error",s=a.success?f("Account details updated successfully"):f("Failed to update account details");return{action:o,...a.success?{member:a.member}:{},...a.success?{page:"accountHome"}:{},popupNotification:le({type:o,autoHide:a.success,closeable:!0,status:r,state:t,message:s})}}else if(i){const o=i.success?"updateProfile:success":"updateProfile:failed",r=i.success?"success":"error";let s="";return i.error?s=Qt(i.error,f("Failed to send verification email")):s=f("Check your inbox to verify email update"),{action:o,...i.success?{page:"accountHome"}:{},popupNotification:le({type:o,autoHide:i.success,closeable:!0,status:r,state:t,message:s})}}return{action:"updateProfile:success",page:"accountHome",popupNotification:le({type:"updateProfile:success",autoHide:!0,closeable:!0,status:"success",state:t,message:f("Account details updated successfully")})}}async function Sz({data:{siteUrl:e},state:t}){const n=Zs({siteUrl:e,apiUrl:"not-defined"}),{member:a}=t,i=window.location.href,o=ub(),r=await n.member.getIntegrityToken();return await n.member.sendMagicLink({emailType:"signup",name:a.name,email:a.email,autoRedirect:!1,integrityToken:r,customUrlHistory:t.site.outbound_link_tagging?[{time:Date.now(),referrerSource:o,referrerMedium:"Ghost Recommendations",referrerUrl:i}]:[]}),{}}function Ez({data:{recommendationId:e},api:t}){try{const n=localStorage.getItem("ghost-recommendations-clicked"),a=n?JSON.parse(n):[];if(a.includes(e))return;a.push(e),localStorage.setItem("ghost-recommendations-clicked",JSON.stringify(a))}catch{}return t.recommendations.trackClicked({recommendationId:e}),{}}async function xz({data:{recommendationId:e},api:t}){return t.recommendations.trackSubscribed({recommendationId:e}),{}}const Cz={togglePopup:JP,openPopup:ZP,closePopup:Sk,switchPage:qP,openNotification:XP,closeNotification:ez,back:QP,signout:tz,signin:nz,startSigninOTCFromCustomForm:az,verifyOTC:iz,signup:oz,updateSubscription:sz,cancelSubscription:lz,continueSubscription:cz,applyOffer:uz,updateNewsletter:yz,updateProfile:wz,refreshMemberData:vz,clearPopupNotification:pz,editBilling:dz,manageBilling:mz,checkoutPlan:rz,updateNewsletterPreference:fz,showPopupNotification:hz,removeEmailFromSuppressionList:gz,oneClickSubscribe:Sz,trackRecommendationClicked:Ez,trackRecommendationSubscribed:xz};async function jz({action:e,data:t,state:n,api:a}){const i=Cz[e];return i?await i({data:t,state:n,api:a})||{}:{}}function Ek(e,t){e&&(e.innerText=t)}function $z(e,t,n){t.classList.add("error");const a=f("There was an error sending the email, please try again");Ek(n,Qt(e,a))}async function Tz({event:e,form:t,errorEl:n,siteUrl:a,submitHandler:i,doAction:o,captureException:r}){var E,z;t.removeEventListener("submit",i),e.preventDefault(),n&&(n.innerText=""),t.classList.remove("success","invalid","error");let s=e.target.querySelector("input[data-members-email]"),l=e.target.querySelector("input[data-members-name]"),u=((E=t==null?void 0:t.dataset)==null?void 0:E.membersAutoredirect)||"true",m=s==null?void 0:s.value,p=((l==null?void 0:l.value)||"").trim()||void 0,d,h=[],b=[],v=e.target.querySelectorAll("input[data-members-label]")||[];for(let C=0;C<v.length;++C)h.push(v[C].value);let g=e.target.querySelectorAll("input[type=hidden][data-members-newsletter], input[type=checkbox][data-members-newsletter]:checked, input[type=radio][data-members-newsletter]:checked")||[];for(let C=0;C<g.length;++C)b.push({name:g[C].value});t.dataset.membersForm&&(d=t.dataset.membersForm);const y=d==="signin"&&((z=t==null?void 0:t.dataset)==null?void 0:z.membersOtc)==="true";t.classList.add("loading");const k=To(),x={email:m,emailType:d,labels:h,name:p,autoRedirect:u==="true"};y&&(x.includeOTC=!0),k&&(x.urlHistory=k),g.length>0?x.newsletters=b:(e.target.querySelectorAll("input[type=checkbox][data-members-newsletter]")||[]).length>0&&(x.newsletters=[]);try{const N=await(await fetch(`${a}/members/api/integrity-token/`,{method:"GET"})).text(),I=await fetch(`${a}/members/api/send-magic-link/`,{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({...x,integrityToken:N})});if(t.addEventListener("submit",i),t.classList.remove("loading"),I.ok){t.classList.add("success");let $;if(y)try{$=await I.clone().json()}catch{$=void 0}const V=$==null?void 0:$.otc_ref;if(V&&typeof o=="function")try{o("startSigninOTCFromCustomForm",{email:(m||"").trim(),otcRef:V,inboxLinks:$==null?void 0:$.inboxLinks})}catch(q){console.error(q),r==null||r(q)}}else{const $=await Zt.fromApiResponse(I),V=Qt($,f("Failed to send magic link email"));Ek(n,V),t.classList.add("error")}}catch(C){$z(C,t,n)}}function Pz({event:e,el:t,errorEl:n,siteUrl:a,site:i,member:o,clickHandler:r}){t.removeEventListener("click",r),e.preventDefault();let s=t.dataset.membersPlan,l=y$(i,s.toLowerCase()),u=t.dataset.membersSuccess,m=t.dataset.membersCancel,p,d;u&&(p=new URL(u,window.location.href).href),m&&(d=new URL(m,window.location.href).href),n&&(n.innerText=""),t.classList.add("loading");const h=o?{checkoutType:"upgrade"}:{},b=To();return b&&(h.urlHistory=b),fetch(`${a}/members/api/session`,{credentials:"same-origin"}).then(function(v){return v.ok?v.text():null}).then(function(v){return fetch(`${a}/members/api/create-stripe-checkout-session/`,{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({...l,identity:v,successUrl:p,cancelUrl:d,metadata:h})}).then(function(g){if(!g.ok)throw new Error(f("Could not create Stripe checkout session"));return g.json()})}).then(function(v){return v.url?window.location.assign(v.url):window.Stripe(v.publicKey).redirectToCheckout({sessionId:v.sessionId}).then(function(y){if(y.error)throw new Error(y.error.message)})}).catch(function(v){console.error(v),t.addEventListener("click",r),t.classList.remove("loading"),n&&(n.innerText=v.message),t.classList.add("error")})}function zz({siteUrl:e,site:t={},member:n,offers:a=[],doAction:i,captureException:o}={}){if(!e)return;e=e.replace(/\/$/,""),Array.prototype.forEach.call(document.querySelectorAll("form[data-members-form]"),function(s){let l=s.querySelector("[data-members-error]");function u(m){Tz({event:m,errorEl:l,form:s,siteUrl:e,submitHandler:u,doAction:i,captureException:o})}s.addEventListener("submit",u)}),Array.prototype.forEach.call(document.querySelectorAll("[data-members-plan]"),function(s){let l=s.querySelector("[data-members-error]");function u(m){Pz({el:s,event:m,errorEl:l,member:n,site:t,siteUrl:e,clickHandler:u})}s.addEventListener("click",u)}),Array.prototype.forEach.call(document.querySelectorAll("[data-members-edit-billing]"),function(s){let l=s.querySelector("[data-members-error]"),u=s.dataset.membersSuccess,m=s.dataset.membersCancel,p,d;u&&(p=new URL(u,window.location.href).href),m&&(d=new URL(m,window.location.href).href);function h(b){s.removeEventListener("click",h),b.preventDefault(),l&&(l.innerText=""),s.classList.add("loading"),fetch(`${e}/members/api/session`,{credentials:"same-origin"}).then(function(v){return v.ok?v.text():null}).then(function(v){return fetch(`${e}/members/api/create-stripe-update-session/`,{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({identity:v,successUrl:p,cancelUrl:d})}).then(function(g){if(!g.ok)throw new Error(f("Could not create Stripe checkout session"));return g.json()})}).then(function(v){return window.Stripe(v.publicKey).redirectToCheckout({sessionId:v.sessionId})}).then(function(v){if(v.error)throw new Error(f(v.error.message))}).catch(function(v){console.error(v),s.addEventListener("click",h),s.classList.remove("loading"),l&&(l.innerText=v.message),s.classList.add("error")})}s.addEventListener("click",h)}),Array.prototype.forEach.call(document.querySelectorAll("[data-members-manage-billing]"),function(s){let l=s.querySelector("[data-members-error]"),u=s.dataset.membersReturn,m;u&&(m=new URL(u,window.location.href).href);function p(d){s.removeEventListener("click",p),d.preventDefault(),l&&(l.innerText=""),s.classList.add("loading"),fetch(`${e}/members/api/session`,{credentials:"same-origin"}).then(function(h){return h.ok?h.text():null}).then(function(h){return fetch(`${e}/members/api/create-stripe-billing-portal-session/`,{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({identity:h,returnUrl:m})}).then(function(b){if(!b.ok)throw new Error(f("Could not create Stripe billing portal session"));return b.json()})}).then(function(h){return window.location.assign(h.url)}).catch(function(h){console.error(h),s.addEventListener("click",p),s.classList.remove("loading"),l&&(l.innerText=h.message),s.classList.add("error")})}s.addEventListener("click",p)}),Array.prototype.forEach.call(document.querySelectorAll("[data-members-signout]"),function(s){function l(u){s.removeEventListener("click",l),u.preventDefault(),s.classList.remove("error"),s.classList.add("loading"),fetch(`${e}/members/api/session`,{method:"DELETE"}).then(function(m){m.ok?window.location.replace(e):(s.addEventListener("click",l),s.classList.remove("loading"),s.classList.add("error"))})}s.addEventListener("click",l)});const r=(a||[]).some(s=>s.redemption_type==="retention");Array.prototype.forEach.call(document.querySelectorAll("[data-members-cancel-subscription]"),function(s){let l=s.parentElement.querySelector("[data-members-error]");function u(m){m.preventDefault();let p=s.dataset.membersCancelSubscription;if(r){i("openPopup",{page:"accountPlan",pageData:{subscriptionId:p,action:"cancel"}});return}return s.removeEventListener("click",u),s.classList.remove("error"),s.classList.add("loading"),l&&(l.innerText=""),fetch(`${e}/members/api/session`,{credentials:"same-origin"}).then(function(d){return d.ok?d.text():null}).then(function(d){return fetch(`${e}/members/api/subscriptions/${p}/`,{method:"PUT",headers:{"Content-Type":"application/json"},body:JSON.stringify({identity:d,smart_cancel:!0})})}).then(function(d){d.ok?window.location.reload():(s.addEventListener("click",u),s.classList.remove("loading"),s.classList.add("error"),l&&(l.innerText=f("There was an error cancelling your subscription, please try again.")))})}s.addEventListener("click",u)}),Array.prototype.forEach.call(document.querySelectorAll("[data-members-continue-subscription]"),function(s){let l=s.parentElement.querySelector("[data-members-error]");function u(m){s.removeEventListener("click",u),m.preventDefault(),s.classList.remove("error"),s.classList.add("loading");let p=s.dataset.membersContinueSubscription;return l&&(l.innerText=""),fetch(`${e}/members/api/session`,{credentials:"same-origin"}).then(function(d){return d.ok?d.text():null}).then(function(d){return fetch(`${e}/members/api/subscriptions/${p}/`,{method:"PUT",headers:{"Content-Type":"application/json"},body:JSON.stringify({identity:d,cancel_at_period_end:!1})})}).then(function(d){d.ok?window.location.reload():(s.addEventListener("click",u),s.classList.remove("loading"),s.classList.add("error"),l&&(l.innerText=f("There was an error continuing your subscription, please try again.")))})}s.addEventListener("click",u)})}const Iz={showPopup:!0,site:ni,member:ai.free,page:"accountEmail",...GP(),pageData:wk};function Nz({site:e,children:t}){const{portal_sentry:n}=e||{};return n&&n.dsn?c.jsx(Zu,{children:t}):c.jsx(c.Fragment,{children:t})}class Az extends Z.Component{constructor(t){super(t),this.setupCustomTriggerButton(),this.state={site:null,member:null,offers:[],page:"loading",showPopup:!1,action:"init:running",actionErrorMessage:null,initStatus:"running",lastPage:null,customSiteUrl:t.customSiteUrl,locale:t.locale,scrollbarWidth:0}}componentDidMount(){const t=this.getScrollbarWidth();this.setState({scrollbarWidth:t}),this.initSetup()}componentDidUpdate(t,n){var a,i,o;if(n.showPopup!==this.state.showPopup){this.handleCustomTriggerClassUpdate();try{this.state.showPopup?(this.bodyScroll=(o=(i=(a=window.document)==null?void 0:a.body)==null?void 0:i.style)==null?void 0:o.overflow,this.bodyMargin=window.getComputedStyle(document.body).getPropertyValue("margin-right"),window.document.body.style.overflow="hidden",this.state.scrollbarWidth&&(window.document.body.style.marginRight=`calc(${this.bodyMargin} + ${this.state.scrollbarWidth}px)`)):(window.document.body.style.overflow=this.bodyScroll||"",!this.bodyMargin||this.bodyMargin==="0px"?window.document.body.style.marginRight="":window.document.body.style.marginRight=this.bodyMargin,this.state.reloadOnPopupClose&&window.location.reload())}catch{}}if(this.state.initStatus==="success"&&n.initStatus!==this.state.initStatus){const{siteUrl:r}=this.props,s=this.getContextFromState();this.sendPortalReadyEvent(),zz({siteUrl:r,site:s.site,member:s.member,offers:s.offers,doAction:s.doAction,captureException:ss})}}componentWillUnmount(){clearTimeout(this.timeoutId),this.customTriggerButtons&&this.customTriggerButtons.forEach(t=>{t.removeEventListener("click",this.clickHandler)}),window.removeEventListener("hashchange",this.hashHandler,!1)}sendPortalReadyEvent(){window.self!==window.parent&&window.parent.postMessage({type:"portal-ready",payload:{}},"*")}getScrollbarWidth(){const t=document.createElement("div");t.style.visibility="hidden",t.style.overflow="scroll",document.body.appendChild(t),document.body.appendChild(t);const n=t.offsetWidth-t.clientWidth;return document.body.removeChild(t),n}setupCustomTriggerButton(){this.clickHandler=a=>{a.preventDefault();const i=a.currentTarget,o=i&&i.dataset.portal,{page:r,pageQuery:s,pageData:l}=this.getPageFromLinkPath(o)||{};this.state.initStatus==="success"&&(s&&s!=="free"?this.handleSignupQuery({site:this.state.site,pageQuery:s}):this.dispatchAction("openPopup",{page:r,pageQuery:s,pageData:l}))};const t="[data-portal]",n="gh-portal-close";this.customTriggerButtons=document.querySelectorAll(t)||[],this.customTriggerButtons.forEach(a=>{a.classList.add(n),a.removeEventListener("click",this.clickHandler),a.addEventListener("click",this.clickHandler)})}handleCustomTriggerClassUpdate(){var a;const t="gh-portal-open",n="gh-portal-close";(a=this.customTriggerButtons)==null||a.forEach(i=>{const o=this.state.showPopup?t:n,r=this.state.showPopup?n:t;i.classList.add(o),i.classList.remove(r)})}async initSetup(){try{const{site:t,member:n,offers:a,page:i,showPopup:o,popupNotification:r,lastPage:s,pageQuery:l,pageData:u}=await this.fetchData(),m=this.props.siteI18nEnabled&&(this.props.locale||t.locale)||"en";zs.changeLanguage(m);const p={site:t,member:n,offers:a,page:i,lastPage:s,pageQuery:l,showPopup:o,pageData:u,popupNotification:r,dir:zs.dir()||"ltr",action:"init:success",initStatus:"success",locale:m};if(this.handleSignupQuery({site:t,pageQuery:l,member:n}),this.setState(p),this.hashHandler=()=>{this.updateStateForPreviewLinks()},window.addEventListener("hashchange",this.hashHandler,!1),!n){const d=document.querySelectorAll("[data-lexical-signup-form]");d.length>0&&d.forEach(h=>{h.style.display=""})}this.setupRecommendationButtons(),this.transformPortalLinksToRelative()}catch(t){console.error("[Portal] Failed to initialize:",t),this.setState({action:"init:failed",initStatus:"failed"})}}async fetchData(){const{site:t,member:n,offers:a}=await this.fetchApiData(),{site:i,...o}=this.fetchDevData(),{site:r,...s}=this.fetchLinkData(t,n),{site:l,...u}=this.fetchPreviewData(),{site:m,...p}=this.fetchNotificationData();return{member:n,offers:a,page:"",site:{...t,...r,...l,...m,...i,plans:{...(i||{}).plans,...(t||{}).plans,...(l||{}).plans}},...o,...s,...p,...u}}fetchDevData(){return de(["dev"])&&!this.state.customSiteUrl?Iz:de(["test"])?{showPopup:this.props.showPopup!==void 0?this.props.showPopup:!0}:{}}fetchOfferQueryStrData(t=""){var i,o,r;const n=new URLSearchParams(t),a={};for(let s of n.entries()){const l=s[0],u=decodeURIComponent(s[1]);l==="name"?a.name=u||"":l==="code"?a.code=u||"":l==="display_title"?a.display_title=u||"":l==="display_description"?a.display_description=u||"":l==="type"?a.type=u||"":l==="cadence"?a.cadence=u||"":l==="duration"?a.duration=u||"":l==="duration_in_months"&&!isNaN(Number(u))?a.duration_in_months=Number(u):l==="amount"&&!isNaN(Number(u))?a.amount=Number(u):l==="currency"?a.currency=u||"":l==="status"?a.status=u||"":l==="tier_id"?a.tier={id:u||wk.tier.id}:l==="redemption_type"&&(a.redemption_type=u||"signup")}if(a.redemption_type==="retention"){const s=(r=(o=(i=ai.preview)==null?void 0:i.subscriptions)==null?void 0:o[0])==null?void 0:r.id;return{page:"accountPlan",offers:[a],pageData:{action:"cancel",subscriptionId:s}}}return{page:"offer",pageData:a}}fetchQueryStrData(t=""){const n=new URLSearchParams(t),a={site:{plans:{}}},i=[];let o,r=null,s,l,u;for(let m of n.entries()){const p=m[0],d=decodeURIComponent(m[1]);if(p==="button")a.site.portal_button=JSON.parse(d);else if(p==="name")a.site.portal_name=JSON.parse(d);else if(p==="isFree"&&JSON.parse(d))i.push("free");else if(p==="isMonthly"&&JSON.parse(d))i.push("monthly");else if(p==="isYearly"&&JSON.parse(d))i.push("yearly");else if(p==="portalPrices")o=d?d.split(","):[];else if(p==="portalProducts")r=d?d.split(","):[];else if(p==="page"&&d)a.page=d;else if(p==="accentColor"&&(d===""||d))a.site.accent_color=d;else if(p==="buttonIcon"&&d)a.site.portal_button_icon=d;else if(p==="signupButtonText")a.site.portal_button_signup_text=d||"";else if(p==="signupTermsHtml")a.site.portal_signup_terms_html=d||"";else if(p==="signupCheckboxRequired")a.site.portal_signup_checkbox_required=JSON.parse(d);else if(p==="buttonStyle"&&d)a.site.portal_button_style=d;else if(p==="monthlyPrice"&&!isNaN(Number(d)))a.site.plans.monthly=Number(d),s=Number(d);else if(p==="yearlyPrice"&&!isNaN(Number(d)))a.site.plans.yearly=Number(d),l=Number(d);else if(p==="currency"&&d){const h=d.toUpperCase();a.site.plans.currency=h,a.site.plans.currency_symbol=ve(h),u=h}else p==="disableBackground"?a.site.disableBackground=JSON.parse(d):p==="membersSignupAccess"&&d?a.site.members_signup_access=d:p==="portalDefaultPlan"&&d?a.site.portal_default_plan=d:p==="transistorPortalSettings"&&d&&(a.site.transistor_portal_settings=JSON.parse(d))}return a.site.portal_plans=i,a.site.portal_products=r,o?a.site.portal_plans=o:s&&l&&u&&(a.site.prices=[{id:"monthly",stripe_price_id:"dummy_stripe_monthly",stripe_product_id:"dummy_stripe_product",active:1,nickname:"Monthly",currency:u,amount:s,type:"recurring",interval:"month"},{id:"yearly",stripe_price_id:"dummy_stripe_yearly",stripe_product_id:"dummy_stripe_product",active:1,nickname:"Yearly",currency:u,amount:l,type:"recurring",interval:"year"}]),a}fetchNotificationData(){const{type:t,status:n,duration:a,autoHide:i,closeable:o}=Sb({billingOnly:!0})||{};return["stripe:billing-update"].includes(t)?n==="success"?{showPopup:!0,popupNotification:le({type:t,status:n,duration:a,closeable:o,autoHide:i,state:this.state,message:n==="success"?"Billing info updated successfully":""})}:{showPopup:!0}:{}}fetchLinkData(t,n){const a=new URLSearchParams(window.location.search);if(a.get("action")==="unsubscribe")return a.get("key")&&a.get("uuid")?{showPopup:!0,page:"unsubscribe",pageData:{uuid:a.get("uuid"),key:a.get("key"),newsletterUuid:a.get("newsletter"),comments:a.get("comments")}}:{showPopup:!0,page:"accountEmail",pageData:{newsletterUuid:a.get("newsletter"),action:"unsubscribe",redirect:t.url+"#/portal/account/newsletters"}};if(v$({site:t})&&a.get("action")==="signup"&&a.get("success")==="true")return{showPopup:!0,page:"recommendations",pageData:{signup:!0}};const[i,o]=window.location.hash.substr(1).split("?"),r=new URLSearchParams(o??""),s=/^(?:(\w+?))?\/monthly$/,l=/^(?:(\w+?))?\/yearly$/,u=/^offers\/(\w+?)\/?$/,m=/^\/portal\/?(?:\/(\w+(?:\/\w+)*))?\/?$/,p=/^\/feedback\/(\w+?)\/(\w+?)\/?$/;if(i&&p.test(i)){const[,d,h]=i.match(p),b=parseInt(h);if(b===1||b===0)return n||r.get("uuid")&&r.get("key")?{showPopup:!0,page:"feedback",pageData:{uuid:n?null:r.get("uuid"),key:n?null:r.get("key"),postId:d,score:b}}:{showPopup:!0,page:"signin",pageData:{redirect:t.url+`#/feedback/${d}/${b}/`}}}if(i&&m.test(i)){const[,d]=i.match(m),{page:h,pageQuery:b,pageData:v}=this.getPageFromLinkPath(d,t)||{};if(!n&&h&&fk({page:h}))return{showPopup:!0,page:"signin",pageData:{redirect:t.url+`#/portal/${d}/`}};const g=["accountPlan","accountProfile"].includes(h)?"accountHome":null;return{showPopup:!(["monthly","yearly"].includes(b)||s.test(b)||l.test(b)||u.test(b)),...h?{page:h}:{},...b?{pageQuery:b}:{},...v?{pageData:v}:{},...g?{lastPage:g}:{}}}return{}}fetchPreviewData(){const[,t]=window.location.hash.substr(1).split("?");if(de(["preview"])){let n={};return de(["offerPreview"])?n=this.fetchOfferQueryStrData(t):n=this.fetchQueryStrData(t),{...n,showPopup:!0}}return{}}getColorOverride(){const t=document.querySelector("script[data-ghost]");return t&&t.dataset.accentColor?t.dataset.accentColor:!1}async fetchApiData(){const{siteUrl:t,customSiteUrl:n,apiUrl:a,apiKey:i}=this.props;try{this.GhostApi=this.props.api||Zs({siteUrl:t,apiUrl:a,apiKey:i});const{site:o,member:r,offers:s}=await this.GhostApi.init(),l=this.getColorOverride();return l&&(o.accent_color=l),this.setupFirstPromoter({site:o,member:r}),this.setupSentry({site:o}),{site:o,member:r,offers:s}}catch(o){if(de(["dev","test"],{customSiteUrl:n}))return{};throw o}}setupSentry({site:t}){if(de(["test"]))return null;const{portal_sentry:n,portal_version:a,version:i}=t,r=`portal@2.66.8|ghost@${i}`;n&&n.dsn&&Gj({dsn:n.dsn,environment:n.env||"development",release:r,beforeSend:s=>u$({event:s})?s:null,allowUrls:[/https?:\/\/((www)\.)?unpkg\.com\/@tryghost\/portal/]})}setupFirstPromoter({site:t,member:n}){if(de(["test"]))return null;const a=P$({site:t});let i=yd({site:t});if(i=i==null?void 0:i.replace(/^(\S*\.)?(\S*\.\S*)$/i,".$2"),a&&i){const o=document.createElement("script");o.type="text/javascript",o.async=!0,o.src="https://cdn.firstpromoter.com/fprom.js",o.onload=o.onreadystatechange=function(){let s=this.readyState;if(!s||s==="complete"||s==="loaded")try{if(window.$FPROM.init(a,i),Y$({member:n})){const l=n.email,u=n.uuid;if(window.$FPROM)window.$FPROM.trackSignup({email:l,uid:u});else{const m=window._fprom||[];window._fprom=m,m.push(["event","signup"]),m.push(["email",l]),m.push(["uid",u])}}}catch{}};const r=document.getElementsByTagName("script")[0];r.parentNode.insertBefore(o,r)}}async dispatchAction(t,n){clearTimeout(this.timeoutId),this.setState({action:`${t}:running`,actionErrorMessage:null});try{const a=await jz({action:t,data:n,state:this.state,api:this.GhostApi});this.setState(a),a&&a.action&&!a.action.includes(":failed")&&(this.timeoutId=setTimeout(()=>{this.setState({action:""})},2e3))}catch(a){if(console.error(`[Portal] Failed to dispatch action: ${t}`,a),n&&n.throwErrors)throw a;const i=le({type:`${t}:failed`,autoHide:!0,closeable:!0,status:"error",state:this.state,meta:{error:a}});this.setState({action:`${t}:failed`,actionErrorMessage:Qt(a,f("An unexpected error occured. Please try again or <a>contact support</a> if the error persists.")),popupNotification:i})}}updateStateForPreviewLinks(){const{site:t,...n}=this.fetchPreviewData(),{site:a,...i}=this.fetchLinkData(this.state.site,this.state.member),o={site:{...this.state.site,...a||{},...t||{},plans:{...this.state.site&&this.state.site.plans,...(a||{}).plans,...(t||{}).plans}},...i,...n};this.handleSignupQuery({site:o.site,pageQuery:o.pageQuery}),this.setState(o)}async handleOfferQuery({site:t,offerId:n,member:a=this.state.member}){const{portal_button:i}=t;if(md(),!Mt({member:a})||Tn({member:a}))try{const o=await this.GhostApi.site.offer({offerId:n}),r=o==null?void 0:o.offers[0];if(!r||!r.tier||wd({offer:r})||!D$({site:t,offer:r}))return;if(i)this.dispatchAction("openPopup",{page:"offer",pageData:o==null?void 0:o.offers[0]});else{const s=Qn({site:t,productId:r.tier.id}),l=r.cadence==="month"?s.monthlyPrice:s.yearlyPrice;if(this.dispatchAction("openPopup",{page:"loading"}),a){const{tierId:u,cadence:m}=ea({site:t,priceId:l.id});this.dispatchAction("checkoutPlan",{plan:l.id,offerId:n,tierId:u,cadence:m})}else{const{tierId:u,cadence:m}=ea({site:t,priceId:l.id});this.dispatchAction("signup",{plan:l.id,offerId:n,tierId:u,cadence:m})}}}catch{}}handleSignupQuery({site:t,pageQuery:n,member:a}){const i=/^offers\/(\w+?)\/?$/;let o=n;if(i.test(n||"")){const[,s]=n.match(i);this.handleOfferQuery({site:t,offerId:s,member:a});return}fb({site:t,pageQuery:n})&&(o=fb({site:t,pageQuery:n}));const r=b$({site:t,priceId:o});if(n&&n!=="free"){md();const s=(r==null?void 0:r.id)||o;s!=="free"&&this.dispatchAction("openPopup",{page:"loading"});const{tierId:l,cadence:u}=ea({site:t,priceId:s});this.dispatchAction("signup",{plan:s,tierId:l,cadence:u})}}getPageFromLinkPath(t){const n=/^signup\/?(?:\/(\w+?))?\/?$/,a=/^signup\/?(?:\/(\w+?))\/monthly\/?$/,i=/^signup\/?(?:\/(\w+?))\/yearly\/?$/,o=/^offers\/(\w+?)\/?$/;if(t===void 0||t==="")return{page:"default"};if(o.test(t))return{pageQuery:t};if(t==="signup")return{page:"signup"};if(a.test(t)){const[,r]=t.match(a);return{page:"signup",pageQuery:`${r}/monthly`}}else if(i.test(t)){const[,r]=t.match(i);return{page:"signup",pageQuery:`${r}/yearly`}}else if(n.test(t)){const[,r]=t.match(n);return{page:"signup",pageQuery:r}}else{if(t==="signup/free")return{page:"signup",pageQuery:"free"};if(t==="signup/monthly")return{page:"signup",pageQuery:"monthly"};if(t==="signup/yearly")return{page:"signup",pageQuery:"yearly"};if(t==="signin")return{page:"signin"};if(t==="account")return{page:"accountHome"};if(t==="account/plans")return{page:"accountPlan"};if(t==="account/profile")return{page:"accountProfile"};if(t==="account/newsletters")return{page:"accountEmail"};if(t==="support")return{page:"support"};if(t==="support/success")return{page:"supportSuccess"};if(t==="support/error")return{page:"supportError"};if(t==="recommendations")return{page:"recommendations",pageData:{signup:!1}};if(t==="account/newsletters/help")return{page:"emailReceivingFAQ",pageData:{direct:!0}};if(t==="account/newsletters/disabled")return{page:"emailSuppressionFAQ",pageData:{direct:!0}}}return{page:"default"}}getAccentColor(){const{accent_color:t}=this.state.site||{};return bT(t)}getRetentionPreviewMember({site:t,offers:n}){var u,m,p;const a=(n||[]).find(d=>wd({offer:d})),i=(u=a==null?void 0:a.tier)==null?void 0:u.id,o=i?Qn({site:t,productId:i}):null,r=o?a.cadence==="year"?o.yearlyPrice:o.monthlyPrice:null,s=ai.preview,l=(m=s==null?void 0:s.subscriptions)==null?void 0:m[0];return!l||!o||!r?s:{...s,subscriptions:[{...l,plan:{...l.plan,amount:r.amount,interval:r.interval,currency:r.currency.toUpperCase()},price:{...l.price,price_id:r.id,amount:r.amount,interval:r.interval,currency:r.currency,product:{...(p=l.price)==null?void 0:p.product,product_id:o.id}},tier:{id:o.id,name:o.name}}]}}getContextPage({site:t,page:n,member:a}){if(!n||n==="default"){const i=Ot({site:t})||!Xt({site:t})?"signin":"signup";n=a?"accountHome":i}return im({page:n})}getContextMember({site:t,page:n,member:a,offers:i,pageData:o,customSiteUrl:r}){return de(["dev","preview"],{customSiteUrl:r})?fk({page:n})||RP({page:n})?de(["dev"],{customSiteUrl:r})?a||ai.free:de(["preview"])?n==="accountPlan"&&(o==null?void 0:o.action)==="cancel"?this.getRetentionPreviewMember({site:t,offers:i}):ai.preview:ai.paid:null:a}getContextFromState(){const{site:t,member:n,offers:a,action:i,actionErrorMessage:o,page:r,lastPage:s,showPopup:l,pageQuery:u,pageData:m,popupNotification:p,customSiteUrl:d,dir:h,scrollbarWidth:b,otcRef:v,inboxLinks:g}=this.state,y=this.getContextPage({site:t,page:r,member:n}),k=this.getContextMember({site:t,page:y,member:n,offers:a,pageData:m,customSiteUrl:d});return{api:this.GhostApi,site:t,offers:a,action:i,actionErrorMessage:o,brandColor:this.getAccentColor(),page:y,pageQuery:u,pageData:m,member:k,lastPage:s,showPopup:l,popupNotification:p,customSiteUrl:d,dir:h,scrollbarWidth:b,otcRef:v,inboxLinks:g,doAction:(x,E)=>this.dispatchAction(x,E)}}getRecommendationButtons(){return document.querySelectorAll("[data-recommendation]")||[]}setupRecommendationButtons(){const t=a=>{const i=a.currentTarget.dataset.recommendation;i?this.dispatchAction("trackRecommendationClicked",{recommendationId:i}).catch(console.error):console.warn("[Portal] Invalid usage of data-recommendation attribute")},n=this.getRecommendationButtons();for(const a of n)a.addEventListener("click",t,{passive:!0})}transformPortalLinksToRelative(){document.querySelectorAll('a[href*="#/portal"]').forEach(KP)}render(){return this.state.initStatus==="success"?c.jsx(Nz,{site:this.state.site,children:c.jsxs(_.Provider,{value:this.getContextFromState(),children:[c.jsx(rm,{}),c.jsx(Ed,{}),c.jsx(Pd,{})]})}):null}}const xk="ghost-portal-root";function Dz(){const e=document.createElement("div");e.id=xk,e.setAttribute("data-testid","portal-root"),document.body.appendChild(e)}function Mz(){const e=document.querySelector("script[data-ghost]");if(e){const t=e.dataset.i18n==="true",n=e.dataset.ghost,a=e.dataset.key,i=e.dataset.api,o=e.dataset.locale;return{siteUrl:n,apiKey:a,apiUrl:i,siteI18nEnabled:t,locale:o}}return{}}function Oz(){const e=new URL(window.location.href);e.searchParams.get("token")&&(e.searchParams.delete("token"),window.history.replaceState({},document.title,e.href))}function Fz(){const{siteUrl:e,apiKey:t,apiUrl:n,siteI18nEnabled:a,locale:i}=Mz(),o=e||window.location.origin;Dz(),Oz(),nS.render(c.jsx(Z.StrictMode,{children:c.jsx(Az,{siteUrl:o,customSiteUrl:e,apiKey:t,apiUrl:n,siteI18nEnabled:a,locale:i})}),document.getElementById(xk))}Fz()});
3563
+ `;function cP({site:e}){return dd+rP+Q$+z1+L1+y1()+Z$+G$+J$+rb+IT+kT+MT()+xd+NT+sP+lP+FT+HT+VT+WT+KT+ZT+eP+iP}const bm=class bm extends Z.Component{constructor(t){super(t),this.state={email:"",token:void 0}}componentDidMount(){const{member:t}=this.context;t&&this.context.doAction("switchPage",{page:"accountHome"})}handleSignin(t){t.preventDefault(),this.doSignin()}doSignin(){this.setState(t=>({errors:Gs({fields:this.getInputFields({state:t})})}),async()=>{const{email:t,phonenumber:n,errors:a,token:i}=this.state,{redirect:o}=this.context.pageData??{};a&&Object.values(a).filter(s=>!!s).length>0||this.context.doAction("signin",{email:t,phonenumber:n,redirect:o,token:i})})}handleInputChange(t,n){const a=n.name;this.setState({[a]:t.target.value})}onKeyDown(t){t.keyCode===13&&this.handleSignin(t)}getInputFields({state:t}){const n=t.errors||{};return[{type:"email",value:t.email,placeholder:f("jamie@example.com"),label:f("Email"),name:"email",required:!0,errorMessage:n.email||"",autoFocus:!0},{type:"text",value:t.phonenumber,placeholder:"+1 (123) 456-7890",label:"Phone number",name:"phonenumber",required:!1,tabIndex:-1,autoComplete:"off",hidden:!0}]}renderSubmitButton(){const{action:t}=this.context;let n=!1;const a=t==="signin:running";let i=f(a?"Sending login link...":"Continue");const o=!!a;return t==="signin:failed"&&(i=f("Retry"),n=!0),c.jsx(fe,{dataTestId:"signin",retry:n,style:{width:"100%"},onClick:r=>this.handleSignin(r),disabled:o,brandColor:this.context.brandColor,label:i,isRunning:a})}renderSignupMessage(){const{brandColor:t}=this.context;return c.jsxs("div",{className:"gh-portal-signup-message",children:[c.jsx("div",{children:f("Don't have an account?")}),c.jsx("button",{"data-test-button":"signup-switch",className:"gh-portal-btn gh-portal-btn-link",style:{color:t},onClick:()=>this.context.doAction("switchPage",{page:"signup"}),children:c.jsx("span",{children:f("Sign up")})})]})}renderForm(){const{site:t}=this.context,n=As({site:t})&&Xt({site:t});return Pn({site:t})?c.jsxs("section",{children:[c.jsx("div",{className:"gh-portal-section",children:c.jsx(Ws,{fields:this.getInputFields({state:this.state}),onChange:(a,i)=>this.handleInputChange(a,i),onKeyDown:(a,i)=>this.onKeyDown(a,i)})}),c.jsxs("footer",{className:"gh-portal-signin-footer",children:[this.renderSubmitButton(),n&&this.renderSignupMessage()]})]}):c.jsx("section",{children:c.jsx("div",{className:"gh-portal-section",children:c.jsx("p",{className:"gh-portal-members-disabled-notification","data-testid":"members-disabled-notification-text",children:f("Memberships unavailable, contact the owner for access.")})})})}renderSiteIcon(){const{site:t}=this.context,n=t.icon;return n?c.jsx("img",{className:"gh-portal-signup-logo",src:n,alt:this.context.site.title}):Pn({site:t})?null:c.jsx(Bb,{className:"gh-portal-icon gh-portal-icon-invitation"})}renderSiteTitle(){const{site:t}=this.context,n=t.title;return Pn({site:t})?c.jsx("h1",{className:"gh-portal-main-title",children:f("Sign in")}):c.jsx("h1",{className:"gh-portal-main-title",children:n})}renderFormHeader(){return c.jsxs("header",{className:"gh-portal-signin-header",children:[this.renderSiteIcon(),this.renderSiteTitle()]})}render(){return c.jsxs(c.Fragment,{children:[c.jsx(we,{}),c.jsx("div",{className:"gh-portal-logged-out-form-container",children:c.jsxs("div",{className:"gh-portal-content signin",children:[this.renderFormHeader(),this.renderForm()]})})]})}};bm.contextType=_;let em=bm;const uP=({handleSignout:e,supportAddress:t=""})=>{const n=`mailto:${t}`;return c.jsxs("footer",{className:"gh-portal-account-footer",children:[c.jsx("ul",{className:"gh-portal-account-footermenu",children:c.jsx("li",{children:c.jsx("button",{"data-test-button":"footer-signout",className:"gh-portal-btn",name:"logout","aria-label":"logout",onClick:a=>e(a),children:f("Sign out")})})}),c.jsx("div",{className:"gh-portal-account-footerright",children:c.jsx("ul",{className:"gh-portal-account-footermenu",children:c.jsx("li",{children:c.jsx("a",{"data-test-link":"footer-support",className:"gh-portal-btn gh-portal-btn-branded",href:n,onClick:()=>{n&&window.open(n)},children:f("Contact support")})})})})]})},dP=()=>{const{member:e,brandColor:t}=w.useContext(_),n=e.avatar_image;return c.jsxs("header",{className:"gh-portal-account-header",children:[c.jsx(ud,{gravatar:n,style:{userIcon:{color:t,width:"56px",height:"56px",padding:"2px"}}}),c.jsx("h2",{className:"gh-portal-main-title",children:f("Your account")})]})},mP=()=>{const{site:e,action:t,brandColor:n,doAction:a}=w.useContext(_);if(!As({site:e})||!Xt({site:e}))return null;const i=["checkoutPlan:running"].includes(t),o=()=>{a("switchPage",{page:"accountPlan",lastPage:"accountHome"})};return c.jsx(fe,{dataTestId:"view-plans",isRunning:i,label:f("View plans"),onClick:()=>o(),brandColor:n,style:{width:"100%"}})},pP=()=>{const{member:e,site:t}=w.useContext(_),{is_stripe_configured:n}=t;if(!n||Ka({site:t}))return null;const a=rt({member:e}),i=Tn({member:e});if(i&&!a)return null;if(a){const o=a==null?void 0:a.current_period_end;if(i&&pd({member:e})){const r=pd({member:e}),s=Dt(r);return c.jsx("div",{className:"gh-portal-section",children:c.jsx("p",{className:"gh-portal-text-center gh-portal-free-ctatext",children:f("Your subscription will expire on {expiryDate}",{expiryDate:s})})})}if(a!=null&&a.cancel_at_period_end||i)return null;if(fd({sub:a})){const r=Dt(a.trial_end_at);return c.jsx("div",{className:"gh-portal-section",children:c.jsx("p",{className:"gh-portal-text-center gh-portal-free-ctatext",children:f("Your subscription will start on {subscriptionStart}",{subscriptionStart:r})})})}return c.jsx("div",{className:"gh-portal-section",children:c.jsx("p",{className:"gh-portal-text-center gh-portal-free-ctatext",children:f("Your subscription will renew on {renewalDate}",{renewalDate:Dt(o)})})})}return c.jsxs("div",{className:"gh-portal-section",children:[c.jsx("p",{className:"gh-portal-text-center gh-portal-free-ctatext",children:f("You currently have a free membership, upgrade to a paid subscription for full access.")}),c.jsx(mP,{})]})},hP=()=>{const{member:e,doAction:t,action:n,brandColor:a}=w.useContext(_),i=rt({member:e});if(!i||!i.cancel_at_period_end)return null;const o=f("Resume subscription"),r=["continueSubscription:running"].includes(n),s=!!r,l=Dt(i.current_period_end);return c.jsx("div",{className:"gh-portal-cancelcontinue-container",children:c.jsxs("div",{className:"gh-portal-cancel-banner",children:[c.jsx("p",{children:c.jsx(Oe,{string:f("Your subscription has been canceled and will expire on {expiryDate}."),mapping:{expiryDate:c.jsx("strong",{children:l})}})}),c.jsx(fe,{onClick:()=>{t("continueSubscription",{subscriptionId:i.id})},isRunning:r,disabled:s,isPrimary:!0,brandColor:a,label:o,style:{width:"100%"}})]})})},fP=e=>w.createElement("svg",{width:24,height:24,viewBox:"0 0 24 24",fill:"none",xmlns:"http://www.w3.org/2000/svg",...e},w.createElement("defs",null,w.createElement("style",null,".a{fill:none;stroke:currentColor;stroke-linecap:round;stroke-linejoin:round;stroke-width:1.5px;}")),w.createElement("path",{d:"M22.939 2.56V8.817C22.9391 9.61244 22.6232 10.3754 22.061 10.938L10.5 22.5C10.2187 22.7812 9.83721 22.9392 9.43946 22.9392C9.04172 22.9392 8.66026 22.7812 8.37896 22.5L1.49997 15.62C1.21876 15.3387 1.06079 14.9572 1.06079 14.5595C1.06079 14.1618 1.21876 13.7803 1.49997 13.499L13.061 1.938C13.6236 1.37572 14.3865 1.0599 15.182 1.06H21.439C21.8368 1.06 22.2183 1.21803 22.4996 1.49934C22.7809 1.78064 22.939 2.16217 22.939 2.56V2.56Z",className:"a"}),w.createElement("path",{d:"M17.689 7.81C16.8605 7.81 16.189 7.13842 16.189 6.31C16.189 5.48157 16.8605 4.81 17.689 4.81C18.5174 4.81 19.189 5.48157 19.189 6.31C19.189 7.13842 18.5174 7.81 17.689 7.81Z",className:"a"})),gP=()=>{const{member:e,site:t,doAction:n}=w.useContext(_),a=()=>{const d=rt({member:e});n("manageBilling",{subscriptionId:d.id})},i=()=>{const{is_stripe_configured:d}=t;d&&n("switchPage",{page:"accountPlan",lastPage:"accountHome"})},o=({price:d,isComplimentary:h,subscription:b})=>{const{next_payment:v}=b||{};let g="";if(d){const{amount:C=0,currency:N,interval:I}=d;g=`${Intl.NumberFormat("en",{currency:N,style:"currency"}).format(C/100)}/${f(I)}`}const y=pd({member:e});h&&(y?g=`${f("Complimentary")} - ${f("Expires {expiryDate}",{expiryDate:y})}`:g=g?`${f("Complimentary")} (${g})`:f("Complimentary"));let k="";if(fd({sub:b}))return k="gh-portal-account-old-price",c.jsxs(c.Fragment,{children:[c.jsx("p",{className:k,children:g}),c.jsx(yP,{subscription:b})]});let E=bP({nextPayment:v,currentPeriodEnd:b==null?void 0:b.current_period_end});E&&(k="gh-portal-account-old-price");const z=()=>E?c.jsxs("p",{className:"gh-portal-account-discountcontainer","data-testid":"offer-label",children:[c.jsx(fP,{className:"gh-portal-account-tagicon"}),c.jsx("span",{children:E})]}):null;return c.jsxs(c.Fragment,{children:[c.jsx("p",{className:k,children:g}),c.jsx(z,{})]})},r=({isPaid:d})=>Ka({site:t})&&!d?null:c.jsx("button",{className:"gh-portal-btn gh-portal-btn-list",onClick:h=>i(),"data-test-button":"change-plan",children:f("Change")}),s=({defaultCardLast4:d})=>{if(d){const h=`**** **** **** ${d}`;return c.jsx("p",{children:h})}return null},l=({defaultCardLast4:d,isComplimentary:h})=>{const{action:b}=w.useContext(_),v=b==="manageBilling:running"?c.jsx(Za,{className:"gh-portal-billing-button-loader"}):f("Update");return h?null:c.jsxs("section",{children:[c.jsxs("div",{className:"gh-portal-list-detail",children:[c.jsx("h3",{children:f("Billing info & receipts")}),c.jsx(s,{defaultCardLast4:d})]}),c.jsx("button",{className:"gh-portal-btn gh-portal-btn-list",onClick:g=>a(),"data-test-button":"manage-billing",children:v})]})},u=rt({member:e}),m=Tn({member:e}),p=Mt({member:e});if(u||m){const{price:d,default_payment_card_last4:h}=u||{};let b=f("Plan");return Ds({site:t})&&cb({member:e})&&(b=cb({member:e})),c.jsxs(c.Fragment,{children:[c.jsxs("section",{children:[c.jsxs("div",{className:"gh-portal-list-detail",children:[c.jsxs("h3",{children:[b,(u==null?void 0:u.cancel_at_period_end)&&c.jsx("span",{className:"gh-portal-canceled-badge",children:f("Canceled")})]}),c.jsx(o,{price:d,isComplimentary:m,subscription:u})]}),c.jsx(r,{isPaid:p})]}),c.jsx(l,{isComplimentary:m,defaultCardLast4:h})]})}return null};function yP({subscription:e}){if(fd({sub:e})){const t=Dt(e.trial_end_at);return c.jsx("p",{className:"gh-portal-account-discountcontainer",children:c.jsx("div",{children:c.jsx("span",{children:f("Free Trial – Ends {trialEnd}",{trialEnd:t})})})})}return null}function bP({nextPayment:e,currentPeriodEnd:t}){if(!e)return"";const n=e.discount;if(!n)return"";let a="";return n.duration==="forever"?a=f("Forever"):n.duration==="repeating"&&n.end?a=f("Ends {offerEndDate}",{offerEndDate:Dt(n.end)}):n.duration==="once"&&t&&(a=f("Ends {offerEndDate}",{offerEndDate:Dt(t)})),`${`${Intl.NumberFormat("en",{currency:e.currency,style:"currency"}).format(e.amount/100)}/${f(e.interval)}`}${a?` — ${a}`:""}`}function kP(){const{member:e,site:t,doAction:n}=w.useContext(_);let{newsletters:a}=e;const i=!!(a!=null&&a.length);let o=f(i?"Subscribed":"Unsubscribed");const r=s=>{var m;s.preventDefault();const l=Xn({site:t}),u=(m=e==null?void 0:e.newsletters)!=null&&m.length?[]:l;n("updateNewsletterPreference",{newsletters:u})};return c.jsxs("section",{children:[c.jsxs("div",{className:"gh-portal-list-detail email-newsletter",children:[c.jsx("h3",{children:f("Email newsletter")}),c.jsxs("p",{children:[o," ",gd({member:e})&&i&&c.jsx("button",{className:"gh-portal-btn-text gh-email-faq-page-button",onClick:()=>n("switchPage",{page:"emailReceivingFAQ",lastPage:"accountHome"}),children:f("Not receiving emails?")})]})]}),c.jsx("div",{children:c.jsx(Bs,{dataTestId:"default-newsletter-toggle",id:"default-newsletter-toggle",onToggle:s=>{r(s)},checked:i})})]})}const mk=e=>w.createElement("svg",{fill:"none",xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 20 20",...e},w.createElement("path",{d:"m12.79 12.376 4.08 4.079m-4.08 0 4.08-4.08",stroke:"red",strokeWidth:1.35,strokeLinecap:"round",strokeLinejoin:"round"}),w.createElement("path",{d:"m10.439 17.994-2.664-2.652-2.86 1.478.111-4.239m0 0L1.677 9.232a1.344 1.344 0 0 1-.366-1.222 1.369 1.369 0 0 1 .904-1.05l13.111-4.374a1.369 1.369 0 0 1 1.76 1.758L15 10m-9.974 2.581 11.67-9.727",stroke:"#A3A3A3",strokeWidth:1.35,strokeLinecap:"round",strokeLinejoin:"round"}));function vP(){return c.jsxs("p",{className:"gh-portal-email-notice",children:[c.jsx(mk,{className:"gh-portal-email-notice-icon"}),c.jsx("span",{className:"gh-mobile-only",children:f("You're not receiving emails")}),c.jsx("span",{className:"gh-desktop-only",children:f("You're currently not receiving emails")})]})}function wP(){const{doAction:e,member:t,site:n}=w.useContext(_),a=mb({member:t}),i=xo({site:n}),o=Ms({site:n}),r=a?"emailSuppressed":"accountEmail",s=!i&&!o,l=()=>a||s?c.jsx(vP,{}):c.jsx("p",{children:f("Update your preferences")});return c.jsxs("section",{children:[c.jsxs("div",{className:"gh-portal-list-detail",children:[c.jsx("h3",{children:f("Emails")}),l()]}),c.jsx("button",{className:"gh-portal-btn gh-portal-btn-list",onClick:()=>{e("switchPage",{page:r,lastPage:"accountHome"})},"data-test-button":"manage-newsletters",children:f("Manage")})]})}const SP=()=>{const{member:e,site:t}=w.useContext(_),a=t.transistor_portal_settings||{enabled:t.transistor_portal_enabled===!0,heading:t.transistor_portal_heading,description:t.transistor_portal_description,button_text:t.transistor_portal_button_text,url_template:t.transistor_portal_url_template},i=(a==null?void 0:a.enabled)===!0,o=e==null?void 0:e.uuid,r=yb(),[s,l]=w.useState(r&&i);return w.useEffect(()=>{if(r){l(i);return}if(!i||!o){l(!1);return}l(!1);const u=new AbortController;return(async()=>{try{const p=await fetch(`https://partner.transistor.fm/ghost/member/${o}`,{signal:u.signal});if(p.ok){const d=await p.json();u.signal.aborted||l((d==null?void 0:d.member)===!0)}}catch(p){if(u.signal.aborted)return;console.warn("Error in Transistor request",p)}})(),()=>u.abort()},[i,o,r]),{transistor:{enabled:i,hasPodcasts:s,memberUuid:o,settings:a}}},EP=(e,t)=>jo({site:e})&&xo({site:e})||Ms({site:e})||mb({member:t}),xP=e=>!jo({site:e})&&xo({site:e})&&!Ms({site:e}),CP=()=>{const{member:e,doAction:t,site:n}=w.useContext(_),{name:a,email:i}=e,{transistor:o}=SP(),r=()=>{t("switchPage",{page:"accountProfile",lastPage:"accountHome"})},s=EP(n,e),l=xP(n);return c.jsx("div",{children:c.jsxs("div",{className:"gh-portal-list",children:[c.jsxs("section",{children:[c.jsxs("div",{className:"gh-portal-list-detail",children:[c.jsx("h3",{children:a||f("Account")}),c.jsx("p",{children:i})]}),c.jsx("button",{"data-test-button":"edit-profile",className:"gh-portal-btn gh-portal-btn-list",onClick:u=>r(),children:f("Edit")})]}),c.jsx(gP,{}),s&&c.jsx(wP,{}),l&&c.jsx(kP,{}),o.enabled&&c.jsx(oP,{hasPodcasts:o.hasPodcasts,memberUuid:o.memberUuid,settings:o.settings})]})})},jP=()=>c.jsxs("div",{className:"gh-portal-content gh-portal-account-main",children:[c.jsx(we,{}),c.jsx(dP,{}),c.jsxs("section",{className:"gh-portal-account-data",children:[c.jsx(pP,{}),c.jsx(hP,{}),c.jsx(CP,{})]})]}),km=class km extends Z.Component{componentDidMount(){const{member:t,site:n}=this.context;Pn({site:n})||this.context.doAction("signout"),t||this.context.doAction("switchPage",{page:"signin",pageData:{redirect:window.location.href}})}handleSignout(t){t.preventDefault(),this.context.doAction("signout")}render(){const{member:t,site:n}=this.context,a=$o({site:n});return!t||!Pn({site:n})?null:c.jsxs("div",{className:"gh-portal-account-wrapper",children:[c.jsx(jP,{}),c.jsx(uP,{onClose:()=>this.context.doAction("closePopup"),handleSignout:i=>this.handleSignout(i),supportAddress:a})]})}};km.contextType=_;let tm=km;const vm=class vm extends Z.Component{constructor(t,n){super(t,n);const{name:a="",email:i=""}=n.member||{};this.state={name:a,email:i}}componentDidMount(){const{member:t}=this.context;t||this.context.doAction("switchPage",{page:"signin"})}handleSignout(t){t.preventDefault(),this.context.doAction("signout")}onBack(){this.context.doAction("back")}onProfileSave(t){t.preventDefault(),this.setState(n=>({errors:Gs({fields:this.getInputFields({state:n})})}),()=>{const{email:n,name:a,errors:i}=this.state;i&&Object.values(i).filter(r=>!!r).length>0||(this.context.doAction("clearPopupNotification"),this.context.doAction("updateProfile",{email:n,name:a}))})}renderSaveButton(){const t=this.context.action==="updateProfile:running";let n=f("Save");this.context.action==="updateProfile:failed"&&(n=f("Retry"));const a=!!t;return c.jsx(fe,{dataTestId:"save-button",isRunning:t,onClick:i=>this.onProfileSave(i),disabled:a,brandColor:this.context.brandColor,label:n,style:{width:"100%"}})}renderDeleteAccountButton(){return c.jsx("div",{style:{cursor:"pointer",color:"red"},role:"button",children:f("Delete account")})}renderAccountFooter(){return c.jsx("footer",{className:"gh-portal-action-footer",children:this.renderSaveButton()})}renderHeader(){return c.jsxs("header",{className:"gh-portal-detail-header",children:[c.jsx(Qa,{brandColor:this.context.brandColor,hidden:!this.context.lastPage,onClick:t=>this.onBack(t)}),c.jsx("h3",{className:"gh-portal-main-title",children:f("Account settings")})]})}renderUserAvatar(){const t=this.context.member&&this.context.member.avatar_image,n={position:"relative",display:"flex",width:"64px",height:"64px",marginBottom:"6px",borderRadius:"100%",boxShadow:"0 0 0 3px #fff",border:"1px solid gray",overflow:"hidden",justifyContent:"center",alignItems:"center"};return c.jsx("div",{style:n,children:c.jsx(ud,{gravatar:t,style:{userIcon:{color:"black",width:"56px",height:"56px"}}})})}handleInputChange(t,n){const a=n.name;this.setState({[a]:t.target.value})}getInputFields({state:t,fieldNames:n}){const a=t.errors||{},i=[{type:"text",value:t.name,placeholder:f("Jamie Larson"),label:f("Name"),name:"name",required:!1,errorMessage:a.name||""},{type:"email",value:t.email,placeholder:f("jamie@example.com"),label:f("Email"),name:"email",required:!0,errorMessage:a.email||""}];return n&&n.length>0?i.filter(o=>n.includes(o.name)):i}onKeyDown(t){t.keyCode===13&&this.onProfileSave(t)}renderProfileData(){return c.jsx("div",{className:"gh-portal-section",children:c.jsx(Ws,{fields:this.getInputFields({state:this.state}),onChange:(t,n)=>this.handleInputChange(t,n),onKeyDown:(t,n)=>this.onKeyDown(t,n)})})}render(){const{member:t}=this.context;return t?c.jsxs(c.Fragment,{children:[c.jsxs("div",{className:"gh-portal-content with-footer",children:[c.jsx(we,{}),this.renderHeader(),c.jsx("div",{className:"gh-portal-section",children:this.renderProfileData()})]}),this.renderAccountFooter()]}):null}};vm.contextType=_;let nm=vm;function $P(){const{brandColor:e,lastPage:t,doAction:n}=w.useContext(_);return c.jsxs("header",{className:"gh-portal-detail-header",children:[c.jsx(Qa,{brandColor:e,hidden:!t,onClick:()=>{n("back")}}),c.jsx("h3",{className:"gh-portal-main-title",children:f("Email preferences")})]})}function TP({newsletter:e,subscribedNewsletters:t,setSubscribedNewsletters:n}){const a=t.some(i=>i.id===(e==null?void 0:e.id));return c.jsxs("section",{className:"gh-portal-list-toggle-wrapper","data-testid":"newsletter-toggle",children:[c.jsxs("div",{className:"gh-portal-list-detail",children:[c.jsx("h3",{children:e.name}),c.jsx("p",{children:e==null?void 0:e.description})]}),c.jsx("div",{style:{display:"flex",alignItems:"center"},children:c.jsx(Bs,{id:e.id,onToggle:(i,o)=>{let r=[];o?r=t.filter(s=>s.id!==e.id).concat(e):r=t.filter(s=>s.id!==e.id),n(r)},checked:a,dataTestId:"switch-input"})})]})}function PP({updateCommentNotifications:e,isCommentsEnabled:t,enableCommentNotifications:n}){const{doAction:a}=w.useContext(_),i=!!n;if(!t)return null;const o=async(r,s)=>{await e(s),a("showPopupNotification",{action:"updated:success",message:f("Comment preferences updated.")})};return c.jsxs("section",{className:"gh-portal-list-toggle-wrapper","data-testid":"comment-toggle",children:[c.jsxs("div",{className:"gh-portal-list-detail",children:[c.jsx("h3",{children:f("Comments")}),c.jsx("p",{children:f("Get notified when someone replies to your comment")})]}),c.jsx("div",{style:{display:"flex",alignItems:"center"},children:c.jsx(Bs,{id:"comments",onToggle:o,checked:i,dataTestId:"switch-input"})})]})}function zP({subscribedNewsletters:e,setSubscribedNewsletters:t,hasNewslettersEnabled:n}){const{site:a}=w.useContext(_),i=Xn({site:a});return n?i.map(o=>c.jsx(TP,{newsletter:o,subscribedNewsletters:e,setSubscribedNewsletters:t},o==null?void 0:o.id)):null}function IP({site:e,isPaid:t}){return t?c.jsx("p",{style:{textAlign:"center",marginTop:"12px",marginBottom:"0",color:"var(--grey6)"},children:f("Unsubscribing from emails will not cancel your paid subscription to {title}",{title:e==null?void 0:e.title})}):null}function pk({hasNewslettersEnabled:e,notification:t,subscribedNewsletters:n,updateSubscribedNewsletters:a,updateCommentNotifications:i,unsubscribeAll:o,isPaidMember:r,isCommentsEnabled:s,enableCommentNotifications:l}){const{brandColor:u,doAction:m,member:p,site:d}=w.useContext(_),h=!(n!=null&&n.length)&&(s&&!l||!s),v=t||(()=>null);return c.jsxs("div",{className:"gh-portal-content with-footer",children:[c.jsx(we,{}),c.jsx($P,{}),c.jsx(v,{}),c.jsx("div",{className:"gh-portal-section flex",children:c.jsxs("div",{className:"gh-portal-list",children:[c.jsx(zP,{hasNewslettersEnabled:e,subscribedNewsletters:n,setSubscribedNewsletters:g=>{let y=g.map(k=>({id:k.id}));a(y)}}),c.jsx(PP,{isCommentsEnabled:s,enableCommentNotifications:l,updateCommentNotifications:i})]})}),c.jsx("div",{className:"gh-portal-btn-product gh-portal-btn-unsubscribe",style:{marginTop:"-48px",marginBottom:0},children:c.jsx(fe,{isRunning:!1,onClick:()=>{o()},disabled:h,brandColor:u,isPrimary:!1,label:f("Unsubscribe from all emails"),isDestructive:!0,style:{width:"100%",zIndex:900},dataTestId:"unsubscribe-from-all-emails"})}),c.jsxs("footer",{className:"gh-portal-action-footer"+(gd({member:p})?" gh-feature-suppressions":""),children:[c.jsx("div",{style:{width:"100%"},children:c.jsx(IP,{isPaid:r,site:d,subscribedNewsletters:n})}),gd({member:p})&&!h&&c.jsxs("div",{className:"gh-portal-footer-secondary",children:[c.jsx("span",{className:"gh-portal-footer-secondary-light",children:f("Not receiving emails?")}),c.jsxs("button",{className:"gh-portal-btn-text gh-email-faq-page-button",onClick:()=>m("switchPage",{page:"emailReceivingFAQ",pageData:{direct:!1}}),children:[f("Get help")," ",c.jsx("span",{className:"right-arrow",children:"→"})]})]})]})]})}function NP(){const{member:e,doAction:t,site:n,pageData:a}=w.useContext(_);let i,o;a&&(i=a.newsletterUuid,o=a.action);const[r,s]=w.useState(!0),l=Xn({site:n}),u=xo({site:n});w.useEffect(()=>{e||t("switchPage",{page:"signin"})},[e,t]),w.useEffect(()=>{if(i&&o==="unsubscribe"){const g=e==null?void 0:e.newsletters.filter(y=>y.uuid!==i);h(g),s(!1),t("updateNewsletterPreference",{newsletters:g})}},[]);const m=()=>{if(a.comments&&b){const k=r?"gh-portal-hide":"";return c.jsx(c.Fragment,{children:c.jsx("p",{className:`gh-portal-text-center gh-portal-header-message ${k}`,children:c.jsx(Oe,{string:f("{memberEmail} will no longer receive emails when someone replies to your comments."),mapping:{memberEmail:c.jsx("strong",{children:e==null?void 0:e.email})}})})})}const g=l==null?void 0:l.find(k=>k.uuid===a.newsletterUuid);if(!g)return null;const y=r?"gh-portal-hide":"";return c.jsx(c.Fragment,{children:c.jsx("p",{className:`gh-portal-text-center gh-portal-header-message ${y}`,children:c.jsx(Oe,{string:f("{memberEmail} will no longer receive {newsletterName} newsletter."),mapping:{memberEmail:c.jsx("strong",{children:e==null?void 0:e.email}),newsletterName:c.jsx("strong",{children:g==null?void 0:g.name})}})})})},p=[...(e==null?void 0:e.newsletters)||[]],[d,h]=w.useState(p),{comments_enabled:b}=n,{enable_comment_notifications:v}=e||{};return w.useEffect(()=>{h((e==null?void 0:e.newsletters)||[])},[e==null?void 0:e.newsletters]),c.jsx(pk,{hasNewslettersEnabled:u,notification:i?m:null,subscribedNewsletters:d,updateSubscribedNewsletters:g=>{h(g),t("updateNewsletterPreference",{newsletters:g}),t("showPopupNotification",{action:"updated:success",message:f("Email preferences updated.")})},updateCommentNotifications:async g=>{t("updateNewsletterPreference",{enableCommentNotifications:g})},unsubscribeAll:()=>{h([]),t("showPopupNotification",{action:"updated:success",message:f("Unsubscribed from all emails.")});const g={newsletters:[]};b&&(g.enableCommentNotifications=!1),t("updateNewsletterPreference",g)},isPaidMember:Mt({member:e}),isCommentsEnabled:b!=="off",enableCommentNotifications:v})}function AP(){const{site:e}=w.useContext(_),t=e.icon;return t?c.jsx("img",{className:"gh-portal-unsubscribe-logo",src:t,alt:e.title}):null}function DP(){const{site:e}=w.useContext(_),t=e.title||"";return c.jsxs("header",{className:"gh-portal-header",children:[c.jsx(AP,{}),c.jsx("h2",{className:"gh-portal-publication-title",children:t})]})}async function hk({api:e,memberUuid:t,key:n,newsletters:a,enableCommentNotifications:i}){try{return await e.member.updateNewsletters({uuid:t,key:n,newsletters:a,enableCommentNotifications:i})}catch{}}function MP(){const{site:e,api:t,pageData:n,member:a,doAction:i}=w.useContext(_),[o,r]=w.useState(),[s,l]=w.useState(!0),u=Xn({site:e}),m=u.filter(I=>I.subscribe_on_signup),[p,d]=w.useState(!1),[h,b]=w.useState(m),[v,g]=w.useState(!1),{comments_enabled:y}=e,{enable_comment_notifications:k=!1}=o||{},x=xo({site:e}),E=async I=>{a?i("updateNewsletterPreference",{newsletters:I}):await hk({api:t,memberUuid:n.uuid,key:n.key,newsletters:I}),b(I);const $={action:"updated:success",message:f("Email preferences updated.")};i("showPopupNotification",$)},z=async I=>{let $;a?(await i("updateNewsletterPreference",{enableCommentNotifications:I}),$={...a,enable_comment_notifications:I}):$=await hk({api:t,memberUuid:n.uuid,key:n.key,enableCommentNotifications:I}),r($),i("showPopupNotification",{action:"updated:success",message:f("Comment preferences updated.")})},C=async()=>{let I;a?(await i("updateNewsletterPreference",{newsletters:[],enableCommentNotifications:!1}),I={...a},I.newsletters=[],I.enable_comment_notifications=!1):I=await t.member.updateNewsletters({uuid:n.uuid,key:n.key,newsletters:[],enableCommentNotifications:!1}),b([]),r(I),i("showPopupNotification",{action:"updated:success",message:f("Unsubscribed from all emails.")})};if(w.useEffect(()=>{(async()=>{let I;try{I=await t.member.newsletters({uuid:n.uuid,key:n.key}),r(I??null),l(!1)}catch(V){console.error("[PORTAL] Error fetching member newsletters",V),r(null),l(!1);return}if(I===null)return;const $=(I==null?void 0:I.newsletters)||[];b($),(u==null?void 0:u.length)===1&&!y&&!n.newsletterUuid?await E([]):n.newsletterUuid?await E($==null?void 0:$.filter(V=>V.uuid!==n.newsletterUuid)):n.comments&&y&&await z(!1)})()},[y,n.uuid,n.newsletterUuid,n.comments,e.url,u==null?void 0:u.length]),s)return c.jsx(Fo,{});if(!o)return c.jsxs("div",{className:"gh-portal-content gh-portal-feedback with-footer",children:[c.jsx(we,{}),c.jsx("div",{className:"gh-feedback-icon gh-feedback-icon-error",children:c.jsx(jd,{})}),c.jsx("h1",{className:"gh-portal-main-title",children:f("That didn't go to plan")}),c.jsx("div",{children:c.jsx("p",{className:"gh-portal-text-center",children:f("We couldn't unsubscribe you as the email address was not found. Please contact the site owner.")})}),c.jsx(fe,{style:{width:"100%"},retry:!1,onClick:()=>i("closePopup"),disabled:!1,brandColor:"#000000",label:f("Close"),isRunning:!1,tabIndex:3,classes:"sticky bottom"})]});if((u==null?void 0:u.length)===1&&!y&&!v)return c.jsxs("div",{className:"gh-portal-content gh-portal-unsubscribe with-footer",children:[c.jsx(we,{}),c.jsx(DP,{}),c.jsx("h1",{className:"gh-portal-main-title",children:f("Successfully unsubscribed")}),c.jsxs("div",{children:[c.jsx("p",{className:"gh-portal-text-center",children:c.jsx(Oe,{string:f("{memberEmail} will no longer receive this newsletter."),mapping:{memberEmail:c.jsx("strong",{children:o==null?void 0:o.email})}})}),c.jsx("p",{className:"gh-portal-text-center",children:c.jsx(Oe,{string:f("Didn't mean to do this? Manage your preferences <button>here</button>."),mapping:{button:c.jsx("button",{className:"gh-portal-btn-link gh-portal-btn-branded gh-portal-btn-inline",onClick:()=>{g(!0)}})}})})]})]});const N=()=>{if(n.comments&&y){const V=p?"gh-portal-hide":"";return c.jsx(c.Fragment,{children:c.jsx("p",{className:`gh-portal-text-center gh-portal-header-message ${V}`,children:c.jsx(Oe,{string:f("{memberEmail} will no longer receive emails when someone replies to your comments."),mapping:{memberEmail:c.jsx("strong",{children:o==null?void 0:o.email})}})})})}const I=u==null?void 0:u.find(V=>V.uuid===n.newsletterUuid);if(!I)return null;const $=p?"gh-portal-hide":"";return c.jsx(c.Fragment,{children:c.jsx("p",{className:`gh-portal-text-center gh-portal-header-message ${$}`,children:c.jsx(Oe,{string:f("{memberEmail} will no longer receive {newsletterName} newsletter."),mapping:{memberEmail:c.jsx("strong",{children:o==null?void 0:o.email}),newsletterName:c.jsx("strong",{children:I==null?void 0:I.name})}})})})};return c.jsx(pk,{hasNewslettersEnabled:x,notification:N,subscribedNewsletters:h,updateSubscribedNewsletters:async I=>{await E(I),d(!0)},updateCommentNotifications:z,unsubscribeAll:async()=>{await C(),d(!0)},isPaidMember:(o==null?void 0:o.status)!=="free",isCommentsEnabled:y!=="off",enableCommentNotifications:k})}function OP(){const{brandColor:e,lastPage:t,doAction:n,action:a,site:i}=w.useContext(_);w.useEffect(()=>{["removeEmailFromSuppressionList:success"].includes(a)&&n("refreshMemberData"),["removeEmailFromSuppressionList:failed","refreshMemberData:failed"].includes(a)&&n("back"),["refreshMemberData:success"].includes(a)&&(jo({site:i})||Ms({site:i})?(n("switchPage",{page:"accountEmail",lastPage:"accountHome"}),n("showPopupNotification",{message:f("You have been successfully resubscribed")})):n("back"))},[a,n,i,f]);const o=["removeEmailFromSuppressionList:running","refreshMemberData:running"].includes(a),r=()=>{n("removeEmailFromSuppressionList")};return c.jsxs("div",{className:"gh-email-suppressed-page",children:[c.jsxs("header",{className:"gh-portal-detail-header",children:[c.jsx(Qa,{brandColor:e,hidden:!t,onClick:()=>{n("back")}}),c.jsx(we,{})]}),c.jsx(mk,{className:"gh-email-suppressed-page-icon"}),c.jsxs("div",{className:"gh-email-suppressed-page-text",children:[c.jsx("h3",{className:"gh-portal-main-title gh-email-suppressed-page-title",children:f("Emails disabled")}),c.jsx("p",{children:f("You're not receiving emails because you either marked a recent message as spam, or because messages could not be delivered to your provided email address.")})]}),c.jsx(fe,{dataTestId:"resubscribe-email",classes:"gh-portal-confirm-button",onClick:r,disabled:o,brandColor:e,label:f("Re-enable emails"),isRunning:o})]})}function FP(){const{brandColor:e,doAction:t,site:n,pageData:a}=w.useContext(_),i=`mailto:${$o({site:n})}`,o=a&&a.direct||!1;return c.jsxs("div",{className:"gh-email-suppression-faq",children:[!o&&c.jsxs("header",{className:"gh-portal-detail-header",children:[c.jsx(Qa,{brandColor:e,onClick:()=>{t("switchPage",{page:"emailSuppressed",lastPage:"accountHome"})}}),c.jsx(we,{})]}),c.jsxs("div",{className:"gh-longform",children:[c.jsx("h3",{children:f("Why has my email been disabled?")}),c.jsx("p",{children:f("Newsletters can be disabled on your account for two reasons: A previous email was marked as spam, or attempting to send an email resulted in a permanent failure (bounce).")}),c.jsx("h4",{children:f("Spam complaints")}),c.jsx("p",{children:f("If a newsletter is flagged as spam, emails are automatically disabled for that address to make sure you no longer receive any unwanted messages.")}),c.jsx("p",{children:f("If the spam complaint was accidental, or you would like to begin receiving emails again, you can resubscribe to emails by clicking the button on the previous screen.")}),c.jsx("p",{children:f("Once resubscribed, if you still don't see emails in your inbox, check your spam folder. Some inbox providers keep a record of previous spam complaints and will continue to flag emails. If this happens, mark the latest newsletter as 'Not spam' to move it back to your primary inbox.")}),c.jsx("h4",{children:f("Permanent failure (bounce)")}),c.jsx("p",{children:f("When an inbox fails to accept an email it is commonly called a bounce. In many cases, this can be temporary. However, in some cases, a bounced email can be returned as a permanent failure when an email address is invalid or non-existent.")}),c.jsx("p",{children:f("In the event a permanent failure is received when attempting to send a newsletter, emails will be disabled on the account.")}),c.jsx("p",{children:f("If you would like to start receiving emails again, the best next steps are to check your email address on file for any issues and then click resubscribe on the previous screen.")}),c.jsx("p",{children:c.jsx("a",{className:"gh-portal-btn gh-portal-btn-branded no-margin-right",href:i,onClick:()=>{i&&window.open(i)},children:f("Need more help? Contact support")})})]})]})}function _P(){const{brandColor:e,doAction:t,site:n,lastPage:a,member:i,pageData:o}=w.useContext(_),r=$o({site:n}),s=`mailto:${r}`,l=I$({site:n}),u=o&&o.direct||!1;return c.jsxs("div",{className:"gh-email-receiving-faq",children:[c.jsxs("header",{className:"gh-portal-detail-header",children:[!u&&c.jsx(Qa,{brandColor:e,onClick:()=>{a?t("switchPage",{page:"accountHome"}):t("switchPage",{page:"accountEmail",lastPage:"accountHome"})}}),c.jsx(we,{})]}),c.jsxs("div",{className:"gh-longform",children:[c.jsx("h3",{children:f("Help! I'm not receiving emails")}),c.jsx("p",{children:f("If you're not receiving the email newsletter you've subscribed to, here are a few things to check.")}),c.jsx("h4",{children:f("Verify your email address is correct")}),c.jsx("p",{children:c.jsx(Oe,{string:f("The email address we have for you is {memberEmail} — if that's not correct, you can update it in your <button>account settings area</button>."),mapping:{memberEmail:c.jsx("strong",{children:i.email}),button:c.jsx("button",{className:"gh-portal-btn-text",onClick:()=>t("switchPage",{lastPage:"emailReceivingFAQ",page:"accountProfile"})})}})}),c.jsx("h4",{children:f("Check spam & promotions folders")}),c.jsx("p",{children:f(`Make sure emails aren't accidentally ending up in the Spam or Promotions folders of your inbox. If they are, click on "Mark as not spam" and/or "Move to inbox".`)}),c.jsx("h4",{children:f("Create a new contact")}),c.jsx("p",{children:c.jsx(Oe,{string:f("In your email client add {senderEmail} to your contacts list. This signals to your mail provider that emails sent from this address should be trusted."),mapping:{senderEmail:c.jsx("strong",{children:l})}})}),c.jsx("h4",{children:f("Send an email and say hi!")}),c.jsx("p",{children:c.jsx(Oe,{string:f("Send an email to {senderEmail} and say hello. This can also help signal to your mail provider that emails to and from this address should be trusted."),mapping:{senderEmail:c.jsx("strong",{children:l})}})}),c.jsx("h4",{children:f("Check with your mail provider")}),c.jsx("p",{children:c.jsx(Oe,{string:f("If you have a corporate or government email account, reach out to your IT department and ask them to allow emails to be received from {senderEmail}"),mapping:{senderEmail:c.jsx("strong",{children:l})}})}),c.jsx("h4",{children:f("Get in touch for help")}),c.jsx("p",{children:c.jsx(Oe,{string:f("If you've completed all these checks and you're still not receiving emails, you can reach out to get support by contacting {supportAddress}."),mapping:{supportAddress:c.jsx("a",{href:s,onClick:()=>{s&&window.open(s)},children:r})}})})]})]})}const am={signin:em,signup:qd,accountHome:tm,accountPlan:Fd,accountProfile:nm,accountEmail:NP,signupNewsletter:Rd,unsubscribe:MP,magiclink:Jd,loading:Fo,offer:Qd,feedback:BT,emailSuppressed:OP,emailSuppressionFAQ:FP,emailReceivingFAQ:_P,support:()=>{const[e,t]=w.useState(!0),[n,a]=w.useState(null),[i,o]=w.useState(null),{member:r,site:s}=w.useContext(_);return w.useEffect(()=>{async function l(){const u=s.url,m=window.location.origin+window.location.pathname,p=r?`${m}?action=support&success=true`:`${m}#/portal/support/success`,d=m,h=Zs({siteUrl:u});try{const b=await h.member.checkoutDonation({successUrl:p,cancelUrl:d,personalNote:f("Add a personal note")});b.url&&window.location.replace(b.url)}catch(b){b.type&&b.type==="DisabledFeatureError"?o(f("This site is not accepting payments at the moment.")):a(f("Something went wrong, please try again later.")),t(!1)}}s&&s.donations_enabled===!1?(o(f("This site is not accepting donations at the moment.")),t(!1)):l()},[]),e?c.jsx("div",{children:c.jsx(Fo,{})}):n?c.jsx(Xd,{error:n}):i?c.jsx(Xd,{error:i}):null},supportSuccess:qT,supportError:Xd,recommendations:aP},im=function({page:e}){return Object.keys(am).includes(e)?e:"signup"},fk=function({page:e}){return e.includes("account")},RP=function({page:e}){return e.includes("offer")},YP=e=>w.createElement("svg",{width:24,height:24,viewBox:"0 0 24 24",fill:"none",xmlns:"http://www.w3.org/2000/svg",...e},w.createElement("path",{fillRule:"evenodd",clipRule:"evenodd",d:"M24 12C24 18.6274 18.6274 24 12 24C5.37258 24 0 18.6274 0 12C0 5.37258 5.37258 0 12 0C18.6274 0 24 5.37258 24 12ZM11.8326 2.33879C6.37785 2.95189 3.95901 5.20797 3.41126 9.74699C3.34896 10.2632 3.22642 10.7805 3.10443 11.2954C2.93277 12.02 2.76221 12.74 2.76221 13.4458C2.76221 17.9885 6.5856 21.556 11.1283 21.556C12.8959 21.556 14.4433 20.8144 15.8756 20.048C19.0536 18.3478 22.0328 16.2597 22.0328 12.5411C22.0328 9.91512 20.1051 7.56932 18.466 5.5747C18.3834 5.47416 18.3015 5.37451 18.2206 5.27577C17.3866 4.25742 14.4333 2.04643 11.8326 2.33879Z",fill:"#15171A"})),wm=class wm extends Z.Component{render(){return c.jsxs("a",{href:"https://ghost.org",target:"_blank",rel:"noopener noreferrer",onClick:()=>{window.open("https://ghost.org","_blank")},children:[c.jsx(YP,{}),"Powered by Ghost"]})}};wm.contextType=_;let Qs=wm;const gk=()=>({modalContainer:{zIndex:"3999999",position:"fixed",left:"0",top:"0",width:"100%",height:"100%",overflow:"hidden"},frame:{common:{margin:"auto",position:"relative",padding:"0",outline:"0",width:"100%",opacity:"1",overflow:"hidden",height:"100%"}},page:{links:{width:"600px"}}});function LP({message:e}){return Ga()?c.jsx("div",{className:"gh-portal-cookiebanner",children:e}):null}const Sm=class Sm extends Z.Component{componentDidMount(){this.node&&!de(["preview"])&&!this.props.isMobile&&(this.node.focus(),this.keyUphandler=t=>{t.key==="Escape"&&this.dismissPopup(t)},this.node.ownerDocument.removeEventListener("keyup",this.keyUphandler),this.node.ownerDocument.addEventListener("keyup",this.keyUphandler)),this.sendContainerHeightChangeEvent()}dismissPopup(t){var i;const n=t.target&&t.target.tagName;(n!=="INPUT"||n==="INPUT"&&!((i=t==null?void 0:t.target)!=null&&i.value))&&this.context.doAction("closePopup")}sendContainerHeightChangeEvent(){var t,n;this.node&&de(["preview"])&&((t=this.node)==null?void 0:t.clientHeight)!==this.lastContainerHeight&&(this.lastContainerHeight=(n=this.node)==null?void 0:n.clientHeight,window.document.body.style.overflow="hidden",window.document.body.style["scrollbar-width"]="none",window.parent.postMessage({type:"portal-preview-updated",payload:{height:this.lastContainerHeight}},"*"))}componentDidUpdate(){this.sendContainerHeightChangeEvent()}componentWillUnmount(){this.node&&this.node.ownerDocument.removeEventListener("keyup",this.keyUphandler)}handlePopupClose(t){const{page:n,otcRef:a}=this.context;de(["preview"])||a&&n==="magiclink"||t.target===t.currentTarget&&this.context.doAction("closePopup")}renderActivePage(){const{page:t}=this.context;im({page:t});const n=am[t];return c.jsx(n,{})}renderPopupNotification(){const{popupNotification:t}=this.context;return!t||!t.type?null:c.jsx(Zd,{})}sendPortalPreviewReadyEvent(){window.self!==window.parent&&window.parent.postMessage({type:"portal-preview-ready",payload:{}},"*")}render(){const{page:t,pageQuery:n,site:a,customSiteUrl:i}=this.context,r=_s({site:a,pageQuery:n}).length;im({page:t});const l={...gk().page[t]};let u="",m="regular",p="",d=t;switch(t){case"signup":p="Cookies must be enabled in your browser to sign up.";break;case"signin":p="Cookies must be enabled in your browser to sign in.";break;case"accountHome":d="account-home";break;case"accountProfile":d="account-profile";break;case"accountPlan":d="account-plan";break;default:p="Cookies must be enabled in your browser.",d=t;break}r>1&&!Ot({site:a})&&Xt({site:a,pageQuery:n})&&t==="signup"&&(d+=" full-size",m="full");const h=Co({site:a});(h&&r>2||!h&&r>1)&&t==="accountPlan"&&(d+=" full-size",m="full"),(t==="emailSuppressionFAQ"||t==="emailReceivingFAQ")&&(d+=" large-size");let b="gh-portal-popup-container";de(["preview"])&&(d+=" preview"),de(["preview"],{customSiteUrl:i})&&!a.disableBackground&&(b+=" preview"),de(["dev"])&&(b+=" dev");const v=`${b} ${u} ${d}`;return this.sendPortalPreviewReadyEvent(),c.jsxs(c.Fragment,{children:[c.jsxs("div",{className:"gh-portal-popup-wrapper "+d,onClick:g=>this.handlePopupClose(g),children:[this.renderPopupNotification(),c.jsxs("div",{className:v,style:l,ref:g=>this.node=g,tabIndex:-1,children:[c.jsx(LP,{message:p}),this.renderActivePage(),m==="full"?c.jsx("div",{className:"gh-portal-powered inside "+(de(["preview"])?"hidden ":"")+d,children:c.jsx(Qs,{})}):""]})]}),c.jsx("div",{className:"gh-portal-powered outside "+(de(["preview"])?"hidden ":"")+d,children:c.jsx(Qs,{})})]})}};Sm.contextType=_;let om=Sm;const Em=class Em extends Z.Component{constructor(t){super(t),this.state={height:null}}renderCurrentPage(t){const n=am[t];return c.jsx(n,{})}onHeightChange(t){this.setState({height:t})}handlePopupClose(t){t.preventDefault(),t.target===t.currentTarget&&this.context.doAction("closePopup")}renderFrameStyles(){const{site:t,brandColor:n}=this.context,a=cP({site:t}),i=n?`:root { --brandcolor: ${n} }`+a:a;return c.jsxs(c.Fragment,{children:[c.jsx("style",{dangerouslySetInnerHTML:{__html:i}}),c.jsx("meta",{name:"viewport",content:"width=device-width, initial-scale=1, maximum-scale=1"})]})}renderFrameContainer(){const{member:t,site:n,customSiteUrl:a}=this.context,i=gk(),o=window.innerWidth<480,r={...i.frame.common};let s="gh-portal-popup-background";return de(["preview"])&&(i.modalContainer.zIndex="3999997"),de(["preview"],{customSiteUrl:a})&&!n.disableBackground&&(s+=" preview"),de(["dev"])&&(s+=" dev"),c.jsx("div",{style:i.modalContainer,children:c.jsxs(ld,{style:r,title:"portal-popup",head:this.renderFrameStyles(),dataTestId:"portal-popup-frame",dataDir:this.context.dir,children:[c.jsx("div",{className:s,onClick:l=>this.handlePopupClose(l)}),c.jsx(om,{isMobile:o})]})})}render(){const{showPopup:t}=this.context;return t?this.renderFrameContainer():null}};Em.contextType=_;let rm=Em;Xs({products:sm({numOfProducts:1})});function Fe(){return(new Date().getTime()/1e3|0).toString(16)+"xxxxxxxxxxxxxxxx".replace(/[x]/g,function(){return(Math.random()*16|0).toString(16)}).toLowerCase()}function UP(){return"xxxxxxxx-xxxx-4xxx-yxxx-xxxxxxxxxxxx".replace(/[xy]/g,function(e){const t=Math.random()*16|0;return(e==="x"?t:t&3|8).toString(16)})}function Xs({title:e="The Blueprint",description:t="Thoughts, stories and ideas.",logo:n="https://static.ghost.org/v4.0.0/images/ghost-orb-1.png",icon:a="https://static.ghost.org/v4.0.0/images/ghost-orb-1.png",url:i="https://portal.localhost",plans:o={monthly:5e3,yearly:15e4,currency:"USD"},products:r=sm({numOfProducts:1}),portalProducts:s=r.map(V=>V.id),accentColor:l="#45C32E",portalPlans:u=["free","monthly","yearly"],membersSignupAccess:m="all",freePriceName:p="Free",freePriceDescription:d="Free preview",isStripeConfigured:h=!0,portalButton:b=!0,portalName:v=!0,portalButtonIcon:g="icon-1",portalButtonSignupText:y="Subscribe now",portalButtonStyle:k="icon-and-text",membersSupportAddress:x="support@example.com",editorDefaultEmailRecipients:E="visibility",newsletters:z=[],posts:C=BP(),commentsEnabled:N,recommendations:I=[],recommendationsEnabled:$}={}){return{title:e,description:t,logo:n,icon:a,accent_color:l,url:i,plans:o,products:r,portal_products:s,members_signup_access:m,free_price_name:p,free_price_description:d,is_stripe_configured:h,portal_button:b,portal_name:v,portal_plans:u,portal_button_icon:g,portal_button_signup_text:y,portal_button_style:k,members_support_address:x,comments_enabled:N!=="off",newsletters:z,recommendations:I,recommendations_enabled:!!$,editor_default_email_recipients:E,posts:C}}function yk({name:e="Black Friday",code:t="black-friday",displayTitle:n="Black Friday Sale!",displayDescription:a="Special deal for Black Friday. Subscribe now for only $15 per month and get additional benefits like accessing our podcast.",type:i="percent",cadence:o="month",amount:r=50,duration:s="repeating",durationInMonths:l=null,currencyRestriction:u=!1,currency:m=null,status:p="active",tierId:d="",tierName:h="Basic",redemptionType:b="signup"}={}){return{id:`offer_${Fe()}`,name:e,code:t,display_title:n,display_description:a,type:i,cadence:o,amount:r,duration:s,duration_in_months:l,currency_restriction:u,currency:m,status:p,tier:{id:`${d}`,name:h},redemption_type:b}}function xt({name:e="Jamie Larson",email:t="jamie@example.com",firstname:n="Jamie",subscriptions:a=[],paid:i=!1,avatarImage:o="",subscribed:r=!0,email_suppression:s={suppressed:!1,info:null},newsletters:l=[]}={}){return{uuid:UP(),email:t,name:e,firstname:n,paid:i,subscribed:r,avatar_image:o,subscriptions:a,email_suppression:s,newsletters:l}}function BP({numOfPosts:e=3}={}){const t=[];for(let n=0;n<e;n++)t.push(HP({title:`Post ${n+1}`,slug:`post-${n+1}`}));return t.slice(0,e)}function HP({id:e=`post_${Fe()}`,title:t="Post",excerpt:n="Post excerpt",slug:a="post",featured:i=!1}={}){return{id:e,title:t,excerpt:n,slug:a,featured:i}}function sm({numOfProducts:e=3}={}){const n=[ti({name:"Bronze",description:"Access to all members articles",monthlyPrice:yt({interval:"month",amount:700}),yearlyPrice:yt({interval:"year",amount:7e3}),numOfBenefits:2}),ti({name:"Silver",description:"Access to all members articles and weekly podcast",monthlyPrice:yt({interval:"month",amount:1200}),yearlyPrice:yt({interval:"year",amount:12e3}),numOfBenefits:3}),ti({name:"Friends of the Blueprint",description:"Get access to everything and lock in early adopter pricing for life + listen to my podcast",monthlyPrice:yt({interval:"month",amount:18e3}),yearlyPrice:yt({interval:"year",amount:17e3}),numOfBenefits:4})].slice(0,e),a=bk({});return[...n,a]}function ti({type:e="paid",name:t="Basic",description:n="",id:a=`product_${Fe()}`,monthlyPrice:i=yt(),yearlyPrice:o=yt({interval:"year"}),numOfBenefits:r=2,trialDays:s=null}){return{id:a,name:t,description:n,monthlyPrice:e==="free"?null:i,yearlyPrice:e==="free"?null:o,type:e,benefits:kk({numOfBenefits:r}),trial_days:s}}function bk({name:e="Free tier",description:t="Free tier description",id:n=`product_${Fe()}`,numOfBenefits:a=2}){return{id:n,name:e,type:"free",description:t,benefits:kk({numOfBenefits:a})}}function kk({numOfBenefits:e}){const t=Fe();return[el({name:`Limited early adopter pricing #${t.substring(0,6)}`}),el({name:`Latest gear reviews #${t.substring(6,12)}`}),el({name:`Weekly email newsletter #${t.substring(12,18)}`}),el({name:`Listen to my podcast #${t.substring(18)}`})].slice(0,e)}function el({id:e=`benefit_${Fe()}`,name:t="Benefit"}){return{id:e,name:t}}function yt({interval:e="month",amount:t=e==="month"?500:5e3,nickname:n=e==="month"?"Monthly":"Yearly",description:a=null,currency:i="usd",active:o=!0,id:r=`price_${Fe()}`}={}){return{id:r,active:o,nickname:n,currency:i,amount:t,interval:e,description:a,stripe_price_id:`price_${Fe()}`,stripe_product_id:`prod_${Fe()}`,type:"recurring"}}function ta({id:e=`sub_${Fe()}`,status:t="active",currency:n="USD",interval:a="year",amount:i=a==="month"?500:5e3,nickname:o=a==="month"?"Monthly":"Yearly",cardLast4:r="4242",offer:s=WP,priceId:l=`price_${Fe()}`,startDate:u="2021-10-05T03:18:30.000Z",currentPeriodEnd:m="2022-10-05T03:18:30.000Z",cancelAtPeriodEnd:p=!1,trialEndAt:d=null,nextPayment:h=null,tier:b=null}={}){return{id:e,customer:{id:`cus_${Fe()}`,name:"Jamie",email:"jamie@example.com"},plan:{id:`price_${Fe()}`,nickname:o,amount:i,interval:a,currency:n},offer:s,status:t,start_date:u,default_payment_card_last4:r,cancel_at_period_end:p,cancellation_reason:null,current_period_end:m,trial_end_at:d,next_payment:h,tier:b,price:{id:`stripe_price_${Fe()}`,price_id:l,nickname:o,amount:i,interval:a,type:"recurring",currency:n,product:{id:`stripe_prod_${Fe()}`,product_id:`prod_${Fe()}`}}}}function vk(){const e=sm({numOfProducts:1}),t=e.map(a=>a.id);return Xs({products:e,portalPlans:["free","monthly","yearly"],portalProducts:t})}vk();const VP=Xs({products:[ti({numOfBenefits:2,type:"free"})]}),WP=yk({tierId:(Ck=VP.products[0])==null?void 0:Ck.id});xt(),xt({paid:!0,subscriptions:[ta()]}),xt({paid:!0,subscriptions:[]}),xt({paid:!0,subscriptions:[ta({amount:0})]}),xt({paid:!0,subscriptions:[ta({amount:1500,startDate:"2019-05-01T11:42:40.000Z",currentPeriodEnd:"2021-06-05T11:42:40.000Z"})]}),vk();const tl=[bk({name:"Free",description:"Free tier description which is actually a pretty long description",numOfBenefits:2}),ti({name:"The Blueprint",description:"",monthlyPrice:yt({interval:"month",amount:500}),yearlyPrice:yt({interval:"year",amount:5e3}),numOfBenefits:3}),ti({name:"Friends of the Blueprint Silver",description:"Access to all members articles and weekly podcast",monthlyPrice:yt({interval:"month",amount:1200}),yearlyPrice:yt({interval:"year",amount:11e3}),numOfBenefits:4})],ni=Xs({title:"The Blueprint",description:"Thoughts, stories and ideas.",logo:"https://static.ghost.org/v4.0.0/images/ghost-orb-1.png",icon:"https://static.ghost.org/v4.0.0/images/ghost-orb-1.png",accentColor:"#45C32E",url:"https://portal.localhost",plans:{monthly:5e3,yearly:15e4,currency:"USD"},products:tl,portalProducts:tl.map(e=>e.id),membersSignupAccess:"all",freePriceName:"Free",freePriceDescription:"Free preview",isStripeConfigured:!0,portalButton:!0,portalName:!0,portalPlans:["free","monthly","yearly"],portalButtonIcon:"icon-1",portalButtonSignupText:"Subscribe now",portalButtonStyle:"icon-and-text",membersSupportAddress:"support@example.com",commentsEnabled:!0,newsletters:[{id:"weekly",name:"Weekly Rundown",description:"Best of last week",subscribe_on_signup:!0,paid:!0},{id:"daily",name:"Daily Brief",description:"One email every day",subscribe_on_signup:!1,paid:!1}],posts:[{id:"post_66aacfe061c94e10eb6e4fc1",title:"Post 1",excerpt:"Post excerpt",slug:"post-1",featured:!1},{id:"post_66aacfe04f14b8dbb56c5721",title:"Post 2",excerpt:"Post excerpt",slug:"post-2",featured:!1},{id:"post_66aacfe03d609460819af18c",title:"Post 3",excerpt:"Post excerpt",slug:"post-3",featured:!1}]}),wk=yk({tierId:(jk=ni.products[1])==null?void 0:jk.id}),ai={free:xt({name:"Jamie Larson",email:"jamie@example.com",firstname:"Jamie",subscriptions:[],paid:!1,avatarImage:"",subscribed:!0}),paid:xt({paid:!0,subscriptions:[ta({status:"active",currency:"USD",interval:"year",amount:5e3,cardLast4:"4242",startDate:"2021-10-05T03:18:30.000Z",currentPeriodEnd:"2022-10-05T03:18:30.000Z",cancelAtPeriodEnd:!1})]}),complimentary:xt({paid:!0,subscriptions:[]}),complimentaryWithSubscription:xt({paid:!0,subscriptions:[ta({amount:0})]}),preview:xt({paid:!0,subscriptions:[ta({amount:1500,startDate:"2019-05-01T11:42:40.000Z",currentPeriodEnd:new Date().toISOString()})]})};function GP(){var n;if(!tl||!tl[1])return null;let e=(n=ni==null?void 0:ni.products)==null?void 0:n[1].monthlyPrice,t=xt({paid:!0,subscriptions:[ta({offer:null,priceId:e==null?void 0:e.id,status:"active",currency:e==null?void 0:e.currency,interval:e==null?void 0:e.interval,amount:e==null?void 0:e.amount,cardLast4:"4242",startDate:"2021-10-05T03:18:30.000Z",currentPeriodEnd:"2022-10-05T03:18:30.000Z",cancelAtPeriodEnd:!1})]});return{site:ni,member:t}}function KP(e){const t=e.getAttribute("href"),n=new URL(t,window.location.origin);!n.hash||!n.hash.startsWith("#/portal")||t.startsWith("#/portal")||n.origin===window.location.origin&&e.setAttribute("href",n.hash)}function qP({data:e,state:t}){return{page:e.page,popupNotification:null,lastPage:e.lastPage||null,pageData:e.pageData||t.pageData}}function JP({state:e}){return{showPopup:!e.showPopup}}function ZP({data:e}){return{showPopup:!0,reloadOnPopupClose:!1,page:e.page,...e.pageQuery?{pageQuery:e.pageQuery}:{},...e.pageData?{pageData:e.pageData}:{}}}function QP({state:e}){return e.lastPage?{page:e.lastPage}:Sk({state:e})}function Sk({state:e}){return md(),{showPopup:!1,lastPage:null,pageQuery:"",popupNotification:null,page:e.page==="magiclink"?"":e.page}}function XP({data:e}){return{showNotification:!0,...e}}function ez(){return{showNotification:!1}}async function tz({api:e,state:t}){try{return await e.member.signout(),{action:"signout:success"}}catch{return{action:"signout:failed",popupNotification:le({type:"signout:failed",autoHide:!1,closeable:!0,state:t,status:"error",message:f("Failed to log out, please try again")})}}}async function nz({data:e,api:t,state:n}){try{const a=await t.member.getIntegrityToken(),i={...e,emailType:"signin",integrityToken:a,includeOTC:!0},{otc_ref:o,inboxLinks:r}=await t.member.sendMagicLink(i);return{page:"magiclink",lastPage:"signin",...o?{otcRef:o}:{},inboxLinks:r,pageData:{...n.pageData||{},email:((e==null?void 0:e.email)||"").trim()}}}catch(a){return{action:"signin:failed",popupNotification:le({type:"signin:failed",autoHide:!1,closeable:!0,state:n,status:"error",message:Qt(a,f("Failed to log in, please try again"))})}}}function az({data:e,state:t}){const n=((e==null?void 0:e.email)||"").trim(),a=e==null?void 0:e.otcRef,i=e==null?void 0:e.inboxLinks;return a?{showPopup:!0,page:"magiclink",lastPage:"signin",otcRef:a,inboxLinks:i,pageData:{...t.pageData||{},email:n},popupNotification:null}:{}}async function iz({data:e,api:t}){var a;const n=f("Failed to verify code, please try again");try{const i=await t.member.getIntegrityToken(),o=await t.member.verifyOTC({...e,integrityToken:i});return o.redirectUrl?window.location.assign(o.redirectUrl):{action:"verifyOTC:failed",actionErrorMessage:Qt((a=o.errors)==null?void 0:a[0],n)}}catch(i){return{action:"verifyOTC:failed",actionErrorMessage:Qt(i,n)}}}async function oz({data:e,state:t,api:n}){try{let{plan:a,tierId:i,cadence:o,email:r,name:s,newsletters:l,offerId:u}=e;s=s==null?void 0:s.trim();let m;if(a.toLowerCase()==="free"){const p=await n.member.getIntegrityToken();({inboxLinks:m}=await n.member.sendMagicLink({emailType:"signup",integrityToken:p,...e,name:s}))}else return i&&o?await n.member.checkoutPlan({plan:a,tierId:i,cadence:o,email:r,name:s,newsletters:l,offerId:u}):({tierId:i,cadence:o}=ea({site:t==null?void 0:t.site,priceId:a}),await n.member.checkoutPlan({plan:a,tierId:i,cadence:o,email:r,name:s,newsletters:l,offerId:u})),{page:"loading"};return{page:"magiclink",lastPage:"signup",inboxLinks:m,pageData:{...t.pageData||{},email:(r||"").trim()}}}catch(a){const i=Qt(a,f("Failed to sign up, please try again"));return{action:"signup:failed",popupNotification:le({type:"signup:failed",autoHide:!1,closeable:!0,state:t,status:"error",message:i})}}}async function rz({data:e,state:t,api:n}){try{let{plan:a,offerId:i,tierId:o,cadence:r}=e;(!o||!r)&&({tierId:o,cadence:r}=ea({site:t==null?void 0:t.site,priceId:a})),await n.member.checkoutPlan({plan:a,tierId:o,cadence:r,offerId:i,metadata:{checkoutType:"upgrade"}})}catch{return{action:"checkoutPlan:failed",popupNotification:le({type:"checkoutPlan:failed",autoHide:!1,closeable:!0,state:t,status:"error",message:f("Failed to process checkout, please try again")})}}}async function sz({data:e,state:t,api:n}){try{const{plan:a,planId:i,subscriptionId:o,cancelAtPeriodEnd:r}=e,{tierId:s,cadence:l}=ea({site:t==null?void 0:t.site,priceId:i});await n.member.updateSubscription({planName:a,tierId:s,cadence:l,subscriptionId:o,cancelAtPeriodEnd:r,planId:i});const u=await n.member.sessionData(),m="updateSubscription:success";return{action:m,popupNotification:le({type:m,autoHide:!0,closeable:!0,state:t,status:"success",message:f("Subscription plan updated successfully")}),page:"accountHome",member:u}}catch{return{action:"updateSubscription:failed",popupNotification:le({type:"updateSubscription:failed",autoHide:!1,closeable:!0,state:t,status:"error",message:f("Failed to update subscription, please try again")})}}}async function lz({data:e,state:t,api:n}){try{const{subscriptionId:a,cancellationReason:i}=e;return await n.member.updateSubscription({subscriptionId:a,smartCancel:!0,cancellationReason:i}),{action:"cancelSubscription:success",page:"accountHome",member:await n.member.sessionData(),reloadOnPopupClose:!0}}catch{return{action:"cancelSubscription:failed",popupNotification:le({type:"cancelSubscription:failed",autoHide:!1,closeable:!0,state:t,status:"error",message:f("Failed to cancel subscription, please try again")})}}}async function cz({data:e,state:t,api:n}){try{const{subscriptionId:a}=e;return await n.member.updateSubscription({subscriptionId:a,cancelAtPeriodEnd:!1}),{action:"continueSubscription:success",page:"accountHome",member:await n.member.sessionData(),reloadOnPopupClose:!0}}catch{return{action:"continueSubscription:failed",popupNotification:le({type:"continueSubscription:failed",autoHide:!1,closeable:!0,state:t,status:"error",message:f("Failed to cancel subscription, please try again")})}}}async function uz({data:e,state:t,api:n}){try{const{offerId:a,subscriptionId:i}=e;return await n.member.applyOffer({offerId:a,subscriptionId:i}),{action:"applyOffer:success",page:"accountHome",member:await n.member.sessionData(),offers:[],reloadOnPopupClose:!0,popupNotification:le({type:"applyOffer:success",autoHide:!0,closeable:!0,state:t,status:"success",message:"Offer applied successfully!"})}}catch{return{action:"applyOffer:failed",popupNotification:le({type:"applyOffer:failed",autoHide:!1,closeable:!0,state:t,status:"error",message:"Failed to apply offer, please try again"})}}}async function dz({data:e,state:t,api:n}){try{await n.member.editBilling(e)}catch{return{action:"editBilling:failed",popupNotification:le({type:"editBilling:failed",autoHide:!1,closeable:!0,state:t,status:"error",message:f("Failed to update billing information, please try again")})}}}async function mz({data:e,state:t,api:n}){try{await n.member.manageBilling(e)}catch{return{action:"manageBilling:failed",popupNotification:le({type:"manageBilling:failed",autoHide:!1,closeable:!0,state:t,status:"error",message:f("Failed to open billing portal, please try again")})}}}async function pz(){return{popupNotification:null}}async function hz({data:e,state:t}){let{action:n,message:a=""}=e;return n=n||"showPopupNotification:success",{popupNotification:le({type:n,autoHide:!0,closeable:!0,state:t,status:"success",message:a})}}async function fz({data:e,state:t,api:n}){try{const{newsletters:a,enableCommentNotifications:i}=e;if(!a&&i===void 0)return{};const o={};return a&&(o.newsletters=a),i!==void 0&&(o.enableCommentNotifications=i),{action:"updateNewsletterPref:success",member:await n.member.update(o)}}catch{return{action:"updateNewsletterPref:failed",popupNotification:le({type:"updateNewsletter:failed",autoHide:!0,closeable:!0,state:t,status:"error",message:f("Failed to update newsletter settings")})}}}async function gz({state:e,api:t}){try{return await t.member.deleteSuppression(),{action:"removeEmailFromSuppressionList:success",popupNotification:le({type:"removeEmailFromSuppressionList:success",autoHide:!0,closeable:!0,state:e,status:"success",message:f("You have been successfully resubscribed")})}}catch{return{action:"removeEmailFromSuppressionList:failed",popupNotification:le({type:"removeEmailFromSuppressionList:failed",autoHide:!0,closeable:!0,state:e,status:"error",message:f("Your email has failed to resubscribe, please try again")})}}}async function yz({data:e,state:t,api:n}){try{const{subscribed:a}=e,i=await n.member.update({subscribed:a});if(!i)throw new Error("Failed to update newsletter");const o="updateNewsletter:success";return{action:o,member:i,popupNotification:le({type:o,autoHide:!0,closeable:!0,state:t,status:"success",message:f("Email newsletter settings updated")})}}catch{return{action:"updateNewsletter:failed",popupNotification:le({type:"updateNewsletter:failed",autoHide:!0,closeable:!0,state:t,status:"error",message:f("Failed to update newsletter settings")})}}}async function bz({data:e,state:t,api:n}){const{email:a}=e,i=T$({member:t.member});if(a!==i)try{return await n.member.updateEmailAddress({email:a}),{success:!0}}catch(o){return{success:!1,error:o}}return null}async function kz({data:e,state:t,api:n}){var o;const a=(o=e==null?void 0:e.name)==null?void 0:o.trim();if(z$({member:t.member})!==a)try{const r=await n.member.update({name:a});if(!r)throw new Error("Failed to update member");return{member:r,success:!0}}catch(r){return{success:!1,error:r}}return null}async function vz({state:e,api:t}){if(e.member)try{const n=await t.member.sessionData();return n?{member:n,success:!0,action:"refreshMemberData:success"}:null}catch(n){return{success:!1,error:n,action:"refreshMemberData:failed"}}return null}async function wz({data:e,state:t,api:n}){const[a,i]=await Promise.all([kz({data:e,state:t,api:n}),bz({data:e,state:t,api:n})]);if(a&&i){if(i.success)return{action:"updateProfile:success",...a.success?{member:a.member}:{},page:"accountHome",popupNotification:le({type:"updateProfile:success",autoHide:!0,closeable:!0,status:"success",state:t,message:f("Check your inbox to verify email update")})};const o=a.success?f("Failed to send verification email"):f("Failed to update account data");return{action:"updateProfile:failed",...a.success?{member:a.member}:{},popupNotification:le({type:"updateProfile:failed",autoHide:!0,closeable:!0,status:"error",message:o,state:t})}}else if(a){const o=a.success?"updateProfile:success":"updateProfile:failed",r=a.success?"success":"error",s=a.success?f("Account details updated successfully"):f("Failed to update account details");return{action:o,...a.success?{member:a.member}:{},...a.success?{page:"accountHome"}:{},popupNotification:le({type:o,autoHide:a.success,closeable:!0,status:r,state:t,message:s})}}else if(i){const o=i.success?"updateProfile:success":"updateProfile:failed",r=i.success?"success":"error";let s="";return i.error?s=Qt(i.error,f("Failed to send verification email")):s=f("Check your inbox to verify email update"),{action:o,...i.success?{page:"accountHome"}:{},popupNotification:le({type:o,autoHide:i.success,closeable:!0,status:r,state:t,message:s})}}return{action:"updateProfile:success",page:"accountHome",popupNotification:le({type:"updateProfile:success",autoHide:!0,closeable:!0,status:"success",state:t,message:f("Account details updated successfully")})}}async function Sz({data:{siteUrl:e},state:t}){const n=Zs({siteUrl:e,apiUrl:"not-defined"}),{member:a}=t,i=window.location.href,o=ub(),r=await n.member.getIntegrityToken();return await n.member.sendMagicLink({emailType:"signup",name:a.name,email:a.email,autoRedirect:!1,integrityToken:r,customUrlHistory:t.site.outbound_link_tagging?[{time:Date.now(),referrerSource:o,referrerMedium:"Ghost Recommendations",referrerUrl:i}]:[]}),{}}function Ez({data:{recommendationId:e},api:t}){try{const n=localStorage.getItem("ghost-recommendations-clicked"),a=n?JSON.parse(n):[];if(a.includes(e))return;a.push(e),localStorage.setItem("ghost-recommendations-clicked",JSON.stringify(a))}catch{}return t.recommendations.trackClicked({recommendationId:e}),{}}async function xz({data:{recommendationId:e},api:t}){return t.recommendations.trackSubscribed({recommendationId:e}),{}}const Cz={togglePopup:JP,openPopup:ZP,closePopup:Sk,switchPage:qP,openNotification:XP,closeNotification:ez,back:QP,signout:tz,signin:nz,startSigninOTCFromCustomForm:az,verifyOTC:iz,signup:oz,updateSubscription:sz,cancelSubscription:lz,continueSubscription:cz,applyOffer:uz,updateNewsletter:yz,updateProfile:wz,refreshMemberData:vz,clearPopupNotification:pz,editBilling:dz,manageBilling:mz,checkoutPlan:rz,updateNewsletterPreference:fz,showPopupNotification:hz,removeEmailFromSuppressionList:gz,oneClickSubscribe:Sz,trackRecommendationClicked:Ez,trackRecommendationSubscribed:xz};async function jz({action:e,data:t,state:n,api:a}){const i=Cz[e];return i?await i({data:t,state:n,api:a})||{}:{}}function Ek(e,t){e&&(e.innerText=t)}function $z(e,t,n){t.classList.add("error");const a=f("There was an error sending the email, please try again");Ek(n,Qt(e,a))}async function Tz({event:e,form:t,errorEl:n,siteUrl:a,submitHandler:i,doAction:o,captureException:r}){var E,z;t.removeEventListener("submit",i),e.preventDefault(),n&&(n.innerText=""),t.classList.remove("success","invalid","error");let s=e.target.querySelector("input[data-members-email]"),l=e.target.querySelector("input[data-members-name]"),u=((E=t==null?void 0:t.dataset)==null?void 0:E.membersAutoredirect)||"true",m=s==null?void 0:s.value,p=((l==null?void 0:l.value)||"").trim()||void 0,d,h=[],b=[],v=e.target.querySelectorAll("input[data-members-label]")||[];for(let C=0;C<v.length;++C)h.push(v[C].value);let g=e.target.querySelectorAll("input[type=hidden][data-members-newsletter], input[type=checkbox][data-members-newsletter]:checked, input[type=radio][data-members-newsletter]:checked")||[];for(let C=0;C<g.length;++C)b.push({name:g[C].value});t.dataset.membersForm&&(d=t.dataset.membersForm);const y=d==="signin"&&((z=t==null?void 0:t.dataset)==null?void 0:z.membersOtc)==="true";t.classList.add("loading");const k=To(),x={email:m,emailType:d,labels:h,name:p,autoRedirect:u==="true"};y&&(x.includeOTC=!0),k&&(x.urlHistory=k),g.length>0?x.newsletters=b:(e.target.querySelectorAll("input[type=checkbox][data-members-newsletter]")||[]).length>0&&(x.newsletters=[]);try{const N=await(await fetch(`${a}/members/api/integrity-token/`,{method:"GET"})).text(),I=await fetch(`${a}/members/api/send-magic-link/`,{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({...x,integrityToken:N})});if(t.addEventListener("submit",i),t.classList.remove("loading"),I.ok){t.classList.add("success");let $;if(y)try{$=await I.clone().json()}catch{$=void 0}const V=$==null?void 0:$.otc_ref;if(V&&typeof o=="function")try{o("startSigninOTCFromCustomForm",{email:(m||"").trim(),otcRef:V,inboxLinks:$==null?void 0:$.inboxLinks})}catch(q){console.error(q),r==null||r(q)}}else{const $=await Zt.fromApiResponse(I),V=Qt($,f("Failed to send magic link email"));Ek(n,V),t.classList.add("error")}}catch(C){$z(C,t,n)}}function Pz({event:e,el:t,errorEl:n,siteUrl:a,site:i,member:o,clickHandler:r}){t.removeEventListener("click",r),e.preventDefault();let s=t.dataset.membersPlan,l=y$(i,s.toLowerCase()),u=t.dataset.membersSuccess,m=t.dataset.membersCancel,p,d;u&&(p=new URL(u,window.location.href).href),m&&(d=new URL(m,window.location.href).href),n&&(n.innerText=""),t.classList.add("loading");const h=o?{checkoutType:"upgrade"}:{},b=To();return b&&(h.urlHistory=b),fetch(`${a}/members/api/session`,{credentials:"same-origin"}).then(function(v){return v.ok?v.text():null}).then(function(v){return fetch(`${a}/members/api/create-stripe-checkout-session/`,{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({...l,identity:v,successUrl:p,cancelUrl:d,metadata:h})}).then(function(g){if(!g.ok)throw new Error(f("Could not create Stripe checkout session"));return g.json()})}).then(function(v){return v.url?window.location.assign(v.url):window.Stripe(v.publicKey).redirectToCheckout({sessionId:v.sessionId}).then(function(y){if(y.error)throw new Error(y.error.message)})}).catch(function(v){console.error(v),t.addEventListener("click",r),t.classList.remove("loading"),n&&(n.innerText=v.message),t.classList.add("error")})}function zz({siteUrl:e,site:t={},member:n,offers:a=[],doAction:i,captureException:o}={}){if(!e)return;e=e.replace(/\/$/,""),Array.prototype.forEach.call(document.querySelectorAll("form[data-members-form]"),function(s){let l=s.querySelector("[data-members-error]");function u(m){Tz({event:m,errorEl:l,form:s,siteUrl:e,submitHandler:u,doAction:i,captureException:o})}s.addEventListener("submit",u)}),Array.prototype.forEach.call(document.querySelectorAll("[data-members-plan]"),function(s){let l=s.querySelector("[data-members-error]");function u(m){Pz({el:s,event:m,errorEl:l,member:n,site:t,siteUrl:e,clickHandler:u})}s.addEventListener("click",u)}),Array.prototype.forEach.call(document.querySelectorAll("[data-members-edit-billing]"),function(s){let l=s.querySelector("[data-members-error]"),u=s.dataset.membersSuccess,m=s.dataset.membersCancel,p,d;u&&(p=new URL(u,window.location.href).href),m&&(d=new URL(m,window.location.href).href);function h(b){s.removeEventListener("click",h),b.preventDefault(),l&&(l.innerText=""),s.classList.add("loading"),fetch(`${e}/members/api/session`,{credentials:"same-origin"}).then(function(v){return v.ok?v.text():null}).then(function(v){return fetch(`${e}/members/api/create-stripe-update-session/`,{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({identity:v,successUrl:p,cancelUrl:d})}).then(function(g){if(!g.ok)throw new Error(f("Could not create Stripe checkout session"));return g.json()})}).then(function(v){return window.Stripe(v.publicKey).redirectToCheckout({sessionId:v.sessionId})}).then(function(v){if(v.error)throw new Error(f(v.error.message))}).catch(function(v){console.error(v),s.addEventListener("click",h),s.classList.remove("loading"),l&&(l.innerText=v.message),s.classList.add("error")})}s.addEventListener("click",h)}),Array.prototype.forEach.call(document.querySelectorAll("[data-members-manage-billing]"),function(s){let l=s.querySelector("[data-members-error]"),u=s.dataset.membersReturn,m;u&&(m=new URL(u,window.location.href).href);function p(d){s.removeEventListener("click",p),d.preventDefault(),l&&(l.innerText=""),s.classList.add("loading"),fetch(`${e}/members/api/session`,{credentials:"same-origin"}).then(function(h){return h.ok?h.text():null}).then(function(h){return fetch(`${e}/members/api/create-stripe-billing-portal-session/`,{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({identity:h,returnUrl:m})}).then(function(b){if(!b.ok)throw new Error(f("Could not create Stripe billing portal session"));return b.json()})}).then(function(h){return window.location.assign(h.url)}).catch(function(h){console.error(h),s.addEventListener("click",p),s.classList.remove("loading"),l&&(l.innerText=h.message),s.classList.add("error")})}s.addEventListener("click",p)}),Array.prototype.forEach.call(document.querySelectorAll("[data-members-signout]"),function(s){function l(u){s.removeEventListener("click",l),u.preventDefault(),s.classList.remove("error"),s.classList.add("loading"),fetch(`${e}/members/api/session`,{method:"DELETE"}).then(function(m){m.ok?window.location.replace(e):(s.addEventListener("click",l),s.classList.remove("loading"),s.classList.add("error"))})}s.addEventListener("click",l)});const r=(a||[]).some(s=>s.redemption_type==="retention");Array.prototype.forEach.call(document.querySelectorAll("[data-members-cancel-subscription]"),function(s){let l=s.parentElement.querySelector("[data-members-error]");function u(m){m.preventDefault();let p=s.dataset.membersCancelSubscription;if(r){i("openPopup",{page:"accountPlan",pageData:{subscriptionId:p,action:"cancel"}});return}return s.removeEventListener("click",u),s.classList.remove("error"),s.classList.add("loading"),l&&(l.innerText=""),fetch(`${e}/members/api/session`,{credentials:"same-origin"}).then(function(d){return d.ok?d.text():null}).then(function(d){return fetch(`${e}/members/api/subscriptions/${p}/`,{method:"PUT",headers:{"Content-Type":"application/json"},body:JSON.stringify({identity:d,smart_cancel:!0})})}).then(function(d){d.ok?window.location.reload():(s.addEventListener("click",u),s.classList.remove("loading"),s.classList.add("error"),l&&(l.innerText=f("There was an error cancelling your subscription, please try again.")))})}s.addEventListener("click",u)}),Array.prototype.forEach.call(document.querySelectorAll("[data-members-continue-subscription]"),function(s){let l=s.parentElement.querySelector("[data-members-error]");function u(m){s.removeEventListener("click",u),m.preventDefault(),s.classList.remove("error"),s.classList.add("loading");let p=s.dataset.membersContinueSubscription;return l&&(l.innerText=""),fetch(`${e}/members/api/session`,{credentials:"same-origin"}).then(function(d){return d.ok?d.text():null}).then(function(d){return fetch(`${e}/members/api/subscriptions/${p}/`,{method:"PUT",headers:{"Content-Type":"application/json"},body:JSON.stringify({identity:d,cancel_at_period_end:!1})})}).then(function(d){d.ok?window.location.reload():(s.addEventListener("click",u),s.classList.remove("loading"),s.classList.add("error"),l&&(l.innerText=f("There was an error continuing your subscription, please try again.")))})}s.addEventListener("click",u)})}const Iz={showPopup:!0,site:ni,member:ai.free,page:"accountEmail",...GP(),pageData:wk};function Nz({site:e,children:t}){const{portal_sentry:n}=e||{};return n&&n.dsn?c.jsx(Zu,{children:t}):c.jsx(c.Fragment,{children:t})}class Az extends Z.Component{constructor(t){super(t),this.setupCustomTriggerButton(),this.state={site:null,member:null,offers:[],page:"loading",showPopup:!1,action:"init:running",actionErrorMessage:null,initStatus:"running",lastPage:null,customSiteUrl:t.customSiteUrl,locale:t.locale,scrollbarWidth:0}}componentDidMount(){const t=this.getScrollbarWidth();this.setState({scrollbarWidth:t}),this.initSetup()}componentDidUpdate(t,n){var a,i,o;if(n.showPopup!==this.state.showPopup){this.handleCustomTriggerClassUpdate();try{this.state.showPopup?(this.bodyScroll=(o=(i=(a=window.document)==null?void 0:a.body)==null?void 0:i.style)==null?void 0:o.overflow,this.bodyMargin=window.getComputedStyle(document.body).getPropertyValue("margin-right"),window.document.body.style.overflow="hidden",this.state.scrollbarWidth&&(window.document.body.style.marginRight=`calc(${this.bodyMargin} + ${this.state.scrollbarWidth}px)`)):(window.document.body.style.overflow=this.bodyScroll||"",!this.bodyMargin||this.bodyMargin==="0px"?window.document.body.style.marginRight="":window.document.body.style.marginRight=this.bodyMargin,this.state.reloadOnPopupClose&&window.location.reload())}catch{}}if(this.state.initStatus==="success"&&n.initStatus!==this.state.initStatus){const{siteUrl:r}=this.props,s=this.getContextFromState();this.sendPortalReadyEvent(),zz({siteUrl:r,site:s.site,member:s.member,offers:s.offers,doAction:s.doAction,captureException:ss})}}componentWillUnmount(){clearTimeout(this.timeoutId),this.customTriggerButtons&&this.customTriggerButtons.forEach(t=>{t.removeEventListener("click",this.clickHandler)}),window.removeEventListener("hashchange",this.hashHandler,!1)}sendPortalReadyEvent(){window.self!==window.parent&&window.parent.postMessage({type:"portal-ready",payload:{}},"*")}getScrollbarWidth(){const t=document.createElement("div");t.style.visibility="hidden",t.style.overflow="scroll",document.body.appendChild(t),document.body.appendChild(t);const n=t.offsetWidth-t.clientWidth;return document.body.removeChild(t),n}setupCustomTriggerButton(){this.clickHandler=a=>{a.preventDefault();const i=a.currentTarget,o=i&&i.dataset.portal,{page:r,pageQuery:s,pageData:l}=this.getPageFromLinkPath(o)||{};this.state.initStatus==="success"&&(s&&s!=="free"?this.handleSignupQuery({site:this.state.site,pageQuery:s}):this.dispatchAction("openPopup",{page:r,pageQuery:s,pageData:l}))};const t="[data-portal]",n="gh-portal-close";this.customTriggerButtons=document.querySelectorAll(t)||[],this.customTriggerButtons.forEach(a=>{a.classList.add(n),a.removeEventListener("click",this.clickHandler),a.addEventListener("click",this.clickHandler)})}handleCustomTriggerClassUpdate(){var a;const t="gh-portal-open",n="gh-portal-close";(a=this.customTriggerButtons)==null||a.forEach(i=>{const o=this.state.showPopup?t:n,r=this.state.showPopup?n:t;i.classList.add(o),i.classList.remove(r)})}async initSetup(){try{const{site:t,member:n,offers:a,page:i,showPopup:o,popupNotification:r,lastPage:s,pageQuery:l,pageData:u}=await this.fetchData(),m=this.props.siteI18nEnabled&&(this.props.locale||t.locale)||"en";zs.changeLanguage(m);const p={site:t,member:n,offers:a,page:i,lastPage:s,pageQuery:l,showPopup:o,pageData:u,popupNotification:r,dir:zs.dir()||"ltr",action:"init:success",initStatus:"success",locale:m};if(this.handleSignupQuery({site:t,pageQuery:l,member:n}),this.setState(p),this.hashHandler=()=>{this.updateStateForPreviewLinks()},window.addEventListener("hashchange",this.hashHandler,!1),!n){const d=document.querySelectorAll("[data-lexical-signup-form]");d.length>0&&d.forEach(h=>{h.style.display=""})}this.setupRecommendationButtons(),this.transformPortalLinksToRelative()}catch(t){console.error("[Portal] Failed to initialize:",t),this.setState({action:"init:failed",initStatus:"failed"})}}async fetchData(){const{site:t,member:n,offers:a}=await this.fetchApiData(),{site:i,...o}=this.fetchDevData(),{site:r,...s}=this.fetchLinkData(t,n),{site:l,...u}=this.fetchPreviewData(),{site:m,...p}=this.fetchNotificationData();return{member:n,offers:a,page:"",site:{...t,...r,...l,...m,...i,plans:{...(i||{}).plans,...(t||{}).plans,...(l||{}).plans}},...o,...s,...p,...u}}fetchDevData(){return de(["dev"])&&!this.state.customSiteUrl?Iz:de(["test"])?{showPopup:this.props.showPopup!==void 0?this.props.showPopup:!0}:{}}fetchOfferQueryStrData(t=""){var i,o,r;const n=new URLSearchParams(t),a={};for(let s of n.entries()){const l=s[0],u=decodeURIComponent(s[1]);l==="name"?a.name=u||"":l==="code"?a.code=u||"":l==="display_title"?a.display_title=u||"":l==="display_description"?a.display_description=u||"":l==="type"?a.type=u||"":l==="cadence"?a.cadence=u||"":l==="duration"?a.duration=u||"":l==="duration_in_months"&&!isNaN(Number(u))?a.duration_in_months=Number(u):l==="amount"&&!isNaN(Number(u))?a.amount=Number(u):l==="currency"?a.currency=u||"":l==="status"?a.status=u||"":l==="tier_id"?a.tier={id:u||wk.tier.id}:l==="redemption_type"&&(a.redemption_type=u||"signup")}if(a.redemption_type==="retention"){const s=(r=(o=(i=ai.preview)==null?void 0:i.subscriptions)==null?void 0:o[0])==null?void 0:r.id;return{page:"accountPlan",offers:[a],pageData:{action:"cancel",subscriptionId:s}}}return{page:"offer",pageData:a}}fetchQueryStrData(t=""){const n=new URLSearchParams(t),a={site:{plans:{}}},i=[];let o,r=null,s,l,u;for(let m of n.entries()){const p=m[0],d=decodeURIComponent(m[1]);if(p==="button")a.site.portal_button=JSON.parse(d);else if(p==="name")a.site.portal_name=JSON.parse(d);else if(p==="isFree"&&JSON.parse(d))i.push("free");else if(p==="isMonthly"&&JSON.parse(d))i.push("monthly");else if(p==="isYearly"&&JSON.parse(d))i.push("yearly");else if(p==="portalPrices")o=d?d.split(","):[];else if(p==="portalProducts")r=d?d.split(","):[];else if(p==="page"&&d)a.page=d;else if(p==="accentColor"&&(d===""||d))a.site.accent_color=d;else if(p==="buttonIcon"&&d)a.site.portal_button_icon=d;else if(p==="signupButtonText")a.site.portal_button_signup_text=d||"";else if(p==="signupTermsHtml")a.site.portal_signup_terms_html=d||"";else if(p==="signupCheckboxRequired")a.site.portal_signup_checkbox_required=JSON.parse(d);else if(p==="buttonStyle"&&d)a.site.portal_button_style=d;else if(p==="monthlyPrice"&&!isNaN(Number(d)))a.site.plans.monthly=Number(d),s=Number(d);else if(p==="yearlyPrice"&&!isNaN(Number(d)))a.site.plans.yearly=Number(d),l=Number(d);else if(p==="currency"&&d){const h=d.toUpperCase();a.site.plans.currency=h,a.site.plans.currency_symbol=ve(h),u=h}else p==="disableBackground"?a.site.disableBackground=JSON.parse(d):p==="membersSignupAccess"&&d?a.site.members_signup_access=d:p==="portalDefaultPlan"&&d?a.site.portal_default_plan=d:p==="transistorPortalSettings"&&d&&(a.site.transistor_portal_settings=JSON.parse(d))}return a.site.portal_plans=i,a.site.portal_products=r,o?a.site.portal_plans=o:s&&l&&u&&(a.site.prices=[{id:"monthly",stripe_price_id:"dummy_stripe_monthly",stripe_product_id:"dummy_stripe_product",active:1,nickname:"Monthly",currency:u,amount:s,type:"recurring",interval:"month"},{id:"yearly",stripe_price_id:"dummy_stripe_yearly",stripe_product_id:"dummy_stripe_product",active:1,nickname:"Yearly",currency:u,amount:l,type:"recurring",interval:"year"}]),a}fetchNotificationData(){const{type:t,status:n,duration:a,autoHide:i,closeable:o}=Sb({billingOnly:!0})||{};return["stripe:billing-update"].includes(t)?n==="success"?{showPopup:!0,popupNotification:le({type:t,status:n,duration:a,closeable:o,autoHide:i,state:this.state,message:n==="success"?"Billing info updated successfully":""})}:{showPopup:!0}:{}}fetchLinkData(t,n){const a=new URLSearchParams(window.location.search);if(a.get("action")==="unsubscribe")return a.get("key")&&a.get("uuid")?{showPopup:!0,page:"unsubscribe",pageData:{uuid:a.get("uuid"),key:a.get("key"),newsletterUuid:a.get("newsletter"),comments:a.get("comments")}}:{showPopup:!0,page:"accountEmail",pageData:{newsletterUuid:a.get("newsletter"),action:"unsubscribe",redirect:t.url+"#/portal/account/newsletters"}};if(v$({site:t})&&a.get("action")==="signup"&&a.get("success")==="true")return{showPopup:!0,page:"recommendations",pageData:{signup:!0}};const[i,o]=window.location.hash.substr(1).split("?"),r=new URLSearchParams(o??""),s=/^(?:(\w+?))?\/monthly$/,l=/^(?:(\w+?))?\/yearly$/,u=/^offers\/(\w+?)\/?$/,m=/^\/portal\/?(?:\/(\w+(?:\/\w+)*))?\/?$/,p=/^\/feedback\/(\w+?)\/(\w+?)\/?$/;if(i&&p.test(i)){const[,d,h]=i.match(p),b=parseInt(h);if(b===1||b===0)return n||r.get("uuid")&&r.get("key")?{showPopup:!0,page:"feedback",pageData:{uuid:n?null:r.get("uuid"),key:n?null:r.get("key"),postId:d,score:b}}:{showPopup:!0,page:"signin",pageData:{redirect:t.url+`#/feedback/${d}/${b}/`}}}if(i&&m.test(i)){const[,d]=i.match(m),{page:h,pageQuery:b,pageData:v}=this.getPageFromLinkPath(d,t)||{};if(!n&&h&&fk({page:h}))return{showPopup:!0,page:"signin",pageData:{redirect:t.url+`#/portal/${d}/`}};const g=["accountPlan","accountProfile"].includes(h)?"accountHome":null;return{showPopup:!(["monthly","yearly"].includes(b)||s.test(b)||l.test(b)||u.test(b)),...h?{page:h}:{},...b?{pageQuery:b}:{},...v?{pageData:v}:{},...g?{lastPage:g}:{}}}return{}}fetchPreviewData(){const[,t]=window.location.hash.substr(1).split("?");if(de(["preview"])){let n={};return de(["offerPreview"])?n=this.fetchOfferQueryStrData(t):n=this.fetchQueryStrData(t),{...n,showPopup:!0}}return{}}getColorOverride(){const t=document.querySelector("script[data-ghost]");return t&&t.dataset.accentColor?t.dataset.accentColor:!1}async fetchApiData(){const{siteUrl:t,customSiteUrl:n,apiUrl:a,apiKey:i}=this.props;try{this.GhostApi=this.props.api||Zs({siteUrl:t,apiUrl:a,apiKey:i});const{site:o,member:r,offers:s}=await this.GhostApi.init(),l=this.getColorOverride();return l&&(o.accent_color=l),this.setupFirstPromoter({site:o,member:r}),this.setupSentry({site:o}),{site:o,member:r,offers:s}}catch(o){if(de(["dev","test"],{customSiteUrl:n}))return{};throw o}}setupSentry({site:t}){if(de(["test"]))return null;const{portal_sentry:n,portal_version:a,version:i}=t,r=`portal@2.66.10|ghost@${i}`;n&&n.dsn&&Gj({dsn:n.dsn,environment:n.env||"development",release:r,beforeSend:s=>u$({event:s})?s:null,allowUrls:[/https?:\/\/((www)\.)?unpkg\.com\/@tryghost\/portal/]})}setupFirstPromoter({site:t,member:n}){if(de(["test"]))return null;const a=P$({site:t});let i=yd({site:t});if(i=i==null?void 0:i.replace(/^(\S*\.)?(\S*\.\S*)$/i,".$2"),a&&i){const o=document.createElement("script");o.type="text/javascript",o.async=!0,o.src="https://cdn.firstpromoter.com/fprom.js",o.onload=o.onreadystatechange=function(){let s=this.readyState;if(!s||s==="complete"||s==="loaded")try{if(window.$FPROM.init(a,i),Y$({member:n})){const l=n.email,u=n.uuid;if(window.$FPROM)window.$FPROM.trackSignup({email:l,uid:u});else{const m=window._fprom||[];window._fprom=m,m.push(["event","signup"]),m.push(["email",l]),m.push(["uid",u])}}}catch{}};const r=document.getElementsByTagName("script")[0];r.parentNode.insertBefore(o,r)}}async dispatchAction(t,n){clearTimeout(this.timeoutId),this.setState({action:`${t}:running`,actionErrorMessage:null});try{const a=await jz({action:t,data:n,state:this.state,api:this.GhostApi});this.setState(a),a&&a.action&&!a.action.includes(":failed")&&(this.timeoutId=setTimeout(()=>{this.setState({action:""})},2e3))}catch(a){if(console.error(`[Portal] Failed to dispatch action: ${t}`,a),n&&n.throwErrors)throw a;const i=le({type:`${t}:failed`,autoHide:!0,closeable:!0,status:"error",state:this.state,meta:{error:a}});this.setState({action:`${t}:failed`,actionErrorMessage:Qt(a,f("An unexpected error occured. Please try again or <a>contact support</a> if the error persists.")),popupNotification:i})}}updateStateForPreviewLinks(){const{site:t,...n}=this.fetchPreviewData(),{site:a,...i}=this.fetchLinkData(this.state.site,this.state.member),o={site:{...this.state.site,...a||{},...t||{},plans:{...this.state.site&&this.state.site.plans,...(a||{}).plans,...(t||{}).plans}},...i,...n};this.handleSignupQuery({site:o.site,pageQuery:o.pageQuery}),this.setState(o)}async handleOfferQuery({site:t,offerId:n,member:a=this.state.member}){const{portal_button:i}=t;if(md(),!Mt({member:a})||Tn({member:a}))try{const o=await this.GhostApi.site.offer({offerId:n}),r=o==null?void 0:o.offers[0];if(!r||!r.tier||wd({offer:r})||!D$({site:t,offer:r}))return;if(i)this.dispatchAction("openPopup",{page:"offer",pageData:o==null?void 0:o.offers[0]});else{const s=Qn({site:t,productId:r.tier.id}),l=r.cadence==="month"?s.monthlyPrice:s.yearlyPrice;if(this.dispatchAction("openPopup",{page:"loading"}),a){const{tierId:u,cadence:m}=ea({site:t,priceId:l.id});this.dispatchAction("checkoutPlan",{plan:l.id,offerId:n,tierId:u,cadence:m})}else{const{tierId:u,cadence:m}=ea({site:t,priceId:l.id});this.dispatchAction("signup",{plan:l.id,offerId:n,tierId:u,cadence:m})}}}catch{}}handleSignupQuery({site:t,pageQuery:n,member:a}){const i=/^offers\/(\w+?)\/?$/;let o=n;if(i.test(n||"")){const[,s]=n.match(i);this.handleOfferQuery({site:t,offerId:s,member:a});return}fb({site:t,pageQuery:n})&&(o=fb({site:t,pageQuery:n}));const r=b$({site:t,priceId:o});if(n&&n!=="free"){md();const s=(r==null?void 0:r.id)||o;s!=="free"&&this.dispatchAction("openPopup",{page:"loading"});const{tierId:l,cadence:u}=ea({site:t,priceId:s});this.dispatchAction("signup",{plan:s,tierId:l,cadence:u})}}getPageFromLinkPath(t){const n=/^signup\/?(?:\/(\w+?))?\/?$/,a=/^signup\/?(?:\/(\w+?))\/monthly\/?$/,i=/^signup\/?(?:\/(\w+?))\/yearly\/?$/,o=/^offers\/(\w+?)\/?$/;if(t===void 0||t==="")return{page:"default"};if(o.test(t))return{pageQuery:t};if(t==="signup")return{page:"signup"};if(a.test(t)){const[,r]=t.match(a);return{page:"signup",pageQuery:`${r}/monthly`}}else if(i.test(t)){const[,r]=t.match(i);return{page:"signup",pageQuery:`${r}/yearly`}}else if(n.test(t)){const[,r]=t.match(n);return{page:"signup",pageQuery:r}}else{if(t==="signup/free")return{page:"signup",pageQuery:"free"};if(t==="signup/monthly")return{page:"signup",pageQuery:"monthly"};if(t==="signup/yearly")return{page:"signup",pageQuery:"yearly"};if(t==="signin")return{page:"signin"};if(t==="account")return{page:"accountHome"};if(t==="account/plans")return{page:"accountPlan"};if(t==="account/profile")return{page:"accountProfile"};if(t==="account/newsletters")return{page:"accountEmail"};if(t==="support")return{page:"support"};if(t==="support/success")return{page:"supportSuccess"};if(t==="support/error")return{page:"supportError"};if(t==="recommendations")return{page:"recommendations",pageData:{signup:!1}};if(t==="account/newsletters/help")return{page:"emailReceivingFAQ",pageData:{direct:!0}};if(t==="account/newsletters/disabled")return{page:"emailSuppressionFAQ",pageData:{direct:!0}}}return{page:"default"}}getAccentColor(){const{accent_color:t}=this.state.site||{};return bT(t)}getRetentionPreviewMember({site:t,offers:n}){var u,m,p;const a=(n||[]).find(d=>wd({offer:d})),i=(u=a==null?void 0:a.tier)==null?void 0:u.id,o=i?Qn({site:t,productId:i}):null,r=o?a.cadence==="year"?o.yearlyPrice:o.monthlyPrice:null,s=ai.preview,l=(m=s==null?void 0:s.subscriptions)==null?void 0:m[0];return!l||!o||!r?s:{...s,subscriptions:[{...l,plan:{...l.plan,amount:r.amount,interval:r.interval,currency:r.currency.toUpperCase()},price:{...l.price,price_id:r.id,amount:r.amount,interval:r.interval,currency:r.currency,product:{...(p=l.price)==null?void 0:p.product,product_id:o.id}},tier:{id:o.id,name:o.name}}]}}getContextPage({site:t,page:n,member:a}){if(!n||n==="default"){const i=Ot({site:t})||!Xt({site:t})?"signin":"signup";n=a?"accountHome":i}return im({page:n})}getContextMember({site:t,page:n,member:a,offers:i,pageData:o,customSiteUrl:r}){return de(["dev","preview"],{customSiteUrl:r})?fk({page:n})||RP({page:n})?de(["dev"],{customSiteUrl:r})?a||ai.free:de(["preview"])?n==="accountPlan"&&(o==null?void 0:o.action)==="cancel"?this.getRetentionPreviewMember({site:t,offers:i}):ai.preview:ai.paid:null:a}getContextFromState(){const{site:t,member:n,offers:a,action:i,actionErrorMessage:o,page:r,lastPage:s,showPopup:l,pageQuery:u,pageData:m,popupNotification:p,customSiteUrl:d,dir:h,scrollbarWidth:b,otcRef:v,inboxLinks:g}=this.state,y=this.getContextPage({site:t,page:r,member:n}),k=this.getContextMember({site:t,page:y,member:n,offers:a,pageData:m,customSiteUrl:d});return{api:this.GhostApi,site:t,offers:a,action:i,actionErrorMessage:o,brandColor:this.getAccentColor(),page:y,pageQuery:u,pageData:m,member:k,lastPage:s,showPopup:l,popupNotification:p,customSiteUrl:d,dir:h,scrollbarWidth:b,otcRef:v,inboxLinks:g,doAction:(x,E)=>this.dispatchAction(x,E)}}getRecommendationButtons(){return document.querySelectorAll("[data-recommendation]")||[]}setupRecommendationButtons(){const t=a=>{const i=a.currentTarget.dataset.recommendation;i?this.dispatchAction("trackRecommendationClicked",{recommendationId:i}).catch(console.error):console.warn("[Portal] Invalid usage of data-recommendation attribute")},n=this.getRecommendationButtons();for(const a of n)a.addEventListener("click",t,{passive:!0})}transformPortalLinksToRelative(){document.querySelectorAll('a[href*="#/portal"]').forEach(KP)}render(){return this.state.initStatus==="success"?c.jsx(Nz,{site:this.state.site,children:c.jsxs(_.Provider,{value:this.getContextFromState(),children:[c.jsx(rm,{}),c.jsx(Ed,{}),c.jsx(Pd,{})]})}):null}}const xk="ghost-portal-root";function Dz(){const e=document.createElement("div");e.id=xk,e.setAttribute("data-testid","portal-root"),document.body.appendChild(e)}function Mz(){const e=document.querySelector("script[data-ghost]");if(e){const t=e.dataset.i18n==="true",n=e.dataset.ghost,a=e.dataset.key,i=e.dataset.api,o=e.dataset.locale;return{siteUrl:n,apiKey:a,apiUrl:i,siteI18nEnabled:t,locale:o}}return{}}function Oz(){const e=new URL(window.location.href);e.searchParams.get("token")&&(e.searchParams.delete("token"),window.history.replaceState({},document.title,e.href))}function Fz(){const{siteUrl:e,apiKey:t,apiUrl:n,siteI18nEnabled:a,locale:i}=Mz(),o=e||window.location.origin;Dz(),Oz(),nS.render(c.jsx(Z.StrictMode,{children:c.jsx(Az,{siteUrl:o,customSiteUrl:e,apiKey:t,apiUrl:n,siteI18nEnabled:a,locale:i})}),document.getElementById(xk))}Fz()});
3564
3564
  //# sourceMappingURL=portal.min.js.map