Home / File/ transition.ts — astro Source File

transition.ts — astro Source File

Architecture documentation for transition.ts, a typescript file in the astro codebase. 5 imports, 0 dependents.

File typescript CoreAstro RenderingEngine 5 imports 15 functions 1 classes

Entity Profile

Dependency Diagram

graph LR
  f4a9c12d_07bd_6de6_237f_8553c55f6fef["transition.ts"]
  981ca04d_e859_2809_fafa_ae3f015d6643["../../transitions/index.js"]
  f4a9c12d_07bd_6de6_237f_8553c55f6fef --> 981ca04d_e859_2809_fafa_ae3f015d6643
  10d4e39f_edb6_3e34_aa93_ae1211e7da05["../types/public/internal.js"]
  f4a9c12d_07bd_6de6_237f_8553c55f6fef --> 10d4e39f_edb6_3e34_aa93_ae1211e7da05
  7cae395d_a0c9_4ad5_6419_c968c5ad182f["./view-transitions.js"]
  f4a9c12d_07bd_6de6_237f_8553c55f6fef --> 7cae395d_a0c9_4ad5_6419_c968c5ad182f
  a7eea85d_ea97_57b1_9a24_f99face6a97d["./escape.js"]
  f4a9c12d_07bd_6de6_237f_8553c55f6fef --> a7eea85d_ea97_57b1_9a24_f99face6a97d
  1ed9b65b_d369_918a_0247_cab8b501440b["cssesc"]
  f4a9c12d_07bd_6de6_237f_8553c55f6fef --> 1ed9b65b_d369_918a_0247_cab8b501440b
  style f4a9c12d_07bd_6de6_237f_8553c55f6fef fill:#6366f1,stroke:#818cf8,color:#fff

Relationship Graph

Source Code

import cssesc from 'cssesc';
import { fade, slide } from '../../transitions/index.js';
import type { SSRResult } from '../../types/public/internal.js';
import type {
	TransitionAnimation,
	TransitionAnimationPair,
	TransitionAnimationValue,
	TransitionDirectionalAnimations,
} from '../../types/public/view-transitions.js';
import { markHTMLString } from './escape.js';

const transitionNameMap = new WeakMap<SSRResult, number>();
function incrementTransitionNumber(result: SSRResult) {
	let num = 1;
	if (transitionNameMap.has(result)) {
		num = transitionNameMap.get(result)! + 1;
	}
	transitionNameMap.set(result, num);
	return num;
}

export function createTransitionScope(result: SSRResult, hash: string) {
	const num = incrementTransitionNumber(result);
	return `astro-${hash}-${num}`;
}

type Entries<T extends Record<string, any>> = Iterable<[keyof T, T[keyof T]]>;

const getAnimations = (name: TransitionAnimationValue) => {
	if (name === 'fade') return fade();
	if (name === 'slide') return slide();
	if (typeof name === 'object') return name;
};

const addPairs = (
	animations: TransitionDirectionalAnimations | Record<string, TransitionAnimationPair>,
	stylesheet: ViewTransitionStyleSheet,
) => {
	for (const [direction, images] of Object.entries(animations) as Entries<typeof animations>) {
		for (const [image, rules] of Object.entries(images) as Entries<
			(typeof animations)[typeof direction]
		>) {
			stylesheet.addAnimationPair(direction, image, rules);
		}
	}
};

// Chrome (121) accepts custom-idents for view-transition-names as generated by cssesc,
// but it just ignores them during view transitions if they contain escaped 7-bit ASCII characters
// like \<space> or \. A special case are digits and minus at the beginning of the string,
// which cssesc also encodes as \xx
const reEncodeValidChars: string[] =
	'0123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ-_'
		.split('')
		.reduce((v, c) => ((v[c.charCodeAt(0)] = c), v), [] as string[]);
const reEncodeInValidStart: string[] = '-0123456789_'
	.split('')
	.reduce((v, c) => ((v[c.charCodeAt(0)] = c), v), [] as string[]);

function reEncode(s: string) {
// ... (206 more lines)

Domain

Subdomains

Dependencies

  • ../../transitions/index.js
  • ../types/public/internal.js
  • ./escape.js
  • ./view-transitions.js
  • cssesc

Frequently Asked Questions

What does transition.ts do?
transition.ts is a source file in the astro codebase, written in typescript. It belongs to the CoreAstro domain, RenderingEngine subdomain.
What functions are defined in transition.ts?
transition.ts defines 15 function(s): addAnimationProperty, addPairs, animationBuilder, createAnimationScope, createTransitionScope, getAnimations, incrementTransitionNumber, k, reEncode, reEncodeInValidStart, and 5 more.
What does transition.ts depend on?
transition.ts imports 5 module(s): ../../transitions/index.js, ../types/public/internal.js, ./escape.js, ./view-transitions.js, cssesc.
Where is transition.ts in the architecture?
transition.ts is located at packages/astro/src/runtime/server/transition.ts (domain: CoreAstro, subdomain: RenderingEngine, directory: packages/astro/src/runtime/server).

Analyze Your Own Codebase

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

Try Supermodel Free