planning
All checks were successful
Publish To Prod / deploy_and_publish (push) Successful in 35s

This commit is contained in:
2024-10-14 09:15:30 +02:00
parent bcba00a730
commit 6e64e138e2
21059 changed files with 2317811 additions and 1 deletions

View File

@@ -0,0 +1,30 @@
/* 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;
}