Skip to content

Commit f92b1a4

Browse files
committed
switch to typed event target
1 parent 40d6d45 commit f92b1a4

4 files changed

Lines changed: 17 additions & 8 deletions

File tree

bun.lock

Lines changed: 5 additions & 2 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

package.json

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -11,6 +11,7 @@
1111
},
1212
"dependencies": {
1313
"jszip": "^3.10.1",
14+
"typescript-event-target": "^1.1.1",
1415
"vite": "^7.1.0"
1516
}
1617
}

src/datapackStore.ts

Lines changed: 8 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,12 +1,17 @@
1+
import { TypedEventTarget } from "typescript-event-target";
12
import { type Datapack } from "./datapack";
23

3-
export class DatapacksChangedEvent extends CustomEvent<ReadonlyArray<Datapack>> {
4+
class DatapacksChangedEvent extends CustomEvent<ReadonlyArray<Datapack>> {
45
constructor(datapacks: ReadonlyArray<Datapack>) {
56
super("datapacksChanged", { detail: datapacks });
67
}
78
}
89

9-
class DatapackStore extends EventTarget {
10+
export interface DatapackStoreEvents {
11+
datapacksChanged: DatapacksChangedEvent;
12+
}
13+
14+
class DatapackStore extends TypedEventTarget<DatapackStoreEvents> {
1015
private datapacks = new Map<string, Datapack>();
1116

1217
getAll(): ReadonlyArray<Datapack> {
@@ -39,7 +44,7 @@ class DatapackStore extends EventTarget {
3944
}
4045

4146
private notifyChange() {
42-
this.dispatchEvent(new DatapacksChangedEvent(this.getAll()));
47+
this.dispatchTypedEvent("datapacksChanged", new DatapacksChangedEvent(this.getAll()));
4348
}
4449
}
4550

src/main.ts

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
11
import { type Datapack, loadDatapack } from "./datapack";
2-
import { DatapacksChangedEvent, datapackStore } from "./datapackStore";
2+
import { type DatapackStoreEvents, datapackStore } from "./datapackStore";
33

44
const fileUploadElement = document.getElementById("input")!;
55
fileUploadElement.addEventListener("change", onFileUploaded, { passive: true });
@@ -19,8 +19,8 @@ async function onFileUploaded(e: Event) {
1919
datapackStore.add(validDatapacks);
2020
}
2121

22-
function updateDatapackDisplay(event: Event) {
23-
const { detail } = event as DatapacksChangedEvent;
22+
function updateDatapackDisplay(event: DatapackStoreEvents["datapacksChanged"]) {
23+
const { detail } = event;
2424
const dpDisplayElement = detail.map(createDatapackDisplayElement);
2525

2626
const datapackDisplay = document.getElementById("datapack-display")!;

0 commit comments

Comments
 (0)