@unocss/svelte-scoped 0.62.3 → 0.63.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/preprocess.d.mts +3 -3
- package/dist/preprocess.d.ts +3 -3
- package/dist/preprocess.mjs +2 -2
- package/dist/shared/{svelte-scoped.BJnJpFJ9.d.mts → svelte-scoped.BG2YMHlZ.d.mts} +16 -3
- package/dist/shared/{svelte-scoped.BJnJpFJ9.d.ts → svelte-scoped.BG2YMHlZ.d.ts} +16 -3
- package/dist/shared/{svelte-scoped.BBcG3K4A.mjs → svelte-scoped.DPsPs-Am.mjs} +69 -69
- package/dist/vite.d.mts +1 -1
- package/dist/vite.d.ts +1 -1
- package/dist/vite.mjs +113 -113
- package/package.json +5 -4
package/dist/preprocess.d.mts
CHANGED
|
@@ -1,8 +1,8 @@
|
|
|
1
1
|
import { PreprocessorGroup } from 'svelte/types/compiler/preprocess';
|
|
2
|
-
import { U as UnocssSveltePreprocessOptions, S as SvelteScopedContext } from './shared/svelte-scoped.
|
|
3
|
-
export { a as TransformApplyOptions, T as TransformClassesOptions } from './shared/svelte-scoped.
|
|
4
|
-
import '@unocss/core';
|
|
2
|
+
import { U as UnocssSveltePreprocessOptions, S as SvelteScopedContext } from './shared/svelte-scoped.BG2YMHlZ.mjs';
|
|
3
|
+
export { a as TransformApplyOptions, T as TransformClassesOptions, b as TransformDirectivesOptions } from './shared/svelte-scoped.BG2YMHlZ.mjs';
|
|
5
4
|
import '@unocss/config';
|
|
5
|
+
import '@unocss/core';
|
|
6
6
|
|
|
7
7
|
declare function UnocssSveltePreprocess(options?: UnocssSveltePreprocessOptions, unoContextFromVite?: SvelteScopedContext, isViteBuild?: () => boolean): PreprocessorGroup;
|
|
8
8
|
|
package/dist/preprocess.d.ts
CHANGED
|
@@ -1,8 +1,8 @@
|
|
|
1
1
|
import { PreprocessorGroup } from 'svelte/types/compiler/preprocess';
|
|
2
|
-
import { U as UnocssSveltePreprocessOptions, S as SvelteScopedContext } from './shared/svelte-scoped.
|
|
3
|
-
export { a as TransformApplyOptions, T as TransformClassesOptions } from './shared/svelte-scoped.
|
|
4
|
-
import '@unocss/core';
|
|
2
|
+
import { U as UnocssSveltePreprocessOptions, S as SvelteScopedContext } from './shared/svelte-scoped.BG2YMHlZ.js';
|
|
3
|
+
export { a as TransformApplyOptions, T as TransformClassesOptions, b as TransformDirectivesOptions } from './shared/svelte-scoped.BG2YMHlZ.js';
|
|
5
4
|
import '@unocss/config';
|
|
5
|
+
import '@unocss/core';
|
|
6
6
|
|
|
7
7
|
declare function UnocssSveltePreprocess(options?: UnocssSveltePreprocessOptions, unoContextFromVite?: SvelteScopedContext, isViteBuild?: () => boolean): PreprocessorGroup;
|
|
8
8
|
|
package/dist/preprocess.mjs
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
|
-
export { U as default } from './shared/svelte-scoped.
|
|
1
|
+
export { U as default } from './shared/svelte-scoped.DPsPs-Am.mjs';
|
|
2
2
|
import 'node:process';
|
|
3
|
+
import '@unocss/config';
|
|
3
4
|
import '@unocss/core';
|
|
4
5
|
import '@unocss/preset-uno';
|
|
5
|
-
import '@unocss/config';
|
|
6
6
|
import 'magic-string';
|
|
7
7
|
import 'css-tree';
|
|
@@ -1,7 +1,7 @@
|
|
|
1
|
-
import { UserConfig, UnoGenerator } from '@unocss/core';
|
|
2
1
|
import { LoadConfigResult } from '@unocss/config';
|
|
2
|
+
import { UserConfig, UnoGenerator } from '@unocss/core';
|
|
3
3
|
|
|
4
|
-
interface UnocssSveltePreprocessOptions extends TransformClassesOptions, TransformApplyOptions {
|
|
4
|
+
interface UnocssSveltePreprocessOptions extends TransformClassesOptions, TransformApplyOptions, TransformDirectivesOptions {
|
|
5
5
|
/**
|
|
6
6
|
* UnoCSS config or path to config file. If not provided, will load unocss.config.ts/js. It's recommended to use the separate config file if you are having trouble with the UnoCSS extension in VSCode.
|
|
7
7
|
*/
|
|
@@ -37,9 +37,22 @@ interface TransformApplyOptions {
|
|
|
37
37
|
applyVariables?: string | string[] | false
|
|
38
38
|
}
|
|
39
39
|
|
|
40
|
+
interface TransformDirectivesOptions {
|
|
41
|
+
/**
|
|
42
|
+
* Transform the `theme()` directive (recommended for CSS syntax compatibility).
|
|
43
|
+
*
|
|
44
|
+
* Disable for TailwindCss compatibility.
|
|
45
|
+
*
|
|
46
|
+
* Pass `false` to disable.
|
|
47
|
+
*
|
|
48
|
+
* @default true
|
|
49
|
+
*/
|
|
50
|
+
transformThemeDirective?: boolean
|
|
51
|
+
}
|
|
52
|
+
|
|
40
53
|
interface SvelteScopedContext {
|
|
41
54
|
uno: UnoGenerator
|
|
42
55
|
ready: Promise<LoadConfigResult<UserConfig>>
|
|
43
56
|
}
|
|
44
57
|
|
|
45
|
-
export type { SvelteScopedContext as S, TransformClassesOptions as T, UnocssSveltePreprocessOptions as U, TransformApplyOptions as a };
|
|
58
|
+
export type { SvelteScopedContext as S, TransformClassesOptions as T, UnocssSveltePreprocessOptions as U, TransformApplyOptions as a, TransformDirectivesOptions as b };
|
|
@@ -1,7 +1,7 @@
|
|
|
1
|
-
import { UserConfig, UnoGenerator } from '@unocss/core';
|
|
2
1
|
import { LoadConfigResult } from '@unocss/config';
|
|
2
|
+
import { UserConfig, UnoGenerator } from '@unocss/core';
|
|
3
3
|
|
|
4
|
-
interface UnocssSveltePreprocessOptions extends TransformClassesOptions, TransformApplyOptions {
|
|
4
|
+
interface UnocssSveltePreprocessOptions extends TransformClassesOptions, TransformApplyOptions, TransformDirectivesOptions {
|
|
5
5
|
/**
|
|
6
6
|
* UnoCSS config or path to config file. If not provided, will load unocss.config.ts/js. It's recommended to use the separate config file if you are having trouble with the UnoCSS extension in VSCode.
|
|
7
7
|
*/
|
|
@@ -37,9 +37,22 @@ interface TransformApplyOptions {
|
|
|
37
37
|
applyVariables?: string | string[] | false
|
|
38
38
|
}
|
|
39
39
|
|
|
40
|
+
interface TransformDirectivesOptions {
|
|
41
|
+
/**
|
|
42
|
+
* Transform the `theme()` directive (recommended for CSS syntax compatibility).
|
|
43
|
+
*
|
|
44
|
+
* Disable for TailwindCss compatibility.
|
|
45
|
+
*
|
|
46
|
+
* Pass `false` to disable.
|
|
47
|
+
*
|
|
48
|
+
* @default true
|
|
49
|
+
*/
|
|
50
|
+
transformThemeDirective?: boolean
|
|
51
|
+
}
|
|
52
|
+
|
|
40
53
|
interface SvelteScopedContext {
|
|
41
54
|
uno: UnoGenerator
|
|
42
55
|
ready: Promise<LoadConfigResult<UserConfig>>
|
|
43
56
|
}
|
|
44
57
|
|
|
45
|
-
export type { SvelteScopedContext as S, TransformClassesOptions as T, UnocssSveltePreprocessOptions as U, TransformApplyOptions as a };
|
|
58
|
+
export type { SvelteScopedContext as S, TransformClassesOptions as T, UnocssSveltePreprocessOptions as U, TransformApplyOptions as a, TransformDirectivesOptions as b };
|
|
@@ -1,16 +1,20 @@
|
|
|
1
1
|
import process from 'node:process';
|
|
2
|
-
import { expandVariantGroup, regexScopePlaceholder, warnOnce, toArray, createGenerator } from '@unocss/core';
|
|
3
|
-
import presetUno from '@unocss/preset-uno';
|
|
4
2
|
import { createRecoveryConfigLoader } from '@unocss/config';
|
|
3
|
+
import { expandVariantGroup, warnOnce, regexScopePlaceholder, toArray, createGenerator } from '@unocss/core';
|
|
4
|
+
import presetUno from '@unocss/preset-uno';
|
|
5
5
|
import MagicString from 'magic-string';
|
|
6
6
|
import { generate, parse, clone, walk } from 'css-tree';
|
|
7
7
|
|
|
8
|
-
const
|
|
9
|
-
const
|
|
10
|
-
const
|
|
11
|
-
const
|
|
12
|
-
function
|
|
13
|
-
|
|
8
|
+
const notInCommentRE = /(?<!<!--\s*)/;
|
|
9
|
+
const stylesTagWithCapturedDirectivesRE = /<style([^>]*)>[\s\S]*?<\/style\s*>/;
|
|
10
|
+
const actualStylesTagWithCapturedDirectivesRE = new RegExp(notInCommentRE.source + stylesTagWithCapturedDirectivesRE.source, "g");
|
|
11
|
+
const captureOpeningStyleTagWithAttributesRE = /(<style[^>]*>)/;
|
|
12
|
+
function addGeneratedStylesIntoStyleBlock(code, styles) {
|
|
13
|
+
const preExistingStylesTag = code.match(actualStylesTagWithCapturedDirectivesRE);
|
|
14
|
+
if (preExistingStylesTag)
|
|
15
|
+
return code.replace(captureOpeningStyleTagWithAttributesRE, `$1${styles}`);
|
|
16
|
+
return `${code}
|
|
17
|
+
<style>${styles}</style>`;
|
|
14
18
|
}
|
|
15
19
|
|
|
16
20
|
const classesRE$1 = /class=(["'`])([\s\S]*?)\1/g;
|
|
@@ -41,26 +45,6 @@ function hasBody(foundClass) {
|
|
|
41
45
|
return foundClass.body;
|
|
42
46
|
}
|
|
43
47
|
|
|
44
|
-
const notInCommentRE = /(?<!<!--\s*)/;
|
|
45
|
-
const stylesTagWithCapturedDirectivesRE = /<style([^>]*)>[\s\S]*?<\/style\s*>/;
|
|
46
|
-
const actualStylesTagWithCapturedDirectivesRE = new RegExp(notInCommentRE.source + stylesTagWithCapturedDirectivesRE.source, "g");
|
|
47
|
-
const captureOpeningStyleTagWithAttributesRE = /(<style[^>]*>)/;
|
|
48
|
-
function addGeneratedStylesIntoStyleBlock(code, styles) {
|
|
49
|
-
const preExistingStylesTag = code.match(actualStylesTagWithCapturedDirectivesRE);
|
|
50
|
-
if (preExistingStylesTag)
|
|
51
|
-
return code.replace(captureOpeningStyleTagWithAttributesRE, `$1${styles}`);
|
|
52
|
-
return `${code}
|
|
53
|
-
<style>${styles}</style>`;
|
|
54
|
-
}
|
|
55
|
-
|
|
56
|
-
async function needsGenerated(token, uno) {
|
|
57
|
-
const inSafelist = uno.config.safelist.includes(token);
|
|
58
|
-
if (inSafelist)
|
|
59
|
-
return false;
|
|
60
|
-
const result = await uno.parseToken(token);
|
|
61
|
-
return !!result;
|
|
62
|
-
}
|
|
63
|
-
|
|
64
48
|
function hash(str) {
|
|
65
49
|
let i;
|
|
66
50
|
let l;
|
|
@@ -91,16 +75,12 @@ function isShortcut(token, shortcuts) {
|
|
|
91
75
|
return shortcuts.some((s) => s[0] === token);
|
|
92
76
|
}
|
|
93
77
|
|
|
94
|
-
async function
|
|
95
|
-
const
|
|
96
|
-
if (
|
|
97
|
-
return;
|
|
98
|
-
const
|
|
99
|
-
|
|
100
|
-
return {
|
|
101
|
-
rulesToGenerate: { [generatedClassName]: [token] },
|
|
102
|
-
codeUpdate: { content, start, end }
|
|
103
|
-
};
|
|
78
|
+
async function needsGenerated(token, uno) {
|
|
79
|
+
const inSafelist = uno.config.safelist.includes(token);
|
|
80
|
+
if (inSafelist)
|
|
81
|
+
return false;
|
|
82
|
+
const result = await uno.parseToken(token);
|
|
83
|
+
return !!result;
|
|
104
84
|
}
|
|
105
85
|
|
|
106
86
|
async function sortClassesIntoCategories(body, options, uno, filename) {
|
|
@@ -166,6 +146,18 @@ async function processClassBody({ body, start, end }, options, uno, filename) {
|
|
|
166
146
|
return { rulesToGenerate, codeUpdate };
|
|
167
147
|
}
|
|
168
148
|
|
|
149
|
+
async function processDirective({ body: token, start, end, type }, options, uno, filename) {
|
|
150
|
+
const isShortcutOrUtility = isShortcut(token, uno.config.shortcuts) || await needsGenerated(token, uno);
|
|
151
|
+
if (!isShortcutOrUtility)
|
|
152
|
+
return;
|
|
153
|
+
const generatedClassName = generateClassName(token, options, filename);
|
|
154
|
+
const content = type === "directiveShorthand" ? `${generatedClassName}={${token}}` : generatedClassName;
|
|
155
|
+
return {
|
|
156
|
+
rulesToGenerate: { [generatedClassName]: [token] },
|
|
157
|
+
codeUpdate: { content, start, end }
|
|
158
|
+
};
|
|
159
|
+
}
|
|
160
|
+
|
|
169
161
|
async function processClasses(classes, options, uno, filename) {
|
|
170
162
|
const result = {
|
|
171
163
|
rulesToGenerate: {},
|
|
@@ -189,6 +181,14 @@ async function processClasses(classes, options, uno, filename) {
|
|
|
189
181
|
return result;
|
|
190
182
|
}
|
|
191
183
|
|
|
184
|
+
const NOT_PRECEDED_BY_DIGIT_OR_OPEN_PARENTHESIS_RE = /(?<![\d(])/;
|
|
185
|
+
const SELECTOR_STARTING_WITH_BRACKET_OR_PERIOD_RE = /([[.][\s\S]+?)/;
|
|
186
|
+
const STYLES_RE = /(\{[\s\S]+?\})/;
|
|
187
|
+
const EXTRACT_SELECTOR_RE = new RegExp(NOT_PRECEDED_BY_DIGIT_OR_OPEN_PARENTHESIS_RE.source + SELECTOR_STARTING_WITH_BRACKET_OR_PERIOD_RE.source + STYLES_RE.source, "g");
|
|
188
|
+
function wrapSelectorsWithGlobal(css) {
|
|
189
|
+
return css.replace(EXTRACT_SELECTOR_RE, ":global($1)$2");
|
|
190
|
+
}
|
|
191
|
+
|
|
192
192
|
async function transformClasses({ content, filename, uno, options }) {
|
|
193
193
|
const classesToProcess = findClasses(content);
|
|
194
194
|
if (!classesToProcess.length)
|
|
@@ -229,6 +229,33 @@ async function generateStyles(rulesToGenerate, uno) {
|
|
|
229
229
|
return cssPreparedForSvelteCompiler;
|
|
230
230
|
}
|
|
231
231
|
|
|
232
|
+
async function getUtils(body, uno) {
|
|
233
|
+
const classNames = expandVariantGroup(body).split(/\s+/g).map((className) => className.trim().replace(/\\/, ""));
|
|
234
|
+
const utils = await parseUtils(classNames, uno);
|
|
235
|
+
const sortedByRankIndex = utils.sort(([aIndex], [bIndex]) => aIndex - bIndex);
|
|
236
|
+
const sortedByParentOrders = sortedByRankIndex.sort(([, , , aParent], [, , , bParent]) => (aParent ? uno.parentOrders.get(aParent) ?? 0 : 0) - (bParent ? uno.parentOrders.get(bParent) ?? 0 : 0));
|
|
237
|
+
return sortedByParentOrders.reduce((acc, item) => {
|
|
238
|
+
const [, selector, body2, parent] = item;
|
|
239
|
+
const sibling = acc.find(([, targetSelector, , targetParent]) => targetSelector === selector && targetParent === parent);
|
|
240
|
+
if (sibling)
|
|
241
|
+
sibling[2] += body2;
|
|
242
|
+
else
|
|
243
|
+
acc.push([...item]);
|
|
244
|
+
return acc;
|
|
245
|
+
}, []);
|
|
246
|
+
}
|
|
247
|
+
async function parseUtils(classNames, uno) {
|
|
248
|
+
const foundUtils = [];
|
|
249
|
+
for (const token of classNames) {
|
|
250
|
+
const util = await uno.parseToken(token, "-");
|
|
251
|
+
if (util)
|
|
252
|
+
foundUtils.push(util);
|
|
253
|
+
else
|
|
254
|
+
warnOnce(`'${token}' not found. You have a typo or need to add a preset.`);
|
|
255
|
+
}
|
|
256
|
+
return foundUtils.flat();
|
|
257
|
+
}
|
|
258
|
+
|
|
232
259
|
function removeOuterQuotes(input) {
|
|
233
260
|
if (!input)
|
|
234
261
|
return "";
|
|
@@ -297,33 +324,6 @@ function findFirstCombinatorIndex(input) {
|
|
|
297
324
|
return -1;
|
|
298
325
|
}
|
|
299
326
|
|
|
300
|
-
async function getUtils(body, uno) {
|
|
301
|
-
const classNames = expandVariantGroup(body).split(/\s+/g).map((className) => className.trim().replace(/\\/, ""));
|
|
302
|
-
const utils = await parseUtils(classNames, uno);
|
|
303
|
-
const sortedByRankIndex = utils.sort(([aIndex], [bIndex]) => aIndex - bIndex);
|
|
304
|
-
const sortedByParentOrders = sortedByRankIndex.sort(([, , , aParent], [, , , bParent]) => (aParent ? uno.parentOrders.get(aParent) ?? 0 : 0) - (bParent ? uno.parentOrders.get(bParent) ?? 0 : 0));
|
|
305
|
-
return sortedByParentOrders.reduce((acc, item) => {
|
|
306
|
-
const [, selector, body2, parent] = item;
|
|
307
|
-
const sibling = acc.find(([, targetSelector, , targetParent]) => targetSelector === selector && targetParent === parent);
|
|
308
|
-
if (sibling)
|
|
309
|
-
sibling[2] += body2;
|
|
310
|
-
else
|
|
311
|
-
acc.push([...item]);
|
|
312
|
-
return acc;
|
|
313
|
-
}, []);
|
|
314
|
-
}
|
|
315
|
-
async function parseUtils(classNames, uno) {
|
|
316
|
-
const foundUtils = [];
|
|
317
|
-
for (const token of classNames) {
|
|
318
|
-
const util = await uno.parseToken(token, "-");
|
|
319
|
-
if (util)
|
|
320
|
-
foundUtils.push(util);
|
|
321
|
-
else
|
|
322
|
-
warnOnce(`'${token}' not found. You have a typo or need to add a preset.`);
|
|
323
|
-
}
|
|
324
|
-
return foundUtils.flat();
|
|
325
|
-
}
|
|
326
|
-
|
|
327
327
|
async function transformApply(ctx) {
|
|
328
328
|
const ast = parse(ctx.s.original, {
|
|
329
329
|
parseAtrulePrelude: false,
|
|
@@ -398,12 +398,12 @@ async function transformStyle({
|
|
|
398
398
|
prepend,
|
|
399
399
|
filename,
|
|
400
400
|
applyVariables,
|
|
401
|
-
|
|
401
|
+
transformThemeFn
|
|
402
402
|
}) {
|
|
403
403
|
const s = new MagicString(content);
|
|
404
404
|
if (applyVariables?.length)
|
|
405
405
|
await transformApply({ s, uno, applyVariables });
|
|
406
|
-
if (
|
|
406
|
+
if (transformThemeFn)
|
|
407
407
|
transformTheme(s, uno.config.theme);
|
|
408
408
|
if (!s.hasChanged())
|
|
409
409
|
return;
|
|
@@ -441,7 +441,7 @@ function UnocssSveltePreprocess(options = {}, unoContextFromVite, isViteBuild) {
|
|
|
441
441
|
warnOnce("Notice for those transitioning to @unocss/svelte-scoped/vite: uno-preflights and uno-safelist are only for use in component libraries. Please see the documentation for how to add preflights and safelist into your head tag. If you are consuming a component library built by @unocss/svelte-scoped/preprocess, you can ignore this upgrade notice.");
|
|
442
442
|
}
|
|
443
443
|
const { hasApply, applyVariables } = checkForApply(content, options.applyVariables);
|
|
444
|
-
const hasThemeFn = !!content.match(themeRE);
|
|
444
|
+
const hasThemeFn = options.transformThemeDirective === false ? false : !!content.match(themeRE);
|
|
445
445
|
const changeNeeded = addPreflights || addSafelist || hasApply || hasThemeFn;
|
|
446
446
|
if (!changeNeeded)
|
|
447
447
|
return;
|
|
@@ -459,7 +459,7 @@ function UnocssSveltePreprocess(options = {}, unoContextFromVite, isViteBuild) {
|
|
|
459
459
|
filename,
|
|
460
460
|
prepend: preflightsSafelistCss,
|
|
461
461
|
applyVariables,
|
|
462
|
-
hasThemeFn
|
|
462
|
+
transformThemeFn: hasThemeFn
|
|
463
463
|
});
|
|
464
464
|
}
|
|
465
465
|
if (preflightsSafelistCss)
|
package/dist/vite.d.mts
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import { Plugin } from 'vite';
|
|
2
2
|
import { PluginOptions } from '@unocss/core';
|
|
3
|
-
import { U as UnocssSveltePreprocessOptions } from './shared/svelte-scoped.
|
|
3
|
+
import { U as UnocssSveltePreprocessOptions } from './shared/svelte-scoped.BG2YMHlZ.mjs';
|
|
4
4
|
import '@unocss/config';
|
|
5
5
|
|
|
6
6
|
interface UnocssSvelteScopedViteOptions extends UnocssSveltePreprocessOptions {
|
package/dist/vite.d.ts
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import { Plugin } from 'vite';
|
|
2
2
|
import { PluginOptions } from '@unocss/core';
|
|
3
|
-
import { U as UnocssSveltePreprocessOptions } from './shared/svelte-scoped.
|
|
3
|
+
import { U as UnocssSveltePreprocessOptions } from './shared/svelte-scoped.BG2YMHlZ.js';
|
|
4
4
|
import '@unocss/config';
|
|
5
5
|
|
|
6
6
|
interface UnocssSvelteScopedViteOptions extends UnocssSveltePreprocessOptions {
|
package/dist/vite.mjs
CHANGED
|
@@ -1,30 +1,119 @@
|
|
|
1
1
|
import process from 'node:process';
|
|
2
|
-
import { cssIdRE, createGenerator } from '@unocss/core';
|
|
3
2
|
import { createRecoveryConfigLoader } from '@unocss/config';
|
|
3
|
+
import { cssIdRE, createGenerator } from '@unocss/core';
|
|
4
4
|
import presetUno from '@unocss/preset-uno';
|
|
5
|
-
import
|
|
5
|
+
import remapping from '@ampproject/remapping';
|
|
6
|
+
import MagicString from 'magic-string';
|
|
6
7
|
import { readFileSync, existsSync, statSync } from 'node:fs';
|
|
7
8
|
import { dirname, resolve } from 'node:path';
|
|
8
9
|
import { fileURLToPath } from 'node:url';
|
|
9
|
-
import
|
|
10
|
-
import remapping from '@ampproject/remapping';
|
|
10
|
+
import { U as UnocssSveltePreprocess } from './shared/svelte-scoped.DPsPs-Am.mjs';
|
|
11
11
|
import 'css-tree';
|
|
12
12
|
|
|
13
|
-
function
|
|
14
|
-
let commandIsBuild = true;
|
|
15
|
-
const isBuild = () => commandIsBuild;
|
|
13
|
+
function ConfigHMRPlugin({ ready }) {
|
|
16
14
|
return {
|
|
17
|
-
name: "unocss:svelte-scoped:
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
15
|
+
name: "unocss:svelte-scoped:config",
|
|
16
|
+
async configureServer(server) {
|
|
17
|
+
const { sources } = await ready;
|
|
18
|
+
if (!sources.length)
|
|
19
|
+
return;
|
|
20
|
+
server.watcher.add(sources);
|
|
21
|
+
server.watcher.on("add", handleFileChange);
|
|
22
|
+
server.watcher.on("change", handleFileChange);
|
|
23
|
+
server.watcher.on("unlink", handleFileChange);
|
|
24
|
+
function handleFileChange(filepath) {
|
|
25
|
+
if (sources.includes(filepath))
|
|
26
|
+
server.restart();
|
|
27
|
+
}
|
|
24
28
|
}
|
|
25
29
|
};
|
|
26
30
|
}
|
|
27
31
|
|
|
32
|
+
const IGNORE_COMMENT = "@unocss-ignore";
|
|
33
|
+
const SKIP_START_COMMENT = "@unocss-skip-start";
|
|
34
|
+
const SKIP_END_COMMENT = "@unocss-skip-end";
|
|
35
|
+
const SKIP_COMMENT_RE = new RegExp(`(//\\s*?${SKIP_START_COMMENT}\\s*?|\\/\\*\\s*?${SKIP_START_COMMENT}\\s*?\\*\\/|<!--\\s*?${SKIP_START_COMMENT}\\s*?-->)[\\s\\S]*?(//\\s*?${SKIP_END_COMMENT}\\s*?|\\/\\*\\s*?${SKIP_END_COMMENT}\\s*?\\*\\/|<!--\\s*?${SKIP_END_COMMENT}\\s*?-->)`, "g");
|
|
36
|
+
|
|
37
|
+
function hash(str) {
|
|
38
|
+
let i;
|
|
39
|
+
let l;
|
|
40
|
+
let hval = 2166136261;
|
|
41
|
+
for (i = 0, l = str.length; i < l; i++) {
|
|
42
|
+
hval ^= str.charCodeAt(i);
|
|
43
|
+
hval += (hval << 1) + (hval << 4) + (hval << 7) + (hval << 8) + (hval << 24);
|
|
44
|
+
}
|
|
45
|
+
return `00000${(hval >>> 0).toString(36)}`.slice(-6);
|
|
46
|
+
}
|
|
47
|
+
function transformSkipCode(code, map, SKIP_RULES_RE, keyFlag) {
|
|
48
|
+
for (const item of Array.from(code.matchAll(SKIP_RULES_RE))) {
|
|
49
|
+
if (item != null) {
|
|
50
|
+
const matched = item[0];
|
|
51
|
+
const withHashKey = `${keyFlag}${hash(matched)}`;
|
|
52
|
+
map.set(withHashKey, matched);
|
|
53
|
+
code = code.replace(matched, withHashKey);
|
|
54
|
+
}
|
|
55
|
+
}
|
|
56
|
+
return code;
|
|
57
|
+
}
|
|
58
|
+
function restoreSkipCode(code, map) {
|
|
59
|
+
for (const [withHashKey, matched] of map.entries())
|
|
60
|
+
code = code.replaceAll(withHashKey, matched);
|
|
61
|
+
return code;
|
|
62
|
+
}
|
|
63
|
+
|
|
64
|
+
async function applyTransformers(ctx, original, id, enforce = "default") {
|
|
65
|
+
if (original.includes(IGNORE_COMMENT))
|
|
66
|
+
return;
|
|
67
|
+
const transformers = (ctx.uno.config.transformers || []).filter((i) => (i.enforce || "default") === enforce);
|
|
68
|
+
if (!transformers.length)
|
|
69
|
+
return;
|
|
70
|
+
const skipMap = /* @__PURE__ */ new Map();
|
|
71
|
+
let code = original;
|
|
72
|
+
let s = new MagicString(transformSkipCode(code, skipMap, SKIP_COMMENT_RE, "@unocss-skip-placeholder-"));
|
|
73
|
+
const maps = [];
|
|
74
|
+
for (const t of transformers) {
|
|
75
|
+
if (t.idFilter) {
|
|
76
|
+
if (!t.idFilter(id))
|
|
77
|
+
continue;
|
|
78
|
+
} else if (!ctx.filter(code, id)) {
|
|
79
|
+
continue;
|
|
80
|
+
}
|
|
81
|
+
await t.transform(s, id, ctx);
|
|
82
|
+
if (s.hasChanged()) {
|
|
83
|
+
code = restoreSkipCode(s.toString(), skipMap);
|
|
84
|
+
maps.push(s.generateMap({ hires: true, source: id }));
|
|
85
|
+
s = new MagicString(code);
|
|
86
|
+
}
|
|
87
|
+
}
|
|
88
|
+
if (code !== original) {
|
|
89
|
+
return {
|
|
90
|
+
code,
|
|
91
|
+
map: remapping(maps, (_, ctx2) => {
|
|
92
|
+
ctx2.content = code;
|
|
93
|
+
return null;
|
|
94
|
+
})
|
|
95
|
+
};
|
|
96
|
+
}
|
|
97
|
+
}
|
|
98
|
+
|
|
99
|
+
const svelteIdRE = /[&?]svelte/;
|
|
100
|
+
function createCssTransformerPlugins(context, cssTransformers) {
|
|
101
|
+
const enforces = ["default", "pre", "post"];
|
|
102
|
+
return enforces.map((enforce) => ({
|
|
103
|
+
name: `unocss:svelte-scoped-transformers:${enforce}`,
|
|
104
|
+
enforce: enforce === "default" ? void 0 : enforce,
|
|
105
|
+
async transform(code, id) {
|
|
106
|
+
if (!cssIdRE.test(id) || svelteIdRE.test(id))
|
|
107
|
+
return;
|
|
108
|
+
context.uno.config.transformers = cssTransformers ?? [];
|
|
109
|
+
return applyTransformers({
|
|
110
|
+
...context,
|
|
111
|
+
affectedModules: /* @__PURE__ */ new Set()
|
|
112
|
+
}, code, id, enforce);
|
|
113
|
+
}
|
|
114
|
+
}));
|
|
115
|
+
}
|
|
116
|
+
|
|
28
117
|
const PLACEHOLDER_USER_SETS_IN_INDEX_HTML = "%unocss-svelte-scoped.global%";
|
|
29
118
|
const GLOBAL_STYLES_PLACEHOLDER = "unocss_svelte_scoped_global_styles";
|
|
30
119
|
const DEV_GLOBAL_STYLES_DATA_TITLE = "unocss-svelte-scoped global styles";
|
|
@@ -150,106 +239,17 @@ function GlobalStylesPlugin({ ready, uno }, injectReset) {
|
|
|
150
239
|
};
|
|
151
240
|
}
|
|
152
241
|
|
|
153
|
-
|
|
154
|
-
|
|
155
|
-
const
|
|
156
|
-
const SKIP_COMMENT_RE = new RegExp(`(//\\s*?${SKIP_START_COMMENT}\\s*?|\\/\\*\\s*?${SKIP_START_COMMENT}\\s*?\\*\\/|<!--\\s*?${SKIP_START_COMMENT}\\s*?-->)[\\s\\S]*?(//\\s*?${SKIP_END_COMMENT}\\s*?|\\/\\*\\s*?${SKIP_END_COMMENT}\\s*?\\*\\/|<!--\\s*?${SKIP_END_COMMENT}\\s*?-->)`, "g");
|
|
157
|
-
|
|
158
|
-
function hash(str) {
|
|
159
|
-
let i;
|
|
160
|
-
let l;
|
|
161
|
-
let hval = 2166136261;
|
|
162
|
-
for (i = 0, l = str.length; i < l; i++) {
|
|
163
|
-
hval ^= str.charCodeAt(i);
|
|
164
|
-
hval += (hval << 1) + (hval << 4) + (hval << 7) + (hval << 8) + (hval << 24);
|
|
165
|
-
}
|
|
166
|
-
return `00000${(hval >>> 0).toString(36)}`.slice(-6);
|
|
167
|
-
}
|
|
168
|
-
function transformSkipCode(code, map, SKIP_RULES_RE, keyFlag) {
|
|
169
|
-
for (const item of Array.from(code.matchAll(SKIP_RULES_RE))) {
|
|
170
|
-
if (item != null) {
|
|
171
|
-
const matched = item[0];
|
|
172
|
-
const withHashKey = `${keyFlag}${hash(matched)}`;
|
|
173
|
-
map.set(withHashKey, matched);
|
|
174
|
-
code = code.replace(matched, withHashKey);
|
|
175
|
-
}
|
|
176
|
-
}
|
|
177
|
-
return code;
|
|
178
|
-
}
|
|
179
|
-
function restoreSkipCode(code, map) {
|
|
180
|
-
for (const [withHashKey, matched] of map.entries())
|
|
181
|
-
code = code.replaceAll(withHashKey, matched);
|
|
182
|
-
return code;
|
|
183
|
-
}
|
|
184
|
-
|
|
185
|
-
async function applyTransformers(ctx, original, id, enforce = "default") {
|
|
186
|
-
if (original.includes(IGNORE_COMMENT))
|
|
187
|
-
return;
|
|
188
|
-
const transformers = (ctx.uno.config.transformers || []).filter((i) => (i.enforce || "default") === enforce);
|
|
189
|
-
if (!transformers.length)
|
|
190
|
-
return;
|
|
191
|
-
const skipMap = /* @__PURE__ */ new Map();
|
|
192
|
-
let code = original;
|
|
193
|
-
let s = new MagicString(transformSkipCode(code, skipMap, SKIP_COMMENT_RE, "@unocss-skip-placeholder-"));
|
|
194
|
-
const maps = [];
|
|
195
|
-
for (const t of transformers) {
|
|
196
|
-
if (t.idFilter) {
|
|
197
|
-
if (!t.idFilter(id))
|
|
198
|
-
continue;
|
|
199
|
-
} else if (!ctx.filter(code, id)) {
|
|
200
|
-
continue;
|
|
201
|
-
}
|
|
202
|
-
await t.transform(s, id, ctx);
|
|
203
|
-
if (s.hasChanged()) {
|
|
204
|
-
code = restoreSkipCode(s.toString(), skipMap);
|
|
205
|
-
maps.push(s.generateMap({ hires: true, source: id }));
|
|
206
|
-
s = new MagicString(code);
|
|
207
|
-
}
|
|
208
|
-
}
|
|
209
|
-
if (code !== original) {
|
|
210
|
-
return {
|
|
211
|
-
code,
|
|
212
|
-
map: remapping(maps, (_, ctx2) => {
|
|
213
|
-
ctx2.content = code;
|
|
214
|
-
return null;
|
|
215
|
-
})
|
|
216
|
-
};
|
|
217
|
-
}
|
|
218
|
-
}
|
|
219
|
-
|
|
220
|
-
const svelteIdRE = /[&?]svelte/;
|
|
221
|
-
function createCssTransformerPlugins(context, cssTransformers) {
|
|
222
|
-
const enforces = ["default", "pre", "post"];
|
|
223
|
-
return enforces.map((enforce) => ({
|
|
224
|
-
name: `unocss:svelte-scoped-transformers:${enforce}`,
|
|
225
|
-
enforce: enforce === "default" ? void 0 : enforce,
|
|
226
|
-
async transform(code, id) {
|
|
227
|
-
if (!cssIdRE.test(id) || svelteIdRE.test(id))
|
|
228
|
-
return;
|
|
229
|
-
context.uno.config.transformers = cssTransformers ?? [];
|
|
230
|
-
return applyTransformers({
|
|
231
|
-
...context,
|
|
232
|
-
affectedModules: /* @__PURE__ */ new Set()
|
|
233
|
-
}, code, id, enforce);
|
|
234
|
-
}
|
|
235
|
-
}));
|
|
236
|
-
}
|
|
237
|
-
|
|
238
|
-
function ConfigHMRPlugin({ ready }) {
|
|
242
|
+
function PassPreprocessToSveltePlugin(context, options = {}) {
|
|
243
|
+
let commandIsBuild = true;
|
|
244
|
+
const isBuild = () => commandIsBuild;
|
|
239
245
|
return {
|
|
240
|
-
name: "unocss:svelte-scoped:
|
|
241
|
-
|
|
242
|
-
|
|
243
|
-
|
|
244
|
-
|
|
245
|
-
|
|
246
|
-
|
|
247
|
-
server.watcher.on("change", handleFileChange);
|
|
248
|
-
server.watcher.on("unlink", handleFileChange);
|
|
249
|
-
function handleFileChange(filepath) {
|
|
250
|
-
if (sources.includes(filepath))
|
|
251
|
-
server.restart();
|
|
252
|
-
}
|
|
246
|
+
name: "unocss:svelte-scoped:pass-preprocess",
|
|
247
|
+
enforce: "pre",
|
|
248
|
+
configResolved({ command }) {
|
|
249
|
+
commandIsBuild = command === "build";
|
|
250
|
+
},
|
|
251
|
+
api: {
|
|
252
|
+
sveltePreprocess: UnocssSveltePreprocess(options, context, isBuild)
|
|
253
253
|
}
|
|
254
254
|
};
|
|
255
255
|
}
|
package/package.json
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@unocss/svelte-scoped",
|
|
3
3
|
"type": "module",
|
|
4
|
-
"version": "0.
|
|
4
|
+
"version": "0.63.0",
|
|
5
5
|
"description": "Use UnoCSS in a modular fashion with styles being stored only in the Svelte component they are used in: Vite plugin for apps, Svelte preprocessor for component libraries",
|
|
6
6
|
"author": "Jacob Bowdoin",
|
|
7
7
|
"license": "MIT",
|
|
@@ -50,10 +50,11 @@
|
|
|
50
50
|
"dist"
|
|
51
51
|
],
|
|
52
52
|
"dependencies": {
|
|
53
|
-
"css-tree": "^
|
|
53
|
+
"css-tree": "^3.0.0",
|
|
54
54
|
"magic-string": "^0.30.11",
|
|
55
|
-
"@unocss/config": "0.
|
|
56
|
-
"@unocss/reset": "0.
|
|
55
|
+
"@unocss/config": "0.63.0",
|
|
56
|
+
"@unocss/reset": "0.63.0",
|
|
57
|
+
"@unocss/preset-uno": "0.63.0"
|
|
57
58
|
},
|
|
58
59
|
"devDependencies": {
|
|
59
60
|
"prettier-plugin-svelte": "^2.10.1",
|