react / wstein / node_modules / jest-cli / node_modules / jsdom / node_modules / cssstyle / lib / properties / backgroundPosition.js
81145 views'use strict';12var parsers = require('../parsers');34var valid_keywords = ['top', 'center', 'bottom', 'left', 'right'];56var parse = function parse(v) {7var parts = v.split(/\s+/);8if (parts.length > 2 || parts.length < 1) {9return undefined;10}11var types = [];12parts.forEach(function (part, index) {13types[index] = parsers.valueType(part);14});15if (parts.length === 1) {16if (types[0] === parsers.TYPES.LENGTH || types[0] === parsers.TYPES.PERCENT) {17return v;18}19if (types[0] === parsers.TYPES.KEYWORD) {20if (valid_keywords.indexOf(v.toLowerCase()) !== -1 || v.toLowerCase() === 'inherit') {21return v;22}23}24return undefined;25}26if ((types[0] === parsers.TYPES.LENGTH || types[0] === parsers.TYPES.PERCENT) &&27(types[1] === parsers.TYPES.LENGTH || types[1] === parsers.TYPES.PERCENT)) {28return v;29}30if (types[0] !== parsers.TYPES.KEYWORD || types[1] !== parsers.TYPES.KEYWORD) {31return undefined;32}33if (valid_keywords.indexOf(parts[0]) !== -1 && valid_keywords.indexOf(parts[1]) !== -1) {34return v;35}36return undefined;37};3839module.exports.isValid = function isValid(v) {40return parse(v) !== undefined;41};4243module.exports.definition = {44set: function (v) {45this._setProperty('background-position', parse(v));46},47get: function () {48return this.getPropertyValue('background-position');49},50enumerable: true,51configurable: true52};535455