@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.es.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","s","u","k","r","p","o","i","f","b","e","t","resetStyles","DEFAULT_CARD","DEFAULT_TEXT","DEFAULT_BUTTON","DEFAULT_BUTTON_TEXT","DEFAULT_SANS","DEFAULT_SERIF","createStyles","props","sans","serif","textColor","getInjectedCss","options","buttonHoverColor","buttonHoverTextColor","storageKey","formId","hasSubmitted","useFormPopupVisibility","showModal","setShowModal","useState","useEffect","markSubmitted","useCallback","dismiss","AGE_GATE_STORAGE_KEY","AGE_GATE_STORAGE_VALUE","AGE_GATE_HOST","AGE_GATE_OVERLAY","storageSatisfied","key","value","findInHostShadow","hostSelector","overlaySelector","hosts","host","found","_a","findOverlay","light","shadowed","isDeferredReady","waitForAgeGate","storageValue","_b","_c","_d","useDeferredReady","waitUntilHidden","waitUntilHiddenHost","ready","setReady","current","check","shadowObservers","observedShadows","watchShadows","hostSel","root","shadowObserver","observer","interval","item","parseStates","states","state","getWebComponentHost","container","readHostAttribute","attribute","resolveHostFlag","prop","raw","DEFAULT_RECAPTCHA_TEXT","HIDDEN_VALUES","resolveRecaptchaText","recaptchaText","toConsent","record","text","rawId","parseCommunicationConsents","items","trimmed","parsed","consent","communicationConsentKey","getCookie","name","match","submitHubSpotForm","hutk","legalConsent","communications","response","field","detail","FormScreen","styles","formTitle","formSubtitle","email","emailPlaceholder","stateLabel","consentToProcessText","consentToProcess","communicationConsents","communicationValues","submitButtonText","error","submitting","onEmailChange","onStateChange","onConsentToProcessChange","onCommunicationChange","onSubmit","jsxs","Fragment","jsx","event","option","id","ConfirmationScreen","confirmationTitle","confirmationMessage","confirmationButtonText","onButtonClick","showButton","EMAIL_PATTERN","isDemoPortal","portalId","FormPopup","hubspotPortalId","hubspotFormId","emailProperty","stateProperty","additionalPropertyName","additionalPropertyValue","confirmationButtonUrl","backgroundColor","overlayColor","buttonColor","buttonTextColor","fontFamily","headingFontFamily","waitForStorageKey","waitForStorageValue","resolvedFormId","resolvedPortalId","resolvedWaitForAgeGate","resolvedWaitForStorageKey","resolvedWaitForStorageValue","resolvedWaitUntilHidden","_e","resolvedWaitUntilHiddenHost","_f","gateReady","visible","step","setStep","setEmail","setState","setConsentToProcess","setCommunicationValues","setSubmitting","setError","stateOptions","recaptchaDisclaimer","processingConsentText","communicationOptions","hasLegalConsent","previousOverflow","onKeyDown","handleSubmit","trimmedEmail","fields","handleConfirmationClick","labelledBy","FormPopupElement","reactToWebComponent","registerFormPopupElement"],"mappings":"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","x_google_ignoreList":[0,1]}