@pixldocs/canvas-renderer 0.5.348 → 0.5.350
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-CaQvuDpL.cjs → index-D53PnA7c.cjs} +168 -65
- package/dist/index-D53PnA7c.cjs.map +1 -0
- package/dist/{index-BbbkWYa_.js → index-kSwmRnZP.js} +168 -65
- package/dist/index-kSwmRnZP.js.map +1 -0
- package/dist/index.cjs +1 -1
- package/dist/index.js +1 -1
- package/dist/{vectorPdfExport-IeTP9Bi1.cjs → vectorPdfExport-CsJ_SHet.cjs} +4 -4
- package/dist/{vectorPdfExport-IeTP9Bi1.cjs.map → vectorPdfExport-CsJ_SHet.cjs.map} +1 -1
- package/dist/{vectorPdfExport-CXxYlE0-.js → vectorPdfExport-Do4oLw96.js} +4 -4
- package/dist/{vectorPdfExport-CXxYlE0-.js.map → vectorPdfExport-Do4oLw96.js.map} +1 -1
- package/package.json +1 -1
- package/dist/index-BbbkWYa_.js.map +0 -1
- package/dist/index-CaQvuDpL.cjs.map +0 -1
|
@@ -10500,6 +10500,102 @@ function bakeEdgeFade(source, fade) {
|
|
|
10500
10500
|
}
|
|
10501
10501
|
return canvas;
|
|
10502
10502
|
}
|
|
10503
|
+
const normalizeSignedAngle = (angle) => (angle % 360 + 540) % 360 - 180;
|
|
10504
|
+
const rotatedTopLeftToCenter = (left, top, width, height, angleDeg = 0) => {
|
|
10505
|
+
const angle = angleDeg * Math.PI / 180;
|
|
10506
|
+
const cos = Math.cos(angle);
|
|
10507
|
+
const sin = Math.sin(angle);
|
|
10508
|
+
return {
|
|
10509
|
+
x: left + width / 2 * cos - height / 2 * sin,
|
|
10510
|
+
y: top + width / 2 * sin + height / 2 * cos
|
|
10511
|
+
};
|
|
10512
|
+
};
|
|
10513
|
+
const centerToRotatedTopLeft = (centerX, centerY, width, height, angleDeg = 0) => {
|
|
10514
|
+
const angle = angleDeg * Math.PI / 180;
|
|
10515
|
+
const cos = Math.cos(angle);
|
|
10516
|
+
const sin = Math.sin(angle);
|
|
10517
|
+
return {
|
|
10518
|
+
left: centerX - width / 2 * cos + height / 2 * sin,
|
|
10519
|
+
top: centerY - width / 2 * sin - height / 2 * cos
|
|
10520
|
+
};
|
|
10521
|
+
};
|
|
10522
|
+
const getGroupTransformFrame = (group, pageChildren, options) => {
|
|
10523
|
+
const bounds = getNodeBounds(group, pageChildren);
|
|
10524
|
+
const width = Math.max(1, Number(group.width ?? bounds.width) || bounds.width || 1);
|
|
10525
|
+
const height = Math.max(1, Number(group.height ?? bounds.height) || bounds.height || 1);
|
|
10526
|
+
return {
|
|
10527
|
+
left: Number(group.left ?? bounds.left ?? 0) || 0,
|
|
10528
|
+
top: Number(group.top ?? bounds.top ?? 0) || 0,
|
|
10529
|
+
width,
|
|
10530
|
+
height,
|
|
10531
|
+
angle: Number(group.angle ?? 0) || 0
|
|
10532
|
+
};
|
|
10533
|
+
};
|
|
10534
|
+
const getGroupLocalToParentMatrix = (group, pageChildren, options) => {
|
|
10535
|
+
const frame = getGroupTransformFrame(group, pageChildren);
|
|
10536
|
+
const rad = frame.angle * Math.PI / 180;
|
|
10537
|
+
const cos = Math.cos(rad);
|
|
10538
|
+
const sin = Math.sin(rad);
|
|
10539
|
+
return [
|
|
10540
|
+
cos,
|
|
10541
|
+
sin,
|
|
10542
|
+
-sin,
|
|
10543
|
+
cos,
|
|
10544
|
+
frame.left,
|
|
10545
|
+
frame.top
|
|
10546
|
+
];
|
|
10547
|
+
};
|
|
10548
|
+
const getAncestorGroupTransform = (nodeId, pageChildren, fabric2, options) => {
|
|
10549
|
+
let matrix = [1, 0, 0, 1, 0, 0];
|
|
10550
|
+
let angle = 0;
|
|
10551
|
+
const chain = [];
|
|
10552
|
+
let currentId = nodeId;
|
|
10553
|
+
for (let guard = 0; guard < 32; guard++) {
|
|
10554
|
+
const parent = findParentGroup(pageChildren, currentId);
|
|
10555
|
+
if (!parent) break;
|
|
10556
|
+
chain.unshift(parent);
|
|
10557
|
+
currentId = parent.id;
|
|
10558
|
+
}
|
|
10559
|
+
for (const group of chain) {
|
|
10560
|
+
matrix = fabric2.util.multiplyTransformMatrices(
|
|
10561
|
+
matrix,
|
|
10562
|
+
getGroupLocalToParentMatrix(group, pageChildren)
|
|
10563
|
+
);
|
|
10564
|
+
angle += Number(group.angle ?? 0) || 0;
|
|
10565
|
+
}
|
|
10566
|
+
return { matrix, angle: normalizeSignedAngle(angle) };
|
|
10567
|
+
};
|
|
10568
|
+
const getElementFabricPlacement$1 = (element, pageChildren, fabric2, options) => {
|
|
10569
|
+
if (!pageChildren.length) {
|
|
10570
|
+
return { left: element.left ?? 0, top: element.top ?? 0, angle: element.angle ?? 0 };
|
|
10571
|
+
}
|
|
10572
|
+
const ancestor = getAncestorGroupTransform(element.id, pageChildren, fabric2);
|
|
10573
|
+
const point = fabric2.util.transformPoint(
|
|
10574
|
+
new fabric2.Point(element.left ?? 0, element.top ?? 0),
|
|
10575
|
+
ancestor.matrix
|
|
10576
|
+
);
|
|
10577
|
+
return {
|
|
10578
|
+
left: point.x,
|
|
10579
|
+
top: point.y,
|
|
10580
|
+
angle: normalizeSignedAngle(ancestor.angle + Number(element.angle ?? 0))
|
|
10581
|
+
};
|
|
10582
|
+
};
|
|
10583
|
+
const getGroupAbsoluteTransformFrame$1 = (group, pageChildren, fabric2, options) => {
|
|
10584
|
+
const frame = getGroupTransformFrame(group, pageChildren);
|
|
10585
|
+
const ancestor = getAncestorGroupTransform(group.id, pageChildren, fabric2);
|
|
10586
|
+
const centerLocal = rotatedTopLeftToCenter(frame.left, frame.top, frame.width, frame.height, frame.angle);
|
|
10587
|
+
const center = fabric2.util.transformPoint(new fabric2.Point(centerLocal.x, centerLocal.y), ancestor.matrix);
|
|
10588
|
+
const topLeft = fabric2.util.transformPoint(new fabric2.Point(frame.left, frame.top), ancestor.matrix);
|
|
10589
|
+
return {
|
|
10590
|
+
left: topLeft.x,
|
|
10591
|
+
top: topLeft.y,
|
|
10592
|
+
width: frame.width,
|
|
10593
|
+
height: frame.height,
|
|
10594
|
+
centerX: center.x,
|
|
10595
|
+
centerY: center.y,
|
|
10596
|
+
angle: normalizeSignedAngle(ancestor.angle + frame.angle)
|
|
10597
|
+
};
|
|
10598
|
+
};
|
|
10503
10599
|
const SELECTION_PRIMARY = "hsl(217, 91%, 60%)";
|
|
10504
10600
|
const SELECTION_BORDER_SCALE = 2;
|
|
10505
10601
|
let ensureCanvaControlRenders = () => {
|
|
@@ -10953,12 +11049,18 @@ try {
|
|
|
10953
11049
|
} catch (e) {
|
|
10954
11050
|
}
|
|
10955
11051
|
};
|
|
10956
|
-
const
|
|
10957
|
-
|
|
10958
|
-
|
|
10959
|
-
|
|
10960
|
-
|
|
10961
|
-
|
|
11052
|
+
const wrapControlsFactory = (key) => {
|
|
11053
|
+
if (typeof cu[key] !== "function") return;
|
|
11054
|
+
const descriptor = Object.getOwnPropertyDescriptor(cu, key);
|
|
11055
|
+
if (descriptor && descriptor.writable === false && !descriptor.set) return;
|
|
11056
|
+
const original = cu[key].bind(cu);
|
|
11057
|
+
try {
|
|
11058
|
+
cu[key] = () => installPillRenders(original());
|
|
11059
|
+
} catch {
|
|
11060
|
+
}
|
|
11061
|
+
};
|
|
11062
|
+
wrapControlsFactory("createObjectDefaultControls");
|
|
11063
|
+
wrapControlsFactory("createTextboxDefaultControls");
|
|
10962
11064
|
const wrapClassCreateControls = (Klass) => {
|
|
10963
11065
|
if (!Klass || typeof Klass.createControls !== "function") return;
|
|
10964
11066
|
const orig = Klass.createControls.bind(Klass);
|
|
@@ -11199,15 +11301,8 @@ const bakeTextboxScaleIntoTypography = (obj, sourceElement) => {
|
|
|
11199
11301
|
};
|
|
11200
11302
|
return updates;
|
|
11201
11303
|
};
|
|
11202
|
-
const
|
|
11203
|
-
|
|
11204
|
-
const cos = Math.cos(angle);
|
|
11205
|
-
const sin = Math.sin(angle);
|
|
11206
|
-
return {
|
|
11207
|
-
x: left + width / 2 * cos - height / 2 * sin,
|
|
11208
|
-
y: top + width / 2 * sin + height / 2 * cos
|
|
11209
|
-
};
|
|
11210
|
-
};
|
|
11304
|
+
const getElementFabricPlacement = (element, pageChildren, options) => getElementFabricPlacement$1(element, pageChildren, fabric);
|
|
11305
|
+
const getGroupAbsoluteTransformFrame = (group, pageChildren, options) => getGroupAbsoluteTransformFrame$1(group, pageChildren, fabric);
|
|
11211
11306
|
function applyWarpAwareSelectionBorders(selection) {
|
|
11212
11307
|
var _a2;
|
|
11213
11308
|
if (selection.__pixldocsOrigASHasBorders !== void 0) {
|
|
@@ -11356,13 +11451,13 @@ const PageCanvas = forwardRef(
|
|
|
11356
11451
|
));
|
|
11357
11452
|
const pageChildren2 = ((_a2 = useEditorStore.getState().canvas.pages.find((p) => p.id === pageId)) == null ? void 0 : _a2.children) ?? [];
|
|
11358
11453
|
const groupNode = findNodeById(pageChildren2, groupId);
|
|
11359
|
-
const
|
|
11360
|
-
const
|
|
11454
|
+
const groupFrame = groupNode && isGroup(groupNode) ? getGroupAbsoluteTransformFrame(groupNode, pageChildren2, pageBoundsOptions) : null;
|
|
11455
|
+
const groupAngle = groupFrame ? groupFrame.angle : 0;
|
|
11361
11456
|
if (Number.isFinite(groupAngle)) {
|
|
11362
11457
|
selection.set({ angle: groupAngle, scaleX: 1, scaleY: 1, skewX: 0, skewY: 0 });
|
|
11363
|
-
if (
|
|
11458
|
+
if (groupFrame) {
|
|
11364
11459
|
selection.setPositionByOrigin(
|
|
11365
|
-
new fabric.Point(
|
|
11460
|
+
new fabric.Point(groupFrame.centerX, groupFrame.centerY),
|
|
11366
11461
|
"center",
|
|
11367
11462
|
"center"
|
|
11368
11463
|
);
|
|
@@ -12335,7 +12430,6 @@ const PageCanvas = forwardRef(
|
|
|
12335
12430
|
fabricCanvas.__fontCleanup = fontCleanup;
|
|
12336
12431
|
fabricCanvas.__isUserTransforming = false;
|
|
12337
12432
|
fabricCanvas.on("mouse:down", () => {
|
|
12338
|
-
groupSelectionTransformStartRef.current = null;
|
|
12339
12433
|
activeSelectionMoveStartRef.current = null;
|
|
12340
12434
|
activeSelectionResizeHandleRef.current = null;
|
|
12341
12435
|
const active = fabricCanvas.getActiveObject();
|
|
@@ -12848,7 +12942,8 @@ const PageCanvas = forwardRef(
|
|
|
12848
12942
|
const pageChildren2 = ((_b2 = useEditorStore.getState().canvas.pages.find((p) => p.id === pageId)) == null ? void 0 : _b2.children) ?? [];
|
|
12849
12943
|
const groupNode = findNodeById(pageChildren2, groupId);
|
|
12850
12944
|
if (!groupNode) return;
|
|
12851
|
-
const
|
|
12945
|
+
const groupFrame = isGroup(groupNode) ? getGroupAbsoluteTransformFrame(groupNode, pageChildren2) : null;
|
|
12946
|
+
const groupAbs = groupFrame ?? getAbsoluteBounds(groupNode, pageChildren2);
|
|
12852
12947
|
const rect = active.getBoundingRect();
|
|
12853
12948
|
const center = active.getCenterPoint();
|
|
12854
12949
|
groupSelectionTransformStartRef.current = {
|
|
@@ -12862,7 +12957,7 @@ const PageCanvas = forwardRef(
|
|
|
12862
12957
|
groupTop: groupAbs.top,
|
|
12863
12958
|
groupWidth: groupAbs.width,
|
|
12864
12959
|
groupHeight: groupAbs.height,
|
|
12865
|
-
selectionAngle: ((active.angle ?? 0) % 360 + 360) % 360
|
|
12960
|
+
selectionAngle: (((groupFrame == null ? void 0 : groupFrame.angle) ?? active.angle ?? 0) % 360 + 360) % 360
|
|
12866
12961
|
};
|
|
12867
12962
|
};
|
|
12868
12963
|
const restoreGroupSelectionVisualState = (selection, groupId) => {
|
|
@@ -14832,7 +14927,14 @@ const PageCanvas = forwardRef(
|
|
|
14832
14927
|
const node = findNodeById(pageChildren2, id);
|
|
14833
14928
|
return !!(node && isGroup(node));
|
|
14834
14929
|
});
|
|
14835
|
-
const activeSelectionHadTransform = activeObj instanceof fabric.ActiveSelection && (Math.abs((activeObj.scaleX ?? 1) - 1) > 0.01 || Math.abs((activeObj.scaleY ?? 1) - 1) > 0.01 ||
|
|
14930
|
+
const activeSelectionHadTransform = activeObj instanceof fabric.ActiveSelection && (Math.abs((activeObj.scaleX ?? 1) - 1) > 0.01 || Math.abs((activeObj.scaleY ?? 1) - 1) > 0.01 || (() => {
|
|
14931
|
+
var _a3;
|
|
14932
|
+
const normAngle = (angle) => (angle % 360 + 360) % 360;
|
|
14933
|
+
const startAngle = ((_a3 = groupSelectionTransformStartRef.current) == null ? void 0 : _a3.selection) === activeObj ? groupSelectionTransformStartRef.current.selectionAngle : 0;
|
|
14934
|
+
const currentAngle = normAngle(activeObj.angle ?? 0);
|
|
14935
|
+
const diff = Math.abs(currentAngle - normAngle(startAngle));
|
|
14936
|
+
return Math.min(diff, 360 - diff) > 1;
|
|
14937
|
+
})());
|
|
14836
14938
|
if (!anyCropGroup && activeSelectionDelta && !activeSelectionHadTransform && selectedLogicalGroupIds.length > 0) {
|
|
14837
14939
|
const selectedStoreIds = useEditorStore.getState().canvas.selectedIds ?? [];
|
|
14838
14940
|
const groupMemberIds = /* @__PURE__ */ new Set();
|
|
@@ -14947,7 +15049,7 @@ const PageCanvas = forwardRef(
|
|
|
14947
15049
|
const storedGroupAngle = normalizeAngle(Number(groupToMove.angle ?? 0));
|
|
14948
15050
|
const effectiveStartAngle = transformStart ? startSelAngle : storedGroupAngle;
|
|
14949
15051
|
const angleDelta = shortestAngleDelta(currentSelAngle, effectiveStartAngle);
|
|
14950
|
-
const hadRotation = isActiveSelection && activeObj && angleDelta >
|
|
15052
|
+
const hadRotation = isActiveSelection && activeObj && angleDelta > 1;
|
|
14951
15053
|
if (activeGroupSelectionId === groupToMove.id && hadRotation && !hadScale && !activeSelectionResizeHandle && activeObj instanceof fabric.ActiveSelection) {
|
|
14952
15054
|
const { updateNode: updateNodeStore, commitHistory: commitHistoryStore, getCurrentElements } = useEditorStore.getState();
|
|
14953
15055
|
const center = activeObj.getCenterPoint();
|
|
@@ -15034,7 +15136,7 @@ const PageCanvas = forwardRef(
|
|
|
15034
15136
|
const logicalGroupSelectionId = activeObj instanceof fabric.ActiveSelection ? activeObj.__pixldocsGroupSelection : void 0;
|
|
15035
15137
|
const isLogicalGroupAS = !!logicalGroupSelectionId && !(activeObj == null ? void 0 : activeObj.__cropGroup) && !(activeObj == null ? void 0 : activeObj.__docuforgeSectionGroup);
|
|
15036
15138
|
const logicalGroupNodeForBake = logicalGroupSelectionId ? findNodeById(pageChildren2, logicalGroupSelectionId) : null;
|
|
15037
|
-
const asAngleForBake = isLogicalGroupAS && activeObj ? normalizeAngle(Number(
|
|
15139
|
+
const asAngleForBake = isLogicalGroupAS && activeObj ? normalizeAngle(Number(activeObj.angle ?? 0)) : 0;
|
|
15038
15140
|
const logicalGroupFinalFrame = (() => {
|
|
15039
15141
|
var _a3;
|
|
15040
15142
|
if (!isLogicalGroupAS || !logicalGroupSelectionId || !(activeObj instanceof fabric.ActiveSelection)) return null;
|
|
@@ -15042,10 +15144,11 @@ const PageCanvas = forwardRef(
|
|
|
15042
15144
|
const localWidth = Math.max(1, (activeObj.width ?? (baseline == null ? void 0 : baseline.groupWidth) ?? 1) * Math.abs(activeObj.scaleX ?? 1));
|
|
15043
15145
|
const localHeight = Math.max(1, (activeObj.height ?? (baseline == null ? void 0 : baseline.groupHeight) ?? 1) * Math.abs(activeObj.scaleY ?? 1));
|
|
15044
15146
|
const center = activeObj.getCenterPoint();
|
|
15147
|
+
const topLeft = centerToRotatedTopLeft(center.x, center.y, localWidth, localHeight, asAngleForBake);
|
|
15045
15148
|
return {
|
|
15046
15149
|
groupId: logicalGroupSelectionId,
|
|
15047
|
-
left:
|
|
15048
|
-
top:
|
|
15150
|
+
left: topLeft.left,
|
|
15151
|
+
top: topLeft.top,
|
|
15049
15152
|
width: localWidth,
|
|
15050
15153
|
height: localHeight,
|
|
15051
15154
|
centerX: center.x,
|
|
@@ -15107,16 +15210,15 @@ const PageCanvas = forwardRef(
|
|
|
15107
15210
|
modifiedIdsThisRound.add(objId);
|
|
15108
15211
|
let absoluteLeft;
|
|
15109
15212
|
let absoluteTop;
|
|
15110
|
-
|
|
15111
|
-
|
|
15112
|
-
|
|
15113
|
-
|
|
15114
|
-
|
|
15115
|
-
|
|
15116
|
-
|
|
15117
|
-
|
|
15118
|
-
|
|
15119
|
-
}
|
|
15213
|
+
const initialTopLeft = centerToRotatedTopLeft(
|
|
15214
|
+
decomposed.translateX ?? (obj.left ?? 0),
|
|
15215
|
+
decomposed.translateY ?? (obj.top ?? 0),
|
|
15216
|
+
intrinsicWidth * Math.abs(decomposed.scaleX || 1),
|
|
15217
|
+
intrinsicHeight * Math.abs(decomposed.scaleY || 1),
|
|
15218
|
+
decomposed.angle ?? 0
|
|
15219
|
+
);
|
|
15220
|
+
absoluteLeft = initialTopLeft.left;
|
|
15221
|
+
absoluteTop = initialTopLeft.top;
|
|
15120
15222
|
if (obj instanceof fabric.Group && obj.__cropGroup) {
|
|
15121
15223
|
const ct = obj.__cropData;
|
|
15122
15224
|
if (isActiveSelection && activeObj instanceof fabric.ActiveSelection) {
|
|
@@ -16200,7 +16302,7 @@ const PageCanvas = forwardRef(
|
|
|
16200
16302
|
const nextHeight = Math.max(minVisiblePlaceholder, Number(resolvedSizeImg.height) || 50);
|
|
16201
16303
|
const storePosImg = pageChildren ? (() => {
|
|
16202
16304
|
const node = findNodeById(pageChildren, element.id);
|
|
16203
|
-
return node ?
|
|
16305
|
+
return node && isElement(node) ? getElementFabricPlacement(node, pageChildren) : { left: element.left ?? 0, top: element.top ?? 0 };
|
|
16204
16306
|
})() : { left: element.left ?? 0, top: element.top ?? 0 };
|
|
16205
16307
|
const elementForPlaceholder = { ...element, width: nextWidth, height: nextHeight };
|
|
16206
16308
|
const placeholder = isCropGroup2 ? createImagePlaceholderForGroup(elementForPlaceholder) : createImagePlaceholder(elementForPlaceholder);
|
|
@@ -16263,14 +16365,14 @@ const PageCanvas = forwardRef(
|
|
|
16263
16365
|
}
|
|
16264
16366
|
const cropPos = pageChildren ? (() => {
|
|
16265
16367
|
const node = findNodeById(pageChildren, element.id);
|
|
16266
|
-
return node ?
|
|
16267
|
-
})() : { left: element.left ?? 0, top: element.top ?? 0 };
|
|
16268
|
-
const cropCenter = rotatedTopLeftToCenter(cropPos.left, cropPos.top, ct.frameW ?? 0, ct.frameH ?? 0, element.angle ?? 0);
|
|
16368
|
+
return node && isElement(node) ? getElementFabricPlacement(node, pageChildren) : { left: element.left ?? 0, top: element.top ?? 0, angle: element.angle ?? 0 };
|
|
16369
|
+
})() : { left: element.left ?? 0, top: element.top ?? 0, angle: element.angle ?? 0 };
|
|
16370
|
+
const cropCenter = rotatedTopLeftToCenter(cropPos.left, cropPos.top, ct.frameW ?? 0, ct.frameH ?? 0, cropPos.angle ?? element.angle ?? 0);
|
|
16269
16371
|
const cropCenterX = cropCenter.x;
|
|
16270
16372
|
const cropCenterY = cropCenter.y;
|
|
16271
16373
|
if (element.left !== void 0) existingObj.set({ left: cropCenterX });
|
|
16272
16374
|
if (element.top !== void 0) existingObj.set({ top: cropCenterY });
|
|
16273
|
-
|
|
16375
|
+
existingObj.set({ angle: cropPos.angle ?? element.angle ?? 0 });
|
|
16274
16376
|
existingObj.set({
|
|
16275
16377
|
flipX: element.flipX ?? false,
|
|
16276
16378
|
flipY: element.flipY ?? false
|
|
@@ -16393,8 +16495,8 @@ const PageCanvas = forwardRef(
|
|
|
16393
16495
|
if (isPlaceholderGroup) {
|
|
16394
16496
|
const storePosImg = pageChildren ? (() => {
|
|
16395
16497
|
const node = findNodeById(pageChildren, element.id);
|
|
16396
|
-
return node ?
|
|
16397
|
-
})() : { left: element.left ?? 0, top: element.top ?? 0 };
|
|
16498
|
+
return node && isElement(node) ? getElementFabricPlacement(node, pageChildren) : { left: element.left ?? 0, top: element.top ?? 0, angle: element.angle ?? 0 };
|
|
16499
|
+
})() : { left: element.left ?? 0, top: element.top ?? 0, angle: element.angle ?? 0 };
|
|
16398
16500
|
const resolvedSizeImg = (pageChildren == null ? void 0 : pageChildren.length) ? getNodeBounds(element, pageChildren) : { width: typeof element.width === "number" ? element.width : 200, height: typeof element.height === "number" ? element.height : 50 };
|
|
16399
16501
|
const hasExplicitSize = typeof element.width === "number" && Number.isFinite(element.width) && element.width > 0 && typeof element.height === "number" && Number.isFinite(element.height) && element.height > 0;
|
|
16400
16502
|
const minVisiblePlaceholder = hasExplicitSize ? 1 : 20;
|
|
@@ -16408,7 +16510,7 @@ const PageCanvas = forwardRef(
|
|
|
16408
16510
|
top: storePosImg.top + nextHeight / 2,
|
|
16409
16511
|
originX: "center",
|
|
16410
16512
|
originY: "center",
|
|
16411
|
-
angle: element.angle ?? 0,
|
|
16513
|
+
angle: storePosImg.angle ?? element.angle ?? 0,
|
|
16412
16514
|
opacity: isHidden ? 0 : element.opacity ?? 1,
|
|
16413
16515
|
flipX: element.flipX ?? false,
|
|
16414
16516
|
flipY: element.flipY ?? false,
|
|
@@ -16457,8 +16559,8 @@ const PageCanvas = forwardRef(
|
|
|
16457
16559
|
const visibilityChanged = previousVisible !== currentVisible;
|
|
16458
16560
|
const storePosForImg = pageChildren ? (() => {
|
|
16459
16561
|
const node = findNodeById(pageChildren, element.id);
|
|
16460
|
-
return node ?
|
|
16461
|
-
})() : { left: element.left ?? 0, top: element.top ?? 0 };
|
|
16562
|
+
return node && isElement(node) ? getElementFabricPlacement(node, pageChildren) : { left: element.left ?? 0, top: element.top ?? 0, angle: element.angle ?? 0 };
|
|
16563
|
+
})() : { left: element.left ?? 0, top: element.top ?? 0, angle: element.angle ?? 0 };
|
|
16462
16564
|
const positionChanged = Math.abs((existingObj.left ?? 0) - storePosForImg.left) > 0.1 || Math.abs((existingObj.top ?? 0) - storePosForImg.top) > 0.1;
|
|
16463
16565
|
if (visibilityChanged && !positionChanged || visibilityUpdateInProgressRef.current) {
|
|
16464
16566
|
const isDynamicField = dynamicFieldIds.includes(element.id);
|
|
@@ -16500,7 +16602,7 @@ const PageCanvas = forwardRef(
|
|
|
16500
16602
|
const fabricTop = existingObj.top ?? 0;
|
|
16501
16603
|
const storePos = pageChildren ? (() => {
|
|
16502
16604
|
const node = findNodeById(pageChildren, element.id);
|
|
16503
|
-
return node ?
|
|
16605
|
+
return node && isElement(node) ? getElementFabricPlacement(node, pageChildren) : { left: element.left ?? 0, top: element.top ?? 0 };
|
|
16504
16606
|
})() : { left: element.left ?? 0, top: element.top ?? 0 };
|
|
16505
16607
|
const storeLeft = storePos.left;
|
|
16506
16608
|
const storeTop = storePos.top;
|
|
@@ -16627,7 +16729,7 @@ const PageCanvas = forwardRef(
|
|
|
16627
16729
|
setObjectData(placeholder, element.id);
|
|
16628
16730
|
const absPosImg = pageTree.length > 0 ? (() => {
|
|
16629
16731
|
const node = findNodeById(pageTree, element.id);
|
|
16630
|
-
return node ?
|
|
16732
|
+
return node && isElement(node) ? getElementFabricPlacement(node, pageTree) : { left: element.left ?? 0, top: element.top ?? 0 };
|
|
16631
16733
|
})() : { left: element.left ?? 0, top: element.top ?? 0 };
|
|
16632
16734
|
const placeholderWidth = Number((placeholder.width ?? 0) * (placeholder.scaleX ?? 1));
|
|
16633
16735
|
const placeholderHeight = Number((placeholder.height ?? 0) * (placeholder.scaleY ?? 1));
|
|
@@ -16676,7 +16778,7 @@ const PageCanvas = forwardRef(
|
|
|
16676
16778
|
if (obj) {
|
|
16677
16779
|
const absPos = pageTree.length > 0 ? (() => {
|
|
16678
16780
|
const node = findNodeById(pageTree, element.id);
|
|
16679
|
-
return node ?
|
|
16781
|
+
return node && isElement(node) ? getElementFabricPlacement(node, pageTree) : { left: element.left ?? 0, top: element.top ?? 0 };
|
|
16680
16782
|
})() : { left: element.left ?? 0, top: element.top ?? 0 };
|
|
16681
16783
|
obj.set({ left: absPos.left, top: absPos.top });
|
|
16682
16784
|
obj.setCoords();
|
|
@@ -17164,8 +17266,8 @@ const PageCanvas = forwardRef(
|
|
|
17164
17266
|
const currentPageTree = ((pageChildren == null ? void 0 : pageChildren.length) ? pageChildren : (_a2 = useEditorStore.getState().canvas.pages.find((p) => p.id === pageId)) == null ? void 0 : _a2.children) ?? [];
|
|
17165
17267
|
const fabricPos = currentPageTree.length > 0 ? (() => {
|
|
17166
17268
|
const node = findNodeById(currentPageTree, element.id);
|
|
17167
|
-
return node ?
|
|
17168
|
-
})() : { left: element.left ?? 0, top: element.top ?? 0 };
|
|
17269
|
+
return node && isElement(node) ? getElementFabricPlacement(node, currentPageTree) : { left: element.left ?? 0, top: element.top ?? 0, angle: element.angle ?? 0 };
|
|
17270
|
+
})() : { left: element.left ?? 0, top: element.top ?? 0, angle: element.angle ?? 0 };
|
|
17169
17271
|
const resolvedSize = currentPageTree.length > 0 ? getNodeBounds(element, currentPageTree) : { width: typeof element.width === "number" ? element.width : 200, height: typeof element.height === "number" ? element.height : 50 };
|
|
17170
17272
|
const shouldPreserveSmallSize = typeof element.width === "number" && Number.isFinite(element.width) && element.width > 0 && typeof element.height === "number" && Number.isFinite(element.height) && element.height > 0;
|
|
17171
17273
|
const minVisible = shouldPreserveSmallSize ? 1 : 20;
|
|
@@ -18234,14 +18336,14 @@ const PageCanvas = forwardRef(
|
|
|
18234
18336
|
const pageTreeForCreate = ((pageChildren == null ? void 0 : pageChildren.length) ? pageChildren : (_f = useEditorStore.getState().canvas.pages.find((p) => p.id === pageId)) == null ? void 0 : _f.children) ?? [];
|
|
18235
18337
|
const createPos = pageTreeForCreate.length > 0 ? (() => {
|
|
18236
18338
|
const node = findNodeById(pageTreeForCreate, element.id);
|
|
18237
|
-
return node ?
|
|
18238
|
-
})() : { left: element.left ?? 0, top: element.top ?? 0 };
|
|
18339
|
+
return node && isElement(node) ? getElementFabricPlacement(node, pageTreeForCreate, pageBoundsOptions) : { left: element.left ?? 0, top: element.top ?? 0, angle: element.angle ?? 0 };
|
|
18340
|
+
})() : { left: element.left ?? 0, top: element.top ?? 0, angle: element.angle ?? 0 };
|
|
18239
18341
|
img.set({
|
|
18240
18342
|
left: createPos.left,
|
|
18241
18343
|
top: createPos.top,
|
|
18242
18344
|
scaleX: finalScaleX,
|
|
18243
18345
|
scaleY: finalScaleY,
|
|
18244
|
-
angle: element.angle ?? 0,
|
|
18346
|
+
angle: createPos.angle ?? element.angle ?? 0,
|
|
18245
18347
|
skewX: element.skewX ?? 0,
|
|
18246
18348
|
skewY: element.skewY ?? 0,
|
|
18247
18349
|
flipX: element.flipX ?? false,
|
|
@@ -18328,8 +18430,8 @@ const PageCanvas = forwardRef(
|
|
|
18328
18430
|
const pageTreeForCrop = ((pageChildren == null ? void 0 : pageChildren.length) ? pageChildren : (_n = useEditorStore.getState().canvas.pages.find((p) => p.id === pageId)) == null ? void 0 : _n.children) ?? [];
|
|
18329
18431
|
const createPosForCrop = pageTreeForCrop.length > 0 ? (() => {
|
|
18330
18432
|
const node = findNodeById(pageTreeForCrop, element.id);
|
|
18331
|
-
return node ?
|
|
18332
|
-
})() : { left: element.left ?? 0, top: element.top ?? 0 };
|
|
18433
|
+
return node && isElement(node) ? getElementFabricPlacement(node, pageTreeForCrop, pageBoundsOptions) : { left: element.left ?? 0, top: element.top ?? 0, angle: element.angle ?? 0 };
|
|
18434
|
+
})() : { left: element.left ?? 0, top: element.top ?? 0, angle: element.angle ?? 0 };
|
|
18333
18435
|
const nodeForCreate = pageTreeForCrop.length ? findNodeById(pageTreeForCrop, element.id) : null;
|
|
18334
18436
|
const createW = nodeForCreate && isElement(nodeForCreate) ? nodeForCreate.width : elementWidth;
|
|
18335
18437
|
const createH = nodeForCreate && isElement(nodeForCreate) ? nodeForCreate.height : elementHeight;
|
|
@@ -18337,8 +18439,9 @@ const PageCanvas = forwardRef(
|
|
|
18337
18439
|
const createSy = nodeForCreate && isElement(nodeForCreate) ? nodeForCreate.scaleY ?? 1 : element.scaleY ?? 1;
|
|
18338
18440
|
const frameW = Math.max(1, Number(createW) || 200) * createSx;
|
|
18339
18441
|
const frameH = Math.max(1, Number(createH) || 50) * createSy;
|
|
18340
|
-
const
|
|
18341
|
-
const
|
|
18442
|
+
const createCenter = rotatedTopLeftToCenter(createPosForCrop.left, createPosForCrop.top, frameW, frameH, createPosForCrop.angle ?? element.angle ?? 0);
|
|
18443
|
+
const createCenterX = createCenter.x;
|
|
18444
|
+
const createCenterY = createCenter.y;
|
|
18342
18445
|
const cropGroup = await createMaskedImageElement({
|
|
18343
18446
|
image: img,
|
|
18344
18447
|
frameW,
|
|
@@ -18351,7 +18454,7 @@ const PageCanvas = forwardRef(
|
|
|
18351
18454
|
strokeWidth: 0,
|
|
18352
18455
|
left: createCenterX,
|
|
18353
18456
|
top: createCenterY,
|
|
18354
|
-
angle: element.angle ?? 0,
|
|
18457
|
+
angle: createPosForCrop.angle ?? element.angle ?? 0,
|
|
18355
18458
|
opacity: isHidden ? 0 : element.opacity ?? 1,
|
|
18356
18459
|
selectable: allowSelection && !isHidden,
|
|
18357
18460
|
evented: canBeEvented && !isHidden,
|
|
@@ -24741,9 +24844,9 @@ function captureFabricCanvasSvgForPdf(fabricInstance, canvasWidth, canvasHeight)
|
|
|
24741
24844
|
}
|
|
24742
24845
|
return svgString;
|
|
24743
24846
|
}
|
|
24744
|
-
const resolvedPackageVersion = "0.5.
|
|
24847
|
+
const resolvedPackageVersion = "0.5.350";
|
|
24745
24848
|
const PACKAGE_VERSION = resolvedPackageVersion;
|
|
24746
|
-
const DEPLOYMENT_VERSION_MARKER = "__PIXLDOCS_CANVAS_RENDERER_VERSION__:0.5.
|
|
24849
|
+
const DEPLOYMENT_VERSION_MARKER = "__PIXLDOCS_CANVAS_RENDERER_VERSION__:0.5.350";
|
|
24747
24850
|
const roundParityValue = (value) => {
|
|
24748
24851
|
if (typeof value !== "number") return value;
|
|
24749
24852
|
return Number.isFinite(value) ? Number(value.toFixed(3)) : value;
|
|
@@ -25557,7 +25660,7 @@ class PixldocsRenderer {
|
|
|
25557
25660
|
await this.waitForCanvasScene(container, cloned, i);
|
|
25558
25661
|
}
|
|
25559
25662
|
console.log(`[canvas-renderer][pdf-unified] mounted ${cloned.pages.length} page(s), handing off to client exportMultiPagePdf`);
|
|
25560
|
-
const { exportMultiPagePdf, preparePagesForExport } = await import("./vectorPdfExport-
|
|
25663
|
+
const { exportMultiPagePdf, preparePagesForExport } = await import("./vectorPdfExport-Do4oLw96.js");
|
|
25561
25664
|
const prepared = preparePagesForExport(
|
|
25562
25665
|
cloned.pages,
|
|
25563
25666
|
canvasWidth,
|
|
@@ -27877,7 +27980,7 @@ async function prepareLiveCanvasSvgForPdf(rawSvg, pageWidth, pageHeight, pageKey
|
|
|
27877
27980
|
if (options == null ? void 0 : options.stripPageBackground) stripRootPageBackgroundFromSvg(svgToDraw);
|
|
27878
27981
|
sanitizeSvgTreeForPdf(svgToDraw);
|
|
27879
27982
|
try {
|
|
27880
|
-
const { bakeTextAnchorPositionsFromLiveSvg, logTextMeasurementDiagnostic } = await import("./vectorPdfExport-
|
|
27983
|
+
const { bakeTextAnchorPositionsFromLiveSvg, logTextMeasurementDiagnostic } = await import("./vectorPdfExport-Do4oLw96.js");
|
|
27881
27984
|
try {
|
|
27882
27985
|
await logTextMeasurementDiagnostic(svgToDraw);
|
|
27883
27986
|
} catch {
|
|
@@ -28277,4 +28380,4 @@ export {
|
|
|
28277
28380
|
buildTeaserBlurFlatKeys as y,
|
|
28278
28381
|
collectFontDescriptorsFromConfig as z
|
|
28279
28382
|
};
|
|
28280
|
-
//# sourceMappingURL=index-
|
|
28383
|
+
//# sourceMappingURL=index-kSwmRnZP.js.map
|