| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657 |
- /* eslint-disable no-empty */
- /* eslint-disable getter-return */
- /* eslint-disable import/no-mutable-exports */
- import { isServer } from '.';
- type EventHanlder = (event?: Event) => void;
- export let supportsPassive = false;
- if (!isServer) {
- try {
- const opts = {};
- Object.defineProperty(opts, 'passive', {
- get() {
- /* istanbul ignore next */
- supportsPassive = true;
- }
- });
- window.addEventListener('test-passive', null as any, opts);
- } catch (e) {}
- }
- export function on(
- target: HTMLElement,
- event: string,
- handler: EventHanlder,
- passive = false
- ) {
- if (!isServer) {
- target.addEventListener(
- event,
- handler,
- supportsPassive ? { capture: false, passive } : false
- );
- }
- }
- export function off(target: HTMLElement, event: string, handler: EventHanlder) {
- if (!isServer) {
- target.removeEventListener(event, handler);
- }
- }
- export function stopPropagation(event: Event) {
- event.stopPropagation();
- }
- export function preventDefault(event: Event, isStopPropagation?: boolean) {
- /* istanbul ignore else */
- if (typeof event.cancelable !== 'boolean' || event.cancelable) {
- event.preventDefault();
- }
- if (isStopPropagation) {
- stopPropagation(event);
- }
- }
|