12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758 |
- '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,
- };
|