1<!doctype html> 2<html class="no-js" lang="en"> 3<head> 4 5 <!-- Basic page needs ================================================== --> 6 <meta charset="utf-8"> 7 <meta http-equiv="X-UA-Compatible" content="IE=edge,chrome=1"> 8 9 10 <link rel="shortcut icon" href="//foodloops.net/cdn/shop/files/Color_Submark_1_32x32.svg?v=1681399667" type="image/png" /> 11 12 13 <!-- Title and description ================================================== --> 14 15<!-- Added by AVADA SEO Suite --> 16 17 18 19 20 21 22<meta name="twitter:image" content="http://foodloops.net/cdn/shop/collections/IMG_9276.jpg?v=1607697700"> 23 24 25 26 27<!-- /Added by AVADA SEO Suite --> 28<title> 29 Compostable Products – Food Loops 30 </title> 31 32 33 34 <!-- Helpers ================================================== --> 35 <!-- /snippets/social-meta-tags.liquid --> 36 37 38 39 40<meta property="og:site_name" content="Food Loops"> 41<meta property="og:url" content="https://foodloops.net/collections/compostable-products"> 42<meta property="og:title" content="Compostable Products"> 43<meta property="og:type" content="product.group"> 44<meta property="og:description" content="FoodLoops is closing the food loop by recycling food waste. We offer food waste recycling, selling compostable supplies, and zero-waste events in NWA. We reduce the amount of food that enters the landfill and produce an eco-friendly, sustainable compost fertilizer for local growers and residents."> 45 46<meta property="og:image" content="http://foodloops.net/cdn/shop/collections/IMG_9276_1200x1200.jpg?v=1607697700"> 47<meta property="og:image:secure_url" content="https://foodloops.net/cdn/shop/collections/IMG_9276_1200x1200.jpg?v=1607697700"> 48 49 50<meta name="twitter:card" content="summary_large_image"> 51<meta name="twitter:title" content="Compostable Products"> 52<meta name="twitter:description" content="FoodLoops is closing the food loop by recycling food waste. We offer food waste recycling, selling compostable supplies, and zero-waste events in NWA. We reduce the amount of food that enters the landfill and produce an eco-friendly, sustainable compost fertilizer for local growers and residents."> 53 54 <link rel="canonical" href="https://foodloops.net/collections/compostable-products"> 55 <meta name="viewport" content="width=device-width,initial-scale=1,shrink-to-fit=no"> 56 <meta name="theme-color" content="#fd9000"> 57 58 <!-- CSS ================================================== --> 59 <link href="//foodloops.net/cdn/shop/t/23/assets/timber.scss.css?v=94658132072751693391759343713" rel="stylesheet" type="text/css" media="all" /> 60 <link href="//foodloops.net/cdn/shop/t/23/assets/theme.scss.css?v=110540671003843786211759343712" rel="stylesheet" type="text/css" media="all" /> 61 62 <!-- Sections ================================================== --> 63
63<script> 64 window.theme = window.theme || {}; 65 theme.strings = { 66 zoomClose: "Close (Esc)", 67 zoomPrev: "Previous (Left arrow key)", 68 zoomNext: "Next (Right arrow key)", 69 moneyFormat: "${{amount}}", 70 addressError: "Error looking up that address", 71 addressNoResults: "No results for that address", 72 addressQueryLimit: "You have exceeded the Google API usage limit. Consider upgrading to a \u003ca href=\"https:\/\/developers.google.com\/maps\/premium\/usage-limits\"\u003ePremium Plan\u003c\/a\u003e.", 73 authError: "There was a problem authenticating your Google Maps account.", 74 cartEmpty: "Your cart is currently empty.", 75 cartCookie: "Enable cookies to use the shopping cart", 76 cartSavings: "You're saving [savings]" 77 }; 78 theme.settings = { 79 cartType: "drawer", 80 gridType: "collage" 81 }; 82 </script>
82 83 84
84<script src="//foodloops.net/cdn/shop/t/23/assets/jquery-2.2.3.min.js?v=58211863146907186831746559339" type="text/javascript"></script>
84 85 86
86<script src="//foodloops.net/cdn/shop/t/23/assets/lazysizes.min.js?v=37531750901115495291746559339" async="async"></script>
86 87 88
88<script src="//foodloops.net/cdn/shop/t/23/assets/theme.js?v=30177182500043533121746564147" defer="defer"></script>
88 89 90 <!-- Header hook for plugins ================================================== --> 91
91<script type='text/javascript' src='https://foodloops.net/apps/wlm/js/wlm-1.1.js'></script>
91 92 93 94 95 96 97 98 99 100 101 102 103 104 105<style type="text/css">.wlm-message-pnf{text-align:center;}#wlm-pwd-form {padding: 30px 0;text-align: center}#wlm-wrapper,.wlm-form-holder {display: inline-block}#wlm-pwd-error {display: none;color: #fb8077;text-align: left}#wlm-pwd-error.wlm-error {border: 1px solid #fb8077}#wlm-pwd-form-button {display: inline-block!important;height: auto!important;padding: 8px 15px!important;background: #777;border-radius: 3px!important;color: #fff!important;text-decoration: none!important;vertical-align: top}.wlm-instantclick-fix,.wlm-item-selector {position: absolute;z-index: -999;display: none;height: 0;width: 0;font-size: 0;line-height: 0}</style> 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136
137<script type='text/javascript'> 138wlm.arrHideLinks.push('a[href$="/products/12oz-downtown-springdale-pla-cold-cup"],a[href*="/products/12oz-downtown-springdale-pla-cold-cup/"],a[href*="/products/12oz-downtown-springdale-pla-cold-cup?"],a[href*="/products/12oz-downtown-springdale-pla-cold-cup#"],a[href$="/products/162oz-downtown-springdale-pla-cold-cup"],a[href*="/products/162oz-downtown-springdale-pla-cold-cup/"],a[href*="/products/162oz-downtown-springdale-pla-cold-cup?"],a[href*="/products/162oz-downtown-springdale-pla-cold-cup#"]'); 139</script>
139<style type='text/css' class='wlm-auto-hl-styles'>a[href$="/products/12oz-downtown-springdale-pla-cold-cup"],a[href*="/products/12oz-downtown-springdale-pla-cold-cup/"],a[href*="/products/12oz-downtown-springdale-pla-cold-cup?"],a[href*="/products/12oz-downtown-springdale-pla-cold-cup#"],a[href$="/products/162oz-downtown-springdale-pla-cold-cup"],a[href*="/products/162oz-downtown-springdale-pla-cold-cup/"],a[href*="/products/162oz-downtown-springdale-pla-cold-cup?"],a[href*="/products/162oz-downtown-springdale-pla-cold-cup#"]{ display: none !important; }</style> 140 141 142 143 144 145 146 147
148<script type='text/javascript'> 149wlm.arrHideLinks.push('a[href$="/products/12oz-fayetteville-ora-cold-cup-pla"],a[href*="/products/12oz-fayetteville-ora-cold-cup-pla/"],a[href*="/products/12oz-fayetteville-ora-cold-cup-pla?"],a[href*="/products/12oz-fayetteville-ora-cold-cup-pla#"],a[href$="/products/16oz-fayetteville-ora-cold-cup-pla"],a[href*="/products/16oz-fayetteville-ora-cold-cup-pla/"],a[href*="/products/16oz-fayetteville-ora-cold-cup-pla?"],a[href*="/products/16oz-fayetteville-ora-cold-cup-pla#"]'); 150</script>
150<style type='text/css' class='wlm-auto-hl-styles'>a[href$="/products/12oz-fayetteville-ora-cold-cup-pla"],a[href*="/products/12oz-fayetteville-ora-cold-cup-pla/"],a[href*="/products/12oz-fayetteville-ora-cold-cup-pla?"],a[href*="/products/12oz-fayetteville-ora-cold-cup-pla#"],a[href$="/products/16oz-fayetteville-ora-cold-cup-pla"],a[href*="/products/16oz-fayetteville-ora-cold-cup-pla/"],a[href*="/products/16oz-fayetteville-ora-cold-cup-pla?"],a[href*="/products/16oz-fayetteville-ora-cold-cup-pla#"]{ display: none !important; }</style> 151 152 153 154 155 156 157 158
159<script type='text/javascript'> 160wlm.arrHideLinks.push('a[href$="/products/wholesale-test"],a[href*="/products/wholesale-test/"],a[href*="/products/wholesale-test?"],a[href*="/products/wholesale-test#"]'); 161</script>
161<style type='text/css' class='wlm-auto-hl-styles'>a[href$="/products/wholesale-test"],a[href*="/products/wholesale-test/"],a[href*="/products/wholesale-test?"],a[href*="/products/wholesale-test#"]{ display: none !important; }</style> 162 163 164 165 166 167 168 169
170<script type='text/javascript'> 171wlm.arrHideLinks.push('a[href$="/products/4-kraft-box-96-oz-fold-pak-bioplus-terra-ii-04bptraiim"],a[href*="/products/4-kraft-box-96-oz-fold-pak-bioplus-terra-ii-04bptraiim/"],a[href*="/products/4-kraft-box-96-oz-fold-pak-bioplus-terra-ii-04bptraiim?"],a[href*="/products/4-kraft-box-96-oz-fold-pak-bioplus-terra-ii-04bptraiim#"]'); 172</script>
172<style type='text/css' class='wlm-auto-hl-styles'>a[href$="/products/4-kraft-box-96-oz-fold-pak-bioplus-terra-ii-04bptraiim"],a[href*="/products/4-kraft-box-96-oz-fold-pak-bioplus-terra-ii-04bptraiim/"],a[href*="/products/4-kraft-box-96-oz-fold-pak-bioplus-terra-ii-04bptraiim?"],a[href*="/products/4-kraft-box-96-oz-fold-pak-bioplus-terra-ii-04bptraiim#"]{ display: none !important; }</style> 173 174 175 176 177 178 179
179<script type='text/javascript'> 180 181 wlm.navigateByLocation(); 182 183 wlm.jq(document).ready(function(){ 184 wlm.removeLinks(); 185 }); 186 </script>
186 187 188
189<script>window.performance && window.performance.mark && window.performance.mark('shopify.content_for_header.start');</script>
189<meta id="shopify-digital-wallet" name="shopify-digital-wallet" content="/1949335627/digital_wallets/dialog"> 190<link rel="ucp" href="/.well-known/ucp" version="2026-08-25"><link rel="alternate" type="application/atom+xml" title="Feed" href="/collections/compostable-products.atom" /> 191<link rel="alternate" type="application/json+oembed" href="https://foodloops.net/collections/compostable-products.oembed">
192<script async="async" src="/checkouts/internal/preloads.js?locale=en-US"></script>
192 193<link rel="preconnect" href="https://shop.app" crossorigin="anonymous">
194<script async="async" src="https://shop.app/checkouts/internal/preloads.js?locale=en-US&shop_id=1949335627" crossorigin="anonymous"></script>
vendor: 1 bytes, line 194
194
195<script id="shopify-features" type="application/json">{"accessToken":"4323a01a7b320b82d137dc02972f829c","betas":["rich-media-storefront-analytics"],"domain":"foodloops.net","predictiveSearch":true,"shopId":1949335627,"locale":"en"}</script>
vendor: 1 bytes, line 195
195
196<script>var Shopify = Shopify || {}; 197Shopify.shop = "food-loops.myshopify.com"; 198Shopify.locale = "en"; 199Shopify.currency = {"active":"USD","rate":"1.0"}; 200Shopify.country = "US"; 201Shopify.theme = {"name":"Brooklyn -- WPD|BOLD|May.06.2025","id":176843063593,"schema_name":"Brooklyn","schema_version":"12.0.2","theme_store_id":730,"role":"main"}; 202Shopify.theme.handle = "null"; 203Shopify.theme.style = {"id":null,"handle":null}; 204Shopify.cdnHost = "foodloops.net/cdn"; 205Shopify.routes = Shopify.routes || {}; 206Shopify.routes.root = "/"; 207Shopify.shopJsCdnBaseUrl = "https://cdn.shopify.com/shopifycloud/shop-js"; 208Shopify.SignInWithShop = Shopify.SignInWithShop || {}; 209Shopify.SignInWithShop.User = Shopify.SignInWithShop.User || {}; 210Shopify.SignInWithShop.User.recognized = false;</script>
vendor: 1 bytes, line 210
210
211<script type="module">!function(o){(o.Shopify=o.Shopify||{}).modules=!0}(window);</script>
vendor: 1 bytes, line 211
211
212<script>!function(o){function n(){var o=[];function n(){o.push(Array.prototype.slice.apply(arguments))}return n.q=o,n}var t=o.Shopify=o.Shopify||{};t.loadFeatures=n(),t.autoloadFeatures=n()}(window);</script>
vendor: 1 bytes, line 212
212
213<script> 214 window.ShopifyPay = window.ShopifyPay || {}; 215 window.ShopifyPay.apiHost = "shop.app\/pay"; 216 window.ShopifyPay.redirectState = null; 217</script>
vendor: 1 bytes, line 217
217
218<script> 219 window.Shopify = window.Shopify || {}; 220 window.Shopify.SignInWithShop = window.Shopify.SignInWithShop || {}; 221 window.Shopify.SignInWithShop.assetMetrics = { sampleRate: 0.25 }; 222 window.Shopify.SignInWithShop.eligible = true; 223</script>
vendor: 1 bytes, line 223
223
224<script id="shop-js-analytics" type="application/json">{"pageType":"collection"}</script>
vendor: 1 bytes, line 224
224
225<script defer="defer" async type="module" src="https://cdn.shopify.com/shopifycloud/shop-js/modules/v2/loader.init-shop-cart-sync.en.esm.js"></script>
vendor: 1 bytes, line 225
225
226<script type="module"> 227 await import("https://cdn.shopify.com/shopifycloud/shop-js/modules/v2/loader.init-shop-cart-sync.en.esm.js"); 228 229 window.Shopify.SignInWithShop?.initShopCartSync?.({"fedCMEnabled":true,"windoidEnabled":true}); 230 231</script>
vendor: 1 bytes, line 231
231
232<script> 233 window.Shopify = window.Shopify || {}; 234 if (!window.Shopify.featureAssets) window.Shopify.featureAssets = {}; 235 window.Shopify.featureAssets['shop-js'] = {"avatar":["modules/v2/loader.avatar.en.esm.js"],"checkout-modal":["modules/v2/loader.checkout-modal.en.esm.js"],"init-customer-accounts-sign-up":["modules/v2/loader.init-customer-accounts-sign-up.en.esm.js"],"init-customer-accounts":["modules/v2/loader.init-customer-accounts.en.esm.js"],"init-fed-cm":["modules/v2/loader.init-fed-cm.en.esm.js"],"init-shop-cart-sync":["modules/v2/loader.init-shop-cart-sync.en.esm.js"],"init-shop-email-lookup-coordinator":["modules/v2/loader.init-shop-email-lookup-coordinator.en.esm.js"],"init-shop-for-new-customer-accounts":["modules/v2/loader.init-shop-for-new-customer-accounts.en.esm.js"],"init-shop-user-recognition":["modules/v2/loader.init-shop-user-recognition.en.esm.js"],"init-windoid":["modules/v2/loader.init-windoid.en.esm.js"],"lead-capture":["modules/v2/loader.lead-capture.en.esm.js"],"listener":["modules/v2/loader.listener.en.esm.js"],"pay-button":["modules/v2/loader.pay-button.en.esm.js"],"payment-terms":["modules/v2/loader.payment-terms.en.esm.js"],"shop-button":["modules/v2/loader.shop-button.en.esm.js"],"shop-cart-sync":["modules/v2/loader.shop-cart-sync.en.esm.js"],"shop-cash-offers":["modules/v2/loader.shop-cash-offers.en.esm.js"],"shop-follow-button":["modules/v2/loader.shop-follow-button.en.esm.js"],"shop-login-button":["modules/v2/loader.shop-login-button.en.esm.js"],"shop-login":["modules/v2/loader.shop-login.en.esm.js"],"shop-toast-manager":["modules/v2/loader.shop-toast-manager.en.esm.js"],"shop-user-recognition":["modules/v2/loader.shop-user-recognition.en.esm.js"]}; 236</script>
vendor: 1 bytes, line 236
236
237<script>(function() { 238 var isLoaded = false; 239 function asyncLoad() { 240 if (isLoaded) return; 241 isLoaded = true; 242 var urls = ["https:\/\/seo.apps.avada.io\/avada-seo-installed.js?shop=food-loops.myshopify.com","https:\/\/cdn.shopify.com\/s\/files\/1\/0019\/4933\/5627\/t\/15\/assets\/globo.formbuilder.init.js?v=1629484787\u0026shop=food-loops.myshopify.com"]; 243 for (var i = 0; i < urls.length; i++) { 244 var s = document.createElement('script'); 245 s.type = 'text/javascript'; 246 s.async = true; 247 s.src = urls[i]; 248 var x = document.getElementsByTagName('script')[0]; 249 x.parentNode.insertBefore(s, x); 250 } 251 }; 252 if(window.attachEvent) { 253 window.attachEvent('onload', asyncLoad); 254 } else { 255 window.addEventListener('load', asyncLoad, false); 256 } 257})();</script>
vendor: 1 bytes, line 257
257
258<script id="__st">var __st={"a":1949335627,"offset":-18000,"reqid":"d1b8873e-f732-4679-87ea-c02cb723ec1b-1791435664","pageurl":"foodloops.net\/collections\/compostable-products","u":"b95fc3cbda5a","p":"collection","rtyp":"collection","rid":79214575691};</script>
vendor: 1 bytes, line 258
258
259<script>window.ShopifyPaypalV4VisibilityTracking = true;</script>
vendor: 1 bytes, line 259
259
260<script id="captcha-bootstrap">!function(){'use strict';const t='contact',e='account',n='new_comment',o=[[t,t],['blogs',n],['comments',n],[t,'customer']],c=[[e,'customer_login'],[e,'guest_login'],[e,'recover_customer_password'],[e,'create_customer']],r=t=>t.map((([t,e])=>`form[action*='/${t}']:not([data-nocaptcha='true']) input[name='form_type'][value='${e}']`)).join(','),a=t=>()=>t?[...document.querySelectorAll(t)].map((t=>t.form)):[];function s(){const t=[...o],e=r(t);return a(e)}const i='password',u='form_key',d=['recaptcha-v3-token','g-recaptcha-response','h-captcha-response',i],f=()=>{try{return window.sessionStorage}catch{return}},m='__shopify_v',_=t=>t.elements[u];function p(t,e,n=!1){try{const o=window.sessionStorage,c=JSON.parse(o.getItem(e)),{data:r}=function(t){const{data:e,action:n}=t;return t[m]||n?{data:e,action:n}:{data:t,action:n}}(c);for(const[e,n]of Object.entries(r))t.elements[e]&&(t.elements[e].value=n);n&&o.removeItem(e)}catch(o){console.error('form repopulation failed',{error:o})}}const l='form_type',E='cptcha';function T(t){t.dataset[E]=!0}const w=window,h=w.document,L='Shopify',v='ce_forms',y='captcha';let A=!1;((t,e)=>{const n=(g='f06e6c50-85a8-45c8-87d0-21a2b65856fe',I='https://cdn.shopify.com/shopifycloud/storefront-forms-hcaptcha/ce_storefront_forms_captcha_hcaptcha.v1.5.3.iife.js',D={infoText:'Protected by hCaptcha',privacyText:'Privacy',termsText:'Terms'},(t,e,n)=>{const o=w[L][v],c=o.bindForm;if(c)return c(t,g,e,D).then(n);var r;o.q.push([[t,g,e,D],n]),r=I,A||(h.body.append(Object.assign(h.createElement('script'),{id:'captcha-provider',async:!0,src:r})),A=!0)});var g,I,D;w[L]=w[L]||{},w[L][v]=w[L][v]||{},w[L][v].q=[],w[L][y]=w[L][y]||{},w[L][y].protect=function(t,e){n(t,void 0,e),T(t)},Object.freeze(w[L][y]),function(t,e,n,w,h,L){const[v,y,A,g]=function(t,e,n){const i=e?o:[],u=t?c:[],d=[...i,...u],f=r(d),m=r(i),_=r(d.filter((([t,e])=>n.includes(e))));return[a(f),a(m),a(_),s()]}(w,h,L),I=t=>{const e=t.target;return e instanceof HTMLFormElement?e:e&&e.form},D=t=>v().includes(t);t.addEventListener('submit',(t=>{const e=I(t);if(!e)return;const n=D(e)&&!e.dataset.hcaptchaBound&&!e.dataset.recaptchaBound,o=_(e),c=g().includes(e)&&(!o||!o.value);(n||c)&&t.preventDefault(),c&&!n&&(function(t){try{if(!f())return;!function(t){const e=f();if(!e)return;const n=_(t);if(!n)return;const o=n.value;o&&e.removeItem(o)}(t);const e=Array.from(Array(32),(()=>Math.random().toString(36)[2])).join('');!function(t,e){_(t)||t.append(Object.assign(document.createElement('input'),{type:'hidden',name:u})),t.elements[u].value=e}(t,e),function(t,e){const n=f();if(!n)return;const o=[...t.querySelectorAll(`input[type='${i}']`)].map((({name:t})=>t)),c=[...d,...o],r={};for(const[a,s]of new FormData(t).entries())c.includes(a)||(r[a]=s);n.setItem(e,JSON.stringify({[m]:1,action:t.action,data:r}))}(t,e)}catch(e){console.error('failed to persist form',e)}}(e),e.submit())}));const S=(t,e)=>{t&&!t.dataset[E]&&(n(t,e.some((e=>e===t))),T(t))};for(const o of['focusin','change'])t.addEventListener(o,(t=>{const e=I(t);D(e)&&S(e,y())}));const B=e.get('form_key'),M=e.get(l),P=B&&M;t.addEventListener('DOMContentLoaded',(()=>{const t=y();if(P)for(const e of t)e.elements[l].value===M&&p(e,B);[...new Set([...A(),...v().filter((t=>'true'===t.dataset.shopifyCaptcha))])].forEach((e=>S(e,t)))}))}(h,new URLSearchParams(w.location.search),n,t,e,['guest_login'])})(!0,!0)}();</script>
vendor: 1 bytes, line 260
260
261<script integrity="sha256-JjoPp5ZfB1sSAs5SQaol1x1GgvveM+BgmRzyDexInEQ=" data-source-attribution="shopify.loadfeatures" defer="defer" src="//foodloops.net/cdn/shopifycloud/storefront/assets/storefront/load_feature-1bd60354.js" crossorigin="anonymous"></script>
vendor: 1 bytes, line 261
261
262<script>(function () {var userAgent = navigator.userAgent;var platform = navigator.platform;var maxTouchPoints = navigator.maxTouchPoints || 0;var isIOS = /iPad|iPhone|iPod/.test(platform) || (platform === 'MacIntel' && maxTouchPoints > 1);var isMacSafari = platform.indexOf('Mac') === 0 && /Safari/.test(userAgent) && !/Chrome|Chromium|CriOS|FxiOS|Edg|OPR|Android/.test(userAgent);var isAppleSafari = isIOS || isMacSafari;if (isAppleSafari) {fetch('/sf_private_access_tokens' + location.search).catch(function () {});}function browserMajorVersion(pattern) {var match = userAgent.match(pattern);return match ? parseInt(match[1], 10) : null;}function shouldLoadAutosizesPolyfill() {if (!window.PerformanceObserver?.supportedEntryTypes?.includes('paint')) {return false;}var chromeVersion = browserMajorVersion(/Chrome\/(\d+)/);if (chromeVersion !== null) {return chromeVersion < 126;}var firefoxVersion = browserMajorVersion(/Firefox\/(\d+)/);if (firefoxVersion !== null) {return firefoxVersion < 150;}var safariVersion = isAppleSafari ? browserMajorVersion(/Version\/(\d+).*Safari\//) : null;if (safariVersion !== null) {return safariVersion < 27;}return true;}if (shouldLoadAutosizesPolyfill()) {var autosizesScript = document.createElement('script');autosizesScript.async = true;autosizesScript.crossOrigin = 'anonymous';autosizesScript.src = "//foodloops.net/cdn/shopifycloud/storefront/assets/storefront/autosizes-84416378.js";(document.head || document.documentElement).appendChild(autosizesScript);}window.ShopifyAnalytics = window.ShopifyAnalytics || {};window.ShopifyAnalytics.performance = window.ShopifyAnalytics.performance || {};(function () {var LONG_FRAME_THRESHOLD = 50;var longAnimationFrames = [];var activeRafId = null;function collectLongFrames() {var previousTime = null;function rafMonitor(now) {if (activeRafId === null) {return;}var delta = now - previousTime;if (delta > LONG_FRAME_THRESHOLD) {longAnimationFrames.push({startTime: previousTime,endTime: now,});}previousTime = now;activeRafId = requestAnimationFrame(rafMonitor);}previousTime = performance.now();activeRafId = requestAnimationFrame(rafMonitor);}if (!window.PerformanceObserver?.supportedEntryTypes?.includes('long-animation-frame')) {collectLongFrames();var timeoutId = setTimeout(function () {cancelAnimationFrame(activeRafId);}, 10000);window.ShopifyAnalytics.performance.getLongAnimationFrames = function (stopCollection) {if (stopCollection === undefined) {stopCollection = false;}if (stopCollection) {clearTimeout(timeoutId);cancelAnimationFrame(activeRafId);}return longAnimationFrames;};}})();})();</script>
262<script crossorigin="anonymous" defer="defer" src="//foodloops.net/cdn/shopifycloud/storefront/assets/shopify_pay/storefront-f0e26bdf.js?v=20250812"></script>
vendor: 1 bytes, line 262
262
263<script id="shopify-origin-trials" async="async" integrity="sha256-qJbe/jEZBHtr5W/BlA2cKAz3vkXu6vJQyLjgvgCC86g=" src="//cdn.shopify.com/shopifycloud/storefront/assets/storefront/origin_trials-318ab40a.js" crossorigin="anonymous" onload="window.__shopifyOriginTrialsDone = true" onerror="window.__shopifyOriginTrialsDone = true"></script>
vendor: 1 bytes, line 263
263
264<script> 265 window.Shopify = window.Shopify || {}; 266 window.Shopify.MCP = window.Shopify.MCP || {}; 267 window.Shopify.MCP.enabled = true; 268 window.Shopify.MCP.shop = "food-loops.myshopify.com"; 269 window.Shopify.MCP.mcpEndpoint = "https:\/\/foodloops.net\/api\/mcp"; 270 window.Shopify.MCP.tools = [{"name":"search_shop_policies_and_faqs","description":"Used to get facts about the stores policies, products, or services.\nSome examples of questions you can ask are:\n - What is your return policy?\n - What is your shipping policy?\n - What is your phone number?\n - What are your hours of operation?\"\nSet policy_types to also get the store's written policies (full text and URL).\n","inputSchema":{"$schema":"https:\/\/json-schema.org\/draft\/2020-12\/schema","type":"object","properties":{"query":{"type":"string","description":"A natural language query."},"context":{"type":"string","description":"Additional information about the request such as user demographics, mood, location, or other relevant details that could help in tailoring the response appropriately."},"policy_types":{"type":"array","items":{"type":"string","enum":["refund","shipping","privacy","terms_of_service","terms_of_sale","subscription","legal_notice","contact"]},"description":"Policy kinds to fetch, chosen from the user's question â e.g. [\"refund\"] for returns\/exchanges\/damaged items, [\"contact\"] for phone\/hours\/address. Include every kind the question touches. Omit it to get only FAQ answers."}},"required":["query"]}}]; 271</script>
vendor: 1 bytes, line 271
271
272<script>(()=>{var d="shopify:webmcp_adapter_loaded",n=Symbol.for("shopify.webmcp_adapter_loading");function s(c,a,{win:r=window,doc:o=document}={}){function p(){try{return r.localStorage.getItem(d)==="true"}catch{return!1}}function l(){try{r.localStorage.setItem(d,"true")}catch{}}function u(){return typeof(o.modelContext||r.navigator?.modelContext)?.registerTool=="function"}function f(){if(r[n]||!u())return;let t=o.head||o.getElementsByTagName("head")[0];if(!t)return;let e=o.createElement("script");e.type="module",e.crossOrigin="anonymous",a&&(e.integrity=a),e.src=c,e.addEventListener("load",l,{once:!0}),e.addEventListener("error",()=>{r[n]=!1},{once:!0}),t.appendChild(e),r[n]=!0}function _(t){let e=o.getElementById("shopify-origin-trials");if(!e||r.__shopifyOriginTrialsDone){t();return}e.addEventListener("load",t,{once:!0}),e.addEventListener("error",t,{once:!0})}function i(){_(()=>r.setTimeout(f,0))}function m(){o.addEventListener("DOMContentLoaded",i,{once:!0})}p()?i():m()}s("\/\/foodloops.net\/cdn\/shopifycloud\/storefront\/assets\/storefront\/webmcp-c6b62ece.js","sha256-ke4DDuBjdvea3vxLWxHc9E9nq8zihuG4IfYEGbb77ys=");})(); 273</script>
vendor: 1 bytes, line 273
273
274<script data-source-attribution="shopify.dynamic_checkout.dynamic.init">var Shopify=Shopify||{};Shopify.PaymentButton=Shopify.PaymentButton||{isStorefrontPortableWallets:!0,init:function(){window.Shopify.PaymentButton.init=function(){};var t=document.createElement("script");t.src="https://foodloops.net/cdn/shopifycloud/portable-wallets/latest/portable-wallets.en.js",t.type="module",document.head.appendChild(t)}}; 275</script>
vendor: 1 bytes, line 275
275
276<script data-source-attribution="shopify.dynamic_checkout.buyer_consent"> 277 function portableWalletsHideBuyerConsent(e){var t=document.getElementById("shopify-buyer-consent"),n=document.getElementById("shopify-subscription-policy-button");t&&n&&(t.classList.add("hidden"),t.setAttribute("aria-hidden","true"),n.removeEventListener("click",e))}function portableWalletsShowBuyerConsent(e){var t=document.getElementById("shopify-buyer-consent"),n=document.getElementById("shopify-subscription-policy-button");t&&n&&(t.classList.remove("hidden"),t.removeAttribute("aria-hidden"),n.addEventListener("click",e))}window.Shopify?.PaymentButton&&(window.Shopify.PaymentButton.hideBuyerConsent=portableWalletsHideBuyerConsent,window.Shopify.PaymentButton.showBuyerConsent=portableWalletsShowBuyerConsent); 278</script>
vendor: 1 bytes, line 278
278
279<script data-source-attribution="shopify.dynamic_checkout.cart.bootstrap">document.addEventListener("DOMContentLoaded",(function(){function t(){return document.querySelector("shopify-accelerated-checkout-cart, shopify-accelerated-checkout")}if(t())Shopify.PaymentButton.init();else{new MutationObserver((function(e,n){t()&&(Shopify.PaymentButton.init(),n.disconnect())})).observe(document.body,{childList:!0,subtree:!0})}})); 280</script>
280 281<link id="shopify-accelerated-checkout-styles" rel="stylesheet" media="screen" href="https://foodloops.net/cdn/shopifycloud/portable-wallets/latest/accelerated-checkout-backwards-compat.css" crossorigin="anonymous"> 282<style id="shopify-accelerated-checkout-cart"> 283 #shopify-buyer-consent { 284 margin-top: 1em; 285 display: inline-block; 286 width: 100%; 287} 288 289#shopify-buyer-consent.hidden { 290 display: none; 291} 292 293#shopify-subscription-policy-button { 294 background: none; 295 border: none; 296 padding: 0; 297 text-decoration: underline; 298 font-size: inherit; 299 cursor: pointer; 300} 301 302#shopify-subscription-policy-button::before { 303 box-shadow: none; 304} 305 306 </style> 307
308<script id="shopify-cfh-end">window.performance && window.performance.mark && window.performance.mark('shopify.content_for_header.end');</script>
vendor: 1 bytes, line 308
308
309<script src="//foodloops.net/cdn/shop/t/23/assets/ndnapps-customloginredirect-script.js?v=41659385624941387421746559339" type="text/javascript"></script>
309 310 311 312
312<script src="//foodloops.net/cdn/shop/t/23/assets/modernizr.min.js?v=21391054748206432451746559339" type="text/javascript"></script>
312 313 314 315 316 317 318 319
320<script src='https://appdevelopergroup.co/apps/findastore/js/stores.js?shop=food-loops.myshopify.com' type='text/javascript'></script>
320 321
322<script> 323 var Globo = Globo || {}; 324 var globoFormbuilderRecaptchaInit = function(){}; 325 Globo.FormBuilder = Globo.FormBuilder || {}; 326 Globo.FormBuilder.url = "https://form.globosoftware.net"; 327 Globo.FormBuilder.shop = { 328 settings : { 329 reCaptcha : { 330 siteKey : '' 331 }, 332 hideWaterMark : false, 333 encryptionFormId : false, 334 copyright: `Powered by G: <a href="https://apps.shopify.com/form-builder-contact-form" target="_blank">Form Builder</a>`, 335 scrollTop: true 336 }, 337 pricing:{ 338 features:{ 339 fileUpload : 2, 340 removeCopyright : false, 341 bulkOrderForm: false, 342 cartForm: false, 343 } 344 }, 345 configuration: { 346 money_format: "${{amount}}" 347 }, 348 encryption_form_id : false 349 }; 350 Globo.FormBuilder.forms = []; 351 352 353 Globo.FormBuilder.page = { 354 title : document.title, 355 href : window.location.href, 356 type: "collection" 357 }; 358 359 Globo.FormBuilder.assetFormUrls = []; 360 Globo.FormBuilder.assetFormUrls[56649] = "//foodloops.net/cdn/shop/t/23/assets/globo.formbuilder.data.56649.js?v=132778484552822898961746559339"; 361 362</script>
362 363 364<link rel="preload" href="//foodloops.net/cdn/shop/t/23/assets/globo.formbuilder.css?v=46488724916597153071746559339" as="style" onload="this.onload=null;this.rel='stylesheet'"> 365<noscript><link rel="stylesheet" href="//foodloops.net/cdn/shop/t/23/assets/globo.formbuilder.css?v=46488724916597153071746559339"></noscript> 366<link rel="stylesheet" href="//foodloops.net/cdn/shop/t/23/assets/globo.formbuilder.css?v=46488724916597153071746559339"> 367 368
369<script> 370 Globo.FormBuilder.__webpack_public_path__ = "//foodloops.net/cdn/shop/t/23/assets/" 371</script>
vendor: 1 bytes, line 371
371
372<script src="//foodloops.net/cdn/shop/t/23/assets/globo.formbuilder.index.js?v=99021968859982486151746559339" defer></script>
372 373 374<!-- GS-Inventory Start. Do not change --> 375
376<script class="gsinvdata"> 377 378 379 gsCollectionProducts = {}; 380 381 </script>
381 382
383<script async type="text/javascript" src="https://gravity-apps.com/showinventory/js/shopify/gsinventory5428.js?v=5dbd39f00821bad33ef8b3f0cf4f8923"></script>
383 384<!-- GS-Inventory End. Do not change --><!-- BEGIN app block: shopify://apps/boostpop-popups-banners/blocks/app-embed/8b4a8c56-21b5-437e-95f9-cd5dc65ceb49 --> 385 386
387<script> 388 // Create app element in main document for widget to render to 389 function createAppElement() { 390 var appDiv = document.createElement('div'); 391 appDiv.id = 'boost-pop-container'; 392 // ADP-370: a theme rule on body > div (transform, filter, contain, will-change, perspective, 393 // backdrop-filter) would make the host a containing block and break the widget's position:fixed; 394 // pin them off on the host. 395 appDiv.style = 'display: block !important; transform: none !important; filter: none !important; contain: none !important; will-change: auto !important; perspective: none !important; backdrop-filter: none !important'; 396 397 document.body.appendChild(appDiv); 398 } 399 400 // Load widget script and move to Shadow DOM after load 401 function loadWidgetScript() { 402 var script = document.createElement('script'); 403 404 script.src = 'https://cdn.shopify.com/extensions/01a10e16-324a-7195-9cb5-db0d097564ef/boost-pop-up-70/assets/ap.min.js'; 405 script.async = true; 406 407 document.head.appendChild(script); 408 } 409 410 function initializeApp() { 411 createAppElement(); 412 loadWidgetScript(); 413 } 414 415 // Execute immediately if DOM is already loaded, otherwise wait for DOMContentLoaded 416 if (document.readyState === 'loading') { 417 document.addEventListener('DOMContentLoaded', initializeApp); 418 } else { 419 initializeApp(); 420 } 421</script>
421 422
423<script src="https://cdn.shopify.com/extensions/01a10e16-324a-7195-9cb5-db0d097564ef/boost-pop-up-70/assets/polyfill.min.js" async></script>
vendor: 1 bytes, line 423
423
424<script src="https://cdn.shopify.com/extensions/01a10e16-324a-7195-9cb5-db0d097564ef/boost-pop-up-70/assets/maska.js" async></script>
424 425
426<script> 427 // Function to make IE9+ support forEach: 428 if (window.NodeList && !NodeList.prototype.forEach) { 429 NodeList.prototype.forEach = Array.prototype.forEach; 430 } 431</script>
431 432 433
434<script src="https://cdn.shopify.com/extensions/01a10e16-324a-7195-9cb5-db0d097564ef/boost-pop-up-70/assets/ab.min.js" defer="defer"></script>
434 435 436 437<!-- END app block --><!-- BEGIN app block: shopify://apps/bold-subscriptions/blocks/bsub-embed/9ceb49f0-5fe5-4b5e-943d-f8af8985167d -->
438<script id="bold-subscriptions-app-embed-script" type="text/javascript" defer> 439 440 441 if (window.location.href.includes('pages/manage-subscriptions')) { 442 const queryParams = new URLSearchParams(window.location.search); 443 if(queryParams.has('deep_link') && queryParams.get('deep_link') === 'upsell' && 444 queryParams.has('type') && queryParams.get('type') === 'upcoming-order-email' 445 ) { 446 window.location.href=`https://foodloops.net/customer_authentication/redirect?locale=en®ion_country=US?${queryParams.toString()}&from_msp=true`; 447 } 448 } else if (window.location.href.includes('https://foodloops.net/customer_authentication/redirect?locale=en®ion_country=US')) { 449 document.addEventListener('DOMContentLoaded', function() { 450 const queryParams = new URLSearchParams(window.location.search); 451 if(queryParams.has('from_msp')) { 452 queryParams.delete('from_msp'); 453 454 let form = document.querySelector("#customer_login"); 455 456 if(form) { 457 let input = document.createElement('input'); 458 input.type = 'hidden'; 459 input.name = 'return_to'; 460 input.value = `https://foodloops.net/pages/manage-subscriptions?${queryParams.toString()}`; 461 462 form.appendChild(input); 463 } 464 } 465 }); 466 } 467 468 469 470 window.BOLD = window.BOLD || {}; 471 window.BOLD.subscriptions = window.BOLD.subscriptions || {}; 472 window.BOLD.subscriptions.config = window.BOLD.subscriptions.config || {}; 473 window.BOLD.subscriptions.config.isAppEmbedEnabled = true; 474 window.BOLD.subscriptions.classes = window.BOLD.subscriptions.classes || {}; 475 window.BOLD.subscriptions.patches = window.BOLD.subscriptions.patches || {}; 476 window.BOLD.subscriptions.patches.maxCheckoutRetries = window.BOLD.subscriptions.patches.maxCheckoutRetries || 200; 477 window.BOLD.subscriptions.patches.currentCheckoutRetries = window.BOLD.subscriptions.patches.currentCheckoutRetries || 0; 478 window.BOLD.subscriptions.patches.maxCashierPatchAttempts = window.BOLD.subscriptions.patches.maxCashierPatchAttempts || 200; 479 window.BOLD.subscriptions.patches.currentCashierPatchAttempts = window.BOLD.subscriptions.patches.currentCashierPatchAttempts || 0; 480 window.BOLD.subscriptions.config.platform = 'shopify'; 481 window.BOLD.subscriptions.config.shopDomain = 'food-loops.myshopify.com'; 482 window.BOLD.subscriptions.config.customDomain = 'foodloops.net'; 483 window.BOLD.subscriptions.config.shopIdentifier = '1949335627'; 484 window.BOLD.subscriptions.config.cashierUrl = 'https://cashier.boldcommerce.com'; 485 window.BOLD.subscriptions.config.boldAPIBase = 'https://app-api.boldapps.net/'; 486 window.BOLD.subscriptions.config.cashierApplicationUUID = '2e6a2bbc-b12b-4255-abdf-a02af85c0d4e'; 487 window.BOLD.subscriptions.config.appUrl = 'https://sub.boldapps.net'; 488 window.BOLD.subscriptions.config.currencyCode = 'USD'; 489 window.BOLD.subscriptions.config.checkoutType = 'shopify'; 490 window.BOLD.subscriptions.config.currencyFormat = "$\u0026#123;\u0026#123;amount}}"; 491 window.BOLD.subscriptions.config.shopCurrencies = []; 492 window.BOLD.subscriptions.config.shopSettings = {"allow_msp_cancellation":true,"allow_msp_prepaid_renewal":true,"customer_can_pause_subscription":true,"customer_can_change_next_order_date":true,"customer_can_change_order_frequency":true,"customer_can_create_an_additional_order":false,"customer_can_use_passwordless_login":false,"customer_passwordless_login_redirect":false,"customer_can_add_products_to_existing_subscriptions":true,"customer_can_reactivate_subscription":true,"customer_can_reactivate_subscription_with_deleted_products":false,"show_currency_code":true,"stored_payment_method_policy":"required","customer_portal_path":"pages\/manage-subscriptions","display_only_subscription_products":false}; 493 window.BOLD.subscriptions.config.customerLoginPath = null; 494 window.BOLD.subscriptions.config.isPrepaidEnabled = window.BOLD.subscriptions.config.isPrepaidEnabled || true; 495 window.BOLD.subscriptions.config.loadSubscriptionGroupFrom = 'default'; 496 window.BOLD.subscriptions.config.loadSubscriptionGroupFromTypes = "default"; 497 window.BOLD.subscriptions.config.cashierPluginOnlyMode = window.BOLD.subscriptions.config.cashierPluginOnlyMode || false; 498 if (window.BOLD.subscriptions.config.waitForCheckoutLoader === undefined) { 499 window.BOLD.subscriptions.config.waitForCheckoutLoader = true; 500 } 501 502 window.BOLD.subscriptions.config.addToCartFormSelectors = window.BOLD.subscriptions.config.addToCartFormSelectors || []; 503 window.BOLD.subscriptions.config.addToCartButtonSelectors = window.BOLD.subscriptions.config.addToCartButtonSelectors || []; 504 window.BOLD.subscriptions.config.widgetInsertBeforeSelectors = window.BOLD.subscriptions.config.widgetInsertBeforeSelectors || []; 505 window.BOLD.subscriptions.config.quickAddToCartButtonSelectors = window.BOLD.subscriptions.config.quickAddToCartButtonSelectors || []; 506 window.BOLD.subscriptions.config.cartElementSelectors = window.BOLD.subscriptions.config.cartElementSelectors || []; 507 window.BOLD.subscriptions.config.cartTotalElementSelectors = window.BOLD.subscriptions.config.cartTotalElementSelectors || []; 508 window.BOLD.subscriptions.config.lineItemSelectors = window.BOLD.subscriptions.config.lineItemSelectors || []; 509 window.BOLD.subscriptions.config.lineItemNameSelectors = window.BOLD.subscriptions.config.lineItemNameSelectors || []; 510 window.BOLD.subscriptions.config.checkoutButtonSelectors = window.BOLD.subscriptions.config.checkoutButtonSelectors || []; 511 512 window.BOLD.subscriptions.config.featureFlags = window.BOLD.subscriptions.config.featureFlagOverrides || ["BE-2298-Support-Variant-Selections-In-Sub-Groups","BE-6925-remove-bold-error-code-from-error-message","BE-8664-default-address-source-bold","BE-9502-add-logs-to-investigate-infinite-loop","BE-6695-improve-subs-onboarding","BE-10096-list-deleted-variants","BE-10183-customer-portal-paginates-products","BE-10178-suppress-dup-inventory-failure-emails","BE-9073-reactivate-subscription-setting"]; 513 window.BOLD.subscriptions.config.subscriptionProcessingFrequency = '60'; 514 window.BOLD.subscriptions.config.requireMSPInitialLoadingMessage = true; 515 window.BOLD.subscriptions.data = window.BOLD.subscriptions.data || {}; 516 517 // Interval text markup template 518 window.BOLD.subscriptions.config.lineItemPropertyListSelectors = window.BOLD.subscriptions.config.lineItemPropertyListSelectors || []; 519 window.BOLD.subscriptions.config.lineItemPropertyListSelectors.push('dl.definitionList'); 520 window.BOLD.subscriptions.config.lineItemPropertyListTemplate = window.BOLD.subscriptions.config.lineItemPropertyListTemplate || '<dl class="definitionList"></dl>'; 521 window.BOLD.subscriptions.config.lineItemPropertyTemplate = window.BOLD.subscriptions.config.lineItemPropertyTemplate || '<dt class="definitionList-key">{{key}}:</dt><dd class="definitionList-value">{{value}}</dd>'; 522 523 // Discount text markup template 524 window.BOLD.subscriptions.config.discountItemTemplate = window.BOLD.subscriptions.config.discountItemTemplate || '<div class="bold-subscriptions-discount"><div class="bold-subscriptions-discount__details">{{details}}</div><div class="bold-subscriptions-discount__total">{{total}}</div></div>'; 525 526 527 // Constants in XMLHttpRequest are not reliable, so we will create our own 528 // reference: https://developer.mozilla.org/en-US/docs/Web/API/XMLHttpRequest/readyState 529 window.BOLD.subscriptions.config.XMLHttpRequest = { 530 UNSENT:0, // Client has been created. open() not called yet. 531 OPENED: 1, // open() has been called. 532 HEADERS_RECEIVED: 2, // send() has been called, and headers and status are available. 533 LOADING: 3, // Downloading; responseText holds partial data. 534 DONE: 4 // The operation is complete. 535 }; 536 537 window.BOLD.subscriptions.config.assetBaseUrl = 'https://sub.boldapps.net'; 538 if (window.localStorage && window.localStorage.getItem('boldSubscriptionsAssetBaseUrl')) { 539 window.BOLD.subscriptions.config.assetBaseUrl = window.localStorage.getItem('boldSubscriptionsAssetBaseUrl') 540 } 541 542 window.BOLD.subscriptions.data.subscriptionGroups = []; 543 if (localStorage && localStorage.getItem('boldSubscriptionsSubscriptionGroups')) { 544 window.BOLD.subscriptions.data.subscriptionGroups = JSON.parse(localStorage.getItem('boldSubscriptionsSubscriptionGroups')); 545 } else { 546 window.BOLD.subscriptions.data.subscriptionGroups = [{"id":44980,"billing_rules":[{"id":111379,"subscription_group_id":44980,"interval_name":"Monthly","billing_rule":"FREQ=MONTHLY","custom_billing_rule":""}],"is_subscription_only":false,"allow_prepaid":false,"allow_dynamic_discount":false,"is_prepaid_only":false,"should_continue_prepaid":true,"continue_prepaid_type":"as_prepaid","prepaid_durations":[{"id":44455,"subscription_group_id":44980,"total_duration":1,"discount_type":"percentage","discount_value":0}],"dynamic_discounts":[],"selection_options":[{"platform_entity_id":null},{"platform_entity_id":null},{"platform_entity_id":null},{"platform_entity_id":null},{"platform_entity_id":"4285056548939"}],"discount_type":"no_discount","percent_discount":0,"fixed_discount":0,"can_add_to_cart":true}]; 547 } 548 549 window.BOLD.subscriptions.isFeatureFlagEnabled = function (featureFlag) { 550 for (var i = 0; i < window.BOLD.subscriptions.config.featureFlags.length; i++) { 551 if (window.BOLD.subscriptions.config.featureFlags[i] === featureFlag){ 552 return true; 553 } 554 } 555 return false;
556 } 557 558 window.BOLD.subscriptions.logger = { 559 tag: "bold_subscriptions", 560 // the bold subscriptions log level 561 // 0 - errors (default) 562 // 1 - warnings + errors 563 // 2 - info + warnings + errors 564 // use window.localStorage.setItem('boldSubscriptionsLogLevel', x) to set the log level 565 levels: { 566 ERROR: 0, 567 WARN: 1, 568 INFO: 2, 569 }, 570 level: parseInt((window.localStorage && window.localStorage.getItem('boldSubscriptionsLogLevel')) || "0", 10), 571 _log: function(callArgs, level) { 572 if (!window.console) { 573 return null; 574 } 575 576 if (window.BOLD.subscriptions.logger.level < level) { 577 return; 578 } 579 580 var params = Array.prototype.slice.call(callArgs); 581 params.unshift(window.BOLD.subscriptions.logger.tag); 582 583 switch (level) { 584 case window.BOLD.subscriptions.logger.levels.INFO: 585 console.info.apply(null, params); 586 return; 587 case window.BOLD.subscriptions.logger.levels.WARN: 588 console.warn.apply(null, params); 589 return; 590 case window.BOLD.subscriptions.logger.levels.ERROR: 591 console.error.apply(null, params); 592 return; 593 default: 594 console.log.apply(null, params); 595 return; 596 } 597 }, 598 info: function() { 599 window.BOLD.subscriptions.logger._log(arguments, window.BOLD.subscriptions.logger.levels.INFO); 600 }, 601 warn: function() { 602 window.BOLD.subscriptions.logger._log(arguments, window.BOLD.subscriptions.logger.levels.WARN); 603 }, 604 error: function() { 605 window.BOLD.subscriptions.logger._log(arguments, window.BOLD.subscriptions.logger.levels.ERROR); 606 } 607 } 608 609 window.BOLD.subscriptions.shouldLoadSubscriptionGroupFromAPI = function() { 610 return window.BOLD.subscriptions.config.loadSubscriptionGroupFrom === window.BOLD.subscriptions.config.loadSubscriptionGroupFromTypes['BSUB_API']; 611 } 612 613 window.BOLD.subscriptions.getSubscriptionGroupFromProductId = function (productId) { 614 var data = window.BOLD.subscriptions.data; 615 var foundGroup = null; 616 for (var i = 0; i < data.subscriptionGroups.length; i += 1) { 617 var subscriptionGroup = data.subscriptionGroups[i]; 618 for (var j = 0; j < subscriptionGroup.selection_options.length; j += 1) { 619 var selectionOption = subscriptionGroup.selection_options[j]; 620 if (selectionOption.platform_entity_id === productId.toString()) { 621 foundGroup = subscriptionGroup; 622 break; 623 } 624 } 625 if (foundGroup) { 626 break; 627 } 628 } 629 return foundGroup; 630 }; 631 632 window.BOLD.subscriptions.getSubscriptionGroupById = function(subGroupId) { 633 var subscriptionGroups = window.BOLD.subscriptions.data.subscriptionGroups; 634 635 for (var i = 0; i < subscriptionGroups.length; i += 1) { 636 var subGroup = subscriptionGroups[i]; 637 if (subGroup.id === subGroupId) { 638 return subGroup; 639 } 640 } 641 642 return null; 643 }; 644 645 window.BOLD.subscriptions.addSubscriptionGroup = function (subscriptionGroup) { 646 if(!window.BOLD.subscriptions.getSubscriptionGroupById(subscriptionGroup.id)) 647 { 648 window.BOLD.subscriptions.data.subscriptionGroups.push(subscriptionGroup); 649 } 650 } 651 652 window.BOLD.subscriptions.getSubscriptionGroupPrepaidDurationById = function(subscriptionGroupId, prepaidDurationId) { 653 var subscriptionGroup = window.BOLD.subscriptions.getSubscriptionGroupById(subscriptionGroupId); 654 655 if ( 656 !subscriptionGroup 657 || !subscriptionGroup.prepaid_durations 658 || !subscriptionGroup.prepaid_durations.length 659 ) { 660 return null; 661 } 662 663 for (var i = 0; i < subscriptionGroup.prepaid_durations.length; i++) { 664 var prepaidDuration = subscriptionGroup.prepaid_durations[i]; 665 if (prepaidDuration.id === prepaidDurationId) { 666 return prepaidDuration; 667 } 668 } 669 670 return null; 671 } 672 673 window.BOLD.subscriptions.getSubscriptionGroupBillingRuleById = function(subGroup, billingRuleId) { 674 for (var i = 0; i < subGroup.billing_rules.length; i += 1) { 675 var billingRule = subGroup.billing_rules[i]; 676 if (billingRule.id === billingRuleId) { 677 return billingRule; 678 } 679 } 680 681 return null; 682 }; 683 684 window.BOLD.subscriptions.toggleDisabledAddToCartButtons = function(d) { 685 var addToCartForms = document.querySelectorAll(window.BOLD.subscriptions.config.addToCartFormSelectors.join(',')); 686 var disable = !!d; 687 for (var i = 0; i < addToCartForms.length; i++) { 688 var addToCartForm = addToCartForms[i]; 689 var productId = window.BOLD.subscriptions.getProductIdFromAddToCartForm(
689addToCartForm); 690 var subscriptionGroup = window.BOLD.subscriptions.getSubscriptionGroupFromProductId(productId); 691 692 if(window.BOLD.subscriptions.isFeatureFlagEnabled('BS2-4659_improve_large_group_selection') ) { 693 if (subscriptionGroup || window.BOLD.subscriptions.shouldLoadSubscriptionGroupFromAPI()) { 694 var addToCartButtons = addToCartForm.querySelectorAll(window.BOLD.subscriptions.config.addToCartButtonSelectors.join(',')); 695 for (var j = 0; j < addToCartButtons.length; j++) { 696 var addToCartButton = addToCartButtons[j]; 697 var toggleAction = disable ? addToCartButton.setAttribute : addToCartButton.removeAttribute; 698 699 addToCartButton.disabled = disable; 700 toggleAction.call(addToCartButton, 'data-disabled-by-subscriptions', disable); 701 } 702 } 703 } else { 704 if (subscriptionGroup) { 705 var addToCartButtons = addToCartForm.querySelectorAll(window.BOLD.subscriptions.config.addToCartButtonSelectors.join(',')); 706 for (var j = 0; j < addToCartButtons.length; j++) { 707 var addToCartButton = addToCartButtons[j]; 708 var toggleAction = disable ? addToCartButton.setAttribute : addToCartButton.removeAttribute; 709 710 addToCartButton.disabled = disable; 711 toggleAction.call(addToCartButton, 'data-disabled-by-subscriptions', disable); 712 } 713 } 714 } 715 716 } 717 }; 718 719 window.BOLD.subscriptions.disableAddToCartButtons = function () { 720 // only disable the add to cart buttons if the app isn't loaded yet 721 if (!window.BOLD.subscriptions.app) { 722 window.BOLD.subscriptions.toggleDisabledAddToCartButtons(true); 723 } else { 724 window.BOLD.subscriptions.enableAddToCartButtons(); 725 } 726 }; 727 728 window.BOLD.subscriptions.enableAddToCartButtons = function () { 729 document.removeEventListener('click', window.BOLD.subscriptions.preventSubscriptionAddToCart); 730 window.BOLD.subscriptions.toggleDisabledAddToCartButtons(false); 731 }; 732 733 window.BOLD.subscriptions.toggleDisabledCheckoutButtons = function(d) { 734 var checkoutButtons = document.querySelectorAll(window.BOLD.subscriptions.config.checkoutButtonSelectors.join(',')); 735 var disable = !!d; 736 for (var i = 0; i < checkoutButtons.length; i++) { 737 var checkoutButton = checkoutButtons[i]; 738 var toggleAction = disable ? checkoutButton.setAttribute : checkoutButton.removeAttribute; 739 740 checkoutButton.disabled = disable; 741 toggleAction.call(checkoutButton, 'data-disabled-by-subscriptions', disable); 742 } 743 } 744 745 window.BOLD.subscriptions.disableCheckoutButtons = function() { 746 // only disable the checkout buttons if the app isn't loaded yet 747 if (!window.BOLD.subscriptions.app) { 748 window.BOLD.subscriptions.toggleDisabledCheckoutButtons(true); 749 } else { 750 window.BOLD.subscriptions.enableCheckoutButtons(); 751 } 752 } 753 754 window.BOLD.subscriptions.enableCheckoutButtons = function() { 755 document.removeEventListener('click', window.BOLD.subscriptions.preventCheckout); 756 window.BOLD.subscriptions.toggleDisabledCheckoutButtons(false); 757 } 758 759 window.BOLD.subscriptions.hasSuccessfulAddToCarts = function() { 760 if (typeof(Storage) !== "undefined") { 761 var successfulAddToCarts = JSON.parse( 762 window.localStorage.getItem('boldSubscriptionsSuccessfulAddToCarts') || '[]' 763 ); 764 if (successfulAddToCarts.length > 0) { 765 return true; 766 } 767 } 768 769 return false; 770 } 771 772 window.BOLD.subscriptions.hasPendingAddToCarts = function() { 773 if (typeof(Storage) !== "undefined") { 774 var pendingAddToCarts = JSON.parse( 775 window.localStorage.getItem('boldSubscriptionsPendingAddToCarts') || '[]' 776 ); 777 if (pendingAddToCarts.length > 0) { 778 return true; 779 } 780 } 781 782 return false;
783 } 784 785 window.BOLD.subscriptions.addJSAsset = function(src, deferred) { 786 var scriptTag = document.getElementById('bold-subscriptions-app-embed-script'); 787 var jsElement = document.createElement('script'); 788 jsElement.type = 'text/javascript'; 789 jsElement.src = src; 790 if (deferred) { 791 jsElement.defer = true; 792 } 793 scriptTag.parentNode.insertBefore(jsElement, scriptTag); 794 }; 795 796 window.BOLD.subscriptions.addCSSAsset = function(href) { 797 var scriptTag = document.getElementById('bold-subscriptions-app-embed-script'); 798 var cssElement = document.createElement('link'); 799 cssElement.href = href; 800 cssElement.rel = 'stylesheet'; 801 scriptTag.parentNode.insertBefore(cssElement, scriptTag); 802 }; 803 804 window.BOLD.subscriptions.loadStorefrontAssets = function loadStorefrontAssets() { 805 var assets = window.BOLD.subscriptions.config.assets; 806 window.BOLD.subscriptions.addCSSAsset(window.BOLD.subscriptions.config.assetBaseUrl + '/static/' + assets['storefront.css']); 807 window.BOLD.subscriptions.addJSAsset(window.BOLD.subscriptions.config.assetBaseUrl + '/static/' + assets['storefront.js'], false); 808 }; 809 810 window.BOLD.subscriptions.loadCustomerPortalAssets = function loadCustomerPortalAssets() { 811 if (document.getElementById('customer-portal-root') || document.getElementsByClassName('bsub-express-add-ons-widget')) { 812 var assets = window.BOLD.subscriptions.config.assets; 813 window.BOLD.subscriptions.addCSSAsset(window.BOLD.subscriptions.config.assetBaseUrl + '/static/' + assets['customer_portal.css']); 814 window.BOLD.subscriptions.addJSAsset(window.BOLD.subscriptions.config.assetBaseUrl + '/static/' + assets['customer_portal.js'], true); 815 } 816 }; 817 818 window.BOLD.subscriptions.processManifest = function() { 819 if (!window.BOLD.subscriptions.processedManifest) { 820 window.BOLD.subscriptions.processedManifest = true; 821 window.BOLD.subscriptions.config.assets = JSON.parse(this.responseText); 822 823 824 window.BOLD.subscriptions.loadCustomerPortalAssets(); 825 } 826 }; 827 828 window.BOLD.subscriptions.addInitialLoadingMessage = function() { 829 var customerPortalNode = document.getElementById('customer-portal-root'); 830 if (customerPortalNode && window.BOLD.subscriptions.config.requireMSPInitialLoadingMessage) { 831 customerPortalNode.innerHTML = '<div class="bold-subscriptions-loader-container"><div class="bold-subscriptions-loader"></div></div>'; 832 } 833 } 834 835 window.BOLD.subscriptions.contentLoaded = function() { 836 window.BOLD.subscriptions.data.contentLoadedEventTriggered = true; 837 window.BOLD.subscriptions.addInitialLoadingMessage(); 838 839 }; 840 841 window.BOLD.subscriptions.preventSubscriptionAddToCart = function(e) { 842 if (e.target.matches(window.BOLD.subscriptions.config.addToCartButtonSelectors.join(',')) && e.target.form) { 843 var productId = window.BOLD.subscriptions.getProductIdFromAddToCartForm(e.target.form); 844 var subscriptionGroup = window.BOLD.subscriptions.getSubscriptionGroupFromProductId(productId); 845 if(window.BOLD.subscriptions.isFeatureFlagEnabled('BS2-4659_improve_large_group_selection')) 846 { 847 if (subscriptionGroup || window.BOLD.subscriptions.shouldLoadSubscriptionGroupFromAPI()) { 848 // This code prevents products in subscription groups from being added to the cart before the 849 // Subscriptions app fully loads. Once the subscriptions app loads it will re-enable the 850 // buttons. Use window.BOLD.subscriptions.enableAddToCartButtons enable them manually. 851 e.preventDefault(); 852 return false; 853 } 854 } else { 855 if (subscriptionGroup) { 856 // This code prevents products in subscription groups from being added to the cart before the 857 // Subscriptions app fully loads. Once the subscriptions app loads it will re-enable the 858 // buttons. Use window.BOLD.subscriptions.enableAddToCartButtons enable them manually. 859 e.preventDefault(); 860 return false;
861 } 862 } 863 864 } 865 }; 866 867 window.BOLD.subscriptions.preventCheckout = function(e) { 868 if ( 869 e.target.matches(window.BOLD.subscriptions.config.checkoutButtonSelectors.join(',')) 870 && (window.BOLD.subscriptions.hasSuccessfulAddToCarts() || window.BOLD.subscriptions.hasPendingAddToCarts()) 871 ) { 872 // This code prevents checkouts on the shop until the Subscriptions app fully loads. 873 // When the Subscriptions app is ready it will enable the checkout buttons itself. 874 // Use window.BOLD.subscriptions.enableCheckoutButtons to enable them manually. 875 e.preventDefault(); 876 return false; 877 } 878 } 879 880 if (!window.BOLD.subscriptions.config.legacyAssetsLoaded) { 881 882 document.addEventListener('DOMContentLoaded', window.BOLD.subscriptions.contentLoaded); 883 } 884 885 if (!Element.prototype.matches) { 886 Element.prototype.matches = 887 Element.prototype.matchesSelector || 888 Element.prototype.mozMatchesSelector || 889 Element.prototype.msMatchesSelector || 890 Element.prototype.oMatchesSelector || 891 Element.prototype.webkitMatchesSelector || 892 function(s) { 893 var matches = (this.document || this.ownerDocument).querySelectorAll(s), 894 i = matches.length; 895 while (--i >= 0 && matches.item(i) !== this) {} 896 return i > -1; 897 }; 898 } 899 900 if (!Element.prototype.closest) { 901 Element.prototype.closest = function(s) { 902 var el = this; 903 904 do { 905 if (Element.prototype.matches.call(el, s)) return el; 906 el = el.parentElement || el.parentNode; 907 } while (el !== null && el.nodeType === 1); 908 return null; 909 }; 910 } 911 912 window.BOLD.subscriptions.setVisibilityOfAdditionalCheckoutButtons = function (isVisible) { 913 if (window.BOLD.subscriptions.config.additionalCheckoutSelectors === undefined) { 914 return; 915 } 916 917 var selectors = window.BOLD.subscriptions.config.additionalCheckoutSelectors; 918 919 for (var i = 0; i < selectors.length; i++) { 920 var elements = document.querySelectorAll(selectors[i]); 921 922 for (var j = 0; j < elements.length; j++) { 923 elements[j].style.display = isVisible ? 'block' : 'none'; 924 } 925 } 926 } 927 928 window.BOLD.subscriptions.hideAdditionalCheckoutButtons = function() { 929 window.BOLD.subscriptions.setVisibilityOfAdditionalCheckoutButtons(false); 930 }; 931 932 window.BOLD.subscriptions.showAdditionalCheckoutButtons = function() { 933 window.BOLD.subscriptions.setVisibilityOfAdditionalCheckoutButtons(true); 934 }; 935 936 window.BOLD.subscriptions.enhanceMspUrls = function(data) { 937 var mspUrl = 'https://sub.boldapps.net/shop/20011/customer_portal'; 938 var elements = document.querySelectorAll("a[href='"+mspUrl+"']"); 939 940 if(!elements.length || !data.success) { 941 return; 942 } 943 944 for (var i = 0; i < elements.length; i++) { 945 elements[i].href = elements[i].href + "?jwt="+data.value.jwt+"&customerId="+data.value.customerId; 946 } 947 }; 948 949 if (!window.BOLD.subscriptions.config.legacyAssetsLoaded) { 950 window.addEventListener('load', function () { 951 if (document.getElementById('customer-portal-root')) { 952 window.BOLD.subscriptions.getJWT(window.BOLD.subscriptions.enhanceMspUrls); 953 } 954 }); 955 956 // This will be called immediately 957 // Use this anonymous function to avoid polluting the global namespace 958 (function() { 959 var xhr = new XMLHttpRequest(); 960 xhr.addEventListener('load', window.BOLD.subscriptions.processManifest); 961 xhr.open('GET', window.BOLD.subscriptions.config.assetBaseUrl + '/static/manifest.json?t=' + (new Date()).getTime()); 962 xhr.send(); 963 })() 964 } 965 966 window.BOLD.subscriptions.patches.patchCashier = function() { 967 if (window.BOLD && window.BOLD.checkout) { 968 window.BOLD.checkout.disable(); 969 window.BOLD.checkout.listenerFn = window.BOLD.subscriptions.patches.cashierListenerFn; 970 window.BOLD.checkout.enable(); 971 } else if (window.BOLD.subscriptions.patches.currentCashierPatchAttempts < window.BOLD.subscriptions.patches.maxCashierPatchAttempts) { 972 window.BOLD.subscriptions.patches.currentCashierPatchAttempts++; 973 setTimeout(window.BOLD.subscriptions.patches.patchCashier, 100); 974 } 975 }; 976 977 window.BOLD.subscriptions.patches.finishCheckout = function(event, form, cart) { 978 window.BOLD.subscriptions.patches.currentCheckoutRetries++; 979 980 if (!window.BOLD.subscriptions.app 981 && window.BOLD.subscriptions.patches.currentCheckoutRetries < window.BOLD.subscriptions.patches.maxCheckoutRetries 982 ) { 983 setTimeout(function () { window.BOLD.subscriptions.patches.finishCheckout(event, form, cart); }, 100); 984 return; 985 } else if (window.BOLD.subscriptions.app) { 986 window.BOLD.subscriptions.patches.currentCheckoutRetries = 0; 987 window.BOLD.subscriptions.app.addCartParams(form, cart); 988 } 989 990 var noSubscriptions = false;
991 if ((window.BOLD.subscriptions.app && window.BOLD.subscriptions.app.successfulAddToCarts.length === 0) 992 || !window.BOLD.subscriptions.app 993 ) { 994 noSubscriptions = true; 995 event.target.dataset.cashierConfirmedNoPlugins = true; 996 997 if (window.BOLD.subscriptions.setCashierFeatureToken) { 998 window.BOLD.subscriptions.setCashierFeatureToken(false); 999 } 1000 } 1001 1002 if ((noSubscriptions && window.BOLD.subscriptions.config.cashierPluginOnlyMode) 1003 || (typeof BOLD.checkout.isFeatureRequired === 'function' && !BOLD.checkout.isFeatureRequired()) 1004 ) { 1005 // send them to the original checkout when in plugin only mode 1006 // and either BSUB is there but there are no subscription products 1007 // or BSUB isn't there at all 1008 if (form.dataset.old_form_action) { 1009 form.action = form.dataset.old_form_action; 1010 } 1011 event.target.click(); 1012 } else { 1013 // sends them to Cashier since BSUB got a chance to add it's stuff 1014 // and plugin only mode is not enabled 1015 form.submit(); 1016 } 1017 }; 1018</script>
vendor: 1 bytes, line 1018
1018
1019<script id="bold-subscriptions-app-embed-platform-script" type="text/javascript" defer> 1020 window.BOLD.subscriptions.config.shopPlatformId = '1949335627'; 1021 window.BOLD.subscriptions.config.appSlug = 'subscriptions'; 1022 1023 window.BOLD = window.BOLD || {}; 1024 window.BOLD.subscriptions = window.BOLD.subscriptions || {}; 1025 window.BOLD.subscriptions.data = window.BOLD.subscriptions.data || {}; 1026 window.BOLD.subscriptions.data.platform = window.BOLD.subscriptions.data.platform || {}; 1027 window.BOLD.subscriptions.data.platform.customer = { id: '' }; 1028 window.BOLD.subscriptions.data.platform.product = null; 1029 window.BOLD.subscriptions.data.platform.products = []; 1030 window.BOLD.subscriptions.data.platform.variantProductMap = {}; 1031 1032 window.BOLD.subscriptions.getProductByVariantId = function(variantId) { 1033 if (window.BOLD.subscriptions.data.platform.product && 1034 window.BOLD.subscriptions.data.platform.product.variants) { 1035 for (var i = 0; i < window.BOLD.subscriptions.data.platform.product.variants.length; i++) { 1036 if (window.BOLD.subscriptions.data.platform.product.variants[i].id === variantId) { 1037 return window.BOLD.subscriptions.data.platform.product; 1038 } 1039 } 1040 } 1041 1042 if (window.BOLD.subscriptions.data.platform.variantProductMap[variantId]) { 1043 return window.BOLD.subscriptions.data.platform.variantProductMap[variantId]; 1044 } 1045 1046 var productElements = document.querySelectorAll('[data-product-id]'); 1047 for (var i = 0; i < productElements.length; i++) { 1048 var productJsonElement = productElements[i].querySelector('[data-product-json]'); 1049 1050 if (productJsonElement) { 1051 try { 1052 var productData = JSON.parse(productJsonElement.textContent); 1053 if (productData && productData.variants) { 1054 for (var j = 0; j < productData.variants.length; j++) { 1055 if (productData.variants[j].id === variantId) { 1056 return productData; 1057 } 1058 } 1059 } 1060 } catch (e) { 1061 // Continue if parsing fails 1062 } 1063 } 1064 } 1065 1066 return null; 1067 } 1068 1069 window.BOLD.subscriptions.config.addToCartFormSelectors.push( 1070 '.product-form.product-form-product-template:not(.bold-subscriptions-no-widget)' 1071 ,'.product-form.product-form--payment-button:not(.bold-subscriptions-no-widget)' 1072 ); 1073 window.BOLD.subscriptions.config.addToCartButtonSelectors.push('[type="submit"]'); 1074 window.BOLD.subscriptions.config.quickAddToCartButtonSelectors.push('a[data-event-type="product-click"]'); 1075 window.BOLD.subscriptions.config.widgetInsertBeforeSelectors.push('[type="submit"]'); 1076 window.BOLD.subscriptions.config.cartElementSelectors.push('form[action="/cart"]'); 1077 window.BOLD.subscriptions.config.cartTotalElementSelectors.push('[data-cart-subtotal]', '.text-right .ajaxcart__subtotal'); 1078 window.BOLD.subscriptions.config.checkoutButtonSelectors.push( 1079 '[name="checkout"]', 1080 '[href*="checkout"]:not([href*="tools/checkout"])', 1081 '[onclick*="checkout"]:not([onclick*="tools/checkout"])', 1082 ); 1083 1084 // Discount text markup template 1085 1086 window.BOLD.subscriptions.config.discountItemTemplate = '<div class="bold-subscriptions-discount"><div class="bold-subscriptions-discount__details">{{details}}</div><div class="bold-subscriptions-discount__total">{{total}}</div></div>'; 1087 1088 1089 window.BOLD.subscriptions.getProductIdFromAddToCartForm = function(addToCartForm) { 1090 var idInput = addToCartForm.querySelector('[name="id"]'); 1091 if (idInput === null) { 1092 window.BOLD.subscriptions.logger.error('could not get variant id input from add to cart form â make sure your form has an input with [name="id"]') 1093 return null; 1094 } 1095 1096 var variantId = parseInt(idInput.value, 10); 1097 if (isNaN(variantId)) { 1098 window.BOLD.subscriptions.logger.error('could not parse variant id from [name="id"] input') 1099 return null; 1100 } 1101 1102 var product = window.BOLD.subscriptions.getProductByVariantId(variantId); 1103 1104 if (product === undefined || product === null) { 1105 window.BOLD.subscriptions.logger.error('could not find product data for variant id ' + variantId + ' â product data may not be available on this page') 1106 return null; 1107 } 1108 1109 return product.id; 1110 }; 1111 1112 window.BOLD.subscriptions.getAddToCartForms = function() { 1113 var forms = [];
1114 var idInputs = document.querySelectorAll('[name="id"]'); 1115 1116 for (var i = 0; i < idInputs.length; i++) { 1117 var idInput = idInputs[i]; 1118 var form = idInput.closest('form:not(.bold-subscriptions-no-widget)'); 1119 if (form) { 1120 forms.push(form); 1121 } 1122 } 1123 1124 return forms; 1125 }; 1126 1127 window.BOLD.subscriptions.getJWT = function (callback) { 1128 if(window.BOLD.subscriptions.data.platform.customer.id !== '') { 1129 var shopPlatformId = '1949335627'; 1130 var appSlug = 'subscriptions'; 1131 var customerPlatformId = window.BOLD.subscriptions.data.platform.customer.id; 1132 var proxyPath = '/apps/app-proxy/customers/v1/shops/'+shopPlatformId+'/apps/'+appSlug+'/customers/pid/'+customerPlatformId+'/jwt'; 1133 1134 var xmlhttp = new XMLHttpRequest(); 1135 1136 xmlhttp.onreadystatechange = function() { 1137 if (xmlhttp.readyState === window.BOLD.subscriptions.config.XMLHttpRequest.DONE) { 1138 if (xmlhttp.status === 200) { 1139 var data = JSON.parse(xmlhttp.responseText); 1140 callback({ 1141 success: true, 1142 value: { 1143 jwt: data.bold_platform_jwt, 1144 customerId: window.BOLD.subscriptions.data.platform.customer.id, 1145 }, 1146 }); 1147 } else if (xmlhttp.status === 404) { 1148 callback({ 1149 success: false, 1150 error: 'not_logged_in', 1151 }); 1152 } else { 1153 callback({ 1154 success: false, 1155 error: 'unknown', 1156 }); 1157 } 1158 } 1159 }; 1160 1161 xmlhttp.open("GET", proxyPath, true); 1162 xmlhttp.setRequestHeader('Accept', 'application/liquid'); 1163 xmlhttp.send(); 1164 } else { 1165 callback({ 1166 success: false, 1167 error: 'not_logged_in', 1168 }); 1169 } 1170 }; 1171 1172 window.BOLD.subscriptions.setCashierFeatureToken = function(value) { 1173 if (window.BOLD.checkout_features_defaults && window.BOLD.subscriptions.config.cashierApplicationUUID) { 1174 window.BOLD.checkout_features_defaults.forEach(function(item) { 1175 if (item.id === window.BOLD.subscriptions.config.cashierApplicationUUID) { 1176 item.require = value; 1177 } 1178 }); 1179 } 1180 }; 1181 1182 // Cashier patches 1183 window.BOLD.subscriptions.patches.cashierListenerFn = function(event) { 1184 if (window.BOLD.checkout.isCheckoutButton(event.target) && window.BOLD.checkout.isEnabled()) { 1185 window.BOLD.subscriptions.patches.pushToCashier(event); 1186 } else if(window.BOLD.checkout.isCheckoutButton(event.target) && typeof window.cashier_installed_on_site === 'undefined') { 1187 var request = new XMLHttpRequest(); 1188 request.open('HEAD', '/apps/checkout/isInstalled', false); 1189 request.send(null); 1190 1191 if(request.status >= 200 && request.status < 400) { 1192 window.BOLD.subscriptions.patches.pushToCashier(event); 1193 } else { 1194 window.cashier_installed_on_site = false; 1195 } 1196 } 1197 }; 1198 1199 window.BOLD.subscriptions.localTime = function() { 1200 var localDate = new Date(); 1201 return localDate.getTime(); 1202 }; 1203 1204 1205 window.BOLD.subscriptions.patches.pushToCashier = function(event) { 1206 event.preventDefault(); 1207 var form = window.BOLD.checkout.getForm(event.target); 1208 var formData = new FormData(form); 1209 var request = new XMLHttpRequest(); 1210 request.open('POST', '/cart/update.js?tmp=' + Date.now(), true); 1211 request.setRequestHeader('Content-type', 'application/x-www-form-urlencoded'); 1212 1213 request.onload = function() { 1214 if (request.status >= 200 && request.status < 400) { 1215 // Success! 1216 var cart = JSON.parse(request.responseText); 1217 1218 // If items are empty redirect back to the cart 1219 if (cart.items.length === 0) { 1220 return window.location.href = '/cart'; 1221 } 1222
1223 cart.items.forEach(function(element) { 1224 delete element.product_description; 1225 }); 1226 1227 if (document.getElementById('CartSpecialInstructions')) { 1228 // If the cart note exists, grab its value 1229 cart.note = document.getElementById('CartSpecialInstructions').value; 1230 } 1231 1232 var cartObj = JSON.stringify(cart); 1233 1234 var form = window.BOLD.checkout.getForm(event.target); 1235 form.dataset.old_form_action = form.action; 1236 form.action = '/apps/checkout/begin-checkout' + googleAnalyticsGetParamString({}); 1237 var cartCookie = window.BOLD.checkout.getCookie('cart'); 1238 var element = document.createElement('INPUT'); 1239 element.type = 'HIDDEN'; 1240 element.name = 'cart_id'; 1241 element.value = cartCookie; 1242 form.appendChild(element); 1243 1244 var dateElement = document.createElement('INPUT'); 1245 dateElement.type = 'HIDDEN'; 1246 dateElement.name = 'checkout_local_time'; 1247 dateElement.value = window.BOLD.subscriptions.localTime(); 1248 form.appendChild(dateElement); 1249 1250 var cartElement = document.createElement('INPUT'); 1251 cartElement.type = 'HIDDEN'; 1252 cartElement.name = 'cart'; 1253 cartElement.value = cartObj; 1254 form.appendChild(cartElement); 1255 form.method = 'POST'; 1256 1257 if(window.BOLD && window.BOLD.checkout && typeof window.BOLD.checkout.languageIsoCode === 'string') { 1258 var langInput = document.createElement('INPUT'); 1259 langInput.type = 'HIDDEN'; 1260 langInput.name = 'language_iso'; 1261 langInput.value = window.BOLD.checkout.languageIsoCode; 1262 form.appendChild(langInput); 1263 } 1264 1265 if (window.BOLD && window.BOLD.common && typeof window.BOLD.common.eventEmitter === 'object' && typeof window.BOLDCURRENCY !== 'undefined') { 1266 window.BOLD.common.eventEmitter.emit('BOLD_CASHIER_checkout', {target: form}); 1267 } 1268 1269 window.BOLD.subscriptions.patches.finishCheckout(event, form, cart); 1270 } 1271 }; 1272 1273 request.send(formData); 1274 }; 1275 1276 1277</script>
1277 1278 1279 1280<!-- END app block --><link href="https://cdn.shopify.com/extensions/01a10e16-324a-7195-9cb5-db0d097564ef/boost-pop-up-70/assets/ab.min.css" rel="stylesheet" type="text/css" media="all"> 1281<link href="https://monorail-edge.shopifysvc.com" rel="dns-prefetch">
1282<script>(function(){if ("sendBeacon" in navigator && "performance" in window) {try {var session_token_from_headers = performance.getEntriesByType('navigation')[0].serverTiming.find(x => x.name == '_s').description;} catch {var session_token_from_headers = undefined;}var session_cookie_matches = document.cookie.match(/_shopify_s=([^;]*)/);var session_token_from_cookie = session_cookie_matches && session_cookie_matches.length === 2 ? session_cookie_matches[1] : "";var session_token = session_token_from_headers || session_token_from_cookie || "";function handle_abandonment_event(e) {var entries = performance.getEntries().filter(function(entry) {return /monorail-edge.shopifysvc.com/.test(entry.name);});if (!window.abandonment_tracked && entries.length === 0) {window.abandonment_tracked = true;var currentMs = Date.now();var navigation_start = performance.timing.navigationStart;var payload = {shop_id: 1949335627,url: window.location.href,navigation_start,duration: currentMs - navigation_start,session_token,page_type: "collection"};window.navigator.sendBeacon("https://monorail-edge.shopifysvc.com/v1/produce", JSON.stringify({schema_id: "online_store_buyer_site_abandonment/1.1",payload: payload,metadata: {event_created_at_ms: currentMs,event_sent_at_ms: currentMs}}));}}window.addEventListener('pagehide', handle_abandonment_event);}}());</script>
vendor: 1 bytes, line 1282
1282
1283<script> 1284 window.__TREKKIE_SHIM_QUEUE = window.__TREKKIE_SHIM_QUEUE || []; 1285</script>
vendor: 1 bytes, line 1285
1285
1286<script>(function(){var wpmLoader=function(){"use strict";var e=/Googlebot|Storebot-Google|bingbot|Baiduspider|YandexBot|DuckDuckBot|Slurp|facebookexternalhit|Twitterbot|LinkedInBot|Applebot|AdsBot-Google|Mediapartners-Google|APIs-Google|PetalBot|SemrushBot|AhrefsBot|MJ12bot|DotBot|Acunetix|PerplexityBot|Perplexity-User/i,t=/bytedance/i;function i(){try{var e=document.cookie;if(!e||"string"!=typeof e)return;for(var t=0,i=e.split(";");t<i.length;t++){var n=i[t],r=n.indexOf("=");if(-1!==r){var o=n.slice(0,r).trim();if(o){var a=void 0;try{a=decodeURIComponent(o)}catch(e){a=o}if("_shopify_s"===a){var d=n.slice(r+1).trim();try{return decodeURIComponent(d)}catch(e){return d}}}}}return}catch(e){return}}function n(e){try{"undefined"!=typeof console&&"function"==typeof console.warn&&console.warn(e)}catch(e){}}function r(e,t){return"string"==typeof e&&e.length>0&&e.length<=t?e:void 0}function o(e){var t;switch(null==(t=null==e?void 0:e.navigation)?void 0:t.type){case 0:return"navigate";case 1:return"reload";case 2:return"back_forward";default:return}}function a(){var e,t,i;try{var n=null==(i=null==(t=null==(e=self.ShopifyAnalytics)?void 0:e.lib)?void 0:t.trekkie)?void 0:i.state;return"awaiting-consent"===n||"initialized"===n?n:void 0}catch(e){return}}return function(d,s,u,l){var c=arguments.length>4&&void 0!==arguments[4]?arguments[4]:{};try{var p=c.trekkieShim;!0!==p&&"true"!==p||null!=window.__TREKKIE_SHIM_QUEUE||(window.__TREKKIE_SHIM_QUEUE=[])}catch(e){}var f,v,h,y,g=(v=(f={modern:/Edge?\/(1{2}[4-9]|1[2-9]\d|[2-9]\d{2}|\d{4,})\.\d+(\.\d+|)|Firefox\/(1{2}[4-9]|1[2-9]\d|[2-9]\d{2}|\d{4,})\.\d+(\.\d+|)|Chrom(ium|e)\/(9{2}|\d{3,})\.\d+(\.\d+|)|(Maci|X1{2}).+ Version\/(15\.\d+|(1[6-9]|[2-9]\d|\d{3,})\.\d+)([,.]\d+|)( \(\w+\)|)( Mobile\/\w+|) Safari\/|Chrome.+OPR\/(9{2}|\d{3,})\.\d+\.\d+|(CPU[ +]OS|iPhone[ +]OS|CPU[ +]iPhone|CPU IPhone OS|CPU iPad OS)[ +]+(15[._]\d+|(1[6-9]|[2-9]\d|\d{3,})[._]\d+)([._]\d+|)|Android:?[ /-](14[89]|1[5-9]\d|[2-9]\d{2}|\d{4,})(\.\d+|)(\.\d+|)|Android.+Firefox\/(15\d|1[6-9]\d|[2-9]\d{2}|\d{4,})\.\d+(\.\d+|)|Android.+Chrom(ium|e)\/(14[89]|1[5-9]\d|[2-9]\d{2}|\d{4,})\.\d+(\.\d+|)|SamsungBrowser\/([2-9]\d|\d{3,})\.\d+/,legacy:/Edge?\/(1[6-9]|[2-9]\d|\d{3,})\.\d+(\.\d+|)|Firefox\/(5[4-9]|[6-9]\d|\d{3,})\.\d+(\.\d+|)|Chrom(ium|e)\/(5[1-9]|[6-9]\d|\d{3,})\.\d+(\.\d+|)([\d.]+$|.*Safari\/(?![\d.]+ Edge\/[\d.]+$))|(Maci|X1{2}).+ Version\/(10\.\d+|(1[1-9]|[2-9]\d|\d{3,})\.\d+)([,.]\d+|)( \(\w+\)|)( Mobile\/\w+|) Safari\/|Chrome.+OPR\/(3[89]|[4-9]\d|\d{3,})\.\d+\.\d+|(CPU[ +]OS|iPhone[ +]OS|CPU[ +]iPhone|CPU IPhone OS|CPU iPad OS)[ +]+(10[._]\d+|(1[1-9]|[2-9]\d|\d{3,})[._]\d+)([._]\d+|)|Android:?[ /-](14[89]|1[5-9]\d|[2-9]\d{2}|\d{4,})(\.\d+|)(\.\d+|)|Mobile Safari.+OPR\/([89]\d|\d{3,})\.\d+\.\d+|Android.+Firefox\/(15\d|1[6-9]\d|[2-9]\d{2}|\d{4,})\.\d+(\.\d+|)|Android.+Chrom(ium|e)\/(14[89]|1[5-9]\d|[2-9]\d{2}|\d{4,})\.\d+(\.\d+|)|Android.+(UC? ?Browser|UCWEB|U3)[ /]?(15\.([5-9]|\d{2,})|(1[6-9]|[2-9]\d|\d{3,})\.\d+)\.\d+|SamsungBrowser\/(5\.\d+|([6-9]|\d{2,})\.\d+)|Android.+MQ{2}Browser\/(14(\.(9|\d{2,})|)|(1[5-9]|[2-9]\d|\d{3,})(\.\d+|))(\.\d+|)|K[Aa][Ii]OS\/(3\.\d+|([4-9]|\d{2,})\.\d+)(\.\d+|)/}).modern,h=f.legacy,(y=navigator.userAgent).match(e)?"bot":y.match(v)?"modern":y.match(h)?"legacy":y.match(t)?"bot":"unknown"),m=function(e){var t,i,n=r(e,128);try{var a=window.performance,d=null==(t=null==a?void 0:a.getEntriesByType)?void 0:t.call(a,"navigation")[0];if(!d)return{requestId:n,navigationType:o(a)};var s="type"in d?r(d.type,64):void 0,u="serverTiming"in d&&Array.isArray(d.serverTiming)?d.serverTiming:[];return{requestId:null!=n?n:r(null==(i=u.find(function(e){return"requestID"===e.name}))?void 0:i.description,128),navigationType:s}}catch(e){return{requestId:n}}}(c.requestId),w=function(e){var t=e.version,r=e.browserTarget,o=e.surface,a=e.shopId,d=e.monorailEndpoint,s=window.location.href;return{emit:function(e){var u=e.status,l=e.errorMsg,c=e.failureReason,p=e.useKeepaliveFallback,f=void 0!==p&&p,v=e.navigationType,h=e.pagehidePersisted,y=e.requestId,g=e.trekkieState;if(d){var m,w;try{var b=(new Date).getTime();m=JSON.stringify({metadata:{event_sent_at_ms:b},events:[{schema_id:"web_pixels_manager_load/3.3",payload:{version:t,bundle_target:r,page_url:s,status:u,surface:o,error_msg:l,failure_reason:c,navigation_type:v,pagehide_persisted:h,request_id:y,trekkie_state:g,shop_id:a,visit_token:i()},metadata:{event_created_at_ms:b}}]})}catch(e){return}try{if("function"==typeof window.navigator.sendBeacon&&-1===(w=window.navigator.userAgent).indexOf("iPhone; CPU iPhone OS 12_")&&-1===w.indexOf("iPad; CPU OS 12_")&&-1===w.indexOf("iPod touch; CPU iPhone OS 12_")&&window.navigator.sendBeacon.bind(window.navigator)(d,m))return}catch(e){}if(f)try{"function"==typeof window.fetch&&window.fetch(d,{method:"POST",headers:{"Content-Type":"text/plain"},body:m,keepalive:!0}
1286).catch(function(){})}catch(e){}else try{var _=new XMLHttpRequest;_.open("POST",d,!0),_.setRequestHeader("Content-Type","text/plain"),_.send(m)}catch(e){n("[Web Pixels Manager] Got an unhandled error while logging to Monorail.")}}else n("[Web Pixels Manager] No Monorail endpoint provided, skipping logging.")}}}({version:u,browserTarget:g,surface:d.surface,shopId:d.shopId,monorailEndpoint:d.monorailEndpoint});if(Boolean(null==(_=null==(b=window.Shopify)?void 0:b.analytics)?void 0:_.replayQueue))w.emit({status:"setup-skipped",errorMsg:"replay queue already initialized."});else{var b,_;w.emit({status:"setup-started"}),window.Shopify=window.Shopify||{};var S=window.Shopify;S.analytics=S.analytics||{};var P=S.analytics;P.replayQueue=[],P.publish=function(e,t,i){return P.replayQueue.push([e,t,i]),!0};try{self.performance.mark("wpm:start")}catch(e){}var k,C="modern"===g?"modern":"legacy",E=(null!=l?l:{modern:"",legacy:""})[C],I=[(k={baseUrl:s,hashVersion:u,buildTarget:C}).baseUrl,"/wpm","/b",k.hashVersion,"modern"===k.buildTarget?"m":"l",".js"].join(""),O=!1,T=!1;try{c.browserTarget=g,function(){O=!0;try{window.addEventListener("pagehide",M)}catch(e){O=!1}}(),R(function(){try{R(x)}catch(e){D(e)}}),w.emit({status:"loading",requestId:m.requestId,navigationType:m.navigationType,trekkieState:a()})}catch(e){D(e)}}function U(){var e;if(q(),!function(){var e,t;return Boolean(null==(t=null==(e=window.Shopify)?void 0:e.analytics)?void 0:t.initialized)}()){var t,i,n;try{if("function"!=typeof(null==(e=window.webPixelsManager)?void 0:e.init))return void A();if(!(null!==(n=i=t=window.webPixelsManager.init(d))&&"function"!=typeof n&&Object(n)===n&&"publish"in i&&"function"==typeof i.publish&&"publishCustomEvent"in i&&"function"==typeof i.publishCustomEvent&&"visitor"in i&&"function"==typeof i.visitor))return void A()}catch(e){return void A(e)}var r=window.Shopify.analytics;r.replayQueue.forEach(function(e){var i=e[0],n=e[1],r=e[2];t.publishCustomEvent(i,n,r)}),r.replayQueue=[],r.publish=t.publishCustomEvent,r.visitor=t.visitor,r.initialized=!0}}function A(e){B("manager_api_unavailable",void 0===e?void 0:Q(e))}function x(){B("script_load_failed","".concat(I," has failed to load"))}function B(e,t){T||(T=!0,q(),w.emit({status:"failed",errorMsg:t,failureReason:e,requestId:m.requestId,navigationType:m.navigationType,trekkieState:a()}))}function M(e){O&&(q(),w.emit({status:"pagehide-while-loading",useKeepaliveFallback:!0,pagehidePersisted:e.persisted,requestId:m.requestId,navigationType:m.navigationType,trekkieState:a()}))}function q(){O=!1;try{window.removeEventListener("pagehide",M)}catch(e){}}function R(e){var t;!function(e){var t=e.src,i=e.async,n=void 0===i||i,r=e.onload,o=e.onerror,a=e.sri,d=e.scriptDataAttributes,s=void 0===d?{}:d,u=document.createElement("script"),l=document.querySelector("head"),c=document.querySelector("body");if(u.async=n,u.src=t,a&&(u.integrity=a,u.crossOrigin="anonymous"),s)for(var p in s)if(Object.prototype.hasOwnProperty.call(s,p))try{u.dataset[p]=String(s[p])}catch(e){}if(r&&u.addEventListener("load",r),o&&u.addEventListener("error",o),l)l.appendChild(u);else{if(!c)throw new Error("Did not find a head or body element to append the script");c.appendChild(u)}}({src:I,async:!0,onload:U,onerror:e,sri:(t=E,"string"==typeof t&&/^sha384-[A-Za-z0-9+/=]+$/.test(t)?E:""),scriptDataAttributes:c})}function D(e){B("script_append_failed",Q(e))}function Q(e){return e instanceof Error?e.message:"Unknown error"}}}();wpmLoader({shopId: 1949335627,storefrontBaseUrl: "https://foodloops.net",extensionsBaseUrl: "https://extensions.shopifycdn.com/cdn/shopifycloud/web-pixels-manager",monorailEndpoint: "https://foodloops.net/.well-known/shopify/monorail/unstable/produce_batch",surface: "storefront-renderer",enabledBetaFlags: ["4c64608a","16072cab","8450a54b"],webPixelsConfigList: [{"id":"144605481","eventPayloadVersion":"v1","runtimeContext":"LAX","scriptVersion":"1","type":"CUSTOM","privacyPurposes":["ANALYTICS"],"name":"Google Analytics tag (migrated)"},{"id":"shopify-app-pixel","configuration":"{}","eventPayloadVersion":"v1","runtimeContext":"STRICT","scriptVersion":"0530","apiClientId":"shopify-pixel","type":"APP","privacyPurposes":["ANALYTICS","MARKETING"]},{"id":"shopify-custom-pixel","eventPayloadVersion":"v1","runtimeContext":"LAX","scriptVersion":"0530","apiClientId":"shopify-pixel","type":"CUSTOM","privacyPurposes":["ANALYTICS","MARKETING"]}],isMerchantRequest: false,initData: {"shop":{"name":"Food Loops","paymentSettings":{"currencyCode":"USD"},"myshopifyDomain":"food-loops.myshopify.com","countryCode":"US","storefrontUrl":"https:\/\/foodloops.net"},"customer":null,"cart":null,"checkout":null,"productVariants":[],"products":[],"purchasingCompany":null},},"https://foodloops.net/cdn","7ec887c8w14f9f074p854094e1m1370c602",{"modern":"","legacy":""},{"trekkieShim":true,"agentContext":true,"apiClientId":"580111","facebookCapiEnabled":"false","themeId":"176843063593","themeStoreId":"730","themePublished":"true","eventMetadataId":"bdeb6518-3b26-4f5e-86c1-9279c5d16ff8","pageType":"collection","resourceId":"79214575691","shopId":"1949335627","storefrontBaseUrl":"https:\/\/foodloops.net","extensionBaseUrl":"https:\/\/extensions.shopifycdn.com\/cdn\/shopifycloud\/web-pixels-manager","surface":"storefront-renderer","enabledBetaFlags":"[\"4c64608a\", \"16072cab\", \"8450a54b\"]","isMerchantRequest":"false","hashVersion":"7ec887c8w14f9f074p854094e1m1370c602","publish":"custom","events":"[[\"page_viewed\",{}],[\"collection_viewed\",{\"collection\":{\"id\":\"79214575691\",\"title\":\"Compostable Products\",\"productVariants\":[]}}]]"});})();</script>
1286<script> 1287 window.ShopifyAnalytics = window.ShopifyAnalytics || {}; 1288 window.ShopifyAnalytics.meta = window.ShopifyAnalytics.meta || {}; 1289 window.ShopifyAnalytics.meta.currency = 'USD'; 1290 var meta = {"products":[],"page":{"pageType":"collection","resourceType":"collection","resourceId":79214575691,"requestId":"d1b8873e-f732-4679-87ea-c02cb723ec1b-1791435664"}}; 1291 for (var attr in meta) { 1292 window.ShopifyAnalytics.meta[attr] = meta[attr]; 1293 } 1294</script>
vendor: 1 bytes, line 1294
1294
1295<script class="analytics"> 1296 (function () { 1297 var customDocumentWrite = function(content) { 1298 var jquery = null; 1299 1300 if (window.jQuery) { 1301 jquery = window.jQuery; 1302 } else if (window.Checkout && window.Checkout.$) { 1303 jquery = window.Checkout.$; 1304 } 1305 1306 if (jquery) { 1307 jquery('body').append(content); 1308 } 1309 }; 1310 1311 var hasLoggedConversion = function(token) { 1312 if (token) { 1313 return document.cookie.indexOf('loggedConversion=' + token) !== -1; 1314 } 1315 return false; 1316 } 1317 1318 var setCookieIfConversion = function(token) { 1319 if (token) { 1320 var twoMonthsFromNow = new Date(Date.now()); 1321 twoMonthsFromNow.setMonth(twoMonthsFromNow.getMonth() + 2); 1322 1323 document.cookie = 'loggedConversion=' + token + '; expires=' + twoMonthsFromNow; 1324 } 1325 } 1326 1327 var trekkie = window.ShopifyAnalytics.lib = window.trekkie = window.trekkie || []; 1328 window.ShopifyAnalytics.lib.trekkie = window.trekkie; 1329 if (trekkie.integrations) { 1330 return; 1331 } 1332 trekkie.methods = [ 1333 'identify', 1334 'page', 1335 'ready', 1336 'track', 1337 'trackForm', 1338 'trackLink' 1339 ]; 1340 trekkie.factory = function(method) { 1341 return function() { 1342 var args = Array.prototype.slice.call(arguments); 1343 args.unshift(method); 1344 trekkie.push(args); 1345 if (method == 'track' || method == 'page') { 1346 var pageUrl; 1347 try { 1348 pageUrl = window.location.href; 1349 } catch (e) {} 1350 var pageReferrer; 1351 try { 1352 pageReferrer = document.referrer; 1353 } catch (e) {} 1354 try { 1355 if (window.__TREKKIE_SHIM_QUEUE == null) { 1356 window.__TREKKIE_SHIM_QUEUE = []; 1357 } 1358 window.__TREKKIE_SHIM_QUEUE.push({ 1359 from: 'trekkie-stub', 1360 method: method, 1361 args: args.slice(1), 1362 pageContext: { 1363 url: pageUrl, 1364 referrer: pageReferrer 1365 } 1366 }); 1367 } catch (e) { 1368 // no-op 1369 } 1370 } 1371 return trekkie; 1372 }; 1373 }; 1374 for (var i = 0; i < trekkie.methods.length; i++) { 1375 var key = trekkie.methods[i]; 1376 trekkie[key] = trekkie.factory(key); 1377 } 1378 trekkie.load = function(config) { 1379 trekkie.config = config || {}; 1380 trekkie.config.initialDocumentCookie = document.cookie; 1381 var first = document.getElementsByTagName('script')[0]; 1382var script = document.createElement('script'); 1383script.type = 'text/javascript'; 1384script.onerror = function(e) { 1385 var scriptFallback = document.createElement('script'); 1386 scriptFallback.type = 'text/javascript'; 1387 scriptFallback.onerror = function(error) { 1388 var Monorail = { 1389 produce: function produce(monorailDomain, schemaId, payload) { 1390 var currentMs = new Date().getTime(); 1391 var event = { 1392 schema_id: schemaId, 1393 payload: payload, 1394 metadata: { 1395 event_created_at_ms: currentMs, 1396 event_sent_at_ms: currentMs 1397 } 1398 }; 1399 return Monorail.sendRequest("https://" + monorailDomain + "/v1/produce", JSON.stringify(event)); 1400 }, 1401 sendRequest: function sendRequest(endpointUrl, payload) { 1402 // Try the sendBeacon API 1403 if (window && window.navigator && typeof window.navigator.sendBeacon === 'function' && typeof window.Blob === 'function' && !Monorail.isIos12()) { 1404 var blobData = new window.Blob([payload], { 1405 type: 'text/plain' 1406 }); 1407 1408 if (window.navigator.sendBeacon(endpointUrl, blobData)) { 1409 return true; 1410 } // sendBeacon was not successful 1411 1412 } // XHR beacon 1413 1414 var xhr = new XMLHttpRequest(); 1415 1416 try { 1417 xhr.open('POST', endpointUrl); 1418 xhr.setRequestHeader('Content-Type', 'text/plain'); 1419 xhr.send(payload); 1420 } catch (e) { 1421 console.log(e); 1422 } 1423 1424 return false; 1425 }, 1426 isIos12: function isIos12() { 1427 return window.navigator.userAgent.lastIndexOf('iPhone; CPU iPhone OS 12_') !== -1 || window.navigator.userAgent.lastIndexOf('iPad; CPU OS 12_') !== -1; 1428 } 1429 }; 1430 Monorail.produce('monorail-edge.shopifysvc.com', 1431 'trekkie_storefront_load_errors/1.1', 1432 {shop_id: 1949335627, 1433 theme_id: 176843063593, 1434 app_name: "storefront", 1435 context_url: window.location.href, 1436 source_url: "//foodloops.net/cdn/s/trekkie.storefront.51e69540e15035ae012ec8cc42e8f9cd792233a0.min.js"}); 1437 1438 }; 1439 scriptFallback.async = true; 1440 scriptFallback.src = '//foodloops.net/cdn/s/trekkie.storefront.51e69540e15035ae012ec8cc42e8f9cd792233a0.min.js'; 1441 first.parentNode.insertBefore(scriptFallback, first); 1442}; 1443script.async = true; 1444script.src = '//foodloops.net/cdn/s/trekkie.storefront.51e69540e15035ae012ec8cc42e8f9cd792233a0.min.js'; 1445first.parentNode.insertBefore(script, first); 1446 1447 }; 1448 trekkie.load( 1449 {"Trekkie":{"appName":"storefront","development":false,"defaultAttributes":{"shopId":1949335627,"isMerchantRequest":null,"themeId":176843063593,"themeCityHash":"11232583978381918056","contentLanguage":"en","currency":"USD","eventMetadataId":"bdeb6518-3b26-4f5e-86c1-9279c5d16ff8"},"isServerSideCookieWritingEnabled":true,"monorailRegion":"shop_domain","enabledBetaFlags":["764d78cb","8450a54b","4c64608a"]},"Session Attribution":{},"S2S":{"facebookCapiEnabled":false,"source":"trekkie-storefront-renderer","apiClientId":580111}} 1450 ); 1451 1452 var loaded = false;
1453 trekkie.ready(function() { 1454 if (loaded) return; 1455 loaded = true; 1456 1457 window.ShopifyAnalytics.lib = window.trekkie; 1458 1459 var originalDocumentWrite = document.write; 1460 document.write = customDocumentWrite; 1461 try { window.ShopifyAnalytics.merchantGoogleAnalytics.call(this); } catch(error) {}; 1462 document.write = originalDocumentWrite; 1463 1464 var match = window.location.pathname.match(/checkouts\/(.+)\/(thank_you|post_purchase)/) 1465 var token = match? match[1]: undefined; 1466 if (!hasLoggedConversion(token)) { 1467 setCookieIfConversion(token); 1468 window.ShopifyAnalytics.lib.track("Viewed Product Category",{"currency":"USD","category":"Collection: compostable-products","collectionName":"compostable-products","collectionId":79214575691,"nonInteraction":true},undefined,undefined,{"shopifyEmitted":true}); 1469 } 1470 }); 1471 1472 window.ShopifyAnalytics.lib.page(null,{"pageType":"collection","resourceType":"collection","resourceId":79214575691,"requestId":"d1b8873e-f732-4679-87ea-c02cb723ec1b-1791435664","shopifyEmitted":true}); 1473 1474 var eventsListenerScript = document.createElement('script'); 1475 eventsListenerScript.async = true; 1476 eventsListenerScript.src = "//foodloops.net/cdn/shopifycloud/storefront/assets/shop_events_listener-4e26a9ce.js"; 1477 document.getElementsByTagName('head')[0].appendChild(eventsListenerScript); 1478})();</script>
1478 1479
1479<script> 1480 if (!window.ga || (window.ga && typeof window.ga !== 'function')) { 1481 window.ga = function ga() { 1482 (window.ga.q = window.ga.q || []).push(arguments); 1483 if (window.Shopify && window.Shopify.analytics && typeof window.Shopify.analytics.publish === 'function') { 1484 window.Shopify.analytics.publish("ga_stub_called", {}, {sendTo: "google_osp_migration"}); 1485 } 1486 console.error("Shopify's Google Analytics stub called with:", Array.from(arguments), "\nSee https://help.shopify.com/manual/promoting-marketing/pixels/pixel-migration#google for more information."); 1487 }; 1488 if (window.Shopify && window.Shopify.analytics && typeof window.Shopify.analytics.publish === 'function') { 1489 window.Shopify.analytics.publish("ga_stub_initialized", {}, {sendTo: "google_osp_migration"}); 1490 } 1491 } 1492</script>
vendor: 1 bytes, line 1492
1492
1493<script 1494 defer 1495 src="https://foodloops.net/cdn/shopifycloud/perf-kit/shopify-perf-kit-3.10.0.min.js" 1496 data-application="storefront-renderer" 1497 data-shop-id="1949335627" 1498 data-render-region="gcp-us-central1" 1499 data-page-type="collection" 1500 data-theme-instance-id="176843063593" 1501 data-theme-name="Brooklyn" 1502 data-theme-version="12.0.2" 1503 data-monorail-region="shop_domain" 1504 data-resource-timing-sampling-rate="10" 1505 data-shs="true" 1506 data-shs-beacon="true" 1507 data-shs-export-with-fetch="true" 1508 data-shs-logs-sample-rate="1" 1509 data-shs-beacon-endpoint="https://foodloops.net/api/collect" 1510></script>
1510 1511<meta name="shopify-y" content="4979b1f9-433f-438f-9a38-cb7b395f8617" data-expiration="1822993264000"><meta name="shopify-s" content="a5859221-924a-4781-bc9e-b380063543ff" data-expiration="1791437464000"><meta name="new-cookie-storage-activated" content="t"> 1512</head> 1513 1514 1515<body id="compostable-products" class="template-collection"> 1516 1517 1518 1519 1520 1521 1522<style> 1523.modal-custom{display:none;position:fixed;z-index:10000;left:0;top:0;width:100%;height:100%;overflow:auto;background-color:#000;background-color:rgba(0,0,0,.4)}.modal-content-custom{background-color:#fefefe;margin:15% auto;padding:20px;border:1px solid #888;width:80%}.close-custom{color:#aaa;float:right;font-size:28px;font-weight:700;margin-right:-10px;margin-top:-45px}.close-custom:focus,.close-custom:hover{color:#000;text-decoration:none;cursor:pointer}#loader{display:none;position:absolute;left:50%;top:50%;z-index:10000;width:150px;height:150px;margin:-75px 0 0 -75px;border:16px solid #f3f3f3;border-radius:50%;border-top:16px solid #3498db;width:120px;height:120px;-webkit-animation:spin 2s linear infinite;animation:spin 2s linear infinite}@-webkit-keyframes spin{0%{-webkit-transform:rotate(0)}100%{-webkit-transform:rotate(360deg)}}@keyframes spin{0%{transform:rotate(0)}100%{transform:rotate(360deg)}}.animate-bottom{position:relative;-webkit-animation-name:animatebottom;-webkit-animation-duration:1s;animation-name:animatebottom;animation-duration:1s}@-webkit-keyframes animatebottom{from{bottom:-100px;opacity:0}to{bottom:0;opacity:1}}@keyframes animatebottom{from{bottom:-100px;opacity:0}to{bottom:0;opacity:1}} 1524</style> 1525<div id="loader"></div> 1526<div id="myModal" class="modal-custom"> <div class="modal-content-custom"> <div id="purchase_limit_messages"></div><span class="close-custom">×</span> </div></div> 1527
1528<script type="text/javascript"> 1529 1530var template = "collection"; 1531 1532var customer_id = ""; 1533 1534function myJQueryCode() { 1535 1536 var modal = document.getElementById("myModal"), 1537 span = document.getElementsByClassName("close-custom")[0]; 1538 1539 function checkLimit(e,click = false) { 1540 1541 e.customer_id = customer_id; 1542 1543 $.ajax({ 1544 type: "POST", 1545 url: "/a/cart-update", 1546 dataType: "json", 1547 data: e, 1548 success: function(e) { 1549 if (1 == e.error) { 1550 var t = "<ul>"; 1551 $.each(e.messages, function(e, n) { 1552 t += "<li>" + n + "</li>" 1553 }), t += "</ul>", $("#purchase_limit_messages").html(t), document.getElementById("myModal").style.display = "block" 1554 } else if(click) { 1555 window.location.replace('/checkout'); 1556 } 1557 document.getElementById("loader").style.display = "none" 1558 } 1559 }); 1560 } 1561 1562 if(template == 'cart'){ 1563 1564 jQuery.getJSON("/cart.js", function(e) { 1565 checkLimit(e) 1566 }), span.onclick = function() { 1567 modal.style.display = "none" 1568 }, window.onclick = function(e) { 1569 e.target == modal && (modal.style.display = "none") 1570 }; 1571 } 1572 1573 jQuery(document).on("click","button[name='checkout']",function(e){ 1574 document.getElementById("loader").style.display = "block"; 1575 e.preventDefault(); 1576 e.stopImmediatePropagation(); 1577 jQuery.getJSON("/cart.js", function(cartItems) { 1578 checkLimit(cartItems,true); 1579 }); 1580 }); 1581 1582 jQuery(document).on("click","input[name='checkout']",function(e){ 1583 document.getElementById("loader").style.display = "block"; 1584 e.preventDefault(); 1585 e.stopImmediatePropagation(); 1586 jQuery.getJSON("/cart.js", function(cartItems) { 1587 checkLimit(cartItems,true); 1588 }); 1589 }); 1590 1591 jQuery(document).on("click",span,function(e){ 1592 modal.style.display = "none"; 1593 }); 1594 1595 jQuery(document).on("click","a[href='/checkout']",function(e){ 1596 document.getElementById("loader").style.display = "block"; 1597 e.preventDefault(); 1598 e.stopImmediatePropagation(); 1599 jQuery.getJSON("/cart.js", function(cartItems) { 1600 checkLimit(cartItems,true); 1601 }); 1602 }); 1603} 1604if(typeof jQuery=='undefined') { 1605 var headTag = document.getElementsByTagName("head")[0]; 1606 var jqTag = document.createElement('script'); 1607 jqTag.type = 'text/javascript'; 1608 jqTag.src = 'https://ajax.googleapis.com/ajax/libs/jquery/3.4.1/jquery.min.js'; 1609 jqTag.onload = myJQueryCode; 1610 headTag.appendChild(jqTag); 1611} else { 1612 myJQueryCode(); 1613} 1614</script>
1614 1615 1616 1617 <div id="shopify-section-announcement-bar" class="shopify-section"> 1618 1619<style> 1620 1621</style> 1622 1623</div> 1624 <div id="shopify-section-header" class="shopify-section"><style> 1625 .site-header__logo img { 1626 max-width: 260px; 1627 } 1628 1629 @media screen and (max-width: 768px) { 1630 .site-header__logo img { 1631 max-width: 100%; 1632 } 1633 } 1634</style> 1635 1636<div data-section-id="header" data-section-type="header-section" data-template="collection"> 1637 <div id="NavDrawer" class="drawer drawer--left"> 1638 <div class="drawer__inner drawer-left__inner"> 1639 1640 1641 1642 <ul class="mobile-nav"> 1643 1644 1645 <li class="mobile-nav__item"> 1646 <div class="mobile-nav__has-sublist"> 1647 <a 1648 href="/" 1649 class="mobile-nav__link" 1650 id="Label-1" 1651 >Services</a> 1652 <div class="mobile-nav__toggle"> 1653 <button type="button" class="mobile-nav__toggle-btn icon-fallback-text" aria-controls="Linklist-1" aria-expanded="false"> 1654 <span class="icon-fallback-text mobile-nav__toggle-open"> 1655 <span class="icon icon-plus" aria-hidden="true"></span> 1656 <span class="fallback-text">Expand submenu Services</span> 1657 </span> 1658 <span class="icon-fallback-text mobile-nav__toggle-close"> 1659 <span class="icon icon-minus" aria-hidden="true"></span> 1660 <span class="fallback-text">Collapse submenu Services</span> 1661 </span> 1662 </button> 1663 </div> 1664 </div> 1665 <ul class="mobile-nav__sublist" id="Linklist-1" aria-labelledby="Label-1" role="navigation"> 1666 1667 1668 1669 <li class="mobile-nav__item"> 1670 <div class="mobile-nav__has-sublist"> 1671 <a 1672 href="/collections/residential-food-waste-and-glass" 1673 class="mobile-nav__link" 1674 id="Label-1-1" 1675 > 1676 Residential Food Waste & Glass Program 1677 </a> 1678 <div class="mobile-nav__toggle"> 1679 <button type="button" class="mobile-nav__toggle-btn icon-fallback-text" aria-controls="Linklist-1-1" aria-expanded="false"> 1680 <span class="icon-fallback-text mobile-nav__toggle-open"> 1681 <span class="icon icon-plus" aria-hidden="true"></span> 1682 <span class="fallback-text">Expand submenu Services</span> 1683 </span> 1684 <span class="icon-fallback-text mobile-nav__toggle-close"> 1685 <span class="icon icon-minus" aria-hidden="true"></span> 1686 <span class="fallback-text">Collapse submenu Services</span> 1687 </span> 1688 </button> 1689 </div> 1690 </div> 1691 <ul class="mobile-nav__sublist mobile-nav__subsublist" id="Linklist-1-1" aria-labelledby="Label-1-1" role="navigation"> 1692 1693 <li class="mobile-nav__item"> 1694 <a 1695 href="/pages/what-goes-in-the-bucket" 1696 class="mobile-nav__link" 1697 > 1698 What Goes in the Bucket? 1699 </a> 1700 </li> 1701 1702 </ul> 1703 </li> 1704 1705 1706 1707 <li class="mobile-nav__item"> 1708 <a 1709 href="/pages/food-waste-pickup" 1710 class="mobile-nav__link" 1711 > 1712 Commercial Pickup 1713 </a> 1714 </li> 1715 1716 1717 1718 <li class="mobile-nav__item"> 1719 <a 1720 href="/collections/zero-waste-events" 1721 class="mobile-nav__link" 1722 > 1723 Zero-Waste Events 1724 </a> 1725 </li> 1726 1727 1728 </ul> 1729 </li> 1730 1731 1732 1733 1734 <li class="mobile-nav__item"> 1735 <div class="mobile-nav__has-sublist"> 1736 <a 1737 href="https://food-loops.myshopify.com/pages/compostable-products-landing" 1738 class="mobile-nav__link" 1739 id="Label-2" 1740 >Compostables</a> 1741 <div class="mobile-nav__toggle"> 1742 <button type="button" class="mobile-nav__toggle-btn icon-fallback-text" aria-controls="Linklist-2" aria-expanded="false">
1743 <span class="icon-fallback-text mobile-nav__toggle-open"> 1744 <span class="icon icon-plus" aria-hidden="true"></span> 1745 <span class="fallback-text">Expand submenu Compostables</span> 1746 </span> 1747 <span class="icon-fallback-text mobile-nav__toggle-close"> 1748 <span class="icon icon-minus" aria-hidden="true"></span> 1749 <span class="fallback-text">Collapse submenu Compostables</span> 1750 </span> 1751 </button> 1752 </div> 1753 </div> 1754 <ul class="mobile-nav__sublist" id="Linklist-2" aria-labelledby="Label-2" role="navigation"> 1755 1756 1757 1758 <li class="mobile-nav__item"> 1759 <a 1760 href="/collections/beverage-accessories" 1761 class="mobile-nav__link" 1762 > 1763 Beverage Accessories 1764 </a> 1765 </li> 1766 1767 1768 1769 <li class="mobile-nav__item"> 1770 <a 1771 href="/collections/clear-food-containers-pla" 1772 class="mobile-nav__link" 1773 > 1774 Clear Food Containers - PLA 1775 </a> 1776 </li> 1777 1778 1779 1780 <li class="mobile-nav__item"> 1781 <a 1782 href="/collections/cold-cups-1" 1783 class="mobile-nav__link" 1784 > 1785 Cold Cups 1786 </a> 1787 </li> 1788 1789 1790 1791 <li class="mobile-nav__item"> 1792 <a 1793 href="/collections/catering-kids-other" 1794 class="mobile-nav__link" 1795 > 1796 Catering 1797 </a> 1798 </li> 1799 1800 1801 1802 <li class="mobile-nav__item"> 1803 <a 1804 href="/collections/cutlery" 1805 class="mobile-nav__link" 1806 > 1807 Cutlery 1808 </a> 1809 </li> 1810 1811 1812 1813 <li class="mobile-nav__item"> 1814 <a 1815 href="/collections/food-trays-and-boats" 1816 class="mobile-nav__link" 1817 > 1818 Food Trays and Boats 1819 </a> 1820 </li> 1821 1822 1823 1824 <li class="mobile-nav__item"> 1825 <a 1826 href="/collections/hot-cups" 1827 class="mobile-nav__link" 1828 > 1829 Hot Cups 1830 </a> 1831 </li> 1832 1833 1834 1835 <li class="mobile-nav__item"> 1836 <a 1837 href="/collections/insulated-hot-cups" 1838 class="mobile-nav__link" 1839 > 1840 Insulated Hot Cups 1841 </a> 1842 </li> 1843 1844 1845 1846 <li class="mobile-nav__item"> 1847 <a 1848 href="/collections/kraft-innoboxes" 1849 class="mobile-nav__link" 1850 > 1851 Kraft Innoboxes 1852 </a> 1853 </li> 1854 1855 1856 1857 <li class="mobile-nav__item"> 1858 <a 1859 href="/collections/liners-bags" 1860 class="mobile-nav__link" 1861 > 1862 Liners & Bags 1863 </a> 1864 </li> 1865 1866 1867 1868 <li class="mobile-nav__item"> 1869 <a 1870 href="/collections/napkins" 1871 class="mobile-nav__link" 1872 > 1873 Napkins 1874 </a> 1875 </li> 1876 1877 1878 1879 <li class="mobile-nav__item"> 1880 <a 1881 href="/collections/dinnerware" 1882 class="mobile-nav__link" 1883 > 1884 Plates and Bowls 1885 </a> 1886 </li> 1887 1888 1889 1890 <li class="mobile-nav__item"> 1891 <a 1892 href="/collections/portion-cups-sugarcane-pla" 1893 class="mobile-nav__link" 1894 > 1895 Portion Cups - Sugarcane & PLA 1896 </a> 1897 </li> 1898 1899 1900 1901 <li class="mobile-nav__item"> 1902 <a 1903 href="/collections/salad-bowls" 1904 class="mobile-nav__link" 1905 > 1906 Salad Bowls 1907 </a> 1908 </li> 1909 1910 1911 1912 <li class="mobile-nav__item"> 1913 <a 1914 href="/collections/soup-cups" 1915 class="mobile-nav__link" 1916 > 1917 Soup Cups 1918 </a> 1919 </li> 1920 1921 1922 1923 <li class="mobile-nav__item"> 1924 <a 1925 href="/collections/containers" 1926 class="mobile-nav__link" 1927 > 1928 Sugarcane Take Out Containers 1929 </a> 1930 </li> 1931 1932 1933 </ul> 1934 </li> 1935 1936 1937 1938 1939 1940 <li class="mobile-nav__item"> 1941 <a 1942 href="/collections/event-collection" 1943 class="mobile-nav__link" 1944 > 1945 Event Collection 1946 </a> 1947 </li> 1948 1949 1950 1951 1952 1953 <li class="mobile-nav__item"> 1954 <a 1955 href="/collections/nutrient-rich-compost" 1956 class="mobile-nav__link" 1957 > 1958 Compost 1959 </a> 1960 </li> 1961 1962 1963 1964 1965 1966 <li class="mobile-nav__item"> 1967 <a 1968 href="/collections/digester" 1969 class="mobile-nav__link" 1970 > 1971 Home Digesters 1972 </a> 1973 </li> 1974 1975 1976 1977 1978 1979 <li class="mobile-nav__item"> 1980 <a 1981 href="https://food-loops.myshopify.com/pages/contact-foodloops" 1982 class="mobile-nav__link" 1983 > 1984 Contact 1985 </a> 1986 </li> 1987 1988 1989 1990 1991 1992 <li class="mobile-nav__item"> 1993 <a 1994 href="/pages/manage-subscriptions" 1995 class="mobile-nav__link" 1996 > 1997 Manage Subscriptions 1998 </a> 1999 </li> 2000 2001 2002 2003 2004 <li class="mobile-nav__spacer"></li> 2005 2006 2007 2008 2009 <li class="mobile-nav__item mobile-nav__item--secondary"> 2010 <a href="https://foodloops.net/customer_authentication/redirect?locale=en&region_country=US" id="customer_login_link">Log In</a> 2011 </li> 2012 <li class="mobile-nav__item mobile-nav__item--secondary"> 2013 <a href="https://shopify.com/1949335627/account?locale=en®ion_country=US&buyer_flags=eyJhbGciOiJIUzI1NiJ9.eyJpc3MiOiJmb29kLWxvb3BzLm15c2hvcGlmeS5jb20iLCJmbGFncyI6W10sImV4cCI6MTc5MjA0MDQ2NCwibmJmIjoxNzkxNDM1NjY0fQ.TwVLN-bH1PkFTUUX3_
20136U2aQze5-plS6az0mYTyCmhZA" id="customer_register_link">Create Account</a> 2014 </li> 2015 2016 2017 2018 <li class="mobile-nav__item mobile-nav__item--secondary"><a href="/search">Search</a></li> 2019 2020 <li class="mobile-nav__item mobile-nav__item--secondary"><a href="/pages/contact-foodloops">Contact Us</a></li> 2021 2022 <li class="mobile-nav__item mobile-nav__item--secondary"><a href="/blogs/news">Our Blog</a></li> 2023 2024 <li class="mobile-nav__item mobile-nav__item--secondary"><a href="/policies/privacy-policy">Privacy Policy</a></li> 2025 2026 <li class="mobile-nav__item mobile-nav__item--secondary"><a href="/policies/refund-policy">Refund Policy</a></li> 2027 2028 <li class="mobile-nav__item mobile-nav__item--secondary"><a href="/policies/shipping-policy">Shipping Policy</a></li> 2029 2030 <li class="mobile-nav__item mobile-nav__item--secondary"><a href="/policies/terms-of-service">Terms of Service</a></li> 2031 2032 <li class="mobile-nav__item mobile-nav__item--secondary"><a href="/pages/billing-address">Billing Address</a></li> 2033 2034 </ul> 2035 <!-- //mobile-nav --> 2036 </div> 2037 2038 2039 </div> 2040 <div class="header-container drawer__header-container"> 2041 <div class="header-wrapper hero__header"> 2042 2043 2044 <header class="site-header" role="banner"> 2045 <div class="wrapper"> 2046 <div class="grid--full grid--table"> 2047 <div class="grid__item large--hide large--one-sixth one-quarter"> 2048 <div class="site-nav--open site-nav--mobile"> 2049 <button type="button" class="icon-fallback-text site-nav__link site-nav__link--burger js-drawer-open-button-left" aria-controls="NavDrawer"> 2050 <span class="burger-icon burger-icon--top"></span> 2051 <span class="burger-icon burger-icon--mid"></span> 2052 <span class="burger-icon burger-icon--bottom"></span> 2053 <span class="fallback-text">Site navigation</span> 2054 </button> 2055 </div> 2056 </div> 2057 <div class="grid__item large--one-third medium-down--one-half"> 2058 2059 2060 <div class="h1 site-header__logo large--left" itemscope itemtype="http://schema.org/Organization"> 2061 2062 2063 2064 2065 <a href="/" itemprop="url" class="site-header__logo-link"> 2066 <img src="//foodloops.net/cdn/shop/files/Color_Full_Logo-min_260x.png?v=1613702488" 2067 srcset="//foodloops.net/cdn/shop/files/Color_Full_Logo-min_260x.png?v=1613702488 1x, //foodloops.net/cdn/shop/files/[email protected]?v=1613702488 2x" 2068 alt="Food Loops Logo" 2069 itemprop="logo"> 2070 </a> 2071 2072 2073 </div> 2074 2075 </div> 2076 <nav class="grid__item large--two-thirds large--text-right medium-down--hide" role="navigation"> 2077 2078 <!-- begin site-nav --> 2079 <ul class="site-nav" id="AccessibleNav"> 2080 2081 2082 2083 <li 2084 class="site-nav__item site-nav--has-dropdown " 2085 aria-haspopup="true" 2086 data-meganav-type="parent"> 2087 <a 2088 href="/" 2089 class="site-nav__link" 2090 data-meganav-type="parent" 2091 aria-controls="MenuParent-1" 2092 aria-expanded="false" 2093 > 2094 Services 2095 <span class="icon icon-arrow-down" aria-hidden="true"></span> 2096 </a> 2097 <ul 2098 id="MenuParent-1" 2099 class="site-nav__dropdown site-nav--has-grandchildren" 2100 data-meganav-dropdown> 2101 2102 2103 2104 <li 2105 class="site-nav__item site-nav--has-dropdown site-nav--has-dropdown-grandchild " 2106 aria-haspopup="true"> 2107 <a 2108 href="/collections/residential-food-waste-and-glass" 2109 class="site-nav__dropdown-link" 2110 aria-controls="MenuChildren-1-1" 2111 data-meganav-type="parent" 2112 2113 tabindex="-1"> 2114 Residential Food Waste & Glass Program
2115 <span class="icon icon-arrow-down" aria-hidden="true"></span> 2116 </a> 2117 <div class="site-nav__dropdown-grandchild"> 2118 <ul 2119 id="MenuChildren-1-1" 2120 data-meganav-dropdown> 2121 2122 <li> 2123 <a 2124 href="/pages/what-goes-in-the-bucket" 2125 class="site-nav__dropdown-link" 2126 data-meganav-type="child" 2127 2128 tabindex="-1"> 2129 What Goes in the Bucket? 2130 </a> 2131 </li> 2132 2133 </ul> 2134 </div> 2135 </li> 2136 2137 2138 2139 <li> 2140 <a 2141 href="/pages/food-waste-pickup" 2142 class="site-nav__dropdown-link" 2143 data-meganav-type="child" 2144 2145 tabindex="-1"> 2146 Commercial Pickup 2147 </a> 2148 </li> 2149 2150 2151 2152 <li> 2153 <a 2154 href="/collections/zero-waste-events" 2155 class="site-nav__dropdown-link" 2156 data-meganav-type="child" 2157 2158 tabindex="-1"> 2159 Zero-Waste Events 2160 </a> 2161 </li> 2162 2163 2164 </ul> 2165 </li> 2166 2167 2168 2169 2170 <li 2171 class="site-nav__item site-nav--has-dropdown " 2172 aria-haspopup="true" 2173 data-meganav-type="parent"> 2174 <a 2175 href="https://food-loops.myshopify.com/pages/compostable-products-landing" 2176 class="site-nav__link" 2177 data-meganav-type="parent" 2178 aria-controls="MenuParent-2" 2179 aria-expanded="false" 2180 > 2181 Compostables 2182 <span class="icon icon-arrow-down" aria-hidden="true"></span> 2183 </a> 2184 <ul 2185 id="MenuParent-2" 2186 class="site-nav__dropdown " 2187 data-meganav-dropdown> 2188 2189 2190 <li> 2191 <a 2192 href="/collections/beverage-accessories" 2193 class="site-nav__dropdown-link" 2194 data-meganav-type="child" 2195 2196 tabindex="-1"> 2197 Beverage Accessories 2198 </a> 2199 </li> 2200 2201 2202 2203 <li> 2204 <a 2205 href="/collections/clear-food-containers-pla" 2206 class="site-nav__dropdown-link" 2207 data-meganav-type="child" 2208 2209 tabindex="-1"> 2210 Clear Food Containers - PLA 2211 </a> 2212 </li> 2213 2214 2215 2216 <li> 2217 <a 2218 href="/collections/cold-cups-1" 2219 class="site-nav__dropdown-link" 2220 data-meganav-type="child" 2221 2222 tabindex="-1"> 2223 Cold Cups 2224 </a> 2225 </li> 2226 2227 2228 2229 <li> 2230 <a 2231 href="/collections/catering-kids-other" 2232 class="site-nav__dropdown-link" 2233 data-meganav-type="child" 2234 2235 tabindex="-1"> 2236 Catering 2237 </a> 2238 </li> 2239 2240 2241 2242 <li> 2243 <a 2244 href="/collections/cutlery" 2245 class="site-nav__dropdown-link" 2246 data-meganav-type="child" 2247 2248 tabindex="-1"> 2249 Cutlery 2250 </a> 2251 </li> 2252 2253 2254 2255 <li> 2256 <a 2257 href="/collections/food-trays-and-boats" 2258 class="site-nav__dropdown-link" 2259 data-meganav-type="child" 2260 2261 tabindex="-1"> 2262 Food Trays and Boats 2263 </a> 2264 </li> 2265 2266 2267 2268 <li> 2269 <a 2270 href="/collections/hot-cups" 2271 class="site-nav__dropdown-link" 2272 data-meganav-type="child" 2273 2274 tabindex="-1"> 2275 Hot Cups 2276 </a> 2277 </li> 2278 2279 2280 2281 <li> 2282 <a 2283 href="/collections/insulated-hot-cups" 2284 class="site-nav__dropdown-link" 2285 data-meganav-type="child" 2286 2287 tabindex="-1"> 2288 Insulated Hot Cups 2289 </a> 2290 </li> 2291 2292 2293 2294 <li> 2295 <a
2296 href="/collections/kraft-innoboxes" 2297 class="site-nav__dropdown-link" 2298 data-meganav-type="child" 2299 2300 tabindex="-1"> 2301 Kraft Innoboxes 2302 </a> 2303 </li> 2304 2305 2306 2307 <li> 2308 <a 2309 href="/collections/liners-bags" 2310 class="site-nav__dropdown-link" 2311 data-meganav-type="child" 2312 2313 tabindex="-1"> 2314 Liners & Bags 2315 </a> 2316 </li> 2317 2318 2319 2320 <li> 2321 <a 2322 href="/collections/napkins" 2323 class="site-nav__dropdown-link" 2324 data-meganav-type="child" 2325 2326 tabindex="-1"> 2327 Napkins 2328 </a> 2329 </li> 2330 2331 2332 2333 <li> 2334 <a 2335 href="/collections/dinnerware" 2336 class="site-nav__dropdown-link" 2337 data-meganav-type="child" 2338 2339 tabindex="-1"> 2340 Plates and Bowls 2341 </a> 2342 </li> 2343 2344 2345 2346 <li> 2347 <a 2348 href="/collections/portion-cups-sugarcane-pla" 2349 class="site-nav__dropdown-link" 2350 data-meganav-type="child" 2351 2352 tabindex="-1"> 2353 Portion Cups - Sugarcane & PLA 2354 </a> 2355 </li> 2356 2357 2358 2359 <li> 2360 <a 2361 href="/collections/salad-bowls" 2362 class="site-nav__dropdown-link" 2363 data-meganav-type="child" 2364 2365 tabindex="-1"> 2366 Salad Bowls 2367 </a> 2368 </li> 2369 2370 2371 2372 <li> 2373 <a 2374 href="/collections/soup-cups" 2375 class="site-nav__dropdown-link" 2376 data-meganav-type="child" 2377 2378 tabindex="-1"> 2379 Soup Cups 2380 </a> 2381 </li> 2382 2383 2384 2385 <li> 2386 <a 2387 href="/collections/containers" 2388 class="site-nav__dropdown-link" 2389 data-meganav-type="child" 2390 2391 tabindex="-1"> 2392 Sugarcane Take Out Containers 2393 </a> 2394 </li> 2395 2396 2397 </ul> 2398 </li> 2399 2400 2401 2402 <li class="site-nav__item"> 2403 <a 2404 href="/collections/event-collection" 2405 class="site-nav__link" 2406 data-meganav-type="child" 2407 > 2408 Event Collection 2409 </a> 2410 </li> 2411 2412 2413 2414 <li class="site-nav__item"> 2415 <a 2416 href="/collections/nutrient-rich-compost" 2417 class="site-nav__link" 2418 data-meganav-type="child" 2419 > 2420 Compost 2421 </a> 2422 </li> 2423 2424 2425 2426 <li class="site-nav__item"> 2427 <a 2428 href="/collections/digester" 2429 class="site-nav__link" 2430 data-meganav-type="child" 2431 > 2432 Home Digesters 2433 </a> 2434 </li> 2435 2436 2437 2438 <li class="site-nav__item"> 2439 <a 2440 href="https://food-loops.myshopify.com/pages/contact-foodloops" 2441 class="site-nav__link" 2442 data-meganav-type="child" 2443 > 2444 Contact 2445 </a> 2446 </li> 2447 2448 2449 2450 <li class="site-nav__item"> 2451 <a 2452 href="/pages/manage-subscriptions" 2453 class="site-nav__link" 2454 data-meganav-type="child" 2455 > 2456 Manage Subscriptions 2457 </a> 2458 </li> 2459 2460 2461 2462 2463 2464 <li class="site-nav__item site-nav__expanded-item site-nav__item--compressed"> 2465 <a class="site-nav__link site-nav__link--icon" href="/account">
2466 <span class="icon-fallback-text"> 2467 <span class="icon icon-customer" aria-hidden="true"></span> 2468 <span class="fallback-text"> 2469 2470 Log In 2471 2472 </span> 2473 </span> 2474 </a> 2475 </li> 2476 2477 2478 2479 2480 2481 <li class="site-nav__item site-nav__item--compressed"> 2482 <a href="/search" class="site-nav__link site-nav__link--icon js-toggle-search-modal" data-mfp-src="#SearchModal"> 2483 <span class="icon-fallback-text"> 2484 <span class="icon icon-search" aria-hidden="true"></span> 2485 <span class="fallback-text">Search</span> 2486 </span> 2487 </a> 2488 </li> 2489 2490 2491 <li class="site-nav__item site-nav__item--compressed"> 2492 <a href="/cart" class="site-nav__link site-nav__link--icon cart-link js-drawer-open-button-right" aria-controls="CartDrawer"> 2493 <span class="icon-fallback-text"> 2494 <span class="icon icon-cart" aria-hidden="true"></span> 2495 <span class="fallback-text">Cart</span> 2496 </span> 2497 <span class="cart-link__bubble"></span> 2498 </a> 2499 </li> 2500 2501 </ul> 2502 <!-- //site-nav --> 2503 </nav> 2504 <div class="grid__item large--hide one-quarter"> 2505 <div class="site-nav--mobile text-right"> 2506 <a href="/cart" class="site-nav__link cart-link js-drawer-open-button-right" aria-controls="CartDrawer"> 2507 <span class="icon-fallback-text"> 2508 <span class="icon icon-cart" aria-hidden="true"></span> 2509 <span class="fallback-text">Cart</span> 2510 </span> 2511 <span class="cart-link__bubble"></span> 2512 </a> 2513 </div> 2514 </div> 2515 </div> 2516 2517 </div> 2518 </header> 2519 </div> 2520 </div> 2521</div> 2522 2523 2524 2525 2526</div> 2527 2528 <div id="CartDrawer" class="drawer drawer--right drawer--has-fixed-footer"> 2529 <div class="drawer__fixed-header"> 2530 <div class="drawer__header"> 2531 <div class="drawer__title">Your cart</div> 2532 <div class="drawer__close"> 2533 <button type="button" class="icon-fallback-text drawer__close-button js-drawer-close"> 2534 <span class="icon icon-x" aria-hidden="true"></span> 2535 <span class="fallback-text">Close Cart</span> 2536 </button> 2537 </div> 2538 </div> 2539 </div> 2540 <div class="drawer__inner"> 2541 <div id="CartContainer" class="drawer__cart"></div> 2542 </div> 2543 </div> 2544 2545 <div id="PageContainer" class="page-container"> 2546 2547 2548 2549 <main class="main-content" role="main"> 2550 2551 <div class="wrapper"> 2552 2553 2554 2555 <wlm class="wlm-content"> 2556 <!-- /templates/collection.liquid --> 2557 2558 2559<div id="shopify-section-collection-template" class="shopify-section"><!-- /templates/collection.liquid --> 2560<div id="CollectionSection" data-section-id="collection-template" data-section-type="collection-template" data-grid-type="grid"> 2561 2562 2563 2564 2565<header class="section-header text-center"> 2566 <h1>Compostable Products</h1> 2567 <hr class="hr--small"> 2568 2569 2570 <div class="grid--full collection-sorting"> 2571 2572 </div> 2573 2574 2575 2576 2577</header> 2578 2579 2580 <div class="grid-uniform"> 2581 2582 2583 2584 2585 <div class="grid__item text-center"> 2586 <p>Sorry, there are no products in this collection.</p> 2587 </div> 2588 2589 2590 </div> 2591 2592 2593 2594 2595 2596 2597</div> 2598 2599 2600 2601 2602</div> 2603 2604 </wlm> 2605 <div id="wlmpnf" style="display:none;"> 2606 <div class="page-width"> 2607 <div class="grid"> 2608 <div class="grid__item medium-up--five-sixths medium-up--push-one-twelfth"> 2609 <div class="section-header text-center"> 2610 <h1><span class="wlm-title-pnf"></span></h1> 2611 </div> 2612 2613 <div class="rte"> 2614 <div class="wlm-message-pnf"></div> 2615 </div> 2616 </div> 2617 </div> 2618 </div> 2619 </div> 2620 <div id="wlm-pwd-form" style="display: none;"> 2621 <div id="wlm-wrapper"> 2622 2623 <div class="wlm-form-holder"> 2624 <div id="wlm-pwd-error">Invalid Password</div> 2625 <input type="password" placeholder="Enter passcode" id="wlm-pwd" 2626 onkeypress='if( event.keyCode == 13 && typeof wlm == "object" && typeof wlm.unlockByAuth == "function" ) { event.preventDefault(); wlm.unlockByAuth(this); }' /> 2627 <a href="javascript:void(0);" id="wlm-pwd-form-button" 2628 onclick='if( typeof wlm == "object" && typeof wlm.unlockByAuth == "function" ) wlm.unlockByAuth(this);'> 2629 Enter 2630 </a> 2631 </div> 2632 </div> 2633 </div> 2634
2634<script type="text/javascript" id="wlm-helper"> 2635 if( typeof wlm == "object" ) wlm.toggleContent(true); 2636 </script>
2636 2637 2638 2639 </div> 2640 2641 </main> 2642 2643 <hr class="hr--large"> 2644 2645 <div id="shopify-section-footer" class="shopify-section"><footer class="site-footer small--text-center" role="contentinfo"> 2646 <div class="wrapper"> 2647 2648 <div class="grid-uniform"> 2649 2650 2651 2652 2653 2654 2655 2656 2657 2658 2659 2660 2661 2662 2663 2664 2665 2666 <div class="grid__item large--one-quarter medium--one-half"> 2667 <ul class="no-bullets site-footer__linklist"> 2668 2669 2670 2671 2672 2673 <li><a href="/search">Search</a></li> 2674 2675 2676 2677 2678 2679 2680 <li><a href="/pages/contact-foodloops">Contact Us</a></li> 2681 2682 2683 2684 2685 2686 2687 <li><a href="/blogs/news">Our Blog</a></li> 2688 2689 2690 2691 2692 2693 2694 <li><a href="/policies/privacy-policy">Privacy Policy</a></li> 2695 2696 2697 2698 2699 2700 </ul> 2701 </div> 2702 <div class="grid__item large--one-quarter medium--one-half"> 2703 <ul class="no-bullets site-footer__linklist"> 2704 2705 2706 <li><a href="/policies/refund-policy">Refund Policy</a></li> 2707 2708 2709 2710 2711 2712 2713 <li><a href="/policies/shipping-policy">Shipping Policy</a></li> 2714 2715 2716 2717 2718 2719 2720 <li><a href="/policies/terms-of-service">Terms of Service</a></li> 2721 2722 2723 2724 2725 2726 2727 <li><a href="/pages/billing-address">Billing Address</a></li> 2728 2729 2730 </ul> 2731 </div> 2732 2733 2734 2735 <div class="grid__item large--one-quarter medium--one-half"> 2736 <ul class="no-bullets social-icons"> 2737 2738 <li> 2739 <a href="https://www.facebook.com/FoodLoopsNWA" title="Food Loops on Facebook"> 2740 <span class="icon icon-facebook" aria-hidden="true"></span> 2741 Facebook 2742 </a> 2743 </li> 2744 2745 2746 2747 2748 <li> 2749 <a href="https://www.instagram.com/foodloopsnwa" title="Food Loops on Instagram"> 2750 <span class="icon icon-instagram" aria-hidden="true"></span> 2751 Instagram 2752 </a> 2753 </li> 2754 2755 2756 2757 2758 2759 2760 2761 </ul> 2762 </div> 2763 2764 2765 <div class="grid__item large--one-quarter medium--one-half large--text-right"> 2766 <p>© 2026, <a href="/" title="">Food Loops</a><br><a target="_blank" rel="nofollow" href="https://www.shopify.com?utm_campaign=poweredby&utm_medium=shopify&utm_source=onlinestore">Powered by Shopify</a></p></div> 2767 </div> 2768 2769 </div> 2770</footer> 2771 2772 2773 2774 2775</div> 2776 2777 </div> 2778 2779 2780
2780<script> 2781 2782 </script>
2782 2783 2784 2785 2786 <!-- /snippets/ajax-cart-template.liquid --> 2787 2788
2788<script id="CartTemplate" type="text/template"> 2789 2790 <form action="/cart" method="post" novalidate class="cart ajaxcart"> 2791 <div class="ajaxcart__inner ajaxcart__inner--has-fixed-footer"> 2792 {{#items}} 2793 <div class="ajaxcart__product"> 2794 <div class="ajaxcart__row" data-line="{{line}}"> 2795 <div class="grid"> 2796 <div class="grid__item one-quarter"> 2797 <a href="{{url}}" class="ajaxcart__product-image"><img src="{{img}}" alt="{{name}}"></a> 2798 </div> 2799 <div class="grid__item three-quarters"> 2800 <div class="ajaxcart__product-name--wrapper"> 2801 2802 <a href="{{url}}" class="ajaxcart__product-name">{{{name}}}</a> 2803 {{#if variation}} 2804 <span class="ajaxcart__product-meta">{{variation}}</span> 2805 {{/if}} 2806 2807 {{selling_plan_allocation_data}} 2808 2809 {{#properties}} 2810 {{#each this}} 2811 {{#if this}} 2812 <span class="ajaxcart__product-meta">{{@key}}: {{this}}</span> 2813 {{/if}} 2814 {{/each}} 2815 {{/properties}} 2816 2817 </div> 2818 2819 <div class="grid--full display-table"> 2820 <div class="grid__item display-table-cell one-half"> 2821 <div class="ajaxcart__qty"> 2822 <button type="button" class="ajaxcart__qty-adjust ajaxcart__qty--minus icon-fallback-text" data-id="{{key}}" data-qty="{{itemMinus}}" data-line="{{line}}" aria-label="Reduce item quantity by one"> 2823 <span class="icon icon-minus" aria-hidden="true"></span> 2824 <span class="fallback-text" aria-hidden="true">−</span> 2825 </button> 2826 <input type="text" name="updates[]" class="ajaxcart__qty-num" value="{{itemQty}}" min="0" data-id="{{key}}" data-line="{{line}}" aria-label="quantity" pattern="[0-9]*"> 2827 <button type="button" class="ajaxcart__qty-adjust ajaxcart__qty--plus icon-fallback-text" data-id="{{key}}" data-line="{{line}}" data-qty="{{itemAdd}}" aria-label="Increase item quantity by one"> 2828 <span class="icon icon-plus" aria-hidden="true"></span> 2829 <span class="fallback-text" aria-hidden="true">+</span> 2830 </button> 2831 </div> 2832 </div> 2833 <div class="grid__item display-table-cell one-half text-right"> 2834 {{#if discountsApplied}} 2835 <small class="ajaxcart__price--strikethrough">{{{price}}}</small> 2836 <span class="ajaxcart__price"> 2837 {{{discountedPrice}}} 2838 </span> 2839 {{else}} 2840 <span class="ajaxcart__price"> 2841 {{{price}}} 2842 </span> 2843 {{/if}} 2844 </div> 2845 </div> 2846 {{#if discountsApplied}} 2847 <div class="grid--full display-table"> 2848 <div class="grid__item text-right"> 2849 {{#each discounts}} 2850 <small class="ajaxcart__discount">{{this.title}}</small> 2851 {{/each}} 2852 </div> 2853 </div> 2854 {{/if}} 2855 </div> 2856 </div> 2857 </div> 2858 </div> 2859 {{/items}} 2860 2861 2862 <div> 2863 <label for="CartSpecialInstructions" class="ajaxcart__note">Special instructions for seller</label> 2864 <textarea name="note" class="input-full" id="CartSpecialInstructions">{{note}}</textarea> 2865 </div> 2866 2867 </div> 2868 <div class="ajaxcart__footer ajaxcart__footer--fixed"> 2869 <div class="grid--full"> 2870 <div class="grid__item two-thirds"> 2871 <p class="ajaxcart__subtotal">Subtotal</p> 2872 </div> 2873 <div class="grid__item one-third text-right"> 2874 <p class="ajaxcart__subtotal">{{{totalPrice}}}</p> 2875 </div> 2876 </div> 2877 {{#if totalCartDiscount}} 2878 <p class="ajaxcart__savings text-center">{{{totalCartDiscount}}}</p> 2879 {{/if}} 2880 2881 <p class="ajaxcart__policies"> 2882Taxes and <a href="/policies/shipping-policy">shipping</a> calculated at checkout 2883 2884 </p> 2885 <button type="submit" class="btn--secondary btn--full cart__checkout" name="checkout"> 2886 Check Out <span class="icon icon-arrow-right" aria-hidden="true"></span> 2887 </button> 2888 </div> 2889 </form> 2890 2891 </script>
2891 2892
2892<script id="AjaxQty" type="text/template"> 2893 2894 <div class="ajaxcart__qty"> 2895 <button type="button" class="ajaxcart__qty-adjust ajaxcart__qty--minus icon-fallback-text" data-id="{{key}}" data-qty="{{itemMinus}}" aria-label="Reduce item quantity by one"> 2896 <span class="icon icon-minus" aria-hidden="true"></span> 2897 <span class="fallback-text" aria-hidden="true">−</span> 2898 </button> 2899 <input type="text" class="ajaxcart__qty-num" value="{{itemQty}}" min="0" data-id="{{key}}" aria-label="quantity" pattern="[0-9]*"> 2900 <button type="button" class="ajaxcart__qty-adjust ajaxcart__qty--plus icon-fallback-text" data-id="{{key}}" data-qty="{{itemAdd}}" aria-label="Increase item quantity by one"> 2901 <span class="icon icon-plus" aria-hidden="true"></span> 2902 <span class="fallback-text" aria-hidden="true">+</span> 2903 </button> 2904 </div> 2905 2906 </script>
2906 2907
2907<script id="JsQty" type="text/template"> 2908 2909 <div class="js-qty"> 2910 <button type="button" class="js-qty__adjust js-qty__adjust--minus icon-fallback-text" data-id="{{key}}" data-qty="{{itemMinus}}" aria-label="Reduce item quantity by one"> 2911 <span class="icon icon-minus" aria-hidden="true"></span> 2912 <span class="fallback-text" aria-hidden="true">−</span> 2913 </button> 2914 <input type="text" class="js-qty__num" value="{{itemQty}}" min="1" data-id="{{key}}" aria-label="quantity" pattern="[0-9]*" name="{{inputName}}" id="{{inputId}}"> 2915 <button type="button" class="js-qty__adjust js-qty__adjust--plus icon-fallback-text" data-id="{{key}}" data-qty="{{itemAdd}}" aria-label="Increase item quantity by one"> 2916 <span class="icon icon-plus" aria-hidden="true"></span> 2917 <span class="fallback-text" aria-hidden="true">+</span> 2918 </button> 2919 </div> 2920 2921 </script>
2921 2922 2923 2924 2925 2926 2927 <div id="SearchModal" class="mfp-hide"> 2928 <!-- /snippets/search-bar.liquid --> 2929 2930 2931 2932 2933 2934<form action="/search" method="get" class="input-group search-bar search-bar--modal" role="search"> 2935 2936 <input type="search" name="q" value="" placeholder="Search our store" class="input-group-field" aria-label="Search our store"> 2937 <span class="input-group-btn"> 2938 <button type="submit" class="btn icon-fallback-text"> 2939 <span class="icon icon-search" aria-hidden="true"></span> 2940 <span class="fallback-text">Search</span> 2941 </button> 2942 </span> 2943</form> 2944 2945 </div> 2946 <ul hidden> 2947 <li id="a11y-refresh-page-message">choosing a selection results in a full page refresh</li> 2948 </ul> 2949 2950 2951 2952 2953 2954 2955 2956 2957<!-- spurit_sri-added -->
2958<script> 2959 if(typeof(Spurit) === 'undefined'){ 2960 var Spurit = {}; 2961 } 2962 if(!Spurit.recurringInvoices){ 2963 Spurit.recurringInvoices = {}; 2964 } 2965 if(!Spurit.recurringInvoices.snippet){ 2966 Spurit.recurringInvoices.snippet = {}; 2967 } 2968 Spurit.recurringInvoices.snippet.appId = '46'; 2969 Spurit.recurringInvoices.snippet.shopHash = 'f226f2137f0eda9242140ae8d98bae97'; 2970 Spurit.recurringInvoices.snippet.shopDomain = 'food-loops.myshopify.com'; 2971 Spurit.recurringInvoices.snippet.folderStore = 'https://s3.amazonaws.com/shopify-apps/recurring-invoices/store/'; 2972 Spurit.recurringInvoices.snippet.folderCss = 'https://s3.amazonaws.com/shopify-apps/recurring-invoices/css/'; 2973 Spurit.recurringInvoices.snippet.moneyFormat = '${{amount}}'; 2974 2975 if (typeof(Spurit.altCurrencies) === 'undefined') { 2976 Spurit.altCurrencies = { 2977 shop_currency: 'USD', 2978 cart: {"note":null,"attributes":{},"original_total_price":0,"total_price":0,"total_discount":0,"total_weight":0.0,"item_count":0,"items":[],"requires_shipping":false,"currency":"USD","items_subtotal_price":0,"cart_level_discount_applications":[],"checkout_charge_amount":0} 2979 }; 2980 } 2981</script>
vendor: 1 bytes, line 2981
2981
2982<script src="https://s3.amazonaws.com/shopify-apps/recurring-invoices/js/common.js"></script>
2982 2983<!-- /spurit_sri-added --> 2984 2985 2986 2987<meta id="th_shop_url" content="foodloops.net"> 2988<link href="//fonts.googleapis.com/css?family=Poppins:300,300i,400,400i,500,500i,600,600i,700,700i,800,800i,900,900i" rel="stylesheet" type="text/css" media="all" /> 2989<link href="//thimatic-apps.com/product_review/theme_files/wc-review.css?v=1.21" rel="stylesheet" type="text/css" media="all" />
2990<script src="//thimatic-apps.com/product_review/theme_files/wc-product-review.js?v=1.21" type="text/javascript"></script>
2990<!-- WPD Start --> 2991 2992 2993 2994 2995 <!-- WPD End --> 2996
2996<script> 2997 window.MAKEBECOOL_BUNDLES = window.MAKEBECOOL_BUNDLES || {} 2998 MAKEBECOOL_BUNDLES.moneyFormat = "${{amount}}" 2999 MAKEBECOOL_BUNDLES.cart = {"note":null,"attributes":{},"original_total_price":0,"total_price":0,"total_discount":0,"total_weight":0.0,"item_count":0,"items":[],"requires_shipping":false,"currency":"USD","items_subtotal_price":0,"cart_level_discount_applications":[],"checkout_charge_amount":0} 3000 MAKEBECOOL_BUNDLES.template = "collection" 3001 MAKEBECOOL_BUNDLES.product = null 3002 MAKEBECOOL_BUNDLES.assetUrl = '//foodloops.net/cdn/shop/t/23/assets/filename.png?v=4139' 3003 3004 3005</script>
vendor: 1 bytes, line 3005
3005
3006<script src="https://apps-bundles.makebecool.com/js/mbcBundlesApp.js?shop=food-loops.myshopify.com" async></script>
3006 3007 3008
3008<script src="//foodloops.net/cdn/shop/t/23/assets/bsub.js?v=65887071011359220661746563006" type="text/javascript"></script>
3008 3009 <link href="//foodloops.net/cdn/shop/t/23/assets/bsub.css?v=80729355970590538871746563001" rel="stylesheet" type="text/css" media="all" />
3010<script src="https://cdn.shopify.com/storefront/standard-actions.js" type="module" data-source-attribution="shopify.standard_actions"></script>
3010 3011</body> 3012 3013</html> 3014 3015
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.