diff options
| author | littleblack111 <littleblack11111@gmail.com> | 2024-05-14 14:05:49 +0800 |
|---|---|---|
| committer | littleblack111 <littleblack11111@gmail.com> | 2024-05-14 14:05:49 +0800 |
| commit | 06823fbf1c2e763a5bf76c3990ca98fbbcd98691 (patch) | |
| tree | 4280bece3888d12a022093bf1a9cd1b049393602 /node_modules/postcss-convert-values/src | |
| parent | 1368909b3cd552dbb0d12d5863c597f5be46177d (diff) | |
updated node_modules
Diffstat (limited to 'node_modules/postcss-convert-values/src')
| -rw-r--r-- | node_modules/postcss-convert-values/src/index.js | 37 |
1 files changed, 28 insertions, 9 deletions
diff --git a/node_modules/postcss-convert-values/src/index.js b/node_modules/postcss-convert-values/src/index.js index 3590d908..85755753 100644 --- a/node_modules/postcss-convert-values/src/index.js +++ b/node_modules/postcss-convert-values/src/index.js @@ -1,4 +1,5 @@ 'use strict'; +const { dirname } = require('path'); const valueParser = require('postcss-value-parser'); const browserslist = require('browserslist'); const convert = require('./lib/convert.js'); @@ -114,6 +115,7 @@ function clampOpacity(node) { function shouldKeepZeroUnit(decl, browsers) { const { parent } = decl; const lowerCasedProp = decl.prop.toLowerCase(); + return ( (decl.value.includes('%') && keepZeroPercent.has(lowerCasedProp) && @@ -130,6 +132,8 @@ function shouldKeepZeroUnit(decl, browsers) { /** @type {import('postcss').AtRule} */ (parent).name === 'property' && /** @type {import('postcss').AtRule} */ + (parent).nodes !== undefined && + /** @type {import('postcss').AtRule} */ (parent).nodes.some( (node) => node.type === 'decl' && @@ -192,24 +196,39 @@ function transform(opts, browsers, decl) { } const plugin = 'postcss-convert-values'; + /** - * @typedef {{precision: boolean | number, angle?: boolean, time?: boolean, length?: boolean} & browserslist.Options} Options */ + * @typedef {Parameters<typeof convert>[2]} ConvertOptions + * @typedef {{ overrideBrowserslist?: string | string[] }} AutoprefixerOptions + * @typedef {Pick<browserslist.Options, 'stats' | 'path' | 'env'>} BrowserslistOptions + * @typedef {{precision?: false | number} & ConvertOptions & AutoprefixerOptions & BrowserslistOptions} Options + */ + /** * @type {import('postcss').PluginCreator<Options>} * @param {Options} opts * @return {import('postcss').Plugin} */ function pluginCreator(opts = { precision: false }) { - const browsers = browserslist(null, { - stats: opts.stats, - path: __dirname, - env: opts.env, - }); - return { postcssPlugin: plugin, - OnceExit(css) { - css.walkDecls((decl) => transform(opts, browsers, decl)); + + /** + * @param {import('postcss').Result & {opts: BrowserslistOptions & {file?: string}}} result + */ + prepare(result) { + const { stats, env, from, file } = result.opts || {}; + const browsers = browserslist(opts.overrideBrowserslist, { + stats: opts.stats || stats, + path: opts.path || dirname(from || file || __filename), + env: opts.env || env, + }); + + return { + OnceExit(css) { + css.walkDecls((decl) => transform(opts, browsers, decl)); + }, + }; }, }; } |
