@unocss/core 0.22.0 → 0.22.4
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/index.cjs +22 -15
- package/dist/index.d.ts +5 -0
- package/dist/index.mjs +22 -15
- package/package.json +1 -1
package/dist/index.cjs
CHANGED
|
@@ -388,7 +388,7 @@ function resolveConfig(userConfig = {}, defaults = {}) {
|
|
|
388
388
|
};
|
|
389
389
|
}
|
|
390
390
|
|
|
391
|
-
const version = "0.22.
|
|
391
|
+
const version = "0.22.4";
|
|
392
392
|
|
|
393
393
|
class UnoGenerator {
|
|
394
394
|
constructor(userConfig = {}, defaults = {}) {
|
|
@@ -513,14 +513,14 @@ class UnoGenerator {
|
|
|
513
513
|
return layerCache[layer];
|
|
514
514
|
let css = Array.from(sheet).sort((a, b) => (this.parentOrders.get(a[0]) ?? 0) - (this.parentOrders.get(b[0]) ?? 0) || a[0]?.localeCompare(b[0] || "") || 0).map(([parent, items]) => {
|
|
515
515
|
const size = items.length;
|
|
516
|
-
const sorted = items.filter((i) => (i[4]?.layer || "default") === layer).sort((a, b) => a[0] - b[0] || a[1]?.localeCompare(b[1] || "") || 0).map((a) => [a[1] ? applyScope(a[1], scope) : a[1], a[2]]).map((a) => [a[0] == null ? a[0] : [a[0]], a[1]]);
|
|
516
|
+
const sorted = items.filter((i) => (i[4]?.layer || "default") === layer).sort((a, b) => a[0] - b[0] || a[1]?.localeCompare(b[1] || "") || 0).map((a) => [a[1] ? applyScope(a[1], scope) : a[1], a[2], !!a[4]?.noMerge]).map((a) => [a[0] == null ? a[0] : [a[0]], a[1], a[2]]);
|
|
517
517
|
if (!sorted.length)
|
|
518
518
|
return void 0;
|
|
519
|
-
const rules = sorted.reverse().map(([selector, body], idx) => {
|
|
520
|
-
if (selector && this.config.mergeSelectors) {
|
|
519
|
+
const rules = sorted.reverse().map(([selector, body, noMerge], idx) => {
|
|
520
|
+
if (!noMerge && selector && this.config.mergeSelectors) {
|
|
521
521
|
for (let i = idx + 1; i < size; i++) {
|
|
522
522
|
const current = sorted[i];
|
|
523
|
-
if (current && current[0] && current[1] === body) {
|
|
523
|
+
if (current && !current[2] && current[0] && current[1] === body) {
|
|
524
524
|
current[0].push(...selector);
|
|
525
525
|
return null;
|
|
526
526
|
}
|
|
@@ -690,18 +690,25 @@ class UnoGenerator {
|
|
|
690
690
|
continue;
|
|
691
691
|
const { selector, entries, parent: parent2 } = this.applyVariants(item, [...item[4], ...parentVariants], raw);
|
|
692
692
|
const mapItem = selectorMap.getFallback(selector, parent2, [[], item[0]]);
|
|
693
|
-
mapItem[0].push(entries);
|
|
693
|
+
mapItem[0].push([entries, !!item[3]?.noMerge]);
|
|
694
694
|
}
|
|
695
695
|
return selectorMap.map(([e2, index], selector, mediaQuery) => {
|
|
696
|
-
const
|
|
697
|
-
const rest = e2.filter((entries) => entries.every((entry) => entry[0] !== CONTROL_SHORTCUT_NO_MERGE));
|
|
698
|
-
return [...split, rest.flat(1)].map((entries) => {
|
|
696
|
+
const stringify = (noMerge) => (entries) => {
|
|
699
697
|
const body = entriesToCss(entries);
|
|
700
698
|
if (body)
|
|
701
|
-
return [index, selector, body, mediaQuery, meta];
|
|
699
|
+
return [index, selector, body, mediaQuery, { ...meta, noMerge }];
|
|
702
700
|
return void 0;
|
|
701
|
+
};
|
|
702
|
+
const merges = [
|
|
703
|
+
[e2.filter(([, noMerge]) => noMerge).map(([entries]) => entries), true],
|
|
704
|
+
[e2.filter(([, noMerge]) => !noMerge).map(([entries]) => entries), false]
|
|
705
|
+
];
|
|
706
|
+
return merges.map(([e3, noMerge]) => {
|
|
707
|
+
const splits = e3.filter((entries) => entries.some((entry) => entry[0] === CONTROL_SHORTCUT_NO_MERGE));
|
|
708
|
+
const rests = e3.filter((entries) => entries.every((entry) => entry[0] !== CONTROL_SHORTCUT_NO_MERGE));
|
|
709
|
+
return [...splits.map(stringify(noMerge)), ...[rests.flat(1)].map(stringify(noMerge))];
|
|
703
710
|
});
|
|
704
|
-
}).flat(
|
|
711
|
+
}).flat(2).filter(Boolean);
|
|
705
712
|
}
|
|
706
713
|
isBlocked(raw) {
|
|
707
714
|
return !raw || this.config.blocklist.some((e2) => typeof e2 === "string" ? e2 === raw : e2.test(raw));
|
|
@@ -718,11 +725,11 @@ function applyScope(css, scope) {
|
|
|
718
725
|
else
|
|
719
726
|
return scope ? `${scope} ${css}` : css;
|
|
720
727
|
}
|
|
728
|
+
const attributifyRe = /^\[(.+?)(~?=)"(.*)"\]$/;
|
|
721
729
|
function toEscapedSelector(raw) {
|
|
722
|
-
if (
|
|
723
|
-
return raw.replace(
|
|
724
|
-
|
|
725
|
-
return `.${e(raw)}`;
|
|
730
|
+
if (attributifyRe.test(raw))
|
|
731
|
+
return raw.replace(attributifyRe, (_, n, s, i) => `[${e(n)}${s}"${e(i)}"]`);
|
|
732
|
+
return `.${e(raw)}`;
|
|
726
733
|
}
|
|
727
734
|
|
|
728
735
|
exports.BetterMap = BetterMap;
|
package/dist/index.d.ts
CHANGED
|
@@ -123,6 +123,11 @@ interface RuleMeta {
|
|
|
123
123
|
* @default 'default'
|
|
124
124
|
*/
|
|
125
125
|
layer?: string;
|
|
126
|
+
/**
|
|
127
|
+
* Option to not merge this selector even if the body are the same.
|
|
128
|
+
* @default false
|
|
129
|
+
*/
|
|
130
|
+
noMerge?: boolean;
|
|
126
131
|
/**
|
|
127
132
|
* Internal rules will only be matched for shortcuts but not the user code.
|
|
128
133
|
* @default false
|
package/dist/index.mjs
CHANGED
|
@@ -384,7 +384,7 @@ function resolveConfig(userConfig = {}, defaults = {}) {
|
|
|
384
384
|
};
|
|
385
385
|
}
|
|
386
386
|
|
|
387
|
-
const version = "0.22.
|
|
387
|
+
const version = "0.22.4";
|
|
388
388
|
|
|
389
389
|
class UnoGenerator {
|
|
390
390
|
constructor(userConfig = {}, defaults = {}) {
|
|
@@ -509,14 +509,14 @@ class UnoGenerator {
|
|
|
509
509
|
return layerCache[layer];
|
|
510
510
|
let css = Array.from(sheet).sort((a, b) => (this.parentOrders.get(a[0]) ?? 0) - (this.parentOrders.get(b[0]) ?? 0) || a[0]?.localeCompare(b[0] || "") || 0).map(([parent, items]) => {
|
|
511
511
|
const size = items.length;
|
|
512
|
-
const sorted = items.filter((i) => (i[4]?.layer || "default") === layer).sort((a, b) => a[0] - b[0] || a[1]?.localeCompare(b[1] || "") || 0).map((a) => [a[1] ? applyScope(a[1], scope) : a[1], a[2]]).map((a) => [a[0] == null ? a[0] : [a[0]], a[1]]);
|
|
512
|
+
const sorted = items.filter((i) => (i[4]?.layer || "default") === layer).sort((a, b) => a[0] - b[0] || a[1]?.localeCompare(b[1] || "") || 0).map((a) => [a[1] ? applyScope(a[1], scope) : a[1], a[2], !!a[4]?.noMerge]).map((a) => [a[0] == null ? a[0] : [a[0]], a[1], a[2]]);
|
|
513
513
|
if (!sorted.length)
|
|
514
514
|
return void 0;
|
|
515
|
-
const rules = sorted.reverse().map(([selector, body], idx) => {
|
|
516
|
-
if (selector && this.config.mergeSelectors) {
|
|
515
|
+
const rules = sorted.reverse().map(([selector, body, noMerge], idx) => {
|
|
516
|
+
if (!noMerge && selector && this.config.mergeSelectors) {
|
|
517
517
|
for (let i = idx + 1; i < size; i++) {
|
|
518
518
|
const current = sorted[i];
|
|
519
|
-
if (current && current[0] && current[1] === body) {
|
|
519
|
+
if (current && !current[2] && current[0] && current[1] === body) {
|
|
520
520
|
current[0].push(...selector);
|
|
521
521
|
return null;
|
|
522
522
|
}
|
|
@@ -686,18 +686,25 @@ class UnoGenerator {
|
|
|
686
686
|
continue;
|
|
687
687
|
const { selector, entries, parent: parent2 } = this.applyVariants(item, [...item[4], ...parentVariants], raw);
|
|
688
688
|
const mapItem = selectorMap.getFallback(selector, parent2, [[], item[0]]);
|
|
689
|
-
mapItem[0].push(entries);
|
|
689
|
+
mapItem[0].push([entries, !!item[3]?.noMerge]);
|
|
690
690
|
}
|
|
691
691
|
return selectorMap.map(([e2, index], selector, mediaQuery) => {
|
|
692
|
-
const
|
|
693
|
-
const rest = e2.filter((entries) => entries.every((entry) => entry[0] !== CONTROL_SHORTCUT_NO_MERGE));
|
|
694
|
-
return [...split, rest.flat(1)].map((entries) => {
|
|
692
|
+
const stringify = (noMerge) => (entries) => {
|
|
695
693
|
const body = entriesToCss(entries);
|
|
696
694
|
if (body)
|
|
697
|
-
return [index, selector, body, mediaQuery, meta];
|
|
695
|
+
return [index, selector, body, mediaQuery, { ...meta, noMerge }];
|
|
698
696
|
return void 0;
|
|
697
|
+
};
|
|
698
|
+
const merges = [
|
|
699
|
+
[e2.filter(([, noMerge]) => noMerge).map(([entries]) => entries), true],
|
|
700
|
+
[e2.filter(([, noMerge]) => !noMerge).map(([entries]) => entries), false]
|
|
701
|
+
];
|
|
702
|
+
return merges.map(([e3, noMerge]) => {
|
|
703
|
+
const splits = e3.filter((entries) => entries.some((entry) => entry[0] === CONTROL_SHORTCUT_NO_MERGE));
|
|
704
|
+
const rests = e3.filter((entries) => entries.every((entry) => entry[0] !== CONTROL_SHORTCUT_NO_MERGE));
|
|
705
|
+
return [...splits.map(stringify(noMerge)), ...[rests.flat(1)].map(stringify(noMerge))];
|
|
699
706
|
});
|
|
700
|
-
}).flat(
|
|
707
|
+
}).flat(2).filter(Boolean);
|
|
701
708
|
}
|
|
702
709
|
isBlocked(raw) {
|
|
703
710
|
return !raw || this.config.blocklist.some((e2) => typeof e2 === "string" ? e2 === raw : e2.test(raw));
|
|
@@ -714,11 +721,11 @@ function applyScope(css, scope) {
|
|
|
714
721
|
else
|
|
715
722
|
return scope ? `${scope} ${css}` : css;
|
|
716
723
|
}
|
|
724
|
+
const attributifyRe = /^\[(.+?)(~?=)"(.*)"\]$/;
|
|
717
725
|
function toEscapedSelector(raw) {
|
|
718
|
-
if (
|
|
719
|
-
return raw.replace(
|
|
720
|
-
|
|
721
|
-
return `.${e(raw)}`;
|
|
726
|
+
if (attributifyRe.test(raw))
|
|
727
|
+
return raw.replace(attributifyRe, (_, n, s, i) => `[${e(n)}${s}"${e(i)}"]`);
|
|
728
|
+
return `.${e(raw)}`;
|
|
722
729
|
}
|
|
723
730
|
|
|
724
731
|
export { BetterMap, CONTROL_SHORTCUT_NO_MERGE, TwoKeyMap, UnoGenerator, attributifyRE, clearIdenticalEntries, clone, createGenerator, createValueHandler, e, entriesToCss, escapeRegExp, escapeSelector, expandVariantGroup, extractorSplit, extractorSvelte, hasScopePlaceholder, hex2rgba, isAttributifySelector, isObject, isRawUtil, isStaticRule, isStaticShortcut, isValidSelector, mergeDeep, mergeSet, normalizeCSSEntries, normalizeCSSValues, normalizeVariant, notNull, regexClassGroup, toArray, uniq, validateFilterRE, warnOnce, withLayer };
|