Types of activities in Lyon
ment.createDocumentFragment(),t=4;for(let t=0;t<4;t++){const t=document.createElement("div");t.className="tsi-mobile-loading-skelly",e.appendChild(t)}a.appendChild(e)}function E(){if(!a)return;const e=undefined;a.querySelectorAll(".tsi-mobile-loading-skelly").forEach((e=>{e.remove()}))}const y=e=>{const t=undefined,n=undefined;return{allNodes:e.querySelectorAll(`.section-card-${o}`),currentVisibleNodes:e.querySelectorAll(".tsi-zection-zone-visible")}},b=()=>{if(!a)return;const{allNodes:e,currentVisibleNodes:t}=y(a);if(t.length>0){const i=Array.from(e).indexOf(t[0]);if(i<=0)return;const o=Array.from(e).slice(Math.max(i-n,0),i);t.forEach((e=>e.classList.remove("tsi-zection-zone-visible"))),o.forEach((e=>e.classList.add("tsi-zection-zone-visible"))),z(e,o)}},w=(e,t)=>{e.forEach((e=>{const n=e.firstElementChild;if(n){if(t)return n.classList.remove("tsi-zection-zone-loading-more"),void 0;n.classList.add("tsi-zection-zone-loading-more")}}))},A=async()=>{if(!a)return;const{allNodes:t,currentVisibleNodes:r}=y(a);if(r.length>0){const e=Array.from(t).indexOf(r[r.length-1]);if(e
e.classList.remove("tsi-zection-zone-visible"))),i.forEach((e=>e.classList.add("tsi-zection-zone-visible"))),z(t,i),void 0}}if("false"===i)return;const s=e;try{m?g():w(r,!1),p();const e=await fetch(decodeURIComponent(s));if(!e.ok)throw new Error("Network response was not ok");const t=await e.text(),n=undefined;a.querySelectorAll(".tsi-zection-zone-visible").forEach((e=>{e.classList.remove("tsi-zection-zone-visible")}));const i=document.createElement("div");i.innerHTML=t;const d=i.querySelectorAll(`#zone-zection-root-${o} > div`);d.forEach((e=>{e.classList.add("tsi-zection-zone-visible"),a.appendChild(e)})),m?E():w(r,!0),z(a.querySelectorAll(`.section-card-${o}`),d),u&&h.disconnect(),u?.parentNode?.removeChild(u),i.querySelectorAll("script").forEach((e=>{if(e.id){const t=document.getElementById(e.id);if(t){t.remove();const n=document.createElement("script");n.textContent=e.textContent,n.id=e.id,document.getElementById(`zone-zection-root-${o}`)?.appendChild(n)}}})),window.removeEventListener("resize",I)}catch(e){console.error("Fetch error:",e),L(),window.addEventListener("resize",I),x(),m?E():w(r,!0)}};function L(){d&&!d.dataset.listenerAdded&&(d.addEventListener("click",A),d.dataset.listenerAdded="true"),c&&!c.dataset.listenerAdded&&(c.addEventListener("click",b),c.dataset.listenerAdded="true")}function p(){d&&d.dataset.listenerAdded&&(d.removeEventListener("click",A),delete d.dataset.listenerAdded),c&&c.dataset.listenerAdded&&(c.removeEventListener("click",b),delete c.dataset.listenerAdded)}function x(){if(u){const e="true"===u.getAttribute("data-observing");m&&!e?(h.observe(u),u.setAttribute("data-observing","true")):!m&&e&&(h.disconnect(),u.removeAttribute("data-observing"))}}function I(){m=window.matchMedia("(max-width: 960px)").matches,x()}L(),x(),window.addEventListener("resize",I)})("/zone/section?dID=ckpmqq4fcfhay0b05cs74c8vj&locale=en&marketplace=gte-travelmarketplaces-com&mu=%2Ffrance%2Fbest-tours-and-tickets%2Factivities-in-lyon&pt=Tours&route=%2FgteTourSearch&sc=%7B%22sectionWhere%22%3A%7B%22pageType%22%3A%22Tours%22%2C%22pageVariation%22%3A%22InCityWithTypeAndTag%22%2C%22destination%22%3A%7B%22id%22%3A%22ckpmqq4fcfhay0b05cs74c8vj%22%7D%2C%22subType%22%3A%7B%22parentSubType%22%3A%7B%22subtype%22%3A%22ActivitiesSubtype%22%7D%7D%7D%2C%22where%22%3A%7B%22domain_in%22%3A%5B%22Tours%22%5D%2C%22sectionId%22%3A17%7D%2C%22itemsPerPage%22%3A24%7D&urlFront=https%3A%2F%2Fguidetoeurope.com&after=cltenang4hit007l6430q6vcb&hasNextPage=false§ionId=17-Tours&itemsPerPage=24");