mjolnir.js
Advanced tools
Comparing version 2.2.1 to 2.3.0-beta.1
# Change Log | ||
#### [2.3.1] - Aug 3, 2019 | ||
#### [2.3.0] - Aug 3, 2019 | ||
- Add priority option to event handlers (#54) | ||
#### [2.2.1] - Aug 3, 2019 | ||
- Revert "Avoid crash if imported in a web worker (#29)" (#49) | ||
#### [2.3.0] - Aug 2, 2019 | ||
#### [2.2.0] - Aug 2, 2019 | ||
@@ -12,3 +16,3 @@ - Use ocular-dev-tools (#43) | ||
#### [2.2.2] - June 5, 2019 | ||
#### [2.1.2] - June 5, 2019 | ||
@@ -15,0 +19,0 @@ - Fix undefind userAgent (#40) |
@@ -161,9 +161,9 @@ "use strict"; | ||
key: "on", | ||
value: function on(event, handler, srcElement) { | ||
this._addEventHandler(event, handler, srcElement, false); | ||
value: function on(event, handler, opts) { | ||
this._addEventHandler(event, handler, opts, false); | ||
} | ||
}, { | ||
key: "once", | ||
value: function once(event, handler, srcElement) { | ||
this._addEventHandler(event, handler, srcElement, true); | ||
value: function once(event, handler, opts) { | ||
this._addEventHandler(event, handler, opts, true); | ||
} | ||
@@ -213,8 +213,8 @@ }, { | ||
key: "_addEventHandler", | ||
value: function _addEventHandler(event, handler, srcElement, once) { | ||
value: function _addEventHandler(event, handler, opts, once) { | ||
if (typeof event !== 'string') { | ||
srcElement = handler; | ||
opts = handler; | ||
for (var eventName in event) { | ||
this._addEventHandler(eventName, event[eventName], srcElement, once); | ||
this._addEventHandler(eventName, event[eventName], opts, once); | ||
} | ||
@@ -242,3 +242,3 @@ | ||
eventRegistrar.add(event, handler, srcElement, once); | ||
eventRegistrar.add(event, handler, opts, once); | ||
} | ||
@@ -245,0 +245,0 @@ }, { |
@@ -10,2 +10,4 @@ "use strict"; | ||
var _typeof2 = _interopRequireDefault(require("@babel/runtime/helpers/typeof")); | ||
var _classCallCheck2 = _interopRequireDefault(require("@babel/runtime/helpers/classCallCheck")); | ||
@@ -17,2 +19,7 @@ | ||
var DEFAULT_OPTIONS = { | ||
srcElement: 'root', | ||
priority: 0 | ||
}; | ||
var EventRegistrar = function () { | ||
@@ -34,4 +41,3 @@ function EventRegistrar(eventManager) { | ||
key: "add", | ||
value: function add(type, handler) { | ||
var srcElement = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : 'root'; | ||
value: function add(type, handler, opts) { | ||
var once = arguments.length > 3 && arguments[3] !== undefined ? arguments[3] : false; | ||
@@ -41,14 +47,35 @@ var handlers = this.handlers, | ||
if (!handlersByElement.has(srcElement)) { | ||
handlersByElement.set(srcElement, []); | ||
if (opts && ((0, _typeof2["default"])(opts) !== 'object' || opts.addEventListener)) { | ||
opts = { | ||
srcElement: opts | ||
}; | ||
} | ||
opts = opts ? Object.assign({}, DEFAULT_OPTIONS, opts) : DEFAULT_OPTIONS; | ||
var entries = handlersByElement.get(opts.srcElement); | ||
if (!entries) { | ||
entries = []; | ||
handlersByElement.set(opts.srcElement, entries); | ||
} | ||
var entry = { | ||
type: type, | ||
handler: handler, | ||
srcElement: srcElement, | ||
srcElement: opts.srcElement, | ||
priority: opts.priority, | ||
once: once | ||
}; | ||
handlers.push(entry); | ||
handlersByElement.get(srcElement).push(entry); | ||
var insertPosition = entries.length - 1; | ||
while (insertPosition >= 0) { | ||
if (entries[insertPosition].priority >= entry.priority) { | ||
break; | ||
} | ||
insertPosition--; | ||
} | ||
entries.splice(insertPosition + 1, 0, entry); | ||
} | ||
@@ -55,0 +82,0 @@ }, { |
@@ -113,8 +113,8 @@ import { Manager } from './utils/hammer'; | ||
on(event, handler, srcElement) { | ||
this._addEventHandler(event, handler, srcElement, false); | ||
on(event, handler, opts) { | ||
this._addEventHandler(event, handler, opts, false); | ||
} | ||
once(event, handler, srcElement) { | ||
this._addEventHandler(event, handler, srcElement, true); | ||
once(event, handler, opts) { | ||
this._addEventHandler(event, handler, opts, true); | ||
} | ||
@@ -163,8 +163,8 @@ | ||
_addEventHandler(event, handler, srcElement, once) { | ||
_addEventHandler(event, handler, opts, once) { | ||
if (typeof event !== 'string') { | ||
srcElement = handler; | ||
opts = handler; | ||
for (var eventName in event) { | ||
this._addEventHandler(eventName, event[eventName], srcElement, once); | ||
this._addEventHandler(eventName, event[eventName], opts, once); | ||
} | ||
@@ -194,3 +194,3 @@ | ||
eventRegistrar.add(event, handler, srcElement, once); | ||
eventRegistrar.add(event, handler, opts, once); | ||
} | ||
@@ -197,0 +197,0 @@ |
import { whichButtons, getOffsetPosition } from './event-utils'; | ||
var DEFAULT_OPTIONS = { | ||
srcElement: 'root', | ||
priority: 0 | ||
}; | ||
export default class EventRegistrar { | ||
@@ -14,4 +18,3 @@ constructor(eventManager) { | ||
add(type, handler) { | ||
var srcElement = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : 'root'; | ||
add(type, handler, opts) { | ||
var once = arguments.length > 3 && arguments[3] !== undefined ? arguments[3] : false; | ||
@@ -23,14 +26,35 @@ var { | ||
if (!handlersByElement.has(srcElement)) { | ||
handlersByElement.set(srcElement, []); | ||
if (opts && (typeof opts !== 'object' || opts.addEventListener)) { | ||
opts = { | ||
srcElement: opts | ||
}; | ||
} | ||
opts = opts ? Object.assign({}, DEFAULT_OPTIONS, opts) : DEFAULT_OPTIONS; | ||
var entries = handlersByElement.get(opts.srcElement); | ||
if (!entries) { | ||
entries = []; | ||
handlersByElement.set(opts.srcElement, entries); | ||
} | ||
var entry = { | ||
type, | ||
handler, | ||
srcElement, | ||
srcElement: opts.srcElement, | ||
priority: opts.priority, | ||
once | ||
}; | ||
handlers.push(entry); | ||
handlersByElement.get(srcElement).push(entry); | ||
var insertPosition = entries.length - 1; | ||
while (insertPosition >= 0) { | ||
if (entries[insertPosition].priority >= entry.priority) { | ||
break; | ||
} | ||
insertPosition--; | ||
} | ||
entries.splice(insertPosition + 1, 0, entry); | ||
} | ||
@@ -37,0 +61,0 @@ |
@@ -144,9 +144,9 @@ import _slicedToArray from "@babel/runtime/helpers/esm/slicedToArray"; | ||
key: "on", | ||
value: function on(event, handler, srcElement) { | ||
this._addEventHandler(event, handler, srcElement, false); | ||
value: function on(event, handler, opts) { | ||
this._addEventHandler(event, handler, opts, false); | ||
} | ||
}, { | ||
key: "once", | ||
value: function once(event, handler, srcElement) { | ||
this._addEventHandler(event, handler, srcElement, true); | ||
value: function once(event, handler, opts) { | ||
this._addEventHandler(event, handler, opts, true); | ||
} | ||
@@ -196,8 +196,8 @@ }, { | ||
key: "_addEventHandler", | ||
value: function _addEventHandler(event, handler, srcElement, once) { | ||
value: function _addEventHandler(event, handler, opts, once) { | ||
if (typeof event !== 'string') { | ||
srcElement = handler; | ||
opts = handler; | ||
for (var eventName in event) { | ||
this._addEventHandler(eventName, event[eventName], srcElement, once); | ||
this._addEventHandler(eventName, event[eventName], opts, once); | ||
} | ||
@@ -225,3 +225,3 @@ | ||
eventRegistrar.add(event, handler, srcElement, once); | ||
eventRegistrar.add(event, handler, opts, once); | ||
} | ||
@@ -228,0 +228,0 @@ }, { |
@@ -0,4 +1,9 @@ | ||
import _typeof from "@babel/runtime/helpers/esm/typeof"; | ||
import _classCallCheck from "@babel/runtime/helpers/esm/classCallCheck"; | ||
import _createClass from "@babel/runtime/helpers/esm/createClass"; | ||
import { whichButtons, getOffsetPosition } from './event-utils'; | ||
var DEFAULT_OPTIONS = { | ||
srcElement: 'root', | ||
priority: 0 | ||
}; | ||
@@ -22,4 +27,3 @@ var EventRegistrar = function () { | ||
key: "add", | ||
value: function add(type, handler) { | ||
var srcElement = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : 'root'; | ||
value: function add(type, handler, opts) { | ||
var once = arguments.length > 3 && arguments[3] !== undefined ? arguments[3] : false; | ||
@@ -29,14 +33,35 @@ var handlers = this.handlers, | ||
if (!handlersByElement.has(srcElement)) { | ||
handlersByElement.set(srcElement, []); | ||
if (opts && (_typeof(opts) !== 'object' || opts.addEventListener)) { | ||
opts = { | ||
srcElement: opts | ||
}; | ||
} | ||
opts = opts ? Object.assign({}, DEFAULT_OPTIONS, opts) : DEFAULT_OPTIONS; | ||
var entries = handlersByElement.get(opts.srcElement); | ||
if (!entries) { | ||
entries = []; | ||
handlersByElement.set(opts.srcElement, entries); | ||
} | ||
var entry = { | ||
type: type, | ||
handler: handler, | ||
srcElement: srcElement, | ||
srcElement: opts.srcElement, | ||
priority: opts.priority, | ||
once: once | ||
}; | ||
handlers.push(entry); | ||
handlersByElement.get(srcElement).push(entry); | ||
var insertPosition = entries.length - 1; | ||
while (insertPosition >= 0) { | ||
if (entries[insertPosition].priority >= entry.priority) { | ||
break; | ||
} | ||
insertPosition--; | ||
} | ||
entries.splice(insertPosition + 1, 0, entry); | ||
} | ||
@@ -43,0 +68,0 @@ }, { |
{ | ||
"name": "mjolnir.js", | ||
"description": "An Event Manager", | ||
"version": "2.2.1", | ||
"version": "2.3.0-beta.1", | ||
"keywords": [ | ||
@@ -6,0 +6,0 @@ "hammerjs", |
@@ -162,9 +162,9 @@ // Copyright (c) 2017 Uber Technologies, Inc. | ||
// Register an event handler function to be called on `event`. | ||
on(event, handler, srcElement) { | ||
this._addEventHandler(event, handler, srcElement, false); | ||
on(event, handler, opts) { | ||
this._addEventHandler(event, handler, opts, false); | ||
} | ||
// Register an event handler function to be called on `event`, then remove it | ||
once(event, handler, srcElement) { | ||
this._addEventHandler(event, handler, srcElement, true); | ||
once(event, handler, opts) { | ||
this._addEventHandler(event, handler, opts, true); | ||
} | ||
@@ -226,8 +226,8 @@ | ||
*/ | ||
_addEventHandler(event, handler, srcElement, once) { | ||
_addEventHandler(event, handler, opts, once) { | ||
if (typeof event !== 'string') { | ||
srcElement = handler; | ||
opts = handler; | ||
// If `event` is a map, call `on()` for each entry. | ||
for (const eventName in event) { | ||
this._addEventHandler(eventName, event[eventName], srcElement, once); | ||
this._addEventHandler(eventName, event[eventName], opts, once); | ||
} | ||
@@ -253,3 +253,3 @@ return; | ||
this._toggleRecognizer(eventRegistrar.recognizerName, true); | ||
eventRegistrar.add(event, handler, srcElement, once); | ||
eventRegistrar.add(event, handler, opts, once); | ||
} | ||
@@ -256,0 +256,0 @@ |
import {whichButtons, getOffsetPosition} from './event-utils'; | ||
const DEFAULT_OPTIONS = { | ||
srcElement: 'root', | ||
priority: 0 | ||
}; | ||
export default class EventRegistrar { | ||
@@ -17,11 +22,29 @@ constructor(eventManager) { | ||
add(type, handler, srcElement = 'root', once = false) { | ||
add(type, handler, opts, once = false) { | ||
const {handlers, handlersByElement} = this; | ||
if (!handlersByElement.has(srcElement)) { | ||
handlersByElement.set(srcElement, []); | ||
if (opts && (typeof opts !== 'object' || opts.addEventListener)) { | ||
// is DOM element, backward compatibility | ||
opts = {srcElement: opts}; | ||
} | ||
const entry = {type, handler, srcElement, once}; | ||
opts = opts ? Object.assign({}, DEFAULT_OPTIONS, opts) : DEFAULT_OPTIONS; | ||
let entries = handlersByElement.get(opts.srcElement); | ||
if (!entries) { | ||
entries = []; | ||
handlersByElement.set(opts.srcElement, entries); | ||
} | ||
const entry = {type, handler, srcElement: opts.srcElement, priority: opts.priority, once}; | ||
handlers.push(entry); | ||
handlersByElement.get(srcElement).push(entry); | ||
// Sort handlers by descending priority | ||
// Handlers with the same priority are excuted in the order of registration | ||
let insertPosition = entries.length - 1; | ||
while (insertPosition >= 0) { | ||
if (entries[insertPosition].priority >= entry.priority) { | ||
break; | ||
} | ||
insertPosition--; | ||
} | ||
entries.splice(insertPosition + 1, 0, entry); | ||
} | ||
@@ -28,0 +51,0 @@ |
Sorry, the diff of this file is not supported yet
Sorry, the diff of this file is not supported yet
Sorry, the diff of this file is not supported yet
Sorry, the diff of this file is not supported yet
Sorry, the diff of this file is not supported yet
Sorry, the diff of this file is not supported yet
No v1
QualityPackage is not semver >=1. This means it is not stable and does not support ^ ranges.
Found 1 instance in 1 package
380452
4123
2