@kwiz/common
Version:
KWIZ common utilities and helpers for M365 platform
33 lines • 1.24 kB
JavaScript
export function postMessageListener(type, handler) {
const listener = (event) => {
if (event.data && event.data.type === type) {
handler(event.data);
}
};
window.addEventListener("message", listener, false);
return {
/** in case you want to dispose of it */
dispose: () => {
window.removeEventListener("message", listener, false);
}
};
}
export function postMessageSender(
/** window.parent, window.top, or iframe ID */
target, data) {
let targetWindow = target instanceof HTMLIFrameElement
? target.contentWindow
: target;
targetWindow.postMessage(data, '*');
}
/** Types were carefully constructed to allow caller to have auto complete options for type while being able to pass other values
* postMessageSender(window, { type: "xxx", a: 1 });
* postMessageSender(window, { type: "SOS_RESIZE_IFRAME", height: 1 });
* postMessageSender(window, { type: "SOS_VISIBILITY_CHANGE", isVisible: false });
* and
* postMessageListener("SOS_RESIZE_IFRAME", data => data.height);
* postMessageListener<{ type: "xxx", param: number }>("xxx", data => {
* console.log(data.param);
* });
*/
//# sourceMappingURL=post-message.js.map