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
Source
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