clarity-js 0.8.23 → 0.8.25
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/build/clarity.extended.js +1 -1
- package/build/clarity.insight.js +1 -1
- package/build/clarity.js +162 -140
- package/build/clarity.min.js +1 -1
- package/build/clarity.module.js +162 -140
- package/build/clarity.performance.js +1 -1
- package/package.json +1 -1
- package/src/clarity.ts +6 -2
- package/src/core/dynamic.ts +41 -0
- package/src/core/history.ts +0 -2
- package/src/core/index.ts +0 -2
- package/src/core/measure.ts +1 -3
- package/src/core/version.ts +1 -1
- package/src/data/metadata.ts +2 -2
- package/src/data/upload.ts +7 -5
- package/src/diagnostic/index.ts +0 -2
- package/src/diagnostic/script.ts +0 -2
- package/src/interaction/change.ts +0 -2
- package/src/interaction/click.ts +0 -2
- package/src/interaction/clipboard.ts +0 -2
- package/src/interaction/encode.ts +1 -0
- package/src/interaction/index.ts +0 -2
- package/src/interaction/input.ts +2 -4
- package/src/interaction/pointer.ts +0 -3
- package/src/interaction/resize.ts +0 -2
- package/src/interaction/scroll.ts +0 -3
- package/src/interaction/selection.ts +0 -2
- package/src/interaction/submit.ts +0 -2
- package/src/interaction/unload.ts +0 -2
- package/src/interaction/visibility.ts +0 -2
- package/src/layout/document.ts +0 -2
- package/src/layout/index.ts +0 -2
- package/src/layout/mutation.ts +0 -4
- package/src/layout/region.ts +0 -2
- package/src/performance/index.ts +0 -2
- package/src/performance/observer.ts +0 -3
- package/types/data.d.ts +2 -1
- package/types/interaction.d.ts +1 -0
- package/types/performance.d.ts +0 -34
|
@@ -1 +1 @@
|
|
|
1
|
-
!function(){"use strict";var t=Object.freeze({__proto__:null,get queue(){return Vt},get start(){return Xt},get stop(){return Bt},get track(){return Pt}}),n=Object.freeze({__proto__:null,get check(){return Kt},get compute(){return $t},get data(){return qt},get start(){return Ft},get stop(){return tn},get trigger(){return Qt}}),e=Object.freeze({__proto__:null,get compute(){return cn},get data(){return nn},get log(){return un},get reset(){return sn},get start(){return an},get stop(){return on},get updates(){return en}}),r=Object.freeze({__proto__:null,get callback(){return In},get callbacks(){return dn},get clear(){return En},get consent(){return wn},get consentv2(){return kn},get data(){return ln},get electron(){return pn},get id(){return bn},get metadata(){return yn},get save(){return Tn},get shortid(){return xn},get start(){return gn},get stop(){return mn}}),a=Object.freeze({__proto__:null,get data(){return qn},get envelope(){return Hn},get start(){return Dn},get stop(){return Rn}}),o={projectId:null,delay:1e3,lean:!1,lite:!1,track:!0,content:!0,drop:[],mask:[],unmask:[],regions:[],cookies:[],fraud:!0,checksum:[],report:null,upload:null,fallback:null,upgrade:null,action:null,dob:null,delayDom:!1,throttleDom:!0,conversions:!1,includeSubdomains:!0};function i(t){return window.Zone&&"__symbol__"in window.Zone?window.Zone.__symbol__(t):t}var u=0;function c(){return performance.now()+performance.timeOrigin}function s(t){void 0===t&&(t=null);var n=0===u?c():u,e=t&&t.timeStamp>0?t.timeStamp:performance.now(),r=t&&t.view?t.view.performance.timeOrigin:performance.timeOrigin;return Math.max(Math.round(e+r-n),0)}var l="0.8.23";var d=/\S/gi,p=255,f=!0,h=null,v=null,g=null;function m(t,n,e,r,a){if(void 0===r&&(r=!1),t){if("input"==n&&("checkbox"===a||"radio"===a))return t;switch(e){case 0:return t;case 1:switch(n){case"*T":case"value":case"placeholder":case"click":return function(t){var n=-1,e=0,r=!1,a=!1,o=!1,i=null;_();for(var u=0;u<t.length;u++){var c=t.charCodeAt(u);if(r=r||c>=48&&c<=57,a=a||64===c,o=9===c||10===c||13===c||32===c,0===u||u===t.length-1||o){if(r||a){null===i&&(i=t.split(""));var s=t.substring(n+1,o?u:u+1);s=f&&null!==g?s.match(g)?s:k(s,"▪","▫"):w(s),i.splice(n+1-e,s.length,s),e+=s.length-1}o&&(r=!1,a=!1,n=u)}}return i?i.join(""):t}(t);case"input":case"change":return S(t)}return t;case 2:case 3:switch(n){case"*T":case"data-":return r?b(t):w(t);case"src":case"srcset":case"title":case"alt":return 3===e?"src"===n&&(null==t?void 0:t.startsWith("blob:"))?"blob:":"":t;case"value":case"click":case"input":case"change":return S(t);case"placeholder":return w(t)}break;case 4:switch(n){case"*T":case"data-":return r?b(t):w(t);case"value":case"input":case"click":case"change":return Array(5).join("•");case"checksum":return""}break;case 5:switch(n){case"*T":case"data-":return k(t,"▪","▫");case"value":case"input":case"click":case"change":return Array(5).join("•");case"checksum":case"src":case"srcset":case"alt":case"title":return""}}}return t}function y(t,n,e){void 0===n&&(n=!1),void 0===e&&(e=!1);var r=t;if(n)r="".concat("https://").concat("Electron");else{var a=o.drop;if(a&&a.length>0&&t&&t.indexOf("?")>0){var i=t.split("?"),u=i[0],c=i[1];r=u+"?"+c.split("&").map((function(t){return a.some((function(n){return 0===t.indexOf("".concat(n,"="))}))?"".concat(t.split("=")[0],"=").concat("*na*"):t})).join("&")}}return e&&(r=r.substring(0,p)),r}function b(t){var n=t.trim();if(n.length>0){var e=n[0],r=t.indexOf(e),a=t.substr(0,r),o=t.substr(r+n.length);return"".concat(a).concat(n.length.toString(36)).concat(o)}return t}function w(t){return t.replace(d,"•")}function k(t,n,e){return _(),t?t.replace(v,n).replace(h,e):t}function S(t){for(var n=5*(Math.floor(t.length/5)+1),e="",r=0;r<n;r++)e+=r>0&&r%5==0?" ":"•";return e}function _(){if(f&&null===h)try{h=new RegExp("\\p{N}","gu"),v=new RegExp("\\p{L}","gu"),g=new RegExp("\\p{Sc}","gu")}catch(t){f=!1}}var E=[],I=null;function T(){}var O=[];function M(){}function x(){}function N(){}var j=Object.freeze({__proto__:null,checkDocumentStyles:function(t){},compute:function(){},data:I,hashText:M,keys:O,log:T,observe:function(){},reset:function(){},sheetAdoptionState:[],sheetUpdateState:[],start:function(){},state:E,stop:function(){},track:N,trigger:x}),C=null,z=!0;function A(t){q(t.analytics_Storage?1:0),C=t}function P(){q(2)}function q(t){un(36,t.toString())}function D(t){C=t,Gt(47)}function R(){z&&(Gt(47),z=!1)}var H=Object.freeze({__proto__:null,compute:R,config:A,consent:P,consentv2:D,get data(){return C},start:function(){z=!0},stop:function(){z=!0}}),U=null;function L(t,n){le()&&t&&"string"==typeof t&&t.length<255&&(U=n&&"string"==typeof n&&n.length<255?{key:t,value:n}:{value:t},Gt(24))}var X,V=null,B=null;function Y(t){t in V||(V[t]=0),t in B||(B[t]=0),V[t]++,B[t]++}function W(t,n){null!==n&&(t in V||(V[t]=0),t in B||(B[t]=0),V[t]+=n,B[t]+=n)}function Z(t,n){null!==n&&!1===isNaN(n)&&(t in V||(V[t]=0),(n>V[t]||0===V[t])&&(B[t]=n,V[t]=n))}function J(t,n,e){return window.setTimeout(Xn(t),n,e)}function G(t){return window.clearTimeout(t)}var F=0,K=0,Q=null;function $(){Q&&G(Q),Q=J(tt,K),F=s()}function tt(){var t=s();X={gap:t-F},Gt(25),X.gap<3e5?Q=J(tt,K):ue&&(L("clarity","suspend"),Ae(),["mousemove","touchstart"].forEach((function(t){return Bn(document,t,de)})),["resize","scroll","pageshow"].forEach((function(t){return Bn(window,t,de)})))}var nt=Object.freeze({__proto__:null,get data(){return X},reset:$,start:function(){K=6e4,F=0},stop:function(){G(Q),F=0,K=0}}),et=null;function rt(t){le()&&o.lean&&(o.lean=!1,et={key:t},In(),Tn(),o.upgrade&&o.upgrade(t),Gt(3),o.lite)}var at=Object.freeze({__proto__:null,get data(){return et},start:function(){!o.lean&&o.upgrade&&o.upgrade("Config"),et=null},stop:function(){et=null},upgrade:rt});function ot(t,n,e,r){return new(e||(e=Promise))((function(a,o){function i(t){try{c(r.next(t))}catch(t){o(t)}}function u(t){try{c(r.throw(t))}catch(t){o(t)}}function c(t){var n;t.done?a(t.value):(n=t.value,n instanceof e?n:new e((function(t){t(n)}))).then(i,u)}c((r=r.apply(t,n||[])).next())}))}function it(t,n){var e,r,a,o,i={label:0,sent:function(){if(1&a[0])throw a[1];return a[1]},trys:[],ops:[]};return o={next:u(0),throw:u(1),return:u(2)},"function"==typeof Symbol&&(o[Symbol.iterator]=function(){return this}),o;function u(u){return function(c){return function(u){if(e)throw new TypeError("Generator is already executing.");for(;o&&(o=0,u[0]&&(i=0)),i;)try{if(e=1,r&&(a=2&u[0]?r.return:u[0]?r.throw||((a=r.return)&&a.call(r),0):r.next)&&!(a=a.call(r,u[1])).done)return a;switch(r=0,a&&(u=[2&u[0],a.value]),u[0]){case 0:case 1:a=u;break;case 4:return i.label++,{value:u[1],done:!1};case 5:i.label++,r=u[1],u=[0];continue;case 7:u=i.ops.pop(),i.trys.pop();continue;default:if(!(a=i.trys,(a=a.length>0&&a[a.length-1])||6!==u[0]&&2!==u[0])){i=0;continue}if(3===u[0]&&(!a||u[1]>a[0]&&u[1]<a[3])){i.label=u[1];break}if(6===u[0]&&i.label<a[1]){i.label=a[1],a=u;break}if(a&&i.label<a[2]){i.label=a[2],i.ops.push(u);break}a[2]&&i.ops.pop(),i.trys.pop();continue}u=n.call(t,i)}catch(t){u=[6,t],r=0}finally{e=a=0}if(5&u[0])throw u[1];return{value:u[0]?u[1]:void 0,done:!0}}([u,c])}}}var ut=null;function ct(t,n){lt(t,"string"==typeof n?[n]:n)}function st(t,n,e,r){return void 0===n&&(n=null),void 0===e&&(e=null),void 0===r&&(r=null),ot(this,void 0,void 0,(function(){var a,o;return it(this,(function(i){switch(i.label){case 0:return o={},[4,ft(t)];case 1:return o.userId=i.sent(),o.userHint=r||((u=t)&&u.length>=5?"".concat(u.substring(0,2)).concat(k(u.substring(2),"*","*")):k(u,"*","*")),lt("userId",[(a=o).userId]),lt("userHint",[a.userHint]),lt("userType",[ht(t)]),n&&(lt("sessionId",[n]),a.sessionId=n),e&&(lt("pageId",[e]),a.pageId=e),[2,a]}var u}))}))}function lt(t,n){if(le()&&t&&n&&"string"==typeof t&&t.length<255){for(var e=(t in ut?ut[t]:[]),r=0;r<n.length;r++)"string"==typeof n[r]&&n[r].length<255&&e.push(n[r]);ut[t]=e}}function dt(){Gt(34)}function pt(){ut={}}function ft(t){return ot(this,void 0,void 0,(function(){var n;return it(this,(function(e){switch(e.label){case 0:return e.trys.push([0,4,,5]),crypto&&t?[4,crypto.subtle.digest("SHA-256",(new TextEncoder).encode(t))]:[3,2];case 1:return n=e.sent(),[2,Array.prototype.map.call(new Uint8Array(n),(function(t){return("00"+t.toString(16)).slice(-2)})).join("")];case 2:return[2,""];case 3:return[3,5];case 4:return e.sent(),[2,""];case 5:return[2]}}))}))}function ht(t){return t&&t.indexOf("@")>0?"email":"string"}var vt="CompressionStream"in window;function gt(t){return ot(this,void 0,void 0,(function(){var n,e;return it(this,(function(r){switch(r.label){case 0:return r.trys.push([0,3,,4]),vt?(n=new ReadableStream({start:function(n){return ot(this,void 0,void 0,(function(){return it(this,(function(e){return n.enqueue(t),n.close(),[2]}))}))}}).pipeThrough(new TextEncoderStream).pipeThrough(new window.CompressionStream("gzip")),e=Uint8Array.bind,[4,mt(n)]):[3,2];case 1:return[2,new(e.apply(Uint8Array,[void 0,r.sent()]))];case 2:return[3,4];case 3:return r.sent(),[3,4];case 4:return[2,null]}}))}))}function mt(t){return ot(this,void 0,void 0,(function(){var n,e,r,a,o;return it(this,(function(i){switch(i.label){case 0:n=t.getReader(),e=[],r=!1,a=[],i.label=1;case 1:return r?[3,3]:[4,n.read()];case 2:return o=i.sent(),r=o.done,a=o.value,r?[2,e]:(e.push.apply(e,a),[3,1]);case 3:return[2,e]}}))}))}var yt=null;function bt(t){try{if(!yt)return;var n=function(t){try{return JSON.parse(t)}catch(t){return[]}}(t);n.forEach((function(t){yt(t)}))}catch(t){}}var wt=[j,e,Object.freeze({__proto__:null,compute:dt,get data(){return ut},identify:st,reset:pt,set:ct,start:function(){pt()},stop:function(){pt()}}),n,j,H,r,a,t,nt,at,j];function kt(){V={},B={},Y(5),wt.forEach((function(t){return Xn(t.start)()}))}function St(){wt.slice().reverse().forEach((function(t){return Xn(t.stop)()})),V={},B={}}function _t(){dt(),cn(),Gt(0),$t(),R()}function Et(t,n,e){return"".concat(t,"=").concat(m(n,0===t.indexOf("data-")?"data-":t,e))}var It=[],Tt=1,Ot=null;function Mt(){It=[],function(t){var n=[t];for(;n.length>0;){for(var e=null,r=null,a=null,o=n.shift(),i=o.firstChild,u=o.parentElement?o.parentElement:o.parentNode?o.parentNode:null;i;)n.push(i),i=i.nextSibling;switch(o.nodeType){case Node.DOCUMENT_TYPE_NODE:var c=o;r="*D",e={name:c.name,publicId:c.publicId,systemId:c.systemId};break;case Node.TEXT_NODE:a=o.nodeValue,r=Ot.get(u)?"*T":r;break;case Node.ELEMENT_NODE:var s=o;e=xt(s),r=["NOSCRIPT","SCRIPT","STYLE"].indexOf(s.tagName)<0?s.tagName:r}Nt(o,u,{tag:r,attributes:e,value:a})}}(document),function(t){ot(this,void 0,void 0,(function(){var n,e,r,a,o,i,u,c,l,d,p,f,h;return it(this,(function(v){switch(n=s(),e=[n,t],t){case 8:r=I,e.push(r.width),e.push(r.height),r.width,r.height,Vt(e);break;case 43:if((a=It).length>0){for(o=0,i=a;o<i.length;o++)for(u=i[o],c=u.metadata.privacy,l=u.data,d=0,p=["tag","attributes","value"];d<p.length;d++)if(l[f=p[d]])switch(f){case"tag":e.push(u.id),u.parent&&e.push(u.parent),u.previous&&e.push(u.previous),e.push(l[f]);break;case"attributes":for(h in l[f])void 0!==l[f][h]&&e.push(Et(h,l[f][h],c));break;case"value":e.push(m(l[f],l.tag,c))}Vt(function(t){for(var n=[],e={},r=0,a=null,o=0;o<t.length;o++)if("string"==typeof t[o]){var i=t[o],u=e[i]||-1;u>=0?a?a.push(u):(a=[u],n.push(a),r++):(a=null,n.push(i),e[i]=r++)}else a=null,n.push(t[o]),r++;return n}(e),!0)}}return[2]}))}))}(43)}function xt(t){var n={},e=t.attributes;if(e&&e.length>0)for(var r=0;r<e.length;r++)n[e[r].name]=e[r].value;return n}function Nt(t,n,e){if(t&&e&&e.tag){var r=function(t){return null===t?null:Ot.has(t)?Ot.get(t):(Ot.set(t,Tt),Tt++)}(t),a=n?Ot.get(n):null,o=t.previousSibling?Ot.get(t.previousSibling):null;It.push({id:r,parent:a,previous:o,children:[],data:e,selector:null,hash:null,region:null,metadata:{active:!0,suspend:!1,privacy:5,position:null,fraud:null,size:null}})}}var jt,Ct,zt,At,Pt,qt,Dt=0,Rt=0,Ht=null,Ut=0,Lt=!1;function Xt(){At=!0,Dt=0,Rt=0,Lt=!1,Ut=0,jt=[],Ct=[],zt={},Pt=null}function Vt(t,n){if(void 0===n&&(n=!0),At){var e=s(),r=t.length>1?t[1]:null,a=JSON.stringify(t);switch(o.lean?!Lt&&Rt+a.length>10485760&&(Lt=!0):Lt=!1,r){case 5:if(Lt)break;Dt+=a.length;case 37:case 6:case 43:case 45:case 46:if(Lt)break;Rt+=a.length,jt.push(a);break;default:Ct.push(a)}Y(25);var i=function(){var t=!1===o.lean&&Dt>0?100:qn.sequence*o.delay;return"string"==typeof o.upload?Math.max(Math.min(t,3e4),100):o.delay}();e-Ut>2*i&&(G(Ht),Ht=null),n&&null===Ht&&(25!==r&&$(),Ht=J(Yt,i),Ut=e,Kt(Rt))}}function Bt(){G(Ht),Yt(!0),Dt=0,Rt=0,Lt=!1,Ut=0,jt=[],Ct=[],zt={},Pt=null,At=!1}function Yt(t){return void 0===t&&(t=!1),ot(this,void 0,void 0,(function(){var n,e,r,a,i,u,c,s;return it(this,(function(l){switch(l.label){case 0:return At?(Ht=null,(n=!1===o.lean&&Rt>0&&(Rt<1048576||qn.sequence>0))&&Z(1,1),_t(),e=!0===t,qn?(r=JSON.stringify(Hn(e)),a="[".concat(Ct.join(),"]"),i=n?"[".concat(jt.join(),"]"):"",u=function(t){return t.p.length>0?'{"e":'.concat(t.e,',"a":').concat(t.a,',"p":').concat(t.p,"}"):'{"e":'.concat(t.e,',"a":').concat(t.a,"}")}({e:r,a:a,p:i}),e?(s=null,[3,3]):[3,1]):[2]):[2];case 1:return[4,gt(u)];case 2:s=l.sent(),l.label=3;case 3:return W(2,(c=s)?c.length:u.length),Wt(u,c,qn.sequence,e),Ct=[],n&&(jt=[],Rt=0,Dt=0,Lt=!1),[2]}}))}))}function Wt(t,n,e,r){var a;if(void 0===r&&(r=!1),"string"==typeof o.upload){var i=o.upload,u=!1;if(r&&navigator&&navigator.sendBeacon)try{(u=navigator.sendBeacon.bind(navigator)(i,t))?Jt(e):Ln(new Error("".concat("BeaconError",": ").concat(t.length)))}catch(n){Ln(new Error("".concat("BeaconError",": ").concat(null===(a=null==n?void 0:n.message)||void 0===a?void 0:a.substring(0,50)," : ").concat(t.length)))}if(!1===u){e in zt?zt[e].attempts++:zt[e]={data:t,attempts:1};var c=new XMLHttpRequest;c.open("POST",i,!0),c.timeout=15e3,c.ontimeout=function(){Ln(new Error("".concat("Timeout"," : ").concat(i)))},null!==e&&(c.onreadystatechange=function(){Xn(Zt)(c,e)}),c.withCredentials=!0,n?(c.setRequestHeader("Accept","application/x-clarity-gzip"),c.send(n)):c.send(t)}}else if(o.upload){(0,o.upload)(t),Jt(e)}}function Zt(t,n){var e=zt[n];t&&4===t.readyState&&e&&((t.status<200||t.status>208)&&e.attempts<=1?t.status>=400&&t.status<500?Qt(6):(0===t.status&&(o.upload=o.fallback?o.fallback:o.upload),Pt={sequence:n,attempts:e.attempts,status:t.status},Gt(2),Wt(e.data,null,n)):(Pt={sequence:n,attempts:e.attempts,status:t.status},e.attempts>1&&Gt(2),200===t.status&&t.responseText&&function(t){for(var n=t&&t.length>0?t.split("\n"):[],e=0,r=n;e<r.length;e++){var a=r[e],i=a&&a.length>0?a.split(/ (.*)/):[""];switch(i[0]){case"END":Qt(6);break;case"UPGRADE":rt("Auto");break;case"ACTION":o.action&&i.length>1&&o.action(i[1]);break;case"EXTRACT":i.length>1&&i[1];break;case"SIGNAL":i.length>1&&bt(i[1]);break;case"SNAPSHOT":o.lean=!1,Mt()}}}(t.responseText),0===t.status&&(Wt(e.data,null,n,!0),Qt(3)),t.status>=200&&t.status<=208&&Jt(n),delete zt[n]))}function Jt(t){1===t&&(Tn(),In())}function Gt(t){var n=[s(),t];switch(t){case 4:var e=E;e&&e.data&&((n=[e.time,e.event]).push(e.data.visible),n.push(e.data.docWidth),n.push(e.data.docHeight),n.push(e.data.screenWidth),n.push(e.data.screenHeight),n.push(e.data.scrollX),n.push(e.data.scrollY),n.push(e.data.pointerX),n.push(e.data.pointerY),n.push(e.data.activityTime),n.push(e.data.scrollTime),n.push(e.data.pointerTime),n.push(e.data.moveX),n.push(e.data.moveY),n.push(e.data.moveTime),n.push(e.data.downX),n.push(e.data.downY),n.push(e.data.downTime),n.push(e.data.upX),n.push(e.data.upY),n.push(e.data.upTime),n.push(e.data.pointerPrevX),n.push(e.data.pointerPrevY),n.push(e.data.pointerPrevTime),Vt(n,!1));break;case 25:n.push(X.gap),Vt(n);break;case 35:n.push(qt.check),Vt(n,!1);break;case 3:n.push(et.key),Vt(n);break;case 2:n.push(Pt.sequence),n.push(Pt.attempts),n.push(Pt.status),Vt(n,!1);break;case 24:U.key&&n.push(U.key),n.push(U.value),Vt(n);break;case 34:var r=Object.keys(ut);if(r.length>0){for(var a=0,o=r;a<o.length;a++){var i=o[a];n.push(i),n.push(ut[i])}pt(),Vt(n,!1)}break;case 0:var u=Object.keys(B);if(u.length>0){for(var c=0,l=u;c<l.length;c++){var d=l[c],p=parseInt(d,10);n.push(p),n.push(Math.round(B[d]))}B={},Vt(n,!1)}break;case 1:var f=Object.keys(en);if(f.length>0){for(var h=0,v=f;h<v.length;h++){var g=v[h];p=parseInt(g,10);n.push(p),n.push(en[g])}sn(),Vt(n,!1)}break;case 36:var m=Object.keys(I);if(m.length>0){for(var y=0,b=m;y<b.length;y++){var w=b[y];p=parseInt(w,10);n.push(p),n.push([].concat.apply([],I[w]))}Vt(n,!1)}break;case 40:O.forEach((function(t){n.push(t);var e=[];for(var r in I[t]){var a=parseInt(r,10);e.push(a),e.push(I[t][r])}n.push(e)})),Vt(n,!1);break;case 47:n.push(C.source),n.push(C.ad_Storage),n.push(C.analytics_Storage),Vt(n,!1)}}function Ft(){qt={check:0}}function Kt(t){if(0===qt.check){var n=qt.check;n=qn.sequence>=128?1:n,n=qn.pageNum>=128?7:n,n=s()>72e5?2:n,(n=t>10485760?2:n)!==qt.check&&Qt(n)}}function Qt(t){qt.check=t,5!==t&&(En(),Ae())}function $t(){0!==qt.check&&Gt(35)}function tn(){qt=null}var nn=null,en=null,rn=!1;function an(){nn={},en={},rn=!1}function on(){nn={},en={},rn=!1}function un(t,n){if(n&&(n="".concat(n),t in nn||(nn[t]=[]),nn[t].indexOf(n)<0)){if(nn[t].length>128)return void(rn||(rn=!0,Qt(5)));nn[t].push(n),t in en||(en[t]=[]),en[t].push(n)}}function cn(){Gt(1)}function sn(){en={},rn=!1}var ln=null,dn=[],pn=0,fn=null,hn=null,vn={ad_Storage:"denied",analytics_Storage:"denied"};function gn(){var t,n,e;fn=null;var r=navigator&&"userAgent"in navigator?navigator.userAgent:"",a=null!==(e="undefined"!=typeof Intl&&(null===(n=null===(t=null===Intl||void 0===Intl?void 0:Intl.DateTimeFormat())||void 0===t?void 0:t.resolvedOptions())||void 0===n?void 0:n.timeZone))&&void 0!==e?e:"",i=(new Date).getTimezoneOffset().toString(),u=window.location.ancestorOrigins?Array.from(window.location.ancestorOrigins).toString():"",c=document&&document.title?document.title:"";pn=r.indexOf("Electron")>0?1:0;var s=function(){var t={session:xn(),ts:Math.round(Date.now()),count:1,upgrade:null,upload:""},n=Cn("_clsk",!o.includeSubdomains);if(n){var e=n.includes("^")?n.split("^"):n.split("|");e.length>=5&&t.ts-Nn(e[1])<18e5&&(t.session=e[0],t.count=Nn(e[2])+1,t.upgrade=Nn(e[3]),t.upload=e.length>=6?"".concat("https://").concat(e[5],"/").concat(e[4]):"".concat("https://").concat(e[4]))}return t}(),l=jn(),d=o.projectId||function(t,n){void 0===n&&(n=null);for(var e,r=5381,a=r,o=0;o<t.length;o+=2)r=(r<<5)+r^t.charCodeAt(o),o+1<t.length&&(a=(a<<5)+a^t.charCodeAt(o+1));return e=Math.abs(r+11579*a),(n?e%Math.pow(2,n):e).toString(36)}(location.host);ln={projectId:d,userId:l.id,sessionId:s.session,pageNum:s.count},o.lean=o.track&&null!==s.upgrade?0===s.upgrade:o.lean,o.upload=o.track&&"string"==typeof o.upload&&s.upload&&s.upload.length>"https://".length?s.upload:o.upload,un(0,r),un(3,c),un(1,y(location.href,!!pn)),un(2,document.referrer),un(15,function(){var t=xn();if(o.track&&On(window,"sessionStorage")){var n=sessionStorage.getItem("_cltk");t=n||t,sessionStorage.setItem("_cltk",t)}return t}()),un(16,document.documentElement.lang),un(17,document.dir),un(26,"".concat(window.devicePixelRatio)),un(28,l.dob.toString()),un(29,l.version.toString()),un(33,u),un(34,a),un(35,i),Z(0,s.ts),Z(1,0),Z(35,pn);var p,f=null===window||void 0===window?void 0:window.Zone;f&&"__symbol__"in f&&Z(39,1),navigator&&(un(9,navigator.language),Z(33,navigator.hardwareConcurrency),Z(32,navigator.maxTouchPoints),Z(34,Math.round(navigator.deviceMemory)),(p=navigator.userAgentData)&&p.getHighEntropyValues?p.getHighEntropyValues(["model","platform","platformVersion","uaFullVersion"]).then((function(t){var n;un(22,t.platform),un(23,t.platformVersion),null===(n=t.brands)||void 0===n||n.forEach((function(t){un(24,t.name+"~"+t.version)})),un(25,t.model),Z(27,t.mobile?1:0)})):un(22,navigator.platform)),screen&&(Z(14,Math.round(screen.width)),Z(15,Math.round(screen.height)),Z(16,Math.round(screen.colorDepth)));for(var h=0,v=o.cookies;h<v.length;h++){var g=v[h],m=Cn(g);m&&ct(g,m)}A(Sn(hn={ad_Storage:o.track?"granted":"denied",analytics_Storage:o.track?"granted":"denied"},0)),Mn(l)}function mn(){fn=null,ln=null,hn=null,dn.forEach((function(t){t.called=!1}))}function yn(t,n,e,r){void 0===n&&(n=!0),void 0===e&&(e=!1),void 0===r&&(r=!1);var a=o.lean?0:1,i=!1;ln&&(a||!1===n)&&(t(ln,!o.lean,r?hn:void 0),i=!0),!e&&i||dn.push({callback:t,wait:n,recall:e,called:i,consentInfo:r})}function bn(){return ln?[ln.userId,ln.sessionId,ln.pageNum].join("."):""}function wn(t){void 0===t&&(t=!0),t?(kn({ad_Storage:"granted",analytics_Storage:"granted"}),P()):kn()}function kn(t,n){void 0===t&&(t=vn),void 0===n&&(n=1),hn={ad_Storage:_n(t.ad_Storage),analytics_Storage:_n(t.analytics_Storage)},In(!0);var e=Sn(hn,n);if(!e.analytics_Storage)return o.track=!1,An("_clsk","",-Number.MAX_VALUE),An("_clck","",-Number.MAX_VALUE),Ae(),void window.setTimeout(ze,250);le()&&(o.track=!0,Mn(jn(),1),Tn(),D(e),P())}function Sn(t,n){return{source:n,ad_Storage:"granted"===t.ad_Storage?1:0,analytics_Storage:"granted"===t.analytics_Storage?1:0}}function _n(t){return"string"==typeof t?t.toLowerCase():"denied"}function En(){An("_clsk","",0)}function In(t){void 0===t&&(t=!1),function(t,n){void 0===n&&(n=!1);if(dn.length>0)for(var e=0;e<dn.length;e++){var r=dn[e];r.callback&&(!r.called&&!n||r.consentInfo&&n)&&(!r.wait||t)&&(r.callback(ln,!o.lean,r.consentInfo?hn:void 0),r.called=!0,r.recall||(dn.splice(e,1),e--))}}(o.lean?0:1,t)}function Tn(){if(ln&&o.track){var t=Math.round(Date.now()),n=o.upload&&"string"==typeof o.upload?o.upload.replace("https://",""):"",e=o.lean?0:1;An("_clsk",[ln.sessionId,t,ln.pageNum,e,n].join("|"),1)}}function On(t,n){try{return!!t[n]}catch(t){return!1}}function Mn(t,n){void 0===n&&(n=null),n=null===n?t.consent:n;var e=Math.ceil((Date.now()+31536e6)/864e5),r=0===t.dob?null===o.dob?0:o.dob:t.dob;(null===t.expiry||Math.abs(e-t.expiry)>=1||t.consent!==n||t.dob!==r)&&An("_clck",[ln.userId,2,e.toString(36),n,r].join("|"),365)}function xn(){var t=Math.floor(Math.random()*Math.pow(2,32));return window&&window.crypto&&window.crypto.getRandomValues&&Uint32Array&&(t=window.crypto.getRandomValues(new Uint32Array(1))[0]),t.toString(36)}function Nn(t,n){return void 0===n&&(n=10),parseInt(t,n)}function jn(){var t={id:xn(),version:0,expiry:null,consent:0,dob:0},n=Cn("_clck",!o.includeSubdomains);if(n&&n.length>0){var e=n.includes("^")?n.split("^"):n.split("|");e.length>1&&(t.version=Nn(e[1])),e.length>2&&(t.expiry=Nn(e[2],36)),e.length>3&&1===Nn(e[3])&&(t.consent=1),e.length>4&&Nn(e[1])>1&&(t.dob=Nn(e[4])),o.track=o.track||1===t.consent,t.id=o.track?e[0]:t.id}return t}function Cn(t,n){var e;if(void 0===n&&(n=!1),On(document,"cookie")){var r=document.cookie.split(";");if(r)for(var a=0;a<r.length;a++){var o=r[a].split("=");if(o.length>1&&o[0]&&o[0].trim()===t){for(var i=zn(o[1]),u=i[0],c=i[1];u;)u=(e=zn(c))[0],c=e[1];return n?c.endsWith("".concat("~","1"))?c.substring(0,c.length-2):null:c}}}return null}function zn(t){try{var n=decodeURIComponent(t);return[n!=t,n]}catch(t){}return[!1,t]}function An(t,n,e){if((o.track||""==n)&&(navigator&&navigator.cookieEnabled||On(document,"cookie"))){var r=function(t){return encodeURIComponent(t)}(n),a=new Date;a.setDate(a.getDate()+e);var i=a?"expires="+a.toUTCString():"",u="".concat(t,"=").concat(r).concat(";").concat(i).concat(";path=/");try{if(null===fn){for(var c=location.hostname?location.hostname.split("."):[],s=c.length-1;s>=0;s--)if(fn=".".concat(c[s]).concat(fn||""),s<c.length-1&&(document.cookie="".concat(u).concat(";").concat("domain=").concat(fn),Cn(t)===n))return;fn=""}}catch(t){fn=""}document.cookie=fn?"".concat(u).concat(";").concat("domain=").concat(fn):u}}var Pn,qn=null;function Dn(){var t=ln;qn={version:l,sequence:0,start:0,duration:0,projectId:t.projectId,userId:t.userId,sessionId:t.sessionId,pageNum:t.pageNum,upload:0,end:0,applicationPlatform:0,url:""}}function Rn(){qn=null}function Hn(t){return qn.start=qn.start+qn.duration,qn.duration=s()-qn.start,qn.sequence++,qn.upload=t&&"sendBeacon"in navigator?1:0,qn.end=t?1:0,qn.applicationPlatform=0,qn.url=y(location.href,!1,!0),[qn.version,qn.sequence,qn.start,qn.duration,qn.projectId,qn.userId,qn.sessionId,qn.pageNum,qn.upload,qn.end,qn.applicationPlatform,qn.url]}function Un(){Pn=[]}function Ln(t){if(Pn&&-1===Pn.indexOf(t.message)){var n=o.report;if(n&&n.length>0&&qn){var e={v:qn.version,p:qn.projectId,u:qn.userId,s:qn.sessionId,n:qn.pageNum};t.message&&(e.m=t.message),t.stack&&(e.e=t.stack);var r=new XMLHttpRequest;r.open("POST",n,!0),r.send(JSON.stringify(e)),Pn.push(t.message)}}return t}function Xn(t){return function(){var n=performance.now();try{t.apply(this,arguments)}catch(t){throw Ln(t)}var e=performance.now()-n;W(4,e),e>30&&(Y(7),Z(6,e),"".concat(t.dn||t.name,"-").concat(e))}}var Vn=new Map;function Bn(t,n,e,r,a){void 0===r&&(r=!1),void 0===a&&(a=!0),e=Xn(e);try{t[i("addEventListener")](n,e,{capture:r,passive:a}),function(t){return Vn.has(t)}(t)||Vn.set(t,[]),Vn.get(t).push({event:n,listener:e,options:{capture:r,passive:a}})}catch(t){}}function Yn(){Vn.forEach((function(t,n){!function(t,n){t.forEach((function(t){try{n[i("removeEventListener")](t.event,t.listener,{capture:t.options.capture,passive:t.options.passive})}catch(t){}})),Vn.delete(n)}(t,n)})),Vn=new Map}var Wn=null,Zn=null,Jn=null,Gn=0;function Fn(){return!(Gn++>20)}function Kn(){Kn.dn=1,Gn=0,Jn!==$n()&&(Ae(),window.setTimeout(Qn,250))}function Qn(){ze(),Z(29,1)}function $n(){return location.href?location.href.replace(location.hash,""):location.href}var te=[],ne=null,ee=null,re=null;function ae(){ee&&(re(),ee=null,null===ne&&ie())}function oe(){te=[],ne=null,ee=null}function ie(){var t=te.shift();t&&(ne=t,t.task().then((function(){t.id===bn()&&(t.resolve(),ne=null,ie())})).catch((function(n){t.id===bn()&&(n&&(n.name,n.message,n.stack),ne=null,ie())})))}var ue=!1;function ce(){ue=!0,u=c(),oe(),Yn(),Un(),Jn=$n(),Gn=0,Bn(window,"popstate",Kn),null===Wn&&(Wn=history.pushState,history.pushState=function(){Wn.apply(this,arguments),le()&&Fn()&&Kn()}),null===Zn&&(Zn=history.replaceState,history.replaceState=function(){Zn.apply(this,arguments),le()&&Fn()&&Kn()})}function se(){Jn=null,Gn=0,Un(),Yn(),oe(),u=0,ue=!1}function le(){return ue}function de(){de.dn=2,ze(),L("clarity","restart")}var pe=null;function fe(){pe=null}function he(t){pe={fetchStart:Math.round(t.fetchStart),connectStart:Math.round(t.connectStart),connectEnd:Math.round(t.connectEnd),requestStart:Math.round(t.requestStart),responseStart:Math.round(t.responseStart),responseEnd:Math.round(t.responseEnd),domInteractive:Math.round(t.domInteractive),domComplete:Math.round(t.domComplete),loadEventStart:Math.round(t.loadEventStart),loadEventEnd:Math.round(t.loadEventEnd),redirectCount:Math.round(t.redirectCount),size:t.transferSize?t.transferSize:0,type:t.type,protocol:t.nextHopProtocol,encodedSize:t.encodedBodySize?t.encodedBodySize:0,decodedSize:t.decodedBodySize?t.decodedBodySize:0},function(t){ot(this,void 0,void 0,(function(){var n,e;return it(this,(function(r){return n=s(),e=[n,t],29===t&&(e.push(pe.fetchStart),e.push(pe.connectStart),e.push(pe.connectEnd),e.push(pe.requestStart),e.push(pe.responseStart),e.push(pe.responseEnd),e.push(pe.domInteractive),e.push(pe.domComplete),e.push(pe.loadEventStart),e.push(pe.loadEventEnd),e.push(pe.redirectCount),e.push(pe.size),e.push(pe.type),e.push(pe.protocol),e.push(pe.encodedSize),e.push(pe.decodedSize),fe(),Vt(e)),[2]}))}))}(29)}var ve,ge=0,me=1/0,ye=0,be=0,we=[],ke=new Map,Se=function(){return ge||0},_e=function(){if(!we.length)return-1;var t=Math.min(we.length-1,Math.floor((Se()-be)/50));return we[t].latency},Ee=function(){be=Se(),we.length=0,ke.clear()},Ie=function(t){if(t.interactionId&&!(t.duration<40)){!function(t){"interactionCount"in performance?ge=performance.interactionCount:t.interactionId&&(me=Math.min(me,t.interactionId),ye=Math.max(ye,t.interactionId),ge=ye?(ye-me)/7+1:0)}(t);var n=we[we.length-1],e=ke.get(t.interactionId);if(e||we.length<10||t.duration>(null==n?void 0:n.latency)){if(e)t.duration>e.latency&&(e.latency=t.duration);else{var r={id:t.interactionId,latency:t.duration};ke.set(r.id,r),we.push(r)}we.sort((function(t,n){return n.latency-t.latency})),we.length>10&&we.splice(10).forEach((function(t){return ke.delete(t.id)}))}}},Te=["navigation","resource","longtask","first-input","layout-shift","largest-contentful-paint","event"];function Oe(){Oe.dn=26;try{ve&&ve.disconnect(),ve=new PerformanceObserver(Xn(Me));for(var t=0,n=Te;t<n.length;t++){var e=n[t];PerformanceObserver.supportedEntryTypes.indexOf(e)>=0&&("layout-shift"===e&&W(9,0),ve.observe({type:e,buffered:!0}))}}catch(t){}}function Me(t){Me.dn=27,function(t){for(var n=(!("visibilityState"in document)||"visible"===document.visibilityState),e=0;e<t.length;e++){var r=t[e];switch(r.entryType){case"navigation":he(r);break;case"resource":var a=r.name;un(4,Ne(a)),a!==o.upload&&a!==o.fallback||Z(28,r.duration);break;case"longtask":Y(7);break;case"first-input":n&&Z(10,r.processingStart-r.startTime);break;case"event":n&&"PerformanceEventTiming"in window&&"interactionId"in PerformanceEventTiming.prototype&&(Ie(r),un(37,_e().toString()));break;case"layout-shift":n&&!r.hadRecentInput&&W(9,1e3*r.value);break;case"largest-contentful-paint":n&&Z(8,r.startTime)}}}(t.getEntries())}var xe=null;function Ne(t){return xe||(xe=document.createElement("a")),xe.href=t,xe.host}var je=Object.freeze({__proto__:null,start:function t(){t.dn=25,fe(),function(){navigator&&navigator.connection&&un(27,navigator.connection.effectiveType),window.PerformanceObserver&&PerformanceObserver.supportedEntryTypes&&("complete"!==document.readyState?Bn(window,"load",J.bind(this,Oe,0)):Oe())}()},stop:function(){ve&&ve.disconnect(),ve=null,Ee(),xe=null,fe()}}),Ce=[j,j,j,je];function ze(t){void 0===t&&(t=null),function(){try{var t=navigator&&"globalPrivacyControl"in navigator&&1==navigator.globalPrivacyControl;return!1===ue&&"undefined"!=typeof Promise&&window.MutationObserver&&document.createTreeWalker&&"now"in Date&&"now"in performance&&"undefined"!=typeof WeakMap&&!t}catch(t){return!1}}()&&(!function(t){if(null===t||ue)return!1;for(var n in t)n in o&&(o[n]=t[n])}(t),ce(),kt(),Ce.forEach((function(t){return Xn(t.start)()})),null===t&&Re())}function Ae(){le()&&(Ce.slice().reverse().forEach((function(t){return Xn(t.stop)()})),St(),se(),void 0!==qe&&(qe[De]=function(){(qe[De].q=qe[De].q||[]).push(arguments),"start"===arguments[0]&&qe[De].q.unshift(qe[De].q.pop())&&Re()}))}var Pe=Object.freeze({__proto__:null,consent:wn,consentv2:kn,event:L,hashText:M,identify:st,metadata:yn,pause:function(){le()&&(L("clarity","pause"),null===ee&&(ee=new Promise((function(t){re=t}))))},resume:function(){le()&&(ae(),L("clarity","resume"))},set:ct,signal:function(t){yt=t},start:ze,stop:Ae,upgrade:rt,version:l}),qe=window,De="clarity";function Re(){if(void 0!==qe){if(qe[De]&&qe[De].v)return console.warn("Error CL001: Multiple Clarity tags detected.");var t=qe[De]&&qe[De].q||[];for(qe[De]=function(t){for(var n=[],e=1;e<arguments.length;e++)n[e-1]=arguments[e];return Pe[t].apply(Pe,n)},qe[De].v=l;t.length>0;)qe[De].apply(qe,t.shift())}}Re()}();
|
|
1
|
+
!function(){"use strict";var t=Object.freeze({__proto__:null,get queue(){return Jt},get start(){return Zt},get stop(){return Gt},get track(){return Ut}}),n=Object.freeze({__proto__:null,get check(){return en},get compute(){return an},get data(){return Ht},get start(){return nn},get stop(){return on},get trigger(){return rn}}),e=Object.freeze({__proto__:null,get compute(){return fn},get data(){return un},get log(){return pn},get reset(){return hn},get start(){return ln},get stop(){return dn},get updates(){return cn}}),r=Object.freeze({__proto__:null,get callback(){return jn},get callbacks(){return gn},get clear(){return xn},get consent(){return In},get consentv2(){return Tn},get data(){return vn},get electron(){return mn},get id(){return En},get metadata(){return _n},get save(){return Nn},get shortid(){return An},get start(){return kn},get stop(){return Sn}}),a=Object.freeze({__proto__:null,get data(){return Ln},get envelope(){return Yn},get start(){return Xn},get stop(){return Vn}}),o={projectId:null,delay:1e3,lean:!1,lite:!1,track:!0,content:!0,drop:[],mask:[],unmask:[],regions:[],cookies:[],fraud:!0,checksum:[],report:null,upload:null,fallback:null,upgrade:null,action:null,dob:null,delayDom:!1,throttleDom:!0,conversions:!1,includeSubdomains:!0};function i(t){return window.Zone&&"__symbol__"in window.Zone?window.Zone.__symbol__(t):t}var u=0;function c(){return performance.now()+performance.timeOrigin}function s(t){void 0===t&&(t=null);var n=0===u?c():u,e=t&&t.timeStamp>0?t.timeStamp:performance.now(),r=t&&t.view?t.view.performance.timeOrigin:performance.timeOrigin;return Math.max(Math.round(e+r-n),0)}var l="0.8.25";var d=/\S/gi,p=255,f=!0,h=null,v=null,g=null;function m(t,n,e,r,a){if(void 0===r&&(r=!1),t){if("input"==n&&("checkbox"===a||"radio"===a))return t;switch(e){case 0:return t;case 1:switch(n){case"*T":case"value":case"placeholder":case"click":return function(t){var n=-1,e=0,r=!1,a=!1,o=!1,i=null;_();for(var u=0;u<t.length;u++){var c=t.charCodeAt(u);if(r=r||c>=48&&c<=57,a=a||64===c,o=9===c||10===c||13===c||32===c,0===u||u===t.length-1||o){if(r||a){null===i&&(i=t.split(""));var s=t.substring(n+1,o?u:u+1);s=f&&null!==g?s.match(g)?s:k(s,"▪","▫"):w(s),i.splice(n+1-e,s.length,s),e+=s.length-1}o&&(r=!1,a=!1,n=u)}}return i?i.join(""):t}(t);case"input":case"change":return S(t)}return t;case 2:case 3:switch(n){case"*T":case"data-":return r?b(t):w(t);case"src":case"srcset":case"title":case"alt":return 3===e?"src"===n&&(null==t?void 0:t.startsWith("blob:"))?"blob:":"":t;case"value":case"click":case"input":case"change":return S(t);case"placeholder":return w(t)}break;case 4:switch(n){case"*T":case"data-":return r?b(t):w(t);case"value":case"input":case"click":case"change":return Array(5).join("•");case"checksum":return""}break;case 5:switch(n){case"*T":case"data-":return k(t,"▪","▫");case"value":case"input":case"click":case"change":return Array(5).join("•");case"checksum":case"src":case"srcset":case"alt":case"title":return""}}}return t}function y(t,n,e){void 0===n&&(n=!1),void 0===e&&(e=!1);var r=t;if(n)r="".concat("https://").concat("Electron");else{var a=o.drop;if(a&&a.length>0&&t&&t.indexOf("?")>0){var i=t.split("?"),u=i[0],c=i[1];r=u+"?"+c.split("&").map((function(t){return a.some((function(n){return 0===t.indexOf("".concat(n,"="))}))?"".concat(t.split("=")[0],"=").concat("*na*"):t})).join("&")}}return e&&(r=r.substring(0,p)),r}function b(t){var n=t.trim();if(n.length>0){var e=n[0],r=t.indexOf(e),a=t.substr(0,r),o=t.substr(r+n.length);return"".concat(a).concat(n.length.toString(36)).concat(o)}return t}function w(t){return t.replace(d,"•")}function k(t,n,e){return _(),t?t.replace(v,n).replace(h,e):t}function S(t){for(var n=5*(Math.floor(t.length/5)+1),e="",r=0;r<n;r++)e+=r>0&&r%5==0?" ":"•";return e}function _(){if(f&&null===h)try{h=new RegExp("\\p{N}","gu"),v=new RegExp("\\p{L}","gu"),g=new RegExp("\\p{Sc}","gu")}catch(t){f=!1}}var E=[],I=null;function T(){}var O=[];function M(){}function x(){}function j(){}var N=Object.freeze({__proto__:null,checkDocumentStyles:function(t){},compute:function(){},data:I,hashText:M,keys:O,log:T,observe:function(){},reset:function(){},sheetAdoptionState:[],sheetUpdateState:[],start:function(){},state:E,stop:function(){},track:j,trigger:x}),C=null,z=!0;function A(t){q(t.analytics_Storage?1:0),C=t}function P(){q(2)}function q(t){pn(36,t.toString())}function D(t){C=t,tn(47)}function R(){z&&(tn(47),z=!1)}var U=Object.freeze({__proto__:null,compute:R,config:A,consent:P,consentv2:D,get data(){return C},start:function(){z=!0},stop:function(){z=!0}}),H=null;function L(t,n){ve()&&t&&"string"==typeof t&&t.length<255&&(H=n&&"string"==typeof n&&n.length<255?{key:t,value:n}:{value:t},tn(24))}var X,V=null,Y=null;function B(t){t in V||(V[t]=0),t in Y||(Y[t]=0),V[t]++,Y[t]++}function W(t,n){null!==n&&(t in V||(V[t]=0),t in Y||(Y[t]=0),V[t]+=n,Y[t]+=n)}function Z(t,n){null!==n&&!1===isNaN(n)&&(t in V||(V[t]=0),(n>V[t]||0===V[t])&&(Y[t]=n,V[t]=n))}function J(t,n,e){return window.setTimeout(Zn(t),n,e)}function G(t){return window.clearTimeout(t)}var F=0,K=0,Q=null;function $(){Q&&G(Q),Q=J(tt,K),F=s()}function tt(){var t=s();X={gap:t-F},tn(25),X.gap<3e5?Q=J(tt,K):pe&&(L("clarity","suspend"),Re(),["mousemove","touchstart"].forEach((function(t){return Gn(document,t,ge)})),["resize","scroll","pageshow"].forEach((function(t){return Gn(window,t,ge)})))}var nt=Object.freeze({__proto__:null,get data(){return X},reset:$,start:function(){K=6e4,F=0},stop:function(){G(Q),F=0,K=0}}),et=null;function rt(t){ve()&&o.lean&&(o.lean=!1,et={key:t},jn(),Nn(),o.upgrade&&o.upgrade(t),tn(3),o.lite)}var at=Object.freeze({__proto__:null,get data(){return et},start:function(){!o.lean&&o.upgrade&&o.upgrade("Config"),et=null},stop:function(){et=null},upgrade:rt});function ot(t,n,e,r){return new(e||(e=Promise))((function(a,o){function i(t){try{c(r.next(t))}catch(t){o(t)}}function u(t){try{c(r.throw(t))}catch(t){o(t)}}function c(t){var n;t.done?a(t.value):(n=t.value,n instanceof e?n:new e((function(t){t(n)}))).then(i,u)}c((r=r.apply(t,n||[])).next())}))}function it(t,n){var e,r,a,o,i={label:0,sent:function(){if(1&a[0])throw a[1];return a[1]},trys:[],ops:[]};return o={next:u(0),throw:u(1),return:u(2)},"function"==typeof Symbol&&(o[Symbol.iterator]=function(){return this}),o;function u(u){return function(c){return function(u){if(e)throw new TypeError("Generator is already executing.");for(;o&&(o=0,u[0]&&(i=0)),i;)try{if(e=1,r&&(a=2&u[0]?r.return:u[0]?r.throw||((a=r.return)&&a.call(r),0):r.next)&&!(a=a.call(r,u[1])).done)return a;switch(r=0,a&&(u=[2&u[0],a.value]),u[0]){case 0:case 1:a=u;break;case 4:return i.label++,{value:u[1],done:!1};case 5:i.label++,r=u[1],u=[0];continue;case 7:u=i.ops.pop(),i.trys.pop();continue;default:if(!(a=i.trys,(a=a.length>0&&a[a.length-1])||6!==u[0]&&2!==u[0])){i=0;continue}if(3===u[0]&&(!a||u[1]>a[0]&&u[1]<a[3])){i.label=u[1];break}if(6===u[0]&&i.label<a[1]){i.label=a[1],a=u;break}if(a&&i.label<a[2]){i.label=a[2],i.ops.push(u);break}a[2]&&i.ops.pop(),i.trys.pop();continue}u=n.call(t,i)}catch(t){u=[6,t],r=0}finally{e=a=0}if(5&u[0])throw u[1];return{value:u[0]?u[1]:void 0,done:!0}}([u,c])}}}var ut=null;function ct(t,n){lt(t,"string"==typeof n?[n]:n)}function st(t,n,e,r){return void 0===n&&(n=null),void 0===e&&(e=null),void 0===r&&(r=null),ot(this,void 0,void 0,(function(){var a,o;return it(this,(function(i){switch(i.label){case 0:return o={},[4,ft(t)];case 1:return o.userId=i.sent(),o.userHint=r||((u=t)&&u.length>=5?"".concat(u.substring(0,2)).concat(k(u.substring(2),"*","*")):k(u,"*","*")),lt("userId",[(a=o).userId]),lt("userHint",[a.userHint]),lt("userType",[ht(t)]),n&&(lt("sessionId",[n]),a.sessionId=n),e&&(lt("pageId",[e]),a.pageId=e),[2,a]}var u}))}))}function lt(t,n){if(ve()&&t&&n&&"string"==typeof t&&t.length<255){for(var e=(t in ut?ut[t]:[]),r=0;r<n.length;r++)"string"==typeof n[r]&&n[r].length<255&&e.push(n[r]);ut[t]=e}}function dt(){tn(34)}function pt(){ut={}}function ft(t){return ot(this,void 0,void 0,(function(){var n;return it(this,(function(e){switch(e.label){case 0:return e.trys.push([0,4,,5]),crypto&&t?[4,crypto.subtle.digest("SHA-256",(new TextEncoder).encode(t))]:[3,2];case 1:return n=e.sent(),[2,Array.prototype.map.call(new Uint8Array(n),(function(t){return("00"+t.toString(16)).slice(-2)})).join("")];case 2:return[2,""];case 3:return[3,5];case 4:return e.sent(),[2,""];case 5:return[2]}}))}))}function ht(t){return t&&t.indexOf("@")>0?"email":"string"}var vt="CompressionStream"in window;function gt(t){return ot(this,void 0,void 0,(function(){var n,e;return it(this,(function(r){switch(r.label){case 0:return r.trys.push([0,3,,4]),vt?(n=new ReadableStream({start:function(n){return ot(this,void 0,void 0,(function(){return it(this,(function(e){return n.enqueue(t),n.close(),[2]}))}))}}).pipeThrough(new TextEncoderStream).pipeThrough(new window.CompressionStream("gzip")),e=Uint8Array.bind,[4,mt(n)]):[3,2];case 1:return[2,new(e.apply(Uint8Array,[void 0,r.sent()]))];case 2:return[3,4];case 3:return r.sent(),[3,4];case 4:return[2,null]}}))}))}function mt(t){return ot(this,void 0,void 0,(function(){var n,e,r,a,o;return it(this,(function(i){switch(i.label){case 0:n=t.getReader(),e=[],r=!1,a=[],i.label=1;case 1:return r?[3,3]:[4,n.read()];case 2:return o=i.sent(),r=o.done,a=o.value,r?[2,e]:(e.push.apply(e,a),[3,1]);case 3:return[2,e]}}))}))}var yt=null;function bt(t){try{if(!yt)return;var n=function(t){try{return JSON.parse(t)}catch(t){return[]}}(t);n.forEach((function(t){yt(t)}))}catch(t){}}var wt=[N,e,Object.freeze({__proto__:null,compute:dt,get data(){return ut},identify:st,reset:pt,set:ct,start:function(){pt()},stop:function(){pt()}}),n,N,U,r,a,t,nt,at,N];function kt(){V={},Y={},B(5),wt.forEach((function(t){return Zn(t.start)()}))}function St(){wt.slice().reverse().forEach((function(t){return Zn(t.stop)()})),V={},Y={}}function _t(){dt(),fn(),tn(0),an(),R()}function Et(t,n,e){return"".concat(t,"=").concat(m(n,0===t.indexOf("data-")?"data-":t,e))}var It=[],Tt=1,Ot=null;function Mt(){It=[],function(t){var n=[t];for(;n.length>0;){for(var e=null,r=null,a=null,o=n.shift(),i=o.firstChild,u=o.parentElement?o.parentElement:o.parentNode?o.parentNode:null;i;)n.push(i),i=i.nextSibling;switch(o.nodeType){case Node.DOCUMENT_TYPE_NODE:var c=o;r="*D",e={name:c.name,publicId:c.publicId,systemId:c.systemId};break;case Node.TEXT_NODE:a=o.nodeValue,r=Ot.get(u)?"*T":r;break;case Node.ELEMENT_NODE:var s=o;e=xt(s),r=["NOSCRIPT","SCRIPT","STYLE"].indexOf(s.tagName)<0?s.tagName:r}jt(o,u,{tag:r,attributes:e,value:a})}}(document),function(t){ot(this,void 0,void 0,(function(){var n,e,r,a,o,i,u,c,l,d,p,f,h;return it(this,(function(v){switch(n=s(),e=[n,t],t){case 8:r=I,e.push(r.width),e.push(r.height),r.width,r.height,Jt(e);break;case 43:if((a=It).length>0){for(o=0,i=a;o<i.length;o++)for(u=i[o],c=u.metadata.privacy,l=u.data,d=0,p=["tag","attributes","value"];d<p.length;d++)if(l[f=p[d]])switch(f){case"tag":e.push(u.id),u.parent&&e.push(u.parent),u.previous&&e.push(u.previous),e.push(l[f]);break;case"attributes":for(h in l[f])void 0!==l[f][h]&&e.push(Et(h,l[f][h],c));break;case"value":e.push(m(l[f],l.tag,c))}Jt(function(t){for(var n=[],e={},r=0,a=null,o=0;o<t.length;o++)if("string"==typeof t[o]){var i=t[o],u=e[i]||-1;u>=0?a?a.push(u):(a=[u],n.push(a),r++):(a=null,n.push(i),e[i]=r++)}else a=null,n.push(t[o]),r++;return n}(e),!0)}}return[2]}))}))}(43)}function xt(t){var n={},e=t.attributes;if(e&&e.length>0)for(var r=0;r<e.length;r++)n[e[r].name]=e[r].value;return n}function jt(t,n,e){if(t&&e&&e.tag){var r=function(t){return null===t?null:Ot.has(t)?Ot.get(t):(Ot.set(t,Tt),Tt++)}(t),a=n?Ot.get(n):null,o=t.previousSibling?Ot.get(t.previousSibling):null;It.push({id:r,parent:a,previous:o,children:[],data:e,selector:null,hash:null,region:null,metadata:{active:!0,suspend:!1,privacy:5,position:null,fraud:null,size:null}})}}var Nt=[],Ct=!1;function zt(t){Ct&&"function"==typeof t&&Nt.push(t)}function At(t){!function(t){if(!Ct)return;try{var n=document.createElement("script");n.src=t,n.async=!0,document.head.appendChild(n)}catch(t){}}(t)}var Pt,qt,Dt,Rt,Ut,Ht,Lt=Object.freeze({__proto__:null,dynamicEvent:At,register:zt,start:function(){Ct=!0},stop:function(){Nt.reverse().forEach((function(t){try{t()}catch(t){}})),Nt=[],Ct=!1}}),Xt=0,Vt=0,Yt=null,Bt=0,Wt=!1;function Zt(){Rt=!0,Xt=0,Vt=0,Wt=!1,Bt=0,Pt=[],qt=[],Dt={},Ut=null}function Jt(t,n){if(void 0===n&&(n=!0),Rt){var e=s(),r=t.length>1?t[1]:null,a=JSON.stringify(t);switch(o.lean?!Wt&&Vt+a.length>10485760&&(Wt=!0):Wt=!1,r){case 5:if(Wt)break;Xt+=a.length;case 37:case 6:case 43:case 45:case 46:if(Wt)break;Vt+=a.length,Pt.push(a);break;default:qt.push(a)}B(25);var i=function(){var t=!1===o.lean&&Xt>0?100:Ln.sequence*o.delay;return"string"==typeof o.upload?Math.max(Math.min(t,3e4),100):o.delay}();e-Bt>2*i&&(G(Yt),Yt=null),n&&null===Yt&&(25!==r&&$(),Yt=J(Ft,i),Bt=e,en(Vt))}}function Gt(){G(Yt),Ft(!0),Xt=0,Vt=0,Wt=!1,Bt=0,Pt=[],qt=[],Dt={},Ut=null,Rt=!1}function Ft(t){return void 0===t&&(t=!1),ot(this,void 0,void 0,(function(){var n,e,r,a,i,u,c,s;return it(this,(function(l){switch(l.label){case 0:return Rt?(Yt=null,(n=!1===o.lean&&Vt>0&&(Vt<1048576||Ln.sequence>0))&&Z(1,1),_t(),e=!0===t,Ln?(r=JSON.stringify(Yn(e)),a="[".concat(qt.join(),"]"),i=n?"[".concat(Pt.join(),"]"):"",u=function(t){return t.p.length>0?'{"e":'.concat(t.e,',"a":').concat(t.a,',"p":').concat(t.p,"}"):'{"e":'.concat(t.e,',"a":').concat(t.a,"}")}({e:r,a:a,p:i}),e?(s=null,[3,3]):[3,1]):[2]):[2];case 1:return[4,gt(u)];case 2:s=l.sent(),l.label=3;case 3:return W(2,(c=s)?c.length:u.length),Kt(u,c,Ln.sequence,e),qt=[],n&&(Pt=[],Vt=0,Xt=0,Wt=!1),[2]}}))}))}function Kt(t,n,e,r){if(void 0===r&&(r=!1),"string"==typeof o.upload){var a=o.upload,i=!1;if(r&&navigator&&navigator.sendBeacon)try{(i=navigator.sendBeacon.bind(navigator)(a,t))&&$t(e)}catch(t){}if(!1===i){e in Dt?Dt[e].attempts++:Dt[e]={data:t,attempts:1};var u=new XMLHttpRequest;u.open("POST",a,!0),u.timeout=15e3,u.ontimeout=function(){Wn(new Error("".concat("Timeout"," : ").concat(a)))},null!==e&&(u.onreadystatechange=function(){Zn(Qt)(u,e)}),u.withCredentials=!0,n?(u.setRequestHeader("Accept","application/x-clarity-gzip"),u.send(n)):u.send(t)}}else if(o.upload){(0,o.upload)(t),$t(e)}}function Qt(t,n){var e=Dt[n];t&&4===t.readyState&&e&&((t.status<200||t.status>208)&&e.attempts<=1?t.status>=400&&t.status<500?rn(6):(0===t.status&&(o.upload=o.fallback?o.fallback:o.upload),Ut={sequence:n,attempts:e.attempts,status:t.status},tn(2),Kt(e.data,null,n)):(Ut={sequence:n,attempts:e.attempts,status:t.status},e.attempts>1&&tn(2),200===t.status&&t.responseText&&function(t){for(var n=t&&t.length>0?t.split("\n"):[],e=0,r=n;e<r.length;e++){var a=r[e],i=a&&a.length>0?a.split(/ (.*)/):[""];switch(i[0]){case"END":rn(6);break;case"UPGRADE":rt("Auto");break;case"ACTION":o.action&&i.length>1&&o.action(i[1]);break;case"EXTRACT":i.length>1&&i[1];break;case"SIGNAL":i.length>1&&bt(i[1]);break;case"MODULE":i.length>1&&At(i[1]);break;case"SNAPSHOT":o.lean=!1,Mt()}}}(t.responseText),0===t.status&&(Kt(e.data,null,n,!0),rn(3)),t.status>=200&&t.status<=208&&$t(n),delete Dt[n]))}function $t(t){1===t&&(Nn(),jn())}function tn(t){var n=[s(),t];switch(t){case 4:var e=E;e&&e.data&&((n=[e.time,e.event]).push(e.data.visible),n.push(e.data.docWidth),n.push(e.data.docHeight),n.push(e.data.screenWidth),n.push(e.data.screenHeight),n.push(e.data.scrollX),n.push(e.data.scrollY),n.push(e.data.pointerX),n.push(e.data.pointerY),n.push(e.data.activityTime),n.push(e.data.scrollTime),n.push(e.data.pointerTime),n.push(e.data.moveX),n.push(e.data.moveY),n.push(e.data.moveTime),n.push(e.data.downX),n.push(e.data.downY),n.push(e.data.downTime),n.push(e.data.upX),n.push(e.data.upY),n.push(e.data.upTime),n.push(e.data.pointerPrevX),n.push(e.data.pointerPrevY),n.push(e.data.pointerPrevTime),Jt(n,!1));break;case 25:n.push(X.gap),Jt(n);break;case 35:n.push(Ht.check),Jt(n,!1);break;case 3:n.push(et.key),Jt(n);break;case 2:n.push(Ut.sequence),n.push(Ut.attempts),n.push(Ut.status),Jt(n,!1);break;case 24:H.key&&n.push(H.key),n.push(H.value),Jt(n);break;case 34:var r=Object.keys(ut);if(r.length>0){for(var a=0,o=r;a<o.length;a++){var i=o[a];n.push(i),n.push(ut[i])}pt(),Jt(n,!1)}break;case 0:var u=Object.keys(Y);if(u.length>0){for(var c=0,l=u;c<l.length;c++){var d=l[c],p=parseInt(d,10);n.push(p),n.push(Math.round(Y[d]))}Y={},Jt(n,!1)}break;case 1:var f=Object.keys(cn);if(f.length>0){for(var h=0,v=f;h<v.length;h++){var g=v[h];p=parseInt(g,10);n.push(p),n.push(cn[g])}hn(),Jt(n,!1)}break;case 36:var m=Object.keys(I);if(m.length>0){for(var y=0,b=m;y<b.length;y++){var w=b[y];p=parseInt(w,10);n.push(p),n.push([].concat.apply([],I[w]))}Jt(n,!1)}break;case 40:O.forEach((function(t){n.push(t);var e=[];for(var r in I[t]){var a=parseInt(r,10);e.push(a),e.push(I[t][r])}n.push(e)})),Jt(n,!1);break;case 47:n.push(C.source),n.push(C.ad_Storage),n.push(C.analytics_Storage),Jt(n,!1)}}function nn(){Ht={check:0}}function en(t){if(0===Ht.check){var n=Ht.check;n=Ln.sequence>=128?1:n,n=Ln.pageNum>=128?7:n,n=s()>72e5?2:n,(n=t>10485760?2:n)!==Ht.check&&rn(n)}}function rn(t){Ht.check=t,5!==t&&(xn(),Re())}function an(){0!==Ht.check&&tn(35)}function on(){Ht=null}var un=null,cn=null,sn=!1;function ln(){un={},cn={},sn=!1}function dn(){un={},cn={},sn=!1}function pn(t,n){if(n&&(n="".concat(n),t in un||(un[t]=[]),un[t].indexOf(n)<0)){if(un[t].length>128)return void(sn||(sn=!0,rn(5)));un[t].push(n),t in cn||(cn[t]=[]),cn[t].push(n)}}function fn(){tn(1)}function hn(){cn={},sn=!1}var vn=null,gn=[],mn=0,yn=null,bn=null,wn={ad_Storage:"denied",analytics_Storage:"denied"};function kn(){var t,n,e;yn=null;var r=navigator&&"userAgent"in navigator?navigator.userAgent:"",a=null!==(e="undefined"!=typeof Intl&&(null===(n=null===(t=null===Intl||void 0===Intl?void 0:Intl.DateTimeFormat())||void 0===t?void 0:t.resolvedOptions())||void 0===n?void 0:n.timeZone))&&void 0!==e?e:"",i=(new Date).getTimezoneOffset().toString(),u=window.location.ancestorOrigins?Array.from(window.location.ancestorOrigins).toString():"",c=document&&document.title?document.title:"";mn=r.indexOf("Electron")>0?1:0;var s=function(){var t={session:An(),ts:Math.round(Date.now()),count:1,upgrade:null,upload:""},n=Dn("_clsk",!o.includeSubdomains);if(n){var e=n.includes("^")?n.split("^"):n.split("|");e.length>=5&&t.ts-Pn(e[1])<18e5&&(t.session=e[0],t.count=Pn(e[2])+1,t.upgrade=Pn(e[3]),t.upload=e.length>=6?"".concat("https://").concat(e[5],"/").concat(e[4]):"".concat("https://").concat(e[4]))}return t}(),l=qn(),d=o.projectId||function(t,n){void 0===n&&(n=null);for(var e,r=5381,a=r,o=0;o<t.length;o+=2)r=(r<<5)+r^t.charCodeAt(o),o+1<t.length&&(a=(a<<5)+a^t.charCodeAt(o+1));return e=Math.abs(r+11579*a),(n?e%Math.pow(2,n):e).toString(36)}(location.host);vn={projectId:d,userId:l.id,sessionId:s.session,pageNum:s.count},o.lean=o.track&&null!==s.upgrade?0===s.upgrade:o.lean,o.upload=o.track&&"string"==typeof o.upload&&s.upload&&s.upload.length>"https://".length?s.upload:o.upload,pn(0,r),pn(3,c),pn(1,y(location.href,!!mn)),pn(2,document.referrer),pn(15,function(){var t=An();if(o.track&&Cn(window,"sessionStorage")){var n=sessionStorage.getItem("_cltk");t=n||t,sessionStorage.setItem("_cltk",t)}return t}()),pn(16,document.documentElement.lang),pn(17,document.dir),pn(26,"".concat(window.devicePixelRatio)),pn(28,l.dob.toString()),pn(29,l.version.toString()),pn(33,u),pn(34,a),pn(35,i),Z(0,s.ts),Z(1,0),Z(35,mn);var p,f=null===window||void 0===window?void 0:window.Zone;f&&"__symbol__"in f&&Z(39,1),navigator&&(pn(9,navigator.language),Z(33,navigator.hardwareConcurrency),Z(32,navigator.maxTouchPoints),Z(34,Math.round(navigator.deviceMemory)),(p=navigator.userAgentData)&&p.getHighEntropyValues?p.getHighEntropyValues(["model","platform","platformVersion","uaFullVersion"]).then((function(t){var n;pn(22,t.platform),pn(23,t.platformVersion),null===(n=t.brands)||void 0===n||n.forEach((function(t){pn(24,t.name+"~"+t.version)})),pn(25,t.model),Z(27,t.mobile?1:0)})):pn(22,navigator.platform)),screen&&(Z(14,Math.round(screen.width)),Z(15,Math.round(screen.height)),Z(16,Math.round(screen.colorDepth)));for(var h=0,v=o.cookies;h<v.length;h++){var g=v[h],m=Dn(g);m&&ct(g,m)}A(On(bn={ad_Storage:o.track?"granted":"denied",analytics_Storage:o.track?"granted":"denied"},0)),zn(l)}function Sn(){yn=null,vn=null,bn=null,gn.forEach((function(t){t.called=!1}))}function _n(t,n,e,r){void 0===n&&(n=!0),void 0===e&&(e=!1),void 0===r&&(r=!1);var a=o.lean?0:1,i=!1;vn&&(a||!1===n)&&(t(vn,!o.lean,r?bn:void 0),i=!0),!e&&i||gn.push({callback:t,wait:n,recall:e,called:i,consentInfo:r})}function En(){return vn?[vn.userId,vn.sessionId,vn.pageNum].join("."):""}function In(t){void 0===t&&(t=!0),t?(Tn({ad_Storage:"granted",analytics_Storage:"granted"}),P()):Tn()}function Tn(t,n){void 0===t&&(t=wn),void 0===n&&(n=1),bn={ad_Storage:Mn(t.ad_Storage),analytics_Storage:Mn(t.analytics_Storage)},jn(!0);var e=On(bn,n);if(!e.analytics_Storage)return o.track=!1,Un("_clsk","",-Number.MAX_VALUE),Un("_clck","",-Number.MAX_VALUE),Re(),void window.setTimeout(De,250);ve()&&(o.track=!0,zn(qn(),1),Nn(),D(e),P())}function On(t,n){return{source:n,ad_Storage:"granted"===t.ad_Storage?1:0,analytics_Storage:"granted"===t.analytics_Storage?1:0}}function Mn(t){return"string"==typeof t?t.toLowerCase():"denied"}function xn(){Un("_clsk","",0)}function jn(t){void 0===t&&(t=!1),function(t,n){void 0===n&&(n=!1);if(gn.length>0)for(var e=0;e<gn.length;e++){var r=gn[e];r.callback&&(!r.called&&!n||r.consentInfo&&n)&&(!r.wait||t)&&(r.callback(vn,!o.lean,r.consentInfo?bn:void 0),r.called=!0,r.recall||(gn.splice(e,1),e--))}}(o.lean?0:1,t)}function Nn(){if(vn&&o.track){var t=Math.round(Date.now()),n=o.upload&&"string"==typeof o.upload?o.upload.replace("https://",""):"",e=o.lean?0:1;Un("_clsk",[vn.sessionId,t,vn.pageNum,e,n].join("^"),1)}}function Cn(t,n){try{return!!t[n]}catch(t){return!1}}function zn(t,n){void 0===n&&(n=null),n=null===n?t.consent:n;var e=Math.ceil((Date.now()+31536e6)/864e5),r=0===t.dob?null===o.dob?0:o.dob:t.dob;(null===t.expiry||Math.abs(e-t.expiry)>=1||t.consent!==n||t.dob!==r)&&Un("_clck",[vn.userId,2,e.toString(36),n,r].join("^"),365)}function An(){var t=Math.floor(Math.random()*Math.pow(2,32));return window&&window.crypto&&window.crypto.getRandomValues&&Uint32Array&&(t=window.crypto.getRandomValues(new Uint32Array(1))[0]),t.toString(36)}function Pn(t,n){return void 0===n&&(n=10),parseInt(t,n)}function qn(){var t={id:An(),version:0,expiry:null,consent:0,dob:0},n=Dn("_clck",!o.includeSubdomains);if(n&&n.length>0){var e=n.includes("^")?n.split("^"):n.split("|");e.length>1&&(t.version=Pn(e[1])),e.length>2&&(t.expiry=Pn(e[2],36)),e.length>3&&1===Pn(e[3])&&(t.consent=1),e.length>4&&Pn(e[1])>1&&(t.dob=Pn(e[4])),o.track=o.track||1===t.consent,t.id=o.track?e[0]:t.id}return t}function Dn(t,n){var e;if(void 0===n&&(n=!1),Cn(document,"cookie")){var r=document.cookie.split(";");if(r)for(var a=0;a<r.length;a++){var o=r[a].split("=");if(o.length>1&&o[0]&&o[0].trim()===t){for(var i=Rn(o[1]),u=i[0],c=i[1];u;)u=(e=Rn(c))[0],c=e[1];return n?c.endsWith("".concat("~","1"))?c.substring(0,c.length-2):null:c}}}return null}function Rn(t){try{var n=decodeURIComponent(t);return[n!=t,n]}catch(t){}return[!1,t]}function Un(t,n,e){if((o.track||""==n)&&(navigator&&navigator.cookieEnabled||Cn(document,"cookie"))){var r=function(t){return encodeURIComponent(t)}(n),a=new Date;a.setDate(a.getDate()+e);var i=a?"expires="+a.toUTCString():"",u="".concat(t,"=").concat(r).concat(";").concat(i).concat(";path=/");try{if(null===yn){for(var c=location.hostname?location.hostname.split("."):[],s=c.length-1;s>=0;s--)if(yn=".".concat(c[s]).concat(yn||""),s<c.length-1&&(document.cookie="".concat(u).concat(";").concat("domain=").concat(yn),Dn(t)===n))return;yn=""}}catch(t){yn=""}document.cookie=yn?"".concat(u).concat(";").concat("domain=").concat(yn):u}}var Hn,Ln=null;function Xn(){var t=vn;Ln={version:l,sequence:0,start:0,duration:0,projectId:t.projectId,userId:t.userId,sessionId:t.sessionId,pageNum:t.pageNum,upload:0,end:0,applicationPlatform:0,url:""}}function Vn(){Ln=null}function Yn(t){return Ln.start=Ln.start+Ln.duration,Ln.duration=s()-Ln.start,Ln.sequence++,Ln.upload=t&&"sendBeacon"in navigator?1:0,Ln.end=t?1:0,Ln.applicationPlatform=0,Ln.url=y(location.href,!1,!0),[Ln.version,Ln.sequence,Ln.start,Ln.duration,Ln.projectId,Ln.userId,Ln.sessionId,Ln.pageNum,Ln.upload,Ln.end,Ln.applicationPlatform,Ln.url]}function Bn(){Hn=[]}function Wn(t){if(Hn&&-1===Hn.indexOf(t.message)){var n=o.report;if(n&&n.length>0&&Ln){var e={v:Ln.version,p:Ln.projectId,u:Ln.userId,s:Ln.sessionId,n:Ln.pageNum};t.message&&(e.m=t.message),t.stack&&(e.e=t.stack);var r=new XMLHttpRequest;r.open("POST",n,!0),r.send(JSON.stringify(e)),Hn.push(t.message)}}return t}function Zn(t){return function(){var n=performance.now();try{t.apply(this,arguments)}catch(t){throw Wn(t)}var e=performance.now()-n;W(4,e),e>30&&(B(7),Z(6,e))}}var Jn=new Map;function Gn(t,n,e,r,a){void 0===r&&(r=!1),void 0===a&&(a=!0),e=Zn(e);try{t[i("addEventListener")](n,e,{capture:r,passive:a}),function(t){return Jn.has(t)}(t)||Jn.set(t,[]),Jn.get(t).push({event:n,listener:e,options:{capture:r,passive:a}})}catch(t){}}function Fn(){Jn.forEach((function(t,n){!function(t,n){t.forEach((function(t){try{n[i("removeEventListener")](t.event,t.listener,{capture:t.options.capture,passive:t.options.passive})}catch(t){}})),Jn.delete(n)}(t,n)})),Jn=new Map}var Kn=null,Qn=null,$n=null,te=0;function ne(){return!(te++>20)}function ee(){te=0,$n!==ae()&&(Re(),window.setTimeout(re,250))}function re(){De(),Z(29,1)}function ae(){return location.href?location.href.replace(location.hash,""):location.href}var oe=[],ie=null,ue=null,ce=null;function se(){ue&&(ce(),ue=null,null===ie&&de())}function le(){oe=[],ie=null,ue=null}function de(){var t=oe.shift();t&&(ie=t,t.task().then((function(){t.id===En()&&(t.resolve(),ie=null,de())})).catch((function(n){t.id===En()&&(n&&(n.name,n.message,n.stack),ie=null,de())})))}var pe=!1;function fe(){pe=!0,u=c(),le(),Fn(),Bn(),$n=ae(),te=0,Gn(window,"popstate",ee),null===Kn&&(Kn=history.pushState,history.pushState=function(){Kn.apply(this,arguments),ve()&&ne()&&ee()}),null===Qn&&(Qn=history.replaceState,history.replaceState=function(){Qn.apply(this,arguments),ve()&&ne()&&ee()})}function he(){$n=null,te=0,Bn(),Fn(),le(),u=0,pe=!1}function ve(){return pe}function ge(){De(),L("clarity","restart")}var me=null;function ye(){me=null}function be(t){me={fetchStart:Math.round(t.fetchStart),connectStart:Math.round(t.connectStart),connectEnd:Math.round(t.connectEnd),requestStart:Math.round(t.requestStart),responseStart:Math.round(t.responseStart),responseEnd:Math.round(t.responseEnd),domInteractive:Math.round(t.domInteractive),domComplete:Math.round(t.domComplete),loadEventStart:Math.round(t.loadEventStart),loadEventEnd:Math.round(t.loadEventEnd),redirectCount:Math.round(t.redirectCount),size:t.transferSize?t.transferSize:0,type:t.type,protocol:t.nextHopProtocol,encodedSize:t.encodedBodySize?t.encodedBodySize:0,decodedSize:t.decodedBodySize?t.decodedBodySize:0},function(t){ot(this,void 0,void 0,(function(){var n,e;return it(this,(function(r){return n=s(),e=[n,t],29===t&&(e.push(me.fetchStart),e.push(me.connectStart),e.push(me.connectEnd),e.push(me.requestStart),e.push(me.responseStart),e.push(me.responseEnd),e.push(me.domInteractive),e.push(me.domComplete),e.push(me.loadEventStart),e.push(me.loadEventEnd),e.push(me.redirectCount),e.push(me.size),e.push(me.type),e.push(me.protocol),e.push(me.encodedSize),e.push(me.decodedSize),ye(),Jt(e)),[2]}))}))}(29)}var we,ke=0,Se=1/0,_e=0,Ee=0,Ie=[],Te=new Map,Oe=function(){return ke||0},Me=function(){if(!Ie.length)return-1;var t=Math.min(Ie.length-1,Math.floor((Oe()-Ee)/50));return Ie[t].latency},xe=function(){Ee=Oe(),Ie.length=0,Te.clear()},je=function(t){if(t.interactionId&&!(t.duration<40)){!function(t){"interactionCount"in performance?ke=performance.interactionCount:t.interactionId&&(Se=Math.min(Se,t.interactionId),_e=Math.max(_e,t.interactionId),ke=_e?(_e-Se)/7+1:0)}(t);var n=Ie[Ie.length-1],e=Te.get(t.interactionId);if(e||Ie.length<10||t.duration>(null==n?void 0:n.latency)){if(e)t.duration>e.latency&&(e.latency=t.duration);else{var r={id:t.interactionId,latency:t.duration};Te.set(r.id,r),Ie.push(r)}Ie.sort((function(t,n){return n.latency-t.latency})),Ie.length>10&&Ie.splice(10).forEach((function(t){return Te.delete(t.id)}))}}},Ne=["navigation","resource","longtask","first-input","layout-shift","largest-contentful-paint","event"];function Ce(){try{we&&we.disconnect(),we=new PerformanceObserver(Zn(ze));for(var t=0,n=Ne;t<n.length;t++){var e=n[t];PerformanceObserver.supportedEntryTypes.indexOf(e)>=0&&("layout-shift"===e&&W(9,0),we.observe({type:e,buffered:!0}))}}catch(t){}}function ze(t){!function(t){for(var n=(!("visibilityState"in document)||"visible"===document.visibilityState),e=0;e<t.length;e++){var r=t[e];switch(r.entryType){case"navigation":be(r);break;case"resource":var a=r.name;pn(4,Pe(a)),a!==o.upload&&a!==o.fallback||Z(28,r.duration);break;case"longtask":B(7);break;case"first-input":n&&Z(10,r.processingStart-r.startTime);break;case"event":n&&"PerformanceEventTiming"in window&&"interactionId"in PerformanceEventTiming.prototype&&(je(r),pn(37,Me().toString()));break;case"layout-shift":n&&!r.hadRecentInput&&W(9,1e3*r.value);break;case"largest-contentful-paint":n&&Z(8,r.startTime)}}}(t.getEntries())}var Ae=null;function Pe(t){return Ae||(Ae=document.createElement("a")),Ae.href=t,Ae.host}var qe=[N,N,N,Object.freeze({__proto__:null,start:function(){ye(),function(){navigator&&navigator.connection&&pn(27,navigator.connection.effectiveType),window.PerformanceObserver&&PerformanceObserver.supportedEntryTypes&&("complete"!==document.readyState?Gn(window,"load",J.bind(this,Ce,0)):Ce())}()},stop:function(){we&&we.disconnect(),we=null,xe(),Ae=null,ye()}}),Lt];function De(t){void 0===t&&(t=null),function(){try{var t=navigator&&"globalPrivacyControl"in navigator&&1==navigator.globalPrivacyControl;return!1===pe&&"undefined"!=typeof Promise&&window.MutationObserver&&document.createTreeWalker&&"now"in Date&&"now"in performance&&"undefined"!=typeof WeakMap&&!t}catch(t){return!1}}()&&(!function(t){if(null===t||pe)return!1;for(var n in t)n in o&&(o[n]=t[n])}(t),fe(),kt(),qe.forEach((function(t){return Zn(t.start)()})),null===t&&Xe())}function Re(){ve()&&(qe.slice().reverse().forEach((function(t){return Zn(t.stop)()})),St(),he(),void 0!==He&&(He[Le]=function(){(He[Le].q=He[Le].q||[]).push(arguments),"start"===arguments[0]&&He[Le].q.unshift(He[Le].q.pop())&&Xe()}))}var Ue=Object.freeze({__proto__:null,consent:In,consentv2:Tn,event:L,hashText:M,identify:st,metadata:_n,pause:function(){ve()&&(L("clarity","pause"),null===ue&&(ue=new Promise((function(t){ce=t}))))},queue:Jt,register:zt,resume:function(){ve()&&(se(),L("clarity","resume"))},set:ct,signal:function(t){yt=t},start:De,stop:Re,time:s,upgrade:rt,version:l}),He=window,Le="clarity";function Xe(){if(void 0!==He){if(He[Le]&&He[Le].v)return console.warn("Error CL001: Multiple Clarity tags detected.");var t=He[Le]&&He[Le].q||[];for(He[Le]=function(t){for(var n=[],e=1;e<arguments.length;e++)n[e-1]=arguments[e];return Ue[t].apply(Ue,n)},He[Le].v=l;t.length>0;)He[Le].apply(He,t.shift())}}Xe()}();
|
package/package.json
CHANGED
package/src/clarity.ts
CHANGED
|
@@ -10,11 +10,15 @@ import * as diagnostic from "@src/diagnostic";
|
|
|
10
10
|
import * as interaction from "@src/interaction";
|
|
11
11
|
import * as layout from "@src/layout";
|
|
12
12
|
import * as performance from "@src/performance";
|
|
13
|
+
import * as dynamic from "@src/core/dynamic";
|
|
13
14
|
export { version };
|
|
14
|
-
export { consent, consentv2,
|
|
15
|
+
export { consent, consentv2, event, identify, set, upgrade, metadata, signal } from "@src/data";
|
|
16
|
+
export { queue } from "@src/data/upload";
|
|
17
|
+
export { register } from "@src/core/dynamic";
|
|
18
|
+
export { time } from "@src/core/time";
|
|
15
19
|
export { hashText } from "@src/layout";
|
|
16
20
|
|
|
17
|
-
const modules: Module[] = [diagnostic, layout, interaction, performance];
|
|
21
|
+
const modules: Module[] = [diagnostic, layout, interaction, performance, dynamic];
|
|
18
22
|
|
|
19
23
|
export function start(config: Config = null): void {
|
|
20
24
|
// Check that browser supports required APIs and we do not attempt to start Clarity multiple times
|
|
@@ -0,0 +1,41 @@
|
|
|
1
|
+
let stopCallbacks: (() => void)[] = [];
|
|
2
|
+
let active = false;
|
|
3
|
+
|
|
4
|
+
export function start(): void {
|
|
5
|
+
active = true;
|
|
6
|
+
}
|
|
7
|
+
|
|
8
|
+
export function stop(): void {
|
|
9
|
+
stopCallbacks.reverse().forEach((callback) => {
|
|
10
|
+
try {
|
|
11
|
+
callback();
|
|
12
|
+
} catch (error) {
|
|
13
|
+
// Do nothing
|
|
14
|
+
}
|
|
15
|
+
});
|
|
16
|
+
stopCallbacks = [];
|
|
17
|
+
active = false;
|
|
18
|
+
}
|
|
19
|
+
|
|
20
|
+
export function register(stopCallback: () => void): void {
|
|
21
|
+
if (active && typeof stopCallback === "function") {
|
|
22
|
+
stopCallbacks.push(stopCallback);
|
|
23
|
+
}
|
|
24
|
+
}
|
|
25
|
+
|
|
26
|
+
export function dynamicEvent(url: string): void {
|
|
27
|
+
load(url);
|
|
28
|
+
}
|
|
29
|
+
|
|
30
|
+
function load(url: string): void {
|
|
31
|
+
if (!active) return;
|
|
32
|
+
|
|
33
|
+
try {
|
|
34
|
+
const script = document.createElement("script");
|
|
35
|
+
script.src = url;
|
|
36
|
+
script.async = true;
|
|
37
|
+
document.head.appendChild(script);
|
|
38
|
+
} catch (error) {
|
|
39
|
+
// Do nothing
|
|
40
|
+
}
|
|
41
|
+
}
|
package/src/core/history.ts
CHANGED
|
@@ -1,5 +1,4 @@
|
|
|
1
1
|
import { BooleanFlag, Code, Constant, Metric, Setting, Severity } from "@clarity-types/data";
|
|
2
|
-
import { FunctionNames } from "@clarity-types/performance";
|
|
3
2
|
import * as clarity from "@src/clarity";
|
|
4
3
|
import * as core from "@src/core"
|
|
5
4
|
import { bind } from "@src/core/event";
|
|
@@ -49,7 +48,6 @@ function check(): boolean {
|
|
|
49
48
|
}
|
|
50
49
|
|
|
51
50
|
function compute(): void {
|
|
52
|
-
compute.dn = FunctionNames.HistoryCompute;
|
|
53
51
|
count = 0; // Reset the counter
|
|
54
52
|
if (url !== getCurrentUrl()) {
|
|
55
53
|
// If the url changed, start tracking it as a new page
|
package/src/core/index.ts
CHANGED
|
@@ -1,6 +1,5 @@
|
|
|
1
1
|
import { Config } from "@clarity-types/core";
|
|
2
2
|
import { Constant } from "@clarity-types/data";
|
|
3
|
-
import { FunctionNames } from "@clarity-types/performance";
|
|
4
3
|
import configuration from "@src/core/config";
|
|
5
4
|
import * as event from "@src/core/event";
|
|
6
5
|
import * as history from "@src/core/history";
|
|
@@ -77,7 +76,6 @@ export function suspend(): void {
|
|
|
77
76
|
}
|
|
78
77
|
|
|
79
78
|
function restart(): void {
|
|
80
|
-
restart.dn = FunctionNames.Restart;
|
|
81
79
|
clarity.start();
|
|
82
80
|
custom.event(Constant.Clarity, Constant.Restart);
|
|
83
81
|
}
|
package/src/core/measure.ts
CHANGED
|
@@ -1,7 +1,6 @@
|
|
|
1
|
-
import {
|
|
1
|
+
import { Metric, Setting } from "@clarity-types/data";
|
|
2
2
|
import { report } from "@src/core/report";
|
|
3
3
|
import * as metric from "@src/data/metric";
|
|
4
|
-
import * as internal from "@src/diagnostic/internal";
|
|
5
4
|
|
|
6
5
|
// tslint:disable-next-line: ban-types
|
|
7
6
|
export default function (method: Function): Function {
|
|
@@ -13,7 +12,6 @@ export default function (method: Function): Function {
|
|
|
13
12
|
if (duration > Setting.LongTask) {
|
|
14
13
|
metric.count(Metric.LongTaskCount);
|
|
15
14
|
metric.max(Metric.ThreadBlockedTime, duration);
|
|
16
|
-
internal.log(Code.FunctionExecutionTime, Severity.Info, `${method.dn || method.name}-${duration}`);
|
|
17
15
|
}
|
|
18
16
|
};
|
|
19
17
|
}
|
package/src/core/version.ts
CHANGED
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
let version = "0.8.
|
|
1
|
+
let version = "0.8.25";
|
|
2
2
|
export default version;
|
package/src/data/metadata.ts
CHANGED
|
@@ -213,7 +213,7 @@ export function save(): void {
|
|
|
213
213
|
let ts = Math.round(Date.now());
|
|
214
214
|
let upload = config.upload && typeof config.upload === Constant.String ? (config.upload as string).replace(Constant.HTTPS, Constant.Empty) : Constant.Empty;
|
|
215
215
|
let upgrade = config.lean ? BooleanFlag.False : BooleanFlag.True;
|
|
216
|
-
setCookie(Constant.SessionKey, [data.sessionId, ts, data.pageNum, upgrade, upload].join(Constant.
|
|
216
|
+
setCookie(Constant.SessionKey, [data.sessionId, ts, data.pageNum, upgrade, upload].join(Constant.Caret), Setting.SessionExpire);
|
|
217
217
|
}
|
|
218
218
|
|
|
219
219
|
function processCallback(upgrade: BooleanFlag, consentUpdate: boolean = false): void {
|
|
@@ -252,7 +252,7 @@ function track(u: User, consent: BooleanFlag = null): void {
|
|
|
252
252
|
// To avoid cookie churn, write user id cookie only once every day
|
|
253
253
|
if (u.expiry === null || Math.abs(end - u.expiry) >= Setting.CookieInterval || u.consent !== consent || u.dob !== dob) {
|
|
254
254
|
let cookieParts = [data.userId, Setting.CookieVersion, end.toString(36), consent, dob];
|
|
255
|
-
setCookie(Constant.CookieKey, cookieParts.join(Constant.
|
|
255
|
+
setCookie(Constant.CookieKey, cookieParts.join(Constant.Caret), Setting.Expire);
|
|
256
256
|
}
|
|
257
257
|
}
|
|
258
258
|
|
package/src/data/upload.ts
CHANGED
|
@@ -21,6 +21,7 @@ import * as style from "@src/layout/style";
|
|
|
21
21
|
import { report } from "@src/core/report";
|
|
22
22
|
import { signalsEvent } from "@src/data/signal";
|
|
23
23
|
import { snapshot } from "@src/insight/snapshot";
|
|
24
|
+
import { dynamicEvent } from "@src/core/dynamic";
|
|
24
25
|
|
|
25
26
|
let discoverBytes: number = 0;
|
|
26
27
|
let playbackBytes: number = 0;
|
|
@@ -189,13 +190,9 @@ function send(payload: string, zipped: Uint8Array, sequence: number, beacon: boo
|
|
|
189
190
|
dispatched = navigator.sendBeacon.bind(navigator)(url, payload);
|
|
190
191
|
if (dispatched) {
|
|
191
192
|
done(sequence);
|
|
192
|
-
} else {
|
|
193
|
-
// If sendBeacon fails, we report the error and continue with XHR upload
|
|
194
|
-
report(new Error(`${Constant.BeaconError}: ${payload.length}`));
|
|
195
193
|
}
|
|
196
194
|
} catch(error) {
|
|
197
|
-
// If sendBeacon fails, we
|
|
198
|
-
report(new Error(`${Constant.BeaconError}: ${error?.message?.substring(0, 50)} : ${payload.length}`));
|
|
195
|
+
// If sendBeacon fails, we do nothing and continue with XHR upload
|
|
199
196
|
}
|
|
200
197
|
}
|
|
201
198
|
|
|
@@ -314,6 +311,11 @@ function response(payload: string): void {
|
|
|
314
311
|
case Constant.Signal:
|
|
315
312
|
if (parts.length > 1) { signalsEvent(parts[1]); }
|
|
316
313
|
break;
|
|
314
|
+
case Constant.Module:
|
|
315
|
+
if (parts.length > 1) {
|
|
316
|
+
dynamicEvent(parts[1]);
|
|
317
|
+
}
|
|
318
|
+
break;
|
|
317
319
|
case Constant.Snapshot:
|
|
318
320
|
config.lean = false; // Disable lean mode to ensure we can send playback information to server.
|
|
319
321
|
snapshot();
|
package/src/diagnostic/index.ts
CHANGED
|
@@ -1,10 +1,8 @@
|
|
|
1
|
-
import { FunctionNames } from "@clarity-types/performance";
|
|
2
1
|
import * as fraud from "@src/diagnostic/fraud";
|
|
3
2
|
import * as internal from "@src/diagnostic/internal";
|
|
4
3
|
import * as script from "@src/diagnostic/script";
|
|
5
4
|
|
|
6
5
|
export function start(): void {
|
|
7
|
-
start.dn = FunctionNames.DiagnosticStart;
|
|
8
6
|
fraud.start();
|
|
9
7
|
script.start();
|
|
10
8
|
internal.start();
|
package/src/diagnostic/script.ts
CHANGED
|
@@ -1,6 +1,5 @@
|
|
|
1
1
|
import { Event, Setting } from "@clarity-types/data";
|
|
2
2
|
import { ScriptErrorData } from "@clarity-types/diagnostic";
|
|
3
|
-
import { FunctionNames } from "@clarity-types/performance";
|
|
4
3
|
import { bind } from "@src/core/event";
|
|
5
4
|
import encode from "./encode";
|
|
6
5
|
|
|
@@ -13,7 +12,6 @@ export function start(): void {
|
|
|
13
12
|
}
|
|
14
13
|
|
|
15
14
|
function handler(error: ErrorEvent): boolean {
|
|
16
|
-
handler.dn = FunctionNames.ScriptHandler;
|
|
17
15
|
let e = error["error"] || error;
|
|
18
16
|
// While rare, it's possible for code to fail repeatedly during the lifetime of the same page
|
|
19
17
|
// In those cases, we only want to log the failure first few times and not spam logs with redundant information.
|
|
@@ -1,6 +1,5 @@
|
|
|
1
1
|
import { Constant, Event, Setting } from "@clarity-types/data";
|
|
2
2
|
import { ChangeState } from "@clarity-types/interaction";
|
|
3
|
-
import { FunctionNames } from "@clarity-types/performance";
|
|
4
3
|
import config from "@src/core/config";
|
|
5
4
|
import { bind } from "@src/core/event";
|
|
6
5
|
import hash from "@src/core/hash";
|
|
@@ -21,7 +20,6 @@ export function observe(root: Node): void {
|
|
|
21
20
|
}
|
|
22
21
|
|
|
23
22
|
function recompute(evt: UIEvent): void {
|
|
24
|
-
recompute.dn = FunctionNames.ChangeRecompute;
|
|
25
23
|
let element = target(evt) as HTMLInputElement;
|
|
26
24
|
if (element) {
|
|
27
25
|
let value = element.value;
|
package/src/interaction/click.ts
CHANGED
|
@@ -1,7 +1,6 @@
|
|
|
1
1
|
import { BooleanFlag, Constant, Event, Setting } from "@clarity-types/data";
|
|
2
2
|
import { BrowsingContext, ClickState, TextInfo } from "@clarity-types/interaction";
|
|
3
3
|
import { Box } from "@clarity-types/layout";
|
|
4
|
-
import { FunctionNames } from "@clarity-types/performance";
|
|
5
4
|
import { bind } from "@src/core/event";
|
|
6
5
|
import { schedule } from "@src/core/task";
|
|
7
6
|
import { time } from "@src/core/time";
|
|
@@ -23,7 +22,6 @@ export function observe(root: Node): void {
|
|
|
23
22
|
}
|
|
24
23
|
|
|
25
24
|
function handler(event: Event, root: Node, evt: MouseEvent): void {
|
|
26
|
-
handler.dn = FunctionNames.ClickHandler;
|
|
27
25
|
let frame = iframe(root);
|
|
28
26
|
let d = frame && frame.contentDocument ? frame.contentDocument.documentElement : document.documentElement;
|
|
29
27
|
let x = "pageX" in evt ? Math.round(evt.pageX) : ("clientX" in evt ? Math.round(evt["clientX"] + d.scrollLeft) : null);
|
|
@@ -1,6 +1,5 @@
|
|
|
1
1
|
import { Event } from "@clarity-types/data";
|
|
2
2
|
import { Clipboard, ClipboardState } from "@clarity-types/interaction";
|
|
3
|
-
import { FunctionNames } from "@clarity-types/performance";
|
|
4
3
|
import { bind } from "@src/core/event";
|
|
5
4
|
import { schedule } from "@src/core/task";
|
|
6
5
|
import { time } from "@src/core/time";
|
|
@@ -20,7 +19,6 @@ export function observe(root: Node): void {
|
|
|
20
19
|
}
|
|
21
20
|
|
|
22
21
|
function recompute(action: Clipboard, evt: UIEvent): void {
|
|
23
|
-
recompute.dn = FunctionNames.ClipboardRecompute;
|
|
24
22
|
state.push({ time: time(evt), event: Event.Clipboard, data: { target: target(evt), action } });
|
|
25
23
|
schedule(encode.bind(this, Event.Clipboard));
|
|
26
24
|
}
|
|
@@ -109,6 +109,7 @@ export default async function (type: Event, ts: number = null): Promise<void> {
|
|
|
109
109
|
tokens = [entry.time, entry.event];
|
|
110
110
|
tokens.push(iTarget.id);
|
|
111
111
|
tokens.push(scrub.text(entry.data.value, "input", iTarget.privacy, false, entry.data.type));
|
|
112
|
+
tokens.push(entry.data.trust);
|
|
112
113
|
queue(tokens);
|
|
113
114
|
}
|
|
114
115
|
input.reset();
|
package/src/interaction/index.ts
CHANGED
|
@@ -1,4 +1,3 @@
|
|
|
1
|
-
import { FunctionNames } from "@clarity-types/performance";
|
|
2
1
|
import * as change from "@src/interaction/change";
|
|
3
2
|
import * as click from "@src/interaction/click";
|
|
4
3
|
import * as clipboard from "@src/interaction/clipboard";
|
|
@@ -13,7 +12,6 @@ import * as unload from "@src/interaction/unload";
|
|
|
13
12
|
import * as visibility from "@src/interaction/visibility";
|
|
14
13
|
|
|
15
14
|
export function start(): void {
|
|
16
|
-
start.dn = FunctionNames.InteractionStart;
|
|
17
15
|
timeline.start();
|
|
18
16
|
click.start();
|
|
19
17
|
clipboard.start();
|
package/src/interaction/input.ts
CHANGED
|
@@ -1,6 +1,5 @@
|
|
|
1
|
-
import { Event } from "@clarity-types/data";
|
|
1
|
+
import { BooleanFlag, Event } from "@clarity-types/data";
|
|
2
2
|
import { InputData, InputState, Setting } from "@clarity-types/interaction";
|
|
3
|
-
import { FunctionNames } from "@clarity-types/performance";
|
|
4
3
|
import { bind } from "@src/core/event";
|
|
5
4
|
import { schedule } from "@src/core/task";
|
|
6
5
|
import { time } from "@src/core/time";
|
|
@@ -21,7 +20,6 @@ export function observe(root: Node): void {
|
|
|
21
20
|
}
|
|
22
21
|
|
|
23
22
|
function recompute(evt: UIEvent): void {
|
|
24
|
-
recompute.dn = FunctionNames.InputRecompute;
|
|
25
23
|
let input = target(evt) as HTMLInputElement;
|
|
26
24
|
let value = get(input);
|
|
27
25
|
if (input && input.type && value) {
|
|
@@ -34,7 +32,7 @@ function recompute(evt: UIEvent): void {
|
|
|
34
32
|
break;
|
|
35
33
|
}
|
|
36
34
|
|
|
37
|
-
let data: InputData = { target: input, value: v, type: t };
|
|
35
|
+
let data: InputData = { target: input, value: v, type: t, trust: evt.isTrusted ? BooleanFlag.True : BooleanFlag.False };
|
|
38
36
|
|
|
39
37
|
// If last entry in the queue is for the same target node as the current one, remove it so we can later swap it with current data.
|
|
40
38
|
if (state.length > 0 && (state[state.length - 1].data.target === data.target)) { state.pop(); }
|
|
@@ -1,6 +1,5 @@
|
|
|
1
1
|
import { Event } from "@clarity-types/data";
|
|
2
2
|
import { PointerState, Setting } from "@clarity-types/interaction";
|
|
3
|
-
import { FunctionNames } from "@clarity-types/performance";
|
|
4
3
|
import { bind } from "@src/core/event";
|
|
5
4
|
import { schedule } from "@src/core/task";
|
|
6
5
|
import { time } from "@src/core/time";
|
|
@@ -33,7 +32,6 @@ export function observe(root: Node): void {
|
|
|
33
32
|
}
|
|
34
33
|
|
|
35
34
|
function mouse(event: Event, root: Node, evt: MouseEvent): void {
|
|
36
|
-
mouse.dn = FunctionNames.PointerMouse;
|
|
37
35
|
let frame = iframe(root);
|
|
38
36
|
let d = frame && frame.contentDocument ? frame.contentDocument.documentElement : document.documentElement;
|
|
39
37
|
let x = "pageX" in evt ? Math.round(evt.pageX) : ("clientX" in evt ? Math.round(evt["clientX"] + d.scrollLeft) : null);
|
|
@@ -50,7 +48,6 @@ function mouse(event: Event, root: Node, evt: MouseEvent): void {
|
|
|
50
48
|
}
|
|
51
49
|
|
|
52
50
|
function touch(event: Event, root: Node, evt: TouchEvent): void {
|
|
53
|
-
touch.dn = FunctionNames.PointerTouch;
|
|
54
51
|
let frame = iframe(root);
|
|
55
52
|
let d = frame && frame.contentDocument ? frame.contentDocument.documentElement : document.documentElement;
|
|
56
53
|
let touches = evt.changedTouches;
|
|
@@ -1,6 +1,5 @@
|
|
|
1
1
|
import { Event } from "@clarity-types/data";
|
|
2
2
|
import { ResizeData, Setting } from "@clarity-types/interaction";
|
|
3
|
-
import { FunctionNames } from "@clarity-types/performance";
|
|
4
3
|
import { clearTimeout, setTimeout } from "@src/core/timeout";
|
|
5
4
|
import { bind } from "@src/core/event";
|
|
6
5
|
import throttle from "@src/core/throttle";
|
|
@@ -20,7 +19,6 @@ export function start(): void {
|
|
|
20
19
|
}
|
|
21
20
|
|
|
22
21
|
function recompute(): void {
|
|
23
|
-
recompute.dn = FunctionNames.ResizeRecompute;
|
|
24
22
|
let de = document.documentElement;
|
|
25
23
|
// window.innerWidth includes width of the scrollbar and is not a true representation of the viewport width.
|
|
26
24
|
// Therefore, when possible, use documentElement's clientWidth property.
|
|
@@ -1,6 +1,5 @@
|
|
|
1
1
|
import { Constant, Dimension, Event } from "@clarity-types/data";
|
|
2
2
|
import { ScrollState, Setting } from "@clarity-types/interaction";
|
|
3
|
-
import { FunctionNames } from "@clarity-types/performance";
|
|
4
3
|
import { bind } from "@src/core/event";
|
|
5
4
|
import { schedule } from "@src/core/task";
|
|
6
5
|
import { time } from "@src/core/time";
|
|
@@ -28,7 +27,6 @@ export function observe(root: Node): void {
|
|
|
28
27
|
}
|
|
29
28
|
|
|
30
29
|
function recompute(event: UIEvent = null): void {
|
|
31
|
-
recompute.dn = FunctionNames.ScrollRecompute;
|
|
32
30
|
let w = window as Window;
|
|
33
31
|
let de = document.documentElement;
|
|
34
32
|
let element = event ? target(event) : de;
|
|
@@ -112,7 +110,6 @@ function similar(last: ScrollState, current: ScrollState): boolean {
|
|
|
112
110
|
}
|
|
113
111
|
|
|
114
112
|
export function compute(): void {
|
|
115
|
-
compute.dn = FunctionNames.ScrollCompute;
|
|
116
113
|
if (initialTop) {
|
|
117
114
|
const top = metadata(initialTop, null);
|
|
118
115
|
dimension.log(Dimension.InitialScrollTop, top?.hash?.join(Constant.Dot));
|
|
@@ -1,6 +1,5 @@
|
|
|
1
1
|
import { Event } from "@clarity-types/data";
|
|
2
2
|
import { SelectionData, Setting } from "@clarity-types/interaction";
|
|
3
|
-
import { FunctionNames } from "@clarity-types/performance";
|
|
4
3
|
import { bind } from "@src/core/event";
|
|
5
4
|
import { schedule } from "@src/core/task";
|
|
6
5
|
import { clearTimeout, setTimeout } from "@src/core/timeout";
|
|
@@ -20,7 +19,6 @@ export function observe(root: Node): void {
|
|
|
20
19
|
}
|
|
21
20
|
|
|
22
21
|
function recompute(root: Node): void {
|
|
23
|
-
recompute.dn = FunctionNames.SelectionRecompute;
|
|
24
22
|
let doc = root.nodeType === Node.DOCUMENT_NODE ? root as Document : document;
|
|
25
23
|
let current = doc.getSelection();
|
|
26
24
|
|
|
@@ -1,6 +1,5 @@
|
|
|
1
1
|
import { Event } from "@clarity-types/data";
|
|
2
2
|
import { SubmitState } from "@clarity-types/interaction";
|
|
3
|
-
import { FunctionNames } from "@clarity-types/performance";
|
|
4
3
|
import { bind } from "@src/core/event";
|
|
5
4
|
import { schedule } from "@src/core/task";
|
|
6
5
|
import { time } from "@src/core/time";
|
|
@@ -18,7 +17,6 @@ export function observe(root: Node): void {
|
|
|
18
17
|
}
|
|
19
18
|
|
|
20
19
|
function recompute(evt: UIEvent): void {
|
|
21
|
-
recompute.dn = FunctionNames.SubmitRecompute;
|
|
22
20
|
state.push({ time: time(evt), event: Event.Submit, data: { target: target(evt) } });
|
|
23
21
|
schedule(encode.bind(this, Event.Submit));
|
|
24
22
|
}
|
|
@@ -1,6 +1,5 @@
|
|
|
1
1
|
import { BooleanFlag, Event } from "@clarity-types/data";
|
|
2
2
|
import { UnloadData } from "@clarity-types/interaction";
|
|
3
|
-
import { FunctionNames } from "@clarity-types/performance";
|
|
4
3
|
import * as clarity from "@src/clarity";
|
|
5
4
|
import { bind } from "@src/core/event";
|
|
6
5
|
import { time } from "@src/core/time";
|
|
@@ -13,7 +12,6 @@ export function start(): void {
|
|
|
13
12
|
}
|
|
14
13
|
|
|
15
14
|
function recompute(evt: PageTransitionEvent): void {
|
|
16
|
-
recompute.dn = FunctionNames.UnloadRecompute;
|
|
17
15
|
data = { name: evt.type, persisted: evt.persisted ? BooleanFlag.True : BooleanFlag.False };
|
|
18
16
|
encode(Event.Unload, time(evt));
|
|
19
17
|
clarity.stop();
|
|
@@ -1,6 +1,5 @@
|
|
|
1
1
|
import { Event } from "@clarity-types/data";
|
|
2
2
|
import { VisibilityData } from "@clarity-types/interaction";
|
|
3
|
-
import { FunctionNames } from "@clarity-types/performance";
|
|
4
3
|
import { bind } from "@src/core/event";
|
|
5
4
|
import { time } from "@src/core/time";
|
|
6
5
|
import encode from "./encode";
|
|
@@ -13,7 +12,6 @@ export function start(): void {
|
|
|
13
12
|
}
|
|
14
13
|
|
|
15
14
|
function recompute(evt: UIEvent = null): void {
|
|
16
|
-
recompute.dn = FunctionNames.VisibilityRecompute;
|
|
17
15
|
data = { visible: "visibilityState" in document ? document.visibilityState : "default" };
|
|
18
16
|
encode(Event.Visibility, time(evt));
|
|
19
17
|
}
|
package/src/layout/document.ts
CHANGED
|
@@ -1,6 +1,5 @@
|
|
|
1
1
|
import { Event } from "@clarity-types/data";
|
|
2
2
|
import { DocumentData } from "@clarity-types/layout";
|
|
3
|
-
import { FunctionNames } from "@clarity-types/performance";
|
|
4
3
|
import encode from "@src/layout/encode";
|
|
5
4
|
|
|
6
5
|
export let data: DocumentData;
|
|
@@ -15,7 +14,6 @@ export function start(): void {
|
|
|
15
14
|
}
|
|
16
15
|
|
|
17
16
|
export function compute(): void {
|
|
18
|
-
compute.dn = FunctionNames.DocumentCompute;
|
|
19
17
|
let body = document.body;
|
|
20
18
|
let d = document.documentElement;
|
|
21
19
|
let bodyClientWidth = body ? body.clientWidth : null;
|
package/src/layout/index.ts
CHANGED
|
@@ -1,4 +1,3 @@
|
|
|
1
|
-
import { FunctionNames } from "@clarity-types/performance";
|
|
2
1
|
import * as discover from "@src/layout/discover";
|
|
3
2
|
import * as doc from "@src/layout/document";
|
|
4
3
|
import * as dom from "@src/layout/dom";
|
|
@@ -12,7 +11,6 @@ import config from "@src/core/config";
|
|
|
12
11
|
export { hashText } from "@src/layout/dom";
|
|
13
12
|
|
|
14
13
|
export function start(): void {
|
|
15
|
-
start.dn = FunctionNames.LayoutStart;
|
|
16
14
|
// The order below is important
|
|
17
15
|
// and is determined by interdependencies of modules
|
|
18
16
|
doc.start();
|