summaryrefslogtreecommitdiff
path: root/node_modules/stylehacks/src/plugins/bodyEmpty.js
diff options
context:
space:
mode:
authorlittleblack111 <littleblack11111@gmail.com>2023-10-14 15:05:55 +0800
committerlittleblack111 <littleblack11111@gmail.com>2023-10-14 15:05:55 +0800
commitc06f7ee0a40255214c477e13d9b956a7e07c2900 (patch)
treef5982a568ef8fab865d0142e71c7494fea3e4c1b /node_modules/stylehacks/src/plugins/bodyEmpty.js
parent3fd9400d4dccc25aa29b5702216732e0b7542073 (diff)
postcss,(plugins): nanocss, postcss-preset-env
Diffstat (limited to 'node_modules/stylehacks/src/plugins/bodyEmpty.js')
-rw-r--r--node_modules/stylehacks/src/plugins/bodyEmpty.js49
1 files changed, 49 insertions, 0 deletions
diff --git a/node_modules/stylehacks/src/plugins/bodyEmpty.js b/node_modules/stylehacks/src/plugins/bodyEmpty.js
new file mode 100644
index 00000000..edb40406
--- /dev/null
+++ b/node_modules/stylehacks/src/plugins/bodyEmpty.js
@@ -0,0 +1,49 @@
+'use strict';
+const parser = require('postcss-selector-parser');
+const exists = require('../exists');
+const isMixin = require('../isMixin');
+const BasePlugin = require('../plugin');
+const { FF_2 } = require('../dictionary/browsers');
+const { SELECTOR } = require('../dictionary/identifiers');
+const { RULE } = require('../dictionary/postcss');
+const { BODY } = require('../dictionary/tags');
+
+module.exports = class BodyEmpty extends BasePlugin {
+ /** @param {import('postcss').Result} result */
+ constructor(result) {
+ super([FF_2], [RULE], result);
+ }
+
+ /**
+ * @param {import('postcss').Rule} rule
+ * @return {void}
+ */
+ detect(rule) {
+ if (isMixin(rule)) {
+ return;
+ }
+ parser(this.analyse(rule)).processSync(rule.selector);
+ }
+
+ /**
+ * @param {import('postcss').Rule} rule
+ * @return {parser.SyncProcessor<void>}
+ */
+ analyse(rule) {
+ return (selectors) => {
+ selectors.each((selector) => {
+ if (
+ exists(selector, 0, BODY) &&
+ exists(selector, 1, ':empty') &&
+ exists(selector, 2, ' ') &&
+ selector.at(3)
+ ) {
+ this.push(rule, {
+ identifier: SELECTOR,
+ hack: selector.toString(),
+ });
+ }
+ });
+ };
+ }
+};