Skip to content

Commit 8763b3a

Browse files
author
Natalia Kowalczyk
committed
Merge remote-tracking branch 'origin/fix-event-handling'
2 parents d8689fa + 1b137f6 commit 8763b3a

2 files changed

Lines changed: 24 additions & 49 deletions

File tree

lib/event-handler/index.js

Lines changed: 23 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -1,14 +1,14 @@
1-
const makeMapListenersBag = require('./listeners-bag');
1+
const makeListenersBag = require('./listeners-bag');
22
const makeCountingSet = require('./counting-set');
33

44
module.exports = eventHandler;
55

66
const mouseEvents = asMap(['mouseenter', 'mouseover', 'mouseleave']);
77

88
function eventHandler(_m) {
9-
const listenersBag = makeMapListenersBag();
10-
9+
const listenersBag = makeListenersBag();
1110
const activeTypes = makeCountingSet();
11+
const holdFireSet = new Set();
1212

1313
function on(type, listener) {
1414
if (listenersBag.add(type, listener)) {
@@ -59,22 +59,38 @@ function eventHandler(_m) {
5959
listenersBag.getListeners(type).forEach(listener => listener.call(_m, e));
6060
}
6161

62+
function fireEventUnlessHold(type, e) {
63+
if (!holdFireSet.has(type)) {
64+
fireEvent(type, e);
65+
}
66+
}
67+
6268
function onmousemove(e) {
63-
fireEvent('mousemove', e);
69+
fireEventUnlessHold('mousemove', e);
6470
}
6571

6672
function onmouseout(e) {
67-
fireEvent('mouseout', e);
73+
fireEventUnlessHold('mouseout', e);
6874
}
6975

7076
function onevent(e) {
7177
const { type } = e;
72-
fireEvent(type, e);
78+
fireEventUnlessHold(type, e);
79+
}
80+
81+
function holdFire(type, set) {
82+
if (set) {
83+
holdFireSet.add(type);
84+
} else {
85+
holdFireSet.delete(type);
86+
}
7387
}
7488

7589
return {
7690
on,
77-
off
91+
off,
92+
fireEvent,
93+
holdFire
7894
};
7995
}
8096

lib/object.js

Lines changed: 1 addition & 42 deletions
Original file line numberDiff line numberDiff line change
@@ -43,7 +43,7 @@ function ll(e) {
4343
}
4444
}
4545

46-
function init(self, options) {
46+
function init(self) {
4747
let listeners = {};
4848

4949
function on(event, fn) {
@@ -106,51 +106,10 @@ function init(self, options) {
106106
}
107107
}
108108

109-
function add(map) {
110-
if (!self._m) {
111-
self._m = map._m;
112-
options.onadd(map);
113-
self._eventHandler = map._eventHandler;
114-
Object.keys(listeners).forEach(function (event) {
115-
if (!drag[event]) {
116-
listeners[event].forEach(function (listener) {
117-
self._eventHandler.on(listener.event, listener.handler);
118-
});
119-
}
120-
});
121-
}
122-
return self;
123-
}
124-
125-
function remove() {
126-
if (self._m) {
127-
Object.keys(listeners).forEach(function (event) {
128-
if (!drag[event]) {
129-
listeners[event].forEach(function (listener) {
130-
self._eventHandler.off(listener.event, listener.handler);
131-
});
132-
}
133-
});
134-
delete self._eventHandler;
135-
options.onremove();
136-
delete self._m;
137-
}
138-
return self;
139-
}
140-
141109
self.on = on;
142110
self.off = off;
143111
self.fire = fire;
144112
self.ll = self.ll || ll;
145113

146-
if (options) {
147-
if (options.onadd) {
148-
self.add = add;
149-
}
150-
if (options.onremove) {
151-
self.remove = remove;
152-
}
153-
}
154-
155114
return self;
156115
}

0 commit comments

Comments
 (0)