Skip to content

Commit afa78dd

Browse files
committed
fix: use simple properties instead of setters
1 parent 89f94b5 commit afa78dd

File tree

1 file changed

+18
-35
lines changed

1 file changed

+18
-35
lines changed

packages/core/data/dom-events/dom-event.ts

Lines changed: 18 additions & 35 deletions
Original file line numberDiff line numberDiff line change
@@ -46,11 +46,11 @@ export class DOMEvent implements Event {
4646
Object.defineProperty(DOMEvent.prototype, 'AT_TARGET', { value: DOMEvent.AT_TARGET });
4747
Object.defineProperty(DOMEvent.prototype, 'BUBBLING_PHASE', { value: DOMEvent.BUBBLING_PHASE });
4848
Object.defineProperty(DOMEvent.prototype, 'cancelBubble', { value: false, writable: true });
49-
Object.defineProperty(DOMEvent.prototype, '_canceled', { value: false, writable: true });
49+
Object.defineProperty(DOMEvent.prototype, 'defaultPrevented', { value: false, writable: true });
5050
Object.defineProperty(DOMEvent.prototype, 'isTrusted', { value: false, writable: true, enumerable: true });
51-
Object.defineProperty(DOMEvent.prototype, '_eventPhase', { value: DOMEvent.NONE, writable: true });
52-
Object.defineProperty(DOMEvent.prototype, '_currentTarget', { value: null, writable: true });
53-
Object.defineProperty(DOMEvent.prototype, '_target', { value: null, writable: true });
51+
Object.defineProperty(DOMEvent.prototype, 'eventPhase', { value: DOMEvent.NONE, writable: true });
52+
Object.defineProperty(DOMEvent.prototype, 'currentTarget', { value: null, writable: true });
53+
Object.defineProperty(DOMEvent.prototype, 'target', { value: null, writable: true });
5454
Object.defineProperty(DOMEvent.prototype, 'propagationState', { value: EventPropagationState.resume, writable: true });
5555
Object.defineProperty(DOMEvent.prototype, 'listenersLive', { value: emptyArray, writable: true });
5656
Object.defineProperty(DOMEvent.prototype, 'listenersLazyCopy', { value: emptyArray, writable: true });
@@ -86,8 +86,6 @@ export class DOMEvent implements Event {
8686
*/
8787
static unstable_currentEvent: DOMEvent | null = null;
8888

89-
private _canceled: boolean;
90-
9189
/** @deprecated Setting this value does nothing. */
9290
cancelBubble: boolean;
9391

@@ -125,42 +123,27 @@ export class DOMEvent implements Event {
125123
* Returns true if preventDefault() was invoked successfully to indicate
126124
* cancelation, and false otherwise.
127125
*/
128-
get defaultPrevented() {
129-
return this._canceled;
130-
}
126+
defaultPrevented: boolean;
127+
128+
// Strictly speaking, we should use { public get, private set } for all of
129+
// `eventPhase`, `currentTarget`, and `target`, but using simple properties
130+
// saves 800 nanoseconds per run of handleEvent() (and so is one of our
131+
// biggest optimisations).
131132

132-
private _eventPhase: 0 | 1 | 2 | 3;
133133
/**
134134
* Returns the event's phase, which is one of NONE, CAPTURING_PHASE,
135135
* AT_TARGET, and BUBBLING_PHASE.
136136
*/
137-
get eventPhase() {
138-
return this._eventPhase;
139-
}
140-
private set eventPhase(value: 0 | 1 | 2 | 3) {
141-
this._eventPhase = value;
142-
}
137+
eventPhase: 0 | 1 | 2 | 3;
143138

144-
private _currentTarget: Observable | null;
145139
/**
146140
* Returns the object whose event listener's callback is currently being
147141
* invoked.
148142
*/
149-
get currentTarget() {
150-
return this._currentTarget;
151-
}
152-
private set currentTarget(value: Observable | null) {
153-
this._currentTarget = value;
154-
}
143+
currentTarget: Observable | null;
155144

156-
private _target: Observable | null;
157145
/** Returns the object to which event is dispatched (its target). */
158-
get target() {
159-
return this._target;
160-
}
161-
private set target(value: Observable | null) {
162-
this._target = value;
163-
}
146+
target: Observable | null;
164147

165148
// From CustomEvent rather than Event. Can consider factoring out this
166149
// aspect into DOMCustomEvent.
@@ -245,7 +228,7 @@ export class DOMEvent implements Event {
245228
if (!this.cancelable) {
246229
return;
247230
}
248-
this._canceled = true;
231+
this.defaultPrevented = true;
249232
}
250233
/**
251234
* Invoking this method prevents event from reaching any registered event
@@ -294,7 +277,7 @@ export class DOMEvent implements Event {
294277
}
295278
this.eventPhase = this.CAPTURING_PHASE;
296279
this.target = target;
297-
this._canceled = false;
280+
this.defaultPrevented = false;
298281

299282
// Internal API to facilitate testing - to be removed once we've
300283
// completed the breaking changes to migrate fully to DOMEvents.
@@ -361,7 +344,7 @@ export class DOMEvent implements Event {
361344

362345
if (this.propagationState !== EventPropagationState.resume) {
363346
reset();
364-
return this.returnValue;
347+
return !this.defaultPrevented;
365348
}
366349
}
367350

@@ -381,7 +364,7 @@ export class DOMEvent implements Event {
381364

382365
if (this.propagationState !== EventPropagationState.resume) {
383366
reset();
384-
return this.returnValue;
367+
return !this.defaultPrevented;
385368
}
386369

387370
// If the event doesn't bubble, then, having dispatched it at the
@@ -406,7 +389,7 @@ export class DOMEvent implements Event {
406389
});
407390

408391
reset();
409-
return this.returnValue;
392+
return !this.defaultPrevented;
410393
}
411394

412395
private handleEvent({ data, isGlobal, phase, removeEventListener }: { data: EventData; isGlobal: boolean; phase: 0 | 1 | 2 | 3; removeEventListener: (eventName: string, callback?: any, thisArg?: any, capture?: boolean) => void }) {

0 commit comments

Comments
 (0)