Home / File/ transitions.js — svelte Source File

transitions.js — svelte Source File

Architecture documentation for transitions.js, a javascript file in the svelte codebase. 16 imports, 1 dependents.

File javascript ClientRuntime Hydration 16 imports 1 dependents 8 functions

Entity Profile

Dependency Diagram

graph LR
  e29c417d_6c26_6125_97f5_600e95e02dac["transitions.js"]
  cb946435_ce66_d1e8_6bee_287bdb07e7c5["utils.js"]
  e29c417d_6c26_6125_97f5_600e95e02dac --> cb946435_ce66_d1e8_6bee_287bdb07e7c5
  fa007f2b_f437_c5ef_5c2d_ea8b5902500f["noop"]
  e29c417d_6c26_6125_97f5_600e95e02dac --> fa007f2b_f437_c5ef_5c2d_ea8b5902500f
  cf9fafcc_74cf_96c6_92b8_d5c64c62efa0["is_function"]
  e29c417d_6c26_6125_97f5_600e95e02dac --> cf9fafcc_74cf_96c6_92b8_d5c64c62efa0
  1ae6fa4e_16ee_acdf_5e28_17eb0819fddb["effects.js"]
  e29c417d_6c26_6125_97f5_600e95e02dac --> 1ae6fa4e_16ee_acdf_5e28_17eb0819fddb
  a985ae40_8ef8_7ef2_adad_116fbf97e70c["effect"]
  e29c417d_6c26_6125_97f5_600e95e02dac --> a985ae40_8ef8_7ef2_adad_116fbf97e70c
  bde4209f_8ffc_1594_4024_b1835a44bcf6["runtime.js"]
  e29c417d_6c26_6125_97f5_600e95e02dac --> bde4209f_8ffc_1594_4024_b1835a44bcf6
  a814b193_e12a_4037_c3c8_dfd45f3bd0bb["untrack"]
  e29c417d_6c26_6125_97f5_600e95e02dac --> a814b193_e12a_4037_c3c8_dfd45f3bd0bb
  385470d9_b5f1_1cd1_d8da_e61454f3e60a["loop.js"]
  e29c417d_6c26_6125_97f5_600e95e02dac --> 385470d9_b5f1_1cd1_d8da_e61454f3e60a
  185b398a_1ddd_d231_9999_8110452fa052["loop"]
  e29c417d_6c26_6125_97f5_600e95e02dac --> 185b398a_1ddd_d231_9999_8110452fa052
  deb813bb_c5d2_3dfd_2554_606359abaa83["render.js"]
  e29c417d_6c26_6125_97f5_600e95e02dac --> deb813bb_c5d2_3dfd_2554_606359abaa83
  73865c3c_2786_c9ac_d34f_b51d28b3a29e["constants.js"]
  e29c417d_6c26_6125_97f5_600e95e02dac --> 73865c3c_2786_c9ac_d34f_b51d28b3a29e
  8e9a8b22_9754_09a3_8bf1_af0aeb68deca["task.js"]
  e29c417d_6c26_6125_97f5_600e95e02dac --> 8e9a8b22_9754_09a3_8bf1_af0aeb68deca
  2cab0f64_6d19_d981_66e2_d2555c252702["queue_micro_task"]
  e29c417d_6c26_6125_97f5_600e95e02dac --> 2cab0f64_6d19_d981_66e2_d2555c252702
  af7441d2_339a_2db1_88df_90dba2875c10["shared.js"]
  e29c417d_6c26_6125_97f5_600e95e02dac --> af7441d2_339a_2db1_88df_90dba2875c10
  style e29c417d_6c26_6125_97f5_600e95e02dac fill:#6366f1,stroke:#818cf8,color:#fff

Relationship Graph

Source Code

/** @import { AnimateFn, Animation, AnimationConfig, EachItem, Effect, EffectNodes, TransitionFn, TransitionManager } from '#client' */
import { noop, is_function } from '../../../shared/utils.js';
import { effect } from '../../reactivity/effects.js';
import { active_effect, untrack } from '../../runtime.js';
import { loop } from '../../loop.js';
import { should_intro } from '../../render.js';
import { TRANSITION_GLOBAL, TRANSITION_IN, TRANSITION_OUT } from '../../../../constants.js';
import { BLOCK_EFFECT, EFFECT_RAN, EFFECT_TRANSPARENT } from '#client/constants';
import { queue_micro_task } from '../task.js';
import { without_reactive_context } from './bindings/shared.js';

/**
 * @param {Element} element
 * @param {'introstart' | 'introend' | 'outrostart' | 'outroend'} type
 * @returns {void}
 */
function dispatch_event(element, type) {
	without_reactive_context(() => {
		element.dispatchEvent(new CustomEvent(type));
	});
}

/**
 * Converts a property to the camel-case format expected by Element.animate(), KeyframeEffect(), and KeyframeEffect.setKeyframes().
 * @param {string} style
 * @returns {string}
 */
function css_property_to_camelcase(style) {
	// in compliance with spec
	if (style === 'float') return 'cssFloat';
	if (style === 'offset') return 'cssOffset';

	// do not rename custom @properties
	if (style.startsWith('--')) return style;

	const parts = style.split('-');
	if (parts.length === 1) return parts[0];
	return (
		parts[0] +
		parts
			.slice(1)
			.map(/** @param {any} word */ (word) => word[0].toUpperCase() + word.slice(1))
			.join('')
	);
}

/**
 * @param {string} css
 * @returns {Keyframe}
 */
function css_to_keyframe(css) {
	/** @type {Keyframe} */
	const keyframe = {};
	const parts = css.split(';');
	for (const part of parts) {
		const [property, value] = part.split(':');
		if (!property || value === undefined) break;

		const formatted_property = css_property_to_camelcase(property.trim());
		keyframe[formatted_property] = value.trim();
// ... (412 more lines)

Domain

Subdomains

Frequently Asked Questions

What does transitions.js do?
transitions.js is a source file in the svelte codebase, written in javascript. It belongs to the ClientRuntime domain, Hydration subdomain.
What functions are defined in transitions.js?
transitions.js defines 8 function(s): animate, animation, css_property_to_camelcase, css_to_keyframe, dispatch_event, linear, set_animation_effect_override, transition.
What does transitions.js depend on?
transitions.js imports 16 module(s): constants, constants.js, effect, effects.js, is_function, loop, loop.js, noop, and 8 more.
What files import transitions.js?
transitions.js is imported by 1 file(s): svelte-element.js.
Where is transitions.js in the architecture?
transitions.js is located at packages/svelte/src/internal/client/dom/elements/transitions.js (domain: ClientRuntime, subdomain: Hydration, directory: packages/svelte/src/internal/client/dom/elements).

Analyze Your Own Codebase

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

Try Supermodel Free