if_block() — svelte Function Reference
Architecture documentation for the if_block() function in if.js from the svelte codebase.
Entity Profile
Dependency Diagram
graph TD 1c26aae4_d98a_69f4_58e6_458a25a8ffb9["if_block()"] 35d60eb3_a123_b735_48e0_4fce90c205ae["if.js"] 1c26aae4_d98a_69f4_58e6_458a25a8ffb9 -->|defined in| 35d60eb3_a123_b735_48e0_4fce90c205ae b31601aa_35ce_7827_5394_99fb97fa27d2["hydrate_next()"] 1c26aae4_d98a_69f4_58e6_458a25a8ffb9 -->|calls| b31601aa_35ce_7827_5394_99fb97fa27d2 965d3fe6_c7da_0708_eb2c_13a616bc4bca["read_hydration_instruction()"] 1c26aae4_d98a_69f4_58e6_458a25a8ffb9 -->|calls| 965d3fe6_c7da_0708_eb2c_13a616bc4bca 8bcc1a1c_73ab_4fe7_59be_b28bbe88fd3e["skip_nodes()"] 1c26aae4_d98a_69f4_58e6_458a25a8ffb9 -->|calls| 8bcc1a1c_73ab_4fe7_59be_b28bbe88fd3e 40f27ad3_30bb_8f2a_3fb3_757088cf7428["set_hydrate_node()"] 1c26aae4_d98a_69f4_58e6_458a25a8ffb9 -->|calls| 40f27ad3_30bb_8f2a_3fb3_757088cf7428 f5b61c69_d41c_bdb7_b931_5b8b3374332c["set_hydrating()"] 1c26aae4_d98a_69f4_58e6_458a25a8ffb9 -->|calls| f5b61c69_d41c_bdb7_b931_5b8b3374332c 8783b6d3_ff2d_7032_cf54_f6a71da85e37["ensure()"] 1c26aae4_d98a_69f4_58e6_458a25a8ffb9 -->|calls| 8783b6d3_ff2d_7032_cf54_f6a71da85e37 1bd7dd6f_4c22_6f44_9747_fc5ea0deaa7b["block()"] 1c26aae4_d98a_69f4_58e6_458a25a8ffb9 -->|calls| 1bd7dd6f_4c22_6f44_9747_fc5ea0deaa7b style 1c26aae4_d98a_69f4_58e6_458a25a8ffb9 fill:#6366f1,stroke:#818cf8,color:#fff
Relationship Graph
Source Code
packages/svelte/src/internal/client/dom/blocks/if.js lines 21–82
export function if_block(node, fn, elseif = false) {
if (hydrating) {
hydrate_next();
}
var branches = new BranchManager(node);
var flags = elseif ? EFFECT_TRANSPARENT : 0;
/**
* @param {number | false} key
* @param {null | ((anchor: Node) => void)} fn
*/
function update_branch(key, fn) {
if (hydrating) {
const data = read_hydration_instruction(node);
/**
* @type {number | false}
* "[" = branch 0, "[1" = branch 1, "[2" = branch 2, ..., "[!" = else (false)
*/
var hydrated_key;
if (data === HYDRATION_START) {
hydrated_key = 0;
} else if (data === HYDRATION_START_ELSE) {
hydrated_key = false;
} else {
hydrated_key = parseInt(data.substring(1)); // "[1", "[2", etc.
}
if (key !== hydrated_key) {
// Hydration mismatch: remove everything inside the anchor and start fresh.
// This could happen with `{#if browser}...{/if}`, for example
var anchor = skip_nodes();
set_hydrate_node(anchor);
branches.anchor = anchor;
set_hydrating(false);
branches.ensure(key, fn);
set_hydrating(true);
return;
}
}
branches.ensure(key, fn);
}
block(() => {
var has_branch = false;
fn((fn, key = 0) => {
has_branch = true;
update_branch(key, fn);
});
if (!has_branch) {
update_branch(false, null);
}
}, flags);
}
Domain
Subdomains
Calls
Source
Frequently Asked Questions
What does if_block() do?
if_block() is a function in the svelte codebase, defined in packages/svelte/src/internal/client/dom/blocks/if.js.
Where is if_block() defined?
if_block() is defined in packages/svelte/src/internal/client/dom/blocks/if.js at line 21.
What does if_block() call?
if_block() calls 7 function(s): block, ensure, hydrate_next, read_hydration_instruction, set_hydrate_node, set_hydrating, skip_nodes.
Analyze Your Own Codebase
Get architecture documentation, dependency graphs, and domain analysis for your codebase in minutes.
Try Supermodel Free