From 7bb64c49b82735e8ce660ba0a4c9d3c81e4d1375 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Rub=C3=A9n=20Norte?= Date: Wed, 20 Aug 2025 03:35:48 -0700 Subject: [PATCH] Use React Native built-in definitions for Event and EventTarget in Fantom Summary: Changelog: [internal] This just replaces the polyfills for `Event` and `EventTarget` that we're defining inline in Fantom with the implementations that already exist in RN. Differential Revision: D80612067 --- private/react-native-fantom/src/index.js | 50 ++---------------------- 1 file changed, 4 insertions(+), 46 deletions(-) diff --git a/private/react-native-fantom/src/index.js b/private/react-native-fantom/src/index.js index 3a9c1d6783e0..6cebae19ebeb 100644 --- a/private/react-native-fantom/src/index.js +++ b/private/react-native-fantom/src/index.js @@ -577,9 +577,8 @@ export type { */ if (typeof global.Event === 'undefined') { - global.Event = class Event { - constructor() {} - }; + global.Event = + require('react-native/src/private/webapis/dom/events/Event').default; } else { console.warn( 'The global Event class is already defined. If this API is already defined by React Native, you might want to remove this logic.', @@ -587,49 +586,8 @@ if (typeof global.Event === 'undefined') { } if (typeof global.EventTarget === 'undefined') { - global.EventTarget = class EventTarget { - listeners: $FlowFixMe; - - constructor() { - this.listeners = {}; - } - - addEventListener(type: string, cb: () => void) { - if (!(type in this.listeners)) { - this.listeners[type] = []; - } - this.listeners[type].push(cb); - } - - removeEventListener(type: string, cb: () => void): void { - if (!(type in this.listeners)) { - return; - } - let handlers = this.listeners[type]; - for (let i in handlers) { - if (cb === handlers[i]) { - handlers.splice(i, 1); - return; - } - } - } - - dispatchEvent(type: string, event: Event) { - if (!(type in this.listeners)) { - return; - } - let handlers = this.listeners[type]; - for (let i in handlers) { - handlers[i].call(this, event); - } - } - - clearEventListeners() { - for (let i in this.listeners) { - delete this.listeners[i]; - } - } - }; + global.EventTarget = + require('react-native/src/private/webapis/dom/events/EventTarget').default; } else { console.warn( 'The global Event class is already defined. If this API is already defined by React Native, you might want to remove this logic.',