/** * 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. * * @flow */ import {canUseDOM} from 'shared/ExecutionEnvironment'; export let passiveBrowserEventsSupported: boolean = false; // Check if browser support events with passive listeners // https://developer.mozilla.org/en-US/docs/Web/API/EventTarget/addEventListener#Safely_detecting_option_support if (canUseDOM) { try { const options: { passive?: void, } = {}; Object.defineProperty(options, 'passive', { get: function () { passiveBrowserEventsSupported = true; }, }); window.addEventListener('test', options, options); window.removeEventListener('test', options, options); } catch (e) { passiveBrowserEventsSupported = false; } }