Source: observer/MessageEventObserver.js

(function () {
    /**
     * observes message events caused by postMessage in the current window
     * @augments Help4.observer.EventObserver
     */
    Help4.observer.MessageEventObserver = class extends Help4.observer.EventObserver {
        /**
         * @override
         * @param {Help4.observer.Callback} callback
         */
        constructor(callback) {
            const onEvent = event => this._callback?.(event || window.event);

            super(callback, null, {
                statics: {
                    _onEvent: {init: onEvent, destroy: false}
                }
            });
        }

        /**
         * observes "message" events (fired by incoming postMessage) in the current window; incompatible override!
         * @returns {Help4.observer.MessageEventObserver}
         */
        observe() {
            super.observe(window, {type: 'message'});
            return this;
        }
    }
})();