@aiconomy/aico-components 0.1.0 → 0.2.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/dist/aico-components/aico-components.esm.js +1 -1
- package/dist/aico-components/aico-components.esm.js.map +1 -1
- package/dist/aico-components/{p-17b7115a.entry.js → p-cf9b69ea.entry.js} +3 -3
- package/dist/aico-components/p-cf9b69ea.entry.js.map +1 -0
- package/dist/cjs/aico-album-content_28.cjs.entry.js +131 -10
- package/dist/cjs/aico-album-content_28.cjs.entry.js.map +1 -1
- package/dist/cjs/aico-components.cjs.js +1 -1
- package/dist/cjs/loader.cjs.js +1 -1
- package/dist/collection/components/aico-article-detail/aico-article-detail.js +11 -7
- package/dist/collection/components/aico-article-detail/aico-article-detail.js.map +1 -1
- package/dist/collection/components/aico-neo-content/aico-neo-content.js +53 -2
- package/dist/collection/components/aico-neo-content/aico-neo-content.js.map +1 -1
- package/dist/collection/utils/neo/neo-lead-trim.js +106 -0
- package/dist/collection/utils/neo/neo-lead-trim.js.map +1 -0
- package/dist/components/aico-article-detail2.js +11 -7
- package/dist/components/aico-article-detail2.js.map +1 -1
- package/dist/components/aico-neo-content2.js +126 -5
- package/dist/components/aico-neo-content2.js.map +1 -1
- package/dist/esm/aico-album-content_28.entry.js +131 -10
- package/dist/esm/aico-album-content_28.entry.js.map +1 -1
- package/dist/esm/aico-components.js +1 -1
- package/dist/esm/loader.js +1 -1
- package/dist/ssr/index.js +134 -11
- package/dist/ssr/index.mjs +134 -11
- package/dist/types/components/aico-article-detail/aico-article-detail.d.ts +3 -1
- package/dist/types/components/aico-neo-content/aico-neo-content.d.ts +10 -0
- package/dist/types/components.d.ts +16 -0
- package/dist/types/utils/neo/neo-lead-trim.d.ts +33 -0
- package/package.json +1 -1
- package/dist/aico-components/p-17b7115a.entry.js.map +0 -1
|
@@ -1 +1 @@
|
|
|
1
|
-
{"file":"aico-neo-content2.js","mappings":"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","names":[],"sources":["src/model/article/NeoDocument.ts","src/utils/neo/neo-locale-resolver.ts","src/utils/neo/news-neo-renderer.ts","src/components/aico-neo-content/aico-neo-content.css?tag=aico-neo-content","src/components/aico-neo-content/aico-neo-content.tsx"],"sourcesContent":["/**\n * The AICO Neo content-builder document (`attributes.contentBuilderNeoJson`).\n *\n * Only the fields this package touches are typed; the renderer treats the\n * document as an open shape, so unknown keys pass through untouched.\n */\n\nexport type NeoElement = {\n id: string;\n type: string;\n content?: { [key: string]: unknown };\n styles?: { desktop?: { [key: string]: unknown }; mobile?: { [key: string]: unknown } };\n children?: NeoElement[];\n [key: string]: unknown;\n};\n\nexport type NeoSection = {\n id: string;\n name?: string;\n elements: NeoElement[];\n [key: string]: unknown;\n};\n\nexport type NeoDocument = {\n sections: NeoSection[];\n /** Locale the base element content is authored in (see neo-locale-resolver). */\n baseLocale?: string;\n /** Sparse per-locale content overrides keyed by locale (see neo-locale-resolver). */\n localeOverrides?: { [locale: string]: unknown };\n designTokens?: { [key: string]: unknown };\n settings?: { [key: string]: unknown };\n seo?: { [key: string]: unknown };\n version?: number | string;\n [key: string]: unknown;\n};\n\n/** Whether an article's Neo document actually carries content. */\nexport function neoDocumentHasContent(document?: NeoDocument | null): boolean {\n return !!document && Array.isArray(document.sections) && document.sections.length > 0;\n}\n","/**\n * Client-side locale resolution for AICO Neo content-builder documents.\n *\n * Port of the aico backend's `Modules\\Storefront\\Support\\NeoLocaleResolver`\n * (which the b2b storefront applies server-side before embedding the JSON —\n * the v1 API used by this package ships the document UNRESOLVED, so the\n * resolution has to happen here).\n *\n * The document may carry `baseLocale` (the locale the base element content is\n * authored in) plus sparse per-locale overrides:\n *\n * localeOverrides[locale] = {\n * seo?: { ...partial seo },\n * elements?: { [elementId]: { content?: { ...only differing fields } } },\n * sections?: { [sectionId]: { name? } },\n * }\n *\n * The requested locale resolves to override entries via the storefront's\n * general fallback rule (same-language prefix first, exact locale on top,\n * then the default locale's entries, then base content). Matching override\n * content is merged FIELD-level over the base content and the locale\n * structure is stripped, so the renderer stays locale-unaware.\n */\n\ntype AnyRecord = { [key: string]: unknown };\n\n/** `en-US` → `en_US` */\nfunction normalize(locale: string): string {\n return locale.trim().replace(/-/g, '_');\n}\n\n/** Language prefix: `en_US` → `en`, `en` → `en`. */\nfunction language(locale: string): string {\n const normalized = normalize(locale);\n const separatorPosition = normalized.indexOf('_');\n return separatorPosition === -1 ? normalized : normalized.substring(0, separatorPosition);\n}\n\nfunction sameLanguage(first: string, second: string): boolean {\n const firstLanguage = language(first);\n return firstLanguage !== '' && firstLanguage === language(second);\n}\n\nfunction isPlainObject(value: unknown): value is AnyRecord {\n return typeof value === 'object' && value !== null && !Array.isArray(value);\n}\n\n/**\n * Whether the document is locale-aware: an authored base locale or at least\n * one locale override. Documents without the structure are monolingual.\n */\nexport function hasLocaleStructure(document: AnyRecord): boolean {\n const baseLocale = document.baseLocale;\n if (typeof baseLocale === 'string' && baseLocale.trim() !== '') {\n return true;\n }\n const overrides = document.localeOverrides;\n return isPlainObject(overrides) && Object.keys(overrides).length > 0;\n}\n\n/**\n * All override entries serving the locale, weakest-first: same-language keys\n * (e.g. `en` for `en_US`), then the exact-normalized key last so it wins the\n * merge.\n */\nfunction matchKeys(availableKeys: string[], locale: string): string[] {\n let exact: string | null = null;\n const sameLanguageKeys: string[] = [];\n for (const key of availableKeys) {\n if (normalize(key) === normalize(locale)) {\n exact = key;\n } else if (sameLanguage(key, locale)) {\n sameLanguageKeys.push(key);\n }\n }\n if (exact !== null) {\n sameLanguageKeys.push(exact);\n }\n return sameLanguageKeys;\n}\n\n/**\n * Which override entries serve the requested locale, in APPLICATION order\n * (weakest first). Falls back to the default locale's entries when the\n * requested language has none, then to none (base content).\n */\nfunction pickOverrideLocales(availableKeys: string[], locale: string, defaultLocale: string | null, baseLocale: string | null): string[] {\n if (availableKeys.length === 0) {\n return [];\n }\n\n // The base content already speaks the requested language.\n if (baseLocale !== null && sameLanguage(locale, baseLocale)) {\n return [];\n }\n\n const matches = matchKeys(availableKeys, locale);\n if (matches.length > 0) {\n return matches;\n }\n\n if (defaultLocale !== null && defaultLocale.trim() !== '' && !(baseLocale !== null && sameLanguage(defaultLocale, baseLocale))) {\n const defaultMatches = matchKeys(availableKeys, defaultLocale);\n if (defaultMatches.length > 0) {\n return defaultMatches;\n }\n }\n\n return [];\n}\n\n/**\n * Apply sparse content overrides by element id, recursing into `children`\n * (e.g. columns wrap their cells as child elements).\n */\nfunction applyElementOverrides(elements: unknown[], overridesByElementId: AnyRecord): unknown[] {\n return elements.map(element => {\n if (!isPlainObject(element)) {\n return element;\n }\n\n let result: AnyRecord = element;\n const elementId = element.id;\n const override = typeof elementId === 'string' || typeof elementId === 'number' ? overridesByElementId[String(elementId)] : undefined;\n if (isPlainObject(override) && isPlainObject(override.content)) {\n const baseContent = isPlainObject(result.content) ? result.content : {};\n result = { ...result, content: { ...baseContent, ...override.content } };\n }\n\n if (Array.isArray(result.children)) {\n result = { ...result, children: applyElementOverrides(result.children, overridesByElementId) };\n }\n\n return result;\n });\n}\n\n/**\n * Merge the override for the requested locale into the document and strip the\n * locale structure. Safe on any shape — unknown keys pass through untouched.\n * Does not mutate the input document.\n */\nexport function resolveLocale<T extends AnyRecord>(document: T, locale: string, defaultLocale: string | null = null): T {\n const overrides = isPlainObject(document.localeOverrides) ? document.localeOverrides : {};\n const baseLocale = typeof document.baseLocale === 'string' ? document.baseLocale : null;\n\n // LAYERED application: a language-only entry (`en`) applies first, a\n // region-exact entry (`en_US`) merges on top, so both key styles compose.\n const overrideKeys = pickOverrideLocales(Object.keys(overrides), locale, defaultLocale, baseLocale);\n\n let resolved: AnyRecord = { ...document };\n\n for (const overrideKey of overrideKeys) {\n const override = overrides[overrideKey];\n if (!isPlainObject(override)) {\n continue;\n }\n\n const elementOverrides = isPlainObject(override.elements) ? override.elements : {};\n if (Object.keys(elementOverrides).length > 0 && Array.isArray(resolved.sections)) {\n resolved = {\n ...resolved,\n sections: resolved.sections.map(section =>\n isPlainObject(section) && Array.isArray(section.elements) ? { ...section, elements: applyElementOverrides(section.elements, elementOverrides) } : section,\n ),\n };\n }\n\n if (isPlainObject(override.seo) && Object.keys(override.seo).length > 0) {\n const baseSeo = isPlainObject(resolved.seo) ? resolved.seo : {};\n resolved = { ...resolved, seo: { ...baseSeo, ...override.seo } };\n }\n }\n\n delete resolved.localeOverrides;\n delete resolved.baseLocale;\n\n return resolved as T;\n}\n","/**\n * news-neo-renderer.ts\n *\n * The AICO Neo content-builder renderer (`contentBuilderNeoJson` -> HTML),\n * VENDORED VERBATIM from the kj-theme's `assets/content-builder-neo.js`\n * (aico release/kj_v2.1.5, Modules/Storefront/Resources/scaffolds/kj-theme),\n * itself ported from the Shopify news-neo.js. Element coverage: heading, text,\n * html, image, button (design-token aware), gallery, media-gallery, slideshow,\n * video, youtube/vimeo, divider, columns. Injects its own component CSS once\n * per document and hydrates sliders/lightboxes.\n *\n * Changes versus the theme file (keep this list exhaustive when syncing):\n * 1. IIFE wrapper + #aico-content bootstrap removed; `window.NewsNeo`\n * became the `NewsNeo` export (same shape).\n * 2. `setActiveLocale()` added; pickTranslation prefers it over the page's\n * `window.current_locale_code` global.\n * 3. The button renderer honors the builder's `content.button*` design\n * fields (variant/shape/size/colors/border/shadow/fullWidth/openInNewTab)\n * with the exact mapping from aiconeo's ElementRenderer, so the published\n * button matches the builder canvas. Candidate for backporting to the\n * theme, which still ignores these fields.\n * 4. `stylesToInline` skips non-primitive values (builder metadata like\n * `widthValue`) and `var(--x)` values without a fallback — builder-only\n * tokens (`hsl(var(--primary))`) are invalid outside the builder and\n * would kill the property's stylesheet value. Plus builder-parity <p>\n * margin reset inside text elements (NEO_STYLES).\n *\n * To pull upstream renderer fixes: re-vendor the theme file and re-apply the\n * changes above.\n */\n/* eslint-disable */\n// @ts-nocheck\n\n// Active locale for media-gallery caption translations; set by the host\n// component (falls back to the page global the theme uses).\nvar activeLocale = null;\n\nexport function setActiveLocale(locale) {\n activeLocale = typeof locale === 'string' && locale.trim() !== '' ? locale.trim() : null;\n}\n\n\n // Forward styles.desktop from the JSON to the DOM\n var USE_API_INLINE_STYLES = true;\n\n // ============================================================\n // Detection\n // ============================================================\n\n function hasNeoContent(data) {\n if (!data || typeof data !== 'object') return false;\n var neo = data.contentBuilderNeoJson;\n if (!neo || typeof neo !== 'object') return false;\n if (!Array.isArray(neo.sections) || neo.sections.length === 0) return false;\n return true;\n }\n\n // ============================================================\n // Style helpers (used only when USE_API_INLINE_STYLES is true)\n // ============================================================\n\n function camelToKebab(s) {\n return s.replace(/([A-Z])/g, '-$1').toLowerCase();\n }\n\n // Expand `padding`/`margin` shorthand into longhands when both are present, so longhands always win.\n function normalizeShorthands(styleObj) {\n var out = {};\n for (var k in styleObj) {\n if (Object.prototype.hasOwnProperty.call(styleObj, k)) out[k] = styleObj[k];\n }\n var sides = ['Top', 'Right', 'Bottom', 'Left'];\n ['padding', 'margin'].forEach(function (base) {\n var hasIndividual = sides.some(function (s) { return (base + s) in out; });\n if (!hasIndividual || !(base in out)) return;\n var parts = String(out[base]).trim().split(/\\s+/);\n var top = parts[0];\n var right = parts[1] !== undefined ? parts[1] : top;\n var bottom = parts[2] !== undefined ? parts[2] : top;\n var left = parts[3] !== undefined ? parts[3] : right;\n var fill = { Top: top, Right: right, Bottom: bottom, Left: left };\n sides.forEach(function (s) { if (!(base + s in out)) out[base + s] = fill[s]; });\n delete out[base];\n });\n return out;\n }\n\n function stylesToInline(styleObj) {\n if (!styleObj || typeof styleObj !== 'object' || Array.isArray(styleObj)) return '';\n var normalized = normalizeShorthands(styleObj);\n var out = [];\n for (var key in normalized) {\n if (!Object.prototype.hasOwnProperty.call(normalized, key)) continue;\n var val = normalized[key];\n if (val === null || val === undefined || val === '') continue;\n // Builder-internal metadata (e.g. `widthValue: {mode, value}`) is not CSS.\n if (typeof val !== 'string' && typeof val !== 'number') continue;\n // A `var(--x)` WITHOUT a fallback only resolves inside the builder\n // (shadcn tokens like `hsl(var(--primary))`). On any other page it is\n // invalid at computed-value time, which doesn't fall back to the\n // stylesheet value — it kills the property. Skip such declarations;\n // `var(--x, fallback)` stays.\n if (typeof val === 'string' && /var\\(--[^,)]+\\)/.test(val)) continue;\n out.push(camelToKebab(key) + ':' + val);\n }\n return out.join(';');\n }\n\n function pickStyles(node, breakpoint) {\n if (!node || !node.styles) return {};\n var s = node.styles[breakpoint || 'desktop'];\n if (!s || Array.isArray(s)) return {};\n return s;\n }\n\n function inlineStyleAttr(node) {\n if (!USE_API_INLINE_STYLES) return '';\n var s = stylesToInline(pickStyles(node));\n return s ? ' style=\"' + s + '\"' : '';\n }\n\n // Strip a single wrapping <p> so heading text from the rich-text editor isn't invalid <hN><p>.\n function stripOuterParagraph(html) {\n if (!html) return '';\n return String(html).replace(/^\\s*<p[^>]*>([\\s\\S]*?)<\\/p>\\s*$/i, '$1');\n }\n\n function escapeAttr(s) {\n if (s == null) return '';\n return String(s)\n .replace(/&/g, '&')\n .replace(/\"/g, '"')\n .replace(/</g, '<')\n .replace(/>/g, '>');\n }\n\n // Pick the active translation: window.current_locale_code if matched, else first available.\n function pickTranslation(translations) {\n if (!translations || typeof translations !== 'object') return {};\n var loc = activeLocale || ((typeof window !== 'undefined' && window.current_locale_code) ? window.current_locale_code : null);\n if (loc && translations[loc]) return translations[loc];\n for (var k in translations) {\n if (Object.prototype.hasOwnProperty.call(translations, k)) return translations[k] || {};\n }\n return {};\n }\n\n // Prefix bare domains with https:// so they don't get treated as relative paths.\n function normalizeUrl(url) {\n if (!url) return '';\n var s = String(url).trim();\n if (!s) return '';\n if (/^javascript:/i.test(s)) return '';\n if (/^([a-z][a-z0-9+.\\-]*:|\\/\\/|\\/|#)/i.test(s)) return s;\n if (/^[^\\s\\/?]+\\.[a-z]{2,}/i.test(s)) return 'https://' + s;\n return s;\n }\n\n // Element renderers return inner HTML only; row/column wrapping lives in\n // renderSection. The `columns` type is handled there, not here.\n var renderers = {};\n\n renderers.heading = function (el) {\n var content = el.content || {};\n var level = content.level || 'h2';\n if (!/^h[1-6]$/i.test(level)) level = 'h2';\n var text = stripOuterParagraph(content.text != null ? content.text : '');\n return '<div class=\"content-type-title content-type-neo-heading\">' +\n '<' + level + inlineStyleAttr(el) + '>' + text + '</' + level + '>' +\n '</div>';\n };\n\n renderers.text = function (el) {\n var content = el.content || {};\n var text = content.text != null ? content.text : '';\n return '<div class=\"content-type-text content-type-neo-text\"' + inlineStyleAttr(el) + '>' + text + '</div>';\n };\n\n // Custom HTML block — render the author's raw markup verbatim (matches the React builder's\n // `html` element, which stores HTML untouched by the rich-text engine).\n renderers.html = function (el) {\n var content = el.content || {};\n var html = content.html != null ? content.html : '';\n return '<div class=\"content-type-html content-type-neo-html\"' + inlineStyleAttr(el) + '>' + html + '</div>';\n };\n\n renderers.image = function (el) {\n var content = el.content || {};\n var src = content.src || '';\n if (!src) return '';\n var alt = escapeAttr(content.alt || '');\n var caption = content.caption || '';\n // Inline styles go on the <img> — no legacy .image-container wrapper (forced max-width:75%).\n var html = '<div class=\"content-type-neo-image\">';\n html += '<img src=\"' + escapeAttr(src) + '\" alt=\"' + alt + '\" loading=\"lazy\"' + inlineStyleAttr(el) + '>';\n if (caption) {\n html += '<span class=\"caption\">' + caption + '</span>';\n }\n html += '</div>';\n return html;\n };\n\n renderers.divider = function (el) {\n return '<div class=\"content-type-divider content-type-neo-divider\"><hr' + inlineStyleAttr(el) + '></div>';\n };\n\n // ----- design tokens (builder look) -----\n //\n // The builder styles buttons through page-level design tokens\n // (designTokens.components.buttonPrimary → semantic colors → color tokens),\n // not through per-element styles — the stored element is usually a bare\n // `{type:'button', content:{text,url}}`. Resolve the same chain here so the\n // storefront button matches what the author sees in the builder; the\n // element's own styles.desktop still wins over tokens as the author's\n // explicit override.\n var currentTokens = null;\n\n function resolveTokenColor(value, tokens) {\n if (!value || typeof value !== 'string') return null;\n if (/^(#|rgb|hsl|var\\(|transparent$|currentcolor$)/i.test(value)) return value;\n var colors = (tokens && tokens.colors) || {};\n var semantic = (tokens && tokens.semantic && tokens.semantic.colors) || {};\n var key = semantic[value] || value;\n return colors[key] || null;\n }\n\n function buttonTokenStyles(tokens) {\n var comp = tokens && tokens.components && tokens.components.buttonPrimary;\n if (!comp || typeof comp !== 'object') return {};\n // State-based shape `{default:{…},radius,padding,fontSize}`; legacy docs\n // stored the default state flat on the component itself.\n var def = (comp['default'] && typeof comp['default'] === 'object') ? comp['default'] : comp;\n var out = {};\n var bg = resolveTokenColor(def.background, tokens);\n var fg = resolveTokenColor(def.color, tokens);\n var border = resolveTokenColor(def.borderColor, tokens);\n if (bg) out.backgroundColor = bg;\n if (fg) out.color = fg;\n if (border) out.border = '1px solid ' + border;\n if (typeof comp.radius === 'string' && comp.radius) out.borderRadius = comp.radius;\n if (typeof comp.padding === 'string' && comp.padding) {\n out.padding = ((tokens.spacing || {})[comp.padding]) || comp.padding;\n }\n if (typeof comp.fontSize === 'string' && comp.fontSize) {\n out.fontSize = ((tokens.typography || {})[comp.fontSize]) || comp.fontSize;\n }\n return out;\n }\n\n // The builder's `button` element (`content: {text, url}`). Markup matches the\n // legacy link block (`.content-type-link` + `a.button button--primary`); the\n // injected baseline CSS makes it a styled CTA even without tokens, the page's\n // design tokens repaint it to the builder's exact look, and the element's own\n // styles.desktop wins over both.\n renderers.button = function (el) {\n var content = el.content || {};\n var text = content.text != null ? String(content.text) : '';\n var url = normalizeUrl(content.url || '');\n if (!text || !url) return '';\n var merged = buttonTokenStyles(currentTokens);\n // The builder's Style-tab alignment writes `textAlign` on the ELEMENT;\n // on the inline-block <a> it would only center the label, so route it to\n // the wrapper div — that is what actually moves the button (mirrors the\n // builder canvas, where element styles land on the element's wrapper).\n var wrapperStyles = {};\n if (USE_API_INLINE_STYLES) {\n var own = pickStyles(el);\n for (var key in own) {\n if (!Object.prototype.hasOwnProperty.call(own, key)) continue;\n if (key === 'textAlign') { wrapperStyles.textAlign = own[key]; continue; }\n merged[key] = own[key];\n }\n }\n\n // ── Builder design fields (`content.button*`) ──\n // Mirrors aiconeo's ElementRenderer button mapping exactly, so the\n // published button matches the builder canvas: variant/shape/size tables,\n // shadow scale, and the same precedence (content fields > element styles\n // > defaults). A styles color/background carrying an unresolvable builder\n // token (`hsl(var(--primary))`) is ignored the same way.\n var variant = content.buttonVariant || 'filled';\n var shape = content.buttonShape || 'rounded';\n var size = content.buttonSize || 'md';\n var bgColor = content.buttonBgColor || '';\n var btnTextColor = content.buttonTextColor || '';\n var borderColor = content.buttonBorderColor || '';\n var borderWidth = content.buttonBorderWidth == null ? 2 : Number(content.buttonBorderWidth) || 0;\n var fullWidth = !!content.buttonFullWidth;\n var shadowLevel = Number(content.buttonShadow) || 0;\n\n var shapeRadius = { square: '0px', rounded: '8px', pill: '9999px' };\n var sizeStyles = {\n sm: { padding: '8px 16px', fontSize: '13px' },\n md: { padding: '12px 24px', fontSize: '15px' },\n lg: { padding: '16px 32px', fontSize: '17px' },\n xl: { padding: '20px 40px', fontSize: '19px' },\n };\n var shadowValues = ['none', '0 1px 2px 0 rgba(0,0,0,0.05)', '0 4px 6px -1px rgba(0,0,0,0.1)', '0 10px 15px -3px rgba(0,0,0,0.1)', '0 20px 25px -5px rgba(0,0,0,0.1)'];\n\n var isBuilderToken = function (value) {\n return typeof value === 'string' && value.indexOf('var(--') !== -1;\n };\n var styleBg = isBuilderToken(merged.backgroundColor) ? undefined : merged.backgroundColor;\n var inheritedTextColor = isBuilderToken(merged.color) ? undefined : merged.color;\n\n merged.borderRadius = shapeRadius[shape] || '8px';\n merged.padding = (sizeStyles[size] || sizeStyles.md).padding;\n merged.fontSize = (!isBuilderToken(merged.fontSize) && merged.fontSize) || (sizeStyles[size] || sizeStyles.md).fontSize;\n merged.boxShadow = shadowValues[shadowLevel] || 'none';\n merged.display = 'inline-flex';\n merged.alignItems = 'center';\n merged.justifyContent = 'center';\n merged.gap = '8px';\n merged.textDecoration = 'none';\n merged.transition = 'all 0.2s ease';\n merged.fontWeight = merged.fontWeight || '600';\n merged.width = fullWidth ? '100%' : undefined;\n\n if (variant === 'outline') {\n merged.backgroundColor = 'transparent';\n merged.color = btnTextColor || borderColor || inheritedTextColor || '#000000';\n merged.border = (borderWidth > 0 ? borderWidth : 2) + 'px solid ' + (borderColor || btnTextColor || '#000000');\n } else if (variant === 'ghost') {\n merged.backgroundColor = bgColor || 'rgba(0,0,0,0.05)';\n merged.color = btnTextColor || inheritedTextColor || (bgColor ? '#ffffff' : '#000000');\n merged.border = borderWidth > 0 ? borderWidth + 'px solid ' + (borderColor || '#000000') : 'none';\n } else if (variant === 'link') {\n merged.backgroundColor = 'transparent';\n merged.color = btnTextColor || inheritedTextColor || '#000000';\n merged.border = 'none';\n merged.padding = '0';\n merged.textDecoration = 'underline';\n merged.boxShadow = 'none';\n } else {\n // 'filled' (default)\n merged.backgroundColor = bgColor || styleBg || '#000000';\n merged.color = btnTextColor || inheritedTextColor || '#ffffff';\n merged.border = borderWidth > 0 ? borderWidth + 'px solid ' + (borderColor || '#000000') : 'none';\n }\n\n var targetAttr = content.openInNewTab ? ' target=\"_blank\" rel=\"noopener noreferrer\"' : '';\n var styleStr = stylesToInline(merged);\n var wrapperStr = stylesToInline(wrapperStyles);\n return '<div class=\"content-type-link content-type-neo-button\"' + (wrapperStr ? ' style=\"' + wrapperStr + '\"' : '') + '>' +\n '<a href=\"' + escapeAttr(url) + '\" class=\"button button--primary\"' + targetAttr + (styleStr ? ' style=\"' + styleStr + '\"' : '') + '>' + text + '</a>' +\n '</div>';\n };\n\n // ----- video helpers -----\n\n function youtubeId(url) {\n if (!url) return '';\n var m = String(url).match(/(?:youtube\\.com\\/(?:embed\\/|watch\\?v=)|youtu\\.be\\/)([A-Za-z0-9_-]{6,})/);\n return m ? m[1] : '';\n }\n\n function vimeoId(url) {\n if (!url) return '';\n var m = String(url).match(/vimeo\\.com\\/(?:video\\/)?(\\d+)/);\n return m ? m[1] : '';\n }\n\n function parseAspectRatio(s, fallback) {\n if (!s) return fallback;\n var str = String(s).replace(':', '/');\n if (/^\\d+(\\.\\d+)?(\\/\\d+(\\.\\d+)?)?$/.test(str)) return str;\n return fallback;\n }\n\n renderers.youtube = function (el) {\n var content = el.content || {};\n var id = content.videoId || youtubeId(content.src || '');\n if (!id) return '';\n var aspect = parseAspectRatio(content.aspectRatio, '16/9');\n var title = escapeAttr(content.videoTitle || 'YouTube video');\n var iframe = '<iframe title=\"' + title + '\" src=\"https://www.youtube.com/embed/' + escapeAttr(id) +\n '\" frameborder=\"0\" allow=\"accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture\" allowfullscreen></iframe>';\n return '<div class=\"content-type-neo-youtube\"' + inlineStyleAttr(el) + '>' +\n '<div class=\"neo-video__frame\" style=\"aspect-ratio:' + aspect + ';\">' + iframe + '</div>' +\n '</div>';\n };\n\n renderers.video = function (el) {\n var content = el.content || {};\n var src = content.src || '';\n if (!src) return '';\n var aspect = parseAspectRatio(content.aspectRatio, '16/9');\n var type = content.type || 'custom';\n var inner;\n if (type === 'youtube') {\n var yid = youtubeId(src);\n if (!yid) return '';\n inner = '<iframe src=\"https://www.youtube.com/embed/' + escapeAttr(yid) +\n '\" frameborder=\"0\" allow=\"accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture\" allowfullscreen></iframe>';\n } else if (type === 'vimeo') {\n var vid = vimeoId(src);\n if (!vid) return '';\n inner = '<iframe src=\"https://player.vimeo.com/video/' + escapeAttr(vid) +\n '\" frameborder=\"0\" allow=\"autoplay; fullscreen; picture-in-picture\" allowfullscreen></iframe>';\n } else {\n inner = '<video src=\"' + escapeAttr(src) + '\" controls></video>';\n }\n return '<div class=\"content-type-neo-video\"' + inlineStyleAttr(el) + '>' +\n '<div class=\"neo-video__frame\" style=\"aspect-ratio:' + aspect + ';\">' + inner + '</div>' +\n '</div>';\n };\n\n renderers.gallery = function (el) {\n var content = el.content || {};\n var rawImages = Array.isArray(content.images) ? content.images : [];\n var images = [];\n for (var i = 0; i < rawImages.length; i++) {\n if (rawImages[i] && rawImages[i].src) images.push(rawImages[i]);\n }\n if (images.length === 0) return '';\n\n var cols = parseInt(content.columns, 10);\n if (!isFinite(cols) || cols < 1) cols = 3;\n if (cols > 6) cols = 6;\n\n var variant = content.layoutVariant\n ? ' content-type-neo-gallery--' + escapeAttr(String(content.layoutVariant))\n : '';\n\n var apiStyles = USE_API_INLINE_STYLES ? stylesToInline(pickStyles(el)) : '';\n var gridCols = 'grid-template-columns:repeat(' + cols + ',1fr)';\n var combined = apiStyles ? apiStyles + ';' + gridCols : gridCols;\n\n var html = '<div class=\"content-type-neo-gallery' + variant + '\" style=\"' + combined + '\">';\n for (var k = 0; k < images.length; k++) {\n var img = images[k];\n html += '<img src=\"' + escapeAttr(img.src) + '\" alt=\"' + escapeAttr(img.alt || '') + '\" loading=\"lazy\">';\n }\n html += '</div>';\n return html;\n };\n\n function renderMediaGalleryItem(file, showCaptions) {\n var src = file.optimizedImageUrl || file.url;\n var t = pickTranslation(file.translations);\n var alt = escapeAttr(t.alternativeText || t.name || '');\n var caption = t.caption || '';\n var html = '<figure class=\"neo-media-gallery__item\">';\n html += '<img src=\"' + escapeAttr(src) + '\" alt=\"' + alt + '\" loading=\"lazy\">';\n if (showCaptions && caption) {\n html += '<figcaption class=\"neo-media-gallery__caption\">' + caption + '</figcaption>';\n }\n html += '</figure>';\n return html;\n }\n\n renderers['media-gallery'] = function (el) {\n var content = el.content || {};\n var rawFiles = Array.isArray(content.files) ? content.files : [];\n if (rawFiles.length === 0) return '';\n\n var files = rawFiles.slice().sort(function (a, b) {\n var ao = (a && typeof a.order === 'number') ? a.order : 0;\n var bo = (b && typeof b.order === 'number') ? b.order : 0;\n return ao - bo;\n }).filter(function (f) {\n return f && (f.url || f.optimizedImageUrl);\n });\n if (files.length === 0) return '';\n\n var cols = parseInt(content.columns, 10);\n if (!isFinite(cols) || cols < 1) cols = 3;\n if (cols > 6) cols = 6;\n\n var layout = (content.layout || 'grid').toLowerCase();\n if (layout !== 'grid' && layout !== 'masonry' && layout !== 'carousel') layout = 'grid';\n\n var showCaptions = content.showCaptions !== false;\n var subsectionTitle = content.subsectionTitle || '';\n var variantClass = ' content-type-neo-media-gallery--' + layout;\n\n var inner = '';\n if (layout === 'masonry') {\n inner += '<div class=\"neo-media-gallery__masonry\" style=\"column-count:' + cols + ';\">';\n for (var i = 0; i < files.length; i++) inner += renderMediaGalleryItem(files[i], showCaptions);\n inner += '</div>';\n } else if (layout === 'carousel') {\n var hasOverflow = files.length > cols;\n inner += '<div class=\"neo-media-gallery__carousel\" data-neo-mg-carousel=\"1\" data-cols=\"' + cols + '\">';\n inner += '<div class=\"neo-media-gallery__carousel-track\" style=\"--neo-mg-cols:' + cols + ';\">';\n for (var j = 0; j < files.length; j++) inner += renderMediaGalleryItem(files[j], showCaptions);\n inner += '</div>';\n if (hasOverflow) {\n inner += '<button type=\"button\" class=\"neo-media-gallery__nav neo-media-gallery__nav--prev\" aria-label=\"Previous\">❮</button>';\n inner += '<button type=\"button\" class=\"neo-media-gallery__nav neo-media-gallery__nav--next\" aria-label=\"Next\">❯</button>';\n inner += '<div class=\"neo-media-gallery__scrubber\" style=\"position:relative;height:6px;background:#d0d0d0;border-radius:3px;margin-top:16px;cursor:pointer;touch-action:none;user-select:none;overflow:hidden;\">';\n inner += '<div class=\"neo-media-gallery__scrubber-thumb\" style=\"position:absolute;top:0;left:0;height:100%;width:60px;min-width:60px;background:#333;border-radius:3px;pointer-events:none;display:block;\"></div>';\n inner += '</div>';\n }\n inner += '</div>';\n } else {\n inner += '<div class=\"neo-media-gallery__grid\" style=\"grid-template-columns:repeat(' + cols + ',1fr);\">';\n for (var k = 0; k < files.length; k++) inner += renderMediaGalleryItem(files[k], showCaptions);\n inner += '</div>';\n }\n\n var html = '<div class=\"content-type-neo-media-gallery' + variantClass + '\"' + inlineStyleAttr(el) + '>';\n if (subsectionTitle) html += '<h3 class=\"neo-media-gallery__title\">' + subsectionTitle + '</h3>';\n html += inner;\n html += '</div>';\n return html;\n };\n\n renderers.slideshow = function (el) {\n var content = el.content || {};\n var rawSlides = Array.isArray(content.slides) ? content.slides : [];\n var slides = [];\n for (var i = 0; i < rawSlides.length; i++) {\n if (rawSlides[i] && rawSlides[i].src) slides.push(rawSlides[i]);\n }\n if (slides.length === 0) return '';\n\n var autoplay = content.autoplay === true;\n var interval = parseInt(content.autoplayInterval, 10);\n if (!isFinite(interval) || interval < 1000) interval = 5000;\n var showDots = content.showDots !== false;\n var showArrows = content.showArrows !== false;\n var aspect = parseAspectRatio(content.aspectRatio, '16/9');\n\n var html = '<div class=\"content-type-text content-type-neo-slideshow\"' +\n ' data-neo-slideshow=\"1\"' +\n ' data-autoplay=\"' + (autoplay ? '1' : '0') + '\"' +\n ' data-interval=\"' + interval + '\"' +\n inlineStyleAttr(el) + '>';\n html += '<div class=\"neo-slideshow__viewport\" style=\"aspect-ratio:' + aspect + ';\">';\n html += '<div class=\"neo-slideshow__track\">';\n for (var s = 0; s < slides.length; s++) {\n var slide = slides[s];\n html += '<div class=\"neo-slideshow__slide\">';\n html += '<img src=\"' + escapeAttr(slide.src) + '\" alt=\"' + escapeAttr(slide.alt || '') + '\" loading=\"lazy\">';\n if (slide.headline || (slide.buttonText && slide.buttonUrl)) {\n html += '<div class=\"neo-slideshow__caption\">';\n if (slide.headline) html += '<h3 class=\"neo-slideshow__headline\" style=\"color:#fff !important;font-size:28px !important;font-weight:600 !important;line-height:1.2 !important;margin:0 !important;\">' + slide.headline + '</h3>';\n var btnUrl = normalizeUrl(slide.buttonUrl);\n if (slide.buttonText && btnUrl) {\n html += '<a class=\"neo-slideshow__btn\" href=\"' + escapeAttr(btnUrl) + '\">' + slide.buttonText + '</a>';\n }\n html += '</div>';\n }\n html += '</div>';\n }\n html += '</div>'; // track\n if (showArrows && slides.length > 1) {\n html += '<button type=\"button\" class=\"neo-slideshow__nav neo-slideshow__nav--prev\" aria-label=\"Previous slide\">❮</button>';\n html += '<button type=\"button\" class=\"neo-slideshow__nav neo-slideshow__nav--next\" aria-label=\"Next slide\">❯</button>';\n }\n html += '</div>'; // viewport\n if (showDots && slides.length > 1) {\n html += '<div class=\"neo-slideshow__dots\">';\n for (var d = 0; d < slides.length; d++) {\n html += '<button type=\"button\" class=\"neo-slideshow__dot\" data-idx=\"' + d + '\" aria-label=\"Go to slide ' + (d + 1) + '\"></button>';\n }\n html += '</div>';\n }\n html += '</div>';\n return html;\n };\n\n function renderUnknown(el) {\n if (window.console && console.warn) {\n console.warn('NewsNeo: no renderer for type', el && el.type, el);\n }\n return '';\n }\n\n // ============================================================\n // Dispatch (single element, NOT a column container)\n // ============================================================\n\n function renderElement(el) {\n if (!el || typeof el !== 'object') return '';\n if (el.type === 'columns') {\n // Should never reach here - handled in renderSection. Safe guard.\n return '';\n }\n var fn = renderers[el.type];\n if (typeof fn !== 'function') return renderUnknown(el);\n try {\n return fn(el);\n } catch (e) {\n if (window.console && console.warn) {\n console.warn('NewsNeo: renderer for \"' + el.type + '\" threw', e);\n }\n return '';\n }\n }\n\n // ============================================================\n // Row / column wrappers\n // Mirrors the legacy structure produced inside news.js so news.css\n // styles the result identically.\n // ============================================================\n\n function wrapContent(innerHtml, contentIndex) {\n if (!innerHtml) return '';\n return '<div class=\"content content__' + contentIndex + '\">' + innerHtml + '</div>';\n }\n\n function wrapColumn(contentHtmlList, columnIndex) {\n var inner = contentHtmlList.join('');\n return '<div class=\"content-column column__' + columnIndex + '\">' + inner + '</div>';\n }\n\n function wrapRow(columnsHtml, rowIndex, totalColumns, isFullWidth) {\n var classes = ['content-row', 'row__' + rowIndex, 'total-columns-' + totalColumns];\n if (isFullWidth) classes.push('fullwidth');\n return '<div class=\"' + classes.join(' ') + '\">' + columnsHtml + '</div>';\n }\n\n // Render a `columns` element as one multi-column row.\n function renderColumnsRow(columnsEl, rowIndex, isFullWidth) {\n var content = columnsEl.content || {};\n var count = parseInt(content.columnCount, 10);\n if (isNaN(count) || count < 1) count = 2;\n if (count > 4) count = 4; // legacy CSS supports up to total-columns-4\n\n var children = Array.isArray(columnsEl.children) ? columnsEl.children : [];\n\n var sorted = children.slice().sort(function (a, b) {\n var ai = (a && a.content && typeof a.content.columnIndex === 'number') ? a.content.columnIndex : 0;\n var bi = (b && b.content && typeof b.content.columnIndex === 'number') ? b.content.columnIndex : 0;\n return ai - bi;\n });\n\n var buckets = [];\n for (var c = 0; c < count; c++) buckets.push([]);\n var fallbackIdx = 0;\n for (var j = 0; j < sorted.length; j++) {\n var child = sorted[j];\n var ci = (child && child.content && typeof child.content.columnIndex === 'number')\n ? child.content.columnIndex\n : fallbackIdx++;\n if (ci < 0) ci = 0;\n if (ci >= count) ci = count - 1;\n buckets[ci].push(child);\n }\n\n var columnsHtml = '';\n for (var col = 0; col < count; col++) {\n var contentsHtml = [];\n for (var k = 0; k < buckets[col].length; k++) {\n var rendered = renderElement(buckets[col][k]);\n if (rendered) contentsHtml.push(wrapContent(rendered, k + 1));\n }\n columnsHtml += wrapColumn(contentsHtml, col + 1);\n }\n\n return wrapRow(columnsHtml, rowIndex, count, isFullWidth);\n }\n\n // Emits N rows per section: consecutive non-columns elements stack into one row;\n // each `columns` element becomes its own multi-column row, in document order.\n function renderSection(section, startRowIndex) {\n if (!section || !Array.isArray(section.elements) || section.elements.length === 0) {\n return { html: '', rowCount: 0 };\n }\n\n var isFullWidth = !!section.fullWidth;\n var elements = section.elements;\n var html = '';\n var rowIndex = startRowIndex;\n var buffer = [];\n\n function flushBuffer() {\n if (buffer.length === 0) return;\n var singleCol = wrapColumn(buffer, 1);\n html += wrapRow(singleCol, rowIndex++, 1, isFullWidth);\n buffer = [];\n }\n\n for (var i = 0; i < elements.length; i++) {\n var el = elements[i];\n if (!el) continue;\n if (el.type === 'columns') {\n flushBuffer();\n var columnsRow = renderColumnsRow(el, rowIndex, isFullWidth);\n if (columnsRow) { html += columnsRow; rowIndex++; }\n } else {\n var rendered = renderElement(el);\n if (rendered) buffer.push(wrapContent(rendered, buffer.length + 1));\n }\n }\n flushBuffer();\n\n return { html: html, rowCount: rowIndex - startRowIndex };\n }\n\n // Section wrapper — carries the builder's section-level design across:\n // styles.desktop (backgroundColor, padding, color, …) go inline on the wrapper;\n // layout.mode 'full' makes the background span the entire viewport width\n // (breakout from any centered container, e.g. the 960px .aico-neo-page column)\n // while layout.innerContainer re-contains the content inside the full-bleed\n // band. Mirrors the aiconeo builder's section semantics (SectionPropertiesPanel).\n function wrapSection(section, innerHtml) {\n if (!innerHtml) return '';\n var layout = (section && section.layout) || {};\n var mode = layout.mode || ((section && section.fullWidth) ? 'full' : 'contained');\n var styleStr = USE_API_INLINE_STYLES ? stylesToInline(pickStyles(section)) : '';\n\n var inner = innerHtml;\n var innerContainer = layout.innerContainer || {};\n if (mode === 'full' && innerContainer.enabled !== false) {\n var maxWidth = innerContainer.maxWidth || layout.maxWidth || '';\n inner = '<div class=\"neo-section__inner\"' +\n (maxWidth ? ' style=\"max-width:' + escapeAttr(maxWidth) + '\"' : '') +\n '>' + innerHtml + '</div>';\n }\n\n var classes = 'neo-section' + (mode === 'full' ? ' neo-section--full' : '');\n return '<section class=\"' + classes + '\"' + (styleStr ? ' style=\"' + styleStr + '\"' : '') + '>' + inner + '</section>';\n }\n\n function render(data) {\n if (!hasNeoContent(data)) return '';\n var neo = data.contentBuilderNeoJson;\n currentTokens = (neo.designTokens && typeof neo.designTokens === 'object') ? neo.designTokens : null;\n\n var html = '';\n var nextRowIndex = 1;\n for (var i = 0; i < neo.sections.length; i++) {\n var result = renderSection(neo.sections[i], nextRowIndex);\n html += wrapSection(neo.sections[i], result.html);\n nextRowIndex += result.rowCount;\n }\n return html;\n }\n\n // ============================================================\n // Self-contained styles for slideshow/video/youtube/gallery.\n // Injected once per page so the renderer ships its own CSS.\n // ============================================================\n\n var STYLES_INJECTED = false;\n var NEO_STYLES = [\n // Section shell: full-bleed color band + re-contained inner (see wrapSection).\n // 100vw includes the scrollbar gutter, so clip the body's x-overflow while a\n // full-bleed section is on the page to avoid a phantom horizontal scrollbar.\n '.neo-section{position:relative;}',\n '.neo-section--full{width:100vw;margin-left:calc(50% - 50vw);margin-right:calc(50% - 50vw);}',\n '.neo-section__inner{margin:0 auto;}',\n 'body:has(.neo-section--full){overflow-x:clip;}',\n // Baseline CTA look for the builder's button element: a styled button even\n // when the document carries no design tokens (kj orange, theme radius).\n // Token/element styles land inline on the <a> and override this.\n // Builder-canvas parity: the builder resets <p> margins (Tailwind\n // preflight), so text-element spacing comes from the element's own\n // padding. Keep a small gap between paragraphs WITHIN one element so\n // hand-written multi-paragraph rich text stays readable.\n '.content-type-neo-text p{margin:0;}',\n '.content-type-neo-text p+p{margin-top:1em;}',\n '.content-type-neo-button{margin:8px 0;}',\n '.content-type-neo-button .button{display:inline-block;padding:12px 28px;background:#e8702d;color:#fff;font-weight:600;text-decoration:none;border-radius:var(--aico-radius,2px);line-height:1.2;transition:filter .12s ease;}',\n '.content-type-neo-button .button:hover{filter:brightness(0.92);}',\n '.neo-slideshow__viewport{position:relative;overflow:hidden;border-radius:inherit;}',\n '.neo-slideshow__track{display:flex;width:100%;height:100%;overflow-x:auto;overflow-y:hidden;scroll-snap-type:x mandatory;scroll-behavior:smooth;scrollbar-width:none;-ms-overflow-style:none;}',\n '.neo-slideshow__track::-webkit-scrollbar{display:none;}',\n '.neo-slideshow__slide{flex:0 0 100%;height:100%;scroll-snap-align:start;position:relative;}',\n '.neo-slideshow__slide img{width:100%;height:100%;object-fit:cover;display:block;}',\n '.neo-slideshow__nav{position:absolute;top:50%;transform:translateY(-50%);background:rgba(0,0,0,0.5);color:#fff;border:0;width:36px;height:36px;border-radius:50%;cursor:pointer;z-index:1;font-size:16px;line-height:1;padding:0;display:flex;align-items:center;justify-content:center;}',\n '.neo-slideshow__nav--prev{left:8px;}',\n '.neo-slideshow__nav--next{right:8px;}',\n '.neo-slideshow__dots{display:flex;justify-content:center;gap:8px;margin-top:8px;}',\n '.neo-slideshow__dot{width:8px;height:8px;border-radius:50%;border:0;background:#ccc;cursor:pointer;padding:0;}',\n '.neo-slideshow__dot.is-active{background:#333;}',\n '.neo-slideshow__caption{position:absolute;inset:0;padding:24px;background:rgba(0,0,0,0.35);color:#fff;display:flex;flex-direction:column;align-items:center;justify-content:center;text-align:center;gap:12px;}',\n '.neo-slideshow__headline{margin:0;color:#fff !important;font-size:28px;font-weight:600;line-height:1.2;}',\n '.neo-slideshow__btn{display:inline-block;padding:8px 16px;background:#fff;color:#111;text-decoration:none;border-radius:4px;}',\n '.neo-video__frame{position:relative;width:100%;}',\n '.neo-video__frame iframe,.neo-video__frame video{position:absolute;inset:0;width:100%;height:100%;border:0;}',\n '.content-type-neo-image img{max-width:100%;height:auto;display:block;}',\n // overflow:hidden so wrapper border-radius actually clips the iframe/slides inside.\n '.content-type-neo-youtube,.content-type-neo-video,.content-type-neo-slideshow{overflow:hidden;}',\n '.content-type-neo-gallery{display:grid;gap:8px;}',\n '.content-type-neo-gallery img{width:100%;height:auto;display:block;}',\n '.neo-media-gallery__title{margin:0 0 16px;}',\n '.neo-media-gallery__grid{display:grid;gap:8px;}',\n '.neo-media-gallery__item{margin:0;}',\n '.neo-media-gallery__item img{width:100%;height:auto;display:block;}',\n '.neo-media-gallery__caption{font-size:12px;color:#555;margin-top:4px;}',\n '[class*=\"content-type-neo-\"] a{text-decoration:underline;}',\n '.neo-media-gallery__masonry{column-gap:8px;}',\n '.neo-media-gallery__masonry .neo-media-gallery__item{break-inside:avoid;margin:0 0 8px;display:block;}',\n '.neo-media-gallery__carousel{position:relative;}',\n '.neo-media-gallery__carousel-track{display:flex;gap:8px;overflow-x:auto;overflow-y:hidden;scrollbar-width:none;-ms-overflow-style:none;}',\n '.neo-media-gallery__carousel-track::-webkit-scrollbar{display:none;}',\n '.neo-media-gallery__carousel .neo-media-gallery__item{flex:0 0 calc(60% - 8px);}',\n '.neo-media-gallery__nav{position:absolute;top:50%;transform:translateY(-50%);background:rgba(0,0,0,0.5);color:#fff;border:0;width:36px;height:36px;border-radius:50%;cursor:pointer;z-index:1;font-size:16px;line-height:1;padding:0;display:flex;align-items:center;justify-content:center;}',\n '.neo-media-gallery__nav--prev{left:8px;}',\n '.neo-media-gallery__nav--next{right:8px;}',\n '.neo-media-gallery__scrubber{position:relative;height:8px;background:#e5e5e5;border-radius:4px;margin-top:16px;cursor:pointer;touch-action:none;user-select:none;overflow:hidden;}',\n '.neo-media-gallery__scrubber-thumb{position:absolute;top:0;left:0;height:100%;width:48px;background:#333;border-radius:4px;pointer-events:none;min-width:48px;display:block;}',\n '.neo-media-gallery__scrubber:hover .neo-media-gallery__scrubber-thumb{background:#111;}'\n ].join('');\n\n function injectStyles() {\n if (STYLES_INJECTED) return;\n STYLES_INJECTED = true;\n try {\n var style = document.createElement('style');\n style.setAttribute('data-neo-styles', '1');\n style.appendChild(document.createTextNode(NEO_STYLES));\n (document.head || document.documentElement).appendChild(style);\n } catch (e) { /* no-op */ }\n }\n\n // ============================================================\n // Hydration (runs after the HTML string has been injected)\n // ============================================================\n\n function hydrateSlideshow(root) {\n if (root.__neoWired) return;\n root.__neoWired = true;\n\n var track = root.querySelector('.neo-slideshow__track');\n if (!track) return;\n var slides = track.children;\n var count = slides.length;\n if (count === 0) return;\n\n var dots = root.querySelectorAll('.neo-slideshow__dot');\n var prev = root.querySelector('.neo-slideshow__nav--prev');\n var next = root.querySelector('.neo-slideshow__nav--next');\n var idx = 0;\n var timer = null;\n\n function updateDots() {\n for (var k = 0; k < dots.length; k++) {\n if (k === idx) dots[k].classList.add('is-active');\n else dots[k].classList.remove('is-active');\n }\n }\n\n function goTo(i) {\n if (i < 0) i = count - 1;\n if (i >= count) i = 0;\n idx = i;\n track.scrollTo({ left: i * track.clientWidth, behavior: 'smooth' });\n updateDots();\n }\n\n function resetAutoplay() {\n if (timer) { clearInterval(timer); timer = null; }\n if (root.getAttribute('data-autoplay') !== '1' || count < 2) return;\n var ms = parseInt(root.getAttribute('data-interval'), 10) || 5000;\n timer = setInterval(function () {\n if (!root.isConnected) { clearInterval(timer); timer = null; return; }\n goTo(idx + 1);\n }, ms);\n }\n\n if (prev) prev.addEventListener('click', function () { goTo(idx - 1); resetAutoplay(); });\n if (next) next.addEventListener('click', function () { goTo(idx + 1); resetAutoplay(); });\n for (var k = 0; k < dots.length; k++) {\n (function (k) {\n dots[k].addEventListener('click', function () { goTo(k); resetAutoplay(); });\n })(k);\n }\n\n // Track manual swipes so dots stay in sync.\n var scrollTick;\n track.addEventListener('scroll', function () {\n clearTimeout(scrollTick);\n scrollTick = setTimeout(function () {\n var w = track.clientWidth;\n if (w === 0) return;\n var i = Math.round(track.scrollLeft / w);\n if (i !== idx) { idx = i; updateDots(); }\n }, 80);\n });\n\n updateDots();\n resetAutoplay();\n }\n\n // ============================================================\n // Lightbox: click a media-gallery image → full-size singleton overlay.\n // ============================================================\n\n var lightbox = { el: null, imgEl: null, capEl: null, prevBtn: null, nextBtn: null, items: [], idx: 0 };\n\n function ensureLightbox() {\n if (lightbox.el) return;\n var el = document.createElement('div');\n el.setAttribute('data-neo-lightbox', '1');\n el.setAttribute('aria-hidden', 'true');\n el.style.cssText = 'position:fixed;inset:0;z-index:999999;background:rgba(0,0,0,0.9);display:none;align-items:center;justify-content:center;padding:40px;';\n el.innerHTML =\n '<button type=\"button\" data-neo-lb-close aria-label=\"Close\" style=\"position:absolute;top:16px;right:16px;background:rgba(0,0,0,0.5);border:0;color:#fff;width:40px;height:40px;border-radius:50%;cursor:pointer;font-size:22px;line-height:1;padding:0;display:flex;align-items:center;justify-content:center;z-index:2;\">' +\n '<svg xmlns=\"http://www.w3.org/2000/svg\" width=\"16\" height=\"16\" viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"#fff\" stroke-width=\"2.5\" stroke-linecap=\"round\" stroke-linejoin=\"round\"><line x1=\"18\" y1=\"6\" x2=\"6\" y2=\"18\"></line><line x1=\"6\" y1=\"6\" x2=\"18\" y2=\"18\"></line></svg>' +\n '</button>' +\n '<button type=\"button\" data-neo-lb-prev aria-label=\"Previous\" style=\"position:absolute;top:50%;left:16px;transform:translateY(-50%);background:rgba(0,0,0,0.5);border:0;color:#fff;width:48px;height:48px;border-radius:50%;cursor:pointer;font-size:20px;display:flex;align-items:center;justify-content:center;z-index:1;\">❮</button>' +\n '<button type=\"button\" data-neo-lb-next aria-label=\"Next\" style=\"position:absolute;top:50%;right:16px;transform:translateY(-50%);background:rgba(0,0,0,0.5);border:0;color:#fff;width:48px;height:48px;border-radius:50%;cursor:pointer;font-size:20px;display:flex;align-items:center;justify-content:center;z-index:1;\">❯</button>' +\n '<div data-neo-lb-stage style=\"max-width:90vw;max-height:90vh;display:flex;flex-direction:column;align-items:center;gap:12px;\">' +\n '<img data-neo-lb-img alt=\"\" style=\"max-width:100%;max-height:80vh;object-fit:contain;display:block;\">' +\n '<div data-neo-lb-cap style=\"color:#fff;text-align:center;font-size:14px;display:none;\"></div>' +\n '</div>';\n document.body.appendChild(el);\n\n lightbox.el = el;\n lightbox.imgEl = el.querySelector('[data-neo-lb-img]');\n lightbox.capEl = el.querySelector('[data-neo-lb-cap]');\n lightbox.prevBtn = el.querySelector('[data-neo-lb-prev]');\n lightbox.nextBtn = el.querySelector('[data-neo-lb-next]');\n\n el.querySelector('[data-neo-lb-close]').addEventListener('click', closeLightbox);\n lightbox.prevBtn.addEventListener('click', function () { stepLightbox(-1); });\n lightbox.nextBtn.addEventListener('click', function () { stepLightbox(1); });\n el.addEventListener('click', function (e) { if (e.target === el) closeLightbox(); });\n document.addEventListener('keydown', function (e) {\n if (!lightbox.el || lightbox.el.style.display !== 'flex') return;\n if (e.key === 'Escape') closeLightbox();\n else if (e.key === 'ArrowLeft') stepLightbox(-1);\n else if (e.key === 'ArrowRight') stepLightbox(1);\n });\n }\n\n function showLightboxItem() {\n var item = lightbox.items[lightbox.idx];\n if (!item) return;\n lightbox.imgEl.src = item.src;\n lightbox.imgEl.alt = item.alt || '';\n if (item.caption) {\n lightbox.capEl.textContent = item.caption;\n lightbox.capEl.style.display = 'block';\n } else {\n lightbox.capEl.textContent = '';\n lightbox.capEl.style.display = 'none';\n }\n var many = lightbox.items.length > 1;\n lightbox.prevBtn.style.display = many ? 'flex' : 'none';\n lightbox.nextBtn.style.display = many ? 'flex' : 'none';\n }\n\n function openLightbox(items, idx) {\n if (!items || items.length === 0) return;\n ensureLightbox();\n lightbox.items = items;\n lightbox.idx = Math.max(0, Math.min(items.length - 1, idx || 0));\n showLightboxItem();\n lightbox.el.style.display = 'flex';\n lightbox.el.setAttribute('aria-hidden', 'false');\n document.body.style.overflow = 'hidden';\n }\n\n function closeLightbox() {\n if (!lightbox.el) return;\n lightbox.el.style.display = 'none';\n lightbox.el.setAttribute('aria-hidden', 'true');\n document.body.style.overflow = '';\n lightbox.items = [];\n lightbox.idx = 0;\n }\n\n function stepLightbox(dir) {\n if (lightbox.items.length === 0) return;\n var n = lightbox.items.length;\n lightbox.idx = (lightbox.idx + dir + n) % n;\n showLightboxItem();\n }\n\n function hydrateMediaGalleryLightbox(root) {\n if (root.__neoLbWired) return;\n root.__neoLbWired = true;\n\n var imgs = root.querySelectorAll('.neo-media-gallery__item img');\n for (var i = 0; i < imgs.length; i++) imgs[i].style.cursor = 'zoom-in';\n\n root.addEventListener('click', function (e) {\n var img = e.target && e.target.tagName === 'IMG' ? e.target : null;\n if (!img || !img.closest('.neo-media-gallery__item')) return;\n var all = root.querySelectorAll('.neo-media-gallery__item img');\n var items = [];\n var startIdx = 0;\n for (var k = 0; k < all.length; k++) {\n var fig = all[k].closest('.neo-media-gallery__item');\n var capNode = fig ? fig.querySelector('.neo-media-gallery__caption') : null;\n items.push({\n src: all[k].getAttribute('src') || all[k].src,\n alt: all[k].getAttribute('alt') || '',\n caption: capNode ? capNode.textContent.trim() : ''\n });\n if (all[k] === img) startIdx = k;\n }\n openLightbox(items, startIdx);\n });\n }\n\n function hydrateMediaGalleryCarousel(root) {\n if (root.__neoWired) return;\n root.__neoWired = true;\n var track = root.querySelector('.neo-media-gallery__carousel-track');\n if (!track) return;\n var prev = root.querySelector('.neo-media-gallery__nav--prev');\n var next = root.querySelector('.neo-media-gallery__nav--next');\n var scrubber = root.querySelector('.neo-media-gallery__scrubber');\n var thumb = root.querySelector('.neo-media-gallery__scrubber-thumb');\n\n function snapToItem(dir) {\n var firstItem = track.querySelector('.neo-media-gallery__item');\n var step = firstItem ? firstItem.offsetWidth + 8 : track.clientWidth;\n if (step <= 0) return;\n var current = track.scrollLeft / step;\n var nearest = Math.round(current);\n // If we're already sitting on (or sub-pixel near) an item slot, step away from it.\n // Otherwise floor/ceil to the next slot in the requested direction.\n var targetIdx = (Math.abs(current - nearest) < 0.1)\n ? nearest + dir\n : (dir > 0 ? Math.ceil(current) : Math.floor(current));\n if (targetIdx < 0) targetIdx = 0;\n track.scrollTo({ left: targetIdx * step, behavior: 'smooth' });\n }\n if (prev) prev.addEventListener('click', function () { snapToItem(-1); });\n if (next) next.addEventListener('click', function () { snapToItem(1); });\n\n if (!scrubber || !thumb) return;\n\n function updateThumb() {\n var sw = track.scrollWidth;\n var cw = track.clientWidth;\n if (sw <= cw) { thumb.style.width = '100%'; thumb.style.left = '0'; return; }\n var widthPct = (cw / sw) * 100;\n var leftPct = (track.scrollLeft / (sw - cw)) * (100 - widthPct);\n thumb.style.width = widthPct + '%';\n thumb.style.left = leftPct + '%';\n }\n\n var ticking = false;\n track.addEventListener('scroll', function () {\n if (ticking) return;\n ticking = true;\n requestAnimationFrame(function () { updateThumb(); ticking = false; });\n });\n window.addEventListener('resize', updateThumb);\n\n function pointerToScrollLeft(clientX) {\n var rect = scrubber.getBoundingClientRect();\n var ratio = Math.max(0, Math.min(1, (clientX - rect.left) / rect.width));\n var sw = track.scrollWidth;\n var cw = track.clientWidth;\n return ratio * (sw - cw);\n }\n\n var dragging = false;\n scrubber.addEventListener('pointerdown', function (e) {\n dragging = true;\n scrubber.setPointerCapture(e.pointerId);\n track.scrollLeft = pointerToScrollLeft(e.clientX);\n });\n scrubber.addEventListener('pointermove', function (e) {\n if (!dragging) return;\n track.scrollLeft = pointerToScrollLeft(e.clientX);\n });\n scrubber.addEventListener('pointerup', function (e) {\n dragging = false;\n if (scrubber.hasPointerCapture && scrubber.hasPointerCapture(e.pointerId)) {\n scrubber.releasePointerCapture(e.pointerId);\n }\n });\n scrubber.addEventListener('pointercancel', function () { dragging = false; });\n\n // Defer to after layout (initial scrollWidth/clientWidth can both be 0),\n // and re-run when the track resizes (lazy images, viewport changes).\n requestAnimationFrame(updateThumb);\n if (typeof ResizeObserver !== 'undefined') {\n var ro = new ResizeObserver(updateThumb);\n ro.observe(track);\n }\n }\n\n function hydrate(root) {\n injectStyles();\n var scope = root && root.querySelectorAll ? root : document;\n var slideshows = scope.querySelectorAll('[data-neo-slideshow=\"1\"]');\n for (var i = 0; i < slideshows.length; i++) hydrateSlideshow(slideshows[i]);\n var carousels = scope.querySelectorAll('[data-neo-mg-carousel=\"1\"]');\n for (var j = 0; j < carousels.length; j++) hydrateMediaGalleryCarousel(carousels[j]);\n var galleries = scope.querySelectorAll('.content-type-neo-media-gallery');\n for (var k = 0; k < galleries.length; k++) hydrateMediaGalleryLightbox(galleries[k]);\n }\n\n // ============================================================\n // Public API\n // ============================================================\n\n export const NewsNeo = {\n hasContent: hasNeoContent,\n render: render,\n hydrate: hydrate,\n registerType: function (type, fn) {\n if (typeof type === 'string' && typeof fn === 'function') {\n renderers[type] = fn;\n }\n },\n _renderers: renderers\n };\n\n","/* The Neo renderer injects its own component CSS into the document head\n (sections, buttons, sliders, galleries…). This file only anchors the mount. */\n\naico-neo-content {\n display: block;\n}\n\naico-neo-content .aico-neo-content-mount {\n width: 100%;\n}\n","import { Component, Element, Host, Prop, Watch, h } from '@stencil/core';\nimport type { NeoDocument } from '../../model/article/NeoDocument';\nimport { neoDocumentHasContent } from '../../model/article/NeoDocument';\nimport { hasLocaleStructure, resolveLocale } from '../../utils/neo/neo-locale-resolver';\nimport { NewsNeo, setActiveLocale } from '../../utils/neo/news-neo-renderer';\n\n/**\n * Renders an AICO Neo content-builder document (`contentBuilderNeoJson`) —\n * the same renderer the kj b2b storefront uses for Neo news articles.\n *\n * Locale overrides carried by the document are resolved client-side before\n * rendering (the aico v1 API ships them unresolved).\n *\n * NOT scoped/shadow on purpose: the renderer emits plain HTML via innerHTML\n * and injects its own component CSS into the document head; style scoping\n * would never reach that markup.\n */\n@Component({\n tag: 'aico-neo-content',\n styleUrl: 'aico-neo-content.css',\n})\nexport class AicoNeoContent {\n @Element() host!: HTMLElement;\n\n /**\n * The Neo content-builder document (`attributes.contentBuilderNeoJson`).\n */\n @Prop() neoDocument!: NeoDocument;\n\n /**\n * The locale to resolve the document's content for, e.g. `de_CH`.\n */\n @Prop() locale: string = 'de';\n\n /**\n * The shop's default locale — the override fallback when the requested\n * language has no entries (mirrors the storefront's fallback rule).\n */\n @Prop() defaultLocale?: string;\n\n private renderedHtml: string = '';\n\n componentWillLoad() {\n this.prepareHtml();\n }\n\n @Watch('neoDocument')\n @Watch('locale')\n @Watch('defaultLocale')\n prepareHtml() {\n if (!neoDocumentHasContent(this.neoDocument)) {\n this.renderedHtml = '';\n return;\n }\n\n let resolvedDocument = this.neoDocument;\n if (hasLocaleStructure(resolvedDocument)) {\n resolvedDocument = resolveLocale(resolvedDocument, this.locale, this.defaultLocale ?? null);\n }\n\n setActiveLocale(this.locale);\n this.renderedHtml = NewsNeo.render({ contentBuilderNeoJson: resolvedDocument });\n }\n\n componentDidRender() {\n // Wire sliders / lightboxes inside the freshly painted markup.\n const mount = this.host.querySelector('.aico-neo-content-mount');\n if (mount && this.renderedHtml !== '') {\n NewsNeo.hydrate(mount);\n }\n }\n\n render() {\n return (\n <Host>\n <div class=\"aico-neo-content-mount\" innerHTML={this.renderedHtml}></div>\n </Host>\n );\n }\n}\n"],"version":3}
|
|
1
|
+
{"file":"aico-neo-content2.js","mappings":"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","names":[],"sources":["src/model/article/NeoDocument.ts","src/utils/neo/neo-locale-resolver.ts","src/utils/neo/neo-lead-trim.ts","src/utils/neo/news-neo-renderer.ts","src/components/aico-neo-content/aico-neo-content.css?tag=aico-neo-content","src/components/aico-neo-content/aico-neo-content.tsx"],"sourcesContent":["/**\n * The AICO Neo content-builder document (`attributes.contentBuilderNeoJson`).\n *\n * Only the fields this package touches are typed; the renderer treats the\n * document as an open shape, so unknown keys pass through untouched.\n */\n\nexport type NeoElement = {\n id: string;\n type: string;\n content?: { [key: string]: unknown };\n styles?: { desktop?: { [key: string]: unknown }; mobile?: { [key: string]: unknown } };\n children?: NeoElement[];\n [key: string]: unknown;\n};\n\nexport type NeoSection = {\n id: string;\n name?: string;\n elements: NeoElement[];\n [key: string]: unknown;\n};\n\nexport type NeoDocument = {\n sections: NeoSection[];\n /** Locale the base element content is authored in (see neo-locale-resolver). */\n baseLocale?: string;\n /** Sparse per-locale content overrides keyed by locale (see neo-locale-resolver). */\n localeOverrides?: { [locale: string]: unknown };\n designTokens?: { [key: string]: unknown };\n settings?: { [key: string]: unknown };\n seo?: { [key: string]: unknown };\n version?: number | string;\n [key: string]: unknown;\n};\n\n/** Whether an article's Neo document actually carries content. */\nexport function neoDocumentHasContent(document?: NeoDocument | null): boolean {\n return !!document && Array.isArray(document.sections) && document.sections.length > 0;\n}\n","/**\n * Client-side locale resolution for AICO Neo content-builder documents.\n *\n * Port of the aico backend's `Modules\\Storefront\\Support\\NeoLocaleResolver`\n * (which the b2b storefront applies server-side before embedding the JSON —\n * the v1 API used by this package ships the document UNRESOLVED, so the\n * resolution has to happen here).\n *\n * The document may carry `baseLocale` (the locale the base element content is\n * authored in) plus sparse per-locale overrides:\n *\n * localeOverrides[locale] = {\n * seo?: { ...partial seo },\n * elements?: { [elementId]: { content?: { ...only differing fields } } },\n * sections?: { [sectionId]: { name? } },\n * }\n *\n * The requested locale resolves to override entries via the storefront's\n * general fallback rule (same-language prefix first, exact locale on top,\n * then the default locale's entries, then base content). Matching override\n * content is merged FIELD-level over the base content and the locale\n * structure is stripped, so the renderer stays locale-unaware.\n */\n\ntype AnyRecord = { [key: string]: unknown };\n\n/** `en-US` → `en_US` */\nfunction normalize(locale: string): string {\n return locale.trim().replace(/-/g, '_');\n}\n\n/** Language prefix: `en_US` → `en`, `en` → `en`. */\nfunction language(locale: string): string {\n const normalized = normalize(locale);\n const separatorPosition = normalized.indexOf('_');\n return separatorPosition === -1 ? normalized : normalized.substring(0, separatorPosition);\n}\n\nfunction sameLanguage(first: string, second: string): boolean {\n const firstLanguage = language(first);\n return firstLanguage !== '' && firstLanguage === language(second);\n}\n\nfunction isPlainObject(value: unknown): value is AnyRecord {\n return typeof value === 'object' && value !== null && !Array.isArray(value);\n}\n\n/**\n * Whether the document is locale-aware: an authored base locale or at least\n * one locale override. Documents without the structure are monolingual.\n */\nexport function hasLocaleStructure(document: AnyRecord): boolean {\n const baseLocale = document.baseLocale;\n if (typeof baseLocale === 'string' && baseLocale.trim() !== '') {\n return true;\n }\n const overrides = document.localeOverrides;\n return isPlainObject(overrides) && Object.keys(overrides).length > 0;\n}\n\n/**\n * All override entries serving the locale, weakest-first: same-language keys\n * (e.g. `en` for `en_US`), then the exact-normalized key last so it wins the\n * merge.\n */\nfunction matchKeys(availableKeys: string[], locale: string): string[] {\n let exact: string | null = null;\n const sameLanguageKeys: string[] = [];\n for (const key of availableKeys) {\n if (normalize(key) === normalize(locale)) {\n exact = key;\n } else if (sameLanguage(key, locale)) {\n sameLanguageKeys.push(key);\n }\n }\n if (exact !== null) {\n sameLanguageKeys.push(exact);\n }\n return sameLanguageKeys;\n}\n\n/**\n * Which override entries serve the requested locale, in APPLICATION order\n * (weakest first). Falls back to the default locale's entries when the\n * requested language has none, then to none (base content).\n */\nfunction pickOverrideLocales(availableKeys: string[], locale: string, defaultLocale: string | null, baseLocale: string | null): string[] {\n if (availableKeys.length === 0) {\n return [];\n }\n\n // The base content already speaks the requested language.\n if (baseLocale !== null && sameLanguage(locale, baseLocale)) {\n return [];\n }\n\n const matches = matchKeys(availableKeys, locale);\n if (matches.length > 0) {\n return matches;\n }\n\n if (defaultLocale !== null && defaultLocale.trim() !== '' && !(baseLocale !== null && sameLanguage(defaultLocale, baseLocale))) {\n const defaultMatches = matchKeys(availableKeys, defaultLocale);\n if (defaultMatches.length > 0) {\n return defaultMatches;\n }\n }\n\n return [];\n}\n\n/**\n * Apply sparse content overrides by element id, recursing into `children`\n * (e.g. columns wrap their cells as child elements).\n */\nfunction applyElementOverrides(elements: unknown[], overridesByElementId: AnyRecord): unknown[] {\n return elements.map(element => {\n if (!isPlainObject(element)) {\n return element;\n }\n\n let result: AnyRecord = element;\n const elementId = element.id;\n const override = typeof elementId === 'string' || typeof elementId === 'number' ? overridesByElementId[String(elementId)] : undefined;\n if (isPlainObject(override) && isPlainObject(override.content)) {\n const baseContent = isPlainObject(result.content) ? result.content : {};\n result = { ...result, content: { ...baseContent, ...override.content } };\n }\n\n if (Array.isArray(result.children)) {\n result = { ...result, children: applyElementOverrides(result.children, overridesByElementId) };\n }\n\n return result;\n });\n}\n\n/**\n * Merge the override for the requested locale into the document and strip the\n * locale structure. Safe on any shape — unknown keys pass through untouched.\n * Does not mutate the input document.\n */\nexport function resolveLocale<T extends AnyRecord>(document: T, locale: string, defaultLocale: string | null = null): T {\n const overrides = isPlainObject(document.localeOverrides) ? document.localeOverrides : {};\n const baseLocale = typeof document.baseLocale === 'string' ? document.baseLocale : null;\n\n // LAYERED application: a language-only entry (`en`) applies first, a\n // region-exact entry (`en_US`) merges on top, so both key styles compose.\n const overrideKeys = pickOverrideLocales(Object.keys(overrides), locale, defaultLocale, baseLocale);\n\n let resolved: AnyRecord = { ...document };\n\n for (const overrideKey of overrideKeys) {\n const override = overrides[overrideKey];\n if (!isPlainObject(override)) {\n continue;\n }\n\n const elementOverrides = isPlainObject(override.elements) ? override.elements : {};\n if (Object.keys(elementOverrides).length > 0 && Array.isArray(resolved.sections)) {\n resolved = {\n ...resolved,\n sections: resolved.sections.map(section =>\n isPlainObject(section) && Array.isArray(section.elements) ? { ...section, elements: applyElementOverrides(section.elements, elementOverrides) } : section,\n ),\n };\n }\n\n if (isPlainObject(override.seo) && Object.keys(override.seo).length > 0) {\n const baseSeo = isPlainObject(resolved.seo) ? resolved.seo : {};\n resolved = { ...resolved, seo: { ...baseSeo, ...override.seo } };\n }\n }\n\n delete resolved.localeOverrides;\n delete resolved.baseLocale;\n\n return resolved as T;\n}\n","/**\n * b2c lead-trimming for AICO Neo content-builder documents.\n *\n * `<aico-article-detail>` already renders its own header (title + headline\n * image, see aico-article-detail.tsx), but Neo articles routinely restate\n * both as their first section/elements (a hero image + a heading). Rendering\n * them again would duplicate the host page's header. The dedup mirrors the\n * b2b backend's `NeoNewsContentRenderer`: it is POSITIONAL — while nothing\n * \"real\" has been emitted yet, drop body images (only when the host shows a\n * hero) and drop a leading heading whose text equals the host's title;\n * images/dividers never end the lead, anything else does.\n *\n * Kept as a SEPARATE preprocessor rather than folded into\n * `news-neo-renderer.ts`, which is vendored verbatim from the kj theme and\n * must stay diffable against it.\n */\nimport type { NeoDocument, NeoElement, NeoSection } from '../../model/article/NeoDocument';\n\nexport interface TrimNeoLeadOptions {\n /** Drop lead body images — the host page already shows a hero image. */\n trimLeadImage: boolean;\n /** Drop a leading heading whose text equals this — the host page's own title. */\n dedupeTitle?: string | null;\n}\n\nconst ENTITIES: { [entity: string]: string } = {\n '&': '&',\n '<': '<',\n '>': '>',\n '"': '\"',\n ''': \"'\",\n ' ': ' ',\n};\n\n/** Plain text of an HTML fragment, whitespace-collapsed and lowercased (mirrors NeoNewsContentRenderer::normalizeText). */\nexport function normalizeText(html: string): string {\n const stripped = html.replace(/<[^>]*>/g, '');\n const decoded = stripped.replace(/&|<|>|"|'| /g, entity => ENTITIES[entity]);\n return decoded.replace(/\\s+/g, ' ').trim().toLowerCase();\n}\n\n/** Shared, mutable state for a single pass over the document (mirrors the renderer's per-render instance fields). */\ntype LeadTrimState = {\n atLeadingEdge: boolean;\n dropLeadingImage: boolean;\n normalizedTitle: string | null;\n};\n\nfunction headingText(element: NeoElement): string {\n const text = element.content?.text;\n return typeof text === 'string' ? text : '';\n}\n\n/** Filters one elements array, recursing into `columns` children. Returns the input array by reference when nothing changed. */\nfunction trimElements(elements: NeoElement[], state: LeadTrimState): NeoElement[] {\n const result: NeoElement[] = [];\n let changed = false;\n\n for (const element of elements) {\n if (element.type === 'columns') {\n const children = Array.isArray(element.children) ? element.children : [];\n const newChildren = trimElements(children, state);\n if (newChildren.length === 0) {\n changed = true;\n continue;\n }\n if (newChildren !== children) {\n changed = true;\n result.push({ ...element, children: newChildren });\n } else {\n result.push(element);\n }\n continue;\n }\n\n if (element.type === 'image') {\n // Images never end the lead: kept or dropped, either way the next\n // element is still evaluated as leading.\n if (state.atLeadingEdge && state.dropLeadingImage) {\n changed = true;\n continue;\n }\n result.push(element);\n continue;\n }\n\n if (element.type === 'divider') {\n // Dividers don't end the lead either.\n result.push(element);\n continue;\n }\n\n if (element.type === 'heading') {\n if (state.atLeadingEdge && state.normalizedTitle !== null && normalizeText(headingText(element)) === state.normalizedTitle) {\n changed = true;\n continue;\n }\n result.push(element);\n state.atLeadingEdge = false;\n continue;\n }\n\n // Any other element type (text, html, button, video, gallery, slideshow, …) is kept and ends the lead.\n result.push(element);\n state.atLeadingEdge = false;\n }\n\n return changed ? result : elements;\n}\n\n/**\n * Preprocesses a locale-resolved Neo document, dropping lead content that\n * duplicates the host page's own header. Non-mutating: returns the input\n * unchanged (same reference) when there is nothing to do, otherwise a new\n * document with a new `sections` array (untouched sections/elements may be\n * reused by reference).\n */\nexport function trimNeoLead(document: NeoDocument, options: TrimNeoLeadOptions): NeoDocument {\n const sections = Array.isArray(document.sections) ? document.sections : [];\n if (sections.length === 0) {\n return document;\n }\n\n const dedupeTitle = options.dedupeTitle;\n const hasDedupeTitle = typeof dedupeTitle === 'string' && dedupeTitle.trim() !== '';\n if (!options.trimLeadImage && !hasDedupeTitle) {\n return document;\n }\n\n const state: LeadTrimState = {\n atLeadingEdge: true,\n dropLeadingImage: options.trimLeadImage,\n normalizedTitle: hasDedupeTitle ? normalizeText(dedupeTitle as string) : null,\n };\n\n const newSections: NeoSection[] = [];\n for (const section of sections) {\n const elements = Array.isArray(section.elements) ? section.elements : [];\n const newElements = trimElements(elements, state);\n if (newElements.length === 0) {\n // An empty section must not survive — this is what removes a\n // background-only hero section once its sole image is trimmed.\n continue;\n }\n newSections.push(newElements === elements ? section : { ...section, elements: newElements });\n }\n\n return { ...document, sections: newSections };\n}\n","/**\n * news-neo-renderer.ts\n *\n * The AICO Neo content-builder renderer (`contentBuilderNeoJson` -> HTML),\n * VENDORED VERBATIM from the kj-theme's `assets/content-builder-neo.js`\n * (aico release/kj_v2.1.5, Modules/Storefront/Resources/scaffolds/kj-theme),\n * itself ported from the Shopify news-neo.js. Element coverage: heading, text,\n * html, image, button (design-token aware), gallery, media-gallery, slideshow,\n * video, youtube/vimeo, divider, columns. Injects its own component CSS once\n * per document and hydrates sliders/lightboxes.\n *\n * Changes versus the theme file (keep this list exhaustive when syncing):\n * 1. IIFE wrapper + #aico-content bootstrap removed; `window.NewsNeo`\n * became the `NewsNeo` export (same shape).\n * 2. `setActiveLocale()` added; pickTranslation prefers it over the page's\n * `window.current_locale_code` global.\n * 3. The button renderer honors the builder's `content.button*` design\n * fields (variant/shape/size/colors/border/shadow/fullWidth/openInNewTab)\n * with the exact mapping from aiconeo's ElementRenderer, so the published\n * button matches the builder canvas. Candidate for backporting to the\n * theme, which still ignores these fields.\n * 4. `stylesToInline` skips non-primitive values (builder metadata like\n * `widthValue`) and `var(--x)` values without a fallback — builder-only\n * tokens (`hsl(var(--primary))`) are invalid outside the builder and\n * would kill the property's stylesheet value. Plus builder-parity <p>\n * margin reset inside text elements (NEO_STYLES).\n *\n * To pull upstream renderer fixes: re-vendor the theme file and re-apply the\n * changes above.\n */\n/* eslint-disable */\n// @ts-nocheck\n\n// Active locale for media-gallery caption translations; set by the host\n// component (falls back to the page global the theme uses).\nvar activeLocale = null;\n\nexport function setActiveLocale(locale) {\n activeLocale = typeof locale === 'string' && locale.trim() !== '' ? locale.trim() : null;\n}\n\n\n // Forward styles.desktop from the JSON to the DOM\n var USE_API_INLINE_STYLES = true;\n\n // ============================================================\n // Detection\n // ============================================================\n\n function hasNeoContent(data) {\n if (!data || typeof data !== 'object') return false;\n var neo = data.contentBuilderNeoJson;\n if (!neo || typeof neo !== 'object') return false;\n if (!Array.isArray(neo.sections) || neo.sections.length === 0) return false;\n return true;\n }\n\n // ============================================================\n // Style helpers (used only when USE_API_INLINE_STYLES is true)\n // ============================================================\n\n function camelToKebab(s) {\n return s.replace(/([A-Z])/g, '-$1').toLowerCase();\n }\n\n // Expand `padding`/`margin` shorthand into longhands when both are present, so longhands always win.\n function normalizeShorthands(styleObj) {\n var out = {};\n for (var k in styleObj) {\n if (Object.prototype.hasOwnProperty.call(styleObj, k)) out[k] = styleObj[k];\n }\n var sides = ['Top', 'Right', 'Bottom', 'Left'];\n ['padding', 'margin'].forEach(function (base) {\n var hasIndividual = sides.some(function (s) { return (base + s) in out; });\n if (!hasIndividual || !(base in out)) return;\n var parts = String(out[base]).trim().split(/\\s+/);\n var top = parts[0];\n var right = parts[1] !== undefined ? parts[1] : top;\n var bottom = parts[2] !== undefined ? parts[2] : top;\n var left = parts[3] !== undefined ? parts[3] : right;\n var fill = { Top: top, Right: right, Bottom: bottom, Left: left };\n sides.forEach(function (s) { if (!(base + s in out)) out[base + s] = fill[s]; });\n delete out[base];\n });\n return out;\n }\n\n function stylesToInline(styleObj) {\n if (!styleObj || typeof styleObj !== 'object' || Array.isArray(styleObj)) return '';\n var normalized = normalizeShorthands(styleObj);\n var out = [];\n for (var key in normalized) {\n if (!Object.prototype.hasOwnProperty.call(normalized, key)) continue;\n var val = normalized[key];\n if (val === null || val === undefined || val === '') continue;\n // Builder-internal metadata (e.g. `widthValue: {mode, value}`) is not CSS.\n if (typeof val !== 'string' && typeof val !== 'number') continue;\n // A `var(--x)` WITHOUT a fallback only resolves inside the builder\n // (shadcn tokens like `hsl(var(--primary))`). On any other page it is\n // invalid at computed-value time, which doesn't fall back to the\n // stylesheet value — it kills the property. Skip such declarations;\n // `var(--x, fallback)` stays.\n if (typeof val === 'string' && /var\\(--[^,)]+\\)/.test(val)) continue;\n out.push(camelToKebab(key) + ':' + val);\n }\n return out.join(';');\n }\n\n function pickStyles(node, breakpoint) {\n if (!node || !node.styles) return {};\n var s = node.styles[breakpoint || 'desktop'];\n if (!s || Array.isArray(s)) return {};\n return s;\n }\n\n function inlineStyleAttr(node) {\n if (!USE_API_INLINE_STYLES) return '';\n var s = stylesToInline(pickStyles(node));\n return s ? ' style=\"' + s + '\"' : '';\n }\n\n // Strip a single wrapping <p> so heading text from the rich-text editor isn't invalid <hN><p>.\n function stripOuterParagraph(html) {\n if (!html) return '';\n return String(html).replace(/^\\s*<p[^>]*>([\\s\\S]*?)<\\/p>\\s*$/i, '$1');\n }\n\n function escapeAttr(s) {\n if (s == null) return '';\n return String(s)\n .replace(/&/g, '&')\n .replace(/\"/g, '"')\n .replace(/</g, '<')\n .replace(/>/g, '>');\n }\n\n // Pick the active translation: window.current_locale_code if matched, else first available.\n function pickTranslation(translations) {\n if (!translations || typeof translations !== 'object') return {};\n var loc = activeLocale || ((typeof window !== 'undefined' && window.current_locale_code) ? window.current_locale_code : null);\n if (loc && translations[loc]) return translations[loc];\n for (var k in translations) {\n if (Object.prototype.hasOwnProperty.call(translations, k)) return translations[k] || {};\n }\n return {};\n }\n\n // Prefix bare domains with https:// so they don't get treated as relative paths.\n function normalizeUrl(url) {\n if (!url) return '';\n var s = String(url).trim();\n if (!s) return '';\n if (/^javascript:/i.test(s)) return '';\n if (/^([a-z][a-z0-9+.\\-]*:|\\/\\/|\\/|#)/i.test(s)) return s;\n if (/^[^\\s\\/?]+\\.[a-z]{2,}/i.test(s)) return 'https://' + s;\n return s;\n }\n\n // Element renderers return inner HTML only; row/column wrapping lives in\n // renderSection. The `columns` type is handled there, not here.\n var renderers = {};\n\n renderers.heading = function (el) {\n var content = el.content || {};\n var level = content.level || 'h2';\n if (!/^h[1-6]$/i.test(level)) level = 'h2';\n var text = stripOuterParagraph(content.text != null ? content.text : '');\n return '<div class=\"content-type-title content-type-neo-heading\">' +\n '<' + level + inlineStyleAttr(el) + '>' + text + '</' + level + '>' +\n '</div>';\n };\n\n renderers.text = function (el) {\n var content = el.content || {};\n var text = content.text != null ? content.text : '';\n return '<div class=\"content-type-text content-type-neo-text\"' + inlineStyleAttr(el) + '>' + text + '</div>';\n };\n\n // Custom HTML block — render the author's raw markup verbatim (matches the React builder's\n // `html` element, which stores HTML untouched by the rich-text engine).\n renderers.html = function (el) {\n var content = el.content || {};\n var html = content.html != null ? content.html : '';\n return '<div class=\"content-type-html content-type-neo-html\"' + inlineStyleAttr(el) + '>' + html + '</div>';\n };\n\n renderers.image = function (el) {\n var content = el.content || {};\n var src = content.src || '';\n if (!src) return '';\n var alt = escapeAttr(content.alt || '');\n var caption = content.caption || '';\n // Inline styles go on the <img> — no legacy .image-container wrapper (forced max-width:75%).\n var html = '<div class=\"content-type-neo-image\">';\n html += '<img src=\"' + escapeAttr(src) + '\" alt=\"' + alt + '\" loading=\"lazy\"' + inlineStyleAttr(el) + '>';\n if (caption) {\n html += '<span class=\"caption\">' + caption + '</span>';\n }\n html += '</div>';\n return html;\n };\n\n renderers.divider = function (el) {\n return '<div class=\"content-type-divider content-type-neo-divider\"><hr' + inlineStyleAttr(el) + '></div>';\n };\n\n // ----- design tokens (builder look) -----\n //\n // The builder styles buttons through page-level design tokens\n // (designTokens.components.buttonPrimary → semantic colors → color tokens),\n // not through per-element styles — the stored element is usually a bare\n // `{type:'button', content:{text,url}}`. Resolve the same chain here so the\n // storefront button matches what the author sees in the builder; the\n // element's own styles.desktop still wins over tokens as the author's\n // explicit override.\n var currentTokens = null;\n\n function resolveTokenColor(value, tokens) {\n if (!value || typeof value !== 'string') return null;\n if (/^(#|rgb|hsl|var\\(|transparent$|currentcolor$)/i.test(value)) return value;\n var colors = (tokens && tokens.colors) || {};\n var semantic = (tokens && tokens.semantic && tokens.semantic.colors) || {};\n var key = semantic[value] || value;\n return colors[key] || null;\n }\n\n function buttonTokenStyles(tokens) {\n var comp = tokens && tokens.components && tokens.components.buttonPrimary;\n if (!comp || typeof comp !== 'object') return {};\n // State-based shape `{default:{…},radius,padding,fontSize}`; legacy docs\n // stored the default state flat on the component itself.\n var def = (comp['default'] && typeof comp['default'] === 'object') ? comp['default'] : comp;\n var out = {};\n var bg = resolveTokenColor(def.background, tokens);\n var fg = resolveTokenColor(def.color, tokens);\n var border = resolveTokenColor(def.borderColor, tokens);\n if (bg) out.backgroundColor = bg;\n if (fg) out.color = fg;\n if (border) out.border = '1px solid ' + border;\n if (typeof comp.radius === 'string' && comp.radius) out.borderRadius = comp.radius;\n if (typeof comp.padding === 'string' && comp.padding) {\n out.padding = ((tokens.spacing || {})[comp.padding]) || comp.padding;\n }\n if (typeof comp.fontSize === 'string' && comp.fontSize) {\n out.fontSize = ((tokens.typography || {})[comp.fontSize]) || comp.fontSize;\n }\n return out;\n }\n\n // The builder's `button` element (`content: {text, url}`). Markup matches the\n // legacy link block (`.content-type-link` + `a.button button--primary`); the\n // injected baseline CSS makes it a styled CTA even without tokens, the page's\n // design tokens repaint it to the builder's exact look, and the element's own\n // styles.desktop wins over both.\n renderers.button = function (el) {\n var content = el.content || {};\n var text = content.text != null ? String(content.text) : '';\n var url = normalizeUrl(content.url || '');\n if (!text || !url) return '';\n var merged = buttonTokenStyles(currentTokens);\n // The builder's Style-tab alignment writes `textAlign` on the ELEMENT;\n // on the inline-block <a> it would only center the label, so route it to\n // the wrapper div — that is what actually moves the button (mirrors the\n // builder canvas, where element styles land on the element's wrapper).\n var wrapperStyles = {};\n if (USE_API_INLINE_STYLES) {\n var own = pickStyles(el);\n for (var key in own) {\n if (!Object.prototype.hasOwnProperty.call(own, key)) continue;\n if (key === 'textAlign') { wrapperStyles.textAlign = own[key]; continue; }\n merged[key] = own[key];\n }\n }\n\n // ── Builder design fields (`content.button*`) ──\n // Mirrors aiconeo's ElementRenderer button mapping exactly, so the\n // published button matches the builder canvas: variant/shape/size tables,\n // shadow scale, and the same precedence (content fields > element styles\n // > defaults). A styles color/background carrying an unresolvable builder\n // token (`hsl(var(--primary))`) is ignored the same way.\n var variant = content.buttonVariant || 'filled';\n var shape = content.buttonShape || 'rounded';\n var size = content.buttonSize || 'md';\n var bgColor = content.buttonBgColor || '';\n var btnTextColor = content.buttonTextColor || '';\n var borderColor = content.buttonBorderColor || '';\n var borderWidth = content.buttonBorderWidth == null ? 2 : Number(content.buttonBorderWidth) || 0;\n var fullWidth = !!content.buttonFullWidth;\n var shadowLevel = Number(content.buttonShadow) || 0;\n\n var shapeRadius = { square: '0px', rounded: '8px', pill: '9999px' };\n var sizeStyles = {\n sm: { padding: '8px 16px', fontSize: '13px' },\n md: { padding: '12px 24px', fontSize: '15px' },\n lg: { padding: '16px 32px', fontSize: '17px' },\n xl: { padding: '20px 40px', fontSize: '19px' },\n };\n var shadowValues = ['none', '0 1px 2px 0 rgba(0,0,0,0.05)', '0 4px 6px -1px rgba(0,0,0,0.1)', '0 10px 15px -3px rgba(0,0,0,0.1)', '0 20px 25px -5px rgba(0,0,0,0.1)'];\n\n var isBuilderToken = function (value) {\n return typeof value === 'string' && value.indexOf('var(--') !== -1;\n };\n var styleBg = isBuilderToken(merged.backgroundColor) ? undefined : merged.backgroundColor;\n var inheritedTextColor = isBuilderToken(merged.color) ? undefined : merged.color;\n\n merged.borderRadius = shapeRadius[shape] || '8px';\n merged.padding = (sizeStyles[size] || sizeStyles.md).padding;\n merged.fontSize = (!isBuilderToken(merged.fontSize) && merged.fontSize) || (sizeStyles[size] || sizeStyles.md).fontSize;\n merged.boxShadow = shadowValues[shadowLevel] || 'none';\n merged.display = 'inline-flex';\n merged.alignItems = 'center';\n merged.justifyContent = 'center';\n merged.gap = '8px';\n merged.textDecoration = 'none';\n merged.transition = 'all 0.2s ease';\n merged.fontWeight = merged.fontWeight || '600';\n merged.width = fullWidth ? '100%' : undefined;\n\n if (variant === 'outline') {\n merged.backgroundColor = 'transparent';\n merged.color = btnTextColor || borderColor || inheritedTextColor || '#000000';\n merged.border = (borderWidth > 0 ? borderWidth : 2) + 'px solid ' + (borderColor || btnTextColor || '#000000');\n } else if (variant === 'ghost') {\n merged.backgroundColor = bgColor || 'rgba(0,0,0,0.05)';\n merged.color = btnTextColor || inheritedTextColor || (bgColor ? '#ffffff' : '#000000');\n merged.border = borderWidth > 0 ? borderWidth + 'px solid ' + (borderColor || '#000000') : 'none';\n } else if (variant === 'link') {\n merged.backgroundColor = 'transparent';\n merged.color = btnTextColor || inheritedTextColor || '#000000';\n merged.border = 'none';\n merged.padding = '0';\n merged.textDecoration = 'underline';\n merged.boxShadow = 'none';\n } else {\n // 'filled' (default)\n merged.backgroundColor = bgColor || styleBg || '#000000';\n merged.color = btnTextColor || inheritedTextColor || '#ffffff';\n merged.border = borderWidth > 0 ? borderWidth + 'px solid ' + (borderColor || '#000000') : 'none';\n }\n\n var targetAttr = content.openInNewTab ? ' target=\"_blank\" rel=\"noopener noreferrer\"' : '';\n var styleStr = stylesToInline(merged);\n var wrapperStr = stylesToInline(wrapperStyles);\n return '<div class=\"content-type-link content-type-neo-button\"' + (wrapperStr ? ' style=\"' + wrapperStr + '\"' : '') + '>' +\n '<a href=\"' + escapeAttr(url) + '\" class=\"button button--primary\"' + targetAttr + (styleStr ? ' style=\"' + styleStr + '\"' : '') + '>' + text + '</a>' +\n '</div>';\n };\n\n // ----- video helpers -----\n\n function youtubeId(url) {\n if (!url) return '';\n var m = String(url).match(/(?:youtube\\.com\\/(?:embed\\/|watch\\?v=)|youtu\\.be\\/)([A-Za-z0-9_-]{6,})/);\n return m ? m[1] : '';\n }\n\n function vimeoId(url) {\n if (!url) return '';\n var m = String(url).match(/vimeo\\.com\\/(?:video\\/)?(\\d+)/);\n return m ? m[1] : '';\n }\n\n function parseAspectRatio(s, fallback) {\n if (!s) return fallback;\n var str = String(s).replace(':', '/');\n if (/^\\d+(\\.\\d+)?(\\/\\d+(\\.\\d+)?)?$/.test(str)) return str;\n return fallback;\n }\n\n renderers.youtube = function (el) {\n var content = el.content || {};\n var id = content.videoId || youtubeId(content.src || '');\n if (!id) return '';\n var aspect = parseAspectRatio(content.aspectRatio, '16/9');\n var title = escapeAttr(content.videoTitle || 'YouTube video');\n var iframe = '<iframe title=\"' + title + '\" src=\"https://www.youtube.com/embed/' + escapeAttr(id) +\n '\" frameborder=\"0\" allow=\"accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture\" allowfullscreen></iframe>';\n return '<div class=\"content-type-neo-youtube\"' + inlineStyleAttr(el) + '>' +\n '<div class=\"neo-video__frame\" style=\"aspect-ratio:' + aspect + ';\">' + iframe + '</div>' +\n '</div>';\n };\n\n renderers.video = function (el) {\n var content = el.content || {};\n var src = content.src || '';\n if (!src) return '';\n var aspect = parseAspectRatio(content.aspectRatio, '16/9');\n var type = content.type || 'custom';\n var inner;\n if (type === 'youtube') {\n var yid = youtubeId(src);\n if (!yid) return '';\n inner = '<iframe src=\"https://www.youtube.com/embed/' + escapeAttr(yid) +\n '\" frameborder=\"0\" allow=\"accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture\" allowfullscreen></iframe>';\n } else if (type === 'vimeo') {\n var vid = vimeoId(src);\n if (!vid) return '';\n inner = '<iframe src=\"https://player.vimeo.com/video/' + escapeAttr(vid) +\n '\" frameborder=\"0\" allow=\"autoplay; fullscreen; picture-in-picture\" allowfullscreen></iframe>';\n } else {\n inner = '<video src=\"' + escapeAttr(src) + '\" controls></video>';\n }\n return '<div class=\"content-type-neo-video\"' + inlineStyleAttr(el) + '>' +\n '<div class=\"neo-video__frame\" style=\"aspect-ratio:' + aspect + ';\">' + inner + '</div>' +\n '</div>';\n };\n\n renderers.gallery = function (el) {\n var content = el.content || {};\n var rawImages = Array.isArray(content.images) ? content.images : [];\n var images = [];\n for (var i = 0; i < rawImages.length; i++) {\n if (rawImages[i] && rawImages[i].src) images.push(rawImages[i]);\n }\n if (images.length === 0) return '';\n\n var cols = parseInt(content.columns, 10);\n if (!isFinite(cols) || cols < 1) cols = 3;\n if (cols > 6) cols = 6;\n\n var variant = content.layoutVariant\n ? ' content-type-neo-gallery--' + escapeAttr(String(content.layoutVariant))\n : '';\n\n var apiStyles = USE_API_INLINE_STYLES ? stylesToInline(pickStyles(el)) : '';\n var gridCols = 'grid-template-columns:repeat(' + cols + ',1fr)';\n var combined = apiStyles ? apiStyles + ';' + gridCols : gridCols;\n\n var html = '<div class=\"content-type-neo-gallery' + variant + '\" style=\"' + combined + '\">';\n for (var k = 0; k < images.length; k++) {\n var img = images[k];\n html += '<img src=\"' + escapeAttr(img.src) + '\" alt=\"' + escapeAttr(img.alt || '') + '\" loading=\"lazy\">';\n }\n html += '</div>';\n return html;\n };\n\n function renderMediaGalleryItem(file, showCaptions) {\n var src = file.optimizedImageUrl || file.url;\n var t = pickTranslation(file.translations);\n var alt = escapeAttr(t.alternativeText || t.name || '');\n var caption = t.caption || '';\n var html = '<figure class=\"neo-media-gallery__item\">';\n html += '<img src=\"' + escapeAttr(src) + '\" alt=\"' + alt + '\" loading=\"lazy\">';\n if (showCaptions && caption) {\n html += '<figcaption class=\"neo-media-gallery__caption\">' + caption + '</figcaption>';\n }\n html += '</figure>';\n return html;\n }\n\n renderers['media-gallery'] = function (el) {\n var content = el.content || {};\n var rawFiles = Array.isArray(content.files) ? content.files : [];\n if (rawFiles.length === 0) return '';\n\n var files = rawFiles.slice().sort(function (a, b) {\n var ao = (a && typeof a.order === 'number') ? a.order : 0;\n var bo = (b && typeof b.order === 'number') ? b.order : 0;\n return ao - bo;\n }).filter(function (f) {\n return f && (f.url || f.optimizedImageUrl);\n });\n if (files.length === 0) return '';\n\n var cols = parseInt(content.columns, 10);\n if (!isFinite(cols) || cols < 1) cols = 3;\n if (cols > 6) cols = 6;\n\n var layout = (content.layout || 'grid').toLowerCase();\n if (layout !== 'grid' && layout !== 'masonry' && layout !== 'carousel') layout = 'grid';\n\n var showCaptions = content.showCaptions !== false;\n var subsectionTitle = content.subsectionTitle || '';\n var variantClass = ' content-type-neo-media-gallery--' + layout;\n\n var inner = '';\n if (layout === 'masonry') {\n inner += '<div class=\"neo-media-gallery__masonry\" style=\"column-count:' + cols + ';\">';\n for (var i = 0; i < files.length; i++) inner += renderMediaGalleryItem(files[i], showCaptions);\n inner += '</div>';\n } else if (layout === 'carousel') {\n var hasOverflow = files.length > cols;\n inner += '<div class=\"neo-media-gallery__carousel\" data-neo-mg-carousel=\"1\" data-cols=\"' + cols + '\">';\n inner += '<div class=\"neo-media-gallery__carousel-track\" style=\"--neo-mg-cols:' + cols + ';\">';\n for (var j = 0; j < files.length; j++) inner += renderMediaGalleryItem(files[j], showCaptions);\n inner += '</div>';\n if (hasOverflow) {\n inner += '<button type=\"button\" class=\"neo-media-gallery__nav neo-media-gallery__nav--prev\" aria-label=\"Previous\">❮</button>';\n inner += '<button type=\"button\" class=\"neo-media-gallery__nav neo-media-gallery__nav--next\" aria-label=\"Next\">❯</button>';\n inner += '<div class=\"neo-media-gallery__scrubber\" style=\"position:relative;height:6px;background:#d0d0d0;border-radius:3px;margin-top:16px;cursor:pointer;touch-action:none;user-select:none;overflow:hidden;\">';\n inner += '<div class=\"neo-media-gallery__scrubber-thumb\" style=\"position:absolute;top:0;left:0;height:100%;width:60px;min-width:60px;background:#333;border-radius:3px;pointer-events:none;display:block;\"></div>';\n inner += '</div>';\n }\n inner += '</div>';\n } else {\n inner += '<div class=\"neo-media-gallery__grid\" style=\"grid-template-columns:repeat(' + cols + ',1fr);\">';\n for (var k = 0; k < files.length; k++) inner += renderMediaGalleryItem(files[k], showCaptions);\n inner += '</div>';\n }\n\n var html = '<div class=\"content-type-neo-media-gallery' + variantClass + '\"' + inlineStyleAttr(el) + '>';\n if (subsectionTitle) html += '<h3 class=\"neo-media-gallery__title\">' + subsectionTitle + '</h3>';\n html += inner;\n html += '</div>';\n return html;\n };\n\n renderers.slideshow = function (el) {\n var content = el.content || {};\n var rawSlides = Array.isArray(content.slides) ? content.slides : [];\n var slides = [];\n for (var i = 0; i < rawSlides.length; i++) {\n if (rawSlides[i] && rawSlides[i].src) slides.push(rawSlides[i]);\n }\n if (slides.length === 0) return '';\n\n var autoplay = content.autoplay === true;\n var interval = parseInt(content.autoplayInterval, 10);\n if (!isFinite(interval) || interval < 1000) interval = 5000;\n var showDots = content.showDots !== false;\n var showArrows = content.showArrows !== false;\n var aspect = parseAspectRatio(content.aspectRatio, '16/9');\n\n var html = '<div class=\"content-type-text content-type-neo-slideshow\"' +\n ' data-neo-slideshow=\"1\"' +\n ' data-autoplay=\"' + (autoplay ? '1' : '0') + '\"' +\n ' data-interval=\"' + interval + '\"' +\n inlineStyleAttr(el) + '>';\n html += '<div class=\"neo-slideshow__viewport\" style=\"aspect-ratio:' + aspect + ';\">';\n html += '<div class=\"neo-slideshow__track\">';\n for (var s = 0; s < slides.length; s++) {\n var slide = slides[s];\n html += '<div class=\"neo-slideshow__slide\">';\n html += '<img src=\"' + escapeAttr(slide.src) + '\" alt=\"' + escapeAttr(slide.alt || '') + '\" loading=\"lazy\">';\n if (slide.headline || (slide.buttonText && slide.buttonUrl)) {\n html += '<div class=\"neo-slideshow__caption\">';\n if (slide.headline) html += '<h3 class=\"neo-slideshow__headline\" style=\"color:#fff !important;font-size:28px !important;font-weight:600 !important;line-height:1.2 !important;margin:0 !important;\">' + slide.headline + '</h3>';\n var btnUrl = normalizeUrl(slide.buttonUrl);\n if (slide.buttonText && btnUrl) {\n html += '<a class=\"neo-slideshow__btn\" href=\"' + escapeAttr(btnUrl) + '\">' + slide.buttonText + '</a>';\n }\n html += '</div>';\n }\n html += '</div>';\n }\n html += '</div>'; // track\n if (showArrows && slides.length > 1) {\n html += '<button type=\"button\" class=\"neo-slideshow__nav neo-slideshow__nav--prev\" aria-label=\"Previous slide\">❮</button>';\n html += '<button type=\"button\" class=\"neo-slideshow__nav neo-slideshow__nav--next\" aria-label=\"Next slide\">❯</button>';\n }\n html += '</div>'; // viewport\n if (showDots && slides.length > 1) {\n html += '<div class=\"neo-slideshow__dots\">';\n for (var d = 0; d < slides.length; d++) {\n html += '<button type=\"button\" class=\"neo-slideshow__dot\" data-idx=\"' + d + '\" aria-label=\"Go to slide ' + (d + 1) + '\"></button>';\n }\n html += '</div>';\n }\n html += '</div>';\n return html;\n };\n\n function renderUnknown(el) {\n if (window.console && console.warn) {\n console.warn('NewsNeo: no renderer for type', el && el.type, el);\n }\n return '';\n }\n\n // ============================================================\n // Dispatch (single element, NOT a column container)\n // ============================================================\n\n function renderElement(el) {\n if (!el || typeof el !== 'object') return '';\n if (el.type === 'columns') {\n // Should never reach here - handled in renderSection. Safe guard.\n return '';\n }\n var fn = renderers[el.type];\n if (typeof fn !== 'function') return renderUnknown(el);\n try {\n return fn(el);\n } catch (e) {\n if (window.console && console.warn) {\n console.warn('NewsNeo: renderer for \"' + el.type + '\" threw', e);\n }\n return '';\n }\n }\n\n // ============================================================\n // Row / column wrappers\n // Mirrors the legacy structure produced inside news.js so news.css\n // styles the result identically.\n // ============================================================\n\n function wrapContent(innerHtml, contentIndex) {\n if (!innerHtml) return '';\n return '<div class=\"content content__' + contentIndex + '\">' + innerHtml + '</div>';\n }\n\n function wrapColumn(contentHtmlList, columnIndex) {\n var inner = contentHtmlList.join('');\n return '<div class=\"content-column column__' + columnIndex + '\">' + inner + '</div>';\n }\n\n function wrapRow(columnsHtml, rowIndex, totalColumns, isFullWidth) {\n var classes = ['content-row', 'row__' + rowIndex, 'total-columns-' + totalColumns];\n if (isFullWidth) classes.push('fullwidth');\n return '<div class=\"' + classes.join(' ') + '\">' + columnsHtml + '</div>';\n }\n\n // Render a `columns` element as one multi-column row.\n function renderColumnsRow(columnsEl, rowIndex, isFullWidth) {\n var content = columnsEl.content || {};\n var count = parseInt(content.columnCount, 10);\n if (isNaN(count) || count < 1) count = 2;\n if (count > 4) count = 4; // legacy CSS supports up to total-columns-4\n\n var children = Array.isArray(columnsEl.children) ? columnsEl.children : [];\n\n var sorted = children.slice().sort(function (a, b) {\n var ai = (a && a.content && typeof a.content.columnIndex === 'number') ? a.content.columnIndex : 0;\n var bi = (b && b.content && typeof b.content.columnIndex === 'number') ? b.content.columnIndex : 0;\n return ai - bi;\n });\n\n var buckets = [];\n for (var c = 0; c < count; c++) buckets.push([]);\n var fallbackIdx = 0;\n for (var j = 0; j < sorted.length; j++) {\n var child = sorted[j];\n var ci = (child && child.content && typeof child.content.columnIndex === 'number')\n ? child.content.columnIndex\n : fallbackIdx++;\n if (ci < 0) ci = 0;\n if (ci >= count) ci = count - 1;\n buckets[ci].push(child);\n }\n\n var columnsHtml = '';\n for (var col = 0; col < count; col++) {\n var contentsHtml = [];\n for (var k = 0; k < buckets[col].length; k++) {\n var rendered = renderElement(buckets[col][k]);\n if (rendered) contentsHtml.push(wrapContent(rendered, k + 1));\n }\n columnsHtml += wrapColumn(contentsHtml, col + 1);\n }\n\n return wrapRow(columnsHtml, rowIndex, count, isFullWidth);\n }\n\n // Emits N rows per section: consecutive non-columns elements stack into one row;\n // each `columns` element becomes its own multi-column row, in document order.\n function renderSection(section, startRowIndex) {\n if (!section || !Array.isArray(section.elements) || section.elements.length === 0) {\n return { html: '', rowCount: 0 };\n }\n\n var isFullWidth = !!section.fullWidth;\n var elements = section.elements;\n var html = '';\n var rowIndex = startRowIndex;\n var buffer = [];\n\n function flushBuffer() {\n if (buffer.length === 0) return;\n var singleCol = wrapColumn(buffer, 1);\n html += wrapRow(singleCol, rowIndex++, 1, isFullWidth);\n buffer = [];\n }\n\n for (var i = 0; i < elements.length; i++) {\n var el = elements[i];\n if (!el) continue;\n if (el.type === 'columns') {\n flushBuffer();\n var columnsRow = renderColumnsRow(el, rowIndex, isFullWidth);\n if (columnsRow) { html += columnsRow; rowIndex++; }\n } else {\n var rendered = renderElement(el);\n if (rendered) buffer.push(wrapContent(rendered, buffer.length + 1));\n }\n }\n flushBuffer();\n\n return { html: html, rowCount: rowIndex - startRowIndex };\n }\n\n // Section wrapper — carries the builder's section-level design across:\n // styles.desktop (backgroundColor, padding, color, …) go inline on the wrapper;\n // layout.mode 'full' makes the background span the entire viewport width\n // (breakout from any centered container, e.g. the 960px .aico-neo-page column)\n // while layout.innerContainer re-contains the content inside the full-bleed\n // band. Mirrors the aiconeo builder's section semantics (SectionPropertiesPanel).\n function wrapSection(section, innerHtml) {\n if (!innerHtml) return '';\n var layout = (section && section.layout) || {};\n var mode = layout.mode || ((section && section.fullWidth) ? 'full' : 'contained');\n var styleStr = USE_API_INLINE_STYLES ? stylesToInline(pickStyles(section)) : '';\n\n var inner = innerHtml;\n var innerContainer = layout.innerContainer || {};\n if (mode === 'full' && innerContainer.enabled !== false) {\n var maxWidth = innerContainer.maxWidth || layout.maxWidth || '';\n inner = '<div class=\"neo-section__inner\"' +\n (maxWidth ? ' style=\"max-width:' + escapeAttr(maxWidth) + '\"' : '') +\n '>' + innerHtml + '</div>';\n }\n\n var classes = 'neo-section' + (mode === 'full' ? ' neo-section--full' : '');\n return '<section class=\"' + classes + '\"' + (styleStr ? ' style=\"' + styleStr + '\"' : '') + '>' + inner + '</section>';\n }\n\n function render(data) {\n if (!hasNeoContent(data)) return '';\n var neo = data.contentBuilderNeoJson;\n currentTokens = (neo.designTokens && typeof neo.designTokens === 'object') ? neo.designTokens : null;\n\n var html = '';\n var nextRowIndex = 1;\n for (var i = 0; i < neo.sections.length; i++) {\n var result = renderSection(neo.sections[i], nextRowIndex);\n html += wrapSection(neo.sections[i], result.html);\n nextRowIndex += result.rowCount;\n }\n return html;\n }\n\n // ============================================================\n // Self-contained styles for slideshow/video/youtube/gallery.\n // Injected once per page so the renderer ships its own CSS.\n // ============================================================\n\n var STYLES_INJECTED = false;\n var NEO_STYLES = [\n // Section shell: full-bleed color band + re-contained inner (see wrapSection).\n // 100vw includes the scrollbar gutter, so clip the body's x-overflow while a\n // full-bleed section is on the page to avoid a phantom horizontal scrollbar.\n '.neo-section{position:relative;}',\n '.neo-section--full{width:100vw;margin-left:calc(50% - 50vw);margin-right:calc(50% - 50vw);}',\n '.neo-section__inner{margin:0 auto;}',\n 'body:has(.neo-section--full){overflow-x:clip;}',\n // Baseline CTA look for the builder's button element: a styled button even\n // when the document carries no design tokens (kj orange, theme radius).\n // Token/element styles land inline on the <a> and override this.\n // Builder-canvas parity: the builder resets <p> margins (Tailwind\n // preflight), so text-element spacing comes from the element's own\n // padding. Keep a small gap between paragraphs WITHIN one element so\n // hand-written multi-paragraph rich text stays readable.\n '.content-type-neo-text p{margin:0;}',\n '.content-type-neo-text p+p{margin-top:1em;}',\n '.content-type-neo-button{margin:8px 0;}',\n '.content-type-neo-button .button{display:inline-block;padding:12px 28px;background:#e8702d;color:#fff;font-weight:600;text-decoration:none;border-radius:var(--aico-radius,2px);line-height:1.2;transition:filter .12s ease;}',\n '.content-type-neo-button .button:hover{filter:brightness(0.92);}',\n '.neo-slideshow__viewport{position:relative;overflow:hidden;border-radius:inherit;}',\n '.neo-slideshow__track{display:flex;width:100%;height:100%;overflow-x:auto;overflow-y:hidden;scroll-snap-type:x mandatory;scroll-behavior:smooth;scrollbar-width:none;-ms-overflow-style:none;}',\n '.neo-slideshow__track::-webkit-scrollbar{display:none;}',\n '.neo-slideshow__slide{flex:0 0 100%;height:100%;scroll-snap-align:start;position:relative;}',\n '.neo-slideshow__slide img{width:100%;height:100%;object-fit:cover;display:block;}',\n '.neo-slideshow__nav{position:absolute;top:50%;transform:translateY(-50%);background:rgba(0,0,0,0.5);color:#fff;border:0;width:36px;height:36px;border-radius:50%;cursor:pointer;z-index:1;font-size:16px;line-height:1;padding:0;display:flex;align-items:center;justify-content:center;}',\n '.neo-slideshow__nav--prev{left:8px;}',\n '.neo-slideshow__nav--next{right:8px;}',\n '.neo-slideshow__dots{display:flex;justify-content:center;gap:8px;margin-top:8px;}',\n '.neo-slideshow__dot{width:8px;height:8px;border-radius:50%;border:0;background:#ccc;cursor:pointer;padding:0;}',\n '.neo-slideshow__dot.is-active{background:#333;}',\n '.neo-slideshow__caption{position:absolute;inset:0;padding:24px;background:rgba(0,0,0,0.35);color:#fff;display:flex;flex-direction:column;align-items:center;justify-content:center;text-align:center;gap:12px;}',\n '.neo-slideshow__headline{margin:0;color:#fff !important;font-size:28px;font-weight:600;line-height:1.2;}',\n '.neo-slideshow__btn{display:inline-block;padding:8px 16px;background:#fff;color:#111;text-decoration:none;border-radius:4px;}',\n '.neo-video__frame{position:relative;width:100%;}',\n '.neo-video__frame iframe,.neo-video__frame video{position:absolute;inset:0;width:100%;height:100%;border:0;}',\n '.content-type-neo-image img{max-width:100%;height:auto;display:block;}',\n // overflow:hidden so wrapper border-radius actually clips the iframe/slides inside.\n '.content-type-neo-youtube,.content-type-neo-video,.content-type-neo-slideshow{overflow:hidden;}',\n '.content-type-neo-gallery{display:grid;gap:8px;}',\n '.content-type-neo-gallery img{width:100%;height:auto;display:block;}',\n '.neo-media-gallery__title{margin:0 0 16px;}',\n '.neo-media-gallery__grid{display:grid;gap:8px;}',\n '.neo-media-gallery__item{margin:0;}',\n '.neo-media-gallery__item img{width:100%;height:auto;display:block;}',\n '.neo-media-gallery__caption{font-size:12px;color:#555;margin-top:4px;}',\n '[class*=\"content-type-neo-\"] a{text-decoration:underline;}',\n '.neo-media-gallery__masonry{column-gap:8px;}',\n '.neo-media-gallery__masonry .neo-media-gallery__item{break-inside:avoid;margin:0 0 8px;display:block;}',\n '.neo-media-gallery__carousel{position:relative;}',\n '.neo-media-gallery__carousel-track{display:flex;gap:8px;overflow-x:auto;overflow-y:hidden;scrollbar-width:none;-ms-overflow-style:none;}',\n '.neo-media-gallery__carousel-track::-webkit-scrollbar{display:none;}',\n '.neo-media-gallery__carousel .neo-media-gallery__item{flex:0 0 calc(60% - 8px);}',\n '.neo-media-gallery__nav{position:absolute;top:50%;transform:translateY(-50%);background:rgba(0,0,0,0.5);color:#fff;border:0;width:36px;height:36px;border-radius:50%;cursor:pointer;z-index:1;font-size:16px;line-height:1;padding:0;display:flex;align-items:center;justify-content:center;}',\n '.neo-media-gallery__nav--prev{left:8px;}',\n '.neo-media-gallery__nav--next{right:8px;}',\n '.neo-media-gallery__scrubber{position:relative;height:8px;background:#e5e5e5;border-radius:4px;margin-top:16px;cursor:pointer;touch-action:none;user-select:none;overflow:hidden;}',\n '.neo-media-gallery__scrubber-thumb{position:absolute;top:0;left:0;height:100%;width:48px;background:#333;border-radius:4px;pointer-events:none;min-width:48px;display:block;}',\n '.neo-media-gallery__scrubber:hover .neo-media-gallery__scrubber-thumb{background:#111;}'\n ].join('');\n\n function injectStyles() {\n if (STYLES_INJECTED) return;\n STYLES_INJECTED = true;\n try {\n var style = document.createElement('style');\n style.setAttribute('data-neo-styles', '1');\n style.appendChild(document.createTextNode(NEO_STYLES));\n (document.head || document.documentElement).appendChild(style);\n } catch (e) { /* no-op */ }\n }\n\n // ============================================================\n // Hydration (runs after the HTML string has been injected)\n // ============================================================\n\n function hydrateSlideshow(root) {\n if (root.__neoWired) return;\n root.__neoWired = true;\n\n var track = root.querySelector('.neo-slideshow__track');\n if (!track) return;\n var slides = track.children;\n var count = slides.length;\n if (count === 0) return;\n\n var dots = root.querySelectorAll('.neo-slideshow__dot');\n var prev = root.querySelector('.neo-slideshow__nav--prev');\n var next = root.querySelector('.neo-slideshow__nav--next');\n var idx = 0;\n var timer = null;\n\n function updateDots() {\n for (var k = 0; k < dots.length; k++) {\n if (k === idx) dots[k].classList.add('is-active');\n else dots[k].classList.remove('is-active');\n }\n }\n\n function goTo(i) {\n if (i < 0) i = count - 1;\n if (i >= count) i = 0;\n idx = i;\n track.scrollTo({ left: i * track.clientWidth, behavior: 'smooth' });\n updateDots();\n }\n\n function resetAutoplay() {\n if (timer) { clearInterval(timer); timer = null; }\n if (root.getAttribute('data-autoplay') !== '1' || count < 2) return;\n var ms = parseInt(root.getAttribute('data-interval'), 10) || 5000;\n timer = setInterval(function () {\n if (!root.isConnected) { clearInterval(timer); timer = null; return; }\n goTo(idx + 1);\n }, ms);\n }\n\n if (prev) prev.addEventListener('click', function () { goTo(idx - 1); resetAutoplay(); });\n if (next) next.addEventListener('click', function () { goTo(idx + 1); resetAutoplay(); });\n for (var k = 0; k < dots.length; k++) {\n (function (k) {\n dots[k].addEventListener('click', function () { goTo(k); resetAutoplay(); });\n })(k);\n }\n\n // Track manual swipes so dots stay in sync.\n var scrollTick;\n track.addEventListener('scroll', function () {\n clearTimeout(scrollTick);\n scrollTick = setTimeout(function () {\n var w = track.clientWidth;\n if (w === 0) return;\n var i = Math.round(track.scrollLeft / w);\n if (i !== idx) { idx = i; updateDots(); }\n }, 80);\n });\n\n updateDots();\n resetAutoplay();\n }\n\n // ============================================================\n // Lightbox: click a media-gallery image → full-size singleton overlay.\n // ============================================================\n\n var lightbox = { el: null, imgEl: null, capEl: null, prevBtn: null, nextBtn: null, items: [], idx: 0 };\n\n function ensureLightbox() {\n if (lightbox.el) return;\n var el = document.createElement('div');\n el.setAttribute('data-neo-lightbox', '1');\n el.setAttribute('aria-hidden', 'true');\n el.style.cssText = 'position:fixed;inset:0;z-index:999999;background:rgba(0,0,0,0.9);display:none;align-items:center;justify-content:center;padding:40px;';\n el.innerHTML =\n '<button type=\"button\" data-neo-lb-close aria-label=\"Close\" style=\"position:absolute;top:16px;right:16px;background:rgba(0,0,0,0.5);border:0;color:#fff;width:40px;height:40px;border-radius:50%;cursor:pointer;font-size:22px;line-height:1;padding:0;display:flex;align-items:center;justify-content:center;z-index:2;\">' +\n '<svg xmlns=\"http://www.w3.org/2000/svg\" width=\"16\" height=\"16\" viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"#fff\" stroke-width=\"2.5\" stroke-linecap=\"round\" stroke-linejoin=\"round\"><line x1=\"18\" y1=\"6\" x2=\"6\" y2=\"18\"></line><line x1=\"6\" y1=\"6\" x2=\"18\" y2=\"18\"></line></svg>' +\n '</button>' +\n '<button type=\"button\" data-neo-lb-prev aria-label=\"Previous\" style=\"position:absolute;top:50%;left:16px;transform:translateY(-50%);background:rgba(0,0,0,0.5);border:0;color:#fff;width:48px;height:48px;border-radius:50%;cursor:pointer;font-size:20px;display:flex;align-items:center;justify-content:center;z-index:1;\">❮</button>' +\n '<button type=\"button\" data-neo-lb-next aria-label=\"Next\" style=\"position:absolute;top:50%;right:16px;transform:translateY(-50%);background:rgba(0,0,0,0.5);border:0;color:#fff;width:48px;height:48px;border-radius:50%;cursor:pointer;font-size:20px;display:flex;align-items:center;justify-content:center;z-index:1;\">❯</button>' +\n '<div data-neo-lb-stage style=\"max-width:90vw;max-height:90vh;display:flex;flex-direction:column;align-items:center;gap:12px;\">' +\n '<img data-neo-lb-img alt=\"\" style=\"max-width:100%;max-height:80vh;object-fit:contain;display:block;\">' +\n '<div data-neo-lb-cap style=\"color:#fff;text-align:center;font-size:14px;display:none;\"></div>' +\n '</div>';\n document.body.appendChild(el);\n\n lightbox.el = el;\n lightbox.imgEl = el.querySelector('[data-neo-lb-img]');\n lightbox.capEl = el.querySelector('[data-neo-lb-cap]');\n lightbox.prevBtn = el.querySelector('[data-neo-lb-prev]');\n lightbox.nextBtn = el.querySelector('[data-neo-lb-next]');\n\n el.querySelector('[data-neo-lb-close]').addEventListener('click', closeLightbox);\n lightbox.prevBtn.addEventListener('click', function () { stepLightbox(-1); });\n lightbox.nextBtn.addEventListener('click', function () { stepLightbox(1); });\n el.addEventListener('click', function (e) { if (e.target === el) closeLightbox(); });\n document.addEventListener('keydown', function (e) {\n if (!lightbox.el || lightbox.el.style.display !== 'flex') return;\n if (e.key === 'Escape') closeLightbox();\n else if (e.key === 'ArrowLeft') stepLightbox(-1);\n else if (e.key === 'ArrowRight') stepLightbox(1);\n });\n }\n\n function showLightboxItem() {\n var item = lightbox.items[lightbox.idx];\n if (!item) return;\n lightbox.imgEl.src = item.src;\n lightbox.imgEl.alt = item.alt || '';\n if (item.caption) {\n lightbox.capEl.textContent = item.caption;\n lightbox.capEl.style.display = 'block';\n } else {\n lightbox.capEl.textContent = '';\n lightbox.capEl.style.display = 'none';\n }\n var many = lightbox.items.length > 1;\n lightbox.prevBtn.style.display = many ? 'flex' : 'none';\n lightbox.nextBtn.style.display = many ? 'flex' : 'none';\n }\n\n function openLightbox(items, idx) {\n if (!items || items.length === 0) return;\n ensureLightbox();\n lightbox.items = items;\n lightbox.idx = Math.max(0, Math.min(items.length - 1, idx || 0));\n showLightboxItem();\n lightbox.el.style.display = 'flex';\n lightbox.el.setAttribute('aria-hidden', 'false');\n document.body.style.overflow = 'hidden';\n }\n\n function closeLightbox() {\n if (!lightbox.el) return;\n lightbox.el.style.display = 'none';\n lightbox.el.setAttribute('aria-hidden', 'true');\n document.body.style.overflow = '';\n lightbox.items = [];\n lightbox.idx = 0;\n }\n\n function stepLightbox(dir) {\n if (lightbox.items.length === 0) return;\n var n = lightbox.items.length;\n lightbox.idx = (lightbox.idx + dir + n) % n;\n showLightboxItem();\n }\n\n function hydrateMediaGalleryLightbox(root) {\n if (root.__neoLbWired) return;\n root.__neoLbWired = true;\n\n var imgs = root.querySelectorAll('.neo-media-gallery__item img');\n for (var i = 0; i < imgs.length; i++) imgs[i].style.cursor = 'zoom-in';\n\n root.addEventListener('click', function (e) {\n var img = e.target && e.target.tagName === 'IMG' ? e.target : null;\n if (!img || !img.closest('.neo-media-gallery__item')) return;\n var all = root.querySelectorAll('.neo-media-gallery__item img');\n var items = [];\n var startIdx = 0;\n for (var k = 0; k < all.length; k++) {\n var fig = all[k].closest('.neo-media-gallery__item');\n var capNode = fig ? fig.querySelector('.neo-media-gallery__caption') : null;\n items.push({\n src: all[k].getAttribute('src') || all[k].src,\n alt: all[k].getAttribute('alt') || '',\n caption: capNode ? capNode.textContent.trim() : ''\n });\n if (all[k] === img) startIdx = k;\n }\n openLightbox(items, startIdx);\n });\n }\n\n function hydrateMediaGalleryCarousel(root) {\n if (root.__neoWired) return;\n root.__neoWired = true;\n var track = root.querySelector('.neo-media-gallery__carousel-track');\n if (!track) return;\n var prev = root.querySelector('.neo-media-gallery__nav--prev');\n var next = root.querySelector('.neo-media-gallery__nav--next');\n var scrubber = root.querySelector('.neo-media-gallery__scrubber');\n var thumb = root.querySelector('.neo-media-gallery__scrubber-thumb');\n\n function snapToItem(dir) {\n var firstItem = track.querySelector('.neo-media-gallery__item');\n var step = firstItem ? firstItem.offsetWidth + 8 : track.clientWidth;\n if (step <= 0) return;\n var current = track.scrollLeft / step;\n var nearest = Math.round(current);\n // If we're already sitting on (or sub-pixel near) an item slot, step away from it.\n // Otherwise floor/ceil to the next slot in the requested direction.\n var targetIdx = (Math.abs(current - nearest) < 0.1)\n ? nearest + dir\n : (dir > 0 ? Math.ceil(current) : Math.floor(current));\n if (targetIdx < 0) targetIdx = 0;\n track.scrollTo({ left: targetIdx * step, behavior: 'smooth' });\n }\n if (prev) prev.addEventListener('click', function () { snapToItem(-1); });\n if (next) next.addEventListener('click', function () { snapToItem(1); });\n\n if (!scrubber || !thumb) return;\n\n function updateThumb() {\n var sw = track.scrollWidth;\n var cw = track.clientWidth;\n if (sw <= cw) { thumb.style.width = '100%'; thumb.style.left = '0'; return; }\n var widthPct = (cw / sw) * 100;\n var leftPct = (track.scrollLeft / (sw - cw)) * (100 - widthPct);\n thumb.style.width = widthPct + '%';\n thumb.style.left = leftPct + '%';\n }\n\n var ticking = false;\n track.addEventListener('scroll', function () {\n if (ticking) return;\n ticking = true;\n requestAnimationFrame(function () { updateThumb(); ticking = false; });\n });\n window.addEventListener('resize', updateThumb);\n\n function pointerToScrollLeft(clientX) {\n var rect = scrubber.getBoundingClientRect();\n var ratio = Math.max(0, Math.min(1, (clientX - rect.left) / rect.width));\n var sw = track.scrollWidth;\n var cw = track.clientWidth;\n return ratio * (sw - cw);\n }\n\n var dragging = false;\n scrubber.addEventListener('pointerdown', function (e) {\n dragging = true;\n scrubber.setPointerCapture(e.pointerId);\n track.scrollLeft = pointerToScrollLeft(e.clientX);\n });\n scrubber.addEventListener('pointermove', function (e) {\n if (!dragging) return;\n track.scrollLeft = pointerToScrollLeft(e.clientX);\n });\n scrubber.addEventListener('pointerup', function (e) {\n dragging = false;\n if (scrubber.hasPointerCapture && scrubber.hasPointerCapture(e.pointerId)) {\n scrubber.releasePointerCapture(e.pointerId);\n }\n });\n scrubber.addEventListener('pointercancel', function () { dragging = false; });\n\n // Defer to after layout (initial scrollWidth/clientWidth can both be 0),\n // and re-run when the track resizes (lazy images, viewport changes).\n requestAnimationFrame(updateThumb);\n if (typeof ResizeObserver !== 'undefined') {\n var ro = new ResizeObserver(updateThumb);\n ro.observe(track);\n }\n }\n\n function hydrate(root) {\n injectStyles();\n var scope = root && root.querySelectorAll ? root : document;\n var slideshows = scope.querySelectorAll('[data-neo-slideshow=\"1\"]');\n for (var i = 0; i < slideshows.length; i++) hydrateSlideshow(slideshows[i]);\n var carousels = scope.querySelectorAll('[data-neo-mg-carousel=\"1\"]');\n for (var j = 0; j < carousels.length; j++) hydrateMediaGalleryCarousel(carousels[j]);\n var galleries = scope.querySelectorAll('.content-type-neo-media-gallery');\n for (var k = 0; k < galleries.length; k++) hydrateMediaGalleryLightbox(galleries[k]);\n }\n\n // ============================================================\n // Public API\n // ============================================================\n\n export const NewsNeo = {\n hasContent: hasNeoContent,\n render: render,\n hydrate: hydrate,\n registerType: function (type, fn) {\n if (typeof type === 'string' && typeof fn === 'function') {\n renderers[type] = fn;\n }\n },\n _renderers: renderers\n };\n\n","/* The Neo renderer injects its own component CSS into the document head\n (sections, buttons, sliders, galleries…). This file only anchors the mount. */\n\naico-neo-content {\n display: block;\n}\n\naico-neo-content .aico-neo-content-mount {\n width: 100%;\n}\n","import { Component, Element, Host, Prop, Watch, h } from '@stencil/core';\nimport type { NeoDocument } from '../../model/article/NeoDocument';\nimport { neoDocumentHasContent } from '../../model/article/NeoDocument';\nimport { hasLocaleStructure, resolveLocale } from '../../utils/neo/neo-locale-resolver';\nimport { trimNeoLead } from '../../utils/neo/neo-lead-trim';\nimport { NewsNeo, setActiveLocale } from '../../utils/neo/news-neo-renderer';\n\n/**\n * Renders an AICO Neo content-builder document (`contentBuilderNeoJson`) —\n * the same renderer the kj b2b storefront uses for Neo news articles.\n *\n * Locale overrides carried by the document are resolved client-side before\n * rendering (the aico v1 API ships them unresolved).\n *\n * NOT scoped/shadow on purpose: the renderer emits plain HTML via innerHTML\n * and injects its own component CSS into the document head; style scoping\n * would never reach that markup.\n */\n@Component({\n tag: 'aico-neo-content',\n styleUrl: 'aico-neo-content.css',\n})\nexport class AicoNeoContent {\n @Element() host!: HTMLElement;\n\n /**\n * The Neo content-builder document (`attributes.contentBuilderNeoJson`).\n */\n @Prop() neoDocument!: NeoDocument;\n\n /**\n * The locale to resolve the document's content for, e.g. `de_CH`.\n */\n @Prop() locale: string = 'de';\n\n /**\n * The shop's default locale — the override fallback when the requested\n * language has no entries (mirrors the storefront's fallback rule).\n */\n @Prop() defaultLocale?: string;\n\n /**\n * Drop lead body images — the host page already shows its own hero image\n * above this content (see aico-article-detail).\n */\n @Prop() trimLeadImage: boolean = false;\n\n /**\n * Drop a leading heading whose text equals this — the host page's own\n * title, restated as the article's first heading.\n */\n @Prop() dedupeTitle?: string;\n\n private renderedHtml: string = '';\n\n componentWillLoad() {\n this.prepareHtml();\n }\n\n @Watch('neoDocument')\n @Watch('locale')\n @Watch('defaultLocale')\n @Watch('trimLeadImage')\n @Watch('dedupeTitle')\n prepareHtml() {\n if (!neoDocumentHasContent(this.neoDocument)) {\n this.renderedHtml = '';\n return;\n }\n\n let resolvedDocument = this.neoDocument;\n if (hasLocaleStructure(resolvedDocument)) {\n resolvedDocument = resolveLocale(resolvedDocument, this.locale, this.defaultLocale ?? null);\n }\n\n if (this.trimLeadImage || this.dedupeTitle) {\n resolvedDocument = trimNeoLead(resolvedDocument, { trimLeadImage: this.trimLeadImage, dedupeTitle: this.dedupeTitle ?? null });\n if (resolvedDocument.sections.length === 0) {\n this.renderedHtml = '';\n return;\n }\n }\n\n setActiveLocale(this.locale);\n this.renderedHtml = NewsNeo.render({ contentBuilderNeoJson: resolvedDocument });\n }\n\n componentDidRender() {\n // Wire sliders / lightboxes inside the freshly painted markup.\n const mount = this.host.querySelector('.aico-neo-content-mount');\n if (mount && this.renderedHtml !== '') {\n NewsNeo.hydrate(mount);\n }\n }\n\n render() {\n return (\n <Host>\n <div class=\"aico-neo-content-mount\" innerHTML={this.renderedHtml}></div>\n </Host>\n );\n }\n}\n"],"version":3}
|