1(()=>{const config=()=>document.getElementById("ff-asset-config")?.dataset||{};let samplePromise,activeDialog,readerCount=0;function initTrails(scope=document){const roots=[...scope.querySelectorAll("[data-ff-explore]")];scope.matches?.("[data-ff-explore]")&&roots.unshift(scope),roots.forEach(root=>{if(root.dataset.ready)return;root.dataset.ready="true";const choices=[...root.querySelectorAll("[data-choice]")],articles=[...root.querySelectorAll("[data-trail-article]")],visited=new Set,reading=root.querySelector("[data-trail-reading]"),welcome=root.querySelector("[data-trail-welcome]");let filter="All",active=null;const filtered=()=>choices.filter(c=>filter==="All"||c.dataset.tags.split("|").includes(filter));function update(){const matching=filtered();choices.forEach(c=>{c.hidden=!matching.includes(c),c.classList.toggle("chosen",c.dataset.choice===active),c.dataset.choice===active?c.setAttribute("aria-current","true"):c.removeAttribute("aria-current"),c.querySelector("[data-trail-kicker]").textContent=visited.has(c.dataset.choice)?config().explored:config().follow}),articles.forEach(a=>{a.hidden=a.dataset.trailArticle!==active}),welcome.hidden=!!active,root.querySelector("[data-trail-filter]").value=filter,root.querySelectorAll("[data-filter]").forEach(b=>b.setAttribute("aria-pressed",String(b.dataset.filter===filter))),root.querySelector("[data-trail-status]").textContent=(config().status||"").replace("[count]",matching.length).replace("[visited]",visited.size)}function open(id){choices.some(c=>c.dataset.choice===id)&&(active=id,visited.add(id),update(),reading.focus({preventScroll:!0}),reading.scrollIntoView({block:"start",behavior:"instant"}))}function setFilter(value){filter=value,active=null,update()}root.querySelectorAll("[data-trail-controls],[data-trail-back]").forEach(e=>e.hidden=!1),root.addEventListener("change",e=>{e.target.matches("[data-trail-filter]")&&setFilter(e.target.value)}),root.addEventListener("click",e=>{const link=e.target.closest("[data-open-trail]");if(link){if(e.metaKey||e.ctrlKey||e.shiftKey||e.altKey)return;e.preventDefault(),link.dataset.related&&(filter="All"),open(link.dataset.openTrail)}const button=e.target.closest("[data-filter]");if(button&&(setFilter(button.dataset.filter),button.closest(".pick-tags")&&root.querySelector("[data-trail-choices]").scrollIntoView({block:"start"})),e.target.closest("[data-trail-random]")){const matches=filtered(),unvisited=matches.filter(c=>!visited.has(c.dataset.choice)),pool=unvisited.length?unvisited:matches;pool.length&&open(pool[Math.floor(Math.random()*pool.length)].dataset.choice)}if(e.target.closest("[data-trail-back]")){e.preventDefault();const choice=choices.find(c=>c.dataset.choice===active);choice?.focus(),choice?.scrollIntoView({block:"start"})}}),update();const hashId=articles.find(a=>"#"+a.id===window.location.hash)?.dataset.trailArticle;hashId&&open(hashId)})}const element=(tag,cls,text)=>{const el=document.createElement(tag);return cls&&(el.className=cls),text!==void 0&&(el.textContent=text),el};document.addEventListener("click",async e=>{const audio=e.target.closest("[data-ff-load-audio]");if(audio){const frame=element("iframe");frame.title=config().audioTitle,frame.src="https://embed.acast.com/67f7953f765c14aaeb5b993b/68222eee182b2144af5bcd7a",frame.height="200",frame.setAttribute("allow","autoplay"),audio.closest(".player-placeholder").replaceWith(frame);return}const trigger=e.target.closest("[data-ff-sample]");if(!trigger)return;const cfg=config();trigger.disabled=!0;try{let mode2=function(text){poem.hidden=!text,spread.hidden=text,spreadBtn.setAttribute("aria-pressed",String(!text)),textBtn.setAttribute("aria-pressed",String(text))};var mode=mode2;samplePromise||=fetch(cfg.samplesUrl).then(r=>{if(!r.ok)throw new Error("sample unavailable");return r.json()}).catch(err=>{throw samplePromise=null,err});const sample=(await samplePromise)[Number(trigger.dataset.ffSample)];if(!sample)throw new Error("sample unavailable");activeDialog?.close();const wrapper=element("div","ff"),dialog=element("dialog","ff-reader"),close=element("button","text-link ff-reader-close",cfg.close),title=element("h2","",sample.title),subtitle=element("p","caption",sample.book+" \xB7 "+sample.pages),tools=element("div","reader-tools"),spreadBtn=element("button","",cfg.original),textBtn=element("button","",cfg.text),spread=element("a"),img=element("img"),poem=element("div","poem",sample.text),credit=element("p","caption",cfg.credit);
1title.id="ff-reader-title-"+ ++readerCount,dialog.setAttribute("aria-labelledby",title.id),close.type=spreadBtn.type=textBtn.type="button";const hasSpread=!!cfg[sample.slug];hasSpread&&(img.src=cfg[sample.slug],img.alt=sample.title,spread.href=img.src,spread.target="_blank",spread.rel="noopener",spread.append(img)),poem.hidden=hasSpread,spread.hidden=!hasSpread,tools.hidden=!hasSpread,spreadBtn.setAttribute("aria-pressed","true"),textBtn.setAttribute("aria-pressed","false"),spreadBtn.addEventListener("click",()=>mode2(!1)),textBtn.addEventListener("click",()=>mode2(!0)),close.addEventListener("click",()=>dialog.close()),dialog.addEventListener("close",()=>{wrapper.remove(),activeDialog===dialog&&(activeDialog=null),trigger.focus()}),tools.append(spreadBtn,textBtn),dialog.append(close,title,subtitle,tools,spread,poem,credit),wrapper.append(dialog),document.body.append(wrapper),activeDialog=dialog,dialog.showModal(),close.focus()}catch{const message=element("p","caption",cfg.loadError);message.setAttribute("role","alert"),trigger.parentNode.querySelector("[data-sample-error]")?.remove(),message.dataset.sampleError="true",trigger.parentNode.append(message)}finally{trigger.disabled=!1}}),document.addEventListener("shopify:section:load",e=>initTrails(e.target)),document.addEventListener("shopify:section:unload",()=>activeDialog?.close()),document.readyState==="loading"?document.addEventListener("DOMContentLoaded",()=>initTrails()):initTrails()})(); 2//# sourceMappingURL=/cdn/shop/t/8/assets/ff-interactions.js.map?v=76945112893772886151789582678
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.