@@ -8,6 +8,7 @@ var propertyTypes = module.exports.propertyTypes = {};
88
99// Built-in property types.
1010registerPropertyType ( 'array' , [ ] , arrayParse , arrayStringify ) ;
11+ registerPropertyType ( 'asset' , '' , assetParse ) ;
1112registerPropertyType ( 'boolean' , false , boolParse ) ;
1213registerPropertyType ( 'color' , '#FFF' , defaultParse , defaultStringify ) ;
1314registerPropertyType ( 'int' , 0 , intParse ) ;
@@ -56,6 +57,27 @@ function arrayStringify (value) {
5657 return value . join ( ', ' ) ;
5758}
5859
60+ /**
61+ * `src` parser for assets.
62+ *
63+ * @param {string } value - Can either be `url(<value>)` or a selector to an asset.
64+ * @returns {string } Parsed value from `url(<value>)` or src from `<someasset src>`.
65+ */
66+ function assetParse ( value ) {
67+ var parsedUrl = value . match ( / \u r l \( ( .+ ) \) / ) ;
68+ if ( parsedUrl ) { return parsedUrl [ 1 ] ; }
69+
70+ var el = selectorParse ( value ) ;
71+ if ( el ) { return el . getAttribute ( 'src' ) ; }
72+
73+ if ( value . charAt ( 0 ) !== '#' ) {
74+ warn ( '"' + value + '" is not a valid `src` attribute. ' +
75+ 'Value must be an ID selector (i.e. "#someElement") or wrapped in `url()`.' ) ;
76+ }
77+
78+ return '' ;
79+ }
80+
5981function defaultParse ( value ) {
6082 return value ;
6183}
@@ -105,25 +127,9 @@ function selectorAllStringify (value) {
105127 return defaultStringify ( value ) ;
106128}
107129
108- /**
109- * `src` parser for assets.
110- *
111- * @param {string } value - Can either be `url(<value>)` or a selector to an asset.
112- * @returns {string } Parsed value from `url(<value>)` or src from `<someasset src>`.
113- */
114130function srcParse ( value ) {
115- var parsedUrl = value . match ( / \u r l \( ( .+ ) \) / ) ;
116- if ( parsedUrl ) { return parsedUrl [ 1 ] ; }
117-
118- var el = selectorParse ( value ) ;
119- if ( el ) { return el . getAttribute ( 'src' ) ; }
120-
121- if ( value . charAt ( 0 ) !== '#' ) {
122- warn ( '"' + value + '" is not a valid `src` attribute. ' +
123- 'Value must be an ID selector (i.e. "#someElement") or wrapped in `url()`.' ) ;
124- }
125-
126- return '' ;
131+ warn ( '`src` property type is deprecated. Use `asset` instead.' ) ;
132+ return assetParse ( value ) ;
127133}
128134
129135function vecParse ( value ) {
0 commit comments