css-to-react-native
Advanced tools
Comparing version 2.3.0 to 2.3.1
321
index.js
@@ -104,8 +104,57 @@ 'use strict'; | ||
var LENGTH = tokens.LENGTH, | ||
var NONE = tokens.NONE, | ||
COLOR = tokens.COLOR, | ||
LENGTH = tokens.LENGTH, | ||
UNSUPPORTED_LENGTH_UNIT = tokens.UNSUPPORTED_LENGTH_UNIT, | ||
SPACE = tokens.SPACE; | ||
var BORDER_STYLE = regExpToken(/^(solid|dashed|dotted)$/); | ||
var defaultBorderWidth = 1; | ||
var defaultBorderColor = 'black'; | ||
var defaultBorderStyle = 'solid'; | ||
var border = function border(tokenStream) { | ||
var borderWidth = void 0; | ||
var borderColor = void 0; | ||
var borderStyle = void 0; | ||
if (tokenStream.matches(NONE)) { | ||
tokenStream.expectEmpty(); | ||
return { borderWidth: 0, borderColor: 'black', borderStyle: 'solid' }; | ||
} | ||
var partsParsed = 0; | ||
while (partsParsed < 3 && tokenStream.hasTokens()) { | ||
if (partsParsed !== 0) tokenStream.expect(SPACE); | ||
if (borderWidth === undefined && tokenStream.matches(LENGTH) || tokenStream.matches(UNSUPPORTED_LENGTH_UNIT)) { | ||
borderWidth = tokenStream.lastValue; | ||
} else if (borderColor === undefined && tokenStream.matches(COLOR)) { | ||
borderColor = tokenStream.lastValue; | ||
} else if (borderStyle === undefined && tokenStream.matches(BORDER_STYLE)) { | ||
borderStyle = tokenStream.lastValue; | ||
} else { | ||
tokenStream.throw(); | ||
} | ||
partsParsed += 1; | ||
} | ||
tokenStream.expectEmpty(); | ||
if (borderWidth === undefined) borderWidth = defaultBorderWidth; | ||
if (borderColor === undefined) borderColor = defaultBorderColor; | ||
if (borderStyle === undefined) borderStyle = defaultBorderStyle; | ||
return { borderWidth: borderWidth, borderColor: borderColor, borderStyle: borderStyle }; | ||
}; | ||
var LENGTH$1 = tokens.LENGTH, | ||
UNSUPPORTED_LENGTH_UNIT$1 = tokens.UNSUPPORTED_LENGTH_UNIT, | ||
PERCENT = tokens.PERCENT, | ||
COLOR = tokens.COLOR, | ||
SPACE = tokens.SPACE, | ||
NONE = tokens.NONE; | ||
COLOR$1 = tokens.COLOR, | ||
SPACE$1 = tokens.SPACE, | ||
NONE$1 = tokens.NONE; | ||
@@ -115,3 +164,3 @@ | ||
var _ref$types = _ref.types, | ||
types = _ref$types === undefined ? [LENGTH, UNSUPPORTED_LENGTH_UNIT, PERCENT] : _ref$types, | ||
types = _ref$types === undefined ? [LENGTH$1, UNSUPPORTED_LENGTH_UNIT$1, PERCENT] : _ref$types, | ||
_ref$directions = _ref.directions, | ||
@@ -124,3 +173,3 @@ directions = _ref$directions === undefined ? ['Top', 'Right', 'Bottom', 'Left'] : _ref$directions, | ||
return function (tokenStream) { | ||
var _output; | ||
var _ref2; | ||
@@ -133,3 +182,3 @@ var values = []; | ||
while (values.length < 4 && tokenStream.hasTokens()) { | ||
tokenStream.expect(SPACE); | ||
tokenStream.expect(SPACE$1); | ||
values.push(tokenStream.expect.apply(tokenStream, _toConsumableArray(types))); | ||
@@ -153,55 +202,13 @@ } | ||
var output = (_output = {}, _defineProperty(_output, keyFor(0), top), _defineProperty(_output, keyFor(1), right), _defineProperty(_output, keyFor(2), bottom), _defineProperty(_output, keyFor(3), left), _output); | ||
return { $merge: output }; | ||
return _ref2 = {}, _defineProperty(_ref2, keyFor(0), top), _defineProperty(_ref2, keyFor(1), right), _defineProperty(_ref2, keyFor(2), bottom), _defineProperty(_ref2, keyFor(3), left), _ref2; | ||
}; | ||
}; | ||
var anyOrderFactory = function anyOrderFactory(properties) { | ||
var delim = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : SPACE; | ||
return function (tokenStream) { | ||
var propertyNames = Object.keys(properties); | ||
var values = propertyNames.reduce(function (accum, propertyName) { | ||
accum[propertyName] === undefined; // eslint-disable-line | ||
return accum; | ||
}, {}); | ||
var numParsed = 0; | ||
while (numParsed < propertyNames.length && tokenStream.hasTokens()) { | ||
if (numParsed) tokenStream.expect(delim); | ||
var matchedPropertyName = propertyNames.find(function (propertyName) { | ||
return values[propertyName] === undefined && properties[propertyName].tokens.some(function (token) { | ||
return tokenStream.matches(token); | ||
}); | ||
}); | ||
if (!matchedPropertyName) { | ||
tokenStream.throw(); | ||
} else { | ||
values[matchedPropertyName] = tokenStream.lastValue; | ||
} | ||
numParsed += 1; | ||
} | ||
tokenStream.expectEmpty(); | ||
propertyNames.forEach(function (propertyName) { | ||
if (values[propertyName] === undefined) values[propertyName] = properties[propertyName].default; | ||
}); | ||
return { $merge: values }; | ||
}; | ||
var parseShadowOffset = function parseShadowOffset(tokenStream) { | ||
var width = tokenStream.expect(LENGTH$1); | ||
var height = tokenStream.matches(SPACE$1) ? tokenStream.expect(LENGTH$1) : width; | ||
tokenStream.expectEmpty(); | ||
return { width: width, height: height }; | ||
}; | ||
var shadowOffsetFactory = function shadowOffsetFactory() { | ||
return function (tokenStream) { | ||
var width = tokenStream.expect(LENGTH); | ||
var height = tokenStream.matches(SPACE) ? tokenStream.expect(LENGTH) : width; | ||
tokenStream.expectEmpty(); | ||
return { width: width, height: height }; | ||
}; | ||
}; | ||
var parseShadow = function parseShadow(tokenStream) { | ||
@@ -213,3 +220,3 @@ var offsetX = void 0; | ||
if (tokenStream.matches(NONE)) { | ||
if (tokenStream.matches(NONE$1)) { | ||
tokenStream.expectEmpty(); | ||
@@ -225,11 +232,11 @@ return { | ||
while (tokenStream.hasTokens()) { | ||
if (didParseFirst) tokenStream.expect(SPACE); | ||
if (didParseFirst) tokenStream.expect(SPACE$1); | ||
if (offsetX === undefined && tokenStream.matches(LENGTH, UNSUPPORTED_LENGTH_UNIT)) { | ||
if (offsetX === undefined && tokenStream.matches(LENGTH$1, UNSUPPORTED_LENGTH_UNIT$1)) { | ||
offsetX = tokenStream.lastValue; | ||
tokenStream.expect(SPACE); | ||
offsetY = tokenStream.expect(LENGTH, UNSUPPORTED_LENGTH_UNIT); | ||
tokenStream.expect(SPACE$1); | ||
offsetY = tokenStream.expect(LENGTH$1, UNSUPPORTED_LENGTH_UNIT$1); | ||
tokenStream.saveRewindPoint(); | ||
if (tokenStream.matches(SPACE) && tokenStream.matches(LENGTH, UNSUPPORTED_LENGTH_UNIT)) { | ||
if (tokenStream.matches(SPACE$1) && tokenStream.matches(LENGTH$1, UNSUPPORTED_LENGTH_UNIT$1)) { | ||
radius = tokenStream.lastValue; | ||
@@ -239,3 +246,3 @@ } else { | ||
} | ||
} else if (color === undefined && tokenStream.matches(COLOR)) { | ||
} else if (color === undefined && tokenStream.matches(COLOR$1)) { | ||
color = tokenStream.lastValue; | ||
@@ -265,16 +272,14 @@ } else { | ||
return { | ||
$merge: { | ||
shadowOffset: offset, | ||
shadowRadius: radius, | ||
shadowColor: color, | ||
shadowOpacity: 1 | ||
} | ||
shadowOffset: offset, | ||
shadowRadius: radius, | ||
shadowColor: color, | ||
shadowOpacity: 1 | ||
}; | ||
}; | ||
var NONE$1 = tokens.NONE, | ||
var NONE$2 = tokens.NONE, | ||
AUTO = tokens.AUTO, | ||
NUMBER = tokens.NUMBER, | ||
LENGTH$1 = tokens.LENGTH, | ||
SPACE$1 = tokens.SPACE; | ||
LENGTH$2 = tokens.LENGTH, | ||
SPACE$2 = tokens.SPACE; | ||
@@ -291,5 +296,5 @@ | ||
if (tokenStream.matches(NONE$1)) { | ||
if (tokenStream.matches(NONE$2)) { | ||
tokenStream.expectEmpty(); | ||
return { $merge: { flexGrow: 0, flexShrink: 0, flexBasis: 'auto' } }; | ||
return { flexGrow: 0, flexShrink: 0, flexBasis: 'auto' }; | ||
} | ||
@@ -299,3 +304,3 @@ | ||
if (tokenStream.matches(AUTO) && !tokenStream.hasTokens()) { | ||
return { $merge: { flexGrow: 1, flexShrink: 1, flexBasis: 'auto' } }; | ||
return { flexGrow: 1, flexShrink: 1, flexBasis: 'auto' }; | ||
} | ||
@@ -306,3 +311,3 @@ tokenStream.rewind(); | ||
while (partsParsed < 2 && tokenStream.hasTokens()) { | ||
if (partsParsed !== 0) tokenStream.expect(SPACE$1); | ||
if (partsParsed !== 0) tokenStream.expect(SPACE$2); | ||
@@ -313,3 +318,3 @@ if (flexGrow === undefined && tokenStream.matches(NUMBER)) { | ||
tokenStream.saveRewindPoint(); | ||
if (tokenStream.matches(SPACE$1) && tokenStream.matches(NUMBER)) { | ||
if (tokenStream.matches(SPACE$2) && tokenStream.matches(NUMBER)) { | ||
flexShrink = tokenStream.lastValue; | ||
@@ -319,3 +324,3 @@ } else { | ||
} | ||
} else if (flexBasis === undefined && tokenStream.matches(LENGTH$1)) { | ||
} else if (flexBasis === undefined && tokenStream.matches(LENGTH$2)) { | ||
flexBasis = tokenStream.lastValue; | ||
@@ -337,6 +342,42 @@ } else if (flexBasis === undefined && tokenStream.matches(AUTO)) { | ||
return { $merge: { flexGrow: flexGrow, flexShrink: flexShrink, flexBasis: flexBasis } }; | ||
return { flexGrow: flexGrow, flexShrink: flexShrink, flexBasis: flexBasis }; | ||
}; | ||
var SPACE$2 = tokens.SPACE, | ||
var SPACE$3 = tokens.SPACE; | ||
var FLEX_WRAP = regExpToken(/(nowrap|wrap|wrap-reverse)/); | ||
var FLEX_DIRECTION = regExpToken(/(row|row-reverse|column|column-reverse)/); | ||
var defaultFlexWrap = 'nowrap'; | ||
var defaultFlexDirection = 'row'; | ||
var flexFlow = function flexFlow(tokenStream) { | ||
var flexWrap = void 0; | ||
var flexDirection = void 0; | ||
var partsParsed = 0; | ||
while (partsParsed < 2 && tokenStream.hasTokens()) { | ||
if (partsParsed !== 0) tokenStream.expect(SPACE$3); | ||
if (flexWrap === undefined && tokenStream.matches(FLEX_WRAP)) { | ||
flexWrap = tokenStream.lastValue; | ||
} else if (flexDirection === undefined && tokenStream.matches(FLEX_DIRECTION)) { | ||
flexDirection = tokenStream.lastValue; | ||
} else { | ||
tokenStream.throw(); | ||
} | ||
partsParsed += 1; | ||
} | ||
tokenStream.expectEmpty(); | ||
if (flexWrap === undefined) flexWrap = defaultFlexWrap; | ||
if (flexDirection === undefined) flexDirection = defaultFlexDirection; | ||
return { flexWrap: flexWrap, flexDirection: flexDirection }; | ||
}; | ||
var SPACE$4 = tokens.SPACE, | ||
IDENT = tokens.IDENT, | ||
@@ -354,3 +395,3 @@ STRING = tokens.STRING; | ||
while (tokenStream.hasTokens()) { | ||
tokenStream.expect(SPACE$2); | ||
tokenStream.expect(SPACE$4); | ||
var nextIdent = tokenStream.expect(IDENT); | ||
@@ -363,8 +404,8 @@ fontFamily += ' ' + nextIdent; | ||
return fontFamily; | ||
return { fontFamily: fontFamily }; | ||
}; | ||
var SPACE$3 = tokens.SPACE, | ||
LENGTH$2 = tokens.LENGTH, | ||
UNSUPPORTED_LENGTH_UNIT$1 = tokens.UNSUPPORTED_LENGTH_UNIT, | ||
var SPACE$5 = tokens.SPACE, | ||
LENGTH$3 = tokens.LENGTH, | ||
UNSUPPORTED_LENGTH_UNIT$2 = tokens.UNSUPPORTED_LENGTH_UNIT, | ||
NUMBER$1 = tokens.NUMBER, | ||
@@ -404,7 +445,7 @@ SLASH = tokens.SLASH; | ||
tokenStream.expect(SPACE$3); | ||
tokenStream.expect(SPACE$5); | ||
numStyleWeightVariantMatched += 1; | ||
} | ||
var fontSize = tokenStream.expect(LENGTH$2, UNSUPPORTED_LENGTH_UNIT$1); | ||
var fontSize = tokenStream.expect(LENGTH$3, UNSUPPORTED_LENGTH_UNIT$2); | ||
@@ -415,9 +456,10 @@ if (tokenStream.matches(SLASH)) { | ||
} else { | ||
lineHeight = tokenStream.expect(LENGTH$2, UNSUPPORTED_LENGTH_UNIT$1); | ||
lineHeight = tokenStream.expect(LENGTH$3, UNSUPPORTED_LENGTH_UNIT$2); | ||
} | ||
} | ||
tokenStream.expect(SPACE$3); | ||
tokenStream.expect(SPACE$5); | ||
var fontFamily = parseFontFamily(tokenStream); | ||
var _parseFontFamily = parseFontFamily(tokenStream), | ||
fontFamily = _parseFontFamily.fontFamily; | ||
@@ -431,3 +473,3 @@ if (fontStyle === undefined) fontStyle = defaultFontStyle; | ||
return { $merge: out }; | ||
return out; | ||
}; | ||
@@ -442,13 +484,11 @@ | ||
return { | ||
$merge: { | ||
textShadowOffset: offset, | ||
textShadowRadius: radius, | ||
textShadowColor: color | ||
} | ||
textShadowOffset: offset, | ||
textShadowRadius: radius, | ||
textShadowColor: color | ||
}; | ||
}; | ||
var SPACE$4 = tokens.SPACE, | ||
var SPACE$6 = tokens.SPACE, | ||
LINE = tokens.LINE, | ||
COLOR$1 = tokens.COLOR; | ||
COLOR$2 = tokens.COLOR; | ||
@@ -469,3 +509,3 @@ | ||
while (tokenStream.hasTokens()) { | ||
if (didParseFirst) tokenStream.expect(SPACE$4); | ||
if (didParseFirst) tokenStream.expect(SPACE$6); | ||
@@ -476,3 +516,3 @@ if (line === undefined && tokenStream.matches(LINE)) { | ||
tokenStream.saveRewindPoint(); | ||
if (lines[0] !== 'none' && tokenStream.matches(SPACE$4) && tokenStream.matches(LINE)) { | ||
if (lines[0] !== 'none' && tokenStream.matches(SPACE$6) && tokenStream.matches(LINE)) { | ||
lines.push(tokenStream.lastValue.toLowerCase()); | ||
@@ -488,3 +528,3 @@ // Underline comes before line-through | ||
style = tokenStream.lastValue; | ||
} else if (color === undefined && tokenStream.matches(COLOR$1)) { | ||
} else if (color === undefined && tokenStream.matches(COLOR$2)) { | ||
color = tokenStream.lastValue; | ||
@@ -498,3 +538,3 @@ } else { | ||
var $merge = { | ||
return { | ||
textDecorationLine: line !== undefined ? line : defaultTextDecorationLine, | ||
@@ -504,6 +544,5 @@ textDecorationColor: color !== undefined ? color : defaultTextDecorationColor, | ||
}; | ||
return { $merge: $merge }; | ||
}; | ||
var SPACE$5 = tokens.SPACE, | ||
var SPACE$7 = tokens.SPACE, | ||
LINE$1 = tokens.LINE; | ||
@@ -517,3 +556,3 @@ | ||
while (tokenStream.hasTokens()) { | ||
if (didParseFirst) tokenStream.expect(SPACE$5); | ||
if (didParseFirst) tokenStream.expect(SPACE$7); | ||
@@ -527,8 +566,8 @@ lines.push(tokenStream.expect(LINE$1).toLowerCase()); | ||
return lines.join(' '); | ||
return { textDecorationLine: lines.join(' ') }; | ||
}; | ||
var SPACE$6 = tokens.SPACE, | ||
var SPACE$8 = tokens.SPACE, | ||
COMMA = tokens.COMMA, | ||
LENGTH$3 = tokens.LENGTH, | ||
LENGTH$4 = tokens.LENGTH, | ||
NUMBER$2 = tokens.NUMBER, | ||
@@ -547,3 +586,3 @@ ANGLE = tokens.ANGLE; | ||
var singleNumber = oneOfType(NUMBER$2); | ||
var singleLength = oneOfType(LENGTH$3); | ||
var singleLength = oneOfType(LENGTH$4); | ||
var singleAngle = oneOfType(ANGLE); | ||
@@ -574,3 +613,3 @@ var xyTransformFactory = function xyTransformFactory(tokenType) { | ||
var xyNumber = xyTransformFactory(NUMBER$2); | ||
var xyLength = xyTransformFactory(LENGTH$3); | ||
var xyLength = xyTransformFactory(LENGTH$4); | ||
var xyAngle = xyTransformFactory(ANGLE); | ||
@@ -600,3 +639,3 @@ | ||
while (tokenStream.hasTokens()) { | ||
if (didParseFirst) tokenStream.expect(SPACE$6); | ||
if (didParseFirst) tokenStream.expect(SPACE$8); | ||
@@ -615,3 +654,3 @@ var functionStream = tokenStream.expectFunction(); | ||
return transforms; | ||
return { transform: transforms }; | ||
}; | ||
@@ -621,5 +660,5 @@ | ||
WORD = tokens.WORD, | ||
COLOR$2 = tokens.COLOR, | ||
LENGTH$4 = tokens.LENGTH, | ||
UNSUPPORTED_LENGTH_UNIT$2 = tokens.UNSUPPORTED_LENGTH_UNIT, | ||
COLOR$3 = tokens.COLOR, | ||
LENGTH$5 = tokens.LENGTH, | ||
UNSUPPORTED_LENGTH_UNIT$3 = tokens.UNSUPPORTED_LENGTH_UNIT, | ||
PERCENT$1 = tokens.PERCENT, | ||
@@ -631,19 +670,5 @@ AUTO$1 = tokens.AUTO; | ||
return { | ||
$merge: { backgroundColor: tokenStream.expect(COLOR$2) } | ||
backgroundColor: tokenStream.expect(COLOR$3) | ||
}; | ||
}; | ||
var border = anyOrderFactory({ | ||
borderWidth: { | ||
tokens: [LENGTH$4, UNSUPPORTED_LENGTH_UNIT$2], | ||
default: 1 | ||
}, | ||
borderColor: { | ||
tokens: [COLOR$2], | ||
default: 'black' | ||
}, | ||
borderStyle: { | ||
tokens: [regExpToken(/^(solid|dashed|dotted)$/)], | ||
default: 'solid' | ||
} | ||
}); | ||
var borderColor = directionFactory({ | ||
@@ -661,24 +686,26 @@ types: [WORD], | ||
var margin = directionFactory({ | ||
types: [LENGTH$4, UNSUPPORTED_LENGTH_UNIT$2, PERCENT$1, AUTO$1], | ||
types: [LENGTH$5, UNSUPPORTED_LENGTH_UNIT$3, PERCENT$1, AUTO$1], | ||
prefix: 'margin' | ||
}); | ||
var padding = directionFactory({ prefix: 'padding' }); | ||
var flexFlow = anyOrderFactory({ | ||
flexWrap: { | ||
tokens: [regExpToken(/(nowrap|wrap|wrap-reverse)/)], | ||
default: 'nowrap' | ||
}, | ||
flexDirection: { | ||
tokens: [regExpToken(/(row|row-reverse|column|column-reverse)/)], | ||
default: 'row' | ||
} | ||
}); | ||
var fontVariant = function fontVariant(tokenStream) { | ||
return [tokenStream.expect(IDENT$1)]; | ||
return { | ||
fontVariant: [tokenStream.expect(IDENT$1)] | ||
}; | ||
}; | ||
var fontWeight = function fontWeight(tokenStream) { | ||
return tokenStream.expect(WORD); | ||
}; // Also match numbers as strings | ||
var shadowOffset = shadowOffsetFactory(); | ||
var textShadowOffset = shadowOffsetFactory(); | ||
return { | ||
fontWeight: tokenStream.expect(WORD) // Also match numbers as strings | ||
}; | ||
}; | ||
var shadowOffset = function shadowOffset(tokenStream) { | ||
return { | ||
shadowOffset: parseShadowOffset(tokenStream) | ||
}; | ||
}; | ||
var textShadowOffset = function textShadowOffset(tokenStream) { | ||
return { | ||
textShadowOffset: parseShadowOffset(tokenStream) | ||
}; | ||
}; | ||
@@ -843,5 +870,5 @@ var transforms = { | ||
var isRawValue = allowShorthand === false || !(propName in transforms); | ||
var propValue = isRawValue ? transformRawValue(inputValue) : transformShorthandValue(propName, inputValue.trim()); | ||
var propValues = isRawValue ? _defineProperty({}, propName, transformRawValue(inputValue)) : transformShorthandValue(propName, inputValue.trim()); | ||
return propValue && propValue.$merge ? propValue.$merge : _defineProperty({}, propName, propValue); | ||
return propValues; | ||
}; | ||
@@ -848,0 +875,0 @@ |
{ | ||
"name": "css-to-react-native", | ||
"version": "2.3.0", | ||
"version": "2.3.1", | ||
"description": "Convert CSS text to a React Native stylesheet object", | ||
@@ -5,0 +5,0 @@ "main": "index.js", |
import transformCss from '..' | ||
it('transforms border none', () => { | ||
expect(transformCss([['border', 'none']])).toEqual({ | ||
borderWidth: 0, | ||
borderColor: 'black', | ||
borderStyle: 'solid', | ||
}) | ||
}) | ||
it('transforms border shorthand', () => { | ||
@@ -4,0 +12,0 @@ expect(transformCss([['border', '2px dashed #f00']])).toEqual({ |
@@ -53,9 +53,7 @@ /* eslint-disable no-param-reassign */ | ||
const isRawValue = allowShorthand === false || !(propName in transforms) | ||
const propValue = isRawValue | ||
? transformRawValue(inputValue) | ||
const propValues = isRawValue | ||
? { [propName]: transformRawValue(inputValue) } | ||
: transformShorthandValue(propName, inputValue.trim()) | ||
return propValue && propValue.$merge | ||
? propValue.$merge | ||
: { [propName]: propValue } | ||
return propValues | ||
} | ||
@@ -62,0 +60,0 @@ |
@@ -6,9 +6,7 @@ import { parseShadow } from './util' | ||
return { | ||
$merge: { | ||
shadowOffset: offset, | ||
shadowRadius: radius, | ||
shadowColor: color, | ||
shadowOpacity: 1, | ||
}, | ||
shadowOffset: offset, | ||
shadowRadius: radius, | ||
shadowColor: color, | ||
shadowOpacity: 1, | ||
} | ||
} |
@@ -16,3 +16,3 @@ import { tokens } from '../tokenTypes' | ||
tokenStream.expectEmpty() | ||
return { $merge: { flexGrow: 0, flexShrink: 0, flexBasis: 'auto' } } | ||
return { flexGrow: 0, flexShrink: 0, flexBasis: 'auto' } | ||
} | ||
@@ -22,3 +22,3 @@ | ||
if (tokenStream.matches(AUTO) && !tokenStream.hasTokens()) { | ||
return { $merge: { flexGrow: 1, flexShrink: 1, flexBasis: 'auto' } } | ||
return { flexGrow: 1, flexShrink: 1, flexBasis: 'auto' } | ||
} | ||
@@ -57,3 +57,3 @@ tokenStream.rewind() | ||
return { $merge: { flexGrow, flexShrink, flexBasis } } | ||
return { flexGrow, flexShrink, flexBasis } | ||
} |
@@ -52,3 +52,3 @@ import parseFontFamily from './fontFamily' | ||
const fontFamily = parseFontFamily(tokenStream) | ||
const { fontFamily } = parseFontFamily(tokenStream) | ||
@@ -62,3 +62,3 @@ if (fontStyle === undefined) fontStyle = defaultFontStyle | ||
return { $merge: out } | ||
return out | ||
} |
@@ -21,3 +21,3 @@ import { tokens } from '../tokenTypes' | ||
return fontFamily | ||
return { fontFamily } | ||
} |
@@ -1,4 +0,6 @@ | ||
import { regExpToken, tokens } from '../tokenTypes' | ||
import { tokens } from '../tokenTypes' | ||
import border from './border' | ||
import boxShadow from './boxShadow' | ||
import flex from './flex' | ||
import flexFlow from './flexFlow' | ||
import font from './font' | ||
@@ -10,3 +12,3 @@ import fontFamily from './fontFamily' | ||
import transform from './transform' | ||
import { directionFactory, anyOrderFactory, shadowOffsetFactory } from './util' | ||
import { directionFactory, parseShadowOffset } from './util' | ||
@@ -24,18 +26,4 @@ const { | ||
const background = tokenStream => ({ | ||
$merge: { backgroundColor: tokenStream.expect(COLOR) }, | ||
backgroundColor: tokenStream.expect(COLOR), | ||
}) | ||
const border = anyOrderFactory({ | ||
borderWidth: { | ||
tokens: [LENGTH, UNSUPPORTED_LENGTH_UNIT], | ||
default: 1, | ||
}, | ||
borderColor: { | ||
tokens: [COLOR], | ||
default: 'black', | ||
}, | ||
borderStyle: { | ||
tokens: [regExpToken(/^(solid|dashed|dotted)$/)], | ||
default: 'solid', | ||
}, | ||
}) | ||
const borderColor = directionFactory({ | ||
@@ -57,16 +45,14 @@ types: [WORD], | ||
const padding = directionFactory({ prefix: 'padding' }) | ||
const flexFlow = anyOrderFactory({ | ||
flexWrap: { | ||
tokens: [regExpToken(/(nowrap|wrap|wrap-reverse)/)], | ||
default: 'nowrap', | ||
}, | ||
flexDirection: { | ||
tokens: [regExpToken(/(row|row-reverse|column|column-reverse)/)], | ||
default: 'row', | ||
}, | ||
const fontVariant = tokenStream => ({ | ||
fontVariant: [tokenStream.expect(IDENT)], | ||
}) | ||
const fontVariant = tokenStream => [tokenStream.expect(IDENT)] | ||
const fontWeight = tokenStream => tokenStream.expect(WORD) // Also match numbers as strings | ||
const shadowOffset = shadowOffsetFactory() | ||
const textShadowOffset = shadowOffsetFactory() | ||
const fontWeight = tokenStream => ({ | ||
fontWeight: tokenStream.expect(WORD), // Also match numbers as strings | ||
}) | ||
const shadowOffset = tokenStream => ({ | ||
shadowOffset: parseShadowOffset(tokenStream), | ||
}) | ||
const textShadowOffset = tokenStream => ({ | ||
textShadowOffset: parseShadowOffset(tokenStream), | ||
}) | ||
@@ -73,0 +59,0 @@ export default { |
@@ -48,3 +48,3 @@ import { regExpToken, tokens } from '../tokenTypes' | ||
const $merge = { | ||
return { | ||
textDecorationLine: line !== undefined ? line : defaultTextDecorationLine, | ||
@@ -56,3 +56,2 @@ textDecorationColor: | ||
} | ||
return { $merge } | ||
} |
@@ -19,3 +19,3 @@ import { tokens } from '../tokenTypes' | ||
return lines.join(' ') | ||
return { textDecorationLine: lines.join(' ') } | ||
} |
@@ -6,8 +6,6 @@ import { parseShadow } from './util' | ||
return { | ||
$merge: { | ||
textShadowOffset: offset, | ||
textShadowRadius: radius, | ||
textShadowColor: color, | ||
}, | ||
textShadowOffset: offset, | ||
textShadowRadius: radius, | ||
textShadowColor: color, | ||
} | ||
} |
@@ -75,3 +75,3 @@ import { tokens } from '../tokenTypes' | ||
return transforms | ||
return { transform: transforms } | ||
} |
@@ -27,3 +27,3 @@ import { tokens } from '../tokenTypes' | ||
const output = { | ||
return { | ||
[keyFor(0)]: top, | ||
@@ -34,45 +34,5 @@ [keyFor(1)]: right, | ||
} | ||
return { $merge: output } | ||
} | ||
export const anyOrderFactory = (properties, delim = SPACE) => tokenStream => { | ||
const propertyNames = Object.keys(properties) | ||
const values = propertyNames.reduce((accum, propertyName) => { | ||
accum[propertyName] === undefined // eslint-disable-line | ||
return accum | ||
}, {}) | ||
let numParsed = 0 | ||
while (numParsed < propertyNames.length && tokenStream.hasTokens()) { | ||
if (numParsed) tokenStream.expect(delim) | ||
const matchedPropertyName = propertyNames.find( | ||
propertyName => | ||
values[propertyName] === undefined && | ||
properties[propertyName].tokens.some(token => | ||
tokenStream.matches(token) | ||
) | ||
) | ||
if (!matchedPropertyName) { | ||
tokenStream.throw() | ||
} else { | ||
values[matchedPropertyName] = tokenStream.lastValue | ||
} | ||
numParsed += 1 | ||
} | ||
tokenStream.expectEmpty() | ||
propertyNames.forEach(propertyName => { | ||
if (values[propertyName] === undefined) | ||
values[propertyName] = properties[propertyName].default | ||
}) | ||
return { $merge: values } | ||
} | ||
export const shadowOffsetFactory = () => tokenStream => { | ||
export const parseShadowOffset = tokenStream => { | ||
const width = tokenStream.expect(LENGTH) | ||
@@ -79,0 +39,0 @@ const height = tokenStream.matches(SPACE) ? tokenStream.expect(LENGTH) : width |
Environment variable access
Supply chain riskPackage accesses environment variables, which may be a sign of credential stuffing or data theft.
Found 1 instance in 1 package
84017
37
2379
4