From 4af84b377fd6ad61a758f1b2b96f5d41febd077a Mon Sep 17 00:00:00 2001 From: Antonio Laguna Date: Fri, 15 Jul 2022 16:40:04 +0200 Subject: [PATCH 1/3] Reverting changes to `off` --- lib/off.js | 10 ++++++++-- 1 file changed, 8 insertions(+), 2 deletions(-) diff --git a/lib/off.js b/lib/off.js index 4e33ef3..1741511 100644 --- a/lib/off.js +++ b/lib/off.js @@ -4,14 +4,20 @@ function off(selector, event) { if (Array.isArray(selector)) { selector.forEach((item) => off(item, event)); } - if (!window._domassistevents || !window._domassistevents[`_${event}`]) { - return; + if (!window._domassistevents) { + window._domassistevents = {}; } // only disable events that were registered with domassist.on, // don't de-register events that were registered by other libs: const data = window._domassistevents[`_${event}`]; + + if (!data) { + return; + } + const el = find(selector); + if (el.length) { el.forEach((item) => { item.removeEventListener(event, data.cb, data.capture); From c6ba8005f6210dd17a2ee3dea66d622d9e7efcc3 Mon Sep 17 00:00:00 2001 From: Antonio Laguna Date: Fri, 15 Jul 2022 16:40:37 +0200 Subject: [PATCH 2/3] Ensuring `on` can accept options --- lib/on.js | 35 ++++++++++++++++------------------- 1 file changed, 16 insertions(+), 19 deletions(-) diff --git a/lib/on.js b/lib/on.js index f049545..701b640 100644 --- a/lib/on.js +++ b/lib/on.js @@ -1,25 +1,24 @@ import find from './find'; -function on(selector, event, cb, capture = false) { +function on(selector, event, cb, options) { if (Array.isArray(selector)) { - selector.forEach((item) => on(item, event, cb, capture)); + selector.forEach((item) => on(item, event, cb, options)); return; } - // scrolling events need the passive listener attached - // to satisfy SEO scrolling measurements: - if (['touchstart', 'touchmove', 'wheel', 'mousewheel', 'scroll'].indexOf(event) !== -1) { - if (capture === false) { - capture = { passive: true }; - } - if (capture === true) { - capture = { passive: true, capture: true }; - } - if (typeof capture === 'object') { - capture.passive = true; - } + let eventOptions = {}; + + if (typeof options === 'boolean') { + eventOptions.capture = options; + } else if (typeof options === 'object') { + eventOptions = { ...options }; } + const data = { + cb, + options: eventOptions + }; + // _domassistevents keeps track of events we registered // with 'domassist.on' so they can be deregistered by // 'domassist.off' without affecting events registered @@ -27,15 +26,13 @@ function on(selector, event, cb, capture = false) { if (!window._domassistevents) { window._domassistevents = {}; } - window._domassistevents[`_${event}`] = { - cb, - capture - }; + window._domassistevents[`_${event}`] = data; const el = find(selector); + if (el.length) { el.forEach((item) => { - item.addEventListener(event, cb, capture); + item.addEventListener(event, cb, eventOptions); }); } } From 2b1309abb780d30a45483354aff6c2fcf98bca35 Mon Sep 17 00:00:00 2001 From: Antonio Laguna Date: Fri, 15 Jul 2022 16:40:46 +0200 Subject: [PATCH 3/3] Ensuring `off` can handle new signatures --- lib/off.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/lib/off.js b/lib/off.js index 1741511..5dade3d 100644 --- a/lib/off.js +++ b/lib/off.js @@ -20,7 +20,7 @@ function off(selector, event) { if (el.length) { el.forEach((item) => { - item.removeEventListener(event, data.cb, data.capture); + item.removeEventListener(event, data.cb, data.options); }); } }