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.