Skip to content

Commit 4c260e8

Browse files
committed
move the stabler component to it's own file
1 parent 5bf9d9e commit 4c260e8

File tree

2 files changed

+29
-30
lines changed

2 files changed

+29
-30
lines changed

src/webc/file-byte-reader.js

+24
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,24 @@
1+
class FileByteReader extends HTMLInputElement {
2+
constructor() {
3+
super();
4+
}
5+
connectedCallback() {
6+
this.addEventListener('change', this.onChange);
7+
}
8+
9+
emit (type, detail = {}) {
10+
let event = new CustomEvent(`file-byte-reader:${type}`, {
11+
bubbles: false,
12+
cancelable: false,
13+
detail: detail
14+
});
15+
return this.dispatchEvent(event);
16+
}
17+
18+
onChange() {
19+
const fileReader = new FileReader();
20+
fileReader.addEventListener('loadend', e => this.emit('loaded', new Int8Array(fileReader.result)));
21+
fileReader.readAsArrayBuffer(this.files[0]);
22+
}
23+
}
24+
customElements.define("file-byte-reader", FileByteReader, { extends: 'input'});

src/webc/index.html

+5-30
Original file line numberDiff line numberDiff line change
@@ -9,50 +9,25 @@
99
data-cargo-no-default-features
1010
data-cargo-features="webc"
1111
/>
12+
<script data-trunk src="./file-byte-reader.js"></script>
1213
<script>
13-
const $ = document.querySelector.bind(document);
14-
const $$ = document.querySelectorAll.bind(document);
14+
let $ = (query) => document.querySelector(query);
1515

1616
function fileLoaded(array) {
1717
const container = document.createElement("preview-area");
1818
let images = window.wasmBindings.previews(array);
1919
images.forEach(function(src) {
2020
container.appendChild(new PreviewItem(src));
2121
});
22-
$('preview-wrapper').appendChild(container)
22+
$('preview-wrapper').appendChild(container);
2323
}
2424

2525
document.addEventListener("DOMContentLoaded", () => {
26-
$('#file-input').addEventListener("file-reader-input:loaded",
26+
$('#file-input').addEventListener("file-byte-reader:loaded",
2727
e => fileLoaded(e.detail)
2828
);
2929
});
3030

31-
class FileReaderInput extends HTMLInputElement {
32-
constructor() {
33-
super();
34-
}
35-
connectedCallback() {
36-
this.addEventListener('change', this.onChange);
37-
}
38-
39-
emit (type, detail = {}) {
40-
let event = new CustomEvent(`file-reader-input:${type}`, {
41-
bubbles: false,
42-
cancelable: false,
43-
detail: detail
44-
});
45-
return this.dispatchEvent(event);
46-
}
47-
48-
onChange() {
49-
const fileReader = new FileReader();
50-
fileReader.addEventListener('loadend', e => this.emit('loaded', new Int8Array(fileReader.result)));
51-
fileReader.readAsArrayBuffer(this.files[0]);
52-
}
53-
}
54-
customElements.define("file-reader-input", FileReaderInput, { extends: 'input'});
55-
5631
class PreviewItem extends HTMLElement {
5732
constructor(src) {
5833
super();
@@ -73,7 +48,7 @@
7348
</head>
7449
<body>
7550
<h1>Process your CGA/EGAs</h1>
76-
<input is="file-reader-input" id="file-input" multiple="false" type="file" accept=".bin,.cga,.ega,.cega" />
51+
<input is="file-byte-reader" id="file-input" multiple="false" type="file" accept=".bin,.cga,.ega,.cega" />
7752
<preview-wrapper></preview-wrapper>
7853
</body>
7954
</html>

0 commit comments

Comments
 (0)