@react-pdf/stylesheet 2.0.12
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/README.md +68 -0
- package/lib/expand/borders.js +83 -0
- package/lib/expand/boxModel.js +48 -0
- package/lib/expand/flex.js +20 -0
- package/lib/expand/index.js +83 -0
- package/lib/expand/margins.js +12 -0
- package/lib/expand/objectPosition.js +15 -0
- package/lib/expand/paddings.js +12 -0
- package/lib/expand/transformOrigin.js +33 -0
- package/lib/flatten/index.js +58 -0
- package/lib/index.js +42 -0
- package/lib/mediaQueries/index.js +38 -0
- package/lib/transform/colors.js +48 -0
- package/lib/transform/fontWeight.js +31 -0
- package/lib/transform/index.js +61 -0
- package/lib/transform/objectPosition.js +17 -0
- package/lib/transform/transform.js +137 -0
- package/lib/transform/transformOrigin.js +17 -0
- package/lib/transform/units.js +60 -0
- package/lib/utils/castFloat.js +20 -0
- package/lib/utils/offsetKeyword.js +25 -0
- package/package.json +24 -0
package/README.md
ADDED
|
@@ -0,0 +1,68 @@
|
|
|
1
|
+
<p align="center">
|
|
2
|
+
<img src="https://user-images.githubusercontent.com/5600341/27505816-c8bc37aa-587f-11e7-9a86-08a2d081a8b9.png" height="280px">
|
|
3
|
+
</p>
|
|
4
|
+
|
|
5
|
+
# @react-pdf/stylesheet
|
|
6
|
+
|
|
7
|
+
> React-pdf styles engine
|
|
8
|
+
|
|
9
|
+
## How to install
|
|
10
|
+
|
|
11
|
+
```sh
|
|
12
|
+
yarn add @react-pdf/stylesheet
|
|
13
|
+
```
|
|
14
|
+
|
|
15
|
+
## How it works
|
|
16
|
+
|
|
17
|
+
```js
|
|
18
|
+
const stylesheet = require('@react-pdf/stylesheet');
|
|
19
|
+
|
|
20
|
+
const container = {
|
|
21
|
+
width: 400,
|
|
22
|
+
height: 600,
|
|
23
|
+
orientation: 'portrait',
|
|
24
|
+
};
|
|
25
|
+
|
|
26
|
+
const style = {
|
|
27
|
+
margin: 20,
|
|
28
|
+
width: '50vw',
|
|
29
|
+
height: '20vh',
|
|
30
|
+
borderRadius: 5,
|
|
31
|
+
fontWeight: 'semibold',
|
|
32
|
+
borderBottom: '2 solid yellow',
|
|
33
|
+
'@media max-width: 500': {
|
|
34
|
+
backgroundColor: 'rgb(255, 0, 0)',
|
|
35
|
+
},
|
|
36
|
+
};
|
|
37
|
+
|
|
38
|
+
const computed = stylesheet(container, style);
|
|
39
|
+
|
|
40
|
+
// Computed
|
|
41
|
+
// {
|
|
42
|
+
// width: 200,
|
|
43
|
+
// height: 120,
|
|
44
|
+
// marginTop: 20,
|
|
45
|
+
// marginLeft: 20,
|
|
46
|
+
// marginRight: 20,
|
|
47
|
+
// marginBottom: 20,
|
|
48
|
+
// marginBottom: 20,
|
|
49
|
+
// borderTopLeftRadius: 5,
|
|
50
|
+
// borderTopRightRadius: 5,
|
|
51
|
+
// borderBottomLeftRadius: 5,
|
|
52
|
+
// borderBottomRightRadius: 5,
|
|
53
|
+
// fontWeight: 600,
|
|
54
|
+
// borderBottomWidth: 2,
|
|
55
|
+
// borderBottomStyle: 'solid',
|
|
56
|
+
// borderBottomColor: 'yellow',
|
|
57
|
+
// backgroundColor: '#FF0000'
|
|
58
|
+
// }
|
|
59
|
+
```
|
|
60
|
+
|
|
61
|
+
This library exports a `stylesheet` function that takes two arguments:
|
|
62
|
+
|
|
63
|
+
- _container_: Container where the styles are being computed into. It specifies the `width` and `height` in points (needed for media queries and unit conversions), and optionally the container `orientation` (needed for certain media queries).
|
|
64
|
+
- _style_: Style to be computed. JS object with raw styles that you would like to get in a normalized format.
|
|
65
|
+
|
|
66
|
+
## License
|
|
67
|
+
|
|
68
|
+
MIT © [Diego Muracciole](http://github.com/diegomura)
|
|
@@ -0,0 +1,83 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
var _interopRequireWildcard = require("@babel/runtime/helpers/interopRequireWildcard");
|
|
4
|
+
|
|
5
|
+
exports.__esModule = true;
|
|
6
|
+
exports.default = void 0;
|
|
7
|
+
|
|
8
|
+
var R = _interopRequireWildcard(require("ramda"));
|
|
9
|
+
|
|
10
|
+
var BORDER_SHORTHAND_REGEX = /(-?\d+(\.\d+)?(px|in|mm|cm|pt|vw|vh|px)?)\s(\S+)\s(.+)/;
|
|
11
|
+
var matchBorderShorthand = R.match(BORDER_SHORTHAND_REGEX);
|
|
12
|
+
|
|
13
|
+
var expandBorders = function expandBorders(key, value) {
|
|
14
|
+
var match = matchBorderShorthand("" + value);
|
|
15
|
+
|
|
16
|
+
if (match) {
|
|
17
|
+
var color = match[5] || value;
|
|
18
|
+
var style = match[4] || value;
|
|
19
|
+
var width = match[1] || value;
|
|
20
|
+
|
|
21
|
+
if (key.match(/(Top|Right|Bottom|Left)$/)) {
|
|
22
|
+
var _ref;
|
|
23
|
+
|
|
24
|
+
return _ref = {}, _ref[key + "Color"] = color, _ref[key + "Style"] = style, _ref[key + "Width"] = width, _ref;
|
|
25
|
+
}
|
|
26
|
+
|
|
27
|
+
if (key.match(/Color$/)) {
|
|
28
|
+
return {
|
|
29
|
+
borderTopColor: color,
|
|
30
|
+
borderRightColor: color,
|
|
31
|
+
borderBottomColor: color,
|
|
32
|
+
borderLeftColor: color
|
|
33
|
+
};
|
|
34
|
+
}
|
|
35
|
+
|
|
36
|
+
if (key.match(/Style$/)) {
|
|
37
|
+
return {
|
|
38
|
+
borderTopStyle: style,
|
|
39
|
+
borderRightStyle: style,
|
|
40
|
+
borderBottomStyle: style,
|
|
41
|
+
borderLeftStyle: style
|
|
42
|
+
};
|
|
43
|
+
}
|
|
44
|
+
|
|
45
|
+
if (key.match(/Width$/)) {
|
|
46
|
+
return {
|
|
47
|
+
borderTopWidth: width,
|
|
48
|
+
borderRightWidth: width,
|
|
49
|
+
borderBottomWidth: width,
|
|
50
|
+
borderLeftWidth: width
|
|
51
|
+
};
|
|
52
|
+
}
|
|
53
|
+
|
|
54
|
+
if (key.match(/Radius$/)) {
|
|
55
|
+
return {
|
|
56
|
+
borderTopLeftRadius: value,
|
|
57
|
+
borderTopRightRadius: value,
|
|
58
|
+
borderBottomRightRadius: value,
|
|
59
|
+
borderBottomLeftRadius: value
|
|
60
|
+
};
|
|
61
|
+
}
|
|
62
|
+
|
|
63
|
+
return {
|
|
64
|
+
borderTopColor: color,
|
|
65
|
+
borderTopStyle: style,
|
|
66
|
+
borderTopWidth: width,
|
|
67
|
+
borderRightColor: color,
|
|
68
|
+
borderRightStyle: style,
|
|
69
|
+
borderRightWidth: width,
|
|
70
|
+
borderBottomColor: color,
|
|
71
|
+
borderBottomStyle: style,
|
|
72
|
+
borderBottomWidth: width,
|
|
73
|
+
borderLeftColor: color,
|
|
74
|
+
borderLeftStyle: style,
|
|
75
|
+
borderLeftWidth: width
|
|
76
|
+
};
|
|
77
|
+
}
|
|
78
|
+
|
|
79
|
+
return value;
|
|
80
|
+
};
|
|
81
|
+
|
|
82
|
+
var _default = expandBorders;
|
|
83
|
+
exports.default = _default;
|
|
@@ -0,0 +1,48 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
var _interopRequireWildcard = require("@babel/runtime/helpers/interopRequireWildcard");
|
|
4
|
+
|
|
5
|
+
exports.__esModule = true;
|
|
6
|
+
exports.default = void 0;
|
|
7
|
+
|
|
8
|
+
var R = _interopRequireWildcard(require("ramda"));
|
|
9
|
+
|
|
10
|
+
var BOX_MODEL_REGEX = /-?\d+(\.\d+)?(px|in|mm|cm|pt|%|vw|vh|px)?/g;
|
|
11
|
+
var matchBoxModelValue = R.match(BOX_MODEL_REGEX);
|
|
12
|
+
|
|
13
|
+
var expandBoxModel = function expandBoxModel(model) {
|
|
14
|
+
return function (key, value) {
|
|
15
|
+
var _ref;
|
|
16
|
+
|
|
17
|
+
if (value === 'auto') return _ref = {}, _ref[model + "Top"] = 'auto', _ref[model + "Right"] = 'auto', _ref[model + "Bottom"] = 'auto', _ref[model + "Left"] = 'auto', _ref;
|
|
18
|
+
var match = matchBoxModelValue("" + value);
|
|
19
|
+
|
|
20
|
+
if (match) {
|
|
21
|
+
var _ref4;
|
|
22
|
+
|
|
23
|
+
var top = match[0];
|
|
24
|
+
var right = match[1] || match[0];
|
|
25
|
+
var bottom = match[2] || match[0];
|
|
26
|
+
var left = match[3] || match[1] || match[0];
|
|
27
|
+
|
|
28
|
+
if (key.match(/Horizontal$/)) {
|
|
29
|
+
var _ref2;
|
|
30
|
+
|
|
31
|
+
return _ref2 = {}, _ref2[model + "Right"] = right, _ref2[model + "Left"] = left, _ref2;
|
|
32
|
+
}
|
|
33
|
+
|
|
34
|
+
if (key.match(/Vertical$/)) {
|
|
35
|
+
var _ref3;
|
|
36
|
+
|
|
37
|
+
return _ref3 = {}, _ref3[model + "Top"] = top, _ref3[model + "Bottom"] = bottom, _ref3;
|
|
38
|
+
}
|
|
39
|
+
|
|
40
|
+
return _ref4 = {}, _ref4[model + "Top"] = top, _ref4[model + "Right"] = right, _ref4[model + "Bottom"] = bottom, _ref4[model + "Left"] = left, _ref4;
|
|
41
|
+
}
|
|
42
|
+
|
|
43
|
+
return value;
|
|
44
|
+
};
|
|
45
|
+
};
|
|
46
|
+
|
|
47
|
+
var _default = expandBoxModel;
|
|
48
|
+
exports.default = _default;
|
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
exports.__esModule = true;
|
|
4
|
+
exports.default = void 0;
|
|
5
|
+
var flexDefaults = [1, 1, 0];
|
|
6
|
+
|
|
7
|
+
var expandFlex = function expandFlex(key, value) {
|
|
8
|
+
var matches = ("" + value).split(' ');
|
|
9
|
+
var flexGrow = matches[0] || flexDefaults[0];
|
|
10
|
+
var flexShrink = matches[1] || flexDefaults[1];
|
|
11
|
+
var flexBasis = matches[2] || flexDefaults[2];
|
|
12
|
+
return {
|
|
13
|
+
flexGrow: flexGrow,
|
|
14
|
+
flexShrink: flexShrink,
|
|
15
|
+
flexBasis: flexBasis
|
|
16
|
+
};
|
|
17
|
+
};
|
|
18
|
+
|
|
19
|
+
var _default = expandFlex;
|
|
20
|
+
exports.default = _default;
|
|
@@ -0,0 +1,83 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
|
|
4
|
+
|
|
5
|
+
exports.__esModule = true;
|
|
6
|
+
exports.default = void 0;
|
|
7
|
+
|
|
8
|
+
var _flex = _interopRequireDefault(require("./flex"));
|
|
9
|
+
|
|
10
|
+
var _margins = _interopRequireDefault(require("./margins"));
|
|
11
|
+
|
|
12
|
+
var _borders = _interopRequireDefault(require("./borders"));
|
|
13
|
+
|
|
14
|
+
var _paddings = _interopRequireDefault(require("./paddings"));
|
|
15
|
+
|
|
16
|
+
var _objectPosition = _interopRequireDefault(require("./objectPosition"));
|
|
17
|
+
|
|
18
|
+
var _transformOrigin = _interopRequireDefault(require("./transformOrigin"));
|
|
19
|
+
|
|
20
|
+
var shorthands = {
|
|
21
|
+
flex: _flex.default,
|
|
22
|
+
margin: _margins.default,
|
|
23
|
+
marginHorizontal: _margins.default,
|
|
24
|
+
marginVertical: _margins.default,
|
|
25
|
+
padding: _paddings.default,
|
|
26
|
+
paddingHorizontal: _paddings.default,
|
|
27
|
+
paddingVertical: _paddings.default,
|
|
28
|
+
border: _borders.default,
|
|
29
|
+
borderTop: _borders.default,
|
|
30
|
+
borderRight: _borders.default,
|
|
31
|
+
borderBottom: _borders.default,
|
|
32
|
+
borderLeft: _borders.default,
|
|
33
|
+
borderColor: _borders.default,
|
|
34
|
+
borderRadius: _borders.default,
|
|
35
|
+
borderStyle: _borders.default,
|
|
36
|
+
borderWidth: _borders.default,
|
|
37
|
+
objectPosition: _objectPosition.default,
|
|
38
|
+
transformOrigin: _transformOrigin.default
|
|
39
|
+
};
|
|
40
|
+
/**
|
|
41
|
+
* Transforms style key-value
|
|
42
|
+
*
|
|
43
|
+
* @param {String} key style key
|
|
44
|
+
* @param {String} value style value
|
|
45
|
+
* @returns {String | Number} transformed style values
|
|
46
|
+
*/
|
|
47
|
+
|
|
48
|
+
var expandStyle = function expandStyle(key, value) {
|
|
49
|
+
var _ref;
|
|
50
|
+
|
|
51
|
+
return shorthands[key] ? shorthands[key](key, value) : (_ref = {}, _ref[key] = value, _ref);
|
|
52
|
+
};
|
|
53
|
+
/**
|
|
54
|
+
* Expand the shorthand properties.
|
|
55
|
+
*
|
|
56
|
+
* @param { Object } style object
|
|
57
|
+
* @returns { Object } expanded style object
|
|
58
|
+
*/
|
|
59
|
+
|
|
60
|
+
|
|
61
|
+
var expand = function expand(style) {
|
|
62
|
+
if (!style) return style;
|
|
63
|
+
var propsArray = Object.keys(style);
|
|
64
|
+
var resolvedStyle = {};
|
|
65
|
+
|
|
66
|
+
for (var i = 0; i < propsArray.length; i += 1) {
|
|
67
|
+
var key = propsArray[i];
|
|
68
|
+
var value = style[key];
|
|
69
|
+
var extended = expandStyle(key, value);
|
|
70
|
+
var keys = Object.keys(extended);
|
|
71
|
+
|
|
72
|
+
for (var j = 0; j < keys.length; j += 1) {
|
|
73
|
+
var propName = keys[j];
|
|
74
|
+
var propValue = extended[propName];
|
|
75
|
+
resolvedStyle[propName] = propValue;
|
|
76
|
+
}
|
|
77
|
+
}
|
|
78
|
+
|
|
79
|
+
return resolvedStyle;
|
|
80
|
+
};
|
|
81
|
+
|
|
82
|
+
var _default = expand;
|
|
83
|
+
exports.default = _default;
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
|
|
4
|
+
|
|
5
|
+
exports.__esModule = true;
|
|
6
|
+
exports.default = void 0;
|
|
7
|
+
|
|
8
|
+
var _boxModel = _interopRequireDefault(require("./boxModel"));
|
|
9
|
+
|
|
10
|
+
var expandMargin = (0, _boxModel.default)('margin');
|
|
11
|
+
var _default = expandMargin;
|
|
12
|
+
exports.default = _default;
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
exports.__esModule = true;
|
|
4
|
+
exports.default = void 0;
|
|
5
|
+
|
|
6
|
+
var expandObjectPosition = function expandObjectPosition(key, value) {
|
|
7
|
+
var match = ("" + value).split(' ');
|
|
8
|
+
return {
|
|
9
|
+
objectPositionX: (match === null || match === void 0 ? void 0 : match[0]) || value,
|
|
10
|
+
objectPositionY: (match === null || match === void 0 ? void 0 : match[1]) || value
|
|
11
|
+
};
|
|
12
|
+
};
|
|
13
|
+
|
|
14
|
+
var _default = expandObjectPosition;
|
|
15
|
+
exports.default = _default;
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
|
|
4
|
+
|
|
5
|
+
exports.__esModule = true;
|
|
6
|
+
exports.default = void 0;
|
|
7
|
+
|
|
8
|
+
var _boxModel = _interopRequireDefault(require("./boxModel"));
|
|
9
|
+
|
|
10
|
+
var expandPadding = (0, _boxModel.default)('padding');
|
|
11
|
+
var _default = expandPadding;
|
|
12
|
+
exports.default = _default;
|
|
@@ -0,0 +1,33 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
exports.__esModule = true;
|
|
4
|
+
exports.default = void 0;
|
|
5
|
+
var Y_AXIS_SHORTHANDS = {
|
|
6
|
+
top: true,
|
|
7
|
+
bottom: true
|
|
8
|
+
};
|
|
9
|
+
|
|
10
|
+
var sortTransformOriginPair = function sortTransformOriginPair(a, b) {
|
|
11
|
+
if (Y_AXIS_SHORTHANDS[a]) return 1;
|
|
12
|
+
if (Y_AXIS_SHORTHANDS[b]) return -1;
|
|
13
|
+
return 0;
|
|
14
|
+
};
|
|
15
|
+
|
|
16
|
+
var getTransformOriginPair = function getTransformOriginPair(values) {
|
|
17
|
+
if (!values || values.length === 0) return ['center', 'center'];
|
|
18
|
+
var pair = values.length === 1 ? [values[0], 'center'] : values;
|
|
19
|
+
return pair.sort(sortTransformOriginPair);
|
|
20
|
+
}; // Transforms shorthand transformOrigin values
|
|
21
|
+
|
|
22
|
+
|
|
23
|
+
var expandTransformOrigin = function expandTransformOrigin(key, value) {
|
|
24
|
+
var match = ("" + value).split(' ');
|
|
25
|
+
var pair = getTransformOriginPair(match);
|
|
26
|
+
return {
|
|
27
|
+
transformOriginX: pair[0],
|
|
28
|
+
transformOriginY: pair[1]
|
|
29
|
+
};
|
|
30
|
+
};
|
|
31
|
+
|
|
32
|
+
var _default = expandTransformOrigin;
|
|
33
|
+
exports.default = _default;
|
|
@@ -0,0 +1,58 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
var _interopRequireWildcard = require("@babel/runtime/helpers/interopRequireWildcard");
|
|
4
|
+
|
|
5
|
+
exports.__esModule = true;
|
|
6
|
+
exports.default = void 0;
|
|
7
|
+
|
|
8
|
+
var R = _interopRequireWildcard(require("ramda"));
|
|
9
|
+
|
|
10
|
+
var isNotArray = R.complement(R.is(Array));
|
|
11
|
+
var castArray = R.when(isNotArray, function (v) {
|
|
12
|
+
return [v];
|
|
13
|
+
});
|
|
14
|
+
/**
|
|
15
|
+
* Remove nil values from array
|
|
16
|
+
*
|
|
17
|
+
* @param {Array} array
|
|
18
|
+
* @returns {Array} array without nils
|
|
19
|
+
*/
|
|
20
|
+
|
|
21
|
+
var compact = R.filter(Boolean);
|
|
22
|
+
/**
|
|
23
|
+
* Checks if value is array
|
|
24
|
+
*
|
|
25
|
+
* @param {any} value
|
|
26
|
+
* @returns {Boolean} is value an array
|
|
27
|
+
*/
|
|
28
|
+
|
|
29
|
+
var isArray = R.is(Array);
|
|
30
|
+
/**
|
|
31
|
+
* Merges style objects array
|
|
32
|
+
*
|
|
33
|
+
* @param {Array} style objects array
|
|
34
|
+
* @returns {Object} merged style object
|
|
35
|
+
*/
|
|
36
|
+
|
|
37
|
+
var mergeStyles = function mergeStyles(styles) {
|
|
38
|
+
return styles.reduce(function (acc, style) {
|
|
39
|
+
var s = isArray(style) ? flatten(style) : style;
|
|
40
|
+
Object.keys(s).forEach(function (key) {
|
|
41
|
+
if (s[key] !== null && s[key] !== undefined) {
|
|
42
|
+
acc[key] = s[key];
|
|
43
|
+
}
|
|
44
|
+
});
|
|
45
|
+
return acc;
|
|
46
|
+
}, {});
|
|
47
|
+
};
|
|
48
|
+
/**
|
|
49
|
+
* Flattens an array of style objects, into one aggregated style object.
|
|
50
|
+
*
|
|
51
|
+
* @param {Array} style objects array
|
|
52
|
+
* @returns {Object} flatted style object
|
|
53
|
+
*/
|
|
54
|
+
|
|
55
|
+
|
|
56
|
+
var flatten = R.compose(mergeStyles, compact, castArray);
|
|
57
|
+
var _default = flatten;
|
|
58
|
+
exports.default = _default;
|
package/lib/index.js
ADDED
|
@@ -0,0 +1,42 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
|
|
4
|
+
|
|
5
|
+
var _interopRequireWildcard = require("@babel/runtime/helpers/interopRequireWildcard");
|
|
6
|
+
|
|
7
|
+
exports.__esModule = true;
|
|
8
|
+
exports.default = exports.processTransform = exports.transformColor = void 0;
|
|
9
|
+
|
|
10
|
+
var R = _interopRequireWildcard(require("ramda"));
|
|
11
|
+
|
|
12
|
+
var _expand = _interopRequireDefault(require("./expand"));
|
|
13
|
+
|
|
14
|
+
var _flatten = _interopRequireDefault(require("./flatten"));
|
|
15
|
+
|
|
16
|
+
var _transform = _interopRequireDefault(require("./transform"));
|
|
17
|
+
|
|
18
|
+
var _mediaQueries = _interopRequireDefault(require("./mediaQueries"));
|
|
19
|
+
|
|
20
|
+
var _colors = _interopRequireDefault(require("./transform/colors"));
|
|
21
|
+
|
|
22
|
+
exports.transformColor = _colors.default;
|
|
23
|
+
|
|
24
|
+
var _transform2 = _interopRequireDefault(require("./transform/transform"));
|
|
25
|
+
|
|
26
|
+
exports.processTransform = _transform2.default;
|
|
27
|
+
|
|
28
|
+
/**
|
|
29
|
+
* Resolves styles
|
|
30
|
+
*
|
|
31
|
+
* @param {Object} container
|
|
32
|
+
* @param {Object} style object
|
|
33
|
+
* @returns {Object} resolved style object
|
|
34
|
+
*/
|
|
35
|
+
var resolveStyles = function resolveStyles(container, style) {
|
|
36
|
+
return R.compose((0, _transform.default)(container), _expand.default, (0, _mediaQueries.default)(container), _flatten.default)(style);
|
|
37
|
+
}; // Utils exported for SVG processing
|
|
38
|
+
|
|
39
|
+
|
|
40
|
+
var _default = R.curryN(2, resolveStyles);
|
|
41
|
+
|
|
42
|
+
exports.default = _default;
|
|
@@ -0,0 +1,38 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
var _interopRequireWildcard = require("@babel/runtime/helpers/interopRequireWildcard");
|
|
4
|
+
|
|
5
|
+
var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
|
|
6
|
+
|
|
7
|
+
exports.__esModule = true;
|
|
8
|
+
exports.default = void 0;
|
|
9
|
+
|
|
10
|
+
var _extends3 = _interopRequireDefault(require("@babel/runtime/helpers/extends"));
|
|
11
|
+
|
|
12
|
+
var R = _interopRequireWildcard(require("ramda"));
|
|
13
|
+
|
|
14
|
+
var _mediaEngine = _interopRequireDefault(require("media-engine"));
|
|
15
|
+
|
|
16
|
+
/**
|
|
17
|
+
* Resolves media queries in styles object
|
|
18
|
+
*
|
|
19
|
+
* @param {Object} container
|
|
20
|
+
* @param {Object} styles object
|
|
21
|
+
*/
|
|
22
|
+
var resolveMediaQueries = function resolveMediaQueries(container, styles) {
|
|
23
|
+
return Object.keys(styles).reduce(function (acc, key) {
|
|
24
|
+
var _extends2;
|
|
25
|
+
|
|
26
|
+
if (/@media/.test(key)) {
|
|
27
|
+
var _matchMedia;
|
|
28
|
+
|
|
29
|
+
return (0, _extends3.default)({}, acc, (0, _mediaEngine.default)((_matchMedia = {}, _matchMedia[key] = styles[key], _matchMedia), container));
|
|
30
|
+
}
|
|
31
|
+
|
|
32
|
+
return (0, _extends3.default)({}, acc, (_extends2 = {}, _extends2[key] = styles[key], _extends2));
|
|
33
|
+
}, {});
|
|
34
|
+
};
|
|
35
|
+
|
|
36
|
+
var _default = R.curryN(2, resolveMediaQueries);
|
|
37
|
+
|
|
38
|
+
exports.default = _default;
|
|
@@ -0,0 +1,48 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
|
|
4
|
+
|
|
5
|
+
var _interopRequireWildcard = require("@babel/runtime/helpers/interopRequireWildcard");
|
|
6
|
+
|
|
7
|
+
exports.__esModule = true;
|
|
8
|
+
exports.default = void 0;
|
|
9
|
+
|
|
10
|
+
var R = _interopRequireWildcard(require("ramda"));
|
|
11
|
+
|
|
12
|
+
var _hslToHex = _interopRequireDefault(require("hsl-to-hex"));
|
|
13
|
+
|
|
14
|
+
var _colorString = _interopRequireDefault(require("color-string"));
|
|
15
|
+
|
|
16
|
+
var isRgb = R.test(/rgb/g);
|
|
17
|
+
var isRgba = R.test(/rgba/g);
|
|
18
|
+
var isHsl = R.test(/hsl/g);
|
|
19
|
+
var isHsla = R.test(/hsla/g);
|
|
20
|
+
/**
|
|
21
|
+
* Transform rgb color to hexa
|
|
22
|
+
*
|
|
23
|
+
* @param {String} styles value
|
|
24
|
+
* @returns {Object} transformed value
|
|
25
|
+
*/
|
|
26
|
+
|
|
27
|
+
var parseRgb = R.compose(_colorString.default.to.hex, _colorString.default.get.rgb);
|
|
28
|
+
/**
|
|
29
|
+
* Transform Hsl color to hexa
|
|
30
|
+
*
|
|
31
|
+
* @param {String} styles value
|
|
32
|
+
* @returns {Object} transformed value
|
|
33
|
+
*/
|
|
34
|
+
|
|
35
|
+
var parseHsl = R.compose(R.toUpper, R.apply(_hslToHex.default), R.map(Math.round), _colorString.default.get.hsl);
|
|
36
|
+
/**
|
|
37
|
+
* Transform given color to hexa
|
|
38
|
+
*
|
|
39
|
+
* @param {String} styles value
|
|
40
|
+
* @returns {Object} transformed value
|
|
41
|
+
*/
|
|
42
|
+
|
|
43
|
+
var transformColor = function transformColor(value) {
|
|
44
|
+
return R.cond([[isRgba, parseRgb], [isRgb, parseRgb], [isHsla, parseHsl], [isHsl, parseHsl], [R.T, R.always(value)]])(value);
|
|
45
|
+
};
|
|
46
|
+
|
|
47
|
+
var _default = transformColor;
|
|
48
|
+
exports.default = _default;
|
|
@@ -0,0 +1,31 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
exports.__esModule = true;
|
|
4
|
+
exports.default = void 0;
|
|
5
|
+
var FONT_WEIGHTS = {
|
|
6
|
+
thin: 100,
|
|
7
|
+
hairline: 100,
|
|
8
|
+
ultralight: 200,
|
|
9
|
+
extralight: 200,
|
|
10
|
+
light: 300,
|
|
11
|
+
normal: 400,
|
|
12
|
+
medium: 500,
|
|
13
|
+
semibold: 600,
|
|
14
|
+
demibold: 600,
|
|
15
|
+
bold: 700,
|
|
16
|
+
ultrabold: 800,
|
|
17
|
+
extrabold: 800,
|
|
18
|
+
heavy: 900,
|
|
19
|
+
black: 900
|
|
20
|
+
};
|
|
21
|
+
|
|
22
|
+
var processFontWeight = function processFontWeight(value) {
|
|
23
|
+
if (!value) return FONT_WEIGHTS.normal;
|
|
24
|
+
if (typeof value === 'number') return value;
|
|
25
|
+
var lv = value.toLowerCase();
|
|
26
|
+
if (FONT_WEIGHTS[lv]) return FONT_WEIGHTS[lv];
|
|
27
|
+
return value;
|
|
28
|
+
};
|
|
29
|
+
|
|
30
|
+
var _default = processFontWeight;
|
|
31
|
+
exports.default = _default;
|
|
@@ -0,0 +1,61 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
|
|
4
|
+
|
|
5
|
+
exports.__esModule = true;
|
|
6
|
+
exports.default = void 0;
|
|
7
|
+
|
|
8
|
+
var _units = _interopRequireDefault(require("./units"));
|
|
9
|
+
|
|
10
|
+
var _colors = _interopRequireDefault(require("./colors"));
|
|
11
|
+
|
|
12
|
+
var _transform = _interopRequireDefault(require("./transform"));
|
|
13
|
+
|
|
14
|
+
var _fontWeight = _interopRequireDefault(require("./fontWeight"));
|
|
15
|
+
|
|
16
|
+
var _objectPosition = _interopRequireDefault(require("./objectPosition"));
|
|
17
|
+
|
|
18
|
+
var _transformOrigin = _interopRequireDefault(require("./transformOrigin"));
|
|
19
|
+
|
|
20
|
+
var _castFloat = _interopRequireDefault(require("../utils/castFloat"));
|
|
21
|
+
|
|
22
|
+
var handlers = {
|
|
23
|
+
transform: _transform.default,
|
|
24
|
+
fontWeight: _fontWeight.default,
|
|
25
|
+
objectPositionX: _objectPosition.default,
|
|
26
|
+
objectPositionY: _objectPosition.default,
|
|
27
|
+
transformOriginX: _transformOrigin.default,
|
|
28
|
+
transformOriginY: _transformOrigin.default
|
|
29
|
+
};
|
|
30
|
+
|
|
31
|
+
var transformStyle = function transformStyle(key, value, container) {
|
|
32
|
+
var result = handlers[key] ? handlers[key](value) : value;
|
|
33
|
+
return (0, _colors.default)((0, _units.default)(container, (0, _castFloat.default)(result)));
|
|
34
|
+
};
|
|
35
|
+
/**
|
|
36
|
+
* Transform styles values
|
|
37
|
+
*
|
|
38
|
+
* @param {Object} styles object
|
|
39
|
+
* @returns {Object} transformed styles
|
|
40
|
+
*/
|
|
41
|
+
|
|
42
|
+
|
|
43
|
+
var transform = function transform(container) {
|
|
44
|
+
return function (style) {
|
|
45
|
+
if (!style) return style;
|
|
46
|
+
var propsArray = Object.keys(style);
|
|
47
|
+
var resolvedStyle = {};
|
|
48
|
+
|
|
49
|
+
for (var i = 0; i < propsArray.length; i += 1) {
|
|
50
|
+
var key = propsArray[i];
|
|
51
|
+
var value = style[key];
|
|
52
|
+
var transformed = transformStyle(key, value, container);
|
|
53
|
+
resolvedStyle[key] = transformed;
|
|
54
|
+
}
|
|
55
|
+
|
|
56
|
+
return resolvedStyle;
|
|
57
|
+
};
|
|
58
|
+
};
|
|
59
|
+
|
|
60
|
+
var _default = transform;
|
|
61
|
+
exports.default = _default;
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
|
|
4
|
+
|
|
5
|
+
exports.__esModule = true;
|
|
6
|
+
exports.default = void 0;
|
|
7
|
+
|
|
8
|
+
var _castFloat = _interopRequireDefault(require("../utils/castFloat"));
|
|
9
|
+
|
|
10
|
+
var _offsetKeyword = _interopRequireDefault(require("../utils/offsetKeyword"));
|
|
11
|
+
|
|
12
|
+
var transformObjectPosition = function transformObjectPosition(value) {
|
|
13
|
+
return (0, _offsetKeyword.default)(value) || (0, _castFloat.default)(value);
|
|
14
|
+
};
|
|
15
|
+
|
|
16
|
+
var _default = transformObjectPosition;
|
|
17
|
+
exports.default = _default;
|
|
@@ -0,0 +1,137 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
exports.__esModule = true;
|
|
4
|
+
exports.default = void 0;
|
|
5
|
+
|
|
6
|
+
var parse = function parse(transformString) {
|
|
7
|
+
var transforms = transformString.trim().split(/\) |\)/); // Handle "initial", "inherit", "unset".
|
|
8
|
+
|
|
9
|
+
if (transforms.length === 1) {
|
|
10
|
+
return [[transforms[0], true]];
|
|
11
|
+
}
|
|
12
|
+
|
|
13
|
+
var parsed = [];
|
|
14
|
+
|
|
15
|
+
for (var i = 0; i < transforms.length; i += 1) {
|
|
16
|
+
var transform = transforms[i];
|
|
17
|
+
|
|
18
|
+
if (transform) {
|
|
19
|
+
var _transform$split = transform.split('('),
|
|
20
|
+
name = _transform$split[0],
|
|
21
|
+
rawValue = _transform$split[1];
|
|
22
|
+
|
|
23
|
+
var splitChar = rawValue.indexOf(',') >= 0 ? ',' : ' ';
|
|
24
|
+
var value = rawValue.split(splitChar).map(function (val) {
|
|
25
|
+
return val.trim();
|
|
26
|
+
});
|
|
27
|
+
parsed.push({
|
|
28
|
+
operation: name,
|
|
29
|
+
value: value
|
|
30
|
+
});
|
|
31
|
+
}
|
|
32
|
+
}
|
|
33
|
+
|
|
34
|
+
return parsed;
|
|
35
|
+
};
|
|
36
|
+
|
|
37
|
+
var normalizeTransformOperation = function normalizeTransformOperation(_ref) {
|
|
38
|
+
var operation = _ref.operation,
|
|
39
|
+
value = _ref.value;
|
|
40
|
+
|
|
41
|
+
switch (operation) {
|
|
42
|
+
case 'scale':
|
|
43
|
+
{
|
|
44
|
+
var _value$map = value.map(function (num) {
|
|
45
|
+
return Number.parseFloat(num);
|
|
46
|
+
}),
|
|
47
|
+
scaleX = _value$map[0],
|
|
48
|
+
_value$map$ = _value$map[1],
|
|
49
|
+
scaleY = _value$map$ === void 0 ? scaleX : _value$map$;
|
|
50
|
+
|
|
51
|
+
return {
|
|
52
|
+
operation: 'scale',
|
|
53
|
+
value: [scaleX, scaleY]
|
|
54
|
+
};
|
|
55
|
+
}
|
|
56
|
+
|
|
57
|
+
case 'scaleX':
|
|
58
|
+
{
|
|
59
|
+
return {
|
|
60
|
+
operation: 'scale',
|
|
61
|
+
value: [Number.parseFloat(value), 1]
|
|
62
|
+
};
|
|
63
|
+
}
|
|
64
|
+
|
|
65
|
+
case 'scaleY':
|
|
66
|
+
{
|
|
67
|
+
return {
|
|
68
|
+
operation: 'scale',
|
|
69
|
+
value: [1, Number.parseFloat(value)]
|
|
70
|
+
};
|
|
71
|
+
}
|
|
72
|
+
|
|
73
|
+
case 'rotate':
|
|
74
|
+
{
|
|
75
|
+
var unitsRegexp = /(-?\d*\.?\d*)(\w*)?/i;
|
|
76
|
+
|
|
77
|
+
var _unitsRegexp$exec = unitsRegexp.exec(value),
|
|
78
|
+
angle = _unitsRegexp$exec[1],
|
|
79
|
+
unit = _unitsRegexp$exec[2];
|
|
80
|
+
|
|
81
|
+
var number = Number.parseFloat(angle);
|
|
82
|
+
return {
|
|
83
|
+
operation: 'rotate',
|
|
84
|
+
value: [unit === 'rad' ? number * 180 / Math.PI : number]
|
|
85
|
+
};
|
|
86
|
+
}
|
|
87
|
+
|
|
88
|
+
case 'translate':
|
|
89
|
+
{
|
|
90
|
+
return {
|
|
91
|
+
operation: 'translate',
|
|
92
|
+
value: value.map(function (num) {
|
|
93
|
+
return Number.parseFloat(num);
|
|
94
|
+
})
|
|
95
|
+
};
|
|
96
|
+
}
|
|
97
|
+
|
|
98
|
+
case 'translateX':
|
|
99
|
+
{
|
|
100
|
+
return {
|
|
101
|
+
operation: 'translate',
|
|
102
|
+
value: [Number.parseFloat(value), 0]
|
|
103
|
+
};
|
|
104
|
+
}
|
|
105
|
+
|
|
106
|
+
case 'translateY':
|
|
107
|
+
{
|
|
108
|
+
return {
|
|
109
|
+
operation: 'translate',
|
|
110
|
+
value: [0, Number.parseFloat(value)]
|
|
111
|
+
};
|
|
112
|
+
}
|
|
113
|
+
|
|
114
|
+
default:
|
|
115
|
+
{
|
|
116
|
+
return {
|
|
117
|
+
operation: operation,
|
|
118
|
+
value: value.map(function (num) {
|
|
119
|
+
return Number.parseFloat(num);
|
|
120
|
+
})
|
|
121
|
+
};
|
|
122
|
+
}
|
|
123
|
+
}
|
|
124
|
+
};
|
|
125
|
+
|
|
126
|
+
var normalize = function normalize(operations) {
|
|
127
|
+
return operations.map(function (operation) {
|
|
128
|
+
return normalizeTransformOperation(operation);
|
|
129
|
+
});
|
|
130
|
+
};
|
|
131
|
+
|
|
132
|
+
var processTransform = function processTransform(value) {
|
|
133
|
+
return normalize(parse(value));
|
|
134
|
+
};
|
|
135
|
+
|
|
136
|
+
var _default = processTransform;
|
|
137
|
+
exports.default = _default;
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
|
|
4
|
+
|
|
5
|
+
exports.__esModule = true;
|
|
6
|
+
exports.default = void 0;
|
|
7
|
+
|
|
8
|
+
var _castFloat = _interopRequireDefault(require("../utils/castFloat"));
|
|
9
|
+
|
|
10
|
+
var _offsetKeyword = _interopRequireDefault(require("../utils/offsetKeyword"));
|
|
11
|
+
|
|
12
|
+
var transformTransformOrigin = function transformTransformOrigin(value) {
|
|
13
|
+
return (0, _offsetKeyword.default)(value) || (0, _castFloat.default)(value);
|
|
14
|
+
};
|
|
15
|
+
|
|
16
|
+
var _default = transformTransformOrigin;
|
|
17
|
+
exports.default = _default;
|
|
@@ -0,0 +1,60 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
exports.__esModule = true;
|
|
4
|
+
exports.default = void 0;
|
|
5
|
+
var DPI = 72; // 72pt per inch.
|
|
6
|
+
|
|
7
|
+
var MM_FACTOR = 1 / 25.4 * DPI;
|
|
8
|
+
var CM_FACTOR = 1 / 2.54 * DPI;
|
|
9
|
+
/**
|
|
10
|
+
* Parses scalar value in value and unit pairs
|
|
11
|
+
*
|
|
12
|
+
* @param {String} scalar value
|
|
13
|
+
* @returns {Object} parsed value
|
|
14
|
+
*/
|
|
15
|
+
|
|
16
|
+
var parseValue = function parseValue(value) {
|
|
17
|
+
var match = /^(-?\d*\.?\d+)(in|mm|cm|pt|vh|vw|px)?$/g.exec(value);
|
|
18
|
+
return match ? {
|
|
19
|
+
value: parseFloat(match[1], 10),
|
|
20
|
+
unit: match[2] || 'pt'
|
|
21
|
+
} : {
|
|
22
|
+
value: value,
|
|
23
|
+
unit: undefined
|
|
24
|
+
};
|
|
25
|
+
};
|
|
26
|
+
/**
|
|
27
|
+
* Transform given scalar value
|
|
28
|
+
*
|
|
29
|
+
* @param {Object} container
|
|
30
|
+
* @param {String} styles value
|
|
31
|
+
* @returns {Object} transformed value
|
|
32
|
+
*/
|
|
33
|
+
|
|
34
|
+
|
|
35
|
+
var transformUnit = function transformUnit(container, value) {
|
|
36
|
+
var scalar = parseValue(value);
|
|
37
|
+
|
|
38
|
+
switch (scalar.unit) {
|
|
39
|
+
case 'in':
|
|
40
|
+
return scalar.value * DPI;
|
|
41
|
+
|
|
42
|
+
case 'mm':
|
|
43
|
+
return scalar.value * MM_FACTOR;
|
|
44
|
+
|
|
45
|
+
case 'cm':
|
|
46
|
+
return scalar.value * CM_FACTOR;
|
|
47
|
+
|
|
48
|
+
case 'vh':
|
|
49
|
+
return scalar.value * (container.height / 100);
|
|
50
|
+
|
|
51
|
+
case 'vw':
|
|
52
|
+
return scalar.value * (container.width / 100);
|
|
53
|
+
|
|
54
|
+
default:
|
|
55
|
+
return scalar.value;
|
|
56
|
+
}
|
|
57
|
+
};
|
|
58
|
+
|
|
59
|
+
var _default = transformUnit;
|
|
60
|
+
exports.default = _default;
|
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
var _interopRequireWildcard = require("@babel/runtime/helpers/interopRequireWildcard");
|
|
4
|
+
|
|
5
|
+
exports.__esModule = true;
|
|
6
|
+
exports.default = void 0;
|
|
7
|
+
|
|
8
|
+
var R = _interopRequireWildcard(require("ramda"));
|
|
9
|
+
|
|
10
|
+
/* eslint-disable import/prefer-default-export */
|
|
11
|
+
var matchNumber = R.when(R.is(String), R.test(/^-?\d*\.?\d*$/));
|
|
12
|
+
|
|
13
|
+
var castFloat = function castFloat(value) {
|
|
14
|
+
if (typeof value !== 'string') return value;
|
|
15
|
+
if (matchNumber(value)) return parseFloat(value, 10);
|
|
16
|
+
return value;
|
|
17
|
+
};
|
|
18
|
+
|
|
19
|
+
var _default = castFloat;
|
|
20
|
+
exports.default = _default;
|
|
@@ -0,0 +1,25 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
exports.__esModule = true;
|
|
4
|
+
exports.default = void 0;
|
|
5
|
+
|
|
6
|
+
var offsetKeyword = function offsetKeyword(value) {
|
|
7
|
+
switch (value) {
|
|
8
|
+
case 'top':
|
|
9
|
+
case 'left':
|
|
10
|
+
return '0%';
|
|
11
|
+
|
|
12
|
+
case 'right':
|
|
13
|
+
case 'bottom':
|
|
14
|
+
return '100%';
|
|
15
|
+
|
|
16
|
+
case 'center':
|
|
17
|
+
return '50%';
|
|
18
|
+
|
|
19
|
+
default:
|
|
20
|
+
return null;
|
|
21
|
+
}
|
|
22
|
+
};
|
|
23
|
+
|
|
24
|
+
var _default = offsetKeyword;
|
|
25
|
+
exports.default = _default;
|
package/package.json
ADDED
|
@@ -0,0 +1,24 @@
|
|
|
1
|
+
{
|
|
2
|
+
"name": "@react-pdf/stylesheet",
|
|
3
|
+
"version": "2.0.12",
|
|
4
|
+
"license": "MIT",
|
|
5
|
+
"author": "Diego Muracciole <diegomuracciole@gmail.com>",
|
|
6
|
+
"homepage": "https://github.com/diegomura/react-pdf#readme",
|
|
7
|
+
"repository": "git@github.com:diegomura/react-pdf.git",
|
|
8
|
+
"main": "lib/index.js",
|
|
9
|
+
"scripts": {
|
|
10
|
+
"test": "jest",
|
|
11
|
+
"build": "rimraf ./lib && babel src --out-dir lib",
|
|
12
|
+
"watch": "rimraf ./lib && babel src --out-dir lib --watch"
|
|
13
|
+
},
|
|
14
|
+
"dependencies": {
|
|
15
|
+
"@react-pdf/types": "^2.0.6",
|
|
16
|
+
"color-string": "^1.5.3",
|
|
17
|
+
"hsl-to-hex": "^1.0.0",
|
|
18
|
+
"media-engine": "^1.0.3",
|
|
19
|
+
"ramda": "^0.26.1"
|
|
20
|
+
},
|
|
21
|
+
"files": [
|
|
22
|
+
"lib"
|
|
23
|
+
]
|
|
24
|
+
}
|