aboutsummaryrefslogtreecommitdiff
path: root/node_modules/postcss-convert-values/dist/lib/convert.js
diff options
context:
space:
mode:
Diffstat (limited to 'node_modules/postcss-convert-values/dist/lib/convert.js')
-rw-r--r--node_modules/postcss-convert-values/dist/lib/convert.js88
1 files changed, 88 insertions, 0 deletions
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