Skip to content

Commit 2b3fb8e

Browse files
committed
optimize literals
1 parent 0073e0d commit 2b3fb8e

File tree

2 files changed

+9
-2
lines changed
  • packages/svelte/src/compiler/phases/3-transform

2 files changed

+9
-2
lines changed

packages/svelte/src/compiler/phases/3-transform/client/visitors/shared/element.js

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,7 @@
11
/** @import { Expression, Identifier, ObjectExpression } from 'estree' */
22
/** @import { AST, ExpressionMetadata } from '#compiler' */
33
/** @import { ComponentClientTransformState, ComponentContext } from '../../types' */
4+
import { escape_html } from '../../../../../../escaping.js';
45
import { normalize_attribute } from '../../../../../../utils.js';
56
import { is_ignored } from '../../../../../state.js';
67
import { is_event_attribute } from '../../../../../utils/ast.js';
@@ -241,6 +242,8 @@ export function build_set_class(
241242
if (element.metadata.scoped && context.state.analysis.css.hash) {
242243
if (value.type === 'Literal' && (value.value === '' || value.value === null)) {
243244
value = b.literal(context.state.analysis.css.hash);
245+
} else if (value.type === 'Literal' && typeof value.value === 'string') {
246+
value = b.literal(escape_html(value.value, true) + ' ' + context.state.analysis.css.hash);
244247
} else {
245248
css_hash = b.literal(context.state.analysis.css.hash);
246249
}

packages/svelte/src/compiler/phases/3-transform/server/visitors/shared/element.js

Lines changed: 6 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -421,9 +421,13 @@ function build_to_class(hash, class_directives, class_attribute) {
421421
hash &&
422422
!classes &&
423423
class_name.type === 'Literal' &&
424-
(class_name.value === null || class_name.value === '')
424+
(class_name.value === null || class_name.value === '' || typeof class_name.value === 'string')
425425
) {
426-
expression = b.literal(hash);
426+
if (class_name.value === null || class_name.value === '') {
427+
expression = b.literal(hash);
428+
} else {
429+
expression = b.literal(escape_html(class_name.value, true) + ' ' + hash);
430+
}
427431
} else {
428432
expression = b.call('$.to_class', class_name, b.literal(hash), classes);
429433
}

0 commit comments

Comments
 (0)