timingsrc 1.2.5 → 1.2.7

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 (166) hide show
  1. package/README.md +0 -1
  2. package/build/es2019/factories/compute-velocity.d.ts +2 -0
  3. package/build/es2019/factories/compute-velocity.d.ts.map +1 -0
  4. package/build/es2019/factories/compute-velocity.js +2 -0
  5. package/build/es2019/factories/compute-velocity.js.map +1 -0
  6. package/build/es2019/factories/default-set-timingsrc.d.ts +9 -2
  7. package/build/es2019/factories/default-set-timingsrc.d.ts.map +1 -1
  8. package/build/es2019/factories/default-set-timingsrc.js +6 -3
  9. package/build/es2019/factories/default-set-timingsrc.js.map +1 -1
  10. package/build/es2019/factories/set-current-time.d.ts +1 -2
  11. package/build/es2019/factories/set-current-time.d.ts.map +1 -1
  12. package/build/es2019/factories/set-current-time.js.map +1 -1
  13. package/build/es2019/factories/set-playback-rate.d.ts +1 -2
  14. package/build/es2019/factories/set-playback-rate.d.ts.map +1 -1
  15. package/build/es2019/factories/set-playback-rate.js.map +1 -1
  16. package/build/es2019/factories/set-timingsrc-with-custom-update-function.d.ts +6 -2
  17. package/build/es2019/factories/set-timingsrc-with-custom-update-function.d.ts.map +1 -1
  18. package/build/es2019/factories/set-timingsrc-with-custom-update-function.js +3 -1
  19. package/build/es2019/factories/set-timingsrc-with-custom-update-function.js.map +1 -1
  20. package/build/es2019/factories/set-timingsrc.d.ts +5 -2
  21. package/build/es2019/factories/set-timingsrc.d.ts.map +1 -1
  22. package/build/es2019/factories/set-timingsrc.js +1 -3
  23. package/build/es2019/factories/set-timingsrc.js.map +1 -1
  24. package/build/es2019/factories/update-gradually.d.ts +7 -2
  25. package/build/es2019/factories/update-gradually.d.ts.map +1 -1
  26. package/build/es2019/factories/update-gradually.js +18 -7
  27. package/build/es2019/factories/update-gradually.js.map +1 -1
  28. package/build/es2019/factories/update-media-element.d.ts +5 -2
  29. package/build/es2019/factories/update-media-element.d.ts.map +1 -1
  30. package/build/es2019/factories/update-media-element.js.map +1 -1
  31. package/build/es2019/factories/update-stepwise-factory.d.ts +12 -2
  32. package/build/es2019/factories/update-stepwise-factory.d.ts.map +1 -1
  33. package/build/es2019/factories/update-stepwise-factory.js +98 -25
  34. package/build/es2019/factories/update-stepwise-factory.js.map +1 -1
  35. package/build/es2019/factories/window.d.ts +1 -2
  36. package/build/es2019/factories/window.d.ts.map +1 -1
  37. package/build/es2019/factories/window.js.map +1 -1
  38. package/build/es2019/functions/determine-supported-playback-rate-values.d.ts +2 -1
  39. package/build/es2019/functions/determine-supported-playback-rate-values.d.ts.map +1 -1
  40. package/build/es2019/functions/determine-supported-playback-rate-values.js.map +1 -1
  41. package/build/es2019/functions/update-vector-with-new-position.d.ts +6 -0
  42. package/build/es2019/functions/update-vector-with-new-position.d.ts.map +1 -0
  43. package/build/es2019/functions/update-vector-with-new-position.js +5 -0
  44. package/build/es2019/functions/update-vector-with-new-position.js.map +1 -0
  45. package/build/es2019/module.d.ts +11 -3
  46. package/build/es2019/module.d.ts.map +1 -1
  47. package/build/es2019/module.js +3 -1
  48. package/build/es2019/module.js.map +1 -1
  49. package/build/es2019/types/index.d.ts +1 -17
  50. package/build/es2019/types/index.d.ts.map +1 -1
  51. package/build/es2019/types/index.js +1 -17
  52. package/build/es2019/types/index.js.map +1 -1
  53. package/build/es2019/types/update-function.d.ts +1 -1
  54. package/build/es2019/types/update-function.d.ts.map +1 -1
  55. package/build/es2019/types/update-vector-with-custom-state.d.ts +3 -0
  56. package/build/es2019/types/update-vector-with-custom-state.d.ts.map +1 -0
  57. package/build/es2019/types/update-vector-with-custom-state.js +2 -0
  58. package/build/es2019/types/update-vector-with-custom-state.js.map +1 -0
  59. package/build/es5/bundle.js +167 -63
  60. package/package.json +16 -16
  61. package/src/factories/compute-velocity.ts +2 -0
  62. package/src/factories/default-set-timingsrc.ts +30 -19
  63. package/src/factories/set-current-time.ts +2 -4
  64. package/src/factories/set-playback-rate.ts +2 -4
  65. package/src/factories/set-timingsrc-with-custom-update-function.ts +24 -9
  66. package/src/factories/set-timingsrc.ts +14 -4
  67. package/src/factories/update-gradually.ts +37 -8
  68. package/src/factories/update-media-element.ts +18 -3
  69. package/src/factories/update-stepwise-factory.ts +133 -38
  70. package/src/factories/window.ts +1 -3
  71. package/src/functions/determine-supported-playback-rate-values.ts +3 -1
  72. package/src/functions/update-vector-with-new-position.ts +9 -0
  73. package/src/module.ts +4 -0
  74. package/src/types/index.ts +1 -17
  75. package/src/types/update-function.ts +5 -1
  76. package/src/types/update-vector-with-custom-state.ts +5 -0
  77. package/build/es2019/types/default-timingsrc-factory.d.ts +0 -8
  78. package/build/es2019/types/default-timingsrc-factory.d.ts.map +0 -1
  79. package/build/es2019/types/default-timingsrc-factory.js +0 -2
  80. package/build/es2019/types/default-timingsrc-factory.js.map +0 -1
  81. package/build/es2019/types/determine-supported-playback-rate-values-function.d.ts +0 -2
  82. package/build/es2019/types/determine-supported-playback-rate-values-function.d.ts.map +0 -1
  83. package/build/es2019/types/determine-supported-playback-rate-values-function.js +0 -2
  84. package/build/es2019/types/determine-supported-playback-rate-values-function.js.map +0 -1
  85. package/build/es2019/types/pause-function.d.ts +0 -2
  86. package/build/es2019/types/pause-function.d.ts.map +0 -1
  87. package/build/es2019/types/pause-function.js +0 -2
  88. package/build/es2019/types/pause-function.js.map +0 -1
  89. package/build/es2019/types/play-function.d.ts +0 -2
  90. package/build/es2019/types/play-function.d.ts.map +0 -1
  91. package/build/es2019/types/play-function.js +0 -2
  92. package/build/es2019/types/play-function.js.map +0 -1
  93. package/build/es2019/types/set-current-time-factory.d.ts +0 -3
  94. package/build/es2019/types/set-current-time-factory.d.ts.map +0 -1
  95. package/build/es2019/types/set-current-time-factory.js +0 -2
  96. package/build/es2019/types/set-current-time-factory.js.map +0 -1
  97. package/build/es2019/types/set-current-time-function.d.ts +0 -2
  98. package/build/es2019/types/set-current-time-function.d.ts.map +0 -1
  99. package/build/es2019/types/set-current-time-function.js +0 -2
  100. package/build/es2019/types/set-current-time-function.js.map +0 -1
  101. package/build/es2019/types/set-playback-rate-factory.d.ts +0 -3
  102. package/build/es2019/types/set-playback-rate-factory.d.ts.map +0 -1
  103. package/build/es2019/types/set-playback-rate-factory.js +0 -2
  104. package/build/es2019/types/set-playback-rate-factory.js.map +0 -1
  105. package/build/es2019/types/set-playback-rate-function.d.ts +0 -2
  106. package/build/es2019/types/set-playback-rate-function.d.ts.map +0 -1
  107. package/build/es2019/types/set-playback-rate-function.js +0 -2
  108. package/build/es2019/types/set-playback-rate-function.js.map +0 -1
  109. package/build/es2019/types/set-timingsrc-factory.d.ts +0 -5
  110. package/build/es2019/types/set-timingsrc-factory.d.ts.map +0 -1
  111. package/build/es2019/types/set-timingsrc-factory.js +0 -2
  112. package/build/es2019/types/set-timingsrc-factory.js.map +0 -1
  113. package/build/es2019/types/set-timingsrc-function.d.ts +0 -4
  114. package/build/es2019/types/set-timingsrc-function.d.ts.map +0 -1
  115. package/build/es2019/types/set-timingsrc-function.js +0 -2
  116. package/build/es2019/types/set-timingsrc-function.js.map +0 -1
  117. package/build/es2019/types/set-timingsrc-with-custom-update-function-factory.d.ts +0 -5
  118. package/build/es2019/types/set-timingsrc-with-custom-update-function-factory.d.ts.map +0 -1
  119. package/build/es2019/types/set-timingsrc-with-custom-update-function-factory.js +0 -2
  120. package/build/es2019/types/set-timingsrc-with-custom-update-function-factory.js.map +0 -1
  121. package/build/es2019/types/set-timingsrc-with-custom-update-function-function.d.ts +0 -5
  122. package/build/es2019/types/set-timingsrc-with-custom-update-function-function.d.ts.map +0 -1
  123. package/build/es2019/types/set-timingsrc-with-custom-update-function-function.js +0 -2
  124. package/build/es2019/types/set-timingsrc-with-custom-update-function-function.js.map +0 -1
  125. package/build/es2019/types/update-gradually-factory.d.ts +0 -4
  126. package/build/es2019/types/update-gradually-factory.d.ts.map +0 -1
  127. package/build/es2019/types/update-gradually-factory.js +0 -2
  128. package/build/es2019/types/update-gradually-factory.js.map +0 -1
  129. package/build/es2019/types/update-media-element-factory.d.ts +0 -7
  130. package/build/es2019/types/update-media-element-factory.d.ts.map +0 -1
  131. package/build/es2019/types/update-media-element-factory.js +0 -2
  132. package/build/es2019/types/update-media-element-factory.js.map +0 -1
  133. package/build/es2019/types/update-media-element-function.d.ts +0 -2
  134. package/build/es2019/types/update-media-element-function.d.ts.map +0 -1
  135. package/build/es2019/types/update-media-element-function.js +0 -2
  136. package/build/es2019/types/update-media-element-function.js.map +0 -1
  137. package/build/es2019/types/update-stepwise-factory-factory.d.ts +0 -4
  138. package/build/es2019/types/update-stepwise-factory-factory.d.ts.map +0 -1
  139. package/build/es2019/types/update-stepwise-factory-factory.js +0 -2
  140. package/build/es2019/types/update-stepwise-factory-factory.js.map +0 -1
  141. package/build/es2019/types/update-stepwise-factory.d.ts +0 -3
  142. package/build/es2019/types/update-stepwise-factory.d.ts.map +0 -1
  143. package/build/es2019/types/update-stepwise-factory.js +0 -2
  144. package/build/es2019/types/update-stepwise-factory.js.map +0 -1
  145. package/build/es2019/types/window-factory.d.ts +0 -2
  146. package/build/es2019/types/window-factory.d.ts.map +0 -1
  147. package/build/es2019/types/window-factory.js +0 -2
  148. package/build/es2019/types/window-factory.js.map +0 -1
  149. package/src/types/default-timingsrc-factory.ts +0 -15
  150. package/src/types/determine-supported-playback-rate-values-function.ts +0 -1
  151. package/src/types/pause-function.ts +0 -1
  152. package/src/types/play-function.ts +0 -1
  153. package/src/types/set-current-time-factory.ts +0 -3
  154. package/src/types/set-current-time-function.ts +0 -1
  155. package/src/types/set-playback-rate-factory.ts +0 -3
  156. package/src/types/set-playback-rate-function.ts +0 -1
  157. package/src/types/set-timingsrc-factory.ts +0 -8
  158. package/src/types/set-timingsrc-function.ts +0 -8
  159. package/src/types/set-timingsrc-with-custom-update-function-factory.ts +0 -10
  160. package/src/types/set-timingsrc-with-custom-update-function-function.ts +0 -10
  161. package/src/types/update-gradually-factory.ts +0 -9
  162. package/src/types/update-media-element-factory.ts +0 -12
  163. package/src/types/update-media-element-function.ts +0 -8
  164. package/src/types/update-stepwise-factory-factory.ts +0 -4
  165. package/src/types/update-stepwise-factory.ts +0 -3
  166. package/src/types/window-factory.ts +0 -1
package/README.md CHANGED
@@ -2,7 +2,6 @@
2
2
 
3
3
  **A library to synchronize a MediaElement with a TimingObject.**
4
4
 
5
- [![dependencies](https://img.shields.io/david/chrisguttandin/timingsrc.svg?style=flat-square)](https://github.com/chrisguttandin/timingsrc/network/dependencies)
6
5
  [![version](https://img.shields.io/npm/v/timingsrc.svg?style=flat-square)](https://www.npmjs.com/package/timingsrc)
7
6
 
8
7
  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).
@@ -0,0 +1,2 @@
1
+ export declare const createComputeVelocity: (timeConstant: number) => (delta: number, minValue: number, maxValue: number, velocity: number) => number;
2
+ //# sourceMappingURL=compute-velocity.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"compute-velocity.d.ts","sourceRoot":"","sources":["../../../src/factories/compute-velocity.ts"],"names":[],"mappings":"AAAA,eAAO,MAAM,qBAAqB,iBAAkB,MAAM,aAAa,MAAM,YAAY,MAAM,YAAY,MAAM,YAAY,MAAM,WACrC,CAAC"}
@@ -0,0 +1,2 @@
1
+ export const createComputeVelocity = (timeConstant) => (delta, minValue, maxValue, velocity) => Math.max(minValue, Math.min(maxValue, ((timeConstant - delta) / timeConstant) * velocity));
2
+ //# sourceMappingURL=compute-velocity.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"compute-velocity.js","sourceRoot":"","sources":["../../../src/factories/compute-velocity.ts"],"names":[],"mappings":"AAAA,MAAM,CAAC,MAAM,qBAAqB,GAAG,CAAC,YAAoB,EAAE,EAAE,CAAC,CAAC,KAAa,EAAE,QAAgB,EAAE,QAAgB,EAAE,QAAgB,EAAE,EAAE,CACnI,IAAI,CAAC,GAAG,CAAC,QAAQ,EAAE,IAAI,CAAC,GAAG,CAAC,QAAQ,EAAE,CAAC,CAAC,YAAY,GAAG,KAAK,CAAC,GAAG,YAAY,CAAC,GAAG,QAAQ,CAAC,CAAC,CAAC"}
@@ -1,3 +1,10 @@
1
- import { TDefaultSetTimingsrcFactory } from '../types';
2
- export declare const createDefaultSetTimingsrc: TDefaultSetTimingsrcFactory;
1
+ import type { determineSupportedPlaybackRateValues as determineSupportedPlaybackRateValuesFunction } from '../functions/determine-supported-playback-rate-values';
2
+ import type { updateVectorWithNewPosition as updateVectorWithNewPositionFunction } from '../functions/update-vector-with-new-position';
3
+ import type { createComputeVelocity as createComputeVelocityFunction } from './compute-velocity';
4
+ import type { createSetTimingsrc as createSetTimingsrcFunction } from './set-timingsrc';
5
+ import type { createSetTimingsrcWithCustomUpdateFunction } from './set-timingsrc-with-custom-update-function';
6
+ import type { createUpdateGradually as createUpdateGraduallyFunction } from './update-gradually';
7
+ import type { createUpdateStepwiseFactory } from './update-stepwise-factory';
8
+ import type { createWindow } from './window';
9
+ export declare const createDefaultSetTimingsrc: (createComputeVelocity: typeof createComputeVelocityFunction, createSetTimingsrc: typeof createSetTimingsrcFunction, createUpdateGradually: typeof createUpdateGraduallyFunction, createUpdateStepwise: ReturnType<typeof createUpdateStepwiseFactory>, determineSupportedPlaybackRateValues: typeof determineSupportedPlaybackRateValuesFunction, setTimingsrcWithCustomUpdateFunction: ReturnType<typeof createSetTimingsrcWithCustomUpdateFunction>, updateVectorWithNewPosition: typeof updateVectorWithNewPositionFunction, window: ReturnType<typeof createWindow>) => (mediaElement: HTMLMediaElement, timingObject: import("timing-object").ITimingObject, prepareTimingStateVector?: import("../types").TPrepareTimingStateVectorFunction | null) => () => void;
3
10
  //# sourceMappingURL=default-set-timingsrc.d.ts.map
@@ -1 +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,2BAmB7B,CAAC"}
1
+ {"version":3,"file":"default-set-timingsrc.d.ts","sourceRoot":"","sources":["../../../src/factories/default-set-timingsrc.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,oCAAoC,IAAI,4CAA4C,EAAE,MAAM,uDAAuD,CAAC;AAClK,OAAO,KAAK,EAAE,2BAA2B,IAAI,mCAAmC,EAAE,MAAM,8CAA8C,CAAC;AAEvI,OAAO,KAAK,EAAE,qBAAqB,IAAI,6BAA6B,EAAE,MAAM,oBAAoB,CAAC;AACjG,OAAO,KAAK,EAAE,kBAAkB,IAAI,0BAA0B,EAAE,MAAM,iBAAiB,CAAC;AACxF,OAAO,KAAK,EAAE,0CAA0C,EAAE,MAAM,6CAA6C,CAAC;AAC9G,OAAO,KAAK,EAAE,qBAAqB,IAAI,6BAA6B,EAAE,MAAM,oBAAoB,CAAC;AACjG,OAAO,KAAK,EAAE,2BAA2B,EAAE,MAAM,2BAA2B,CAAC;AAC7E,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,UAAU,CAAC;AAM7C,eAAO,MAAM,yBAAyB,0BACX,oCAAoC,sBACvC,iCAAiC,yBAC9B,oCAAoC,wBACrC,WAAW,kCAAkC,CAAC,wCAC9B,mDAAmD,wCACnD,WAAW,iDAAiD,CAAC,+BACtE,0CAA0C,UAC/D,WAAW,mBAAmB,CAAC,gMAc1C,CAAC"}
@@ -1,7 +1,10 @@
1
1
  const DEFAULT_THRESHOLD = 1;
2
2
  const DEFAULT_TIME_CONSTANT = 0.5;
3
3
  const DEFAULT_TOLERANCE = 0.025;
4
- export const createDefaultSetTimingsrc = (createSetTimingsrc, createUpdateGradually, createUpdateStepwise, determineSupportedPlaybackRateValues, 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(determineSupportedPlaybackRateValues(window), DEFAULT_TIME_CONSTANT, DEFAULT_THRESHOLD, DEFAULT_TOLERANCE));
4
+ export const createDefaultSetTimingsrc = (createComputeVelocity, createSetTimingsrc, createUpdateGradually, createUpdateStepwise, determineSupportedPlaybackRateValues, setTimingsrcWithCustomUpdateFunction, updateVectorWithNewPosition, window) => {
5
+ const update = window !== null && window.navigator.userAgent.includes('Safari') && !window.navigator.userAgent.includes('Chrome')
6
+ ? createUpdateStepwise(DEFAULT_TOLERANCE)
7
+ : createUpdateGradually(createComputeVelocity(DEFAULT_TIME_CONSTANT), determineSupportedPlaybackRateValues(window), DEFAULT_THRESHOLD, DEFAULT_TOLERANCE, updateVectorWithNewPosition);
8
+ return createSetTimingsrc(setTimingsrcWithCustomUpdateFunction, update);
9
+ };
7
10
  //# sourceMappingURL=default-set-timingsrc.js.map
@@ -1 +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,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,CACjB,oCAAoC,CAAC,MAAM,CAAC,EAC5C,qBAAqB,EACrB,iBAAiB,EACjB,iBAAiB,CACpB,CACJ,CAAC"}
1
+ {"version":3,"file":"default-set-timingsrc.js","sourceRoot":"","sources":["../../../src/factories/default-set-timingsrc.ts"],"names":[],"mappings":"AAUA,MAAM,iBAAiB,GAAG,CAAC,CAAC;AAC5B,MAAM,qBAAqB,GAAG,GAAG,CAAC;AAClC,MAAM,iBAAiB,GAAG,KAAK,CAAC;AAEhC,MAAM,CAAC,MAAM,yBAAyB,GAAG,CACrC,qBAA2D,EAC3D,kBAAqD,EACrD,qBAA2D,EAC3D,oBAAoE,EACpE,oCAAyF,EACzF,oCAAmG,EACnG,2BAAuE,EACvE,MAAuC,EACzC,EAAE;IACA,MAAM,MAAM,GACR,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;QAC9G,CAAC,CAAC,oBAAoB,CAAC,iBAAiB,CAAC;QACzC,CAAC,CAAC,qBAAqB,CACjB,qBAAqB,CAAC,qBAAqB,CAAC,EAC5C,oCAAoC,CAAC,MAAM,CAAC,EAC5C,iBAAiB,EACjB,iBAAiB,EACjB,2BAA2B,CAC9B,CAAC;IAEZ,OAAO,kBAAkB,CAAC,oCAAoC,EAAgE,MAAM,CAAC,CAAC;AAC1I,CAAC,CAAC"}
@@ -1,3 +1,2 @@
1
- import { TSetCurrentTimeFactory } from '../types';
2
- export declare const createSetCurrentTime: TSetCurrentTimeFactory;
1
+ export declare const createSetCurrentTime: (currentTimeAssignments: WeakMap<HTMLMediaElement, [number, number]>) => (mediaElement: HTMLMediaElement, previousValue: number, nextValue: number) => void;
3
2
  //# sourceMappingURL=set-current-time.d.ts.map
@@ -1 +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,sBAelC,CAAC"}
1
+ {"version":3,"file":"set-current-time.d.ts","sourceRoot":"","sources":["../../../src/factories/set-current-time.ts"],"names":[],"mappings":"AAAA,eAAO,MAAM,oBAAoB,2BAA4B,QAAQ,gBAAgB,EAAE,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC,oBAC9E,gBAAgB,iBAAiB,MAAM,aAAa,MAAM,SAcnF,CAAC"}
@@ -1 +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,IACI,qBAAqB,KAAK,SAAS;YACnC,kEAAkE;YAClE,IAAI,CAAC,GAAG,CAAC,qBAAqB,CAAC,CAAC,CAAC,GAAG,aAAa,CAAC,GAAG,MAAM;YAC3D,qBAAqB,CAAC,CAAC,CAAC,KAAK,SAAS,EACxC;YACE,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"}
1
+ {"version":3,"file":"set-current-time.js","sourceRoot":"","sources":["../../../src/factories/set-current-time.ts"],"names":[],"mappings":"AAAA,MAAM,CAAC,MAAM,oBAAoB,GAAG,CAAC,sBAAmE,EAAE,EAAE;IACxG,OAAO,CAAC,YAA8B,EAAE,aAAqB,EAAE,SAAiB,EAAE,EAAE;QAChF,MAAM,qBAAqB,GAAG,sBAAsB,CAAC,GAAG,CAAC,YAAY,CAAC,CAAC;QAEvE,IACI,qBAAqB,KAAK,SAAS;YACnC,kEAAkE;YAClE,IAAI,CAAC,GAAG,CAAC,qBAAqB,CAAC,CAAC,CAAC,GAAG,aAAa,CAAC,GAAG,MAAM;YAC3D,qBAAqB,CAAC,CAAC,CAAC,KAAK,SAAS,EACxC;YACE,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"}
@@ -1,3 +1,2 @@
1
- import { TSetPlaybackRateFactory } from '../types';
2
- export declare const createSetPlaybackRate: TSetPlaybackRateFactory;
1
+ export declare const createSetPlaybackRate: (playbackRateAssignments: WeakMap<HTMLMediaElement, [number, number]>) => (mediaElement: HTMLMediaElement, previousValue: number, nextValue: number) => void;
3
2
  //# sourceMappingURL=set-playback-rate.d.ts.map
@@ -1 +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"}
1
+ {"version":3,"file":"set-playback-rate.d.ts","sourceRoot":"","sources":["../../../src/factories/set-playback-rate.ts"],"names":[],"mappings":"AAAA,eAAO,MAAM,qBAAqB,4BAA6B,QAAQ,gBAAgB,EAAE,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC,oBAChF,gBAAgB,iBAAiB,MAAM,aAAa,MAAM,SAcnF,CAAC"}
@@ -1 +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"}
1
+ {"version":3,"file":"set-playback-rate.js","sourceRoot":"","sources":["../../../src/factories/set-playback-rate.ts"],"names":[],"mappings":"AAAA,MAAM,CAAC,MAAM,qBAAqB,GAAG,CAAC,uBAAoE,EAAE,EAAE;IAC1G,OAAO,CAAC,YAA8B,EAAE,aAAqB,EAAE,SAAiB,EAAE,EAAE;QAChF,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"}
@@ -1,3 +1,7 @@
1
- import { TSetTimingsrcWithCustomUpdateFunctionFactory } from '../types';
2
- export declare const createSetTimingsrcWithCustomUpdateFunction: TSetTimingsrcWithCustomUpdateFunctionFactory;
1
+ import type { TAnimationFrameFunction, TOnFunction } from 'subscribable-things';
2
+ import type { ITimingObject } from 'timing-object';
3
+ import { IUpdateVector } from '../interfaces';
4
+ import { TPrepareTimingStateVectorFunction, TUpdateFunction } from '../types';
5
+ import type { createUpdateMediaElement } from './update-media-element';
6
+ export declare const createSetTimingsrcWithCustomUpdateFunction: (animationFrame: TAnimationFrameFunction, document: Document, on: TOnFunction, updateMediaElement: ReturnType<typeof createUpdateMediaElement>) => <UpdateVectorWithCustomState extends IUpdateVector>(mediaElement: HTMLMediaElement, timingObject: ITimingObject, updateFunction: TUpdateFunction<UpdateVectorWithCustomState>, prepareTimingStateVector?: null | TPrepareTimingStateVectorFunction) => () => void;
3
7
  //# sourceMappingURL=set-timingsrc-with-custom-update-function.d.ts.map
@@ -1 +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,4CAiCxD,CAAC"}
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,KAAK,EAAE,uBAAuB,EAAE,WAAW,EAAE,MAAM,qBAAqB,CAAC;AAChF,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,eAAe,CAAC;AACnD,OAAO,EAAE,aAAa,EAAE,MAAM,eAAe,CAAC;AAC9C,OAAO,EAAE,iCAAiC,EAAE,eAAe,EAAE,MAAM,UAAU,CAAC;AAC9E,OAAO,KAAK,EAAE,wBAAwB,EAAE,MAAM,wBAAwB,CAAC;AAEvE,eAAO,MAAM,0CAA0C,mBACnC,uBAAuB,YAC7B,QAAQ,MACd,WAAW,sBACK,WAAW,+BAA+B,CAAC,uEAG7C,gBAAgB,gBAChB,aAAa,2FAED,IAAI,GAAG,iCAAiC,eAkCzE,CAAC"}
@@ -1,10 +1,12 @@
1
1
  export const createSetTimingsrcWithCustomUpdateFunction = (animationFrame, document, on, updateMediaElement) => {
2
2
  return (mediaElement, timingObject, updateFunction, prepareTimingStateVector = null) => {
3
+ let previousUpdateVectorWithCustomState = null;
3
4
  const update = () => {
4
5
  const { currentTime, duration, playbackRate } = mediaElement;
5
6
  const timingStateVector = timingObject.query();
6
- const { position, velocity } = updateFunction(prepareTimingStateVector === null ? timingStateVector : prepareTimingStateVector(timingStateVector), currentTime);
7
+ previousUpdateVectorWithCustomState = updateFunction(prepareTimingStateVector === null ? timingStateVector : prepareTimingStateVector(timingStateVector), currentTime, previousUpdateVectorWithCustomState);
7
8
  const sanitizedDuration = typeof duration === 'number' && !isNaN(duration) ? duration : 0;
9
+ const { position, velocity } = previousUpdateVectorWithCustomState;
8
10
  updateMediaElement(currentTime, sanitizedDuration, mediaElement, playbackRate, position, velocity);
9
11
  };
10
12
  const unsubscribeFunctions = [
@@ -1 +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,QAAQ,EACR,EAAE,EACF,kBAAkB,EACpB,EAAE;IACA,OAAO,CAAC,YAAY,EAAE,YAAY,EAAE,cAAc,EAAE,wBAAwB,GAAG,IAAI,EAAE,EAAE;QACnF,MAAM,MAAM,GAAG,GAAG,EAAE;YAChB,MAAM,EAAE,WAAW,EAAE,QAAQ,EAAE,YAAY,EAAE,GAAG,YAAY,CAAC;YAC7D,MAAM,iBAAiB,GAAG,YAAY,CAAC,KAAK,EAAE,CAAC;YAC/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;YACF,MAAM,iBAAiB,GAAG,OAAO,QAAQ,KAAK,QAAQ,IAAI,CAAC,KAAK,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC;YAE1F,kBAAkB,CAAC,WAAW,EAAE,iBAAiB,EAAE,YAAY,EAAE,YAAY,EAAE,QAAQ,EAAE,QAAQ,CAAC,CAAC;QACvG,CAAC,CAAC;QAEF,MAAM,oBAAoB,GAAG;YACzB,cAAc,EAAE,CAAC,GAAG,EAAE,CAAC,MAAM,EAAE,CAAC;YAChC,EAAE,CACE,YAAY,EACZ,QAAQ,CACX,CAAC,GAAG,EAAE;gBACH,IAAI,QAAQ,CAAC,eAAe,KAAK,QAAQ,EAAE;oBACvC,MAAM,EAAE,CAAC;iBACZ;YACL,CAAC,CAAC;SACL,CAAC;QAEF,OAAO,GAAG,EAAE,CAAC,oBAAoB,CAAC,OAAO,CAAC,CAAC,WAAW,EAAE,EAAE,CAAC,WAAW,EAAE,CAAC,CAAC;IAC9E,CAAC,CAAC;AACN,CAAC,CAAC"}
1
+ {"version":3,"file":"set-timingsrc-with-custom-update-function.js","sourceRoot":"","sources":["../../../src/factories/set-timingsrc-with-custom-update-function.ts"],"names":[],"mappings":"AAMA,MAAM,CAAC,MAAM,0CAA0C,GAAG,CACtD,cAAuC,EACvC,QAAkB,EAClB,EAAe,EACf,kBAA+D,EACjE,EAAE;IACA,OAAO,CACH,YAA8B,EAC9B,YAA2B,EAC3B,cAA4D,EAC5D,2BAAqE,IAAI,EAC3E,EAAE;QACA,IAAI,mCAAmC,GAAuC,IAAI,CAAC;QAEnF,MAAM,MAAM,GAAG,GAAG,EAAE;YAChB,MAAM,EAAE,WAAW,EAAE,QAAQ,EAAE,YAAY,EAAE,GAAG,YAAY,CAAC;YAC7D,MAAM,iBAAiB,GAAG,YAAY,CAAC,KAAK,EAAE,CAAC;YAE/C,mCAAmC,GAAG,cAAc,CAChD,wBAAwB,KAAK,IAAI,CAAC,CAAC,CAAC,iBAAiB,CAAC,CAAC,CAAC,wBAAwB,CAAC,iBAAiB,CAAC,EACnG,WAAW,EACX,mCAAmC,CACtC,CAAC;YAEF,MAAM,iBAAiB,GAAG,OAAO,QAAQ,KAAK,QAAQ,IAAI,CAAC,KAAK,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC;YAC1F,MAAM,EAAE,QAAQ,EAAE,QAAQ,EAAE,GAAG,mCAAmC,CAAC;YAEnE,kBAAkB,CAAC,WAAW,EAAE,iBAAiB,EAAE,YAAY,EAAE,YAAY,EAAE,QAAQ,EAAE,QAAQ,CAAC,CAAC;QACvG,CAAC,CAAC;QAEF,MAAM,oBAAoB,GAAG;YACzB,cAAc,EAAE,CAAC,GAAG,EAAE,CAAC,MAAM,EAAE,CAAC;YAChC,EAAE,CACE,YAAY,EACZ,QAAQ,CACX,CAAC,GAAG,EAAE;gBACH,IAAI,QAAQ,CAAC,eAAe,KAAK,QAAQ,EAAE;oBACvC,MAAM,EAAE,CAAC;iBACZ;YACL,CAAC,CAAC;SACL,CAAC;QAEF,OAAO,GAAG,EAAE,CAAC,oBAAoB,CAAC,OAAO,CAAC,CAAC,WAAW,EAAE,EAAE,CAAC,WAAW,EAAE,CAAC,CAAC;IAC9E,CAAC,CAAC;AACN,CAAC,CAAC"}
@@ -1,3 +1,6 @@
1
- import { TSetTimingsrcFactory } from '../types';
2
- export declare const createSetTimingsrc: TSetTimingsrcFactory;
1
+ import type { ITimingObject } from 'timing-object';
2
+ import type { createSetTimingsrcWithCustomUpdateFunction } from '../factories/set-timingsrc-with-custom-update-function';
3
+ import { IUpdateVector } from '../interfaces';
4
+ import { TPrepareTimingStateVectorFunction, TUpdateFunction } from '../types';
5
+ export declare const createSetTimingsrc: <UpdateVectorWithCustomState extends IUpdateVector>(setTimingsrcWithCustomUpdateFunction: ReturnType<typeof createSetTimingsrcWithCustomUpdateFunction>, update: TUpdateFunction<UpdateVectorWithCustomState>) => (mediaElement: HTMLMediaElement, timingObject: ITimingObject, prepareTimingStateVector?: null | TPrepareTimingStateVectorFunction) => () => void;
3
6
  //# sourceMappingURL=set-timingsrc.d.ts.map
@@ -1 +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"}
1
+ {"version":3,"file":"set-timingsrc.d.ts","sourceRoot":"","sources":["../../../src/factories/set-timingsrc.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,eAAe,CAAC;AACnD,OAAO,KAAK,EAAE,0CAA0C,EAAE,MAAM,wDAAwD,CAAC;AACzH,OAAO,EAAE,aAAa,EAAE,MAAM,eAAe,CAAC;AAC9C,OAAO,EAAE,iCAAiC,EAAE,eAAe,EAAE,MAAM,UAAU,CAAC;AAE9E,eAAO,MAAM,kBAAkB,4FAEe,WAAW,iDAAiD,CAAC,0EAIrF,gBAAgB,gBAChB,aAAa,6BACD,IAAI,GAAG,iCAAiC,eAEgC,CAAC"}
@@ -1,4 +1,2 @@
1
- export const createSetTimingsrc = (setTimingsrcWithCustomUpdateFunction, update) => {
2
- return (mediaElement, timingObject, prepareTimingStateVector = null) => setTimingsrcWithCustomUpdateFunction(mediaElement, timingObject, update, prepareTimingStateVector);
3
- };
1
+ export const createSetTimingsrc = (setTimingsrcWithCustomUpdateFunction, update) => (mediaElement, timingObject, prepareTimingStateVector = null) => setTimingsrcWithCustomUpdateFunction(mediaElement, timingObject, update, prepareTimingStateVector);
4
2
  //# sourceMappingURL=set-timingsrc.js.map
@@ -1 +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"}
1
+ {"version":3,"file":"set-timingsrc.js","sourceRoot":"","sources":["../../../src/factories/set-timingsrc.ts"],"names":[],"mappings":"AAKA,MAAM,CAAC,MAAM,kBAAkB,GAC3B,CACI,oCAAmG,EACnG,MAAoD,EACtD,EAAE,CACJ,CACI,YAA8B,EAC9B,YAA2B,EAC3B,2BAAqE,IAAI,EAC3E,EAAE,CACA,oCAAoC,CAAC,YAAY,EAAE,YAAY,EAAE,MAAM,EAAE,wBAAwB,CAAC,CAAC"}
@@ -1,3 +1,8 @@
1
- import { TUpdateGraduallyFactory } from '../types';
2
- export declare const createUpdateGradually: TUpdateGraduallyFactory;
1
+ import type { updateVectorWithNewPosition as updateVectorWithNewPositionFunction } from '../functions/update-vector-with-new-position';
2
+ import { IUpdateVector } from '../interfaces';
3
+ import { TUpdateFunction } from '../types';
4
+ import type { createComputeVelocity } from './compute-velocity';
5
+ export declare const createUpdateGradually: (computeVelocity: ReturnType<typeof createComputeVelocity>, [minValue, maxValue]: readonly [number, number], threshold: number, tolerance: number, updateVectorWithNewPosition: typeof updateVectorWithNewPositionFunction) => TUpdateFunction<IUpdateVector & {
6
+ mediaElementDelay: number;
7
+ }>;
3
8
  //# sourceMappingURL=update-gradually.d.ts.map
@@ -1 +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,uBA0BnC,CAAC"}
1
+ {"version":3,"file":"update-gradually.d.ts","sourceRoot":"","sources":["../../../src/factories/update-gradually.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,2BAA2B,IAAI,mCAAmC,EAAE,MAAM,8CAA8C,CAAC;AACvI,OAAO,EAAE,aAAa,EAAE,MAAM,eAAe,CAAC;AAC9C,OAAO,EAAE,eAAe,EAAE,MAAM,UAAU,CAAC;AAC3C,OAAO,KAAK,EAAE,qBAAqB,EAAE,MAAM,oBAAoB,CAAC;AAEhE,eAAO,MAAM,qBAAqB,oBACb,WAAW,4BAA4B,CAAC,8DAE9C,MAAM,aACN,MAAM,+BACY,0CAA0C,KACxE,gBAAgB,aAAa,GAAG;IAAE,iBAAiB,EAAE,MAAM,CAAA;CAAE,CA6C/D,CAAC"}
@@ -1,23 +1,34 @@
1
- export const createUpdateGradually = ([minValue, maxValue], timeConstant, threshold, tolerance) => {
2
- return ({ position, velocity }, currentTime) => {
1
+ export const createUpdateGradually = (computeVelocity, [minValue, maxValue], threshold, tolerance, updateVectorWithNewPosition) => {
2
+ return ({ position, velocity }, currentTime, previousUpdateVectorWithCustomState) => {
3
+ let { mediaElementDelay } = previousUpdateVectorWithCustomState !== null && previousUpdateVectorWithCustomState !== void 0 ? previousUpdateVectorWithCustomState : { mediaElementDelay: 0 };
3
4
  if (velocity < minValue || velocity > maxValue) {
4
- return { position, velocity: 0 };
5
+ return { mediaElementDelay, position, velocity: 0 };
5
6
  }
6
7
  if (position < 0 || velocity === 0) {
7
- return { position, velocity };
8
+ return { mediaElementDelay, position, velocity };
8
9
  }
9
10
  const positionDifference = currentTime - position;
10
11
  const absolutePositionDifference = Math.abs(positionDifference);
11
12
  if (absolutePositionDifference > threshold) {
12
- return { position, velocity };
13
+ const { position: lastPosition } = previousUpdateVectorWithCustomState !== null && previousUpdateVectorWithCustomState !== void 0 ? previousUpdateVectorWithCustomState : { position: null };
14
+ if (positionDifference < 0 || positionDifference > mediaElementDelay) {
15
+ if (lastPosition === currentTime) {
16
+ mediaElementDelay += absolutePositionDifference;
17
+ }
18
+ return updateVectorWithNewPosition(mediaElementDelay, position, (nextPosition) => computeVelocity(nextPosition - position, minValue, maxValue, velocity));
19
+ }
20
+ if (lastPosition !== currentTime) {
21
+ return updateVectorWithNewPosition(mediaElementDelay - absolutePositionDifference, position, (nextPosition) => computeVelocity(nextPosition - position, minValue, maxValue, velocity));
22
+ }
13
23
  }
14
24
  if (absolutePositionDifference > tolerance) {
15
25
  return {
26
+ mediaElementDelay,
16
27
  position: currentTime,
17
- velocity: Math.max(minValue, Math.min(maxValue, ((timeConstant - positionDifference) / timeConstant) * velocity))
28
+ velocity: computeVelocity(positionDifference, minValue, maxValue, velocity)
18
29
  };
19
30
  }
20
- return { position: currentTime, velocity };
31
+ return { mediaElementDelay, position: currentTime, velocity };
21
32
  };
22
33
  };
23
34
  //# sourceMappingURL=update-gradually.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"update-gradually.js","sourceRoot":"","sources":["../../../src/factories/update-gradually.ts"],"names":[],"mappings":"AAEA,MAAM,CAAC,MAAM,qBAAqB,GAA4B,CAAC,CAAC,QAAQ,EAAE,QAAQ,CAAC,EAAE,YAAY,EAAE,SAAS,EAAE,SAAS,EAAE,EAAE;IACvH,OAAO,CAAC,EAAE,QAAQ,EAAE,QAAQ,EAAE,EAAE,WAAW,EAAE,EAAE;QAC3C,IAAI,QAAQ,GAAG,QAAQ,IAAI,QAAQ,GAAG,QAAQ,EAAE;YAC5C,OAAO,EAAE,QAAQ,EAAE,QAAQ,EAAE,CAAC,EAAE,CAAC;SACpC;QAED,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;gBACH,QAAQ,EAAE,WAAW;gBACrB,QAAQ,EAAE,IAAI,CAAC,GAAG,CAAC,QAAQ,EAAE,IAAI,CAAC,GAAG,CAAC,QAAQ,EAAE,CAAC,CAAC,YAAY,GAAG,kBAAkB,CAAC,GAAG,YAAY,CAAC,GAAG,QAAQ,CAAC,CAAC;aACpH,CAAC;SACL;QAED,OAAO,EAAE,QAAQ,EAAE,WAAW,EAAE,QAAQ,EAAE,CAAC;IAC/C,CAAC,CAAC;AACN,CAAC,CAAC"}
1
+ {"version":3,"file":"update-gradually.js","sourceRoot":"","sources":["../../../src/factories/update-gradually.ts"],"names":[],"mappings":"AAMA,MAAM,CAAC,MAAM,qBAAqB,GAAG,CACjC,eAAyD,EACzD,CAAC,QAAQ,EAAE,QAAQ,CAA0D,EAC7E,SAAiB,EACjB,SAAiB,EACjB,2BAAuE,EACT,EAAE;IAChE,OAAO,CAAC,EAAE,QAAQ,EAAE,QAAQ,EAAE,EAAE,WAAW,EAAE,mCAAmC,EAAE,EAAE;QAChF,IAAI,EAAE,iBAAiB,EAAE,GAAG,mCAAmC,aAAnC,mCAAmC,cAAnC,mCAAmC,GAAI,EAAE,iBAAiB,EAAE,CAAC,EAAE,CAAC;QAE5F,IAAI,QAAQ,GAAG,QAAQ,IAAI,QAAQ,GAAG,QAAQ,EAAE;YAC5C,OAAO,EAAE,iBAAiB,EAAE,QAAQ,EAAE,QAAQ,EAAE,CAAC,EAAE,CAAC;SACvD;QAED,IAAI,QAAQ,GAAG,CAAC,IAAI,QAAQ,KAAK,CAAC,EAAE;YAChC,OAAO,EAAE,iBAAiB,EAAE,QAAQ,EAAE,QAAQ,EAAE,CAAC;SACpD;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,MAAM,EAAE,QAAQ,EAAE,YAAY,EAAE,GAAG,mCAAmC,aAAnC,mCAAmC,cAAnC,mCAAmC,GAAI,EAAE,QAAQ,EAAE,IAAI,EAAE,CAAC;YAE7F,IAAI,kBAAkB,GAAG,CAAC,IAAI,kBAAkB,GAAG,iBAAiB,EAAE;gBAClE,IAAI,YAAY,KAAK,WAAW,EAAE;oBAC9B,iBAAiB,IAAI,0BAA0B,CAAC;iBACnD;gBAED,OAAO,2BAA2B,CAAC,iBAAiB,EAAE,QAAQ,EAAE,CAAC,YAAY,EAAE,EAAE,CAC7E,eAAe,CAAC,YAAY,GAAG,QAAQ,EAAE,QAAQ,EAAE,QAAQ,EAAE,QAAQ,CAAC,CACzE,CAAC;aACL;YAED,IAAI,YAAY,KAAK,WAAW,EAAE;gBAC9B,OAAO,2BAA2B,CAAC,iBAAiB,GAAG,0BAA0B,EAAE,QAAQ,EAAE,CAAC,YAAY,EAAE,EAAE,CAC1G,eAAe,CAAC,YAAY,GAAG,QAAQ,EAAE,QAAQ,EAAE,QAAQ,EAAE,QAAQ,CAAC,CACzE,CAAC;aACL;SACJ;QAED,IAAI,0BAA0B,GAAG,SAAS,EAAE;YACxC,OAAO;gBACH,iBAAiB;gBACjB,QAAQ,EAAE,WAAW;gBACrB,QAAQ,EAAE,eAAe,CAAC,kBAAkB,EAAE,QAAQ,EAAE,QAAQ,EAAE,QAAQ,CAAC;aAC9E,CAAC;SACL;QAED,OAAO,EAAE,iBAAiB,EAAE,QAAQ,EAAE,WAAW,EAAE,QAAQ,EAAE,CAAC;IAClE,CAAC,CAAC;AACN,CAAC,CAAC"}
@@ -1,3 +1,6 @@
1
- import { TUpdateMediaElementFactory } from '../types';
2
- export declare const createUpdateMediaElement: TUpdateMediaElementFactory;
1
+ import type { pause as pauseFunction } from '../functions/pause';
2
+ import type { play as playFunction } from '../functions/play';
3
+ import type { createSetCurrentTime } from './set-current-time';
4
+ import type { createSetPlaybackRate } from './set-playback-rate';
5
+ export declare const createUpdateMediaElement: (pause: typeof pauseFunction, play: typeof playFunction, setCurrentTime: ReturnType<typeof createSetCurrentTime>, setPlaybackRate: ReturnType<typeof createSetPlaybackRate>) => (currentTime: number, duration: number, mediaElement: HTMLMediaElement, playbackRate: number, position: number, velocity: number) => void;
3
6
  //# sourceMappingURL=update-media-element.d.ts.map
@@ -1 +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"}
1
+ {"version":3,"file":"update-media-element.d.ts","sourceRoot":"","sources":["../../../src/factories/update-media-element.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,KAAK,IAAI,aAAa,EAAE,MAAM,oBAAoB,CAAC;AACjE,OAAO,KAAK,EAAE,IAAI,IAAI,YAAY,EAAE,MAAM,mBAAmB,CAAC;AAC9D,OAAO,KAAK,EAAE,oBAAoB,EAAE,MAAM,oBAAoB,CAAC;AAC/D,OAAO,KAAK,EAAE,qBAAqB,EAAE,MAAM,qBAAqB,CAAC;AAEjE,eAAO,MAAM,wBAAwB,UAC1B,oBAAoB,QACrB,mBAAmB,kBACT,WAAW,2BAA2B,CAAC,mBACtC,WAAW,4BAA4B,CAAC,mBAGxC,MAAM,YACT,MAAM,gBACF,gBAAgB,gBAChB,MAAM,YACV,MAAM,YACN,MAAM,SAmCvB,CAAC"}
@@ -1 +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"}
1
+ {"version":3,"file":"update-media-element.js","sourceRoot":"","sources":["../../../src/factories/update-media-element.ts"],"names":[],"mappings":"AAKA,MAAM,CAAC,MAAM,wBAAwB,GAAG,CACpC,KAA2B,EAC3B,IAAyB,EACzB,cAAuD,EACvD,eAAyD,EAC3D,EAAE;IACA,OAAO,CACH,WAAmB,EACnB,QAAgB,EAChB,YAA8B,EAC9B,YAAoB,EACpB,QAAgB,EAChB,QAAgB,EAClB,EAAE;QACA,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"}
@@ -1,3 +1,13 @@
1
- import { TUpdateStepwiseFactoryFactory } from '../types';
2
- export declare const createUpdateStepwiseFactory: TUpdateStepwiseFactoryFactory;
1
+ import type { TTranslateTimingStateVectorFunction } from 'timing-object';
2
+ import { IUpdateVector } from '../interfaces';
3
+ import { TUpdateFunction } from '../types';
4
+ export declare const createUpdateStepwiseFactory: (translateTimingStateVector: TTranslateTimingStateVectorFunction) => (tolerance: number) => TUpdateFunction<IUpdateVector & {
5
+ lastAppliedPostion: number;
6
+ lastAppliedTimestamp: number;
7
+ lastAppliedVelocity: number;
8
+ lastPlayheadDifference: number;
9
+ mediaElementDelay: number;
10
+ numberOfDetectedResets: number;
11
+ numberOfExpectedResets: number;
12
+ }>;
3
13
  //# sourceMappingURL=update-stepwise-factory.d.ts.map
@@ -1 +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,6BAsDzC,CAAC"}
1
+ {"version":3,"file":"update-stepwise-factory.d.ts","sourceRoot":"","sources":["../../../src/factories/update-stepwise-factory.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,mCAAmC,EAAE,MAAM,eAAe,CAAC;AACzE,OAAO,EAAE,aAAa,EAAE,MAAM,eAAe,CAAC;AAC9C,OAAO,EAAE,eAAe,EAAE,MAAM,UAAU,CAAC;AAI3C,eAAO,MAAM,2BAA2B,+BAAgC,mCAAmC,iBAExF,MAAM,KAClB,gBACC,aAAa,GAAG;IACZ,kBAAkB,EAAE,MAAM,CAAC;IAC3B,oBAAoB,EAAE,MAAM,CAAC;IAC7B,mBAAmB,EAAE,MAAM,CAAC;IAC5B,sBAAsB,EAAE,MAAM,CAAC;IAC/B,iBAAiB,EAAE,MAAM,CAAC;IAC1B,sBAAsB,EAAE,MAAM,CAAC;IAC/B,sBAAsB,EAAE,MAAM,CAAC;CAClC,CAqIR,CAAC"}
@@ -1,40 +1,113 @@
1
+ const MAXIMUM_PLAYHEAD_DIFFERENCE = 0.5;
1
2
  export const createUpdateStepwiseFactory = (translateTimingStateVector) => {
2
3
  return (tolerance) => {
3
- let lastMotionUpdate = null;
4
- let lastPlayheadDifference = 0;
5
- let mediaElementDelay = 0;
6
- return (timingStateVector, currentTime) => {
4
+ return (timingStateVector, currentTime, previousUpdateVectorWithCustomState) => {
5
+ let { lastAppliedPostion, lastAppliedTimestamp, lastAppliedVelocity, lastPlayheadDifference, mediaElementDelay, numberOfDetectedResets, numberOfExpectedResets } = previousUpdateVectorWithCustomState !== null && previousUpdateVectorWithCustomState !== void 0 ? previousUpdateVectorWithCustomState : {
6
+ lastAppliedPostion: 0,
7
+ lastAppliedTimestamp: 0,
8
+ lastAppliedVelocity: 0,
9
+ lastPlayheadDifference: 0,
10
+ mediaElementDelay: 0,
11
+ numberOfDetectedResets: 0,
12
+ numberOfExpectedResets: 1
13
+ };
7
14
  if (timingStateVector.position < 0 || timingStateVector.velocity === 0) {
8
- lastMotionUpdate = null;
9
- return { position: timingStateVector.position, velocity: timingStateVector.velocity };
15
+ lastAppliedPostion = timingStateVector.position;
16
+ lastAppliedVelocity = timingStateVector.velocity;
17
+ return {
18
+ lastAppliedPostion,
19
+ lastAppliedTimestamp: 0,
20
+ lastAppliedVelocity,
21
+ lastPlayheadDifference,
22
+ mediaElementDelay,
23
+ numberOfDetectedResets,
24
+ numberOfExpectedResets,
25
+ position: lastAppliedPostion,
26
+ velocity: lastAppliedVelocity
27
+ };
10
28
  }
11
- if (lastMotionUpdate !== null) {
12
- const playheadDifference = Math.abs(currentTime - lastMotionUpdate.position);
13
- // Bug #4: Safari decreases currentTime after playing for about 200 milliseconds.
14
- if (lastPlayheadDifference - 0.01 < playheadDifference && lastPlayheadDifference < 0.5) {
29
+ // Bug #4: Safari decreases currentTime after playing for about 200 milliseconds.
30
+ if (lastAppliedVelocity === timingStateVector.velocity && lastPlayheadDifference < MAXIMUM_PLAYHEAD_DIFFERENCE) {
31
+ const playheadDifference = Math.abs(currentTime - lastAppliedPostion) * lastAppliedVelocity;
32
+ if (playheadDifference < MAXIMUM_PLAYHEAD_DIFFERENCE) {
33
+ if (playheadDifference + 0.001 > lastPlayheadDifference) {
34
+ lastPlayheadDifference = playheadDifference;
35
+ if (numberOfDetectedResets < numberOfExpectedResets) {
36
+ return {
37
+ lastAppliedPostion,
38
+ lastAppliedTimestamp,
39
+ lastAppliedVelocity,
40
+ lastPlayheadDifference,
41
+ mediaElementDelay,
42
+ numberOfDetectedResets,
43
+ numberOfExpectedResets,
44
+ position: currentTime,
45
+ velocity: lastAppliedVelocity
46
+ };
47
+ }
48
+ }
49
+ else {
50
+ lastPlayheadDifference = playheadDifference;
51
+ numberOfDetectedResets += 1;
52
+ if (numberOfDetectedResets <= numberOfExpectedResets) {
53
+ return {
54
+ lastAppliedPostion,
55
+ lastAppliedTimestamp,
56
+ lastAppliedVelocity,
57
+ lastPlayheadDifference,
58
+ mediaElementDelay,
59
+ numberOfDetectedResets,
60
+ numberOfExpectedResets,
61
+ position: currentTime,
62
+ velocity: lastAppliedVelocity
63
+ };
64
+ }
65
+ numberOfExpectedResets += 1;
66
+ }
67
+ }
68
+ else {
15
69
  lastPlayheadDifference = playheadDifference;
16
- return { position: currentTime, velocity: lastMotionUpdate.velocity };
70
+ numberOfExpectedResets = Math.max(numberOfDetectedResets, 1);
17
71
  }
18
- lastPlayheadDifference = Number.POSITIVE_INFINITY;
72
+ }
73
+ else {
74
+ lastAppliedTimestamp = 0;
19
75
  }
20
76
  const positionDifference = Math.abs(currentTime - timingStateVector.position);
21
- if (positionDifference > tolerance) {
22
- if (lastMotionUpdate !== null) {
23
- const elapsedTime = timingStateVector.timestamp - lastMotionUpdate.timestamp;
24
- const { position } = translateTimingStateVector({ acceleration: 0, ...lastMotionUpdate }, elapsedTime);
77
+ const velocityHasChanged = lastAppliedVelocity === 0 ||
78
+ (lastAppliedVelocity < 0 && timingStateVector.velocity > 0) ||
79
+ (lastAppliedVelocity > 0 && timingStateVector.velocity < 0);
80
+ if (positionDifference > tolerance || velocityHasChanged) {
81
+ if (lastAppliedTimestamp > 0) {
82
+ const elapsedTime = timingStateVector.timestamp - lastAppliedTimestamp;
83
+ const { position } = translateTimingStateVector({ acceleration: 0, position: lastAppliedPostion, timestamp: lastAppliedTimestamp, velocity: lastAppliedVelocity }, elapsedTime);
25
84
  mediaElementDelay = position - currentTime;
26
85
  }
27
- const positioWithDelay = timingStateVector.position + mediaElementDelay;
28
- lastMotionUpdate = {
29
- position: positioWithDelay,
30
- timestamp: timingStateVector.timestamp,
31
- velocity: timingStateVector.velocity
86
+ lastAppliedPostion = timingStateVector.position + mediaElementDelay;
87
+ lastAppliedVelocity = timingStateVector.velocity;
88
+ return {
89
+ lastAppliedPostion,
90
+ lastAppliedTimestamp: timingStateVector.timestamp,
91
+ lastAppliedVelocity,
92
+ lastPlayheadDifference: 0,
93
+ mediaElementDelay,
94
+ numberOfDetectedResets: 0,
95
+ numberOfExpectedResets,
96
+ position: lastAppliedPostion,
97
+ velocity: lastAppliedVelocity
32
98
  };
33
- lastPlayheadDifference = 0;
34
- return { position: positioWithDelay, velocity: timingStateVector.velocity };
35
99
  }
36
- lastMotionUpdate = null;
37
- return { position: currentTime, velocity: timingStateVector.velocity };
100
+ return {
101
+ lastAppliedPostion,
102
+ lastAppliedTimestamp,
103
+ lastAppliedVelocity,
104
+ lastPlayheadDifference,
105
+ mediaElementDelay,
106
+ numberOfDetectedResets,
107
+ numberOfExpectedResets,
108
+ position: currentTime,
109
+ velocity: timingStateVector.velocity
110
+ };
38
111
  };
39
112
  };
40
113
  };
@@ -1 +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,sBAAsB,GAAG,CAAC,CAAC;QAC/B,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,iFAAiF;gBACjF,IAAI,sBAAsB,GAAG,IAAI,GAAG,kBAAkB,IAAI,sBAAsB,GAAG,GAAG,EAAE;oBACpF,sBAAsB,GAAG,kBAAkB,CAAC;oBAE5C,OAAO,EAAE,QAAQ,EAAE,WAAW,EAAE,QAAQ,EAAE,gBAAgB,CAAC,QAAQ,EAAE,CAAC;iBACzE;gBAED,sBAAsB,GAAG,MAAM,CAAC,iBAAiB,CAAC;aACrD;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;gBACF,sBAAsB,GAAG,CAAC,CAAC;gBAE3B,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"}
1
+ {"version":3,"file":"update-stepwise-factory.js","sourceRoot":"","sources":["../../../src/factories/update-stepwise-factory.ts"],"names":[],"mappings":"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"}
@@ -1,3 +1,2 @@
1
- import { TWindowFactory } from '../types';
2
- export declare const createWindow: TWindowFactory;
1
+ export declare const createWindow: () => (Window & typeof globalThis) | null;
3
2
  //# sourceMappingURL=window.d.ts.map
@@ -1 +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"}
1
+ {"version":3,"file":"window.d.ts","sourceRoot":"","sources":["../../../src/factories/window.ts"],"names":[],"mappings":"AAAA,eAAO,MAAM,YAAY,2CAAwD,CAAC"}
@@ -1 +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"}
1
+ {"version":3,"file":"window.js","sourceRoot":"","sources":["../../../src/factories/window.ts"],"names":[],"mappings":"AAAA,MAAM,CAAC,MAAM,YAAY,GAAG,GAAG,EAAE,CAAC,CAAC,OAAO,MAAM,KAAK,WAAW,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC"}
@@ -1,2 +1,3 @@
1
- export declare const determineSupportedPlaybackRateValues: (window: null | (Window & typeof globalThis)) => readonly [number, number];
1
+ import type { createWindow } from '../factories/window';
2
+ export declare const determineSupportedPlaybackRateValues: (window: ReturnType<typeof createWindow>) => readonly [number, number];
2
3
  //# sourceMappingURL=determine-supported-playback-rate-values.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"determine-supported-playback-rate-values.d.ts","sourceRoot":"","sources":["../../../src/functions/determine-supported-playback-rate-values.ts"],"names":[],"mappings":"AAEA,eAAO,MAAM,oCAAoC,WAAY,IAAI,GAAG,CAAC,MAAM,GAAG,iBAAiB,CAAC,8BAuB/F,CAAC"}
1
+ {"version":3,"file":"determine-supported-playback-rate-values.d.ts","sourceRoot":"","sources":["../../../src/functions/determine-supported-playback-rate-values.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,qBAAqB,CAAC;AAIxD,eAAO,MAAM,oCAAoC,WAAY,WAAW,mBAAmB,CAAC,KAAG,SAAS,CAAC,MAAM,EAAE,MAAM,CAuBtH,CAAC"}
@@ -1 +1 @@
1
- {"version":3,"file":"determine-supported-playback-rate-values.js","sourceRoot":"","sources":["../../../src/functions/determine-supported-playback-rate-values.ts"],"names":[],"mappings":"AAAA,MAAM,cAAc,GAAG,CAAC,MAAM,CAAC,SAAS,EAAE,MAAM,CAAC,SAAS,CAAU,CAAC;AAErE,MAAM,CAAC,MAAM,oCAAoC,GAAG,CAAC,MAA2C,EAAE,EAAE;IAChG,IAAI,MAAM,KAAK,IAAI,EAAE;QACjB,OAAO,cAAc,CAAC;KACzB;IAED,MAAM,KAAK,GAAG,IAAI,MAAM,CAAC,KAAK,EAAE,CAAC;IAEjC,IAAI;QACA,mDAAmD;QACnD,KAAK,CAAC,YAAY,GAAG,EAAE,CAAC;KAC3B;IAAC,MAAM;QACJ,sDAAsD;QACtD,OAAO,CAAC,KAAK,EAAE,EAAE,CAAU,CAAC;KAC/B;IAED,IAAI;QACA,oDAAoD;QACpD,KAAK,CAAC,YAAY,GAAG,CAAC,CAAC,CAAC;KAC3B;IAAC,MAAM;QACJ,OAAO,CAAC,CAAC,EAAE,cAAc,CAAC,CAAC,CAAC,CAAU,CAAC;KAC1C;IAED,OAAO,cAAc,CAAC;AAC1B,CAAC,CAAC"}
1
+ {"version":3,"file":"determine-supported-playback-rate-values.js","sourceRoot":"","sources":["../../../src/functions/determine-supported-playback-rate-values.ts"],"names":[],"mappings":"AAEA,MAAM,cAAc,GAAG,CAAC,MAAM,CAAC,SAAS,EAAE,MAAM,CAAC,SAAS,CAAU,CAAC;AAErE,MAAM,CAAC,MAAM,oCAAoC,GAAG,CAAC,MAAuC,EAA6B,EAAE;IACvH,IAAI,MAAM,KAAK,IAAI,EAAE;QACjB,OAAO,cAAc,CAAC;KACzB;IAED,MAAM,KAAK,GAAG,IAAI,MAAM,CAAC,KAAK,EAAE,CAAC;IAEjC,IAAI;QACA,mDAAmD;QACnD,KAAK,CAAC,YAAY,GAAG,EAAE,CAAC;KAC3B;IAAC,MAAM;QACJ,sDAAsD;QACtD,OAAO,CAAC,KAAK,EAAE,EAAE,CAAU,CAAC;KAC/B;IAED,IAAI;QACA,oDAAoD;QACpD,KAAK,CAAC,YAAY,GAAG,CAAC,CAAC,CAAC;KAC3B;IAAC,MAAM;QACJ,OAAO,CAAC,CAAC,EAAE,cAAc,CAAC,CAAC,CAAC,CAAU,CAAC;KAC1C;IAED,OAAO,cAAc,CAAC;AAC1B,CAAC,CAAC"}
@@ -0,0 +1,6 @@
1
+ export declare const updateVectorWithNewPosition: (mediaElementDelay: number, position: number, updateVelocity: (nextPosition: number) => number) => {
2
+ mediaElementDelay: number;
3
+ position: number;
4
+ velocity: number;
5
+ };
6
+ //# sourceMappingURL=update-vector-with-new-position.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"update-vector-with-new-position.d.ts","sourceRoot":"","sources":["../../../src/functions/update-vector-with-new-position.ts"],"names":[],"mappings":"AAAA,eAAO,MAAM,2BAA2B,sBACjB,MAAM,YACf,MAAM,iCACe,MAAM,KAAK,MAAM;;;;CAKnD,CAAC"}
@@ -0,0 +1,5 @@
1
+ export const updateVectorWithNewPosition = (mediaElementDelay, position, updateVelocity) => {
2
+ const nextPosition = position + mediaElementDelay;
3
+ return { mediaElementDelay, position: nextPosition, velocity: updateVelocity(nextPosition) };
4
+ };
5
+ //# sourceMappingURL=update-vector-with-new-position.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"update-vector-with-new-position.js","sourceRoot":"","sources":["../../../src/functions/update-vector-with-new-position.ts"],"names":[],"mappings":"AAAA,MAAM,CAAC,MAAM,2BAA2B,GAAG,CACvC,iBAAyB,EACzB,QAAgB,EAChB,cAAgD,EAClD,EAAE;IACA,MAAM,YAAY,GAAG,QAAQ,GAAG,iBAAiB,CAAC;IAElD,OAAO,EAAE,iBAAiB,EAAE,QAAQ,EAAE,YAAY,EAAE,QAAQ,EAAE,cAAc,CAAC,YAAY,CAAC,EAAE,CAAC;AACjG,CAAC,CAAC"}
@@ -2,7 +2,15 @@ import { createSetTimingsrc } from './factories/set-timingsrc';
2
2
  import { createUpdateGradually } from './factories/update-gradually';
3
3
  export { createSetTimingsrc };
4
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;
5
+ export declare const createUpdateStepwise: (tolerance: number) => import("./types").TUpdateFunction<import("./interfaces").IUpdateVector & {
6
+ lastAppliedPostion: number;
7
+ lastAppliedTimestamp: number;
8
+ lastAppliedVelocity: number;
9
+ lastPlayheadDifference: number;
10
+ mediaElementDelay: number;
11
+ numberOfDetectedResets: number;
12
+ numberOfExpectedResets: number;
13
+ }>;
14
+ export declare const setTimingsrcWithCustomUpdateFunction: <UpdateVectorWithCustomState extends import("./interfaces").IUpdateVector>(mediaElement: HTMLMediaElement, timingObject: import("timing-object").ITimingObject, updateFunction: import("./types").TUpdateFunction<UpdateVectorWithCustomState>, prepareTimingStateVector?: import("./types").TPrepareTimingStateVectorFunction | null) => () => void;
15
+ export declare const setTimingsrc: (mediaElement: HTMLMediaElement, timingObject: import("timing-object").ITimingObject, prepareTimingStateVector?: import("./types").TPrepareTimingStateVectorFunction | null) => () => void;
8
16
  //# sourceMappingURL=module.d.ts.map
@@ -1 +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;AAQrE,OAAO,EAAE,kBAAkB,EAAE,CAAC;AAE9B,OAAO,EAAE,qBAAqB,EAAE,CAAC;AAEjC,eAAO,MAAM,oBAAoB,0CAA0D,CAAC;AAI5F,eAAO,MAAM,oCAAoC,iEAKhD,CAAC;AAEF,eAAO,MAAM,YAAY,yCAOxB,CAAC"}
1
+ {"version":3,"file":"module.d.ts","sourceRoot":"","sources":["../../src/module.ts"],"names":[],"mappings":"AAMA,OAAO,EAAE,kBAAkB,EAAE,MAAM,2BAA2B,CAAC;AAE/D,OAAO,EAAE,qBAAqB,EAAE,MAAM,8BAA8B,CAAC;AASrE,OAAO,EAAE,kBAAkB,EAAE,CAAC;AAE9B,OAAO,EAAE,qBAAqB,EAAE,CAAC;AAEjC,eAAO,MAAM,oBAAoB;;;;;;;;EAA0D,CAAC;AAI5F,eAAO,MAAM,oCAAoC,sVAKhD,CAAC;AAEF,eAAO,MAAM,YAAY,4LASxB,CAAC"}
@@ -1,5 +1,6 @@
1
1
  import { animationFrame, on } from 'subscribable-things';
2
2
  import { translateTimingStateVector } from 'timing-object';
3
+ import { createComputeVelocity } from './factories/compute-velocity';
3
4
  import { createDefaultSetTimingsrc } from './factories/default-set-timingsrc';
4
5
  import { createSetCurrentTime } from './factories/set-current-time';
5
6
  import { createSetPlaybackRate } from './factories/set-playback-rate';
@@ -12,10 +13,11 @@ import { createWindow } from './factories/window';
12
13
  import { determineSupportedPlaybackRateValues } from './functions/determine-supported-playback-rate-values';
13
14
  import { pause } from './functions/pause';
14
15
  import { play } from './functions/play';
16
+ import { updateVectorWithNewPosition } from './functions/update-vector-with-new-position';
15
17
  export { createSetTimingsrc };
16
18
  export { createUpdateGradually };
17
19
  export const createUpdateStepwise = createUpdateStepwiseFactory(translateTimingStateVector);
18
20
  const updateMediaElement = createUpdateMediaElement(pause, play, createSetCurrentTime(new WeakMap()), createSetPlaybackRate(new WeakMap()));
19
21
  export const setTimingsrcWithCustomUpdateFunction = createSetTimingsrcWithCustomUpdateFunction(animationFrame, document, on, updateMediaElement);
20
- export const setTimingsrc = createDefaultSetTimingsrc(createSetTimingsrc, createUpdateGradually, createUpdateStepwise, determineSupportedPlaybackRateValues, setTimingsrcWithCustomUpdateFunction, createWindow());
22
+ export const setTimingsrc = createDefaultSetTimingsrc(createComputeVelocity, createSetTimingsrc, createUpdateGradually, createUpdateStepwise, determineSupportedPlaybackRateValues, setTimingsrcWithCustomUpdateFunction, updateVectorWithNewPosition, createWindow());
21
23
  //# sourceMappingURL=module.js.map