govuk_publishing_components 24.13.5 → 24.15.2

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.
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
+ // -----------------------------------------------------------------------------