From d16c4698c7e53f10f96ba749ad137b2f2369def0 Mon Sep 17 00:00:00 2001 From: Sergiotarxz Date: Sat, 2 Dec 2023 21:15:42 +0100 Subject: [PATCH] Adding demo details to allow fine grained search to the users. --- .../0000028-hamburgueseria-la-ermita.xml | 304 ++++++++++-------- js-src/index.js | 12 + public/css/styles.css | 2 + public/css/styles.scss | 5 + public/js/bundle.js | 2 +- 5 files changed, 183 insertions(+), 142 deletions(-) diff --git a/content/posts/0000028-hamburgueseria-la-ermita.xml b/content/posts/0000028-hamburgueseria-la-ermita.xml index 898c14a..d6a7800 100644 --- a/content/posts/0000028-hamburgueseria-la-ermita.xml +++ b/content/posts/0000028-hamburgueseria-la-ermita.xml @@ -23,174 +23,196 @@

Procedemos a listar la carta.

-

Entrantes.

+
+

Entrantes.

- + +
-

Pizzas.

+
+

Pizzas.

-

Todas las pizzas vienen con 2 ingredientes incluidos en el precio, por 0.60€ puedes añadir un ingrediente extra por 0.60€ o una salsa extra por 0.30€.

+

Todas las pizzas vienen con 2 ingredientes incluidos en el precio, por 0.60€ puedes añadir un ingrediente extra por 0.60€ o una salsa extra por 0.30€.

-

Tienes la posibilidad de pedir una pizza mediana nutella por 5.50€ desde Burguillos.info suponemos que no se permiten - otros ingredientes para evitar aberraciones gastronómicas.

+

Tienes la posibilidad de pedir una pizza mediana nutella por 5.50€ desde Burguillos.info suponemos que no se permiten + otros ingredientes para evitar aberraciones gastronómicas.

-

Tamaño de pizza.

+

Tamaño de pizza.

- + -

Ingredientes disponibles.

+

Ingredientes disponibles.

- + +
-

Bebidas.

+
+

Bebidas.

- + +
-

Helados.

+
+

Helados.

- + +
-

Bocadillos.

+
+

Bocadillos.

- + +
-

Montaditos.

+
+

Montaditos.

- + +
-

Perritos.

+
+

Perritos.

- + +
-

Carnes.

- - +
+

Carnes.

+ + +
-

Patatas gratinadas.

+
+

Patatas gratinadas.

-

En formato pequeño cuestan 4.00€ y en formato grande 6.00€, a elegir entre las siguientes combinaciones.

+

En formato pequeño cuestan 4.00€ y en formato grande 6.00€, a elegir entre las siguientes combinaciones.

- + +
-

Patatas normales.

+
+

Patatas normales.

- + +
-

Hamburguesas.

+
+

Hamburguesas.

-

Puedes solicitar un extra en salsa por 0.50€.

+

Puedes solicitar un extra en salsa por 0.50€.

- + +

¿Quieres ver tu negocio localizado en Burguillos en este espacio? Contacta con contact@owlcode.tech.

diff --git a/js-src/index.js b/js-src/index.js index cc1fb63..6ea9846 100644 --- a/js-src/index.js +++ b/js-src/index.js @@ -121,6 +121,11 @@ function addListenersSearch() { } const nextResult = searchInPage.querySelector('a.down'); const prevResult = searchInPage.querySelector('a.up'); + window.addEventListener("keydown", (e) => { + if (e.key.toLowerCase() === "f" && e.ctrlKey) { + openAllDetails() + } + }); if (nextResult !== null && prevResult !== null) { nextResult.addEventListener('click', () => { searchInWebsite(fakeSearchInput.value, true); @@ -149,6 +154,7 @@ function addListenersSearch() { function searchInWebsite(value, isToBottom) { window.find(value, false, !isToBottom, true) const selection = window.getSelection() + openAllDetails() if (selection.anchorNode === null) { const pageContents = document.querySelector('div.page-contents'); pageContents.focus() @@ -168,6 +174,12 @@ function searchInWebsite(value, isToBottom) { } } +function openAllDetails() { + for (const detail of document.querySelectorAll('details')) { + detail.open = true + } +} + function _getOffsetTopWithNParent(element, nParent, _carry = 0) { if (element === null) { return null; diff --git a/public/css/styles.css b/public/css/styles.css index e8e6de6..ec7da9a 100644 --- a/public/css/styles.css +++ b/public/css/styles.css @@ -9,6 +9,8 @@ body { min-height: 100%; width: 100%; height: 100%; } + body summary h2, body summary h3, body summary h4, body summary h5 { + display: inline; } body span.round-center { background: blueviolet; color: #FEFEFA; diff --git a/public/css/styles.scss b/public/css/styles.scss index 3f1afe1..08c62b9 100644 --- a/public/css/styles.scss +++ b/public/css/styles.scss @@ -17,6 +17,11 @@ html { } body { + summary { + h2, h3, h4, h5 { + display: inline; + } + } span.round-center { background: $background_div; color: $background_sidebar; diff --git a/public/js/bundle.js b/public/js/bundle.js index 61a5eaa..78d850a 100644 --- a/public/js/bundle.js +++ b/public/js/bundle.js @@ -16,7 +16,7 @@ /***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { "use strict"; -eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var tablesort__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! tablesort */ \"./node_modules/tablesort/src/tablesort.js\");\n/* harmony import */ var tablesort__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(tablesort__WEBPACK_IMPORTED_MODULE_0__);\n/* harmony import */ var _burguillosinfo_carousel_ad__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! @burguillosinfo/carousel-ad */ \"./js-src/carousel-ad.ts\");\n\n\n\n\nwindow.Tablesort = __webpack_require__(/*! tablesort */ \"./node_modules/tablesort/src/tablesort.js\");\n__webpack_require__(/*! tablesort/src/sorts/tablesort.number */ \"./node_modules/tablesort/src/sorts/tablesort.number.js\");\nlet fakeSearchInput;\nlet searchMobile;\ndocument.addEventListener(\"DOMContentLoaded\", function () {\n const menu_expand = document.querySelector('a.menu-expand');\n const mobile_foldable = document.querySelector('nav.mobile-foldable');\n const transparentFullscreenHide = document.querySelector('div.transparent-fullscreen-hide');\n const contentsWithoutMenu = document.querySelector('div.contents-without-menu');\n const tables = document.querySelectorAll('table');\n fillFarmaciaGuardia();\n new _burguillosinfo_carousel_ad__WEBPACK_IMPORTED_MODULE_1__[\"default\"]().run();\n addEasterEggAnimation();\n if (menu_expand !== null && mobile_foldable !== null && transparentFullscreenHide !== null && contentsWithoutMenu !== null) {\n mobile_foldable.toggleAttribute('aria-hidden');\n if (mobile_foldable.getAttribute('aria-hidden') !== null) {\n mobile_foldable.setAttribute('aria-hidden', true);\n }\n transparentFullscreenHide.addEventListener('click', () => {\n mobile_foldable.classList.remove('show');\n transparentFullscreenHide.classList.remove('show');\n menu_expand.classList.remove('active');\n contentsWithoutMenu.removeAttribute('aria-hidden');\n mobile_foldable.setAttribute('aria-hidden', true);\n });\n menu_expand.addEventListener('click', () => {\n menu_expand.classList.toggle('active');\n mobile_foldable.classList.toggle('show');\n transparentFullscreenHide.classList.toggle('show');\n contentsWithoutMenu.toggleAttribute('aria-hidden');\n if (contentsWithoutMenu.getAttribute('aria-hidden') !== null) {\n contentsWithoutMenu.setAttribute('aria-hidden', true);\n }\n mobile_foldable.toggleAttribute('aria-hidden');\n if (mobile_foldable.getAttribute('aria-hidden') !== null) {\n mobile_foldable.setAttribute('aria-hidden', true);\n }\n });\n }\n for (const table of tables) {\n const header = table.querySelector('tr');\n if (header !== null) {\n header.setAttribute('data-sort-method', 'none');\n for (const th of header.querySelectorAll('th')) {\n if (th.getAttribute('data-sort-method') == null) {\n th.setAttribute('data-sort-method', 'thead');\n }\n }\n }\n new (tablesort__WEBPACK_IMPORTED_MODULE_0___default())(table);\n }\n if (window !== undefined && window.Android !== undefined) {\n executeAndroidExclusiveCode(Android);\n }\n searchMobile = document.querySelector('nav.mobile-shortcuts div.search');\n if (searchMobile !== null) {\n fakeSearchInput = searchMobile.querySelector('input');\n addListenersSearch();\n }\n}, false);\nfunction fillFarmaciaGuardia() {\n const farmaciaName = document.querySelector('#farmacia-name');\n const farmaciaAddress = document.querySelector('#farmacia-address');\n if (farmaciaName !== null || farmaciaAddress !== null) {\n const port = _port();\n const url = new URL(window.location.protocol + \"//\" + window.location.hostname + port + '/farmacia-guardia.json');\n fetch(url).then(async res => {\n const farmacia = await res.json();\n if (farmaciaName !== null) {\n farmaciaName.innerText = farmacia.name;\n farmaciaAddress.innerText = farmacia.address;\n }\n });\n }\n}\nfunction addListenersSearch() {\n const searchInPage = document.querySelector('div.search-in-page');\n if (searchMobile !== null) {\n const searchIcon = searchMobile.querySelector('a.search-icon');\n searchIcon.addEventListener('click', e => {\n const searchOverlay = document.querySelector('div.search-overlay');\n const searchInput = searchOverlay.querySelector('div.search input');\n searchInput.value = fakeSearchInput.value;\n onSearchChange(e);\n onFakeSearchClick(e);\n return true;\n });\n fakeSearchInput.addEventListener('keyup', e => {\n if (searchInPage === null) {\n return;\n }\n if (fakeSearchInput.value === \"\") {\n searchInPage.classList.remove('active');\n } else {\n searchInPage.classList.add('active');\n }\n if (e.keyCode !== 13) {\n return false;\n }\n const searchOverlay = document.querySelector('div.search-overlay');\n const searchInput = searchOverlay.querySelector('div.search input');\n searchInput.value = fakeSearchInput.value;\n onSearchChange(e);\n onFakeSearchClick(e);\n return true;\n });\n }\n const nextResult = searchInPage.querySelector('a.down');\n const prevResult = searchInPage.querySelector('a.up');\n if (nextResult !== null && prevResult !== null) {\n nextResult.addEventListener('click', () => {\n searchInWebsite(fakeSearchInput.value, true);\n });\n prevResult.addEventListener('click', () => {\n searchInWebsite(fakeSearchInput.value, false);\n });\n }\n const exitSearch = document.querySelector('a.exit-search');\n const searchOverlay = document.querySelector('div.search-overlay');\n const searchInput = searchOverlay.querySelector('div.search input');\n fakeSearchInput.value = searchInput.value;\n exitSearch.addEventListener('click', onExitSearch);\n const search = document.querySelector('div.search-overlay div.search input');\n if (search !== null) {\n search.addEventListener('change', onSearchChange);\n }\n const searchIconDesktop = document.querySelector('nav.desktop a.search-icon');\n if (searchIconDesktop !== null) {\n searchIconDesktop.addEventListener('click', e => {\n onFakeSearchClick(e);\n });\n }\n}\nfunction searchInWebsite(value, isToBottom) {\n window.find(value, false, !isToBottom, true);\n const selection = window.getSelection();\n if (selection.anchorNode === null) {\n const pageContents = document.querySelector('div.page-contents');\n pageContents.focus();\n searchInWebsite(value, isToBottom);\n }\n const anchorNode = selection.anchorNode.parentNode;\n if (anchorNode.tagName !== null && anchorNode.tagName === \"INPUT\") {\n const pageContents = document.querySelector('div.page-contents');\n pageContents.focus();\n searchInWebsite(value, isToBottom);\n }\n if (anchorNode !== null) {\n const pageContents = document.querySelector('div.page-contents');\n const offsetTop = _getOffsetTopWithNParent(anchorNode, pageContents);\n pageContents.scroll(0, offsetTop - 150);\n }\n}\nfunction _getOffsetTopWithNParent(element, nParent, _carry = 0) {\n if (element === null) {\n return null;\n }\n if (element === nParent) {\n return _carry;\n }\n _carry += element.offsetTop;\n return _getOffsetTopWithNParent(element.offsetParent, nParent, _carry);\n}\nfunction _port() {\n let port = window.location.port;\n if (port !== '') {\n port = ':' + port;\n }\n return port;\n}\nfunction onSearchChange() {\n const search = document.querySelector('div.search-overlay div.search input');\n const searchResults = document.querySelector('div.search-overlay div.search-results');\n if (search === null || searchResults === null) {\n return;\n }\n const query = search.value;\n fakeSearchInput.value = search.value;\n const port = _port();\n const url = new URL(window.location.protocol + \"//\" + window.location.hostname + port + '/search.json');\n url.searchParams.set('q', query);\n fetch(url).then(async res => {\n const json = await res.json();\n if (!json.ok) {\n noResults(searchResults);\n return;\n }\n console.log(json.searchObjects.length);\n if (json.searchObjects.length < 1) {\n noResults(searchResults);\n return;\n }\n showResults(searchResults, json.searchObjects);\n });\n search.focus();\n}\nfunction showResults(searchResults, searchObjects) {\n searchResults.innerHTML = \"\";\n for (let searchObject of searchObjects) {\n const searchResultContainer = document.createElement('div');\n searchResultContainer.classList.add('search-result');\n const rowTitleUrlImageDiv = document.createElement('div');\n rowTitleUrlImageDiv.classList.add('row-title-url-image');\n const columnTitleUrl = document.createElement('div');\n columnTitleUrl.classList.add('column-title-url');\n const img = document.createElement('img');\n const title = document.createElement('b');\n const url = document.createElement('a');\n const content = document.createElement('p');\n title.innerText = searchObject.title;\n let port = window.location.port;\n if (port !== '') {\n port = ':' + port;\n }\n if (searchObject.url.match(/^\\//)) {\n searchObject.url = window.location.protocol + \"//\" + window.location.hostname + port + searchObject.url;\n }\n let urlImage = searchObject.urlImage;\n if (urlImage !== null && urlImage.match(/^\\//)) {\n urlImage = window.location.protocol + \"//\" + window.location.hostname + port + urlImage;\n }\n if (urlImage !== null) {\n img.alt = \"\";\n img.src = urlImage;\n }\n url.href = searchObject.url;\n url.innerText = searchObject.url;\n content.innerText = searchObject.content;\n if (urlImage !== null) {\n rowTitleUrlImageDiv.appendChild(img);\n }\n columnTitleUrl.appendChild(title);\n columnTitleUrl.appendChild(document.createElement('br'));\n columnTitleUrl.appendChild(url);\n rowTitleUrlImageDiv.appendChild(columnTitleUrl);\n searchResultContainer.appendChild(rowTitleUrlImageDiv);\n searchResultContainer.appendChild(content);\n searchResults.appendChild(searchResultContainer);\n }\n}\nfunction noResults(searchResults) {\n searchResults.innerHTML = \"\";\n const p = document.createElement('p');\n p.innerText = 'No se han encontrado resultados.';\n searchResults.appendChild(p);\n}\nfunction onExitSearch() {\n const searchOverlay = document.querySelector('div.search-overlay');\n if (searchOverlay !== null) {\n searchOverlay.classList.toggle('active');\n }\n}\nfunction onFakeSearchClick(e) {\n e.preventDefault();\n const searchOverlay = document.querySelector('div.search-overlay');\n if (searchOverlay === null) {\n return;\n }\n searchOverlay.classList.toggle('active');\n const search = searchOverlay.querySelector('div.search input');\n if (search !== null) {\n search.focus();\n }\n return false;\n}\nfunction absoluteToHost(imageUrl) {\n if (imageUrl.match(/^\\//)) {\n imageUrl = window.location.protocol + \"//\" + window.location.host + imageUrl;\n }\n return imageUrl.replace(/\\?.*$/, '');\n}\nfunction addListenerOpenInBrowserButton(android) {\n const openInBrowserLink = document.querySelector('a.open-in-browser');\n if (openInBrowserLink === null) {\n return;\n }\n openInBrowserLink.addEventListener('click', () => {\n android.openInBrowser(window.location.href);\n });\n}\nfunction executeAndroidExclusiveCode(android) {\n document.querySelectorAll('*.android').forEach(element => {\n element.classList.remove('android');\n });\n document.querySelectorAll('*.no-android-app').forEach(element => {\n element.style.display = 'none';\n });\n addListenerOpenInBrowserButton(android);\n const pinToHomeUrl = document.querySelector('a.pin-to-home');\n if (pinToHomeUrl === null) {\n return;\n }\n pinToHomeUrl.addEventListener('click', () => {\n const url = new URL(window.location.href);\n const pathandQuery = url.pathname + url.search;\n const label = url.pathname.replace(/^.*\\//g, '').replace(/(?:^|-)\\w/g, function (character) {\n return character.toUpperCase();\n }).replace(/-/g, ' ') + ' - Burguillos.info';\n const firstImg = document.querySelector('div.description img');\n let iconUrl;\n if (firstImg !== null) {\n if (!firstImg.src.match(/\\.svg(?:\\?|$)/)) {\n iconUrl = absoluteToHost(firstImg.src);\n }\n }\n if (iconUrl === undefined) {\n const imagePreview = document.querySelector('meta[name=\"image\"]');\n iconUrl = absoluteToHost(imagePreview.content);\n }\n android.pinPage(pathandQuery, label, iconUrl);\n });\n}\nfunction addEasterEggAnimation() {\n const logoContainer = document.querySelector('div.burguillos-logo-container');\n if (logoContainer === null) {\n return;\n }\n logoContainer.addEventListener('click', () => {\n logoContainer.classList.toggle('active');\n });\n}\n\n//# sourceURL=webpack://BurguillosInfo/./js-src/index.js?"); +eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var tablesort__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! tablesort */ \"./node_modules/tablesort/src/tablesort.js\");\n/* harmony import */ var tablesort__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(tablesort__WEBPACK_IMPORTED_MODULE_0__);\n/* harmony import */ var _burguillosinfo_carousel_ad__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! @burguillosinfo/carousel-ad */ \"./js-src/carousel-ad.ts\");\n\n\n\n\nwindow.Tablesort = __webpack_require__(/*! tablesort */ \"./node_modules/tablesort/src/tablesort.js\");\n__webpack_require__(/*! tablesort/src/sorts/tablesort.number */ \"./node_modules/tablesort/src/sorts/tablesort.number.js\");\nlet fakeSearchInput;\nlet searchMobile;\ndocument.addEventListener(\"DOMContentLoaded\", function () {\n const menu_expand = document.querySelector('a.menu-expand');\n const mobile_foldable = document.querySelector('nav.mobile-foldable');\n const transparentFullscreenHide = document.querySelector('div.transparent-fullscreen-hide');\n const contentsWithoutMenu = document.querySelector('div.contents-without-menu');\n const tables = document.querySelectorAll('table');\n fillFarmaciaGuardia();\n new _burguillosinfo_carousel_ad__WEBPACK_IMPORTED_MODULE_1__[\"default\"]().run();\n addEasterEggAnimation();\n if (menu_expand !== null && mobile_foldable !== null && transparentFullscreenHide !== null && contentsWithoutMenu !== null) {\n mobile_foldable.toggleAttribute('aria-hidden');\n if (mobile_foldable.getAttribute('aria-hidden') !== null) {\n mobile_foldable.setAttribute('aria-hidden', true);\n }\n transparentFullscreenHide.addEventListener('click', () => {\n mobile_foldable.classList.remove('show');\n transparentFullscreenHide.classList.remove('show');\n menu_expand.classList.remove('active');\n contentsWithoutMenu.removeAttribute('aria-hidden');\n mobile_foldable.setAttribute('aria-hidden', true);\n });\n menu_expand.addEventListener('click', () => {\n menu_expand.classList.toggle('active');\n mobile_foldable.classList.toggle('show');\n transparentFullscreenHide.classList.toggle('show');\n contentsWithoutMenu.toggleAttribute('aria-hidden');\n if (contentsWithoutMenu.getAttribute('aria-hidden') !== null) {\n contentsWithoutMenu.setAttribute('aria-hidden', true);\n }\n mobile_foldable.toggleAttribute('aria-hidden');\n if (mobile_foldable.getAttribute('aria-hidden') !== null) {\n mobile_foldable.setAttribute('aria-hidden', true);\n }\n });\n }\n for (const table of tables) {\n const header = table.querySelector('tr');\n if (header !== null) {\n header.setAttribute('data-sort-method', 'none');\n for (const th of header.querySelectorAll('th')) {\n if (th.getAttribute('data-sort-method') == null) {\n th.setAttribute('data-sort-method', 'thead');\n }\n }\n }\n new (tablesort__WEBPACK_IMPORTED_MODULE_0___default())(table);\n }\n if (window !== undefined && window.Android !== undefined) {\n executeAndroidExclusiveCode(Android);\n }\n searchMobile = document.querySelector('nav.mobile-shortcuts div.search');\n if (searchMobile !== null) {\n fakeSearchInput = searchMobile.querySelector('input');\n addListenersSearch();\n }\n}, false);\nfunction fillFarmaciaGuardia() {\n const farmaciaName = document.querySelector('#farmacia-name');\n const farmaciaAddress = document.querySelector('#farmacia-address');\n if (farmaciaName !== null || farmaciaAddress !== null) {\n const port = _port();\n const url = new URL(window.location.protocol + \"//\" + window.location.hostname + port + '/farmacia-guardia.json');\n fetch(url).then(async res => {\n const farmacia = await res.json();\n if (farmaciaName !== null) {\n farmaciaName.innerText = farmacia.name;\n farmaciaAddress.innerText = farmacia.address;\n }\n });\n }\n}\nfunction addListenersSearch() {\n const searchInPage = document.querySelector('div.search-in-page');\n if (searchMobile !== null) {\n const searchIcon = searchMobile.querySelector('a.search-icon');\n searchIcon.addEventListener('click', e => {\n const searchOverlay = document.querySelector('div.search-overlay');\n const searchInput = searchOverlay.querySelector('div.search input');\n searchInput.value = fakeSearchInput.value;\n onSearchChange(e);\n onFakeSearchClick(e);\n return true;\n });\n fakeSearchInput.addEventListener('keyup', e => {\n if (searchInPage === null) {\n return;\n }\n if (fakeSearchInput.value === \"\") {\n searchInPage.classList.remove('active');\n } else {\n searchInPage.classList.add('active');\n }\n if (e.keyCode !== 13) {\n return false;\n }\n const searchOverlay = document.querySelector('div.search-overlay');\n const searchInput = searchOverlay.querySelector('div.search input');\n searchInput.value = fakeSearchInput.value;\n onSearchChange(e);\n onFakeSearchClick(e);\n return true;\n });\n }\n const nextResult = searchInPage.querySelector('a.down');\n const prevResult = searchInPage.querySelector('a.up');\n window.addEventListener(\"keydown\", e => {\n if (e.key.toLowerCase() === \"f\" && e.ctrlKey) {\n openAllDetails();\n }\n });\n if (nextResult !== null && prevResult !== null) {\n nextResult.addEventListener('click', () => {\n searchInWebsite(fakeSearchInput.value, true);\n });\n prevResult.addEventListener('click', () => {\n searchInWebsite(fakeSearchInput.value, false);\n });\n }\n const exitSearch = document.querySelector('a.exit-search');\n const searchOverlay = document.querySelector('div.search-overlay');\n const searchInput = searchOverlay.querySelector('div.search input');\n fakeSearchInput.value = searchInput.value;\n exitSearch.addEventListener('click', onExitSearch);\n const search = document.querySelector('div.search-overlay div.search input');\n if (search !== null) {\n search.addEventListener('change', onSearchChange);\n }\n const searchIconDesktop = document.querySelector('nav.desktop a.search-icon');\n if (searchIconDesktop !== null) {\n searchIconDesktop.addEventListener('click', e => {\n onFakeSearchClick(e);\n });\n }\n}\nfunction searchInWebsite(value, isToBottom) {\n window.find(value, false, !isToBottom, true);\n const selection = window.getSelection();\n openAllDetails();\n if (selection.anchorNode === null) {\n const pageContents = document.querySelector('div.page-contents');\n pageContents.focus();\n searchInWebsite(value, isToBottom);\n }\n const anchorNode = selection.anchorNode.parentNode;\n if (anchorNode.tagName !== null && anchorNode.tagName === \"INPUT\") {\n const pageContents = document.querySelector('div.page-contents');\n pageContents.focus();\n searchInWebsite(value, isToBottom);\n }\n if (anchorNode !== null) {\n const pageContents = document.querySelector('div.page-contents');\n const offsetTop = _getOffsetTopWithNParent(anchorNode, pageContents);\n pageContents.scroll(0, offsetTop - 150);\n }\n}\nfunction openAllDetails() {\n for (const detail of document.querySelectorAll('details')) {\n detail.open = true;\n }\n}\nfunction _getOffsetTopWithNParent(element, nParent, _carry = 0) {\n if (element === null) {\n return null;\n }\n if (element === nParent) {\n return _carry;\n }\n _carry += element.offsetTop;\n return _getOffsetTopWithNParent(element.offsetParent, nParent, _carry);\n}\nfunction _port() {\n let port = window.location.port;\n if (port !== '') {\n port = ':' + port;\n }\n return port;\n}\nfunction onSearchChange() {\n const search = document.querySelector('div.search-overlay div.search input');\n const searchResults = document.querySelector('div.search-overlay div.search-results');\n if (search === null || searchResults === null) {\n return;\n }\n const query = search.value;\n fakeSearchInput.value = search.value;\n const port = _port();\n const url = new URL(window.location.protocol + \"//\" + window.location.hostname + port + '/search.json');\n url.searchParams.set('q', query);\n fetch(url).then(async res => {\n const json = await res.json();\n if (!json.ok) {\n noResults(searchResults);\n return;\n }\n console.log(json.searchObjects.length);\n if (json.searchObjects.length < 1) {\n noResults(searchResults);\n return;\n }\n showResults(searchResults, json.searchObjects);\n });\n search.focus();\n}\nfunction showResults(searchResults, searchObjects) {\n searchResults.innerHTML = \"\";\n for (let searchObject of searchObjects) {\n const searchResultContainer = document.createElement('div');\n searchResultContainer.classList.add('search-result');\n const rowTitleUrlImageDiv = document.createElement('div');\n rowTitleUrlImageDiv.classList.add('row-title-url-image');\n const columnTitleUrl = document.createElement('div');\n columnTitleUrl.classList.add('column-title-url');\n const img = document.createElement('img');\n const title = document.createElement('b');\n const url = document.createElement('a');\n const content = document.createElement('p');\n title.innerText = searchObject.title;\n let port = window.location.port;\n if (port !== '') {\n port = ':' + port;\n }\n if (searchObject.url.match(/^\\//)) {\n searchObject.url = window.location.protocol + \"//\" + window.location.hostname + port + searchObject.url;\n }\n let urlImage = searchObject.urlImage;\n if (urlImage !== null && urlImage.match(/^\\//)) {\n urlImage = window.location.protocol + \"//\" + window.location.hostname + port + urlImage;\n }\n if (urlImage !== null) {\n img.alt = \"\";\n img.src = urlImage;\n }\n url.href = searchObject.url;\n url.innerText = searchObject.url;\n content.innerText = searchObject.content;\n if (urlImage !== null) {\n rowTitleUrlImageDiv.appendChild(img);\n }\n columnTitleUrl.appendChild(title);\n columnTitleUrl.appendChild(document.createElement('br'));\n columnTitleUrl.appendChild(url);\n rowTitleUrlImageDiv.appendChild(columnTitleUrl);\n searchResultContainer.appendChild(rowTitleUrlImageDiv);\n searchResultContainer.appendChild(content);\n searchResults.appendChild(searchResultContainer);\n }\n}\nfunction noResults(searchResults) {\n searchResults.innerHTML = \"\";\n const p = document.createElement('p');\n p.innerText = 'No se han encontrado resultados.';\n searchResults.appendChild(p);\n}\nfunction onExitSearch() {\n const searchOverlay = document.querySelector('div.search-overlay');\n if (searchOverlay !== null) {\n searchOverlay.classList.toggle('active');\n }\n}\nfunction onFakeSearchClick(e) {\n e.preventDefault();\n const searchOverlay = document.querySelector('div.search-overlay');\n if (searchOverlay === null) {\n return;\n }\n searchOverlay.classList.toggle('active');\n const search = searchOverlay.querySelector('div.search input');\n if (search !== null) {\n search.focus();\n }\n return false;\n}\nfunction absoluteToHost(imageUrl) {\n if (imageUrl.match(/^\\//)) {\n imageUrl = window.location.protocol + \"//\" + window.location.host + imageUrl;\n }\n return imageUrl.replace(/\\?.*$/, '');\n}\nfunction addListenerOpenInBrowserButton(android) {\n const openInBrowserLink = document.querySelector('a.open-in-browser');\n if (openInBrowserLink === null) {\n return;\n }\n openInBrowserLink.addEventListener('click', () => {\n android.openInBrowser(window.location.href);\n });\n}\nfunction executeAndroidExclusiveCode(android) {\n document.querySelectorAll('*.android').forEach(element => {\n element.classList.remove('android');\n });\n document.querySelectorAll('*.no-android-app').forEach(element => {\n element.style.display = 'none';\n });\n addListenerOpenInBrowserButton(android);\n const pinToHomeUrl = document.querySelector('a.pin-to-home');\n if (pinToHomeUrl === null) {\n return;\n }\n pinToHomeUrl.addEventListener('click', () => {\n const url = new URL(window.location.href);\n const pathandQuery = url.pathname + url.search;\n const label = url.pathname.replace(/^.*\\//g, '').replace(/(?:^|-)\\w/g, function (character) {\n return character.toUpperCase();\n }).replace(/-/g, ' ') + ' - Burguillos.info';\n const firstImg = document.querySelector('div.description img');\n let iconUrl;\n if (firstImg !== null) {\n if (!firstImg.src.match(/\\.svg(?:\\?|$)/)) {\n iconUrl = absoluteToHost(firstImg.src);\n }\n }\n if (iconUrl === undefined) {\n const imagePreview = document.querySelector('meta[name=\"image\"]');\n iconUrl = absoluteToHost(imagePreview.content);\n }\n android.pinPage(pathandQuery, label, iconUrl);\n });\n}\nfunction addEasterEggAnimation() {\n const logoContainer = document.querySelector('div.burguillos-logo-container');\n if (logoContainer === null) {\n return;\n }\n logoContainer.addEventListener('click', () => {\n logoContainer.classList.toggle('active');\n });\n}\n\n//# sourceURL=webpack://BurguillosInfo/./js-src/index.js?"); /***/ }),