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
JavaScript
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