@bwp-web/canvas 0.6.0 → 0.6.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/dist/index.cjs CHANGED
@@ -2259,14 +2259,62 @@ function serializeCanvas(canvas, options) {
2259
2259
  obj.set({ rx: base.rx, ry: base.ry });
2260
2260
  }
2261
2261
  });
2262
+ const savedOrigins = /* @__PURE__ */ new Map();
2263
+ canvas.forEachObject((obj) => {
2264
+ if (obj.originX === "left" && obj.originY === "top") return;
2265
+ savedOrigins.set(obj, {
2266
+ originX: obj.originX,
2267
+ originY: obj.originY,
2268
+ left: obj.left ?? 0,
2269
+ top: obj.top ?? 0
2270
+ });
2271
+ const leftTop = obj.getPositionByOrigin("left", "top");
2272
+ obj.set({ originX: "left", originY: "top", left: leftTop.x, top: leftTop.y });
2273
+ });
2274
+ const bg = canvas.backgroundImage;
2275
+ let savedBgOrigin = null;
2276
+ if (bg instanceof import_fabric16.FabricImage && (bg.originX !== "left" || bg.originY !== "top")) {
2277
+ savedBgOrigin = {
2278
+ originX: bg.originX,
2279
+ originY: bg.originY,
2280
+ left: bg.left ?? 0,
2281
+ top: bg.top ?? 0
2282
+ };
2283
+ const leftTop = bg.getPositionByOrigin("left", "top");
2284
+ bg.set({ originX: "left", originY: "top", left: leftTop.x, top: leftTop.y });
2285
+ }
2286
+ const savedData = /* @__PURE__ */ new Map();
2287
+ canvas.forEachObject((obj) => {
2288
+ const base = strokeBaseMap.get(obj) ?? obj.strokeWidth;
2289
+ if (base !== void 0 && base !== 0 && obj.data) {
2290
+ savedData.set(obj, obj.data);
2291
+ obj.data = {
2292
+ ...obj.data,
2293
+ strokeWidthBase: base
2294
+ };
2295
+ }
2296
+ });
2262
2297
  const json = canvas.toObject(properties);
2263
2298
  delete json.backgroundColor;
2299
+ json.backgroundFilters = {
2300
+ opacity: getBackgroundContrast(canvas),
2301
+ inverted: getBackgroundInverted(canvas)
2302
+ };
2264
2303
  scaledWidths.forEach((scaled, obj) => {
2265
2304
  obj.strokeWidth = scaled;
2266
2305
  });
2267
2306
  appliedRadii.forEach((radii, obj) => {
2268
2307
  obj.set({ rx: radii.rx, ry: radii.ry });
2269
2308
  });
2309
+ savedOrigins.forEach((saved, obj) => {
2310
+ obj.set(saved);
2311
+ });
2312
+ if (savedBgOrigin && bg instanceof import_fabric16.FabricImage) {
2313
+ bg.set(savedBgOrigin);
2314
+ }
2315
+ savedData.forEach((originalData, obj) => {
2316
+ obj.data = originalData;
2317
+ });
2270
2318
  return json;
2271
2319
  }
2272
2320
  async function loadCanvas(canvas, json, options) {