@pixldocs/canvas-renderer 0.5.359 → 0.5.360
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-B8DKV_MC.cjs → index-BTxKjVRe.cjs} +250 -12
- package/dist/index-BTxKjVRe.cjs.map +1 -0
- package/dist/{index-lU7E8PIC.js → index-UHlXMRk_.js} +250 -12
- package/dist/index-UHlXMRk_.js.map +1 -0
- package/dist/index.cjs +1 -1
- package/dist/index.js +1 -1
- package/dist/{vectorPdfExport-Cnxqr8BW.cjs → vectorPdfExport-BGYJ-v0u.cjs} +4 -4
- package/dist/{vectorPdfExport-Cnxqr8BW.cjs.map → vectorPdfExport-BGYJ-v0u.cjs.map} +1 -1
- package/dist/{vectorPdfExport-CaEmOpLs.js → vectorPdfExport-Cxjz5z00.js} +4 -4
- package/dist/{vectorPdfExport-CaEmOpLs.js.map → vectorPdfExport-Cxjz5z00.js.map} +1 -1
- package/package.json +1 -1
- package/dist/index-B8DKV_MC.cjs.map +0 -1
- package/dist/index-lU7E8PIC.js.map +0 -1
|
@@ -11087,6 +11087,136 @@ const logGroupTextResizeDebug = (phase, payload) => {
|
|
|
11087
11087
|
console.log(GROUP_TEXT_RESIZE_DEBUG_PREFIX, phase, payload);
|
|
11088
11088
|
}
|
|
11089
11089
|
};
|
|
11090
|
+
const ROT_GROUP_IMAGE_DRIFT_DEBUG_PREFIX = "[Pixldocs][rot-group-image-drift]";
|
|
11091
|
+
const ROT_GROUP_IMAGE_DRIFT_DEBUG_MAX_ENTRIES = 500;
|
|
11092
|
+
const roundRotDriftNumber = (value) => {
|
|
11093
|
+
if (typeof value !== "number") return value;
|
|
11094
|
+
return Number.isFinite(value) ? Math.round(value * 1e3) / 1e3 : String(value);
|
|
11095
|
+
};
|
|
11096
|
+
const normalizeRotDriftPayload = (value) => {
|
|
11097
|
+
const seen = /* @__PURE__ */ new WeakSet();
|
|
11098
|
+
const normalize = (entry) => {
|
|
11099
|
+
if (entry == null) return entry;
|
|
11100
|
+
const valueType = typeof entry;
|
|
11101
|
+
if (valueType === "number") return roundRotDriftNumber(entry);
|
|
11102
|
+
if (valueType === "string" || valueType === "boolean") return entry;
|
|
11103
|
+
if (Array.isArray(entry)) return entry.map((item) => normalize(item));
|
|
11104
|
+
if (valueType === "object") {
|
|
11105
|
+
if (seen.has(entry)) return "[Circular]";
|
|
11106
|
+
seen.add(entry);
|
|
11107
|
+
if (entry instanceof fabric.FabricObject) return normalize(summarizeRotDriftObject(entry));
|
|
11108
|
+
const output = {};
|
|
11109
|
+
Object.entries(entry).forEach(([key, item]) => {
|
|
11110
|
+
output[key] = normalize(item);
|
|
11111
|
+
});
|
|
11112
|
+
return output;
|
|
11113
|
+
}
|
|
11114
|
+
return String(entry);
|
|
11115
|
+
};
|
|
11116
|
+
return normalize(value);
|
|
11117
|
+
};
|
|
11118
|
+
const matrixForRotDriftLog = (matrix) => {
|
|
11119
|
+
if (!matrix) return void 0;
|
|
11120
|
+
return matrix.map((entry) => roundRotDriftNumber(entry));
|
|
11121
|
+
};
|
|
11122
|
+
const summarizeRotDriftObject = (obj, worldMatrix) => {
|
|
11123
|
+
var _a2, _b2, _c, _d, _e, _f, _g, _h, _i, _j, _k, _l, _m, _n, _o, _p, _q;
|
|
11124
|
+
if (!obj) return null;
|
|
11125
|
+
const anyObj = obj;
|
|
11126
|
+
try {
|
|
11127
|
+
const ownMatrix = (_a2 = obj.calcOwnMatrix) == null ? void 0 : _a2.call(obj);
|
|
11128
|
+
const calcWorld = worldMatrix ?? ((_b2 = obj.calcTransformMatrix) == null ? void 0 : _b2.call(obj));
|
|
11129
|
+
const decomposed = calcWorld ? fabric.util.qrDecompose(calcWorld) : null;
|
|
11130
|
+
const center = (_c = obj.getCenterPoint) == null ? void 0 : _c.call(obj);
|
|
11131
|
+
const rect = (_d = obj.getBoundingRect) == null ? void 0 : _d.call(obj);
|
|
11132
|
+
return {
|
|
11133
|
+
id: getObjectId(obj),
|
|
11134
|
+
type: anyObj.type ?? ((_e = obj.constructor) == null ? void 0 : _e.name),
|
|
11135
|
+
isAS: obj instanceof fabric.ActiveSelection,
|
|
11136
|
+
isGroup: obj instanceof fabric.Group,
|
|
11137
|
+
isImage: obj instanceof fabric.FabricImage,
|
|
11138
|
+
isCropGroup: Boolean(anyObj.__cropGroup || ((_f = anyObj._ct) == null ? void 0 : _f.isCropGroup)),
|
|
11139
|
+
hasLayoutManager: Boolean(anyObj.layoutManager),
|
|
11140
|
+
left: obj.left,
|
|
11141
|
+
top: obj.top,
|
|
11142
|
+
angle: obj.angle,
|
|
11143
|
+
scaleX: obj.scaleX,
|
|
11144
|
+
scaleY: obj.scaleY,
|
|
11145
|
+
width: obj.width,
|
|
11146
|
+
height: obj.height,
|
|
11147
|
+
originX: obj.originX,
|
|
11148
|
+
originY: obj.originY,
|
|
11149
|
+
centerX: center == null ? void 0 : center.x,
|
|
11150
|
+
centerY: center == null ? void 0 : center.y,
|
|
11151
|
+
brLeft: rect == null ? void 0 : rect.left,
|
|
11152
|
+
brTop: rect == null ? void 0 : rect.top,
|
|
11153
|
+
brWidth: rect == null ? void 0 : rect.width,
|
|
11154
|
+
brHeight: rect == null ? void 0 : rect.height,
|
|
11155
|
+
worldTx: decomposed == null ? void 0 : decomposed.translateX,
|
|
11156
|
+
worldTy: decomposed == null ? void 0 : decomposed.translateY,
|
|
11157
|
+
worldAngle: decomposed == null ? void 0 : decomposed.angle,
|
|
11158
|
+
worldScaleX: decomposed == null ? void 0 : decomposed.scaleX,
|
|
11159
|
+
worldScaleY: decomposed == null ? void 0 : decomposed.scaleY,
|
|
11160
|
+
ownMatrix: matrixForRotDriftLog(ownMatrix ?? null),
|
|
11161
|
+
worldMatrix: matrixForRotDriftLog(calcWorld ?? null),
|
|
11162
|
+
cropFrameW: (_g = anyObj.__cropData) == null ? void 0 : _g.frameW,
|
|
11163
|
+
cropFrameH: (_h = anyObj.__cropData) == null ? void 0 : _h.frameH,
|
|
11164
|
+
cropPanX: (_k = (_j = (_i = anyObj.__cropData) == null ? void 0 : _i._img) == null ? void 0 : _j._ct) == null ? void 0 : _k.panX,
|
|
11165
|
+
cropPanY: (_n = (_m = (_l = anyObj.__cropData) == null ? void 0 : _l._img) == null ? void 0 : _m._ct) == null ? void 0 : _n.panY,
|
|
11166
|
+
cropZoom: (_q = (_p = (_o = anyObj.__cropData) == null ? void 0 : _o._img) == null ? void 0 : _p._ct) == null ? void 0 : _q.zoom
|
|
11167
|
+
};
|
|
11168
|
+
} catch (error) {
|
|
11169
|
+
return { id: getObjectId(obj), type: anyObj.type, error: String(error) };
|
|
11170
|
+
}
|
|
11171
|
+
};
|
|
11172
|
+
const logRotGroupImageDrift = (phase, payload) => {
|
|
11173
|
+
if (typeof console === "undefined") return;
|
|
11174
|
+
try {
|
|
11175
|
+
const line = `${ROT_GROUP_IMAGE_DRIFT_DEBUG_PREFIX} ${phase} ${JSON.stringify(normalizeRotDriftPayload(payload))}`;
|
|
11176
|
+
if (typeof window !== "undefined") {
|
|
11177
|
+
const debugWindow = window;
|
|
11178
|
+
debugWindow.__pixldocsRotGroupImageDriftLogs = Array.isArray(debugWindow.__pixldocsRotGroupImageDriftLogs) ? debugWindow.__pixldocsRotGroupImageDriftLogs.slice(-ROT_GROUP_IMAGE_DRIFT_DEBUG_MAX_ENTRIES + 1) : [];
|
|
11179
|
+
debugWindow.__pixldocsRotGroupImageDriftLogs.push(line);
|
|
11180
|
+
}
|
|
11181
|
+
console.log(line);
|
|
11182
|
+
} catch {
|
|
11183
|
+
console.log(ROT_GROUP_IMAGE_DRIFT_DEBUG_PREFIX, phase, payload);
|
|
11184
|
+
}
|
|
11185
|
+
};
|
|
11186
|
+
const shouldLogRotDriftLiveTick = (target, phase) => {
|
|
11187
|
+
if (!target) return false;
|
|
11188
|
+
const anyTarget = target;
|
|
11189
|
+
const key = `__pixldocsRotDrift_${phase}_count`;
|
|
11190
|
+
const count = (anyTarget[key] ?? 0) + 1;
|
|
11191
|
+
anyTarget[key] = count;
|
|
11192
|
+
return count <= 3 || count % 8 === 0;
|
|
11193
|
+
};
|
|
11194
|
+
const logRotDriftSelectionSnapshot = (phase, target, extra = {}) => {
|
|
11195
|
+
if (!target) return;
|
|
11196
|
+
const anyTarget = target;
|
|
11197
|
+
const kids = typeof anyTarget.getObjects === "function" ? anyTarget.getObjects() : [];
|
|
11198
|
+
const selectionMatrix = target instanceof fabric.ActiveSelection ? target.calcTransformMatrix() : null;
|
|
11199
|
+
logRotGroupImageDrift(phase, {
|
|
11200
|
+
...extra,
|
|
11201
|
+
target: summarizeRotDriftObject(target),
|
|
11202
|
+
childCount: kids.length,
|
|
11203
|
+
groupSelectionId: anyTarget.__pixldocsGroupSelection,
|
|
11204
|
+
alignedAngle: anyTarget.__pixldocsAlignedAngle
|
|
11205
|
+
});
|
|
11206
|
+
kids.forEach((kid, childIndex) => {
|
|
11207
|
+
var _a2, _b2;
|
|
11208
|
+
const childWorldMatrix = selectionMatrix ? fabric.util.multiplyTransformMatrices(
|
|
11209
|
+
selectionMatrix,
|
|
11210
|
+
kid.calcOwnMatrix()
|
|
11211
|
+
) : (_a2 = kid.calcTransformMatrix) == null ? void 0 : _a2.call(kid);
|
|
11212
|
+
logRotGroupImageDrift(`${phase}-child`, {
|
|
11213
|
+
...extra,
|
|
11214
|
+
childIndex,
|
|
11215
|
+
parentType: anyTarget.type ?? ((_b2 = target.constructor) == null ? void 0 : _b2.name),
|
|
11216
|
+
child: summarizeRotDriftObject(kid, childWorldMatrix ?? null)
|
|
11217
|
+
});
|
|
11218
|
+
});
|
|
11219
|
+
};
|
|
11090
11220
|
const bakeTextboxScaleIntoTypography = (obj, sourceElement) => {
|
|
11091
11221
|
const sx = Math.abs(obj.scaleX ?? 1) || 1;
|
|
11092
11222
|
const sy = Math.abs(obj.scaleY ?? 1) || 1;
|
|
@@ -11196,6 +11326,7 @@ function applyWarpAwareSelectionBorders(selection) {
|
|
|
11196
11326
|
selection.calcTransformMatrix()
|
|
11197
11327
|
);
|
|
11198
11328
|
kids.forEach((k, index) => {
|
|
11329
|
+
const beforeRestore = summarizeRotDriftObject(k);
|
|
11199
11330
|
const localMatrix = fabric.util.multiplyTransformMatrices(
|
|
11200
11331
|
invSelection,
|
|
11201
11332
|
worldMatrices[index]
|
|
@@ -11214,8 +11345,19 @@ function applyWarpAwareSelectionBorders(selection) {
|
|
|
11214
11345
|
}
|
|
11215
11346
|
k.setCoords();
|
|
11216
11347
|
k.dirty = true;
|
|
11348
|
+
logRotGroupImageDrift("aligned-restore-child", {
|
|
11349
|
+
targetAngle,
|
|
11350
|
+
childIndex: index,
|
|
11351
|
+
before: beforeRestore,
|
|
11352
|
+
expectedLocal: fabric.util.qrDecompose(localMatrix),
|
|
11353
|
+
after: summarizeRotDriftObject(k)
|
|
11354
|
+
});
|
|
11217
11355
|
});
|
|
11218
11356
|
};
|
|
11357
|
+
logRotDriftSelectionSnapshot("aligned-before", selection, {
|
|
11358
|
+
targetAngle,
|
|
11359
|
+
worldAngles
|
|
11360
|
+
});
|
|
11219
11361
|
selection.set({ angle: targetAngle, scaleX: 1, scaleY: 1, skewX: 0, skewY: 0 });
|
|
11220
11362
|
restoreKidsFromWorld();
|
|
11221
11363
|
try {
|
|
@@ -11226,6 +11368,10 @@ function applyWarpAwareSelectionBorders(selection) {
|
|
|
11226
11368
|
selection.setCoords();
|
|
11227
11369
|
selection.dirty = true;
|
|
11228
11370
|
selection.__pixldocsAlignedAngle = targetAngle;
|
|
11371
|
+
logRotDriftSelectionSnapshot("aligned-after", selection, {
|
|
11372
|
+
targetAngle,
|
|
11373
|
+
worldAngles
|
|
11374
|
+
});
|
|
11229
11375
|
}
|
|
11230
11376
|
}
|
|
11231
11377
|
}
|
|
@@ -12273,6 +12419,10 @@ const PageCanvas = forwardRef(
|
|
|
12273
12419
|
selectionLeft: rect.left,
|
|
12274
12420
|
selectionTop: rect.top
|
|
12275
12421
|
};
|
|
12422
|
+
logRotDriftSelectionSnapshot("mouse-down-active-selection", active, {
|
|
12423
|
+
time: Math.round(performance.now()),
|
|
12424
|
+
selectedStoreIds: useEditorStore.getState().canvas.selectedIds
|
|
12425
|
+
});
|
|
12276
12426
|
}
|
|
12277
12427
|
if (fabricCanvas._currentTransform) {
|
|
12278
12428
|
fabricCanvas.__isUserTransforming = true;
|
|
@@ -12885,6 +13035,14 @@ const PageCanvas = forwardRef(
|
|
|
12885
13035
|
groupTop: groupAbs.top,
|
|
12886
13036
|
selectionAngle: ((active.angle ?? 0) % 360 + 360) % 360
|
|
12887
13037
|
};
|
|
13038
|
+
logRotDriftSelectionSnapshot("transform-start", active, {
|
|
13039
|
+
time: Math.round(performance.now()),
|
|
13040
|
+
groupId,
|
|
13041
|
+
groupAbs,
|
|
13042
|
+
selectionRect: rect,
|
|
13043
|
+
transformStart: groupSelectionTransformStartRef.current,
|
|
13044
|
+
selectedStoreIds: useEditorStore.getState().canvas.selectedIds
|
|
13045
|
+
});
|
|
12888
13046
|
};
|
|
12889
13047
|
const restoreGroupSelectionVisualState = (selection, groupId) => {
|
|
12890
13048
|
applyLogicalGroupSelectionVisualState(selection, groupId);
|
|
@@ -13671,13 +13829,22 @@ const PageCanvas = forwardRef(
|
|
|
13671
13829
|
fabricCanvas.on("selection:cleared", () => {
|
|
13672
13830
|
});
|
|
13673
13831
|
fabricCanvas.on("object:scaling", (e) => {
|
|
13674
|
-
var _a2, _b2, _c, _d, _e, _f;
|
|
13832
|
+
var _a2, _b2, _c, _d, _e, _f, _g, _h;
|
|
13675
13833
|
if (!isActiveRef.current) return;
|
|
13676
13834
|
const t = e.target;
|
|
13677
13835
|
if (t) lastResizeScaleTargetRef.current = t;
|
|
13678
13836
|
prepareGroupSelectionTransformStart(t);
|
|
13679
13837
|
markTransforming(t);
|
|
13680
13838
|
didTransformRef.current = true;
|
|
13839
|
+
if (shouldLogRotDriftLiveTick(t, "scaling")) {
|
|
13840
|
+
logRotDriftSelectionSnapshot("scaling", t, {
|
|
13841
|
+
time: Math.round(performance.now()),
|
|
13842
|
+
corner: t == null ? void 0 : t.__corner,
|
|
13843
|
+
transformAction: (_a2 = fabricCanvas._currentTransform) == null ? void 0 : _a2.action,
|
|
13844
|
+
transformCorner: (_b2 = fabricCanvas._currentTransform) == null ? void 0 : _b2.corner,
|
|
13845
|
+
transformStart: groupSelectionTransformStartRef.current
|
|
13846
|
+
});
|
|
13847
|
+
}
|
|
13681
13848
|
const transformTargetId = t ? getObjectId(t) : null;
|
|
13682
13849
|
if (transformTargetId && transformTargetId !== "__background__") {
|
|
13683
13850
|
preserveSelectionAfterTransformIdRef.current = transformTargetId;
|
|
@@ -13838,7 +14005,7 @@ const PageCanvas = forwardRef(
|
|
|
13838
14005
|
time: Math.round(performance.now()),
|
|
13839
14006
|
corner,
|
|
13840
14007
|
groupSelectionId: obj.__pixldocsGroupSelection,
|
|
13841
|
-
currentTransformAction: (
|
|
14008
|
+
currentTransformAction: (_c = fabricCanvas._currentTransform) == null ? void 0 : _c.action,
|
|
13842
14009
|
selection: summarizeFabricObjectForResizeDebug(obj),
|
|
13843
14010
|
textChildren: obj.getObjects().filter((child) => child instanceof fabric.Textbox).map((child) => summarizeFabricObjectForResizeDebug(child))
|
|
13844
14011
|
};
|
|
@@ -13848,13 +14015,13 @@ const PageCanvas = forwardRef(
|
|
|
13848
14015
|
const isXSide = corner === "ml" || corner === "mr";
|
|
13849
14016
|
const sAxis = isXSide ? Math.abs(obj.scaleX ?? 1) : Math.abs(obj.scaleY ?? 1);
|
|
13850
14017
|
if (sAxis > 1e-3) {
|
|
13851
|
-
if (isXSide && ((
|
|
14018
|
+
if (isXSide && ((_d = groupShiftReflowSnapshotRef.current) == null ? void 0 : _d.selection) !== obj) {
|
|
13852
14019
|
groupShiftReflowSnapshotRef.current = null;
|
|
13853
14020
|
const logicalGroupId = obj.__pixldocsGroupSelection;
|
|
13854
14021
|
if (logicalGroupId) {
|
|
13855
14022
|
try {
|
|
13856
14023
|
const state = useEditorStore.getState();
|
|
13857
|
-
const pageChildren2 = ((
|
|
14024
|
+
const pageChildren2 = ((_e = state.canvas.pages.find((p) => p.id === pageId)) == null ? void 0 : _e.children) ?? [];
|
|
13858
14025
|
const groupNode = findNodeById(pageChildren2, logicalGroupId);
|
|
13859
14026
|
if (groupNode && isGroup(groupNode) && !isStackLayoutMode(groupNode.layoutMode)) {
|
|
13860
14027
|
const entries = obj.getObjects().map((c) => ({
|
|
@@ -13884,7 +14051,7 @@ const PageCanvas = forwardRef(
|
|
|
13884
14051
|
const asRect0 = obj.getBoundingRect();
|
|
13885
14052
|
let didReflowTextChild = false;
|
|
13886
14053
|
for (const child of obj.getObjects()) {
|
|
13887
|
-
if (child instanceof fabric.Group && (child.__cropGroup || ((
|
|
14054
|
+
if (child instanceof fabric.Group && (child.__cropGroup || ((_f = child._ct) == null ? void 0 : _f.isCropGroup))) {
|
|
13888
14055
|
const ct = child.__cropData;
|
|
13889
14056
|
if (!ct) continue;
|
|
13890
14057
|
if (isXSide) {
|
|
@@ -13989,7 +14156,7 @@ const PageCanvas = forwardRef(
|
|
|
13989
14156
|
didReflowTextChild = true;
|
|
13990
14157
|
}
|
|
13991
14158
|
}
|
|
13992
|
-
if (isXSide && ((
|
|
14159
|
+
if (isXSide && ((_g = groupShiftReflowSnapshotRef.current) == null ? void 0 : _g.selection) === obj) {
|
|
13993
14160
|
const snap = groupShiftReflowSnapshotRef.current;
|
|
13994
14161
|
const anchorEntry = snap.children[0];
|
|
13995
14162
|
const anchorTopLive = anchorEntry.obj.top ?? 0;
|
|
@@ -14145,7 +14312,7 @@ const PageCanvas = forwardRef(
|
|
|
14145
14312
|
setGuides(gridGuidesForScale.length ? [...scaleGuides, ...gridGuidesForScale] : scaleGuides);
|
|
14146
14313
|
if (drilledGroupIdRef.current) {
|
|
14147
14314
|
try {
|
|
14148
|
-
(
|
|
14315
|
+
(_h = fabricCanvas.__updateDrilledGroupOutline) == null ? void 0 : _h.call(fabricCanvas);
|
|
14149
14316
|
} catch {
|
|
14150
14317
|
}
|
|
14151
14318
|
}
|
|
@@ -14236,9 +14403,18 @@ const PageCanvas = forwardRef(
|
|
|
14236
14403
|
}
|
|
14237
14404
|
});
|
|
14238
14405
|
fabricCanvas.on("object:rotating", (e) => {
|
|
14406
|
+
var _a2, _b2;
|
|
14239
14407
|
markSimpleTransform(e);
|
|
14240
14408
|
didTransformRef.current = true;
|
|
14241
14409
|
const tr = e.target;
|
|
14410
|
+
if (shouldLogRotDriftLiveTick(tr, "rotating")) {
|
|
14411
|
+
logRotDriftSelectionSnapshot("rotating", tr, {
|
|
14412
|
+
time: Math.round(performance.now()),
|
|
14413
|
+
transformAction: (_a2 = fabricCanvas._currentTransform) == null ? void 0 : _a2.action,
|
|
14414
|
+
transformCorner: (_b2 = fabricCanvas._currentTransform) == null ? void 0 : _b2.corner,
|
|
14415
|
+
transformStart: groupSelectionTransformStartRef.current
|
|
14416
|
+
});
|
|
14417
|
+
}
|
|
14242
14418
|
try {
|
|
14243
14419
|
const getCursor = fabricCanvas.__pixldocsGetRotateCursor;
|
|
14244
14420
|
const upper = fabricCanvas.upperCanvasEl;
|
|
@@ -14267,10 +14443,19 @@ const PageCanvas = forwardRef(
|
|
|
14267
14443
|
didTransformRef.current = true;
|
|
14268
14444
|
});
|
|
14269
14445
|
fabricCanvas.on("object:moving", (e) => {
|
|
14446
|
+
var _a2, _b2;
|
|
14270
14447
|
if (!isActiveRef.current) return;
|
|
14271
14448
|
prepareGroupSelectionTransformStart(e.target);
|
|
14272
14449
|
markTransforming(e.target);
|
|
14273
14450
|
didTransformRef.current = true;
|
|
14451
|
+
if (shouldLogRotDriftLiveTick(e.target, "moving")) {
|
|
14452
|
+
logRotDriftSelectionSnapshot("moving", e.target, {
|
|
14453
|
+
time: Math.round(performance.now()),
|
|
14454
|
+
transformAction: (_a2 = fabricCanvas._currentTransform) == null ? void 0 : _a2.action,
|
|
14455
|
+
transformCorner: (_b2 = fabricCanvas._currentTransform) == null ? void 0 : _b2.corner,
|
|
14456
|
+
transformStart: groupSelectionTransformStartRef.current
|
|
14457
|
+
});
|
|
14458
|
+
}
|
|
14274
14459
|
const activeDuringMove = fabricCanvas.getActiveObject();
|
|
14275
14460
|
const movingLogicalGroupId = activeDuringMove instanceof fabric.ActiveSelection ? activeDuringMove.__pixldocsGroupSelection : void 0;
|
|
14276
14461
|
const pendingMoveDrill = pendingGroupDrillInRef.current;
|
|
@@ -14607,6 +14792,15 @@ const PageCanvas = forwardRef(
|
|
|
14607
14792
|
activeObjects = activeObjects[0].getObjects();
|
|
14608
14793
|
}
|
|
14609
14794
|
const isActiveSelection = activeObj instanceof fabric.ActiveSelection || activeObjects.length > 1;
|
|
14795
|
+
if (activeObj instanceof fabric.ActiveSelection) {
|
|
14796
|
+
logRotDriftSelectionSnapshot("modified-start-active-selection", activeObj, {
|
|
14797
|
+
time: Math.round(performance.now()),
|
|
14798
|
+
modifiedTarget: summarizeRotDriftObject(modifiedTarget),
|
|
14799
|
+
activeObjectIds: activeObjects.map((candidate) => getObjectId(candidate)),
|
|
14800
|
+
selectedStoreIds: useEditorStore.getState().canvas.selectedIds,
|
|
14801
|
+
transformStart: groupSelectionTransformStartRef.current
|
|
14802
|
+
});
|
|
14803
|
+
}
|
|
14610
14804
|
const activeSelectionResizeHandle = isActiveSelection ? activeSelectionResizeHandleRef.current : null;
|
|
14611
14805
|
const debugGroupTextCornerResize = activeObj instanceof fabric.ActiveSelection && isCornerResizeHandle(activeSelectionResizeHandle) && activeObjects.some((candidate) => candidate instanceof fabric.Textbox);
|
|
14612
14806
|
if (debugGroupTextCornerResize) {
|
|
@@ -15256,6 +15450,32 @@ const PageCanvas = forwardRef(
|
|
|
15256
15450
|
objectBeforeStoreWrite: summarizeFabricObjectForResizeDebug(obj)
|
|
15257
15451
|
});
|
|
15258
15452
|
}
|
|
15453
|
+
if (isActiveSelection) {
|
|
15454
|
+
logRotGroupImageDrift("store-update-child", {
|
|
15455
|
+
time: Math.round(performance.now()),
|
|
15456
|
+
objId,
|
|
15457
|
+
sourceElement: sourceElement ? {
|
|
15458
|
+
id: sourceElement.id,
|
|
15459
|
+
type: sourceElement.type,
|
|
15460
|
+
left: sourceElement.left,
|
|
15461
|
+
top: sourceElement.top,
|
|
15462
|
+
width: sourceElement.width,
|
|
15463
|
+
height: sourceElement.height,
|
|
15464
|
+
angle: sourceElement.angle,
|
|
15465
|
+
scaleX: sourceElement.scaleX,
|
|
15466
|
+
scaleY: sourceElement.scaleY
|
|
15467
|
+
} : null,
|
|
15468
|
+
objectBeforeStoreWrite: summarizeRotDriftObject(obj, finalAbsoluteMatrix),
|
|
15469
|
+
activeSelection: summarizeRotDriftObject(activeObj),
|
|
15470
|
+
absoluteMatrix,
|
|
15471
|
+
finalAbsoluteMatrix,
|
|
15472
|
+
decomposed,
|
|
15473
|
+
absoluteLeft,
|
|
15474
|
+
absoluteTop,
|
|
15475
|
+
storePos,
|
|
15476
|
+
elementUpdate
|
|
15477
|
+
});
|
|
15478
|
+
}
|
|
15259
15479
|
updateElement(objId, elementUpdate, { recordHistory: false, skipLayoutRecalc: true });
|
|
15260
15480
|
obj.setCoords();
|
|
15261
15481
|
}
|
|
@@ -15286,6 +15506,19 @@ const PageCanvas = forwardRef(
|
|
|
15286
15506
|
renderOnAddRemove: fabricCanvas.renderOnAddRemove
|
|
15287
15507
|
});
|
|
15288
15508
|
}
|
|
15509
|
+
logRotDriftSelectionSnapshot("before-reselect", activeObj, {
|
|
15510
|
+
time: Math.round(performance.now()),
|
|
15511
|
+
wasGroupSel,
|
|
15512
|
+
memberIds: membersToReselect.map((member) => getObjectId(member)),
|
|
15513
|
+
pendingCropBakes: pendingCropGroupFrameBakes.map((bake) => ({
|
|
15514
|
+
id: getObjectId(bake.obj),
|
|
15515
|
+
width: bake.width,
|
|
15516
|
+
height: bake.height,
|
|
15517
|
+
left: bake.left,
|
|
15518
|
+
top: bake.top,
|
|
15519
|
+
angle: bake.angle
|
|
15520
|
+
}))
|
|
15521
|
+
});
|
|
15289
15522
|
const prevRenderOnAddRemove = fabricCanvas.renderOnAddRemove;
|
|
15290
15523
|
fabricCanvas.renderOnAddRemove = false;
|
|
15291
15524
|
skipSelectionClearOnDiscardRef.current = true;
|
|
@@ -15319,6 +15552,11 @@ const PageCanvas = forwardRef(
|
|
|
15319
15552
|
if (wasGroupSel) restoreGroupSelectionVisualState(newSel, wasGroupSel);
|
|
15320
15553
|
fabricCanvas.setActiveObject(newSel);
|
|
15321
15554
|
newSel.setCoords();
|
|
15555
|
+
logRotDriftSelectionSnapshot("after-reselect", newSel, {
|
|
15556
|
+
time: Math.round(performance.now()),
|
|
15557
|
+
wasGroupSel,
|
|
15558
|
+
memberIds: membersToReselect.map((member) => getObjectId(member))
|
|
15559
|
+
});
|
|
15322
15560
|
if (debugGroupTextCornerResize) {
|
|
15323
15561
|
logGroupTextResizeDebug("after-reselect", {
|
|
15324
15562
|
time: Math.round(performance.now()),
|
|
@@ -24377,9 +24615,9 @@ function captureFabricCanvasSvgForPdf(fabricInstance, canvasWidth, canvasHeight)
|
|
|
24377
24615
|
}
|
|
24378
24616
|
return svgString;
|
|
24379
24617
|
}
|
|
24380
|
-
const resolvedPackageVersion = "0.5.
|
|
24618
|
+
const resolvedPackageVersion = "0.5.360";
|
|
24381
24619
|
const PACKAGE_VERSION = resolvedPackageVersion;
|
|
24382
|
-
const DEPLOYMENT_VERSION_MARKER = "__PIXLDOCS_CANVAS_RENDERER_VERSION__:0.5.
|
|
24620
|
+
const DEPLOYMENT_VERSION_MARKER = "__PIXLDOCS_CANVAS_RENDERER_VERSION__:0.5.360";
|
|
24383
24621
|
const roundParityValue = (value) => {
|
|
24384
24622
|
if (typeof value !== "number") return value;
|
|
24385
24623
|
return Number.isFinite(value) ? Number(value.toFixed(3)) : value;
|
|
@@ -25193,7 +25431,7 @@ class PixldocsRenderer {
|
|
|
25193
25431
|
await this.waitForCanvasScene(container, cloned, i);
|
|
25194
25432
|
}
|
|
25195
25433
|
console.log(`[canvas-renderer][pdf-unified] mounted ${cloned.pages.length} page(s), handing off to client exportMultiPagePdf`);
|
|
25196
|
-
const { exportMultiPagePdf, preparePagesForExport } = await import("./vectorPdfExport-
|
|
25434
|
+
const { exportMultiPagePdf, preparePagesForExport } = await import("./vectorPdfExport-Cxjz5z00.js");
|
|
25197
25435
|
const prepared = preparePagesForExport(
|
|
25198
25436
|
cloned.pages,
|
|
25199
25437
|
canvasWidth,
|
|
@@ -27513,7 +27751,7 @@ async function prepareLiveCanvasSvgForPdf(rawSvg, pageWidth, pageHeight, pageKey
|
|
|
27513
27751
|
if (options == null ? void 0 : options.stripPageBackground) stripRootPageBackgroundFromSvg(svgToDraw);
|
|
27514
27752
|
sanitizeSvgTreeForPdf(svgToDraw);
|
|
27515
27753
|
try {
|
|
27516
|
-
const { bakeTextAnchorPositionsFromLiveSvg, logTextMeasurementDiagnostic } = await import("./vectorPdfExport-
|
|
27754
|
+
const { bakeTextAnchorPositionsFromLiveSvg, logTextMeasurementDiagnostic } = await import("./vectorPdfExport-Cxjz5z00.js");
|
|
27517
27755
|
try {
|
|
27518
27756
|
await logTextMeasurementDiagnostic(svgToDraw);
|
|
27519
27757
|
} catch {
|
|
@@ -27913,4 +28151,4 @@ export {
|
|
|
27913
28151
|
buildTeaserBlurFlatKeys as y,
|
|
27914
28152
|
collectFontDescriptorsFromConfig as z
|
|
27915
28153
|
};
|
|
27916
|
-
//# sourceMappingURL=index-
|
|
28154
|
+
//# sourceMappingURL=index-UHlXMRk_.js.map
|