@jmeirinkmarimed/form-popup 1.0.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -0,0 +1 @@
1
+ {"version":3,"file":"form-popup.cjs.js","sources":["../node_modules/@r2wc/core/dist/core.js","../node_modules/@r2wc/react-to-web-component/dist/react-to-web-component.js","../src/FormPopup/FormPopup.styles.ts","../src/FormPopup/FormPopup.injected.css.ts","../src/FormPopup/hooks/useFormPopupVisibility.ts","../src/FormPopup/hooks/useDeferredReady.ts","../src/FormPopup/parseStates.ts","../src/FormPopup/getWebComponentHost.ts","../src/FormPopup/resolveRecaptchaText.ts","../src/FormPopup/parseCommunicationConsents.ts","../src/FormPopup/api/submitHubSpotForm.ts","../src/FormPopup/screens/FormScreen.tsx","../src/FormPopup/screens/ConfirmationScreen.tsx","../src/FormPopup/FormPopup.tsx","../src/web-component/registerFormPopupElement.ts","../src/index.ts"],"sourcesContent":["var x = Object.defineProperty;\nvar N = (t, e, n) => e in t ? x(t, e, { enumerable: !0, configurable: !0, writable: !0, value: n }) : t[e] = n;\nvar y = (t, e, n) => N(t, typeof e != \"symbol\" ? e + \"\" : e, n);\nconst P = {\n stringify: (t) => t ? \"true\" : \"false\",\n parse: (t) => /^[ty1-9]/i.test(t)\n}, T = {\n stringify: (t) => t.name,\n parse: (t, e, n) => {\n const a = (() => {\n if (typeof window < \"u\" && t in window)\n return window[t];\n if (typeof global < \"u\" && t in global)\n return global[t];\n })();\n return typeof a == \"function\" ? a.bind(n) : void 0;\n }\n}, V = {\n stringify: (t) => JSON.stringify(t),\n parse: (t) => JSON.parse(t)\n}, E = {\n stringify: (t) => `${t}`,\n parse: (t) => parseFloat(t)\n}, L = {\n stringify: (t) => t,\n parse: (t) => t\n}, A = {\n string: L,\n number: E,\n boolean: P,\n function: T,\n json: V\n};\nfunction $(t) {\n return t.replace(\n /([a-z0-9])([A-Z])/g,\n (e, n, a) => `${n}-${a.toLowerCase()}`\n );\n}\nconst d = Symbol.for(\"r2wc.render\"), g = Symbol.for(\"r2wc.connected\"), l = Symbol.for(\"r2wc.context\"), c = Symbol.for(\"r2wc.props\");\nfunction _(t, e, n) {\n var C, O, j;\n e.props || (e.props = t.propTypes ? Object.keys(t.propTypes) : []), e.events || (e.events = []);\n const a = Array.isArray(e.props) ? e.props.slice() : Object.keys(e.props), v = Array.isArray(e.events) ? e.events.slice() : Object.keys(e.events), h = {}, S = {}, m = {}, w = {};\n for (const s of a) {\n h[s] = Array.isArray(e.props) ? \"string\" : e.props[s];\n const u = $(s);\n m[s] = u, w[u] = s;\n }\n for (const s of v)\n S[s] = Array.isArray(e.events) ? {} : e.events[s];\n class k extends HTMLElement {\n constructor() {\n super();\n y(this, j, !0);\n y(this, O);\n y(this, C, {});\n y(this, \"container\");\n e.shadow ? this.container = this.attachShadow({\n mode: e.shadow\n }) : this.container = this, this[c].container = this.container;\n for (const r of a) {\n const p = m[r], o = this.getAttribute(p), i = h[r], f = i ? A[i] : null;\n f != null && f.parse && o && (this[c][r] = f.parse(o, p, this));\n }\n for (const r of v)\n this[c][r] = (p) => {\n const o = r.replace(/^on/, \"\").toLowerCase();\n this.dispatchEvent(\n new CustomEvent(o, { detail: p, ...S[r] })\n );\n };\n }\n static get observedAttributes() {\n return Object.keys(w);\n }\n connectedCallback() {\n this[g] = !0, this[d]();\n }\n disconnectedCallback() {\n this[g] = !1, this[l] && n.unmount(this[l]), delete this[l];\n }\n attributeChangedCallback(r, p, o) {\n const i = w[r], f = h[i], b = f ? A[f] : null;\n i in h && (b != null && b.parse) && o && (this[c][i] = b.parse(o, r, this), this[d]());\n }\n [(j = g, O = l, C = c, d)]() {\n this[g] && (this[l] ? n.update(this[l], this[c]) : this[l] = n.mount(\n this.container,\n t,\n this[c]\n ));\n }\n }\n for (const s of a) {\n const u = m[s], r = h[s];\n Object.defineProperty(k.prototype, s, {\n enumerable: !0,\n configurable: !0,\n get() {\n return this[c][s];\n },\n set(p) {\n this[c][s] = p;\n const o = r ? A[r] : null;\n if (o != null && o.stringify) {\n const i = o.stringify(p, u, this);\n this.getAttribute(u) !== i && this.setAttribute(u, i);\n } else\n this[d]();\n }\n });\n }\n return k;\n}\nexport {\n _ as default\n};\n","import m from \"react\";\nimport o from \"react-dom\";\nimport u from \"@r2wc/core\";\nfunction c(e, t, n) {\n const r = m.createElement(t, n);\n return o.render(r, e), {\n container: e,\n ReactComponent: t\n };\n}\nfunction f({ container: e, ReactComponent: t }, n) {\n const r = m.createElement(t, n);\n o.render(r, e);\n}\nfunction i({ container: e }) {\n o.unmountComponentAtNode(e);\n}\nfunction p(e, t = {}) {\n return u(e, t, { mount: c, update: f, unmount: i });\n}\nexport {\n p as default\n};\n","import type { CSSProperties } from \"react\"\n\ninterface StyleProps {\n backgroundColor?: string\n overlayColor?: string\n textColor?: string\n buttonColor?: string\n buttonTextColor?: string\n fontFamily?: string\n headingFontFamily?: string\n}\n\nexport const resetStyles: CSSProperties = {\n boxSizing: \"border-box\",\n margin: \"0\",\n padding: \"0\",\n letterSpacing: \"normal\",\n}\n\nconst DEFAULT_CARD = \"#d4ecec\"\nconst DEFAULT_TEXT = \"#111111\"\nconst DEFAULT_BUTTON = \"#000000\"\nconst DEFAULT_BUTTON_TEXT = \"#ffffff\"\nconst DEFAULT_SANS =\n 'system-ui, -apple-system, \"Segoe UI\", Roboto, Helvetica, Arial, sans-serif'\nconst DEFAULT_SERIF = 'Georgia, \"Times New Roman\", Times, serif'\n\nexport const createStyles = (props: StyleProps): Record<string, CSSProperties> => {\n const sans = props.fontFamily || DEFAULT_SANS\n const serif = props.headingFontFamily || DEFAULT_SERIF\n const textColor = props.textColor || DEFAULT_TEXT\n\n return {\n overlay: {\n ...resetStyles,\n fontFamily: sans,\n position: \"fixed\",\n top: 0,\n left: 0,\n width: \"100%\",\n height: \"100%\",\n minHeight: \"100vh\",\n maxWidth: \"100vw\",\n zIndex: 2147483647,\n display: \"flex\",\n alignItems: \"center\",\n justifyContent: \"center\",\n backgroundColor: props.overlayColor || \"rgba(0, 0, 0, 0.55)\",\n overflow: \"auto\",\n WebkitTextSizeAdjust: \"100%\",\n WebkitFontSmoothing: \"antialiased\",\n MozOsxFontSmoothing: \"grayscale\",\n padding: \"1.5rem\",\n },\n\n card: {\n ...resetStyles,\n fontFamily: sans,\n position: \"relative\",\n width: \"100%\",\n maxWidth: \"440px\",\n minHeight: \"480px\",\n justifyContent: \"center\",\n backgroundColor: props.backgroundColor || DEFAULT_CARD,\n color: textColor,\n padding: \"3rem 2.25rem 1.5rem\",\n display: \"flex\",\n flexDirection: \"column\",\n alignItems: \"center\",\n textAlign: \"center\",\n boxShadow: \"0 12px 40px rgba(0, 0, 0, 0.18)\",\n },\n\n closeButton: {\n ...resetStyles,\n position: \"absolute\",\n top: \"14px\",\n right: \"14px\",\n width: \"28px\",\n height: \"28px\",\n borderRadius: \"50%\",\n border: \"none\",\n backgroundColor: \"#cfcfcf\",\n color: \"#4a4a4a\",\n cursor: \"pointer\",\n display: \"flex\",\n alignItems: \"center\",\n justifyContent: \"center\",\n padding: \"0\",\n lineHeight: 1,\n },\n\n formTitle: {\n ...resetStyles,\n fontFamily: serif,\n fontSize: \"30px\",\n fontWeight: 700,\n lineHeight: 1.25,\n color: textColor,\n maxWidth: \"22ch\",\n },\n\n formSubtitle: {\n ...resetStyles,\n fontFamily: sans,\n fontSize: \"15px\",\n fontWeight: 400,\n lineHeight: 1.4,\n color: textColor,\n marginTop: \"0.85rem\",\n marginBottom: \"1.35rem\",\n },\n\n form: {\n ...resetStyles,\n width: \"100%\",\n display: \"flex\",\n flexDirection: \"column\",\n alignItems: \"stretch\",\n textAlign: \"left\",\n },\n\n emailInput: {\n ...resetStyles,\n fontFamily: serif,\n width: \"100%\",\n height: \"48px\",\n padding: \"0 14px\",\n fontSize: \"16px\",\n backgroundColor: \"#ffffff\",\n color: \"#111111\",\n border: \"1px solid #e6e6e6\",\n borderRadius: \"0\",\n outline: \"none\",\n appearance: \"none\",\n WebkitAppearance: \"none\",\n },\n\n stateLabel: {\n ...resetStyles,\n fontFamily: sans,\n fontSize: \"15px\",\n fontWeight: 700,\n color: textColor,\n marginTop: \"1.15rem\",\n marginBottom: \"0.75rem\",\n },\n\n stateGrid: {\n ...resetStyles,\n display: \"grid\",\n gridTemplateColumns: \"1fr 1fr\",\n columnGap: \"1.25rem\",\n rowGap: \"0.7rem\",\n width: \"100%\",\n },\n\n radioRow: {\n ...resetStyles,\n display: \"flex\",\n alignItems: \"center\",\n gap: \"0.5rem\",\n cursor: \"pointer\",\n fontFamily: serif,\n fontSize: \"16px\",\n color: textColor,\n userSelect: \"none\",\n },\n\n radio: {\n ...resetStyles,\n width: \"16px\",\n height: \"16px\",\n flexShrink: 0,\n accentColor: textColor,\n cursor: \"pointer\",\n },\n\n consentList: {\n ...resetStyles,\n display: \"flex\",\n flexDirection: \"column\",\n gap: \"0.65rem\",\n width: \"100%\",\n marginTop: \"1.15rem\",\n },\n\n consentRow: {\n ...resetStyles,\n display: \"flex\",\n alignItems: \"flex-start\",\n gap: \"0.5rem\",\n cursor: \"pointer\",\n fontFamily: sans,\n fontSize: \"12px\",\n lineHeight: 1.4,\n color: textColor,\n userSelect: \"none\",\n },\n\n consentCheckbox: {\n ...resetStyles,\n width: \"16px\",\n height: \"16px\",\n marginTop: \"1px\",\n flexShrink: 0,\n accentColor: textColor,\n cursor: \"pointer\",\n },\n\n consentRequired: {\n ...resetStyles,\n color: \"#9b1c1c\",\n fontSize: \"16px\",\n fontWeight: 700,\n lineHeight: 1,\n marginLeft: \"0.15em\",\n },\n\n submitButton: {\n ...resetStyles,\n fontFamily: serif,\n alignSelf: \"center\",\n marginTop: \"1.75rem\",\n minWidth: \"168px\",\n height: \"46px\",\n padding: \"0 2rem\",\n border: \"none\",\n borderRadius: \"0\",\n backgroundColor: props.buttonColor || DEFAULT_BUTTON,\n color: props.buttonTextColor || DEFAULT_BUTTON_TEXT,\n fontSize: \"20px\",\n fontWeight: 700,\n cursor: \"pointer\",\n lineHeight: 1,\n },\n\n error: {\n ...resetStyles,\n fontFamily: sans,\n fontSize: \"13px\",\n color: \"#9b1c1c\",\n textAlign: \"center\",\n marginTop: \"0.75rem\",\n },\n\n recaptcha: {\n ...resetStyles,\n fontFamily: sans,\n fontSize: \"11px\",\n color: textColor,\n textAlign: \"center\",\n marginTop: \"1.75rem\",\n },\n\n confirmationTitle: {\n ...resetStyles,\n fontFamily: serif,\n fontSize: \"26px\",\n fontWeight: 700,\n lineHeight: 1.3,\n color: textColor,\n maxWidth: \"20ch\",\n },\n\n confirmationMessage: {\n ...resetStyles,\n fontFamily: sans,\n fontSize: \"15px\",\n fontWeight: 400,\n lineHeight: 1.45,\n color: textColor,\n marginTop: \"1rem\",\n maxWidth: \"34ch\",\n },\n\n confirmationButton: {\n ...resetStyles,\n fontFamily: serif,\n marginTop: \"1.75rem\",\n minWidth: \"168px\",\n height: \"46px\",\n padding: \"0 1.5rem\",\n border: \"none\",\n borderRadius: \"0\",\n backgroundColor: props.buttonColor || DEFAULT_BUTTON,\n color: props.buttonTextColor || DEFAULT_BUTTON_TEXT,\n fontSize: \"18px\",\n fontWeight: 700,\n cursor: \"pointer\",\n lineHeight: 1,\n },\n }\n}\n","/** Runtime CSS injected into the modal (needed for Shadow DOM + host-page isolation). */\nexport function getInjectedCss(options: {\n buttonHoverColor: string\n buttonHoverTextColor: string\n}): string {\n const { buttonHoverColor, buttonHoverTextColor } = options\n\n return `\n .sr-only {\n position: absolute !important;\n width: 1px !important;\n height: 1px !important;\n padding: 0 !important;\n margin: -1px !important;\n overflow: hidden !important;\n clip: rect(0, 0, 0, 0) !important;\n white-space: nowrap !important;\n border: 0 !important;\n }\n #form-popup-email:focus {\n border-color: #111111 !important;\n box-shadow: 0 0 0 1px #111111 !important;\n }\n #form-popup-email::placeholder {\n color: #9a9a9a !important;\n font-family: inherit !important;\n }\n #form-popup-close:hover {\n background-color: #bdbdbd !important;\n }\n #form-popup-submit:hover:not(:disabled),\n #form-popup-confirmation-button:hover {\n background-color: ${buttonHoverColor} !important;\n color: ${buttonHoverTextColor} !important;\n }\n #form-popup-submit:disabled {\n opacity: 0.65 !important;\n cursor: wait !important;\n }\n @media screen and (max-width: 480px) {\n #form-popup-card {\n padding: 2.5rem 1.25rem 1.25rem !important;\n }\n #form-popup-form-title {\n font-size: 24px !important;\n }\n #form-popup-confirmation-title {\n font-size: 22px !important;\n }\n }\n `\n}\n","import { useCallback, useEffect, useState } from \"react\"\n\nfunction storageKey(formId: string): string {\n return `formPopupSubmitted:${formId || \"default\"}`\n}\n\nfunction hasSubmitted(formId: string): boolean {\n if (typeof window === \"undefined\" || !formId) return false\n return localStorage.getItem(storageKey(formId)) === \"true\"\n}\n\nexport function useFormPopupVisibility(formId: string) {\n const [showModal, setShowModal] = useState(() =>\n formId ? !hasSubmitted(formId) : false\n )\n\n useEffect(() => {\n if (!formId) return\n setShowModal(!hasSubmitted(formId))\n }, [formId])\n\n const markSubmitted = useCallback(() => {\n if (!formId) return\n localStorage.setItem(storageKey(formId), \"true\")\n }, [formId])\n\n const dismiss = useCallback(() => {\n setShowModal(false)\n }, [])\n\n return { showModal, markSubmitted, dismiss }\n}\n","import { useEffect, useState } from \"react\"\n\nconst AGE_GATE_STORAGE_KEY = \"ageVerified\"\nconst AGE_GATE_STORAGE_VALUE = \"true\"\nconst AGE_GATE_HOST = \"age-gate\"\nconst AGE_GATE_OVERLAY = \"#age-gate-modal\"\n\nexport interface DeferredReadyOptions {\n waitForAgeGate?: boolean\n waitForStorageKey?: string\n waitForStorageValue?: string\n waitUntilHidden?: string\n waitUntilHiddenHost?: string\n}\n\nfunction storageSatisfied(key: string, value: string): boolean {\n if (typeof window === \"undefined\") return false\n return localStorage.getItem(key) === value\n}\n\nfunction findInHostShadow(hostSelector: string, overlaySelector: string): Element | null {\n try {\n const hosts = document.querySelectorAll(hostSelector)\n for (const host of hosts) {\n const found = host.shadowRoot?.querySelector(overlaySelector)\n if (found) return found\n }\n } catch {\n return null\n }\n return null\n}\n\nfunction findOverlay(overlaySelector: string, hostSelector?: string): Element | null {\n if (typeof document === \"undefined\" || !overlaySelector) return null\n try {\n const light = document.querySelector(overlaySelector)\n if (light) return light\n } catch {\n return null\n }\n if (hostSelector) {\n const shadowed = findInHostShadow(hostSelector, overlaySelector)\n if (shadowed) return shadowed\n }\n return findInHostShadow(AGE_GATE_HOST, overlaySelector)\n}\n\nfunction isDeferredReady(options: DeferredReadyOptions): boolean {\n const waitForAgeGate = Boolean(options.waitForAgeGate)\n const storageKey =\n options.waitForStorageKey?.trim() ||\n (waitForAgeGate ? AGE_GATE_STORAGE_KEY : \"\")\n const storageValue =\n options.waitForStorageValue?.trim() || AGE_GATE_STORAGE_VALUE\n const overlaySelector =\n options.waitUntilHidden?.trim() ||\n (waitForAgeGate ? AGE_GATE_OVERLAY : \"\")\n const hostSelector =\n options.waitUntilHiddenHost?.trim() || AGE_GATE_HOST\n\n if (!storageKey && !overlaySelector) return true\n\n if (storageKey && !storageSatisfied(storageKey, storageValue)) return false\n if (overlaySelector && findOverlay(overlaySelector, hostSelector)) return false\n return true\n}\n\nexport function useDeferredReady(options: DeferredReadyOptions): boolean {\n const waitForAgeGate = Boolean(options.waitForAgeGate)\n const storageKey = options.waitForStorageKey?.trim() || \"\"\n const storageValue = options.waitForStorageValue?.trim() || \"\"\n const waitUntilHidden = options.waitUntilHidden?.trim() || \"\"\n const waitUntilHiddenHost = options.waitUntilHiddenHost?.trim() || \"\"\n\n const [ready, setReady] = useState(() => isDeferredReady(options))\n\n useEffect(() => {\n const current = {\n waitForAgeGate,\n waitForStorageKey: storageKey,\n waitForStorageValue: storageValue,\n waitUntilHidden,\n waitUntilHiddenHost,\n }\n if (!waitForAgeGate && !storageKey && !waitUntilHidden) {\n setReady(true)\n return\n }\n\n const check = () => setReady(isDeferredReady(current))\n check()\n\n const shadowObservers: MutationObserver[] = []\n const observedShadows = new WeakSet<ShadowRoot>()\n const watchShadows = () => {\n const hostSel = waitUntilHiddenHost || AGE_GATE_HOST\n try {\n document.querySelectorAll(hostSel).forEach((host) => {\n const root = host.shadowRoot\n if (!root || observedShadows.has(root)) return\n observedShadows.add(root)\n const shadowObserver = new MutationObserver(check)\n shadowObserver.observe(root, {\n childList: true,\n subtree: true,\n })\n shadowObservers.push(shadowObserver)\n })\n } catch {\n /* invalid selector */\n }\n }\n watchShadows()\n\n const observer = new MutationObserver(() => {\n watchShadows()\n check()\n })\n observer.observe(document.documentElement, {\n childList: true,\n subtree: true,\n })\n\n const interval = window.setInterval(check, 250)\n\n return () => {\n observer.disconnect()\n shadowObservers.forEach((item) => item.disconnect())\n window.clearInterval(interval)\n }\n }, [waitForAgeGate, storageKey, storageValue, waitUntilHidden, waitUntilHiddenHost])\n\n return ready\n}\n","export function parseStates(states: string | string[] | undefined): string[] {\n if (!states) return []\n if (Array.isArray(states)) {\n return states.map((state) => state.trim()).filter(Boolean)\n }\n return String(states)\n .split(\",\")\n .map((state) => state.trim())\n .filter(Boolean)\n}\n","export function getWebComponentHost(\n container?: HTMLElement\n): HTMLElement | undefined {\n if (!container) return undefined\n if (container instanceof ShadowRoot) return container.host as HTMLElement\n const root = container.getRootNode()\n if (root instanceof ShadowRoot) return root.host as HTMLElement\n return undefined\n}\n\nexport function readHostAttribute(\n container: HTMLElement | undefined,\n attribute: string\n): string | undefined {\n const host = getWebComponentHost(container)\n if (!host?.hasAttribute(attribute)) return undefined\n const value = host.getAttribute(attribute)\n return value == null ? undefined : value\n}\n\nexport function resolveHostFlag(\n prop: boolean | string | undefined,\n container: HTMLElement | undefined,\n attribute: string\n): boolean {\n const host = getWebComponentHost(container)\n if (host?.hasAttribute(attribute)) {\n const raw = (host.getAttribute(attribute) ?? \"\").trim().toLowerCase()\n if (raw === \"false\" || raw === \"0\" || raw === \"no\" || raw === \"off\") {\n return false\n }\n return true\n }\n return prop === true || prop === \"true\"\n}\n","import { getWebComponentHost } from \"./getWebComponentHost\"\n\nconst DEFAULT_RECAPTCHA_TEXT = \"This site is protected by reCAPTCHA.\"\nconst HIDDEN_VALUES = new Set([\"\", \"false\", \"none\", \"off\", \"hidden\"])\n\n/**\n * r2wc skips empty HTML attributes (`if (value)`), so `recaptcha-text=\"\"` never\n * reaches React. Read the host attribute when present, and treat empty / false /\n * none / off / hidden as hidden.\n */\nexport function resolveRecaptchaText(\n recaptchaText: string | undefined,\n container?: HTMLElement\n): string {\n const host = getWebComponentHost(container)\n const raw =\n host?.hasAttribute(\"recaptcha-text\") === true\n ? (host.getAttribute(\"recaptcha-text\") ?? \"\")\n : recaptchaText\n\n if (raw === undefined) return DEFAULT_RECAPTCHA_TEXT\n if (HIDDEN_VALUES.has(String(raw).trim().toLowerCase())) return \"\"\n return String(raw)\n}\n","import type { CommunicationConsent } from \"./types\"\n\nfunction toConsent(item: unknown): CommunicationConsent | null {\n if (!item || typeof item !== \"object\") return null\n const record = item as Record<string, unknown>\n const text = String(record.text ?? \"\").trim()\n const rawId = record.subscriptionTypeId\n if (!text || (typeof rawId !== \"string\" && typeof rawId !== \"number\")) {\n return null\n }\n if (String(rawId).trim() === \"\") return null\n return {\n subscriptionTypeId: rawId,\n text,\n required: Boolean(record.required),\n }\n}\n\nexport function parseCommunicationConsents(\n value: CommunicationConsent[] | string | undefined\n): CommunicationConsent[] {\n if (!value) return []\n\n let items: unknown[] = []\n if (Array.isArray(value)) {\n items = value\n } else {\n const trimmed = value.trim()\n if (!trimmed) return []\n try {\n const parsed: unknown = JSON.parse(trimmed)\n if (!Array.isArray(parsed)) return []\n items = parsed\n } catch {\n return []\n }\n }\n\n return items.flatMap((item) => {\n const consent = toConsent(item)\n return consent ? [consent] : []\n })\n}\n\nexport function communicationConsentKey(consent: CommunicationConsent): string {\n return String(consent.subscriptionTypeId)\n}\n","export interface HubSpotField {\n name: string\n value: string\n}\n\nexport interface HubSpotCommunicationConsent {\n subscriptionTypeId: number\n text: string\n value: boolean\n}\n\nexport interface HubSpotLegalConsent {\n consentToProcess: boolean\n text?: string\n communications?: HubSpotCommunicationConsent[]\n}\n\nfunction getCookie(name: string): string | undefined {\n if (typeof document === \"undefined\") return undefined\n const match = document.cookie.match(new RegExp(`(?:^|; )${name}=([^;]*)`))\n return match ? decodeURIComponent(match[1]) : undefined\n}\n\nexport async function submitHubSpotForm(options: {\n portalId: string\n formId: string\n fields: HubSpotField[]\n legalConsent?: HubSpotLegalConsent\n}): Promise<void> {\n const hutk = getCookie(\"hubspotutk\")\n const legalConsent = options.legalConsent\n const communications = legalConsent?.communications?.map((item) => ({\n subscriptionTypeId: item.subscriptionTypeId,\n text: item.text,\n value: item.value,\n }))\n\n const response = await fetch(\n `https://api.hsforms.com/submissions/v3/integration/submit/${options.portalId}/${options.formId}`,\n {\n method: \"POST\",\n headers: { \"Content-Type\": \"application/json\" },\n body: JSON.stringify({\n fields: options.fields.map((field) => ({\n objectTypeId: \"0-1\",\n name: field.name,\n value: field.value,\n })),\n context: {\n pageUri: window.location.href,\n pageName: document.title,\n ...(hutk ? { hutk } : {}),\n },\n ...(legalConsent\n ? {\n legalConsentOptions: {\n consent: {\n consentToProcess: legalConsent.consentToProcess,\n ...(legalConsent.text ? { text: legalConsent.text } : {}),\n ...(communications?.length ? { communications } : {}),\n },\n },\n }\n : {}),\n }),\n }\n )\n\n if (!response.ok) {\n let detail = \"\"\n try {\n detail = await response.text()\n } catch {\n detail = \"\"\n }\n throw new Error(detail || `HubSpot submission failed (${response.status})`)\n }\n}\n","import type { CSSProperties, FormEvent } from \"react\"\nimport type { CommunicationConsent } from \"../types\"\nimport { communicationConsentKey } from \"../parseCommunicationConsents\"\n\ninterface FormScreenProps {\n styles: Record<string, CSSProperties>\n formTitle: string\n formSubtitle?: string\n email: string\n emailPlaceholder: string\n state: string\n stateLabel: string\n states: string[]\n consentToProcessText?: string\n consentToProcess: boolean\n communicationConsents: CommunicationConsent[]\n communicationValues: Record<string, boolean>\n submitButtonText: string\n recaptchaText?: string\n error?: string\n submitting: boolean\n onEmailChange: (value: string) => void\n onStateChange: (value: string) => void\n onConsentToProcessChange: (value: boolean) => void\n onCommunicationChange: (key: string, value: boolean) => void\n onSubmit: (event: FormEvent<HTMLFormElement>) => void\n}\n\nexport default function FormScreen({\n styles,\n formTitle,\n formSubtitle,\n email,\n emailPlaceholder,\n state,\n stateLabel,\n states,\n consentToProcessText,\n consentToProcess,\n communicationConsents,\n communicationValues,\n submitButtonText,\n recaptchaText,\n error,\n submitting,\n onEmailChange,\n onStateChange,\n onConsentToProcessChange,\n onCommunicationChange,\n onSubmit,\n}: FormScreenProps) {\n return (\n <>\n <h1 id=\"form-popup-form-title\" style={styles.formTitle}>\n {formTitle}\n </h1>\n {formSubtitle?.trim() ? (\n <p id=\"form-popup-form-subtitle\" style={styles.formSubtitle}>\n {formSubtitle}\n </p>\n ) : null}\n\n <form id=\"form-popup-form\" style={styles.form} onSubmit={onSubmit} noValidate>\n <label htmlFor=\"form-popup-email\" className=\"sr-only\">\n Email\n </label>\n <input\n id=\"form-popup-email\"\n name=\"email\"\n type=\"email\"\n autoComplete=\"email\"\n required\n value={email}\n placeholder={emailPlaceholder}\n onChange={(event) => onEmailChange(event.target.value)}\n style={styles.emailInput}\n aria-required=\"true\"\n />\n\n <p id=\"form-popup-state-label\" style={styles.stateLabel}>\n {stateLabel}\n </p>\n <div\n role=\"radiogroup\"\n aria-labelledby=\"form-popup-state-label\"\n aria-required=\"true\"\n style={styles.stateGrid}\n >\n {states.map((option) => {\n const id = `form-popup-state-${option.replace(/\\s+/g, \"-\").toLowerCase()}`\n return (\n <label key={option} htmlFor={id} style={styles.radioRow}>\n <input\n id={id}\n type=\"radio\"\n name=\"form-popup-state\"\n value={option}\n checked={state === option}\n onChange={() => onStateChange(option)}\n style={styles.radio}\n />\n {option}\n </label>\n )\n })}\n </div>\n\n {consentToProcessText || communicationConsents.length > 0 ? (\n <div style={styles.consentList}>\n {consentToProcessText ? (\n <label htmlFor=\"form-popup-consent-process\" style={styles.consentRow}>\n <input\n id=\"form-popup-consent-process\"\n type=\"checkbox\"\n checked={consentToProcess}\n required\n aria-required=\"true\"\n onChange={(event) => onConsentToProcessChange(event.target.checked)}\n style={styles.consentCheckbox}\n />\n <span>\n {consentToProcessText}\n <span style={styles.consentRequired} aria-hidden=\"true\">\n *\n </span>\n </span>\n </label>\n ) : null}\n {communicationConsents.map((consent) => {\n const key = communicationConsentKey(consent)\n const id = `form-popup-consent-comm-${key}`\n return (\n <label key={key} htmlFor={id} style={styles.consentRow}>\n <input\n id={id}\n type=\"checkbox\"\n checked={Boolean(communicationValues[key])}\n required={consent.required}\n aria-required={consent.required ? true : undefined}\n onChange={(event) =>\n onCommunicationChange(key, event.target.checked)\n }\n style={styles.consentCheckbox}\n />\n <span>\n {consent.text}\n {consent.required ? (\n <span style={styles.consentRequired} aria-hidden=\"true\">\n *\n </span>\n ) : null}\n </span>\n </label>\n )\n })}\n </div>\n ) : null}\n\n <button\n id=\"form-popup-submit\"\n type=\"submit\"\n style={styles.submitButton}\n disabled={submitting}\n >\n {submitting ? \"Submitting…\" : submitButtonText}\n </button>\n\n {error ? (\n <p id=\"form-popup-error\" role=\"alert\" style={styles.error}>\n {error}\n </p>\n ) : null}\n </form>\n\n {recaptchaText?.trim() ? (\n <p id=\"form-popup-recaptcha\" style={styles.recaptcha}>\n {recaptchaText}\n </p>\n ) : null}\n </>\n )\n}\n","import type { CSSProperties } from \"react\"\n\ninterface ConfirmationScreenProps {\n styles: Record<string, CSSProperties>\n confirmationTitle: string\n confirmationMessage?: string\n confirmationButtonText?: string\n onButtonClick: () => void\n}\n\nexport default function ConfirmationScreen({\n styles,\n confirmationTitle,\n confirmationMessage,\n confirmationButtonText,\n onButtonClick,\n}: ConfirmationScreenProps) {\n const showButton = Boolean(confirmationButtonText?.trim())\n\n return (\n <>\n <h1 id=\"form-popup-confirmation-title\" style={styles.confirmationTitle}>\n {confirmationTitle}\n </h1>\n {confirmationMessage?.trim() ? (\n <p id=\"form-popup-confirmation-message\" style={styles.confirmationMessage}>\n {confirmationMessage}\n </p>\n ) : null}\n {showButton ? (\n <button\n id=\"form-popup-confirmation-button\"\n type=\"button\"\n style={styles.confirmationButton}\n onClick={onButtonClick}\n >\n {confirmationButtonText}\n </button>\n ) : null}\n </>\n )\n}\n","import { useEffect, useState, type FormEvent } from \"react\"\nimport { createStyles } from \"./FormPopup.styles\"\nimport { getInjectedCss } from \"./FormPopup.injected.css\"\nimport { useFormPopupVisibility } from \"./hooks/useFormPopupVisibility\"\nimport { useDeferredReady } from \"./hooks/useDeferredReady\"\nimport { parseStates } from \"./parseStates\"\nimport { resolveRecaptchaText } from \"./resolveRecaptchaText\"\nimport { readHostAttribute, resolveHostFlag } from \"./getWebComponentHost\"\nimport {\n communicationConsentKey,\n parseCommunicationConsents,\n} from \"./parseCommunicationConsents\"\nimport { submitHubSpotForm } from \"./api/submitHubSpotForm\"\nimport FormScreen from \"./screens/FormScreen\"\nimport ConfirmationScreen from \"./screens/ConfirmationScreen\"\nimport type { FormPopupProps } from \"./types\"\n\nconst EMAIL_PATTERN = /^[^\\s@]+@[^\\s@]+\\.[^\\s@]+$/\n\nfunction isDemoPortal(portalId: string): boolean {\n return !portalId || portalId === \"demo\"\n}\n\nconst FormPopup = ({\n hubspotPortalId,\n hubspotFormId,\n emailProperty = \"email\",\n stateProperty = \"state\",\n additionalPropertyName,\n additionalPropertyValue,\n consentToProcessText,\n communicationConsents,\n formTitle,\n formSubtitle,\n states,\n submitButtonText = \"Submit\",\n emailPlaceholder = \"Email *\",\n stateLabel = \"Select A State *\",\n confirmationTitle,\n confirmationMessage,\n confirmationButtonText,\n confirmationButtonUrl,\n recaptchaText,\n backgroundColor,\n overlayColor,\n textColor = \"#111111\",\n buttonColor = \"#000000\",\n buttonTextColor = \"#ffffff\",\n buttonHoverColor = \"#333333\",\n buttonHoverTextColor = \"#ffffff\",\n fontFamily,\n headingFontFamily,\n waitForAgeGate,\n waitForStorageKey,\n waitForStorageValue,\n waitUntilHidden,\n waitUntilHiddenHost,\n container,\n}: FormPopupProps & { container?: HTMLElement }) => {\n const styles = createStyles({\n backgroundColor,\n overlayColor,\n textColor,\n buttonColor,\n buttonTextColor,\n fontFamily,\n headingFontFamily,\n })\n\n const resolvedFormId =\n hubspotFormId?.trim() ||\n readHostAttribute(container, \"hubspot-form-id\")?.trim() ||\n \"\"\n const resolvedPortalId =\n hubspotPortalId?.trim() ||\n readHostAttribute(container, \"hubspot-portal-id\")?.trim() ||\n \"\"\n\n const resolvedWaitForAgeGate = resolveHostFlag(\n waitForAgeGate,\n container,\n \"wait-for-age-gate\"\n )\n const resolvedWaitForStorageKey =\n waitForStorageKey?.trim() ||\n readHostAttribute(container, \"wait-for-storage-key\")?.trim() ||\n \"\"\n const resolvedWaitForStorageValue =\n waitForStorageValue?.trim() ||\n readHostAttribute(container, \"wait-for-storage-value\")?.trim() ||\n \"\"\n const resolvedWaitUntilHidden =\n waitUntilHidden?.trim() ||\n readHostAttribute(container, \"wait-until-hidden\")?.trim() ||\n \"\"\n const resolvedWaitUntilHiddenHost =\n waitUntilHiddenHost?.trim() ||\n readHostAttribute(container, \"wait-until-hidden-host\")?.trim() ||\n \"\"\n\n const { showModal, markSubmitted, dismiss } =\n useFormPopupVisibility(resolvedFormId)\n const gateReady = useDeferredReady({\n waitForAgeGate: resolvedWaitForAgeGate,\n waitForStorageKey: resolvedWaitForStorageKey,\n waitForStorageValue: resolvedWaitForStorageValue,\n waitUntilHidden: resolvedWaitUntilHidden,\n waitUntilHiddenHost: resolvedWaitUntilHiddenHost,\n })\n const visible = showModal && gateReady\n\n const [step, setStep] = useState<\"form\" | \"confirmation\">(\"form\")\n const [email, setEmail] = useState(\"\")\n const [state, setState] = useState(\"\")\n const [consentToProcess, setConsentToProcess] = useState(false)\n const [communicationValues, setCommunicationValues] = useState<\n Record<string, boolean>\n >({})\n const [submitting, setSubmitting] = useState(false)\n const [error, setError] = useState(\"\")\n\n const stateOptions = parseStates(states)\n const recaptchaDisclaimer = resolveRecaptchaText(recaptchaText, container)\n const processingConsentText = consentToProcessText?.trim() || \"\"\n const communicationOptions = parseCommunicationConsents(communicationConsents)\n const hasLegalConsent =\n Boolean(processingConsentText) || communicationOptions.length > 0\n\n useEffect(() => {\n if (!visible) return\n const previousOverflow = document.body.style.overflow\n document.body.style.overflow = \"hidden\"\n return () => {\n document.body.style.overflow = previousOverflow\n }\n }, [visible])\n\n useEffect(() => {\n if (!visible) return\n const onKeyDown = (event: KeyboardEvent) => {\n if (event.key === \"Escape\") dismiss()\n }\n window.addEventListener(\"keydown\", onKeyDown)\n return () => window.removeEventListener(\"keydown\", onKeyDown)\n }, [visible, dismiss])\n\n const handleSubmit = async (event: FormEvent<HTMLFormElement>) => {\n event.preventDefault()\n const trimmedEmail = email.trim()\n\n if (!EMAIL_PATTERN.test(trimmedEmail)) {\n setError(\"Please enter a valid email address.\")\n return\n }\n if (!state) {\n setError(\"Please select a state.\")\n return\n }\n if (processingConsentText && !consentToProcess) {\n setError(\"Please agree to the privacy terms.\")\n return\n }\n const missingCommunication = communicationOptions.find(\n (consent) =>\n consent.required && !communicationValues[communicationConsentKey(consent)]\n )\n if (missingCommunication) {\n setError(\"Please agree to the required communications terms.\")\n return\n }\n\n setError(\"\")\n setSubmitting(true)\n\n const fields = [\n { name: emailProperty, value: trimmedEmail },\n { name: stateProperty, value: state },\n ]\n if (additionalPropertyName?.trim() && additionalPropertyValue != null) {\n fields.push({\n name: additionalPropertyName.trim(),\n value: additionalPropertyValue,\n })\n }\n\n try {\n if (!isDemoPortal(resolvedPortalId)) {\n await submitHubSpotForm({\n portalId: resolvedPortalId,\n formId: resolvedFormId,\n fields,\n legalConsent: hasLegalConsent\n ? {\n consentToProcess: Boolean(\n processingConsentText && consentToProcess\n ),\n ...(processingConsentText\n ? { text: processingConsentText }\n : {}),\n ...(communicationOptions.length\n ? {\n communications: communicationOptions.map((consent) => ({\n subscriptionTypeId: Number(consent.subscriptionTypeId),\n text: consent.text,\n value: Boolean(\n communicationValues[communicationConsentKey(consent)]\n ),\n })),\n }\n : {}),\n }\n : undefined,\n })\n }\n markSubmitted()\n setStep(\"confirmation\")\n } catch {\n setError(\"Something went wrong. Please try again.\")\n } finally {\n setSubmitting(false)\n }\n }\n\n const handleConfirmationClick = () => {\n if (confirmationButtonUrl) {\n window.location.href = confirmationButtonUrl\n return\n }\n dismiss()\n }\n\n if (!visible) return null\n\n const labelledBy =\n step === \"form\" ? \"form-popup-form-title\" : \"form-popup-confirmation-title\"\n\n return (\n <div\n id=\"form-popup-overlay\"\n style={styles.overlay}\n role=\"dialog\"\n aria-modal=\"true\"\n aria-labelledby={labelledBy}\n onClick={(event) => {\n if (event.target === event.currentTarget && !submitting) dismiss()\n }}\n >\n <style>\n {getInjectedCss({\n buttonHoverColor,\n buttonHoverTextColor,\n })}\n </style>\n <div id=\"form-popup-card\" style={styles.card} role=\"document\">\n <button\n id=\"form-popup-close\"\n type=\"button\"\n style={styles.closeButton}\n aria-label=\"Close\"\n onClick={dismiss}\n >\n <svg width=\"10\" height=\"10\" viewBox=\"0 0 10 10\" aria-hidden=\"true\">\n <path\n d=\"M1 1l8 8M9 1L1 9\"\n stroke=\"currentColor\"\n strokeWidth=\"1.5\"\n strokeLinecap=\"round\"\n />\n </svg>\n </button>\n\n {step === \"form\" ? (\n <FormScreen\n styles={styles}\n formTitle={formTitle}\n formSubtitle={formSubtitle}\n email={email}\n emailPlaceholder={emailPlaceholder}\n state={state}\n stateLabel={stateLabel}\n states={stateOptions}\n consentToProcessText={processingConsentText || undefined}\n consentToProcess={consentToProcess}\n communicationConsents={communicationOptions}\n communicationValues={communicationValues}\n submitButtonText={submitButtonText}\n recaptchaText={recaptchaDisclaimer}\n error={error}\n submitting={submitting}\n onEmailChange={setEmail}\n onStateChange={(value) => {\n setState(value)\n if (error) setError(\"\")\n }}\n onConsentToProcessChange={(value) => {\n setConsentToProcess(value)\n if (error) setError(\"\")\n }}\n onCommunicationChange={(key, value) => {\n setCommunicationValues((current) => ({\n ...current,\n [key]: value,\n }))\n if (error) setError(\"\")\n }}\n onSubmit={handleSubmit}\n />\n ) : (\n <ConfirmationScreen\n styles={styles}\n confirmationTitle={confirmationTitle}\n confirmationMessage={confirmationMessage}\n confirmationButtonText={confirmationButtonText}\n onButtonClick={handleConfirmationClick}\n />\n )}\n </div>\n </div>\n )\n}\n\nexport default FormPopup\n","import reactToWebComponent from \"@r2wc/react-to-web-component\"\nimport FormPopup from \"../FormPopup/FormPopup\"\n\nconst FormPopupElement = reactToWebComponent(FormPopup, {\n props: {\n hubspotPortalId: \"string\",\n hubspotFormId: \"string\",\n emailProperty: \"string\",\n stateProperty: \"string\",\n additionalPropertyName: \"string\",\n additionalPropertyValue: \"string\",\n consentToProcessText: \"string\",\n communicationConsents: \"string\",\n formTitle: \"string\",\n formSubtitle: \"string\",\n states: \"string\",\n submitButtonText: \"string\",\n emailPlaceholder: \"string\",\n stateLabel: \"string\",\n confirmationTitle: \"string\",\n confirmationMessage: \"string\",\n confirmationButtonText: \"string\",\n confirmationButtonUrl: \"string\",\n recaptchaText: \"string\",\n backgroundColor: \"string\",\n overlayColor: \"string\",\n textColor: \"string\",\n buttonColor: \"string\",\n buttonTextColor: \"string\",\n buttonHoverColor: \"string\",\n buttonHoverTextColor: \"string\",\n fontFamily: \"string\",\n headingFontFamily: \"string\",\n waitForAgeGate: \"string\",\n waitForStorageKey: \"string\",\n waitForStorageValue: \"string\",\n waitUntilHidden: \"string\",\n waitUntilHiddenHost: \"string\",\n },\n shadow: \"open\",\n})\n\n/** Registers `<form-popup>` once. Safe to call multiple times. */\nexport function registerFormPopupElement(): void {\n if (typeof customElements === \"undefined\") return\n if (!customElements.get(\"form-popup\")) {\n customElements.define(\"form-popup\", FormPopupElement)\n }\n}\n\nregisterFormPopupElement()\n\nexport default FormPopupElement\n","import { registerFormPopupElement } from \"./web-component/registerFormPopupElement\"\n\n// Ensure <form-popup> is always registered when the package is imported\nregisterFormPopupElement()\n\nexport { default as FormPopup } from \"./FormPopup/FormPopup\"\nexport type { FormPopupProps, CommunicationConsent } from \"./FormPopup/types\"\n"],"names":["x","N","n","y","P","T","a","V","E","L","A","$","d","g","l","c","_","C","O","j","v","h","S","m","w","u","r","p","o","i","f","b","e","t","resetStyles","DEFAULT_CARD","DEFAULT_TEXT","DEFAULT_BUTTON","DEFAULT_BUTTON_TEXT","DEFAULT_SANS","DEFAULT_SERIF","createStyles","props","sans","serif","textColor","getInjectedCss","options","buttonHoverColor","buttonHoverTextColor","storageKey","formId","hasSubmitted","useFormPopupVisibility","showModal","setShowModal","useState","useEffect","markSubmitted","useCallback","dismiss","AGE_GATE_STORAGE_KEY","AGE_GATE_STORAGE_VALUE","AGE_GATE_HOST","AGE_GATE_OVERLAY","storageSatisfied","key","value","findInHostShadow","hostSelector","overlaySelector","hosts","host","found","_a","findOverlay","light","shadowed","isDeferredReady","waitForAgeGate","storageValue","_b","_c","_d","useDeferredReady","waitUntilHidden","waitUntilHiddenHost","ready","setReady","current","check","shadowObservers","observedShadows","watchShadows","hostSel","root","shadowObserver","observer","interval","item","parseStates","states","state","getWebComponentHost","container","readHostAttribute","attribute","resolveHostFlag","prop","raw","DEFAULT_RECAPTCHA_TEXT","HIDDEN_VALUES","resolveRecaptchaText","recaptchaText","toConsent","record","text","rawId","parseCommunicationConsents","items","trimmed","parsed","consent","communicationConsentKey","getCookie","name","match","submitHubSpotForm","hutk","legalConsent","communications","response","field","detail","FormScreen","styles","formTitle","formSubtitle","email","emailPlaceholder","stateLabel","consentToProcessText","consentToProcess","communicationConsents","communicationValues","submitButtonText","error","submitting","onEmailChange","onStateChange","onConsentToProcessChange","onCommunicationChange","onSubmit","jsxs","Fragment","jsx","event","option","id","ConfirmationScreen","confirmationTitle","confirmationMessage","confirmationButtonText","onButtonClick","showButton","EMAIL_PATTERN","isDemoPortal","portalId","FormPopup","hubspotPortalId","hubspotFormId","emailProperty","stateProperty","additionalPropertyName","additionalPropertyValue","confirmationButtonUrl","backgroundColor","overlayColor","buttonColor","buttonTextColor","fontFamily","headingFontFamily","waitForStorageKey","waitForStorageValue","resolvedFormId","resolvedPortalId","resolvedWaitForAgeGate","resolvedWaitForStorageKey","resolvedWaitForStorageValue","resolvedWaitUntilHidden","_e","resolvedWaitUntilHiddenHost","_f","gateReady","visible","step","setStep","setEmail","setState","setConsentToProcess","setCommunicationValues","setSubmitting","setError","stateOptions","recaptchaDisclaimer","processingConsentText","communicationOptions","hasLegalConsent","previousOverflow","onKeyDown","handleSubmit","trimmedEmail","fields","handleConfirmationClick","labelledBy","FormPopupElement","reactToWebComponent","registerFormPopupElement"],"mappings":"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","x_google_ignoreList":[0,1]}