@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
|
@@ -10518,6 +10518,102 @@ function bakeEdgeFade(source, fade) {
|
|
|
10518
10518
|
}
|
|
10519
10519
|
return canvas;
|
|
10520
10520
|
}
|
|
10521
|
+
const normalizeSignedAngle = (angle) => (angle % 360 + 540) % 360 - 180;
|
|
10522
|
+
const rotatedTopLeftToCenter = (left, top, width, height, angleDeg = 0) => {
|
|
10523
|
+
const angle = angleDeg * Math.PI / 180;
|
|
10524
|
+
const cos = Math.cos(angle);
|
|
10525
|
+
const sin = Math.sin(angle);
|
|
10526
|
+
return {
|
|
10527
|
+
x: left + width / 2 * cos - height / 2 * sin,
|
|
10528
|
+
y: top + width / 2 * sin + height / 2 * cos
|
|
10529
|
+
};
|
|
10530
|
+
};
|
|
10531
|
+
const centerToRotatedTopLeft = (centerX, centerY, width, height, angleDeg = 0) => {
|
|
10532
|
+
const angle = angleDeg * Math.PI / 180;
|
|
10533
|
+
const cos = Math.cos(angle);
|
|
10534
|
+
const sin = Math.sin(angle);
|
|
10535
|
+
return {
|
|
10536
|
+
left: centerX - width / 2 * cos + height / 2 * sin,
|
|
10537
|
+
top: centerY - width / 2 * sin - height / 2 * cos
|
|
10538
|
+
};
|
|
10539
|
+
};
|
|
10540
|
+
const getGroupTransformFrame = (group, pageChildren, options) => {
|
|
10541
|
+
const bounds = getNodeBounds(group, pageChildren);
|
|
10542
|
+
const width = Math.max(1, Number(group.width ?? bounds.width) || bounds.width || 1);
|
|
10543
|
+
const height = Math.max(1, Number(group.height ?? bounds.height) || bounds.height || 1);
|
|
10544
|
+
return {
|
|
10545
|
+
left: Number(group.left ?? bounds.left ?? 0) || 0,
|
|
10546
|
+
top: Number(group.top ?? bounds.top ?? 0) || 0,
|
|
10547
|
+
width,
|
|
10548
|
+
height,
|
|
10549
|
+
angle: Number(group.angle ?? 0) || 0
|
|
10550
|
+
};
|
|
10551
|
+
};
|
|
10552
|
+
const getGroupLocalToParentMatrix = (group, pageChildren, options) => {
|
|
10553
|
+
const frame = getGroupTransformFrame(group, pageChildren);
|
|
10554
|
+
const rad = frame.angle * Math.PI / 180;
|
|
10555
|
+
const cos = Math.cos(rad);
|
|
10556
|
+
const sin = Math.sin(rad);
|
|
10557
|
+
return [
|
|
10558
|
+
cos,
|
|
10559
|
+
sin,
|
|
10560
|
+
-sin,
|
|
10561
|
+
cos,
|
|
10562
|
+
frame.left,
|
|
10563
|
+
frame.top
|
|
10564
|
+
];
|
|
10565
|
+
};
|
|
10566
|
+
const getAncestorGroupTransform = (nodeId, pageChildren, fabric2, options) => {
|
|
10567
|
+
let matrix = [1, 0, 0, 1, 0, 0];
|
|
10568
|
+
let angle = 0;
|
|
10569
|
+
const chain = [];
|
|
10570
|
+
let currentId = nodeId;
|
|
10571
|
+
for (let guard = 0; guard < 32; guard++) {
|
|
10572
|
+
const parent = findParentGroup(pageChildren, currentId);
|
|
10573
|
+
if (!parent) break;
|
|
10574
|
+
chain.unshift(parent);
|
|
10575
|
+
currentId = parent.id;
|
|
10576
|
+
}
|
|
10577
|
+
for (const group of chain) {
|
|
10578
|
+
matrix = fabric2.util.multiplyTransformMatrices(
|
|
10579
|
+
matrix,
|
|
10580
|
+
getGroupLocalToParentMatrix(group, pageChildren)
|
|
10581
|
+
);
|
|
10582
|
+
angle += Number(group.angle ?? 0) || 0;
|
|
10583
|
+
}
|
|
10584
|
+
return { matrix, angle: normalizeSignedAngle(angle) };
|
|
10585
|
+
};
|
|
10586
|
+
const getElementFabricPlacement$1 = (element, pageChildren, fabric2, options) => {
|
|
10587
|
+
if (!pageChildren.length) {
|
|
10588
|
+
return { left: element.left ?? 0, top: element.top ?? 0, angle: element.angle ?? 0 };
|
|
10589
|
+
}
|
|
10590
|
+
const ancestor = getAncestorGroupTransform(element.id, pageChildren, fabric2);
|
|
10591
|
+
const point = fabric2.util.transformPoint(
|
|
10592
|
+
new fabric2.Point(element.left ?? 0, element.top ?? 0),
|
|
10593
|
+
ancestor.matrix
|
|
10594
|
+
);
|
|
10595
|
+
return {
|
|
10596
|
+
left: point.x,
|
|
10597
|
+
top: point.y,
|
|
10598
|
+
angle: normalizeSignedAngle(ancestor.angle + Number(element.angle ?? 0))
|
|
10599
|
+
};
|
|
10600
|
+
};
|
|
10601
|
+
const getGroupAbsoluteTransformFrame$1 = (group, pageChildren, fabric2, options) => {
|
|
10602
|
+
const frame = getGroupTransformFrame(group, pageChildren);
|
|
10603
|
+
const ancestor = getAncestorGroupTransform(group.id, pageChildren, fabric2);
|
|
10604
|
+
const centerLocal = rotatedTopLeftToCenter(frame.left, frame.top, frame.width, frame.height, frame.angle);
|
|
10605
|
+
const center = fabric2.util.transformPoint(new fabric2.Point(centerLocal.x, centerLocal.y), ancestor.matrix);
|
|
10606
|
+
const topLeft = fabric2.util.transformPoint(new fabric2.Point(frame.left, frame.top), ancestor.matrix);
|
|
10607
|
+
return {
|
|
10608
|
+
left: topLeft.x,
|
|
10609
|
+
top: topLeft.y,
|
|
10610
|
+
width: frame.width,
|
|
10611
|
+
height: frame.height,
|
|
10612
|
+
centerX: center.x,
|
|
10613
|
+
centerY: center.y,
|
|
10614
|
+
angle: normalizeSignedAngle(ancestor.angle + frame.angle)
|
|
10615
|
+
};
|
|
10616
|
+
};
|
|
10521
10617
|
const SELECTION_PRIMARY = "hsl(217, 91%, 60%)";
|
|
10522
10618
|
const SELECTION_BORDER_SCALE = 2;
|
|
10523
10619
|
let ensureCanvaControlRenders = () => {
|
|
@@ -10971,12 +11067,18 @@ try {
|
|
|
10971
11067
|
} catch (e) {
|
|
10972
11068
|
}
|
|
10973
11069
|
};
|
|
10974
|
-
const
|
|
10975
|
-
|
|
10976
|
-
|
|
10977
|
-
|
|
10978
|
-
|
|
10979
|
-
|
|
11070
|
+
const wrapControlsFactory = (key) => {
|
|
11071
|
+
if (typeof cu[key] !== "function") return;
|
|
11072
|
+
const descriptor = Object.getOwnPropertyDescriptor(cu, key);
|
|
11073
|
+
if (descriptor && descriptor.writable === false && !descriptor.set) return;
|
|
11074
|
+
const original = cu[key].bind(cu);
|
|
11075
|
+
try {
|
|
11076
|
+
cu[key] = () => installPillRenders(original());
|
|
11077
|
+
} catch {
|
|
11078
|
+
}
|
|
11079
|
+
};
|
|
11080
|
+
wrapControlsFactory("createObjectDefaultControls");
|
|
11081
|
+
wrapControlsFactory("createTextboxDefaultControls");
|
|
10980
11082
|
const wrapClassCreateControls = (Klass) => {
|
|
10981
11083
|
if (!Klass || typeof Klass.createControls !== "function") return;
|
|
10982
11084
|
const orig = Klass.createControls.bind(Klass);
|
|
@@ -11217,15 +11319,8 @@ const bakeTextboxScaleIntoTypography = (obj, sourceElement) => {
|
|
|
11217
11319
|
};
|
|
11218
11320
|
return updates;
|
|
11219
11321
|
};
|
|
11220
|
-
const
|
|
11221
|
-
|
|
11222
|
-
const cos = Math.cos(angle);
|
|
11223
|
-
const sin = Math.sin(angle);
|
|
11224
|
-
return {
|
|
11225
|
-
x: left + width / 2 * cos - height / 2 * sin,
|
|
11226
|
-
y: top + width / 2 * sin + height / 2 * cos
|
|
11227
|
-
};
|
|
11228
|
-
};
|
|
11322
|
+
const getElementFabricPlacement = (element, pageChildren, options) => getElementFabricPlacement$1(element, pageChildren, fabric__namespace);
|
|
11323
|
+
const getGroupAbsoluteTransformFrame = (group, pageChildren, options) => getGroupAbsoluteTransformFrame$1(group, pageChildren, fabric__namespace);
|
|
11229
11324
|
function applyWarpAwareSelectionBorders(selection) {
|
|
11230
11325
|
var _a2;
|
|
11231
11326
|
if (selection.__pixldocsOrigASHasBorders !== void 0) {
|
|
@@ -11374,13 +11469,13 @@ const PageCanvas = react.forwardRef(
|
|
|
11374
11469
|
));
|
|
11375
11470
|
const pageChildren2 = ((_a2 = useEditorStore.getState().canvas.pages.find((p) => p.id === pageId)) == null ? void 0 : _a2.children) ?? [];
|
|
11376
11471
|
const groupNode = findNodeById(pageChildren2, groupId);
|
|
11377
|
-
const
|
|
11378
|
-
const
|
|
11472
|
+
const groupFrame = groupNode && isGroup(groupNode) ? getGroupAbsoluteTransformFrame(groupNode, pageChildren2, pageBoundsOptions) : null;
|
|
11473
|
+
const groupAngle = groupFrame ? groupFrame.angle : 0;
|
|
11379
11474
|
if (Number.isFinite(groupAngle)) {
|
|
11380
11475
|
selection.set({ angle: groupAngle, scaleX: 1, scaleY: 1, skewX: 0, skewY: 0 });
|
|
11381
|
-
if (
|
|
11476
|
+
if (groupFrame) {
|
|
11382
11477
|
selection.setPositionByOrigin(
|
|
11383
|
-
new fabric__namespace.Point(
|
|
11478
|
+
new fabric__namespace.Point(groupFrame.centerX, groupFrame.centerY),
|
|
11384
11479
|
"center",
|
|
11385
11480
|
"center"
|
|
11386
11481
|
);
|
|
@@ -12353,7 +12448,6 @@ const PageCanvas = react.forwardRef(
|
|
|
12353
12448
|
fabricCanvas.__fontCleanup = fontCleanup;
|
|
12354
12449
|
fabricCanvas.__isUserTransforming = false;
|
|
12355
12450
|
fabricCanvas.on("mouse:down", () => {
|
|
12356
|
-
groupSelectionTransformStartRef.current = null;
|
|
12357
12451
|
activeSelectionMoveStartRef.current = null;
|
|
12358
12452
|
activeSelectionResizeHandleRef.current = null;
|
|
12359
12453
|
const active = fabricCanvas.getActiveObject();
|
|
@@ -12866,7 +12960,8 @@ const PageCanvas = react.forwardRef(
|
|
|
12866
12960
|
const pageChildren2 = ((_b2 = useEditorStore.getState().canvas.pages.find((p) => p.id === pageId)) == null ? void 0 : _b2.children) ?? [];
|
|
12867
12961
|
const groupNode = findNodeById(pageChildren2, groupId);
|
|
12868
12962
|
if (!groupNode) return;
|
|
12869
|
-
const
|
|
12963
|
+
const groupFrame = isGroup(groupNode) ? getGroupAbsoluteTransformFrame(groupNode, pageChildren2) : null;
|
|
12964
|
+
const groupAbs = groupFrame ?? getAbsoluteBounds(groupNode, pageChildren2);
|
|
12870
12965
|
const rect = active.getBoundingRect();
|
|
12871
12966
|
const center = active.getCenterPoint();
|
|
12872
12967
|
groupSelectionTransformStartRef.current = {
|
|
@@ -12880,7 +12975,7 @@ const PageCanvas = react.forwardRef(
|
|
|
12880
12975
|
groupTop: groupAbs.top,
|
|
12881
12976
|
groupWidth: groupAbs.width,
|
|
12882
12977
|
groupHeight: groupAbs.height,
|
|
12883
|
-
selectionAngle: ((active.angle ?? 0) % 360 + 360) % 360
|
|
12978
|
+
selectionAngle: (((groupFrame == null ? void 0 : groupFrame.angle) ?? active.angle ?? 0) % 360 + 360) % 360
|
|
12884
12979
|
};
|
|
12885
12980
|
};
|
|
12886
12981
|
const restoreGroupSelectionVisualState = (selection, groupId) => {
|
|
@@ -14850,7 +14945,14 @@ const PageCanvas = react.forwardRef(
|
|
|
14850
14945
|
const node = findNodeById(pageChildren2, id);
|
|
14851
14946
|
return !!(node && isGroup(node));
|
|
14852
14947
|
});
|
|
14853
|
-
const activeSelectionHadTransform = activeObj instanceof fabric__namespace.ActiveSelection && (Math.abs((activeObj.scaleX ?? 1) - 1) > 0.01 || Math.abs((activeObj.scaleY ?? 1) - 1) > 0.01 ||
|
|
14948
|
+
const activeSelectionHadTransform = activeObj instanceof fabric__namespace.ActiveSelection && (Math.abs((activeObj.scaleX ?? 1) - 1) > 0.01 || Math.abs((activeObj.scaleY ?? 1) - 1) > 0.01 || (() => {
|
|
14949
|
+
var _a3;
|
|
14950
|
+
const normAngle = (angle) => (angle % 360 + 360) % 360;
|
|
14951
|
+
const startAngle = ((_a3 = groupSelectionTransformStartRef.current) == null ? void 0 : _a3.selection) === activeObj ? groupSelectionTransformStartRef.current.selectionAngle : 0;
|
|
14952
|
+
const currentAngle = normAngle(activeObj.angle ?? 0);
|
|
14953
|
+
const diff = Math.abs(currentAngle - normAngle(startAngle));
|
|
14954
|
+
return Math.min(diff, 360 - diff) > 1;
|
|
14955
|
+
})());
|
|
14854
14956
|
if (!anyCropGroup && activeSelectionDelta && !activeSelectionHadTransform && selectedLogicalGroupIds.length > 0) {
|
|
14855
14957
|
const selectedStoreIds = useEditorStore.getState().canvas.selectedIds ?? [];
|
|
14856
14958
|
const groupMemberIds = /* @__PURE__ */ new Set();
|
|
@@ -14965,7 +15067,7 @@ const PageCanvas = react.forwardRef(
|
|
|
14965
15067
|
const storedGroupAngle = normalizeAngle(Number(groupToMove.angle ?? 0));
|
|
14966
15068
|
const effectiveStartAngle = transformStart ? startSelAngle : storedGroupAngle;
|
|
14967
15069
|
const angleDelta = shortestAngleDelta(currentSelAngle, effectiveStartAngle);
|
|
14968
|
-
const hadRotation = isActiveSelection && activeObj && angleDelta >
|
|
15070
|
+
const hadRotation = isActiveSelection && activeObj && angleDelta > 1;
|
|
14969
15071
|
if (activeGroupSelectionId === groupToMove.id && hadRotation && !hadScale && !activeSelectionResizeHandle && activeObj instanceof fabric__namespace.ActiveSelection) {
|
|
14970
15072
|
const { updateNode: updateNodeStore, commitHistory: commitHistoryStore, getCurrentElements } = useEditorStore.getState();
|
|
14971
15073
|
const center = activeObj.getCenterPoint();
|
|
@@ -15052,7 +15154,7 @@ const PageCanvas = react.forwardRef(
|
|
|
15052
15154
|
const logicalGroupSelectionId = activeObj instanceof fabric__namespace.ActiveSelection ? activeObj.__pixldocsGroupSelection : void 0;
|
|
15053
15155
|
const isLogicalGroupAS = !!logicalGroupSelectionId && !(activeObj == null ? void 0 : activeObj.__cropGroup) && !(activeObj == null ? void 0 : activeObj.__docuforgeSectionGroup);
|
|
15054
15156
|
const logicalGroupNodeForBake = logicalGroupSelectionId ? findNodeById(pageChildren2, logicalGroupSelectionId) : null;
|
|
15055
|
-
const asAngleForBake = isLogicalGroupAS && activeObj ? normalizeAngle(Number(
|
|
15157
|
+
const asAngleForBake = isLogicalGroupAS && activeObj ? normalizeAngle(Number(activeObj.angle ?? 0)) : 0;
|
|
15056
15158
|
const logicalGroupFinalFrame = (() => {
|
|
15057
15159
|
var _a3;
|
|
15058
15160
|
if (!isLogicalGroupAS || !logicalGroupSelectionId || !(activeObj instanceof fabric__namespace.ActiveSelection)) return null;
|
|
@@ -15060,10 +15162,11 @@ const PageCanvas = react.forwardRef(
|
|
|
15060
15162
|
const localWidth = Math.max(1, (activeObj.width ?? (baseline == null ? void 0 : baseline.groupWidth) ?? 1) * Math.abs(activeObj.scaleX ?? 1));
|
|
15061
15163
|
const localHeight = Math.max(1, (activeObj.height ?? (baseline == null ? void 0 : baseline.groupHeight) ?? 1) * Math.abs(activeObj.scaleY ?? 1));
|
|
15062
15164
|
const center = activeObj.getCenterPoint();
|
|
15165
|
+
const topLeft = centerToRotatedTopLeft(center.x, center.y, localWidth, localHeight, asAngleForBake);
|
|
15063
15166
|
return {
|
|
15064
15167
|
groupId: logicalGroupSelectionId,
|
|
15065
|
-
left:
|
|
15066
|
-
top:
|
|
15168
|
+
left: topLeft.left,
|
|
15169
|
+
top: topLeft.top,
|
|
15067
15170
|
width: localWidth,
|
|
15068
15171
|
height: localHeight,
|
|
15069
15172
|
centerX: center.x,
|
|
@@ -15125,16 +15228,15 @@ const PageCanvas = react.forwardRef(
|
|
|
15125
15228
|
modifiedIdsThisRound.add(objId);
|
|
15126
15229
|
let absoluteLeft;
|
|
15127
15230
|
let absoluteTop;
|
|
15128
|
-
|
|
15129
|
-
|
|
15130
|
-
|
|
15131
|
-
|
|
15132
|
-
|
|
15133
|
-
|
|
15134
|
-
|
|
15135
|
-
|
|
15136
|
-
|
|
15137
|
-
}
|
|
15231
|
+
const initialTopLeft = centerToRotatedTopLeft(
|
|
15232
|
+
decomposed.translateX ?? (obj.left ?? 0),
|
|
15233
|
+
decomposed.translateY ?? (obj.top ?? 0),
|
|
15234
|
+
intrinsicWidth * Math.abs(decomposed.scaleX || 1),
|
|
15235
|
+
intrinsicHeight * Math.abs(decomposed.scaleY || 1),
|
|
15236
|
+
decomposed.angle ?? 0
|
|
15237
|
+
);
|
|
15238
|
+
absoluteLeft = initialTopLeft.left;
|
|
15239
|
+
absoluteTop = initialTopLeft.top;
|
|
15138
15240
|
if (obj instanceof fabric__namespace.Group && obj.__cropGroup) {
|
|
15139
15241
|
const ct = obj.__cropData;
|
|
15140
15242
|
if (isActiveSelection && activeObj instanceof fabric__namespace.ActiveSelection) {
|
|
@@ -16218,7 +16320,7 @@ const PageCanvas = react.forwardRef(
|
|
|
16218
16320
|
const nextHeight = Math.max(minVisiblePlaceholder, Number(resolvedSizeImg.height) || 50);
|
|
16219
16321
|
const storePosImg = pageChildren ? (() => {
|
|
16220
16322
|
const node = findNodeById(pageChildren, element.id);
|
|
16221
|
-
return node ?
|
|
16323
|
+
return node && isElement(node) ? getElementFabricPlacement(node, pageChildren) : { left: element.left ?? 0, top: element.top ?? 0 };
|
|
16222
16324
|
})() : { left: element.left ?? 0, top: element.top ?? 0 };
|
|
16223
16325
|
const elementForPlaceholder = { ...element, width: nextWidth, height: nextHeight };
|
|
16224
16326
|
const placeholder = isCropGroup2 ? createImagePlaceholderForGroup(elementForPlaceholder) : createImagePlaceholder(elementForPlaceholder);
|
|
@@ -16281,14 +16383,14 @@ const PageCanvas = react.forwardRef(
|
|
|
16281
16383
|
}
|
|
16282
16384
|
const cropPos = pageChildren ? (() => {
|
|
16283
16385
|
const node = findNodeById(pageChildren, element.id);
|
|
16284
|
-
return node ?
|
|
16285
|
-
})() : { left: element.left ?? 0, top: element.top ?? 0 };
|
|
16286
|
-
const cropCenter = rotatedTopLeftToCenter(cropPos.left, cropPos.top, ct.frameW ?? 0, ct.frameH ?? 0, element.angle ?? 0);
|
|
16386
|
+
return node && isElement(node) ? getElementFabricPlacement(node, pageChildren) : { left: element.left ?? 0, top: element.top ?? 0, angle: element.angle ?? 0 };
|
|
16387
|
+
})() : { left: element.left ?? 0, top: element.top ?? 0, angle: element.angle ?? 0 };
|
|
16388
|
+
const cropCenter = rotatedTopLeftToCenter(cropPos.left, cropPos.top, ct.frameW ?? 0, ct.frameH ?? 0, cropPos.angle ?? element.angle ?? 0);
|
|
16287
16389
|
const cropCenterX = cropCenter.x;
|
|
16288
16390
|
const cropCenterY = cropCenter.y;
|
|
16289
16391
|
if (element.left !== void 0) existingObj.set({ left: cropCenterX });
|
|
16290
16392
|
if (element.top !== void 0) existingObj.set({ top: cropCenterY });
|
|
16291
|
-
|
|
16393
|
+
existingObj.set({ angle: cropPos.angle ?? element.angle ?? 0 });
|
|
16292
16394
|
existingObj.set({
|
|
16293
16395
|
flipX: element.flipX ?? false,
|
|
16294
16396
|
flipY: element.flipY ?? false
|
|
@@ -16411,8 +16513,8 @@ const PageCanvas = react.forwardRef(
|
|
|
16411
16513
|
if (isPlaceholderGroup) {
|
|
16412
16514
|
const storePosImg = pageChildren ? (() => {
|
|
16413
16515
|
const node = findNodeById(pageChildren, element.id);
|
|
16414
|
-
return node ?
|
|
16415
|
-
})() : { left: element.left ?? 0, top: element.top ?? 0 };
|
|
16516
|
+
return node && isElement(node) ? getElementFabricPlacement(node, pageChildren) : { left: element.left ?? 0, top: element.top ?? 0, angle: element.angle ?? 0 };
|
|
16517
|
+
})() : { left: element.left ?? 0, top: element.top ?? 0, angle: element.angle ?? 0 };
|
|
16416
16518
|
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 };
|
|
16417
16519
|
const hasExplicitSize = typeof element.width === "number" && Number.isFinite(element.width) && element.width > 0 && typeof element.height === "number" && Number.isFinite(element.height) && element.height > 0;
|
|
16418
16520
|
const minVisiblePlaceholder = hasExplicitSize ? 1 : 20;
|
|
@@ -16426,7 +16528,7 @@ const PageCanvas = react.forwardRef(
|
|
|
16426
16528
|
top: storePosImg.top + nextHeight / 2,
|
|
16427
16529
|
originX: "center",
|
|
16428
16530
|
originY: "center",
|
|
16429
|
-
angle: element.angle ?? 0,
|
|
16531
|
+
angle: storePosImg.angle ?? element.angle ?? 0,
|
|
16430
16532
|
opacity: isHidden ? 0 : element.opacity ?? 1,
|
|
16431
16533
|
flipX: element.flipX ?? false,
|
|
16432
16534
|
flipY: element.flipY ?? false,
|
|
@@ -16475,8 +16577,8 @@ const PageCanvas = react.forwardRef(
|
|
|
16475
16577
|
const visibilityChanged = previousVisible !== currentVisible;
|
|
16476
16578
|
const storePosForImg = pageChildren ? (() => {
|
|
16477
16579
|
const node = findNodeById(pageChildren, element.id);
|
|
16478
|
-
return node ?
|
|
16479
|
-
})() : { left: element.left ?? 0, top: element.top ?? 0 };
|
|
16580
|
+
return node && isElement(node) ? getElementFabricPlacement(node, pageChildren) : { left: element.left ?? 0, top: element.top ?? 0, angle: element.angle ?? 0 };
|
|
16581
|
+
})() : { left: element.left ?? 0, top: element.top ?? 0, angle: element.angle ?? 0 };
|
|
16480
16582
|
const positionChanged = Math.abs((existingObj.left ?? 0) - storePosForImg.left) > 0.1 || Math.abs((existingObj.top ?? 0) - storePosForImg.top) > 0.1;
|
|
16481
16583
|
if (visibilityChanged && !positionChanged || visibilityUpdateInProgressRef.current) {
|
|
16482
16584
|
const isDynamicField = dynamicFieldIds.includes(element.id);
|
|
@@ -16518,7 +16620,7 @@ const PageCanvas = react.forwardRef(
|
|
|
16518
16620
|
const fabricTop = existingObj.top ?? 0;
|
|
16519
16621
|
const storePos = pageChildren ? (() => {
|
|
16520
16622
|
const node = findNodeById(pageChildren, element.id);
|
|
16521
|
-
return node ?
|
|
16623
|
+
return node && isElement(node) ? getElementFabricPlacement(node, pageChildren) : { left: element.left ?? 0, top: element.top ?? 0 };
|
|
16522
16624
|
})() : { left: element.left ?? 0, top: element.top ?? 0 };
|
|
16523
16625
|
const storeLeft = storePos.left;
|
|
16524
16626
|
const storeTop = storePos.top;
|
|
@@ -16645,7 +16747,7 @@ const PageCanvas = react.forwardRef(
|
|
|
16645
16747
|
setObjectData(placeholder, element.id);
|
|
16646
16748
|
const absPosImg = pageTree.length > 0 ? (() => {
|
|
16647
16749
|
const node = findNodeById(pageTree, element.id);
|
|
16648
|
-
return node ?
|
|
16750
|
+
return node && isElement(node) ? getElementFabricPlacement(node, pageTree) : { left: element.left ?? 0, top: element.top ?? 0 };
|
|
16649
16751
|
})() : { left: element.left ?? 0, top: element.top ?? 0 };
|
|
16650
16752
|
const placeholderWidth = Number((placeholder.width ?? 0) * (placeholder.scaleX ?? 1));
|
|
16651
16753
|
const placeholderHeight = Number((placeholder.height ?? 0) * (placeholder.scaleY ?? 1));
|
|
@@ -16694,7 +16796,7 @@ const PageCanvas = react.forwardRef(
|
|
|
16694
16796
|
if (obj) {
|
|
16695
16797
|
const absPos = pageTree.length > 0 ? (() => {
|
|
16696
16798
|
const node = findNodeById(pageTree, element.id);
|
|
16697
|
-
return node ?
|
|
16799
|
+
return node && isElement(node) ? getElementFabricPlacement(node, pageTree) : { left: element.left ?? 0, top: element.top ?? 0 };
|
|
16698
16800
|
})() : { left: element.left ?? 0, top: element.top ?? 0 };
|
|
16699
16801
|
obj.set({ left: absPos.left, top: absPos.top });
|
|
16700
16802
|
obj.setCoords();
|
|
@@ -17182,8 +17284,8 @@ const PageCanvas = react.forwardRef(
|
|
|
17182
17284
|
const currentPageTree = ((pageChildren == null ? void 0 : pageChildren.length) ? pageChildren : (_a2 = useEditorStore.getState().canvas.pages.find((p) => p.id === pageId)) == null ? void 0 : _a2.children) ?? [];
|
|
17183
17285
|
const fabricPos = currentPageTree.length > 0 ? (() => {
|
|
17184
17286
|
const node = findNodeById(currentPageTree, element.id);
|
|
17185
|
-
return node ?
|
|
17186
|
-
})() : { left: element.left ?? 0, top: element.top ?? 0 };
|
|
17287
|
+
return node && isElement(node) ? getElementFabricPlacement(node, currentPageTree) : { left: element.left ?? 0, top: element.top ?? 0, angle: element.angle ?? 0 };
|
|
17288
|
+
})() : { left: element.left ?? 0, top: element.top ?? 0, angle: element.angle ?? 0 };
|
|
17187
17289
|
const resolvedSize = currentPageTree.length > 0 ? getNodeBounds(element, currentPageTree) : { width: typeof element.width === "number" ? element.width : 200, height: typeof element.height === "number" ? element.height : 50 };
|
|
17188
17290
|
const shouldPreserveSmallSize = typeof element.width === "number" && Number.isFinite(element.width) && element.width > 0 && typeof element.height === "number" && Number.isFinite(element.height) && element.height > 0;
|
|
17189
17291
|
const minVisible = shouldPreserveSmallSize ? 1 : 20;
|
|
@@ -18252,14 +18354,14 @@ const PageCanvas = react.forwardRef(
|
|
|
18252
18354
|
const pageTreeForCreate = ((pageChildren == null ? void 0 : pageChildren.length) ? pageChildren : (_f = useEditorStore.getState().canvas.pages.find((p) => p.id === pageId)) == null ? void 0 : _f.children) ?? [];
|
|
18253
18355
|
const createPos = pageTreeForCreate.length > 0 ? (() => {
|
|
18254
18356
|
const node = findNodeById(pageTreeForCreate, element.id);
|
|
18255
|
-
return node ?
|
|
18256
|
-
})() : { left: element.left ?? 0, top: element.top ?? 0 };
|
|
18357
|
+
return node && isElement(node) ? getElementFabricPlacement(node, pageTreeForCreate, pageBoundsOptions) : { left: element.left ?? 0, top: element.top ?? 0, angle: element.angle ?? 0 };
|
|
18358
|
+
})() : { left: element.left ?? 0, top: element.top ?? 0, angle: element.angle ?? 0 };
|
|
18257
18359
|
img.set({
|
|
18258
18360
|
left: createPos.left,
|
|
18259
18361
|
top: createPos.top,
|
|
18260
18362
|
scaleX: finalScaleX,
|
|
18261
18363
|
scaleY: finalScaleY,
|
|
18262
|
-
angle: element.angle ?? 0,
|
|
18364
|
+
angle: createPos.angle ?? element.angle ?? 0,
|
|
18263
18365
|
skewX: element.skewX ?? 0,
|
|
18264
18366
|
skewY: element.skewY ?? 0,
|
|
18265
18367
|
flipX: element.flipX ?? false,
|
|
@@ -18346,8 +18448,8 @@ const PageCanvas = react.forwardRef(
|
|
|
18346
18448
|
const pageTreeForCrop = ((pageChildren == null ? void 0 : pageChildren.length) ? pageChildren : (_n = useEditorStore.getState().canvas.pages.find((p) => p.id === pageId)) == null ? void 0 : _n.children) ?? [];
|
|
18347
18449
|
const createPosForCrop = pageTreeForCrop.length > 0 ? (() => {
|
|
18348
18450
|
const node = findNodeById(pageTreeForCrop, element.id);
|
|
18349
|
-
return node ?
|
|
18350
|
-
})() : { left: element.left ?? 0, top: element.top ?? 0 };
|
|
18451
|
+
return node && isElement(node) ? getElementFabricPlacement(node, pageTreeForCrop, pageBoundsOptions) : { left: element.left ?? 0, top: element.top ?? 0, angle: element.angle ?? 0 };
|
|
18452
|
+
})() : { left: element.left ?? 0, top: element.top ?? 0, angle: element.angle ?? 0 };
|
|
18351
18453
|
const nodeForCreate = pageTreeForCrop.length ? findNodeById(pageTreeForCrop, element.id) : null;
|
|
18352
18454
|
const createW = nodeForCreate && isElement(nodeForCreate) ? nodeForCreate.width : elementWidth;
|
|
18353
18455
|
const createH = nodeForCreate && isElement(nodeForCreate) ? nodeForCreate.height : elementHeight;
|
|
@@ -18355,8 +18457,9 @@ const PageCanvas = react.forwardRef(
|
|
|
18355
18457
|
const createSy = nodeForCreate && isElement(nodeForCreate) ? nodeForCreate.scaleY ?? 1 : element.scaleY ?? 1;
|
|
18356
18458
|
const frameW = Math.max(1, Number(createW) || 200) * createSx;
|
|
18357
18459
|
const frameH = Math.max(1, Number(createH) || 50) * createSy;
|
|
18358
|
-
const
|
|
18359
|
-
const
|
|
18460
|
+
const createCenter = rotatedTopLeftToCenter(createPosForCrop.left, createPosForCrop.top, frameW, frameH, createPosForCrop.angle ?? element.angle ?? 0);
|
|
18461
|
+
const createCenterX = createCenter.x;
|
|
18462
|
+
const createCenterY = createCenter.y;
|
|
18360
18463
|
const cropGroup = await createMaskedImageElement({
|
|
18361
18464
|
image: img,
|
|
18362
18465
|
frameW,
|
|
@@ -18369,7 +18472,7 @@ const PageCanvas = react.forwardRef(
|
|
|
18369
18472
|
strokeWidth: 0,
|
|
18370
18473
|
left: createCenterX,
|
|
18371
18474
|
top: createCenterY,
|
|
18372
|
-
angle: element.angle ?? 0,
|
|
18475
|
+
angle: createPosForCrop.angle ?? element.angle ?? 0,
|
|
18373
18476
|
opacity: isHidden ? 0 : element.opacity ?? 1,
|
|
18374
18477
|
selectable: allowSelection && !isHidden,
|
|
18375
18478
|
evented: canBeEvented && !isHidden,
|
|
@@ -24759,9 +24862,9 @@ function captureFabricCanvasSvgForPdf(fabricInstance, canvasWidth, canvasHeight)
|
|
|
24759
24862
|
}
|
|
24760
24863
|
return svgString;
|
|
24761
24864
|
}
|
|
24762
|
-
const resolvedPackageVersion = "0.5.
|
|
24865
|
+
const resolvedPackageVersion = "0.5.350";
|
|
24763
24866
|
const PACKAGE_VERSION = resolvedPackageVersion;
|
|
24764
|
-
const DEPLOYMENT_VERSION_MARKER = "__PIXLDOCS_CANVAS_RENDERER_VERSION__:0.5.
|
|
24867
|
+
const DEPLOYMENT_VERSION_MARKER = "__PIXLDOCS_CANVAS_RENDERER_VERSION__:0.5.350";
|
|
24765
24868
|
const roundParityValue = (value) => {
|
|
24766
24869
|
if (typeof value !== "number") return value;
|
|
24767
24870
|
return Number.isFinite(value) ? Number(value.toFixed(3)) : value;
|
|
@@ -25575,7 +25678,7 @@ class PixldocsRenderer {
|
|
|
25575
25678
|
await this.waitForCanvasScene(container, cloned, i);
|
|
25576
25679
|
}
|
|
25577
25680
|
console.log(`[canvas-renderer][pdf-unified] mounted ${cloned.pages.length} page(s), handing off to client exportMultiPagePdf`);
|
|
25578
|
-
const { exportMultiPagePdf, preparePagesForExport } = await Promise.resolve().then(() => require("./vectorPdfExport-
|
|
25681
|
+
const { exportMultiPagePdf, preparePagesForExport } = await Promise.resolve().then(() => require("./vectorPdfExport-CsJ_SHet.cjs"));
|
|
25579
25682
|
const prepared = preparePagesForExport(
|
|
25580
25683
|
cloned.pages,
|
|
25581
25684
|
canvasWidth,
|
|
@@ -27895,7 +27998,7 @@ async function prepareLiveCanvasSvgForPdf(rawSvg, pageWidth, pageHeight, pageKey
|
|
|
27895
27998
|
if (options == null ? void 0 : options.stripPageBackground) stripRootPageBackgroundFromSvg(svgToDraw);
|
|
27896
27999
|
sanitizeSvgTreeForPdf(svgToDraw);
|
|
27897
28000
|
try {
|
|
27898
|
-
const { bakeTextAnchorPositionsFromLiveSvg, logTextMeasurementDiagnostic } = await Promise.resolve().then(() => require("./vectorPdfExport-
|
|
28001
|
+
const { bakeTextAnchorPositionsFromLiveSvg, logTextMeasurementDiagnostic } = await Promise.resolve().then(() => require("./vectorPdfExport-CsJ_SHet.cjs"));
|
|
27899
28002
|
try {
|
|
27900
28003
|
await logTextMeasurementDiagnostic(svgToDraw);
|
|
27901
28004
|
} catch {
|
|
@@ -28292,4 +28395,4 @@ exports.setAutoShrinkDebug = setAutoShrinkDebug;
|
|
|
28292
28395
|
exports.setBundledAssetPrefixes = setBundledAssetPrefixes;
|
|
28293
28396
|
exports.warmResolvedTemplateForPreview = warmResolvedTemplateForPreview;
|
|
28294
28397
|
exports.warmTemplateFromForm = warmTemplateFromForm;
|
|
28295
|
-
//# sourceMappingURL=index-
|
|
28398
|
+
//# sourceMappingURL=index-D53PnA7c.cjs.map
|