fabric
Version:
Object model for HTML5 canvas, and SVG-to-canvas parser. Backed by jsdom and node-canvas.
101 lines • 3.21 kB
TypeScript
import type { Gradient } from './gradient/Gradient';
import type { Pattern } from './Pattern';
import type { XY, Point } from './Point';
import type { FabricObject as BaseFabricObject } from './shapes/Object/Object';
interface NominalTag<T> {
nominalTag?: T;
}
type Nominal<Type, Tag> = NominalTag<Tag> & Type;
type TNonFunctionPropertyNames<T> = {
[K in keyof T]: T[K] extends Function ? never : K;
}[keyof T];
export type TClassProperties<T> = Pick<T, TNonFunctionPropertyNames<T>>;
export type Constructor<T = object> = new (...args: any[]) => T;
declare const enum Degree {
}
declare const enum Radian {
}
export type TDegree = Nominal<number, Degree>;
export type TRadian = Nominal<number, Radian>;
export type TAxis = 'x' | 'y';
export type TAxisKey<T extends string> = `${T}${Capitalize<TAxis>}`;
export type TFiller = Gradient<'linear'> | Gradient<'radial'> | Pattern;
export type TSize = {
width: number;
height: number;
};
export type TBBox = {
left: number;
top: number;
} & TSize;
export type Percent = `${number}%`;
/**
* In order to support webp on node canvas a workaround is needed and is shared here:
* https://github.com/Automattic/node-canvas/issues/1258
*/
export type ImageFormat = 'jpeg' | 'png' | 'webp';
export type SVGElementName = 'linearGradient' | 'radialGradient' | 'stop';
export type SupportedSVGUnit = 'mm' | 'cm' | 'in' | 'pt' | 'pc' | 'em';
/**
* A transform matrix.
* Basically a matrix in the form
* [ a c e ]
* [ b d f ]
* [ 0 0 1 ]
* For more details, see @link https://developer.mozilla.org/en-US/docs/Web/SVG/Attribute/transform#matrix
*/
export type TMat2D = [
a: number,
b: number,
c: number,
d: number,
e: number,
f: number
];
/**
* An invalid keyword and an empty string will be handled as the `anonymous` keyword.
* @see https://developer.mozilla.org/en-US/docs/HTML/CORS_settings_attributes
*/
export type TCrossOrigin = '' | 'anonymous' | 'use-credentials' | null;
export type TOriginX = 'center' | 'left' | 'right' | number;
export type TOriginY = 'center' | 'top' | 'bottom' | number;
export type TCornerPoint = {
tl: Point;
tr: Point;
bl: Point;
br: Point;
};
export type TSVGReviver = (markup: string) => string;
export type TValidToObjectMethod = 'toDatalessObject' | 'toObject';
export type TCacheCanvasDimensions = {
width: number;
height: number;
zoomX: number;
zoomY: number;
x: number;
y: number;
};
export type TRectBounds = [min: XY, max: XY];
export type TToCanvasElementOptions<T extends BaseFabricObject = BaseFabricObject> = {
left?: number;
top?: number;
width?: number;
height?: number;
filter?: (object: T) => boolean;
};
export type TDataUrlOptions<T extends BaseFabricObject = BaseFabricObject> = TToCanvasElementOptions<T> & {
multiplier: number;
format?: ImageFormat;
quality?: number;
enableRetinaScaling?: boolean;
};
export type Abortable = {
/**
* handle aborting
* @see https://developer.mozilla.org/en-US/docs/Web/API/AbortController/signal
*/
signal?: AbortSignal;
};
export type TOptions<T> = Partial<T> & Record<string, any>;
export {};
//# sourceMappingURL=typedefs.d.ts.map