Skip to content

Commit 5f356fc

Browse files
iterianialxhub
authored andcommitted
refactor(core): Remove global event delegation code. (angular#57893)
This is no longer needed since we are no longer experimenting with it. PR Close angular#57893
1 parent 5f56a65 commit 5f356fc

File tree

19 files changed

+5
-588
lines changed

19 files changed

+5
-588
lines changed

packages/core/src/core_private_export.ts

Lines changed: 1 addition & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -72,11 +72,7 @@ export {
7272
withI18nSupport as ɵwithI18nSupport,
7373
} from './hydration/api';
7474
export {withEventReplay as ɵwithEventReplay} from './hydration/event_replay';
75-
export {
76-
GLOBAL_EVENT_DELEGATION as ɵGLOBAL_EVENT_DELEGATION,
77-
JSACTION_EVENT_CONTRACT as ɵJSACTION_EVENT_CONTRACT,
78-
} from './event_delegation_utils';
79-
export {provideGlobalEventDelegation as ɵprovideGlobalEventDelegation} from './event_dispatch/event_delegation';
75+
export {JSACTION_EVENT_CONTRACT as ɵJSACTION_EVENT_CONTRACT} from './event_delegation_utils';
8076
export {IS_HYDRATION_DOM_REUSE_ENABLED as ɵIS_HYDRATION_DOM_REUSE_ENABLED} from './hydration/tokens';
8177
export {
8278
HydratedNode as ɵHydratedNode,

packages/core/src/event_delegation_utils.ts

Lines changed: 2 additions & 68 deletions
Original file line numberDiff line numberDiff line change
@@ -7,19 +7,10 @@
77
*/
88

99
// tslint:disable:no-duplicate-imports
10-
import {
11-
EventContract,
12-
EventContractContainer,
13-
EventDispatcher,
14-
isEarlyEventType,
15-
getActionCache,
16-
registerDispatcher,
17-
} from '@angular/core/primitives/event-dispatch';
10+
import {EventContract} from '@angular/core/primitives/event-dispatch';
1811
import {Attribute} from '@angular/core/primitives/event-dispatch';
19-
import {Injectable, InjectionToken, Injector, inject} from './di';
12+
import {InjectionToken} from './di';
2013
import {RElement} from './render3/interfaces/renderer_dom';
21-
import {EVENT_REPLAY_ENABLED_DEFAULT, IS_EVENT_REPLAY_ENABLED} from './hydration/tokens';
22-
import {OnDestroy} from './interface/lifecycle_hooks';
2314

2415
declare global {
2516
interface Element {
@@ -71,60 +62,3 @@ export const JSACTION_EVENT_CONTRACT = new InjectionToken<EventContractDetails>(
7162
factory: () => ({}),
7263
},
7364
);
74-
75-
export const GLOBAL_EVENT_DELEGATION = new InjectionToken<GlobalEventDelegation>(
76-
ngDevMode ? 'GLOBAL_EVENT_DELEGATION' : '',
77-
);
78-
79-
/**
80-
* This class is the delegate for `EventDelegationPlugin`. It represents the
81-
* noop version of this class, with the enabled version set when
82-
* `provideGlobalEventDelegation` is called.
83-
*/
84-
@Injectable()
85-
export class GlobalEventDelegation implements OnDestroy {
86-
private eventContractDetails = inject(JSACTION_EVENT_CONTRACT);
87-
88-
ngOnDestroy() {
89-
this.eventContractDetails.instance?.cleanUp();
90-
}
91-
92-
supports(eventType: string): boolean {
93-
return isEarlyEventType(eventType);
94-
}
95-
96-
addEventListener(element: HTMLElement, eventType: string, handler: Function): Function {
97-
// Note: contrary to the type, Window and Document can be passed in
98-
// as well.
99-
if (element.nodeType === Node.ELEMENT_NODE) {
100-
this.eventContractDetails.instance!.addEvent(eventType);
101-
getActionCache(element)[eventType] = '';
102-
sharedStashFunction(element, eventType, handler);
103-
} else {
104-
element.addEventListener(eventType, handler as EventListener);
105-
}
106-
return () => this.removeEventListener(element, eventType, handler);
107-
}
108-
109-
removeEventListener(element: HTMLElement, eventType: string, callback: Function): void {
110-
if (element.nodeType === Node.ELEMENT_NODE) {
111-
getActionCache(element)[eventType] = undefined;
112-
} else {
113-
element.removeEventListener(eventType, callback as EventListener);
114-
}
115-
}
116-
}
117-
118-
export const initGlobalEventDelegation = (
119-
eventContractDetails: EventContractDetails,
120-
injector: Injector,
121-
) => {
122-
if (injector.get(IS_EVENT_REPLAY_ENABLED, EVENT_REPLAY_ENABLED_DEFAULT)) {
123-
return;
124-
}
125-
const eventContract = (eventContractDetails.instance = new EventContract(
126-
new EventContractContainer(document.body),
127-
));
128-
const dispatcher = new EventDispatcher(invokeRegisteredListeners, /** clickModSupport */ false);
129-
registerDispatcher(eventContract, dispatcher);
130-
};

packages/core/src/event_dispatch/event_delegation.ts

Lines changed: 0 additions & 58 deletions
This file was deleted.

packages/core/src/hydration/event_replay.ts

Lines changed: 2 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -27,11 +27,7 @@ import {CLEANUP, LView, TView} from '../render3/interfaces/view';
2727
import {isPlatformBrowser} from '../render3/util/misc_utils';
2828
import {unwrapRNode} from '../render3/util/view_utils';
2929

30-
import {
31-
EVENT_REPLAY_ENABLED_DEFAULT,
32-
IS_EVENT_REPLAY_ENABLED,
33-
IS_GLOBAL_EVENT_DELEGATION_ENABLED,
34-
} from './tokens';
30+
import {EVENT_REPLAY_ENABLED_DEFAULT, IS_EVENT_REPLAY_ENABLED} from './tokens';
3531
import {
3632
sharedStashFunction,
3733
removeListeners,
@@ -47,18 +43,11 @@ import {performanceMarkFeature} from '../util/performance';
4743
*/
4844
const jsactionSet = new Set<Element>();
4945

50-
function isGlobalEventDelegationEnabled(injector: Injector) {
51-
return injector.get(IS_GLOBAL_EVENT_DELEGATION_ENABLED, false);
52-
}
53-
5446
/**
5547
* Determines whether Event Replay feature should be activated on the client.
5648
*/
5749
function shouldEnableEventReplay(injector: Injector) {
58-
return (
59-
injector.get(IS_EVENT_REPLAY_ENABLED, EVENT_REPLAY_ENABLED_DEFAULT) &&
60-
!isGlobalEventDelegationEnabled(injector)
61-
);
50+
return injector.get(IS_EVENT_REPLAY_ENABLED, EVENT_REPLAY_ENABLED_DEFAULT);
6251
}
6352

6453
/**

packages/core/src/hydration/tokens.ts

Lines changed: 0 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -49,10 +49,3 @@ export const IS_EVENT_REPLAY_ENABLED = new InjectionToken<boolean>(
4949
);
5050

5151
export const EVENT_REPLAY_ENABLED_DEFAULT = false;
52-
53-
/**
54-
* Internal token that indicates whether global event delegation support is enabled.
55-
*/
56-
export const IS_GLOBAL_EVENT_DELEGATION_ENABLED = new InjectionToken<boolean>(
57-
typeof ngDevMode === 'undefined' || !!ngDevMode ? 'IS_GLOBAL_EVENT_DELEGATION_ENABLED' : '',
58-
);

packages/core/test/bundling/animations-standalone/bundle.golden_symbols.json

Lines changed: 0 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -179,9 +179,6 @@
179179
{
180180
"name": "DomAdapter"
181181
},
182-
{
183-
"name": "DomEventsPlugin"
184-
},
185182
{
186183
"name": "DomRendererFactory2"
187184
},
@@ -239,9 +236,6 @@
239236
{
240237
"name": "ErrorHandler"
241238
},
242-
{
243-
"name": "EventDelegationPlugin"
244-
},
245239
{
246240
"name": "EventEmitter"
247241
},
@@ -254,9 +248,6 @@
254248
{
255249
"name": "FALSE_BOOLEAN_VALUES"
256250
},
257-
{
258-
"name": "GLOBAL_EVENT_DELEGATION"
259-
},
260251
{
261252
"name": "GenericBrowserDomAdapter"
262253
},

packages/core/test/bundling/animations/bundle.golden_symbols.json

Lines changed: 0 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -260,9 +260,6 @@
260260
{
261261
"name": "ErrorHandler"
262262
},
263-
{
264-
"name": "EventDelegationPlugin"
265-
},
266263
{
267264
"name": "EventEmitter"
268265
},
@@ -275,9 +272,6 @@
275272
{
276273
"name": "FALSE_BOOLEAN_VALUES"
277274
},
278-
{
279-
"name": "GLOBAL_EVENT_DELEGATION"
280-
},
281275
{
282276
"name": "GenericBrowserDomAdapter"
283277
},

packages/core/test/bundling/cyclic_import/bundle.golden_symbols.json

Lines changed: 0 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -167,9 +167,6 @@
167167
{
168168
"name": "ErrorHandler"
169169
},
170-
{
171-
"name": "EventDelegationPlugin"
172-
},
173170
{
174171
"name": "EventEmitter"
175172
},
@@ -179,9 +176,6 @@
179176
{
180177
"name": "EventManagerPlugin"
181178
},
182-
{
183-
"name": "GLOBAL_EVENT_DELEGATION"
184-
},
185179
{
186180
"name": "GenericBrowserDomAdapter"
187181
},

packages/core/test/bundling/defer/bundle.golden_symbols.json

Lines changed: 0 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -200,9 +200,6 @@
200200
{
201201
"name": "ErrorHandler"
202202
},
203-
{
204-
"name": "EventDelegationPlugin"
205-
},
206203
{
207204
"name": "EventEmitter"
208205
},
@@ -212,9 +209,6 @@
212209
{
213210
"name": "EventManagerPlugin"
214211
},
215-
{
216-
"name": "GLOBAL_EVENT_DELEGATION"
217-
},
218212
{
219213
"name": "GenericBrowserDomAdapter"
220214
},
@@ -1454,9 +1448,6 @@
14541448
{
14551449
"name": "init_event_contract_defines"
14561450
},
1457-
{
1458-
"name": "init_event_delegation"
1459-
},
14601451
{
14611452
"name": "init_event_delegation_utils"
14621453
},

packages/core/test/bundling/forms_reactive/bundle.golden_symbols.json

Lines changed: 0 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -227,9 +227,6 @@
227227
{
228228
"name": "ErrorHandler"
229229
},
230-
{
231-
"name": "EventDelegationPlugin"
232-
},
233230
{
234231
"name": "EventEmitter"
235232
},
@@ -275,9 +272,6 @@
275272
{
276273
"name": "FormsExampleModule"
277274
},
278-
{
279-
"name": "GLOBAL_EVENT_DELEGATION"
280-
},
281275
{
282276
"name": "GenericBrowserDomAdapter"
283277
},

0 commit comments

Comments
 (0)