timingsrc 1.1.17

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 (175) hide show
  1. package/LICENSE +21 -0
  2. package/README.md +47 -0
  3. package/build/es2019/factories/default-set-timingsrc.d.ts +3 -0
  4. package/build/es2019/factories/default-set-timingsrc.d.ts.map +1 -0
  5. package/build/es2019/factories/default-set-timingsrc.js +7 -0
  6. package/build/es2019/factories/default-set-timingsrc.js.map +1 -0
  7. package/build/es2019/factories/set-current-time.d.ts +3 -0
  8. package/build/es2019/factories/set-current-time.d.ts.map +1 -0
  9. package/build/es2019/factories/set-current-time.js +10 -0
  10. package/build/es2019/factories/set-current-time.js.map +1 -0
  11. package/build/es2019/factories/set-playback-rate.d.ts +3 -0
  12. package/build/es2019/factories/set-playback-rate.d.ts.map +1 -0
  13. package/build/es2019/factories/set-playback-rate.js +13 -0
  14. package/build/es2019/factories/set-playback-rate.js.map +1 -0
  15. package/build/es2019/factories/set-timingsrc-with-custom-update-function.d.ts +3 -0
  16. package/build/es2019/factories/set-timingsrc-with-custom-update-function.d.ts.map +1 -0
  17. package/build/es2019/factories/set-timingsrc-with-custom-update-function.js +10 -0
  18. package/build/es2019/factories/set-timingsrc-with-custom-update-function.js.map +1 -0
  19. package/build/es2019/factories/set-timingsrc.d.ts +3 -0
  20. package/build/es2019/factories/set-timingsrc.d.ts.map +1 -0
  21. package/build/es2019/factories/set-timingsrc.js +4 -0
  22. package/build/es2019/factories/set-timingsrc.js.map +1 -0
  23. package/build/es2019/factories/update-gradually.d.ts +3 -0
  24. package/build/es2019/factories/update-gradually.d.ts.map +1 -0
  25. package/build/es2019/factories/update-gradually.js +17 -0
  26. package/build/es2019/factories/update-gradually.js.map +1 -0
  27. package/build/es2019/factories/update-media-element.d.ts +3 -0
  28. package/build/es2019/factories/update-media-element.d.ts.map +1 -0
  29. package/build/es2019/factories/update-media-element.js +38 -0
  30. package/build/es2019/factories/update-media-element.js.map +1 -0
  31. package/build/es2019/factories/update-stepwise-factory.d.ts +3 -0
  32. package/build/es2019/factories/update-stepwise-factory.d.ts.map +1 -0
  33. package/build/es2019/factories/update-stepwise-factory.js +37 -0
  34. package/build/es2019/factories/update-stepwise-factory.js.map +1 -0
  35. package/build/es2019/factories/window.d.ts +3 -0
  36. package/build/es2019/factories/window.d.ts.map +1 -0
  37. package/build/es2019/factories/window.js +2 -0
  38. package/build/es2019/factories/window.js.map +1 -0
  39. package/build/es2019/functions/pause.d.ts +2 -0
  40. package/build/es2019/functions/pause.d.ts.map +1 -0
  41. package/build/es2019/functions/pause.js +6 -0
  42. package/build/es2019/functions/pause.js.map +1 -0
  43. package/build/es2019/functions/play.d.ts +2 -0
  44. package/build/es2019/functions/play.d.ts.map +1 -0
  45. package/build/es2019/functions/play.js +6 -0
  46. package/build/es2019/functions/play.js.map +1 -0
  47. package/build/es2019/interfaces/index.d.ts +2 -0
  48. package/build/es2019/interfaces/index.d.ts.map +1 -0
  49. package/build/es2019/interfaces/index.js +2 -0
  50. package/build/es2019/interfaces/index.js.map +1 -0
  51. package/build/es2019/interfaces/update-vector.d.ts +5 -0
  52. package/build/es2019/interfaces/update-vector.d.ts.map +1 -0
  53. package/build/es2019/interfaces/update-vector.js +2 -0
  54. package/build/es2019/interfaces/update-vector.js.map +1 -0
  55. package/build/es2019/module.d.ts +8 -0
  56. package/build/es2019/module.d.ts.map +1 -0
  57. package/build/es2019/module.js +20 -0
  58. package/build/es2019/module.js.map +1 -0
  59. package/build/es2019/types/default-timingsrc-factory.d.ts +7 -0
  60. package/build/es2019/types/default-timingsrc-factory.d.ts.map +1 -0
  61. package/build/es2019/types/default-timingsrc-factory.js +2 -0
  62. package/build/es2019/types/default-timingsrc-factory.js.map +1 -0
  63. package/build/es2019/types/index.d.ts +19 -0
  64. package/build/es2019/types/index.d.ts.map +1 -0
  65. package/build/es2019/types/index.js +19 -0
  66. package/build/es2019/types/index.js.map +1 -0
  67. package/build/es2019/types/pause-function.d.ts +2 -0
  68. package/build/es2019/types/pause-function.d.ts.map +1 -0
  69. package/build/es2019/types/pause-function.js +2 -0
  70. package/build/es2019/types/pause-function.js.map +1 -0
  71. package/build/es2019/types/play-function.d.ts +2 -0
  72. package/build/es2019/types/play-function.d.ts.map +1 -0
  73. package/build/es2019/types/play-function.js +2 -0
  74. package/build/es2019/types/play-function.js.map +1 -0
  75. package/build/es2019/types/prepare-timing-state-vector-function.d.ts +3 -0
  76. package/build/es2019/types/prepare-timing-state-vector-function.d.ts.map +1 -0
  77. package/build/es2019/types/prepare-timing-state-vector-function.js +2 -0
  78. package/build/es2019/types/prepare-timing-state-vector-function.js.map +1 -0
  79. package/build/es2019/types/set-current-time-factory.d.ts +3 -0
  80. package/build/es2019/types/set-current-time-factory.d.ts.map +1 -0
  81. package/build/es2019/types/set-current-time-factory.js +2 -0
  82. package/build/es2019/types/set-current-time-factory.js.map +1 -0
  83. package/build/es2019/types/set-current-time-function.d.ts +2 -0
  84. package/build/es2019/types/set-current-time-function.d.ts.map +1 -0
  85. package/build/es2019/types/set-current-time-function.js +2 -0
  86. package/build/es2019/types/set-current-time-function.js.map +1 -0
  87. package/build/es2019/types/set-playback-rate-factory.d.ts +3 -0
  88. package/build/es2019/types/set-playback-rate-factory.d.ts.map +1 -0
  89. package/build/es2019/types/set-playback-rate-factory.js +2 -0
  90. package/build/es2019/types/set-playback-rate-factory.js.map +1 -0
  91. package/build/es2019/types/set-playback-rate-function.d.ts +2 -0
  92. package/build/es2019/types/set-playback-rate-function.d.ts.map +1 -0
  93. package/build/es2019/types/set-playback-rate-function.js +2 -0
  94. package/build/es2019/types/set-playback-rate-function.js.map +1 -0
  95. package/build/es2019/types/set-timingsrc-factory.d.ts +5 -0
  96. package/build/es2019/types/set-timingsrc-factory.d.ts.map +1 -0
  97. package/build/es2019/types/set-timingsrc-factory.js +2 -0
  98. package/build/es2019/types/set-timingsrc-factory.js.map +1 -0
  99. package/build/es2019/types/set-timingsrc-function.d.ts +4 -0
  100. package/build/es2019/types/set-timingsrc-function.d.ts.map +1 -0
  101. package/build/es2019/types/set-timingsrc-function.js +2 -0
  102. package/build/es2019/types/set-timingsrc-function.js.map +1 -0
  103. package/build/es2019/types/set-timingsrc-with-custom-update-function-factory.d.ts +5 -0
  104. package/build/es2019/types/set-timingsrc-with-custom-update-function-factory.d.ts.map +1 -0
  105. package/build/es2019/types/set-timingsrc-with-custom-update-function-factory.js +2 -0
  106. package/build/es2019/types/set-timingsrc-with-custom-update-function-factory.js.map +1 -0
  107. package/build/es2019/types/set-timingsrc-with-custom-update-function-function.d.ts +5 -0
  108. package/build/es2019/types/set-timingsrc-with-custom-update-function-function.d.ts.map +1 -0
  109. package/build/es2019/types/set-timingsrc-with-custom-update-function-function.js +2 -0
  110. package/build/es2019/types/set-timingsrc-with-custom-update-function-function.js.map +1 -0
  111. package/build/es2019/types/update-function.d.ts +4 -0
  112. package/build/es2019/types/update-function.d.ts.map +1 -0
  113. package/build/es2019/types/update-function.js +2 -0
  114. package/build/es2019/types/update-function.js.map +1 -0
  115. package/build/es2019/types/update-gradually-factory.d.ts +3 -0
  116. package/build/es2019/types/update-gradually-factory.d.ts.map +1 -0
  117. package/build/es2019/types/update-gradually-factory.js +2 -0
  118. package/build/es2019/types/update-gradually-factory.js.map +1 -0
  119. package/build/es2019/types/update-media-element-factory.d.ts +7 -0
  120. package/build/es2019/types/update-media-element-factory.d.ts.map +1 -0
  121. package/build/es2019/types/update-media-element-factory.js +2 -0
  122. package/build/es2019/types/update-media-element-factory.js.map +1 -0
  123. package/build/es2019/types/update-media-element-function.d.ts +2 -0
  124. package/build/es2019/types/update-media-element-function.d.ts.map +1 -0
  125. package/build/es2019/types/update-media-element-function.js +2 -0
  126. package/build/es2019/types/update-media-element-function.js.map +1 -0
  127. package/build/es2019/types/update-stepwise-factory-factory.d.ts +4 -0
  128. package/build/es2019/types/update-stepwise-factory-factory.d.ts.map +1 -0
  129. package/build/es2019/types/update-stepwise-factory-factory.js +2 -0
  130. package/build/es2019/types/update-stepwise-factory-factory.js.map +1 -0
  131. package/build/es2019/types/update-stepwise-factory.d.ts +3 -0
  132. package/build/es2019/types/update-stepwise-factory.d.ts.map +1 -0
  133. package/build/es2019/types/update-stepwise-factory.js +2 -0
  134. package/build/es2019/types/update-stepwise-factory.js.map +1 -0
  135. package/build/es2019/types/window-factory.d.ts +2 -0
  136. package/build/es2019/types/window-factory.d.ts.map +1 -0
  137. package/build/es2019/types/window-factory.js +2 -0
  138. package/build/es2019/types/window-factory.js.map +1 -0
  139. package/build/es5/bundle.js +236 -0
  140. package/package.json +79 -0
  141. package/src/factories/default-set-timingsrc.ts +20 -0
  142. package/src/factories/set-current-time.ts +13 -0
  143. package/src/factories/set-playback-rate.ts +18 -0
  144. package/src/factories/set-timingsrc-with-custom-update-function.ts +19 -0
  145. package/src/factories/set-timingsrc.ts +6 -0
  146. package/src/factories/update-gradually.ts +22 -0
  147. package/src/factories/update-media-element.ts +38 -0
  148. package/src/factories/update-stepwise-factory.ts +51 -0
  149. package/src/factories/window.ts +3 -0
  150. package/src/functions/pause.ts +5 -0
  151. package/src/functions/play.ts +5 -0
  152. package/src/interfaces/index.ts +1 -0
  153. package/src/interfaces/update-vector.ts +5 -0
  154. package/src/module.ts +31 -0
  155. package/src/tsconfig.json +6 -0
  156. package/src/types/default-timingsrc-factory.ts +13 -0
  157. package/src/types/index.ts +18 -0
  158. package/src/types/pause-function.ts +1 -0
  159. package/src/types/play-function.ts +1 -0
  160. package/src/types/prepare-timing-state-vector-function.ts +3 -0
  161. package/src/types/set-current-time-factory.ts +3 -0
  162. package/src/types/set-current-time-function.ts +1 -0
  163. package/src/types/set-playback-rate-factory.ts +3 -0
  164. package/src/types/set-playback-rate-function.ts +1 -0
  165. package/src/types/set-timingsrc-factory.ts +8 -0
  166. package/src/types/set-timingsrc-function.ts +8 -0
  167. package/src/types/set-timingsrc-with-custom-update-function-factory.ts +8 -0
  168. package/src/types/set-timingsrc-with-custom-update-function-function.ts +10 -0
  169. package/src/types/update-function.ts +4 -0
  170. package/src/types/update-gradually-factory.ts +3 -0
  171. package/src/types/update-media-element-factory.ts +12 -0
  172. package/src/types/update-media-element-function.ts +8 -0
  173. package/src/types/update-stepwise-factory-factory.ts +4 -0
  174. package/src/types/update-stepwise-factory.ts +3 -0
  175. package/src/types/window-factory.ts +1 -0
package/LICENSE ADDED
@@ -0,0 +1,21 @@
1
+ MIT License
2
+
3
+ Copyright (c) 2021 Christoph Guttandin
4
+
5
+ Permission is hereby granted, free of charge, to any person obtaining a copy
6
+ of this software and associated documentation files (the "Software"), to deal
7
+ in the Software without restriction, including without limitation the rights
8
+ to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
9
+ copies of the Software, and to permit persons to whom the Software is
10
+ furnished to do so, subject to the following conditions:
11
+
12
+ The above copyright notice and this permission notice shall be included in all
13
+ copies or substantial portions of the Software.
14
+
15
+ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
16
+ IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
17
+ FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
18
+ AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
19
+ LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
20
+ OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
21
+ SOFTWARE.
package/README.md ADDED
@@ -0,0 +1,47 @@
1
+ # timingsrc
2
+
3
+ **A library to synchronize a MediaElement with a TimingObject.**
4
+
5
+ [![dependencies](https://img.shields.io/david/chrisguttandin/timingsrc.svg?style=flat-square)](https://github.com/chrisguttandin/timingsrc/network/dependencies)
6
+ [![version](https://img.shields.io/npm/v/timingsrc.svg?style=flat-square)](https://www.npmjs.com/package/timingsrc)
7
+
8
+ This libary is meant to synchronize a [`MediaElement`](https://html.spec.whatwg.org/multipage/media.html#htmlmediaelement) (aka an `<audio/>` or `<video/>` element) with a [`TimingObject`](https://webtiming.github.io/timingobject/#dfn-timing-object).
9
+
10
+ The [Timing Object specification](https://webtiming.github.io/timingobject/) defines an extension of the `MediaElement` which would add [`timingsrc`](https://webtiming.github.io/timingobject/#dom-htmlmediaelement-timingsrc) property. But so far this is not supported in any browser. Therefore this package can be used as a replacement as it provides the same functionality. But instead of patching the native protoypes this libary provides a function which can be used without modifying any built-in browser objects.
11
+
12
+ The code of this library is heavily inspired by the [`mediaSync()`](https://github.com/webtiming/timingsrc/blob/master/v1/mediasync/mediasync.js#L89) function that came with v1 of the [timingsrc](https://github.com/webtiming/timingsrc) library. However all the code has been completely rewritten in TypeScript with the goal to make it more testable and easier to reason about.
13
+
14
+ The actual synchronization is handled by two different algorithms. By default the `userAgent` string gets parsed to determine which algorithm to use. Since Safari is not capable of processing changes of the `currentTime` or the `plackbackRate` of a `MediaElement` in a timely manner the position in Safari is set abbruptly whenever it changes. Firefox and Chromium based browsers happily handle frequent changes of both properties which is why they are adjusted gradually to keep a `MediaElement` in sync with a `TimingObject` in these browsers. The technique for doing so has been taken from [Tom Jenkinon](https://github.com/tjenkinson)'s [media-element-syncer](https://github.com/tjenkinson/media-element-syncer).
15
+
16
+ ## Usage
17
+
18
+ The `timingsrc` package is published on [npm](https://www.npmjs.com/package/timingsrc) and can be installed as usual.
19
+
20
+ ```shell
21
+ npm install timingsrc
22
+ ```
23
+
24
+ The main function exported by this package is the `setTimingsrc()` function. It can be thought of as the replacement of the `timingsrc` property on a `MediaElement`. It can for example be used with a `TimingObject` created with the [`timing-object`](https://github.com/chrisguttandin/timing-object) package.
25
+
26
+ ```js
27
+ import { TimingObject } from 'timing-object';
28
+ import { setTimingsrc } from 'timingsrc';
29
+
30
+ const mediaElement = document.getElementsByTagName('video')[0];
31
+ const timingObject = new TimingObject();
32
+
33
+ const deleteTimingsrc = setTimingsrc(mediaElement, timingObject);
34
+
35
+ // The synchronization can be stopped again at any point in time.
36
+ deleteTimingsrc();
37
+ ```
38
+
39
+ It is also possible to configure a custom version of the `setTimingsrc()` function. The following would build a `setTimingSrc()` function which does not include the fallback for stepwise updates which is necessary in Safari.
40
+
41
+ ```js
42
+ import { createSetTimingsrc, createUpdateGradually, setTimingsrcWithCustomUpdateFunction } from 'timingsrc';
43
+
44
+ const customSetTimingsrc = createSetTimingsrc(setTimingsrcWithCustomUpdateFunction, createUpdateGradually(0.5, 1, 0.025));
45
+ ```
46
+
47
+ Please take a look at the [video-synchronization-demo](https://github.com/chrisguttandin/video-synchronization-demo) for a more comprehensive example.
@@ -0,0 +1,3 @@
1
+ import { TDefaultSetTimingsrcFactory } from '../types';
2
+ export declare const createDefaultSetTimingsrc: TDefaultSetTimingsrcFactory;
3
+ //# sourceMappingURL=default-set-timingsrc.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"default-set-timingsrc.d.ts","sourceRoot":"","sources":["../../../src/factories/default-set-timingsrc.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,2BAA2B,EAAyB,MAAM,UAAU,CAAC;AAM9E,eAAO,MAAM,yBAAyB,EAAE,2BAa7B,CAAC"}
@@ -0,0 +1,7 @@
1
+ const DEFAULT_THRESHOLD = 1;
2
+ const DEFAULT_TIME_CONSTANT = 0.5;
3
+ const DEFAULT_TOLERANCE = 0.025;
4
+ export const createDefaultSetTimingsrc = (createSetTimingsrc, createUpdateGradually, createUpdateStepwise, setTimingsrcWithCustomUpdateFunction, window) => window !== null && window.navigator.userAgent.includes('Safari') && !window.navigator.userAgent.includes('Chrome')
5
+ ? (...args) => createSetTimingsrc(setTimingsrcWithCustomUpdateFunction, createUpdateStepwise(DEFAULT_TOLERANCE))(...args)
6
+ : createSetTimingsrc(setTimingsrcWithCustomUpdateFunction, createUpdateGradually(DEFAULT_TIME_CONSTANT, DEFAULT_THRESHOLD, DEFAULT_TOLERANCE));
7
+ //# sourceMappingURL=default-set-timingsrc.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"default-set-timingsrc.js","sourceRoot":"","sources":["../../../src/factories/default-set-timingsrc.ts"],"names":[],"mappings":"AAEA,MAAM,iBAAiB,GAAG,CAAC,CAAC;AAC5B,MAAM,qBAAqB,GAAG,GAAG,CAAC;AAClC,MAAM,iBAAiB,GAAG,KAAK,CAAC;AAEhC,MAAM,CAAC,MAAM,yBAAyB,GAAgC,CAClE,kBAAkB,EAClB,qBAAqB,EACrB,oBAAoB,EACpB,oCAAoC,EACpC,MAAM,EACR,EAAE,CACA,MAAM,KAAK,IAAI,IAAI,MAAM,CAAC,SAAS,CAAC,SAAS,CAAC,QAAQ,CAAC,QAAQ,CAAC,IAAI,CAAC,MAAM,CAAC,SAAS,CAAC,SAAS,CAAC,QAAQ,CAAC,QAAQ,CAAC;IAC9G,CAAC,CAAC,CAAC,GAAG,IAAuC,EAAE,EAAE,CAC3C,kBAAkB,CAAC,oCAAoC,EAAE,oBAAoB,CAAC,iBAAiB,CAAC,CAAC,CAAC,GAAG,IAAI,CAAC;IAChH,CAAC,CAAC,kBAAkB,CACd,oCAAoC,EACpC,qBAAqB,CAAC,qBAAqB,EAAE,iBAAiB,EAAE,iBAAiB,CAAC,CACrF,CAAC"}
@@ -0,0 +1,3 @@
1
+ import { TSetCurrentTimeFactory } from '../types';
2
+ export declare const createSetCurrentTime: TSetCurrentTimeFactory;
3
+ //# sourceMappingURL=set-current-time.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"set-current-time.d.ts","sourceRoot":"","sources":["../../../src/factories/set-current-time.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,sBAAsB,EAAE,MAAM,UAAU,CAAC;AAElD,eAAO,MAAM,oBAAoB,EAAE,sBAUlC,CAAC"}
@@ -0,0 +1,10 @@
1
+ export const createSetCurrentTime = (currentTimeAssignments) => {
2
+ return (mediaElement, previousValue, nextValue) => {
3
+ const currentTimeAssignment = currentTimeAssignments.get(mediaElement);
4
+ if (currentTimeAssignment === undefined || currentTimeAssignment[0] !== previousValue || currentTimeAssignment[1] !== nextValue) {
5
+ mediaElement.currentTime = nextValue;
6
+ currentTimeAssignments.set(mediaElement, [mediaElement.currentTime, nextValue]);
7
+ }
8
+ };
9
+ };
10
+ //# sourceMappingURL=set-current-time.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"set-current-time.js","sourceRoot":"","sources":["../../../src/factories/set-current-time.ts"],"names":[],"mappings":"AAEA,MAAM,CAAC,MAAM,oBAAoB,GAA2B,CAAC,sBAAsB,EAAE,EAAE;IACnF,OAAO,CAAC,YAAY,EAAE,aAAa,EAAE,SAAS,EAAE,EAAE;QAC9C,MAAM,qBAAqB,GAAG,sBAAsB,CAAC,GAAG,CAAC,YAAY,CAAC,CAAC;QAEvE,IAAI,qBAAqB,KAAK,SAAS,IAAI,qBAAqB,CAAC,CAAC,CAAC,KAAK,aAAa,IAAI,qBAAqB,CAAC,CAAC,CAAC,KAAK,SAAS,EAAE;YAC7H,YAAY,CAAC,WAAW,GAAG,SAAS,CAAC;YAErC,sBAAsB,CAAC,GAAG,CAAC,YAAY,EAAE,CAAC,YAAY,CAAC,WAAW,EAAE,SAAS,CAAC,CAAC,CAAC;SACnF;IACL,CAAC,CAAC;AACN,CAAC,CAAC"}
@@ -0,0 +1,3 @@
1
+ import { TSetPlaybackRateFactory } from '../types';
2
+ export declare const createSetPlaybackRate: TSetPlaybackRateFactory;
3
+ //# sourceMappingURL=set-playback-rate.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"set-playback-rate.d.ts","sourceRoot":"","sources":["../../../src/factories/set-playback-rate.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,uBAAuB,EAAE,MAAM,UAAU,CAAC;AAEnD,eAAO,MAAM,qBAAqB,EAAE,uBAenC,CAAC"}
@@ -0,0 +1,13 @@
1
+ export const createSetPlaybackRate = (playbackRateAssignments) => {
2
+ return (mediaElement, previousValue, nextValue) => {
3
+ const playbackRateAssignment = playbackRateAssignments.get(mediaElement);
4
+ if (playbackRateAssignment === undefined ||
5
+ playbackRateAssignment[0] !== previousValue ||
6
+ playbackRateAssignment[1] !== nextValue) {
7
+ // There is currently a bug in Firefox which causes problems when switching back to a playbackRate of exactly 1.
8
+ mediaElement.playbackRate = nextValue === 1 ? (previousValue > 1 ? 1.00001 : 0.99999) : nextValue;
9
+ playbackRateAssignments.set(mediaElement, [mediaElement.playbackRate, nextValue]);
10
+ }
11
+ };
12
+ };
13
+ //# sourceMappingURL=set-playback-rate.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"set-playback-rate.js","sourceRoot":"","sources":["../../../src/factories/set-playback-rate.ts"],"names":[],"mappings":"AAEA,MAAM,CAAC,MAAM,qBAAqB,GAA4B,CAAC,uBAAuB,EAAE,EAAE;IACtF,OAAO,CAAC,YAAY,EAAE,aAAa,EAAE,SAAS,EAAE,EAAE;QAC9C,MAAM,sBAAsB,GAAG,uBAAuB,CAAC,GAAG,CAAC,YAAY,CAAC,CAAC;QAEzE,IACI,sBAAsB,KAAK,SAAS;YACpC,sBAAsB,CAAC,CAAC,CAAC,KAAK,aAAa;YAC3C,sBAAsB,CAAC,CAAC,CAAC,KAAK,SAAS,EACzC;YACE,gHAAgH;YAChH,YAAY,CAAC,YAAY,GAAG,SAAS,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,aAAa,GAAG,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC;YAElG,uBAAuB,CAAC,GAAG,CAAC,YAAY,EAAE,CAAC,YAAY,CAAC,YAAY,EAAE,SAAS,CAAC,CAAC,CAAC;SACrF;IACL,CAAC,CAAC;AACN,CAAC,CAAC"}
@@ -0,0 +1,3 @@
1
+ import { TSetTimingsrcWithCustomUpdateFunctionFactory } from '../types';
2
+ export declare const createSetTimingsrcWithCustomUpdateFunction: TSetTimingsrcWithCustomUpdateFunctionFactory;
3
+ //# sourceMappingURL=set-timingsrc-with-custom-update-function.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"set-timingsrc-with-custom-update-function.d.ts","sourceRoot":"","sources":["../../../src/factories/set-timingsrc-with-custom-update-function.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,4CAA4C,EAAE,MAAM,UAAU,CAAC;AAExE,eAAO,MAAM,0CAA0C,EAAE,4CAgBxD,CAAC"}
@@ -0,0 +1,10 @@
1
+ export const createSetTimingsrcWithCustomUpdateFunction = (animationFrame, updateMediaElement) => {
2
+ return (mediaElement, timingObject, updateFunction, prepareTimingStateVector = null) => animationFrame()(() => {
3
+ const { currentTime, duration, playbackRate } = mediaElement;
4
+ const timingStateVector = timingObject.query();
5
+ const { position, velocity } = updateFunction(prepareTimingStateVector === null ? timingStateVector : prepareTimingStateVector(timingStateVector), currentTime);
6
+ const sanitizedDuration = typeof duration === 'number' && !isNaN(duration) ? duration : 0;
7
+ updateMediaElement(currentTime, sanitizedDuration, mediaElement, playbackRate, position, velocity);
8
+ });
9
+ };
10
+ //# sourceMappingURL=set-timingsrc-with-custom-update-function.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"set-timingsrc-with-custom-update-function.js","sourceRoot":"","sources":["../../../src/factories/set-timingsrc-with-custom-update-function.ts"],"names":[],"mappings":"AAEA,MAAM,CAAC,MAAM,0CAA0C,GAAiD,CACpG,cAAc,EACd,kBAAkB,EACpB,EAAE;IACA,OAAO,CAAC,YAAY,EAAE,YAAY,EAAE,cAAc,EAAE,wBAAwB,GAAG,IAAI,EAAE,EAAE,CACnF,cAAc,EAAE,CAAC,GAAG,EAAE;QAClB,MAAM,EAAE,WAAW,EAAE,QAAQ,EAAE,YAAY,EAAE,GAAG,YAAY,CAAC;QAC7D,MAAM,iBAAiB,GAAG,YAAY,CAAC,KAAK,EAAE,CAAC;QAC/C,MAAM,EAAE,QAAQ,EAAE,QAAQ,EAAE,GAAG,cAAc,CACzC,wBAAwB,KAAK,IAAI,CAAC,CAAC,CAAC,iBAAiB,CAAC,CAAC,CAAC,wBAAwB,CAAC,iBAAiB,CAAC,EACnG,WAAW,CACd,CAAC;QACF,MAAM,iBAAiB,GAAG,OAAO,QAAQ,KAAK,QAAQ,IAAI,CAAC,KAAK,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC;QAE1F,kBAAkB,CAAC,WAAW,EAAE,iBAAiB,EAAE,YAAY,EAAE,YAAY,EAAE,QAAQ,EAAE,QAAQ,CAAC,CAAC;IACvG,CAAC,CAAC,CAAC;AACX,CAAC,CAAC"}
@@ -0,0 +1,3 @@
1
+ import { TSetTimingsrcFactory } from '../types';
2
+ export declare const createSetTimingsrc: TSetTimingsrcFactory;
3
+ //# sourceMappingURL=set-timingsrc.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"set-timingsrc.d.ts","sourceRoot":"","sources":["../../../src/factories/set-timingsrc.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,oBAAoB,EAAE,MAAM,UAAU,CAAC;AAEhD,eAAO,MAAM,kBAAkB,EAAE,oBAGhC,CAAC"}
@@ -0,0 +1,4 @@
1
+ export const createSetTimingsrc = (setTimingsrcWithCustomUpdateFunction, update) => {
2
+ return (mediaElement, timingObject, prepareTimingStateVector = null) => setTimingsrcWithCustomUpdateFunction(mediaElement, timingObject, update, prepareTimingStateVector);
3
+ };
4
+ //# sourceMappingURL=set-timingsrc.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"set-timingsrc.js","sourceRoot":"","sources":["../../../src/factories/set-timingsrc.ts"],"names":[],"mappings":"AAEA,MAAM,CAAC,MAAM,kBAAkB,GAAyB,CAAC,oCAAoC,EAAE,MAAM,EAAE,EAAE;IACrG,OAAO,CAAC,YAAY,EAAE,YAAY,EAAE,wBAAwB,GAAG,IAAI,EAAE,EAAE,CACnE,oCAAoC,CAAC,YAAY,EAAE,YAAY,EAAE,MAAM,EAAE,wBAAwB,CAAC,CAAC;AAC3G,CAAC,CAAC"}
@@ -0,0 +1,3 @@
1
+ import { TUpdateGraduallyFactory } from '../types';
2
+ export declare const createUpdateGradually: TUpdateGraduallyFactory;
3
+ //# sourceMappingURL=update-gradually.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"update-gradually.d.ts","sourceRoot":"","sources":["../../../src/factories/update-gradually.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,uBAAuB,EAAE,MAAM,UAAU,CAAC;AAEnD,eAAO,MAAM,qBAAqB,EAAE,uBAmBnC,CAAC"}
@@ -0,0 +1,17 @@
1
+ export const createUpdateGradually = (timeConstant, threshold, tolerance) => {
2
+ return ({ position, velocity }, currentTime) => {
3
+ if (position < 0 || velocity === 0) {
4
+ return { position, velocity };
5
+ }
6
+ const positionDifference = currentTime - position;
7
+ const absolutePositionDifference = Math.abs(positionDifference);
8
+ if (absolutePositionDifference > threshold) {
9
+ return { position, velocity };
10
+ }
11
+ if (absolutePositionDifference > tolerance) {
12
+ return { position: currentTime, velocity: ((timeConstant - positionDifference) / timeConstant) * velocity };
13
+ }
14
+ return { position: currentTime, velocity };
15
+ };
16
+ };
17
+ //# sourceMappingURL=update-gradually.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"update-gradually.js","sourceRoot":"","sources":["../../../src/factories/update-gradually.ts"],"names":[],"mappings":"AAEA,MAAM,CAAC,MAAM,qBAAqB,GAA4B,CAAC,YAAY,EAAE,SAAS,EAAE,SAAS,EAAE,EAAE;IACjG,OAAO,CAAC,EAAE,QAAQ,EAAE,QAAQ,EAAE,EAAE,WAAW,EAAE,EAAE;QAC3C,IAAI,QAAQ,GAAG,CAAC,IAAI,QAAQ,KAAK,CAAC,EAAE;YAChC,OAAO,EAAE,QAAQ,EAAE,QAAQ,EAAE,CAAC;SACjC;QAED,MAAM,kBAAkB,GAAG,WAAW,GAAG,QAAQ,CAAC;QAClD,MAAM,0BAA0B,GAAG,IAAI,CAAC,GAAG,CAAC,kBAAkB,CAAC,CAAC;QAEhE,IAAI,0BAA0B,GAAG,SAAS,EAAE;YACxC,OAAO,EAAE,QAAQ,EAAE,QAAQ,EAAE,CAAC;SACjC;QAED,IAAI,0BAA0B,GAAG,SAAS,EAAE;YACxC,OAAO,EAAE,QAAQ,EAAE,WAAW,EAAE,QAAQ,EAAE,CAAC,CAAC,YAAY,GAAG,kBAAkB,CAAC,GAAG,YAAY,CAAC,GAAG,QAAQ,EAAE,CAAC;SAC/G;QAED,OAAO,EAAE,QAAQ,EAAE,WAAW,EAAE,QAAQ,EAAE,CAAC;IAC/C,CAAC,CAAC;AACN,CAAC,CAAC"}
@@ -0,0 +1,3 @@
1
+ import { TUpdateMediaElementFactory } from '../types';
2
+ export declare const createUpdateMediaElement: TUpdateMediaElementFactory;
3
+ //# sourceMappingURL=update-media-element.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"update-media-element.d.ts","sourceRoot":"","sources":["../../../src/factories/update-media-element.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,0BAA0B,EAAE,MAAM,UAAU,CAAC;AAEtD,eAAO,MAAM,wBAAwB,EAAE,0BAmCtC,CAAC"}
@@ -0,0 +1,38 @@
1
+ export const createUpdateMediaElement = (pause, play, setCurrentTime, setPlaybackRate) => {
2
+ return (currentTime, duration, mediaElement, playbackRate, position, velocity) => {
3
+ if (position < 0) {
4
+ if (currentTime > 0) {
5
+ setCurrentTime(mediaElement, currentTime, 0);
6
+ }
7
+ pause(mediaElement);
8
+ }
9
+ else if (position >= duration) {
10
+ if (currentTime !== duration) {
11
+ setCurrentTime(mediaElement, currentTime, duration);
12
+ }
13
+ pause(mediaElement);
14
+ }
15
+ else if (currentTime !== position) {
16
+ setCurrentTime(mediaElement, currentTime, position);
17
+ if (velocity !== 0) {
18
+ if (playbackRate !== velocity) {
19
+ setPlaybackRate(mediaElement, playbackRate, velocity);
20
+ }
21
+ play(mediaElement);
22
+ }
23
+ else {
24
+ pause(mediaElement);
25
+ }
26
+ }
27
+ else if (playbackRate !== velocity) {
28
+ if (velocity !== 0) {
29
+ setPlaybackRate(mediaElement, playbackRate, velocity);
30
+ play(mediaElement);
31
+ }
32
+ else {
33
+ pause(mediaElement);
34
+ }
35
+ }
36
+ };
37
+ };
38
+ //# sourceMappingURL=update-media-element.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"update-media-element.js","sourceRoot":"","sources":["../../../src/factories/update-media-element.ts"],"names":[],"mappings":"AAEA,MAAM,CAAC,MAAM,wBAAwB,GAA+B,CAAC,KAAK,EAAE,IAAI,EAAE,cAAc,EAAE,eAAe,EAAE,EAAE;IACjH,OAAO,CAAC,WAAW,EAAE,QAAQ,EAAE,YAAY,EAAE,YAAY,EAAE,QAAQ,EAAE,QAAQ,EAAE,EAAE;QAC7E,IAAI,QAAQ,GAAG,CAAC,EAAE;YACd,IAAI,WAAW,GAAG,CAAC,EAAE;gBACjB,cAAc,CAAC,YAAY,EAAE,WAAW,EAAE,CAAC,CAAC,CAAC;aAChD;YAED,KAAK,CAAC,YAAY,CAAC,CAAC;SACvB;aAAM,IAAI,QAAQ,IAAI,QAAQ,EAAE;YAC7B,IAAI,WAAW,KAAK,QAAQ,EAAE;gBAC1B,cAAc,CAAC,YAAY,EAAE,WAAW,EAAE,QAAQ,CAAC,CAAC;aACvD;YAED,KAAK,CAAC,YAAY,CAAC,CAAC;SACvB;aAAM,IAAI,WAAW,KAAK,QAAQ,EAAE;YACjC,cAAc,CAAC,YAAY,EAAE,WAAW,EAAE,QAAQ,CAAC,CAAC;YAEpD,IAAI,QAAQ,KAAK,CAAC,EAAE;gBAChB,IAAI,YAAY,KAAK,QAAQ,EAAE;oBAC3B,eAAe,CAAC,YAAY,EAAE,YAAY,EAAE,QAAQ,CAAC,CAAC;iBACzD;gBAED,IAAI,CAAC,YAAY,CAAC,CAAC;aACtB;iBAAM;gBACH,KAAK,CAAC,YAAY,CAAC,CAAC;aACvB;SACJ;aAAM,IAAI,YAAY,KAAK,QAAQ,EAAE;YAClC,IAAI,QAAQ,KAAK,CAAC,EAAE;gBAChB,eAAe,CAAC,YAAY,EAAE,YAAY,EAAE,QAAQ,CAAC,CAAC;gBACtD,IAAI,CAAC,YAAY,CAAC,CAAC;aACtB;iBAAM;gBACH,KAAK,CAAC,YAAY,CAAC,CAAC;aACvB;SACJ;IACL,CAAC,CAAC;AACN,CAAC,CAAC"}
@@ -0,0 +1,3 @@
1
+ import { TUpdateStepwiseFactoryFactory } from '../types';
2
+ export declare const createUpdateStepwiseFactory: TUpdateStepwiseFactoryFactory;
3
+ //# sourceMappingURL=update-stepwise-factory.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"update-stepwise-factory.d.ts","sourceRoot":"","sources":["../../../src/factories/update-stepwise-factory.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,6BAA6B,EAAE,MAAM,UAAU,CAAC;AAEzD,eAAO,MAAM,2BAA2B,EAAE,6BAgDzC,CAAC"}
@@ -0,0 +1,37 @@
1
+ export const createUpdateStepwiseFactory = (translateTimingStateVector) => {
2
+ return (tolerance) => {
3
+ let lastMotionUpdate = null;
4
+ let mediaElementDelay = 0;
5
+ return (timingStateVector, currentTime) => {
6
+ if (timingStateVector.position < 0 || timingStateVector.velocity === 0) {
7
+ lastMotionUpdate = null;
8
+ return { position: timingStateVector.position, velocity: timingStateVector.velocity };
9
+ }
10
+ if (lastMotionUpdate !== null) {
11
+ const playheadDifference = Math.abs(currentTime - lastMotionUpdate.position);
12
+ // Check if at least 10ms were played since the last motion update.
13
+ if (playheadDifference < 0.01) {
14
+ return { position: currentTime, velocity: lastMotionUpdate.velocity };
15
+ }
16
+ }
17
+ const positionDifference = Math.abs(currentTime - timingStateVector.position);
18
+ if (positionDifference > tolerance) {
19
+ if (lastMotionUpdate !== null) {
20
+ const elapsedTime = timingStateVector.timestamp - lastMotionUpdate.timestamp;
21
+ const { position } = translateTimingStateVector({ acceleration: 0, ...lastMotionUpdate }, elapsedTime);
22
+ mediaElementDelay = position - currentTime;
23
+ }
24
+ const positioWithDelay = timingStateVector.position + mediaElementDelay;
25
+ lastMotionUpdate = {
26
+ position: positioWithDelay,
27
+ timestamp: timingStateVector.timestamp,
28
+ velocity: timingStateVector.velocity
29
+ };
30
+ return { position: positioWithDelay, velocity: timingStateVector.velocity };
31
+ }
32
+ lastMotionUpdate = null;
33
+ return { position: currentTime, velocity: timingStateVector.velocity };
34
+ };
35
+ };
36
+ };
37
+ //# sourceMappingURL=update-stepwise-factory.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"update-stepwise-factory.js","sourceRoot":"","sources":["../../../src/factories/update-stepwise-factory.ts"],"names":[],"mappings":"AAEA,MAAM,CAAC,MAAM,2BAA2B,GAAkC,CAAC,0BAA0B,EAAE,EAAE;IACrG,OAAO,CAAC,SAAS,EAAE,EAAE;QACjB,IAAI,gBAAgB,GAAqE,IAAI,CAAC;QAC9F,IAAI,iBAAiB,GAAG,CAAC,CAAC;QAE1B,OAAO,CAAC,iBAAiB,EAAE,WAAW,EAAE,EAAE;YACtC,IAAI,iBAAiB,CAAC,QAAQ,GAAG,CAAC,IAAI,iBAAiB,CAAC,QAAQ,KAAK,CAAC,EAAE;gBACpE,gBAAgB,GAAG,IAAI,CAAC;gBAExB,OAAO,EAAE,QAAQ,EAAE,iBAAiB,CAAC,QAAQ,EAAE,QAAQ,EAAE,iBAAiB,CAAC,QAAQ,EAAE,CAAC;aACzF;YAED,IAAI,gBAAgB,KAAK,IAAI,EAAE;gBAC3B,MAAM,kBAAkB,GAAG,IAAI,CAAC,GAAG,CAAC,WAAW,GAAG,gBAAgB,CAAC,QAAQ,CAAC,CAAC;gBAE7E,mEAAmE;gBACnE,IAAI,kBAAkB,GAAG,IAAI,EAAE;oBAC3B,OAAO,EAAE,QAAQ,EAAE,WAAW,EAAE,QAAQ,EAAE,gBAAgB,CAAC,QAAQ,EAAE,CAAC;iBACzE;aACJ;YAED,MAAM,kBAAkB,GAAG,IAAI,CAAC,GAAG,CAAC,WAAW,GAAG,iBAAiB,CAAC,QAAQ,CAAC,CAAC;YAE9E,IAAI,kBAAkB,GAAG,SAAS,EAAE;gBAChC,IAAI,gBAAgB,KAAK,IAAI,EAAE;oBAC3B,MAAM,WAAW,GAAG,iBAAiB,CAAC,SAAS,GAAG,gBAAgB,CAAC,SAAS,CAAC;oBAE7E,MAAM,EAAE,QAAQ,EAAE,GAAG,0BAA0B,CAAC,EAAE,YAAY,EAAE,CAAC,EAAE,GAAG,gBAAgB,EAAE,EAAE,WAAW,CAAC,CAAC;oBAEvG,iBAAiB,GAAG,QAAQ,GAAG,WAAW,CAAC;iBAC9C;gBAED,MAAM,gBAAgB,GAAG,iBAAiB,CAAC,QAAQ,GAAG,iBAAiB,CAAC;gBAExE,gBAAgB,GAAG;oBACf,QAAQ,EAAE,gBAAgB;oBAC1B,SAAS,EAAE,iBAAiB,CAAC,SAAS;oBACtC,QAAQ,EAAE,iBAAiB,CAAC,QAAQ;iBACvC,CAAC;gBAEF,OAAO,EAAE,QAAQ,EAAE,gBAAgB,EAAE,QAAQ,EAAE,iBAAiB,CAAC,QAAQ,EAAE,CAAC;aAC/E;YAED,gBAAgB,GAAG,IAAI,CAAC;YAExB,OAAO,EAAE,QAAQ,EAAE,WAAW,EAAE,QAAQ,EAAE,iBAAiB,CAAC,QAAQ,EAAE,CAAC;QAC3E,CAAC,CAAC;IACN,CAAC,CAAC;AACN,CAAC,CAAC"}
@@ -0,0 +1,3 @@
1
+ import { TWindowFactory } from '../types';
2
+ export declare const createWindow: TWindowFactory;
3
+ //# sourceMappingURL=window.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"window.d.ts","sourceRoot":"","sources":["../../../src/factories/window.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,cAAc,EAAE,MAAM,UAAU,CAAC;AAE1C,eAAO,MAAM,YAAY,EAAE,cAAsE,CAAC"}
@@ -0,0 +1,2 @@
1
+ export const createWindow = () => (typeof window === 'undefined' ? null : window);
2
+ //# sourceMappingURL=window.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"window.js","sourceRoot":"","sources":["../../../src/factories/window.ts"],"names":[],"mappings":"AAEA,MAAM,CAAC,MAAM,YAAY,GAAmB,GAAG,EAAE,CAAC,CAAC,OAAO,MAAM,KAAK,WAAW,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC"}
@@ -0,0 +1,2 @@
1
+ export declare const pause: (mediaElement: HTMLMediaElement) => void;
2
+ //# sourceMappingURL=pause.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"pause.d.ts","sourceRoot":"","sources":["../../../src/functions/pause.ts"],"names":[],"mappings":"AAAA,eAAO,MAAM,KAAK,iBAAkB,gBAAgB,SAInD,CAAC"}
@@ -0,0 +1,6 @@
1
+ export const pause = (mediaElement) => {
2
+ if (!mediaElement.paused) {
3
+ mediaElement.pause();
4
+ }
5
+ };
6
+ //# sourceMappingURL=pause.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"pause.js","sourceRoot":"","sources":["../../../src/functions/pause.ts"],"names":[],"mappings":"AAAA,MAAM,CAAC,MAAM,KAAK,GAAG,CAAC,YAA8B,EAAE,EAAE;IACpD,IAAI,CAAC,YAAY,CAAC,MAAM,EAAE;QACtB,YAAY,CAAC,KAAK,EAAE,CAAC;KACxB;AACL,CAAC,CAAC"}
@@ -0,0 +1,2 @@
1
+ export declare const play: (mediaElement: HTMLMediaElement) => void;
2
+ //# sourceMappingURL=play.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"play.d.ts","sourceRoot":"","sources":["../../../src/functions/play.ts"],"names":[],"mappings":"AAAA,eAAO,MAAM,IAAI,iBAAkB,gBAAgB,SAIlD,CAAC"}
@@ -0,0 +1,6 @@
1
+ export const play = (mediaElement) => {
2
+ if (mediaElement.paused) {
3
+ mediaElement.play().catch((err) => console.error(err)); // tslint:disable-line no-console
4
+ }
5
+ };
6
+ //# sourceMappingURL=play.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"play.js","sourceRoot":"","sources":["../../../src/functions/play.ts"],"names":[],"mappings":"AAAA,MAAM,CAAC,MAAM,IAAI,GAAG,CAAC,YAA8B,EAAE,EAAE;IACnD,IAAI,YAAY,CAAC,MAAM,EAAE;QACrB,YAAY,CAAC,IAAI,EAAE,CAAC,KAAK,CAAC,CAAC,GAAG,EAAE,EAAE,CAAC,OAAO,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,iCAAiC;KAC5F;AACL,CAAC,CAAC"}
@@ -0,0 +1,2 @@
1
+ export * from './update-vector';
2
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/interfaces/index.ts"],"names":[],"mappings":"AAAA,cAAc,iBAAiB,CAAC"}
@@ -0,0 +1,2 @@
1
+ export * from './update-vector';
2
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/interfaces/index.ts"],"names":[],"mappings":"AAAA,cAAc,iBAAiB,CAAC"}
@@ -0,0 +1,5 @@
1
+ export interface IUpdateVector {
2
+ position: number;
3
+ velocity: number;
4
+ }
5
+ //# sourceMappingURL=update-vector.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"update-vector.d.ts","sourceRoot":"","sources":["../../../src/interfaces/update-vector.ts"],"names":[],"mappings":"AAAA,MAAM,WAAW,aAAa;IAC1B,QAAQ,EAAE,MAAM,CAAC;IAEjB,QAAQ,EAAE,MAAM,CAAC;CACpB"}
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=update-vector.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"update-vector.js","sourceRoot":"","sources":["../../../src/interfaces/update-vector.ts"],"names":[],"mappings":""}
@@ -0,0 +1,8 @@
1
+ import { createSetTimingsrc } from './factories/set-timingsrc';
2
+ import { createUpdateGradually } from './factories/update-gradually';
3
+ export { createSetTimingsrc };
4
+ export { createUpdateGradually };
5
+ export declare const createUpdateStepwise: import("./types").TUpdateStepwiseFactory;
6
+ export declare const setTimingsrcWithCustomUpdateFunction: import("./types").TSetTimingsrcWithCustomUpdateFunctionFunction;
7
+ export declare const setTimingsrc: import("./types").TSetTimingsrcFunction;
8
+ //# sourceMappingURL=module.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"module.d.ts","sourceRoot":"","sources":["../../src/module.ts"],"names":[],"mappings":"AAKA,OAAO,EAAE,kBAAkB,EAAE,MAAM,2BAA2B,CAAC;AAE/D,OAAO,EAAE,qBAAqB,EAAE,MAAM,8BAA8B,CAAC;AAOrE,OAAO,EAAE,kBAAkB,EAAE,CAAC;AAE9B,OAAO,EAAE,qBAAqB,EAAE,CAAC;AAEjC,eAAO,MAAM,oBAAoB,0CAA0D,CAAC;AAI5F,eAAO,MAAM,oCAAoC,iEAAiF,CAAC;AAEnI,eAAO,MAAM,YAAY,yCAMxB,CAAC"}
@@ -0,0 +1,20 @@
1
+ import { animationFrame } from 'subscribable-things';
2
+ import { translateTimingStateVector } from 'timing-object';
3
+ import { createDefaultSetTimingsrc } from './factories/default-set-timingsrc';
4
+ import { createSetCurrentTime } from './factories/set-current-time';
5
+ import { createSetPlaybackRate } from './factories/set-playback-rate';
6
+ import { createSetTimingsrc } from './factories/set-timingsrc';
7
+ import { createSetTimingsrcWithCustomUpdateFunction } from './factories/set-timingsrc-with-custom-update-function';
8
+ import { createUpdateGradually } from './factories/update-gradually';
9
+ import { createUpdateMediaElement } from './factories/update-media-element';
10
+ import { createUpdateStepwiseFactory } from './factories/update-stepwise-factory';
11
+ import { createWindow } from './factories/window';
12
+ import { pause } from './functions/pause';
13
+ import { play } from './functions/play';
14
+ export { createSetTimingsrc };
15
+ export { createUpdateGradually };
16
+ export const createUpdateStepwise = createUpdateStepwiseFactory(translateTimingStateVector);
17
+ const updateMediaElement = createUpdateMediaElement(pause, play, createSetCurrentTime(new WeakMap()), createSetPlaybackRate(new WeakMap()));
18
+ export const setTimingsrcWithCustomUpdateFunction = createSetTimingsrcWithCustomUpdateFunction(animationFrame, updateMediaElement);
19
+ export const setTimingsrc = createDefaultSetTimingsrc(createSetTimingsrc, createUpdateGradually, createUpdateStepwise, setTimingsrcWithCustomUpdateFunction, createWindow());
20
+ //# sourceMappingURL=module.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"module.js","sourceRoot":"","sources":["../../src/module.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,cAAc,EAAE,MAAM,qBAAqB,CAAC;AACrD,OAAO,EAAE,0BAA0B,EAAE,MAAM,eAAe,CAAC;AAC3D,OAAO,EAAE,yBAAyB,EAAE,MAAM,mCAAmC,CAAC;AAC9E,OAAO,EAAE,oBAAoB,EAAE,MAAM,8BAA8B,CAAC;AACpE,OAAO,EAAE,qBAAqB,EAAE,MAAM,+BAA+B,CAAC;AACtE,OAAO,EAAE,kBAAkB,EAAE,MAAM,2BAA2B,CAAC;AAC/D,OAAO,EAAE,0CAA0C,EAAE,MAAM,uDAAuD,CAAC;AACnH,OAAO,EAAE,qBAAqB,EAAE,MAAM,8BAA8B,CAAC;AACrE,OAAO,EAAE,wBAAwB,EAAE,MAAM,kCAAkC,CAAC;AAC5E,OAAO,EAAE,2BAA2B,EAAE,MAAM,qCAAqC,CAAC;AAClF,OAAO,EAAE,YAAY,EAAE,MAAM,oBAAoB,CAAC;AAClD,OAAO,EAAE,KAAK,EAAE,MAAM,mBAAmB,CAAC;AAC1C,OAAO,EAAE,IAAI,EAAE,MAAM,kBAAkB,CAAC;AAExC,OAAO,EAAE,kBAAkB,EAAE,CAAC;AAE9B,OAAO,EAAE,qBAAqB,EAAE,CAAC;AAEjC,MAAM,CAAC,MAAM,oBAAoB,GAAG,2BAA2B,CAAC,0BAA0B,CAAC,CAAC;AAE5F,MAAM,kBAAkB,GAAG,wBAAwB,CAAC,KAAK,EAAE,IAAI,EAAE,oBAAoB,CAAC,IAAI,OAAO,EAAE,CAAC,EAAE,qBAAqB,CAAC,IAAI,OAAO,EAAE,CAAC,CAAC,CAAC;AAE5I,MAAM,CAAC,MAAM,oCAAoC,GAAG,0CAA0C,CAAC,cAAc,EAAE,kBAAkB,CAAC,CAAC;AAEnI,MAAM,CAAC,MAAM,YAAY,GAAG,yBAAyB,CACjD,kBAAkB,EAClB,qBAAqB,EACrB,oBAAoB,EACpB,oCAAoC,EACpC,YAAY,EAAE,CACjB,CAAC"}
@@ -0,0 +1,7 @@
1
+ import { TSetTimingsrcFactory } from './set-timingsrc-factory';
2
+ import { TSetTimingsrcFunction } from './set-timingsrc-function';
3
+ import { TSetTimingsrcWithCustomUpdateFunctionFunction } from './set-timingsrc-with-custom-update-function-function';
4
+ import { TUpdateGraduallyFactory } from './update-gradually-factory';
5
+ import { TUpdateStepwiseFactory } from './update-stepwise-factory';
6
+ export declare type TDefaultSetTimingsrcFactory = (createSetTimingsrc: TSetTimingsrcFactory, createUpdateGradually: TUpdateGraduallyFactory, createUpdateStepwise: TUpdateStepwiseFactory, setTimingsrcWithCustomUpdateFunction: TSetTimingsrcWithCustomUpdateFunctionFunction, window: null | Window) => TSetTimingsrcFunction;
7
+ //# sourceMappingURL=default-timingsrc-factory.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"default-timingsrc-factory.d.ts","sourceRoot":"","sources":["../../../src/types/default-timingsrc-factory.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,oBAAoB,EAAE,MAAM,yBAAyB,CAAC;AAC/D,OAAO,EAAE,qBAAqB,EAAE,MAAM,0BAA0B,CAAC;AACjE,OAAO,EAAE,6CAA6C,EAAE,MAAM,sDAAsD,CAAC;AACrH,OAAO,EAAE,uBAAuB,EAAE,MAAM,4BAA4B,CAAC;AACrE,OAAO,EAAE,sBAAsB,EAAE,MAAM,2BAA2B,CAAC;AAEnE,oBAAY,2BAA2B,GAAG,CACtC,kBAAkB,EAAE,oBAAoB,EACxC,qBAAqB,EAAE,uBAAuB,EAC9C,oBAAoB,EAAE,sBAAsB,EAC5C,oCAAoC,EAAE,6CAA6C,EACnF,MAAM,EAAE,IAAI,GAAG,MAAM,KACpB,qBAAqB,CAAC"}
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=default-timingsrc-factory.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"default-timingsrc-factory.js","sourceRoot":"","sources":["../../../src/types/default-timingsrc-factory.ts"],"names":[],"mappings":""}
@@ -0,0 +1,19 @@
1
+ export * from './default-timingsrc-factory';
2
+ export * from './pause-function';
3
+ export * from './play-function';
4
+ export * from './prepare-timing-state-vector-function';
5
+ export * from './set-current-time-factory';
6
+ export * from './set-current-time-function';
7
+ export * from './set-playback-rate-factory';
8
+ export * from './set-playback-rate-function';
9
+ export * from './set-timingsrc-factory';
10
+ export * from './set-timingsrc-function';
11
+ export * from './set-timingsrc-with-custom-update-function-factory';
12
+ export * from './set-timingsrc-with-custom-update-function-function';
13
+ export * from './update-function';
14
+ export * from './update-gradually-factory';
15
+ export * from './update-media-element-factory';
16
+ export * from './update-stepwise-factory';
17
+ export * from './update-stepwise-factory-factory';
18
+ export * from './window-factory';
19
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/types/index.ts"],"names":[],"mappings":"AAAA,cAAc,6BAA6B,CAAC;AAC5C,cAAc,kBAAkB,CAAC;AACjC,cAAc,iBAAiB,CAAC;AAChC,cAAc,wCAAwC,CAAC;AACvD,cAAc,4BAA4B,CAAC;AAC3C,cAAc,6BAA6B,CAAC;AAC5C,cAAc,6BAA6B,CAAC;AAC5C,cAAc,8BAA8B,CAAC;AAC7C,cAAc,yBAAyB,CAAC;AACxC,cAAc,0BAA0B,CAAC;AACzC,cAAc,qDAAqD,CAAC;AACpE,cAAc,sDAAsD,CAAC;AACrE,cAAc,mBAAmB,CAAC;AAClC,cAAc,4BAA4B,CAAC;AAC3C,cAAc,gCAAgC,CAAC;AAC/C,cAAc,2BAA2B,CAAC;AAC1C,cAAc,mCAAmC,CAAC;AAClD,cAAc,kBAAkB,CAAC"}
@@ -0,0 +1,19 @@
1
+ export * from './default-timingsrc-factory';
2
+ export * from './pause-function';
3
+ export * from './play-function';
4
+ export * from './prepare-timing-state-vector-function';
5
+ export * from './set-current-time-factory';
6
+ export * from './set-current-time-function';
7
+ export * from './set-playback-rate-factory';
8
+ export * from './set-playback-rate-function';
9
+ export * from './set-timingsrc-factory';
10
+ export * from './set-timingsrc-function';
11
+ export * from './set-timingsrc-with-custom-update-function-factory';
12
+ export * from './set-timingsrc-with-custom-update-function-function';
13
+ export * from './update-function';
14
+ export * from './update-gradually-factory';
15
+ export * from './update-media-element-factory';
16
+ export * from './update-stepwise-factory';
17
+ export * from './update-stepwise-factory-factory';
18
+ export * from './window-factory';
19
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/types/index.ts"],"names":[],"mappings":"AAAA,cAAc,6BAA6B,CAAC;AAC5C,cAAc,kBAAkB,CAAC;AACjC,cAAc,iBAAiB,CAAC;AAChC,cAAc,wCAAwC,CAAC;AACvD,cAAc,4BAA4B,CAAC;AAC3C,cAAc,6BAA6B,CAAC;AAC5C,cAAc,6BAA6B,CAAC;AAC5C,cAAc,8BAA8B,CAAC;AAC7C,cAAc,yBAAyB,CAAC;AACxC,cAAc,0BAA0B,CAAC;AACzC,cAAc,qDAAqD,CAAC;AACpE,cAAc,sDAAsD,CAAC;AACrE,cAAc,mBAAmB,CAAC;AAClC,cAAc,4BAA4B,CAAC;AAC3C,cAAc,gCAAgC,CAAC;AAC/C,cAAc,2BAA2B,CAAC;AAC1C,cAAc,mCAAmC,CAAC;AAClD,cAAc,kBAAkB,CAAC"}
@@ -0,0 +1,2 @@
1
+ export declare type TPauseFunction = (mediaElement: HTMLMediaElement) => void;
2
+ //# sourceMappingURL=pause-function.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"pause-function.d.ts","sourceRoot":"","sources":["../../../src/types/pause-function.ts"],"names":[],"mappings":"AAAA,oBAAY,cAAc,GAAG,CAAC,YAAY,EAAE,gBAAgB,KAAK,IAAI,CAAC"}
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=pause-function.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"pause-function.js","sourceRoot":"","sources":["../../../src/types/pause-function.ts"],"names":[],"mappings":""}
@@ -0,0 +1,2 @@
1
+ export declare type TPlayFunction = (mediaElement: HTMLMediaElement) => void;
2
+ //# sourceMappingURL=play-function.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"play-function.d.ts","sourceRoot":"","sources":["../../../src/types/play-function.ts"],"names":[],"mappings":"AAAA,oBAAY,aAAa,GAAG,CAAC,YAAY,EAAE,gBAAgB,KAAK,IAAI,CAAC"}
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=play-function.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"play-function.js","sourceRoot":"","sources":["../../../src/types/play-function.ts"],"names":[],"mappings":""}
@@ -0,0 +1,3 @@
1
+ import { ITimingStateVector } from 'timing-object';
2
+ export declare type TPrepareTimingStateVectorFunction = (timingStateVector: ITimingStateVector) => ITimingStateVector;
3
+ //# sourceMappingURL=prepare-timing-state-vector-function.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"prepare-timing-state-vector-function.d.ts","sourceRoot":"","sources":["../../../src/types/prepare-timing-state-vector-function.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,kBAAkB,EAAE,MAAM,eAAe,CAAC;AAEnD,oBAAY,iCAAiC,GAAG,CAAC,iBAAiB,EAAE,kBAAkB,KAAK,kBAAkB,CAAC"}
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=prepare-timing-state-vector-function.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"prepare-timing-state-vector-function.js","sourceRoot":"","sources":["../../../src/types/prepare-timing-state-vector-function.ts"],"names":[],"mappings":""}
@@ -0,0 +1,3 @@
1
+ import { TSetCurrentTimeFunction } from './set-current-time-function';
2
+ export declare type TSetCurrentTimeFactory = (currentTimeAssignments: WeakMap<HTMLMediaElement, [number, number]>) => TSetCurrentTimeFunction;
3
+ //# sourceMappingURL=set-current-time-factory.d.ts.map