@pixldocs/canvas-renderer 0.5.401 → 0.5.403
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-B0wcgE-q.js → index-B8c2DkaJ.js} +39 -29
- package/dist/{index-B0wcgE-q.js.map → index-B8c2DkaJ.js.map} +1 -1
- package/dist/{index-DqOy3Wio.cjs → index-Bp9XxxF8.cjs} +39 -29
- package/dist/{index-DqOy3Wio.cjs.map → index-Bp9XxxF8.cjs.map} +1 -1
- package/dist/index.cjs +1 -1
- package/dist/index.js +1 -1
- package/dist/{vectorPdfExport-B25ym_AP.cjs → vectorPdfExport-BevFDNWQ.cjs} +4 -4
- package/dist/{vectorPdfExport-B25ym_AP.cjs.map → vectorPdfExport-BevFDNWQ.cjs.map} +1 -1
- package/dist/{vectorPdfExport-8uhoJ38-.js → vectorPdfExport-V449U4Y7.js} +4 -4
- package/dist/{vectorPdfExport-8uhoJ38-.js.map → vectorPdfExport-V449U4Y7.js.map} +1 -1
- package/package.json +1 -1
|
@@ -11520,15 +11520,17 @@ function applyWarpAwareSelectionBorders(selection) {
|
|
|
11520
11520
|
let targetAngle = null;
|
|
11521
11521
|
const isLogicalGroupSelection = !!selection.__pixldocsGroupSelection;
|
|
11522
11522
|
const frozenGroupAngle = selection.__pixldocsFrozenGroupAngle;
|
|
11523
|
-
if (isLogicalGroupSelection
|
|
11524
|
-
targetAngle = frozenGroupAngle;
|
|
11525
|
-
}
|
|
11526
|
-
if (targetAngle == null && dominant && Math.abs(dominant.angle) > 0.5 && //
|
|
11527
|
-
//
|
|
11528
|
-
//
|
|
11529
|
-
//
|
|
11530
|
-
//
|
|
11531
|
-
|
|
11523
|
+
if (isLogicalGroupSelection) {
|
|
11524
|
+
targetAngle = typeof frozenGroupAngle === "number" ? frozenGroupAngle : 0;
|
|
11525
|
+
}
|
|
11526
|
+
if (targetAngle == null && dominant && Math.abs(dominant.angle) > 0.5 && // Canva-style: a *logical group* bbox is authoritative from the
|
|
11527
|
+
// persisted group.angle only. Individual child rotations must not
|
|
11528
|
+
// drift the group's selection bbox angle. The per-child rotation-
|
|
11529
|
+
// aware reflow (S^-1·R(θ) decomposition) keeps side-handle drags
|
|
11530
|
+
// shear-free on rotated text/image/crop-group kids without needing
|
|
11531
|
+
// the AS itself to tilt.
|
|
11532
|
+
// Ad-hoc multi-select (non-logical) still aligns to dominant.
|
|
11533
|
+
(!isLogicalGroupSelection && (kids.length === 1 || dominant.count >= 2 || dominant.count === kids.length))) {
|
|
11532
11534
|
targetAngle = dominant.angle;
|
|
11533
11535
|
}
|
|
11534
11536
|
if (targetAngle != null) {
|
|
@@ -13253,7 +13255,7 @@ const PageCanvas = react.forwardRef(
|
|
|
13253
13255
|
transformingIdsRef.current.clear();
|
|
13254
13256
|
};
|
|
13255
13257
|
const prepareGroupSelectionTransformStart = (target) => {
|
|
13256
|
-
var _a2, _b2;
|
|
13258
|
+
var _a2, _b2, _c2;
|
|
13257
13259
|
const active = target instanceof fabric__namespace.ActiveSelection ? target : fabricCanvas.getActiveObject();
|
|
13258
13260
|
if (!(active instanceof fabric__namespace.ActiveSelection)) return;
|
|
13259
13261
|
if (!activeSelectionMoveStartRef.current || activeSelectionMoveStartRef.current.selection !== active) {
|
|
@@ -13272,6 +13274,8 @@ const PageCanvas = react.forwardRef(
|
|
|
13272
13274
|
if (!groupNode) return;
|
|
13273
13275
|
const groupAbs = getAbsoluteBounds(groupNode, pageChildren2);
|
|
13274
13276
|
const rect = active.getBoundingRect();
|
|
13277
|
+
const currentTransform = fabricCanvas._currentTransform;
|
|
13278
|
+
const originalSelectionAngle = (currentTransform == null ? void 0 : currentTransform.target) === active && typeof ((_c2 = currentTransform == null ? void 0 : currentTransform.original) == null ? void 0 : _c2.angle) === "number" ? currentTransform.original.angle : active.angle ?? 0;
|
|
13275
13279
|
groupSelectionTransformStartRef.current = {
|
|
13276
13280
|
groupId,
|
|
13277
13281
|
selection: active,
|
|
@@ -13279,7 +13283,8 @@ const PageCanvas = react.forwardRef(
|
|
|
13279
13283
|
selectionTop: rect.top,
|
|
13280
13284
|
groupLeft: groupAbs.left,
|
|
13281
13285
|
groupTop: groupAbs.top,
|
|
13282
|
-
selectionAngle: (
|
|
13286
|
+
selectionAngle: (originalSelectionAngle % 360 + 360) % 360,
|
|
13287
|
+
groupAngle: isGroup(groupNode) ? groupNode.angle ?? 0 : 0
|
|
13283
13288
|
};
|
|
13284
13289
|
logRotDriftSelectionSnapshot("transform-start", active, {
|
|
13285
13290
|
time: Math.round(performance.now()),
|
|
@@ -13712,6 +13717,7 @@ const PageCanvas = react.forwardRef(
|
|
|
13712
13717
|
fabricCanvas.__isUserTransforming = true;
|
|
13713
13718
|
syncLockedRef.current = true;
|
|
13714
13719
|
lockEdits();
|
|
13720
|
+
prepareGroupSelectionTransformStart(opt.target ?? null);
|
|
13715
13721
|
}
|
|
13716
13722
|
let target = opt.target;
|
|
13717
13723
|
let targetId = target ? getObjectId(target) : null;
|
|
@@ -14825,6 +14831,7 @@ const PageCanvas = react.forwardRef(
|
|
|
14825
14831
|
markSimpleTransform(e);
|
|
14826
14832
|
didTransformRef.current = true;
|
|
14827
14833
|
const tr = e.target;
|
|
14834
|
+
prepareGroupSelectionTransformStart(tr);
|
|
14828
14835
|
if (shouldLogRotDriftLiveTick(tr, "rotating")) {
|
|
14829
14836
|
logRotDriftSelectionSnapshot("rotating", tr, {
|
|
14830
14837
|
time: Math.round(performance.now()),
|
|
@@ -14937,7 +14944,7 @@ const PageCanvas = react.forwardRef(
|
|
|
14937
14944
|
});
|
|
14938
14945
|
let cropGroupSaveTimer = null;
|
|
14939
14946
|
fabricCanvas.on("object:modified", (e) => {
|
|
14940
|
-
var _a2, _b2, _c2, _d, _e, _f, _g, _h, _i, _j;
|
|
14947
|
+
var _a2, _b2, _c2, _d, _e, _f, _g, _h, _i, _j, _k;
|
|
14941
14948
|
try {
|
|
14942
14949
|
if (suppressObjectModifiedDuringInternalReselectRef.current) return;
|
|
14943
14950
|
dragStarted = false;
|
|
@@ -14963,13 +14970,16 @@ const PageCanvas = react.forwardRef(
|
|
|
14963
14970
|
const t = e.target;
|
|
14964
14971
|
if (t instanceof fabric__namespace.ActiveSelection) {
|
|
14965
14972
|
const gid = t.__pixldocsGroupSelection;
|
|
14966
|
-
const
|
|
14973
|
+
const transformStart = gid && ((_a2 = groupSelectionTransformStartRef.current) == null ? void 0 : _a2.groupId) === gid && groupSelectionTransformStartRef.current.selection === t ? groupSelectionTransformStartRef.current : null;
|
|
14974
|
+
const current = ((t.angle ?? 0) % 360 + 360) % 360;
|
|
14975
|
+
const start = (((transformStart == null ? void 0 : transformStart.selectionAngle) ?? (transformStart == null ? void 0 : transformStart.groupAngle) ?? 0) % 360 + 360) % 360;
|
|
14976
|
+
const delta = ((current - start) % 360 + 360) % 360;
|
|
14967
14977
|
const deltaSigned = delta > 180 ? delta - 360 : delta;
|
|
14968
14978
|
if (gid && Math.abs(deltaSigned) > 0.01) {
|
|
14969
14979
|
const pageNow = useEditorStore.getState().canvas.pages.find((p) => p.id === pageId);
|
|
14970
14980
|
const node = pageNow ? findNodeById(pageNow.children ?? [], gid) : null;
|
|
14971
14981
|
if (node && isGroup(node)) {
|
|
14972
|
-
const prev = node.angle ?? 0;
|
|
14982
|
+
const prev = (transformStart == null ? void 0 : transformStart.groupAngle) ?? (node.angle ?? 0);
|
|
14973
14983
|
const next = ((prev + deltaSigned) % 360 + 360) % 360;
|
|
14974
14984
|
const nextSigned = next > 180 ? next - 360 : next;
|
|
14975
14985
|
useEditorStore.getState().updateNode(
|
|
@@ -15008,7 +15018,7 @@ const PageCanvas = react.forwardRef(
|
|
|
15008
15018
|
const active = fabricCanvas.getActiveObject();
|
|
15009
15019
|
const activeId = active ? getObjectId(active) : null;
|
|
15010
15020
|
if (active && activeId && activeId !== "__background__" && !(active instanceof fabric__namespace.Group)) {
|
|
15011
|
-
const pageChildrenForParent = ((
|
|
15021
|
+
const pageChildrenForParent = ((_b2 = useEditorStore.getState().canvas.pages.find((p) => p.id === pageId)) == null ? void 0 : _b2.children) ?? [];
|
|
15012
15022
|
const parentGroup = findParentGroup(pageChildrenForParent, activeId);
|
|
15013
15023
|
if (parentGroup && isGroup(parentGroup) && parentGroup.backgroundColor) {
|
|
15014
15024
|
let fabricSectionGroup = active.group && active.group instanceof fabric__namespace.Group ? active.group : null;
|
|
@@ -15090,7 +15100,7 @@ const PageCanvas = react.forwardRef(
|
|
|
15090
15100
|
useEditorStore.getState().reflowStackGroupInPage(pageId, groupId);
|
|
15091
15101
|
}
|
|
15092
15102
|
const stateAfter = useEditorStore.getState();
|
|
15093
|
-
const pageAfter = ((
|
|
15103
|
+
const pageAfter = ((_c2 = stateAfter.canvas.pages.find((p) => p.id === pageId)) == null ? void 0 : _c2.children) ?? [];
|
|
15094
15104
|
const groupNodeAfter = findNodeById(pageAfter, groupId);
|
|
15095
15105
|
if (groupNodeAfter) {
|
|
15096
15106
|
const abs = getAbsoluteBounds(groupNodeAfter, pageAfter);
|
|
@@ -15152,7 +15162,7 @@ const PageCanvas = react.forwardRef(
|
|
|
15152
15162
|
}
|
|
15153
15163
|
if (active && active instanceof fabric__namespace.Group && active.__docuforgeSectionGroup && getObjectId(active)) {
|
|
15154
15164
|
const groupId = getObjectId(active);
|
|
15155
|
-
const pageChildrenSec = ((
|
|
15165
|
+
const pageChildrenSec = ((_d = useEditorStore.getState().canvas.pages.find((p) => p.id === pageId)) == null ? void 0 : _d.children) ?? [];
|
|
15156
15166
|
const modifiedTarget2 = e == null ? void 0 : e.target;
|
|
15157
15167
|
const resizeScaleTarget = lastResizeScaleTargetRef.current;
|
|
15158
15168
|
lastResizeScaleTargetRef.current = null;
|
|
@@ -15183,7 +15193,7 @@ const PageCanvas = react.forwardRef(
|
|
|
15183
15193
|
const node = findNodeById(pageChildrenSec, groupId);
|
|
15184
15194
|
if (isChildModified && node && !groupMoved) {
|
|
15185
15195
|
const stateAfter = useEditorStore.getState();
|
|
15186
|
-
const pageAfter = ((
|
|
15196
|
+
const pageAfter = ((_e = stateAfter.canvas.pages.find((p) => p.id === pageId)) == null ? void 0 : _e.children) ?? [];
|
|
15187
15197
|
const groupNodeAfter = findNodeById(pageAfter, groupId);
|
|
15188
15198
|
if (groupNodeAfter) {
|
|
15189
15199
|
const abs = getAbsoluteBounds(groupNodeAfter, pageAfter);
|
|
@@ -15199,7 +15209,7 @@ const PageCanvas = react.forwardRef(
|
|
|
15199
15209
|
}
|
|
15200
15210
|
if (active && active instanceof fabric__namespace.Group && !(active instanceof fabric__namespace.ActiveSelection) && getObjectId(active)) {
|
|
15201
15211
|
const groupId = getObjectId(active);
|
|
15202
|
-
const pageChildren3 = ((
|
|
15212
|
+
const pageChildren3 = ((_f = useEditorStore.getState().canvas.pages.find((p) => p.id === pageId)) == null ? void 0 : _f.children) ?? [];
|
|
15203
15213
|
const w = (active.width ?? 0) * (active.scaleX ?? 1);
|
|
15204
15214
|
const h = (active.height ?? 0) * (active.scaleY ?? 1);
|
|
15205
15215
|
const centerX = active.left ?? 0;
|
|
@@ -15221,7 +15231,7 @@ const PageCanvas = react.forwardRef(
|
|
|
15221
15231
|
}
|
|
15222
15232
|
const activeObj = fabricCanvas.getActiveObject();
|
|
15223
15233
|
let activeObjects = fabricCanvas.getActiveObjects();
|
|
15224
|
-
const activeSelectionMoveStart = activeObj instanceof fabric__namespace.ActiveSelection && ((
|
|
15234
|
+
const activeSelectionMoveStart = activeObj instanceof fabric__namespace.ActiveSelection && ((_g = activeSelectionMoveStartRef.current) == null ? void 0 : _g.selection) === activeObj ? activeSelectionMoveStartRef.current : null;
|
|
15225
15235
|
const activeSelectionDelta = activeObj instanceof fabric__namespace.ActiveSelection && activeSelectionMoveStart ? (() => {
|
|
15226
15236
|
const rect = activeObj.getBoundingRect();
|
|
15227
15237
|
return {
|
|
@@ -15613,7 +15623,7 @@ const PageCanvas = react.forwardRef(
|
|
|
15613
15623
|
const localScaleX = 1 / sx;
|
|
15614
15624
|
const localScaleY = 1 / sy;
|
|
15615
15625
|
obj.set({ scaleX: localScaleX, scaleY: localScaleY });
|
|
15616
|
-
const selectionMatrix = (
|
|
15626
|
+
const selectionMatrix = (_h = activeObj == null ? void 0 : activeObj.calcTransformMatrix) == null ? void 0 : _h.call(activeObj);
|
|
15617
15627
|
const localCenter = selectionMatrix ? fabric__namespace.util.transformPoint(preBakeCenter, fabric__namespace.util.invertTransform(selectionMatrix)) : preBakeCenter;
|
|
15618
15628
|
const localWidth = bakedW * localScaleX;
|
|
15619
15629
|
const localHeight = bakedH * localScaleY;
|
|
@@ -15738,7 +15748,7 @@ const PageCanvas = react.forwardRef(
|
|
|
15738
15748
|
const localScaleX = 1 / sx;
|
|
15739
15749
|
const localScaleY = 1 / sy;
|
|
15740
15750
|
obj.set({ scaleX: localScaleX, scaleY: localScaleY });
|
|
15741
|
-
const selectionMatrix = (
|
|
15751
|
+
const selectionMatrix = (_i = activeObj == null ? void 0 : activeObj.calcTransformMatrix) == null ? void 0 : _i.call(activeObj);
|
|
15742
15752
|
const localCenter = selectionMatrix ? fabric__namespace.util.transformPoint(preBakeCenter, fabric__namespace.util.invertTransform(selectionMatrix)) : preBakeCenter;
|
|
15743
15753
|
const localWidth = bakedWidth * localScaleX;
|
|
15744
15754
|
const localHeight = (obj.height ?? intrinsicHeight) * localScaleY;
|
|
@@ -15946,7 +15956,7 @@ const PageCanvas = react.forwardRef(
|
|
|
15946
15956
|
updateElement(objId, elementUpdate, { recordHistory: false, skipLayoutRecalc: true });
|
|
15947
15957
|
obj.setCoords();
|
|
15948
15958
|
}
|
|
15949
|
-
const pageChildrenForReflow = ((
|
|
15959
|
+
const pageChildrenForReflow = ((_j = useEditorStore.getState().canvas.pages.find((p) => p.id === pageId)) == null ? void 0 : _j.children) ?? [];
|
|
15950
15960
|
const stackGroupsToReflow = /* @__PURE__ */ new Set();
|
|
15951
15961
|
for (const id of modifiedIdsThisRound) {
|
|
15952
15962
|
const parent = findParentGroup(pageChildrenForReflow, id);
|
|
@@ -16025,7 +16035,7 @@ const PageCanvas = react.forwardRef(
|
|
|
16025
16035
|
}
|
|
16026
16036
|
fabricCanvas.setActiveObject(newSel);
|
|
16027
16037
|
try {
|
|
16028
|
-
(
|
|
16038
|
+
(_k = newSel.triggerLayout) == null ? void 0 : _k.call(newSel);
|
|
16029
16039
|
} catch {
|
|
16030
16040
|
}
|
|
16031
16041
|
try {
|
|
@@ -25135,9 +25145,9 @@ function captureFabricCanvasSvgForPdf(fabricInstance, canvasWidth, canvasHeight)
|
|
|
25135
25145
|
}
|
|
25136
25146
|
return svgString;
|
|
25137
25147
|
}
|
|
25138
|
-
const resolvedPackageVersion = "0.5.
|
|
25148
|
+
const resolvedPackageVersion = "0.5.403";
|
|
25139
25149
|
const PACKAGE_VERSION = resolvedPackageVersion;
|
|
25140
|
-
const DEPLOYMENT_VERSION_MARKER = "__PIXLDOCS_CANVAS_RENDERER_VERSION__:0.5.
|
|
25150
|
+
const DEPLOYMENT_VERSION_MARKER = "__PIXLDOCS_CANVAS_RENDERER_VERSION__:0.5.403";
|
|
25141
25151
|
const roundParityValue = (value) => {
|
|
25142
25152
|
if (typeof value !== "number") return value;
|
|
25143
25153
|
return Number.isFinite(value) ? Number(value.toFixed(3)) : value;
|
|
@@ -25951,7 +25961,7 @@ class PixldocsRenderer {
|
|
|
25951
25961
|
await this.waitForCanvasScene(container, cloned, i);
|
|
25952
25962
|
}
|
|
25953
25963
|
console.log(`[canvas-renderer][pdf-unified] mounted ${cloned.pages.length} page(s), handing off to client exportMultiPagePdf`);
|
|
25954
|
-
const { exportMultiPagePdf, preparePagesForExport } = await Promise.resolve().then(() => require("./vectorPdfExport-
|
|
25964
|
+
const { exportMultiPagePdf, preparePagesForExport } = await Promise.resolve().then(() => require("./vectorPdfExport-BevFDNWQ.cjs"));
|
|
25955
25965
|
const prepared = preparePagesForExport(
|
|
25956
25966
|
cloned.pages,
|
|
25957
25967
|
canvasWidth,
|
|
@@ -28271,7 +28281,7 @@ async function prepareLiveCanvasSvgForPdf(rawSvg, pageWidth, pageHeight, pageKey
|
|
|
28271
28281
|
if (options == null ? void 0 : options.stripPageBackground) stripRootPageBackgroundFromSvg(svgToDraw);
|
|
28272
28282
|
sanitizeSvgTreeForPdf(svgToDraw);
|
|
28273
28283
|
try {
|
|
28274
|
-
const { bakeTextAnchorPositionsFromLiveSvg, logTextMeasurementDiagnostic } = await Promise.resolve().then(() => require("./vectorPdfExport-
|
|
28284
|
+
const { bakeTextAnchorPositionsFromLiveSvg, logTextMeasurementDiagnostic } = await Promise.resolve().then(() => require("./vectorPdfExport-BevFDNWQ.cjs"));
|
|
28275
28285
|
try {
|
|
28276
28286
|
await logTextMeasurementDiagnostic(svgToDraw);
|
|
28277
28287
|
} catch {
|
|
@@ -28668,4 +28678,4 @@ exports.setAutoShrinkDebug = setAutoShrinkDebug;
|
|
|
28668
28678
|
exports.setBundledAssetPrefixes = setBundledAssetPrefixes;
|
|
28669
28679
|
exports.warmResolvedTemplateForPreview = warmResolvedTemplateForPreview;
|
|
28670
28680
|
exports.warmTemplateFromForm = warmTemplateFromForm;
|
|
28671
|
-
//# sourceMappingURL=index-
|
|
28681
|
+
//# sourceMappingURL=index-Bp9XxxF8.cjs.map
|