1<!doctype html> 2<html class="no-js no-touch" lang="en"> 3 <head>
3<script data-source-attribution="shopify.event_observer.bootstrap"> 4(function(){let e=navigator,t=`prototype`,n=`sendBeacon`,r=e[n],i=fetch,a=XMLHttpRequest[t],{open:o,send:s}=a,c=`EventListener`,l=`add${c}`,u=`remove${c}`,d=EventTarget[t],f=d[l],p=d[u],m=e=>Error((e=document.currentScript)&&[e?.src,e?.id||e?.dataset?.sourceAttribution]),h=(e=[],t=0)=>(e.p=n=>e[t++%1e3]=n,[e,t=>(e.forEach(e.p=t),e.length=0)]),[g,_]=h(),[v,y]=h(),b,x=new WeakMap,S=e=>e&&g.p([e,b||[m()]]);d[l]=function(e,t,n){let r=this,i=t?.handleEvent||t,a=x.get(t),o=m();i?.call&&!a&&x.set(t,a=function(e){b=[o,e.type];try{i.call(t==i?this:t,e)}finally{b=null}}),v.p([e,o,a,r?.tagName||r+``,r?.id]),f.call(r,e,a||t,n)},d[u]=function(e,t,n){p.call(this,e,x.get(t)||t,n)},a.open=function(e,t){x.set(this,[t+``,e]),o.apply(this,arguments)},a.send=function(e){S(x.get(this)),s.call(this,e)},fetch=(e,t)=>(S([(e?.url||e)+``,t?.method]),i(e,t)),e[n]=(t,n)=>(S([t+``,``]),r.call(e,t,n)),setTimeout(()=>import("//walkerengineering.co/cdn/shopifycloud/storefront/assets/storefront/event_observer_reporter-ed358274.js").then(e=>e.$(_,y,f,i,`75266359613`)))})(); 5//# sourceURL=event-observer-collector.js 6</script>
6 7 8
8<script> 9 window.Store = window.Store || {}; 10 window.Store.id = 75266359613; 11 </script>
11 12 <meta charset="utf-8"> 13 <meta http-equiv="x-ua-compatible" content="IE=edge"> 14 15 <link rel="preconnect" href="https://cdn.shopify.com"> 16 <link rel="preconnect" href="https://fonts.shopifycdn.com"> 17 <link rel="preconnect" href="https://v.shopify.com"> 18 <link rel="preconnect" href="https://cdn.shopifycloud.com"> 19 20 <title>Shop Walker AIRSEP® â Walker Engineering Enterprises</title> 21 22 23 24 25 26 <link rel="shortcut icon" type="image/png" href="//walkerengineering.co/cdn/shop/t/3/assets/WE_Favicon-v3_small.png?v=179895633577425385511688739897"> 27 28 29 <link rel="canonical" href="https://walkerengineering.co/pages/airsep" /> 30 31 32 <meta name="viewport" content="width=device-width"> 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51<meta property="og:site_name" content="Walker Engineering Enterprises"> 52<meta property="og:url" content="https://walkerengineering.co/pages/airsep"> 53<meta property="og:title" content="Shop Walker AIRSEP®"> 54<meta property="og:type" content="website"> 55<meta property="og:description" content="Walker Engineering is the home of Walker Airsep and Walker Performance Filtration. 56All products designed, engineered and manufactured in USA. "> 57 58 59 60 61 62 63 64 65 66 67 <meta 68 property="og:image" 69 content="https://walkerengineering.co/cdn/shop/files/Walker_Engineering_9_2557x630.png?v=1699549793" 70 /> 71 <meta 72 property="og:image:secure_url" 73 content="https://walkerengineering.co/cdn/shop/files/Walker_Engineering_9_2557x630.png?v=1699549793" 74 /> 75 <meta property="og:image:width" content="2557" /> 76 <meta property="og:image:height" content="630" /> 77 78 79 <meta property="og:image:alt" content="Social media image" /> 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97<meta name="twitter:title" content="Shop Walker AIRSEP®"> 98<meta name="twitter:description" content="Walker Engineering is the home of Walker Airsep and Walker Performance Filtration. 99All products designed, engineered and manufactured in USA. "> 100 101 102 103 104 105 106 107 <meta name="twitter:card" content="summary_large_image"> 108 109 110 <meta 111 property="twitter:image" 112 content="https://walkerengineering.co/cdn/shop/files/Walker_Engineering_9_1200x600_crop_center.png?v=1699549793" 113 /> 114 <meta property="twitter:image:width" content="1200" /> 115 <meta property="twitter:image:height" content="600" /> 116 117 118 <meta property="twitter:image:alt" content="Social media image" /> 119 120 121 122 123 <link 124 rel="preload" 125 href="//walkerengineering.co/cdn/fonts/nunito_sans/nunitosans_n7.25d963ed46da26098ebeab731e90d8802d989fa5.woff2" 126 as="font" 127 crossorigin="anonymous"> 128 <link 129 rel="preload" 130 as="style" 131 href="//walkerengineering.co/cdn/shop/t/3/assets/theme.css?v=38850419095854054801787080067"> 132 133
133<script>window.performance && window.performance.mark && window.performance.mark('shopify.content_for_header.start');</script>
133<meta id="shopify-digital-wallet" name="shopify-digital-wallet" content="/75266359613/digital_wallets/dialog"> 134<link rel="ucp" href="/.well-known/ucp" version="2026-08-25">
134<script async="async" src="/checkouts/internal/preloads.js?locale=en-US"></script>
134 135<link rel="preconnect" href="https://shop.app" crossorigin="anonymous">
136<script async="async" src="https://shop.app/checkouts/internal/preloads.js?locale=en-US&shop_id=75266359613" crossorigin="anonymous"></script>
vendor: 1 bytes, line 136
136
137<script id="apple-pay-shop-capabilities" type="application/json">{"shopId":75266359613,"countryCode":"US","currencyCode":"USD","merchantCapabilities":["supports3DS"],"merchantId":"gid:\/\/shopify\/Shop\/75266359613","merchantName":"Walker Engineering Enterprises","requiredBillingContactFields":["postalAddress","email"],"requiredShippingContactFields":["postalAddress","email"],"shippingType":"shipping","supportedNetworks":["visa","masterCard","discover","amex","elo","jcb"],"total":{"type":"pending","label":"Walker Engineering Enterprises","amount":"1.00"},"shopifyPaymentsEnabled":true,"supportsSubscriptions":true}</script>
vendor: 1 bytes, line 137
137
138<script id="shopify-features" type="application/json">{"accessToken":"27e32c75c855b11bf176a7a393086a07","betas":["rich-media-storefront-analytics"],"domain":"walkerengineering.co","predictiveSearch":true,"shopId":75266359613,"locale":"en"}</script>
vendor: 1 bytes, line 138
138
139<script>var Shopify = Shopify || {}; 140Shopify.shop = "walker-engineering-group.myshopify.com"; 141Shopify.locale = "en"; 142Shopify.currency = {"active":"USD","rate":"1.0"}; 143Shopify.country = "US"; 144Shopify.theme = {"name":"Walker Engineering","id":149380956477,"schema_name":"Empire","schema_version":"9.0.0","theme_store_id":838,"role":"main"}; 145Shopify.theme.handle = "null"; 146Shopify.theme.style = {"id":null,"handle":null}; 147Shopify.cdnHost = "walkerengineering.co/cdn"; 148Shopify.routes = Shopify.routes || {}; 149Shopify.routes.root = "/"; 150Shopify.shopJsCdnBaseUrl = "https://cdn.shopify.com/shopifycloud/shop-js"; 151Shopify.SignInWithShop = Shopify.SignInWithShop || {}; 152Shopify.SignInWithShop.User = Shopify.SignInWithShop.User || {}; 153Shopify.SignInWithShop.User.recognized = false;</script>
vendor: 1 bytes, line 153
153
154<script type="module">!function(o){(o.Shopify=o.Shopify||{}).modules=!0}(window);</script>
vendor: 1 bytes, line 154
154
155<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 155
155
156<script> 157 window.ShopifyPay = window.ShopifyPay || {}; 158 window.ShopifyPay.apiHost = "shop.app\/pay"; 159 window.ShopifyPay.redirectState = null; 160</script>
vendor: 1 bytes, line 160
160
161<script> 162 window.Shopify = window.Shopify || {}; 163 window.Shopify.SignInWithShop = window.Shopify.SignInWithShop || {}; 164 window.Shopify.SignInWithShop.assetMetrics = { sampleRate: 0.25 }; 165 window.Shopify.SignInWithShop.eligible = true; 166</script>
vendor: 1 bytes, line 166
166
167<script id="shop-js-analytics" type="application/json">{"pageType":"page"}</script>
vendor: 1 bytes, line 167
167
168<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 168
168
169<script type="module"> 170 await import("https://cdn.shopify.com/shopifycloud/shop-js/modules/v2/loader.init-shop-cart-sync.en.esm.js"); 171 172 window.Shopify.SignInWithShop?.initShopCartSync?.({"fedCMEnabled":true,"windoidEnabled":true}); 173 174</script>
vendor: 1 bytes, line 174
174
175<script> 176 window.Shopify = window.Shopify || {}; 177 if (!window.Shopify.featureAssets) window.Shopify.featureAssets = {}; 178 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"]}; 179</script>
vendor: 1 bytes, line 179
179
180<script>(function() { 181 var isLoaded = false; 182 function asyncLoad() { 183 if (isLoaded) return; 184 isLoaded = true; 185 var urls = ["\/\/cdn.shopify.com\/proxy\/160d71d7603ab2469e73dd94f9567f6b2a8d92aa11806f6fd5b6054b3510a79a\/shopify.livechatinc.com\/api\/v2\/script\/a863bfd3-4470-4ef9-8efa-2c063d6b4ca1\/widget.js?shop=walker-engineering-group.myshopify.com\u0026sp-cache-control=cHVibGljLCBtYXgtYWdlPTkwMA"]; 186 for (var i = 0; i < urls.length; i++) { 187 var s = document.createElement('script'); 188 s.type = 'text/javascript'; 189 s.async = true; 190 s.src = urls[i]; 191 var x = document.getElementsByTagName('script')[0]; 192 x.parentNode.insertBefore(s, x); 193 } 194 }; 195 if(window.attachEvent) { 196 window.attachEvent('onload', asyncLoad); 197 } else { 198 window.addEventListener('load', asyncLoad, false); 199 } 200})();</script>
vendor: 1 bytes, line 200
200
201<script id="__st">var __st={"a":75266359613,"offset":-25200,"reqid":"0199b1a5-3674-492e-8ebd-a12311caa0f7-1791586254","pageurl":"walkerengineering.co\/pages\/airsep","s":"pages-122369605949","u":"72948f7cef0f","p":"page","rtyp":"page","rid":122369605949};</script>
vendor: 1 bytes, line 201
201
202<script>window.ShopifyPaypalV4VisibilityTracking = true;</script>
vendor: 1 bytes, line 202
202
203<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 203
203
204<script integrity="sha256-JjoPp5ZfB1sSAs5SQaol1x1GgvveM+BgmRzyDexInEQ=" data-source-attribution="shopify.loadfeatures" defer="defer" src="//walkerengineering.co/cdn/shopifycloud/storefront/assets/storefront/load_feature-1bd60354.js" crossorigin="anonymous"></script>
vendor: 1 bytes, line 204
204
205<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 = "//walkerengineering.co/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>
205<script crossorigin="anonymous" defer="defer" src="//walkerengineering.co/cdn/shopifycloud/storefront/assets/shopify_pay/storefront-f0e26bdf.js?v=20250812"></script>
vendor: 1 bytes, line 205
205
206<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 206
206
207<script> 208 window.Shopify = window.Shopify || {}; 209 window.Shopify.MCP = window.Shopify.MCP || {}; 210 window.Shopify.MCP.enabled = true; 211 window.Shopify.MCP.shop = "walker-engineering-group.myshopify.com"; 212 window.Shopify.MCP.mcpEndpoint = "https:\/\/walkerengineering.co\/api\/mcp"; 213 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"]}}]; 214</script>
vendor: 1 bytes, line 214
214
215<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("\/\/walkerengineering.co\/cdn\/shopifycloud\/storefront\/assets\/storefront\/webmcp-f427de6a.js","sha256-ypGF+5vIq4Psw4WG7nsVtdd\/TCfsJWnrNuACdqLCElY=");})(); 216</script>
vendor: 1 bytes, line 216
216
217<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://walkerengineering.co/cdn/shopifycloud/portable-wallets/latest/portable-wallets.en.js",t.type="module",document.head.appendChild(t)}}; 218</script>
vendor: 1 bytes, line 218
218
219<script data-source-attribution="shopify.dynamic_checkout.buyer_consent"> 220 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); 221</script>
vendor: 1 bytes, line 221
221
222<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})}})); 223</script>
223 224<link id="shopify-accelerated-checkout-styles" rel="stylesheet" media="screen" href="https://walkerengineering.co/cdn/shopifycloud/portable-wallets/latest/accelerated-checkout-backwards-compat.css" crossorigin="anonymous"> 225<style id="shopify-accelerated-checkout-cart"> 226 #shopify-buyer-consent { 227 margin-top: 1em; 228 display: inline-block; 229 width: 100%; 230} 231 232#shopify-buyer-consent.hidden { 233 display: none; 234} 235 236#shopify-subscription-policy-button { 237 background: none; 238 border: none; 239 padding: 0; 240 text-decoration: underline; 241 font-size: inherit; 242 cursor: pointer; 243} 244 245#shopify-subscription-policy-button::before { 246 box-shadow: none; 247} 248 249 </style> 250
251<script id="shopify-cfh-end">window.performance && window.performance.mark && window.performance.mark('shopify.content_for_header.end');</script>
251 252 253 <base href="/"> 254 255 <!-- WEE Custom Elements | CSS --> 256 <link rel="stylesheet" href="https://cdn.shopify.com/s/files/1/0752/6635/9613/files/walker-engineering.css?v=1696965663"> 257 258 <!-- WEE Custom Elements | JS --> 259
259<script src="https://cdn.shopify.com/s/files/1/0752/6635/9613/files/walker-engineering.js?v=1696965604"></script>
259 260 261 <!-- Empire Theme CSS --> 262 <link href="//walkerengineering.co/cdn/shop/t/3/assets/theme.css?v=38850419095854054801787080067" rel="stylesheet" type="text/css" media="all" /> 263 264 <!-- Custom Walker Theme CSS --> 265 <link href="//walkerengineering.co/cdn/shop/t/3/assets/we-theme.css?v=90328815194256822831698869928" rel="stylesheet" type="text/css" media="all" /> 266 267 <!-- jQuery | JS --> 268
268<script src="https://ajax.googleapis.com/ajax/libs/jquery/3.6.4/jquery.min.js"></script>
268 269 270 <!-- Flickity | CSS --> 271 272 <link rel="stylesheet" href="//walkerengineering.co/cdn/shop/t/3/assets/flickity.css?v=97171539250019436281688729839"> 273 274 <!-- Flickity | JS --> 275 276
276<script src="//walkerengineering.co/cdn/shop/t/3/assets/flickity.js?v=114460508543641870001688729839"> </script>
276 277 278 <!-- Vue | JS --> 279
279<script src="https://unpkg.com/vue@3/dist/vue.global.js"></script>
279 280 281 <!-- AddToAny | JS --> 282
282<script src="https://static.addtoany.com/menu/page.js"></script>
282 283 284 <!-- Moment | JS --> 285
285<script 286 src="https://cdnjs.cloudflare.com/ajax/libs/moment.js/2.29.4/moment.min.js" 287 integrity="sha512-CryKbMe7sjSCDPl18jtJI5DR5jtkUWxPXWaLCst6QjH8wxDexfRJic2WRmRXmstr2Y8SxDDWuBO6CQC6IE4KTA==" 288 crossorigin="anonymous" 289 referrerpolicy="no-referrer"> 290 </script>
290 291 292 293
293<script> 294 window.Theme = window.Theme || {}; 295 window.Theme.version = '9.0.0'; 296 window.Theme.name = 'Empire'; 297 window.Theme.routes = { 298 "root_url": "/", 299 "account_url": "/account", 300 "account_login_url": "/account/login", 301 "account_logout_url": "/account/logout", 302 "account_register_url": "/account/register", 303 "account_addresses_url": "/account/addresses", 304 "collections_url": "/collections", 305 "all_products_collection_url": "/collections/all", 306 "search_url": "/search", 307 "predictive_search_url": "/search/suggest", 308 "cart_url": "/cart", 309 "cart_add_url": "/cart/add", 310 "cart_change_url": "/cart/change", 311 "cart_clear_url": "/cart/clear", 312 "product_recommendations_url": "/recommendations/products" 313 }; 314 </script>
314 315 316 317 <link href="https://monorail-edge.shopifysvc.com" rel="dns-prefetch">
318<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: 75266359613,url: window.location.href,navigation_start,duration: currentMs - navigation_start,session_token,page_type: "page"};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 318
318
319<script> 320 window.__TREKKIE_SHIM_QUEUE = window.__TREKKIE_SHIM_QUEUE || []; 321</script>
vendor: 1 bytes, line 321
321
322<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}
322).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: 75266359613,storefrontBaseUrl: "https://walkerengineering.co",extensionsBaseUrl: "https://extensions.shopifycdn.com/cdn/shopifycloud/web-pixels-manager",monorailEndpoint: "https://walkerengineering.co/.well-known/shopify/monorail/unstable/produce_batch",surface: "storefront-renderer",enabledBetaFlags: ["4c64608a","16072cab"],webPixelsConfigList: [{"id":"1657307453","configuration":"{\"storeUuid\":\"a863bfd3-4470-4ef9-8efa-2c063d6b4ca1\"}","eventPayloadVersion":"v1","runtimeContext":"STRICT","scriptVersion":"3238ef9155de00529c40d347490289c4","type":"APP","apiClientId":1806141,"privacyPurposes":["ANALYTICS","MARKETING","SALE_OF_DATA"],"dataSharingAdjustments":{"protectedCustomerApprovalScopes":["read_customer_address","read_customer_email","read_customer_name","read_customer_personal_data","read_customer_phone"],"dataSharingControls":["share_all_events"]},"dataSharingState":"optimized"}
322,{"id":"140902717","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":"Walker Engineering Enterprises","paymentSettings":{"currencyCode":"USD"},"myshopifyDomain":"walker-engineering-group.myshopify.com","countryCode":"US","storefrontUrl":"https:\/\/walkerengineering.co"},"customer":null,"cart":null,"checkout":null,"productVariants":[],"products":[],"purchasingCompany":null},},"https://walkerengineering.co/cdn","7ec887c8w14f9f074p854094e1m1370c602",{"modern":"","legacy":""},{"trekkieShim":true,"agentContext":true,"apiClientId":"580111","facebookCapiEnabled":"false","themeId":"149380956477","themeStoreId":"838","themePublished":"true","eventMetadataId":"61a8819d-520e-4c87-9976-77089eed4a4b","pageType":"page","resourceId":"122369605949","shopId":"75266359613","storefrontBaseUrl":"https:\/\/walkerengineering.co","extensionBaseUrl":"https:\/\/extensions.shopifycdn.com\/cdn\/shopifycloud\/web-pixels-manager","surface":"storefront-renderer","enabledBetaFlags":"[\"4c64608a\", \"16072cab\"]","isMerchantRequest":"false","hashVersion":"7ec887c8w14f9f074p854094e1m1370c602","publish":"custom","events":"[[\"page_viewed\",{}]]"});})();</script>
322<script> 323 window.ShopifyAnalytics = window.ShopifyAnalytics || {}; 324 window.ShopifyAnalytics.meta = window.ShopifyAnalytics.meta || {}; 325 window.ShopifyAnalytics.meta.currency = 'USD'; 326 var meta = {"page":{"pageType":"page","resourceType":"page","resourceId":122369605949,"requestId":"0199b1a5-3674-492e-8ebd-a12311caa0f7-1791586254"}}; 327 for (var attr in meta) { 328 window.ShopifyAnalytics.meta[attr] = meta[attr]; 329 } 330</script>
vendor: 1 bytes, line 330
330
331<script class="analytics"> 332 (function () { 333 var customDocumentWrite = function(content) { 334 var jquery = null; 335 336 if (window.jQuery) { 337 jquery = window.jQuery; 338 } else if (window.Checkout && window.Checkout.$) { 339 jquery = window.Checkout.$; 340 } 341 342 if (jquery) { 343 jquery('body').append(content); 344 } 345 }; 346 347 var hasLoggedConversion = function(token) { 348 if (token) { 349 return document.cookie.indexOf('loggedConversion=' + token) !== -1; 350 } 351 return false; 352 } 353 354 var setCookieIfConversion = function(token) { 355 if (token) { 356 var twoMonthsFromNow = new Date(Date.now()); 357 twoMonthsFromNow.setMonth(twoMonthsFromNow.getMonth() + 2); 358 359 document.cookie = 'loggedConversion=' + token + '; expires=' + twoMonthsFromNow; 360 } 361 } 362 363 var trekkie = window.ShopifyAnalytics.lib = window.trekkie = window.trekkie || []; 364 window.ShopifyAnalytics.lib.trekkie = window.trekkie; 365 if (trekkie.integrations) { 366 return; 367 } 368 trekkie.methods = [ 369 'identify', 370 'page', 371 'ready', 372 'track', 373 'trackForm', 374 'trackLink' 375 ]; 376 trekkie.factory = function(method) { 377 return function() { 378 var args = Array.prototype.slice.call(arguments); 379 args.unshift(method); 380 trekkie.push(args); 381 if (method == 'track' || method == 'page') { 382 var pageUrl; 383 try { 384 pageUrl = window.location.href; 385 } catch (e) {} 386 var pageReferrer; 387 try { 388 pageReferrer = document.referrer; 389 } catch (e) {} 390 try { 391 if (window.__TREKKIE_SHIM_QUEUE == null) { 392 window.__TREKKIE_SHIM_QUEUE = []; 393 } 394 window.__TREKKIE_SHIM_QUEUE.push({ 395 from: 'trekkie-stub', 396 method: method, 397 args: args.slice(1), 398 pageContext: { 399 url: pageUrl, 400 referrer: pageReferrer 401 } 402 }); 403 } catch (e) { 404 // no-op 405 } 406 } 407 return trekkie; 408 }; 409 }; 410 for (var i = 0; i < trekkie.methods.length; i++) { 411 var key = trekkie.methods[i]; 412 trekkie[key] = trekkie.factory(key); 413 } 414 trekkie.load = function(config) { 415 trekkie.config = config || {}; 416 trekkie.config.initialDocumentCookie = document.cookie; 417 var first = document.getElementsByTagName('script')[0]; 418var script = document.createElement('script'); 419script.type = 'text/javascript'; 420script.onerror = function(e) { 421 var scriptFallback = document.createElement('script'); 422 scriptFallback.type = 'text/javascript'; 423 scriptFallback.onerror = function(error) { 424 var Monorail = { 425 produce: function produce(monorailDomain, schemaId, payload) { 426 var currentMs = new Date().getTime(); 427 var event = { 428 schema_id: schemaId, 429 payload: payload, 430 metadata: { 431 event_created_at_ms: currentMs, 432 event_sent_at_ms: currentMs 433 } 434 }; 435 return Monorail.sendRequest("https://" + monorailDomain + "/v1/produce", JSON.stringify(event)); 436 }, 437 sendRequest: function sendRequest(endpointUrl, payload) { 438 // Try the sendBeacon API 439 if (window && window.navigator && typeof window.navigator.sendBeacon === 'function' && typeof window.Blob === 'function' && !Monorail.isIos12()) { 440 var blobData = new window.Blob([payload], { 441 type: 'text/plain' 442 }); 443 444 if (window.navigator.sendBeacon(endpointUrl, blobData)) { 445 return true; 446 } // sendBeacon was not successful 447 448 } // XHR beacon 449 450 var xhr = new XMLHttpRequest(); 451 452 try { 453 xhr.open('POST', endpointUrl); 454 xhr.setRequestHeader('Content-Type', 'text/plain'); 455 xhr.send(payload); 456 } catch (e) { 457 console.log(e); 458 } 459 460 return false; 461 }, 462 isIos12: function isIos12() { 463 return window.navigator.userAgent.lastIndexOf('iPhone; CPU iPhone OS 12_') !== -1 || window.navigator.userAgent.lastIndexOf('iPad; CPU OS 12_') !== -1; 464 } 465 }; 466 Monorail.produce('monorail-edge.shopifysvc.com', 467 'trekkie_storefront_load_errors/1.1', 468 {shop_id: 75266359613, 469 theme_id: 149380956477, 470 app_name: "storefront", 471 context_url: window.location.href, 472 source_url: "//walkerengineering.co/cdn/s/trekkie.storefront.51e69540e15035ae012ec8cc42e8f9cd792233a0.min.js"}); 473 474 }; 475 scriptFallback.async = true; 476 scriptFallback.src = '//walkerengineering.co/cdn/s/trekkie.storefront.51e69540e15035ae012ec8cc42e8f9cd792233a0.min.js'; 477 first.parentNode.insertBefore(scriptFallback, first); 478}; 479script.async = true; 480script.src = '//walkerengineering.co/cdn/s/trekkie.storefront.51e69540e15035ae012ec8cc42e8f9cd792233a0.min.js'; 481first.parentNode.insertBefore(script, first); 482 483 }; 484 trekkie.load( 485 {"Trekkie":{"appName":"storefront","development":false,"defaultAttributes":{"shopId":75266359613,"isMerchantRequest":null,"themeId":149380956477,"themeCityHash":"6846141463861659198","contentLanguage":"en","currency":"USD","eventMetadataId":"61a8819d-520e-4c87-9976-77089eed4a4b"},"isServerSideCookieWritingEnabled":true,"monorailRegion":"shop_domain","enabledBetaFlags":["764d78cb","4c64608a"]},"Session Attribution":{},"S2S":{"facebookCapiEnabled":false,"source":"trekkie-storefront-renderer","apiClientId":580111}} 486 ); 487 488 var loaded = false;
489 trekkie.ready(function() { 490 if (loaded) return; 491 loaded = true; 492 493 window.ShopifyAnalytics.lib = window.trekkie; 494 495 var originalDocumentWrite = document.write; 496 document.write = customDocumentWrite; 497 try { window.ShopifyAnalytics.merchantGoogleAnalytics.call(this); } catch(error) {}; 498 document.write = originalDocumentWrite; 499 500 var match = window.location.pathname.match(/checkouts\/(.+)\/(thank_you|post_purchase)/) 501 var token = match? match[1]: undefined; 502 if (!hasLoggedConversion(token)) { 503 setCookieIfConversion(token); 504 505 } 506 }); 507 508 window.ShopifyAnalytics.lib.page(null,{"pageType":"page","resourceType":"page","resourceId":122369605949,"requestId":"0199b1a5-3674-492e-8ebd-a12311caa0f7-1791586254","shopifyEmitted":true}); 509 510 var eventsListenerScript = document.createElement('script'); 511 eventsListenerScript.async = true; 512 eventsListenerScript.src = "//walkerengineering.co/cdn/shopifycloud/storefront/assets/shop_events_listener-4e26a9ce.js"; 513 document.getElementsByTagName('head')[0].appendChild(eventsListenerScript); 514})();</script>
514 515
515<script> 516 if (!window.ga || (window.ga && typeof window.ga !== 'function')) { 517 window.ga = function ga() { 518 (window.ga.q = window.ga.q || []).push(arguments); 519 if (window.Shopify && window.Shopify.analytics && typeof window.Shopify.analytics.publish === 'function') { 520 window.Shopify.analytics.publish("ga_stub_called", {}, {sendTo: "google_osp_migration"}); 521 } 522 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."); 523 }; 524 if (window.Shopify && window.Shopify.analytics && typeof window.Shopify.analytics.publish === 'function') { 525 window.Shopify.analytics.publish("ga_stub_initialized", {}, {sendTo: "google_osp_migration"}); 526 } 527 } 528</script>
vendor: 1 bytes, line 528
528
529<script 530 defer 531 src="https://walkerengineering.co/cdn/shopifycloud/perf-kit/shopify-perf-kit-3.10.1.min.js" 532 data-application="storefront-renderer" 533 data-shop-id="75266359613" 534 data-render-region="gcp-us-central1" 535 data-page-type="page" 536 data-theme-instance-id="149380956477" 537 data-theme-name="Empire" 538 data-theme-version="9.0.0" 539 data-monorail-region="shop_domain" 540 data-resource-timing-sampling-rate="10" 541 data-shs="true" 542 data-shs-beacon="true" 543 data-shs-export-with-fetch="true" 544 data-shs-logs-sample-rate="1" 545 data-shs-beacon-endpoint="https://walkerengineering.co/api/collect" 546></script>
546 547<meta name="shopify-y" content="caa912d6-aed0-4b10-bf08-2cf188ae4ef9" data-expiration="1823143854000"><meta name="shopify-s" content="b41a66d1-bb5b-4940-8c32-75a13560d5a5" data-expiration="1791588054000"> 548</head> 549 550 <body class="template-page we-scroll-bar" 551 data-instant-allow-query-string 552 553 > 554 555
555<script> 556 document.documentElement.className = document.documentElement.className.replace(/\bno-js\b/, 'js'); 557 if (window.Shopify && window.Shopify.designMode) 558 document.documentElement.className += ' in-theme-editor'; 559 560 if (('ontouchstart' in window) || window.DocumentTouch && document instanceof DocumentTouch) 561 document.documentElement.className = document.documentElement.className.replace(/\bno-touch\b/, 'has-touch'); 562 </script>
562 563 564 565 <svg class="icon-star-reference" 566 aria-hidden="true" 567 focusable="false" 568 role="presentation" 569 xmlns="http://www.w3.org/2000/svg" 570 width="20" 571 height="20" 572 viewBox="3 3 17 17" 573 fill="none"> 574 <symbol id="icon-star"> 575 <rect class="icon-star-background" 576 width="20" 577 height="20" 578 fill="currentColor"> 579 </rect> 580 <path d="M10 3L12.163 7.60778L17 8.35121L13.5 11.9359L14.326 17L10 14.6078L5.674 17L6.5 11.9359L3 8.35121L7.837 7.60778L10 3Z" 581 stroke="currentColor" 582 stroke-width="2" 583 stroke-linecap="round" 584 stroke-linejoin="round" 585 fill="none"> 586 </path> 587 </symbol> 588 <clipPath id="icon-star-clip"> 589 <path d="M10 3L12.163 7.60778L17 8.35121L13.5 11.9359L14.326 17L10 14.6078L5.674 17L6.5 11.9359L3 8.35121L7.837 7.60778L10 3Z" 590 stroke="currentColor" 591 stroke-width="2" 592 stroke-linecap="round" 593 stroke-linejoin="round"> 594 </path> 595 </clipPath> 596 </svg> 597 598 599 <a class="skip-to-main" href="#site-main">Skip to content</a> 600 601 602 603 604 605<!-- START: WEE Custom Header --> 606<div class="we-custom-header"> 607 <we-elements type="header" 608 v-if="header.primary.loader" 609 headerlogos='{ 610 "title": "Walker Engineering Enterprises", 611 "url": "https://walkerengineering.co" 612 }' 613 :headernav1='header.primary.data' 614 headernav2='[ 615 { 616 "name": "Shop Walker AIRSEP", 617 "url": "https://walkerengineering.co/pages/category-airsep", 618 "newTab": false 619 }, 620 { 621 "name": "Shop Walker Performance Filtration", 622 "url": "https://walkerengineering.co/pages/category-performance", 623 "newTab": false 624 } 625 ]' 626 contactdetails='[ 627 { 628 "title": "Address", 629 "label": "Walker Engineering 9255 San Fernando Rd. Sun Valley, CA 91352", 630 "url": "https://goo.gl/maps/mmjRv4sDBt4wBGpE7?coh=178572&entry=tt", 631 "newTab": true 632 }, 633 { 634 "title": "Phone", 635 "label": "1-818-252-7788", 636 "url": "tel:1-818-252-7788", 637 "newTab": false 638 }, 639 { 640 "title": "Fax", 641 "label": "818-252-7785", 642 "url": "tel:818-252-7785", 643 "newTab": false 644 }, 645 { 646 "title": "Email", 647 "label": "", 648 "url": "/", 649 "newTab": false 650 } 651 ]' 652 > 653 </we-elements> 654</div> 655<!-- END: WEE Custom Header -->
656<script> 657 const WE_SF_Header_Options = { 658 name: 'WE SF Header Options', 659 data() { 660 return { 661 header: { 662 primary: { 663 endpoint: 'https://blog.walkerengineering.co/wp-json/walkerengineering/v1/menu-header-primary', 664 loader: false, 665 data: [], 666 } 667 }, 668 } 669 }, 670 created() { 671 this.fetchHeaderMenus(); 672 }, 673 mounted() {}, 674 updated() {}, 675 methods: { 676 fetchHeaderMenus() { 677 const dateNow = Date.now(); 678 fetch(`${this.header.primary.endpoint}?time=${dateNow}`) 679 .then((response) => response.json()) 680 .then((data) => { 681 console.log(`Fetch Menu - Header Primary from Endpoint SUCCESS...`, data); 682 this.header.primary.data = JSON.stringify(data); 683 }) 684 .catch((error) => { 685 console.log(`Fetch Menu - Header Primary from Endpoint FAILED...`, data); 686 }) 687 .finally(() => { 688 this.header.primary.loader = true; 689 }); 690 }, 691 } 692 }; 693 694 Vue.createApp(WE_SF_Header_Options).mount('.we-custom-header'); 695</script>
695 696 697 698 699 <div class="intersection-target" data-header-intersection-target></div> 700 <div class="site-main-dimmer" data-site-main-dimmer></div> 701 <main class="site-main" 702 id="site-main" 703 aria-label="Main content" 704 tabindex="-1"> 705 <div id="shopify-section-template--19830471655741__page-shop-airsep" class="shopify-section"><div class="we-page we-page--shop-airsep"> 706 707 708 709 <section class="we-section we-section--shop-search-bar" 710 :class="{ '--on-search' : shop.products.search.active }"> 711 <div class="we-container"> 712 <div class="we-search-wrap"> 713 <div class="we-group-input --product-search"> 714 <input class="product-search-input" 715 type="text" 716 placeholder="Search Products" 717 v-model="shop.products.search.query" 718 @click="toggleProductSearch(true);" 719 @keyup="doProductSearch();"/> 720 <svg class="product-search-icon we-svg" 721 width="23" 722 height="23" 723 viewBox="0 0 23 23" 724 fill="none" 725 xmlns="http://www.w3.org/2000/svg"> 726 <path id="path_01" 727 d="M17.9409 19.5341C16.0477 21.0758 13.6318 22 11 22C4.92487 22 0 17.0751 0 11C0 4.92487 4.92487 0 11 0C17.0751 0 22 4.92487 22 11C22 13.6318 21.0758 16.0477 19.5341 17.9409L23 21.5L21.5 23L17.9409 19.5341ZM17.1961 17.5275C15.5824 19.0598 13.401 20 11 20C6.02944 20 2 15.9706 2 11C2 6.02944 6.02944 2 11 2C15.9706 2 20 6.02944 20 11C20 13.3994 19.0611 15.5795 17.5305 17.1929C17.3899 17.3114 17.3169 17.3844 17.1961 17.5275Z" 728 fill-rule="evenodd" 729 clip-rule="evenodd" 730 fill="#8A8A8A"> 731 </path> 732 </svg> 733 </div> 734 </div> 735 <div class="we-search-result-wrap we-scroll-bar" 736 v-if="shop.products.search.active && shop.products.search.query != ''"> 737 <h2 738 v-if="shop.products.search.resultList.length != 0" 739 v-text="'PRODUCTS'"> 740 </h2> 741 <div class="we-search-result-list"> 742 <div class="we-search-result-item" 743 v-for="searchProduct in shop.products.search.resultList" 744 @click="goToProductPage(searchProduct.handle);"> 745 <div class="we-row"> 746 <div class="we-col"> 747 748 749 <div class="product-img" 750 v-if="searchProduct.images.length != 0" 751 :style="{ backgroundImage: 'url(' + searchProduct.images[0].src + ')' }"> 752 </div> 753 <div class="product-img" 754 v-if="searchProduct.images.length == 0" 755 style="background-image: url(//walkerengineering.co/cdn/shop/t/3/assets/we-svg-placeholder-img.svg?v=155693266228122343601685996760);"> 756 </div> 757 758 </div> 759 <div class="we-col"> 760 761 762 <div class="product-discount" 763 v-if="searchProduct.variants[0].compare_at_price != null" 764 v-text="calculateProductDiscount(searchProduct.variants[0].compare_at_price, searchProduct.variants[0].price)"> 765 </div> 766 767 768 <div class="product-title" 769 v-text="searchProduct.title" 770 @click="goToProductPage(searchProduct.handle);"> 771 </div> 772 773 774 <div class="product-type" 775 v-if="searchProduct.product_type != ''" 776 v-text="searchProduct.product_type"> 777 </div> 778 779 780 781 </div> 782 <div class="we-col"> 783 784 785 <div class="product-current-price" 786 v-text="'$'+searchProduct.variants[0].price"> 787 </div> 788 789 790 <div class="product-before-price" 791 v-if="searchProduct.variants[0].compare_at_price != null" 792 v-text="'$'+searchProduct.variants[0].compare_at_price"> 793 </div> 794 795 </div> 796 </div> 797 </div> 798 </div> 799 <div class="we-search-result-not-found" 800 v-if="shop.products.search.resultList.length == 0 && shop.products.search.query != ''" 801 v-text="'No matching result found.'"> 802 </div> 803 <div class="we-search-result-query" 804 v-text="'Search for "'+shop.products.search.query+'"'"> 805 </div> 806 </div> 807 </div> 808 <div class="we-search-full-screen-overlay" 809 @click="toggleProductSearch(false);"> 810 </div> 811 </section> 812 813 <section class="we-section we-section--shop-product-listing"> 814 <div class="we-container"> 815 <img class="we-shop-logo" 816 alt="Airsep" 817 title="Airsep" 818 src="//walkerengineering.co/cdn/shop/t/3/assets/we-svg-logo-airsep-engineering-enterprise.svg?v=145112468011637481001685458500" 819 width="" 820 height="" 821 loading="lazy"/> 822 <div class="filtered-list-tags" 823 v-text="shop.products.utilities.filters.selected.tag.join(', ')"> 824 </div> 825 <div class="we-row"> 826 <div class="we-col we-scroll-bar" 827 :class="{ '--show' : shop.products.utilities.filters.toggleOnMobile }"> 828 <div class="product-filter"> 829 <button class="we-btn--close-filters" 830 title="Close Filters" 831 @click="productFiltersToggleOnMobile();"> 832 <svg class="we-svg-icon-close we-svg" 833 width="16" 834 height="16"
835 viewBox="0 0 16 16" 836 fill="none" 837 xmlns="http://www.w3.org/2000/svg"> 838 <path id="path_01" 839 d="M15.8576 1.88992L14.2934 0.325684L8.09188 6.52716L1.89041 0.325684L0.326172 1.88992L6.52764 8.09139L0.326172 14.2929L1.89041 15.8571L8.09188 9.65563L14.2934 15.8571L15.8576 14.2929L9.65611 8.09139L15.8576 1.88992Z" 840 fill="#000000"> 841 </path> 842 </svg> 843 </button> 844 <div class="product-filter-group product-filter-reset"> 845 <div class="we-row"> 846 <h4 class="product-filter-title" 847 v-text="'Filter'"> 848 </h4> 849 <button class="we-btn--product-filter product-filter-reset" 850 @click="productFiltersReset();"> 851 <div class="we-btn-label" 852 v-text="'Reset'"> 853 </div> 854 </button> 855 </div> 856 </div> 857 <div class="product-filter-group product-filter-by-price" 858 :class="{ '--show' : shop.products.utilities.filters.price.show }"> 859 <div class="we-row"> 860 <h4 class="product-filter-title" 861 v-text="'Price'"> 862 </h4> 863 <button class="we-btn--product-filter product-filter-by-price" 864 @click="shop.products.utilities.filters.price.show = !shop.products.utilities.filters.price.show;"> 865 <div class="we-btn-label" 866 v-text="shop.products.utilities.filters.price.show ? 'Hide' : 'Show'"> 867 </div> 868 <svg class="we-svg-icon-angle-up we-svg" 869 width="7" 870 height="4"
871 viewBox="0 0 7 4" 872 fill="none" 873 xmlns="http://www.w3.org/2000/svg"> 874 <path id="path_01" 875 d="M6.14645 3.85355C6.34171 4.04882 6.65829 4.04882 6.85355 3.85355C7.04882 3.65829 7.04882 3.34171 6.85355 3.14645L3.85355 0.146447C3.65829 -0.0488157 3.34171 -0.0488157 3.14645 0.146447L0.146446 3.14645C-0.0488157 3.34171 -0.0488157 3.65829 0.146446 3.85355C0.341709 4.04882 0.658291 4.04882 0.853554 3.85355L3.5 1.20711L6.14645 3.85355Z" 876 fill="#6B6B6B"> 877 </path> 878 </svg> 879 </button> 880 </div> 881 <input class="product-filter-by-price-input" 882 v-if="shop.products.utilities.filters.price.show" 883 type="range" 884 min="1" 885 v-bind:max="shop.products.utilities.filters.price.max" 886 v-model="shop.products.utilities.filters.selected.price" 887 @wheel="$event.preventDefault();" 888 @change="productFiltersPerform();"/> 889 <div class="product-filter-by-price-row" 890 v-if="shop.products.utilities.filters.price.show"> 891 <div class="product-filter-by-price-max-input" 892 v-text="'Max. $'+shop.products.utilities.filters.price.max"> 893 </div> 894 <div class="product-filter-by-price-value" 895 v-text="'$'+shop.products.utilities.filters.selected.price"> 896 </div> 897 </div> 898 </div> 899 <div class="product-filter-group product-filter-by-type" 900 v-if="shop.products.utilities.filters.type.list.length" 901 :class="{ '--show' : shop.products.utilities.filters.type.show }"> 902 <div class="we-row"> 903 <h4 class="product-filter-title" 904 v-text="'By Product Type'"> 905 </h4> 906 <button class="we-btn--product-filter product-filter-by-type" 907 @click="shop.products.utilities.filters.type.show = !shop.products.utilities.filters.type.show;"> 908 <div class="we-btn-label" 909 v-text="shop.products.utilities.filters.type.show ? 'Hide' : 'Show'"> 910 </div> 911 <svg class="we-svg-icon-angle-up we-svg" 912 width="7" 913 height="4"
914 viewBox="0 0 7 4" 915 fill="none" 916 xmlns="http://www.w3.org/2000/svg"> 917 <path id="path_01" 918 d="M6.14645 3.85355C6.34171 4.04882 6.65829 4.04882 6.85355 3.85355C7.04882 3.65829 7.04882 3.34171 6.85355 3.14645L3.85355 0.146447C3.65829 -0.0488157 3.34171 -0.0488157 3.14645 0.146447L0.146446 3.14645C-0.0488157 3.34171 -0.0488157 3.65829 0.146446 3.85355C0.341709 4.04882 0.658291 4.04882 0.853554 3.85355L3.5 1.20711L6.14645 3.85355Z" 919 fill="#6B6B6B"> 920 </path> 921 </svg> 922 </button> 923 </div> 924 <ul class="checkbox-list" 925 v-if="shop.products.utilities.filters.type.show"> 926 <li class="checkbox-item" 927 v-for="product_type in shop.products.utilities.filters.type.list.slice(0, shop.products.utilities.filters.type.listLimit)"> 928 <input class="checkbox-input" 929 :id="'Type: '+product_type" 930 type="checkbox" 931 :value="product_type" 932 v-model="shop.products.utilities.filters.selected.type" 933 @change="productFiltersPerform();"> 934 <label class="checkbox-label" 935 :for="'Type: '+product_type" 936 v-text="product_type"> 937 </label> 938 </li> 939 </ul> 940 <div class="product-filter-see-all-list" 941 v-if="shop.products.utilities.filters.type.list.length > 5 && shop.products.utilities.filters.type.show" 942 v-text="shop.products.utilities.filters.type.listLimit == shop.products.utilities.filters.type.list.length ? 'Hide' : 'See All'" 943 @click="productFiltersSeeAll('type');"> 944 </div> 945 </div> 946 <div class="product-filter-group product-filter-by-tag" 947 v-if="shop.products.utilities.filters.tag.list.length" 948 :class="{ '--show' : shop.products.utilities.filters.tag.show }"> 949 <div class="we-row"> 950 <h4 class="product-filter-title" 951 v-text="'By Product Tag'"> 952 </h4> 953 <button class="we-btn--product-filter product-filter-by-tag" 954 @click="shop.products.utilities.filters.tag.show = !shop.products.utilities.filters.tag.show;"> 955 <div class="we-btn-label" 956 v-text="shop.products.utilities.filters.tag.show ? 'Hide' : 'Show'"> 957 </div> 958 <svg class="we-svg-icon-angle-up we-svg" 959 width="7" 960 height="4"
961 viewBox="0 0 7 4" 962 fill="none" 963 xmlns="http://www.w3.org/2000/svg"> 964 <path id="path_01" 965 d="M6.14645 3.85355C6.34171 4.04882 6.65829 4.04882 6.85355 3.85355C7.04882 3.65829 7.04882 3.34171 6.85355 3.14645L3.85355 0.146447C3.65829 -0.0488157 3.34171 -0.0488157 3.14645 0.146447L0.146446 3.14645C-0.0488157 3.34171 -0.0488157 3.65829 0.146446 3.85355C0.341709 4.04882 0.658291 4.04882 0.853554 3.85355L3.5 1.20711L6.14645 3.85355Z" 966 fill="#6B6B6B"> 967 </path> 968 </svg> 969 </button> 970 </div> 971 <ul class="checkbox-list" 972 v-if="shop.products.utilities.filters.tag.show"> 973 <li class="checkbox-item" 974 v-for="product_tag in shop.products.utilities.filters.tag.list.slice(0, shop.products.utilities.filters.tag.listLimit)"> 975 <input class="checkbox-input" 976 :id="'Tag: '+product_tag" 977 type="checkbox" 978 :value="product_tag" 979 v-model="shop.products.utilities.filters.selected.tag" 980 @change="productFiltersPerform();"> 981 <label class="checkbox-label" 982 :for="'Tag: '+product_tag" 983 v-text="product_tag"> 984 </label> 985 </li> 986 </ul> 987 <div class="product-filter-see-all-list" 988 v-if="shop.products.utilities.filters.tag.list.length > 5 && shop.products.utilities.filters.tag.show" 989 v-text="shop.products.utilities.filters.tag.listLimit == shop.products.utilities.filters.tag.list.length ? 'Hide' : 'See All'" 990 @click="productFiltersSeeAll('tag');"> 991 </div> 992 </div> 993 <div class="product-filter-group product-filter-by-vendor" 994 v-if="shop.products.utilities.filters.vendor.list.length" 995 :class="{ '--show' : shop.products.utilities.filters.vendor.show }"> 996 <div class="we-row"> 997 <h4 class="product-filter-title" 998 v-text="'By Vendor'"> 999 </h4> 1000 <button class="we-btn--product-filter product-filter-by-vendor" 1001 @click="shop.products.utilities.filters.vendor.show = !shop.products.utilities.filters.vendor.show;"> 1002 <div class="we-btn-label" 1003 v-text="shop.products.utilities.filters.vendor.show ? 'Hide' : 'Show'"> 1004 </div> 1005 <svg class="we-svg-icon-angle-up we-svg" 1006 width="7" 1007 height="4"
1008 viewBox="0 0 7 4" 1009 fill="none" 1010 xmlns="http://www.w3.org/2000/svg"> 1011 <path id="path_01" 1012 d="M6.14645 3.85355C6.34171 4.04882 6.65829 4.04882 6.85355 3.85355C7.04882 3.65829 7.04882 3.34171 6.85355 3.14645L3.85355 0.146447C3.65829 -0.0488157 3.34171 -0.0488157 3.14645 0.146447L0.146446 3.14645C-0.0488157 3.34171 -0.0488157 3.65829 0.146446 3.85355C0.341709 4.04882 0.658291 4.04882 0.853554 3.85355L3.5 1.20711L6.14645 3.85355Z" 1013 fill="#6B6B6B"> 1014 </path> 1015 </svg> 1016 </button> 1017 </div> 1018 <ul class="checkbox-list" 1019 v-if="shop.products.utilities.filters.vendor.show"> 1020 <li class="checkbox-item" 1021 v-for="product_vendor in shop.products.utilities.filters.vendor.list.slice(0, shop.products.utilities.filters.vendor.listLimit)"> 1022 <input class="checkbox-input" 1023 :id="'Vendor: '+product_vendor" 1024 type="checkbox" 1025 :value="product_vendor" 1026 v-model="shop.products.utilities.filters.selected.vendor" 1027 @change="productFiltersPerform();"> 1028 <label class="checkbox-label" 1029 :for="'Vendor: '+product_vendor" 1030 v-text="product_vendor"> 1031 </label> 1032 </li> 1033 </ul> 1034 <div class="product-filter-see-all-list" 1035 v-if="shop.products.utilities.filters.vendor.list.length > 5 && shop.products.utilities.filters.vendor.show" 1036 v-text="shop.products.utilities.filters.vendor.listLimit == shop.products.utilities.filters.vendor.list.length ? 'Hide' : 'See All'" 1037 @click="productFiltersSeeAll('vendor');"> 1038 </div> 1039 </div> 1040 </div> 1041 </div> 1042 <div class="we-col"> 1043 <div class="products-utilities"> 1044 <div class="product-counts" 1045 :class="{ '--show' : !shop.products.loader }"> 1046 Found <span v-text="shop.products.list.filtered.length"></span> items on filter 1047 </div> 1048 <button class="we-btn--product-filters" 1049 @click="productFiltersToggleOnMobile();"> 1050 <div class="we-btn-label">All Filters</div> 1051 <svg class="we-svg-icon-filters we-svg" 1052 xmlns="http://www.w3.org/2000/svg" 1053 width="24" 1054 height="24"
1055 viewBox="0 0 24 24" 1056 fill="none"> 1057 <path id="path_01" 1058 d="M3 5H7M21 5H11M3 12H15M21 12H19M3 19H5M21 19H9" 1059 stroke="#1B1B1B66" 1060 stroke-width="2" 1061 stroke-linecap="round"> 1062 </path> 1063 <circle id="circle_01" 1064 cx="9" 1065 cy="5" 1066 r="2" 1067 stroke="#1B1B1B66" 1068 stroke-width="2" 1069 stroke-linecap="round"> 1070 </circle> 1071 <circle id="circle_02" 1072 cx="17" 1073 cy="12" 1074 r="2" 1075 stroke="#1B1B1B66" 1076 stroke-width="2" 1077 stroke-linecap="round"> 1078 </circle> 1079 <circle id="circle_03" 1080 cx="7" 1081 cy="19" 1082 r="2" 1083 stroke="#1B1B1B66" 1084 stroke-width="2" 1085 stroke-linecap="round"> 1086 </circle> 1087 </svg> 1088 </button> 1089 <div class="product-sort-row"> 1090 <div class="product-sort-label" 1091 v-text="'Sort by'"> 1092 </div> 1093 <div class="product-sort-wrap ds-view" 1094 :class="{ '--show' : shop.products.utilities.sort.showList }"> 1095 <input class="product-sort-input" 1096 type="text" 1097 :value="shop.products.utilities.sort.by" 1098 @click="toggleProductSort();" 1099 readonly/> 1100 <svg class="we-svg-icon-angle-down we-svg" 1101 width="8" 1102 height="4"
1103 viewBox="0 0 8 4" 1104 fill="none" 1105 xmlns="http://www.w3.org/2000/svg"> 1106 <path id="path_01" 1107 d="M1.35355 0.146447C1.15829 -0.0488155 0.841709 -0.0488155 0.646447 0.146447C0.451184 0.341709 0.451184 0.658291 0.646447 0.853553L3.64645 3.85355C3.84171 4.04882 4.15829 4.04882 4.35355 3.85355L7.35355 0.853553C7.54882 0.658291 7.54882 0.341709 7.35355 0.146447C7.15829 -0.0488155 6.84171 -0.0488155 6.64645 0.146447L4 2.79289L1.35355 0.146447Z" 1108 fill="#FFFFFF"> 1109 </path> 1110 </svg> 1111 <div class="product-sort-list we-scroll-bar"> 1112 <div class="product-sort-item" 1113 v-for="sortItem in shop.products.utilities.sort.list" 1114 v-text="sortItem" 1115 @click="selectedProductSort(sortItem);"> 1116 </div> 1117 </div> 1118 </div> 1119 <div class="product-sort-wrap mb-view"> 1120 <select class="product-sort-select" 1121 v-model="shop.products.utilities.sort.by" 1122 @change="selectedProductSort(shop.products.utilities.sort.by);"> 1123 <option class="product-sort-option" 1124 v-for="sortItem in shop.products.utilities.sort.list" 1125 :value="sortItem" 1126 v-text="sortItem"> 1127 </option> 1128 </select> 1129 <svg class="we-svg-icon-angle-down we-svg" 1130 width="8" 1131 height="4"
1132 viewBox="0 0 8 4" 1133 fill="none" 1134 xmlns="http://www.w3.org/2000/svg"> 1135 <path id="path_01" 1136 d="M1.35355 0.146447C1.15829 -0.0488155 0.841709 -0.0488155 0.646447 0.146447C0.451184 0.341709 0.451184 0.658291 0.646447 0.853553L3.64645 3.85355C3.84171 4.04882 4.15829 4.04882 4.35355 3.85355L7.35355 0.853553C7.54882 0.658291 7.54882 0.341709 7.35355 0.146447C7.15829 -0.0488155 6.84171 -0.0488155 6.64645 0.146447L4 2.79289L1.35355 0.146447Z" 1137 fill="#FFFFFF"> 1138 </path> 1139 </svg> 1140 </div> 1141 </div> 1142 </div> 1143 <div class="products-loader" 1144 v-if="shop.products.loader"> 1145 <svg class="we-svg-icon-loader we-svg" version="1.1" id="L3" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px" viewBox="0 0 100 100" enable-background="new 0 0 0 0" xml:space="preserve"> 1146 <circle id="circle_01" cx="50" cy="50" r="44" fill="none" stroke="#00407B" stroke-width="4" style="opacity: 0.5;"></circle> 1147 <circle id="circle_02" cx="8" cy="54" r="6" fill="#00407B" stroke="#09244F" stroke-width="3"> 1148 <animateTransform 1149 attributeName="transform" 1150 dur="2s" 1151 type="rotate" 1152 from="0 50 48" 1153 to="360 50 52" 1154 repeatCount="indefinite" /> 1155 </circle> 1156</svg> 1157 </div> 1158 <div class="products-not-found" 1159 v-if="!shop.products.loader && !shop.products.pagination.paginate.list.length" 1160 v-text="'NO PRODUCTS FOUND'"> 1161 </div> 1162 <div class="products-grid-listing" 1163 v-if="!shop.products.loader && shop.products.pagination.paginate.list.length"> 1164 <div class="product-grid-item" 1165 v-for="(productItem, productIndex) in shop.products.pagination.paginate.list" 1166 :id="productIndex" 1167 :data-product-title="productItem.title" 1168 :data-product-price="productItem.variants[0].price" 1169 :data-product-id="productItem.id"> 1170 1171 1172 <div class="product-img" 1173 v-if="productItem.images.length != 0" 1174 :style="{ backgroundImage: 'url(' + productItem.images[0].src + ')' }" 1175 @click="goToProductPage(productItem.handle);"> 1176 </div> 1177 <div class="product-img" 1178 v-if="productItem.images.length == 0" 1179 style="background-image: url(//walkerengineering.co/cdn/shop/t/3/assets/we-svg-placeholder-img.svg?v=155693266228122343601685996760);" 1180 @click="goToProductPage(productItem.handle);"> 1181 </div> 1182 1183 1184 <div class="product-discount" 1185 v-if="productItem.variants[0].compare_at_price != null" 1186 v-html="calculateProductDiscount(productItem.variants[0].compare_at_price, productItem.variants[0].price)"> 1187 </div> 1188 1189 <div class="product-details"> 1190 1191 1192 <div class="product-new" 1193 v-if="isProductNew(productItem.created_at)" 1194 v-text="'NEW'"> 1195 </div> 1196 1197 1198 <div class="product-title" 1199 :title="productItem.title" 1200 v-text="productItem.title" 1201 @click="goToProductPage(productItem.handle);"> 1202 </div> 1203 1204 1205 <div class="product-type" 1206 v-text="productItem.product_type"> 1207 </div> 1208 1209 1210 1211 <div class="we-row"> 1212 1213 1214 <div class="product-current-price" 1215 v-text="'$'+productItem.variants[0].price"> 1216 </div> 1217 1218 1219 <div class="product-before-price" 1220 v-if="productItem.variants[0].compare_at_price != null" 1221 v-text="'$'+productItem.variants[0].compare_at_price"> 1222 </div> 1223 1224 1225 <button class="we-btn--add-to-cart" 1226 title="Add to Cart" 1227 @click="addThisToCart(productItem, $event);"> 1228 <svg class="we-svg-icon-cart we-svg" width="20" height="19" viewBox="0 0 20 19" fill="none" xmlns="http://www.w3.org/2000/svg"> 1229 <path id="path_01" d="M5.79447 19.0005C5.27182 19.0005 4.82455 18.8146 4.45267 18.4428C4.08016 18.0704 3.8939 17.623 3.8939 17.1005C3.8939 16.578 4.08016 16.1305 4.45267 15.7581C4.82455 15.3864 5.27182 15.2005 5.79447 15.2005C6.31713 15.2005 6.76439 15.3864 7.13627 15.7581C7.50878 16.1305 7.69504 16.578 7.69504 17.1005C7.69504 17.623 7.50878 18.0704 7.13627 18.4428C6.76439 18.8146 6.31713 19.0005 5.79447 19.0005ZM15.2973 19.0005C14.7746 19.000
12295 14.3274 18.8146 13.9555 18.4428C13.583 18.0704 13.3967 17.623 13.3967 17.1005C13.3967 16.578 13.583 16.1305 13.9555 15.7581C14.3274 15.3864 14.7746 15.2005 15.2973 15.2005C15.82 15.2005 16.2675 15.3864 16.64 15.7581C17.0119 16.1305 17.1979 16.578 17.1979 17.1005C17.1979 17.623 17.0119 18.0704 16.64 18.4428C16.2675 18.8146 15.82 19.0005 15.2973 19.0005ZM4.98673 3.80049L7.26741 8.55049H13.9194L16.5327 3.80049H4.98673ZM5.79447 14.2505C5.08176 14.2505 4.54326 13.9376 4.17899 13.3119C3.81471 12.6868 3.79888 12.0655 4.13148 11.448L5.41436 9.12049L1.99334 1.90049H1.0193C0.750052 1.90049 0.52832 1.80929 0.354101 1.62689C0.179883 1.44512 0.0927734 1.21965 0.0927734 0.950488C0.0927734 0.681322 0.184001 0.455538 0.366455 0.273138C0.548276 0.0913716 0.773809 0.000488281 1.04306 0.000488281H2.58727C2.76148 0.000488281 2.92778 0.0479884 3.08616 0.142988C3.24454 0.237988 3.36333 0.372572 3.44252 0.546738L4.08396 1.90049H18.1006C18.5283 1.90049 18.8213 2.05882 18.9796 2.37549C19.138 2.69215 19.1301 3.02466 18.9559 3.37299L15.5824 9.45299C15.4082 9.76965 15.1785 10.0151 14.8934 10.1892C14.6083 10.3634 14.2837 10.4505 13.9194 10.4505H6.83978L5.79447 12.3505H16.2713C16.5406 12.3505 16.7623 12.4414 16.9365 12.6231C17.1108 12.8055 17.1979 13.0313 17.1979 13.3005C17.1979 13.5697 17.1066 13.7951 16.9242 13.9769C16.7424 14.1593 16.5168 14.2505 16.2476 14.2505H5.79447Z" fill="#1B1B1B"></path> 1230</svg> 1231 </button> 1232 1233 </div> 1234 </div> 1235 </div> 1236 </div> 1237 <div class="products-pagination we-sf-pagination --airsep-accent" 1238 v-if="shop.products.pagination.total > 1"> 1239 1240 <div class="prev" 1241 v-if="shop.products.pagination.current != 1" 1242 @click="paginationPrevPage();"> 1243 <svg class="we-svg-arrow-left we-svg" width="8" height="14" viewBox="0 0 8 14" fill="none" xmlns="http://www.w3.org/2000/svg"> 1244 <path id="path_01" d="M2.41421 7L7.70711 1.70711C8.09763 1.31658 8.09763 0.683417 7.70711 0.292893C7.31658 -0.0976311 6.68342 -0.0976311 6.29289 0.292893L0.292893 6.29289C-0.0976311 6.68342 -0.0976311 7.31658 0.292893 7.70711L6.29289 13.7071C6.68342 14.0976 7.31658 14.0976 7.70711 13.7071C8.09763 13.3166 8.09763 12.6834 7.70711 12.2929L2.41421 7Z" fill="#4C5157"></path> 1245</svg> 1246 </div> 1247 1248 <div class="pages" 1249 :class="{ 'current' : 1 == shop.products.pagination.current }" 1250 @click="paginationSelectedPage(1);" 1251 v-html="1"> 1252 </div> 1253 1254 <div class="dots" 1255 v-if="shop.products.pagination.total > 6 && shop.products.pagination.current >= shop.products.pagination.rangeCount" 1256 @click="paginationSelectedPage(shop.products.pagination.startCount);" 1257 v-text="'...'"> 1258 </div> 1259 1260 <div class="pages" 1261 :class="{ 'current' : n == shop.products.pagination.current }" 1262 v-for="n in shop.products.pagination.pages.slice(shop.products.pagination.startCount, shop.products.pagination.endCount)" 1263 @click="paginationSelectedPage(n);" 1264 v-html="n"> 1265 </div> 1266 1267 <div class="dots" 1268 v-if="shop.products.pagination.total > 6 && shop.products.pagination.current <= (shop.products.pagination.total - (shop.products.pagination.rangeCount - 1))" 1269 @click="paginationSelectedPage(shop.products.pagination.endCount + 1);" 1270 v-text="'...'"> 1271 </div> 1272 1273 <div class="pages" 1274 v-if="shop.products.pagination.total > 1" 1275 :class="{ 'current' : shop.products.pagination.total == shop.products.pagination.current }" 1276 @click="paginationSelectedPage(shop.products.pagination.total);" 1277 v-html="shop.products.pagination.total"> 1278 </div> 1279 1280 <div class="next" 1281 v-if="shop.products.pagination.current != shop.products.pagination.total" 1282 @click="paginationNextPage();"> 1283 <svg class="we-svg-arrow-right we-svg" width="8" height="14" viewBox="0 0 8 14" fill="none" xmlns="http://www.w3.org/2000/svg">
1284 <path id="path_01" d="M1.70711 0.292893C1.31658 -0.0976311 0.683417 -0.0976311 0.292893 0.292893C-0.0976311 0.683417 -0.0976311 1.31658 0.292893 1.70711L5.58579 7L0.292893 12.2929C-0.0976311 12.6834 -0.0976311 13.3166 0.292893 13.7071C0.683417 14.0976 1.31658 14.0976 1.70711 13.7071L7.70711 7.70711C8.09763 7.31658 8.09763 6.68342 7.70711 6.29289L1.70711 0.292893Z" fill="#4C5157"></path> 1285</svg> 1286 </div> 1287 1288 </div> 1289 </div> 1290 </div> 1291 </div> 1292 </section> 1293 1294</div>
1295<script> 1296 const WE_SF_Page_Shop_Airsep_Options = { 1297 name: 'WE SF Page Shop Airsep Options', 1298 data() { 1299 return { 1300 shop: { 1301 products: { 1302 count: 224, 1303 loader: true, 1304 list: { 1305 all: [], 1306 airsep: [], 1307 filtered: [], 1308 }, 1309 pagination: { 1310 current: 1, // current page 1311 total: 0, // get total pages 1312 pages: [], // array of pages after calculating list divided by perPage 1313 rangeCount: 5, 1314 startCount: 0, // startCount is index of pages[] array to display 1315 endCount: 0, // endCount is index of pages[] array to display 1316 paginate: { 1317 list: [], // list to paginate 1318 startIndex: 0, // startIndex of list to display in paginataion 1319 perPage: 9, // number of items to display per page 1320 endIndex: 0, // endIndex of list to display in pagination 1321 }, 1322 }, 1323 utilities: { 1324 sort: { 1325 list: [ 1326 'Name', 1327 /* 'Reviews', */ 1328 'Price: High-Low', 1329 'Price: Low-High', 1330 'Sale', 1331 ], 1332 showList: false, 1333 by: 'Name', 1334 }, 1335 filters: { 1336 price: { 1337 show: false, 1338 max: 0, 1339 }, 1340 type: { 1341 show: false, 1342 listLimit: 5, 1343 list: [], 1344 }, 1345 tag: { 1346 show: false, 1347 listLimit: 5, 1348 list: [], 1349 }, 1350 vendor: { 1351 show: false, 1352 listLimit: 5, 1353 list: [], 1354 }, 1355 selected: { 1356 price: 0, 1357 type: [], 1358 tag: [], 1359 vendor: [], 1360 }, 1361 toggleOnMobile: false, 1362 }, 1363 }, 1364 search: { 1365 active: false, 1366 query: '', 1367 resultList: [], 1368 }, 1369 }, 1370 }, 1371 1372 collection: { 1373 data: { 1374 title: 'All Products', 1375 handle: 'all-products', 1376 }, 1377 count: { 1378 loader: true, 1379 }, 1380 products: { 1381 loader: true, 1382 list: { 1383 all: [], 1384 filtered: [], 1385 }, 1386 pagination: { 1387 current: 1, // current page 1388 total: 0, // get total pages 1389 pages: [], // array of pages after calculating list divided by perPage 1390 rangeCount: 5, 1391 startCount: 0, // startCount is index of pages[] array to display 1392 endCount: 0, // endCount is index of pages[] array to display 1393 paginate: { 1394 list: [], // list to paginate 1395 startIndex: 0, // startIndex of list to display in paginataion 1396 perPage: 9, // number of items to display per page 1397 endIndex: 0, // endIndex of list to display in pagination 1398 }, 1399 }, 1400 utilities: { 1401 sort: { 1402 list: [ 1403 'Name', 1404 /* 'Reviews', */ 1405 'Price: High-Low', 1406 'Price: Low-High', 1407 'Sale', 1408 ], 1409 showList: false, 1410 by: 'Name', 1411 }, 1412 filters: { 1413 price: { 1414 show: false, 1415 max: 0, 1416 }, 1417 type: { 1418 show: false, 1419 listLimit: 5, 1420 list: [], 1421 }, 1422 tag: { 1423 show: false, 1424 listLimit: 5, 1425 list: [], 1426 }, 1427 vendor: { 1428 show: false, 1429 listLimit: 5, 1430 list: [], 1431 }, 1432 selected: { 1433 price: 0, 1434 type: [], 1435 tag: [], 1436 vendor: [], 1437 }, 1438 toggleOnMobile: false, 1439 }, 1440 }, 1441 search: { 1442 active: false, 1443 query: '', 1444 resultList: [], 1445 }, 1446 }, 1447 }, 1448 } 1449 }, 1450 created() { 1451 this.initPage(); 1452 this.fetchCollectionData(); 1453 }, 1454 mounted() {}, 1455 updated() {}, 1456 methods: { 1457 // fetch shop products 1458 async initPage() { 1459 var productsLimitPerFetch = 30; 1460 var productsTotalPageFetch = Math.ceil(this.shop.products.count / productsLimitPerFetch); 1461 // console.log('productsTotalPageFetch =', productsTotalPageFetch); 1462 1463 await this.fetchShopProducts(productsLimitPerFetch, productsTotalPageFetch); 1464 1465 this.paginationSetTotalPages(); 1466 this.paginationPaginateLists(); 1467 this.getProductMaxPrice(); 1468 this.getProductTypes(); 1469 this.getProductTags(); 1470 this.getProductVendors(); 1471 1472 this.shop.products.loader = false;
1473 1474 this.filterInitDataByData(); 1475 }, 1476 async fetchShopProducts(productsLimitPerFetch, productsTotalPageFetch) { 1477 for (let page = 1; page <= productsTotalPageFetch; page++) { 1478 1479 // console.log('page =', page); 1480 var productEndpoint = `/products.json?page=${page}`; 1481 1482 const response = await fetch(productEndpoint); 1483 const data = await response.json(); 1484 console.log('data =', data); 1485 data.products.forEach((item) => { 1486 this.shop.products.list.all.push(item); 1487 if (item.vendor.toLowerCase().includes('airsep')) { 1488 this.shop.products.list.airsep.push(item); 1489 this.shop.products.list.filtered.push(item); 1490 } 1491 }); 1492 1493 } 1494 }, 1495 1496 // fetch collection data 1497 fetchCollectionData() { 1498 const collectionEndpoint = `/collections/${this.collection.data.handle}/count.json`; 1499 fetch(collectionEndpoint) 1500 .then(response => response.json()) 1501 .then(data => { 1502 console.log(`Fetch Collection Data from Endpoint SUCCESS...`, data); 1503 this.collection.count = data.collection; 1504 this.fetchProductsInCollection(); 1505 }) 1506 .catch(error => { 1507 console.log(`Fetch Collection Data from Endpoint FAILED...`, error); 1508 }) 1509 .finally(() => { 1510 this.collection.count.loader = false;
1511 if (this.collection.count.products_count == 0) this.shop.products.loader = false; 1512 }); 1513 }, 1514 1515 // onload filter products by application tag 1516 filterInitDataByData() { 1517 let queryString = window.location.search; 1518 let urlParams = new URLSearchParams(queryString); 1519 if (urlParams.has('tags')) { 1520 tagFilter = urlParams.get('tags'); 1521 // console.log('YES!', tagFilter); 1522 this.shop.products.utilities.filters.selected.tag.push(tagFilter); 1523 // this.shop.products.utilities.filters.tag.show = true; 1524 this.productFiltersSeeAll('tag'); 1525 this.productFiltersPerform(); 1526 } 1527 }, 1528 1529 // fetching products in collection 1530 fetchProductsInCollection() { 1531 var productsLimitPerFetch = 30; 1532 var productsTotalPageFetch = Math.ceil(this.collection.count.products_count / productsLimitPerFetch); 1533 // console.log('productsTotalPageFetch =', productsTotalPageFetch); 1534 1535 for (var page = 1; page <= productsTotalPageFetch; page++) { 1536 var productEndpoint = `/collections/${this.collection.data.handle}/products.json?page=${page}`; 1537 fetch(productEndpoint) 1538 .then(response => response.json()) 1539 .then(data => { 1540 console.log(`Fetch Products in Collection from Endpoint SUCCESS...`, productEndpoint, data); 1541 data.products.forEach((item) => { 1542 this.collection.products.list.all.push(item); 1543 this.collection.products.list.filtered.push(item); 1544 }); 1545 }) 1546 .catch(error => { 1547 console.log(`Fetch Products in Collection from Endpoint FAILED...`, productEndpoint, error); 1548 }) 1549 .finally(() => { 1550 this.collection.products.loader = false;
1551 }); 1552 } 1553 }, 1554 1555 // pagination and products display 1556 paginationSetTotalPages() { 1557 // console.log('paginationSetTotalPages'); 1558 this.shop.products.pagination.current = 1; 1559 this.shop.products.pagination.paginate.startIndex = 0; 1560 this.shop.products.pagination.paginate.endIndex = this.shop.products.pagination.paginate.perPage; 1561 this.shop.products.pagination.total = Math.ceil(this.shop.products.list.filtered.length / this.shop.products.pagination.paginate.perPage); 1562 this.shop.products.pagination.startCount = this.shop.products.pagination.rangeCount - (this.shop.products.pagination.rangeCount - 1); 1563 this.shop.products.pagination.endCount = this.shop.products.pagination.rangeCount; 1564 1565 this.shop.products.pagination.pages = []; 1566 for (var n = 1; n <= this.shop.products.pagination.total; n++) { 1567 this.shop.products.pagination.pages.push(n); 1568 } 1569 }, 1570 paginationSelectedPage(page) { 1571 // console.log('paginationSelectedPage'); 1572 this.shop.products.pagination.current = page; 1573 this.shop.products.pagination.paginate.startIndex = (page * this.shop.products.pagination.paginate.perPage) - (this.shop.products.pagination.paginate.perPage); 1574 this.shop.products.pagination.paginate.endIndex = (page * this.shop.products.pagination.paginate.perPage); 1575 1576 // if pagination.total is less than or equal to pagination.rangeCount 1577 if (this.shop.products.pagination.total <= this.shop.products.pagination.rangeCount) { 1578 // console.log('if - A'); 1579 this.shop.products.pagination.startCount = this.shop.products.pagination.rangeCount - (this.shop.products.pagination.rangeCount - 1); 1580 this.shop.products.pagination.endCount = (this.shop.products.pagination.total - 1); 1581 } 1582 // else pagination.total is greater than pagination.rangeCount 1583 else { 1584 if (this.shop.products.pagination.current < this.shop.products.pagination.rangeCount) { 1585 // console.log('if - B1'); 1586 this.shop.products.pagination.startCount = this.shop.products.pagination.rangeCount - (this.shop.products.pagination.rangeCount - 1); 1587 this.shop.products.pagination.endCount = this.shop.products.pagination.rangeCount; 1588 } 1589 else if (this.shop.products.pagination.current > (this.shop.products.pagination.total - (this.shop.products.pagination.rangeCount - 1))) { 1590 // console.log('if - B2'); 1591 this.shop.products.pagination.startCount = (this.shop.products.pagination.total - this.shop.products.pagination.rangeCount); 1592 this.shop.products.pagination.endCount = this.shop.products.pagination.total - 1; 1593 } 1594 else { 1595 // console.log('if - B3'); 1596 this.shop.products.pagination.startCount = this.shop.products.pagination.current - 3; 1597 this.shop.products.pagination.endCount = this.shop.products.pagination.current + 2; 1598 } 1599 } 1600 1601 this.paginationPaginateLists(); 1602 1603 this.paginationScrollTop(); 1604 }, 1605 paginationPrevPage() { 1606 // console.log('paginationPrevPage'); 1607 this.shop.products.pagination.current -= 1; 1608 this.paginationSelectedPage(this.shop.products.pagination.current); 1609 }, 1610 paginationNextPage() { 1611 // console.log('paginationNextPage'); 1612 this.shop.products.pagination.current += 1; 1613 this.paginationSelectedPage(this.shop.products.pagination.current); 1614 }, 1615 paginationPaginateLists() { 1616 // console.log('paginationPaginateLists'); 1617 this.shop.products.pagination.paginate.list = []; 1618 this.productsFadeIn(500); 1619 this.doProductSortBy(); 1620 1621 this.shop.products.list.filtered.slice(this.shop.products.pagination.paginate.startIndex, this.shop.products.pagination.paginate.endIndex).forEach((item, index) => { 1622 this.shop.products.pagination.paginate.list.push(item); 1623 }); 1624 }, 1625 paginationScrollTop() { 1626 // console.log('paginationScrollTop'); 1627 const scrollTo = document.querySelector('.we-section--shop-product-listing'); 1628 scrollTo.scrollIntoView(); 1629 }, 1630 1631 // product filters 1632 getProductTypes() { 1633 // console.log('getProductTypes'); 1634 1635 const tempArr = []; 1636 this.shop.products.list.filtered.forEach((productItem, productIndex) => { 1637 if (productItem.product_type != '') tempArr.push(productItem.product_type); 1638 }); 1639 1640 this.shop.products.utilities.filters.type.list = tempArr.reduce((final, current) => { 1641 let data = final.find((item) => item === current); 1642 1643 if (data) return final; 1644 return final.concat([current]); 1645 }, []); 1646 }, 1647 getProductTags() { 1648 // console.log('getProductTags'); 1649 1650 const tempArr = []; 1651 this.shop.products.list.filtered.forEach((productItem, productIndex) => {
1652 productItem.tags.forEach((tagItem, tagIndex) => { 1653 if (tagItem != '') tempArr.push(tagItem); 1654 }); 1655 }); 1656 1657 this.shop.products.utilities.filters.tag.list = tempArr.reduce((final, current) => { 1658 let data = final.find((item) => item === current); 1659 1660 if (data) return final; 1661 return final.concat([current]); 1662 }, []); 1663 }, 1664 getProductVendors() { 1665 // console.log('getProductVendors'); 1666 1667 const tempArr = []; 1668 this.shop.products.list.filtered.forEach((productItem, productIndex) => { 1669 if (productItem.vendor != '') tempArr.push(productItem.vendor); 1670 }); 1671 1672 this.shop.products.utilities.filters.vendor.list = tempArr.reduce((final, current) => { 1673 let data = final.find((item) => item === current); 1674 1675 if (data) return final; 1676 return final.concat([current]); 1677 }, []); 1678 }, 1679 getProductMaxPrice() { 1680 // console.log('getProductMaxPrice'); 1681 1682 const tempArr = []; 1683 this.shop.products.list.filtered.forEach((productItem, productIndex) => {
1684 productItem.variants.forEach((variantItem, variantIndex) => { 1685 tempArr.push(Number(variantItem.price)); 1686 }); 1687 }); 1688 1689 tempArr.sort((a, b) => { 1690 if (a < b) return 1; 1691 if (a > b) return -1; 1692 return 0; 1693 }); 1694 1695 this.shop.products.utilities.filters.price.max = tempArr[0]; 1696 this.shop.products.utilities.filters.selected.price = this.shop.products.utilities.filters.price.max; 1697 }, 1698 productFiltersReset() { 1699 // console.log('productFiltersReset'); 1700 this.shop.products.utilities.filters.selected.price = this.shop.products.utilities.filters.price.max; 1701 this.shop.products.utilities.filters.selected.type = []; 1702 this.shop.products.utilities.filters.selected.tag = []; 1703 this.shop.products.utilities.filters.selected.vendor = []; 1704 this.shop.products.list.filtered = this.shop.products.list.airsep; 1705 this.paginationSetTotalPages(); 1706 this.paginationSelectedPage(1); 1707 }, 1708 productFiltersSeeAll(name) { 1709 // console.log('productFiltersSeeAll =', name); 1710 if (name == 'type') { 1711 this.shop.products.utilities.filters.type.listLimit = (this.shop.products.utilities.filters.type.listLimit == 5) ? this.shop.products.utilities.filters.type.list.length : 5; 1712 } 1713 if (name == 'tag') { 1714 this.shop.products.utilities.filters.tag.listLimit = (this.shop.products.utilities.filters.tag.listLimit == 5) ? this.shop.products.utilities.filters.tag.list.length : 5; 1715 } 1716 if (name == 'vendor') { 1717 this.shop.products.utilities.filters.vendor.listLimit = (this.shop.products.utilities.filters.vendor.listLimit == 5) ? this.shop.products.utilities.filters.vendor.list.length : 5; 1718 } 1719 }, 1720 productFiltersPerform() { 1721 // console.log('productFiltersPerform'); 1722 if ( 1723 this.shop.products.utilities.filters.selected.price || 1724 this.shop.products.utilities.filters.selected.type.length || 1725 this.shop.products.utilities.filters.selected.tag.length || 1726 this.shop.products.utilities.filters.selected.vendor.length 1727 ) { 1728 // empty shop.products.list.filtered 1729 this.shop.products.list.filtered = []; 1730 this.shop.products.list.airsep.forEach((productItem, productIndex) => { 1731 1732 // variable isProductFilter meet/comply each filters 1733 var isProductFilter = { 1734 price: true, 1735 type: true, 1736 tag: true, 1737 vendor: true, 1738 }; 1739 1740 // filter products that is less than shop.products.utilities.filters.selected.price 1741 Number(productItem.variants[0].price) <= this.shop.products.utilities.filters.selected.price ? isProductFilter.price = true : isProductFilter.price = false; 1742 1743 // filter products that is equal to each index of shop.products.utilities.filters.selected.type 1744 if (this.shop.products.utilities.filters.selected.type.length) { 1745 this.shop.products.utilities.filters.selected.type.includes(productItem.product_type) ? isProductFilter.type = true : isProductFilter.type = false;
1746 } 1747 else { 1748 isProductFilter.type = true; 1749 } 1750 1751 // filter products that is equal to each index of shop.products.utilities.filters.selected.tag 1752 if (this.shop.products.utilities.filters.selected.tag.length) { 1753 isProductFilter.tag = this.shop.products.utilities.filters.selected.tag.some(item => productItem.tags.includes(item)); 1754 } 1755 else { 1756 isProductFilter.tag = true; 1757 } 1758 1759 // filter products that is equal to each index of shop.products.utilities.filters.selected.vendor 1760 if (this.shop.products.utilities.filters.selected.vendor.length) { 1761 this.shop.products.utilities.filters.selected.vendor.includes(productItem.vendor) ? isProductFilter.vendor = true : isProductFilter.vendor = false; 1762 } 1763 else { 1764 isProductFilter.vendor = true; 1765 } 1766 1767 // isProductFilter meet/comply then push to shop.products.list.filtered 1768 // console.log('isProductFilter =', isProductFilter); 1769 if (isProductFilter.price && isProductFilter.type && isProductFilter.tag && isProductFilter.vendor) this.shop.products.list.filtered.push(productItem); 1770 }); 1771 this.paginationSetTotalPages(); 1772 this.paginationSelectedPage(1); 1773 } 1774 else { 1775 this.shop.products.list.filtered = this.shop.products.list.airsep; 1776 this.paginationSetTotalPages(); 1777 this.paginationSelectedPage(1); 1778 } 1779 }, 1780 productFiltersToggleOnMobile() { 1781 // console.log('productFiltersToggleOnMobile'); 1782 this.shop.products.utilities.filters.toggleOnMobile = !this.shop.products.utilities.filters.toggleOnMobile; 1783 }, 1784 1785 // product sorting 1786 toggleProductSort() { 1787 // console.log('toggleProductSort'); 1788 this.shop.products.utilities.sort.showList = !this.shop.products.utilities.sort.showList; 1789 }, 1790 selectedProductSort(name) { 1791 // console.log('selectedProductSort'); 1792 this.shop.products.utilities.sort.by = name; 1793 this.productsFadeIn(500); 1794 this.toggleProductSort(); 1795 this.paginationSelectedPage(1); 1796 }, 1797 doProductSortBy() { 1798 // console.log('doProductSortBy = '+this.shop.products.utilities.sort.by); 1799 if (this.shop.products.utilities.sort.by == 'Name') { 1800 return this.shop.products.list.filtered.sort((a, b) => { 1801 let prodA = a.title.toLowerCase(); 1802 let prodB = b.title.toLowerCase(); 1803 if (prodA < prodB) return -1; 1804 if (prodA > prodB) return 1; 1805 return 0; 1806 }); 1807 } 1808 1809 if (this.shop.products.utilities.sort.by == 'Price: High-Low') { 1810 return this.shop.products.list.filtered.sort((a, b) => { 1811 let prodA = Number(a.variants[0].price); 1812 let prodB = Number(b.variants[0].price); 1813 if (prodA < prodB) return 1; 1814 if (prodA > prodB) return -1; 1815 return 0; 1816 }); 1817 } 1818 1819 if (this.shop.products.utilities.sort.by == 'Price: Low-High') { 1820 return this.shop.products.list.filtered.sort((a, b) => { 1821 let prodA = Number(a.variants[0].price); 1822 let prodB = Number(b.variants[0].price); 1823 if (prodA < prodB) return -1; 1824 if (prodA > prodB) return 1; 1825 return 0; 1826 }); 1827 } 1828 1829 if (this.shop.products.utilities.sort.by == 'Sale') { 1830 return this.shop.products.list.filtered.sort((a, b) => { 1831 let prodA = this.calculateProductDiscount(a.variants[0].compare_at_price, a.variants[0].price); 1832 let prodB = this.calculateProductDiscount(b.variants[0].compare_at_price, b.variants[0].price); 1833 if (prodA < prodB) return -1; 1834 if (prodA > prodB) return 1; 1835 return 0; 1836 }); 1837 } 1838 }, 1839 1840 // product item methods 1841 productsFadeIn(delay) { 1842 document.querySelectorAll('.products-grid-listing .product-grid-item').forEach((item, index) => { 1843 item.classList.remove('fade-in'); 1844 }); 1845 1846 setTimeout(() => { 1847 document.querySelectorAll('.products-grid-listing .product-grid-item').forEach((item, index) => { 1848 setTimeout(() => { 1849 item.classList.add('fade-in'); 1850 }, (index * 100)); 1851 }); 1852 }, delay); 1853 }, 1854 goToProductPage(productHandle) { 1855 window.location = `https://walkerengineering.co/products/${productHandle}`; 1856 }, 1857 calculateProductDiscount(compare_at_price, price) { 1858 var calculate; 1859 var discount; 1860 if (price == 0 || price == '0.00') { 1861 return '100% OFF'; 1862 } 1863 else { 1864 // divide the price to compare_at_price then times 100 then minu
1864s 100 1865 calculate = 100 - ((price/compare_at_price) * 100); 1866 discount = calculate < 0 ? calculate * -1 : calculate; 1867 return discount.toFixed(0)+'% OFF'; 1868 } 1869 }, 1870 isProductNew(created_at) { 1871 const dateNow = new Date(); 1872 const dateNowMonth = dateNow.getMonth(); 1873 1874 const dateCreated = new Date(created_at); 1875 const dateCreatedMonth = dateCreated.getMonth(); 1876 1877 if (dateCreatedMonth == dateNowMonth) return true; 1878 return false; 1879 }, 1880 toggleCartDrawer(boolean) { 1881 const openCartDrawer = document.querySelector('.we-btn--open-cart'); 1882 const closeCartDrawer = document.querySelector('.we-btn--close-cart'); 1883 if (boolean) openCartDrawer.click(); 1884 else closeCartDrawer.click(); 1885 }, 1886 addToCart() { 1887 let items = [ 1888 { 1889 id: this.product.data.variants[0].id, 1890 quantity: this.product.inputQuantity 1891 } 1892 ]; 1893 1894 console.log('addToCart =', items); 1895 1896 let self = this; 1897 1898 $.ajax({ 1899 type: "POST", 1900 url: '/cart/add.js', 1901 dataType: 'json', 1902 crossDomain: true, 1903 data: { 1904 items: items 1905 }, 1906 success: function(data) { 1907 console.log('Added to Cart SUCCESS...', data); 1908 self.toggleCartDrawer(true); 1909 }, 1910 error: function(error) { 1911 console.log('Added to Cart FAILED...', error); 1912 } 1913 }); 1914 }, 1915 addThisToCart(product, event) { 1916 console.log('AddThisToCart =', product); 1917 console.log('event =', event); 1918 1919 event.stopPropagation(); 1920 let items = [ 1921 { 1922 id: product.variants[0].id, 1923 quantity: 1, 1924 } 1925 ]; 1926 1927 let self = this; 1928 1929 $.ajax({ 1930 type: "POST", 1931 url: '/cart/add.js', 1932 dataType: 'json', 1933 crossDomain: true, 1934 data: { 1935 items: items 1936 }, 1937 success: function(data) { 1938 console.log('Added this to Cart SUCCESS...', data); 1939 self.toggleCartDrawer(true); 1940 }, 1941 error: function(error) { 1942 console.log('Added this to Cart FAILED...', error); 1943 } 1944 }); 1945 }, 1946 proceedToBuyNow() { 1947 this.addToCart(); 1948 setTimeout(() => { 1949 window.location = `https://walkerengineering.co/cart`; 1950 }, 1000); 1951 }, 1952 1953 // product search 1954 toggleProductSearch(boolean) { 1955 // console.log('toggleProductSearch'); 1956 this.shop.products.search.active = boolean; 1957 this.clearProductSearch(); 1958 }, 1959 clearProductSearch() { 1960 // console.log('clearProductSearch'); 1961 this.shop.products.search.query = ''; 1962 this.shop.products.search.resultList = []; 1963 }, 1964 doProductSearch() { 1965 // console.log('doProductSearch'); 1966 this.shop.products.search.resultList = []; 1967 this.shop.products.list.all.forEach((productItem, productIndex) => { 1968 if (productItem.title.toLowerCase().includes(this.shop.products.search.query.toLowerCase()) && this.shop.products.search.query != '') { 1969 this.shop.products.search.resultList.push(productItem); 1970 } 1971 }); 1972 }, 1973 } 1974 }; 1975 1976 Vue.createApp(WE_SF_Page_Shop_Airsep_Options).mount('.we-page--shop-airsep'); 1977</script>
1977</div> 1978 </main> 1979 1980 1981 1982 1983 1984<!-- START: WEE Custom Footer --> 1985<div class="we-custom-footer"> 1986 <we-elements type="footer" 1987 v-if="footer.primary.loader && footer.socialmedia.loader" 1988 :footermenu1='footer.primary.data' 1989 :socialmedialist='footer.socialmedia.data' 1990 contactdetails='[ 1991 { 1992 "title": "Address", 1993 "label": "Walker Engineering 9255 San Fernando Rd. Sun Valley, CA 91352", 1994 "url": "https://goo.gl/maps/mmjRv4sDBt4wBGpE7?coh=178572&entry=tt", 1995 "newTab": true 1996 }, 1997 { 1998 "title": "Phone", 1999 "label": "1-818-252-7788", 2000 "url": "tel:1-818-252-7788", 2001 "newTab": false 2002 }, 2003 { 2004 "title": "Fax", 2005 "label": "818-252-7785", 2006 "url": "tel:818-252-7785", 2007 "newTab": false 2008 }, 2009 { 2010 "title": "Email", 2011 "label": "[email protected]", 2012 "url": "mailto:[email protected]", 2013 "newTab": false 2014 } 2015 ]' 2016 copyrightyear='2023' 2017 policylist='[ 2018 { 2019 "name": "Privacy Policy", 2020 "url": "https://cdn.shopify.com/s/files/1/0752/6635/9613/files/Walker_Privacy_Policy_V2.pdf?v=1688745095", 2021 "newTab": true 2022 }, 2023 { 2024 "name": "Terms and Condition", 2025 "url": "https://cdn.shopify.com/s/files/1/0752/6635/9613/files/Walker_Terms_of_Use_V2.pdf?v=1688745095", 2026 "newTab": true 2027 } 2028 ]' 2029 disclaimertext='Our products, including racing filters, are expressly designed and intended solely for off-road and racing applications. These products are not certified for use on public roads or in any jurisdiction requiring emissions compliance. By purchasing and using our products, you acknowledge that they are not suitable for street use and accept any associated legal and regulatory risks. We do not assume responsibility for any unauthorized or non-compliant use of our products. It is your responsibility to adhere to local laws and regulations governing vehicle modifications. Using our products in non-compliant areas may result in legal consequences and void any warranties.' 2030 > 2031 </we-elements> 2032</div> 2033<!-- END: WEE Custom Footer -->
2034<script> 2035 const WE_SF_Footer_Options = { 2036 name: 'WE SF Footer Options', 2037 data() { 2038 return { 2039 footer: { 2040 primary: { 2041 endpoint: 'https://blog.walkerengineering.co/wp-json/walkerengineering/v1/menu-footer-primary', 2042 loader: false, 2043 data: [], 2044 }, 2045 socialmedia: { 2046 endpoint: 'https://blog.walkerengineering.co/wp-json/walkerengineering/v1/menu-social-media', 2047 loader: false, 2048 data: [], 2049 }, 2050 }, 2051 } 2052 }, 2053 created() { 2054 this.fetchFooterPrimaryMenu(); 2055 this.fetchFooterSocialMediaMenu(); 2056 }, 2057 mounted() {}, 2058 updated() {}, 2059 methods: { 2060 fetchFooterPrimaryMenu() { 2061 const dateNow = Date.now(); 2062 fetch(`${this.footer.primary.endpoint}?time=${dateNow}`) 2063 .then((response) => response.json()) 2064 .then((data) => { 2065 console.log(`Fetch Menu - Footer Primary from Endpoint SUCCESS...`, data); 2066 this.footer.primary.data = JSON.stringify(data); 2067 }) 2068 .catch((error) => { 2069 console.log(`Fetch Menu - Footer Primary from Endpoint FAILED...`, data); 2070 }) 2071 .finally(() => { 2072 this.footer.primary.loader = true; 2073 }); 2074 }, 2075 fetchFooterSocialMediaMenu() { 2076 const dateNow = Date.now(); 2077 fetch(`${this.footer.socialmedia.endpoint}?time=${dateNow}`) 2078 .then((response) => response.json()) 2079 .then((data) => { 2080 console.log(`Fetch Menu - Social Media List from Endpoint SUCCESS...`, data); 2081 this.footer.socialmedia.data = JSON.stringify(data); 2082 }) 2083 .catch((error) => { 2084 console.log(`Fetch Menu - Social Media List from Endpoint FAILED...`, data); 2085 }) 2086 .finally(() => { 2087 this.footer.socialmedia.loader = true; 2088 }); 2089 } 2090 } 2091 }; 2092 2093 Vue.createApp(WE_SF_Footer_Options).mount('.we-custom-footer'); 2094</script>
2094 2095 2096 2097 <div style="display: none;" 2098 aria-hidden="true" 2099 data-templates> 2100 2101 <div class="message-banner--container" 2102 role="alert" 2103 data-message-banner> 2104 <div class="message-banner--outer"> 2105 <div class="message-banner--inner" data-message-banner-content></div> 2106 2107 <button class="message-banner--close" 2108 type="button" 2109 aria-label="Close" 2110 data-message-banner-close><svg 2111 aria-hidden="true" 2112 focusable="false" 2113 role="presentation" 2114 xmlns="http://www.w3.org/2000/svg" 2115 width="13" 2116 height="13" 2117 viewBox="0 0 13 13" 2118> 2119 <path fill="currentColor" fill-rule="evenodd" d="M5.306 6.5L0 1.194 1.194 0 6.5 5.306 11.806 0 13 1.194 7.694 6.5 13 11.806 11.806 13 6.5 7.694 1.194 13 0 11.806 5.306 6.5z"/> 2120</svg></button> 2121 </div> 2122 </div> 2123 2124 2125 2126 <section class="atc-banner--container" 2127 role="log" 2128 data-atc-banner> 2129 <div class="atc-banner--outer"> 2130 <div class="atc-banner--inner"> 2131 <div class="atc-banner--product"> 2132 <h2 class="atc-banner--product-title"> 2133 <span class="atc-banner--product-title--icon"> 2134 2135 2136 2137 <svg class="icon-checkmark " aria-hidden="true" focusable="false" role="presentation" xmlns="http://www.w3.org/2000/svg" width="18" height="13" viewBox="0 0 18 13" xmlns="http://www.w3.org/2000/svg"> <path fill="currentColor" fill-rule="evenodd" d="M6.23 9.1L2.078 5.2 0 7.15 6.23 13 18 1.95 15.923 0z" /> </svg> 2138 2139 </span> 2140 Added to your cart: 2141 </h2> 2142 2143 <div class="atc--product"> 2144 <div class="atc--product-image" data-atc-banner-product-image> 2145 <svg class="placeholder--image" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 525.5 525.5"><path d="M324.5 212.7H203c-1.6 0-2.8 1.3-2.8 2.8V308c0 1.6 1.3 2.8 2.8 2.8h121.6c1.6 0 2.8-1.3 2.8-2.8v-92.5c0-1.6-1.3-2.8-2.9-2.8zm1.1 95.3c0 .6-.5 1.1-1.1 1.1H203c-.6 0-1.1-.5-1.1-1.1v-92.5c0-.6.5-1.1 1.1-1.1h121.6c.6 0 1.1.5 1.1 1.1V308z"/><path d="M210.4 299.5H240v.1s.1 0 .2-.1h75.2v-76.2h-105v76.2zm1.8-7.2l20-20c1.6-1.6 3.8-2.5 6.1-2.5s4.5.9 6.1 2.5l1.5 1.5 16.8 16.8c-12.9 3.3-20.7 6.3-22.8 7.2h-27.7v-5.5zm101.5-10.1c-20.1 1.7-36.7 4.8-49.1 7.9l-16.9-16.9 26.3-26.3c1.6-1.6 3.8-2.5 6.1-2.5s4.5.9 6.1 2.5l27.5 27.5v7.8zm-68.9 15.5c9.7-3.5 33.9-10.9 68.9-13.8v13.8h-68.9zm68.9-72.7v46.8l-26.2-26.2c-1.9-1.9-4.5-3-7.3-3s-5.4 1.1-7.3 3l-26.3 26.3-.9-.9c-1.9-1.9-4.5-3-7.3-3s-5.4 1.1-7.3 3l-18.8 18.8V225h101.4z"/><path d="M232.8 254c4.6 0 8.3-3.7 8.3-8.3s-3.7-8.3-8.3-8.3-8.3 3.7-8.3 8.3 3.7 8.3 8.3 8.3zm0-14.9c3.6 0 6.6 2.9 6.6 6.6s-2.9 6.6-6.6 6.6-6.6-2.9-6.6-6.6 3-6.6 6.6-6.6z"/></svg> 2146 </div> 2147 <div class="atc--product-details"> 2148 <h2 class="atc--product-details--title" data-atc-banner-product-title></h2> 2149 <span class="atc--product-details--options" data-atc-banner-product-options></span> 2150 <span class="atc--product-details--price"> 2151 <span class="atc--product-details--price-quantity" data-atc-banner-product-price-quantity></span> 2152 <span class="atc--product-details--price-value money" data-atc-banner-product-price-value></span> 2153 <span class="atc--product-details--price-discounted money" data-atc-banner-product-price-discounted></span> 2154 <span class="atc--product-details--unit-price hidden" data-atc-banner-unit-price> 2155 ** total_quantity ** | ** unit_price ** / ** unit_measure ** 2156 </span> 2157 </span> 2158 <ul class="discount-list" data-atc-banner-product-discounts> 2159 <li class="discount-list-item"> 2160 2161 2162 2163 <svg class="icon-sale-tag " aria-hidden="true" focusable="false" role="presentation" xmlns="http://www.w3.org/2000/svg" width="350" height="350" viewB
2163ox="0 0 350 350" fill="none"> <path fill="currentColor" fill-rule="evenodd" clip-rule="evenodd" d="M0 197.826C0 192.95 1.93821 188.275 5.38762 184.83L179.459 10.7587C186.348 3.86966 195.692 -0.000356971 205.435 2.46966e-08H334.782C343.187 2.46966e-08 350 6.81304 350 15.2173V144.565C350 154.308 346.13 163.651 339.241 170.541L165.17 344.612C161.725 348.061 157.049 350 152.174 350C147.299 350 142.624 348.061 139.179 344.612L5.38762 210.821C1.93821 207.376 0 202.701 0 197.826ZM304.348 68.4786C304.348 81.085 294.128 91.3046 281.521 91.3046C268.915 91.3046 258.695 81.085 258.695 68.4786C258.695 55.8721 268.915 45.6525 281.521 45.6525C294.128 45.6525 304.348 55.8721 304.348 68.4786Z" fill="currentColor"/> </svg> 2164 2165 <span class="discount-title"></span> 2166 (-<span class="money discount-amount"></span>) 2167 </li> 2168 </ul> 2169 <span class="atc--line-item-subscriptions" data-atc-banner-product-subscription-title></span> 2170 </div> 2171 </div> 2172 </div> 2173 2174 <div class="atc-banner--cart"> 2175 <div class="atc-banner--cart-subtotal"> 2176 <span class="atc-subtotal--label"> 2177 Cart subtotal 2178 </span> 2179 <span class="atc-subtotal--price money" data-atc-banner-cart-subtotal></span> 2180 </div> 2181 2182 <footer class="atc-banner--cart-footer"> 2183 <a class="button-secondary atc-button--viewcart" 2184 href="/cart" 2185 data-atc-banner-cart-button> 2186 View cart (<span></span>) 2187 </a> 2188 <form class="" 2189 action="/cart" 2190 method="post" 2191 aria-label="cart checkout"> 2192 <button class="button-primary atc-button--checkout" 2193 type="submit" 2194 name="checkout"> 2195 2196 <span>Checkout</span> 2197 </button> 2198 </form> 2199 </footer> 2200 </div> 2201 </div> 2202 2203 <button class="atc-banner--close" 2204 type="button" 2205 aria-label="Close" 2206 data-atc-banner-close><svg 2207 aria-hidden="true" 2208 focusable="false" 2209 role="presentation" 2210 xmlns="http://www.w3.org/2000/svg" 2211 width="13" 2212 height="13" 2213 viewBox="0 0 13 13" 2214> 2215 <path fill="currentColor" fill-rule="evenodd" d="M5.306 6.5L0 1.194 1.194 0 6.5 5.306 11.806 0 13 1.194 7.694 6.5 13 11.806 11.806 13 6.5 7.694 1.194 13 0 11.806 5.306 6.5z"/> 2216</svg></button> 2217 </div> 2218 </section> 2219 2220 2221 </div> 2222 2223 2224 2225 <div class="modal" 2226 data-modal-container 2227 aria-label="modal window" 2228 data-trap-focus> 2229 <div class="modal-inner" data-modal-inner> 2230 <button class="modal-close" 2231 type="button" 2232 aria-label="Close" 2233 data-modal-close> 2234 <svg 2235 aria-hidden="true" 2236 focusable="false" 2237 role="presentation" 2238 xmlns="http://www.w3.org/2000/svg" 2239 width="13" 2240 height="13" 2241 viewBox="0 0 13 13" 2242> 2243 <path fill="currentColor" fill-rule="evenodd" d="M5.306 6.5L0 1.194 1.194 0 6.5 5.306 11.806 0 13 1.194 7.694 6.5 13 11.806 11.806 13 6.5 7.694 1.194 13 0 11.806 5.306 6.5z"/> 2244</svg> 2245 </button> 2246 <div class="modal-content" data-modal-content></div> 2247 </div> 2248 </div> 2249 2250 <div class="modal-1" 2251 data-modal-container-1 2252 aria-label="modal window"> 2253 <div class="modal-inner" data-modal-inner> 2254 <button class="modal-close" 2255 type="button" 2256 aria-label="Close" 2257 data-modal-1-close> 2258 <svg 2259 aria-hidden="true" 2260 focusable="false" 2261 role="presentation" 2262 xmlns="http://www.w3.org/2000/svg" 2263 width="13" 2264 height="13" 2265 viewBox="0 0 13 13" 2266> 2267 <path fill="currentColor" fill-rule="evenodd" d="M5.306 6.5L0 1.194 1.194 0 6.5 5.306 11.806 0 13 1.194 7.694 6.5 13 11.806 11.806 13 6.5 7.694 1.194 13 0 11.806 5.306 6.5z"/> 2268</svg> 2269 </button> 2270 <div class="modal-content" data-modal-content></div> 2271 </div> 2272 </div> 2273 2274 2275 2276 2277 2278 2279 <div class="pswp" 2280 tabindex="-1" 2281 role="dialog" 2282 aria-hidden="true" 2283 aria-label="Product zoom dialog" 2284 data-photoswipe> 2285 <div class="pswp__bg"></div> 2286 2287 2288 <div class="pswp__scroll-wrap"> 2289 2290 <div class="pswp__container" aria-hidden="true"> 2291 <div class="pswp__item"></div> 2292 <div class="pswp__item"></div> 2293 <div class="pswp__item"></div> 2294 </div> 2295 2296 2297 <div class="pswp__ui pswp__ui--hidden"> 2298 <div class="pswp__top-bar"> 2299 2300 <div class="pswp__counter"></div> 2301 <button class="pswp__button pswp__button--close" title="Close">
2302 <span tabindex="-1"> 2303 2304 2305 2306 <svg class="icon-close " aria-hidden="true" focusable="false" role="presentation" xmlns="http://www.w3.org/2000/svg" width="18" height="18" viewBox="0 0 18 18" fill="none"> <path d="M17 1L1 17" stroke="currentColor" stroke-width="1.75" stroke-linejoin="round"/> <path d="M1 1L17 17" stroke="currentColor" stroke-width="1.75" stroke-linejoin="round"/> </svg> 2307 2308 </span> 2309 </button> 2310 <button class="pswp__button pswp__button--share" title="Share"></button> 2311 <button class="pswp__button pswp__button--fs" title="Toggle fullscreen"></button> 2312 <button class="pswp__button pswp__button--zoom" title="Zoom in/out"></button> 2313 2314 2315 2316 <div class="pswp__preloader"> 2317 <div class="pswp__preloader__icn"> 2318 <div class="pswp__preloader__cut"> 2319 <div class="pswp__preloader__donut"></div> 2320 </div> 2321 </div> 2322 </div> 2323 </div> 2324 2325 <div class="pswp__share-modal pswp__share-modal--hidden pswp__single-tap"> 2326 <div class="pswp__share-tooltip"></div> 2327 </div> 2328 2329 <button class="pswp__button pswp__button--arrow--left" title="Previous (arrow left)"></button> 2330 <button class="pswp__button pswp__button--arrow--right" title="Next (arrow right)"></button> 2331 2332 <div class="pswp__caption"> 2333 <div class="pswp__caption__center"></div> 2334 </div> 2335 </div> 2336 </div> 2337 <div class="product-zoom--thumbnails" data-photoswipe-thumbs> 2338 <button 2339 class="gallery-navigation--scroll-button scroll-left" 2340 aria-label="Scroll thumbnails left" 2341 data-gallery-scroll-button> 2342 <svg 2343 aria-hidden="true" 2344 focusable="false" 2345 role="presentation" 2346 width="14" 2347 height="8" 2348 viewBox="0 0 14 8" 2349 fill="none" 2350 xmlns="http://www.w3.org/2000/svg" 2351> 2352 <path class="icon-chevron-down-left" d="M7 6.75L12.5 1.25" stroke="currentColor" stroke-width="1.75" stroke-linecap="square"/> 2353 <path class="icon-chevron-down-right" d="M7 6.75L1.5 1.25" stroke="currentColor" stroke-width="1.75" stroke-linecap="square"/> 2354</svg> 2355 2356 </button> 2357 <button 2358 class="gallery-navigation--scroll-button scroll-right" 2359 aria-label="Scroll thumbnails right" 2360 data-gallery-scroll-button> 2361 <svg 2362 aria-hidden="true" 2363 focusable="false" 2364 role="presentation" 2365 width="14" 2366 height="8" 2367 viewBox="0 0 14 8" 2368 fill="none" 2369 xmlns="http://www.w3.org/2000/svg" 2370> 2371 <path class="icon-chevron-down-left" d="M7 6.75L12.5 1.25" stroke="currentColor" stroke-width="1.75" stroke-linecap="square"/> 2372 <path class="icon-chevron-down-right" d="M7 6.75L1.5 1.25" stroke="currentColor" stroke-width="1.75" stroke-linecap="square"/> 2373</svg> 2374 2375 </button> 2376 <div class="product-zoom--thumb-scroller" data-photoswipe-thumb-scroller></div> 2377 </div> 2378 </div> 2379 2380 2381 2382 2383 2384 2385 2386 2387 2388 2389 2390 <div class="product-compare-drawer" data-product-compare-drawer> 2391 <div class="product-compare-drawer__header" data-product-compare-drawer-header> 2392 <h2 class="product-compare-drawer__title" data-product-compare-drawer-title> 2393 Compare products 2394 </h2> 2395 2396 <p class="product-compare-drawer__notification" 2397 data-product-count-one="Select 2 or 3 items to compare" 2398 data-product-count-other="** count ** of 3 items selected" 2399 data-product-compare-drawer-notification> 2400 {"one"=>"Select 2 or 3 items to compare", "other"=>"{{ count }} of 3 items selected"} 2401 </p> 2402 2403 <span class="product-compare-drawer__trigger"> 2404 <svg 2405 aria-hidden="true" 2406 focusable="false" 2407 role="presentation" 2408 width="14" 2409 height="8" 2410 viewBox="0 0 14 8" 2411 fill="none" 2412 xmlns="http://www.w3.org/2000/svg" 2413> 2414 <path class="icon-chevron-down-left" d="M7 6.75L12.5 1.25" stroke="currentColor" stroke-width="1.75" stroke-linecap="square"/> 2415 <path class="icon-chevron-down-right" d="M7 6.75L1.5 1.25" stroke="currentColor" stroke-width="1.75" stroke-linecap="square"/> 2416</svg> 2417 2418 </span> 2419 </div> 2420 2421 <div class="product-compare-drawer__container"> 2422 <div class="product-compare-drawer__items" data-compare-drawer-items-container> 2423 <template data-product-compare-drawer-item-template> 2424 <div class='product-compare-drawer__item 2425 imagestyle-- 2426 natural'> 2427 <div class="product-compare-drawer__image"> 2428 <figure class="productitem--image" data-product-compare-drawer-image></figure> 2429 </div> 2430 <a class="product-compare-drawer__item-title" data-product-compare-drawer-title></a> 2431 <button class="product-compare-drawer__remove" data-product-compare-drawer-remove> 2432 2433 2434 2435 <svg class="icon-remove product-compare-drawer__remove-icon" aria-hidden="true" focusable="false" role="presentation" xmlns="http://www.w3.org/2000/svg" width="10" height="10" viewB
2435ox="0 0 10 10" xmlns="http://www.w3.org/2000/svg"> <path fill="currentColor" d="M6.08785659,5 L9.77469752,1.31315906 L8.68684094,0.225302476 L5,3.91214341 L1.31315906,0.225302476 L0.225302476,1.31315906 L3.91214341,5 L0.225302476,8.68684094 L1.31315906,9.77469752 L5,6.08785659 L8.68684094,9.77469752 L9.77469752,8.68684094 L6.08785659,5 Z"></path> </svg> 2436 2437 </button> 2438 </div> 2439 </template> 2440 2441 2442 <div class="product-compare-drawer__item-placeholder" data-product-compare-drawer-item-placeholder> 2443 <p class="product-compare-drawer__item-placeholder-text"> 2444 2445 Select first item to compare 2446 2447 </p> 2448 </div> 2449 2450 <div class="product-compare-drawer__item-placeholder" data-product-compare-drawer-item-placeholder> 2451 <p class="product-compare-drawer__item-placeholder-text"> 2452 2453 Select second item to compare 2454 2455 </p> 2456 </div> 2457 2458 <div class="product-compare-drawer__item-placeholder" data-product-compare-drawer-item-placeholder> 2459 <p class="product-compare-drawer__item-placeholder-text"> 2460 2461 Select third item to compare 2462 2463 </p> 2464 </div> 2465 2466 </div> 2467 2468 <div class="product-compare-drawer__actions"> 2469 <a class="" 2470 href="/" 2471 data-product-compare-drawer-link 2472 data-product-compare-drawer-link-text="Compare"> 2473 Compare 2474 </a> 2475 2476 <button class="product-compare-drawer__clear-all" data-product-compare-clear-all> 2477 Clear all 2478 </button> 2479 </div> 2480 </div> 2481 </div> 2482 2483 2484 2485 2486 2487 2488 2489 2490 2491 2492 2493 2494 2495 2496
2496<script type="application/json" data-product-compare-breadcrumb-data> 2497 { 2498 "title": null, 2499 "update": true 2500 } 2501 </script>
2501 2502 2503 2504 2505 2506
2506<script> 2507 (function() { 2508 var classes = { 2509 block: 'pxu-lia-block', 2510 element: 'pxu-lia-element' 2511 }; 2512 2513 document.querySelectorAll('[type="application/pxs-animation-mapping+json"]').forEach(function(mappingEl) { 2514 const section = mappingEl.parentNode; 2515 try { 2516 const mapping = JSON.parse(mappingEl.innerHTML); 2517 mapping.elements.forEach(function(elementSelector) { 2518 section.querySelectorAll(elementSelector).forEach(function(element) { 2519 element.classList.add(classes.element); 2520 }); 2521 }); 2522 2523 mapping.blocks.forEach(function(blockSelector) { 2524 section.querySelectorAll(blockSelector).forEach(function(block) { 2525 block.classList.add(classes.block); 2526 }); 2527 }); 2528 } catch (error) { 2529 console.warn('Unable to parse animation mapping', mappingEl, error); 2530 } 2531 }); 2532 })() 2533 </script>
2533 2534 2535 2536
2536<script 2537 src="//walkerengineering.co/cdn/shop/t/3/assets/empire.js?v=67293966988499847241683835266" 2538 data-scripts 2539 data-shopify-api-url="//walkerengineering.co/cdn/shopifycloud/storefront/assets/themes_support/api.jquery-7ab1a3a4.js" 2540 data-shopify-countries="/services/javascripts/countries.js" 2541 data-shopify-common="//walkerengineering.co/cdn/shopifycloud/storefront/assets/themes_support/shopify_common-5f594365.js" 2542 data-shopify-cart="//walkerengineering.co/cdn/shop/t/3/assets/jquery.cart.js?v=9642" 2543 data-pxu-polyfills="//walkerengineering.co/cdn/shop/t/3/assets/polyfills.min.js?v=176531307415821907591683220674"> 2544 </script>
2544 2545 2546 2547 2548 2549 2550 2551 2552 2553 2554 2555
2555<script type="application/ld+json"> 2556 { 2557 "@context": "http://schema.org", 2558 "@type": "BreadcrumbList", 2559 "itemListElement": [ 2560 2561 { 2562 "@type": "ListItem", 2563 "position": 1, 2564 "item": { 2565 "@id": "/pages/airsep", 2566 "name": "Shop Walker AIRSEP®" 2567 } 2568 } 2569 2570 ] 2571 } 2572 </script>
2572 2573 2574 2575 2576 2577 2578 2579 2580
2581<script type="application/ld+json"> 2582 { 2583 "@context": "http://schema.org", 2584 "@type": "WebSite", 2585 "name": "Walker Engineering Enterprises", 2586 "url": "https://walkerengineering.co" 2587 } 2588</script>
2588 2589 2590 2591
2591<script> 2592 (function() { 2593 function handleFirstTab(e) { 2594 if (e.keyCode === 9) { // the "I am a keyboard user" key 2595 document.body.classList.add('user-is-tabbing'); 2596 window.removeEventListener('keydown', handleFirstTab); 2597 } 2598 } 2599 window.addEventListener('keydown', handleFirstTab); 2600 })(); 2601 </script>
2601 2602 2603 2604 <link href="//walkerengineering.co/cdn/shop/t/3/assets/ripple.css?v=100240391239311985871683220674" rel="stylesheet" type="text/css" media="all" /> 2605 2606 2607
2607<script 2608 src="//walkerengineering.co/cdn/shop/t/3/assets/instantPage.min.js?v=178386566408336040481683220674" 2609 type="module" 2610 defer> 2611 </script>
2611 2612 <style> .post.has-post-thumbnail p.has-text-align-center,.home .post p.has-text-align-center,.blog post p.has-text-align-center {text-align: center;} </style> 2613<div id="shopify-block-AUmU0akhDazRra1h5V__9246707248847178381" class="shopify-block shopify-app-block"> 2614
2614<script src="https://shopify.livechatinc.com/api/v1/script/shop/walker-engineering-group.myshopify.com/widget.js" defer></script>
2614 2615 2616 2617 2618</div>
2618<script src="https://cdn.shopify.com/storefront/standard-actions.js" type="module" data-source-attribution="shopify.standard_actions"></script>
2618 2619</body> 2620</html>
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.