UNPKG

9.81 kBJavaScriptView Raw
1/*!
2 * YouTube tracking for Snowplow v3.2.3 (http://bit.ly/sp-js)
3 * Copyright 2022 Snowplow Analytics Ltd
4 * Licensed under BSD-3-Clause
5 */
6
7"use strict";!function(e,n){"object"==typeof exports&&"undefined"!=typeof module?n(exports):"function"==typeof define&&define.amd?define(["exports"],n):n((e="undefined"!=typeof globalThis?globalThis:e||self).snowplowYouTubeTracking={})}(this,(function(e){function n(e,n,t){if(t||2===arguments.length)for(var r,a=0,o=n.length;a<o;a++)!r&&a in n||(r||(r=Array.prototype.slice.call(n,0,a)),r[a]=n[a]);return e.concat(r||n)}function t(e){var n={};return(e=e.split("?")[1])?(e.split("&").forEach((function(e){e=e.split("="),n[e[0]]=e[1]})),n):n}function r(e,n){void 0===n&&(n=Object.keys(P)),function(e,n,t){try{var r=null!=e?e:Object.keys(n);e=[];for(var a=0;a<r.length;a++){var o=r[a];n.hasOwnProperty(o)?e.push(n[o]):N.warn(o+" not configured")}e.forEach(t)}catch(e){N.error("Function failed",e)}}(n,P,(function(n){var t=(n=n.core).track,r=e.schema,a=e.data,o=function(){var e,n={},t=[],r=[],a=function(e,t){null!=t&&""!==t&&(n[e]=t)};return{add:a,addDict:function(e){for(var n in e)Object.prototype.hasOwnProperty.call(e,n)&&a(n,e[n])},addJson:function(e,n,a){var o;if(o=a)e:{if(null!=a&&(a.constructor==={}.constructor||a.constructor===[].constructor))for(var u in a)if(Object.prototype.hasOwnProperty.call(a,u)){o=!0;break e}o=!1}o&&(e={keyIfEncoded:e,keyIfNotEncoded:n,json:a},r.push(e),t.push(e))},getPayload:function(){return n},getJson:function(){return t},withJsonProcessor:function(n){e=n},build:function(){return null==e||e(this,r),n}}}();r={schema:"iglu:com.snowplowanalytics.snowplow/unstruct_event/jsonschema/1-0-0",data:{schema:r,data:a}},o.add("e","ue"),o.addJson("ue_px","ue_pr",r),t.call(n,o,e.context,e.timestamp)}))}function a(){if(!Array.prototype.slice.call(document.getElementsByTagName("script")).some((function(e){return"https://www.youtube.com/iframe_api"===e.src}))){var e=document.createElement("script");e.src="https://www.youtube.com/iframe_api";var n=document.getElementsByTagName("script")[0];n.parentNode.insertBefore(e,n)}if("undefined"==typeof YT||void 0===YT.Player)6400>=R?(setTimeout(a,R),R*=2):T.error("YouTube iframe API failed to load.");else for(;O.length;)o(O.pop())}function o(e){var n,t=((n={})[s.ONREADY]=function(){return u(h[e.mediaId].player,y.READY,e)},n[s.ONSTATECHANGE]=function(n){-1!==e.captureEvents.indexOf(f[n.data.toString()])&&u(h[e.mediaId].player,f[n.data],e)},n[s.ONPLAYBACKQUALITYCHANGE]=function(){return u(h[e.mediaId].player,y.PLAYBACKQUALITYCHANGE,e)},n[s.ONAPICHANGE]=function(){return u(h[e.mediaId].player,y.APICHANGE,e)},n[s.ONERROR]=function(n){return u(h[e.mediaId].player,y.ERROR,e,{error:A[n.data]})},n[s.ONPLAYBACKRATECHANGE]=function(){return u(h[e.mediaId].player,y.PLAYBACKRATECHANGE,e)},n),r={};e.youtubeEvents.forEach((function(e){r[e]=t[e]})),h[e.mediaId]={player:new YT.Player(e.mediaId,{events:d({},r)}),conf:e,seekTracking:{prevTime:0,enabled:!1},volumeTracking:{prevVolume:0,enabled:!1}}}function u(e,n,t,a){var o=h[t.mediaId];o.seekTracking.enabled||1===t.captureEvents.indexOf("seek")||function(e,n,t){h[n.mediaId].seekTracking.enabled=!0,setInterval((function(){var r=h[n.mediaId],a=e.getCurrentTime();1<Math.abs(a-(r.seekTracking.prevTime+.5))&&u(e,c.SEEK,n,t),r.seekTracking.prevTime=a}),n.updateRate)}(e,t,a),o.volumeTracking.enabled||1===t.captureEvents.indexOf("volume")||function(e,n,t){h[n.mediaId].volumeTracking.enabled=!0,h[n.mediaId].volumeTracking.prevVolume=e.getVolume(),setInterval((function(){var r=h[n.mediaId].volumeTracking,a=e.getVolume();a!==r.prevVolume&&u(e,c.VOLUMECHANGE,n,t),r.prevVolume=a}),n.updateRate)}(e,t,a),t.hasOwnProperty("boundaries")&&function(e,n,t){var r=t.progress.boundaryTimeoutIds;n===p.PAUSED&&(r.forEach((function(e){return clearTimeout(e)})),r.length=0),n===p.PLAYING&&function(e,n){var t,r=e.getCurrentTime();null===(t=n.progress)||void 0===t||t.boundaries.forEach((function(t){var a,o=1e3*e.getDuration()*(t/100);0!==r&&(o-=1e3*r),t<o&&(null===(a=n.progress)||void 0===a||a.boundaryTimeoutIds.push(setTimeout((function(){return i(e,n,o,t)}),o)))}))}(e,t)}(e,n,t),o={type:n},t.hasOwnProperty("label")&&(o.label=t.label);var l=function(e,n,t){var r=e.getSphericalProperties(),a={buffering:!1,cued:!1,unstarted:!1},o=e.getPlayerState();return a.hasOwnProperty(f[o])&&(a[f[o]]=!0),n={autoPlay:"1"===n.autoplay,avaliablePlaybackRates:e.getAvailablePlaybackRates(),buffering:a.buffering,controls:"0"!==n.controls,cued:a.cued,loaded:parseInt(String(100*e.getVideoLoadedFraction())),playbackQuality:e.getPlaybackQuality(),playerId:e.getIframe().id,unstarted:a.unstarted,url:e.getVideoUrl()},r&&(n=d(d({},n),r)),null!=t&&t.error&&(n.error=t.error),-1!==(t=e.getPlaylistIndex())&&(n.playlistIndex=t),(t=e.getPlaylist())&&(n.playlist=t.map((function(e){return parseInt(e)}))),(e=e.getAvailableQualityLevels())&&(n.avaliableQualityLevels=e),{schema:"iglu:com.youtube/youtube/jsonschema/1-0-0",data:n}}(e,t.urlParameters,a);t=t.urlParameters;var s={ended:!1,paused:!1},E=e.getPlayerState();s.hasOwnProperty(f[E])&&(s[f[E]]=!0),e={currentTime:e.getCurrentTime(),duration:e.getDuration(),ended:s.ended,loop:"1"===t.loop,muted:e.isMuted(),paused:s.paused,playbackRate:e.getPlaybackRate(),volume:e.getVolume()},n===c.PERCENTPROGRESS&&(e.percentProgress=a.percentThrough),r({schema:"iglu:com.snowplowanalytics.snowplow/media_player_event/jsonschema/1-0-0",data:o,context:[l,{schema:"iglu:com.snowplowanalytics.snowplow/media_player/jsonschema/1-0-0",data:e}]})}function i(e,n,t,r){1e3*e.getCurrentTime()<t?setTimeout((function(){return i(e,n,t,r)}),10):u(e,c.PERCENTPROGRESS,n,{percentThrough:r})}var c,l,s,d=function(){return(d=Object.assign||function(e){for(var n,t=1,r=arguments.length;t<r;t++)for(var a in n=arguments[t])Object.prototype.hasOwnProperty.call(n,a)&&(e[a]=n[a]);return e}).apply(this,arguments)};(l=c||(c={})).PERCENTPROGRESS="percentprogress",l.SEEK="seek",l.VOLUMECHANGE="volumechange",function(e){e.ONSTATECHANGE="onStateChange",e.ONPLAYBACKQUALITYCHANGE="onPlaybackQualityChange",e.ONERROR="onError",e.ONAPICHANGE="onApiChange",e.ONPLAYBACKRATECHANGE="onPlaybackRateChange",e.ONREADY="onReady"}(s||(s={}));var p,f={"-1":"unstarted",0:"ended",1:"play",2:"pause",3:"buffering",5:"cued"},E={ready:s.ONREADY,playbackratechange:s.ONPLAYBACKRATECHANGE,playbackqualitychange:s.ONPLAYBACKQUALITYCHANGE,error:s.ONERROR,apichange:s.ONAPICHANGE};Object.keys(f).forEach((function(e){return E[f[e]]=s.ONSTATECHANGE})),function(e){e.UNSTARTED="unstarted",e.ENDED="ended",e.PLAYING="play",e.PAUSED="pause",e.BUFFERING="buffering",e.CUED="cued"}(p||(p={}));var y,A={2:"INVALID_URL",5:"HTML5_ERROR",100:"VIDEO_NOT_FOUND",101:"MISSING_EMBED_PERMISSION",150:"MISSING_EMBED_PERMISSION"};!function(e){e.STATECHANGE="statechange",e.PLAYBACKQUALITYCHANGE="playbackqualitychange",e.ERROR="error",e.APICHANGE="apichange",e.PLAYBACKRATECHANGE="playbackratechange",e.READY="ready"}(y||(y={})),p.BUFFERING,p.CUED,p.ENDED,p.PAUSED,p.PLAYING,p.UNSTARTED;var g,m=n(n(n([],Object.keys(y).map((function(e){return y[e]}))),Object.keys(c).map((function(e){return c[e]}))),Object.keys(p).map((function(e){return p[e]}))),v=[p.PAUSED,p.PLAYING,p.ENDED,c.SEEK,c.VOLUMECHANGE,s.ONPLAYBACKQUALITYCHANGE,s.ONPLAYBACKRATECHANGE,c.PERCENTPROGRESS],b={AllEvents:m,DefaultEvents:v};!function(e){e[e.none=0]="none",e[e.error=1]="error",e[e.warn=2]="warn",e[e.debug=3]="debug",e[e.info=4]="info"}(g||(g={}));var T,N=function(e){return void 0===e&&(e=g.warn),{setLogLevel:function(n){e=g[n]?n:g.warn},warn:function(t,r){for(var a=[],o=2;o<arguments.length;o++)a[o-2]=arguments[o];e>=g.warn&&"undefined"!=typeof console&&(o="Snowplow: "+t,r?console.warn.apply(console,n([o+"\n",r],a)):console.warn.apply(console,n([o],a)))},error:function(t,r){for(var a=[],o=2;o<arguments.length;o++)a[o-2]=arguments[o];e>=g.error&&"undefined"!=typeof console&&(o="Snowplow: "+t+"\n",r?console.error.apply(console,n([o+"\n",r],a)):console.error.apply(console,n([o],a)))},debug:function(t){for(var r=[],a=1;a<arguments.length;a++)r[a-1]=arguments[a];e>=g.debug&&"undefined"!=typeof console&&console.debug.apply(console,n(["Snowplow: "+t],r))},info:function(t){for(var r=[],a=1;a<arguments.length;a++)r[a-1]=arguments[a];e>=g.info&&"undefined"!=typeof console&&console.info.apply(console,n(["Snowplow: "+t],r))}}}(),P={},h={},O=[],R=100;e.YouTubeTrackingPlugin=function(){return{activateBrowserPlugin:function(e){P[e.id]=e},logger:function(e){T=e}}},e.enableYouTubeTracking=function(e){var n=function(e,n){if(e={mediaId:e,captureEvents:v,youtubeEvents:[s.ONSTATECHANGE,s.ONPLAYBACKQUALITYCHANGE,s.ONERROR,s.ONPLAYBACKRATECHANGE],updateRate:500,progress:{boundaries:[10,25,50,75],boundaryTimeoutIds:[]}},!n)return e;if(n.updateRate&&(e.updateRate=n.updateRate),n.captureEvents){for(var t=[],r=function(e){b.hasOwnProperty(e)?t=t.concat(b[e]):Object.keys(m).filter((function(n){return n===e}))?t.push(e):console.warn("'"+e+"' is not a valid event.")},a=0,o=n.captureEvents;a<o.length;a++){var u=o[a];r(u)}for(n.captureEvents=t,r=0,a=n.captureEvents;r<a.length;r++)u=a[r],o=E[u],E.hasOwnProperty(u)&&-1===e.youtubeEvents.indexOf(o)&&e.youtubeEvents.push(o);-1!==n.captureEvents.indexOf(c.PERCENTPROGRESS)&&(e.progress={boundaries:(null==n?void 0:n.boundaries)||e.progress.boundaries,boundaryTimeoutIds:[]})}return d(d({},e),n)}(e.id,e.options);if(e=document.getElementById(e.id)){if(-1===e.src.indexOf("enablejsapi")){var r=e.src,u=t(r);u.enablejsapi="1",r=r+"?"+function(e){var n="";return Object.keys(e).forEach((function(t){n+=t+"="+e[t]+"&"})),n.slice(0,-1)}(u),e.src=r}n.urlParameters=t(e.src),"undefined"!=typeof YT&&void 0!==YT.Player?o(n):(O.push(n),a())}else T.error("Cannot find YouTube iframe")},Object.defineProperty(e,"__esModule",{value:!0})}));
8//# sourceMappingURL=index.umd.min.js.map