@open-iframe-resizer/core 1.1.0 → 1.1.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/common.d.ts +1 -0
- package/dist/index.js +48 -43
- package/dist/index.umd.cjs +1 -1
- package/dist/type.d.ts +1 -1
- package/package.json +1 -1
package/dist/common.d.ts
CHANGED
|
@@ -16,3 +16,4 @@ export declare const extractIframeOrigin: (iframe: HTMLIFrameElement) => string
|
|
|
16
16
|
export declare const removeUndefinedProperties: <T extends {
|
|
17
17
|
[key: string]: unknown;
|
|
18
18
|
}>(object: T) => T;
|
|
19
|
+
export declare const getBoundingRectHeight: (document: Document) => number | undefined;
|
package/dist/index.js
CHANGED
|
@@ -1,10 +1,10 @@
|
|
|
1
|
-
const h = () => window && window.self !== window.top,
|
|
1
|
+
const h = () => window && window.self !== window.top, l = (e) => e instanceof HTMLIFrameElement, b = (e, n) => {
|
|
2
2
|
e.document.readyState === "complete" ? n() : e.addEventListener("load", n);
|
|
3
3
|
}, w = (e, n) => {
|
|
4
4
|
n(), e.addEventListener("load", n);
|
|
5
5
|
}, L = (e, n) => {
|
|
6
|
-
var
|
|
7
|
-
const t = ((
|
|
6
|
+
var i, o;
|
|
7
|
+
const t = ((i = e.contentWindow) == null ? void 0 : i.document.readyState) === "complete";
|
|
8
8
|
return e.src !== "about:blank" && ((o = e.contentWindow) == null ? void 0 : o.location.href) !== "about:blank" && t ? n() : e.addEventListener("load", n);
|
|
9
9
|
}, y = () => ({ offsetSize: 0, checkOrigin: !0, enableLegacyLibSupport: !1 }), p = (e) => {
|
|
10
10
|
try {
|
|
@@ -12,7 +12,7 @@ const h = () => window && window.self !== window.top, f = (e) => e instanceof HT
|
|
|
12
12
|
} catch {
|
|
13
13
|
return !1;
|
|
14
14
|
}
|
|
15
|
-
},
|
|
15
|
+
}, g = (e) => {
|
|
16
16
|
try {
|
|
17
17
|
const n = new URL(e.src).origin;
|
|
18
18
|
if (n !== "about:blank")
|
|
@@ -20,7 +20,10 @@ const h = () => window && window.self !== window.top, f = (e) => e instanceof HT
|
|
|
20
20
|
} catch {
|
|
21
21
|
}
|
|
22
22
|
return null;
|
|
23
|
-
}, O = (e) => (Object.keys(e).forEach((n) => e[n] === void 0 && delete e[n]), e)
|
|
23
|
+
}, O = (e) => (Object.keys(e).forEach((n) => e[n] === void 0 && delete e[n]), e), m = (e) => {
|
|
24
|
+
const { height: n } = e.documentElement.getBoundingClientRect() ?? {};
|
|
25
|
+
return n ? Math.ceil(n) : void 0;
|
|
26
|
+
};
|
|
24
27
|
function z(e) {
|
|
25
28
|
w(
|
|
26
29
|
e,
|
|
@@ -28,7 +31,7 @@ function z(e) {
|
|
|
28
31
|
var n;
|
|
29
32
|
return (n = e.contentWindow) == null ? void 0 : n.postMessage(
|
|
30
33
|
"[iFrameSizer]ID:0:false:false:32:true:true::auto:::0:false:child:auto:true:::true:::false",
|
|
31
|
-
|
|
34
|
+
g(e) ?? "*"
|
|
32
35
|
);
|
|
33
36
|
}
|
|
34
37
|
);
|
|
@@ -40,19 +43,19 @@ function I(e) {
|
|
|
40
43
|
}
|
|
41
44
|
return null;
|
|
42
45
|
}
|
|
43
|
-
const
|
|
44
|
-
const t = { ...y(), ...O(e ?? {}) },
|
|
45
|
-
return
|
|
46
|
-
const
|
|
46
|
+
const f = C(), d = [], W = (e, n) => {
|
|
47
|
+
const t = { ...y(), ...O(e ?? {}) }, r = v(n), i = S(t, r);
|
|
48
|
+
return r.map((o) => {
|
|
49
|
+
const a = d.push({ iframe: o, settings: t }), s = R(o, t, i);
|
|
47
50
|
return {
|
|
48
51
|
unsubscribe: () => {
|
|
49
|
-
s(), d.splice(
|
|
52
|
+
s(), d.splice(a - 1, 1);
|
|
50
53
|
}
|
|
51
54
|
};
|
|
52
55
|
});
|
|
53
56
|
};
|
|
54
57
|
function v(e) {
|
|
55
|
-
return typeof e == "string" ? Array.from(document.querySelectorAll(e)).filter(
|
|
58
|
+
return typeof e == "string" ? Array.from(document.querySelectorAll(e)).filter(l) : e ? l(e) ? [e] : [] : Array.from(document.getElementsByTagName("iframe"));
|
|
56
59
|
}
|
|
57
60
|
function S(e, n) {
|
|
58
61
|
if (Array.isArray(e.checkOrigin))
|
|
@@ -60,74 +63,76 @@ function S(e, n) {
|
|
|
60
63
|
if (!e.checkOrigin)
|
|
61
64
|
return [];
|
|
62
65
|
const t = [];
|
|
63
|
-
for (const
|
|
64
|
-
const
|
|
65
|
-
|
|
66
|
+
for (const r of n) {
|
|
67
|
+
const i = g(r);
|
|
68
|
+
i && t.push(i);
|
|
66
69
|
}
|
|
67
70
|
return t;
|
|
68
71
|
}
|
|
69
|
-
function E(e, n, t) {
|
|
70
|
-
return p(e) ? k(e) : R(e, n, t);
|
|
71
|
-
}
|
|
72
72
|
function R(e, n, t) {
|
|
73
|
-
|
|
73
|
+
return p(e) ? k(e) : E(e, n, t);
|
|
74
|
+
}
|
|
75
|
+
function E(e, n, t) {
|
|
76
|
+
const r = (i) => {
|
|
74
77
|
var s;
|
|
75
|
-
const o = !n.checkOrigin || t.includes(
|
|
76
|
-
if (!(!(e.contentWindow ===
|
|
77
|
-
if (((s =
|
|
78
|
-
const { height:
|
|
79
|
-
u({ height:
|
|
78
|
+
const o = !n.checkOrigin || t.includes(i.origin);
|
|
79
|
+
if (!(!(e.contentWindow === i.source) || !o)) {
|
|
80
|
+
if (((s = i.data) == null ? void 0 : s.type) === "iframe-resized") {
|
|
81
|
+
const { height: c } = i.data;
|
|
82
|
+
c && u({ height: c, iframe: e, settings: n });
|
|
80
83
|
return;
|
|
81
84
|
}
|
|
82
85
|
if (n.enableLegacyLibSupport) {
|
|
83
|
-
const
|
|
84
|
-
|
|
86
|
+
const c = I(i);
|
|
87
|
+
c !== null && u({ height: c, iframe: e, settings: n });
|
|
85
88
|
return;
|
|
86
89
|
}
|
|
87
90
|
}
|
|
88
91
|
};
|
|
89
|
-
return window.addEventListener("message",
|
|
92
|
+
return window.addEventListener("message", r), n.enableLegacyLibSupport && z(e), () => window.removeEventListener("message", r);
|
|
90
93
|
}
|
|
91
94
|
function k(e) {
|
|
92
95
|
const n = () => {
|
|
93
|
-
var
|
|
94
|
-
const t = (
|
|
96
|
+
var r;
|
|
97
|
+
const t = (r = e.contentDocument) == null ? void 0 : r.body;
|
|
95
98
|
if (!t) {
|
|
96
99
|
console.error("Unable to observe the iframe content document body");
|
|
97
100
|
return;
|
|
98
101
|
}
|
|
99
|
-
|
|
102
|
+
f.observe(t);
|
|
100
103
|
};
|
|
101
104
|
return L(e, n), () => {
|
|
102
105
|
var t;
|
|
103
|
-
(t = e.contentDocument) != null && t.body &&
|
|
106
|
+
(t = e.contentDocument) != null && t.body && f.unobserve(e.contentDocument.body), e.removeEventListener("load", n);
|
|
104
107
|
};
|
|
105
108
|
}
|
|
106
|
-
function
|
|
109
|
+
function C() {
|
|
107
110
|
const e = ({ target: n }) => {
|
|
108
|
-
var s;
|
|
109
111
|
const t = d.find((a) => {
|
|
110
|
-
var
|
|
111
|
-
return ((
|
|
112
|
+
var s;
|
|
113
|
+
return ((s = a.iframe.contentDocument) == null ? void 0 : s.body) === n;
|
|
112
114
|
});
|
|
113
115
|
if (!t)
|
|
114
116
|
return;
|
|
115
|
-
const { iframe:
|
|
116
|
-
|
|
117
|
+
const { iframe: r, settings: i } = t;
|
|
118
|
+
if (!r.contentDocument)
|
|
119
|
+
return;
|
|
120
|
+
const o = m(r.contentDocument);
|
|
121
|
+
o && u({ height: o, iframe: r, settings: i });
|
|
117
122
|
};
|
|
118
123
|
return new ResizeObserver((n) => n.forEach(e));
|
|
119
124
|
}
|
|
120
125
|
function u({ height: e, iframe: n, settings: t }) {
|
|
121
|
-
n.style.height = `${e + t.offsetSize
|
|
126
|
+
n.style.height = `${e + t.offsetSize}px`;
|
|
122
127
|
}
|
|
123
|
-
h() &&
|
|
124
|
-
function
|
|
128
|
+
h() && D();
|
|
129
|
+
function D() {
|
|
125
130
|
b(window, () => {
|
|
126
131
|
const e = () => {
|
|
127
132
|
const t = {
|
|
128
133
|
type: "iframe-resized",
|
|
129
134
|
width: document.documentElement.scrollWidth,
|
|
130
|
-
height: document
|
|
135
|
+
height: m(document) ?? void 0
|
|
131
136
|
};
|
|
132
137
|
window.parent.postMessage(t, "*");
|
|
133
138
|
};
|
|
@@ -135,6 +140,6 @@ function C() {
|
|
|
135
140
|
});
|
|
136
141
|
}
|
|
137
142
|
export {
|
|
138
|
-
|
|
139
|
-
|
|
143
|
+
W as initialize,
|
|
144
|
+
D as initializeChildListener
|
|
140
145
|
};
|
package/dist/index.umd.cjs
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
(function(s,
|
|
1
|
+
(function(s,a){typeof exports=="object"&&typeof module<"u"?a(exports):typeof define=="function"&&define.amd?define(["exports"],a):(s=typeof globalThis<"u"?globalThis:s||self,a(s.iframeResizer={}))})(this,function(s){"use strict";const a=()=>window&&window.self!==window.top,g=e=>e instanceof HTMLIFrameElement,p=(e,n)=>{e.document.readyState==="complete"?n():e.addEventListener("load",n)},L=(e,n)=>{n(),e.addEventListener("load",n)},w=(e,n)=>{var r,o;const t=((r=e.contentWindow)==null?void 0:r.document.readyState)==="complete";return e.src!=="about:blank"&&((o=e.contentWindow)==null?void 0:o.location.href)!=="about:blank"&&t?n():e.addEventListener("load",n)},O=()=>({offsetSize:0,checkOrigin:!0,enableLegacyLibSupport:!1}),z=e=>{try{return new URL(e.src,window.location.origin).origin===window.location.origin}catch{return!1}},m=e=>{try{const n=new URL(e.src).origin;if(n!=="about:blank")return n}catch{}return null},I=e=>(Object.keys(e).forEach(n=>e[n]===void 0&&delete e[n]),e),h=e=>{const{height:n}=e.documentElement.getBoundingClientRect()??{};return n?Math.ceil(n):void 0};function v(e){L(e,()=>{var n;return(n=e.contentWindow)==null?void 0:n.postMessage("[iFrameSizer]ID:0:false:false:32:true:true::auto:::0:false:child:auto:true:::true:::false",m(e)??"*")})}function S(e){if(typeof e.data=="string"&&e.data.startsWith("[iFrameSizer]")){const[n,t]=e.data.split(":");return+t}return null}const b=T(),f=[],R=(e,n)=>{const t={...O(),...I(e??{})},i=E(n),r=k(t,i);return i.map(o=>{const u=f.push({iframe:o,settings:t}),c=C(o,t,r);return{unsubscribe:()=>{c(),f.splice(u-1,1)}}})};function E(e){return typeof e=="string"?Array.from(document.querySelectorAll(e)).filter(g):e?g(e)?[e]:[]:Array.from(document.getElementsByTagName("iframe"))}function k(e,n){if(Array.isArray(e.checkOrigin))return e.checkOrigin;if(!e.checkOrigin)return[];const t=[];for(const i of n){const r=m(i);r&&t.push(r)}return t}function C(e,n,t){return z(e)?M(e):D(e,n,t)}function D(e,n,t){const i=r=>{var c;const o=!n.checkOrigin||t.includes(r.origin);if(!(!(e.contentWindow===r.source)||!o)){if(((c=r.data)==null?void 0:c.type)==="iframe-resized"){const{height:d}=r.data;d&&l({height:d,iframe:e,settings:n});return}if(n.enableLegacyLibSupport){const d=S(r);d!==null&&l({height:d,iframe:e,settings:n});return}}};return window.addEventListener("message",i),n.enableLegacyLibSupport&&v(e),()=>window.removeEventListener("message",i)}function M(e){const n=()=>{var i;const t=(i=e.contentDocument)==null?void 0:i.body;if(!t){console.error("Unable to observe the iframe content document body");return}b.observe(t)};return w(e,n),()=>{var t;(t=e.contentDocument)!=null&&t.body&&b.unobserve(e.contentDocument.body),e.removeEventListener("load",n)}}function T(){const e=({target:n})=>{const t=f.find(u=>{var c;return((c=u.iframe.contentDocument)==null?void 0:c.body)===n});if(!t)return;const{iframe:i,settings:r}=t;if(!i.contentDocument)return;const o=h(i.contentDocument);o&&l({height:o,iframe:i,settings:r})};return new ResizeObserver(n=>n.forEach(e))}function l({height:e,iframe:n,settings:t}){n.style.height=`${e+t.offsetSize}px`}a()&&y();function y(){p(window,()=>{const e=()=>{const t={type:"iframe-resized",width:document.documentElement.scrollWidth,height:h(document)??void 0};window.parent.postMessage(t,"*")};new ResizeObserver(e).observe(document.body)})}s.initialize=R,s.initializeChildListener=y,Object.defineProperty(s,Symbol.toStringTag,{value:"Module"})});
|
package/dist/type.d.ts
CHANGED