@react-pdf/stylesheet 4.2.5 → 5.0.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.
- package/lib/index.js +213 -221
- package/package.json +4 -12
- package/lib/index.cjs +0 -768
package/lib/index.cjs
DELETED
|
@@ -1,768 +0,0 @@
|
|
|
1
|
-
'use strict';
|
|
2
|
-
|
|
3
|
-
Object.defineProperty(exports, '__esModule', { value: true });
|
|
4
|
-
|
|
5
|
-
var fns = require('@react-pdf/fns');
|
|
6
|
-
var parse$1 = require('postcss-value-parser/lib/parse.js');
|
|
7
|
-
var parseUnit = require('postcss-value-parser/lib/unit.js');
|
|
8
|
-
var hlsToHex = require('hsl-to-hex');
|
|
9
|
-
var colorString = require('color-string');
|
|
10
|
-
var _extends = require('@babel/runtime/helpers/extends');
|
|
11
|
-
var matchMedia = require('media-engine');
|
|
12
|
-
|
|
13
|
-
function _interopDefaultCompat (e) { return e && typeof e === 'object' && 'default' in e ? e : { default: e }; }
|
|
14
|
-
|
|
15
|
-
var parse__default = /*#__PURE__*/_interopDefaultCompat(parse$1);
|
|
16
|
-
var parseUnit__default = /*#__PURE__*/_interopDefaultCompat(parseUnit);
|
|
17
|
-
var hlsToHex__default = /*#__PURE__*/_interopDefaultCompat(hlsToHex);
|
|
18
|
-
var colorString__default = /*#__PURE__*/_interopDefaultCompat(colorString);
|
|
19
|
-
var _extends__default = /*#__PURE__*/_interopDefaultCompat(_extends);
|
|
20
|
-
var matchMedia__default = /*#__PURE__*/_interopDefaultCompat(matchMedia);
|
|
21
|
-
|
|
22
|
-
// https://developer.mozilla.org/en-US/docs/Web/CSS/flex#values
|
|
23
|
-
|
|
24
|
-
// TODO: change flex defaults to [0, 1, 'auto'] as in spec in next major release
|
|
25
|
-
var flexDefaults = [1, 1, 0];
|
|
26
|
-
/**
|
|
27
|
-
* @type {(number | 'auto')[]}
|
|
28
|
-
*/
|
|
29
|
-
var flexAuto = [1, 1, 'auto'];
|
|
30
|
-
var expandFlex = function expandFlex(key, value) {
|
|
31
|
-
/**
|
|
32
|
-
* @type {(number | 'auto')[]}
|
|
33
|
-
*/
|
|
34
|
-
var defaults = flexDefaults;
|
|
35
|
-
var matches = [];
|
|
36
|
-
if (value === 'auto') {
|
|
37
|
-
defaults = flexAuto;
|
|
38
|
-
} else {
|
|
39
|
-
matches = ("" + value).split(' ');
|
|
40
|
-
}
|
|
41
|
-
var flexGrow = matches[0] || defaults[0];
|
|
42
|
-
var flexShrink = matches[1] || defaults[1];
|
|
43
|
-
var flexBasis = matches[2] || defaults[2];
|
|
44
|
-
return {
|
|
45
|
-
flexGrow: flexGrow,
|
|
46
|
-
flexShrink: flexShrink,
|
|
47
|
-
flexBasis: flexBasis
|
|
48
|
-
};
|
|
49
|
-
};
|
|
50
|
-
|
|
51
|
-
/* eslint-disable no-plusplus */
|
|
52
|
-
// This file is ran directly with Node - needs to have .js extension
|
|
53
|
-
// eslint-disable-next-line import/extensions
|
|
54
|
-
var BOX_MODEL_UNITS = 'px,in,mm,cm,pt,%,vw,vh';
|
|
55
|
-
var logError = function logError(style, value) {
|
|
56
|
-
console.error("\n @react-pdf/stylesheet parsing error:\n\n " + style + ": " + value + ",\n " + ' '.repeat(style.length + 2) + "^\n Unsupported " + style + " value format\n ");
|
|
57
|
-
};
|
|
58
|
-
|
|
59
|
-
/**
|
|
60
|
-
* @param {Object} options
|
|
61
|
-
* @param {Function} [options.expandsTo]
|
|
62
|
-
* @param {number} [options.maxValues]
|
|
63
|
-
* @param {boolean} [options.autoSupported]
|
|
64
|
-
*/
|
|
65
|
-
var expandBoxModel = function expandBoxModel(_temp) {
|
|
66
|
-
var _ref = _temp === void 0 ? {} : _temp,
|
|
67
|
-
expandsTo = _ref.expandsTo,
|
|
68
|
-
_ref$maxValues = _ref.maxValues,
|
|
69
|
-
maxValues = _ref$maxValues === void 0 ? 1 : _ref$maxValues,
|
|
70
|
-
_ref$autoSupported = _ref.autoSupported,
|
|
71
|
-
autoSupported = _ref$autoSupported === void 0 ? false : _ref$autoSupported;
|
|
72
|
-
return function (model, value) {
|
|
73
|
-
var _ref2;
|
|
74
|
-
var nodes = parse__default.default("" + value);
|
|
75
|
-
var parts = [];
|
|
76
|
-
for (var i = 0; i < nodes.length; i++) {
|
|
77
|
-
var node = nodes[i];
|
|
78
|
-
|
|
79
|
-
// value contains `calc`, `url` or other css function
|
|
80
|
-
// `,`, `/` or strings that unsupported by margin and padding
|
|
81
|
-
if (node.type === 'function' || node.type === 'string' || node.type === 'div') {
|
|
82
|
-
logError(model, value);
|
|
83
|
-
return {};
|
|
84
|
-
}
|
|
85
|
-
if (node.type === 'word') {
|
|
86
|
-
if (node.value === 'auto' && autoSupported) {
|
|
87
|
-
parts.push(node.value);
|
|
88
|
-
} else {
|
|
89
|
-
var result = parseUnit__default.default(node.value);
|
|
90
|
-
|
|
91
|
-
// when unit isn't specified this condition is true
|
|
92
|
-
if (result && BOX_MODEL_UNITS.includes(result.unit)) {
|
|
93
|
-
parts.push(node.value);
|
|
94
|
-
} else {
|
|
95
|
-
logError(model, value);
|
|
96
|
-
return {};
|
|
97
|
-
}
|
|
98
|
-
}
|
|
99
|
-
}
|
|
100
|
-
}
|
|
101
|
-
|
|
102
|
-
// checks that we have enough parsed values
|
|
103
|
-
if (parts.length > maxValues) {
|
|
104
|
-
logError(model, value);
|
|
105
|
-
return {};
|
|
106
|
-
}
|
|
107
|
-
var first = parts[0];
|
|
108
|
-
if (expandsTo) {
|
|
109
|
-
var second = parts[1] || parts[0];
|
|
110
|
-
var third = parts[2] || parts[0];
|
|
111
|
-
var fourth = parts[3] || parts[1] || parts[0];
|
|
112
|
-
return expandsTo({
|
|
113
|
-
first: first,
|
|
114
|
-
second: second,
|
|
115
|
-
third: third,
|
|
116
|
-
fourth: fourth
|
|
117
|
-
});
|
|
118
|
-
}
|
|
119
|
-
return _ref2 = {}, _ref2[model] = first, _ref2;
|
|
120
|
-
};
|
|
121
|
-
};
|
|
122
|
-
|
|
123
|
-
var processMargin = expandBoxModel({
|
|
124
|
-
expandsTo: function expandsTo(_ref) {
|
|
125
|
-
var first = _ref.first,
|
|
126
|
-
second = _ref.second,
|
|
127
|
-
third = _ref.third,
|
|
128
|
-
fourth = _ref.fourth;
|
|
129
|
-
return {
|
|
130
|
-
marginTop: first,
|
|
131
|
-
marginRight: second,
|
|
132
|
-
marginBottom: third,
|
|
133
|
-
marginLeft: fourth
|
|
134
|
-
};
|
|
135
|
-
},
|
|
136
|
-
maxValues: 4,
|
|
137
|
-
autoSupported: true
|
|
138
|
-
});
|
|
139
|
-
var processMarginVertical = expandBoxModel({
|
|
140
|
-
expandsTo: function expandsTo(_ref2) {
|
|
141
|
-
var first = _ref2.first,
|
|
142
|
-
second = _ref2.second;
|
|
143
|
-
return {
|
|
144
|
-
marginTop: first,
|
|
145
|
-
marginBottom: second
|
|
146
|
-
};
|
|
147
|
-
},
|
|
148
|
-
maxValues: 2,
|
|
149
|
-
autoSupported: true
|
|
150
|
-
});
|
|
151
|
-
var processMarginHorizontal = expandBoxModel({
|
|
152
|
-
expandsTo: function expandsTo(_ref3) {
|
|
153
|
-
var first = _ref3.first,
|
|
154
|
-
second = _ref3.second;
|
|
155
|
-
return {
|
|
156
|
-
marginRight: first,
|
|
157
|
-
marginLeft: second
|
|
158
|
-
};
|
|
159
|
-
},
|
|
160
|
-
maxValues: 2,
|
|
161
|
-
autoSupported: true
|
|
162
|
-
});
|
|
163
|
-
var processMarginSingle = expandBoxModel({
|
|
164
|
-
autoSupported: true
|
|
165
|
-
});
|
|
166
|
-
|
|
167
|
-
var BORDER_SHORTHAND_REGEX = /(-?\d+(\.\d+)?(px|in|mm|cm|pt|vw|vh|px)?)\s(\S+)\s(.+)/;
|
|
168
|
-
var matchBorderShorthand = function matchBorderShorthand(value) {
|
|
169
|
-
return value.match(BORDER_SHORTHAND_REGEX) || [];
|
|
170
|
-
};
|
|
171
|
-
var expandBorders = function expandBorders(key, value) {
|
|
172
|
-
var match = matchBorderShorthand("" + value);
|
|
173
|
-
if (match) {
|
|
174
|
-
var color = match[5] || value;
|
|
175
|
-
var style = match[4] || value;
|
|
176
|
-
var width = match[1] || value;
|
|
177
|
-
if (key.match(/(Top|Right|Bottom|Left)$/)) {
|
|
178
|
-
var _ref;
|
|
179
|
-
return _ref = {}, _ref[key + "Color"] = color, _ref[key + "Style"] = style, _ref[key + "Width"] = width, _ref;
|
|
180
|
-
}
|
|
181
|
-
if (key.match(/Color$/)) {
|
|
182
|
-
return {
|
|
183
|
-
borderTopColor: color,
|
|
184
|
-
borderRightColor: color,
|
|
185
|
-
borderBottomColor: color,
|
|
186
|
-
borderLeftColor: color
|
|
187
|
-
};
|
|
188
|
-
}
|
|
189
|
-
if (key.match(/Style$/)) {
|
|
190
|
-
return {
|
|
191
|
-
borderTopStyle: style,
|
|
192
|
-
borderRightStyle: style,
|
|
193
|
-
borderBottomStyle: style,
|
|
194
|
-
borderLeftStyle: style
|
|
195
|
-
};
|
|
196
|
-
}
|
|
197
|
-
if (key.match(/Width$/)) {
|
|
198
|
-
return {
|
|
199
|
-
borderTopWidth: width,
|
|
200
|
-
borderRightWidth: width,
|
|
201
|
-
borderBottomWidth: width,
|
|
202
|
-
borderLeftWidth: width
|
|
203
|
-
};
|
|
204
|
-
}
|
|
205
|
-
if (key.match(/Radius$/)) {
|
|
206
|
-
return {
|
|
207
|
-
borderTopLeftRadius: value,
|
|
208
|
-
borderTopRightRadius: value,
|
|
209
|
-
borderBottomRightRadius: value,
|
|
210
|
-
borderBottomLeftRadius: value
|
|
211
|
-
};
|
|
212
|
-
}
|
|
213
|
-
return {
|
|
214
|
-
borderTopColor: color,
|
|
215
|
-
borderTopStyle: style,
|
|
216
|
-
borderTopWidth: width,
|
|
217
|
-
borderRightColor: color,
|
|
218
|
-
borderRightStyle: style,
|
|
219
|
-
borderRightWidth: width,
|
|
220
|
-
borderBottomColor: color,
|
|
221
|
-
borderBottomStyle: style,
|
|
222
|
-
borderBottomWidth: width,
|
|
223
|
-
borderLeftColor: color,
|
|
224
|
-
borderLeftStyle: style,
|
|
225
|
-
borderLeftWidth: width
|
|
226
|
-
};
|
|
227
|
-
}
|
|
228
|
-
return value;
|
|
229
|
-
};
|
|
230
|
-
|
|
231
|
-
var processPadding = expandBoxModel({
|
|
232
|
-
expandsTo: function expandsTo(_ref) {
|
|
233
|
-
var first = _ref.first,
|
|
234
|
-
second = _ref.second,
|
|
235
|
-
third = _ref.third,
|
|
236
|
-
fourth = _ref.fourth;
|
|
237
|
-
return {
|
|
238
|
-
paddingTop: first,
|
|
239
|
-
paddingRight: second,
|
|
240
|
-
paddingBottom: third,
|
|
241
|
-
paddingLeft: fourth
|
|
242
|
-
};
|
|
243
|
-
},
|
|
244
|
-
maxValues: 4
|
|
245
|
-
});
|
|
246
|
-
var processPaddingVertical = expandBoxModel({
|
|
247
|
-
expandsTo: function expandsTo(_ref2) {
|
|
248
|
-
var first = _ref2.first,
|
|
249
|
-
second = _ref2.second;
|
|
250
|
-
return {
|
|
251
|
-
paddingTop: first,
|
|
252
|
-
paddingBottom: second
|
|
253
|
-
};
|
|
254
|
-
},
|
|
255
|
-
maxValues: 2
|
|
256
|
-
});
|
|
257
|
-
var processPaddingHorizontal = expandBoxModel({
|
|
258
|
-
expandsTo: function expandsTo(_ref3) {
|
|
259
|
-
var first = _ref3.first,
|
|
260
|
-
second = _ref3.second;
|
|
261
|
-
return {
|
|
262
|
-
paddingRight: first,
|
|
263
|
-
paddingLeft: second
|
|
264
|
-
};
|
|
265
|
-
},
|
|
266
|
-
maxValues: 2
|
|
267
|
-
});
|
|
268
|
-
var processPaddingSingle = expandBoxModel();
|
|
269
|
-
|
|
270
|
-
var expandObjectPosition = function expandObjectPosition(key, value) {
|
|
271
|
-
var match = ("" + value).split(' ');
|
|
272
|
-
return {
|
|
273
|
-
objectPositionX: (match === null || match === void 0 ? void 0 : match[0]) || value,
|
|
274
|
-
objectPositionY: (match === null || match === void 0 ? void 0 : match[1]) || value
|
|
275
|
-
};
|
|
276
|
-
};
|
|
277
|
-
|
|
278
|
-
var Y_AXIS_SHORTHANDS = {
|
|
279
|
-
top: true,
|
|
280
|
-
bottom: true
|
|
281
|
-
};
|
|
282
|
-
var sortTransformOriginPair = function sortTransformOriginPair(a, b) {
|
|
283
|
-
if (Y_AXIS_SHORTHANDS[a]) return 1;
|
|
284
|
-
if (Y_AXIS_SHORTHANDS[b]) return -1;
|
|
285
|
-
return 0;
|
|
286
|
-
};
|
|
287
|
-
var getTransformOriginPair = function getTransformOriginPair(values) {
|
|
288
|
-
if (!values || values.length === 0) return ['center', 'center'];
|
|
289
|
-
var pair = values.length === 1 ? [values[0], 'center'] : values;
|
|
290
|
-
return pair.sort(sortTransformOriginPair);
|
|
291
|
-
};
|
|
292
|
-
|
|
293
|
-
// Transforms shorthand transformOrigin values
|
|
294
|
-
var expandTransformOrigin = function expandTransformOrigin(key, value) {
|
|
295
|
-
var match = ("" + value).split(' ');
|
|
296
|
-
var pair = getTransformOriginPair(match);
|
|
297
|
-
return {
|
|
298
|
-
transformOriginX: pair[0],
|
|
299
|
-
transformOriginY: pair[1]
|
|
300
|
-
};
|
|
301
|
-
};
|
|
302
|
-
|
|
303
|
-
var expandGap = function expandGap(key, value) {
|
|
304
|
-
var match = ("" + value).split(' ');
|
|
305
|
-
return {
|
|
306
|
-
rowGap: (match === null || match === void 0 ? void 0 : match[0]) || value,
|
|
307
|
-
columnGap: (match === null || match === void 0 ? void 0 : match[1]) || value
|
|
308
|
-
};
|
|
309
|
-
};
|
|
310
|
-
|
|
311
|
-
var shorthands = {
|
|
312
|
-
flex: expandFlex,
|
|
313
|
-
gap: expandGap,
|
|
314
|
-
margin: processMargin,
|
|
315
|
-
marginHorizontal: processMarginHorizontal,
|
|
316
|
-
marginVertical: processMarginVertical,
|
|
317
|
-
marginTop: processMarginSingle,
|
|
318
|
-
marginRight: processMarginSingle,
|
|
319
|
-
marginBottom: processMarginSingle,
|
|
320
|
-
marginLeft: processMarginSingle,
|
|
321
|
-
padding: processPadding,
|
|
322
|
-
paddingHorizontal: processPaddingHorizontal,
|
|
323
|
-
paddingVertical: processPaddingVertical,
|
|
324
|
-
paddingTop: processPaddingSingle,
|
|
325
|
-
paddingRight: processPaddingSingle,
|
|
326
|
-
paddingBottom: processPaddingSingle,
|
|
327
|
-
paddingLeft: processPaddingSingle,
|
|
328
|
-
border: expandBorders,
|
|
329
|
-
borderTop: expandBorders,
|
|
330
|
-
borderRight: expandBorders,
|
|
331
|
-
borderBottom: expandBorders,
|
|
332
|
-
borderLeft: expandBorders,
|
|
333
|
-
borderColor: expandBorders,
|
|
334
|
-
borderRadius: expandBorders,
|
|
335
|
-
borderStyle: expandBorders,
|
|
336
|
-
borderWidth: expandBorders,
|
|
337
|
-
objectPosition: expandObjectPosition,
|
|
338
|
-
transformOrigin: expandTransformOrigin
|
|
339
|
-
};
|
|
340
|
-
|
|
341
|
-
/**
|
|
342
|
-
* Transforms style key-value
|
|
343
|
-
*
|
|
344
|
-
* @param {string} key style key
|
|
345
|
-
* @param {string} value style value
|
|
346
|
-
* @returns {string | Number} transformed style values
|
|
347
|
-
*/
|
|
348
|
-
var expandStyle = function expandStyle(key, value) {
|
|
349
|
-
var _ref;
|
|
350
|
-
return shorthands[key] ? shorthands[key](key, value) : (_ref = {}, _ref[key] = value, _ref);
|
|
351
|
-
};
|
|
352
|
-
|
|
353
|
-
/**
|
|
354
|
-
* Expand the shorthand properties.
|
|
355
|
-
*
|
|
356
|
-
* @param {Object} style object
|
|
357
|
-
* @returns {Object} expanded style object
|
|
358
|
-
*/
|
|
359
|
-
var expand = function expand(style) {
|
|
360
|
-
if (!style) return style;
|
|
361
|
-
var propsArray = Object.keys(style);
|
|
362
|
-
var resolvedStyle = {};
|
|
363
|
-
for (var i = 0; i < propsArray.length; i += 1) {
|
|
364
|
-
var key = propsArray[i];
|
|
365
|
-
var value = style[key];
|
|
366
|
-
var extended = expandStyle(key, value);
|
|
367
|
-
var keys = Object.keys(extended);
|
|
368
|
-
for (var j = 0; j < keys.length; j += 1) {
|
|
369
|
-
var propName = keys[j];
|
|
370
|
-
var propValue = extended[propName];
|
|
371
|
-
resolvedStyle[propName] = propValue;
|
|
372
|
-
}
|
|
373
|
-
}
|
|
374
|
-
return resolvedStyle;
|
|
375
|
-
};
|
|
376
|
-
|
|
377
|
-
/**
|
|
378
|
-
* Remove nil values from array
|
|
379
|
-
*
|
|
380
|
-
* @template T
|
|
381
|
-
* @param {(T | null | undefined)[]} array
|
|
382
|
-
* @returns {T[]} array without nils
|
|
383
|
-
*/
|
|
384
|
-
var compact = function compact(array) {
|
|
385
|
-
return array.filter(Boolean);
|
|
386
|
-
};
|
|
387
|
-
|
|
388
|
-
/**
|
|
389
|
-
* Merges style objects array
|
|
390
|
-
*
|
|
391
|
-
* @param {Object[]} styles style objects array
|
|
392
|
-
* @returns {Object} merged style object
|
|
393
|
-
*/
|
|
394
|
-
var mergeStyles = function mergeStyles(styles) {
|
|
395
|
-
return styles.reduce(function (acc, style) {
|
|
396
|
-
var s = Array.isArray(style) ? flatten(style) : style;
|
|
397
|
-
Object.keys(s).forEach(function (key) {
|
|
398
|
-
if (s[key] !== null && s[key] !== undefined) {
|
|
399
|
-
acc[key] = s[key];
|
|
400
|
-
}
|
|
401
|
-
});
|
|
402
|
-
return acc;
|
|
403
|
-
}, {});
|
|
404
|
-
};
|
|
405
|
-
|
|
406
|
-
/**
|
|
407
|
-
* Flattens an array of style objects, into one aggregated style object.
|
|
408
|
-
*
|
|
409
|
-
* @param {Object[]} styles style objects array
|
|
410
|
-
* @returns {Object} flattened style object
|
|
411
|
-
*/
|
|
412
|
-
var flatten = fns.compose(mergeStyles, compact, fns.castArray);
|
|
413
|
-
|
|
414
|
-
/**
|
|
415
|
-
* Parses scalar value in value and unit pairs
|
|
416
|
-
*
|
|
417
|
-
* @param {string} value scalar value
|
|
418
|
-
* @returns {Object} parsed value
|
|
419
|
-
*/
|
|
420
|
-
var parseValue = function parseValue(value) {
|
|
421
|
-
var match = /^(-?\d*\.?\d+)(in|mm|cm|pt|vh|vw|px)?$/g.exec(value);
|
|
422
|
-
return match ? {
|
|
423
|
-
value: parseFloat(match[1]),
|
|
424
|
-
unit: match[2] || 'pt'
|
|
425
|
-
} : {
|
|
426
|
-
value: value,
|
|
427
|
-
unit: undefined
|
|
428
|
-
};
|
|
429
|
-
};
|
|
430
|
-
|
|
431
|
-
/**
|
|
432
|
-
* Transform given scalar value
|
|
433
|
-
*
|
|
434
|
-
* @param {Object} container
|
|
435
|
-
* @param {string} value styles value
|
|
436
|
-
* @returns {Object} transformed value
|
|
437
|
-
*/
|
|
438
|
-
var transformUnit = function transformUnit(container, value) {
|
|
439
|
-
var scalar = parseValue(value);
|
|
440
|
-
var dpi = container.dpi || 72;
|
|
441
|
-
var mmFactor = 1 / 25.4 * dpi;
|
|
442
|
-
var cmFactor = 1 / 2.54 * dpi;
|
|
443
|
-
switch (scalar.unit) {
|
|
444
|
-
case 'in':
|
|
445
|
-
return scalar.value * dpi;
|
|
446
|
-
case 'mm':
|
|
447
|
-
return scalar.value * mmFactor;
|
|
448
|
-
case 'cm':
|
|
449
|
-
return scalar.value * cmFactor;
|
|
450
|
-
case 'vh':
|
|
451
|
-
return scalar.value * (container.height / 100);
|
|
452
|
-
case 'vw':
|
|
453
|
-
return scalar.value * (container.width / 100);
|
|
454
|
-
default:
|
|
455
|
-
return scalar.value;
|
|
456
|
-
}
|
|
457
|
-
};
|
|
458
|
-
|
|
459
|
-
var isRgb = function isRgb(value) {
|
|
460
|
-
return /rgba?/g.test(value);
|
|
461
|
-
};
|
|
462
|
-
var isHsl = function isHsl(value) {
|
|
463
|
-
return /hsla?/g.test(value);
|
|
464
|
-
};
|
|
465
|
-
|
|
466
|
-
/**
|
|
467
|
-
* Transform rgb color to hexa
|
|
468
|
-
*
|
|
469
|
-
* @param {string} value styles value
|
|
470
|
-
* @returns {Object} transformed value
|
|
471
|
-
*/
|
|
472
|
-
var parseRgb = function parseRgb(value) {
|
|
473
|
-
var rgb = colorString__default.default.get.rgb(value);
|
|
474
|
-
return colorString__default.default.to.hex(rgb);
|
|
475
|
-
};
|
|
476
|
-
|
|
477
|
-
/**
|
|
478
|
-
* Transform Hsl color to hexa
|
|
479
|
-
*
|
|
480
|
-
* @param {string} value styles value
|
|
481
|
-
* @returns {Object} transformed value
|
|
482
|
-
*/
|
|
483
|
-
var parseHsl = function parseHsl(value) {
|
|
484
|
-
var hsl = colorString__default.default.get.hsl(value).map(Math.round);
|
|
485
|
-
var hex = hlsToHex__default.default.apply(void 0, hsl);
|
|
486
|
-
return hex.toUpperCase();
|
|
487
|
-
};
|
|
488
|
-
|
|
489
|
-
/**
|
|
490
|
-
* Transform given color to hexa
|
|
491
|
-
*
|
|
492
|
-
* @param {string} value styles value
|
|
493
|
-
* @returns {Object} transformed value
|
|
494
|
-
*/
|
|
495
|
-
var transformColor = function transformColor(value) {
|
|
496
|
-
if (isRgb(value)) return parseRgb(value);
|
|
497
|
-
if (isHsl(value)) return parseHsl(value);
|
|
498
|
-
return value;
|
|
499
|
-
};
|
|
500
|
-
|
|
501
|
-
var parse = function parse(transformString) {
|
|
502
|
-
var transforms = transformString.trim().split(/\) |\)/);
|
|
503
|
-
|
|
504
|
-
// Handle "initial", "inherit", "unset".
|
|
505
|
-
if (transforms.length === 1) {
|
|
506
|
-
return [[transforms[0], true]];
|
|
507
|
-
}
|
|
508
|
-
var parsed = [];
|
|
509
|
-
for (var i = 0; i < transforms.length; i += 1) {
|
|
510
|
-
var transform = transforms[i];
|
|
511
|
-
if (transform) {
|
|
512
|
-
var _transform$split = transform.split('('),
|
|
513
|
-
name = _transform$split[0],
|
|
514
|
-
rawValue = _transform$split[1];
|
|
515
|
-
var splitChar = rawValue.indexOf(',') >= 0 ? ',' : ' ';
|
|
516
|
-
var value = rawValue.split(splitChar).map(function (val) {
|
|
517
|
-
return val.trim();
|
|
518
|
-
});
|
|
519
|
-
parsed.push({
|
|
520
|
-
operation: name,
|
|
521
|
-
value: value
|
|
522
|
-
});
|
|
523
|
-
}
|
|
524
|
-
}
|
|
525
|
-
return parsed;
|
|
526
|
-
};
|
|
527
|
-
var parseAngle = function parseAngle(value) {
|
|
528
|
-
var unitsRegexp = /(-?\d*\.?\d*)(\w*)?/i;
|
|
529
|
-
var _unitsRegexp$exec = unitsRegexp.exec(value),
|
|
530
|
-
angle = _unitsRegexp$exec[1],
|
|
531
|
-
unit = _unitsRegexp$exec[2];
|
|
532
|
-
var number = Number.parseFloat(angle);
|
|
533
|
-
return unit === 'rad' ? number * 180 / Math.PI : number;
|
|
534
|
-
};
|
|
535
|
-
var normalizeTransformOperation = function normalizeTransformOperation(_ref) {
|
|
536
|
-
var operation = _ref.operation,
|
|
537
|
-
value = _ref.value;
|
|
538
|
-
switch (operation) {
|
|
539
|
-
case 'scale':
|
|
540
|
-
{
|
|
541
|
-
var _value$map = value.map(function (num) {
|
|
542
|
-
return Number.parseFloat(num);
|
|
543
|
-
}),
|
|
544
|
-
scaleX = _value$map[0],
|
|
545
|
-
_value$map$ = _value$map[1],
|
|
546
|
-
scaleY = _value$map$ === void 0 ? scaleX : _value$map$;
|
|
547
|
-
return {
|
|
548
|
-
operation: 'scale',
|
|
549
|
-
value: [scaleX, scaleY]
|
|
550
|
-
};
|
|
551
|
-
}
|
|
552
|
-
case 'scaleX':
|
|
553
|
-
{
|
|
554
|
-
return {
|
|
555
|
-
operation: 'scale',
|
|
556
|
-
value: [Number.parseFloat(value), 1]
|
|
557
|
-
};
|
|
558
|
-
}
|
|
559
|
-
case 'scaleY':
|
|
560
|
-
{
|
|
561
|
-
return {
|
|
562
|
-
operation: 'scale',
|
|
563
|
-
value: [1, Number.parseFloat(value)]
|
|
564
|
-
};
|
|
565
|
-
}
|
|
566
|
-
case 'rotate':
|
|
567
|
-
{
|
|
568
|
-
return {
|
|
569
|
-
operation: 'rotate',
|
|
570
|
-
value: [parseAngle(value)]
|
|
571
|
-
};
|
|
572
|
-
}
|
|
573
|
-
case 'translate':
|
|
574
|
-
{
|
|
575
|
-
return {
|
|
576
|
-
operation: 'translate',
|
|
577
|
-
value: value.map(function (num) {
|
|
578
|
-
return Number.parseFloat(num);
|
|
579
|
-
})
|
|
580
|
-
};
|
|
581
|
-
}
|
|
582
|
-
case 'translateX':
|
|
583
|
-
{
|
|
584
|
-
return {
|
|
585
|
-
operation: 'translate',
|
|
586
|
-
value: [Number.parseFloat(value), 0]
|
|
587
|
-
};
|
|
588
|
-
}
|
|
589
|
-
case 'translateY':
|
|
590
|
-
{
|
|
591
|
-
return {
|
|
592
|
-
operation: 'translate',
|
|
593
|
-
value: [0, Number.parseFloat(value)]
|
|
594
|
-
};
|
|
595
|
-
}
|
|
596
|
-
case 'skew':
|
|
597
|
-
{
|
|
598
|
-
return {
|
|
599
|
-
operation: 'skew',
|
|
600
|
-
value: value.map(parseAngle)
|
|
601
|
-
};
|
|
602
|
-
}
|
|
603
|
-
case 'skewX':
|
|
604
|
-
{
|
|
605
|
-
return {
|
|
606
|
-
operation: 'skew',
|
|
607
|
-
value: [parseAngle(value), 0]
|
|
608
|
-
};
|
|
609
|
-
}
|
|
610
|
-
case 'skewY':
|
|
611
|
-
{
|
|
612
|
-
return {
|
|
613
|
-
operation: 'skew',
|
|
614
|
-
value: [0, parseAngle(value)]
|
|
615
|
-
};
|
|
616
|
-
}
|
|
617
|
-
default:
|
|
618
|
-
{
|
|
619
|
-
return {
|
|
620
|
-
operation: operation,
|
|
621
|
-
value: value.map(function (num) {
|
|
622
|
-
return Number.parseFloat(num);
|
|
623
|
-
})
|
|
624
|
-
};
|
|
625
|
-
}
|
|
626
|
-
}
|
|
627
|
-
};
|
|
628
|
-
var normalize = function normalize(operations) {
|
|
629
|
-
return operations.map(function (operation) {
|
|
630
|
-
return normalizeTransformOperation(operation);
|
|
631
|
-
});
|
|
632
|
-
};
|
|
633
|
-
var processTransform = function processTransform(value) {
|
|
634
|
-
if (typeof value !== 'string') return value;
|
|
635
|
-
return normalize(parse(value));
|
|
636
|
-
};
|
|
637
|
-
|
|
638
|
-
var FONT_WEIGHTS = {
|
|
639
|
-
thin: 100,
|
|
640
|
-
hairline: 100,
|
|
641
|
-
ultralight: 200,
|
|
642
|
-
extralight: 200,
|
|
643
|
-
light: 300,
|
|
644
|
-
normal: 400,
|
|
645
|
-
medium: 500,
|
|
646
|
-
semibold: 600,
|
|
647
|
-
demibold: 600,
|
|
648
|
-
bold: 700,
|
|
649
|
-
ultrabold: 800,
|
|
650
|
-
extrabold: 800,
|
|
651
|
-
heavy: 900,
|
|
652
|
-
black: 900
|
|
653
|
-
};
|
|
654
|
-
var processFontWeight = function processFontWeight(value) {
|
|
655
|
-
if (!value) return FONT_WEIGHTS.normal;
|
|
656
|
-
if (typeof value === 'number') return value;
|
|
657
|
-
var lv = value.toLowerCase();
|
|
658
|
-
if (FONT_WEIGHTS[lv]) return FONT_WEIGHTS[lv];
|
|
659
|
-
return value;
|
|
660
|
-
};
|
|
661
|
-
|
|
662
|
-
var matchNumber = function matchNumber(value) {
|
|
663
|
-
return typeof value === 'string' && /^-?\d*\.?\d*$/.test(value);
|
|
664
|
-
};
|
|
665
|
-
var castFloat = function castFloat(value) {
|
|
666
|
-
if (typeof value !== 'string') return value;
|
|
667
|
-
if (matchNumber(value)) return parseFloat(value);
|
|
668
|
-
return value;
|
|
669
|
-
};
|
|
670
|
-
|
|
671
|
-
var offsetKeyword = function offsetKeyword(value) {
|
|
672
|
-
switch (value) {
|
|
673
|
-
case 'top':
|
|
674
|
-
case 'left':
|
|
675
|
-
return '0%';
|
|
676
|
-
case 'right':
|
|
677
|
-
case 'bottom':
|
|
678
|
-
return '100%';
|
|
679
|
-
case 'center':
|
|
680
|
-
return '50%';
|
|
681
|
-
default:
|
|
682
|
-
return null;
|
|
683
|
-
}
|
|
684
|
-
};
|
|
685
|
-
|
|
686
|
-
var transformObjectPosition = function transformObjectPosition(value) {
|
|
687
|
-
return offsetKeyword(value) || castFloat(value);
|
|
688
|
-
};
|
|
689
|
-
|
|
690
|
-
var transformTransformOrigin = function transformTransformOrigin(value) {
|
|
691
|
-
return offsetKeyword(value) || castFloat(value);
|
|
692
|
-
};
|
|
693
|
-
|
|
694
|
-
var handlers = {
|
|
695
|
-
transform: processTransform,
|
|
696
|
-
fontWeight: processFontWeight,
|
|
697
|
-
objectPositionX: transformObjectPosition,
|
|
698
|
-
objectPositionY: transformObjectPosition,
|
|
699
|
-
transformOriginX: transformTransformOrigin,
|
|
700
|
-
transformOriginY: transformTransformOrigin
|
|
701
|
-
};
|
|
702
|
-
var transformStyle = function transformStyle(key, value, container) {
|
|
703
|
-
var result = handlers[key] ? handlers[key](value) : value;
|
|
704
|
-
return transformColor(transformUnit(container, castFloat(result)));
|
|
705
|
-
};
|
|
706
|
-
|
|
707
|
-
/**
|
|
708
|
-
* @typedef {Function} Transform
|
|
709
|
-
* @param {Object} style styles object
|
|
710
|
-
* @returns {Object} transformed styles
|
|
711
|
-
*/
|
|
712
|
-
|
|
713
|
-
/**
|
|
714
|
-
* Transform styles values
|
|
715
|
-
*
|
|
716
|
-
* @param {Object} container
|
|
717
|
-
* @returns {Transform} transform function
|
|
718
|
-
*/
|
|
719
|
-
var transform = function transform(container) {
|
|
720
|
-
return function (style) {
|
|
721
|
-
if (!style) return style;
|
|
722
|
-
var propsArray = Object.keys(style);
|
|
723
|
-
var resolvedStyle = {};
|
|
724
|
-
for (var i = 0; i < propsArray.length; i += 1) {
|
|
725
|
-
var key = propsArray[i];
|
|
726
|
-
var value = style[key];
|
|
727
|
-
var transformed = transformStyle(key, value, container);
|
|
728
|
-
resolvedStyle[key] = transformed;
|
|
729
|
-
}
|
|
730
|
-
return resolvedStyle;
|
|
731
|
-
};
|
|
732
|
-
};
|
|
733
|
-
|
|
734
|
-
/**
|
|
735
|
-
* Resolves media queries in styles object
|
|
736
|
-
*
|
|
737
|
-
* @param {Object} container
|
|
738
|
-
* @param {Object} styles object
|
|
739
|
-
*/
|
|
740
|
-
var resolveMediaQueries = function resolveMediaQueries(container, styles) {
|
|
741
|
-
return Object.keys(styles).reduce(function (acc, key) {
|
|
742
|
-
var _extends2;
|
|
743
|
-
if (/@media/.test(key)) {
|
|
744
|
-
var _matchMedia;
|
|
745
|
-
return _extends__default.default({}, acc, matchMedia__default.default((_matchMedia = {}, _matchMedia[key] = styles[key], _matchMedia), container));
|
|
746
|
-
}
|
|
747
|
-
return _extends__default.default({}, acc, (_extends2 = {}, _extends2[key] = styles[key], _extends2));
|
|
748
|
-
}, {});
|
|
749
|
-
};
|
|
750
|
-
|
|
751
|
-
/**
|
|
752
|
-
* Resolves styles
|
|
753
|
-
*
|
|
754
|
-
* @param {Object} container
|
|
755
|
-
* @param {Object} style object
|
|
756
|
-
* @returns {Object} resolved style object
|
|
757
|
-
*/
|
|
758
|
-
var resolveStyles = function resolveStyles(container, style) {
|
|
759
|
-
var computeMediaQueries = function computeMediaQueries(value) {
|
|
760
|
-
return resolveMediaQueries(container, value);
|
|
761
|
-
};
|
|
762
|
-
return fns.compose(transform(container), expand, computeMediaQueries, flatten)(style);
|
|
763
|
-
};
|
|
764
|
-
|
|
765
|
-
exports.default = resolveStyles;
|
|
766
|
-
exports.flatten = flatten;
|
|
767
|
-
exports.processTransform = processTransform;
|
|
768
|
-
exports.transformColor = transformColor;
|