aboutsummaryrefslogtreecommitdiff
path: root/node_modules/postcss-convert-values/dist
diff options
context:
space:
mode:
Diffstat (limited to 'node_modules/postcss-convert-values/dist')
-rw-r--r--node_modules/postcss-convert-values/dist/index.js108
-rw-r--r--node_modules/postcss-convert-values/dist/lib/convert.js88
2 files changed, 196 insertions, 0 deletions
diff --git a/node_modules/postcss-convert-values/dist/index.js b/node_modules/postcss-convert-values/dist/index.js
new file mode 100644
index 00000000..a4c436b0
--- /dev/null
+++ b/node_modules/postcss-convert-values/dist/index.js
@@ -0,0 +1,108 @@
+'use strict';
+
+exports.__esModule = true;
+
+var _postcss = require('postcss');
+
+var _postcss2 = _interopRequireDefault(_postcss);
+
+var _postcssValueParser = require('postcss-value-parser');
+
+var _postcssValueParser2 = _interopRequireDefault(_postcssValueParser);
+
+var _convert = require('./lib/convert');
+
+var _convert2 = _interopRequireDefault(_convert);
+
+function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
+
+var LENGTH_UNITS = ['em', 'ex', 'ch', 'rem', 'vw', 'vh', 'vmin', 'vmax', 'cm', 'mm', 'q', 'in', 'pt', 'pc', 'px'];
+
+function parseWord(node, opts, keepZeroUnit) {
+ var pair = (0, _postcssValueParser.unit)(node.value);
+ if (pair) {
+ var num = Number(pair.number);
+ var u = pair.unit.toLowerCase();
+ if (num === 0) {
+ node.value = keepZeroUnit || !~LENGTH_UNITS.indexOf(u) && u !== '%' ? 0 + u : 0;
+ } else {
+ node.value = (0, _convert2.default)(num, u, opts);
+
+ if (typeof opts.precision === 'number' && u === 'px' && ~pair.number.indexOf('.')) {
+ var precision = Math.pow(10, opts.precision);
+ node.value = Math.round(parseFloat(node.value) * precision) / precision + u;
+ }
+ }
+ }
+}
+
+function clampOpacity(node) {
+ var pair = (0, _postcssValueParser.unit)(node.value);
+ if (!pair) {
+ return;
+ }
+ var num = Number(pair.number);
+ if (num > 1) {
+ node.value = 1 + pair.unit;
+ } else if (num < 0) {
+ node.value = 0 + pair.unit;
+ }
+}
+
+function shouldStripPercent(_ref) {
+ var value = _ref.value,
+ prop = _ref.prop,
+ parent = _ref.parent;
+
+ return ~value.indexOf('%') && (prop === 'max-height' || prop === 'height') || parent.parent && parent.parent.name === 'keyframes' && prop === 'stroke-dasharray' || prop === 'stroke-dashoffset' || prop === 'stroke-width';
+}
+
+function transform(opts) {
+ return function (decl) {
+ var prop = decl.prop;
+
+ if (~prop.indexOf('flex') || prop.indexOf('--') === 0) {
+ return;
+ }
+
+ decl.value = (0, _postcssValueParser2.default)(decl.value).walk(function (node) {
+ if (node.type === 'word') {
+ parseWord(node, opts, shouldStripPercent(decl));
+ if (prop === 'opacity' || prop === 'shape-image-threshold') {
+ clampOpacity(node);
+ }
+ } else if (node.type === 'function') {
+ if (node.value === 'calc' || node.value === 'hsl' || node.value === 'hsla') {
+ (0, _postcssValueParser.walk)(node.nodes, function (n) {
+ if (n.type === 'word') {
+ parseWord(n, opts, true);
+ }
+ });
+ return false;
+ }
+ if (node.value === 'url') {
+ return false;
+ }
+ }
+ }).toString();
+ };
+}
+
+var plugin = 'postcss-convert-values';
+
+exports.default = _postcss2.default.plugin(plugin, function () {
+ var opts = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : { precision: false };
+
+ if (opts.length === undefined && opts.convertLength !== undefined) {
+ console.warn(plugin + ': `convertLength` option is deprecated. Use `length`');
+ opts.length = opts.convertLength;
+ }
+ if (opts.length === undefined && opts.convertTime !== undefined) {
+ console.warn(plugin + ': `convertTime` option is deprecated. Use `time`');
+ opts.time = opts.convertTime;
+ }
+ return function (css) {
+ return css.walkDecls(transform(opts));
+ };
+});
+module.exports = exports['default']; \ No newline at end of file
diff --git a/node_modules/postcss-convert-values/dist/lib/convert.js b/node_modules/postcss-convert-values/dist/lib/convert.js
new file mode 100644
index 00000000..91400bc7
--- /dev/null
+++ b/node_modules/postcss-convert-values/dist/lib/convert.js
@@ -0,0 +1,88 @@
+'use strict';
+
+exports.__esModule = true;
+
+exports.default = function (number, unit, _ref) {
+ var time = _ref.time,
+ length = _ref.length,
+ angle = _ref.angle;
+
+ var value = dropLeadingZero(number) + (unit ? unit : '');
+ var converted = void 0;
+
+ if (length !== false && unit in lengthConv) {
+ converted = transform(number, unit, lengthConv);
+ }
+
+ if (time !== false && unit in timeConv) {
+ converted = transform(number, unit, timeConv);
+ }
+
+ if (angle !== false && unit in angleConv) {
+ converted = transform(number, unit, angleConv);
+ }
+
+ if (converted && converted.length < value.length) {
+ value = converted;
+ }
+
+ return value;
+};
+
+var lengthConv = {
+ in: 96,
+ px: 1,
+ pt: 4 / 3,
+ pc: 16
+};
+
+var timeConv = {
+ s: 1000,
+ ms: 1
+};
+
+var angleConv = {
+ turn: 360,
+ deg: 1
+};
+
+function dropLeadingZero(number) {
+ var value = String(number);
+
+ if (number % 1) {
+ if (value[0] === '0') {
+ return value.slice(1);
+ }
+
+ if (value[0] === '-' && value[1] === '0') {
+ return '-' + value.slice(2);
+ }
+ }
+
+ return value;
+}
+
+function transform(number, unit, conversion) {
+ var one = void 0,
+ base = void 0;
+ var convertionUnits = Object.keys(conversion).filter(function (u) {
+ if (conversion[u] === 1) {
+ one = u;
+ }
+ return unit !== u;
+ });
+
+ if (unit === one) {
+ base = number / conversion[unit];
+ } else {
+ base = number * conversion[unit];
+ }
+
+ return convertionUnits.map(function (u) {
+ return dropLeadingZero(base / conversion[u]) + u;
+ }).reduce(function (a, b) {
+ return a.length < b.length ? a : b;
+ });
+}
+
+module.exports = exports['default']; \ No newline at end of file