UNPKG

@braze/web-sdk

Version:

Braze SDK for web sites and other JS platforms.

58 lines (57 loc) 1.95 kB
import { attachHtmlToIframeWithNonce as b, buildBrazeBridge as N, } from "../../util/html-display-utils.js"; import E from "../../../shared-lib/logger.js"; import { logBannerClick } from "../log-banner-click.js"; import { logBannerDismissal as _ } from "../log-banner-dismissal.js"; import { destroyBannerHtml as A } from "./destroy-banner-html.js"; export const BANNER_PLACEMENT_ID = "data-ab-banner-placement-id"; export const BANNER_HTML_CLASS = "ab-html-banner"; export const CONTROL_BANNER_HTML_CLASS = "ab-html-control-banner"; export function controlBannerToHtml(n) { const t = document.createElement("div"); return ( (t.id = n.id), (t.className = "ab-html-control-banner"), t.setAttribute(BANNER_PLACEMENT_ID, n.placementId), t ); } export function bannerToHtml(n, t) { if (n.ts()) return controlBannerToHtml(n); const o = document.createElement("iframe"); return ( (o.id = n.id), t && o.setAttribute("nonce", t), (o.className = "ab-html-banner"), o.setAttribute(BANNER_PLACEMENT_ID, n.placementId), o.setAttribute("title", "Banner"), b(o, n.html, t), (o.onload = () => { const t = o.contentWindow, e = t.document.getElementsByTagName("title"); e && e.length > 0 && o.setAttribute("title", e[0].textContent || ""); const r = Object.assign(Object.assign({}, N(o)), { logClick: function () { logBannerClick(n, ...arguments); }, closeMessage: function () { !(function (n) { const t = document.getElementById(n.id); t && A(t), _(n); })(n); }, setBannerHeight: (n) => { isNaN(n) || !isFinite(n) || n < 0 ? E.warn(`Invalid banner height: ${n}`) : (o.style.height = `${n}px`); }, }); (t.brazeBridge = r), (t.appboyBridge = r), t.dispatchEvent(new CustomEvent("ab.BridgeReady")); }), o ); }