Home / Function/ tweened() — svelte Function Reference

tweened() — svelte Function Reference

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

Entity Profile

Dependency Diagram

graph TD
  cc3dbfb4_f7d6_e5af_e4aa_42d1354dade9["tweened()"]
  99a316ef_52a9_1ecb_3a20_489761af28ad["tweened.js"]
  cc3dbfb4_f7d6_e5af_e4aa_42d1354dade9 -->|defined in| 99a316ef_52a9_1ecb_3a20_489761af28ad
  ba16ff3e_8a18_d3c4_15e9_96304b539f51["writable()"]
  cc3dbfb4_f7d6_e5af_e4aa_42d1354dade9 -->|calls| ba16ff3e_8a18_d3c4_15e9_96304b539f51
  eba6d905_b0bc_b5a4_beb4_5636a78d57a5["set()"]
  cc3dbfb4_f7d6_e5af_e4aa_42d1354dade9 -->|calls| eba6d905_b0bc_b5a4_beb4_5636a78d57a5
  06e615dd_b546_019b_150f_91f3aec71a6b["now()"]
  cc3dbfb4_f7d6_e5af_e4aa_42d1354dade9 -->|calls| 06e615dd_b546_019b_150f_91f3aec71a6b
  185b398a_1ddd_d231_9999_8110452fa052["loop()"]
  cc3dbfb4_f7d6_e5af_e4aa_42d1354dade9 -->|calls| 185b398a_1ddd_d231_9999_8110452fa052
  style cc3dbfb4_f7d6_e5af_e4aa_42d1354dade9 fill:#6366f1,stroke:#818cf8,color:#fff

Relationship Graph

Source Code

packages/svelte/src/motion/tweened.js lines 90–160

export function tweened(value, defaults = {}) {
	const store = writable(value);
	/** @type {Task} */
	let task;
	let target_value = value;
	/**
	 * @param {T} new_value
	 * @param {TweenedOptions<T>} [opts]
	 */
	function set(new_value, opts) {
		target_value = new_value;

		if (value == null) {
			store.set((value = new_value));
			return Promise.resolve();
		}

		/** @type {Task | null} */
		let previous_task = task;

		let started = false;
		let {
			delay = 0,
			duration = 400,
			easing = linear,
			interpolate = get_interpolator
		} = { ...defaults, ...opts };

		if (duration === 0) {
			if (previous_task) {
				previous_task.abort();
				previous_task = null;
			}
			store.set((value = target_value));
			return Promise.resolve();
		}

		const start = raf.now() + delay;

		/** @type {(t: number) => T} */
		let fn;
		task = loop((now) => {
			if (now < start) return true;
			if (!started) {
				fn = interpolate(/** @type {any} */ (value), new_value);
				if (typeof duration === 'function')
					duration = duration(/** @type {any} */ (value), new_value);
				started = true;
			}
			if (previous_task) {
				previous_task.abort();
				previous_task = null;
			}
			const elapsed = now - start;
			if (elapsed > /** @type {number} */ (duration)) {
				store.set((value = new_value));
				return false;
			}
			// @ts-ignore
			store.set((value = fn(easing(elapsed / duration))));
			return true;
		});
		return task.promise;
	}
	return {
		set,
		update: (fn, opts) =>
			set(fn(/** @type {any} */ (target_value), /** @type {any} */ (value)), opts),
		subscribe: store.subscribe
	};
}

Subdomains

Frequently Asked Questions

What does tweened() do?
tweened() is a function in the svelte codebase, defined in packages/svelte/src/motion/tweened.js.
Where is tweened() defined?
tweened() is defined in packages/svelte/src/motion/tweened.js at line 90.
What does tweened() call?
tweened() calls 4 function(s): loop, now, set, writable.

Analyze Your Own Codebase

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

Try Supermodel Free