forked from phcode-dev/staging.phcode.dev
-
Notifications
You must be signed in to change notification settings - Fork 1
Expand file tree
/
Copy pathEventManager.js
More file actions
1 lines (1 loc) · 1.51 KB
/
EventManager.js
File metadata and controls
1 lines (1 loc) · 1.51 KB
1
define(function(require,exports,module){const _eventHandlerMap={};function registerEventHandler(handlerName,eventDispatcher){_eventHandlerMap[handlerName]&&console.error("Duplicate EventManager registration for event, overwriting event handler: ",handlerName),_eventHandlerMap[handlerName]=eventDispatcher}function isExistsEventHandler(handlerName){return void 0!==_eventHandlerMap[handlerName]}function triggerEvent(handlerName,eventName,...eventParams){let handler=_eventHandlerMap[handlerName];handler&&eventName?handler.trigger(eventName,...eventParams):console.error(`Could not locate handler for: ${handlerName} eventName: ${eventName} event: ${eventParams}`)}const eventTrustedOrigins={};function setTrustedOrigin(origin,isTrusted){isTrusted?eventTrustedOrigins[origin]=isTrusted:delete eventTrustedOrigins[origin]}window.onmessage=function(event){if(!Phoenix.TRUSTED_ORIGINS[event.origin]&&!eventTrustedOrigins[event.origin]){if("null"===event.origin)return;return console.error("Ignoring event from untrusted origin (should be one of "+`${Object.keys(Phoenix.TRUSTED_ORIGINS)}, ${Object.keys(eventTrustedOrigins)}) but got: `,event),void console.error('Forgot to set window.Phoenix.TRUSTED_ORIGINS["http://<yourdomain.com>"]=true; ?')}const handlerName=event.data.handlerName,eventName=event.data.eventName;handlerName&&triggerEvent(handlerName,eventName,event)},exports.registerEventHandler=registerEventHandler,exports.isExistsEventHandler=isExistsEventHandler,exports.setTrustedOrigin=setTrustedOrigin,exports.triggerEvent=triggerEvent});