in lex-web-ui/src/store/actions.js [1077:1117]
sendMessageToParentWindow(context, message) {
if (!context.state.isRunningEmbedded) {
return new Promise((resolve, reject) => {
try {
const myEvent = new CustomEvent('fullpagecomponent', { detail: message });
document.dispatchEvent(myEvent);
resolve(myEvent);
} catch (err) {
reject(err);
}
});
}
return new Promise((resolve, reject) => {
const messageChannel = new MessageChannel();
messageChannel.port1.onmessage = (evt) => {
messageChannel.port1.close();
messageChannel.port2.close();
if (evt.data.event === 'resolve') {
resolve(evt.data);
} else {
const errorMessage =
`error in sendMessageToParentWindow: ${evt.data.error}`;
reject(new Error(errorMessage));
}
};
let target = context.state.config.ui.parentOrigin;
if (target !== window.location.origin) {
// simple check to determine if a region specific path has been provided
const p1 = context.state.config.ui.parentOrigin.split('.');
const p2 = window.location.origin.split('.');
if (p1[0] === p2[0]) {
target = window.location.origin;
}
}
window.parent.postMessage(
{ source: 'lex-web-ui', ...message },
target,
[messageChannel.port2],
);
});
},