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