react-native-web-internals
Version:
React Native for Web
91 lines (90 loc) • 7.12 kB
JavaScript
var __create = Object.create;
var __defProp = Object.defineProperty;
var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
var __getOwnPropNames = Object.getOwnPropertyNames;
var __getProtoOf = Object.getPrototypeOf, __hasOwnProp = Object.prototype.hasOwnProperty;
var __export = (target, all) => {
for (var name in all)
__defProp(target, name, { get: all[name], enumerable: !0 });
}, __copyProps = (to, from, except, desc) => {
if (from && typeof from == "object" || typeof from == "function")
for (let key of __getOwnPropNames(from))
!__hasOwnProp.call(to, key) && key !== except && __defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });
return to;
};
var __toESM = (mod, isNodeMode, target) => (target = mod != null ? __create(__getProtoOf(mod)) : {}, __copyProps(
// If the importer is in node compatibility mode or this is not an ESM
// file that has been converted to a CommonJS file using a Babel-
// compatible transform (i.e. "__esModule" has not been set), then set
// "default" to the CommonJS "module.exports" for node compatibility.
isNodeMode || !mod || !mod.__esModule ? __defProp(target, "default", { value: mod, enumerable: !0 }) : target,
mod
)), __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: !0 }), mod);
var modality_exports = {};
__export(modality_exports, {
addModalityListener: () => addModalityListener,
getActiveModality: () => getActiveModality,
getModality: () => getModality,
testOnly_resetActiveModality: () => testOnly_resetActiveModality
});
module.exports = __toCommonJS(modality_exports);
var import_canUseDOM = __toESM(require("../canUseDOM")), import_createEventHandle = __toESM(require("../createEventHandle/index"));
const supportsPointerEvent = () => typeof window < "u" && window.PointerEvent != null;
let activeModality = "keyboard", modality = "keyboard", previousModality, previousActiveModality, isEmulatingMouseEvents = !1;
const listeners = /* @__PURE__ */ new Set(), KEYBOARD = "keyboard", MOUSE = "mouse", TOUCH = "touch", BLUR = "blur", CONTEXTMENU = "contextmenu", FOCUS = "focus", KEYDOWN = "keydown", MOUSEDOWN = "mousedown", MOUSEMOVE = "mousemove", MOUSEUP = "mouseup", POINTERDOWN = "pointerdown", POINTERMOVE = "pointermove", SCROLL = "scroll", SELECTIONCHANGE = "selectionchange", TOUCHCANCEL = "touchcancel", TOUCHMOVE = "touchmove", TOUCHSTART = "touchstart", VISIBILITYCHANGE = "visibilitychange", bubbleOptions = { passive: !0 }, captureOptions = { capture: !0, passive: !0 }, addBlurListener = (0, import_createEventHandle.default)(BLUR, bubbleOptions), addFocusListener = (0, import_createEventHandle.default)(FOCUS, bubbleOptions), addVisibilityChangeListener = (0, import_createEventHandle.default)(VISIBILITYCHANGE, captureOptions), addKeyDownListener = (0, import_createEventHandle.default)(KEYDOWN, captureOptions), addPointerDownListener = (0, import_createEventHandle.default)(POINTERDOWN, captureOptions), addPointerMoveListener = (0, import_createEventHandle.default)(POINTERMOVE, captureOptions), addContextMenuListener = (0, import_createEventHandle.default)(CONTEXTMENU, captureOptions), addMouseDownListener = (0, import_createEventHandle.default)(MOUSEDOWN, captureOptions), addMouseMoveListener = (0, import_createEventHandle.default)(MOUSEMOVE, captureOptions), addMouseUpListener = (0, import_createEventHandle.default)(MOUSEUP, captureOptions), addScrollListener = (0, import_createEventHandle.default)(SCROLL, captureOptions), addSelectiomChangeListener = (0, import_createEventHandle.default)(SELECTIONCHANGE, captureOptions), addTouchCancelListener = (0, import_createEventHandle.default)(TOUCHCANCEL, captureOptions), addTouchMoveListener = (0, import_createEventHandle.default)(TOUCHMOVE, captureOptions), addTouchStartListener = (0, import_createEventHandle.default)(TOUCHSTART, captureOptions);
function restoreModality() {
(previousModality != null || previousActiveModality != null) && (previousModality != null && (modality = previousModality, previousModality = null), previousActiveModality != null && (activeModality = previousActiveModality, previousActiveModality = null), callListeners());
}
function onBlurWindow() {
previousModality = modality, previousActiveModality = activeModality, activeModality = KEYBOARD, modality = KEYBOARD, callListeners(), isEmulatingMouseEvents = !1;
}
function onFocusWindow() {
restoreModality();
}
function onKeyDown(event) {
event.metaKey || event.altKey || event.ctrlKey || modality !== KEYBOARD && (modality = KEYBOARD, activeModality = KEYBOARD, callListeners());
}
function onVisibilityChange() {
document.visibilityState !== "hidden" && restoreModality();
}
function onPointerish(event) {
const eventType = event.type;
if (supportsPointerEvent()) {
if (eventType === POINTERDOWN) {
activeModality !== event.pointerType && (modality = event.pointerType, activeModality = event.pointerType, callListeners());
return;
}
if (eventType === POINTERMOVE) {
modality !== event.pointerType && (modality = event.pointerType, callListeners());
return;
}
} else {
if (isEmulatingMouseEvents || (eventType === MOUSEDOWN && activeModality !== MOUSE && (modality = MOUSE, activeModality = MOUSE, callListeners()), eventType === MOUSEMOVE && modality !== MOUSE && (modality = MOUSE, callListeners())), eventType === TOUCHSTART) {
isEmulatingMouseEvents = !0, event.touches && event.touches.length > 1 && (isEmulatingMouseEvents = !1), activeModality !== TOUCH && (modality = TOUCH, activeModality = TOUCH, callListeners());
return;
}
(eventType === CONTEXTMENU || eventType === MOUSEUP || eventType === SELECTIONCHANGE || eventType === SCROLL || eventType === TOUCHCANCEL || eventType === TOUCHMOVE) && (isEmulatingMouseEvents = !1);
}
}
import_canUseDOM.default && (addBlurListener(window, onBlurWindow), addFocusListener(window, onFocusWindow), addKeyDownListener(document, onKeyDown), addPointerDownListener(document, onPointerish), addPointerMoveListener(document, onPointerish), addVisibilityChangeListener(document, onVisibilityChange), addContextMenuListener(document, onPointerish), addMouseDownListener(document, onPointerish), addMouseMoveListener(document, onPointerish), addMouseUpListener(document, onPointerish), addTouchCancelListener(document, onPointerish), addTouchMoveListener(document, onPointerish), addTouchStartListener(document, onPointerish), addSelectiomChangeListener(document, onPointerish), addScrollListener(document, onPointerish));
function callListeners() {
const value = { activeModality, modality };
listeners.forEach((listener) => {
listener(value);
});
}
function getActiveModality() {
return activeModality;
}
function getModality() {
return modality;
}
function addModalityListener(listener) {
return listeners.add(listener), () => {
listeners.delete(listener);
};
}
function testOnly_resetActiveModality() {
isEmulatingMouseEvents = !1, activeModality = KEYBOARD, modality = KEYBOARD;
}
//# sourceMappingURL=index.js.map