@jotx-labs/editor 2.4.215 → 2.4.217
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/components/motion/MotionCompiler.d.ts.map +1 -1
- package/dist/components/motion/MotionCompiler.js +124 -7
- package/dist/components/motion/MotionCompiler.js.map +1 -1
- package/dist/components/motion/MotionEngine.d.ts +4 -0
- package/dist/components/motion/MotionEngine.d.ts.map +1 -1
- package/dist/components/motion/MotionEngine.js +260 -22
- package/dist/components/motion/MotionEngine.js.map +1 -1
- package/dist/components/motion/MotionParser.d.ts.map +1 -1
- package/dist/components/motion/MotionParser.js +87 -2
- package/dist/components/motion/MotionParser.js.map +1 -1
- package/dist/components/motion/types.d.ts +11 -2
- package/dist/components/motion/types.d.ts.map +1 -1
- package/dist/components/motion/types.js +3 -3
- package/dist/components/motion/types.js.map +1 -1
- package/dist/index.d.ts +4 -0
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +10 -1
- package/dist/index.js.map +1 -1
- package/dist/utils/PresentationConverter.d.ts.map +1 -1
- package/dist/utils/PresentationConverter.js +290 -3
- package/dist/utils/PresentationConverter.js.map +1 -1
- package/dist/utils/slidePropertiesHelper.d.ts +27 -0
- package/dist/utils/slidePropertiesHelper.d.ts.map +1 -0
- package/dist/utils/slidePropertiesHelper.js +57 -0
- package/dist/utils/slidePropertiesHelper.js.map +1 -0
- package/package.json +4 -4
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"MotionCompiler.d.ts","sourceRoot":"","sources":["../../../src/components/motion/MotionCompiler.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAO,EACuB,WAAW,EAC3B,gBAAgB,EAE7B,MAAM,SAAS,CAAA;AAIhB,wBAAgB,YAAY,CAAC,MAAM,EAAE,WAAW,GAAG,gBAAgB,
|
|
1
|
+
{"version":3,"file":"MotionCompiler.d.ts","sourceRoot":"","sources":["../../../src/components/motion/MotionCompiler.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAO,EACuB,WAAW,EAC3B,gBAAgB,EAE7B,MAAM,SAAS,CAAA;AAIhB,wBAAgB,YAAY,CAAC,MAAM,EAAE,WAAW,GAAG,gBAAgB,CAqElE"}
|
|
@@ -16,6 +16,23 @@ function compileScene(parsed) {
|
|
|
16
16
|
for (const obj of parsed.objects) {
|
|
17
17
|
objects.set(obj.id, { ...obj });
|
|
18
18
|
}
|
|
19
|
+
// Auto-hide objects that have a "show" or "appear" step targeting them.
|
|
20
|
+
// This prevents a flash where the object is briefly visible (default=visible)
|
|
21
|
+
// before the show animation starts.
|
|
22
|
+
const showTargets = new Set();
|
|
23
|
+
for (const step of parsed.steps) {
|
|
24
|
+
if ((step.action === 'show' || step.action === 'appear') && step.targetId) {
|
|
25
|
+
showTargets.add(step.targetId);
|
|
26
|
+
}
|
|
27
|
+
}
|
|
28
|
+
for (const id of showTargets) {
|
|
29
|
+
const obj = objects.get(id);
|
|
30
|
+
if (obj && obj.opacity !== 0) {
|
|
31
|
+
// Only auto-hide if the user didn't explicitly set opacity 0
|
|
32
|
+
obj.opacity = 0;
|
|
33
|
+
obj.visible = false;
|
|
34
|
+
}
|
|
35
|
+
}
|
|
19
36
|
let currentTime = 0;
|
|
20
37
|
let inParallel = false;
|
|
21
38
|
let parallelStartTime = 0;
|
|
@@ -75,7 +92,20 @@ function compileStep(step, startTime, endTime, objects) {
|
|
|
75
92
|
const obj = objects.get(id);
|
|
76
93
|
const fromX = obj?.x ?? 0;
|
|
77
94
|
const fromY = obj?.y ?? 0;
|
|
78
|
-
if (step.
|
|
95
|
+
if (step.alongPath && step.alongPath.length >= 2) {
|
|
96
|
+
// Path-based movement: move through waypoints
|
|
97
|
+
// For now, move from first point to last point (linear interpolation)
|
|
98
|
+
const path = step.alongPath;
|
|
99
|
+
const destX = path[path.length - 1][0];
|
|
100
|
+
const destY = path[path.length - 1][1];
|
|
101
|
+
kfs.push(kf(id, 'x', startTime, endTime, path[0][0], destX, step.easing));
|
|
102
|
+
kfs.push(kf(id, 'y', startTime, endTime, path[0][1], destY, step.easing));
|
|
103
|
+
if (obj) {
|
|
104
|
+
obj.x = destX;
|
|
105
|
+
obj.y = destY;
|
|
106
|
+
}
|
|
107
|
+
}
|
|
108
|
+
else if (step.toX !== undefined && step.toY !== undefined) {
|
|
79
109
|
kfs.push(kf(id, 'x', startTime, endTime, fromX, step.toX, step.easing));
|
|
80
110
|
kfs.push(kf(id, 'y', startTime, endTime, fromY, step.toY, step.easing));
|
|
81
111
|
// Update object state
|
|
@@ -222,8 +252,89 @@ function compileStep(step, startTime, endTime, objects) {
|
|
|
222
252
|
break;
|
|
223
253
|
}
|
|
224
254
|
case 'wait':
|
|
255
|
+
case 'hold':
|
|
225
256
|
// No keyframes — just advances time
|
|
226
257
|
break;
|
|
258
|
+
case 'zoom':
|
|
259
|
+
case 'pan': {
|
|
260
|
+
// Shorthand camera actions — reuse camera logic
|
|
261
|
+
if (!objects.has('__camera')) {
|
|
262
|
+
const cam = (0, types_1.createDefaultObject)('rect', '__camera');
|
|
263
|
+
cam.x = 0;
|
|
264
|
+
cam.y = 0;
|
|
265
|
+
cam.scaleX = 1;
|
|
266
|
+
cam.scaleY = 1;
|
|
267
|
+
cam.visible = true;
|
|
268
|
+
cam.opacity = 1;
|
|
269
|
+
objects.set('__camera', cam);
|
|
270
|
+
}
|
|
271
|
+
const camObj = objects.get('__camera');
|
|
272
|
+
if (step.cameraAction === 'zoom' && step.cameraZoom !== undefined) {
|
|
273
|
+
const fromZoom = camObj.scaleX;
|
|
274
|
+
kfs.push(kf('__camera', 'scaleX', startTime, endTime, fromZoom, step.cameraZoom, step.easing));
|
|
275
|
+
kfs.push(kf('__camera', 'scaleY', startTime, endTime, fromZoom, step.cameraZoom, step.easing));
|
|
276
|
+
camObj.scaleX = step.cameraZoom;
|
|
277
|
+
camObj.scaleY = step.cameraZoom;
|
|
278
|
+
}
|
|
279
|
+
if (step.cameraAction === 'pan' && step.cameraPanX !== undefined) {
|
|
280
|
+
const fromX = camObj.x;
|
|
281
|
+
const fromY = camObj.y;
|
|
282
|
+
kfs.push(kf('__camera', 'x', startTime, endTime, fromX, step.cameraPanX, step.easing));
|
|
283
|
+
kfs.push(kf('__camera', 'y', startTime, endTime, fromY, step.cameraPanY ?? 0, step.easing));
|
|
284
|
+
camObj.x = step.cameraPanX;
|
|
285
|
+
camObj.y = step.cameraPanY ?? 0;
|
|
286
|
+
}
|
|
287
|
+
break;
|
|
288
|
+
}
|
|
289
|
+
case 'fade': {
|
|
290
|
+
const obj = objects.get(id);
|
|
291
|
+
const fromOp = obj?.opacity ?? 1;
|
|
292
|
+
if (step.fadeDirection === 'out') {
|
|
293
|
+
kfs.push(kf(id, 'opacity', startTime, endTime, fromOp, 0, step.easing));
|
|
294
|
+
kfs.push(kf(id, 'visible', endTime, endTime, 1, 0, 'linear'));
|
|
295
|
+
if (obj)
|
|
296
|
+
obj.opacity = 0;
|
|
297
|
+
}
|
|
298
|
+
else {
|
|
299
|
+
// fade in
|
|
300
|
+
kfs.push(kf(id, 'visible', startTime, startTime, 0, 1, 'linear'));
|
|
301
|
+
kfs.push(kf(id, 'opacity', startTime, endTime, 0, 1, step.easing));
|
|
302
|
+
if (obj)
|
|
303
|
+
obj.opacity = 1;
|
|
304
|
+
}
|
|
305
|
+
break;
|
|
306
|
+
}
|
|
307
|
+
case 'morph': {
|
|
308
|
+
// Interpolate position, size, color from source to target object
|
|
309
|
+
const srcObj = objects.get(id);
|
|
310
|
+
const tgtObj = step.morphTarget ? objects.get(step.morphTarget) : undefined;
|
|
311
|
+
if (srcObj && tgtObj) {
|
|
312
|
+
kfs.push(kf(id, 'x', startTime, endTime, srcObj.x, tgtObj.x, step.easing));
|
|
313
|
+
kfs.push(kf(id, 'y', startTime, endTime, srcObj.y, tgtObj.y, step.easing));
|
|
314
|
+
if (srcObj.width !== undefined && tgtObj.width !== undefined) {
|
|
315
|
+
kfs.push(kf(id, 'width', startTime, endTime, srcObj.width, tgtObj.width, step.easing));
|
|
316
|
+
}
|
|
317
|
+
if (srcObj.height !== undefined && tgtObj.height !== undefined) {
|
|
318
|
+
kfs.push(kf(id, 'height', startTime, endTime, srcObj.height, tgtObj.height, step.easing));
|
|
319
|
+
}
|
|
320
|
+
if (srcObj.radius !== undefined && tgtObj.radius !== undefined) {
|
|
321
|
+
kfs.push(kf(id, 'radius', startTime, endTime, srcObj.radius, tgtObj.radius, step.easing));
|
|
322
|
+
}
|
|
323
|
+
if (tgtObj.color) {
|
|
324
|
+
kfs.push(kf(id, 'color', startTime, endTime, srcObj.color || '', tgtObj.color, step.easing));
|
|
325
|
+
}
|
|
326
|
+
// Update source state to target values
|
|
327
|
+
srcObj.x = tgtObj.x;
|
|
328
|
+
srcObj.y = tgtObj.y;
|
|
329
|
+
if (tgtObj.width !== undefined)
|
|
330
|
+
srcObj.width = tgtObj.width;
|
|
331
|
+
if (tgtObj.height !== undefined)
|
|
332
|
+
srcObj.height = tgtObj.height;
|
|
333
|
+
if (tgtObj.color)
|
|
334
|
+
srcObj.color = tgtObj.color;
|
|
335
|
+
}
|
|
336
|
+
break;
|
|
337
|
+
}
|
|
227
338
|
case 'camera':
|
|
228
339
|
// Camera keyframes use a virtual '__camera' object
|
|
229
340
|
if (!objects.has('__camera')) {
|
|
@@ -237,20 +348,26 @@ function compileStep(step, startTime, endTime, objects) {
|
|
|
237
348
|
objects.set('__camera', cam);
|
|
238
349
|
}
|
|
239
350
|
if (step.cameraAction === 'zoom' && step.cameraZoom !== undefined) {
|
|
240
|
-
|
|
241
|
-
kfs.push(kf('__camera', '
|
|
351
|
+
const camObjC = objects.get('__camera');
|
|
352
|
+
kfs.push(kf('__camera', 'scaleX', startTime, endTime, camObjC.scaleX, step.cameraZoom, step.easing));
|
|
353
|
+
kfs.push(kf('__camera', 'scaleY', startTime, endTime, camObjC.scaleY, step.cameraZoom, step.easing));
|
|
354
|
+
camObjC.scaleX = step.cameraZoom;
|
|
355
|
+
camObjC.scaleY = step.cameraZoom;
|
|
242
356
|
}
|
|
243
357
|
if (step.cameraAction === 'pan' && step.cameraPanX !== undefined) {
|
|
244
|
-
|
|
245
|
-
kfs.push(kf('__camera', '
|
|
358
|
+
const camObjC = objects.get('__camera');
|
|
359
|
+
kfs.push(kf('__camera', 'x', startTime, endTime, camObjC.x, step.cameraPanX, step.easing));
|
|
360
|
+
kfs.push(kf('__camera', 'y', startTime, endTime, camObjC.y, step.cameraPanY ?? 0, step.easing));
|
|
361
|
+
camObjC.x = step.cameraPanX;
|
|
362
|
+
camObjC.y = step.cameraPanY ?? 0;
|
|
246
363
|
}
|
|
247
364
|
break;
|
|
248
|
-
// Graph-specific animations (tangent, secant, area, trace)
|
|
365
|
+
// Graph-specific animations (tangent, secant, area, trace)
|
|
249
366
|
case 'tangent':
|
|
250
367
|
case 'secant':
|
|
251
368
|
case 'area':
|
|
252
369
|
case 'trace':
|
|
253
|
-
//
|
|
370
|
+
// Make target visible with draw animation
|
|
254
371
|
kfs.push(kf(id, 'visible', startTime, startTime, 0, 1, 'linear'));
|
|
255
372
|
kfs.push(kf(id, 'opacity', startTime, startTime, 0, 1, 'linear'));
|
|
256
373
|
kfs.push(kf(id, 'drawProgress', startTime, endTime, 0, 1, step.easing));
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"MotionCompiler.js","sourceRoot":"","sources":["../../../src/components/motion/MotionCompiler.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"MotionCompiler.js","sourceRoot":"","sources":["../../../src/components/motion/MotionCompiler.ts"],"names":[],"mappings":"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"}
|
|
@@ -18,10 +18,14 @@ export declare class MotionEngine {
|
|
|
18
18
|
private animFrameId;
|
|
19
19
|
private lastFrameTime;
|
|
20
20
|
private objectStates;
|
|
21
|
+
private autoFitScale;
|
|
22
|
+
private autoFitOffsetX;
|
|
23
|
+
private autoFitOffsetY;
|
|
21
24
|
state: EngineState;
|
|
22
25
|
onStateChange?: (state: EngineState) => void;
|
|
23
26
|
constructor(canvas: HTMLCanvasElement);
|
|
24
27
|
load(timeline: CompiledTimeline): void;
|
|
28
|
+
private computeAutoFit;
|
|
25
29
|
play(): void;
|
|
26
30
|
pause(): void;
|
|
27
31
|
togglePlayPause(): void;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"MotionEngine.d.ts","sourceRoot":"","sources":["../../../src/components/motion/MotionEngine.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;GAWG;AAEH,OAAO,EAAE,gBAAgB,EAAsC,WAAW,EAAE,MAAM,SAAS,CAAA;AAgE3F,qBAAa,YAAY;IACrB,OAAO,CAAC,MAAM,CAAmB;IACjC,OAAO,CAAC,GAAG,CAA0B;IACrC,OAAO,CAAC,QAAQ,CAAgC;IAChD,OAAO,CAAC,WAAW,CAAY;IAC/B,OAAO,CAAC,aAAa,CAAY;IAGjC,OAAO,CAAC,YAAY,CAA0D;IAG9E,KAAK,EAAE,WAAW,CAMjB;IAGD,aAAa,CAAC,EAAE,CAAC,KAAK,EAAE,WAAW,KAAK,IAAI,CAAA;gBAEhC,MAAM,EAAE,iBAAiB;IASrC,IAAI,CAAC,QAAQ,EAAE,gBAAgB;
|
|
1
|
+
{"version":3,"file":"MotionEngine.d.ts","sourceRoot":"","sources":["../../../src/components/motion/MotionEngine.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;GAWG;AAEH,OAAO,EAAE,gBAAgB,EAAsC,WAAW,EAAE,MAAM,SAAS,CAAA;AAgE3F,qBAAa,YAAY;IACrB,OAAO,CAAC,MAAM,CAAmB;IACjC,OAAO,CAAC,GAAG,CAA0B;IACrC,OAAO,CAAC,QAAQ,CAAgC;IAChD,OAAO,CAAC,WAAW,CAAY;IAC/B,OAAO,CAAC,aAAa,CAAY;IAGjC,OAAO,CAAC,YAAY,CAA0D;IAG9E,OAAO,CAAC,YAAY,CAAY;IAChC,OAAO,CAAC,cAAc,CAAY;IAClC,OAAO,CAAC,cAAc,CAAY;IAGlC,KAAK,EAAE,WAAW,CAMjB;IAGD,aAAa,CAAC,EAAE,CAAC,KAAK,EAAE,WAAW,KAAK,IAAI,CAAA;gBAEhC,MAAM,EAAE,iBAAiB;IASrC,IAAI,CAAC,QAAQ,EAAE,gBAAgB;IA+B/B,OAAO,CAAC,cAAc;IAqGtB,IAAI;IAaJ,KAAK;IASL,eAAe;IAKf,IAAI,CAAC,IAAI,EAAE,MAAM;IAOjB,WAAW,CAAC,GAAG,EAAE,MAAM;IAIvB,OAAO;IAKP,WAAW;IAIX,YAAY;IAIZ,OAAO;IAIP,SAAS;IAIT,QAAQ,CAAC,KAAK,EAAE,MAAM;IAKtB,OAAO,CAAC,IAAI,EAAE,OAAO;IAKrB,OAAO;IAQP,OAAO,CAAC,IAAI;IA+BZ,OAAO,CAAC,cAAc;IAwDtB,OAAO,CAAC,MAAM;IAoDd,OAAO,CAAC,YAAY;IAybpB,OAAO,CAAC,SAAS;IAejB,0DAA0D;IAC1D,OAAO,CAAC,gBAAgB;IA4BxB,OAAO,CAAC,mBAAmB;IAO3B,OAAO,CAAC,YAAY;CAGvB"}
|
|
@@ -78,6 +78,10 @@ class MotionEngine {
|
|
|
78
78
|
this.lastFrameTime = 0;
|
|
79
79
|
// Runtime object states (snapshot at current time)
|
|
80
80
|
this.objectStates = new Map();
|
|
81
|
+
// Auto-fit scaling: computed from content bounding box
|
|
82
|
+
this.autoFitScale = 1;
|
|
83
|
+
this.autoFitOffsetX = 0;
|
|
84
|
+
this.autoFitOffsetY = 0;
|
|
81
85
|
// Public state
|
|
82
86
|
this.state = {
|
|
83
87
|
currentTime: 0,
|
|
@@ -115,9 +119,100 @@ class MotionEngine {
|
|
|
115
119
|
lineWidth: obj.lineWidth || 2,
|
|
116
120
|
});
|
|
117
121
|
}
|
|
122
|
+
// Auto-fit: compute bounding box of all objects and scale to fit canvas
|
|
123
|
+
this.computeAutoFit();
|
|
118
124
|
this.render();
|
|
119
125
|
this.notifyChange();
|
|
120
126
|
}
|
|
127
|
+
computeAutoFit() {
|
|
128
|
+
if (!this.timeline)
|
|
129
|
+
return;
|
|
130
|
+
const dpr = window.devicePixelRatio || 1;
|
|
131
|
+
const logicalW = this.canvas.width / dpr;
|
|
132
|
+
const logicalH = this.canvas.height / dpr;
|
|
133
|
+
let minX = Infinity, minY = Infinity, maxX = -Infinity, maxY = -Infinity;
|
|
134
|
+
for (const [id, obj] of this.timeline.objects) {
|
|
135
|
+
if (id.startsWith('__'))
|
|
136
|
+
continue;
|
|
137
|
+
const w = obj.width || 0;
|
|
138
|
+
const h = obj.height || 0;
|
|
139
|
+
const r = obj.radius || 0;
|
|
140
|
+
// Object center position
|
|
141
|
+
const cx = obj.x;
|
|
142
|
+
const cy = obj.y;
|
|
143
|
+
// Estimate bounds based on shape
|
|
144
|
+
let halfW = Math.max(w / 2, r);
|
|
145
|
+
let halfH = Math.max(h / 2, r);
|
|
146
|
+
// Text objects: estimate width from content length × font size
|
|
147
|
+
if ((obj.type === 'text' || obj.type === 'tex') && obj.content) {
|
|
148
|
+
const fontSize = obj.fontSize || 16;
|
|
149
|
+
const textAlign = obj.textAlign || 'center';
|
|
150
|
+
const estWidth = obj.content.length * fontSize * 0.55;
|
|
151
|
+
if (textAlign === 'center') {
|
|
152
|
+
halfW = Math.max(halfW, estWidth / 2);
|
|
153
|
+
}
|
|
154
|
+
else if (textAlign === 'left') {
|
|
155
|
+
// Text extends to the right from x
|
|
156
|
+
halfW = Math.max(halfW, estWidth);
|
|
157
|
+
}
|
|
158
|
+
else {
|
|
159
|
+
halfW = Math.max(halfW, estWidth);
|
|
160
|
+
}
|
|
161
|
+
halfH = Math.max(halfH, fontSize / 2 + 4);
|
|
162
|
+
}
|
|
163
|
+
minX = Math.min(minX, cx - halfW);
|
|
164
|
+
minY = Math.min(minY, cy - halfH);
|
|
165
|
+
maxX = Math.max(maxX, cx + halfW);
|
|
166
|
+
maxY = Math.max(maxY, cy + halfH);
|
|
167
|
+
// Line/path/arrow endpoints
|
|
168
|
+
if (obj.x2 !== undefined) {
|
|
169
|
+
minX = Math.min(minX, obj.x2);
|
|
170
|
+
maxX = Math.max(maxX, obj.x2);
|
|
171
|
+
}
|
|
172
|
+
if (obj.y2 !== undefined) {
|
|
173
|
+
minY = Math.min(minY, obj.y2);
|
|
174
|
+
maxY = Math.max(maxY, obj.y2);
|
|
175
|
+
}
|
|
176
|
+
// Polyline points
|
|
177
|
+
if (obj.points) {
|
|
178
|
+
for (const pt of obj.points) {
|
|
179
|
+
minX = Math.min(minX, pt[0]);
|
|
180
|
+
maxX = Math.max(maxX, pt[0]);
|
|
181
|
+
minY = Math.min(minY, pt[1]);
|
|
182
|
+
maxY = Math.max(maxY, pt[1]);
|
|
183
|
+
}
|
|
184
|
+
}
|
|
185
|
+
}
|
|
186
|
+
// Also include animation keyframe destination positions
|
|
187
|
+
if (this.timeline.keyframes) {
|
|
188
|
+
for (const kf of this.timeline.keyframes) {
|
|
189
|
+
if (kf.property === 'x') {
|
|
190
|
+
minX = Math.min(minX, kf.startValue, kf.endValue);
|
|
191
|
+
maxX = Math.max(maxX, kf.startValue, kf.endValue);
|
|
192
|
+
}
|
|
193
|
+
if (kf.property === 'y') {
|
|
194
|
+
minY = Math.min(minY, kf.startValue, kf.endValue);
|
|
195
|
+
maxY = Math.max(maxY, kf.startValue, kf.endValue);
|
|
196
|
+
}
|
|
197
|
+
}
|
|
198
|
+
}
|
|
199
|
+
if (!isFinite(minX)) {
|
|
200
|
+
this.autoFitScale = 1;
|
|
201
|
+
this.autoFitOffsetX = 0;
|
|
202
|
+
this.autoFitOffsetY = 0;
|
|
203
|
+
return;
|
|
204
|
+
}
|
|
205
|
+
const margin = 40; // increased margin for breathing room
|
|
206
|
+
const contentW = maxX - minX + margin * 2;
|
|
207
|
+
const contentH = maxY - minY + margin * 2;
|
|
208
|
+
const scaleX = logicalW / contentW;
|
|
209
|
+
const scaleY = logicalH / contentH;
|
|
210
|
+
const scale = Math.min(scaleX, scaleY, 1); // never scale UP, only down
|
|
211
|
+
this.autoFitScale = scale;
|
|
212
|
+
// Center the content
|
|
213
|
+
this.autoFitOffsetX = (logicalW - contentW * scale) / 2 - minX * scale + margin * scale;
|
|
214
|
+
this.autoFitOffsetY = (logicalH - contentH * scale) / 2 - minY * scale + margin * scale;
|
|
215
|
+
}
|
|
121
216
|
// ─── Playback Controls ───────────────────────────────────────
|
|
122
217
|
play() {
|
|
123
218
|
if (this.state.isPlaying)
|
|
@@ -277,6 +372,12 @@ class MotionEngine {
|
|
|
277
372
|
ctx.save();
|
|
278
373
|
// Apply DPR scaling
|
|
279
374
|
ctx.scale(dpr, dpr);
|
|
375
|
+
// Apply auto-fit scaling (content → canvas bounds)
|
|
376
|
+
// Always apply to center content even when scale=1
|
|
377
|
+
ctx.translate(this.autoFitOffsetX, this.autoFitOffsetY);
|
|
378
|
+
if (this.autoFitScale < 1) {
|
|
379
|
+
ctx.scale(this.autoFitScale, this.autoFitScale);
|
|
380
|
+
}
|
|
280
381
|
// Apply camera transform
|
|
281
382
|
const cam = this.objectStates.get('__camera');
|
|
282
383
|
if (cam) {
|
|
@@ -309,46 +410,148 @@ class MotionEngine {
|
|
|
309
410
|
renderObject(obj, st) {
|
|
310
411
|
const { ctx } = this;
|
|
311
412
|
const color = st.color || obj.color || '#cdd6f4';
|
|
413
|
+
const fillColor = obj.fill || color;
|
|
414
|
+
const strokeColor = obj.stroke || color;
|
|
312
415
|
const w = st.width;
|
|
313
416
|
const h = st.height;
|
|
417
|
+
// Apply shadow/glow if specified
|
|
418
|
+
if (obj.shadow) {
|
|
419
|
+
const parts = obj.shadow.split(',').map(s => s.trim());
|
|
420
|
+
ctx.shadowOffsetX = parseFloat(parts[0]) || 0;
|
|
421
|
+
ctx.shadowOffsetY = parseFloat(parts[1]) || 0;
|
|
422
|
+
ctx.shadowBlur = parseFloat(parts[2]) || 0;
|
|
423
|
+
ctx.shadowColor = parts[3] || 'rgba(0,0,0,0.5)';
|
|
424
|
+
}
|
|
425
|
+
// Apply dashed pattern if specified
|
|
426
|
+
if (obj.dashed && obj.dashed.length > 0) {
|
|
427
|
+
ctx.setLineDash(obj.dashed);
|
|
428
|
+
}
|
|
429
|
+
else {
|
|
430
|
+
ctx.setLineDash([]);
|
|
431
|
+
}
|
|
314
432
|
switch (obj.type) {
|
|
315
433
|
case 'rect': {
|
|
316
|
-
ctx.fillStyle = color;
|
|
317
434
|
const r = st.radius || 0;
|
|
318
435
|
if (r > 0) {
|
|
319
436
|
this.roundRect(-w / 2, -h / 2, w, h, r);
|
|
320
|
-
|
|
437
|
+
// Fill
|
|
438
|
+
if (obj.fill) {
|
|
439
|
+
ctx.fillStyle = fillColor;
|
|
440
|
+
ctx.fill();
|
|
441
|
+
}
|
|
442
|
+
else {
|
|
443
|
+
ctx.fillStyle = fillColor;
|
|
444
|
+
ctx.fill();
|
|
445
|
+
}
|
|
446
|
+
// Stroke if stroke color specified or lineWidth set
|
|
447
|
+
if (obj.stroke || st.lineWidth > 0) {
|
|
448
|
+
ctx.strokeStyle = strokeColor;
|
|
449
|
+
ctx.lineWidth = st.lineWidth || 1;
|
|
450
|
+
ctx.stroke();
|
|
451
|
+
}
|
|
321
452
|
}
|
|
322
453
|
else {
|
|
454
|
+
ctx.fillStyle = fillColor;
|
|
323
455
|
ctx.fillRect(-w / 2, -h / 2, w, h);
|
|
456
|
+
if (obj.stroke || st.lineWidth > 0) {
|
|
457
|
+
ctx.strokeStyle = strokeColor;
|
|
458
|
+
ctx.lineWidth = st.lineWidth || 1;
|
|
459
|
+
ctx.strokeRect(-w / 2, -h / 2, w, h);
|
|
460
|
+
}
|
|
324
461
|
}
|
|
325
462
|
break;
|
|
326
463
|
}
|
|
327
464
|
case 'circle': {
|
|
328
465
|
const r = st.radius || 20;
|
|
329
|
-
ctx.fillStyle = color;
|
|
330
466
|
ctx.beginPath();
|
|
331
467
|
ctx.arc(0, 0, r, 0, Math.PI * 2);
|
|
468
|
+
ctx.fillStyle = fillColor;
|
|
332
469
|
ctx.fill();
|
|
470
|
+
if (obj.stroke || st.lineWidth > 0) {
|
|
471
|
+
ctx.strokeStyle = strokeColor;
|
|
472
|
+
ctx.lineWidth = st.lineWidth || 1;
|
|
473
|
+
ctx.stroke();
|
|
474
|
+
}
|
|
333
475
|
break;
|
|
334
476
|
}
|
|
335
|
-
case '
|
|
336
|
-
const
|
|
337
|
-
const
|
|
477
|
+
case 'ellipse': {
|
|
478
|
+
const rx = (w || 100) / 2;
|
|
479
|
+
const ry = (h || 60) / 2;
|
|
480
|
+
ctx.beginPath();
|
|
481
|
+
ctx.ellipse(0, 0, rx, ry, 0, 0, Math.PI * 2);
|
|
482
|
+
if (obj.fill) {
|
|
483
|
+
ctx.fillStyle = fillColor;
|
|
484
|
+
ctx.fill();
|
|
485
|
+
}
|
|
486
|
+
ctx.strokeStyle = strokeColor;
|
|
487
|
+
ctx.lineWidth = st.lineWidth || 1;
|
|
488
|
+
ctx.stroke();
|
|
489
|
+
break;
|
|
490
|
+
}
|
|
491
|
+
case 'polygon': {
|
|
492
|
+
const sides = obj.sides || 6;
|
|
493
|
+
const r = st.radius || 30;
|
|
494
|
+
ctx.beginPath();
|
|
495
|
+
for (let i = 0; i < sides; i++) {
|
|
496
|
+
const angle = (i / sides) * Math.PI * 2 - Math.PI / 2;
|
|
497
|
+
const px = r * Math.cos(angle);
|
|
498
|
+
const py = r * Math.sin(angle);
|
|
499
|
+
if (i === 0)
|
|
500
|
+
ctx.moveTo(px, py);
|
|
501
|
+
else
|
|
502
|
+
ctx.lineTo(px, py);
|
|
503
|
+
}
|
|
504
|
+
ctx.closePath();
|
|
505
|
+
ctx.fillStyle = fillColor;
|
|
506
|
+
ctx.fill();
|
|
507
|
+
if (obj.stroke || st.lineWidth > 0) {
|
|
508
|
+
ctx.strokeStyle = strokeColor;
|
|
509
|
+
ctx.lineWidth = st.lineWidth || 1;
|
|
510
|
+
ctx.stroke();
|
|
511
|
+
}
|
|
512
|
+
break;
|
|
513
|
+
}
|
|
514
|
+
case 'line':
|
|
515
|
+
case 'path': {
|
|
338
516
|
const lw = st.lineWidth;
|
|
339
517
|
const progress = st.drawProgress;
|
|
340
|
-
ctx.strokeStyle =
|
|
341
|
-
ctx.lineWidth = lw;
|
|
518
|
+
ctx.strokeStyle = strokeColor;
|
|
519
|
+
ctx.lineWidth = lw || 2;
|
|
342
520
|
ctx.lineCap = 'round';
|
|
343
|
-
ctx.
|
|
344
|
-
|
|
345
|
-
if (
|
|
346
|
-
|
|
521
|
+
ctx.lineJoin = 'round';
|
|
522
|
+
// If points array exists, render as polyline
|
|
523
|
+
if (obj.points && obj.points.length >= 2) {
|
|
524
|
+
const pts = obj.points;
|
|
525
|
+
const totalPts = progress > 0 && progress < 1
|
|
526
|
+
? Math.max(2, Math.ceil(pts.length * progress))
|
|
527
|
+
: pts.length;
|
|
528
|
+
ctx.beginPath();
|
|
529
|
+
// Points are absolute — translate relative to object position
|
|
530
|
+
ctx.moveTo(pts[0][0] - obj.x, pts[0][1] - obj.y);
|
|
531
|
+
for (let i = 1; i < totalPts; i++) {
|
|
532
|
+
ctx.lineTo(pts[i][0] - obj.x, pts[i][1] - obj.y);
|
|
533
|
+
}
|
|
534
|
+
ctx.stroke();
|
|
347
535
|
}
|
|
348
536
|
else {
|
|
349
|
-
|
|
537
|
+
// Simple from→to line
|
|
538
|
+
const x2 = (obj.x2 ?? 0) - obj.x;
|
|
539
|
+
const y2 = (obj.y2 ?? 0) - obj.y;
|
|
540
|
+
ctx.beginPath();
|
|
541
|
+
ctx.moveTo(0, 0);
|
|
542
|
+
if (progress < 1 && progress > 0) {
|
|
543
|
+
ctx.lineTo(x2 * progress, y2 * progress);
|
|
544
|
+
}
|
|
545
|
+
else {
|
|
546
|
+
ctx.lineTo(x2, y2);
|
|
547
|
+
}
|
|
548
|
+
ctx.stroke();
|
|
549
|
+
}
|
|
550
|
+
// Also fill if specified
|
|
551
|
+
if (obj.fill) {
|
|
552
|
+
ctx.fillStyle = fillColor;
|
|
553
|
+
ctx.fill();
|
|
350
554
|
}
|
|
351
|
-
ctx.stroke();
|
|
352
555
|
break;
|
|
353
556
|
}
|
|
354
557
|
case 'arrow': {
|
|
@@ -358,8 +561,8 @@ class MotionEngine {
|
|
|
358
561
|
const progress = st.drawProgress;
|
|
359
562
|
const endX = x2 * (progress > 0 ? progress : 1);
|
|
360
563
|
const endY = y2 * (progress > 0 ? progress : 1);
|
|
361
|
-
ctx.strokeStyle =
|
|
362
|
-
ctx.fillStyle =
|
|
564
|
+
ctx.strokeStyle = strokeColor;
|
|
565
|
+
ctx.fillStyle = strokeColor;
|
|
363
566
|
ctx.lineWidth = lw;
|
|
364
567
|
ctx.lineCap = 'round';
|
|
365
568
|
// Line
|
|
@@ -386,19 +589,18 @@ class MotionEngine {
|
|
|
386
589
|
: content;
|
|
387
590
|
const size = obj.fontSize || 12;
|
|
388
591
|
const weight = obj.fontWeight || 'normal';
|
|
389
|
-
ctx.fillStyle =
|
|
592
|
+
ctx.fillStyle = fillColor;
|
|
390
593
|
ctx.font = `${weight} ${size}px "Helvetica Neue", Helvetica, Arial, sans-serif`;
|
|
391
|
-
ctx.textAlign = 'center';
|
|
594
|
+
ctx.textAlign = obj.textAlign || 'center';
|
|
392
595
|
ctx.textBaseline = 'middle';
|
|
393
596
|
ctx.fillText(displayText, 0, 0);
|
|
394
597
|
break;
|
|
395
598
|
}
|
|
396
599
|
case 'tex': {
|
|
397
600
|
// Render LaTeX — simplified version using canvas text
|
|
398
|
-
// Full KaTeX rendering will be added in Phase 1C
|
|
399
601
|
const content = st.content || obj.content || '';
|
|
400
602
|
const size = obj.fontSize || 14;
|
|
401
|
-
ctx.fillStyle =
|
|
603
|
+
ctx.fillStyle = fillColor;
|
|
402
604
|
ctx.font = `italic ${size}px Georgia, 'Times New Roman', serif`;
|
|
403
605
|
ctx.textAlign = 'center';
|
|
404
606
|
ctx.textBaseline = 'middle';
|
|
@@ -503,7 +705,7 @@ class MotionEngine {
|
|
|
503
705
|
}
|
|
504
706
|
case 'point': {
|
|
505
707
|
const r = st.radius || 5;
|
|
506
|
-
ctx.fillStyle =
|
|
708
|
+
ctx.fillStyle = fillColor;
|
|
507
709
|
ctx.beginPath();
|
|
508
710
|
ctx.arc(0, 0, r, 0, Math.PI * 2);
|
|
509
711
|
ctx.fill();
|
|
@@ -562,6 +764,28 @@ class MotionEngine {
|
|
|
562
764
|
}
|
|
563
765
|
break;
|
|
564
766
|
}
|
|
767
|
+
case 'image': {
|
|
768
|
+
// Render image if cached
|
|
769
|
+
const src = obj.src;
|
|
770
|
+
if (!src)
|
|
771
|
+
break;
|
|
772
|
+
// Try to get cached image
|
|
773
|
+
let img = this.__imageCache?.get(src);
|
|
774
|
+
if (!img) {
|
|
775
|
+
// Load image
|
|
776
|
+
img = new Image();
|
|
777
|
+
img.src = src;
|
|
778
|
+
if (!this.__imageCache)
|
|
779
|
+
this.__imageCache = new Map();
|
|
780
|
+
this.__imageCache.set(src, img);
|
|
781
|
+
}
|
|
782
|
+
if (img.complete && img.naturalWidth > 0) {
|
|
783
|
+
const imgW = w || img.naturalWidth;
|
|
784
|
+
const imgH = h || img.naturalHeight;
|
|
785
|
+
ctx.drawImage(img, -imgW / 2, -imgH / 2, imgW, imgH);
|
|
786
|
+
}
|
|
787
|
+
break;
|
|
788
|
+
}
|
|
565
789
|
default:
|
|
566
790
|
// Unknown type — render as circle placeholder
|
|
567
791
|
ctx.fillStyle = '#45475a';
|
|
@@ -570,6 +794,15 @@ class MotionEngine {
|
|
|
570
794
|
ctx.fill();
|
|
571
795
|
break;
|
|
572
796
|
}
|
|
797
|
+
// Reset shadow after rendering
|
|
798
|
+
if (obj.shadow) {
|
|
799
|
+
ctx.shadowColor = 'transparent';
|
|
800
|
+
ctx.shadowBlur = 0;
|
|
801
|
+
ctx.shadowOffsetX = 0;
|
|
802
|
+
ctx.shadowOffsetY = 0;
|
|
803
|
+
}
|
|
804
|
+
// Reset dash pattern
|
|
805
|
+
ctx.setLineDash([]);
|
|
573
806
|
}
|
|
574
807
|
// ─── Helpers ─────────────────────────────────────────────────
|
|
575
808
|
roundRect(x, y, w, h, r) {
|
|
@@ -589,8 +822,13 @@ class MotionEngine {
|
|
|
589
822
|
/** Simple math expression evaluator for plot functions */
|
|
590
823
|
evaluateFunction(expr, x) {
|
|
591
824
|
try {
|
|
825
|
+
// Strip surrounding single quotes (DSL tokenizer doesn't handle them)
|
|
826
|
+
let cleaned = expr.trim();
|
|
827
|
+
if (cleaned.startsWith("'") && cleaned.endsWith("'")) {
|
|
828
|
+
cleaned = cleaned.slice(1, -1);
|
|
829
|
+
}
|
|
592
830
|
// Sanitize: only allow math operations
|
|
593
|
-
const sanitized =
|
|
831
|
+
const sanitized = cleaned
|
|
594
832
|
.replace(/\bx\b/g, `(${x})`)
|
|
595
833
|
.replace(/\bsin\b/g, 'Math.sin')
|
|
596
834
|
.replace(/\bcos\b/g, 'Math.cos')
|