From 9737f73dd249d4400c619a073e96587fd42c544a Mon Sep 17 00:00:00 2001
From: Alexander Rose <alex.rose@rcsb.org>
Date: Tue, 13 Nov 2018 17:29:35 -0800
Subject: [PATCH] wip, clone params

---
 src/mol-repr/structure/representation/ball-and-stick.ts | 2 +-
 src/mol-repr/structure/representation/cartoon.ts        | 2 +-
 src/mol-repr/volume/direct-volume.ts                    | 2 +-
 src/mol-repr/volume/isosurface-mesh.ts                  | 2 +-
 src/mol-repr/volume/representation.ts                   | 2 --
 src/mol-util/param-definition.ts                        | 5 +++++
 6 files changed, 9 insertions(+), 6 deletions(-)

diff --git a/src/mol-repr/structure/representation/ball-and-stick.ts b/src/mol-repr/structure/representation/ball-and-stick.ts
index ef30a9e51..3cd9a158b 100644
--- a/src/mol-repr/structure/representation/ball-and-stick.ts
+++ b/src/mol-repr/structure/representation/ball-and-stick.ts
@@ -38,7 +38,7 @@ export const BallAndStickParams = {
 }
 export type BallAndStickParams = typeof BallAndStickParams
 export function getBallAndStickParams(ctx: ThemeRegistryContext, structure: Structure) {
-    return BallAndStickParams // TODO return copy
+    return PD.clone(BallAndStickParams)
 }
 
 export type BallAndStickRepresentation = StructureRepresentation<BallAndStickParams>
diff --git a/src/mol-repr/structure/representation/cartoon.ts b/src/mol-repr/structure/representation/cartoon.ts
index 1d478f25d..16beffdc9 100644
--- a/src/mol-repr/structure/representation/cartoon.ts
+++ b/src/mol-repr/structure/representation/cartoon.ts
@@ -38,7 +38,7 @@ export const CartoonParams = {
 }
 export type CartoonParams = typeof CartoonParams
 export function getCartoonParams(ctx: ThemeRegistryContext, structure: Structure) {
-    return CartoonParams // TODO return copy
+    return PD.clone(CartoonParams)
 }
 
 export type CartoonRepresentation = StructureRepresentation<CartoonParams>
diff --git a/src/mol-repr/volume/direct-volume.ts b/src/mol-repr/volume/direct-volume.ts
index 295c26fc2..d3890e7e5 100644
--- a/src/mol-repr/volume/direct-volume.ts
+++ b/src/mol-repr/volume/direct-volume.ts
@@ -161,7 +161,7 @@ export const DirectVolumeParams = {
 }
 export type DirectVolumeParams = typeof DirectVolumeParams
 export function getDirectVolumeParams(ctx: ThemeRegistryContext, volume: VolumeData) {
-    return DirectVolumeParams // TODO return copy
+    return PD.clone(DirectVolumeParams)
 }
 
 export function DirectVolumeVisual(): VolumeVisual<DirectVolumeParams> {
diff --git a/src/mol-repr/volume/isosurface-mesh.ts b/src/mol-repr/volume/isosurface-mesh.ts
index 8f3033dfe..fd54afcef 100644
--- a/src/mol-repr/volume/isosurface-mesh.ts
+++ b/src/mol-repr/volume/isosurface-mesh.ts
@@ -46,7 +46,7 @@ export const IsosurfaceParams = {
 }
 export type IsosurfaceParams = typeof IsosurfaceParams
 export function getIsosurfaceParams(ctx: ThemeRegistryContext, volume: VolumeData) {
-    return IsosurfaceParams // TODO return copy
+    return PD.clone(IsosurfaceParams)
 }
 
 export function IsosurfaceVisual(): VolumeVisual<IsosurfaceParams> {
diff --git a/src/mol-repr/volume/representation.ts b/src/mol-repr/volume/representation.ts
index b865c509f..c4fa484d7 100644
--- a/src/mol-repr/volume/representation.ts
+++ b/src/mol-repr/volume/representation.ts
@@ -145,8 +145,6 @@ export const VolumeParams = {
     isoValueRelative: PD.Range('Iso Value Relative', '', 2, -10, 10, 0.1),
 }
 export type VolumeParams = typeof VolumeParams
-// export const DefaultVolumeProps = PD.getDefaultValues(VolumeParams)
-// export type VolumeProps = typeof DefaultVolumeProps
 
 export function VolumeRepresentation<P extends VolumeParams>(label: string, getParams: RepresentationParamsGetter<VolumeData, P>, visualCtor: (volume: VolumeData) => VolumeVisual<P>): VolumeRepresentation<P> {
     let visual: VolumeVisual<P>
diff --git a/src/mol-util/param-definition.ts b/src/mol-util/param-definition.ts
index 2b7804bc7..3a7c8818a 100644
--- a/src/mol-util/param-definition.ts
+++ b/src/mol-util/param-definition.ts
@@ -6,6 +6,7 @@
  */
 
 import { Color as ColorData } from './color';
+import { shallowClone } from 'mol-util';
 
 export namespace ParamDefinition {
     export interface Base<T> {
@@ -98,4 +99,8 @@ export namespace ParamDefinition {
         Object.keys(params).forEach(k => d[k] = params[k].defaultValue)
         return d as DefaultValues<T>
     }
+
+    export function clone<P extends Params>(params: P): P {
+        return shallowClone(params)
+    }
 }
\ No newline at end of file
-- 
GitLab