@pixldocs/canvas-renderer 0.5.344 → 0.5.346
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-Byw3hiCQ.cjs → index-C6VMQJMY.cjs} +78 -11
- package/dist/index-C6VMQJMY.cjs.map +1 -0
- package/dist/{index-C-BVebqn.js → index-Jiw7-9ee.js} +78 -11
- package/dist/index-Jiw7-9ee.js.map +1 -0
- package/dist/index.cjs +1 -1
- package/dist/index.js +1 -1
- package/dist/{vectorPdfExport-C2_f1pzv.js → vectorPdfExport-Bbi4foK-.js} +4 -4
- package/dist/{vectorPdfExport-C2_f1pzv.js.map → vectorPdfExport-Bbi4foK-.js.map} +1 -1
- package/dist/{vectorPdfExport-DslpfbFV.cjs → vectorPdfExport-DRpVTciP.cjs} +4 -4
- package/dist/{vectorPdfExport-DslpfbFV.cjs.map → vectorPdfExport-DRpVTciP.cjs.map} +1 -1
- package/package.json +1 -1
- package/dist/index-Byw3hiCQ.cjs.map +0 -1
- package/dist/index-C-BVebqn.js.map +0 -1
|
@@ -12345,6 +12345,7 @@ const PageCanvas = react.forwardRef(
|
|
|
12345
12345
|
selectionLeft: rect.left,
|
|
12346
12346
|
selectionTop: rect.top
|
|
12347
12347
|
};
|
|
12348
|
+
prepareGroupSelectionTransformStart(active);
|
|
12348
12349
|
}
|
|
12349
12350
|
if (fabricCanvas._currentTransform) {
|
|
12350
12351
|
fabricCanvas.__isUserTransforming = true;
|
|
@@ -14480,7 +14481,7 @@ const PageCanvas = react.forwardRef(
|
|
|
14480
14481
|
});
|
|
14481
14482
|
let cropGroupSaveTimer = null;
|
|
14482
14483
|
fabricCanvas.on("object:modified", (e) => {
|
|
14483
|
-
var _a2, _b2, _c, _d, _e, _f, _g, _h, _i, _j;
|
|
14484
|
+
var _a2, _b2, _c, _d, _e, _f, _g, _h, _i, _j, _k;
|
|
14484
14485
|
try {
|
|
14485
14486
|
dragStarted = false;
|
|
14486
14487
|
setGuides([]);
|
|
@@ -14988,9 +14989,8 @@ const PageCanvas = react.forwardRef(
|
|
|
14988
14989
|
}
|
|
14989
14990
|
if (!isActiveSelectionSideResize && !hadScale && !hadRotation && (Math.abs(deltaX) > 0.1 || Math.abs(deltaY) > 0.1)) {
|
|
14990
14991
|
const { updateNode: updateNodeStore, commitHistory: commitHistoryStore, getCurrentElements } = useEditorStore.getState();
|
|
14991
|
-
const
|
|
14992
|
-
|
|
14993
|
-
updateNodeStore(groupToMove.id, { left: newLeft, top: newTop }, { recordHistory: false, skipLayoutRecalc: true });
|
|
14992
|
+
const storePos = absoluteToStorePosition(movedGroupLeft, movedGroupTop, groupToMove.id, pageChildren2);
|
|
14993
|
+
updateNodeStore(groupToMove.id, { left: storePos.left, top: storePos.top }, { recordHistory: false, skipLayoutRecalc: true });
|
|
14994
14994
|
commitHistoryStore();
|
|
14995
14995
|
pendingGroupDrillInRef.current = null;
|
|
14996
14996
|
fabricCanvas.__activeEditingGroupId = null;
|
|
@@ -15030,6 +15030,37 @@ const PageCanvas = react.forwardRef(
|
|
|
15030
15030
|
}
|
|
15031
15031
|
}
|
|
15032
15032
|
const pendingCropGroupFrameBakes = [];
|
|
15033
|
+
const logicalGroupSelectionId = activeObj instanceof fabric__namespace.ActiveSelection ? activeObj.__pixldocsGroupSelection : void 0;
|
|
15034
|
+
const isLogicalGroupAS = !!logicalGroupSelectionId && !(activeObj == null ? void 0 : activeObj.__cropGroup) && !(activeObj == null ? void 0 : activeObj.__docuforgeSectionGroup);
|
|
15035
|
+
const logicalGroupNodeForBake = logicalGroupSelectionId ? findNodeById(pageChildren2, logicalGroupSelectionId) : null;
|
|
15036
|
+
const asAngleForBake = isLogicalGroupAS && activeObj ? normalizeAngle(Number((logicalGroupNodeForBake == null ? void 0 : logicalGroupNodeForBake.angle) ?? activeObj.angle ?? 0)) : 0;
|
|
15037
|
+
const logicalGroupFinalFrame = (() => {
|
|
15038
|
+
var _a3;
|
|
15039
|
+
if (!isLogicalGroupAS || !logicalGroupSelectionId || !(activeObj instanceof fabric__namespace.ActiveSelection)) return null;
|
|
15040
|
+
const baseline = ((_a3 = groupSelectionTransformStartRef.current) == null ? void 0 : _a3.groupId) === logicalGroupSelectionId ? groupSelectionTransformStartRef.current : null;
|
|
15041
|
+
const localWidth = Math.max(1, (activeObj.width ?? (baseline == null ? void 0 : baseline.groupWidth) ?? 1) * Math.abs(activeObj.scaleX ?? 1));
|
|
15042
|
+
const localHeight = Math.max(1, (activeObj.height ?? (baseline == null ? void 0 : baseline.groupHeight) ?? 1) * Math.abs(activeObj.scaleY ?? 1));
|
|
15043
|
+
const center = activeObj.getCenterPoint();
|
|
15044
|
+
return {
|
|
15045
|
+
groupId: logicalGroupSelectionId,
|
|
15046
|
+
left: center.x - localWidth / 2,
|
|
15047
|
+
top: center.y - localHeight / 2,
|
|
15048
|
+
width: localWidth,
|
|
15049
|
+
height: localHeight,
|
|
15050
|
+
centerX: center.x,
|
|
15051
|
+
centerY: center.y,
|
|
15052
|
+
angle: asAngleForBake,
|
|
15053
|
+
matrix: fabric__namespace.util.composeMatrix({
|
|
15054
|
+
translateX: center.x,
|
|
15055
|
+
translateY: center.y,
|
|
15056
|
+
angle: asAngleForBake,
|
|
15057
|
+
scaleX: 1,
|
|
15058
|
+
scaleY: 1,
|
|
15059
|
+
skewX: 0,
|
|
15060
|
+
skewY: 0
|
|
15061
|
+
})
|
|
15062
|
+
};
|
|
15063
|
+
})();
|
|
15033
15064
|
for (const obj of activeObjects) {
|
|
15034
15065
|
const objId = getObjectId(obj);
|
|
15035
15066
|
if (!objId || objId === "__background__") continue;
|
|
@@ -15120,6 +15151,7 @@ const PageCanvas = react.forwardRef(
|
|
|
15120
15151
|
let finalAngle = decomposed.angle;
|
|
15121
15152
|
let finalSkewX = decomposed.skewX;
|
|
15122
15153
|
let finalSkewY = decomposed.skewY;
|
|
15154
|
+
let finalAngleFromDecomposed = true;
|
|
15123
15155
|
if (obj instanceof fabric__namespace.Group && obj.__cropGroup) {
|
|
15124
15156
|
const ct = obj.__cropData;
|
|
15125
15157
|
if (ct) {
|
|
@@ -15182,6 +15214,7 @@ const PageCanvas = react.forwardRef(
|
|
|
15182
15214
|
finalAngle = (sourceElement == null ? void 0 : sourceElement.angle) ?? obj.angle ?? decomposed.angle;
|
|
15183
15215
|
finalSkewX = (sourceElement == null ? void 0 : sourceElement.skewX) ?? obj.skewX ?? 0;
|
|
15184
15216
|
finalSkewY = (sourceElement == null ? void 0 : sourceElement.skewY) ?? obj.skewY ?? 0;
|
|
15217
|
+
if ((sourceElement == null ? void 0 : sourceElement.angle) !== void 0 || obj.angle !== void 0) finalAngleFromDecomposed = false;
|
|
15185
15218
|
}
|
|
15186
15219
|
obj.set({ scaleX: 1, scaleY: 1 });
|
|
15187
15220
|
const newSrc = renderSmartElementToDataUri(sourceElement.smartElementType, sourceElement.smartProps, bakedW, bakedH);
|
|
@@ -15249,6 +15282,7 @@ const PageCanvas = react.forwardRef(
|
|
|
15249
15282
|
finalAngle = (sourceElement == null ? void 0 : sourceElement.angle) ?? obj.angle ?? decomposed.angle;
|
|
15250
15283
|
finalSkewX = (sourceElement == null ? void 0 : sourceElement.skewX) ?? obj.skewX ?? 0;
|
|
15251
15284
|
finalSkewY = (sourceElement == null ? void 0 : sourceElement.skewY) ?? obj.skewY ?? 0;
|
|
15285
|
+
if ((sourceElement == null ? void 0 : sourceElement.angle) !== void 0 || obj.angle !== void 0) finalAngleFromDecomposed = false;
|
|
15252
15286
|
}
|
|
15253
15287
|
try {
|
|
15254
15288
|
const angleRad = (finalAngle ?? 0) * Math.PI / 180;
|
|
@@ -15314,6 +15348,7 @@ const PageCanvas = react.forwardRef(
|
|
|
15314
15348
|
finalAngle = (sourceElement == null ? void 0 : sourceElement.angle) ?? obj.angle ?? decomposed.angle;
|
|
15315
15349
|
finalSkewX = (sourceElement == null ? void 0 : sourceElement.skewX) ?? obj.skewX ?? 0;
|
|
15316
15350
|
finalSkewY = (sourceElement == null ? void 0 : sourceElement.skewY) ?? obj.skewY ?? 0;
|
|
15351
|
+
if ((sourceElement == null ? void 0 : sourceElement.angle) !== void 0 || obj.angle !== void 0) finalAngleFromDecomposed = false;
|
|
15317
15352
|
}
|
|
15318
15353
|
} else if (obj instanceof fabric__namespace.Textbox && isActiveSelection && (Math.abs((decomposed.scaleX ?? 1) - 1) > 1e-3 || Math.abs((decomposed.scaleY ?? 1) - 1) > 1e-3)) {
|
|
15319
15354
|
const sx = Math.abs(decomposed.scaleX || 1);
|
|
@@ -15469,7 +15504,21 @@ const PageCanvas = react.forwardRef(
|
|
|
15469
15504
|
const state = useEditorStore.getState();
|
|
15470
15505
|
const page = state.canvas.pages.find((p) => p.id === pageId);
|
|
15471
15506
|
const pageChildrenForSave = (page == null ? void 0 : page.children) ?? [];
|
|
15472
|
-
const storePos =
|
|
15507
|
+
const storePos = (logicalGroupFinalFrame == null ? void 0 : logicalGroupFinalFrame.groupId) === logicalGroupSelectionId ? (() => {
|
|
15508
|
+
const localCenter = fabric__namespace.util.transformPoint(
|
|
15509
|
+
new fabric__namespace.Point(decomposed.translateX ?? 0, decomposed.translateY ?? 0),
|
|
15510
|
+
fabric__namespace.util.invertTransform(logicalGroupFinalFrame.matrix)
|
|
15511
|
+
);
|
|
15512
|
+
const localAngle = finalAngleFromDecomposed ? ((Number(finalAngle ?? 0) - asAngleForBake) % 360 + 540) % 360 - 180 : Number(finalAngle ?? 0);
|
|
15513
|
+
const localAngleRad = localAngle * Math.PI / 180;
|
|
15514
|
+
return {
|
|
15515
|
+
left: localCenter.x - finalWidth / 2 * Math.cos(localAngleRad) + finalHeight / 2 * Math.sin(localAngleRad) + logicalGroupFinalFrame.width / 2,
|
|
15516
|
+
top: localCenter.y - finalWidth / 2 * Math.sin(localAngleRad) - finalHeight / 2 * Math.cos(localAngleRad) + logicalGroupFinalFrame.height / 2
|
|
15517
|
+
};
|
|
15518
|
+
})() : absoluteToStorePosition(absoluteLeft, absoluteTop, objId, pageChildrenForSave);
|
|
15519
|
+
if (isLogicalGroupAS && finalAngleFromDecomposed && typeof finalAngle === "number") {
|
|
15520
|
+
finalAngle = ((finalAngle - asAngleForBake) % 360 + 540) % 360 - 180;
|
|
15521
|
+
}
|
|
15473
15522
|
const isLineObj = obj instanceof fabric__namespace.Line;
|
|
15474
15523
|
const isAutoShrinkText = (sourceElement == null ? void 0 : sourceElement.type) === "text" && sourceElement.overflowPolicy === "auto-shrink";
|
|
15475
15524
|
const autoShrinkStoredHeight = isAutoShrinkText ? sourceElement.height : void 0;
|
|
@@ -15531,7 +15580,25 @@ const PageCanvas = react.forwardRef(
|
|
|
15531
15580
|
updateElement(objId, elementUpdate, { recordHistory: false, skipLayoutRecalc: true });
|
|
15532
15581
|
obj.setCoords();
|
|
15533
15582
|
}
|
|
15534
|
-
|
|
15583
|
+
if (isLogicalGroupAS && logicalGroupSelectionId && activeObj instanceof fabric__namespace.ActiveSelection) {
|
|
15584
|
+
try {
|
|
15585
|
+
const pageChildrenForGroup = ((_j = useEditorStore.getState().canvas.pages.find((p) => p.id === pageId)) == null ? void 0 : _j.children) ?? [];
|
|
15586
|
+
const groupNode = findNodeById(pageChildrenForGroup, logicalGroupSelectionId);
|
|
15587
|
+
if (groupNode && logicalGroupFinalFrame) {
|
|
15588
|
+
const storePosGroup = absoluteToStorePosition(logicalGroupFinalFrame.left, logicalGroupFinalFrame.top, logicalGroupSelectionId, pageChildrenForGroup);
|
|
15589
|
+
useEditorStore.getState().updateNode(logicalGroupSelectionId, {
|
|
15590
|
+
left: storePosGroup.left,
|
|
15591
|
+
top: storePosGroup.top,
|
|
15592
|
+
width: logicalGroupFinalFrame.width,
|
|
15593
|
+
height: logicalGroupFinalFrame.height,
|
|
15594
|
+
angle: logicalGroupFinalFrame.angle
|
|
15595
|
+
}, { recordHistory: false, skipLayoutRecalc: true });
|
|
15596
|
+
}
|
|
15597
|
+
} catch (err) {
|
|
15598
|
+
console.warn("[Pixldocs] logical-group envelope persist failed", err);
|
|
15599
|
+
}
|
|
15600
|
+
}
|
|
15601
|
+
const pageChildrenForReflow = ((_k = useEditorStore.getState().canvas.pages.find((p) => p.id === pageId)) == null ? void 0 : _k.children) ?? [];
|
|
15535
15602
|
const stackGroupsToReflow = /* @__PURE__ */ new Set();
|
|
15536
15603
|
for (const id of modifiedIdsThisRound) {
|
|
15537
15604
|
const parent = findParentGroup(pageChildrenForReflow, id);
|
|
@@ -24672,9 +24739,9 @@ function captureFabricCanvasSvgForPdf(fabricInstance, canvasWidth, canvasHeight)
|
|
|
24672
24739
|
}
|
|
24673
24740
|
return svgString;
|
|
24674
24741
|
}
|
|
24675
|
-
const resolvedPackageVersion = "0.5.
|
|
24742
|
+
const resolvedPackageVersion = "0.5.346";
|
|
24676
24743
|
const PACKAGE_VERSION = resolvedPackageVersion;
|
|
24677
|
-
const DEPLOYMENT_VERSION_MARKER = "__PIXLDOCS_CANVAS_RENDERER_VERSION__:0.5.
|
|
24744
|
+
const DEPLOYMENT_VERSION_MARKER = "__PIXLDOCS_CANVAS_RENDERER_VERSION__:0.5.346";
|
|
24678
24745
|
const roundParityValue = (value) => {
|
|
24679
24746
|
if (typeof value !== "number") return value;
|
|
24680
24747
|
return Number.isFinite(value) ? Number(value.toFixed(3)) : value;
|
|
@@ -25488,7 +25555,7 @@ class PixldocsRenderer {
|
|
|
25488
25555
|
await this.waitForCanvasScene(container, cloned, i);
|
|
25489
25556
|
}
|
|
25490
25557
|
console.log(`[canvas-renderer][pdf-unified] mounted ${cloned.pages.length} page(s), handing off to client exportMultiPagePdf`);
|
|
25491
|
-
const { exportMultiPagePdf, preparePagesForExport } = await Promise.resolve().then(() => require("./vectorPdfExport-
|
|
25558
|
+
const { exportMultiPagePdf, preparePagesForExport } = await Promise.resolve().then(() => require("./vectorPdfExport-DRpVTciP.cjs"));
|
|
25492
25559
|
const prepared = preparePagesForExport(
|
|
25493
25560
|
cloned.pages,
|
|
25494
25561
|
canvasWidth,
|
|
@@ -27808,7 +27875,7 @@ async function prepareLiveCanvasSvgForPdf(rawSvg, pageWidth, pageHeight, pageKey
|
|
|
27808
27875
|
if (options == null ? void 0 : options.stripPageBackground) stripRootPageBackgroundFromSvg(svgToDraw);
|
|
27809
27876
|
sanitizeSvgTreeForPdf(svgToDraw);
|
|
27810
27877
|
try {
|
|
27811
|
-
const { bakeTextAnchorPositionsFromLiveSvg, logTextMeasurementDiagnostic } = await Promise.resolve().then(() => require("./vectorPdfExport-
|
|
27878
|
+
const { bakeTextAnchorPositionsFromLiveSvg, logTextMeasurementDiagnostic } = await Promise.resolve().then(() => require("./vectorPdfExport-DRpVTciP.cjs"));
|
|
27812
27879
|
try {
|
|
27813
27880
|
await logTextMeasurementDiagnostic(svgToDraw);
|
|
27814
27881
|
} catch {
|
|
@@ -28205,4 +28272,4 @@ exports.setAutoShrinkDebug = setAutoShrinkDebug;
|
|
|
28205
28272
|
exports.setBundledAssetPrefixes = setBundledAssetPrefixes;
|
|
28206
28273
|
exports.warmResolvedTemplateForPreview = warmResolvedTemplateForPreview;
|
|
28207
28274
|
exports.warmTemplateFromForm = warmTemplateFromForm;
|
|
28208
|
-
//# sourceMappingURL=index-
|
|
28275
|
+
//# sourceMappingURL=index-C6VMQJMY.cjs.map
|