From c5ba5b0456a711d157e317f220e9c739226e7f50 Mon Sep 17 00:00:00 2001 From: Joar Wandborg Date: Tue, 10 Jan 2012 01:54:37 +0100 Subject: Installed leaflet in extlib --- extlib/leaflet/src/core/Events.js | 58 +++++++++++++++++++++++++++++++++++++++ 1 file changed, 58 insertions(+) create mode 100644 extlib/leaflet/src/core/Events.js (limited to 'extlib/leaflet/src/core/Events.js') diff --git a/extlib/leaflet/src/core/Events.js b/extlib/leaflet/src/core/Events.js new file mode 100644 index 00000000..53ea20fa --- /dev/null +++ b/extlib/leaflet/src/core/Events.js @@ -0,0 +1,58 @@ +/* + * L.Mixin.Events adds custom events functionality to Leaflet classes + */ + +L.Mixin = {}; + +L.Mixin.Events = { + addEventListener: function(/*String*/ type, /*Function*/ fn, /*(optional) Object*/ context) { + var events = this._leaflet_events = this._leaflet_events || {}; + events[type] = events[type] || []; + events[type].push({ + action: fn, + context: context + }); + return this; + }, + + hasEventListeners: function(/*String*/ type) /*-> Boolean*/ { + var k = '_leaflet_events'; + return (k in this) && (type in this[k]) && (this[k][type].length > 0); + }, + + removeEventListener: function(/*String*/ type, /*Function*/ fn, /*(optional) Object*/ context) { + if (!this.hasEventListeners(type)) { return this; } + + for (var i = 0, events = this._leaflet_events, len = events[type].length; i < len; i++) { + if ( + (events[type][i].action === fn) && + (!context || (events[type][i].context === context)) + ) { + events[type].splice(i, 1); + return this; + } + } + return this; + }, + + fireEvent: function(/*String*/ type, /*(optional) Object*/ data) { + if (!this.hasEventListeners(type)) { return; } + + var event = L.Util.extend({ + type: type, + target: this + }, data); + + var listeners = this._leaflet_events[type].slice(); + + for (var i = 0, len = listeners.length; i < len; i++) { + listeners[i].action.call(listeners[i].context || this, event); + } + + return this; + } +}; + +L.Mixin.Events.on = L.Mixin.Events.addEventListener; +L.Mixin.Events.off = L.Mixin.Events.removeEventListener; +L.Mixin.Events.fire = L.Mixin.Events.fireEvent; \ No newline at end of file -- cgit v1.2.3