{"version":3,"file":"js/kings-court.min.js","mappings":"oHAEA,SAAS,iBAAiB,mBAAoB,IAAM,CAClD,MAAMA,EAAkC,SAAS,cAAc,uBAAuB,EAChFC,EAAW,SAAS,cAAc,0BAA0B,EAC5DC,EAAS,SAAS,cAAc,wCAAwC,EACxEC,EAAkB,SAAS,iBAAiB,uCAAuC,EAEnFC,EAAmB,IAAY,CARvC,MAWQ,SAAS,gBAAkBJ,KAC7B,SAAO,YAAP,QAAkB,KAAK,CACrB,MAAO,uBACP,WAAY,cACd,CAAC,EACD,OAAO,oBAAoB,OAAQI,CAAgB,EAEvD,EAEMC,EAAkB,IAAY,CApBtC,OAqBI,SAAO,YAAP,QAAkB,KAAK,CACrB,MAAO,uBACP,WAAY,YACd,CAAC,CACH,EAGA,WAAW,IAAM,CA5BnB,MAgCQ,SAAS,gBAAkBL,KAC5B,WAAS,gBAAT,QAA8C,KAAK,GACpD,OAAO,iBAAiB,OAAQI,CAAgB,CAIpD,EAAG,GAAG,EAGNH,GAAU,iBAAiB,QAASI,CAAe,EAGnDF,EAAgB,QAAQG,GAAM,CA5ChC,MA6CI,MAAMC,GAAO,EAAAD,EAAG,aAAH,cAAe,cAAc,KACtCC,IACFA,EAAK,OAAS,SAElB,CAAC,EAGGL,GAAUF,GACZE,EAAO,iBAAiB,QAAS,IAAM,CACrCF,EAAa,eAAe,CAC1B,SAAU,SACV,MAAO,SACP,OAAQ,SACV,CAAC,CACH,CAAC,CAEL,CAAC,C,6GC2DD,WAvHsB;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,G,gMCef,IAAMQ,EAAN,cAAkC,IAAW,CAsDlD,aAAe,CACb,MAAM,EAtDR,qBAA0B,OAAO,SAAS,oBAAqB,uBAAuB,EACtF,uBAA4B,OAAO,SAAS,oBAAqB,qCAAqC,EAStG,WAAgB,OAAO,SAAS,oBAAqB,4CAA4C,EAGjG,cAAmB,OAAO,SAAS,oBAAqB,8EAA8E,EAGtI,YAAkB,GASlB,kBAAwB,GAGxB,mBAAyB,GAGzB,gBAAqB,GAGrB,mBAAyB,GAGzB,mBAAyB,GASzB,kBAAuB,OAAO,SAAS,oBAAqB,WAAW,EAUhE,OAAO,eAAe,IAAI,WAAW,GACxC,OAAO,eAAe,OAAO,YAAaC,EAAA,CAAQ,EAGpD,KAAK,cAAgB,KAAK,cAAc,KAAK,IAAI,EACjD,KAAK,eAAiB,KAAK,eAAe,KAAK,IAAI,EACnD,KAAK,gBAAkB,KAAK,gBAAgB,KAAK,IAAI,EACrD,KAAK,SAAW,KAAK,SAAS,KAAK,IAAI,CACzC,CAEA,mBAA2B,CACzB,MAAM,kBAAkB,EAGxB,SAAS,iBAAiB,mBAAoB,IAAM,CAClD,KAAK,UAAU,CACjB,CAAC,CACH,CAEA,WAAa,CACX,KAAK,YAAc,SAAS,cAAc,uCAAuC,EACjF,MAAMC,EAAiB,SAAS,cAAc,8CAA8C,EAE5F,GAAI,KAAK,YAAa,CACpB,MAAMC,EAAqB,SAAS,cAAc,mCAAmC,EACrFA,GAAoB,iBAAiB,QAAS,KAAK,eAAe,EAClE,KAAK,YAAY,iBAAiB,QAAS,KAAK,cAAc,EAC9D,KAAK,YAAY,iBAAiB,QAAS,KAAK,eAAe,EAC/DD,GAAgB,iBAAiB,QAAUE,GAAMA,EAAE,gBAAgB,CAAC,CACtE,CACF,CAEA,eAAiB,CACf,KAAK,cAAgB,GACrB,MAAMC,EAAQ,KAAK,SAAS,WAC5B,GAAI,CAACA,EACH,MAAO,GAGT,GAAI,CAACA,EAAM,cAAc,EAAG,CAC1B,MAAMC,EAAgBD,EAAM,SAC5B,OAAIC,EAAc,aAChB,KAAK,WAAa,KAAK,gBACdA,EAAc,eACvB,KAAK,WAAa,KAAK,mBAEzB,KAAK,aAAe,GACpBD,EAAM,MAAM,EACL,EACT,CAEA,YAAK,aAAe,GACb,EACT,CAEA,WAAYD,EAAU,CAhIxB,MAuII,GANAA,EAAE,eAAe,EAEb,KAAK,iBACP,OAAK,SAAS,aAAd,QAA0B,iBAAiB,QAAS,KAAK,aAAa,GAGpE,KAAK,cAAc,EAAG,CACxB,KAAK,cAAgB,GAErB,MAAMG,EAAO,IAAI,SACjBA,EAAK,OAAO,UAAW,KAAK,MAAM,EAClCA,EAAK,OAAO,qBAAsB,KAAK,cAAc,EACrDA,EAAK,OAAO,QAAS,KAAK,SAAS,WAAW,KAAK,EACnDA,EAAK,OAAO,WAAY,OAAO,SAAS,IAAI,EAE5C,MAAM,qCAAsC,CAC1C,OAAQ,OACR,KAAMA,CACR,CAAC,EAAE,KAAMC,GAAa,CAnJ5B,IAAAC,EAoJYD,EAAS,SAAW,MACtB,KAAK,cAAgB,IACrBC,EAAA,OAAO,YAAP,MAAAA,EAAkB,KAAK,CACrB,MAAO,KAAW,wBAClB,WAAY,KAAK,eACjB,UAAW,KAAK,aAChB,aAAc,KAAK,QACrB,CAAC,EAEL,CAAC,EAAE,QAAQ,IAAM,CACf,KAAK,cAAgB,EACvB,CAAC,CACH,CACF,CAEA,gBAAkB,CAnKpB,SAoKI,OAAK,cAAL,QAAkB,UAAU,EAC5B,MAAMC,GAAwB,OAAK,cAAL,cAAkB,cAAc,aAC1DA,GACFA,EAAsB,MAAM,EAE9B,KAAK,uBAAuB,EAC5B,SAAS,iBAAiB,UAAW,KAAK,QAAQ,CACpD,CAEA,SAAUN,EAAkB,CACtBA,EAAE,MAAQ,UACZ,KAAK,gBAAgB,CAEzB,CAEA,iBAAmB,CAnLrB,OAoLI,OAAK,cAAL,QAAkB,MAAM,EACxB,KAAK,YAAY,MAAM,EACvB,KAAK,sBAAsB,EAC3B,SAAS,oBAAoB,UAAW,KAAK,QAAQ,CACvD,CAEA,uBAAyB,CACvB,SAAS,cAAc,MAAM,EAAG,QAAQ,YAAc,OACxD,CAEA,wBAA0B,CACxB,SAAS,cAAc,MAAM,EAAG,QAAQ,YAAc,MACxD,CAEA,YAAc,CACZ,SAAO;AAAA;AAAA,eAEC,KAAW,KAAK,KAAK,CAAC;AAAA,cACvB,KAAW,KAAK,QAAQ,CAAC;AAAA;AAAA;AAAA;AAAA;AAAA,+BAKR,KAAS,CAAE,iBAAkB,KAAK,MAAO,CAAC,CAAC;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,2BAM5C,OAAO,SAAS,oBAAqB,kBAAkB,CAAC;AAAA,6BACtD,KAAK,KAAK;AAAA;AAAA;AAAA,uBAGhB,KAAK,YAAY;AAAA,qBACnB,CAAC,KAAK,eAAiB,CAAC,KAAK,YAAY;AAAA,6BACjC,KAAK,UAAU;AAAA;AAAA;AAAA;AAAA;AAAA,oBAKxB,KAAK,YAAY;AAAA;AAAA;AAAA,uBAGd,KAAK,MAAM;AAAA,2BACP,KAAK,YAAY;AAAA,0BAClB,KAAK,aAAa;AAAA;AAAA,sBAEtB,KAAK,UAAU;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,eAMzB,WAAO,KACf,OAAO,YACL,OAAO,SACL,oBACA,8HACF,EAAG,CACD,iBAAkB,wEACpB,EACA,EACF,CAAC,CACH,EAAE;AAAA;AAAA;AAAA,SAIF,CAEA,eAAiB,CACf,SAAO;AAAA;AAAA,YAEC,OAAO,SAAS,oBAAqB,kBAAkB,CAAC;AAAA,WACzD,OAAO,SAAS,oBAAqB,mIAAmI,CAAC;AAAA,WACzK,OAAO,SAAS,oBAAqB,8EAA8E,CAAC;AAAA,WAE7H,CAEA,QAAU,CACR,SAAO;AAAA,2CAC6B,KAAS,CAAE,8BAA+B,KAAK,MAAO,CAAC,CAAC;AAAA,QACxF,KAAK,cAAgB,KAAK,cAAc,EAAI,KAAK,WAAW,CAAC;AAAA;AAAA,KAGnE,CACF,EAzPaJ,EAiDJ,OAAS,CACd,IACA,CACF,EA/CA,MADC,MAAS,CAAE,KAAM,OAAQ,UAAW,SAAU,CAAC,GAJrCA,EAKX,sBAGA,MADC,MAAS,CAAE,KAAM,OAAQ,UAAW,iBAAkB,CAAC,GAP7CA,EAQX,8BAGA,MADC,MAAS,CAAE,KAAM,OAAQ,UAAW,OAAQ,CAAC,GAVnCA,EAWX,qBAGA,MADC,MAAS,CAAE,KAAM,OAAQ,UAAW,UAAW,CAAC,GAbtCA,EAcX,wBAGA,MADC,MAAS,CAAE,UAAW,IAA0B,UAAW,SAAU,CAAC,GAhB5DA,EAiBX,sBAGA,MADC,MAAS,CAAE,KAAM,OAAQ,UAAW,OAAQ,CAAC,GAnBnCA,EAoBX,qBAGA,MADC,MAAS,CAAE,KAAM,OAAQ,UAAW,UAAW,CAAC,GAtBtCA,EAuBX,wBAGA,MADC,MAAM,GAzBIA,EA0BX,4BAGA,MADC,MAAM,GA5BIA,EA6BX,6BAGA,MADC,MAAM,GA/BIA,EAgCX,0BAGA,MADC,MAAM,GAlCIA,EAmCX,6BAGA,MADC,MAAM,GArCIA,EAsCX,6BAGA,MADC,KAAM,WAAW,GAxCPA,EAyCX,wBAGA,MADC,KAAM,wCAAwC,GA3CpCA,EA4CX,2BA5CWA,EAAN,MADN,MAAc,uBAAuB,GACzBA,CAAmB,C","sources":["webpack:///./src/js/sections/education/kings-court.ts","webpack:///./src/sass/wc/NFBNewsletterBanner.sass","webpack:///./src/js/wc/NFBNewsletterBanner.ts"],"sourcesContent":["import '@src/js/wc/NFBNewsletterBanner'\n\ndocument.addEventListener('DOMContentLoaded', () => {\n  const lessonIframe: HTMLIFrameElement = document.querySelector('[data-ui-el=\"lesson\"]')!\n  const watchBtn = document.querySelector('[data-ui-el=\"watch-btn\"]')\n  const ctaBtn = document.querySelector('[data-ui-el=\"footer-cta-start-lesson\"]')\n  const externalBtnList = document.querySelectorAll('nfb-button[icon-name=\"external-link\"]')\n\n  const trackIframeClick = (): void => {\n    // As we cannot detect click directly on iframe,\n    // We test if the focus of the page is the iframe\n    if (document.activeElement === lessonIframe) {\n      window.dataLayer?.push({\n        event: 'nfb_kingscourt_click',\n        nfb_detail: 'start lesson'\n      })\n      window.removeEventListener('blur', trackIframeClick)\n    }\n  }\n\n  const trackWatchClick = (): void => {\n    window.dataLayer?.push({\n      event: 'nfb_kingscourt_click',\n      nfb_detail: 'watch film'\n    })\n  }\n\n  // Tracking Iframe Focus\n  setTimeout(() => {\n    // Reset focus if it's set on the iframe\n    // because browser can restore focus state on reload\n    // or Articulate could force focus when it detects resume\n    if (document.activeElement === lessonIframe) {\n      (document.activeElement as HTMLIFrameElement)?.blur()\n      window.addEventListener('blur', trackIframeClick)\n    } else {\n      window.addEventListener('blur', trackIframeClick)\n    }\n  }, 500)\n\n  // Tracking Watch Button\n  watchBtn?.addEventListener('click', trackWatchClick)\n\n  // Open external links in new window\n  externalBtnList.forEach(el => {\n    const link = el.shadowRoot?.querySelector('a')\n    if (link) {\n      link.target = '_blank'\n    }\n  })\n\n  // CTA in footer\n  if (ctaBtn && lessonIframe) {\n    ctaBtn.addEventListener('click', () => {\n      lessonIframe.scrollIntoView({\n        behavior: 'smooth',\n        block: 'center',\n        inline: 'nearest'\n      })\n    })\n  }\n})\n","import {css} from 'lit';\nexport const styles = css`.nfb-newsletter-banner {\n  display: flex;\n  gap: 4rem;\n  padding-top: 1.5rem;\n  padding-bottom: 3rem;\n  color: var(--nfb-page-text-color);\n  min-height: 160px;\n  align-items: center;\n}\n\n@media screen and (max-width: 1200px), print {\n  .nfb-newsletter-banner {\n    flex-direction: column;\n    align-items: stretch;\n    gap: 1.5rem;\n  }\n}\n.nfb-newsletter-banner__intro {\n  flex: 1 1 40%;\n  max-width: 720px;\n}\n\n.nfb-newsletter-banner__intro h3 {\n  font-family: \"Elza Round\", Georgia, serif, \"Apple Color Emoji\", \"Segoe UI Emoji\", \"Segoe UI Symbol\";\n  font-style: normal;\n  font-weight: bold;\n  font-size: 1.75rem;\n  line-height: 2rem;\n  color: var(--nfb-page-text-color);\n  margin: 0;\n  margin-bottom: 1.5rem;\n}\n\n.nfb-newsletter-banner__intro p {\n  font-family: \"Elza Round\", Georgia, serif, \"Apple Color Emoji\", \"Segoe UI Emoji\", \"Segoe UI Symbol\";\n  font-style: normal;\n  font-weight: normal;\n  font-size: 1rem;\n  line-height: 1.25rem;\n  color: var(--nfb-page-text-color);\n  margin: 0;\n}\n\n.nfb-newsletter-banner__form-container {\n  flex-grow: 1;\n}\n\n.nfb-newsletter-banner__form {\n  display: flex;\n  gap: 1rem;\n  align-items: flex-start;\n}\n\n@media screen and (max-width: 768px), print {\n  .nfb-newsletter-banner__form {\n    flex-direction: column;\n    align-items: stretch;\n  }\n}\n.nfb-newsletter-banner__form nfb-button::part(button) {\n  height: calc(30px + 1em);\n}\n\n.nfb-newsletter-banner__form nfb-input {\n  flex-grow: 1;\n}\n\n.nfb-newsletter-banner__form nfb-input::part(form-element-container) {\n  min-width: 0;\n}\n\n.nfb-newsletter-banner__form .nfb-form__message--error {\n  font-family: \"Public Sans\", Georgia, serif, \"Apple Color Emoji\", \"Segoe UI Emoji\", \"Segoe UI Symbol\";\n  font-style: normal;\n  font-weight: normal;\n  font-size: 0.875rem;\n  line-height: 1.25rem;\n  color: var(--nfb-page-text-color);\n}\n\n.nfb-newsletter-banner__terms {\n  font-family: \"Public Sans\", Georgia, serif, \"Apple Color Emoji\", \"Segoe UI Emoji\", \"Segoe UI Symbol\";\n  font-style: normal;\n  font-weight: normal;\n  font-size: 0.75rem;\n  line-height: 1rem;\n  color: var(--nfb-page-text-color);\n  color: #626065;\n}\n\n.nfb-newsletter-banner__terms button {\n  display: inline;\n  margin: 0;\n  padding: 0;\n  text-decoration: underline;\n  cursor: pointer;\n  color: inherit;\n  background: none;\n  border: none;\n  box-shadow: none;\n  -webkit-appearance: none;\n}\n\n.nfb-newsletter-banner__terms button:hover, .nfb-newsletter-banner__terms button:focus {\n  color: #1C7A3E;\n}\n\n.nfb-newsletter-banner--dark nfb-input::part(form-element-container) {\n  --nfb-form-background-color: #FFFFFF;\n  --nfb-form-color: #000000;\n}\n\n.nfb-newsletter-banner--dark .nfb-newsletter-banner__terms {\n  color: #D4D3D6;\n}\n\n.nfb-newsletter-banner--dark .nfb-newsletter-banner__terms button:hover, .nfb-newsletter-banner--dark .nfb-newsletter-banner__terms button:focus {\n  color: #05EE80;\n}`;\nexport default styles;\n","import { LitElement, html } from 'lit'\nimport { customElement, query, state, property } from 'lit/decorators.js'\nimport { unsafeHTML } from 'lit/directives/unsafe-html.js'\nimport { classMap } from 'lit/directives/class-map.js'\n\nimport { NFBInput } from '@web-nfb/frontend-static/design-system/wc/form/NFBInput'\nimport { stringToBooleanConverter } from '@web-nfb/frontend-static/design-system/wc/_utils'\n\nimport { GTM_EVENTS } from '@src/js/constants'\n\n// @ts-expect-error Lit Sass import\nimport formStyles from '@web-nfb/frontend-static/design-system/sass/elements/form.sass?lit'\n// @ts-expect-error Lit Sass import\nimport newsletterStyles from '@src/sass/wc/NFBNewsletterBanner.sass?lit'\n\n@customElement('nfb-newsletter-banner')\nexport class NFBNewsletterBanner extends LitElement {\n  emptyEmailError: string = window.pgettext('Newsletter banner', 'Please enter a value.')\n  invalidEmailError: string = window.pgettext('Newsletter banner', 'Please enter a valid email address.')\n\n  @property({ type: String, attribute: 'api-key' })\n  apiKey: string\n\n  @property({ type: String, attribute: 'newsletter-slug' })\n  newsletterSlug: string\n\n  @property({ type: String, attribute: 'title' })\n  title: string = window.pgettext('Newsletter banner', 'Stay inspired. Stream stories that matter.')\n\n  @property({ type: String, attribute: 'subtitle' })\n  subtitle: string = window.pgettext('Newsletter banner', 'Get the best of Canadian documentary and animation in your inbox every week.')\n\n  @property({ converter: stringToBooleanConverter, attribute: 'is-dark' })\n  isDark: boolean = true\n\n  @property({ type: String, attribute: 'email' })\n  email: string\n\n  @property({ type: String, attribute: 'position' })\n  position: string\n\n  @state()\n  emailInvalid: boolean = false\n\n  @state()\n  emailPristine: boolean = true\n\n  @state()\n  emailError: string = ''\n\n  @state()\n  formIsLoading: boolean = false\n\n  @state()\n  submitSucceed: boolean = false\n\n  @query('nfb-input')\n  nfbInput: NFBInput\n\n  @query('[data-ui-el=\"newsletter-terms-button\"]')\n  termsButton: HTMLButtonElement\n\n  _termsModal: HTMLDialogElement | null\n  _submitLabel: string = window.pgettext('Newsletter banner', 'Subscribe')\n\n  static styles = [\n    formStyles,\n    newsletterStyles\n  ]\n\n  constructor () {\n    super()\n\n    if (!window.customElements.get('nfb-input')) {\n      window.customElements.define('nfb-input', NFBInput)\n    }\n\n    this.validateEmail = this.validateEmail.bind(this)\n    this.openTermsModal = this.openTermsModal.bind(this)\n    this.closeTermsModal = this.closeTermsModal.bind(this)\n    this.onEscape = this.onEscape.bind(this)\n  }\n\n  connectedCallback (): void {\n    super.connectedCallback()\n\n    // Wait for page to be loaded to have access to outside modal\n    document.addEventListener('DOMContentLoaded', () => {\n      this.initModal()\n    })\n  }\n\n  initModal () {\n    this._termsModal = document.querySelector('[data-ui-el=\"newsletter-terms-modal\"]')\n    const modalContainer = document.querySelector('[data-ui-el=\"modal-inner-container-element\"]')\n\n    if (this._termsModal) {\n      const termsModalCloseBtn = document.querySelector('[data-ui-el=\"close-modal-button\"]')\n      termsModalCloseBtn?.addEventListener('click', this.closeTermsModal)\n      this.termsButton.addEventListener('click', this.openTermsModal)\n      this._termsModal.addEventListener('click', this.closeTermsModal)\n      modalContainer?.addEventListener('click', (e) => e.stopPropagation())\n    }\n  }\n\n  validateEmail () {\n    this.emailPristine = false\n    const input = this.nfbInput.inputField\n    if (!input) {\n      return false\n    }\n\n    if (!input.checkValidity()) {\n      const validityState = input.validity\n      if (validityState.valueMissing) {\n        this.emailError = this.emptyEmailError\n      } else if (validityState.typeMismatch) {\n        this.emailError = this.invalidEmailError\n      }\n      this.emailInvalid = true\n      input.focus()\n      return false\n    }\n\n    this.emailInvalid = false\n    return true\n  }\n\n  submitForm (e: Event) {\n    e.preventDefault()\n    // add type listener on first submit\n    if (this.emailPristine) {\n      this.nfbInput.inputField?.addEventListener('input', this.validateEmail)\n    }\n\n    if (this.validateEmail()) {\n      this.formIsLoading = true\n\n      const data = new FormData()\n      data.append('api_key', this.apiKey)\n      data.append('list_of_newsletter', this.newsletterSlug)\n      data.append('email', this.nfbInput.inputField.value)\n      data.append('referrer', window.location.href)\n\n      fetch('/api/v2/json/newsletter/subscribe/', {\n        method: 'post',\n        body: data\n      }).then((response) => {\n        if (response.status === 200) {\n          this.submitSucceed = true\n          window.dataLayer?.push({\n            event: GTM_EVENTS.SUBSCRIPTION_NEWSLETTER,\n            nfb_detail: this.newsletterSlug,\n            link_text: this._submitLabel,\n            nfb_position: this.position\n          })\n        }\n      }).finally(() => {\n        this.formIsLoading = false\n      })\n    }\n  }\n\n  openTermsModal () {\n    this._termsModal?.showModal()\n    const firstFocusableElement = this._termsModal?.querySelector('button, a') as HTMLElement\n    if (firstFocusableElement) {\n      firstFocusableElement.focus()\n    }\n    this.disableParentScrolling()\n    document.addEventListener('keydown', this.onEscape)\n  }\n\n  onEscape (e: KeyboardEvent) {\n    if (e.key === 'Escape') {\n      this.closeTermsModal()\n    }\n  }\n\n  closeTermsModal () {\n    this._termsModal?.close()\n    this.termsButton.focus()\n    this.enableParentScrolling()\n    document.removeEventListener('keydown', this.onEscape)\n  }\n\n  enableParentScrolling () {\n    document.querySelector('html')!.dataset.uiShowModal = false.toString()\n  }\n\n  disableParentScrolling () {\n    document.querySelector('html')!.dataset.uiShowModal = true.toString()\n  }\n\n  renderForm () {\n    return html`\n    <div class=\"nfb-newsletter-banner__intro\">\n      <h3>${unsafeHTML(this.title)}</h3>\n      <p>${unsafeHTML(this.subtitle)}</p>\n    </div>\n    <div class=\"nfb-newsletter-banner__form-container\">\n      <div>\n        <form\n          class=\"nfb-form ${classMap({ 'nfb-form--dark': this.isDark })} nfb-newsletter-banner__form\"\n          part=\"form\"\n        >\n          <nfb-input\n            name=\"email\"\n            type=\"email\"\n            placeholder=\"${window.pgettext('Newsletter banner', 'Enter your email')}\"\n            initial-value=\"${this.email}\"\n            type=\"email\"\n            is-required=\"true\"\n            invalid=\"${this.emailInvalid}\"\n            valid=\"${!this.emailPristine && !this.emailInvalid}\"\n            error-message=\"${this.emailError}\"\n            data-cy=\"nfb-input\"\n          ></nfb-input>\n\n          <nfb-button\n            text=\"${this._submitLabel}\"\n            icon-name=\"newsletter-o\"\n            primary-variant=\"primary\"\n            is-dark=\"${this.isDark}\"\n            is-disabled=\"${this.emailInvalid}\"\n            is-loading=\"${this.formIsLoading}\"\n            type=\"submit\"\n            @click=\"${this.submitForm}\"\n            data-cy=\"nfb-button\"\n            exportparts=\"button\"\n          ></nfb-button>\n        </form>\n        <p class=\"nfb-newsletter-banner__terms\">\n          ${html`${unsafeHTML(\n    window.interpolate(\n      window.pgettext(\n        'Newsletter banner',\n        'By clicking Subscribe, you\\'re confirming that you agree with our <button %(button_attribute)s>Terms and Conditions</button>.'\n      ), {\n        button_attribute: 'data-cy=\"newsletter-terms-button\" data-ui-el=\"newsletter-terms-button\"'\n      },\n      true\n    ))\n  }`}\n        </p>\n      </div>\n  </div>`\n  }\n\n  renderSuccess () {\n    return html`\n    <div data-cy=\"success\">\n      <h3>${window.pgettext('Newsletter banner', 'One last step...')}</h3>\n      <p>${window.pgettext('Newsletter banner', 'You will soon receive an email from us. Please confirm your email address and your subcription by clicking the confirmation link.')}</p>\n      <p>${window.pgettext('Newsletter banner', 'Adding info@nfb.ca to your email address book will ensure reliable delivery.')}</p>\n    </div>`\n  }\n\n  render () {\n    return html`\n    <div class=\"nfb-newsletter-banner ${classMap({ 'nfb-newsletter-banner--dark': this.isDark })}\">\n      ${this.submitSucceed ? this.renderSuccess() : this.renderForm()}\n    </div>\n    `\n  }\n}\n\ndeclare global {\n  interface HTMLElementTagNameMap {\n    'nfb-newsletter-banner': NFBNewsletterBanner\n  }\n}\n"],"names":["lessonIframe","watchBtn","ctaBtn","externalBtnList","trackIframeClick","trackWatchClick","el","link","NFBNewsletterBanner","NFBInput","modalContainer","termsModalCloseBtn","e","input","validityState","data","response","_a","firstFocusableElement"],"sourceRoot":""}