1function loadHyperBlogAssets(){["component-article-card.css","section-featured-blog.css"].forEach(function(file){if(!document.querySelector('link[href*="'+file+'"]')){var link=document.createElement("link");link.rel="stylesheet",link.href=window.Shopify?.assets?.[file]||`/cdn/shop/t/6/assets/${file}`,document.head.appendChild(link)}})}loadHyperBlogAssets(),document.addEventListener("DOMContentLoaded",function(){const container=document.getElementById("custom-substack-feed");if(!container)return;const feedUrl="https://api.rss2json.com/v1/api.json?rss_url=https://kirkbangstad.substack.com/feed",fallbackImage="https://placehold.co/600x600?text=Substack";fetch(feedUrl).then(res=>res.json()).then(data=>{if(!data.items||!data.items.length){container.innerHTML="<p>No posts available.</p>";return}const html=data.items.slice(0,3).map((post,idx)=>{const imageMatch=post.content.match(/<img[^>]+src="([^">]+)"/i),imageUrl=imageMatch?imageMatch[1]:fallbackImage,alt=post.title||"Substack post image";let excerpt=post.content.replace(/<[^>]+>/g,"").trim();excerpt.length>160&&(excerpt=excerpt.substring(0,excerpt.lastIndexOf(" ",157))+"...");const articleUrl=post.link;return` 2<div class="f-column"> 3 <div class="article-card article-card--standard"> 4 <div class="article-card__media blocks-radius"> 5 <a href="${articleUrl}" class="block media-wrapper hover-wrapper" target="_blank" rel="noopener" aria-label="${alt}"> 6 <motion-element class="block" data-motion="zoom-out-sm" style="--aspect-ratio: 1;"> 7 <img src="${imageUrl}" alt="${alt}" loading="lazy" class="motion-reduce hover-scale-up" style="object-fit: cover;"> 8 </motion-element> 9 </a> 10 </div> 11 <div class="article-card__content"> 12 <div class="article-card__content-inner"> 13 <h3 class="article-card__title h4"> 14 <a class="reversed-link" href="${articleUrl}" target="_blank" rel="noopener">${post.title}</a> 15 </h3> 16 <p class="article-card__excerpt text-limit-2-lines text-subtext">${excerpt}</p> 17 <a href="${articleUrl}" class="btn btn--primary article-card__button" target="_blank" rel="noopener"> 18 <span class="btn__text">Read article</span> 19 </a> 20 </div> 21 </div> 22 </div> 23</div>`}).join("");container.innerHTML=` 24<div class="section section--padding featured-blog color-scheme-1"> 25 <div class="section__container page-width page-width--fixed"> 26 <div class="section-heading section-heading--horizontal flex justify-between items-center" style="margin-bottom: 2rem;"> 27 <h2 class="section-heading__heading h3">Resistance News</h2> 28 <a href="https://kirkbangstad.substack.com/" class="btn btn--primary" target="_blank" rel="noopener" aria-label="Read all"> 29 <span class="btn__text">Read all</span> 30 </a> 31 </div> 32 <div class="featured-blog__wrapper f-grid--gap-medium f-grid--row-gap-medium" style="--f-columns-mobile: 1; --f-columns-md: 2; --f-columns-xl: 3;"> 33 <div class="featured-blog__items f-grid"> 34 ${html} 35 </div> 36 </div> 37 </div> 38</div> 39 `}).catch(error=>{console.error("Error loading Substack feed:",error),container.innerHTML="<p>Could not load posts.</p>"})}); 40//# sourceMappingURL=/cdn/shop/t/12/assets/substack-feed.js.map?v=63758492276980803971786128435
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.