taro-css-to-react-native 3.6.0-canary.9 → 3.6.1-alpha.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -4,25 +4,39 @@ Object.defineProperty(exports, "__esModule", {
4
4
  value: true
5
5
  });
6
6
  exports["default"] = void 0;
7
+
7
8
  var _tokenTypes = require("../tokenTypes");
9
+
8
10
  var _border = require("./border");
11
+
9
12
  var _boxShadow = _interopRequireDefault(require("./boxShadow"));
13
+
10
14
  var _flex = _interopRequireDefault(require("./flex"));
15
+
11
16
  var _font = _interopRequireDefault(require("./font"));
17
+
12
18
  var _fontFamily = _interopRequireDefault(require("./fontFamily"));
19
+
13
20
  var _textDecoration = _interopRequireDefault(require("./textDecoration"));
21
+
14
22
  var _textDecorationLine = _interopRequireDefault(require("./textDecorationLine"));
23
+
15
24
  var _textShadow = _interopRequireDefault(require("./textShadow"));
25
+
16
26
  var _transform = _interopRequireDefault(require("./transform"));
27
+
17
28
  var _util = require("./util");
29
+
18
30
  function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { "default": obj }; }
31
+
19
32
  var IDENT = _tokenTypes.tokens.IDENT,
20
- WORD = _tokenTypes.tokens.WORD,
21
- COLOR = _tokenTypes.tokens.COLOR,
22
- LENGTH = _tokenTypes.tokens.LENGTH,
23
- UNSUPPORTED_LENGTH_UNIT = _tokenTypes.tokens.UNSUPPORTED_LENGTH_UNIT,
24
- PERCENT = _tokenTypes.tokens.PERCENT,
25
- AUTO = _tokenTypes.tokens.AUTO;
33
+ WORD = _tokenTypes.tokens.WORD,
34
+ COLOR = _tokenTypes.tokens.COLOR,
35
+ LENGTH = _tokenTypes.tokens.LENGTH,
36
+ UNSUPPORTED_LENGTH_UNIT = _tokenTypes.tokens.UNSUPPORTED_LENGTH_UNIT,
37
+ PERCENT = _tokenTypes.tokens.PERCENT,
38
+ AUTO = _tokenTypes.tokens.AUTO;
39
+
26
40
  var background = function background(tokenStream) {
27
41
  return {
28
42
  $merge: {
@@ -30,6 +44,7 @@ var background = function background(tokenStream) {
30
44
  }
31
45
  };
32
46
  };
47
+
33
48
  var margin = (0, _util.directionFactory)({
34
49
  types: [LENGTH, UNSUPPORTED_LENGTH_UNIT, PERCENT, AUTO],
35
50
  prefix: 'margin'
@@ -47,12 +62,16 @@ var flexFlow = (0, _util.anyOrderFactory)({
47
62
  "default": 'row'
48
63
  }
49
64
  });
65
+
50
66
  var fontVariant = function fontVariant(tokenStream) {
51
67
  return [tokenStream.expect(IDENT)];
52
68
  };
69
+
53
70
  var fontWeight = function fontWeight(tokenStream) {
54
71
  return tokenStream.expect(WORD);
55
72
  }; // Also match numbers as strings
73
+
74
+
56
75
  var shadowOffset = (0, _util.shadowOffsetFactory)();
57
76
  var textShadowOffset = (0, _util.shadowOffsetFactory)();
58
77
  var _default = {
@@ -4,31 +4,38 @@ Object.defineProperty(exports, "__esModule", {
4
4
  value: true
5
5
  });
6
6
  exports["default"] = void 0;
7
+
7
8
  var _tokenTypes = require("../tokenTypes");
9
+
8
10
  var SPACE = _tokenTypes.tokens.SPACE,
9
- LINE = _tokenTypes.tokens.LINE,
10
- COLOR = _tokenTypes.tokens.COLOR;
11
+ LINE = _tokenTypes.tokens.LINE,
12
+ COLOR = _tokenTypes.tokens.COLOR;
11
13
  var STYLE = (0, _tokenTypes.regExpToken)(/^(solid|double|dotted|dashed)$/);
12
14
  var defaultTextDecorationLine = 'none';
13
15
  var defaultTextDecorationStyle = 'solid';
14
16
  var defaultTextDecorationColor = 'black';
17
+
15
18
  var _default = function _default(tokenStream) {
16
19
  var line;
17
20
  var style;
18
21
  var color;
19
22
  var didParseFirst = false;
23
+
20
24
  while (tokenStream.hasTokens()) {
21
25
  if (didParseFirst) tokenStream.expect(SPACE);
26
+
22
27
  if (typeof line === 'undefined' && tokenStream.matches(LINE)) {
23
28
  var lines = [tokenStream.lastValue.toLowerCase()];
24
29
  tokenStream.saveRewindPoint();
30
+
25
31
  if (lines[0] !== 'none' && tokenStream.matches(SPACE) && tokenStream.matches(LINE)) {
26
- lines.push(tokenStream.lastValue.toLowerCase());
27
- // Underline comes before line-through
32
+ lines.push(tokenStream.lastValue.toLowerCase()); // Underline comes before line-through
33
+
28
34
  lines.sort().reverse();
29
35
  } else {
30
36
  tokenStream.rewind();
31
37
  }
38
+
32
39
  line = lines.join(' ');
33
40
  } else if (typeof style === 'undefined' && tokenStream.matches(STYLE)) {
34
41
  style = tokenStream.lastValue;
@@ -37,8 +44,10 @@ var _default = function _default(tokenStream) {
37
44
  } else {
38
45
  tokenStream["throw"]();
39
46
  }
47
+
40
48
  didParseFirst = true;
41
49
  }
50
+
42
51
  var $merge = {
43
52
  textDecorationLine: typeof line !== 'undefined' ? line : defaultTextDecorationLine,
44
53
  textDecorationColor: typeof color !== 'undefined' ? color : defaultTextDecorationColor,
@@ -48,4 +57,5 @@ var _default = function _default(tokenStream) {
48
57
  $merge: $merge
49
58
  };
50
59
  };
60
+
51
61
  exports["default"] = _default;
@@ -4,18 +4,24 @@ Object.defineProperty(exports, "__esModule", {
4
4
  value: true
5
5
  });
6
6
  exports["default"] = void 0;
7
+
7
8
  var _tokenTypes = require("../tokenTypes");
9
+
8
10
  var SPACE = _tokenTypes.tokens.SPACE,
9
- LINE = _tokenTypes.tokens.LINE;
11
+ LINE = _tokenTypes.tokens.LINE;
12
+
10
13
  var _default = function _default(tokenStream) {
11
14
  var lines = [];
12
15
  var didParseFirst = false;
16
+
13
17
  while (tokenStream.hasTokens()) {
14
18
  if (didParseFirst) tokenStream.expect(SPACE);
15
19
  lines.push(tokenStream.expect(LINE).toLowerCase());
16
20
  didParseFirst = true;
17
21
  }
22
+
18
23
  lines.sort().reverse();
19
24
  return lines.join(' ');
20
25
  };
26
+
21
27
  exports["default"] = _default;
@@ -4,12 +4,15 @@ Object.defineProperty(exports, "__esModule", {
4
4
  value: true
5
5
  });
6
6
  exports["default"] = void 0;
7
+
7
8
  var _util = require("./util");
9
+
8
10
  var _default = function _default(tokenStream) {
9
11
  var _parseShadow = (0, _util.parseShadow)(tokenStream),
10
- offset = _parseShadow.offset,
11
- radius = _parseShadow.radius,
12
- color = _parseShadow.color;
12
+ offset = _parseShadow.offset,
13
+ radius = _parseShadow.radius,
14
+ color = _parseShadow.color;
15
+
13
16
  return {
14
17
  $merge: {
15
18
  textShadowOffset: offset,
@@ -18,4 +21,5 @@ var _default = function _default(tokenStream) {
18
21
  }
19
22
  };
20
23
  };
24
+
21
25
  exports["default"] = _default;
@@ -4,16 +4,17 @@ Object.defineProperty(exports, "__esModule", {
4
4
  value: true
5
5
  });
6
6
  exports["default"] = void 0;
7
+
7
8
  var _tokenTypes = require("../tokenTypes");
8
- function _typeof(obj) { "@babel/helpers - typeof"; return _typeof = "function" == typeof Symbol && "symbol" == typeof Symbol.iterator ? function (obj) { return typeof obj; } : function (obj) { return obj && "function" == typeof Symbol && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj; }, _typeof(obj); }
9
- function _defineProperty(obj, key, value) { key = _toPropertyKey(key); if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }
10
- function _toPropertyKey(arg) { var key = _toPrimitive(arg, "string"); return _typeof(key) === "symbol" ? key : String(key); }
11
- function _toPrimitive(input, hint) { if (_typeof(input) !== "object" || input === null) return input; var prim = input[Symbol.toPrimitive]; if (prim !== undefined) { var res = prim.call(input, hint || "default"); if (_typeof(res) !== "object") return res; throw new TypeError("@@toPrimitive must return a primitive value."); } return (hint === "string" ? String : Number)(input); }
9
+
10
+ function _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }
11
+
12
12
  var SPACE = _tokenTypes.tokens.SPACE,
13
- COMMA = _tokenTypes.tokens.COMMA,
14
- LENGTH = _tokenTypes.tokens.LENGTH,
15
- NUMBER = _tokenTypes.tokens.NUMBER,
16
- ANGLE = _tokenTypes.tokens.ANGLE;
13
+ COMMA = _tokenTypes.tokens.COMMA,
14
+ LENGTH = _tokenTypes.tokens.LENGTH,
15
+ NUMBER = _tokenTypes.tokens.NUMBER,
16
+ ANGLE = _tokenTypes.tokens.ANGLE;
17
+
17
18
  var oneOfType = function oneOfType(tokenType) {
18
19
  return function (functionStream) {
19
20
  var value = functionStream.expect(tokenType);
@@ -21,14 +22,17 @@ var oneOfType = function oneOfType(tokenType) {
21
22
  return value;
22
23
  };
23
24
  };
25
+
24
26
  var singleNumber = oneOfType(NUMBER);
25
27
  var singleLength = oneOfType(LENGTH);
26
28
  var singleAngle = oneOfType(ANGLE);
29
+
27
30
  var xyTransformFactory = function xyTransformFactory(tokenType) {
28
31
  return function (key, valueIfOmitted) {
29
32
  return function (functionStream) {
30
33
  var x = functionStream.expect(tokenType);
31
34
  var y;
35
+
32
36
  if (functionStream.hasTokens()) {
33
37
  functionStream.expect(COMMA);
34
38
  y = functionStream.expect(tokenType);
@@ -39,11 +43,13 @@ var xyTransformFactory = function xyTransformFactory(tokenType) {
39
43
  // I.e. scale(5) => [{ scale: 5 }] rather than [{ scaleX: 5 }, { scaleY: 5 }]
40
44
  return x;
41
45
  }
46
+
42
47
  functionStream.expectEmpty();
43
48
  return [_defineProperty({}, "".concat(key, "Y"), y), _defineProperty({}, "".concat(key, "X"), x)];
44
49
  };
45
50
  };
46
51
  };
52
+
47
53
  var xyNumber = xyTransformFactory(NUMBER);
48
54
  var xyLength = xyTransformFactory(LENGTH);
49
55
  var xyAngle = xyTransformFactory(ANGLE);
@@ -63,20 +69,26 @@ var partTransforms = {
63
69
  skewY: singleAngle,
64
70
  skew: xyAngle('skew', '0deg')
65
71
  };
72
+
66
73
  var _default = function _default(tokenStream) {
67
74
  var transforms = [];
68
75
  var didParseFirst = false;
76
+
69
77
  while (tokenStream.hasTokens()) {
70
78
  if (didParseFirst) tokenStream.expect(SPACE);
71
79
  var functionStream = tokenStream.expectFunction();
72
80
  var functionName = functionStream.functionName;
73
81
  var transformedValues = partTransforms[functionName](functionStream);
82
+
74
83
  if (!Array.isArray(transformedValues)) {
75
84
  transformedValues = [_defineProperty({}, functionName, transformedValues)];
76
85
  }
86
+
77
87
  transforms = transformedValues.concat(transforms);
78
88
  didParseFirst = true;
79
89
  }
90
+
80
91
  return transforms;
81
92
  };
93
+
82
94
  exports["default"] = _default;
@@ -1,72 +1,87 @@
1
1
  "use strict";
2
2
 
3
- function _typeof(obj) { "@babel/helpers - typeof"; return _typeof = "function" == typeof Symbol && "symbol" == typeof Symbol.iterator ? function (obj) { return typeof obj; } : function (obj) { return obj && "function" == typeof Symbol && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj; }, _typeof(obj); }
4
3
  Object.defineProperty(exports, "__esModule", {
5
4
  value: true
6
5
  });
7
6
  exports.shadowOffsetFactory = exports.parseShadow = exports.directionFactory = exports.anyOrderFactory = void 0;
7
+
8
8
  var _tokenTypes = require("../tokenTypes");
9
- function _defineProperty(obj, key, value) { key = _toPropertyKey(key); if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }
10
- function _toPropertyKey(arg) { var key = _toPrimitive(arg, "string"); return _typeof(key) === "symbol" ? key : String(key); }
11
- function _toPrimitive(input, hint) { if (_typeof(input) !== "object" || input === null) return input; var prim = input[Symbol.toPrimitive]; if (prim !== undefined) { var res = prim.call(input, hint || "default"); if (_typeof(res) !== "object") return res; throw new TypeError("@@toPrimitive must return a primitive value."); } return (hint === "string" ? String : Number)(input); }
9
+
10
+ function _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }
11
+
12
12
  function _toConsumableArray(arr) { return _arrayWithoutHoles(arr) || _iterableToArray(arr) || _unsupportedIterableToArray(arr) || _nonIterableSpread(); }
13
+
13
14
  function _nonIterableSpread() { throw new TypeError("Invalid attempt to spread non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method."); }
15
+
14
16
  function _unsupportedIterableToArray(o, minLen) { if (!o) return; if (typeof o === "string") return _arrayLikeToArray(o, minLen); var n = Object.prototype.toString.call(o).slice(8, -1); if (n === "Object" && o.constructor) n = o.constructor.name; if (n === "Map" || n === "Set") return Array.from(o); if (n === "Arguments" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _arrayLikeToArray(o, minLen); }
17
+
15
18
  function _iterableToArray(iter) { if (typeof Symbol !== "undefined" && iter[Symbol.iterator] != null || iter["@@iterator"] != null) return Array.from(iter); }
19
+
16
20
  function _arrayWithoutHoles(arr) { if (Array.isArray(arr)) return _arrayLikeToArray(arr); }
21
+
17
22
  function _arrayLikeToArray(arr, len) { if (len == null || len > arr.length) len = arr.length; for (var i = 0, arr2 = new Array(len); i < len; i++) { arr2[i] = arr[i]; } return arr2; }
23
+
18
24
  var LENGTH = _tokenTypes.tokens.LENGTH,
19
- UNSUPPORTED_LENGTH_UNIT = _tokenTypes.tokens.UNSUPPORTED_LENGTH_UNIT,
20
- PERCENT = _tokenTypes.tokens.PERCENT,
21
- COLOR = _tokenTypes.tokens.COLOR,
22
- SPACE = _tokenTypes.tokens.SPACE,
23
- NONE = _tokenTypes.tokens.NONE;
25
+ UNSUPPORTED_LENGTH_UNIT = _tokenTypes.tokens.UNSUPPORTED_LENGTH_UNIT,
26
+ PERCENT = _tokenTypes.tokens.PERCENT,
27
+ COLOR = _tokenTypes.tokens.COLOR,
28
+ SPACE = _tokenTypes.tokens.SPACE,
29
+ NONE = _tokenTypes.tokens.NONE;
30
+
24
31
  var directionFactory = function directionFactory(_ref) {
25
32
  var _ref$types = _ref.types,
26
- types = _ref$types === void 0 ? [LENGTH, UNSUPPORTED_LENGTH_UNIT, PERCENT] : _ref$types,
27
- _ref$directions = _ref.directions,
28
- directions = _ref$directions === void 0 ? ['Top', 'Right', 'Bottom', 'Left'] : _ref$directions,
29
- _ref$prefix = _ref.prefix,
30
- prefix = _ref$prefix === void 0 ? '' : _ref$prefix,
31
- _ref$suffix = _ref.suffix,
32
- suffix = _ref$suffix === void 0 ? '' : _ref$suffix;
33
+ types = _ref$types === void 0 ? [LENGTH, UNSUPPORTED_LENGTH_UNIT, PERCENT] : _ref$types,
34
+ _ref$directions = _ref.directions,
35
+ directions = _ref$directions === void 0 ? ['Top', 'Right', 'Bottom', 'Left'] : _ref$directions,
36
+ _ref$prefix = _ref.prefix,
37
+ prefix = _ref$prefix === void 0 ? '' : _ref$prefix,
38
+ _ref$suffix = _ref.suffix,
39
+ suffix = _ref$suffix === void 0 ? '' : _ref$suffix;
33
40
  return function (tokenStream) {
34
41
  var _output;
35
- var values = [];
36
42
 
37
- // borderWidth doesn't currently allow a percent value, but may do in the future
43
+ var values = []; // borderWidth doesn't currently allow a percent value, but may do in the future
44
+
38
45
  values.push(tokenStream.expect.apply(tokenStream, _toConsumableArray(types)));
46
+
39
47
  while (values.length < 4 && tokenStream.hasTokens()) {
40
48
  tokenStream.expect(SPACE);
41
49
  values.push(tokenStream.expect.apply(tokenStream, _toConsumableArray(types)));
42
50
  }
51
+
43
52
  tokenStream.expectEmpty();
44
53
  var top = values[0],
45
- _values$ = values[1],
46
- right = _values$ === void 0 ? top : _values$,
47
- _values$2 = values[2],
48
- bottom = _values$2 === void 0 ? top : _values$2,
49
- _values$3 = values[3],
50
- left = _values$3 === void 0 ? right : _values$3;
54
+ _values$ = values[1],
55
+ right = _values$ === void 0 ? top : _values$,
56
+ _values$2 = values[2],
57
+ bottom = _values$2 === void 0 ? top : _values$2,
58
+ _values$3 = values[3],
59
+ left = _values$3 === void 0 ? right : _values$3;
60
+
51
61
  var keyFor = function keyFor(n) {
52
62
  return "".concat(prefix).concat(directions[n]).concat(suffix);
53
63
  };
64
+
54
65
  var output = (_output = {}, _defineProperty(_output, keyFor(0), top), _defineProperty(_output, keyFor(1), right), _defineProperty(_output, keyFor(2), bottom), _defineProperty(_output, keyFor(3), left), _output);
55
66
  return {
56
67
  $merge: output
57
68
  };
58
69
  };
59
70
  };
71
+
60
72
  exports.directionFactory = directionFactory;
73
+
61
74
  var anyOrderFactory = function anyOrderFactory(properties) {
62
75
  var delim = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : SPACE;
63
76
  return function (tokenStream) {
64
77
  var propertyNames = Object.keys(properties);
65
78
  var values = propertyNames.reduce(function (accum, propertyName) {
66
79
  typeof accum[propertyName] === 'undefined'; // eslint-disable-line
80
+
67
81
  return accum;
68
82
  }, {});
69
83
  var numParsed = 0;
84
+
70
85
  while (numParsed < propertyNames.length && tokenStream.hasTokens()) {
71
86
  if (numParsed) tokenStream.expect(delim);
72
87
  var matchedPropertyName = propertyNames.find(function (propertyName) {
@@ -74,13 +89,16 @@ var anyOrderFactory = function anyOrderFactory(properties) {
74
89
  return tokenStream.matches(token);
75
90
  });
76
91
  });
92
+
77
93
  if (!matchedPropertyName) {
78
94
  tokenStream["throw"]();
79
95
  } else {
80
96
  values[matchedPropertyName] = tokenStream.lastValue;
81
97
  }
98
+
82
99
  numParsed += 1;
83
100
  }
101
+
84
102
  tokenStream.expectEmpty();
85
103
  propertyNames.forEach(function (propertyName) {
86
104
  if (typeof values[propertyName] === 'undefined') {
@@ -92,7 +110,9 @@ var anyOrderFactory = function anyOrderFactory(properties) {
92
110
  };
93
111
  };
94
112
  };
113
+
95
114
  exports.anyOrderFactory = anyOrderFactory;
115
+
96
116
  var shadowOffsetFactory = function shadowOffsetFactory() {
97
117
  return function (tokenStream) {
98
118
  var width = tokenStream.expect(LENGTH);
@@ -104,12 +124,15 @@ var shadowOffsetFactory = function shadowOffsetFactory() {
104
124
  };
105
125
  };
106
126
  };
127
+
107
128
  exports.shadowOffsetFactory = shadowOffsetFactory;
129
+
108
130
  var parseShadow = function parseShadow(tokenStream) {
109
131
  var offsetX;
110
132
  var offsetY;
111
133
  var radius;
112
134
  var color;
135
+
113
136
  if (tokenStream.matches(NONE)) {
114
137
  tokenStream.expectEmpty();
115
138
  return {
@@ -121,27 +144,34 @@ var parseShadow = function parseShadow(tokenStream) {
121
144
  color: 'black'
122
145
  };
123
146
  }
147
+
124
148
  var didParseFirst = false;
149
+
125
150
  while (tokenStream.hasTokens()) {
126
151
  if (didParseFirst) tokenStream.expect(SPACE);
152
+
127
153
  if (typeof offsetX === 'undefined' && tokenStream.matches(LENGTH, UNSUPPORTED_LENGTH_UNIT)) {
128
154
  offsetX = tokenStream.lastValue;
155
+
129
156
  if (tokenStream.matches(SPACE) && tokenStream.matches(LENGTH, UNSUPPORTED_LENGTH_UNIT)) {
130
157
  offsetY = tokenStream.lastValue;
131
158
  } else {
132
159
  offsetY = offsetX;
133
160
  tokenStream.rewind();
134
161
  }
162
+
135
163
  tokenStream.saveRewindPoint();
164
+
136
165
  if (tokenStream.matches(SPACE) && tokenStream.matches(LENGTH, UNSUPPORTED_LENGTH_UNIT)) {
137
166
  // blur-radius
138
167
  radius = tokenStream.lastValue;
139
168
  } else {
140
169
  tokenStream.rewind();
141
170
  }
171
+
142
172
  tokenStream.saveRewindPoint();
143
- if (tokenStream.matches(SPACE) && tokenStream.matches(LENGTH, UNSUPPORTED_LENGTH_UNIT)) {
144
- // spread-radius
173
+
174
+ if (tokenStream.matches(SPACE) && tokenStream.matches(LENGTH, UNSUPPORTED_LENGTH_UNIT)) {// spread-radius
145
175
  // 兼容web写法,防止报错
146
176
  } else {
147
177
  tokenStream.rewind();
@@ -151,8 +181,10 @@ var parseShadow = function parseShadow(tokenStream) {
151
181
  } else {
152
182
  tokenStream["throw"]();
153
183
  }
184
+
154
185
  didParseFirst = true;
155
186
  }
187
+
156
188
  if (typeof offsetX === 'undefined') tokenStream["throw"]();
157
189
  return {
158
190
  offset: {
@@ -163,4 +195,5 @@ var parseShadow = function parseShadow(tokenStream) {
163
195
  color: typeof color !== 'undefined' ? color : 'black'
164
196
  };
165
197
  };
198
+
166
199
  exports.parseShadow = parseShadow;
package/dist/index.js CHANGED
@@ -10,24 +10,38 @@ Object.defineProperty(exports, "transformCSS", {
10
10
  return _cssToReactNative["default"];
11
11
  }
12
12
  });
13
+
13
14
  var _parse = _interopRequireDefault(require("css/lib/parse"));
15
+
14
16
  var _cssMediaquery = _interopRequireDefault(require("css-mediaquery"));
17
+
15
18
  var _cssToReactNative = _interopRequireDefault(require("./css-to-react-native"));
19
+
16
20
  var _features = require("./transforms/media-queries/features");
21
+
17
22
  var _types = require("./transforms/media-queries/types");
23
+
18
24
  var _rem = require("./transforms/rem");
25
+
19
26
  var _allEqual = require("./utils/allEqual");
27
+
20
28
  var _camelCase = require("./utils/camelCase");
29
+
21
30
  var _sortRules = require("./utils/sortRules");
31
+
22
32
  var _values = require("./utils/values");
33
+
23
34
  function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { "default": obj }; }
35
+
24
36
  var lengthRe = /^(0$|(?:[+-]?(?:\d*\.)?\d+(?:[Ee][+-]?\d+)?)(?=px|rem$))/;
25
37
  var viewportUnitRe = /^([+-]?[0-9.]+)(vh|vw|vmin|vmax)$/;
26
38
  var percentRe = /^([+-]?(?:\d*\.)?\d+(?:[Ee][+-]?\d+)?%)$/;
27
39
  var unsupportedUnitRe = /^([+-]?(?:\d*\.)?\d+(?:[Ee][+-]?\d+)?(ch|em|ex|cm|mm|in|pc|pt))$/;
28
40
  var shorthandBorderProps = ['border-radius', 'border-width', 'border-color', 'border-style'];
41
+
29
42
  var transformDecls = function transformDecls(styles, declarations, result) {
30
43
  var options = arguments.length > 3 && arguments[3] !== undefined ? arguments[3] : {};
44
+
31
45
  for (var d in declarations) {
32
46
  var declaration = declarations[d];
33
47
  if (declaration.type !== 'declaration') continue;
@@ -37,27 +51,33 @@ var transformDecls = function transformDecls(styles, declarations, result) {
37
51
  var isViewportUnit = viewportUnitRe.test(value);
38
52
  var isPercent = percentRe.test(value);
39
53
  var isUnsupportedUnit = unsupportedUnitRe.test(value);
54
+
40
55
  if (property === 'line-height' && !isLengthUnit && !isViewportUnit && !isPercent && !isUnsupportedUnit) {
41
56
  // ignore invalid value avoid throw error cause app crash
42
57
  continue;
43
58
  }
59
+
44
60
  if (!result.__viewportUnits && isViewportUnit) {
45
61
  result.__viewportUnits = true;
46
- }
47
- // scalable option, when it is false, transform single value 'px' unit to 'PX'
62
+ } // scalable option, when it is false, transform single value 'px' unit to 'PX'
48
63
  // do not be wrapped by scalePx2dp function
64
+
65
+
49
66
  if (typeof options.scalable === 'boolean' && !options.scalable && /(\d+)px/.test(value)) {
50
67
  value = value.replace(/(\d+)px/g, '$1PX');
51
- }
52
- // expect value is legal so that remove !import
68
+ } // expect value is legal so that remove !import
69
+
70
+
53
71
  if (/!import/i.test(value)) {
54
72
  value = value.replace(/!import/, '');
55
73
  }
74
+
56
75
  if (shorthandBorderProps.indexOf(property) > -1) {
57
76
  // transform single value shorthand border properties back to
58
77
  // shorthand form to support styling `Image`.
59
78
  var transformed = (0, _cssToReactNative["default"])([[property, value]]);
60
79
  var vals = (0, _values.values)(transformed);
80
+
61
81
  if ((0, _allEqual.allEqual)(vals)) {
62
82
  var replacement = {};
63
83
  replacement[(0, _camelCase.camelCase)(property)] = vals[0];
@@ -70,48 +90,62 @@ var transformDecls = function transformDecls(styles, declarations, result) {
70
90
  }
71
91
  }
72
92
  };
93
+
73
94
  var transform = function transform(css, options) {
74
95
  var _parseCSS = (0, _parse["default"])(css),
75
- stylesheet = _parseCSS.stylesheet;
96
+ stylesheet = _parseCSS.stylesheet;
97
+
76
98
  var rules = (0, _sortRules.sortRules)(stylesheet.rules);
77
99
  var result = {};
100
+
78
101
  for (var r in rules) {
79
102
  var rule = rules[r];
103
+
80
104
  for (var s in rule.selectors) {
81
105
  if (rule.selectors[s] === ':export') {
82
106
  if (!result.__exportProps) {
83
107
  result.__exportProps = {};
84
108
  }
109
+
85
110
  rule.declarations.forEach(function (_ref) {
86
111
  var property = _ref.property,
87
- value = _ref.value;
112
+ value = _ref.value;
88
113
  var isAlreadyDefinedAsClass = typeof result[property] !== 'undefined' && typeof result.__exportProps[property] === 'undefined';
114
+
89
115
  if (isAlreadyDefinedAsClass) {
90
116
  throw new Error("Failed to parse :export block because a CSS class in the same file is already using the name \"".concat(property, "\""));
91
117
  }
118
+
92
119
  result.__exportProps[property] = value;
93
120
  });
94
121
  continue;
95
122
  }
123
+
96
124
  if (rule.selectors[s].indexOf('.') !== 0 || rule.selectors[s].indexOf(':') !== -1 || rule.selectors[s].indexOf('[') !== -1 || rule.selectors[s].indexOf('~') !== -1 || rule.selectors[s].indexOf('>') !== -1 || rule.selectors[s].indexOf('+') !== -1 || rule.selectors[s].indexOf(' ') !== -1) {
97
125
  continue;
98
126
  }
127
+
99
128
  var selector = rule.selectors[s].replace(/^\./, '');
100
129
  var styles = result[selector] = result[selector] || {};
101
130
  transformDecls(styles, rule.declarations, result, options);
102
131
  }
132
+
103
133
  if (rule.type === 'media' && options != null && options.parseMediaQueries === true) {
104
134
  var parsed = _cssMediaquery["default"].parse(rule.media);
135
+
105
136
  parsed.forEach(function (mq) {
106
137
  if (_types.mediaQueryTypes.indexOf(mq.type) === -1) {
107
138
  throw new Error("Failed to parse media query type \"".concat(mq.type, "\""));
108
139
  }
140
+
109
141
  mq.expressions.forEach(function (e) {
110
142
  var mf = e.modifier ? "".concat(e.modifier, "-").concat(e.feature) : e.feature;
111
143
  var val = e.value ? ": ".concat(e.value) : '';
144
+
112
145
  if (_features.mediaQueryFeatures.indexOf(e.feature) === -1) {
113
146
  throw new Error("Failed to parse media query feature \"".concat(mf, "\""));
114
147
  }
148
+
115
149
  if (_features.dimensionFeatures.indexOf(e.feature) > -1 && lengthRe.test(e.value) === false) {
116
150
  throw new Error("Failed to parse media query expression \"(".concat(mf).concat(val, ")\""));
117
151
  }
@@ -120,22 +154,29 @@ var transform = function transform(css, options) {
120
154
  var media = '@media ' + rule.media;
121
155
  result.__mediaQueries = result.__mediaQueries || {};
122
156
  result.__mediaQueries[media] = parsed;
157
+
123
158
  for (var _r in rule.rules) {
124
159
  var ruleRule = rule.rules[_r];
160
+
125
161
  for (var _s in ruleRule.selectors) {
126
162
  result[media] = result[media] || {};
163
+
127
164
  var _selector = ruleRule.selectors[_s].replace(/^\./, '');
165
+
128
166
  var mediaStyles = result[media][_selector] = result[media][_selector] || {};
129
167
  transformDecls(mediaStyles, ruleRule.declarations, result, options);
130
168
  }
131
169
  }
132
170
  }
133
171
  }
172
+
134
173
  if (result.__exportProps) {
135
174
  Object.assign(result, result.__exportProps);
136
175
  delete result.__exportProps;
137
176
  }
177
+
138
178
  return result;
139
179
  };
180
+
140
181
  var _default = transform;
141
182
  exports["default"] = _default;
@@ -4,9 +4,11 @@ Object.defineProperty(exports, "__esModule", {
4
4
  value: true
5
5
  });
6
6
  exports.remToPx = void 0;
7
+
7
8
  var remToPx = function remToPx(value) {
8
9
  return value.replace(/(\d*\.?\d+)rem/g, function (match, m1) {
9
10
  return parseFloat(m1, 10) * 16 + 'px';
10
11
  });
11
12
  };
13
+
12
14
  exports.remToPx = remToPx;
@@ -4,9 +4,11 @@ Object.defineProperty(exports, "__esModule", {
4
4
  value: true
5
5
  });
6
6
  exports.allEqual = void 0;
7
+
7
8
  var allEqual = function allEqual(arr) {
8
9
  return arr.every(function (v) {
9
10
  return v === arr[0];
10
11
  });
11
12
  };
13
+
12
14
  exports.allEqual = allEqual;