Home / Function/ ensure() — svelte Function Reference

ensure() — svelte Function Reference

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

Entity Profile

Dependency Diagram

graph TD
  8783b6d3_ff2d_7032_cf54_f6a71da85e37["ensure()"]
  60ab4ae8_779f_562b_010b_c2c26a4235d8["BranchManager"]
  8783b6d3_ff2d_7032_cf54_f6a71da85e37 -->|defined in| 60ab4ae8_779f_562b_010b_c2c26a4235d8
  1c26aae4_d98a_69f4_58e6_458a25a8ffb9["if_block()"]
  1c26aae4_d98a_69f4_58e6_458a25a8ffb9 -->|calls| 8783b6d3_ff2d_7032_cf54_f6a71da85e37
  821ef2fc_9e43_0097_23f6_64596cef64f8["key()"]
  821ef2fc_9e43_0097_23f6_64596cef64f8 -->|calls| 8783b6d3_ff2d_7032_cf54_f6a71da85e37
  88c21c85_2180_c371_713e_22159a977304["snippet()"]
  88c21c85_2180_c371_713e_22159a977304 -->|calls| 8783b6d3_ff2d_7032_cf54_f6a71da85e37
  3c2cd3fa_01cb_7754_d947_c844c5968e02["component()"]
  3c2cd3fa_01cb_7754_d947_c844c5968e02 -->|calls| 8783b6d3_ff2d_7032_cf54_f6a71da85e37
  0ea8cc86_b858_f4aa_3e5d_68ffcb0df96a["element()"]
  0ea8cc86_b858_f4aa_3e5d_68ffcb0df96a -->|calls| 8783b6d3_ff2d_7032_cf54_f6a71da85e37
  6b775363_a430_a650_b5bb_43f6c298e1fe["await_block()"]
  6b775363_a430_a650_b5bb_43f6c298e1fe -->|calls| 8783b6d3_ff2d_7032_cf54_f6a71da85e37
  2ec0d2fd_8bbc_b2ba_53ae_f2da02bb3ba5["ensure()"]
  8783b6d3_ff2d_7032_cf54_f6a71da85e37 -->|calls| 2ec0d2fd_8bbc_b2ba_53ae_f2da02bb3ba5
  c4c2548c_902e_185e_193f_a8d4a30d7f72["should_defer_append()"]
  8783b6d3_ff2d_7032_cf54_f6a71da85e37 -->|calls| c4c2548c_902e_185e_193f_a8d4a30d7f72
  ec54e18a_a454_5d8c_9e00_7bc16e4f49c4["create_text()"]
  8783b6d3_ff2d_7032_cf54_f6a71da85e37 -->|calls| ec54e18a_a454_5d8c_9e00_7bc16e4f49c4
  4ca1b5f2_087e_afec_72d9_534a30fbfe1f["branch()"]
  8783b6d3_ff2d_7032_cf54_f6a71da85e37 -->|calls| 4ca1b5f2_087e_afec_72d9_534a30fbfe1f
  4884c8a4_7cc6_1b32_b689_ac96e3d81e91["unskip_effect()"]
  8783b6d3_ff2d_7032_cf54_f6a71da85e37 -->|calls| 4884c8a4_7cc6_1b32_b689_ac96e3d81e91
  5d586c82_3240_946e_57e6_6b7c46e8825e["skip_effect()"]
  8783b6d3_ff2d_7032_cf54_f6a71da85e37 -->|calls| 5d586c82_3240_946e_57e6_6b7c46e8825e
  9a3ccb07_fa02_c4b4_d89d_ee0b6ed474cb["oncommit()"]
  8783b6d3_ff2d_7032_cf54_f6a71da85e37 -->|calls| 9a3ccb07_fa02_c4b4_d89d_ee0b6ed474cb
  style 8783b6d3_ff2d_7032_cf54_f6a71da85e37 fill:#6366f1,stroke:#818cf8,color:#fff

Relationship Graph

Source Code

packages/svelte/src/internal/client/dom/blocks/branches.js lines 175–226

	ensure(key, fn) {
		var batch = /** @type {Batch} */ (current_batch);
		var defer = should_defer_append();

		if (fn && !this.#onscreen.has(key) && !this.#offscreen.has(key)) {
			if (defer) {
				var fragment = document.createDocumentFragment();
				var target = create_text();

				fragment.append(target);

				this.#offscreen.set(key, {
					effect: branch(() => fn(target)),
					fragment
				});
			} else {
				this.#onscreen.set(
					key,
					branch(() => fn(this.anchor))
				);
			}
		}

		this.#batches.set(batch, key);

		if (defer) {
			for (const [k, effect] of this.#onscreen) {
				if (k === key) {
					batch.unskip_effect(effect);
				} else {
					batch.skip_effect(effect);
				}
			}

			for (const [k, branch] of this.#offscreen) {
				if (k === key) {
					batch.unskip_effect(branch.effect);
				} else {
					batch.skip_effect(branch.effect);
				}
			}

			batch.oncommit(this.#commit);
			batch.ondiscard(this.#discard);
		} else {
			if (hydrating) {
				this.anchor = hydrate_node;
			}

			this.#commit();
		}
	}

Domain

Subdomains

Frequently Asked Questions

What does ensure() do?
ensure() is a function in the svelte codebase, defined in packages/svelte/src/internal/client/dom/blocks/branches.js.
Where is ensure() defined?
ensure() is defined in packages/svelte/src/internal/client/dom/blocks/branches.js at line 175.
What does ensure() call?
ensure() calls 8 function(s): branch, create_text, ensure, oncommit, ondiscard, should_defer_append, skip_effect, unskip_effect.
What calls ensure()?
ensure() is called by 6 function(s): await_block, component, element, if_block, key, snippet.

Analyze Your Own Codebase

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

Try Supermodel Free