/* eslint-disable */ /*! iFrame Resizer (iframeSizer.min.js ) - v4.3.9 - 2023-11-10 * Desc: Force cross domain iframes to size to content. * Requires: iframeResizer.contentWindow.min.js to be loaded into the target frame. * Copyright: (c) 2023 David J. Bradshaw - dave@bradshaw.net * License: MIT */ !(function (d) { var c, u, a, v, x, I, M, r, f, k, i, l, z function m() { return ( window.MutationObserver || window.WebKitMutationObserver || window.MozMutationObserver ) } function F(e, n, i) { e.addEventListener(n, i, !1) } function B(e, n, i) { e.removeEventListener(n, i, !1) } function p(e) { return ( x + "[" + ((n = "Host page: " + (e = e)), (n = window.top !== window.self ? window.parentIFrame && window.parentIFrame.getId ? window.parentIFrame.getId() + ": " + e : "Nested host page: " + e : n)) + "]" ) var n } function t(e) { return k[e] ? k[e].log : u } function O(e, n) { o("log", e, n, t(e)) } function E(e, n) { o("info", e, n, t(e)) } function R(e, n) { o("warn", e, n, !0) } function o(e, n, i, t) { !0 === t && "object" == typeof window.console && console[e](p(n), i) } function w(e) { function i() { t("Height"), t("Width"), P( function () { H(w), C(b), l("onResized", w) }, w, "init", ) } function n() { var e = p.slice(I).split(":"), n = e[1] ? parseInt(e[1], 10) : 0, i = k[e[0]] && k[e[0]].iframe, t = getComputedStyle(i) return { iframe: i, id: e[0], height: n + (function (e) { if ("border-box" !== e.boxSizing) return 0 var n = e.paddingTop ? parseInt(e.paddingTop, 10) : 0, e = e.paddingBottom ? parseInt(e.paddingBottom, 10) : 0 return n + e })(t) + (function (e) { if ("border-box" !== e.boxSizing) return 0 var n = e.borderTopWidth ? parseInt(e.borderTopWidth, 10) : 0, e = e.borderBottomWidth ? parseInt(e.borderBottomWidth, 10) : 0 return n + e })(t), width: e[2], type: e[3], } } function t(e) { var n = Number(k[b]["max" + e]), i = Number(k[b]["min" + e]), e = e.toLowerCase(), t = Number(w[e]) O(b, "Checking " + e + " is in range " + i + "-" + n), t < i && ((t = i), O(b, "Set " + e + " to min value")), n < t && ((t = n), O(b, "Set " + e + " to max value")), (w[e] = "" + t) } function o() { var t = e.origin, o = k[b] && k[b].checkOrigin if ( o && "" + t != "null" && !(function () { if (o.constructor !== Array) return ( (e = k[b] && k[b].remoteHost), O(b, "Checking connection is from: " + e), t === e ) var e, n = 0, i = !1 for ( O(b, "Checking connection is from allowed list of origins: " + o); n < o.length; n++ ) if (o[n] === t) { i = !0 break } return i })() ) throw new Error( "Unexpected message received from: " + t + " for " + w.iframe.id + ". Message was: " + e.data + ". This error can be disabled by setting the checkOrigin: false option or by providing of array of trusted domains.", ) return 1 } function a(e) { return p.slice(p.indexOf(":") + v + e) } function s(i, t) { var e, n, o; (e = function () { var e, n A( "Send Page Info", "pageInfo:" + ((e = document.body.getBoundingClientRect()), (n = w.iframe.getBoundingClientRect()), JSON.stringify({ iframeHeight: n.height, iframeWidth: n.width, clientHeight: Math.max( document.documentElement.clientHeight, window.innerHeight || 0, ), clientWidth: Math.max( document.documentElement.clientWidth, window.innerWidth || 0, ), offsetTop: parseInt(n.top - e.top, 10), offsetLeft: parseInt(n.left - e.left, 10), scrollTop: window.pageYOffset, scrollLeft: window.pageXOffset, documentHeight: document.documentElement.clientHeight, documentWidth: document.documentElement.clientWidth, windowHeight: window.innerHeight, windowWidth: window.innerWidth, })), i, t, ) }), (n = 32), z[(o = t)] || (z[o] = setTimeout(function () { (z[o] = null), e() }, n)) } function r(e) { e = e.getBoundingClientRect() return ( W(b), { x: Math.floor(Number(e.left) + Number(M.x)), y: Math.floor(Number(e.top) + Number(M.y)), } ) } function d(e) { var n = e ? r(w.iframe) : { x: 0, y: 0 }, i = { x: Number(w.width) + n.x, y: Number(w.height) + n.y } O( b, "Reposition requested from iFrame (offset x:" + n.x + " y:" + n.y + ")", ), window.top === window.self ? ((M = i), c(), O(b, "--")) : window.parentIFrame ? window.parentIFrame["scrollTo" + (e ? "Offset" : "")](i.x, i.y) : R( b, "Unable to scroll to requested position, window.parentIFrame not found", ) } function c() { !1 === l("onScroll", M) ? S() : C(b) } function u(e) { var e = e.split("#")[1] || "", n = decodeURIComponent(e), n = document.getElementById(n) || document.getElementsByName(n)[0] n ? ((n = r(n)), O( b, "Moving to in page link (#" + e + ") at x: " + n.x + " y: " + n.y, ), (M = { x: n.x, y: n.y }), c(), O(b, "--")) : window.top === window.self ? O(b, "In page link #" + e + " not found") : window.parentIFrame ? window.parentIFrame.moveToAnchor(e) : O( b, "In page link #" + e + " not found and window.parentIFrame not found", ) } function f(e) { var n, i = {}; (i = 0 === Number(w.width) && 0 === Number(w.height) ? { x: (n = a(9).split(":"))[1], y: n[0] } : { x: w.width, y: w.height }), l(e, { iframe: w.iframe, screenX: Number(i.x), screenY: Number(i.y), type: w.type, }) } function l(e, n) { return T(b, e, n) } function m() { switch ((k[b] && k[b].firstRun && k[b] && (k[b].firstRun = !1), w.type)) { case "close": N(w.iframe) break case "message": (n = a(6)), O( b, "onMessage passed: {iframe: " + w.iframe.id + ", message: " + n + "}", ), l("onMessage", { iframe: w.iframe, message: JSON.parse(n) }), O(b, "--") break case "mouseenter": f("onMouseEnter") break case "mouseleave": f("onMouseLeave") break case "autoResize": k[b].autoResize = JSON.parse(a(9)) break case "scrollTo": d(!1) break case "scrollToOffset": d(!0) break case "pageInfo": s(k[b] && k[b].iframe, b), (r = b), e("Add ", F), k[r] && (k[r].stopPageInfo = o) break case "pageInfoStop": k[b] && k[b].stopPageInfo && (k[b].stopPageInfo(), delete k[b].stopPageInfo) break case "inPageLink": u(a(9)) break case "reset": j(w) break case "init": i(), l("onInit", w.iframe) break default: 0 === Number(w.width) && 0 === Number(w.height) ? R( "Unsupported message received (" + w.type + "), this is likely due to the iframe containing a later version of iframe-resizer than the parent page", ) : i() } function e(n, i) { function t() { k[r] ? s(k[r].iframe, r) : o() } ["scroll", "resize"].forEach(function (e) { O(r, n + e + " listener for sendPageInfo"), i(window, e, t) }) } function o() { e("Remove ", B) } var r, n } var g, h, p = e.data, w = {}, b = null if ("[iFrameResizerChild]Ready" === p) for (var y in k) A("iFrame requested init", L(y), k[y].iframe, y) else x === ("" + p).slice(0, I) && p.slice(I).split(":")[0] in k ? ((w = n()), (b = w.id), k[b] && (k[b].loaded = !0), (h = w.type in { true: 1, false: 1, undefined: 1 }) && O(b, "Ignoring init message from meta parent page"), !h && ((h = !0), k[(g = b)] || ((h = !1), R(w.type + " No settings for " + g + ". Message was: " + p)), h) && (O(b, "Received: " + p), (g = !0), null === w.iframe && (R(b, "IFrame (" + w.id + ") not found"), (g = !1)), g && o() && m())) : E(b, "Ignored: " + p) } function T(e, n, i) { var t = null, o = null if (k[e]) { if ("function" != typeof (t = k[e][n])) throw new TypeError(n + " on iFrame[" + e + "] is not a function") o = t(i) } return o } function g(e) { e = e.id delete k[e] } function N(e) { var n = e.id if (!1 === T(n, "onClose", n)) O(n, "Close iframe cancelled by onClose event") else { O(n, "Removing iFrame: " + n) try { e.parentNode && e.parentNode.removeChild(e) } catch (e) { R(e) } T(n, "onClosed", n), O(n, "--"), g(e) } } function W(e) { null === M && O( e, "Get page position: " + (M = { x: window.pageXOffset === d ? document.documentElement.scrollLeft : window.pageXOffset, y: window.pageYOffset === d ? document.documentElement.scrollTop : window.pageYOffset, }).x + "," + M.y, ) } function C(e) { null !== M && (window.scrollTo(M.x, M.y), O(e, "Set page position: " + M.x + "," + M.y), S()) } function S() { M = null } function j(e) { O( e.id, "Size reset requested by " + ("init" === e.type ? "host page" : "iFrame"), ), W(e.id), P( function () { H(e), A("reset", "reset", e.iframe, e.id) }, e, "reset", ) } function H(o) { function i(e) { var n function i() { Object.keys(k).forEach(function (e) { function n(e) { return "0px" === (k[i] && k[i].iframe.style[e]) } var i k[(i = e)] && null !== k[i].iframe.offsetParent && (n("height") || n("width")) && A("Visibility change", "resize", k[i].iframe, i) }) } function t(e) { O("window", "Mutation observed: " + e[0].target + " " + e[0].type), h(i, 16) } !a && "0" === o[e] && ((a = !0), O(r, "Hidden iFrame detected, creating visibility listener"), (e = m())) && ((n = document.querySelector("body")), new e(t).observe(n, { attributes: !0, attributeOldValue: !1, characterData: !0, characterDataOldValue: !1, childList: !0, subtree: !0, })) } function e(e) { var n; (n = e), o.id ? ((o.iframe.style[n] = o[n] + "px"), O(o.id, "IFrame (" + r + ") " + n + " set to " + o[n] + "px")) : O("undefined", "messageData id not set"), i(e) } var r = o.iframe.id k[r] && (k[r].sizeHeight && e("height"), k[r].sizeWidth) && e("width") } function P(e, n, i) { i !== n.type && r && !window.jasmine ? (O(n.id, "Requesting animation frame"), r(e)) : e() } function A(n, i, t, o, e) { function r() { var e t && "contentWindow" in t && null !== t.contentWindow ? ((e = k[o] && k[o].targetOrigin), O( o, "[" + n + "] Sending msg to iframe[" + o + "] (" + i + ") targetOrigin: " + e, ), t.contentWindow.postMessage(x + i, e)) : R(o, "[" + n + "] IFrame(" + o + ") not found") } function a() { e && k[o] && k[o].warningTimeout && (k[o].msgTimeout = setTimeout(function () { !k[o] || k[o].loaded || s || ((s = !0), R( o, "IFrame has not responded within " + k[o].warningTimeout / 1e3 + " seconds. Check iFrameResizer.contentWindow.js has been loaded in iFrame. This message can be ignored if everything is working, or you can set the warningTimeout option to a higher value or zero to suppress this warning.", )) }, k[o].warningTimeout)) } var s = !1; (o = o || t.id), k[o] && (r(), a()) } function L(e) { return ( e + ":" + k[e].bodyMarginV1 + ":" + k[e].sizeWidth + ":" + k[e].log + ":" + k[e].interval + ":" + k[e].enablePublicMethods + ":" + k[e].autoResize + ":" + k[e].bodyMargin + ":" + k[e].heightCalculationMethod + ":" + k[e].bodyBackground + ":" + k[e].bodyPadding + ":" + k[e].tolerance + ":" + k[e].inPageLinks + ":" + k[e].resizeFrom + ":" + k[e].widthCalculationMethod + ":" + k[e].mouseEvents ) } function s(t, i) { function e(i) { var e = m() e && ((e = e), t.parentNode) && new e(function (e) { e.forEach(function (e) { Array.prototype.slice.call(e.removedNodes).forEach(function (e) { e === t && N(t) }) }) }).observe(t.parentNode, { childList: !0 }), F(t, "load", function () { var e, n A("iFrame.onload", i, t, d, !0), (e = k[r] && k[r].firstRun), (n = k[r] && k[r].heightCalculationMethod in f), !e && n && j({ iframe: t, height: 0, width: 0, type: "init" }) }), A("init", i, t, d, !0) } function o(e) { var n = e.split("Callback") 2 === n.length && ((this[(n = "on" + n[0].charAt(0).toUpperCase() + n[0].slice(1))] = this[e]), delete this[e], R( r, "Deprecated: '" + e + "' has been renamed '" + n + "'. The old method will be removed in the next major version.", )) } function n(e) { if ( ((e = e || {}), (k[r] = Object.create(null)), (k[r].iframe = t), (k[r].firstRun = !0), (k[r].remoteHost = t.src && t.src.split("/").slice(0, 3).join("/")), "object" != typeof e) ) throw new TypeError("Options is not an object") Object.keys(e).forEach(o, e) var n, i = e for (n in l) Object.prototype.hasOwnProperty.call(l, n) && (k[r][n] = (Object.prototype.hasOwnProperty.call(i, n) ? i : l)[n]) k[r] && (k[r].targetOrigin = !0 !== k[r].checkOrigin || "" === (e = k[r].remoteHost) || null !== e.match(/^(about:blank|javascript:|file:\/\/)/) ? "*" : e) } var r = (function (e) { if ("string" != typeof e) throw new TypeError("Invaild id for iFrame. Expected String") var n return ( "" === e && ((t.id = ((n = (i && i.id) || l.id + c++), null !== document.getElementById(n) && (n += c++), (e = n))), (u = (i || {}).log), O(e, "Added missing iframe ID: " + e + " (" + t.src + ")")), e ) })(t.id) if (r in k && "iFrameResizer" in t) R(r, "Ignored iFrame, already setup.") else { switch ( (n(i), O( r, "IFrame scrolling " + (k[r] && k[r].scrolling ? "enabled" : "disabled") + " for " + r, ), (t.style.overflow = !1 === (k[r] && k[r].scrolling) ? "hidden" : "auto"), k[r] && k[r].scrolling) ) { case "omit": break case !0: t.scrolling = "yes" break case !1: t.scrolling = "no" break default: t.scrolling = k[r] ? k[r].scrolling : "no" } s("Height"), s("Width"), a("maxHeight"), a("minHeight"), a("maxWidth"), a("minWidth"), ("number" != typeof (k[r] && k[r].bodyMargin) && "0" !== (k[r] && k[r].bodyMargin)) || ((k[r].bodyMarginV1 = k[r].bodyMargin), (k[r].bodyMargin = k[r].bodyMargin + "px")), e(L(r)), k[r] && (k[r].iframe.iFrameResizer = { close: N.bind(null, k[r].iframe), removeListeners: g.bind(null, k[r].iframe), resize: A.bind(null, "Window resize", "resize", k[r].iframe), moveToAnchor: function (e) { A("Move to anchor", "moveToAnchor:" + e, k[r].iframe, r) }, sendMessage: function (e) { A( "Send Message", "message:" + (e = JSON.stringify(e)), k[r].iframe, r, ) }, }) } function a(e) { var n = k[r][e] 1 / 0 !== n && 0 !== n && ((t.style[e] = "number" == typeof n ? n + "px" : n), O(r, "Set " + e + " = " + t.style[e])) } function s(e) { if (k[r]["min" + e] > k[r]["max" + e]) throw new Error( "Value for min" + e + " can not be greater than max" + e, ) } } function h(e, n) { null === i && (i = setTimeout(function () { (i = null), e() }, n)) } function e() { "hidden" !== document.visibilityState && (O("document", "Trigger event: Visibility change"), h(function () { b("Tab Visible", "resize") }, 16)) } function b(i, t) { Object.keys(k).forEach(function (e) { var n k[(n = e)] && "parent" === k[n].resizeFrom && k[n].autoResize && !k[n].firstRun && A(i, t, k[e].iframe, e) }) } function y() { F(window, "message", w), F(window, "resize", function () { var e O("window", "Trigger event: " + (e = "resize")), h(function () { b("Window " + e, "resize") }, 16) }), F(document, "visibilitychange", e), F(document, "-webkit-visibilitychange", e) } function n() { function t(e, n) { if (n) { if (!n.tagName) throw new TypeError("Object is not a valid DOM element") if ("IFRAME" !== n.tagName.toUpperCase()) throw new TypeError( "Expected