Просмотр исходного кода

pass correct themeDataCtx in StructureRepresentation3DHelpers.createParams

Alexander Rose 5 лет назад
Родитель
Сommit
2cae6e3f59
1 измененных файлов с 23 добавлено и 20 удалено
  1. 23 20
      src/mol-plugin/state/transforms/representation.ts

+ 23 - 20
src/mol-plugin/state/transforms/representation.ts

@@ -63,37 +63,40 @@ namespace StructureRepresentation3DHelpers {
         })
     }
 
+    export type Props<R extends RepresentationProvider<Structure, any, any> = any, C extends ColorTheme.Provider<any> = any, S extends SizeTheme.Provider<any> = any> = {
+        repr?: R | [R, (r: R, ctx: ThemeRegistryContext, s: Structure) => Partial<RepresentationProvider.ParamValues<R>>],
+        color?: C | [C, (c: C, ctx: ThemeRegistryContext) => Partial<ColorTheme.ParamValues<C>>],
+        size?: S | [S, (c: S, ctx: ThemeRegistryContext) => Partial<SizeTheme.ParamValues<S>>]
+    }
+
     export function createParams<R extends RepresentationProvider<Structure, any, any>, C extends ColorTheme.Provider<any>, S extends SizeTheme.Provider<any>>(
-        ctx: PluginContext, structure: Structure, params: {
-            repr?: R | [R, (r: R, ctx: ThemeRegistryContext, s: Structure) => Partial<RepresentationProvider.ParamValues<R>>],
-            color?: C | [C, (c: C, ctx: ThemeRegistryContext) => Partial<ColorTheme.ParamValues<C>>],
-            size?: S | [S, (c: S, ctx: ThemeRegistryContext) => Partial<SizeTheme.ParamValues<S>>]
-        }): StateTransformer.Params<StructureRepresentation3D> {
+        ctx: PluginContext, structure: Structure, props: Props<R, C, S> = {}): StateTransformer.Params<StructureRepresentation3D> {
 
-        const themeCtx = ctx.structureRepresentation.themeCtx
+        const { themeCtx } = ctx.structureRepresentation
+        const themeDataCtx = { structure }
 
-        const repr = params.repr
-            ? params.repr instanceof Array ? params.repr[0] : params.repr
+        const repr = props.repr
+            ? props.repr instanceof Array ? props.repr[0] : props.repr
             : ctx.structureRepresentation.registry.default.provider;
         const reprDefaultParams = PD.getDefaultValues(repr.getParams(themeCtx, structure));
-        const reprParams = params.repr instanceof Array
-            ? { ...reprDefaultParams, ...params.repr[1](repr as R, themeCtx, structure) }
+        const reprParams = props.repr instanceof Array
+            ? { ...reprDefaultParams, ...props.repr[1](repr as R, themeCtx, structure) }
             : reprDefaultParams;
 
-        const color = params.color
-            ? params.color instanceof Array ? params.color[0] : params.color
+        const color = props.color
+            ? props.color instanceof Array ? props.color[0] : props.color
             : themeCtx.colorThemeRegistry.get(repr.defaultColorTheme.name);
-        const colorDefaultParams = { ...PD.getDefaultValues(color.getParams(themeCtx)), ...repr.defaultColorTheme.props }
-        const colorParams = params.color instanceof Array
-            ? { ...colorDefaultParams, ...params.color[1](color as C, themeCtx) }
+        const colorDefaultParams = { ...PD.getDefaultValues(color.getParams(themeDataCtx)), ...repr.defaultColorTheme.props }
+        const colorParams = props.color instanceof Array
+            ? { ...colorDefaultParams, ...props.color[1](color as C, themeCtx) }
             : colorDefaultParams;
 
-        const size = params.size
-            ? params.size instanceof Array ? params.size[0] : params.size
+        const size = props.size
+            ? props.size instanceof Array ? props.size[0] : props.size
             : themeCtx.sizeThemeRegistry.get(repr.defaultSizeTheme.name);
-        const sizeDefaultParams = { ...PD.getDefaultValues(size.getParams(themeCtx)), ...repr.defaultSizeTheme.props }
-        const sizeParams = params.size instanceof Array
-            ? { ...sizeDefaultParams, ...params.size[1](size as S, themeCtx) }
+        const sizeDefaultParams = { ...PD.getDefaultValues(size.getParams(themeDataCtx)), ...repr.defaultSizeTheme.props }
+        const sizeParams = props.size instanceof Array
+            ? { ...sizeDefaultParams, ...props.size[1](size as S, themeCtx) }
             : sizeDefaultParams;
 
         return ({