Files
coopgo/node_modules/consolidated-events/src/eventOptionsKey.js
sgauthier 6e64e138e2
All checks were successful
Publish To Prod / deploy_and_publish (push) Successful in 35s
planning
2024-10-14 09:15:30 +02:00

31 lines
1.0 KiB
JavaScript

/* eslint-disable no-bitwise */
/**
* Generate a unique key for any set of event options
*/
export default function eventOptionsKey(normalizedEventOptions) {
if (!normalizedEventOptions) {
return 0;
}
// If the browser does not support passive event listeners, the normalized
// event options will be a boolean.
if (normalizedEventOptions === true) {
return 100;
}
// At this point, the browser supports passive event listeners, so we expect
// the event options to be an object with possible properties of capture,
// passive, and once.
//
// We want to consistently return the same value, regardless of the order of
// these properties, so let's use binary maths to assign each property to a
// bit, and then add those together (with an offset to account for the
// booleans at the beginning of this function).
const capture = normalizedEventOptions.capture << 0;
const passive = normalizedEventOptions.passive << 1;
const once = normalizedEventOptions.once << 2;
return capture + passive + once;
}