芝麻web文件管理V1.00
编辑当前文件:/home/rejoandoctor/public_html/node_modules/postcss-ordered-values/src/rules/transition.js
'use strict'; const { unit } = require('postcss-value-parser'); const { getArguments } = require('cssnano-utils'); const addSpace = require('../lib/addSpace'); const getValue = require('../lib/getValue'); // transition: [ none |
] ||
||
||
const timingFunctions = new Set([ 'ease', 'linear', 'ease-in', 'ease-out', 'ease-in-out', 'step-start', 'step-end', ]); /** * @param {import('postcss-value-parser').Node[][]} args * @return {import('postcss-value-parser').Node[][]} */ function normalize(args) { const list = []; for (const arg of args) { /** @type {Record
} */ let state = { timingFunction: [], property: [], time1: [], time2: [], }; arg.forEach((node) => { const { type, value } = node; if (type === 'space') { return; } if ( type === 'function' && new Set(['steps', 'cubic-bezier']).has(value.toLowerCase()) ) { state.timingFunction = [...state.timingFunction, node, addSpace()]; } else if (unit(value)) { if (!state.time1.length) { state.time1 = [...state.time1, node, addSpace()]; } else { state.time2 = [...state.time2, node, addSpace()]; } } else if (timingFunctions.has(value.toLowerCase())) { state.timingFunction = [...state.timingFunction, node, addSpace()]; } else { state.property = [...state.property, node, addSpace()]; } }); list.push([ ...state.property, ...state.time1, ...state.timingFunction, ...state.time2, ]); } return list; } /** * @param {import('postcss-value-parser').ParsedValue} parsed * @return {string} */ module.exports = function normalizeTransition(parsed) { const values = normalize(getArguments(parsed)); return getValue(values); };