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,1412 @@
1
+ {
2
+ "version": 1,
3
+ "canvas": {
4
+ "width": 1280,
5
+ "height": 760,
6
+ "background": "#07111f",
7
+ "duration": 6,
8
+ "fps": 30
9
+ },
10
+ "elements": [
11
+ {
12
+ "id": "lab_title",
13
+ "type": "text",
14
+ "x": 70,
15
+ "y": 52,
16
+ "text": "Origin Transform Lab",
17
+ "fontSize": 38,
18
+ "fontFamily": "Roboto, Arial, sans-serif",
19
+ "weight": 700,
20
+ "fill": "#f8fafc"
21
+ },
22
+ {
23
+ "id": "lab_body",
24
+ "type": "text",
25
+ "x": 70,
26
+ "y": 96,
27
+ "text": "Same rounded rectangle, animated as a group. Only the origin changes.",
28
+ "fontSize": 16,
29
+ "fontFamily": "Roboto, Arial, sans-serif",
30
+ "weight": 400,
31
+ "fill": "#94a3b8"
32
+ },
33
+ {
34
+ "id": "scale_row_label",
35
+ "type": "text",
36
+ "x": 70,
37
+ "y": 112,
38
+ "text": "Scale tests",
39
+ "fontSize": 18,
40
+ "fontFamily": "Roboto, Arial, sans-serif",
41
+ "weight": 700,
42
+ "fill": "#7dd3fc",
43
+ "timeline": {
44
+ "tracks": {
45
+ "position": {
46
+ "keyframes": [
47
+ {
48
+ "time": 0,
49
+ "value": [
50
+ 70,
51
+ 122
52
+ ],
53
+ "out": {
54
+ "type": "graph",
55
+ "points": [
56
+ [
57
+ 0,
58
+ 0
59
+ ],
60
+ [
61
+ 1,
62
+ 1
63
+ ]
64
+ ]
65
+ }
66
+ }
67
+ ]
68
+ }
69
+ }
70
+ }
71
+ },
72
+ {
73
+ "id": "rotate_row_label",
74
+ "type": "text",
75
+ "x": 70,
76
+ "y": 397,
77
+ "text": "Rotation tests",
78
+ "fontSize": 18,
79
+ "fontFamily": "Roboto, Arial, sans-serif",
80
+ "weight": 700,
81
+ "fill": "#7dd3fc"
82
+ },
83
+ {
84
+ "id": "scale_top_left_panel",
85
+ "type": "path",
86
+ "d": "M 92 150 L 318 150 Q 340 150 340 172 L 340 368 Q 340 390 318 390 L 92 390 Q 70 390 70 368 L 70 172 Q 70 150 92 150 Z",
87
+ "fill": "#0d1a2e",
88
+ "stroke": "#193252",
89
+ "strokeWidth": 1.5
90
+ },
91
+ {
92
+ "id": "scale_top_left_title",
93
+ "type": "text",
94
+ "x": 90,
95
+ "y": 168,
96
+ "text": "Top-left origin",
97
+ "fontSize": 16,
98
+ "fontFamily": "Roboto, Arial, sans-serif",
99
+ "weight": 700,
100
+ "fill": "#f8fafc"
101
+ },
102
+ {
103
+ "id": "scale_top_left_note",
104
+ "type": "text",
105
+ "x": 90,
106
+ "y": 192,
107
+ "text": "[0, 0]",
108
+ "fontSize": 12,
109
+ "fontFamily": "Roboto, Arial, sans-serif",
110
+ "weight": 500,
111
+ "fill": "#94a3b8"
112
+ },
113
+ {
114
+ "id": "scale_top_left_guide_h",
115
+ "type": "path",
116
+ "d": "M 90 298 L 320 298",
117
+ "fill": "none",
118
+ "stroke": "#173054",
119
+ "strokeWidth": 1,
120
+ "dashArray": [
121
+ 6,
122
+ 6
123
+ ]
124
+ },
125
+ {
126
+ "id": "scale_top_left_guide_v",
127
+ "type": "path",
128
+ "d": "M 208 218 L 208 370",
129
+ "fill": "none",
130
+ "stroke": "#173054",
131
+ "strokeWidth": 1,
132
+ "dashArray": [
133
+ 6,
134
+ 6
135
+ ]
136
+ },
137
+ {
138
+ "id": "scale_top_left_origin",
139
+ "type": "group",
140
+ "x": 112,
141
+ "y": 232,
142
+ "children": [
143
+ {
144
+ "id": "scale_top_left_origin_cross_h",
145
+ "type": "path",
146
+ "d": "M 0 16 L 32 16",
147
+ "fill": "none",
148
+ "stroke": "#fde047",
149
+ "strokeWidth": 2,
150
+ "strokeCap": "round"
151
+ },
152
+ {
153
+ "id": "scale_top_left_origin_cross_v",
154
+ "type": "path",
155
+ "d": "M 16 0 L 16 32",
156
+ "fill": "none",
157
+ "stroke": "#fde047",
158
+ "strokeWidth": 2,
159
+ "strokeCap": "round"
160
+ },
161
+ {
162
+ "id": "scale_top_left_origin_dot",
163
+ "type": "path",
164
+ "d": "M 10 16 a 6 6 0 1 0 12 0 a 6 6 0 1 0 -12 0",
165
+ "fill": "#fde047",
166
+ "stroke": "#0f172a",
167
+ "strokeWidth": 1.5
168
+ }
169
+ ]
170
+ },
171
+ {
172
+ "id": "scale_top_left_group",
173
+ "type": "group",
174
+ "x": 128,
175
+ "y": 248,
176
+ "width": 160,
177
+ "height": 100,
178
+ "origin": [
179
+ 128,
180
+ 248
181
+ ],
182
+ "children": [
183
+ {
184
+ "id": "scale_top_left_rect",
185
+ "type": "path",
186
+ "d": "M 18 0 L 142 0 Q 160 0 160 18 L 160 82 Q 160 100 142 100 L 18 100 Q 0 100 0 82 L 0 18 Q 0 0 18 0 Z",
187
+ "fill": "#818cf8",
188
+ "stroke": "#dbeafe",
189
+ "strokeWidth": 2
190
+ }
191
+ ],
192
+ "timeline": {
193
+ "tracks": {
194
+ "scale": {
195
+ "keyframes": [
196
+ {
197
+ "time": 0,
198
+ "value": 1,
199
+ "out": {
200
+ "type": "cubicBezier",
201
+ "x1": 0,
202
+ "y1": 0,
203
+ "x2": 0.2,
204
+ "y2": 1
205
+ }
206
+ },
207
+ {
208
+ "time": 1.3,
209
+ "value": 1.45,
210
+ "out": {
211
+ "type": "cubicBezier",
212
+ "x1": 0.25,
213
+ "y1": 0.1,
214
+ "x2": 0.25,
215
+ "y2": 1
216
+ }
217
+ },
218
+ {
219
+ "time": 2.6,
220
+ "value": 0.72,
221
+ "out": {
222
+ "type": "cubicBezier",
223
+ "x1": 0.25,
224
+ "y1": 0.1,
225
+ "x2": 0.25,
226
+ "y2": 1
227
+ }
228
+ },
229
+ {
230
+ "time": 4,
231
+ "value": 1.18,
232
+ "out": {
233
+ "type": "cubicBezier",
234
+ "x1": 0.25,
235
+ "y1": 0.1,
236
+ "x2": 0.25,
237
+ "y2": 1
238
+ }
239
+ },
240
+ {
241
+ "time": 5.4,
242
+ "value": 1
243
+ }
244
+ ]
245
+ }
246
+ }
247
+ }
248
+ },
249
+ {
250
+ "id": "rotate_top_left_panel",
251
+ "type": "path",
252
+ "d": "M 92 435 L 318 435 Q 340 435 340 457 L 340 653 Q 340 675 318 675 L 92 675 Q 70 675 70 653 L 70 457 Q 70 435 92 435 Z",
253
+ "fill": "#0d1a2e",
254
+ "stroke": "#193252",
255
+ "strokeWidth": 1.5
256
+ },
257
+ {
258
+ "id": "rotate_top_left_title",
259
+ "type": "text",
260
+ "x": 90,
261
+ "y": 453,
262
+ "text": "Top-left origin",
263
+ "fontSize": 16,
264
+ "fontFamily": "Roboto, Arial, sans-serif",
265
+ "weight": 700,
266
+ "fill": "#f8fafc"
267
+ },
268
+ {
269
+ "id": "rotate_top_left_note",
270
+ "type": "text",
271
+ "x": 90,
272
+ "y": 477,
273
+ "text": "[0, 0]",
274
+ "fontSize": 12,
275
+ "fontFamily": "Roboto, Arial, sans-serif",
276
+ "weight": 500,
277
+ "fill": "#94a3b8"
278
+ },
279
+ {
280
+ "id": "rotate_top_left_guide_h",
281
+ "type": "path",
282
+ "d": "M 90 583 L 320 583",
283
+ "fill": "none",
284
+ "stroke": "#173054",
285
+ "strokeWidth": 1,
286
+ "dashArray": [
287
+ 6,
288
+ 6
289
+ ]
290
+ },
291
+ {
292
+ "id": "rotate_top_left_guide_v",
293
+ "type": "path",
294
+ "d": "M 208 503 L 208 655",
295
+ "fill": "none",
296
+ "stroke": "#173054",
297
+ "strokeWidth": 1,
298
+ "dashArray": [
299
+ 6,
300
+ 6
301
+ ]
302
+ },
303
+ {
304
+ "id": "rotate_top_left_origin",
305
+ "type": "group",
306
+ "x": 112,
307
+ "y": 517,
308
+ "children": [
309
+ {
310
+ "id": "rotate_top_left_origin_cross_h",
311
+ "type": "path",
312
+ "d": "M 0 16 L 32 16",
313
+ "fill": "none",
314
+ "stroke": "#fde047",
315
+ "strokeWidth": 2,
316
+ "strokeCap": "round"
317
+ },
318
+ {
319
+ "id": "rotate_top_left_origin_cross_v",
320
+ "type": "path",
321
+ "d": "M 16 0 L 16 32",
322
+ "fill": "none",
323
+ "stroke": "#fde047",
324
+ "strokeWidth": 2,
325
+ "strokeCap": "round"
326
+ },
327
+ {
328
+ "id": "rotate_top_left_origin_dot",
329
+ "type": "path",
330
+ "d": "M 10 16 a 6 6 0 1 0 12 0 a 6 6 0 1 0 -12 0",
331
+ "fill": "#fde047",
332
+ "stroke": "#0f172a",
333
+ "strokeWidth": 1.5
334
+ }
335
+ ]
336
+ },
337
+ {
338
+ "id": "rotate_top_left_group",
339
+ "type": "group",
340
+ "x": 128,
341
+ "y": 533,
342
+ "width": 160,
343
+ "height": 100,
344
+ "origin": [
345
+ 128,
346
+ 533
347
+ ],
348
+ "children": [
349
+ {
350
+ "id": "rotate_top_left_rect",
351
+ "type": "path",
352
+ "d": "M 18 0 L 142 0 Q 160 0 160 18 L 160 82 Q 160 100 142 100 L 18 100 Q 0 100 0 82 L 0 18 Q 0 0 18 0 Z",
353
+ "fill": "#818cf8",
354
+ "stroke": "#dbeafe",
355
+ "strokeWidth": 2
356
+ }
357
+ ],
358
+ "timeline": {
359
+ "tracks": {
360
+ "rotation": {
361
+ "keyframes": [
362
+ {
363
+ "time": 0,
364
+ "value": 0,
365
+ "out": {
366
+ "type": "cubicBezier",
367
+ "x1": 0,
368
+ "y1": 0,
369
+ "x2": 0.2,
370
+ "y2": 1
371
+ }
372
+ },
373
+ {
374
+ "time": 1.5,
375
+ "value": 42,
376
+ "out": {
377
+ "type": "cubicBezier",
378
+ "x1": 0.25,
379
+ "y1": 0.1,
380
+ "x2": 0.25,
381
+ "y2": 1
382
+ }
383
+ },
384
+ {
385
+ "time": 3,
386
+ "value": -28,
387
+ "out": {
388
+ "type": "cubicBezier",
389
+ "x1": 0.25,
390
+ "y1": 0.1,
391
+ "x2": 0.25,
392
+ "y2": 1
393
+ }
394
+ },
395
+ {
396
+ "time": 4.5,
397
+ "value": 18,
398
+ "out": {
399
+ "type": "cubicBezier",
400
+ "x1": 0.25,
401
+ "y1": 0.1,
402
+ "x2": 0.25,
403
+ "y2": 1
404
+ }
405
+ },
406
+ {
407
+ "time": 5.8,
408
+ "value": 0
409
+ }
410
+ ]
411
+ }
412
+ }
413
+ }
414
+ },
415
+ {
416
+ "id": "scale_center_panel",
417
+ "type": "path",
418
+ "d": "M 387 150 L 613 150 Q 635 150 635 172 L 635 368 Q 635 390 613 390 L 387 390 Q 365 390 365 368 L 365 172 Q 365 150 387 150 Z",
419
+ "fill": "#0d1a2e",
420
+ "stroke": "#193252",
421
+ "strokeWidth": 1.5
422
+ },
423
+ {
424
+ "id": "scale_center_title",
425
+ "type": "text",
426
+ "x": 385,
427
+ "y": 168,
428
+ "text": "Center origin",
429
+ "fontSize": 16,
430
+ "fontFamily": "Roboto, Arial, sans-serif",
431
+ "weight": 700,
432
+ "fill": "#f8fafc"
433
+ },
434
+ {
435
+ "id": "scale_center_note",
436
+ "type": "text",
437
+ "x": 385,
438
+ "y": 192,
439
+ "text": "[80, 50]",
440
+ "fontSize": 12,
441
+ "fontFamily": "Roboto, Arial, sans-serif",
442
+ "weight": 500,
443
+ "fill": "#94a3b8"
444
+ },
445
+ {
446
+ "id": "scale_center_guide_h",
447
+ "type": "path",
448
+ "d": "M 385 298 L 615 298",
449
+ "fill": "none",
450
+ "stroke": "#173054",
451
+ "strokeWidth": 1,
452
+ "dashArray": [
453
+ 6,
454
+ 6
455
+ ]
456
+ },
457
+ {
458
+ "id": "scale_center_guide_v",
459
+ "type": "path",
460
+ "d": "M 503 218 L 503 370",
461
+ "fill": "none",
462
+ "stroke": "#173054",
463
+ "strokeWidth": 1,
464
+ "dashArray": [
465
+ 6,
466
+ 6
467
+ ]
468
+ },
469
+ {
470
+ "id": "scale_center_origin",
471
+ "type": "group",
472
+ "x": 487,
473
+ "y": 282,
474
+ "children": [
475
+ {
476
+ "id": "scale_center_origin_cross_h",
477
+ "type": "path",
478
+ "d": "M 0 16 L 32 16",
479
+ "fill": "none",
480
+ "stroke": "#fde047",
481
+ "strokeWidth": 2,
482
+ "strokeCap": "round"
483
+ },
484
+ {
485
+ "id": "scale_center_origin_cross_v",
486
+ "type": "path",
487
+ "d": "M 16 0 L 16 32",
488
+ "fill": "none",
489
+ "stroke": "#fde047",
490
+ "strokeWidth": 2,
491
+ "strokeCap": "round"
492
+ },
493
+ {
494
+ "id": "scale_center_origin_dot",
495
+ "type": "path",
496
+ "d": "M 10 16 a 6 6 0 1 0 12 0 a 6 6 0 1 0 -12 0",
497
+ "fill": "#fde047",
498
+ "stroke": "#0f172a",
499
+ "strokeWidth": 1.5
500
+ }
501
+ ]
502
+ },
503
+ {
504
+ "id": "scale_center_group",
505
+ "type": "group",
506
+ "x": 423,
507
+ "y": 248,
508
+ "width": 160,
509
+ "height": 100,
510
+ "origin": [
511
+ 503,
512
+ 298
513
+ ],
514
+ "children": [
515
+ {
516
+ "id": "scale_center_rect",
517
+ "type": "path",
518
+ "d": "M 18 0 L 142 0 Q 160 0 160 18 L 160 82 Q 160 100 142 100 L 18 100 Q 0 100 0 82 L 0 18 Q 0 0 18 0 Z",
519
+ "fill": "#38bdf8",
520
+ "stroke": "#dbeafe",
521
+ "strokeWidth": 2
522
+ }
523
+ ],
524
+ "timeline": {
525
+ "tracks": {
526
+ "scale": {
527
+ "keyframes": [
528
+ {
529
+ "time": 0,
530
+ "value": 1,
531
+ "out": {
532
+ "type": "cubicBezier",
533
+ "x1": 0,
534
+ "y1": 0,
535
+ "x2": 0.2,
536
+ "y2": 1
537
+ }
538
+ },
539
+ {
540
+ "time": 1.3,
541
+ "value": 1.45,
542
+ "out": {
543
+ "type": "cubicBezier",
544
+ "x1": 0.25,
545
+ "y1": 0.1,
546
+ "x2": 0.25,
547
+ "y2": 1
548
+ }
549
+ },
550
+ {
551
+ "time": 2.6,
552
+ "value": 0.72,
553
+ "out": {
554
+ "type": "cubicBezier",
555
+ "x1": 0.25,
556
+ "y1": 0.1,
557
+ "x2": 0.25,
558
+ "y2": 1
559
+ }
560
+ },
561
+ {
562
+ "time": 4,
563
+ "value": 1.18,
564
+ "out": {
565
+ "type": "cubicBezier",
566
+ "x1": 0.25,
567
+ "y1": 0.1,
568
+ "x2": 0.25,
569
+ "y2": 1
570
+ }
571
+ },
572
+ {
573
+ "time": 5.4,
574
+ "value": 1
575
+ }
576
+ ]
577
+ }
578
+ }
579
+ }
580
+ },
581
+ {
582
+ "id": "rotate_center_panel",
583
+ "type": "path",
584
+ "d": "M 387 435 L 613 435 Q 635 435 635 457 L 635 653 Q 635 675 613 675 L 387 675 Q 365 675 365 653 L 365 457 Q 365 435 387 435 Z",
585
+ "fill": "#0d1a2e",
586
+ "stroke": "#193252",
587
+ "strokeWidth": 1.5
588
+ },
589
+ {
590
+ "id": "rotate_center_title",
591
+ "type": "text",
592
+ "x": 385,
593
+ "y": 453,
594
+ "text": "Center origin",
595
+ "fontSize": 16,
596
+ "fontFamily": "Roboto, Arial, sans-serif",
597
+ "weight": 700,
598
+ "fill": "#f8fafc"
599
+ },
600
+ {
601
+ "id": "rotate_center_note",
602
+ "type": "text",
603
+ "x": 385,
604
+ "y": 477,
605
+ "text": "[80, 50]",
606
+ "fontSize": 12,
607
+ "fontFamily": "Roboto, Arial, sans-serif",
608
+ "weight": 500,
609
+ "fill": "#94a3b8"
610
+ },
611
+ {
612
+ "id": "rotate_center_guide_h",
613
+ "type": "path",
614
+ "d": "M 385 583 L 615 583",
615
+ "fill": "none",
616
+ "stroke": "#173054",
617
+ "strokeWidth": 1,
618
+ "dashArray": [
619
+ 6,
620
+ 6
621
+ ]
622
+ },
623
+ {
624
+ "id": "rotate_center_guide_v",
625
+ "type": "path",
626
+ "d": "M 503 503 L 503 655",
627
+ "fill": "none",
628
+ "stroke": "#173054",
629
+ "strokeWidth": 1,
630
+ "dashArray": [
631
+ 6,
632
+ 6
633
+ ]
634
+ },
635
+ {
636
+ "id": "rotate_center_origin",
637
+ "type": "group",
638
+ "x": 487,
639
+ "y": 567,
640
+ "children": [
641
+ {
642
+ "id": "rotate_center_origin_cross_h",
643
+ "type": "path",
644
+ "d": "M 0 16 L 32 16",
645
+ "fill": "none",
646
+ "stroke": "#fde047",
647
+ "strokeWidth": 2,
648
+ "strokeCap": "round"
649
+ },
650
+ {
651
+ "id": "rotate_center_origin_cross_v",
652
+ "type": "path",
653
+ "d": "M 16 0 L 16 32",
654
+ "fill": "none",
655
+ "stroke": "#fde047",
656
+ "strokeWidth": 2,
657
+ "strokeCap": "round"
658
+ },
659
+ {
660
+ "id": "rotate_center_origin_dot",
661
+ "type": "path",
662
+ "d": "M 10 16 a 6 6 0 1 0 12 0 a 6 6 0 1 0 -12 0",
663
+ "fill": "#fde047",
664
+ "stroke": "#0f172a",
665
+ "strokeWidth": 1.5
666
+ }
667
+ ]
668
+ },
669
+ {
670
+ "id": "rotate_center_group",
671
+ "type": "group",
672
+ "x": 423,
673
+ "y": 533,
674
+ "width": 160,
675
+ "height": 100,
676
+ "origin": [
677
+ 503,
678
+ 583
679
+ ],
680
+ "children": [
681
+ {
682
+ "id": "rotate_center_rect",
683
+ "type": "path",
684
+ "d": "M 18 0 L 142 0 Q 160 0 160 18 L 160 82 Q 160 100 142 100 L 18 100 Q 0 100 0 82 L 0 18 Q 0 0 18 0 Z",
685
+ "fill": "#38bdf8",
686
+ "stroke": "#dbeafe",
687
+ "strokeWidth": 2
688
+ }
689
+ ],
690
+ "timeline": {
691
+ "tracks": {
692
+ "rotation": {
693
+ "keyframes": [
694
+ {
695
+ "time": 0,
696
+ "value": 0,
697
+ "out": {
698
+ "type": "cubicBezier",
699
+ "x1": 0,
700
+ "y1": 0,
701
+ "x2": 0.2,
702
+ "y2": 1
703
+ }
704
+ },
705
+ {
706
+ "time": 1.5,
707
+ "value": 42,
708
+ "out": {
709
+ "type": "cubicBezier",
710
+ "x1": 0.25,
711
+ "y1": 0.1,
712
+ "x2": 0.25,
713
+ "y2": 1
714
+ }
715
+ },
716
+ {
717
+ "time": 3,
718
+ "value": -28,
719
+ "out": {
720
+ "type": "cubicBezier",
721
+ "x1": 0.25,
722
+ "y1": 0.1,
723
+ "x2": 0.25,
724
+ "y2": 1
725
+ }
726
+ },
727
+ {
728
+ "time": 4.5,
729
+ "value": 18,
730
+ "out": {
731
+ "type": "cubicBezier",
732
+ "x1": 0.25,
733
+ "y1": 0.1,
734
+ "x2": 0.25,
735
+ "y2": 1
736
+ }
737
+ },
738
+ {
739
+ "time": 5.8,
740
+ "value": 0
741
+ }
742
+ ]
743
+ }
744
+ }
745
+ }
746
+ },
747
+ {
748
+ "id": "scale_bottom_right_panel",
749
+ "type": "path",
750
+ "d": "M 682 150 L 908 150 Q 930 150 930 172 L 930 368 Q 930 390 908 390 L 682 390 Q 660 390 660 368 L 660 172 Q 660 150 682 150 Z",
751
+ "fill": "#0d1a2e",
752
+ "stroke": "#193252",
753
+ "strokeWidth": 1.5
754
+ },
755
+ {
756
+ "id": "scale_bottom_right_title",
757
+ "type": "text",
758
+ "x": 680,
759
+ "y": 168,
760
+ "text": "Bottom-right origin",
761
+ "fontSize": 16,
762
+ "fontFamily": "Roboto, Arial, sans-serif",
763
+ "weight": 700,
764
+ "fill": "#f8fafc"
765
+ },
766
+ {
767
+ "id": "scale_bottom_right_note",
768
+ "type": "text",
769
+ "x": 680,
770
+ "y": 192,
771
+ "text": "[160, 100]",
772
+ "fontSize": 12,
773
+ "fontFamily": "Roboto, Arial, sans-serif",
774
+ "weight": 500,
775
+ "fill": "#94a3b8"
776
+ },
777
+ {
778
+ "id": "scale_bottom_right_guide_h",
779
+ "type": "path",
780
+ "d": "M 680 298 L 910 298",
781
+ "fill": "none",
782
+ "stroke": "#173054",
783
+ "strokeWidth": 1,
784
+ "dashArray": [
785
+ 6,
786
+ 6
787
+ ]
788
+ },
789
+ {
790
+ "id": "scale_bottom_right_guide_v",
791
+ "type": "path",
792
+ "d": "M 798 218 L 798 370",
793
+ "fill": "none",
794
+ "stroke": "#173054",
795
+ "strokeWidth": 1,
796
+ "dashArray": [
797
+ 6,
798
+ 6
799
+ ]
800
+ },
801
+ {
802
+ "id": "scale_bottom_right_origin",
803
+ "type": "group",
804
+ "x": 862,
805
+ "y": 332,
806
+ "children": [
807
+ {
808
+ "id": "scale_bottom_right_origin_cross_h",
809
+ "type": "path",
810
+ "d": "M 0 16 L 32 16",
811
+ "fill": "none",
812
+ "stroke": "#fde047",
813
+ "strokeWidth": 2,
814
+ "strokeCap": "round"
815
+ },
816
+ {
817
+ "id": "scale_bottom_right_origin_cross_v",
818
+ "type": "path",
819
+ "d": "M 16 0 L 16 32",
820
+ "fill": "none",
821
+ "stroke": "#fde047",
822
+ "strokeWidth": 2,
823
+ "strokeCap": "round"
824
+ },
825
+ {
826
+ "id": "scale_bottom_right_origin_dot",
827
+ "type": "path",
828
+ "d": "M 10 16 a 6 6 0 1 0 12 0 a 6 6 0 1 0 -12 0",
829
+ "fill": "#fde047",
830
+ "stroke": "#0f172a",
831
+ "strokeWidth": 1.5
832
+ }
833
+ ]
834
+ },
835
+ {
836
+ "id": "scale_bottom_right_group",
837
+ "type": "group",
838
+ "x": 718,
839
+ "y": 248,
840
+ "width": 160,
841
+ "height": 100,
842
+ "origin": [
843
+ 878,
844
+ 348
845
+ ],
846
+ "children": [
847
+ {
848
+ "id": "scale_bottom_right_rect",
849
+ "type": "path",
850
+ "d": "M 18 0 L 142 0 Q 160 0 160 18 L 160 82 Q 160 100 142 100 L 18 100 Q 0 100 0 82 L 0 18 Q 0 0 18 0 Z",
851
+ "fill": "#22c55e",
852
+ "stroke": "#dbeafe",
853
+ "strokeWidth": 2
854
+ }
855
+ ],
856
+ "timeline": {
857
+ "tracks": {
858
+ "scale": {
859
+ "keyframes": [
860
+ {
861
+ "time": 0,
862
+ "value": 1,
863
+ "out": {
864
+ "type": "cubicBezier",
865
+ "x1": 0,
866
+ "y1": 0,
867
+ "x2": 0.2,
868
+ "y2": 1
869
+ }
870
+ },
871
+ {
872
+ "time": 1.3,
873
+ "value": 1.45,
874
+ "out": {
875
+ "type": "cubicBezier",
876
+ "x1": 0.25,
877
+ "y1": 0.1,
878
+ "x2": 0.25,
879
+ "y2": 1
880
+ }
881
+ },
882
+ {
883
+ "time": 2.6,
884
+ "value": 0.72,
885
+ "out": {
886
+ "type": "cubicBezier",
887
+ "x1": 0.25,
888
+ "y1": 0.1,
889
+ "x2": 0.25,
890
+ "y2": 1
891
+ }
892
+ },
893
+ {
894
+ "time": 4,
895
+ "value": 1.18,
896
+ "out": {
897
+ "type": "cubicBezier",
898
+ "x1": 0.25,
899
+ "y1": 0.1,
900
+ "x2": 0.25,
901
+ "y2": 1
902
+ }
903
+ },
904
+ {
905
+ "time": 5.4,
906
+ "value": 1
907
+ }
908
+ ]
909
+ }
910
+ }
911
+ }
912
+ },
913
+ {
914
+ "id": "rotate_bottom_right_panel",
915
+ "type": "path",
916
+ "d": "M 682 435 L 908 435 Q 930 435 930 457 L 930 653 Q 930 675 908 675 L 682 675 Q 660 675 660 653 L 660 457 Q 660 435 682 435 Z",
917
+ "fill": "#0d1a2e",
918
+ "stroke": "#193252",
919
+ "strokeWidth": 1.5
920
+ },
921
+ {
922
+ "id": "rotate_bottom_right_title",
923
+ "type": "text",
924
+ "x": 680,
925
+ "y": 453,
926
+ "text": "Bottom-right origin",
927
+ "fontSize": 16,
928
+ "fontFamily": "Roboto, Arial, sans-serif",
929
+ "weight": 700,
930
+ "fill": "#f8fafc"
931
+ },
932
+ {
933
+ "id": "rotate_bottom_right_note",
934
+ "type": "text",
935
+ "x": 680,
936
+ "y": 477,
937
+ "text": "[160, 100]",
938
+ "fontSize": 12,
939
+ "fontFamily": "Roboto, Arial, sans-serif",
940
+ "weight": 500,
941
+ "fill": "#94a3b8"
942
+ },
943
+ {
944
+ "id": "rotate_bottom_right_guide_h",
945
+ "type": "path",
946
+ "d": "M 680 583 L 910 583",
947
+ "fill": "none",
948
+ "stroke": "#173054",
949
+ "strokeWidth": 1,
950
+ "dashArray": [
951
+ 6,
952
+ 6
953
+ ]
954
+ },
955
+ {
956
+ "id": "rotate_bottom_right_guide_v",
957
+ "type": "path",
958
+ "d": "M 798 503 L 798 655",
959
+ "fill": "none",
960
+ "stroke": "#173054",
961
+ "strokeWidth": 1,
962
+ "dashArray": [
963
+ 6,
964
+ 6
965
+ ]
966
+ },
967
+ {
968
+ "id": "rotate_bottom_right_origin",
969
+ "type": "group",
970
+ "x": 862,
971
+ "y": 617,
972
+ "children": [
973
+ {
974
+ "id": "rotate_bottom_right_origin_cross_h",
975
+ "type": "path",
976
+ "d": "M 0 16 L 32 16",
977
+ "fill": "none",
978
+ "stroke": "#fde047",
979
+ "strokeWidth": 2,
980
+ "strokeCap": "round"
981
+ },
982
+ {
983
+ "id": "rotate_bottom_right_origin_cross_v",
984
+ "type": "path",
985
+ "d": "M 16 0 L 16 32",
986
+ "fill": "none",
987
+ "stroke": "#fde047",
988
+ "strokeWidth": 2,
989
+ "strokeCap": "round"
990
+ },
991
+ {
992
+ "id": "rotate_bottom_right_origin_dot",
993
+ "type": "path",
994
+ "d": "M 10 16 a 6 6 0 1 0 12 0 a 6 6 0 1 0 -12 0",
995
+ "fill": "#fde047",
996
+ "stroke": "#0f172a",
997
+ "strokeWidth": 1.5
998
+ }
999
+ ]
1000
+ },
1001
+ {
1002
+ "id": "rotate_bottom_right_group",
1003
+ "type": "group",
1004
+ "x": 718,
1005
+ "y": 533,
1006
+ "width": 160,
1007
+ "height": 100,
1008
+ "origin": [
1009
+ 878,
1010
+ 633
1011
+ ],
1012
+ "children": [
1013
+ {
1014
+ "id": "rotate_bottom_right_rect",
1015
+ "type": "path",
1016
+ "d": "M 18 0 L 142 0 Q 160 0 160 18 L 160 82 Q 160 100 142 100 L 18 100 Q 0 100 0 82 L 0 18 Q 0 0 18 0 Z",
1017
+ "fill": "#22c55e",
1018
+ "stroke": "#dbeafe",
1019
+ "strokeWidth": 2
1020
+ }
1021
+ ],
1022
+ "timeline": {
1023
+ "tracks": {
1024
+ "rotation": {
1025
+ "keyframes": [
1026
+ {
1027
+ "time": 0,
1028
+ "value": 0,
1029
+ "out": {
1030
+ "type": "cubicBezier",
1031
+ "x1": 0,
1032
+ "y1": 0,
1033
+ "x2": 0.2,
1034
+ "y2": 1
1035
+ }
1036
+ },
1037
+ {
1038
+ "time": 1.5,
1039
+ "value": 42,
1040
+ "out": {
1041
+ "type": "cubicBezier",
1042
+ "x1": 0.25,
1043
+ "y1": 0.1,
1044
+ "x2": 0.25,
1045
+ "y2": 1
1046
+ }
1047
+ },
1048
+ {
1049
+ "time": 3,
1050
+ "value": -28,
1051
+ "out": {
1052
+ "type": "cubicBezier",
1053
+ "x1": 0.25,
1054
+ "y1": 0.1,
1055
+ "x2": 0.25,
1056
+ "y2": 1
1057
+ }
1058
+ },
1059
+ {
1060
+ "time": 4.5,
1061
+ "value": 18,
1062
+ "out": {
1063
+ "type": "cubicBezier",
1064
+ "x1": 0.25,
1065
+ "y1": 0.1,
1066
+ "x2": 0.25,
1067
+ "y2": 1
1068
+ }
1069
+ },
1070
+ {
1071
+ "time": 5.8,
1072
+ "value": 0
1073
+ }
1074
+ ]
1075
+ }
1076
+ }
1077
+ }
1078
+ },
1079
+ {
1080
+ "id": "scale_outside_right_panel",
1081
+ "type": "path",
1082
+ "d": "M 977 150 L 1203 150 Q 1225 150 1225 172 L 1225 368 Q 1225 390 1203 390 L 977 390 Q 955 390 955 368 L 955 172 Q 955 150 977 150 Z",
1083
+ "fill": "#0d1a2e",
1084
+ "stroke": "#193252",
1085
+ "strokeWidth": 1.5
1086
+ },
1087
+ {
1088
+ "id": "scale_outside_right_title",
1089
+ "type": "text",
1090
+ "x": 975,
1091
+ "y": 168,
1092
+ "text": "Outside-right origin",
1093
+ "fontSize": 16,
1094
+ "fontFamily": "Roboto, Arial, sans-serif",
1095
+ "weight": 700,
1096
+ "fill": "#f8fafc"
1097
+ },
1098
+ {
1099
+ "id": "scale_outside_right_note",
1100
+ "type": "text",
1101
+ "x": 975,
1102
+ "y": 192,
1103
+ "text": "[200, 50]",
1104
+ "fontSize": 12,
1105
+ "fontFamily": "Roboto, Arial, sans-serif",
1106
+ "weight": 500,
1107
+ "fill": "#94a3b8"
1108
+ },
1109
+ {
1110
+ "id": "scale_outside_right_guide_h",
1111
+ "type": "path",
1112
+ "d": "M 975 298 L 1205 298",
1113
+ "fill": "none",
1114
+ "stroke": "#173054",
1115
+ "strokeWidth": 1,
1116
+ "dashArray": [
1117
+ 6,
1118
+ 6
1119
+ ]
1120
+ },
1121
+ {
1122
+ "id": "scale_outside_right_guide_v",
1123
+ "type": "path",
1124
+ "d": "M 1093 218 L 1093 370",
1125
+ "fill": "none",
1126
+ "stroke": "#173054",
1127
+ "strokeWidth": 1,
1128
+ "dashArray": [
1129
+ 6,
1130
+ 6
1131
+ ]
1132
+ },
1133
+ {
1134
+ "id": "scale_outside_right_origin",
1135
+ "type": "group",
1136
+ "x": 1197,
1137
+ "y": 282,
1138
+ "children": [
1139
+ {
1140
+ "id": "scale_outside_right_origin_cross_h",
1141
+ "type": "path",
1142
+ "d": "M 0 16 L 32 16",
1143
+ "fill": "none",
1144
+ "stroke": "#fde047",
1145
+ "strokeWidth": 2,
1146
+ "strokeCap": "round"
1147
+ },
1148
+ {
1149
+ "id": "scale_outside_right_origin_cross_v",
1150
+ "type": "path",
1151
+ "d": "M 16 0 L 16 32",
1152
+ "fill": "none",
1153
+ "stroke": "#fde047",
1154
+ "strokeWidth": 2,
1155
+ "strokeCap": "round"
1156
+ },
1157
+ {
1158
+ "id": "scale_outside_right_origin_dot",
1159
+ "type": "path",
1160
+ "d": "M 10 16 a 6 6 0 1 0 12 0 a 6 6 0 1 0 -12 0",
1161
+ "fill": "#fde047",
1162
+ "stroke": "#0f172a",
1163
+ "strokeWidth": 1.5
1164
+ }
1165
+ ]
1166
+ },
1167
+ {
1168
+ "id": "scale_outside_right_group",
1169
+ "type": "group",
1170
+ "x": 1013,
1171
+ "y": 248,
1172
+ "width": 160,
1173
+ "height": 100,
1174
+ "origin": [
1175
+ 1213,
1176
+ 298
1177
+ ],
1178
+ "children": [
1179
+ {
1180
+ "id": "scale_outside_right_rect",
1181
+ "type": "path",
1182
+ "d": "M 18 0 L 142 0 Q 160 0 160 18 L 160 82 Q 160 100 142 100 L 18 100 Q 0 100 0 82 L 0 18 Q 0 0 18 0 Z",
1183
+ "fill": "#f59e0b",
1184
+ "stroke": "#dbeafe",
1185
+ "strokeWidth": 2
1186
+ }
1187
+ ],
1188
+ "timeline": {
1189
+ "tracks": {
1190
+ "scale": {
1191
+ "keyframes": [
1192
+ {
1193
+ "time": 0,
1194
+ "value": 1,
1195
+ "out": {
1196
+ "type": "cubicBezier",
1197
+ "x1": 0,
1198
+ "y1": 0,
1199
+ "x2": 0.2,
1200
+ "y2": 1
1201
+ }
1202
+ },
1203
+ {
1204
+ "time": 1.3,
1205
+ "value": 1.45,
1206
+ "out": {
1207
+ "type": "cubicBezier",
1208
+ "x1": 0.25,
1209
+ "y1": 0.1,
1210
+ "x2": 0.25,
1211
+ "y2": 1
1212
+ }
1213
+ },
1214
+ {
1215
+ "time": 2.6,
1216
+ "value": 0.72,
1217
+ "out": {
1218
+ "type": "cubicBezier",
1219
+ "x1": 0.25,
1220
+ "y1": 0.1,
1221
+ "x2": 0.25,
1222
+ "y2": 1
1223
+ }
1224
+ },
1225
+ {
1226
+ "time": 4,
1227
+ "value": 1.18,
1228
+ "out": {
1229
+ "type": "cubicBezier",
1230
+ "x1": 0.25,
1231
+ "y1": 0.1,
1232
+ "x2": 0.25,
1233
+ "y2": 1
1234
+ }
1235
+ },
1236
+ {
1237
+ "time": 5.4,
1238
+ "value": 1
1239
+ }
1240
+ ]
1241
+ }
1242
+ }
1243
+ }
1244
+ },
1245
+ {
1246
+ "id": "rotate_outside_right_panel",
1247
+ "type": "path",
1248
+ "d": "M 977 435 L 1203 435 Q 1225 435 1225 457 L 1225 653 Q 1225 675 1203 675 L 977 675 Q 955 675 955 653 L 955 457 Q 955 435 977 435 Z",
1249
+ "fill": "#0d1a2e",
1250
+ "stroke": "#193252",
1251
+ "strokeWidth": 1.5
1252
+ },
1253
+ {
1254
+ "id": "rotate_outside_right_title",
1255
+ "type": "text",
1256
+ "x": 975,
1257
+ "y": 453,
1258
+ "text": "Outside-right origin",
1259
+ "fontSize": 16,
1260
+ "fontFamily": "Roboto, Arial, sans-serif",
1261
+ "weight": 700,
1262
+ "fill": "#f8fafc"
1263
+ },
1264
+ {
1265
+ "id": "rotate_outside_right_note",
1266
+ "type": "text",
1267
+ "x": 975,
1268
+ "y": 477,
1269
+ "text": "[200, 50]",
1270
+ "fontSize": 12,
1271
+ "fontFamily": "Roboto, Arial, sans-serif",
1272
+ "weight": 500,
1273
+ "fill": "#94a3b8"
1274
+ },
1275
+ {
1276
+ "id": "rotate_outside_right_guide_h",
1277
+ "type": "path",
1278
+ "d": "M 975 583 L 1205 583",
1279
+ "fill": "none",
1280
+ "stroke": "#173054",
1281
+ "strokeWidth": 1,
1282
+ "dashArray": [
1283
+ 6,
1284
+ 6
1285
+ ]
1286
+ },
1287
+ {
1288
+ "id": "rotate_outside_right_guide_v",
1289
+ "type": "path",
1290
+ "d": "M 1093 503 L 1093 655",
1291
+ "fill": "none",
1292
+ "stroke": "#173054",
1293
+ "strokeWidth": 1,
1294
+ "dashArray": [
1295
+ 6,
1296
+ 6
1297
+ ]
1298
+ },
1299
+ {
1300
+ "id": "rotate_outside_right_origin",
1301
+ "type": "group",
1302
+ "x": 1197,
1303
+ "y": 567,
1304
+ "children": [
1305
+ {
1306
+ "id": "rotate_outside_right_origin_cross_h",
1307
+ "type": "path",
1308
+ "d": "M 0 16 L 32 16",
1309
+ "fill": "none",
1310
+ "stroke": "#fde047",
1311
+ "strokeWidth": 2,
1312
+ "strokeCap": "round"
1313
+ },
1314
+ {
1315
+ "id": "rotate_outside_right_origin_cross_v",
1316
+ "type": "path",
1317
+ "d": "M 16 0 L 16 32",
1318
+ "fill": "none",
1319
+ "stroke": "#fde047",
1320
+ "strokeWidth": 2,
1321
+ "strokeCap": "round"
1322
+ },
1323
+ {
1324
+ "id": "rotate_outside_right_origin_dot",
1325
+ "type": "path",
1326
+ "d": "M 10 16 a 6 6 0 1 0 12 0 a 6 6 0 1 0 -12 0",
1327
+ "fill": "#fde047",
1328
+ "stroke": "#0f172a",
1329
+ "strokeWidth": 1.5
1330
+ }
1331
+ ]
1332
+ },
1333
+ {
1334
+ "id": "rotate_outside_right_group",
1335
+ "type": "group",
1336
+ "x": 1013,
1337
+ "y": 533,
1338
+ "width": 160,
1339
+ "height": 100,
1340
+ "origin": [
1341
+ 1213,
1342
+ 583
1343
+ ],
1344
+ "children": [
1345
+ {
1346
+ "id": "rotate_outside_right_rect",
1347
+ "type": "path",
1348
+ "d": "M 18 0 L 142 0 Q 160 0 160 18 L 160 82 Q 160 100 142 100 L 18 100 Q 0 100 0 82 L 0 18 Q 0 0 18 0 Z",
1349
+ "fill": "#f59e0b",
1350
+ "stroke": "#dbeafe",
1351
+ "strokeWidth": 2
1352
+ }
1353
+ ],
1354
+ "timeline": {
1355
+ "tracks": {
1356
+ "rotation": {
1357
+ "keyframes": [
1358
+ {
1359
+ "time": 0,
1360
+ "value": 0,
1361
+ "out": {
1362
+ "type": "cubicBezier",
1363
+ "x1": 0,
1364
+ "y1": 0,
1365
+ "x2": 0.2,
1366
+ "y2": 1
1367
+ }
1368
+ },
1369
+ {
1370
+ "time": 1.5,
1371
+ "value": 42,
1372
+ "out": {
1373
+ "type": "cubicBezier",
1374
+ "x1": 0.25,
1375
+ "y1": 0.1,
1376
+ "x2": 0.25,
1377
+ "y2": 1
1378
+ }
1379
+ },
1380
+ {
1381
+ "time": 3,
1382
+ "value": -28,
1383
+ "out": {
1384
+ "type": "cubicBezier",
1385
+ "x1": 0.25,
1386
+ "y1": 0.1,
1387
+ "x2": 0.25,
1388
+ "y2": 1
1389
+ }
1390
+ },
1391
+ {
1392
+ "time": 4.5,
1393
+ "value": 18,
1394
+ "out": {
1395
+ "type": "cubicBezier",
1396
+ "x1": 0.25,
1397
+ "y1": 0.1,
1398
+ "x2": 0.25,
1399
+ "y2": 1
1400
+ }
1401
+ },
1402
+ {
1403
+ "time": 5.8,
1404
+ "value": 0
1405
+ }
1406
+ ]
1407
+ }
1408
+ }
1409
+ }
1410
+ }
1411
+ ]
1412
+ }