@unocss/core 0.24.1 → 0.25.0

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 CHANGED
@@ -366,7 +366,7 @@ function resolveConfig(userConfig = {}, defaults = {}) {
366
366
  };
367
367
  }
368
368
 
369
- const version = "0.24.1";
369
+ const version = "0.25.0";
370
370
 
371
371
  class UnoGenerator {
372
372
  constructor(userConfig = {}, defaults = {}) {
@@ -680,26 +680,29 @@ class UnoGenerator {
680
680
  for (const item of parsed) {
681
681
  if (isRawUtil(item))
682
682
  continue;
683
- const { selector, entries, parent: parent2 } = this.applyVariants(item, [...item[4], ...parentVariants], raw);
683
+ const { selector, entries, parent: parent2, sort } = this.applyVariants(item, [...item[4], ...parentVariants], raw);
684
684
  const mapItem = selectorMap.getFallback(selector, parent2, [[], item[0]]);
685
- mapItem[0].push([entries, !!item[3]?.noMerge]);
685
+ mapItem[0].push([entries, !!item[3]?.noMerge, sort ?? 0]);
686
686
  }
687
687
  return selectorMap.map(([e2, index], selector, mediaQuery) => {
688
- const stringify = (noMerge) => (entries) => {
689
- const body = entriesToCss(entries);
690
- if (body)
691
- return [index, selector, body, mediaQuery, { ...meta, noMerge }];
692
- return void 0;
688
+ const stringify = (flatten, noMerge, entrySortPair) => {
689
+ const maxSort = Math.max(...entrySortPair.map((e3) => e3[1]));
690
+ const entriesList = entrySortPair.map((e3) => e3[0]);
691
+ return (flatten ? [entriesList.flat(1)] : entriesList).map((entries) => {
692
+ const body = entriesToCss(entries);
693
+ if (body)
694
+ return [index, selector, body, mediaQuery, { ...meta, noMerge, sort: maxSort }];
695
+ return void 0;
696
+ });
693
697
  };
694
698
  const merges = [
695
- [e2.filter(([, noMerge]) => noMerge).map(([entries]) => entries), true],
696
- [e2.filter(([, noMerge]) => !noMerge).map(([entries]) => entries), false]
699
+ [e2.filter(([, noMerge]) => noMerge).map(([entries, , sort]) => [entries, sort]), true],
700
+ [e2.filter(([, noMerge]) => !noMerge).map(([entries, , sort]) => [entries, sort]), false]
697
701
  ];
698
- return merges.map(([e3, noMerge]) => {
699
- const splits = e3.filter((entries) => entries.some((entry) => entry[0] === CONTROL_SHORTCUT_NO_MERGE));
700
- const rests = e3.filter((entries) => entries.every((entry) => entry[0] !== CONTROL_SHORTCUT_NO_MERGE));
701
- return [...splits.map(stringify(noMerge)), ...[rests.flat(1)].map(stringify(noMerge))];
702
- });
702
+ return merges.map(([e3, noMerge]) => [
703
+ ...stringify(false, noMerge, e3.filter(([entries]) => entries.some((entry) => entry[0] === CONTROL_SHORTCUT_NO_MERGE))),
704
+ ...stringify(true, noMerge, e3.filter(([entries]) => entries.every((entry) => entry[0] !== CONTROL_SHORTCUT_NO_MERGE)))
705
+ ]);
703
706
  }).flat(2).filter(Boolean);
704
707
  }
705
708
  isBlocked(raw) {
package/dist/index.mjs CHANGED
@@ -362,7 +362,7 @@ function resolveConfig(userConfig = {}, defaults = {}) {
362
362
  };
363
363
  }
364
364
 
365
- const version = "0.24.1";
365
+ const version = "0.25.0";
366
366
 
367
367
  class UnoGenerator {
368
368
  constructor(userConfig = {}, defaults = {}) {
@@ -676,26 +676,29 @@ class UnoGenerator {
676
676
  for (const item of parsed) {
677
677
  if (isRawUtil(item))
678
678
  continue;
679
- const { selector, entries, parent: parent2 } = this.applyVariants(item, [...item[4], ...parentVariants], raw);
679
+ const { selector, entries, parent: parent2, sort } = this.applyVariants(item, [...item[4], ...parentVariants], raw);
680
680
  const mapItem = selectorMap.getFallback(selector, parent2, [[], item[0]]);
681
- mapItem[0].push([entries, !!item[3]?.noMerge]);
681
+ mapItem[0].push([entries, !!item[3]?.noMerge, sort ?? 0]);
682
682
  }
683
683
  return selectorMap.map(([e2, index], selector, mediaQuery) => {
684
- const stringify = (noMerge) => (entries) => {
685
- const body = entriesToCss(entries);
686
- if (body)
687
- return [index, selector, body, mediaQuery, { ...meta, noMerge }];
688
- return void 0;
684
+ const stringify = (flatten, noMerge, entrySortPair) => {
685
+ const maxSort = Math.max(...entrySortPair.map((e3) => e3[1]));
686
+ const entriesList = entrySortPair.map((e3) => e3[0]);
687
+ return (flatten ? [entriesList.flat(1)] : entriesList).map((entries) => {
688
+ const body = entriesToCss(entries);
689
+ if (body)
690
+ return [index, selector, body, mediaQuery, { ...meta, noMerge, sort: maxSort }];
691
+ return void 0;
692
+ });
689
693
  };
690
694
  const merges = [
691
- [e2.filter(([, noMerge]) => noMerge).map(([entries]) => entries), true],
692
- [e2.filter(([, noMerge]) => !noMerge).map(([entries]) => entries), false]
695
+ [e2.filter(([, noMerge]) => noMerge).map(([entries, , sort]) => [entries, sort]), true],
696
+ [e2.filter(([, noMerge]) => !noMerge).map(([entries, , sort]) => [entries, sort]), false]
693
697
  ];
694
- return merges.map(([e3, noMerge]) => {
695
- const splits = e3.filter((entries) => entries.some((entry) => entry[0] === CONTROL_SHORTCUT_NO_MERGE));
696
- const rests = e3.filter((entries) => entries.every((entry) => entry[0] !== CONTROL_SHORTCUT_NO_MERGE));
697
- return [...splits.map(stringify(noMerge)), ...[rests.flat(1)].map(stringify(noMerge))];
698
- });
698
+ return merges.map(([e3, noMerge]) => [
699
+ ...stringify(false, noMerge, e3.filter(([entries]) => entries.some((entry) => entry[0] === CONTROL_SHORTCUT_NO_MERGE))),
700
+ ...stringify(true, noMerge, e3.filter(([entries]) => entries.every((entry) => entry[0] !== CONTROL_SHORTCUT_NO_MERGE)))
701
+ ]);
699
702
  }).flat(2).filter(Boolean);
700
703
  }
701
704
  isBlocked(raw) {
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@unocss/core",
3
- "version": "0.24.1",
3
+ "version": "0.25.0",
4
4
  "description": "The instant on-demand Atomic CSS engine.",
5
5
  "keywords": [
6
6
  "unocss",