499 lines
19 KiB
JavaScript
499 lines
19 KiB
JavaScript
!function (e) {
|
|
var n, i, t, o, r, a, s, l, f, c, d, u, m, g
|
|
|
|
function h() {
|
|
return window.MutationObserver || window.WebKitMutationObserver || window.MozMutationObserver
|
|
}
|
|
|
|
function p(e, n, i) {
|
|
e.addEventListener(n, i, !1)
|
|
}
|
|
|
|
function b(e, n, i) {
|
|
e.removeEventListener(n, i, !1)
|
|
}
|
|
|
|
function y(e) {
|
|
return c[e] ? c[e].log : i
|
|
}
|
|
|
|
function v(e, n) {
|
|
_("log", e, n, y(e))
|
|
}
|
|
|
|
function $(e, n) {
|
|
_("info", e, n, y(e))
|
|
}
|
|
|
|
function w(e, n) {
|
|
_("warn", e, n, !0)
|
|
}
|
|
|
|
function _(e, n, i, t) {
|
|
var o, a
|
|
!0 === t && "object" == typeof window.console && console[e](r + "[" + (a = "Host page: " + (o = n), a = window.top !== window.self ? window.parentIFrame && window.parentIFrame.getId ? window.parentIFrame.getId() + ": " + o : "Nested host page: " + o : a) + "]", i)
|
|
}
|
|
|
|
function x(e) {
|
|
function n() {
|
|
i("Height"), i("Width"), O(function () {
|
|
E(j), I(L), h("onResized", j)
|
|
}, j, "init")
|
|
}
|
|
|
|
function i(e) {
|
|
var n = Number(c[L]["max" + e]), i = Number(c[L]["min" + e]), e = e.toLowerCase(), t = Number(j[e])
|
|
v(L, "Checking " + e + " is in range " + i + "-" + n), t < i && (t = i, v(L, "Set " + e + " to min value")), n < t && (t = n, v(L, "Set " + e + " to max value")), j[e] = "" + t
|
|
}
|
|
|
|
function t(e) {
|
|
return P.slice(P.indexOf(":") + o + e)
|
|
}
|
|
|
|
function l(e, n) {
|
|
var i, t, o
|
|
i = function () {
|
|
var i, t
|
|
T("Send Page Info", "pageInfo:" + (i = document.body.getBoundingClientRect(), JSON.stringify({
|
|
iframeHeight: (t = j.iframe.getBoundingClientRect()).height,
|
|
iframeWidth: t.width,
|
|
clientHeight: Math.max(document.documentElement.clientHeight, window.innerHeight || 0),
|
|
clientWidth: Math.max(document.documentElement.clientWidth, window.innerWidth || 0),
|
|
offsetTop: parseInt(t.top - i.top, 10),
|
|
offsetLeft: parseInt(t.left - i.left, 10),
|
|
scrollTop: window.pageYOffset,
|
|
scrollLeft: window.pageXOffset,
|
|
documentHeight: document.documentElement.clientHeight,
|
|
documentWidth: document.documentElement.clientWidth,
|
|
windowHeight: window.innerHeight,
|
|
windowWidth: window.innerWidth
|
|
})), e, n)
|
|
}, t = 32, m[o = n] || (m[o] = setTimeout(function () {
|
|
m[o] = null, i()
|
|
}, t))
|
|
}
|
|
|
|
function f(e) {
|
|
return e = e.getBoundingClientRect(), M(L), {
|
|
x: Math.floor(Number(e.left) + Number(s.x)),
|
|
y: Math.floor(Number(e.top) + Number(s.y))
|
|
}
|
|
}
|
|
|
|
function d(e) {
|
|
var n = e ? f(j.iframe) : {x: 0, y: 0}, i = {x: Number(j.width) + n.x, y: Number(j.height) + n.y}
|
|
v(L, "Reposition requested from iFrame (offset x:" + n.x + " y:" + n.y + ")"), window.top === window.self ? (s = i, u(), v(L, "--")) : window.parentIFrame ? window.parentIFrame["scrollTo" + (e ? "Offset" : "")](i.x, i.y) : w(L, "Unable to scroll to requested position, window.parentIFrame not found")
|
|
}
|
|
|
|
function u() {
|
|
!1 === h("onScroll", s) ? R() : I(L)
|
|
}
|
|
|
|
function g(e) {
|
|
var n, i = {}
|
|
i = 0 === Number(j.width) && 0 === Number(j.height) ? {x: (n = t(9).split(":"))[1], y: n[0]} : {
|
|
x: j.width,
|
|
y: j.height
|
|
}, h(e, {iframe: j.iframe, screenX: Number(i.x), screenY: Number(i.y), type: j.type})
|
|
}
|
|
|
|
function h(e, n) {
|
|
return k(L, e, n)
|
|
}
|
|
|
|
var y, _, x, z, H, S, P = e.data, j = {}, L = null
|
|
if ("[iFrameResizerChild]Ready" === P) for (var A in c) T("iFrame requested init", C(A), c[A].iframe, A); else r === ("" + P).slice(0, a) && P.slice(a).split(":")[0] in c ? (c[L = (j = (_ = (y = P.slice(a).split(":"))[1] ? parseInt(y[1], 10) : 0, z = getComputedStyle(x = c[y[0]] && c[y[0]].iframe), {
|
|
iframe: x,
|
|
id: y[0],
|
|
height: _ + 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
|
|
}(z) + 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
|
|
}(z),
|
|
width: y[2],
|
|
type: y[3]
|
|
})).id] && (c[L].loaded = !0), (S = j.type in {
|
|
true: 1,
|
|
false: 1,
|
|
undefined: 1
|
|
}) && v(L, "Ignoring init message from meta parent page"), !S && (S = !0, c[H = L] || (S = !1, w(j.type + " No settings for " + H + ". Message was: " + P)), S) && (v(L, "Received: " + P), H = !0, null === j.iframe && (w(L, "IFrame (" + j.id + ") not found"), H = !1), H && function n() {
|
|
var i = e.origin, t = c[L] && c[L].checkOrigin
|
|
if (t && "" + i != "null" && !function () {
|
|
if (t.constructor !== Array) return e = c[L] && c[L].remoteHost, v(L, "Checking connection is from: " + e), i === e
|
|
var e, n = 0, o = !1
|
|
for (v(L, "Checking connection is from allowed list of origins: " + t); n < t.length; n++) if (t[n] === i) {
|
|
o = !0
|
|
break
|
|
}
|
|
return o
|
|
}()) throw Error("Unexpected message received from: " + i + " for " + j.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 e() {
|
|
var i, o, r, a, m
|
|
switch (c[L] && c[L].firstRun && c[L] && (c[L].firstRun = !1), j.type) {
|
|
case"close":
|
|
F(j.iframe)
|
|
break
|
|
case"message":
|
|
o = t(6), v(L, "onMessage passed: {iframe: " + j.iframe.id + ", message: " + o + "}"), h("onMessage", {
|
|
iframe: j.iframe,
|
|
message: JSON.parse(o)
|
|
}), v(L, "--")
|
|
break
|
|
case"mouseenter":
|
|
g("onMouseEnter")
|
|
break
|
|
case"mouseleave":
|
|
g("onMouseLeave")
|
|
break
|
|
case"autoResize":
|
|
c[L].autoResize = JSON.parse(t(9))
|
|
break
|
|
case"scrollTo":
|
|
d(!1)
|
|
break
|
|
case"scrollToOffset":
|
|
d(!0)
|
|
break
|
|
case"pageInfo":
|
|
l(c[L] && c[L].iframe, L), i = L, y("Add ", p), c[i] && (c[i].stopPageInfo = $)
|
|
break
|
|
case"pageInfoStop":
|
|
c[L] && c[L].stopPageInfo && (c[L].stopPageInfo(), delete c[L].stopPageInfo)
|
|
break
|
|
case"inPageLink":
|
|
t(9), m = decodeURIComponent(a = a.split("#")[1] || ""), (m = document.getElementById(m) || document.getElementsByName(m)[0]) ? (m = f(m), v(L, "Moving to in page link (#" + a + ") at x: " + m.x + " y: " + m.y), s = {
|
|
x: m.x,
|
|
y: m.y
|
|
}, u(), v(L, "--")) : window.top === window.self ? v(L, "In page link #" + a + " not found") : window.parentIFrame ? window.parentIFrame.moveToAnchor(a) : v(L, "In page link #" + a + " not found and window.parentIFrame not found")
|
|
break
|
|
case"reset":
|
|
W(j)
|
|
break
|
|
case"init":
|
|
n(), h("onInit", j.iframe)
|
|
break
|
|
default:
|
|
0 === Number(j.width) && 0 === Number(j.height) ? w("Unsupported message received (" + j.type + "), this is likely due to the iframe containing a later version of iframe-resizer than the parent page") : n()
|
|
}
|
|
|
|
function y(e, n) {
|
|
function t() {
|
|
c[i] ? l(c[i].iframe, i) : $()
|
|
}
|
|
|
|
["scroll", "resize"].forEach(function (o) {
|
|
v(i, e + o + " listener for sendPageInfo"), n(window, o, t)
|
|
})
|
|
}
|
|
|
|
function $() {
|
|
y("Remove ", b)
|
|
}
|
|
}())) : $(L, "Ignored: " + P)
|
|
}
|
|
|
|
function k(e, n, i) {
|
|
var t = null, o = null
|
|
if (c[e]) {
|
|
if ("function" != typeof (t = c[e][n])) throw TypeError(n + " on iFrame[" + e + "] is not a function")
|
|
o = t(i)
|
|
}
|
|
return o
|
|
}
|
|
|
|
function z(e) {
|
|
delete c[e = e.id]
|
|
}
|
|
|
|
function F(e) {
|
|
var n = e.id
|
|
if (!1 === k(n, "onClose", n)) v(n, "Close iframe cancelled by onClose event"); else {
|
|
v(n, "Removing iFrame: " + n)
|
|
try {
|
|
e.parentNode && e.parentNode.removeChild(e)
|
|
} catch (i) {
|
|
w(i)
|
|
}
|
|
k(n, "onClosed", n), v(n, "--"), z(e)
|
|
}
|
|
}
|
|
|
|
function M(n) {
|
|
null === s && v(n, "Get page position: " + (s = {
|
|
x: window.pageXOffset === e ? document.documentElement.scrollLeft : window.pageXOffset,
|
|
y: window.pageYOffset === e ? document.documentElement.scrollTop : window.pageYOffset
|
|
}).x + "," + s.y)
|
|
}
|
|
|
|
function I(e) {
|
|
null !== s && (window.scrollTo(s.x, s.y), v(e, "Set page position: " + s.x + "," + s.y), R())
|
|
}
|
|
|
|
function R() {
|
|
s = null
|
|
}
|
|
|
|
function W(e) {
|
|
v(e.id, "Size reset requested by " + ("init" === e.type ? "host page" : "iFrame")), M(e.id), O(function () {
|
|
E(e), T("reset", "reset", e.iframe, e.id)
|
|
}, e, "reset")
|
|
}
|
|
|
|
function E(e) {
|
|
function n(n) {
|
|
var o
|
|
o = n, e.id ? (e.iframe.style[o] = e[o] + "px", v(e.id, "IFrame (" + i + ") " + o + " set to " + e[o] + "px")) : v("undefined", "messageData id not set"), function n(o) {
|
|
var r
|
|
|
|
function a() {
|
|
Object.keys(c).forEach(function (e) {
|
|
var n
|
|
|
|
function i(e) {
|
|
return "0px" === (c[n] && c[n].iframe.style[e])
|
|
}
|
|
|
|
c[n = e] && null !== c[n].iframe.offsetParent && (i("height") || i("width")) && T("Visibility change", "resize", c[n].iframe, n)
|
|
})
|
|
}
|
|
|
|
!t && "0" === e[o] && (t = !0, v(i, "Hidden iFrame detected, creating visibility listener"), o = h()) && (r = document.querySelector("body"), new o(function e(n) {
|
|
v("window", "Mutation observed: " + n[0].target + " " + n[0].type), S(a, 16)
|
|
}).observe(r, {
|
|
attributes: !0,
|
|
attributeOldValue: !1,
|
|
characterData: !0,
|
|
characterDataOldValue: !1,
|
|
childList: !0,
|
|
subtree: !0
|
|
}))
|
|
}(n)
|
|
}
|
|
|
|
var i = e.iframe.id
|
|
c[i] && (c[i].sizeHeight && n("height"), c[i].sizeWidth) && n("width")
|
|
}
|
|
|
|
function O(e, n, i) {
|
|
i !== n.type && l && !window.jasmine ? (v(n.id, "Requesting animation frame"), l(e)) : e()
|
|
}
|
|
|
|
function T(e, n, i, t, o) {
|
|
var a, s = !1
|
|
c[t = t || i.id] && (i && "contentWindow" in i && null !== i.contentWindow ? (a = c[t] && c[t].targetOrigin, v(t, "[" + e + "] Sending msg to iframe[" + t + "] (" + n + ") targetOrigin: " + a), i.contentWindow.postMessage(r + n, a)) : w(t, "[" + e + "] IFrame(" + t + ") not found"), o && c[t] && c[t].warningTimeout && (c[t].msgTimeout = setTimeout(function () {
|
|
!c[t] || c[t].loaded || s || (s = !0, w(t, "IFrame has not responded within " + c[t].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."))
|
|
}, c[t].warningTimeout)))
|
|
}
|
|
|
|
function C(e) {
|
|
return e + ":" + c[e].bodyMarginV1 + ":" + c[e].sizeWidth + ":" + c[e].log + ":" + c[e].interval + ":" + c[e].enablePublicMethods + ":" + c[e].autoResize + ":" + c[e].bodyMargin + ":" + c[e].heightCalculationMethod + ":" + c[e].bodyBackground + ":" + c[e].bodyPadding + ":" + c[e].tolerance + ":" + c[e].inPageLinks + ":" + c[e].resizeFrom + ":" + c[e].widthCalculationMethod + ":" + c[e].mouseEvents
|
|
}
|
|
|
|
function H(t, o) {
|
|
function r(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], w(l, "Deprecated: '" + e + "' has been renamed '" + n + "'. The old method will be removed in the next major version."))
|
|
}
|
|
|
|
var a, s, l = function (e) {
|
|
var r
|
|
if ("string" != typeof e) throw TypeError("Invaild id for iFrame. Expected String")
|
|
return "" === e && (t.id = (r = o && o.id || u.id + n++, null !== document.getElementById(r) && (r += n++), e = r), i = (o || {}).log, v(e, "Added missing iframe ID: " + e + " (" + t.src + ")")), e
|
|
}(t.id)
|
|
if (l in c && "iFrameResizer" in t) w(l, "Ignored iFrame, already setup."); else {
|
|
switch (function e(n) {
|
|
if (n = n || {}, c[l] = Object.create(null), c[l].iframe = t, c[l].firstRun = !0, c[l].remoteHost = t.src && t.src.split("/").slice(0, 3).join("/"), "object" != typeof n) throw TypeError("Options is not an object")
|
|
Object.keys(n).forEach(r, n)
|
|
var i, o = n
|
|
for (i in u) Object.prototype.hasOwnProperty.call(u, i) && (c[l][i] = (Object.prototype.hasOwnProperty.call(o, i) ? o : u)[i])
|
|
c[l] && (c[l].targetOrigin = !0 !== c[l].checkOrigin || "" === (n = c[l].remoteHost) || null !== n.match(/^(about:blank|javascript:|file:\/\/)/) ? "*" : n)
|
|
}(o), v(l, "IFrame scrolling " + (c[l] && c[l].scrolling ? "enabled" : "disabled") + " for " + l), t.style.overflow = !1 === (c[l] && c[l].scrolling) ? "hidden" : "auto", c[l] && c[l].scrolling) {
|
|
case"omit":
|
|
break
|
|
case!0:
|
|
t.scrolling = "yes"
|
|
break
|
|
case!1:
|
|
t.scrolling = "no"
|
|
break
|
|
default:
|
|
t.scrolling = c[l] ? c[l].scrolling : "no"
|
|
}
|
|
m("Height"), m("Width"), d("maxHeight"), d("minHeight"), d("maxWidth"), d("minWidth"), "number" != typeof (c[l] && c[l].bodyMargin) && "0" !== (c[l] && c[l].bodyMargin) || (c[l].bodyMarginV1 = c[l].bodyMargin, c[l].bodyMargin = c[l].bodyMargin + "px"), a = C(l), (s = h()) && t.parentNode && new s(function (e) {
|
|
e.forEach(function (e) {
|
|
Array.prototype.slice.call(e.removedNodes).forEach(function (e) {
|
|
e === t && F(t)
|
|
})
|
|
})
|
|
}).observe(t.parentNode, {childList: !0}), p(t, "load", function () {
|
|
var n, i
|
|
T("iFrame.onload", a, t, e, !0), n = c[l] && c[l].firstRun, i = c[l] && c[l].heightCalculationMethod in f, !n && i && W({
|
|
iframe: t,
|
|
height: 0,
|
|
width: 0,
|
|
type: "init"
|
|
})
|
|
}), T("init", a, t, e, !0), c[l] && (c[l].iframe.iFrameResizer = {
|
|
close: F.bind(null, c[l].iframe),
|
|
removeListeners: z.bind(null, c[l].iframe),
|
|
resize: T.bind(null, "Window resize", "resize", c[l].iframe),
|
|
moveToAnchor: function (e) {
|
|
T("Move to anchor", "moveToAnchor:" + e, c[l].iframe, l)
|
|
},
|
|
sendMessage: function (e) {
|
|
T("Send Message", "message:" + (e = JSON.stringify(e)), c[l].iframe, l)
|
|
}
|
|
})
|
|
}
|
|
|
|
function d(e) {
|
|
var n = c[l][e]
|
|
1 / 0 !== n && 0 !== n && (t.style[e] = "number" == typeof n ? n + "px" : n, v(l, "Set " + e + " = " + t.style[e]))
|
|
}
|
|
|
|
function m(e) {
|
|
if (c[l]["min" + e] > c[l]["max" + e]) throw Error("Value for min" + e + " can not be greater than max" + e)
|
|
}
|
|
}
|
|
|
|
function S(e, n) {
|
|
null === d && (d = setTimeout(function () {
|
|
d = null, e()
|
|
}, n))
|
|
}
|
|
|
|
function P() {
|
|
"hidden" !== document.visibilityState && (v("document", "Trigger event: Visibility change"), S(function () {
|
|
j("Tab Visible", "resize")
|
|
}, 16))
|
|
}
|
|
|
|
function j(e, n) {
|
|
Object.keys(c).forEach(function (i) {
|
|
var t
|
|
c[t = i] && "parent" === c[t].resizeFrom && c[t].autoResize && !c[t].firstRun && T(e, n, c[i].iframe, i)
|
|
})
|
|
}
|
|
|
|
function L() {
|
|
function n(e, n) {
|
|
if (n) {
|
|
if (!n.tagName) throw TypeError("Object is not a valid DOM element")
|
|
if ("IFRAME" !== n.tagName.toUpperCase()) throw TypeError("Expected <IFRAME> tag, found <" + n.tagName + ">")
|
|
H(n, e), i.push(n)
|
|
}
|
|
}
|
|
|
|
for (var i, t = ["moz", "webkit", "o", "ms"], o = 0; o < t.length && !l; o += 1) l = window[t[o] + "RequestAnimationFrame"]
|
|
return l ? l = l.bind(window) : v("setup", "RequestAnimationFrame not supported"), p(window, "message", x), p(window, "resize", function () {
|
|
var e
|
|
v("window", "Trigger event: " + (e = "resize")), S(function () {
|
|
j("Window " + e, "resize")
|
|
}, 16)
|
|
}), p(document, "visibilitychange", P), p(document, "-webkit-visibilitychange", P), function (t, o) {
|
|
var r
|
|
switch (i = [], (r = t) && r.enablePublicMethods && w("enablePublicMethods option has been removed, public methods are now always available in the iFrame"), typeof o) {
|
|
case"undefined":
|
|
case"string":
|
|
Array.prototype.forEach.call(document.querySelectorAll(o || "iframe"), n.bind(e, t))
|
|
break
|
|
case"object":
|
|
n(t, o)
|
|
break
|
|
default:
|
|
throw TypeError("Unexpected data type (" + typeof o + ")")
|
|
}
|
|
return i
|
|
}
|
|
}
|
|
|
|
"undefined" != typeof window && (n = 0, t = i = !1, o = 7, a = (r = "[iFrameSizer]").length, s = null, l = window.requestAnimationFrame, f = Object.freeze({
|
|
max: 1,
|
|
scroll: 1,
|
|
bodyScroll: 1,
|
|
documentElementScroll: 1
|
|
}), c = {}, d = null, u = 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 () {
|
|
w("onMessage function not defined")
|
|
},
|
|
onMouseEnter: function () {
|
|
},
|
|
onMouseLeave: function () {
|
|
},
|
|
onResized: function () {
|
|
},
|
|
onScroll: function () {
|
|
return !0
|
|
}
|
|
}), m = {}, window.jQuery !== e && ((g = window.jQuery).fn ? g.fn.iFrameResize || (g.fn.iFrameResize = function (e) {
|
|
return this.filter("iframe").each(function (n, i) {
|
|
H(i, e)
|
|
}).end()
|
|
}) : $("", "Unable to bind to jQuery, it is not fully loaded.")), "function" == typeof define && define.amd ? define([], L) : "object" == typeof module && "object" == typeof module.exports && (module.exports = L()), window.iFrameResize = window.iFrameResize || L())
|
|
}()
|
|
|
|
/**
|
|
* Starting from here is OpnForm custom code.
|
|
* @type {string}
|
|
*/
|
|
function initEmbed(formSlug) {
|
|
if (!formSlug) {
|
|
return
|
|
}
|
|
|
|
window.addEventListener('message', function (event) {
|
|
// Make sure that the event data has the type `form-submitted`
|
|
if (event.data?.type !== 'form-submitted' || event.data?.form?.slug !== formSlug) {
|
|
return
|
|
}
|
|
|
|
// Redirect
|
|
if (event.data?.form?.redirect_target_url) {
|
|
|
|
// redirect to target URL
|
|
window.top.location.href = event.data.form.redirect_target_url
|
|
}
|
|
})
|
|
|
|
document.addEventListener("DOMContentLoaded", function () {
|
|
iFrameResize({log: false, checkOrigin: false}, '#' + formSlug)
|
|
})
|
|
}
|