/** * Copyright (c) 2019 mol* contributors, licensed under MIT, See LICENSE file for more info. * * @author David Sehnal */ import { StateTransformer, StateTransform } from '../../mol-state'; import { PluginContext } from '../../mol-plugin/context'; import { Download, ReadFile, DownloadBlob, RawData } from '../transforms/data'; import { getFileNameInfo } from '../../mol-util/file-info'; export class DataBuilder { private get dataState() { return this.plugin.state.data; } rawData(params: StateTransformer.Params, options?: Partial) { const data = this.dataState.build().toRoot().apply(RawData, params, options); return data.commit({ revertOnError: true }); } download(params: StateTransformer.Params, options?: Partial) { const data = this.dataState.build().toRoot().apply(Download, params, options); return data.commit({ revertOnError: true }); } downloadBlob(params: StateTransformer.Params, options?: Partial) { const data = this.dataState.build().toRoot().apply(DownloadBlob, params, options); return data.commit({ revertOnError: true }); } async readFile(params: StateTransformer.Params, options?: Partial) { const data = await this.dataState.build().toRoot().apply(ReadFile, params, options).commit({ revertOnError: true }); const fileInfo = getFileNameInfo(params.file?.file?.name ?? ''); return { data: data, fileInfo }; } constructor(public plugin: PluginContext) { } }