UNPKG

@kwiz/common

Version:

KWIZ common utilities and helpers for M365 platform

33 lines 1.24 kB
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