UNPKG

videojs-event-tracking

Version:

Track events with VideoJS and keep an eye on performance metrics

7 lines 3.87 kB
/** * videojs-event-tracking * @version 1.0.1 * @copyright 2019 spodlecki <s.podlecki@gmail.com> * @license MIT */ !function(n,t){"object"==typeof exports&&"undefined"!=typeof module?module.exports=t(require("video.js")):"function"==typeof define&&define.amd?define(["video.js"],t):n.videojsEventTracking=t(n.videojs)}(this,function(n){"use strict";n="default"in n?n.default:n;function t(n){(function(n){function t(n){o&&clearTimeout(o),i=0,r=!1}var e=this,i=0,o=null,r=!1;e.on("dispose",t),e.on("loadstart",t),e.on("ended",t),e.on("pause",function(){e.scrubbing()||r||(o=setTimeout(function(){i++,e.trigger("tracking:pause",{pauseCount:i})},300))})}).apply(this,arguments),function(n){function t(){i&&clearTimeout(i),a=0,s=u=r=o=!1}var e=this,i=null,o=!1,r=!1,u=!1,a=0,s=!1;this.on("dispose",t),this.on("loadstart",t),this.on("ended",t),this.on("pause",function(){u=!1,!e.scrubbing()||n.bufferingConfig&&n.bufferingConfig.includeScrub||(o=!0,i=setTimeout(function(){o=!1},200))}),this.on("waiting",function(){!1===u&&!1===o&&0<e.currentTime()&&(u=new Date,r=+e.currentTime().toFixed(0),s=+e.readyState())}),this.on("timeupdate",function(){var n=+e.currentTime().toFixed(0);if(u&&n!==r){var t=(new Date-u)/1e3;r=u=!1,a++,e.trigger("tracking:buffered",{currentTime:+n,readyState:+s,secondsToLoad:+t.toFixed(3),bufferCount:+a})}})}.apply(this,arguments),function(n){function t(n){r=o=i=!1,s=a=u=0}var e=this,i=!1,o=!1,r=!1,u=0,a=0,s=0;e.on("dispose",t),e.on("loadstart",t),e.on("tracking:pause",function(){return a++}),e.on("tracking:seek",function(){return s++}),e.on("timeupdate",function(){var n=+e.currentTime().toFixed(0),t={seekCount:s,pauseCount:a,currentTime:n,duration:u};switch(n){case i:i=!1,e.trigger("tracking:first-quarter",t);break;case o:o=!1,e.trigger("tracking:second-quarter",t);break;case r:r=!1,e.trigger("tracking:third-quarter",t)}}),e.on("ended",function(){var n={seekCount:s,pauseCount:a,currentTime:u,duration:u};e.trigger("tracking:fourth-quarter",n)}),e.on("durationchange",function(){if(0<(u=+e.duration().toFixed(0))){var n=(u/4).toFixed(0);o=2*(i=+n),r=3*+n}})}.apply(this,arguments),function(n){function t(){i=!1,u=r=o=0}var e=this,i=!1,o=0,r=0,u=0;this.on("dispose",t),this.on("loadstart",function(){t(),o=new Date}),this.on("loadeddata",function(){r=new Date,u=(r-o)/1e3}),this.on("playing",function(){i||(i=!0,e.trigger("tracking:firstplay",{secondsToLoad:+u.toFixed(3)}))})}.apply(this,arguments),function(n){function t(){o=!(i=0)}var e=this,i=0,o=!0;e.on("dispose",t),e.on("loadstart",t),e.on("ended",t),e.on("play",function(){o=!1}),e.on("pause",function(){if(!o&&e.scrubbing()){var n=+e.currentTime().toFixed(0);i++,e.trigger("tracking:seek",{seekCount:+i,seekTo:n})}})}.apply(this,arguments),function(t){if(void 0!==t&&"function"==typeof t.performance){var e=this,i=0,o=0,r=0,u=0,a=0,s=0,c=0,d=[],n=function(){c=s=a=u=r=o=i=0,d=[]},f=function(){var n={pauseCount:o,seekCount:i,bufferCount:r,totalDuration:u,watchedDuration:a,bufferDuration:s,initialLoadTime:c};t.performance.call(e,n)},g=function(){f(),n()};"function"==typeof window.addEventListener&&(window.addEventListener("beforeunload",g),e.on("dispose",function(){window.removeEventListener("beforeunload",g)})),e.on("loadstart",function(){0<u&&f(),n()}),e.on("ended",g),e.on("dispose",g),e.on("timeupdate",function(){var n=+e.currentTime().toFixed(0);d.indexOf(n)<0&&d.push(n),a=d.length}),e.on("loadeddata",function(n,t){u=+e.duration().toFixed(0)}),e.on("tracking:seek",function(n,t){i=t.seekCount}),e.on("tracking:pause",function(n,t){o=t.pauseCount}),e.on("tracking:buffered",function(n,t){r=t.bufferCount,s=+(s+t.secondsToLoad).toFixed(3)}),e.on("tracking:firstplay",function(n,t){c=t.secondsToLoad})}}.apply(this,arguments)}var e=n.registerPlugin||n.plugin;return void 0===(n.getPlugin||n.plugin)("eventTracking")&&e("eventTracking",t),t.VERSION="1.0.1",t});