data.ts 1.6 KB

12345678910111213141516171819202122232425262728293031323334353637383940
  1. /**
  2. * Copyright (c) 2019 mol* contributors, licensed under MIT, See LICENSE file for more info.
  3. *
  4. * @author David Sehnal <david.sehnal@gmail.com>
  5. */
  6. import { StateTransformer, StateTransform } from '../../mol-state';
  7. import { PluginContext } from '../../mol-plugin/context';
  8. import { Download, ReadFile, DownloadBlob, RawData } from '../transforms/data';
  9. import { getFileNameInfo } from '../../mol-util/file-info';
  10. export class DataBuilder {
  11. private get dataState() {
  12. return this.plugin.state.data;
  13. }
  14. rawData(params: StateTransformer.Params<RawData>, options?: Partial<StateTransform.Options>) {
  15. const data = this.dataState.build().toRoot().apply(RawData, params, options);
  16. return data.commit({ revertOnError: true });
  17. }
  18. download(params: StateTransformer.Params<Download>, options?: Partial<StateTransform.Options>) {
  19. const data = this.dataState.build().toRoot().apply(Download, params, options);
  20. return data.commit({ revertOnError: true });
  21. }
  22. downloadBlob(params: StateTransformer.Params<DownloadBlob>, options?: Partial<StateTransform.Options>) {
  23. const data = this.dataState.build().toRoot().apply(DownloadBlob, params, options);
  24. return data.commit({ revertOnError: true });
  25. }
  26. async readFile(params: StateTransformer.Params<ReadFile>, options?: Partial<StateTransform.Options>) {
  27. const data = await this.dataState.build().toRoot().apply(ReadFile, params, options).commit({ revertOnError: true });
  28. const fileInfo = getFileNameInfo(params.file?.file?.name ?? '');
  29. return { data: data, fileInfo };
  30. }
  31. constructor(public plugin: PluginContext) {
  32. }
  33. }