@revideo/2d 0.2.1-alpha.891 → 0.2.2

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 (198) hide show
  1. package/lib/code/CodeCursor.d.ts +74 -74
  2. package/lib/code/CodeCursor.js +286 -352
  3. package/lib/code/CodeDiffer.d.ts +16 -21
  4. package/lib/code/CodeDiffer.js +41 -39
  5. package/lib/code/CodeFragment.d.ts +8 -16
  6. package/lib/code/CodeFragment.js +36 -36
  7. package/lib/code/CodeHighlighter.d.ts +59 -59
  8. package/lib/code/CodeHighlighter.js +1 -1
  9. package/lib/code/CodeMetrics.d.ts +8 -12
  10. package/lib/code/CodeMetrics.js +24 -26
  11. package/lib/code/CodeRange.d.ts +5 -21
  12. package/lib/code/CodeRange.js +124 -131
  13. package/lib/code/CodeScope.d.ts +8 -18
  14. package/lib/code/CodeScope.js +61 -59
  15. package/lib/code/CodeSelection.d.ts +4 -9
  16. package/lib/code/CodeSelection.js +8 -8
  17. package/lib/code/CodeSignal.d.ts +47 -74
  18. package/lib/code/CodeSignal.js +189 -206
  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 +19 -21
  24. package/lib/code/LezerHighlighter.js +101 -101
  25. package/lib/code/diff.d.ts +9 -12
  26. package/lib/code/diff.js +205 -218
  27. package/lib/code/extractRange.d.ts +4 -7
  28. package/lib/code/extractRange.js +71 -79
  29. package/lib/code/index.d.ts +1 -1
  30. package/lib/code/index.js +1 -1
  31. package/lib/components/Audio.d.ts +11 -11
  32. package/lib/components/Audio.js +109 -115
  33. package/lib/components/Bezier.d.ts +18 -18
  34. package/lib/components/Bezier.js +75 -86
  35. package/lib/components/Circle.d.ts +90 -95
  36. package/lib/components/Circle.js +74 -85
  37. package/lib/components/Code.d.ts +211 -244
  38. package/lib/components/Code.js +269 -317
  39. package/lib/components/CodeBlock.d.ts +67 -109
  40. package/lib/components/CodeBlock.js +373 -414
  41. package/lib/components/CubicBezier.d.ts +36 -36
  42. package/lib/components/CubicBezier.js +49 -52
  43. package/lib/components/Curve.d.ts +198 -208
  44. package/lib/components/Curve.js +269 -270
  45. package/lib/components/Grid.d.ts +42 -47
  46. package/lib/components/Grid.js +56 -63
  47. package/lib/components/Icon.d.ts +50 -55
  48. package/lib/components/Icon.js +50 -58
  49. package/lib/components/Img.d.ts +79 -86
  50. package/lib/components/Img.js +181 -193
  51. package/lib/components/Knot.d.ts +78 -97
  52. package/lib/components/Knot.js +60 -81
  53. package/lib/components/Latex.d.ts +12 -12
  54. package/lib/components/Latex.js +65 -77
  55. package/lib/components/Layout.d.ts +413 -455
  56. package/lib/components/Layout.js +681 -666
  57. package/lib/components/Line.d.ts +49 -61
  58. package/lib/components/Line.js +193 -216
  59. package/lib/components/Media.d.ts +35 -35
  60. package/lib/components/Media.js +134 -135
  61. package/lib/components/Node.d.ts +830 -875
  62. package/lib/components/Node.js +1314 -1383
  63. package/lib/components/Path.d.ts +14 -35
  64. package/lib/components/Path.js +89 -100
  65. package/lib/components/Polygon.d.ts +55 -60
  66. package/lib/components/Polygon.js +66 -71
  67. package/lib/components/QuadBezier.d.ts +29 -29
  68. package/lib/components/QuadBezier.js +45 -50
  69. package/lib/components/Ray.d.ts +28 -28
  70. package/lib/components/Ray.js +64 -71
  71. package/lib/components/Rect.d.ts +108 -115
  72. package/lib/components/Rect.js +72 -78
  73. package/lib/components/SVG.d.ts +139 -165
  74. package/lib/components/SVG.js +541 -609
  75. package/lib/components/Shape.d.ts +35 -44
  76. package/lib/components/Shape.js +127 -112
  77. package/lib/components/Spline.d.ts +40 -46
  78. package/lib/components/Spline.js +175 -190
  79. package/lib/components/Txt.d.ts +44 -55
  80. package/lib/components/Txt.js +155 -156
  81. package/lib/components/TxtLeaf.d.ts +16 -20
  82. package/lib/components/TxtLeaf.js +158 -177
  83. package/lib/components/Video.d.ts +41 -41
  84. package/lib/components/Video.js +135 -138
  85. package/lib/components/View2D.d.ts +21 -21
  86. package/lib/components/View2D.js +85 -98
  87. package/lib/components/index.d.ts +1 -1
  88. package/lib/components/index.js +1 -1
  89. package/lib/components/types.d.ts +9 -22
  90. package/lib/components/types.js +1 -1
  91. package/lib/curves/ArcSegment.d.ts +24 -36
  92. package/lib/curves/ArcSegment.js +94 -145
  93. package/lib/curves/CircleSegment.d.ts +16 -26
  94. package/lib/curves/CircleSegment.js +49 -56
  95. package/lib/curves/CubicBezierSegment.d.ts +13 -18
  96. package/lib/curves/CubicBezierSegment.js +46 -79
  97. package/lib/curves/CurveDrawingInfo.d.ts +9 -9
  98. package/lib/curves/CurveDrawingInfo.js +1 -1
  99. package/lib/curves/CurvePoint.d.ts +13 -13
  100. package/lib/curves/CurvePoint.js +1 -1
  101. package/lib/curves/CurveProfile.d.ts +5 -5
  102. package/lib/curves/CurveProfile.js +1 -1
  103. package/lib/curves/KnotInfo.d.ts +8 -8
  104. package/lib/curves/KnotInfo.js +1 -1
  105. package/lib/curves/LineSegment.d.ts +14 -19
  106. package/lib/curves/LineSegment.js +42 -42
  107. package/lib/curves/Polynomial.d.ts +110 -110
  108. package/lib/curves/Polynomial.js +239 -249
  109. package/lib/curves/Polynomial2D.d.ts +20 -20
  110. package/lib/curves/Polynomial2D.js +42 -46
  111. package/lib/curves/PolynomialSegment.d.ts +37 -42
  112. package/lib/curves/PolynomialSegment.js +81 -83
  113. package/lib/curves/QuadBezierSegment.d.ts +12 -12
  114. package/lib/curves/QuadBezierSegment.js +41 -71
  115. package/lib/curves/Segment.d.ts +7 -12
  116. package/lib/curves/Segment.js +3 -2
  117. package/lib/curves/UniformPolynomialCurveSampler.d.ts +34 -34
  118. package/lib/curves/UniformPolynomialCurveSampler.js +62 -68
  119. package/lib/curves/createCurveProfileLerp.d.ts +6 -17
  120. package/lib/curves/createCurveProfileLerp.js +208 -211
  121. package/lib/curves/getBezierSplineProfile.d.ts +4 -8
  122. package/lib/curves/getBezierSplineProfile.js +101 -145
  123. package/lib/curves/getCircleProfile.d.ts +4 -10
  124. package/lib/curves/getCircleProfile.js +40 -72
  125. package/lib/curves/getPathProfile.d.ts +2 -2
  126. package/lib/curves/getPathProfile.js +112 -135
  127. package/lib/curves/getPointAtDistance.d.ts +4 -7
  128. package/lib/curves/getPointAtDistance.js +12 -12
  129. package/lib/curves/getPolylineProfile.d.ts +4 -8
  130. package/lib/curves/getPolylineProfile.js +54 -67
  131. package/lib/curves/getRectProfile.d.ts +4 -9
  132. package/lib/curves/getRectProfile.js +52 -117
  133. package/lib/curves/index.d.ts +1 -1
  134. package/lib/curves/index.js +1 -1
  135. package/lib/decorators/canvasStyleSignal.d.ts +3 -3
  136. package/lib/decorators/canvasStyleSignal.js +10 -10
  137. package/lib/decorators/colorSignal.d.ts +1 -1
  138. package/lib/decorators/colorSignal.js +7 -7
  139. package/lib/decorators/compound.d.ts +2 -4
  140. package/lib/decorators/compound.js +23 -43
  141. package/lib/decorators/computed.d.ts +1 -1
  142. package/lib/decorators/computed.js +9 -9
  143. package/lib/decorators/defaultStyle.d.ts +2 -5
  144. package/lib/decorators/defaultStyle.js +11 -11
  145. package/lib/decorators/filtersSignal.d.ts +8 -28
  146. package/lib/decorators/filtersSignal.js +64 -87
  147. package/lib/decorators/index.d.ts +1 -1
  148. package/lib/decorators/index.js +1 -1
  149. package/lib/decorators/initializers.d.ts +2 -5
  150. package/lib/decorators/initializers.js +19 -18
  151. package/lib/decorators/nodeName.d.ts +1 -1
  152. package/lib/decorators/nodeName.js +4 -4
  153. package/lib/decorators/signal.d.ts +20 -40
  154. package/lib/decorators/signal.js +104 -113
  155. package/lib/decorators/spacingSignal.d.ts +1 -1
  156. package/lib/decorators/spacingSignal.js +13 -13
  157. package/lib/decorators/vector2Signal.d.ts +7 -13
  158. package/lib/decorators/vector2Signal.js +13 -15
  159. package/lib/index.d.ts +1 -1
  160. package/lib/index.js +1 -1
  161. package/lib/jsx-dev-runtime.d.ts +3 -3
  162. package/lib/jsx-dev-runtime.js +3 -3
  163. package/lib/jsx-runtime.d.ts +9 -19
  164. package/lib/jsx-runtime.js +18 -18
  165. package/lib/partials/Filter.d.ts +16 -24
  166. package/lib/partials/Filter.js +69 -69
  167. package/lib/partials/Gradient.d.ts +24 -30
  168. package/lib/partials/Gradient.js +58 -69
  169. package/lib/partials/Pattern.d.ts +9 -14
  170. package/lib/partials/Pattern.js +24 -30
  171. package/lib/partials/ShaderConfig.d.ts +74 -81
  172. package/lib/partials/ShaderConfig.js +23 -22
  173. package/lib/partials/index.d.ts +1 -1
  174. package/lib/partials/index.js +1 -1
  175. package/lib/partials/types.d.ts +6 -19
  176. package/lib/partials/types.js +1 -1
  177. package/lib/scenes/Scene2D.d.ts +23 -42
  178. package/lib/scenes/Scene2D.js +151 -161
  179. package/lib/scenes/index.d.ts +1 -1
  180. package/lib/scenes/index.js +1 -1
  181. package/lib/scenes/makeScene2D.d.ts +5 -7
  182. package/lib/scenes/makeScene2D.js +10 -10
  183. package/lib/scenes/useScene2D.d.ts +2 -2
  184. package/lib/scenes/useScene2D.js +3 -3
  185. package/lib/utils/CanvasUtils.d.ts +21 -93
  186. package/lib/utils/CanvasUtils.js +105 -186
  187. package/lib/utils/diff.d.ts +18 -25
  188. package/lib/utils/diff.js +87 -84
  189. package/lib/utils/index.d.ts +1 -1
  190. package/lib/utils/index.js +1 -1
  191. package/lib/utils/is.d.ts +2 -4
  192. package/lib/utils/is.js +2 -2
  193. package/lib/utils/makeSignalExtensions.d.ts +4 -11
  194. package/lib/utils/makeSignalExtensions.js +17 -17
  195. package/package.json +5 -5
  196. package/lib/components/AudioTest.d.ts +0 -99
  197. package/lib/components/AudioTest.d.ts.map +0 -1
  198. package/lib/components/AudioTest.js +0 -281
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,11 +1,4 @@
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
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,20 +1,20 @@
1
- import {capitalize} from '@revideo/core';
1
+ import { capitalize } from '@revideo/core';
2
2
  export function makeSignalExtensions(meta = {}, owner, name) {
3
- const extensions = {};
4
- if (name && owner) {
5
- const setter = meta.setter ?? owner?.[`set${capitalize(name)}`];
6
- if (setter) {
7
- extensions.setter = setter.bind(owner);
3
+ const extensions = {};
4
+ if (name && owner) {
5
+ const setter = meta.setter ?? owner?.[`set${capitalize(name)}`];
6
+ if (setter) {
7
+ extensions.setter = setter.bind(owner);
8
+ }
9
+ const getter = meta.getter ?? owner?.[`get${capitalize(name)}`];
10
+ if (getter) {
11
+ extensions.getter = getter.bind(owner);
12
+ }
13
+ const tweener = meta.tweener ?? owner?.[`tween${capitalize(name)}`];
14
+ if (tweener) {
15
+ extensions.tweener = tweener.bind(owner);
16
+ }
8
17
  }
9
- const getter = meta.getter ?? owner?.[`get${capitalize(name)}`];
10
- if (getter) {
11
- extensions.getter = getter.bind(owner);
12
- }
13
- const tweener = meta.tweener ?? owner?.[`tween${capitalize(name)}`];
14
- if (tweener) {
15
- extensions.tweener = tweener.bind(owner);
16
- }
17
- }
18
- return extensions;
18
+ return extensions;
19
19
  }
20
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibWFrZVNpZ25hbEV4dGVuc2lvbnMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvbGliL3V0aWxzL21ha2VTaWduYWxFeHRlbnNpb25zLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBbUIsVUFBVSxFQUFDLE1BQU0sZUFBZSxDQUFDO0FBRzNELE1BQU0sVUFBVSxvQkFBb0IsQ0FDbEMsT0FBMEMsRUFBRSxFQUM1QyxLQUFXLEVBQ1gsSUFBYTtJQUViLE1BQU0sVUFBVSxHQUFvRCxFQUFFLENBQUM7SUFFdkUsSUFBSSxJQUFJLElBQUksS0FBSyxFQUFFLENBQUM7UUFDbEIsTUFBTSxNQUFNLEdBQUcsSUFBSSxDQUFDLE1BQU0sSUFBSSxLQUFLLEVBQUUsQ0FBQyxNQUFNLFVBQVUsQ0FBQyxJQUFJLENBQUMsRUFBRSxDQUFDLENBQUM7UUFDaEUsSUFBSSxNQUFNLEVBQUUsQ0FBQztZQUNYLFVBQVUsQ0FBQyxNQUFNLEdBQUcsTUFBTSxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsQ0FBQztRQUN6QyxDQUFDO1FBRUQsTUFBTSxNQUFNLEdBQUcsSUFBSSxDQUFDLE1BQU0sSUFBSSxLQUFLLEVBQUUsQ0FBQyxNQUFNLFVBQVUsQ0FBQyxJQUFJLENBQUMsRUFBRSxDQUFDLENBQUM7UUFDaEUsSUFBSSxNQUFNLEVBQUUsQ0FBQztZQUNYLFVBQVUsQ0FBQyxNQUFNLEdBQUcsTUFBTSxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsQ0FBQztRQUN6QyxDQUFDO1FBRUQsTUFBTSxPQUFPLEdBQUcsSUFBSSxDQUFDLE9BQU8sSUFBSSxLQUFLLEVBQUUsQ0FBQyxRQUFRLFVBQVUsQ0FBQyxJQUFJLENBQUMsRUFBRSxDQUFDLENBQUM7UUFDcEUsSUFBSSxPQUFPLEVBQUUsQ0FBQztZQUNaLFVBQVUsQ0FBQyxPQUFPLEdBQUcsT0FBTyxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsQ0FBQztRQUMzQyxDQUFDO0lBQ0gsQ0FBQztJQUVELE9BQU8sVUFBVSxDQUFDO0FBQ3BCLENBQUMifQ==
20
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibWFrZVNpZ25hbEV4dGVuc2lvbnMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvbGliL3V0aWxzL21ha2VTaWduYWxFeHRlbnNpb25zLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBbUIsVUFBVSxFQUFDLE1BQU0sZUFBZSxDQUFDO0FBRzNELE1BQU0sVUFBVSxvQkFBb0IsQ0FDbEMsT0FBMEMsRUFBRSxFQUM1QyxLQUFXLEVBQ1gsSUFBYTtJQUViLE1BQU0sVUFBVSxHQUFvRCxFQUFFLENBQUM7SUFFdkUsSUFBSSxJQUFJLElBQUksS0FBSyxFQUFFLENBQUM7UUFDbEIsTUFBTSxNQUFNLEdBQUcsSUFBSSxDQUFDLE1BQU0sSUFBSSxLQUFLLEVBQUUsQ0FBQyxNQUFNLFVBQVUsQ0FBQyxJQUFJLENBQUMsRUFBRSxDQUFDLENBQUM7UUFDaEUsSUFBSSxNQUFNLEVBQUUsQ0FBQztZQUNYLFVBQVUsQ0FBQyxNQUFNLEdBQUcsTUFBTSxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsQ0FBQztRQUN6QyxDQUFDO1FBRUQsTUFBTSxNQUFNLEdBQUcsSUFBSSxDQUFDLE1BQU0sSUFBSSxLQUFLLEVBQUUsQ0FBQyxNQUFNLFVBQVUsQ0FBQyxJQUFJLENBQUMsRUFBRSxDQUFDLENBQUM7UUFDaEUsSUFBSSxNQUFNLEVBQUUsQ0FBQztZQUNYLFVBQVUsQ0FBQyxNQUFNLEdBQUcsTUFBTSxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsQ0FBQztRQUN6QyxDQUFDO1FBRUQsTUFBTSxPQUFPLEdBQUcsSUFBSSxDQUFDLE9BQU8sSUFBSSxLQUFLLEVBQUUsQ0FBQyxRQUFRLFVBQVUsQ0FBQyxJQUFJLENBQUMsRUFBRSxDQUFDLENBQUM7UUFDcEUsSUFBSSxPQUFPLEVBQUUsQ0FBQztZQUNaLFVBQVUsQ0FBQyxPQUFPLEdBQUcsT0FBTyxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsQ0FBQztRQUMzQyxDQUFDO0lBQ0gsQ0FBQztJQUVELE9BQU8sVUFBVSxDQUFDO0FBQ3BCLENBQUMifQ==
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@revideo/2d",
3
- "version": "0.2.1-alpha.891+b6a0386",
3
+ "version": "0.2.2",
4
4
  "description": "A 2D renderer for revideo",
5
5
  "author": "revideo",
6
6
  "homepage": "https://re.video/",
@@ -29,8 +29,8 @@
29
29
  ],
30
30
  "devDependencies": {
31
31
  "@preact/signals": "^1.2.1",
32
- "@revideo/internal": "^0.0.0",
33
- "@revideo/ui": "^0.2.1-alpha.891+b6a0386",
32
+ "@revideo/internal": "0.0.0",
33
+ "@revideo/ui": "^0.2.2",
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.2.1-alpha.891+b6a0386",
43
+ "@revideo/core": "^0.2.2",
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": "b6a03863cd5ee2f9bde38d1b199e8b7a03ab7bdc"
48
+ "gitHead": "aed6717a2c1364b37c99315a099bab56d8017e99"
49
49
  }
@@ -1,99 +0,0 @@
1
- import {SerializedVector2, SignalValue, SimpleSignal} from '@revideo/core';
2
- import {DesiredLength} from '../partials';
3
- import {Rect, RectProps} from './Rect';
4
- export interface AudioTestProps extends RectProps {
5
- /**
6
- * {@inheritDoc Video.src}
7
- */
8
- src?: SignalValue<string>;
9
- /**
10
- * {@inheritDoc Video.alpha}
11
- */
12
- alpha?: SignalValue<number>;
13
- /**
14
- * {@inheritDoc Video.smoothing}
15
- */
16
- smoothing?: SignalValue<boolean>;
17
- /**
18
- * {@inheritDoc Video.loop}
19
- */
20
- loop?: SignalValue<boolean>;
21
- /**
22
- * {@inheritDoc Video.playbackRate}
23
- */
24
- playbackRate?: number;
25
- /**
26
- * The starting time for this video in seconds.
27
- */
28
- time?: SignalValue<number>;
29
- play?: boolean;
30
- }
31
- export declare class AudioTest extends Rect {
32
- private static readonly pool;
33
- /**
34
- * The source of this video.
35
- *
36
- * @example
37
- * Using a local video:
38
- * ```tsx
39
- * import video from './example.mp4';
40
- * // ...
41
- * view.add(<Video src={video} />)
42
- * ```
43
- * Loading an image from the internet:
44
- * ```tsx
45
- * view.add(<Video src="https://example.com/video.mp4" />)
46
- * ```
47
- */
48
- readonly src: SimpleSignal<string, this>;
49
- /**
50
- * The alpha value of this video.
51
- *
52
- * @remarks
53
- * Unlike opacity, the alpha value affects only the video itself, leaving the
54
- * fill, stroke, and children intact.
55
- */
56
- readonly alpha: SimpleSignal<number, this>;
57
- /**
58
- * Whether the video should be smoothed.
59
- *
60
- * @remarks
61
- * When disabled, the video will be scaled using the nearest neighbor
62
- * interpolation with no smoothing. The resulting video will appear pixelated.
63
- *
64
- * @defaultValue true
65
- */
66
- readonly smoothing: SimpleSignal<boolean, this>;
67
- /**
68
- * Whether this video should loop upon reaching the end.
69
- */
70
- readonly loop: SimpleSignal<boolean, this>;
71
- /**
72
- * The rate at which the video plays, as multiples of the normal speed.
73
- *
74
- * @defaultValue 1
75
- */
76
- readonly playbackRate: SimpleSignal<number, this>;
77
- protected readonly time: SimpleSignal<number, this>;
78
- protected readonly playing: SimpleSignal<boolean, this>;
79
- private lastTime;
80
- constructor({play, ...props}: AudioTestProps);
81
- isPlaying(): boolean;
82
- getCurrentTime(): number;
83
- getDuration(): number;
84
- protected desiredSize(): SerializedVector2<DesiredLength>;
85
- completion(): number;
86
- protected video(): HTMLAudioElement;
87
- protected seekedVideo(): HTMLAudioElement;
88
- protected fastSeekedVideo(): HTMLAudioElement;
89
- protected draw(context: CanvasRenderingContext2D): void;
90
- protected applyFlex(): void;
91
- protected setCurrentTime(value: number): void;
92
- protected setPlaybackRate(playbackRate: number): void;
93
- play(): void;
94
- pause(): void;
95
- seek(time: number): void;
96
- clampTime(time: number): number;
97
- protected collectAsyncResources(): void;
98
- }
99
- //# sourceMappingURL=AudioTest.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"AudioTest.d.ts","sourceRoot":"","sources":["../../src/lib/components/AudioTest.ts"],"names":[],"mappings":"AAAA,OAAO,EAIH,iBAAiB,EACjB,WAAW,EACX,YAAY,EAKb,MAAM,qBAAqB,CAAC;AAE7B,OAAO,EAAC,aAAa,EAAC,MAAM,aAAa,CAAC;AAE1C,OAAO,EAAC,IAAI,EAAE,SAAS,EAAC,MAAM,QAAQ,CAAC;AAGvC,MAAM,WAAW,cAAe,SAAQ,SAAS;IAC/C;;OAEG;IACH,GAAG,CAAC,EAAE,WAAW,CAAC,MAAM,CAAC,CAAC;IAC1B;;OAEG;IACH,KAAK,CAAC,EAAE,WAAW,CAAC,MAAM,CAAC,CAAC;IAC5B;;OAEG;IACH,SAAS,CAAC,EAAE,WAAW,CAAC,OAAO,CAAC,CAAC;IACjC;;OAEG;IACH,IAAI,CAAC,EAAE,WAAW,CAAC,OAAO,CAAC,CAAC;IAC5B;;OAEG;IACH,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB;;OAEG;IACH,IAAI,CAAC,EAAE,WAAW,CAAC,MAAM,CAAC,CAAC;IAC3B,IAAI,CAAC,EAAE,OAAO,CAAC;CAChB;AAED,qBACa,SAAU,SAAQ,IAAI;IACjC,OAAO,CAAC,MAAM,CAAC,QAAQ,CAAC,IAAI,CAAwC;IAEpE;;;;;;;;;;;;;;OAcG;IACH,SACwB,GAAG,EAAE,YAAY,CAAC,MAAM,EAAE,IAAI,CAAC,CAAC;IAExD;;;;;;OAMG;IACH,SAEwB,KAAK,EAAE,YAAY,CAAC,MAAM,EAAE,IAAI,CAAC,CAAC;IAE1D;;;;;;;;OAQG;IACH,SAEwB,SAAS,EAAE,YAAY,CAAC,OAAO,EAAE,IAAI,CAAC,CAAC;IAE/D;;OAEG;IACH,SAEwB,IAAI,EAAE,YAAY,CAAC,OAAO,EAAE,IAAI,CAAC,CAAC;IAE1D;;;;OAIG;IACH,SAEwB,YAAY,EAAE,YAAY,CAAC,MAAM,EAAE,IAAI,CAAC,CAAC;IAEjE,mBAE2B,IAAI,EAAE,YAAY,CAAC,MAAM,EAAE,IAAI,CAAC,CAAC;IAE5D,mBAE2B,OAAO,EAAE,YAAY,CAAC,OAAO,EAAE,IAAI,CAAC,CAAC;IAEhE,OAAO,CAAC,QAAQ,CAAM;gBAEH,EAAC,IAAI,EAAE,GAAG,KAAK,EAAC,EAAE,cAAc;IAO5C,SAAS,IAAI,OAAO;IAIpB,cAAc,IAAI,MAAM;IAIxB,WAAW,IAAI,MAAM;cAIT,WAAW,IAAI,iBAAiB,CAAC,aAAa,CAAC;IAclD,UAAU,IAAI,MAAM;IAMpC,SAAS,CAAC,KAAK,IAAI,gBAAgB;IAqCnC,SAAS,CAAC,WAAW,IAAI,gBAAgB;IAqBzC,SAAS,CAAC,eAAe,IAAI,gBAAgB;cAyC1B,IAAI,CAAC,OAAO,EAAE,wBAAwB;cAoCtC,SAAS;IAQ5B,SAAS,CAAC,cAAc,CAAC,KAAK,EAAE,MAAM;IA2BtC,SAAS,CAAC,eAAe,CAAC,YAAY,EAAE,MAAM;IA2BvC,IAAI;IASJ,KAAK;IAML,IAAI,CAAC,IAAI,EAAE,MAAM;IAWjB,SAAS,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM;cASnB,qBAAqB;CAIzC"}
@@ -1,281 +0,0 @@
1
- var __decorate =
2
- (this && this.__decorate) ||
3
- function (decorators, target, key, desc) {
4
- var c = arguments.length,
5
- r =
6
- c < 3
7
- ? target
8
- : desc === null
9
- ? (desc = Object.getOwnPropertyDescriptor(target, key))
10
- : desc,
11
- d;
12
- if (typeof Reflect === 'object' && typeof Reflect.decorate === 'function')
13
- r = Reflect.decorate(decorators, target, key, desc);
14
- else
15
- for (var i = decorators.length - 1; i >= 0; i--)
16
- if ((d = decorators[i]))
17
- r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
18
- return c > 3 && r && Object.defineProperty(target, key, r), r;
19
- };
20
- var AudioTest_1;
21
- import {
22
- BBox,
23
- DependencyContext,
24
- PlaybackState,
25
- clamp,
26
- isReactive,
27
- useLogger,
28
- useThread,
29
- } from '@revideo/core';
30
- import {computed, initial, nodeName, signal} from '../decorators';
31
- import {Rect} from './Rect';
32
- let AudioTest = (AudioTest_1 = class AudioTest extends Rect {
33
- constructor({play, ...props}) {
34
- super(props);
35
- this.lastTime = -1;
36
- if (play) {
37
- this.play();
38
- }
39
- }
40
- isPlaying() {
41
- return this.playing();
42
- }
43
- getCurrentTime() {
44
- return this.clampTime(this.time());
45
- }
46
- getDuration() {
47
- return this.video().duration;
48
- }
49
- desiredSize() {
50
- const custom = super.desiredSize();
51
- if (custom.x === null && custom.y === null) {
52
- const image = this.video();
53
- return {
54
- x: 300,
55
- y: 300,
56
- };
57
- }
58
- return custom;
59
- }
60
- completion() {
61
- console.log('completion of video');
62
- return this.clampTime(this.time()) / this.video().duration;
63
- }
64
- video() {
65
- const src = this.src();
66
- console.log('src video', src);
67
- const key = `${this.key}/${src}`;
68
- let video = AudioTest_1.pool[key];
69
- if (!video) {
70
- console.log('before creating video element');
71
- video = document.createElement('video');
72
- document.body.appendChild(video);
73
- video.addEventListener('ended', () => {
74
- console.log('Video ended, triggered by event listener haha');
75
- this.playing(false); // Update the playing state
76
- // Additional logic for when audio ends
77
- });
78
- console.log('after creating video element');
79
- video.src = src;
80
- AudioTest_1.pool[key] = video;
81
- }
82
- if (video.readyState < 2) {
83
- DependencyContext.collectPromise(
84
- new Promise(resolve => {
85
- const listener = () => {
86
- resolve();
87
- video.removeEventListener('canplay', listener);
88
- };
89
- video.addEventListener('canplay', listener);
90
- }),
91
- );
92
- }
93
- return video;
94
- }
95
- seekedVideo() {
96
- console.log('in seekedVideo');
97
- const video = this.video();
98
- const time = this.clampTime(this.time());
99
- video.playbackRate = this.playbackRate();
100
- if (!video.paused) {
101
- video.pause();
102
- }
103
- if (this.lastTime === time) {
104
- return video;
105
- }
106
- this.setCurrentTime(time);
107
- return video;
108
- }
109
- fastSeekedVideo() {
110
- const video = this.video();
111
- const time = this.clampTime(this.time());
112
- video.playbackRate = this.playbackRate();
113
- if (this.lastTime === time) {
114
- return video;
115
- }
116
- console.log(
117
- 'calculating if playing:',
118
- this.playing(),
119
- time < video.duration,
120
- video.playbackRate,
121
- );
122
- console.log('time', time);
123
- console.log('this.duration', video.duration);
124
- if (time < video.duration) {
125
- console.log("oh shit, we're over tiem!");
126
- this.pause();
127
- this.remove();
128
- }
129
- const playing =
130
- this.playing() && time < video.duration && video.playbackRate > 0;
131
- if (playing) {
132
- if (video.paused) {
133
- DependencyContext.collectPromise(video.play());
134
- }
135
- } else {
136
- if (!video.paused) {
137
- video.pause();
138
- }
139
- }
140
- console.log('video difference', Math.abs(video.currentTime - time) > 0.3);
141
- if (Math.abs(video.currentTime - time) > 0.3) {
142
- this.setCurrentTime(time);
143
- } else if (!playing) {
144
- video.currentTime = time;
145
- }
146
- return video;
147
- }
148
- draw(context) {
149
- console.log('drawing video');
150
- this.drawShape(context);
151
- const alpha = this.alpha();
152
- if (alpha > 0) {
153
- const playbackState = this.view().playbackState();
154
- console.log('in video playbackState', playbackState);
155
- const video =
156
- playbackState === PlaybackState.Playing ||
157
- playbackState === PlaybackState.Presenting
158
- ? this.fastSeekedVideo()
159
- : this.seekedVideo();
160
- console.log('in video video', video);
161
- const box = BBox.fromSizeCentered(this.computedSize());
162
- context.save();
163
- context.clip(this.getPath());
164
- if (alpha < 1) {
165
- context.globalAlpha *= alpha;
166
- }
167
- context.imageSmoothingEnabled = this.smoothing();
168
- //drawImage(context, video, box);
169
- context.restore();
170
- }
171
- console.log('this.clip() video', this.clip());
172
- if (this.clip()) {
173
- context.clip(this.getPath());
174
- }
175
- this.drawChildren(context);
176
- }
177
- applyFlex() {
178
- super.applyFlex();
179
- const video = this.video();
180
- this.element.style.aspectRatio = (this.ratio() ?? 300 / 300).toString();
181
- }
182
- setCurrentTime(value) {
183
- console.log('setcurrenttime called on video with value', value);
184
- const video = this.video();
185
- console.log('setcurrenttime this.video', video);
186
- console.log('setcurrenttime this.video.readyState', video.readyState);
187
- if (video.readyState < 2) {
188
- console.log('some fucking failure haha bruder');
189
- return;
190
- }
191
- video.currentTime = value;
192
- this.lastTime = value;
193
- if (video.seeking) {
194
- DependencyContext.collectPromise(
195
- new Promise(resolve => {
196
- const listener = () => {
197
- resolve();
198
- video.removeEventListener('seeked', listener);
199
- };
200
- video.addEventListener('seeked', listener);
201
- }),
202
- );
203
- }
204
- }
205
- setPlaybackRate(playbackRate) {
206
- let value;
207
- if (isReactive(playbackRate)) {
208
- value = playbackRate();
209
- useLogger().warn({
210
- message: 'Invalid value set as the playback rate',
211
- remarks:
212
- '<p>The <code>playbackRate</code> of a <code>Video</code> cannot be reactive.</p>\n<p>Make sure to use a concrete value and not a function:</p>\n<pre class="wrong"><code class="language-ts">video.<span class="hljs-title function_">playbackRate</span>(<span class="hljs-function">() =&gt;</span> <span class="hljs-number">7</span>);</code></pre><pre class="correct"><code class="language-ts">video.<span class="hljs-title function_">playbackRate</span>(<span class="hljs-number">7</span>);</code></pre><p>If you&#39;re using a signal, extract its value before passing it to the property:</p>\n<pre class="wrong"><code class="language-ts">video.<span class="hljs-title function_">playbackRate</span>(mySignal);</code></pre><pre class="correct"><code class="language-ts">video.<span class="hljs-title function_">playbackRate</span>(<span class="hljs-title function_">mySignal</span>());</code></pre>',
213
- inspect: this.key,
214
- stack: new Error().stack,
215
- });
216
- } else {
217
- value = playbackRate;
218
- }
219
- this.playbackRate.context.setter(value);
220
- if (this.playing()) {
221
- if (value === 0) {
222
- this.pause();
223
- } else {
224
- const time = useThread().time;
225
- const start = time();
226
- const offset = this.time();
227
- this.time(() => this.clampTime(offset + (time() - start) * value));
228
- }
229
- }
230
- }
231
- play() {
232
- const time = useThread().time;
233
- const start = time();
234
- const offset = this.time();
235
- const playbackRate = this.playbackRate();
236
- this.playing(true);
237
- this.time(() => this.clampTime(offset + (time() - start) * playbackRate));
238
- }
239
- pause() {
240
- this.playing(false);
241
- this.time.save();
242
- this.video().pause();
243
- }
244
- seek(time) {
245
- console.log('seek called on video');
246
- const playing = this.playing();
247
- this.time(this.clampTime(time));
248
- if (playing) {
249
- this.play();
250
- } else {
251
- this.pause();
252
- }
253
- }
254
- clampTime(time) {
255
- const duration = this.video().duration;
256
- if (this.loop()) {
257
- time %= duration;
258
- }
259
- console.log(`in clamptime (VIDEO), calling clamp(0, ${duration}, ${time}`);
260
- return clamp(0, duration, time);
261
- }
262
- collectAsyncResources() {
263
- super.collectAsyncResources();
264
- this.seekedVideo();
265
- }
266
- });
267
- AudioTest.pool = {};
268
- __decorate([signal()], AudioTest.prototype, 'src', void 0);
269
- __decorate([initial(1), signal()], AudioTest.prototype, 'alpha', void 0);
270
- __decorate([initial(true), signal()], AudioTest.prototype, 'smoothing', void 0);
271
- __decorate([initial(false), signal()], AudioTest.prototype, 'loop', void 0);
272
- __decorate([initial(1), signal()], AudioTest.prototype, 'playbackRate', void 0);
273
- __decorate([initial(0), signal()], AudioTest.prototype, 'time', void 0);
274
- __decorate([initial(false), signal()], AudioTest.prototype, 'playing', void 0);
275
- __decorate([computed()], AudioTest.prototype, 'completion', null);
276
- __decorate([computed()], AudioTest.prototype, 'video', null);
277
- __decorate([computed()], AudioTest.prototype, 'seekedVideo', null);
278
- __decorate([computed()], AudioTest.prototype, 'fastSeekedVideo', null);
279
- AudioTest = AudioTest_1 = __decorate([nodeName('AudioTest')], AudioTest);
280
- export {AudioTest};
281
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiQXVkaW9UZXN0LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vc3JjL2xpYi9jb21wb25lbnRzL0F1ZGlvVGVzdC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7Ozs7O0FBQUEsT0FBTyxFQUNILElBQUksRUFDSixpQkFBaUIsRUFDakIsYUFBYSxFQUliLEtBQUssRUFDTCxVQUFVLEVBQ1YsU0FBUyxFQUNULFNBQVMsR0FDVixNQUFNLHFCQUFxQixDQUFDO0FBQzdCLE9BQU8sRUFBQyxRQUFRLEVBQUUsT0FBTyxFQUFFLFFBQVEsRUFBRSxNQUFNLEVBQUMsTUFBTSxlQUFlLENBQUM7QUFHbEUsT0FBTyxFQUFDLElBQUksRUFBWSxNQUFNLFFBQVEsQ0FBQztBQWdDaEMsSUFBTSxTQUFTLGlCQUFmLE1BQU0sU0FBVSxTQUFRLElBQUk7SUF1RWpDLFlBQW1CLEVBQUMsSUFBSSxFQUFFLEdBQUcsS0FBSyxFQUFpQjtRQUNqRCxLQUFLLENBQUMsS0FBSyxDQUFDLENBQUM7UUFIUCxhQUFRLEdBQUcsQ0FBQyxDQUFDLENBQUM7UUFJcEIsSUFBSSxJQUFJLEVBQUU7WUFDUixJQUFJLENBQUMsSUFBSSxFQUFFLENBQUM7U0FDYjtJQUNILENBQUM7SUFFTSxTQUFTO1FBQ2QsT0FBTyxJQUFJLENBQUMsT0FBTyxFQUFFLENBQUM7SUFDeEIsQ0FBQztJQUVNLGNBQWM7UUFDbkIsT0FBTyxJQUFJLENBQUMsU0FBUyxDQUFDLElBQUksQ0FBQyxJQUFJLEVBQUUsQ0FBQyxDQUFDO0lBQ3JDLENBQUM7SUFFTSxXQUFXO1FBQ2hCLE9BQU8sSUFBSSxDQUFDLEtBQUssRUFBRSxDQUFDLFFBQVEsQ0FBQztJQUMvQixDQUFDO0lBRWtCLFdBQVc7UUFDNUIsTUFBTSxNQUFNLEdBQUcsS0FBSyxDQUFDLFdBQVcsRUFBRSxDQUFDO1FBQ25DLElBQUksTUFBTSxDQUFDLENBQUMsS0FBSyxJQUFJLElBQUksTUFBTSxDQUFDLENBQUMsS0FBSyxJQUFJLEVBQUU7WUFD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