minifiable-css-renderer.ts — astro Source File
Architecture documentation for minifiable-css-renderer.ts, a typescript file in the astro codebase. 2 imports, 0 dependents.
Entity Profile
Dependency Diagram
graph LR 4df2df7e_7b50_0a76_f17c_a22a7c396706["minifiable-css-renderer.ts"] e92fda44_4a5d_b83b_1a45_958cdae6c91b["./definitions.js"] 4df2df7e_7b50_0a76_f17c_a22a7c396706 --> e92fda44_4a5d_b83b_1a45_958cdae6c91b ea387312_d0a2_bb52_dafc_3872f7307f95["../../src/assets/fonts/types.js"] 4df2df7e_7b50_0a76_f17c_a22a7c396706 --> ea387312_d0a2_bb52_dafc_3872f7307f95 style 4df2df7e_7b50_0a76_f17c_a22a7c396706 fill:#6366f1,stroke:#818cf8,color:#fff
Relationship Graph
Source Code
import type { CssRenderer } from '../definitions.js';
import type { CssProperties } from '../types.js';
// TODO: consider making these public methods
export function renderFontFace(properties: CssProperties, minify: boolean): string {
// Line feed
const lf = minify ? '' : `\n`;
// Space
const sp = minify ? '' : ' ';
return `@font-face${sp}{${lf}${Object.entries(properties)
.filter(([, value]) => Boolean(value))
.map(([key, value]) => `${sp}${sp}${key}:${sp}${value};`)
.join(lf)}${lf}}${lf}`;
}
export function renderCssVariable(key: string, values: Array<string>, minify: boolean): string {
// Line feed
const lf = minify ? '' : `\n`;
// Space
const sp = minify ? '' : ' ';
return `:root${sp}{${lf}${sp}${sp}${key}:${sp}${values.map((v) => handleValueWithSpaces(v)).join(`,${sp}`)};${lf}}${lf}`;
}
export function withFamily(family: string, properties: CssProperties): CssProperties {
return {
'font-family': handleValueWithSpaces(family),
...properties,
};
}
const SPACE_RE = /\s/;
/** If the value contains spaces (which would be incorrectly interpreted), we wrap it in quotes. */
export function handleValueWithSpaces(value: string): string {
if (SPACE_RE.test(value)) {
return JSON.stringify(value);
}
return value;
}
export class MinifiableCssRenderer implements CssRenderer {
readonly #minify: boolean;
constructor({ minify }: { minify: boolean }) {
this.#minify = minify;
}
generateFontFace(family: string, properties: CssProperties): string {
return renderFontFace(withFamily(family, properties), this.#minify);
}
generateCssVariable(key: string, values: Array<string>): string {
return renderCssVariable(key, values, this.#minify);
}
}
Domain
Subdomains
Classes
Dependencies
- ../../src/assets/fonts/types.js
- ./definitions.js
Source
Frequently Asked Questions
What does minifiable-css-renderer.ts do?
minifiable-css-renderer.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 minifiable-css-renderer.ts?
minifiable-css-renderer.ts defines 4 function(s): handleValueWithSpaces, renderCssVariable, renderFontFace, withFamily.
What does minifiable-css-renderer.ts depend on?
minifiable-css-renderer.ts imports 2 module(s): ../../src/assets/fonts/types.js, ./definitions.js.
Where is minifiable-css-renderer.ts in the architecture?
minifiable-css-renderer.ts is located at packages/astro/src/assets/fonts/infra/minifiable-css-renderer.ts (domain: CoreAstro, subdomain: RenderingEngine, directory: packages/astro/src/assets/fonts/infra).
Analyze Your Own Codebase
Get architecture documentation, dependency graphs, and domain analysis for your codebase in minutes.
Try Supermodel Free