@revideo/2d 0.1.0 → 0.1.4-alpha.878

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 (202) hide show
  1. package/lib/code/CodeCursor.d.ts +74 -74
  2. package/lib/code/CodeCursor.js +352 -286
  3. package/lib/code/CodeDiffer.d.ts +21 -16
  4. package/lib/code/CodeDiffer.js +39 -41
  5. package/lib/code/CodeFragment.d.ts +16 -8
  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 +12 -8
  10. package/lib/code/CodeMetrics.js +26 -24
  11. package/lib/code/CodeRange.d.ts +21 -5
  12. package/lib/code/CodeRange.js +131 -124
  13. package/lib/code/CodeScope.d.ts +18 -8
  14. package/lib/code/CodeScope.js +59 -61
  15. package/lib/code/CodeSelection.d.ts +9 -4
  16. package/lib/code/CodeSelection.js +8 -8
  17. package/lib/code/CodeSignal.d.ts +74 -47
  18. package/lib/code/CodeSignal.js +206 -189
  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/LezerHighlighter.js +101 -101
  25. package/lib/code/diff.d.ts +12 -9
  26. package/lib/code/diff.js +218 -205
  27. package/lib/code/extractRange.d.ts +7 -4
  28. package/lib/code/extractRange.js +79 -71
  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 +115 -109
  33. package/lib/components/AudioTest.d.ts +95 -95
  34. package/lib/components/AudioTest.js +259 -261
  35. package/lib/components/Bezier.d.ts +18 -18
  36. package/lib/components/Bezier.js +86 -75
  37. package/lib/components/Circle.d.ts +95 -90
  38. package/lib/components/Circle.js +85 -74
  39. package/lib/components/Code.d.ts +244 -211
  40. package/lib/components/Code.js +317 -269
  41. package/lib/components/CodeBlock.d.ts +109 -67
  42. package/lib/components/CodeBlock.js +414 -373
  43. package/lib/components/CubicBezier.d.ts +36 -36
  44. package/lib/components/CubicBezier.js +52 -49
  45. package/lib/components/Curve.d.ts +208 -198
  46. package/lib/components/Curve.js +270 -269
  47. package/lib/components/Grid.d.ts +47 -42
  48. package/lib/components/Grid.js +63 -56
  49. package/lib/components/Icon.d.ts +55 -50
  50. package/lib/components/Icon.js +58 -50
  51. package/lib/components/Img.d.ts +86 -79
  52. package/lib/components/Img.js +193 -181
  53. package/lib/components/Knot.d.ts +97 -78
  54. package/lib/components/Knot.js +81 -60
  55. package/lib/components/Latex.d.ts +12 -12
  56. package/lib/components/Latex.js +77 -65
  57. package/lib/components/Layout.d.ts +455 -413
  58. package/lib/components/Layout.js +666 -681
  59. package/lib/components/Line.d.ts +61 -49
  60. package/lib/components/Line.js +216 -193
  61. package/lib/components/Media.d.ts +35 -31
  62. package/lib/components/Media.d.ts.map +1 -1
  63. package/lib/components/Media.js +135 -121
  64. package/lib/components/Node.d.ts +875 -830
  65. package/lib/components/Node.js +1383 -1314
  66. package/lib/components/Path.d.ts +35 -14
  67. package/lib/components/Path.js +100 -89
  68. package/lib/components/Polygon.d.ts +60 -55
  69. package/lib/components/Polygon.js +71 -66
  70. package/lib/components/QuadBezier.d.ts +29 -29
  71. package/lib/components/QuadBezier.js +50 -45
  72. package/lib/components/Ray.d.ts +28 -28
  73. package/lib/components/Ray.js +71 -64
  74. package/lib/components/Rect.d.ts +115 -108
  75. package/lib/components/Rect.js +78 -72
  76. package/lib/components/SVG.d.ts +165 -139
  77. package/lib/components/SVG.js +609 -541
  78. package/lib/components/Shape.d.ts +44 -35
  79. package/lib/components/Shape.js +112 -127
  80. package/lib/components/Spline.d.ts +46 -40
  81. package/lib/components/Spline.js +190 -175
  82. package/lib/components/Txt.d.ts +55 -44
  83. package/lib/components/Txt.js +156 -155
  84. package/lib/components/TxtLeaf.d.ts +20 -16
  85. package/lib/components/TxtLeaf.js +177 -158
  86. package/lib/components/Video.d.ts +41 -41
  87. package/lib/components/Video.js +138 -135
  88. package/lib/components/View2D.d.ts +21 -21
  89. package/lib/components/View2D.js +98 -85
  90. package/lib/components/index.d.ts +1 -1
  91. package/lib/components/index.js +1 -1
  92. package/lib/components/types.d.ts +22 -9
  93. package/lib/components/types.js +1 -1
  94. package/lib/curves/ArcSegment.d.ts +36 -24
  95. package/lib/curves/ArcSegment.js +145 -94
  96. package/lib/curves/CircleSegment.d.ts +26 -16
  97. package/lib/curves/CircleSegment.js +56 -49
  98. package/lib/curves/CubicBezierSegment.d.ts +18 -13
  99. package/lib/curves/CubicBezierSegment.js +79 -46
  100. package/lib/curves/CurveDrawingInfo.d.ts +9 -9
  101. package/lib/curves/CurveDrawingInfo.js +1 -1
  102. package/lib/curves/CurvePoint.d.ts +13 -13
  103. package/lib/curves/CurvePoint.js +1 -1
  104. package/lib/curves/CurveProfile.d.ts +5 -5
  105. package/lib/curves/CurveProfile.js +1 -1
  106. package/lib/curves/KnotInfo.d.ts +8 -8
  107. package/lib/curves/KnotInfo.js +1 -1
  108. package/lib/curves/LineSegment.d.ts +19 -14
  109. package/lib/curves/LineSegment.js +42 -42
  110. package/lib/curves/Polynomial.d.ts +110 -110
  111. package/lib/curves/Polynomial.js +249 -239
  112. package/lib/curves/Polynomial2D.d.ts +20 -20
  113. package/lib/curves/Polynomial2D.js +46 -42
  114. package/lib/curves/PolynomialSegment.d.ts +42 -37
  115. package/lib/curves/PolynomialSegment.js +83 -81
  116. package/lib/curves/QuadBezierSegment.d.ts +12 -12
  117. package/lib/curves/QuadBezierSegment.js +71 -41
  118. package/lib/curves/Segment.d.ts +12 -7
  119. package/lib/curves/Segment.js +2 -3
  120. package/lib/curves/UniformPolynomialCurveSampler.d.ts +34 -34
  121. package/lib/curves/UniformPolynomialCurveSampler.js +68 -62
  122. package/lib/curves/createCurveProfileLerp.d.ts +17 -6
  123. package/lib/curves/createCurveProfileLerp.js +211 -208
  124. package/lib/curves/getBezierSplineProfile.d.ts +8 -4
  125. package/lib/curves/getBezierSplineProfile.js +145 -101
  126. package/lib/curves/getCircleProfile.d.ts +10 -4
  127. package/lib/curves/getCircleProfile.js +72 -40
  128. package/lib/curves/getPathProfile.d.ts +2 -2
  129. package/lib/curves/getPathProfile.js +135 -112
  130. package/lib/curves/getPointAtDistance.d.ts +7 -4
  131. package/lib/curves/getPointAtDistance.js +12 -12
  132. package/lib/curves/getPolylineProfile.d.ts +8 -4
  133. package/lib/curves/getPolylineProfile.js +67 -54
  134. package/lib/curves/getRectProfile.d.ts +9 -4
  135. package/lib/curves/getRectProfile.js +117 -52
  136. package/lib/curves/index.d.ts +1 -1
  137. package/lib/curves/index.js +1 -1
  138. package/lib/decorators/canvasStyleSignal.d.ts +3 -3
  139. package/lib/decorators/canvasStyleSignal.js +10 -10
  140. package/lib/decorators/colorSignal.d.ts +1 -1
  141. package/lib/decorators/colorSignal.js +7 -7
  142. package/lib/decorators/compound.d.ts +4 -2
  143. package/lib/decorators/compound.js +43 -23
  144. package/lib/decorators/computed.d.ts +1 -1
  145. package/lib/decorators/computed.js +9 -9
  146. package/lib/decorators/defaultStyle.d.ts +5 -2
  147. package/lib/decorators/defaultStyle.js +11 -11
  148. package/lib/decorators/filtersSignal.d.ts +28 -8
  149. package/lib/decorators/filtersSignal.js +87 -64
  150. package/lib/decorators/index.d.ts +1 -1
  151. package/lib/decorators/index.js +1 -1
  152. package/lib/decorators/initializers.d.ts +5 -2
  153. package/lib/decorators/initializers.js +18 -19
  154. package/lib/decorators/nodeName.d.ts +1 -1
  155. package/lib/decorators/nodeName.js +4 -4
  156. package/lib/decorators/signal.d.ts +40 -20
  157. package/lib/decorators/signal.js +113 -104
  158. package/lib/decorators/spacingSignal.d.ts +1 -1
  159. package/lib/decorators/spacingSignal.js +13 -13
  160. package/lib/decorators/vector2Signal.d.ts +13 -7
  161. package/lib/decorators/vector2Signal.js +15 -13
  162. package/lib/index.d.ts +1 -1
  163. package/lib/index.js +1 -1
  164. package/lib/jsx-dev-runtime.d.ts +3 -3
  165. package/lib/jsx-dev-runtime.js +3 -3
  166. package/lib/jsx-runtime.d.ts +19 -9
  167. package/lib/jsx-runtime.js +18 -18
  168. package/lib/partials/Filter.d.ts +24 -16
  169. package/lib/partials/Filter.js +69 -69
  170. package/lib/partials/Gradient.d.ts +30 -24
  171. package/lib/partials/Gradient.js +69 -58
  172. package/lib/partials/Pattern.d.ts +14 -9
  173. package/lib/partials/Pattern.js +30 -24
  174. package/lib/partials/ShaderConfig.d.ts +81 -74
  175. package/lib/partials/ShaderConfig.js +22 -23
  176. package/lib/partials/index.d.ts +1 -1
  177. package/lib/partials/index.js +1 -1
  178. package/lib/partials/types.d.ts +19 -6
  179. package/lib/partials/types.js +1 -1
  180. package/lib/scenes/Scene2D.d.ts +42 -23
  181. package/lib/scenes/Scene2D.d.ts.map +1 -1
  182. package/lib/scenes/Scene2D.js +161 -149
  183. package/lib/scenes/index.d.ts +1 -1
  184. package/lib/scenes/index.js +1 -1
  185. package/lib/scenes/makeScene2D.d.ts +7 -5
  186. package/lib/scenes/makeScene2D.js +10 -10
  187. package/lib/scenes/useScene2D.d.ts +2 -2
  188. package/lib/scenes/useScene2D.js +3 -3
  189. package/lib/tsconfig.build.tsbuildinfo +1 -1
  190. package/lib/utils/CanvasUtils.d.ts +93 -21
  191. package/lib/utils/CanvasUtils.js +186 -105
  192. package/lib/utils/diff.d.ts +25 -18
  193. package/lib/utils/diff.js +84 -87
  194. package/lib/utils/index.d.ts +1 -1
  195. package/lib/utils/index.js +1 -1
  196. package/lib/utils/is.d.ts +4 -2
  197. package/lib/utils/is.js +2 -2
  198. package/lib/utils/makeSignalExtensions.d.ts +11 -4
  199. package/lib/utils/makeSignalExtensions.js +17 -17
  200. package/package.json +5 -5
  201. package/src/lib/components/Media.ts +18 -0
  202. package/src/lib/scenes/Scene2D.ts +2 -0
@@ -1,35 +1,39 @@
1
- import { SignalValue, SimpleSignal } from '@revideo/core';
2
- import { Rect, RectProps } from './Rect';
1
+ import {SignalValue, SimpleSignal} from '@revideo/core';
2
+ import {Rect, RectProps} from './Rect';
3
3
  export interface MediaProps extends RectProps {
4
- src?: SignalValue<string>;
5
- loop?: SignalValue<boolean>;
6
- playbackRate?: number;
7
- time?: SignalValue<number>;
8
- play?: boolean;
4
+ src?: SignalValue<string>;
5
+ loop?: SignalValue<boolean>;
6
+ playbackRate?: number;
7
+ volume?: number;
8
+ time?: SignalValue<number>;
9
+ play?: boolean;
9
10
  }
10
11
  export declare abstract class Media extends Rect {
11
- readonly src: SimpleSignal<string, this>;
12
- readonly loop: SimpleSignal<boolean, this>;
13
- readonly playbackRate: SimpleSignal<number, this>;
14
- protected readonly time: SimpleSignal<number, this>;
15
- protected readonly playing: SimpleSignal<boolean, this>;
16
- protected lastTime: number;
17
- constructor(props: MediaProps);
18
- isPlaying(): boolean;
19
- getCurrentTime(): number;
20
- getDuration(): number;
21
- dispose(): void;
22
- completion(): number;
23
- protected abstract mediaElement(): HTMLMediaElement;
24
- protected abstract seekedMedia(): HTMLMediaElement;
25
- protected abstract fastSeekedMedia(): HTMLMediaElement;
26
- protected abstract draw(context: CanvasRenderingContext2D): void;
27
- protected setCurrentTime(value: number): void;
28
- protected setPlaybackRate(playbackRate: number): void;
29
- play(): void;
30
- pause(): void;
31
- seek(time: number): void;
32
- clampTime(time: number): number;
33
- protected collectAsyncResources(): void;
12
+ readonly src: SimpleSignal<string, this>;
13
+ readonly loop: SimpleSignal<boolean, this>;
14
+ readonly playbackRate: SimpleSignal<number, this>;
15
+ protected readonly time: SimpleSignal<number, this>;
16
+ protected readonly playing: SimpleSignal<boolean, this>;
17
+ protected readonly volume: SimpleSignal<number, this>;
18
+ protected lastTime: number;
19
+ constructor(props: MediaProps);
20
+ isPlaying(): boolean;
21
+ getCurrentTime(): number;
22
+ getDuration(): number;
23
+ getVolume(): number;
24
+ dispose(): void;
25
+ completion(): number;
26
+ protected abstract mediaElement(): HTMLMediaElement;
27
+ protected abstract seekedMedia(): HTMLMediaElement;
28
+ protected abstract fastSeekedMedia(): HTMLMediaElement;
29
+ protected abstract draw(context: CanvasRenderingContext2D): void;
30
+ protected setCurrentTime(value: number): void;
31
+ protected setVolume(volume: number): void;
32
+ protected setPlaybackRate(playbackRate: number): void;
33
+ play(): void;
34
+ pause(): void;
35
+ seek(time: number): void;
36
+ clampTime(time: number): number;
37
+ protected collectAsyncResources(): void;
34
38
  }
35
- //# sourceMappingURL=Media.d.ts.map
39
+ //# sourceMappingURL=Media.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"Media.d.ts","sourceRoot":"","sources":["../../src/lib/components/Media.ts"],"names":[],"mappings":"AAAA,OAAO,EAEL,WAAW,EACX,YAAY,EAKb,MAAM,eAAe,CAAC;AAEvB,OAAO,EAAC,IAAI,EAAE,SAAS,EAAC,MAAM,QAAQ,CAAC;AAGvC,MAAM,WAAW,UAAW,SAAQ,SAAS;IAC3C,GAAG,CAAC,EAAE,WAAW,CAAC,MAAM,CAAC,CAAC;IAC1B,IAAI,CAAC,EAAE,WAAW,CAAC,OAAO,CAAC,CAAC;IAC5B,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,IAAI,CAAC,EAAE,WAAW,CAAC,MAAM,CAAC,CAAC;IAC3B,IAAI,CAAC,EAAE,OAAO,CAAC;CAChB;AAED,8BAAsB,KAAM,SAAQ,IAAI;IACtC,SACwB,GAAG,EAAE,YAAY,CAAC,MAAM,EAAE,IAAI,CAAC,CAAC;IAExD,SAEwB,IAAI,EAAE,YAAY,CAAC,OAAO,EAAE,IAAI,CAAC,CAAC;IAE1D,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,SAAS,CAAC,QAAQ,SAAM;gBAEL,KAAK,EAAE,UAAU;IAO7B,SAAS,IAAI,OAAO;IAIpB,cAAc,IAAI,MAAM;IAIxB,WAAW,IAAI,MAAM;IAIZ,OAAO;IAOP,UAAU,IAAI,MAAM;IAIpC,SAAS,CAAC,QAAQ,CAAC,YAAY,IAAI,gBAAgB;IAEnD,SAAS,CAAC,QAAQ,CAAC,WAAW,IAAI,gBAAgB;IAElD,SAAS,CAAC,QAAQ,CAAC,eAAe,IAAI,gBAAgB;uBAE1B,IAAI,CAAC,OAAO,EAAE,wBAAwB,GAAG,IAAI;IAEzE,SAAS,CAAC,cAAc,CAAC,KAAK,EAAE,MAAM;IAmBtC,SAAS,CAAC,eAAe,CAAC,YAAY,EAAE,MAAM;IA2BvC,IAAI;IASJ,KAAK;IAML,IAAI,CAAC,IAAI,EAAE,MAAM;IAUjB,SAAS,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM;cAQnB,qBAAqB;CAIzC"}
1
+ {"version":3,"file":"Media.d.ts","sourceRoot":"","sources":["../../src/lib/components/Media.ts"],"names":[],"mappings":"AAAA,OAAO,EAEL,WAAW,EACX,YAAY,EAKb,MAAM,eAAe,CAAC;AAEvB,OAAO,EAAC,IAAI,EAAE,SAAS,EAAC,MAAM,QAAQ,CAAC;AAGvC,MAAM,WAAW,UAAW,SAAQ,SAAS;IAC3C,GAAG,CAAC,EAAE,WAAW,CAAC,MAAM,CAAC,CAAC;IAC1B,IAAI,CAAC,EAAE,WAAW,CAAC,OAAO,CAAC,CAAC;IAC5B,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,IAAI,CAAC,EAAE,WAAW,CAAC,MAAM,CAAC,CAAC;IAC3B,IAAI,CAAC,EAAE,OAAO,CAAC;CAChB;AAED,8BAAsB,KAAM,SAAQ,IAAI;IACtC,SACwB,GAAG,EAAE,YAAY,CAAC,MAAM,EAAE,IAAI,CAAC,CAAC;IAExD,SAEwB,IAAI,EAAE,YAAY,CAAC,OAAO,EAAE,IAAI,CAAC,CAAC;IAE1D,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,mBAE2B,MAAM,EAAE,YAAY,CAAC,MAAM,EAAE,IAAI,CAAC,CAAC;IAE9D,SAAS,CAAC,QAAQ,SAAM;gBAEL,KAAK,EAAE,UAAU;IAO7B,SAAS,IAAI,OAAO;IAIpB,cAAc,IAAI,MAAM;IAIxB,WAAW,IAAI,MAAM;IAIrB,SAAS,IAAI,MAAM;IAIV,OAAO;IAOP,UAAU,IAAI,MAAM;IAIpC,SAAS,CAAC,QAAQ,CAAC,YAAY,IAAI,gBAAgB;IAEnD,SAAS,CAAC,QAAQ,CAAC,WAAW,IAAI,gBAAgB;IAElD,SAAS,CAAC,QAAQ,CAAC,eAAe,IAAI,gBAAgB;uBAE1B,IAAI,CAAC,OAAO,EAAE,wBAAwB,GAAG,IAAI;IAEzE,SAAS,CAAC,cAAc,CAAC,KAAK,EAAE,MAAM;IAmBtC,SAAS,CAAC,SAAS,CAAC,MAAM,EAAE,MAAM;IASlC,SAAS,CAAC,eAAe,CAAC,YAAY,EAAE,MAAM;IA2BvC,IAAI;IASJ,KAAK;IAML,IAAI,CAAC,IAAI,EAAE,MAAM;IAUjB,SAAS,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM;cAQnB,qBAAqB;CAIzC"}
@@ -1,135 +1,149 @@
1
- var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {
2
- var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
3
- if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
4
- else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
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;
5
18
  return c > 3 && r && Object.defineProperty(target, key, r), r;
6
- };
7
- import { DependencyContext, clamp, isReactive, useLogger, useThread, } from '@revideo/core';
8
- import { computed, initial, signal } from '../decorators';
9
- import { Rect } from './Rect';
19
+ };
20
+ import {
21
+ DependencyContext,
22
+ clamp,
23
+ isReactive,
24
+ useLogger,
25
+ useThread,
26
+ } from '@revideo/core';
27
+ import {computed, initial, signal} from '../decorators';
28
+ import {Rect} from './Rect';
10
29
  export class Media extends Rect {
11
- constructor(props) {
12
- super(props);
13
- this.lastTime = -1;
14
- if (props.play) {
15
- this.play();
16
- }
30
+ constructor(props) {
31
+ super(props);
32
+ this.lastTime = -1;
33
+ if (props.play) {
34
+ this.play();
17
35
  }
18
- isPlaying() {
19
- return this.playing();
36
+ }
37
+ isPlaying() {
38
+ return this.playing();
39
+ }
40
+ getCurrentTime() {
41
+ return this.clampTime(this.time());
42
+ }
43
+ getDuration() {
44
+ return this.mediaElement().duration;
45
+ }
46
+ getVolume() {
47
+ return this.mediaElement().volume;
48
+ }
49
+ dispose() {
50
+ this.pause();
51
+ this.remove();
52
+ super.dispose();
53
+ }
54
+ completion() {
55
+ return this.clampTime(this.time()) / this.getDuration();
56
+ }
57
+ setCurrentTime(value) {
58
+ const media = this.mediaElement();
59
+ if (media.readyState < 2) return;
60
+ media.currentTime = value;
61
+ this.lastTime = value;
62
+ if (media.seeking) {
63
+ DependencyContext.collectPromise(
64
+ new Promise(resolve => {
65
+ const listener = () => {
66
+ resolve();
67
+ media.removeEventListener('seeked', listener);
68
+ };
69
+ media.addEventListener('seeked', listener);
70
+ }),
71
+ );
20
72
  }
21
- getCurrentTime() {
22
- return this.clampTime(this.time());
73
+ }
74
+ setVolume(volume) {
75
+ if (volume < 0 || volume > 1) {
76
+ console.warn(
77
+ `${volume} is an incorrect value for volume, has to be in range [0,1]. We're clamping to the nearest value`,
78
+ );
23
79
  }
24
- getDuration() {
25
- return this.mediaElement().duration;
80
+ this.mediaElement().volume = Math.min(Math.max(volume, 0), 1);
81
+ }
82
+ setPlaybackRate(playbackRate) {
83
+ let value;
84
+ if (isReactive(playbackRate)) {
85
+ value = playbackRate();
86
+ useLogger().warn({
87
+ message: 'Invalid value set as the playback rate',
88
+ remarks:
89
+ '<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>',
90
+ inspect: this.key,
91
+ stack: new Error().stack,
92
+ });
93
+ } else {
94
+ value = playbackRate;
26
95
  }
27
- dispose() {
96
+ this.playbackRate.context.setter(value);
97
+ if (this.playing()) {
98
+ if (value === 0) {
28
99
  this.pause();
29
- this.remove();
30
- super.dispose();
31
- }
32
- completion() {
33
- return this.clampTime(this.time()) / this.getDuration();
34
- }
35
- setCurrentTime(value) {
36
- const media = this.mediaElement();
37
- if (media.readyState < 2)
38
- return;
39
- media.currentTime = value;
40
- this.lastTime = value;
41
- if (media.seeking) {
42
- DependencyContext.collectPromise(new Promise(resolve => {
43
- const listener = () => {
44
- resolve();
45
- media.removeEventListener('seeked', listener);
46
- };
47
- media.addEventListener('seeked', listener);
48
- }));
49
- }
50
- }
51
- setPlaybackRate(playbackRate) {
52
- let value;
53
- if (isReactive(playbackRate)) {
54
- value = playbackRate();
55
- useLogger().warn({
56
- message: 'Invalid value set as the playback rate',
57
- remarks: "<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>",
58
- inspect: this.key,
59
- stack: new Error().stack,
60
- });
61
- }
62
- else {
63
- value = playbackRate;
64
- }
65
- this.playbackRate.context.setter(value);
66
- if (this.playing()) {
67
- if (value === 0) {
68
- this.pause();
69
- }
70
- else {
71
- const time = useThread().time;
72
- const start = time();
73
- const offset = this.time();
74
- this.time(() => this.clampTime(offset + (time() - start) * value));
75
- }
76
- }
77
- }
78
- play() {
100
+ } else {
79
101
  const time = useThread().time;
80
102
  const start = time();
81
103
  const offset = this.time();
82
- const playbackRate = this.playbackRate();
83
- this.playing(true);
84
- this.time(() => this.clampTime(offset + (time() - start) * playbackRate));
85
- }
86
- pause() {
87
- this.playing(false);
88
- this.time.save();
89
- this.mediaElement().pause();
90
- }
91
- seek(time) {
92
- const playing = this.playing();
93
- this.time(this.clampTime(time));
94
- if (playing) {
95
- this.play();
96
- }
97
- else {
98
- this.pause();
99
- }
104
+ this.time(() => this.clampTime(offset + (time() - start) * value));
105
+ }
100
106
  }
101
- clampTime(time) {
102
- const duration = this.getDuration();
103
- if (this.loop()) {
104
- time %= duration;
105
- }
106
- return clamp(0, duration, time);
107
+ }
108
+ play() {
109
+ const time = useThread().time;
110
+ const start = time();
111
+ const offset = this.time();
112
+ const playbackRate = this.playbackRate();
113
+ this.playing(true);
114
+ this.time(() => this.clampTime(offset + (time() - start) * playbackRate));
115
+ }
116
+ pause() {
117
+ this.playing(false);
118
+ this.time.save();
119
+ this.mediaElement().pause();
120
+ }
121
+ seek(time) {
122
+ const playing = this.playing();
123
+ this.time(this.clampTime(time));
124
+ if (playing) {
125
+ this.play();
126
+ } else {
127
+ this.pause();
107
128
  }
108
- collectAsyncResources() {
109
- super.collectAsyncResources();
110
- this.seekedMedia();
129
+ }
130
+ clampTime(time) {
131
+ const duration = this.getDuration();
132
+ if (this.loop()) {
133
+ time %= duration;
111
134
  }
135
+ return clamp(0, duration, time);
136
+ }
137
+ collectAsyncResources() {
138
+ super.collectAsyncResources();
139
+ this.seekedMedia();
140
+ }
112
141
  }
113
- __decorate([
114
- signal()
115
- ], Media.prototype, "src", void 0);
116
- __decorate([
117
- initial(false),
118
- signal()
119
- ], Media.prototype, "loop", void 0);
120
- __decorate([
121
- initial(1),
122
- signal()
123
- ], Media.prototype, "playbackRate", void 0);
124
- __decorate([
125
- initial(0),
126
- signal()
127
- ], Media.prototype, "time", void 0);
128
- __decorate([
129
- initial(false),
130
- signal()
131
- ], Media.prototype, "playing", void 0);
132
- __decorate([
133
- computed()
134
- ], Media.prototype, "completion", null);
135
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiTWVkaWEuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvbGliL2NvbXBvbmVudHMvTWVkaWEudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7O0FBQUEsT0FBTyxFQUNMLGlCQUFpQixFQUdqQixLQUFLLEVBQ0wsVUFBVSxFQUNWLFNBQVMsRUFDVCxTQUFTLEdBQ1YsTUFBTSxlQUFlLENBQUM7QUFDdkIsT0FBTyxFQUFDLFFBQVEsRUFBRSxPQUFPLEVBQUUsTUFBTSxFQUFDLE1BQU0sZUFBZSxDQUFDO0FBQ3hELE9BQU8sRUFBQyxJQUFJLEVBQVksTUFBTSxRQUFRLENBQUM7QUFXdkMsTUFBTSxPQUFnQixLQUFNLFNBQVEsSUFBSTtJQXNCdEMsWUFBbUIsS0FBaUI7UUFDbEMsS0FBSyxDQUFDLEtBQUssQ0FBQyxDQUFDO1FBSEwsYUFBUSxHQUFHLENBQUMsQ0FBQyxDQUFDO1FBSXRCLElBQUksS0FBSyxDQUFDLElBQUksRUFBRSxDQUFDO1lBQ2YsSUFBSSxDQUFDLElBQUksRUFBRSxDQUFDO1FBQ2QsQ0FBQztJQUNILENBQUM7SUFFTSxTQUFTO1FBQ2QsT0FBTyxJQUFJLENBQUMsT0FBTyxFQUFFLENBQUM7SUFDeEIsQ0FBQztJQUVNLGNBQWM7UUFDbkIsT0FBTyxJQUFJLENBQUMsU0FBUyxDQUFDLElBQUksQ0FBQyxJQUFJLEVBQUUsQ0FBQyxDQUFDO0lBQ3JDLENBQUM7SUFFTSxXQUFXO1FBQ2hCLE9BQU8sSUFBSSxDQUFDLFlBQVksRUFBRSxDQUFDLFFBQVEsQ0FBQztJQUN0QyxDQUFDO0lBRWUsT0FBTztRQUNyQixJQUFJLENBQUMsS0FBSyxFQUFFLENBQUM7UUFDYixJQUFJLENBQUMsTUFBTSxFQUFFLENBQUM7UUFDZCxLQUFLLENBQUMsT0FBTyxFQUFFLENBQUM7SUFDbEIsQ0FBQztJQUdlLFVBQVU7UUFDeEIsT0FBTyxJQUFJLENBQUMsU0FBUyxDQUFDLElBQUksQ0FBQyxJQUFJLEVBQUUsQ0FBQyxHQUFHLElBQUks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
142
+ __decorate([signal()], Media.prototype, 'src', void 0);
143
+ __decorate([initial(false), signal()], Media.prototype, 'loop', void 0);
144
+ __decorate([initial(1), signal()], Media.prototype, 'playbackRate', void 0);
145
+ __decorate([initial(0), signal()], Media.prototype, 'time', void 0);
146
+ __decorate([initial(false), signal()], Media.prototype, 'playing', void 0);
147
+ __decorate([initial(1), signal()], Media.prototype, 'volume', void 0);
148
+ __decorate([computed()], Media.prototype, 'completion', null);
149
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiTWVkaWEuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvbGliL2NvbXBvbmVudHMvTWVkaWEudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7O0FBQUEsT0FBTyxFQUNMLGlCQUFpQixFQUdqQixLQUFLLEVBQ0wsVUFBVSxFQUNWLFNBQVMsRUFDVCxTQUFTLEdBQ1YsTUFBTSxlQUFlLENBQUM7QUFDdkIsT0FBTyxFQUFDLFFBQVEsRUFBRSxPQUFPLEVBQUUsTUFBTSxFQUFDLE1BQU0sZUFBZSxDQUFDO0FBQ3hELE9BQU8sRUFBQyxJQUFJLEVBQVksTUFBTSxRQUFRLENBQUM7QUFZdkMsTUFBTSxPQUFnQixLQUFNLFNBQVEsSUFBSTtJQTBCdEMsWUFBbUIsS0FBaUI7UUFDbEMsS0FBSyxDQUFDLEtBQUssQ0FBQyxDQUFDO1FBSEwsYUFBUSxHQUFHLENBQUMsQ0FBQyxDQUFDO1FBSXRCLElBQUksS0FBSyxDQUFDLElBQUksRUFBRSxDQUFDO1lBQ2YsSUFBSSxDQUFDLElBQUksRUFBRSxDQUFDO1FBQ2QsQ0FBQztJQUNILENBQUM7SUFFTSxTQUFTO1FBQ2QsT0FBTyxJQUFJLENBQUMsT0FBTyxFQUFFLENBQUM7SUFDeEIsQ0FBQztJQUVNLGNBQWM7UUFDbkIsT0FBTyxJQUFJLENBQUMsU0FBUyxDQUFDLElBQUksQ0FBQyxJQUFJLEVBQUUsQ0FBQyxDQUFDO0lBQ3JDLENBQUM7SUFFTSxXQUFXO1FBQ2hCLE9BQU8sSUFBSSxDQUFDLFlBQVksRUFBRSxDQUFDLFFBQVEsQ0FBQztJQUN0QyxDQUFDO0lBRU0sU0FBUztRQUNkLE9BQU8sSUFBSSxDQUFDLFlBQVksRUFBRSxDQUFDLE1BQU0sQ0FBQztJQUNwQyxDQUFDO0lBRWUsT0FBTztRQUNyQixJQUFJLENBQUMsS0FBSyxFQUFFLENBQUM7UUFDYixJQUFJLENBQUMsTUFBTSxFQUFFLENBQUM7UUFDZCxLQUFLLENBQUMsT0FBTyxFQUFFLENBQUM7SUFDbEIsQ0FBQztJQUdlLFVBQVU7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