timingsrc 1.2.15 → 1.2.16

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.
@@ -1,2 +1,2 @@
1
- export declare const createSetPlaybackRate: (playbackRateAssignments: WeakMap<HTMLMediaElement, [number, number]>) => (mediaElement: HTMLMediaElement, previousValue: number, nextValue: number) => void;
1
+ export declare const createSetPlaybackRate: (negativeMaximum: number, playbackRateAssignments: WeakMap<HTMLMediaElement, [number, number]>, positiveMinimum: number) => (mediaElement: HTMLMediaElement, previousValue: number, nextValue: number) => void;
2
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,eAAO,MAAM,qBAAqB,4BAA6B,QAAQ,gBAAgB,EAAE,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC,oBAChF,gBAAgB,iBAAiB,MAAM,aAAa,MAAM,SAcnF,CAAC"}
1
+ {"version":3,"file":"set-playback-rate.d.ts","sourceRoot":"","sources":["../../../src/factories/set-playback-rate.ts"],"names":[],"mappings":"AAAA,eAAO,MAAM,qBAAqB,oBACb,MAAM,2BACE,QAAQ,gBAAgB,EAAE,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC,mBACnD,MAAM,oBAED,gBAAgB,iBAAiB,MAAM,aAAa,MAAM,SAcnF,CAAC"}
@@ -1,11 +1,11 @@
1
- export const createSetPlaybackRate = (playbackRateAssignments) => {
1
+ export const createSetPlaybackRate = (negativeMaximum, playbackRateAssignments, positiveMinimum) => {
2
2
  return (mediaElement, previousValue, nextValue) => {
3
3
  const playbackRateAssignment = playbackRateAssignments.get(mediaElement);
4
4
  if (playbackRateAssignment === undefined ||
5
5
  playbackRateAssignment[0] !== previousValue ||
6
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;
7
+ // Bug #6: Chrome does not adjust the tempo when the playbackRate is very close to 1.
8
+ mediaElement.playbackRate = nextValue > 1 ? Math.max(positiveMinimum, nextValue) : Math.min(negativeMaximum, nextValue);
9
9
  playbackRateAssignments.set(mediaElement, [mediaElement.playbackRate, nextValue]);
10
10
  }
11
11
  };
@@ -1 +1 @@
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
+ {"version":3,"file":"set-playback-rate.js","sourceRoot":"","sources":["../../../src/factories/set-playback-rate.ts"],"names":[],"mappings":"AAAA,MAAM,CAAC,MAAM,qBAAqB,GAAG,CACjC,eAAuB,EACvB,uBAAoE,EACpE,eAAuB,EACzB,EAAE;IACA,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,qFAAqF;YACrF,YAAY,CAAC,YAAY,GAAG,SAAS,GAAG,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,eAAe,EAAE,SAAS,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,eAAe,EAAE,SAAS,CAAC,CAAC;YAExH,uBAAuB,CAAC,GAAG,CAAC,YAAY,EAAE,CAAC,YAAY,CAAC,YAAY,EAAE,SAAS,CAAC,CAAC,CAAC;SACrF;IACL,CAAC,CAAC;AACN,CAAC,CAAC"}
@@ -1 +1 @@
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;AAQrE,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,4LAQxB,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;AAQrE,OAAO,EAAE,kBAAkB,EAAE,CAAC;AAE9B,OAAO,EAAE,qBAAqB,EAAE,CAAC;AAEjC,eAAO,MAAM,oBAAoB;;;;;;;;EAA0D,CAAC;AAS5F,eAAO,MAAM,oCAAoC,sVAKhD,CAAC;AAEF,eAAO,MAAM,YAAY,4LAQxB,CAAC"}
@@ -16,7 +16,7 @@ import { play } from './functions/play';
16
16
  export { createSetTimingsrc };
17
17
  export { createUpdateGradually };
18
18
  export const createUpdateStepwise = createUpdateStepwiseFactory(translateTimingStateVector);
19
- const updateMediaElement = createUpdateMediaElement(pause, play, createSetCurrentTime(new WeakMap()), createSetPlaybackRate(new WeakMap()));
19
+ const updateMediaElement = createUpdateMediaElement(pause, play, createSetCurrentTime(new WeakMap()), createSetPlaybackRate(881 / 882, new WeakMap(), 882 / 881));
20
20
  export const setTimingsrcWithCustomUpdateFunction = createSetTimingsrcWithCustomUpdateFunction(animationFrame, document, on, updateMediaElement);
21
21
  export const setTimingsrc = createDefaultSetTimingsrc(createComputeVelocity, createSetTimingsrc, createUpdateGradually, createUpdateStepwise, determineSupportedPlaybackRateValues, setTimingsrcWithCustomUpdateFunction, createWindow());
22
22
  //# sourceMappingURL=module.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"module.js","sourceRoot":"","sources":["../../src/module.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,cAAc,EAAE,EAAE,EAAE,MAAM,qBAAqB,CAAC;AACzD,OAAO,EAAE,0BAA0B,EAAE,MAAM,eAAe,CAAC;AAC3D,OAAO,EAAE,qBAAqB,EAAE,MAAM,8BAA8B,CAAC;AACrE,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,oCAAoC,EAAE,MAAM,sDAAsD,CAAC;AAC5G,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,CAC1F,cAAc,EACd,QAAQ,EACR,EAAE,EACF,kBAAkB,CACrB,CAAC;AAEF,MAAM,CAAC,MAAM,YAAY,GAAG,yBAAyB,CACjD,qBAAqB,EACrB,kBAAkB,EAClB,qBAAqB,EACrB,oBAAoB,EACpB,oCAAoC,EACpC,oCAAoC,EACpC,YAAY,EAAE,CACjB,CAAC"}
1
+ {"version":3,"file":"module.js","sourceRoot":"","sources":["../../src/module.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,cAAc,EAAE,EAAE,EAAE,MAAM,qBAAqB,CAAC;AACzD,OAAO,EAAE,0BAA0B,EAAE,MAAM,eAAe,CAAC;AAC3D,OAAO,EAAE,qBAAqB,EAAE,MAAM,8BAA8B,CAAC;AACrE,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,oCAAoC,EAAE,MAAM,sDAAsD,CAAC;AAC5G,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,CAC/C,KAAK,EACL,IAAI,EACJ,oBAAoB,CAAC,IAAI,OAAO,EAAE,CAAC,EACnC,qBAAqB,CAAC,GAAG,GAAG,GAAG,EAAE,IAAI,OAAO,EAAE,EAAE,GAAG,GAAG,GAAG,CAAC,CAC7D,CAAC;AAEF,MAAM,CAAC,MAAM,oCAAoC,GAAG,0CAA0C,CAC1F,cAAc,EACd,QAAQ,EACR,EAAE,EACF,kBAAkB,CACrB,CAAC;AAEF,MAAM,CAAC,MAAM,YAAY,GAAG,yBAAyB,CACjD,qBAAqB,EACrB,kBAAkB,EAClB,qBAAqB,EACrB,oBAAoB,EACpB,oCAAoC,EACpC,oCAAoC,EACpC,YAAY,EAAE,CACjB,CAAC"}
@@ -31,12 +31,12 @@
31
31
  };
32
32
  };
33
33
 
34
- var createSetPlaybackRate = function createSetPlaybackRate(playbackRateAssignments) {
34
+ var createSetPlaybackRate = function createSetPlaybackRate(negativeMaximum, playbackRateAssignments, positiveMinimum) {
35
35
  return function (mediaElement, previousValue, nextValue) {
36
36
  var playbackRateAssignment = playbackRateAssignments.get(mediaElement);
37
37
  if (playbackRateAssignment === undefined || playbackRateAssignment[0] !== previousValue || playbackRateAssignment[1] !== nextValue) {
38
- // There is currently a bug in Firefox which causes problems when switching back to a playbackRate of exactly 1.
39
- mediaElement.playbackRate = nextValue === 1 ? previousValue > 1 ? 1.00001 : 0.99999 : nextValue;
38
+ // Bug #6: Chrome does not adjust the tempo when the playbackRate is very close to 1.
39
+ mediaElement.playbackRate = nextValue > 1 ? Math.max(positiveMinimum, nextValue) : Math.min(negativeMaximum, nextValue);
40
40
  playbackRateAssignments.set(mediaElement, [mediaElement.playbackRate, nextValue]);
41
41
  }
42
42
  };
@@ -364,7 +364,7 @@
364
364
  };
365
365
 
366
366
  var createUpdateStepwise = createUpdateStepwiseFactory(timingObject.translateTimingStateVector);
367
- var updateMediaElement = createUpdateMediaElement(pause, play, createSetCurrentTime(new WeakMap()), createSetPlaybackRate(new WeakMap()));
367
+ var updateMediaElement = createUpdateMediaElement(pause, play, createSetCurrentTime(new WeakMap()), createSetPlaybackRate(881 / 882, new WeakMap(), 882 / 881));
368
368
  var setTimingsrcWithCustomUpdateFunction = createSetTimingsrcWithCustomUpdateFunction(subscribableThings.animationFrame, document, subscribableThings.on, updateMediaElement);
369
369
  var setTimingsrc = createDefaultSetTimingsrc(createComputeVelocity, createSetTimingsrc, createUpdateGradually, createUpdateStepwise, determineSupportedPlaybackRateValues, setTimingsrcWithCustomUpdateFunction, createWindow());
370
370
 
package/package.json CHANGED
@@ -10,8 +10,8 @@
10
10
  },
11
11
  "dependencies": {
12
12
  "@babel/runtime": "^7.20.13",
13
- "subscribable-things": "^2.1.12",
14
- "timing-object": "^3.1.53",
13
+ "subscribable-things": "^2.1.13",
14
+ "timing-object": "^3.1.54",
15
15
  "tslib": "^2.5.0"
16
16
  },
17
17
  "description": "A library to synchronize a MediaElement with a TimingObject.",
@@ -27,8 +27,8 @@
27
27
  "commitizen": "^4.3.0",
28
28
  "cz-conventional-changelog": "^3.3.0",
29
29
  "eslint": "^8.33.0",
30
- "eslint-config-holy-grail": "^55.0.4",
31
- "grunt": "^1.6.0",
30
+ "eslint-config-holy-grail": "^55.0.6",
31
+ "grunt": "^1.6.1",
32
32
  "grunt-cli": "^1.4.3",
33
33
  "grunt-sh": "^0.2.0",
34
34
  "husky": "^8.0.3",
@@ -45,14 +45,14 @@
45
45
  "prettier": "^2.8.3",
46
46
  "pretty-quick": "^3.1.3",
47
47
  "rimraf": "^4.1.2",
48
- "rollup": "^3.12.0",
48
+ "rollup": "^3.12.1",
49
49
  "sinon": "^15.0.1",
50
50
  "sinon-chai": "^3.7.0",
51
51
  "ts-loader": "^9.4.2",
52
52
  "tsconfig-holy-grail": "^12.0.0",
53
53
  "tslint": "^6.1.3",
54
- "tslint-config-holy-grail": "^54.0.0",
55
- "typescript": "^4.9.4",
54
+ "tslint-config-holy-grail": "^54.0.1",
55
+ "typescript": "^4.9.5",
56
56
  "webpack": "^5.75.0"
57
57
  },
58
58
  "files": [
@@ -75,5 +75,5 @@
75
75
  "test": "grunt lint && grunt test"
76
76
  },
77
77
  "types": "build/es2019/module.d.ts",
78
- "version": "1.2.15"
78
+ "version": "1.2.16"
79
79
  }
@@ -1,4 +1,8 @@
1
- export const createSetPlaybackRate = (playbackRateAssignments: WeakMap<HTMLMediaElement, [number, number]>) => {
1
+ export const createSetPlaybackRate = (
2
+ negativeMaximum: number,
3
+ playbackRateAssignments: WeakMap<HTMLMediaElement, [number, number]>,
4
+ positiveMinimum: number
5
+ ) => {
2
6
  return (mediaElement: HTMLMediaElement, previousValue: number, nextValue: number) => {
3
7
  const playbackRateAssignment = playbackRateAssignments.get(mediaElement);
4
8
 
@@ -7,8 +11,8 @@ export const createSetPlaybackRate = (playbackRateAssignments: WeakMap<HTMLMedia
7
11
  playbackRateAssignment[0] !== previousValue ||
8
12
  playbackRateAssignment[1] !== nextValue
9
13
  ) {
10
- // There is currently a bug in Firefox which causes problems when switching back to a playbackRate of exactly 1.
11
- mediaElement.playbackRate = nextValue === 1 ? (previousValue > 1 ? 1.00001 : 0.99999) : nextValue;
14
+ // Bug #6: Chrome does not adjust the tempo when the playbackRate is very close to 1.
15
+ mediaElement.playbackRate = nextValue > 1 ? Math.max(positiveMinimum, nextValue) : Math.min(negativeMaximum, nextValue);
12
16
 
13
17
  playbackRateAssignments.set(mediaElement, [mediaElement.playbackRate, nextValue]);
14
18
  }
package/src/module.ts CHANGED
@@ -20,7 +20,12 @@ export { createUpdateGradually };
20
20
 
21
21
  export const createUpdateStepwise = createUpdateStepwiseFactory(translateTimingStateVector);
22
22
 
23
- const updateMediaElement = createUpdateMediaElement(pause, play, createSetCurrentTime(new WeakMap()), createSetPlaybackRate(new WeakMap()));
23
+ const updateMediaElement = createUpdateMediaElement(
24
+ pause,
25
+ play,
26
+ createSetCurrentTime(new WeakMap()),
27
+ createSetPlaybackRate(881 / 882, new WeakMap(), 882 / 881)
28
+ );
24
29
 
25
30
  export const setTimingsrcWithCustomUpdateFunction = createSetTimingsrcWithCustomUpdateFunction(
26
31
  animationFrame,