Home / Function/ template.SvelteComponent() — svelte Function Reference

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

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