Skip to content

Commit a2f9cd1

Browse files
committed
fix(language-core): generate seperate declarations for each scoped class
1 parent 7aa44b7 commit a2f9cd1

File tree

3 files changed

+4
-19
lines changed

3 files changed

+4
-19
lines changed

packages/language-core/lib/codegen/script/template.ts

Lines changed: 1 addition & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -5,7 +5,6 @@ import { generateStyleModules } from '../style/modules';
55
import { generateStyleScopedClasses } from '../style/scopedClasses';
66
import { type TemplateCodegenContext, createTemplateCodegenContext } from '../template/context';
77
import { generateInterpolation } from '../template/interpolation';
8-
import { generateStyleScopedClassReferences } from '../template/styleScopedClasses';
98
import { endOfLine, newLine } from '../utils';
109
import type { ScriptCodegenContext } from './context';
1110
import type { ScriptCodegenOptions } from './index';
@@ -115,8 +114,7 @@ function* generateTemplateBody(
115114
options: ScriptCodegenOptions,
116115
templateCodegenCtx: TemplateCodegenContext
117116
): Generator<Code> {
118-
yield* generateStyleScopedClasses(options, templateCodegenCtx);
119-
yield* generateStyleScopedClassReferences(templateCodegenCtx, true);
117+
yield* generateStyleScopedClasses(options);
120118
yield* generateStyleModules(options);
121119
yield* generateCssVars(options, templateCodegenCtx);
122120

packages/language-core/lib/codegen/style/scopedClasses.ts

Lines changed: 1 addition & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -1,12 +1,10 @@
11
import type { Code } from '../../types';
22
import type { ScriptCodegenOptions } from '../script';
3-
import type { TemplateCodegenContext } from '../template/context';
43
import { endOfLine } from '../utils';
54
import { generateClassProperty } from './classProperty';
65

76
export function* generateStyleScopedClasses(
8-
options: ScriptCodegenOptions,
9-
ctx: TemplateCodegenContext
7+
options: ScriptCodegenOptions
108
): Generator<Code> {
119
const option = options.vueCompilerOptions.experimentalResolveStyleCssClasses;
1210
const styles = options.sfc.styles
@@ -16,19 +14,9 @@ export function* generateStyleScopedClasses(
1614
return;
1715
}
1816

19-
const firstClasses = new Set<string>();
2017
yield `type __VLS_StyleScopedClasses = {}`;
2118
for (const [style, i] of styles) {
2219
for (const className of style.classNames) {
23-
if (firstClasses.has(className.text)) {
24-
ctx.scopedClasses.push({
25-
source: 'style_' + i,
26-
className: className.text.slice(1),
27-
offset: className.offset + 1
28-
});
29-
continue;
30-
}
31-
firstClasses.add(className.text);
3220
yield* generateClassProperty(
3321
i,
3422
className.text,

packages/language-core/lib/codegen/template/styleScopedClasses.ts

Lines changed: 2 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -11,8 +11,7 @@ import type { TemplateCodegenOptions } from './index';
1111
const classNameEscapeRegex = /([\\'])/;
1212

1313
export function* generateStyleScopedClassReferences(
14-
ctx: TemplateCodegenContext,
15-
withDot = false
14+
ctx: TemplateCodegenContext
1615
): Generator<Code> {
1716
for (const offset of ctx.emptyClassOffsets) {
1817
yield `/** @type {__VLS_StyleScopedClasses['`;
@@ -27,7 +26,7 @@ export function* generateStyleScopedClassReferences(
2726
for (const { source, className, offset } of ctx.scopedClasses) {
2827
yield `/** @type {__VLS_StyleScopedClasses[`;
2928
yield* wrapWith(
30-
offset - (withDot ? 1 : 0),
29+
offset,
3130
offset + className.length,
3231
source,
3332
ctx.codeFeatures.navigation,

0 commit comments

Comments
 (0)