first commit
This commit is contained in:
56
app_vue/node_modules/postcss-normalize-charset/src/index.js
generated
vendored
Normal file
56
app_vue/node_modules/postcss-normalize-charset/src/index.js
generated
vendored
Normal file
@ -0,0 +1,56 @@
|
||||
'use strict';
|
||||
const charset = 'charset';
|
||||
// eslint-disable-next-line no-control-regex
|
||||
const nonAscii = /[^\x00-\x7F]/;
|
||||
|
||||
/**
|
||||
* @typedef {{add?: boolean}} Options
|
||||
*/
|
||||
/**
|
||||
* @type {import('postcss').PluginCreator<Options>}
|
||||
* @param {Options} opts
|
||||
* @return {import('postcss').Plugin}
|
||||
*/
|
||||
function pluginCreator(opts = {}) {
|
||||
return {
|
||||
postcssPlugin: 'postcss-normalize-' + charset,
|
||||
|
||||
OnceExit(css, { AtRule }) {
|
||||
/** @type {import('postcss').AtRule | undefined} */
|
||||
let charsetRule;
|
||||
/** @type {import('postcss').Node | undefined} */
|
||||
let nonAsciiNode;
|
||||
|
||||
css.walk((node) => {
|
||||
if (node.type === 'atrule' && node.name === charset) {
|
||||
if (!charsetRule) {
|
||||
charsetRule = node;
|
||||
}
|
||||
node.remove();
|
||||
} else if (
|
||||
!nonAsciiNode &&
|
||||
node.parent === css &&
|
||||
nonAscii.test(node.toString())
|
||||
) {
|
||||
nonAsciiNode = node;
|
||||
}
|
||||
});
|
||||
|
||||
if (nonAsciiNode) {
|
||||
if (!charsetRule && opts.add !== false) {
|
||||
charsetRule = new AtRule({
|
||||
name: charset,
|
||||
params: '"utf-8"',
|
||||
});
|
||||
}
|
||||
if (charsetRule) {
|
||||
charsetRule.source = nonAsciiNode.source;
|
||||
css.prepend(charsetRule);
|
||||
}
|
||||
}
|
||||
},
|
||||
};
|
||||
}
|
||||
|
||||
pluginCreator.postcss = true;
|
||||
module.exports = pluginCreator;
|
||||
Reference in New Issue
Block a user