@dnyantra/dtly 0.2.1 → 0.3.0

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 (80) hide show
  1. package/README.md +21 -8
  2. package/dist/agents.d.ts +1 -0
  3. package/dist/agents.js +9 -4
  4. package/dist/agents.js.map +1 -1
  5. package/dist/cli.js +35 -5
  6. package/dist/cli.js.map +1 -1
  7. package/dist/core/anim.js +20 -0
  8. package/dist/core/anim.js.map +1 -1
  9. package/dist/core/captions.d.ts +13 -0
  10. package/dist/core/captions.js +57 -0
  11. package/dist/core/captions.js.map +1 -0
  12. package/dist/core/geo.d.ts +13 -0
  13. package/dist/core/geo.js +41 -0
  14. package/dist/core/geo.js.map +1 -0
  15. package/dist/core/model.d.ts +112 -9
  16. package/dist/core/model.js.map +1 -1
  17. package/dist/core/path.d.ts +35 -0
  18. package/dist/core/path.js +324 -0
  19. package/dist/core/path.js.map +1 -0
  20. package/dist/core/svg.d.ts +22 -0
  21. package/dist/core/svg.js +217 -0
  22. package/dist/core/svg.js.map +1 -0
  23. package/dist/core/text.d.ts +3 -1
  24. package/dist/core/text.js +49 -3
  25. package/dist/core/text.js.map +1 -1
  26. package/dist/mcp/server.js +28 -1
  27. package/dist/mcp/server.js.map +1 -1
  28. package/dist/ops/ops.d.ts +7 -0
  29. package/dist/ops/ops.js +11 -1
  30. package/dist/ops/ops.js.map +1 -1
  31. package/dist/presets/app.d.ts +2 -0
  32. package/dist/presets/app.js +82 -0
  33. package/dist/presets/app.js.map +1 -0
  34. package/dist/presets/captions.d.ts +2 -0
  35. package/dist/presets/captions.js +48 -0
  36. package/dist/presets/captions.js.map +1 -0
  37. package/dist/presets/charts.d.ts +2 -0
  38. package/dist/presets/charts.js +162 -0
  39. package/dist/presets/charts.js.map +1 -0
  40. package/dist/presets/index.d.ts +1 -1
  41. package/dist/presets/index.js +62 -1
  42. package/dist/presets/index.js.map +1 -1
  43. package/dist/presets/maps.d.ts +2 -0
  44. package/dist/presets/maps.js +79 -0
  45. package/dist/presets/maps.js.map +1 -0
  46. package/dist/render/fx.d.ts +11 -0
  47. package/dist/render/fx.js +87 -0
  48. package/dist/render/fx.js.map +1 -0
  49. package/dist/render/grade.d.ts +20 -0
  50. package/dist/render/grade.js +178 -0
  51. package/dist/render/grade.js.map +1 -0
  52. package/dist/render/lottie.d.ts +36 -0
  53. package/dist/render/lottie.js +523 -0
  54. package/dist/render/lottie.js.map +1 -0
  55. package/dist/render/node-host.d.ts +1 -0
  56. package/dist/render/node-host.js +15 -4
  57. package/dist/render/node-host.js.map +1 -1
  58. package/dist/render/perspective.d.ts +5 -0
  59. package/dist/render/perspective.js +71 -0
  60. package/dist/render/perspective.js.map +1 -0
  61. package/dist/render/renderer.d.ts +6 -0
  62. package/dist/render/renderer.js +156 -95
  63. package/dist/render/renderer.js.map +1 -1
  64. package/dist/render/shapes.d.ts +6 -0
  65. package/dist/render/shapes.js +129 -0
  66. package/dist/render/shapes.js.map +1 -0
  67. package/dist/render/tiles.d.ts +11 -0
  68. package/dist/render/tiles.js +42 -0
  69. package/dist/render/tiles.js.map +1 -0
  70. package/dist/render/transcribe.d.ts +14 -0
  71. package/dist/render/transcribe.js +55 -0
  72. package/dist/render/transcribe.js.map +1 -0
  73. package/dist/studio/server.js +14 -1
  74. package/dist/studio/server.js.map +1 -1
  75. package/dist/studio-app/app.js +5 -4
  76. package/dist/studio-app/app.js.map +4 -4
  77. package/dist/version.d.ts +1 -1
  78. package/dist/version.js +1 -1
  79. package/package.json +1 -1
  80. package/plugin/skills/{dtly → moti}/SKILL.md +26 -6
@@ -0,0 +1,523 @@
1
+ // A Lottie (Bodymovin) player on Canvas2D, so Lottie files render inside DT.ly in Node and in the browser.
2
+ // Supports shape, solid, image, null, precomp and simple text layers; groups, paths, rects, ellipses,
3
+ // polystars, fills, strokes (dashes), gradient fills/strokes, trim paths, repeaters; parenting,
4
+ // masks (add/subtract/intersect), track mattes (alpha and luma), time stretch and time remap.
5
+ // Not supported: expressions, layer effects, merge paths, round corners, 3D layers.
6
+ import { applyEase } from '../core/ease.js';
7
+ const I = [1, 0, 0, 1, 0, 0];
8
+ const mul = (m, n) => [m[0] * n[0] + m[2] * n[1], m[1] * n[0] + m[3] * n[1], m[0] * n[2] + m[2] * n[3], m[1] * n[2] + m[3] * n[3], m[0] * n[4] + m[2] * n[5] + m[4], m[1] * n[4] + m[3] * n[5] + m[5]];
9
+ const apply = (m, x, y) => [m[0] * x + m[2] * y + m[4], m[1] * x + m[3] * y + m[5]];
10
+ // ---- property evaluation ---------------------------------------------------------------------
11
+ const first = (v, d = 0) => (Array.isArray(v) ? v[0] ?? d : v ?? d);
12
+ const lerpAny = (a, b, p) => {
13
+ if (typeof a === 'number')
14
+ return a + (b - a) * p;
15
+ if (Array.isArray(a))
16
+ return a.map((x, i) => lerpAny(x, b?.[i] ?? x, p));
17
+ if (a && typeof a === 'object' && a.v)
18
+ return { c: a.c, i: lerpAny(a.i, b.i, p), o: lerpAny(a.o, b.o, p), v: lerpAny(a.v, b.v, p) }; // shape
19
+ return p < 1 ? a : b;
20
+ };
21
+ const evalProp = (prop, f) => {
22
+ if (!prop)
23
+ return undefined;
24
+ const k = prop.k;
25
+ const animated = prop.a === 1 || (Array.isArray(k) && k.length && typeof k[0] === 'object' && k[0] !== null && 't' in k[0]);
26
+ if (!animated)
27
+ return k;
28
+ const kfs = k;
29
+ if (f <= kfs[0].t)
30
+ return kfs[0].s ?? kfs[0].e;
31
+ let i = 0;
32
+ while (i < kfs.length - 1 && f >= kfs[i + 1].t)
33
+ i++;
34
+ const a = kfs[i], b = kfs[i + 1];
35
+ if (!b || a.s === undefined)
36
+ return a.s ?? kfs[i - 1]?.e ?? kfs[i - 1]?.s;
37
+ const start = a.s, end = a.e ?? b.s;
38
+ if (a.h === 1 || end === undefined)
39
+ return start;
40
+ const x = (f - a.t) / (b.t - a.t);
41
+ const ox = first(a.o?.x, 0), oy = first(a.o?.y, 0), ix = first(a.i?.x, 1), iy = first(a.i?.y, 1);
42
+ const p = applyEase([ox, oy, ix, iy], Math.max(0, Math.min(1, x)));
43
+ // Spatial bezier for positions (motion paths).
44
+ if (a.to && a.ti && Array.isArray(start) && start.length >= 2 && (a.to.some((v) => v) || a.ti.some((v) => v))) {
45
+ const c1 = start.map((v, d) => v + (a.to[d] ?? 0)), c2 = end.map((v, d) => v + (a.ti[d] ?? 0)), u = 1 - p;
46
+ return start.map((v, d) => u * u * u * v + 3 * u * u * p * c1[d] + 3 * u * p * p * c2[d] + p * p * p * end[d]);
47
+ }
48
+ return lerpAny(start, end, p);
49
+ };
50
+ const num = (prop, f, d = 0) => { const v = evalProp(prop, f); return v === undefined ? d : first(v, d); };
51
+ const vec = (prop, f, d) => { const v = evalProp(prop, f); return v === undefined ? d : Array.isArray(v) ? v : [v, v]; };
52
+ // Colours are 0..1 in current Lottie files, 0..255 in files from Bodymovin 4.x and older.
53
+ const rgba = (c, alpha) => {
54
+ const k = (c[0] ?? 0) > 1 || (c[1] ?? 0) > 1 || (c[2] ?? 0) > 1 || (c[3] ?? 0) > 1 ? 1 / 255 : 1;
55
+ return `rgba(${Math.round((c[0] ?? 0) * k * 255)},${Math.round((c[1] ?? 0) * k * 255)},${Math.round((c[2] ?? 0) * k * 255)},${Math.max(0, Math.min(1, (c[3] ?? 1 / k) * k * alpha)).toFixed(4)})`;
56
+ };
57
+ // ---- transforms ------------------------------------------------------------------------------
58
+ const transformMatrix = (tr, f) => {
59
+ if (!tr)
60
+ return I;
61
+ const a = vec(tr.a, f, [0, 0]);
62
+ let p;
63
+ if (tr.p?.s)
64
+ p = [num(tr.p.x, f), num(tr.p.y, f)];
65
+ else
66
+ p = vec(tr.p, f, [0, 0]);
67
+ const s = vec(tr.s, f, [100, 100]);
68
+ const r = ((tr.r ? num(tr.r, f) : num(tr.rz, f)) * Math.PI) / 180;
69
+ const sk = (num(tr.sk, f) * Math.PI) / 180, sa = (num(tr.sa, f) * Math.PI) / 180;
70
+ let m = [1, 0, 0, 1, p[0] ?? 0, p[1] ?? 0];
71
+ m = mul(m, [Math.cos(r), Math.sin(r), -Math.sin(r), Math.cos(r), 0, 0]);
72
+ if (sk) {
73
+ const c = Math.cos(sa), si = Math.sin(sa);
74
+ m = mul(m, mul(mul([c, si, -si, c, 0, 0], [1, 0, Math.tan(-sk), 1, 0, 0]), [c, -si, si, c, 0, 0]));
75
+ }
76
+ m = mul(m, [(s[0] ?? 100) / 100, 0, 0, (s[1] ?? 100) / 100, 0, 0]);
77
+ return mul(m, [1, 0, 0, 1, -(a[0] ?? 0), -(a[1] ?? 0)]);
78
+ };
79
+ const opacityOf = (tr, f) => (tr?.o ? num(tr.o, f, 100) / 100 : 1);
80
+ const shapeToGeo = (sh, m, reverse = false) => {
81
+ if (Array.isArray(sh))
82
+ sh = sh[0]; // animated shapes keep their value wrapped in an array
83
+ if (!sh?.v?.length)
84
+ return { subs: [] };
85
+ let v = sh.v, ii = sh.i ?? [], oo = sh.o ?? [];
86
+ if (reverse) {
87
+ v = [...v].reverse();
88
+ const ni = [...oo].reverse(), no = [...ii].reverse();
89
+ ii = ni;
90
+ oo = no;
91
+ }
92
+ const n = v.length, cubics = [];
93
+ const P = (j) => apply(m, v[j][0], v[j][1]);
94
+ const segCount = sh.c ? n : n - 1;
95
+ for (let j = 0; j < segCount; j++) {
96
+ const k = (j + 1) % n;
97
+ const c1 = apply(m, v[j][0] + (oo[j]?.[0] ?? 0), v[j][1] + (oo[j]?.[1] ?? 0));
98
+ const c2 = apply(m, v[k][0] + (ii[k]?.[0] ?? 0), v[k][1] + (ii[k]?.[1] ?? 0));
99
+ const e = P(k);
100
+ cubics.push([c1[0], c1[1], c2[0], c2[1], e[0], e[1]]);
101
+ }
102
+ return { subs: [{ start: P(0), cubics, closed: !!sh.c }] };
103
+ };
104
+ const K = 0.5522847498;
105
+ const ellipseGeo = (it, f, m) => {
106
+ const [cx, cy] = vec(it.p, f, [0, 0]), [w, h] = vec(it.s, f, [0, 0]);
107
+ const a = w / 2, b = h / 2;
108
+ const sh = { c: true, v: [[cx, cy - b], [cx + a, cy], [cx, cy + b], [cx - a, cy]], o: [[a * K, 0], [0, b * K], [-a * K, 0], [0, -b * K]], i: [[-a * K, 0], [0, -b * K], [a * K, 0], [0, b * K]] };
109
+ return shapeToGeo(sh, m, it.d === 3);
110
+ };
111
+ const rectGeo = (it, f, m) => {
112
+ const [cx, cy] = vec(it.p, f, [0, 0]), [w, h] = vec(it.s, f, [0, 0]);
113
+ const r = Math.min(num(it.r, f), w / 2, h / 2), x = cx - w / 2, y = cy - h / 2, k = r * K;
114
+ const sh = r > 0
115
+ ? { c: true, v: [[x + w, y + r], [x + w, y + h - r], [x + w - r, y + h], [x + r, y + h], [x, y + h - r], [x, y + r], [x + r, y], [x + w - r, y]], i: [[0, -k], [0, 0], [k, 0], [0, 0], [0, k], [0, 0], [-k, 0], [0, 0]], o: [[0, 0], [0, k], [0, 0], [-k, 0], [0, 0], [0, -k], [0, 0], [k, 0]] }
116
+ : { c: true, v: [[x + w, y], [x + w, y + h], [x, y + h], [x, y]], i: [[0, 0], [0, 0], [0, 0], [0, 0]], o: [[0, 0], [0, 0], [0, 0], [0, 0]] };
117
+ return shapeToGeo(sh, m, it.d === 3);
118
+ };
119
+ const starGeo = (it, f, m) => {
120
+ const pts = Math.max(3, Math.round(num(it.pt, f, 5))), [cx, cy] = vec(it.p, f, [0, 0]);
121
+ const rot = ((num(it.r, f) - 90) * Math.PI) / 180, or = num(it.or, f, 100), ir = num(it.ir, f, 50);
122
+ const count = it.sy === 1 ? pts * 2 : pts, v = [];
123
+ for (let i = 0; i < count; i++) {
124
+ const rr = it.sy === 1 && i % 2 ? ir : or;
125
+ const a = rot + (i / count) * Math.PI * 2;
126
+ v.push([cx + Math.cos(a) * rr, cy + Math.sin(a) * rr]);
127
+ }
128
+ return shapeToGeo({ c: true, v, i: v.map(() => [0, 0]), o: v.map(() => [0, 0]) }, m, it.d === 3);
129
+ };
130
+ const traceGeo = (ctx, g) => {
131
+ for (const s of g.subs) {
132
+ ctx.moveTo(...s.start);
133
+ for (const c of s.cubics)
134
+ ctx.bezierCurveTo(c[0], c[1], c[2], c[3], c[4], c[5]);
135
+ if (s.closed)
136
+ ctx.closePath();
137
+ }
138
+ };
139
+ // Trim paths on cubic geometry: flatten, then cut by length.
140
+ const trimGeo = (g, start, end, offset) => {
141
+ const subs = g.subs.map((s) => {
142
+ const pts = [s.start];
143
+ let last = s.start;
144
+ for (const c of s.cubics) {
145
+ const n = 24;
146
+ for (let k = 1; k <= n; k++) {
147
+ const t = k / n, u = 1 - t;
148
+ pts.push([u * u * u * last[0] + 3 * u * u * t * c[0] + 3 * u * t * t * c[2] + t * t * t * c[4], u * u * u * last[1] + 3 * u * u * t * c[1] + 3 * u * t * t * c[3] + t * t * t * c[5]]);
149
+ }
150
+ last = [c[4], c[5]];
151
+ }
152
+ return pts;
153
+ });
154
+ const lens = subs.map((pts) => pts.slice(1).reduce((a, p, i) => a + Math.hypot(p[0] - pts[i][0], p[1] - pts[i][1]), 0));
155
+ const total = lens.reduce((a, b) => a + b, 0);
156
+ if (!total)
157
+ return { subs: [] };
158
+ let s0 = Math.min(start, end) + offset, s1 = Math.max(start, end) + offset;
159
+ const shift = Math.floor(s0);
160
+ s0 -= shift;
161
+ s1 -= shift;
162
+ const ranges = s1 <= 1 ? [[s0, s1]] : [[s0, 1], [0, s1 - 1]];
163
+ const out = { subs: [] };
164
+ for (const [ra, rb] of ranges) {
165
+ const from = ra * total, to = rb * total;
166
+ let acc = 0;
167
+ subs.forEach((pts) => {
168
+ let line = null;
169
+ for (let i = 0; i < pts.length - 1; i++) {
170
+ const p = pts[i], q = pts[i + 1], l = Math.hypot(q[0] - p[0], q[1] - p[1]), a0 = acc, a1 = acc + l;
171
+ acc = a1;
172
+ if (a1 < from || a0 > to || !l)
173
+ continue;
174
+ const at = (d) => { const k = (d - a0) / l; return [p[0] + (q[0] - p[0]) * k, p[1] + (q[1] - p[1]) * k]; };
175
+ if (!line)
176
+ line = [at(Math.max(from, a0))];
177
+ line.push(at(Math.min(to, a1)));
178
+ }
179
+ if (line && line.length > 1)
180
+ out.subs.push({ start: line[0], cubics: line.slice(1).map((p, i) => { const a = line[i]; return [a[0], a[1], p[0], p[1], p[0], p[1]]; }), closed: false });
181
+ });
182
+ }
183
+ return out;
184
+ };
185
+ const gradientStyle = (ctx, it, f, m, alpha) => {
186
+ const s = vec(it.s, f, [0, 0]), e = vec(it.e, f, [0, 0]);
187
+ const [x0, y0] = apply(m, s[0], s[1]), [x1, y1] = apply(m, e[0], e[1]);
188
+ const grad = it.t === 2 ? ctx.createRadialGradient(x0, y0, 0, x0, y0, Math.hypot(x1 - x0, y1 - y0)) : ctx.createLinearGradient(x0, y0, x1, y1);
189
+ const n = it.g?.p ?? 0, raw = evalProp(it.g?.k, f) ?? [];
190
+ const alphaAt = (pos) => {
191
+ const op = raw.slice(n * 4);
192
+ if (op.length < 2)
193
+ return 1;
194
+ for (let j = 0; j < op.length - 2; j += 2)
195
+ if (pos >= op[j] && pos <= op[j + 2]) {
196
+ const k = (pos - op[j]) / ((op[j + 2] - op[j]) || 1);
197
+ return op[j + 1] + (op[j + 3] - op[j + 1]) * k;
198
+ }
199
+ return pos < op[0] ? op[1] : op[op.length - 1];
200
+ };
201
+ for (let j = 0; j < n; j++) {
202
+ const pos = raw[j * 4];
203
+ grad.addColorStop(Math.max(0, Math.min(1, pos)), rgba([raw[j * 4 + 1], raw[j * 4 + 2], raw[j * 4 + 3], alphaAt(pos)], alpha));
204
+ }
205
+ return grad;
206
+ };
207
+ const paintAll = (ctx, paints, f) => {
208
+ // Lower items render first (AE stacking): paints were collected top-down.
209
+ for (let i = paints.length - 1; i >= 0; i--) {
210
+ const { kind, it, geos, alpha, m } = paints[i];
211
+ if (!geos.length || it.hd)
212
+ continue;
213
+ ctx.beginPath();
214
+ for (const g of geos)
215
+ traceGeo(ctx, g);
216
+ const o = num(it.o, f, 100) / 100 * alpha;
217
+ if (kind === 'fill') {
218
+ ctx.fillStyle = it.ty === 'gf' ? gradientStyle(ctx, it, f, m, o) : rgba(vec(it.c, f, [0, 0, 0, 1]), o);
219
+ ctx.fill(it.r === 2 ? 'evenodd' : 'nonzero');
220
+ }
221
+ else {
222
+ ctx.strokeStyle = it.ty === 'gs' ? gradientStyle(ctx, it, f, m, o) : rgba(vec(it.c, f, [0, 0, 0, 1]), o);
223
+ ctx.lineWidth = num(it.w, f, 1) * (paintScale.get(it) ?? 1);
224
+ ctx.lineCap = ['butt', 'butt', 'round', 'square'][it.lc ?? 2] ?? 'round';
225
+ ctx.lineJoin = ['miter', 'miter', 'round', 'bevel'][it.lj ?? 2] ?? 'round';
226
+ ctx.miterLimit = it.ml ?? 4;
227
+ if (it.d?.length) {
228
+ const d = it.d.filter((x) => x.n !== 'o').map((x) => num(x.v, f) * (paintScale.get(it) ?? 1));
229
+ ctx.setLineDash(d);
230
+ const off = it.d.find((x) => x.n === 'o');
231
+ ctx.lineDashOffset = off ? num(off.v, f) : 0;
232
+ }
233
+ ctx.stroke();
234
+ ctx.setLineDash([]);
235
+ }
236
+ }
237
+ };
238
+ // Stroke widths and gradients are in shape space; geometry is already in layer pixels, so remember the scale.
239
+ const paintScale = new WeakMap();
240
+ const collect = (items, f, m, alpha, paints, geos) => {
241
+ const tr = items.find((it) => it.ty === 'tr');
242
+ const gm = tr ? mul(m, transformMatrix(tr, f)) : m;
243
+ const ga = alpha * (tr ? opacityOf(tr, f) : 1);
244
+ const scale = Math.sqrt(Math.abs(gm[0] * gm[3] - gm[1] * gm[2]));
245
+ const local = [];
246
+ const localPaints = [];
247
+ for (const it of items) {
248
+ if (it.hd)
249
+ continue;
250
+ switch (it.ty) {
251
+ case 'sh':
252
+ local.push(shapeToGeo(evalProp(it.ks, f), gm, it.d === 3));
253
+ break;
254
+ case 'el':
255
+ local.push(ellipseGeo(it, f, gm));
256
+ break;
257
+ case 'rc':
258
+ local.push(rectGeo(it, f, gm));
259
+ break;
260
+ case 'sr':
261
+ local.push(starGeo(it, f, gm));
262
+ break;
263
+ case 'gr':
264
+ collect(it.it ?? [], f, gm, ga, localPaints, local);
265
+ break;
266
+ case 'fl':
267
+ case 'gf':
268
+ localPaints.push({ kind: 'fill', it, geos: [...local], alpha: ga, m: gm });
269
+ break;
270
+ case 'st':
271
+ case 'gs':
272
+ paintScale.set(it, scale);
273
+ localPaints.push({ kind: 'stroke', it, geos: [...local], alpha: ga, m: gm });
274
+ break;
275
+ case 'tm': {
276
+ const s = num(it.s, f) / 100, e = num(it.e, f, 100) / 100, o = num(it.o, f) / 360;
277
+ const trimmed = local.map((g) => trimGeo(g, s, e, o));
278
+ local.splice(0, local.length, ...trimmed);
279
+ break;
280
+ }
281
+ case 'rp': {
282
+ const copies = Math.round(num(it.c, f, 1)), off = num(it.o, f), rtr = it.tr;
283
+ const base = [...local];
284
+ const so = rtr?.so ? num(rtr.so, f, 100) / 100 : 1, eo = rtr?.eo ? num(rtr.eo, f, 100) / 100 : 1;
285
+ local.length = 0;
286
+ const step = transformMatrix(rtr, f);
287
+ for (let c = 0; c < copies; c++) {
288
+ let rm = I;
289
+ for (let k = 0; k < c + off; k++)
290
+ rm = mul(rm, step);
291
+ const inv = invert(gm);
292
+ const toGroup = inv ? mul(gm, mul(rm, inv)) : I;
293
+ for (const g of base)
294
+ local.push({ subs: g.subs.map((s) => ({ start: apply(toGroup, ...s.start), cubics: s.cubics.map((c3) => { const a = apply(toGroup, c3[0], c3[1]), b = apply(toGroup, c3[2], c3[3]), e = apply(toGroup, c3[4], c3[5]); return [a[0], a[1], b[0], b[1], e[0], e[1]]; }), closed: s.closed })) });
295
+ void so;
296
+ void eo;
297
+ }
298
+ break;
299
+ }
300
+ default: break; // tr handled above; mm/rd/op ignored
301
+ }
302
+ }
303
+ // Paints apply to geometry above them in their group (and nested groups' geometry).
304
+ paints.push(...localPaints);
305
+ geos.push(...local);
306
+ };
307
+ const invert = (m) => {
308
+ const det = m[0] * m[3] - m[1] * m[2];
309
+ if (Math.abs(det) < 1e-12)
310
+ return null;
311
+ return [m[3] / det, -m[1] / det, -m[2] / det, m[0] / det, (m[2] * m[5] - m[3] * m[4]) / det, (m[1] * m[4] - m[0] * m[5]) / det];
312
+ };
313
+ // ---- player ----------------------------------------------------------------------------------
314
+ export class LottiePlayer {
315
+ data;
316
+ host;
317
+ w;
318
+ h;
319
+ fr;
320
+ ip;
321
+ op;
322
+ assets = new Map();
323
+ images = new Map();
324
+ pool = [];
325
+ constructor(data, host) {
326
+ this.data = data;
327
+ this.host = host;
328
+ this.w = data.w;
329
+ this.h = data.h;
330
+ this.fr = data.fr || 30;
331
+ this.ip = data.ip ?? 0;
332
+ this.op = data.op ?? 60;
333
+ for (const a of data.assets ?? [])
334
+ this.assets.set(a.id, a);
335
+ }
336
+ get duration() { return (this.op - this.ip) / this.fr; }
337
+ async preload() {
338
+ for (const a of this.data.assets ?? []) {
339
+ if (!a.p || a.layers)
340
+ continue;
341
+ const src = a.e === 1 || String(a.p).startsWith('data:') ? a.p : `${a.u ?? ''}${a.p}`;
342
+ try {
343
+ this.images.set(a.id, await this.host.image(src));
344
+ }
345
+ catch { /* missing image: skip */ }
346
+ }
347
+ }
348
+ buf(w, h) {
349
+ const c = this.pool.find((x) => x.width === w && x.height === h);
350
+ if (c) {
351
+ this.pool.splice(this.pool.indexOf(c), 1);
352
+ const ctx = c.getContext('2d');
353
+ ctx.setTransform(1, 0, 0, 1, 0, 0);
354
+ ctx.clearRect(0, 0, w, h);
355
+ return c;
356
+ }
357
+ return this.host.createCanvas(w, h);
358
+ }
359
+ release(c) { if (this.pool.length < 8)
360
+ this.pool.push(c); }
361
+ // Draws frame `f` (Lottie frame number) into ctx, in the animation's own w×h space under the ctx transform.
362
+ draw(ctx, f) {
363
+ this.drawLayers(ctx, this.data.layers ?? [], f, this.w, this.h);
364
+ }
365
+ layerMatrix(layer, byInd, f, depth = 0) {
366
+ let m = transformMatrix(layer.ks, f);
367
+ if (layer.parent !== undefined && depth < 30) {
368
+ const p = byInd.get(layer.parent);
369
+ if (p)
370
+ m = mul(this.layerMatrix(p, byInd, f, depth + 1), m);
371
+ }
372
+ return m;
373
+ }
374
+ drawLayers(ctx, layers, f, w, h) {
375
+ const byInd = new Map();
376
+ for (const l of layers)
377
+ if (l.ind !== undefined)
378
+ byInd.set(l.ind, l);
379
+ const base = ctx.getTransform();
380
+ for (let i = layers.length - 1; i >= 0; i--) {
381
+ const layer = layers[i];
382
+ if (layer.td || layer.hd)
383
+ continue; // matte sources draw only through the layer below them
384
+ if (f < (layer.ip ?? -Infinity) || f >= (layer.op ?? Infinity))
385
+ continue;
386
+ const matte = layer.tt ? layers[i - 1] : null;
387
+ if (!layer.masksProperties?.length && !matte) {
388
+ ctx.save();
389
+ this.drawLayer(ctx, layer, byInd, f, base);
390
+ ctx.restore();
391
+ continue;
392
+ }
393
+ // Masks and mattes: render into full-size buffers in the current device space.
394
+ const W = ctx.canvas.width, H = ctx.canvas.height;
395
+ const b = this.buf(W, H), bc = b.getContext('2d');
396
+ bc.setTransform(base);
397
+ this.drawLayer(bc, layer, byInd, f, base);
398
+ if (layer.masksProperties?.length)
399
+ this.applyMasks(bc, layer, byInd, f, base, W, H);
400
+ if (matte) {
401
+ const mb = this.buf(W, H), mc = mb.getContext('2d');
402
+ mc.setTransform(base);
403
+ this.drawLayer(mc, matte, byInd, f, base);
404
+ if (layer.tt === 3 || layer.tt === 4)
405
+ lumaToAlpha(mc, W, H, layer.tt === 4);
406
+ bc.setTransform(1, 0, 0, 1, 0, 0);
407
+ bc.globalCompositeOperation = layer.tt === 2 ? 'destination-out' : 'destination-in';
408
+ bc.drawImage(mb, 0, 0);
409
+ this.release(mb);
410
+ }
411
+ ctx.save();
412
+ ctx.setTransform(1, 0, 0, 1, 0, 0);
413
+ ctx.drawImage(b, 0, 0);
414
+ ctx.restore();
415
+ this.release(b);
416
+ }
417
+ void w;
418
+ void h;
419
+ }
420
+ applyMasks(bc, layer, byInd, f, base, W, H) {
421
+ const m = this.layerMatrix(layer, byInd, f);
422
+ const mk = this.buf(W, H), mc = mk.getContext('2d');
423
+ const masks = layer.masksProperties.filter((x) => x.mode !== 'n');
424
+ if (!masks.length) {
425
+ this.release(mk);
426
+ return;
427
+ }
428
+ if (masks[0].mode === 's') {
429
+ mc.fillStyle = '#000';
430
+ mc.fillRect(0, 0, W, H);
431
+ }
432
+ for (const mask of masks) {
433
+ mc.setTransform(base);
434
+ mc.transform(...m);
435
+ mc.beginPath();
436
+ traceGeo(mc, shapeToGeo(evalProp(mask.pt, f), I));
437
+ const o = num(mask.o, f, 100) / 100;
438
+ mc.fillStyle = `rgba(0,0,0,${o})`;
439
+ if (mask.inv) {
440
+ mc.rect(-1e5, -1e5, 2e5, 2e5);
441
+ }
442
+ mc.globalCompositeOperation = mask.mode === 's' ? 'destination-out' : mask.mode === 'i' ? 'destination-in' : 'source-over';
443
+ mc.fill(mask.inv ? 'evenodd' : 'nonzero');
444
+ }
445
+ bc.save();
446
+ bc.setTransform(1, 0, 0, 1, 0, 0);
447
+ bc.globalCompositeOperation = 'destination-in';
448
+ bc.drawImage(mk, 0, 0);
449
+ bc.restore();
450
+ this.release(mk);
451
+ }
452
+ drawLayer(ctx, layer, byInd, f, base) {
453
+ const m = this.layerMatrix(layer, byInd, f);
454
+ const alpha = opacityOf(layer.ks, f);
455
+ if (alpha <= 0)
456
+ return;
457
+ ctx.setTransform(base);
458
+ ctx.globalAlpha *= alpha;
459
+ const lf = (f - (layer.st ?? 0)) / (layer.sr ?? 1);
460
+ switch (layer.ty) {
461
+ case 4: {
462
+ const paints = [];
463
+ collect(layer.shapes ?? [], lf, m, 1, paints, []);
464
+ ctx.setTransform(base);
465
+ paintAll(ctx, paints, lf);
466
+ break;
467
+ }
468
+ case 1: {
469
+ ctx.transform(...m);
470
+ ctx.fillStyle = layer.sc ?? '#000';
471
+ ctx.fillRect(0, 0, layer.sw ?? 0, layer.sh ?? 0);
472
+ break;
473
+ }
474
+ case 2: {
475
+ const img = this.images.get(layer.refId);
476
+ if (img) {
477
+ ctx.transform(...m);
478
+ ctx.drawImage(img, 0, 0);
479
+ }
480
+ break;
481
+ }
482
+ case 0: {
483
+ const asset = this.assets.get(layer.refId);
484
+ if (!asset?.layers)
485
+ break;
486
+ ctx.transform(...m);
487
+ ctx.beginPath();
488
+ ctx.rect(0, 0, layer.w ?? this.w, layer.h ?? this.h);
489
+ ctx.clip();
490
+ const tf = layer.tm ? num(layer.tm, lf) * this.fr : lf;
491
+ this.drawLayers(ctx, asset.layers, tf, layer.w, layer.h);
492
+ break;
493
+ }
494
+ case 5: {
495
+ const v = evalProp(layer.t?.d, lf);
496
+ const doc = v?.t !== undefined && typeof v.t === 'string' ? v : v?.s ?? layer.t?.d?.k?.[0]?.s;
497
+ if (!doc?.t)
498
+ break;
499
+ ctx.transform(...m);
500
+ const font = (this.data.fonts?.list ?? []).find((x) => x.fName === doc.f);
501
+ ctx.font = `${font?.fWeight ?? (/bold/i.test(doc.f ?? '') ? 700 : 400)} ${doc.s ?? 24}px "${font?.fFamily ?? 'Mukta'}", "Baloo 2", sans-serif`;
502
+ ctx.fillStyle = rgba(doc.fc ?? [0, 0, 0], 1);
503
+ ctx.textAlign = ['left', 'right', 'center'][doc.j ?? 0] ?? 'left';
504
+ // Tracking is in thousandths of an em.
505
+ if ('letterSpacing' in ctx)
506
+ ctx.letterSpacing = `${((doc.tr ?? 0) / 1000) * (doc.s ?? 24)}px`;
507
+ const lh = doc.lh ?? (doc.s ?? 24) * 1.2;
508
+ String(doc.t).split(/\r|\n/).forEach((line, i) => ctx.fillText(line, 0, i * lh));
509
+ break;
510
+ }
511
+ default: break;
512
+ }
513
+ }
514
+ }
515
+ const lumaToAlpha = (ctx, w, h, invert) => {
516
+ const img = ctx.getImageData(0, 0, w, h), d = img.data;
517
+ for (let i = 0; i < d.length; i += 4) {
518
+ const l = ((0.299 * d[i] + 0.587 * d[i + 1] + 0.114 * d[i + 2]) / 255) * (d[i + 3] / 255);
519
+ d[i + 3] = Math.round((invert ? 1 - l : l) * 255);
520
+ }
521
+ ctx.putImageData(img, 0, 0);
522
+ };
523
+ //# sourceMappingURL=lottie.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"lottie.js","sourceRoot":"","sources":["../../src/render/lottie.ts"],"names":[],"mappings":"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,CAAC,EAAE,CAAC,GAAG,EAAE,GAAG,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,GAAG,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;IAC1F,MAAM,EAAE,GAAG,CAAC,GAAG,CAAC;QACd,CAAC,CAAC,EAAC,CAAC,EAAE,IAAI,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAC;QAC9R,CAAC,CAAC,EAAC,CAAC,EAAE,IAAI,EAAE,CA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"}
@@ -10,6 +10,7 @@ export declare class NodeHost implements Host {
10
10
  private readers;
11
11
  constructor(baseDir: string);
12
12
  resolve(src: string): string;
13
+ data(src: string): Promise<string>;
13
14
  createCanvas(w: number, h: number): CanvasLike;
14
15
  image(src: string): Promise<Drawable>;
15
16
  videoFrame(layer: VideoLayer, sourceTime: number, w: number, h: number, fps: number): Promise<Drawable>;