1<!doctype html> 2 3<html class="no-js" lang="en"> 4 <head> 5 <meta name="google-site-verification" content="Al40wOd2inuozVUnp9PiAD2Sdl3qhrfdU-JkhV7iupE" /><meta charset="utf-8"> 6 <meta name="viewport" content="width=device-width, initial-scale=1.0, height=device-height, minimum-scale=1.0, maximum-scale=5.0"> 7 <meta name="theme-color" content="#08c873"><title>Canada Grow Supplies Blog 8</title><meta name="description" content="Get the best tips and tutorials for all your indoor growing needs. From Medical to Recreational use, we help you grow cannabis the right way."><link rel="canonical" href="https://canadagrowsupplies.com/blogs/main"><link rel="shortcut icon" href="//canadagrowsupplies.com/cdn/shop/files/Screen_Shot_2022-06-27_at_10.10.43_AM_96x96.png?v=1656339054" type="image/png"><!--begin-boost-pfs-filter-css--> 9 <link rel="preload stylesheet" href="//canadagrowsupplies.com/cdn/shop/t/43/assets/boost-pfs-instant-search.css?v=146474835330714392691686760904" as="style"><link href="//canadagrowsupplies.com/cdn/shop/t/43/assets/boost-pfs-custom.css?v=60940052044648655461686760910" rel="stylesheet" type="text/css" media="all" /> 10 11 12 <!--end-boost-pfs-filter-css--> 13 14
14<script src="//code.jivosite.com/widget/UgN7Ar8kaY" async></script>
vendor: 1 bytes, line 14
14
15<script> 16 window.onload = function(){ 17 let desc = document.getElementsByClassName("collection__description"); 18 let desc_link = document.getElementsByClassName("collection_desc_up")[0]; 19 let desc_block = document.getElementsByClassName("left-text-box")[0]; 20 if(desc.length){ 21 let h = desc[0].clientHeight; 22 if(h>340){ 23 desc_link.classList.add('active'); 24 desc_block.classList.remove('auto'); 25 } 26 } 27 let check_ba = setInterval(function() { 28 let currBlock = document.getElementsByClassName("bacurr-cur-blocker"); 29 if (currBlock.length) { 30 currBlock = document.getElementsByClassName("bacurr-cur-blocker")[0]; 31 let currParent = document.getElementsByClassName("header__action-list")[0]; 32 currParent.appendChild(currBlock); 33 setTimeout(function(){ 34 let cur_name = document.getElementsByClassName('ba-chosen'); 35 let cur_arr = currBlock.getElementsByTagName('li'); 36 if(cur_name != 'USD' && cur_name != 'CAD') cur_arr[0].click(); 37 for (var i = 0; i < cur_arr.length; i++) { 38 let rel = cur_arr[i].getAttribute('rel'); 39 if(rel == cur_name[0].innerHTML) cur_arr[i].click(); 40 } 41 42 }, 100); 43 clearInterval(check_ba); 44 } 45 }, 100); 46 }; 47</script>
47 48<link rel="preload" as="style" href="//canadagrowsupplies.com/cdn/shop/t/43/assets/theme.css?v=112707380033230105611705794849"> 49 <link rel="preload" as="script" href="//canadagrowsupplies.com/cdn/shop/t/43/assets/theme.js?v=79656976836630833811704722455"> 50 <link rel="preconnect" href="https://cdn.shopify.com"> 51 <link rel="preconnect" href="https://fonts.shopifycdn.com"> 52 <link rel="dns-prefetch" href="https://productreviews.shopifycdn.com"> 53 <link rel="dns-prefetch" href="https://ajax.googleapis.com"> 54 <link rel="dns-prefetch" href="https://maps.googleapis.com"> 55 <link rel="dns-prefetch" href="https://maps.gstatic.com"> 56 57 <meta property="og:type" content="website"> 58 <meta property="og:title" content="Canada Grow Supplies Blog"><meta property="og:description" content="Get the best tips and tutorials for all your indoor growing needs. From Medical to Recreational use, we help you grow cannabis the right way."><meta property="og:url" content="https://canadagrowsupplies.com/blogs/main"> 59<meta property="og:site_name" content="Canada Grow Supplies"><meta name="twitter:card" content="summary"><meta name="twitter:title" content="Canada Grow Supplies Blog"> 60 <meta name="twitter:description" content="Get the best tips and tutorials for all your indoor growing needs. From Medical to Recreational use, we help you grow cannabis the right way."> 61 <link rel="preload" href="//canadagrowsupplies.com/cdn/fonts/roboto/roboto_n4.2019d890f07b1852f56ce63ba45b2db45d852cba.woff2" as="font" type="font/woff2" crossorigin><link rel="preload" href="//canadagrowsupplies.com/cdn/fonts/roboto/roboto_n4.2019d890f07b1852f56ce63ba45b2db45d852cba.woff2" as="font" type="font/woff2" crossorigin><style> 62 @font-face { 63 font-family: Roboto; 64 font-weight: 400; 65 font-style: normal; 66 font-display: swap; 67 src: url("//canadagrowsupplies.com/cdn/fonts/roboto/roboto_n4.2019d890f07b1852f56ce63ba45b2db45d852cba.woff2") format("woff2"), 68 url("//canadagrowsupplies.com/cdn/fonts/roboto/roboto_n4.238690e0007583582327135619c5f7971652fa9d.woff") format("woff"); 69} 70 71 @font-face { 72 font-family: Roboto; 73 font-weight: 400; 74 font-style: normal; 75 font-display: swap; 76 src: url("//canadagrowsupplies.com/cdn/fonts/roboto/roboto_n4.2019d890f07b1852f56ce63ba45b2db45d852cba.woff2") format("woff2"), 77 url("//canadagrowsupplies.com/cdn/fonts/roboto/roboto_n4.238690e0007583582327135619c5f7971652fa9d.woff") format("woff"); 78} 79 80@font-face { 81 font-family: Roboto; 82 font-weight: 600; 83 font-style: normal; 84 font-display: swap; 85 src: url("//canadagrowsupplies.com/cdn/fonts/roboto/roboto_n6.3d305d5382545b48404c304160aadee38c90ef9d.woff2") format("woff2"), 86 url("//canadagrowsupplies.com/cdn/fonts/roboto/roboto_n6.bb37be020157f87e181e5489d5e9137ad60c47a2.woff") format("woff"); 87} 88 89@font-face { 90 font-family: Roboto; 91 font-weight: 400; 92 font-style: italic; 93 font-display: swap; 94 src: url("//canadagrowsupplies.com/cdn/fonts/roboto/roboto_i4.57ce898ccda22ee84f49e6b57ae302250655e2d4.woff2") format("woff2"), 95 url("//canadagrowsupplies.com/cdn/fonts/roboto/roboto_i4.b21f3bd061cbcb83b824ae8c7671a82587b264bf.woff") format("woff"); 96} 97 98 99 @font-face { 100 font-family: Roboto; 101 font-weight: 700; 102 font-style: normal; 103 font-display: swap; 104 src: url("//canadagrowsupplies.com/cdn/fonts/roboto/roboto_n7.f38007a10afbbde8976c4056bfe890710d51dec2.woff2") format("woff2"), 105 url("//canadagrowsupplies.com/cdn/fonts/roboto/roboto_n7.94bfdd3e80c7be00e128703d245c207769d763f9.woff") format("woff"); 106} 107 108 @font-face { 109 font-family: Roboto; 110 font-weight: 400; 111 font-style: italic; 112 font-display: swap; 113 src: url("//canadagrowsupplies.com/cdn/fonts/roboto/roboto_i4.57ce898ccda22ee84f49e6b57ae302250655e2d4.woff2") format("woff2"), 114 url("//canadagrowsupplies.com/cdn/fonts/roboto/roboto_i4.b21f3bd061cbcb83b824ae8c7671a82587b264bf.woff") format("woff"); 115} 116 117 @font-face { 118 font-family: Roboto; 119 font-weight: 700; 120 font-style: italic; 121 font-display: swap; 122 src: url("//canadagrowsupplies.com/cdn/fonts/roboto/roboto_i7.7ccaf9410746f2c53340607c42c43f90a9005937.woff2") format("woff2"), 123 url("//canadagrowsupplies.com/cdn/fonts/roboto/roboto_i7.49ec21cdd7148292bffea74c62c0df6e93551516.woff") format("woff"); 124} 125 126 127 :root { 128 --default-text-font-size : 15px; 129 --base-text-font-size : 16px; 130 --heading-font-family : Roboto, sans-serif;
131 --heading-font-weight : 400; 132 --heading-font-style : normal; 133 --text-font-family : Roboto, sans-serif; 134 --text-font-weight : 400; 135 --text-font-style : normal; 136 --text-font-bolder-weight: 600; 137 --text-link-decoration : underline; 138 139 --text-color : #677279; 140 --text-color-rgb : 103, 114, 121; 141 --heading-color : #000000; 142 --border-color : #e1e3e4; 143 --border-color-rgb : 225, 227, 228; 144 --form-border-color : #d4d6d8; 145 --accent-color : #08c873; 146 --accent-color-rgb : 8, 200, 115; 147 --link-color : #08c873; 148 --link-color-hover : #057e49; 149 --background : #e5e5e5; 150 --secondary-background : #ffffff; 151 --secondary-background-rgb : 255, 255, 255; 152 --accent-background : rgba(8, 200, 115, 0.08); 153 154 --input-background: #ffffff; 155 156 --error-color : #ff0000; 157 --error-background : rgba(255, 0, 0, 0.07); 158 --success-color : #00aa00; 159 --success-background: rgba(0, 170, 0, 0.11); 160 161 --primary-button-background : #08c873; 162 --primary-button-background-rgb : 8, 200, 115; 163 --primary-button-text-color : #ffffff; 164 --secondary-button-background : #065a33; 165 --secondary-button-background-rgb: 6, 90, 51; 166 --secondary-button-text-color : #ffffff; 167 168 --header-background : #f4f4f4; 169 --header-text-color : #08c873; 170 --header-light-text-color: #065a33; 171 --header-border-color : rgba(6, 90, 51, 0.3); 172 --header-accent-color : #08c873; 173 174 --footer-background-color: #1c1c1c; 175 --footer-heading-text-color: #ffffff; 176 --footer-body-text-color: #ffffff; 177 --footer-body-text-color-rgb: 255, 255, 255; 178 --footer-accent-color: #08c873; 179 --footer-accent-color-rgb: 8, 200, 115; 180 --footer-border: none; 181 182 --flickity-arrow-color: #abb1b4;--product-on-sale-accent : #ee0000; 183 --product-on-sale-accent-rgb : 238, 0, 0; 184 --product-on-sale-color : #ffffff; 185 --product-in-stock-color : #008a00; 186 --product-low-stock-color : #ee0000; 187 --product-sold-out-color : #8a9297; 188 --product-custom-label-1-background: #008a00; 189 --product-custom-label-1-color : #ffffff; 190 --product-custom-label-2-background: #00a500; 191 --product-custom-label-2-color : #ffffff; 192 --product-review-star-color : #ffbd00; 193 194 --mobile-container-gutter : 20px; 195 --desktop-container-gutter: 40px; 196 197 /* Shopify related variables */ 198 --payment-terms-background-color: #e5e5e5; 199 } 200</style> 201
202<script> 203 // IE11 does not have support for CSS variables, so we have to polyfill them 204 if (!(((window || {}).CSS || {}).supports && window.CSS.supports('(--a: 0)'))) { 205 const script = document.createElement('script'); 206 script.type = 'text/javascript'; 207 script.src = 'https://cdn.jsdelivr.net/npm/css-vars-ponyfill@2'; 208 script.onload = function() { 209 cssVars({}); 210 }; 211 212 document.getElementsByTagName('head')[0].appendChild(script); 213 } 214</script>
214 215 216 217
217<script>window.performance && window.performance.mark && window.performance.mark('shopify.content_for_header.start');</script>
217<meta name="facebook-domain-verification" content="0jnkjqleu7sy5jxofsj9jlkgbrb1ry"> 218<meta name="google-site-verification" content="jxyj7-uPnvdC5Za4o25CHmFv3Z37hDpMhg5J2bticgc"> 219<meta id="shopify-digital-wallet" name="shopify-digital-wallet" content="/56650104875/digital_wallets/dialog"> 220<link rel="ucp" href="/.well-known/ucp" version="2026-08-25"><link rel="alternate" type="application/atom+xml" title="Feed" href="/blogs/main.atom" /> 221<link rel="next" href="/blogs/main?page=2"> 222<link rel="alternate" hreflang="x-default" href="https://canadagrowsupplies.com/blogs/main"> 223<link rel="alternate" hreflang="en" href="https://canadagrowsupplies.com/blogs/main"> 224<link rel="alternate" hreflang="fr" href="https://canadagrowsupplies.com/fr/blogs/main">
225<script async="async" src="/checkouts/internal/preloads.js?locale=en-CA"></script>
225 226<link rel="preconnect" href="https://shop.app" crossorigin="anonymous">
227<script async="async" src="https://shop.app/checkouts/internal/preloads.js?locale=en-CA&shop_id=56650104875" crossorigin="anonymous"></script>
vendor: 1 bytes, line 227
227
228<script id="apple-pay-shop-capabilities" type="application/json">{"shopId":56650104875,"countryCode":"CA","currencyCode":"CAD","merchantCapabilities":["supports3DS"],"merchantId":"gid:\/\/shopify\/Shop\/56650104875","merchantName":"Canada Grow Supplies","requiredBillingContactFields":["postalAddress","email","phone"],"requiredShippingContactFields":["postalAddress","email","phone"],"shippingType":"shipping","supportedNetworks":["visa","masterCard","amex","discover","interac","jcb"],"total":{"type":"pending","label":"Canada Grow Supplies","amount":"1.00"},"shopifyPaymentsEnabled":true,"supportsSubscriptions":true}</script>
vendor: 1 bytes, line 228
228
229<script id="shopify-features" type="application/json">{"accessToken":"4810041e74a4da688762b54729ad2958","betas":["rich-media-storefront-analytics"],"domain":"canadagrowsupplies.com","predictiveSearch":true,"shopId":56650104875,"locale":"en"}</script>
vendor: 1 bytes, line 229
229
230<script>var Shopify = Shopify || {}; 231Shopify.shop = "canada-grow-supplies-main.myshopify.com"; 232Shopify.locale = "en"; 233Shopify.currency = {"active":"CAD","rate":"1.0"}; 234Shopify.country = "CA"; 235Shopify.theme = {"name":"Warehouse - 2023-06-14","id":126057250859,"schema_name":"Warehouse","schema_version":"4.2.2","theme_store_id":null,"role":"main"}; 236Shopify.theme.handle = "null"; 237Shopify.theme.style = {"id":null,"handle":null}; 238Shopify.cdnHost = "canadagrowsupplies.com/cdn"; 239Shopify.routes = Shopify.routes || {}; 240Shopify.routes.root = "/"; 241Shopify.shopJsCdnBaseUrl = "https://cdn.shopify.com/shopifycloud/shop-js"; 242Shopify.SignInWithShop = Shopify.SignInWithShop || {}; 243Shopify.SignInWithShop.User = Shopify.SignInWithShop.User || {}; 244Shopify.SignInWithShop.User.recognized = false;</script>
vendor: 1 bytes, line 244
244
245<script type="module">!function(o){(o.Shopify=o.Shopify||{}).modules=!0}(window);</script>
vendor: 1 bytes, line 245
245
246<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 246
246
247<script> 248 window.ShopifyPay = window.ShopifyPay || {}; 249 window.ShopifyPay.apiHost = "shop.app\/pay"; 250 window.ShopifyPay.redirectState = null; 251</script>
vendor: 1 bytes, line 251
251
252<script> 253 window.Shopify = window.Shopify || {}; 254 window.Shopify.SignInWithShop = window.Shopify.SignInWithShop || {}; 255 window.Shopify.SignInWithShop.assetMetrics = { sampleRate: 0.25 }; 256 window.Shopify.SignInWithShop.eligible = true; 257</script>
vendor: 1 bytes, line 257
257
258<script id="shop-js-analytics" type="application/json">{"pageType":"blog"}</script>
vendor: 1 bytes, line 258
258
259<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 259
259
260<script type="module"> 261 await import("https://cdn.shopify.com/shopifycloud/shop-js/modules/v2/loader.init-shop-cart-sync.en.esm.js"); 262 263 window.Shopify.SignInWithShop?.initShopCartSync?.({"fedCMEnabled":true,"windoidEnabled":true}); 264 265</script>
vendor: 1 bytes, line 265
265
266<script> 267 window.Shopify = window.Shopify || {}; 268 if (!window.Shopify.featureAssets) window.Shopify.featureAssets = {}; 269 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"]}; 270</script>
vendor: 1 bytes, line 270
270
271<script>(function() { 272 var isLoaded = false; 273 function asyncLoad() { 274 if (isLoaded) return; 275 isLoaded = true; 276 var urls = ["https:\/\/loox.io\/widget\/NJZBUTbYHn\/loox.1651514932607.js?shop=canada-grow-supplies-main.myshopify.com","https:\/\/dr4qe3ddw9y32.cloudfront.net\/awin-shopify-integration-code.js?aid=26833\u0026s2s=\u0026v=shopifyApp_2.0.9\u0026ts=1654540403232\u0026shop=canada-grow-supplies-main.myshopify.com","https:\/\/shopify.rakutenadvertising.io\/rakuten_advertising.js?shop=canada-grow-supplies-main.myshopify.com","https:\/\/tag.rmp.rakuten.com\/124899.ct.js?shop=canada-grow-supplies-main.myshopify.com","\/\/swymv3free-01.azureedge.net\/code\/swym-shopify.js?shop=canada-grow-supplies-main.myshopify.com","https:\/\/cdn.shopify.com\/s\/files\/1\/0449\/2568\/1820\/t\/4\/assets\/booster_currency.js?v=1624978055\u0026shop=canada-grow-supplies-main.myshopify.com","https:\/\/cdn.shopify.com\/s\/files\/1\/0449\/2568\/1820\/t\/4\/assets\/booster_currency.js?v=1624978055\u0026shop=canada-grow-supplies-main.myshopify.com","https:\/\/po.kaktusapp.com\/storage\/js\/kaktus_preorder-canada-grow-supplies-main.myshopify.com.js?ver=94\u0026shop=canada-grow-supplies-main.myshopify.com","https:\/\/s1.staq-cdn.com\/grow\/api\/js\/56650104875\/main.js?sId=56650104875\u0026v=BYI4QITYUL3KGTKIYA2II4I2\u0026shop=canada-grow-supplies-main.myshopify.com"]; 277 for (var i = 0; i < urls.length; i++) { 278 var s = document.createElement('script'); 279 s.type = 'text/javascript'; 280 s.async = true; 281 s.src = urls[i]; 282 var x = document.getElementsByTagName('script')[0]; 283 x.parentNode.insertBefore(s, x); 284 } 285 }; 286 if(window.attachEvent) { 287 window.attachEvent('onload', asyncLoad); 288 } else { 289 window.addEventListener('load', asyncLoad, false); 290 } 291})();</script>
vendor: 1 bytes, line 291
291
292<script id="__st">var __st={"a":56650104875,"offset":-14400,"reqid":"e74bc749-2f0d-49e9-93a3-25ce8a4bb71e-1790919456","pageurl":"canadagrowsupplies.com\/blogs\/main","s":"blogs-79655862315","u":"7fb2012d58e0","p":"blog","rtyp":"blog","rid":79655862315};</script>
vendor: 1 bytes, line 292
292
293<script>window.ShopifyPaypalV4VisibilityTracking = true;</script>
vendor: 1 bytes, line 293
293
294<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 294
294
295<script integrity="sha256-JjoPp5ZfB1sSAs5SQaol1x1GgvveM+BgmRzyDexInEQ=" data-source-attribution="shopify.loadfeatures" defer="defer" src="//canadagrowsupplies.com/cdn/shopifycloud/storefront/assets/storefront/load_feature-1bd60354.js" crossorigin="anonymous"></script>
vendor: 1 bytes, line 295
295
296<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 = "//canadagrowsupplies.com/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>
296<script crossorigin="anonymous" defer="defer" src="//canadagrowsupplies.com/cdn/shopifycloud/storefront/assets/shopify_pay/storefront-616277c7.js?v=20250812"></script>
vendor: 1 bytes, line 296
296
297<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 297
297
298<script> 299 window.Shopify = window.Shopify || {}; 300 window.Shopify.MCP = window.Shopify.MCP || {}; 301 window.Shopify.MCP.enabled = true; 302 window.Shopify.MCP.shop = "canada-grow-supplies-main.myshopify.com"; 303 window.Shopify.MCP.mcpEndpoint = "https:\/\/canadagrowsupplies.com\/api\/mcp"; 304 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?\"\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."}},"required":["query"]}}]; 305</script>
vendor: 1 bytes, line 305
305
306<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("\/\/canadagrowsupplies.com\/cdn\/shopifycloud\/storefront\/assets\/storefront\/webmcp-c6b62ece.js","sha256-ke4DDuBjdvea3vxLWxHc9E9nq8zihuG4IfYEGbb77ys=");})(); 307</script>
vendor: 1 bytes, line 307
307
308<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://canadagrowsupplies.com/cdn/shopifycloud/portable-wallets/latest/portable-wallets.en.js",t.type="module",document.head.appendChild(t)}}; 309</script>
vendor: 1 bytes, line 309
309
310<script data-source-attribution="shopify.dynamic_checkout.buyer_consent"> 311 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); 312</script>
vendor: 1 bytes, line 312
312
313<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})}})); 314</script>
314 315<link id="shopify-accelerated-checkout-styles" rel="stylesheet" media="screen" href="https://canadagrowsupplies.com/cdn/shopifycloud/portable-wallets/latest/accelerated-checkout-backwards-compat.css" crossorigin="anonymous"> 316<style id="shopify-accelerated-checkout-cart"> 317 #shopify-buyer-consent { 318 margin-top: 1em; 319 display: inline-block; 320 width: 100%; 321} 322 323#shopify-buyer-consent.hidden { 324 display: none; 325} 326 327#shopify-subscription-policy-button { 328 background: none; 329 border: none; 330 padding: 0; 331 text-decoration: underline; 332 font-size: inherit; 333 cursor: pointer; 334} 335 336#shopify-subscription-policy-button::before { 337 box-shadow: none; 338} 339 340 </style> 341
342<script id="shopify-cfh-end">window.performance && window.performance.mark && window.performance.mark('shopify.content_for_header.end');</script>
342 343 344 <link rel="stylesheet" href="//canadagrowsupplies.com/cdn/shop/t/43/assets/custom.css?v=84305893715940813471704727837"> 345 <link rel="stylesheet" href="//canadagrowsupplies.com/cdn/shop/t/43/assets/theme.css?v=112707380033230105611705794849"> 346 347 348 349 350
350<script type="application/ld+json"> 351 { 352 "@context": "https://schema.org", 353 "@type": "BreadcrumbList", 354 "itemListElement": [{ 355 "@type": "ListItem", 356 "position": 1, 357 "name": "Home", 358 "item": "https://canadagrowsupplies.com" 359 },{ 360 "@type": "ListItem", 361 "position": 2, 362 "name": "Blog", 363 "item": "https://canadagrowsupplies.com/blogs/main" 364 }] 365 } 366 </script>
366 367 368 369 370
370<script> 371 // This allows to expose several variables to the global scope, to be used in scripts 372 window.theme = { 373 pageType: "blog", 374 cartCount: 0, 375 moneyFormat: "\u003cspan class=money\u003e$ {{amount}}\u003c\/span\u003e", 376 moneyWithCurrencyFormat: "\u003cspan class=money\u003e$ {{amount}} CAD\u003c\/span\u003e", 377 currencyCodeEnabled: false, 378 showDiscount: true, 379 discountMode: "percentage", 380 cartType: "drawer" 381 }; 382 383 window.routes = { 384 rootUrl: "\/", 385 rootUrlWithoutSlash: '', 386 cartUrl: "\/cart", 387 cartAddUrl: "\/cart\/add", 388 cartChangeUrl: "\/cart\/change", 389 searchUrl: "\/search", 390 productRecommendationsUrl: "\/recommendations\/products" 391 }; 392 393 window.languages = { 394 productRegularPrice: "Regular price", 395 productSalePrice: "Sale price", 396 collectionOnSaleLabel: "Save {{savings}}", 397 productFormUnavailable: "Unavailable", 398 productFormAddToCart: "Add to cart", 399 productFormPreOrder: "Pre-order", 400 productFormSoldOut: "Sold out", 401 productAdded: "Product has been added to your cart", 402 productAddedShort: "Added!", 403 shippingEstimatorNoResults: "No shipping could be found for your address.", 404 shippingEstimatorOneResult: "There is one shipping rate for your address:", 405 shippingEstimatorMultipleResults: "There are {{count}} shipping rates for your address:", 406 shippingEstimatorErrors: "There are some errors:" 407 }; 408 409 document.documentElement.className = document.documentElement.className.replace('no-js', 'js'); 410 </script>
410<script src="//canadagrowsupplies.com/cdn/shop/t/43/assets/theme.js?v=79656976836630833811704722455" defer></script>
410 411
411<script src="//canadagrowsupplies.com/cdn/shop/t/43/assets/custom.js?v=37052716901015019221704722454" defer></script>
411<script> 412 (function () { 413 window.onpageshow = function() { 414 // We force re-freshing the cart content onpageshow, as most browsers will serve a cache copy when hitting the 415 // back button, which cause staled data 416 document.documentElement.dispatchEvent(new CustomEvent('cart:refresh', { 417 bubbles: true, 418 detail: {scrollToTop: false} 419 })); 420 }; 421 })(); 422 </script>
422<!-- __LXV: 1790885146483;__LXR: https://loox.io;__LXC: NJZBUTbYHn; -->
422<script>var loox_global_hash = '1790885146483'; 423var loox_bundle_reviews_enabled = false;</script>
423<script>var visitor_level_referral = {"active":true,"rtl":false,"position":"right","button_text":"Get 10$","button_bg_color":"08C873","button_text_color":"000000","display_on_home_page":true,"display_on_product_page":true,"display_on_cart_page":true,"display_on_other_pages":true,"hide_on_mobile":false,"sidebar_visible":true,"orientation":"default","border_radius":{"key":"extraRounded","value":"16px","label":"Extra Rounded"}}; 424</script>
424<style>.loox-reviews-default { max-width: 1200px; margin: 0 auto; }.loox-rating .loox-icon { color:#FFCB45; } 425:root { --lxs-rating-icon-color: #FFCB45; }</style> 426 427<!-- BEGIN app block: shopify://apps/seowill-redirects/blocks/brokenlink-404/cc7b1996-e567-42d0-8862-356092041863 -->
428<script type="text/javascript"> 429 !function(t){var e={};function r(n){if(e[n])return e[n].exports;var o=e[n]={i:n,l:!1,exports:{}};return t[n].call(o.exports,o,o.exports,r),o.l=!0,o.exports}r.m=t,r.c=e,r.d=function(t,e,n){r.o(t,e)||Object.defineProperty(t,e,{enumerable:!0,get:n})},r.r=function(t){"undefined"!==typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(t,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(t,"__esModule",{value:!0})},r.t=function(t,e){if(1&e&&(t=r(t)),8&e)return t;if(4&e&&"object"===typeof t&&t&&t.__esModule)return t;var n=Object.create(null);if(r.r(n),Object.defineProperty(n,"default",{enumerable:!0,value:t}),2&e&&"string"!=typeof t)for(var o in t)r.d(n,o,function(e){return t[e]}.bind(null,o));return n},r.n=function(t){var e=t&&t.__esModule?function(){return t.default}:function(){return t};return r.d(e,"a",e),e},r.o=function(t,e){return Object.prototype.hasOwnProperty.call(t,e)},r.p="",r(r.s=11)}([function(t,e,r){"use strict";var n=r(2),o=Object.prototype.toString;function i(t){return"[object Array]"===o.call(t)}function a(t){return"undefined"===typeof t}function u(t){return null!==t&&"object"===typeof t}function s(t){return"[object Function]"===o.call(t)}function c(t,e){if(null!==t&&"undefined"!==typeof t)if("object"!==typeof t&&(t=[t]),i(t))for(var r=0,n=t.length;r<n;r++)e.call(null,t[r],r,t);else for(var o in t)Object.prototype.hasOwnProperty.call(t,o)&&e.call(null,t[o],o,t)}t.exports={isArray:i,isArrayBuffer:function(t){return"[object ArrayBuffer]"===o.call(t)},isBuffer:function(t){return null!==t&&!a(t)&&null!==t.constructor&&!a(t.constructor)&&"function"===typeof t.constructor.isBuffer&&t.constructor.isBuffer(t)},isFormData:function(t){return"undefined"!==typeof FormData&&t instanceof FormData},isArrayBufferView:function(t){return"undefined"!==typeof ArrayBuffer&&ArrayBuffer.isView?ArrayBuffer.isView(t):t&&t.buffer&&t.buffer instanceof ArrayBuffer},isString:function(t){return"string"===typeof t},isNumber:function(t){return"number"===typeof t},isObject:u,isUndefined:a,isDate:function(t){return"[object Date]"===o.call(t)},isFile:function(t){return"[object File]"===o.call(t)},isBlob:function(t){return"[object Blob]"===o.call(t)},isFunction:s,isStream:function(t){return u(t)&&s(t.pipe)},isURLSearchParams:function(t){return"undefined"!==typeof URLSearchParams&&t instanceof URLSearchParams},isStandardBrowserEnv:function(){return("undefined"===typeof navigator||"ReactNative"!==navigator.product&&"NativeScript"!==navigator.product&&"NS"!==navigator.product)&&("undefined"!==typeof window&&"undefined"!==typeof document)},forEach:c,merge:function t(){var e={};function r(r,n){"object"===typeof e[n]&&"object"===typeof r?e[n]=t(e[n],r):e[n]=r}for(var n=0,o=arguments.length;n<o;n++)c(arguments[n],r);return e},deepMerge:function t(){var e={};function r(r,n){"object"===typeof e[n]&&"object"===typeof r?e[n]=t(e[n],r):e[n]="object"===typeof r?t({},r):r}for(var n=0,o=arguments.length;n<o;n++)c(arguments[n],r);return e},extend:function(t,e,r){return c(e,(function(e,o){t[o]=r&&"function"===typeof e?n(e,r):e})),t},trim:function(t){return t.replace(/^\s*/,"").replace(/\s*$/,"")}}},function(t,e,r){t.exports=r(12)},function(t,e,r){"use strict";t.exports=function(t,e){return function(){for(var r=new Array(arguments.length),n=0;n<r.length;n++)r[n]=arguments[n];return t.apply(e,r)}}},function(t,e,r){"use strict";var n=r(0);function o(t){return encodeURIComponent(t).replace(/%40/gi,"@").replace(/%3A/gi,":").replace(/%24/g,"$").replace(/%2C/gi,",").replace(/%20/g,"+").replace(/%5B/gi,"[").replace(/%5D/gi,"]")}t.exports=function(t,e,r){if(!e)return t;var i;if(r)i=r(e);else if(n.isURLSearchParams(e))i=e.toString();else{var a=[];n.forEach(e,(function(t,e){null!==t&&"undefined"!==typeof t&&(n.isArray(t)?e+="[]":t=[t],n.forEach(t,(function(t){n.isDate(t)?t=t.toISOString():n.isObject(t)&&(t=JSON.stringify(t)),a.push(o(e)+"="+o(t))})))})),i=a.join("&")}if(i){var u=t.indexOf("#");-1!==u&&(t=t.slice(0,u)),t+=(-1===t.indexOf("?")?"?":"&")+i}return t}},function(t,e,r){"use strict";t.exports=function(t){return!(!t||!t.__CANCEL__)}},function(t,e,r){"use strict";(function(e){var n=r(0),o=r(19),i={"Content-Type":"application/x-www-form-urlencoded"};function a(t,e){!n.isUndefined(t)&&n.isUndefined(t["Content-Type"])&&(t["Content-Type"]=e)}var u={adapter:function(){var t;return("undefined"!==typeof XMLHttpRequest||"undefined"!==typeof e&&"[object process]"===Object.prototype.toString.call(e))&&(t=r(6)),t}(),transformRequest:[function(t,e){return o(e,"Accept"),o(e,"Content-Type"),n.isFormData(t)||n.isArrayBuffer(t)||n.isBuffer(t)||n.isStream(t)||n.isFile(t)||n.isBlob(t)?t:n.isArrayBufferView(t)?t.buffer:n.isURLSearchParams(t)?(a(e,"application/x-www-form-urlencoded;charset=utf-8"),t.toString()):n.isObject(t)?(a(e,"application/json;charset=utf-8"),JSON.stringify(t)):t}],transformResponse:[function(t){if("string"===typeof t)try{t=JSON.parse(t)}catch(e){}return t}],timeout:0,xsrfCookieName:"XSRF-TOKEN",xsrfHeaderName:"X-XSRF-TOKEN",maxContentLength:-1,validateStatus:function(t){return t>=200&&t<300},headers:{common:{Accept:"application/json, text/plain, */*"}}};
vendor: 1,549 bytes, line 429
429n.forEach(["delete","get","head"],(function(t){u.headers[t]={}})),n.forEach(["post","put","patch"],(function(t){u.headers[t]=n.merge(i)})),t.exports=u}).call(this,r(18))},function(t,e,r){"use strict";var n=r(0),o=r(20),i=r(3),a=r(22),u=r(25),s=r(26),c=r(7);t.exports=function(t){return new Promise((function(e,f){var l=t.data,p=t.headers;n.isFormData(l)&&delete p["Content-Type"];var h=new XMLHttpRequest;if(t.auth){var d=t.auth.username||"",m=t.auth.password||"";p.Authorization="Basic "+btoa(d+":"+m)}var y=a(t.baseURL,t.url);if(h.open(t.method.toUpperCase(),i(y,t.params,t.paramsSerializer),!0),h.timeout=t.timeout,h.onreadystatechange=function(){if(h&&4===h.readyState&&(0!==h.status||h.responseURL&&0===h.responseURL.indexOf("file:"))){var r="getAllResponseHeaders"in h?u(h.getAllResponseHeaders()):null,n={data:t.responseType&&"text"!==t.responseType?h.response:h.responseText,status:h.status,statusText:h.statusText,headers:r,config:t,request:h};o(e,f,n),h=null}},h.onabort=function(){h&&(f(c("Request aborted",t,"ECONNABORTED",h)),h=null)},h.onerror=function(){f(c("Network Error",t,null,h)),h=null},h.ontimeout=function(){var e="timeout of "+t.timeout+"ms exceeded";t.timeoutErrorMessage&&(e=t.timeoutErrorMessage),f(c(e,t,"ECONNABORTED",h)),h=null},n.isStandardBrowserEnv()){var v=r(27),g=(t.withCredentials||s(y))&&t.xsrfCookieName?v.read(t.xsrfCookieName):void 0;g&&(p[t.xsrfHeaderName]=g)}if("setRequestHeader"in h&&n.forEach(p,(function(t,e){"undefined"===typeof l&&"content-type"===e.toLowerCase()?delete p[e]:h.setRequestHeader(e,t)}
429)),n.isUndefined(t.withCredentials)||(h.withCredentials=!!t.withCredentials),t.responseType)try{h.responseType=t.responseType}catch(w){if("json"!==t.responseType)throw w}"function"===typeof t.onDownloadProgress&&h.addEventListener("progress",t.onDownloadProgress),"function"===typeof t.onUploadProgress&&h.upload&&h.upload.addEventListener("progress",t.onUploadProgress),t.cancelToken&&t.cancelToken.promise.then((function(t){h&&(h.abort(),f(t),h=null)})),void 0===l&&(l=null),h.send(l)}))}},function(t,e,r){"use strict";var n=r(21);t.exports=function(t,e,r,o,i){var a=new Error(t);return n(a,e,r,o,i)}},function(t,e,r){"use strict";var n=r(0);t.exports=function(t,e){e=e||{};var r={},o=["url","method","params","data"],i=["headers","auth","proxy"],a=["baseURL","url","transformRequest","transformResponse","paramsSerializer","timeout","withCredentials","adapter","responseType","xsrfCookieName","xsrfHeaderName","onUploadProgress","onDownloadProgress","maxContentLength","validateStatus","maxRedirects","httpAgent","httpsAgent","cancelToken","socketPath"];n.forEach(o,(function(t){"undefined"!==typeof e[t]&&(r[t]=e[t])})),n.forEach(i,(function(o){n.isObject(e[o])?r[o]=n.deepMerge(t[o],e[o]):"undefined"!==typeof e[o]?r[o]=e[o]:n.isObject(t[o])?r[o]=n.deepMerge(t[o]):"undefined"!==typeof t[o]&&(r[o]=t[o])})),n.forEach(a,(function(n){"undefined"!==typeof e[n]?r[n]=e[n]:"undefined"!==typeof t[n]&&(r[n]=t[n])}));var u=o.concat(i).concat(a),s=Object.keys(e).filter((function(t){return-1===u.indexOf(t)}));return n.forEach(s,(function(n){"undefined"!==typeof e[n]?r[n]=e[n]:"undefined"!==typeof t[n]&&(r[n]=t[n])})),r}},function(t,e,r){"use strict";function n(t){this.message=t}n.prototype.toString=function(){return"Cancel"+(this.message?": "+this.message:"")},n.prototype.__CANCEL__=!0,t.exports=n},function(t,e,r){t.exports=r(13)},function(t,e,r){t.exports=r(30)},function(t,e,r){var n=function(t){"use strict";var e=Object.prototype,r=e.hasOwnProperty,n="function"===typeof Symbol?Symbol:{},o=n.iterator||"@@iterator",i=n.asyncIterator||"@@asyncIterator",a=n.toStringTag||"@@toStringTag";function u(t,e,r){return Object.defineProperty(t,e,{value:r,enumerable:!0,configurable:!0,writable:!0}),t[e]}try{u({},"")}catch(S){u=function(t,e,r){return t[e]=r}}function s(t,e,r,n){var o=e&&e.prototype instanceof l?e:l,i=Object.create(o.prototype),a=new L(n||[]);return i._invoke=function(t,e,r){var n="suspendedStart";return function(o,i){if("executing"===n)throw new Error("Generator is already running");if("completed"===n){if("throw"===o)throw i;return j()}for(r.method=o,r.arg=i;;){var a=r.delegate;if(a){var u=x(a,r);if(u){if(u===f)continue;return u}}if("next"===r.method)r.sent=r._sent=r.arg;else if("throw"===r.method){if("suspendedStart"===n)throw n="completed",r.arg;r.dispatchException(r.arg)}else"return"===r.method&&r.abrupt("return",r.arg);n="executing";var s=c(t,e,r);if("normal"===s.type){if(n=r.done?"completed":"suspendedYield",s.arg===f)continue;return{value:s.arg,done:r.done}}"throw"===s.type&&(n="completed",r.method="throw",r.arg=s.arg)}}}(t,r,a),i}function c(t,e,r){try{return{type:"normal",arg:t.call(e,r)}}catch(S){return{type:"throw",arg:S}}}t.wrap=s;var f={};function l(){}function p(){}function h(){}var d={};d[o]=function(){return this};var m=Object.getPrototypeOf,y=m&&m(m(T([])));y&&y!==e&&r.call(y,o)&&(d=y);var v=h.prototype=l.prototype=Object.create(d);function g(t){["next","throw","return"].forEach((function(e){u(t,e,(function(t){return this._invoke(e,t)}))}))}function w(t,e){var n;this._invoke=function(o,i){function a(){return new e((function(n,a){!function n(o,i,a,u){var s=c(t[o],t,i);if("throw"!==s.type){var f=s.arg,l=f.value;return l&&"object"===typeof l&&r.call(l,"__await")?e.resolve(l.__await).then((function(t){n("next",t,a,u)}),(function(t){n("throw",t,a,u)})):e.resolve(l).then((function(t){f.value=t,a(f)}),(function(t){return n("throw",t,a,u)}))}u(s.arg)}(o,i,n,a)}))}return n=n?n.then(a,a):a()}}function x(t,e){var r=t.iterator[e.method];if(void 0===r){if(e.delegate=null,"throw"===e.method){if(t.iterator.return&&(e.method="return",e.arg=void 0,x(t,e),"throw"===e.method))return f;e.method="throw",e.arg=new TypeError("The iterator does not provide a 'throw' method")}return f}var n=c(r,t.iterator,e.arg);
vendor: 4,150 bytes, line 429
429if("throw"===n.type)return e.method="throw",e.arg=n.arg,e.delegate=null,f;var o=n.arg;return o?o.done?(e[t.resultName]=o.value,e.next=t.nextLoc,"return"!==e.method&&(e.method="next",e.arg=void 0),e.delegate=null,f):o:(e.method="throw",e.arg=new TypeError("iterator result is not an object"),e.delegate=null,f)}function b(t){var e={tryLoc:t[0]};1 in t&&(e.catchLoc=t[1]),2 in t&&(e.finallyLoc=t[2],e.afterLoc=t[3]),this.tryEntries.push(e)}function E(t){var e=t.completion||{};e.type="normal",delete e.arg,t.completion=e}function L(t){this.tryEntries=[{tryLoc:"root"}],t.forEach(b,this),this.reset(!0)}function T(t){if(t){var e=t[o];if(e)return e.call(t);if("function"===typeof t.next)return t;if(!isNaN(t.length)){var n=-1,i=function e(){for(;++n<t.length;)if(r.call(t,n))return e.value=t[n],e.done=!1,e;return e.value=void 0,e.done=!0,e};return i.next=i}}return{next:j}}function j(){return{value:void 0,done:!0}}return p.prototype=v.constructor=h,h.constructor=p,p.displayName=u(h,a,"GeneratorFunction"),t.isGeneratorFunction=function(t){var e="function"===typeof t&&t.constructor;return!!e&&(e===p||"GeneratorFunction"===(e.displayName||e.name))},t.mark=function(t){return Object.setPrototypeOf?Object.setPrototypeOf(t,h):(t.__proto__=h,u(t,a,"GeneratorFunction")),t.prototype=Object.create(v),t},t.awrap=function(t){return{__await:t}},g(w.prototype),w.prototype[i]=function(){return this},t.AsyncIterator=w,t.async=function(e,r,n,o,i){void 0===i&&(i=Promise);var a=new w(s(e,r,n,o),i);return t.isGeneratorFunction(r)?a:a.next().then((function(t){return t.done?t.value:a.next()}))},g(v),u(v,a,"Generator"),v[o]=function(){return this},v.toString=function(){return"[object Generator]"},t.keys=function(t){var e=[];for(var r in t)e.push(r);return e.reverse(),function r(){for(;e.length;){var n=e.pop();if(n in t)return r.value=n,r.done=!1,r}return r.done=!0,r}},t.values=T,L.prototype={constructor:L,reset:function(t){if(this.prev=0,this.next=0,this.sent=this._sent=void 0,this.done=!1,this.delegate=null,this.method="next",this.arg=void 0,this.tryEntries.forEach(E),!t)for(var e in this)"t"===e.charAt(0)&&r.call(this,e)&&!isNaN(+e.slice(1))&&(this[e]=void 0)},stop:function(){this.done=!0;var t=this.tryEntries[0].completion;if("throw"===t.type)throw t.arg;return this.rval},dispatchException:function(t){if(this.done)throw t;var e=this;function n(r,n){return a.type="throw",a.arg=t,e.next=r,n&&(e.method="next",e.arg=void 0),!!n}for(var o=this.tryEntries.length-1;o>=0;--o){var i=this.tryEntries[o],a=i.completion;if("root"===i.tryLoc)return n("end");if(i.tryLoc<=this.prev){var u=r.call(i,"catchLoc"),s=r.call(i,"finallyLoc");if(u&&s){if(this.prev<i.catchLoc)return n(i.catchLoc,!0);if(this.prev<i.finallyLoc)return n(i.finallyLoc)}else if(u){if(this.prev<i.catchLoc)return n(i.catchLoc,!0)}else{if(!s)throw new Error("try statement without catch or finally");if(this.prev<i.finallyLoc)return n(i.finallyLoc)}}}},abrupt:function(t,e){for(var n=this.tryEntries.length-1;n>=0;--n){var o=this.tryEntries[n];if(o.tryLoc<=this.prev&&r.call(o,"finallyLoc")&&this.prev<o.finallyLoc){var i=o;break}}i&&("break"===t||"continue"===t)&&i.tryLoc<=e&&e<=i.finallyLoc&&(i=null);var a=i?i.completion:{};return a.type=t,a.arg=e,i?(this.method="next",this.next=i.finallyLoc,f):this.complete(a)},complete:function(t,e){if("throw"===t.type)throw t.arg;return"break"===t.type||"continue"===t.type?this.next=t.arg:"return"===t.type?(this.rval=this.arg=t.arg,this.method="return",this.next="end"):"normal"===t.type&&e&&(this.next=e),f},finish:function(t){for(var e=this.tryEntries.length-1;e>=0;--e){var r=this.tryEntries[e];if(r.finallyLoc===t)return this.complete(r.completion,r.afterLoc),E(r),f}},catch:function(t){for(var e=this.tryEntries.length-1;e>=0;--e){var r=this.tryEntries[e];if(r.tryLoc===t){var n=r.completion;if("throw"===n.type){var o=n.arg;E(r)}return o}}throw new Error("illegal catch attempt")},delegateYield:function(t,e,r){return this.delegate={iterator:T(t),resultName:e,nextLoc:r},"next"===this.method&&(this.arg=void 0),f}},t}(t.exports);try{regeneratorRuntime=n}catch(o){Function("r","regeneratorRuntime = r")(n)}},function(t,e,r){"use strict";
vendor: 5,678 bytes, line 429
429var n=r(0),o=r(2),i=r(14),a=r(8);function u(t){var e=new i(t),r=o(i.prototype.request,e);return n.extend(r,i.prototype,e),n.extend(r,e),r}var s=u(r(5));s.Axios=i,s.create=function(t){return u(a(s.defaults,t))},s.Cancel=r(9),s.CancelToken=r(28),s.isCancel=r(4),s.all=function(t){return Promise.all(t)},s.spread=r(29),t.exports=s,t.exports.default=s},function(t,e,r){"use strict";var n=r(0),o=r(3),i=r(15),a=r(16),u=r(8);function s(t){this.defaults=t,this.interceptors={request:new i,response:new i}}s.prototype.request=function(t){"string"===typeof t?(t=arguments[1]||{}).url=arguments[0]:t=t||{},(t=u(this.defaults,t)).method?t.method=t.method.toLowerCase():this.defaults.method?t.method=this.defaults.method.toLowerCase():t.method="get";var e=[a,void 0],r=Promise.resolve(t);for(this.interceptors.request.forEach((function(t){e.unshift(t.fulfilled,t.rejected)})),this.interceptors.response.forEach((function(t){e.push(t.fulfilled,t.rejected)}));e.length;)r=r.then(e.shift(),e.shift());return r},s.prototype.getUri=function(t){return t=u(this.defaults,t),o(t.url,t.params,t.paramsSerializer).replace(/^\?/,"")},n.forEach(["delete","get","head","options"],(function(t){s.prototype[t]=function(e,r){return this.request(n.merge(r||{},{method:t,url:e}))}})),n.forEach(["post","put","patch"],(function(t){s.prototype[t]=function(e,r,o){return this.request(n.merge(o||{},{method:t,url:e,data:r}))}})),t.exports=s},function(t,e,r){"use strict";var n=r(0);function o(){this.handlers=[]}o.prototype.use=function(t,e){return this.handlers.push({fulfilled:t,rejected:e}),this.handlers.length-1},o.prototype.eject=function(t){this.handlers[t]&&(this.handlers[t]=null)},o.prototype.forEach=function(t){n.forEach(this.handlers,(function(e){null!==e&&t(e)}))},t.exports=o},function(t,e,r){"use strict";var n=r(0),o=r(17),i=r(4),a=r(5);function u(t){t.cancelToken&&t.cancelToken.throwIfRequested()}t.exports=function(t){return u(t),t.headers=t.headers||{},t.data=o(t.data,t.headers,t.transformRequest),t.headers=n.merge(t.headers.common||{},t.headers[t.method]||{},t.headers),n.forEach(["delete","get","head","post","put","patch","common"],(function(e){delete t.headers[e]})),(t.adapter||a.adapter)(t).then((function(e){return u(t),e.data=o(e.data,e.headers,t.transformResponse),e}),(function(e){return i(e)||(u(t),e&&e.response&&(e.response.data=o(e.response.data,e.response.headers,t.transformResponse))),Promise.reject(e)}))}},function(t,e,r){"use strict";var n=r(0);t.exports=function(t,e,r){return n.forEach(r,(function(r){t=r(t,e)})),t}},function(t,e){var r,n,o=t.exports={};function i(){throw new Error("setTimeout has not been defined")}function a(){throw new Error("clearTimeout has not been defined")}function u(t){if(r===setTimeout)return setTimeout(t,0);if((r===i||!r)&&setTimeout)return r=setTimeout,setTimeout(t,0);try{return r(t,0)}catch(e){try{return r.call(null,t,0)}catch(e){return r.call(this,t,0)}}}!function(){try{r="function"===typeof setTimeout?setTimeout:i}catch(t){r=i}try{n="function"===typeof clearTimeout?clearTimeout:a}catch(t){n=a}}();var s,c=[],f=!1,l=-1;function p(){f&&s&&(f=!1,s.length?c=s.concat(c):l=-1,c.length&&h())}function h(){if(!f){var t=u(p);f=!0;for(var e=c.length;e;){for(s=c,c=[];++l<e;)s&&s[l].run();l=-1,e=c.length}s=null,f=!1,function(t){if(n===clearTimeout)return clearTimeout(t);if((n===a||!n)&&clearTimeout)return n=clearTimeout,clearTimeout(t);try{n(t)}catch(e){try{return n.call(null,t)}catch(e){return n.call(this,t)}}}(t)}}function d(t,e){this.fun=t,this.array=e}function m(){}o.nextTick=function(t){var e=new Array(arguments.length-1);if(arguments.length>1)for(var r=1;r<arguments.length;r++)e[r-1]=arguments[r];c.push(new d(t,e)),1!==c.length||f||u(h)},d.prototype.run=function(){this.fun.apply(null,this.array)},o.title="browser",o.browser=!0,o.env={},o.argv=[],o.version="",o.versions={},o.on=m,o.addListener=m,o.once=m,o.off=m,o.removeListener=m,o.removeAllListeners=m,o.emit=m,o.prependListener=m,o.prependOnceListener=m,o.listeners=function(t){return[]},o.binding=function(t){throw new Error("process.binding is not supported")},o.cwd=function(){return"/"},o.chdir=function(t){throw new Error("process.chdir is not supported")},o.umask=function(){return 0}},function(t,e,r){"use strict";var n=r(0);t.exports=function(t,e){n.forEach(t,(function(r,n){n!==e&&n.toUpperCase()===e.toUpperCase()&&(t[e]=r,delete t[n])}))}},function(t,e,r){"use strict";var n=r(7);t.exports=function(t,e,r){var o=r.config.validateStatus;!o||o(r.status)?t(r):e(n("Request failed with status code "+r.status,r.config,null,r.request,r))}},function(t,e,r){"use strict";t.exports=function(t,e,r,n,o){return t.config=e,r&&(t.code=r),t.request=n,t.response=o,t.isAxiosError=!0,t.toJSON=function(){return{message:this.message,name:this.name,description:this.description,number:this.number,fileName:this.fileName,lineNumber:this.lineNumber,columnNumber:this.columnNumber,stack:this.stack,config:this.config,code:this.code}},t}},function(t,e,r){"use strict";var n=r(23),o=r(24);t.exports=function(t,e){return t&&!n(e)?o(t,e):e}},function(t,e,r){"use strict";t.exports=function(t){return/^([a-z][a-z\d\+\-\.]*:)?\/\//i.test(t)}},function(t,e,r){"use strict";t.exports=function(t,e){return e?t.replace(/\/+$/,"")+"/"+e.replace(/^\/+/,""):t}},function(t,e,r){"use strict";var n=r(0),o=["age","authorization","content-length","content-type","etag","expires","from","host","if-modified-since","if-unmodified-since","last-modified","location","max-forwards","proxy-authorization","referer","retry-after","user-agent"];t.exports=function(t){var e,r,i,a={};return t?(n.forEach(t.split("\n"),(function(t){if(i=t.indexOf(":"),e=n.trim(t.substr(0,i)).toLowerCase(),r=n.trim(t.
429substr(i+1)),e){if(a[e]&&o.indexOf(e)>=0)return;a[e]="set-cookie"===e?(a[e]?a[e]:[]).concat([r]):a[e]?a[e]+", "+r:r}})),a):a}},function(t,e,r){"use strict";var n=r(0);t.exports=n.isStandardBrowserEnv()?function(){var t,e=/(msie|trident)/i.test(navigator.userAgent),r=document.createElement("a");function o(t){var n=t;return e&&(r.setAttribute("href",n),n=r.href),r.setAttribute("href",n),{href:r.href,protocol:r.protocol?r.protocol.replace(/:$/,""):"",host:r.host,search:r.search?r.search.replace(/^\?/,""):"",hash:r.hash?r.hash.replace(/^#/,""):"",hostname:r.hostname,port:r.port,pathname:"/"===r.pathname.charAt(0)?r.pathname:"/"+r.pathname}}return t=o(window.location.href),function(e){var r=n.isString(e)?o(e):e;return r.protocol===t.protocol&&r.host===t.host}}():function(){return!0}},function(t,e,r){"use strict";var n=r(0);t.exports=n.isStandardBrowserEnv()?{write:function(t,e,r,o,i,a){var u=[];u.push(t+"="+encodeURIComponent(e)),n.isNumber(r)&&u.push("expires="+new Date(r).toGMTString()),n.isString(o)&&u.push("path="+o),n.isString(i)&&u.push("domain="+i),!0===a&&u.push("secure"),document.cookie=u.join("; ")},read:function(t){var e=document.cookie.match(new RegExp("(^|;\\s*)("+t+")=([^;]*)"));return e?decodeURIComponent(e[3]):null},remove:function(t){this.write(t,"",Date.now()-864e5)}}:{write:function(){},read:function(){return null},remove:function(){}}},function(t,e,r){"use strict";var n=r(9);function o(t){if("function"!==typeof t)throw new TypeError("executor must be a function.");var e;this.promise=new Promise((function(t){e=t}));var r=this;t((function(t){r.reason||(r.reason=new n(t),e(r.reason))}))}o.prototype.throwIfRequested=function(){if(this.reason)throw this.reason},o.source=function(){var t;return{token:new o((function(e){t=e})),cancel:t}},t.exports=o},function(t,e,r){"use strict";t.exports=function(t){return function(e){return t.apply(null,e)}}},function(t,e,r){"use strict";r.r(e);var n=r(1),o=r.n(n);function i(t,e,r,n,o,i,a){try{var u=t[i](a),s=u.value}catch(c){return void r(c)}u.done?e(s):Promise.resolve(s).then(n,o)}function a(t){return function(){var e=this,r=arguments;return new Promise((function(n,o){var a=t.apply(e,r);function u(t){i(a,n,o,u,s,"next",t)}function s(t){i(a,n,o,u,s,"throw",t)}u(void 0)}))}}var u=r(10),s=r.n(u);var c=function(t){return function(t){var e=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{},r=arguments.length>2&&void 0!==arguments[2]?arguments[2]:"GET";return r=r.toUpperCase(),new Promise((function(n){var o;"GET"===r&&(o=s.a.get(t,{params:e})),o.then((function(t){n(t.data)}))}))}("/apps/broken-link-manager/receive_id",t,"GET")};function f(){return(f=a(o.a.mark((function t(e,r,n){var i;return o.a.wrap((function(t){for(;;)switch(t.prev=t.next){case 0:return i={shop:e,code:r,gbaid:n},t.next=3,c(i);case 3:t.sent;case 4:case"end":return t.stop()}}),t)})))).apply(this,arguments)}var l=window.location.href;if(-1!=l.indexOf("gbaid")){var p=l.split("gbaid");if(void 0!=p[1]){var h=window.location.pathname+window.location.search;window.history.pushState({},0,h),function(t,e,r){f.apply(this,arguments)}("canada-grow-supplies-main.myshopify.com","",p[1])}}}]); 430</script>
430<!-- END app block --><!-- BEGIN app block: shopify://apps/frequently-bought/blocks/app-embed-block/b1a8cbea-c844-4842-9529-7c62dbab1b1f -->
430<script> 431 window.codeblackbelt = window.codeblackbelt || {}; 432 window.codeblackbelt.shop = window.codeblackbelt.shop || 'canada-grow-supplies-main.myshopify.com'; 433 </script>
433<script src="//cdn.codeblackbelt.com/widgets/frequently-bought-together/bootstrap.min.js?version=2026100201-0400" async></script>
433 434 <!-- END app block --><!-- BEGIN app block: shopify://apps/klaviyo-email-marketing-sms/blocks/klaviyo-onsite-embed/2632fe16-c075-4321-a88b-50b567f42507 --> 435 436 437 438 439 440 441 442 443 444 445 446 447
447<script async src="https://static.klaviyo.com/onsite/js/VWvL5Y/klaviyo.js?company_id=VWvL5Y"></script>
447 448
448<script>!function(){if(!window.klaviyo){window._klOnsite=window._klOnsite||[];try{window.klaviyo=new Proxy({},{get:function(n,i){return"push"===i?function(){var n;(n=window._klOnsite).push.apply(n,arguments)}:function(){for(var n=arguments.length,o=new Array(n),w=0;w<n;w++)o[w]=arguments[w];var t="function"==typeof o[o.length-1]?o.pop():void 0,e=new Promise((function(n){window._klOnsite.push([i].concat(o,[function(i){t&&t(i),n(i)}]))}));return e}}})}catch(n){window.klaviyo=window.klaviyo||[],window.klaviyo.push=function(){var n;(n=window._klOnsite).push.apply(n,arguments)}}}}();</script>
448 449 450 451 452 453 454 455
455<script> 456 window.klaviyoReviewsProductDesignMode = false 457 </script>
457 458 459 460 461 462 463 464 465 466 467<!-- END app block -->
467<script src="https://cdn.shopify.com/extensions/01a0f2db-0836-7636-86a1-66d0eb10c673/2026-09-30-15-05-45-UTC--15387e4/assets/smile-loader.js" type="text/javascript" defer="defer"></script>
vendor: 1 bytes, line 467
467
468<script src="https://cdn.shopify.com/extensions/01a0f6ed-716e-7bcb-9b26-cd9173669680/countdown-timer-30-98/assets/countdown_timer_essential_apps.min.js" type="text/javascript" defer="defer"></script>
vendor: 1 bytes, line 468
468
469<script src="https://cdn.shopify.com/extensions/a9a32278-85fd-435d-a2e4-15afbc801656/nova-multi-currency-converter-1/assets/nova-cur-app-embed.js" type="text/javascript" defer="defer"></script>
469 470<link href="https://cdn.shopify.com/extensions/a9a32278-85fd-435d-a2e4-15afbc801656/nova-multi-currency-converter-1/assets/nova-cur.css" rel="stylesheet" type="text/css" media="all"> 471<meta property="og:image" content="https://cdn.shopify.com/s/files/1/0566/5010/4875/files/cgs-checkout_6cde7cf7-c36f-4591-b2d7-f432ccd55d18.png?height=628&pad_color=fff&v=1664207997&width=1200" /> 472<meta property="og:image:secure_url" content="https://cdn.shopify.com/s/files/1/0566/5010/4875/files/cgs-checkout_6cde7cf7-c36f-4591-b2d7-f432ccd55d18.png?height=628&pad_color=fff&v=1664207997&width=1200" /> 473<meta property="og:image:width" content="1200" /> 474<meta property="og:image:height" content="628" /> 475<meta property="og:image:alt" content="Canada Grow Supplies" /> 476<link href="https://monorail-edge.shopifysvc.com" rel="dns-prefetch">
477<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: 56650104875,url: window.location.href,navigation_start,duration: currentMs - navigation_start,session_token,page_type: "blog"};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 477
477
478<script> 479 window.__TREKKIE_SHIM_QUEUE = window.__TREKKIE_SHIM_QUEUE || []; 480</script>
vendor: 1 bytes, line 480
480
481<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}
481).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: 56650104875,storefrontBaseUrl: "https://canadagrowsupplies.com",extensionsBaseUrl: "https://extensions.shopifycdn.com/cdn/shopifycloud/web-pixels-manager",monorailEndpoint: "https://canadagrowsupplies.com/.well-known/shopify/monorail/unstable/produce_batch",surface: "storefront-renderer",enabledBetaFlags: ["4c64608a","16072cab","8450a54b","7ee89bf1"],webPixelsConfigList: [{"id":"1416069163","configuration":"{\"accountID\":\"VWvL5Y\",\"webPixelConfig\":\"eyJlbmFibGVBZGRlZFRvQ2FydEV2ZW50cyI6IHRydWV9\"}","eventPayloadVersion":"v1","runtimeContext":"STRICT","scriptVersion":"c63c5b72c8d77be5f2d27d14c081da38","type":"APP","apiClientId":123074,"privacyPurposes":["ANALYTICS","MARKETING"],"dataSharingAdjustments":{"protectedCustomerApprovalScopes":["read_customer_address","read_customer_email","read_customer_name","read_customer_personal_data","read_customer_phone"],"dataSharingControls":["share_all_events"]},"dataSharingState":"optimized","enabledFlags":["9a3ed68a"]},{"id":"275284011","configuration":"{\"config\":\"{\\\"google_tag_ids\\\":[\\\"G-XMWVF6G0E6\\\",\\\"AW-360886711\\\",\\\"GT-P3M3ZXR\\\"],\\\"target_country\\\":\\\"CA\\\",\\\"gtag_events\\\":[{\\\"type\\\":\\\"begin_checkout\\\",\\\"action_label\\\":[\\\"G-XMWVF6G0E6\\\",\\\"AW-360886711\\\/amrPCKXH9ZUYELfjiqwB\\\"]},{\\\"type\\\":\\\"search\\\",\\\"action_label\\\":[\\\"G-XMWVF6G0E6\\\",\\\"AW-360886711\\\/9PxMCJ_H9ZUYELfjiqwB\\\"]},{\\\"type\\\":\\\"remove_from_cart\\\",\\\"action_label\\\":\\\"G-XMWVF6G0E6\\\"},{\\\"type\\\":\\\"view_item\\\",\\\"action_label\\\":[\\\"G-XMWVF6G0E6\\\",\\\"AW-360886711\\\/6Yl1CJzH9ZUYELfjiqwB\\\",\\\"MC-909YLTTTZZ\\\"]},{\\\"type\\\":\\\"add_shipping_info\\\",\\\"action_label\\\":\\\"G-XMWVF6G0E6\\\"},{\\\"type\\\":\\\"purchase\\\",\\\"action_label\\\":[\\\"G-XMWVF6G0E6\\\",\\\"AW-360886711\\\/mtsiCJbH9ZUYELfjiqwB\\\",\\\"MC-909YLTTTZZ\\\"]},{\\\"type\\\":\\\"page_view\\\",\\\"action_label\\\":[\\\"G-XMWVF6G0E6\\\",\\\"AW-360886711\\\/8u9cCJnH9ZUYELfjiqwB\\\",\\\"MC-909YLTTTZZ\\\"]},{\\\"type\\\":\\\"view_item_list\\\",\\\"action_label\\\":\\\"G-XMWVF6G0E6\\\"},{\\\"type\\\":\\\"add_payment_info\\\",\\\"action_label\\\":[\\\"G-XMWVF6G0E6\\\",\\\"AW-360886711\\\/bgeTCKjH9ZUYELfjiqwB\\\"]},{\\\"type\\\":\\\"add_to_cart\\\",\\\"action_label\\\":[\\\"G-XMWVF6G0E6\\\",\\\"AW-360886711\\\/bRCMCKLH9ZUYELfjiqwB\\\"]},{\\\"type\\\":\\\"view_cart\\\",\\\"action_label\\\":\\\"G-XMWVF6G0E6\\\"}],\\\"enable_monitoring_mode\\\":false}\"}","eventPayloadVersion":"v1","runtimeContext":"OPEN","scriptVersion":"a3321ca85cf5aaf6b57585fcd8d67b3a","type":"APP","apiClientId":1780363,"privacyPurposes":[],"dataSharingAdjustments":{"protectedCustomerApprovalScopes":["read_customer_address","read_customer_email","read_customer_name","read_customer_personal_data","read_customer_phone"],"dataSharingControls":["share_all_events"]},"dataSharingState":"optimized","enabledFlags":["9a3ed68a"]}
481,{"id":"111050795","configuration":"{\"pixel_id\":\"769312354479708\",\"pixel_type\":\"facebook_pixel\",\"metaapp_system_user_token\":\"-\"}","eventPayloadVersion":"v1","runtimeContext":"OPEN","scriptVersion":"96420dbe9ea96c426a1b7f364f977719","type":"APP","apiClientId":2329312,"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","enabledFlags":["9a3ed68a"]},{"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":"Canada Grow Supplies","paymentSettings":{"currencyCode":"CAD"},"myshopifyDomain":"canada-grow-supplies-main.myshopify.com","countryCode":"CA","storefrontUrl":"https:\/\/canadagrowsupplies.com"},"customer":null,"cart":null,"checkout":null,"productVariants":[],"products":[{"id":"6807904256043","handle":"photontek-x-465w-pro-led-grow-light","isCollective":null,"title":null,"type":null,"untranslatedTitle":null,"url":null,"vendor":null,"remoteShopId":null,"variants":[{"id":"39965015736363","image":null,"price":null,"sku":null,"title":null,"untranslatedTitle":null}]},{"id":"6811159986219","handle":"sunblaster-led-high-output-6400k-watt-strip-lights","isCollective":null,"title":null,"type":null,"untranslatedTitle":null,"url":null,"vendor":null,"remoteShopId":null,"variants":[{"id":"41058646163499","image":null,"price":null,"sku":null,"title":null,"untranslatedTitle":null}]},{"id":"6808323981355","handle":"spider-farmer-upgraded-se5000-480w-full-spectrum-led-grow-light","isCollective":null,"title":null,"type":null,"untranslatedTitle":null,"url":null,"vendor":null,"remoteShopId":null,"variants":[{"id":"39966031314987","image":null,"price":null,"sku":null,"title":null,"untranslatedTitle":null}]},{"id":"6811176239147","handle":"fish-head-farms-fish-shit-organic-soil-conditioner","isCollective":null,"title":null,"type":null,"untranslatedTitle":null,"url":null,"vendor":null,"remoteShopId":null,"variants":[{"id":"39973791629355","image":null,"price":null,"sku":null,"title":null,"untranslatedTitle":null}]},{"id":"6855718469675","handle":"advanced-nutrients-ph-perfect-bundle-grow-micro-and-bloom-trio","isCollective":null,"title":null,"type":null,"untranslatedTitle":null,"url":null,"vendor":null,"remoteShopId":null,"variants":[{"id":"40094094950443","image":null,"price":null,"sku":null,"title":null,"untranslatedTitle":null}]},{"id":"6855610171435","handle":"general-hydroponics-flora-series-quart-bundle","isCollective":null,"title":null,"type":null,"untranslatedTitle":null,"url":null,"vendor":null,"remoteShopId":null,"variants":[{"id":"40093709402155","image":null,"price":null,"sku":null,"title":null,"untranslatedTitle":null}]},{"id":"6807991058475","handle":"remo-nutrients-supercharged-kit-1l","isCollective":null,"title":null,"type":null,"untranslatedTitle":null,"url":null,"vendor":null,"remoteShopId":null,"variants":[{"id":"39965217783851","image":null,"price":null,"sku":null,"title":null,"untranslatedTitle":null}]}],"purchasingCompany":null},},"https://canadagrowsupplies.com/cdn","5982071ew7ea472e3p69b68784m2150dfea",{"modern":"","legacy":""},{"trekkieShim":true,"agentContext":true,"apiClientId":"580111","facebookCapiEnabled":"true","themeId":"126057250859","themePublished":"true","eventMetadataId":"78116163-c68b-4a1d-9ac9-ae95cac935e3","pageType":"blog","resourceId":"79655862315","shopId":"56650104875","storefrontBaseUrl":"https:\/\/canadagrowsupplies.com","extensionBaseUrl":"https:\/\/extensions.shopifycdn.com\/cdn\/shopifycloud\/web-pixels-manager","surface":"storefront-renderer","enabledBetaFlags":"[\"4c64608a\", \"16072cab\", \"8450a54b\", \"7ee89bf1\"]","isMerchantRequest":"false","hashVersion":"5982071ew7ea472e3p69b68784m2150dfea","publish":"custom","events":"[[\"page_viewed\",{}]]"});})();</script>
481<script> 482 window.ShopifyAnalytics = window.ShopifyAnalytics || {}; 483 window.ShopifyAnalytics.meta = window.ShopifyAnalytics.meta || {}; 484 window.ShopifyAnalytics.meta.currency = 'CAD'; 485 var meta = {"page":{"pageType":"blog","resourceType":"blog","resourceId":79655862315,"requestId":"e74bc749-2f0d-49e9-93a3-25ce8a4bb71e-1790919456"}}; 486 for (var attr in meta) { 487 window.ShopifyAnalytics.meta[attr] = meta[attr]; 488 } 489</script>
vendor: 1 bytes, line 489
489
490<script class="analytics"> 491 (function () { 492 var customDocumentWrite = function(content) { 493 var jquery = null; 494 495 if (window.jQuery) { 496 jquery = window.jQuery; 497 } else if (window.Checkout && window.Checkout.$) { 498 jquery = window.Checkout.$; 499 } 500 501 if (jquery) { 502 jquery('body').append(content); 503 } 504 }; 505 506 var hasLoggedConversion = function(token) { 507 if (token) { 508 return document.cookie.indexOf('loggedConversion=' + token) !== -1; 509 } 510 return false; 511 } 512 513 var setCookieIfConversion = function(token) { 514 if (token) { 515 var twoMonthsFromNow = new Date(Date.now()); 516 twoMonthsFromNow.setMonth(twoMonthsFromNow.getMonth() + 2); 517 518 document.cookie = 'loggedConversion=' + token + '; expires=' + twoMonthsFromNow; 519 } 520 } 521 522 var trekkie = window.ShopifyAnalytics.lib = window.trekkie = window.trekkie || []; 523 window.ShopifyAnalytics.lib.trekkie = window.trekkie; 524 if (trekkie.integrations) { 525 return; 526 } 527 trekkie.methods = [ 528 'identify', 529 'page', 530 'ready', 531 'track', 532 'trackForm', 533 'trackLink' 534 ]; 535 trekkie.factory = function(method) { 536 return function() { 537 var args = Array.prototype.slice.call(arguments); 538 args.unshift(method); 539 trekkie.push(args); 540 if (method == 'track' || method == 'page') { 541 var pageUrl; 542 try { 543 pageUrl = window.location.href; 544 } catch (e) {} 545 var pageReferrer; 546 try { 547 pageReferrer = document.referrer; 548 } catch (e) {} 549 try { 550 if (window.__TREKKIE_SHIM_QUEUE == null) { 551 window.__TREKKIE_SHIM_QUEUE = []; 552 } 553 window.__TREKKIE_SHIM_QUEUE.push({ 554 from: 'trekkie-stub', 555 method: method, 556 args: args.slice(1), 557 pageContext: { 558 url: pageUrl, 559 referrer: pageReferrer 560 } 561 }); 562 } catch (e) { 563 // no-op 564 } 565 } 566 return trekkie; 567 }; 568 }; 569 for (var i = 0; i < trekkie.methods.length; i++) { 570 var key = trekkie.methods[i]; 571 trekkie[key] = trekkie.factory(key); 572 } 573 trekkie.load = function(config) { 574 trekkie.config = config || {}; 575 trekkie.config.initialDocumentCookie = document.cookie; 576 var first = document.getElementsByTagName('script')[0]; 577var script = document.createElement('script'); 578script.type = 'text/javascript'; 579script.onerror = function(e) { 580 var scriptFallback = document.createElement('script'); 581 scriptFallback.type = 'text/javascript'; 582 scriptFallback.onerror = function(error) { 583 var Monorail = { 584 produce: function produce(monorailDomain, schemaId, payload) { 585 var currentMs = new Date().getTime(); 586 var event = { 587 schema_id: schemaId, 588 payload: payload, 589 metadata: { 590 event_created_at_ms: currentMs, 591 event_sent_at_ms: currentMs 592 } 593 }; 594 return Monorail.sendRequest("https://" + monorailDomain + "/v1/produce", JSON.stringify(event)); 595 }, 596 sendRequest: function sendRequest(endpointUrl, payload) { 597 // Try the sendBeacon API 598 if (window && window.navigator && typeof window.navigator.sendBeacon === 'function' && typeof window.Blob === 'function' && !Monorail.isIos12()) { 599 var blobData = new window.Blob([payload], { 600 type: 'text/plain' 601 }); 602 603 if (window.navigator.sendBeacon(endpointUrl, blobData)) { 604 return true; 605 } // sendBeacon was not successful 606 607 } // XHR beacon 608 609 var xhr = new XMLHttpRequest(); 610 611 try { 612 xhr.open('POST', endpointUrl); 613 xhr.setRequestHeader('Content-Type', 'text/plain'); 614 xhr.send(payload); 615 } catch (e) { 616 console.log(e); 617 } 618 619 return false; 620 }, 621 isIos12: function isIos12() { 622 return window.navigator.userAgent.lastIndexOf('iPhone; CPU iPhone OS 12_') !== -1 || window.navigator.userAgent.lastIndexOf('iPad; CPU OS 12_') !== -1; 623 } 624 }; 625 Monorail.produce('monorail-edge.shopifysvc.com', 626 'trekkie_storefront_load_errors/1.1', 627 {shop_id: 56650104875,
628 theme_id: 126057250859, 629 app_name: "storefront", 630 context_url: window.location.href, 631 source_url: "//canadagrowsupplies.com/cdn/s/trekkie.storefront.2f6d7d7ede7d24234881a9cd5f47e679642fa1f6.min.js"}); 632 633 }; 634 scriptFallback.async = true; 635 scriptFallback.src = '//canadagrowsupplies.com/cdn/s/trekkie.storefront.2f6d7d7ede7d24234881a9cd5f47e679642fa1f6.min.js'; 636 first.parentNode.insertBefore(scriptFallback, first); 637}; 638script.async = true; 639script.src = '//canadagrowsupplies.com/cdn/s/trekkie.storefront.2f6d7d7ede7d24234881a9cd5f47e679642fa1f6.min.js'; 640first.parentNode.insertBefore(script, first); 641 642 }; 643 trekkie.load( 644 {"Trekkie":{"appName":"storefront","development":false,"defaultAttributes":{"shopId":56650104875,"isMerchantRequest":null,"themeId":126057250859,"themeCityHash":"10806180602243072149","contentLanguage":"en","currency":"CAD","eventMetadataId":"78116163-c68b-4a1d-9ac9-ae95cac935e3"},"isServerSideCookieWritingEnabled":true,"monorailRegion":"shop_domain","enabledBetaFlags":["764d78cb","8450a54b","7ee89bf1","4c64608a"]},"Session Attribution":{},"S2S":{"facebookCapiEnabled":true,"source":"trekkie-storefront-renderer","apiClientId":580111}} 645 ); 646 647 var loaded = false; 648 trekkie.ready(function() { 649 if (loaded) return; 650 loaded = true; 651 652 window.ShopifyAnalytics.lib = window.trekkie; 653 654 var originalDocumentWrite = document.write; 655 document.write = customDocumentWrite; 656 try { window.ShopifyAnalytics.merchantGoogleAnalytics.call(this); } catch(error) {}; 657 document.write = originalDocumentWrite; 658 659 var match = window.location.pathname.match(/checkouts\/(.+)\/(thank_you|post_purchase)/) 660 var token = match? match[1]: undefined; 661 if (!hasLoggedConversion(token)) { 662 setCookieIfConversion(token); 663 664 } 665 }); 666 667 window.ShopifyAnalytics.lib.page(null,{"pageType":"blog","resourceType":"blog","resourceId":79655862315,"requestId":"e74bc749-2f0d-49e9-93a3-25ce8a4bb71e-1790919456","shopifyEmitted":true}); 668 669 var eventsListenerScript = document.createElement('script'); 670 eventsListenerScript.async = true; 671 eventsListenerScript.src = "//canadagrowsupplies.com/cdn/shopifycloud/storefront/assets/shop_events_listener-4e26a9ce.js"; 672 document.getElementsByTagName('head')[0].appendChild(eventsListenerScript); 673})();</script>
673 674
674<script> 675 if (!window.ga || (window.ga && typeof window.ga !== 'function')) { 676 window.ga = function ga() { 677 (window.ga.q = window.ga.q || []).push(arguments); 678 if (window.Shopify && window.Shopify.analytics && typeof window.Shopify.analytics.publish === 'function') { 679 window.Shopify.analytics.publish("ga_stub_called", {}, {sendTo: "google_osp_migration"}); 680 } 681 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."); 682 }; 683 if (window.Shopify && window.Shopify.analytics && typeof window.Shopify.analytics.publish === 'function') { 684 window.Shopify.analytics.publish("ga_stub_initialized", {}, {sendTo: "google_osp_migration"}); 685 } 686 } 687</script>
vendor: 1 bytes, line 687
687
688<script 689 defer 690 src="https://canadagrowsupplies.com/cdn/shopifycloud/perf-kit/shopify-perf-kit-3.9.4.min.js" 691 data-application="storefront-renderer" 692 data-shop-id="56650104875" 693 data-render-region="gcp-us-central1" 694 data-page-type="blog" 695 data-theme-instance-id="126057250859" 696 data-theme-name="Warehouse" 697 data-theme-version="4.2.2" 698 data-monorail-region="shop_domain" 699 data-resource-timing-sampling-rate="10" 700 data-shs="true" 701 data-shs-beacon="true" 702 data-shs-export-with-fetch="true" 703 data-shs-logs-sample-rate="1" 704 data-shs-beacon-endpoint="https://canadagrowsupplies.com/api/collect" 705></script>
705 706<meta name="shopify-y" content="660914ce-5a9d-4996-9a34-2625a269df1e" data-expiration="1822477056000"><meta name="shopify-s" content="c0ab41d5-a9f3-4c2e-8523-a12d8f99f1f6" data-expiration="1790921256000"><meta name="new-cookie-storage-activated" content="t"> 707</head> 708 709 <body class="warehouse--v4 features--animate-zoom template-blog " data-instant-intensity="viewport"><svg class="visually-hidden"> 710 <linearGradient id="rating-star-gradient-half"> 711 <stop offset="50%" stop-color="var(--product-review-star-color)" /> 712 <stop offset="50%" stop-color="rgba(var(--text-color-rgb), .4)" stop-opacity="0.4" /> 713 </linearGradient> 714 </svg> 715 716 <a href="#main" class="visually-hidden skip-to-content">Skip to content</a> 717 <span class="loading-bar"></span><!-- BEGIN sections: header-group --> 718<div id="shopify-section-sections--15159568564267__announcement-bar" class="shopify-section shopify-section-group-header-group shopify-section--announcement-bar"><section data-section-id="sections--15159568564267__announcement-bar" data-section-type="announcement-bar" data-section-settings='{ 719 "showNewsletter": false 720}'><div class="announcement-bar"> 721 <div class="container"> 722 <div class="announcement-bar__inner"> 723 <div class="halfannounce"><a href="tel:888-349-0321" class="announcement-bar__content announcement-bar__content--left">Call us: 888-349-0321</a></div> 724 <div class="halfannounce rightflex"><div class="footer__aside-item footer__aside-item--social"> 725 <ul class="social-media__item-list list--unstyled" role="list"> 726 <li class="social-media__item social-media__item--facebook"> 727 <a href="https://www.facebook.com/canadagrowsupplies" target="_blank" rel="noopener" aria-label="Follow us on Facebook"> 728 <img src="//canadagrowsupplies.com/cdn/shop/t/43/assets/facebook.png?v=178705151121835524771686760904" width="100%" height="100%" alt="facebook icon"> 729 </a> 730 </li> 731 732 733<li class="social-media__item social-media__item--instagram"> 734 <a href="https://www.instagram.com/canadagrowsuppliescom/" target="_blank" rel="noopener" aria-label="Follow us on Instagram"> 735 <img src="//canadagrowsupplies.com/cdn/shop/t/43/assets/instagram.png?v=156803792681522655241686760905" width="100%" height="100%" alt="instagram icon"> 736 </a> 737 </li> 738 739 740 741 </ul> 742 </div> 743 </div> 744 </div> 745 </div> 746 </div> 747</section> 748 749<style> 750 .announcement-bar { 751 background: #060000; 752 color: #ffffff; 753 } 754</style> 755
756<script>document.documentElement.style.removeProperty('--announcement-bar-button-width');document.documentElement.style.setProperty('--announcement-bar-height', document.getElementById('shopify-section-sections--15159568564267__announcement-bar').clientHeight + 'px'); 757</script>
757 758 759</div><div id="shopify-section-sections--15159568564267__announcement-bar2" class="shopify-section shopify-section-group-header-group"><section id="sections--15159568564267__announcement-bar2" data-section-id="sections--15159568564267__announcement-bar2" data-section-type="announcement-bar" data-section-settings='{ 760 "showNewsletter": null 761}'> 762 763 <div class="announcement-bars"> 764 <div class="container"> 765 <div class="announcements-bar__inner"><div style="font-weight:bold;line-height: 40px;height: 40px;display: block;overflow: hidden;text-align:center"> 766 <strong> ð¨ð¦Free Shipping over 149$ð¨ð¦ Worldwide Shipping ð <span class="desktop_only"> </span></strong> 767 </div></div> 768 </div> 769 </div> 770 </section> 771 <style> 772 .announcement-bars { 773 background: #060606; 774 color: #ffffff; 775 } 776 </style> 777 778
778<script>document.documentElement.style.removeProperty('--announcement-bar-button-width');document.documentElement.style.setProperty('--announcement-bar-height', document.getElementById('shopify-section-sections--15159568564267__announcement-bar2').clientHeight + 'px'); 779 </script>
779 780</div><div id="shopify-section-sections--15159568564267__header" class="shopify-section shopify-section-group-header-group shopify-section__header"><section data-section-id="sections--15159568564267__header" data-section-type="header" data-section-settings='{ 781 "navigationLayout": "inline", 782 "desktopOpenTrigger": "hover", 783 "useStickyHeader": true 784}'> 785 <header class="header header--inline " role="banner"> 786 <div class="container"> 787 <div class="header__inner"><nav class="header__mobile-nav hidden-lap-and-up"> 788 <button class="header__mobile-nav-toggle icon-state touch-area" data-action="toggle-menu" aria-expanded="false" aria-haspopup="true" aria-controls="mobile-menu" aria-label="Open menu"> 789 <span class="icon-state__primary"><svg focusable="false" class="icon icon--hamburger-mobile " viewBox="0 0 20 16" role="presentation"> 790 <path d="M0 14h20v2H0v-2zM0 0h20v2H0V0zm0 7h20v2H0V7z" fill="currentColor" fill-rule="evenodd"></path> 791 </svg></span> 792 <span class="icon-state__secondary"><svg focusable="false" class="icon icon--close " viewBox="0 0 19 19" role="presentation"> 793 <path d="M9.1923882 8.39339828l7.7781745-7.7781746 1.4142136 1.41421357-7.7781746 7.77817459 7.7781746 7.77817456L16.9705627 19l-7.7781745-7.7781746L1.41421356 19 0 17.5857864l7.7781746-7.77817456L0 2.02943725 1.41421356.61522369 9.1923882 8.39339828z" fill="currentColor" fill-rule="evenodd"></path> 794 </svg></span> 795 </button><div id="mobile-menu" class="mobile-menu" aria-hidden="true"><svg focusable="false" class="icon icon--nav-triangle-borderless " viewBox="0 0 20 9" role="presentation"> 796 <path d="M.47108938 9c.2694725-.26871321.57077721-.56867841.90388257-.89986354C3.12384116 6.36134886 5.74788116 3.76338565 9.2467995.30653888c.4145057-.4095171 1.0844277-.40860098 1.4977971.00205122L19.4935156 9H.47108938z" fill="#ffffff"></path> 797 </svg><div class="mobile-menu__inner"> 798 <div class="mobile-menu__panel"> 799 <div class="mobile-menu__section"> 800 <ul class="mobile-menu__nav" data-type="menu" role="list"><li class="mobile-menu__nav-item"><button class="mobile-menu__nav-link" data-type="menuitem" aria-haspopup="true" aria-expanded="false" aria-controls="mobile-panel-0" data-action="open-panel">Tents & Kits<svg focusable="false" class="icon icon--arrow-right " viewBox="0 0 8 12" role="presentation"> 801 <path stroke="currentColor" stroke-width="2" d="M2 2l4 4-4 4" fill="none" stroke-linecap="square"></path> 802 </svg></button></li><li class="mobile-menu__nav-item"><button class="mobile-menu__nav-link" data-type="menuitem" aria-haspopup="true" aria-expanded="false" aria-controls="mobile-panel-1" data-action="open-panel">Lights<svg focusable="false" class="icon icon--arrow-right " viewBox="0 0 8 12" role="presentation"> 803 <path stroke="currentColor" stroke-width="2" d="M2 2l4 4-4 4" fill="none" stroke-linecap="square"></path> 804 </svg></button></li><li class="mobile-menu__nav-item"><button class="mobile-menu__nav-link" data-type="menuitem" aria-haspopup="true" aria-expanded="false" aria-controls="mobile-panel-2" data-action="open-panel">Nutrients<svg focusable="false" class="icon icon--arrow-right " viewBox="0 0 8 12" role="presentation"> 805 <path stroke="currentColor" stroke-width="2" d="M2 2l4 4-4 4" fill="none" stroke-linecap="square"></path> 806 </svg></button></li><li class="mobile-menu__nav-item"><button class="mobile-menu__nav-link" data-type="menuitem" aria-haspopup="true" aria-expanded="false" aria-controls="mobile-panel-3" data-action="open-panel">Hydroponics<svg focusable="false" class="icon icon--arrow-right " viewBox="0 0 8 12" role="presentation"> 807 <path stroke="currentColor" stroke-width="2" d="M2 2l4 4-4 4" fill="none" stroke-linecap="square"></path> 808 </svg></button></li><li class="mobile-menu__nav-item"><button class="mobile-menu__nav-link" data-type="menuitem" aria-haspopup="true" aria-expanded="false" aria-controls="mobile-panel-4" data-action="open-panel">Climate Control <svg focusable="false" class="icon icon--arrow-right " viewBox="0 0 8 12" role="presentation"> 809 <path stroke="currentColor" stroke-width="2" d="M2 2l4 4-4 4" fill="none" stroke-linecap="square"></path> 810 </svg></button></li><li class="mobile-menu__nav-item"><button class="mobile-menu__nav-link" data-type="menuitem" aria-haspopup="true" aria-expanded="false" aria-controls="mobile-panel-5" data-action="open-panel">Propagation<svg focusable="false" class="icon icon--arrow-right " viewBox="0 0 8 12" role="presentation"> 811 <path stroke="currentColor" stroke-width="2" d="M2 2l4 4-4 4" fill="none" stroke-linecap="square"></path> 812 </svg></button></li><li class="mobile-menu__nav-item"><button class="mobile-menu__nav-link" data-type="menuitem" aria-haspopup="true" aria-expanded="false" aria-controls="mobile-panel-6" data-action="open-panel">Harvest & Accessories<svg focusable="false" class="icon icon--arrow-right " viewBox="0 0 8 12" role="presentation"> 813 <path stroke="currentColor" stroke-width="2" d="M2 2l4 4-4 4" fill="none" stroke-linecap="square"></path> 814 </svg></button></li><li class="mobile-menu__nav-item"><a href="/pages/brands" class="mobile-menu__nav-link" data-type="menuitem">Brands</a></li><li class="mobile-menu__nav-item"><a href="/collections/sale" class="mobile-menu__nav-link" data-type="menuitem">Sale</a></li></ul> 815 </div><div class="mobile-menu__section mobile-menu__section--loose"> 816 <p class="mobile-menu__section-title heading h5">Need help?</p><div class="mobile-menu__help-wrapper"><svg focusable="false" class="icon icon--bi-phone " viewBox="0 0 24 24" role="presentation"> 817 <g stroke-width="2" fill="none" fill-rule="evenodd" stroke-linecap="square"> 818 <path d="M17 15l-3 3-8-8 3-3-5-5-3 3c0 9.941 8.059 18 18 18l3-3-5-5z" stroke="#000000"></path> 819 <path d="M14 1c4.971 0 9 4.029 9 9m-9-5c2.761 0 5 2.239 5 5" stroke="#08c873"></path> 820 </g> 821 </svg><span>Call us 888-349-0321</span> 822 </div></div><div class="mobile-menu__section mobile-menu__section--loose"> 823 <p class="mobile-menu__section-title heading h5">Follow Us</p><ul class="social-media__item-list social-media__item-list--stack list--unstyled" role="list"> 824 <li class="social-media__item social-media__item--facebook"> 825 <a href="https://www.facebook.com/canadagrowsupplies" target="_blank" rel="noopener" aria-label="Follow us on Facebook"><svg focusable="false" class="icon icon--facebook " viewBox="0 0 30 30"> 826 <path d="M15 30C6.71572875 30 0 23.2842712 0 15 0 6.71572875 6.71572875 0 15 0c8.2842712 0 15 6.71572875 15 15 0 8.2842712-6.7157288 15-15 15zm3.2142857-17.1429611h-2.1428678v-2.1425646c0-.5852979.8203285-1.07160109 1.0714928-1.07160109h1.071375v-2.1428925h-2.1428678c-2.3564786 0-3.2142536 1.98610393-3.2142536 3.21449359v2.1425646h-1.0714822l.0032143 2.1528011 1.0682679-.0099086v7.499969h3.2142536v-7.499969h2.1428678v-2.1428925z" fill="currentColor" fill-rule="evenodd"></path> 827 </svg>Facebook</a> 828 </li> 829 830 831<li class="social-media__item social-media__item--instagram"> 832 <a href="https://www.instagram.com/canadagrowsuppliescom/" target="_blank" rel="noopener" aria-label="Follow us on Instagram"><svg focusable="false" class="icon icon--instagram " role="presentation" viewB
832ox="0 0 30 30"> 833 <path d="M15 30C6.71572875 30 0 23.2842712 0 15 0 6.71572875 6.71572875 0 15 0c8.2842712 0 15 6.71572875 15 15 0 8.2842712-6.7157288 15-15 15zm.0000159-23.03571429c-2.1823849 0-2.4560363.00925037-3.3131306.0483571-.8553081.03901103-1.4394529.17486384-1.9505835.37352345-.52841925.20532625-.9765517.48009406-1.42331254.926823-.44672894.44676084-.72149675.89489329-.926823 1.42331254-.19865961.5111306-.33451242 1.0952754-.37352345 1.9505835-.03910673.8570943-.0483571 1.1307457-.0483571 3.3131306 0 2.1823531.00925037 2.4560045.0483571 3.3130988.03901103.8553081.17486384 1.4394529.37352345 1.9505835.20532625.5284193.48009406.9765517.926823 1.4233125.44676084.446729.89489329.7214968 1.42331254.9268549.5111306.1986278 1.0952754.3344806 1.9505835.3734916.8570943.0391067 1.1307457.0483571 3.3131306.0483571 2.1823531 0 2.4560045-.0092504 3.3130988-.0483571.8553081-.039011 1.4394529-.1748638 1.9505835-.3734916.5284193-.2053581.9765517-.4801259 1.4233125-.9268549.446729-.4467608.7214968-.8948932.9268549-1.4233125.1986278-.5111306.3344806-1.0952754.3734916-1.9505835.0391067-.8570943.0483571-1.1307457.0483571-3.3130988 0-2.1823849-.0092504-2.4560363-.0483571-3.3131306-.039011-.8553081-.1748638-1.4394529-.3734916-1.9505835-.2053581-.52841925-.4801259-.9765517-.9268549-1.42331254-.4467608-.44672894-.8948932-.72149675-1.4233125-.926823-.5111306-.19865961-1.0952754-.33451242-1.9505835-.37352345-.8570943-.03910673-1.1307457-.0483571-3.3130988-.0483571zm0 1.44787387c2.1456068 0 2.3997686.00819774 3.2471022.04685789.7834742.03572556 1.2089592.1666342 1.4921162.27668167.3750864.14577303.6427729.31990322.9239522.60111439.2812111.28117926.4553413.54886575.6011144.92395217.1100474.283157.2409561.708642.2766816 1.4921162.0386602.8473336.0468579 1.1014954.0468579 3.247134 0 2.1456068-.0081977 2.3997686-.0468579 3.2471022-.0357255.7834742-.1666342 1.2089592-.2766816 1.4921162-.1457731.3750864-.3199033.6427729-.6011144.9239522-.2811793.2812111-.5488658.4553413-.9239522.6011144-.283157.1100474-.708642.2409561-1.4921162.2766816-.847206.0386602-1.1013359.0468579-3.2471022.0468579-2.1457981 0-2.3998961-.0081977-3.247134-.0468579-.7834742-.0357255-1.2089592-.1666342-1.4921162-.2766816-.37508642-.1457731-.64277291-.3199033-.92395217-.6011144-.28117927-.2811793-.45534136-.5488658-.60111439-.9239522-.11004747-.283157-.24095611-.708642-.27668167-1.4921162-.03866015-.8473336-.04685789-1.1014954-.04685789-3.2471022 0-2.1456386.00819774-2.3998004.04685789-3.247134.03572556-.7834742.1666342-1.2089592.27668167-1.4921162.14577303-.37508642.31990322-.64277291.60111439-.92395217.28117926-.28121117.54886575-.45534136.92395217-.60111439.283157-.11004747.708642-.24095611 1.4921162-.27668167.8473336-.03866015 1.1014954-.04685789 3.247134-.04685789zm0 9.26641182c-1.479357 0-2.6785873-1.1992303-2.6785873-2.6785555 0-1.479357 1.1992303-2.6785873 2.6785873-2.6785873 1.4793252 0 2.6785555 1.1992303 2.6785555 2.6785873 0 1.4793252-1.1992303 2.6785555-2.6785555 2.6785555zm0-6.8050167c-2.2790034 0-4.1264612 1.8474578-4.1264612 4.1264612 0 2.2789716 1.8474578 4.1264294 4.1264612 4.1264294 2.2789716 0 4.1264294-1.8474578 4.1264294-4.1264294 0-2.2790034-1.8474578-4.1264612-4.1264294-4.1264612zm5.2537621-.1630297c0-.532566-.431737-.96430298-.964303-.96430298-.532534 0-.964271.43173698-.964271.96430298 0 .5325659.431737.964271.964271.964271.532566 0 .964303-.4317051.964303-.964271z" fill="currentColor" fill-rule="evenodd"></path> 834 </svg>Instagram</a> 835 </li> 836 837 838 839 </ul></div></div><div id="mobile-panel-0" class="mobile-menu__panel is-nested"> 840 <div class="mobile-menu__section is-sticky"> 841 <button class="mobile-menu__back-button" data-action="close-panel"><svg focusable="false" class="icon icon--arrow-left " viewBox="0 0 8 12" role="presentation"> 842 <path stroke="currentColor" stroke-width="2" d="M6 10L2 6l4-4" fill="none" stroke-linecap="square"></path> 843 </svg> Back</button> 844 </div> 845 846 <div class="mobile-menu__section"><div class="mobile-menu__nav-list"><div class="mobile-menu__nav-list-item"><button class="mobile-menu__nav-list-toggle text--strong" aria-controls="mobile-list-0" aria-expanded="false" data-action="toggle-collapsible" data-close-siblings="false">Grow Tents<svg focusable="false" class="icon icon--arrow-bottom " viewBox="0 0 12 8" role="presentation"> 847 <path stroke="currentColor" stroke-width="2" d="M10 2L6 6 2 2" fill="none" stroke-linecap="square"></path> 848 </svg> 849 </button> 850 851 <div id="mobile-list-0" class="mobile-menu__nav-collapsible"> 852 <div class="mobile-menu__nav-collapsible-content"> 853 <ul class="mobile-menu__nav" data-type="menu" role="list"><li class="mobile-menu__nav-item"> 854 <a href="/collections/2x2" class="mobile-menu__nav-link" data-type="menuitem">2x2</a> 855 </li><li class="mobile-menu__nav-item">
856 <a href="/collections/2x4" class="mobile-menu__nav-link" data-type="menuitem">2x4</a> 857 </li><li class="mobile-menu__nav-item"> 858 <a href="/collections/3x3" class="mobile-menu__nav-link" data-type="menuitem">3x3</a> 859 </li><li class="mobile-menu__nav-item"> 860 <a href="/collections/4x4" class="mobile-menu__nav-link" data-type="menuitem">4x4</a> 861 </li><li class="mobile-menu__nav-item"> 862 <a href="/collections/5x5" class="mobile-menu__nav-link" data-type="menuitem">5x5</a> 863 </li><li class="mobile-menu__nav-item"> 864 <a href="/collections/8x4" class="mobile-menu__nav-link" data-type="menuitem">8x4</a> 865 </li><li class="mobile-menu__nav-item"> 866 <a href="/collections/8x8" class="mobile-menu__nav-link" data-type="menuitem">8x8</a> 867 </li><li class="mobile-menu__nav-item"> 868 <a href="/collections/10x5" class="mobile-menu__nav-link" data-type="menuitem">10x5</a> 869 </li></ul> 870 </div> 871 </div></div><div class="mobile-menu__nav-list-item"><button class="mobile-menu__nav-list-toggle text--strong" aria-controls="mobile-list-1" aria-expanded="false" data-action="toggle-collapsible" data-close-siblings="false">Grow Kits<svg focusable="false" class="icon icon--arrow-bottom " viewBox="0 0 12 8" role="presentation"> 872 <path stroke="currentColor" stroke-width="2" d="M10 2L6 6 2 2" fill="none" stroke-linecap="square"></path> 873 </svg> 874 </button> 875 876 <div id="mobile-list-1" class="mobile-menu__nav-collapsible"> 877 <div class="mobile-menu__nav-collapsible-content"> 878 <ul class="mobile-menu__nav" data-type="menu" role="list"><li class="mobile-menu__nav-item"> 879 <a href="/collections/5-plants" class="mobile-menu__nav-link" data-type="menuitem">5 Plants</a> 880 </li><li class="mobile-menu__nav-item"> 881 <a href="/collections/6-plants" class="mobile-menu__nav-link" data-type="menuitem">6 Plants</a> 882 </li><li class="mobile-menu__nav-item"> 883 <a href="/collections/8-plants" class="mobile-menu__nav-link" data-type="menuitem">8 Plants</a> 884 </li><li class="mobile-menu__nav-item"> 885 <a href="/collections/10-plants" class="mobile-menu__nav-link" data-type="menuitem">10 Plants</a> 886 </li></ul> 887 </div> 888 </div></div><div class="mobile-menu__nav-list-item"><button class="mobile-menu__nav-list-toggle text--strong" aria-controls="mobile-list-2" aria-expanded="false" data-action="toggle-collapsible" data-close-siblings="false">Accessories<svg focusable="false" class="icon icon--arrow-bottom " viewBox="0 0 12 8" role="presentation"> 889 <path stroke="currentColor" stroke-width="2" d="M10 2L6 6 2 2" fill="none" stroke-linecap="square"></path> 890 </svg> 891 </button> 892 893 <div id="mobile-list-2" class="mobile-menu__nav-collapsible"> 894 <div class="mobile-menu__nav-collapsible-content"> 895 <ul class="mobile-menu__nav" data-type="menu" role="list"><li class="mobile-menu__nav-item"> 896 <a href="/collections/grow-tent-extensions" class="mobile-menu__nav-link" data-type="menuitem">Grow tent Extensions</a> 897 </li><li class="mobile-menu__nav-item"> 898 <a href="/collections/grow-tent-parts" class="mobile-menu__nav-link" data-type="menuitem">Grow Tent Parts </a> 899 </li><li class="mobile-menu__nav-item"> 900 <a href="/collections/reflective-materials-supplies" class="mobile-menu__nav-link" data-type="menuitem">Reflective Materials & Supplies</a> 901 </li><li class="mobile-menu__nav-item"> 902 <a href="/collections/net-plant-supports" class="mobile-menu__nav-link" data-type="menuitem">Net & Plant Supports</a> 903 </li><li class="mobile-menu__nav-item"> 904 <a href="/collections/grow-tent-others" class="mobile-menu__nav-link" data-type="menuitem">Others</a> 905 </li></ul> 906 </div> 907 </div></div></div></div> 908 </div><div id="mobile-panel-1" class="mobile-menu__panel is-nested"> 909 <div class="mobile-menu__section is-sticky"> 910 <button class="mobile-menu__back-button" data-action="close-panel"><svg focusable="false" class="icon icon--arrow-left " viewBox="0 0 8 12" role="presentation"> 911 <path stroke="currentColor" stroke-width="2" d="M6 10L2 6l4-4" fill="none" stroke-linecap="square"></path> 912 </svg> Back</button> 913 </div> 914 915 <div class="mobile-menu__section"><div class="mobile-menu__nav-list"><div class="mobile-menu__nav-list-item"><button class="mobile-menu__nav-list-toggle text--strong" aria-controls="mobile-list-3" aria-expanded="false" data-action="toggle-collapsible" data-close-siblings="false">Grow Lights<svg focusable="false" class="icon icon--arrow-bottom " viewBox="0 0 12 8" role="presentation"> 916 <path stroke="currentColor" stroke-width="2" d="M10 2L6 6 2 2" fill="none" stroke-linecap="square"></path> 917 </svg> 918 </button> 919 920 <div id="mobile-list-3" class="mobile-menu__nav-collapsible"> 921 <div class="mobile-menu__nav-collapsible-content"> 922 <ul class="mobile-menu__nav" data-type="menu" role="list"><li class="mobile-menu__nav-item"> 923 <a href="/collections/led-grow-lights" class="mobile-menu__nav-link" data-type="menuitem">LED Grow Lights</a> 924 </li><li class="mobile-menu__nav-item"> 925 <a href="/collections/hid-grow-lights" class="mobile-menu__nav-link" data-type="menuitem">HID Grow Lights</a> 926 </li><li class="mobile-menu__nav-item"> 927 <a href="/collections/fluorescent-t5" class="mobile-menu__nav-link" data-type="menuitem">Fluorescent/T5</a> 928 </li></ul> 929 </div> 930 </div></div><div class="mobile-menu__nav-list-item"><button class="mobile-menu__nav-list-toggle text--strong" aria-controls="mobile-list-4" aria-expanded="false" data-action="toggle-collapsible" data-close-siblings="false">MH, HPS, CMH<svg focusable="false" class="icon icon--arrow-bottom " viewBox="0 0 12 8" role="presentation"> 931 <path stroke="currentColor" stroke-width="2" d="M10 2L6 6 2 2" fill="none" stroke-linecap="square"></path> 932 </svg> 933 </button> 934 935 <div id="mobile-list-4" class="mobile-menu__nav-collapsible"> 936 <div class="mobile-menu__nav-collapsible-content"> 937 <ul class="mobile-menu__nav" data-type="menu" role="list"><li class="mobile-menu__nav-item"> 938 <a href="/collections/cmh-bulbs" class="mobile-menu__nav-link" data-type="menuitem">CMH Bulbs</a> 939 </li><li class="mobile-menu__nav-item"> 940 <a href="/collections/double-ended-bulbs" class="mobile-menu__nav-link" data-type="menuitem">Double Ended Bulbs</a> 941 </li><li class="mobile-menu__nav-item"> 942 <a href="/collections/hps-bulbs" class="mobile-menu__nav-link" data-type="menuitem">HPS Bulbs</a> 943 </li><li class="mobile-menu__nav-item"> 944 <a href="/collections/mh-bulbs" class="mobile-menu__nav-link" data-type="menuitem">MH Bulbs</a> 945 </li></ul> 946 </div> 947 </div></div><div class="mobile-menu__nav-list-item"><button class="mobile-menu__nav-list-toggle text--strong" aria-controls="mobile-list-5" aria-expanded="false" data-action="toggle-collapsible" data-close-siblings="false">Light Parts & Accessories<svg focusable="false" class="icon icon--arrow-bottom " viewBox="0 0 12 8" role="presentation"> 948 <path stroke="currentColor" stroke-width="2" d="M10 2L6 6 2 2" fill="none" stroke-linecap="square"></path> 949 </svg> 950 </button> 951 952 <div id="mobile-list-5" class="mobile-menu__nav-collapsible"> 953 <div class="mobile-menu__nav-collapsible-content"> 954 <ul class="mobile-menu__nav" data-type="menu" role="list"><li class="mobile-menu__nav-item"> 955 <a href="/collections/ballasts" class="mobile-menu__nav-link" data-type="menuitem">Ballasts</a> 956 </li><li class="mobile-menu__nav-item"> 957 <a href="/collections/controllers" class="mobile-menu__nav-link" data-type="menuitem">Controllers</a> 958 </li><li class="mobile-menu__nav-item"> 959 <a href="/collections/replacement-parts-1" class="mobile-menu__nav-link" data-type="menuitem">Replacement & Parts</a> 960 </li><li class="mobile-menu__nav-item"> 961 <a href="/collections/glasses" class="mobile-menu__nav-link" data-type="menuitem">Glasses</a> 962 </li></ul> 963 </div> 964 </div></div></div></div> 965 </div><div id="mobile-panel-2" class="mobile-menu__panel is-nested"> 966 <div class="mobile-menu__section is-sticky"> 967 <button class="mobile-menu__back-button" data-action="close-panel"><svg focusable="false" class="icon icon--arrow-left " viewBox="0 0 8 12" role="presentation"> 968 <path stroke="currentColor" stroke-width="2" d="M6 10L2 6l4-4" fill="none" stroke-linecap="square"></path> 969 </svg> Back</button> 970 </div> 971 972 <div class="mobile-menu__section"><div class="mobile-menu__nav-list"><div class="mobile-menu__nav-list-item"><a href="/collections/base-nutrients" class="mobile-menu__nav-list-toggle text--strong">Base Nutrients</a></div><div class="mobile-menu__nav-list-item"><a href="/collections/organic-nutrients" class="mobile-menu__nav-list-toggle text--strong">Organic</a></div><div class="mobile-menu__nav-list-item"><a href="/collections/nutrient-kits" class="mobile-menu__nav-list-toggle text--strong">Nutrient Kits</a></div><div class="mobile-menu__nav-list-item"><a href="/collections/plant-supplements" class="mobile-menu__nav-list-toggle text--strong">Plant Supplements</a></div><div class="mobile-menu__nav-list-item"><a href="/collections/mycorrhizae-microbe" class="mobile-menu__nav-list-toggle text--strong">Mycorrhizae / Microbe</a></div><div class="mobile-menu__nav-list-item"><a href="/collections/foliar" class="mobile-menu__nav-list-toggle text--strong">Foliar</a></div><div class="mobile-menu__nav-list-item"><a href="/collections/flushing-solutions" class="mobile-menu__nav-list-toggle text--strong">Flushing Solutions</a></div><div class="mobile-menu__nav-list-item"><a href="/collections/rooting-hormones" class="mobile-menu__nav-list-toggle text--strong">Rooting Hormones</a></div><div class="mobile-menu__nav-list-item"><a href="/collections/ph-ph" class="mobile-menu__nav-list-toggle text--strong">Ph+ / Ph-</a></div></div></div> 973 </div><div id="mobile-panel-3" class="mobile-menu__panel is-nested"> 974 <div class="mobile-menu__section is-sticky"> 975 <button class="mobile-menu__back-button" data-action="close-panel"><svg focusable="false" class="icon icon--arrow-left " viewBox="0 0 8 12" role="presentation"> 976 <path stroke="currentColor" stroke-width="2" d="M6 10L2 6l4-4" fill="none" stroke-linecap="square"></path> 977 </svg> Back</button> 978 </div> 979 980 <div class="mobile-menu__section"><div class="mobile-menu__nav-list"><div class="mobile-menu__nav-list-item"><button class="mobile-menu__nav-list-toggle text--strong" aria-controls="mobile-list-15" aria-expanded="false" data-action="toggle-collapsible" data-close-siblings="false">Watering Systems<svg focusable="false" class="icon icon--arrow-bottom " viewBox="0 0 12 8" role="presentation"> 981 <path stroke="currentColor" stroke-width="2" d="M10 2L6 6 2 2" fill="none" stroke-linecap="square"></path> 982 </svg> 983 </button> 984 985 <div id="mobile-list-15" class="mobile-menu__nav-collapsible"> 986 <div class="mobile-menu__nav-collapsible-content"> 987 <ul class="mobile-menu__nav" data-type="menu" role="list"><li class="mobile-menu__nav-item"> 988 <a href="/collections/dwc" class="mobile-menu__nav-link" data-type="menuitem">DWC</a> 989 </li><li class="mobile-menu__nav-item"> 990 <a href="/collections/rdwc" class="mobile-menu__nav-link" data-type="menuitem">RDWC</a> 991 </li><li class="mobile-menu__nav-item"> 992 <a href="/collections/other-systems-hydro" class="mobile-menu__nav-link" data-type="menuitem">Other Systems</a> 993 </li></ul> 994 </div> 995 </div></div><div class="mobile-menu__nav-list-item"><button class="mobile-menu__nav-list-toggle text--strong" aria-controls="mobile-list-16" aria-expanded="false" data-action="toggle-collapsible" data-close-siblings="false">Pots and Parts<svg focusable="false" class="icon icon--arrow-bottom " viewBox="0 0 12 8" role="presentation"> 996 <path stroke="currentColor" stroke-width="2" d="M10 2L6 6 2 2" fill="none" stroke-linecap="square"></path> 997 </svg> 998 </button> 999 1000 <div id="mobile-list-16" class="mobile-menu__nav-collapsible"> 1001 <div class="mobile-menu__nav-collapsible-content"> 1002 <ul class="mobile-menu__nav" data-type="menu" role="list"><li class="mobile-menu__nav-item"> 1003 <a href="/collections/pots-net-pots" class="mobile-menu__nav-link" data-type="menuitem">Pots & Net Pots</a> 1004 </li><li class="mobile-menu__nav-item"> 1005 <a href="/collections/flood-tables" class="mobile-menu__nav-link" data-type="menuitem">Flood Tables</a> 1006 </li><li class="mobile-menu__nav-item"> 1007 <a href="/collections/pump-replacement-parts" class="mobile-menu__nav-link" data-type="menuitem">Pump Replacement Parts</a> 1008 </li><li class="mobile-menu__nav-item"> 1009 <a href="/collections/water-filter-parts" class="mobile-menu__nav-link" data-type="menuitem">Water Filter Parts</a> 1010 </li><li class="mobile-menu__nav-item"> 1011 <a href="/collections/pots-and-parts-accessories" class="mobile-menu__nav-link" data-type="menuitem">Accessories</a> 1012 </li><li class="mobile-menu__nav-item"> 1013 <a href="/collections/fabric-pots" class="mobile-menu__nav-link" data-type="menuitem">Fabric Pots</a> 1014 </li></ul> 1015 </div> 1016 </div></div><div class="mobile-menu__nav-list-item"><button class="mobile-menu__nav-list-toggle text--strong" aria-controls="mobile-list-17" aria-expanded="false" data-action="toggle-collapsible" data-close-siblings="false">Water Control<svg focusable="false" class="icon icon--arrow-bottom " viewBox="0 0 12 8" role="presentation"> 1017 <path stroke="currentColor" stroke-width="2" d="M10 2L6 6 2 2" fill="none" stroke-linecap="squar
1017e"></path> 1018 </svg> 1019 </button> 1020 1021 <div id="mobile-list-17" class="mobile-menu__nav-collapsible"> 1022 <div class="mobile-menu__nav-collapsible-content"> 1023 <ul class="mobile-menu__nav" data-type="menu" role="list"><li class="mobile-menu__nav-item"> 1024 <a href="/collections/water-pumps-air-stones" class="mobile-menu__nav-link" data-type="menuitem">Pumps & Air Stones</a> 1025 </li><li class="mobile-menu__nav-item"> 1026 <a href="/collections/reservoirs-water-temp" class="mobile-menu__nav-link" data-type="menuitem">Reservoirs & Water Temp.</a> 1027 </li><li class="mobile-menu__nav-item"> 1028 <a href="/collections/tubing-fittings" class="mobile-menu__nav-link" data-type="menuitem">Tubing & Fittings</a> 1029 </li><li class="mobile-menu__nav-item"> 1030 <a href="/collections/ph-up-down" class="mobile-menu__nav-link" data-type="menuitem">PH Up & Down</a> 1031 </li><li class="mobile-menu__nav-item"> 1032 <a href="/collections/water-filters" class="mobile-menu__nav-link" data-type="menuitem">Water Filters</a> 1033 </li></ul> 1034 </div> 1035 </div></div></div></div> 1036 </div><div id="mobile-panel-4" class="mobile-menu__panel is-nested"> 1037 <div class="mobile-menu__section is-sticky"> 1038 <button class="mobile-menu__back-button" data-action="close-panel"><svg focusable="false" class="icon icon--arrow-left " viewBox="0 0 8 12" role="presentation"> 1039 <path stroke="currentColor" stroke-width="2" d="M6 10L2 6l4-4" fill="none" stroke-linecap="square"></path> 1040 </svg> Back</button> 1041 </div> 1042 1043 <div class="mobile-menu__section"><div class="mobile-menu__nav-list"><div class="mobile-menu__nav-list-item"><button class="mobile-menu__nav-list-toggle text--strong" aria-controls="mobile-list-18" aria-expanded="false" data-action="toggle-collapsible" data-close-siblings="false">Ventilation<svg focusable="false" class="icon icon--arrow-bottom " viewBox="0 0 12 8" role="presentation"> 1044 <path stroke="currentColor" stroke-width="2" d="M10 2L6 6 2 2" fill="none" stroke-linecap="square"></path> 1045 </svg> 1046 </button> 1047 1048 <div id="mobile-list-18" class="mobile-menu__nav-collapsible"> 1049 <div class="mobile-menu__nav-collapsible-content"> 1050 <ul class="mobile-menu__nav" data-type="menu" role="list"><li class="mobile-menu__nav-item"> 1051 <a href="/collections/fans-filter-kits" class="mobile-menu__nav-link" data-type="menuitem">Fan & Filter Kits</a> 1052 </li><li class="mobile-menu__nav-item"> 1053 <a href="/collections/inline-fans" class="mobile-menu__nav-link" data-type="menuitem">Inline Fans</a> 1054 </li><li class="mobile-menu__nav-item"> 1055 <a href="/collections/carbon-filters" class="mobile-menu__nav-link" data-type="menuitem">Filters</a> 1056 </li><li class="mobile-menu__nav-item"> 1057 <a href="/collections/wall-fans-others" class="mobile-menu__nav-link" data-type="menuitem">Wall Fans & Others</a> 1058 </li><li class="mobile-menu__nav-item"> 1059 <a href="/collections/ducts-reducers-flanges-climate-control" class="mobile-menu__nav-link" data-type="menuitem">Ducts, Reducers, Flanges </a> 1060 </li></ul> 1061 </div> 1062 </div></div><div class="mobile-menu__nav-list-item"><button class="mobile-menu__nav-list-toggle text--strong" aria-controls="mobile-list-19" aria-expanded="false" data-action="toggle-collapsible" data-close-siblings="false">Controllers, Timers & Meters<svg focusable="false" class="icon icon--arrow-bottom " viewBox="0 0 12 8" role="presentation"> 1063 <path stroke="currentColor" stroke-width="2" d="M10 2L6 6 2 2" fill="none" stroke-linecap="square"></path> 1064 </svg> 1065 </button> 1066 1067 <div id="mobile-list-19" class="mobile-menu__nav-collapsible"> 1068 <div class="mobile-menu__nav-collapsible-content"> 1069 <ul class="mobile-menu__nav" data-type="menu" role="list"><li class="mobile-menu__nav-item"> 1070 <a href="/collections/fan-speed-controllers" class="mobile-menu__nav-link" data-type="menuitem">Fan Speed Controllers</a> 1071 </li><li class="mobile-menu__nav-item"> 1072 <a href="/collections/temperature-controllers" class="mobile-menu__nav-link" data-type="menuitem">Temperature Controllers</a> 1073 </li><li class="mobile-menu__nav-item"> 1074 <a href="/collections/humidity-controllers" class="mobile-menu__nav-link" data-type="menuitem">Humidity Controllers</a> 1075 </li><li class="mobile-menu__nav-item"> 1076 <a href="/collections/co2-controllers" class="mobile-menu__nav-link" data-type="menuitem">CO2 Controllers</a> 1077 </li></ul> 1078 </div> 1079 </div></div><div class="mobile-menu__nav-list-item"><button class="mobile-menu__nav-list-toggle text--strong" aria-controls="mobile-list-20" aria-expanded="false" data-action="toggle-collapsible" data-close-siblings="false">CO2<svg focusable="false" class="icon icon--arrow-bottom " viewBox="0 0 12 8" role="presentation"> 1080 <path stroke="currentColor" stroke-width="2" d="M10 2L6 6 2 2" fill="none" stroke-linecap="square"></path> 1081 </svg> 1082 </button> 1083 1084 <div id="mobile-list-20" class="mobile-menu__nav-collapsible"> 1085 <div class="mobile-menu__nav-collapsible-content"> 1086 <ul class="mobile-menu__nav" data-type="menu" role="list"><li class="mobile-menu__nav-item"> 1087 <a href="/collections/bags-bottles" class="mobile-menu__nav-link" data-type="menuitem">Bags & Bottles</a> 1088 </li><li class="mobile-menu__nav-item"> 1089 <a href="/collections/burners" class="mobile-menu__nav-link" data-type="menuitem">Burners</a> 1090 </li><li class="mobile-menu__nav-item"> 1091 <a href="/collections/co2-parts" class="mobile-menu__nav-link" data-type="menuitem">Parts</a> 1092 </li></ul> 1093 </div> 1094 </div></div><div class="mobile-menu__nav-list-item"><button class="mobile-menu__nav-list-toggle text--strong" aria-controls="mobile-list-21" aria-expanded="false" data-action="toggle-collapsible" data-close-siblings="false">Humidity Control<svg focusable="false" class="icon icon--arrow-bottom " viewBox="0 0 12 8" role="presentation"> 1095 <path stroke="currentColor" stroke-width="2" d="M10 2L6 6 2 2" fill="none" stroke-linecap="square"></path> 1096 </svg> 1097 </button> 1098 1099 <div id="mobile-list-21" class="mobile-menu__nav-collapsible"> 1100 <div class="mobile-menu__nav-collapsible-content"> 1101 <ul class="mobile-menu__nav" data-type="menu" role="list"><li class="mobile-menu__nav-item"> 1102 <a href="/collections/humidifiers" class="mobile-menu__nav-link" data-type="menuitem">Humidifiers</a> 1103 </li><li class="mobile-menu__nav-item"> 1104 <a href="/collections/dehumidifiers" class="mobile-menu__nav-link" data-type="menuitem">Dehumidifiers</a> 1105 </li><li class="mobile-menu__nav-item"> 1106 <a href="/collections/humidity-packs" class="mobile-menu__nav-link" data-type="menuitem">Humidity Packs</a> 1107 </li><li class="mobile-menu__nav-item"> 1108 <a href="/collections/atomizers" class="mobile-menu__nav-link" data-type="menuitem">Atomizers</a> 1109 </li></ul> 1110 </div> 1111 </div></div><div class="mobile-menu__nav-list-item"><a href="/collections/air-conditioner" class="mobile-menu__nav-list-toggle text--strong">Air Conditioner</a></div><div class="mobile-menu__nav-list-item"><button class="mobile-menu__nav-list-toggle text--strong" aria-controls="mobile-list-23" aria-expanded="false" data-action="toggle-collapsible" data-close-siblings="false">Odor Neutralizer<svg focusable="false" class="icon icon--arrow-bottom " viewBox="0 0 12 8" role="presentation"> 1112 <path stroke="currentColor" stroke-width="2" d="M10 2L6 6 2 2" fill="none" stroke-linecap="square"></path> 1113 </svg> 1114 </button> 1115 1116 <div id="mobile-list-23" class="mobile-menu__nav-collapsible"> 1117 <div class="mobile-menu__nav-collapsible-content"> 1118 <ul class="mobile-menu__nav" data-type="menu" role="list"><li class="mobile-menu__nav-item"> 1119 <a href="/collections/gels-sprays" class="mobile-menu__nav-link" data-type="menuitem">Gels & Sprays</a> 1120 </li><li class="mobile-menu__nav-item"> 1121 <a href="/collections/ozone-generator" class="mobile-menu__nav-link" data-type="menuitem">Ozone</a> 1122 </li></ul> 1123 </div> 1124 </div></div><div class="mobile-menu__nav-list-item"><a href="/collections/air-sanitization" class="mobile-menu__nav-list-toggle text--strong">Air Sanitization</a></div><div class="mobile-menu__nav-list-item"><button class="mobile-menu__nav-list-toggle text--strong" aria-controls="mobile-list-25" aria-expanded="false" data-action="toggle-collapsible" data-close-siblings="false">Replacements & Parts<svg focusable="false" class="icon icon--arrow-bottom " viewBox="0 0 12 8" role="presentation"> 1125 <path stroke="currentColor" stroke-width="2" d="M10 2L6 6 2 2" fill="none" stroke-linecap="square"></path> 1126 </svg> 1127 </button> 1128 1129 <div id="mobile-list-25" class="mobile-menu__nav-collapsible"> 1130 <div class="mobile-menu__nav-collapsible-content"> 1131 <ul class="mobile-menu__nav" data-type="menu" role="list"><li class="mobile-menu__nav-item"> 1132 <a href="/collections/filters-1" class="mobile-menu__nav-link" data-type="menuitem">Filters</a> 1133 </li><li class="mobile-menu__nav-item"> 1134 <a href="/collections/co2-parts" class="mobile-menu__nav-link" data-type="menuitem">CO2 Parts</a> 1135 </li><li class="mobile-menu__nav-item"> 1136 <a href="/collections/hangers" class="mobile-menu__nav-link" data-type="menuitem">Hangers</a> 1137 </li><li class="mobile-menu__nav-item"> 1138 <a href="/collections/controllers-climate" class="mobile-menu__nav-link" data-type="menuitem">Controllers</a> 1139 </li></ul> 1140 </div> 1141 </div></div></div></div> 1142 </div><div id="mobile-panel-5" class="mobile-menu__panel is-nested"> 1143 <div class="mobile-menu__section is-sticky"> 1144 <button class="mobile-menu__back-button" data-action="close-panel"><svg focusable="false" class="icon icon--arrow-left " viewBox="0 0 8 12" role="presentation"> 1145 <path stroke="currentColor" stroke-width="2" d="M6 10L2 6l4-4" fill="none" stroke-linecap="square"></path> 1146 </svg> Back</button> 1147 </div> 1148 1149 <div class="mobile-menu__section"><div class="mobile-menu__nav-list"><div class="mobile-menu__nav-list-item"><button class="mobile-menu__nav-list-toggle text--strong" aria-controls="mobile-list-26" aria-expanded="false" data-action="toggle-collapsible" data-close-siblings="false">Grow Media<svg focusable="false" class="icon icon--arrow-bottom " viewBox="0 0 12 8" role="presentation"> 1150 <path stroke="currentColor" stroke-width="2" d="M10 2L6 6 2 2" fill="none" stroke-linecap="square"></path> 1151 </svg> 1152 </button> 1153 1154 <div id="mobile-list-26" class="mobile-menu__nav-collapsible"> 1155 <div class="mobile-menu__nav-collapsible-content"> 1156 <ul class="mobile-menu__nav" data-type="menu" role="list"><li class="mobile-menu__nav-item"> 1157 <a href="/collections/coco" class="mobile-menu__nav-link" data-type="menuitem">Coco</a> 1158 </li><li class="mobile-menu__nav-item"> 1159 <a href="/collections/soil-mixes" class="mobile-menu__nav-link" data-type="menuitem">Soil Mixes</a> 1160 </li><li class="mobile-menu__nav-item"> 1161 <a href="/collections/rockwool" class="mobile-menu__nav-link" data-type="menuitem">Rockwool</a> 1162 </li><li class="mobile-menu__nav-item"> 1163 <a href="/collections/clay-pellets" class="mobile-menu__nav-link" data-type="menuitem">Clay Pellets</a> 1164 </li><li class="mobile-menu__nav-item"> 1165 <a href="/collections/others-propagation" class="mobile-menu__nav-link" data-type="menuitem">Others</a> 1166 </li></ul> 1167 </div> 1168 </div></div><div class="mobile-menu__nav-list-item"><button class="mobile-menu__nav-list-toggle text--strong" aria-controls="mobile-list-27" aria-expanded="false" data-action="toggle-collapsible" data-close-siblings="false">Germination & Cloning<svg focusable="false" class="icon icon--arrow-bottom " viewBox="0 0 12 8" role="presentation"> 1169 <path stroke="currentColor" stroke-width="2" d="M10 2L6 6 2 2" fill="none" stroke-linecap="square"></path> 1170 </svg> 1171 </button> 1172 1173 <div id="mobile-list-27" class="mobile-menu__nav-collapsible"> 1174 <div class="mobile-menu__nav-collapsible-content"> 1175 <ul class="mobile-menu__nav" data-type="menu" role="list"><li class="mobile-menu__nav-item"> 1176 <a href="/collections/propagation-lights" class="mobile-menu__nav-link" data-type="menuitem">Propagation Lights</a> 1177 </li><li class="mobile-menu__nav-item"> 1178 <a href="/collections/trays-domes" class="mobile-menu__nav-link" data-type="menuitem">Trays & Domes</a> 1179 </li><li class="mobile-menu__nav-item"> 1180 <a href="/collections/mycorrhizae-microbe-germination" class="mobile-menu__nav-link" data-type="menuitem">Mycorrhizae / Microbes</a> 1181 </li><li class="mobile-menu__nav-item"> 1182 <a href="/collections/cloners" class="mobile-menu__nav-link" data-type="menuitem">Cloners</a> 1183 </li><li class="mobile-menu__nav-item"> 1184 <a href="/collections/starter-pellets" class="mobile-menu__nav-link" data-type="menuitem">Starter Pellets</a> 1185 </li><li class="mobile-menu__nav-item"> 1186 <a href="/collections/heat-beds" class="mobile-menu__nav-link" data-type="menuitem">Heatbeds</a> 1187 </li><li class="mobile-menu__nav-item"> 1188 <a href="/collections/micro-gardens" class="mobile-menu__nav-link" data-type="menuitem">Micro Gardens</a> 1189 </li></ul> 1190 </div> 1191 </div></div></div></div> 1192 </div><div id="mobile-panel-6" class="mobile-menu__panel
1192 is-nested"> 1193 <div class="mobile-menu__section is-sticky"> 1194 <button class="mobile-menu__back-button" data-action="close-panel"><svg focusable="false" class="icon icon--arrow-left " viewBox="0 0 8 12" role="presentation"> 1195 <path stroke="currentColor" stroke-width="2" d="M6 10L2 6l4-4" fill="none" stroke-linecap="square"></path> 1196 </svg> Back</button> 1197 </div> 1198 1199 <div class="mobile-menu__section"><div class="mobile-menu__nav-list"><div class="mobile-menu__nav-list-item"><button class="mobile-menu__nav-list-toggle text--strong" aria-controls="mobile-list-28" aria-expanded="false" data-action="toggle-collapsible" data-close-siblings="false">Trimming<svg focusable="false" class="icon icon--arrow-bottom " viewBox="0 0 12 8" role="presentation"> 1200 <path stroke="currentColor" stroke-width="2" d="M10 2L6 6 2 2" fill="none" stroke-linecap="square"></path> 1201 </svg> 1202 </button> 1203 1204 <div id="mobile-list-28" class="mobile-menu__nav-collapsible"> 1205 <div class="mobile-menu__nav-collapsible-content"> 1206 <ul class="mobile-menu__nav" data-type="menu" role="list"><li class="mobile-menu__nav-item"> 1207 <a href="/collections/pruners" class="mobile-menu__nav-link" data-type="menuitem">Pruners</a> 1208 </li><li class="mobile-menu__nav-item"> 1209 <a href="/collections/trimmers" class="mobile-menu__nav-link" data-type="menuitem">Trimmers</a> 1210 </li><li class="mobile-menu__nav-item"> 1211 <a href="/collections/trimmer-parts" class="mobile-menu__nav-link" data-type="menuitem">Trimmer Parts</a> 1212 </li><li class="mobile-menu__nav-item"> 1213 <a href="/collections/buckers" class="mobile-menu__nav-link" data-type="menuitem">Buckers</a> 1214 </li></ul> 1215 </div> 1216 </div></div><div class="mobile-menu__nav-list-item"><button class="mobile-menu__nav-list-toggle text--strong" aria-controls="mobile-list-29" aria-expanded="false" data-action="toggle-collapsible" data-close-siblings="false">Extractions<svg focusable="false" class="icon icon--arrow-bottom " viewBox="0 0 12 8" role="presentation"> 1217 <path stroke="currentColor" stroke-width="2" d="M10 2L6 6 2 2" fill="none" stroke-linecap="square"></path> 1218 </svg> 1219 </button> 1220 1221 <div id="mobile-list-29" class="mobile-menu__nav-collapsible"> 1222 <div class="mobile-menu__nav-collapsible-content"> 1223 <ul class="mobile-menu__nav" data-type="menu" role="list"><li class="mobile-menu__nav-item"> 1224 <a href="/collections/presses" class="mobile-menu__nav-link" data-type="menuitem">Presses</a> 1225 </li><li class="mobile-menu__nav-item"> 1226 <a href="/collections/extraction-bags" class="mobile-menu__nav-link" data-type="menuitem">Extraction bags</a> 1227 </li><li class="mobile-menu__nav-item"> 1228 <a href="/collections/cooking-edibles" class="mobile-menu__nav-link" data-type="menuitem">Cooking & Edibles</a> 1229 </li><li class="mobile-menu__nav-item"> 1230 <a href="/collections/others-extractions" class="mobile-menu__nav-link" data-type="menuitem">Others</a> 1231 </li></ul> 1232 </div> 1233 </div></div><div class="mobile-menu__nav-list-item"><button class="mobile-menu__nav-list-toggle text--strong" aria-controls="mobile-list-30" aria-expanded="false" data-action="toggle-collapsible" data-close-siblings="false">Sprayers & Parts<svg focusable="false" class="icon icon--arrow-bottom " viewBox="0 0 12 8" role="presentation"> 1234 <path stroke="currentColor" stroke-width="2" d="M10 2L6 6 2 2" fill="none" stroke-linecap="square"></path> 1235 </svg> 1236 </button> 1237 1238 <div id="mobile-list-30" class="mobile-menu__nav-collapsible"> 1239 <div class="mobile-menu__nav-collapsible-content"> 1240 <ul class="mobile-menu__nav" data-type="menu" role="list"><li class="mobile-menu__nav-item"> 1241 <a href="/collections/sprayers" class="mobile-menu__nav-link" data-type="menuitem">Sprayers </a> 1242 </li><li class="mobile-menu__nav-item"> 1243 <a href="/collections/parts-nozzles" class="mobile-menu__nav-link" data-type="menuitem">Parts & Nozzles</a> 1244 </li></ul> 1245 </div> 1246 </div></div><div class="mobile-menu__nav-list-item"><button class="mobile-menu__nav-list-toggle text--strong" aria-controls="mobile-list-31" aria-expanded="false" data-action="toggle-collapsible" data-close-siblings="false">Drying & Accessories<svg focusable="false" class="icon icon--arrow-bottom " viewBox="0 0 12 8" role="presentation"> 1247 <path stroke="currentColor" stroke-width="2" d="M10 2L6 6 2 2" fill="none" stroke-linecap="square"></path> 1248 </svg> 1249 </button> 1250 1251 <div id="mobile-list-31" class="mobile-menu__nav-collapsible"> 1252 <div class="mobile-menu__nav-collapsible-content"> 1253 <ul class="mobile-menu__nav" data-type="menu" role="list"><li class="mobile-menu__nav-item"> 1254 <a href="/collections/drying-racks" class="mobile-menu__nav-link" data-type="menuitem">Drying & Racks</a> 1255 </li><li class="mobile-menu__nav-item"> 1256 <a href="/collections/scales" class="mobile-menu__nav-link" data-type="menuitem">Scales</a> 1257 </li><li class="mobile-menu__nav-item"> 1258 <a href="/collections/packaging" class="mobile-menu__nav-link" data-type="menuitem">Packaging</a> 1259 </li><li class="mobile-menu__nav-item"> 1260 <a href="/collections/gloves" class="mobile-menu__nav-link" data-type="menuitem">Gloves</a> 1261 </li><li class="mobile-menu__nav-item"> 1262 <a href="/collections/freeze-dryers" class="mobile-menu__nav-link" data-type="menuitem">Freeze Dryers</a> 1263 </li><li class="mobile-menu__nav-item"> 1264 <a href="/collections/garden-tools" class="mobile-menu__nav-link" data-type="menuitem">Garden Tools</a> 1265 </li><li class="mobile-menu__nav-item"> 1266 <a href="/collections/humidity-packs" class="mobile-menu__nav-link" data-type="menuitem">Humidity Packs</a> 1267 </li><li class="mobile-menu__nav-item"> 1268 <a href="/collections/other-accessories-drying" class="mobile-menu__nav-link" data-type="menuitem">
1268Other Accessories (drying)</a> 1269 </li></ul> 1270 </div> 1271 </div></div></div></div> 1272 </div><div id="mobile-panel-0-0" class="mobile-menu__panel is-nested"> 1273 <div class="mobile-menu__section is-sticky"> 1274 <button class="mobile-menu__back-button" data-action="close-panel"><svg focusable="false" class="icon icon--arrow-left " viewBox="0 0 8 12" role="presentation"> 1275 <path stroke="currentColor" stroke-width="2" d="M6 10L2 6l4-4" fill="none" stroke-linecap="square"></path> 1276 </svg> Back</button> 1277 </div> 1278 1279 <div class="mobile-menu__section"> 1280 <ul class="mobile-menu__nav" data-type="menu" role="list"> 1281 <li class="mobile-menu__nav-item"> 1282 <a href="/collections/grow-tents" class="mobile-menu__nav-link text--strong">Grow Tents</a> 1283 </li><li class="mobile-menu__nav-item"> 1284 <a href="/collections/2x2" class="mobile-menu__nav-link" data-type="menuitem">2x2</a> 1285 </li><li class="mobile-menu__nav-item"> 1286 <a href="/collections/2x4" class="mobile-menu__nav-link" data-type="menuitem">2x4</a> 1287 </li><li class="mobile-menu__nav-item"> 1288 <a href="/collections/3x3" class="mobile-menu__nav-link" data-type="menuitem">3x3</a> 1289 </li><li class="mobile-menu__nav-item"> 1290 <a href="/collections/4x4" class="mobile-menu__nav-link" data-type="menuitem">4x4</a> 1291 </li><li class="mobile-menu__nav-item"> 1292 <a href="/collections/5x5" class="mobile-menu__nav-link" data-type="menuitem">5x5</a> 1293 </li><li class="mobile-menu__nav-item"> 1294 <a href="/collections/8x4" class="mobile-menu__nav-link" data-type="menuitem">8x4</a> 1295 </li><li class="mobile-menu__nav-item"> 1296 <a href="/collections/8x8" class="mobile-menu__nav-link" data-type="menuitem">8x8</a> 1297 </li><li class="mobile-menu__nav-item"> 1298 <a href="/collections/10x5" class="mobile-menu__nav-link" data-type="menuitem">10x5</a> 1299 </li></ul> 1300 </div> 1301 </div><div id="mobile-panel-0-1" class="mobile-menu__panel is-nested"> 1302 <div class="mobile-menu__section is-sticky"> 1303 <button class="mobile-menu__back-button" data-action="close-panel"><svg focusable="false" class="icon icon--arrow-left " viewBox="0 0 8 12" role="presentation"> 1304 <path stroke="currentColor" stroke-width="2" d="M6 10L2 6l4-4" fill="none" stroke-linecap="square"></path> 1305 </svg> Back</button> 1306 </div> 1307 1308 <div class="mobile-menu__section"> 1309 <ul class="mobile-menu__nav" data-type="menu" role="list"> 1310 <li class="mobile-menu__nav-item"> 1311 <a href="/collections/accessories" class="mobile-menu__nav-link text--strong">Grow Kits</a> 1312 </li><li class="mobile-menu__nav-item"> 1313 <a href="/collections/5-plants" class="mobile-menu__nav-link" data-type="menuitem">5 Plants</a> 1314 </li><li class="mobile-menu__nav-item"> 1315 <a href="/collections/6-plants" class="mobile-menu__nav-link" data-type="menuitem">6 Plants</a> 1316 </li><li class="mobile-menu__nav-item"> 1317 <a href="/collections/8-plants" class="mobile-menu__nav-link" data-type="menuitem">8 Plants</a> 1318 </li><li class="mobile-menu__nav-item"> 1319 <a href="/collections/10-plants" class="mobile-menu__nav-link" data-type="menuitem">10 Plants</a> 1320 </li></ul> 1321 </div> 1322 </div><div id="mobile-panel-0-2" class="mobile-menu__panel is-nested"> 1323 <div class="mobile-menu__section is-sticky"> 1324 <button class="mobile-menu__back-button" data-action="close-panel"><svg focusable="false" class="icon icon--arrow-left " viewBox="0 0 8 12" role="presentation"> 1325 <path stroke="currentColor" stroke-width="2" d="M6 10L2 6l4-4" fill="none" stroke-linecap="square"></path> 1326 </svg> Back</button> 1327 </div> 1328 1329 <div class="mobile-menu__section"> 1330 <ul class="mobile-menu__nav" data-type="menu" role="list"> 1331 <li class="mobile-menu__nav-item"> 1332 <a href="/collections/grow-accessories" class="mobile-menu__nav-link text--strong">Accessories</a> 1333 </li><li class="mobile-menu__nav-item"> 1334 <a href="/collections/grow-tent-extensions" class="mobile-menu__nav-link" data-type="menuitem">
1334Grow tent Extensions</a> 1335 </li><li class="mobile-menu__nav-item"> 1336 <a href="/collections/grow-tent-parts" class="mobile-menu__nav-link" data-type="menuitem">Grow Tent Parts </a> 1337 </li><li class="mobile-menu__nav-item"> 1338 <a href="/collections/reflective-materials-supplies" class="mobile-menu__nav-link" data-type="menuitem">Reflective Materials & Supplies</a> 1339 </li><li class="mobile-menu__nav-item"> 1340 <a href="/collections/net-plant-supports" class="mobile-menu__nav-link" data-type="menuitem">Net & Plant Supports</a> 1341 </li><li class="mobile-menu__nav-item"> 1342 <a href="/collections/grow-tent-others" class="mobile-menu__nav-link" data-type="menuitem">Others</a> 1343 </li></ul> 1344 </div> 1345 </div><div id="mobile-panel-1-0" class="mobile-menu__panel is-nested"> 1346 <div class="mobile-menu__section is-sticky"> 1347 <button class="mobile-menu__back-button" data-action="close-panel"><svg focusable="false" class="icon icon--arrow-left " viewBox="0 0 8 12" role="presentation"> 1348 <path stroke="currentColor" stroke-width="2" d="M6 10L2 6l4-4" fill="none" stroke-linecap="square"></path> 1349 </svg> Back</button> 1350 </div> 1351 1352 <div class="mobile-menu__section"> 1353 <ul class="mobile-menu__nav" data-type="menu" role="list"> 1354 <li class="mobile-menu__nav-item"> 1355 <a href="/collections/grow-lights" class="mobile-menu__nav-link text--strong">Grow Lights</a> 1356 </li><li class="mobile-menu__nav-item"> 1357 <a href="/collections/led-grow-lights" class="mobile-menu__nav-link" data-type="menuitem">LED Grow Lights</a> 1358 </li><li class="mobile-menu__nav-item"> 1359 <a href="/collections/hid-grow-lights" class="mobile-menu__nav-link" data-type="menuitem">HID Grow Lights</a> 1360 </li><li class="mobile-menu__nav-item"> 1361 <a href="/collections/fluorescent-t5" class="mobile-menu__nav-link" data-type="menuitem">Fluorescent/T5</a> 1362 </li></ul> 1363 </div> 1364 </div><div id="mobile-panel-1-1" class="mobile-menu__panel is-nested"> 1365 <div class="mobile-menu__section is-sticky"> 1366 <button class="mobile-menu__back-button" data-action="close-panel"><svg focusable="false" class="icon icon--arrow-left " viewBox="0 0 8 12" role="presentation"> 1367 <path stroke="currentColor" stroke-width="2" d="M6 10L2 6l4-4" fill="none" stroke-linecap="square"></path> 1368 </svg> Back</button> 1369 </div> 1370 1371 <div class="mobile-menu__section"> 1372 <ul class="mobile-menu__nav" data-type="menu" role="list"> 1373 <li class="mobile-menu__nav-item"> 1374 <a href="/collections/mh-hps-cmh" class="mobile-menu__nav-link text--strong">MH, HPS, CMH</a> 1375 </li><li class="mobile-menu__nav-item"> 1376 <a href="/collections/cmh-bulbs" class="mobile-menu__nav-link" data-type="menuitem">CMH Bulbs</a> 1377 </li><li class="mobile-menu__nav-item"> 1378 <a href="/collections/double-ended-bulbs" class="mobile-menu__nav-link" data-type="menuitem">Double Ended Bulbs</a> 1379 </li><li class="mobile-menu__nav-item"> 1380 <a href="/collections/hps-bulbs" class="mobile-menu__nav-link" data-type="menuitem">HPS Bulbs</a> 1381 </li><li class="mobile-menu__nav-item"> 1382 <a href="/collections/mh-bulbs" class="mobile-menu__nav-link" data-type="menuitem">MH Bulbs</a> 1383 </li></ul> 1384 </div> 1385 </div><div id="mobile-panel-1-2" class="mobile-menu__panel is-nested"> 1386 <div class="mobile-menu__section is-sticky"> 1387 <button class="mobile-menu__back-button" data-action="close-panel"><svg focusable="false" class="icon icon--arrow-left " viewBox="0 0 8 12" role="presentation"> 1388 <path stroke="currentColor" stroke-width="2" d="M6 10L2 6l4-4" fill="none" stroke-linecap="square"></path> 1389 </svg> Back</button> 1390 </div> 1391 1392 <div class="mobile-menu__section"> 1393 <ul class="mobile-menu__nav" data-type="menu" role="list"> 1394 <li class="mobile-menu__nav-item"> 1395 <a href="/collections/lights-parts-accessories" class="mobile-menu__nav-link text--strong">Light Parts & Accessories</a> 1396 </li><li class="mobile-menu__nav-item"> 1397 <a href="/collections/ballasts" class="mobile-menu__nav-link" data-type="menuitem">Ballasts</a> 1398 </li><li class="mobile-menu__nav-item"> 1399 <a href="/collections/controllers" class="mobile-menu__nav-link" data-type="menuitem">Controllers</a> 1400 </li><li class="mobile-menu__nav-item"> 1401 <a href="/collections/replacement-parts-1" class="mobile-menu__nav-link" data-type="menuitem">Replacement & Parts</a> 1402 </li><li class="mobile-menu__nav-item"> 1403 <a href="/collections/glasses" class="mobile-menu__nav-link" data-type="menuitem">Glasses</a> 1404 </li></ul> 1405 </div> 1406 </div><div id="mobile-panel-3-0" class="mobile-menu__panel is-nested"> 1407 <div class="mobile-menu__section is-sticky"> 1408 <button class="mobile-menu__back-button" data-action="close-panel"><svg focusable="false" class="icon icon--arrow-left " viewBox="0 0 8 12" role="presentation"> 1409 <path stroke="currentColor" stroke-width="2" d="M6 10L2 6l4-4" fill="none" stroke-linecap="square"></path> 1410 </svg> Back</button> 1411 </div> 1412 1413 <div class="mobile-menu__section"> 1414 <ul class="mobile-menu__nav" data-type="menu" role="list"> 1415 <li class="mobile-menu__nav-item"> 1416 <a href="/collections/hydroponics-systems" class="mobile-menu__nav-link text--strong">Watering Systems</a> 1417 </li><li class="mobile-menu__nav-item"> 1418 <a href="/collections/dwc" class="mobile-menu__nav-link" data-type="menuitem">DWC</a> 1419 </li><li class="mobile-menu__nav-item"> 1420 <a href="/collections/rdwc" class="mobile-menu__nav-link" data-type="menuitem">RDWC</a> 1421 </li><li class="mobile-menu__nav-item"> 1422 <a href="/collections/other-systems-hydro" class="mobile-menu__nav-link" data-type="menuitem">Other Systems</a> 1423 </li></ul> 1424 </div> 1425 </div><div id="mobile-panel-3-1" class="mobile-menu__panel is-nested"> 1426 <div class="mobile-menu__section is-sticky"> 1427 <button class="mobile-menu__back-button" data-action="close-panel"><svg focusable="false" class="icon icon--arrow-left " viewBox="0 0 8 12" role="presentation"> 1428 <path stroke="currentColor" stroke-width="2" d="M6 10L2 6l4-4" fill="none" stroke-linecap="square"></path> 1429 </svg> Back</button> 1430 </div> 1431 1432 <div class="mobile-menu__section"> 1433 <ul class="mobile-menu__nav" data-type="menu" role="list"> 1434 <li class="mobile-menu__nav-item"> 1435 <a href="/collections/pots-and-parts" class="mobile-menu__nav-link text--strong">Pots and Parts</a> 1436 </li><li class="mobile-menu__nav-item"> 1437 <a href="/collections/pots-net-pots" class="mobile-menu__nav-link" data-type="menuitem">Pots & Net Pots</a> 1438 </li><li class="mobile-menu__nav-item"> 1439 <a href="/collections/flood-tables" class="mobile-menu__nav-link" data-type="menuitem">Flood Tables</a> 1440 </li><li class="mobile-menu__nav-item"> 1441 <a href="/collections/pump-replacement-parts" class="mobile-menu__nav-link" data-type="menuitem">Pump Replacement Parts</a> 1442 </li><li class="mobile-menu__nav-item"> 1443 <a href="/collections/water-filter-parts" class="mobile-menu__nav-link" data-type="menuitem">Water Filter Parts</a> 1444 </li><li class="mobile-menu__nav-item"> 1445 <a href="/collections/pots-and-parts-accessories" class="mobile-menu__nav-link" data-type="menuitem">Accessories</a> 1446 </li><li class="mobile-menu__nav-item"> 1447 <a href="/collections/fabric-pots" class="mobile-menu__nav-link" data-type="menuitem">Fabric Pots</a> 1448 </li></ul> 1449 </div> 1450 </div><div id="mobile-panel-3-2" class="mobile-menu__panel is-nested"> 1451 <div class="mobile-menu__section is-sticky"> 1452 <button class="mobile-menu__back-button" data-action="close-panel"><svg focusable="false" class="icon icon--arrow-left " viewBox="0 0 8 12" role="presentation"> 1453 <path stroke="currentColor" stroke-width="2" d="M6 10L2 6l4-4" fill="none" stroke-linecap="square"></path> 1454 </svg> Back</button> 1455 </div> 1456 1457 <div class="mobile-menu__section"> 1458 <ul class="mobile-menu__nav" data-type="menu" role="list"> 1459 <li class="mobile-menu__nav-item"> 1460 <a href="/collections/water-control" class="mobile-menu__nav-link text--strong">Water Control</a> 1461 </li><li class="mobile-menu__nav-item"> 1462 <a href="/collections/water-pumps-air-stones" class="mobile-menu__nav-link" data-type="menuitem">Pumps & Air Stones</a> 1463 </li><li class="mobile-menu__nav-item"> 1464 <a href="/collections/reservoirs-water-temp" class="mobile-menu__nav-link" data-type="menuitem">Reservoirs & Water Temp.</a> 1465 </li><li class="mobile-menu__nav-item"> 1466 <a href="/collections/tubing-fittings" class="mobile-menu__nav-link" data-type="menuitem">Tubing & Fittings</a> 1467 </li><li class="mobile-menu__nav-item"> 1468 <a href="/collections/ph-up-down" class="mobile-menu__nav-link" data-type="menuitem">PH Up & Down</a> 1469 </li><li class="mobile-menu__nav-item"> 1470 <a href="/collections/water-filters" class="mobile-menu__nav-link" data-type="menuitem">Water Filters</a> 1471 </li></ul> 1472 </div> 1473 </div><div id="mobile-panel-4-0" class="mobile-menu__panel is-nested"> 1474 <div class="mobile-menu__section is-sticky"> 1475 <button class="mobile-menu__back-button" data-action="close-panel"><svg focusable="false" class="icon icon--arrow-left " viewBox="0 0 8 12" role="presentation"> 1476 <path stroke="currentColor" stroke-width="2" d="M6 10L2 6l4-4" fill="none" stroke-linecap="square"></path> 1477 </svg> Back</button> 1478 </div> 1479 1480 <div class="mobile-menu__section"> 1481 <ul class="mobile-menu__nav" data-type="menu" role="list"> 1482 <li class="mobile-menu__nav-item"> 1483 <a href="/collections/grow-fans" class="mobile-menu__nav-link text--strong">Ventilation</a> 1484 </li><li class="mobile-menu__nav-item"> 1485 <a href="/collections/fans-filter-kits" class="mobile-menu__nav-link" data-type="menuitem">Fan & Filter Kits</a> 1486 </li><li class="mobile-menu__nav-item"> 1487 <a href="/collections/inline-fans" class="mobile-menu__nav-link" data-type="menuitem">Inline Fans</a> 1488 </li><li class="mobile-menu__nav-item"> 1489 <a href="/collections/carbon-filters" class="mobile-menu__nav-link" data-type="menuitem">Filters</a> 1490 </li><li class="mobile-menu__nav-item"> 1491 <a href="/collections/wall-fans-others" class="mobile-menu__nav-link" data-type="menuitem">Wall Fans & Others</a> 1492 </li><li class="mobile-menu__nav-item"> 1493 <a href="/collections/ducts-reducers-flanges-climate-control" class="mobile-menu__nav-link" data-type="menuitem">Ducts, Reducers, Flanges </a> 1494 </li></ul> 1495 </div> 1496 </div><div id="mobile-panel-4-1" class="mobile-menu__panel is-nested"> 1497 <div class="mobile-menu__section is-sticky"> 1498 <button class="mobile-menu__back-button" data-action="close-panel"><svg focusable="false" class="icon icon--arrow-left " viewBox="0 0 8 12" role="presentation"> 1499 <path stroke="currentColor" stroke-width="2" d="M6 10L2 6l4-4" fill="none" stroke-linecap="square"></path> 1500 </svg> Back</button> 1501 </div> 1502 1503 <div class="mobile-menu__section"> 1504 <ul class="mobile-menu__nav" data-type="menu" role="list"> 1505 <li class="mobile-menu__nav-item"> 1506 <a href="/collections/controllers-timers-meters" class="mobile-menu__nav-link text--strong">Controllers, Timers & Meters</a> 1507 </li><li class="mobile-menu__nav-item"> 1508 <a href="/collections/fan-speed-controllers" class="mobile-menu__nav-link" data-type="menuitem">Fan Speed Controllers</a> 1509 </li><li class="mobile-menu__nav-item"> 1510 <a href="/collections/temperature-controllers" class="mobile-menu__nav-link" data-type="menuitem">Temperature Controllers</a> 1511 </li><li class="mobile-menu__nav-item"> 1512 <a href="/collections/humidity-controllers" class="mobile-menu__nav-link" data-type="menuitem">Humidity Controllers</a> 1513 </li><li class="mobile-menu__nav-item"> 1514 <a href="/collections/co2-controllers" class="mobile-menu__nav-link" data-type="menuitem">CO2 Controllers</a> 1515 </li></ul> 1516 </div> 1517 </div><div id="mobile-panel-4-2" class="mobile-menu__panel is-nested"> 1518 <div class="mobile-menu__section is-sticky"> 1519 <button class="mobile-menu__back-button" data-action="close-panel"><svg focusable="false" class="icon icon--arrow-left " viewBox="0 0 8 12" role="presentation"> 1520 <path stroke="currentColor" stroke-width="2" d="M6 10L2 6l4-4" fill="none" stroke-linecap="square"></path> 1521 </svg> Back</button> 1522 </div> 1523 1524 <div class="mobile-menu__section"> 1525 <ul class="mobile-menu__nav" data-type="menu" role="list"> 1526 <li class="mobile-menu__nav-item"> 1527 <a href="/collections/co2" class="mobile-menu__nav-link text--strong">CO2</a> 1528 </li><li class="mobile-menu__nav-item"> 1529 <a href="/collections/bags-bottles" class="mobile-menu__nav-link" data-type="menuitem">Bags & Bottles</a> 1530 </li><li class="mobile-menu__nav-item"> 1531 <a href="/collections/burners" class="mobile-menu__nav-link" data-type="menuitem">Burners</a> 1532 </li><li class="mobile-menu__nav-item"> 1533 <a href="/collections/co2-parts" class="mobile-menu__nav-link" data-type="menuitem">Parts</a> 1534 </li></ul> 1535 </div> 1536 </div><div id="mobile-panel-4-3" class="mobile-menu__panel is-nested"> 1537 <div class="mobile-menu__section is-sticky"> 1538 <button class="mobile-menu__back-button" data-action="close-panel"><svg focusable="false" class="icon icon--arrow-left " viewBox="0 0 8 12" role="presentation"> 1539 <path stroke="currentColor" stroke-width="2" d="M6 10L2 6l4-4" fill="none" stroke-linecap="square"></path> 1540 </svg> Back</button> 1541 </div> 1542 1543 <div class="mobile-menu__section"> 1544 <ul class="mobile-menu__nav" data-type="menu" role="list"> 1545 <li class="mobile-menu__nav-item">
1546 <a href="/collections/humidity-control" class="mobile-menu__nav-link text--strong">Humidity Control</a> 1547 </li><li class="mobile-menu__nav-item"> 1548 <a href="/collections/humidifiers" class="mobile-menu__nav-link" data-type="menuitem">Humidifiers</a> 1549 </li><li class="mobile-menu__nav-item"> 1550 <a href="/collections/dehumidifiers" class="mobile-menu__nav-link" data-type="menuitem">Dehumidifiers</a> 1551 </li><li class="mobile-menu__nav-item"> 1552 <a href="/collections/humidity-packs" class="mobile-menu__nav-link" data-type="menuitem">Humidity Packs</a> 1553 </li><li class="mobile-menu__nav-item"> 1554 <a href="/collections/atomizers" class="mobile-menu__nav-link" data-type="menuitem">Atomizers</a> 1555 </li></ul> 1556 </div> 1557 </div><div id="mobile-panel-4-5" class="mobile-menu__panel is-nested"> 1558 <div class="mobile-menu__section is-sticky"> 1559 <button class="mobile-menu__back-button" data-action="close-panel"><svg focusable="false" class="icon icon--arrow-left " viewBox="0 0 8 12" role="presentation"> 1560 <path stroke="currentColor" stroke-width="2" d="M6 10L2 6l4-4" fill="none" stroke-linecap="square"></path> 1561 </svg> Back</button> 1562 </div> 1563 1564 <div class="mobile-menu__section"> 1565 <ul class="mobile-menu__nav" data-type="menu" role="list"> 1566 <li class="mobile-menu__nav-item"> 1567 <a href="/collections/odor-neutralizer" class="mobile-menu__nav-link text--strong">Odor Neutralizer</a> 1568 </li><li class="mobile-menu__nav-item"> 1569 <a href="/collections/gels-sprays" class="mobile-menu__nav-link" data-type="menuitem">Gels & Sprays</a> 1570 </li><li class="mobile-menu__nav-item"> 1571 <a href="/collections/ozone-generator" class="mobile-menu__nav-link" data-type="menuitem">Ozone</a> 1572 </li></ul> 1573 </div> 1574 </div><div id="mobile-panel-4-7" class="mobile-menu__panel is-nested"> 1575 <div class="mobile-menu__section is-sticky"> 1576 <button class="mobile-menu__back-button" data-action="close-panel"><svg focusable="false" class="icon icon--arrow-left " viewBox="0 0 8 12" role="presentation"> 1577 <path stroke="currentColor" stroke-width="2" d="M6 10L2 6l4-4" fill="none" stroke-linecap="square"></path> 1578 </svg> Back</button> 1579 </div> 1580 1581 <div class="mobile-menu__section"> 1582 <ul class="mobile-menu__nav" data-type="menu" role="list"> 1583 <li class="mobile-menu__nav-item"> 1584 <a href="/collections/replacements-parts-1" class="mobile-menu__nav-link text--strong">Replacements & Parts</a> 1585 </li><li class="mobile-menu__nav-item"> 1586 <a href="/collections/filters-1" class="mobile-menu__nav-link" data-type="menuitem">Filters</a> 1587 </li><li class="mobile-menu__nav-item"> 1588 <a href="/collections/co2-parts" class="mobile-menu__nav-link" data-type="menuitem">CO2 Parts</a> 1589 </li><li class="mobile-menu__nav-item"> 1590 <a href="/collections/hangers" class="mobile-menu__nav-link" data-type="menuitem">Hangers</a> 1591 </li><li class="mobile-menu__nav-item"> 1592 <a href="/collections/controllers-climate" class="mobile-menu__nav-link" data-type="menuitem">Controllers</a> 1593 </li></ul> 1594 </div> 1595 </div><div id="mobile-panel-5-0" class="mobile-menu__panel is-nested"> 1596 <div class="mobile-menu__section is-sticky"> 1597 <button class="mobile-menu__back-button" data-action="close-panel"><svg focusable="false" class="icon icon--arrow-left " viewBox="0 0 8 12" role="presentation"> 1598 <path stroke="currentColor" stroke-width="2" d="M6 10L2 6l4-4" fill="none" stroke-linecap="square"></path> 1599 </svg> Back</button> 1600 </div> 1601 1602 <div class="mobile-menu__section"> 1603 <ul class="mobile-menu__nav" data-type="menu" role="list"> 1604 <li class="mobile-menu__nav-item"> 1605 <a href="/collections/grow-media-1" class="mobile-menu__nav-link text--strong">Grow Media</a> 1606 </li><li class="mobile-menu__nav-item"> 1607 <a href="/collections/coco" class="mobile-menu__nav-link" data-type="menuitem">Coco</a> 1608 </li><li class="mobile-menu__nav-item"> 1609 <a href="/collections/soil-mixes" class="mobile-menu__nav-link" data-type="menuitem">Soil Mixes</a> 1610 </li><li class="mobile-menu__nav-item"> 1611 <a href="/collections/rockwool" class="mobile-menu__nav-link" data-type="menuitem">Rockwool</a> 1612 </li><li class="mobile-menu__nav-item"> 1613 <a href="/collections/clay-pellets" class="mobile-menu__nav-link" data-type="menuitem">Clay Pellets</a> 1614 </li><li class="mobile-menu__nav-item"> 1615 <a href="/collections/others-propagation" class="mobile-menu__nav-link" data-type="menuitem">Others</a> 1616 </li></ul> 1617 </div> 1618 </div><div id="mobile-panel-5-1" class="mobile-menu__panel is-nested"> 1619 <div class="mobile-menu__section is-sticky"> 1620 <button class="mobile-menu__back-button" data-action="close-panel"><svg focusable="false" class="icon icon--arrow-left " viewBox="0 0 8 12" role="presentation"> 1621 <path stroke="currentColor" stroke-width="2" d="M6 10L2 6l4-4" fill="none" stroke-linecap="square"></path> 1622 </svg> Back</button> 1623 </div> 1624 1625 <div class="mobile-menu__section"> 1626 <ul class="mobile-menu__nav" data-type="menu" role="list"> 1627 <li class="mobile-menu__nav-item"> 1628 <a href="/collections/germination-cloning" class="mobile-menu__nav-link text--strong">Germination & Cloning</a> 1629 </li><li class="mobile-menu__nav-item"> 1630 <a href="/collections/propagation-lights" class="mobile-menu__nav-link" data-type="menuitem">Propagation Lights</a> 1631 </li><li class="mobile-menu__nav-item"> 1632 <a href="/collections/trays-domes" class="mobile-menu__nav-link" data-type="menuitem">Trays & Domes</a> 1633 </li><li class="mobile-menu__nav-item"> 1634 <a href="/collections/mycorrhizae-microbe-germination" class="mobile-menu__nav-link" data-type="menuitem">Mycorrhizae / Microbes</a> 1635 </li><li class="mobile-menu__nav-item"> 1636 <a href="/collections/cloners" class="mobile-menu__nav-link" data-type="menuitem">Cloners</a> 1637 </li><li class="mobile-menu__nav-item"> 1638 <a href="/collections/starter-pellets" class="mobile-menu__nav-link" data-type="menuitem">Starter Pellets</a> 1639 </li><li class="mobile-menu__nav-item"> 1640 <a href="/collections/heat-beds" class="mobile-menu__nav-link" data-type="menuitem">Heatbeds</a> 1641 </li><li class="mobile-menu__nav-item"> 1642 <a href="/collections/micro-gardens" class="mobile-menu__nav-link" data-type="menuitem">Micro Gardens</a> 1643 </li></ul> 1644 </div> 1645 </div><div id="mobile-panel-6-0" class="mobile-menu__panel is-nested"> 1646 <div class="mobile-menu__section is-sticky"> 1647 <button class="mobile-menu__back-button" data-action="close-panel"><svg focusable="false" class="icon icon--arrow-left " viewBox="0 0 8 12" role="presentation"> 1648 <path stroke="currentColor" stroke-width="2" d="M6 10L2 6l4-4" fill="none" stroke-linecap="square"></path> 1649 </svg> Back</button> 1650 </div> 1651 1652 <div class="mobile-menu__section"> 1653 <ul class="mobile-menu__nav" data-type="menu" role="list"> 1654 <li class="mobile-menu__nav-item"> 1655 <a href="/collections/trimming-1" class="mobile-menu__nav-link text--strong">Trimming</a> 1656 </li><li class="mobile-menu__nav-item"> 1657 <a href="/collections/pruners" class="mobile-menu__nav-link" data-type="menuitem">Pruners</a> 1658 </li><li class="mobile-menu__nav-item">
1659 <a href="/collections/trimmers" class="mobile-menu__nav-link" data-type="menuitem">Trimmers</a> 1660 </li><li class="mobile-menu__nav-item"> 1661 <a href="/collections/trimmer-parts" class="mobile-menu__nav-link" data-type="menuitem">Trimmer Parts</a> 1662 </li><li class="mobile-menu__nav-item"> 1663 <a href="/collections/buckers" class="mobile-menu__nav-link" data-type="menuitem">Buckers</a> 1664 </li></ul> 1665 </div> 1666 </div><div id="mobile-panel-6-1" class="mobile-menu__panel is-nested"> 1667 <div class="mobile-menu__section is-sticky"> 1668 <button class="mobile-menu__back-button" data-action="close-panel"><svg focusable="false" class="icon icon--arrow-left " viewBox="0 0 8 12" role="presentation"> 1669 <path stroke="currentColor" stroke-width="2" d="M6 10L2 6l4-4" fill="none" stroke-linecap="square"></path> 1670 </svg> Back</button> 1671 </div> 1672 1673 <div class="mobile-menu__section"> 1674 <ul class="mobile-menu__nav" data-type="menu" role="list"> 1675 <li class="mobile-menu__nav-item"> 1676 <a href="/collections/extractions" class="mobile-menu__nav-link text--strong">Extractions</a> 1677 </li><li class="mobile-menu__nav-item"> 1678 <a href="/collections/presses" class="mobile-menu__nav-link" data-type="menuitem">Presses</a> 1679 </li><li class="mobile-menu__nav-item"> 1680 <a href="/collections/extraction-bags" class="mobile-menu__nav-link" data-type="menuitem">Extraction bags</a> 1681 </li><li class="mobile-menu__nav-item"> 1682 <a href="/collections/cooking-edibles" class="mobile-menu__nav-link" data-type="menuitem">Cooking & Edibles</a> 1683 </li><li class="mobile-menu__nav-item"> 1684 <a href="/collections/others-extractions" class="mobile-menu__nav-link" data-type="menuitem">Others</a> 1685 </li></ul> 1686 </div> 1687 </div><div id="mobile-panel-6-2" class="mobile-menu__panel is-nested"> 1688 <div class="mobile-menu__section is-sticky"> 1689 <button class="mobile-menu__back-button" data-action="close-panel"><svg focusable="false" class="icon icon--arrow-left " viewBox="0 0 8 12" role="presentation"> 1690 <path stroke="currentColor" stroke-width="2" d="M6 10L2 6l4-4" fill="none" stroke-linecap="square"></path> 1691 </svg> Back</button> 1692 </div> 1693 1694 <div class="mobile-menu__section"> 1695 <ul class="mobile-menu__nav" data-type="menu" role="list"> 1696 <li class="mobile-menu__nav-item"> 1697 <a href="/collections/sprays-parts" class="mobile-menu__nav-link text--strong">Sprayers & Parts</a> 1698 </li><li class="mobile-menu__nav-item"> 1699 <a href="/collections/sprayers" class="mobile-menu__nav-link" data-type="menuitem">Sprayers </a> 1700 </li><li class="mobile-menu__nav-item"> 1701 <a href="/collections/parts-nozzles" class="mobile-menu__nav-link" data-type="menuitem">Parts & Nozzles</a> 1702 </li></ul> 1703 </div> 1704 </div><div id="mobile-panel-6-3" class="mobile-menu__panel is-nested"> 1705 <div class="mobile-menu__section is-sticky"> 1706 <button class="mobile-menu__back-button" data-action="close-panel"><svg focusable="false" class="icon icon--arrow-left " viewBox="0 0 8 12" role="presentation"> 1707 <path stroke="currentColor" stroke-width="2" d="M6 10L2 6l4-4" fill="none" stroke-linecap="square"></path> 1708 </svg> Back</button> 1709 </div> 1710 1711 <div class="mobile-menu__section"> 1712 <ul class="mobile-menu__nav" data-type="menu" role="list"> 1713 <li class="mobile-menu__nav-item"> 1714 <a href="/collections/drying-accessories" class="mobile-menu__nav-link text--strong">Drying & Accessories</a> 1715 </li><li class="mobile-menu__nav-item"> 1716 <a href="/collections/drying-racks" class="mobile-menu__nav-link" data-type="menuitem">Drying & Racks</a> 1717 </li><li class="mobile-menu__nav-item"> 1718 <a href="/collections/scales" class="mobile-menu__nav-link" data-type="menuitem">Scales</a> 1719 </li><li class="mobile-menu__nav-item"> 1720 <a href="/collections/packaging" class="mobile-menu__nav-link" data-type="menuitem">Packaging</a> 1721 </li><li class="mobile-menu__nav-item"> 1722 <a href="/collections/gloves" class="mobile-menu__nav-link" data-type="menuitem">Gloves</a> 1723 </li><li class="mobile-menu__nav-item"> 1724 <a href="/collections/freeze-dryers" class="mobile-menu__nav-link" data-type="menuitem">Freeze Dryers</a> 1725 </li><li class="mobile-menu__nav-item"> 1726 <a href="/collections/garden-tools" class="mobile-menu__nav-link" data-type="menuitem">Garden Tools</a> 1727 </li><li class="mobile-menu__nav-item"> 1728 <a href="/collections/humidity-packs" class="mobile-menu__nav-link" data-type="menuitem">Humidity Packs</a> 1729 </li><li class="mobile-menu__nav-item"> 1730 <a href="/collections/other-accessories-drying" class="mobile-menu__nav-link" data-type="menuitem">
1730Other Accessories (drying)</a> 1731 </li></ul> 1732 </div> 1733 </div></div> 1734</div></nav> 1735<div class="header__logo"><a href="/" class="header__logo-link"><span class="visually-hidden">Canada Grow Supplies</span> 1736 <img class="header__logo-image" 1737 style="max-width: 220px" 1738 width="1481" 1739 height="555" 1740 src="//canadagrowsupplies.com/cdn/shop/files/[email protected]?v=1650576737" 1741 alt="Canada Grow Supplies"></a></div><div class="header__search-bar-wrapper "> 1742 <form action="/search" method="get" role="search" class="search-bar"><div class="search-bar__top-wrapper"> 1743 <div class="search-bar__top"> 1744 <input type="hidden" name="type" value="product"> 1745 <input type="hidden" name="options[prefix]" value="last"> 1746 <input type="hidden" name="options[unavailable_products]" value=""> 1747 1748 <div class="search-bar__input-wrapper"> 1749 <input class="search-bar__input" type="text" name="q" autocomplete="off" autocorrect="off" aria-label="Search..." placeholder="Search..."> 1750 <button type="button" class="search-bar__input-clear hidden-lap-and-up" data-action="clear-input"> 1751 <span class="visually-hidden">Clear</span> 1752 <svg focusable="false" class="icon icon--close " viewBox="0 0 19 19" role="presentation"> 1753 <path d="M9.1923882 8.39339828l7.7781745-7.7781746 1.4142136 1.41421357-7.7781746 7.77817459 7.7781746 7.77817456L16.9705627 19l-7.7781745-7.7781746L1.41421356 19 0 17.5857864l7.7781746-7.77817456L0 2.02943725 1.41421356.61522369 9.1923882 8.39339828z" fill="currentColor" fill-rule="evenodd"></path> 1754 </svg> 1755 </button> 1756 </div><button type="submit" class="search-bar__submit" aria-label="Search"><svg focusable="false" class="icon icon--search " viewBox="0 0 21 21" role="presentation"> 1757 <g stroke-width="2" stroke="currentColor" fill="none" fill-rule="evenodd"> 1758 <path d="M19 19l-5-5" stroke-linecap="square"></path> 1759 <circle cx="8.5" cy="8.5" r="7.5"></circle> 1760 </g> 1761 </svg><svg focusable="false" class="icon icon--search-loader " viewBox="0 0 64 64" role="presentation"> 1762 <path opacity=".4" d="M23.8589104 1.05290547C40.92335108-3.43614731 58.45816642 6.79494359 62.94709453 23.8589104c4.48905278 17.06444068-5.74156424 34.59913135-22.80600493 39.08818413S5.54195825 57.2055303 1.05290547 40.1410896C-3.43602265 23.0771228 6.7944697 5.54195825 23.8589104 1.05290547zM38.6146353 57.1445143c13.8647142-3.64731754 22.17719655-17.89443541 18.529879-31.75914961-3.64743965-13.86517841-17.8944354-22.17719655-31.7591496-18.529879S3.20804604 24.7494569 6.8554857 38.6146353c3.64731753 13.8647142 17.8944354 22.17719655 31.7591496 18.529879z"></path> 1763 <path d="M1.05290547 40.1410896l5.80258022-1.5264543c3.64731754 13.8647142 17.89443541 22.17719655 31.75914961 18.529879l1.5264543 5.80258023C23.07664892 67.43614731 5.54195825 57.2055303 1.05290547 40.1410896z"></path> 1764 </svg></button> 1765 </div> 1766 1767 <button type="button" class="search-bar__close-button hidden-tablet-and-up" data-action="unfix-search"> 1768 <span class="search-bar__close-text">Close</span> 1769 </button> 1770 </div> 1771 1772 <div class="search-bar__inner"> 1773 <div class="search-bar__results" aria-hidden="true"> 1774 <div class="skeleton-container"><div class="search-bar__result-item search-bar__result-item--skeleton"> 1775 <div class="search-bar__image-container"> 1776 <div class="aspect-ratio aspect-ratio--square"> 1777 <div class="skeleton-image"></div> 1778 </div> 1779 </div> 1780 1781 <div class="search-bar__item-info"> 1782 <div class="skeleton-paragraph"> 1783 <div class="skeleton-text"></div> 1784 <div class="skeleton-text"></div> 1785 </div> 1786 </div> 1787 </div><div class="search-bar__result-item search-bar__result-item--skeleton"> 1788 <div class="search-bar__image-container"> 1789 <div class="aspect-ratio aspect-ratio--square"> 1790 <div class="skeleton-image"></div> 1791 </div> 1792 </div> 1793 1794 <div class="search-bar__item-info"> 1795 <div class="skeleton-paragraph"> 1796 <div class="skeleton-text"></div> 1797 <div class="skeleton-text"></div> 1798 </div> 1799 </div> 1800 </div><div class="search-bar__result-item search-bar__result-item--skeleton"> 1801 <div class="search-bar__image-container"> 1802 <div class="aspect-ratio aspect-ratio--square"> 1803 <div class="skeleton-image"></div> 1804 </div> 1805 </div> 1806 1807 <div class="search-bar__item-info"> 1808 <div class="skeleton-paragraph"> 1809 <div class="skeleton-text"></div> 1810 <div class="skeleton-text"></div> 1811 </div> 1812 </div> 1813 </div></div> 1814 1815 <div class="search-bar__results-inner"></div> 1816 </div></div> 1817 </form> 1818 </div><div class="header__action-list"><div class="header__action-item header__action-item--locale hidden-pocket"><form method="post" action="/localization" id="localization_form_header_locale" accept-charset="UTF-8" class="shopify-localization-form" enctype="multipart/form-data"><input type="hidden" name="form_type" value="localization" /><input type="hidden" name="utf8" value="â" /><input type="hidden" name="_method" value="put" /><input type="hidden" name="return_to" value="/blogs/main" /><span class="header__action-item-title">Language</span> 1819 <input type="hidden" name="locale_code" value="en"> 1820 1821 <div class="header__action-item-content"> 1822 <button class="header__action-item-link" data-action="toggle-popover" aria-controls="desktop-locale-selector" aria-expanded="false">
1823 <span class="locale-selector__value">English</span> <svg focusable="false" class="icon icon--arrow-bottom " viewBox="0 0 12 8" role="presentation"> 1824 <path stroke="currentColor" stroke-width="2" d="M10 2L6 6 2 2" fill="none" stroke-linecap="square"></path> 1825 </svg> 1826 </button> 1827 1828 <div id="desktop-locale-selector" class="popover popover--locale" aria-hidden="true"><svg focusable="false" class="icon icon--nav-triangle-borderless " viewBox="0 0 20 9" role="presentation"> 1829 <path d="M.47108938 9c.2694725-.26871321.57077721-.56867841.90388257-.89986354C3.12384116 6.36134886 5.74788116 3.76338565 9.2467995.30653888c.4145057-.4095171 1.0844277-.40860098 1.4977971.00205122L19.4935156 9H.47108938z" fill="#ffffff"></path> 1830 </svg><div class="popover__inner popover__inner--no-padding"> 1831 <ul class="popover__linklist" role="list"><li class="popover__linklist-item"> 1832 <button type="submit" name="locale_code" class="popover__link-item" value="en" aria-current="true">English</button> 1833 </li><li class="popover__linklist-item"> 1834 <button type="submit" name="locale_code" class="popover__link-item" value="fr" >Français</button> 1835 </li></ul> 1836 </div> 1837 </div></form></div> 1838 </div><div class="header__action-item hidden-tablet-and-up"> 1839 <a class="header__action-item-link" href="/search" data-action="toggle-search" aria-expanded="false" aria-label="Open search"><svg focusable="false" class="icon icon--search " viewBox="0 0 21 21" role="presentation"> 1840 <g stroke-width="2" stroke="currentColor" fill="none" fill-rule="evenodd"> 1841 <path d="M19 19l-5-5" stroke-linecap="square"></path> 1842 <circle cx="8.5" cy="8.5" r="7.5"></circle> 1843 </g> 1844 </svg></a> 1845 </div><div class="header__action-item header__action-item--cart"> 1846 <a class="header__action-item-link header__cart-toggle" href="/cart" aria-controls="mini-cart" aria-expanded="false" data-action="toggle-mini-cart" data-no-instant> 1847 <div class="header__action-item-content"> 1848 <div class="header__cart-icon icon-state" aria-expanded="false"> 1849 <span class="icon-state__primary"><svg focusable="false" class="icon icon--cart " viewBox="0 0 27 24" role="presentation"> 1850 <g transform="translate(0 1)" stroke-width="2" stroke="currentColor" fill="none" fill-rule="evenodd"> 1851 <circle stroke-linecap="square" cx="11" cy="20" r="2"></circle> 1852 <circle stroke-linecap="square" cx="22" cy="20" r="2"></circle> 1853 <path d="M7.31 5h18.27l-1.44 10H9.78L6.22 0H0"></path> 1854 </g> 1855 </svg><span class="header__cart-count">0</span> 1856 </span> 1857 1858 <span class="icon-state__secondary"><svg focusable="false" class="icon icon--close " viewBox="0 0 19 19" role="presentation"> 1859 <path d="M9.1923882 8.39339828l7.7781745-7.7781746 1.4142136 1.41421357-7.7781746 7.77817459 7.7781746 7.77817456L16.9705627 19l-7.7781745-7.7781746L1.41421356 19 0 17.5857864l7.7781746-7.77817456L0 2.02943725 1.41421356.61522369 9.1923882 8.39339828z" fill="currentColor" fill-rule="evenodd"></path> 1860 </svg></span> 1861 </div> 1862 1863 <span class="hidden-pocket hidden-lap">Cart</span> 1864 </div> 1865 </a><form method="post" action="/cart" id="mini-cart" class="mini-cart" aria-hidden="true" novalidate="novalidate" data-item-count="0"> 1866 <input type="hidden" name="attributes[collection_products_per_page]" value=""> 1867 <input type="hidden" name="attributes[collection_layout]" value=""><svg focusable="false" class="icon icon--nav-triangle-borderless " viewBox="0 0 20 9" role="presentation"> 1868 <path d="M.47108938 9c.2694725-.26871321.57077721-.56867841.90388257-.89986354C3.12384116 6.36134886 5.74788116 3.76338565 9.2467995.30653888c.4145057-.4095171 1.0844277-.40860098 1.4977971.00205122L19.4935156 9H.47108938z" fill="#ffffff"></path> 1869 </svg><div class="mini-cart__content mini-cart__content--empty"><div class="mini-cart__empty-state">
1869<svg focusable="false" width="81" height="70" viewBox="0 0 81 70"> 1870 <g transform="translate(0 2)" stroke-width="4" stroke="#000000" fill="none" fill-rule="evenodd"> 1871 <circle stroke-linecap="square" cx="34" cy="60" r="6"></circle> 1872 <circle stroke-linecap="square" cx="67" cy="60" r="6"></circle> 1873 <path d="M22.9360352 15h54.8070373l-4.3391876 30H30.3387146L19.6676025 0H.99560547"></path> 1874 </g> 1875 </svg><p class="heading h4">Your cart is empty</p> 1876 </div> 1877 1878 <a href="/collections/all" class="button button--primary button--full">Shop our products</a> 1879 </div></form> 1880</div><div class="header__action-item header__action-item--account"><span class="header__action-item-title hidden-pocket hidden-lap">Login / Signup</span><div class="header__action-item-content"> 1881 <a href="https://canadagrowsupplies.com/customer_authentication/redirect?locale=en®ion_country=CA" class="header__action-item-link header__account-icon icon-state hidden-desk" aria-label="My account" aria-controls="account-popover" aria-expanded="false" data-action="toggle-popover" > 1882 <span class="icon-state__primary"><svg focusable="false" class="icon icon--account " viewBox="0 0 20 22" role="presentation"> 1883 <path d="M10 13c2.82 0 5.33.64 6.98 1.2A3 3 0 0 1 19 17.02V21H1v-3.97a3 3 0 0 1 2.03-2.84A22.35 22.35 0 0 1 10 13zm0 0c-2.76 0-5-3.24-5-6V6a5 5 0 0 1 10 0v1c0 2.76-2.24 6-5 6z" stroke="currentColor" stroke-width="2" fill="none"></path> 1884 </svg></span> 1885 <span class="icon-state__secondary"><svg focusable="false" class="icon icon--close " viewBox="0 0 19 19" role="presentation"> 1886 <path d="M9.1923882 8.39339828l7.7781745-7.7781746 1.4142136 1.41421357-7.7781746 7.77817459 7.7781746 7.77817456L16.9705627 19l-7.7781745-7.7781746L1.41421356 19 0 17.5857864l7.7781746-7.77817456L0 2.02943725 1.41421356.61522369 9.1923882 8.39339828z" fill="currentColor" fill-rule="evenodd"></path> 1887 </svg></span> 1888 </a> 1889 1890 <a href="https://canadagrowsupplies.com/customer_authentication/redirect?locale=en®ion_country=CA" class="header__action-item-link hidden-pocket hidden-lap" aria-controls="account-popover" aria-expanded="false" data-action="toggle-popover"><svg focusable="false" class="icon icon--account " viewBox="0 0 20 22" role="presentation"> 1891 <path d="M10 13c2.82 0 5.33.64 6.98 1.2A3 3 0 0 1 19 17.02V21H1v-3.97a3 3 0 0 1 2.03-2.84A22.35 22.35 0 0 1 10 13zm0 0c-2.76 0-5-3.24-5-6V6a5 5 0 0 1 10 0v1c0 2.76-2.24 6-5 6z" stroke="currentColor" stroke-width="2" fill="none"></path> 1892 </svg>Log In</a> 1893 1894 <div id="account-popover" class="popover popover--large popover--unlogged" aria-hidden="true"><svg focusable="false" class="icon icon--nav-triangle-borderless " viewBox="0 0 20 9" role="presentation"> 1895 <path d="M.47108938 9c.2694725-.26871321.57077721-.56867841.90388257-.89986354C3.12384116 6.36134886 5.74788116 3.76338565 9.2467995.30653888c.4145057-.4095171 1.0844277-.40860098 1.4977971.00205122L19.4935156 9H.47108938z" fill="#ffffff"></path> 1896 </svg><div class="popover__panel-list"><div id="header-login-panel" class="popover__panel popover__panel--default is-selected"> 1897 <div class="popover__inner"><form method="post" action="/account/login" id="header_customer_login" accept-charset="UTF-8" data-login-with-shop-sign-in="true" name="login" class="form"><input type="hidden" name="form_type" value="customer_login" /><input type="hidden" name="utf8" value="â" /><header class="popover__header"> 1898 <p class="popover__title heading">Login to my account</p> 1899 <p class="popover__legend">Enter your e-mail and password:</p> 1900 </header> 1901 1902 <div class="form__input-wrapper form__input-wrapper--labelled"> 1903 <input type="email" id="login-customer[email]" class="form__field form__field--text" autocomplete="email" name="customer[email]" required="required"> 1904 <label for="login-customer[email]" class="form__floating-label">Email</label> 1905 </div> 1906 1907 <div class="form__input-wrapper form__input-wrapper--labelled"> 1908 <input type="password" id="login-customer[password]" class="form__field form__field--text" name="customer[password]" required="required" autocomplete="current-password"> 1909 <label for="login-customer[password]" class="form__floating-label">Password</label> 1910 </div> 1911 1912 <button type="submit" class="form__submit button button--primary button--full">Login</button></form><div class="popover__secondary-action"> 1913 <p>New customer? <a href="https://shopify.com/56650104875/account?locale=en®ion_country=CA&buyer_flags=eyJhbGciOiJIUzI1NiJ9.eyJpc3MiOiJjYW5hZGEtZ3Jvdy1zdXBwbGllcy1tYWluLm15c2hvcGlmeS5jb20iLCJmbGFncyI6W10sImV4cCI6MTc5MTUyNDI1NywibmJmIjoxNzkwOTE5NDU3fQ.ShE54DlgnBEPj--EBFTjkePkYoXdhS1qCYwV-GaUt1k" class="link link--accented">Create your account</a></p> 1914 <p>Lost password? <a href="/account#recover-password" aria-controls="header-recover-panel" class="link link--accented">Recover password</a></p> 1915 </div> 1916 </div> 1917 </div><div id="header-recover-panel" class="popover__panel popover__panel--sliding"> 1918 <div class="popover__inner"><form method="post" action="/account/recover" accept-charset="UTF-8" name="recover" class="form"><input type="hidden" name="form_type" value="recover_customer_password" /><input type="hidden" name="utf8" value="â" /><header class="popover__header"> 1919 <p class="popover__title heading">Recover password</p> 1920 <p class="popover__legend">Enter your email:</p> 1921 </header> 1922 1923 <div class="form__input-wrapper form__input-wrapper--labelled"> 1924 <input type="email" id="recover-customer[recover_email]" class="form__field form__field--text" name="email" required="required"> 1925 <label for="recover-customer[recover_email]" class="form__floating-label">Email</label> 1926 </div> 1927 1928 <button type="submit" class="form__submit button button--primary button--full">Recover</button></form><div class="popover__secondary-action"> 1929 <p>Remembered your password? <button data-action="show-popover-panel" aria-controls="header-login-panel" class="link link--accented">Back to login</button></p> 1930 </div> 1931 </div> 1932 </div> 1933 </div></div> 1934 </div> 1935 </div></div> 1936 </div> 1937 </div> 1938 </header><nav class="nav-bar layout_inline"> 1939 <div class="nav-bar__inner"> 1940 <div class="container"> 1941 <ul class="nav-bar__linklist list--unstyled" data-type="menu" role="list"><li class="nav-bar__item"><a href="/collections/tents-kits" class="nav-bar__link link" data-type="menuitem" aria-expanded="false" aria-controls="desktop-menu-0-1" aria-haspopup="true">Tents & Kits<svg focusable="false" class="icon icon--arrow-bottom " viewBox="0 0 12 8" role="presentation"> 1942 <path stroke="currentColor" stroke-width="2" d="M10 2L6 6 2 2" fill="none" stroke-linecap="square"></path> 1943 </svg><svg focusable="false" class="icon icon--nav-triangle " viewBox="0 0 20 9" role="presentation"> 1944 <g fill="none" fill-rule="evenodd"> 1945 <path d="M.47108938 9c.2694725-.26871321.57077721-.56867841.90388257-.89986354C3.12384116 6.36134886 5.74788116 3.76338565 9.2467995.30653888c.4145057-.4095171 1.0844277-.40860098 1.4977971.00205122L19.4935156 9H.47108938z" fill="#ffffff"></path> 1946 <path d="M-.00922471 9C1.38887087 7.61849126 4.26661926 4.80337304 8.62402045.5546454c.75993175-.7409708 1.98812015-.7393145 2.74596565.0037073L19.9800494 9h-1.3748787l-7.9226239-7.7676545c-.3789219-.3715101-.9930172-.3723389-1.3729808-.0018557-3.20734177 3.1273507-5.6127118 5.4776841-7.21584193 7.05073579C1.82769633 8.54226204 1.58379521 8.7818599 1.36203986 9H-.00922471z" fill="#e1e3e4"></path> 1947 </g> 1948 </svg></a> 1949<div id="desktop-menu-0-1" class="mega-menu " data-type="menu" aria-hidden="true" role="list" > 1950 1951<div class="container"> 1952 <div class="mega-menu__inner mega-menu__inner--center mega-menu__inner--large"><div class="mega-menu__column"> 1953 <a href="/collections/grow-tents" class="mega-menu__title heading">Grow Tents</a> 1954 1955 <ul class="mega-menu__linklist" role="list"><li class="mega-menu__item"> 1956 <a href="/collections/2x2" class="mega-menu__link link">2x2</a> 1957 </li> 1958 1959 <li class="mega-menu__item">
1960 <a href="/collections/2x4" class="mega-menu__link link">2x4</a> 1961 </li> 1962 1963 <li class="mega-menu__item"> 1964 <a href="/collections/3x3" class="mega-menu__link link">3x3</a> 1965 </li> 1966 1967 <li class="mega-menu__item"> 1968 <a href="/collections/4x4" class="mega-menu__link link">4x4</a> 1969 </li> 1970 1971 <li class="mega-menu__item"> 1972 <a href="/collections/5x5" class="mega-menu__link link">5x5</a> 1973 </li> 1974 1975 <li class="mega-menu__item"> 1976 <a href="/collections/8x4" class="mega-menu__link link">8x4</a> 1977 </li> 1978 1979 <li class="mega-menu__item"> 1980 <a href="/collections/8x8" class="mega-menu__link link">8x8</a> 1981 </li> 1982 1983 <li class="mega-menu__item"> 1984 <a href="/collections/10x5" class="mega-menu__link link">10x5</a> 1985 </li> 1986 1987 1988 </ul> 1989 </div> 1990 1991 <div class="mega-menu__column"> 1992 <a href="/collections/grow-kits" class="mega-menu__title heading">Grow Kits</a> 1993 1994 <ul class="mega-menu__linklist" role="list"><li class="mega-menu__item"> 1995 <a href="/collections/2x2" class="mega-menu__link link">2x2</a> 1996 </li> 1997 1998 <li class="mega-menu__item"> 1999 <a href="/collections/2x4" class="mega-menu__link link">2x4</a> 2000 </li> 2001 2002 <li class="mega-menu__item"> 2003 <a href="/collections/3x3" class="mega-menu__link link">3x3</a> 2004 </li> 2005 2006 <li class="mega-menu__item"> 2007 <a href="/collections/4x4" class="mega-menu__link link">4x4</a> 2008 </li> 2009 2010 <li class="mega-menu__item"> 2011 <a href="/collections/5x5" class="mega-menu__link link">5x5</a> 2012 </li> 2013 2014 <li class="mega-menu__item"> 2015 <a href="/collections/8x8" class="mega-menu__link link">8x8</a> 2016 </li> 2017 2018 2019 </ul> 2020 </div> 2021 2022 <div class="mega-menu__column"> 2023 <a href="/collections/accessories" class="mega-menu__title heading">Accessories</a> 2024 2025 <ul class="mega-menu__linklist" role="list"><li class="mega-menu__item"> 2026 <a href="/collections/mushroom-grow-kits" class="mega-menu__link link">Mushroom Grow Kits</a> 2027 </li> 2028 2029 <li class="mega-menu__item"> 2030 <a href="/collections/grow-tent-extensions" class="mega-menu__link link">Grow Tent Extensions</a> 2031 </li> 2032 2033 <li class="mega-menu__item"> 2034 <a href="/collections/grow-tent-parts" class="mega-menu__link link">Grow Tent Parts</a> 2035 </li> 2036 2037 <li class="mega-menu__item"> 2038 <a href="/collections/reflective-materials-supplies" class="mega-menu__link link">Reflective Materials & Supplies</a> 2039 </li> 2040 2041 <li class="mega-menu__item"> 2042 <a href="/collections/net-plant-supports" class="mega-menu__link link">Net & Plant Supports</a> 2043 </li> 2044 2045 <li class="mega-menu__item"> 2046 <a href="/collections/grow-tent-others" class="mega-menu__link link">Others</a> 2047 </li> 2048 2049 2050 </ul> 2051 </div> 2052 2053 2054 2055 2056 2057 </div> 2058 </div> 2059</div> 2060</li><li class="nav-bar__item"><a href="/collections/lights" class="nav-bar__link link" data-type="menuitem" aria-expanded="false" aria-controls="desktop-menu-0-2" aria-haspopup="true">Lights<svg focusable="false" class="icon icon--arrow-bottom " viewBox="0 0 12 8" role="presentation"> 2061 <path stroke="currentColor" stroke-width="2" d="M10 2L6 6 2 2" fill="none" stroke-linecap="square"></path> 2062 </svg><svg focusable="false" class="icon icon--nav-triangle " viewBox="0 0 20 9" role="presentation"> 2063 <g fill="none" fill-rule="evenodd"> 2064 <path d="M.47108938 9c.2694725-.26871321.57077721-.56867841.90388257-.89986354C3.12384116 6.36134886 5.74788116 3.76338565 9.2467995.30653888c.4145057-.4095171 1.0844277-.40860098 1.4977971.00205122L19.4935156 9H.47108938z" fill="#ffffff"></path> 2065 <path d="M-.00922471 9C1.38887087 7.61849126 4.26661926 4.80337304 8.62402045.5546454c.75993175-.7409708 1.98812015-.7393145 2.74596565.0037073L19.9800494 9h-1.3748787l-7.9226239-7.7676545c-.3789219-.3715101-.9930172-.3723389-1.3729808-.0018557-3.20734177 3.1273507-5.6127118 5.4776841-7.21584193 7.05073579C1.82769633 8.54226204 1.58379521 8.7818599 1.36203986 9H-.00922471z" fill="#e1e3e4"></path> 2066 </g> 2067 </svg></a> 2068 2069<div id="desktop-menu-0-2" class="mega-menu " data-type="menu" aria-hidden="true" role="list" > 2070 2071<div class="container"> 2072 <div class="mega-menu__inner mega-menu__inner--center mega-menu__inner--large"> 2073 <div class="mega-menu__column column_light_left"> 2074 <a href="/collections/grow-lights" class="mega-menu__title heading">Grow Lights</a><ul class="mega-menu__linklist" role="list"><li class="mega-menu__item"> 2075 <a href="/collections/led-grow-lights" class="mega-menu__link link">LED Grow Lights</a> 2076 </li> 2077 2078 <li class="mega-menu__item"> 2079 <a href="/collections/hid-grow-lights" class="mega-menu__link link">HID Grow Lights</a> 2080 </li> 2081 2082 <li class="mega-menu__item"> 2083 <a href="/collections/fluorescent-t5" class="mega-menu__link link">Fluorescent/T5</a> 2084 </li> 2085 2086 2087 </ul> 2088 2089 <br><a href="/collections/mh-hps-cmh" class="mega-menu__title heading">MH, HPS, CMH</a> 2090 <ul class="mega-menu__linklist" role="list"><li class="mega-menu__item"> 2091 <a href="/collections/cmh-bulbs" class="mega-menu__link link">CMH Bulbs</a> 2092 </li> 2093 2094 <li class="mega-menu__item"> 2095 <a href="/collections/double-ended-bulbs" class="mega-menu__link link">Double Ended Bulbs</a> 2096 </li> 2097 2098 <li class="mega-menu__item"> 2099 <a href="/collections/hps-bulbs" class="mega-menu__link link">HPS Bulbs</a> 2100 </li> 2101 2102 <li class="mega-menu__item"> 2103 <a href="/collections/mh-bulbs" class="mega-menu__link link">MH Bulbs</a> 2104 </li> 2105 2106 2107 </ul> 2108 2109 <br><a href="/collections/lights-parts-accessories" class="mega-menu__title heading">Light Parts & Accessories</a> 2110 <ul class="mega-menu__linklist" role="list"><li class="mega-menu__item"> 2111 <a href="/collections/ballasts" class="mega-menu__link link">Ballasts</a> 2112 </li> 2113 2114 <li class="mega-menu__item"> 2115 <a href="/collections/controllers" class="mega-menu__link link">Controllers</a> 2116 </li> 2117 2118 <li class="mega-menu__item"> 2119 <a href="/collections/replacement-parts-1" class="mega-menu__link link">Replacement & Parts</a> 2120 </li> 2121 2122 <li class="mega-menu__item"> 2123 <a href="/collections/glasses" class="mega-menu__link link">Glasses</a> 2124 </li> 2125 2126 2127 </ul> 2128 2129 2130 2131 </div> 2132 <div class="mega-menu__column column_light_right"> 2133 <a href="/collections/led-grow-lights" class="mega-menu__title heading fulltitle">Featured LED Lights <span><img src="//canadagrowsupplies.com/cdn/shop/t/43/assets/right-arrow_20
2133x.png?v=103978434622083363661686760905"></span></a> 2134 2135 2136 <div class="img-btm-box"> 2137 <div class="product-menu"> 2138 <div class="menu-product-box"> 2139 2140 <a href="/products/photontek-x-465w-pro-led-grow-light"> 2141 <span class="full-img"> 2142 <img src="//canadagrowsupplies.com/cdn/shop/products/Photontek-465_526b4651-c678-48e0-809c-018c1b63842b_206X111.jpg?v=1772825096" loading="lazy"> 2143 </span> 2144 2145 2146 2147 2148 <p class="heading-color vendorname">PhotonTek</p> 2149 <p class='h3'>PhotonTek X 465W Pro LED</p> 2150 <div class="ret-img ratemenu"> 2151 <a class="product-item__reviews-badge link" href="#product-reviews"> 2152 2153 2154<div class="loox-rating" data-id="6807904256043" data-rating="5.0" data-raters="6"></div> 2155 </a> 2156 </div> 2157 <span class="price"><span class=money>$ 592.95</span></span> 2158 2159 <span class="underline-price"><span class=money>$ 1,020.00</span></span> 2160 2161 </a> 2162 </div> 2163 <div class="menu-product-box"> 2164 <a href="/products/sunblaster-led-high-output-6400k-watt-strip-lights"> <span class="full-img"> 2165 <img src="//canadagrowsupplies.com/cdn/shop/products/sunblaster-led-strip-light-ho-6400k-48w-4-sunblaster_900x_3e86392e-7eea-435e-8b2c-1c103e70f670_206X111.webp?v=1651234541" loading="lazy"> 2166 </span> 2167 2168 2169 2170 2171 2172 <p class="heading-color vendorname">SunBlaster</p> 2173 <p class="h3">SunBlaster LED Strip Light High Output 6400K</p> 2174 <div class="ret-img ratemenu"> 2175 <a class="product-item__reviews-badge link" href="#product-reviews"> 2176 2177 2178<div class="loox-rating" data-id="6811159986219" data-rating="4.8" data-raters="28"></div> 2179 </a> 2180 </div> 2181 2182 <span class="price"><span class=money>$ 56.95</span></span> 2183 2184 <span class="underline-price"><span class=money>$ 74.95</span></span> 2185 2186 </a> 2187 </div> 2188 <div class="menu-product-box"> 2189 <a href="/products/spider-farmer-upgraded-se5000-480w-full-spectrum-led-grow-light"><span class="full-img"> 2190 <img src="//canadagrowsupplies.com/cdn/shop/files/Spider-Farmer-SE5000_1_206X111.jpg?v=1706926334" loading="lazy"> 2191 </span> 2192 2193 2194 2195 <p class="heading-color vendorname">Spider Farmer</p> 2196 <p class="h3">Spider Farmer® Upgraded SE5000 480W Full Spectrum LED Grow Light</p> 2197 <div class="ret-img ratemenu"> 2198 <a class="product-item__reviews-badge link" href="#product-reviews"> 2199 2200 2201<div class="loox-rating" data-id="6808323981355" data-rating="5.0" data-raters="4"></div> 2202 </a> 2203 </div> 2204 2205 <span class="price"><span class=money>$ 639.95</span></span> 2206 2207 <span class="underline-price"><span class=money>$ 829.99</span></span> 2208 2209 </a> 2210 </div> 2211 </div> 2212 </div> 2213 2214 2215 2216 </div> 2217 </div> 2218</div> 2219</div> 2220</li><li class="nav-bar__item"><a href="/collections/nutrients" class="nav-bar__link link" data-type="menuitem" aria-expanded="false" aria-controls="desktop-menu-0-3" aria-haspopup="true">Nutrients<svg focusable="false" class="icon icon--arrow-bottom " viewBox="0 0 12 8" role="presentation"> 2221 <path stroke="currentColor" stroke-width="2" d="M10 2L6 6 2 2" fill="none" stroke-linecap="square"></path> 2222 </svg><svg focusable="false" class="icon icon--nav-triangle " viewBox="0 0 20 9" role="presentation"> 2223 <g fill="none" fill-rule="evenodd"> 2224 <path d="M.47108938 9c.2694725-.26871321.57077721-.56867841.90388257-.89986354C3.12384116 6.36134886 5.74788116 3.76338565 9.2467995.30653888c.4145057-.4095171 1.0844277-.40860098 1.4977971.00205122L19.4935156 9H.47108938z" fill="#ffffff"></path> 2225 <path d="M-.00922471 9C1.38887087 7.61849126 4.26661926 4.80337304 8.62402045.5546454c.75993175-.7409708 1.98812015-.7393145 2.74596565.0037073L19.9800494 9h-1.3748787l-7.9226239-7.7676545c-.3789219-.3715101-.9930172-.3723389-1.3729808-.0018557-3.20734177 3.1273507-5.6127118 5.4776841-7.21584193 7.05073579C1.82769633 8.54226204 1.58379521 8.7818599 1.36203986 9H-.00922471z" fill="#e1e3e4"></path> 2226 </g> 2227 </svg></a> 2228 2229<div id="desktop-menu-0-3" class="mega-menu " data-type="menu" aria-hidden="true" role="list" > 2230 2231<div class="container"> 2232 <div class="mega-menu__inner mega-menu__inner--center mega-menu__inner--large"> 2233 <div class="mega-menu__column"> 2234 <a href="/collections/nutrients" class="mega-menu__title heading">Nutrients</a><ul class="mega-menu__linklist" role="list"><li class="mega-menu__item"> 2235 <a href="/collections/base-nutrients" class="mega-menu__link link">Base Nutrients</a> 2236 </li> 2237 2238 <li class="mega-menu__item"> 2239 <a href="/collections/organic-nutrients" class="mega-menu__link link">Organic</a> 2240 </li> 2241 2242 <li class="mega-menu__item"> 2243 <a href="/collections/nutrient-kits" class="mega-menu__link link">Nutrient Kits</a> 2244 </li> 2245 2246 <li class="mega-menu__item"> 2247 <a href="/collections/plant-supplements" class="mega-menu__link link">Plant Supplements</a> 2248 </li> 2249 2250 <li class="mega-menu__item"> 2251 <a href="/collections/mycorrhizae-microbe" class="mega-menu__link link">Mycorrhizae/Microbe</a> 2252 </li> 2253 2254 <li class="mega-menu__item"> 2255 <a href="/collections/foliar" class="mega-menu__link link">Foliar</a> 2256 </li> 2257 2258 <li class="mega-menu__item"> 2259 <a href="/collections/flushing-solutions" class="mega-menu__link link">Flushing Solutions</a> 2260 </li> 2261 2262 <li class="mega-menu__item"> 2263 <a href="/collections/rooting-hormones" class="mega-menu__link link">Rooting Hormones</a> 2264 </li> 2265 2266 <li class="mega-menu__item"> 2267 <a href="/collections/ph-ph" class="mega-menu__link link">Ph+/Ph-</a> 2268 </li> 2269 2270 2271 </ul> 2272 </div> 2273 <div class="mega-menu__column">
2274 <a href="https://canadagrowsupplies.com/pages/brands" class="mega-menu__title heading fulltitle">Brands <span><img src="//canadagrowsupplies.com/cdn/shop/t/43/assets/right-arrow_20x.png?v=103978434622083363661686760905"></span></a> 2275 2276 <ul class="logos-sec"> 2277 2278 2279 2280 2281 2282 <li> 2283 <a href="/collections/canna"><img src="//canadagrowsupplies.com/cdn/shop/files/canna.webp?v=1686572716" loading="lazy"></a> 2284 </li> 2285 2286 2287 2288 2289 2290 2291 2292 <li> 2293 <a href="/collections/advanced-nutrients"><img src="//canadagrowsupplies.com/cdn/shop/files/Brand_logo-01_400px_compressed.png?v=1675431230" loading="lazy"></a> 2294 </li> 2295 2296 2297 2298 2299 2300 2301 2302 <li> 2303 <a href="/products/fish-head-farms-fish-shit-organic-soil-conditioner"><img src="//canadagrowsupplies.com/cdn/shop/files/Brand-logo_compressed.webp?v=1675431416" loading="lazy"></a> 2304 </li> 2305 2306 2307 2308 2309 2310 2311 2312 <li> 2313 <a href="/collections/greenplanet-nutrients"><img src="//canadagrowsupplies.com/cdn/shop/files/Brand_logo-04_400px_compressed.png?v=1675431602" loading="lazy"></a> 2314 </li> 2315 2316 2317 2318 2319 2320 2321 2322 <li> 2323 <a href="/collections/gaia-green-organics"><img src="//canadagrowsupplies.com/cdn/shop/files/Brand_logo-02_400px_compressed.png?v=1675429952" loading="lazy"></a> 2324 </li> 2325 2326 2327 2328 2329 2330 2331 2332 <li> 2333 <a href="/collections/general-hydroponics"><img src="//canadagrowsupplies.com/cdn/shop/files/Brand_logo-03_400px_compressed.png?v=1675431750" loading="lazy"></a> 2334 </li> 2335 2336 2337 2338 </ul> 2339 </div> 2340 2341 2342 <div class="mega-menu__column column_light_right right-third"> 2343 <a href="/collections/organic-nutrients" class="mega-menu__title heading fulltitle">Shop Organic Nutrients <span><img src="//canadagrowsupplies.com/cdn/shop/t/43/assets/right-arrow_20x.png?v=103978434622083363661686760905"></span></a> 2344 2345 2346 <div class="img-btm-box"> 2347 <div class="product-menu"> 2348 <div class="menu-product-box"> 2349 <a href="/products/advanced-nutrients-ph-perfect-bundle-grow-micro-and-bloom-trio"> <span class="full-img"> 2350 <img src="//canadagrowsupplies.com/cdn/shop/products/Advanced-Nutrients-Micro-Grow-Bloom_206X111.jpg?v=1782303774" loading="lazy"> 2351 </span> 2352 <p class="heading-color vendorname">Advanced Nutrients</p> 2353 <p class="h3">Advanced Nutrients pH Perfect Bundle â Grow, Bloom & Micro</p> 2354 <div class="ret-img ratemenu"> 2355 <a class="product-item__reviews-badge link" href="#product-reviews"> 2356 2357 2358<div class="loox-rating" data-id="6855718469675" data-rating="4.9" data-raters="29"></div> 2359 </a> 2360 </div> 2361 <span class="price"><span class=money>$ 45.95</span></span> 2362 2363 <span class="underline-price"><span class=money>$ 55.97</span></span> 2364 2365 </a> 2366 </div> 2367 <div class="menu-product-box"> 2368 <a href="/products/general-hydroponics-flora-series-quart-bundle"><span class="full-img"> 2369 <img src="//canadagrowsupplies.com/cdn/shop/products/flora_series_206X111.webp?v=1653393198" loading="lazy"> 2370 </span> 2371 <p class="heading-color vendorname">General Hydroponics</p> 2372 <p class="h3">
2372General Hydroponics Flora Series Quart Bundle</p> 2373 <div class="ret-img ratemenu"> 2374 <a class="product-item__reviews-badge link" href="#product-reviews"> 2375 2376 2377<div class="loox-rating" data-id="6855610171435" data-rating="5.0" data-raters="13"></div> 2378 </a> 2379 </div> 2380 2381 <span class="price"><span class=money>$ 60.95</span></span> 2382 2383 <span class="underline-price"><span class=money>$ 74.99</span></span> 2384 2385 </a> 2386 </div> 2387 <div class="menu-product-box"> 2388 <a href="/products/remo-nutrients-supercharged-kit-1l"> <span class="full-img"> 2389 <img src="//canadagrowsupplies.com/cdn/shop/products/Remo_Nutrients_Supercharged_kit_1L_206X111.jpg?v=1783493649" loading="lazy"> 2390 </span> 2391 <p class="heading-color vendorname">Remo Nutrients</p> 2392 <p class="h3">Remo Nutrients Supercharged Kit 1L</p> 2393 <div class="ret-img ratemenu"> 2394 <a class="product-item__reviews-badge link" href="#product-reviews"> 2395 2396 2397<div class="loox-rating" data-id="6807991058475" data-rating="5.0" data-raters="11"></div> 2398 </a> 2399 </div> 2400 2401 <span class="price"><span class=money>$ 149.95</span></span> 2402 2403 <span class="underline-price"><span class=money>$ 157.99</span></span> 2404 2405 </a> 2406 </div> 2407 </div> 2408 </div> 2409 </div> 2410 2411 2412 </div> 2413</div> 2414</div> 2415</li><li class="nav-bar__item"><a href="/collections/hydroponics" class="nav-bar__link link" data-type="menuitem" aria-expanded="false" aria-controls="desktop-menu-0-4" aria-haspopup="true">Hydroponics<svg focusable="false" class="icon icon--arrow-bottom " viewBox="0 0 12 8" role="presentation"> 2416 <path stroke="currentColor" stroke-width="2" d="M10 2L6 6 2 2" fill="none" stroke-linecap="square"></path> 2417 </svg><svg focusable="false" class="icon icon--nav-triangle " viewBox="0 0 20 9" role="presentation"> 2418 <g fill="none" fill-rule="evenodd"> 2419 <path d="M.47108938 9c.2694725-.26871321.57077721-.56867841.90388257-.89986354C3.12384116 6.36134886 5.74788116 3.76338565 9.2467995.30653888c.4145057-.4095171 1.0844277-.40860098 1.4977971.00205122L19.4935156 9H.47108938z" fill="#ffffff"></path> 2420 <path d="M-.00922471 9C1.38887087 7.61849126 4.26661926 4.80337304 8.62402045.5546454c.75993175-.7409708 1.98812015-.7393145 2.74596565.0037073L19.9800494 9h-1.3748787l-7.9226239-7.7676545c-.3789219-.3715101-.9930172-.3723389-1.3729808-.0018557-3.20734177 3.1273507-5.6127118 5.4776841-7.21584193 7.05073579C1.82769633 8.54226204 1.58379521 8.7818599 1.36203986 9H-.00922471z" fill="#e1e3e4"></path> 2421 </g> 2422 </svg></a> 2423 2424<div id="desktop-menu-0-4" class="hydroponics mega-menu " data-type="menu" aria-hidden="true" role="list" > 2425 2426<div class="container"> 2427 <div class="mega-menu__inner mega-menu__inner--center mega-menu__inner--large"> 2428 <div class="mega-menu__column"> 2429 2430 <a href="/collections/hydroponics-systems" class="mega-menu__title heading">Watering Systems</a><ul class="mega-menu__linklist" role="list"><li class="mega-menu__item"> 2431 <a href="/collections/autopot-watering-systems" class="mega-menu__link link">AutoPot Watering Systems</a> 2432 </li> 2433 2434 <li class="mega-menu__item"> 2435 <a href="/collections/dwc" class="mega-menu__link link">DWC</a> 2436 </li> 2437 2438 <li class="mega-menu__item"> 2439 <a href="/collections/rdwc" class="mega-menu__link link">RDWC</a> 2440 </li> 2441 2442 <li class="mega-menu__item"> 2443 <a href="/collections/other-systems-hydro" class="mega-menu__link link">Others</a> 2444 </li> 2445 2446 2447 </ul> 2448 2449 2450 2451 </div> 2452 2453 <div class="mega-menu__column"> 2454 <a href="/collections/pots-and-parts" class="mega-menu__title heading">Pots and Parts</a><ul class="mega-menu__linklist" role="list"><li class="mega-menu__item"> 2455 <a href="/collections/pots-net-pots" class="mega-menu__link link">Pots & Net Pots</a> 2456 </li> 2457 2458 <li class="mega-menu__item"> 2459 <a href="/collections/flood-tables" class="mega-menu__link link">Flood Tables</a> 2460 </li> 2461 2462 <li class="mega-menu__item"> 2463 <a href="/collections/pump-replacement-parts" class="mega-menu__link link">Pump Replacement Parts</a> 2464 </li> 2465 2466 <li class="mega-menu__item"> 2467 <a href="/collections/water-filter-parts-1" class="mega-menu__link link">Water Filter Parts</a> 2468 </li> 2469 2470 <li class="mega-menu__item"> 2471 <a href="/collections/accessories" class="mega-menu__link link">Accessories</a> 2472 </li> 2473 2474 <li class="mega-menu__item"> 2475 <a href="/collections/fabric-pots" class="mega-menu__link link">Fabric Pots</a> 2476 </li> 2477 2478 2479 </ul> 2480 </div> 2481 <div class="mega-menu__column"> 2482 <a href="/collections/water-control" class="mega-menu__title heading">Water Control</a><ul class="mega-menu__linklist" role="list"><li class="mega-menu__item"> 2483 <a href="/collections/reservoirs-water-temp" class="mega-menu__link link">Reservoirs & Water Temp.</a> 2484 </li> 2485 2486 <li class="mega-menu__item"> 2487 <a href="/collections/tubing-fittings" class="mega-menu__link link">Tubing & Fittings</a> 2488 </li> 2489 2490 <li class="mega-menu__item"> 2491 <a href="/collections/ph-up-down" class="mega-menu__link link">PH Up & Down</a> 2492 </li> 2493 2494 <li class="mega-menu__item"> 2495 <a href="/collections/water-filters" class="mega-menu__link link">Water Filters</a> 2496 </li> 2497 2498 <li class="mega-menu__item"> 2499 <a href="/collections/water-pumps-air-stones" class="mega-menu__link link">Pumps & Airstones</a> 2500 </li> 2501 2502 <li class="mega-menu__item"> 2503 <a href="/collections/water-analysis-instruments" class="mega-menu__link link">Water Analysis</a> 2504 </li> 2505 2506 2507 </ul> 2508 </div> 2509 <div class="mega-menu__column">
2510 <a href="https://canadagrowsupplies.com/pages/brands" class="mega-menu__title heading fulltitle">Popular Brands <span><img src="//canadagrowsupplies.com/cdn/shop/t/43/assets/right-arrow_20x.png?v=103978434622083363661686760905" loading="lazy"></span></a> 2511 2512 <ul class="logos-sec"> 2513 2514 2515 2516 2517 2518 2519 <li> 2520 <a href="/collections/autopot-watering-systems"><img src="//canadagrowsupplies.com/cdn/shop/files/Brand_logo-11_bf044239-b36b-4e1b-8d4f-ff60367e2788.png?v=1654045375" loading="lazy"></a> 2521 </li> 2522 2523 2524 2525 2526 2527 2528 2529 <li> 2530 <a href="/collections/alfred-horticulture"><img src="//canadagrowsupplies.com/cdn/shop/files/Brand_logo-08.png?v=1654045375" loading="lazy"></a> 2531 </li> 2532 2533 2534 2535 2536 2537 2538 2539 <li> 2540 <a href="/collections/bluelab"><img src="//canadagrowsupplies.com/cdn/shop/files/Brand_logo-09_b831944b-622b-4c78-9850-94a8adacbdb0.png?v=1654045375" loading="lazy"></a> 2541 </li> 2542 2543 2544 2545 2546 2547 2548 2549 <li> 2550 <a href="/collections/hydrologic"><img src="//canadagrowsupplies.com/cdn/shop/files/Brand_logo-10.png?v=1654045375" loading="lazy"></a> 2551 </li> 2552 2553 2554 2555 2556 2557 2558 2559 <li> 2560 <a href="/collections/active-aqua"><img src="//canadagrowsupplies.com/cdn/shop/files/Brand_logo-12.png?v=1654045375" loading="lazy"></a> 2561 </li> 2562 2563 2564 2565 2566 2567 2568 2569 <li> 2570 <a href="/collections/general-hydroponics"><img src="//canadagrowsupplies.com/cdn/shop/files/Brand_logo-03.png?v=1654026159" loading="lazy"></a> 2571 </li> 2572 2573 2574 2575 2576 <li></li> 2577 2578 2579 </ul> 2580 </div> 2581 </div> 2582</div> 2583</div> 2584</li><li class="nav-bar__item"><a href="/collections/climate-control" class="nav-bar__link link" data-type="menuitem" aria-expanded="false" aria-controls="desktop-menu-0-5" aria-haspopup="true">Climate Control <svg focusable="false" class="icon icon--arrow-bottom " viewBox="0 0 12 8" role="presentation"> 2585 <path stroke="currentColor" stroke-width="2" d="M10 2L6 6 2 2" fill="none" stroke-linecap="square"></path> 2586 </svg><svg focusable="false" class="icon icon--nav-triangle " viewBox="0 0 20 9" role="presentation"> 2587 <g fill="none" fill-rule="evenodd"> 2588 <path d="M.47108938 9c.2694725-.26871321.57077721-.56867841.90388257-.89986354C3.12384116 6.36134886 5.74788116 3.76338565 9.2467995.30653888c.4145057-.4095171 1.0844277-.40860098 1.4977971.00205122L19.4935156 9H.47108938z" fill="#ffffff"></path> 2589 <path d="M-.00922471 9C1.38887087 7.61849126 4.26661926 4.80337304 8.62402045.5546454c.75993175-.7409708 1.98812015-.7393145 2.74596565.0037073L19.9800494 9h-1.3748787l-7.9226239-7.7676545c-.3789219-.3715101-.9930172-.3723389-1.3729808-.0018557-3.20734177 3.1273507-5.6127118 5.4776841-7.21584193 7.05073579C1.82769633 8.54226204 1.58379521 8.7818599 1.36203986 9H-.00922471z" fill="#e1e3e4"></path> 2590 </g> 2591 </svg></a> 2592 2593<div id="desktop-menu-0-5" class="mega-menu " data-type="menu" aria-hidden="true" role="list" > 2594 2595<div class="container"> 2596 <div class="mega-menu__inner mega-menu__inner--center mega-menu__inner--large"> 2597 <div class="mega-menu__column"> 2598 <a href="/collections/grow-fans" onclick="return false;" class="mega-menu__title heading">Ventilation</a><ul class="mega-menu__linklist" role="list"><li class="mega-menu__item"> 2599 <a href="/collections/fans-filter-kits" class="mega-menu__link link">Fans & Filter Kits</a> 2600 </li> 2601 2602 <li class="mega-menu__item"> 2603 <a href="/collections/inline-fans" class="mega-menu__link link">Inline Fans</a> 2604 </li> 2605 2606 <li class="mega-menu__item"> 2607 <a href="/collections/carbon-filters" class="mega-menu__link link">Filters</a> 2608 </li> 2609 2610 <li class="mega-menu__item"> 2611 <a href="/collections/wall-fans-others" class="mega-menu__link link">Wall Fans & others</a> 2612 </li> 2613 2614 <li class="mega-menu__item"> 2615 <a href="/collections/ducts-reducers-flanges-climate-control" class="mega-menu__link link">Ducts, Reducers, Flanges</a> 2616 </li> 2617 2618 2619 </ul><a href="/collections/controllers-timers-meters" class="mega-menu__title heading">Controllers, Timers & Meters</a> 2620 <ul class="mega-menu__linklist" role="list"><li class="mega-menu__item"> 2621 <a href="/collections/fan-speed-controllers" class="mega-menu__link link">Fan Speed Controllers</a> 2622 </li> 2623 2624 <li class="mega-menu__item"> 2625 <a href="/collections/temperature-controllers" class="mega-menu__link link">Temperature Controllers</a> 2626 </li> 2627 2628 <li class="mega-menu__item"> 2629 <a href="/collections/humidity-controllers" class="mega-menu__link link">Humidity Controllers</a> 2630 </li> 2631 2632 <li class="mega-menu__item"> 2633 <a href="/collections/co2-controllers" class="mega-menu__link link">CO2 Controllers</a> 2634 </li> 2635 2636 2637 </ul> 2638 </div> 2639 <div class="mega-menu__column"> 2640 <a href="/collections/co2" class="mega-menu__title heading">CO2</a><ul class="mega-menu__linklist" role="list"><li class="mega-menu__item"> 2641 <a href="/collections/bags-bottles" class="mega-menu__link link">Bags & Botttles</a> 2642 </li> 2643 2644 <li class="mega-menu__item"> 2645 <a href="/collections/burners" class="mega-menu__link link">Burners</a> 2646 </li> 2647 2648 <li class="mega-menu__item"> 2649 <a href="/collections/co2-parts-1" class="mega-menu__link link">Parts</a> 2650 </li> 2651 2652 2653 </ul> 2654 <a href="/collections/humidity-control" class="mega-menu__title heading">Humidity Control</a><ul class="mega-menu__linklist" role="list"><li class="mega-menu__item"> 2655 <a href="/collections/humidifiers" class="mega-menu__link link">Humidifiers</a> 2656 </li> 2657 2658 <li class="mega-menu__item"> 2659 <a href="/collections/dehumidifiers" class="mega-menu__link link">Dehumidifiers</a> 2660 </li> 2661 2662 <li class="mega-menu__item"> 2663 <a href="/collections/atomizers" class="mega-menu__link link">Atomizers</a> 2664 </li> 2665 2666 2667 </ul> 2668 <a href="/collections/air-conditioner" class="mega-menu__title heading">Air Conditioner</a> 2669 </div> 2670 <div class="mega-menu__column"> 2671 <a href="/collections/odor-neutralizer" class="mega-menu__title heading">Odor Neutrilizer</a><ul class="mega-menu__linklist" role="list"><li class="mega-menu__item"> 2672 <a href="/collections/gels-sprays" class="mega-menu__link link">Gels & Sprays</a> 2673 </li> 2674 2675 <li class="mega-menu__item"> 2676 <a href="/collections/ozone-generator" class="mega-menu__link link">Ozone</a> 2677 </li> 2678 2679 2680 </ul> 2681 <a href="/collections/air-sanitization" class="mega-menu__title heading">Air Sanitization</a> 2682 <a href="/collections/replacement-parts-1" class="mega-menu__title heading">Replacement & Parts</a><ul class="mega-menu__linklist" role="list"><li class="mega-menu__item"> 2683 <a href="/collections/filters-1" class="mega-menu__link link">Filters</a> 2684 </li> 2685 2686 <li class="mega-menu__item"> 2687 <a href="/collections/co2-parts-1" class="mega-menu__link link">CO2 Parts</a> 2688 </li> 2689 2690 <li class="mega-menu__item"> 2691 <a href="/collections/hangers" class="mega-menu__link link">Hangers</a> 2692 </li> 2693 2694 <li class="mega-menu__item"> 2695 <a href="/collections/co2-controllers" class="mega-menu__link link">Controllers</a> 2696 </li> 2697 2698 2699 </ul> 2700 </div> 2701 2702 <div class="mega-menu__column">
2703 <a href="https://canadagrowsupplies.com/pages/brands" class="mega-menu__title heading fulltitle">Brands list <span><img src="//canadagrowsupplies.com/cdn/shop/t/43/assets/right-arrow_20x.png?v=103978434622083363661686760905" loading="lazy"></span></a> 2704 2705 <ul class="logos-sec"> 2706 2707 2708 2709 2710 2711 2712 <li> 2713 <a href="/collections/active-air"><img src="//canadagrowsupplies.com/cdn/shop/files/Brand_logo-16.png?v=1654045375" loading="lazy"></a> 2714 </li> 2715 2716 2717 2718 2719 2720 2721 2722 <li> 2723 <a href="/collections/advanced-nutrients"><img src="//canadagrowsupplies.com/cdn/shop/files/Brand_logo-13.png?v=1654045375" loading="lazy"></a> 2724 </li> 2725 2726 2727 2728 2729 2730 2731 2732 <li> 2733 <a href="/collections/vortex"><img src="//canadagrowsupplies.com/cdn/shop/files/Brand_logo-14.png?v=1654045375" loading="lazy"></a> 2734 </li> 2735 2736 2737 2738 2739 2740 2741 2742 <li> 2743 <a href="/collections/grow-fans"><img src="//canadagrowsupplies.com/cdn/shop/files/Brand_logo-15_be83687f-a3ad-46b5-82f4-c7db2632dc03.png?v=1654045559" loading="lazy"></a> 2744 </li> 2745 2746 2747 2748 2749 2750 2751 2752 <li> 2753 <a href="/collections/anden"><img src="//canadagrowsupplies.com/cdn/shop/files/Brand_logo-18.png?v=1654045392" loading="lazy"></a> 2754 </li> 2755 2756 2757 2758 2759 2760 2761 2762 <li> 2763 <a href="/collections/exhale-bags"><img src="//canadagrowsupplies.com/cdn/shop/files/Brand_logo-17.png?v=1654045392" loading="lazy"></a> 2764 </li> 2765 2766 2767 2768 2769 2770 2771 </ul> 2772 </div> 2773 </div> 2774</div> 2775</div> 2776</li><li class="nav-bar__item"><a href="/collections/propagation" class="nav-bar__link link" data-type="menuitem" aria-expanded="false" aria-controls="desktop-menu-0-6" aria-haspopup="true">Propagation<svg focusable="false" class="icon icon--arrow-bottom " viewBox="0 0 12 8" role="presentation"> 2777 <path stroke="currentColor" stroke-width="2" d="M10 2L6 6 2 2" fill="none" stroke-linecap="square"></path> 2778 </svg><svg focusable="false" class="icon icon--nav-triangle " viewBox="0 0 20 9" role="presentation"> 2779 <g fill="none" fill-rule="evenodd"> 2780 <path d="M.47108938 9c.2694725-.26871321.57077721-.56867841.90388257-.89986354C3.12384116 6.36134886 5.74788116 3.76338565 9.2467995.30653888c.4145057-.4095171 1.0844277-.40860098 1.4977971.00205122L19.4935156 9H.47108938z" fill="#ffffff"></path> 2781 <path d="M-.00922471 9C1.38887087 7.61849126 4.26661926 4.80337304 8.62402045.5546454c.75993175-.7409708 1.98812015-.7393145 2.74596565.0037073L19.9800494 9h-1.3748787l-7.9226239-7.7676545c-.3789219-.3715101-.9930172-.3723389-1.3729808-.0018557-3.20734177 3.1273507-5.6127118 5.4776841-7.21584193 7.05073579C1.82769633 8.54226204 1.58379521 8.7818599 1.36203986 9H-.00922471z" fill="#e1e3e4"></path> 2782 </g> 2783 </svg></a> 2784<div id="desktop-menu-0-6" class="mega-menu " data-type="menu" aria-hidden="true" role="list" > 2785 2786<div class="container"> 2787 <div class="mega-menu__inner mega-menu__inner--center mega-menu__inner--large"> 2788 <div class="mega-menu__column"> 2789 <a href="/collections/grow-media-1" class="mega-menu__title heading">Grow Media</a><ul class="mega-menu__linklist" role="list"><li class="mega-menu__item"> 2790 <a href="/collections/coco" class="mega-menu__link link">Coco</a> 2791 </li> 2792 2793 <li class="mega-menu__item"> 2794 <a href="/collections/soil-mixes" class="mega-menu__link link">Soil Mixes</a> 2795 </li> 2796 2797 <li class="mega-menu__item"> 2798 <a href="/collections/rockwool" class="mega-menu__link link">Rockwool</a> 2799 </li> 2800 2801 <li class="mega-menu__item"> 2802 <a href="/collections/clay-pellets" class="mega-menu__link link">Clay Pellets</a> 2803 </li> 2804 2805 <li class="mega-menu__item"> 2806 <a href="/collections/grow-tent-others" class="mega-menu__link link">Others</a> 2807 </li> 2808 2809 2810 </ul> 2811 </div> 2812 <div class="mega-menu__column"> 2813 <a href="/collections/germination-cloning" class="mega-menu__title heading">Germination & Cloning</a><ul class="mega-menu__linklist" role="list"><li class="mega-menu__item"> 2814 <a href="/collections/propagation-lights" class="mega-menu__link link">Propagation Lights</a> 2815 </li> 2816 2817 <li class="mega-menu__item"> 2818 <a href="/collections/trays-domes" class="mega-menu__link link">Trays & Domes</a> 2819 </li> 2820 2821 <li class="mega-menu__item"> 2822 <a href="/collections/mycorrhizae-microbe" class="mega-menu__link link">Mycorrhizae / Microbes</a> 2823 </li> 2824 2825 <li class="mega-menu__item"> 2826 <a href="/collections/cloners" class="mega-menu__link link">Cloners</a> 2827 </li> 2828 2829 <li class="mega-menu__item"> 2830 <a href="/collections/starter-pellets" class="mega-menu__link link">Starter Pellets</a> 2831 </li> 2832 2833 <li class="mega-menu__item"> 2834 <a href="/collections/heat-beds" class="mega-menu__link link">Heatbeds</a> 2835 </li> 2836 2837 <li class="mega-menu__item"> 2838 <a href="/collections/micro-gardens" class="mega-menu__link link">Micro Gardens</a> 2839 </li> 2840 2841 <li class="mega-menu__item">
2842 <a href="https://canadagrowsupplies.com/collections/seeds/" class="mega-menu__link link">Seeds</a> 2843 </li> 2844 2845 2846 </ul> 2847 </div> 2848 </div> 2849</div> 2850</div> 2851</li><li class="nav-bar__item"><a href="/collections/harvest-accessories" class="nav-bar__link link" data-type="menuitem" aria-expanded="false" aria-controls="desktop-menu-0-7" aria-haspopup="true">Harvest & Accessories<svg focusable="false" class="icon icon--arrow-bottom " viewBox="0 0 12 8" role="presentation"> 2852 <path stroke="currentColor" stroke-width="2" d="M10 2L6 6 2 2" fill="none" stroke-linecap="square"></path> 2853 </svg><svg focusable="false" class="icon icon--nav-triangle " viewBox="0 0 20 9" role="presentation"> 2854 <g fill="none" fill-rule="evenodd"> 2855 <path d="M.47108938 9c.2694725-.26871321.57077721-.56867841.90388257-.89986354C3.12384116 6.36134886 5.74788116 3.76338565 9.2467995.30653888c.4145057-.4095171 1.0844277-.40860098 1.4977971.00205122L19.4935156 9H.47108938z" fill="#ffffff"></path> 2856 <path d="M-.00922471 9C1.38887087 7.61849126 4.26661926 4.80337304 8.62402045.5546454c.75993175-.7409708 1.98812015-.7393145 2.74596565.0037073L19.9800494 9h-1.3748787l-7.9226239-7.7676545c-.3789219-.3715101-.9930172-.3723389-1.3729808-.0018557-3.20734177 3.1273507-5.6127118 5.4776841-7.21584193 7.05073579C1.82769633 8.54226204 1.58379521 8.7818599 1.36203986 9H-.00922471z" fill="#e1e3e4"></path> 2857 </g> 2858 </svg></a> 2859 2860<div id="desktop-menu-0-7" class="harvest-menu mega-menu " data-type="menu" aria-hidden="true" role="list" > 2861 2862 <div class="container"> 2863 <div class="mega-menu__inner mega-menu__inner--center mega-menu__inner--large"> 2864 2865 2866 <div class="mega-menu__column"> 2867 <a href="/collections/trimming-1" class="mega-menu__title heading">Trimming</a><ul class="mega-menu__linklist" role="list"><li class="mega-menu__item"> 2868 <a href="/collections/pruners" class="mega-menu__link link">Pruners</a> 2869 </li> 2870 2871 <li class="mega-menu__item"> 2872 <a href="/collections/trimmers" class="mega-menu__link link">Trimmers</a> 2873 </li> 2874 2875 <li class="mega-menu__item"> 2876 <a href="/collections/trimmer-parts" class="mega-menu__link link">Trimmer Parts</a> 2877 </li> 2878 2879 <li class="mega-menu__item"> 2880 <a href="/collections/buckers" class="mega-menu__link link">Buckers</a> 2881 </li> 2882 2883 2884 </ul> 2885 </div> 2886 2887 2888 2889 2890 <div class="mega-menu__column"> 2891 <a href="/collections/extractions" class="mega-menu__title heading">Extraction</a><ul class="mega-menu__linklist" role="list"><li class="mega-menu__item"> 2892 <a href="/collections/presses" class="mega-menu__link link">Presses</a> 2893 </li> 2894 2895 <li class="mega-menu__item"> 2896 <a href="/collections/extraction-bags" class="mega-menu__link link">Extraction Bags</a> 2897 </li> 2898 2899 <li class="mega-menu__item"> 2900 <a href="/collections/cooking-edibles" class="mega-menu__link link">Cooking & Edibles</a> 2901 </li> 2902 2903 <li class="mega-menu__item"> 2904 <a href="/collections/grow-tent-others" class="mega-menu__link link">Others</a> 2905 </li> 2906 2907 2908 </ul> 2909 2910 <a href="/collections/sprays-parts" class="mega-menu__title heading">Sprayers & Parts</a><ul class="mega-menu__linklist" role="list"><li class="mega-menu__item"> 2911 <a href="/collections/sprayers" class="mega-menu__link link">Sprayers</a> 2912 </li> 2913 2914 <li class="mega-menu__item"> 2915 <a href="/collections/parts-nozzles" class="mega-menu__link link">Parts & Nozzles</a> 2916 </li> 2917 2918 2919 </ul> 2920 2921 2922 2923 </div> 2924 <div class="mega-menu__column"> 2925 <a href="/collections/drying-accessories" class="mega-menu__title heading">Drying & Accessories</a><ul class="mega-menu__linklist" role="list"><li class="mega-menu__item"> 2926 <a href="/collections/drying-racks" class="mega-menu__link link">Drying & Racks</a> 2927 </li> 2928 2929 <li class="mega-menu__item"> 2930 <a href="/collections/scales" class="mega-menu__link link">Scales</a> 2931 </li> 2932 2933 <li class="mega-menu__item"> 2934 <a href="/collections/hygiene-and-safety" class="mega-menu__link link">Hygiene & Safety</a> 2935 </li> 2936 2937 <li class="mega-menu__item"> 2938 <a href="/collections/packaging" class="mega-menu__link link">Packaging</a> 2939 </li> 2940 2941 <li class="mega-menu__item"> 2942 <a href="/collections/gloves" class="mega-menu__link link">Gloves</a> 2943 </li> 2944 2945 <li class="mega-menu__item"> 2946 <a href="/collections/freeze-dryers" class="mega-menu__link link">Freeze Dryers</a> 2947 </li> 2948 2949 <li class="mega-menu__item">
2950 <a href="https://canadagrowsupplies.com/collections/garden-tools" class="mega-menu__link link">Garden Tools</a> 2951 </li> 2952 2953 <li class="mega-menu__item"> 2954 <a href="/collections/humidity-packs" class="mega-menu__link link">Humidity Packs</a> 2955 </li> 2956 2957 <li class="mega-menu__item"> 2958 <a href="/collections/other-accessories-drying" class="mega-menu__link link">Other Accessories (drying)</a> 2959 </li> 2960 2961 2962 </ul> 2963 </div> 2964 <div class="mega-menu__column"> 2965 <a href="https://canadagrowsupplies.com/pages/brands" class="mega-menu__title heading fulltitle">Brands <span><img src="//canadagrowsupplies.com/cdn/shop/t/43/assets/right-arrow_20x.png?v=103978434622083363661686760905" loading="lazy"></span></a> 2966 2967 <ul class="logos-sec"> 2968 2969 2970 2971 2972 2973 2974 <li> 2975 <a href="/collections/centurionpro"><img src="//canadagrowsupplies.com/cdn/shop/files/Brand_logo-22.png?v=1654045392" loading="lazy"></a> 2976 </li> 2977 2978 2979 2980 2981 2982 2983 2984 <li> 2985 <a href="/collections/twister"><img src="//canadagrowsupplies.com/cdn/shop/files/Brand_logo-19.png?v=1654045392" loading="lazy"></a> 2986 </li> 2987 2988 2989 2990 2991 2992 2993 2994 <li> 2995 <a href="/collections/trimpro"><img src="//canadagrowsupplies.com/cdn/shop/files/Brand_logo-20.png?v=1654045392" loading="lazy"></a> 2996 </li> 2997 2998 2999 3000 3001 3002 3003 3004 <li> 3005 <a href="/collections/jack-puck"><img src="//canadagrowsupplies.com/cdn/shop/files/Brand_logo-21.png?v=1654045392" loading="lazy"></a> 3006 </li> 3007 3008 3009 3010 3011 3012 3013 3014 <li> 3015 <a href=""><img src="//canadagrowsupplies.com/cdn/shop/files/Brand_logo-23.png?v=1654045392" loading="lazy"></a> 3016 </li> 3017 3018 3019 3020 3021 3022 3023 3024 <li> 3025 <a href="/collections/pro-cut"><img src="//canadagrowsupplies.com/cdn/shop/files/Brand_logo-24.png?v=1654045392" loading="lazy"></a> 3026 </li> 3027 3028 3029 3030 3031 3032 3033 </ul> 3034 </div> 3035 </div> 3036 </div> 3037 </div> 3038 3039</li><li class="nav-bar__item"><a href="/pages/brands" class="nav-bar__link link" data-type="menuitem">Brands</a></li><li class="nav-bar__item"><a href="/collections/sale" class="nav-bar__link link" data-type="menuitem">Sale</a></li></ul> 3040 </div> 3041 </div> 3042 </nav></section> 3043 3044<style> 3045 :root { 3046 --header-is-sticky: 1; 3047 --header-inline-navigation: 1; 3048 } 3049 3050 #shopify-section-sections--15159568564267__header { 3051 position: relative; 3052 z-index: 5;position: -webkit-sticky; 3053 position: sticky; 3054 top: 0;}.header__logo-image { 3055 max-width: 100px !important; 3056 } 3057 3058 @media screen and (min-width: 641px) { 3059 .header__logo-image { 3060 max-width: 220px !important; 3061 } 3062 }@media screen and (min-width: 1000px) { 3063 .search-bar.is-expanded .search-bar__top { 3064 box-shadow: 0 -1px var(--border-color) inset; 3065 } 3066 }</style> 3067
3068<script> 3069 document.documentElement.style.setProperty('--header-height', document.getElementById('shopify-section-sections--15159568564267__header').clientHeight + 'px'); 3070</script>
3070 3071 3072</div> 3073<!-- END sections: header-group --><!-- BEGIN sections: overlay-group --> 3074<div id="shopify-section-sections--15159568531499__popups" class="shopify-section shopify-section-group-overlay-group"><div data-section-id="sections--15159568531499__popups" data-section-type="popups"></div> 3075 3076</div><div id="shopify-section-sections--15159568531499__privacy-banner" class="shopify-section shopify-section-group-overlay-group"><privacy-banner class="cookie-bar" aria-hidden="true"> 3077 <div class="container"> 3078 <div class="cookie-bar__inner"> 3079 <div class="cookie-bar__text rte"><p>Use this bar to show information about your cookie policy.</p></div> 3080 3081 <div class="cookie-bar__choice-container"> 3082 <div class="button-group button-group--fit"> 3083 <button type="button" class="cookie-bar__button button button--primary" data-action="accept-terms">Accept</button> 3084 <button type="button" class="cookie-bar__button button button--secondary" data-action="decline-terms">Decline</button> 3085 </div> 3086 </div> 3087 </div> 3088 </div> 3089</privacy-banner> 3090 3091 3092</div> 3093<!-- END sections: overlay-group --><main id="main" role="main"> 3094 <div id="shopify-section-template--15159569285163__main" class="shopify-section"><style> 3095 3096 .layout__section.mobile_only { 3097 display: none; 3098 } 3099 3100 .blog-post-list div.article-item-mobile { 3101 display: flex; 3102 padding: 10px; 3103 background: white; 3104 margin-bottom: 20px !important; 3105 border-radius: 20px; 3106 align-items: flex-start; 3107 } 3108 3109 .article-item-mobile .articledatas { 3110 width: 60%; 3111 padding-top: unset !important; 3112 padding-left: unset !important; 3113 padding-bottom: unset !important; 3114 } 3115 3116 .article-item-mobile h2.article-item__title.heading.h3, 3117 .article-item-mobile h2.article-item__title.heading.h3 a { 3118 font-size: 1rem !important; 3119 line-height: 1.2; 3120 margin-top: 5px; 3121 margin-bottom: 10px; 3122 } 3123 3124 .article-item-mobile a.nomargin.article-item__image-container { 3125 width: 40%; 3126 } 3127 3128 .article-item-mobile .article-item__meta { 3129 color: var(--header-accent-color); 3130 } 3131 3132 .article-item-mobile .article-item__excerpt { 3133 margin-top: unset; 3134 line-height: 1; 3135 font-size: 0.9rem; 3136 } 3137 3138 .article-item-mobile .article-item__meta-item { 3139 font-size: 0.8em; 3140 } 3141 3142 .article-item-mobile .article-item__image { 3143 height: 120px; 3144 object-fit: cover; 3145 border-radius: 20px; 3146 } 3147 3148 @media screen and (max-width: 989px) { 3149 .layout__section.desktop_only { 3150 display: none; 3151 } 3152 3153 .layout__section.mobile_only { 3154 display: flex; 3155 flex-direction: column; 3156 } 3157 } 3158 3159</style> 3160 3161<article data-section-id="template--15159569285163__main" data-section-type="blog"> 3162 <div class="container"><header class="page__header"> 3163 <nav aria-label="Breadcrumb" class="breadcrumb"> 3164 <ol class="breadcrumb__list" role="list"> 3165 <li class="breadcrumb__item"> 3166 <a class="breadcrumb__link link" href="/">Home</a><svg focusable="false" class="icon icon--arrow-right " viewBox="0 0 8 12" role="presentation"> 3167 <path stroke="currentColor" stroke-width="2" d="M2 2l4 4-4 4" fill="none" stroke-linecap="square"></path> 3168 </svg></li> 3169 <li class="breadcrumb__item"> 3170 <a class="breadcrumb__link link" href="/blogs/main">Blog</a> 3171 </li> 3172 </ol> 3173 </nav> 3174 3175 3176</header><div class="blog-container"><div class="blog-post-list-wrapper"> 3177 <div class="layout"> 3178 <div class="layout__section layout__section--secondary hidden-pocket"> 3179 <div class="postsearch"> 3180 <form action="/search" method="get" onsubmit="checkSearch(this);" role="search" class="search-bar"><div class="search-bar__top-wrapper"> 3181 <div class="search-bar__top"> 3182 <input type="hidden" name="type" value="article"> 3183 <input type="hidden" name="options[prefix]" value="last"> 3184 3185 <div class="search-bar__input-wrapper"> 3186 <input class="search-bar__input" type="text" name="q" autocomplete="off" autocorrect="off" aria-label="Search article" placeholder="Search article"> 3187 </div> 3188 <button type="submit" class="search-bar__submit" aria-label="Search"> 3189 <svg focusable="false" class="icon icon--search " viewBox="0 0 21 21" role="presentation"> 3190 <g stroke-width="2" stroke="currentColor" fill="none" fill-rule="evenodd"> 3191 <path d="M19 19l-5-5" stroke-linecap="square"></path> 3192 <circle cx="8.5" cy="8.5" r="7.5"></circle> 3193 </g> 3194 </svg> 3195 </button> 3196 </div> 3197 </div> 3198 </form> 3199 </div> 3200 <div class="postsibarcat"> 3201 <p class="catbtitole">Categories</p> 3202 <ul class="search-bar__menu-linklist list--unstyled" role="list"><li><a href="/blogs/main/tagged/autopot" class="search-bar__menu-link">AutoPot</a></li><li><a href="/blogs/main/tagged/freeze-drying" class="search-bar__menu-link">Freeze Drying</a></li><li><a href="/blogs/main/tagged/fruits" class="search-bar__menu-link">fruits</a></li><li><a href="/blogs/main/tagged/grow-tents" class="search-bar__menu-link">Grow Tents</a></li><li><a href="/blogs/main/tagged/hydroponics" class="search-bar__menu-link">Hydroponics</a></li><li><a href="/blogs/main/tagged/indoor-growing" class="search-bar__menu-link">Indoor Growing</a></li><li><a href="/blogs/main/tagged/led-lights" class="search-bar__menu-link">LED Lights</a></li><li><a href="/blogs/main/tagged/lifestyle" class="search-bar__menu-link">Lifestyle</a></li><li><a href="/blogs/main/tagged/microgreens" class="search-bar__menu-link">Microgreens</a></li><li><a href="/blogs/main/tagged/outdoor-growing" class="search-bar__menu-link">Outdoor Growing</a></li><li><a href="/blogs/main/tagged/plant-diseases" class="search-bar__menu-link">Plant Diseases</a></li><li><a href="/blogs/main/tagged/plant-problems" class="search-bar__menu-link">Plant Problems</a></li><li><a href="/blogs/main/tagged/vegetables" class="search-bar__menu-link">Vegetables</a></li><li><a href="/blogs/main/tagged/water-chillers" class="search-bar__menu-link">
3202Water Chillers</a></li></ul> 3203 </div> 3204 <div class="toparticles"> 3205 <h3 class="topartitle">Top Articles</h3><div class="toparmain"> 3206 <div class="toparnum"><span>1</span></div> 3207 <div class="topardata"> 3208 <h3 class="article-item__title heading h4"> 3209 <a href="/blogs/main/flower-room-lighting-why-plants-need-light-in-flowering" class="link">Flower Room Lighting: Why Plants Need Light in Flowering</a> 3210 </h3><time class="article-item__meta-item">Apr 24, 2026- Indoor Growing</time></div> 3211 </div> 3212 <div class="toparmain"> 3213 <div class="toparnum"><span>2</span></div> 3214 <div class="topardata"> 3215 <h3 class="article-item__title heading h4"> 3216 <a href="/blogs/main/best-practices-to-increase-yields-with-co2-canada-grow-supplies" class="link">Best Practices to Increase Yields With CO2 | Canada Grow Supplies</a> 3217 </h3><time class="article-item__meta-item">Apr 21, 2026- Hydroponics</time></div> 3218 </div> 3219 <div class="toparmain"> 3220 <div class="toparnum"><span>3</span></div> 3221 <div class="topardata"> 3222 <h3 class="article-item__title heading h4"> 3223 <a href="/blogs/main/why-ph-is-important-for-plants-canada-grow-supplies" class="link">Why pH Is Important for Plants | Canada Grow Supplies</a> 3224 </h3><time class="article-item__meta-item">Apr 16, 2026- Hydroponics</time></div> 3225 </div> 3226 <div class="toparmain"> 3227 <div class="toparnum"><span>4</span></div> 3228 <div class="topardata"> 3229 <h3 class="article-item__title heading h4"> 3230 <a href="/blogs/main/how-to-grow-seedlings-in-coco-coir" class="link">How to Grow Seedlings in Coco Coir</a> 3231 </h3><time class="article-item__meta-item">Apr 15, 2026- Indoor Growing</time></div> 3232 </div> 3233 <div class="toparmain"> 3234 <div class="toparnum"><span>5</span></div> 3235 <div class="topardata"> 3236 <h3 class="article-item__title heading h4"> 3237 <a href="/blogs/main/how-to-choose-the-best-led-grow-light-for-indoor-growing" class="link">How to Choose the Best LED Grow Light for Indoor Growing</a> 3238 </h3><time class="article-item__meta-item">Apr 15, 2026- Indoor Growing</time></div> 3239 </div> 3240 3241 </div> 3242 </div> 3243 <div class="layout__section desktop_only"><div class="blog-post-list block-list block-list--loose block-list--no-flush"><div class="block-list__item 1/1 1/2--tablet 1/2--desk "><div class="article-item "><a href="/blogs/main/flower-room-lighting-why-plants-need-light-in-flowering" class="nomargin article-item__image-container"><div class="aspect-ratio" style="padding-bottom: 70%"> 3244 <img class="article-item__image lazyload image--fade-in" src="//canadagrowsupplies.com/cdn/shop/articles/Flower_Room_Lighting_-_Why_Plants_Need_Lighting_During_Flowering.jpg?v=1777042243" data-src="//canadagrowsupplies.com/cdn/shop/articles/Flower_Room_Lighting_-_Why_Plants_Need_Lighting_During_Flowering_{width}x.jpg?v=1777042243" data-widths="[200,300,400,500,600]" data-sizes="auto" alt="Flower Room Lighting: Why Plants Need Light in Flowering"> 3245 3246 <div class="catimg"> 3247 <span class="article-item__meta-item">Indoor Growing</span> 3248 </div> 3249 3250 <noscript> 3251 <img class="article-item__image" src="//canadagrowsupplies.com/cdn/shop/articles/Flower_Room_Lighting_-_Why_Plants_Need_Lighting_During_Flowering_600x.jpg?v=1777042243" alt="Flower Room Lighting: Why Plants Need Light in Flowering"> 3252 </noscript> 3253 </div> 3254 </a><div class="author_meta_user" > 3255 3256 3257 <a href="/pages/eric-st-cyr"> 3258 <img src="//canadagrowsupplies.com/cdn/shop/t/43/assets/eric-st-cyr.png?v=146232846340800743781700077143" alt="Eric St-Cyr"> 3259</a> 3260</div><div class="articledatas articledatas_bottom"><div class="article-item__meta">
3261 <span class="article-item__meta-item">Eric St-Cyr</span><time class="article-item__meta-item">Apr 24, 2026</time> 3262 </div><p class="article-item__title heading h3"> 3263 <a href="/blogs/main/flower-room-lighting-why-plants-need-light-in-flowering" class="link">Flower Room Lighting: Why Plants Need Light in Flowering</a> 3264 </p><div class="article-item__excerpt rte">Flower Room Lighting: Why Plants Need Lighting During Flowering 3265When plants move into the flowering stage, lighting becomes one of the most importa...</div></div> 3266</div></div><div class="block-list__item 1/1 1/2--tablet 1/2--desk "><div class="article-item "><a href="/blogs/main/best-practices-to-increase-yields-with-co2-canada-grow-supplies" class="nomargin article-item__image-container"><div class="aspect-ratio" style="padding-bottom: 70%"> 3267 <img class="article-item__image lazyload image--fade-in" src="//canadagrowsupplies.com/cdn/shop/articles/Best_Practices_to_Increase_Yields_With_CO2_1a7336e4-2ca5-4986-83f8-214b0879bd33.jpg?v=1776783452" data-src="//canadagrowsupplies.com/cdn/shop/articles/Best_Practices_to_Increase_Yields_With_CO2_1a7336e4-2ca5-4986-83f8-214b0879bd33_{width}x.jpg?v=1776783452" data-widths="[200,300,400,500,600]" data-sizes="auto" alt="Best Practices to Increase Yields With CO2"> 3268 3269 <div class="catimg"> 3270 <span class="article-item__meta-item">Hydroponics</span> 3271 </div> 3272 3273 <noscript> 3274 <img class="article-item__image" src="//canadagrowsupplies.com/cdn/shop/articles/Best_Practices_to_Increase_Yields_With_CO2_1a7336e4-2ca5-4986-83f8-214b0879bd33_600x.jpg?v=1776783452" alt="Best Practices to Increase Yields With CO2"> 3275 </noscript> 3276 </div> 3277 </a><div class="author_meta_user" > 3278 3279 3280 <a href="/pages/eric-st-cyr"> 3281 <img src="//canadagrowsupplies.com/cdn/shop/t/43/assets/eric-st-cyr.png?v=146232846340800743781700077143" alt="Eric St-Cyr"> 3282</a> 3283</div><div class="articledatas articledatas_bottom"><div class="article-item__meta"> 3284 <span class="article-item__meta-item">Eric St-Cyr</span><time class="article-item__meta-item">Apr 21, 2026</time> 3285 </div><p class="article-item__title heading h3"> 3286 <a href="/blogs/main/best-practices-to-increase-yields-with-co2-canada-grow-supplies" class="link">Best Practices to Increase Yields With CO2 | Canada Grow Supplies</a> 3287 </p><div class="article-item__excerpt rte">Best Practices to Increase Yields With CO2 3288CO2 enrichment can be a powerful tool in indoor growing, but it only works well when the rest of the env...</div></div> 3289</div></div><div class="block-list__item 1/1 1/2--tablet 1/2--desk "><div class="article-item "><a href="/blogs/main/why-ph-is-important-for-plants-canada-grow-supplies" class="nomargin article-item__image-container"><div class="aspect-ratio" style="padding-bottom: 70%"> 3290 <img class="article-item__image lazyload image--fade-in" src="//canadagrowsupplies.com/cdn/shop/articles/Why_pH_Is_Important_for_Plants_083adb61-ed23-4ec3-aa96-04157992e357.png?v=1776350472" data-src="//canadagrowsupplies.com/cdn/shop/articles/Why_pH_Is_Important_for_Plants_083adb61-ed23-4ec3-aa96-04157992e357_{width}x.png?v=1776350472" data-widths="[200,300,400,500,600,700,800,900,1000]" data-sizes="auto" alt="Why pH Is Important for Plants"> 3291 3292 <div class="catimg"> 3293 <span class="article-item__meta-item">Hydroponics</span> 3294 </div> 3295 3296 <noscript> 3297 <img class="article-item__image" src="//canadagrowsupplies.com/cdn/shop/articles/Why_pH_Is_Important_for_Plants_083adb61-ed23-4ec3-aa96-04157992e357_600x.png?v=1776350472" alt="Why pH Is Important for Plants"> 3298 </noscript> 3299 </div> 3300 </a><div class="author_meta_user" > 3301 3302 3303 <a href="/pages/eric-st-cyr"> 3304 <img src="//canadagrowsupplies.com/cdn/shop/t/43/assets/eric-st-cyr.png?v=146232846340800743781700077143" alt="Eric St-Cyr"> 3305</a> 3306</div><div class="articledatas articledatas_bottom"><div class="article-item__meta"> 3307 <span class="article-item__meta-item">Eric St-Cyr</span><time class="article-item__meta-item">Apr 16, 2026</time> 3308 </div><p class="article-item__title heading h3"> 3309 <a href="/blogs/main/why-ph-is-important-for-plants-canada-grow-supplies" class="link">Why pH Is Important for Plants | Canada Grow Supplies</a> 3310 </p><div class="article-item__excerpt rte"><p>pH plays a major role in plant health because it affects how easily roots can absorb essential nutrients. Even with the right lighting, watering, and feeding routine, plants can struggle if the pH is out of range. Whether you are growing in soil, coco coir, or hydroponics, understanding and managing pH can help supp
3310ort stronger growth, healthier roots, and more consistent results throughout the grow cycle.</p></div></div> 3311</div></div><div class="block-list__item 1/1 1/2--tablet 1/2--desk "><div class="article-item "><a href="/blogs/main/how-to-grow-seedlings-in-coco-coir" class="nomargin article-item__image-container"><div class="aspect-ratio" style="padding-bottom: 70%"> 3312 <img class="article-item__image lazyload image--fade-in" src="//canadagrowsupplies.com/cdn/shop/articles/Can_you_also_give_a_short_intro_f775362b-6908-4cb3-952d-85af42f50b20.png?v=1776270694" data-src="//canadagrowsupplies.com/cdn/shop/articles/Can_you_also_give_a_short_intro_f775362b-6908-4cb3-952d-85af42f50b20_{width}x.png?v=1776270694" data-widths="[200,300,400,500,600,700,800,900,1000]" data-sizes="auto" alt="Can you also give a short intro"> 3313 3314 <div class="catimg"> 3315 <span class="article-item__meta-item">Indoor Growing</span> 3316 </div> 3317 3318 <noscript> 3319 <img class="article-item__image" src="//canadagrowsupplies.com/cdn/shop/articles/Can_you_also_give_a_short_intro_f775362b-6908-4cb3-952d-85af42f50b20_600x.png?v=1776270694" alt="Can you also give a short intro"> 3320 </noscript> 3321 </div> 3322 </a><div class="author_meta_user" > 3323 3324 3325 <a href="/pages/eric-st-cyr"> 3326 <img src="//canadagrowsupplies.com/cdn/shop/t/43/assets/eric-st-cyr.png?v=146232846340800743781700077143" alt="Eric St-Cyr"> 3327</a> 3328</div><div class="articledatas articledatas_bottom"><div class="article-item__meta"> 3329 <span class="article-item__meta-item">Eric St-Cyr</span><time class="article-item__meta-item">Apr 15, 2026</time> 3330 </div><p class="article-item__title heading h3"> 3331 <a href="/blogs/main/how-to-grow-seedlings-in-coco-coir" class="link">How to Grow Seedlings in Coco Coir</a> 3332 </p><div class="article-item__excerpt rte">How to Grow Seedlings in Coco Coir 3333Growing seedlings in coco coir is a practical choice for indoor growers who want a clean, airy, and easy-to-mana...</div></div> 3334</div></div></div><div class="pagination"> 3335 <div class="pagination__inner"><div class="pagination__nav"><span class="pagination__nav-item is-active">1</span><a href="/blogs/main?page=2" data-page="2" class="pagination__nav-item link" title="Navigate to page 2">2</a><a href="/blogs/main?page=3" data-page="3" class="pagination__nav-item link" title="Navigate to page 3">3</a><span class="pagination__nav-item ">…</span><a href="/blogs/main?page=50" data-page="50" class="pagination__nav-item link" title="Navigate to page 50">50</a></div> 3336 3337 <span class="pagination__page-count">Page 1 / 50</span><a class="pagination__next link" rel="next" title="Next" data-page="2" href="/blogs/main?page=2">Next<svg focusable="false" class="icon icon--arrow-right " viewBox="0 0 8 12" role="presentation"> 3338 <path stroke="currentColor" stroke-width="2" d="M2 2l4 4-4 4" fill="none" stroke-linecap="square"></path> 3339 </svg></a></div> 3340 </div></div> 3341 3342 <div class="layout__section mobile_only"><div class="blog-post-list block-list block-list--loose block-list--no-flush"><div class="block-list__item 1/1 1/2--tablet 1/2--desk "><div class="article-item-mobile"><div class="articledatas articledatas_bottom"><div class="article-item__meta"> 3343 <span class="article-item__meta-item">Eric St-Cyr</span><time class="article-item__meta-item">Apr 24, 2026</time> 3344 </div><h2 class="article-item__title heading h3"> 3345 <a href="/blogs/main/flower-room-lighting-why-plants-need-light-in-flowering" class="link">Flower Room Lighting: Why Plants Need Light in Flowering</a> 3346 </h2><div class="article-item__excerpt rte">Flower Room Lighting: Why Plants Need Lighting During Flo...</div></div><a href="/blogs/main/flower-room-lighting-why-plants-need-light-in-flowering" class="nomargin article-item__image-container"> 3347 <img class="article-item__image lazyload image--fade-in" src="//canadagrowsupplies.com/cdn/shop/articles/Flower_Room_Lighting_-_Why_Plants_Need_Lighting_During_Flowering.jpg?v=1777042243" data-src="" data-widths="[]" data-sizes="auto" alt="Flower Room Lighting: Why Plants Need Light in Flowering"> 3348 </a></div></div><div class="block-list__item 1/1 1/2--tablet 1/2--desk "><div class="article-item-mobile"><div class="articledatas articledatas_bottom"><div class="article-item__meta">
3349 <span class="article-item__meta-item">Eric St-Cyr</span><time class="article-item__meta-item">Apr 21, 2026</time> 3350 </div><h2 class="article-item__title heading h3"> 3351 <a href="/blogs/main/best-practices-to-increase-yields-with-co2-canada-grow-supplies" class="link">Best Practices to Increase Yields With CO2 | Canada Grow Supplies</a> 3352 </h2><div class="article-item__excerpt rte">Best Practices to Increase Yields With CO2 3353CO2 enrichment...</div></div><a href="/blogs/main/best-practices-to-increase-yields-with-co2-canada-grow-supplies" class="nomargin article-item__image-container"> 3354 <img class="article-item__image lazyload image--fade-in" src="//canadagrowsupplies.com/cdn/shop/articles/Best_Practices_to_Increase_Yields_With_CO2_1a7336e4-2ca5-4986-83f8-214b0879bd33.jpg?v=1776783452" data-src="" data-widths="[]" data-sizes="auto" alt="Best Practices to Increase Yields With CO2"> 3355 </a></div></div><div class="block-list__item 1/1 1/2--tablet 1/2--desk "><div class="article-item-mobile"><div class="articledatas articledatas_bottom"><div class="article-item__meta"> 3356 <span class="article-item__meta-item">Eric St-Cyr</span><time class="article-item__meta-item">Apr 16, 2026</time> 3357 </div><h2 class="article-item__title heading h3"> 3358 <a href="/blogs/main/why-ph-is-important-for-plants-canada-grow-supplies" class="link">Why pH Is Important for Plants | Canada Grow Supplies</a> 3359 </h2><div class="article-item__excerpt rte"><p>pH plays a major role in plant health because it affects how easily roots can absorb essential nutrients. Even with the right lighting, watering, and feeding routine, plants can struggle if the pH is out of range. Whether you are growing in soil, coco coir, or hydroponics, understanding and managing pH can help support stronger growth, healthier roots, and more consistent results throughout the grow cycle.</p></div></div><a href="/blogs/main/why-ph-is-important-for-plants-canada-grow-supplies" class="nomargin article-item__image-container"> 3360 <img class="article-item__image lazyload image--fade-in" src="//canadagrowsupplies.com/cdn/shop/articles/Why_pH_Is_Important_for_Plants_083adb61-ed23-4ec3-aa96-04157992e357.png?v=1776350472" data-src="" data-widths="[]" data-sizes="auto" alt="Why pH Is Important for Plants"> 3361 </a></div></div><div class="block-list__item 1/1 1/2--tablet 1/2--desk "><div class="article-item-mobile"><div class="articledatas articledatas_bottom"><div class="article-item__meta"> 3362 <span class="article-item__meta-item">Eric St-Cyr</span><time class="article-item__meta-item">Apr 15, 2026</time> 3363 </div><h2 class="article-item__title heading h3"> 3364 <a href="/blogs/main/how-to-grow-seedlings-in-coco-coir" class="link">How to Grow Seedlings in Coco Coir</a> 3365 </h2><div class="article-item__excerpt rte">How to Grow Seedlings in Coco Coir 3366Growing seedlings in c...</div></div><a href="/blogs/main/how-to-grow-seedlings-in-coco-coir" class="nomargin article-item__image-container"> 3367 <img class="article-item__image lazyload image--fade-in" src="//canadagrowsupplies.com/cdn/shop/articles/Can_you_also_give_a_short_intro_f775362b-6908-4cb3-952d-85af42f50b20.png?v=1776270694" data-src="" data-widths="[]" data-sizes="auto" alt="Can you also give a short intro"> 3368 </a></div></div></div><div class="pagination"> 3369 <div class="pagination__inner"><div class="pagination__nav"><span class="pagination__nav-item is-active">1</span><a href="/blogs/main?page=2" data-page="2" class="pagination__nav-item link" title="Navigate to page 2">2</a><a href="/blogs/main?page=3" data-page="3" class="pagination__nav-item link" title="Navigate to page 3">3</a><span class="pagination__nav-item ">…</span><a href="/blogs/main?page=50" data-page="50" class="pagination__nav-item link" title="Navigate to page 50">50</a></div> 3370 3371 <span class="pagination__page-count">Page 1 / 50</span><a class="pagination__next link" rel="next" title="Next" data-page="2" href="/blogs/main?page=2">Next<svg focusable="false" class="icon icon--arrow-right " viewBox="0 0 8 12" role="presentation"> 3372 <path stroke="currentColor" stroke-width="2" d="M2 2l4 4-4 4" fill="none" stroke-linecap="square"></path> 3373 </svg></a></div> 3374 </div></div> 3375 </div> 3376 </div></div> 3377 </div> 3378</article> 3379 3380</div> 3381 </main><!-- BEGIN sections: footer-group --> 3382<div id="shopify-section-sections--15159568498731__footer" class="shopify-section shopify-section-group-footer-group"><footer class="footer" data-section-id="sections--15159568498731__footer" data-section-type="footer" role="contentinfo"> 3383 <div class="container"> 3384 <div class="footer__wrapper"><div class="footer__block-list"> 3385 <div class="logofooter footer__block-item footer__block-item--links" > 3386 <img src="//canadagrowsupplies.com/cdn/shop/files/Group_1.png?v=1652452958" loading="lazy" width="100%" height="100%" alt="Canada Grow Supplies White Logo"> 3387 </div> 3388 3389<div class="paymentfooter footer__block-item footer__block-item--links" > 3390 3391 <p class="footer__aside-title">We Accept</p> 3392 <img src="//canadagrowsupplies.com/cdn/shop/files/Group_71_1_20384cdc-0597-4f47-9d2d-3656157d3e8f.png?v=1666079399" loading="lazy" alt="Accept Payment Icons in CGS"> 3393 </div><div class="footer__block-item footer__block-item--links" > 3394 <button class="footer__title heading h6" disabled aria-expanded="false" aria-controls="block-aa2b8bb9-e1e9-4918-a041-3b46135504b9" data-action="toggle-collapsible">
3395 <span>About</span> 3396 <span class="plus-button"></span> 3397 </button> 3398 3399 <div id="block-aa2b8bb9-e1e9-4918-a041-3b46135504b9" class="footer__collapsible"> 3400 <div class="footer__collapsible-content"> 3401 <ul class="footer__linklist list--unstyled" role="list"><li> 3402 <a href="/pages/about" class="footer__link-item link">Company</a> 3403 </li><li> 3404 <a href="/blogs/main" class="footer__link-item link">Blog</a> 3405 </li><li> 3406 <a href="/policies/privacy-policy" class="footer__link-item link">Privacy Policy</a> 3407 </li><li> 3408 <a href="https://canadagrowsupplies.com/pages/happy-customers-page" class="footer__link-item link">Reviews</a> 3409 </li></ul> 3410 </div> 3411 </div> 3412 </div><div class="footer__block-item footer__block-item--links" > 3413 <button class="footer__title heading h6" disabled aria-expanded="false" aria-controls="block-81123cfb-eec3-4e55-bef9-762223f1974e" data-action="toggle-collapsible"> 3414 <span>Help</span> 3415 <span class="plus-button"></span> 3416 </button> 3417 3418 <div id="block-81123cfb-eec3-4e55-bef9-762223f1974e" class="footer__collapsible"> 3419 <div class="footer__collapsible-content"> 3420 <ul class="footer__linklist list--unstyled" role="list"><li> 3421 <a href="/account/" class="footer__link-item link">My Account</a> 3422 </li><li> 3423 <a href="/pages/faqs" class="footer__link-item link">FAQs</a> 3424 </li><li> 3425 <a href="/pages/contact" class="footer__link-item link">Contact Us</a> 3426 </li><li> 3427 <a href="/pages/our-price-match-guarantee" class="footer__link-item link">Price Matching</a> 3428 </li><li> 3429 <a href="/policies/terms-of-service" class="footer__link-item link">Terms and Conditions</a> 3430 </li><li> 3431 <a href="/policies/refund-policy" class="footer__link-item link">Refund Policy</a> 3432 </li><li> 3433 <a href="/policies/shipping-policy" class="footer__link-item link">Shipping</a> 3434 </li><li> 3435 <a href="https://canada-grow-supplies-main.myshopify.com/apps/parcelpanel" class="footer__link-item link">Track Your Order</a> 3436 </li><li> 3437 <a href="/pages/grow-club" class="footer__link-item link">GrowClub</a> 3438 </li></ul> 3439 </div> 3440 </div> 3441 </div><div class="footer__block-item footer__block-item--links" > 3442 <button class="footer__title heading h6" disabled aria-expanded="false" aria-controls="block-footer-1" data-action="toggle-collapsible"> 3443 <span>Follow</span> 3444 <span class="plus-button"></span> 3445 </button> 3446 3447 <div id="block-footer-1" class="footer__collapsible"> 3448 <div class="footer__collapsible-content"> 3449 <ul class="footer__linklist list--unstyled" role="list"><li> 3450 <a href="https://www.facebook.com/canadagrowsupplies/" class="footer__link-item link">Facebook</a> 3451 </li><li> 3452 <a href="https://www.instagram.com/canadagrowsuppliescom/" class="footer__link-item link">Instagram</a> 3453 </li><li> 3454 <a href="tel:888-349-0321" class="footer__link-item link">888-349-0321</a> 3455 </li><li> 3456 <a href="mailto:[email protected]" class="footer__link-item link">[email protected]</a> 3457 </li><li> 3458 <a href="/pages/about" class="footer__link-item link">Store Address: 1825 rue Guillet, Laval, Quebec, H7L 5B1</a> 3459 </li></ul> 3460 </div> 3461 </div> 3462 </div></div><aside class="footer__aside"><div class="footer__aside-item footer__aside-item--localization "> 3463 <p class="hidden-pocket">© 2026 Canada Grow Supplies</p> 3464 </div><div class="footer__aside-item footer__aside-item--copyright hidden-lap-and-up"> 3465 <p>© 2026 Canada Grow Supplies</p> 3466 </div> 3467 </aside> 3468 </div> 3469 </div></footer> 3470 3471 3472 3473</div> 3474<!-- END sections: footer-group --><ul hidden> 3475 <li id="a11y-new-window-message">Opens in a new window.</li> 3476 </ul> 3477 3478
3478<script async src="https://loox.io/widget/NJZBUTbYHn/loox.1651514932607.js?shop=canada-grow-supplies-main.myshopify.com"></script>
3478 3479 3480 <!--begin-boost-pfs-js--> 3481
3481<script> 3482 /* Declare bcSfFilterConfig variable */ 3483 var boostPFSAppConfig = { 3484 api: { 3485 filterUrl: 'https://services.mybcapps.com/bc-sf-filter/filter', 3486 searchUrl: 'https://services.mybcapps.com/bc-sf-filter/search', 3487 suggestionUrl: 'https://services.mybcapps.com/bc-sf-filter/search/suggest', 3488 productsUrl: 'https://services.mybcapps.com/bc-sf-filter/search/products', 3489 analyticsUrl: 'https://lambda.mybcapps.com/e' 3490 }, 3491 shop: { 3492 name: 'Canada Grow Supplies', 3493 url: 'https://canadagrowsupplies.com', 3494 domain: 'canada-grow-supplies-main.myshopify.com', 3495 currency: 'CAD', 3496 money_format: "\u003cspan class=money\u003e\u0026#36; {{amount}}\u003c\/span\u003e", 3497 money_format_with_currency: "\u003cspan class=money\u003e\u0026#36; {{amount}} CAD\u003c\/span\u003e" 3498 }, 3499 general: { 3500 file_url: "//canadagrowsupplies.com/cdn/shop/files/?v=20150", 3501 asset_url: "//canadagrowsupplies.com/cdn/shop/t/43/assets/boost-pfs.js?v=20150", 3502 collection_id: 0, 3503 collection_handle: "", 3504 collection_product_count: 0, 3505 3506 3507 theme_id: 126057250859, 3508 collection_tags: null, 3509 current_tags: null, 3510 default_sort_by: "", 3511 swatch_extension: "png", 3512 no_image_url: "//canadagrowsupplies.com/cdn/shop/t/43/assets/boost-pfs-no-image.gif?v=45510820439899768411686760904", 3513 search_term: "", 3514 template: "blog",currencies: ["CAD"], 3515 current_currency:"CAD",published_locales: {"en":true,"fr":false}, 3516 current_locale:"en", 3517 isInitFilter:false}, 3518 3519 settings: {"general":{"productAndVariantAvailable":false,"availableAfterFiltering":false,"activeFilterScrollbar":true,"showFilterOptionCount":true,"showSingleOption":false,"showOutOfStockOption":false,"collapseOnPCByDefault":false,"collapseOnMobileByDefault":false,"keepToggleState":true,"showRefineBy":true,"capitalizeFilterOptionValues":true,"paginationType":"default","showLoading":false,"activeScrollToTop":false,"customSortingList":"relevance|best-selling|manual|title-ascending|title-descending|price-ascending|price-descending|created-ascending|created-descending","enableAjaxCart":true,"ajaxCartStyle":"slide","selectOptionInProductItem":false,"enableCollectionSearch":true},"search":{"enableSuggestion":true,"showSuggestionProductVendor":true,"showSuggestionProductPrice":true,"showSuggestionProductSalePrice":true,"showSuggestionProductSku":true,"showSuggestionProductImage":true,"enableFuzzy":true,"productAvailable":false,"suggestionBlocks":[{"type":"suggestions","label":"Popular suggestions","status":"active","number":5},{"type":"collections","label":"Collections","status":"active","number":3,"excludedValues":[]},{"type":"products","label":"Products","status":"active","number":6},{"type":"pages","label":"Blog & Pages","status":"disabled","number":3}],"searchBoxOnclick":{"recentSearch":{"label":"Recent searches","status":true,"number":"3"},"searchTermSuggestion":{"label":"Popular searches","status":false,"data":[]},"productSuggestion":{"label":"Trending products","status":false,"data":[]}},"suggestionNoResult":{"search_terms":{"label":"Popular searches","status":false,"data":[],"type":"based_on_data","backup":[]},"products":{"label":"Trending products","status":false,"data":[],"type":"based_on_data","backup":[]}},"suggestionStyle":"style2","suggestionStyle1ProductItemType":"list","suggestionStyle1ProductPosition":"none","suggestionStyle1ProductPerRow":"1","suggestionStyle2ProductItemType":"list","suggestionStyle2ProductPosition":"right","suggestionStyle2ProductPerRow":"2","suggestionStyle3ProductItemType":"list","suggestionStyle3ProductPosition":"right","suggestionStyle3ProductPerRow":"3","searchPanelBlocks":{"searchTermSuggestions":{"label":"Popular searches","searchTermList":[],"backup":[],"type":"based_on_data","active":false},"mostPopularProducts":{"label":"Trending products","productList":[],"backup":[],"active":false,"type":"based_on_data"},"searchEmptyResultMessages":{"label":"We are sorry! We couldn't find results for \"{{ terms }}\".{{ breakline }}But don't give up â check the spelling or try less specific search terms.","active":true},"products":{"label":"Products","pageSize":25,"active":true,"displayImage":true},"collections":{"label":"Collections","pageSize":25,"active":false,"displayImage":false,"displayDescription":false,"excludedValues":[]},"pages":{"label":"Pages","pageSize":25,"active":false,"displayImage":false,"displayExcerpt":false},"searchTips":{"label":"Search tips","active":false,"searchTips":"Please double-check your spelling.{{ breakline }}Use more generic search terms.{{ breakline }}Enter fewer keywords.{{ breakline }}Try searching by product type, brand, model number or product feature."}}},"backSettings":{"offSensitive":false}
3519,"actionlist":{"qvBtnBackgroundColor":"rgba(255||255||255||1)","qvBtnTextColor":"rgba(61||66||70||1)","qvBtnBorderColor":"rgba(255||255||255||1)","qvBtnHoverBackgroundColor":"rgba(61||66||70||1)","qvBtnHoverTextColor":"rgba(255||255||255||1)","qvBtnHoverBorderColor":"rgba(61||66||70||1)","atcBtnBackgroundColor":"rgba(0||0||0||1)","atcBtnTextColor":"rgba(255||255||255||1)","atcBtnBorderColor":"rgba(0||0||0||1)","atcBtnHoverBackgroundColor":"rgba(61||66||70||1)","atcBtnHoverTextColor":"rgba(255||255||255||1)","atcBtnHoverBorderColor":"rgba(61||66||70||1)","alStyle":"bc-al-style4","qvEnable":true,"atcEnable":true},"labelTranslations":{"en":{"refine":"Refine By","refineMobile":"Refine By","refineMobileCollapse":"Hide Filter","clear":"Clear","clearAll":"Clear All","viewMore":"View More","viewLess":"View Less","apply":"Apply","applyAll":"Apply All","close":"Close","back":"Back","showLimit":"Show","collectionAll":"All","under":"Under","above":"Above","ratingStar":"Star","ratingStars":"Stars","ratingUp":"& Up","showResult":"Show result","searchOptions":"Search Options","inCollectionSearch":"Search for products in this collection","loadPreviousPage":"Load Previous Page","listView":"List view","gridView":"Grid view","gridViewColumns":"Grid view - columns","loadMore":"Load more {{ amountProduct }} Products","loadMoreTotal":"{{ from }} - {{ to }} of {{ total }} Products","sortByOptions":{"relevance":"Relevance","best-selling":"Best selling","manual":"Manual","title-ascending":"Title ascending","title-descending":"Title descending","price-ascending":"Price ascending","price-descending":"Price descending","created-ascending":"Created ascending","created-descending":"Created descending"},"recommendation":{"homepage-561337":"Just dropped","homepage-310521":"Best Sellers","collectionpage-225787":"Just dropped","collectionpage-778856":"Most Popular Products","productpage-243620":"Recently viewed","productpage-715722":"Frequently Bought Together","cartpage-425856":"Still interested in this?","cartpage-171306":"Similar Products"},"search":{"generalTitle":"General Title (when no search term)","resultHeader":"Search results for \"{{ terms }}\"","resultNumber":"Showing {{ count }} results for \"{{ terms }}\"","seeAllProducts":"See all products","resultEmpty":"We are sorry! We couldn't find results for \"{{ terms }}\".{{ breakline }}But don't give up â check the spelling or try less specific search terms.","resultEmptyWithSuggestion":"Sorry, nothing matched \"{{ terms }}\". Check out these items instead?","searchTotalResult":"Showing {{ count }} result","searchTotalResults":"Showing {{ count }} results","searchPanelProduct":"Products","searchPanelCollection":"Collections","searchPanelPage":"Pages","searchTipsTitle":"Search tips","searchTipsContent":"Please double-check your spelling.{{ breakline }}Use more generic search terms.{{ breakline }}Enter fewer keywords.{{ breakline }}Try searching by product type, brand, model number or product feature."},"suggestion":{"viewAll":"View all {{ count }} products","didYouMean":"Did you mean: {{ terms }}?","searchBoxPlaceholder":"Search","suggestQuery":"Show {{ count }} results for {{ terms }}","instantSearchSuggestionsLabel":"Popular suggestions","instantSearchCollectionsLabel":"Collections","instantSearchProductsLabel":"Products","instantSearchPagesLabel":"Blog & Pages","searchBoxOnclickRecentSearchLabel":"Recent searches","searchBoxOnclickSearchTermLabel":"Popular searches","searchBoxOnclickProductsLabel":"Trending products","noSearchResultSearchTermLabel":"Popular searches","noSearchResultProductsLabel":"Trending products"},"error":{"noFilterResult":"Sorry, no products matched your selection","noSearchResult":"Sorry, no products matched the keyword","noProducts":"No products found in this collection","noSuggestionResult":"Sorry, nothing found for \"{{ terms }}\".","noSuggestionProducts":"Sorry, nothing found for \"{{ terms }}\"."},"action_list":{"qvBtnLabel":"Quick View","qvAddToCartBtnLabel":"Add To Cart","qvSoldOutLabel":"Sold Out","qvSaleLabel":"Sale","qvViewFullDetails":"View Full Details","qvQuantity":"Quantity","atcAvailableLabel":"Add to Cart","atcSelectOptionsLabel":"Select Options","atcSoldOutLabel":"Sold Out","atcMiniCartSubtotalLabel":"Subtotal","atcMiniCartCheckoutLabel":"Checkout","atcMiniCartShopingCartLabel":"Your Cart","atcMiniCartEmptyCartLabel":"Your Cart Is Currently Empty","atcMiniCartViewCartLabel":"View cart","atcAddingToCartBtnLabel":"Adding","atcAddedToCartBtnLabel":"Added!","atcMiniCartCountItemLabel":"item","atcMiniCartCountItemLabelPlural":"items"},"defaultTheme":{"toolbarViewAs":"View as","toolbarProduct":"Product","toolbarProducts":"Products","productItemSoldOut":"Sold out","productItemSale":"Sale","productItemFrom":"from"},"recentlyViewed":{"recentProductHeading":"Recently Viewed Products"},"mostPopular":{"popularProductsHeading":"Popular Products"}},"fr":{"refine":"Affiner par","refineMobile":"Affiner par","refineMobileCollapse":"Masquer le filtre","clear":"Effacer","clearAll":"Effacer tout","viewMore":"Afficher plus","viewLess":"Voir moins","apply":"Appliquer","applyAll":"Appliquer tout","close"
3519:"Fermer","back":"Arrière","showLimit":"Afficher","collectionAll":"Tous","under":"Sous","above":"Au-dessus de","ratingStar":"Ãtoile","ratingStars":"Ãtoiles","ratingUp":"& Haut","showResult":"Afficher les résultats","searchOptions":"Options de recherche","inCollectionSearch":"Rechercher des produits","loadPreviousPage":"Charger la page précédente","listView":"Vue de la liste","gridView":"Vue en grille","gridViewColumns":"Vue en grille - colonnes","loadMore":"Charger plus de {{ amountProduct }} Produits","loadMoreTotal":"{{ from }} - {{ to }} de {{ total }} Produits","sortByOptions":{"relevance":"Pertinence","best-selling":"Meilleures ventes","manual":"Manuel","title-ascending":"Titre ascendant","title-descending":"Titre descendant","price-ascending":"Prix croissant","price-descending":"Prix descendant","created-ascending":"Créé ascendant","created-descending":"Créé descendant"},"recommendation":{},"search":{"generalTitle":"Titre général (si aucun terme de recherche)","resultHeader":"Résultats de la recherche pour \"{{ terms }}\"","resultNumber":"Afficher {{ count }} résultats pour \"{{ terms }}\"","seeAllProducts":"Voir tous les produits","resultEmpty":"Désolé, rien ne correspond à \"{{ terms }}\". Découvrez d'autres articles dans notre magasin.","resultEmptyWithSuggestion":"Désolé, rien ne correspond à \"{{ terms }}\". Consultez ces articles à la place ?","searchTotalResult":"Afficher {{ count }} résultat","searchTotalResults":"Afficher {{ count }}} résultats","searchPanelProduct":"Produits","searchPanelCollection":"Collections","searchPanelPage":"Blogs et pages"},"suggestion":{"viewAll":"Voir tous {{ count }} les produits","didYouMean":"Vous voulez dire : {{ terms }}?","searchBoxPlaceholder":"Recherchez","suggestQuery":"Afficher {{ count }} résultats pour {{ terms }}","instantSearchSuggestionsLabel":"Propositions populaire","instantSearchCollectionsLabel":"Collections","instantSearchProductsLabel":"Produits","instantSearchPagesLabel":"Pages","searchBoxOnclickRecentSearchLabel":"Recherches récentes","searchBoxOnclickSearchTermLabel":"Recherches populaires","searchBoxOnclickProductsLabel":"Produits tendance","noSearchResultSearchTermLabel":"Recherches populaires","noSearchResultProductsLabel":"Produits tendance"},"error":{"noFilterResult":"Désolé, aucun produit ne correspond à votre sélection","noSearchResult":"Désolé, aucun produit ne correspond au mot-clé","noProducts":"Aucun produit trouvé dans cette collection","noSuggestionResult":"Désolé, aucun produit trouvé pour \"{{ terms }}\".","noSuggestionProducts":"Désolé, rien trouvé pour \"{{ terms }}\"."},"action_list":{"qvBtnLabel":"Vue rapide","qvAddToCartBtnLabel":"Ajouter au panier","qvSoldOutLabel":"Ãpuisé","qvSaleLabel":"Vente","qvViewFullDetails":"Voir tous les détails","qvQuantity":"Quantité","atcAvailableLabel":"Ajouter au panier","atcSelectOptionsLabel":"Sélectionnez les options","atcSoldOutLabel":"Ãpuisé","atcMiniCartSubtotalLabel":"Sous-total","atcMiniCartCheckoutLabel":"Commander","atcMiniCartShopingCartLabel":"Votre panier","atcMiniCartEmptyCartLabel":"Votre panier est actuellement vide","atcMiniCartViewCartLabel":"Voir le panier","atcAddingToCartBtnLabel":"Ajout de","atcAddedToCartBtnLabel":"Ajouté!","atcMiniCartCountItemLabel":"objet","atcMiniCartCountItemLabelPlural":"éléments"},"defaultTheme":{"toolbarViewAs":"Voir comme","toolbarProduct":"Produit","toolbarProducts":"Produits","productItemSoldOut":"Ãpuisé","productItemSale":"Vente","productItemFrom":"de"},"recentlyViewed":{"recentProductHeading":"Produits récemment consultés"},"mostPopular":{"popularProductsHeading":"Produits populaires"}}},"label":{"inCollectionSearch":"Search for products in this collection","sortByOptions":{"relevance":"Relevance","best-selling":"Best selling","manual":"Manual","title-ascending":"Title ascending","title-descending":"Title descending","price-ascending":"Price ascending","price-descending":"Price descending","created-ascending":"Created ascending","created-descending":"Created descending"},"recommendation":{"homepage-561337":"Just dropped","homepage-310521":"Best Sellers","collectionpage-225787":"Just dropped","collectionpage-778856":"Most Popular Products","productpage-243620":"Recently viewed","productpage-715722":"Frequently Bought Together","cartpage-425856":"Still interested in this?","cartpage-171306":"Similar Products"},"search":{"resultEmpty":"We are sorry! We couldn't find results for \"{{ terms }}\".{{ breakline }}But don't give up â check the spelling or try less specific search terms.","searchPanelProduct":"Products","searchPanelCollection":"Collections","searchPanelPage":"Pages","searchTipsTitle":"Search tips","searchTipsContent":"Please double-check your spelling.{{ breakline }}Use more generic search terms.{{ breakline }}Enter fewer keywords.{{ breakline }}Try searching by product type, brand, model number or product feature."},"suggestion":{"instantSearchSuggestionsLabel":"Popular suggestions","instantSearchCollectionsLabel":"Collections","instantSearchProductsLabel":"Products","instantSearchPagesLabel":"Blog & Pages","searchBoxOnclickRecentSearchLabel":"Recent searches","searchBoxOnclickSearchTermLabel":"Popular searches","searchBoxOnclickProductsLabel":"Trending products","noSearchResultSearchTermLabel":"Popular searches","noSearchResultProductsLabel":"Trending products"},"error":{},"action_list":{},"defaultTheme":{},"recentlyViewed":{},"mostPopular":{}},"currencyRoundingRules":{"aed":1,"aud":1,"chf":1,"czk":1,"dkk":1,"eur":0.95,"gbp":1,"hkd":1,"ils":1,"jpy":100,"krw":1,"myr":1,"nzd":1,"pln":1,"sek":1,"sgd":1,"usd":1}}, 3520 3521 swatch_settings: { 3522 3523 }, 3524 3525 }; 3526 function mergeObject(obj1, obj2){ 3527 var obj3 = {}; 3528 for (var attr in obj1) { obj3[attr] = obj1[attr]; } 3529 for (var attr in obj2) { obj3[attr] = obj2[attr]; } 3530 return obj3; 3531 } 3532 if (typeof boostPFSConfig == 'undefined') { 3533 boostPFSConfig = {}; 3534 } 3535 if (typeof boostPFSAppConfig != 'undefined') { 3536 boostPFSConfig = mergeObject(boostPFSConfig, boostPFSAppConfig); 3537 } 3538 if (typeof boostPFSThemeConfig != 'undefined') { 3539 boostPFSConfig = mergeObject(boostPFSConfig, boostPFSThemeConfig); 3540 } 3541</script>
3541 3542 3543<!-- Include Resources -->
3543<script defer src="//canadagrowsupplies.com/cdn/shop/t/43/assets/boost-pfs-core-instant-search.js?v=72334993480690396671686760905"></script>
3543 3544
3544<script defer src="//canadagrowsupplies.com/cdn/shop/t/43/assets/boost-pfs-instant-search.js?v=8827334419208220721686760899"></script>
3544<!-- Initialize App -->
3545<script defer src="//canadagrowsupplies.com/cdn/shop/t/43/assets/boost-pfs-init.js?v=8317161029896936481736841332"></script>
3545 3546 3547 3548 3549 <!-- Instant search no result JSON data --> 3550
3550<script type="application/json" id="boost-pfs-instant-search-products-not-found-json"> 3551 { 3552 "search_terms": [], 3553 "products": [] 3554 } 3555</script>
3555 3556 3557 3558 <!-- 3rd App Integration -->
3558<script defer src="//canadagrowsupplies.com/cdn/shop/t/43/assets/boost-pfs-analytics-custom.js?v=161314685702743820801736841333"></script>
3558 3559 <!--end-boost-pfs-js--> 3560<!-- langify-v2-scripts-begin --> 3561 3562
3563<script> 3564 var langify = langify || {}; 3565 3566 3567 /** 3568 * 3569 * 3570 * @class LyHelper 3571 */ 3572 class LyHelper { 3573 constructor() { 3574 return { 3575 ajax: function(params) { return LyHelper.ajax(params); }, 3576 isIE: function() { return LyHelper.isIE(); }, 3577 extractImageObject: function(val) { return LyHelper.extractImageObject(val); }, 3578 getCurrentLanguage: function() { return LyHelper.getCurrentLanguage(); }, 3579 getCookie: function(name) { return LyHelper.getCookie(name); }, 3580 setCookie: function(name, value, days) { return LyHelper.setCookie(name, value, days); }, 3581 getVersion: function() { return LyHelper.getVersion(); }, 3582 isOutOfViewport: function(elem) { return LyHelper.isOutOfViewport(elem); }, 3583 isDomainFeatureEnabled: function() { return LyHelper.isDomainFeatureEnabled(); }, 3584 getVal: function(str) { return LyHelper.getVal(str); }, 3585 inIframe: function() { return LyHelper.inIframe(); }, 3586 shopifyAPI: function() { return LyHelper.shopifyAPI(); }, 3587 loadScript: function(url, callback) { return LyHelper.loadScript(url, callback); }, 3588 localizationRedirect: function(type, code, additionalFields, additionalParams, domain) { return LyHelper.localizationRedirect(type, code, additionalFields, additionalParams, domain); }, 3589 changeCurrency: function(code) { return LyHelper.changeCurrency(code); }, 3590 log: function(title, data, type) { return LyHelper.log(title, data, type); }, 3591 } 3592 } 3593 static ajax(params) { 3594 var data = params.data; 3595 fetch(params.url, { 3596 method: params.method, 3597 headers: { 3598 'Content-Type': 'application/json', 3599 }, 3600 body: (data && params.method === 'POST') ? JSON.stringify(data) : null, 3601 }) 3602 .then(response => response.json()) 3603 .then(data => { 3604 params.success(data); 3605 }) 3606 .catch((error) => { 3607 console.error('Error:', error); 3608 }); 3609 } 3610 static isIE() { 3611 var ua = navigator.userAgent; 3612 var is_ie = ua.indexOf("MSIE ") > -1 || ua.indexOf("Trident/") > -1; 3613 return is_ie; 3614 } 3615 static extractImageObject(val) { 3616 if(!val || val == '') return false; 3617 var val = val; 3618 3619 // Handle src-sets 3620 if(val.search(/([0-9]+w?h?x?,)/gi) > -1) { 3621 val = val.split(/([0-9]+w?h?x?,)/gi)[0]; 3622 } 3623 3624 var hostBegin = val.indexOf('//') ? val.indexOf('//') : 0; 3625 var hostEnd = val.lastIndexOf('/') + 1; 3626 var host = val.substring(hostBegin, hostEnd); 3627 var afterHost = val.substring(hostEnd, val.length); 3628 3629 var url = val; 3630 var file = ''; 3631 var name = ''; 3632 var type = ''; 3633 afterHost = afterHost.substring(0, (afterHost.indexOf("#") == -1) ? afterHost.length : afterHost.indexOf("#")); 3634 afterHost = afterHost.substring(0, (afterHost.indexOf("?") == -1) ? afterHost.length : afterHost.indexOf("?")); 3635 name = afterHost.replace(/(_[0-9]+x[0-9]*|_{width}x|_{size})?(_crop_(top|center|bottom|left|right))?(@[0-9]*x)?(\.progressive)?\.(png\.jpg|jpe?g|png|gif|webp)/gi, ""); 3636 3637 if(afterHost.search(/(\.png\.jpg|\.jpg\.jpg)/gi) > -1) { 3638 type = afterHost.substring(afterHost.search(/(\.png\.jpg|\.jpg\.jpg)/gi)+1, afterHost.length); 3639 } else { 3640 type = afterHost.substring(afterHost.lastIndexOf('.')+1, afterHost.length); 3641 } 3642 3643 file = afterHost.replace(/(_[0-9]+x[0-9]*|_{width}x|_{size})?(_crop_(top|center|bottom|left|right))?(@[0-9]*x)?(\.progressive)?\.(png\.jpg|jpe?g|png|gif|webp)/gi, '.'+type); 3644 3645 return { 3646 host: host, 3647 name: name, 3648 type: type, 3649 file: file 3650 } 3651 } 3652 static getCurrentLanguage() { 3653 return window.langify.locale.iso_code; 3654 } 3655 static setLanguage(code) { 3656 3657 } 3658 static getCookie(name) { 3659 var v = document.cookie.match('(^|;) ?' + name + '=([^;]*)(;|$)'); 3660 if(v) return v[2]; 3661 else return null; 3662 } 3663 static setCookie(name, value, days) { 3664 var d = new Date; 3665 d.setTime(d.getTime() + 24*60*60*1000*days); 3666 document.cookie = name + "=" + value + ";path=/;expires=" + d.toGMTString(); 3667 } 3668 static getVersion() { 3669 return 2; 3670 } 3671 static isOutOfViewport (elem) { 3672 var bounding = elem.getBoundingClientRect(); 3673 var out = {}; 3674 out.top = bounding.top < 0; 3675 out.left = bounding.left < 0;
3676 out.bottom = Math.ceil(bounding.bottom) >= (window.innerHeight || document.documentElement.clientHeight); 3677 out.right = bounding.right > (window.innerWidth || document.documentElement.clientWidth); 3678 out.any = out.top || out.left || out.bottom || out.right; 3679 out.inViewport = bounding.x > 0 && bounding.y > 0; 3680 return out; 3681 } 3682 static isDomainFeatureEnabled() { 3683 return window.langify.locale.domain_feature_enabled; 3684 } 3685 static getVal(str) { 3686 var v = window.location.search.match(new RegExp('(?:[?&]'+str+'=)([^&]+)')); 3687 return v ? v[1] : null; 3688 } 3689 static inIframe() { 3690 try { 3691 return window.self !== window.top; 3692 } catch (e) { 3693 return true; 3694 } 3695 } 3696 static shopifyAPI() { 3697 var root_url = window.langify.locale.root_url != '/' ? window.langify.locale.root_url : ''; 3698 3699 return { 3700 attributeToString: function(attribute) { 3701 if((typeof attribute) !== 'string') { 3702 attribute += ''; 3703 if(attribute === 'undefined') {attribute = '';} 3704 } 3705 return attribute.trim(); 3706 }, 3707 getCart: function(callback) { 3708 LyHelper.ajax({ 3709 method: 'GET', 3710 url: root_url+'/cart.js', 3711 success: function (cart, textStatus) { 3712 if((typeof callback) === 'function') { 3713 callback(cart); 3714 } 3715 } 3716 }); 3717 }, 3718 updateCartNote: function(note, callback) { 3719 var params = { 3720 method: 'POST', 3721 url: root_url+'/cart/update.js', 3722 data: 'note=' + this.attributeToString(note), 3723 dataType: 'json', 3724 success: function(cart) {if((typeof callback) === 'function') {callback(cart);}}, 3725 error: this.onError 3726 }; 3727 LyHelper.ajax(params); 3728 }, 3729 updateCartAttributes: function(attributes, callback) { 3730 var params = { 3731 method: 'POST', 3732 url: root_url+'/cart/update.js', 3733 data: {"attributes": attributes}, 3734 dataType: 'json', 3735 success: function(cart) { 3736 if((typeof callback) === 'function') { 3737 callback(cart); 3738 } 3739 }, 3740 error: this.onError 3741 }; 3742 LyHelper.ajax(params); 3743 }, 3744 onError: function(XMLHttpRequest, textStatus) { 3745 3746 } 3747 } 3748 } 3749 static loadScript(url, callback) { 3750 var script = document.createElement('script'); 3751 script.type = 'text/javascript'; 3752 if(script.readyState) { 3753 script.onreadystatechange = function () { 3754 if(script.readyState == 'loaded' || script.readyState == 'complete') { 3755 script.onreadystatechange = null; 3756 callback(); 3757 } 3758 }; 3759 } else { 3760 script.onload = function () { 3761 callback(); 3762 }; 3763 } 3764 script.src = url; 3765 document.getElementsByTagName('head')[0].appendChild(script); 3766 } 3767 static localizationRedirect(type, code, additionalFields, additionalParams, domain) { 3768 if(type !== 'country_code' && type !== 'language_code') { 3769 return false; 3770 } 3771 if(!additionalParams) { 3772 var additionalParams = ''; 3773 } 3774 if(domain) { 3775 window.location.href = domain; 3776 return true; 3777 } 3778 var params = [ 3779 { 3780 name: type, 3781 value: code 3782 }, 3783 { 3784 name: 'return_to', 3785 value: window.location.pathname + window.location.search + additionalParams + window.location.hash 3786 }, 3787 { 3788 name: 'form_type', 3789 value: 'localization' 3790 }, 3791 { 3792 name: '_method', 3793 value: 'put' 3794 } 3795 ]; 3796 if(additionalFields) { 3797 for(var i=0; i<additionalFields.length; i++) { 3798 params.push(additionalFields[i]); 3799 } 3800 } 3801 const form = document.createElement('form'); 3802 form.method = 'POST'; 3803 form.action = '/localization'; 3804 params.forEach(function(param) { 3805 const field = document.createElement('input'); 3806 field.type = 'hidden'; 3807 field.name = param['name']; 3808 field.value = param['value']; 3809 form.appendChild(field); 3810 }); 3811 document.body.appendChild(form); 3812 form.submit(); 3813 } 3814 static changeCurrency(code) { 3815 const params = [ 3816 { 3817 name: 'currency_code', 3818 value: code 3819 }, 3820 { 3821 name: 'return_to', 3822 value: window.location.pathname + window.location.search + window.location.hash 3823 }, 3824 { 3825 name: 'form_type', 3826 value: 'localization' 3827 }, 3828 { 3829 name: '_method', 3830 value: 'put' 3831 } 3832 ]; 3833 const form = document.createElement('form'); 3834 form.method = 'POST'; 3835 form.action = '/localization';
3836 params.forEach(function(param) { 3837 const field = document.createElement('input'); 3838 field.type = 'hidden'; 3839 field.name = param['name']; 3840 field.value = param['value']; 3841 form.appendChild(field); 3842 }); 3843 document.body.appendChild(form); 3844 form.submit(); 3845 } 3846 static log(title, data, type) { 3847 if(langify.settings.debug) { 3848 if(!data) { 3849 var data = ''; 3850 } 3851 3852 var css = 'color: green; font-weight: bold;'; 3853 if(type === 'error') { 3854 css = 'color: red; font-weight: bold;'; 3855 } 3856 3857 console.log(`%c ${title}: \n`, css, data); 3858 } 3859 } 3860 }; 3861 3862 3863 /** 3864 * 3865 * 3866 * @class TranslationObserver 3867 */ 3868 class TranslationObserver { 3869 constructor() { 3870 LyHelper.log('TranslationObserver instantiation') 3871 } 3872 3873 init() { 3874 if(langify.settings.observe && !LyHelper.isIE()) { 3875 var langifyObserver = this.langifyObserverCore(); 3876 langifyObserver.init(); 3877 3878 // HOTFIX: translation observer sometimes refuses to trigger on page load_ 3879 langifyObserver.triggerCustomContents(); 3880 3881 langify.api = { 3882 observer: { 3883 start: langifyObserver.init, 3884 stop: langifyObserver.stopObserver, 3885 trigger: langifyObserver.triggerCustomContents, 3886 translateLink: langifyObserver.translateLink, 3887 translateTextNode: langifyObserver.translateTextNode, 3888 translateNodeAttrs: langifyObserver.translateNodeAttrs, 3889 translateImage: langifyObserver.translateImage, 3890 translateCssImage: langifyObserver.translateCssImage 3891 } 3892 }; 3893 } 3894 3895 return this; 3896 } 3897 3898 langifyObserverCore() { 3899 var observedNodes = []; 3900 var intersectionObs = null; 3901 var mutationCount = 0; 3902 var mutationObs = null; 3903 var mutationObsConfig = { 3904 characterData: true, 3905 characterDataOldValue: true, 3906 attributes: true, 3907 attributeOldValue: true, 3908 childList: true, 3909 subtree: true, 3910 }; 3911 var customContents_html = {}; 3912 var customContents_text = {}; 3913 var customContents_attr = {}; 3914 3915 function init() { 3916 if(langify.settings.observe) { 3917 spreadCustomContents(); 3918 if (window.MutationObserver) { 3919 if (langify.settings.lazyload && window.IntersectionObserver) { 3920 startIntersectionObserver(); 3921 } else { 3922 startMutationObserver(null); 3923 } 3924 } else { 3925 startMutationEvents(); 3926 } 3927 } 3928 } 3929 3930 3931 // Intersection Observer 3932 function startIntersectionObserver() { 3933 intersectionObs = new IntersectionObserver(callbackIntersectionChange); 3934 var elementNodes = document.getElementsByClassName('shopify-section'); 3935 Array.prototype.slice.call(elementNodes).forEach(function(node) { 3936 intersectionObs.observe(node); 3937 }); 3938 } 3939 3940 function callbackIntersectionChange(intersections) { 3941 intersections.forEach(function(intersection) { 3942 var target = intersection.target; 3943 var targetIsIntersecting = Boolean(target.getAttribute('ly-is-intersecting') === "true" ? true : false); 3944 3945 if(typeof targetIsIntersecting == 'undefined' || targetIsIntersecting == null) { 3946 target.setAttribute('ly-is-intersecting', intersection.isIntersecting); 3947 targetIsIntersecting = intersection.isIntersecting; 3948 } 3949 3950 // On Screen 3951 if(targetIsIntersecting == false && intersection.isIntersecting == true) { 3952 if(!target.getAttribute('ly-is-observing')) { 3953 startMutationObserver(target); 3954 intersectionObs.unobserve(target); 3955 3956 // As the mutation observer didn't see the "add" of the elememts, trigger the initial translation manually 3957 var elementNodes = getNodesUnder(target, 'SHOW_ELEMENT'); 3958 var textNodes = getNodesUnder(target, 'SHOW_TEXT'); 3959 var nodes = elementNodes.concat(textNodes);
3960 nodes.forEach(function(node) { 3961 translate(node, 'mutation -> childList'); 3962 }); 3963 } 3964 } 3965 // Off Screen 3966 //else if(targetIsIntersecting == true && intersection.isIntersecting == false) { 3967 // stopMutationObserver(target); 3968 //} 3969 target.setAttribute('ly-is-intersecting', intersection.isIntersecting); 3970 }); 3971 } 3972 3973 3974 // Mutation Observer 3975 function startMutationObserver(observerTarget) { 3976 if (!observerTarget) { 3977 var target = document.documentElement || document.body; // main window 3978 } else { 3979 if (observerTarget.nodeName === 'IFRAME') { 3980 try { var target = observerTarget.contentDocument || observerTarget.contentWindow.document; } 3981 catch { return false; } 3982 } else { 3983 var target = observerTarget; 3984 } 3985 } 3986 mutationObs = new MutationObserver(callbackDomChange); 3987 mutationObs.observe(target, mutationObsConfig); 3988 observedNodes.push(target); 3989 try { target.setAttribute('ly-is-observing', 'true'); } catch(e) {} 3990 } 3991 3992 function stopMutationObserver(target) { 3993 if(observedNodes.indexOf(target) > -1) { 3994 observedNodes.splice(observedNodes.indexOf(target), 1); 3995 } 3996 var mutations = mutationObs.takeRecords(); 3997 mutationObs.disconnect(); 3998 observedNodes.forEach(node => { 3999 mutationObs.observe(node, mutationObsConfig); 4000 }); 4001 try { target.removeAttribute('ly-is-observing'); } catch(e) {} 4002 } 4003 4004 4005 function callbackDomChange(mutations, mutationObs) { 4006 for (var i = 0, length = mutations.length; i < length; i++) { 4007 var mutation = mutations[i]; 4008 var target = mutation.target; 4009 4010 // Links-Hook 4011 if (mutation.type === 'attributes' && (mutation.attributeName === 'href' || mutation.attributeName === 'action')) { 4012 var target = mutation.target; 4013 translateLink(target.getAttribute(mutation.attributeName), target); 4014 } 4015 // Images-Hook 4016 else if (mutation.type === 'attributes' && (mutation.attributeName === 'src' || mutation.attributeName === 'data-src' || mutation.attributeName === 'srcset' || mutation.attributeName === 'data-srcset')) { 4017 translateImage(target, mutation.attributeName); 4018 } 4019 else if (mutation.type === 'attributes' && mutation.attributeName === 'style') { 4020 translateCssImage(target); 4021 } 4022 // Subtree Events 4023 else if (mutation.type === 'childList') { 4024 // Added Nodes 4025 if(mutation.addedNodes.length > 0) { 4026 var elementNodes = getNodesUnder(mutation.target, 'SHOW_ELEMENT'); 4027 var textNodes = getNodesUnder(mutation.target, 'SHOW_TEXT'); 4028 var nodes = elementNodes.concat(textNodes); 4029 nodes.forEach(function(node) { 4030 translate(node, 'mutation -> childList'); 4031 }); 4032 } 4033 } 4034 // CharacterData Events 4035 else if (mutation.type === 'characterData') { 4036 var target = mutation.target; 4037 translate(target, 'mutation -> characterData'); 4038 } 4039 } 4040 } 4041 4042 4043 function translate(node, info) { 4044 if((node.nodeType === 1 && node.hasAttribute('data-ly-locked')) || (node.nodeType === 3 && node.parentNode && node.parentNode.hasAttribute('data-ly-locked'))) { 4045 return; 4046 } 4047 // CC-Hook 4048 if (node.nodeName !== 'SCRIPT' && node.nodeName !== 'STYLE') { 4049 if (node.nodeType === 3) { 4050 translateTextNode(node, info); 4051 } 4052 translateNodeAttrs(node); 4053 } 4054 // Links-Hook 4055 if (node.nodeName === 'A' || node.nodeName === 'FORM') { 4056 if(node.hasAttribute('href')) var attrName = 'href'; 4057 else var attrName = 'action'; 4058 var url = node.getAttribute(attrName); 4059 translateLink(url, node); 4060 } 4061 // Images-Hook 4062 if (node.nodeName === 'IMG' || node.nodeName === 'SOURCE') { 4063 translateImage(node, ['src', 'data-src', 'srcset', 'data-srcset']); 4064 } 4065 if (node.attributes && node.getAttribute('style')) { 4066 translateCssImage(node); 4067 } 4068 // Iframe Observation 4069 if (node.nodeName === 'IFRAME') { 4070 // Todo: handle srcdoc iframe content observing 4071 if (node.getAttribute('ly-is-observing') == null && node.getAttribute('src') == null && !node.hasAttribute('srcdoc')) { 4072 node.setAttribute('ly-is-observing', 'true'); 4073 startMutationObserver(node); 4074 } 4075 } 4076 } 4077 4078 function translateNodeAttrs(node) { 4079 if (node.attributes && node.getAttribute('placeholder')) { 4080 var src = node.getAttribute('placeholder').trim().replace(/(\r\n|\n|\r)/gim,"").replace(/\s+/g," ").toLowerCase(); 4081 if(customContents_text[src] && node.getAttribute('placeholder') !== customContents_text[src]) { 4082 node.setAttribute('placeholder', customContents_text[src]); 4083 } 4084 } 4085 } 4086 4087 4088 function translateTextNode(node, info) { 4089 if(langify.settings.observeCustomContents === false || !node.textContent || node.textContent.trim().length === 0) { 4090 return; 4091 } 4092 var oldSrc = node.textContent.trim().replace(/(\r\n|\n|\r)/gim,"").replace(/\s+/g," ").toLowerCase(); 4093 var src = node.textContent.trim().replace(/(\r\n|\n|\r)/gim," ").replace(/\s+/g," ").toLowerCase(); 4094 if(customContents_text[oldSrc]) { 4095 src = oldSrc; 4096 } 4097 if(customContents_text[src] && node.textContent !== customContents_text[src]) { 4098 var newContent = node.textContent.replace(node.textContent.trim(), customContents_text[src]); 4099 if (newContent != node.textContent) { 4100 if(!node.parentNode.hasAttribute('data-ly-mutation-count') || parseInt(node.parentNode.getAttribute('data-ly-mutation-count')) < langify.settings.maxMutations) { 4101 var count = node.parentNode.hasAttribute('data-ly-mutation-count') ? parseInt(node.parentNode.getAttribute('data-ly-mutation-count')) : 0; 4102 node.parentNode.setAttribute('data-ly-mutation-count', count+1); 4103 node.textContent = newContent; 4104 4105 mutationCount = mutationCount + 1; 4106 LyHelper.log('REPLACED (TEXT)', { 4107 oldValue: src, 4108 newValue: customContents_text[src], 4109 mutationCount, 4110 }, 'success' 4111 ); 4112 4113 var event = new CustomEvent('langify.observer.aftertranslatetext', { 4114 bubbles: true, 4115 detail: { 4116 target: node, 4117 original: src, 4118 translation: customContents_text[src] 4119 } 4120 }); 4121 node.dispatchEvent(event); 4122 } 4123 } 4124 } 4125 } 4126 4127 function translateLink(url, node, force) { 4128 if(langify.settings.observeLinks === false || isLocalizationForm(node) || node.hasAttribute('data-ly-locked') || !url || (url.indexOf('mailto:') !== -1 || url.indexOf('javascript:') !== -1 || url.indexOf('tel:') !== -1 || url.indexOf('file:') !== -1 || url.indexOf('ftp:') !== -1 || url.indexOf('sms:') !== -1 || url.indexOf('market:') !== -1 || url.indexOf('fax:') !== -1 || url.indexOf('callto:') !== -1 || url.indexOf('ts3server:') !== -1)) { 4129 return; 4130 } 4131 var isLocalized = (
4132 url.indexOf('/'+ langify.locale.iso_code +'/') === 0 || url === '/'+ langify.locale.iso_code || 4133 url.indexOf('/'+ langify.locale.iso_code.toLowerCase() +'/') === 0 || url === '/'+ langify.locale.iso_code.toLowerCase() || 4134 url.indexOf('/'+ langify.locale.iso_code.toLowerCase().substring(0,2) +'/') === 0 || url === '/'+ langify.locale.iso_code.toLowerCase().substring(0,2) || 4135 url.indexOf(langify.locale.root_url + '/') === 0 || url === langify.locale.root_url || 4136 url.indexOf(langify.locale.shop_url + langify.locale.root_url) === 0 || url === langify.locale.shop_url + langify.locale.root_url 4137 ); 4138 var cleanUrl = url.replace(langify.locale.shop_url, ''); 4139 var re = new RegExp(`\/\\b${langify.locale.iso_code.replace('-', '\-')}\\b\/`, 'gi'); 4140 var link = cleanUrl.replace(re, '/'); 4141 var isUrlAbsolute = (link.indexOf('://') > 0 || link.indexOf('//') === 0); 4142 var blacklist = ['#', '/'+ langify.locale.iso_code +'#'].concat(langify.settings.linksBlacklist); 4143 var isUrlBlacklisted = blacklist.find(x => url.indexOf(x) === 0); 4144 if(!isLocalized && !isUrlAbsolute && !isUrlBlacklisted && langify.locale.root_url != '/' || force) { 4145 if(node.hasAttribute('href')) var attrName = 'href'; else var attrName = 'action'; 4146 if(link === '/' || link == langify.locale.root_url) link = ''; 4147 var newLink = langify.locale.root_url + link; 4148 var timeStamp = Math.floor(Date.now()); 4149 if(!node.hasAttribute('data-ly-processed') || timeStamp > parseInt(node.getAttribute('data-ly-processed')) + langify.settings.timeout) { 4150 node.setAttribute('data-ly-processed', timeStamp); 4151 node.setAttribute(attrName, newLink); 4152 if(node.hasAttribute('data-'+attrName)) node.setAttribute('data-'+attrName, newLink); 4153 4154 mutationCount = mutationCount + 1; 4155 LyHelper.log('REPLACED (LINK)', { 4156 attrName, 4157 oldValue: url, 4158 newValue: newLink, 4159 mutationCount, 4160 }, 'success' 4161 ); 4162 4163 var event = new CustomEvent('langify.observer.aftertranslatelink', { 4164 bubbles: true, 4165 detail: { 4166 target: node, 4167 attribute: attrName, 4168 original: url, 4169 translation: newLink 4170 } 4171 }); 4172 node.dispatchEvent(event); 4173 } 4174 } 4175 } 4176 4177 function translateImage(node, attr) { 4178 if(langify.settings.observeImages === false || node.hasAttribute('data-ly-locked') || Object.keys(customContents_image).length === 0) { 4179 return 4180 } 4181 var attrs = []; 4182 if(typeof attr === 'string') attrs.push(attr); 4183 else if(typeof attr === 'object') attrs = attr; 4184 var timeStamp = Math.floor(Date.now()); 4185 if(!node.hasAttribute('data-ly-processed') || timeStamp > parseInt(node.getAttribute('data-ly-processed')) + langify.settings.timeout) { 4186 node.setAttribute('data-ly-processed', timeStamp); 4187 attrs.forEach(function(attr) { 4188 if(node.hasAttribute(attr)) { 4189 var imgObject = LyHelper.extractImageObject(node.getAttribute(attr)); 4190 var imgKey = imgObject ? imgObject.file.toLowerCase() : ''; 4191 4192 if(customContents_image[imgKey]) { 4193 4194 // Replace 4195 var oldValue = node.getAttribute(attr); 4196 var translation = node.getAttribute(attr); 4197 translation = translation.replace(new RegExp(imgObject.host, 'g'), customContents_image[imgKey].host); 4198 translation = translation.replace(new RegExp(imgObject.name, 'g'), customContents_image[imgKey].name); 4199 translation = translation.replace(new RegExp(imgObject.type, 'g'), customContents_image[imgKey].type); 4200 4201 // China Hook 4202 if(node.getAttribute(attr).indexOf('cdn.shopifycdn.net') >= 0) { 4203 translation = translation.replace(new RegExp('cdn.shopify.com', 'g'), 'cdn.shopifycdn.net'); 4204 } 4205 4206 if(node.getAttribute(attr) != translation) { 4207 node.setAttribute(attr, translation); 4208 4209 mutationCount = mutationCount + 1; 4210 LyHelper.log('REPLACED (IMAGE)', { 4211 attrName: attr, 4212 oldValue: oldValue, 4213 newValue: translation, 4214 mutationCount, 4215 }, 'success'); 4216 4217 var event = new CustomEvent('langify.observer.aftertranslateimage', { 4218 bubbles: true, 4219 detail: { 4220 target: node, 4221 attribute: attr, 4222 original: oldValue, 4223 translation: translation 4224 } 4225 }); 4226 node.dispatchEvent(event); 4227 } 4228 } 4229 } 4230 }); 4231 } 4232 } 4233 4234 function translateCssImage(node) { 4235 if(langify.settings.observeImages === false || node.hasAttribute('data-ly-locked') || Object.keys(customContents_image).length === 0 || !node.getAttribute('style')) { 4236 return 4237 } 4238 4239 var imgMatches = node.getAttribute('style').match(/url\(("|')?(.*)("|')?\)/gi); 4240 if(imgMatches !== null) { 4241 var imgSource = imgMatches[0].replace(/url\(("|')?|("|')?\)/, ''); 4242 var imgObject = LyHelper.extractImageObject(imgSource); 4243 var imgKey = imgObject ? imgObject.file.toLowerCase() : ''; 4244 var attr = 'style'; 4245 4246 if(customContents_image[imgKey]) { 4247 4248 // Replace 4249 var translation = node.getAttribute(attr); 4250 translation = translation.replace(new RegExp(imgObject.host, 'g'), customContents_image[imgKey].host); 4251 translation = translation.replace(new RegExp(imgObject.name, 'g'), customContents_image[imgKey].name); 4252 translation = translation.replace(new RegExp(imgObject.type, 'g'), customContents_image[imgKey].type); 4253 4254 // China Hook 4255 if(node.getAttribute(attr).indexOf('cdn.shopifycdn.net') >= 0) { 4256 translation = translation.replace(new RegExp('cdn.shopify.com', 'g'), 'cdn.shopifycdn.net'); 4257 } 4258 4259 if(node.getAttribute(attr) != translation) { 4260 var timeStamp = Math.floor(Date.now()); 4261 if(!node.hasAttribute('data-ly-processed') || timeStamp > parseInt(node.getAttribute('data-ly-processed')) + langify.settings.timeout) { 4262 node.setAttribute('data-ly-processed', timeStamp); 4263 node.setAttribute(attr, translation); 4264 mutationCount = mutationCount + 1; 4265 } 4266 } 4267 } 4268 } 4269 } 4270 4271 function findAndLocalizeLinks(target, parent) { 4272 if(target.parentNode && parent) var allLinks = target.parentElement.querySelectorAll('[href],[action]'); 4273 else var allLinks = target.querySelectorAll('[href],[action]'); 4274 allLinks.forEach(link => { 4275 if(link.hasAttribute('href')) var attrName = 'href'; else var attrName = 'action'; 4276 var url = link.getAttribute(attrName); 4277 translateLink(url, link); 4278 }); 4279 } 4280 4281 function isLocalizationForm(node) { 4282 if(node.querySelector('input[name="form_type"][value="localization"]')){ 4283 return true; 4284 } 4285 return false;
4286 } 4287 4288 function getNodesUnder(el, show){ 4289 var n, a=[], walk=document.createTreeWalker(el, NodeFilter[show] , null, false); 4290 while(n=walk.nextNode()) a.push(n); 4291 return a; 4292 } 4293 4294 function spreadCustomContents() { 4295 var getFileName = function(url) { 4296 if(!url || url == '') return; 4297 url = url.substring(0, (url.indexOf("#") == -1) ? url.length : url.indexOf("#")); 4298 url = url.substring(0, (url.indexOf("?") == -1) ? url.length : url.indexOf("?")); 4299 url = url.substring(url.lastIndexOf("/") + 1, url.length); 4300 url = url.replace(/(_[0-9]+x[0-9]*|_{width}x)?(_crop_(top|center|bottom|left|right))?(@[0-9]*x)?(\.progressive)?\.(jpe?g|png|gif|webp)/gi, ""); 4301 return '/' + url; 4302 } 4303 Object.entries(customContents).forEach(function(entry) { 4304 //if(/<\/?[a-z][\s\S]*>/i.test(entry[0])) customContents_html[entry[0]] = entry[1]; 4305 //else if(/(http(s?):)?([/|.|\w|\s|-])*\.(?:jpe?g|gif|png)/.test(entry[0])) customContents_image[getFileName(entry[0])] = getFileName(entry[1]); 4306 if(/(http(s?):)?([/|.|\w|\s|-])*\.(?:jpe?g|gif|png|webp)/.test(entry[0])) customContents_image[LyHelper.extractImageObject(entry[0]).file] = LyHelper.extractImageObject(entry[1]); 4307 else customContents_text[entry[0]] = entry[1]; 4308 }); 4309 LyHelper.log('CUSTOM CONTENTS:', {customContents, customContents_text, customContents_image}, 'info') 4310 } 4311 4312 // Polyfill for old browsers 4313 function startMutationEvents() { 4314 var target = document.querySelector('body'); 4315 target.addEventListener("DOMAttrModified", function (event) { 4316 if(event.attrName === 'href' || event.attrName === 'action') { 4317 if(event.prevValue != event.newValue) { 4318 translateLink(event.newValue, event.target); 4319 } 4320 } 4321 }, false); 4322 target.addEventListener("DOMSubtreeModified", function (event) { 4323 //findAndLocalizeLinks(event.target, false); 4324 //matchCustomContent(event.target); 4325 }, false); 4326 } 4327 4328 function triggerCustomContents() { 4329 var rootnode = document.getElementsByTagName('body')[0] 4330 var walker = document.createTreeWalker(rootnode, NodeFilter.SHOW_ALL, null, false) 4331 4332 while (walker.nextNode()) { 4333 //LyHelper.log(walker.currentNode.tagName) 4334 translate(walker.currentNode, null); 4335 } 4336 } 4337 4338 function stopObserver() { 4339 mutationObs.takeRecords(); 4340 mutationObs.disconnect(); 4341 } 4342 4343 //init(); 4344 return { 4345 init: init, 4346 triggerCustomContents: triggerCustomContents, 4347 stopObserver: stopObserver, 4348 translateLink: translateLink, 4349 translateTextNode: translateTextNode, 4350 translateNodeAttrs: translateNodeAttrs, 4351 translateImage: translateImage, 4352 translateCssImage: translateCssImage 4353 } 4354 }; 4355 } 4356 4357 4358 /** 4359 * 4360 * 4361 * @class Switcher 4362 */ 4363 class Switcher { 4364 constructor(switcherSettings) { 4365 LyHelper.log('Switcher instantiation'); 4366 4367 this.lyForceOff = location.search.split('ly-force-off=')[1]; 4368 this.switcherElements = Array.prototype.slice.call(document.getElementsByClassName('ly-switcher-wrapper')); 4369 } 4370 4371 init() { 4372 4373 // Initial cart.attributes update 4374 LyHelper.shopifyAPI().getCart(function (cart) { 4375 var currentLanguage = langify.locale.iso_code; 4376 if(!cart.attributes.language || cart.attributes.language != currentLanguage) { 4377 LyHelper.shopifyAPI().updateCartAttributes({"language": currentLanguage}, function(data){}); 4378 } 4379 }); 4380 4381 if(langify.locale.languages.length === 1) { 4382 console.info(`%c LANGIFY INFO:\n`, 'font-weight: bold;', 'The language switcher is hidden! This can have one of the following reasons: \n * All additional languages are disabled in the "Langify -> Dashboard -> Languages" section. \n * If you are using different domains for your additional languages, ensure that "Cross Domain Links" are enabled inside the "Langify -> Dashboard -> Switcher Configurator -> Domains" section.'); 4383 return false;
4384 } 4385 4386 this.setCustomPosition(); 4387 this.initCustomDropdown(); 4388 this.bindCountrySwitchers(); 4389 this.bindCurrencySwitchers(); 4390 this.bindLanguageSwitchers(); 4391 4392 var event = new CustomEvent('langify.switcher.initialized', { 4393 bubbles: true, 4394 detail: {} 4395 }); 4396 } 4397 4398 initCustomDropdown() { 4399 // Custom Dropdown 4400 var root = this; 4401 var switcher = document.getElementsByClassName('ly-custom-dropdown-switcher'); 4402 for(var a = 0; a < switcher.length; a++) { 4403 switcher[a].classList.toggle('ly-is-open'); 4404 var isOut = LyHelper.isOutOfViewport(switcher[a]); 4405 if(isOut.bottom && isOut.inViewport) { 4406 switcher[a].classList.add('ly-is-dropup'); 4407 var arrows = switcher[a].querySelectorAll('.ly-arrow'); 4408 for(var b = 0; b < arrows.length; b++) { 4409 arrows[b].classList.add('ly-arrow-up'); 4410 } 4411 } 4412 switcher[a].classList.toggle('ly-is-open'); 4413 switcher[a].onclick = function(event) { 4414 root.toggleSwitcherOpen(this); 4415 } 4416 } 4417 4418 document.addEventListener('click', function(event) { 4419 if(!event.target.closest('.ly-custom-dropdown-switcher')) { 4420 var openSwitchers = document.querySelectorAll('.ly-custom-dropdown-switcher.ly-is-open') 4421 for(var i = 0; i < openSwitchers.length; i++) { 4422 openSwitchers[i].classList.remove('ly-is-open'); 4423 } 4424 } 4425 }); 4426 } 4427 4428 bindLanguageSwitchers() { 4429 var root = this; 4430 var links = document.getElementsByClassName('ly-languages-switcher-link'); 4431 for(var l = 0; l < links.length; l++) { 4432 4433 links[l].addEventListener('click', function(event) { 4434 event.preventDefault(); 4435 if(LyHelper.isDomainFeatureEnabled() && this.getAttribute('href') !== '#' && !this.getAttribute('data-country-code')) { 4436 var domain = this.getAttribute('href'); 4437 } 4438 LyHelper.setCookie('ly-lang-selected', this.getAttribute('data-language-code'), 365); 4439 LyHelper.localizationRedirect('language_code', this.getAttribute('data-language-code'), root._dataAttrToAdditionalFields(this), null, domain); 4440 }); 4441 } 4442 4443 // Native select event handling 4444 var nativeLangifySelects = document.querySelectorAll('select.ly-languages-switcher'); 4445 for(var i = 0; i < nativeLangifySelects.length; i++) { 4446 nativeLangifySelects[i].onchange = function() { 4447 event.preventDefault(); 4448 if(LyHelper.isDomainFeatureEnabled() && this[this.selectedIndex].getAttribute('data-domain') !== '#' && this[this.selectedIndex].getAttribute('data-country-code')) { 4449 var domain = this[this.selectedIndex].getAttribute('data-domain'); 4450 } 4451 LyHelper.setCookie('ly-lang-selected', this[this.selectedIndex].getAttribute('data-language-code'), 365); 4452 LyHelper.localizationRedirect('language_code', this[this.selectedIndex].getAttribute('data-language-code'), root._dataAttrToAdditionalFields(this), null, domain); 4453 }; 4454 } 4455 } 4456 4457 bindCountrySwitchers() { 4458 var countrySelectSwitcher = document.querySelectorAll('select.ly-country-switcher'); 4459 var countryCustomSwitcher = document.querySelectorAll('div.ly-country-switcher a'); 4460 for(var i=0; i<countryCustomSwitcher.length; i++) { 4461 countryCustomSwitcher[i].addEventListener('click', function(e) { 4462 LyHelper.localizationRedirect('country_code', this.getAttribute('data-country-code')); 4463 }); 4464 } 4465 for(var a=0; a<countrySelectSwitcher.length; a++) { 4466 countrySelectSwitcher[a].addEventListener('change', function(){ 4467 LyHelper.localizationRedirect('country_code', this[this.selectedIndex].getAttribute('data-country-code')); 4468 }); 4469 } 4470 } 4471 4472 bindCurrencySwitchers() { 4473 var currencySelectSwitcher = document.querySelectorAll('select.ly-currency-switcher'); 4474 var currencyCustomSwitcher = document.querySelectorAll('div.ly-currency-switcher a'); 4475 for(var i=0; i<currencyCustomSwitcher.length; i++) { 4476 currencyCustomSwitcher[i].addEventListener('click', function(e) { 4477 LyHelper.changeCurrency(this.getAttribute('data-currency-code')); 4478 }); 4479 } 4480 for(var a=0; a<currencySelectSwitcher.length; a++) { 4481 currencySelectSwitcher[a].addEventListener('change', function(){ 4482 LyHelper.changeCurrency(this[this.selectedIndex].getAttribute('data-currency-code')); 4483 }); 4484 } 4485 } 4486 4487 setCustomPosition() { 4488 for(var i = 0; i < this.switcherElements.length; i++) { 4489 if(this.lyForceOff !== 'true') { 4490 if(langify.locale.languages.length <= 1) { 4491 this.switcherElements[i].querySelector('.ly-languages-switcher').classList.add('ly-hide'); 4492 } 4493 this.switcherElements[i].classList.remove('ly-hide'); 4494 } 4495 if(this.switcherElements[i].classList.contains('ly-custom') && (document.getElementById('ly-custom-'+this.switcherElements[i].getAttribute('data-breakpoint')) || document.getElementsByClassName('ly-custom-'+this.switcherElements[i].getAttribute('data-breakpoint')).length )) { 4496 var targets = Array.from(document.getElementsByClassName('ly-custom-'+this.switcherElements[i].getAttribute('data-breakpoint'))); 4497 var target = document.getElementById('ly-custom-'+this.switcherElements[i].getAttribute('data-breakpoint')); 4498 if(target) targets.push(target); 4499 for(var c = 0; c < targets.length; c++) { 4500 var clone = this.switcherElements[i].cloneNode(true); 4501 this.switcherElements[i].remove(); 4502 targets[c].innerHTML = clone.outerHTML; 4503 } 4504 this.switcherElements[i].classList.add('ly-hide'); 4505 } 4506 } 4507 } 4508 4509 toggleSwitcherOpen(e) { 4510 var target = e; 4511 if(!target.classList.contains('ly-is-open')) { 4512 var openSwitchers = document.querySelectorAll('.ly-custom-dropdown-switcher.ly-is-open') 4513 for(var i = 0; i < openSwitchers.length; i++) { 4514 openSwitchers[i].classList.remove('ly-is-open'); 4515 } 4516 4517 target.getElementsByClassName('ly-custom-dropdown-current')[0].setAttribute('aria-expanded', 'true'); 4518 } else { 4519 target.getElementsByClassName('ly-custom-dropdown-current')[0].setAttribute('aria-expanded', 'false'); 4520 } 4521 target.classList.toggle('ly-is-open'); 4522 var isOut = LyHelper.isOutOfViewport(target); 4523 if(isOut.bottom) { 4524 target.classList.add('ly-is-dropup'); 4525 } 4526 } 4527 4528 togglePopupOpen(e) { 4529 e.closest('.ly-popup-switcher').classList.toggle('ly-is-open'); 4530 } 4531 4532 _getCountryCodeFromHreflang(language_code) { 4533 var hreflangTags = document.querySelectorAll('link[hreflang]'); 4534 var languageDomains = {}; 4535 var countryCode = false;
4536 for(var i = 0; i < hreflangTags.length; i++) { 4537 if(hreflangTags[i].getAttribute('hreflang').indexOf(language_code) === 0) { 4538 if(!languageDomains[hreflangTags[i].getAttribute('href')]) { 4539 languageDomains[hreflangTags[i].getAttribute('href')] = hreflangTags[i]; 4540 } 4541 } 4542 } 4543 if(Object.keys(languageDomains).length > 0) { 4544 countryCode = Object.values(languageDomains)[0].getAttribute('hreflang'); 4545 countryCode = countryCode.split('-'); 4546 if(countryCode[1]) { 4547 countryCode = countryCode[1] 4548 } else { 4549 4550 } 4551 } 4552 return countryCode; 4553 } 4554 4555 _dataAttrToAdditionalFields(elem) { 4556 var additionalFields = []; 4557 if(elem.hasAttribute('data-country-code')) { 4558 additionalFields.push({ 4559 name: 'country_code', 4560 value: elem.getAttribute('data-country-code') 4561 }); 4562 } 4563 if(elem.hasAttribute('data-currency-code')) { 4564 additionalFields.push({ 4565 name: 'currency_code', 4566 value: elem.getAttribute('data-currency-code') 4567 }); 4568 } 4569 return additionalFields; 4570 } 4571 } 4572 4573 4574 /** 4575 * 4576 * 4577 * @class LanguageDetection 4578 */ 4579 class LanguageDetection { 4580 4581 constructor() { 4582 this.hreflangList = null; 4583 LyHelper.log('LanguageDetection instantiation'); 4584 } 4585 4586 init() { 4587 if(LyHelper.inIframe() 4588 || window.location.pathname.indexOf('preview_key=') > 0) { 4589 return null; 4590 } 4591 4592 var currentLang = langify.locale.iso_code.toLowerCase(); 4593 //var localizationData = this.getLocalizationData(); 4594 this.hreflangList = this.getHreflangList(); 4595 4596 var userLang = navigator.language || navigator.userLanguage; 4597 userLang = userLang.toLowerCase(); 4598 var bot = /bot|google|baidu|bing|msn|duckduckbot|teoma|slurp|yandex|Chrome-Lighthouse/i.test(navigator.userAgent); 4599 var blockedRoutes = window.lyBlockedRoutesList || []; 4600 var blockedRoute = blockedRoutes.find(x => window.location.pathname.indexOf(x) === 0); 4601 var is404 = document.getElementsByClassName('template-404').length; 4602 4603 if(LyHelper.getVal('redirected') === 'true') { 4604 LyHelper.setCookie('ly-lang-selected', currentLang, 365); 4605 var _href = window.location.href; 4606 history.replaceState(null, '', _href.replace(/(\?|&)(redirected=true)/i, '')); 4607 return null; 4608 } 4609 4610 if(!is404 && !bot && !blockedRoute && LyHelper.getVal('ly-lang-detect') !== 'off') { 4611 if(userLang && !LyHelper.getCookie('ly-lang-selected')) { 4612 var hasMatch = this.matchHreflangList(userLang); 4613 if(currentLang !== this._hreflangToLanguageCode(hasMatch)) { 4614 if(hasMatch) { 4615 this.redirectMatched(userLang); 4616 } else if (!hasMatch && langify.settings.switcher.languageDetectionDefault) { 4617 // Redirect to default language 4618 this.redirectMatched(langify.settings.switcher.languageDetectionDefault); 4619 } 4620 } 4621 } else { 4622 if(LyHelper.getCookie('ly-lang-selected') && LyHelper.getCookie('ly-lang-selected') !== currentLang) { 4623 // Only save cookie when the domain feature is active 4624 if(LyHelper.isDomainFeatureEnabled()) { 4625 LyHelper.setCookie('ly-lang-selected', currentLang, 365); 4626 } 4627 this.redirectMatched(LyHelper.getCookie('ly-lang-selected')); 4628 } 4629 } 4630 } 4631 4632 this._geolocationAppSupport(); 4633 } 4634 redirectMatched(userLang) { 4635 var match = this.matchHreflangList(userLang); 4636 if(match) { 4637 this.redirectHref(match.href, match.lang); 4638 } 4639 return match; 4640 } 4641 matchHreflangList(userLang) { 4642 var matchedHreflang = false; 4643 var browserLang = userLang; 4644 4645 // Find candidates 4646 var candidates = this.hreflangList.filter(item => item.lang === browserLang); 4647 if(candidates.length === 0) { 4648 browserLang = userLang.toLowerCase(); 4649 candidates = this.hreflangList.filter(item => item.lang.toLowerCase().indexOf(browserLang) === 0); 4650 } 4651 if(candidates.length === 0) { 4652 browserLang = userLang.toLowerCase().substring(0, 2); 4653 candidates = this.hreflangList.filter(item => item.lang.toLowerCase().indexOf(browserLang) === 0); 4654 } 4655 4656 // Handle candidates 4657 if(candidates.length === 1) { 4658 return({href: candidates[0].href, lang: browserLang}); 4659 } 4660 else if(candidates.length > 1) { 4661 var preferedCandidate = candidates.find(item => item.href.indexOf(window.location.host) >= 0) 4662 if(preferedCandidate) { 4663 return({href: preferedCandidate.href, lang: browserLang}); 4664 } else { 4665 return({href: candidates[0].href, lang: browserLang}); 4666 } 4667 } 4668 4669 return false;
4670 } 4671 redirectHref(href, userLang) { 4672 var queryString = window.location.search; 4673 var url = href.split('?')[0]; 4674 if(queryString === '') { 4675 queryString = '?redirected=true'; 4676 } else { 4677 queryString += '&redirected=true'; 4678 } 4679 window.location.replace(url + queryString); 4680 } 4681 getHreflangList() { 4682 var hreflangTags = document.querySelectorAll('link[hreflang]'); 4683 var hreflangList = []; 4684 var countryCode = false; 4685 // Cross Domain Links option 4686 if(LyHelper.isDomainFeatureEnabled()) { 4687 for(var i = 0; i < langify.locale.languages.length; i++) { 4688 let newHref = 'https://' + langify.locale.languages[i].domain + window.location.pathname + window.location.search + window.location.hash; 4689 // When cross-domain link is pointing to the same domain with subfolders, window.location.pathname would have to be unlocalized before it can be merged into the url 4690 if(new String(langify.locale.languages[i].domain).indexOf(window.location.hostname) === 0) { 4691 let unlocalizedPathname = langify.locale.root_url !== '/' ? window.location.pathname.replace(langify.locale.root_url, '') : window.location.pathname; 4692 newHref = 'https://' + langify.locale.languages[i].domain + unlocalizedPathname + window.location.search + window.location.hash 4693 } 4694 hreflangList.push({ 4695 href: newHref, 4696 lang: langify.locale.languages[i].iso_code, 4697 }); 4698 } 4699 } 4700 for(var i = 0; i < hreflangTags.length; i++) { 4701 var hreflang = hreflangTags[i].getAttribute('hreflang').toLowerCase(); 4702 hreflang = hreflang.replace('zh-hans', 'zh-cn').replace('zh-hant', 'zh-tw'); // Chinese special cases 4703 hreflangList.push({ 4704 href: hreflangTags[i].getAttribute('href'), 4705 lang: hreflang 4706 }); 4707 } 4708 return hreflangList; 4709 } 4710 _langToHreflang(userLang) { 4711 var hreflang = ''; 4712 this.hreflangList.map(function(item) { 4713 if(item.lang === userLang) { 4714 hreflang = userLang; 4715 } 4716 }); 4717 if(hreflang === '') { 4718 this.hreflangList.map(function(item) { 4719 var browserLang = userLang.toLowerCase(); 4720 if(item.lang.toLowerCase().indexOf(browserLang) === 0) { 4721 hreflang = browserLang; 4722 } 4723 else if(item.lang.toLowerCase().indexOf(browserLang.substring(0, 2)) === 0) { 4724 hreflang = browserLang.substring(0, 2); 4725 } 4726 }); 4727 } 4728 return hreflang || userLang; 4729 } 4730 _hreflangToLanguageCode(hreflangTag) { 4731 if(!hreflangTag || !hreflangTag.lang) return false; 4732 var languageCode = false;
4733 langify.locale.languages.forEach(function(item) { 4734 if(item.iso_code.toLowerCase() === hreflangTag.lang.toLowerCase()) { 4735 languageCode = item.iso_code; 4736 } 4737 }); 4738 if(!languageCode) { 4739 langify.locale.languages.forEach(function(item) { 4740 if(item.iso_code.toLowerCase() === hreflangTag.lang.substring(0, 2).toLowerCase()) { 4741 languageCode = item.iso_code; 4742 } 4743 }); 4744 } 4745 return languageCode; 4746 } 4747 _geolocationAppSupport() { 4748 var target = document.querySelector('body'); 4749 var config = { childList: true, subtree: true }; 4750 var geolocationObserver = new MutationObserver(function(mutations) { 4751 mutations.forEach(function(mutation) { 4752 if (mutation.type === 'childList' && mutation.addedNodes.length > 0) { 4753 var target = mutation.target.getElementsByClassName('locale-bar__form'); 4754 if(target[0]) { 4755 target[0].onsubmit = function() { 4756 var locale_code = target[0].elements['locale_code'].value; 4757 var selector = target[0].getElementsByClassName('locale-bar__selector'); 4758 if(selector.length >= 1) { 4759 locale_code = selector[0].options[selector[0].selectedIndex].value; 4760 } 4761 LyHelper.setCookie('ly-lang-selected', locale_code, 365); 4762 }; 4763 } 4764 var selectors = mutation.target.getElementsByClassName('locale-selectors__selector'); 4765 if(selectors.length > 0) { 4766 for(var selector of selectors) { 4767 if(selector.getAttribute('name') === 'locale_code') { 4768 selector.onchange = function() { 4769 var locale_code = selector.options[selector.selectedIndex].value; 4770 LyHelper.setCookie('ly-lang-selected', locale_code, 365); 4771 }; 4772 } 4773 } 4774 } 4775 } 4776 }); 4777 }); 4778 geolocationObserver.observe(target, config); 4779 setTimeout(function() { 4780 geolocationObserver.disconnect(); 4781 }, 10000); 4782 } 4783 } 4784 4785 4786 /** 4787 * 4788 * 4789 * @class Recommendation 4790 */ 4791 class Recommendation extends LanguageDetection { 4792 4793 constructor() { 4794 super(); 4795 LyHelper.log('Recommendation instantiation'); 4796 } 4797 4798 init() { 4799 this.hreflangList = this.getHreflangList(); 4800 4801 var userLang = navigator.language || navigator.userLanguage; 4802 userLang = userLang.toLowerCase(); 4803 4804 var recommendation = this.matchHreflangList(userLang); 4805 var recommendationLanguageCode = this._hreflangToLanguageCode(recommendation); 4806 if(recommendationLanguageCode && recommendationLanguageCode !== langify.locale.iso_code && !LyHelper.getCookie('ly-lang-selected')) { 4807 this.recommended_language_code = recommendationLanguageCode; 4808 this.recommended_country_code = null; 4809 this.recommended_currency_code = null; 4810 this._translateStrings(recommendationLanguageCode); 4811 this._bindings(); 4812 } else { 4813 return false; 4814 } 4815 } 4816 4817 _translateStrings(languageCode) { 4818 var recommendationElement = document.querySelectorAll('.ly-recommendation')[0]; 4819 var strings = langify.settings.switcher.recommendation_strings[languageCode]; 4820 var recommendationStr = 'Looks like your browser is set to [[language]]. Change the language?'; 4821 var buttonStr = 'Change'; 4822 var matchedLanguageCode = this._langToHreflang(languageCode).toLowerCase(); 4823 var languageStr = langify.settings.switcher.languages.find(x => x.iso_code.toLowerCase() === matchedLanguageCode) ? langify.settings.switcher.languages.find(x => x.iso_code.toLowerCase() === matchedLanguageCode).name : languageCode.toUpperCase(); 4824 if(strings) { 4825 recommendationStr = strings.recommendation ? strings.recommendation : recommendationStr; 4826 buttonStr = strings.button ? strings.button : buttonStr; 4827 languageStr = strings.language ? strings.language : languageStr; 4828 } 4829 var newCode = recommendationElement.innerHTML;
4830 newCode = newCode.replaceAll('[[recommendation]]', recommendationStr).replaceAll('[[button]]', buttonStr).replaceAll('[[language]]', languageStr); 4831 recommendationElement.innerHTML = newCode; 4832 } 4833 4834 _bindings() { 4835 var _this = this; 4836 var lyForceOff = location.search.split('ly-force-off=')[1]; 4837 var recommendationElement = document.querySelectorAll('.ly-recommendation')[0]; 4838 var form = recommendationElement.querySelectorAll('.ly-recommendation-form')[0]; 4839 var links = recommendationElement.getElementsByClassName('ly-custom-dropdown-list-element'); 4840 var customDropdown = recommendationElement.querySelectorAll('.ly-custom-dropdown-switcher'); 4841 var nativeSelects = recommendationElement.getElementsByClassName('ly-native-select'); 4842 4843 form.addEventListener('submit', function(e) { 4844 e.preventDefault(); 4845 4846 if(_this.recommended_country_code || _this.recommended_currency_code) { 4847 // When a country or currency is involved, use old redirection 4848 var additionalFields = []; 4849 if(_this.recommended_country_code) { 4850 additionalFields.push({ 4851 name: 'country_code', 4852 value: _this.recommended_country_code 4853 }); 4854 } 4855 if(_this.recommended_currency_code) { 4856 additionalFields.push({ 4857 name: 'currency_code', 4858 value: _this.recommended_currency_code 4859 }); 4860 } 4861 LyHelper.setCookie('ly-lang-selected', _this.recommended_language_code, 365); 4862 LyHelper.localizationRedirect('language_code', _this.recommended_language_code, additionalFields); 4863 } else { 4864 //...or use new hreflang redirection 4865 _this.redirectMatched(_this.recommended_language_code); 4866 } 4867 }); 4868 4869 // Overwrite switchers 4870 for(var l = 0; l < links.length; l++) { 4871 links[l].addEventListener('click', function(event) { 4872 event.preventDefault(); 4873 4874 // When clicked from within a custom dropdown 4875 var parentCustomDropdown = event.currentTarget.closest('.ly-custom-dropdown-switcher'); 4876 if(parentCustomDropdown) { 4877 _this._selectCustomDropdownEntry(parentCustomDropdown, this); 4878 } else { 4879 _this.recommended_language_code = this.getAttribute('data-language-code'); 4880 } 4881 }); 4882 } 4883 4884 for(var i = 0; i < nativeSelects.length; i++) { 4885 nativeSelects[i].onchange = _this._selectNativeDropdownEntry.bind(this); 4886 4887 if(nativeSelects[i].classList.contains('ly-languages-switcher')) { 4888 nativeSelects[i].value = _this.recommended_language_code; 4889 } 4890 } 4891 4892 for(var i = 0; i < customDropdown.length; i++) { 4893 if(recommendationElement.className.indexOf('bottom') > -1) { 4894 customDropdown[i].classList.add('ly-is-dropup'); 4895 } 4896 4897 if(customDropdown[i].classList.contains('ly-languages-switcher')) { 4898 _this._selectCustomDropdownEntry(customDropdown[i], customDropdown[i].querySelector('.ly-custom-dropdown-list a[data-language-code="'+ _this.recommended_language_code +'"]')); 4899 } 4900 } 4901 if(!lyForceOff) { 4902 recommendationElement.classList.add('ly-is-open'); 4903 } 4904 } 4905 4906 _selectNativeDropdownEntry(event) { 4907 event.preventDefault(); 4908 var element = event.currentTarget; 4909 var _this = this; 4910 4911 if(element[element.selectedIndex].hasAttribute('data-language-code')) { 4912 _this.recommended_language_code = element[element.selectedIndex].getAttribute('data-language-code'); 4913 } 4914 if(element[element.selectedIndex].hasAttribute('data-country-code')) { 4915 _this.recommended_country_code = element[element.selectedIndex].getAttribute('data-country-code'); 4916 } 4917 if(element[element.selectedIndex].hasAttribute('data-currency-code')) { 4918 _this.recommended_currency_code = element[element.selectedIndex].getAttribute('data-currency-code'); 4919 } 4920 } 4921 4922 _selectCustomDropdownEntry(element, entry) { 4923 if(!entry) return; 4924 var _this = this; 4925 var currentElem = element.querySelector('.ly-custom-dropdown-current'); 4926 var currentIcon = currentElem.querySelector('.ly-icon'); 4927 var currentLabel = currentElem.querySelector('span'); 4928 var valueToSelect = ''; 4929 4930 if(entry.hasAttribute('data-language-code')) { 4931 _this.recommended_language_code = entry.getAttribute('data-language-code'); 4932 valueToSelect = _this.recommended_language_code; 4933 } 4934 if(entry.hasAttribute('data-country-code')) { 4935 _this.recommended_country_code = entry.getAttribute('data-country-code'); 4936 valueToSelect = _this.recommended_country_code; 4937 } 4938 if(entry.hasAttribute('data-currency-code')) { 4939 _this.recommended_currency_code = entry.getAttribute('data-currency-code'); 4940 valueToSelect = _this.recommended_currency_code; 4941 } 4942 if(entry.hasAttribute('data-country-code') && entry.hasAttribute('data-currency-code')) { 4943 valueToSelect = _this.recommended_country_code + '-' + _this.recommended_currency_code; 4944 } 4945 4946 if(element.querySelector('.ly-custom-dropdown-list li.current')) { 4947 element.querySelector('.ly-custom-dropdown-list li.current').classList.remove('current'); 4948 element.querySelector('.ly-custom-dropdown-list li[key="'+ valueToSelect +'"]').classList.add('current'); 4949 } 4950 if(element.querySelector('.ly-custom-dropdown-list li.current span')) currentLabel.innerHTML = element.querySelector('.ly-custom-dropdown-list li.current span').innerHTML; 4951 if(element.querySelector('.ly-custom-dropdown-list li.current .ly-icon')) currentIcon.classList = element.querySelector('.ly-custom-dropdown-list li.current .ly-icon').classList; 4952 } 4953 4954 toggleOpen(e) { 4955 e.closest('.ly-recommendation').classList.toggle('ly-is-open'); 4956 if(!e.closest('.ly-recommendation').classList.contains('ly-is-open')) { 4957 LyHelper.setCookie('ly-lang-selected', this.recommended_language_code, 365); 4958 } 4959 } 4960 } 4961 4962 4963 /** 4964 * 4965 * 4966 * @class Langify 4967 */ 4968 class Langify { 4969 constructor(settings, locale) { 4970 LyHelper.log('Langify instantiation') 4971 4972 var translationObserver = new TranslationObserver().init(); 4973 4974 langify.helper = new LyHelper(); 4975 LyHelper.log(langify.helper); 4976 4977 4978 var lyForceOff = location.search.split('ly-force-off=')[1]; 4979 if(lyForceOff === 'true') { 4980 document.getElementById('preview-bar-iframe').classList.add('ly-hide'); 4981 return false;
4982 } 4983 4984 if(settings.theme && ((settings.theme.loadJquery && settings.theme.loadJquery === true) || typeof settings.theme.loadJquery === 'undefined')) { 4985 if(typeof jQuery === 'undefined') { 4986 LyHelper.loadScript('//cdn.jsdelivr.net/jquery/1.9.1/jquery.min.js', function() {}); 4987 } 4988 } 4989 4990 //document.addEventListener("DOMContentLoaded", function() { 4991 langify.switcher = new Switcher(); 4992 langify.switcher.init(); 4993 4994 if(settings.switcher) { 4995 if(settings.switcher.recommendation && settings.switcher.recommendation_enabled) { 4996 langify.recommendation = new Recommendation(); 4997 langify.recommendation.init(); 4998 } else { 4999 if(settings.switcher.languageDetection) { 5000 langify.languageDetection = new LanguageDetection(); 5001 langify.languageDetection.init(); 5002 } 5003 } 5004 } 5005 //}); 5006 } 5007 } 5008 5009 // Polyfills 5010 (function(){var t;null==window.MutationObserver&&(t=function(){function t(t){this.callBack=t}return t.prototype.observe=function(t,n){return this.element=t,this.interval=setInterval((e=this,function(){var t;if((t=e.element.innerHTML)!==e.oldHtml)return e.oldHtml=t,e.callBack.apply(null)}),200);var e},t.prototype.disconnect=function(){return window.clearInterval(this.interval)},t}(),window.MutationObserver=t)}).call(this); 5011 !function(){"use strict";if("object"==typeof window)if("IntersectionObserver"in window&&"IntersectionObserverEntry"in window&&"intersectionRatio"in window.IntersectionObserverEntry.prototype)"isIntersecting"in window.IntersectionObserverEntry.prototype||Object.defineProperty(window.IntersectionObserverEntry.prototype,"isIntersecting",{get:function(){return this.intersectionRatio>0}});else{var t=function(t){for(var e=window.document,o=i(e);o;)o=i(e=o.ownerDocument);return e}(),e=[],o=null,n=null;s.prototype.THROTTLE_TIMEOUT=100,s.prototype.POLL_INTERVAL=null,s.prototype.USE_MUTATION_OBSERVER=!0,s._setupCrossOriginUpdater=function(){return o||(o=function(t,o){n=t&&o?l(t,o):{top:0,bottom:0,left:0,right:0,width:0,height:0},e.forEach(function(t){t._checkForIntersections()})}),o},s._resetCrossOriginUpdater=function(){o=null,n=null},s.prototype.observe=function(t){if(!this._observationTargets.some(function(e){return e.element==t})){if(!t||1!=t.nodeType)throw new Error("target must be an Element");this._registerInstance(),this._observationTargets.push({element:t,entry:null}),this._monitorIntersections(t.ownerDocument),this._checkForIntersections()}},s.prototype.unobserve=function(t){this._observationTargets=this._observationTargets.filter(function(e){return e.element!=t}),this._unmonitorIntersections(t.ownerDocument),0==this._observationTargets.length&&this._unregisterInstance()},s.prototype.disconnect=function(){this._observationTargets=[],this._unmonitorAllIntersections(),this._unregisterInstance()},s.prototype.takeRecords=function(){var t=this._queuedEntries.slice();return this._queuedEntries=[],t},s.prototype._initThresholds=function(t){var e=t||[0];return Array.isArray(e)||(e=[e]),e.sort().filter(function(t,e,o){if("number"!=typeof t||isNaN(t)||t<0||t>1)throw new Error("threshold must be a number between 0 and 1 inclusively");return t!==o[e-1]})},s.prototype._parseRootMargin=function(t){var e=(t||"0px").split(/\s+/).map(function(t){var e=/^(-?\d*\.?\d+)(px|%)$/.exec(t);if(!e)throw new Error("rootMargin must be specified in pixels or percent");return{value:parseFloat(e[1]),unit:e[2]}});return e[1]=e[1]||e[0],e[2]=e[2]||e[0],e[3]=e[3]||e[1],e},s.prototype._monitorIntersections=function(e){var o=e.defaultView;if(o&&-1==this._monitoringDocuments.indexOf(e)){var n=this._checkForIntersections,r=null,s=null;this.POLL_INTERVAL?r=o.setInterval(n,this.POLL_INTERVAL):(h(o,"resize",n,!0),h(e,"scroll",n,!0),this.USE_MUTATION_OBSERVER&&"MutationObserver"in o&&(s=new o.MutationObserver(n)).observe(e,{attributes:!0,childList:!0,characterData:!0,subtree:!0})),this._monitoringDocuments.push(e),this._monitoringUnsubscribes.push(function(){var t=e.defaultView;t&&(r&&t.clearInterval(r),c(t,"resize",n,!0)),c(e,"scroll",n,!0),s&&s.disconnect()});var u=this.root&&(this.root.ownerDocument||this.root)||t;if(e!=u){var a=i(e);a&&this._monitorIntersections(a.ownerDocument)}}},s.prototype._unmonitorIntersections=function(e){var o=this._monitoringDocuments.indexOf(e);if(-1!=o){var n=this.root&&(this.root.ownerDocument||this.root)||t;if(!this._observationTargets.some(function(t){var o=t.element.ownerDocument;if(o==e)return!0;for(;o&&o!=n;){var r=i(o);if((o=r&&r.ownerDocument)==e)return!0}return!1})){var r=this._monitoringUnsubscribes[o];if(this._monitoringDocuments.splice(o,1),this._monitoringUnsubscribes.splice(o,1),r(),e!=n){var s=i(e);s&&this._unmonitorIntersections(s.ownerDocument)}}}},s.prototype._unmonitorAllIntersections=function(){var t=this._monitoringUnsubscribes.slice(0);this._monitoringDocuments.length=0,this._monitoringUnsubscribes.length=0;for(var e=0;e<t.length;e++)t[e]()},s.prototype._checkForIntersections=function(){if(this.root||!o||n){var t=this._rootIsInDom(),e=t?this._getRootRect():{top:0,bottom:0,left:0,right:0,width:0,height:0};
5011this._observationTargets.forEach(function(n){var i=n.element,s=u(i),h=this._rootContainsTarget(i),c=n.entry,a=t&&h&&this._computeTargetAndRootIntersection(i,s,e),l=null;this._rootContainsTarget(i)?o&&!this.root||(l=e):l={top:0,bottom:0,left:0,right:0,width:0,height:0};var f=n.entry=new r({time:window.performance&&performance.now&&performance.now(),target:i,boundingClientRect:s,rootBounds:l,intersectionRect:a});c?t&&h?this._hasCrossedThreshold(c,f)&&this._queuedEntries.push(f):c&&c.isIntersecting&&this._queuedEntries.push(f):this._queuedEntries.push(f)},this),this._queuedEntries.length&&this._callback(this.takeRecords(),this)}},s.prototype._computeTargetAndRootIntersection=function(e,i,r){if("none"!=window.getComputedStyle(e).display){for(var s,h,c,a,f,d,g,m,v=i,_=p(e),b=!1;!b&&_;){var w=null,y=1==_.nodeType?window.getComputedStyle(_):{};if("none"==y.display)return null;if(_==this.root||9==_.nodeType)if(b=!0,_==this.root||_==t)o&&!this.root?!n||0==n.width&&0==n.height?(_=null,w=null,v=null):w=n:w=r;else{var I=p(_),E=I&&u(I),T=I&&this._computeTargetAndRootIntersection(I,E,r);E&&T?(_=I,w=l(E,T)):(_=null,v=null)}else{var R=_.ownerDocument;_!=R.body&&_!=R.documentElement&&"visible"!=y.overflow&&(w=u(_))}if(w&&(s=w,h=v,c=void 0,a=void 0,f=void 0,d=void 0,g=void 0,m=void 0,c=Math.max(s.top,h.top),a=Math.min(s.bottom,h.bottom),f=Math.max(s.left,h.left),d=Math.min(s.right,h.right),m=a-c,v=(g=d-f)>=0&&m>=0&&{top:c,bottom:a,left:f,right:d,width:g,height:m}||null),!v)break;_=_&&p(_)}return v}},s.prototype._getRootRect=function(){var e;if(this.root&&!d(this.root))e=u(this.root);else{var o=d(this.root)?this.root:t,n=o.documentElement,i=o.body;e={top:0,left:0,right:n.clientWidth||i.clientWidth,width:n.clientWidth||i.clientWidth,bottom:n.clientHeight||i.clientHeight,height:n.clientHeight||i.clientHeight}}return this._expandRectByRootMargin(e)},s.prototype._expandRectByRootMargin=function(t){var e=this._rootMarginValues.map(function(e,o){return"px"==e.unit?e.value:e.value*(o%2?t.width:t.height)/100}),o={top:t.top-e[0],right:t.right+e[1],bottom:t.bottom+e[2],left:t.left-e[3]};return o.width=o.right-o.left,o.height=o.bottom-o.top,o},s.prototype._hasCrossedThreshold=function(t,e){var o=t&&t.isIntersecting?t.intersectionRatio||0:-1,n=e.isIntersecting?e.intersectionRatio||0:-1;if(o!==n)for(var i=0;i<this.thresholds.length;i++){var r=this.thresholds[i];if(r==o||r==n||r<o!=r<n)return!0}},s.prototype._rootIsInDom=function(){return!this.root||f(t,this.root)},s.prototype._rootContainsTarget=function(e){var o=this.root&&(this.root.ownerDocument||this.root)||t;return f(o,e)&&(!this.root||o==e.ownerDocument)},s.prototype._registerInstance=function(){e.indexOf(this)<0&&e.push(this)},s.prototype._unregisterInstance=function(){var t=e.indexOf(this);-1!=t&&e.splice(t,1)},window.IntersectionObserver=s,window.IntersectionObserverEntry=r}function i(t){try{return t.defaultView&&t.defaultView.frameElement||null}catch(t){return null}}function r(t){this.time=t.time,this.target=t.target,this.rootBounds=a(t.rootBounds),this.boundingClientRect=a(t.boundingClientRect),this.intersectionRect=a(t.intersectionRect||{top:0,bottom:0,left:0,right:0,width:0,height:0}),this.isIntersecting=!!t.intersectionRect;var e=this.boundingClientRect,o=e.width*e.height,n=this.intersectionRect,i=n.width*n.height;this.intersectionRatio=o?Number((i/o).toFixed(4)):this.isIntersecting?1:0}function s(t,e){var o,n,i,r=e||{};if("function"!=typeof t)throw new Error("callback must be a function");if(r.root&&1!=r.root.nodeType&&9!=r.root.nodeType)throw new Error("root must be a Document or Element");this._checkForIntersections=(o=this._checkForIntersections.bind(this),n=this.THROTTLE_TIMEOUT,i=null,function(){i||(i=setTimeout(function(){o(),i=null},n))}),this._callback=t,this._observationTargets=[],this._queuedEntries=[],this._rootMarginValues=this._parseRootMargin(r.rootMargin),this.thresholds=this._initThresholds(r.threshold),this.root=r.root||null,this.rootMargin=this._rootMarginValues.map(function(t){return t.value+t.unit}).join(" "),this._monitoringDocuments=[],this._monitoringUnsubscribes=[]}function h(t,e,o,n){"function"==typeof t.addEventListener?t.addEventListener(e,o,n||!1):"function"==typeof t.attachEvent&&t.attachEvent("on"+e,o)}function c(t,e,o,n){"function"==typeof t.removeEventListener?t.removeEventListener(e,o,n||!1):"function"==typeof t.detatchEvent&&t.detatchEvent("on"+e,o)}function u(t){var e;try{e=t.getBoundingClientRect()}catch(t){}return e?(e.width&&e.height||(e={top:e.top,right:e.right,bottom:e.bottom,left:e.left,width:e.right-e.left,height:e.bottom-e.top}),e):{top:0,bottom:0,left:0,right:0,width:0,height:0}}function a(t){return!t||"x"in t?t:{top:t.top,y:t.top,bottom:t.bottom,left:t.left,x:t.left,right:t.right,width:t.width,height:t.height}}function l(t,e){var o=e.top-t.top,n=e.left-t.left;return{top:o,left:n,height:e.height,width:e.width,bottom:o+e.height,right:n+e.width}}function f(t,e){for(var o=e;o;){if(o==t)return!0;o=p(o)}return!1}function p(e){var o=e.parentNode;return 9==e.nodeType&&e!=t?i(e):(o&&o.assignedSlot&&(o=o.assignedSlot.parentNode),o&&11==o.nodeType&&o.host?o.host:o)}function d(t){return t&&9===t.nodeType}}(); 5012 !function(){if("function"==typeof window.CustomEvent)return!1;window.CustomEvent=function(n,t){t=t||{bubbles:!1,cancelable:!1,detail:null};var e=document.createEvent("CustomEvent");return e.initCustomEvent(n,t.bubbles,t.cancelable,t.detail),e}}(); 5013 5014 var langify = window.langify || {}; 5015 var customContents = {}; 5016 var customContents_image = {}; 5017 var langifySettingsOverwrites = {}; 5018 var defaultSettings = { 5019 debug: false, // BOOL : Enable/disable console logs 5020 observe: true, // BOOL : Enable/disable the entire mutation observer (off switch) 5021 observeLinks: false, 5022 observeImages: true, 5023 observeCustomContents: true, 5024 maxMutations: 5, 5025 timeout: 100, // INT : Milliseconds to wait after a mutation, before the next mutation event will be allowed for the element 5026 linksBlacklist: [], 5027 }; 5028 5029 if(langify.settings) { 5030 langifySettingsOverwrites = Object.assign({}, langify.settings); 5031 langify.settings = Object.assign(defaultSettings, langify.settings); 5032 } else { 5033 langify.settings = defaultSettings; 5034 } 5035 5036 langify.settings.theme = null; 5037 langify.settings.switcher = null; 5038 5039 langify.locale = langify.locale || { 5040 primary: true, 5041 iso_code: "en", 5042 root_url: "\/", 5043 language_id: "ly168057", 5044 shop_url: "https:\/\/canadagrowsupplies.com", 5045 domain_feature_enabled: null, 5046 languages: [{ 5047 iso_code: "en", 5048 root_url: "\/", 5049 domain: null, 5050 },{ 5051 iso_code: "fr", 5052 root_url: "\/fr", 5053 domain: null, 5054 },],}; 5055 5056 // Disable link correction ALWAYS on languages with mapped domains 5057 5058 if(langify.locale.root_url == '/') { 5059 langify.settings.observeLinks = false;
5060 } 5061 5062 window.addEventListener('DOMContentLoaded', function() { 5063 langify.helper = new LyHelper(); 5064 5065 // Custom Contents Section 5066 5067 // Images Section 5068 5069 5070 5071 var langifyInstance = new Langify(langify.settings, langify.locale); 5072 }); 5073</script>
5073 5074<div data-breakpoint="" class="ly-switcher-wrapper ly-breakpoint-1 fixed bottom_right ly-hide" style="font-size: 14px; margin: 0px 0px; "><div data-dropup="false" onclick="langify.switcher.toggleSwitcherOpen(this)" class="ly-languages-switcher ly-custom-dropdown-switcher ly-bright-theme" style=" margin: 0px 0px;"> 5075 <span role="button" tabindex="0" aria-label="Selected language: English" aria-expanded="false" aria-controls="languagesSwitcherList-1" class="ly-custom-dropdown-current" style="background: #ffffff; color: #000000; "><i class="ly-icon ly-flag-icon ly-flag-icon-en "></i><span class="ly-custom-dropdown-current-inner ly-custom-dropdown-current-inner-text">English</span> 5076<div aria-hidden="true" class="ly-arrow ly-arrow-black stroke" style="vertical-align: middle; width: 14.0px; height: 14.0px;"> 5077 <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 14.0 14.0" height="14.0px" width="14.0px" style="position: absolute;"> 5078 <path d="M1 4.5 L7.0 10.5 L13.0 4.5" fill="transparent" stroke="#000000" stroke-width="1px"/> 5079 </svg> 5080 </div> 5081 </span> 5082 <ul id="languagesSwitcherList-1" role="list" class="ly-custom-dropdown-list ly-is-open ly-bright-theme" style="background: #ffffff; color: #000000; "><li key="fr" style="color: #000000; margin: 0px 0px;" tabindex="-1"> 5083 <a class="ly-custom-dropdown-list-element ly-languages-switcher-link ly-bright-theme" 5084 href="#" 5085 data-language-code="fr" 5086 5087 data-ly-locked="true"><i class="ly-icon ly-flag-icon ly-flag-icon-fr"></i><span class="ly-custom-dropdown-list-element-right">French</span></a> 5088 </li><li key="en" class="current" style="color: #000000; margin: 0px 0px;" tabindex="-1"> 5089 <a class="ly-custom-dropdown-list-element ly-languages-switcher-link ly-bright-theme current_lang" 5090 href="#" 5091 data-language-code="en" 5092 5093 data-ly-locked="true"><i class="ly-icon ly-flag-icon ly-flag-icon-en"></i><span class="ly-custom-dropdown-list-element-right">English</span></a> 5094 </li></ul> 5095 </div></div> 5096<style> 5097 5098 5099 .ly-flag-icon-en { background-image: url('//canadagrowsupplies.com/cdn/shop/t/43/assets/ly-icon-e
5099n.svg?v=168749326791323067301686760900'); } 5100 5101 5102 .ly-flag-icon-fr { background-image: url('//canadagrowsupplies.com/cdn/shop/t/43/assets/ly-icon-fr.svg?v=49424167760593335881686760907'); } 5103 5104 .ly-switcher-wrapper { 5105 5106 } 5107 .ly-switcher-wrapper.fixed { 5108 position: fixed; 5109 z-index: 4; 5110 } 5111 .ly-switcher-wrapper.absolute { 5112 position: absolute; 5113 z-index: 1000; 5114 } 5115 .ly-switcher-wrapper.fixed.top_left, 5116 .ly-switcher-wrapper.absolute.top_left { 5117 top: 0; 5118 left: 0; 5119 } 5120 .ly-switcher-wrapper.fixed.top_right, 5121 .ly-switcher-wrapper.absolute.top_right { 5122 top: 0; 5123 right: 0; 5124 } 5125 .ly-switcher-wrapper.fixed.bottom_left, 5126 .ly-switcher-wrapper.absolute.bottom_left { 5127 bottom: 0; 5128 left: 0; 5129 } 5130 .ly-switcher-wrapper.fixed.bottom_right, 5131 .ly-switcher-wrapper.absolute.bottom_right { 5132 bottom: 0; 5133 right: 0; 5134 } 5135 .ly-switcher-wrapper .shopify-currency-form { 5136 display: inline-block; 5137 } 5138 5139 5140 .ly-currency-switcher { 5141 font-size: 1em; 5142 } 5143 5144 .ly-inner-text { 5145 margin: 0 0.2em; 5146 white-space: nowrap; 5147 } 5148 5149 .ly-flag-icon { 5150 background-size: contain; 5151 background-position: 50%; 5152 background-repeat: no-repeat; 5153 position: relative; 5154 display: inline-block; 5155 width: 1.33333333em; 5156 line-height: 1em; 5157 } 5158 .ly-flag-icon:before { 5159 content: ''; 5160 display: inline-block; 5161 } 5162 .ly-flag-icon.ly-flag-squared { 5163 width: 1em; 5164 } 5165 .ly-flag-icon.ly-flag-rounded { 5166 width: 1em; 5167 border-radius: 50%; 5168 } 5169 .ly-languages-switcher { 5170 white-space: nowrap; 5171 list-style-type: none; 5172 display: flex; 5173 font-size: 1em; 5174 } 5175 .ly-languages-switcher-link { 5176 margin: 0 0.2em; 5177 cursor: pointer; 5178 white-space: nowrap; 5179 text-decoration: none; 5180 display: inline-block; 5181 } 5182 .ly-languages-switcher.ly-list { 5183 margin: 0; 5184 padding: 0; 5185 display: block; 5186 } 5187 .ly-languages-switcher.ly-native-select { 5188 5189 } 5190 .ly-icon { 5191 margin: 0 0.2em; 5192 } 5193 5194 .ly-arrow { 5195 display: inline-block; 5196 position: relative; 5197 vertical-align: middle; 5198 direction: ltr !important; 5199 -webkit-transition: transform 0.25s; 5200 -moz-transition: transform 0.25s; 5201 transition: transform 0.25s; 5202 margin: 0 0.2em; 5203 } 5204 .ly-custom-dropdown-switcher.ly-is-open .ly-arrow { 5205 transform: rotate(180deg); 5206 } 5207 .ly-custom-dropdown-switcher.ly-arrow.ly-arrow-up { 5208 transform: rotate(180deg); 5209 } 5210 .ly-custom-dropdown-switcher.ly-is-open .ly-arrow.ly-arrow-up { 5211 transform: rotate(0deg); 5212 } 5213 5214 .ly-custom-dropdown-switcher { 5215 text-align: left; 5216 display: inline-block; 5217 position: relative; 5218 user-select: none; 5219 cursor: pointer; 5220 } 5221 .ly-custom-dropdown-current { 5222 display: block; 5223 vertical-align: middle; 5224 } 5225 .ly-custom-dropdown-current-inner { 5226 display: inline-block; 5227 vertical-align: middle; 5228 } 5229 .ly-custom-dropdown-current-inner-image { 5230 margin-right: 0.25em; 5231 } 5232 .ly-custom-dropdown-current-inner-text { 5233 margin: 0 0.2em; 5234 } 5235 .ly-custom-dropdown-list { 5236 display: none !important; 5237 list-style: none; 5238 position: absolute; 5239 left: 0; 5240 padding: inherit !important; 5241 padding: 0 !important; 5242 margin: 0; 5243 z-index: 99999; 5244 text-align: left; 5245 width: 100%; 5246 font-size: 1em; 5247 } 5248 .ly-custom-dropdown-list-element { 5249 color: inherit !important; 5250 display: block; 5251 } 5252 .ly-custom-dropdown-list > li { 5253 margin: 0 !important; 5254 display: block; 5255 } 5256 .ly-custom-dropdown-list-element-left { 5257 margin-right: 0.5em; 5258 } 5259 .ly-custom-dropdown-list-element-right { 5260 text-align: left; 5261 } 5262 .ly-custom-dropdown-list-element-left, 5263 .ly-custom-dropdown-list-element-right { 5264 vertical-align: middle; 5265 } 5266 .ly-custom-dropdown-switcher .ly-languages-switcher-link { 5267 margin: 0; 5268 } 5269 .ly-languages-switcher-dropdown { 5270 display: inline-block; 5271 } 5272 .ly-languages-links-switcher { 5273 display: inline-block; 5274 } 5275 .ly-languages-links-switcher > .ly-languages-link { 5276 /*margin-right: 0.5em;*/ 5277 padding: inherit !important; 5278 color: inherit !important; 5279 } 5280 .ly-custom-dropdown-list-element { 5281 /*padding: inherit !important;*/ 5282 text-decoration: none; 5283 } 5284 .ly-is-uppercase { 5285 text-transform: uppercase; 5286 } 5287 .ly-is-transparent.ly-links, 5288 .ly-is-transparent.ly-list, 5289 .ly-is-transparent.ly-currency-switcher, 5290 .ly-is-transparent.ly-custom-dropdown-switcher, 5291 .ly-is-transparent.ly-custom-dropdown-switcher .ly-custom-dropdown-list { 5292 background: transparent !important; 5293 } 5294 .ly-arrow-up { 5295 transform: rotateZ(180deg); 5296 } 5297 5298 .ly-custom-dropdown-switcher .ly-custom-dropdown-list li.current{ 5299 display: none; 5300 } 5301 .ly-custom-dropdown-switcher.ly-is-open .ly-custom-dropdown-list { 5302 display: flex !important; 5303 min-width: 100%; 5304 width: 100%; 5305 flex-direction: column-reverse; 5306 right: 0; 5307 left: auto; 5308 overflow: auto; 5309 max-height: 350px; 5310 max-height: 50vh; 5311 } 5312 5313 .ly-is-dropup .ly-custom-dropdown-list { 5314 bottom: 100%; 5315 } 5316 .ly-hide { 5317 display: none !important; 5318 } 5319 body.ly-force-off #preview-bar-iframe, 5320 body.ly-force-off .ly-languages-switcher { 5321 display: none !important; 5322 } 5323 5324 .ly-close { 5325 position: absolute; 5326 opacity: 0.3; 5327 right: 0; 5328 top: 0; 5329 width: 3em; 5330 height: 3em; 5331 display: inline-block !important; 5332 background: rbga(0,0,0,0); 5333 padding: 1em; 5334 } 5335 .ly-close:hover { 5336 opacity: 1; 5337 } 5338 .ly-close .inner { 5339 transform: translateX(-50%); 5340 position: relative; 5341 width: 100%; 5342 height: 100%; 5343 display: inline-block; 5344 } 5345 .ly-close .inner:before, .ly-close .inner:after { 5346 position: absolute; 5347 left: 1em; 5348 content: ' '; 5349 height: 1em; 5350 width: 2px; 5351 background-color: #333; 5352 } 5353 .ly-close .inner:before { 5354 transform: rotate(45deg); 5355 } 5356 .ly-close .inner:after { 5357 transform: rotate(-45deg); 5358 } 5359 5360 5361 5362 .ly-popup-switcher {} 5363 .ly-popup-switcher .ly-popup-current { 5364 cursor: pointer; 5365 background: transparent; 5366 } 5367 .ly-popup-switcher .ly-popup-modal { 5368 position: fixed; 5369 z-index: 1000; 5370 top: 0; 5371 left: 0; 5372 width: 100%; 5373 height: 100%; 5374 display: none; 5375 justify-content: center;
5376 align-items: center; 5377 } 5378 .ly-popup-switcher.ly-is-open .ly-popup-modal { 5379 display: flex; 5380 } 5381 .ly-popup-switcher .ly-popup-modal-backdrop { 5382 position: fixed; 5383 width: 100%; 5384 height: 100%; 5385 z-index: 0; 5386 top: 0; 5387 left: 0; 5388 background:rgba(0, 0, 0, 0.38); 5389 cursor: pointer; 5390 } 5391 .ly-popup-switcher .ly-popup-modal .ly-popup-modal-content { 5392 padding: 1em; 5393 position: absolute; 5394 z-index: 1000; 5395 } 5396 .ly-popup-switcher .ly-popup-modal .ly-popup-modal-content ul { 5397 padding: 0; 5398 margin: 12px 0 0 0; 5399 list-style: none; 5400 display: flex; 5401 flex-direction: column; 5402 } 5403 .ly-popup-switcher .ly-popup-modal .ly-popup-modal-content ul .ly-languages-switcher-link { 5404 margin: 0; 5405 border: solid 1px; 5406 padding: 1em; 5407 display: block; 5408 min-width: 225px; 5409 margin-top: 1em; 5410 } 5411 .ly-popup-switcher .ly-popup-modal .ly-popup-modal-content ul .ly-languages-switcher-link.current_lang { 5412 display: none; 5413 } 5414 5415 5416 5417 /* Recommendation */ 5418 .ly-recommendation { 5419 display: none; 5420 } 5421 .ly-recommendation.ly-is-open { 5422 display: inline-block; 5423 } 5424 .ly-recommendation form { 5425 display: inline-block; 5426 } 5427 .ly-recommendation .ly-arrow, 5428 .ly-arrow.recommendation { 5429 display: none; 5430 } 5431 .ly-recommendation .ly-arrow.recommendation { 5432 display: inline-block; 5433 } 5434 .ly-recommendation .ly-switcher-wrapper { 5435 font-size: 1em !important; 5436 } 5437 .ly-recommendation .ly-popup-modal .ly-popup-switcher .ly-popup-modal .ly-popup-modal-backdrop { 5438 display: none; 5439 } 5440 .ly-recommendation-form button[type="submit"] { 5441 cursor: pointer; 5442 } 5443 5444 /* Recommendation Banner */ 5445 .ly-recommendation .ly-banner { 5446 position: fixed; 5447 z-index: 100000; 5448 width: 100%; 5449 } 5450 .ly-recommendation .ly-banner .ly-banner-content { 5451 width: 100%; 5452 padding: 1em 30px 1em 1em; 5453 box-shadow: 0 0 20px rgba(0,0,0,.25); 5454 } 5455 .ly-recommendation .ly-banner.top { 5456 top: 0; 5457 } 5458 .ly-recommendation .ly-banner.bottom { 5459 bottom: 0; 5460 } 5461 .ly-recommendation .ly-banner .ly-banner-content .ly-switcher-wrapper { 5462 position: relative !important; 5463 margin: 0 !important; 5464 display: inline-block !important; 5465 } 5466 .ly-recommendation .ly-banner .ly-recommendation-form button[type="submit"] { 5467 margin-left: 10px; 5468 } 5469 5470 5471 /* Recommendation Popup */ 5472 .ly-recommendation .ly-popup-modal { 5473 position: fixed; 5474 z-index: 10000; 5475 } 5476 .ly-recommendation .ly-popup-modal .ly-switcher-wrapper { 5477 position: relative !important; 5478 margin: 0 !important; 5479 display: inline-block !important; 5480 } 5481 .ly-recommendation .ly-popup-modal-backdrop { 5482 position: fixed; 5483 width: 100%; 5484 height: 100%; 5485 z-index: 1000; 5486 top: 0; 5487 left: 0; 5488 background:rgba(0, 0, 0, 0.38); 5489 } 5490 .ly-recommendation .ly-popup-modal .ly-popup-modal-content { 5491 padding: 1em 30px 1em 1em; 5492 } 5493 .ly-recommendation .ly-popup-modal .ly-popup-modal-content .ly-languages-switcher { 5494 position: relative !important; 5495 margin: 0 !important; 5496 } 5497 .ly-recommendation .ly-popup-modal .ly-popup-modal-content h3 { 5498 margin: 0 2em 1em 0; 5499 font-size: inherit; 5500 position: relative; 5501 } 5502 .ly-recommendation .ly-popup-modal.top_left { top: 0; left: 0; margin-right: 0 !important; margin-bottom: 0 !important; padding-right: 0 !important; padding-bottom: 0 !important;} 5503 .ly-recommendation .ly-popup-modal.top_center { top: 0; left: 50%; transform: translateX(-50%); margin-right: 0 !important; margin-bottom: 0 !important; margin-left: 0 !important; padding-right: 0 !important; padding-bottom: 0 !important; padding-left: 0 !important;} 5504 .ly-recommendation .ly-popup-modal.top_right { top: 0; right: 0; margin-left: 0 !important; margin-bottom: 0 !important; padding-left: 0 !important; padding-bottom: 0 !important; } 5505 .ly-recommendation .ly-popup-modal.center_center { top: 50%; left: 50%; transform: translateX(-50%) translateY(-50%); margin: 0 !important; padding: 0 !important; } 5506 .ly-recommendation .ly-popup-modal.bottom_left { bottom: 0; left: 0; margin-right: 0 !important; margin-top: 0 !important; padding-right: 0 !important; padding-top: 0 !important; } 5507 .ly-recommendation .ly-popup-modal.bottom_center { bottom: 0; left: 50%; transform: translateX(-50%); margin-right: 0 !important; margin-left: 0 !important; margin-top: 0 !important; padding-right: 0 !important; padding-left: 0 !important; padding-top: 0 !important; } 5508 .ly-recommendation .ly-popup-modal.bottom_right { bottom: 0; right: 0; margin-left: 0 !important; margin-top: 0 !important; padding-left: 0 !important; padding-top: 0 !important; } 5509 5510 5511 5512 5513 5514 5515</style><!-- langify-v2-scripts-end --> 5516 5517 5518
5519<script src="https://a.klaviyo.com/media/js/onsite/onsite.js"></script>
vendor: 1 bytes, line 5519
5519
5520<script> 5521 var klaviyo = klaviyo || []; 5522 klaviyo.init({ 5523 account: "VWvL5Y", 5524 list: 'SprRdK', 5525 platform: "shopify" 5526 }); 5527 klaviyo.enable("backinstock",{ 5528 trigger: { 5529 product_page_text: "Notify Me When Available", 5530 product_page_class: "klaviyo-out-of-stock-btn", 5531 product_page_text_align: "center", 5532 product_page_margin: "0px", 5533 replace_anchor: false 5534 }, 5535 modal: { 5536 headline: "NOTIFY ME WHEN AVAILABLE", 5537 newsletter_subscribe_label: "You can also subscribe to our email list and receive $10 OFF your next purchase.", 5538 body_content: "We will notify you when the product is back in stock.", 5539 email_field_label: "Email", 5540 button_label: "Notify me when available", 5541 subscription_success_label: "You're in! We'll let you know when it's back.", 5542 footer_content: '', 5543 additional_styles: "\ 5544 .modal-title { \ 5545 text-align: center; \ 5546 } \ 5547 @media (max-width: 993px) { \ 5548 #klaviyo-bis-modal { \ 5549 position: fixed; \ 5550 top: 50%; \ 5551 left: 50%; \ 5552 transform: translate(-50%, -50%); \ 5553 width: 90%; \ 5554 max-width: 500px; \ 5555 margin: auto; \ 5556 z-index: 1000; \ 5557 overflow-y: auto; \ 5558 box-sizing: border-box; \ 5559 } \ 5560 }", 5561 drop_background_color: "#000", 5562 background_color: "#fff", 5563 text_color: "#222", 5564 button_text_color: "#fff", 5565 button_background_color: "#000", 5566 close_button_color: "#ccc", 5567 error_background_color: "#fcd6d7", 5568 error_text_color: "#C72E2F", 5569 success_background_color: "#d3efcd", 5570 success_text_color: "#1B9500" 5571 } 5572 }); 5573</script>
5573 5574 5575 <div id="shopify-block-AR2FMSW9nNERWcU9kV__6174324309569838175" class="shopify-block shopify-app-block"> 5576 5577 5578<div class="smile-shopify-init" 5579 data-channel-key="channel_o21tj1RPso2TN2cN2tU8vN3O" 5580 5581></div> 5582 5583 5584</div><div id="shopify-block-AWFNNenlBR2N5d2ZuU__12657775114333427046" class="shopify-block shopify-app-block">
5584<script> 5585 5586 window.essentialCountdownTimerConfigs = [{"id":"clpgav4im70796218yivzqzke4n","name":"CYBER WEEK","title":"CYBER WEEK Hurry up! Sale ends in: ","customTitle":"","endDate":"2023-12-03T05:00:00.000Z","startDate":"2023-11-30T15:07:00.000Z","subheading":"","fixedMinutes":"120","repeat":false,"timerType":"toDate","type":"top-bar","published":true,"timerPlacement":"","showOnProducts":[],"showOnCollections":[],"legendCopyDays":"Days","legendCopyHours":"Hrs","legendCopyMins":"Mins","legendCopySecs":"Secs","CTAType":"button","CTALink":"https:\/\/canadagrowsupplies.com\/pages\/cyber-week","closeButton":true,"buttonText":"Shop now!","updatedAt":"2023-11-30T15:07:40.100Z","createdAt":"2023-11-27T02:38:30.746Z","onceItEnds":"hide","style":{"font":"","position":"top-page","stickyBar":false,"timerSize":"22","titleSize":"18","borderSize":"0","buttonText":"Shop now!","legendSize":"10","timerColor":"#202223","titleColor":"#202223","borderColor":"#c5c8d1","gradientEnd":"#FFFFFF","legendColor":"#6d7175","singleColor":"#FFFFFF","gradientTurn":"90","gradientStart":"#DDDDDD","backgroundType":"singleBackground","buttonFontSize":"14","closeIconColor":"#6d7175","subheadingSize":"14","buttonFontColor":"#FFFFFF","subheadingColor":"#202223","buttonBorderRadius":"4","announcementBarStyle":"line-centered","buttonBackgroundColor":"#202223"},"recurringDays":[],"startType":"today","endType":"never","productTags":[],"showInCountries":[],"locationType":"","translations":[],"duration":222737236},]; 5587 5588 const essentialCollectionId = null; 5589 window.essentialCountdownTimerMeta = { 5590 productData: null, 5591 productCollections: null, 5592 }; 5593 window.essentialProductId = null 5594 window.essentialProductTags = null 5595 window.essentialCollectionId = null 5596 window.essentialCountdownTimerPageTemplate = "blog" 5597 5598</script>
5598 5599 5600 5601 5602<style> 5603 .essential-countdown-timer-img-reset { 5604 /* wipe common globals */ 5605 box-sizing: content-box; 5606 display: inline; 5607 width: auto; 5608 height: auto; 5609 max-width: none; 5610 max-height: none; 5611 margin: 0; 5612 padding: 0; 5613 border: none; 5614 border-radius: 0; 5615 box-shadow: none; 5616 background: none; 5617 object-fit: fill; 5618 object-position: 50% 50%; 5619 filter: none; 5620 opacity: 1; 5621 position: static; 5622 float: none; 5623 clear: none; 5624 vertical-align: baseline; 5625 transform: none; 5626 transition: none; 5627 animation: none; 5628 /* typography sometimes leaks via universal selectors */ 5629 font: inherit; 5630 line-height: normal; 5631 letter-spacing: normal; 5632 text-align: start; 5633 } 5634</style> 5635 5636 5637</div><div id="shopify-block-AYUlMUG1LTDEwRW1TM__1804893150726543839" class="shopify-block shopify-app-block"><!-- BEGIN app snippet: cur-init -->
5637<script type="text/javascript" id="nova-cur-app-embed-init"> 5638 window.baCurr = window.baCurr || {}; 5639 window.baCurr.rePeat = function () {}; 5640 window.baCurr.config = {"enabled":true,"auto_loc":true,"ui_style":"default","verified":"false","auto_pref":false,"flag_type":"countryandmoney","lightning":true,"round_dec":0.99,"chosen_cur":[{"CAD":"Canadian Dollar (CAD)"},{"USD":"US Dollar (USD)"}],"flag_theme":"default","night_time":false,"custom_code":"{\"css\":\"\"}","flag_design":"modern","mob_visible":true,"price_hover":false,"round_style":"none","mob_placement":"top_right","cart_alert_note":"All orders are processed in [checkout_currency], using the latest exchange rates.","desktop_visible":true,"selector_bg_hex":"#ffffff","cart_alert_state":true,"display_position":"top_right","round_by_default":true,"cart_alert_bg_hex":"#fbf5f5","selector_text_hex":"#1e1e1e","mob_placement_type":"floating","selector_hover_hex":"#ffffff","cart_alert_font_hex":"#1e1e1e","show_all_currencies":false,"selector_border_type":"noBorder","cur_start_wizard_data":{},"display_position_type":"floating","moneyWithCurrencyFormat":true,"selector_box_shadow_enabled":true}; 5641 window.baCurr.config.money_format = "\u003cspan class=money\u003e$ {{amount}}\u003c\/span\u003e"; 5642 window.baCurr.config.money_with_currency_format = "\u003cspan class=money\u003e$ {{amount}} CAD\u003c\/span\u003e"; 5643 window.baCurr.config.user_curr = "CAD"; 5644 window.baCurr.config.multi_curr = []; 5645 5646 window.baCurr.config.final_currency = "CAD" || ''; 5647 window.baCurr.config.multi_curr = "CAD".split(',') || ''; 5648</script>
5648 5649<!-- END app snippet --> 5650 5651 5652</div>
5652<script src="https://cdn.shopify.com/storefront/standard-actions.js" type="module" data-source-attribution="shopify.standard_actions"></script>
5652 5653</body> 5654</html> 5655 5656<div id="shopify-section-sezzle-widget" class="shopify-section"> 5657 5658<style> 5659 .sezzle-shopify-info-button { 5660 5661} 5662.sezzle-shopify-info-button .sezzle-button-text { 5663 5664 font-size: 14px !important; 5665 5666 text-align: 5667 5668} 5669</style> 5670 5671 5672</div> 5673 5674
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.