Home / Function/ IfBlock() — svelte Function Reference

IfBlock() — svelte Function Reference

Architecture documentation for the IfBlock() function in IfBlock.js from the svelte codebase.

Entity Profile

Dependency Diagram

graph TD
  cca2c071_5346_641f_a369_cca5b0f6227d["IfBlock()"]
  591cfb76_62a8_283f_dc44_14d0d9880f0c["IfBlock.js"]
  cca2c071_5346_641f_a369_cca5b0f6227d -->|defined in| 591cfb76_62a8_283f_dc44_14d0d9880f0c
  6487918e_a8f7_315c_caf5_9694fc4edde7["create_child_block()"]
  cca2c071_5346_641f_a369_cca5b0f6227d -->|calls| 6487918e_a8f7_315c_caf5_9694fc4edde7
  9cf014c4_f551_2661_0229_f990b01327ac["blockers()"]
  cca2c071_5346_641f_a369_cca5b0f6227d -->|calls| 9cf014c4_f551_2661_0229_f990b01327ac
  style cca2c071_5346_641f_a369_cca5b0f6227d fill:#6366f1,stroke:#818cf8,color:#fff

Relationship Graph

Source Code

packages/svelte/src/compiler/phases/3-transform/server/visitors/IfBlock.js lines 11–48

export function IfBlock(node, context) {
	const consequent = /** @type {BlockStatement} */ (context.visit(node.consequent));
	consequent.body.unshift(b.stmt(b.call(b.id('$$renderer.push'), block_open)));

	/** @type {IfStatement} */
	let if_statement = b.if(/** @type {Expression} */ (context.visit(node.test)), consequent);

	let index = 1;
	let current_if = if_statement;
	let alt = node.alternate;

	// Walk the else-if chain, flattening branches
	for (const elseif of node.metadata.flattened ?? []) {
		const branch = /** @type {BlockStatement} */ (context.visit(elseif.consequent));
		branch.body.unshift(b.stmt(b.call(b.id('$$renderer.push'), b.literal(`<!--[${index++}-->`))));

		current_if = current_if.alternate = b.if(
			/** @type {Expression} */ (context.visit(elseif.test)),
			branch
		);
		alt = elseif.alternate;
	}

	// Handle final else (or remaining async chain)
	const final_alternate = alt ? /** @type {BlockStatement} */ (context.visit(alt)) : b.block([]);

	final_alternate.body.unshift(b.stmt(b.call(b.id('$$renderer.push'), block_open_else)));
	current_if.alternate = final_alternate;

	context.state.template.push(
		...create_child_block(
			[if_statement],
			node.metadata.expression.blockers(),
			node.metadata.expression.has_await
		),
		block_close
	);
}

Domain

Subdomains

Frequently Asked Questions

What does IfBlock() do?
IfBlock() is a function in the svelte codebase, defined in packages/svelte/src/compiler/phases/3-transform/server/visitors/IfBlock.js.
Where is IfBlock() defined?
IfBlock() is defined in packages/svelte/src/compiler/phases/3-transform/server/visitors/IfBlock.js at line 11.
What does IfBlock() call?
IfBlock() calls 2 function(s): blockers, create_child_block.

Analyze Your Own Codebase

Get architecture documentation, dependency graphs, and domain analysis for your codebase in minutes.

Try Supermodel Free