You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
122 lines
4.3 KiB
122 lines
4.3 KiB
4 weeks ago
|
import { TextAlign, TextVerticalAlign, ImageLike, Dictionary, MapToType, FontWeight, FontStyle } from '../core/types';
|
||
|
import TSpan from './TSpan';
|
||
|
import ZRImage from './Image';
|
||
|
import Rect from './shape/Rect';
|
||
|
import BoundingRect from '../core/BoundingRect';
|
||
|
import { MatrixArray } from '../core/matrix';
|
||
|
import Displayable, { DisplayableStatePropNames, DisplayableProps } from './Displayable';
|
||
|
import { ZRenderType } from '../zrender';
|
||
|
import Animator from '../animation/Animator';
|
||
|
import Transformable from '../core/Transformable';
|
||
|
import { ElementCommonState } from '../Element';
|
||
|
import { GroupLike } from './Group';
|
||
|
export interface TextStylePropsPart {
|
||
|
text?: string;
|
||
|
fill?: string;
|
||
|
stroke?: string;
|
||
|
strokeNoScale?: boolean;
|
||
|
opacity?: number;
|
||
|
fillOpacity?: number;
|
||
|
strokeOpacity?: number;
|
||
|
lineWidth?: number;
|
||
|
lineDash?: false | number[];
|
||
|
lineDashOffset?: number;
|
||
|
borderDash?: false | number[];
|
||
|
borderDashOffset?: number;
|
||
|
font?: string;
|
||
|
textFont?: string;
|
||
|
fontStyle?: FontStyle;
|
||
|
fontWeight?: FontWeight;
|
||
|
fontFamily?: string;
|
||
|
fontSize?: number | string;
|
||
|
align?: TextAlign;
|
||
|
verticalAlign?: TextVerticalAlign;
|
||
|
lineHeight?: number;
|
||
|
width?: number | string;
|
||
|
height?: number;
|
||
|
tag?: string;
|
||
|
textShadowColor?: string;
|
||
|
textShadowBlur?: number;
|
||
|
textShadowOffsetX?: number;
|
||
|
textShadowOffsetY?: number;
|
||
|
backgroundColor?: string | {
|
||
|
image: ImageLike | string;
|
||
|
};
|
||
|
padding?: number | number[];
|
||
|
margin?: number;
|
||
|
borderColor?: string;
|
||
|
borderWidth?: number;
|
||
|
borderRadius?: number | number[];
|
||
|
shadowColor?: string;
|
||
|
shadowBlur?: number;
|
||
|
shadowOffsetX?: number;
|
||
|
shadowOffsetY?: number;
|
||
|
}
|
||
|
export interface TextStyleProps extends TextStylePropsPart {
|
||
|
text?: string;
|
||
|
x?: number;
|
||
|
y?: number;
|
||
|
width?: number;
|
||
|
rich?: Dictionary<TextStylePropsPart>;
|
||
|
overflow?: 'break' | 'breakAll' | 'truncate' | 'none';
|
||
|
lineOverflow?: 'truncate';
|
||
|
ellipsis?: string;
|
||
|
placeholder?: string;
|
||
|
truncateMinChar?: number;
|
||
|
}
|
||
|
export interface TextProps extends DisplayableProps {
|
||
|
style?: TextStyleProps;
|
||
|
zlevel?: number;
|
||
|
z?: number;
|
||
|
z2?: number;
|
||
|
culling?: boolean;
|
||
|
cursor?: string;
|
||
|
}
|
||
|
export declare type TextState = Pick<TextProps, DisplayableStatePropNames> & ElementCommonState;
|
||
|
export declare type DefaultTextStyle = Pick<TextStyleProps, 'fill' | 'stroke' | 'align' | 'verticalAlign'> & {
|
||
|
autoStroke?: boolean;
|
||
|
};
|
||
|
export declare const DEFAULT_TEXT_ANIMATION_PROPS: MapToType<TextProps, boolean>;
|
||
|
interface ZRText {
|
||
|
animate(key?: '', loop?: boolean): Animator<this>;
|
||
|
animate(key: 'style', loop?: boolean): Animator<this['style']>;
|
||
|
getState(stateName: string): TextState;
|
||
|
ensureState(stateName: string): TextState;
|
||
|
states: Dictionary<TextState>;
|
||
|
stateProxy: (stateName: string) => TextState;
|
||
|
}
|
||
|
declare class ZRText extends Displayable<TextProps> implements GroupLike {
|
||
|
type: string;
|
||
|
style: TextStyleProps;
|
||
|
overlap: 'hidden' | 'show' | 'blur';
|
||
|
innerTransformable: Transformable;
|
||
|
private _children;
|
||
|
private _childCursor;
|
||
|
private _defaultStyle;
|
||
|
constructor(opts?: TextProps);
|
||
|
childrenRef(): (ZRImage | Rect | TSpan)[];
|
||
|
update(): void;
|
||
|
updateTransform(): void;
|
||
|
getLocalTransform(m?: MatrixArray): MatrixArray;
|
||
|
getComputedTransform(): MatrixArray;
|
||
|
private _updateSubTexts;
|
||
|
addSelfToZr(zr: ZRenderType): void;
|
||
|
removeSelfFromZr(zr: ZRenderType): void;
|
||
|
getBoundingRect(): BoundingRect;
|
||
|
setDefaultTextStyle(defaultTextStyle: DefaultTextStyle): void;
|
||
|
setTextContent(textContent: never): void;
|
||
|
protected _mergeStyle(targetStyle: TextStyleProps, sourceStyle: TextStyleProps): TextStyleProps;
|
||
|
private _mergeRich;
|
||
|
getAnimationStyleProps(): MapToType<TextProps, boolean>;
|
||
|
private _getOrCreateChild;
|
||
|
private _updatePlainTexts;
|
||
|
private _updateRichTexts;
|
||
|
private _placeToken;
|
||
|
private _renderBackground;
|
||
|
static makeFont(style: TextStylePropsPart): string;
|
||
|
}
|
||
|
export declare function parseFontSize(fontSize: number | string): string;
|
||
|
export declare function hasSeparateFont(style: Pick<TextStylePropsPart, 'fontSize' | 'fontFamily' | 'fontWeight'>): string | number | true;
|
||
|
export declare function normalizeTextStyle(style: TextStyleProps): TextStyleProps;
|
||
|
export default ZRText;
|