Secure your code as it's written. Use Snyk Code to scan source code in minutes - no build needed - and fix issues immediately.
let fn: (...args: any[]) => any;
let index;
for (index = 0; index < bindedEventInfoList.length; index++) {
if (bindedEventInfoList[index][0] === name) {
fn = bindedEventInfoList[index][1];
break;
}
}
if (!isFunction(fn)) { return; }
if (target === 'kernel') {
this.dispatcher.kernel.off(name, fn);
} else {
const targetDom = this.getTargetDom(target);
removeEvent(targetDom, name, fn);
// When we remove something on video dom, we also need to remove event on penetrate plugin
if (target === 'video-dom') {
this.dispatcher.dom.videoExtendedNodes.forEach((node) => {
removeEvent(node, name, fn);
});
}
}
bindedEventInfoList.splice(index, 1);
eventNamesList.splice(nameIndex, 1);
}
}
function videoCanplay() {
newVideoReady = true;
// you can set it immediately run by yourself
if (immediate) {
removeEvent(that.dom.videoElement, 'timeupdate', oldVideoTimeupdate);
removeEvent(video, 'error', videoError, true);
return reject({
error: false,
kernel,
video,
});
}
}
function videoLoadedmetadata() {
function oldVideoTimeupdate() {
const currentTime = that.kernel.currentTime;
if ((bias <= 0 && currentTime >= idealTime) ||
(bias > 0 &&
((Math.abs(idealTime - currentTime) <= bias && newVideoReady) ||
(currentTime - idealTime) > bias))
) {
removeEvent(that.dom.videoElement, 'timeupdate', oldVideoTimeupdate);
removeEvent(video, 'error', videoError, true);
if (!newVideoReady) {
removeEvent(video, 'canplay', videoCanplay, true);
removeEvent(video, 'loadedmetadata', videoLoadedmetadata, true);
kernel.destroy();
return resolve();
}
return reject({
error: false,
kernel,
video,
});
}
}
function videoCanplay() {
.forEach(([ name, fn ]) => {
remove
? removeEvent(node, name, fn)
: addEvent(node, name, fn);
});
}
function oldVideoTimeupdate() {
const currentTime = that.kernel.currentTime;
if ((bias <= 0 && currentTime >= idealTime) ||
(bias > 0 &&
((Math.abs(idealTime - currentTime) <= bias && newVideoReady) ||
(currentTime - idealTime) > bias))
) {
removeEvent(that.dom.videoElement, 'timeupdate', oldVideoTimeupdate);
removeEvent(video, 'error', videoError, true);
if (!newVideoReady) {
removeEvent(video, 'canplay', videoCanplay, true);
removeEvent(video, 'loadedmetadata', videoLoadedmetadata, true);
kernel.destroy();
return resolve();
}
return reject({
error: false,
kernel,
video,
});
}
}
function videoCanplay() {
function oldVideoTimeupdate() {
const currentTime = that.kernel.currentTime;
if ((bias <= 0 && currentTime >= idealTime) ||
(bias > 0 &&
((Math.abs(idealTime - currentTime) <= bias && newVideoReady) ||
(currentTime - idealTime) > bias))
) {
removeEvent(that.dom.videoElement, 'timeupdate', oldVideoTimeupdate);
removeEvent(video, 'error', videoError, true);
if (!newVideoReady) {
removeEvent(video, 'canplay', videoCanplay, true);
removeEvent(video, 'loadedmetadata', videoLoadedmetadata, true);
kernel.destroy();
return resolve();
}
return reject({
error: false,
kernel,
video,
});
}
}
function videoCanplay() {
this.bindedEventInfo[target].forEach(([ name, fn ]) => {
removeEvent(targetDom, name, fn);
if (target === 'video-dom') {
this.dispatcher.dom.videoExtendedNodes.forEach((node) => removeEvent(node, name, fn));
}
});
}
}, () => {
off(document, 'mousemove', this.handleDrag);
off(document, 'mouseup', this.handleDragEnd);
});
}
function oldVideoTimeupdate() {
const currentTime = that.kernel.currentTime;
if ((bias <= 0 && currentTime >= idealTime) ||
(bias > 0 &&
((Math.abs(idealTime - currentTime) <= bias && newVideoReady) ||
(currentTime - idealTime) > bias))
) {
removeEvent(that.dom.videoElement, 'timeupdate', oldVideoTimeupdate);
removeEvent(video, 'error', videoError, true);
if (!newVideoReady) {
removeEvent(video, 'canplay', videoCanplay, true);
removeEvent(video, 'loadedmetadata', videoLoadedmetadata, true);
kernel.destroy();
return resolve();
}
return reject({
error: false,
kernel,
video,
});
}
}
function videoCanplay() {