@codingame/monaco-vscode-extensions-service-override
Version:
VSCode public API plugged on the monaco editor - extensions service-override
36 lines (33 loc) • 1.14 kB
JavaScript
import { coalesce } from 'vscode/vscode/vs/base/common/arrays';
import { VSBuffer } from 'vscode/vscode/vs/base/common/buffer';
class DataTransferFileCache {
constructor() {
this.requestIdPool = 0;
this.dataTransferFiles = ( new Map());
}
add(dataTransfer) {
const requestId = this.requestIdPool++;
this.dataTransferFiles.set(requestId, coalesce(Array.from(dataTransfer, ([, item]) => item.asFile())));
return {
id: requestId,
dispose: () => {
this.dataTransferFiles.delete(requestId);
}
};
}
async resolveFileData(requestId, dataItemId) {
const files = this.dataTransferFiles.get(requestId);
if (!files) {
throw ( new Error('No data transfer found'));
}
const file = files.find(file => file.id === dataItemId);
if (!file) {
throw ( new Error('No matching file found in data transfer'));
}
return VSBuffer.wrap(await file.data());
}
dispose() {
this.dataTransferFiles.clear();
}
}
export { DataTransferFileCache };