UNPKG

@miyauci/get-event-listeners

Version:
101 lines (100 loc) 3.93 kB
"use strict"; var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) { if (k2 === undefined) k2 = k; var desc = Object.getOwnPropertyDescriptor(m, k); if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) { desc = { enumerable: true, get: function() { return m[k]; } }; } Object.defineProperty(o, k2, desc); }) : (function(o, m, k, k2) { if (k2 === undefined) k2 = k; o[k2] = m[k]; })); var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) { Object.defineProperty(o, "default", { enumerable: true, value: v }); }) : function(o, v) { o["default"] = v; }); var __importStar = (this && this.__importStar) || function (mod) { if (mod && mod.__esModule) return mod; var result = {}; if (mod != null) for (var k in mod) if (k !== "default" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k); __setModuleDefault(result, mod); return result; }; Object.defineProperty(exports, "__esModule", { value: true }); exports.toKey = exports.toHandler = exports.isWindow = exports.isNodeLike = exports.defaultPassiveValue = exports.flatOptionsMore = exports.flatOptions = void 0; // Copyright © 2023 Tomoki Miyauchi. All rights reserved. MIT license. // This module is browser compatible. const dntShim = __importStar(require("./_dnt.shims.js")); const deps_js_1 = require("./deps.js"); /** To flatten {@linkcode options}. * @see https://dom.spec.whatwg.org/#concept-flatten-options */ function flatOptions(options) { if ((0, deps_js_1.isBoolean)(options)) return options; return Boolean(options?.capture); } exports.flatOptions = flatOptions; /** To flatten {@linkcode options} more. * @see https://dom.spec.whatwg.org/#event-flatten-more */ function flatOptionsMore(options) { const capture = flatOptions(options); const { once = false, passive = null, signal = null } = (0, deps_js_1.isObject)(options) ? options : {}; return { capture, once, passive, signal }; } exports.flatOptionsMore = flatOptionsMore; /** Return default passive value. * @see https://dom.spec.whatwg.org/#default-passive-value */ function defaultPassiveValue(type, target) { if (!touchOrUiEvents.has(type)) return false; if (isWindow(target)) return true; if (!isNodeLike(target)) return false; // target is Document if (!target.ownerDocument) { return target === Reflect.get(dntShim.dntGlobalThis, "document"); } return ("documentElement" in target.ownerDocument && target.ownerDocument.documentElement === target || // target is HTML document "body" in target.ownerDocument && target.ownerDocument.body === target); // target is body } exports.defaultPassiveValue = defaultPassiveValue; const touchOrUiEvents = /*@__PURE__*/ new Set([ "touchstart", "touchmove", "wheel", "mousewheel", ]); /** Whether the {@linkcode input} is {@linkcode NodeLike} or not. */ function isNodeLike(input) { return "ownerDocument" in input && typeof input.ownerDocument === "object"; } exports.isNodeLike = isNodeLike; /** Whether the {@linkcode input} is {@linkcode Window} or not. * This works universally. */ function isWindow(input) { return globalThis.Window && input instanceof globalThis.Window; } exports.isWindow = isWindow; /** {@linkcode listener} to Function. * if {@linkcode listener} is function, return it; otherwise return bound `handleEvent`. */ function toHandler(listener) { return (0, deps_js_1.isFunction)(listener) ? listener : listener.handleEvent.bind(listener); } exports.toHandler = toHandler; /** Return {@linkcode listener} representation key. */ function toKey(listener) { return (0, deps_js_1.compositeKey)(listener.callback, listener.type, listener.capture); } exports.toKey = toKey;