|
|
@@ -1,99 +0,0 @@ |
|
|
|
import {EventCaller} from '/app/js/EventCaller.js' |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
function handle_emitter(event){ |
|
|
|
var el = event.target; |
|
|
|
if (el.hasAttribute("emit")){ |
|
|
|
var args = [el.getAttribute("emit")]; |
|
|
|
if (el.hasAttribute("emit-args")){ |
|
|
|
try { |
|
|
|
var j = JSON.parse(el.getAttribute("emit-args")); |
|
|
|
if (j instanceof Array){ |
|
|
|
args.concat(j); |
|
|
|
} else { |
|
|
|
args.push(j); |
|
|
|
} |
|
|
|
} catch (e) { |
|
|
|
console.log("Failed to emit '" + args[0] + "'. Arguments not in valid JSON form."); |
|
|
|
return; |
|
|
|
} |
|
|
|
} |
|
|
|
EventWindow.instance.emit.apply(EventWindow.instance, args); |
|
|
|
} |
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
/** |
|
|
|
* Wraps the browser's window object around the EventCaller allowing the user to connect to system events |
|
|
|
* by listening for those events (ex: "onclick", "onresize", etc). |
|
|
|
* |
|
|
|
* Users should not directly set the window event handler functions if using this class. |
|
|
|
*/ |
|
|
|
class EventWindow extends EventCaller{ |
|
|
|
constructor(){ |
|
|
|
super(); |
|
|
|
if (!EventWindow.instance) |
|
|
|
EventWindow.instance = this; |
|
|
|
return EventWindow.instance; |
|
|
|
} |
|
|
|
|
|
|
|
get emitter_attributes_enabled(){ |
|
|
|
return this.is_listening("onclick", handle_emitter); |
|
|
|
} |
|
|
|
|
|
|
|
enable_emitter_attributes(enable=true){ |
|
|
|
if (enable === true){ |
|
|
|
this.listen("onclick", handle_emitter); |
|
|
|
} else { |
|
|
|
this.unlisten("onclick", handle_emitter); |
|
|
|
} |
|
|
|
} |
|
|
|
|
|
|
|
listen(eventName, callback, owner=null, once=false){ |
|
|
|
if (window.hasOwnProperty(eventName)){ |
|
|
|
if (window[eventName] === null || typeof(window[eventName]) === 'undefined'){ |
|
|
|
window[eventName] = (function(event){ |
|
|
|
this.emit(eventName, event); |
|
|
|
}).bind(this); |
|
|
|
} |
|
|
|
} |
|
|
|
super.listen(eventName, callback, owner, once); |
|
|
|
return this; |
|
|
|
} |
|
|
|
|
|
|
|
unlisten(eventName, callback, owner=null){ |
|
|
|
super.unlisten(eventName, callback, owner); |
|
|
|
if (window.hasOwnProperty(eventName)){ |
|
|
|
if (super.event_listener_count(eventName) == 0){ |
|
|
|
window[eventName] = undefined; |
|
|
|
} |
|
|
|
} |
|
|
|
return this; |
|
|
|
} |
|
|
|
|
|
|
|
unlisten_event(eventName){ |
|
|
|
super.unlisten_event(eventName); |
|
|
|
if (window.hasOwnProperty(eventName)){ |
|
|
|
window[eventName] = undefined; |
|
|
|
} |
|
|
|
return this; |
|
|
|
} |
|
|
|
|
|
|
|
unlisten_all(){ |
|
|
|
var we = this.watchedEvents; |
|
|
|
super.unlisten_all(); |
|
|
|
for (var i=0; i < we.length; i++){ |
|
|
|
if (window.hasOwnProperty(we[i])){ |
|
|
|
window[we[i]] = undefined; |
|
|
|
} |
|
|
|
} |
|
|
|
return this; |
|
|
|
} |
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
const instance = new EventWindow(); |
|
|
|
//Object.freeze(instance); |
|
|
|
export default instance; |
|
|
|
|