/*** Simple event wrapper for internal Smart M.App events* @class SimpleEventWrapper* @param emitter {EventSourceMixin} emitter must be an object with "on" and "off" methods like $GP.events.__activeLegendHandle* @param eventName {String} name of the event. This is not checked in the SimpleEventWrapper - you must know the valid event name* 2018-06-28 Piotr Szrajber <piotr.szrajber@hexagon.com>*/letSimpleEventWrapper=((window,undefined)=>{class_SimpleEventWrapper{constructor(emitter,eventName){if(typeofemitter.on!=="function"||typeofemitter.off!="function"){thrownewError("Emitter is not a valid event source");}this._emitter=emitter;this._eventName=eventName;this._handlers={};}//RFC4122 version 4 compliant uuiduuidv4(){return'xxxxxxxx-xxxx-4xxx-yxxx-xxxxxxxxxxxx'.replace(/[xy]/g,function(c){varr=Math.random()*16|0,v=c=='x'?r:(r&0x3|0x8);returnv.toString(16);});}register(handler){consttoken=this.uuidv4();this._handlers[token]=handler;this._emitter.on(this._eventName,handler);returntoken;}unregister(token){if(tokeninthis._handlers){this._emitter.off(this._eventName,this._handlers[token]);this._handlers[token]=undefined;returntrue;}returnfalse;}};return_SimpleEventWrapper;})(window);/** usage example - wrap "legendModified" event **/letlegendModified=newSimpleEventWrapper($GP.events.__activeLegendHandle,"legendModified");lettoken1=legendModified.register((eventName,args)=>console.log(eventName,args));// legendModified.unregister(token1);
Comments (0)
HTTPSSSH
You can clone a snippet to your computer for local editing.
Learn more.