Нет описания

applyImportantSelector.js 1.2KB

12345678910111213141516171819202122232425262728293031323334353637
  1. "use strict";
  2. Object.defineProperty(exports, "__esModule", {
  3. value: true
  4. });
  5. Object.defineProperty(exports, "applyImportantSelector", {
  6. enumerable: true,
  7. get: function() {
  8. return applyImportantSelector;
  9. }
  10. });
  11. const _postcssselectorparser = /*#__PURE__*/ _interop_require_default(require("postcss-selector-parser"));
  12. const _pseudoElements = require("./pseudoElements");
  13. function _interop_require_default(obj) {
  14. return obj && obj.__esModule ? obj : {
  15. default: obj
  16. };
  17. }
  18. function applyImportantSelector(selector, important) {
  19. let sel = (0, _postcssselectorparser.default)().astSync(selector);
  20. sel.each((sel)=>{
  21. // Wrap with :is if it's not already wrapped
  22. let isWrapped = sel.nodes[0].type === "pseudo" && sel.nodes[0].value === ":is" && sel.nodes.every((node)=>node.type !== "combinator");
  23. if (!isWrapped) {
  24. sel.nodes = [
  25. _postcssselectorparser.default.pseudo({
  26. value: ":is",
  27. nodes: [
  28. sel.clone()
  29. ]
  30. })
  31. ];
  32. }
  33. (0, _pseudoElements.movePseudos)(sel);
  34. });
  35. return `${important} ${sel.toString()}`;
  36. }