Skip to content

Commit e16db09

Browse files
committed
strongly type scramjet events
1 parent 1843236 commit e16db09

File tree

2 files changed

+19
-0
lines changed

2 files changed

+19
-0
lines changed

src/client/events.ts

Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,13 @@
1+
export type ScramjetEvent =
2+
| NavigateEvent
3+
| UrlChangeEvent
4+
| ScramjetContextEvent;
5+
export type ScramjetEvents = {
6+
navigate: NavigateEvent;
7+
urlchange: UrlChangeEvent;
8+
contextInit: ScramjetContextEvent;
9+
};
10+
111
export class NavigateEvent extends Event {
212
constructor(public url: string) {
313
super("navigate");

src/controller/frame.ts

Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,6 @@
11
import { ScramjetController } from ".";
22
import type { ScramjetClient } from "../client/client";
3+
import { ScramjetEvent, ScramjetEvents } from "../client/events";
34
import { SCRAMJETCLIENT, SCRAMJETFRAME, SCRAMJETFRAMENAME } from "../symbols";
45

56
export class ScramjetFrame extends EventTarget {
@@ -39,4 +40,12 @@ export class ScramjetFrame extends EventTarget {
3940
reload() {
4041
this.frame.contentWindow?.location.reload();
4142
}
43+
44+
addEventListener<K extends keyof ScramjetEvents>(
45+
type: K,
46+
listener: (event: ScramjetEvents[K]) => void,
47+
options?: boolean | AddEventListenerOptions
48+
): void {
49+
super.addEventListener(type, listener as EventListener, options);
50+
}
4251
}

0 commit comments

Comments
 (0)