Download static/reader/formats/reader-format-adapters.js from VoiceOfML/Search: direct link, hf CLI and curl.
- Browser
- Download file 1.37 kB
-
https://huggingface.co/spaces/VoiceOfML/Search/resolve/main/static/reader/formats/reader-format-adapters.js
- Command line
-
hf download hf://spaces/VoiceOfML/Search/static/reader/formats/reader-format-adapters.js
-
curl -L -o reader-format-adapters.js https://huggingface.co/spaces/VoiceOfML/Search/resolve/main/static/reader/formats/reader-format-adapters.js
1.37 kB
| (function (root) { | |
| "use strict"; | |
| const METHODS = Object.freeze(["open", "render", "restore", "dispose"]); | |
| function createAdapterRegistry() { | |
| const adapters = new Map(); | |
| let active = null; | |
| function register(mode, adapter) { | |
| if (!mode || adapters.has(mode)) throw new Error(`READER_ADAPTER_DUPLICATE:${mode}`); | |
| for (const method of METHODS) | |
| if (typeof adapter?.[method] !== "function") | |
| throw new TypeError(`READER_ADAPTER_METHOD:${mode}:${method}`); | |
| const value = Object.freeze({ mode, ...adapter }); | |
| adapters.set(mode, value); | |
| return value; | |
| } | |
| function activate(mode) { | |
| const adapter = adapters.get(mode); | |
| if (!adapter) throw new Error(`READER_ADAPTER_MISSING:${mode}`); | |
| active = adapter; | |
| return adapter; | |
| } | |
| function get(mode) { | |
| return adapters.get(mode) || null; | |
| } | |
| function dispose() { | |
| const adapter = active; | |
| active = null; | |
| return adapter ? adapter.dispose() : undefined; | |
| } | |
| return Object.freeze({ | |
| register, | |
| activate, | |
| get, | |
| dispose, | |
| get active() { | |
| return active; | |
| }, | |
| get modes() { | |
| return [...adapters.keys()]; | |
| } | |
| }); | |
| } | |
| root.VoiceOfMLReaderAdapters = Object.freeze({ METHODS, createAdapterRegistry }); | |
| })(typeof self !== "undefined" ? self : globalThis); | |