clarity-js 0.7.32 → 0.7.33
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 +70 -39
- package/build/clarity.min.js +1 -1
- package/build/clarity.module.js +70 -39
- package/build/clarity.performance.js +1 -1
- package/package.json +1 -1
- package/src/core/config.ts +2 -1
- package/src/core/time.ts +7 -2
- package/src/core/version.ts +1 -1
- package/src/interaction/encode.ts +6 -2
- package/src/interaction/scroll.ts +30 -8
- package/src/layout/discover.ts +2 -1
- package/src/layout/encode.ts +4 -2
- package/src/layout/mutation.ts +4 -2
- package/src/layout/node.ts +1 -1
- package/types/core.d.ts +1 -0
- package/types/data.d.ts +3 -1
- package/types/interaction.d.ts +2 -2
package/build/clarity.module.js
CHANGED
|
@@ -131,7 +131,8 @@ var config$1 = {
|
|
|
131
131
|
upgrade: null,
|
|
132
132
|
action: null,
|
|
133
133
|
dob: null,
|
|
134
|
-
delayDom: false
|
|
134
|
+
delayDom: false,
|
|
135
|
+
throttleDom: true
|
|
135
136
|
};
|
|
136
137
|
|
|
137
138
|
function api(method) {
|
|
@@ -143,18 +144,23 @@ function api(method) {
|
|
|
143
144
|
|
|
144
145
|
var startTime = 0;
|
|
145
146
|
function start$I() {
|
|
146
|
-
startTime = performance.now();
|
|
147
|
+
startTime = performance.now() + performance.timeOrigin;
|
|
147
148
|
}
|
|
149
|
+
// event.timestamp is number of milliseconds elapsed since the document was loaded
|
|
150
|
+
// since iframes can be loaded later the event timestamp is not the same as performance.now()
|
|
151
|
+
// converting everything to absolute time by adding timeorigin of the event view
|
|
152
|
+
// to synchronize times before calculating the difference with start time
|
|
148
153
|
function time(event) {
|
|
149
154
|
if (event === void 0) { event = null; }
|
|
150
155
|
var ts = event && event.timeStamp > 0 ? event.timeStamp : performance.now();
|
|
151
|
-
|
|
156
|
+
var origin = event && event.view ? event.view.performance.timeOrigin : performance.timeOrigin;
|
|
157
|
+
return Math.max(Math.round(ts + origin - startTime), 0);
|
|
152
158
|
}
|
|
153
159
|
function stop$F() {
|
|
154
160
|
startTime = 0;
|
|
155
161
|
}
|
|
156
162
|
|
|
157
|
-
var version$1 = "0.7.
|
|
163
|
+
var version$1 = "0.7.33";
|
|
158
164
|
|
|
159
165
|
// tslint:disable: no-bitwise
|
|
160
166
|
function hash (input, precision) {
|
|
@@ -427,7 +433,7 @@ function visibility(t, visible) {
|
|
|
427
433
|
}
|
|
428
434
|
update$2 = true;
|
|
429
435
|
}
|
|
430
|
-
function compute$
|
|
436
|
+
function compute$e() {
|
|
431
437
|
if (update$2) {
|
|
432
438
|
encode$1(4 /* Event.Baseline */);
|
|
433
439
|
}
|
|
@@ -439,7 +445,7 @@ function stop$E() {
|
|
|
439
445
|
var baseline = /*#__PURE__*/Object.freeze({
|
|
440
446
|
__proto__: null,
|
|
441
447
|
activity: activity,
|
|
442
|
-
compute: compute$
|
|
448
|
+
compute: compute$e,
|
|
443
449
|
reset: reset$s,
|
|
444
450
|
start: start$H,
|
|
445
451
|
get state () { return state$c; },
|
|
@@ -511,7 +517,7 @@ function max(metric, value) {
|
|
|
511
517
|
}
|
|
512
518
|
}
|
|
513
519
|
}
|
|
514
|
-
function compute$
|
|
520
|
+
function compute$d() {
|
|
515
521
|
encode$1(0 /* Event.Metric */);
|
|
516
522
|
}
|
|
517
523
|
function reset$r() {
|
|
@@ -589,7 +595,7 @@ function track$7(event, time) {
|
|
|
589
595
|
}
|
|
590
596
|
}
|
|
591
597
|
}
|
|
592
|
-
function compute$
|
|
598
|
+
function compute$c() {
|
|
593
599
|
encode$1(36 /* Event.Summary */);
|
|
594
600
|
}
|
|
595
601
|
function reset$p() {
|
|
@@ -598,7 +604,7 @@ function reset$p() {
|
|
|
598
604
|
|
|
599
605
|
var summary = /*#__PURE__*/Object.freeze({
|
|
600
606
|
__proto__: null,
|
|
601
|
-
compute: compute$
|
|
607
|
+
compute: compute$c,
|
|
602
608
|
get data () { return data$g; },
|
|
603
609
|
reset: reset$p,
|
|
604
610
|
start: start$E,
|
|
@@ -753,7 +759,7 @@ function log$2(variable, value) {
|
|
|
753
759
|
data$e[variable] = validValues;
|
|
754
760
|
}
|
|
755
761
|
}
|
|
756
|
-
function compute$
|
|
762
|
+
function compute$b() {
|
|
757
763
|
encode$1(34 /* Event.Variable */);
|
|
758
764
|
}
|
|
759
765
|
function reset$o() {
|
|
@@ -794,7 +800,7 @@ function detect(input) {
|
|
|
794
800
|
|
|
795
801
|
var variable = /*#__PURE__*/Object.freeze({
|
|
796
802
|
__proto__: null,
|
|
797
|
-
compute: compute$
|
|
803
|
+
compute: compute$b,
|
|
798
804
|
get data () { return data$e; },
|
|
799
805
|
identify: identify,
|
|
800
806
|
reset: reset$o,
|
|
@@ -903,12 +909,12 @@ function stop$y() {
|
|
|
903
909
|
modules$1.slice().reverse().forEach(function (x) { return measure(x.stop)(); });
|
|
904
910
|
stop$D();
|
|
905
911
|
}
|
|
906
|
-
function compute$
|
|
907
|
-
compute$
|
|
908
|
-
compute$
|
|
912
|
+
function compute$a() {
|
|
913
|
+
compute$b();
|
|
914
|
+
compute$e();
|
|
909
915
|
compute$2();
|
|
916
|
+
compute$d();
|
|
910
917
|
compute$c();
|
|
911
|
-
compute$b();
|
|
912
918
|
compute$3();
|
|
913
919
|
compute$4();
|
|
914
920
|
}
|
|
@@ -1656,9 +1662,9 @@ function reset$k() {
|
|
|
1656
1662
|
}
|
|
1657
1663
|
function start$x() {
|
|
1658
1664
|
reset$k();
|
|
1659
|
-
compute$
|
|
1665
|
+
compute$9();
|
|
1660
1666
|
}
|
|
1661
|
-
function compute$
|
|
1667
|
+
function compute$9() {
|
|
1662
1668
|
var body = document.body;
|
|
1663
1669
|
var d = document.documentElement;
|
|
1664
1670
|
var bodyClientWidth = body ? body.clientWidth : null;
|
|
@@ -1716,7 +1722,7 @@ function checkDocumentStyles(documentNode) {
|
|
|
1716
1722
|
}
|
|
1717
1723
|
max(36 /* Metric.ConstructedStyles */, 1);
|
|
1718
1724
|
}
|
|
1719
|
-
function compute$
|
|
1725
|
+
function compute$8() {
|
|
1720
1726
|
checkDocumentStyles(document);
|
|
1721
1727
|
}
|
|
1722
1728
|
function reset$j() {
|
|
@@ -1923,9 +1929,9 @@ function encode$4 (type, timer, ts) {
|
|
|
1923
1929
|
tokens.push(value.id * factor);
|
|
1924
1930
|
if (value.parent && active) {
|
|
1925
1931
|
tokens.push(value.parent);
|
|
1926
|
-
|
|
1927
|
-
|
|
1928
|
-
|
|
1932
|
+
if (value.previous) {
|
|
1933
|
+
tokens.push(value.previous);
|
|
1934
|
+
}
|
|
1929
1935
|
}
|
|
1930
1936
|
tokens.push(suspend ? "*M" /* Constant.SuspendMutationTag */ : data[key]);
|
|
1931
1937
|
if (box && box.length === 2) {
|
|
@@ -2033,7 +2039,7 @@ function track$4(id, event) {
|
|
|
2033
2039
|
// Process updates to this region, if applicable
|
|
2034
2040
|
process$6(node, data, interaction, data.visibility);
|
|
2035
2041
|
}
|
|
2036
|
-
function compute$
|
|
2042
|
+
function compute$7() {
|
|
2037
2043
|
// Process any regions where we couldn't resolve an "id" for at the time of last intersection observer event
|
|
2038
2044
|
// This could happen in cases where elements are not yet processed by Clarity's virtual DOM but browser reports a change, regardless.
|
|
2039
2045
|
// For those cases we add them to the queue and re-process them below
|
|
@@ -2473,6 +2479,8 @@ function stop$m() {
|
|
|
2473
2479
|
}
|
|
2474
2480
|
|
|
2475
2481
|
var state$2 = [];
|
|
2482
|
+
var initialTop = null;
|
|
2483
|
+
var initialBottom = null;
|
|
2476
2484
|
var timeout$3 = null;
|
|
2477
2485
|
function start$n() {
|
|
2478
2486
|
state$2 = [];
|
|
@@ -2505,11 +2513,13 @@ function recompute$4(event) {
|
|
|
2505
2513
|
var yOffset = width > height ? height * 0.15 : height * 0.2;
|
|
2506
2514
|
var startYPosition = yOffset;
|
|
2507
2515
|
var endYPosition = height - yOffset;
|
|
2508
|
-
var top =
|
|
2509
|
-
var bottom =
|
|
2516
|
+
var top = getPositionNode(xPosition, startYPosition);
|
|
2517
|
+
var bottom = getPositionNode(xPosition, endYPosition);
|
|
2510
2518
|
var current = { time: time(event), event: 10 /* Event.Scroll */, data: { target: element, x: x, y: y, top: top, bottom: bottom } };
|
|
2511
2519
|
// We don't send any scroll events if this is the first event and the current position is top (0,0)
|
|
2512
2520
|
if ((event === null && x === 0 && y === 0) || (x === null || y === null)) {
|
|
2521
|
+
initialTop = top;
|
|
2522
|
+
initialBottom = bottom;
|
|
2513
2523
|
return;
|
|
2514
2524
|
}
|
|
2515
2525
|
var length = state$2.length;
|
|
@@ -2521,8 +2531,8 @@ function recompute$4(event) {
|
|
|
2521
2531
|
clearTimeout(timeout$3);
|
|
2522
2532
|
timeout$3 = setTimeout(process$3, 500 /* Setting.LookAhead */, 10 /* Event.Scroll */);
|
|
2523
2533
|
}
|
|
2524
|
-
function
|
|
2525
|
-
var _a, _b
|
|
2534
|
+
function getPositionNode(x, y) {
|
|
2535
|
+
var _a, _b;
|
|
2526
2536
|
var node;
|
|
2527
2537
|
if ("caretPositionFromPoint" in document) {
|
|
2528
2538
|
node = (_a = document.caretPositionFromPoint(x, y)) === null || _a === void 0 ? void 0 : _a.offsetNode;
|
|
@@ -2536,10 +2546,12 @@ function getPositionHash(x, y) {
|
|
|
2536
2546
|
if (node && node.nodeType === Node.TEXT_NODE) {
|
|
2537
2547
|
node = node.parentNode;
|
|
2538
2548
|
}
|
|
2539
|
-
return
|
|
2549
|
+
return node;
|
|
2540
2550
|
}
|
|
2541
2551
|
function reset$a() {
|
|
2542
2552
|
state$2 = [];
|
|
2553
|
+
initialTop = null;
|
|
2554
|
+
initialBottom = null;
|
|
2543
2555
|
}
|
|
2544
2556
|
function process$3(event) {
|
|
2545
2557
|
schedule$1(encode$3.bind(this, event));
|
|
@@ -2549,9 +2561,22 @@ function similar(last, current) {
|
|
|
2549
2561
|
var dy = last.data.y - current.data.y;
|
|
2550
2562
|
return (dx * dx + dy * dy < 20 /* Setting.Distance */ * 20 /* Setting.Distance */) && (current.time - last.time < 25 /* Setting.Interval */);
|
|
2551
2563
|
}
|
|
2564
|
+
function compute$6() {
|
|
2565
|
+
var _a, _b;
|
|
2566
|
+
if (initialTop) {
|
|
2567
|
+
var top_1 = metadata$2(initialTop, null);
|
|
2568
|
+
log(31 /* Dimension.InitialScrollTop */, (_a = top_1 === null || top_1 === void 0 ? void 0 : top_1.hash) === null || _a === void 0 ? void 0 : _a.join("." /* Constant.Dot */));
|
|
2569
|
+
}
|
|
2570
|
+
if (initialBottom) {
|
|
2571
|
+
var bottom = metadata$2(initialBottom, null);
|
|
2572
|
+
log(32 /* Dimension.InitialScrollBottom */, (_b = bottom === null || bottom === void 0 ? void 0 : bottom.hash) === null || _b === void 0 ? void 0 : _b.join("." /* Constant.Dot */));
|
|
2573
|
+
}
|
|
2574
|
+
}
|
|
2552
2575
|
function stop$l() {
|
|
2553
2576
|
clearTimeout(timeout$3);
|
|
2554
2577
|
state$2 = [];
|
|
2578
|
+
initialTop = null;
|
|
2579
|
+
initialBottom = null;
|
|
2555
2580
|
}
|
|
2556
2581
|
|
|
2557
2582
|
var data$a = null;
|
|
@@ -2773,7 +2798,7 @@ function num$1(input, scale) {
|
|
|
2773
2798
|
return null;
|
|
2774
2799
|
}
|
|
2775
2800
|
|
|
2776
|
-
var IGNORE_ATTRIBUTES = ["title", "alt", "onload", "onfocus", "onerror", "data-drupal-form-submit-last"];
|
|
2801
|
+
var IGNORE_ATTRIBUTES = ["title", "alt", "onload", "onfocus", "onerror", "data-drupal-form-submit-last", "aria-label"];
|
|
2777
2802
|
var newlineRegex = /[\r\n]+/g;
|
|
2778
2803
|
function processNode (node, source, timestamp) {
|
|
2779
2804
|
var _a;
|
|
@@ -3167,8 +3192,8 @@ function handle$1(m) {
|
|
|
3167
3192
|
track$7(6 /* Event.Mutation */, now);
|
|
3168
3193
|
mutations.push({ time: now, mutations: m });
|
|
3169
3194
|
schedule$1(process$1, 1 /* Priority.High */).then(function () {
|
|
3170
|
-
setTimeout(compute$
|
|
3171
|
-
measure(compute$
|
|
3195
|
+
setTimeout(compute$9);
|
|
3196
|
+
measure(compute$7)();
|
|
3172
3197
|
});
|
|
3173
3198
|
}
|
|
3174
3199
|
function process$1() {
|
|
@@ -3200,7 +3225,7 @@ function process$1() {
|
|
|
3200
3225
|
return [3 /*break*/, 6];
|
|
3201
3226
|
}
|
|
3202
3227
|
target = mutation.target;
|
|
3203
|
-
type = track$3(mutation, timer, instance, record.time);
|
|
3228
|
+
type = config$1.throttleDom ? track$3(mutation, timer, instance, record.time) : mutation.type;
|
|
3204
3229
|
if (type && target && target.ownerDocument) {
|
|
3205
3230
|
parse$1(target.ownerDocument);
|
|
3206
3231
|
}
|
|
@@ -3244,7 +3269,8 @@ function track$3(m, timer, instance, timestamp) {
|
|
|
3244
3269
|
var value = m.target ? get(m.target.parentNode) : null;
|
|
3245
3270
|
// Check if the parent is already discovered and that the parent is not the document root
|
|
3246
3271
|
if (value && value.data.tag !== "HTML" /* Constant.HTML */) {
|
|
3247
|
-
|
|
3272
|
+
// calculate inactive period based on the timestamp of the mutation not when the mutation is processed
|
|
3273
|
+
var inactive = timestamp > activePeriod;
|
|
3248
3274
|
var target = get(m.target);
|
|
3249
3275
|
var element = target && target.selector ? target.selector.join() : m.target.nodeName;
|
|
3250
3276
|
var parent_1 = value.selector ? value.selector.join() : "" /* Constant.Empty */;
|
|
@@ -3391,7 +3417,7 @@ function metadata$2(node, event, text) {
|
|
|
3391
3417
|
function encode$3 (type, ts) {
|
|
3392
3418
|
if (ts === void 0) { ts = null; }
|
|
3393
3419
|
return __awaiter(this, void 0, void 0, function () {
|
|
3394
|
-
var t, tokens, _i, _a, entry, pTarget, _b, _c, entry, cTarget, cHash, _d, _e, entry, target, r, u, _f, _g, entry, iTarget, s, startTarget, endTarget, _h, _j, entry, sTarget, _k, _l, entry, target, _m, _o, entry, target, _p, _q, entry, v;
|
|
3420
|
+
var t, tokens, _i, _a, entry, pTarget, _b, _c, entry, cTarget, cHash, _d, _e, entry, target, r, u, _f, _g, entry, iTarget, s, startTarget, endTarget, _h, _j, entry, sTarget, top_1, bottom, sTopHash, sBottomHash, _k, _l, entry, target, _m, _o, entry, target, _p, _q, entry, v;
|
|
3395
3421
|
return __generator(this, function (_r) {
|
|
3396
3422
|
t = ts || time();
|
|
3397
3423
|
tokens = [t, type];
|
|
@@ -3497,13 +3523,17 @@ function encode$3 (type, ts) {
|
|
|
3497
3523
|
for (_h = 0, _j = state$2; _h < _j.length; _h++) {
|
|
3498
3524
|
entry = _j[_h];
|
|
3499
3525
|
sTarget = metadata$2(entry.data.target, entry.event);
|
|
3526
|
+
top_1 = metadata$2(entry.data.top, entry.event);
|
|
3527
|
+
bottom = metadata$2(entry.data.bottom, entry.event);
|
|
3528
|
+
sTopHash = (top_1 === null || top_1 === void 0 ? void 0 : top_1.hash) ? top_1.hash.join("." /* Constant.Dot */) : "" /* Constant.Empty */;
|
|
3529
|
+
sBottomHash = (bottom === null || bottom === void 0 ? void 0 : bottom.hash) ? bottom.hash.join("." /* Constant.Dot */) : "" /* Constant.Empty */;
|
|
3500
3530
|
if (sTarget.id > 0) {
|
|
3501
3531
|
tokens = [entry.time, entry.event];
|
|
3502
3532
|
tokens.push(sTarget.id);
|
|
3503
3533
|
tokens.push(entry.data.x);
|
|
3504
3534
|
tokens.push(entry.data.y);
|
|
3505
|
-
tokens.push(
|
|
3506
|
-
tokens.push(
|
|
3535
|
+
tokens.push(sTopHash);
|
|
3536
|
+
tokens.push(sBottomHash);
|
|
3507
3537
|
queue(tokens);
|
|
3508
3538
|
track$8(entry.event, entry.data.x, entry.data.y, entry.time);
|
|
3509
3539
|
}
|
|
@@ -3705,10 +3735,10 @@ function upload(final) {
|
|
|
3705
3735
|
}
|
|
3706
3736
|
// CAUTION: Ensure "transmit" is set to false in the queue function for following events
|
|
3707
3737
|
// Otherwise you run a risk of infinite loop.
|
|
3708
|
-
compute$6();
|
|
3709
|
-
compute$5();
|
|
3710
|
-
compute$9();
|
|
3711
3738
|
compute$7();
|
|
3739
|
+
compute$5();
|
|
3740
|
+
compute$a();
|
|
3741
|
+
compute$8();
|
|
3712
3742
|
last = final === true;
|
|
3713
3743
|
e = JSON.stringify(envelope(last));
|
|
3714
3744
|
a = "[".concat(analysis.join(), "]");
|
|
@@ -4927,7 +4957,8 @@ var diagnostic = /*#__PURE__*/Object.freeze({
|
|
|
4927
4957
|
|
|
4928
4958
|
function start$4() {
|
|
4929
4959
|
schedule$1(discover, 1 /* Priority.High */).then(function () {
|
|
4930
|
-
measure(compute$
|
|
4960
|
+
measure(compute$9)();
|
|
4961
|
+
measure(compute$7)();
|
|
4931
4962
|
measure(compute$6)();
|
|
4932
4963
|
});
|
|
4933
4964
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
!function(){"use strict";var t=Object.freeze({__proto__:null,get queue(){return gt},get start(){return vt},get stop(){return mt},get track(){return st}}),n=Object.freeze({__proto__:null,get check(){return Et},get compute(){return Mt},get data(){return lt},get start(){return St},get stop(){return Ot},get trigger(){return It}}),e=Object.freeze({__proto__:null,get compute(){return qt},get data(){return xt},get log(){return Ct},get reset(){return At},get start(){return jt},get stop(){return zt},get updates(){return Tt}}),r=Object.freeze({__proto__:null,get callbacks(){return Rt},get clear(){return Xt},get consent(){return Bt},get data(){return Nt},get electron(){return Pt},get id(){return Vt},get metadata(){return Lt},get save(){return Jt},get shortid(){return Zt},get start(){return Ht},get stop(){return Ut}}),o=Object.freeze({__proto__:null,get data(){return nn},get envelope(){return on},get start(){return en},get stop(){return rn}}),a={projectId:null,delay:1e3,lean:!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};function u(t){return window.Zone&&"__symbol__"in window.Zone?window.Zone.__symbol__(t):t}var c=0;function i(t){void 0===t&&(t=null);var n=t&&t.timeStamp>0?t.timeStamp:performance.now();return Math.max(Math.round(n-c),0)}var s="0.7.32";var l=!0,d=null,p=null;function f(t,n,e){return function(){if(l&&null===d)try{d=new RegExp("\\p{N}","gu"),p=new RegExp("\\p{L}","gu"),new RegExp("\\p{Sc}","gu")}catch(t){l=!1}}(),t?t.replace(p,n).replace(d,e):t}var h=[],v=null;function g(){}var m=[];function y(){}function b(){}var w=Object.freeze({__proto__:null,checkDocumentStyles:function(t){},compute:function(){},data:v,hashText:y,keys:m,log:g,observe:function(){},reset:function(){},start:function(){},state:h,stop:function(){},trigger:b}),k=null;function _(t,n){jn()&&t&&"string"==typeof t&&t.length<255&&(k=n&&"string"==typeof n&&n.length<255?{key:t,value:n}:{value:t},_t(24))}var S,E=null,I=null;function M(t){t in E||(E[t]=0),t in I||(I[t]=0),E[t]++,I[t]++}function O(t,n){null!==n&&(t in E||(E[t]=0),t in I||(I[t]=0),E[t]+=n,I[t]+=n)}function x(t,n){null!==n&&!1===isNaN(n)&&(t in E||(E[t]=0),(n>E[t]||0===E[t])&&(I[t]=n,E[t]=n))}function T(t,n,e){return window.setTimeout(cn(t),n,e)}function j(t){return window.clearTimeout(t)}var z=0,C=0,q=null;function A(){q&&j(q),q=T(N,C),z=i()}function N(){var t=i();S={gap:t-z},_t(25),S.gap<3e5?q=T(N,C):On&&(_("clarity","suspend"),Bn(),["mousemove","touchstart"].forEach((function(t){return ln(document,t,Cn)})),["resize","scroll","pageshow"].forEach((function(t){return ln(window,t,Cn)})))}var R=Object.freeze({__proto__:null,get data(){return S},reset:A,start:function(){C=6e4,z=0},stop:function(){j(q),z=0,C=0}}),P=null;function D(t){jn()&&a.lean&&(a.lean=!1,P={key:t},Jt(),a.upgrade&&a.upgrade(t),_t(3))}var H=Object.freeze({__proto__:null,get data(){return P},start:function(){!a.lean&&a.upgrade&&a.upgrade("Config"),P=null},stop:function(){P=null},upgrade:D});function U(t,n,e,r){return new(e||(e=Promise))((function(o,a){function u(t){try{i(r.next(t))}catch(t){a(t)}}function c(t){try{i(r.throw(t))}catch(t){a(t)}}function i(t){var n;t.done?o(t.value):(n=t.value,n instanceof e?n:new e((function(t){t(n)}))).then(u,c)}i((r=r.apply(t,n||[])).next())}))}function L(t,n){var e,r,o,a,u={label:0,sent:function(){if(1&o[0])throw o[1];return o[1]},trys:[],ops:[]};return a={next:c(0),throw:c(1),return:c(2)},"function"==typeof Symbol&&(a[Symbol.iterator]=function(){return this}),a;function c(c){return function(i){return function(c){if(e)throw new TypeError("Generator is already executing.");for(;a&&(a=0,c[0]&&(u=0)),u;)try{if(e=1,r&&(o=2&c[0]?r.return:c[0]?r.throw||((o=r.return)&&o.call(r),0):r.next)&&!(o=o.call(r,c[1])).done)return o;switch(r=0,o&&(c=[2&c[0],o.value]),c[0]){case 0:case 1:o=c;break;case 4:return u.label++,{value:c[1],done:!1};case 5:u.label++,r=c[1],c=[0];continue;case 7:c=u.ops.pop(),u.trys.pop();continue;default:if(!(o=u.trys,(o=o.length>0&&o[o.length-1])||6!==c[0]&&2!==c[0])){u=0;continue}if(3===c[0]&&(!o||c[1]>o[0]&&c[1]<o[3])){u.label=c[1];break}if(6===c[0]&&u.label<o[1]){u.label=o[1],o=c;break}if(o&&u.label<o[2]){u.label=o[2],u.ops.push(c);break}o[2]&&u.ops.pop(),u.trys.pop();continue}c=n.call(t,u)}catch(t){c=[6,t],r=0}finally{e=o=0}if(5&c[0])throw c[1];return{value:c[0]?c[1]:void 0,done:!0}}([c,i])}}}var V=null;function B(t,n){J(t,"string"==typeof n?[n]:n)}function X(t,n,e,r){return void 0===n&&(n=null),void 0===e&&(e=null),void 0===r&&(r=null),U(this,void 0,void 0,(function(){var o,a;return L(this,(function(u){switch(u.label){case 0:return a={},[4,Z(t)];case 1:return a.userId=u.sent(),a.userHint=r||((c=t)&&c.length>=5?"".concat(c.substring(0,2)).concat(f(c.substring(2),"*","*")):f(c,"*","*")),J("userId",[(o=a).userId]),J("userHint",[o.userHint]),J("userType",[Y(t)]),n&&(J("sessionId",[n]),o.sessionId=n),e&&(J("pageId",[e]),o.pageId=e),[2,o]}var c}))}))}function J(t,n){if(jn()&&t&&n&&"string"==typeof t&&t.length<255){for(var e=(t in V?V[t]:[]),r=0;r<n.length;r++)"string"==typeof n[r]&&n[r].length<255&&e.push(n[r]);V[t]=e}}function W(){_t(34)}function G(){V={}}function Z(t){return U(this,void 0,void 0,(function(){var n;return L(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 Y(t){return t&&t.indexOf("@")>0?"email":"string"}var F="CompressionStream"in window;function K(t){return U(this,void 0,void 0,(function(){var n,e;return L(this,(function(r){switch(r.label){case 0:return r.trys.push([0,3,,4]),F?(n=new ReadableStream({start:function(n){return U(this,void 0,void 0,(function(){return L(this,(function(e){return n.enqueue(t),n.close(),[2]}))}))}}).pipeThrough(new TextEncoderStream).pipeThrough(new window.CompressionStream("gzip")),e=Uint8Array.bind,[4,Q(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 Q(t){return U(this,void 0,void 0,(function(){var n,e,r,o,a;return L(this,(function(u){switch(u.label){case 0:n=t.getReader(),e=[],r=!1,o=[],u.label=1;case 1:return r?[3,3]:[4,n.read()];case 2:return a=u.sent(),r=a.done,o=a.value,r?[2,e]:(e.push.apply(e,o),[3,1]);case 3:return[2,e]}}))}))}var $=null;function tt(t){try{if(!$)return;var n=function(t){try{return JSON.parse(t)}catch(t){return[]}}(t);n.forEach((function(t){$(t)}))}catch(t){}}var nt=[w,e,Object.freeze({__proto__:null,compute:W,get data(){return V},identify:X,reset:G,set:B,start:function(){G()},stop:function(){G()}}),n,w,r,o,t,R,H,w];function et(){E={},I={},M(5),nt.forEach((function(t){return cn(t.start)()}))}function rt(){nt.slice().reverse().forEach((function(t){return cn(t.stop)()})),E={},I={}}function ot(){W(),qt(),_t(0),Mt()}var at,ut,ct,it,st,lt,dt=0,pt=0,ft=null,ht=0;function vt(){it=!0,dt=0,pt=0,ht=0,at=[],ut=[],ct={},st=null}function gt(t,n){if(void 0===n&&(n=!0),it){var e=i(),r=t.length>1?t[1]:null,o=JSON.stringify(t);switch(r){case 5:dt+=o.length;case 37:case 6:case 43:case 45:case 46:pt+=o.length,at.push(o);break;default:ut.push(o)}M(25);var u=function(){var t=!1===a.lean&&dt>0?100:nn.sequence*a.delay;return"string"==typeof a.upload?Math.max(Math.min(t,3e4),100):a.delay}();e-ht>2*u&&(j(ft),ft=null),n&&null===ft&&(25!==r&&A(),ft=T(yt,u),ht=e,Et(pt))}}function mt(){j(ft),yt(!0),dt=0,pt=0,ht=0,at=[],ut=[],ct={},st=null,it=!1}function yt(t){return void 0===t&&(t=!1),U(this,void 0,void 0,(function(){var n,e,r,o,u,c,i,s;return L(this,(function(l){switch(l.label){case 0:return ft=null,(n=!1===a.lean&&pt>0&&(pt<1048576||nn.sequence>0))&&x(1,1),ot(),e=!0===t,r=JSON.stringify(on(e)),o="[".concat(ut.join(),"]"),u=n?"[".concat(at.join(),"]"):"",c=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:o,p:u}),e?(s=null,[3,3]):[3,1];case 1:return[4,K(c)];case 2:s=l.sent(),l.label=3;case 3:return O(2,(i=s)?i.length:c.length),bt(c,i,nn.sequence,e),ut=[],n&&(at=[],pt=0,dt=0),[2]}}))}))}function bt(t,n,e,r){if(void 0===r&&(r=!1),"string"==typeof a.upload){var o=a.upload,u=!1;if(r&&"sendBeacon"in navigator)try{(u=navigator.sendBeacon.bind(navigator)(o,t))&&kt(e)}catch(t){}if(!1===u){e in ct?ct[e].attempts++:ct[e]={data:t,attempts:1};var c=new XMLHttpRequest;c.open("POST",o,!0),c.timeout=15e3,c.ontimeout=function(){un(new Error("".concat("Timeout"," : ").concat(o)))},null!==e&&(c.onreadystatechange=function(){cn(wt)(c,e)}),c.withCredentials=!0,n?(c.setRequestHeader("Accept","application/x-clarity-gzip"),c.send(n)):c.send(t)}}else if(a.upload){(0,a.upload)(t),kt(e)}}function wt(t,n){var e=ct[n];t&&4===t.readyState&&e&&((t.status<200||t.status>208)&&e.attempts<=1?t.status>=400&&t.status<500?It(6):(0===t.status&&(a.upload=a.fallback?a.fallback:a.upload),bt(e.data,null,n)):(st={sequence:n,attempts:e.attempts,status:t.status},e.attempts>1&&_t(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 o=r[e],u=o&&o.length>0?o.split(/ (.*)/):[""];switch(u[0]){case"END":It(6);break;case"UPGRADE":D("Auto");break;case"ACTION":a.action&&u.length>1&&a.action(u[1]);break;case"EXTRACT":u.length>1&&u[1];break;case"SIGNAL":u.length>1&&tt(u[1])}}}(t.responseText),0===t.status&&(bt(e.data,null,n,!0),It(3)),t.status>=200&&t.status<=208&&kt(n),delete ct[n]))}function kt(t){1===t&&Jt()}function _t(t){var n=[i(),t];switch(t){case 4:var e=h;e&&((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),gt(n,!1));break;case 25:n.push(S.gap),gt(n);break;case 35:n.push(lt.check),gt(n,!1);break;case 3:n.push(P.key),gt(n);break;case 2:n.push(st.sequence),n.push(st.attempts),n.push(st.status),gt(n,!1);break;case 24:k.key&&n.push(k.key),n.push(k.value),gt(n);break;case 34:var r=Object.keys(V);if(r.length>0){for(var o=0,a=r;o<a.length;o++){var u=a[o];n.push(u),n.push(V[u])}G(),gt(n,!1)}break;case 0:var c=Object.keys(I);if(c.length>0){for(var s=0,l=c;s<l.length;s++){var d=l[s],p=parseInt(d,10);n.push(p),n.push(Math.round(I[d]))}I={},gt(n,!1)}break;case 1:var f=Object.keys(Tt);if(f.length>0){for(var g=0,y=f;g<y.length;g++){var b=y[g];p=parseInt(b,10);n.push(p),n.push(Tt[b])}At(),gt(n,!1)}break;case 36:var w=Object.keys(v);if(w.length>0){for(var _=0,E=w;_<E.length;_++){var M=E[_];p=parseInt(M,10);n.push(p),n.push([].concat.apply([],v[M]))}gt(n,!1)}break;case 40:m.forEach((function(t){n.push(t);var e=[];for(var r in v[t]){var o=parseInt(r,10);e.push(o),e.push(v[t][r])}n.push(e)})),gt(n,!1)}}function St(){lt={check:0}}function Et(t){if(0===lt.check){var n=lt.check;n=nn.sequence>=128?1:n,n=nn.pageNum>=128?7:n,n=i()>72e5?2:n,(n=t>10485760?2:n)!==lt.check&&It(n)}}function It(t){lt.check=t,Xt(),Bn()}function Mt(){0!==lt.check&&_t(35)}function Ot(){lt=null}var xt=null,Tt=null;function jt(){xt={},Tt={}}function zt(){xt={},Tt={}}function Ct(t,n){n&&(n="".concat(n),t in xt||(xt[t]=[]),xt[t].indexOf(n)<0&&(xt[t].push(n),t in Tt||(Tt[t]=[]),Tt[t].push(n),xt[t].length>128&&It(5)))}function qt(){_t(1)}function At(){Tt={}}var Nt=null,Rt=[],Pt=0,Dt=null;function Ht(){Dt=null;var t=navigator&&"userAgent"in navigator?navigator.userAgent:"",n=document&&document.title?document.title:"";Pt=t.indexOf("Electron")>0?1:0;var e,r=function(){var t={session:Zt(),ts:Math.round(Date.now()),count:1,upgrade:null,upload:""},n=Kt("_clsk");if(n){var e=n.split("|");e.length>=5&&t.ts-Yt(e[1])<18e5&&(t.session=e[0],t.count=Yt(e[2])+1,t.upgrade=Yt(e[3]),t.upload=e.length>=6?"".concat("https://").concat(e[5],"/").concat(e[4]):"".concat("https://").concat(e[4]))}return t}(),o=Ft(),u=a.projectId||function(t,n){void 0===n&&(n=null);for(var e,r=5381,o=r,a=0;a<t.length;a+=2)r=(r<<5)+r^t.charCodeAt(a),a+1<t.length&&(o=(o<<5)+o^t.charCodeAt(a+1));return e=Math.abs(r+11579*o),(n?e%Math.pow(2,n):e).toString(36)}(location.host);Nt={projectId:u,userId:o.id,sessionId:r.session,pageNum:r.count},a.lean=a.track&&null!==r.upgrade?0===r.upgrade:a.lean,a.upload=a.track&&"string"==typeof a.upload&&r.upload&&r.upload.length>"https://".length?r.upload:a.upload,Ct(0,t),Ct(3,n),Ct(1,function(t,n){if(void 0===n&&(n=!1),n)return"".concat("https://").concat("Electron");var e=a.drop;if(e&&e.length>0&&t&&t.indexOf("?")>0){var r=t.split("?");return r[0]+"?"+r[1].split("&").map((function(t){return e.some((function(n){return 0===t.indexOf("".concat(n,"="))}))?"".concat(t.split("=")[0],"=").concat("*na*"):t})).join("&")}return t}(location.href,!!Pt)),Ct(2,document.referrer),Ct(15,function(){var t=Zt();if(a.track&&Wt(window,"sessionStorage")){var n=sessionStorage.getItem("_cltk");t=n||t,sessionStorage.setItem("_cltk",t)}return t}()),Ct(16,document.documentElement.lang),Ct(17,document.dir),Ct(26,"".concat(window.devicePixelRatio)),Ct(28,o.dob.toString()),Ct(29,o.version.toString()),x(0,r.ts),x(1,0),x(35,Pt),navigator&&(Ct(9,navigator.language),x(33,navigator.hardwareConcurrency),x(32,navigator.maxTouchPoints),x(34,Math.round(navigator.deviceMemory)),(e=navigator.userAgentData)&&e.getHighEntropyValues?e.getHighEntropyValues(["model","platform","platformVersion","uaFullVersion"]).then((function(t){var n;Ct(22,t.platform),Ct(23,t.platformVersion),null===(n=t.brands)||void 0===n||n.forEach((function(t){Ct(24,t.name+"~"+t.version)})),Ct(25,t.model),x(27,t.mobile?1:0)})):Ct(22,navigator.platform)),screen&&(x(14,Math.round(screen.width)),x(15,Math.round(screen.height)),x(16,Math.round(screen.colorDepth)));for(var c=0,i=a.cookies;c<i.length;c++){var s=i[c],l=Kt(s);l&&B(s,l)}Gt(o)}function Ut(){Dt=null,Nt=null}function Lt(t,n){void 0===n&&(n=!0);var e=a.lean?0:1;Nt&&(e||!1===n)?t(Nt,!a.lean):Rt.push({callback:t,wait:n})}function Vt(){return Nt?[Nt.userId,Nt.sessionId,Nt.pageNum].join("."):""}function Bt(t){if(void 0===t&&(t=!0),!t)return a.track=!1,$t("_clsk","",-Number.MAX_VALUE),$t("_clck","",-Number.MAX_VALUE),Bn(),void window.setTimeout(Vn,250);jn()&&(a.track=!0,Gt(Ft(),1))}function Xt(){$t("_clsk","",0)}function Jt(){var t=Math.round(Date.now()),n=a.upload&&"string"==typeof a.upload?a.upload.replace("https://",""):"",e=a.lean?0:1;!function(t){Rt.length>0&&Rt.forEach((function(n){!n.callback||n.wait&&!t||n.callback(Nt,!a.lean)}))}(e),$t("_clsk",[Nt.sessionId,t,Nt.pageNum,e,n].join("|"),1)}function Wt(t,n){try{return!!t[n]}catch(t){return!1}}function Gt(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===a.dob?0:a.dob:t.dob;(null===t.expiry||Math.abs(e-t.expiry)>=1||t.consent!==n||t.dob!==r)&&$t("_clck",[Nt.userId,2,e.toString(36),n,r].join("|"),365)}function Zt(){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 Yt(t,n){return void 0===n&&(n=10),parseInt(t,n)}function Ft(){var t={id:Zt(),version:0,expiry:null,consent:0,dob:0},n=Kt("_clck");if(n&&n.length>0){for(var e=n.split("|"),r=0,o=0,u=document.cookie.split(";");o<u.length;o++){r+="_clck"===u[o].split("=")[0].trim()?1:0}if(1===e.length||r>1){var c="".concat(";").concat("expires=").concat(new Date(0).toUTCString()).concat(";path=/");document.cookie="".concat("_clck","=").concat(c),document.cookie="".concat("_clsk","=").concat(c)}e.length>1&&(t.version=Yt(e[1])),e.length>2&&(t.expiry=Yt(e[2],36)),e.length>3&&1===Yt(e[3])&&(t.consent=1),e.length>4&&Yt(e[1])>1&&(t.dob=Yt(e[4])),a.track=a.track||1===t.consent,t.id=a.track?e[0]:t.id}return t}function Kt(t){var n;if(Wt(document,"cookie")){var e=document.cookie.split(";");if(e)for(var r=0;r<e.length;r++){var o=e[r].split("=");if(o.length>1&&o[0]&&o[0].trim()===t){for(var a=Qt(o[1]),u=a[0],c=a[1];u;)u=(n=Qt(c))[0],c=n[1];return c}}}return null}function Qt(t){try{var n=decodeURIComponent(t);return[n!=t,n]}catch(t){}return[!1,t]}function $t(t,n,e){if((a.track||""==n)&&(navigator&&navigator.cookieEnabled||Wt(document,"cookie"))){var r=function(t){return encodeURIComponent(t)}(n),o=new Date;o.setDate(o.getDate()+e);var u=o?"expires="+o.toUTCString():"",c="".concat(t,"=").concat(r).concat(";").concat(u).concat(";path=/");try{if(null===Dt){for(var i=location.hostname?location.hostname.split("."):[],s=i.length-1;s>=0;s--)if(Dt=".".concat(i[s]).concat(Dt||""),s<i.length-1&&(document.cookie="".concat(c).concat(";").concat("domain=").concat(Dt),Kt(t)===n))return;Dt=""}}catch(t){Dt=""}document.cookie=Dt?"".concat(c).concat(";").concat("domain=").concat(Dt):c}}var tn,nn=null;function en(){var t=Nt;nn={version:s,sequence:0,start:0,duration:0,projectId:t.projectId,userId:t.userId,sessionId:t.sessionId,pageNum:t.pageNum,upload:0,end:0}}function rn(){nn=null}function on(t){return nn.start=nn.start+nn.duration,nn.duration=i()-nn.start,nn.sequence++,nn.upload=t&&"sendBeacon"in navigator?1:0,nn.end=t?1:0,[nn.version,nn.sequence,nn.start,nn.duration,nn.projectId,nn.userId,nn.sessionId,nn.pageNum,nn.upload,nn.end]}function an(){tn=[]}function un(t){if(tn&&-1===tn.indexOf(t.message)){var n=a.report;if(n&&n.length>0){var e={v:nn.version,p:nn.projectId,u:nn.userId,s:nn.sessionId,n:nn.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)),tn.push(t.message)}}return t}function cn(t){return function(){var n=performance.now();try{t.apply(this,arguments)}catch(t){throw un(t)}var e=performance.now()-n;O(4,e),e>30&&(M(7),x(6,e))}}var sn=[];function ln(t,n,e,r){void 0===r&&(r=!1),e=cn(e);try{t[u("addEventListener")](n,e,r),sn.push({event:n,target:t,listener:e,capture:r})}catch(t){}}function dn(){for(var t=0,n=sn;t<n.length;t++){var e=n[t];try{e.target[u("removeEventListener")](e.event,e.listener,e.capture)}catch(t){}}sn=[]}var pn=null,fn=null,hn=null,vn=0;function gn(){return!(vn++>20)}function mn(){vn=0,hn!==bn()&&(Bn(),window.setTimeout(yn,250))}function yn(){Vn(),x(29,1)}function bn(){return location.href?location.href.replace(location.hash,""):location.href}var wn=[],kn=null,_n=null,Sn=null;function En(){_n&&(Sn(),_n=null,null===kn&&Mn())}function In(){wn=[],kn=null,_n=null}function Mn(){var t=wn.shift();t&&(kn=t,t.task().then((function(){t.id===Vt()&&(t.resolve(),kn=null,Mn())})).catch((function(n){t.id===Vt()&&(n&&(n.name,n.message,n.stack),kn=null,Mn())})))}var On=!1;function xn(){On=!0,c=performance.now(),In(),dn(),an(),hn=bn(),vn=0,ln(window,"popstate",mn),null===pn&&(pn=history.pushState,history.pushState=function(){pn.apply(this,arguments),jn()&&gn()&&mn()}),null===fn&&(fn=history.replaceState,history.replaceState=function(){fn.apply(this,arguments),jn()&&gn()&&mn()})}function Tn(){hn=null,vn=0,an(),dn(),In(),c=0,On=!1}function jn(){return On}function zn(t){if(null===t||On)return!1;for(var n in t)n in a&&(a[n]=t[n]);return!0}function Cn(){Vn(),_("clarity","restart")}var qn,An=null;function Nn(){An=null}function Rn(t){An={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){U(this,void 0,void 0,(function(){var n,e;return L(this,(function(r){return n=i(),e=[n,t],29===t&&(e.push(An.fetchStart),e.push(An.connectStart),e.push(An.connectEnd),e.push(An.requestStart),e.push(An.responseStart),e.push(An.responseEnd),e.push(An.domInteractive),e.push(An.domComplete),e.push(An.loadEventStart),e.push(An.loadEventEnd),e.push(An.redirectCount),e.push(An.size),e.push(An.type),e.push(An.protocol),e.push(An.encodedSize),e.push(An.decodedSize),Nn(),gt(e)),[2]}))}))}(29)}var Pn=["navigation","resource","longtask","first-input","layout-shift","largest-contentful-paint"];function Dn(){try{qn&&qn.disconnect(),qn=new PerformanceObserver(cn(Hn));for(var t=0,n=Pn;t<n.length;t++){var e=n[t];PerformanceObserver.supportedEntryTypes.indexOf(e)>=0&&("layout-shift"===e&&O(9,0),qn.observe({type:e,buffered:!0}))}}catch(t){}}function Hn(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":Rn(r);break;case"resource":var o=r.name;Ct(4,Un(o)),o!==a.upload&&o!==a.fallback||x(28,r.duration);break;case"longtask":M(7);break;case"first-input":n&&x(10,r.processingStart-r.startTime);break;case"layout-shift":n&&!r.hadRecentInput&&O(9,1e3*r.value);break;case"largest-contentful-paint":n&&x(8,r.startTime)}}}(t.getEntries())}function Un(t){var n=document.createElement("a");return n.href=t,n.host}var Ln=[w,w,w,Object.freeze({__proto__:null,start:function(){Nn(),function(){navigator&&"connection"in navigator&&Ct(27,navigator.connection.effectiveType),window.PerformanceObserver&&PerformanceObserver.supportedEntryTypes&&("complete"!==document.readyState?ln(window,"load",T.bind(this,Dn,0)):Dn())}()},stop:function(){qn&&qn.disconnect(),qn=null,Nn()}})];function Vn(t){void 0===t&&(t=null),function(){try{var t=navigator&&"globalPrivacyControl"in navigator&&1==navigator.globalPrivacyControl;return!1===On&&"undefined"!=typeof Promise&&window.MutationObserver&&document.createTreeWalker&&"now"in Date&&"now"in performance&&"undefined"!=typeof WeakMap&&!t}catch(t){return!1}}()&&(zn(t),xn(),et(),Ln.forEach((function(t){return cn(t.start)()})),null===t&&Gn())}function Bn(){jn()&&(Ln.slice().reverse().forEach((function(t){return cn(t.stop)()})),rt(),Tn(),void 0!==Jn&&(Jn[Wn]=function(){(Jn[Wn].q=Jn[Wn].q||[]).push(arguments),"start"===arguments[0]&&Jn[Wn].q.unshift(Jn[Wn].q.pop())&&Gn()}))}var Xn=Object.freeze({__proto__:null,consent:Bt,event:_,hashText:y,identify:X,metadata:Lt,pause:function(){jn()&&(_("clarity","pause"),null===_n&&(_n=new Promise((function(t){Sn=t}))))},resume:function(){jn()&&(En(),_("clarity","resume"))},set:B,signal:function(t){$=t},start:Vn,stop:Bn,upgrade:D,version:s}),Jn=window,Wn="clarity";function Gn(){if(void 0!==Jn){if(Jn[Wn]&&Jn[Wn].v)return console.warn("Error CL001: Multiple Clarity tags detected.");var t=Jn[Wn]&&Jn[Wn].q||[];for(Jn[Wn]=function(t){for(var n=[],e=1;e<arguments.length;e++)n[e-1]=arguments[e];return Xn[t].apply(Xn,n)},Jn[Wn].v=s;t.length>0;)Jn[Wn].apply(Jn,t.shift())}}Gn()}();
|
|
1
|
+
!function(){"use strict";var t=Object.freeze({__proto__:null,get queue(){return gt},get start(){return vt},get stop(){return mt},get track(){return st}}),n=Object.freeze({__proto__:null,get check(){return Et},get compute(){return Mt},get data(){return lt},get start(){return St},get stop(){return Ot},get trigger(){return It}}),e=Object.freeze({__proto__:null,get compute(){return qt},get data(){return xt},get log(){return Ct},get reset(){return At},get start(){return jt},get stop(){return zt},get updates(){return Tt}}),r=Object.freeze({__proto__:null,get callbacks(){return Rt},get clear(){return Xt},get consent(){return Bt},get data(){return Nt},get electron(){return Dt},get id(){return Vt},get metadata(){return Lt},get save(){return Jt},get shortid(){return Zt},get start(){return Ht},get stop(){return Ut}}),o=Object.freeze({__proto__:null,get data(){return nn},get envelope(){return on},get start(){return en},get stop(){return rn}}),a={projectId:null,delay:1e3,lean:!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};function u(t){return window.Zone&&"__symbol__"in window.Zone?window.Zone.__symbol__(t):t}var c=0;function i(t){void 0===t&&(t=null);var n=t&&t.timeStamp>0?t.timeStamp:performance.now(),e=t&&t.view?t.view.performance.timeOrigin:performance.timeOrigin;return Math.max(Math.round(n+e-c),0)}var s="0.7.33";var l=!0,p=null,d=null;function f(t,n,e){return function(){if(l&&null===p)try{p=new RegExp("\\p{N}","gu"),d=new RegExp("\\p{L}","gu"),new RegExp("\\p{Sc}","gu")}catch(t){l=!1}}(),t?t.replace(d,n).replace(p,e):t}var h=[],v=null;function g(){}var m=[];function y(){}function b(){}var w=Object.freeze({__proto__:null,checkDocumentStyles:function(t){},compute:function(){},data:v,hashText:y,keys:m,log:g,observe:function(){},reset:function(){},start:function(){},state:h,stop:function(){},trigger:b}),k=null;function _(t,n){jn()&&t&&"string"==typeof t&&t.length<255&&(k=n&&"string"==typeof n&&n.length<255?{key:t,value:n}:{value:t},_t(24))}var S,E=null,I=null;function M(t){t in E||(E[t]=0),t in I||(I[t]=0),E[t]++,I[t]++}function O(t,n){null!==n&&(t in E||(E[t]=0),t in I||(I[t]=0),E[t]+=n,I[t]+=n)}function x(t,n){null!==n&&!1===isNaN(n)&&(t in E||(E[t]=0),(n>E[t]||0===E[t])&&(I[t]=n,E[t]=n))}function T(t,n,e){return window.setTimeout(cn(t),n,e)}function j(t){return window.clearTimeout(t)}var z=0,C=0,q=null;function A(){q&&j(q),q=T(N,C),z=i()}function N(){var t=i();S={gap:t-z},_t(25),S.gap<3e5?q=T(N,C):On&&(_("clarity","suspend"),Bn(),["mousemove","touchstart"].forEach((function(t){return ln(document,t,Cn)})),["resize","scroll","pageshow"].forEach((function(t){return ln(window,t,Cn)})))}var R=Object.freeze({__proto__:null,get data(){return S},reset:A,start:function(){C=6e4,z=0},stop:function(){j(q),z=0,C=0}}),D=null;function P(t){jn()&&a.lean&&(a.lean=!1,D={key:t},Jt(),a.upgrade&&a.upgrade(t),_t(3))}var H=Object.freeze({__proto__:null,get data(){return D},start:function(){!a.lean&&a.upgrade&&a.upgrade("Config"),D=null},stop:function(){D=null},upgrade:P});function U(t,n,e,r){return new(e||(e=Promise))((function(o,a){function u(t){try{i(r.next(t))}catch(t){a(t)}}function c(t){try{i(r.throw(t))}catch(t){a(t)}}function i(t){var n;t.done?o(t.value):(n=t.value,n instanceof e?n:new e((function(t){t(n)}))).then(u,c)}i((r=r.apply(t,n||[])).next())}))}function L(t,n){var e,r,o,a,u={label:0,sent:function(){if(1&o[0])throw o[1];return o[1]},trys:[],ops:[]};return a={next:c(0),throw:c(1),return:c(2)},"function"==typeof Symbol&&(a[Symbol.iterator]=function(){return this}),a;function c(c){return function(i){return function(c){if(e)throw new TypeError("Generator is already executing.");for(;a&&(a=0,c[0]&&(u=0)),u;)try{if(e=1,r&&(o=2&c[0]?r.return:c[0]?r.throw||((o=r.return)&&o.call(r),0):r.next)&&!(o=o.call(r,c[1])).done)return o;switch(r=0,o&&(c=[2&c[0],o.value]),c[0]){case 0:case 1:o=c;break;case 4:return u.label++,{value:c[1],done:!1};case 5:u.label++,r=c[1],c=[0];continue;case 7:c=u.ops.pop(),u.trys.pop();continue;default:if(!(o=u.trys,(o=o.length>0&&o[o.length-1])||6!==c[0]&&2!==c[0])){u=0;continue}if(3===c[0]&&(!o||c[1]>o[0]&&c[1]<o[3])){u.label=c[1];break}if(6===c[0]&&u.label<o[1]){u.label=o[1],o=c;break}if(o&&u.label<o[2]){u.label=o[2],u.ops.push(c);break}o[2]&&u.ops.pop(),u.trys.pop();continue}c=n.call(t,u)}catch(t){c=[6,t],r=0}finally{e=o=0}if(5&c[0])throw c[1];return{value:c[0]?c[1]:void 0,done:!0}}([c,i])}}}var V=null;function B(t,n){J(t,"string"==typeof n?[n]:n)}function X(t,n,e,r){return void 0===n&&(n=null),void 0===e&&(e=null),void 0===r&&(r=null),U(this,void 0,void 0,(function(){var o,a;return L(this,(function(u){switch(u.label){case 0:return a={},[4,Z(t)];case 1:return a.userId=u.sent(),a.userHint=r||((c=t)&&c.length>=5?"".concat(c.substring(0,2)).concat(f(c.substring(2),"*","*")):f(c,"*","*")),J("userId",[(o=a).userId]),J("userHint",[o.userHint]),J("userType",[Y(t)]),n&&(J("sessionId",[n]),o.sessionId=n),e&&(J("pageId",[e]),o.pageId=e),[2,o]}var c}))}))}function J(t,n){if(jn()&&t&&n&&"string"==typeof t&&t.length<255){for(var e=(t in V?V[t]:[]),r=0;r<n.length;r++)"string"==typeof n[r]&&n[r].length<255&&e.push(n[r]);V[t]=e}}function W(){_t(34)}function G(){V={}}function Z(t){return U(this,void 0,void 0,(function(){var n;return L(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 Y(t){return t&&t.indexOf("@")>0?"email":"string"}var F="CompressionStream"in window;function K(t){return U(this,void 0,void 0,(function(){var n,e;return L(this,(function(r){switch(r.label){case 0:return r.trys.push([0,3,,4]),F?(n=new ReadableStream({start:function(n){return U(this,void 0,void 0,(function(){return L(this,(function(e){return n.enqueue(t),n.close(),[2]}))}))}}).pipeThrough(new TextEncoderStream).pipeThrough(new window.CompressionStream("gzip")),e=Uint8Array.bind,[4,Q(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 Q(t){return U(this,void 0,void 0,(function(){var n,e,r,o,a;return L(this,(function(u){switch(u.label){case 0:n=t.getReader(),e=[],r=!1,o=[],u.label=1;case 1:return r?[3,3]:[4,n.read()];case 2:return a=u.sent(),r=a.done,o=a.value,r?[2,e]:(e.push.apply(e,o),[3,1]);case 3:return[2,e]}}))}))}var $=null;function tt(t){try{if(!$)return;var n=function(t){try{return JSON.parse(t)}catch(t){return[]}}(t);n.forEach((function(t){$(t)}))}catch(t){}}var nt=[w,e,Object.freeze({__proto__:null,compute:W,get data(){return V},identify:X,reset:G,set:B,start:function(){G()},stop:function(){G()}}),n,w,r,o,t,R,H,w];function et(){E={},I={},M(5),nt.forEach((function(t){return cn(t.start)()}))}function rt(){nt.slice().reverse().forEach((function(t){return cn(t.stop)()})),E={},I={}}function ot(){W(),qt(),_t(0),Mt()}var at,ut,ct,it,st,lt,pt=0,dt=0,ft=null,ht=0;function vt(){it=!0,pt=0,dt=0,ht=0,at=[],ut=[],ct={},st=null}function gt(t,n){if(void 0===n&&(n=!0),it){var e=i(),r=t.length>1?t[1]:null,o=JSON.stringify(t);switch(r){case 5:pt+=o.length;case 37:case 6:case 43:case 45:case 46:dt+=o.length,at.push(o);break;default:ut.push(o)}M(25);var u=function(){var t=!1===a.lean&&pt>0?100:nn.sequence*a.delay;return"string"==typeof a.upload?Math.max(Math.min(t,3e4),100):a.delay}();e-ht>2*u&&(j(ft),ft=null),n&&null===ft&&(25!==r&&A(),ft=T(yt,u),ht=e,Et(dt))}}function mt(){j(ft),yt(!0),pt=0,dt=0,ht=0,at=[],ut=[],ct={},st=null,it=!1}function yt(t){return void 0===t&&(t=!1),U(this,void 0,void 0,(function(){var n,e,r,o,u,c,i,s;return L(this,(function(l){switch(l.label){case 0:return ft=null,(n=!1===a.lean&&dt>0&&(dt<1048576||nn.sequence>0))&&x(1,1),ot(),e=!0===t,r=JSON.stringify(on(e)),o="[".concat(ut.join(),"]"),u=n?"[".concat(at.join(),"]"):"",c=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:o,p:u}),e?(s=null,[3,3]):[3,1];case 1:return[4,K(c)];case 2:s=l.sent(),l.label=3;case 3:return O(2,(i=s)?i.length:c.length),bt(c,i,nn.sequence,e),ut=[],n&&(at=[],dt=0,pt=0),[2]}}))}))}function bt(t,n,e,r){if(void 0===r&&(r=!1),"string"==typeof a.upload){var o=a.upload,u=!1;if(r&&"sendBeacon"in navigator)try{(u=navigator.sendBeacon.bind(navigator)(o,t))&&kt(e)}catch(t){}if(!1===u){e in ct?ct[e].attempts++:ct[e]={data:t,attempts:1};var c=new XMLHttpRequest;c.open("POST",o,!0),c.timeout=15e3,c.ontimeout=function(){un(new Error("".concat("Timeout"," : ").concat(o)))},null!==e&&(c.onreadystatechange=function(){cn(wt)(c,e)}),c.withCredentials=!0,n?(c.setRequestHeader("Accept","application/x-clarity-gzip"),c.send(n)):c.send(t)}}else if(a.upload){(0,a.upload)(t),kt(e)}}function wt(t,n){var e=ct[n];t&&4===t.readyState&&e&&((t.status<200||t.status>208)&&e.attempts<=1?t.status>=400&&t.status<500?It(6):(0===t.status&&(a.upload=a.fallback?a.fallback:a.upload),bt(e.data,null,n)):(st={sequence:n,attempts:e.attempts,status:t.status},e.attempts>1&&_t(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 o=r[e],u=o&&o.length>0?o.split(/ (.*)/):[""];switch(u[0]){case"END":It(6);break;case"UPGRADE":P("Auto");break;case"ACTION":a.action&&u.length>1&&a.action(u[1]);break;case"EXTRACT":u.length>1&&u[1];break;case"SIGNAL":u.length>1&&tt(u[1])}}}(t.responseText),0===t.status&&(bt(e.data,null,n,!0),It(3)),t.status>=200&&t.status<=208&&kt(n),delete ct[n]))}function kt(t){1===t&&Jt()}function _t(t){var n=[i(),t];switch(t){case 4:var e=h;e&&((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),gt(n,!1));break;case 25:n.push(S.gap),gt(n);break;case 35:n.push(lt.check),gt(n,!1);break;case 3:n.push(D.key),gt(n);break;case 2:n.push(st.sequence),n.push(st.attempts),n.push(st.status),gt(n,!1);break;case 24:k.key&&n.push(k.key),n.push(k.value),gt(n);break;case 34:var r=Object.keys(V);if(r.length>0){for(var o=0,a=r;o<a.length;o++){var u=a[o];n.push(u),n.push(V[u])}G(),gt(n,!1)}break;case 0:var c=Object.keys(I);if(c.length>0){for(var s=0,l=c;s<l.length;s++){var p=l[s],d=parseInt(p,10);n.push(d),n.push(Math.round(I[p]))}I={},gt(n,!1)}break;case 1:var f=Object.keys(Tt);if(f.length>0){for(var g=0,y=f;g<y.length;g++){var b=y[g];d=parseInt(b,10);n.push(d),n.push(Tt[b])}At(),gt(n,!1)}break;case 36:var w=Object.keys(v);if(w.length>0){for(var _=0,E=w;_<E.length;_++){var M=E[_];d=parseInt(M,10);n.push(d),n.push([].concat.apply([],v[M]))}gt(n,!1)}break;case 40:m.forEach((function(t){n.push(t);var e=[];for(var r in v[t]){var o=parseInt(r,10);e.push(o),e.push(v[t][r])}n.push(e)})),gt(n,!1)}}function St(){lt={check:0}}function Et(t){if(0===lt.check){var n=lt.check;n=nn.sequence>=128?1:n,n=nn.pageNum>=128?7:n,n=i()>72e5?2:n,(n=t>10485760?2:n)!==lt.check&&It(n)}}function It(t){lt.check=t,Xt(),Bn()}function Mt(){0!==lt.check&&_t(35)}function Ot(){lt=null}var xt=null,Tt=null;function jt(){xt={},Tt={}}function zt(){xt={},Tt={}}function Ct(t,n){n&&(n="".concat(n),t in xt||(xt[t]=[]),xt[t].indexOf(n)<0&&(xt[t].push(n),t in Tt||(Tt[t]=[]),Tt[t].push(n),xt[t].length>128&&It(5)))}function qt(){_t(1)}function At(){Tt={}}var Nt=null,Rt=[],Dt=0,Pt=null;function Ht(){Pt=null;var t=navigator&&"userAgent"in navigator?navigator.userAgent:"",n=document&&document.title?document.title:"";Dt=t.indexOf("Electron")>0?1:0;var e,r=function(){var t={session:Zt(),ts:Math.round(Date.now()),count:1,upgrade:null,upload:""},n=Kt("_clsk");if(n){var e=n.split("|");e.length>=5&&t.ts-Yt(e[1])<18e5&&(t.session=e[0],t.count=Yt(e[2])+1,t.upgrade=Yt(e[3]),t.upload=e.length>=6?"".concat("https://").concat(e[5],"/").concat(e[4]):"".concat("https://").concat(e[4]))}return t}(),o=Ft(),u=a.projectId||function(t,n){void 0===n&&(n=null);for(var e,r=5381,o=r,a=0;a<t.length;a+=2)r=(r<<5)+r^t.charCodeAt(a),a+1<t.length&&(o=(o<<5)+o^t.charCodeAt(a+1));return e=Math.abs(r+11579*o),(n?e%Math.pow(2,n):e).toString(36)}(location.host);Nt={projectId:u,userId:o.id,sessionId:r.session,pageNum:r.count},a.lean=a.track&&null!==r.upgrade?0===r.upgrade:a.lean,a.upload=a.track&&"string"==typeof a.upload&&r.upload&&r.upload.length>"https://".length?r.upload:a.upload,Ct(0,t),Ct(3,n),Ct(1,function(t,n){if(void 0===n&&(n=!1),n)return"".concat("https://").concat("Electron");var e=a.drop;if(e&&e.length>0&&t&&t.indexOf("?")>0){var r=t.split("?");return r[0]+"?"+r[1].split("&").map((function(t){return e.some((function(n){return 0===t.indexOf("".concat(n,"="))}))?"".concat(t.split("=")[0],"=").concat("*na*"):t})).join("&")}return t}(location.href,!!Dt)),Ct(2,document.referrer),Ct(15,function(){var t=Zt();if(a.track&&Wt(window,"sessionStorage")){var n=sessionStorage.getItem("_cltk");t=n||t,sessionStorage.setItem("_cltk",t)}return t}()),Ct(16,document.documentElement.lang),Ct(17,document.dir),Ct(26,"".concat(window.devicePixelRatio)),Ct(28,o.dob.toString()),Ct(29,o.version.toString()),x(0,r.ts),x(1,0),x(35,Dt),navigator&&(Ct(9,navigator.language),x(33,navigator.hardwareConcurrency),x(32,navigator.maxTouchPoints),x(34,Math.round(navigator.deviceMemory)),(e=navigator.userAgentData)&&e.getHighEntropyValues?e.getHighEntropyValues(["model","platform","platformVersion","uaFullVersion"]).then((function(t){var n;Ct(22,t.platform),Ct(23,t.platformVersion),null===(n=t.brands)||void 0===n||n.forEach((function(t){Ct(24,t.name+"~"+t.version)})),Ct(25,t.model),x(27,t.mobile?1:0)})):Ct(22,navigator.platform)),screen&&(x(14,Math.round(screen.width)),x(15,Math.round(screen.height)),x(16,Math.round(screen.colorDepth)));for(var c=0,i=a.cookies;c<i.length;c++){var s=i[c],l=Kt(s);l&&B(s,l)}Gt(o)}function Ut(){Pt=null,Nt=null}function Lt(t,n){void 0===n&&(n=!0);var e=a.lean?0:1;Nt&&(e||!1===n)?t(Nt,!a.lean):Rt.push({callback:t,wait:n})}function Vt(){return Nt?[Nt.userId,Nt.sessionId,Nt.pageNum].join("."):""}function Bt(t){if(void 0===t&&(t=!0),!t)return a.track=!1,$t("_clsk","",-Number.MAX_VALUE),$t("_clck","",-Number.MAX_VALUE),Bn(),void window.setTimeout(Vn,250);jn()&&(a.track=!0,Gt(Ft(),1))}function Xt(){$t("_clsk","",0)}function Jt(){var t=Math.round(Date.now()),n=a.upload&&"string"==typeof a.upload?a.upload.replace("https://",""):"",e=a.lean?0:1;!function(t){Rt.length>0&&Rt.forEach((function(n){!n.callback||n.wait&&!t||n.callback(Nt,!a.lean)}))}(e),$t("_clsk",[Nt.sessionId,t,Nt.pageNum,e,n].join("|"),1)}function Wt(t,n){try{return!!t[n]}catch(t){return!1}}function Gt(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===a.dob?0:a.dob:t.dob;(null===t.expiry||Math.abs(e-t.expiry)>=1||t.consent!==n||t.dob!==r)&&$t("_clck",[Nt.userId,2,e.toString(36),n,r].join("|"),365)}function Zt(){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 Yt(t,n){return void 0===n&&(n=10),parseInt(t,n)}function Ft(){var t={id:Zt(),version:0,expiry:null,consent:0,dob:0},n=Kt("_clck");if(n&&n.length>0){for(var e=n.split("|"),r=0,o=0,u=document.cookie.split(";");o<u.length;o++){r+="_clck"===u[o].split("=")[0].trim()?1:0}if(1===e.length||r>1){var c="".concat(";").concat("expires=").concat(new Date(0).toUTCString()).concat(";path=/");document.cookie="".concat("_clck","=").concat(c),document.cookie="".concat("_clsk","=").concat(c)}e.length>1&&(t.version=Yt(e[1])),e.length>2&&(t.expiry=Yt(e[2],36)),e.length>3&&1===Yt(e[3])&&(t.consent=1),e.length>4&&Yt(e[1])>1&&(t.dob=Yt(e[4])),a.track=a.track||1===t.consent,t.id=a.track?e[0]:t.id}return t}function Kt(t){var n;if(Wt(document,"cookie")){var e=document.cookie.split(";");if(e)for(var r=0;r<e.length;r++){var o=e[r].split("=");if(o.length>1&&o[0]&&o[0].trim()===t){for(var a=Qt(o[1]),u=a[0],c=a[1];u;)u=(n=Qt(c))[0],c=n[1];return c}}}return null}function Qt(t){try{var n=decodeURIComponent(t);return[n!=t,n]}catch(t){}return[!1,t]}function $t(t,n,e){if((a.track||""==n)&&(navigator&&navigator.cookieEnabled||Wt(document,"cookie"))){var r=function(t){return encodeURIComponent(t)}(n),o=new Date;o.setDate(o.getDate()+e);var u=o?"expires="+o.toUTCString():"",c="".concat(t,"=").concat(r).concat(";").concat(u).concat(";path=/");try{if(null===Pt){for(var i=location.hostname?location.hostname.split("."):[],s=i.length-1;s>=0;s--)if(Pt=".".concat(i[s]).concat(Pt||""),s<i.length-1&&(document.cookie="".concat(c).concat(";").concat("domain=").concat(Pt),Kt(t)===n))return;Pt=""}}catch(t){Pt=""}document.cookie=Pt?"".concat(c).concat(";").concat("domain=").concat(Pt):c}}var tn,nn=null;function en(){var t=Nt;nn={version:s,sequence:0,start:0,duration:0,projectId:t.projectId,userId:t.userId,sessionId:t.sessionId,pageNum:t.pageNum,upload:0,end:0}}function rn(){nn=null}function on(t){return nn.start=nn.start+nn.duration,nn.duration=i()-nn.start,nn.sequence++,nn.upload=t&&"sendBeacon"in navigator?1:0,nn.end=t?1:0,[nn.version,nn.sequence,nn.start,nn.duration,nn.projectId,nn.userId,nn.sessionId,nn.pageNum,nn.upload,nn.end]}function an(){tn=[]}function un(t){if(tn&&-1===tn.indexOf(t.message)){var n=a.report;if(n&&n.length>0){var e={v:nn.version,p:nn.projectId,u:nn.userId,s:nn.sessionId,n:nn.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)),tn.push(t.message)}}return t}function cn(t){return function(){var n=performance.now();try{t.apply(this,arguments)}catch(t){throw un(t)}var e=performance.now()-n;O(4,e),e>30&&(M(7),x(6,e))}}var sn=[];function ln(t,n,e,r){void 0===r&&(r=!1),e=cn(e);try{t[u("addEventListener")](n,e,r),sn.push({event:n,target:t,listener:e,capture:r})}catch(t){}}function pn(){for(var t=0,n=sn;t<n.length;t++){var e=n[t];try{e.target[u("removeEventListener")](e.event,e.listener,e.capture)}catch(t){}}sn=[]}var dn=null,fn=null,hn=null,vn=0;function gn(){return!(vn++>20)}function mn(){vn=0,hn!==bn()&&(Bn(),window.setTimeout(yn,250))}function yn(){Vn(),x(29,1)}function bn(){return location.href?location.href.replace(location.hash,""):location.href}var wn=[],kn=null,_n=null,Sn=null;function En(){_n&&(Sn(),_n=null,null===kn&&Mn())}function In(){wn=[],kn=null,_n=null}function Mn(){var t=wn.shift();t&&(kn=t,t.task().then((function(){t.id===Vt()&&(t.resolve(),kn=null,Mn())})).catch((function(n){t.id===Vt()&&(n&&(n.name,n.message,n.stack),kn=null,Mn())})))}var On=!1;function xn(){On=!0,c=performance.now()+performance.timeOrigin,In(),pn(),an(),hn=bn(),vn=0,ln(window,"popstate",mn),null===dn&&(dn=history.pushState,history.pushState=function(){dn.apply(this,arguments),jn()&&gn()&&mn()}),null===fn&&(fn=history.replaceState,history.replaceState=function(){fn.apply(this,arguments),jn()&&gn()&&mn()})}function Tn(){hn=null,vn=0,an(),pn(),In(),c=0,On=!1}function jn(){return On}function zn(t){if(null===t||On)return!1;for(var n in t)n in a&&(a[n]=t[n]);return!0}function Cn(){Vn(),_("clarity","restart")}var qn,An=null;function Nn(){An=null}function Rn(t){An={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){U(this,void 0,void 0,(function(){var n,e;return L(this,(function(r){return n=i(),e=[n,t],29===t&&(e.push(An.fetchStart),e.push(An.connectStart),e.push(An.connectEnd),e.push(An.requestStart),e.push(An.responseStart),e.push(An.responseEnd),e.push(An.domInteractive),e.push(An.domComplete),e.push(An.loadEventStart),e.push(An.loadEventEnd),e.push(An.redirectCount),e.push(An.size),e.push(An.type),e.push(An.protocol),e.push(An.encodedSize),e.push(An.decodedSize),Nn(),gt(e)),[2]}))}))}(29)}var Dn=["navigation","resource","longtask","first-input","layout-shift","largest-contentful-paint"];function Pn(){try{qn&&qn.disconnect(),qn=new PerformanceObserver(cn(Hn));for(var t=0,n=Dn;t<n.length;t++){var e=n[t];PerformanceObserver.supportedEntryTypes.indexOf(e)>=0&&("layout-shift"===e&&O(9,0),qn.observe({type:e,buffered:!0}))}}catch(t){}}function Hn(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":Rn(r);break;case"resource":var o=r.name;Ct(4,Un(o)),o!==a.upload&&o!==a.fallback||x(28,r.duration);break;case"longtask":M(7);break;case"first-input":n&&x(10,r.processingStart-r.startTime);break;case"layout-shift":n&&!r.hadRecentInput&&O(9,1e3*r.value);break;case"largest-contentful-paint":n&&x(8,r.startTime)}}}(t.getEntries())}function Un(t){var n=document.createElement("a");return n.href=t,n.host}var Ln=[w,w,w,Object.freeze({__proto__:null,start:function(){Nn(),function(){navigator&&"connection"in navigator&&Ct(27,navigator.connection.effectiveType),window.PerformanceObserver&&PerformanceObserver.supportedEntryTypes&&("complete"!==document.readyState?ln(window,"load",T.bind(this,Pn,0)):Pn())}()},stop:function(){qn&&qn.disconnect(),qn=null,Nn()}})];function Vn(t){void 0===t&&(t=null),function(){try{var t=navigator&&"globalPrivacyControl"in navigator&&1==navigator.globalPrivacyControl;return!1===On&&"undefined"!=typeof Promise&&window.MutationObserver&&document.createTreeWalker&&"now"in Date&&"now"in performance&&"undefined"!=typeof WeakMap&&!t}catch(t){return!1}}()&&(zn(t),xn(),et(),Ln.forEach((function(t){return cn(t.start)()})),null===t&&Gn())}function Bn(){jn()&&(Ln.slice().reverse().forEach((function(t){return cn(t.stop)()})),rt(),Tn(),void 0!==Jn&&(Jn[Wn]=function(){(Jn[Wn].q=Jn[Wn].q||[]).push(arguments),"start"===arguments[0]&&Jn[Wn].q.unshift(Jn[Wn].q.pop())&&Gn()}))}var Xn=Object.freeze({__proto__:null,consent:Bt,event:_,hashText:y,identify:X,metadata:Lt,pause:function(){jn()&&(_("clarity","pause"),null===_n&&(_n=new Promise((function(t){Sn=t}))))},resume:function(){jn()&&(En(),_("clarity","resume"))},set:B,signal:function(t){$=t},start:Vn,stop:Bn,upgrade:P,version:s}),Jn=window,Wn="clarity";function Gn(){if(void 0!==Jn){if(Jn[Wn]&&Jn[Wn].v)return console.warn("Error CL001: Multiple Clarity tags detected.");var t=Jn[Wn]&&Jn[Wn].q||[];for(Jn[Wn]=function(t){for(var n=[],e=1;e<arguments.length;e++)n[e-1]=arguments[e];return Xn[t].apply(Xn,n)},Jn[Wn].v=s;t.length>0;)Jn[Wn].apply(Jn,t.shift())}}Gn()}();
|
package/package.json
CHANGED
package/src/core/config.ts
CHANGED
package/src/core/time.ts
CHANGED
|
@@ -1,12 +1,17 @@
|
|
|
1
1
|
let startTime = 0;
|
|
2
2
|
|
|
3
3
|
export function start(): void {
|
|
4
|
-
startTime = performance.now();
|
|
4
|
+
startTime = performance.now() + performance.timeOrigin;
|
|
5
5
|
}
|
|
6
6
|
|
|
7
|
+
// event.timestamp is number of milliseconds elapsed since the document was loaded
|
|
8
|
+
// since iframes can be loaded later the event timestamp is not the same as performance.now()
|
|
9
|
+
// converting everything to absolute time by adding timeorigin of the event view
|
|
10
|
+
// to synchronize times before calculating the difference with start time
|
|
7
11
|
export function time(event: UIEvent = null): number {
|
|
8
12
|
let ts = event && event.timeStamp > 0 ? event.timeStamp : performance.now();
|
|
9
|
-
|
|
13
|
+
let origin = event && event.view ? event.view.performance.timeOrigin : performance.timeOrigin;
|
|
14
|
+
return Math.max(Math.round(ts + origin - startTime), 0);
|
|
10
15
|
}
|
|
11
16
|
|
|
12
17
|
export function stop(): void {
|
package/src/core/version.ts
CHANGED
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
let version = "0.7.
|
|
1
|
+
let version = "0.7.33";
|
|
2
2
|
export default version;
|
|
@@ -117,13 +117,17 @@ export default async function (type: Event, ts: number = null): Promise<void> {
|
|
|
117
117
|
case Event.Scroll:
|
|
118
118
|
for (let entry of scroll.state) {
|
|
119
119
|
let sTarget = metadata(entry.data.target as Node, entry.event);
|
|
120
|
+
const top = metadata(entry.data.top as Node, entry.event);
|
|
121
|
+
const bottom = metadata(entry.data.bottom as Node, entry.event);
|
|
122
|
+
const sTopHash = top?.hash ? top.hash.join(Constant.Dot) : Constant.Empty;
|
|
123
|
+
const sBottomHash = bottom?.hash ? bottom.hash.join(Constant.Dot) : Constant.Empty;
|
|
120
124
|
if (sTarget.id > 0) {
|
|
121
125
|
tokens = [entry.time, entry.event];
|
|
122
126
|
tokens.push(sTarget.id);
|
|
123
127
|
tokens.push(entry.data.x);
|
|
124
128
|
tokens.push(entry.data.y);
|
|
125
|
-
tokens.push(
|
|
126
|
-
tokens.push(
|
|
129
|
+
tokens.push(sTopHash);
|
|
130
|
+
tokens.push(sBottomHash);
|
|
127
131
|
queue(tokens);
|
|
128
132
|
baseline.track(entry.event, entry.data.x, entry.data.y, entry.time);
|
|
129
133
|
}
|
|
@@ -1,14 +1,17 @@
|
|
|
1
|
-
import { Event } from "@clarity-types/data";
|
|
1
|
+
import { Constant, Dimension, Event } from "@clarity-types/data";
|
|
2
2
|
import { ScrollState, Setting } from "@clarity-types/interaction";
|
|
3
3
|
import { bind } from "@src/core/event";
|
|
4
4
|
import { schedule } from "@src/core/task";
|
|
5
5
|
import { time } from "@src/core/time";
|
|
6
6
|
import { clearTimeout, setTimeout } from "@src/core/timeout";
|
|
7
|
-
import { iframe
|
|
8
|
-
import { target } from "@src/layout/target";
|
|
7
|
+
import { iframe } from "@src/layout/dom";
|
|
8
|
+
import { target, metadata } from "@src/layout/target";
|
|
9
9
|
import encode from "./encode";
|
|
10
|
+
import * as dimension from "@src/data/dimension";
|
|
10
11
|
|
|
11
12
|
export let state: ScrollState[] = [];
|
|
13
|
+
let initialTop: Node = null;
|
|
14
|
+
let initialBottom: Node = null;
|
|
12
15
|
let timeout: number = null;
|
|
13
16
|
|
|
14
17
|
export function start(): void {
|
|
@@ -45,13 +48,17 @@ function recompute(event: UIEvent = null): void {
|
|
|
45
48
|
const yOffset = width > height ? height * 0.15 : height * 0.2;
|
|
46
49
|
const startYPosition = yOffset;
|
|
47
50
|
const endYPosition = height - yOffset;
|
|
48
|
-
const top =
|
|
49
|
-
const bottom =
|
|
51
|
+
const top = getPositionNode(xPosition, startYPosition);
|
|
52
|
+
const bottom = getPositionNode(xPosition, endYPosition);
|
|
50
53
|
|
|
51
54
|
let current: ScrollState = { time: time(event), event: Event.Scroll, data: {target: element, x, y, top, bottom} };
|
|
52
55
|
|
|
53
56
|
// We don't send any scroll events if this is the first event and the current position is top (0,0)
|
|
54
|
-
if ((event === null && x === 0 && y === 0) || (x === null || y === null)) {
|
|
57
|
+
if ((event === null && x === 0 && y === 0) || (x === null || y === null)) {
|
|
58
|
+
initialTop = top;
|
|
59
|
+
initialBottom = bottom;
|
|
60
|
+
return;
|
|
61
|
+
}
|
|
55
62
|
|
|
56
63
|
let length = state.length;
|
|
57
64
|
let last = length > 1 ? state[length - 2] : null;
|
|
@@ -62,7 +69,7 @@ function recompute(event: UIEvent = null): void {
|
|
|
62
69
|
timeout = setTimeout(process, Setting.LookAhead, Event.Scroll);
|
|
63
70
|
}
|
|
64
71
|
|
|
65
|
-
function
|
|
72
|
+
function getPositionNode(x: number, y: number): Node {
|
|
66
73
|
let node: Node;
|
|
67
74
|
if ("caretPositionFromPoint" in document) {
|
|
68
75
|
node = (document as any).caretPositionFromPoint(x, y)?.offsetNode;
|
|
@@ -76,11 +83,13 @@ function getPositionHash(x: number, y: number): string {
|
|
|
76
83
|
node = node.parentNode;
|
|
77
84
|
}
|
|
78
85
|
|
|
79
|
-
return
|
|
86
|
+
return node;
|
|
80
87
|
}
|
|
81
88
|
|
|
82
89
|
export function reset(): void {
|
|
83
90
|
state = [];
|
|
91
|
+
initialTop = null;
|
|
92
|
+
initialBottom = null;
|
|
84
93
|
}
|
|
85
94
|
|
|
86
95
|
function process(event: Event): void {
|
|
@@ -93,7 +102,20 @@ function similar(last: ScrollState, current: ScrollState): boolean {
|
|
|
93
102
|
return (dx * dx + dy * dy < Setting.Distance * Setting.Distance) && (current.time - last.time < Setting.Interval);
|
|
94
103
|
}
|
|
95
104
|
|
|
105
|
+
export function compute(): void {
|
|
106
|
+
if (initialTop) {
|
|
107
|
+
const top = metadata(initialTop, null);
|
|
108
|
+
dimension.log(Dimension.InitialScrollTop, top?.hash?.join(Constant.Dot));
|
|
109
|
+
}
|
|
110
|
+
if (initialBottom) {
|
|
111
|
+
const bottom = metadata(initialBottom, null);
|
|
112
|
+
dimension.log(Dimension.InitialScrollBottom, bottom?.hash?.join(Constant.Dot));
|
|
113
|
+
}
|
|
114
|
+
}
|
|
115
|
+
|
|
96
116
|
export function stop(): void {
|
|
97
117
|
clearTimeout(timeout);
|
|
98
118
|
state = [];
|
|
119
|
+
initialTop = null;
|
|
120
|
+
initialBottom = null;
|
|
99
121
|
}
|
package/src/layout/discover.ts
CHANGED
|
@@ -10,17 +10,18 @@ import encode from "@src/layout/encode";
|
|
|
10
10
|
import * as region from "@src/layout/region";
|
|
11
11
|
import traverse from "@src/layout/traverse";
|
|
12
12
|
import { checkDocumentStyles } from "@src/layout/style";
|
|
13
|
+
import * as scroll from "@src/interaction/scroll";
|
|
13
14
|
|
|
14
15
|
export function start(): void {
|
|
15
16
|
task.schedule(discover, Priority.High).then((): void => {
|
|
16
17
|
measure(doc.compute)();
|
|
17
18
|
measure(region.compute)();
|
|
19
|
+
measure(scroll.compute)();
|
|
18
20
|
});
|
|
19
21
|
}
|
|
20
22
|
|
|
21
23
|
async function discover(): Promise<void> {
|
|
22
24
|
let ts = time();
|
|
23
|
-
|
|
24
25
|
let timer: Timer = { id: id(), cost: Metric.LayoutCost };
|
|
25
26
|
task.start(timer);
|
|
26
27
|
await traverse(document, timer, Source.Discover, ts);
|
package/src/layout/encode.ts
CHANGED
|
@@ -93,8 +93,10 @@ export default async function (type: Event, timer: Timer = null, ts: number = nu
|
|
|
93
93
|
let box = size(value);
|
|
94
94
|
let factor = mangle ? -1 : 1;
|
|
95
95
|
tokens.push(value.id * factor);
|
|
96
|
-
if (value.parent && active) {
|
|
97
|
-
|
|
96
|
+
if (value.parent && active) {
|
|
97
|
+
tokens.push(value.parent);
|
|
98
|
+
if (value.previous) { tokens.push(value.previous); }
|
|
99
|
+
}
|
|
98
100
|
tokens.push(suspend ? Constant.SuspendMutationTag : data[key]);
|
|
99
101
|
if (box && box.length === 2) { tokens.push(`${Constant.Hash}${str(box[0])}.${str(box[1])}`); }
|
|
100
102
|
break;
|