fabric
Version:
Object model for HTML5 canvas, and SVG-to-canvas parser. Backed by jsdom and node-canvas.
48 lines (41 loc) • 1.5 kB
text/typescript
import type { FabricObject } from '../shapes/Object/Object';
import type { TFiller } from '../typedefs';
import type { FabricText } from '../shapes/Text/Text';
import type { Pattern } from '../Pattern';
import type { Path } from '../shapes/Path';
import type { ActiveSelection } from '../shapes/ActiveSelection';
export const isFiller = (
filler: TFiller | string | null,
): filler is TFiller => {
return !!filler && (filler as TFiller).toLive !== undefined;
};
export const isSerializableFiller = (
filler: TFiller | string | null,
): filler is TFiller => {
return !!filler && typeof (filler as TFiller).toObject === 'function';
};
export const isPattern = (filler: TFiller): filler is Pattern => {
return (
!!filler && (filler as Pattern).offsetX !== undefined && 'source' in filler
);
};
export const isTextObject = (
fabricObject?: FabricObject,
): fabricObject is FabricText => {
return (
!!fabricObject &&
typeof (fabricObject as FabricText)._renderText === 'function'
);
};
export const isPath = (fabricObject?: FabricObject): fabricObject is Path => {
// we could use instanceof but that would mean pulling in Text code for a simple check
// @todo discuss what to do and how to do
return (
!!fabricObject &&
typeof (fabricObject as Path)._renderPathCommands === 'function'
);
};
export const isActiveSelection = (
fabricObject?: FabricObject,
): fabricObject is ActiveSelection =>
!!fabricObject && 'multiSelectionStacking' in fabricObject;