opnform-host-nginx/client/public/widgets/iframeResize.min.js

857 lines
23 KiB
JavaScript

/* 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 <IFRAME> tag, found <" + n.tagName + ">",
)
s(n, e), o.push(n)
}
}
for (
var o, e = ["moz", "webkit", "o", "ms"], n = 0;
n < e.length && !r;
n += 1
)
r = window[e[n] + "RequestAnimationFrame"]
return (
r
? (r = r.bind(window))
: O("setup", "RequestAnimationFrame not supported"),
y(),
function (e, n) {
var i
switch (
((o = []),
(i = e) &&
i.enablePublicMethods &&
R(
"enablePublicMethods option has been removed, public methods are now always available in the iFrame",
),
typeof n)
) {
case "undefined":
case "string":
Array.prototype.forEach.call(
document.querySelectorAll(n || "iframe"),
t.bind(d, e),
)
break
case "object":
t(e, n)
break
default:
throw new TypeError("Unexpected data type (" + typeof n + ")")
}
return o
}
)
}
function q(e) {
e.fn
? e.fn.iFrameResize ||
(e.fn.iFrameResize = function (i) {
return this.filter("iframe")
.each(function (e, n) {
s(n, i)
})
.end()
})
: E("", "Unable to bind to jQuery, it is not fully loaded.")
}
"undefined" != typeof window &&
((c = 0),
(a = u = !1),
(v = "message".length),
(I = (x = "[iFrameSizer]").length),
(M = null),
(r = window.requestAnimationFrame),
(f = Object.freeze({
max: 1,
scroll: 1,
bodyScroll: 1,
documentElementScroll: 1,
})),
(k = {}),
(i = null),
(l = Object.freeze({
autoResize: !0,
bodyBackground: null,
bodyMargin: null,
bodyMarginV1: 8,
bodyPadding: null,
checkOrigin: !0,
inPageLinks: !1,
enablePublicMethods: !0,
heightCalculationMethod: "bodyOffset",
id: "iFrameResizer",
interval: 32,
log: !1,
maxHeight: 1 / 0,
maxWidth: 1 / 0,
minHeight: 0,
minWidth: 0,
mouseEvents: !0,
resizeFrom: "parent",
scrolling: !1,
sizeHeight: !0,
sizeWidth: !1,
warningTimeout: 5e3,
tolerance: 0,
widthCalculationMethod: "scroll",
onClose: function () {
return !0
},
onClosed: function () {},
onInit: function () {},
onMessage: function () {
R("onMessage function not defined")
},
onMouseEnter: function () {},
onMouseLeave: function () {},
onResized: function () {},
onScroll: function () {
return !0
},
})),
(z = {}),
window.jQuery !== d && q(window.jQuery),
"function" == typeof define && define.amd
? define([], n)
: "object" == typeof module &&
"object" == typeof module.exports &&
(module.exports = n()),
(window.iFrameResize = window.iFrameResize || n()))
})()
//# sourceMappingURL=iframeResizer.map