@pixldocs/canvas-renderer 0.5.428 → 0.5.430
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-lHxjPVDE.js → index-Bae6ojJH.js} +52 -7
- package/dist/index-Bae6ojJH.js.map +1 -0
- package/dist/{index-Dk0BUnsP.cjs → index-lW4vxeRT.cjs} +52 -7
- package/dist/index-lW4vxeRT.cjs.map +1 -0
- package/dist/index.cjs +1 -1
- package/dist/index.js +1 -1
- package/dist/{vectorPdfExport-DrbrYFkJ.cjs → vectorPdfExport-CTWkNuBw.cjs} +4 -4
- package/dist/{vectorPdfExport-DrbrYFkJ.cjs.map → vectorPdfExport-CTWkNuBw.cjs.map} +1 -1
- package/dist/{vectorPdfExport-CsSQj8-v.js → vectorPdfExport-DIqgjv2w.js} +4 -4
- package/dist/{vectorPdfExport-CsSQj8-v.js.map → vectorPdfExport-DIqgjv2w.js.map} +1 -1
- package/package.json +1 -1
- package/dist/index-Dk0BUnsP.cjs.map +0 -1
- package/dist/index-lHxjPVDE.js.map +0 -1
|
@@ -5039,7 +5039,13 @@ function updateCoverLayout(g) {
|
|
|
5039
5039
|
scaleX: finalScale,
|
|
5040
5040
|
scaleY: finalScale,
|
|
5041
5041
|
originX: "center",
|
|
5042
|
-
originY: "center"
|
|
5042
|
+
originY: "center",
|
|
5043
|
+
// Always keep inner bitmap axis-aligned within the frame; the parent
|
|
5044
|
+
// crop group owns the rotation. See createMaskedImageElement for the
|
|
5045
|
+
// full rationale.
|
|
5046
|
+
angle: 0,
|
|
5047
|
+
skewX: 0,
|
|
5048
|
+
skewY: 0
|
|
5043
5049
|
});
|
|
5044
5050
|
const dispW = iw * finalScale;
|
|
5045
5051
|
const dispH = ih * finalScale;
|
|
@@ -5475,6 +5481,16 @@ async function createMaskedImageElement({
|
|
|
5475
5481
|
evented: false,
|
|
5476
5482
|
opacity: 1,
|
|
5477
5483
|
// CRITICAL: Always 1 for child - group handles opacity
|
|
5484
|
+
// Force the inner bitmap's angle to 0 so it inherits ONLY the parent
|
|
5485
|
+
// crop group's rotation. Some image sources (e.g. previously-rotated
|
|
5486
|
+
// FabricImage objects, EXIF-baked PNGs, or drop-replacement payloads
|
|
5487
|
+
// that carried a stale `angle` from a logical group) arrive here with
|
|
5488
|
+
// a non-zero local angle. Without this reset the bitmap renders at
|
|
5489
|
+
// (groupAngle + imgAngle) after reload, while the frame only carries
|
|
5490
|
+
// groupAngle — making the photo look mis-rotated inside its frame.
|
|
5491
|
+
angle: 0,
|
|
5492
|
+
skewX: 0,
|
|
5493
|
+
skewY: 0,
|
|
5478
5494
|
// Preserve image-level caching settings if they exist
|
|
5479
5495
|
objectCaching: img.objectCaching ?? false,
|
|
5480
5496
|
noScaleCache: img.noScaleCache ?? true
|
|
@@ -16497,6 +16513,25 @@ const PageCanvas = react.forwardRef(
|
|
|
16497
16513
|
}
|
|
16498
16514
|
updateElement(objId, elementUpdate, { recordHistory: false, skipLayoutRecalc: true });
|
|
16499
16515
|
obj.setCoords();
|
|
16516
|
+
try {
|
|
16517
|
+
const isImg = obj instanceof fabric__namespace.FabricImage || obj.__cropGroup;
|
|
16518
|
+
if (isImg) {
|
|
16519
|
+
console.log("[Pixldocs:rotation-persist]", {
|
|
16520
|
+
objId,
|
|
16521
|
+
fabricType: obj.type,
|
|
16522
|
+
isCropGroup: !!obj.__cropGroup,
|
|
16523
|
+
isActiveSelection,
|
|
16524
|
+
objAngle: obj.angle,
|
|
16525
|
+
activeAngle: activeObj == null ? void 0 : activeObj.angle,
|
|
16526
|
+
decomposedAngle: decomposed == null ? void 0 : decomposed.angle,
|
|
16527
|
+
persistedAngle: elementUpdate.angle,
|
|
16528
|
+
persistedLeft: elementUpdate.left,
|
|
16529
|
+
persistedTop: elementUpdate.top,
|
|
16530
|
+
sourceElementAngle: sourceElement == null ? void 0 : sourceElement.angle
|
|
16531
|
+
});
|
|
16532
|
+
}
|
|
16533
|
+
} catch {
|
|
16534
|
+
}
|
|
16500
16535
|
}
|
|
16501
16536
|
const pageChildrenForReflow = ((_j = useEditorStore.getState().canvas.pages.find((p) => p.id === pageId)) == null ? void 0 : _j.children) ?? [];
|
|
16502
16537
|
const stackGroupsToReflow = /* @__PURE__ */ new Set();
|
|
@@ -16668,7 +16703,7 @@ const PageCanvas = react.forwardRef(
|
|
|
16668
16703
|
}
|
|
16669
16704
|
});
|
|
16670
16705
|
fabricCanvas.on("mouse:dblclick", (e) => {
|
|
16671
|
-
var _a2, _b2;
|
|
16706
|
+
var _a2, _b2, _c2;
|
|
16672
16707
|
if (!isActiveRef.current || !allowEditing) return;
|
|
16673
16708
|
let target = e.target;
|
|
16674
16709
|
if (!target) {
|
|
@@ -16680,6 +16715,16 @@ const PageCanvas = react.forwardRef(
|
|
|
16680
16715
|
const innerImg = ct == null ? void 0 : ct._img;
|
|
16681
16716
|
const innerSrc = ((_a2 = innerImg == null ? void 0 : innerImg.getSrc) == null ? void 0 : _a2.call(innerImg)) || ((_b2 = innerImg == null ? void 0 : innerImg._originalElement) == null ? void 0 : _b2.src) || (innerImg == null ? void 0 : innerImg.src) || "";
|
|
16682
16717
|
const isPlaceholder = !innerSrc || innerSrc === EMPTY_IMAGE_PLACEHOLDER_DATA_URL;
|
|
16718
|
+
const targetId = getObjectId(target);
|
|
16719
|
+
const pageChildrenForCrop = ((_c2 = useEditorStore.getState().canvas.pages.find((p) => p.id === pageId)) == null ? void 0 : _c2.children) ?? [];
|
|
16720
|
+
const parentForCrop = targetId ? findParentGroup(pageChildrenForCrop, targetId) : null;
|
|
16721
|
+
const isInsideGroup = !!parentForCrop;
|
|
16722
|
+
if (isInsideGroup) {
|
|
16723
|
+
sonner.toast.info("Ungroup to crop this image", {
|
|
16724
|
+
description: "Crop mode is disabled for images inside a group. Select the group and ungroup first."
|
|
16725
|
+
});
|
|
16726
|
+
return;
|
|
16727
|
+
}
|
|
16683
16728
|
if (innerImg && !isPlaceholder && !isCropGroupInCropMode(target)) {
|
|
16684
16729
|
enterCropMode(target);
|
|
16685
16730
|
return;
|
|
@@ -25706,9 +25751,9 @@ function captureFabricCanvasSvgForPdf(fabricInstance, canvasWidth, canvasHeight)
|
|
|
25706
25751
|
}
|
|
25707
25752
|
return svgString;
|
|
25708
25753
|
}
|
|
25709
|
-
const resolvedPackageVersion = "0.5.
|
|
25754
|
+
const resolvedPackageVersion = "0.5.430";
|
|
25710
25755
|
const PACKAGE_VERSION = resolvedPackageVersion;
|
|
25711
|
-
const DEPLOYMENT_VERSION_MARKER = "__PIXLDOCS_CANVAS_RENDERER_VERSION__:0.5.
|
|
25756
|
+
const DEPLOYMENT_VERSION_MARKER = "__PIXLDOCS_CANVAS_RENDERER_VERSION__:0.5.430";
|
|
25712
25757
|
const roundParityValue = (value) => {
|
|
25713
25758
|
if (typeof value !== "number") return value;
|
|
25714
25759
|
return Number.isFinite(value) ? Number(value.toFixed(3)) : value;
|
|
@@ -26522,7 +26567,7 @@ class PixldocsRenderer {
|
|
|
26522
26567
|
await this.waitForCanvasScene(container, cloned, i);
|
|
26523
26568
|
}
|
|
26524
26569
|
console.log(`[canvas-renderer][pdf-unified] mounted ${cloned.pages.length} page(s), handing off to client exportMultiPagePdf`);
|
|
26525
|
-
const { exportMultiPagePdf, preparePagesForExport } = await Promise.resolve().then(() => require("./vectorPdfExport-
|
|
26570
|
+
const { exportMultiPagePdf, preparePagesForExport } = await Promise.resolve().then(() => require("./vectorPdfExport-CTWkNuBw.cjs"));
|
|
26526
26571
|
const prepared = preparePagesForExport(
|
|
26527
26572
|
cloned.pages,
|
|
26528
26573
|
canvasWidth,
|
|
@@ -28842,7 +28887,7 @@ async function prepareLiveCanvasSvgForPdf(rawSvg, pageWidth, pageHeight, pageKey
|
|
|
28842
28887
|
if (options == null ? void 0 : options.stripPageBackground) stripRootPageBackgroundFromSvg(svgToDraw);
|
|
28843
28888
|
sanitizeSvgTreeForPdf(svgToDraw);
|
|
28844
28889
|
try {
|
|
28845
|
-
const { bakeTextAnchorPositionsFromLiveSvg, logTextMeasurementDiagnostic } = await Promise.resolve().then(() => require("./vectorPdfExport-
|
|
28890
|
+
const { bakeTextAnchorPositionsFromLiveSvg, logTextMeasurementDiagnostic } = await Promise.resolve().then(() => require("./vectorPdfExport-CTWkNuBw.cjs"));
|
|
28846
28891
|
try {
|
|
28847
28892
|
await logTextMeasurementDiagnostic(svgToDraw);
|
|
28848
28893
|
} catch {
|
|
@@ -29239,4 +29284,4 @@ exports.setAutoShrinkDebug = setAutoShrinkDebug;
|
|
|
29239
29284
|
exports.setBundledAssetPrefixes = setBundledAssetPrefixes;
|
|
29240
29285
|
exports.warmResolvedTemplateForPreview = warmResolvedTemplateForPreview;
|
|
29241
29286
|
exports.warmTemplateFromForm = warmTemplateFromForm;
|
|
29242
|
-
//# sourceMappingURL=index-
|
|
29287
|
+
//# sourceMappingURL=index-lW4vxeRT.cjs.map
|