UNPKG

openfl

Version:

A fast, productive library for 2D cross-platform development.

251 lines (233 loc) 7.65 kB
// Class: openfl.events.EventDispatcher var $global = typeof window != "undefined" ? window : typeof global != "undefined" ? global : typeof self != "undefined" ? self : this $global.Object.defineProperty(exports, "__esModule", {value: true}); var __map_reserved = {}; // Imports var $hxClasses = require("./../../hxClasses_stub").default; var $hxEnums = require("./../../hxEnums_stub").default; var $import = require("./../../import_stub").default; function openfl_events_IEventDispatcher() {return require("./../../openfl/events/IEventDispatcher");} function haxe_ds_StringMap() {return require("./../../haxe/ds/StringMap");} function openfl_events__$EventDispatcher_Listener() {return require("./../../openfl/events/_EventDispatcher/Listener");} function openfl_events__$EventDispatcher_DispatchIterator() {return require("./../../openfl/events/_EventDispatcher/DispatchIterator");} function Type() {return require("./../../Type");} function openfl_Lib() {return require("./../../openfl/Lib");} function haxe_CallStack() {return require("./../../haxe/CallStack");} function js__$Boot_HaxeError() {return require("./../../js/_Boot/HaxeError");} function openfl_events_UncaughtErrorEvent() {return require("./../../openfl/events/UncaughtErrorEvent");} function HxOverrides() {return require("./../../HxOverrides");} // Constructor var EventDispatcher = function(target) { if(target != null) { this.__targetDispatcher = target; } } // Meta EventDispatcher.__name__ = "openfl.events.EventDispatcher"; EventDispatcher.__isInterface__ = false; EventDispatcher.__interfaces__ = [(openfl_events_IEventDispatcher().default)]; EventDispatcher.prototype = { addEventListener: function(type,listener,useCapture,priority,useWeakReference) { if(useWeakReference == null) { useWeakReference = false; } if(priority == null) { priority = 0; } if(useCapture == null) { useCapture = false; } if(listener == null) { return; } if(this.__eventMap == null) { this.__eventMap = new (haxe_ds_StringMap().default)(); this.__iterators = new (haxe_ds_StringMap().default)(); } if(!this.__eventMap.exists(type)) { var list = []; list.push(new (openfl_events__$EventDispatcher_Listener().default)(listener,useCapture,priority,useWeakReference)); var iterator = new (openfl_events__$EventDispatcher_DispatchIterator().default)(list); this.__eventMap.set(type,list); this.__iterators.set(type,[iterator]); } else { var list1 = this.__eventMap.get(type); var _g = 0; var _g1 = list1.length; while(_g < _g1) { var i = _g++; if(list1[i].match(listener,useCapture)) { return; } } var iterators = this.__iterators.get(type); var _g2 = 0; while(_g2 < iterators.length) { var iterator1 = iterators[_g2]; ++_g2; if(iterator1.active) { iterator1.copy(); } } this.__addListenerByPriority(list1,new (openfl_events__$EventDispatcher_Listener().default)(listener,useCapture,priority,useWeakReference)); } }, dispatchEvent: function(event) { if(this.__targetDispatcher != null) { event.target = this.__targetDispatcher; } else { event.target = this; } return this.__dispatchEvent(event); }, hasEventListener: function(type) { if(this.__eventMap == null) { return false; } return this.__eventMap.exists(type); }, removeEventListener: function(type,listener,useCapture) { if(useCapture == null) { useCapture = false; } if(this.__eventMap == null || listener == null) { return; } var list = this.__eventMap.get(type); if(list == null) { return; } var iterators = this.__iterators.get(type); var _g = 0; var _g1 = list.length; while(_g < _g1) { var i = _g++; if(list[i].match(listener,useCapture)) { var _g2 = 0; while(_g2 < iterators.length) { var iterator = iterators[_g2]; ++_g2; iterator.remove(list[i],i); } list.splice(i,1); break; } } if(list.length == 0) { this.__eventMap.remove(type); this.__iterators.remove(type); } if(!this.__eventMap.iterator().hasNext()) { this.__eventMap = null; this.__iterators = null; } }, toString: function() { var full = (Type().default).getClassName((Type().default).getClass(this)); var short = full.split(".").pop(); return "[object " + short + "]"; }, willTrigger: function(type) { return this.hasEventListener(type); }, __dispatchEvent: function(event) { if(this.__eventMap == null || event == null) { return true; } var type = event.type; var list = this.__eventMap.get(type); if(list == null) { return true; } if(event.target == null) { if(this.__targetDispatcher != null) { event.target = this.__targetDispatcher; } else { event.target = this; } } event.currentTarget = this; var capture = event.eventPhase == 1; var iterators = this.__iterators.get(type); var iterator = iterators[0]; if(iterator.active) { iterator = new (openfl_events__$EventDispatcher_DispatchIterator().default)(list); iterators.push(iterator); } iterator.start(); var listener = iterator; while(listener.hasNext()) { var listener1 = listener.next(); if(listener1 == null) { continue; } if(listener1.useCapture == capture) { if(listener1.useWeakReference && listener1.weakRefCallback != null) { var weakCallback = listener1.weakRefCallback.deref(); if(weakCallback == null) { var indexToRemove = iterator.index - 1; list.splice(indexToRemove,1); iterator.remove(listener1,indexToRemove); } else if((openfl_Lib().default).get_current() != null && (openfl_Lib().default).get_current().stage != null && (openfl_Lib().default).get_current().stage.__uncaughtErrorEvents.__enabled) { try { weakCallback(event); } catch( e ) { (haxe_CallStack().default).lastException = e; var e1 = ((e) instanceof (js__$Boot_HaxeError().default)) ? e.val : e; if(!((event) instanceof (openfl_events_UncaughtErrorEvent().default))) { (openfl_Lib().default).get_current().stage.__handleError(e1); } } } else { weakCallback(event); } } else if((openfl_Lib().default).get_current() != null && (openfl_Lib().default).get_current().stage != null && (openfl_Lib().default).get_current().stage.__uncaughtErrorEvents.__enabled) { try { listener1.callback(event); } catch( e2 ) { (haxe_CallStack().default).lastException = e2; var e3 = ((e2) instanceof (js__$Boot_HaxeError().default)) ? e2.val : e2; if(!((event) instanceof (openfl_events_UncaughtErrorEvent().default))) { (openfl_Lib().default).get_current().stage.__handleError(e3); } } } else { listener1.callback(event); } if(event.__isCanceledNow) { break; } } } iterator.stop(); if(iterator != iterators[0]) { (HxOverrides().default).remove(iterators,iterator); } else { iterator.reset(list); } return !event.isDefaultPrevented(); }, __removeAllListeners: function() { this.__eventMap = null; this.__iterators = null; }, __addListenerByPriority: function(list,listener) { var numElements = list.length; var addAtPosition = numElements; var _g = 0; var _g1 = numElements; while(_g < _g1) { var i = _g++; if(list[i].priority < listener.priority) { addAtPosition = i; break; } } list.splice(addAtPosition,0,listener); } }; EventDispatcher.prototype.__class__ = EventDispatcher.prototype.constructor = $hxClasses["openfl.events.EventDispatcher"] = EventDispatcher; // Init // Statics // Export exports.default = EventDispatcher;