template.SvelteComponent() — svelte Function Reference
Architecture documentation for the template.SvelteComponent() function in index.js from the svelte codebase.
Entity Profile
Dependency Diagram
graph TD 7c4b9e22_124a_58a4_bd27_fe6e869ae9b4["template.SvelteComponent()"] cab41022_1b55_3b7a_06c6_b90763bbea47["index.js"] 7c4b9e22_124a_58a4_bd27_fe6e869ae9b4 -->|defined in| cab41022_1b55_3b7a_06c6_b90763bbea47 cdc1fb24_8bb0_cade_bc99_13f6efb7c385["migrate_slot_usage()"] 7c4b9e22_124a_58a4_bd27_fe6e869ae9b4 -->|calls| cdc1fb24_8bb0_cade_bc99_13f6efb7c385 8980dd2b_1c7a_2c03_2400_e31c60358534["generate()"] 7c4b9e22_124a_58a4_bd27_fe6e869ae9b4 -->|calls| 8980dd2b_1c7a_2c03_2400_e31c60358534 627dc2f8_4dbc_5bb1_8f54_cee503e17098["get()"] 7c4b9e22_124a_58a4_bd27_fe6e869ae9b4 -->|calls| 627dc2f8_4dbc_5bb1_8f54_cee503e17098 style 7c4b9e22_124a_58a4_bd27_fe6e869ae9b4 fill:#6366f1,stroke:#818cf8,color:#fff
Relationship Graph
Source Code
packages/svelte/src/compiler/migrate/index.js lines 1142–1211
SvelteComponent(node, { state, next, path }) {
next();
migrate_slot_usage(node, path, state);
let expression = state.str
.snip(
/** @type {number} */ (node.expression.start),
/** @type {number} */ (node.expression.end)
)
.toString();
if (
(node.expression.type !== 'Identifier' && node.expression.type !== 'MemberExpression') ||
!regex_valid_component_name.test(expression)
) {
let current_expression = expression;
expression = state.scope.generate('SvelteComponent');
let needs_derived = true;
for (let i = path.length - 1; i >= 0; i--) {
const part = path[i];
if (
part.type === 'EachBlock' ||
part.type === 'AwaitBlock' ||
part.type === 'IfBlock' ||
part.type === 'SnippetBlock' ||
part.type === 'Component' ||
part.type === 'SvelteComponent'
) {
let position = node.start;
if (i !== path.length - 1) {
for (let modifier = 1; modifier < path.length - i; modifier++) {
const path_part = path[i + modifier];
if ('start' in path_part) {
position = /** @type {number} */ (path_part.start);
break;
}
}
}
const indent = state.str.original.substring(
state.str.original.lastIndexOf('\n', position) + 1,
position
);
state.str.appendRight(
position,
`{@const ${expression} = ${current_expression}}\n${indent}`
);
needs_derived = false;
break;
}
}
if (needs_derived) {
if (state.derived_components.has(current_expression)) {
expression = /** @type {string} */ (state.derived_components.get(current_expression));
} else {
state.derived_components.set(current_expression, expression);
}
}
}
state.str.overwrite(node.start + 1, node.start + node.name.length + 1, expression);
if (state.str.original.substring(node.end - node.name.length - 1, node.end - 1) === node.name) {
state.str.overwrite(node.end - node.name.length - 1, node.end - 1, expression);
}
let this_pos = state.str.original.lastIndexOf('this', node.expression.start);
while (!state.str.original.charAt(this_pos - 1).trim()) this_pos--;
const end_pos = state.str.original.indexOf('}', node.expression.end) + 1;
state.str.remove(this_pos, end_pos);
},
Domain
Subdomains
Source
Frequently Asked Questions
What does template.SvelteComponent() do?
template.SvelteComponent() is a function in the svelte codebase, defined in packages/svelte/src/compiler/migrate/index.js.
Where is template.SvelteComponent() defined?
template.SvelteComponent() is defined in packages/svelte/src/compiler/migrate/index.js at line 1142.
What does template.SvelteComponent() call?
template.SvelteComponent() calls 3 function(s): generate, get, migrate_slot_usage.
Analyze Your Own Codebase
Get architecture documentation, dependency graphs, and domain analysis for your codebase in minutes.
Try Supermodel Free