svelte 5.47.0 → 5.48.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/compiler/index.js +1 -1
- package/package.json +1 -1
- package/src/compiler/index.js +25 -1
- package/src/compiler/phases/1-parse/index.js +14 -0
- package/src/compiler/phases/1-parse/read/style.js +17 -13
- package/src/compiler/phases/2-analyze/visitors/RegularElement.js +1 -1
- package/src/compiler/phases/3-transform/client/visitors/RegularElement.js +12 -0
- package/src/compiler/phases/3-transform/client/visitors/SvelteElement.js +1 -1
- package/src/compiler/phases/3-transform/server/visitors/SvelteElement.js +1 -1
- package/src/internal/client/dom/elements/customizable-select.js +47 -0
- package/src/internal/client/index.js +1 -1
- package/src/internal/client/runtime.js +15 -1
- package/src/version.js +1 -1
- package/types/index.d.ts +6 -0
- package/types/index.d.ts.map +2 -1
package/package.json
CHANGED
package/src/compiler/index.js
CHANGED
|
@@ -3,8 +3,9 @@
|
|
|
3
3
|
/** @import { AST } from './public.js' */
|
|
4
4
|
import { walk as zimmerframe_walk } from 'zimmerframe';
|
|
5
5
|
import { convert } from './legacy.js';
|
|
6
|
-
import { parse as _parse } from './phases/1-parse/index.js';
|
|
6
|
+
import { parse as _parse, Parser } from './phases/1-parse/index.js';
|
|
7
7
|
import { remove_typescript_nodes } from './phases/1-parse/remove_typescript_nodes.js';
|
|
8
|
+
import { parse_stylesheet } from './phases/1-parse/read/style.js';
|
|
8
9
|
import { analyze_component, analyze_module } from './phases/2-analyze/index.js';
|
|
9
10
|
import { transform_component, transform_module } from './phases/3-transform/index.js';
|
|
10
11
|
import { validate_component_options, validate_module_options } from './validate-options.js';
|
|
@@ -118,6 +119,29 @@ export function parse(source, { modern, loose } = {}) {
|
|
|
118
119
|
return to_public_ast(source, ast, modern);
|
|
119
120
|
}
|
|
120
121
|
|
|
122
|
+
/**
|
|
123
|
+
* The parseCss function parses a CSS stylesheet, returning its abstract syntax tree.
|
|
124
|
+
*
|
|
125
|
+
* @param {string} source The CSS source code
|
|
126
|
+
* @returns {Omit<AST.CSS.StyleSheet, 'attributes' | 'content'>}
|
|
127
|
+
*/
|
|
128
|
+
export function parseCss(source) {
|
|
129
|
+
source = remove_bom(source);
|
|
130
|
+
state.reset({ warning: () => false, filename: undefined });
|
|
131
|
+
|
|
132
|
+
state.set_source(source);
|
|
133
|
+
|
|
134
|
+
const parser = Parser.forCss(source);
|
|
135
|
+
const children = parse_stylesheet(parser);
|
|
136
|
+
|
|
137
|
+
return {
|
|
138
|
+
type: 'StyleSheet',
|
|
139
|
+
start: 0,
|
|
140
|
+
end: source.length,
|
|
141
|
+
children
|
|
142
|
+
};
|
|
143
|
+
}
|
|
144
|
+
|
|
121
145
|
/**
|
|
122
146
|
* @param {string} source
|
|
123
147
|
* @param {AST.Root} ast
|
|
@@ -34,6 +34,20 @@ export class Parser {
|
|
|
34
34
|
/** */
|
|
35
35
|
index = 0;
|
|
36
36
|
|
|
37
|
+
/**
|
|
38
|
+
* Creates a minimal parser instance for CSS-only parsing.
|
|
39
|
+
* Skips Svelte component parsing setup.
|
|
40
|
+
* @param {string} source
|
|
41
|
+
* @returns {Parser}
|
|
42
|
+
*/
|
|
43
|
+
static forCss(source) {
|
|
44
|
+
const parser = Object.create(Parser.prototype);
|
|
45
|
+
parser.template = source;
|
|
46
|
+
parser.index = 0;
|
|
47
|
+
parser.loose = false;
|
|
48
|
+
return parser;
|
|
49
|
+
}
|
|
50
|
+
|
|
37
51
|
/** Whether we're parsing in TypeScript mode */
|
|
38
52
|
ts = false;
|
|
39
53
|
|
|
@@ -24,10 +24,11 @@ const REGEX_HTML_COMMENT_CLOSE = /-->/;
|
|
|
24
24
|
*/
|
|
25
25
|
export default function read_style(parser, start, attributes) {
|
|
26
26
|
const content_start = parser.index;
|
|
27
|
-
const children = read_body(parser, '</style');
|
|
27
|
+
const children = read_body(parser, (p) => p.match('</style') || p.index >= p.template.length);
|
|
28
28
|
const content_end = parser.index;
|
|
29
29
|
|
|
30
|
-
parser.
|
|
30
|
+
parser.eat('</style', true);
|
|
31
|
+
parser.read(/^\s*>/);
|
|
31
32
|
|
|
32
33
|
return {
|
|
33
34
|
type: 'StyleSheet',
|
|
@@ -46,20 +47,14 @@ export default function read_style(parser, start, attributes) {
|
|
|
46
47
|
|
|
47
48
|
/**
|
|
48
49
|
* @param {Parser} parser
|
|
49
|
-
* @param {
|
|
50
|
-
* @returns {
|
|
50
|
+
* @param {(parser: Parser) => boolean} finished
|
|
51
|
+
* @returns {Array<AST.CSS.Rule | AST.CSS.Atrule>}
|
|
51
52
|
*/
|
|
52
|
-
function read_body(parser,
|
|
53
|
+
function read_body(parser, finished) {
|
|
53
54
|
/** @type {Array<AST.CSS.Rule | AST.CSS.Atrule>} */
|
|
54
55
|
const children = [];
|
|
55
56
|
|
|
56
|
-
while (parser
|
|
57
|
-
allow_comment_or_whitespace(parser);
|
|
58
|
-
|
|
59
|
-
if (parser.match(close)) {
|
|
60
|
-
return children;
|
|
61
|
-
}
|
|
62
|
-
|
|
57
|
+
while ((allow_comment_or_whitespace(parser), !finished(parser))) {
|
|
63
58
|
if (parser.match('@')) {
|
|
64
59
|
children.push(read_at_rule(parser));
|
|
65
60
|
} else {
|
|
@@ -67,7 +62,7 @@ function read_body(parser, close) {
|
|
|
67
62
|
}
|
|
68
63
|
}
|
|
69
64
|
|
|
70
|
-
|
|
65
|
+
return children;
|
|
71
66
|
}
|
|
72
67
|
|
|
73
68
|
/**
|
|
@@ -627,3 +622,12 @@ function allow_comment_or_whitespace(parser) {
|
|
|
627
622
|
parser.allow_whitespace();
|
|
628
623
|
}
|
|
629
624
|
}
|
|
625
|
+
|
|
626
|
+
/**
|
|
627
|
+
* Parse standalone CSS content (not wrapped in `<style>`).
|
|
628
|
+
* @param {Parser} parser
|
|
629
|
+
* @returns {Array<AST.CSS.Rule | AST.CSS.Atrule>}
|
|
630
|
+
*/
|
|
631
|
+
export function parse_stylesheet(parser) {
|
|
632
|
+
return read_body(parser, (p) => p.index >= p.template.length);
|
|
633
|
+
}
|
|
@@ -80,7 +80,7 @@ export function RegularElement(node, context) {
|
|
|
80
80
|
|
|
81
81
|
// Special case: <select>, <option> or <optgroup> with rich content needs special hydration handling
|
|
82
82
|
// We mark the subtree as dynamic so parent elements properly include the child init code
|
|
83
|
-
if (is_customizable_select_element(node)) {
|
|
83
|
+
if (is_customizable_select_element(node) || node.name === 'selectedcontent') {
|
|
84
84
|
// Mark the element's own fragment as dynamic so it's not treated as static
|
|
85
85
|
node.fragment.metadata.dynamic = true;
|
|
86
86
|
// Also mark ancestor fragments so parents properly include the child init code
|
|
@@ -457,6 +457,18 @@ export function RegularElement(node, context) {
|
|
|
457
457
|
context.state.after_update.push(...element_state.after_update);
|
|
458
458
|
}
|
|
459
459
|
|
|
460
|
+
if (node.name === 'selectedcontent') {
|
|
461
|
+
context.state.init.push(
|
|
462
|
+
b.stmt(
|
|
463
|
+
b.call(
|
|
464
|
+
'$.selectedcontent',
|
|
465
|
+
context.state.node,
|
|
466
|
+
b.arrow([b.id('$$element')], b.assignment('=', context.state.node, b.id('$$element')))
|
|
467
|
+
)
|
|
468
|
+
)
|
|
469
|
+
);
|
|
470
|
+
}
|
|
471
|
+
|
|
460
472
|
if (lookup.has('dir')) {
|
|
461
473
|
// This fixes an issue with Chromium where updates to text content within an element
|
|
462
474
|
// does not update the direction when set to auto. If we just re-assign the dir, this fixes it.
|
|
@@ -117,10 +117,10 @@ export function SvelteElement(node, context) {
|
|
|
117
117
|
);
|
|
118
118
|
|
|
119
119
|
if (dev) {
|
|
120
|
+
statements.push(b.stmt(b.call('$.validate_dynamic_element_tag', get_tag)));
|
|
120
121
|
if (node.fragment.nodes.length > 0) {
|
|
121
122
|
statements.push(b.stmt(b.call('$.validate_void_dynamic_element', get_tag)));
|
|
122
123
|
}
|
|
123
|
-
statements.push(b.stmt(b.call('$.validate_dynamic_element_tag', get_tag)));
|
|
124
124
|
}
|
|
125
125
|
|
|
126
126
|
const location = dev && locator(node.start);
|
|
@@ -29,10 +29,10 @@ export function SvelteElement(node, context) {
|
|
|
29
29
|
tag = b.id(tag_id);
|
|
30
30
|
}
|
|
31
31
|
|
|
32
|
+
context.state.init.push(b.stmt(b.call('$.validate_dynamic_element_tag', b.thunk(tag))));
|
|
32
33
|
if (node.fragment.nodes.length > 0) {
|
|
33
34
|
context.state.init.push(b.stmt(b.call('$.validate_void_dynamic_element', b.thunk(tag))));
|
|
34
35
|
}
|
|
35
|
-
context.state.init.push(b.stmt(b.call('$.validate_dynamic_element_tag', b.thunk(tag))));
|
|
36
36
|
}
|
|
37
37
|
|
|
38
38
|
const state = {
|
|
@@ -1,5 +1,6 @@
|
|
|
1
1
|
import { hydrating, reset, set_hydrate_node, set_hydrating } from '../hydration.js';
|
|
2
2
|
import { create_comment } from '../operations.js';
|
|
3
|
+
import { attach } from './attachments.js';
|
|
3
4
|
|
|
4
5
|
/** @type {boolean | null} */
|
|
5
6
|
let supported = null;
|
|
@@ -20,6 +21,52 @@ function is_supported() {
|
|
|
20
21
|
return supported;
|
|
21
22
|
}
|
|
22
23
|
|
|
24
|
+
/**
|
|
25
|
+
*
|
|
26
|
+
* @param {HTMLElement} element
|
|
27
|
+
* @param {(new_element: HTMLElement) => void} update_element
|
|
28
|
+
*/
|
|
29
|
+
export function selectedcontent(element, update_element) {
|
|
30
|
+
// if it's not supported no need for special logic
|
|
31
|
+
if (!is_supported()) return;
|
|
32
|
+
|
|
33
|
+
// we use the attach function directly just to make sure is executed when is mounted to the dom
|
|
34
|
+
attach(element, () => () => {
|
|
35
|
+
const select = element.closest('select');
|
|
36
|
+
if (!select) return;
|
|
37
|
+
|
|
38
|
+
const observer = new MutationObserver((entries) => {
|
|
39
|
+
var selected = false;
|
|
40
|
+
|
|
41
|
+
for (const entry of entries) {
|
|
42
|
+
if (entry.target === element) {
|
|
43
|
+
// the `<selectedcontent>` already changed, no need to replace it
|
|
44
|
+
return;
|
|
45
|
+
}
|
|
46
|
+
|
|
47
|
+
// if the changes doesn't include the selected `<option>` we don't need to do anything
|
|
48
|
+
selected ||= !!entry.target.parentElement?.closest('option')?.selected;
|
|
49
|
+
}
|
|
50
|
+
|
|
51
|
+
if (selected) {
|
|
52
|
+
// replace the `<selectedcontent>` with a clone
|
|
53
|
+
element.replaceWith((element = /** @type {HTMLElement} */ (element.cloneNode(true))));
|
|
54
|
+
update_element(element);
|
|
55
|
+
}
|
|
56
|
+
});
|
|
57
|
+
|
|
58
|
+
observer.observe(select, {
|
|
59
|
+
childList: true,
|
|
60
|
+
characterData: true,
|
|
61
|
+
subtree: true
|
|
62
|
+
});
|
|
63
|
+
|
|
64
|
+
return () => {
|
|
65
|
+
observer.disconnect();
|
|
66
|
+
};
|
|
67
|
+
});
|
|
68
|
+
}
|
|
69
|
+
|
|
23
70
|
/**
|
|
24
71
|
* Handles rich HTML content inside `<option>`, `<optgroup>`, or `<select>` elements with browser-specific branching.
|
|
25
72
|
* Modern browsers preserve HTML inside options, while older browsers strip it to text only.
|
|
@@ -42,7 +42,7 @@ export {
|
|
|
42
42
|
export { set_class } from './dom/elements/class.js';
|
|
43
43
|
export { apply, event, delegate, replay_events } from './dom/elements/events.js';
|
|
44
44
|
export { autofocus, remove_textarea_child } from './dom/elements/misc.js';
|
|
45
|
-
export { customizable_select } from './dom/elements/customizable-select.js';
|
|
45
|
+
export { customizable_select, selectedcontent } from './dom/elements/customizable-select.js';
|
|
46
46
|
export { set_style } from './dom/elements/style.js';
|
|
47
47
|
export { animation, transition } from './dom/elements/transitions.js';
|
|
48
48
|
export { bind_active_element } from './dom/elements/bindings/document.js';
|
|
@@ -309,6 +309,20 @@ export function update_reaction(reaction) {
|
|
|
309
309
|
if (previous_reaction !== null && previous_reaction !== reaction) {
|
|
310
310
|
read_version++;
|
|
311
311
|
|
|
312
|
+
// update the `rv` of the previous reaction's deps — both existing and new —
|
|
313
|
+
// so that they are not added again
|
|
314
|
+
if (previous_reaction.deps !== null) {
|
|
315
|
+
for (let i = 0; i < previous_skipped_deps; i += 1) {
|
|
316
|
+
previous_reaction.deps[i].rv = read_version;
|
|
317
|
+
}
|
|
318
|
+
}
|
|
319
|
+
|
|
320
|
+
if (previous_deps !== null) {
|
|
321
|
+
for (const dep of previous_deps) {
|
|
322
|
+
dep.rv = read_version;
|
|
323
|
+
}
|
|
324
|
+
}
|
|
325
|
+
|
|
312
326
|
if (untracked_writes !== null) {
|
|
313
327
|
if (previous_untracked_writes === null) {
|
|
314
328
|
previous_untracked_writes = untracked_writes;
|
|
@@ -526,7 +540,7 @@ export function get(signal) {
|
|
|
526
540
|
skipped_deps++;
|
|
527
541
|
} else if (new_deps === null) {
|
|
528
542
|
new_deps = [signal];
|
|
529
|
-
} else
|
|
543
|
+
} else {
|
|
530
544
|
new_deps.push(signal);
|
|
531
545
|
}
|
|
532
546
|
}
|
package/src/version.js
CHANGED
package/types/index.d.ts
CHANGED
|
@@ -884,6 +884,12 @@ declare module 'svelte/compiler' {
|
|
|
884
884
|
modern?: false;
|
|
885
885
|
loose?: boolean;
|
|
886
886
|
} | undefined): Record<string, any>;
|
|
887
|
+
/**
|
|
888
|
+
* The parseCss function parses a CSS stylesheet, returning its abstract syntax tree.
|
|
889
|
+
*
|
|
890
|
+
* @param source The CSS source code
|
|
891
|
+
* */
|
|
892
|
+
export function parseCss(source: string): Omit<AST.CSS.StyleSheet, "attributes" | "content">;
|
|
887
893
|
/**
|
|
888
894
|
* @deprecated Replace this with `import { walk } from 'estree-walker'`
|
|
889
895
|
* */
|
package/types/index.d.ts.map
CHANGED
|
@@ -46,6 +46,7 @@
|
|
|
46
46
|
"createAttachmentKey",
|
|
47
47
|
"compile",
|
|
48
48
|
"compileModule",
|
|
49
|
+
"parseCss",
|
|
49
50
|
"walk",
|
|
50
51
|
"Processed",
|
|
51
52
|
"MarkupPreprocessor",
|
|
@@ -274,6 +275,6 @@
|
|
|
274
275
|
null,
|
|
275
276
|
null
|
|
276
277
|
],
|
|
277
|
-
"mappings": ";;;;;;;;;kBAUiBA,2BAA2BA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;cAkC/BC,eAAeA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;aAwEhBC,kBAAkBA;;;;;;;;;;;;;;;;;;;;;;;;kBAwBbC,SAASA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;cAoCbC,oBAAoBA;;;;;;;;;;;;;;;;;;;;;;;;aAwBrBC,eAAeA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;aAiCfC,cAAcA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;aA6BdC,aAAaA;;;;;;;;;;;;;;;;;;;;;;;kBAuBRC,OAAOA;;;;;;;;;;;;;;;;kBAgBPC,eAAeA;;;;;;;;;;;;;;;;aAgBpBC,YAAYA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;kBA0CPC,IAAIA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;iBCnSLC,cAAcA;;;;;;;;;;;;iBAsBdC,OAAOA;;;;;;;;iBAwBPC,SAASA;;;;;;;;;;;;;;;;;;;;;;iBA0CTC,qBAAqBA;;;;;;;;;;iBA2CrBC,YAAYA;;;;;;;;;;iBAuBZC,WAAWA;iBClNXC,UAAUA;;;;iBC4DVC,gBAAgBA;;;;;MCvEpBC,WAAWA;;;;;iBC2gBPC,SAASA;;;;;;;;;;;;;;;;;;iBA6XTC,IAAIA;;;;;;;;iBCzzBJC,aAAaA;;;;;;;;iBAyBbC,UAAUA;;;;;;;;;;;iBAoBVC,UAAUA;;;;;;iBA2BVC,UAAUA;;;;;;;iBAaVC,cAAcA;;;;;;iBCnGdC,KAAKA;;;;;iBA2BLC,OAAOA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;iBAgNPC,OAAOA;;;;;;
|
|
278
|
+
"mappings": "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",
|
|
278
279
|
"ignoreList": []
|
|
279
280
|
}
|