| 12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061 |
- "use strict";
- var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
- Object.defineProperty(exports, "__esModule", {
- value: true
- });
- exports.default = void 0;
- var _extends2 = _interopRequireDefault(require("@babel/runtime/helpers/extends"));
- var _unitless = _interopRequireDefault(require("@emotion/unitless"));
- /**
- * respect https://github.com/cuth/postcss-pxtorem
- */
- const pxRegex = /url\([^)]+\)|var\([^)]+\)|(\d*\.?\d+)px/g;
- function toFixed(number, precision) {
- const multiplier = Math.pow(10, precision + 1),
- wholeNumber = Math.floor(number * multiplier);
- return Math.round(wholeNumber / 10) * 10 / multiplier;
- }
- const transform = function () {
- let options = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};
- const {
- rootValue = 16,
- precision = 5,
- mediaQuery = false
- } = options;
- const pxReplace = (m, $1) => {
- if (!$1) return m;
- const pixels = parseFloat($1);
- // covenant: pixels <= 1, not transform to rem @zombieJ
- if (pixels <= 1) return m;
- const fixedVal = toFixed(pixels / rootValue, precision);
- return `${fixedVal}rem`;
- };
- const visit = cssObj => {
- const clone = (0, _extends2.default)({}, cssObj);
- Object.entries(cssObj).forEach(_ref => {
- let [key, value] = _ref;
- if (typeof value === 'string' && value.includes('px')) {
- const newValue = value.replace(pxRegex, pxReplace);
- clone[key] = newValue;
- }
- // no unit
- if (!_unitless.default[key] && typeof value === 'number' && value !== 0) {
- clone[key] = `${value}px`.replace(pxRegex, pxReplace);
- }
- // Media queries
- const mergedKey = key.trim();
- if (mergedKey.startsWith('@') && mergedKey.includes('px') && mediaQuery) {
- const newKey = key.replace(pxRegex, pxReplace);
- clone[newKey] = clone[key];
- delete clone[key];
- }
- });
- return clone;
- };
- return {
- visit
- };
- };
- var _default = exports.default = transform;
|