@oim-media/spec 0.0.0-stage → 1.27.9

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 (131) hide show
  1. package/BINARY_SPEC.md +190 -0
  2. package/CANONICAL_SPEC.md +409 -0
  3. package/LICENSE +55 -0
  4. package/NOTICE +6 -0
  5. package/README.md +445 -2
  6. package/action-cases.json +13 -0
  7. package/artistic-text-cases.json +690 -0
  8. package/canonical-cases.json +6 -0
  9. package/keyframe-cases.json +32 -0
  10. package/keys.json +22 -0
  11. package/marks-cases.json +34 -0
  12. package/package.json +46 -3
  13. package/pattern-cases.json +552 -0
  14. package/schema/oim.schema.json +2920 -0
  15. package/schema/ovm.schema.json +2701 -0
  16. package/text-effect-cases.json +835 -0
  17. package/tools/parity-core.mjs +122 -0
  18. package/tools/parity.mjs +86 -0
  19. package/vectors/README.md +103 -0
  20. package/vectors/accessibility.expected.json +67 -0
  21. package/vectors/accessibility.oim.png +0 -0
  22. package/vectors/artistic-text.expected.json +84 -0
  23. package/vectors/artistic-text.oim.png +0 -0
  24. package/vectors/asymmetric-borders.expected.json +29 -0
  25. package/vectors/asymmetric-borders.oim.png +0 -0
  26. package/vectors/background-pattern-order.expected.json +95 -0
  27. package/vectors/background-pattern-order.oim.png +0 -0
  28. package/vectors/basic-text.expected.json +29 -0
  29. package/vectors/basic-text.oim.png +0 -0
  30. package/vectors/color-blending-opacity.expected.json +47 -0
  31. package/vectors/color-blending-opacity.oim.png +0 -0
  32. package/vectors/crop.expected.json +32 -0
  33. package/vectors/crop.oim.png +0 -0
  34. package/vectors/embedded-font-woff.expected.json +57 -0
  35. package/vectors/embedded-font-woff.oim.png +0 -0
  36. package/vectors/extreme-aspect-ratios.expected.json +29 -0
  37. package/vectors/extreme-aspect-ratios.oim.png +0 -0
  38. package/vectors/filter-effects.expected.json +33 -0
  39. package/vectors/filter-effects.oim.png +0 -0
  40. package/vectors/flip.expected.json +47 -0
  41. package/vectors/flip.oim.png +0 -0
  42. package/vectors/frame-shapes.expected.json +73 -0
  43. package/vectors/frame-shapes.oim.png +0 -0
  44. package/vectors/full-monty-composite.expected.json +96 -0
  45. package/vectors/full-monty-composite.oim.png +0 -0
  46. package/vectors/golden/accessibility.web.png +0 -0
  47. package/vectors/golden/artistic-text.web.png +0 -0
  48. package/vectors/golden/asymmetric-borders.web.png +0 -0
  49. package/vectors/golden/background-pattern-order.web.png +0 -0
  50. package/vectors/golden/basic-text.web.png +0 -0
  51. package/vectors/golden/color-blending-opacity.web.png +0 -0
  52. package/vectors/golden/crop.web.png +0 -0
  53. package/vectors/golden/embedded-font-woff.web.png +0 -0
  54. package/vectors/golden/exceptions.json +3 -0
  55. package/vectors/golden/extreme-aspect-ratios.web.png +0 -0
  56. package/vectors/golden/filter-effects.web.png +0 -0
  57. package/vectors/golden/flip.web.png +0 -0
  58. package/vectors/golden/frame-shapes.web.png +0 -0
  59. package/vectors/golden/full-monty-composite.web.png +0 -0
  60. package/vectors/golden/groups-and-parallax.web.png +0 -0
  61. package/vectors/golden/image-fill.web.png +0 -0
  62. package/vectors/golden/interactive-chained-actions.web.png +0 -0
  63. package/vectors/golden/interactive-hover.web.png +0 -0
  64. package/vectors/golden/interactive.web.png +0 -0
  65. package/vectors/golden/layer-blur.web.png +0 -0
  66. package/vectors/golden/layer-grain.web.png +0 -0
  67. package/vectors/golden/layer-ordering-zindex.web.png +0 -0
  68. package/vectors/golden/legacy-text-chunk.web.png +0 -0
  69. package/vectors/golden/media-filters.web.png +0 -0
  70. package/vectors/golden/multi-container-layout.web.png +0 -0
  71. package/vectors/golden/multilang-cjk-rtl.web.png +0 -0
  72. package/vectors/golden/nested-groups.web.png +0 -0
  73. package/vectors/golden/palettes.web.png +0 -0
  74. package/vectors/golden/parallax-infinite.web.png +0 -0
  75. package/vectors/golden/pattern-color-roles.web.png +0 -0
  76. package/vectors/golden/reedit-english.web.png +0 -0
  77. package/vectors/golden/reveal-and-play.web.png +0 -0
  78. package/vectors/golden/shadow-effects.web.png +0 -0
  79. package/vectors/golden/shape-shadows.web.png +0 -0
  80. package/vectors/golden/strokes-and-borders.web.png +0 -0
  81. package/vectors/golden/text-runs-precalculated.web.png +0 -0
  82. package/vectors/golden/transparent-background.web.png +0 -0
  83. package/vectors/golden/typography-styling.web.png +0 -0
  84. package/vectors/groups-and-parallax.expected.json +90 -0
  85. package/vectors/groups-and-parallax.oim.png +0 -0
  86. package/vectors/image-fill.expected.json +54 -0
  87. package/vectors/image-fill.oim.png +0 -0
  88. package/vectors/interactive-chained-actions.expected.json +77 -0
  89. package/vectors/interactive-chained-actions.oim.png +0 -0
  90. package/vectors/interactive-hover.expected.json +36 -0
  91. package/vectors/interactive-hover.oim.png +0 -0
  92. package/vectors/interactive.expected.json +121 -0
  93. package/vectors/interactive.oim.png +0 -0
  94. package/vectors/layer-blur.expected.json +48 -0
  95. package/vectors/layer-blur.oim.png +0 -0
  96. package/vectors/layer-grain.expected.json +52 -0
  97. package/vectors/layer-grain.oim.png +0 -0
  98. package/vectors/layer-ordering-zindex.expected.json +62 -0
  99. package/vectors/layer-ordering-zindex.oim.png +0 -0
  100. package/vectors/legacy-text-chunk.expected.json +29 -0
  101. package/vectors/legacy-text-chunk.oim.png +0 -0
  102. package/vectors/media-filters.expected.json +50 -0
  103. package/vectors/media-filters.oim.png +0 -0
  104. package/vectors/multi-container-layout.expected.json +45 -0
  105. package/vectors/multi-container-layout.oim.png +0 -0
  106. package/vectors/multilang-cjk-rtl.expected.json +30 -0
  107. package/vectors/multilang-cjk-rtl.oim.png +0 -0
  108. package/vectors/nested-groups.expected.json +68 -0
  109. package/vectors/nested-groups.oim.png +0 -0
  110. package/vectors/palettes.expected.json +57 -0
  111. package/vectors/palettes.oim.png +0 -0
  112. package/vectors/parallax-infinite.expected.json +39 -0
  113. package/vectors/parallax-infinite.oim.png +0 -0
  114. package/vectors/pattern-color-roles.expected.json +68 -0
  115. package/vectors/pattern-color-roles.oim.png +0 -0
  116. package/vectors/reedit-english.expected.json +45 -0
  117. package/vectors/reedit-english.oim.png +0 -0
  118. package/vectors/reveal-and-play.expected.json +107 -0
  119. package/vectors/reveal-and-play.oim.png +0 -0
  120. package/vectors/shadow-effects.expected.json +34 -0
  121. package/vectors/shadow-effects.oim.png +0 -0
  122. package/vectors/shape-shadows.expected.json +62 -0
  123. package/vectors/shape-shadows.oim.png +0 -0
  124. package/vectors/strokes-and-borders.expected.json +31 -0
  125. package/vectors/strokes-and-borders.oim.png +0 -0
  126. package/vectors/text-runs-precalculated.expected.json +46 -0
  127. package/vectors/text-runs-precalculated.oim.png +0 -0
  128. package/vectors/transparent-background.expected.json +30 -0
  129. package/vectors/transparent-background.oim.png +0 -0
  130. package/vectors/typography-styling.expected.json +34 -0
  131. package/vectors/typography-styling.oim.png +0 -0
@@ -0,0 +1,29 @@
1
+ {
2
+ "description": "One text in two languages. The minimum case: container, zTXt, zlib and cqw.",
3
+ "canvas": {
4
+ "natural_height": 600,
5
+ "natural_width": 800
6
+ },
7
+ "signed": true,
8
+ "key_version": "v1",
9
+ "slots": [
10
+ {
11
+ "id": "titulo",
12
+ "type": "text",
13
+ "position": [
14
+ 10,
15
+ 10
16
+ ],
17
+ "name": "Titulo",
18
+ "content": {
19
+ "en": "Hello",
20
+ "es": "Hola"
21
+ },
22
+ "style": {
23
+ "width": "50.0cqw",
24
+ "height": "11.25cqw",
25
+ "fontSize": "5.0cqw"
26
+ }
27
+ }
28
+ ]
29
+ }
Binary file
@@ -0,0 +1,47 @@
1
+ {
2
+ "description": "Layer opacity and visual blend modes.",
3
+ "canvas": {
4
+ "natural_height": 600,
5
+ "natural_width": 800
6
+ },
7
+ "signed": true,
8
+ "key_version": "v1",
9
+ "slots": [
10
+ {
11
+ "id": "fondo_base",
12
+ "type": "geo",
13
+ "position": [
14
+ 6.25,
15
+ 8.3333
16
+ ],
17
+ "name": "Fondo Base",
18
+ "content": {
19
+ "es": ""
20
+ },
21
+ "style": {
22
+ "width": "37.5cqw",
23
+ "height": "25.0cqw",
24
+ "fillColor": "#ef4444"
25
+ }
26
+ },
27
+ {
28
+ "id": "capa_blend",
29
+ "type": "geo",
30
+ "position": [
31
+ 18.75,
32
+ 16.6667
33
+ ],
34
+ "name": "Capa Blend",
35
+ "content": {
36
+ "es": ""
37
+ },
38
+ "style": {
39
+ "width": "37.5cqw",
40
+ "height": "25.0cqw",
41
+ "fillColor": "#3b82f6",
42
+ "blendMode": "multiply",
43
+ "opacity": 70
44
+ }
45
+ }
46
+ ]
47
+ }
@@ -0,0 +1,32 @@
1
+ {
2
+ "description": "Image crop (contract 1.15.0): `imageCrop` frames an image covering its box, at x 20 %, y 70 % and zoom 2.",
3
+ "canvas": {
4
+ "natural_height": 600,
5
+ "natural_width": 800
6
+ },
7
+ "signed": true,
8
+ "key_version": "v1",
9
+ "slots": [
10
+ {
11
+ "id": "foto",
12
+ "type": "image",
13
+ "position": [
14
+ 12.5,
15
+ 16.6667
16
+ ],
17
+ "name": "Foto",
18
+ "content": {
19
+ "*": "https://cdn.oim.media/demos/crop.png"
20
+ },
21
+ "style": {
22
+ "width": "37.5cqw",
23
+ "height": "25.0cqw",
24
+ "imageCrop": {
25
+ "x": 20,
26
+ "y": 70,
27
+ "zoom": 2
28
+ }
29
+ }
30
+ }
31
+ ]
32
+ }
Binary file
@@ -0,0 +1,57 @@
1
+ {
2
+ "description": "Embedded font (contract 1.27.0): Inter bold as a static WOFF subset, signed by the production service",
3
+ "canvas": {
4
+ "natural_height": 600,
5
+ "natural_width": 800
6
+ },
7
+ "languages": [
8
+ "es"
9
+ ],
10
+ "signed": true,
11
+ "key_version": "v1",
12
+ "reedit": "author_only",
13
+ "fonts": [
14
+ {
15
+ "family": "Inter",
16
+ "name": "oim-26dd479f-Inter",
17
+ "weight": 700,
18
+ "style": "normal",
19
+ "format": "woff"
20
+ }
21
+ ],
22
+ "slots": [
23
+ {
24
+ "id": "fuente_incrustada",
25
+ "type": "text",
26
+ "position": [
27
+ 7.5,
28
+ 41.6667
29
+ ],
30
+ "name": "Fuente incrustada",
31
+ "content": {
32
+ "es": "Fuente incrustada"
33
+ },
34
+ "style": {
35
+ "width": "85.0cqw",
36
+ "height": "12.5cqw",
37
+ "fontSize": "8.0cqw",
38
+ "fillColor": "#111111",
39
+ "fontFamily": "Inter",
40
+ "fontWeight": 700,
41
+ "textRuns": {
42
+ "es": {
43
+ "fontSize": 64,
44
+ "lineHeight": 80,
45
+ "lines": [
46
+ {
47
+ "text": "Fuente incrustada",
48
+ "width": 564.3,
49
+ "yOffset": 0
50
+ }
51
+ ]
52
+ }
53
+ }
54
+ }
55
+ }
56
+ ]
57
+ }
@@ -0,0 +1,29 @@
1
+ {
2
+ "description": "Ultra-wide panoramic canvas testing container consistency.",
3
+ "canvas": {
4
+ "natural_height": 400,
5
+ "natural_width": 1600
6
+ },
7
+ "signed": true,
8
+ "key_version": "v1",
9
+ "slots": [
10
+ {
11
+ "id": "banner_texto",
12
+ "type": "text",
13
+ "position": [
14
+ 5,
15
+ 25
16
+ ],
17
+ "name": "Banner Panorámico",
18
+ "content": {
19
+ "es": "Panorámica 4:1"
20
+ },
21
+ "style": {
22
+ "width": "75.0cqw",
23
+ "height": "11.25cqw",
24
+ "fontSize": "4.0cqw",
25
+ "fillColor": "#e11d48"
26
+ }
27
+ }
28
+ ]
29
+ }
@@ -0,0 +1,33 @@
1
+ {
2
+ "description": "CSS visual filters: blur, brightness, contrast, saturation and hue rotation.",
3
+ "canvas": {
4
+ "natural_height": 600,
5
+ "natural_width": 800
6
+ },
7
+ "signed": true,
8
+ "key_version": "v1",
9
+ "slots": [
10
+ {
11
+ "id": "capa_filtrada",
12
+ "type": "geo",
13
+ "position": [
14
+ 15,
15
+ 13.3333
16
+ ],
17
+ "name": "Capa con Filtros",
18
+ "content": {
19
+ "es": ""
20
+ },
21
+ "style": {
22
+ "width": "37.5cqw",
23
+ "height": "25.0cqw",
24
+ "fillColor": "#059669",
25
+ "filterBlur": 3,
26
+ "filterBrightness": 115,
27
+ "filterContrast": 125,
28
+ "filterSaturate": 140,
29
+ "filterHueRotate": 30
30
+ }
31
+ }
32
+ ]
33
+ }
Binary file
@@ -0,0 +1,47 @@
1
+ {
2
+ "description": "Layer flip (contract 1.14.0): `flipX` on one shape and `flipY` on another, rotated; each flips on its own axes.",
3
+ "canvas": {
4
+ "natural_height": 600,
5
+ "natural_width": 800
6
+ },
7
+ "signed": true,
8
+ "key_version": "v1",
9
+ "slots": [
10
+ {
11
+ "id": "horizontal",
12
+ "type": "geo",
13
+ "position": [
14
+ 10,
15
+ 25
16
+ ],
17
+ "name": "Horizontal",
18
+ "content": {
19
+ "es": ""
20
+ },
21
+ "style": {
22
+ "width": "35.0cqw",
23
+ "height": "22.5cqw",
24
+ "fillColor": "#e76f51",
25
+ "flipX": true
26
+ }
27
+ },
28
+ {
29
+ "id": "vertical",
30
+ "type": "geo",
31
+ "position": [
32
+ 55,
33
+ 25
34
+ ],
35
+ "name": "Vertical",
36
+ "content": {
37
+ "es": ""
38
+ },
39
+ "style": {
40
+ "width": "35.0cqw",
41
+ "height": "22.5cqw",
42
+ "fillColor": "#264653",
43
+ "flipY": true
44
+ }
45
+ }
46
+ ]
47
+ }
Binary file
@@ -0,0 +1,73 @@
1
+ {
2
+ "description": "Frame shapes (contract 1.19.0): a cloud with a photo, a custom SVG path with a photo (viewBox 24) and a star with a flipped photo.",
3
+ "canvas": {
4
+ "natural_height": 600,
5
+ "natural_width": 800
6
+ },
7
+ "signed": true,
8
+ "key_version": "v1",
9
+ "slots": [
10
+ {
11
+ "id": "marco-nube",
12
+ "type": "geo",
13
+ "position": [
14
+ 10,
15
+ 25
16
+ ],
17
+ "name": "Marco nube",
18
+ "content": {
19
+ "es": ""
20
+ },
21
+ "style": {
22
+ "width": "35.0cqw",
23
+ "height": "35.0cqw",
24
+ "fillColor": "#d4d4d8",
25
+ "fillImage": "data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAQAAAAECAIAAAAmkwkpAAAAEElEQVR4nGN4nh8IRwzEcQC5Ehpxr683xgAAAABJRU5ErkJggg==",
26
+ "fillType": "image",
27
+ "geoShape": "cloud"
28
+ }
29
+ },
30
+ {
31
+ "id": "marco-svg",
32
+ "type": "geo",
33
+ "position": [
34
+ 55,
35
+ 25
36
+ ],
37
+ "name": "Marco SVG propio",
38
+ "content": {
39
+ "es": ""
40
+ },
41
+ "style": {
42
+ "width": "35.0cqw",
43
+ "height": "35.0cqw",
44
+ "fillColor": "#d4d4d8",
45
+ "fillImage": "data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAQAAAAECAIAAAAmkwkpAAAAEElEQVR4nGN4nh8IRwzEcQC5Ehpxr683xgAAAABJRU5ErkJggg==",
46
+ "fillType": "image",
47
+ "svgPath": "M12 2L22 22H2Z",
48
+ "svgViewBox": "0 0 24 24"
49
+ }
50
+ },
51
+ {
52
+ "id": "marco-estrella",
53
+ "type": "geo",
54
+ "position": [
55
+ 10,
56
+ 63.3333
57
+ ],
58
+ "name": "Marco estrella volteado",
59
+ "content": {
60
+ "es": ""
61
+ },
62
+ "style": {
63
+ "width": "25.0cqw",
64
+ "height": "25.0cqw",
65
+ "fillColor": "#d4d4d8",
66
+ "fillImage": "data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAQAAAAECAIAAAAmkwkpAAAAEElEQVR4nGN4nh8IRwzEcQC5Ehpxr683xgAAAABJRU5ErkJggg==",
67
+ "fillType": "image",
68
+ "geoShape": "star",
69
+ "fillImageFlipX": true
70
+ }
71
+ }
72
+ ]
73
+ }
Binary file
@@ -0,0 +1,96 @@
1
+ {
2
+ "description": "Master document combining interactivity, multilingual text, shadows, parallax and hierarchy.",
3
+ "canvas": {
4
+ "natural_height": 600,
5
+ "natural_width": 800
6
+ },
7
+ "signed": true,
8
+ "key_version": "v1",
9
+ "slots": [
10
+ {
11
+ "id": "comp_grupo",
12
+ "type": "group",
13
+ "position": [
14
+ 6.25,
15
+ 8.3333
16
+ ],
17
+ "name": "Grupo Compuesto",
18
+ "content": {
19
+ "es": ""
20
+ },
21
+ "style": {
22
+ "width": "87.5cqw",
23
+ "height": "62.5cqw",
24
+ "childIds": [
25
+ "comp_tarjeta",
26
+ "comp_boton"
27
+ ]
28
+ }
29
+ },
30
+ {
31
+ "id": "comp_tarjeta",
32
+ "type": "geo",
33
+ "position": [
34
+ 7.5,
35
+ 10
36
+ ],
37
+ "name": "Tarjeta Compuesta",
38
+ "content": {
39
+ "es": ""
40
+ },
41
+ "style": {
42
+ "width": "50.0cqw",
43
+ "height": "31.25cqw",
44
+ "borderRadius": "16px",
45
+ "fillColor": "#047857",
46
+ "groupId": "comp_grupo",
47
+ "parallax": {
48
+ "axis": "both",
49
+ "depth": 0.6,
50
+ "enabled": true,
51
+ "mode": "mouse"
52
+ },
53
+ "shadowEnabled": true,
54
+ "shadowColor": "#000000",
55
+ "shadowBlur": 15,
56
+ "shadowOffsetY": 8,
57
+ "shadowOpacity": 40
58
+ }
59
+ },
60
+ {
61
+ "id": "comp_boton",
62
+ "type": "text",
63
+ "position": [
64
+ 10,
65
+ 58.3333
66
+ ],
67
+ "name": "Botón Compuesto",
68
+ "content": {
69
+ "en": "Action",
70
+ "es": "Acción"
71
+ },
72
+ "style": {
73
+ "width": "30.0cqw",
74
+ "height": "7.5cqw",
75
+ "fontSize": "3.0cqw",
76
+ "fillColor": "#d97706",
77
+ "groupId": "comp_grupo",
78
+ "isInteractive": true,
79
+ "states": {
80
+ "active": {
81
+ "actions": [
82
+ {
83
+ "target": "comp_tarjeta",
84
+ "type": "toggle"
85
+ }
86
+ ]
87
+ },
88
+ "hover": {
89
+ "opacity": 90,
90
+ "scale": 104
91
+ }
92
+ }
93
+ }
94
+ }
95
+ ]
96
+ }
Binary file
@@ -0,0 +1,3 @@
1
+ {
2
+ "flutter": {}
3
+ }
Binary file
Binary file
@@ -0,0 +1,90 @@
1
+ {
2
+ "description": "A group with two children and a parallax layer. Covers hierarchy and depth.",
3
+ "canvas": {
4
+ "natural_height": 600,
5
+ "natural_width": 800
6
+ },
7
+ "signed": true,
8
+ "key_version": "v1",
9
+ "slots": [
10
+ {
11
+ "id": "grupo",
12
+ "type": "group",
13
+ "position": [
14
+ 5,
15
+ 6.6667
16
+ ],
17
+ "name": "Grupo",
18
+ "content": {
19
+ "es": ""
20
+ },
21
+ "style": {
22
+ "width": "37.5cqw",
23
+ "height": "25.0cqw",
24
+ "childIds": [
25
+ "hijo_a",
26
+ "hijo_b"
27
+ ]
28
+ }
29
+ },
30
+ {
31
+ "id": "hijo_a",
32
+ "type": "geo",
33
+ "position": [
34
+ 7.5,
35
+ 10
36
+ ],
37
+ "name": "Hijo A",
38
+ "content": {
39
+ "es": ""
40
+ },
41
+ "style": {
42
+ "width": "12.5cqw",
43
+ "height": "10.0cqw",
44
+ "fillColor": "#2563EB",
45
+ "groupId": "grupo"
46
+ }
47
+ },
48
+ {
49
+ "id": "hijo_b",
50
+ "type": "geo",
51
+ "position": [
52
+ 25,
53
+ 10
54
+ ],
55
+ "name": "Hijo B",
56
+ "content": {
57
+ "es": ""
58
+ },
59
+ "style": {
60
+ "width": "12.5cqw",
61
+ "height": "10.0cqw",
62
+ "fillColor": "#0f766e",
63
+ "groupId": "grupo"
64
+ }
65
+ },
66
+ {
67
+ "id": "fondo",
68
+ "type": "geo",
69
+ "position": [
70
+ 50,
71
+ 50
72
+ ],
73
+ "name": "Fondo con profundidad",
74
+ "content": {
75
+ "es": ""
76
+ },
77
+ "style": {
78
+ "width": "37.5cqw",
79
+ "height": "25.0cqw",
80
+ "fillColor": "#b91c1c",
81
+ "parallax": {
82
+ "axis": "both",
83
+ "depth": 0.8,
84
+ "enabled": true,
85
+ "mode": "mouse"
86
+ }
87
+ }
88
+ }
89
+ ]
90
+ }