@oim-media/spec 0.0.0-stage → 1.27.8

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 (130) hide show
  1. package/BINARY_SPEC.md +186 -0
  2. package/CANONICAL_SPEC.md +409 -0
  3. package/LICENSE +55 -0
  4. package/NOTICE +6 -0
  5. package/README.md +444 -3
  6. package/action-cases.json +13 -0
  7. package/artistic-text-cases.json +690 -0
  8. package/keyframe-cases.json +32 -0
  9. package/keys.json +22 -0
  10. package/marks-cases.json +34 -0
  11. package/package.json +45 -3
  12. package/pattern-cases.json +552 -0
  13. package/schema/oim.schema.json +2920 -0
  14. package/schema/ovm.schema.json +2701 -0
  15. package/text-effect-cases.json +835 -0
  16. package/tools/parity-core.mjs +122 -0
  17. package/tools/parity.mjs +86 -0
  18. package/vectors/README.md +103 -0
  19. package/vectors/accessibility.expected.json +67 -0
  20. package/vectors/accessibility.oim.png +0 -0
  21. package/vectors/artistic-text.expected.json +84 -0
  22. package/vectors/artistic-text.oim.png +0 -0
  23. package/vectors/asymmetric-borders.expected.json +29 -0
  24. package/vectors/asymmetric-borders.oim.png +0 -0
  25. package/vectors/background-pattern-order.expected.json +95 -0
  26. package/vectors/background-pattern-order.oim.png +0 -0
  27. package/vectors/basic-text.expected.json +29 -0
  28. package/vectors/basic-text.oim.png +0 -0
  29. package/vectors/color-blending-opacity.expected.json +47 -0
  30. package/vectors/color-blending-opacity.oim.png +0 -0
  31. package/vectors/crop.expected.json +32 -0
  32. package/vectors/crop.oim.png +0 -0
  33. package/vectors/embedded-font-woff.expected.json +57 -0
  34. package/vectors/embedded-font-woff.oim.png +0 -0
  35. package/vectors/extreme-aspect-ratios.expected.json +29 -0
  36. package/vectors/extreme-aspect-ratios.oim.png +0 -0
  37. package/vectors/filter-effects.expected.json +33 -0
  38. package/vectors/filter-effects.oim.png +0 -0
  39. package/vectors/flip.expected.json +47 -0
  40. package/vectors/flip.oim.png +0 -0
  41. package/vectors/frame-shapes.expected.json +73 -0
  42. package/vectors/frame-shapes.oim.png +0 -0
  43. package/vectors/full-monty-composite.expected.json +96 -0
  44. package/vectors/full-monty-composite.oim.png +0 -0
  45. package/vectors/golden/accessibility.web.png +0 -0
  46. package/vectors/golden/artistic-text.web.png +0 -0
  47. package/vectors/golden/asymmetric-borders.web.png +0 -0
  48. package/vectors/golden/background-pattern-order.web.png +0 -0
  49. package/vectors/golden/basic-text.web.png +0 -0
  50. package/vectors/golden/color-blending-opacity.web.png +0 -0
  51. package/vectors/golden/crop.web.png +0 -0
  52. package/vectors/golden/embedded-font-woff.web.png +0 -0
  53. package/vectors/golden/exceptions.json +3 -0
  54. package/vectors/golden/extreme-aspect-ratios.web.png +0 -0
  55. package/vectors/golden/filter-effects.web.png +0 -0
  56. package/vectors/golden/flip.web.png +0 -0
  57. package/vectors/golden/frame-shapes.web.png +0 -0
  58. package/vectors/golden/full-monty-composite.web.png +0 -0
  59. package/vectors/golden/groups-and-parallax.web.png +0 -0
  60. package/vectors/golden/image-fill.web.png +0 -0
  61. package/vectors/golden/interactive-chained-actions.web.png +0 -0
  62. package/vectors/golden/interactive-hover.web.png +0 -0
  63. package/vectors/golden/interactive.web.png +0 -0
  64. package/vectors/golden/layer-blur.web.png +0 -0
  65. package/vectors/golden/layer-grain.web.png +0 -0
  66. package/vectors/golden/layer-ordering-zindex.web.png +0 -0
  67. package/vectors/golden/legacy-text-chunk.web.png +0 -0
  68. package/vectors/golden/media-filters.web.png +0 -0
  69. package/vectors/golden/multi-container-layout.web.png +0 -0
  70. package/vectors/golden/multilang-cjk-rtl.web.png +0 -0
  71. package/vectors/golden/nested-groups.web.png +0 -0
  72. package/vectors/golden/palettes.web.png +0 -0
  73. package/vectors/golden/parallax-infinite.web.png +0 -0
  74. package/vectors/golden/pattern-color-roles.web.png +0 -0
  75. package/vectors/golden/reedit-english.web.png +0 -0
  76. package/vectors/golden/reveal-and-play.web.png +0 -0
  77. package/vectors/golden/shadow-effects.web.png +0 -0
  78. package/vectors/golden/shape-shadows.web.png +0 -0
  79. package/vectors/golden/strokes-and-borders.web.png +0 -0
  80. package/vectors/golden/text-runs-precalculated.web.png +0 -0
  81. package/vectors/golden/transparent-background.web.png +0 -0
  82. package/vectors/golden/typography-styling.web.png +0 -0
  83. package/vectors/groups-and-parallax.expected.json +90 -0
  84. package/vectors/groups-and-parallax.oim.png +0 -0
  85. package/vectors/image-fill.expected.json +54 -0
  86. package/vectors/image-fill.oim.png +0 -0
  87. package/vectors/interactive-chained-actions.expected.json +77 -0
  88. package/vectors/interactive-chained-actions.oim.png +0 -0
  89. package/vectors/interactive-hover.expected.json +36 -0
  90. package/vectors/interactive-hover.oim.png +0 -0
  91. package/vectors/interactive.expected.json +121 -0
  92. package/vectors/interactive.oim.png +0 -0
  93. package/vectors/layer-blur.expected.json +48 -0
  94. package/vectors/layer-blur.oim.png +0 -0
  95. package/vectors/layer-grain.expected.json +52 -0
  96. package/vectors/layer-grain.oim.png +0 -0
  97. package/vectors/layer-ordering-zindex.expected.json +62 -0
  98. package/vectors/layer-ordering-zindex.oim.png +0 -0
  99. package/vectors/legacy-text-chunk.expected.json +29 -0
  100. package/vectors/legacy-text-chunk.oim.png +0 -0
  101. package/vectors/media-filters.expected.json +50 -0
  102. package/vectors/media-filters.oim.png +0 -0
  103. package/vectors/multi-container-layout.expected.json +45 -0
  104. package/vectors/multi-container-layout.oim.png +0 -0
  105. package/vectors/multilang-cjk-rtl.expected.json +30 -0
  106. package/vectors/multilang-cjk-rtl.oim.png +0 -0
  107. package/vectors/nested-groups.expected.json +68 -0
  108. package/vectors/nested-groups.oim.png +0 -0
  109. package/vectors/palettes.expected.json +57 -0
  110. package/vectors/palettes.oim.png +0 -0
  111. package/vectors/parallax-infinite.expected.json +39 -0
  112. package/vectors/parallax-infinite.oim.png +0 -0
  113. package/vectors/pattern-color-roles.expected.json +68 -0
  114. package/vectors/pattern-color-roles.oim.png +0 -0
  115. package/vectors/reedit-english.expected.json +45 -0
  116. package/vectors/reedit-english.oim.png +0 -0
  117. package/vectors/reveal-and-play.expected.json +107 -0
  118. package/vectors/reveal-and-play.oim.png +0 -0
  119. package/vectors/shadow-effects.expected.json +34 -0
  120. package/vectors/shadow-effects.oim.png +0 -0
  121. package/vectors/shape-shadows.expected.json +62 -0
  122. package/vectors/shape-shadows.oim.png +0 -0
  123. package/vectors/strokes-and-borders.expected.json +31 -0
  124. package/vectors/strokes-and-borders.oim.png +0 -0
  125. package/vectors/text-runs-precalculated.expected.json +46 -0
  126. package/vectors/text-runs-precalculated.oim.png +0 -0
  127. package/vectors/transparent-background.expected.json +30 -0
  128. package/vectors/transparent-background.oim.png +0 -0
  129. package/vectors/typography-styling.expected.json +34 -0
  130. package/vectors/typography-styling.oim.png +0 -0
@@ -0,0 +1,690 @@
1
+ {
2
+ "curve": [
3
+ {
4
+ "width": 800,
5
+ "height": 220,
6
+ "curveAmount": 60,
7
+ "curveType": "arc",
8
+ "d": "M 0 139.7 Q 400 50.6 800 139.7"
9
+ },
10
+ {
11
+ "width": 800,
12
+ "height": 200,
13
+ "curveAmount": -50,
14
+ "curveType": "wave",
15
+ "d": "M 0 100 C 200 145, 600 55, 800 100"
16
+ },
17
+ {
18
+ "width": 360,
19
+ "height": 120,
20
+ "curveAmount": 0,
21
+ "curveType": "arc",
22
+ "d": "M 0 60 L 360 60"
23
+ },
24
+ {
25
+ "width": 360,
26
+ "height": 120,
27
+ "curveAmount": 15,
28
+ "curveType": "arch",
29
+ "d": "M 0 64.05 Q 180 51.9 360 64.05"
30
+ },
31
+ {
32
+ "width": 360,
33
+ "height": 120,
34
+ "curveAmount": -500,
35
+ "curveType": "arc",
36
+ "d": "M 0 33 Q 180 114 360 33"
37
+ }
38
+ ],
39
+ "lines": [
40
+ {
41
+ "text": "RETRO",
42
+ "fontSize": 160,
43
+ "lineHeight": 1.25,
44
+ "lines": [
45
+ {
46
+ "text": "RETRO",
47
+ "offset": 0
48
+ }
49
+ ]
50
+ },
51
+ {
52
+ "text": "UNO\nDOS",
53
+ "fontSize": 40,
54
+ "lineHeight": 1.25,
55
+ "lines": [
56
+ {
57
+ "text": "UNO",
58
+ "offset": -25
59
+ },
60
+ {
61
+ "text": "DOS",
62
+ "offset": 25
63
+ }
64
+ ]
65
+ },
66
+ {
67
+ "text": "A\r\n\nC",
68
+ "fontSize": 10,
69
+ "lineHeight": 1,
70
+ "lines": [
71
+ {
72
+ "text": "A",
73
+ "offset": -10
74
+ },
75
+ {
76
+ "text": "",
77
+ "offset": 0
78
+ },
79
+ {
80
+ "text": "C",
81
+ "offset": 10
82
+ }
83
+ ]
84
+ }
85
+ ],
86
+ "extrusion": [
87
+ {
88
+ "depth": 18,
89
+ "angle": 45,
90
+ "color": "#DB2777",
91
+ "shading": true,
92
+ "layers": [
93
+ {
94
+ "dx": 12.7,
95
+ "dy": 12.7,
96
+ "color": "#6d133b",
97
+ "opacity": 1
98
+ },
99
+ {
100
+ "dx": 12,
101
+ "dy": 12,
102
+ "color": "#671238",
103
+ "opacity": 1
104
+ },
105
+ {
106
+ "dx": 11.3,
107
+ "dy": 11.3,
108
+ "color": "#611134",
109
+ "opacity": 1
110
+ },
111
+ {
112
+ "dx": 10.6,
113
+ "dy": 10.6,
114
+ "color": "#5b1031",
115
+ "opacity": 1
116
+ },
117
+ {
118
+ "dx": 9.9,
119
+ "dy": 9.9,
120
+ "color": "#550f2e",
121
+ "opacity": 1
122
+ },
123
+ {
124
+ "dx": 9.2,
125
+ "dy": 9.2,
126
+ "color": "#4f0e2a",
127
+ "opacity": 1
128
+ },
129
+ {
130
+ "dx": 8.5,
131
+ "dy": 8.5,
132
+ "color": "#480c27",
133
+ "opacity": 1
134
+ },
135
+ {
136
+ "dx": 7.8,
137
+ "dy": 7.8,
138
+ "color": "#420b24",
139
+ "opacity": 1
140
+ },
141
+ {
142
+ "dx": 7.1,
143
+ "dy": 7.1,
144
+ "color": "#3c0a21",
145
+ "opacity": 1
146
+ },
147
+ {
148
+ "dx": 6.4,
149
+ "dy": 6.4,
150
+ "color": "#36091d",
151
+ "opacity": 1
152
+ },
153
+ {
154
+ "dx": 5.7,
155
+ "dy": 5.7,
156
+ "color": "#30081a",
157
+ "opacity": 1
158
+ },
159
+ {
160
+ "dx": 4.9,
161
+ "dy": 4.9,
162
+ "color": "#2a0717",
163
+ "opacity": 1
164
+ },
165
+ {
166
+ "dx": 4.2,
167
+ "dy": 4.2,
168
+ "color": "#240613",
169
+ "opacity": 1
170
+ },
171
+ {
172
+ "dx": 3.5,
173
+ "dy": 3.5,
174
+ "color": "#1e0510",
175
+ "opacity": 1
176
+ },
177
+ {
178
+ "dx": 2.8,
179
+ "dy": 2.8,
180
+ "color": "#18040d",
181
+ "opacity": 1
182
+ },
183
+ {
184
+ "dx": 2.1,
185
+ "dy": 2.1,
186
+ "color": "#120309",
187
+ "opacity": 1
188
+ },
189
+ {
190
+ "dx": 1.4,
191
+ "dy": 1.4,
192
+ "color": "#0c0206",
193
+ "opacity": 1
194
+ },
195
+ {
196
+ "dx": 0.7,
197
+ "dy": 0.7,
198
+ "color": "#060103",
199
+ "opacity": 1
200
+ }
201
+ ]
202
+ },
203
+ {
204
+ "depth": 10,
205
+ "angle": 90,
206
+ "color": "#0E7490",
207
+ "shading": true,
208
+ "layers": [
209
+ {
210
+ "dx": 0,
211
+ "dy": 10,
212
+ "color": "#073a48",
213
+ "opacity": 1
214
+ },
215
+ {
216
+ "dx": 0,
217
+ "dy": 9,
218
+ "color": "#063440",
219
+ "opacity": 1
220
+ },
221
+ {
222
+ "dx": 0,
223
+ "dy": 8,
224
+ "color": "#052e39",
225
+ "opacity": 1
226
+ },
227
+ {
228
+ "dx": 0,
229
+ "dy": 7,
230
+ "color": "#042832",
231
+ "opacity": 1
232
+ },
233
+ {
234
+ "dx": 0,
235
+ "dy": 6,
236
+ "color": "#04222b",
237
+ "opacity": 1
238
+ },
239
+ {
240
+ "dx": 0,
241
+ "dy": 5,
242
+ "color": "#031d24",
243
+ "opacity": 1
244
+ },
245
+ {
246
+ "dx": 0,
247
+ "dy": 4,
248
+ "color": "#02171c",
249
+ "opacity": 1
250
+ },
251
+ {
252
+ "dx": 0,
253
+ "dy": 3,
254
+ "color": "#021115",
255
+ "opacity": 1
256
+ },
257
+ {
258
+ "dx": 0,
259
+ "dy": 2,
260
+ "color": "#010b0e",
261
+ "opacity": 1
262
+ },
263
+ {
264
+ "dx": 0,
265
+ "dy": 1,
266
+ "color": "#000507",
267
+ "opacity": 1
268
+ }
269
+ ]
270
+ },
271
+ {
272
+ "depth": 3,
273
+ "angle": 200,
274
+ "color": "#FF0000",
275
+ "shading": false,
276
+ "layers": [
277
+ {
278
+ "dx": -2.8,
279
+ "dy": -1,
280
+ "color": "#FF0000",
281
+ "opacity": 1
282
+ },
283
+ {
284
+ "dx": -1.9,
285
+ "dy": -0.7,
286
+ "color": "#FF0000",
287
+ "opacity": 1
288
+ },
289
+ {
290
+ "dx": -0.9,
291
+ "dy": -0.3,
292
+ "color": "#FF0000",
293
+ "opacity": 1
294
+ }
295
+ ]
296
+ },
297
+ {
298
+ "depth": 0,
299
+ "angle": 45,
300
+ "color": "#111827",
301
+ "shading": true,
302
+ "layers": []
303
+ },
304
+ {
305
+ "depth": 80,
306
+ "angle": 30,
307
+ "color": "red",
308
+ "shading": true,
309
+ "layers": [
310
+ {
311
+ "dx": 52,
312
+ "dy": 30,
313
+ "color": "red",
314
+ "opacity": 1
315
+ },
316
+ {
317
+ "dx": 51.1,
318
+ "dy": 29.5,
319
+ "color": "red",
320
+ "opacity": 1
321
+ },
322
+ {
323
+ "dx": 50.2,
324
+ "dy": 29,
325
+ "color": "red",
326
+ "opacity": 1
327
+ },
328
+ {
329
+ "dx": 49.4,
330
+ "dy": 28.5,
331
+ "color": "red",
332
+ "opacity": 1
333
+ },
334
+ {
335
+ "dx": 48.5,
336
+ "dy": 28,
337
+ "color": "red",
338
+ "opacity": 1
339
+ },
340
+ {
341
+ "dx": 47.6,
342
+ "dy": 27.5,
343
+ "color": "red",
344
+ "opacity": 1
345
+ },
346
+ {
347
+ "dx": 46.8,
348
+ "dy": 27,
349
+ "color": "red",
350
+ "opacity": 1
351
+ },
352
+ {
353
+ "dx": 45.9,
354
+ "dy": 26.5,
355
+ "color": "red",
356
+ "opacity": 1
357
+ },
358
+ {
359
+ "dx": 45,
360
+ "dy": 26,
361
+ "color": "red",
362
+ "opacity": 1
363
+ },
364
+ {
365
+ "dx": 44.2,
366
+ "dy": 25.5,
367
+ "color": "red",
368
+ "opacity": 1
369
+ },
370
+ {
371
+ "dx": 43.3,
372
+ "dy": 25,
373
+ "color": "red",
374
+ "opacity": 1
375
+ },
376
+ {
377
+ "dx": 42.4,
378
+ "dy": 24.5,
379
+ "color": "red",
380
+ "opacity": 1
381
+ },
382
+ {
383
+ "dx": 41.6,
384
+ "dy": 24,
385
+ "color": "red",
386
+ "opacity": 1
387
+ },
388
+ {
389
+ "dx": 40.7,
390
+ "dy": 23.5,
391
+ "color": "red",
392
+ "opacity": 1
393
+ },
394
+ {
395
+ "dx": 39.8,
396
+ "dy": 23,
397
+ "color": "red",
398
+ "opacity": 1
399
+ },
400
+ {
401
+ "dx": 39,
402
+ "dy": 22.5,
403
+ "color": "red",
404
+ "opacity": 1
405
+ },
406
+ {
407
+ "dx": 38.1,
408
+ "dy": 22,
409
+ "color": "red",
410
+ "opacity": 1
411
+ },
412
+ {
413
+ "dx": 37.2,
414
+ "dy": 21.5,
415
+ "color": "red",
416
+ "opacity": 1
417
+ },
418
+ {
419
+ "dx": 36.4,
420
+ "dy": 21,
421
+ "color": "red",
422
+ "opacity": 1
423
+ },
424
+ {
425
+ "dx": 35.5,
426
+ "dy": 20.5,
427
+ "color": "red",
428
+ "opacity": 1
429
+ },
430
+ {
431
+ "dx": 34.6,
432
+ "dy": 20,
433
+ "color": "red",
434
+ "opacity": 1
435
+ },
436
+ {
437
+ "dx": 33.8,
438
+ "dy": 19.5,
439
+ "color": "red",
440
+ "opacity": 1
441
+ },
442
+ {
443
+ "dx": 32.9,
444
+ "dy": 19,
445
+ "color": "red",
446
+ "opacity": 1
447
+ },
448
+ {
449
+ "dx": 32,
450
+ "dy": 18.5,
451
+ "color": "red",
452
+ "opacity": 1
453
+ },
454
+ {
455
+ "dx": 31.2,
456
+ "dy": 18,
457
+ "color": "red",
458
+ "opacity": 1
459
+ },
460
+ {
461
+ "dx": 30.3,
462
+ "dy": 17.5,
463
+ "color": "red",
464
+ "opacity": 1
465
+ },
466
+ {
467
+ "dx": 29.4,
468
+ "dy": 17,
469
+ "color": "red",
470
+ "opacity": 1
471
+ },
472
+ {
473
+ "dx": 28.6,
474
+ "dy": 16.5,
475
+ "color": "red",
476
+ "opacity": 1
477
+ },
478
+ {
479
+ "dx": 27.7,
480
+ "dy": 16,
481
+ "color": "red",
482
+ "opacity": 1
483
+ },
484
+ {
485
+ "dx": 26.8,
486
+ "dy": 15.5,
487
+ "color": "red",
488
+ "opacity": 1
489
+ },
490
+ {
491
+ "dx": 26,
492
+ "dy": 15,
493
+ "color": "red",
494
+ "opacity": 1
495
+ },
496
+ {
497
+ "dx": 25.1,
498
+ "dy": 14.5,
499
+ "color": "red",
500
+ "opacity": 1
501
+ },
502
+ {
503
+ "dx": 24.2,
504
+ "dy": 14,
505
+ "color": "red",
506
+ "opacity": 1
507
+ },
508
+ {
509
+ "dx": 23.4,
510
+ "dy": 13.5,
511
+ "color": "red",
512
+ "opacity": 1
513
+ },
514
+ {
515
+ "dx": 22.5,
516
+ "dy": 13,
517
+ "color": "red",
518
+ "opacity": 1
519
+ },
520
+ {
521
+ "dx": 21.7,
522
+ "dy": 12.5,
523
+ "color": "red",
524
+ "opacity": 1
525
+ },
526
+ {
527
+ "dx": 20.8,
528
+ "dy": 12,
529
+ "color": "red",
530
+ "opacity": 1
531
+ },
532
+ {
533
+ "dx": 19.9,
534
+ "dy": 11.5,
535
+ "color": "red",
536
+ "opacity": 1
537
+ },
538
+ {
539
+ "dx": 19.1,
540
+ "dy": 11,
541
+ "color": "red",
542
+ "opacity": 1
543
+ },
544
+ {
545
+ "dx": 18.2,
546
+ "dy": 10.5,
547
+ "color": "red",
548
+ "opacity": 1
549
+ },
550
+ {
551
+ "dx": 17.3,
552
+ "dy": 10,
553
+ "color": "red",
554
+ "opacity": 1
555
+ },
556
+ {
557
+ "dx": 16.5,
558
+ "dy": 9.5,
559
+ "color": "red",
560
+ "opacity": 1
561
+ },
562
+ {
563
+ "dx": 15.6,
564
+ "dy": 9,
565
+ "color": "red",
566
+ "opacity": 1
567
+ },
568
+ {
569
+ "dx": 14.7,
570
+ "dy": 8.5,
571
+ "color": "red",
572
+ "opacity": 1
573
+ },
574
+ {
575
+ "dx": 13.9,
576
+ "dy": 8,
577
+ "color": "red",
578
+ "opacity": 1
579
+ },
580
+ {
581
+ "dx": 13,
582
+ "dy": 7.5,
583
+ "color": "red",
584
+ "opacity": 1
585
+ },
586
+ {
587
+ "dx": 12.1,
588
+ "dy": 7,
589
+ "color": "red",
590
+ "opacity": 1
591
+ },
592
+ {
593
+ "dx": 11.3,
594
+ "dy": 6.5,
595
+ "color": "red",
596
+ "opacity": 1
597
+ },
598
+ {
599
+ "dx": 10.4,
600
+ "dy": 6,
601
+ "color": "red",
602
+ "opacity": 1
603
+ },
604
+ {
605
+ "dx": 9.5,
606
+ "dy": 5.5,
607
+ "color": "red",
608
+ "opacity": 1
609
+ },
610
+ {
611
+ "dx": 8.7,
612
+ "dy": 5,
613
+ "color": "red",
614
+ "opacity": 1
615
+ },
616
+ {
617
+ "dx": 7.8,
618
+ "dy": 4.5,
619
+ "color": "red",
620
+ "opacity": 1
621
+ },
622
+ {
623
+ "dx": 6.9,
624
+ "dy": 4,
625
+ "color": "red",
626
+ "opacity": 1
627
+ },
628
+ {
629
+ "dx": 6.1,
630
+ "dy": 3.5,
631
+ "color": "red",
632
+ "opacity": 1
633
+ },
634
+ {
635
+ "dx": 5.2,
636
+ "dy": 3,
637
+ "color": "red",
638
+ "opacity": 1
639
+ },
640
+ {
641
+ "dx": 4.3,
642
+ "dy": 2.5,
643
+ "color": "red",
644
+ "opacity": 1
645
+ },
646
+ {
647
+ "dx": 3.5,
648
+ "dy": 2,
649
+ "color": "red",
650
+ "opacity": 1
651
+ },
652
+ {
653
+ "dx": 2.6,
654
+ "dy": 1.5,
655
+ "color": "red",
656
+ "opacity": 1
657
+ },
658
+ {
659
+ "dx": 1.7,
660
+ "dy": 1,
661
+ "color": "red",
662
+ "opacity": 1
663
+ },
664
+ {
665
+ "dx": 0.9,
666
+ "dy": 0.5,
667
+ "color": "red",
668
+ "opacity": 1
669
+ }
670
+ ]
671
+ }
672
+ ],
673
+ "shade": [
674
+ {
675
+ "color": "#808080",
676
+ "percent": 0.5,
677
+ "result": "#404040"
678
+ },
679
+ {
680
+ "color": "#fff",
681
+ "percent": 0.5,
682
+ "result": "#7f7f7f"
683
+ },
684
+ {
685
+ "color": "red",
686
+ "percent": 0.5,
687
+ "result": "red"
688
+ }
689
+ ]
690
+ }
@@ -0,0 +1,32 @@
1
+ [
2
+ { "name": "linear translate", "duration": 2,
3
+ "keyframes": [{ "t": 0, "x": 0 }, { "t": 2, "x": 100 }],
4
+ "samples": [{ "time": 0, "expect": { "x": 0, "y": 0, "r": 0, "s": 1, "o": 1, "b": 0 } }, { "time": 1, "expect": { "x": 50 } }, { "time": 2, "expect": { "x": 100 } }] },
5
+ { "name": "ease-in on the left frame", "duration": 1,
6
+ "keyframes": [{ "t": 0, "x": 0, "e": "ease-in" }, { "t": 1, "x": 100 }],
7
+ "samples": [{ "time": 0.5, "expect": { "x": 31.5357 } }] },
8
+ { "name": "bezier tuple equals ease-in-out", "duration": 1,
9
+ "keyframes": [{ "t": 0, "r": 0, "e": [0.42, 0, 0.58, 1] }, { "t": 1, "r": 360 }],
10
+ "samples": [{ "time": 0.25, "expect": { "r": 46.4983 } }, { "time": 0.5, "expect": { "r": 180 } }] },
11
+ { "name": "steps(1, end) holds the left value", "duration": 1,
12
+ "keyframes": [{ "t": 0, "s": 1, "e": "steps(1, end)" }, { "t": 1, "s": 2 }],
13
+ "samples": [{ "time": 0.99, "expect": { "s": 1 } }, { "time": 1, "expect": { "s": 2 } }] },
14
+ { "name": "first frame after 0 starts from the base", "duration": 4,
15
+ "keyframes": [{ "t": 2, "y": 40 }, { "t": 4, "y": 80 }],
16
+ "samples": [{ "time": 1, "expect": { "y": 20 } }, { "time": 3, "expect": { "y": 60 } }] },
17
+ { "name": "last frame before the end holds to the base", "duration": 4,
18
+ "keyframes": [{ "t": 0, "x": 10 }, { "t": 2, "x": 30 }],
19
+ "samples": [{ "time": 3, "expect": { "x": 15 } }] },
20
+ { "name": "opacity only in some frames", "duration": 2,
21
+ "keyframes": [{ "t": 0, "x": 0 }, { "t": 1, "x": 10, "o": 0 }, { "t": 2, "x": 20 }],
22
+ "samples": [{ "time": 0.5, "expect": { "o": 0.5, "x": 5 } }, { "time": 1.5, "expect": { "o": 0.5 } }] },
23
+ { "name": "opacity above 1 is returned unclamped", "duration": 1,
24
+ "keyframes": [{ "t": 0, "o": 1.5 }, { "t": 1, "o": 0.5 }],
25
+ "samples": [{ "time": 0, "expect": { "o": 1.5 } }, { "time": 0.5, "expect": { "o": 1 } }] },
26
+ { "name": "blur interpolates from none", "duration": 1,
27
+ "keyframes": [{ "t": 0 }, { "t": 1, "b": 8 }],
28
+ "samples": [{ "time": 0.5, "expect": { "b": 4 } }] },
29
+ { "name": "time past the duration clamps", "duration": 1,
30
+ "keyframes": [{ "t": 0, "x": 0 }, { "t": 1, "x": 5 }],
31
+ "samples": [{ "time": 7, "expect": { "x": 5 } }] }
32
+ ]