From 0b2f3a8b96d656fd9b92e3310d72c109764111ce Mon Sep 17 00:00:00 2001 From: Anthony Fu Date: Sat, 2 Jul 2022 15:28:42 +0800 Subject: [PATCH] feat(core): support passing array of tokens to `generate()` --- packages/core/src/generator/index.ts | 20 +++++++++++--------- 1 file changed, 11 insertions(+), 9 deletions(-) diff --git a/packages/core/src/generator/index.ts b/packages/core/src/generator/index.ts index 4ffe7218f6..8c8daa1f43 100644 --- a/packages/core/src/generator/index.ts +++ b/packages/core/src/generator/index.ts @@ -123,7 +123,7 @@ export class UnoGenerator { } async generate( - input: string | Set = '', + input: string | Set | string[], { id, scope, @@ -132,9 +132,11 @@ export class UnoGenerator { minify = false, }: GenerateOptions = {}, ): Promise { - const tokens = typeof input === 'string' + const tokens: Readonly> = typeof input === 'string' ? await this.applyExtractors(input, id) - : input + : Array.isArray(input) + ? new Set(input) + : input if (safelist) this.config.safelist.forEach(s => tokens.add(s)) @@ -247,11 +249,11 @@ export class UnoGenerator { } const selectors = selectorSortPair - ? [...new Set(selectorSortPair - .sort((a, b) => a[1] - b[1] || a[0]?.localeCompare(b[0] || '') || 0) - .map(pair => pair[0]) - .filter(Boolean), - )] + ? uniq(selectorSortPair + .sort((a, b) => a[1] - b[1] || a[0]?.localeCompare(b[0] || '') || 0) + .map(pair => pair[0]) + .filter(Boolean), + ) : [] return selectors.length @@ -338,7 +340,7 @@ export class UnoGenerator { return [raw, processed, handlers, variants] } - applyVariants(parsed: ParsedUtil, variantHandlers = parsed[4], raw = parsed[1]): UtilObject { + private applyVariants(parsed: ParsedUtil, variantHandlers = parsed[4], raw = parsed[1]): UtilObject { const handler = [...variantHandlers] .sort((a, b) => (a.order || 0) - (b.order || 0)) .reverse()