@braze/web-sdk
Version:
Braze SDK for web sites and other JS platforms.
58 lines (57 loc) • 1.95 kB
JavaScript
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
);
}