Website Structure
This commit is contained in:
parent
62812f2090
commit
71f0676a62
22365 changed files with 4265753 additions and 791 deletions
80
Frontend-Learner/node_modules/postcss-reduce-initial/src/index.js
generated
vendored
Normal file
80
Frontend-Learner/node_modules/postcss-reduce-initial/src/index.js
generated
vendored
Normal file
|
|
@ -0,0 +1,80 @@
|
|||
'use strict';
|
||||
const { dirname } = require('path');
|
||||
const browserslist = require('browserslist');
|
||||
const { isSupported } = require('caniuse-api');
|
||||
const fromInitial = require('./data/fromInitial.json');
|
||||
const toInitial = require('./data/toInitial.json');
|
||||
const ignoreProps = require('./lib/ignoreProps.js');
|
||||
|
||||
const initial = 'initial';
|
||||
|
||||
// In most of the browser including chrome the initial for `writing-mode` is not `horizontal-tb`. Ref https://github.com/cssnano/cssnano/pull/905
|
||||
const defaultIgnoreProps = ignoreProps;
|
||||
|
||||
/**
|
||||
* @typedef {{ overrideBrowserslist?: string | string[] }} AutoprefixerOptions
|
||||
* @typedef {Pick<browserslist.Options, 'stats' | 'path' | 'env'>} BrowserslistOptions
|
||||
* @typedef {{ignore?: string[]} & AutoprefixerOptions & BrowserslistOptions} Options
|
||||
*/
|
||||
|
||||
/**
|
||||
* @type {import('postcss').PluginCreator<Options>}
|
||||
* @param {Options} options
|
||||
* @return {import('postcss').Plugin}
|
||||
*/
|
||||
function pluginCreator(options = {}) {
|
||||
return {
|
||||
postcssPlugin: 'postcss-reduce-initial',
|
||||
|
||||
/**
|
||||
* @param {import('postcss').Result & {opts: BrowserslistOptions & {file?: string}}} result
|
||||
*/
|
||||
prepare(result) {
|
||||
const { stats, env, from, file } = result.opts || {};
|
||||
const browsers = browserslist(options.overrideBrowserslist, {
|
||||
stats: options.stats || stats,
|
||||
path: options.path || dirname(from || file || __filename),
|
||||
env: options.env || env,
|
||||
});
|
||||
|
||||
const initialSupport = isSupported('css-initial-value', browsers);
|
||||
return {
|
||||
OnceExit(css) {
|
||||
css.walkDecls((decl) => {
|
||||
const lowerCasedProp = decl.prop.toLowerCase();
|
||||
const ignoreProp = new Set(
|
||||
defaultIgnoreProps.concat(options.ignore || [])
|
||||
);
|
||||
|
||||
if (ignoreProp.has(lowerCasedProp)) {
|
||||
return;
|
||||
}
|
||||
|
||||
if (
|
||||
initialSupport &&
|
||||
Object.prototype.hasOwnProperty.call(toInitial, lowerCasedProp) &&
|
||||
decl.value.toLowerCase() ===
|
||||
toInitial[/** @type {keyof toInitial} */ (lowerCasedProp)]
|
||||
) {
|
||||
decl.value = initial;
|
||||
return;
|
||||
}
|
||||
|
||||
if (
|
||||
decl.value.toLowerCase() !== initial ||
|
||||
!fromInitial[/** @type {keyof fromInitial} */ (lowerCasedProp)]
|
||||
) {
|
||||
return;
|
||||
}
|
||||
|
||||
decl.value =
|
||||
fromInitial[/** @type {keyof fromInitial} */ (lowerCasedProp)];
|
||||
});
|
||||
},
|
||||
};
|
||||
},
|
||||
};
|
||||
}
|
||||
|
||||
pluginCreator.postcss = true;
|
||||
module.exports = pluginCreator;
|
||||
Loading…
Add table
Add a link
Reference in a new issue