PageSourceSearch

https://laurenclark.io/assets/js/main.js

js laurenclark.io collected 2026-09-26 05:29:58 UTC 13,765 bytes, 335 lines download raw bytes

1/*
2reframe.js - Reframe.js: responsive iframes for embedded content
3@version v2.2.5
4@link https://github.com/dollarshaveclub/reframe.js#readme
5@author Jeff Wainwright <[email protected]> (http://jeffry.in)
6@license MIT
7*/
8!(function (e, t) {
9    'object' == typeof exports && 'undefined' != typeof module
10        ? (module.exports = t())
11        : 'function' == typeof define && define.amd
12        ? define(t)
13        : (e.reframe = t());
14})(this, function () {
15    'use strict';
16    function e(e, t) {
17        var i = 'string' == typeof e ? document.querySelectorAll(e) : e,
18            n = t || 'js-reframe';
19        'length' in i || (i = [i]);
20        for (var o = 0; o < i.length; o += 1) {
21            var r = i[o];
22            if (!(-1 !== r.className.split(' ').indexOf(n))) {
23                var d = r.getAttribute('height'),
24                    f = r.getAttribute('width');
25                if (!(f.indexOf('%') > -1 || r.style.width.indexOf('%') > -1)) {
26                    var a =
27                            ((d || r.offsetHeight) / (f || r.offsetWidth)) *
28                            100,
29                        s = document.createElement('div');
30                    s.className = n;
31                    var l = s.style;
32                    (l.position = 'relative'),
33                        (l.width = '100%'),
34                        (l.paddingTop = a + '%');
35                    var p = r.style;
36                    (p.position = 'absolute'),
37                        (p.width = '100%'),
38                        (p.height = '100%'),
39                        (p.left = '0'),
40                        (p.top = '0'),
41                        r.parentNode.insertBefore(s, r),
42                        r.parentNode.removeChild(r),
43                        s.appendChild(r);
44                }
45            }
46        }
47    }
48    return e;
49});
50
51/*!
52 * Smooth Scroll behavior polyfill
53 * https://github.com/iamdustan/smoothscroll
54 * MIT License
55 */
56!(function () {
57    'use strict';
58    function o() {
59        var o = window,
60            t = document;
61        if (
62            !(
63                'scrollBehavior' in t.documentElement.style &&
64                !0 !== o.__forceSmoothScrollPolyfill__
65            )
66        ) {
67            var l,
68                e = o.HTMLElement || o.Element,
69                r = 468,
70                i = {
71                    scroll: o.scroll || o.scrollTo,
72                    scrollBy: o.scrollBy,
73                    elementScroll: e.prototype.scroll || n,
74                    scrollIntoView: e.prototype.scrollIntoView
75                },
76                s =
77                    o.performance && o.performance.now
78                        ? o.performance.now.bind(o.performance)
79                        : Date.now,
80                c =
81                    ((l = o.navigator.userAgent),
82                    new RegExp(['MSIE ', 'Trident/', 'Edge/'].join('|')).test(l)
83                        ? 1
84                        : 0);
85            (o.scroll = o.scrollTo = function () {
86                void 0 !== arguments[0] &&
87                    (!0 !== f(arguments[0])
88                        ? h.call(
89                              o,
90                              t.body,
91                              void 0 !== arguments[0].left
92                                  ? ~~arguments[0].left
93                                  : o.scrollX || o.pageXOffset,
94                              void 0 !== arguments[0].top
95                                  ? ~~arguments[0].top
96                                  : o.scrollY || o.pageYOffset
97                          )
98                        : i.scroll.call(
99                              o,
100                              void 0 !== arguments[0].left
101                                  ? arguments[0].left
102                                  : 'object' != typeof arguments[0]
103                                  ? arguments[0]
104                                  : o.scrollX || o.pageXOffset,
105                              void 0 !== arguments[0].top
106                                  ? arguments[0].top
107                                  : void 0 !== arguments[1]
108                                  ? arguments[1]
109                                  : o.scrollY || o.pageYOffset
110                          ));
111            }),
112                (o.scrollBy = function () {
113                    void 0 !== arguments[0] &&
114                        (f(arguments[0])
115                            ? i.scrollBy.call(
116                                  o,
117                                  void 0 !== arguments[0].left
118                                      ? arguments[0].left
119                                      : 'object' != typeof arguments[0]
120                                      ? arguments[0]
121                                      : 0,
122                                  void 0 !== arguments[0].top
123                                      ? arguments[0].top
124                                      : void 0 !== arguments[1]
125                                      ? arguments[1]
126                                      : 0
127                              )
128                            : h.call(
129                                  o,
130                                  t.body,
131                                  ~~arguments[0].left +
132                                      (o.scrollX || o.pageXOffset),
133                                  ~~arguments[0].top +
134                                      (o.scrollY || o.pageYOffset)
135                              ));
136                }),
137                (e.prototype.scroll = e.prototype.scrollTo = function () {
138                    if (void 0 !== arguments[0])
139                        if (!0 !== f(arguments[0])) {
140                            var o = arguments[0].left,
141                                t = arguments[0].top;
142                            h.call(
143                                this,
144                                this,
145                                void 0 === o ? this.scrollLeft : ~~o,
146                                void 0 === t ? this.scrollTop : ~~t
147                            );
148                        } else {
149                            if (
150                                'number' == typeof arguments[0] &&
151                                void 0 === arguments[1]
152                            )
153                                throw new SyntaxError(
154                                    'Value could not be converted'
155                                );
156                            i.elementScroll.call(
157                                this,
158                                void 0 !== arguments[0].left
159                                    ? ~~arguments[0].left
160                                    : 'object' != typeof arguments[0]
161                                    ? ~~arguments[0]
162                                    : this.scrollLeft,
163                                void 0 !== arguments[0].top
164                                    ? ~~arguments[0].top
165                                    : void 0 !== arguments[1]
166                                    ? ~~arguments[1]
167                                    : this.scrollTop
168                            );
169                        }
170                }),
171                (e.prototype.scrollBy = function () {
172                    void 0 !== arguments[0] &&
173                        (!0 !== f(arguments[0])
174                            ? this.scroll({
175                                  left: ~~arguments[0].left + this.scrollLeft,
176                                  top: ~~arguments[0].top + this.scrollTop,
177                                  behavior: arguments[0].behavior
178                              })
179                            : i.elementScroll.call(
180                                  this,
181                                  void 0 !== arguments[0].left
182                                      ? ~~arguments[0].left + this.scrollLeft
183                                      : ~~arguments[0] + this.scrollLeft,
184                                  void 0 !== arguments[0].top
185                                      ? ~~arguments[0].top + this.scrollTop
186                                      : ~~arguments[1] + this.scrollTop
187                              ));
188                }),
189                (e.prototype.scrollIntoView = function () {
190                    if (!0 !== f(arguments[0])) {
191                        var l = (function (o) {
192                                for (
193                                    ;
194                                    o !== t.body &&
195                                    !1 ===
196                                        ((e = p((l = o), 'Y') && a(l, 'Y')),
197                                        (r = p(l, 'X') && a(l, 'X')),
198                                        e || r);
199
200                                )
201                                    o = o.parentNode || o.host;
202                                var l, e, r;
203                                return o;
204                            })(this),
205                            e = l.getBoundingClientRect(),
206                            r = this.getBoundingClientRect();
207                        l !== t.body
208                            ? (h.call(
209                                  this,
210                                  l,
211                                  l.scrollLeft + r.left - e.left,
212                                  l.scrollTop + r.top - e.top
213                              ),
214                              'fixed' !== o.getComputedStyle(l).position &&
215                                  o.scrollBy({
216                                      left: e.left,
217                                      top: e.top,
218                                      behavior: 'smooth'
219                                  }))
220                            : o.scrollBy({
221                                  left: r.left,
222                                  top: r.top,
223                                  behavior: 'smooth'
224                              });
225                    } else
226                        i.scrollIntoView.call(
227                            this,
228                            void 0 === arguments[0] || arguments[0]
229                        );
230                });
231        }
232        function n(o, t) {
233            (this.scrollLeft = o), (this.scrollTop = t);
234        }
235        function f(o) {
236            if (
237                null === o ||
238                'object' != typeof o ||
239                void 0 === o.behavior ||
240                'auto' === o.behavior ||
241                'instant' === o.behavior
242            )
243                return !0;
244            if ('object' == typeof o && 'smooth' === o.behavior) return !1;
245            throw new TypeError(
246                'behavior member of ScrollOptions ' +
247                    o.behavior +
248                    ' is not a valid value for enumeration ScrollBehavior.'
249            );
250        }
251        function p(o, t) {
252            return 'Y' === t
253                ? o.clientHeight + c < o.scrollHeight
254                : 'X' === t
255                ? o.clientWidth + c < o.scrollWidth
256                : void 0;
257        }
258        function a(t, l) {
259            var e = o.getComputedStyle(t, null)['overflow' + l];
260            return 'auto' === e || 'scroll' === e;
261        }
262        function d(t) {
263            var l,
264                e,
265                i,
266                c,
267                n = (s() - t.startTime) / r;
268            (c = n = n > 1 ? 1 : n),
269                (l = 0.5 * (1 - Math.cos(Math.PI * c))),
270                (e = t.startX + (t.x - t.startX) * l),
271                (i = t.startY + (t.y - t.startY) * l),
272                t.method.call(t.scrollable, e, i),
273                (e === t.x && i === t.y) ||
274                    o.requestAnimationFrame(d.bind(o, t));
275        }
276        function h(l, e, r) {
277            var c,
278                f,
279                p,
280                a,
281                h = s();
282            l === t.body
283                ? ((c = o),
284                  (f = o.scrollX || o.pageXOffset),
285                  (p = o.scrollY || o.pageYOffset),
286                  (a = i.scroll))
287                : ((c = l), (f = l.scrollLeft), (p = l.scrollTop), (a = n)),
288                d({
289                    scrollable: c,
290                    method: a,
291                    startTime: h,
292                    startX: f,
293                    startY: p,
294                    x: e,
295                    y: r
296                });
297        }
298    }
299    'object' == typeof exports && 'undefined' != typeof module
300        ? (module.exports = { polyfill: o })
301        : o();
302})();
303
304window.onGatsbyRouteUpdate = function () {
305    /**
306     * Main JS file for theme behaviours
307     */
308
309    // Responsive video embeds
310    var videoEmbeds = [
311        'iframe[src*="youtube.com"]',
312        'iframe[src*="vimeo.com"]'
313    ];
314    reframe(videoEmbeds.join(','));
315
316    // Mobile menu
317    var menuToggle = document.getElementById('menu-toggle');
318    if (menuToggle) {
319        menuToggle.addEventListener(
320            'click',
321            function (e) {
322                document.body.classList.toggle('menu--opened');
323                e.preventDefault();
324            },
325            false
326        );
327        document.body.classList.remove('menu--opened');
328    }
329
330    // Back to top
331    document.querySelector('#to-top').addEventListener('click', function (e) {
332        e.preventDefault();
333        document.querySelector('#page').scrollIntoView({ behavior: 'smooth' });
334    });
335};

Line numbers count LF bytes from the start of the resource, as the search results do. Vendor segments are library code the classifier recognised; they are stored but not indexed. Bytes are shown as Latin1 characters, one per byte.