sketchmark 2.0.0 → 2.1.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 (132) hide show
  1. package/ANIMATABLE_MATRIX.md +177 -0
  2. package/KERNEL_SPEC.md +412 -0
  3. package/PACKS.md +81 -0
  4. package/PRESETS.md +182 -0
  5. package/README.md +274 -188
  6. package/bin/editor-ui.cjs +2285 -0
  7. package/bin/preview-ui.cjs +74 -0
  8. package/bin/sketchmark.cjs +648 -2008
  9. package/dist/src/animatable.d.ts +21 -0
  10. package/dist/src/animatable.js +439 -0
  11. package/dist/src/builders/index.d.ts +1 -11
  12. package/dist/src/builders/index.js +1 -19
  13. package/dist/src/diagnostics.js +1 -64
  14. package/dist/src/edit.d.ts +27 -0
  15. package/dist/src/edit.js +162 -0
  16. package/dist/src/index.d.ts +4 -13
  17. package/dist/src/index.js +4 -13
  18. package/dist/src/keyframes.d.ts +48 -0
  19. package/dist/src/keyframes.js +182 -0
  20. package/dist/src/motion.d.ts +4 -0
  21. package/dist/src/motion.js +262 -0
  22. package/dist/src/normalize.js +120 -151
  23. package/dist/src/presets/characters.d.ts +15 -0
  24. package/dist/src/presets/characters.js +113 -0
  25. package/dist/src/presets/compose.d.ts +5 -0
  26. package/dist/src/presets/compose.js +80 -0
  27. package/dist/src/presets/effects.d.ts +40 -0
  28. package/dist/src/presets/effects.js +79 -0
  29. package/dist/src/presets/helpers.d.ts +33 -0
  30. package/dist/src/presets/helpers.js +165 -0
  31. package/dist/src/presets/index.d.ts +9 -0
  32. package/dist/src/presets/index.js +48 -0
  33. package/dist/src/presets/motions.d.ts +33 -0
  34. package/dist/src/presets/motions.js +75 -0
  35. package/dist/src/presets/scenes.d.ts +35 -0
  36. package/dist/src/presets/scenes.js +134 -0
  37. package/dist/src/presets/shapes.d.ts +71 -0
  38. package/dist/src/presets/shapes.js +96 -0
  39. package/dist/src/presets/transitions.d.ts +29 -0
  40. package/dist/src/presets/transitions.js +113 -0
  41. package/dist/src/presets/types.d.ts +34 -0
  42. package/dist/src/presets/types.js +2 -0
  43. package/dist/src/render/html.js +1 -4
  44. package/dist/src/render/svg.d.ts +2 -2
  45. package/dist/src/render/svg.js +86 -82
  46. package/dist/src/render/three-html.js +67 -113
  47. package/dist/src/scenes.js +1 -0
  48. package/dist/src/schema.js +218 -280
  49. package/dist/src/shapes/builtins.js +11 -47
  50. package/dist/src/shapes/common.js +12 -11
  51. package/dist/src/shapes/registry.d.ts +0 -1
  52. package/dist/src/shapes/registry.js +0 -4
  53. package/dist/src/shapes/types.d.ts +1 -3
  54. package/dist/src/types.d.ts +57 -288
  55. package/dist/src/utils.d.ts +2 -11
  56. package/dist/src/utils.js +13 -70
  57. package/dist/src/validate.js +321 -275
  58. package/dist/tests/run.js +576 -510
  59. package/examples/1730642890464.jpg +0 -0
  60. package/examples/app-screen.svg +1 -0
  61. package/examples/app-screen.visual.json +503 -0
  62. package/examples/dashboard-table.svg +1 -0
  63. package/examples/dashboard-table.visual.json +708 -0
  64. package/examples/dev-docs.svg +1 -0
  65. package/examples/dev-docs.visual.json +248 -0
  66. package/examples/explainer.mp4 +0 -0
  67. package/examples/explainer.visual.json +1713 -0
  68. package/examples/group-origin-effects-lab-check.svg +1 -0
  69. package/examples/group-origin-effects-lab.visual.json +1880 -0
  70. package/examples/image-clip-radius.visual.json +271 -0
  71. package/examples/make-app-screen.cjs +368 -0
  72. package/examples/make-dashboard-table.cjs +277 -0
  73. package/examples/make-dev-docs.cjs +233 -0
  74. package/examples/make-explainer.cjs +438 -0
  75. package/examples/make-group-origin-effects-lab.cjs +370 -0
  76. package/examples/make-image-clip-radius.cjs +169 -0
  77. package/examples/make-modal-dialog.cjs +355 -0
  78. package/examples/make-origin-effects-lab.cjs +311 -0
  79. package/examples/make-preset-character-motion.cjs +32 -0
  80. package/examples/make-presets-demo.cjs +30 -0
  81. package/examples/make-pricing.cjs +286 -0
  82. package/examples/make-product-demo.cjs +468 -0
  83. package/examples/make-product-hero.cjs +223 -0
  84. package/examples/make-release-notes.cjs +333 -0
  85. package/examples/make-settings-panel.cjs +435 -0
  86. package/examples/make-split-preview.cjs +248 -0
  87. package/examples/make-storyboard.cjs +215 -0
  88. package/examples/make-transcript.cjs +234 -0
  89. package/examples/make-typography-test.cjs +397 -0
  90. package/examples/make-ui-demo-explainer.cjs +1094 -0
  91. package/examples/make-ui-flow.cjs +762 -0
  92. package/examples/make-walkthrough.cjs +815 -0
  93. package/examples/modal-dialog.svg +1 -0
  94. package/examples/modal-dialog.visual.json +239 -0
  95. package/examples/origin-effects-lab-check.svg +1 -0
  96. package/examples/origin-effects-lab.visual.json +1412 -0
  97. package/examples/preset-character-motion.visual.json +949 -0
  98. package/examples/presets-demo.visual.json +787 -0
  99. package/examples/pricing.svg +1 -0
  100. package/examples/pricing.visual.json +652 -0
  101. package/examples/product-demo.mp4 +0 -0
  102. package/examples/product-demo.visual.json +866 -0
  103. package/examples/product-hero.svg +1 -0
  104. package/examples/product-hero.visual.json +242 -0
  105. package/examples/release-notes.svg +1 -0
  106. package/examples/release-notes.visual.json +467 -0
  107. package/examples/settings-panel.svg +1 -0
  108. package/examples/settings-panel.visual.json +501 -0
  109. package/examples/split-preview.svg +1 -0
  110. package/examples/split-preview.visual.json +124 -0
  111. package/examples/storyboard.svg +1 -0
  112. package/examples/storyboard.visual.json +312 -0
  113. package/examples/transcript.svg +1 -0
  114. package/examples/transcript.visual.json +407 -0
  115. package/examples/typography-indent-check.svg +1 -0
  116. package/examples/typography-lineheight-0.svg +1 -0
  117. package/examples/typography-lineheight-2.svg +1 -0
  118. package/examples/typography-test-check.svg +1 -0
  119. package/examples/typography-test.svg +1 -0
  120. package/examples/typography-test.visual.json +757 -0
  121. package/examples/ui-demo-explainer-billing.svg +1 -0
  122. package/examples/ui-demo-explainer-check.svg +1 -0
  123. package/examples/ui-demo-explainer-save.svg +1 -0
  124. package/examples/ui-demo-explainer-toggle.svg +1 -0
  125. package/examples/ui-demo-explainer.mp4 +0 -0
  126. package/examples/ui-demo-explainer.visual.json +2597 -0
  127. package/examples/ui-flow.mp4 +0 -0
  128. package/examples/ui-flow.visual.json +1211 -0
  129. package/examples/walkthrough.mp4 +0 -0
  130. package/examples/walkthrough.visual.json +1372 -0
  131. package/package.json +52 -52
  132. package/schema/visual.schema.json +1086 -930
@@ -0,0 +1,949 @@
1
+ {
2
+ "version": 1,
3
+ "canvas": {
4
+ "width": 960,
5
+ "height": 540,
6
+ "background": "#f8fafc",
7
+ "duration": 4,
8
+ "fps": 30
9
+ },
10
+ "elements": [
11
+ {
12
+ "id": "stage.grid",
13
+ "type": "group",
14
+ "x": 0,
15
+ "y": 0,
16
+ "width": 960,
17
+ "height": 540,
18
+ "children": [
19
+ {
20
+ "id": "stage.grid.bg",
21
+ "type": "path",
22
+ "d": "M 0 0 H 960 V 540 H 0 Z",
23
+ "fill": "#ffffff"
24
+ },
25
+ {
26
+ "id": "stage.grid.v0",
27
+ "type": "path",
28
+ "d": "M 0 0 L 0 540",
29
+ "fill": "none",
30
+ "stroke": "#e2e8f0",
31
+ "strokeWidth": 1
32
+ },
33
+ {
34
+ "id": "stage.grid.v48",
35
+ "type": "path",
36
+ "d": "M 48 0 L 48 540",
37
+ "fill": "none",
38
+ "stroke": "#e2e8f0",
39
+ "strokeWidth": 1
40
+ },
41
+ {
42
+ "id": "stage.grid.v96",
43
+ "type": "path",
44
+ "d": "M 96 0 L 96 540",
45
+ "fill": "none",
46
+ "stroke": "#e2e8f0",
47
+ "strokeWidth": 1
48
+ },
49
+ {
50
+ "id": "stage.grid.v144",
51
+ "type": "path",
52
+ "d": "M 144 0 L 144 540",
53
+ "fill": "none",
54
+ "stroke": "#e2e8f0",
55
+ "strokeWidth": 1
56
+ },
57
+ {
58
+ "id": "stage.grid.v192",
59
+ "type": "path",
60
+ "d": "M 192 0 L 192 540",
61
+ "fill": "none",
62
+ "stroke": "#e2e8f0",
63
+ "strokeWidth": 1
64
+ },
65
+ {
66
+ "id": "stage.grid.v240",
67
+ "type": "path",
68
+ "d": "M 240 0 L 240 540",
69
+ "fill": "none",
70
+ "stroke": "#e2e8f0",
71
+ "strokeWidth": 1
72
+ },
73
+ {
74
+ "id": "stage.grid.v288",
75
+ "type": "path",
76
+ "d": "M 288 0 L 288 540",
77
+ "fill": "none",
78
+ "stroke": "#e2e8f0",
79
+ "strokeWidth": 1
80
+ },
81
+ {
82
+ "id": "stage.grid.v336",
83
+ "type": "path",
84
+ "d": "M 336 0 L 336 540",
85
+ "fill": "none",
86
+ "stroke": "#e2e8f0",
87
+ "strokeWidth": 1
88
+ },
89
+ {
90
+ "id": "stage.grid.v384",
91
+ "type": "path",
92
+ "d": "M 384 0 L 384 540",
93
+ "fill": "none",
94
+ "stroke": "#e2e8f0",
95
+ "strokeWidth": 1
96
+ },
97
+ {
98
+ "id": "stage.grid.v432",
99
+ "type": "path",
100
+ "d": "M 432 0 L 432 540",
101
+ "fill": "none",
102
+ "stroke": "#e2e8f0",
103
+ "strokeWidth": 1
104
+ },
105
+ {
106
+ "id": "stage.grid.v480",
107
+ "type": "path",
108
+ "d": "M 480 0 L 480 540",
109
+ "fill": "none",
110
+ "stroke": "#e2e8f0",
111
+ "strokeWidth": 1
112
+ },
113
+ {
114
+ "id": "stage.grid.v528",
115
+ "type": "path",
116
+ "d": "M 528 0 L 528 540",
117
+ "fill": "none",
118
+ "stroke": "#e2e8f0",
119
+ "strokeWidth": 1
120
+ },
121
+ {
122
+ "id": "stage.grid.v576",
123
+ "type": "path",
124
+ "d": "M 576 0 L 576 540",
125
+ "fill": "none",
126
+ "stroke": "#e2e8f0",
127
+ "strokeWidth": 1
128
+ },
129
+ {
130
+ "id": "stage.grid.v624",
131
+ "type": "path",
132
+ "d": "M 624 0 L 624 540",
133
+ "fill": "none",
134
+ "stroke": "#e2e8f0",
135
+ "strokeWidth": 1
136
+ },
137
+ {
138
+ "id": "stage.grid.v672",
139
+ "type": "path",
140
+ "d": "M 672 0 L 672 540",
141
+ "fill": "none",
142
+ "stroke": "#e2e8f0",
143
+ "strokeWidth": 1
144
+ },
145
+ {
146
+ "id": "stage.grid.v720",
147
+ "type": "path",
148
+ "d": "M 720 0 L 720 540",
149
+ "fill": "none",
150
+ "stroke": "#e2e8f0",
151
+ "strokeWidth": 1
152
+ },
153
+ {
154
+ "id": "stage.grid.v768",
155
+ "type": "path",
156
+ "d": "M 768 0 L 768 540",
157
+ "fill": "none",
158
+ "stroke": "#e2e8f0",
159
+ "strokeWidth": 1
160
+ },
161
+ {
162
+ "id": "stage.grid.v816",
163
+ "type": "path",
164
+ "d": "M 816 0 L 816 540",
165
+ "fill": "none",
166
+ "stroke": "#e2e8f0",
167
+ "strokeWidth": 1
168
+ },
169
+ {
170
+ "id": "stage.grid.v864",
171
+ "type": "path",
172
+ "d": "M 864 0 L 864 540",
173
+ "fill": "none",
174
+ "stroke": "#e2e8f0",
175
+ "strokeWidth": 1
176
+ },
177
+ {
178
+ "id": "stage.grid.v912",
179
+ "type": "path",
180
+ "d": "M 912 0 L 912 540",
181
+ "fill": "none",
182
+ "stroke": "#e2e8f0",
183
+ "strokeWidth": 1
184
+ },
185
+ {
186
+ "id": "stage.grid.v960",
187
+ "type": "path",
188
+ "d": "M 960 0 L 960 540",
189
+ "fill": "none",
190
+ "stroke": "#e2e8f0",
191
+ "strokeWidth": 1
192
+ },
193
+ {
194
+ "id": "stage.grid.h0",
195
+ "type": "path",
196
+ "d": "M 0 0 L 960 0",
197
+ "fill": "none",
198
+ "stroke": "#e2e8f0",
199
+ "strokeWidth": 1
200
+ },
201
+ {
202
+ "id": "stage.grid.h48",
203
+ "type": "path",
204
+ "d": "M 0 48 L 960 48",
205
+ "fill": "none",
206
+ "stroke": "#e2e8f0",
207
+ "strokeWidth": 1
208
+ },
209
+ {
210
+ "id": "stage.grid.h96",
211
+ "type": "path",
212
+ "d": "M 0 96 L 960 96",
213
+ "fill": "none",
214
+ "stroke": "#e2e8f0",
215
+ "strokeWidth": 1
216
+ },
217
+ {
218
+ "id": "stage.grid.h144",
219
+ "type": "path",
220
+ "d": "M 0 144 L 960 144",
221
+ "fill": "none",
222
+ "stroke": "#e2e8f0",
223
+ "strokeWidth": 1
224
+ },
225
+ {
226
+ "id": "stage.grid.h192",
227
+ "type": "path",
228
+ "d": "M 0 192 L 960 192",
229
+ "fill": "none",
230
+ "stroke": "#e2e8f0",
231
+ "strokeWidth": 1
232
+ },
233
+ {
234
+ "id": "stage.grid.h240",
235
+ "type": "path",
236
+ "d": "M 0 240 L 960 240",
237
+ "fill": "none",
238
+ "stroke": "#e2e8f0",
239
+ "strokeWidth": 1
240
+ },
241
+ {
242
+ "id": "stage.grid.h288",
243
+ "type": "path",
244
+ "d": "M 0 288 L 960 288",
245
+ "fill": "none",
246
+ "stroke": "#e2e8f0",
247
+ "strokeWidth": 1
248
+ },
249
+ {
250
+ "id": "stage.grid.h336",
251
+ "type": "path",
252
+ "d": "M 0 336 L 960 336",
253
+ "fill": "none",
254
+ "stroke": "#e2e8f0",
255
+ "strokeWidth": 1
256
+ },
257
+ {
258
+ "id": "stage.grid.h384",
259
+ "type": "path",
260
+ "d": "M 0 384 L 960 384",
261
+ "fill": "none",
262
+ "stroke": "#e2e8f0",
263
+ "strokeWidth": 1
264
+ },
265
+ {
266
+ "id": "stage.grid.h432",
267
+ "type": "path",
268
+ "d": "M 0 432 L 960 432",
269
+ "fill": "none",
270
+ "stroke": "#e2e8f0",
271
+ "strokeWidth": 1
272
+ },
273
+ {
274
+ "id": "stage.grid.h480",
275
+ "type": "path",
276
+ "d": "M 0 480 L 960 480",
277
+ "fill": "none",
278
+ "stroke": "#e2e8f0",
279
+ "strokeWidth": 1
280
+ },
281
+ {
282
+ "id": "stage.grid.h528",
283
+ "type": "path",
284
+ "d": "M 0 528 L 960 528",
285
+ "fill": "none",
286
+ "stroke": "#e2e8f0",
287
+ "strokeWidth": 1
288
+ }
289
+ ]
290
+ },
291
+ {
292
+ "id": "stage.ground",
293
+ "type": "path",
294
+ "d": "M 80 430 L 880 430",
295
+ "fill": "none",
296
+ "stroke": "#cbd5e1",
297
+ "strokeWidth": 8,
298
+ "strokeCap": "round"
299
+ },
300
+ {
301
+ "id": "hero",
302
+ "type": "group",
303
+ "x": 150,
304
+ "y": 235,
305
+ "width": 95,
306
+ "height": 190,
307
+ "children": [
308
+ {
309
+ "id": "hero.head",
310
+ "type": "path",
311
+ "d": "M 72.2 24.8 A 22.8 22.8 0 1 0 117.8 24.8 A 22.8 22.8 0 1 0 72.2 24.8 Z",
312
+ "fill": "#ffffff",
313
+ "stroke": "#111827",
314
+ "strokeWidth": 5,
315
+ "timeline": {
316
+ "tracks": {
317
+ "opacity": {
318
+ "keyframes": [
319
+ {
320
+ "time": 0.1,
321
+ "value": 0,
322
+ "out": {
323
+ "type": "cubicBezier",
324
+ "x1": 0,
325
+ "y1": 0,
326
+ "x2": 0.58,
327
+ "y2": 1
328
+ }
329
+ },
330
+ {
331
+ "time": 0.44999999999999996,
332
+ "value": 1
333
+ }
334
+ ]
335
+ }
336
+ }
337
+ }
338
+ },
339
+ {
340
+ "id": "hero.body",
341
+ "type": "path",
342
+ "d": "M 95 49.6 L 91.2 110.19999999999999",
343
+ "fill": "none",
344
+ "stroke": "#111827",
345
+ "strokeWidth": 7,
346
+ "timeline": {
347
+ "tracks": {
348
+ "opacity": {
349
+ "keyframes": [
350
+ {
351
+ "time": 0.18,
352
+ "value": 0,
353
+ "out": {
354
+ "type": "cubicBezier",
355
+ "x1": 0,
356
+ "y1": 0,
357
+ "x2": 0.58,
358
+ "y2": 1
359
+ }
360
+ },
361
+ {
362
+ "time": 0.53,
363
+ "value": 1
364
+ }
365
+ ]
366
+ }
367
+ }
368
+ }
369
+ },
370
+ {
371
+ "id": "hero.leftArm",
372
+ "type": "path",
373
+ "d": "M 93.1 47.5 L 51.300000000000004 91.2",
374
+ "fill": "none",
375
+ "stroke": "#111827",
376
+ "strokeWidth": 6,
377
+ "timeline": {
378
+ "tracks": {
379
+ "opacity": {
380
+ "keyframes": [
381
+ {
382
+ "time": 0.26,
383
+ "value": 0,
384
+ "out": {
385
+ "type": "cubicBezier",
386
+ "x1": 0,
387
+ "y1": 0,
388
+ "x2": 0.58,
389
+ "y2": 1
390
+ }
391
+ },
392
+ {
393
+ "time": 0.61,
394
+ "value": 1
395
+ }
396
+ ]
397
+ }
398
+ }
399
+ }
400
+ },
401
+ {
402
+ "id": "hero.rightArm",
403
+ "type": "path",
404
+ "d": "M 95 47.5 L 136.79999999999998 91.2",
405
+ "fill": "none",
406
+ "stroke": "#64748b",
407
+ "strokeWidth": 6,
408
+ "timeline": {
409
+ "tracks": {
410
+ "opacity": {
411
+ "keyframes": [
412
+ {
413
+ "time": 0.33999999999999997,
414
+ "value": 0,
415
+ "out": {
416
+ "type": "cubicBezier",
417
+ "x1": 0,
418
+ "y1": 0,
419
+ "x2": 0.58,
420
+ "y2": 1
421
+ }
422
+ },
423
+ {
424
+ "time": 0.69,
425
+ "value": 1
426
+ }
427
+ ]
428
+ }
429
+ }
430
+ }
431
+ },
432
+ {
433
+ "id": "hero.leftLeg",
434
+ "type": "path",
435
+ "d": "M 91.2 110.19999999999999 L 57 182.4",
436
+ "fill": "none",
437
+ "stroke": "#64748b",
438
+ "strokeWidth": 7
439
+ },
440
+ {
441
+ "id": "hero.rightLeg",
442
+ "type": "path",
443
+ "d": "M 91.2 110.19999999999999 L 129.20000000000002 182.4",
444
+ "fill": "none",
445
+ "stroke": "#111827",
446
+ "strokeWidth": 7
447
+ }
448
+ ],
449
+ "timeline": {
450
+ "tracks": {
451
+ "effects.shadow.dx": {
452
+ "keyframes": [
453
+ {
454
+ "time": 0,
455
+ "value": 0
456
+ }
457
+ ]
458
+ },
459
+ "effects.shadow.dy": {
460
+ "keyframes": [
461
+ {
462
+ "time": 0,
463
+ "value": 8
464
+ }
465
+ ]
466
+ },
467
+ "effects.shadow.blur": {
468
+ "keyframes": [
469
+ {
470
+ "time": 0,
471
+ "value": 18
472
+ }
473
+ ]
474
+ },
475
+ "effects.shadow.color": {
476
+ "keyframes": [
477
+ {
478
+ "time": 0,
479
+ "value": "#000000"
480
+ }
481
+ ]
482
+ },
483
+ "effects.shadow.opacity": {
484
+ "keyframes": [
485
+ {
486
+ "time": 0,
487
+ "value": 0.16
488
+ }
489
+ ]
490
+ },
491
+ "position": {
492
+ "keyframes": [
493
+ {
494
+ "time": 0,
495
+ "value": [
496
+ 80,
497
+ 235
498
+ ],
499
+ "out": {
500
+ "type": "cubicBezier",
501
+ "x1": 0,
502
+ "y1": 0,
503
+ "x2": 0.58,
504
+ "y2": 1
505
+ }
506
+ },
507
+ {
508
+ "time": 0.7,
509
+ "value": [
510
+ 150,
511
+ 235
512
+ ]
513
+ }
514
+ ]
515
+ }
516
+ }
517
+ }
518
+ },
519
+ {
520
+ "id": "dog",
521
+ "type": "group",
522
+ "x": 470,
523
+ "y": 335,
524
+ "width": 190,
525
+ "height": 100,
526
+ "children": [
527
+ {
528
+ "id": "dog.body",
529
+ "type": "path",
530
+ "d": "M 48.199999999999996 32 H 115.19999999999999 Q 129.2 32 129.2 46 V 46 Q 129.2 60 115.19999999999999 60 H 48.199999999999996 Q 34.199999999999996 60 34.199999999999996 46 V 46 Q 34.199999999999996 32 48.199999999999996 32 Z",
531
+ "fill": "#fbbf24",
532
+ "stroke": "#111827",
533
+ "strokeWidth": 4
534
+ },
535
+ {
536
+ "id": "dog.head",
537
+ "type": "path",
538
+ "d": "M 117.80000000000001 35 A 30.400000000000002 18 0 1 0 178.60000000000002 35 A 30.400000000000002 18 0 1 0 117.80000000000001 35 Z",
539
+ "fill": "#fbbf24",
540
+ "stroke": "#111827",
541
+ "strokeWidth": 4
542
+ },
543
+ {
544
+ "id": "dog.ear",
545
+ "type": "path",
546
+ "d": "M 133 22 L 121.60000000000001 2 L 155.79999999999998 20 Z",
547
+ "fill": "#92400e",
548
+ "stroke": "#111827",
549
+ "strokeWidth": 3
550
+ },
551
+ {
552
+ "id": "dog.tail",
553
+ "type": "path",
554
+ "d": "M 34.199999999999996 38 Q 7.6000000000000005 22 15.200000000000001 12",
555
+ "fill": "none",
556
+ "stroke": "#111827",
557
+ "strokeWidth": 5
558
+ },
559
+ {
560
+ "id": "dog.frontLeg",
561
+ "type": "path",
562
+ "d": "M 110.19999999999999 57.99999999999999 L 119.7 95",
563
+ "fill": "none",
564
+ "stroke": "#111827",
565
+ "strokeWidth": 5
566
+ },
567
+ {
568
+ "id": "dog.backLeg",
569
+ "type": "path",
570
+ "d": "M 57 57.99999999999999 L 45.6 95",
571
+ "fill": "none",
572
+ "stroke": "#111827",
573
+ "strokeWidth": 5
574
+ },
575
+ {
576
+ "id": "dog.eye",
577
+ "type": "path",
578
+ "d": "M 156.6 32 A 3 3 0 1 0 162.6 32 A 3 3 0 1 0 156.6 32 Z",
579
+ "fill": "#111827"
580
+ }
581
+ ],
582
+ "timeline": {
583
+ "tracks": {
584
+ "effects.shadow.dx": {
585
+ "keyframes": [
586
+ {
587
+ "time": 0,
588
+ "value": 0
589
+ }
590
+ ]
591
+ },
592
+ "effects.shadow.dy": {
593
+ "keyframes": [
594
+ {
595
+ "time": 0,
596
+ "value": 7
597
+ }
598
+ ]
599
+ },
600
+ "effects.shadow.blur": {
601
+ "keyframes": [
602
+ {
603
+ "time": 0,
604
+ "value": 16
605
+ }
606
+ ]
607
+ },
608
+ "effects.shadow.color": {
609
+ "keyframes": [
610
+ {
611
+ "time": 0,
612
+ "value": "#000000"
613
+ }
614
+ ]
615
+ },
616
+ "effects.shadow.opacity": {
617
+ "keyframes": [
618
+ {
619
+ "time": 0,
620
+ "value": 0.14
621
+ }
622
+ ]
623
+ },
624
+ "position": {
625
+ "keyframes": [
626
+ {
627
+ "time": 0.4,
628
+ "value": [
629
+ 470,
630
+ 335
631
+ ],
632
+ "out": {
633
+ "type": "cubicBezier",
634
+ "x1": 0.42,
635
+ "y1": 0,
636
+ "x2": 0.58,
637
+ "y2": 1
638
+ }
639
+ },
640
+ {
641
+ "time": 1.1,
642
+ "value": [
643
+ 470,
644
+ 323
645
+ ],
646
+ "out": {
647
+ "type": "cubicBezier",
648
+ "x1": 0.42,
649
+ "y1": 0,
650
+ "x2": 0.58,
651
+ "y2": 1
652
+ }
653
+ },
654
+ {
655
+ "time": 1.7999999999999998,
656
+ "value": [
657
+ 470,
658
+ 335
659
+ ]
660
+ }
661
+ ]
662
+ }
663
+ }
664
+ }
665
+ },
666
+ {
667
+ "id": "spider",
668
+ "type": "group",
669
+ "x": 730,
670
+ "y": 330,
671
+ "width": 130,
672
+ "height": 130,
673
+ "children": [
674
+ {
675
+ "id": "spider.body",
676
+ "type": "path",
677
+ "d": "M 41.6 62.4 A 23.4 20.8 0 1 0 88.4 62.4 A 23.4 20.8 0 1 0 41.6 62.4 Z",
678
+ "fill": "#334155",
679
+ "stroke": "#111827",
680
+ "strokeWidth": 4
681
+ },
682
+ {
683
+ "id": "spider.head",
684
+ "type": "path",
685
+ "d": "M 75.4 58.5 A 13 13 0 1 0 101.4 58.5 A 13 13 0 1 0 75.4 58.5 Z",
686
+ "fill": "#334155",
687
+ "stroke": "#111827",
688
+ "strokeWidth": 4
689
+ },
690
+ {
691
+ "id": "spider.eyeLeft",
692
+ "type": "path",
693
+ "d": "M 88.5 54.6 A 2.5 2.5 0 1 0 93.5 54.6 A 2.5 2.5 0 1 0 88.5 54.6 Z",
694
+ "fill": "#ffffff"
695
+ },
696
+ {
697
+ "id": "spider.eyeRight",
698
+ "type": "path",
699
+ "d": "M 95 55.9 A 2.5 2.5 0 1 0 100 55.9 A 2.5 2.5 0 1 0 95 55.9 Z",
700
+ "fill": "#ffffff"
701
+ },
702
+ {
703
+ "id": "spider.leftLeg1",
704
+ "type": "path",
705
+ "d": "M 49.4 42.9 L 22.1 32.5 L 10.4 45.5",
706
+ "fill": "none",
707
+ "stroke": "#111827",
708
+ "strokeWidth": 4
709
+ },
710
+ {
711
+ "id": "spider.rightLeg1",
712
+ "type": "path",
713
+ "d": "M 80.6 42.9 L 110.5 32.5 L 122.19999999999999 45.5",
714
+ "fill": "none",
715
+ "stroke": "#111827",
716
+ "strokeWidth": 4
717
+ },
718
+ {
719
+ "id": "spider.leftLeg2",
720
+ "type": "path",
721
+ "d": "M 49.4 53.300000000000004 L 22.1 42.900000000000006 L 10.4 55.900000000000006",
722
+ "fill": "none",
723
+ "stroke": "#111827",
724
+ "strokeWidth": 4
725
+ },
726
+ {
727
+ "id": "spider.rightLeg2",
728
+ "type": "path",
729
+ "d": "M 80.6 53.300000000000004 L 110.5 42.900000000000006 L 122.19999999999999 55.900000000000006",
730
+ "fill": "none",
731
+ "stroke": "#111827",
732
+ "strokeWidth": 4
733
+ },
734
+ {
735
+ "id": "spider.leftLeg3",
736
+ "type": "path",
737
+ "d": "M 49.4 63.699999999999996 L 22.1 53.3 L 10.4 66.3",
738
+ "fill": "none",
739
+ "stroke": "#111827",
740
+ "strokeWidth": 4
741
+ },
742
+ {
743
+ "id": "spider.rightLeg3",
744
+ "type": "path",
745
+ "d": "M 80.6 63.699999999999996 L 110.5 53.3 L 122.19999999999999 66.3",
746
+ "fill": "none",
747
+ "stroke": "#111827",
748
+ "strokeWidth": 4
749
+ },
750
+ {
751
+ "id": "spider.leftLeg4",
752
+ "type": "path",
753
+ "d": "M 49.4 74.10000000000001 L 22.1 63.70000000000001 L 10.4 76.7",
754
+ "fill": "none",
755
+ "stroke": "#111827",
756
+ "strokeWidth": 4
757
+ },
758
+ {
759
+ "id": "spider.rightLeg4",
760
+ "type": "path",
761
+ "d": "M 80.6 74.10000000000001 L 110.5 63.70000000000001 L 122.19999999999999 76.7",
762
+ "fill": "none",
763
+ "stroke": "#111827",
764
+ "strokeWidth": 4
765
+ }
766
+ ],
767
+ "timeline": {
768
+ "tracks": {
769
+ "effects.shadow.dx": {
770
+ "keyframes": [
771
+ {
772
+ "time": 0,
773
+ "value": 0
774
+ }
775
+ ]
776
+ },
777
+ "effects.shadow.dy": {
778
+ "keyframes": [
779
+ {
780
+ "time": 0,
781
+ "value": 0
782
+ }
783
+ ]
784
+ },
785
+ "effects.shadow.blur": {
786
+ "keyframes": [
787
+ {
788
+ "time": 0,
789
+ "value": 12
790
+ }
791
+ ]
792
+ },
793
+ "effects.shadow.color": {
794
+ "keyframes": [
795
+ {
796
+ "time": 0,
797
+ "value": "#60a5fa"
798
+ }
799
+ ]
800
+ },
801
+ "effects.shadow.opacity": {
802
+ "keyframes": [
803
+ {
804
+ "time": 0,
805
+ "value": 0.22
806
+ }
807
+ ]
808
+ },
809
+ "x": {
810
+ "keyframes": [
811
+ {
812
+ "time": 1.1,
813
+ "value": 0,
814
+ "out": {
815
+ "type": "graph",
816
+ "points": [
817
+ [
818
+ 0,
819
+ 0
820
+ ],
821
+ [
822
+ 1,
823
+ 1
824
+ ]
825
+ ]
826
+ }
827
+ },
828
+ {
829
+ "time": 1.3,
830
+ "value": -10,
831
+ "out": {
832
+ "type": "graph",
833
+ "points": [
834
+ [
835
+ 0,
836
+ 0
837
+ ],
838
+ [
839
+ 1,
840
+ 1
841
+ ]
842
+ ]
843
+ }
844
+ },
845
+ {
846
+ "time": 1.5,
847
+ "value": 10,
848
+ "out": {
849
+ "type": "graph",
850
+ "points": [
851
+ [
852
+ 0,
853
+ 0
854
+ ],
855
+ [
856
+ 1,
857
+ 1
858
+ ]
859
+ ]
860
+ }
861
+ },
862
+ {
863
+ "time": 1.7000000000000002,
864
+ "value": -5,
865
+ "out": {
866
+ "type": "graph",
867
+ "points": [
868
+ [
869
+ 0,
870
+ 0
871
+ ],
872
+ [
873
+ 1,
874
+ 1
875
+ ]
876
+ ]
877
+ }
878
+ },
879
+ {
880
+ "time": 1.9000000000000001,
881
+ "value": 0
882
+ }
883
+ ]
884
+ }
885
+ }
886
+ }
887
+ },
888
+ {
889
+ "id": "caption",
890
+ "type": "group",
891
+ "x": 0,
892
+ "y": 0,
893
+ "width": 400,
894
+ "height": 90,
895
+ "children": [
896
+ {
897
+ "id": "caption.bubble",
898
+ "type": "path",
899
+ "d": "M 294 84 H 666 Q 680 84 680 98 V 160 Q 680 174 666 174 H 294 Q 280 174 280 160 V 98 Q 280 84 294 84 Z",
900
+ "fill": "#ffffff",
901
+ "stroke": "#94a3b8",
902
+ "strokeWidth": 2
903
+ },
904
+ {
905
+ "id": "caption.tail",
906
+ "type": "path",
907
+ "d": "M 380 172 L 380 198 L 432 172 Z",
908
+ "fill": "#ffffff",
909
+ "stroke": "#94a3b8",
910
+ "strokeWidth": 2
911
+ },
912
+ {
913
+ "id": "caption.text",
914
+ "type": "text",
915
+ "text": "Characters are just kernel groups",
916
+ "x": 480,
917
+ "y": 129,
918
+ "align": "center",
919
+ "valign": "middle",
920
+ "fontSize": 18,
921
+ "fill": "#111827"
922
+ }
923
+ ],
924
+ "timeline": {
925
+ "tracks": {
926
+ "opacity": {
927
+ "keyframes": [
928
+ {
929
+ "time": 0.45,
930
+ "value": 0,
931
+ "out": {
932
+ "type": "cubicBezier",
933
+ "x1": 0,
934
+ "y1": 0,
935
+ "x2": 0.58,
936
+ "y2": 1
937
+ }
938
+ },
939
+ {
940
+ "time": 0.9,
941
+ "value": 1
942
+ }
943
+ ]
944
+ }
945
+ }
946
+ }
947
+ }
948
+ ]
949
+ }