@jotx-labs/editor 2.4.209 → 2.4.212

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.
Files changed (54) hide show
  1. package/dist/components/DocumentHeader/DocumentHeader.js +1 -1
  2. package/dist/components/DocumentHeader/DocumentHeader.js.map +1 -1
  3. package/dist/components/GraphView/GraphView.d.ts +9 -1
  4. package/dist/components/GraphView/GraphView.d.ts.map +1 -1
  5. package/dist/components/GraphView/GraphView.js +220 -52
  6. package/dist/components/GraphView/GraphView.js.map +1 -1
  7. package/dist/components/JotxEditor.d.ts.map +1 -1
  8. package/dist/components/JotxEditor.js +6 -0
  9. package/dist/components/JotxEditor.js.map +1 -1
  10. package/dist/components/MotionNodeView.d.ts +4 -0
  11. package/dist/components/MotionNodeView.d.ts.map +1 -0
  12. package/dist/components/MotionNodeView.js +134 -0
  13. package/dist/components/MotionNodeView.js.map +1 -0
  14. package/dist/components/ReadonlyBlockRenderer.d.ts.map +1 -1
  15. package/dist/components/ReadonlyBlockRenderer.js +2 -0
  16. package/dist/components/ReadonlyBlockRenderer.js.map +1 -1
  17. package/dist/components/SlashMenu.d.ts.map +1 -1
  18. package/dist/components/SlashMenu.js +8 -0
  19. package/dist/components/SlashMenu.js.map +1 -1
  20. package/dist/components/motion/MotionCompiler.d.ts +9 -0
  21. package/dist/components/motion/MotionCompiler.d.ts.map +1 -0
  22. package/dist/components/motion/MotionCompiler.js +265 -0
  23. package/dist/components/motion/MotionCompiler.js.map +1 -0
  24. package/dist/components/motion/MotionEngine.d.ts +48 -0
  25. package/dist/components/motion/MotionEngine.d.ts.map +1 -0
  26. package/dist/components/motion/MotionEngine.js +623 -0
  27. package/dist/components/motion/MotionEngine.js.map +1 -0
  28. package/dist/components/motion/MotionParser.d.ts +13 -0
  29. package/dist/components/motion/MotionParser.d.ts.map +1 -0
  30. package/dist/components/motion/MotionParser.js +403 -0
  31. package/dist/components/motion/MotionParser.js.map +1 -0
  32. package/dist/components/motion/MotionPresets.d.ts +13 -0
  33. package/dist/components/motion/MotionPresets.d.ts.map +1 -0
  34. package/dist/components/motion/MotionPresets.js +143 -0
  35. package/dist/components/motion/MotionPresets.js.map +1 -0
  36. package/dist/components/motion/types.d.ts +130 -0
  37. package/dist/components/motion/types.d.ts.map +1 -0
  38. package/dist/components/motion/types.js +33 -0
  39. package/dist/components/motion/types.js.map +1 -0
  40. package/dist/extensions/MotionNode.d.ts +3 -0
  41. package/dist/extensions/MotionNode.d.ts.map +1 -0
  42. package/dist/extensions/MotionNode.js +95 -0
  43. package/dist/extensions/MotionNode.js.map +1 -0
  44. package/dist/index.d.ts +2 -0
  45. package/dist/index.d.ts.map +1 -1
  46. package/dist/index.js +6 -2
  47. package/dist/index.js.map +1 -1
  48. package/dist/styles/GraphView.css +272 -50
  49. package/dist/styles/MotionNodeView.css +374 -0
  50. package/dist/utils/PresentationConverter.js +7 -0
  51. package/dist/utils/PresentationConverter.js.map +1 -1
  52. package/package.json +4 -4
  53. package/src/styles/GraphView.css +272 -50
  54. package/src/styles/MotionNodeView.css +374 -0
@@ -0,0 +1,623 @@
1
+ "use strict";
2
+ /**
3
+ * MotionEngine — Canvas2D Animation Renderer
4
+ *
5
+ * Takes a compiled timeline and renders it frame-by-frame on a canvas.
6
+ * Handles:
7
+ * - Easing functions
8
+ * - Interpolation (numeric, color)
9
+ * - Object rendering (shapes, text, arrows, etc.)
10
+ * - requestAnimationFrame loop
11
+ * - Play/pause/seek/speed controls
12
+ * - KaTeX rendering for tex objects
13
+ */
14
+ Object.defineProperty(exports, "__esModule", { value: true });
15
+ exports.MotionEngine = void 0;
16
+ // ─── Easing Functions ────────────────────────────────────────────
17
+ const easings = {
18
+ linear: (t) => t,
19
+ ease: (t) => t < 0.5 ? 2 * t * t : 1 - Math.pow(-2 * t + 2, 2) / 2,
20
+ easeIn: (t) => t * t * t,
21
+ easeOut: (t) => 1 - Math.pow(1 - t, 3),
22
+ spring: (t) => {
23
+ const c4 = (2 * Math.PI) / 3;
24
+ return t === 0 ? 0 : t === 1 ? 1 :
25
+ Math.pow(2, -10 * t) * Math.sin((t * 10 - 0.75) * c4) + 1;
26
+ },
27
+ bounce: (t) => {
28
+ const n1 = 7.5625, d1 = 2.75;
29
+ if (t < 1 / d1)
30
+ return n1 * t * t;
31
+ if (t < 2 / d1)
32
+ return n1 * (t -= 1.5 / d1) * t + 0.75;
33
+ if (t < 2.5 / d1)
34
+ return n1 * (t -= 2.25 / d1) * t + 0.9375;
35
+ return n1 * (t -= 2.625 / d1) * t + 0.984375;
36
+ },
37
+ };
38
+ // ─── Color Interpolation ─────────────────────────────────────────
39
+ function parseColor(c) {
40
+ if (!c || c === '')
41
+ return [0, 0, 0, 0];
42
+ // Hex
43
+ if (c.startsWith('#')) {
44
+ const hex = c.slice(1);
45
+ if (hex.length === 3) {
46
+ return [
47
+ parseInt(hex[0] + hex[0], 16),
48
+ parseInt(hex[1] + hex[1], 16),
49
+ parseInt(hex[2] + hex[2], 16),
50
+ 255,
51
+ ];
52
+ }
53
+ if (hex.length >= 6) {
54
+ return [
55
+ parseInt(hex.slice(0, 2), 16),
56
+ parseInt(hex.slice(2, 4), 16),
57
+ parseInt(hex.slice(4, 6), 16),
58
+ hex.length === 8 ? parseInt(hex.slice(6, 8), 16) : 255,
59
+ ];
60
+ }
61
+ }
62
+ return [128, 128, 128, 255];
63
+ }
64
+ function interpolateColor(from, to, t) {
65
+ const [r1, g1, b1, a1] = parseColor(from);
66
+ const [r2, g2, b2, a2] = parseColor(to);
67
+ const r = Math.round(r1 + (r2 - r1) * t);
68
+ const g = Math.round(g1 + (g2 - g1) * t);
69
+ const b = Math.round(b1 + (b2 - b1) * t);
70
+ const a = Math.round(a1 + (a2 - a1) * t);
71
+ return `rgba(${r},${g},${b},${a / 255})`;
72
+ }
73
+ // ─── Engine Class ────────────────────────────────────────────────
74
+ class MotionEngine {
75
+ constructor(canvas) {
76
+ this.timeline = null;
77
+ this.animFrameId = 0;
78
+ this.lastFrameTime = 0;
79
+ // Runtime object states (snapshot at current time)
80
+ this.objectStates = new Map();
81
+ // Public state
82
+ this.state = {
83
+ currentTime: 0,
84
+ isPlaying: false,
85
+ playbackSpeed: 1,
86
+ loop: false,
87
+ totalDuration: 0,
88
+ };
89
+ this.canvas = canvas;
90
+ const ctx = canvas.getContext('2d');
91
+ if (!ctx)
92
+ throw new Error('Cannot get 2D context');
93
+ this.ctx = ctx;
94
+ }
95
+ // ─── Load Timeline ───────────────────────────────────────────
96
+ load(timeline) {
97
+ this.timeline = timeline;
98
+ this.state.totalDuration = timeline.totalDuration;
99
+ this.state.currentTime = 0;
100
+ // Initialize object states from declared objects
101
+ this.objectStates.clear();
102
+ for (const [id, obj] of timeline.objects) {
103
+ this.objectStates.set(id, {
104
+ x: obj.x,
105
+ y: obj.y,
106
+ width: obj.width || 0,
107
+ height: obj.height || 0,
108
+ radius: obj.radius || 0,
109
+ opacity: obj.opacity,
110
+ visible: obj.visible ? 1 : 0,
111
+ scaleX: obj.scaleX,
112
+ scaleY: obj.scaleY,
113
+ rotation: obj.rotation,
114
+ drawProgress: obj.drawProgress,
115
+ lineWidth: obj.lineWidth || 2,
116
+ });
117
+ }
118
+ this.render();
119
+ this.notifyChange();
120
+ }
121
+ // ─── Playback Controls ───────────────────────────────────────
122
+ play() {
123
+ if (this.state.isPlaying)
124
+ return;
125
+ // If at end, restart from beginning
126
+ if (this.state.currentTime >= this.state.totalDuration) {
127
+ this.state.currentTime = 0;
128
+ this.applyKeyframes(0);
129
+ }
130
+ this.state.isPlaying = true;
131
+ this.lastFrameTime = performance.now();
132
+ this.tick();
133
+ this.notifyChange();
134
+ }
135
+ pause() {
136
+ this.state.isPlaying = false;
137
+ if (this.animFrameId) {
138
+ cancelAnimationFrame(this.animFrameId);
139
+ this.animFrameId = 0;
140
+ }
141
+ this.notifyChange();
142
+ }
143
+ togglePlayPause() {
144
+ if (this.state.isPlaying)
145
+ this.pause();
146
+ else
147
+ this.play();
148
+ }
149
+ seek(time) {
150
+ this.state.currentTime = Math.max(0, Math.min(time, this.state.totalDuration));
151
+ this.applyKeyframes(this.state.currentTime);
152
+ this.render();
153
+ this.notifyChange();
154
+ }
155
+ seekPercent(pct) {
156
+ this.seek(pct * this.state.totalDuration);
157
+ }
158
+ restart() {
159
+ this.seek(0);
160
+ this.play();
161
+ }
162
+ stepForward() {
163
+ this.seek(this.state.currentTime + 0.1);
164
+ }
165
+ stepBackward() {
166
+ this.seek(this.state.currentTime - 0.1);
167
+ }
168
+ goToEnd() {
169
+ this.seek(this.state.totalDuration);
170
+ }
171
+ goToStart() {
172
+ this.seek(0);
173
+ }
174
+ setSpeed(speed) {
175
+ this.state.playbackSpeed = speed;
176
+ this.notifyChange();
177
+ }
178
+ setLoop(loop) {
179
+ this.state.loop = loop;
180
+ this.notifyChange();
181
+ }
182
+ destroy() {
183
+ this.pause();
184
+ this.timeline = null;
185
+ this.objectStates.clear();
186
+ }
187
+ // ─── Animation Loop ──────────────────────────────────────────
188
+ tick() {
189
+ if (!this.state.isPlaying)
190
+ return;
191
+ const now = performance.now();
192
+ const delta = (now - this.lastFrameTime) / 1000;
193
+ this.lastFrameTime = now;
194
+ this.state.currentTime += delta * this.state.playbackSpeed;
195
+ if (this.state.currentTime >= this.state.totalDuration) {
196
+ if (this.state.loop) {
197
+ this.state.currentTime = 0;
198
+ }
199
+ else {
200
+ this.state.currentTime = this.state.totalDuration;
201
+ this.state.isPlaying = false;
202
+ this.applyKeyframes(this.state.currentTime);
203
+ this.render();
204
+ this.notifyChange();
205
+ return;
206
+ }
207
+ }
208
+ this.applyKeyframes(this.state.currentTime);
209
+ this.render();
210
+ this.notifyChange();
211
+ this.animFrameId = requestAnimationFrame(() => this.tick());
212
+ }
213
+ // ─── Apply Keyframes at Time ─────────────────────────────────
214
+ applyKeyframes(time) {
215
+ if (!this.timeline)
216
+ return;
217
+ // Reset to initial states (from declared objects)
218
+ for (const [id, obj] of this.timeline.objects) {
219
+ const st = this.objectStates.get(id);
220
+ if (!st)
221
+ continue;
222
+ st.x = obj.x;
223
+ st.y = obj.y;
224
+ st.width = obj.width || 0;
225
+ st.height = obj.height || 0;
226
+ st.radius = obj.radius || 0;
227
+ st.opacity = obj.opacity;
228
+ st.visible = obj.visible ? 1 : 0;
229
+ st.scaleX = obj.scaleX;
230
+ st.scaleY = obj.scaleY;
231
+ st.rotation = obj.rotation;
232
+ st.drawProgress = obj.drawProgress;
233
+ st.lineWidth = obj.lineWidth || 2;
234
+ }
235
+ // Apply all keyframes up to current time
236
+ for (const kf of this.timeline.keyframes) {
237
+ if (kf.startTime > time)
238
+ continue; // hasn't started yet
239
+ const st = this.objectStates.get(kf.objectId);
240
+ if (!st)
241
+ continue;
242
+ if (time >= kf.endTime) {
243
+ // Keyframe complete — apply end value
244
+ if (typeof kf.endValue === 'number') {
245
+ st[kf.property] = kf.endValue;
246
+ }
247
+ else {
248
+ st[kf.property] = kf.endValue;
249
+ }
250
+ }
251
+ else {
252
+ // In progress — interpolate
253
+ const elapsed = time - kf.startTime;
254
+ const duration = kf.endTime - kf.startTime;
255
+ const rawT = duration > 0 ? elapsed / duration : 1;
256
+ const t = easings[kf.easing](rawT);
257
+ if (typeof kf.startValue === 'number' && typeof kf.endValue === 'number') {
258
+ st[kf.property] = kf.startValue + (kf.endValue - kf.startValue) * t;
259
+ }
260
+ else if (kf.property === 'color') {
261
+ st[kf.property] = interpolateColor(kf.startValue, kf.endValue, t);
262
+ }
263
+ else {
264
+ // String properties snap at midpoint
265
+ st[kf.property] = t >= 0.5 ? kf.endValue : kf.startValue;
266
+ }
267
+ }
268
+ }
269
+ }
270
+ // ─── Render Frame ────────────────────────────────────────────
271
+ render() {
272
+ if (!this.timeline)
273
+ return;
274
+ const { ctx, canvas } = this;
275
+ const dpr = window.devicePixelRatio || 1;
276
+ ctx.clearRect(0, 0, canvas.width, canvas.height);
277
+ ctx.save();
278
+ // Apply DPR scaling
279
+ ctx.scale(dpr, dpr);
280
+ // Apply camera transform
281
+ const cam = this.objectStates.get('__camera');
282
+ if (cam) {
283
+ const logicalW = canvas.width / dpr;
284
+ const logicalH = canvas.height / dpr;
285
+ ctx.translate(logicalW / 2, logicalH / 2);
286
+ ctx.scale(cam.scaleX, cam.scaleY);
287
+ ctx.translate(-logicalW / 2 - cam.x, -logicalH / 2 - cam.y);
288
+ }
289
+ // Render each object
290
+ for (const [id, obj] of this.timeline.objects) {
291
+ if (id.startsWith('__'))
292
+ continue; // skip virtual objects
293
+ const st = this.objectStates.get(id);
294
+ if (!st || !st.visible)
295
+ continue;
296
+ ctx.save();
297
+ ctx.globalAlpha = st.opacity;
298
+ // Apply transforms
299
+ const x = st.x;
300
+ const y = st.y;
301
+ ctx.translate(x, y);
302
+ ctx.scale(st.scaleX, st.scaleY);
303
+ ctx.rotate(st.rotation * Math.PI / 180);
304
+ this.renderObject(obj, st);
305
+ ctx.restore();
306
+ }
307
+ ctx.restore();
308
+ }
309
+ renderObject(obj, st) {
310
+ const { ctx } = this;
311
+ const color = st.color || obj.color || '#cdd6f4';
312
+ const w = st.width;
313
+ const h = st.height;
314
+ switch (obj.type) {
315
+ case 'rect': {
316
+ ctx.fillStyle = color;
317
+ const r = st.radius || 0;
318
+ if (r > 0) {
319
+ this.roundRect(-w / 2, -h / 2, w, h, r);
320
+ ctx.fill();
321
+ }
322
+ else {
323
+ ctx.fillRect(-w / 2, -h / 2, w, h);
324
+ }
325
+ break;
326
+ }
327
+ case 'circle': {
328
+ const r = st.radius || 20;
329
+ ctx.fillStyle = color;
330
+ ctx.beginPath();
331
+ ctx.arc(0, 0, r, 0, Math.PI * 2);
332
+ ctx.fill();
333
+ break;
334
+ }
335
+ case 'line': {
336
+ const x2 = (obj.x2 ?? 0) - obj.x;
337
+ const y2 = (obj.y2 ?? 0) - obj.y;
338
+ const lw = st.lineWidth;
339
+ const progress = st.drawProgress;
340
+ ctx.strokeStyle = color;
341
+ ctx.lineWidth = lw;
342
+ ctx.lineCap = 'round';
343
+ ctx.beginPath();
344
+ ctx.moveTo(0, 0);
345
+ if (progress < 1 && progress > 0) {
346
+ ctx.lineTo(x2 * progress, y2 * progress);
347
+ }
348
+ else {
349
+ ctx.lineTo(x2, y2);
350
+ }
351
+ ctx.stroke();
352
+ break;
353
+ }
354
+ case 'arrow': {
355
+ const x2 = (obj.x2 ?? 0) - obj.x;
356
+ const y2 = (obj.y2 ?? 0) - obj.y;
357
+ const lw = st.lineWidth;
358
+ const progress = st.drawProgress;
359
+ const endX = x2 * (progress > 0 ? progress : 1);
360
+ const endY = y2 * (progress > 0 ? progress : 1);
361
+ ctx.strokeStyle = color;
362
+ ctx.fillStyle = color;
363
+ ctx.lineWidth = lw;
364
+ ctx.lineCap = 'round';
365
+ // Line
366
+ ctx.beginPath();
367
+ ctx.moveTo(0, 0);
368
+ ctx.lineTo(endX, endY);
369
+ ctx.stroke();
370
+ // Arrowhead
371
+ const angle = Math.atan2(endY, endX);
372
+ const headLen = Math.max(8, lw * 3);
373
+ ctx.beginPath();
374
+ ctx.moveTo(endX, endY);
375
+ ctx.lineTo(endX - headLen * Math.cos(angle - Math.PI / 6), endY - headLen * Math.sin(angle - Math.PI / 6));
376
+ ctx.lineTo(endX - headLen * Math.cos(angle + Math.PI / 6), endY - headLen * Math.sin(angle + Math.PI / 6));
377
+ ctx.closePath();
378
+ ctx.fill();
379
+ break;
380
+ }
381
+ case 'text': {
382
+ const content = st.content || obj.content || '';
383
+ const progress = st.drawProgress;
384
+ const displayText = progress > 0 && progress < 1
385
+ ? content.slice(0, Math.ceil(content.length * progress))
386
+ : content;
387
+ const size = obj.fontSize || 12;
388
+ const weight = obj.fontWeight || 'normal';
389
+ ctx.fillStyle = color;
390
+ ctx.font = `${weight} ${size}px "Helvetica Neue", Helvetica, Arial, sans-serif`;
391
+ ctx.textAlign = 'center';
392
+ ctx.textBaseline = 'middle';
393
+ ctx.fillText(displayText, 0, 0);
394
+ break;
395
+ }
396
+ case 'tex': {
397
+ // Render LaTeX — simplified version using canvas text
398
+ // Full KaTeX rendering will be added in Phase 1C
399
+ const content = st.content || obj.content || '';
400
+ const size = obj.fontSize || 14;
401
+ ctx.fillStyle = color;
402
+ ctx.font = `italic ${size}px Georgia, 'Times New Roman', serif`;
403
+ ctx.textAlign = 'center';
404
+ ctx.textBaseline = 'middle';
405
+ ctx.fillText(content, 0, 0);
406
+ break;
407
+ }
408
+ case 'axes': {
409
+ const xr = obj.xRange || [0, 10];
410
+ const yr = obj.yRange || [0, 10];
411
+ const axW = w || 400;
412
+ const axH = h || 300;
413
+ ctx.strokeStyle = '#585b70';
414
+ ctx.lineWidth = 1.5;
415
+ // X axis
416
+ ctx.beginPath();
417
+ ctx.moveTo(-axW / 2, axH / 2);
418
+ ctx.lineTo(axW / 2, axH / 2);
419
+ ctx.stroke();
420
+ // Y axis
421
+ ctx.beginPath();
422
+ ctx.moveTo(-axW / 2, axH / 2);
423
+ ctx.lineTo(-axW / 2, -axH / 2);
424
+ ctx.stroke();
425
+ // Tick marks on X
426
+ const xSteps = Math.min(10, Math.ceil(xr[1] - xr[0]));
427
+ for (let i = 0; i <= xSteps; i++) {
428
+ const px = -axW / 2 + (i / xSteps) * axW;
429
+ ctx.beginPath();
430
+ ctx.moveTo(px, axH / 2 - 3);
431
+ ctx.lineTo(px, axH / 2 + 3);
432
+ ctx.stroke();
433
+ // Label
434
+ const val = xr[0] + (i / xSteps) * (xr[1] - xr[0]);
435
+ ctx.fillStyle = '#a5adcb';
436
+ ctx.font = '8px "Helvetica Neue", Helvetica, Arial, sans-serif';
437
+ ctx.textAlign = 'center';
438
+ ctx.fillText(val.toFixed(val % 1 === 0 ? 0 : 1), px, axH / 2 + 14);
439
+ }
440
+ // Tick marks on Y
441
+ const ySteps = Math.min(10, Math.ceil(yr[1] - yr[0]));
442
+ for (let i = 0; i <= ySteps; i++) {
443
+ const py = axH / 2 - (i / ySteps) * axH;
444
+ ctx.beginPath();
445
+ ctx.moveTo(-axW / 2 - 3, py);
446
+ ctx.lineTo(-axW / 2 + 3, py);
447
+ ctx.stroke();
448
+ const val = yr[0] + (i / ySteps) * (yr[1] - yr[0]);
449
+ ctx.fillStyle = '#a5adcb';
450
+ ctx.font = '8px "Helvetica Neue", Helvetica, Arial, sans-serif';
451
+ ctx.textAlign = 'right';
452
+ ctx.textBaseline = 'middle';
453
+ ctx.fillText(val.toFixed(val % 1 === 0 ? 0 : 1), -axW / 2 - 8, py);
454
+ }
455
+ break;
456
+ }
457
+ case 'plot': {
458
+ // Render a function plot on its parent axes
459
+ if (!obj.fn || !obj.axesRef)
460
+ break;
461
+ const axes = this.timeline?.objects.get(obj.axesRef);
462
+ if (!axes)
463
+ break;
464
+ const xr = axes.xRange || [0, 10];
465
+ const yr = axes.yRange || [0, 10];
466
+ const axW = axes.width || 400;
467
+ const axH = axes.height || 300;
468
+ // Plot is positioned relative to its axes
469
+ const offX = (axes.x - obj.x);
470
+ const offY = (axes.y - obj.y);
471
+ const lw = st.lineWidth;
472
+ const progress = st.drawProgress;
473
+ ctx.strokeStyle = color;
474
+ ctx.lineWidth = lw || 2.5;
475
+ ctx.lineCap = 'round';
476
+ ctx.lineJoin = 'round';
477
+ const numPoints = 200;
478
+ const drawUpTo = progress > 0 ? Math.ceil(numPoints * progress) : numPoints;
479
+ ctx.beginPath();
480
+ let started = false;
481
+ for (let i = 0; i <= drawUpTo; i++) {
482
+ const t = i / numPoints;
483
+ const xVal = xr[0] + t * (xr[1] - xr[0]);
484
+ const yVal = this.evaluateFunction(obj.fn, xVal);
485
+ // Map to pixel coords relative to axes center
486
+ const px = offX + (-axW / 2 + ((xVal - xr[0]) / (xr[1] - xr[0])) * axW);
487
+ const py = offY + (axH / 2 - ((yVal - yr[0]) / (yr[1] - yr[0])) * axH);
488
+ // Clamp to axes bounds
489
+ if (py < offY - axH / 2 - 10 || py > offY + axH / 2 + 10) {
490
+ started = false;
491
+ continue;
492
+ }
493
+ if (!started) {
494
+ ctx.moveTo(px, py);
495
+ started = true;
496
+ }
497
+ else {
498
+ ctx.lineTo(px, py);
499
+ }
500
+ }
501
+ ctx.stroke();
502
+ break;
503
+ }
504
+ case 'point': {
505
+ const r = st.radius || 5;
506
+ ctx.fillStyle = color;
507
+ ctx.beginPath();
508
+ ctx.arc(0, 0, r, 0, Math.PI * 2);
509
+ ctx.fill();
510
+ // Label
511
+ if (obj.label) {
512
+ ctx.fillStyle = color;
513
+ ctx.font = '9px "Helvetica Neue", Helvetica, Arial, sans-serif';
514
+ ctx.textAlign = 'left';
515
+ ctx.textBaseline = 'middle';
516
+ ctx.fillText(obj.label, r + 4, 0);
517
+ }
518
+ break;
519
+ }
520
+ case 'code': {
521
+ const rawContent = st.content || obj.content || '';
522
+ // Replace null byte separators (from preprocessor) with real newlines
523
+ const content = rawContent.replace(/\x00/g, '\n');
524
+ const lines = content.split('\n').filter((l, i, arr) =>
525
+ // Remove empty first/last lines from triple-quote formatting
526
+ !(i === 0 && l.trim() === '') && !(i === arr.length - 1 && l.trim() === ''));
527
+ const lineH = 17;
528
+ const padding = 12;
529
+ const codeW = Math.max(w || 350, 200);
530
+ const codeH = lines.length * lineH + padding * 2;
531
+ // Background
532
+ ctx.fillStyle = '#181825';
533
+ this.roundRect(-codeW / 2, -codeH / 2, codeW, codeH, 8);
534
+ ctx.fill();
535
+ // Border
536
+ ctx.strokeStyle = '#313244';
537
+ ctx.lineWidth = 1;
538
+ this.roundRect(-codeW / 2, -codeH / 2, codeW, codeH, 8);
539
+ ctx.stroke();
540
+ // Highlight lines
541
+ const hlRange = st.highlightLines;
542
+ if (hlRange) {
543
+ const [hlStart, hlEnd] = this.parseHighlightRange(hlRange);
544
+ for (let l = hlStart; l <= hlEnd && l <= lines.length; l++) {
545
+ const ly = -codeH / 2 + padding + (l - 1) * lineH - 2;
546
+ ctx.fillStyle = 'rgba(137, 180, 250, 0.15)';
547
+ ctx.fillRect(-codeW / 2, ly, codeW, lineH);
548
+ }
549
+ }
550
+ // Line numbers + code
551
+ ctx.font = '10px Menlo, Monaco, Consolas, monospace';
552
+ for (let i = 0; i < lines.length; i++) {
553
+ const ly = -codeH / 2 + padding + i * lineH + lineH * 0.6;
554
+ // Line number
555
+ ctx.fillStyle = '#585b70';
556
+ ctx.textAlign = 'right';
557
+ ctx.fillText(`${i + 1}`, -codeW / 2 + 28, ly);
558
+ // Code
559
+ ctx.fillStyle = '#cdd6f4';
560
+ ctx.textAlign = 'left';
561
+ ctx.fillText(lines[i], -codeW / 2 + 36, ly);
562
+ }
563
+ break;
564
+ }
565
+ default:
566
+ // Unknown type — render as circle placeholder
567
+ ctx.fillStyle = '#45475a';
568
+ ctx.beginPath();
569
+ ctx.arc(0, 0, 10, 0, Math.PI * 2);
570
+ ctx.fill();
571
+ break;
572
+ }
573
+ }
574
+ // ─── Helpers ─────────────────────────────────────────────────
575
+ roundRect(x, y, w, h, r) {
576
+ const { ctx } = this;
577
+ ctx.beginPath();
578
+ ctx.moveTo(x + r, y);
579
+ ctx.lineTo(x + w - r, y);
580
+ ctx.quadraticCurveTo(x + w, y, x + w, y + r);
581
+ ctx.lineTo(x + w, y + h - r);
582
+ ctx.quadraticCurveTo(x + w, y + h, x + w - r, y + h);
583
+ ctx.lineTo(x + r, y + h);
584
+ ctx.quadraticCurveTo(x, y + h, x, y + h - r);
585
+ ctx.lineTo(x, y + r);
586
+ ctx.quadraticCurveTo(x, y, x + r, y);
587
+ ctx.closePath();
588
+ }
589
+ /** Simple math expression evaluator for plot functions */
590
+ evaluateFunction(expr, x) {
591
+ try {
592
+ // Sanitize: only allow math operations
593
+ const sanitized = expr
594
+ .replace(/\bx\b/g, `(${x})`)
595
+ .replace(/\bsin\b/g, 'Math.sin')
596
+ .replace(/\bcos\b/g, 'Math.cos')
597
+ .replace(/\btan\b/g, 'Math.tan')
598
+ .replace(/\babs\b/g, 'Math.abs')
599
+ .replace(/\bsqrt\b/g, 'Math.sqrt')
600
+ .replace(/\blog\b/g, 'Math.log')
601
+ .replace(/\bexp\b/g, 'Math.exp')
602
+ .replace(/\bpi\b/gi, 'Math.PI')
603
+ .replace(/\be\b/g, 'Math.E')
604
+ .replace(/\^/g, '**');
605
+ // eslint-disable-next-line no-new-func
606
+ return new Function(`return ${sanitized}`)();
607
+ }
608
+ catch {
609
+ return 0;
610
+ }
611
+ }
612
+ parseHighlightRange(range) {
613
+ const parts = range.split('-');
614
+ const start = parseInt(parts[0]) || 1;
615
+ const end = parts.length > 1 ? (parseInt(parts[1]) || start) : start;
616
+ return [start, end];
617
+ }
618
+ notifyChange() {
619
+ this.onStateChange?.({ ...this.state });
620
+ }
621
+ }
622
+ exports.MotionEngine = MotionEngine;
623
+ //# sourceMappingURL=MotionEngine.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"MotionEngine.js","sourceRoot":"","sources":["../../../src/components/motion/MotionEngine.ts"],"names":[],"mappings":"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"}