@qbix/q 1.0.5
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.
- package/LICENSE +21 -0
- package/README.md +678 -0
- package/dist/Metrics.js +2873 -0
- package/dist/Metrics.min.js +95 -0
- package/dist/Q.js +15677 -0
- package/dist/Q.min.js +385 -0
- package/dist/Q.minimal.js +11594 -0
- package/dist/Q.minimal.min.js +286 -0
- package/dist/handlebars-v4.0.10.min.js +29 -0
- package/dist/handlebars.minimal.min.js +1 -0
- package/dist/img/hints/rotate-left.gif +0 -0
- package/dist/img/hints/swipe-down.gif +0 -0
- package/dist/img/hints/swipe-up.gif +0 -0
- package/dist/img/hints/tap.gif +0 -0
- package/dist/img/throbbers/loading.gif +0 -0
- package/dist/jquery.minimal.min.js +18 -0
- package/dist/methods/Q/Audio/load.js +29 -0
- package/dist/methods/Q/Audio/loadVoices.js +36 -0
- package/dist/methods/Q/Audio/play.js +47 -0
- package/dist/methods/Q/Audio/speak.js +149 -0
- package/dist/methods/Q/Crypto/delegate.js +186 -0
- package/dist/methods/Q/Crypto/internalKeypair.js +170 -0
- package/dist/methods/Q/Crypto/sign.js +200 -0
- package/dist/methods/Q/Crypto/verify.js +212 -0
- package/dist/methods/Q/Crypto/verifyDelegated.js +214 -0
- package/dist/methods/Q/Data/Bloom/_internal.js +163 -0
- package/dist/methods/Q/Data/Bloom/create.js +23 -0
- package/dist/methods/Q/Data/Bloom/fromBase64.js +21 -0
- package/dist/methods/Q/Data/Bloom/fromBytes.js +15 -0
- package/dist/methods/Q/Data/Bloom/fromElements.js +33 -0
- package/dist/methods/Q/Data/Merkle/_internal.js +68 -0
- package/dist/methods/Q/Data/Merkle/build.js +29 -0
- package/dist/methods/Q/Data/Merkle/proof.js +50 -0
- package/dist/methods/Q/Data/Merkle/verify.js +32 -0
- package/dist/methods/Q/Data/Prolly/_internal.js +190 -0
- package/dist/methods/Q/Data/Prolly/build.js +28 -0
- package/dist/methods/Q/Data/Prolly/delete.js +28 -0
- package/dist/methods/Q/Data/Prolly/diff.js +70 -0
- package/dist/methods/Q/Data/Prolly/get.js +38 -0
- package/dist/methods/Q/Data/Prolly/set.js +32 -0
- package/dist/methods/Q/Data/compress.js +45 -0
- package/dist/methods/Q/Data/decompress.js +35 -0
- package/dist/methods/Q/Data/decrypt.js +55 -0
- package/dist/methods/Q/Data/derive.js +76 -0
- package/dist/methods/Q/Data/digest.js +29 -0
- package/dist/methods/Q/Data/encrypt.js +61 -0
- package/dist/methods/Q/Data/generateKey.js +40 -0
- package/dist/methods/Q/Data/hkdf.js +44 -0
- package/dist/methods/Q/Data/importKey.js +34 -0
- package/dist/methods/Q/Data/sign.js +42 -0
- package/dist/methods/Q/Data/verify.js +45 -0
- package/dist/methods/Q/Onboarding/handle.js +50 -0
- package/dist/methods/Q/Onboarding/start.js +165 -0
- package/dist/methods/Q/Onboarding/stop.js +21 -0
- package/dist/methods/Q/Sandbox/run.js +392 -0
- package/dist/methods/Q/Tool/define/component.js +218 -0
- package/dist/methods/Q/globalMemoryWalk.js +82 -0
- package/dist/methods/Q/leaves.js +34 -0
- package/dist/methods/Q/registerWebComponent.js +0 -0
- package/dist/methods/Q/sanitize.js +142 -0
- package/dist/test.html +6 -0
- package/dist/tools/Q/lazyload.js +433 -0
- package/package.json +26 -0
|
@@ -0,0 +1,95 @@
|
|
|
1
|
+
var $jscomp=$jscomp||{};$jscomp.scope={};$jscomp.ASSUME_ES5=!1;$jscomp.ASSUME_NO_NATIVE_MAP=!1;$jscomp.ASSUME_NO_NATIVE_SET=!1;$jscomp.defineProperty=$jscomp.ASSUME_ES5||"function"==typeof Object.defineProperties?Object.defineProperty:function(c,k,d){c!=Array.prototype&&c!=Object.prototype&&(c[k]=d.value)};$jscomp.getGlobal=function(c){return"undefined"!=typeof window&&window===c?c:"undefined"!=typeof global&&null!=global?global:c};$jscomp.global=$jscomp.getGlobal(this);$jscomp.SYMBOL_PREFIX="jscomp_symbol_";
|
|
2
|
+
$jscomp.initSymbol=function(){$jscomp.initSymbol=function(){};$jscomp.global.Symbol||($jscomp.global.Symbol=$jscomp.Symbol)};$jscomp.Symbol=function(){var c=0;return function(k){return $jscomp.SYMBOL_PREFIX+(k||"")+c++}}();
|
|
3
|
+
$jscomp.initSymbolIterator=function(){$jscomp.initSymbol();var c=$jscomp.global.Symbol.iterator;c||(c=$jscomp.global.Symbol.iterator=$jscomp.global.Symbol("iterator"));"function"!=typeof Array.prototype[c]&&$jscomp.defineProperty(Array.prototype,c,{configurable:!0,writable:!0,value:function(){return $jscomp.arrayIterator(this)}});$jscomp.initSymbolIterator=function(){}};$jscomp.arrayIterator=function(c){var k=0;return $jscomp.iteratorPrototype(function(){return k<c.length?{done:!1,value:c[k++]}:{done:!0}})};
|
|
4
|
+
$jscomp.iteratorPrototype=function(c){$jscomp.initSymbolIterator();c={next:c};c[$jscomp.global.Symbol.iterator]=function(){return this};return c};$jscomp.iteratorFromArray=function(c,k){$jscomp.initSymbolIterator();c instanceof String&&(c+="");var d=0,a={next:function(){if(d<c.length){var b=d++;return{value:k(b,c[b]),done:!1}}a.next=function(){return{done:!0,value:void 0}};return a.next()}};a[Symbol.iterator]=function(){return a};return a};
|
|
5
|
+
$jscomp.polyfill=function(c,k,d,a){if(k){d=$jscomp.global;c=c.split(".");for(a=0;a<c.length-1;a++){var b=c[a];b in d||(d[b]={});d=d[b]}c=c[c.length-1];a=d[c];k=k(a);k!=a&&null!=k&&$jscomp.defineProperty(d,c,{configurable:!0,writable:!0,value:k})}};$jscomp.polyfill("Array.prototype.keys",function(c){return c?c:function(){return $jscomp.iteratorFromArray(this,function(c){return c})}},"es6","es3");
|
|
6
|
+
(function(c){function k(){function a(a){a=!("pause"===a.type||"resign"===a.type||("resume"===a.type||"active"===a.type?0:"hidden"===document.visibilityState));if(a!==b._visible){b._visible=a;for(var g=0;g<b._visibilityCallbacks.length;g++)try{b._visibilityCallbacks[g].fn(a)}catch(m){}}}if(!b._visibilityBound){b._visibilityBound=!0;for(var d=null,c=["","moz","ms","webkit","o"],k=0;k<c.length;k++){var e=c[k];if((e?e+"Hidden":"hidden")in document){d=e?e+"visibilitychange":"visibilitychange";break}}d&&
|
|
7
|
+
document.addEventListener(d,a,!1);document.addEventListener("pause",a,!1);document.addEventListener("resume",a,!1);document.addEventListener("resign",a,!1);document.addEventListener("active",a,!1)}}function d(){b._unloadBound||(b._unloadBound=!0,b.onVisibilityChange(function(g){g?b._unloaded=!1:a()},"Metrics.unload"),window.addEventListener("pagehide",function(){a()}),window.addEventListener("pageshow",function(a){a.persisted&&(b._unloaded=!1)}))}function a(){if(!b._unloaded){b._unloaded=!0;var a=
|
|
8
|
+
Math.round((Date.now()-b._startTime)/1E3);b.send("unload:"+a+"s")}}var b=c.Metrics||{};c.Metrics=b;b._sessionKey="metrics_sid";b._visitorKey="metrics_vid";b._sid=null;b._vid=null;b.getSessionId=function(){if(b._sid)return b._sid;try{var a=sessionStorage.getItem(b._sessionKey);a||(a=Math.random().toString(36).slice(2)+Math.random().toString(36).slice(2),sessionStorage.setItem(b._sessionKey,a));b._sid=a}catch(p){b._sid=Math.random().toString(36).slice(2)+Math.random().toString(36).slice(2)}return b._sid};
|
|
9
|
+
b.getVisitorId=function(){if(b._vid)return b._vid;var a=null;try{return a=localStorage.getItem(b._visitorKey),a||(a=Math.random().toString(36).slice(2)+Date.now().toString(36)+Math.random().toString(36).slice(2),localStorage.setItem(b._visitorKey,a)),b._vid=a}catch(p){}try{return a=sessionStorage.getItem(b._visitorKey),a||(a=Math.random().toString(36).slice(2)+Date.now().toString(36)+Math.random().toString(36).slice(2),sessionStorage.setItem(b._visitorKey,a)),b._vid=a}catch(p){}a=Math.random().toString(36).slice(2)+
|
|
10
|
+
Date.now().toString(36)+Math.random().toString(36).slice(2);return b._vid=a};b._endpoint=null;b._page=null;b._extra=null;b._unloaded=!1;b._startTime=Date.now();b.send=function(a,d){if(b._endpoint&&!b._unloaded){a={session:b.getSessionId(),visitor:b.getVisitorId(),page:b._page||document.title,label:a,t:Date.now()};b._extra&&(a.extra=b._extra);d&&(a.data=d);d=JSON.stringify(a);try{navigator.sendBeacon?navigator.sendBeacon(b._endpoint,new Blob([d],{type:"text/plain"})):fetch(b._endpoint,{method:"POST",
|
|
11
|
+
headers:{"Content-Type":"text/plain"},keepalive:!0,body:d})}catch(n){}}};b._visible=!0;b._visibilityCallbacks=[];b._visibilityBound=!1;b.isVisible=function(){return b._visible};b.onVisibilityChange=function(a,d){if(d)for(var c=0;c<b._visibilityCallbacks.length;c++)if(b._visibilityCallbacks[c].key===d){b._visibilityCallbacks[c].fn=a;return}b._visibilityCallbacks.push({fn:a,key:d||null})};b._unloadBound=!1;b.init=function(a){a=a||{};a.endpoint&&(b._endpoint=a.endpoint);a.page&&(b._page=a.page);a.sessionKey&&
|
|
12
|
+
(b._sessionKey=a.sessionKey);a.sessionId&&(b._sid=a.sessionId);a.extra&&(b._extra=a.extra);k();!1!==a.trackUnload&&d();b.send("loaded");return b}})("undefined"!==typeof window?window:this);
|
|
13
|
+
"undefined"!==typeof Q&&function(c){function k(a){var b=location.hash||"#";a=b.queryField("v",a);a!==b&&history.replaceState(history.state,document.title,a)}var d=c.Metrics=c.plugins.Metrics=window.Metrics;d.setState=function(a,b){var g=c.info.url;d.setState.pending[g]=c.setTimeout(function(){d.setState.pending[g]&&(clearTimeout(d.setState.pending[g]),delete d.setState.pending[g]);c.req("Metrics/update",[],null,{method:"POST",fields:{navigatorUrl:location.href,url:c.info.url,state:a,extra:JSON.stringify(b)},
|
|
14
|
+
keepalive:!0})},5E3)};d.setState.pending={};c.extend.dontCopy["Q.Users.User"]=!0;c.text.Metrics={};c.onReady.add(function(){c.onVisibilityChange&&c.onVisibilityChange.set&&c.onVisibilityChange.set(function(a){if(d._visible!==a){d._visible=a;for(var b=0;b<d._visibilityCallbacks.length;b++)try{d._visibilityCallbacks[b].fn(a)}catch(e){}}},"Metrics");var a=c.getObject("Metrics.navigationTracker",c.plugins)||c.getObject("Metrics.navigationTracker",c);a&&d.NavigationTracker&&(a.page=a.page||c.info.url||
|
|
15
|
+
document.title,d.NavigationTracker.init(a));(a=c.getObject("Metrics.mediaTracker",c.plugins)||c.getObject("Metrics.mediaTracker",c))&&d.MediaTracker&&d.MediaTracker.init(a);var b=d.NavigationTracker;if(b){var g=null;c.Tool.onActivate("Q/tabs").set(function(){this.state.onCurrent.set(function(a,d){clearTimeout(g);g=setTimeout(function(){d&&b.state.initialized&&b.opened("tab:"+d)},300)},"Metrics.NavigationTracker")},"Metrics.NavigationTracker");c.Tool.onActivate("Q/columns").set(function(){this.state.onActivate.set(function(a,
|
|
16
|
+
d,c){b.state.initialized&&(a=a&&a.getAttribute("data-name")||"column-"+c,b.opened("column:"+a))},"Metrics.NavigationTracker");this.state.onClose.set(function(a,d){b.state.initialized&&(a=d&&d.getAttribute("data-name")||"column-"+a,b.closed("column:"+a))},"Metrics.NavigationTracker")},"Metrics.NavigationTracker");c.Tool.onActivate("Q/expandable").set(function(){var a=this.element.id||this.element.getAttribute("data-name")||this.id;this.state.onExpand.set(function(){b.state.initialized&&b.opened("expandable:"+
|
|
17
|
+
a)},"Metrics.NavigationTracker");this.state.onCollapse.set(function(){b.state.initialized&&b.closed("expandable:"+a)},"Metrics.NavigationTracker")},"Metrics.NavigationTracker");if(c.Contextual){c.Contextual.onShow.set(function(a){if(b.state.initialized){var d=$(a).data("Q/contextual trigger");d=d&&d.attr("data-name")||d&&d.attr("id")||"contextual-"+c.Contextual.current;b.opened("contextual:"+d);(a=a.querySelector?a.querySelector(".Q_listing_wrapper, .Q_listing"):null)&&b.observeNavContainer(a)}},
|
|
18
|
+
"Metrics.NavigationTracker");c.Contextual.onHide.set(function(a){b.state.initialized&&b.state.activeSection&&0===b.state.activeSection.indexOf("contextual:")&&b.closed(b.state.activeSection)},"Metrics.NavigationTracker");var p=c.Contextual.itemSelectHandler;p&&(c.Contextual.itemSelectHandler=function(a,c){if(b.state.initialized){var e=a.getAttribute("data-action")||a.getAttribute("data-name")||(a.textContent||"").trim().slice(0,40);d.send("contextual-item:"+e)}return p.apply(this,arguments)})}}if(a=
|
|
19
|
+
location.hash.queryField("v"))k(a),c.req("Metrics/landed",{method:"POST",fields:{trackerId:"visitId:"+a}},function(a,b){a?window.console&&console.error("Metrics landed request failed",a):b&&b.slots&&b.slots.visitId&&k(b.slots.visitId)})},"Metrics");(function(){function a(a,d){var b="",g="";if(a instanceof Error)b=a.message,g=a.stack;else if("string"===typeof a)b=a;else if(a&&"object"===typeof a)try{var k=JSON.stringify(a)}catch(e){k="[unserializable reason]"}g={message:b||"",stack:g||"",url:location.href,
|
|
20
|
+
userAgent:navigator.userAgent,timestamp:Date.now(),performanceNow:performance.now()};k&&(g.details=k);g=JSON.stringify({error:g});c.req("Metrics/update",[],null,{method:"POST",fields:{navigatorUrl:location.href,url:c.info&&c.info.url,state:"error",extra:g},keepalive:!0});console.warn(d?"Unhandled rejection:":"Unhandled error:",a);b&&/indexedDB/i.test(b)&&console.warn("[Recovery] Error suggests IndexedDB corruption. Triggering recovery...")}window.addEventListener("unhandledrejection",function(b){a(b.reason,
|
|
21
|
+
!0)});window.addEventListener("error",function(b){a(b.error||b.message,!1)})})()}(Q);"use strict";
|
|
22
|
+
(function(c){function k(a){a=document.querySelectorAll(a);for(var b=[],d=0,c=e.options&&e.options.minSectionHeight||0,h=0;h<a.length;h++){var g=a[h];if(!(g.offsetHeight<c)){if(!g.id){var q=(g.textContent||"").trim().slice(0,60).toLowerCase().replace(/[^a-z0-9]+/g,"-").replace(/^-|-$/g,"");g.id=q||"section-"+d}b.push({el:g,id:g.id,tag:g.tagName.toLowerCase(),ordinal:d++,snippet:(g.textContent||"").trim().slice(0,80)})}}return b}function d(){var a=e.options,b=window.scrollY||window.pageYOffset;if(Math.abs(b-
|
|
23
|
+
e._prevY)>a.settleTolerance)e._prevY=b,e.scrollTimer=setTimeout(d,a.recheckInterval);else{var c=window.scrollY||window.pageYOffset;for(var g=e.options,h=null,k=Infinity,q=0;q<e.sections.length;q++){var l=e.sections[q],f=l.el.offsetTop;f<=c+g.sectionLookback&&(f=Math.abs(f-c-180),f<k&&(k=f,h=l))}(c=h)&&!e.seen[c.id]&&(e.seen[c.id]=!0,n.send("section:"+c.id,{tag:c.tag,ordinal:c.ordinal,snippet:c.snippet}));c=document.documentElement.scrollHeight-window.innerHeight;if(0<c)for(b=Math.round(b/c*100),c=
|
|
24
|
+
0;c<a.depthMilestones.length;c++)g=a.depthMilestones[c],b>=g&&!e.depthHit[g]&&(e.depthHit[g]=!0,n.send("depth:"+g+"%"))}}function a(){e.anchorCooling||(clearTimeout(e.scrollTimer),e._prevY=window.scrollY||window.pageYOffset,e.scrollTimer=setTimeout(d,e.options.debounce))}function b(){var a=e.options;if(a.tocSelector){for(var b=window.scrollY||window.pageYOffset,d="",c=0;c<e.tocSections.length;c++)b>=e.tocSections[c].el.offsetTop-160&&(d=e.tocSections[c].id);b=document.querySelectorAll(a.tocSelector);
|
|
25
|
+
for(c=0;c<b.length;c++)b[c].classList.remove(a.tocActiveClass),b[c].getAttribute("href")==="#"+d&&b[c].classList.add(a.tocActiveClass)}}function g(a){if(a=a.target.closest("a[href]")){var b=a.getAttribute("href")||"";"#"===b.charAt(0)?(e.anchorCooling=!0,setTimeout(function(){e.anchorCooling=!1},e.options.anchorCooldown),n.send("anchor:"+b.slice(1))):n.send(a.dataset.track||"link:"+b)}}function p(){for(var a=window.scrollY||window.pageYOffset,b=0;b<e.sections.length;b++){var c=e.sections[b].el.getBoundingClientRect();
|
|
26
|
+
-100<=c.top&&c.top<window.innerHeight&&(e.seen[e.sections[b].id]=!0)}b=document.documentElement.scrollHeight-window.innerHeight;if(0<b)for(a=Math.round(a/b*100),b=0;b<e.options.depthMilestones.length;b++)c=e.options.depthMilestones[b],a>=c&&(e.depthHit[c]=!0)}var n=c.Metrics;if(n){var r={sections:"h2[id], h3[id], section[id], [data-section]",minSectionHeight:100,debounce:1E3,initDelay:800,anchorCooldown:1500,depthMilestones:[25,50,75,100],sectionLookback:300,settleTolerance:2,recheckInterval:500,
|
|
27
|
+
trackClicks:!0,tocSelector:null,tocActiveClass:"active",tocSectionSelector:"h2[id]"},e={initialized:!1,options:null,sections:[],tocSections:[],seen:{},depthHit:{},scrollTimer:null,anchorCooling:!1,_prevY:-1};n.ScrollTracker={init:function(c){if(e.initialized)return console.warn("Metrics.ScrollTracker already initialized"),this;var d={},m;for(m in r)r.hasOwnProperty(m)&&(d[m]=r[m]);for(m in c||{})c.hasOwnProperty(m)&&void 0!==c[m]&&(d[m]=c[m]);e.options=d;e.initialized=!0;!n._endpoint&&c&&c.endpoint&&
|
|
28
|
+
n.init({endpoint:c.endpoint,page:c.page,sessionKey:c.sessionKey,sessionId:c.sessionId,extra:c.extra,trackUnload:c.trackUnload});setTimeout(function(){e.sections=k(d.sections);d.tocSelector&&d.tocSectionSelector&&(e.tocSections=k(d.tocSectionSelector));p();window.addEventListener("scroll",a,{passive:!0});d.tocSelector&&(window.addEventListener("scroll",b,{passive:!0}),b())},d.initDelay);d.trackClicks&&document.addEventListener("click",g);return this},send:function(a,b){n.send(a,b)},markSeen:function(a){e.seen[a]=
|
|
29
|
+
!0},getSessionId:function(){return n.getSessionId()},getSections:function(){return e.sections.map(function(a){return{id:a.id,tag:a.tag,ordinal:a.ordinal,snippet:a.snippet}})},getSeen:function(){var a={},b;for(b in e.seen)a[b]=!0;return a},reset:function(){e.seen={};e.depthHit={};e.anchorCooling=!1;clearTimeout(e.scrollTimer);e.sections=k(e.options.sections);p()},destroy:function(){window.removeEventListener("scroll",a);window.removeEventListener("scroll",b);document.removeEventListener("click",g);
|
|
30
|
+
clearTimeout(e.scrollTimer);e.initialized=!1},defaults:r,state:e}}else console.warn("Metrics.ScrollTracker: Metrics core not loaded")})("undefined"!==typeof window?window:this);"use strict";
|
|
31
|
+
(function(c){function k(a){a=document.querySelectorAll(a);for(var b=[],c=0,d=e.options&&e.options.minSectionHeight||0,g=0;g<a.length;g++){var k=a[g];if(!(k.offsetHeight<d)){if(!k.id){var q=(k.textContent||"").trim().slice(0,60).toLowerCase().replace(/[^a-z0-9]+/g,"-").replace(/^-|-$/g,"");k.id=q||"section-"+c}b.push({el:k,id:k.id,tag:k.tagName.toLowerCase(),ordinal:c++,snippet:(k.textContent||"").trim().slice(0,80)})}}return b}function d(){var a=e.options,b=window.scrollY||window.pageYOffset;if(Math.abs(b-
|
|
32
|
+
e._prevY)>a.settleTolerance)e._prevY=b,e.scrollTimer=setTimeout(d,a.recheckInterval);else{var c=window.scrollY||window.pageYOffset;for(var g=e.options,h=null,k=Infinity,q=0;q<e.sections.length;q++){var l=e.sections[q],f=l.el.offsetTop;f<=c+g.sectionLookback&&(f=Math.abs(f-c-180),f<k&&(k=f,h=l))}(c=h)&&!e.seen[c.id]&&(e.seen[c.id]=!0,n.send("section:"+c.id,{tag:c.tag,ordinal:c.ordinal,snippet:c.snippet}));c=document.documentElement.scrollHeight-window.innerHeight;if(0<c)for(b=Math.round(b/c*100),c=
|
|
33
|
+
0;c<a.depthMilestones.length;c++)g=a.depthMilestones[c],b>=g&&!e.depthHit[g]&&(e.depthHit[g]=!0,n.send("depth:"+g+"%"))}}function a(){e.anchorCooling||(clearTimeout(e.scrollTimer),e._prevY=window.scrollY||window.pageYOffset,e.scrollTimer=setTimeout(d,e.options.debounce))}function b(){var a=e.options;if(a.tocSelector){for(var b=window.scrollY||window.pageYOffset,c="",d=0;d<e.tocSections.length;d++)b>=e.tocSections[d].el.offsetTop-160&&(c=e.tocSections[d].id);b=document.querySelectorAll(a.tocSelector);
|
|
34
|
+
for(d=0;d<b.length;d++)b[d].classList.remove(a.tocActiveClass),b[d].getAttribute("href")==="#"+c&&b[d].classList.add(a.tocActiveClass)}}function g(a){if(a=a.target.closest("a[href]")){var b=a.getAttribute("href")||"";"#"===b.charAt(0)?(e.anchorCooling=!0,setTimeout(function(){e.anchorCooling=!1},e.options.anchorCooldown),n.send("anchor:"+b.slice(1))):n.send(a.dataset.track||"link:"+b)}}function p(){for(var a=window.scrollY||window.pageYOffset,b=0;b<e.sections.length;b++){var c=e.sections[b].el.getBoundingClientRect();
|
|
35
|
+
-100<=c.top&&c.top<window.innerHeight&&(e.seen[e.sections[b].id]=!0)}b=document.documentElement.scrollHeight-window.innerHeight;if(0<b)for(a=Math.round(a/b*100),b=0;b<e.options.depthMilestones.length;b++)c=e.options.depthMilestones[b],a>=c&&(e.depthHit[c]=!0)}var n=c.Metrics;if(n){var r={sections:"h2[id], h3[id], section[id], [data-section]",minSectionHeight:100,debounce:1E3,initDelay:800,anchorCooldown:1500,depthMilestones:[25,50,75,100],sectionLookback:300,settleTolerance:2,recheckInterval:500,
|
|
36
|
+
trackClicks:!0,tocSelector:null,tocActiveClass:"active",tocSectionSelector:"h2[id]"},e={initialized:!1,options:null,sections:[],tocSections:[],seen:{},depthHit:{},scrollTimer:null,anchorCooling:!1,_prevY:-1};n.ScrollTracker={init:function(c){if(e.initialized)return console.warn("Metrics.ScrollTracker already initialized"),this;var d={},m;for(m in r)r.hasOwnProperty(m)&&(d[m]=r[m]);for(m in c||{})c.hasOwnProperty(m)&&void 0!==c[m]&&(d[m]=c[m]);e.options=d;e.initialized=!0;!n._endpoint&&c&&c.endpoint&&
|
|
37
|
+
n.init({endpoint:c.endpoint,page:c.page,sessionKey:c.sessionKey,sessionId:c.sessionId,extra:c.extra,trackUnload:c.trackUnload});setTimeout(function(){e.sections=k(d.sections);d.tocSelector&&d.tocSectionSelector&&(e.tocSections=k(d.tocSectionSelector));p();window.addEventListener("scroll",a,{passive:!0});d.tocSelector&&(window.addEventListener("scroll",b,{passive:!0}),b())},d.initDelay);d.trackClicks&&document.addEventListener("click",g);return this},send:function(a,b){n.send(a,b)},markSeen:function(a){e.seen[a]=
|
|
38
|
+
!0},getSessionId:function(){return n.getSessionId()},getSections:function(){return e.sections.map(function(a){return{id:a.id,tag:a.tag,ordinal:a.ordinal,snippet:a.snippet}})},getSeen:function(){var a={},b;for(b in e.seen)a[b]=!0;return a},reset:function(){e.seen={};e.depthHit={};e.anchorCooling=!1;clearTimeout(e.scrollTimer);e.sections=k(e.options.sections);p()},destroy:function(){window.removeEventListener("scroll",a);window.removeEventListener("scroll",b);document.removeEventListener("click",g);
|
|
39
|
+
clearTimeout(e.scrollTimer);e.initialized=!1},defaults:r,state:e}}else console.warn("Metrics.ScrollTracker: Metrics core not loaded")})("undefined"!==typeof window?window:this);"use strict";
|
|
40
|
+
(function(c){function k(a){return a.toLowerCase().replace(/[^a-z0-9]+/g,"-").replace(/^-|-$/g,"").slice(0,60)}function d(a){a=document.querySelectorAll(a);for(var b=[],c=0,d=h.options&&h.options.minSectionHeight||0,x=0;x<a.length;x++){var g=a[x];g.offsetHeight<d||(g.id||(g.id=k(g.textContent||"")||"section-"+c),b.push({el:g,id:g.id,tag:g.tagName.toLowerCase(),ordinal:c++,snippet:(g.textContent||"").trim().slice(0,80)}))}return b}function a(){var b=h.options,c=window.scrollY||window.pageYOffset;if(Math.abs(c-
|
|
41
|
+
h._prevY)>b.settleTolerance)h._prevY=c,h.scrollTimer=setTimeout(a,b.recheckInterval);else{var f=window.scrollY||window.pageYOffset;for(var d=h.options,g=null,e=Infinity,y=0;y<h.sections.length;y++){var k=h.sections[y],p=k.el.offsetTop;p<=f+d.sectionLookback&&(p=Math.abs(p-f-180),p<e&&(e=p,g=k))}(f=g)&&!h.seen[f.id]&&(h.seen[f.id]=!0,m.send("section:"+f.id,{tag:f.tag,ordinal:f.ordinal,snippet:f.snippet}));f=document.documentElement.scrollHeight-window.innerHeight;if(0<f)for(c=Math.round(c/f*100),f=
|
|
42
|
+
0;f<b.depthMilestones.length;f++)d=b.depthMilestones[f],c>=d&&!h.depthHit[d]&&(h.depthHit[d]=!0,m.send("depth:"+d+"%"))}}function b(){h.anchorCooling||(clearTimeout(h.scrollTimer),h._prevY=window.scrollY||window.pageYOffset,h.scrollTimer=setTimeout(a,h.options.debounce))}function g(){var a=h.options;if(a.tocSelector){for(var b=window.scrollY||window.pageYOffset,c="",d=0;d<h.tocSections.length;d++)b>=h.tocSections[d].el.offsetTop-160&&(c=h.tocSections[d].id);b=document.querySelectorAll(a.tocSelector);
|
|
43
|
+
for(d=0;d<b.length;d++)b[d].classList.remove(a.tocActiveClass),b[d].getAttribute("href")==="#"+c&&b[d].classList.add(a.tocActiveClass)}}function p(a){if(a=a.target.closest("a[href]")){var b=a.getAttribute("href")||"";"#"===b.charAt(0)?(h.anchorCooling=!0,setTimeout(function(){h.anchorCooling=!1},h.options.anchorCooldown),m.send("anchor:"+b.slice(1))):m.send(a.dataset.track||"link:"+b)}}function n(){if(h.activeSection&&h.options.trackDwell){var a=Math.round((Date.now()-h.activeSince)/1E3);if(0<a){var b=
|
|
44
|
+
h.dynamicSections[h.activeSection];m.send("dwell:"+h.activeSection,{seconds:a,name:b?b.name:h.activeSection})}h.activeSection=null;h.activeSince=null}}function r(a,b){var c=b.id||a.id||a.getAttribute("data-section")||a.getAttribute("data-track-section")||k(a.textContent||"")||"dyn-"+Object.keys(h.dynamicSections).length;a.id||(a.id=c);h.dynamicSections[c]={el:a,id:c,name:b.name||a.getAttribute("data-section-name")||a.getAttribute("title")||c,snippet:(a.textContent||"").trim().slice(0,80),observedAt:Date.now()};
|
|
45
|
+
window.IntersectionObserver&&!1!==b.autoTrack&&(b=new IntersectionObserver(function(a){a.forEach(function(a){a.isIntersecting&&.3<a.intersectionRatio?t.opened(c):a.isIntersecting||h.activeSection!==c||t.closed(c)})},{threshold:[0,.3]}),b.observe(a),h.dynamicSections[c]._io=b);return c}function e(a){var b=a.querySelectorAll("a[href], li[data-action], li[data-name]");if(b.length){a=new IntersectionObserver(function(a){a.forEach(function(a){if(a.isIntersecting){a=a.target;var b="nav-link:"+(a.getAttribute("data-name")||
|
|
46
|
+
a.getAttribute("data-action")||a.getAttribute("href")||a.textContent.trim().slice(0,40));h._navLinksSeen[b]||(h._navLinksSeen[b]=!0,m.send(b,{text:a.textContent.trim().slice(0,60)}))}})},{root:a,threshold:.5});for(var c=0;c<b.length;c++)a.observe(b[c]);h._navObservers.push(a)}}function w(){if(window.MutationObserver&&h.options.observeDom){var a=h.options.observeRoot||document.body,b=h.options.observeSelector;h._mutationObserver=new MutationObserver(function(a){a.forEach(function(a){a.addedNodes.forEach(function(a){if(1===
|
|
47
|
+
a.nodeType&&(a.matches&&a.matches(b)&&r(a,{}),a.querySelectorAll)){a=a.querySelectorAll(b);for(var c=0;c<a.length;c++)r(a[c],{})}})})});h._mutationObserver.observe(a,{childList:!0,subtree:!0})}}function u(){for(var a=window.scrollY||window.pageYOffset,b=0;b<h.sections.length;b++){var c=h.sections[b].el.getBoundingClientRect();-100<=c.top&&c.top<window.innerHeight&&(h.seen[h.sections[b].id]=!0)}b=document.documentElement.scrollHeight-window.innerHeight;if(0<b)for(a=Math.round(a/b*100),b=0;b<h.options.depthMilestones.length;b++)c=
|
|
48
|
+
h.options.depthMilestones[b],a>=c&&(h.depthHit[c]=!0)}var m=c.Metrics;if(m){var v={sections:"h2[id], h3[id], section[id], [data-section]",minSectionHeight:100,debounce:1E3,initDelay:800,anchorCooldown:1500,depthMilestones:[25,50,75,100],sectionLookback:300,settleTolerance:2,recheckInterval:500,observeDom:!1,observeRoot:null,observeSelector:"[data-section], [data-track-section]",trackDwell:!0,navContainers:null,trackContextuals:!0,trackClicks:!0,tocSelector:null,tocActiveClass:"active",tocSectionSelector:"h2[id]"},
|
|
49
|
+
h={initialized:!1,options:null,sections:[],tocSections:[],seen:{},depthHit:{},scrollTimer:null,anchorCooling:!1,_prevY:-1,dynamicSections:{},activeSection:null,activeSince:null,_mutationObserver:null,_navObservers:[],_navLinksSeen:{}},t={init:function(a){if(h.initialized)return console.warn("Metrics.NavigationTracker already initialized"),this;var c={},f;for(f in v)v.hasOwnProperty(f)&&(c[f]=v[f]);for(f in a||{})a.hasOwnProperty(f)&&void 0!==a[f]&&(c[f]=a[f]);h.options=c;h.initialized=!0;!m._endpoint&&
|
|
50
|
+
a&&a.endpoint&&m.init({endpoint:a.endpoint,page:a.page,sessionKey:a.sessionKey,sessionId:a.sessionId,extra:a.extra,trackUnload:a.trackUnload});setTimeout(function(){h.sections=d(c.sections);c.tocSelector&&c.tocSectionSelector&&(h.tocSections=d(c.tocSectionSelector));u();window.addEventListener("scroll",b,{passive:!0});c.tocSelector&&(window.addEventListener("scroll",g,{passive:!0}),g());c.observeDom&&w();if(c.navContainers){var a=h.options.navContainers;if(a&&window.IntersectionObserver){a=document.querySelectorAll(a);
|
|
51
|
+
for(var f=0;f<a.length;f++)e(a[f])}}},c.initDelay);c.trackClicks&&document.addEventListener("click",p);if(c.trackDwell)m.onVisibilityChange(function(a){a||n()},"NavigationTracker.dwell");return this},observe:function(a,b){return r(a,b||{})},opened:function(a){if(h.activeSection!==a)if(n(),h.activeSection=a,h.activeSince=Date.now(),h.seen[a])m.send("switched:"+a,{name:(h.dynamicSections[a]||{}).name||a});else{h.seen[a]=!0;var b=h.dynamicSections[a];m.send("opened:"+a,{name:b?b.name:a,snippet:b?b.snippet:
|
|
52
|
+
""})}},closed:function(a){h.activeSection===a&&n()},observeNavContainer:function(a){e(a)},send:function(a,b){m.send(a,b)},markSeen:function(a){h.seen[a]=!0},getSessionId:function(){return m.getSessionId()},getSections:function(){return h.sections.map(function(a){return{id:a.id,tag:a.tag,ordinal:a.ordinal,snippet:a.snippet}})},getDynamicSections:function(){var a={},b;for(b in h.dynamicSections){var c=h.dynamicSections[b];a[b]={id:c.id,name:c.name,snippet:c.snippet}}return a},getSeen:function(){var a=
|
|
53
|
+
{},b;for(b in h.seen)a[b]=!0;return a},getActive:function(){return h.activeSection?{id:h.activeSection,since:h.activeSince,elapsed:Math.round((Date.now()-h.activeSince)/1E3)}:null},reset:function(){n();h.seen={};h.depthHit={};h.anchorCooling=!1;h._navLinksSeen={};clearTimeout(h.scrollTimer);for(var a in h.dynamicSections)h.dynamicSections[a]._io&&h.dynamicSections[a]._io.disconnect();h.dynamicSections={};h.activeSection=null;h.activeSince=null;h.sections=d(h.options.sections);u()},destroy:function(){n();
|
|
54
|
+
window.removeEventListener("scroll",b);window.removeEventListener("scroll",g);document.removeEventListener("click",p);clearTimeout(h.scrollTimer);h._mutationObserver&&(h._mutationObserver.disconnect(),h._mutationObserver=null);for(var a in h.dynamicSections)h.dynamicSections[a]._io&&h.dynamicSections[a]._io.disconnect();for(a=0;a<h._navObservers.length;a++)h._navObservers[a].disconnect();h._navObservers=[];h.initialized=!1},defaults:v,state:h};m.NavigationTracker=t;m.SectionTracker=t;m.ScrollTracker=
|
|
55
|
+
t}else console.warn("Metrics.NavigationTracker: Metrics core not loaded")})("undefined"!==typeof window?window:this);"use strict";
|
|
56
|
+
(function(c){function k(a){if(a.id)return a.id;if(a=a.src||a.currentSrc||""){var b=a.match(/(?:youtu\.be\/|youtube\.com\/embed\/|vimeo\.com\/video\/|vimeo\.com\/)([^?&#]+)/);if(b)return b[1];if((a=a.split("/").pop().split("?")[0])&&60>a.length)return a}return"media-"+l._counter++}function d(){this.ranges=[]}function a(a,b,c,g){return{id:a,type:b,el:c,duration:g||0,playing:!1,lastPosition:0,lastCheckpointAt:0,watched:new d,checkpointTimer:null,_lastTimeUpdate:0}}function b(a,b,c){var d={type:a.type,
|
|
57
|
+
position:Math.round(a.lastPosition),duration:Math.round(a.duration),watched:a.watched.total()};if(c)for(var f in c)d[f]=c[f];t.send(b+":"+a.id,d)}function g(a){p(a);a.checkpointTimer=setInterval(function(){a.playing&&b(a,"media-checkpoint")},1E3*l.options.checkpointInterval)}function p(a){a.checkpointTimer&&(clearInterval(a.checkpointTimer),a.checkpointTimer=null)}function n(c){var d=k(c);if(!l.tracked[d]){var f=a(d,"native",c,c.duration||0);l.tracked[d]=f;c.addEventListener("loadedmetadata",function(){f.duration=
|
|
58
|
+
c.duration||0});c.addEventListener("play",function(){f.playing=!0;f.lastPosition=c.currentTime;f._lastTimeUpdate=c.currentTime;b(f,"media-play");g(f)});c.addEventListener("pause",function(){f.playing&&(f.playing=!1,f.watched.add(f._lastTimeUpdate,c.currentTime),f.lastPosition=c.currentTime,p(f),b(f,"media-pause"))});c.addEventListener("ended",function(){f.playing=!1;f.watched.add(f._lastTimeUpdate,c.currentTime);f.lastPosition=c.currentTime;p(f);b(f,"media-ended")});c.addEventListener("seeked",function(){var a=
|
|
59
|
+
f.lastPosition;f.lastPosition=c.currentTime;f._lastTimeUpdate=c.currentTime;b(f,"media-seeked",{from:Math.round(a),to:Math.round(c.currentTime)})});c.addEventListener("timeupdate",function(){f.playing&&c.currentTime>f._lastTimeUpdate&&f.watched.add(f._lastTimeUpdate,c.currentTime);f._lastTimeUpdate=c.currentTime;f.lastPosition=c.currentTime})}}function r(a){if(l._ytApiLoaded)a();else if(l._ytApiLoading)l._ytPendingPlayers.push(a);else{l._ytApiLoading=!0;var b=c.onYouTubeIframeAPIReady;c.onYouTubeIframeAPIReady=
|
|
60
|
+
function(){l._ytApiLoaded=!0;l._ytApiLoading=!1;b&&b();a();for(var c=0;c<l._ytPendingPlayers.length;c++)l._ytPendingPlayers[c]();l._ytPendingPlayers=[]};var d=document.createElement("script");d.src="https://www.youtube.com/iframe_api";document.head.appendChild(d)}}function e(c){var d=c.src||"",f=k(c);if(!l.tracked[f]){if(-1===d.indexOf("enablejsapi"))if(l.options.reloadIframes){var e=-1===d.indexOf("?")?"?":"&";c.src=d+e+"enablejsapi=1&origin="+encodeURIComponent(location.origin)}else{console.warn("Metrics.MediaTracker: YouTube iframe missing enablejsapi=1, set reloadIframes:true to auto-fix. iframe:",
|
|
61
|
+
c);return}c.id||(c.id="yt-"+f);r(function(){if(!l.tracked[f]){var d=a(f,"youtube",c,0);l.tracked[f]=d;var e=new YT.Player(c.id,{events:{onReady:function(a){d.duration=e.getDuration()||0},onStateChange:function(a){var c=e.getCurrentTime()||0;d.lastPosition=c;switch(a.data){case YT.PlayerState.PLAYING:d.playing=!0;d._lastTimeUpdate=c;d.duration=e.getDuration()||d.duration;b(d,"media-play");g(d);d._pollTimer=setInterval(function(){var a=e.getCurrentTime()||0;d.playing&&a>d._lastTimeUpdate&&d.watched.add(d._lastTimeUpdate,
|
|
62
|
+
a);d._lastTimeUpdate=a;d.lastPosition=a},1E3);break;case YT.PlayerState.PAUSED:if(!d.playing)break;d.playing=!1;d.watched.add(d._lastTimeUpdate,c);p(d);clearInterval(d._pollTimer);b(d,"media-pause");break;case YT.PlayerState.ENDED:d.playing=!1,d.watched.add(d._lastTimeUpdate,c),p(d),clearInterval(d._pollTimer),b(d,"media-ended")}}}});d._player=e}})}}function w(a){if(l._vimeoApiLoaded)a();else if(l._vimeoApiLoading)setTimeout(function(){w(a)},200);else{l._vimeoApiLoading=!0;var b=document.createElement("script");
|
|
63
|
+
b.src="https://player.vimeo.com/api/player.js";b.onload=function(){l._vimeoApiLoaded=!0;l._vimeoApiLoading=!1;a()};document.head.appendChild(b)}}function u(c){var d=k(c);l.tracked[d]||w(function(){if(!l.tracked[d]){var f=a(d,"vimeo",c,0);l.tracked[d]=f;var e=new Vimeo.Player(c);f._player=e;e.getDuration().then(function(a){f.duration=a||0});e.on("play",function(a){f.playing=!0;f.lastPosition=a.seconds||0;f._lastTimeUpdate=f.lastPosition;f.duration=a.duration||f.duration;b(f,"media-play");g(f)});e.on("pause",
|
|
64
|
+
function(a){f.playing&&(f.playing=!1,a=a.seconds||0,f.watched.add(f._lastTimeUpdate,a),f.lastPosition=a,p(f),b(f,"media-pause"))});e.on("ended",function(a){f.playing=!1;a=a.seconds||f.duration;f.watched.add(f._lastTimeUpdate,a);f.lastPosition=a;p(f);b(f,"media-ended")});e.on("seeked",function(a){var c=f.lastPosition;f.lastPosition=a.seconds||0;f._lastTimeUpdate=f.lastPosition;b(f,"media-seeked",{from:Math.round(c),to:Math.round(f.lastPosition)})});e.on("timeupdate",function(a){a=a.seconds||0;f.playing&&
|
|
65
|
+
a>f._lastTimeUpdate&&f.watched.add(f._lastTimeUpdate,a);f._lastTimeUpdate=a;f.lastPosition=a})}})}function m(){for(var a=document.querySelectorAll(l.options.mediaSelector),b=0;b<a.length;b++)n(a[b]);a=document.querySelectorAll("iframe[src]");for(b=0;b<a.length;b++){var c=a[b].src||"";/youtube\.com\/embed|youtube-nocookie\.com\/embed/.test(c)?e(a[b]):/player\.vimeo\.com/.test(c)?u(a[b]):/w\.soundcloud\.com\/player/.test(c)?trackSoundCloud(a[b]):/dailymotion\.com\/embed/.test(c)?trackDailymotion(a[b]):
|
|
66
|
+
/open\.spotify\.com\/embed/.test(c)?trackSpotify(a[b]):/player\.twitch\.tv/.test(c)?trackTwitch(a[b]):/muse\.ai\/embed/.test(c)&&trackMuseAi(a[b])}a=document.querySelectorAll('[class*="wistia_embed"], [class*="wistia_async_"]');for(b=0;b<a.length;b++)trackWistia(a[b]);a=document.querySelectorAll(".jwplayer, [data-jw-id]");for(b=0;b<a.length;b++)trackJWPlayer(a[b])}function v(){if(window.MutationObserver&&l.options.observeDom){var a=l.options.observeRoot||document.body;l._mutationObserver=new MutationObserver(function(a){a.forEach(function(a){a.addedNodes.forEach(function(a){if(1===
|
|
67
|
+
a.nodeType){a.matches&&a.matches("video, audio")&&n(a);if("IFRAME"===a.tagName&&a.src){var b=a.src;/youtube\.com\/embed/.test(b)?e(a):/player\.vimeo\.com/.test(b)?u(a):/w\.soundcloud\.com\/player/.test(b)?trackSoundCloud(a):/dailymotion\.com\/embed/.test(b)?trackDailymotion(a):/open\.spotify\.com\/embed/.test(b)?trackSpotify(a):/player\.twitch\.tv/.test(b)?trackTwitch(a):/muse\.ai\/embed/.test(b)&&trackMuseAi(a)}a.className&&/wistia_embed|wistia_async_/.test(a.className)&&trackWistia(a);a.className&&
|
|
68
|
+
/jwplayer/.test(a.className)&&trackJWPlayer(a);if(a.querySelectorAll){b=a.querySelectorAll("video, audio");for(var c=0;c<b.length;c++)n(b[c]);c=a.querySelectorAll("iframe[src]");for(var d=0;d<c.length;d++)b=c[d].src||"",/youtube\.com\/embed/.test(b)?e(c[d]):/player\.vimeo\.com/.test(b)?u(c[d]):/w\.soundcloud\.com\/player/.test(b)?trackSoundCloud(c[d]):/dailymotion\.com\/embed/.test(b)?trackDailymotion(c[d]):/open\.spotify\.com\/embed/.test(b)?trackSpotify(c[d]):/player\.twitch\.tv/.test(b)?trackTwitch(c[d]):
|
|
69
|
+
/muse\.ai\/embed/.test(b)&&trackMuseAi(c[d]);b=a.querySelectorAll('[class*="wistia_embed"], [class*="wistia_async_"]');for(c=0;c<b.length;c++)trackWistia(b[c]);a=a.querySelectorAll(".jwplayer, [data-jw-id]");for(b=0;b<a.length;b++)trackJWPlayer(a[b])}}})})});l._mutationObserver.observe(a,{childList:!0,subtree:!0})}}function h(){for(var a in l.tracked){var c=l.tracked[a];c.playing&&("native"===c.type&&c.el&&(c.watched.add(c._lastTimeUpdate,c.el.currentTime||c.lastPosition),c.lastPosition=c.el.currentTime||
|
|
70
|
+
c.lastPosition),b(c,"media-checkpoint"))}}var t=c.Metrics;if(t){var q={checkpointInterval:10,autoDiscover:!0,mediaSelector:"video, audio",reloadIframes:!1,observeDom:!0,observeRoot:null,checkpointDebounce:1E3},l={initialized:!1,options:null,tracked:{},_counter:0,_mutationObserver:null,_ytApiLoaded:!1,_ytApiLoading:!1,_ytPendingPlayers:[],_vimeoApiLoaded:!1,_vimeoApiLoading:!1};d.prototype.add=function(a,b){if(!(b<=a)){a={start:Math.floor(a),end:Math.ceil(b)};b=[];for(var c=!1,d=0;d<this.ranges.length;d++){var f=
|
|
71
|
+
this.ranges[d];f.end<a.start?b.push(f):f.start>a.end?(c||(b.push(a),c=!0),b.push(f)):(a.start=Math.min(a.start,f.start),a.end=Math.max(a.end,f.end))}c||b.push(a);this.ranges=b}};d.prototype.total=function(){for(var a=0,b=0;b<this.ranges.length;b++)a+=this.ranges[b].end-this.ranges[b].start;return a};t.MediaTracker={init:function(a){if(l.initialized)return console.warn("Metrics.MediaTracker already initialized"),this;var b={},c;for(c in q)q.hasOwnProperty(c)&&(b[c]=q[c]);for(c in a||{})a.hasOwnProperty(c)&&
|
|
72
|
+
void 0!==a[c]&&(b[c]=a[c]);l.options=b;l.initialized=!0;!t._endpoint&&a&&a.endpoint&&t.init({endpoint:a.endpoint,page:a.page,trackUnload:a.trackUnload});b.autoDiscover&&setTimeout(function(){m()},500);b.observeDom&&v();t.onVisibilityChange(function(a){a||h()},"MediaTracker.flush");return this},trackNative:function(a,b){b&&(a.id=b);n(a)},trackYouTube:function(a,b){b&&(a.id=b);e(a)},trackVimeo:function(a,b){b&&(a.id=b);u(a)},trackSoundCloud:function(a,b){b&&(a.id=b);trackSoundCloud(a)},trackWistia:function(a,
|
|
73
|
+
b){b&&(a.id=b);trackWistia(a)},trackJWPlayer:function(a,b){b&&(a.id=b);trackJWPlayer(a)},trackDailymotion:function(a,b){b&&(a.id=b);trackDailymotion(a)},trackSpotify:function(a,b){b&&(a.id=b);trackSpotify(a)},trackTwitch:function(a,b){b&&(a.id=b);trackTwitch(a)},trackMuseAi:function(a,b){b&&(a.id=b);trackMuseAi(a)},getTracked:function(){var a={},b;for(b in l.tracked){var c=l.tracked[b];a[b]={id:c.id,type:c.type,playing:c.playing,position:Math.round(c.lastPosition),duration:Math.round(c.duration),
|
|
74
|
+
watched:c.watched.total()}}return a},flush:h,rescan:m,destroy:function(){for(var a in l.tracked){var b=l.tracked[a];p(b);b._pollTimer&&clearInterval(b._pollTimer)}l.tracked={};l._mutationObserver&&(l._mutationObserver.disconnect(),l._mutationObserver=null);l.initialized=!1},defaults:q,state:l}}else console.warn("Metrics.MediaTracker: Metrics core not loaded")})("undefined"!==typeof window?window:this);
|
|
75
|
+
function loadSoundCloudAPI(c){if(root.SC&&root.SC.Widget)c();else{var k=document.createElement("script");k.src="https://w.soundcloud.com/player/api.js";k.onload=c;document.head.appendChild(k)}}
|
|
76
|
+
function trackSoundCloud(c){var k=genId(c);state.tracked[k]||loadSoundCloudAPI(function(){if(!state.tracked[k]){var d=SC.Widget(c),a=createTracker(k,"soundcloud",c,0);state.tracked[k]=a;d.bind(SC.Widget.Events.READY,function(){d.getDuration(function(b){a.duration=(b||0)/1E3})});d.bind(SC.Widget.Events.PLAY,function(){a.playing=!0;d.getPosition(function(b){a.lastPosition=(b||0)/1E3;a._lastTimeUpdate=a.lastPosition;sendEvent(a,"media-play");startCheckpoints(a)})});d.bind(SC.Widget.Events.PAUSE,function(){a.playing&&
|
|
77
|
+
(a.playing=!1,d.getPosition(function(b){b=(b||0)/1E3;a.watched.add(a._lastTimeUpdate,b);a.lastPosition=b;stopCheckpoints(a);sendEvent(a,"media-pause")}))});d.bind(SC.Widget.Events.FINISH,function(){a.playing=!1;a.watched.add(a._lastTimeUpdate,a.duration);a.lastPosition=a.duration;stopCheckpoints(a);sendEvent(a,"media-ended")});d.bind(SC.Widget.Events.SEEK,function(b){var c=a.lastPosition;a.lastPosition=(b.currentPosition||0)/1E3;a._lastTimeUpdate=a.lastPosition;sendEvent(a,"media-seeked",{from:Math.round(c),
|
|
78
|
+
to:Math.round(a.lastPosition)})});d.bind(SC.Widget.Events.PLAY_PROGRESS,function(b){b=(b.currentPosition||0)/1E3;a.playing&&b>a._lastTimeUpdate&&a.watched.add(a._lastTimeUpdate,b);a._lastTimeUpdate=b;a.lastPosition=b})}})}
|
|
79
|
+
function trackWistia(c){var k=genId(c);if(!state.tracked[k]){var d=c.getAttribute("data-wistia-id")||(c.className.match(/wistia_async_(\w+)/)||[])[1]||k;root._wq=root._wq||[];root._wq.push({id:d,onReady:function(a){if(!state.tracked[k]){var b=createTracker(k,"wistia",c,a.duration()||0);state.tracked[k]=b;b._player=a;a.bind("play",function(){b.playing=!0;b.lastPosition=a.time();b._lastTimeUpdate=b.lastPosition;b.duration=a.duration()||b.duration;sendEvent(b,"media-play");startCheckpoints(b)});a.bind("pause",
|
|
80
|
+
function(){if(b.playing){b.playing=!1;var c=a.time();b.watched.add(b._lastTimeUpdate,c);b.lastPosition=c;stopCheckpoints(b);sendEvent(b,"media-pause")}});a.bind("end",function(){b.playing=!1;b.watched.add(b._lastTimeUpdate,b.duration);b.lastPosition=b.duration;stopCheckpoints(b);sendEvent(b,"media-ended")});a.bind("seek",function(a,c){b.lastPosition=a;b._lastTimeUpdate=a;sendEvent(b,"media-seeked",{from:Math.round(c),to:Math.round(a)})});a.bind("secondchange",function(a){b.playing&&a>b._lastTimeUpdate&&
|
|
81
|
+
b.watched.add(b._lastTimeUpdate,a);b._lastTimeUpdate=a;b.lastPosition=a})}}});root.Wistia||(d=document.createElement("script"),d.src="https://fast.wistia.com/assets/external/E-v1.js",d.async=!0,document.head.appendChild(d))}}
|
|
82
|
+
function trackJWPlayer(c){function k(){if(!root.jwplayer||"function"!==typeof root.jwplayer)return!1;try{var b=jwplayer(a)}catch(p){return!1}if(!b||!b.getState)return!1;var g=createTracker(d,"jwplayer",c,b.getDuration()||0);state.tracked[d]=g;g._player=b;b.on("play",function(){g.playing=!0;g.lastPosition=b.getPosition();g._lastTimeUpdate=g.lastPosition;g.duration=b.getDuration()||g.duration;sendEvent(g,"media-play");startCheckpoints(g)});b.on("pause",function(){if(g.playing){g.playing=!1;var a=b.getPosition();
|
|
83
|
+
g.watched.add(g._lastTimeUpdate,a);g.lastPosition=a;stopCheckpoints(g);sendEvent(g,"media-pause")}});b.on("complete",function(){g.playing=!1;g.watched.add(g._lastTimeUpdate,g.duration);g.lastPosition=g.duration;stopCheckpoints(g);sendEvent(g,"media-ended")});b.on("seek",function(a){g.lastPosition=a.offset;g._lastTimeUpdate=a.offset;sendEvent(g,"media-seeked",{from:Math.round(a.position),to:Math.round(a.offset)})});b.on("time",function(a){var b=a.position;g.playing&&b>g._lastTimeUpdate&&g.watched.add(g._lastTimeUpdate,
|
|
84
|
+
b);g._lastTimeUpdate=b;g.lastPosition=b;g.duration=a.duration||g.duration});return!0}var d=genId(c);if(!state.tracked[d]){var a=c.id||d;k()||setTimeout(function(){k()},2E3)}}
|
|
85
|
+
function trackDailymotion(c){function k(){if(!state.tracked[d]){var a=createTracker(d,"dailymotion",c,0);state.tracked[d]=a;var b=DM.player(c,{events:{playing:function(){a.playing=!0;a.lastPosition=b.currentTime||0;a._lastTimeUpdate=a.lastPosition;a.duration=b.duration||a.duration;sendEvent(a,"media-play");startCheckpoints(a)},pause:function(){if(a.playing){a.playing=!1;var c=b.currentTime||0;a.watched.add(a._lastTimeUpdate,c);a.lastPosition=c;stopCheckpoints(a);sendEvent(a,"media-pause")}},end:function(){a.playing=
|
|
86
|
+
!1;a.watched.add(a._lastTimeUpdate,a.duration);a.lastPosition=a.duration;stopCheckpoints(a);sendEvent(a,"media-ended")},seeking:function(){var c=a.lastPosition;a.lastPosition=b.currentTime||0;a._lastTimeUpdate=a.lastPosition;sendEvent(a,"media-seeked",{from:Math.round(c),to:Math.round(a.lastPosition)})},timeupdate:function(){var c=b.currentTime||0;a.playing&&c>a._lastTimeUpdate&&a.watched.add(a._lastTimeUpdate,c);a._lastTimeUpdate=c;a.lastPosition=c;a.duration=b.duration||a.duration}}});a._player=
|
|
87
|
+
b}}var d=genId(c);state.tracked[d]||function(){if(root.DM&&root.DM.player)k();else{var a=document.createElement("script");a.src="https://api.dmcdn.net/all.js";a.onload=function(){k()};document.head.appendChild(a)}}()}
|
|
88
|
+
function trackSpotify(c){var k=genId(c);if(!state.tracked[k]){var d=createTracker(k,"spotify",c,0);state.tracked[k]=d;window.addEventListener("message",function(a){if(a.data&&a.source===c.contentWindow){try{var b="string"===typeof a.data?JSON.parse(a.data):a.data}catch(p){return}if(b.type&&"playback_update"===b.type){a=b.payload&&b.payload.position||0;a/=1E3;var g=b.payload&&b.payload.isPaused;d.duration=(b.payload&&b.payload.duration||0)/1E3||d.duration;g||d.playing?g&&d.playing?(d.playing=!1,d.watched.add(d._lastTimeUpdate,
|
|
89
|
+
a),d.lastPosition=a,stopCheckpoints(d),sendEvent(d,"media-pause")):!g&&d.playing&&a>d._lastTimeUpdate&&(d.watched.add(d._lastTimeUpdate,a),d._lastTimeUpdate=a,d.lastPosition=a):(d.playing=!0,d.lastPosition=a,d._lastTimeUpdate=a,sendEvent(d,"media-play"),startCheckpoints(d))}}})}}
|
|
90
|
+
function trackTwitch(c){function k(){if(!state.tracked[d]){c.id||(c.id="twitch-"+d);var a=createTracker(d,"twitch",c,0);state.tracked[d]=a;var b=new Twitch.Player(c.id,{});a._player=b;b.addEventListener(Twitch.Player.PLAY,function(){a.playing=!0;a.lastPosition=b.getCurrentTime()||0;a._lastTimeUpdate=a.lastPosition;a.duration=b.getDuration()||a.duration;sendEvent(a,"media-play");startCheckpoints(a);a._pollTimer=setInterval(function(){var c=b.getCurrentTime()||0;a.playing&&c>a._lastTimeUpdate&&a.watched.add(a._lastTimeUpdate,
|
|
91
|
+
c);a._lastTimeUpdate=c;a.lastPosition=c},1E3)});b.addEventListener(Twitch.Player.PAUSE,function(){if(a.playing){a.playing=!1;var c=b.getCurrentTime()||0;a.watched.add(a._lastTimeUpdate,c);a.lastPosition=c;stopCheckpoints(a);clearInterval(a._pollTimer);sendEvent(a,"media-pause")}});b.addEventListener(Twitch.Player.ENDED,function(){a.playing=!1;var c=b.getCurrentTime()||a.duration;a.watched.add(a._lastTimeUpdate,c);a.lastPosition=c;stopCheckpoints(a);clearInterval(a._pollTimer);sendEvent(a,"media-ended")})}}
|
|
92
|
+
var d=genId(c);state.tracked[d]||function(){if(root.Twitch&&root.Twitch.Player)k();else{var a=document.createElement("script");a.src="https://player.twitch.tv/js/embed/v1.js";a.onload=function(){k()};document.head.appendChild(a)}}()}
|
|
93
|
+
function trackMuseAi(c){var k=genId(c);if(!state.tracked[k]){var d=createTracker(k,"museai",c,0);state.tracked[k]=d;window.addEventListener("message",function(a){if(a.data&&a.source===c.contentWindow){try{var b="string"===typeof a.data?JSON.parse(a.data):a.data}catch(g){return}"play"===b.event?(d.playing=!0,d.lastPosition=b.currentTime||0,d._lastTimeUpdate=d.lastPosition,d.duration=b.duration||d.duration,sendEvent(d,"media-play"),startCheckpoints(d)):"pause"===b.event?d.playing&&(d.playing=!1,a=b.currentTime||
|
|
94
|
+
0,d.watched.add(d._lastTimeUpdate,a),d.lastPosition=a,stopCheckpoints(d),sendEvent(d,"media-pause")):"ended"===b.event?(d.playing=!1,d.watched.add(d._lastTimeUpdate,d.duration),d.lastPosition=d.duration,stopCheckpoints(d),sendEvent(d,"media-ended")):"timeupdate"===b.event&&(a=b.currentTime||0,d.duration=b.duration||d.duration,d.playing&&a>d._lastTimeUpdate&&d.watched.add(d._lastTimeUpdate,a),d._lastTimeUpdate=a,d.lastPosition=a)}});try{c.contentWindow.postMessage({method:"addEventListener",value:"play"},
|
|
95
|
+
"*")}catch(a){}try{c.contentWindow.postMessage({method:"addEventListener",value:"pause"},"*")}catch(a){}try{c.contentWindow.postMessage({method:"addEventListener",value:"ended"},"*")}catch(a){}try{c.contentWindow.postMessage({method:"addEventListener",value:"timeupdate"},"*")}catch(a){}}};
|