UNPKG

fabric

Version:

Object model for HTML5 canvas, and SVG-to-canvas parser. Backed by jsdom and node-canvas.

37 lines (36 loc) 1.97 kB
import { BaseFabricObject, FabricImage, Group, Point } from "fabric"; //#region extensions/data_updaters/origins/index.ts /** * Updates the fromObject function of a class to return a version that can restore old data * with values of originX and originY that are different from 'center', 'center' * Used to upgrade from fabric 6 to fabric 7 * @param originalFn the original fromObject function of an object, * @param defaultOriginX optional default value for non exported originX, * @param defaultOriginY optional default value for non exported originY, * @returns a wrapped fromObject function for the object */ const originUpdaterWrapper = (originalFn, defaultOriginX = "left", defaultOriginY = "top") => async function(serializedObject, ...args) { const { originX = defaultOriginX, originY = defaultOriginY } = serializedObject; delete serializedObject.originX; delete serializedObject.originY; const originalObject = await originalFn.call(this, serializedObject, ...args); const actualPosition = new Point(originalObject.left, originalObject.top); originalObject.setPositionByOrigin(actualPosition, originX, originY); return originalObject; }; /** * Wraps and override the current fabricJS fromObject static functions * Used to upgrade from fabric 7 to fabric 8 * If you used to export with includeDefaultValues = false, you have to specify * which were yours default origins values * @param originX optional default value for non exported originX, * @param originY optional default value for non exported originY, */ const installOriginWrapperUpdater = (originX, originY) => { BaseFabricObject._fromObject = originUpdaterWrapper(BaseFabricObject._fromObject, originX, originY); FabricImage.fromObject = originUpdaterWrapper(FabricImage.fromObject, originX, originY); Group.fromObject = originUpdaterWrapper(Group.fromObject, originX, originY); }; //#endregion export { installOriginWrapperUpdater, originUpdaterWrapper }; //# sourceMappingURL=index.mjs.map