@pmndrs/uikit
Version:
Build performant 3D user interfaces with Three.js and yoga.
44 lines (43 loc) • 2.23 kB
TypeScript
import type { ReadonlySignal } from '@preact/signals-core';
import { Matrix4 } from 'three';
import { ClippingRect } from '../../clipping.js';
import { alignmentXMap, alignmentYMap } from '../../utils.js';
import { InstancedGlyphGroup } from './instanced-glyph-group.js';
import type { PositionedGlyphLayout } from '../layout/index.js';
import type { BaseOutProperties, Properties } from '../../properties/index.js';
import type { Font } from '../font.js';
import type { OrderInfo } from '../../order.js';
import type { RootContext } from '../../context.js';
export type TextAlignProperties = {
textAlign?: keyof typeof alignmentXMap | 'justify';
};
export declare const additionalTextDefaults: {
verticalAlign: keyof typeof alignmentYMap;
};
export type AdditionalTextDefaults = typeof additionalTextDefaults;
type InstancedTextProperties = AdditionalTextDefaults & BaseOutProperties;
export type InstancedTextTarget<OutProperties extends InstancedTextProperties = InstancedTextProperties> = {
root: ReadonlySignal<RootContext>;
fontSignal: ReadonlySignal<Font | undefined>;
orderInfo: ReadonlySignal<OrderInfo | undefined>;
properties: Properties<OutProperties>;
globalTextMatrix: ReadonlySignal<Matrix4 | undefined>;
isVisible: ReadonlySignal<boolean>;
abortSignal: AbortSignal;
};
export declare function createInstancedText<OutProperties extends InstancedTextProperties>(text: InstancedTextTarget<OutProperties>, parentClippingRect: ReadonlySignal<ClippingRect | undefined> | undefined, layoutSignal: ReadonlySignal<PositionedGlyphLayout | undefined>): void;
export declare class InstancedText {
private group;
private properties;
private layoutSignal;
private matrix;
private parentClippingRect;
private glyphLines;
private unsubscribeInitialList;
private unsubscribeShowList;
constructor(group: InstancedGlyphGroup, properties: Properties<InstancedTextProperties>, layoutSignal: ReadonlySignal<PositionedGlyphLayout | undefined>, matrix: ReadonlySignal<Matrix4 | undefined>, isVisible: ReadonlySignal<boolean>, parentClippingRect: ReadonlySignal<ClippingRect | undefined> | undefined);
private show;
private hide;
destroy(): void;
}
export {};