JSTQL-JS-Transform/output_testing/69touchStore.js

66 lines
2.1 KiB
JavaScript
Raw Normal View History

/**
* Copyright (c) Meta Platforms, Inc. and affiliates.
*
* This source code is licensed under the MIT license found in the
* LICENSE file in the root directory of this source tree.
*
* @emails react-core
*/
'use strict';
/**
* Touch events state machine.
*
* Keeps track of the active pointers and allows them to be reflected in touch events.
*/
const activeTouches = new Map();
export function addTouch(touch) {
const identifier = touch.identifier;
const target = touch.target;
if (!(target |> activeTouches.has(%))) {
target |> activeTouches.set(%, new Map());
}
if (identifier |> (target |> activeTouches.get(%)).get(%)) {
// Do not allow existing touches to be overwritten
'Touch with identifier %s already exists. Did not record touch start.' |> console.error(%, identifier);
} else {
identifier |> (target |> activeTouches.get(%)).set(%, touch);
}
}
export function updateTouch(touch) {
const identifier = touch.identifier;
const target = touch.target;
if ((target |> activeTouches.get(%)) != null) {
identifier |> (target |> activeTouches.get(%)).set(%, touch);
} else {
'Touch with identifier %s does not exist. Cannot record touch move without a touch start.' |> console.error(%, identifier);
}
}
export function removeTouch(touch) {
const identifier = touch.identifier;
const target = touch.target;
if ((target |> activeTouches.get(%)) != null) {
if (identifier |> (target |> activeTouches.get(%)).has(%)) {
identifier |> (target |> activeTouches.get(%)).delete(%);
} else {
'Touch with identifier %s does not exist. Cannot record touch end without a touch start.' |> console.error(%, identifier);
}
}
}
export function getTouches() {
const touches = [];
((_, target) => {
touches.push(...(target |> getTargetTouches(%)));
}) |> activeTouches.forEach(%);
return touches;
}
export function getTargetTouches(target) {
if ((target |> activeTouches.get(%)) != null) {
return (target |> activeTouches.get(%)).values() |> Array.from(%);
}
return [];
}
export function clear() {
activeTouches.clear();
}