@@ -2,6 +2,7 @@ import type { ThemePropertyMixinClass } from '@vaadin/vaadin-themable-mixin/vaad
2
2
import type React from 'react' ;
3
3
import { createElement , useLayoutEffect , useRef , type RefAttributes } from 'react' ;
4
4
import useMergedRefs from './useMergedRefs.js' ;
5
+ import addOrUpdateEventListener from './addOrUpdateEventListener.js' ;
5
6
6
7
declare const __VERSION__ : string ;
7
8
@@ -82,30 +83,6 @@ type AllWebComponentProps<I extends HTMLElement, E extends EventNames = {}> = I
82
83
83
84
export type WebComponentProps < I extends HTMLElement , E extends EventNames = { } > = Partial < AllWebComponentProps < I , E > > ;
84
85
85
- const listenedEvents = new WeakMap < Element , Map < string , EventListenerObject > > ( ) ;
86
-
87
- function addOrUpdateEventListener ( node : Element , event : string , listener : ( ( event : Event ) => void ) | undefined ) {
88
- let events = listenedEvents . get ( node ) ;
89
- if ( events === undefined ) {
90
- listenedEvents . set ( node , ( events = new Map ( ) ) ) ;
91
- }
92
- let handler = events . get ( event ) ;
93
- if ( listener !== undefined ) {
94
- // If necessary, add listener and track handler
95
- if ( handler === undefined ) {
96
- events . set ( event , ( handler = { handleEvent : listener } ) ) ;
97
- node . addEventListener ( event , handler ) ;
98
- // Otherwise just update the listener with new value
99
- } else {
100
- handler . handleEvent = listener ;
101
- }
102
- // Remove listener if one exists and value is undefined
103
- } else if ( handler !== undefined ) {
104
- events . delete ( event ) ;
105
- node . removeEventListener ( event , handler ) ;
106
- }
107
- }
108
-
109
86
export function createComponent < I extends HTMLElement , E extends EventNames = { } > (
110
87
options : Options < I , E > ,
111
88
) : ( props : WebComponentProps < I , E > & RefAttributes < I > ) => React . ReactElement {
@@ -144,9 +121,7 @@ export function createComponent<I extends HTMLElement, E extends EventNames = {}
144
121
} ;
145
122
} , [ ] ) ;
146
123
147
- const finalProps = Object . fromEntries (
148
- Object . entries ( props ) . filter ( ( [ key ] ) => ! eventsMap ?. [ key ] )
149
- ) ;
124
+ const finalProps = Object . fromEntries ( Object . entries ( props ) . filter ( ( [ key ] ) => ! eventsMap ?. [ key ] ) ) ;
150
125
151
126
// Option 2 (initial property events are fired):
152
127
// const finalProps = Object.fromEntries(
0 commit comments