govuk_publishing_components 24.13.5 → 24.15.2

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: 6e717864c0f9538183da995c95a88d67af2e5e4d5666122052c7840884aaf705
4
- data.tar.gz: 465c33e805ec4d1567f9fc3447e001a553ba4cd542d83a28cf4dc52889824976
3
+ metadata.gz: a009f2b465acce49f9629d93f93b9766f6094782d58511beb9de6493339da158
4
+ data.tar.gz: d8e7429882e8c30ae8f381fd2fc158007da6d37c734e2108acd20c5496868a82
5
5
  SHA512:
6
- metadata.gz: c34d794a8ff619c8ea5e64e94e894fa13a0605787c1c77df151b6954fbe0347e02232b67ca0d9e87a18dd6057bf4814b0e35b32093f44db39256b3de6f9be20c
7
- data.tar.gz: 5030ea6f258797c43aca3c6b7e0028b748ec38886d28fe6893d6c9dc09866c2387e12c27f7109d46bec2713babc4f04a626e5028b3f8a87b3bc0e817d8d071a7
6
+ metadata.gz: f68f9ede39daaae299e1f4bab7fc2231df610c21dc3440a53fbcd247b1ee6e1c48a3e4e488894f967ce6c3edef414428dd8c58f1c86f349e19f533a1a773d05f
7
+ data.tar.gz: af13f81336c52694fbaf55a412debb20412dc583dac7108dc12b758cb6aff656f554822fa96a4d25369f56aa4c8872c0706bee6c8b6d2c052a9f12dbb97b8c2d
@@ -22,12 +22,12 @@
22
22
  if (targetClass.indexOf('js-visible') !== -1) {
23
23
  target.setAttribute('class', targetClass.replace(/(^|\s)js-visible(\s|$)/, ''))
24
24
  if (window.GOVUK.analytics && window.GOVUK.analytics.trackEvent) {
25
- window.GOVUK.analytics.trackEvent('headerClicked', 'searchClosed', { label: 'none' })
25
+ window.GOVUK.analytics.trackEvent('headerClicked', 'menuClosed', { label: 'none' })
26
26
  }
27
27
  } else {
28
28
  target.setAttribute('class', targetClass + ' js-visible')
29
29
  if (window.GOVUK.analytics && window.GOVUK.analytics.trackEvent) {
30
- window.GOVUK.analytics.trackEvent('headerClicked', 'searchOpened', { label: 'none' })
30
+ window.GOVUK.analytics.trackEvent('headerClicked', 'menuOpened', { label: 'none' })
31
31
  }
32
32
  }
33
33
  if (sourceClass.indexOf('js-visible') !== -1) {
@@ -47,3 +47,23 @@
47
47
  }
48
48
  }
49
49
  }).call(this)
50
+
51
+ ;(function () {
52
+ var $menuToggleButtons = document.querySelectorAll('.govuk-js-header-toggle')
53
+
54
+ for (var j = 0; j < $menuToggleButtons.length; j++) {
55
+ var element = $menuToggleButtons[j]
56
+
57
+ element.addEventListener('click', function (event) {
58
+ var expanded = event.target.getAttribute('aria-expanded')
59
+
60
+ if (window.GOVUK.analytics && window.GOVUK.analytics.trackEvent) {
61
+ if (expanded === 'true') {
62
+ window.GOVUK.analytics.trackEvent('headerClicked', 'menuClosed', { label: 'none' })
63
+ } else {
64
+ window.GOVUK.analytics.trackEvent('headerClicked', 'menuOpened', { label: 'none' })
65
+ }
66
+ }
67
+ })
68
+ }
69
+ })()
@@ -0,0 +1,36 @@
1
+ (function() {
2
+ var marker = document.getElementsByTagName('script')[0]
3
+ var scripts = [
4
+ '<%= path_to_javascript("govuk_publishing_components/vendor/lux/lux-polyfill") %>',
5
+ '<%= path_to_javascript("govuk_publishing_components/vendor/lux/lux") %>'
6
+ ]
7
+ var parsedCookie = (function() {
8
+ try {
9
+ var cookies = document.cookie.split(';')
10
+
11
+ for (var i = 0; i < cookies.length; i++) {
12
+ var cookie = cookies[i].replace(/\s/g, '') // Remove all whitespace.
13
+ var cookieName = 'cookies_policy='
14
+
15
+ if (cookie.indexOf(cookieName) === 0) {
16
+ return JSON.parse(cookie.substring(cookieName.length))
17
+ }
18
+ }
19
+ } catch (error) {
20
+ console.error(error)
21
+ }
22
+
23
+ return {}
24
+ })()
25
+
26
+ if (parsedCookie.usage === true) {
27
+ for (var i = 0; i < scripts.length; i++) {
28
+ var script = document.createElement('script')
29
+ script.src = scripts[i]
30
+ script.async = true
31
+ script.defer = true
32
+
33
+ marker.parentNode.insertBefore(script, marker)
34
+ }
35
+ }
36
+ })()
@@ -0,0 +1,159 @@
1
+ /* eslint-disable */
2
+
3
+ /*
4
+ * Part of Speedcurve's LUX script, which allows us to run real user metrics on
5
+ * pages using the public layout template.
6
+ *
7
+ * See docs/real-user-metrics.md for more information.
8
+ */
9
+
10
+ LUX = (function () {
11
+ var a =
12
+ "undefined" !== typeof LUX && "undefined" !== typeof LUX.gaMarks
13
+ ? LUX.gaMarks
14
+ : [];
15
+ var d =
16
+ "undefined" !== typeof LUX && "undefined" !== typeof LUX.gaMeasures
17
+ ? LUX.gaMeasures
18
+ : [];
19
+ var j = "LUX_start";
20
+ var k = window.performance;
21
+ var l =
22
+ "undefined" !== typeof LUX && LUX.ns
23
+ ? LUX.ns
24
+ : Date.now
25
+ ? Date.now()
26
+ : +new Date();
27
+ if (k && k.timing && k.timing.navigationStart) {
28
+ l = k.timing.navigationStart;
29
+ }
30
+ function f() {
31
+ if (k && k.now) {
32
+ return k.now();
33
+ }
34
+ var o = Date.now ? Date.now() : +new Date();
35
+ return o - l;
36
+ }
37
+ function b(n) {
38
+ if (k) {
39
+ if (k.mark) {
40
+ return k.mark(n);
41
+ } else {
42
+ if (k.webkitMark) {
43
+ return k.webkitMark(n);
44
+ }
45
+ }
46
+ }
47
+ a.push({ name: n, entryType: "mark", startTime: f(), duration: 0 });
48
+ return;
49
+ }
50
+ function m(p, t, n) {
51
+ if ("undefined" === typeof t && h(j)) {
52
+ t = j;
53
+ }
54
+ if (k) {
55
+ if (k.measure) {
56
+ if (t) {
57
+ if (n) {
58
+ return k.measure(p, t, n);
59
+ } else {
60
+ return k.measure(p, t);
61
+ }
62
+ } else {
63
+ return k.measure(p);
64
+ }
65
+ } else {
66
+ if (k.webkitMeasure) {
67
+ return k.webkitMeasure(p, t, n);
68
+ }
69
+ }
70
+ }
71
+ var r = 0,
72
+ o = f();
73
+ if (t) {
74
+ var s = h(t);
75
+ if (s) {
76
+ r = s.startTime;
77
+ } else {
78
+ if (k && k.timing && k.timing[t]) {
79
+ r = k.timing[t] - k.timing.navigationStart;
80
+ } else {
81
+ return;
82
+ }
83
+ }
84
+ }
85
+ if (n) {
86
+ var q = h(n);
87
+ if (q) {
88
+ o = q.startTime;
89
+ } else {
90
+ if (k && k.timing && k.timing[n]) {
91
+ o = k.timing[n] - k.timing.navigationStart;
92
+ } else {
93
+ return;
94
+ }
95
+ }
96
+ }
97
+ d.push({ name: p, entryType: "measure", startTime: r, duration: o - r });
98
+ return;
99
+ }
100
+ function h(n) {
101
+ return c(n, g());
102
+ }
103
+ function c(p, o) {
104
+ for (i = o.length - 1; i >= 0; i--) {
105
+ var n = o[i];
106
+ if (p === n.name) {
107
+ return n;
108
+ }
109
+ }
110
+ return undefined;
111
+ }
112
+ function g() {
113
+ if (k) {
114
+ if (k.getEntriesByType) {
115
+ return k.getEntriesByType("mark");
116
+ } else {
117
+ if (k.webkitGetEntriesByType) {
118
+ return k.webkitGetEntriesByType("mark");
119
+ }
120
+ }
121
+ }
122
+ return a;
123
+ }
124
+ return { mark: b, measure: m, gaMarks: a, gaMeasures: d };
125
+ })();
126
+ LUX.ns = Date.now ? Date.now() : +new Date();
127
+ LUX.ac = [];
128
+ LUX.cmd = function (a) {
129
+ LUX.ac.push(a);
130
+ };
131
+ LUX.init = function () {
132
+ LUX.cmd(["init"]);
133
+ };
134
+ LUX.send = function () {
135
+ LUX.cmd(["send"]);
136
+ };
137
+ LUX.addData = function (a, b) {
138
+ LUX.cmd(["addData", a, b]);
139
+ };
140
+ LUX_ae = [];
141
+ window.addEventListener("error", function (a) {
142
+ LUX_ae.push(a);
143
+ });
144
+ LUX_al = [];
145
+ if (
146
+ "function" === typeof PerformanceObserver &&
147
+ "function" === typeof PerformanceLongTaskTiming
148
+ ) {
149
+ var LongTaskObserver = new PerformanceObserver(function (c) {
150
+ var b = c.getEntries();
151
+ for (var a = 0; a < b.length; a++) {
152
+ var d = b[a];
153
+ LUX_al.push(d);
154
+ }
155
+ });
156
+ try {
157
+ LongTaskObserver.observe({ type: ["longtask"] });
158
+ } catch (e) {}
159
+ }
@@ -0,0 +1,1024 @@
1
+ /* eslint-disable */
2
+
3
+ /*
4
+ * Part of Speedcurve's LUX script, which allows us to run real user metrics on
5
+ * pages using the public layout template.
6
+ *
7
+ * See docs/real-user-metrics.md for more information.
8
+ */
9
+
10
+
11
+ /* ! Remember to keep these settings at the end of this file when updating LUX:
12
+ *
13
+ * * `LUX.customerid = 47044334` to let LUX know who this is
14
+ * * `LUX.beaconMode = "simple"` to fire the beacon as an image, which is now
15
+ * allowed by the content security policy.
16
+ * * `LUX.debug = false` turns debugging on and off. Left set to false - and
17
+ * kept in the file so it's easier to remember that this can be turned on.
18
+ *
19
+ * ! And the sample rate needs to be set inside the main function that's
20
+ * assigned to `LUX`:
21
+
22
+ * * `LUX.samplerate = 1` to set sample rate to 1% of users.
23
+ */
24
+
25
+ var LUX_t_start = Date.now(),
26
+ LUX = window.LUX || {};
27
+ LUX = (function () {
28
+ // -------------------------------------------------------------------------
29
+ // Settings
30
+ // -------------------------------------------------------------------------
31
+ // Set the sample rate to 1% to avoid all events being sent.
32
+ LUX.samplerate = 1
33
+ // -------------------------------------------------------------------------
34
+ /// End
35
+ // -------------------------------------------------------------------------
36
+
37
+ var e = [];
38
+ pe("lux.js evaluation start.");
39
+ var t = "216",
40
+ n = 0;
41
+ function r(e) {
42
+ n++,
43
+ e &&
44
+ void 0 !== e.filename &&
45
+ void 0 !== e.message &&
46
+ (-1 !== e.filename.indexOf("/lux.js?") ||
47
+ -1 !== e.message.indexOf("LUX") ||
48
+ (n <= 5 && W())) &&
49
+ (new Image().src =
50
+ "https://lux.speedcurve.com/error/?v=216&id=" +
51
+ J() +
52
+ "&fn=" +
53
+ encodeURIComponent(e.filename) +
54
+ "&ln=" +
55
+ e.lineno +
56
+ "&cn=" +
57
+ e.colno +
58
+ "&msg=" +
59
+ encodeURIComponent(e.message) +
60
+ "&l=" +
61
+ encodeURIComponent(ge()) +
62
+ (V() ? "&ct=" + V() : ""));
63
+ }
64
+ window.addEventListener("error", r);
65
+ var i = ("object" == typeof window.LUX_al ? window.LUX_al : []).slice();
66
+ if ("function" == typeof PerformanceObserver) {
67
+ var a = new PerformanceObserver(function (e) {
68
+ e.getEntries().forEach(function (e) {
69
+ ("longtask" === e.entryType && -1 !== i.indexOf(e)) || i.push(e);
70
+ });
71
+ });
72
+ try {
73
+ "function" == typeof PerformanceLongTaskTiming &&
74
+ a.observe({ type: "longtask", buffered: !0 }),
75
+ "function" == typeof LargestContentfulPaint &&
76
+ a.observe({ type: "largest-contentful-paint", buffered: !0 }),
77
+ "function" == typeof PerformanceElementTiming &&
78
+ a.observe({ type: "element", buffered: !0 }),
79
+ "function" == typeof PerformancePaintTiming && a.observe({ type: "paint", buffered: !0 }),
80
+ "function" == typeof LayoutShift && a.observe({ type: "layout-shift", buffered: !0 });
81
+ } catch (e) {
82
+ pe("Long Tasks error.");
83
+ }
84
+ } else pe("Long Tasks not supported.");
85
+ var o,
86
+ s = 0,
87
+ u = void 0 !== LUX.gaMarks ? LUX.gaMarks : [],
88
+ c = void 0 !== LUX.gaMeasures ? LUX.gaMeasures : [],
89
+ d = {},
90
+ f = {},
91
+ m = 0,
92
+ l = 0,
93
+ v = 0,
94
+ g = 0,
95
+ p = 1,
96
+ h = "LUX_start",
97
+ y = "LUX_end",
98
+ E = me(),
99
+ T = le(E),
100
+ L = window.performance,
101
+ b = 2e3,
102
+ w = void 0 !== LUX.beaconMode ? LUX.beaconMode : "autoupdate",
103
+ U = void 0 !== LUX.beaconUrl ? LUX.beaconUrl : "https://lux.speedcurve.com/lux/",
104
+ X = void 0 !== LUX.samplerate ? LUX.samplerate : 100;
105
+ pe(
106
+ "Sample rate = " +
107
+ X +
108
+ "%. " +
109
+ (W()
110
+ ? "This session IS being sampled."
111
+ : "This session is NOT being sampled. The data will NOT show up in your LUX dashboards. Call LUX.forceSample() and try again.")
112
+ );
113
+ var S,
114
+ k = void 0 === LUX.auto || LUX.auto,
115
+ M = LUX.ns ? LUX.ns : Date.now ? Date.now() : +new Date(),
116
+ B = 0;
117
+ L && L.timing && L.timing.navigationStart
118
+ ? ((M = L.timing.navigationStart), (B = LUX.ns ? LUX.ns - M : 0))
119
+ : (pe("Nav Timing is not supported."), (s |= 2));
120
+ var N = ["click", "mousedown", "keydown", "touchstart", "pointerdown"],
121
+ x = { passive: !0, capture: !0 };
122
+ function C(e) {
123
+ S ||
124
+ ((S = Math.round(e)),
125
+ N.forEach(function (e) {
126
+ removeEventListener(e, I, x);
127
+ }));
128
+ }
129
+ function I(e) {
130
+ var t = !1;
131
+ try {
132
+ t = e.cancelable;
133
+ } catch (e) {
134
+ return void pe("Permission error accessing input event.");
135
+ }
136
+ if (t) {
137
+ var n = D(!0),
138
+ r = e.timeStamp;
139
+ if ((r > 152e7 && (n = Number(new Date())), r > n)) return;
140
+ var i = n - r;
141
+ "pointerdown" == e.type
142
+ ? (function (e, t) {
143
+ function n() {
144
+ C(e), i();
145
+ }
146
+ function r() {
147
+ i();
148
+ }
149
+ function i() {
150
+ window.removeEventListener("pointerup", n, x),
151
+ window.removeEventListener("pointercancel", r, x);
152
+ }
153
+ window.addEventListener("pointerup", n, x),
154
+ window.addEventListener("pointercancel", r, x);
155
+ })(i)
156
+ : C(i);
157
+ }
158
+ }
159
+ function D(e) {
160
+ var t = (Date.now ? Date.now() : +new Date()) - M,
161
+ n = _(h);
162
+ return n && !e ? t - n.startTime : L && L.now ? L.now() : t;
163
+ }
164
+ function j(e) {
165
+ if ((pe("Enter LUX.mark(), name = " + e), L)) {
166
+ if (L.mark) return L.mark(e);
167
+ if (L.webkitMark) return L.webkitMark(e);
168
+ }
169
+ (s |= 4), u.push({ name: e, entryType: "mark", startTime: D(), duration: 0 });
170
+ }
171
+ function _(e) {
172
+ return (function (e, t) {
173
+ if (t)
174
+ for (var n = t.length - 1; n >= 0; n--) {
175
+ var r = t[n];
176
+ if (e === r.name) return r;
177
+ }
178
+ return;
179
+ })(e, P());
180
+ }
181
+ function P() {
182
+ if (L) {
183
+ if (L.getEntriesByType) return L.getEntriesByType("mark");
184
+ if (L.webkitGetEntriesByType) return L.webkitGetEntriesByType("mark");
185
+ }
186
+ return u;
187
+ }
188
+ function O() {
189
+ var e = {},
190
+ t = _(h),
191
+ n = P();
192
+ n &&
193
+ n.forEach(function (n) {
194
+ var r = n.name,
195
+ i = r !== h && t ? t.startTime : 0,
196
+ a = Math.round(n.startTime - i);
197
+ a < 0 || (void 0 === e[r] ? (e[r] = a) : (e[r] = Math.max(a, e[r])));
198
+ });
199
+ var r = (function () {
200
+ if (L) {
201
+ if (L.getEntriesByType) return L.getEntriesByType("measure");
202
+ if (L.webkitGetEntriesByType) return L.webkitGetEntriesByType("measure");
203
+ }
204
+ return c;
205
+ })();
206
+ r &&
207
+ r.forEach(function (n) {
208
+ if (!(t && n.startTime < t.startTime)) {
209
+ var r = n.name,
210
+ i = Math.round(n.duration);
211
+ void 0 === e[r] ? (e[r] = i) : (e[r] = Math.max(i, e[r]));
212
+ }
213
+ });
214
+ var i = [];
215
+ return (
216
+ Object.keys(e).forEach(function (t) {
217
+ i.push(t + "|" + e[t]);
218
+ }),
219
+ i.join(",")
220
+ );
221
+ }
222
+ function H() {
223
+ if ("function" != typeof PerformanceLongTaskTiming) return "";
224
+ var e = "",
225
+ t = {},
226
+ n = {};
227
+ if (i.length)
228
+ for (
229
+ var r = _(h),
230
+ a = r ? r.startTime : 0,
231
+ o = r ? _(y).startTime : L.timing.loadEventEnd - L.timing.navigationStart,
232
+ s = 0;
233
+ s < i.length;
234
+ s++
235
+ ) {
236
+ var u = i[s];
237
+ if ("longtask" === u.entryType) {
238
+ var c = Math.round(u.duration);
239
+ if (u.startTime < a) c -= a - u.startTime;
240
+ else if (u.startTime >= o) continue;
241
+ var d = u.attribution[0].name;
242
+ t[d] || ((t[d] = 0), (n[d] = "")),
243
+ (t[d] += c),
244
+ (n[d] += "," + Math.round(u.startTime) + "|" + c);
245
+ }
246
+ }
247
+ var f = void 0 !== t.script ? "script" : "unknown";
248
+ void 0 === t[f] && ((t[f] = 0), (n[f] = ""));
249
+ var m = (function (e) {
250
+ for (var t = 0, n = A(), r = 0 === n, i = [], a = e.split(","), o = 0; o < a.length; o++) {
251
+ var s = a[o].split("|");
252
+ if (2 === s.length) {
253
+ var u = parseInt(s[0]),
254
+ c = parseInt(s[1]);
255
+ i.push(c), (t = c > t ? c : t), !r && u > n && (u - n > 5e3 ? (r = !0) : (n = u + c));
256
+ }
257
+ }
258
+ var d = i.length,
259
+ f = (function (e) {
260
+ if (0 === e.length) return 0;
261
+ var t = Math.floor(e.length / 2);
262
+ return (
263
+ e.sort(function (e, t) {
264
+ return e - t;
265
+ }),
266
+ e.length % 2 ? e[t] : Math.round((e[t - 1] + e[t]) / 2)
267
+ );
268
+ })(i);
269
+ return { count: d, median: f, max: t, fci: n };
270
+ })(n[f]),
271
+ l = ",n|" + m.count + ",d|" + m.median + ",x|" + m.max + (0 === m.fci ? "" : ",i|" + m.fci);
272
+ return (e += "s|" + t[f] + l + n[f]);
273
+ }
274
+ function R() {
275
+ var e = [];
276
+ for (var t in d) e.push(t + "|" + d[t]);
277
+ return e.join(",");
278
+ }
279
+ function W() {
280
+ if (void 0 === T || void 0 === X) return !1;
281
+ var e = ("" + T).substr(-2);
282
+ return parseInt(e) < X;
283
+ }
284
+ function F() {
285
+ var e = [];
286
+ for (var t in f) {
287
+ var n = "" + f[t];
288
+ (t = t.replace(/,/g, "").replace(/\|/g, "")),
289
+ (n = n.replace(/,/g, "").replace(/\|/g, "")),
290
+ e.push(t + "|" + n);
291
+ }
292
+ return encodeURIComponent(e.join(","));
293
+ }
294
+ function G() {
295
+ var e = Z();
296
+ if (!e)
297
+ return (function () {
298
+ for (
299
+ var e = document.getElementsByTagName("script"), t = 0, n = 0, r = e.length;
300
+ n < r;
301
+ n++
302
+ ) {
303
+ var i = e[n];
304
+ !i.src || i.async || i.defer || t++;
305
+ }
306
+ return t;
307
+ })();
308
+ for (var t = document.getElementsByTagName("script"), n = 0, r = 0, i = t.length; r < i; r++) {
309
+ var a = t[r];
310
+ !a.src || a.async || a.defer || 0 == (4 & a.compareDocumentPosition(e)) || n++;
311
+ }
312
+ return n;
313
+ }
314
+ function q(e) {
315
+ for (var t = document.getElementsByTagName(e), n = 0, r = 0, i = t.length; r < i; r++) {
316
+ var a = t[r];
317
+ try {
318
+ n += a.innerHTML.length;
319
+ } catch (a) {
320
+ return pe("Error accessing inline element innerHTML."), -1;
321
+ }
322
+ }
323
+ return n;
324
+ }
325
+ function z() {
326
+ var e = "",
327
+ t = M;
328
+ if (_(h) && _(y)) {
329
+ var n = Math.round(_(h).startTime);
330
+ e = (t += n) + "fs0ls" + (u = Math.round(_(y).startTime) - n) + "le" + u;
331
+ } else if (L && L.timing) {
332
+ var r = L.timing,
333
+ a = (function () {
334
+ if (L && L.timing) {
335
+ var e,
336
+ t = L.timing,
337
+ n = t.navigationStart;
338
+ if (n) {
339
+ if (
340
+ L &&
341
+ L.getEntriesByType &&
342
+ L.getEntriesByType("paint") &&
343
+ L.getEntriesByType("paint").length
344
+ )
345
+ for (var r = L.getEntriesByType("paint"), i = 0; i < r.length; i++) {
346
+ var a = r[i];
347
+ if ("first-paint" === a.name) {
348
+ e = Math.round(a.startTime);
349
+ break;
350
+ }
351
+ }
352
+ else if (window.chrome && "function" == typeof window.chrome.loadTimes) {
353
+ var o = window.chrome.loadTimes();
354
+ o && (e = Math.round(1e3 * o.firstPaintTime - n));
355
+ } else t.msFirstPaint && (e = Math.round(t.msFirstPaint - n));
356
+ if (e > 0) return e;
357
+ }
358
+ }
359
+ return pe("Paint Timing not supported."), null;
360
+ })(),
361
+ o = A(),
362
+ s = (function () {
363
+ if (i.length)
364
+ for (var e = i.length - 1; e >= 0; e--) {
365
+ var t = i[e];
366
+ if ("largest-contentful-paint" === t.entryType) return Math.round(t.startTime);
367
+ }
368
+ return 0;
369
+ })();
370
+ e =
371
+ t +
372
+ (r.redirectStart ? "rs" + (r.redirectStart - t) : "") +
373
+ (r.redirectEnd ? "re" + (r.redirectEnd - t) : "") +
374
+ (r.fetchStart ? "fs" + (r.fetchStart - t) : "") +
375
+ (r.domainLookupStart ? "ds" + (r.domainLookupStart - t) : "") +
376
+ (r.domainLookupEnd ? "de" + (r.domainLookupEnd - t) : "") +
377
+ (r.connectStart ? "cs" + (r.connectStart - t) : "") +
378
+ (r.secureConnectionStart ? "sc" + (r.secureConnectionStart - t) : "") +
379
+ (r.connectEnd ? "ce" + (r.connectEnd - t) : "") +
380
+ (r.requestStart ? "qs" + (r.requestStart - t) : "") +
381
+ (r.responseStart ? "bs" + (r.responseStart - t) : "") +
382
+ (r.responseEnd ? "be" + (r.responseEnd - t) : "") +
383
+ (r.domLoading ? "ol" + (r.domLoading - t) : "") +
384
+ (r.domInteractive ? "oi" + (r.domInteractive - t) : "") +
385
+ (r.domContentLoadedEventStart ? "os" + (r.domContentLoadedEventStart - t) : "") +
386
+ (r.domContentLoadedEventEnd ? "oe" + (r.domContentLoadedEventEnd - t) : "") +
387
+ (r.domComplete ? "oc" + (r.domComplete - t) : "") +
388
+ (r.loadEventStart ? "ls" + (r.loadEventStart - t) : "") +
389
+ (r.loadEventEnd ? "le" + (r.loadEventEnd - t) : "") +
390
+ (a ? "sr" + a : "") +
391
+ (o ? "fc" + o : "") +
392
+ (s ? "lc" + s : "");
393
+ } else if (_(y)) {
394
+ var u;
395
+ e = t + "fs0ls" + (u = Math.round(_(y).startTime)) + "le" + u;
396
+ }
397
+ return e;
398
+ }
399
+ function A() {
400
+ if (L && L.getEntriesByType && L.getEntriesByType("paint"))
401
+ for (var e = L.getEntriesByType("paint"), t = 0; t < e.length; t++) {
402
+ var n = e[t];
403
+ if ("first-contentful-paint" === n.name) return Math.round(n.startTime);
404
+ }
405
+ return 0;
406
+ }
407
+ function J() {
408
+ if (void 0 !== LUX.customerid) return LUX.customerid;
409
+ var e = Y("/js/lux.js");
410
+ return e
411
+ ? ((LUX.customerid = (function (e, t) {
412
+ for (var n = e.split("?")[1].split("&"), r = 0, i = n.length; r < i; r++) {
413
+ var a = n[r].split("=");
414
+ if (t === a[0]) return a[1];
415
+ }
416
+ return;
417
+ })(e.src, "id")),
418
+ LUX.customerid)
419
+ : "";
420
+ }
421
+ function Y(e) {
422
+ for (var t = document.getElementsByTagName("script"), n = 0, r = t.length; n < r; n++) {
423
+ var i = t[n];
424
+ if (i.src && -1 !== i.src.indexOf(e)) return i;
425
+ }
426
+ return null;
427
+ }
428
+ function K(e) {
429
+ var t = 0;
430
+ if (e.parentNode) for (; (e = e.parentNode); ) t++;
431
+ return t;
432
+ }
433
+ function Q() {
434
+ if (L && L.getEntriesByType) {
435
+ var e = performance.getEntriesByType("navigation");
436
+ if (e && e.length > 0 && e[0].encodedBodySize) return e[0].encodedBodySize;
437
+ }
438
+ return 0;
439
+ }
440
+ function V() {
441
+ var e = navigator.connection,
442
+ t = "";
443
+ return (
444
+ e &&
445
+ e.effectiveType &&
446
+ (t =
447
+ "slow-2g" === (t = e.effectiveType)
448
+ ? "Slow 2G"
449
+ : "2g" === t || "3g" === t || "4g" === t || "5g" === t
450
+ ? t.toUpperCase()
451
+ : t.charAt(0).toUpperCase() + t.slice(1)),
452
+ t
453
+ );
454
+ }
455
+ function Z(e) {
456
+ var t;
457
+ if ((e || (e = document.body), e)) {
458
+ var n = e.children;
459
+ if (n)
460
+ for (var r = 0, i = n.length; r < i; r++) {
461
+ var a = n[r];
462
+ $(a) && (t = a);
463
+ }
464
+ }
465
+ return t ? Z(t) : e;
466
+ }
467
+ function $(e) {
468
+ var t = document.documentElement.clientHeight,
469
+ n = document.documentElement.clientWidth,
470
+ r = (function (e) {
471
+ var t = 0,
472
+ n = 0;
473
+ for (; e; ) (t += e.offsetLeft), (n += e.offsetTop), (e = e.offsetParent);
474
+ return [t, n];
475
+ })(e);
476
+ return (
477
+ r[0] >= 0 && r[1] >= 0 && r[0] < n && r[1] < t && e.offsetWidth > 0 && e.offsetHeight > 0
478
+ );
479
+ }
480
+ function ee() {
481
+ pe("Enter LUX.send().");
482
+ var e = J();
483
+ if (e && E && W() && !m) {
484
+ j(y);
485
+ var t = O(),
486
+ r = (function () {
487
+ var e = [];
488
+ if (i.length)
489
+ for (var t = 0; t < i.length; t++) {
490
+ var n = i[t];
491
+ "element" === n.entryType &&
492
+ n.identifier &&
493
+ n.startTime &&
494
+ e.push(n.identifier + "|" + Math.round(n.startTime));
495
+ }
496
+ return e.join(",");
497
+ })(),
498
+ a = F(),
499
+ o = "";
500
+ v || (o = R());
501
+ var u = H(),
502
+ c = (function () {
503
+ if ("function" != typeof LayoutShift) return !1;
504
+ for (var e = 0, t = 0; t < i.length; t++) {
505
+ var n = i[t];
506
+ "layout-shift" !== n.entryType || n.hadRecentInput || (e += n.value);
507
+ }
508
+ return e.toFixed(6);
509
+ })(),
510
+ d = (function () {
511
+ var e = "";
512
+ if (L && L.getEntriesByName) {
513
+ var t = Y("/js/lux.js");
514
+ if (t) {
515
+ var n = L.getEntriesByName(t.src);
516
+ if (n && n.length) {
517
+ var r = n[0],
518
+ i = Math.round(r.domainLookupEnd - r.domainLookupStart),
519
+ a = Math.round(r.connectEnd - r.connectStart),
520
+ o = Math.round(r.responseStart - r.requestStart),
521
+ s = Math.round(r.responseEnd - r.responseStart),
522
+ u = i + a + o + s,
523
+ c = LUX_t_end - LUX_t_start,
524
+ d = r.encodedBodySize ? r.encodedBodySize : 0;
525
+ e =
526
+ "d" +
527
+ i +
528
+ "t" +
529
+ a +
530
+ "f" +
531
+ o +
532
+ "c" +
533
+ s +
534
+ "n" +
535
+ u +
536
+ "e" +
537
+ c +
538
+ "r" +
539
+ X +
540
+ (d ? "x" + d : "") +
541
+ (B ? "l" + B : "") +
542
+ "s" +
543
+ (LUX_t_start - M);
544
+ }
545
+ }
546
+ }
547
+ return e;
548
+ })();
549
+ document.visibilityState && "visible" !== document.visibilityState && (s |= 8);
550
+ var f,
551
+ g,
552
+ h,
553
+ w =
554
+ U +
555
+ "?v=" +
556
+ "216&id=" +
557
+ e +
558
+ "&sid=" +
559
+ E +
560
+ "&uid=" +
561
+ T +
562
+ (a ? "&CD=" + a : "") +
563
+ "&l=" +
564
+ encodeURIComponent(ge()),
565
+ k = q("script"),
566
+ N = q("style"),
567
+ x =
568
+ (l ? "" : "&NT=" + z()) +
569
+ (p ? "&LJS=" + d : "") +
570
+ "&PS=ns" +
571
+ (function () {
572
+ for (
573
+ var e = document.getElementsByTagName("script"), t = 0, n = 0, r = e.length;
574
+ n < r;
575
+ n++
576
+ )
577
+ e[n].src && t++;
578
+ return t;
579
+ })() +
580
+ "bs" +
581
+ G() +
582
+ (k > -1 ? "is" + k : "") +
583
+ "ss" +
584
+ (function () {
585
+ for (
586
+ var e = document.getElementsByTagName("link"), t = 0, n = 0, r = e.length;
587
+ n < r;
588
+ n++
589
+ ) {
590
+ var i = e[n];
591
+ i.href && "stylesheet" == i.rel && t++;
592
+ }
593
+ return t;
594
+ })() +
595
+ "bc" +
596
+ (function () {
597
+ for (
598
+ var e = 0, t = document.getElementsByTagName("link"), n = 0, r = t.length;
599
+ n < r;
600
+ n++
601
+ ) {
602
+ var i = t[n];
603
+ i.href &&
604
+ "stylesheet" === i.rel &&
605
+ 0 !== i.href.indexOf("data:") &&
606
+ (i.onloadcssdefined ||
607
+ "print" === i.media ||
608
+ "style" === i.as ||
609
+ ("function" == typeof i.onload && "all" === i.media) ||
610
+ e++);
611
+ }
612
+ return e;
613
+ })() +
614
+ (N > -1 ? "ic" + N : "") +
615
+ "ia" +
616
+ (function () {
617
+ var e = document.getElementsByTagName("img"),
618
+ t = [];
619
+ if (e)
620
+ for (var n = 0, r = e.length; n < r; n++) {
621
+ var i = e[n];
622
+ $(i) && t.push(i);
623
+ }
624
+ return t;
625
+ })().length +
626
+ "it" +
627
+ document.getElementsByTagName("img").length +
628
+ "dd" +
629
+ (function () {
630
+ for (var e = document.getElementsByTagName("*"), t = e.length, n = 0; t--; )
631
+ n += K(e[t]);
632
+ return Math.round(n / e.length);
633
+ })() +
634
+ "nd" +
635
+ document.getElementsByTagName("*").length +
636
+ "vh" +
637
+ document.documentElement.clientHeight +
638
+ "vw" +
639
+ document.documentElement.clientWidth +
640
+ "dh" +
641
+ ((f = document),
642
+ (g = f.body),
643
+ (h = f.documentElement),
644
+ Math.max(
645
+ g ? g.scrollHeight : 0,
646
+ g ? g.offsetHeight : 0,
647
+ h ? h.clientHeight : 0,
648
+ h ? h.scrollHeight : 0,
649
+ h ? h.offsetHeight : 0
650
+ ) + "dw") +
651
+ (function (e) {
652
+ var t = e.body,
653
+ n = e.documentElement;
654
+ return Math.max(
655
+ t ? t.scrollWidth : 0,
656
+ t ? t.offsetWidth : 0,
657
+ n ? n.clientWidth : 0,
658
+ n ? n.scrollWidth : 0,
659
+ n ? n.offsetWidth : 0
660
+ );
661
+ })(document) +
662
+ (Q() ? "ds" + Q() : "") +
663
+ (V() ? "ct" + V() + "_" : "") +
664
+ "er" +
665
+ n +
666
+ "nt" +
667
+ (L && L.navigation && void 0 !== L.navigation.type ? L.navigation.type : "") +
668
+ (navigator.deviceMemory ? "dm" + Math.round(navigator.deviceMemory) : "") +
669
+ (o ? "&IX=" + o : "") +
670
+ (S ? "&FID=" + S : "") +
671
+ (u ? "&CPU=" + u : "") +
672
+ (s ? "&fl=" + s : "") +
673
+ (r ? "&ET=" + r : "") +
674
+ "&HN=" +
675
+ encodeURIComponent(document.location.hostname) +
676
+ (!1 !== c ? "&CLS=" + c : ""),
677
+ C = "";
678
+ if (t) {
679
+ var I = w.length + x.length;
680
+ if (I + t.length <= b) x += "&UT=" + t;
681
+ else {
682
+ var D = b - I,
683
+ _ = t.lastIndexOf(",", D);
684
+ (x += "&UT=" + t.substring(0, _)), (C = t.substring(_ + 1));
685
+ }
686
+ }
687
+ var P = w + x;
688
+ pe("Sending main LUX beacon: " + P), re(P), (m = 1), (l = 1), (v = o ? 1 : 0);
689
+ for (var A = b - w.length; C; ) {
690
+ var Z = "";
691
+ if (C.length <= A) (Z = C), (C = "");
692
+ else {
693
+ var ee = C.lastIndexOf(",", A);
694
+ -1 === ee && (ee = C.indexOf(",")),
695
+ -1 === ee ? ((Z = C), (C = "")) : ((Z = C.substring(0, ee)), (C = C.substring(ee + 1)));
696
+ }
697
+ var te = w + "&UT=" + Z;
698
+ pe("Sending extra User Timing beacon: " + te), re(te);
699
+ }
700
+ }
701
+ }
702
+ function te() {
703
+ var e = J();
704
+ if (e && E && W() && !v && m) {
705
+ var t = R();
706
+ if (t) {
707
+ var n = F(),
708
+ r =
709
+ "?v=216&id=" +
710
+ e +
711
+ "&sid=" +
712
+ E +
713
+ "&uid=" +
714
+ T +
715
+ (n ? "&CD=" + n : "") +
716
+ "&l=" +
717
+ encodeURIComponent(ge()) +
718
+ "&IX=" +
719
+ t +
720
+ (S ? "&FID=" + S : "") +
721
+ "&HN=" +
722
+ encodeURIComponent(document.location.hostname),
723
+ i = U + r;
724
+ pe("Sending Interaction Metrics beacon: " + i), re(i), (v = 1);
725
+ }
726
+ }
727
+ }
728
+ function ne() {
729
+ var e = J();
730
+ if (e && E && W() && m) {
731
+ var t = F();
732
+ if (t) {
733
+ var n =
734
+ "?v=216&id=" +
735
+ e +
736
+ "&sid=" +
737
+ E +
738
+ "&uid=" +
739
+ T +
740
+ "&CD=" +
741
+ t +
742
+ "&l=" +
743
+ encodeURIComponent(ge()) +
744
+ "&HN=" +
745
+ encodeURIComponent(document.location.hostname),
746
+ r = U + n;
747
+ pe("Sending late Customer Data beacon: " + r), re(r);
748
+ }
749
+ }
750
+ }
751
+ function re(e) {
752
+ if ("simple" !== LUX.beaconMode)
753
+ return (function (e) {
754
+ var t = document.createElement("script");
755
+ (t.async = !0), (t.src = e);
756
+ var n = document.getElementsByTagName("script");
757
+ n.length
758
+ ? n[0].parentNode.insertBefore(t, n[0])
759
+ : ((n = document.getElementsByTagName("head")).length ||
760
+ (n = document.getElementsByTagName("body")).length) &&
761
+ n[0].appendChild(t);
762
+ })(e);
763
+ console.log(LUX.samplerate)
764
+ new Image().src = e;
765
+ }
766
+ function ie(e) {
767
+ if (e.id) return e.id;
768
+ for (var t, n = e; n.parentNode && n.parentNode.tagName; ) {
769
+ if ((n = n.parentNode).hasAttribute("data-sctrack")) return n.getAttribute("data-sctrack");
770
+ n.id && !t && (t = n.id);
771
+ }
772
+ var r = "INPUT" === e.tagName && "submit" === e.type,
773
+ i = "BUTTON" === e.tagName,
774
+ a = "A" === e.tagName;
775
+ return r && e.value ? e.value : (i || a) && e.innerText ? e.innerText : t || "";
776
+ }
777
+ function ae() {
778
+ void 0 === d.s && (d.s = Math.round(D()));
779
+ }
780
+ function oe(e) {
781
+ if ((fe(), void 0 === d.k)) {
782
+ if (((d.k = Math.round(D())), e && e.target)) {
783
+ var t = ie(e.target);
784
+ t && (d.ki = t);
785
+ }
786
+ te();
787
+ }
788
+ }
789
+ function se(e) {
790
+ if ((fe(), void 0 === d.c)) {
791
+ d.c = Math.round(D());
792
+ var t = null;
793
+ try {
794
+ e && e.target && (t = e.target);
795
+ } catch (e) {
796
+ pe("Error accessing event target."), (t = null);
797
+ }
798
+ if (t) {
799
+ e.clientX && ((d.cx = e.clientX), (d.cy = e.clientY));
800
+ var n = ie(e.target);
801
+ n && (d.ci = n);
802
+ }
803
+ te();
804
+ }
805
+ }
806
+ function ue(e, t) {
807
+ window.addEventListener
808
+ ? window.addEventListener(e, t, !1)
809
+ : window.attachEvent && window.attachEvent("on" + e, t);
810
+ }
811
+ function ce(e, t) {
812
+ window.removeEventListener
813
+ ? window.removeEventListener(e, t, !1)
814
+ : window.detachEvent && window.detachEvent("on" + e, t);
815
+ }
816
+ function de() {
817
+ ue("scroll", ae), ue("keypress", oe), ue("mousedown", se);
818
+ }
819
+ function fe() {
820
+ ce("scroll", ae), ce("keypress", oe), ce("mousedown", se);
821
+ }
822
+ function me(e) {
823
+ var t, n;
824
+ return e
825
+ ? Number(new Date()) + "00000"
826
+ : Number(new Date()) +
827
+ "" +
828
+ ((t = parseInt(1e5 * Math.random())), ((n = "00000") + t).slice(-n.length));
829
+ }
830
+ function le(e) {
831
+ var t = (function (e) {
832
+ try {
833
+ for (var t = document.cookie.split(";"), n = 0; n < t.length; n++) {
834
+ var r = t[n].split("=");
835
+ if (e === r[0].trim()) return unescape(r[1]);
836
+ }
837
+ } catch (e) {
838
+ pe("Error accessing document.cookie.");
839
+ }
840
+ return;
841
+ })("lux_uid");
842
+ if (!t || t.length < 11) t = e;
843
+ else {
844
+ var n = parseInt(t.substring(0, 10));
845
+ Number(new Date()) / 1e3 - n > 86400 && (t = e);
846
+ }
847
+ return ve(t), t;
848
+ }
849
+ function ve(e) {
850
+ return (
851
+ (function (e, t, n) {
852
+ try {
853
+ document.cookie =
854
+ e + "=" + escape(t) + (n ? "; max-age=" + n : "") + "; path=/; SameSite=Lax";
855
+ } catch (e) {
856
+ pe("Error setting document.cookie.");
857
+ }
858
+ })("lux_uid", e, 1800),
859
+ e
860
+ );
861
+ }
862
+ function ge() {
863
+ if (void 0 !== LUX.label) return LUX.label;
864
+ if (void 0 !== LUX.jspagelabel) {
865
+ var e = Function('"use strict"; return ' + LUX.jspagelabel);
866
+ try {
867
+ var t = e();
868
+ if (t) return t;
869
+ } catch (e) {
870
+ console.log("Error evaluating customer settings LUX page label:", e);
871
+ }
872
+ }
873
+ return document.title;
874
+ }
875
+ function pe(t) {
876
+ e.push(t), LUX.debug && console.log("LUX: " + t);
877
+ }
878
+ N.forEach(function (e) {
879
+ window.addEventListener(e, I, x);
880
+ }),
881
+ k &&
882
+ ("complete" == document.readyState
883
+ ? ee()
884
+ : ue("load", function () {
885
+ setTimeout(ee, 200);
886
+ }),
887
+ ue("beforeunload", ee),
888
+ ue("unload", ee),
889
+ ue("beforeunload", te),
890
+ ue("unload", te)),
891
+ de();
892
+ var he = {
893
+ mark: j,
894
+ measure: function (e, t, n) {
895
+ if ((pe("Enter LUX.measure(), name = " + e), void 0 === t && _(h) && (t = h), L)) {
896
+ if (L.measure) return t ? (n ? L.measure(e, t, n) : L.measure(e, t)) : L.measure(e);
897
+ if (L.webkitMeasure) return L.webkitMeasure(e, t, n);
898
+ }
899
+ var r = 0,
900
+ i = D();
901
+ if (t) {
902
+ var a = _(t);
903
+ if (a) r = a.startTime;
904
+ else {
905
+ if (!(L && L.timing && L.timing[t])) return;
906
+ r = L.timing[t] - L.timing.navigationStart;
907
+ }
908
+ }
909
+ if (n) {
910
+ var o = _(n);
911
+ if (o) i = o.startTime;
912
+ else {
913
+ if (!(L && L.timing && L.timing[n])) return;
914
+ i = L.timing[n] - L.timing.navigationStart;
915
+ }
916
+ }
917
+ c.push({ name: e, entryType: "measure", startTime: r, duration: i - r });
918
+ },
919
+ init: function () {
920
+ pe("Enter LUX.init()."),
921
+ (d = {}),
922
+ fe(),
923
+ de(),
924
+ (l = 0),
925
+ (m = 0),
926
+ (v = 0),
927
+ (p = 0),
928
+ (E = me()),
929
+ (T = le(E)),
930
+ i.splice(0),
931
+ (s = 0),
932
+ (s |= 1),
933
+ j(h);
934
+ },
935
+ send: ee,
936
+ addData: function (e, t) {
937
+ pe("Enter LUX.addData(), name = " + e + ", value = " + t);
938
+ var n = typeof t;
939
+ "string" !== typeof e || ("string" !== n && "number" !== n && "boolean" !== n) || (f[e] = t),
940
+ m && (o && clearTimeout(o), (o = setTimeout(ne, 100)));
941
+ },
942
+ getSessionId: function () {
943
+ return T;
944
+ },
945
+ getDebug: function () {
946
+ return e;
947
+ },
948
+ forceSample: function () {
949
+ ve(me(!0)), console.log("Sampling has been turned on for this session.");
950
+ },
951
+ doUpdate: function (e, n) {
952
+ if (e && t < e && document.body && !g) {
953
+ pe("Updating cached version of lux.js from 216 to " + e + "."), (g = 1);
954
+ var r = Y("/js/lux.js");
955
+ if (r)
956
+ if ("function" == typeof fetch) fetch(r.src, { cache: "reload" });
957
+ else {
958
+ var i = document.createElement("iframe");
959
+ (i.style.display = "none"),
960
+ (i.id = "LUX_update_iframe"),
961
+ (i.src =
962
+ "//cdn.speedcurve.com/luxupdate.php?src=" +
963
+ encodeURIComponent(r.src) +
964
+ (n ? "&tw=" + n : "")),
965
+ document.body.appendChild(i);
966
+ }
967
+ }
968
+ },
969
+ cmd: function (e) {
970
+ var t = e.shift();
971
+ "function" == typeof he[t] && he[t].apply(he, e);
972
+ },
973
+ beaconMode: w,
974
+ beaconUrl: U,
975
+ samplerate: X,
976
+ auto: k,
977
+ label: void 0 !== LUX.label ? LUX.label : void 0,
978
+ jspagelabel: void 0 !== LUX.jspagelabel ? LUX.jspagelabel : void 0,
979
+ version: t,
980
+ ae: [],
981
+ al: [],
982
+ debug: !!LUX.debug,
983
+ };
984
+ return (
985
+ LUX.ac &&
986
+ LUX.ac.length &&
987
+ LUX.ac.forEach(function (e) {
988
+ var t = e.shift();
989
+ "function" == typeof he[t] && he[t].apply(he, e);
990
+ }),
991
+ void 0 !== window.LUX_ae &&
992
+ window.LUX_ae.forEach(function (e) {
993
+ r(e);
994
+ }),
995
+ pe("lux.js evaluation end."),
996
+ he
997
+ );
998
+ })();
999
+ var LUX_t_end = Date.now();
1000
+
1001
+ // -----------------------------------------------------------------------------
1002
+ // More settings
1003
+ // -----------------------------------------------------------------------------
1004
+ //
1005
+ // This ID usually appended to the end of the lux.js as a query string when
1006
+ // using the SpeedCurve hosted version - but we have to include it here as this
1007
+ // is self hosted.
1008
+ LUX.customerid = 47044334;
1009
+
1010
+ // Turn on the image-based beacon, rather than have a remote JavaScript file
1011
+ // fetched and executed.
1012
+ LUX.beaconMode = "simple";
1013
+
1014
+ // Setting debug to `true` shows what happening as it happens. Running
1015
+ // `LUX.getDebug()` in the browser's console will show the history of what's
1016
+ // happened.
1017
+ LUX.debug = true;
1018
+
1019
+ // Forces sampling - useful for when used with `debug = true`
1020
+ // LUX.forceSample()
1021
+
1022
+ // -----------------------------------------------------------------------------
1023
+ // End of more settings
1024
+ // -----------------------------------------------------------------------------