From a38dbea7b4fd8f41eba77dd7e8a5e607e103480d Mon Sep 17 00:00:00 2001 From: samreid Date: Tue, 24 Nov 2020 10:31:35 -0700 Subject: [PATCH] Add ColorProperty, see https://github.com/phetsims/axon/issues/221 --- js/util/ColorProperty.js | 32 ++++++++++++++++++++++++++++++++ 1 file changed, 32 insertions(+) create mode 100644 js/util/ColorProperty.js diff --git a/js/util/ColorProperty.js b/js/util/ColorProperty.js new file mode 100644 index 000000000..66475b712 --- /dev/null +++ b/js/util/ColorProperty.js @@ -0,0 +1,32 @@ +// Copyright 2020, University of Colorado Boulder + +import Property from '../../../axon/js/Property.js'; +import merge from '../../../phet-core/js/merge.js'; +import Color from './Color.js'; +import scenery from '../scenery.js'; + +/** + * Convenience type for creating Property + * + * @author Sam Reid (PhET Interactive Simulations) + */ +class ColorProperty extends Property { + + constructor( color, options ) { + + // client cannot specify superclass options that are controlled by this type + if ( options ) { + assert && assert( !options.hasOwnProperty( 'valueType' ), 'ColorProperty sets valueType' ); + assert && assert( !options.hasOwnProperty( 'phetioType' ), 'ColorProperty sets phetioType' ); + } + + options = merge( { + valueType: Color, + phetioType: Property.PropertyIO( Color.ColorIO ) + }, options ); + super( color, options ); + } +} + +scenery.register( 'ColorProperty', ColorProperty ); +export default ColorProperty; \ No newline at end of file