PageSourceSearch

https://lauracannell.com/_static/??-eJydjEEOwjAMBD+EawqVekI8BaUhKU…fzHVyYqEIkn8NlWAU+PTXJOp7bv+67dHw9deAI6TW/y

js lauracannell.com collected 2026-10-09 22:12:57 UTC 19,218 bytes, 228 lines download raw bytes

1(()=>{(function(){var Scroller,stats,type,text,totop,loading_text,isIE=-1!==navigator.userAgent.search("MSIE");if(isIE){var IEVersion=navigator.userAgent.match(/MSIE\s?(\d+)\.?\d*;/);IEVersion=parseInt(IEVersion[1])}function fullscreenState(){return document.fullscreenElement||document.mozFullScreenElement||document.webkitFullscreenElement||document.msFullscreenElement?1:0}"https:"===document.location.protocol&&(infiniteScroll.settings.ajaxurl=infiniteScroll.settings.ajaxurl.replace("http://","https://")),Scroller=function(e){var t=this;this.id=e.id,this.body=document.body,this.window=window,this.element=document.getElementById(e.id),this.wrapperClass=e.wrapper_class,this.ready=!0,this.disabled=!1,this.page=1,this.offset=e.offset,this.currentday=e.currentday,this.order=e.order,this.throttle=!1,this.click_handle=e.click_handle,this.google_analytics=e.google_analytics,this.history=e.history,this.origURL=window.location.href,this.handle=document.createElement("div"),this.handle.setAttribute("id","infinite-handle");var n=document.createElement("span"),i=document.createElement("button");i.textContent=text,n.appendChild(i),this.handle.appendChild(n),this.footer={el:document.getElementById("infinite-footer"),wrap:e.footer},this.checkViewportOnLoadBound=t.checkViewportOnLoad.bind(this),this.wpMediaelement=null,"scroll"===type?(this.window.addEventListener("scroll",function(){t.throttle=!0}),t.gotop(),setInterval(function(){t.throttle&&(t.throttle=!1,t.thefooter(),t.refresh(),t.determineURL())},250),t.ensureFilledViewport(),this.body.addEventListener("is.post-load",t.checkViewportOnLoadBound)):"click"===type&&(this.click_handle&&this.element.appendChild(this.handle),this.handle.addEventListener("click",function(){t.click_handle&&t.handle.parentNode.removeChild(t.handle),t.refresh()})),this.body.addEventListener("is.post-load",t.initializeMejs)},Scroller.prototype.getScrollTop=function(){return window.pageYOffset||document.documentElement.scrollTop||document.body.scrollTop||0},Scroller.prototype.extend=function(e){e=e||{};for(var t=1;t<arguments.length;t++)if(arguments[t])for(var n in arguments[t])Object.hasOwn(arguments[t],n)&&(e[n]=arguments[t][n]);return e},Scroller.prototype.check=function(){return this.measure(this.element,[this.wrapperClass]).bottom<2*this.window.innerHeight},Scroller.prototype.render=function(e){var t=Array.prototype.slice.call(e.fragment.childNodes);for(this.body.classList.add("infinity-success");t.length>0;){var n=t.shift();this.element.appendChild(n)}this.trigger(this.body,"is.post-load",{jqueryEventName:"post-load",data:e}),this.ready=!0},Scroller.prototype.query=function(){return{page:this.page+this.offset,currentday:this.currentday,order:this.order,scripts:window.infiniteScroll.settings.scripts,styles:window.infiniteScroll.settings.styles,query_args:window.infiniteScroll.settings.query_args,query_before:window.infiniteScroll.settings.query_before,last_post_date:window.infiniteScroll.settings.last_post_date}},Scroller.prototype.animate=function(e,t){var n=performance.now();requestAnimationFrame(function i(o){var r=Math.min(1,(o-n)/t);e(r),r<1&&requestAnimationFrame(i)})},Scroller.prototype.gotop=function(){var e=document.getElementById("infinity-blog-title"),t=this;e&&(e.setAttribute("title",totop),e.addEventListener("click",function(e){var n=t.window.pageYOffset;e.preventDefault(),t.animate(function(e){var t=n-n*e;document.documentElement.scrollTop=document.body.scrollTop=t},200)}))},Scroller.prototype.thefooter=function(){var e,t,n,i,o=this;if(this.footer&&this.footer.el){if("string"==typeof this.footer.wrap){try{t=(t=document.getElementById(this.footer.wrap).getBoundingClientRect()).width}catch{t=0}t>479&&(e=this.footer.el.querySelector(".container"))&&(e.style.width=t+"px")}n=parseInt(o.footer.el.style.bottom||-50,10),i=this.window.pageYOffset>=350?0:-50,n!==i&&o.animate(function(e){var t=n+(i-n)*e;o.footer.el.style.bottom=t+"px",1===e&&(n=i)},200)}},Scroller.prototype.urlEncodeJSON=function(e,t){var n,i,o=[];for(var r in e)n=encodeURIComponent(r),i=t?t+"["+n+"]":n,"object"==typeof e[r]?!Array.isArray(e[r])||e[r].length>0?o.push(this.urlEncodeJSON(e[r],i)):o.push(i+"[]="):o.push(i+"="+encodeURIComponent(e[r]));return o.join("&")},Scroller.prototype.refresh=function(){var self=this,query,xhr,loader,customized;if(!this.disabled&&this.ready&&this.check())return this.ready=!1,this.click_handle&&(loader||(document.getElementById("infinite-aria").textContent=loading_text,loader=document.createElement("div"),loader.classList.add("infinite-loader"),loader.setAttribute("role","progress"),loader.innerHTML='<svg class="jetpack-spinner infinite-loader-spinner spinner" width="28" height="28" viewBox="0 0 100 100" xmlns="http://www.w3.org/2000/svg" aria-hidden="true" focusable="false"><circle cx="50" cy="50" r="46" fill="none" stroke="#ddd" stroke-width="8"/><path d="M 50 4 A 46 46 0 0 1 96 50" fill="none" stroke="currentColor" stroke-width="8" stroke-linecap="round"><animateTransform attributeName="transform" type="rotate" dur="1.4s" from="0 50 50" to="360 50 50" repeatCount="indef
1inite"/></path></svg>'),this.element.appendChild(loader)),query=self.extend({action:"infinite_scroll"},this.query()),"undefined"!=typeof wp&&wp.customize&&wp.customize.settings.theme&&(customized={},query.wp_customize="on",query.theme=wp.customize.settings.theme.stylesheet,wp.customize.each(function(e){e._dirty&&(customized[e.id]=e())}),query.customized=JSON.stringify(customized),query.nonce=wp.customize.settings.nonce.preview),xhr=new XMLHttpRequest,xhr.open("POST",infiniteScroll.settings.ajaxurl,!0),xhr.setRequestHeader("X-Requested-With","XMLHttpRequest"),xhr.setRequestHeader("Content-Type","application/x-www-form-urlencoded; charset=UTF-8"),xhr.send(self.urlEncodeJSON(query)),xhr.onerror=function(){self.click_handle&&loader.parentNode&&loader.parentNode.removeChild(loader),self.ready=!0},xhr.onload=function(){var response=JSON.parse(xhr.responseText),httpCheck=xhr.status>=200&&xhr.status<300,responseCheck=void 0!==response.html;if(response&&httpCheck&&responseCheck){if(self.click_handle&&loader.parentNode&&loader.parentNode.removeChild(loader),response.scripts&&Array.isArray(response.scripts)&&response.scripts.forEach(function(e){var t=e.footer?"body":"head";window.infiniteScroll.settings.scripts.push(e.handle),e.extra_data&&self.appendInlineScript(e.extra_data,t),e.before_handle&&self.appendInlineScript(e.before_handle,t);var n=document.createElement("script");n.type="text/javascript",n.src=e.src,n.id=e.handle,n.async=!1,e.after_handle&&(n.onload=function(){self.appendInlineScript(e.after_handle,t)}),"wp-mediaelement"===e.handle&&self.body.removeEventListener("is.post-load",self.initializeMejs),"wp-mediaelement"===e.handle&&"undefined"==typeof mejs?(self.wpMediaelement={},self.wpMediaelement.tag=n,self.wpMediaelement.element=t,setTimeout(self.maybeLoadMejs.bind(self),250)):document.getElementsByTagName(t)[0].appendChild(n)}),response.styles&&Array.isArray(response.styles)&&response.styles.forEach(function(item){window.infiniteScroll.settings.styles.push(item.handle);var style=document.createElement("link");style.rel="stylesheet",style.href=item.src,style.id=item.handle+"-css",!item.conditional||isIE&&eval(item.conditional.replace(/%ver/g,IEVersion))||(style=!1),style&&document.getElementsByTagName("head")[0].appendChild(style)}),response.fragment=document.createElement("div"),response.fragment.innerHTML=response.html,self.page++,stats&&((new Image).src=document.location.protocol+"//pixel.wp.com/g.gif?"+stats+"&post=0&baba="+Math.random()),"object"==typeof response.postflair&&"object"==typeof WPCOM_sharing_counts&&(WPCOM_sharing_counts=self.extend(WPCOM_sharing_counts,response.postflair)),self.render.call(self,response),"click"===type?(infiniteScroll.settings.wrapper&&document.querySelector("#infinite-view-"+(self.page+self.offset-1)+" a:first-of-type").focus({preventScroll:!0}),response.lastbatch?self.click_handle?(self.body.classList.add("infinity-end"),self.body.classList.remove("infinity-success")):self.trigger(this.body,"infinite-scroll-posts-end"):self.click_handle?self.element.appendChild(self.handle):self.trigger(this.body,"infinite-scroll-posts-more")):response.lastbatch&&(self.disabled=!0,self.body.classList.add("infinity-end"),self.body.classList.remove("infinity-success")),response.currentday&&(self.currentday=response.currentday),self.google_analytics){var ga_url=self.history.path.replace(/%d/,self.page);"object"==typeof _gaq&&_gaq.push(["_trackPageview",ga_url]),"function"==typeof ga&&ga("send","pageview",ga_url)}}else self.click_handle&&loader.parentNode&&loader.parentNode.removeChild(loader)},xhr},Scroller.prototype.appendInlineScript=function(e,t){var n=document.createElement("script"),i=document.createTextNode("//<![CDATA[ \n"+e+"\n//]]>");n.type="text/javascript",n.appendChild(i),document.getElementsByTagName(t)[0].appendChild(n)},Scroller.prototype.maybeLoadMejs=function(){null!==this.wpMediaelement&&("undefined"==typeof mejs?setTimeout(this.maybeLoadMejs.bind(this),250):(document.getElementsByTagName(this.wpMediaelement.element)[0].appendChild(this.wpMediaelement.tag),this.wpMediaelement=null,this.body.addEventListener("is.post-load",this.initializeMejs)))},Scroller.prototype.initializeMejs=function(e){if(e.detail&&e.detail.html&&(-1!==e.detail.html.indexOf("wp-audio-shortcode")||-1!==e.detail.html.indexOf("wp-video-shortcode"))&&"undefined"!=typeof mejs){var t,n={};"undefined"!=typeof _wpmejsSettings&&(n.pluginPath=_wpmejsSettings.pluginPath),n.success=function(e){var t=e.attributes.autoplay&&"false"!==e.attributes.autoplay;"flash"===e.pluginType&&t&&e.addEventListener("canplay",function(){e.play()},!1)},t=document.querySelectorAll(".wp-audio-shortcode, .wp-video-shortcode"),t=(t=Array.prototype.slice.call(t)).filter(function(e){for(;e.parentNode;){if(e.classList.contains("mejs-container"))return!1;e=e.parentNode}return!0});for(var i=0;i<t.length;i++)new MediaElementPlayer(t[i],n)}},Scroller.prototype.measure=function(e,t){t=t||[];for(var n,i,o,r=Array.prototype.slice.call(e.children),s=Number.MAX_VALUE,l=0;r.length>0;){for(n=r.shift(),o=0;o<t.length;o++)if(n.classList.contains(t[o])){r=r.concat(Array.prototype.slice.call(n.children));break}i=n.getBoundingClientRect(),s=Math.min(s,i.top),l=Math.max(l,i.bottom)}var a=Math.round(window.innerHeight/2),d=s<=a&&l>=a;return{top:s,bottom:l,height:l-s,factor:(Math.min(l,a)-Math.max(s,0))/a,isActive:d}},Scroller.prototype.ensureFilledViewport=function(){var e=this,t=e.window.innerHeight,n=e.measure(e.element,[e.wrapperClass]);e.body.removeEventListener("is.post-load",e.checkViewportOnLoadBound),0!==n.bottom&&n.bottom<t&&(e.ready=!0,e.refresh())},Scroller.prototype.checkViewportOnLoad=function(){this.ensureFilledViewport()};var previousFullScrenState=fullscreenState();Scroller.prototype.determineURL=function(){var e,t=this,n=-1,i=fullscreenState(),o=0;if(previousFullScrenState^i)previousFullScrenState=i;else{previousFullScrenState=i,e=document.querySelectorAll("."+t.wrapperClass);for(var r=0;r<e.length;r++){var s=t.measure(e[r]);if(s.isActive){n=parseInt(e[r].dataset.pageNum,10);break}s.factor>o&&(n=parseInt(e[r].dataset.pageNum,10),o=s.factor)}t.updateURL(n)}},Scroller.prototype.updateURL=function(e){if(window.history.pushState){var t=this,n=t.origURL;-1!==e&&(n=window.location.protocol+"//"+t.history.host+t.history.path.replace(/%d/,e)+t.history.parameters),window.location.href!==n&&history.pushState(null,null,n)}},Scroller.prototype.pause=function(){this.disabled=!0},Scroller.prototype.resume=function(){this.disabled=!1},Scroller.prototype.trigger=function(e,t,n){var i;(n=n||{}).jqueryEventName&&"undefined"!=typeof jQuery&&jQuery(e).trigger(n.jqueryEventName,n.data||null);try{i=new CustomEvent(t,{bubbles:!0,cancelable:!0,detail:n.data||null})}catch{(i=document.createEvent("CustomEvent")).initCustomEvent(t,!0,!0,n.data||null)}e.dispatchEvent(i)};var jetpackInfinityModule=function(){if("object"==typeof infiniteScroll&&(infiniteScroll.
1settings.body_class.split(" ").forEach(function(e){e&&document.body.classList.add(e)}),stats=infiniteScroll.settings.stats,type=infiniteScroll.settings.type,text=infiniteScroll.settings.text,totop=infiniteScroll.settings.totop,loading_text=infiniteScroll.settings.loading_text,infiniteScroll.scroller=new Scroller(infiniteScroll.settings),"click"===type)){var e=null;window.addEventListener("scroll",function(){e||(e=setTimeout(function(){infiniteScroll.scroller.determineURL(),e=null},250))})}};"interactive"===document.readyState||"complete"===document.readyState?jetpackInfinityModule():document.addEventListener("DOMContentLoaded",jetpackInfinityModule)})()})();;
2( function () {
3	'use strict';
4
5	var nextFrame;
6	var headerImage;
7	var brandingWrapper;
8
9	// Cool header image scroll
10	function handleScrollFrame() {
11		if ( document.documentElement.clientWidth > 800 ) {
12			var scrollY = window.scrollY || window.pageYOffset || 0;
13			headerImage.style.transform = 'translateY(' + scrollY / 3 + 'px)';
14
15			var headerHeightPx = getComputedStyle( headerImage ).height || '0';
16			var headerHeight = parseInt( headerHeightPx.replace( 'px', '' ), 10 );
17			var opacity = headerHeight ? 1 - scrollY / headerHeight : 1;
18			brandingWrapper.style.opacity = opacity > 0 ? opacity : 0;
19		} else {
20			headerImage.style.transform = 'translateY(0)';
21			brandingWrapper.style.opacity = 1;
22		}
23		nextFrame = null;
24	}
25
26	function onDocumentReady() {
27		headerImage = document.querySelector( '.site-header-image' );
28		brandingWrapper = document.querySelector( '.site-branding-wrapper' );
29
30		if ( headerImage && brandingWrapper ) {
31			window.addEventListener( 'scroll', function () {
32				// Schedule a new frame, if one hasn't been scheduled yet.
33				nextFrame = nextFrame || requestAnimationFrame( handleScrollFrame );
34			} );
35		}
36
37		// Smooth scroll to header
38		var toTheTop = document.querySelector( '.tothetop' );
39		if ( toTheTop ) {
40			toTheTop.addEventListener( 'click', function ( e ) {
41				e.preventDefault();
42				if (
43					window.CSS &&
44					window.CSS.supports &&
45					window.CSS.supports( 'scroll-behavior', 'smooth' )
46				) {
47					window.scroll( { top: 0, behavior: 'smooth' } );
48				} else {
49					window.scroll( 0, 0 );
50				}
51			} );
52		}
53	}
54
55	function onPageLoad() {
56		// Trigger resize event to make sure video widgets in the footer maintain the correct aspect ratio
57		setTimeout( function () {
58			if ( typeof Event === 'function' ) {
59				window.dispatchEvent( new Event( 'resize' ) );
60			} else {
61				var event = window.document.createEvent( 'UIEvents' );
62				event.initUIEvent( 'resize', true, false, window, 0 );
63				window.dispatchEvent( event );
64			}
65		} );
66	}
67
68	if ( document.readyState !== 'loading' ) {
69		onDocumentReady();
70	} else {
71		document.addEventListener( 'DOMContentLoaded', onDocumentReady );
72	}
73
74	if ( document.readyState === 'complete' ) {
75		onPageLoad();
76	} else {
77		window.addEventListener( 'load', onPageLoad );
78	}
79} )();
80;
81/**
82 * navigation.js
83 *
84 * Handles toggling the navigation menu and search menu for small screens.
85 */
86( function() {
87	var container, button, menu, links, i, len;
88
89	container = document.getElementById( 'site-navigation' );
90	if ( ! container ) {
91		return;
92	}
93
94	button = container.getElementsByTagName( 'button' )[0];
95	if ( 'undefined' === typeof button ) {
96		return;
97	}
98
99	menu = container.getElementsByTagName( 'ul' )[0];
100
101	// Hide menu toggle button if menu is empty and return early.
102	if ( 'undefined' === typeof menu ) {
103		button.style.display = 'none';
104		return;
105	}
106
107	menu.setAttribute( 'aria-expanded', 'false' );
108	if ( -1 === menu.className.indexOf( 'nav-menu' ) ) {
109		menu.className += ' nav-menu';
110	}
111
112	button.onclick = function() {
113		if ( -1 !== container.className.indexOf( 'toggled' ) ) {
114			container.className = container.className.replace( ' toggled', '' );
115			button.setAttribute( 'aria-expanded', 'false' );
116			menu.setAttribute( 'aria-expanded', 'false' );
117		} else {
118			container.className += ' toggled';
119			button.setAttribute( 'aria-expanded', 'true' );
120			menu.setAttribute( 'aria-expanded', 'true' );
121		}
122	};
123
124	// Get all the link elements within the menu.
125	links    = menu.getElementsByTagName( 'a' );
126
127	// Each time a menu link is focused or blurred, toggle focus.
128	for ( i = 0, len = links.length; i < len; i++ ) {
129		links[i].addEventListener( 'focus', toggleFocus, true );
130		links[i].addEventListener( 'blur', toggleFocus, true );
131	}
132
133	/**
134	 * Sets or removes .focus class on an element.
135	 */
136	function toggleFocus() {
137		var self = this;
138
139		// Move up through the ancestors of the current link until we hit .nav-menu.
140		while ( -1 === self.className.indexOf( 'nav-menu' ) ) {
141
142			// On li elements toggle the class .focus.
143			if ( 'li' === self.tagName.toLowerCase() ) {
144				if ( -1 !== self.className.indexOf( 'focus' ) ) {
145					self.className = self.className.replace( ' focus', '' );
146				} else {
147					self.className += ' focus';
148				}
149			}
150
151			self = self.parentElement;
152		}
153	}
154
155	/**
156	 * Toggles `focus` class to allow submenu access on tablets.
157	 */
158	( function( container ) {
159		var touchStartFn, i,
160			parentLink = container.querySelectorAll( '.menu-item-has-children > a, .page_item_has_children > a' );
161
162		if ( 'ontouchstart' in window ) {
163			touchStartFn = function( e ) {
164				var menuItem = this.parentNode, i;
165
166				if ( ! menuItem.classList.contains( 'focus' ) ) {
167					e.preventDefault();
168					for ( i = 0; i < menuItem.parentNode.children.length; ++i ) {
169						if ( menuItem === menuItem.parentNode.children[i] ) {
170							continue;
171						}
172						menuItem.parentNode.children[i].classList.remove( 'focus' );
173					}
174					menuItem.classList.add( 'focus' );
175				} else {
176					menuItem.classList.remove( 'focus' );
177				}
178			};
179
180			for ( i = 0; i < parentLink.length; ++i ) {
181				parentLink[i].addEventListener( 'touchstart', touchStartFn, false );
182			}
183		}
184	}( container ) );
185
186	//Search form
187	var searchcontainer, searchbutton, searchmenu;
188
189	searchcontainer = document.getElementById( 'header-search' );
190	if ( ! searchcontainer )
191		return;
192
193	searchbutton = document.getElementById( 'header-search-toggle' );
194	if ( 'undefined' === typeof searchbutton )
195		return;
196
197	searchbutton.onclick = function() {
198		if ( -1 !== searchcontainer.className.indexOf( 'toggled' ) ) {
199			searchcontainer.className = searchcontainer.className.replace( 'toggled', '' );
200		}
201		else {
202			searchcontainer.className += 'toggled';
203			container.className = container.className.replace( ' toggled', '' );
204		}
205	};
206
207} )();
208;
209( function() {
210	var is_webkit = navigator.userAgent.toLowerCase().indexOf( 'webkit' ) > -1,
211	    is_opera  = navigator.userAgent.toLowerCase().indexOf( 'opera' )  > -1,
212	    is_ie     = navigator.userAgent.toLowerCase().indexOf( 'msie' )   > -1;
213
214	if ( ( is_webkit || is_opera || is_ie ) && 'undefined' !== typeof( document.getElementById ) ) {
215		var eventMethod = ( window.addEventListener ) ? 'addEventListener' : 'attachEvent';
216		window[ eventMethod ]( 'hashchange', function() {
217			var element = document.getElementById( location.hash.substring( 1 ) );
218
219			if ( element ) {
220				if ( ! /^(?:a|select|input|button|textarea)$/i.test( element.tagName ) )
221					element.tabIndex = -1;
222
223				element.focus();
224			}
225		}, false );
226	}
227})();
228;

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.