transition.ts — astro Source File
Architecture documentation for transition.ts, a typescript file in the astro codebase. 5 imports, 0 dependents.
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
Functions
Classes
Types
Dependencies
- ../../transitions/index.js
- ../types/public/internal.js
- ./escape.js
- ./view-transitions.js
- cssesc
Source
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