web-push-notifications 3.62.12 → 3.63.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.
- package/core/Pushwoosh.d.ts +2 -2
- package/core/Pushwoosh.types.d.ts +22 -1
- package/core/events.types.d.ts +4 -0
- package/npm.js +1 -1
- package/npm.js.map +1 -1
- package/package.json +1 -1
- package/service-worker.js +1 -1
- package/service-worker.js.map +1 -1
- package/widget-web-popups.js +1 -1
- package/widget-web-popups.js.map +1 -1
- package/widgets/WebPopups/WebPopupsWidget.d.ts +68 -9
- package/widgets/WebPopups/constants.d.ts +2 -0
- package/widgets/WebPopups/renderer.d.ts +6 -0
- package/widgets/WebPopups/types.d.ts +77 -0
package/widget-web-popups.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"widget-web-popups.js","mappings":"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","sources":["webpack://web-push-notifications/webpack/universalModuleDefinition","webpack://web-push-notifications/webpack/bootstrap","webpack://web-push-notifications/webpack/runtime/define property getters","webpack://web-push-notifications/webpack/runtime/hasOwnProperty shorthand","webpack://web-push-notifications/webpack/runtime/make namespace object","webpack://web-push-notifications/./node_modules/smart-blocks-utils/dist/views/WebPopup/constants.js","webpack://web-push-notifications/./node_modules/smart-blocks-utils/dist/views/WebPopup/layout.js","webpack://web-push-notifications/./node_modules/smart-blocks-utils/dist/views/WebPopup/helpers.js","webpack://web-push-notifications/./src/widgets/WebPopups/constants.ts","webpack://web-push-notifications/./node_modules/preact/dist/preact.module.js","webpack://web-push-notifications/./node_modules/preact/jsx-runtime/dist/jsxRuntime.module.js","webpack://web-push-notifications/./node_modules/preact/hooks/dist/hooks.module.js","webpack://web-push-notifications/./node_modules/preact/compat/dist/compat.module.js","webpack://web-push-notifications/./node_modules/smart-blocks-utils/dist/views/WebPopup/WebPopupReader.js","webpack://web-push-notifications/./src/modules/storage/migrations/constants.ts","webpack://web-push-notifications/./src/modules/storage/migrations/helpers.ts","webpack://web-push-notifications/./src/modules/storage/migrations/initial.ts","webpack://web-push-notifications/./src/modules/storage/migrations/Migrations.ts","webpack://web-push-notifications/./src/modules/storage/migrations/MigrationExecutor.ts","webpack://web-push-notifications/./src/core/storage.ts","webpack://web-push-notifications/./src/core/logger.ts","webpack://web-push-notifications/./src/widgets/WebPopups/subscriptionFormApi.ts","webpack://web-push-notifications/./src/widgets/WebPopups/renderer.tsx","webpack://web-push-notifications/./src/widgets/WebPopups/subscriptionFormsWidgetLoader.ts","webpack://web-push-notifications/./src/widgets/WebPopups/WebPopupsWidget.ts"],"sourcesContent":["(function webpackUniversalModuleDefinition(root, factory) {\n\tif(typeof exports === 'object' && typeof module === 'object')\n\t\tmodule.exports = factory();\n\telse if(typeof define === 'function' && define.amd)\n\t\tdefine([], factory);\n\telse {\n\t\tvar a = factory();\n\t\tfor(var i in a) (typeof exports === 'object' ? exports : root)[i] = a[i];\n\t}\n})(this, () => {\nreturn ","// The require scope\nconst __webpack_require__ = {};\n\n","// define getter/value functions for harmony exports\n__webpack_require__.d = (exports, definition) => {\n\tif(Array.isArray(definition)) {\n\t\tvar i = 0;\n\t\twhile(i < definition.length) {\n\t\t\tvar key = definition[i++];\n\t\t\tvar binding = definition[i++];\n\t\t\tif(!__webpack_require__.o(exports, key)) {\n\t\t\t\tif(binding === 0) {\n\t\t\t\t\tObject.defineProperty(exports, key, { enumerable: true, value: definition[i++] });\n\t\t\t\t} else {\n\t\t\t\t\tObject.defineProperty(exports, key, { enumerable: true, get: binding });\n\t\t\t\t}\n\t\t\t} else if(binding === 0) { i++; }\n\t\t}\n\t} else {\n\t\tfor(var key in definition) {\n\t\t\tif(__webpack_require__.o(definition, key) && !__webpack_require__.o(exports, key)) {\n\t\t\t\tObject.defineProperty(exports, key, { enumerable: true, get: definition[key] });\n\t\t\t}\n\t\t}\n\t}\n};","__webpack_require__.o = (obj, prop) => (Object.prototype.hasOwnProperty.call(obj, prop))","// define __esModule on exports\n__webpack_require__.r = (exports) => {\n\tif(Symbol.toStringTag) {\n\t\tObject.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });\n\t}\n\tObject.defineProperty(exports, '__esModule', { value: true });\n};","/**\n * Current stored-format version (WebPopupJson.version). Version 2 = the\n * layout-tree format (nested containers + Content/Image leaves, named content\n * zones). Version 1 (flat layout + single slot list) is retired without a\n * migration path — v1 popups are treated as broken, same as the pre-engine\n * ai-builder format.\n */\nexport const WEB_POPUP_VERSION = 2;\n// Bomb protection for the embedded layout tree — the json travels through a\n// public API, so the parser refuses to walk pathological trees.\nexport const WEB_POPUP_LAYOUT_MAX_DEPTH = 10;\nexport const WEB_POPUP_LAYOUT_MAX_NODES = 100;\n/** Protocols allowed in button hrefs (plus relative `#`/`/`/`?` prefixes). */\nexport const SAFE_URL_PROTOCOL = /^(https?:|mailto:|tel:)/i;\nexport const WEB_POPUP_FONT_STACK = 'Inter, system-ui, -apple-system, BlinkMacSystemFont, \"Segoe UI\", sans-serif';\n// Palette defaults (mirror the editor's popup theme) — what a popup gets for\n// any WebPopupColors entry its json doesn't set.\nexport const WEB_POPUP_TEXT_COLOR = '#101828';\nexport const WEB_POPUP_TEXT_SECONDARY_COLOR = '#667085';\nexport const WEB_POPUP_ACCENT_COLOR = '#2970FF';\nexport const WEB_POPUP_BACKGROUND_COLOR = '#FFFFFF';\nexport const WEB_POPUP_DEFAULT_COLORS = {\n background: WEB_POPUP_BACKGROUND_COLOR,\n accent: WEB_POPUP_ACCENT_COLOR,\n text: WEB_POPUP_TEXT_COLOR,\n textSecondary: WEB_POPUP_TEXT_SECONDARY_COLOR,\n textInverse: '#FFFFFF',\n};\n/** Fallback width used when a fixed-width context needs a number anyway. */\nexport const WEB_POPUP_DEFAULT_WIDTH = 360;\n// Per-variant text styles — the same numbers the editor's canvas derives from\n// its theme presets. No colors here: those come from the popup palette via\n// webPopupTextColor below.\nexport const WEB_POPUP_TEXT_VARIANT_STYLES = {\n h1: { fontSize: 24, fontWeight: 600, lineHeight: 1.25 },\n h2: { fontSize: 18, fontWeight: 600, lineHeight: 1.3 },\n h3: { fontSize: 16, fontWeight: 600, lineHeight: 1.35 },\n body: { fontSize: 14, fontWeight: 'normal', lineHeight: 1.5 },\n caption: { fontSize: 12, fontWeight: 'normal', lineHeight: 1.4 },\n eyebrow: {\n fontSize: 11, fontWeight: 600, letterSpacing: '0.08em', lineHeight: 1.4,\n },\n icon: { fontSize: 24, lineHeight: 1.2 },\n};\n// Inverse-tone translucency per text style: headings full-strength, the\n// secondary variants toned down — same rhythm the palette's default white\n// set always had.\nconst INVERSE_TEXT_ALPHAS = {\n h1: 1,\n h2: 1,\n h3: 1,\n icon: 1,\n eyebrow: 0.8,\n body: 0.9,\n caption: 0.75,\n};\n// colors.textInverse at the given opacity. Only #rgb/#rrggbb can be blended;\n// any other author-supplied css color renders full-strength rather than\n// being guessed at.\nfunction inverseColorAt(color, alpha) {\n if (alpha >= 1)\n return color;\n const hex = /^#([0-9a-fA-F]{3}|[0-9a-fA-F]{6})$/.exec(color)?.[1];\n if (!hex)\n return color;\n const full = hex.length === 3 ? hex.split('').map((c) => c + c).join('') : hex;\n const [r, g, b] = [0, 2, 4].map((i) => parseInt(full.slice(i, i + 2), 16));\n return `rgba(${r}, ${g}, ${b}, ${alpha})`;\n}\n/**\n * A text slot's color: the palette's main/secondary role by variant; in an\n * 'inverse' zone (over a background image) — colors.textInverse, with the\n * secondary variants toned translucent. Undefined for a non-inverse 'icon'\n * (an emoji line inherits — its glyphs aren't recolorable anyway).\n */\nexport function webPopupTextColor(variant, colors, inverse) {\n if (inverse)\n return inverseColorAt(colors.textInverse, INVERSE_TEXT_ALPHAS[variant] ?? 1);\n if (variant === 'icon')\n return undefined;\n return variant === 'caption' || variant === 'eyebrow' ? colors.textSecondary : colors.text;\n}\n/** The dark fill under a container's background image while it loads. */\nexport const WEB_POPUP_BG_SECTION_FALLBACK = '#1D2939';\n// Content-zone rhythm: per-slot vertical paddings (horizontal spacing is the\n// layout tree's padding business). Per-slot paddings — not a grid gap — so\n// the editor's canvas, which renders slots as stacked blocks with these same\n// paddings, matches the runtime pixel for pixel.\nexport const WEB_POPUP_TEXT_SLOT_PADDING = '4px 0';\nexport const WEB_POPUP_BUTTON_SLOT_PADDING = '8px 0 4px';\nexport const WEB_POPUP_FORM_SLOT_PADDING = '8px 0 4px';\n/**\n * The button pill both button slots and a form slot's submit button render\n * with — buttons pair the accent with white (primary = accent fill + white\n * label, secondary = white fill + accent outline). Shared with the editor's\n * canvas (parity contract).\n */\nexport function webPopupButtonPillStyle(variant, accent) {\n return {\n display: 'block',\n boxSizing: 'border-box',\n width: '100%',\n padding: '10px 25px',\n borderRadius: 3,\n fontSize: 14,\n fontWeight: 600,\n fontFamily: 'inherit',\n lineHeight: 1.5,\n textAlign: 'center',\n textDecoration: 'none',\n cursor: 'pointer',\n ...(variant === 'secondary'\n ? { backgroundColor: '#FFFFFF', color: accent, border: `1px solid ${accent}` }\n : { backgroundColor: accent, color: '#FFFFFF', border: 'none' }),\n };\n}\n// Form-slot input chrome. Inputs are always white cards regardless of the\n// zone tone (mirroring the button rule \"pair the accent with white\") — only\n// the border varies: idle grey, the accent when focused, the error red when\n// invalid. Shared with the editor's canvas (parity contract).\nexport const WEB_POPUP_FORM_INPUT_BORDER = '#D0D5DD';\nexport const WEB_POPUP_FORM_ERROR_COLOR = '#D92D20';\nexport function webPopupFormInputStyle(borderColor = WEB_POPUP_FORM_INPUT_BORDER) {\n return {\n display: 'block',\n boxSizing: 'border-box',\n width: '100%',\n padding: '10px 12px',\n borderRadius: 3,\n fontSize: 14,\n fontFamily: 'inherit',\n lineHeight: 1.5,\n backgroundColor: '#FFFFFF',\n color: WEB_POPUP_TEXT_COLOR,\n border: `1px solid ${borderColor}`,\n outline: 'none',\n };\n}\n// What a normalized form slot falls back to when the json omits the copy —\n// also the editor's defaults for a freshly added slot.\nexport const WEB_POPUP_FORM_DEFAULTS = {\n submitLabel: 'Subscribe',\n successMessage: 'Thanks for subscribing!',\n confirmEmailMessage: 'Please check your inbox and confirm your email.',\n};\nexport const WEB_POPUP_KEYFRAMES = `\n@keyframes pw-vpopup-fade { from { opacity: 0; } }\n@keyframes pw-vpopup-slide { from { opacity: 0; translate: 0 28px; } }\n@keyframes pw-vpopup-overlay { from { opacity: 0; } }\n@keyframes pw-vpopup-page { from { opacity: 0; } }\n`;\n// Page-switch transition: the incoming page's content fades in while explicit\n// px sizes glide instead of jumping (auto sizes still snap — 'auto' can't be\n// transitioned). One duration for both so they read as a single move.\nexport const WEB_POPUP_PAGE_TRANSITION_MS = 300;\n","import { WEB_POPUP_LAYOUT_MAX_DEPTH, WEB_POPUP_LAYOUT_MAX_NODES } from './constants';\n// Validation + css conversion for the embedded layout tree. The json is\n// API-writable and its styles land inline on customers' pages, so every prop\n// is normalized against a whitelist on parse: numbers are clamped, strings\n// must match a strict css-length/track pattern, enums fall back to defaults,\n// unknown props are dropped. Unknown node TYPES degrade instead of breaking:\n// a node with children renders as a Vertical stack (a container from a NEWER\n// editor keeps its content visible on an older engine build), a childless\n// unknown node is dropped.\nconst CONTAINER_TYPES = ['Vertical', 'Horizontal', 'Columns', 'Rows'];\nconst ORDERS = ['normal', 'reverse'];\nconst ALIGN_ITEMS = ['start', 'center', 'end', 'stretch'];\nconst JUSTIFY_CONTENT = ['start', 'center', 'end', 'space-between'];\nconst TEXT_ALIGNS = ['left', 'center', 'right'];\nconst TONES = ['default', 'inverse'];\nconst MAX_LENGTH_PX = 2000;\n// String lengths carry a unit — clamp each to its own sane ceiling, like the\n// numeric branch: a wire value (\"9999rem\" scales off the HOST page's root\n// font size) must not be able to blow the popup past the viewport.\nconst LENGTH_UNIT_MAX = { px: MAX_LENGTH_PX, '%': 100, em: 125, rem: 125 };\nconst LENGTH_PATTERN = /^(\\d{1,4}(?:\\.\\d+)?)(px|%|em|rem)$/;\nconst TRACK_UNIT_MAX = { px: MAX_LENGTH_PX, '%': 100, fr: 100 };\nconst TRACK_PATTERN = /^(\\d{1,4}(?:\\.\\d+)?)(px|%|fr)$/;\nconst TRACK_KEYWORDS = ['auto', 'min-content', 'max-content'];\nconst MAX_TRACKS = 12;\nfunction oneOf(value, allowed) {\n return allowed.includes(value) ? value : undefined;\n}\nfunction cssLength(value) {\n if (typeof value === 'number' && Number.isFinite(value)) {\n return Math.min(Math.max(value, 0), MAX_LENGTH_PX);\n }\n if (typeof value !== 'string')\n return undefined;\n const match = LENGTH_PATTERN.exec(value.trim());\n if (!match)\n return undefined;\n const [, amount, unit] = match;\n return `${Math.min(parseFloat(amount), LENGTH_UNIT_MAX[unit])}${unit}`;\n}\nconst BOX_SIDES = ['top', 'right', 'bottom', 'left'];\nfunction boxPadding(value) {\n const whole = cssLength(value);\n if (whole !== undefined)\n return whole;\n if (typeof value !== 'object' || value === null)\n return undefined;\n const sides = {};\n for (const side of BOX_SIDES) {\n const sideValue = cssLength(value[side]);\n if (sideValue !== undefined)\n sides[side] = sideValue;\n }\n return Object.keys(sides).length > 0 ? sides : undefined;\n}\nfunction trackSize(token) {\n if (TRACK_KEYWORDS.includes(token))\n return token;\n const match = TRACK_PATTERN.exec(token);\n if (!match)\n return undefined;\n const [, amount, unit] = match;\n return `${Math.min(parseFloat(amount), TRACK_UNIT_MAX[unit])}${unit}`;\n}\nfunction trackSizes(value) {\n if (typeof value === 'number') {\n return Number.isInteger(value) && value >= 1 && value <= MAX_TRACKS ? value : undefined;\n }\n if (typeof value !== 'string')\n return undefined;\n const tokens = value.trim().split(/\\s+/);\n if (tokens.length < 1 || tokens.length > MAX_TRACKS)\n return undefined;\n const clamped = tokens.map(trackSize);\n return clamped.every((token) => token !== undefined) ? clamped.join(' ') : undefined;\n}\nfunction nonEmptyString(value) {\n return typeof value === 'string' && value.length > 0 ? value : undefined;\n}\nfunction containerProps(raw) {\n const props = {};\n const gap = cssLength(raw.gap);\n if (gap !== undefined)\n props.gap = gap;\n const padding = boxPadding(raw.padding);\n if (padding !== undefined)\n props.padding = padding;\n const alignItems = oneOf(raw.alignItems, ALIGN_ITEMS);\n if (alignItems)\n props.alignItems = alignItems;\n const justifyContent = oneOf(raw.justifyContent, JUSTIFY_CONTENT);\n if (justifyContent)\n props.justifyContent = justifyContent;\n const alignContent = oneOf(raw.alignContent, JUSTIFY_CONTENT);\n if (alignContent)\n props.alignContent = alignContent;\n const backgroundImage = nonEmptyString(raw.backgroundImage);\n if (backgroundImage)\n props.backgroundImage = backgroundImage;\n const sizes = trackSizes(raw.sizes);\n if (sizes !== undefined)\n props.sizes = sizes;\n return props;\n}\nfunction normalizeNode(raw, depth, budget) {\n if (depth > WEB_POPUP_LAYOUT_MAX_DEPTH || budget.nodes <= 0)\n return null;\n if (typeof raw !== 'object' || raw === null)\n return null;\n budget.nodes -= 1;\n const node = raw;\n const props = (typeof node.props === 'object' && node.props !== null ? node.props : {});\n if (node.type === 'Content') {\n const content = nonEmptyString(props.content);\n if (!content)\n return null;\n const out = { type: 'Content', props: { content } };\n const align = oneOf(props.align, TEXT_ALIGNS);\n if (align)\n out.props.align = align;\n const tone = oneOf(props.tone, TONES);\n if (tone && tone !== 'default')\n out.props.tone = tone;\n return out;\n }\n if (node.type === 'Image') {\n const image = nonEmptyString(props.image);\n if (!image)\n return null;\n const out = { type: 'Image', props: { image } };\n return out;\n }\n if (!Array.isArray(node.children))\n return null;\n const type = oneOf(node.type, CONTAINER_TYPES) ?? 'Vertical';\n const children = [];\n for (const child of node.children) {\n const normalized = normalizeNode(child, depth + 1, budget);\n if (normalized)\n children.push(normalized);\n }\n const out = containerProps(props);\n // `order: 'reverse'` is applied right here and consumed: the normalized\n // tree carries the children already reordered (and the sizes template\n // reversed with them, so each child keeps its track) — the renderers and\n // the editor canvas never see the prop. Caveat for hand-authored json: the\n // \"keeps its track\" guarantee assumes one sizes token per child; with a\n // mismatched count the reversed template pairs children with different\n // tracks (grid itself would misalign such a template the same way).\n if (oneOf(props.order, ORDERS) === 'reverse') {\n children.reverse();\n if (typeof out.sizes === 'string')\n out.sizes = out.sizes.split(' ').reverse().join(' ');\n }\n return { type, props: out, children };\n}\n/**\n * Validate an embedded layout tree from the stored json. Returns the\n * normalized tree, or null when the value isn't a renderable tree at all —\n * the page is then dropped by resolveWebPopupPages.\n */\nexport function normalizeWebPopupLayout(raw) {\n return normalizeNode(raw, 0, { nodes: WEB_POPUP_LAYOUT_MAX_NODES });\n}\n// --- value substitution ($refs) ---------------------------------------------\n/** A page value key, as referenced from the tree by a `$key` token. */\nexport const WEB_POPUP_VALUE_KEY_PATTERN = /^[a-zA-Z][a-zA-Z0-9-]*$/;\nconst VALUE_REF_PATTERN = /^\\$([a-zA-Z][a-zA-Z0-9-]*)$/;\n// Every whitespace-separated token of the form $key is replaced; separators\n// survive, so both a whole-string prop ('$stackGap') and a token inside a\n// sizes template ('1fr $imageWidth') substitute with the same rule. An\n// unknown key stays as-is and fails the prop whitelist downstream — the prop\n// is dropped, same as any invalid literal.\nfunction substituteString(value, values) {\n if (!value.includes('$'))\n return value;\n return value\n .split(/(\\s+)/)\n .map((token) => {\n const key = VALUE_REF_PATTERN.exec(token)?.[1];\n // Own properties only: '$constructor' must stay an unknown ref, not\n // resolve to an Object.prototype member.\n return key !== undefined && Object.prototype.hasOwnProperty.call(values, key) ? values[key] : token;\n })\n .join('');\n}\n/**\n * Substitute a page's named values into its RAW layout tree — `$key` tokens\n * in string props become the values, verbatim. Runs BEFORE\n * normalizeWebPopupLayout (see resolveWebPopupPages), so a substituted value\n * passes exactly the whitelists/clamps a literal one would; substitution is\n * single-pass and normalizeWebPopupValues rejects values containing '$', so\n * refs can't chain. Binding keys (`content`, `image`, `backgroundImage`) are\n * never substituted — they already name params by design.\n */\nexport function substituteWebPopupLayoutValues(layout, values) {\n if (typeof layout !== 'object' || layout === null || Object.keys(values).length === 0)\n return layout;\n return substituteNode(layout, values, 0);\n}\nconst BINDING_PROPS = new Set(['content', 'image', 'backgroundImage']);\nfunction substituteNode(raw, values, depth) {\n if (depth > WEB_POPUP_LAYOUT_MAX_DEPTH || typeof raw !== 'object' || raw === null)\n return raw;\n const node = raw;\n const out = { ...node };\n if (typeof node.props === 'object' && node.props !== null) {\n const props = { ...node.props };\n for (const [key, value] of Object.entries(props)) {\n if (BINDING_PROPS.has(key))\n continue;\n if (typeof value === 'string') {\n props[key] = substituteString(value, values);\n }\n else if (typeof value === 'object' && value !== null && !Array.isArray(value)) {\n // Per-side paddings: one level of string sides.\n const sides = { ...value };\n for (const [side, sideValue] of Object.entries(sides)) {\n if (typeof sideValue === 'string')\n sides[side] = substituteString(sideValue, values);\n }\n props[key] = sides;\n }\n }\n out.props = props;\n }\n if (Array.isArray(node.children)) {\n out.children = node.children.map((child) => substituteNode(child, values, depth + 1));\n }\n return out;\n}\n// --- css conversion (shared by the reader and the editor's canvas) ---------\nexport function webPopupCssLength(value) {\n return typeof value === 'number' ? `${value}px` : value;\n}\nexport function webPopupPaddingValue(padding) {\n if (typeof padding === 'number' || typeof padding === 'string')\n return webPopupCssLength(padding);\n const side = (value) => (value === undefined ? '0' : webPopupCssLength(value));\n return `${side(padding.top)} ${side(padding.right)} ${side(padding.bottom)} ${side(padding.left)}`;\n}\n/** grid-template value for Columns/Rows: absent sizes = one 1fr per child. */\nexport function webPopupTracksValue(sizes, childCount) {\n if (typeof sizes === 'string')\n return sizes;\n const count = typeof sizes === 'number' ? sizes : Math.max(childCount, 1);\n return `repeat(${count}, 1fr)`;\n}\n/**\n * The cover-background css of a container that draws an image behind its\n * content. `dim` (0–1) is the image's scrim — a dark translucent layer\n * painted as a gradient stacked over the url() in the same property, so it\n * needs no extra element and rides along wherever the background is drawn.\n */\nexport function webPopupBackgroundImageStyle(src, dim = 0) {\n // JSON.stringify quotes + escapes the url, so an src can't break out of\n // the css function.\n const image = `url(${JSON.stringify(src)})`;\n const scrim = dim > 0 ? `rgba(16, 24, 40, ${Math.min(dim, 1)})` : null;\n return {\n backgroundImage: scrim ? `linear-gradient(${scrim}, ${scrim}), ${image}` : image,\n backgroundSize: 'cover',\n backgroundPosition: 'center',\n };\n}\n/**\n * The inline style of a container node — grid, mirroring kit-helpers'\n * Vertical/Horizontal/Columns/Rows semantics. The background image is passed\n * resolved (looked up in the page's images by the caller) so this stays a\n * pure props → css mapping.\n */\nexport function webPopupContainerStyle(node, backgroundSrc, backgroundDim = 0) {\n const props = node.props ?? {};\n const style = { display: 'grid', minWidth: 0 };\n if (node.type === 'Horizontal')\n style.gridAutoFlow = 'column';\n if (node.type === 'Columns')\n style.gridTemplateColumns = webPopupTracksValue(props.sizes, node.children.length);\n if (node.type === 'Rows')\n style.gridTemplateRows = webPopupTracksValue(props.sizes, node.children.length);\n if (props.gap !== undefined)\n style.gap = webPopupCssLength(props.gap);\n if (props.padding !== undefined)\n style.padding = webPopupPaddingValue(props.padding);\n if (props.alignItems)\n style.alignItems = props.alignItems;\n if (props.justifyContent)\n style.justifyContent = props.justifyContent;\n if (props.alignContent)\n style.alignContent = props.alignContent;\n if (backgroundSrc)\n Object.assign(style, webPopupBackgroundImageStyle(backgroundSrc, backgroundDim));\n return style;\n}\n","import { SAFE_URL_PROTOCOL, WEB_POPUP_DEFAULT_COLORS, WEB_POPUP_FORM_DEFAULTS, WEB_POPUP_VERSION, } from './constants';\nimport { normalizeWebPopupLayout, substituteWebPopupLayoutValues, WEB_POPUP_VALUE_KEY_PATTERN, } from './layout';\n// Sanitize a user-entered button URL before it lands in an href: https/http/\n// mailto/tel and page-relative links only.\nexport function safeUrl(url) {\n const trimmed = (url || '').trim();\n if (!trimmed)\n return undefined;\n if (trimmed.startsWith('#') || trimmed.startsWith('/') || trimmed.startsWith('?'))\n return trimmed;\n if (SAFE_URL_PROTOCOL.test(trimmed))\n return trimmed;\n return undefined;\n}\n/**\n * The target/rel pair a popup link renders with: only an exact '_self' opts\n * out of the default new tab (and of its noreferrer, which same-tab\n * navigation doesn't need). One rule for both link kinds — the reader's\n * button anchors and the sanitizer's inline text links.\n */\nexport function webPopupLinkTargetAttrs(target) {\n return target === '_self' ? { target: '_self' } : { target: '_blank', rel: 'noreferrer' };\n}\nconst SANITIZE_ALLOWED_TAGS = new Set(['STRONG', 'B', 'EM', 'I', 'U', 'BR', 'A']);\nfunction copySanitized(from, to, doc) {\n for (const child of Array.from(from.childNodes)) {\n if (child.nodeType === 3 /* text */) {\n to.appendChild(doc.createTextNode(child.textContent ?? ''));\n continue;\n }\n if (child.nodeType !== 1 /* element */)\n continue;\n const el = child;\n // Unknown tags are unwrapped — their children survive as plain content.\n if (!SANITIZE_ALLOWED_TAGS.has(el.tagName)) {\n copySanitized(el, to, doc);\n continue;\n }\n const clean = doc.createElement(el.tagName.toLowerCase());\n if (el.tagName === 'A') {\n const href = safeUrl(el.getAttribute('href') ?? undefined);\n if (href)\n clean.setAttribute('href', href);\n const { target, rel } = webPopupLinkTargetAttrs(el.getAttribute('target'));\n clean.setAttribute('target', target);\n if (rel)\n clean.setAttribute('rel', rel);\n }\n to.appendChild(clean);\n copySanitized(el, clean, doc);\n }\n}\n/**\n * Sanitize a text slot's html before it's injected into the page. The editor\n * only ever writes inline formatting, but the json travels through a public\n * API and renders on customers' sites — so on render only the inline tags\n * survive (anything else is unwrapped to its text), every attribute is\n * dropped, and links keep only a safeUrl-approved href plus their tab choice\n * (target=\"_self\" stays; everything else opens in a new tab).\n */\nexport function sanitizeWebPopupHtml(html) {\n // No '<' → no elements can form; entities in plain text are already-valid\n // html and pass through untouched.\n if (!html.includes('<'))\n return html;\n const parsed = new DOMParser().parseFromString(html, 'text/html');\n const out = parsed.createElement('div');\n copySanitized(parsed.body, out, parsed);\n return out.innerHTML;\n}\nfunction colorString(value) {\n return typeof value === 'string' && value ? value : undefined;\n}\n/**\n * The popup palette from API-writable params: `colors` entries when present,\n * the legacy top-level background/accent underneath, palette defaults for the\n * rest — always a complete WebPopupColors.\n */\nexport function normalizeWebPopupColors(params) {\n const colors = typeof params.colors === 'object' && params.colors !== null\n ? params.colors\n : {};\n return {\n background: colorString(colors.background)\n ?? colorString(params.background) ?? WEB_POPUP_DEFAULT_COLORS.background,\n accent: colorString(colors.accent) ?? colorString(params.accent) ?? WEB_POPUP_DEFAULT_COLORS.accent,\n text: colorString(colors.text) ?? WEB_POPUP_DEFAULT_COLORS.text,\n textSecondary: colorString(colors.textSecondary) ?? WEB_POPUP_DEFAULT_COLORS.textSecondary,\n textInverse: colorString(colors.textInverse) ?? WEB_POPUP_DEFAULT_COLORS.textInverse,\n };\n}\n// Parse stored PopupFormContent.json into the popup model. Returns null for\n// anything that isn't a version-2 popup with at least one page — including\n// the retired version-1 flat-layout format and pre-engine content with no\n// `version` field at all, which callers should treat as broken. The palette\n// comes out complete: colors entries → legacy top-level background/accent →\n// defaults.\nexport function parseWebPopupJson(json) {\n let raw;\n try {\n raw = JSON.parse(json);\n }\n catch {\n return null;\n }\n if (typeof raw !== 'object' || raw === null)\n return null;\n const candidate = raw;\n if (candidate.version !== WEB_POPUP_VERSION)\n return null;\n const params = candidate.params;\n if (typeof params !== 'object' || params === null)\n return null;\n if (!Array.isArray(params.pages) || params.pages.length === 0)\n return null;\n return { version: WEB_POPUP_VERSION, params: { ...params, colors: normalizeWebPopupColors(params) } };\n}\n/** The editor's save path: model → PopupFormContent.json string. */\nexport function stringifyWebPopup(params) {\n const compat = {\n ...params,\n background: params.colors.background,\n accent: params.colors.accent,\n };\n const payload = { version: WEB_POPUP_VERSION, params: compat };\n return JSON.stringify(payload);\n}\nconst IMAGE_FITS = ['cover', 'contain'];\nconst MAX_IMAGE_BLUR = 100;\n// Bomb protection for the page content, mirroring the layout tree's\n// depth/node caps: the tree allows up to ~100 Content nodes and several may\n// reference the same zone, so unbounded zones/slots would amplify into\n// thousands of sanitize+render passes on the customer's page.\nconst MAX_IMAGES = 20;\nconst MAX_ZONES = 20;\nconst MAX_ZONE_SLOTS = 50;\n// The images come from API-writable json — keep only well-formed entries,\n// with the presentation props (fit/blur) validated like the layout tree's.\nfunction normalizeImages(raw) {\n if (!Array.isArray(raw))\n return [];\n const out = [];\n for (const img of raw) {\n if (out.length >= MAX_IMAGES)\n break;\n if (typeof img !== 'object' || img === null)\n continue;\n if (typeof img.key !== 'string' || !img.key)\n continue;\n if (typeof img.src !== 'string')\n continue;\n out.push({\n key: img.key,\n label: typeof img.label === 'string' ? img.label : '',\n src: img.src,\n ...(typeof img.mediaId === 'string' && img.mediaId ? { mediaId: img.mediaId } : {}),\n ...(IMAGE_FITS.includes(img.fit) ? { fit: img.fit } : {}),\n ...(typeof img.blur === 'number' && Number.isFinite(img.blur) && img.blur > 0\n ? { blur: Math.min(img.blur, MAX_IMAGE_BLUR) }\n : {}),\n ...(typeof img.dim === 'number' && Number.isFinite(img.dim) && img.dim > 0\n ? { dim: Math.min(img.dim, 1) }\n : {}),\n });\n }\n return out;\n}\nconst MAX_VALUES = 20;\nconst MAX_VALUE_LENGTH = 64;\nconst MAX_SELECT_OPTIONS = 20;\nconst LENGTH_CONTROL_UNITS = ['px', '%', 'em', 'rem', 'fr'];\nfunction finiteNumber(value) {\n return typeof value === 'number' && Number.isFinite(value) ? value : undefined;\n}\n// Per-unit { min?, max? } overrides for a length control, keyed by a\n// whitelisted unit. Non-object input, unknown unit keys and non-finite bounds\n// are dropped; an all-empty map returns undefined so the field is omitted.\nfunction normalizeControlRanges(raw) {\n if (typeof raw !== 'object' || raw === null)\n return undefined;\n const out = {};\n for (const unit of LENGTH_CONTROL_UNITS) {\n const entry = raw[unit];\n if (typeof entry !== 'object' || entry === null)\n continue;\n const min = finiteNumber(entry.min);\n const max = finiteNumber(entry.max);\n if (min === undefined && max === undefined)\n continue;\n out[unit] = { ...(min !== undefined ? { min } : {}), ...(max !== undefined ? { max } : {}) };\n }\n return Object.keys(out).length > 0 ? out : undefined;\n}\n// The control is editor metadata from API-writable json: enum-whitelisted\n// kind, clamped numbers, capped options. Anything malformed drops to\n// undefined — the editor falls back to a plain text input.\nfunction normalizeValueControl(raw) {\n if (typeof raw !== 'object' || raw === null)\n return undefined;\n const control = raw;\n if (control.kind === 'text')\n return { kind: 'text' };\n if (control.kind === 'length' || control.kind === 'percent') {\n const min = finiteNumber(control.min);\n const max = finiteNumber(control.max);\n const units = control.kind === 'length' && Array.isArray(control.units)\n ? control.units.filter((u) => (LENGTH_CONTROL_UNITS.includes(u)))\n : [];\n // Per-unit min/max overrides: whitelisted unit keys, finite bounds. Any\n // malformed entry is skipped; an empty result drops the whole field.\n const ranges = control.kind === 'length'\n ? normalizeControlRanges(control.ranges)\n : undefined;\n return {\n kind: control.kind,\n ...(min !== undefined ? { min } : {}),\n ...(max !== undefined ? { max } : {}),\n ...(units.length > 0 ? { units } : {}),\n ...(ranges ? { ranges } : {}),\n };\n }\n if (control.kind === 'select' && Array.isArray(control.options)) {\n const options = [];\n for (const option of control.options) {\n if (options.length >= MAX_SELECT_OPTIONS)\n break;\n if (typeof option !== 'object' || option === null)\n continue;\n if (typeof option.value !== 'string' || option.value.length > MAX_VALUE_LENGTH)\n continue;\n options.push({ value: option.value, label: typeof option.label === 'string' ? option.label : option.value });\n }\n if (options.length > 0)\n return { kind: 'select', options };\n }\n return undefined;\n}\n/**\n * The page's named layout values from API-writable json: capped count,\n * whitelisted keys, short '$'-free value strings (substitution is single-pass\n * and this keeps refs from even *looking* chainable), validated controls.\n */\nexport function normalizeWebPopupValues(raw) {\n if (!Array.isArray(raw))\n return [];\n const out = [];\n for (const value of raw) {\n if (out.length >= MAX_VALUES)\n break;\n if (typeof value !== 'object' || value === null)\n continue;\n if (typeof value.key !== 'string' || !WEB_POPUP_VALUE_KEY_PATTERN.test(value.key))\n continue;\n if (typeof value.value !== 'string' || value.value.length > MAX_VALUE_LENGTH || value.value.includes('$'))\n continue;\n if (out.some((v) => v.key === value.key))\n continue;\n const control = normalizeValueControl(value.control);\n out.push({\n key: value.key,\n label: typeof value.label === 'string' ? value.label : '',\n value: value.value,\n ...(control ? { control } : {}),\n });\n }\n return out;\n}\n/** The values as a substitution map (see substituteWebPopupLayoutValues). */\nexport function webPopupValuesMap(values) {\n return Object.fromEntries(values.map((v) => [v.key, v.value]));\n}\nconst FORM_FIELD_KINDS = ['email', 'firstName', 'lastName', 'phone', 'custom'];\nconst BUTTON_VARIANTS = ['primary', 'secondary'];\nconst MAX_FORM_FIELDS = 10;\n// A form slot's fields from API-writable json: capped, whitelisted kinds,\n// deduped keys. The submit contract needs an email — when none survives, one\n// is injected up front (the slot stays renderable/editable rather than being\n// dropped: the editor canvas resolves through this same pipeline). Email\n// fields are always required — the payload can't form without a value.\nfunction normalizeFormFields(raw) {\n const out = [];\n if (Array.isArray(raw)) {\n for (const field of raw) {\n if (out.length >= MAX_FORM_FIELDS)\n break;\n if (typeof field !== 'object' || field === null)\n continue;\n if (typeof field.key !== 'string' || !field.key)\n continue;\n if (!FORM_FIELD_KINDS.includes(field.kind))\n continue;\n if (out.some((f) => f.key === field.key))\n continue;\n out.push({\n key: field.key,\n kind: field.kind,\n label: typeof field.label === 'string' ? field.label : '',\n placeholder: typeof field.placeholder === 'string' ? field.placeholder : '',\n required: field.kind === 'email' || field.required === true,\n ...(field.kind === 'custom' && typeof field.tag === 'string' && field.tag ? { tag: field.tag } : {}),\n });\n }\n }\n if (!out.some((f) => f.kind === 'email')) {\n let key = 'field-email';\n while (out.some((f) => f.key === key))\n key = `${key}-1`;\n out.unshift({ key, kind: 'email', label: 'Email', placeholder: '', required: true });\n }\n return out.slice(0, MAX_FORM_FIELDS);\n}\n// Per-type slot validation. Text and button entries pass through UNTOUCHED\n// when well-formed (stored popups predate this check — don't rewrite them);\n// a form slot is rebuilt field by field; an unknown slot type is dropped so\n// slot types added after this engine build degrade to absence, not a crash.\nfunction normalizeSlots(raw) {\n const out = [];\n for (const slot of raw) {\n if (out.length >= MAX_ZONE_SLOTS)\n break;\n if (typeof slot !== 'object' || slot === null)\n continue;\n if (typeof slot.key !== 'string' || !slot.key)\n continue;\n if (slot.type === 'text') {\n if (typeof slot.html === 'string')\n out.push(slot);\n continue;\n }\n if (slot.type === 'button') {\n // An action-less button would crash the renderer on the action switch.\n if (typeof slot.action === 'object' && slot.action !== null && typeof slot.action.type === 'string') {\n out.push(slot);\n }\n continue;\n }\n if (slot.type === 'email-subscription-form') {\n out.push({\n type: 'email-subscription-form',\n key: slot.key,\n formCode: typeof slot.formCode === 'string' ? slot.formCode : '',\n fields: normalizeFormFields(slot.fields),\n submitLabel: typeof slot.submitLabel === 'string' && slot.submitLabel\n ? slot.submitLabel\n : WEB_POPUP_FORM_DEFAULTS.submitLabel,\n submitVariant: BUTTON_VARIANTS.includes(slot.submitVariant)\n ? slot.submitVariant\n : 'primary',\n ...(typeof slot.privacy === 'object' && slot.privacy !== null\n && typeof slot.privacy.checkboxLabel === 'string'\n ? {\n privacy: {\n checkboxLabel: slot.privacy.checkboxLabel,\n url: typeof slot.privacy.url === 'string' ? slot.privacy.url : '',\n linkLabel: typeof slot.privacy.linkLabel === 'string' ? slot.privacy.linkLabel : '',\n },\n }\n : {}),\n successMessage: typeof slot.successMessage === 'string' && slot.successMessage\n ? slot.successMessage\n : WEB_POPUP_FORM_DEFAULTS.successMessage,\n confirmEmailMessage: typeof slot.confirmEmailMessage === 'string' && slot.confirmEmailMessage\n ? slot.confirmEmailMessage\n : WEB_POPUP_FORM_DEFAULTS.confirmEmailMessage,\n });\n }\n // Unknown slot type → dropped.\n }\n return out;\n}\n// The zones come from API-writable json — keep only well-formed entries\n// (capped, see above) so the renderer can trust the shape.\nfunction normalizeContents(raw) {\n if (!Array.isArray(raw))\n return [];\n const out = [];\n for (const zone of raw) {\n if (out.length >= MAX_ZONES)\n break;\n if (typeof zone !== 'object' || zone === null)\n continue;\n if (typeof zone.key !== 'string' || !zone.key)\n continue;\n if (!Array.isArray(zone.slots))\n continue;\n out.push({\n key: zone.key,\n label: typeof zone.label === 'string' ? zone.label : '',\n slots: normalizeSlots(zone.slots),\n });\n }\n return out;\n}\n/**\n * Every subscription form code the popup's form slots reference (unique,\n * empty codes skipped) — what a host records view stats for. Reads the RAW\n * params (tolerant of malformed slots), so it works on parsed-but-unresolved\n * json.\n */\nexport function collectWebPopupFormCodes(params) {\n const out = new Set();\n for (const page of params.pages) {\n if (!Array.isArray(page?.contents))\n continue;\n for (const zone of page.contents) {\n if (!Array.isArray(zone?.slots))\n continue;\n for (const slot of zone.slots) {\n if (typeof slot !== 'object' || slot === null)\n continue;\n if (slot.type !== 'email-subscription-form')\n continue;\n if (typeof slot.formCode === 'string' && slot.formCode)\n out.add(slot.formCode);\n }\n }\n }\n return [...out];\n}\n/**\n * The popup box-size ceiling px, mirroring the layout tree's px clamp: the\n * json is API-writable and the size lands as inline style on the customer's\n * page. The editor clamps its Width/Height inputs to it too.\n */\nexport const WEB_POPUP_MAX_SIZE_PX = 2000;\nfunction validSize(value) {\n return typeof value === 'number' && Number.isFinite(value) && value > 0\n ? Math.min(value, WEB_POPUP_MAX_SIZE_PX)\n : undefined;\n}\nexport function resolveWebPopupPageSize(own, shared, axis) {\n if (own === null)\n return undefined;\n let resolved;\n if (own === 'stretch')\n resolved = 'stretch';\n else\n resolved = validSize(own) ?? (shared === 'stretch' ? 'stretch' : validSize(shared));\n return axis === 'width' && resolved === 'stretch' ? undefined : resolved;\n}\n/**\n * The renderable pages: each page carries its own embedded layout tree — no\n * kind catalog at runtime. The page's named values are substituted into the\n * tree first ($key tokens), then the result is validated/normalized\n * (whitelisted props, unknown container types degrade to a Vertical stack) —\n * so substituted values pass the same clamps as literals; pages whose layout\n * isn't a tree at all are dropped. An empty result means the popup can't be\n * rendered. width/height come out FINAL (page override ?? chrome, validated)\n * — the renderer never falls back itself.\n */\nexport function resolveWebPopupPages(params) {\n const out = [];\n for (const page of params.pages) {\n const values = normalizeWebPopupValues(page.values);\n const layout = normalizeWebPopupLayout(substituteWebPopupLayoutValues(page.layout, webPopupValuesMap(values)));\n if (!layout)\n continue;\n const width = resolveWebPopupPageSize(page.width, params.width, 'width');\n const height = resolveWebPopupPageSize(page.height, params.height, 'height');\n out.push({\n key: page.key,\n layout,\n images: normalizeImages(page.images),\n contents: normalizeContents(page.contents),\n ...(width !== undefined ? { width } : {}),\n ...(height !== undefined ? { height } : {}),\n });\n }\n return out;\n}\n/** The page shown first: startPage when it exists, else the first page. */\nexport function startPageOf(params, pages) {\n return pages.find((p) => p.key === params.startPage) ?? pages[0];\n}\nexport function placementMaxSize(placement) {\n return `calc(100% - ${placement.offset * 2}px)`;\n}\n","export const WEB_POPUPS_WIDGET_NAMESPACE = 'pushwoosh-web-popups';\n\nexport const POPUP_HOST_Z_INDEX = 2147483647;\n\nexport const SUBSCRIPTION_FORMS_WIDGET_URL = 'https://cdn.pushwoosh.com/subscription-forms/widget.js';\n\nexport const SUBSCRIPTION_FORMS_WIDGET_TAG = 'pushwoosh-subscribe-widget';\n\n// The subscription-form service's public HTTP gateway — the same host the\n// hosted widget above is built against. Serves email-subscription-form slot\n// submits and view stats for popup-embedded forms.\nexport const SUBSCRIPTION_FORMS_API_URL = 'https://subscription-form.svc-nue.pushwoosh.com/api/v1';\n","var n,l,u,t,i,r,o,e,f,c,a,s,h,p,v,y,d={},w=[],_=/acit|ex(?:s|g|n|p|$)|rph|grid|ows|mnc|ntw|ine[ch]|zoo|^ord|itera/i,g=Array.isArray;function m(n,l){for(var u in l)n[u]=l[u];return n}function b(n){n&&n.parentNode&&n.parentNode.removeChild(n)}function k(l,u,t){var i,r,o,e={};for(o in u)\"key\"==o?i=u[o]:\"ref\"==o?r=u[o]:e[o]=u[o];if(arguments.length>2&&(e.children=arguments.length>3?n.call(arguments,2):t),\"function\"==typeof l&&null!=l.defaultProps)for(o in l.defaultProps)void 0===e[o]&&(e[o]=l.defaultProps[o]);return x(l,e,i,r,null)}function x(n,t,i,r,o){var e={type:n,props:t,key:i,ref:r,__k:null,__:null,__b:0,__e:null,__c:null,constructor:void 0,__v:null==o?++u:o,__i:-1,__u:0};return null==o&&null!=l.vnode&&l.vnode(e),e}function M(){return{current:null}}function S(n){return n.children}function C(n,l){this.props=n,this.context=l}function $(n,l){if(null==l)return n.__?$(n.__,n.__i+1):null;for(var u;l<n.__k.length;l++)if(null!=(u=n.__k[l])&&null!=u.__e)return u.__e;return\"function\"==typeof n.type?$(n):null}function I(n){if(n.__P&&n.__d){var u=n.__v,t=u.__e,i=[],r=[],o=m({},u);o.__v=u.__v+1,l.vnode&&l.vnode(o),q(n.__P,o,u,n.__n,n.__P.namespaceURI,32&u.__u?[t]:null,i,null==t?$(u):t,!!(32&u.__u),r),o.__v=u.__v,o.__.__k[o.__i]=o,D(i,o,r),u.__e=u.__=null,o.__e!=t&&P(o)}}function P(n){if(null!=(n=n.__)&&null!=n.__c)return n.__e=n.__c.base=null,n.__k.some(function(l){if(null!=l&&null!=l.__e)return n.__e=n.__c.base=l.__e}),P(n)}function A(n){(!n.__d&&(n.__d=!0)&&i.push(n)&&!H.__r++||r!=l.debounceRendering)&&((r=l.debounceRendering)||o)(H)}function H(){try{for(var n,l=1;i.length;)i.length>l&&i.sort(e),n=i.shift(),l=i.length,I(n)}finally{i.length=H.__r=0}}function L(n,l,u,t,i,r,o,e,f,c,a){var s,h,p,v,y,_,g,m=t&&t.__k||w,b=l.length;for(f=T(u,l,m,f,b),s=0;s<b;s++)null!=(p=u.__k[s])&&(h=-1!=p.__i&&m[p.__i]||d,p.__i=s,_=q(n,p,h,i,r,o,e,f,c,a),v=p.__e,p.ref&&h.ref!=p.ref&&(h.ref&&J(h.ref,null,p),a.push(p.ref,p.__c||v,p)),null==y&&null!=v&&(y=v),(g=!!(4&p.__u))||h.__k===p.__k?(f=j(p,f,n,g),g&&h.__e&&(h.__e=null)):\"function\"==typeof p.type&&void 0!==_?f=_:v&&(f=v.nextSibling),p.__u&=-7);return u.__e=y,f}function T(n,l,u,t,i){var r,o,e,f,c,a=u.length,s=a,h=0;for(n.__k=new Array(i),r=0;r<i;r++)null!=(o=l[r])&&\"boolean\"!=typeof o&&\"function\"!=typeof o?(\"string\"==typeof o||\"number\"==typeof o||\"bigint\"==typeof o||o.constructor==String?o=n.__k[r]=x(null,o,null,null,null):g(o)?o=n.__k[r]=x(S,{children:o},null,null,null):void 0===o.constructor&&o.__b>0?o=n.__k[r]=x(o.type,o.props,o.key,o.ref?o.ref:null,o.__v):n.__k[r]=o,f=r+h,o.__=n,o.__b=n.__b+1,e=null,-1!=(c=o.__i=O(o,u,f,s))&&(s--,(e=u[c])&&(e.__u|=2)),null==e||null==e.__v?(-1==c&&(i>a?h--:i<a&&h++),\"function\"!=typeof o.type&&(o.__u|=4)):c!=f&&(c==f-1?h--:c==f+1?h++:(c>f?h--:h++,o.__u|=4))):n.__k[r]=null;if(s)for(r=0;r<a;r++)null!=(e=u[r])&&0==(2&e.__u)&&(e.__e==t&&(t=$(e)),K(e,e));return t}function j(n,l,u,t){var i,r;if(\"function\"==typeof n.type){for(i=n.__k,r=0;i&&r<i.length;r++)i[r]&&(i[r].__=n,l=j(i[r],l,u,t));return l}n.__e!=l&&(t&&(l&&n.type&&!l.parentNode&&(l=$(n)),u.insertBefore(n.__e,l||null)),l=n.__e);do{l=l&&l.nextSibling}while(null!=l&&8==l.nodeType);return l}function F(n,l){return l=l||[],null==n||\"boolean\"==typeof n||(g(n)?n.some(function(n){F(n,l)}):l.push(n)),l}function O(n,l,u,t){var i,r,o,e=n.key,f=n.type,c=l[u],a=null!=c&&0==(2&c.__u);if(null===c&&null==e||a&&e==c.key&&f==c.type)return u;if(t>(a?1:0))for(i=u-1,r=u+1;i>=0||r<l.length;)if(null!=(c=l[o=i>=0?i--:r++])&&0==(2&c.__u)&&e==c.key&&f==c.type)return o;return-1}function z(n,l,u){\"-\"==l[0]?n.setProperty(l,null==u?\"\":u):n[l]=null==u?\"\":\"number\"!=typeof u||_.test(l)?u:u+\"px\"}function N(n,l,u,t,i){var r,o;n:if(\"style\"==l)if(\"string\"==typeof u)n.style.cssText=u;else{if(\"string\"==typeof t&&(n.style.cssText=t=\"\"),t)for(l in t)u&&l in u||z(n.style,l,\"\");if(u)for(l in u)t&&u[l]==t[l]||z(n.style,l,u[l])}else if(\"o\"==l[0]&&\"n\"==l[1])r=l!=(l=l.replace(s,\"$1\")),o=l.toLowerCase(),l=o in n||\"onFocusOut\"==l||\"onFocusIn\"==l?o.slice(2):l.slice(2),n.l||(n.l={}),n.l[l+r]=u,u?t?u[a]=t[a]:(u[a]=h,n.addEventListener(l,r?v:p,r)):n.removeEventListener(l,r?v:p,r);else{if(\"http://www.w3.org/2000/svg\"==i)l=l.replace(/xlink(H|:h)/,\"h\").replace(/sName$/,\"s\");else if(\"width\"!=l&&\"height\"!=l&&\"href\"!=l&&\"list\"!=l&&\"form\"!=l&&\"tabIndex\"!=l&&\"download\"!=l&&\"rowSpan\"!=l&&\"colSpan\"!=l&&\"role\"!=l&&\"popover\"!=l&&l in n)try{n[l]=null==u?\"\":u;break n}catch(n){}\"function\"==typeof u||(null==u||!1===u&&\"-\"!=l[4]?n.removeAttribute(l):n.setAttribute(l,\"popover\"==l&&1==u?\"\":u))}}function V(n){return function(u){if(this.l){var t=this.l[u.type+n];if(null==u[c])u[c]=h++;else if(u[c]<t[a])return;return t(l.event?l.event(u):u)}}}function q(n,u,t,i,r,o,e,f,c,a){var s,h,p,v,y,d,_,k,x,M,$,I,P,A,H,T,j=u.type;if(void 0!==u.constructor)return null;128&t.__u&&(c=!!(32&t.__u),o=[f=u.__e=t.__e]),(s=l.__b)&&s(u);n:if(\"function\"==typeof j){h=e.length;try{if(x=u.props,M=j.prototype&&j.prototype.render,$=(s=j.contextType)&&i[s.__c],I=s?$?$.props.value:s.__:i,t.__c?k=(p=u.__c=t.__c).__=p.__E:(M?u.__c=p=new j(x,I):(u.__c=p=new C(x,I),p.constructor=j,p.render=Q),$&&$.sub(p),p.state||(p.state={}),p.__n=i,v=p.__d=!0,p.__h=[],p._sb=[]),M&&null==p.__s&&(p.__s=p.state),M&&null!=j.getDerivedStateFromProps&&(p.__s==p.state&&(p.__s=m({},p.__s)),m(p.__s,j.getDerivedStateFromProps(x,p.__s))),y=p.props,d=p.state,p.__v=u,v)M&&null==j.getDerivedStateFromProps&&null!=p.componentWillMount&&p.componentWillMount(),M&&null!=p.componentDidMount&&p.__h.push(p.componentDidMount);else{if(M&&null==j.getDerivedStateFromProps&&x!==y&&null!=p.componentWillReceiveProps&&p.componentWillReceiveProps(x,I),u.__v==t.__v||!p.__e&&null!=p.shouldComponentUpdate&&!1===p.shouldComponentUpdate(x,p.__s,I)){u.__v!=t.__v&&(p.props=x,p.state=p.__s,p.__d=!1),u.__e=t.__e,u.__k=t.__k,u.__k.some(function(n){n&&(n.__=u)}),w.push.apply(p.__h,p._sb),p._sb=[],p.__h.length&&e.push(p);break n}null!=p.componentWillUpdate&&p.componentWillUpdate(x,p.__s,I),M&&null!=p.componentDidUpdate&&p.__h.push(function(){p.componentDidUpdate(y,d,_)})}if(p.context=I,p.props=x,p.__P=n,p.__e=!1,P=l.__r,A=0,M)p.state=p.__s,p.__d=!1,P&&P(u),s=p.render(p.props,p.state,p.context),w.push.apply(p.__h,p._sb),p._sb=[];else do{p.__d=!1,P&&P(u),s=p.render(p.props,p.state,p.context),p.state=p.__s}while(p.__d&&++A<25);p.state=p.__s,null!=p.getChildContext&&(i=m(m({},i),p.getChildContext())),M&&!v&&null!=p.getSnapshotBeforeUpdate&&(_=p.getSnapshotBeforeUpdate(y,d)),H=null!=s&&s.type===S&&null==s.key?E(s.props.children):s,f=L(n,g(H)?H:[H],u,t,i,r,o,e,f,c,a),p.base=u.__e,u.__u&=-161,p.__h.length&&e.push(p),k&&(p.__E=p.__=null)}catch(n){if(e.length=h,u.__v=null,c||null!=o){if(n.then){for(u.__u|=c?160:128;f&&8==f.nodeType&&f.nextSibling;)f=f.nextSibling;null!=o&&(o[o.indexOf(f)]=null),u.__e=f}else if(null!=o)for(T=o.length;T--;)b(o[T])}else u.__e=t.__e;null==u.__k&&(u.__k=t.__k||[]),n.then||B(u),l.__e(n,u,t)}}else null==o&&u.__v==t.__v?(u.__k=t.__k,u.__e=t.__e):f=u.__e=G(t.__e,u,t,i,r,o,e,c,a);return(s=l.diffed)&&s(u),128&u.__u?void 0:f}function B(n){n&&(n.__c&&(n.__c.__e=!0),n.__k&&n.__k.some(B))}function D(n,u,t){for(var i=0;i<t.length;i++)J(t[i],t[++i],t[++i]);l.__c&&l.__c(u,n),n.some(function(u){try{n=u.__h,u.__h=[],n.some(function(n){n.call(u)})}catch(n){l.__e(n,u.__v)}})}function E(n){return\"object\"!=typeof n||null==n||n.__b>0?n:g(n)?n.map(E):void 0!==n.constructor?null:m({},n)}function G(u,t,i,r,o,e,f,c,a){var s,h,p,v,y,w,_,m=i.props||d,k=t.props,x=t.type;if(\"svg\"==x?o=\"http://www.w3.org/2000/svg\":\"math\"==x?o=\"http://www.w3.org/1998/Math/MathML\":o||(o=\"http://www.w3.org/1999/xhtml\"),null!=e)for(s=0;s<e.length;s++)if((y=e[s])&&\"setAttribute\"in y==!!x&&(x?y.localName==x:3==y.nodeType)){u=y,e[s]=null;break}if(null==u){if(null==x)return document.createTextNode(k);u=document.createElementNS(o,x,k.is&&k),c&&(l.__m&&l.__m(t,e),c=!1),e=null}if(null==x)m===k||c&&u.data==k||(u.data=k);else{if(e=\"textarea\"==x&&null!=k.defaultValue?null:e&&n.call(u.childNodes),!c&&null!=e)for(m={},s=0;s<u.attributes.length;s++)m[(y=u.attributes[s]).name]=y.value;for(s in m)y=m[s],\"dangerouslySetInnerHTML\"==s?p=y:\"children\"==s||s in k||\"value\"==s&&\"defaultValue\"in k||\"checked\"==s&&\"defaultChecked\"in k||N(u,s,null,y,o);for(s in k)y=k[s],\"children\"==s?v=y:\"dangerouslySetInnerHTML\"==s?h=y:\"value\"==s?w=y:\"checked\"==s?_=y:c&&\"function\"!=typeof y||m[s]===y||N(u,s,y,m[s],o);if(h)c||p&&(h.__html==p.__html||h.__html==u.innerHTML)||(u.innerHTML=h.__html),t.__k=[];else if(p&&(u.innerHTML=\"\"),L(\"template\"==t.type?u.content:u,g(v)?v:[v],t,i,r,\"foreignObject\"==x?\"http://www.w3.org/1999/xhtml\":o,e,f,e?e[0]:i.__k&&$(i,0),c,a),null!=e)for(s=e.length;s--;)b(e[s]);c&&\"textarea\"!=x||(s=\"value\",\"progress\"==x&&null==w?u.removeAttribute(\"value\"):null!=w&&(w!==u[s]||\"progress\"==x&&!w||\"option\"==x&&w!=m[s])&&N(u,s,w,m[s],o),s=\"checked\",null!=_&&_!=u[s]&&N(u,s,_,m[s],o))}return u}function J(n,u,t){try{if(\"function\"==typeof n){var i=\"function\"==typeof n.__u;i&&n.__u(),i&&null==u||(n.__u=n(u))}else n.current=u}catch(n){l.__e(n,t)}}function K(n,u,t){var i,r;if(l.unmount&&l.unmount(n),(i=n.ref)&&(i.current&&i.current!=n.__e||J(i,null,u)),null!=(i=n.__c)){if(i.componentWillUnmount)try{i.componentWillUnmount()}catch(n){l.__e(n,u)}i.base=i.__P=i.__n=null}if(i=n.__k)for(r=0;r<i.length;r++)i[r]&&K(i[r],u,t||\"function\"!=typeof n.type);t||b(n.__e),n.__c=n.__=n.__e=void 0}function Q(n,l,u){return this.constructor(n,u)}function R(u,t,i){var r,o,e,f;t==document&&(t=document.documentElement),l.__&&l.__(u,t),o=(r=\"function\"==typeof i)?null:i&&i.__k||t.__k,e=[],f=[],q(t,u=(!r&&i||t).__k=k(S,null,[u]),o||d,d,t.namespaceURI,!r&&i?[i]:o?null:t.firstChild?n.call(t.childNodes):null,e,!r&&i?i:o?o.__e:t.firstChild,r,f),D(e,u,f),u.props.children=null}function U(n,l){R(n,l,U)}function W(l,u,t){var i,r,o,e,f=m({},l.props);for(o in l.type&&l.type.defaultProps&&(e=l.type.defaultProps),u)\"key\"==o?i=u[o]:\"ref\"==o?r=u[o]:f[o]=void 0===u[o]&&null!=e?e[o]:u[o];return arguments.length>2&&(f.children=arguments.length>3?n.call(arguments,2):t),x(l.type,f,i||l.key,r||l.ref,null)}function X(n){function l(n){var u,t;return this.getChildContext||(u=new Set,(t={})[l.__c]=this,this.getChildContext=function(){return t},this.componentWillUnmount=function(){u=null},this.shouldComponentUpdate=function(n){this.props.value!=n.value&&u.forEach(function(n){n.__e=!0,A(n)})},this.sub=function(n){u.add(n);var l=n.componentWillUnmount;n.componentWillUnmount=function(){u&&u.delete(n),l&&l.call(n)}}),n.children}return l.__c=\"__cC\"+y++,l.__=n,l.Provider=l.__l=(l.Consumer=function(n,l){return n.children(l)}).contextType=l,l}n=w.slice,l={__e:function(n,l,u,t){for(var i,r,o;l=l.__;)if((i=l.__c)&&!i.__)try{if((r=i.constructor)&&null!=r.getDerivedStateFromError&&(i.setState(r.getDerivedStateFromError(n)),o=i.__d),null!=i.componentDidCatch&&(i.componentDidCatch(n,t||{}),o=i.__d),o)return i.__E=i}catch(l){n=l}throw n}},u=0,t=function(n){return null!=n&&void 0===n.constructor},C.prototype.setState=function(n,l){var u;u=null!=this.__s&&this.__s!=this.state?this.__s:this.__s=m({},this.state),\"function\"==typeof n&&(n=n(m({},u),this.props)),n&&m(u,n),null!=n&&this.__v&&(l&&this._sb.push(l),A(this))},C.prototype.forceUpdate=function(n){this.__v&&(this.__e=!0,n&&this.__h.push(n),A(this))},C.prototype.render=S,i=[],o=\"function\"==typeof Promise?Promise.prototype.then.bind(Promise.resolve()):setTimeout,e=function(n,l){return n.__v.__b-l.__v.__b},H.__r=0,f=Math.random().toString(8),c=\"__d\"+f,a=\"__a\"+f,s=/(PointerCapture)$|Capture$/i,h=0,p=V(!1),v=V(!0),y=0;export{C as Component,S as Fragment,W as cloneElement,X as createContext,k as createElement,M as createRef,k as h,U as hydrate,t as isValidElement,l as options,R as render,F as toChildArray};\n//# sourceMappingURL=preact.module.js.map\n","import{options as r,Fragment as e}from\"preact\";export{Fragment}from\"preact\";var t=/[\"&<]/;function n(r){if(0===r.length||!1===t.test(r))return r;for(var e=0,n=0,o=\"\",f=\"\";n<r.length;n++){switch(r.charCodeAt(n)){case 34:f=\""\";break;case 38:f=\"&\";break;case 60:f=\"<\";break;default:continue}n!==e&&(o+=r.slice(e,n)),o+=f,e=n+1}return n!==e&&(o+=r.slice(e,n)),o}var o=/acit|ex(?:s|g|n|p|$)|rph|grid|ows|mnc|ntw|ine[ch]|zoo|^ord|itera/i,f=0,i=Array.isArray;function u(e,t,n,o,i,u){t||(t={});var a,c,p=t;if(\"ref\"in p)for(c in p={},t)\"ref\"==c?a=t[c]:p[c]=t[c];var l={type:e,props:p,key:n,ref:a,__k:null,__:null,__b:0,__e:null,__c:null,constructor:void 0,__v:--f,__i:-1,__u:0,__source:i,__self:u};if(\"function\"==typeof e&&(a=e.defaultProps))for(c in a)void 0===p[c]&&(p[c]=a[c]);return r.vnode&&r.vnode(l),l}function a(r){var t=u(e,{tpl:r,exprs:[].slice.call(arguments,1)});return t.key=t.__v,t}var c={},p=/[A-Z]/g;function l(e,t){if(r.attr){var f=r.attr(e,t);if(\"string\"==typeof f)return f}if(t=function(r){return null!==r&&\"object\"==typeof r&&\"function\"==typeof r.valueOf?r.valueOf():r}(t),\"ref\"===e||\"key\"===e)return\"\";if(\"style\"===e&&\"object\"==typeof t){var i=\"\";for(var u in t){var a=t[u];if(null!=a&&\"\"!==a){var l=\"-\"==u[0]?u:c[u]||(c[u]=u.replace(p,\"-$&\").toLowerCase()),s=\";\";\"number\"!=typeof a||l.startsWith(\"--\")||o.test(l)||(s=\"px;\"),i=i+l+\":\"+a+s}}return e+'=\"'+n(i)+'\"'}return null==t||!1===t||\"function\"==typeof t||\"object\"==typeof t?\"\":!0===t?e:e+'=\"'+n(\"\"+t)+'\"'}function s(r){if(null==r||\"boolean\"==typeof r||\"function\"==typeof r)return null;if(\"object\"==typeof r){if(void 0===r.constructor)return r;if(i(r)){for(var e=0;e<r.length;e++)r[e]=s(r[e]);return r}}return n(\"\"+r)}export{u as jsx,l as jsxAttr,u as jsxDEV,s as jsxEscape,a as jsxTemplate,u as jsxs};\n//# sourceMappingURL=jsxRuntime.module.js.map\n","import{options as n}from\"preact\";var t,r,u,i,o=0,f=[],c=n,e=c.__b,a=c.__r,v=c.diffed,l=c.__c,m=c.unmount,p=c.__;function s(n,t){c.__h&&c.__h(r,n,o||t),o=0;var u=r.__H||(r.__H={__:[],__h:[]});return n>=u.__.length&&u.__.push({}),u.__[n]}function d(n){return o=1,y(D,n)}function y(n,u,i){var o=s(t++,2);if(o.t=n,!o.__c&&(o.__=[i?i(u):D(void 0,u),function(n){var t=o.__N?o.__N[0]:o.__[0],r=o.t(t,n);t!==r&&(o.__N=[r,o.__[1]],o.__c.setState({}))}],o.__c=r,!r.__f)){var f=function(n,t,r){if(!o.__c.__H)return!0;var u=!1,i=o.__c.props!==n;if(o.__c.__H.__.some(function(n){if(n.__N){u=!0;var t=n.__[0];n.__=n.__N,n.__N=void 0,t!==n.__[0]&&(i=!0)}}),c){var f=c.call(this,n,t,r);return u?f||i:f}return!u||i};r.__f=!0;var c=r.shouldComponentUpdate,e=r.componentWillUpdate;r.componentWillUpdate=function(n,t,r){if(this.__e){var u=c;c=void 0,f(n,t,r),c=u}e&&e.call(this,n,t,r)},r.shouldComponentUpdate=f}return o.__N||o.__}function h(n,u){var i=s(t++,3);!c.__s&&C(i.__H,u)&&(i.__=n,i.u=u,r.__H.__h.push(i))}function _(n,u){var i=s(t++,4);!c.__s&&C(i.__H,u)&&(i.__=n,i.u=u,r.__h.push(i))}function A(n){return o=5,T(function(){return{current:n}},[])}function F(n,t,r){o=6,_(function(){if(\"function\"==typeof n){var r=n(t());return function(){n(null),r&&\"function\"==typeof r&&r()}}if(n)return n.current=t(),function(){return n.current=null}},null==r?r:r.concat(n))}function T(n,r){var u=s(t++,7);return C(u.__H,r)&&(u.__=n(),u.__H=r,u.__h=n),u.__}function q(n,t){return o=8,T(function(){return n},t)}function x(n){var u=r.context[n.__c],i=s(t++,9);return i.c=n,u?(null==i.__&&(i.__=!0,u.sub(r)),u.props.value):n.__}function P(n,t){c.useDebugValue&&c.useDebugValue(t?t(n):n)}function b(n){var u=s(t++,10),i=d();return u.__=n,r.componentDidCatch||(r.componentDidCatch=function(n,t){u.__&&u.__(n,t),i[1](n)}),[i[0],function(){i[1](void 0)}]}function g(){var n=s(t++,11);if(!n.__){for(var u=r.__v;null!==u&&!u.__m&&null!==u.__;)u=u.__;var i=u.__m||(u.__m=[0,0]);n.__=\"P\"+i[0]+\"-\"+i[1]++}return n.__}function j(){for(var n;n=f.shift();){var t=n.__H;if(n.__P&&t)try{t.__h.some(z),t.__h.some(B),t.__h=[]}catch(r){t.__h=[],c.__e(r,n.__v)}}}c.__b=function(n){r=null,e&&e(n)},c.__=function(n,t){n&&t.__k&&t.__k.__m&&(n.__m=t.__k.__m),p&&p(n,t)},c.__r=function(n){a&&a(n),t=0;var i=(r=n.__c).__H;i&&(u===r?(i.__h=[],r.__h=[],i.__.some(function(n){n.__N&&(n.__=n.__N),n.u=n.__N=void 0})):(i.__h.some(z),i.__h.some(B),i.__h=[],t=0)),u=r},c.diffed=function(n){v&&v(n);var t=n.__c;t&&t.__H&&(t.__H.__h.length&&(1!==f.push(t)&&i===c.requestAnimationFrame||((i=c.requestAnimationFrame)||w)(j)),t.__H.__.some(function(n){n.u&&(n.__H=n.u,n.u=void 0)})),u=r=null},c.__c=function(n,t){t.some(function(n){try{n.__h.some(z),n.__h=n.__h.filter(function(n){return!n.__||B(n)})}catch(r){t.some(function(n){n.__h&&(n.__h=[])}),t=[],c.__e(r,n.__v)}}),l&&l(n,t)},c.unmount=function(n){m&&m(n);var t,r=n.__c;r&&r.__H&&(r.__H.__.some(function(n){try{z(n)}catch(n){t=n}}),r.__H=void 0,t&&c.__e(t,r.__v))};var k=\"function\"==typeof requestAnimationFrame;function w(n){var t,r=function(){clearTimeout(u),k&&cancelAnimationFrame(t),setTimeout(n)},u=setTimeout(r,35);k&&(t=requestAnimationFrame(r))}function z(n){var t=r,u=n.__c;\"function\"==typeof u&&(n.__c=void 0,u()),r=t}function B(n){var t=r;n.__c=n.__(),r=t}function C(n,t){return!n||n.length!==t.length||t.some(function(t,r){return t!==n[r]})}function D(n,t){return\"function\"==typeof t?t(n):t}export{q as useCallback,x as useContext,P as useDebugValue,h as useEffect,b as useErrorBoundary,g as useId,F as useImperativeHandle,_ as useLayoutEffect,T as useMemo,y as useReducer,A as useRef,d as useState};\n//# sourceMappingURL=hooks.module.js.map\n","import{Component as n,createElement as t,options as e,toChildArray as r,Fragment as u,render as o,hydrate as i,createContext as l,createRef as c,cloneElement as f}from\"preact\";export{Component,Fragment,Fragment as StrictMode,createContext,createElement,createRef}from\"preact\";import{useState as a,useLayoutEffect as s,useEffect as h,useCallback as v,useContext as d,useDebugValue as m,useId as p,useImperativeHandle as y,useMemo as _,useReducer as b,useRef as S}from\"preact/hooks\";export*from\"preact/hooks\";function g(n,t){for(var e in t)n[e]=t[e];return n}function E(n,t){for(var e in n)if(\"__source\"!==e&&!(e in t))return!0;for(var r in t)if(\"__source\"!==r&&n[r]!==t[r])return!0;return!1}function C(n,t){var e=t(),r=a({t:{__:e,u:t}}),u=r[0].t,o=r[1];return s(function(){u.__=e,u.u=t,R(u)&&o({t:u})},[n,e,t]),h(function(){return R(u)&&o({t:u}),n(function(){R(u)&&o({t:u})})},[n]),e}function R(n){try{return!((t=n.__)===(e=n.u())&&(0!==t||1/t==1/e)||t!=t&&e!=e)}catch(n){return!0}var t,e}function x(n){n()}function w(n){return n}function k(){return[!1,x]}var I=s;function M(n,t){this.props=n,this.context=t}function N(n,e){function r(n){var t=this.props.ref;return t!=n.ref&&t&&(\"function\"==typeof t?t(null):t.current=null),e?!e(this.props,n)||t!=n.ref:E(this.props,n)}function u(e){return this.shouldComponentUpdate=r,t(n,e)}return u.displayName=\"Memo(\"+(n.displayName||n.name)+\")\",u.__f=u.prototype.isReactComponent=!0,u.type=n,u}(M.prototype=new n).isPureReactComponent=!0,M.prototype.shouldComponentUpdate=function(n,t){return E(this.props,n)||E(this.state,t)};var T=e.__b;e.__b=function(n){n.type&&n.type.__f&&n.ref&&(n.props.ref=n.ref,n.ref=null),T&&T(n)};var A=\"undefined\"!=typeof Symbol&&Symbol.for&&Symbol.for(\"react.forward_ref\")||3911;function D(n){function t(t){var e=g({},t);return delete e.ref,n(e,t.ref||null)}return t.$$typeof=A,t.render=n,t.prototype.isReactComponent=t.__f=!0,t.displayName=\"ForwardRef(\"+(n.displayName||n.name)+\")\",t}var F=function(n,t){return null==n?null:r(r(n).map(t))},L={map:F,forEach:F,count:function(n){return n?r(n).length:0},only:function(n){var t=r(n);if(1!==t.length)throw\"Children.only\";return t[0]},toArray:r},O=e.__e;e.__e=function(n,t,e,r){if(n.then)for(var u,o=t;o=o.__;)if((u=o.__c)&&u.__c)return null==t.__e&&(t.__e=e.__e,t.__k=e.__k||[]),u.__c(n,t);O(n,t,e,r)};var U=e.unmount;function V(n,t,e){return n&&(n.__c&&n.__c.__H&&(n.__c.__H.__.forEach(function(n){\"function\"==typeof n.__c&&n.__c()}),n.__c.__H=null),null!=(n=g({},n)).__c&&(n.__c.__P===e&&(n.__c.__P=t),n.__c.__e=!0,n.__c=null),n.__k=n.__k&&n.__k.map(function(n){return V(n,t,e)})),n}function W(n,t,e){return n&&e&&(n.__v=null,n.__k=n.__k&&n.__k.map(function(n){return W(n,t,e)}),n.__c&&n.__c.__P===t&&(n.__e&&e.appendChild(n.__e),n.__c.__e=!0,n.__c.__P=e)),n}function P(){this.__u=0,this.o=null,this.__b=null}function j(n){var t=n.__&&n.__.__c;return t&&t.__a&&t.__a(n)}function z(n){var e,r,u,o=null;function i(i){if(e||(e=n()).then(function(n){n&&(o=n.default||n),u=!0},function(n){r=n,u=!0}),r)throw r;if(!u)throw e;return o?t(o,i):null}return i.displayName=\"Lazy\",i.__f=!0,i}function B(){this.i=null,this.l=null}e.unmount=function(n){var t=n.__c;t&&(t.__z=!0),t&&t.__R&&t.__R(),t&&32&n.__u&&(n.type=null),U&&U(n)},(P.prototype=new n).__c=function(n,t){var e=t.__c,r=this;null==r.o&&(r.o=[]),r.o.push(e);var u=j(r.__v),o=!1,i=function(){o||r.__z||(o=!0,e.__R=null,u?u(c):c())};e.__R=i;var l=e.__P;e.__P=null;var c=function(){if(!--r.__u){if(r.state.__a){var n=r.state.__a;r.__v.__k[0]=W(n,n.__c.__P,n.__c.__O)}var t;for(r.setState({__a:r.__b=null});t=r.o.pop();)t.__P=l,t.forceUpdate()}};r.__u++||32&t.__u||r.setState({__a:r.__b=r.__v.__k[0]}),n.then(i,i)},P.prototype.componentWillUnmount=function(){this.o=[]},P.prototype.render=function(n,e){if(this.__b){if(this.__v.__k){var r=document.createElement(\"div\"),o=this.__v.__k[0].__c;this.__v.__k[0]=V(this.__b,r,o.__O=o.__P)}this.__b=null}var i=e.__a&&t(u,null,n.fallback);return i&&(i.__u&=-33),[t(u,null,e.__a?null:n.children),i]};var H=function(n,t,e){if(++e[1]===e[0]&&n.l.delete(t),n.props.revealOrder&&(\"t\"!==n.props.revealOrder[0]||!n.l.size))for(e=n.i;e;){for(;e.length>3;)e.pop()();if(e[1]<e[0])break;n.i=e=e[2]}};function Z(n){return this.getChildContext=function(){return n.context},n.children}function Y(n){var e=this,r=n.h;if(e.componentWillUnmount=function(){o(null,e.v),e.v=null,e.h=null},e.h&&e.h!==r&&e.componentWillUnmount(),!e.v){for(var u=e.__v;null!==u&&!u.__m&&null!==u.__;)u=u.__;e.h=r,e.v={nodeType:1,parentNode:r,childNodes:[],__k:{__m:u.__m},contains:function(){return!0},namespaceURI:r.namespaceURI,insertBefore:function(n,t){this.childNodes.push(n),e.h.insertBefore(n,t)},removeChild:function(n){this.childNodes.splice(this.childNodes.indexOf(n)>>>1,1),e.h.removeChild(n)}}}o(t(Z,{context:e.context},n.__v),e.v)}function $(n,e){var r=t(Y,{__v:n,h:e});return r.containerInfo=e,r}(B.prototype=new n).__a=function(n){var t=this,e=j(t.__v),r=t.l.get(n);return r[0]++,function(u){var o=function(){t.props.revealOrder?(r.push(u),H(t,n,r)):u()};e?e(o):o()}},B.prototype.render=function(n){this.i=null,this.l=new Map;var t=r(n.children);n.revealOrder&&\"b\"===n.revealOrder[0]&&t.reverse();for(var e=t.length;e--;)this.l.set(t[e],this.i=[1,0,this.i]);return n.children},B.prototype.componentDidUpdate=B.prototype.componentDidMount=function(){var n=this;this.l.forEach(function(t,e){H(n,e,t)})};var q=\"undefined\"!=typeof Symbol&&Symbol.for&&Symbol.for(\"react.element\")||60103,G=/^(?:accent|alignment|arabic|baseline|cap|clip(?!PathU)|color|dominant|fill|flood|font|glyph(?!R)|horiz|image(!S)|letter|lighting|marker(?!H|W|U)|overline|paint|pointer|shape|stop|strikethrough|stroke|text(?!L)|transform|underline|unicode|units|v|vector|vert|word|writing|x(?!C))[A-Z]/,J=/^on(Ani|Tra|Tou|BeforeInp|Compo)/,K=/[A-Z0-9]/g,Q=\"undefined\"!=typeof document,X=function(n){return(\"undefined\"!=typeof Symbol&&\"symbol\"==typeof Symbol()?/fil|che|rad/:/fil|che|ra/).test(n)};function nn(n,t,e){return null==t.__k&&(t.textContent=\"\"),o(n,t),\"function\"==typeof e&&e(),n?n.__c:null}function tn(n,t,e){return i(n,t),\"function\"==typeof e&&e(),n?n.__c:null}n.prototype.isReactComponent=!0,[\"componentWillMount\",\"componentWillReceiveProps\",\"componentWillUpdate\"].forEach(function(t){Object.defineProperty(n.prototype,t,{configurable:!0,get:function(){return this[\"UNSAFE_\"+t]},set:function(n){Object.defineProperty(this,t,{configurable:!0,writable:!0,value:n})}})});var en=e.event;e.event=function(n){return en&&(n=en(n)),n.persist=function(){},n.isPropagationStopped=function(){return this.cancelBubble},n.isDefaultPrevented=function(){return this.defaultPrevented},n.nativeEvent=n};var rn,un={configurable:!0,get:function(){return this.class}},on=e.vnode;e.vnode=function(n){\"string\"==typeof n.type&&function(n){var t=n.props,e=n.type,u={},o=-1==e.indexOf(\"-\");for(var i in t){var l=t[i];if(!(\"value\"===i&&\"defaultValue\"in t&&null==l||Q&&\"children\"===i&&\"noscript\"===e||\"class\"===i||\"className\"===i)){var c=i.toLowerCase();\"defaultValue\"===i&&\"value\"in t&&null==t.value?i=\"value\":\"download\"===i&&!0===l?l=\"\":\"translate\"===c&&\"no\"===l?l=!1:\"o\"===c[0]&&\"n\"===c[1]?\"ondoubleclick\"===c?i=\"ondblclick\":\"onchange\"!==c||\"input\"!==e&&\"textarea\"!==e||X(t.type)?\"onfocus\"===c?i=\"onfocusin\":\"onblur\"===c?i=\"onfocusout\":J.test(i)&&(i=c):c=i=\"oninput\":o&&G.test(i)?i=i.replace(K,\"-$&\").toLowerCase():null===l&&(l=void 0),\"oninput\"===c&&u[i=c]&&(i=\"oninputCapture\"),u[i]=l}}\"select\"==e&&(u.multiple&&Array.isArray(u.value)&&(u.value=r(t.children).forEach(function(n){n.props.selected=-1!=u.value.indexOf(n.props.value)})),null!=u.defaultValue&&(u.value=r(t.children).forEach(function(n){n.props.selected=u.multiple?-1!=u.defaultValue.indexOf(n.props.value):u.defaultValue==n.props.value}))),t.class&&!t.className?(u.class=t.class,Object.defineProperty(u,\"className\",un)):t.className&&(u.class=u.className=t.className),n.props=u}(n),n.$$typeof=q,on&&on(n)};var ln=e.__r;e.__r=function(n){ln&&ln(n),rn=n.__c};var cn=e.diffed;e.diffed=function(n){cn&&cn(n);var t=n.props,e=n.__e;null!=e&&\"textarea\"===n.type&&\"value\"in t&&t.value!==e.value&&(e.value=null==t.value?\"\":t.value),rn=null};var fn={ReactCurrentDispatcher:{current:{readContext:function(n){return rn.__n[n.__c].props.value},useCallback:v,useContext:d,useDebugValue:m,useDeferredValue:w,useEffect:h,useId:p,useImperativeHandle:y,useInsertionEffect:I,useLayoutEffect:s,useMemo:_,useReducer:b,useRef:S,useState:a,useSyncExternalStore:C,useTransition:k}}},an=\"18.3.1\";function sn(n){return t.bind(null,n)}function hn(n){return!!n&&n.$$typeof===q}function vn(n){return hn(n)&&n.type===u}function dn(n){return!!n&&\"string\"==typeof n.displayName&&0==n.displayName.indexOf(\"Memo(\")}function mn(n){return hn(n)?f.apply(null,arguments):n}function pn(n){return!!n.__k&&(o(null,n),!0)}function yn(n){return n&&(n.base||1===n.nodeType&&n)||null}var _n=function(n,t){return n(t)},bn=function(n,t){var r=e.debounceRendering;e.debounceRendering=function(n){return n()};var u=n(t);return e.debounceRendering=r,u},Sn=hn,gn={useState:a,useId:p,useReducer:b,useEffect:h,useLayoutEffect:s,useInsertionEffect:I,useTransition:k,useDeferredValue:w,useSyncExternalStore:C,startTransition:x,useRef:S,useImperativeHandle:y,useMemo:_,useCallback:v,useContext:d,useDebugValue:m,version:\"18.3.1\",Children:L,render:nn,hydrate:tn,unmountComponentAtNode:pn,createPortal:$,createElement:t,createContext:l,createFactory:sn,cloneElement:mn,createRef:c,Fragment:u,isValidElement:hn,isElement:Sn,isFragment:vn,isMemo:dn,findDOMNode:yn,Component:n,PureComponent:M,memo:N,forwardRef:D,flushSync:bn,unstable_batchedUpdates:_n,StrictMode:u,Suspense:P,SuspenseList:B,lazy:z,__SECRET_INTERNALS_DO_NOT_USE_OR_YOU_WILL_BE_FIRED:fn};export{L as Children,M as PureComponent,P as Suspense,B as SuspenseList,fn as __SECRET_INTERNALS_DO_NOT_USE_OR_YOU_WILL_BE_FIRED,mn as cloneElement,sn as createFactory,$ as createPortal,gn as default,yn as findDOMNode,bn as flushSync,D as forwardRef,tn as hydrate,Sn as isElement,vn as isFragment,dn as isMemo,hn as isValidElement,z as lazy,N as memo,nn as render,x as startTransition,pn as unmountComponentAtNode,_n as unstable_batchedUpdates,w as useDeferredValue,I as useInsertionEffect,C as useSyncExternalStore,k as useTransition,an as version};\n//# sourceMappingURL=compat.module.js.map\n","import React, { useEffect, useState } from 'react';\nimport { webPopupButtonPillStyle, webPopupFormInputStyle, webPopupTextColor, WEB_POPUP_BG_SECTION_FALLBACK, WEB_POPUP_BUTTON_SLOT_PADDING, WEB_POPUP_FONT_STACK, WEB_POPUP_FORM_ERROR_COLOR, WEB_POPUP_FORM_SLOT_PADDING, WEB_POPUP_KEYFRAMES, WEB_POPUP_PAGE_TRANSITION_MS, WEB_POPUP_TEXT_SLOT_PADDING, WEB_POPUP_TEXT_VARIANT_STYLES, } from './constants';\nimport { placementMaxSize, resolveWebPopupPages, safeUrl, sanitizeWebPopupHtml, startPageOf, webPopupLinkTargetAttrs, } from './helpers';\nimport { webPopupBackgroundImageStyle, webPopupContainerStyle } from './layout';\n// Renders a popup from its model by interpreting each page's embedded layout\n// tree — the same node vocabulary the editor's canvas builds from: container\n// nodes become inline-styled grid divs, `Content` leaves render a named\n// zone's slot stack, `Image` leaves an image param. 'live' mode adds the\n// viewport chrome (overlay, placement, animation, close), 'preview' renders\n// just the popup box inline. Only one page renders at a time; buttons with a\n// `page` action switch pages. All styling is inline (shadow-DOM friendly, no\n// CSS files).\nconst ANIMATION_STYLE = {\n none: undefined,\n fade: 'pw-vpopup-fade 0.35s ease-out backwards',\n slide: 'pw-vpopup-slide 0.35s ease-out backwards',\n};\nfunction TextSlotView({ slot, align, inverse, colors }) {\n const style = {\n ...WEB_POPUP_TEXT_VARIANT_STYLES[slot.variant],\n textAlign: slot.align ?? align,\n padding: WEB_POPUP_TEXT_SLOT_PADDING,\n };\n const color = webPopupTextColor(slot.variant, colors, inverse);\n if (color)\n style.color = color;\n // The html comes from the editor's rich-text slots, but the json is\n // API-writable — sanitize on render (inline tags only, safe link hrefs).\n return React.createElement(\"div\", { style: style, dangerouslySetInnerHTML: { __html: sanitizeWebPopupHtml(slot.html) } });\n}\nfunction ButtonSlotView({ slot, accent, onRequestClose, onPageChange }) {\n const pill = webPopupButtonPillStyle(slot.variant, accent);\n const wrapper = { padding: WEB_POPUP_BUTTON_SLOT_PADDING };\n if (slot.action.type === 'close') {\n return (React.createElement(\"div\", { style: wrapper },\n React.createElement(\"button\", { type: \"button\", style: pill, onClick: onRequestClose }, slot.label)));\n }\n if (slot.action.type === 'page') {\n const target = slot.action.page;\n return (React.createElement(\"div\", { style: wrapper },\n React.createElement(\"button\", { type: \"button\", style: pill, onClick: () => onPageChange(target) }, slot.label)));\n }\n const href = safeUrl(slot.action.url);\n // No (safe) URL yet: an inert pill — not an '#' anchor opening a blank tab.\n if (!href) {\n return (React.createElement(\"div\", { style: wrapper },\n React.createElement(\"button\", { type: \"button\", style: pill }, slot.label)));\n }\n return (React.createElement(\"div\", { style: wrapper },\n React.createElement(\"a\", { href: href, ...webPopupLinkTargetAttrs(slot.action.target), style: pill }, slot.label)));\n}\nconst FORM_EMAIL_PATTERN = /^\\S+@\\S+\\.\\S+$/;\nconst FORM_INPUT_TYPES = { email: 'email', phone: 'tel' };\nconst FORM_AUTOCOMPLETE = {\n email: 'email',\n firstName: 'given-name',\n lastName: 'family-name',\n phone: 'tel',\n};\n// The privacy-check error renders under the checkbox row; a field key can\n// never collide with it (normalized keys are non-empty slot-local ids).\nconst PRIVACY_ERROR_KEY = '__privacy';\n/**\n * An email-subscription form slot: the fields, the consent row and the\n * submit pill, all popup-styled. Local state machine: idle → submitting →\n * success/confirm (the form swaps to the slot's message) or error (the form\n * stays, a generic retryable note appears). Without an onSubmitForm handler\n * or a bound formCode the form is inert — inputs type, submit does nothing —\n * which is exactly what previews and the editor canvas want.\n */\nfunction FormSlotView({ slot, align, inverse, colors, onSubmitForm }) {\n const [values, setValues] = useState({});\n const [policyAccepted, setPolicyAccepted] = useState(false);\n const [focusedKey, setFocusedKey] = useState(null);\n const [errors, setErrors] = useState({});\n const [phase, setPhase] = useState('idle');\n const captionColor = webPopupTextColor('caption', colors, inverse);\n const captionStyle = {\n ...WEB_POPUP_TEXT_VARIANT_STYLES.caption,\n ...(captionColor ? { color: captionColor } : {}),\n };\n const errorStyle = {\n fontSize: 12,\n lineHeight: 1.4,\n color: WEB_POPUP_FORM_ERROR_COLOR,\n paddingTop: 2,\n };\n if (phase === 'success' || phase === 'confirm') {\n const messageStyle = {\n ...WEB_POPUP_TEXT_VARIANT_STYLES.body,\n textAlign: align,\n padding: WEB_POPUP_TEXT_SLOT_PADDING,\n };\n const color = webPopupTextColor('body', colors, inverse);\n if (color)\n messageStyle.color = color;\n return (React.createElement(\"div\", { style: { padding: WEB_POPUP_FORM_SLOT_PADDING } },\n React.createElement(\"div\", { style: messageStyle }, phase === 'confirm' ? slot.confirmEmailMessage : slot.successMessage)));\n }\n const setFieldValue = (key, value) => {\n setValues((prev) => ({ ...prev, [key]: value }));\n setErrors((prev) => (prev[key] ? Object.fromEntries(Object.entries(prev).filter(([k]) => k !== key)) : prev));\n };\n const submit = () => {\n if (!onSubmitForm || !slot.formCode || phase === 'submitting')\n return;\n const found = {};\n for (const field of slot.fields) {\n const value = (values[field.key] ?? '').trim();\n if (field.required && !value)\n found[field.key] = 'Required';\n else if (field.kind === 'email' && value && !FORM_EMAIL_PATTERN.test(value)) {\n found[field.key] = 'Enter a valid email';\n }\n }\n if (slot.privacy && !policyAccepted)\n found[PRIVACY_ERROR_KEY] = 'Please accept the privacy policy';\n setErrors(found);\n if (Object.keys(found).length > 0)\n return;\n const payload = {\n email: '',\n policyAccepted: slot.privacy ? policyAccepted : true,\n };\n const customFields = {};\n for (const field of slot.fields) {\n const value = (values[field.key] ?? '').trim();\n if (!value)\n continue;\n if (field.kind === 'email')\n payload.email = payload.email || value;\n else if (field.kind === 'firstName')\n payload.firstName = value;\n else if (field.kind === 'lastName')\n payload.lastName = value;\n else if (field.kind === 'phone')\n payload.phone = value;\n else\n customFields[field.tag || field.key] = value;\n }\n if (Object.keys(customFields).length > 0)\n payload.customFields = customFields;\n setPhase('submitting');\n // Promise.resolve wrapper: a host callback that throws SYNCHRONOUSLY\n // (before returning its promise) must land in the error phase too — a\n // bare .then(ok, fail) would let the throw escape and strand the form\n // in 'submitting' with no way back.\n Promise.resolve()\n .then(() => onSubmitForm(slot.formCode, payload))\n .then((result) => setPhase(result === 'confirm-email' ? 'confirm' : 'success'), () => setPhase('error'));\n };\n const submitting = phase === 'submitting';\n const privacyHref = slot.privacy ? safeUrl(slot.privacy.url) : undefined;\n const pill = {\n ...webPopupButtonPillStyle(slot.submitVariant, colors.accent),\n ...(submitting ? { opacity: 0.6, cursor: 'default' } : {}),\n };\n return (React.createElement(\"form\", { noValidate: true, style: { padding: WEB_POPUP_FORM_SLOT_PADDING, margin: 0, textAlign: 'left' }, onSubmit: (event) => {\n event.preventDefault();\n submit();\n } },\n slot.fields.map((field) => {\n const error = errors[field.key];\n let borderColor;\n if (error)\n borderColor = WEB_POPUP_FORM_ERROR_COLOR;\n else if (focusedKey === field.key)\n borderColor = colors.accent;\n return (React.createElement(\"div\", { key: field.key, style: { padding: WEB_POPUP_TEXT_SLOT_PADDING } },\n field.label && React.createElement(\"div\", { style: { ...captionStyle, paddingBottom: 4 } }, field.label),\n React.createElement(\"input\", { type: FORM_INPUT_TYPES[field.kind] ?? 'text', autoComplete: FORM_AUTOCOMPLETE[field.kind], placeholder: field.placeholder || undefined, value: values[field.key] ?? '', disabled: submitting, style: webPopupFormInputStyle(borderColor), onFocus: () => setFocusedKey(field.key), onBlur: () => setFocusedKey((key) => (key === field.key ? null : key)), onChange: (event) => setFieldValue(field.key, event.currentTarget.value) }),\n error && React.createElement(\"div\", { style: errorStyle }, error)));\n }),\n slot.privacy && (React.createElement(\"div\", { style: { padding: WEB_POPUP_TEXT_SLOT_PADDING } },\n React.createElement(\"label\", { style: { ...captionStyle, display: 'flex', alignItems: 'flex-start', gap: 8, cursor: 'pointer' } },\n React.createElement(\"input\", { type: \"checkbox\", checked: policyAccepted, disabled: submitting, style: { margin: '2px 0 0', flexShrink: 0 }, onChange: (event) => {\n setPolicyAccepted(event.currentTarget.checked);\n setErrors((prev) => (prev[PRIVACY_ERROR_KEY]\n ? Object.fromEntries(Object.entries(prev).filter(([k]) => k !== PRIVACY_ERROR_KEY))\n : prev));\n } }),\n React.createElement(\"span\", null,\n slot.privacy.checkboxLabel,\n privacyHref && (React.createElement(React.Fragment, null,\n ' ',\n React.createElement(\"a\", { href: privacyHref, ...webPopupLinkTargetAttrs(undefined), style: { color: colors.accent } }, slot.privacy.linkLabel || slot.privacy.url))))),\n errors[PRIVACY_ERROR_KEY] && React.createElement(\"div\", { style: errorStyle }, errors[PRIVACY_ERROR_KEY]))),\n React.createElement(\"div\", { style: { padding: WEB_POPUP_BUTTON_SLOT_PADDING } },\n React.createElement(\"button\", { type: \"submit\", disabled: submitting, style: pill }, slot.submitLabel)),\n phase === 'error' && (React.createElement(\"div\", { style: { ...errorStyle, textAlign: align } }, \"Something went wrong. Please try again.\"))));\n}\n// A Content leaf: the named zone's slots (texts, buttons and forms in order)\n// as a grid stack. An unknown zone key renders as an empty spot, not a crash.\nfunction ContentNodeView({ node, page, colors, leaf, onRequestClose, onPageChange, onSubmitForm }) {\n const zone = page.contents.find((z) => z.key === node.props.content);\n if (!zone)\n return null;\n if (leaf?.renderZone) {\n return React.createElement(\"div\", { style: { minWidth: 0 } }, leaf.renderZone(zone, node));\n }\n const align = node.props.align ?? 'left';\n const inverse = node.props.tone === 'inverse';\n return (React.createElement(\"div\", { style: { minWidth: 0 } }, zone.slots.map((slot) => {\n if (slot.type === 'text') {\n return (React.createElement(TextSlotView, { key: slot.key, slot: slot, align: align, inverse: inverse, colors: colors }));\n }\n if (slot.type === 'button') {\n return (React.createElement(ButtonSlotView, { key: slot.key, slot: slot, accent: colors.accent, onRequestClose: onRequestClose, onPageChange: onPageChange }));\n }\n return (React.createElement(FormSlotView, { key: slot.key, slot: slot, align: align, inverse: inverse, colors: colors, onSubmitForm: onSubmitForm }));\n })));\n}\nfunction ImageNodeView({ node, page, leaf }) {\n const image = page.images.find((i) => i.key === node.props.image);\n if (!image)\n return null;\n // The override sees srcless params too — an editor wants a placeholder\n // where the runtime shows nothing.\n if (leaf?.renderImage)\n return React.createElement(React.Fragment, null, leaf.renderImage(image, node));\n if (!image.src)\n return null;\n const style = { display: 'block', width: '100%', minWidth: 0 };\n if (image.fit) {\n style.height = '100%';\n style.objectFit = image.fit;\n }\n else {\n style.height = 'auto';\n }\n if (image.blur)\n style.filter = `blur(${image.blur}px)`;\n return React.createElement(\"img\", { src: image.src, alt: \"\", style: style });\n}\n// The tree interpreter: containers → grid divs, leaves → zone/image views.\nfunction LayoutNodeView({ node, page, colors, leaf, onRequestClose, onPageChange, onSubmitForm }) {\n if (node.type === 'Content') {\n return (React.createElement(ContentNodeView, { node: node, page: page, colors: colors, leaf: leaf, onRequestClose: onRequestClose, onPageChange: onPageChange, onSubmitForm: onSubmitForm }));\n }\n if (node.type === 'Image') {\n return React.createElement(ImageNodeView, { node: node, page: page, leaf: leaf });\n }\n const bgKey = node.props?.backgroundImage;\n const background = bgKey ? page.images.find((i) => i.key === bgKey) : undefined;\n const blur = background?.blur ?? 0;\n const dim = background?.dim ?? 0;\n const style = webPopupContainerStyle(node, blur > 0 ? undefined : background?.src || undefined, dim);\n if (bgKey)\n style.backgroundColor = WEB_POPUP_BG_SECTION_FALLBACK;\n const children = node.children.map((child, index) => (React.createElement(LayoutNodeView\n // Layout nodes are static per page render — positional keys are fine.\n , { \n // Layout nodes are static per page render — positional keys are fine.\n key: index, node: child, page: page, colors: colors, leaf: leaf, onRequestClose: onRequestClose, onPageChange: onPageChange, onSubmitForm: onSubmitForm })));\n if (blur > 0) {\n // backdrop-filter blurs what's painted BEHIND its element, never the\n // element's own background — so the image paints on an outer box and the\n // laid-out content rides an inner blurring layer covering it edge to\n // edge (grid/padding move onto that layer). The outer box is a grid so\n // a stretched height (a 'stretch' page's root) passes through to the\n // layer actually carrying alignContent.\n const { backgroundColor, ...inner } = style;\n return (React.createElement(\"div\", { style: {\n display: 'grid',\n minWidth: 0,\n backgroundColor,\n ...(background?.src ? webPopupBackgroundImageStyle(background.src, dim) : {}),\n } },\n React.createElement(\"div\", { style: {\n ...inner,\n backdropFilter: `blur(${blur}px)`,\n WebkitBackdropFilter: `blur(${blur}px)`,\n } }, children)));\n }\n return React.createElement(\"div\", { style: style }, children);\n}\n// The popup box: the shared chrome (background, radius, shadow) around one\n// resolved page's layout tree. Exported for the editor — its canvas is this\n// very interpreter with `leafRenderers` swapping the Content/Image leaves\n// for editable views (the container interpretation stays this component's,\n// which is what keeps the canvas true to the runtime); the viewport chrome\n// (placement, overlay, enter animation) is the caller's business there.\n// After a page switch (`animatePage`) the incoming content fades in — keyed\n// by page so the animation restarts per switch — and an explicit px height\n// glides via the transition (auto heights just snap).\nexport function WebPopupBox({ page, params, leafRenderers, animatePage = false, onRequestClose, onPageChange, onSubmitForm, }) {\n const style = {\n position: 'relative',\n boxSizing: 'border-box',\n overflow: 'hidden',\n backgroundColor: params.colors.background,\n fontFamily: WEB_POPUP_FONT_STACK,\n color: params.colors.text,\n borderRadius: params.borderRadius > 0 ? params.borderRadius : undefined,\n boxShadow: params.boxShadow && params.boxShadow !== 'none' ? params.boxShadow : undefined,\n transition: `height ${WEB_POPUP_PAGE_TRANSITION_MS}ms ease`,\n };\n if (page.height) {\n // 'stretch' fills whatever box the caller gives (the fixed container pins\n // both vertical edges in live mode); a px height is the box's own.\n style.height = page.height === 'stretch' ? '100%' : page.height;\n style.overflowY = 'auto';\n }\n // A stretch page's tree gets the full box height to lay out in: the\n // min-height'd single-track grid stretches the root container, so its\n // alignContent can place the content vertically (a px height keeps the\n // pre-stretch behavior — content flows from the top).\n const pageStyle = {\n ...(animatePage ? { animation: `pw-vpopup-page ${WEB_POPUP_PAGE_TRANSITION_MS}ms ease-out backwards` } : {}),\n ...(page.height === 'stretch' ? { display: 'grid', minHeight: '100%' } : {}),\n };\n return (React.createElement(\"div\", { style: style },\n React.createElement(\"div\", { key: page.key, style: pageStyle },\n React.createElement(LayoutNodeView, { node: page.layout, page: page, colors: params.colors, leaf: leafRenderers, onRequestClose: onRequestClose, onPageChange: onPageChange ?? (() => { }), onSubmitForm: onSubmitForm }))));\n}\nfunction CloseButton({ onRequestClose }) {\n return (React.createElement(\"button\", { type: \"button\", \"aria-label\": \"Close\", onClick: onRequestClose, style: {\n position: 'absolute',\n top: 10,\n right: 10,\n width: 24,\n height: 24,\n padding: 0,\n border: 'none',\n borderRadius: '50%',\n background: 'rgba(255, 255, 255, 0.92)',\n boxShadow: '0 1px 3px rgba(16, 24, 40, 0.25)',\n color: '#667085',\n fontSize: 13,\n lineHeight: 1,\n cursor: 'pointer',\n } }, \"\\u2715\"));\n}\n// Fixed viewport placement from the placement param: anchored edges get the\n// offset, unanchored axes center via translate. No width = stretch between\n// the side gutters; height 'stretch' = pinned to both vertical edges the same\n// way. The size is the ACTIVE page's (resolved page ?? chrome), so the box\n// re-anchors itself when a page switch changes it.\nfunction fixedContainerStyle(params, width, height) {\n const { placement } = params;\n const style = {\n position: 'fixed',\n boxSizing: 'border-box',\n maxWidth: placementMaxSize(placement),\n maxHeight: placementMaxSize(placement),\n // The widget host is pointer-transparent (a corner banner must not block\n // the page); the popup itself takes clicks back.\n pointerEvents: 'auto',\n };\n if (width) {\n style.width = width;\n const h = placement.h;\n if (h === 'left')\n style.left = placement.offset;\n else if (h === 'right')\n style.right = placement.offset;\n else\n style.left = '50%';\n }\n else {\n // Stretch: pin both side edges regardless of the horizontal anchor.\n style.left = placement.offset;\n style.right = placement.offset;\n }\n if (height === 'stretch') {\n // Stretch: pin both vertical edges; the v anchor has nothing to place.\n style.top = placement.offset;\n style.bottom = placement.offset;\n }\n else if (placement.v === 'top')\n style.top = placement.offset;\n else if (placement.v === 'bottom')\n style.bottom = placement.offset;\n else\n style.top = '50%';\n const tx = width && placement.h === 'center' ? '-50%' : '0';\n const ty = placement.v === 'middle' && height !== 'stretch' ? '-50%' : '0';\n if (tx !== '0' || ty !== '0')\n style.transform = `translate(${tx}, ${ty})`;\n const anim = ANIMATION_STYLE[params.animation];\n if (anim)\n style.animation = anim;\n // A page switch that changes the (explicit) width glides instead of\n // jumping; the anchored edges keep the box pinned while it resizes.\n style.transition = `width ${WEB_POPUP_PAGE_TRANSITION_MS}ms ease`;\n return style;\n}\nexport function WebPopupReader({ params, mode = 'live', onRequestClose, onSubmitForm, leafRenderers, }) {\n // null = never navigated: show the start page. Guarded against keys that\n // don't exist (anymore) — an edited/older document falls back gracefully.\n const [pageKey, setPageKey] = useState(null);\n // Only the active page's images are in the DOM — the rest would start\n // downloading on the page switch, leaving the previous picture on screen\n // until the new one arrives. Warm the browser cache for every page up front.\n useEffect(() => {\n resolveWebPopupPages(params).forEach((p) => p.images.forEach(({ src }) => {\n if (src)\n new Image().src = src;\n }));\n }, [params]);\n const pages = resolveWebPopupPages(params);\n if (pages.length === 0)\n return null;\n const page = pages.find((p) => p.key === pageKey) ?? startPageOf(params, pages);\n // null = the initial page: entry is the chrome's business (the enter\n // animation in live mode); the page fade only plays on actual switches.\n const animatePage = pageKey !== null;\n if (mode === 'preview') {\n return (React.createElement(\"div\", { style: {\n position: 'relative',\n width: page.width ?? '100%',\n transition: `width ${WEB_POPUP_PAGE_TRANSITION_MS}ms ease`,\n } },\n React.createElement(\"style\", null, WEB_POPUP_KEYFRAMES),\n React.createElement(WebPopupBox, { page: page, params: params, leafRenderers: leafRenderers, animatePage: animatePage, onRequestClose: onRequestClose, onPageChange: setPageKey, onSubmitForm: onSubmitForm })));\n }\n const overlay = params.overlay;\n return (React.createElement(React.Fragment, null,\n React.createElement(\"style\", null, WEB_POPUP_KEYFRAMES),\n overlay && (\n // Modal semantics: the dim is clickable and dismisses the popup.\n React.createElement(\"div\", { style: {\n position: 'fixed',\n inset: 0,\n backgroundColor: overlay.color,\n opacity: overlay.opacity,\n animation: 'pw-vpopup-overlay 0.2s ease-out backwards',\n pointerEvents: 'auto',\n }, onClick: onRequestClose })),\n React.createElement(\"div\", { style: fixedContainerStyle(params, page.width, page.height) },\n React.createElement(WebPopupBox, { page: page, params: params, leafRenderers: leafRenderers, animatePage: animatePage, onRequestClose: onRequestClose, onPageChange: setPageKey, onSubmitForm: onSubmitForm }),\n React.createElement(CloseButton, { onRequestClose: onRequestClose }))));\n}\n","import { type TInboxMessagesStoreName, type TKeyValueStoreName, type TMainLogStoreName, type TMessageLogStoreName } from '../Storage.types';\n\nexport const STORE_NAME_KEY_VALUE: TKeyValueStoreName = 'keyValue';\nexport const STORE_NAME_MESSAGE_LOG: TMessageLogStoreName = 'messages';\nexport const STORE_NAME_MAIN_LOG: TMainLogStoreName = 'log';\nexport const STORE_NAME_INBOX_MESSAGES: TInboxMessagesStoreName = 'inboxMessages';\n\nexport const KEY_PATH_BASE_INCREMENT = 'id';\n","import { type TMigrationType, type TSdkStoreName } from '../Storage.types';\n\n/**\n * Check existed store, before create\n * @param name\n * @param storeCreator\n */\nexport function storeCreatorDecorator(name: TSdkStoreName, storeCreator: TMigrationType): TMigrationType {\n return function (database: IDBDatabase) {\n if (database.objectStoreNames.contains(name)) {\n return;\n }\n\n storeCreator(database);\n };\n}\n","import {\n STORE_NAME_INBOX_MESSAGES,\n STORE_NAME_KEY_VALUE,\n STORE_NAME_MAIN_LOG,\n STORE_NAME_MESSAGE_LOG,\n KEY_PATH_BASE_INCREMENT,\n} from './constants';\nimport { storeCreatorDecorator } from './helpers';\nimport {\n type TInboxMessagesIDBKeyPath,\n type TInboxMessagesIDBRemovalTimeIndex,\n type TInboxMessagesIDBStatusIndex,\n} from '../../../models/InboxMessages.types';\n\n/**\n * Create keyValue store migration\n * @param database\n */\nfunction createKeyValueStore(database: IDBDatabase) {\n database.createObjectStore(STORE_NAME_KEY_VALUE, { keyPath: 'key' });\n}\n\n/**\n * Create log store migration\n * @param database\n */\nfunction createLogStore(database: IDBDatabase) {\n const logStore = database.createObjectStore(\n STORE_NAME_MAIN_LOG,\n { keyPath: KEY_PATH_BASE_INCREMENT, autoIncrement: true },\n );\n logStore.createIndex('environment', 'environment', { unique: false });\n logStore.createIndex('date', 'date', { unique: false });\n logStore.createIndex('type', 'type', { unique: false });\n}\n\n/**\n * Create message log store migration\n * @param database\n */\nfunction createMessageLogStore(database: IDBDatabase) {\n const messagesStore = database.createObjectStore(\n STORE_NAME_MESSAGE_LOG,\n { keyPath: KEY_PATH_BASE_INCREMENT, autoIncrement: true },\n );\n messagesStore.createIndex('date', 'date', { unique: false });\n}\n\n/**\n * Create inbox messages store migration\n * @param database\n */\nfunction createInboxMessagesStore(database: IDBDatabase) {\n const keyPath: TInboxMessagesIDBKeyPath = 'inbox_id';\n const statusIndex: TInboxMessagesIDBStatusIndex = 'status';\n const removalTimeIndex: TInboxMessagesIDBRemovalTimeIndex = 'rt';\n\n const store = database.createObjectStore(STORE_NAME_INBOX_MESSAGES,\n { keyPath, autoIncrement: false },\n );\n store.createIndex(statusIndex, statusIndex, { unique: false, multiEntry: true });\n store.createIndex(removalTimeIndex, removalTimeIndex, { unique: false, multiEntry: true });\n}\n\nexport default [\n storeCreatorDecorator(STORE_NAME_KEY_VALUE, createKeyValueStore),\n storeCreatorDecorator(STORE_NAME_MAIN_LOG, createLogStore),\n storeCreatorDecorator(STORE_NAME_MESSAGE_LOG, createMessageLogStore),\n storeCreatorDecorator(STORE_NAME_INBOX_MESSAGES, createInboxMessagesStore),\n];\n","import { default as migrationsInitial } from './initial';\nimport { type TMigrationType } from '../Storage.types';\n\nexport default class Migrations {\n get all(): Array<TMigrationType> {\n return migrationsInitial;\n }\n}\n","import Migrations from './Migrations';\nimport { type TMigrationType } from '../Storage.types';\n\nexport default class MigrationExecutor {\n db: IDBDatabase;\n migrationsBuilder: Migrations;\n\n constructor(\n db: IDBDatabase,\n migrationsBuilder: Migrations = new Migrations(),\n ) {\n this.db = db;\n this.migrationsBuilder = migrationsBuilder;\n }\n\n applyMigrations() {\n this.applyMigrationsPack(this.migrationsBuilder.all);\n }\n\n applyMigrationsPack(migrationsPack: Array<TMigrationType>) {\n migrationsPack.forEach((migration) => {\n migration(this.db);\n });\n }\n}\n","import {\n STORE_NAME_KEY_VALUE,\n STORE_NAME_MAIN_LOG,\n STORE_NAME_MESSAGE_LOG,\n} from '../modules/storage/migrations/constants';\nimport MigrationExecutor from '../modules/storage/migrations/MigrationExecutor';\nimport { type IIDBOpenEventTargetWithResult } from '../modules/storage/Storage.types';\nimport version from '../modules/storage/version';\n\ndeclare const self: ServiceWorkerGlobalScope;\n\nfunction onversionchange(database: IDBDatabase, event: Event) {\n console.info('onversionchange', event);\n database.close();\n}\n\nlet databasePromise: Promise<IDBDatabase>;\nexport function getInstance(): Promise<IDBDatabase> {\n if (!databasePromise) {\n databasePromise = new Promise<IDBDatabase>((resolve, reject) => {\n const request: IDBOpenDBRequest = indexedDB.open('PUSHWOOSH_SDK_STORE', version);\n request.onsuccess = (event) => {\n const database: IDBDatabase = (event.target as IIDBOpenEventTargetWithResult).result;\n database.onversionchange = onversionchange.bind(null, database, reject);\n resolve(database);\n };\n\n request.onerror = () => reject(request.error);\n\n request.onupgradeneeded = (event) => {\n const database: IDBDatabase = (event.target as IIDBOpenEventTargetWithResult).result;\n database.onversionchange = onversionchange.bind(null, database, reject);\n\n const migrationExecutor = new MigrationExecutor(database);\n migrationExecutor.applyMigrations();\n };\n });\n }\n return databasePromise;\n}\n\nfunction getInstanceWithPromise(executor: any): any {\n return getInstance().then((database) => (\n new Promise((resolve, reject) => executor(database, resolve, reject))\n ));\n}\n\nfunction createKeyValue(name: string) {\n return {\n get<K extends string, D>(key: K, defaultValue?: D) {\n return getInstanceWithPromise((database: IDBDatabase, resolve: any, reject: any) => {\n const request = database.transaction(name).objectStore(name).get(key);\n\n /** @TODO\n * we cant invoke \"resolve\" or \"reject\" in onsuccess or onerror because\n * it leads to bugs in Safari when we try to get permissions for notifications\n *\n * Checking status of request in setTimeout fixes this bug\n */\n let isComplete = false;\n let isError = false;\n let timeout: any;\n\n const check = () => {\n clearTimeout(timeout);\n if (isComplete) {\n resolve(request.result?.value || defaultValue);\n } else if (isError) {\n reject(request.error);\n } else {\n timeout = setTimeout(check, 0);\n }\n };\n\n request.onsuccess = () => isComplete = true;\n request.onerror = () => isError = true;\n check();\n });\n },\n\n getAll() {\n return getInstanceWithPromise((database: IDBDatabase, resolve: any, reject: any) => {\n const result: { [key: string]: any } = {};\n const cursor = database.transaction(name).objectStore(name).openCursor();\n let isComplete = false;\n let isError = false;\n let timeout: any;\n\n /** @TODO\n * we cant invoke \"resolve\" or \"reject\" in onsuccess or onerror because\n * it leads to bugs in Safari when we try to get permissions for notifications\n *\n * Checking status of request in setTimeout fixes this bug\n */\n const check = () => {\n clearTimeout(timeout);\n if (isComplete) {\n resolve(result);\n } else if (isError) {\n reject(cursor.error);\n } else {\n timeout = setTimeout(check, 0);\n }\n };\n\n cursor.onsuccess = (event) => {\n const cursorResult = (event.target as any).result;\n if (cursorResult) {\n result[cursorResult.key] = cursorResult.value.value;\n cursorResult.continue();\n } else {\n isComplete = true;\n }\n };\n cursor.onerror = () => isError = true;\n check();\n });\n },\n\n async extend(key: string, value: any) {\n const oldValues = await this.get(key);\n const { ...newValues } = value;\n await this.set(key, { ...oldValues, ...newValues });\n },\n\n set<K, D>(key: K, value: D) {\n return getInstanceWithPromise((database: IDBDatabase, resolve: any, reject: any) => {\n const request = database.transaction([name], 'readwrite').objectStore(name).put({ key, value });\n let isComplete = false;\n let isError = false;\n let timeout: any;\n\n /** @TODO\n * we cant invoke \"resolve\" or \"reject\" in onsuccess or onerror because\n * it leads to bugs in Safari when we try to get permissions for notifications\n *\n * Checking status of request in setTimeout fixes this bug\n */\n const check = () => {\n clearTimeout(timeout);\n if (isComplete) {\n resolve(key);\n } else if (isError) {\n reject(request.error);\n } else {\n timeout = setTimeout(check, 0);\n }\n };\n\n request.onsuccess = () => isComplete = true;\n request.onerror = () => isError = true;\n check();\n });\n },\n };\n}\n\nexport abstract class LogBase {\n protected abstract name: string;\n protected abstract maxItems: number;\n _add(obj: any) {\n return getInstanceWithPromise((database: IDBDatabase, resolve: any, reject: any) => {\n const request = database.transaction([this.name], 'readwrite').objectStore(this.name).add(obj);\n request.onsuccess = () => {\n resolve(obj);\n };\n request.onerror = () => {\n reject(request.error);\n };\n }).then((obj: any) => {\n return this.getAll().then((items: { id: number }[]) => {\n if (Array.isArray(items)) {\n const ids = items.map((i) => i.id).sort((a, b) => {\n if (a == b) return 0;\n return a < b ? 1 : -1;\n });\n if (ids.length > this.maxItems) {\n return Promise.all(ids.slice(this.maxItems).map((id) => this.delete(id))).then(() => obj);\n }\n }\n return obj;\n });\n });\n }\n\n delete(key: any) {\n return getInstanceWithPromise((database: IDBDatabase, resolve: any, reject: any) => {\n const request = database.transaction([this.name], 'readwrite').objectStore(this.name).delete(key);\n request.onsuccess = () => {\n resolve(request.result);\n };\n request.onerror = () => {\n reject(request.error);\n };\n });\n }\n\n getAll() {\n return getInstanceWithPromise((database: IDBDatabase, resolve: any, reject: any) => {\n const result: any[] = [];\n const cursor = database.transaction(this.name).objectStore(this.name).openCursor();\n cursor.onsuccess = (ev) => {\n const cursorResult = (ev.target as any).result;\n if (cursorResult) {\n if (cursorResult.value) {\n result.push(cursorResult.value);\n }\n cursorResult.continue();\n } else {\n resolve(result);\n }\n };\n cursor.onerror = () => {\n reject(cursor.error);\n };\n });\n }\n}\n\nexport class LogLog extends LogBase {\n protected name = STORE_NAME_MAIN_LOG;\n protected maxItems = 100;\n protected environment = (typeof self !== 'undefined' && self.registration) ? 'worker' : 'browser';\n add(type: string, message: any, additional?: any) {\n const obj: any = {\n type,\n environment: this.environment,\n message: `${message}`,\n date: new Date(),\n };\n if (message instanceof Error) {\n obj.stack = message.stack;\n }\n if (additional) {\n obj.additional = additional;\n }\n return this._add(obj);\n }\n}\n\nexport class LogMessage extends LogBase {\n protected name = STORE_NAME_MESSAGE_LOG;\n protected maxItems = 25;\n add(log: any) {\n return this._add({\n ...log,\n date: new Date(),\n });\n }\n}\n\nexport const keyValue = createKeyValue(STORE_NAME_KEY_VALUE);\nexport const log = new LogLog();\nexport const message = new LogMessage();\n","import { log as logStorage } from './storage';\n\nconst levels: { [key: string]: number } = {\n error: 1,\n info: 2,\n debug: 3,\n};\n\nlet limitLevel = 3;\n\ntype TWriteType = 'error' | 'apirequest' | 'info';\n\ninterface ILogger {\n setLevel(level: string): void;\n error(...args: any[]): void;\n info(...args: any[]): void;\n debug(...args: any[]): void;\n write(type: TWriteType, message: any, additional?: any): Promise<void>;\n isManualLevel(): boolean;\n [key: string]: any;\n}\n\nconst Logger: ILogger = {\n setLevel(level) {\n if (!levels[level]) {\n level = 'error';\n }\n limitLevel = levels[level];\n },\n write(type: TWriteType, message: any, additional?: any) {\n if (type === 'error') {\n this.error(message);\n } else {\n this.info(message);\n }\n return logStorage.add(type, message, additional);\n },\n} as ILogger;\n\nObject.keys(levels).forEach((levelName: string) => {\n const levelNumber = levels[levelName];\n Logger[levelName] = (...args: any[]) => {\n if (levelNumber <= limitLevel) {\n console.groupCollapsed(levelName);\n console.info('', ...args);\n console.trace('trace');\n console.groupEnd();\n }\n };\n});\n\nexport function logAndThrowError(error: string) {\n const logText = new Error(error);\n Logger.write('error', logText, 'logAndThrowError');\n throw logText;\n}\n\nexport function logAndRejectError(error: string, reject: (e: any) => void) {\n const logText = new Error(error);\n Logger.write('error', logText, 'logAndRejectError');\n reject(logText);\n}\n\nexport { Logger };\n","import { type WebPopupFormSubmitHandler, type WebPopupFormSubmitResult } from 'smart-blocks-utils';\n\nimport { SUBSCRIPTION_FORMS_API_URL } from './constants';\nimport { Logger } from '../../core/logger';\n\n// The subscription-form service client for popup-embedded forms\n// (email-subscription-form slots). Same endpoints and payloads the hosted\n// <pushwoosh-subscribe-widget> uses — the popup reader only renders the\n// fields; subscribing an email goes through the service so form stats,\n// double opt-in and tag mapping keep working.\n\nconst SUBMIT_RESULTS: Record<string, WebPopupFormSubmitResult> = {\n SUBMIT_FORM_RESULT_SUBSCRIBED: 'subscribed',\n SUBMIT_FORM_RESULT_CONFIRM_EMAIL: 'confirm-email',\n SUBMIT_FORM_RESULT_ALREADY_SUBSCRIBED: 'already-subscribed',\n};\n\nconst formUrl = (formCode: string, action: string): string => (\n `${SUBSCRIPTION_FORMS_API_URL}/forms/code/${encodeURIComponent(formCode)}${action}`\n);\n\n/**\n * The reader's `onSubmitForm` handler: POST the slot's payload to the bound\n * form's submit endpoint. Throws on transport errors and unrecognized\n * results — the form slot shows its generic retryable error then; the\n * reader doesn't log, so the failure is recorded here before rethrowing.\n */\nexport const submitSubscriptionForm: WebPopupFormSubmitHandler = async (formCode, payload) => {\n try {\n const response = await fetch(formUrl(formCode, '/submit'), {\n method: 'POST',\n headers: { 'Content-Type': 'application/json' },\n // userId mirrors the hosted widget's convention: same as the email.\n body: JSON.stringify({ ...payload, userId: payload.email }),\n });\n if (!response.ok) {\n throw new Error(`Subscription form submit failed: HTTP ${response.status}`);\n }\n const data = await response.json() as { result?: string };\n const result = SUBMIT_RESULTS[data.result ?? ''];\n if (!result) {\n throw new Error(`Subscription form submit failed: unexpected result \"${data.result}\"`);\n }\n return result;\n } catch (error) {\n Logger.error(error, `Failed to submit subscription form \"${formCode}\"`);\n throw error;\n }\n};\n\n/**\n * Fire-and-forget view stat for a popup-embedded form — the denominator of\n * the form's conversion rate. Never blocks or breaks the popup itself.\n */\nexport const recordSubscriptionFormView = (formCode: string, hwid: string): void => {\n fetch(formUrl(formCode, '/view'), {\n method: 'POST',\n headers: { 'Content-Type': 'application/json' },\n body: JSON.stringify({ code: formCode, userId: hwid, hwid }),\n }).catch((error) => {\n Logger.error(error, `Failed to record subscription form view for \"${formCode}\"`);\n });\n};\n","import { render } from 'preact';\nimport {\n parseWebPopupJson, resolveWebPopupPages, WebPopupReader,\n type WebPopupParams,\n} from 'smart-blocks-utils';\n\nimport { submitSubscriptionForm } from './subscriptionFormApi';\n\n/**\n * Parse stored popup json into the renderable model. Returns null for\n * anything that is not a supported {version: 1, params} popup with at least\n * one resolvable page — including legacy pre-engine content (no `version`\n * field), which is deliberately unrenderable.\n */\nexport const parseWebPopupContent = (json: string): WebPopupParams | null => {\n const parsed = parseWebPopupJson(json);\n if (!parsed) {\n return null;\n }\n\n if (resolveWebPopupPages(parsed.params).length === 0) {\n return null;\n }\n\n return parsed.params;\n};\n\n/**\n * Mount the popup into the shadow-root container. The reader draws the whole\n * chrome itself: page-dim overlay (click closes), fixed viewport placement,\n * enter animation, the close button — and owns page switching for multi-page\n * popups (buttons with a `page` action). Email-subscription-form slots\n * submit through the subscription-form service.\n */\nexport const renderWebPopup = (\n container: HTMLElement,\n params: WebPopupParams,\n onRequestClose: () => void,\n): void => {\n render(\n <WebPopupReader\n params={params}\n mode=\"live\"\n onRequestClose={onRequestClose}\n onSubmitForm={submitSubscriptionForm}\n />,\n container,\n );\n};\n","import { SUBSCRIPTION_FORMS_WIDGET_TAG, SUBSCRIPTION_FORMS_WIDGET_URL } from './constants';\n\nconst WIDGET_DEFINITION_TIMEOUT_MS = 10000;\n\nlet loadPromise: Promise<void> | null = null;\n\n/**\n * Loads the subscription forms widget (an ES module that registers the\n * <pushwoosh-subscribe-widget> custom element) exactly once per page.\n * Resolves when the custom element is defined.\n *\n * The wait is bounded by a timeout: a script that loads but throws during\n * evaluation never registers the element and never fires the script `error`\n * event, so `customElements.whenDefined()` alone would hang forever (and with\n * it the whole web popups pipeline). On failure the memoized promise is reset\n * so the next popup can retry.\n */\nexport function ensureSubscriptionFormsWidgetLoaded(): Promise<void> {\n if (loadPromise) {\n return loadPromise;\n }\n\n if (customElements.get(SUBSCRIPTION_FORMS_WIDGET_TAG)) {\n loadPromise = Promise.resolve();\n return loadPromise;\n }\n\n loadPromise = new Promise<void>((resolve, reject) => {\n let timeoutId = 0;\n\n const fail = (error: Error): void => {\n window.clearTimeout(timeoutId);\n loadPromise = null;\n reject(error);\n };\n\n timeoutId = window.setTimeout(() => {\n fail(new Error(`Subscription forms widget did not define <${SUBSCRIPTION_FORMS_WIDGET_TAG}> within ${WIDGET_DEFINITION_TIMEOUT_MS}ms`));\n }, WIDGET_DEFINITION_TIMEOUT_MS);\n\n const script = document.createElement('script');\n script.type = 'module';\n script.src = SUBSCRIPTION_FORMS_WIDGET_URL;\n script.onerror = () => {\n fail(new Error(`Failed to load subscription forms widget script: ${SUBSCRIPTION_FORMS_WIDGET_URL}`));\n };\n document.head.appendChild(script);\n\n customElements.whenDefined(SUBSCRIPTION_FORMS_WIDGET_TAG).then(() => {\n window.clearTimeout(timeoutId);\n resolve();\n });\n });\n\n return loadPromise;\n}\n","import { collectWebPopupFormCodes, type WebPopupParams } from 'smart-blocks-utils';\n\nimport { POPUP_HOST_Z_INDEX, SUBSCRIPTION_FORMS_WIDGET_TAG, WEB_POPUPS_WIDGET_NAMESPACE } from './constants';\nimport { parseWebPopupContent, renderWebPopup } from './renderer';\nimport { recordSubscriptionFormView } from './subscriptionFormApi';\nimport { ensureSubscriptionFormsWidgetLoaded } from './subscriptionFormsWidgetLoader';\nimport { type PageRule, type WebPopup } from './types';\nimport { Logger } from '../../core/logger';\nimport { type Pushwoosh } from '../../core/Pushwoosh';\n\ntype LoadedWebPopup =\n | { popup: WebPopup; kind: 'content'; parsed: WebPopupParams }\n | { popup: WebPopup; kind: 'subscription-form'; formCode: string };\n\nexport class WebPopupsWidget {\n private readonly pw: Pushwoosh;\n\n private isRecurringVisitor = false;\n\n private readonly loadedPopups = new Map<string, LoadedWebPopup>();\n\n private readonly pendingTimers = new Map<string, { timeoutId: number; loaded: LoadedWebPopup }>();\n\n private isNavigationSubscribed = false;\n\n private openPopupsCount = 0;\n\n private bodyOverflowBeforeLock: string | null = null;\n\n private lockBodyScroll(): void {\n if (this.openPopupsCount === 0) {\n this.bodyOverflowBeforeLock = document.body.style.overflow;\n document.body.style.overflow = 'hidden';\n }\n this.openPopupsCount += 1;\n }\n\n private unlockBodyScroll(): void {\n this.openPopupsCount = Math.max(0, this.openPopupsCount - 1);\n if (this.openPopupsCount === 0 && this.bodyOverflowBeforeLock !== null) {\n document.body.style.overflow = this.bodyOverflowBeforeLock;\n this.bodyOverflowBeforeLock = null;\n }\n }\n\n constructor(pw: Pushwoosh) {\n this.pw = pw;\n }\n\n public async run(): Promise<void> {\n const { pw } = this;\n\n await pw.api.ensureDeviceRegistered();\n\n this.isRecurringVisitor = await pw.data.getIsRecurringVisitor();\n\n const webPopups = await pw.api.getPopupForms();\n\n const results = await Promise.allSettled(webPopups.map((webPopup) => this.loadWebPopup(webPopup)));\n results.forEach((result, index) => {\n if (result.status === 'rejected') {\n Logger.error(result.reason, `Failed to load web popup \"${webPopups[index].code}\"`);\n }\n });\n\n this.subscribeToNavigation();\n this.renderForCurrentPage();\n\n await pw.data.setIsRecurringVisitor(true);\n }\n\n private async loadWebPopup(webPopup: WebPopup): Promise<void> {\n const canBeShown = await this.checkStrongCondition(webPopup);\n if (!canBeShown) {\n return;\n }\n\n if (webPopup.subscription_form_code) {\n // The popup shows a hosted subscription form; the form itself is fetched\n // and rendered by the external widget, we only need its script ready.\n await ensureSubscriptionFormsWidgetLoaded();\n this.loadedPopups.set(webPopup.code, {\n popup: webPopup,\n kind: 'subscription-form',\n formCode: webPopup.subscription_form_code,\n });\n return;\n }\n\n if (!webPopup.popup_form_content_code) {\n Logger.error(\n new Error('Web popup has no source'),\n `Web popup \"${webPopup.code}\" has neither content nor subscription form; skipping`,\n );\n return;\n }\n\n const content = await this.pw.api.getPopupFormContent(webPopup.popup_form_content_code);\n const parsed = parseWebPopupContent(content.json);\n if (!parsed) {\n // Legacy / unknown format — this popup is broken and never shows.\n Logger.error(\n new Error('Unsupported popup content format'),\n `Web popup \"${webPopup.code}\" content is not a supported {version, params} popup; skipping`,\n );\n return;\n }\n\n this.loadedPopups.set(webPopup.code, { popup: webPopup, kind: 'content', parsed });\n }\n\n private renderForCurrentPage(): void {\n this.cancelPendingForUnmatchedPages();\n\n const toRender: Array<[string, LoadedWebPopup]> = [];\n\n this.loadedPopups.forEach((loaded, code) => {\n if (this.checkSoftCondition(loaded.popup)) {\n toRender.push([code, loaded]);\n }\n });\n\n toRender.forEach(([code, loaded]) => {\n this.addToQueue(loaded);\n this.loadedPopups.delete(code);\n });\n }\n\n private cancelPendingForUnmatchedPages(): void {\n this.pendingTimers.forEach(({ timeoutId, loaded }, code) => {\n if (this.checkSoftCondition(loaded.popup)) {\n return;\n }\n\n window.clearTimeout(timeoutId);\n this.pendingTimers.delete(code);\n this.loadedPopups.set(code, loaded);\n });\n }\n\n private subscribeToNavigation(): void {\n if (this.isNavigationSubscribed) {\n return;\n }\n\n this.isNavigationSubscribed = true;\n\n const onNavigate = (): void => this.renderForCurrentPage();\n\n const nav = (window as Window & { navigation?: EventTarget }).navigation;\n if (nav && typeof nav.addEventListener === 'function') {\n nav.addEventListener('currententrychange', onNavigate);\n return;\n }\n\n window.addEventListener('popstate', onNavigate);\n window.addEventListener('hashchange', onNavigate);\n\n // Programmatic pushState/replaceState fires no event; poll location instead\n // of monkey-patching history so SPA routers stay untouched.\n let lastHref = window.location.href;\n window.setInterval(() => {\n if (window.location.href !== lastHref) {\n lastHref = window.location.href;\n onNavigate();\n }\n }, 500);\n }\n\n private async checkStrongCondition(webPopup: WebPopup): Promise<boolean> {\n const conditions: Array<boolean> = await Promise.all([\n this.checkCanBeShownByDeviceTypeCondition(webPopup),\n this.checkCanBeShownByFrequencyCondition(webPopup),\n this.checkCanBeShownByVisitorsTypeCondition(webPopup),\n ]);\n\n return conditions.every((condition) => condition);\n }\n\n private checkSoftCondition(webPopup: WebPopup): boolean {\n return this.checkCanBeShownByMatchingPagesCondition(webPopup);\n }\n\n private checkCanBeShownByDeviceTypeCondition(webPopup: WebPopup): boolean {\n const { device_type: deviceType } = webPopup;\n\n const formFactor = this.pw.platformChecker.formFactor;\n if (deviceType === 'ALL') {\n return true;\n }\n\n return deviceType === formFactor;\n }\n\n private async checkCanBeShownByFrequencyCondition(webPopup: WebPopup): Promise<boolean> {\n const { frequency, code } = webPopup;\n\n if (frequency === 'ONCE') {\n const shown = await this.pw.data.getShownWebPopups();\n return !shown.includes(code);\n }\n\n if (frequency === 'ONCE_PER_SESSION') {\n return sessionStorage.getItem(this.getSessionStorageKey(code)) === null;\n }\n\n return true;\n }\n\n private checkCanBeShownByMatchingPagesCondition(webPopup: WebPopup): boolean {\n const { matching_pages: matchingPages, matching_page_rules: matchingPageRules, excluded_pages: excludedPages } = webPopup;\n const path = window.location.pathname;\n\n // \"Specified pages\": operator-aware rules preferred, legacy exact list as fallback.\n if (matchingPageRules && matchingPageRules.length > 0) {\n return matchingPageRules.some((rule) => this.matchPageRule(path, rule));\n }\n\n if (matchingPages && matchingPages.length > 0) {\n return matchingPages.includes(path);\n }\n\n if (excludedPages && excludedPages.length > 0) {\n return !excludedPages.some((rule) => this.matchPageRule(path, rule));\n }\n\n return true;\n }\n\n private matchPageRule(path: string, rule: PageRule): boolean {\n switch (rule.operator) {\n case 'EQUALS':\n return path === rule.path;\n case 'STARTS_WITH':\n return path.startsWith(rule.path);\n default:\n // Unknown operator: skip the rule (fail-open) rather than hide/crash.\n return false;\n }\n }\n\n private checkCanBeShownByVisitorsTypeCondition(webPopup: WebPopup): boolean {\n const { visitors_type: visitorsType } = webPopup;\n\n if (visitorsType === 'NEW') {\n return !this.isRecurringVisitor;\n }\n\n if (visitorsType === 'RECURRING') {\n return this.isRecurringVisitor;\n }\n\n return true;\n }\n\n private async markAsShown(webPopup: WebPopup): Promise<void> {\n this.pw.api.recordPopupFormEvent(webPopup.code, 2).catch((error) => {\n Logger.error(error, `Failed to record web popup shown event for \"${webPopup.code}\"`);\n });\n const { frequency, code } = webPopup;\n\n if (frequency === 'ONCE') {\n await this.pw.data.addShownWebPopup(code);\n return;\n }\n\n if (frequency === 'ONCE_PER_SESSION') {\n sessionStorage.setItem(this.getSessionStorageKey(code), '1');\n }\n }\n\n private getSessionStorageKey(code: string): string {\n return `${WEB_POPUPS_WIDGET_NAMESPACE}.shown.${code}`;\n }\n\n private addToQueue(loaded: LoadedWebPopup): void {\n const webPopup = loaded.popup;\n\n this.pw.api.recordPopupFormEvent(webPopup.code, 1).catch((error) => {\n Logger.error(error, `Failed to record web popup queued event for \"${webPopup.code}\"`);\n });\n\n const timeoutId = window.setTimeout(() => {\n this.pendingTimers.delete(webPopup.code);\n\n // The host is pointer-transparent: the reader's overlay / popup box\n // re-enable pointer events themselves, so a corner banner without a\n // dim never blocks the page underneath.\n const host = document.createElement('div');\n host.id = `${WEB_POPUPS_WIDGET_NAMESPACE}-${webPopup.code}`;\n host.style.position = 'fixed';\n host.style.inset = '0';\n host.style.zIndex = String(POPUP_HOST_Z_INDEX);\n host.style.pointerEvents = 'none';\n document.body.appendChild(host);\n\n const shadow = host.attachShadow({ mode: 'open' });\n const container = document.createElement('div');\n shadow.appendChild(container);\n\n // Only a dimmed (modal) popup locks the page scroll; banners and bars\n // leave the page usable. A subscription form popup is always modal.\n const modal = loaded.kind === 'subscription-form' || !!loaded.parsed.overlay;\n if (modal) {\n this.lockBodyScroll();\n }\n\n const closePopup = (): void => {\n if (modal) {\n this.unlockBodyScroll();\n }\n host.remove();\n this.pw.dispatchEvent('hide-web-popup', { code: webPopup.code });\n };\n\n if (loaded.kind === 'subscription-form') {\n // The widget draws only the form card (hosted mode); the SDK provides\n // the backdrop, centering and close-on-backdrop-click.\n this.renderSubscriptionForm(container, loaded.formCode, closePopup);\n } else {\n // The reader draws the whole chrome (overlay that closes on click,\n // placement, animation, the close button and close-action buttons).\n renderWebPopup(container, loaded.parsed, closePopup);\n\n // Embedded email-subscription forms count a view per showing — the\n // denominator of the form's conversion stats (the hosted-widget path\n // above records its own views).\n const formCodes = collectWebPopupFormCodes(loaded.parsed);\n if (formCodes.length > 0) {\n this.pw.data.getHwid()\n .then((hwid) => formCodes.forEach((formCode) => recordSubscriptionFormView(formCode, hwid)))\n .catch((error) => {\n Logger.error(error, `Failed to record subscription form views for web popup \"${webPopup.code}\"`);\n });\n }\n }\n\n this.markAsShown(webPopup).catch((error) => {\n Logger.error(error, `Failed to mark web popup \"${webPopup.code}\" as shown`);\n });\n this.pw.dispatchEvent('show-web-popup', { code: webPopup.code });\n }, webPopup.delay * 1000);\n\n this.pendingTimers.set(webPopup.code, { timeoutId, loaded });\n }\n\n private renderSubscriptionForm(container: HTMLElement, formCode: string, onRequestClose: () => void): void {\n const backdrop = document.createElement('div');\n backdrop.style.position = 'absolute';\n backdrop.style.inset = '0';\n backdrop.style.background = 'rgba(0, 0, 0, 0.5)';\n backdrop.style.pointerEvents = 'auto';\n backdrop.style.display = 'flex';\n backdrop.style.alignItems = 'center';\n backdrop.style.justifyContent = 'center';\n backdrop.style.padding = '20px';\n backdrop.style.boxSizing = 'border-box';\n backdrop.addEventListener('click', (event) => {\n if (event.target === backdrop) {\n onRequestClose();\n }\n });\n\n const widget = document.createElement(SUBSCRIPTION_FORMS_WIDGET_TAG) as HTMLElement & { formCode: string };\n widget.formCode = formCode;\n // Hosted mode: the widget skips its own frequency/delay/overlay and\n // dispatches `esw-close` when it wants (or needs) to be dismissed.\n widget.setAttribute('hosted-mode', '');\n widget.addEventListener('esw-close', onRequestClose);\n\n backdrop.appendChild(widget);\n container.appendChild(backdrop);\n }\n}\n"],"names":["root","factory","exports","module","define","amd","a","i","this","__webpack_require__","definition","Array","isArray","length","key","binding","o","Object","defineProperty","enumerable","value","get","obj","prop","prototype","hasOwnProperty","call","Symbol","toStringTag","SAFE_URL_PROTOCOL","WEB_POPUP_TEXT_COLOR","WEB_POPUP_DEFAULT_COLORS","WEB_POPUP_TEXT_VARIANT_STYLES","h1","fontSize","fontWeight","lineHeight","h2","h3","body","caption","eyebrow","letterSpacing","icon","INVERSE_TEXT_ALPHAS","webPopupTextColor","variant","colors","inverse","color","alpha","hex","exec","full","split","map","c","join","r","g","b","parseInt","slice","inverseColorAt","textInverse","textSecondary","text","WEB_POPUP_BUTTON_SLOT_PADDING","WEB_POPUP_FORM_SLOT_PADDING","webPopupButtonPillStyle","accent","display","boxSizing","width","padding","borderRadius","fontFamily","textAlign","textDecoration","cursor","backgroundColor","border","WEB_POPUP_FORM_ERROR_COLOR","webPopupFormInputStyle","borderColor","outline","WEB_POPUP_FORM_DEFAULTS","WEB_POPUP_KEYFRAMES","CONTAINER_TYPES","ORDERS","ALIGN_ITEMS","JUSTIFY_CONTENT","TEXT_ALIGNS","TONES","MAX_LENGTH_PX","LENGTH_UNIT_MAX","px","em","rem","LENGTH_PATTERN","TRACK_UNIT_MAX","fr","TRACK_PATTERN","TRACK_KEYWORDS","oneOf","allowed","includes","undefined","cssLength","Number","isFinite","Math","min","max","match","trim","amount","unit","parseFloat","BOX_SIDES","trackSize","token","nonEmptyString","containerProps","raw","props","gap","whole","sides","side","sideValue","keys","boxPadding","alignItems","justifyContent","alignContent","backgroundImage","sizes","isInteger","tokens","clamped","every","trackSizes","normalizeNode","depth","budget","nodes","node","type","content","out","align","tone","image","children","child","normalized","push","order","reverse","normalizeWebPopupLayout","WEB_POPUP_VALUE_KEY_PATTERN","VALUE_REF_PATTERN","substituteString","values","substituteWebPopupLayoutValues","layout","substituteNode","BINDING_PROPS","Set","entries","has","webPopupCssLength","webPopupTracksValue","childCount","webPopupBackgroundImageStyle","src","dim","JSON","stringify","scrim","backgroundSize","backgroundPosition","webPopupContainerStyle","backgroundSrc","backgroundDim","style","minWidth","gridAutoFlow","gridTemplateColumns","gridTemplateRows","top","right","bottom","left","webPopupPaddingValue","assign","safeUrl","url","trimmed","startsWith","test","webPopupLinkTargetAttrs","target","rel","SANITIZE_ALLOWED_TAGS","copySanitized","from","to","doc","childNodes","nodeType","appendChild","createTextNode","textContent","el","tagName","clean","createElement","toLowerCase","href","getAttribute","setAttribute","sanitizeWebPopupHtml","html","parsed","DOMParser","parseFromString","innerHTML","colorString","normalizeWebPopupColors","params","background","IMAGE_FITS","normalizeImages","img","label","mediaId","fit","blur","LENGTH_CONTROL_UNITS","finiteNumber","normalizeValueControl","control","kind","units","filter","u","ranges","entry","normalizeControlRanges","options","option","normalizeWebPopupValues","some","v","webPopupValuesMap","fromEntries","FORM_FIELD_KINDS","BUTTON_VARIANTS","normalizeFormFields","field","f","placeholder","required","tag","unshift","normalizeSlots","slot","formCode","fields","submitLabel","submitVariant","privacy","checkboxLabel","linkLabel","successMessage","confirmEmailMessage","action","normalizeContents","zone","slots","validSize","resolveWebPopupPageSize","own","shared","axis","resolved","resolveWebPopupPages","page","pages","height","images","contents","placementMaxSize","placement","offset","WEB_POPUPS_WIDGET_NAMESPACE","SUBSCRIPTION_FORMS_WIDGET_URL","SUBSCRIPTION_FORMS_WIDGET_TAG","n","preact_module_l","e","s","h","p","y","d","w","_","m","l","parentNode","removeChild","k","t","arguments","defaultProps","x","ref","__k","__","__b","__e","__c","constructor","__v","__i","__u","vnode","S","C","context","$","I","__P","__d","q","__n","namespaceURI","D","P","base","A","H","__r","debounceRendering","sort","shift","L","T","J","j","nextSibling","String","O","K","insertBefore","F","z","setProperty","N","cssText","replace","addEventListener","removeEventListener","removeAttribute","V","event","M","render","contextType","__E","Q","sub","state","__h","_sb","__s","getDerivedStateFromProps","componentWillMount","componentDidMount","componentWillReceiveProps","shouldComponentUpdate","apply","componentWillUpdate","componentDidUpdate","getChildContext","getSnapshotBeforeUpdate","E","then","indexOf","B","G","diffed","localName","document","createElementNS","is","__m","data","defaultValue","attributes","name","__html","current","unmount","componentWillUnmount","R","documentElement","firstChild","U","W","getDerivedStateFromError","setState","componentDidCatch","forceUpdate","Promise","bind","resolve","setTimeout","random","toString","jsxRuntime_module_f","jsxRuntime_module_u","__source","__self","hooks_module_t","hooks_module_r","hooks_module_u","hooks_module_i","hooks_module_o","hooks_module_f","hooks_module_c","hooks_module_e","hooks_module_a","hooks_module_v","hooks_module_l","hooks_module_m","hooks_module_p","hooks_module_s","__H","hooks_module_d","hooks_module_y","hooks_module_D","__N","__f","hooks_module_h","hooks_module_C","hooks_module_","hooks_module_A","hooks_module_T","hooks_module_F","concat","hooks_module_q","hooks_module_x","hooks_module_P","useDebugValue","hooks_module_g","hooks_module_j","hooks_module_z","hooks_module_B","requestAnimationFrame","hooks_module_w","hooks_module_k","clearTimeout","cancelAnimationFrame","compat_module_g","compat_module_E","compat_module_C","compat_module_R","compat_module_x","compat_module_w","compat_module_k","compat_module_I","compat_module_M","isPureReactComponent","compat_module_T","compat_module_A","for","compat_module_F","compat_module_L","forEach","count","only","toArray","compat_module_O","compat_module_U","compat_module_V","compat_module_W","compat_module_P","compat_module_j","__a","compat_module_B","__z","__R","__O","pop","fallback","compat_module_H","delete","revealOrder","size","Z","Y","contains","splice","Map","set","compat_module_q","compat_module_G","compat_module_J","compat_module_K","compat_module_Q","compat_module_X","isReactComponent","configurable","writable","en","persist","isPropagationStopped","cancelBubble","isDefaultPrevented","defaultPrevented","nativeEvent","rn","un","class","on","multiple","selected","className","$$typeof","ln","cn","fn","ReactCurrentDispatcher","readContext","useCallback","useContext","useDeferredValue","useEffect","useId","useImperativeHandle","useInsertionEffect","useLayoutEffect","useMemo","useReducer","useRef","useState","useSyncExternalStore","useTransition","hn","gn","startTransition","version","Children","hydrate","unmountComponentAtNode","createPortal","containerInfo","createContext","add","Provider","__l","Consumer","createFactory","cloneElement","createRef","Fragment","isValidElement","isElement","isFragment","isMemo","displayName","findDOMNode","Component","PureComponent","memo","forwardRef","flushSync","unstable_batchedUpdates","StrictMode","Suspense","SuspenseList","lazy","default","__SECRET_INTERNALS_DO_NOT_USE_OR_YOU_WILL_BE_FIRED","ANIMATION_STYLE","none","fade","slide","TextSlotView","dangerouslySetInnerHTML","ButtonSlotView","onRequestClose","onPageChange","pill","wrapper","onClick","FORM_EMAIL_PATTERN","FORM_INPUT_TYPES","email","phone","FORM_AUTOCOMPLETE","firstName","lastName","PRIVACY_ERROR_KEY","FormSlotView","onSubmitForm","setValues","policyAccepted","setPolicyAccepted","focusedKey","setFocusedKey","errors","setErrors","phase","setPhase","captionColor","captionStyle","errorStyle","paddingTop","messageStyle","submitting","privacyHref","opacity","noValidate","margin","onSubmit","preventDefault","found","payload","customFields","result","submit","error","paddingBottom","autoComplete","disabled","onFocus","onBlur","onChange","setFieldValue","currentTarget","prev","checked","flexShrink","ContentNodeView","leaf","find","renderZone","ImageNodeView","renderImage","objectFit","alt","LayoutNodeView","bgKey","index","inner","backdropFilter","WebkitBackdropFilter","WebPopupBox","leafRenderers","animatePage","position","overflow","boxShadow","transition","overflowY","pageStyle","animation","minHeight","CloseButton","fixedContainerStyle","maxWidth","maxHeight","pointerEvents","tx","ty","transform","anim","WebPopupReader","mode","pageKey","setPageKey","Image","startPage","startPageOf","overlay","inset","STORE_NAME_KEY_VALUE","STORE_NAME_MESSAGE_LOG","STORE_NAME_INBOX_MESSAGES","storeCreatorDecorator","storeCreator","database","objectStoreNames","initial","createObjectStore","keyPath","logStore","autoIncrement","createIndex","unique","statusIndex","store","multiEntry","Migrations","all","MigrationExecutor","db","migrationsBuilder","applyMigrations","applyMigrationsPack","migrationsPack","migration","onversionchange","console","info","close","databasePromise","getInstanceWithPromise","executor","reject","request","indexedDB","open","onsuccess","onerror","onupgradeneeded","LogBase","_add","transaction","objectStore","getAll","items","ids","id","maxItems","openCursor","ev","cursorResult","continue","log","environment","self","registration","message","additional","date","Date","Error","stack","levels","debug","limitLevel","Logger","setLevel","level","write","levelName","levelNumber","args","groupCollapsed","trace","groupEnd","SUBMIT_RESULTS","SUBMIT_FORM_RESULT_SUBSCRIBED","SUBMIT_FORM_RESULT_CONFIRM_EMAIL","SUBMIT_FORM_RESULT_ALREADY_SUBSCRIBED","formUrl","encodeURIComponent","submitSubscriptionForm","async","response","fetch","method","headers","userId","ok","status","json","parseWebPopupContent","parse","candidate","parseWebPopupJson","loadPromise","WebPopupsWidget","lockBodyScroll","openPopupsCount","bodyOverflowBeforeLock","unlockBodyScroll","pw","isRecurringVisitor","loadedPopups","pendingTimers","isNavigationSubscribed","run","api","ensureDeviceRegistered","getIsRecurringVisitor","webPopups","getPopupForms","allSettled","webPopup","loadWebPopup","reason","code","subscribeToNavigation","renderForCurrentPage","setIsRecurringVisitor","checkStrongCondition","subscription_form_code","customElements","timeoutId","fail","window","script","head","whenDefined","popup","popup_form_content_code","getPopupFormContent","cancelPendingForUnmatchedPages","toRender","loaded","checkSoftCondition","addToQueue","onNavigate","nav","navigation","lastHref","location","setInterval","checkCanBeShownByDeviceTypeCondition","checkCanBeShownByFrequencyCondition","checkCanBeShownByVisitorsTypeCondition","condition","checkCanBeShownByMatchingPagesCondition","device_type","deviceType","formFactor","platformChecker","frequency","getShownWebPopups","sessionStorage","getItem","getSessionStorageKey","matching_pages","matchingPages","matching_page_rules","matchingPageRules","excluded_pages","excludedPages","path","pathname","rule","matchPageRule","operator","visitors_type","visitorsType","markAsShown","recordPopupFormEvent","catch","setItem","addShownWebPopup","host","zIndex","shadow","attachShadow","container","modal","closePopup","remove","dispatchEvent","renderSubscriptionForm","renderWebPopup","formCodes","collectWebPopupFormCodes","getHwid","hwid","recordSubscriptionFormView","delay","backdrop","widget"],"sourceRoot":""}
|
|
1
|
+
{"version":3,"file":"widget-web-popups.js","mappings":"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","sources":["webpack://web-push-notifications/webpack/universalModuleDefinition","webpack://web-push-notifications/webpack/bootstrap","webpack://web-push-notifications/webpack/runtime/define property getters","webpack://web-push-notifications/webpack/runtime/hasOwnProperty shorthand","webpack://web-push-notifications/webpack/runtime/make namespace object","webpack://web-push-notifications/./node_modules/smart-blocks-utils/dist/views/WebPopup/constants.js","webpack://web-push-notifications/./node_modules/smart-blocks-utils/dist/views/WebPopup/layout.js","webpack://web-push-notifications/./node_modules/smart-blocks-utils/dist/views/WebPopup/helpers.js","webpack://web-push-notifications/./src/widgets/WebPopups/constants.ts","webpack://web-push-notifications/./node_modules/preact/dist/preact.module.js","webpack://web-push-notifications/./node_modules/preact/jsx-runtime/dist/jsxRuntime.module.js","webpack://web-push-notifications/./node_modules/preact/hooks/dist/hooks.module.js","webpack://web-push-notifications/./node_modules/preact/compat/dist/compat.module.js","webpack://web-push-notifications/./node_modules/smart-blocks-utils/dist/views/WebPopup/WebPopupReader.js","webpack://web-push-notifications/./src/modules/storage/migrations/constants.ts","webpack://web-push-notifications/./src/modules/storage/migrations/helpers.ts","webpack://web-push-notifications/./src/modules/storage/migrations/initial.ts","webpack://web-push-notifications/./src/modules/storage/migrations/Migrations.ts","webpack://web-push-notifications/./src/modules/storage/migrations/MigrationExecutor.ts","webpack://web-push-notifications/./src/core/storage.ts","webpack://web-push-notifications/./src/core/logger.ts","webpack://web-push-notifications/./src/widgets/WebPopups/subscriptionFormApi.ts","webpack://web-push-notifications/./src/widgets/WebPopups/renderer.tsx","webpack://web-push-notifications/./src/widgets/WebPopups/subscriptionFormsWidgetLoader.ts","webpack://web-push-notifications/./src/widgets/WebPopups/WebPopupsWidget.ts"],"sourcesContent":["(function webpackUniversalModuleDefinition(root, factory) {\n\tif(typeof exports === 'object' && typeof module === 'object')\n\t\tmodule.exports = factory();\n\telse if(typeof define === 'function' && define.amd)\n\t\tdefine([], factory);\n\telse {\n\t\tvar a = factory();\n\t\tfor(var i in a) (typeof exports === 'object' ? exports : root)[i] = a[i];\n\t}\n})(this, () => {\nreturn ","// The require scope\nconst __webpack_require__ = {};\n\n","// define getter/value functions for harmony exports\n__webpack_require__.d = (exports, definition) => {\n\tif(Array.isArray(definition)) {\n\t\tvar i = 0;\n\t\twhile(i < definition.length) {\n\t\t\tvar key = definition[i++];\n\t\t\tvar binding = definition[i++];\n\t\t\tif(!__webpack_require__.o(exports, key)) {\n\t\t\t\tif(binding === 0) {\n\t\t\t\t\tObject.defineProperty(exports, key, { enumerable: true, value: definition[i++] });\n\t\t\t\t} else {\n\t\t\t\t\tObject.defineProperty(exports, key, { enumerable: true, get: binding });\n\t\t\t\t}\n\t\t\t} else if(binding === 0) { i++; }\n\t\t}\n\t} else {\n\t\tfor(var key in definition) {\n\t\t\tif(__webpack_require__.o(definition, key) && !__webpack_require__.o(exports, key)) {\n\t\t\t\tObject.defineProperty(exports, key, { enumerable: true, get: definition[key] });\n\t\t\t}\n\t\t}\n\t}\n};","__webpack_require__.o = (obj, prop) => (Object.prototype.hasOwnProperty.call(obj, prop))","// define __esModule on exports\n__webpack_require__.r = (exports) => {\n\tif(Symbol.toStringTag) {\n\t\tObject.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });\n\t}\n\tObject.defineProperty(exports, '__esModule', { value: true });\n};","/**\n * Current stored-format version (WebPopupJson.version). Version 2 = the\n * layout-tree format (nested containers + Content/Image leaves, named content\n * zones). Version 1 (flat layout + single slot list) is retired without a\n * migration path — v1 popups are treated as broken, same as the pre-engine\n * ai-builder format.\n */\nexport const WEB_POPUP_VERSION = 2;\n// Bomb protection for the embedded layout tree — the json travels through a\n// public API, so the parser refuses to walk pathological trees.\nexport const WEB_POPUP_LAYOUT_MAX_DEPTH = 10;\nexport const WEB_POPUP_LAYOUT_MAX_NODES = 100;\n/** Protocols allowed in button hrefs (plus relative `#`/`/`/`?` prefixes). */\nexport const SAFE_URL_PROTOCOL = /^(https?:|mailto:|tel:)/i;\nexport const WEB_POPUP_FONT_STACK = 'Inter, system-ui, -apple-system, BlinkMacSystemFont, \"Segoe UI\", sans-serif';\n// Palette defaults (mirror the editor's popup theme) — what a popup gets for\n// any WebPopupColors entry its json doesn't set.\nexport const WEB_POPUP_TEXT_COLOR = '#101828';\nexport const WEB_POPUP_TEXT_SECONDARY_COLOR = '#667085';\nexport const WEB_POPUP_ACCENT_COLOR = '#2970FF';\nexport const WEB_POPUP_BACKGROUND_COLOR = '#FFFFFF';\nexport const WEB_POPUP_DEFAULT_COLORS = {\n background: WEB_POPUP_BACKGROUND_COLOR,\n accent: WEB_POPUP_ACCENT_COLOR,\n text: WEB_POPUP_TEXT_COLOR,\n textSecondary: WEB_POPUP_TEXT_SECONDARY_COLOR,\n textInverse: '#FFFFFF',\n};\n/** Fallback width used when a fixed-width context needs a number anyway. */\nexport const WEB_POPUP_DEFAULT_WIDTH = 360;\n// Per-variant text styles — the same numbers the editor's canvas derives from\n// its theme presets. No colors here: those come from the popup palette via\n// webPopupTextColor below.\nexport const WEB_POPUP_TEXT_VARIANT_STYLES = {\n h1: { fontSize: 24, fontWeight: 600, lineHeight: 1.25 },\n h2: { fontSize: 18, fontWeight: 600, lineHeight: 1.3 },\n h3: { fontSize: 16, fontWeight: 600, lineHeight: 1.35 },\n body: { fontSize: 14, fontWeight: 'normal', lineHeight: 1.5 },\n caption: { fontSize: 12, fontWeight: 'normal', lineHeight: 1.4 },\n eyebrow: {\n fontSize: 11, fontWeight: 600, letterSpacing: '0.08em', lineHeight: 1.4,\n },\n icon: { fontSize: 24, lineHeight: 1.2 },\n};\n// Inverse-tone translucency per text style: headings full-strength, the\n// secondary variants toned down — same rhythm the palette's default white\n// set always had.\nconst INVERSE_TEXT_ALPHAS = {\n h1: 1,\n h2: 1,\n h3: 1,\n icon: 1,\n eyebrow: 0.8,\n body: 0.9,\n caption: 0.75,\n};\n// colors.textInverse at the given opacity. Only #rgb/#rrggbb can be blended;\n// any other author-supplied css color renders full-strength rather than\n// being guessed at.\nfunction inverseColorAt(color, alpha) {\n if (alpha >= 1)\n return color;\n const hex = /^#([0-9a-fA-F]{3}|[0-9a-fA-F]{6})$/.exec(color)?.[1];\n if (!hex)\n return color;\n const full = hex.length === 3 ? hex.split('').map((c) => c + c).join('') : hex;\n const [r, g, b] = [0, 2, 4].map((i) => parseInt(full.slice(i, i + 2), 16));\n return `rgba(${r}, ${g}, ${b}, ${alpha})`;\n}\n/**\n * A text slot's color: the palette's main/secondary role by variant; in an\n * 'inverse' zone (over a background image) — colors.textInverse, with the\n * secondary variants toned translucent. Undefined for a non-inverse 'icon'\n * (an emoji line inherits — its glyphs aren't recolorable anyway).\n */\nexport function webPopupTextColor(variant, colors, inverse) {\n if (inverse)\n return inverseColorAt(colors.textInverse, INVERSE_TEXT_ALPHAS[variant] ?? 1);\n if (variant === 'icon')\n return undefined;\n return variant === 'caption' || variant === 'eyebrow' ? colors.textSecondary : colors.text;\n}\n/** The dark fill under a container's background image while it loads. */\nexport const WEB_POPUP_BG_SECTION_FALLBACK = '#1D2939';\n// Content-zone rhythm: per-slot vertical paddings (horizontal spacing is the\n// layout tree's padding business). Per-slot paddings — not a grid gap — so\n// the editor's canvas, which renders slots as stacked blocks with these same\n// paddings, matches the runtime pixel for pixel.\nexport const WEB_POPUP_TEXT_SLOT_PADDING = '4px 0';\nexport const WEB_POPUP_BUTTON_SLOT_PADDING = '8px 0 4px';\nexport const WEB_POPUP_FORM_SLOT_PADDING = '8px 0 4px';\n/**\n * The button pill both button slots and a form slot's submit button render\n * with — buttons pair the accent with white (primary = accent fill + white\n * label, secondary = white fill + accent outline). Shared with the editor's\n * canvas (parity contract).\n */\nexport function webPopupButtonPillStyle(variant, accent) {\n return {\n display: 'block',\n boxSizing: 'border-box',\n width: '100%',\n padding: '10px 25px',\n borderRadius: 3,\n fontSize: 14,\n fontWeight: 600,\n fontFamily: 'inherit',\n lineHeight: 1.5,\n textAlign: 'center',\n textDecoration: 'none',\n cursor: 'pointer',\n ...(variant === 'secondary'\n ? { backgroundColor: '#FFFFFF', color: accent, border: `1px solid ${accent}` }\n : { backgroundColor: accent, color: '#FFFFFF', border: 'none' }),\n };\n}\n// Form-slot input chrome. Inputs are always white cards regardless of the\n// zone tone (mirroring the button rule \"pair the accent with white\") — only\n// the border varies: idle grey, the accent when focused, the error red when\n// invalid. Shared with the editor's canvas (parity contract).\nexport const WEB_POPUP_FORM_INPUT_BORDER = '#D0D5DD';\nexport const WEB_POPUP_FORM_ERROR_COLOR = '#D92D20';\nexport function webPopupFormInputStyle(borderColor = WEB_POPUP_FORM_INPUT_BORDER) {\n return {\n display: 'block',\n boxSizing: 'border-box',\n width: '100%',\n padding: '10px 12px',\n borderRadius: 3,\n fontSize: 14,\n fontFamily: 'inherit',\n lineHeight: 1.5,\n backgroundColor: '#FFFFFF',\n color: WEB_POPUP_TEXT_COLOR,\n border: `1px solid ${borderColor}`,\n outline: 'none',\n };\n}\n// What a normalized form slot falls back to when the json omits the copy —\n// also the editor's defaults for a freshly added slot.\nexport const WEB_POPUP_FORM_DEFAULTS = {\n submitLabel: 'Subscribe',\n successMessage: 'Thanks for subscribing!',\n confirmEmailMessage: 'Please check your inbox and confirm your email.',\n};\nexport const WEB_POPUP_KEYFRAMES = `\n@keyframes pw-vpopup-fade { from { opacity: 0; } }\n@keyframes pw-vpopup-slide { from { opacity: 0; translate: 0 28px; } }\n@keyframes pw-vpopup-overlay { from { opacity: 0; } }\n@keyframes pw-vpopup-page { from { opacity: 0; } }\n`;\n// Page-switch transition: the incoming page's content fades in while explicit\n// px sizes glide instead of jumping (auto sizes still snap — 'auto' can't be\n// transitioned). One duration for both so they read as a single move.\nexport const WEB_POPUP_PAGE_TRANSITION_MS = 300;\n","import { WEB_POPUP_LAYOUT_MAX_DEPTH, WEB_POPUP_LAYOUT_MAX_NODES } from './constants';\n// Validation + css conversion for the embedded layout tree. The json is\n// API-writable and its styles land inline on customers' pages, so every prop\n// is normalized against a whitelist on parse: numbers are clamped, strings\n// must match a strict css-length/track pattern, enums fall back to defaults,\n// unknown props are dropped. Unknown node TYPES degrade instead of breaking:\n// a node with children renders as a Vertical stack (a container from a NEWER\n// editor keeps its content visible on an older engine build), a childless\n// unknown node is dropped.\nconst CONTAINER_TYPES = ['Vertical', 'Horizontal', 'Columns', 'Rows'];\nconst ORDERS = ['normal', 'reverse'];\nconst ALIGN_ITEMS = ['start', 'center', 'end', 'stretch'];\nconst JUSTIFY_CONTENT = ['start', 'center', 'end', 'space-between'];\nconst TEXT_ALIGNS = ['left', 'center', 'right'];\nconst TONES = ['default', 'inverse'];\nconst MAX_LENGTH_PX = 2000;\n// String lengths carry a unit — clamp each to its own sane ceiling, like the\n// numeric branch: a wire value (\"9999rem\" scales off the HOST page's root\n// font size) must not be able to blow the popup past the viewport.\nconst LENGTH_UNIT_MAX = { px: MAX_LENGTH_PX, '%': 100, em: 125, rem: 125 };\nconst LENGTH_PATTERN = /^(\\d{1,4}(?:\\.\\d+)?)(px|%|em|rem)$/;\nconst TRACK_UNIT_MAX = { px: MAX_LENGTH_PX, '%': 100, fr: 100 };\nconst TRACK_PATTERN = /^(\\d{1,4}(?:\\.\\d+)?)(px|%|fr)$/;\nconst TRACK_KEYWORDS = ['auto', 'min-content', 'max-content'];\nconst MAX_TRACKS = 12;\nfunction oneOf(value, allowed) {\n return allowed.includes(value) ? value : undefined;\n}\nfunction cssLength(value) {\n if (typeof value === 'number' && Number.isFinite(value)) {\n return Math.min(Math.max(value, 0), MAX_LENGTH_PX);\n }\n if (typeof value !== 'string')\n return undefined;\n const match = LENGTH_PATTERN.exec(value.trim());\n if (!match)\n return undefined;\n const [, amount, unit] = match;\n return `${Math.min(parseFloat(amount), LENGTH_UNIT_MAX[unit])}${unit}`;\n}\nconst BOX_SIDES = ['top', 'right', 'bottom', 'left'];\nfunction boxPadding(value) {\n const whole = cssLength(value);\n if (whole !== undefined)\n return whole;\n if (typeof value !== 'object' || value === null)\n return undefined;\n const sides = {};\n for (const side of BOX_SIDES) {\n const sideValue = cssLength(value[side]);\n if (sideValue !== undefined)\n sides[side] = sideValue;\n }\n return Object.keys(sides).length > 0 ? sides : undefined;\n}\nfunction trackSize(token) {\n if (TRACK_KEYWORDS.includes(token))\n return token;\n const match = TRACK_PATTERN.exec(token);\n if (!match)\n return undefined;\n const [, amount, unit] = match;\n return `${Math.min(parseFloat(amount), TRACK_UNIT_MAX[unit])}${unit}`;\n}\nfunction trackSizes(value) {\n if (typeof value === 'number') {\n return Number.isInteger(value) && value >= 1 && value <= MAX_TRACKS ? value : undefined;\n }\n if (typeof value !== 'string')\n return undefined;\n const tokens = value.trim().split(/\\s+/);\n if (tokens.length < 1 || tokens.length > MAX_TRACKS)\n return undefined;\n const clamped = tokens.map(trackSize);\n return clamped.every((token) => token !== undefined) ? clamped.join(' ') : undefined;\n}\nfunction nonEmptyString(value) {\n return typeof value === 'string' && value.length > 0 ? value : undefined;\n}\nfunction containerProps(raw) {\n const props = {};\n const gap = cssLength(raw.gap);\n if (gap !== undefined)\n props.gap = gap;\n const padding = boxPadding(raw.padding);\n if (padding !== undefined)\n props.padding = padding;\n const alignItems = oneOf(raw.alignItems, ALIGN_ITEMS);\n if (alignItems)\n props.alignItems = alignItems;\n const justifyContent = oneOf(raw.justifyContent, JUSTIFY_CONTENT);\n if (justifyContent)\n props.justifyContent = justifyContent;\n const alignContent = oneOf(raw.alignContent, JUSTIFY_CONTENT);\n if (alignContent)\n props.alignContent = alignContent;\n const backgroundImage = nonEmptyString(raw.backgroundImage);\n if (backgroundImage)\n props.backgroundImage = backgroundImage;\n const sizes = trackSizes(raw.sizes);\n if (sizes !== undefined)\n props.sizes = sizes;\n return props;\n}\nfunction normalizeNode(raw, depth, budget) {\n if (depth > WEB_POPUP_LAYOUT_MAX_DEPTH || budget.nodes <= 0)\n return null;\n if (typeof raw !== 'object' || raw === null)\n return null;\n budget.nodes -= 1;\n const node = raw;\n const props = (typeof node.props === 'object' && node.props !== null ? node.props : {});\n if (node.type === 'Content') {\n const content = nonEmptyString(props.content);\n if (!content)\n return null;\n const out = { type: 'Content', props: { content } };\n const align = oneOf(props.align, TEXT_ALIGNS);\n if (align)\n out.props.align = align;\n const tone = oneOf(props.tone, TONES);\n if (tone && tone !== 'default')\n out.props.tone = tone;\n return out;\n }\n if (node.type === 'Image') {\n const image = nonEmptyString(props.image);\n if (!image)\n return null;\n const out = { type: 'Image', props: { image } };\n return out;\n }\n if (!Array.isArray(node.children))\n return null;\n const type = oneOf(node.type, CONTAINER_TYPES) ?? 'Vertical';\n const children = [];\n for (const child of node.children) {\n const normalized = normalizeNode(child, depth + 1, budget);\n if (normalized)\n children.push(normalized);\n }\n const out = containerProps(props);\n // `order: 'reverse'` is applied right here and consumed: the normalized\n // tree carries the children already reordered (and the sizes template\n // reversed with them, so each child keeps its track) — the renderers and\n // the editor canvas never see the prop. Caveat for hand-authored json: the\n // \"keeps its track\" guarantee assumes one sizes token per child; with a\n // mismatched count the reversed template pairs children with different\n // tracks (grid itself would misalign such a template the same way).\n if (oneOf(props.order, ORDERS) === 'reverse') {\n children.reverse();\n if (typeof out.sizes === 'string')\n out.sizes = out.sizes.split(' ').reverse().join(' ');\n }\n return { type, props: out, children };\n}\n/**\n * Validate an embedded layout tree from the stored json. Returns the\n * normalized tree, or null when the value isn't a renderable tree at all —\n * the page is then dropped by resolveWebPopupPages.\n */\nexport function normalizeWebPopupLayout(raw) {\n return normalizeNode(raw, 0, { nodes: WEB_POPUP_LAYOUT_MAX_NODES });\n}\n// --- value substitution ($refs) ---------------------------------------------\n/** A page value key, as referenced from the tree by a `$key` token. */\nexport const WEB_POPUP_VALUE_KEY_PATTERN = /^[a-zA-Z][a-zA-Z0-9-]*$/;\nconst VALUE_REF_PATTERN = /^\\$([a-zA-Z][a-zA-Z0-9-]*)$/;\n// Every whitespace-separated token of the form $key is replaced; separators\n// survive, so both a whole-string prop ('$stackGap') and a token inside a\n// sizes template ('1fr $imageWidth') substitute with the same rule. An\n// unknown key stays as-is and fails the prop whitelist downstream — the prop\n// is dropped, same as any invalid literal.\nfunction substituteString(value, values) {\n if (!value.includes('$'))\n return value;\n return value\n .split(/(\\s+)/)\n .map((token) => {\n const key = VALUE_REF_PATTERN.exec(token)?.[1];\n // Own properties only: '$constructor' must stay an unknown ref, not\n // resolve to an Object.prototype member.\n return key !== undefined && Object.prototype.hasOwnProperty.call(values, key) ? values[key] : token;\n })\n .join('');\n}\n/**\n * Substitute a page's named values into its RAW layout tree — `$key` tokens\n * in string props become the values, verbatim. Runs BEFORE\n * normalizeWebPopupLayout (see resolveWebPopupPages), so a substituted value\n * passes exactly the whitelists/clamps a literal one would; substitution is\n * single-pass and normalizeWebPopupValues rejects values containing '$', so\n * refs can't chain. Binding keys (`content`, `image`, `backgroundImage`) are\n * never substituted — they already name params by design.\n */\nexport function substituteWebPopupLayoutValues(layout, values) {\n if (typeof layout !== 'object' || layout === null || Object.keys(values).length === 0)\n return layout;\n return substituteNode(layout, values, 0);\n}\nconst BINDING_PROPS = new Set(['content', 'image', 'backgroundImage']);\nfunction substituteNode(raw, values, depth) {\n if (depth > WEB_POPUP_LAYOUT_MAX_DEPTH || typeof raw !== 'object' || raw === null)\n return raw;\n const node = raw;\n const out = { ...node };\n if (typeof node.props === 'object' && node.props !== null) {\n const props = { ...node.props };\n for (const [key, value] of Object.entries(props)) {\n if (BINDING_PROPS.has(key))\n continue;\n if (typeof value === 'string') {\n props[key] = substituteString(value, values);\n }\n else if (typeof value === 'object' && value !== null && !Array.isArray(value)) {\n // Per-side paddings: one level of string sides.\n const sides = { ...value };\n for (const [side, sideValue] of Object.entries(sides)) {\n if (typeof sideValue === 'string')\n sides[side] = substituteString(sideValue, values);\n }\n props[key] = sides;\n }\n }\n out.props = props;\n }\n if (Array.isArray(node.children)) {\n out.children = node.children.map((child) => substituteNode(child, values, depth + 1));\n }\n return out;\n}\n// --- css conversion (shared by the reader and the editor's canvas) ---------\nexport function webPopupCssLength(value) {\n return typeof value === 'number' ? `${value}px` : value;\n}\nexport function webPopupPaddingValue(padding) {\n if (typeof padding === 'number' || typeof padding === 'string')\n return webPopupCssLength(padding);\n const side = (value) => (value === undefined ? '0' : webPopupCssLength(value));\n return `${side(padding.top)} ${side(padding.right)} ${side(padding.bottom)} ${side(padding.left)}`;\n}\n/** grid-template value for Columns/Rows: absent sizes = one 1fr per child. */\nexport function webPopupTracksValue(sizes, childCount) {\n if (typeof sizes === 'string')\n return sizes;\n const count = typeof sizes === 'number' ? sizes : Math.max(childCount, 1);\n return `repeat(${count}, 1fr)`;\n}\n/**\n * The cover-background css of a container that draws an image behind its\n * content. `dim` (0–1) is the image's scrim — a dark translucent layer\n * painted as a gradient stacked over the url() in the same property, so it\n * needs no extra element and rides along wherever the background is drawn.\n */\nexport function webPopupBackgroundImageStyle(src, dim = 0) {\n // JSON.stringify quotes + escapes the url, so an src can't break out of\n // the css function.\n const image = `url(${JSON.stringify(src)})`;\n const scrim = dim > 0 ? `rgba(16, 24, 40, ${Math.min(dim, 1)})` : null;\n return {\n backgroundImage: scrim ? `linear-gradient(${scrim}, ${scrim}), ${image}` : image,\n backgroundSize: 'cover',\n backgroundPosition: 'center',\n };\n}\n/**\n * The inline style of a container node — grid, mirroring kit-helpers'\n * Vertical/Horizontal/Columns/Rows semantics. The background image is passed\n * resolved (looked up in the page's images by the caller) so this stays a\n * pure props → css mapping.\n */\nexport function webPopupContainerStyle(node, backgroundSrc, backgroundDim = 0) {\n const props = node.props ?? {};\n const style = { display: 'grid', minWidth: 0 };\n if (node.type === 'Horizontal')\n style.gridAutoFlow = 'column';\n if (node.type === 'Columns')\n style.gridTemplateColumns = webPopupTracksValue(props.sizes, node.children.length);\n if (node.type === 'Rows')\n style.gridTemplateRows = webPopupTracksValue(props.sizes, node.children.length);\n if (props.gap !== undefined)\n style.gap = webPopupCssLength(props.gap);\n if (props.padding !== undefined)\n style.padding = webPopupPaddingValue(props.padding);\n if (props.alignItems)\n style.alignItems = props.alignItems;\n if (props.justifyContent)\n style.justifyContent = props.justifyContent;\n if (props.alignContent)\n style.alignContent = props.alignContent;\n if (backgroundSrc)\n Object.assign(style, webPopupBackgroundImageStyle(backgroundSrc, backgroundDim));\n return style;\n}\n","import { SAFE_URL_PROTOCOL, WEB_POPUP_DEFAULT_COLORS, WEB_POPUP_FORM_DEFAULTS, WEB_POPUP_VERSION, } from './constants';\nimport { normalizeWebPopupLayout, substituteWebPopupLayoutValues, WEB_POPUP_VALUE_KEY_PATTERN, } from './layout';\n// Sanitize a user-entered button URL before it lands in an href: https/http/\n// mailto/tel and page-relative links only.\nexport function safeUrl(url) {\n const trimmed = (url || '').trim();\n if (!trimmed)\n return undefined;\n if (trimmed.startsWith('#') || trimmed.startsWith('/') || trimmed.startsWith('?'))\n return trimmed;\n if (SAFE_URL_PROTOCOL.test(trimmed))\n return trimmed;\n return undefined;\n}\n/**\n * The target/rel pair a popup link renders with: only an exact '_self' opts\n * out of the default new tab (and of its noreferrer, which same-tab\n * navigation doesn't need). One rule for both link kinds — the reader's\n * button anchors and the sanitizer's inline text links.\n */\nexport function webPopupLinkTargetAttrs(target) {\n return target === '_self' ? { target: '_self' } : { target: '_blank', rel: 'noreferrer' };\n}\nconst SANITIZE_ALLOWED_TAGS = new Set(['STRONG', 'B', 'EM', 'I', 'U', 'BR', 'A']);\nfunction copySanitized(from, to, doc) {\n for (const child of Array.from(from.childNodes)) {\n if (child.nodeType === 3 /* text */) {\n to.appendChild(doc.createTextNode(child.textContent ?? ''));\n continue;\n }\n if (child.nodeType !== 1 /* element */)\n continue;\n const el = child;\n // Unknown tags are unwrapped — their children survive as plain content.\n if (!SANITIZE_ALLOWED_TAGS.has(el.tagName)) {\n copySanitized(el, to, doc);\n continue;\n }\n const clean = doc.createElement(el.tagName.toLowerCase());\n if (el.tagName === 'A') {\n const href = safeUrl(el.getAttribute('href') ?? undefined);\n if (href)\n clean.setAttribute('href', href);\n const { target, rel } = webPopupLinkTargetAttrs(el.getAttribute('target'));\n clean.setAttribute('target', target);\n if (rel)\n clean.setAttribute('rel', rel);\n }\n to.appendChild(clean);\n copySanitized(el, clean, doc);\n }\n}\n/**\n * Sanitize a text slot's html before it's injected into the page. The editor\n * only ever writes inline formatting, but the json travels through a public\n * API and renders on customers' sites — so on render only the inline tags\n * survive (anything else is unwrapped to its text), every attribute is\n * dropped, and links keep only a safeUrl-approved href plus their tab choice\n * (target=\"_self\" stays; everything else opens in a new tab).\n */\nexport function sanitizeWebPopupHtml(html) {\n // No '<' → no elements can form; entities in plain text are already-valid\n // html and pass through untouched.\n if (!html.includes('<'))\n return html;\n const parsed = new DOMParser().parseFromString(html, 'text/html');\n const out = parsed.createElement('div');\n copySanitized(parsed.body, out, parsed);\n return out.innerHTML;\n}\nfunction colorString(value) {\n return typeof value === 'string' && value ? value : undefined;\n}\n/**\n * The popup palette from API-writable params: `colors` entries when present,\n * the legacy top-level background/accent underneath, palette defaults for the\n * rest — always a complete WebPopupColors.\n */\nexport function normalizeWebPopupColors(params) {\n const colors = typeof params.colors === 'object' && params.colors !== null\n ? params.colors\n : {};\n return {\n background: colorString(colors.background)\n ?? colorString(params.background) ?? WEB_POPUP_DEFAULT_COLORS.background,\n accent: colorString(colors.accent) ?? colorString(params.accent) ?? WEB_POPUP_DEFAULT_COLORS.accent,\n text: colorString(colors.text) ?? WEB_POPUP_DEFAULT_COLORS.text,\n textSecondary: colorString(colors.textSecondary) ?? WEB_POPUP_DEFAULT_COLORS.textSecondary,\n textInverse: colorString(colors.textInverse) ?? WEB_POPUP_DEFAULT_COLORS.textInverse,\n };\n}\n// Parse stored PopupFormContent.json into the popup model. Returns null for\n// anything that isn't a version-2 popup with at least one page — including\n// the retired version-1 flat-layout format and pre-engine content with no\n// `version` field at all, which callers should treat as broken. The palette\n// comes out complete: colors entries → legacy top-level background/accent →\n// defaults.\nexport function parseWebPopupJson(json) {\n let raw;\n try {\n raw = JSON.parse(json);\n }\n catch {\n return null;\n }\n if (typeof raw !== 'object' || raw === null)\n return null;\n const candidate = raw;\n if (candidate.version !== WEB_POPUP_VERSION)\n return null;\n const params = candidate.params;\n if (typeof params !== 'object' || params === null)\n return null;\n if (!Array.isArray(params.pages) || params.pages.length === 0)\n return null;\n return { version: WEB_POPUP_VERSION, params: { ...params, colors: normalizeWebPopupColors(params) } };\n}\n/** The editor's save path: model → PopupFormContent.json string. */\nexport function stringifyWebPopup(params) {\n const compat = {\n ...params,\n background: params.colors.background,\n accent: params.colors.accent,\n };\n const payload = { version: WEB_POPUP_VERSION, params: compat };\n return JSON.stringify(payload);\n}\nconst IMAGE_FITS = ['cover', 'contain'];\nconst MAX_IMAGE_BLUR = 100;\n// Bomb protection for the page content, mirroring the layout tree's\n// depth/node caps: the tree allows up to ~100 Content nodes and several may\n// reference the same zone, so unbounded zones/slots would amplify into\n// thousands of sanitize+render passes on the customer's page.\nconst MAX_IMAGES = 20;\nconst MAX_ZONES = 20;\nconst MAX_ZONE_SLOTS = 50;\n// The images come from API-writable json — keep only well-formed entries,\n// with the presentation props (fit/blur) validated like the layout tree's.\nfunction normalizeImages(raw) {\n if (!Array.isArray(raw))\n return [];\n const out = [];\n for (const img of raw) {\n if (out.length >= MAX_IMAGES)\n break;\n if (typeof img !== 'object' || img === null)\n continue;\n if (typeof img.key !== 'string' || !img.key)\n continue;\n if (typeof img.src !== 'string')\n continue;\n out.push({\n key: img.key,\n label: typeof img.label === 'string' ? img.label : '',\n src: img.src,\n ...(typeof img.mediaId === 'string' && img.mediaId ? { mediaId: img.mediaId } : {}),\n ...(IMAGE_FITS.includes(img.fit) ? { fit: img.fit } : {}),\n ...(typeof img.blur === 'number' && Number.isFinite(img.blur) && img.blur > 0\n ? { blur: Math.min(img.blur, MAX_IMAGE_BLUR) }\n : {}),\n ...(typeof img.dim === 'number' && Number.isFinite(img.dim) && img.dim > 0\n ? { dim: Math.min(img.dim, 1) }\n : {}),\n });\n }\n return out;\n}\nconst MAX_VALUES = 20;\nconst MAX_VALUE_LENGTH = 64;\nconst MAX_SELECT_OPTIONS = 20;\nconst LENGTH_CONTROL_UNITS = ['px', '%', 'em', 'rem', 'fr'];\nfunction finiteNumber(value) {\n return typeof value === 'number' && Number.isFinite(value) ? value : undefined;\n}\n// Per-unit { min?, max? } overrides for a length control, keyed by a\n// whitelisted unit. Non-object input, unknown unit keys and non-finite bounds\n// are dropped; an all-empty map returns undefined so the field is omitted.\nfunction normalizeControlRanges(raw) {\n if (typeof raw !== 'object' || raw === null)\n return undefined;\n const out = {};\n for (const unit of LENGTH_CONTROL_UNITS) {\n const entry = raw[unit];\n if (typeof entry !== 'object' || entry === null)\n continue;\n const min = finiteNumber(entry.min);\n const max = finiteNumber(entry.max);\n if (min === undefined && max === undefined)\n continue;\n out[unit] = { ...(min !== undefined ? { min } : {}), ...(max !== undefined ? { max } : {}) };\n }\n return Object.keys(out).length > 0 ? out : undefined;\n}\n// The control is editor metadata from API-writable json: enum-whitelisted\n// kind, clamped numbers, capped options. Anything malformed drops to\n// undefined — the editor falls back to a plain text input.\nfunction normalizeValueControl(raw) {\n if (typeof raw !== 'object' || raw === null)\n return undefined;\n const control = raw;\n if (control.kind === 'text')\n return { kind: 'text' };\n if (control.kind === 'length' || control.kind === 'percent') {\n const min = finiteNumber(control.min);\n const max = finiteNumber(control.max);\n const units = control.kind === 'length' && Array.isArray(control.units)\n ? control.units.filter((u) => (LENGTH_CONTROL_UNITS.includes(u)))\n : [];\n // Per-unit min/max overrides: whitelisted unit keys, finite bounds. Any\n // malformed entry is skipped; an empty result drops the whole field.\n const ranges = control.kind === 'length'\n ? normalizeControlRanges(control.ranges)\n : undefined;\n return {\n kind: control.kind,\n ...(min !== undefined ? { min } : {}),\n ...(max !== undefined ? { max } : {}),\n ...(units.length > 0 ? { units } : {}),\n ...(ranges ? { ranges } : {}),\n };\n }\n if (control.kind === 'select' && Array.isArray(control.options)) {\n const options = [];\n for (const option of control.options) {\n if (options.length >= MAX_SELECT_OPTIONS)\n break;\n if (typeof option !== 'object' || option === null)\n continue;\n if (typeof option.value !== 'string' || option.value.length > MAX_VALUE_LENGTH)\n continue;\n options.push({ value: option.value, label: typeof option.label === 'string' ? option.label : option.value });\n }\n if (options.length > 0)\n return { kind: 'select', options };\n }\n return undefined;\n}\n/**\n * The page's named layout values from API-writable json: capped count,\n * whitelisted keys, short '$'-free value strings (substitution is single-pass\n * and this keeps refs from even *looking* chainable), validated controls.\n */\nexport function normalizeWebPopupValues(raw) {\n if (!Array.isArray(raw))\n return [];\n const out = [];\n for (const value of raw) {\n if (out.length >= MAX_VALUES)\n break;\n if (typeof value !== 'object' || value === null)\n continue;\n if (typeof value.key !== 'string' || !WEB_POPUP_VALUE_KEY_PATTERN.test(value.key))\n continue;\n if (typeof value.value !== 'string' || value.value.length > MAX_VALUE_LENGTH || value.value.includes('$'))\n continue;\n if (out.some((v) => v.key === value.key))\n continue;\n const control = normalizeValueControl(value.control);\n out.push({\n key: value.key,\n label: typeof value.label === 'string' ? value.label : '',\n value: value.value,\n ...(control ? { control } : {}),\n });\n }\n return out;\n}\n/** The values as a substitution map (see substituteWebPopupLayoutValues). */\nexport function webPopupValuesMap(values) {\n return Object.fromEntries(values.map((v) => [v.key, v.value]));\n}\nconst FORM_FIELD_KINDS = ['email', 'firstName', 'lastName', 'phone', 'custom'];\nconst BUTTON_VARIANTS = ['primary', 'secondary'];\nconst MAX_FORM_FIELDS = 10;\n// A form slot's fields from API-writable json: capped, whitelisted kinds,\n// deduped keys. The submit contract needs an email — when none survives, one\n// is injected up front (the slot stays renderable/editable rather than being\n// dropped: the editor canvas resolves through this same pipeline). Email\n// fields are always required — the payload can't form without a value.\nfunction normalizeFormFields(raw) {\n const out = [];\n if (Array.isArray(raw)) {\n for (const field of raw) {\n if (out.length >= MAX_FORM_FIELDS)\n break;\n if (typeof field !== 'object' || field === null)\n continue;\n if (typeof field.key !== 'string' || !field.key)\n continue;\n if (!FORM_FIELD_KINDS.includes(field.kind))\n continue;\n if (out.some((f) => f.key === field.key))\n continue;\n out.push({\n key: field.key,\n kind: field.kind,\n label: typeof field.label === 'string' ? field.label : '',\n placeholder: typeof field.placeholder === 'string' ? field.placeholder : '',\n required: field.kind === 'email' || field.required === true,\n ...(field.kind === 'custom' && typeof field.tag === 'string' && field.tag ? { tag: field.tag } : {}),\n });\n }\n }\n if (!out.some((f) => f.kind === 'email')) {\n let key = 'field-email';\n while (out.some((f) => f.key === key))\n key = `${key}-1`;\n out.unshift({ key, kind: 'email', label: 'Email', placeholder: '', required: true });\n }\n return out.slice(0, MAX_FORM_FIELDS);\n}\n// Per-type slot validation. Text and button entries pass through UNTOUCHED\n// when well-formed (stored popups predate this check — don't rewrite them);\n// a form slot is rebuilt field by field; an unknown slot type is dropped so\n// slot types added after this engine build degrade to absence, not a crash.\nfunction normalizeSlots(raw) {\n const out = [];\n for (const slot of raw) {\n if (out.length >= MAX_ZONE_SLOTS)\n break;\n if (typeof slot !== 'object' || slot === null)\n continue;\n if (typeof slot.key !== 'string' || !slot.key)\n continue;\n if (slot.type === 'text') {\n if (typeof slot.html === 'string')\n out.push(slot);\n continue;\n }\n if (slot.type === 'button') {\n // An action-less button would crash the renderer on the action switch.\n if (typeof slot.action === 'object' && slot.action !== null && typeof slot.action.type === 'string') {\n out.push(slot);\n }\n continue;\n }\n if (slot.type === 'email-subscription-form') {\n out.push({\n type: 'email-subscription-form',\n key: slot.key,\n formCode: typeof slot.formCode === 'string' ? slot.formCode : '',\n fields: normalizeFormFields(slot.fields),\n submitLabel: typeof slot.submitLabel === 'string' && slot.submitLabel\n ? slot.submitLabel\n : WEB_POPUP_FORM_DEFAULTS.submitLabel,\n submitVariant: BUTTON_VARIANTS.includes(slot.submitVariant)\n ? slot.submitVariant\n : 'primary',\n ...(typeof slot.privacy === 'object' && slot.privacy !== null\n && typeof slot.privacy.checkboxLabel === 'string'\n ? {\n privacy: {\n checkboxLabel: slot.privacy.checkboxLabel,\n url: typeof slot.privacy.url === 'string' ? slot.privacy.url : '',\n linkLabel: typeof slot.privacy.linkLabel === 'string' ? slot.privacy.linkLabel : '',\n },\n }\n : {}),\n successMessage: typeof slot.successMessage === 'string' && slot.successMessage\n ? slot.successMessage\n : WEB_POPUP_FORM_DEFAULTS.successMessage,\n confirmEmailMessage: typeof slot.confirmEmailMessage === 'string' && slot.confirmEmailMessage\n ? slot.confirmEmailMessage\n : WEB_POPUP_FORM_DEFAULTS.confirmEmailMessage,\n });\n }\n // Unknown slot type → dropped.\n }\n return out;\n}\n// The zones come from API-writable json — keep only well-formed entries\n// (capped, see above) so the renderer can trust the shape.\nfunction normalizeContents(raw) {\n if (!Array.isArray(raw))\n return [];\n const out = [];\n for (const zone of raw) {\n if (out.length >= MAX_ZONES)\n break;\n if (typeof zone !== 'object' || zone === null)\n continue;\n if (typeof zone.key !== 'string' || !zone.key)\n continue;\n if (!Array.isArray(zone.slots))\n continue;\n out.push({\n key: zone.key,\n label: typeof zone.label === 'string' ? zone.label : '',\n slots: normalizeSlots(zone.slots),\n });\n }\n return out;\n}\n/**\n * Every subscription form code the popup's form slots reference (unique,\n * empty codes skipped) — what a host records view stats for. Reads the RAW\n * params (tolerant of malformed slots), so it works on parsed-but-unresolved\n * json.\n */\nexport function collectWebPopupFormCodes(params) {\n const out = new Set();\n for (const page of params.pages) {\n if (!Array.isArray(page?.contents))\n continue;\n for (const zone of page.contents) {\n if (!Array.isArray(zone?.slots))\n continue;\n for (const slot of zone.slots) {\n if (typeof slot !== 'object' || slot === null)\n continue;\n if (slot.type !== 'email-subscription-form')\n continue;\n if (typeof slot.formCode === 'string' && slot.formCode)\n out.add(slot.formCode);\n }\n }\n }\n return [...out];\n}\n/**\n * The popup box-size ceiling px, mirroring the layout tree's px clamp: the\n * json is API-writable and the size lands as inline style on the customer's\n * page. The editor clamps its Width/Height inputs to it too.\n */\nexport const WEB_POPUP_MAX_SIZE_PX = 2000;\nfunction validSize(value) {\n return typeof value === 'number' && Number.isFinite(value) && value > 0\n ? Math.min(value, WEB_POPUP_MAX_SIZE_PX)\n : undefined;\n}\nexport function resolveWebPopupPageSize(own, shared, axis) {\n if (own === null)\n return undefined;\n let resolved;\n if (own === 'stretch')\n resolved = 'stretch';\n else\n resolved = validSize(own) ?? (shared === 'stretch' ? 'stretch' : validSize(shared));\n return axis === 'width' && resolved === 'stretch' ? undefined : resolved;\n}\n/**\n * The renderable pages: each page carries its own embedded layout tree — no\n * kind catalog at runtime. The page's named values are substituted into the\n * tree first ($key tokens), then the result is validated/normalized\n * (whitelisted props, unknown container types degrade to a Vertical stack) —\n * so substituted values pass the same clamps as literals; pages whose layout\n * isn't a tree at all are dropped. An empty result means the popup can't be\n * rendered. width/height come out FINAL (page override ?? chrome, validated)\n * — the renderer never falls back itself.\n */\nexport function resolveWebPopupPages(params) {\n const out = [];\n for (const page of params.pages) {\n const values = normalizeWebPopupValues(page.values);\n const layout = normalizeWebPopupLayout(substituteWebPopupLayoutValues(page.layout, webPopupValuesMap(values)));\n if (!layout)\n continue;\n const width = resolveWebPopupPageSize(page.width, params.width, 'width');\n const height = resolveWebPopupPageSize(page.height, params.height, 'height');\n out.push({\n key: page.key,\n layout,\n images: normalizeImages(page.images),\n contents: normalizeContents(page.contents),\n ...(width !== undefined ? { width } : {}),\n ...(height !== undefined ? { height } : {}),\n });\n }\n return out;\n}\n/** The page shown first: startPage when it exists, else the first page. */\nexport function startPageOf(params, pages) {\n return pages.find((p) => p.key === params.startPage) ?? pages[0];\n}\nexport function placementMaxSize(placement) {\n return `calc(100% - ${placement.offset * 2}px)`;\n}\n","export const WEB_POPUPS_WIDGET_NAMESPACE = 'pushwoosh-web-popups';\n\n// Prefix for every log line emitted by the web popups widget so its output is\n// easy to spot and filter in the console.\nexport const WEB_POPUPS_LOG_PREFIX = '[WebPopups]';\n\nexport const POPUP_HOST_Z_INDEX = 2147483647;\n\n// Breathing room between one popup closing and the next one opening. Not\n// cosmetic: without it the click that dismissed the first popup lands on the\n// incoming popup's overlay (which closes on click) or on one of its buttons.\nexport const QUEUE_GAP_MS = 400;\n\nexport const SUBSCRIPTION_FORMS_WIDGET_URL = 'https://cdn.pushwoosh.com/subscription-forms/widget.js';\n\nexport const SUBSCRIPTION_FORMS_WIDGET_TAG = 'pushwoosh-subscribe-widget';\n\n// The subscription-form service's public HTTP gateway — the same host the\n// hosted widget above is built against. Serves email-subscription-form slot\n// submits and view stats for popup-embedded forms.\nexport const SUBSCRIPTION_FORMS_API_URL = 'https://subscription-form.svc-nue.pushwoosh.com/api/v1';\n","var n,l,u,t,i,r,o,e,f,c,a,s,h,p,v,y,d={},w=[],_=/acit|ex(?:s|g|n|p|$)|rph|grid|ows|mnc|ntw|ine[ch]|zoo|^ord|itera/i,g=Array.isArray;function m(n,l){for(var u in l)n[u]=l[u];return n}function b(n){n&&n.parentNode&&n.parentNode.removeChild(n)}function k(l,u,t){var i,r,o,e={};for(o in u)\"key\"==o?i=u[o]:\"ref\"==o?r=u[o]:e[o]=u[o];if(arguments.length>2&&(e.children=arguments.length>3?n.call(arguments,2):t),\"function\"==typeof l&&null!=l.defaultProps)for(o in l.defaultProps)void 0===e[o]&&(e[o]=l.defaultProps[o]);return x(l,e,i,r,null)}function x(n,t,i,r,o){var e={type:n,props:t,key:i,ref:r,__k:null,__:null,__b:0,__e:null,__c:null,constructor:void 0,__v:null==o?++u:o,__i:-1,__u:0};return null==o&&null!=l.vnode&&l.vnode(e),e}function M(){return{current:null}}function S(n){return n.children}function C(n,l){this.props=n,this.context=l}function $(n,l){if(null==l)return n.__?$(n.__,n.__i+1):null;for(var u;l<n.__k.length;l++)if(null!=(u=n.__k[l])&&null!=u.__e)return u.__e;return\"function\"==typeof n.type?$(n):null}function I(n){if(n.__P&&n.__d){var u=n.__v,t=u.__e,i=[],r=[],o=m({},u);o.__v=u.__v+1,l.vnode&&l.vnode(o),q(n.__P,o,u,n.__n,n.__P.namespaceURI,32&u.__u?[t]:null,i,null==t?$(u):t,!!(32&u.__u),r),o.__v=u.__v,o.__.__k[o.__i]=o,D(i,o,r),u.__e=u.__=null,o.__e!=t&&P(o)}}function P(n){if(null!=(n=n.__)&&null!=n.__c)return n.__e=n.__c.base=null,n.__k.some(function(l){if(null!=l&&null!=l.__e)return n.__e=n.__c.base=l.__e}),P(n)}function A(n){(!n.__d&&(n.__d=!0)&&i.push(n)&&!H.__r++||r!=l.debounceRendering)&&((r=l.debounceRendering)||o)(H)}function H(){try{for(var n,l=1;i.length;)i.length>l&&i.sort(e),n=i.shift(),l=i.length,I(n)}finally{i.length=H.__r=0}}function L(n,l,u,t,i,r,o,e,f,c,a){var s,h,p,v,y,_,g,m=t&&t.__k||w,b=l.length;for(f=T(u,l,m,f,b),s=0;s<b;s++)null!=(p=u.__k[s])&&(h=-1!=p.__i&&m[p.__i]||d,p.__i=s,_=q(n,p,h,i,r,o,e,f,c,a),v=p.__e,p.ref&&h.ref!=p.ref&&(h.ref&&J(h.ref,null,p),a.push(p.ref,p.__c||v,p)),null==y&&null!=v&&(y=v),(g=!!(4&p.__u))||h.__k===p.__k?(f=j(p,f,n,g),g&&h.__e&&(h.__e=null)):\"function\"==typeof p.type&&void 0!==_?f=_:v&&(f=v.nextSibling),p.__u&=-7);return u.__e=y,f}function T(n,l,u,t,i){var r,o,e,f,c,a=u.length,s=a,h=0;for(n.__k=new Array(i),r=0;r<i;r++)null!=(o=l[r])&&\"boolean\"!=typeof o&&\"function\"!=typeof o?(\"string\"==typeof o||\"number\"==typeof o||\"bigint\"==typeof o||o.constructor==String?o=n.__k[r]=x(null,o,null,null,null):g(o)?o=n.__k[r]=x(S,{children:o},null,null,null):void 0===o.constructor&&o.__b>0?o=n.__k[r]=x(o.type,o.props,o.key,o.ref?o.ref:null,o.__v):n.__k[r]=o,f=r+h,o.__=n,o.__b=n.__b+1,e=null,-1!=(c=o.__i=O(o,u,f,s))&&(s--,(e=u[c])&&(e.__u|=2)),null==e||null==e.__v?(-1==c&&(i>a?h--:i<a&&h++),\"function\"!=typeof o.type&&(o.__u|=4)):c!=f&&(c==f-1?h--:c==f+1?h++:(c>f?h--:h++,o.__u|=4))):n.__k[r]=null;if(s)for(r=0;r<a;r++)null!=(e=u[r])&&0==(2&e.__u)&&(e.__e==t&&(t=$(e)),K(e,e));return t}function j(n,l,u,t){var i,r;if(\"function\"==typeof n.type){for(i=n.__k,r=0;i&&r<i.length;r++)i[r]&&(i[r].__=n,l=j(i[r],l,u,t));return l}n.__e!=l&&(t&&(l&&n.type&&!l.parentNode&&(l=$(n)),u.insertBefore(n.__e,l||null)),l=n.__e);do{l=l&&l.nextSibling}while(null!=l&&8==l.nodeType);return l}function F(n,l){return l=l||[],null==n||\"boolean\"==typeof n||(g(n)?n.some(function(n){F(n,l)}):l.push(n)),l}function O(n,l,u,t){var i,r,o,e=n.key,f=n.type,c=l[u],a=null!=c&&0==(2&c.__u);if(null===c&&null==e||a&&e==c.key&&f==c.type)return u;if(t>(a?1:0))for(i=u-1,r=u+1;i>=0||r<l.length;)if(null!=(c=l[o=i>=0?i--:r++])&&0==(2&c.__u)&&e==c.key&&f==c.type)return o;return-1}function z(n,l,u){\"-\"==l[0]?n.setProperty(l,null==u?\"\":u):n[l]=null==u?\"\":\"number\"!=typeof u||_.test(l)?u:u+\"px\"}function N(n,l,u,t,i){var r,o;n:if(\"style\"==l)if(\"string\"==typeof u)n.style.cssText=u;else{if(\"string\"==typeof t&&(n.style.cssText=t=\"\"),t)for(l in t)u&&l in u||z(n.style,l,\"\");if(u)for(l in u)t&&u[l]==t[l]||z(n.style,l,u[l])}else if(\"o\"==l[0]&&\"n\"==l[1])r=l!=(l=l.replace(s,\"$1\")),o=l.toLowerCase(),l=o in n||\"onFocusOut\"==l||\"onFocusIn\"==l?o.slice(2):l.slice(2),n.l||(n.l={}),n.l[l+r]=u,u?t?u[a]=t[a]:(u[a]=h,n.addEventListener(l,r?v:p,r)):n.removeEventListener(l,r?v:p,r);else{if(\"http://www.w3.org/2000/svg\"==i)l=l.replace(/xlink(H|:h)/,\"h\").replace(/sName$/,\"s\");else if(\"width\"!=l&&\"height\"!=l&&\"href\"!=l&&\"list\"!=l&&\"form\"!=l&&\"tabIndex\"!=l&&\"download\"!=l&&\"rowSpan\"!=l&&\"colSpan\"!=l&&\"role\"!=l&&\"popover\"!=l&&l in n)try{n[l]=null==u?\"\":u;break n}catch(n){}\"function\"==typeof u||(null==u||!1===u&&\"-\"!=l[4]?n.removeAttribute(l):n.setAttribute(l,\"popover\"==l&&1==u?\"\":u))}}function V(n){return function(u){if(this.l){var t=this.l[u.type+n];if(null==u[c])u[c]=h++;else if(u[c]<t[a])return;return t(l.event?l.event(u):u)}}}function q(n,u,t,i,r,o,e,f,c,a){var s,h,p,v,y,d,_,k,x,M,$,I,P,A,H,T,j=u.type;if(void 0!==u.constructor)return null;128&t.__u&&(c=!!(32&t.__u),o=[f=u.__e=t.__e]),(s=l.__b)&&s(u);n:if(\"function\"==typeof j){h=e.length;try{if(x=u.props,M=j.prototype&&j.prototype.render,$=(s=j.contextType)&&i[s.__c],I=s?$?$.props.value:s.__:i,t.__c?k=(p=u.__c=t.__c).__=p.__E:(M?u.__c=p=new j(x,I):(u.__c=p=new C(x,I),p.constructor=j,p.render=Q),$&&$.sub(p),p.state||(p.state={}),p.__n=i,v=p.__d=!0,p.__h=[],p._sb=[]),M&&null==p.__s&&(p.__s=p.state),M&&null!=j.getDerivedStateFromProps&&(p.__s==p.state&&(p.__s=m({},p.__s)),m(p.__s,j.getDerivedStateFromProps(x,p.__s))),y=p.props,d=p.state,p.__v=u,v)M&&null==j.getDerivedStateFromProps&&null!=p.componentWillMount&&p.componentWillMount(),M&&null!=p.componentDidMount&&p.__h.push(p.componentDidMount);else{if(M&&null==j.getDerivedStateFromProps&&x!==y&&null!=p.componentWillReceiveProps&&p.componentWillReceiveProps(x,I),u.__v==t.__v||!p.__e&&null!=p.shouldComponentUpdate&&!1===p.shouldComponentUpdate(x,p.__s,I)){u.__v!=t.__v&&(p.props=x,p.state=p.__s,p.__d=!1),u.__e=t.__e,u.__k=t.__k,u.__k.some(function(n){n&&(n.__=u)}),w.push.apply(p.__h,p._sb),p._sb=[],p.__h.length&&e.push(p);break n}null!=p.componentWillUpdate&&p.componentWillUpdate(x,p.__s,I),M&&null!=p.componentDidUpdate&&p.__h.push(function(){p.componentDidUpdate(y,d,_)})}if(p.context=I,p.props=x,p.__P=n,p.__e=!1,P=l.__r,A=0,M)p.state=p.__s,p.__d=!1,P&&P(u),s=p.render(p.props,p.state,p.context),w.push.apply(p.__h,p._sb),p._sb=[];else do{p.__d=!1,P&&P(u),s=p.render(p.props,p.state,p.context),p.state=p.__s}while(p.__d&&++A<25);p.state=p.__s,null!=p.getChildContext&&(i=m(m({},i),p.getChildContext())),M&&!v&&null!=p.getSnapshotBeforeUpdate&&(_=p.getSnapshotBeforeUpdate(y,d)),H=null!=s&&s.type===S&&null==s.key?E(s.props.children):s,f=L(n,g(H)?H:[H],u,t,i,r,o,e,f,c,a),p.base=u.__e,u.__u&=-161,p.__h.length&&e.push(p),k&&(p.__E=p.__=null)}catch(n){if(e.length=h,u.__v=null,c||null!=o){if(n.then){for(u.__u|=c?160:128;f&&8==f.nodeType&&f.nextSibling;)f=f.nextSibling;null!=o&&(o[o.indexOf(f)]=null),u.__e=f}else if(null!=o)for(T=o.length;T--;)b(o[T])}else u.__e=t.__e;null==u.__k&&(u.__k=t.__k||[]),n.then||B(u),l.__e(n,u,t)}}else null==o&&u.__v==t.__v?(u.__k=t.__k,u.__e=t.__e):f=u.__e=G(t.__e,u,t,i,r,o,e,c,a);return(s=l.diffed)&&s(u),128&u.__u?void 0:f}function B(n){n&&(n.__c&&(n.__c.__e=!0),n.__k&&n.__k.some(B))}function D(n,u,t){for(var i=0;i<t.length;i++)J(t[i],t[++i],t[++i]);l.__c&&l.__c(u,n),n.some(function(u){try{n=u.__h,u.__h=[],n.some(function(n){n.call(u)})}catch(n){l.__e(n,u.__v)}})}function E(n){return\"object\"!=typeof n||null==n||n.__b>0?n:g(n)?n.map(E):void 0!==n.constructor?null:m({},n)}function G(u,t,i,r,o,e,f,c,a){var s,h,p,v,y,w,_,m=i.props||d,k=t.props,x=t.type;if(\"svg\"==x?o=\"http://www.w3.org/2000/svg\":\"math\"==x?o=\"http://www.w3.org/1998/Math/MathML\":o||(o=\"http://www.w3.org/1999/xhtml\"),null!=e)for(s=0;s<e.length;s++)if((y=e[s])&&\"setAttribute\"in y==!!x&&(x?y.localName==x:3==y.nodeType)){u=y,e[s]=null;break}if(null==u){if(null==x)return document.createTextNode(k);u=document.createElementNS(o,x,k.is&&k),c&&(l.__m&&l.__m(t,e),c=!1),e=null}if(null==x)m===k||c&&u.data==k||(u.data=k);else{if(e=\"textarea\"==x&&null!=k.defaultValue?null:e&&n.call(u.childNodes),!c&&null!=e)for(m={},s=0;s<u.attributes.length;s++)m[(y=u.attributes[s]).name]=y.value;for(s in m)y=m[s],\"dangerouslySetInnerHTML\"==s?p=y:\"children\"==s||s in k||\"value\"==s&&\"defaultValue\"in k||\"checked\"==s&&\"defaultChecked\"in k||N(u,s,null,y,o);for(s in k)y=k[s],\"children\"==s?v=y:\"dangerouslySetInnerHTML\"==s?h=y:\"value\"==s?w=y:\"checked\"==s?_=y:c&&\"function\"!=typeof y||m[s]===y||N(u,s,y,m[s],o);if(h)c||p&&(h.__html==p.__html||h.__html==u.innerHTML)||(u.innerHTML=h.__html),t.__k=[];else if(p&&(u.innerHTML=\"\"),L(\"template\"==t.type?u.content:u,g(v)?v:[v],t,i,r,\"foreignObject\"==x?\"http://www.w3.org/1999/xhtml\":o,e,f,e?e[0]:i.__k&&$(i,0),c,a),null!=e)for(s=e.length;s--;)b(e[s]);c&&\"textarea\"!=x||(s=\"value\",\"progress\"==x&&null==w?u.removeAttribute(\"value\"):null!=w&&(w!==u[s]||\"progress\"==x&&!w||\"option\"==x&&w!=m[s])&&N(u,s,w,m[s],o),s=\"checked\",null!=_&&_!=u[s]&&N(u,s,_,m[s],o))}return u}function J(n,u,t){try{if(\"function\"==typeof n){var i=\"function\"==typeof n.__u;i&&n.__u(),i&&null==u||(n.__u=n(u))}else n.current=u}catch(n){l.__e(n,t)}}function K(n,u,t){var i,r;if(l.unmount&&l.unmount(n),(i=n.ref)&&(i.current&&i.current!=n.__e||J(i,null,u)),null!=(i=n.__c)){if(i.componentWillUnmount)try{i.componentWillUnmount()}catch(n){l.__e(n,u)}i.base=i.__P=i.__n=null}if(i=n.__k)for(r=0;r<i.length;r++)i[r]&&K(i[r],u,t||\"function\"!=typeof n.type);t||b(n.__e),n.__c=n.__=n.__e=void 0}function Q(n,l,u){return this.constructor(n,u)}function R(u,t,i){var r,o,e,f;t==document&&(t=document.documentElement),l.__&&l.__(u,t),o=(r=\"function\"==typeof i)?null:i&&i.__k||t.__k,e=[],f=[],q(t,u=(!r&&i||t).__k=k(S,null,[u]),o||d,d,t.namespaceURI,!r&&i?[i]:o?null:t.firstChild?n.call(t.childNodes):null,e,!r&&i?i:o?o.__e:t.firstChild,r,f),D(e,u,f),u.props.children=null}function U(n,l){R(n,l,U)}function W(l,u,t){var i,r,o,e,f=m({},l.props);for(o in l.type&&l.type.defaultProps&&(e=l.type.defaultProps),u)\"key\"==o?i=u[o]:\"ref\"==o?r=u[o]:f[o]=void 0===u[o]&&null!=e?e[o]:u[o];return arguments.length>2&&(f.children=arguments.length>3?n.call(arguments,2):t),x(l.type,f,i||l.key,r||l.ref,null)}function X(n){function l(n){var u,t;return this.getChildContext||(u=new Set,(t={})[l.__c]=this,this.getChildContext=function(){return t},this.componentWillUnmount=function(){u=null},this.shouldComponentUpdate=function(n){this.props.value!=n.value&&u.forEach(function(n){n.__e=!0,A(n)})},this.sub=function(n){u.add(n);var l=n.componentWillUnmount;n.componentWillUnmount=function(){u&&u.delete(n),l&&l.call(n)}}),n.children}return l.__c=\"__cC\"+y++,l.__=n,l.Provider=l.__l=(l.Consumer=function(n,l){return n.children(l)}).contextType=l,l}n=w.slice,l={__e:function(n,l,u,t){for(var i,r,o;l=l.__;)if((i=l.__c)&&!i.__)try{if((r=i.constructor)&&null!=r.getDerivedStateFromError&&(i.setState(r.getDerivedStateFromError(n)),o=i.__d),null!=i.componentDidCatch&&(i.componentDidCatch(n,t||{}),o=i.__d),o)return i.__E=i}catch(l){n=l}throw n}},u=0,t=function(n){return null!=n&&void 0===n.constructor},C.prototype.setState=function(n,l){var u;u=null!=this.__s&&this.__s!=this.state?this.__s:this.__s=m({},this.state),\"function\"==typeof n&&(n=n(m({},u),this.props)),n&&m(u,n),null!=n&&this.__v&&(l&&this._sb.push(l),A(this))},C.prototype.forceUpdate=function(n){this.__v&&(this.__e=!0,n&&this.__h.push(n),A(this))},C.prototype.render=S,i=[],o=\"function\"==typeof Promise?Promise.prototype.then.bind(Promise.resolve()):setTimeout,e=function(n,l){return n.__v.__b-l.__v.__b},H.__r=0,f=Math.random().toString(8),c=\"__d\"+f,a=\"__a\"+f,s=/(PointerCapture)$|Capture$/i,h=0,p=V(!1),v=V(!0),y=0;export{C as Component,S as Fragment,W as cloneElement,X as createContext,k as createElement,M as createRef,k as h,U as hydrate,t as isValidElement,l as options,R as render,F as toChildArray};\n//# sourceMappingURL=preact.module.js.map\n","import{options as r,Fragment as e}from\"preact\";export{Fragment}from\"preact\";var t=/[\"&<]/;function n(r){if(0===r.length||!1===t.test(r))return r;for(var e=0,n=0,o=\"\",f=\"\";n<r.length;n++){switch(r.charCodeAt(n)){case 34:f=\""\";break;case 38:f=\"&\";break;case 60:f=\"<\";break;default:continue}n!==e&&(o+=r.slice(e,n)),o+=f,e=n+1}return n!==e&&(o+=r.slice(e,n)),o}var o=/acit|ex(?:s|g|n|p|$)|rph|grid|ows|mnc|ntw|ine[ch]|zoo|^ord|itera/i,f=0,i=Array.isArray;function u(e,t,n,o,i,u){t||(t={});var a,c,p=t;if(\"ref\"in p)for(c in p={},t)\"ref\"==c?a=t[c]:p[c]=t[c];var l={type:e,props:p,key:n,ref:a,__k:null,__:null,__b:0,__e:null,__c:null,constructor:void 0,__v:--f,__i:-1,__u:0,__source:i,__self:u};if(\"function\"==typeof e&&(a=e.defaultProps))for(c in a)void 0===p[c]&&(p[c]=a[c]);return r.vnode&&r.vnode(l),l}function a(r){var t=u(e,{tpl:r,exprs:[].slice.call(arguments,1)});return t.key=t.__v,t}var c={},p=/[A-Z]/g;function l(e,t){if(r.attr){var f=r.attr(e,t);if(\"string\"==typeof f)return f}if(t=function(r){return null!==r&&\"object\"==typeof r&&\"function\"==typeof r.valueOf?r.valueOf():r}(t),\"ref\"===e||\"key\"===e)return\"\";if(\"style\"===e&&\"object\"==typeof t){var i=\"\";for(var u in t){var a=t[u];if(null!=a&&\"\"!==a){var l=\"-\"==u[0]?u:c[u]||(c[u]=u.replace(p,\"-$&\").toLowerCase()),s=\";\";\"number\"!=typeof a||l.startsWith(\"--\")||o.test(l)||(s=\"px;\"),i=i+l+\":\"+a+s}}return e+'=\"'+n(i)+'\"'}return null==t||!1===t||\"function\"==typeof t||\"object\"==typeof t?\"\":!0===t?e:e+'=\"'+n(\"\"+t)+'\"'}function s(r){if(null==r||\"boolean\"==typeof r||\"function\"==typeof r)return null;if(\"object\"==typeof r){if(void 0===r.constructor)return r;if(i(r)){for(var e=0;e<r.length;e++)r[e]=s(r[e]);return r}}return n(\"\"+r)}export{u as jsx,l as jsxAttr,u as jsxDEV,s as jsxEscape,a as jsxTemplate,u as jsxs};\n//# sourceMappingURL=jsxRuntime.module.js.map\n","import{options as n}from\"preact\";var t,r,u,i,o=0,f=[],c=n,e=c.__b,a=c.__r,v=c.diffed,l=c.__c,m=c.unmount,p=c.__;function s(n,t){c.__h&&c.__h(r,n,o||t),o=0;var u=r.__H||(r.__H={__:[],__h:[]});return n>=u.__.length&&u.__.push({}),u.__[n]}function d(n){return o=1,y(D,n)}function y(n,u,i){var o=s(t++,2);if(o.t=n,!o.__c&&(o.__=[i?i(u):D(void 0,u),function(n){var t=o.__N?o.__N[0]:o.__[0],r=o.t(t,n);t!==r&&(o.__N=[r,o.__[1]],o.__c.setState({}))}],o.__c=r,!r.__f)){var f=function(n,t,r){if(!o.__c.__H)return!0;var u=!1,i=o.__c.props!==n;if(o.__c.__H.__.some(function(n){if(n.__N){u=!0;var t=n.__[0];n.__=n.__N,n.__N=void 0,t!==n.__[0]&&(i=!0)}}),c){var f=c.call(this,n,t,r);return u?f||i:f}return!u||i};r.__f=!0;var c=r.shouldComponentUpdate,e=r.componentWillUpdate;r.componentWillUpdate=function(n,t,r){if(this.__e){var u=c;c=void 0,f(n,t,r),c=u}e&&e.call(this,n,t,r)},r.shouldComponentUpdate=f}return o.__N||o.__}function h(n,u){var i=s(t++,3);!c.__s&&C(i.__H,u)&&(i.__=n,i.u=u,r.__H.__h.push(i))}function _(n,u){var i=s(t++,4);!c.__s&&C(i.__H,u)&&(i.__=n,i.u=u,r.__h.push(i))}function A(n){return o=5,T(function(){return{current:n}},[])}function F(n,t,r){o=6,_(function(){if(\"function\"==typeof n){var r=n(t());return function(){n(null),r&&\"function\"==typeof r&&r()}}if(n)return n.current=t(),function(){return n.current=null}},null==r?r:r.concat(n))}function T(n,r){var u=s(t++,7);return C(u.__H,r)&&(u.__=n(),u.__H=r,u.__h=n),u.__}function q(n,t){return o=8,T(function(){return n},t)}function x(n){var u=r.context[n.__c],i=s(t++,9);return i.c=n,u?(null==i.__&&(i.__=!0,u.sub(r)),u.props.value):n.__}function P(n,t){c.useDebugValue&&c.useDebugValue(t?t(n):n)}function b(n){var u=s(t++,10),i=d();return u.__=n,r.componentDidCatch||(r.componentDidCatch=function(n,t){u.__&&u.__(n,t),i[1](n)}),[i[0],function(){i[1](void 0)}]}function g(){var n=s(t++,11);if(!n.__){for(var u=r.__v;null!==u&&!u.__m&&null!==u.__;)u=u.__;var i=u.__m||(u.__m=[0,0]);n.__=\"P\"+i[0]+\"-\"+i[1]++}return n.__}function j(){for(var n;n=f.shift();){var t=n.__H;if(n.__P&&t)try{t.__h.some(z),t.__h.some(B),t.__h=[]}catch(r){t.__h=[],c.__e(r,n.__v)}}}c.__b=function(n){r=null,e&&e(n)},c.__=function(n,t){n&&t.__k&&t.__k.__m&&(n.__m=t.__k.__m),p&&p(n,t)},c.__r=function(n){a&&a(n),t=0;var i=(r=n.__c).__H;i&&(u===r?(i.__h=[],r.__h=[],i.__.some(function(n){n.__N&&(n.__=n.__N),n.u=n.__N=void 0})):(i.__h.some(z),i.__h.some(B),i.__h=[],t=0)),u=r},c.diffed=function(n){v&&v(n);var t=n.__c;t&&t.__H&&(t.__H.__h.length&&(1!==f.push(t)&&i===c.requestAnimationFrame||((i=c.requestAnimationFrame)||w)(j)),t.__H.__.some(function(n){n.u&&(n.__H=n.u,n.u=void 0)})),u=r=null},c.__c=function(n,t){t.some(function(n){try{n.__h.some(z),n.__h=n.__h.filter(function(n){return!n.__||B(n)})}catch(r){t.some(function(n){n.__h&&(n.__h=[])}),t=[],c.__e(r,n.__v)}}),l&&l(n,t)},c.unmount=function(n){m&&m(n);var t,r=n.__c;r&&r.__H&&(r.__H.__.some(function(n){try{z(n)}catch(n){t=n}}),r.__H=void 0,t&&c.__e(t,r.__v))};var k=\"function\"==typeof requestAnimationFrame;function w(n){var t,r=function(){clearTimeout(u),k&&cancelAnimationFrame(t),setTimeout(n)},u=setTimeout(r,35);k&&(t=requestAnimationFrame(r))}function z(n){var t=r,u=n.__c;\"function\"==typeof u&&(n.__c=void 0,u()),r=t}function B(n){var t=r;n.__c=n.__(),r=t}function C(n,t){return!n||n.length!==t.length||t.some(function(t,r){return t!==n[r]})}function D(n,t){return\"function\"==typeof t?t(n):t}export{q as useCallback,x as useContext,P as useDebugValue,h as useEffect,b as useErrorBoundary,g as useId,F as useImperativeHandle,_ as useLayoutEffect,T as useMemo,y as useReducer,A as useRef,d as useState};\n//# sourceMappingURL=hooks.module.js.map\n","import{Component as n,createElement as t,options as e,toChildArray as r,Fragment as u,render as o,hydrate as i,createContext as l,createRef as c,cloneElement as f}from\"preact\";export{Component,Fragment,Fragment as StrictMode,createContext,createElement,createRef}from\"preact\";import{useState as a,useLayoutEffect as s,useEffect as h,useCallback as v,useContext as d,useDebugValue as m,useId as p,useImperativeHandle as y,useMemo as _,useReducer as b,useRef as S}from\"preact/hooks\";export*from\"preact/hooks\";function g(n,t){for(var e in t)n[e]=t[e];return n}function E(n,t){for(var e in n)if(\"__source\"!==e&&!(e in t))return!0;for(var r in t)if(\"__source\"!==r&&n[r]!==t[r])return!0;return!1}function C(n,t){var e=t(),r=a({t:{__:e,u:t}}),u=r[0].t,o=r[1];return s(function(){u.__=e,u.u=t,R(u)&&o({t:u})},[n,e,t]),h(function(){return R(u)&&o({t:u}),n(function(){R(u)&&o({t:u})})},[n]),e}function R(n){try{return!((t=n.__)===(e=n.u())&&(0!==t||1/t==1/e)||t!=t&&e!=e)}catch(n){return!0}var t,e}function x(n){n()}function w(n){return n}function k(){return[!1,x]}var I=s;function M(n,t){this.props=n,this.context=t}function N(n,e){function r(n){var t=this.props.ref;return t!=n.ref&&t&&(\"function\"==typeof t?t(null):t.current=null),e?!e(this.props,n)||t!=n.ref:E(this.props,n)}function u(e){return this.shouldComponentUpdate=r,t(n,e)}return u.displayName=\"Memo(\"+(n.displayName||n.name)+\")\",u.__f=u.prototype.isReactComponent=!0,u.type=n,u}(M.prototype=new n).isPureReactComponent=!0,M.prototype.shouldComponentUpdate=function(n,t){return E(this.props,n)||E(this.state,t)};var T=e.__b;e.__b=function(n){n.type&&n.type.__f&&n.ref&&(n.props.ref=n.ref,n.ref=null),T&&T(n)};var A=\"undefined\"!=typeof Symbol&&Symbol.for&&Symbol.for(\"react.forward_ref\")||3911;function D(n){function t(t){var e=g({},t);return delete e.ref,n(e,t.ref||null)}return t.$$typeof=A,t.render=n,t.prototype.isReactComponent=t.__f=!0,t.displayName=\"ForwardRef(\"+(n.displayName||n.name)+\")\",t}var F=function(n,t){return null==n?null:r(r(n).map(t))},L={map:F,forEach:F,count:function(n){return n?r(n).length:0},only:function(n){var t=r(n);if(1!==t.length)throw\"Children.only\";return t[0]},toArray:r},O=e.__e;e.__e=function(n,t,e,r){if(n.then)for(var u,o=t;o=o.__;)if((u=o.__c)&&u.__c)return null==t.__e&&(t.__e=e.__e,t.__k=e.__k||[]),u.__c(n,t);O(n,t,e,r)};var U=e.unmount;function V(n,t,e){return n&&(n.__c&&n.__c.__H&&(n.__c.__H.__.forEach(function(n){\"function\"==typeof n.__c&&n.__c()}),n.__c.__H=null),null!=(n=g({},n)).__c&&(n.__c.__P===e&&(n.__c.__P=t),n.__c.__e=!0,n.__c=null),n.__k=n.__k&&n.__k.map(function(n){return V(n,t,e)})),n}function W(n,t,e){return n&&e&&(n.__v=null,n.__k=n.__k&&n.__k.map(function(n){return W(n,t,e)}),n.__c&&n.__c.__P===t&&(n.__e&&e.appendChild(n.__e),n.__c.__e=!0,n.__c.__P=e)),n}function P(){this.__u=0,this.o=null,this.__b=null}function j(n){var t=n.__&&n.__.__c;return t&&t.__a&&t.__a(n)}function z(n){var e,r,u,o=null;function i(i){if(e||(e=n()).then(function(n){n&&(o=n.default||n),u=!0},function(n){r=n,u=!0}),r)throw r;if(!u)throw e;return o?t(o,i):null}return i.displayName=\"Lazy\",i.__f=!0,i}function B(){this.i=null,this.l=null}e.unmount=function(n){var t=n.__c;t&&(t.__z=!0),t&&t.__R&&t.__R(),t&&32&n.__u&&(n.type=null),U&&U(n)},(P.prototype=new n).__c=function(n,t){var e=t.__c,r=this;null==r.o&&(r.o=[]),r.o.push(e);var u=j(r.__v),o=!1,i=function(){o||r.__z||(o=!0,e.__R=null,u?u(c):c())};e.__R=i;var l=e.__P;e.__P=null;var c=function(){if(!--r.__u){if(r.state.__a){var n=r.state.__a;r.__v.__k[0]=W(n,n.__c.__P,n.__c.__O)}var t;for(r.setState({__a:r.__b=null});t=r.o.pop();)t.__P=l,t.forceUpdate()}};r.__u++||32&t.__u||r.setState({__a:r.__b=r.__v.__k[0]}),n.then(i,i)},P.prototype.componentWillUnmount=function(){this.o=[]},P.prototype.render=function(n,e){if(this.__b){if(this.__v.__k){var r=document.createElement(\"div\"),o=this.__v.__k[0].__c;this.__v.__k[0]=V(this.__b,r,o.__O=o.__P)}this.__b=null}var i=e.__a&&t(u,null,n.fallback);return i&&(i.__u&=-33),[t(u,null,e.__a?null:n.children),i]};var H=function(n,t,e){if(++e[1]===e[0]&&n.l.delete(t),n.props.revealOrder&&(\"t\"!==n.props.revealOrder[0]||!n.l.size))for(e=n.i;e;){for(;e.length>3;)e.pop()();if(e[1]<e[0])break;n.i=e=e[2]}};function Z(n){return this.getChildContext=function(){return n.context},n.children}function Y(n){var e=this,r=n.h;if(e.componentWillUnmount=function(){o(null,e.v),e.v=null,e.h=null},e.h&&e.h!==r&&e.componentWillUnmount(),!e.v){for(var u=e.__v;null!==u&&!u.__m&&null!==u.__;)u=u.__;e.h=r,e.v={nodeType:1,parentNode:r,childNodes:[],__k:{__m:u.__m},contains:function(){return!0},namespaceURI:r.namespaceURI,insertBefore:function(n,t){this.childNodes.push(n),e.h.insertBefore(n,t)},removeChild:function(n){this.childNodes.splice(this.childNodes.indexOf(n)>>>1,1),e.h.removeChild(n)}}}o(t(Z,{context:e.context},n.__v),e.v)}function $(n,e){var r=t(Y,{__v:n,h:e});return r.containerInfo=e,r}(B.prototype=new n).__a=function(n){var t=this,e=j(t.__v),r=t.l.get(n);return r[0]++,function(u){var o=function(){t.props.revealOrder?(r.push(u),H(t,n,r)):u()};e?e(o):o()}},B.prototype.render=function(n){this.i=null,this.l=new Map;var t=r(n.children);n.revealOrder&&\"b\"===n.revealOrder[0]&&t.reverse();for(var e=t.length;e--;)this.l.set(t[e],this.i=[1,0,this.i]);return n.children},B.prototype.componentDidUpdate=B.prototype.componentDidMount=function(){var n=this;this.l.forEach(function(t,e){H(n,e,t)})};var q=\"undefined\"!=typeof Symbol&&Symbol.for&&Symbol.for(\"react.element\")||60103,G=/^(?:accent|alignment|arabic|baseline|cap|clip(?!PathU)|color|dominant|fill|flood|font|glyph(?!R)|horiz|image(!S)|letter|lighting|marker(?!H|W|U)|overline|paint|pointer|shape|stop|strikethrough|stroke|text(?!L)|transform|underline|unicode|units|v|vector|vert|word|writing|x(?!C))[A-Z]/,J=/^on(Ani|Tra|Tou|BeforeInp|Compo)/,K=/[A-Z0-9]/g,Q=\"undefined\"!=typeof document,X=function(n){return(\"undefined\"!=typeof Symbol&&\"symbol\"==typeof Symbol()?/fil|che|rad/:/fil|che|ra/).test(n)};function nn(n,t,e){return null==t.__k&&(t.textContent=\"\"),o(n,t),\"function\"==typeof e&&e(),n?n.__c:null}function tn(n,t,e){return i(n,t),\"function\"==typeof e&&e(),n?n.__c:null}n.prototype.isReactComponent=!0,[\"componentWillMount\",\"componentWillReceiveProps\",\"componentWillUpdate\"].forEach(function(t){Object.defineProperty(n.prototype,t,{configurable:!0,get:function(){return this[\"UNSAFE_\"+t]},set:function(n){Object.defineProperty(this,t,{configurable:!0,writable:!0,value:n})}})});var en=e.event;e.event=function(n){return en&&(n=en(n)),n.persist=function(){},n.isPropagationStopped=function(){return this.cancelBubble},n.isDefaultPrevented=function(){return this.defaultPrevented},n.nativeEvent=n};var rn,un={configurable:!0,get:function(){return this.class}},on=e.vnode;e.vnode=function(n){\"string\"==typeof n.type&&function(n){var t=n.props,e=n.type,u={},o=-1==e.indexOf(\"-\");for(var i in t){var l=t[i];if(!(\"value\"===i&&\"defaultValue\"in t&&null==l||Q&&\"children\"===i&&\"noscript\"===e||\"class\"===i||\"className\"===i)){var c=i.toLowerCase();\"defaultValue\"===i&&\"value\"in t&&null==t.value?i=\"value\":\"download\"===i&&!0===l?l=\"\":\"translate\"===c&&\"no\"===l?l=!1:\"o\"===c[0]&&\"n\"===c[1]?\"ondoubleclick\"===c?i=\"ondblclick\":\"onchange\"!==c||\"input\"!==e&&\"textarea\"!==e||X(t.type)?\"onfocus\"===c?i=\"onfocusin\":\"onblur\"===c?i=\"onfocusout\":J.test(i)&&(i=c):c=i=\"oninput\":o&&G.test(i)?i=i.replace(K,\"-$&\").toLowerCase():null===l&&(l=void 0),\"oninput\"===c&&u[i=c]&&(i=\"oninputCapture\"),u[i]=l}}\"select\"==e&&(u.multiple&&Array.isArray(u.value)&&(u.value=r(t.children).forEach(function(n){n.props.selected=-1!=u.value.indexOf(n.props.value)})),null!=u.defaultValue&&(u.value=r(t.children).forEach(function(n){n.props.selected=u.multiple?-1!=u.defaultValue.indexOf(n.props.value):u.defaultValue==n.props.value}))),t.class&&!t.className?(u.class=t.class,Object.defineProperty(u,\"className\",un)):t.className&&(u.class=u.className=t.className),n.props=u}(n),n.$$typeof=q,on&&on(n)};var ln=e.__r;e.__r=function(n){ln&&ln(n),rn=n.__c};var cn=e.diffed;e.diffed=function(n){cn&&cn(n);var t=n.props,e=n.__e;null!=e&&\"textarea\"===n.type&&\"value\"in t&&t.value!==e.value&&(e.value=null==t.value?\"\":t.value),rn=null};var fn={ReactCurrentDispatcher:{current:{readContext:function(n){return rn.__n[n.__c].props.value},useCallback:v,useContext:d,useDebugValue:m,useDeferredValue:w,useEffect:h,useId:p,useImperativeHandle:y,useInsertionEffect:I,useLayoutEffect:s,useMemo:_,useReducer:b,useRef:S,useState:a,useSyncExternalStore:C,useTransition:k}}},an=\"18.3.1\";function sn(n){return t.bind(null,n)}function hn(n){return!!n&&n.$$typeof===q}function vn(n){return hn(n)&&n.type===u}function dn(n){return!!n&&\"string\"==typeof n.displayName&&0==n.displayName.indexOf(\"Memo(\")}function mn(n){return hn(n)?f.apply(null,arguments):n}function pn(n){return!!n.__k&&(o(null,n),!0)}function yn(n){return n&&(n.base||1===n.nodeType&&n)||null}var _n=function(n,t){return n(t)},bn=function(n,t){var r=e.debounceRendering;e.debounceRendering=function(n){return n()};var u=n(t);return e.debounceRendering=r,u},Sn=hn,gn={useState:a,useId:p,useReducer:b,useEffect:h,useLayoutEffect:s,useInsertionEffect:I,useTransition:k,useDeferredValue:w,useSyncExternalStore:C,startTransition:x,useRef:S,useImperativeHandle:y,useMemo:_,useCallback:v,useContext:d,useDebugValue:m,version:\"18.3.1\",Children:L,render:nn,hydrate:tn,unmountComponentAtNode:pn,createPortal:$,createElement:t,createContext:l,createFactory:sn,cloneElement:mn,createRef:c,Fragment:u,isValidElement:hn,isElement:Sn,isFragment:vn,isMemo:dn,findDOMNode:yn,Component:n,PureComponent:M,memo:N,forwardRef:D,flushSync:bn,unstable_batchedUpdates:_n,StrictMode:u,Suspense:P,SuspenseList:B,lazy:z,__SECRET_INTERNALS_DO_NOT_USE_OR_YOU_WILL_BE_FIRED:fn};export{L as Children,M as PureComponent,P as Suspense,B as SuspenseList,fn as __SECRET_INTERNALS_DO_NOT_USE_OR_YOU_WILL_BE_FIRED,mn as cloneElement,sn as createFactory,$ as createPortal,gn as default,yn as findDOMNode,bn as flushSync,D as forwardRef,tn as hydrate,Sn as isElement,vn as isFragment,dn as isMemo,hn as isValidElement,z as lazy,N as memo,nn as render,x as startTransition,pn as unmountComponentAtNode,_n as unstable_batchedUpdates,w as useDeferredValue,I as useInsertionEffect,C as useSyncExternalStore,k as useTransition,an as version};\n//# sourceMappingURL=compat.module.js.map\n","import React, { useEffect, useState } from 'react';\nimport { webPopupButtonPillStyle, webPopupFormInputStyle, webPopupTextColor, WEB_POPUP_BG_SECTION_FALLBACK, WEB_POPUP_BUTTON_SLOT_PADDING, WEB_POPUP_FONT_STACK, WEB_POPUP_FORM_ERROR_COLOR, WEB_POPUP_FORM_SLOT_PADDING, WEB_POPUP_KEYFRAMES, WEB_POPUP_PAGE_TRANSITION_MS, WEB_POPUP_TEXT_SLOT_PADDING, WEB_POPUP_TEXT_VARIANT_STYLES, } from './constants';\nimport { placementMaxSize, resolveWebPopupPages, safeUrl, sanitizeWebPopupHtml, startPageOf, webPopupLinkTargetAttrs, } from './helpers';\nimport { webPopupBackgroundImageStyle, webPopupContainerStyle } from './layout';\n// Renders a popup from its model by interpreting each page's embedded layout\n// tree — the same node vocabulary the editor's canvas builds from: container\n// nodes become inline-styled grid divs, `Content` leaves render a named\n// zone's slot stack, `Image` leaves an image param. 'live' mode adds the\n// viewport chrome (overlay, placement, animation, close), 'preview' renders\n// just the popup box inline. Only one page renders at a time; buttons with a\n// `page` action switch pages. All styling is inline (shadow-DOM friendly, no\n// CSS files).\nconst ANIMATION_STYLE = {\n none: undefined,\n fade: 'pw-vpopup-fade 0.35s ease-out backwards',\n slide: 'pw-vpopup-slide 0.35s ease-out backwards',\n};\nfunction TextSlotView({ slot, align, inverse, colors }) {\n const style = {\n ...WEB_POPUP_TEXT_VARIANT_STYLES[slot.variant],\n textAlign: slot.align ?? align,\n padding: WEB_POPUP_TEXT_SLOT_PADDING,\n };\n const color = webPopupTextColor(slot.variant, colors, inverse);\n if (color)\n style.color = color;\n // The html comes from the editor's rich-text slots, but the json is\n // API-writable — sanitize on render (inline tags only, safe link hrefs).\n return React.createElement(\"div\", { style: style, dangerouslySetInnerHTML: { __html: sanitizeWebPopupHtml(slot.html) } });\n}\nfunction ButtonSlotView({ slot, accent, onRequestClose, onPageChange }) {\n const pill = webPopupButtonPillStyle(slot.variant, accent);\n const wrapper = { padding: WEB_POPUP_BUTTON_SLOT_PADDING };\n if (slot.action.type === 'close') {\n return (React.createElement(\"div\", { style: wrapper },\n React.createElement(\"button\", { type: \"button\", style: pill, onClick: onRequestClose }, slot.label)));\n }\n if (slot.action.type === 'page') {\n const target = slot.action.page;\n return (React.createElement(\"div\", { style: wrapper },\n React.createElement(\"button\", { type: \"button\", style: pill, onClick: () => onPageChange(target) }, slot.label)));\n }\n const href = safeUrl(slot.action.url);\n // No (safe) URL yet: an inert pill — not an '#' anchor opening a blank tab.\n if (!href) {\n return (React.createElement(\"div\", { style: wrapper },\n React.createElement(\"button\", { type: \"button\", style: pill }, slot.label)));\n }\n return (React.createElement(\"div\", { style: wrapper },\n React.createElement(\"a\", { href: href, ...webPopupLinkTargetAttrs(slot.action.target), style: pill }, slot.label)));\n}\nconst FORM_EMAIL_PATTERN = /^\\S+@\\S+\\.\\S+$/;\nconst FORM_INPUT_TYPES = { email: 'email', phone: 'tel' };\nconst FORM_AUTOCOMPLETE = {\n email: 'email',\n firstName: 'given-name',\n lastName: 'family-name',\n phone: 'tel',\n};\n// The privacy-check error renders under the checkbox row; a field key can\n// never collide with it (normalized keys are non-empty slot-local ids).\nconst PRIVACY_ERROR_KEY = '__privacy';\n/**\n * An email-subscription form slot: the fields, the consent row and the\n * submit pill, all popup-styled. Local state machine: idle → submitting →\n * success/confirm (the form swaps to the slot's message) or error (the form\n * stays, a generic retryable note appears). Without an onSubmitForm handler\n * or a bound formCode the form is inert — inputs type, submit does nothing —\n * which is exactly what previews and the editor canvas want.\n */\nfunction FormSlotView({ slot, align, inverse, colors, onSubmitForm }) {\n const [values, setValues] = useState({});\n const [policyAccepted, setPolicyAccepted] = useState(false);\n const [focusedKey, setFocusedKey] = useState(null);\n const [errors, setErrors] = useState({});\n const [phase, setPhase] = useState('idle');\n const captionColor = webPopupTextColor('caption', colors, inverse);\n const captionStyle = {\n ...WEB_POPUP_TEXT_VARIANT_STYLES.caption,\n ...(captionColor ? { color: captionColor } : {}),\n };\n const errorStyle = {\n fontSize: 12,\n lineHeight: 1.4,\n color: WEB_POPUP_FORM_ERROR_COLOR,\n paddingTop: 2,\n };\n if (phase === 'success' || phase === 'confirm') {\n const messageStyle = {\n ...WEB_POPUP_TEXT_VARIANT_STYLES.body,\n textAlign: align,\n padding: WEB_POPUP_TEXT_SLOT_PADDING,\n };\n const color = webPopupTextColor('body', colors, inverse);\n if (color)\n messageStyle.color = color;\n return (React.createElement(\"div\", { style: { padding: WEB_POPUP_FORM_SLOT_PADDING } },\n React.createElement(\"div\", { style: messageStyle }, phase === 'confirm' ? slot.confirmEmailMessage : slot.successMessage)));\n }\n const setFieldValue = (key, value) => {\n setValues((prev) => ({ ...prev, [key]: value }));\n setErrors((prev) => (prev[key] ? Object.fromEntries(Object.entries(prev).filter(([k]) => k !== key)) : prev));\n };\n const submit = () => {\n if (!onSubmitForm || !slot.formCode || phase === 'submitting')\n return;\n const found = {};\n for (const field of slot.fields) {\n const value = (values[field.key] ?? '').trim();\n if (field.required && !value)\n found[field.key] = 'Required';\n else if (field.kind === 'email' && value && !FORM_EMAIL_PATTERN.test(value)) {\n found[field.key] = 'Enter a valid email';\n }\n }\n if (slot.privacy && !policyAccepted)\n found[PRIVACY_ERROR_KEY] = 'Please accept the privacy policy';\n setErrors(found);\n if (Object.keys(found).length > 0)\n return;\n const payload = {\n email: '',\n policyAccepted: slot.privacy ? policyAccepted : true,\n };\n const customFields = {};\n for (const field of slot.fields) {\n const value = (values[field.key] ?? '').trim();\n if (!value)\n continue;\n if (field.kind === 'email')\n payload.email = payload.email || value;\n else if (field.kind === 'firstName')\n payload.firstName = value;\n else if (field.kind === 'lastName')\n payload.lastName = value;\n else if (field.kind === 'phone')\n payload.phone = value;\n else\n customFields[field.tag || field.key] = value;\n }\n if (Object.keys(customFields).length > 0)\n payload.customFields = customFields;\n setPhase('submitting');\n // Promise.resolve wrapper: a host callback that throws SYNCHRONOUSLY\n // (before returning its promise) must land in the error phase too — a\n // bare .then(ok, fail) would let the throw escape and strand the form\n // in 'submitting' with no way back.\n Promise.resolve()\n .then(() => onSubmitForm(slot.formCode, payload))\n .then((result) => setPhase(result === 'confirm-email' ? 'confirm' : 'success'), () => setPhase('error'));\n };\n const submitting = phase === 'submitting';\n const privacyHref = slot.privacy ? safeUrl(slot.privacy.url) : undefined;\n const pill = {\n ...webPopupButtonPillStyle(slot.submitVariant, colors.accent),\n ...(submitting ? { opacity: 0.6, cursor: 'default' } : {}),\n };\n return (React.createElement(\"form\", { noValidate: true, style: { padding: WEB_POPUP_FORM_SLOT_PADDING, margin: 0, textAlign: 'left' }, onSubmit: (event) => {\n event.preventDefault();\n submit();\n } },\n slot.fields.map((field) => {\n const error = errors[field.key];\n let borderColor;\n if (error)\n borderColor = WEB_POPUP_FORM_ERROR_COLOR;\n else if (focusedKey === field.key)\n borderColor = colors.accent;\n return (React.createElement(\"div\", { key: field.key, style: { padding: WEB_POPUP_TEXT_SLOT_PADDING } },\n field.label && React.createElement(\"div\", { style: { ...captionStyle, paddingBottom: 4 } }, field.label),\n React.createElement(\"input\", { type: FORM_INPUT_TYPES[field.kind] ?? 'text', autoComplete: FORM_AUTOCOMPLETE[field.kind], placeholder: field.placeholder || undefined, value: values[field.key] ?? '', disabled: submitting, style: webPopupFormInputStyle(borderColor), onFocus: () => setFocusedKey(field.key), onBlur: () => setFocusedKey((key) => (key === field.key ? null : key)), onChange: (event) => setFieldValue(field.key, event.currentTarget.value) }),\n error && React.createElement(\"div\", { style: errorStyle }, error)));\n }),\n slot.privacy && (React.createElement(\"div\", { style: { padding: WEB_POPUP_TEXT_SLOT_PADDING } },\n React.createElement(\"label\", { style: { ...captionStyle, display: 'flex', alignItems: 'flex-start', gap: 8, cursor: 'pointer' } },\n React.createElement(\"input\", { type: \"checkbox\", checked: policyAccepted, disabled: submitting, style: { margin: '2px 0 0', flexShrink: 0 }, onChange: (event) => {\n setPolicyAccepted(event.currentTarget.checked);\n setErrors((prev) => (prev[PRIVACY_ERROR_KEY]\n ? Object.fromEntries(Object.entries(prev).filter(([k]) => k !== PRIVACY_ERROR_KEY))\n : prev));\n } }),\n React.createElement(\"span\", null,\n slot.privacy.checkboxLabel,\n privacyHref && (React.createElement(React.Fragment, null,\n ' ',\n React.createElement(\"a\", { href: privacyHref, ...webPopupLinkTargetAttrs(undefined), style: { color: colors.accent } }, slot.privacy.linkLabel || slot.privacy.url))))),\n errors[PRIVACY_ERROR_KEY] && React.createElement(\"div\", { style: errorStyle }, errors[PRIVACY_ERROR_KEY]))),\n React.createElement(\"div\", { style: { padding: WEB_POPUP_BUTTON_SLOT_PADDING } },\n React.createElement(\"button\", { type: \"submit\", disabled: submitting, style: pill }, slot.submitLabel)),\n phase === 'error' && (React.createElement(\"div\", { style: { ...errorStyle, textAlign: align } }, \"Something went wrong. Please try again.\"))));\n}\n// A Content leaf: the named zone's slots (texts, buttons and forms in order)\n// as a grid stack. An unknown zone key renders as an empty spot, not a crash.\nfunction ContentNodeView({ node, page, colors, leaf, onRequestClose, onPageChange, onSubmitForm }) {\n const zone = page.contents.find((z) => z.key === node.props.content);\n if (!zone)\n return null;\n if (leaf?.renderZone) {\n return React.createElement(\"div\", { style: { minWidth: 0 } }, leaf.renderZone(zone, node));\n }\n const align = node.props.align ?? 'left';\n const inverse = node.props.tone === 'inverse';\n return (React.createElement(\"div\", { style: { minWidth: 0 } }, zone.slots.map((slot) => {\n if (slot.type === 'text') {\n return (React.createElement(TextSlotView, { key: slot.key, slot: slot, align: align, inverse: inverse, colors: colors }));\n }\n if (slot.type === 'button') {\n return (React.createElement(ButtonSlotView, { key: slot.key, slot: slot, accent: colors.accent, onRequestClose: onRequestClose, onPageChange: onPageChange }));\n }\n return (React.createElement(FormSlotView, { key: slot.key, slot: slot, align: align, inverse: inverse, colors: colors, onSubmitForm: onSubmitForm }));\n })));\n}\nfunction ImageNodeView({ node, page, leaf }) {\n const image = page.images.find((i) => i.key === node.props.image);\n if (!image)\n return null;\n // The override sees srcless params too — an editor wants a placeholder\n // where the runtime shows nothing.\n if (leaf?.renderImage)\n return React.createElement(React.Fragment, null, leaf.renderImage(image, node));\n if (!image.src)\n return null;\n const style = { display: 'block', width: '100%', minWidth: 0 };\n if (image.fit) {\n style.height = '100%';\n style.objectFit = image.fit;\n }\n else {\n style.height = 'auto';\n }\n if (image.blur)\n style.filter = `blur(${image.blur}px)`;\n return React.createElement(\"img\", { src: image.src, alt: \"\", style: style });\n}\n// The tree interpreter: containers → grid divs, leaves → zone/image views.\nfunction LayoutNodeView({ node, page, colors, leaf, onRequestClose, onPageChange, onSubmitForm }) {\n if (node.type === 'Content') {\n return (React.createElement(ContentNodeView, { node: node, page: page, colors: colors, leaf: leaf, onRequestClose: onRequestClose, onPageChange: onPageChange, onSubmitForm: onSubmitForm }));\n }\n if (node.type === 'Image') {\n return React.createElement(ImageNodeView, { node: node, page: page, leaf: leaf });\n }\n const bgKey = node.props?.backgroundImage;\n const background = bgKey ? page.images.find((i) => i.key === bgKey) : undefined;\n const blur = background?.blur ?? 0;\n const dim = background?.dim ?? 0;\n const style = webPopupContainerStyle(node, blur > 0 ? undefined : background?.src || undefined, dim);\n if (bgKey)\n style.backgroundColor = WEB_POPUP_BG_SECTION_FALLBACK;\n const children = node.children.map((child, index) => (React.createElement(LayoutNodeView\n // Layout nodes are static per page render — positional keys are fine.\n , { \n // Layout nodes are static per page render — positional keys are fine.\n key: index, node: child, page: page, colors: colors, leaf: leaf, onRequestClose: onRequestClose, onPageChange: onPageChange, onSubmitForm: onSubmitForm })));\n if (blur > 0) {\n // backdrop-filter blurs what's painted BEHIND its element, never the\n // element's own background — so the image paints on an outer box and the\n // laid-out content rides an inner blurring layer covering it edge to\n // edge (grid/padding move onto that layer). The outer box is a grid so\n // a stretched height (a 'stretch' page's root) passes through to the\n // layer actually carrying alignContent.\n const { backgroundColor, ...inner } = style;\n return (React.createElement(\"div\", { style: {\n display: 'grid',\n minWidth: 0,\n backgroundColor,\n ...(background?.src ? webPopupBackgroundImageStyle(background.src, dim) : {}),\n } },\n React.createElement(\"div\", { style: {\n ...inner,\n backdropFilter: `blur(${blur}px)`,\n WebkitBackdropFilter: `blur(${blur}px)`,\n } }, children)));\n }\n return React.createElement(\"div\", { style: style }, children);\n}\n// The popup box: the shared chrome (background, radius, shadow) around one\n// resolved page's layout tree. Exported for the editor — its canvas is this\n// very interpreter with `leafRenderers` swapping the Content/Image leaves\n// for editable views (the container interpretation stays this component's,\n// which is what keeps the canvas true to the runtime); the viewport chrome\n// (placement, overlay, enter animation) is the caller's business there.\n// After a page switch (`animatePage`) the incoming content fades in — keyed\n// by page so the animation restarts per switch — and an explicit px height\n// glides via the transition (auto heights just snap).\nexport function WebPopupBox({ page, params, leafRenderers, animatePage = false, onRequestClose, onPageChange, onSubmitForm, }) {\n const style = {\n position: 'relative',\n boxSizing: 'border-box',\n overflow: 'hidden',\n backgroundColor: params.colors.background,\n fontFamily: WEB_POPUP_FONT_STACK,\n color: params.colors.text,\n borderRadius: params.borderRadius > 0 ? params.borderRadius : undefined,\n boxShadow: params.boxShadow && params.boxShadow !== 'none' ? params.boxShadow : undefined,\n transition: `height ${WEB_POPUP_PAGE_TRANSITION_MS}ms ease`,\n };\n if (page.height) {\n // 'stretch' fills whatever box the caller gives (the fixed container pins\n // both vertical edges in live mode); a px height is the box's own.\n style.height = page.height === 'stretch' ? '100%' : page.height;\n style.overflowY = 'auto';\n }\n // A stretch page's tree gets the full box height to lay out in: the\n // min-height'd single-track grid stretches the root container, so its\n // alignContent can place the content vertically (a px height keeps the\n // pre-stretch behavior — content flows from the top).\n const pageStyle = {\n ...(animatePage ? { animation: `pw-vpopup-page ${WEB_POPUP_PAGE_TRANSITION_MS}ms ease-out backwards` } : {}),\n ...(page.height === 'stretch' ? { display: 'grid', minHeight: '100%' } : {}),\n };\n return (React.createElement(\"div\", { style: style },\n React.createElement(\"div\", { key: page.key, style: pageStyle },\n React.createElement(LayoutNodeView, { node: page.layout, page: page, colors: params.colors, leaf: leafRenderers, onRequestClose: onRequestClose, onPageChange: onPageChange ?? (() => { }), onSubmitForm: onSubmitForm }))));\n}\nfunction CloseButton({ onRequestClose }) {\n return (React.createElement(\"button\", { type: \"button\", \"aria-label\": \"Close\", onClick: onRequestClose, style: {\n position: 'absolute',\n top: 10,\n right: 10,\n width: 24,\n height: 24,\n padding: 0,\n border: 'none',\n borderRadius: '50%',\n background: 'rgba(255, 255, 255, 0.92)',\n boxShadow: '0 1px 3px rgba(16, 24, 40, 0.25)',\n color: '#667085',\n fontSize: 13,\n lineHeight: 1,\n cursor: 'pointer',\n } }, \"\\u2715\"));\n}\n// Fixed viewport placement from the placement param: anchored edges get the\n// offset, unanchored axes center via translate. No width = stretch between\n// the side gutters; height 'stretch' = pinned to both vertical edges the same\n// way. The size is the ACTIVE page's (resolved page ?? chrome), so the box\n// re-anchors itself when a page switch changes it.\nfunction fixedContainerStyle(params, width, height) {\n const { placement } = params;\n const style = {\n position: 'fixed',\n boxSizing: 'border-box',\n maxWidth: placementMaxSize(placement),\n maxHeight: placementMaxSize(placement),\n // The widget host is pointer-transparent (a corner banner must not block\n // the page); the popup itself takes clicks back.\n pointerEvents: 'auto',\n };\n if (width) {\n style.width = width;\n const h = placement.h;\n if (h === 'left')\n style.left = placement.offset;\n else if (h === 'right')\n style.right = placement.offset;\n else\n style.left = '50%';\n }\n else {\n // Stretch: pin both side edges regardless of the horizontal anchor.\n style.left = placement.offset;\n style.right = placement.offset;\n }\n if (height === 'stretch') {\n // Stretch: pin both vertical edges; the v anchor has nothing to place.\n style.top = placement.offset;\n style.bottom = placement.offset;\n }\n else if (placement.v === 'top')\n style.top = placement.offset;\n else if (placement.v === 'bottom')\n style.bottom = placement.offset;\n else\n style.top = '50%';\n const tx = width && placement.h === 'center' ? '-50%' : '0';\n const ty = placement.v === 'middle' && height !== 'stretch' ? '-50%' : '0';\n if (tx !== '0' || ty !== '0')\n style.transform = `translate(${tx}, ${ty})`;\n const anim = ANIMATION_STYLE[params.animation];\n if (anim)\n style.animation = anim;\n // A page switch that changes the (explicit) width glides instead of\n // jumping; the anchored edges keep the box pinned while it resizes.\n style.transition = `width ${WEB_POPUP_PAGE_TRANSITION_MS}ms ease`;\n return style;\n}\nexport function WebPopupReader({ params, mode = 'live', onRequestClose, onSubmitForm, leafRenderers, }) {\n // null = never navigated: show the start page. Guarded against keys that\n // don't exist (anymore) — an edited/older document falls back gracefully.\n const [pageKey, setPageKey] = useState(null);\n // Only the active page's images are in the DOM — the rest would start\n // downloading on the page switch, leaving the previous picture on screen\n // until the new one arrives. Warm the browser cache for every page up front.\n useEffect(() => {\n resolveWebPopupPages(params).forEach((p) => p.images.forEach(({ src }) => {\n if (src)\n new Image().src = src;\n }));\n }, [params]);\n const pages = resolveWebPopupPages(params);\n if (pages.length === 0)\n return null;\n const page = pages.find((p) => p.key === pageKey) ?? startPageOf(params, pages);\n // null = the initial page: entry is the chrome's business (the enter\n // animation in live mode); the page fade only plays on actual switches.\n const animatePage = pageKey !== null;\n if (mode === 'preview') {\n return (React.createElement(\"div\", { style: {\n position: 'relative',\n width: page.width ?? '100%',\n transition: `width ${WEB_POPUP_PAGE_TRANSITION_MS}ms ease`,\n } },\n React.createElement(\"style\", null, WEB_POPUP_KEYFRAMES),\n React.createElement(WebPopupBox, { page: page, params: params, leafRenderers: leafRenderers, animatePage: animatePage, onRequestClose: onRequestClose, onPageChange: setPageKey, onSubmitForm: onSubmitForm })));\n }\n const overlay = params.overlay;\n return (React.createElement(React.Fragment, null,\n React.createElement(\"style\", null, WEB_POPUP_KEYFRAMES),\n overlay && (\n // Modal semantics: the dim is clickable and dismisses the popup.\n React.createElement(\"div\", { style: {\n position: 'fixed',\n inset: 0,\n backgroundColor: overlay.color,\n opacity: overlay.opacity,\n animation: 'pw-vpopup-overlay 0.2s ease-out backwards',\n pointerEvents: 'auto',\n }, onClick: onRequestClose })),\n React.createElement(\"div\", { style: fixedContainerStyle(params, page.width, page.height) },\n React.createElement(WebPopupBox, { page: page, params: params, leafRenderers: leafRenderers, animatePage: animatePage, onRequestClose: onRequestClose, onPageChange: setPageKey, onSubmitForm: onSubmitForm }),\n React.createElement(CloseButton, { onRequestClose: onRequestClose }))));\n}\n","import { type TInboxMessagesStoreName, type TKeyValueStoreName, type TMainLogStoreName, type TMessageLogStoreName } from '../Storage.types';\n\nexport const STORE_NAME_KEY_VALUE: TKeyValueStoreName = 'keyValue';\nexport const STORE_NAME_MESSAGE_LOG: TMessageLogStoreName = 'messages';\nexport const STORE_NAME_MAIN_LOG: TMainLogStoreName = 'log';\nexport const STORE_NAME_INBOX_MESSAGES: TInboxMessagesStoreName = 'inboxMessages';\n\nexport const KEY_PATH_BASE_INCREMENT = 'id';\n","import { type TMigrationType, type TSdkStoreName } from '../Storage.types';\n\n/**\n * Check existed store, before create\n * @param name\n * @param storeCreator\n */\nexport function storeCreatorDecorator(name: TSdkStoreName, storeCreator: TMigrationType): TMigrationType {\n return function (database: IDBDatabase) {\n if (database.objectStoreNames.contains(name)) {\n return;\n }\n\n storeCreator(database);\n };\n}\n","import {\n STORE_NAME_INBOX_MESSAGES,\n STORE_NAME_KEY_VALUE,\n STORE_NAME_MAIN_LOG,\n STORE_NAME_MESSAGE_LOG,\n KEY_PATH_BASE_INCREMENT,\n} from './constants';\nimport { storeCreatorDecorator } from './helpers';\nimport {\n type TInboxMessagesIDBKeyPath,\n type TInboxMessagesIDBRemovalTimeIndex,\n type TInboxMessagesIDBStatusIndex,\n} from '../../../models/InboxMessages.types';\n\n/**\n * Create keyValue store migration\n * @param database\n */\nfunction createKeyValueStore(database: IDBDatabase) {\n database.createObjectStore(STORE_NAME_KEY_VALUE, { keyPath: 'key' });\n}\n\n/**\n * Create log store migration\n * @param database\n */\nfunction createLogStore(database: IDBDatabase) {\n const logStore = database.createObjectStore(\n STORE_NAME_MAIN_LOG,\n { keyPath: KEY_PATH_BASE_INCREMENT, autoIncrement: true },\n );\n logStore.createIndex('environment', 'environment', { unique: false });\n logStore.createIndex('date', 'date', { unique: false });\n logStore.createIndex('type', 'type', { unique: false });\n}\n\n/**\n * Create message log store migration\n * @param database\n */\nfunction createMessageLogStore(database: IDBDatabase) {\n const messagesStore = database.createObjectStore(\n STORE_NAME_MESSAGE_LOG,\n { keyPath: KEY_PATH_BASE_INCREMENT, autoIncrement: true },\n );\n messagesStore.createIndex('date', 'date', { unique: false });\n}\n\n/**\n * Create inbox messages store migration\n * @param database\n */\nfunction createInboxMessagesStore(database: IDBDatabase) {\n const keyPath: TInboxMessagesIDBKeyPath = 'inbox_id';\n const statusIndex: TInboxMessagesIDBStatusIndex = 'status';\n const removalTimeIndex: TInboxMessagesIDBRemovalTimeIndex = 'rt';\n\n const store = database.createObjectStore(STORE_NAME_INBOX_MESSAGES,\n { keyPath, autoIncrement: false },\n );\n store.createIndex(statusIndex, statusIndex, { unique: false, multiEntry: true });\n store.createIndex(removalTimeIndex, removalTimeIndex, { unique: false, multiEntry: true });\n}\n\nexport default [\n storeCreatorDecorator(STORE_NAME_KEY_VALUE, createKeyValueStore),\n storeCreatorDecorator(STORE_NAME_MAIN_LOG, createLogStore),\n storeCreatorDecorator(STORE_NAME_MESSAGE_LOG, createMessageLogStore),\n storeCreatorDecorator(STORE_NAME_INBOX_MESSAGES, createInboxMessagesStore),\n];\n","import { default as migrationsInitial } from './initial';\nimport { type TMigrationType } from '../Storage.types';\n\nexport default class Migrations {\n get all(): Array<TMigrationType> {\n return migrationsInitial;\n }\n}\n","import Migrations from './Migrations';\nimport { type TMigrationType } from '../Storage.types';\n\nexport default class MigrationExecutor {\n db: IDBDatabase;\n migrationsBuilder: Migrations;\n\n constructor(\n db: IDBDatabase,\n migrationsBuilder: Migrations = new Migrations(),\n ) {\n this.db = db;\n this.migrationsBuilder = migrationsBuilder;\n }\n\n applyMigrations() {\n this.applyMigrationsPack(this.migrationsBuilder.all);\n }\n\n applyMigrationsPack(migrationsPack: Array<TMigrationType>) {\n migrationsPack.forEach((migration) => {\n migration(this.db);\n });\n }\n}\n","import {\n STORE_NAME_KEY_VALUE,\n STORE_NAME_MAIN_LOG,\n STORE_NAME_MESSAGE_LOG,\n} from '../modules/storage/migrations/constants';\nimport MigrationExecutor from '../modules/storage/migrations/MigrationExecutor';\nimport { type IIDBOpenEventTargetWithResult } from '../modules/storage/Storage.types';\nimport version from '../modules/storage/version';\n\ndeclare const self: ServiceWorkerGlobalScope;\n\nfunction onversionchange(database: IDBDatabase, event: Event) {\n console.info('onversionchange', event);\n database.close();\n}\n\nlet databasePromise: Promise<IDBDatabase>;\nexport function getInstance(): Promise<IDBDatabase> {\n if (!databasePromise) {\n databasePromise = new Promise<IDBDatabase>((resolve, reject) => {\n const request: IDBOpenDBRequest = indexedDB.open('PUSHWOOSH_SDK_STORE', version);\n request.onsuccess = (event) => {\n const database: IDBDatabase = (event.target as IIDBOpenEventTargetWithResult).result;\n database.onversionchange = onversionchange.bind(null, database, reject);\n resolve(database);\n };\n\n request.onerror = () => reject(request.error);\n\n request.onupgradeneeded = (event) => {\n const database: IDBDatabase = (event.target as IIDBOpenEventTargetWithResult).result;\n database.onversionchange = onversionchange.bind(null, database, reject);\n\n const migrationExecutor = new MigrationExecutor(database);\n migrationExecutor.applyMigrations();\n };\n });\n }\n return databasePromise;\n}\n\nfunction getInstanceWithPromise(executor: any): any {\n return getInstance().then((database) => (\n new Promise((resolve, reject) => executor(database, resolve, reject))\n ));\n}\n\nfunction createKeyValue(name: string) {\n return {\n get<K extends string, D>(key: K, defaultValue?: D) {\n return getInstanceWithPromise((database: IDBDatabase, resolve: any, reject: any) => {\n const request = database.transaction(name).objectStore(name).get(key);\n\n /** @TODO\n * we cant invoke \"resolve\" or \"reject\" in onsuccess or onerror because\n * it leads to bugs in Safari when we try to get permissions for notifications\n *\n * Checking status of request in setTimeout fixes this bug\n */\n let isComplete = false;\n let isError = false;\n let timeout: any;\n\n const check = () => {\n clearTimeout(timeout);\n if (isComplete) {\n resolve(request.result?.value || defaultValue);\n } else if (isError) {\n reject(request.error);\n } else {\n timeout = setTimeout(check, 0);\n }\n };\n\n request.onsuccess = () => isComplete = true;\n request.onerror = () => isError = true;\n check();\n });\n },\n\n getAll() {\n return getInstanceWithPromise((database: IDBDatabase, resolve: any, reject: any) => {\n const result: { [key: string]: any } = {};\n const cursor = database.transaction(name).objectStore(name).openCursor();\n let isComplete = false;\n let isError = false;\n let timeout: any;\n\n /** @TODO\n * we cant invoke \"resolve\" or \"reject\" in onsuccess or onerror because\n * it leads to bugs in Safari when we try to get permissions for notifications\n *\n * Checking status of request in setTimeout fixes this bug\n */\n const check = () => {\n clearTimeout(timeout);\n if (isComplete) {\n resolve(result);\n } else if (isError) {\n reject(cursor.error);\n } else {\n timeout = setTimeout(check, 0);\n }\n };\n\n cursor.onsuccess = (event) => {\n const cursorResult = (event.target as any).result;\n if (cursorResult) {\n result[cursorResult.key] = cursorResult.value.value;\n cursorResult.continue();\n } else {\n isComplete = true;\n }\n };\n cursor.onerror = () => isError = true;\n check();\n });\n },\n\n async extend(key: string, value: any) {\n const oldValues = await this.get(key);\n const { ...newValues } = value;\n await this.set(key, { ...oldValues, ...newValues });\n },\n\n set<K, D>(key: K, value: D) {\n return getInstanceWithPromise((database: IDBDatabase, resolve: any, reject: any) => {\n const request = database.transaction([name], 'readwrite').objectStore(name).put({ key, value });\n let isComplete = false;\n let isError = false;\n let timeout: any;\n\n /** @TODO\n * we cant invoke \"resolve\" or \"reject\" in onsuccess or onerror because\n * it leads to bugs in Safari when we try to get permissions for notifications\n *\n * Checking status of request in setTimeout fixes this bug\n */\n const check = () => {\n clearTimeout(timeout);\n if (isComplete) {\n resolve(key);\n } else if (isError) {\n reject(request.error);\n } else {\n timeout = setTimeout(check, 0);\n }\n };\n\n request.onsuccess = () => isComplete = true;\n request.onerror = () => isError = true;\n check();\n });\n },\n };\n}\n\nexport abstract class LogBase {\n protected abstract name: string;\n protected abstract maxItems: number;\n _add(obj: any) {\n return getInstanceWithPromise((database: IDBDatabase, resolve: any, reject: any) => {\n const request = database.transaction([this.name], 'readwrite').objectStore(this.name).add(obj);\n request.onsuccess = () => {\n resolve(obj);\n };\n request.onerror = () => {\n reject(request.error);\n };\n }).then((obj: any) => {\n return this.getAll().then((items: { id: number }[]) => {\n if (Array.isArray(items)) {\n const ids = items.map((i) => i.id).sort((a, b) => {\n if (a == b) return 0;\n return a < b ? 1 : -1;\n });\n if (ids.length > this.maxItems) {\n return Promise.all(ids.slice(this.maxItems).map((id) => this.delete(id))).then(() => obj);\n }\n }\n return obj;\n });\n });\n }\n\n delete(key: any) {\n return getInstanceWithPromise((database: IDBDatabase, resolve: any, reject: any) => {\n const request = database.transaction([this.name], 'readwrite').objectStore(this.name).delete(key);\n request.onsuccess = () => {\n resolve(request.result);\n };\n request.onerror = () => {\n reject(request.error);\n };\n });\n }\n\n getAll() {\n return getInstanceWithPromise((database: IDBDatabase, resolve: any, reject: any) => {\n const result: any[] = [];\n const cursor = database.transaction(this.name).objectStore(this.name).openCursor();\n cursor.onsuccess = (ev) => {\n const cursorResult = (ev.target as any).result;\n if (cursorResult) {\n if (cursorResult.value) {\n result.push(cursorResult.value);\n }\n cursorResult.continue();\n } else {\n resolve(result);\n }\n };\n cursor.onerror = () => {\n reject(cursor.error);\n };\n });\n }\n}\n\nexport class LogLog extends LogBase {\n protected name = STORE_NAME_MAIN_LOG;\n protected maxItems = 100;\n protected environment = (typeof self !== 'undefined' && self.registration) ? 'worker' : 'browser';\n add(type: string, message: any, additional?: any) {\n const obj: any = {\n type,\n environment: this.environment,\n message: `${message}`,\n date: new Date(),\n };\n if (message instanceof Error) {\n obj.stack = message.stack;\n }\n if (additional) {\n obj.additional = additional;\n }\n return this._add(obj);\n }\n}\n\nexport class LogMessage extends LogBase {\n protected name = STORE_NAME_MESSAGE_LOG;\n protected maxItems = 25;\n add(log: any) {\n return this._add({\n ...log,\n date: new Date(),\n });\n }\n}\n\nexport const keyValue = createKeyValue(STORE_NAME_KEY_VALUE);\nexport const log = new LogLog();\nexport const message = new LogMessage();\n","import { log as logStorage } from './storage';\n\nconst levels: { [key: string]: number } = {\n error: 1,\n info: 2,\n debug: 3,\n};\n\nlet limitLevel = 3;\n\ntype TWriteType = 'error' | 'apirequest' | 'info';\n\ninterface ILogger {\n setLevel(level: string): void;\n error(...args: any[]): void;\n info(...args: any[]): void;\n debug(...args: any[]): void;\n write(type: TWriteType, message: any, additional?: any): Promise<void>;\n isManualLevel(): boolean;\n [key: string]: any;\n}\n\nconst Logger: ILogger = {\n setLevel(level) {\n if (!levels[level]) {\n level = 'error';\n }\n limitLevel = levels[level];\n },\n write(type: TWriteType, message: any, additional?: any) {\n if (type === 'error') {\n this.error(message);\n } else {\n this.info(message);\n }\n return logStorage.add(type, message, additional);\n },\n} as ILogger;\n\nObject.keys(levels).forEach((levelName: string) => {\n const levelNumber = levels[levelName];\n Logger[levelName] = (...args: any[]) => {\n if (levelNumber <= limitLevel) {\n console.groupCollapsed(levelName);\n console.info('', ...args);\n console.trace('trace');\n console.groupEnd();\n }\n };\n});\n\nexport function logAndThrowError(error: string) {\n const logText = new Error(error);\n Logger.write('error', logText, 'logAndThrowError');\n throw logText;\n}\n\nexport function logAndRejectError(error: string, reject: (e: any) => void) {\n const logText = new Error(error);\n Logger.write('error', logText, 'logAndRejectError');\n reject(logText);\n}\n\nexport { Logger };\n","import { type WebPopupFormSubmitHandler, type WebPopupFormSubmitResult } from 'smart-blocks-utils';\n\nimport { SUBSCRIPTION_FORMS_API_URL } from './constants';\nimport { Logger } from '../../core/logger';\n\n// The subscription-form service client for popup-embedded forms\n// (email-subscription-form slots). Same endpoints and payloads the hosted\n// <pushwoosh-subscribe-widget> uses — the popup reader only renders the\n// fields; subscribing an email goes through the service so form stats,\n// double opt-in and tag mapping keep working.\n\nconst SUBMIT_RESULTS: Record<string, WebPopupFormSubmitResult> = {\n SUBMIT_FORM_RESULT_SUBSCRIBED: 'subscribed',\n SUBMIT_FORM_RESULT_CONFIRM_EMAIL: 'confirm-email',\n SUBMIT_FORM_RESULT_ALREADY_SUBSCRIBED: 'already-subscribed',\n};\n\nconst formUrl = (formCode: string, action: string): string => (\n `${SUBSCRIPTION_FORMS_API_URL}/forms/code/${encodeURIComponent(formCode)}${action}`\n);\n\n/**\n * The reader's `onSubmitForm` handler: POST the slot's payload to the bound\n * form's submit endpoint. Throws on transport errors and unrecognized\n * results — the form slot shows its generic retryable error then; the\n * reader doesn't log, so the failure is recorded here before rethrowing.\n */\nexport const submitSubscriptionForm: WebPopupFormSubmitHandler = async (formCode, payload) => {\n try {\n const response = await fetch(formUrl(formCode, '/submit'), {\n method: 'POST',\n headers: { 'Content-Type': 'application/json' },\n // userId mirrors the hosted widget's convention: same as the email.\n body: JSON.stringify({ ...payload, userId: payload.email }),\n });\n if (!response.ok) {\n throw new Error(`Subscription form submit failed: HTTP ${response.status}`);\n }\n const data = await response.json() as { result?: string };\n const result = SUBMIT_RESULTS[data.result ?? ''];\n if (!result) {\n throw new Error(`Subscription form submit failed: unexpected result \"${data.result}\"`);\n }\n return result;\n } catch (error) {\n Logger.error(error, `Failed to submit subscription form \"${formCode}\"`);\n throw error;\n }\n};\n\n/**\n * Fire-and-forget view stat for a popup-embedded form — the denominator of\n * the form's conversion rate. Never blocks or breaks the popup itself.\n */\nexport const recordSubscriptionFormView = (formCode: string, hwid: string): void => {\n fetch(formUrl(formCode, '/view'), {\n method: 'POST',\n headers: { 'Content-Type': 'application/json' },\n body: JSON.stringify({ code: formCode, userId: hwid, hwid }),\n }).catch((error) => {\n Logger.error(error, `Failed to record subscription form view for \"${formCode}\"`);\n });\n};\n","import { render } from 'preact';\nimport {\n parseWebPopupJson, resolveWebPopupPages, WebPopupReader,\n type WebPopupParams,\n} from 'smart-blocks-utils';\n\nimport { submitSubscriptionForm } from './subscriptionFormApi';\n\n/**\n * Parse stored popup json into the renderable model. Returns null for\n * anything that is not a supported {version: 1, params} popup with at least\n * one resolvable page — including legacy pre-engine content (no `version`\n * field), which is deliberately unrenderable.\n */\nexport const parseWebPopupContent = (json: string): WebPopupParams | null => {\n const parsed = parseWebPopupJson(json);\n if (!parsed) {\n return null;\n }\n\n if (resolveWebPopupPages(parsed.params).length === 0) {\n return null;\n }\n\n return parsed.params;\n};\n\n/**\n * Mount the popup into the shadow-root container. The reader draws the whole\n * chrome itself: page-dim overlay (click closes), fixed viewport placement,\n * enter animation, the close button — and owns page switching for multi-page\n * popups (buttons with a `page` action). Email-subscription-form slots\n * submit through the subscription-form service.\n */\nexport const renderWebPopup = (\n container: HTMLElement,\n params: WebPopupParams,\n onRequestClose: () => void,\n): void => {\n render(\n <WebPopupReader\n params={params}\n mode=\"live\"\n onRequestClose={onRequestClose}\n onSubmitForm={submitSubscriptionForm}\n />,\n container,\n );\n};\n\n/**\n * Unmount a popup rendered by `renderWebPopup`. Dropping the host element alone\n * leaves the tree mounted on a detached node, so component cleanup never runs —\n * harmless for a popup shown once, not harmless now that popups cycle.\n */\nexport const unmountWebPopup = (container: HTMLElement): void => {\n render(null, container);\n};\n","import { SUBSCRIPTION_FORMS_WIDGET_TAG, SUBSCRIPTION_FORMS_WIDGET_URL } from './constants';\n\nconst WIDGET_DEFINITION_TIMEOUT_MS = 10000;\n\nlet loadPromise: Promise<void> | null = null;\n\n/**\n * Loads the subscription forms widget (an ES module that registers the\n * <pushwoosh-subscribe-widget> custom element) exactly once per page.\n * Resolves when the custom element is defined.\n *\n * The wait is bounded by a timeout: a script that loads but throws during\n * evaluation never registers the element and never fires the script `error`\n * event, so `customElements.whenDefined()` alone would hang forever (and with\n * it the whole web popups pipeline). On failure the memoized promise is reset\n * so the next popup can retry.\n */\nexport function ensureSubscriptionFormsWidgetLoaded(): Promise<void> {\n if (loadPromise) {\n return loadPromise;\n }\n\n if (customElements.get(SUBSCRIPTION_FORMS_WIDGET_TAG)) {\n loadPromise = Promise.resolve();\n return loadPromise;\n }\n\n loadPromise = new Promise<void>((resolve, reject) => {\n let timeoutId = 0;\n\n const fail = (error: Error): void => {\n window.clearTimeout(timeoutId);\n loadPromise = null;\n reject(error);\n };\n\n timeoutId = window.setTimeout(() => {\n fail(new Error(`Subscription forms widget did not define <${SUBSCRIPTION_FORMS_WIDGET_TAG}> within ${WIDGET_DEFINITION_TIMEOUT_MS}ms`));\n }, WIDGET_DEFINITION_TIMEOUT_MS);\n\n const script = document.createElement('script');\n script.type = 'module';\n script.src = SUBSCRIPTION_FORMS_WIDGET_URL;\n script.onerror = () => {\n fail(new Error(`Failed to load subscription forms widget script: ${SUBSCRIPTION_FORMS_WIDGET_URL}`));\n };\n document.head.appendChild(script);\n\n customElements.whenDefined(SUBSCRIPTION_FORMS_WIDGET_TAG).then(() => {\n window.clearTimeout(timeoutId);\n resolve();\n });\n });\n\n return loadPromise;\n}\n","import { collectWebPopupFormCodes } from 'smart-blocks-utils';\n\nimport {\n POPUP_HOST_Z_INDEX, QUEUE_GAP_MS, SUBSCRIPTION_FORMS_WIDGET_TAG, WEB_POPUPS_LOG_PREFIX, WEB_POPUPS_WIDGET_NAMESPACE,\n} from './constants';\nimport { parseWebPopupContent, renderWebPopup, unmountWebPopup } from './renderer';\nimport { recordSubscriptionFormView } from './subscriptionFormApi';\nimport { ensureSubscriptionFormsWidgetLoaded } from './subscriptionFormsWidgetLoader';\nimport {\n type IWebPopupsPublicApi, type PageRule, type VisibleWebPopup, type WebPopup, type WebPopupContentBundle,\n type WebPopupEntry, type WebPopupHideReason, type WebPopupShowTrigger, type WebPopupsPublicState,\n} from './types';\nimport { Logger } from '../../core/logger';\nimport { type Pushwoosh } from '../../core/Pushwoosh';\n\nexport class WebPopupsWidget implements IWebPopupsPublicApi {\n private readonly pw: Pushwoosh;\n\n private isRecurringVisitor = false;\n\n /** Every popup the server returned, keyed by code. Never pruned. */\n private readonly entries = new Map<string, WebPopupEntry>();\n\n /** Codes whose delay has elapsed, waiting for the display slot. */\n private readonly queue: Array<string> = [];\n\n /** The single popup on screen, if any. */\n private visible: VisibleWebPopup | null = null;\n\n private drainTimeoutId: number | null = null;\n\n private autoShowEnabled = true;\n\n private isNavigationSubscribed = false;\n\n private openPopupsCount = 0;\n\n private bodyOverflowBeforeLock: string | null = null;\n\n // Declared before readyPromise on purpose: the Promise executor runs\n // synchronously inside that field initialiser.\n private readyResolve!: () => void;\n\n private readonly readyPromise = new Promise<void>((resolve) => {\n this.readyResolve = resolve;\n });\n\n constructor(pw: Pushwoosh) {\n this.pw = pw;\n\n // Registered before run() so a site can call show() from its very first\n // Pushwoosh.push() callback; every public method awaits readyPromise.\n pw.moduleRegistry.webPopups = this;\n }\n\n public async run(): Promise<void> {\n const { pw } = this;\n\n try {\n this.autoShowEnabled = pw.initParams.webPopups?.autoShow !== false;\n\n await pw.api.ensureDeviceRegistered();\n\n this.isRecurringVisitor = await pw.data.getIsRecurringVisitor();\n\n const webPopups = await pw.api.getPopupForms();\n\n Logger.debug(`${WEB_POPUPS_LOG_PREFIX} Received ${webPopups.length} popup(s) from server:`, webPopups.map((webPopup) => webPopup.code));\n\n webPopups.forEach((popup, order) => {\n this.entries.set(popup.code, {\n popup,\n order,\n state: 'idle',\n content: null,\n loading: null,\n passedStrongConditions: false,\n timeoutId: null,\n visitRecorded: false,\n });\n });\n\n // Strong conditions gate AUTOMATIC display only — they are recorded, not\n // used as a load gate. Content is prefetched for every popup targeted at\n // this visitor, including trigger_type=API ones, so show() is instant;\n // popups that failed a strong condition are fetched lazily by show().\n await Promise.allSettled(Array.from(this.entries.values()).map(async (entry) => {\n entry.passedStrongConditions = await this.checkStrongCondition(entry.popup);\n if (entry.passedStrongConditions) {\n await this.ensureContent(entry);\n }\n }));\n\n const loaded = this.loadedCodes();\n Logger.debug(`${WEB_POPUPS_LOG_PREFIX} ${loaded.length} popup(s) passed strong conditions and loaded:`, loaded);\n\n this.subscribeToNavigation();\n this.renderForCurrentPage();\n\n await pw.data.setIsRecurringVisitor(true);\n } finally {\n // show() must never hang, even if run() blew up half way.\n this.readyResolve();\n pw.dispatchEvent('web-popups-ready', {});\n }\n }\n\n /* ------------------------------------------------------------------ *\n * Public API — Pushwoosh.moduleRegistry.webPopups\n * ------------------------------------------------------------------ */\n\n /**\n * Show a popup immediately, ignoring EVERY display condition: delay, page\n * rules, device_type, visitors_type, frequency capping and trigger_type.\n * An already visible popup is closed to make room.\n *\n * Stats and frequency bookkeeping are recorded exactly as for an automatic\n * display. Never rejects: resolves false and logs the reason on failure.\n */\n public async show(code: string): Promise<boolean> {\n await this.readyPromise;\n\n const entry = this.entries.get(code);\n if (!entry) {\n Logger.error(new Error('Unknown web popup code'), `${WEB_POPUPS_LOG_PREFIX} show(\"${code}\"): no such popup`);\n return false;\n }\n\n if (this.visible?.code === code) {\n return true;\n }\n\n // Awaited BEFORE preempting so close() and present() run in the same task:\n // otherwise the browser paints the moment between two modal popups with the\n // body scroll lock released.\n const content = await this.ensureContent(entry);\n if (!content) {\n Logger.error(new Error('Web popup content unavailable'), `${WEB_POPUPS_LOG_PREFIX} show(\"${code}\"): content unavailable`);\n return false;\n }\n\n // The automatic pipeline may have shown this very popup while we awaited;\n // re-presenting it would double-count the impression.\n if (this.visible?.code === code) {\n return true;\n }\n\n if (this.visible) {\n Logger.debug(`${WEB_POPUPS_LOG_PREFIX} show(\"${code}\") preempting \"${this.visible.code}\"`);\n // The preempted popup is finished with, not requeued: it already recorded\n // its impression and did its frequency bookkeeping.\n this.visible.close('preempted');\n }\n\n // Drop this popup's own armed timer / queue slot so the automatic pipeline\n // does not show it a second time.\n this.detachFromAutoPipeline(entry);\n\n this.present(entry, 'api');\n return true;\n }\n\n /**\n * Hide the visible popup, optionally only if it is the given one.\n * Returns false when nothing was hidden.\n */\n public hide(code?: string): boolean {\n if (!this.visible) {\n return false;\n }\n\n if (code !== undefined && this.visible.code !== code) {\n return false;\n }\n\n this.visible.close('api');\n return true;\n }\n\n /**\n * Hide the visible popup and dismiss everything still pending for this page\n * load. show() keeps working afterwards.\n */\n public hideAll(): boolean {\n const hadVisible = this.hide();\n\n this.entries.forEach((entry) => {\n if (entry.state !== 'waiting' && entry.state !== 'queued') {\n return;\n }\n\n this.detachFromAutoPipeline(entry);\n entry.state = 'done';\n });\n\n // After hide(), whose close() arms a drain for the next queued popup.\n this.cancelScheduledDrain();\n\n return hadVisible;\n }\n\n public isVisible(code?: string): boolean {\n if (!this.visible) {\n return false;\n }\n\n return code === undefined || this.visible.code === code;\n }\n\n public getVisibleCode(): string | null {\n return this.visible?.code ?? null;\n }\n\n public getAvailableCodes(): Array<string> {\n return Array.from(this.entries.keys());\n }\n\n public getState(): WebPopupsPublicState {\n const waiting: Array<string> = [];\n this.entries.forEach((entry, code) => {\n if (entry.state === 'waiting') {\n waiting.push(code);\n }\n });\n\n return {\n visible: this.getVisibleCode(),\n queued: [...this.queue],\n waiting,\n available: this.getAvailableCodes(),\n };\n }\n\n /* ------------------------------------------------------------------ *\n * Content loading\n * ------------------------------------------------------------------ */\n\n /**\n * Resolve the entry's renderable content, fetching it at most once. A failed\n * fetch clears the memo so a later show() can retry.\n */\n private ensureContent(entry: WebPopupEntry): Promise<WebPopupContentBundle | null> {\n if (entry.content) {\n return Promise.resolve(entry.content);\n }\n\n if (entry.loading) {\n return entry.loading;\n }\n\n entry.loading = this.loadContent(entry.popup)\n .then((content) => {\n entry.content = content;\n return content;\n })\n .catch((error) => {\n Logger.error(error, `${WEB_POPUPS_LOG_PREFIX} Failed to load web popup \"${entry.popup.code}\"`);\n return null;\n })\n .finally(() => {\n if (!entry.content) {\n entry.loading = null;\n }\n });\n\n return entry.loading;\n }\n\n private async loadContent(webPopup: WebPopup): Promise<WebPopupContentBundle | null> {\n if (webPopup.subscription_form_code) {\n // The popup shows a hosted subscription form; the form itself is fetched\n // and rendered by the external widget, we only need its script ready.\n await ensureSubscriptionFormsWidgetLoaded();\n return { kind: 'subscription-form', formCode: webPopup.subscription_form_code };\n }\n\n if (!webPopup.popup_form_content_code) {\n Logger.error(\n new Error('Web popup has no source'),\n `${WEB_POPUPS_LOG_PREFIX} Web popup \"${webPopup.code}\" has neither content nor subscription form; skipping`,\n );\n return null;\n }\n\n const content = await this.pw.api.getPopupFormContent(webPopup.popup_form_content_code);\n const parsed = parseWebPopupContent(content.json);\n if (!parsed) {\n // Legacy / unknown format — this popup is broken and never shows.\n Logger.error(\n new Error('Unsupported popup content format'),\n `${WEB_POPUPS_LOG_PREFIX} Web popup \"${webPopup.code}\" content is not a supported {version, params} popup; skipping`,\n );\n return null;\n }\n\n return { kind: 'content', parsed };\n }\n\n private loadedCodes(): Array<string> {\n const codes: Array<string> = [];\n this.entries.forEach((entry, code) => {\n if (entry.content) {\n codes.push(code);\n }\n });\n return codes;\n }\n\n /* ------------------------------------------------------------------ *\n * Automatic display pipeline\n * ------------------------------------------------------------------ */\n\n private renderForCurrentPage(): void {\n this.releaseUnmatchedPending();\n\n const armed: Array<string> = [];\n this.entries.forEach((entry, code) => {\n if (this.canAutoDisplay(entry)) {\n this.armDelay(entry);\n armed.push(code);\n }\n });\n\n Logger.debug(\n `${WEB_POPUPS_LOG_PREFIX} ${armed.length} popup(s) selected for display on \"${window.location.pathname}\":`,\n armed,\n );\n\n // Insurance: a no-op when something is visible or nothing is queued.\n this.drain();\n }\n\n private canAutoDisplay(entry: WebPopupEntry): boolean {\n return this.autoShowEnabled\n && entry.state === 'idle'\n && entry.passedStrongConditions\n && this.isAutoTrigger(entry.popup)\n && entry.content !== null\n && this.checkSoftCondition(entry.popup);\n }\n\n private isAutoTrigger(webPopup: WebPopup): boolean {\n const trigger = webPopup.trigger_type;\n\n // Absent (older backend) or explicitly PAGE_LOAD means automatic display.\n // Any other value — including one this SDK version does not know — counts\n // as API-only, so a future trigger kind never shows itself by accident.\n return !trigger || trigger === 'PAGE_LOAD';\n }\n\n private armDelay(entry: WebPopupEntry): void {\n const { popup } = entry;\n\n Logger.debug(`${WEB_POPUPS_LOG_PREFIX} Popup \"${popup.code}\" armed for display in ${popup.delay}s`);\n\n entry.state = 'waiting';\n this.recordVisit(entry);\n\n entry.timeoutId = window.setTimeout(() => {\n entry.timeoutId = null;\n entry.state = 'queued';\n this.insertIntoQueue(entry);\n\n Logger.debug(\n `${WEB_POPUPS_LOG_PREFIX} Popup \"${popup.code}\" delay elapsed; queued at position ${this.queue.indexOf(popup.code) + 1} of ${this.queue.length}`,\n );\n\n this.drain();\n }, popup.delay * 1000);\n }\n\n /**\n * VISIT is reported once per page load, when the popup is armed for the\n * current page — the same moment as before the queue existed.\n */\n private recordVisit(entry: WebPopupEntry): void {\n if (entry.visitRecorded) {\n return;\n }\n\n entry.visitRecorded = true;\n this.pw.api.recordPopupFormEvent(entry.popup.code, 1).catch((error) => {\n Logger.error(error, `${WEB_POPUPS_LOG_PREFIX} Failed to record web popup visit event for \"${entry.popup.code}\"`);\n });\n }\n\n /** Ordering: shorter delay first, then the order the server returned them. */\n private insertIntoQueue(entry: WebPopupEntry): void {\n const isAfter = (code: string): boolean => {\n const other = this.entries.get(code);\n if (!other) {\n return false;\n }\n\n if (other.popup.delay !== entry.popup.delay) {\n return other.popup.delay > entry.popup.delay;\n }\n\n return other.order > entry.order;\n };\n\n const index = this.queue.findIndex(isAfter);\n if (index === -1) {\n this.queue.push(entry.popup.code);\n return;\n }\n\n this.queue.splice(index, 0, entry.popup.code);\n }\n\n /**\n * Release popups whose page rules stopped matching, both the ones still\n * waiting out their delay and the ones already queued. They return to `idle`\n * and are re-armed with a full delay if the visitor comes back.\n */\n private releaseUnmatchedPending(): void {\n this.entries.forEach((entry) => {\n if (entry.state !== 'waiting' && entry.state !== 'queued') {\n return;\n }\n\n if (this.checkSoftCondition(entry.popup)) {\n return;\n }\n\n this.detachFromAutoPipeline(entry);\n entry.state = 'idle';\n\n Logger.debug(`${WEB_POPUPS_LOG_PREFIX} Released popup \"${entry.popup.code}\": page no longer matches`);\n });\n }\n\n /** Clear an entry's armed timer and queue slot, leaving its state to the caller. */\n private detachFromAutoPipeline(entry: WebPopupEntry): void {\n if (entry.timeoutId !== null) {\n window.clearTimeout(entry.timeoutId);\n entry.timeoutId = null;\n }\n\n const index = this.queue.indexOf(entry.popup.code);\n if (index !== -1) {\n this.queue.splice(index, 1);\n }\n }\n\n /** Show the head of the queue if the display slot is free. */\n private drain(): void {\n if (this.visible || this.drainTimeoutId !== null) {\n return;\n }\n\n const code = this.queue.shift();\n if (code === undefined) {\n return;\n }\n\n const entry = this.entries.get(code);\n if (!entry || entry.state !== 'queued') {\n this.drain();\n return;\n }\n\n // The page may have changed between enqueue and the slot freeing up.\n if (!this.checkSoftCondition(entry.popup)) {\n entry.state = 'idle';\n this.drain();\n return;\n }\n\n if (!entry.content) {\n entry.state = 'done';\n this.drain();\n return;\n }\n\n Logger.debug(`${WEB_POPUPS_LOG_PREFIX} Display slot free; showing \"${code}\"`);\n this.present(entry, 'auto');\n }\n\n private scheduleDrain(): void {\n if (this.drainTimeoutId !== null) {\n return;\n }\n\n this.drainTimeoutId = window.setTimeout(() => {\n this.drainTimeoutId = null;\n this.drain();\n }, QUEUE_GAP_MS);\n }\n\n private cancelScheduledDrain(): void {\n if (this.drainTimeoutId === null) {\n return;\n }\n\n window.clearTimeout(this.drainTimeoutId);\n this.drainTimeoutId = null;\n }\n\n /* ------------------------------------------------------------------ *\n * Rendering\n * ------------------------------------------------------------------ */\n\n private present(entry: WebPopupEntry, trigger: WebPopupShowTrigger): void {\n // A drain armed by the popup we are replacing must not fire behind us.\n this.cancelScheduledDrain();\n\n const { popup, content } = entry;\n if (!content) {\n entry.state = 'done';\n return;\n }\n\n // The host is pointer-transparent: the reader's overlay / popup box\n // re-enable pointer events themselves, so a corner banner without a\n // dim never blocks the page underneath.\n const host = document.createElement('div');\n host.id = `${WEB_POPUPS_WIDGET_NAMESPACE}-${popup.code}`;\n host.style.position = 'fixed';\n host.style.inset = '0';\n host.style.zIndex = String(POPUP_HOST_Z_INDEX);\n host.style.pointerEvents = 'none';\n document.body.appendChild(host);\n\n const shadow = host.attachShadow({ mode: 'open' });\n const container = document.createElement('div');\n shadow.appendChild(container);\n\n // Only a dimmed (modal) popup locks the page scroll; banners and bars\n // leave the page usable. A subscription form popup is always modal.\n const modal = content.kind === 'subscription-form' || !!content.parsed.overlay;\n if (modal) {\n this.lockBodyScroll();\n }\n\n let closed = false;\n const close = (reason: WebPopupHideReason): void => {\n // Idempotent: the reader's overlay click and hide() can race.\n if (closed) {\n return;\n }\n closed = true;\n\n if (modal) {\n this.unlockBodyScroll();\n }\n\n if (content.kind === 'content') {\n unmountWebPopup(container);\n }\n host.remove();\n\n if (this.visible?.code === popup.code) {\n this.visible = null;\n }\n entry.state = 'done';\n\n this.pw.dispatchEvent('hide-web-popup', { code: popup.code, reason });\n this.scheduleDrain();\n };\n\n this.visible = {\n code: popup.code, host, modal, close,\n };\n entry.state = 'visible';\n\n if (content.kind === 'subscription-form') {\n // The widget draws only the form card (hosted mode); the SDK provides\n // the backdrop, centering and close-on-backdrop-click.\n this.renderSubscriptionForm(container, content.formCode, () => close('user'));\n } else {\n // The reader draws the whole chrome (overlay that closes on click,\n // placement, animation, the close button and close-action buttons).\n renderWebPopup(container, content.parsed, () => close('user'));\n\n // Embedded email-subscription forms count a view per showing — the\n // denominator of the form's conversion stats (the hosted-widget path\n // above records its own views).\n const formCodes = collectWebPopupFormCodes(content.parsed);\n if (formCodes.length > 0) {\n this.pw.data.getHwid()\n .then((hwid) => formCodes.forEach((formCode) => recordSubscriptionFormView(formCode, hwid)))\n .catch((error) => {\n Logger.error(error, `${WEB_POPUPS_LOG_PREFIX} Failed to record subscription form views for web popup \"${popup.code}\"`);\n });\n }\n }\n\n Logger.debug(`${WEB_POPUPS_LOG_PREFIX} Popup \"${popup.code}\" shown (kind: ${content.kind}, trigger: ${trigger})`);\n\n // A no-op on the automatic path, where the visit was recorded at arm time.\n this.recordVisit(entry);\n this.markAsShown(popup).catch((error) => {\n Logger.error(error, `${WEB_POPUPS_LOG_PREFIX} Failed to mark web popup \"${popup.code}\" as shown`);\n });\n this.pw.dispatchEvent('show-web-popup', { code: popup.code, trigger });\n }\n\n private renderSubscriptionForm(container: HTMLElement, formCode: string, onRequestClose: () => void): void {\n const backdrop = document.createElement('div');\n backdrop.style.position = 'absolute';\n backdrop.style.inset = '0';\n backdrop.style.background = 'rgba(0, 0, 0, 0.5)';\n backdrop.style.pointerEvents = 'auto';\n backdrop.style.display = 'flex';\n backdrop.style.alignItems = 'center';\n backdrop.style.justifyContent = 'center';\n backdrop.style.padding = '20px';\n backdrop.style.boxSizing = 'border-box';\n backdrop.addEventListener('click', (event) => {\n if (event.target === backdrop) {\n onRequestClose();\n }\n });\n\n const widget = document.createElement(SUBSCRIPTION_FORMS_WIDGET_TAG) as HTMLElement & { formCode: string };\n widget.formCode = formCode;\n // Hosted mode: the widget skips its own frequency/delay/overlay and\n // dispatches `esw-close` when it wants (or needs) to be dismissed.\n widget.setAttribute('hosted-mode', '');\n widget.addEventListener('esw-close', onRequestClose);\n\n backdrop.appendChild(widget);\n container.appendChild(backdrop);\n }\n\n /* ------------------------------------------------------------------ *\n * Scroll lock\n * ------------------------------------------------------------------ */\n\n private lockBodyScroll(): void {\n if (this.openPopupsCount === 0) {\n this.bodyOverflowBeforeLock = document.body.style.overflow;\n document.body.style.overflow = 'hidden';\n }\n this.openPopupsCount += 1;\n }\n\n private unlockBodyScroll(): void {\n this.openPopupsCount = Math.max(0, this.openPopupsCount - 1);\n if (this.openPopupsCount === 0 && this.bodyOverflowBeforeLock !== null) {\n document.body.style.overflow = this.bodyOverflowBeforeLock;\n this.bodyOverflowBeforeLock = null;\n }\n }\n\n /* ------------------------------------------------------------------ *\n * Conditions\n * ------------------------------------------------------------------ */\n\n private subscribeToNavigation(): void {\n if (this.isNavigationSubscribed) {\n return;\n }\n\n this.isNavigationSubscribed = true;\n\n const onNavigate = (): void => this.renderForCurrentPage();\n\n const nav = (window as Window & { navigation?: EventTarget }).navigation;\n if (nav && typeof nav.addEventListener === 'function') {\n nav.addEventListener('currententrychange', onNavigate);\n return;\n }\n\n window.addEventListener('popstate', onNavigate);\n window.addEventListener('hashchange', onNavigate);\n\n // Programmatic pushState/replaceState fires no event; poll location instead\n // of monkey-patching history so SPA routers stay untouched.\n let lastHref = window.location.href;\n window.setInterval(() => {\n if (window.location.href !== lastHref) {\n lastHref = window.location.href;\n onNavigate();\n }\n }, 500);\n }\n\n private async checkStrongCondition(webPopup: WebPopup): Promise<boolean> {\n const conditions: Array<boolean> = await Promise.all([\n this.checkCanBeShownByDeviceTypeCondition(webPopup),\n this.checkCanBeShownByFrequencyCondition(webPopup),\n this.checkCanBeShownByVisitorsTypeCondition(webPopup),\n ]);\n\n return conditions.every((condition) => condition);\n }\n\n private checkSoftCondition(webPopup: WebPopup): boolean {\n return this.checkCanBeShownByMatchingPagesCondition(webPopup);\n }\n\n private checkCanBeShownByDeviceTypeCondition(webPopup: WebPopup): boolean {\n const { device_type: deviceType } = webPopup;\n\n const formFactor = this.pw.platformChecker.formFactor;\n if (deviceType === 'ALL') {\n return true;\n }\n\n return deviceType === formFactor;\n }\n\n private async checkCanBeShownByFrequencyCondition(webPopup: WebPopup): Promise<boolean> {\n const { frequency, code } = webPopup;\n\n if (frequency === 'ONCE') {\n const shown = await this.pw.data.getShownWebPopups();\n return !shown.includes(code);\n }\n\n if (frequency === 'ONCE_PER_SESSION') {\n return sessionStorage.getItem(this.getSessionStorageKey(code)) === null;\n }\n\n return true;\n }\n\n private checkCanBeShownByMatchingPagesCondition(webPopup: WebPopup): boolean {\n const { matching_pages: matchingPages, matching_page_rules: matchingPageRules, excluded_pages: excludedPages } = webPopup;\n const path = window.location.pathname;\n\n // \"Specified pages\": operator-aware rules preferred, legacy exact list as fallback.\n if (matchingPageRules && matchingPageRules.length > 0) {\n return matchingPageRules.some((rule) => this.matchPageRule(path, rule));\n }\n\n if (matchingPages && matchingPages.length > 0) {\n return matchingPages.includes(path);\n }\n\n if (excludedPages && excludedPages.length > 0) {\n return !excludedPages.some((rule) => this.matchPageRule(path, rule));\n }\n\n return true;\n }\n\n private matchPageRule(path: string, rule: PageRule): boolean {\n switch (rule.operator) {\n case 'EQUALS':\n return path === rule.path;\n case 'STARTS_WITH':\n return path.startsWith(rule.path);\n default:\n // Unknown operator: skip the rule (fail-open) rather than hide/crash.\n return false;\n }\n }\n\n private checkCanBeShownByVisitorsTypeCondition(webPopup: WebPopup): boolean {\n const { visitors_type: visitorsType } = webPopup;\n\n if (visitorsType === 'NEW') {\n return !this.isRecurringVisitor;\n }\n\n if (visitorsType === 'RECURRING') {\n return this.isRecurringVisitor;\n }\n\n return true;\n }\n\n private async markAsShown(webPopup: WebPopup): Promise<void> {\n this.pw.api.recordPopupFormEvent(webPopup.code, 2).catch((error) => {\n Logger.error(error, `${WEB_POPUPS_LOG_PREFIX} Failed to record web popup shown event for \"${webPopup.code}\"`);\n });\n const { frequency, code } = webPopup;\n\n if (frequency === 'ONCE') {\n await this.pw.data.addShownWebPopup(code);\n return;\n }\n\n if (frequency === 'ONCE_PER_SESSION') {\n sessionStorage.setItem(this.getSessionStorageKey(code), '1');\n }\n }\n\n private getSessionStorageKey(code: string): string {\n return `${WEB_POPUPS_WIDGET_NAMESPACE}.shown.${code}`;\n }\n}\n"],"names":["root","factory","exports","module","define","amd","a","i","this","__webpack_require__","definition","Array","isArray","length","key","binding","o","Object","defineProperty","enumerable","value","get","obj","prop","prototype","hasOwnProperty","call","Symbol","toStringTag","SAFE_URL_PROTOCOL","WEB_POPUP_TEXT_COLOR","WEB_POPUP_DEFAULT_COLORS","WEB_POPUP_TEXT_VARIANT_STYLES","h1","fontSize","fontWeight","lineHeight","h2","h3","body","caption","eyebrow","letterSpacing","icon","INVERSE_TEXT_ALPHAS","webPopupTextColor","variant","colors","inverse","color","alpha","hex","exec","full","split","map","c","join","r","g","b","parseInt","slice","inverseColorAt","textInverse","textSecondary","text","WEB_POPUP_BUTTON_SLOT_PADDING","WEB_POPUP_FORM_SLOT_PADDING","webPopupButtonPillStyle","accent","display","boxSizing","width","padding","borderRadius","fontFamily","textAlign","textDecoration","cursor","backgroundColor","border","WEB_POPUP_FORM_ERROR_COLOR","webPopupFormInputStyle","borderColor","outline","WEB_POPUP_FORM_DEFAULTS","WEB_POPUP_KEYFRAMES","CONTAINER_TYPES","ORDERS","ALIGN_ITEMS","JUSTIFY_CONTENT","TEXT_ALIGNS","TONES","MAX_LENGTH_PX","LENGTH_UNIT_MAX","px","em","rem","LENGTH_PATTERN","TRACK_UNIT_MAX","fr","TRACK_PATTERN","TRACK_KEYWORDS","oneOf","allowed","includes","undefined","cssLength","Number","isFinite","Math","min","max","match","trim","amount","unit","parseFloat","BOX_SIDES","trackSize","token","nonEmptyString","containerProps","raw","props","gap","whole","sides","side","sideValue","keys","boxPadding","alignItems","justifyContent","alignContent","backgroundImage","sizes","isInteger","tokens","clamped","every","trackSizes","normalizeNode","depth","budget","nodes","node","type","content","out","align","tone","image","children","child","normalized","push","order","reverse","normalizeWebPopupLayout","WEB_POPUP_VALUE_KEY_PATTERN","VALUE_REF_PATTERN","substituteString","values","substituteWebPopupLayoutValues","layout","substituteNode","BINDING_PROPS","Set","entries","has","webPopupCssLength","webPopupTracksValue","childCount","webPopupBackgroundImageStyle","src","dim","JSON","stringify","scrim","backgroundSize","backgroundPosition","webPopupContainerStyle","backgroundSrc","backgroundDim","style","minWidth","gridAutoFlow","gridTemplateColumns","gridTemplateRows","top","right","bottom","left","webPopupPaddingValue","assign","safeUrl","url","trimmed","startsWith","test","webPopupLinkTargetAttrs","target","rel","SANITIZE_ALLOWED_TAGS","copySanitized","from","to","doc","childNodes","nodeType","appendChild","createTextNode","textContent","el","tagName","clean","createElement","toLowerCase","href","getAttribute","setAttribute","sanitizeWebPopupHtml","html","parsed","DOMParser","parseFromString","innerHTML","colorString","normalizeWebPopupColors","params","background","IMAGE_FITS","normalizeImages","img","label","mediaId","fit","blur","LENGTH_CONTROL_UNITS","finiteNumber","normalizeValueControl","control","kind","units","filter","u","ranges","entry","normalizeControlRanges","options","option","normalizeWebPopupValues","some","v","webPopupValuesMap","fromEntries","FORM_FIELD_KINDS","BUTTON_VARIANTS","normalizeFormFields","field","f","placeholder","required","tag","unshift","normalizeSlots","slot","formCode","fields","submitLabel","submitVariant","privacy","checkboxLabel","linkLabel","successMessage","confirmEmailMessage","action","normalizeContents","zone","slots","validSize","resolveWebPopupPageSize","own","shared","axis","resolved","resolveWebPopupPages","page","pages","height","images","contents","placementMaxSize","placement","offset","WEB_POPUPS_WIDGET_NAMESPACE","WEB_POPUPS_LOG_PREFIX","SUBSCRIPTION_FORMS_WIDGET_URL","SUBSCRIPTION_FORMS_WIDGET_TAG","n","preact_module_l","e","s","h","p","y","d","w","_","m","l","parentNode","removeChild","k","t","arguments","defaultProps","x","ref","__k","__","__b","__e","__c","constructor","__v","__i","__u","vnode","S","C","context","$","I","__P","__d","q","__n","namespaceURI","D","P","base","A","H","__r","debounceRendering","sort","shift","L","T","J","j","nextSibling","String","O","K","insertBefore","F","z","setProperty","N","cssText","replace","addEventListener","removeEventListener","removeAttribute","V","event","M","render","contextType","__E","Q","sub","state","__h","_sb","__s","getDerivedStateFromProps","componentWillMount","componentDidMount","componentWillReceiveProps","shouldComponentUpdate","apply","componentWillUpdate","componentDidUpdate","getChildContext","getSnapshotBeforeUpdate","E","then","indexOf","B","G","diffed","localName","document","createElementNS","is","__m","data","defaultValue","attributes","name","__html","current","unmount","componentWillUnmount","R","documentElement","firstChild","U","W","getDerivedStateFromError","setState","componentDidCatch","forceUpdate","Promise","bind","resolve","setTimeout","random","toString","jsxRuntime_module_f","jsxRuntime_module_u","__source","__self","hooks_module_t","hooks_module_r","hooks_module_u","hooks_module_i","hooks_module_o","hooks_module_f","hooks_module_c","hooks_module_e","hooks_module_a","hooks_module_v","hooks_module_l","hooks_module_m","hooks_module_p","hooks_module_s","__H","hooks_module_d","hooks_module_y","hooks_module_D","__N","__f","hooks_module_h","hooks_module_C","hooks_module_","hooks_module_A","hooks_module_T","hooks_module_F","concat","hooks_module_q","hooks_module_x","hooks_module_P","useDebugValue","hooks_module_g","hooks_module_j","hooks_module_z","hooks_module_B","requestAnimationFrame","hooks_module_w","hooks_module_k","clearTimeout","cancelAnimationFrame","compat_module_g","compat_module_E","compat_module_C","compat_module_R","compat_module_x","compat_module_w","compat_module_k","compat_module_I","compat_module_M","isPureReactComponent","compat_module_T","compat_module_A","for","compat_module_F","compat_module_L","forEach","count","only","toArray","compat_module_O","compat_module_U","compat_module_V","compat_module_W","compat_module_P","compat_module_j","__a","compat_module_B","__z","__R","__O","pop","fallback","compat_module_H","delete","revealOrder","size","Z","Y","contains","splice","Map","set","compat_module_q","compat_module_G","compat_module_J","compat_module_K","compat_module_Q","compat_module_X","isReactComponent","configurable","writable","en","persist","isPropagationStopped","cancelBubble","isDefaultPrevented","defaultPrevented","nativeEvent","rn","un","class","on","multiple","selected","className","$$typeof","ln","cn","fn","ReactCurrentDispatcher","readContext","useCallback","useContext","useDeferredValue","useEffect","useId","useImperativeHandle","useInsertionEffect","useLayoutEffect","useMemo","useReducer","useRef","useState","useSyncExternalStore","useTransition","hn","gn","startTransition","version","Children","hydrate","unmountComponentAtNode","createPortal","containerInfo","createContext","add","Provider","__l","Consumer","createFactory","cloneElement","createRef","Fragment","isValidElement","isElement","isFragment","isMemo","displayName","findDOMNode","Component","PureComponent","memo","forwardRef","flushSync","unstable_batchedUpdates","StrictMode","Suspense","SuspenseList","lazy","default","__SECRET_INTERNALS_DO_NOT_USE_OR_YOU_WILL_BE_FIRED","ANIMATION_STYLE","none","fade","slide","TextSlotView","dangerouslySetInnerHTML","ButtonSlotView","onRequestClose","onPageChange","pill","wrapper","onClick","FORM_EMAIL_PATTERN","FORM_INPUT_TYPES","email","phone","FORM_AUTOCOMPLETE","firstName","lastName","PRIVACY_ERROR_KEY","FormSlotView","onSubmitForm","setValues","policyAccepted","setPolicyAccepted","focusedKey","setFocusedKey","errors","setErrors","phase","setPhase","captionColor","captionStyle","errorStyle","paddingTop","messageStyle","submitting","privacyHref","opacity","noValidate","margin","onSubmit","preventDefault","found","payload","customFields","result","submit","error","paddingBottom","autoComplete","disabled","onFocus","onBlur","onChange","setFieldValue","currentTarget","prev","checked","flexShrink","ContentNodeView","leaf","find","renderZone","ImageNodeView","renderImage","objectFit","alt","LayoutNodeView","bgKey","index","inner","backdropFilter","WebkitBackdropFilter","WebPopupBox","leafRenderers","animatePage","position","overflow","boxShadow","transition","overflowY","pageStyle","animation","minHeight","CloseButton","fixedContainerStyle","maxWidth","maxHeight","pointerEvents","tx","ty","transform","anim","WebPopupReader","mode","pageKey","setPageKey","Image","startPage","startPageOf","overlay","inset","STORE_NAME_KEY_VALUE","STORE_NAME_MESSAGE_LOG","STORE_NAME_INBOX_MESSAGES","storeCreatorDecorator","storeCreator","database","objectStoreNames","initial","createObjectStore","keyPath","logStore","autoIncrement","createIndex","unique","statusIndex","store","multiEntry","Migrations","all","MigrationExecutor","db","migrationsBuilder","applyMigrations","applyMigrationsPack","migrationsPack","migration","onversionchange","console","info","close","databasePromise","getInstanceWithPromise","executor","reject","request","indexedDB","open","onsuccess","onerror","onupgradeneeded","LogBase","_add","transaction","objectStore","getAll","items","ids","id","maxItems","openCursor","ev","cursorResult","continue","log","environment","self","registration","message","additional","date","Date","Error","stack","levels","debug","limitLevel","Logger","setLevel","level","write","levelName","levelNumber","args","groupCollapsed","trace","groupEnd","SUBMIT_RESULTS","SUBMIT_FORM_RESULT_SUBSCRIBED","SUBMIT_FORM_RESULT_CONFIRM_EMAIL","SUBMIT_FORM_RESULT_ALREADY_SUBSCRIBED","formUrl","encodeURIComponent","submitSubscriptionForm","async","response","fetch","method","headers","userId","ok","status","json","parseWebPopupContent","parse","candidate","parseWebPopupJson","loadPromise","WebPopupsWidget","pw","isRecurringVisitor","queue","visible","drainTimeoutId","autoShowEnabled","isNavigationSubscribed","openPopupsCount","bodyOverflowBeforeLock","readyPromise","readyResolve","moduleRegistry","webPopups","run","initParams","autoShow","api","ensureDeviceRegistered","getIsRecurringVisitor","getPopupForms","webPopup","code","popup","loading","passedStrongConditions","timeoutId","visitRecorded","allSettled","checkStrongCondition","ensureContent","loaded","loadedCodes","subscribeToNavigation","renderForCurrentPage","setIsRecurringVisitor","dispatchEvent","show","detachFromAutoPipeline","present","hide","hideAll","hadVisible","cancelScheduledDrain","isVisible","getVisibleCode","getAvailableCodes","getState","waiting","queued","available","loadContent","catch","finally","subscription_form_code","customElements","fail","window","script","head","whenDefined","popup_form_content_code","getPopupFormContent","codes","releaseUnmatchedPending","armed","canAutoDisplay","armDelay","location","pathname","drain","isAutoTrigger","checkSoftCondition","trigger","trigger_type","delay","recordVisit","insertIntoQueue","recordPopupFormEvent","findIndex","other","scheduleDrain","host","zIndex","shadow","attachShadow","container","modal","lockBodyScroll","closed","reason","unlockBodyScroll","unmountWebPopup","remove","renderSubscriptionForm","renderWebPopup","formCodes","collectWebPopupFormCodes","getHwid","hwid","recordSubscriptionFormView","markAsShown","backdrop","widget","onNavigate","nav","navigation","lastHref","setInterval","checkCanBeShownByDeviceTypeCondition","checkCanBeShownByFrequencyCondition","checkCanBeShownByVisitorsTypeCondition","condition","checkCanBeShownByMatchingPagesCondition","device_type","deviceType","formFactor","platformChecker","frequency","getShownWebPopups","sessionStorage","getItem","getSessionStorageKey","matching_pages","matchingPages","matching_page_rules","matchingPageRules","excluded_pages","excludedPages","path","rule","matchPageRule","operator","visitors_type","visitorsType","setItem","addShownWebPopup"],"sourceRoot":""}
|