| 1234567891011121314151617181920212223242526272829303132 |
- import { BaseSource } from './basesource.js';
- class FileReaderSource extends BaseSource {
- constructor(file) {
- super();
- this.file = file;
- }
- async fetchSlice(slice, signal) {
- return new Promise((resolve, reject) => {
- const blob = this.file.slice(slice.offset, slice.offset + slice.length);
- const reader = new FileReader();
- reader.onload = (event) => resolve(event.target.result);
- reader.onerror = reject;
- reader.onabort = reject;
- reader.readAsArrayBuffer(blob);
- if (signal) {
- signal.addEventListener('abort', () => reader.abort());
- }
- });
- }
- }
- /**
- * Create a new source from a given file/blob.
- * @param {Blob} file The file or blob to read from.
- * @returns The constructed source
- */
- export function makeFileReaderSource(file) {
- return new FileReaderSource(file);
- }
|