@pmndrs/uikit
Version:
Build performant 3D user interfaces with Three.js and yoga.
40 lines (39 loc) • 1.7 kB
TypeScript
import { Font } from './font.js';
import { Signal } from '@preact/signals-core';
import { MergedProperties } from '../properties/merged.js';
import { CustomLayouting } from '../internals.js';
export type GlyphLayoutLine = {
charIndexOffset: number;
charLength: number;
nonWhitespaceCharLength: number;
nonWhitespaceWidth: number;
whitespacesBetween: number;
};
export type GlyphLayout = {
lines: Array<GlyphLayoutLine>;
availableWidth: number;
availableHeight: number;
} & GlyphLayoutProperties;
export type GlyphProperties = Partial<Omit<GlyphLayoutProperties, 'text' | 'font'>>;
export type GlyphLayoutProperties = {
text: string;
font: Font;
letterSpacing: number;
lineHeight: number | `${number}%`;
fontSize: number;
wordBreak: keyof typeof wrappers;
};
export declare function computedCustomLayouting(properties: Signal<MergedProperties>, fontSignal: Signal<Font | undefined>, textSignal: Signal<unknown | Signal<unknown> | Array<Signal<unknown> | unknown>>, propertiesRef: {
current: GlyphLayoutProperties | undefined;
}, defaultWordBreak: GlyphLayoutProperties['wordBreak']): import("@preact/signals-core").ReadonlySignal<CustomLayouting | undefined>;
declare const wrappers: {
'keep-all': import("./index.js").GlyphWrapper;
'break-all': import("./index.js").GlyphWrapper;
'break-word': import("./index.js").GlyphWrapper;
};
export declare function measureGlyphLayout(properties: GlyphLayoutProperties, availableWidth?: number): {
width: number;
height: number;
};
export declare function buildGlyphLayout(properties: GlyphLayoutProperties, availableWidth: number, availableHeight: number): GlyphLayout;
export {};