fabric
Version:
Object model for HTML5 canvas, and SVG-to-canvas parser. Backed by jsdom and node-canvas.
1 lines • 3.18 kB
Source Map (JSON)
{"version":3,"file":"index.mjs","names":[],"sources":["../../../extensions/data_updaters/origins/index.ts"],"sourcesContent":["import {\n Point,\n FabricImage,\n Group,\n BaseFabricObject,\n type FabricObject,\n type TOriginX,\n type TOriginY,\n} from 'fabric';\n\n/**\n * Updates the fromObject function of a class to return a version that can restore old data\n * with values of originX and originY that are different from 'center', 'center'\n * Used to upgrade from fabric 6 to fabric 7\n * @param originalFn the original fromObject function of an object,\n * @param defaultOriginX optional default value for non exported originX,\n * @param defaultOriginY optional default value for non exported originY,\n * @returns a wrapped fromObject function for the object\n */\nexport const originUpdaterWrapper = <T extends FabricObject = FabricObject>(\n originalFn: (...args: any[]) => Promise<T>,\n defaultOriginX: TOriginX = 'left',\n defaultOriginY: TOriginY = 'top',\n): ((...args: any[]) => Promise<T>) =>\n async function (this: T, serializedObject, ...args) {\n // we default to left and top because those are defaults before deprecation\n const { originX = defaultOriginX, originY = defaultOriginY } =\n serializedObject;\n // and we do not want to pass those properties on the object anymore\n delete serializedObject.originX;\n delete serializedObject.originY;\n const originalObject = await originalFn.call(\n this,\n serializedObject,\n ...args,\n );\n const actualPosition = new Point(originalObject.left, originalObject.top);\n originalObject.setPositionByOrigin(actualPosition, originX, originY);\n return originalObject;\n };\n\n/**\n * Wraps and override the current fabricJS fromObject static functions\n * Used to upgrade from fabric 7 to fabric 8\n * If you used to export with includeDefaultValues = false, you have to specify\n * which were yours default origins values\n * @param originX optional default value for non exported originX,\n * @param originY optional default value for non exported originY,\n */\nexport const installOriginWrapperUpdater = (\n originX?: TOriginX,\n originY?: TOriginY,\n) => {\n // @ts-expect-error the _fromObject parameter could be instantiated differently\n BaseFabricObject._fromObject = originUpdaterWrapper(\n BaseFabricObject._fromObject,\n originX,\n originY,\n );\n // FabricImage and Group do not use _fromObject\n FabricImage.fromObject = originUpdaterWrapper<FabricImage>(\n FabricImage.fromObject,\n originX,\n originY,\n );\n Group.fromObject = originUpdaterWrapper<Group>(\n Group.fromObject,\n originX,\n originY,\n );\n};\n"],"mappings":";;;;;;;;;;;AAmBA,MAAa,wBACX,YACA,iBAA2B,QAC3B,iBAA2B,UAE3B,eAAyB,kBAAkB,GAAG,MAAM;CAElD,MAAM,EAAE,UAAU,gBAAgB,UAAU,mBAC1C;AAEF,QAAO,iBAAiB;AACxB,QAAO,iBAAiB;CACxB,MAAM,iBAAiB,MAAM,WAAW,KACtC,MACA,kBACA,GAAG,KACJ;CACD,MAAM,iBAAiB,IAAI,MAAM,eAAe,MAAM,eAAe,IAAI;AACzE,gBAAe,oBAAoB,gBAAgB,SAAS,QAAQ;AACpE,QAAO;;;;;;;;;;AAWX,MAAa,+BACX,SACA,YACG;AAEH,kBAAiB,cAAc,qBAC7B,iBAAiB,aACjB,SACA,QACD;AAED,aAAY,aAAa,qBACvB,YAAY,YACZ,SACA,QACD;AACD,OAAM,aAAa,qBACjB,MAAM,YACN,SACA,QACD"}