UNPKG

@braze/web-sdk

Version:

Braze SDK for web sites and other JS platforms.

75 lines (74 loc) 2.8 kB
import ro from "../../util/browser-detector.js"; import { InAppMessage, logInAppMessageHtmlClick } from "../index.js"; import { OperatingSystems as so } from "../../util/device-constants.js"; import { buildHtmlClickHandler as lt } from "./html-message-display-utils.js"; import { attachHtmlToIframeWithNonce as b } from "../../util/html-display-utils.js"; import { buildBrazeBridge as N } from "../../util/html-display-utils.js"; export default function ct(t, e, o, s, n) { const i = document.createElement("iframe"); i.setAttribute("title", "Modal Message"), s && (i.style.zIndex = (s + 1).toString()); if ( (b(i, t.message, n), (i.onload = () => { const s = i.contentWindow; s.focus(); const l = s.document.getElementsByTagName("head")[0]; if (null != l) { if (t.Oe()) { const e = document.createElement("style"); (e.innerHTML = t.css || ""), (e.id = t.Ge() || ""), null != n && e.setAttribute("nonce", n), l.appendChild(e); } const e = s.document.createElement("base"); null != e && (e.setAttribute("target", "_parent"), l.appendChild(e)); } const a = s.document.getElementsByTagName("title"); a && a.length > 0 && i.setAttribute("title", a[0].textContent || ""); const r = Object.assign( Object.assign( {}, N(i, (e, o) => t.ll(e, o)), ), { closeMessage: function () { t.ll(i); }, logClick: function () { logInAppMessageHtmlClick(t, ...arguments); }, }, ); if ( ((s.appboyBridge = r), (s.brazeBridge = r), t.He !== InAppMessage.Ke.Je) ) { const e = s.document.getElementsByTagName("a"); for (let s = 0; s < e.length; s++) e[s].onclick = lt(t, i, e[s], o); const n = s.document.getElementsByTagName("button"); for (let e = 0; e < n.length; e++) n[e].onclick = lt(t, i, n[e], o); } const c = s.document.body; if (null != c) { t.Le() && (c.id = t.htmlId || ""); const e = document.createElement("hidden"); (e.onclick = r.closeMessage), (e.className = "ab-programmatic-close-button"), c.appendChild(e); } s.dispatchEvent(new CustomEvent("ab.BridgeReady")), -1 !== i.className.indexOf("ab-start-hidden") && ((i.className = i.className.replace("ab-start-hidden", "")), e(i)); }), (i.className = "ab-in-app-message ab-start-hidden ab-html-message ab-modal-interactions"), ro.OS === so.co) ) { const e = document.createElement("div"); return ( (e.className = "ab-ios-scroll-wrapper"), e.appendChild(i), (t.Pe = e), e ); } return (t.Pe = i), i; }