summaryrefslogtreecommitdiff
path: root/node_modules/postcss-reduce-transforms/src/index.js
diff options
context:
space:
mode:
Diffstat (limited to 'node_modules/postcss-reduce-transforms/src/index.js')
-rw-r--r--node_modules/postcss-reduce-transforms/src/index.js309
1 files changed, 0 insertions, 309 deletions
diff --git a/node_modules/postcss-reduce-transforms/src/index.js b/node_modules/postcss-reduce-transforms/src/index.js
deleted file mode 100644
index 8a661d07..00000000
--- a/node_modules/postcss-reduce-transforms/src/index.js
+++ /dev/null
@@ -1,309 +0,0 @@
-'use strict';
-const valueParser = require('postcss-value-parser');
-
-/**
- * @param {(number|string)[]} list
- * @param {valueParser.Node} node
- * @param {number} index
- * @return {(number|string)[]}
- */
-function getValues(list, node, index) {
- if (index % 2 === 0) {
- /** @type {number|string} */
- let value = NaN;
-
- if (
- node.type === 'function' &&
- (node.value === 'var' || node.value === 'env') &&
- node.nodes.length === 1
- ) {
- value = valueParser.stringify(node.nodes);
- } else if (node.type === 'word') {
- value = parseFloat(node.value);
- }
-
- return [...list, value];
- }
-
- return list;
-}
-
-/**
- * @param {valueParser.FunctionNode} node
- * @param {(number|string)[]} values
- * @return {void}
- */
-function matrix3d(node, values) {
- if (values.length !== 16) {
- return;
- }
-
- // matrix3d(a, b, 0, 0, c, d, 0, 0, 0, 0, 1, 0, tx, ty, 0, 1) => matrix(a, b, c, d, tx, ty)
- if (
- values[15] &&
- values[2] === 0 &&
- values[3] === 0 &&
- values[6] === 0 &&
- values[7] === 0 &&
- values[8] === 0 &&
- values[9] === 0 &&
- values[10] === 1 &&
- values[11] === 0 &&
- values[14] === 0 &&
- values[15] === 1
- ) {
- const { nodes } = node;
-
- node.value = 'matrix';
- node.nodes = [
- nodes[0], // a
- nodes[1], // ,
- nodes[2], // b
- nodes[3], // ,
- nodes[8], // c
- nodes[9], // ,
- nodes[10], // d
- nodes[11], // ,
- nodes[24], // tx
- nodes[25], // ,
- nodes[26], // ty
- ];
- }
-}
-
-const rotate3dMappings = new Map([
- [[1, 0, 0].toString(), 'rotateX'], // rotate3d(1, 0, 0, a) => rotateX(a)
- [[0, 1, 0].toString(), 'rotateY'], // rotate3d(0, 1, 0, a) => rotateY(a)
- [[0, 0, 1].toString(), 'rotate'], // rotate3d(0, 0, 1, a) => rotate(a)
-]);
-
-/**
- * @param {valueParser.FunctionNode} node
- * @param {(number|string)[]} values
- * @return {void}
- */
-function rotate3d(node, values) {
- if (values.length !== 4) {
- return;
- }
-
- const { nodes } = node;
- const match = rotate3dMappings.get(values.slice(0, 3).toString());
-
- if (match) {
- node.value = match;
- node.nodes = [nodes[6]];
- }
-}
-
-/**
- * @param {valueParser.FunctionNode} node
- * @param {(number|string)[]} values
- * @return {void}
- */
-function rotateZ(node, values) {
- if (values.length !== 1) {
- return;
- }
-
- // rotateZ(rz) => rotate(rz)
- node.value = 'rotate';
-}
-
-/**
- * @param {valueParser.FunctionNode} node
- * @param {(number|string)[]} values
- * @return {void}
- */
-function scale(node, values) {
- if (values.length !== 2) {
- return;
- }
-
- const { nodes } = node;
- const [first, second] = values;
-
- // scale(sx, sy) => scale(sx)
- if (first === second) {
- node.nodes = [nodes[0]];
-
- return;
- }
-
- // scale(sx, 1) => scaleX(sx)
- if (second === 1) {
- node.value = 'scaleX';
- node.nodes = [nodes[0]];
-
- return;
- }
-
- // scale(1, sy) => scaleY(sy)
- if (first === 1) {
- node.value = 'scaleY';
- node.nodes = [nodes[2]];
-
- return;
- }
-}
-
-/**
- * @param {valueParser.FunctionNode} node
- * @param {(number|string)[]} values
- * @return {void}
- */
-function scale3d(node, values) {
- if (values.length !== 3) {
- return;
- }
-
- const { nodes } = node;
- const [first, second, third] = values;
-
- // scale3d(sx, 1, 1) => scaleX(sx)
- if (second === 1 && third === 1) {
- node.value = 'scaleX';
- node.nodes = [nodes[0]];
-
- return;
- }
-
- // scale3d(1, sy, 1) => scaleY(sy)
- if (first === 1 && third === 1) {
- node.value = 'scaleY';
- node.nodes = [nodes[2]];
-
- return;
- }
-
- // scale3d(1, 1, sz) => scaleZ(sz)
- if (first === 1 && second === 1) {
- node.value = 'scaleZ';
- node.nodes = [nodes[4]];
-
- return;
- }
-}
-
-/**
- * @param {valueParser.FunctionNode} node
- * @param {(number|string)[]} values
- * @return {void}
- */
-function translate(node, values) {
- if (values.length !== 2) {
- return;
- }
-
- const { nodes } = node;
-
- // translate(tx, 0) => translate(tx)
- if (values[1] === 0) {
- node.nodes = [nodes[0]];
-
- return;
- }
-
- // translate(0, ty) => translateY(ty)
- if (values[0] === 0) {
- node.value = 'translateY';
- node.nodes = [nodes[2]];
-
- return;
- }
-}
-
-/**
- * @param {valueParser.FunctionNode} node
- * @param {(number|string)[]} values
- * @return {void}
- */
-function translate3d(node, values) {
- if (values.length !== 3) {
- return;
- }
-
- const { nodes } = node;
-
- // translate3d(0, 0, tz) => translateZ(tz)
- if (values[0] === 0 && values[1] === 0) {
- node.value = 'translateZ';
- node.nodes = [nodes[4]];
- }
-}
-
-const reducers = new Map([
- ['matrix3d', matrix3d],
- ['rotate3d', rotate3d],
- ['rotateZ', rotateZ],
- ['scale', scale],
- ['scale3d', scale3d],
- ['translate', translate],
- ['translate3d', translate3d],
-]);
-/**
- * @param {string} name
- * @return {string}
- */
-function normalizeReducerName(name) {
- const lowerCasedName = name.toLowerCase();
-
- if (lowerCasedName === 'rotatez') {
- return 'rotateZ';
- }
-
- return lowerCasedName;
-}
-
-/**
- * @param {valueParser.Node} node
- * @return {false}
- */
-function reduce(node) {
- if (node.type === 'function') {
- const normalizedReducerName = normalizeReducerName(node.value);
- const reducer = reducers.get(normalizedReducerName);
- if (reducer !== undefined) {
- reducer(node, node.nodes.reduce(getValues, []));
- }
- }
- return false;
-}
-
-/**
- * @type {import('postcss').PluginCreator<void>}
- * @return {import('postcss').Plugin}
- */
-function pluginCreator() {
- return {
- postcssPlugin: 'postcss-reduce-transforms',
- prepare() {
- const cache = new Map();
- return {
- OnceExit(css) {
- css.walkDecls(/transform$/i, (decl) => {
- const value = decl.value;
-
- if (!value) {
- return;
- }
-
- if (cache.has(value)) {
- decl.value = cache.get(value);
-
- return;
- }
-
- const result = valueParser(value).walk(reduce).toString();
-
- decl.value = result;
- cache.set(value, result);
- });
- },
- };
- },
- };
-}
-
-pluginCreator.postcss = true;
-module.exports = pluginCreator;