@revideo/2d 0.3.5-alpha.967 → 0.3.5-beta.967

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/editor/editor/tsconfig.build.tsbuildinfo +1 -1
  2. package/editor/index.js +380 -151
  3. package/editor/index.js.map +1 -1
  4. package/lib/code/CodeCursor.d.ts +74 -74
  5. package/lib/code/CodeDiffer.d.ts +21 -16
  6. package/lib/code/CodeDiffer.js +39 -41
  7. package/lib/code/CodeFragment.d.ts +16 -8
  8. package/lib/code/CodeFragment.js +36 -36
  9. package/lib/code/CodeHighlighter.d.ts +59 -59
  10. package/lib/code/CodeHighlighter.js +1 -1
  11. package/lib/code/CodeMetrics.d.ts +12 -8
  12. package/lib/code/CodeMetrics.js +26 -24
  13. package/lib/code/CodeRange.d.ts +21 -5
  14. package/lib/code/CodeRange.js +131 -124
  15. package/lib/code/CodeScope.d.ts +18 -8
  16. package/lib/code/CodeSelection.d.ts +9 -4
  17. package/lib/code/CodeSelection.js +8 -8
  18. package/lib/code/CodeSignal.d.ts +74 -47
  19. package/lib/code/CodeTokenizer.d.ts +1 -1
  20. package/lib/code/CodeTokenizer.js +41 -41
  21. package/lib/code/DefaultHighlightStyle.d.ts +2 -2
  22. package/lib/code/DefaultHighlightStyle.js +96 -96
  23. package/lib/code/LezerHighlighter.d.ts +21 -19
  24. package/lib/code/diff.d.ts +12 -9
  25. package/lib/code/diff.js +218 -205
  26. package/lib/code/extractRange.d.ts +7 -4
  27. package/lib/code/extractRange.js +79 -71
  28. package/lib/code/index.d.ts +1 -1
  29. package/lib/code/index.js +1 -1
  30. package/lib/components/Audio.d.ts +11 -11
  31. package/lib/components/Bezier.d.ts +18 -18
  32. package/lib/components/Circle.d.ts +95 -90
  33. package/lib/components/Code.d.ts +244 -211
  34. package/lib/components/CodeBlock.d.ts +109 -67
  35. package/lib/components/CubicBezier.d.ts +36 -36
  36. package/lib/components/Curve.d.ts +208 -198
  37. package/lib/components/Grid.d.ts +47 -42
  38. package/lib/components/Icon.d.ts +55 -50
  39. package/lib/components/Img.d.ts +86 -79
  40. package/lib/components/Knot.d.ts +97 -78
  41. package/lib/components/Latex.d.ts +12 -12
  42. package/lib/components/Layout.d.ts +455 -413
  43. package/lib/components/Line.d.ts +61 -49
  44. package/lib/components/Media.d.ts +36 -36
  45. package/lib/components/Media.d.ts.map +1 -1
  46. package/lib/components/Media.js +8 -4
  47. package/lib/components/Node.d.ts +875 -830
  48. package/lib/components/Path.d.ts +35 -14
  49. package/lib/components/Polygon.d.ts +60 -55
  50. package/lib/components/QuadBezier.d.ts +29 -29
  51. package/lib/components/Ray.d.ts +28 -28
  52. package/lib/components/Rect.d.ts +115 -108
  53. package/lib/components/SVG.d.ts +165 -139
  54. package/lib/components/Shape.d.ts +44 -35
  55. package/lib/components/Spline.d.ts +46 -40
  56. package/lib/components/Txt.d.ts +55 -44
  57. package/lib/components/TxtLeaf.d.ts +20 -16
  58. package/lib/components/Video.d.ts +7 -6
  59. package/lib/components/Video.d.ts.map +1 -1
  60. package/lib/components/Video.js +7 -7
  61. package/lib/components/View2D.d.ts +22 -22
  62. package/lib/components/index.d.ts +1 -1
  63. package/lib/components/types.d.ts +22 -9
  64. package/lib/curves/ArcSegment.d.ts +36 -24
  65. package/lib/curves/CircleSegment.d.ts +26 -16
  66. package/lib/curves/CubicBezierSegment.d.ts +18 -13
  67. package/lib/curves/CurveDrawingInfo.d.ts +9 -9
  68. package/lib/curves/CurvePoint.d.ts +13 -13
  69. package/lib/curves/CurveProfile.d.ts +5 -5
  70. package/lib/curves/CurveProfile.js +1 -1
  71. package/lib/curves/KnotInfo.d.ts +8 -8
  72. package/lib/curves/LineSegment.d.ts +19 -14
  73. package/lib/curves/Polynomial.d.ts +110 -110
  74. package/lib/curves/Polynomial2D.d.ts +20 -20
  75. package/lib/curves/PolynomialSegment.d.ts +42 -37
  76. package/lib/curves/QuadBezierSegment.d.ts +12 -12
  77. package/lib/curves/Segment.d.ts +12 -7
  78. package/lib/curves/UniformPolynomialCurveSampler.d.ts +34 -34
  79. package/lib/curves/createCurveProfileLerp.d.ts +17 -6
  80. package/lib/curves/getBezierSplineProfile.d.ts +8 -4
  81. package/lib/curves/getCircleProfile.d.ts +10 -4
  82. package/lib/curves/getPathProfile.d.ts +2 -2
  83. package/lib/curves/getPointAtDistance.d.ts +7 -4
  84. package/lib/curves/getPolylineProfile.d.ts +8 -4
  85. package/lib/curves/getRectProfile.d.ts +9 -4
  86. package/lib/curves/index.d.ts +1 -1
  87. package/lib/curves/index.js +1 -1
  88. package/lib/decorators/canvasStyleSignal.d.ts +3 -3
  89. package/lib/decorators/colorSignal.d.ts +1 -1
  90. package/lib/decorators/compound.d.ts +4 -2
  91. package/lib/decorators/computed.d.ts +1 -1
  92. package/lib/decorators/defaultStyle.d.ts +5 -2
  93. package/lib/decorators/filtersSignal.d.ts +28 -8
  94. package/lib/decorators/index.d.ts +1 -1
  95. package/lib/decorators/index.js +1 -1
  96. package/lib/decorators/initializers.d.ts +5 -2
  97. package/lib/decorators/initializers.js +18 -19
  98. package/lib/decorators/nodeName.d.ts +1 -1
  99. package/lib/decorators/nodeName.js +4 -4
  100. package/lib/decorators/signal.d.ts +40 -20
  101. package/lib/decorators/spacingSignal.d.ts +1 -1
  102. package/lib/decorators/vector2Signal.d.ts +13 -7
  103. package/lib/index.d.ts +1 -1
  104. package/lib/index.js +1 -1
  105. package/lib/jsx-dev-runtime.d.ts +3 -3
  106. package/lib/jsx-dev-runtime.js +3 -3
  107. package/lib/jsx-runtime.d.ts +19 -9
  108. package/lib/jsx-runtime.js +18 -18
  109. package/lib/partials/Filter.d.ts +24 -16
  110. package/lib/partials/Gradient.d.ts +30 -24
  111. package/lib/partials/Pattern.d.ts +14 -9
  112. package/lib/partials/ShaderConfig.d.ts +81 -74
  113. package/lib/partials/index.d.ts +1 -1
  114. package/lib/partials/index.js +1 -1
  115. package/lib/partials/types.d.ts +19 -6
  116. package/lib/scenes/Scene2D.d.ts +42 -23
  117. package/lib/scenes/index.d.ts +1 -1
  118. package/lib/scenes/index.js +1 -1
  119. package/lib/scenes/makeScene2D.d.ts +7 -5
  120. package/lib/scenes/useScene2D.d.ts +2 -2
  121. package/lib/tsconfig.build.tsbuildinfo +1 -1
  122. package/lib/utils/CanvasUtils.d.ts +1 -1
  123. package/lib/utils/diff.d.ts +25 -18
  124. package/lib/utils/diff.js +84 -87
  125. package/lib/utils/index.d.ts +1 -1
  126. package/lib/utils/index.js +1 -1
  127. package/lib/utils/is.d.ts +4 -2
  128. package/lib/utils/is.js +2 -2
  129. package/lib/utils/makeSignalExtensions.d.ts +11 -4
  130. package/package.json +4 -4
  131. package/src/lib/components/Media.ts +2 -1
  132. package/src/lib/components/Video.ts +12 -11
package/lib/utils/diff.js CHANGED
@@ -1,97 +1,94 @@
1
1
  function getIdMap(list) {
2
- const map = new Map();
3
- let before = undefined;
4
- for (const [index, current] of list.entries()) {
5
- const currentArray = map.get(current.id) ?? [];
6
- if (!map.has(current.id)) {
7
- map.set(current.id, currentArray);
8
- }
9
- currentArray.push({
10
- before,
11
- current,
12
- beforeIdIndex: before ? map.get(before.id).length - 1 : -1,
13
- currentIndex: index,
14
- });
15
- before = current;
2
+ const map = new Map();
3
+ let before = undefined;
4
+ for (const [index, current] of list.entries()) {
5
+ const currentArray = map.get(current.id) ?? [];
6
+ if (!map.has(current.id)) {
7
+ map.set(current.id, currentArray);
16
8
  }
17
- return map;
9
+ currentArray.push({
10
+ before,
11
+ current,
12
+ beforeIdIndex: before ? map.get(before.id).length - 1 : -1,
13
+ currentIndex: index,
14
+ });
15
+ before = current;
16
+ }
17
+ return map;
18
18
  }
19
19
  export function getTransformDiff(from, to) {
20
- const diff = {
21
- inserted: [],
22
- deleted: [],
23
- transformed: [],
24
- };
25
- const fromMap = getIdMap(from);
26
- const toMap = getIdMap(to);
27
- for (const [key, fromItem] of fromMap.entries()) {
28
- const toItem = toMap.get(key);
29
- if (toItem) {
30
- toMap.delete(key);
31
- for (let i = 0; i < Math.max(fromItem.length, toItem.length); i++) {
32
- const insert = i >= fromItem.length;
33
- const remove = i >= toItem.length;
34
- const fromNode = !insert ? fromItem[i] : fromItem[fromItem.length - 1];
35
- const toNode = !remove ? toItem[i] : toItem[toItem.length - 1];
36
- diff.transformed.push({
37
- insert,
38
- remove,
39
- from: fromNode,
40
- to: toNode,
41
- });
42
- }
43
- }
44
- else {
45
- for (const node of fromItem) {
46
- diff.deleted.push(node);
47
- }
48
- }
20
+ const diff = {
21
+ inserted: [],
22
+ deleted: [],
23
+ transformed: [],
24
+ };
25
+ const fromMap = getIdMap(from);
26
+ const toMap = getIdMap(to);
27
+ for (const [key, fromItem] of fromMap.entries()) {
28
+ const toItem = toMap.get(key);
29
+ if (toItem) {
30
+ toMap.delete(key);
31
+ for (let i = 0; i < Math.max(fromItem.length, toItem.length); i++) {
32
+ const insert = i >= fromItem.length;
33
+ const remove = i >= toItem.length;
34
+ const fromNode = !insert ? fromItem[i] : fromItem[fromItem.length - 1];
35
+ const toNode = !remove ? toItem[i] : toItem[toItem.length - 1];
36
+ diff.transformed.push({
37
+ insert,
38
+ remove,
39
+ from: fromNode,
40
+ to: toNode,
41
+ });
42
+ }
43
+ } else {
44
+ for (const node of fromItem) {
45
+ diff.deleted.push(node);
46
+ }
49
47
  }
50
- for (const toItem of toMap.values()) {
51
- for (const node of toItem) {
52
- diff.inserted.push(node);
53
- }
48
+ }
49
+ for (const toItem of toMap.values()) {
50
+ for (const node of toItem) {
51
+ diff.inserted.push(node);
54
52
  }
55
- return diff;
53
+ }
54
+ return diff;
56
55
  }
57
56
  export function applyTransformDiff(current, diff, cloner) {
58
- function insert(item) {
59
- let idIndex = -1;
60
- const index = item.before
61
- ? current.findIndex(({ id }) => {
62
- if (id === item.before?.id) {
63
- idIndex++;
64
- if (idIndex === item.beforeIdIndex)
65
- return true;
66
- }
67
- return false;
68
- })
69
- : 0;
70
- current.splice(index + 1, 0, item.current);
71
- }
72
- const result = {
73
- inserted: diff.inserted.map(item => ({
74
- item,
75
- order: item.currentIndex,
76
- })),
57
+ function insert(item) {
58
+ let idIndex = -1;
59
+ const index = item.before
60
+ ? current.findIndex(({id}) => {
61
+ if (id === item.before?.id) {
62
+ idIndex++;
63
+ if (idIndex === item.beforeIdIndex) return true;
64
+ }
65
+ return false;
66
+ })
67
+ : 0;
68
+ current.splice(index + 1, 0, item.current);
69
+ }
70
+ const result = {
71
+ inserted: diff.inserted.map(item => ({
72
+ item,
73
+ order: item.currentIndex,
74
+ })),
75
+ };
76
+ for (const item of diff.transformed) {
77
+ if (!item.insert) continue;
78
+ const from = item.from;
79
+ item.from = {
80
+ ...item.to,
81
+ current: cloner(from.current),
77
82
  };
78
- for (const item of diff.transformed) {
79
- if (!item.insert)
80
- continue;
81
- const from = item.from;
82
- item.from = {
83
- ...item.to,
84
- current: cloner(from.current),
85
- };
86
- result.inserted.push({
87
- item: item.from,
88
- order: item.to.currentIndex,
89
- });
90
- }
91
- result.inserted.sort((a, b) => a.order - b.order);
92
- for (const item of result.inserted) {
93
- insert(item.item);
94
- }
95
- return result;
83
+ result.inserted.push({
84
+ item: item.from,
85
+ order: item.to.currentIndex,
86
+ });
87
+ }
88
+ result.inserted.sort((a, b) => a.order - b.order);
89
+ for (const item of result.inserted) {
90
+ insert(item.item);
91
+ }
92
+ return result;
96
93
  }
97
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGlmZi5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9saWIvdXRpbHMvZGlmZi50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFpQ0EsU0FBUyxRQUFRLENBQW1CLElBQVM7SUFDM0MsTUFBTSxHQUFHLEdBQUcsSUFBSSxHQUFHLEVBQWtDLENBQUM7SUFDdEQsSUFBSSxNQUFNLEdBQWtCLFNBQVMsQ0FBQztJQUN0QyxLQUFLLE1BQU0sQ0FBQyxLQUFLLEVBQUUsT0FBTyxDQUFDLElBQUksSUFBSSxDQUFDLE9BQU8sRUFBRSxFQUFFLENBQUM7UUFDOUMsTUFBTSxZQUFZLEdBQUcsR0FBRyxDQUFDLEdBQUcsQ0FBQyxPQUFPLENBQUMsRUFBRSxDQUFDLElBQUksRUFBRSxDQUFDO1FBQy9DLElBQUksQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLE9BQU8sQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDO1lBQ3pCLEdBQUcsQ0FBQyxHQUFHLENBQUMsT0FBTyxDQUFDLEVBQUUsRUFBRSxZQUFZLENBQUMsQ0FBQztRQUNwQyxDQUFDO1FBRUQsWUFBWSxDQUFDLElBQUksQ0FBQztZQUNoQixNQUFNO1lBQ04sT0FBTztZQUNQLGFBQWEsRUFBRSxNQUFNLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsTUFBTSxDQUFDLEVBQUUsQ0FBRSxDQUFDLE1BQU0sR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQztZQUMzRCxZQUFZLEVBQUUsS0FBSztTQUNwQixDQUFDLENBQUM7UUFDSCxNQUFNLEdBQUcsT0FBTyxDQUFDO0lBQ25CLENBQUM7SUFDRCxPQUFPLEdBQUcsQ0FBQztBQUNiLENBQUM7QUFFRCxNQUFNLFVBQVUsZ0JBQWdCLENBQzlCLElBQVMsRUFDVCxFQUFPO0lBRVAsTUFBTSxJQUFJLEdBQXFCO1FBQzdCLFFBQVEsRUFBRSxFQUFFO1FBQ1osT0FBTyxFQUFFLEVBQUU7UUFDWCxXQUFXLEVBQUUsRUFBRTtLQUNo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
94
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGlmZi5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9saWIvdXRpbHMvZGlmZi50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFpQ0EsU0FBUyxRQUFRLENBQW1CLElBQVM7SUFDM0MsTUFBTSxHQUFHLEdBQUcsSUFBSSxHQUFHLEVBQWtDLENBQUM7SUFDdEQsSUFBSSxNQUFNLEdBQWtCLFNBQVMsQ0FBQztJQUN0QyxLQUFLLE1BQU0sQ0FBQyxLQUFLLEVBQUUsT0FBTyxDQUFDLElBQUksSUFBSSxDQUFDLE9BQU8sRUFBRSxFQUFFLENBQUM7UUFDOUMsTUFBTSxZQUFZLEdBQUcsR0FBRyxDQUFDLEdBQUcsQ0FBQyxPQUFPLENBQUMsRUFBRSxDQUFDLElBQUksRUFBRSxDQUFDO1FBQy9DLElBQUksQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLE9BQU8sQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDO1lBQ3pCLEdBQUcsQ0FBQyxHQUFHLENBQUMsT0FBTyxDQUFDLEVBQUUsRUFBRSxZQUFZLENBQUMsQ0FBQztRQUNwQyxDQUFDO1FBRUQsWUFBWSxDQUFDLElBQUksQ0FBQztZQUNoQixNQUFNO1lBQ04sT0FBTztZQUNQLGFBQWEsRUFBRSxNQUFNLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsTUFBTSxDQUFDLEVBQUUsQ0FBRSxDQUFDLE1BQU0sR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQztZQUMzRCxZQUFZLEVBQUUsS0FBSztTQUNwQixDQUFDLENBQUM7UUFDSCxNQUFNLEdBQUcsT0FBTyxDQUFDO0lBQ25CLENBQUM7SUFDRCxPQUFPLEdBQUcsQ0FBQztBQUNiLENBQUM7QUFFRCxNQUFNLFVBQVUsZ0JBQWdCLENBQzlCLElBQVMsRUFDVCxFQUFPO0lBRVAsTUFBTSxJQUFJLEdBQXFCO1FBQzdCLFFBQVEsRUFBRSxFQUFFO1FBQ1osT0FBTyxFQUFFLEVBQUU7UUFDWCxXQUFXLEVBQUUsRUFBRTtLQUNo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
@@ -1,3 +1,3 @@
1
1
  export * from './CanvasUtils';
2
2
  export * from './is';
3
- //# sourceMappingURL=index.d.ts.map
3
+ //# sourceMappingURL=index.d.ts.map
@@ -1,3 +1,3 @@
1
1
  export * from './CanvasUtils';
2
2
  export * from './is';
3
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvbGliL3V0aWxzL2luZGV4LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLGNBQWMsZUFBZSxDQUFDO0FBQzlCLGNBQWMsTUFBTSxDQUFDIn0=
3
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvbGliL3V0aWxzL2luZGV4LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLGNBQWMsZUFBZSxDQUFDO0FBQzlCLGNBQWMsTUFBTSxDQUFDIn0=
package/lib/utils/is.d.ts CHANGED
@@ -4,5 +4,7 @@
4
4
  *
5
5
  * @param klass - The class to check against.
6
6
  */
7
- export declare function is<T>(klass: new (...args: any[]) => T): (object: any) => object is T;
8
- //# sourceMappingURL=is.d.ts.map
7
+ export declare function is<T>(
8
+ klass: new (...args: any[]) => T,
9
+ ): (object: any) => object is T;
10
+ //# sourceMappingURL=is.d.ts.map
package/lib/utils/is.js CHANGED
@@ -5,6 +5,6 @@
5
5
  * @param klass - The class to check against.
6
6
  */
7
7
  export function is(klass) {
8
- return (object) => object instanceof klass;
8
+ return object => object instanceof klass;
9
9
  }
10
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaXMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvbGliL3V0aWxzL2lzLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBOzs7OztHQUtHO0FBQ0gsTUFBTSxVQUFVLEVBQUUsQ0FDaEIsS0FBZ0M7SUFFaEMsT0FBTyxDQUFDLE1BQU0sRUFBZSxFQUFFLENBQUMsTUFBTSxZQUFZLEtBQUssQ0FBQztBQUMxRCxDQUFDIn0=
10
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaXMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvbGliL3V0aWxzL2lzLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBOzs7OztHQUtHO0FBQ0gsTUFBTSxVQUFVLEVBQUUsQ0FDaEIsS0FBZ0M7SUFFaEMsT0FBTyxDQUFDLE1BQU0sRUFBZSxFQUFFLENBQUMsTUFBTSxZQUFZLEtBQUssQ0FBQztBQUMxRCxDQUFDIn0=
@@ -1,4 +1,11 @@
1
- import { SignalExtensions } from '@revideo/core';
2
- import { PropertyMetadata } from '../decorators';
3
- export declare function makeSignalExtensions<TSetterValue, TValue extends TSetterValue>(meta?: Partial<PropertyMetadata<TValue>>, owner?: any, name?: string): Partial<SignalExtensions<TSetterValue, TValue>>;
4
- //# sourceMappingURL=makeSignalExtensions.d.ts.map
1
+ import {SignalExtensions} from '@revideo/core';
2
+ import {PropertyMetadata} from '../decorators';
3
+ export declare function makeSignalExtensions<
4
+ TSetterValue,
5
+ TValue extends TSetterValue,
6
+ >(
7
+ meta?: Partial<PropertyMetadata<TValue>>,
8
+ owner?: any,
9
+ name?: string,
10
+ ): Partial<SignalExtensions<TSetterValue, TValue>>;
11
+ //# sourceMappingURL=makeSignalExtensions.d.ts.map
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@revideo/2d",
3
- "version": "0.3.5-alpha.967+522d629",
3
+ "version": "0.3.5-beta.967+669ecc1",
4
4
  "description": "A 2D renderer for revideo",
5
5
  "author": "revideo",
6
6
  "homepage": "https://re.video/",
@@ -30,7 +30,7 @@
30
30
  "devDependencies": {
31
31
  "@preact/signals": "^1.2.1",
32
32
  "@revideo/internal": "^0.0.0",
33
- "@revideo/ui": "^0.3.5-alpha.967+522d629",
33
+ "@revideo/ui": "^0.3.5-beta.967+669ecc1",
34
34
  "clsx": "^2.0.0",
35
35
  "jsdom": "^22.1.0",
36
36
  "preact": "^10.19.2",
@@ -40,10 +40,10 @@
40
40
  "@codemirror/language": "^6.10.1",
41
41
  "@lezer/common": "^1.2.1",
42
42
  "@lezer/highlight": "^1.2.0",
43
- "@revideo/core": "^0.3.5-alpha.967+522d629",
43
+ "@revideo/core": "^0.3.5-beta.967+669ecc1",
44
44
  "code-fns": "^0.8.2",
45
45
  "mathjax-full": "^3.2.2",
46
46
  "parse-svg-path": "^0.1.2"
47
47
  },
48
- "gitHead": "522d6298356da6ee44f1e97932b52e08edb19a12"
48
+ "gitHead": "669ecc1de9dade89c7508968ee31cb83b35095ec"
49
49
  }
@@ -7,7 +7,7 @@ import {
7
7
  useLogger,
8
8
  useThread,
9
9
  } from '@revideo/core';
10
- import {computed, initial, signal} from '../decorators';
10
+ import {computed, initial, nodeName, signal} from '../decorators';
11
11
  import {Rect, RectProps} from './Rect';
12
12
  import reactivePlaybackRate from './__logs__/reactive-playback-rate.md';
13
13
 
@@ -20,6 +20,7 @@ export interface MediaProps extends RectProps {
20
20
  play?: boolean;
21
21
  }
22
22
 
23
+ @nodeName('Media')
23
24
  export abstract class Media extends Rect {
24
25
  @signal()
25
26
  public declare readonly src: SimpleSignal<string, this>;
@@ -22,9 +22,9 @@ export interface VideoProps extends MediaProps {
22
22
  */
23
23
  smoothing?: SignalValue<boolean>;
24
24
  /**
25
- * {@inheritDoc Video.transparency}
25
+ * {@inheritDoc Video.png}
26
26
  */
27
- transparency?: SignalValue<boolean>;
27
+ png?: SignalValue<boolean>;
28
28
  }
29
29
 
30
30
  class ImageCommunication {
@@ -56,7 +56,7 @@ class ImageCommunication {
56
56
  time: number,
57
57
  duration: number,
58
58
  fps: number,
59
- transparency: boolean,
59
+ png: boolean,
60
60
  ) {
61
61
  return new Promise<HTMLImageElement>((resolve, reject) => {
62
62
  if (!import.meta.hot) {
@@ -68,7 +68,7 @@ class ImageCommunication {
68
68
  const image = new Image();
69
69
 
70
70
  const uint8Array = new Uint8Array(event.data.frame.data);
71
- const type = transparency ? 'image/png' : 'image/jpeg';
71
+ const type = png ? 'image/png' : 'image/jpeg';
72
72
  const blob = new Blob([uint8Array], {type});
73
73
  const url = URL.createObjectURL(blob);
74
74
 
@@ -88,7 +88,7 @@ class ImageCommunication {
88
88
  startTime: time,
89
89
  duration,
90
90
  fps,
91
- transparency,
91
+ png,
92
92
  },
93
93
  });
94
94
  });
@@ -122,17 +122,18 @@ export class Video extends Media {
122
122
  public declare readonly smoothing: SimpleSignal<boolean, this>;
123
123
 
124
124
  /**
125
- * Whether the video should be rendered as partially transparent.
125
+ * Whether the video frames should be extracted as PNGs. Uses JPEGs when
126
+ * set to false.
126
127
  *
127
128
  * @remarks
128
- * When enabled, the video frames will be extracted as PNGs with an alpha
129
- * channel. This is significantly slower than using JPEGs which is the default.
129
+ * PNGs have better image quality and support transparency, but they make
130
+ * rendering slower.
130
131
  *
131
132
  * @defaultValue false
132
133
  */
133
- @initial(false)
134
+ @initial(true)
134
135
  @signal()
135
- public declare readonly transparency: SimpleSignal<boolean, this>;
136
+ public declare readonly png: SimpleSignal<boolean, this>;
136
137
 
137
138
  private static readonly pool: Record<string, HTMLVideoElement> = {};
138
139
 
@@ -280,7 +281,7 @@ export class Video extends Media {
280
281
  time,
281
282
  duration,
282
283
  fps,
283
- this.transparency(),
284
+ this.png(),
284
285
  );
285
286
  this.lastFrame = frame;
286
287
  this.lastTime = time;