@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 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
+ }