11var coordinates = require ( '../utils/coordinates' ) ;
22var debug = require ( 'debug' ) ;
33
4- var error = debug ( 'core:propertyTypes:warn' ) ;
54var warn = debug ( 'core:propertyTypes:warn' ) ;
65
76var propertyTypes = module . exports . propertyTypes = { } ;
@@ -13,15 +12,15 @@ registerPropertyType('audio', '', assetParse);
1312registerPropertyType ( 'array' , [ ] , arrayParse , arrayStringify , arrayEquals ) ;
1413registerPropertyType ( 'asset' , '' , assetParse ) ;
1514registerPropertyType ( 'boolean' , false , boolParse ) ;
16- registerPropertyType ( 'color' , '#FFF' , defaultParse , defaultStringify ) ;
15+ registerPropertyType ( 'color' , '#FFF' ) ;
1716registerPropertyType ( 'int' , 0 , intParse ) ;
1817registerPropertyType ( 'number' , 0 , numberParse ) ;
1918registerPropertyType ( 'map' , '' , assetParse ) ;
2019registerPropertyType ( 'model' , '' , assetParse ) ;
21- registerPropertyType ( 'selector' , null , selectorParse , selectorStringify ) ;
22- registerPropertyType ( 'selectorAll' , null , selectorAllParse , selectorAllStringify ) ;
20+ registerPropertyType ( 'selector' , null , selectorParse , selectorStringify , defaultEquals , false ) ;
21+ registerPropertyType ( 'selectorAll' , null , selectorAllParse , selectorAllStringify , arrayEquals , false ) ;
2322registerPropertyType ( 'src' , '' , srcParse ) ;
24- registerPropertyType ( 'string' , '' , defaultParse , defaultStringify ) ;
23+ registerPropertyType ( 'string' , '' ) ;
2524registerPropertyType ( 'time' , 0 , intParse ) ;
2625registerPropertyType ( 'vec2' , { x : 0 , y : 0 } , vecParse , coordinates . stringify , coordinates . equals ) ;
2726registerPropertyType ( 'vec3' , { x : 0 , y : 0 , z : 0 } , vecParse , coordinates . stringify , coordinates . equals ) ;
@@ -37,8 +36,9 @@ registerPropertyType('vec4', {x: 0, y: 0, z: 0, w: 1}, vecParse, coordinates.str
3736 * @param {function } [parse=defaultParse] - Parse string function.
3837 * @param {function } [stringify=defaultStringify] - Stringify to DOM function.
3938 * @param {function } [equals=defaultEquals] - Equality comparator.
39+ * @param {boolean } [cachable=false] - Whether or not the parsed value of a property can be cached.
4040 */
41- function registerPropertyType ( type , defaultValue , parse , stringify , equals ) {
41+ function registerPropertyType ( type , defaultValue , parse , stringify , equals , cacheable ) {
4242 if ( type in propertyTypes ) {
4343 throw new Error ( 'Property type ' + type + ' is already registered.' ) ;
4444 }
@@ -47,7 +47,8 @@ function registerPropertyType (type, defaultValue, parse, stringify, equals) {
4747 default : defaultValue ,
4848 parse : parse || defaultParse ,
4949 stringify : stringify || defaultStringify ,
50- equals : equals || defaultEquals
50+ equals : equals || defaultEquals ,
51+ isCacheable : cacheable !== false
5152 } ;
5253}
5354module . exports . registerPropertyType = registerPropertyType ;
0 commit comments