From 97ee5339cf5aad45f4c6db0c508933866f41b75f Mon Sep 17 00:00:00 2001 From: chyizheng Date: Mon, 29 Jan 2024 20:27:19 +0800 Subject: [PATCH] feat: allow changing event type --- glass-easel/src/event.ts | 12 +++++++++--- glass-easel/src/tmpl/native_rendering.ts | 2 +- 2 files changed, 10 insertions(+), 4 deletions(-) diff --git a/glass-easel/src/event.ts b/glass-easel/src/event.ts index 89ff6626..94f67519 100644 --- a/glass-easel/src/event.ts +++ b/glass-easel/src/event.ts @@ -177,6 +177,8 @@ export class Event { bubbles: boolean composed: boolean /** @internal */ + private _$eventName: string + /** @internal */ private _$capturePhase: boolean /** @internal */ private _$originalEvent: unknown @@ -193,7 +195,7 @@ export class Event { constructor(name: string, detail: TDetail, options: EventOptions = {}) { const ts = getCurrentTimeStamp() - this.type = name + this._$eventName = this.type = name this.timeStamp = ts this.detail = detail this.bubbles = options.bubbles || false @@ -229,6 +231,10 @@ export class Event { return ret } + getEventName(): string { + return this._$eventName + } + getOriginalEvent(): unknown { return this._$originalEvent } @@ -267,7 +273,7 @@ export class Event { target: Element, isCapture: boolean, ) { - const evName = this.type + const evName = this._$eventName const eventTarget = currentTarget._$eventTarget if (!eventTarget) return @@ -303,7 +309,7 @@ export class Event { throw new Error('Event cannot be dispatched twice') } if (ENV.DEV) { - addTimelineEvent(this.type, { event: this }) + addTimelineEvent(this._$eventName, { event: this }) performanceMeasureStart('event.dispatch') } this._$dispatched = true diff --git a/glass-easel/src/tmpl/native_rendering.ts b/glass-easel/src/tmpl/native_rendering.ts index 5bc5321f..d0100b99 100644 --- a/glass-easel/src/tmpl/native_rendering.ts +++ b/glass-easel/src/tmpl/native_rendering.ts @@ -137,7 +137,7 @@ export class GlassEaselTemplateDOMInstance implements TemplateInstance, External const target = elem as unknown as ElementWithEvent let cur: Element = target const root = this.shadowRootElement - const evName = event.type + const evName = event.getEventName() const bubbles = event.bubbles for (;;) { const shadowedEvent = event.wrapShadowedEvent(target as any, null, cur as any)