provider.ts 834 B

12345678910111213141516171819202122232425262728
  1. /**
  2. * Copyright (c) 2018 mol* contributors, licensed under MIT, See LICENSE file for more info.
  3. *
  4. * @author David Sehnal <david.sehnal@gmail.com>
  5. */
  6. import { Model } from 'mol-model/structure';
  7. import Config from './config';
  8. export type ModelPropertiesProvider = (model: Model) => Promise<any>[]
  9. export function createModelPropertiesProviderFromConfig(): ModelPropertiesProvider {
  10. if (!Config.customPropertyProviders || Config.customPropertyProviders.length === 0) return () => [];
  11. const ps: ModelPropertiesProvider[] = [];
  12. for (const p of Config.customPropertyProviders) {
  13. ps.push(require(p).attachModelProperties);
  14. }
  15. return model => {
  16. const ret: Promise<any>[] = [];
  17. for (const p of ps) {
  18. for (const e of p(model)) ret.push(e);
  19. }
  20. return ret;
  21. }
  22. }