@unocss/core 0.45.13 → 0.45.14

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
@@ -45,10 +45,6 @@ function toArray(value = []) {
45
45
  function uniq(value) {
46
46
  return Array.from(new Set(value));
47
47
  }
48
- function mergeSet(target, append) {
49
- append.forEach((i) => target.add(i));
50
- return target;
51
- }
52
48
  function isString(s) {
53
49
  return typeof s === "string";
54
50
  }
@@ -138,7 +134,7 @@ function isStaticShortcut(sc) {
138
134
 
139
135
  const attributifyRE = /^\[(.+?)~?="(.*)"\]$/;
140
136
  const cssIdRE = /\.(css|postcss|sass|scss|less|stylus|styl)$/;
141
- const validateFilterRE = /(?!\d|-{2}|-\d)[a-zA-Z0-9\u00A0-\uFFFF-_:%-?]/;
137
+ const validateFilterRE = /[\w\u00A0-\uFFFF-_:%-?]/;
142
138
  const CONTROL_SHORTCUT_NO_MERGE = "$$shortcut-no-merge";
143
139
  function isAttributifySelector(selector) {
144
140
  return selector.match(attributifyRE);
@@ -325,7 +321,7 @@ function createNanoEvents() {
325
321
  const LAYER_DEFAULT = "default";
326
322
  const LAYER_PREFLIGHTS = "preflights";
327
323
  const LAYER_SHORTCUTS = "shortcuts";
328
- const DEAFULT_LAYERS = {
324
+ const DEFAULT_LAYERS = {
329
325
  [LAYER_PREFLIGHTS]: -100,
330
326
  [LAYER_SHORTCUTS]: -10,
331
327
  [LAYER_DEFAULT]: 0
@@ -364,7 +360,7 @@ function resolveConfig(userConfig = {}, defaults = {}) {
364
360
  ...rawPresets.filter((p) => !p.enforce),
365
361
  ...rawPresets.filter((p) => p.enforce === "post")
366
362
  ];
367
- const layers = Object.assign(DEAFULT_LAYERS, ...rawPresets.map((i) => i.layers), userConfig.layers);
363
+ const layers = Object.assign(DEFAULT_LAYERS, ...rawPresets.map((i) => i.layers), userConfig.layers);
368
364
  function mergePresets(key) {
369
365
  return uniq([
370
366
  ...sortedPresets.flatMap((p) => toArray(p[key] || [])),
@@ -419,7 +415,7 @@ function resolveConfig(userConfig = {}, defaults = {}) {
419
415
  };
420
416
  }
421
417
 
422
- const version = "0.45.13";
418
+ const version = "0.45.14";
423
419
 
424
420
  class UnoGenerator {
425
421
  constructor(userConfig = {}, defaults = {}) {
@@ -583,12 +579,12 @@ class UnoGenerator {
583
579
  return layerCache[layer];
584
580
  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]) => {
585
581
  const size = items.length;
586
- const sorted = items.filter((i) => (i[4]?.layer || LAYER_DEFAULT) === layer).sort((a, b) => a[0] - b[0] || (a[4]?.sort || 0) - (b[4]?.sort || 0) || a[1]?.localeCompare(b[1] || "") || a[2]?.localeCompare(b[2] || "") || 0).map(([, selector, body, , meta]) => {
582
+ const sorted = items.filter((i) => (i[4]?.layer || LAYER_DEFAULT) === layer).sort((a, b) => a[0] - b[0] || (a[4]?.sort || 0) - (b[4]?.sort || 0) || a[1]?.localeCompare(b[1] || "") || a[2]?.localeCompare(b[2] || "") || 0).map(([, selector, body, , meta, , variantNoMerge]) => {
587
583
  const scopedSelector = selector ? applyScope(selector, scope) : selector;
588
584
  return [
589
585
  [[scopedSelector ?? "", meta?.sort ?? 0]],
590
586
  body,
591
- !!meta?.noMerge
587
+ !!(variantNoMerge ?? meta?.noMerge)
592
588
  ];
593
589
  });
594
590
  if (!sorted.length)
@@ -701,7 +697,8 @@ class UnoGenerator {
701
697
  entries: variantContextResult.entries,
702
698
  parent,
703
699
  layer: variantContextResult.layer,
704
- sort: variantContextResult.sort
700
+ sort: variantContextResult.sort,
701
+ noMerge: variantContextResult.noMerge
705
702
  };
706
703
  for (const p of this.config.postprocess)
707
704
  p(obj);
@@ -770,8 +767,8 @@ class UnoGenerator {
770
767
  if (!parsed)
771
768
  return;
772
769
  if (isRawUtil(parsed))
773
- return [parsed[0], void 0, parsed[1], void 0, parsed[2], this.config.details ? context : void 0];
774
- const { selector, entries, parent, layer: variantLayer, sort: variantSort } = this.applyVariants(parsed);
770
+ return [parsed[0], void 0, parsed[1], void 0, parsed[2], this.config.details ? context : void 0, void 0];
771
+ const { selector, entries, parent, layer: variantLayer, sort: variantSort, noMerge } = this.applyVariants(parsed);
775
772
  const body = entriesToCss(entries);
776
773
  if (!body)
777
774
  return;
@@ -781,7 +778,7 @@ class UnoGenerator {
781
778
  layer: variantLayer ?? metaLayer,
782
779
  sort: variantSort ?? metaSort
783
780
  };
784
- return [parsed[0], selector, body, parent, ruleMeta, this.config.details ? context : void 0];
781
+ return [parsed[0], selector, body, parent, ruleMeta, this.config.details ? context : void 0, noMerge];
785
782
  }
786
783
  expandShortcut(input, context, depth = 5) {
787
784
  if (depth === 0)
@@ -841,12 +838,12 @@ class UnoGenerator {
841
838
  const rawStringfieldUtil = [];
842
839
  for (const item of parsed) {
843
840
  if (isRawUtil(item)) {
844
- rawStringfieldUtil.push([item[0], void 0, item[1], void 0, item[2], context]);
841
+ rawStringfieldUtil.push([item[0], void 0, item[1], void 0, item[2], context, void 0]);
845
842
  continue;
846
843
  }
847
- const { selector, entries, parent: parent2, sort } = this.applyVariants(item, [...item[4], ...parentVariants], raw);
844
+ const { selector, entries, parent: parent2, sort, noMerge } = this.applyVariants(item, [...item[4], ...parentVariants], raw);
848
845
  const mapItem = selectorMap.getFallback(selector, parent2, [[], item[0]]);
849
- mapItem[0].push([entries, !!item[3]?.noMerge, sort ?? 0]);
846
+ mapItem[0].push([entries, !!(noMerge ?? item[3]?.noMerge), sort ?? 0]);
850
847
  }
851
848
  return rawStringfieldUtil.concat(selectorMap.map(([e2, index], selector, joinedParents) => {
852
849
  const stringify = (flatten, noMerge, entrySortPair) => {
@@ -855,7 +852,7 @@ class UnoGenerator {
855
852
  return (flatten ? [entriesList.flat(1)] : entriesList).map((entries) => {
856
853
  const body = entriesToCss(entries);
857
854
  if (body)
858
- return [index, selector, body, joinedParents, { ...meta, noMerge, sort: maxSort }, context];
855
+ return [index, selector, body, joinedParents, { ...meta, noMerge, sort: maxSort }, context, void 0];
859
856
  return void 0;
860
857
  });
861
858
  };
@@ -928,7 +925,6 @@ exports.isStaticShortcut = isStaticShortcut;
928
925
  exports.isString = isString;
929
926
  exports.isValidSelector = isValidSelector;
930
927
  exports.mergeDeep = mergeDeep;
931
- exports.mergeSet = mergeSet;
932
928
  exports.movePseudoElementsEnd = movePseudoElementsEnd;
933
929
  exports.noop = noop;
934
930
  exports.normalizeCSSEntries = normalizeCSSEntries;
package/dist/index.d.ts CHANGED
@@ -102,7 +102,6 @@ declare function isStaticShortcut(sc: Shortcut): sc is StaticShortcut;
102
102
 
103
103
  declare function toArray<T>(value?: T | T[]): T[];
104
104
  declare function uniq<T>(value: T[]): T[];
105
- declare function mergeSet<T>(target: Set<T>, append: Set<T>): Set<T>;
106
105
  declare function isString(s: any): s is string;
107
106
 
108
107
  declare const attributifyRE: RegExp;
@@ -356,6 +355,11 @@ interface VariantHandlerContext {
356
355
  * Order in which the variant is sorted within single rule.
357
356
  */
358
357
  sort?: number;
358
+ /**
359
+ * Option to not merge the resulting entries even if the body are the same.
360
+ * @default false
361
+ */
362
+ noMerge?: boolean;
359
363
  }
360
364
  interface VariantHandler {
361
365
  /**
@@ -725,7 +729,8 @@ declare type StringifiedUtil = readonly [
725
729
  body: string,
726
730
  parent: string | undefined,
727
731
  meta: RuleMeta | undefined,
728
- context: RuleContext | undefined
732
+ context: RuleContext | undefined,
733
+ noMerge: boolean | undefined
729
734
  ];
730
735
  declare type PreparedRule = readonly [
731
736
  selector: [string, number][],
@@ -738,6 +743,7 @@ interface UtilObject {
738
743
  parent: string | undefined;
739
744
  layer: string | undefined;
740
745
  sort: number | undefined;
746
+ noMerge: boolean | undefined;
741
747
  }
742
748
  interface GenerateOptions {
743
749
  /**
@@ -769,4 +775,4 @@ declare const extractorSplit: Extractor;
769
775
 
770
776
  declare const extractorSvelte: Extractor;
771
777
 
772
- export { ArgumentType, Arrayable, AutoCompleteExtractor, AutoCompleteExtractorContext, AutoCompleteExtractorResult, AutoCompleteFunction, AutoCompleteTemplate, Awaitable, BetterMap, BlocklistRule, CONTROL_SHORTCUT_NO_MERGE, CSSColorValue, CSSEntries, CSSObject, CSSValue, CSSValues, ConfigBase, DeepPartial, DynamicMatcher, DynamicRule, DynamicShortcut, DynamicShortcutMatcher, Extractor, ExtractorContext, FilterPattern, FlatObjectTuple, GenerateOptions, GenerateResult, GeneratorOptions, ParsedColorValue, ParsedUtil, PartialByKeys, PluginOptions, Postprocessor, Preflight, PreflightContext, PreparedRule, Preprocessor, Preset, PresetOptions, RGBAColorValue, RawUtil, Replacement, RequiredByKey, ResolvedConfig, RestArgs, Rule, RuleContext, RuleMeta, Shift, Shortcut, ShortcutValue, SourceCodeTransformer, SourceCodeTransformerEnforce, SourceMap, StaticRule, StaticShortcut, StaticShortcutMap, StringifiedUtil, SuggestResult, ThemeExtender, TransformResult, TwoKeyMap, UnoGenerator, UnocssPluginContext, UserConfig, UserConfigDefaults, UserOnlyOptions, UserShortcuts, UtilObject, ValueHandler, ValueHandlerCallback, Variant, VariantContext, VariantFunction, VariantHandler, VariantHandlerContext, VariantMatchedResult, VariantObject, attributifyRE, clearIdenticalEntries, clone, createGenerator, createValueHandler, cssIdRE, e, entriesToCss, escapeRegExp, escapeSelector, expandVariantGroup, extractorSplit, extractorSvelte, hasScopePlaceholder, isAttributifySelector, isObject, isRawUtil, isStaticRule, isStaticShortcut, isString, isValidSelector, mergeDeep, mergeSet, movePseudoElementsEnd, noop, normalizeCSSEntries, normalizeCSSValues, normalizeVariant, notNull, regexClassGroup, regexScopePlaceholder, toArray, toEscapedSelector, uniq, validateFilterRE, warnOnce, withLayer };
778
+ export { ArgumentType, Arrayable, AutoCompleteExtractor, AutoCompleteExtractorContext, AutoCompleteExtractorResult, AutoCompleteFunction, AutoCompleteTemplate, Awaitable, BetterMap, BlocklistRule, CONTROL_SHORTCUT_NO_MERGE, CSSColorValue, CSSEntries, CSSObject, CSSValue, CSSValues, ConfigBase, DeepPartial, DynamicMatcher, DynamicRule, DynamicShortcut, DynamicShortcutMatcher, Extractor, ExtractorContext, FilterPattern, FlatObjectTuple, GenerateOptions, GenerateResult, GeneratorOptions, ParsedColorValue, ParsedUtil, PartialByKeys, PluginOptions, Postprocessor, Preflight, PreflightContext, PreparedRule, Preprocessor, Preset, PresetOptions, RGBAColorValue, RawUtil, Replacement, RequiredByKey, ResolvedConfig, RestArgs, Rule, RuleContext, RuleMeta, Shift, Shortcut, ShortcutValue, SourceCodeTransformer, SourceCodeTransformerEnforce, SourceMap, StaticRule, StaticShortcut, StaticShortcutMap, StringifiedUtil, SuggestResult, ThemeExtender, TransformResult, TwoKeyMap, UnoGenerator, UnocssPluginContext, UserConfig, UserConfigDefaults, UserOnlyOptions, UserShortcuts, UtilObject, ValueHandler, ValueHandlerCallback, Variant, VariantContext, VariantFunction, VariantHandler, VariantHandlerContext, VariantMatchedResult, VariantObject, attributifyRE, clearIdenticalEntries, clone, createGenerator, createValueHandler, cssIdRE, e, entriesToCss, escapeRegExp, escapeSelector, expandVariantGroup, extractorSplit, extractorSvelte, hasScopePlaceholder, isAttributifySelector, isObject, isRawUtil, isStaticRule, isStaticShortcut, isString, isValidSelector, mergeDeep, movePseudoElementsEnd, noop, normalizeCSSEntries, normalizeCSSValues, normalizeVariant, notNull, regexClassGroup, regexScopePlaceholder, toArray, toEscapedSelector, uniq, validateFilterRE, warnOnce, withLayer };
package/dist/index.mjs CHANGED
@@ -41,10 +41,6 @@ function toArray(value = []) {
41
41
  function uniq(value) {
42
42
  return Array.from(new Set(value));
43
43
  }
44
- function mergeSet(target, append) {
45
- append.forEach((i) => target.add(i));
46
- return target;
47
- }
48
44
  function isString(s) {
49
45
  return typeof s === "string";
50
46
  }
@@ -134,7 +130,7 @@ function isStaticShortcut(sc) {
134
130
 
135
131
  const attributifyRE = /^\[(.+?)~?="(.*)"\]$/;
136
132
  const cssIdRE = /\.(css|postcss|sass|scss|less|stylus|styl)$/;
137
- const validateFilterRE = /(?!\d|-{2}|-\d)[a-zA-Z0-9\u00A0-\uFFFF-_:%-?]/;
133
+ const validateFilterRE = /[\w\u00A0-\uFFFF-_:%-?]/;
138
134
  const CONTROL_SHORTCUT_NO_MERGE = "$$shortcut-no-merge";
139
135
  function isAttributifySelector(selector) {
140
136
  return selector.match(attributifyRE);
@@ -321,7 +317,7 @@ function createNanoEvents() {
321
317
  const LAYER_DEFAULT = "default";
322
318
  const LAYER_PREFLIGHTS = "preflights";
323
319
  const LAYER_SHORTCUTS = "shortcuts";
324
- const DEAFULT_LAYERS = {
320
+ const DEFAULT_LAYERS = {
325
321
  [LAYER_PREFLIGHTS]: -100,
326
322
  [LAYER_SHORTCUTS]: -10,
327
323
  [LAYER_DEFAULT]: 0
@@ -360,7 +356,7 @@ function resolveConfig(userConfig = {}, defaults = {}) {
360
356
  ...rawPresets.filter((p) => !p.enforce),
361
357
  ...rawPresets.filter((p) => p.enforce === "post")
362
358
  ];
363
- const layers = Object.assign(DEAFULT_LAYERS, ...rawPresets.map((i) => i.layers), userConfig.layers);
359
+ const layers = Object.assign(DEFAULT_LAYERS, ...rawPresets.map((i) => i.layers), userConfig.layers);
364
360
  function mergePresets(key) {
365
361
  return uniq([
366
362
  ...sortedPresets.flatMap((p) => toArray(p[key] || [])),
@@ -415,7 +411,7 @@ function resolveConfig(userConfig = {}, defaults = {}) {
415
411
  };
416
412
  }
417
413
 
418
- const version = "0.45.13";
414
+ const version = "0.45.14";
419
415
 
420
416
  class UnoGenerator {
421
417
  constructor(userConfig = {}, defaults = {}) {
@@ -579,12 +575,12 @@ class UnoGenerator {
579
575
  return layerCache[layer];
580
576
  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]) => {
581
577
  const size = items.length;
582
- const sorted = items.filter((i) => (i[4]?.layer || LAYER_DEFAULT) === layer).sort((a, b) => a[0] - b[0] || (a[4]?.sort || 0) - (b[4]?.sort || 0) || a[1]?.localeCompare(b[1] || "") || a[2]?.localeCompare(b[2] || "") || 0).map(([, selector, body, , meta]) => {
578
+ const sorted = items.filter((i) => (i[4]?.layer || LAYER_DEFAULT) === layer).sort((a, b) => a[0] - b[0] || (a[4]?.sort || 0) - (b[4]?.sort || 0) || a[1]?.localeCompare(b[1] || "") || a[2]?.localeCompare(b[2] || "") || 0).map(([, selector, body, , meta, , variantNoMerge]) => {
583
579
  const scopedSelector = selector ? applyScope(selector, scope) : selector;
584
580
  return [
585
581
  [[scopedSelector ?? "", meta?.sort ?? 0]],
586
582
  body,
587
- !!meta?.noMerge
583
+ !!(variantNoMerge ?? meta?.noMerge)
588
584
  ];
589
585
  });
590
586
  if (!sorted.length)
@@ -697,7 +693,8 @@ class UnoGenerator {
697
693
  entries: variantContextResult.entries,
698
694
  parent,
699
695
  layer: variantContextResult.layer,
700
- sort: variantContextResult.sort
696
+ sort: variantContextResult.sort,
697
+ noMerge: variantContextResult.noMerge
701
698
  };
702
699
  for (const p of this.config.postprocess)
703
700
  p(obj);
@@ -766,8 +763,8 @@ class UnoGenerator {
766
763
  if (!parsed)
767
764
  return;
768
765
  if (isRawUtil(parsed))
769
- return [parsed[0], void 0, parsed[1], void 0, parsed[2], this.config.details ? context : void 0];
770
- const { selector, entries, parent, layer: variantLayer, sort: variantSort } = this.applyVariants(parsed);
766
+ return [parsed[0], void 0, parsed[1], void 0, parsed[2], this.config.details ? context : void 0, void 0];
767
+ const { selector, entries, parent, layer: variantLayer, sort: variantSort, noMerge } = this.applyVariants(parsed);
771
768
  const body = entriesToCss(entries);
772
769
  if (!body)
773
770
  return;
@@ -777,7 +774,7 @@ class UnoGenerator {
777
774
  layer: variantLayer ?? metaLayer,
778
775
  sort: variantSort ?? metaSort
779
776
  };
780
- return [parsed[0], selector, body, parent, ruleMeta, this.config.details ? context : void 0];
777
+ return [parsed[0], selector, body, parent, ruleMeta, this.config.details ? context : void 0, noMerge];
781
778
  }
782
779
  expandShortcut(input, context, depth = 5) {
783
780
  if (depth === 0)
@@ -837,12 +834,12 @@ class UnoGenerator {
837
834
  const rawStringfieldUtil = [];
838
835
  for (const item of parsed) {
839
836
  if (isRawUtil(item)) {
840
- rawStringfieldUtil.push([item[0], void 0, item[1], void 0, item[2], context]);
837
+ rawStringfieldUtil.push([item[0], void 0, item[1], void 0, item[2], context, void 0]);
841
838
  continue;
842
839
  }
843
- const { selector, entries, parent: parent2, sort } = this.applyVariants(item, [...item[4], ...parentVariants], raw);
840
+ const { selector, entries, parent: parent2, sort, noMerge } = this.applyVariants(item, [...item[4], ...parentVariants], raw);
844
841
  const mapItem = selectorMap.getFallback(selector, parent2, [[], item[0]]);
845
- mapItem[0].push([entries, !!item[3]?.noMerge, sort ?? 0]);
842
+ mapItem[0].push([entries, !!(noMerge ?? item[3]?.noMerge), sort ?? 0]);
846
843
  }
847
844
  return rawStringfieldUtil.concat(selectorMap.map(([e2, index], selector, joinedParents) => {
848
845
  const stringify = (flatten, noMerge, entrySortPair) => {
@@ -851,7 +848,7 @@ class UnoGenerator {
851
848
  return (flatten ? [entriesList.flat(1)] : entriesList).map((entries) => {
852
849
  const body = entriesToCss(entries);
853
850
  if (body)
854
- return [index, selector, body, joinedParents, { ...meta, noMerge, sort: maxSort }, context];
851
+ return [index, selector, body, joinedParents, { ...meta, noMerge, sort: maxSort }, context, void 0];
855
852
  return void 0;
856
853
  });
857
854
  };
@@ -898,4 +895,4 @@ function defaultVariantHandler(input, next) {
898
895
  return next(input);
899
896
  }
900
897
 
901
- export { BetterMap, CONTROL_SHORTCUT_NO_MERGE, TwoKeyMap, UnoGenerator, attributifyRE, clearIdenticalEntries, clone, createGenerator, createValueHandler, cssIdRE, e, entriesToCss, escapeRegExp, escapeSelector, expandVariantGroup, extractorSplit, extractorSvelte, hasScopePlaceholder, isAttributifySelector, isObject, isRawUtil, isStaticRule, isStaticShortcut, isString, isValidSelector, mergeDeep, mergeSet, movePseudoElementsEnd, noop, normalizeCSSEntries, normalizeCSSValues, normalizeVariant, notNull, regexClassGroup, regexScopePlaceholder, toArray, toEscapedSelector, uniq, validateFilterRE, warnOnce, withLayer };
898
+ export { BetterMap, CONTROL_SHORTCUT_NO_MERGE, TwoKeyMap, UnoGenerator, attributifyRE, clearIdenticalEntries, clone, createGenerator, createValueHandler, cssIdRE, e, entriesToCss, escapeRegExp, escapeSelector, expandVariantGroup, extractorSplit, extractorSvelte, hasScopePlaceholder, isAttributifySelector, isObject, isRawUtil, isStaticRule, isStaticShortcut, isString, isValidSelector, mergeDeep, movePseudoElementsEnd, noop, normalizeCSSEntries, normalizeCSSValues, normalizeVariant, notNull, regexClassGroup, regexScopePlaceholder, toArray, toEscapedSelector, uniq, validateFilterRE, warnOnce, withLayer };
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@unocss/core",
3
- "version": "0.45.13",
3
+ "version": "0.45.14",
4
4
  "description": "The instant on-demand Atomic CSS engine.",
5
5
  "author": "Anthony Fu <anthonyfu117@hotmail.com>",
6
6
  "license": "MIT",