diff options
| author | ruki <waruqi@gmail.com> | 2018-11-08 00:38:48 +0800 |
|---|---|---|
| committer | ruki <waruqi@gmail.com> | 2018-11-07 21:53:09 +0800 |
| commit | 26105034da4fcce7ac883c899d781f016559310d (patch) | |
| tree | c459a5dc4e3aa0972d9919033ece511ce76dd129 /node_modules/postcss-discard-overridden | |
| parent | 2c77f00f1a7ecb6c8192f9c16d3b2001b254a107 (diff) | |
| download | xmake-docs-26105034da4fcce7ac883c899d781f016559310d.tar.gz xmake-docs-26105034da4fcce7ac883c899d781f016559310d.zip | |
switch to vuepress
Diffstat (limited to 'node_modules/postcss-discard-overridden')
11 files changed, 489 insertions, 0 deletions
diff --git a/node_modules/postcss-discard-overridden/.babelrc b/node_modules/postcss-discard-overridden/.babelrc new file mode 100644 index 00000000..aef4ffa4 --- /dev/null +++ b/node_modules/postcss-discard-overridden/.babelrc @@ -0,0 +1,8 @@ +{ + "presets": [ + "es2015" + ], + "plugins": [ + "add-module-exports" + ] +} diff --git a/node_modules/postcss-discard-overridden/.editorconfig b/node_modules/postcss-discard-overridden/.editorconfig new file mode 100644 index 00000000..e2cb9700 --- /dev/null +++ b/node_modules/postcss-discard-overridden/.editorconfig @@ -0,0 +1,12 @@ +root = true + +[*] +indent_style = space +indent_size = 4 +end_of_line = lf +charset = utf-8 +trim_trailing_whitespace = true +insert_final_newline = true + +[*.{json,yml}] +indent_size = 2 diff --git a/node_modules/postcss-discard-overridden/.npmignore b/node_modules/postcss-discard-overridden/.npmignore new file mode 100644 index 00000000..140f99bd --- /dev/null +++ b/node_modules/postcss-discard-overridden/.npmignore @@ -0,0 +1,7 @@ +.gitignore + +node_modules/ +npm-debug.log + +test.js +.travis.yml diff --git a/node_modules/postcss-discard-overridden/CHANGELOG.md b/node_modules/postcss-discard-overridden/CHANGELOG.md new file mode 100644 index 00000000..e69de29b --- /dev/null +++ b/node_modules/postcss-discard-overridden/CHANGELOG.md diff --git a/node_modules/postcss-discard-overridden/LICENSE b/node_modules/postcss-discard-overridden/LICENSE new file mode 100644 index 00000000..f901ded7 --- /dev/null +++ b/node_modules/postcss-discard-overridden/LICENSE @@ -0,0 +1,20 @@ +The MIT License (MIT) + +Copyright 2016 Justineo <justice360@gmail.com> + +Permission is hereby granted, free of charge, to any person obtaining a copy of +this software and associated documentation files (the "Software"), to deal in +the Software without restriction, including without limitation the rights to +use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of +the Software, and to permit persons to whom the Software is furnished to do so, +subject to the following conditions: + +The above copyright notice and this permission notice shall be included in all +copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS +FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR +COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER +IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN +CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. diff --git a/node_modules/postcss-discard-overridden/README.md b/node_modules/postcss-discard-overridden/README.md new file mode 100644 index 00000000..f9efd84d --- /dev/null +++ b/node_modules/postcss-discard-overridden/README.md @@ -0,0 +1,159 @@ +# PostCSS Discard Overridden [![Build Status][ci-img]][ci] + +[PostCSS] plugin to discard overridden `@keyframes` or `@counter-style`. + +`@keyframes` or `@counter-style` will be overridden by those who share the same identifiers and appear later in stylesheets. So we can discard all of them except the last one. When defined inside a `@media` or `@supports` rule, `@keyframes` and `@counter-style` rules only override global rules in some of the client browsers so they need handled separately. This plugin has taken care of this and transforms the PostCss AST **safely**. + +[PostCSS]: https://github.com/postcss/postcss +[ci-img]: https://travis-ci.org/Justineo/postcss-discard-overridden.svg +[ci]: https://travis-ci.org/Justineo/postcss-discard-overridden + +```css +@-webkit-keyframes fade-in { + 0% { + opacity: 0; + } + 100% { + opacity: 0.8; + } +} +@keyframes fade-in { + 0% { + opacity: 0; + } + 100% { + opacity: 0.8; + } +} +@media (max-width: 500px) { + @-webkit-keyframes fade-in { + 0% { + opacity: 0; + } + 100% { + opacity: 1; + } + } + @keyframes fade-in { + 0% { + opacity: 0; + } + 100% { + opacity: 1; + } + } + @-webkit-keyframes fade-in { + 0% { + opacity: 0; + } + 100% { + opacity: 0.8; + } + } + @keyframes fade-in { + 0% { + opacity: 0; + } + 100% { + opacity: 0.8; + } + } + @supports (display: flex) { + @-webkit-keyframes fade-in { + 0% { + opacity: 0; + } + 100% { + opacity: 1; + } + } + @keyframes fade-in { + 0% { + opacity: 0; + } + 100% { + opacity: 1; + } + } + } +} +@-webkit-keyframes fade-in { + 0% { + opacity: 0; + } + 100% { + opacity: 1; + } +} +@keyframes fade-in { + 0% { + opacity: 0; + } + 100% { + opacity: 1; + } +} +``` + +```css +@media (max-width: 500px) { + @-webkit-keyframes fade-in { + 0% { + opacity: 0; + } + 100% { + opacity: 0.8; + } + } + @keyframes fade-in { + 0% { + opacity: 0; + } + 100% { + opacity: 0.8; + } + } + @supports (display: flex) { + @-webkit-keyframes fade-in { + 0% { + opacity: 0; + } + 100% { + opacity: 1; + } + } + @keyframes fade-in { + 0% { + opacity: 0; + } + 100% { + opacity: 1; + } + } + } +} +@-webkit-keyframes fade-in { + 0% { + opacity: 0; + } + 100% { + opacity: 1; + } +} +@keyframes fade-in { + 0% { + opacity: 0; + } + 100% { + opacity: 1; + } +} +``` + +## Usage + +```js +postcss([ require('postcss-discard-overridden') ]) +``` + +See [PostCSS] docs for examples for your environment. diff --git a/node_modules/postcss-discard-overridden/dist/index.js b/node_modules/postcss-discard-overridden/dist/index.js new file mode 100644 index 00000000..dbb05f96 --- /dev/null +++ b/node_modules/postcss-discard-overridden/dist/index.js @@ -0,0 +1,57 @@ +'use strict'; + +Object.defineProperty(exports, "__esModule", { + value: true +}); + +var _postcss = require('postcss'); + +var _postcss2 = _interopRequireDefault(_postcss); + +function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } + +var OVERRIDABLE_RULES = ['keyframes', 'counter-style']; +var SCOPE_RULES = ['media', 'supports']; + +function isOverridable(name) { + return OVERRIDABLE_RULES.indexOf(_postcss2.default.vendor.unprefixed(name)) !== -1; +} + +function isScope(name) { + return SCOPE_RULES.indexOf(_postcss2.default.vendor.unprefixed(name)) !== -1; +} + +function getScope(node) { + var current = node.parent; + var chain = [node.name, node.params]; + do { + if (current.type === 'atrule' && isScope(current.name)) { + chain.unshift(current.name + ' ' + current.params); + } + current = current.parent; + } while (current); + return chain.join('|'); +} + +exports.default = _postcss2.default.plugin('postcss-discard-overridden', function () { + return function (css) { + var cache = {}; + var rules = []; + css.walkAtRules(function (rule) { + if (rule.type === 'atrule' && isOverridable(rule.name)) { + var scope = getScope(rule); + cache[scope] = rule; + rules.push({ + node: rule, + scope: scope + }); + } + }); + rules.forEach(function (rule) { + if (cache[rule.scope] !== rule.node) { + rule.node.remove(); + } + }); + }; +}); +module.exports = exports['default'];
\ No newline at end of file diff --git a/node_modules/postcss-discard-overridden/index.js b/node_modules/postcss-discard-overridden/index.js new file mode 100644 index 00000000..a370ebca --- /dev/null +++ b/node_modules/postcss-discard-overridden/index.js @@ -0,0 +1,46 @@ +import postcss from 'postcss'; + +const OVERRIDABLE_RULES = ['keyframes', 'counter-style']; +const SCOPE_RULES = ['media', 'supports']; + +function isOverridable(name) { + return OVERRIDABLE_RULES.indexOf(postcss.vendor.unprefixed(name)) !== -1; +} + +function isScope(name) { + return SCOPE_RULES.indexOf(postcss.vendor.unprefixed(name)) !== -1; +} + +function getScope(node) { + let current = node.parent; + let chain = [node.name, node.params]; + do { + if (current.type === 'atrule' && isScope(current.name)) { + chain.unshift(current.name + ' ' + current.params); + } + current = current.parent; + } while (current); + return chain.join('|'); +} + +export default postcss.plugin('postcss-discard-overridden', () => { + return css => { + let cache = {}; + let rules = []; + css.walkAtRules(rule => { + if (rule.type === 'atrule' && isOverridable(rule.name)) { + let scope = getScope(rule); + cache[scope] = rule; + rules.push({ + node: rule, + scope + }); + } + }); + rules.forEach(rule => { + if (cache[rule.scope] !== rule.node) { + rule.node.remove(); + } + }); + }; +}); diff --git a/node_modules/postcss-discard-overridden/package.json b/node_modules/postcss-discard-overridden/package.json new file mode 100644 index 00000000..88109969 --- /dev/null +++ b/node_modules/postcss-discard-overridden/package.json @@ -0,0 +1,44 @@ +{ + "name": "postcss-discard-overridden", + "version": "0.1.1", + "description": "PostCSS plugin to discard overridden @keyframes or @counter-style.", + "main": "dist/index.js", + "keywords": [ + "postcss", + "css", + "postcss-plugin", + "at-rules", + "@keyframes", + "@counter-style" + ], + "author": "Justineo <justice360@gmail.com>", + "license": "MIT", + "repository": "Justineo/postcss-discard-overridden", + "bugs": { + "url": "https://github.com/Justineo/postcss-discard-overridden/issues" + }, + "homepage": "https://github.com/Justineo/postcss-discard-overridden", + "dependencies": { + "postcss": "^5.0.16" + }, + "devDependencies": { + "ava": "^0.14.0", + "babel-cli": "^6.7.7", + "babel-plugin-add-module-exports": "^0.1.4", + "babel-preset-es2015": "^6.6.0", + "babel-register": "^6.7.2", + "eslint": "^2.1.0", + "eslint-config-postcss": "^2.0.0" + }, + "scripts": { + "test": "ava && eslint *.js" + }, + "eslintConfig": { + "extends": "eslint-config-postcss/es5" + }, + "ava": { + "require": [ + "babel-register" + ] + } +} diff --git a/node_modules/postcss-discard-overridden/test/input.css b/node_modules/postcss-discard-overridden/test/input.css new file mode 100644 index 00000000..83b6e4c3 --- /dev/null +++ b/node_modules/postcss-discard-overridden/test/input.css @@ -0,0 +1,84 @@ +@-webkit-keyframes fade-in { + 0% { + opacity: 0; + } + 100% { + opacity: 0.8; + } +} +@keyframes fade-in { + 0% { + opacity: 0; + } + 100% { + opacity: 0.8; + } +} +@media (max-width: 500px) { + @-webkit-keyframes fade-in { + 0% { + opacity: 0; + } + 100% { + opacity: 1; + } + } + @keyframes fade-in { + 0% { + opacity: 0; + } + 100% { + opacity: 1; + } + } + @-webkit-keyframes fade-in { + 0% { + opacity: 0; + } + 100% { + opacity: 0.8; + } + } + @keyframes fade-in { + 0% { + opacity: 0; + } + 100% { + opacity: 0.8; + } + } + @supports (display: flex) { + @-webkit-keyframes fade-in { + 0% { + opacity: 0; + } + 100% { + opacity: 1; + } + } + @keyframes fade-in { + 0% { + opacity: 0; + } + 100% { + opacity: 1; + } + } + } +} +@-webkit-keyframes fade-in { + 0% { + opacity: 0; + } + 100% { + opacity: 1; + } +} +@keyframes fade-in { + 0% { + opacity: 0; + } + 100% { + opacity: 1; + } +} diff --git a/node_modules/postcss-discard-overridden/test/output.css b/node_modules/postcss-discard-overridden/test/output.css new file mode 100644 index 00000000..b1a50094 --- /dev/null +++ b/node_modules/postcss-discard-overridden/test/output.css @@ -0,0 +1,52 @@ +@media (max-width: 500px) { + @-webkit-keyframes fade-in { + 0% { + opacity: 0; + } + 100% { + opacity: 0.8; + } + } + @keyframes fade-in { + 0% { + opacity: 0; + } + 100% { + opacity: 0.8; + } + } + @supports (display: flex) { + @-webkit-keyframes fade-in { + 0% { + opacity: 0; + } + 100% { + opacity: 1; + } + } + @keyframes fade-in { + 0% { + opacity: 0; + } + 100% { + opacity: 1; + } + } + } +} +@-webkit-keyframes fade-in { + 0% { + opacity: 0; + } + 100% { + opacity: 1; + } +} +@keyframes fade-in { + 0% { + opacity: 0; + } + 100% { + opacity: 1; + } +} |
