You can not select more than 25 topics
			Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
		
		
		
		
		
			
		
			
				
					
					
						
							58 lines
						
					
					
						
							1.5 KiB
						
					
					
				
			
		
		
	
	
							58 lines
						
					
					
						
							1.5 KiB
						
					
					
				'use strict'; | 
						|
 | 
						|
var parsers = require('../parsers'); | 
						|
 | 
						|
var valid_keywords = ['top', 'center', 'bottom', 'left', 'right']; | 
						|
 | 
						|
var parse = function parse(v) { | 
						|
  if (v === '' || v === null) { | 
						|
    return undefined; | 
						|
  } | 
						|
  var parts = v.split(/\s+/); | 
						|
  if (parts.length > 2 || parts.length < 1) { | 
						|
    return undefined; | 
						|
  } | 
						|
  var types = []; | 
						|
  parts.forEach(function(part, index) { | 
						|
    types[index] = parsers.valueType(part); | 
						|
  }); | 
						|
  if (parts.length === 1) { | 
						|
    if (types[0] === parsers.TYPES.LENGTH || types[0] === parsers.TYPES.PERCENT) { | 
						|
      return v; | 
						|
    } | 
						|
    if (types[0] === parsers.TYPES.KEYWORD) { | 
						|
      if (valid_keywords.indexOf(v.toLowerCase()) !== -1 || v.toLowerCase() === 'inherit') { | 
						|
        return v; | 
						|
      } | 
						|
    } | 
						|
    return undefined; | 
						|
  } | 
						|
  if ( | 
						|
    (types[0] === parsers.TYPES.LENGTH || types[0] === parsers.TYPES.PERCENT) && | 
						|
    (types[1] === parsers.TYPES.LENGTH || types[1] === parsers.TYPES.PERCENT) | 
						|
  ) { | 
						|
    return v; | 
						|
  } | 
						|
  if (types[0] !== parsers.TYPES.KEYWORD || types[1] !== parsers.TYPES.KEYWORD) { | 
						|
    return undefined; | 
						|
  } | 
						|
  if (valid_keywords.indexOf(parts[0]) !== -1 && valid_keywords.indexOf(parts[1]) !== -1) { | 
						|
    return v; | 
						|
  } | 
						|
  return undefined; | 
						|
}; | 
						|
 | 
						|
module.exports.isValid = function isValid(v) { | 
						|
  return parse(v) !== undefined; | 
						|
}; | 
						|
 | 
						|
module.exports.definition = { | 
						|
  set: function(v) { | 
						|
    this._setProperty('background-position', parse(v)); | 
						|
  }, | 
						|
  get: function() { | 
						|
    return this.getPropertyValue('background-position'); | 
						|
  }, | 
						|
  enumerable: true, | 
						|
  configurable: true, | 
						|
};
 | 
						|
 |