@pexip-engage-public/plugin 1.1.25-canary-20250708143730 → 1.1.25
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/CHANGELOG.md +7 -2
- package/dist/events/index.d.ts +0 -11
- package/dist/events/index.d.ts.map +1 -1
- package/dist/events/index.js +0 -2
- package/dist/events/index.js.map +1 -1
- package/dist/instance/PluginInstance.d.ts +1 -1
- package/dist/instance/PluginInstance.d.ts.map +1 -1
- package/dist/instance/PluginInstance.js +27 -30
- package/dist/instance/PluginInstance.js.map +1 -1
- package/dist/state/PluginState.schema.d.ts +6 -6
- package/package.json +9 -10
- package/src/@types/iframe-resizer.iframeResizer.d.ts +211 -0
- package/src/events/index.ts +0 -14
- package/src/instance/PluginInstance.ts +40 -42
- package/dist/resizer/api-resize-handlers.d.ts +0 -9
- package/dist/resizer/api-resize-handlers.d.ts.map +0 -1
- package/dist/resizer/api-resize-handlers.js +0 -12
- package/dist/resizer/api-resize-handlers.js.map +0 -1
- package/dist/resizer/child.d.ts +0 -12
- package/dist/resizer/child.d.ts.map +0 -1
- package/dist/resizer/child.js +0 -80
- package/dist/resizer/child.js.map +0 -1
- package/dist/resizer/common.d.ts +0 -27
- package/dist/resizer/common.d.ts.map +0 -1
- package/dist/resizer/common.js +0 -82
- package/dist/resizer/common.js.map +0 -1
- package/dist/resizer/index.d.ts +0 -2
- package/dist/resizer/index.d.ts.map +0 -1
- package/dist/resizer/index.js +0 -2
- package/dist/resizer/index.js.map +0 -1
- package/dist/resizer/parent.d.ts +0 -4
- package/dist/resizer/parent.d.ts.map +0 -1
- package/dist/resizer/parent.js +0 -185
- package/dist/resizer/parent.js.map +0 -1
- package/dist/resizer/types.d.ts +0 -101
- package/dist/resizer/types.d.ts.map +0 -1
- package/dist/resizer/types.js +0 -2
- package/dist/resizer/types.js.map +0 -1
- package/src/resizer/api-resize-handlers.ts +0 -17
- package/src/resizer/child.ts +0 -128
- package/src/resizer/common.ts +0 -117
- package/src/resizer/index.ts +0 -0
- package/src/resizer/parent.ts +0 -277
- package/src/resizer/types.ts +0 -108
|
@@ -1,19 +1,18 @@
|
|
|
1
1
|
import { getCurrentPosition } from "@pexip-engage-public/utils/get-current-position";
|
|
2
|
+
import resizer, {
|
|
3
|
+
type IFrameComponent,
|
|
4
|
+
type IFrameMessageData,
|
|
5
|
+
} from "iframe-resizer/js/iframeResizer.js";
|
|
6
|
+
|
|
2
7
|
import { parsePluginConfiguration } from "../configuration-parser/index.js";
|
|
3
8
|
import { encodeURIParameters, pluginSearchParams } from "../encoding.js";
|
|
4
|
-
import {
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
type PluginEventMessage,
|
|
10
|
-
type PressedExternalLinkMessage,
|
|
11
|
-
type StateUpdateMessage,
|
|
12
|
-
type StepShownMessage,
|
|
9
|
+
import type {
|
|
10
|
+
PluginEventMessage,
|
|
11
|
+
PressedExternalLinkMessage,
|
|
12
|
+
StateUpdateMessage,
|
|
13
|
+
StepShownMessage,
|
|
13
14
|
} from "../events/index.js";
|
|
14
15
|
import { logger } from "../logger.js";
|
|
15
|
-
import { initialize } from "../resizer/parent.js";
|
|
16
|
-
import type { InitializeResult } from "../resizer/types.js";
|
|
17
16
|
import type { PluginIntent } from "../state/index.js";
|
|
18
17
|
import {
|
|
19
18
|
type CustomEventPayload,
|
|
@@ -31,9 +30,8 @@ type PluginEventListener = (event: PluginCustomEvent) => unknown;
|
|
|
31
30
|
const PexipEngagePluginFrame = getPexipEngagePluginFrame();
|
|
32
31
|
|
|
33
32
|
export class PluginInstance {
|
|
34
|
-
#instance:
|
|
33
|
+
#instance: IFrameComponent;
|
|
35
34
|
readonly #target: HTMLElement;
|
|
36
|
-
#iframe: HTMLIFrameElement | null = null;
|
|
37
35
|
#state: StateUpdateMessage["payload"] | null = null;
|
|
38
36
|
#meta: Record<string, unknown> = {};
|
|
39
37
|
#status: "pending" | "success" | "error" | "disposed" = "pending";
|
|
@@ -78,16 +76,7 @@ export class PluginInstance {
|
|
|
78
76
|
});
|
|
79
77
|
}
|
|
80
78
|
|
|
81
|
-
#
|
|
82
|
-
this.#iframe?.contentWindow?.postMessage({ message, type: IFRAME_CHILD_MESSAGE }, "*");
|
|
83
|
-
};
|
|
84
|
-
|
|
85
|
-
#handleMessage = async (event: MessageEvent) => {
|
|
86
|
-
const isIframeTarget = this.#iframe && this.#iframe.contentWindow === event.source;
|
|
87
|
-
if (!isIframeTarget || event.data.type !== IFRAME_PARENT_MESSAGE) return;
|
|
88
|
-
|
|
89
|
-
const message = event.data.message as IFrameMessage;
|
|
90
|
-
|
|
79
|
+
#handleMessage = async ({ message }: IFrameMessageData) => {
|
|
91
80
|
if (message.type === "STATE_UPDATE") {
|
|
92
81
|
this.#state = message.payload;
|
|
93
82
|
|
|
@@ -125,7 +114,7 @@ export class PluginInstance {
|
|
|
125
114
|
});
|
|
126
115
|
}
|
|
127
116
|
|
|
128
|
-
this.#sendMessage({
|
|
117
|
+
this.#instance.iFrameResizer.sendMessage({
|
|
129
118
|
payload: { meta: this.#meta },
|
|
130
119
|
type: "PRE_APPOINTMENT_REQUEST",
|
|
131
120
|
});
|
|
@@ -134,7 +123,7 @@ export class PluginInstance {
|
|
|
134
123
|
}
|
|
135
124
|
|
|
136
125
|
if (message.type === "REQUEST_ORIGIN_URL") {
|
|
137
|
-
this.#sendMessage({
|
|
126
|
+
this.#instance.iFrameResizer.sendMessage({
|
|
138
127
|
payload: { href: window.location.href },
|
|
139
128
|
type: "REQUEST_ORIGIN_URL",
|
|
140
129
|
});
|
|
@@ -145,7 +134,7 @@ export class PluginInstance {
|
|
|
145
134
|
if (message.type === "REQUEST_GEOLOCATION") {
|
|
146
135
|
const geolocation = getCurrentPosition();
|
|
147
136
|
|
|
148
|
-
this.#sendMessage({
|
|
137
|
+
this.#instance.iFrameResizer.sendMessage({
|
|
149
138
|
payload: await geolocation.catch((error) =>
|
|
150
139
|
typeof error === "string" ? { error } : { error: "Unknown error" },
|
|
151
140
|
),
|
|
@@ -192,26 +181,36 @@ export class PluginInstance {
|
|
|
192
181
|
const searchParams = pluginSearchParams.encode(this.#config.config);
|
|
193
182
|
const src = `${PluginInstance.#url}/plugin?${searchParams}`;
|
|
194
183
|
|
|
195
|
-
|
|
196
|
-
const
|
|
197
|
-
|
|
198
|
-
|
|
199
|
-
|
|
200
|
-
|
|
201
|
-
|
|
202
|
-
|
|
203
|
-
|
|
184
|
+
const iframe = container.createPexipPlugin(src);
|
|
185
|
+
const self = this;
|
|
186
|
+
const [instance] = resizer(
|
|
187
|
+
{
|
|
188
|
+
checkOrigin: false,
|
|
189
|
+
heightCalculationMethod: "taggedElement",
|
|
190
|
+
log: false,
|
|
191
|
+
onInit() {
|
|
192
|
+
self.#status = "success";
|
|
193
|
+
dispatchEvent({
|
|
194
|
+
bubbles: true,
|
|
195
|
+
cancelable: true,
|
|
196
|
+
detail: { instance: self, type: PluginInstance.EVENT_LOADED },
|
|
197
|
+
target: self.#target,
|
|
198
|
+
});
|
|
199
|
+
},
|
|
200
|
+
onMessage: this.#handleMessage,
|
|
201
|
+
resizeFrom: "child",
|
|
202
|
+
},
|
|
203
|
+
iframe,
|
|
204
|
+
);
|
|
204
205
|
|
|
205
|
-
window.addEventListener("message", this.#handleMessage);
|
|
206
206
|
if (!instance) throw new Error("Failed to create resizer instance");
|
|
207
207
|
|
|
208
208
|
return instance;
|
|
209
209
|
}
|
|
210
210
|
|
|
211
211
|
#restart = () => {
|
|
212
|
-
window.removeEventListener("message", this.#handleMessage);
|
|
213
212
|
// leave event listeners intact.
|
|
214
|
-
this.#instance.
|
|
213
|
+
this.#instance.iFrameResizer.close();
|
|
215
214
|
this.#instance = this.#createInstance();
|
|
216
215
|
};
|
|
217
216
|
|
|
@@ -227,8 +226,7 @@ export class PluginInstance {
|
|
|
227
226
|
window.clearTimeout(this.#fallbackTimeoutId);
|
|
228
227
|
}
|
|
229
228
|
|
|
230
|
-
|
|
231
|
-
this.#instance.unsubscribe();
|
|
229
|
+
this.#instance.iFrameResizer.close();
|
|
232
230
|
const idx = PluginInstance.#instances.indexOf(this);
|
|
233
231
|
if (idx !== -1) {
|
|
234
232
|
PluginInstance.#instances.splice(idx, 1);
|
|
@@ -240,11 +238,11 @@ export class PluginInstance {
|
|
|
240
238
|
setCSSVariable = (name: string, value: string) => {
|
|
241
239
|
warnPrivate({ name: "setCSSVariable", type: "function" });
|
|
242
240
|
|
|
243
|
-
this.#sendMessage({ payload: { name, value }, type: "CSS_VAR_UPDATE" });
|
|
241
|
+
this.#instance.iFrameResizer.sendMessage({ payload: { name, value }, type: "CSS_VAR_UPDATE" });
|
|
244
242
|
};
|
|
245
243
|
|
|
246
244
|
setCustomCSS = (css: string) => {
|
|
247
|
-
this.#sendMessage({ payload: { css }, type: "CUSTOM_CSS_UPDATE" });
|
|
245
|
+
this.#instance.iFrameResizer.sendMessage({ payload: { css }, type: "CUSTOM_CSS_UPDATE" });
|
|
248
246
|
};
|
|
249
247
|
|
|
250
248
|
#listeners = new Set<EventListener>();
|
|
@@ -1,9 +0,0 @@
|
|
|
1
|
-
import type { ResizeContext } from "./types.js";
|
|
2
|
-
/**
|
|
3
|
-
* Resize handler that scrolls to restore the iframe's position in the viewport as it was before the resize.
|
|
4
|
-
*
|
|
5
|
-
* *Note:* This behavior only triggers if the iframe currently has focus,
|
|
6
|
-
* in order to try to limit the number of scroll as it can affect the user experience.
|
|
7
|
-
*/
|
|
8
|
-
export declare const updateParentScrollOnResize: ({ previousRenderState, nextRenderState, iframe, }: ResizeContext) => void;
|
|
9
|
-
//# sourceMappingURL=api-resize-handlers.d.ts.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"api-resize-handlers.d.ts","sourceRoot":"","sources":["../../src/resizer/api-resize-handlers.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,YAAY,CAAC;AAEhD;;;;;GAKG;AACH,eAAO,MAAM,0BAA0B,GAAI,mDAIxC,aAAa,SAIf,CAAC"}
|
|
@@ -1,12 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* Resize handler that scrolls to restore the iframe's position in the viewport as it was before the resize.
|
|
3
|
-
*
|
|
4
|
-
* *Note:* This behavior only triggers if the iframe currently has focus,
|
|
5
|
-
* in order to try to limit the number of scroll as it can affect the user experience.
|
|
6
|
-
*/
|
|
7
|
-
export const updateParentScrollOnResize = ({ previousRenderState, nextRenderState, iframe, }) => {
|
|
8
|
-
if (document.activeElement === iframe) {
|
|
9
|
-
window.scrollBy(0, nextRenderState.rect.bottom - previousRenderState.rect.bottom);
|
|
10
|
-
}
|
|
11
|
-
};
|
|
12
|
-
//# sourceMappingURL=api-resize-handlers.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"api-resize-handlers.js","sourceRoot":"","sources":["../../src/resizer/api-resize-handlers.ts"],"names":[],"mappings":"AAEA;;;;;GAKG;AACH,MAAM,CAAC,MAAM,0BAA0B,GAAG,CAAC,EACzC,mBAAmB,EACnB,eAAe,EACf,MAAM,GACQ,EAAE,EAAE;IAClB,IAAI,QAAQ,CAAC,aAAa,KAAK,MAAM,EAAE,CAAC;QACtC,MAAM,CAAC,QAAQ,CAAC,CAAC,EAAE,eAAe,CAAC,IAAI,CAAC,MAAM,GAAG,mBAAmB,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;IACpF,CAAC;AACH,CAAC,CAAC"}
|
package/dist/resizer/child.d.ts
DELETED
|
@@ -1,12 +0,0 @@
|
|
|
1
|
-
import type { IFrameMessage, IFrameObjectMessage } from "../events/index.js";
|
|
2
|
-
export declare class IframeChildInstance {
|
|
3
|
-
#private;
|
|
4
|
-
sendMessage: (message: IFrameMessage) => void;
|
|
5
|
-
constructor({ onReady, onMessage, }: {
|
|
6
|
-
onReady: () => void;
|
|
7
|
-
onMessage: (message: IFrameObjectMessage) => void;
|
|
8
|
-
});
|
|
9
|
-
initialize: () => void;
|
|
10
|
-
unsubscribe: () => void;
|
|
11
|
-
}
|
|
12
|
-
//# sourceMappingURL=child.d.ts.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"child.d.ts","sourceRoot":"","sources":["../../src/resizer/child.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EACV,aAAa,EACb,mBAAmB,EAGpB,MAAM,oBAAoB,CAAC;AAY5B,qBAAa,mBAAmB;;IAuD9B,WAAW,GAAI,SAAS,aAAa,UAenC;gBAmBU,EACV,OAAO,EACP,SAAS,GACV,EAAE;QACD,OAAO,EAAE,MAAM,IAAI,CAAC;QACpB,SAAS,EAAE,CAAC,OAAO,EAAE,mBAAmB,KAAK,IAAI,CAAC;KACnD;IAKD,UAAU,aAIR;IAEF,WAAW,aAGT;CACH"}
|
package/dist/resizer/child.js
DELETED
|
@@ -1,80 +0,0 @@
|
|
|
1
|
-
import { applyStyleSettings, deferWhenWindowDocumentIsLoaded, getBoundingRectSize, getExponentialBackoffDelay, isBrowser, isInIframe, resolveElementToObserve, } from "./common.js";
|
|
2
|
-
export class IframeChildInstance {
|
|
3
|
-
#queue = [];
|
|
4
|
-
#isQueueConsumed = false;
|
|
5
|
-
#initialized = false;
|
|
6
|
-
#resizeObserver = null;
|
|
7
|
-
#getResizeObserverInstance = () => {
|
|
8
|
-
if (!this.#resizeObserver) {
|
|
9
|
-
this.#resizeObserver = new ResizeObserver((entries) => {
|
|
10
|
-
if (!entries[0]?.target) {
|
|
11
|
-
return;
|
|
12
|
-
}
|
|
13
|
-
const { height, width } = getBoundingRectSize(entries[0].target);
|
|
14
|
-
const data = {
|
|
15
|
-
height,
|
|
16
|
-
type: "iframe-resized",
|
|
17
|
-
width,
|
|
18
|
-
};
|
|
19
|
-
window.parent.postMessage(data, "*");
|
|
20
|
-
});
|
|
21
|
-
}
|
|
22
|
-
return this.#resizeObserver;
|
|
23
|
-
};
|
|
24
|
-
#handleInitializeSignal = (event, nthRetry = 0) => {
|
|
25
|
-
const { targetElementSelector, bodyPadding, bodyMargin } = event.data;
|
|
26
|
-
const elementToObserve = resolveElementToObserve(document, targetElementSelector);
|
|
27
|
-
if (this.#initialized || window.parent !== event.source) {
|
|
28
|
-
return;
|
|
29
|
-
}
|
|
30
|
-
if (!elementToObserve) {
|
|
31
|
-
return setTimeout(() => this.#handleInitializeSignal(event, nthRetry + 1), getExponentialBackoffDelay(nthRetry));
|
|
32
|
-
}
|
|
33
|
-
applyStyleSettings(document, { bodyMargin, bodyPadding });
|
|
34
|
-
const resizeObserver = this.#getResizeObserverInstance();
|
|
35
|
-
resizeObserver.disconnect();
|
|
36
|
-
resizeObserver.observe(elementToObserve);
|
|
37
|
-
this.#initialized = true;
|
|
38
|
-
this.#isQueueConsumed = true;
|
|
39
|
-
this.#queue.forEach((message) => this.sendMessage(message));
|
|
40
|
-
this.#queue.length = 0;
|
|
41
|
-
this.#onReady();
|
|
42
|
-
};
|
|
43
|
-
sendMessage = (message) => {
|
|
44
|
-
if (!isBrowser())
|
|
45
|
-
return;
|
|
46
|
-
if (!isInIframe() && !this.#isQueueConsumed) {
|
|
47
|
-
this.#queue.push(message);
|
|
48
|
-
return;
|
|
49
|
-
}
|
|
50
|
-
const data = {
|
|
51
|
-
message,
|
|
52
|
-
type: "iframe-parent-message",
|
|
53
|
-
};
|
|
54
|
-
window.parent.postMessage(data, "*");
|
|
55
|
-
};
|
|
56
|
-
#handleMessage = (event) => {
|
|
57
|
-
if (event.data?.type === "iframe-child-init") {
|
|
58
|
-
return deferWhenWindowDocumentIsLoaded(() => this.#handleInitializeSignal(event));
|
|
59
|
-
}
|
|
60
|
-
if (event.data?.type === "iframe-child-message") {
|
|
61
|
-
this.#onMessage(event.data.message);
|
|
62
|
-
}
|
|
63
|
-
};
|
|
64
|
-
#onReady;
|
|
65
|
-
#onMessage;
|
|
66
|
-
constructor({ onReady, onMessage, }) {
|
|
67
|
-
this.#onReady = onReady;
|
|
68
|
-
this.#onMessage = onMessage;
|
|
69
|
-
}
|
|
70
|
-
initialize = () => {
|
|
71
|
-
if (!isBrowser() || !isInIframe())
|
|
72
|
-
return;
|
|
73
|
-
window.addEventListener("message", this.#handleMessage);
|
|
74
|
-
};
|
|
75
|
-
unsubscribe = () => {
|
|
76
|
-
window.removeEventListener("message", this.#handleMessage);
|
|
77
|
-
this.#resizeObserver?.disconnect();
|
|
78
|
-
};
|
|
79
|
-
}
|
|
80
|
-
//# sourceMappingURL=child.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"child.js","sourceRoot":"","sources":["../../src/resizer/child.ts"],"names":[],"mappings":"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"}
|
package/dist/resizer/common.d.ts
DELETED
|
@@ -1,27 +0,0 @@
|
|
|
1
|
-
import type { Settings } from "./types.js";
|
|
2
|
-
export declare const isBrowser: () => boolean;
|
|
3
|
-
export declare const isInIframe: () => boolean;
|
|
4
|
-
export declare const isHtmlIframeElement: (element: Element) => element is HTMLIFrameElement;
|
|
5
|
-
export declare const deferWhenWindowDocumentIsLoaded: (executable: () => void) => void;
|
|
6
|
-
/**
|
|
7
|
-
* Post the message twice, it assures the target to receive the message at least once
|
|
8
|
-
*/
|
|
9
|
-
export declare const postMessageSafelyToCrossOriginIframe: (iframe: HTMLIFrameElement, executable: () => void) => void;
|
|
10
|
-
export declare const deferWhenSameOriginIframeIsLoaded: (iframe: HTMLIFrameElement, executable: () => void) => void;
|
|
11
|
-
export declare const getDefaultSettings: () => Settings;
|
|
12
|
-
export declare const isIframeSameOrigin: (iframe: HTMLIFrameElement) => boolean;
|
|
13
|
-
export declare const extractIframeOrigin: (iframe: HTMLIFrameElement) => string | null;
|
|
14
|
-
export declare const removeUndefinedProperties: <T extends {
|
|
15
|
-
[key: string]: unknown;
|
|
16
|
-
}>(object: T) => T;
|
|
17
|
-
export declare const getBoundingRectSize: (element: Element) => {
|
|
18
|
-
height: number;
|
|
19
|
-
width: number;
|
|
20
|
-
};
|
|
21
|
-
export declare const resolveElementToObserve: (document: Document | null, targetElementSelector?: string) => Element | null;
|
|
22
|
-
export declare const applyStyleSettings: (document: Document, styleSettings: {
|
|
23
|
-
bodyMargin?: string;
|
|
24
|
-
bodyPadding?: string;
|
|
25
|
-
}) => void;
|
|
26
|
-
export declare const getExponentialBackoffDelay: (nthRetry: number) => 100 | 1000 | 10000;
|
|
27
|
-
//# sourceMappingURL=common.d.ts.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"common.d.ts","sourceRoot":"","sources":["../../src/resizer/common.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,YAAY,CAAC;AAE3C,eAAO,MAAM,SAAS,eAAsC,CAAC;AAE7D,eAAO,MAAM,UAAU,eAAmC,CAAC;AAE3D,eAAO,MAAM,mBAAmB,GAAI,SAAS,OAAO,KAAG,OAAO,IAAI,iBAC5B,CAAC;AAEvC,eAAO,MAAM,+BAA+B,GAAI,YAAY,MAAM,IAAI,SAIrE,CAAC;AAEF;;GAEG;AACH,eAAO,MAAM,oCAAoC,GAC/C,QAAQ,iBAAiB,EACzB,YAAY,MAAM,IAAI,SAIvB,CAAC;AAEF,eAAO,MAAM,iCAAiC,GAC5C,QAAQ,iBAAiB,EACzB,YAAY,MAAM,IAAI,SASvB,CAAC;AAEF,eAAO,MAAM,kBAAkB,EAAE,MAAM,QAIrC,CAAC;AAEH,eAAO,MAAM,kBAAkB,GAAI,QAAQ,iBAAiB,YAM3D,CAAC;AAEF,eAAO,MAAM,mBAAmB,GAAI,QAAQ,iBAAiB,KAAG,MAAM,GAAG,IASxE,CAAC;AAEF,eAAO,MAAM,yBAAyB,GAAI,CAAC,SAAS;IAAE,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAA;CAAE,EAAE,QAAQ,CAAC,KAAG,CAI3F,CAAC;AAEF,eAAO,MAAM,mBAAmB,GAAI,SAAS,OAAO;;;CAInD,CAAC;AAEF,eAAO,MAAM,uBAAuB,GAClC,UAAU,QAAQ,GAAG,IAAI,EACzB,wBAAwB,MAAM,mBAS/B,CAAC;AAEF,eAAO,MAAM,kBAAkB,GAC7B,UAAU,QAAQ,EAClB,eAAe;IAAE,UAAU,CAAC,EAAE,MAAM,CAAC;IAAC,WAAW,CAAC,EAAE,MAAM,CAAA;CAAE,SAa7D,CAAC;AAEF,eAAO,MAAM,0BAA0B,GAAI,UAAU,MAAM,uBAU1D,CAAC"}
|
package/dist/resizer/common.js
DELETED
|
@@ -1,82 +0,0 @@
|
|
|
1
|
-
export const isBrowser = () => typeof window !== "undefined";
|
|
2
|
-
export const isInIframe = () => window.self !== window.top;
|
|
3
|
-
export const isHtmlIframeElement = (element) => element instanceof HTMLIFrameElement;
|
|
4
|
-
export const deferWhenWindowDocumentIsLoaded = (executable) => {
|
|
5
|
-
window.document.readyState === "complete"
|
|
6
|
-
? executable()
|
|
7
|
-
: window.addEventListener("load", executable);
|
|
8
|
-
};
|
|
9
|
-
/**
|
|
10
|
-
* Post the message twice, it assures the target to receive the message at least once
|
|
11
|
-
*/
|
|
12
|
-
export const postMessageSafelyToCrossOriginIframe = (iframe, executable) => {
|
|
13
|
-
executable();
|
|
14
|
-
iframe.addEventListener("load", executable);
|
|
15
|
-
};
|
|
16
|
-
export const deferWhenSameOriginIframeIsLoaded = (iframe, executable) => {
|
|
17
|
-
const isLoadingCompleted = iframe.contentWindow?.document.readyState === "complete";
|
|
18
|
-
const isNotBlankPage = iframe.src !== "about:blank" && iframe.contentWindow?.location.href !== "about:blank"; // Chrome browsers load once with an empty location
|
|
19
|
-
return isNotBlankPage && isLoadingCompleted
|
|
20
|
-
? executable()
|
|
21
|
-
: iframe.addEventListener("load", executable);
|
|
22
|
-
};
|
|
23
|
-
export const getDefaultSettings = () => ({
|
|
24
|
-
checkOrigin: true,
|
|
25
|
-
enableLegacyLibSupport: false,
|
|
26
|
-
offsetSize: 0,
|
|
27
|
-
});
|
|
28
|
-
export const isIframeSameOrigin = (iframe) => {
|
|
29
|
-
try {
|
|
30
|
-
return new URL(iframe.src).origin === window.location.origin;
|
|
31
|
-
}
|
|
32
|
-
catch (e) {
|
|
33
|
-
return false;
|
|
34
|
-
}
|
|
35
|
-
};
|
|
36
|
-
export const extractIframeOrigin = (iframe) => {
|
|
37
|
-
try {
|
|
38
|
-
const origin = new URL(iframe.src).origin;
|
|
39
|
-
if (origin !== "about:blank") {
|
|
40
|
-
return origin;
|
|
41
|
-
}
|
|
42
|
-
}
|
|
43
|
-
catch (error) { }
|
|
44
|
-
return null;
|
|
45
|
-
};
|
|
46
|
-
export const removeUndefinedProperties = (object) => {
|
|
47
|
-
Object.keys(object).forEach((key) => object[key] === undefined && delete object[key]);
|
|
48
|
-
return object;
|
|
49
|
-
};
|
|
50
|
-
export const getBoundingRectSize = (element) => {
|
|
51
|
-
const { height, width } = element.getBoundingClientRect();
|
|
52
|
-
return { height: Math.ceil(height), width: Math.ceil(width) };
|
|
53
|
-
};
|
|
54
|
-
export const resolveElementToObserve = (document, targetElementSelector) => {
|
|
55
|
-
if (!document) {
|
|
56
|
-
return null;
|
|
57
|
-
}
|
|
58
|
-
return targetElementSelector
|
|
59
|
-
? document.querySelector(targetElementSelector)
|
|
60
|
-
: document.documentElement;
|
|
61
|
-
};
|
|
62
|
-
export const applyStyleSettings = (document, styleSettings) => {
|
|
63
|
-
if (!document) {
|
|
64
|
-
return;
|
|
65
|
-
}
|
|
66
|
-
if (styleSettings.bodyPadding) {
|
|
67
|
-
document.body.style.padding = styleSettings.bodyPadding;
|
|
68
|
-
}
|
|
69
|
-
if (styleSettings.bodyMargin) {
|
|
70
|
-
document.body.style.margin = styleSettings.bodyMargin;
|
|
71
|
-
}
|
|
72
|
-
};
|
|
73
|
-
export const getExponentialBackoffDelay = (nthRetry) => {
|
|
74
|
-
if (nthRetry <= 100) {
|
|
75
|
-
return 100; // for 10 seconds
|
|
76
|
-
}
|
|
77
|
-
if (nthRetry <= 120) {
|
|
78
|
-
return 1000; // for 20 seconds
|
|
79
|
-
}
|
|
80
|
-
return 10000;
|
|
81
|
-
};
|
|
82
|
-
//# sourceMappingURL=common.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"common.js","sourceRoot":"","sources":["../../src/resizer/common.ts"],"names":[],"mappings":"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"}
|
package/dist/resizer/index.d.ts
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/resizer/index.ts"],"names":[],"mappings":""}
|
package/dist/resizer/index.js
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/resizer/index.ts"],"names":[],"mappings":""}
|
package/dist/resizer/parent.d.ts
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"parent.d.ts","sourceRoot":"","sources":["../../src/resizer/parent.ts"],"names":[],"mappings":"AAcA,OAAO,KAAK,EAGV,kBAAkB,EAInB,MAAM,YAAY,CAAC;AAKpB,QAAA,MAAM,UAAU,EAAE,kBA4BjB,CAAC;AA8NF,OAAO,EAAE,UAAU,EAAE,CAAC"}
|
package/dist/resizer/parent.js
DELETED
|
@@ -1,185 +0,0 @@
|
|
|
1
|
-
import { applyStyleSettings, deferWhenSameOriginIframeIsLoaded, extractIframeOrigin, getBoundingRectSize, getDefaultSettings, getExponentialBackoffDelay, isBrowser, isHtmlIframeElement, isIframeSameOrigin, postMessageSafelyToCrossOriginIframe, removeUndefinedProperties, resolveElementToObserve, } from "./common.js";
|
|
2
|
-
const getResizeObserverInstance = createResizerObserverLazyFactory();
|
|
3
|
-
let registeredElements = [];
|
|
4
|
-
const initialize = (clientSettings, selector) => {
|
|
5
|
-
if (!isBrowser()) {
|
|
6
|
-
return [];
|
|
7
|
-
}
|
|
8
|
-
const finalSettings = {
|
|
9
|
-
...getDefaultSettings(),
|
|
10
|
-
...removeUndefinedProperties(clientSettings ?? {}),
|
|
11
|
-
};
|
|
12
|
-
const iframes = resolveIframesToRegister(selector);
|
|
13
|
-
const allowedOrigins = registerIframesAllowOrigins(finalSettings, iframes);
|
|
14
|
-
return iframes.map((iframe) => {
|
|
15
|
-
const registeredElement = {
|
|
16
|
-
iframe,
|
|
17
|
-
initContext: { isInitialized: false, retryAttempts: 0 },
|
|
18
|
-
interactionState: { isHovered: false },
|
|
19
|
-
settings: finalSettings,
|
|
20
|
-
};
|
|
21
|
-
const unsubscribe = addChildResizeListener(registeredElement, allowedOrigins);
|
|
22
|
-
registeredElements.push(registeredElement);
|
|
23
|
-
return {
|
|
24
|
-
unsubscribe: () => {
|
|
25
|
-
unsubscribe();
|
|
26
|
-
registeredElements = registeredElements.filter((entry) => entry.iframe !== iframe);
|
|
27
|
-
},
|
|
28
|
-
};
|
|
29
|
-
});
|
|
30
|
-
};
|
|
31
|
-
function resolveIframesToRegister(selector) {
|
|
32
|
-
if (typeof selector === "string") {
|
|
33
|
-
return Array.from(document.querySelectorAll(selector)).filter(isHtmlIframeElement);
|
|
34
|
-
}
|
|
35
|
-
if (selector) {
|
|
36
|
-
return isHtmlIframeElement(selector) ? [selector] : [];
|
|
37
|
-
}
|
|
38
|
-
return Array.from(document.getElementsByTagName("iframe"));
|
|
39
|
-
}
|
|
40
|
-
function registerIframesAllowOrigins(settings, iframes) {
|
|
41
|
-
if (Array.isArray(settings.checkOrigin)) {
|
|
42
|
-
return settings.checkOrigin;
|
|
43
|
-
}
|
|
44
|
-
if (!settings.checkOrigin) {
|
|
45
|
-
return [];
|
|
46
|
-
}
|
|
47
|
-
const allowedOrigins = [];
|
|
48
|
-
for (const iframe of iframes) {
|
|
49
|
-
const origin = extractIframeOrigin(iframe);
|
|
50
|
-
if (origin) {
|
|
51
|
-
allowedOrigins.push(origin);
|
|
52
|
-
}
|
|
53
|
-
}
|
|
54
|
-
return allowedOrigins;
|
|
55
|
-
}
|
|
56
|
-
function addChildResizeListener(registeredElement, allowedOrigins) {
|
|
57
|
-
const removeResizeListener = isIframeSameOrigin(registeredElement.iframe)
|
|
58
|
-
? addSameOriginChildResizeListener(registeredElement)
|
|
59
|
-
: addCrossOriginChildResizeListener(registeredElement, allowedOrigins);
|
|
60
|
-
const removeInteractionListeners = addInteractionListeners(registeredElement);
|
|
61
|
-
return () => {
|
|
62
|
-
removeResizeListener();
|
|
63
|
-
removeInteractionListeners();
|
|
64
|
-
};
|
|
65
|
-
}
|
|
66
|
-
function addCrossOriginChildResizeListener(registeredElement, allowedOrigins) {
|
|
67
|
-
const { iframe, initContext, settings: { checkOrigin, targetElementSelector, bodyPadding, bodyMargin }, } = registeredElement;
|
|
68
|
-
const handleIframeResizedMessage = (event) => {
|
|
69
|
-
const isOriginValid = !checkOrigin || allowedOrigins.includes(event.origin);
|
|
70
|
-
const isIframeTarget = iframe.contentWindow === event.source;
|
|
71
|
-
if (!isIframeTarget || !isOriginValid) {
|
|
72
|
-
return;
|
|
73
|
-
}
|
|
74
|
-
if (event.data?.type === "iframe-resized") {
|
|
75
|
-
const { height } = event.data;
|
|
76
|
-
height && resizeIframe({ newHeight: height, registeredElement });
|
|
77
|
-
return;
|
|
78
|
-
}
|
|
79
|
-
};
|
|
80
|
-
window.addEventListener("message", handleIframeResizedMessage);
|
|
81
|
-
const initMessage = {
|
|
82
|
-
bodyMargin,
|
|
83
|
-
bodyPadding,
|
|
84
|
-
targetElementSelector,
|
|
85
|
-
type: "iframe-child-init",
|
|
86
|
-
};
|
|
87
|
-
const sendInitializationMessageToChild = () => {
|
|
88
|
-
postMessageSafelyToCrossOriginIframe(iframe, () => iframe.contentWindow?.postMessage(initMessage, "*"));
|
|
89
|
-
initContext.retryAttempts++;
|
|
90
|
-
initContext.retryTimeoutId = window.setTimeout(sendInitializationMessageToChild, getExponentialBackoffDelay(initContext.retryAttempts));
|
|
91
|
-
};
|
|
92
|
-
sendInitializationMessageToChild();
|
|
93
|
-
return () => window.removeEventListener("message", handleIframeResizedMessage);
|
|
94
|
-
}
|
|
95
|
-
function addSameOriginChildResizeListener(registeredElement) {
|
|
96
|
-
const { iframe, settings } = registeredElement;
|
|
97
|
-
const { targetElementSelector } = settings;
|
|
98
|
-
let nthRetry = 0;
|
|
99
|
-
const initialize = () => {
|
|
100
|
-
const elementToObserve = resolveElementToObserve(iframe.contentDocument, targetElementSelector);
|
|
101
|
-
if (!iframe.contentDocument || !elementToObserve) {
|
|
102
|
-
nthRetry++;
|
|
103
|
-
return setTimeout(initialize, getExponentialBackoffDelay(nthRetry));
|
|
104
|
-
}
|
|
105
|
-
applyStyleSettings(iframe.contentDocument, settings);
|
|
106
|
-
getResizeObserverInstance().observe(elementToObserve);
|
|
107
|
-
};
|
|
108
|
-
deferWhenSameOriginIframeIsLoaded(iframe, initialize);
|
|
109
|
-
return () => {
|
|
110
|
-
const elementToObserve = resolveElementToObserve(iframe.contentDocument, targetElementSelector);
|
|
111
|
-
if (elementToObserve) {
|
|
112
|
-
getResizeObserverInstance().unobserve(elementToObserve);
|
|
113
|
-
}
|
|
114
|
-
iframe.removeEventListener("load", initialize);
|
|
115
|
-
};
|
|
116
|
-
}
|
|
117
|
-
function addInteractionListeners({ iframe, interactionState }) {
|
|
118
|
-
const onMouseEnter = () => {
|
|
119
|
-
interactionState.isHovered = true;
|
|
120
|
-
};
|
|
121
|
-
const onMouseLeave = () => {
|
|
122
|
-
interactionState.isHovered = false;
|
|
123
|
-
};
|
|
124
|
-
iframe.addEventListener("mouseenter", onMouseEnter);
|
|
125
|
-
iframe.addEventListener("mouseleave", onMouseLeave);
|
|
126
|
-
return () => {
|
|
127
|
-
iframe.removeEventListener("mouseenter", onMouseEnter);
|
|
128
|
-
iframe.removeEventListener("mouseleave", onMouseLeave);
|
|
129
|
-
};
|
|
130
|
-
}
|
|
131
|
-
function createResizerObserverLazyFactory() {
|
|
132
|
-
let resizeObserver = null;
|
|
133
|
-
return () => {
|
|
134
|
-
if (!resizeObserver) {
|
|
135
|
-
const handleEntry = ({ target }) => {
|
|
136
|
-
const matchingRegisteredElement = registeredElements.find(({ iframe }) => iframe.contentDocument === target.ownerDocument);
|
|
137
|
-
if (!matchingRegisteredElement) {
|
|
138
|
-
return;
|
|
139
|
-
}
|
|
140
|
-
const { iframe, settings } = matchingRegisteredElement;
|
|
141
|
-
const observedElement = resolveElementToObserve(iframe.contentDocument, settings.targetElementSelector);
|
|
142
|
-
if (!observedElement) {
|
|
143
|
-
return;
|
|
144
|
-
}
|
|
145
|
-
const { height } = getBoundingRectSize(observedElement);
|
|
146
|
-
if (!height) {
|
|
147
|
-
return;
|
|
148
|
-
}
|
|
149
|
-
resizeIframe({ newHeight: height, registeredElement: matchingRegisteredElement });
|
|
150
|
-
};
|
|
151
|
-
resizeObserver = new ResizeObserver((entries) => entries.forEach(handleEntry));
|
|
152
|
-
}
|
|
153
|
-
return resizeObserver;
|
|
154
|
-
};
|
|
155
|
-
}
|
|
156
|
-
function resizeIframe({ registeredElement, newHeight, }) {
|
|
157
|
-
const { iframe, settings, interactionState, initContext } = registeredElement;
|
|
158
|
-
if (!initContext.isInitialized) {
|
|
159
|
-
initContext.isInitialized = true;
|
|
160
|
-
clearTimeout(initContext.retryTimeoutId);
|
|
161
|
-
}
|
|
162
|
-
if (settings.onBeforeIframeResize?.({
|
|
163
|
-
iframe,
|
|
164
|
-
observedHeight: newHeight,
|
|
165
|
-
settings: { ...settings },
|
|
166
|
-
}) === false) {
|
|
167
|
-
return;
|
|
168
|
-
}
|
|
169
|
-
const previousBoundingRect = iframe.getBoundingClientRect();
|
|
170
|
-
const newCalculatedHeight = newHeight + settings.offsetSize;
|
|
171
|
-
iframe.style.height = `${newCalculatedHeight}px`;
|
|
172
|
-
if (!settings.onIframeResize) {
|
|
173
|
-
return;
|
|
174
|
-
}
|
|
175
|
-
const resizeContext = {
|
|
176
|
-
iframe,
|
|
177
|
-
interactionState: { ...interactionState },
|
|
178
|
-
nextRenderState: { rect: iframe.getBoundingClientRect() },
|
|
179
|
-
previousRenderState: { rect: previousBoundingRect },
|
|
180
|
-
settings: { ...settings },
|
|
181
|
-
};
|
|
182
|
-
settings.onIframeResize(resizeContext);
|
|
183
|
-
}
|
|
184
|
-
export { initialize };
|
|
185
|
-
//# sourceMappingURL=parent.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"parent.js","sourceRoot":"","sources":["../../src/resizer/parent.ts"],"names":[],"mappings":"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"}
|