PageSourceSearch

https://www.ouroilyhouse.com/wp-content/themes/ouroilyhouse-2025/a…/global.js?ver=7.1.2-b-modified-1738700982

js ouroilyhouse.com collected 2026-09-26 06:32:47 UTC 7,100 bytes, 228 lines download raw bytes

1/*!
2 * Immediately Invoked Function Expression Boilerplate
3 * (c) 2019 Chris Ferdinandi, MIT License, https://gomakethings.com
4 */
5;(function () {
6
7    'use strict';
8
9    // Element variables
10    const menuToggle = document.querySelector('.menu-toggle');
11	const siteHeader = document.querySelector('.site-header');
12    const headerSearch = document.querySelector('.header-search');
13    const navMenu = document.querySelector('.nav-menu[role="navigation"]');
14    const searchToggles = document.querySelectorAll('.search-toggle');
15    const searchField = document.querySelector('.header-search .wp-block-search__input');
16
17    const elementExists = function(element) {
18    	if ( typeof(element) != 'undefined' && element != null ) {
19    		return true;
20    	}
21    	return false;
22    }
23
24    // Event functions
25    const toggleMenu = function(event) {
26    	if ( !event.target.closest('.menu-toggle') ) return;
27    	if ( elementExists(searchToggles) && searchToggles.length ) {
28    		for (let searchToggle of searchToggles) {
29    			searchToggle.classList.remove('active');
30    		}
31    	}
32    	if ( elementExists(headerSearch) ) {
33    		headerSearch.classList.remove('active');
34    	}
35    	if ( elementExists(navMenu) ) {
36			navMenu.classList.toggle('active');
37		}
38    	menuToggle.classList.toggle('active');
39		siteHeader.classList.toggle('menu-active');
40    }
41
42    const toggleSubMenu = function(event) {
43    	if ( !event.target.closest('.submenu-expand') ) return;
44    	event.target.closest('.submenu-expand').classList.toggle('expanded');
45		event.target.closest('.menu-item').classList.toggle('has-expanded-submenu');
46    	event.preventDefault();
47    }
48
49    const toggleSearch = function(event) {
50    	if ( !event.target.closest('.search-toggle') ) return;
51    	if ( elementExists(menuToggle) ) {
52			menuToggle.classList.remove('active');
53		}
54		if ( elementExists(navMenu) ) {
55			navMenu.classList.remove('active');
56			siteHeader.classList.remove('menu-active');
57		}
58		if ( cwp.search === 'slickstream' ) {
59			document.dispatchEvent(new CustomEvent('slick-show-discovery'));
60		} else {
61			if ( elementExists(headerSearch) ) {
62	    		for( let searchToggle of searchToggles ) {
63	    			searchToggle.classList.toggle('active');
64	    		}
65	    		headerSearch.classList.toggle('active');
66	    		if ( elementExists(searchField) ) {
67					searchField.focus();
68				}
69	    	}
70		}
71    }
72
73	const closeSearch = function(event) {
74		if ( event.target.closest('#grow-me-root') ) {
75			if ( elementExists(headerSearch) ) {
76				for( let searchToggle of searchToggles ) {
77					searchToggle.classList.remove('active');
78				}
79				headerSearch.classList.remove('active');
80			}
81		}
82	}
83
84    const toggleFave = function(event) {
85    	if ( !event.target.closest('.favorite-toggle') ) return;
86		if ( cwp.favorites === 'slickstream' ) {
87			document.dispatchEvent(new CustomEvent('slick-show-discovery', { detail: { page: 'favorites' } }));
88		}
89    }
90
91	// Yoast FAQ Toggle
92	const yoastFaqs = document.querySelectorAll('.schema-faq');
93	if ( yoastFaqs.length ) {
94		for( let [faqIndex, faq] of yoastFaqs.entries() ) {
95			faq.classList.add('schema-faq--has-toggle');
96			let questions = faq.querySelectorAll('.schema-faq-question');
97			if ( questions.length ) {
98				for( let [questionIndex, question] of questions.entries() ) {
99					let btn = document.createElement('button');
100					btn.setAttribute('aria-label', 'Display answer');
101					btn.classList.add('schema-faq-toggle');
102					question.append(btn);
103					question.style.cursor = 'pointer';
104
105					// Close all faqs by default.
106					question.closest('.schema-faq-section').querySelector('.schema-faq-answer').toggleAttribute('hidden');
107
108					// Open all faqs by default.
109					// question.closest('.schema-faq-section').classList.toggle('active');
110
111					// Open first faq question in each faq block.
112					// if ( questionIndex !== 0 ) {
113					// 	question.closest('.schema-faq-section').querySelector('.schema-faq-answer').toggleAttribute('hidden');
114					// } else {
115					// 	question.closest('.schema-faq-section').classList.toggle('active');
116					// }
117				}
118			}
119		}
120	}
121
122	const faqToggle = function(event) {
123		if( !event.target.closest('.schema-faq-question') ) return;
124		let parent = event.target.closest('.schema-faq-section');
125		parent.classList.toggle('active');
126		parent.querySelector('.schema-faq-answer').toggleAttribute('hidden');
127	}
128
129    // Add functions to click event listener
130    document.addEventListener('click', function(event) {
131    	toggleMenu(event);
132    	toggleSubMenu(event);
133    	toggleSearch(event);
134		closeSearch(event);
135    	toggleFave(event);
136		faqToggle(event);
137    });
138
139    // Grow JS
140    function initGrowMeSdk() {
141	  if (!window.growMe) {
142		  window.growMe = function (e) {
143		    window.growMe._.push(e);
144		  }
145		  window.growMe._ = [];
146		}
147	}
148
149	let isBookmarked = null;
150	initGrowMeSdk();
151	window.growMe(() => {
152		isBookmarked = window.growMe.getIsBookmarked();
153	  	window.growMe.on("isBookmarkedChanged", (params) => {
154	    isBookmarked = params.isBookmarked;
155	    if ( isBookmarked ) {
156	    	document.querySelector('.post-header__favorite').classList.add('active');
157	    }
158	  });
159	});
160
161	async function callAddBookmark() {
162	  try {
163	    await window.growMe.addBookmark({
164	      source: "create",
165	      tooltipReferenceElement: document.querySelector(".post-header__favorite")
166	    });
167	  } catch (e) {
168	    // Handle Error
169	  }
170	}
171
172	document.addEventListener( 'click', function(event) {
173		if ( !event.target.closest('.post-header__favorite') ) return;
174		if ( ! window.growMe.getIsBookmarked() ) {
175			callAddBookmark();
176		}
177	});
178
179	// Slickstream JS
180	const sr = document.querySelectorAll('.post-header__favorite');
181
182	// This returns the Slickstream API object,
183	// waiting if necessary for loading to complete
184
185	async function ensureSlickstream() {
186	   if (window.slickstream) {
187	       return window.slickstream.v1;
188	   }
189	   return new Promise((resolve, reject) => {
190	      document.addEventListener('slickstream-ready', () => {
191	         resolve(window.slickstream.v1);
192	      });
193	   });
194	}
195
196	async function updateFavoriteButtonState() {
197	   const slickstream = await ensureSlickstream();
198	   const isFavorite = slickstream.favorites.getState();
199	   for( var i = 0, len = sr.length; i < len; i++ ) {
200		   if ( slickstream.favorites.getState() ) {
201			   sr[i].classList.add('active');
202		   } else {
203			   sr[i].classList.remove('active');
204		   }
205		}
206	}
207
208	for( var i = 0, len = sr.length; i < len; i++ ) {
209		sr[i].addEventListener( 'click', function(e) {
210			e.preventDefault();
211		});
212		sr[i].addEventListener('click', async() => {
213		   const slickstream = await ensureSlickstream();
214		   const state = slickstream.favorites.getState();
215		   slickstream.favorites.setState(!state);
216		});
217	}
218
219	// If the favorite state has changed this event will fire and
220	// this ensures your display of the state remains correct
221	document.addEventListener('slickstream-favorite-change', () => {
222	  updateFavoriteButtonState();
223	});
224	// After the page loads, this will ensure your display
225	// is updated as soon as the info is available
226	updateFavoriteButtonState();
227
228}
vendor: 5 bytes, line 228
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.