@@ -8,18 +8,18 @@ var nonCharRegex = /[,> .[\]:]/;
88var urlRegex = / u r l \( ( .+ ) \) / ;
99
1010// Built-in property types.
11- registerPropertyType ( 'audio' , '' , assetParse ) ;
11+ registerPropertyType ( 'audio' , '' , assetParse , assetStringify ) ;
1212registerPropertyType ( 'array' , [ ] , arrayParse , arrayStringify , arrayEquals ) ;
13- registerPropertyType ( 'asset' , '' , assetParse ) ;
13+ registerPropertyType ( 'asset' , '' , assetParse , assetStringify ) ;
1414registerPropertyType ( 'boolean' , false , boolParse ) ;
1515registerPropertyType ( 'color' , '#FFF' ) ;
1616registerPropertyType ( 'int' , 0 , intParse ) ;
1717registerPropertyType ( 'number' , 0 , numberParse ) ;
18- registerPropertyType ( 'map' , '' , assetParse ) ;
19- registerPropertyType ( 'model' , '' , assetParse ) ;
18+ registerPropertyType ( 'map' , '' , assetParse , assetStringify ) ;
19+ registerPropertyType ( 'model' , '' , assetParse , assetStringify ) ;
2020registerPropertyType ( 'selector' , null , selectorParse , selectorStringify , defaultEquals , false ) ;
2121registerPropertyType ( 'selectorAll' , null , selectorAllParse , selectorAllStringify , arrayEquals , false ) ;
22- registerPropertyType ( 'src' , '' , srcParse ) ;
22+ registerPropertyType ( 'src' , '' , srcParse , assetStringify ) ;
2323registerPropertyType ( 'string' , '' ) ;
2424registerPropertyType ( 'time' , 0 , intParse ) ;
2525registerPropertyType ( 'vec2' , { x : 0 , y : 0 } , vecParse , coordinates . stringify , coordinates . equals ) ;
@@ -121,6 +121,19 @@ function assetParse (value) {
121121 return value ;
122122}
123123
124+ function assetStringify ( value ) {
125+ if ( value . getAttribute ) {
126+ var id = value . getAttribute ( 'id' ) ;
127+ if ( id ) {
128+ return '#' + value . getAttribute ( 'id' ) ;
129+ }
130+ // HTMLElement without id can not be stringified, as there is no string assetParse
131+ // could convert back to this exact element, using the src attribute instead.
132+ return value . getAttribute ( 'src' ) ;
133+ }
134+ return defaultStringify ( value ) ;
135+ }
136+
124137function defaultParse ( value ) {
125138 return value ;
126139}
0 commit comments