You're Invited:Meet the Socket Team at RSAC and BSidesSF 2026, March 23–26.RSVP
Socket
Book a DemoSign in
Socket

@leafer-ui/interface

Package Overview
Dependencies
Maintainers
1
Versions
117
Alerts
File Explorer

Advanced tools

Socket logo

Install Socket

Detect and block malicious and high-risk dependencies

Install

@leafer-ui/interface - npm Package Compare versions

Comparing version
1.0.0-beta.12
to
1.0.0-beta.15
+595
types/index.d.ts
import { IPointData, IExportFileType, IWindingRule, IPathCommandData, IBlendMode, IMatrixData, ILeaferImage, IBlob, ILeaf, IPathString, IPathCreator, IBoundsData, ILeaferImageConfig, ILeaferCanvas, IRenderOptions, IPathDrawer, ILeafData, IPath2D, ILeafComputedData, ILeafInputData, IObject, ILeafRender, ILeafBounds, ILeafHit, ICachedLeaf, IBooleanMap } from '@leafer/interface';
export * from '@leafer/interface';
type IPercent = string;
type IColorString = string;
type ICornerRadiusString = string;
type IStrokeWidthString = string;
type IDashPatternString = string;
type IPaintString = ISolidPaintString | IGradientPaintString | IImagePaintString;
type ISolidPaintString = string;
type IGradientPaintString = string;
type IImagePaintString = string;
type IShadowString = string;
interface IUnitData {
type: 'percent' | 'px';
value: number;
}
type IPaint = ISolidPaint | IGradientPaint | IImagePaint;
interface IPaintBase {
type: IPaintType;
blendMode?: IBlendMode;
visible?: boolean;
opacity?: number;
}
type IPaintType = 'image' | 'solid' | IGradientType;
type IGradientType = 'linear' | 'radial' | 'angular';
interface ISolidPaint extends IPaintBase {
type: 'solid';
color: IColor;
}
type IColor = IColorString | IRGB | IRGBA;
interface IRGB {
r: number;
g: number;
b: number;
a?: number;
}
interface IRGBA extends IRGB {
a: number;
}
interface IGradientPaint extends IPaintBase {
type: IGradientType;
from?: IPointData;
to?: IPointData;
stretch?: number;
stops: IColorStop[];
}
interface IColorStop {
offset: number;
color: IColor;
}
interface IImagePaint extends IPaintBase {
type: "image";
url: string;
mode?: IImagePaintMode;
format?: IExportFileType;
filters?: IImageFilters;
offset?: IPointData;
scale?: number | IPointData;
rotation?: number;
}
interface IImageFilters {
exposure?: number;
contrast?: number;
saturation?: number;
temperature?: number;
tint?: number;
highlights?: number;
shadows?: number;
}
type IImagePaintMode = 'cover' | 'fit' | 'strench' | 'clip' | 'repeat';
type IStrokeAlign = 'inside' | 'outside' | 'center';
type IStrokeCap = 'none' | 'round' | 'square' | 'arrow-lines' | 'arrow-equilateral';
type IStrokeJoin = 'bevel' | 'round' | 'miter';
type ITextAlign = 'left' | 'center' | 'right' | 'justify';
type IVerticalAlign = 'top' | 'middle' | 'bottom';
type ITextCase = 'upper' | 'lower' | 'title' | 'none' | 'small-caps';
type IFontWeight = IFontWeightNumer | IFontWeightString;
type IFontWeightNumer = 100 | 200 | 300 | 400 | 500 | 600 | 700 | 800 | 900;
type IFontWeightString = 'thin' | 'extra-light' | 'light' | 'normal' | 'medium' | 'semi-bold' | 'bold' | 'extra-bold' | 'black';
type ITextDecoration = 'none' | 'under' | 'delete';
interface IVectorPath {
rule?: IWindingRule;
data: string | IPathCommandData;
}
interface IShadowEffect {
x: number;
y: number;
blur: number;
spread?: number;
color: IColorString | IColor;
blendMode?: IBlendMode;
visible?: boolean;
box?: boolean;
}
interface IBlurEffect {
blur: number;
visible?: boolean;
}
interface IGrayscaleEffect {
grayscale: number;
visible?: boolean;
}
type IOverflow = 'show' | 'hide';
type ILeafPaintColor = IColorString | CanvasGradient | CanvasPattern;
interface ILeafPaint {
type?: IPaintType;
style?: ILeafPaintColor;
transform?: IMatrixData;
blendMode?: IBlendMode;
opacity?: number;
image?: ILeaferImage;
loadId?: number;
patternId?: string;
data?: ILeafPaintPatternData;
}
interface ILeafPaintPatternData {
width?: number;
height?: number;
scaleX?: number;
scaleY?: number;
opacity?: number;
transform?: IMatrixData;
mode?: IImagePaintMode;
}
type ILeafFill = ILeafPaint;
interface ILeafStrokePaint extends ILeafPaint {
strokeAlign?: IStrokeAlign;
strokeWidth?: number;
strokeCap?: IStrokeCap;
strokeJoin?: IStrokeJoin;
dashPattern?: number[];
miterLimit?: number;
}
interface ILeafShadowEffect {
x: number;
y: number;
blur: number;
spread?: number;
color: IColorString;
blendMode?: IBlendMode;
box?: boolean;
}
interface ICornerRadiusAttrData {
cornerRadius: number | number[] | ICornerRadiusString;
cornerSmoothing: number;
}
interface ICornerRadiusInputData {
cornerRadius?: number | number[] | ICornerRadiusString;
cornerSmoothing?: number;
}
interface ICornerRadiusComputedData {
cornerRadius?: number;
cornerSmoothing?: number;
}
interface IFillAttrData {
fill: IPaint | IPaint[] | IPaintString;
}
interface IFillInputData {
fill?: IPaint | IPaint[] | IPaintString;
}
interface IFillComputedData {
fill?: IColorString | ILeafPaint[];
}
interface IBorderComputedData {
borderWidth?: number | number[];
borderRadius?: number | number[];
}
interface IStrokeAttrData {
stroke: IPaint | IPaint[] | IPaintString;
strokeAlign: IStrokeAlign;
strokeWidth: number | number[] | IStrokeWidthString;
strokeCap: IStrokeCap;
strokeJoin: IStrokeJoin;
dashPattern: number[] | IDashPatternString;
dashOffset: number;
miterLimit: number;
}
interface IStrokeInputData {
stroke?: IPaint | IPaint[] | IPaintString;
strokeAlign?: IStrokeAlign;
strokeWidth?: number | number[] | IStrokeWidthString;
strokeCap?: IStrokeCap;
strokeJoin?: IStrokeJoin;
dashPattern?: number[] | IDashPatternString;
dashOffset?: number;
miterLimit?: number;
}
interface IStrokeComputedData {
stroke?: IColorString | ILeafStrokePaint[];
strokeAlign?: IStrokeAlign;
strokeWidth?: number;
strokeWidths?: number[];
strokeCap?: IStrokeCap;
strokeJoin?: IStrokeJoin;
dashPattern?: number[];
dashOffset?: number;
miterLimit?: number;
}
interface ITextStyleAttrData {
fontFamily: string;
fontSize: number;
fontWeight: IFontWeight;
italic: boolean;
textCase: ITextCase;
textDecoration: ITextDecoration;
letterSpacing: number | IUnitData;
lineHeight: number | IUnitData;
paraIndent: number;
paraSpacing: number;
textAlign: ITextAlign;
verticalAlign: IVerticalAlign;
textOverflow: IOverflow | string;
}
interface ITextStyleInputData {
fontFamily?: string;
fontSize?: number;
fontWeight?: IFontWeight;
italic?: boolean;
textCase?: ITextCase;
textDecoration?: ITextDecoration;
letterSpacing?: number | IUnitData;
lineHeight?: number | IUnitData;
paraIndent?: number;
paraSpacing?: number;
textAlign?: ITextAlign;
verticalAlign?: IVerticalAlign;
textOverflow?: IOverflow | string;
}
interface ITextStyleComputedData {
fontFamily?: string;
fontSize?: number;
fontWeight?: IFontWeight;
italic?: boolean;
textCase?: ITextCase;
textDecoration?: ITextDecoration;
letterSpacing?: number;
lineHeight?: number;
paraIndent?: number;
paraSpacing?: number;
textAlign?: ITextAlign;
verticalAlign?: IVerticalAlign;
textOverflow?: IOverflow;
}
interface IEffectAttrData {
shadow: IShadowEffect | IShadowEffect[] | IShadowString;
innerShadow: IShadowEffect | IShadowEffect[] | IShadowString;
blur: number | IBlurEffect;
backgroundBlur: number | IBlurEffect;
grayscale: number | IGrayscaleEffect;
}
interface IEffectInputData {
shadow?: IShadowEffect | IShadowEffect[] | IShadowString;
innerShadow?: IShadowEffect | IShadowEffect[] | IShadowString;
blur?: number | IBlurEffect;
backgroundBlur?: number | IBlurEffect;
grayscale?: number | IGrayscaleEffect;
}
interface IEffectComputedData {
shadow?: ILeafShadowEffect[];
innerShadow?: ILeafShadowEffect[];
blur?: number;
backgroundBlur?: number;
grayscale?: number;
}
interface IExportOptions {
quality?: number;
blob?: boolean;
}
interface IExportResult {
data: IBlob | string | boolean;
}
interface IExportResultFunction {
(data: IExportResult): void;
}
interface IExportModule {
export?(leaf: ILeaf, filename: IExportFileType | string, options?: IExportOptions | number | boolean): Promise<IExportResult>;
}
interface ILine extends IUI {
__: ILineData;
toPoint: IPointData;
points: number[];
curve: boolean | number;
}
interface ILineData extends IUIData {
}
interface ILineInputData extends IUIBaseInputData {
toPoint?: IPointData;
points?: number[];
curve?: boolean | number;
}
interface IRect extends IUI {
__: IRectData;
}
interface IRectData extends IUIData {
}
interface IRectInputData extends IUIBaseInputData {
}
interface IEllipse extends IUI {
__: IEllipseData;
startAngle: number;
endAngle: number;
innerRadius: number;
}
interface IEllipseAttrData {
startAngle?: number;
endAngle?: number;
innerRadius?: number;
}
interface IEllipseData extends IEllipseAttrData, IUIData {
}
interface IEllipseInputData extends IEllipseAttrData, IUIBaseInputData {
}
interface IPolygon extends IUI {
__: IPolygonData;
sides: number;
points: number[];
curve: boolean | number;
}
interface IPolygonAttrData {
sides?: number;
points?: number[];
curve?: boolean | number;
}
interface IPolygonData extends IPolygonAttrData, IUIData {
}
interface IPolygonInputData extends IPolygonAttrData, IUIBaseInputData {
}
interface IStar extends IUI {
__: IStarData;
corners: number;
innerRadius: number;
}
interface IStarAttrData {
corners?: number;
innerRadius?: number;
}
interface IStarData extends IStarAttrData, IUIData {
}
interface IStarInputData extends IStarAttrData, IUIBaseInputData {
}
interface IPath extends IUI {
__: IPathData;
path: IPathCommandData | IPathString;
windingRule: IWindingRule;
}
interface IPathData extends IUIData {
path?: IPathCommandData;
windingRule?: IWindingRule;
}
interface IPathInputData extends IUIBaseInputData {
path?: IPathCommandData | IPathString;
windingRule?: IWindingRule;
}
interface IPen extends IGroup, IPathCreator {
__: IPenData;
pathElement: IPath;
pathStyle: IPathInputData;
path: IPathCommandData;
paint(): void;
clear(): void;
}
interface IPenData extends IGroupData {
}
interface IPenInputData extends IGroupInputData {
}
interface IText extends ITextStyleAttrData, IUI {
__: ITextData;
text: string;
}
interface ITextAttrData {
text?: string;
}
interface ITextData extends ITextAttrData, ITextStyleComputedData, IUIData {
__baseLine?: number;
__lineHeight?: number;
__letterSpacing?: number;
}
interface ITextInputData extends ITextAttrData, ITextStyleInputData, IUIBaseInputData {
}
interface ITextRowData {
x?: number;
y?: number;
width?: number;
height?: number;
text?: string;
data?: ITextCharData[];
words?: ITextWordData[];
paraStart?: boolean;
paraEnd?: boolean;
isOverflow?: boolean;
}
interface ITextWordData {
x?: number;
y?: number;
width?: number;
height?: number;
data?: ITextCharData[];
}
interface ITextCharData {
x?: number;
y?: number;
width?: number;
height?: number;
char?: string;
}
interface ITextDrawData {
bounds: IBoundsData;
rows: ITextRowData[];
paraNumber: number;
font: string;
decorationY?: number;
decorationHeight?: number;
overflow?: number;
}
interface IImage extends IRect, ILeaferImageConfig {
__: IImageData;
url: string;
ready: boolean;
image?: ILeaferImage;
}
interface IImageAttrData {
url?: string;
}
interface IImageData extends IImageAttrData, IRectData {
}
interface IImageInputData extends IImageAttrData, IUIBaseInputData {
}
interface ICanvas extends IRect {
__: ICanvasData;
pixelRatio: number;
smooth: boolean;
canvas: ILeaferCanvas;
__updateSize(): void;
}
interface ICanvasAttrData {
pixelRatio?: number;
smooth?: boolean;
}
interface ICanvasData extends ICanvasAttrData, IRectData {
}
interface ICanvasInputData extends ICanvasAttrData, IUIBaseInputData {
}
interface ILeaferData extends IGroupData {
pixelRatio?: number;
}
interface ILeaferInputData extends IGroupInputData {
pixelRatio?: number;
}
interface IFrame extends IBox {
__: IFrameData;
}
interface IFrameData extends IBoxData {
}
interface IFrameInputData extends IBoxInputData {
}
interface IBox extends IGroup {
__: IBoxData;
overflow: IOverflow;
__updateRectRenderBounds(): void;
__renderGroup(canvas: ILeaferCanvas, options: IRenderOptions): void;
}
interface IBoxData extends IGroupData {
overflow?: IOverflow;
}
interface IBoxInputData extends IGroupInputData {
overflow?: IOverflow;
}
interface IGroup extends IUI {
__: IGroupData;
children: IUI[];
mask?: IUI;
add(child: IUI, index?: number): void;
addAt(child: IUI, index: number): void;
addAfter(child: IUI, after: IUI): void;
addBefore(child: IUI, before: IUI): void;
remove(child?: IUI): void;
removeAll(): void;
}
interface IGroupData extends IUIData {
}
interface IGroupInputData extends IUIBaseInputData {
}
interface IUI extends IFillAttrData, IStrokeAttrData, ICornerRadiusAttrData, IEffectAttrData, ILeaf {
__: IUIData;
parent?: IGroup;
set(data: IUIInputData): void;
toJSON(): IUIInputData;
getPath(curve?: boolean): IPathCommandData;
getPathString(curve?: boolean): IPathString;
__drawPathByData(drawer: IPathDrawer, data: IPathCommandData): void;
__drawAfterFill?(canvas: ILeaferCanvas, options: IRenderOptions): void;
export(filename: string, options?: IExportOptions | number): Promise<IBlob | string | boolean>;
clone(): IUI;
}
interface IUIData extends IUIComputedData, ILeafData {
padding?: number | number[];
locked?: boolean;
__isFills?: boolean;
__isStrokes?: boolean;
__drawAfterFill?: boolean;
__isOverflow?: boolean;
__blendLayer?: boolean;
__isTranslucentFill?: boolean;
__isTranslucentStroke?: boolean;
__useEffect?: boolean;
path?: IPathCommandData;
windingRule?: IWindingRule;
__pathForRender?: IPathCommandData;
__path2DForRender?: IPath2D;
__boxStroke?: boolean;
__font?: string;
__textDrawData?: ITextDrawData;
}
interface IUIComputedData extends IFillComputedData, IBorderComputedData, IStrokeComputedData, ITextStyleComputedData, ICornerRadiusComputedData, IEffectComputedData, ILeafComputedData {
padding?: number | number[];
locked?: boolean;
}
interface IUIBaseInputData extends IFillInputData, IStrokeInputData, ITextStyleInputData, ICornerRadiusInputData, IEffectInputData, ILeafInputData {
padding?: number | number[];
locked?: boolean;
children?: IUIBaseInputData[];
}
type IUITag = 'App' | 'Leafer' | 'Rect' | 'Ellipse' | 'Polygon' | 'Star' | 'Line' | 'Path' | 'Pen' | 'Text' | 'Image' | 'Canvas' | 'Group' | 'Frame' | 'Box';
interface IUIInputData extends IRectInputData, IEllipseInputData, IPolygonInputData, IStarInputData, ILineInputData, IPathInputData, ITextInputData, IImageInputData, IGroupInputData, IFrameInputData, IUIBaseInputData, IObject {
}
type IUIRenderModule = IUIRender & ThisType<IUI>;
interface IUIRender extends ILeafRender {
__drawAfterFill?(canvas: ILeaferCanvas, options: IRenderOptions): void;
}
type IRectRenderModule = IRectRender & ThisType<IRect>;
interface IRectRender extends IUIRender {
}
type IImageRenderModule = IImageRender & ThisType<IImage>;
interface IImageRender extends IUIRender {
}
type ITextRenderModule = ITextRender & ThisType<IText>;
interface ITextRender extends IUIRender {
}
type IGroupRenderModule = IGroupRender & ThisType<IGroup>;
interface IGroupRender extends IUIRender {
}
type IFrameRenderModule = IFrameRender & ThisType<IFrame>;
interface IFrameRender extends IGroupRender {
}
type IUIBoundsModule = IUIBounds & ThisType<IUI>;
interface IUIBounds extends ILeafBounds {
}
type IUIHitModule = ILeafHit & ThisType<IUI>;
interface ITextConvertModule {
getDrawData?(content: string, style: ITextData): ITextDrawData;
}
interface IColorConvertModule {
string?(color: IColor, opacity?: number): string;
}
interface ICachedShape extends ICachedLeaf {
worldCanvas?: ILeaferCanvas;
shapeBounds: IBoundsData;
scaleX: number;
scaleY: number;
}
interface IPaintModule {
compute?(ui: IUI, attrName: 'fill' | 'stroke'): void;
fill?(ui: IUI, canvas: ILeaferCanvas, fill: string): void;
fills?(ui: IUI, canvas: ILeaferCanvas, fills: ILeafPaint[]): void;
fillText?(ui: IUI, canvas: ILeaferCanvas): void;
stroke?(ui: IUI, canvas: ILeaferCanvas, stroke: string): void;
strokes?(ui: IUI, canvas: ILeaferCanvas, strokes: ILeafPaint[]): void;
strokeText?(ui: IUI, canvas: ILeaferCanvas, stroke: string): void;
strokesText?(ui: IUI, canvas: ILeaferCanvas, strokes: ILeafPaint[]): void;
drawTextStroke?(ui: IUI, canvas: ILeaferCanvas): void;
shape?(ui: IUI, current: ILeaferCanvas, options: IRenderOptions): ICachedShape;
recycleImage?(data: IUIData, attrName: string): IBooleanMap;
}
interface IEffectModule {
shadow?(ui: IUI, current: ILeaferCanvas, shape: ICachedShape, options: IRenderOptions): void;
innerShadow?(ui: IUI, current: ILeaferCanvas, shape: ICachedShape, options: IRenderOptions): void;
blur?(ui: IUI, current: ILeaferCanvas, origin: ILeaferCanvas, options: IRenderOptions): void;
backgroundBlur?(ui: IUI, current: ILeaferCanvas, shape: ICachedShape, options: IRenderOptions): void;
}
export type { IBlurEffect, IBox, IBoxData, IBoxInputData, ICachedShape, ICanvas, ICanvasData, ICanvasInputData, IColor, IColorConvertModule, IColorStop, ICornerRadiusString, IDashPatternString, IEffectModule, IEllipse, IEllipseData, IEllipseInputData, IExportModule, IExportOptions, IExportResult, IExportResultFunction, IFontWeight, IFrame, IFrameData, IFrameInputData, IFrameRenderModule, IGradientPaint, IGrayscaleEffect, IGroup, IGroupData, IGroupInputData, IGroupRenderModule, IImage, IImageData, IImageInputData, IImagePaint, IImagePaintMode, IImageRenderModule, ILeafFill, ILeafPaint, ILeafPaintColor, ILeafPaintPatternData, ILeafShadowEffect, ILeafStrokePaint, ILeaferData, ILeaferInputData, ILine, ILineData, ILineInputData, IOverflow, IPaint, IPaintModule, IPaintString, IPath, IPathData, IPathInputData, IPen, IPenData, IPenInputData, IPercent, IPolygon, IPolygonData, IPolygonInputData, IRGB, IRGBA, IRect, IRectData, IRectInputData, IRectRenderModule, IShadowEffect, IShadowString, IStar, IStarData, IStarInputData, IColorString as IStringColor, IStrokeAlign, IStrokeCap, IStrokeJoin, IStrokeWidthString, IText, ITextAlign, ITextCase, ITextCharData, ITextConvertModule, ITextData, ITextDecoration, ITextDrawData, ITextInputData, ITextRenderModule, ITextRowData, ITextWordData, IUI, IUIBaseInputData, IUIBoundsModule, IUIData, IUIHitModule, IUIInputData, IUIRenderModule, IUITag, IUnitData, IVectorPath, IVerticalAlign };
+5
-3
{
"name": "@leafer-ui/interface",
"version": "1.0.0-beta.12",
"version": "1.0.0-beta.15",
"description": "@leafer-ui/interface",

@@ -8,4 +8,6 @@ "author": "Chao (Leafer) Wan",

"main": "src/index.ts",
"types": "types/index.d.ts",
"files": [
"src"
"types",
"dist"
],

@@ -23,4 +25,4 @@ "repository": {

"dependencies": {
"@leafer/interface": "1.0.0-beta.12"
"@leafer/interface": "1.0.0-beta.15"
}
}

@@ -18,4 +18,4 @@ export * from '@leafer/interface'

ILeaferInputData, ILeaferData,
IUI, IUIInputData, IUIData,
IUITag, IUITagInputData
IUI, IUIBaseInputData, IUIData,
IUITag, IUIInputData
} from './IUI'

@@ -29,7 +29,9 @@ export { IUnitData, IVectorPath, IShadowEffect, IBlurEffect, IGrayscaleEffect, IStrokeAlign, IStrokeJoin, IStrokeCap, IRGB, IRGBA, IColor, IColorStop, IPaint, IGradientPaint, IImagePaint, IImagePaintMode, IFontWeight, ITextCase, ITextDecoration, ITextAlign, IVerticalAlign, IOverflow } from './type/IType'

export { IUIHitModule } from './module/IUIHit'
export { ITextConvertModule } from './module/ITextConvert'
export { IColorConvertModule } from './module/IColorConvert'
export { IExportModule, IExportOptions, IExportResult, IExportResultFunction } from './module/IExport'
export { IPaintModule } from './module/IPaint'
export { IEffectModule } from './module/IEffect'
export { ICachedShape } from './ICachedShape'
export { ICachedShape } from './ICachedShape'
import { ILeaferCanvas, IBoundsData, ICachedLeaf } from '@leafer/interface'
export interface ICachedShape extends ICachedLeaf {
worldCanvas?: ILeaferCanvas
shapeBounds: IBoundsData
scaleX: number
scaleY: number
}
import { IPaint, IStrokeAlign, IStrokeCap, IStrokeJoin, IBlurEffect, IFontWeight, ITextCase, ITextDecoration, IShadowEffect, IGrayscaleEffect, ITextAlign, IVerticalAlign, IOverflow, IUnitData } from './type/IType'
import { ILeafStrokePaint, ILeafShadowEffect, ILeafPaint } from './type/IComputedType'
import { IPaintString, IDashPatternString, IShadowString, IColorString, IStrokeWidthString, ICornerRadiusString } from './type/IStringType'
// corner---
export interface ICornerRadiusAttrData {
cornerRadius: number | number[] | ICornerRadiusString
cornerSmoothing: number
}
export interface ICornerRadiusInputData {
cornerRadius?: number | number[] | ICornerRadiusString
cornerSmoothing?: number
}
export interface ICornerRadiusComputedData {
cornerRadius?: number
cornerSmoothing?: number
}
// fill---
export interface IFillAttrData {
fill: IPaint | IPaint[] | IPaintString
}
export interface IFillInputData {
fill?: IPaint | IPaint[] | IPaintString
}
export interface IFillComputedData {
fill?: IColorString | ILeafPaint[]
}
// border
export interface IBorderComputedData {
borderWidth?: number | number[]
borderRadius?: number | number[]
}
// stroke---
export interface IStrokeAttrData {
stroke: IPaint | IPaint[] | IPaintString
strokeAlign: IStrokeAlign
strokeWidth: number | number[] | IStrokeWidthString
strokeCap: IStrokeCap
strokeJoin: IStrokeJoin
dashPattern: number[] | IDashPatternString
dashOffset: number
miterLimit: number
}
export interface IStrokeInputData {
stroke?: IPaint | IPaint[] | IPaintString
strokeAlign?: IStrokeAlign
strokeWidth?: number | number[] | IStrokeWidthString
strokeCap?: IStrokeCap
strokeJoin?: IStrokeJoin
dashPattern?: number[] | IDashPatternString
dashOffset?: number
miterLimit?: number
}
export interface IStrokeComputedData {
stroke?: IColorString | ILeafStrokePaint[]
strokeAlign?: IStrokeAlign
strokeWidth?: number
strokeWidths?: number[]
strokeCap?: IStrokeCap
strokeJoin?: IStrokeJoin
dashPattern?: number[]
dashOffset?: number
miterLimit?: number
}
// text---
export interface ITextStyleAttrData {
fontFamily: string
fontSize: number
fontWeight: IFontWeight
italic: boolean
textCase: ITextCase
textDecoration: ITextDecoration
letterSpacing: number | IUnitData
lineHeight: number | IUnitData
paraIndent: number
paraSpacing: number
textAlign: ITextAlign
verticalAlign: IVerticalAlign
textOverflow: IOverflow | string
}
export interface ITextStyleInputData {
fontFamily?: string
fontSize?: number
fontWeight?: IFontWeight
italic?: boolean
textCase?: ITextCase
textDecoration?: ITextDecoration
letterSpacing?: number | IUnitData
lineHeight?: number | IUnitData
paraIndent?: number
paraSpacing?: number
textAlign?: ITextAlign
verticalAlign?: IVerticalAlign
textOverflow?: IOverflow | string
}
export interface ITextStyleComputedData {
fontFamily?: string
fontSize?: number
fontWeight?: IFontWeight
italic?: boolean
textCase?: ITextCase
textDecoration?: ITextDecoration
letterSpacing?: number
lineHeight?: number
paraIndent?: number
paraSpacing?: number
textAlign?: ITextAlign
verticalAlign?: IVerticalAlign
textOverflow?: IOverflow
}
// effect---
export interface IEffectAttrData {
shadow: IShadowEffect | IShadowEffect[] | IShadowString
innerShadow: IShadowEffect | IShadowEffect[] | IShadowString
blur: number | IBlurEffect
backgroundBlur: number | IBlurEffect
grayscale: number | IGrayscaleEffect
}
export interface IEffectInputData {
shadow?: IShadowEffect | IShadowEffect[] | IShadowString
innerShadow?: IShadowEffect | IShadowEffect[] | IShadowString
blur?: number | IBlurEffect
backgroundBlur?: number | IBlurEffect
grayscale?: number | IGrayscaleEffect
}
export interface IEffectComputedData {
shadow?: ILeafShadowEffect[]
innerShadow?: ILeafShadowEffect[]
blur?: number
backgroundBlur?: number
grayscale?: number
}
import { ILeaf, ILeafComputedData, ILeafData, ILeafInputData, ILeaferCanvas, IRenderOptions, IPathDrawer, IPointData, IPath2D, IPathCommandData, IWindingRule, ILeaferImageConfig, IBoundsData, IObject, __Number, IPathString, ILeaferImage, IBlob } from '@leafer/interface'
import {
IFillAttrData, IFillInputData, IFillComputedData,
IBorderComputedData,
ICornerRadiusAttrData, ICornerRadiusInputData, ICornerRadiusComputedData,
IStrokeAttrData, IStrokeComputedData, IStrokeInputData,
IEffectAttrData, IEffectInputData, IEffectComputedData,
ITextStyleAttrData, ITextStyleInputData, ITextStyleComputedData
} from './ICommonAttr'
import { IOverflow } from './type/IType'
import { IExportOptions } from './module/IExport'
// Line
export interface ILine extends IUI {
__: ILineData
toPoint: IPointData
}
export interface ILineData extends IUIData { }
export interface ILineInputData extends IUIInputData {
toPoint?: IPointData
}
// Rect
export interface IRect extends IUI {
__: IRectData
}
export interface IRectData extends IUIData { }
export interface IRectInputData extends IUIInputData { }
// Ellipse
export interface IEllipse extends IUI {
__: IEllipseData
startAngle: number
endAngle: number
innerRadius: number
}
interface IEllipseAttrData {
startAngle?: number
endAngle?: number
innerRadius?: number
}
export interface IEllipseData extends IEllipseAttrData, IUIData { }
export interface IEllipseInputData extends IEllipseAttrData, IUIInputData { }
// Polygon
export interface IPolygon extends IUI {
__: IPolygonData
sides: number
}
interface IPolygonAttrData {
sides?: number
}
export interface IPolygonData extends IPolygonAttrData, IUIData { }
export interface IPolygonInputData extends IPolygonAttrData, IUIInputData { }
// Star
export interface IStar extends IUI {
__: IStarData
points: number
innerRadius: number
}
interface IStarAttrData {
points?: number
innerRadius?: number
}
export interface IStarData extends IStarAttrData, IUIData { }
export interface IStarInputData extends IStarAttrData, IUIInputData { }
// Path
export interface IPath extends IUI {
__: IPathData
path: IPathCommandData | IPathString
windingRule: IWindingRule
}
export interface IPathData extends IUIData {
path?: IPathCommandData
windingRule?: IWindingRule
}
export interface IPathInputData extends IUIInputData {
path?: IPathCommandData | IPathString
windingRule?: IWindingRule
}
// Pen
export interface IPen extends IGroup {
__: IPenData
path: IPath
pathStyle: IPathInputData
pathData: IPathCommandData
moveTo(x: number, y: number): IPen
lineTo(x: number, y: number): IPen
bezierCurveTo(x1: number, y1: number, x2: number, y2: number, x: number, y: number): IPen
quadraticCurveTo(x1: number, y1: number, x: number, y: number): IPen
rect(x: number, y: number, width: number, height: number): IPen
roundRect(x: number, y: number, width: number, height: number, cornerRadius: number | number[]): IPen
ellipse(x: number, y: number, radiusX: number, radiusY: number, rotation?: number, startAngle?: number, endAngle?: number, anticlockwise?: boolean): IPen
arc(x: number, y: number, radius: number, startAngle?: number, endAngle?: number, anticlockwise?: boolean): IPen
arcTo(x1: number, y1: number, x2: number, y2: number, radius: number): IPen
close(): IPen
clear(): IPen
paint(): void
}
export interface IPenData extends IGroupData { }
export interface IPenInputData extends IGroupInputData { }
// Text
export interface IText extends ITextStyleAttrData, IUI {
__: ITextData
text: string
}
interface ITextAttrData {
text?: string
}
export interface ITextData extends ITextAttrData, ITextStyleComputedData, IUIData {
__baseLine?: number
__lineHeight?: number
__letterSpacing?: number
}
export interface ITextInputData extends ITextAttrData, ITextStyleInputData, IUIInputData {
}
export interface ITextRowData {
x?: number
y?: number
width?: number
height?: number
text?: string
data?: ITextCharData[]
words?: ITextWordData[]
paraStart?: boolean // paragraph start
paraEnd?: boolean // paragraph end
isOverflow?: boolean
}
export interface ITextWordData {
x?: number
y?: number
width?: number
height?: number
data?: ITextCharData[]
}
export interface ITextCharData {
x?: number
y?: number
width?: number
height?: number
char?: string
}
export interface ITextDrawData {
bounds: IBoundsData
rows: ITextRowData[]
paraNumber: number
font: string
decorationY?: number
decorationHeight?: number
overflow?: number // overflowed row number, not index
}
// Image
export interface IImage extends IRect, ILeaferImageConfig {
__: IImageData
url: string
ready: boolean
image?: ILeaferImage
}
interface IImageAttrData {
url?: string
}
export interface IImageData extends IImageAttrData, IRectData { }
export interface IImageInputData extends IImageAttrData, IUIInputData { }
export interface ICanvas extends IRect {
__: ICanvasData
pixelRatio: number
smooth: boolean
canvas: ILeaferCanvas
__updateSize(): void
}
interface ICanvasAttrData {
pixelRatio?: number
smooth?: boolean
}
export interface ICanvasData extends ICanvasAttrData, IRectData { }
export interface ICanvasInputData extends ICanvasAttrData, IUIInputData { }
// Leafer
export interface ILeaferData extends IGroupData {
pixelRatio?: number
}
export interface ILeaferInputData extends IGroupInputData {
pixelRatio?: number
}
// Frame
export interface IFrame extends IBox {
__: IFrameData
}
export interface IFrameData extends IBoxData {
}
export interface IFrameInputData extends IBoxInputData {
}
// Box
export interface IBox extends IGroup {
__: IBoxData
overflow: IOverflow
__updateRectRenderBounds(): void
__renderGroup(canvas: ILeaferCanvas, options: IRenderOptions): void
}
export interface IBoxData extends IGroupData {
overflow?: IOverflow
}
export interface IBoxInputData extends IGroupInputData {
overflow?: IOverflow
}
// Group
export interface IGroup extends IUI {
__: IGroupData
children: IUI[]
mask?: IUI
add(child: IUI, index?: number): void
addAt(child: IUI, index: number): void
addAfter(child: IUI, after: IUI): void
addBefore(child: IUI, before: IUI): void
remove(child?: IUI): void
removeAll(): void
}
export interface IGroupData extends IUIData { }
export interface IGroupInputData extends IUIInputData { }
// UI
export interface IUI extends IFillAttrData, IStrokeAttrData, ICornerRadiusAttrData, IEffectAttrData, ILeaf {
__: IUIData
parent?: IGroup
set(data: IUITagInputData): void
get(): IUITagInputData
getPath(curve?: boolean): IPathCommandData
getPathString(curve?: boolean): IPathString
__drawPathByData(drawer: IPathDrawer, data: IPathCommandData): void
__drawAfterFill?(canvas: ILeaferCanvas, options: IRenderOptions): void
export(filename: string, options?: IExportOptions | number): Promise<IBlob | string | boolean>
}
export interface IUIData extends IUIComputedData, ILeafData {
padding?: number | number[]
locked?: boolean
// 非数据属性, 自动计算的缓存数据
__isFills?: boolean
__isStrokes?: boolean
__drawAfterFill?: boolean
__isOverflow?: boolean
__blendLayer?: boolean
__isTranslucentFill?: boolean // 半透明的
__isTranslucentStroke?: boolean
__useEffect?: boolean
// path
path?: IPathCommandData
windingRule?: IWindingRule
__pathForRender?: IPathCommandData
__path2DForRender?: IPath2D
__boxStroke?: boolean
// text
__font?: string
__textDrawData?: ITextDrawData
}
export interface IUIComputedData extends IFillComputedData, IBorderComputedData, IStrokeComputedData, ITextStyleComputedData, ICornerRadiusComputedData, IEffectComputedData, ILeafComputedData {
padding?: number | number[]
locked?: boolean
}
export interface IUIInputData extends IFillInputData, IStrokeInputData, ITextStyleInputData, ICornerRadiusInputData, IEffectInputData, ILeafInputData {
padding?: number | number[]
locked?: boolean
}
export type IUITag =
| 'Rect'
| 'Ellipse'
| 'Polygon'
| 'Star'
| 'Line'
| 'Path'
| 'Pen'
| 'Text'
| 'Image'
| 'Canvas'
| 'Group'
| 'Frame'
| 'Box'
export interface IUITagInputData extends IRectInputData, IEllipseInputData, IPolygonInputData, IStarInputData, ILineInputData, IPathInputData, ITextInputData, IImageInputData, IGroupInputData, IFrameInputData, IObject {
tagName?: IUITag
}
import { ILeaferCanvas, IRenderOptions } from '@leafer/interface'
import { IUI } from '../IUI'
import { ICachedShape } from '../ICachedShape'
export interface IEffectModule {
shadow?(ui: IUI, current: ILeaferCanvas, shape: ICachedShape, options: IRenderOptions): void
innerShadow?(ui: IUI, current: ILeaferCanvas, shape: ICachedShape, options: IRenderOptions): void
blur?(ui: IUI, current: ILeaferCanvas, origin: ILeaferCanvas, options: IRenderOptions): void
backgroundBlur?(ui: IUI, current: ILeaferCanvas, shape: ICachedShape, options: IRenderOptions): void
}
import { ILeaf, IExportFileType, IBlob } from '@leafer/interface'
export interface IExportOptions {
quality?: number
blob?: boolean
}
export interface IExportResult {
data: IBlob | string | boolean
}
export interface IExportResultFunction {
(data: IExportResult): void
}
export interface IExportModule {
export(leaf: ILeaf, filename: IExportFileType | string, options?: IExportOptions | number | boolean): Promise<IExportResult>
}
import { ILeaferCanvas, IRenderOptions, IBooleanMap } from '@leafer/interface'
import { ILeafPaint } from '../type/IComputedType'
import { IUI, IUIData } from '../IUI'
import { ICachedShape } from '../ICachedShape'
export interface IPaintModule {
compute?(ui: IUI, attrName: 'fill' | 'stroke'): void
fill?(ui: IUI, canvas: ILeaferCanvas, fill: string): void
fills?(ui: IUI, canvas: ILeaferCanvas, fills: ILeafPaint[]): void
fillText?(ui: IUI, canvas: ILeaferCanvas): void
stroke?(ui: IUI, canvas: ILeaferCanvas, stroke: string): void
strokes?(ui: IUI, canvas: ILeaferCanvas, strokes: ILeafPaint[]): void
strokeText?(ui: IUI, canvas: ILeaferCanvas, stroke: string): void
strokesText?(ui: IUI, canvas: ILeaferCanvas, strokes: ILeafPaint[]): void
drawTextStroke?(ui: IUI, canvas: ILeaferCanvas): void
shape?(ui: IUI, current: ILeaferCanvas, options: IRenderOptions): ICachedShape
recycleImage?(data: IUIData, attrName: string): IBooleanMap
}
import { ILeafBounds } from '@leafer/interface'
import { IUI } from '../IUI'
export type IUIBoundsModule = IUIBounds & ThisType<IUI>
interface IUIBounds extends ILeafBounds {
}
import { ILeafHit } from '@leafer/interface'
import { IUI } from '../IUI'
export type IUIHitModule = ILeafHit & ThisType<IUI>
import { ILeafRender, ILeaferCanvas, IRenderOptions } from '@leafer/interface'
import { IUI, IRect, IImage, IText, IFrame, IGroup } from '../IUI'
export type IUIRenderModule = IUIRender & ThisType<IUI>
export interface IUIRender extends ILeafRender {
__drawAfterFill?(canvas: ILeaferCanvas, options: IRenderOptions): void
}
export type IRectRenderModule = IRectRender & ThisType<IRect>
export interface IRectRender extends IUIRender {
}
export type IImageRenderModule = IImageRender & ThisType<IImage>
export interface IImageRender extends IUIRender {
}
export type ITextRenderModule = ITextRender & ThisType<IText>
export interface ITextRender extends IUIRender {
}
export type IGroupRenderModule = IGroupRender & ThisType<IGroup>
export interface IGroupRender extends IUIRender {
}
export type IFrameRenderModule = IFrameRender & ThisType<IFrame>
export interface IFrameRender extends IGroupRender {
}
import { IBlendMode, ILeaferImage, IMatrixData } from '@leafer/interface'
import { IColorString } from './IStringType'
import { IStrokeAlign, IStrokeJoin, IStrokeCap, IImagePaintMode } from './IType'
import { IPaintType } from './IType'
export type ILeafPaintColor = IColorString | CanvasGradient | CanvasPattern
export interface ILeafPaint {
type?: IPaintType
style?: ILeafPaintColor
transform?: IMatrixData
blendMode?: IBlendMode
opacity?: number
image?: ILeaferImage
loadId?: number
patternId?: number
data?: ILeafPaintPatternData
}
export interface ILeafPaintPatternData {
width?: number
height?: number
scaleX?: number
scaleY?: number
opacity?: number
transform?: IMatrixData
mode?: IImagePaintMode
}
export type ILeafFill = ILeafPaint
export interface ILeafStrokePaint extends ILeafPaint {
strokeAlign?: IStrokeAlign
strokeWidth?: number
strokeCap?: IStrokeCap
strokeJoin?: IStrokeJoin
dashPattern?: number[]
miterLimit?: number
}
export interface ILeafShadowEffect {
x: number
y: number
blur: number
spread?: number
color: IColorString
blendMode?: IBlendMode
box?: boolean
}
export type IPercent = string
export type IColorString = string
export type ICornerRadiusString = string
export type IStrokeWidthString = string
export type IDashPatternString = string
export type IPaintString = ISolidPaintString | IGradientPaintString | IImagePaintString
export type ISolidPaintString = string
export type IGradientPaintString = string
export type IImagePaintString = string
export type IShadowString = string
import { IPointData, IPathCommandData, IWindingRule, IBlendMode } from '@leafer/interface'
import { IColorString } from './IStringType'
export interface IUnitData {
type: 'percent' | 'px'
value: number
}
export type IPaint = ISolidPaint | IGradientPaint | IImagePaint
export interface IPaintBase {
type: IPaintType
blendMode?: IBlendMode
visible?: boolean
opacity?: number
}
export type IPaintType =
| 'image'
| 'solid'
| IGradientType
export type IGradientType =
| 'linear'
| 'radial'
| 'angular'
// ---
export interface ISolidPaint extends IPaintBase {
type: 'solid'
color: IColor
}
export type IColor = IColorString | IRGB | IRGBA
export interface IRGB {
r: number
g: number
b: number
a?: number
}
export interface IRGBA extends IRGB {
a: number
}
// ---
export interface IGradientPaint extends IPaintBase {
type: IGradientType
from?: IPointData
to?: IPointData
stretch?: number
stops: IColorStop[]
}
export interface IColorStop {
offset: number
color: IColor
}
// ---
export interface IImagePaint extends IPaintBase {
type: "image"
url: string
mode?: IImagePaintMode
filters?: IImageFilters
offset?: IPointData
scale?: number | IPointData
rotation?: number
}
export interface IImageFilters {
exposure?: number // 曝光
contrast?: number // 对比度
saturation?: number // 饱和度
temperature?: number // 色温
tint?: number // 色调
highlights?: number // 高光
shadows?: number // 阴影
}
export type IImagePaintMode = 'cover' | 'fit' | 'strench' | 'clip' | 'repeat'
// 描边
export type IStrokeAlign = 'inside' | 'outside' | 'center'
export type IStrokeCap = 'none' | 'round' | 'square' | 'arrow-lines' | 'arrow-equilateral'
export type IStrokeJoin = 'bevel' | 'round' | 'miter'
// 文本
export type ITextAlign = 'left' | 'center' | 'right' | 'justify'
export type IVerticalAlign = 'top' | 'middle' | 'bottom'
export type ITextCase = | 'upper' | 'lower' | 'title' | 'none' | 'small-caps'
export type IFontWeight = IFontWeightNumer | IFontWeightString
export type IFontWeightNumer = 100 | 200 | 300 | 400 | 500 | 600 | 700 | 800 | 900
export type IFontWeightString =
| 'thin'
| 'extra-light'
| 'light'
| 'normal'
| 'medium'
| 'semi-bold'
| 'bold'
| 'extra-bold'
| 'black'
export type ITextDecoration = 'none' | 'under' | 'delete'
// 路径
export interface IVectorPath {
rule?: IWindingRule,
data: string | IPathCommandData
}
// 特效
export interface IShadowEffect {
x: number
y: number
blur: number
spread?: number
color: IColorString | IColor
blendMode?: IBlendMode
visible?: boolean
box?: boolean
}
export interface IBlurEffect {
blur: number
visible?: boolean
}
export interface IGrayscaleEffect {
grayscale: number
visible?: boolean
}
export type IOverflow = 'show' | 'hide'