applyImportantSelector.js 840 B

12345678910111213141516171819202122
  1. "use strict";
  2. Object.defineProperty(exports, "__esModule", {
  3. value: true
  4. });
  5. Object.defineProperty(exports, "applyImportantSelector", {
  6. enumerable: true,
  7. get: ()=>applyImportantSelector
  8. });
  9. const _splitAtTopLevelOnly = require("./splitAtTopLevelOnly");
  10. function applyImportantSelector(selector, important) {
  11. let matches = /^(.*?)(:before|:after|::[\w-]+)(\)*)$/g.exec(selector);
  12. if (!matches) return `${important} ${wrapWithIs(selector)}`;
  13. let [, before, pseudo, brackets] = matches;
  14. return `${important} ${wrapWithIs(before + brackets)}${pseudo}`;
  15. }
  16. function wrapWithIs(selector) {
  17. let parts = (0, _splitAtTopLevelOnly.splitAtTopLevelOnly)(selector, " ");
  18. if (parts.length === 1 && parts[0].startsWith(":is(") && parts[0].endsWith(")")) {
  19. return selector;
  20. }
  21. return `:is(${selector})`;
  22. }