-
Notifications
You must be signed in to change notification settings - Fork 4
Expand file tree
/
Copy pathExtensionInterface.js
More file actions
1 lines (1 loc) · 1.54 KB
/
ExtensionInterface.js
File metadata and controls
1 lines (1 loc) · 1.54 KB
1
define(function(require,exports,module){const EVENT_EXTENSION_INTERFACE_REGISTERED="extensionInterfaceRegistered",_DEFAULT_EXTENSIONS_INTERFACE_NAMES={PHOENIX_LIVE_PREVIEW:"Extn.Phoenix.livePreview"};let EventDispatcher=require("utils/EventDispatcher"),_extensionInterfaceMap={};function registerExtensionInterface(extensionInterfaceName,interfaceObject){_extensionInterfaceMap[extensionInterfaceName]=interfaceObject,exports.trigger(EVENT_EXTENSION_INTERFACE_REGISTERED,extensionInterfaceName,interfaceObject)}function isExistsExtensionInterface(extensionInterfaceName){return void 0!==_extensionInterfaceMap[extensionInterfaceName]}function waitAndGetExtensionInterface(extensionInterfaceName){return new Promise((resolve,reject)=>{if(isExistsExtensionInterface(extensionInterfaceName))return void resolve(_extensionInterfaceMap[extensionInterfaceName]);let resolveIfInterfaceRegistered=function(event,registeredInterfaceName,interfaceObj){registeredInterfaceName===extensionInterfaceName&&(exports.off(EVENT_EXTENSION_INTERFACE_REGISTERED,resolveIfInterfaceRegistered),resolve(interfaceObj))};exports.on(EVENT_EXTENSION_INTERFACE_REGISTERED,resolveIfInterfaceRegistered)})}EventDispatcher.makeEventDispatcher(exports),exports._DEFAULT_EXTENSIONS_INTERFACE_NAMES=_DEFAULT_EXTENSIONS_INTERFACE_NAMES,exports.registerExtensionInterface=registerExtensionInterface,exports.waitAndGetExtensionInterface=waitAndGetExtensionInterface,exports.isExistsExtensionInterface=isExistsExtensionInterface,exports.EVENT_EXTENSION_INTERFACE_REGISTERED=EVENT_EXTENSION_INTERFACE_REGISTERED});