1 <!DOCTYPE html><html lang="nl"><head><meta charset="utf-8"><meta http-equiv="X-UA-Compatible" content="IE=edge"><meta name="viewport" content="width=device-width, initial-scale=1"><meta name="robots" content="index, follow"><meta name="title" content="Contact - Tuinmaak.nl"><meta name="keywords" content=""><meta name="description" content="Contact - Tuinmaak.nl">
1<script type="text/javascript" charset="UTF-8" src="//cdn.cookie-script.com/s/056e398711ae1272526996a2780a722f.js"></script>
1<link rel="canonical" href="https://tuinmaak.nl/contact.htm" /><meta property="og:site_name" content="Tuinmaak.nl"><meta property="og:title" content="Contact - Tuinmaak.nl"><meta property="og:description" content="Contact - Tuinmaak.nl"><meta property="og:url" content="https://tuinmaak.nl/contact.htm"><meta property="og:type" content="website"><meta property="og:image" content="https://afosto-cdn-01.afosto.com/iusp9/logo/3774576858-Frame1.png">
vendor: 80 bytes, line 1
1<script type="text/javascript" src="https://www.googletagmanager.com/gtag/js?id=
1AW-755632653
vendor: 11 bytes, line 1
1"></script>
1<script type="text/javascript" src="https://www.googletagmanager.com/gtag/js?id=ACL_o75gBEI2UqOgC"></script>
vendor: 80 bytes, line 1
1<script type="text/javascript" src="https://www.googletagmanager.com/gtag/js?id=
1G-VF3YY7SMCH
vendor: 11 bytes, line 1
1"></script>
1<script type="text/javascript">/*<![CDATA[*/ window.dataLayer = window.dataLayer || []; window.visitor_id = 'dd6bdbab065d8e726d52e8f919dc9f27032779cf'; function gtag(){dataLayer.push(arguments);} gtag('consent', 'default', { 'ad_storage': 'denied', 'ad_user_data': 'denied', 'ad_personalization': 'denied', 'analytics_storage': 'denied', 'functionality_storage': 'denied', 'security_storage': 'granted', 'wait_for_update': 2000 }); gtag('set', 'ads_data_redaction', true); gtag('set', 'url_passthrough', true); gtag('js', new Date()); gtag('set','client_id','dd6bdbab065d8e726d52e8f919dc9f27032779cf'); gtag('config', 'G-VF3YY7SMCH'); gtag('config', 'AW-755632653'); gtag('config', 'ACL_o75gBEI2UqOgC'); if (document.cookie.indexOf('cookieconsent_status') > -1) { gtag('consent', 'update', { 'ad_user_data': 'granted', 'ad_personalization': 'granted', 'ad_storage': 'granted', 'analytics_storage': 'granted', 'functionality_storage': 'granted' }); } function afTrackEvent () { gtag.apply(null, arguments);}
vendor: 330 bytes, line 1
1 (function(w,d,s,l,i){w[l]=w[l]||[];w[l].push( {'gtm.start': new Date().getTime(),event:'gtm.js'} );var f=d.getElementsByTagName(s)[0], j=d.createElement(s),dl=l!='dataLayer'?'&l='+l:'';j.async=true;j.src= 'https://www.googletagmanager.com/gtm.js?id='+i+dl;f.parentNode.insertBefore(j,f); })(window,document,'script','dataLayer','
1GTM-PL9VRRG2
vendor: 3 bytes, line 1
1');
1/*]]>*/</script>
1<script type="application/ld+json">[{"@context":"https:\/\/schema.org","@type":"BreadcrumbList"},{"@context":"https:\/\/schema.org","@type":"Organization","name":"Tuinmaak.nl","email":"[email protected]","taxID":"BTW NL861016282B01","logo":"https:\/\/afosto-cdn-01.afosto.com\/iusp9\/logo\/3774576858-Frame1.png","url":"https:\/\/tuinmaak.nl\/"}]</script>
1<script> !function(f,b,e,v,n,t,s){if(f.fbq)return;n=f.fbq=function(){n.callMethod? n.callMethod.apply(n,arguments):n.queue.push(arguments)};if(!f._fbq)f._fbq=n; n.push=n;n.loaded=!0;n.version='2.9';n.queue=[];t=b.createElement(e);t.async=!0; t.src=v;s=b.getElementsByTagName(e)[0];s.parentNode.insertBefore(t,s)}(window, document,'script','//connect.facebook.net/en_US/fbevents.js'); fbq('init', '2242837615978956'); fbq('track', 'PageView'); </script>
1<noscript><img height="1" width="1" style="display:none" src="https://www.facebook.com/tr?id=2242837615978956&ev=PageView&noscript=1"/></noscript>
vendor: 75 bytes, line 1
1<script src="https://www.google.com/recaptcha/api.js" async defer></script>
1<title>Contact - Tuinmaak.nl</title><link rel="icon" type="image/png" href="https://cdn.quicq.io/tnmk/asset/1709845499-tuinmaak-favicon-128.png?w=128&h=128" /><link rel="icon" href="https://tuinmaak.nl/favicon.ico" /><meta name="apple-mobile-web-app-title" content="Tuinmaak.nl"><meta name="application-name" content="Tuinmaak.nl"><meta name="msapplication-TileColor" content="#2C3E50"><meta name="theme-color" content="#2C3E50"><link rel="stylesheet" href="https://afosto-cdn-01.afosto.com/css/3495771940-3256.css">
1<script src="https://kit.fontawesome.com/7e9770eb9f.js" crossorigin="anonymous"></script>
1<meta name="facebook-domain-verification" content="n64ran0em2xnob71sbwfspg8fnqtfr" /></head><body class="type-page" data-af-currency="â¬" data-af-currency-iso="EUR" >
vendor: 67 bytes, line 1
1<noscript><iframe src="https://www.googletagmanager.com/ns.html?id=
1GTM-PL9VRRG2
vendor: 82 bytes, line 1
1" height="0" width="0" style="display:none;visibility:hidden"></iframe></noscript>
1<div id="fb-root"></div>
1<script> (function(d, s, id) { var js, fjs = d.getElementsByTagName(s)[0]; if (d.getElementById(id)) return; js = d.createElement(s); js.id = id; js.src = "//connect.facebook.net/nl_NL/sdk.js#xfbml=1&version=v2.7&appId=1876097765947515"; fjs.parentNode.insertBefore(js, fjs); }(document, 'script', 'facebook-jssdk')); </script>
1<nav id="mobile-menu-container" class="visible-xs visible-sm" style="opacity: 0" data-search-url="https://tuinmaak.nl/search" data-search-text="Zoeken"><ul><li class=" "><a data-af-href="/tuinafscheiding/" title="Tuinafscheiding">Tuinafscheiding</a><ul class="vertical"><li><a data-af-href="/schapenhek/" title="Schapenhek">Schapenhek</a></li><li><a data-af-href="/loopdeuren/" title="Loopdeuren">Loopdeuren</a></li><li><a data-af-href="/palen/" title="Palen">Palen</a></li><li><a data-af-href="/borderrand/" title="Borderranden">Borderranden</a></li><li><a data-af-href="/hazelaarscherm/" title="Gevlochten hazelaarscherm">Hazelaarscherm</a></li><li><a data-af-href="/omheinings-netten/" title="Omheinings Netten">Omheinings Netten</a></li><li><a data-af-href="/wilgenmat/" title="Wilgenmat en wilgenscherm">Wilgenmat/wilgenscherm</a></li><li><a data-af-href="/draadkrammen.htm" title="Bevestigingsmaterialen">Bevestigingsmaterialen</a></li><li><a data-af-href="/rietmatten/" title="Rietmatten">Rietmatten</a></li><li><a data-af-href="/bamboematten/" title="Bamboematten">Bamboematten</a></li><li><a data-af-href="/heidematten/" title="Heidematten">Heidematten</a></li><li><a data-af-href="/boomschorsmatten/" title="Boomschorsmatten">Boomschorsmatten</a></li></ul></li><li class=" "><a data-af-href="/tuinmeubelen/" title="Tuinmeubelen">Tuinmeubelen</a><ul class="vertical"><li><a data-af-href="/tuinbanken/" title="Tuinbanken">Tuinbanken</a></li><li><a data-af-href="/tuinstoelen/" title="Tuinstoelen">Tuinstoelen</a></li><li><a data-af-href="/tuintafels/" title="Tuintafels">Tuintafels</a></li><li><a data-af-href="/opbergboxen/" title="Opbergboxen">Opbergboxen</a></li><li><a data-af-href="/buitenkeukens/" title="Buitenkeukens">Buitenkeukens</a></li></ul></li><li class=" "><a data-af-href="/tuin-artikelen/" title="Tuin Artikelen">Tuin Artikelen</a><ul class="vertical"><li><a data-af-href="/vuurschalen/" title="Vuurschalen">Vuurschalen</a></li><li><a data-af-href="/trampolines/" title="Trampolines">Trampolines</a></li><li><a data-af-href="/tuinhaarden/" title="Tuinhaarden">Tuinhaarden</a></li><li><a data-af-href="/haardhout-opslag/" title="Haardhout Opslag">Haardhout Opslag</a></li><li><a data-af-href="/bloembakken/" title="Bloembakken">Bloembakken</a></li><li><a data-af-href="/tuinkunst-cortenstaal/" title="Tuinkunst Cortenstaal">Tuinkunst Cortenstaal</a></li><li><a data-af-href="/speelgoed/" title="Speelgoed">Speelgoed</a></li><li><a data-af-href="/schapenvachten/" title="Schapenvachten">Schapenvachten</a></li><li><a data-af-href="/tuindecoratie/" title="Decoratie">Decoratie</a></li><li><a data-af-href="/waterschalen/" title="Waterschalen">Waterschalen</a></li><li><a data-af-href="/tuin-artikelen/tuinverlichting/" title="Tuinverlichting">Tuinverlichting</a></li><li><a data-af-href="/wilgentenen-speelhuis/" title="Wilgentenen Speelhuis">Wilgentenen Speelhuis</a></li><li><a data-af-href="/tuin-artikelen/moestuin/" title="Moestuin">Moestuin</a></li></ul></li><li class=" "><a data-af-href="/planten/" title="Planten">Planten</a></li><li class=" "><a data-af-href="/dier-en-tuin/" title="Dier en Tuin">Dier & Tuin</a><ul class="vertical"><li><a data-af-href="/dieren-verjagers-en-vallen/" title="Dieren verjagers en vallen">Dieren verjagers en vallen</a></li><li><a data-af-href="/egels-en-eekhoorns/" title="Egels en eekhoorns">Egels en eekhoorns</a></li><li><a data-af-href="/honden-en-katten/" title="Honden en katten">Honden en katten</a></li><li><a data-af-href="/insecten/" title="Insecten">Insecten</a></li><li><a data-af-href="/vogels/" title="Vogels">Vogels</a></li></ul></li><li class=" "><a data-af-href="/container-ombouw/" title="Container Ombouw">Container Ombouw</a></li><li class=" "><a data-af-href="/regentonnen/" title="Regentonnen">Regentonnen</a></li><li class=" "><a data-af-href="/sale/" title="Tuinartikelen Uitverkoop">Sale</a></li><li class=" no-border"><a data-af-href="/cadeautips/" title="Tuinartikelen Cadeutips">Cadeautips</a><ul class="vertical"><li><a data-af-href="/cadeautips/?hoofdcategorie=kerst" title="Kerst">Kerst</a></li></ul></li></ul></nav><header><div class="header-usps hidden"><div class="container"><div class="col-xs-12 usps-bar"><span class="usps-item"><i class="fa fa-check text-success"> </i> Gratis afhalen in Groningen </span><span class="usps-item"><i class="fa fa-check text-success"> </i> Razendsnelle Levering </span><span class="usps-item"><i class="fa fa-check text-success"> </i> Snelle bezorging </span><span class="usps-item"><i class="fa fa-check text-success"> </i> Verzendkosten pakket groot ⬠75,00 (Pallet)Verzendkosten XXl pallet ⬠125,00 (Speelhuisjes/ Schermen 180x180)<br></span><span class="usps-item"><i class="fa fa-check text-success"> </i> Verzendkosten pakket klein ⬠9,95 (doos)Verzendkosten pakket middel: ⬠45,00 </span></div></div></div><nav class="navbar navbar-default"><div class="bg-primary"><div class="container"><div class="d-flex"><div class="flex-12-bc flex-md-8-bc form-usps py-15 py-md-10 d-flex justify-content-between align-items-center"><valued-widget layout="menu" size="medium" theme="light" tooltip="disable" class=" hidden-xs hidden-sm my-n10" style="width: 180px; height: 40px; "></valued-widget><span class="usps-item"><i class="fa fa-check"> </i> Gratis afhalen in Groningen </span><span class="usps-item"><i class="fa fa-check"> </i> Razendsnelle Levering </span></div><div class="flex-sm-4-bc navbar-utilities hidden-xs hidden-sm"><ul class="nav navbar-nav pull-right"><li class="mr-8"><a href="/cdn-cgi/l/email-protection#167f7870795662637f787b77777d38787a" target="_blank" rel="noopener noreferrer" title="Mail [email protected]"><i class="fa fa-fw fa-envelope"></i> <span class="__cf_email__" data-cfemail="b5dcdbd3daf5c1c0dcdbd8d4d4de9bdbd9">[email protected]</span> </a></li><li><a href="tel:+31502081070" title="Bel 050-2081070"><i class="fa fa-fw fa-phone"></i> 050-2081070 </a></li></ul></div></div></div></div><div class="container"><div class="navbar-header my-8"><div class="toggle-container visible-xs"><button class="toggle-mobile-menu navbar-toggle"><span class="sr-only">Toggle navigation</span><i class="fa fa-lg fa-bars"></i></button></div><div class="navbar-brand-wrapper"><a href="https://tuinmaak.nl/"><svg id="Laag_1" class="icon-h-64 header-logo-svg" data-name="Laag 1" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 1133.86 313.46"><defs><style>.cls-1{fill:#0f7d4b;}.cls-2{fill:#04110e;}.cls-3{fill:#151413;}</style></defs><circle class="cls-1" cx="157.04" cy="154.87" r="122.72"/><path class="cls-2" d="M191.09,156.3c-11.32.95-15.53,11.36-15.32,13.79a48.94,48.94,0,0,1-9.73,8.15,10.72,10.72,0,0,1-7.92,1.22c-3.42-1.77-5.24-24.22.3-28.73,0,0,6,1.41,10.75-.17,4.44-1.45,8.17-8.32,8.84-9,0,0,27.69,1.82,27.58-23.75-.08-15.79,3.65-17.38,3.65-17.38s-21.68-1.35-34.17,17.5c-3.54,5.34-4.87,16.26.7,21.84,0,0-4.3,6.5-8.07,7.63-2.72.82-8,.53-8.46.22-2-1.25.32-12.25,5-21.49,6-11.94,2.75-24.93,2.75-24.93s9.74-15.56,2.2-28c-9.46-15.66-30-18.83-36.3-20.5,0,0,5.1,5.67,4.25,15.79-3.07,36.29,22.73,33.64,25.35,33.76,0,0,3.29,11.54-2.31,22.76a62.85,62.85,0,0,0-5.43,19.24l-7.94-7.27s3-8.87-6.22-16.
165c-6.07-5.1-16.8-9.06-32-8.2,0,0,2.81,2,5,9.54,8,28.15,26.67,18.69,31.42,17.76l8.17,9.7s-3.46,4-2.54,22a5.15,5.15,0,0,1-4.41-1.94s-2.32-14.67-18.82-18.64C108.3,145.91,94,163.11,94,163.11a53.47,53.47,0,0,1,17.71,9.53c17.56,14,33.62,0,33.62,0s5.88,1.13,7.55,8.33l1.19,5.67H117.48v15.79h76V186.64H160.33l-1-4a12,12,0,0,0,7.6-1.39c3.44-1.84,9.95-7.92,9.95-7.92s8.07,14.4,27.63,4.15c11.33-5.93,15.61-3,15.61-3S204.29,155.2,191.09,156.3Z"/><path class="cls-3" d="M117.48,205.57v24.24s0,26.33,37.88,26.34,37.88-21.63,38.1-26.34-.08-24.24-.08-24.24Z"/><path class="cls-2" d="M117.41,206.55v24.24s0,26.32,37.88,26.33,37.87-21.62,38.09-26.33-.07-24.24-.07-24.24Z"/><path class="cls-2" d="M399.37,112.25v11.82H369.28V208.3H355.57V124.07H324.91V112.25Z"/><path class="cls-2" d="M486.91,112.39v54a92.59,92.59,0,0,1-1.23,17.23,32.71,32.71,0,0,1-4.39,11.11,31,31,0,0,1-12.8,11.53,41.55,41.55,0,0,1-18.56,3.94,43.9,43.9,0,0,1-14.59-2.32,33,33,0,0,1-11.43-6.65,31.11,31.11,0,0,1-7.59-10.65q-3.74-8.29-3.73-25.94V112.39H426.3v50.28a125.69,125.69,0,0,0,.67,15,27.57,27.57,0,0,0,2.78,9.29,19.67,19.67,0,0,0,8.26,8.47,25,25,0,0,0,12.34,3.06q7.59,0,12.51-3.38a20.45,20.45,0,0,0,7.35-9.1,39.3,39.3,0,0,0,2.85-13.19q.13-1.83.14-9.63V112.39Z"/><path class="cls-2" d="M526.21,112.25V208.3H512.5V112.25Z"/><path class="cls-2" d="M628.73,112.25V208.3H611l-30.37-52.1q-7.87-13.92-10.87-19.72a83.19,83.19,0,0,1-5.31-13.26q1.2,15.83,1.2,36.28v48.8H552V112.25h18.7l32.7,56.61q9.92,17.22,13.29,27.49-.92-9.63-1.06-12.94-.14-5.62-.24-11.11c-.07-3.66-.12-6-.14-6.89s0-3.26,0-7v-46.2Z"/><path class="cls-2" d="M759,112.25V208.3H745.45V153.46c0-3,.09-6.13.14-9.53s.09-6.55.14-9.46.08-5.31.11-7.2,0-4.8,0-8.69q-1.39,4.86-3.86,12.13t-5.09,14.38q-2.64,7.11-6.15,16.52L712.64,208.3H699.37l-18.13-46.69q-4.08-10.68-8.47-22.22t-7.06-20.81a5.52,5.52,0,0,1-.14,1.48c0,.42,0,1.14.14,2.14s.18,1.82.25,2.43.13,1.29.18,2q1.05,8.92,1.05,27.77V208.3H653.48V112.25H676l19,48.24q4.21,10.55,6.92,17.79a127.19,127.19,0,0,1,4.46,14.48q3.43-12,11.52-32.55l18.27-48Z"/><path class="cls-2" d="M827.46,112.25l41.6,96.05H853.6L843.55,184H796.9L787,208.3H772.17l40.89-96.05Zm11.32,60.05-11-26.79q-3.3-7.66-4.91-12.06a92.54,92.54,0,0,1-2.88-9.38q-1.07,3.86-2.5,7.7t-5.58,14L801.26,172.3Z"/><path class="cls-2" d="M925.83,112.25l41.6,96.05H952L941.92,184H895.27l-9.91,24.33H870.54l40.89-96.05Zm11.31,60.05-11-26.79q-3.3-7.66-4.92-12.06a97.93,97.93,0,0,1-2.88-9.38q-1,3.86-2.49,7.7t-5.59,14L899.62,172.3Z"/><path class="cls-2" d="M991.21,112.25v32.14c0,3.37-.09,7.22-.28,11.53q3.59-4.29,7.88-8.79l33.54-34.88h18.49l-45.42,45.5,49.29,50.55h-20L999.86,171q-3-3-8.79-10.27c0,1.59.09,3,.11,4.36s0,3.12,0,5.41V208.3H977.5V112.25Z"/></svg></a></div><form class="navbar-form px-15 py-8" role="search" method="GET" action="https://tuinmaak.nl/search"><div class="input-group"><input type="text" class="form-control no-fix-up border-right-none" value="" name="q" placeholder="Zoeken" id="search-field" autocomplete="off" ><span class="input-group-btn bg-white search-button-outer"><button type="submit" class="search-button btn btn-default border-left-none bg-none"><i class="fa fa-fw fa-search text-gray"></i></button></span></div><div class="search-focus-overlay"></div></form><div class="navbar-utilities"><ul class="nav navbar-nav pull-right"><li class="text-center" id="account-display"><a href="#" id="account-link"><i class="fa fa-user-times"></i><br /><span class="hidden-xs account-link-label"> Inloggen </span></a></li><li class="text-center"><a class="cart-toggle" data-toggle="drawer" data-target="#cart-drawer"><i class="fa fa-shopping-cart"></i><span class="badge">-</span><br><span class="hidden-xs">Winkelwagen</span></a></li></ul></div></div></div><div class="main-nav"><div class="container"><div id="main-navbar-nav"><form class="navbar-form visible-xs" role="search" method="GET" action="https://tuinmaak.nl/search"><div class="input-group"><input type="text" class="form-control no-fix-up" value="" name="q" placeholder="Zoeken" id="search-field" autocomplete="off" ><span class="input-group-btn"><button type="submit" class="btn btn-success"><i class="fa fa-search"></i></button></span></div><div class="search-focus-overlay"></div></form><ul class="nav navbar-nav dropdown-navigation"><li><a href="/tuinafscheiding/" title="Tuinafscheiding">Tuinafscheiding</a><div class="sub-menu hidden-xs">
1<div class="sub-menu-menu clearfix"><ul class="list-unstyled"><li><a href="/schapenhek/" title="Schapenhek"> Schapenhek </a></li><li><a href="/loopdeuren/" title="Loopdeuren"> Loopdeuren </a></li><li><a href="/palen/" title="Palen"> Palen </a></li><li><a href="/borderrand/" title="Borderranden"> Borderranden </a></li><li><a href="/hazelaarscherm/" title="Gevlochten hazelaarscherm"> Hazelaarscherm </a></li><li><a href="/omheinings-netten/" title="Omheinings Netten"> Omheinings Netten </a></li><li><a href="/wilgenmat/" title="Wilgenmat en wilgenscherm"> Wilgenmat/wilgenscherm </a></li><li><a href="/draadkrammen.htm" title="Bevestigingsmaterialen"> Bevestigingsmaterialen </a></li><li><a href="/rietmatten/" title="Rietmatten"> Rietmatten </a></li><li><a href="/bamboematten/" title="Bamboematten"> Bamboematten </a></li><li><a href="/heidematten/" title="Heidematten"> Heidematten </a></li><li><a href="/boomschorsmatten/" title="Boomschorsmatten"> Boomschorsmatten </a></li></ul></div><div class="sub-menu-image"></div></div></li><li><a href="/tuinmeubelen/" title="Tuinmeubelen">Tuinmeubelen</a><div class="sub-menu hidden-xs"><div class="sub-menu-menu clearfix"><ul class="list-unstyled"><li><a href="/tuinbanken/" title="Tuinbanken"> Tuinbanken </a></li><li><a href="/tuinstoelen/" title="Tuinstoelen"> Tuinstoelen </a></li><li><a href="/tuintafels/" title="Tuintafels"> Tuintafels </a></li><li><a href="/opbergboxen/" title="Opbergboxen"> Opbergboxen </a></li><li><a href="/buitenkeukens/" title="Buitenkeukens"> Buitenkeukens </a></li></ul></div><div class="sub-menu-image"></div></div></li><li><a href="/tuin-artikelen/" title="Tuin Artikelen">Tuin Artikelen</a><div class="sub-menu hidden-xs"><div class="sub-menu-menu clearfix"><ul class="list-unstyled"><li><a href="/vuurschalen/" title="Vuurschalen"> Vuurschalen </a></li><li><a href="/trampolines/" title="Trampolines"> Trampolines </a></li><li><a href="/tuinhaarden/" title="Tuinhaarden"> Tuinhaarden </a></li><li><a href="/haardhout-opslag/" title="Haardhout Opslag"> Haardhout Opslag </a></li><li><a href="/bloembakken/" title="Bloembakken"> Bloembakken </a></li><li><a href="/tuinkunst-cortenstaal/" title="Tuinkunst Cortenstaal"> Tuinkunst Cortenstaal </a></li><li><a href="/speelgoed/" title="Speelgoed"> Speelgoed </a></li><li><a href="/schapenvachten/" title="Schapenvachten"> Schapenvachten </a></li><li><a href="/tuindecoratie/" title="Decoratie"> Decoratie </a></li><li><a href="/waterschalen/" title="Waterschalen"> Waterschalen </a></li><li><a href="/tuin-artikelen/tuinverlichting/" title="Tuinverlichting"> Tuinverlichting </a></li><li><a href="/wilgentenen-speelhuis/" title="Wilgentenen Speelhuis"> Wilgentenen Speelhuis </a></li><li><a href="/tuin-artikelen/moestuin/" title="Moestuin"> Moestuin </a></li></ul></div><div class="sub-menu-image"></div></div></li><li><a href="/planten/" title="Planten">Planten</a></li><li><a href="/dier-en-tuin/" title="Dier en Tuin">Dier & Tuin</a><div class="sub-menu hidden-xs"><div class="sub-menu-menu clearfix"><ul class="list-unstyled"><li><a href="/dieren-verjagers-en-vallen/" title="Dieren verjagers en vallen"> Dieren verjagers en vallen </a></li><li><a href="/egels-en-eekhoorns/" title="Egels en eekhoorns"> Egels en eekhoorns </a></li><li><a href="/honden-en-katten/" title="Honden en katten"> Honden en katten </a></li><li><a href="/insecten/" title="Insecten"> Insecten </a></li><li><a href="/vogels/" title="Vogels"> Vogels </a></li></ul></div><div class="sub-menu-image"></div></div></li><li><a href="/container-ombouw/" title="Container Ombouw">Container Ombouw</a></li><li><a href="/regentonnen/" title="Regentonnen">Regentonnen</a></li><li><a href="/sale/" title="Tuinartikelen Uitverkoop">Sale</a></li><li><a href="/cadeautips/" title="Tuinartikelen Cadeutips">Cadeautips</a><div class="sub-menu hidden-xs"><div class="sub-menu-menu clearfix"><ul class="list-unstyled"><li><a href="/cadeautips/?hoofdcategorie=kerst" title="Kerst"> Kerst </a></li></ul></div><div class="sub-menu-image"></div></div></li></ul></div></div></div><div class="container"><div class="position-relative"><div id="cart-overview"><div class="cart-overview-header"><div class="col-xs-12"><span class="h3">Winkelwagen</span></div></div><div class="cart-overview-inner"><div class="text-center"><span class="h3">Uw winkelwagen is leeg.</span><span class="h5">Vul hem met producten.</span></div></div><div class="cart-overview-buttons"><a href="https://tuinmaak.nl/cart" class="btn btn-primary disabled"> Afrekenen </a></div></div></div></div><div class="main-nav-backdrop"></div></nav></header>
vendor: 108 bytes, line 1
1<script data-cfasync="false" src="/cdn-cgi/scripts/5c5dd728/cloudflare-static/email-decode.min.js"></script>
1<script> (function () { var kop = document.querySelector('header'); var nav = kop && kop.querySelector('.navbar'); if (!nav) { return; } var zoek = nav.querySelector('.navbar-form'); function zet() { if (window.innerWidth >= 768) { kop.style.height = ''; return; } var top = nav.getBoundingClientRect().top; var h = nav.offsetHeight; if (zoek && zoek.offsetHeight) { h = Math.max(h, Math.ceil(zoek.getBoundingClientRect().bottom - top)); } kop.style.height = h + 'px'; } zet(); if (window.ResizeObserver) { var ro = new ResizeObserver(zet); ro.observe(nav); if (zoek) { ro.observe(zoek); } } window.addEventListener('resize', zet); })(); </script>
1<div id="cart-drawer-container"></div><div class="cart-overview-underlay"></div><div class="page-wrap overflow-hidden"><div></div><div class="page-overlay"></div><div id="content" class="mt-md-16"><div class="container"><div class="row"><div class="col-md-12 main-page content page"><div class="row"><div class="col-xs-12"><div class="row"><div class="col-xs-12 contact"><h1>Contact</h1><hr><div class="row"><div class="col-xs-12 col-md-6"><form method="post" action="/form/contact"><input name="shop_name" type="hidden" value="Tuinmaak.nl"><div class="row"><div class="col-xs-12 form-group"><label for="name">Naam</label><input name="name" type="text" class="form-control" id="name" placeholder="Voornaam Achternaam" required></div></div><div class="row"><div class="col-xs-12 form-group"><label for="email">E-mailadres</label><input name="email" type="email" class="form-control" id="email" placeholder="[email protected]" required></div></div><div class="row"><div class="col-xs-12 form-group"><label for="bericht">Stel hier je vraag </label><textarea name="message" id="bericht" class="form-control" rows="5" placeholder="Bericht" required></textarea></div></div><div class="row"><div class="col-xs-12 mb-10"><div class="g-recaptcha" data-siteKey="6LeHh3UUAAAAAPT9k0A52x89f3iwsDn8ctPzkfHH"></div></div></div><div class="row"><div class="col-xs-12 form-group"><button type="submit" class="btn btn-success">Verstuur</button></div></div></form></div><div class="col-xs-12 col-md-6"><div class="lead"></div><ul class="list-unstyled list-inline"><li><a href="http://facebook.com" class="contact-social-icon" target="_blank" rel="noopener"><span class="fa-stack fa-lg fa-2x social-icon"><i class="fa fa-square fa-stack-2x"></i><i class="fa fa-facebook fa-stack-1x text-white"></i></span></a></li><li><a href="http://twitter.com" class="contact-social-icon" target="_blank" rel="noopener"><span class="fa-stack fa-lg fa-2x social-icon"><i class="fa fa-square fa-stack-2x"></i><i class="fa fa-twitter fa-stack-1x text-white"></i></span></a></li><li><a href="http://plus.google.com" class="contact-social-icon" target="_blank" rel="noopener"><span class="fa-stack fa-lg fa-2x social-icon"><i class="fa fa-square fa-stack-2x"></i><i class="fa fa-google-plus fa-stack-1x text-white"></i></span></a></li></ul></div></div></div></div></div></div></div></div> </div></div></div></div></div><footer><section class="top-footer hidden-xs hidden-sm"><div class="container"><hr class="bg-gray"><div class="top-footer-inner"><span class="usps-item"><i class="fa fa-fw fa-check"></i> Eigen designs </span><span class="usps-item"><i class="fa fa-fw fa-check"></i> Productie in eigen beheer </span><span class="usps-item"><i class="fa fa-fw fa-check"></i> Snelle bezorging </span></div></div></section><section class="main-footer"><div class="container"><div class="row"><div class="col-xs-12 col-md-4 col-lg-3"><span class="h4">Klantenservice</span><ul class="list-unstyled list"><li class="active list-item-underlined"><a href="https://tuinmaak.nl/contact.htm" class="text-gray">Contact</a></li><li class=" list-item-underlined"><a href="https://tuinmaak.nl/privacy" class="text-gray">Privacy</a></li><li class=" list-item-underlined"><a href="https://tuinmaak.nl/algemene-voorwaarden" class="text-gray">Algemene voorwaarden</a></li><li class=" list-item-underlined"><a href="https://tuinmaak.nl/ruilen-en-retourneren" class="text-gray">Ruilen en retourneren</a></li><li class=" list-item-underlined"><a href="/blog/" class="text-gray">Blog</a></li><li class=" list-item-underlined"><a href="https://tuinmaak.nl/veel-gestelde-vragen" class="text-gray">Veel gestelde vragen</a></li><li class=" list-item-underlined"><a href="https://tuinmaak.nl/verzendkosten" class="text-gray">Verzendkosten</a></li><li class=" list-item-underlined"><a href="https://tuinmaak.nl/klachten-regeling" class="text-gray">Klachten regeling</a></li></ul></div><div class="col-xs-12 col-md-4 col-lg-6"><div class="d-flex justify-content-start justify-content-md-center"><div><span class="h4">Contactgegevens</span><address class="text-gray"><p><strong>Bezoek adres:</strong></p><p>Hoendiep 160 - Loods 2<br>9745 EA Groningen </p><p>KVK : 77468104<br></p><p>BTW nummer: NL861016282B01<br></p><p>Nb Dit is op het terrein bij Nijstad handel. Rij via de linkerzijde naar achteren naar Loods 2 </p><p>Openingstijden voor afhalen:<br>Maandag t/m vrijdag van 8.00-16.00 uur<br><em>*Zaterdag gesloten</em><span></span></p><p><strong>** Tussen kerst en oud en nieuw zijn wij gesloten (week 52 en week 1)</strong></p><p><strong>Post adres:</strong></p><p>Hoendiep 160 - Loods 2<br>9745 EA Groningen</p><p><span></span></p><a href="tel:+31502081070" title="Bel 050-2081070"><i class="fa fa-phone fa-fw"></i> 050-2081070</a><br /><a href="/cdn-cgi/l/email-protection#f29b9c949db286879b9c9f939399dc9c9e" title="Stuur een e-mail naar [email protected]"><i class="fa fa-envelope fa-fw"></i> <span class="__cf_email__" data-cfemail="21484f474e615554484f4c40404a0f4f4d">[email protected]</span></a></address></div></div></div><div class="col-xs-12 col-md-4 col-lg-3"><form action="https://tuinmaak.us5.list-manage.com/subscribe/post?u=d7a8f32fda943e460923277eb&id=c9946cf84c" method="post" class="form-validate mb-30"><span class="h4">Nieuwsbrief</span><p class="lh-initial text-gray"> Meld je aan voor onze nieuwsbrief en ontvang de beste aanbiedingen en persoonlijk advies. </p><div class="form-group material-input"><input type="email" name="EMAIL" id="newsletter-email" class="form-control" placeholder=" " required /><label for="newsletter-email" class="text-gray">E-mailadres</label></div><div style="position: absolute; left: -5000px;" aria-hidden="true"><input type="text" name="b_d7a8f32fda943e460923277eb_c9946cf84c" tabindex="-1" value=""></div><button type="submit" class="btn btn-black-inverse btn-block">Inschrijven</button></form></div></div></div></section><section class="bottom-footer"><div class="container"><div class=" d-flex justify-content-between align-items-center"><i> © 2026 - Tuinmaak.nl </i><ul class="mb-0 list-inline"><li><img class="icon-h-30 lazyload" data-src="https://cdn.quicq.io/tnmk/icon/5264292750-ideal.png?h=46"></li><li><img class="icon-h-30 lazyload" data-src="https://cdn.quicq.io/tnmk/icon/3228771530-bancontact.png?h=46"></li></ul><div class="afosto-logo"><a href="//afosto.com/?utm_source=customer&utm_medium=footer" target="_blank"><svg viewBox="0 0 348 44" fill="none" xmlns="http://www.w3.org/2000/svg" height="18"><path class="powered-icon" fill="currentColor" d="M340.9 10.2H334c-2.5 0-4.3.6-5.4 1.7-1.1 1-1.7 2.7-1.7 4.8v15.8c0 2 .6 3.7 1.7 4.8 1 1 2.9 1.6 5.4 1.6h6.9c2.5 0 4.3-.5 5.4-1.6 1-1.1 1.6-2.7 1.6-4.8V16.7c0-2.1-.5-3.7-1.6-4.8-1-1.1-3-1.7-5.4-1.7zm-.8 21.1c0 1-.6 1.5-1.6 1.5h-2.1c-1 0-1.6-.5-1.6-1.5V17.8c0-1 .5-1.4 1.6-1.4h2.1c1 0 1.6.5 1.6 1.4v13.5zM321 6.6a1.9 1.9 0 00-.5-1.3 1.8 1.8 0 00-1.2-.5H313v5.4h-2.9v6.1h2.9v16.1c0 4.3 2.4 6.5 7.2 6.5h4.5v-6.2h-2.2c-1 0-1.5-.4-1.5-1.4v-15h3.7v-6h-3.7V6.5zM301.3 22H298c-.6 0-1-.1-1.2-.3-.2-.3-.3-.6-.3-1.1v-3.5c0-.5 0-.8.3-1 .2-.3.6-.4 1.2-.4h.9c.6 0 1 .1 1.2.4.2.2.3.5.3 1v2.1h7.7v-2.5c0-4.3-2.4-6.5-7.3-6.5H296c-4.8 0-7.3 2.2-7.3 6.5V21c0 4.3 2.4 6.4 7.2 6.4h3.3c.6 0 1 0 1.2.3.3.2.4.6.4 1V32c0 1-.6 1.5-1.6 1.5h-1c-1 0-1.5-.5-1.5-1.5v-2h-7.8v2.5c0 4.3 2.4 6.4 7.3 6.4h5c5 0 7.4-2.1 7.4-6.4v-4.2c0-4.2-2.4-6.3-7.2-6.3zM278.7 10.2H272c-2.6 0-4.4.6-5.5 1.7-1 1-1.6 2.7-1.6 4.8v15.8c0 2 .6 3.7 1.6 4.8 1.1 1 3 1.6 5.5 1.6h6.8c2.6 0 4.4-.5 5.5-1.6 1-1.1 1.6-2.7 1.6-4.8V16.7c0-2.1-.5-3.7-1.6-4.8-1.1-1.1-3-1.7-5.5-1.7zm-.8 21.1c0 1-.5 1.5-1.5 1.5h-2.2c-1 0-1.5-.5-1.5-1.5V17.8c0-1 .5-1.4 1.5-1.4h2.2c1 0 1.5.5 1.5 1.4v13.5zM260.5 6.1h2.8V0h-5.1c-4.9 0-7.3 2.1-7.3 6.4v3.8h-2.4v6.2h2.4v20.9a1.6 1.6 0 001.
16 1.6h6.5V16.4h3v-6.2h-3V7.6c0-1 .5-1.5 1.5-1.5zM245 31.7V10.2h-6.6a1.2 1.2 0 00-1.1.8l-.1.5V14c-.7-2.3-2.1-3.9-4.7-3.9h-1.4c-4.5 0-6.7 2.2-6.7 6.5v15.8c0 4.3 2.2 6.4 6.7 6.4h1.4c2.5 0 3.8-1.1 4.5-3v1.8a1.2 1.2 0 00.8 1.1l.5.1h9.2v-6.1h-1c-.8 0-1.3-.4-1.5-1.1zm-7.8-9v8.6c0 1-.5 1.5-1.5 1.5h-2c-1 0-1.5-.5-1.5-1.5V17.8c0-1 .5-1.4 1.5-1.4h2c1 0 1.5.5 1.5 1.4v5zM213.4 32.9a6 6 0 01-3.9 5.7c-.6.2-1.3.3-2 .3H192a2.5 2.5 0 01-2.5-2.5c0-.4 0-.7.2-1l.4-.6 2-3.4h9.8a1.8 1.8 0 001.5-1.8c0-.3 0-.5-.2-.8l-.2-.4-3.3-5a3.7 3.7 0 010-4l3-4.9 9.7 14.9.2.2c.6 1 1 2.1 1 3.3zM199.3 9.5a3.8 3.8 0 010 4.1L183.7 39H175l21.2-34.1 3.1 4.7zM3.4 43H0V20.8h3.4v1.6c1.3-1.3 2.8-2 4.5-2 2 0 3.6.7 4.9 2.2a8 8 0 012 5.5 7.7 7.7 0 01-4.2 7 6.3 6.3 0 01-7.2-1.4V43zm8-15a5 5 0 00-1.2-3.4 3.7 3.7 0 00-2.9-1.3c-1.2 0-2.2.4-3 1.3-.7.8-1.1 2-1.1 3.4a5 5 0 001.1 3.3c.8.9 1.8 1.3 3 1.3s2.1-.4 2.9-1.3c.7-.9 1.1-2 1.1-3.3h.1zm6.2-.2c0-2 .8-3.8 2.3-5.3a7.3 7.3 0 015.4-2.2 7.6 7.6 0 015.5 13.1 7.7 7.7 0 01-5.5 2.2 7.5 7.5 0 01-7.7-7.8zm3.4.1c0 1.4.4 2.6 1.2 3.4a4 4 0 003.1 1.3 4 4 0 003.2-1.2c.8-.9 1.1-2 1.1-3.4s-.3-2.6-1.1-3.4a4 4 0 00-3.2-1.3c-1.2 0-2.3.4-3 1.3-.7.9-1.3 2-1.3 3.3zm16.8-7.2l3.8 8.3 4.1-9.6 4.1 9.6 3.8-8.3h3.7l-7.5 15.6-4-9.4-4.1 9.4-7.6-15.6h3.7zm34.5 8H62.1a4 4 0 001.1 2.9c.7.7 1.6 1 2.7 1 .8 0 1.5-.2 2-.6.6-.4 1.2-1.1 1.9-2.2l2.8 1.6-1.4 2c-.5.4-1 .9-1.6 1.2a5 5 0 01-1.8.8l-2 .2c-2.2 0-4-.7-5.3-2a7.8 7.8 0 01-2-5.6c0-2 .6-4 2-5.6 1.2-1.4 3-2.1 5-2.1 2.2 0 3.9.7 5.1 2a8 8 0 011.9 5.6v.8h-.2zM68.9 26c-.5-1.8-1.6-2.7-3.4-2.7-.7 0-1.4.3-2 .7l-.8.9-.6 1.1h6.8zm7.2-5.3h3.3V22c.6-.7 1.1-1 1.6-1.3a3 3 0 011.7-.4c.9 0 1.8.3 2.8.9l-1.5 3a4 4 0 00-2-.7c-1.7 0-2.6 1.4-2.6 4.2v7.5H76V20.7h.1zm24.3 8H90c.1 1.2.5 2.2 1.2 2.9.7.7 1.5 1 2.6 1 .8 0 1.5-.2 2-.6.6-.4 1.2-1.1 1.9-2.2l2.8 1.6-1.4 2-1.5 1.2c-.6.4-1.2.6-1.8.8l-2.1.2c-2.2 0-4-.7-5.2-2a7.8 7.8 0 01-2-5.6c0-2 .6-4 2-5.6a6.3 6.3 0 015-2.1c2.1 0 3.8.7 5 2a8 8 0 011.9 5.6v.8zM97 26c-.5-1.8-1.6-2.7-3.4-2.7-.8 0-1.5.2-2.1.7l-.8.9-.5 1.1H97zm17.7-16h3.4v25.2h-3.4v-1.5a6.2 6.2 0 01-9.4-.3 8 8 0 01-2-5.5 7.7 7.7 0 014.1-7 6.2 6.2 0 017.3 1.5V10zm-8 17.9a5 5 0 001.2 3.4c.8.9 1.7 1.3 2.9 1.3s2.2-.4 3-1.3c.8-.8 1.1-2 1.1-3.3a5 5 0 00-1.1-3.4 3.8 3.8 0 00-3-1.3c-1.1 0-2 .5-2.9 1.3-.7 1-1.1 2-1.1 3.3h-.1zM135.1 10v12.4a6 6 0 014.5-2.1c2 0 3.6.7 5 2.2a8 8 0 011.9 5.4c0 2-.7 4-2 5.5a6.3 6.3 0 01-5 2.2c-1.6 0-3.1-.6-4.4-2v1.6h-3.4V10h3.4zm8 18a5 5 0 00-1.2-3.3 3.6 3.6 0 00-2.9-1.4c-1.2 0-2.2.4-3 1.3-.7.9-1.1 2-1.1 3.3a5 5 0 001.1 3.4c.8.9 1.8 1.3 3 1.3 1.1 0 2.1-.4 2.9-1.3.7-.9 1.1-2 1.1-3.3h.1zm11 4.5l-6.6-11.8h3.9l4.4 8.3 4.1-8.3h3.8l-11.5 22.4h-3.8l5.6-10.6h.1z" /></svg></a></div></div></div></section></footer></div><div data-href="#0" class="cd-top btn btn-primary"><i class="fa fa-angle-up"></i></div>
vendor: 108 bytes, line 1
1<script data-cfasync="false" src="/cdn-cgi/scripts/5c5dd728/cloudflare-static/email-decode.min.js"></script>
1<script> if (window.sessionStorage.getItem('has-dismissed-notification') !== 'true') { var notificationBar = document.getElementById('site-notification'); if (notificationBar) { notificationBar.classList.remove('hidden'); } } </script>
1<script> (function(n,r){var e=document.createElement("script");e.async=!0,e.src=n+"/sidebar.js?id="+r+"&c="+c(10,r);var t=document.getElementsByTagName("script")[0];t.parentNode.insertBefore(e,t);function c(s,i){var o=Date.now(),a=s*6e4,_=(Math.sin(i)||0)*a;return Math.floor((o+_)/a)}})("https://dashboard.webwinkelkeur.nl",1221211); </script>
1<link rel="stylesheet" type="text/css" href="https://cdn.jsdelivr.net/npm/toastify-js/src/toastify.min.css">
1<script type="module"> import 'https://esm.sh/preact/debug'; import { h, render, Fragment } from 'https://esm.sh/preact'; import { useEffect, useState, useRef } from 'https://esm.sh/preact/hooks'; import { html } from 'https://esm.sh/htm/preact'; import Toastify from 'https://esm.sh/toastify-js'; import { createStorefrontClient, gql, createCartMutation } from 'https://esm.sh/@afosto/storefront@3'; const getErrorMessage = error => { const errorResponse = error?.response || {}; const errorResponseData = errorResponse?.data || {}; const errorResponseError = errorResponseData?.error || {}; const gqlResponseErrors = errorResponse?.errors || []; const [firstGqlError] = gqlResponseErrors || []; const gqlErrorExtensions = firstGqlError?.extensions || {}; const pointers = errorResponseError?.details?.pointers || firstGqlError?.extensions?.pointers; const [firstPointer] = pointers || []; return ( firstPointer?.message || errorResponseError?.message || errorResponseData?.message || firstGqlError?.message ); }; const formatPrice = (value) => { const intl = Intl.NumberFormat(`${document.documentElement.lang}-${document.documentElement.lang.toUpperCase()}`, { style: 'currency', currency: document.body.dataset.afCurrencyIso, }); const decimal = intl.formatToParts(value / 100).find(part => part.type === 'decimal').value; return intl.format(value / 100).replace(`${decimal}00`, `${decimal}-`); }; const CouponForm = ({ coupons }) => { const [value, setValue] = useState(''); const [errorMessage, setErrorMessage] = useState(null); const [isSubmitting, setIsSubmitting] = useState(false); const handleAddCouponToCart = async e => { e.preventDefault(); try { setIsSubmitting(true); const updatedCart = await window.Storefront.addCouponToCart(value); if (!!updatedCart) { setValue(''); $('body').trigger('cart:updated', updatedCart); } else { alert('something went wrong'); } } catch (error) { $("#add-response-modal .modal-header .modal-title").html($("#add-response-modal").data("error-title")); $("#add-response-modal .modal-body").addClass('text-center'); $("#add-response-modal .modal-body").html('<span class="fa-stack fa-3x text-warning"><i class="far fa-circle fa-stack-2x"></i><i class="fas fa-exclamation fa-stack-1x"></i></span><p class="lead mt-15">' + getErrorMessage(error) + '</p>'); $("#add-response-modal").modal('show'); } finally { setIsSubmitting(false); } }; const handleRemoveCouponToCart = async code => { try { setIsSubmitting(true); const updatedCart = await window.Storefront.removeCouponFromCart(code); $('body').trigger('cart:updated', updatedCart); } catch (error) { $("#add-response-modal .modal-header .modal-title").html($("#add-response-modal").data("error-title")); $("#add-response-modal .modal-body").addClass('text-center'); $("#add-response-modal .modal-body").html('<span class="fa-stack fa-3x text-warning"><i class="far fa-circle fa-stack-2x"></i><i class="fas fa-exclamation fa-stack-1x"></i></span><p class="lead mt-15">' + getErrorMessage(error) + '</p>'); $("#add-response-modal").modal('show'); } finally { setIsSubmitting(false); } }; const handleChange = e => { setValue(e.target.value); }; const handleInput = () => { setErrorMessage(null); }; return html` <form onSubmit="${handleAddCouponToCart}"><div class=""> ${(coupons || []).map(({ code }, index) => html` <div class="panel panel-default d-flex justify-content-between align-items-center"><div class="py-4 px-12"> ${code || null} </div><button class="btn btn-danger btn-sm" type="button" onClick="${() => handleRemoveCouponToCart(code)}"><i class="fal fa-times" /></button></div> `)} </div><div class="input-group"><input class="form-control" placeholder="Coupon code toevoegen" onChange="${handleChange}" onInput="${handleInput}" value="${value}" /><span class="input-group-btn"><button type="submit" class="btn btn-primary" disabled="${isSubmitting}"><i class="fal fa-angle-right" /></button></span></div> ${errorMessage && errorMessage} </form> `; }; const CopyCartLink = ({ id }) => { const handleShowShareDialog = () => { $('#share-cart-dialog').modal('show'); }; const handleCopyLink = () => { const cartLink = `${window.location.origin}/cart?hash=${id}`; navigator.clipboard.writeText(cartLink); }; useEffect(() => { if (id) { const cartLink = `${window.location.origin}/cart?hash=${id}`; const dialog = document.getElementById('share-cart-dialog'); dialog.innerHTML = dialog.innerHTML.replace(/\{url\}/g, cartLink); $('[data-toggle="tooltip"]').tooltip();
1 $('.copy-to-clipboard').tooltip({ container: '.input-group-btn', trigger: 'click' }).on('mouseout', function(){ $(this).tooltip('hide'); }); new Clipboard('.copy-to-clipboard'); $('input[data-clipboard-text]').on('click, focus', function() { $(this).select(); }); } }, [id]); return html` <button class="btn btn-link btn-block" data-toggle="modal" data-target="#share-cart-dialog">Winkelwagen delen</button> `; }; const CartPageSummary = ({ cart, checkoutUrl, isLoading }) => { const [shippingMethods, setShippingMethods] = useState([]); const { subtotal, total, totalExcludingVat, vat, adjustments, fees, coupons, id } = cart || {}; const { shipping: shippingFees, payment: paymentFees } = fees || {}; useEffect(() => { const fetchShippingMethods = async () => { try { const response = await window.Storefront.getShippingMethods(); setShippingMethods(response?.options?.shipping?.methods); } catch (e) { console.log(e); } }; fetchShippingMethods(); }, [cart]); return html` <div class="cost-summary-fixed"><div class="panel panel-default mb-24"><div class="panel-heading py-12 px-24"><strong> Mijn bestelling </strong></div><div class="panel-body py-16 px-24"><table class="table my-0"><tbody><tr><td class="pl-0 body-medium text-gray-800"> Subtotaal </td><td class="pr-0 body-medium text-right text-gray-800 ${isLoading ? 'text-muted' : ''}"> ${isLoading ? '-' : formatPrice(subtotal || 0)} </td></tr> ${(adjustments || []).map(({ description, amount, isDiscount, isPercentage, outcome }, index) => html` <tr><td class="pl-0 body-medium text-gray-800"> ${description}${isPercentage ? ` (${amount}%)` : ''} </td><td class="pr-0 body-medium text-right text-gray-800"> ${formatPrice((outcome.amount || 0) * (isDiscount ? -1 : 1) )} </td></tr> `)} ${(shippingFees || []).map(({ description, total }, index) => html` <tr><td class="pl-0 body-medium text-gray-800"> ${description} </td><td class="pr-0 body-medium text-right text-gray-800"> ${formatPrice(total)} </td></tr> `)} ${(paymentFees || []).map(({ description, total }, index) => html` <tr><td class="pl-0 body-medium text-gray-800"> ${description} </td><td class="pr-0 body-medium text-right text-gray-800"> ${formatPrice(total)} </td></tr> `)} <tr class=""><td class="pl-0 body-medium text-gray-800"> Totaal excl. BTW </td><td class="pr-0 body-medium text-right text-gray-800"> ${isLoading ? '-' : formatPrice(totalExcludingVat || 0)} </td></tr> ${(vat || []).map(({ rate, amount }, index) => html` <tr class=""><td class="pl-0 body-medium text-gray-800"> BTW ${rate || 0}% </td><td class="pr-0 body-medium text-right text-gray-800"> ${formatPrice(amount || 0)} </td></tr> `)} <tr><td colspan="2" class="px-0 py-8"><hr class="my-0" /></td></tr><tr><td class="pl-0 body-medium text-gray-800"><span class="bold body-medium text-gray-900">Totaal </span></td><td class="text-right ${isLoading ? 'text-muted' : ''}"><span class="bold body-medium text-gray-900"> ${isLoading ? '-' : formatPrice(total || 0)} </span></td></tr></tbody></table></div></div><div class="panel panel-default mb-24"> ${(shippingMethods || []).map(({ name, description, pricing }, index) => html` <div key="${name}"><div class="panel-body body-medium py-16 px-24"><div class="d-flex justify-content-between mb-8"><span class="bold text-gray-900">${name}</span><span class="bold text-gray-900">${pricing.fixed === 0 ? 'Gratis' : formatPrice(pricing.fixed)}</span></div><p class="mb-0 text-gray-800">${description}</p></div> ${index + 1 !== (shippingMethods || []).length && html`<hr class="my-0" />`} </div> `)} </div><${CouponForm} coupons="${coupons}" /><a class="btn btn-success btn-block mt-16" href="${checkoutUrl}" title="Verder met bestellen"> Verder met bestellen </a><${CopyCartLink} id="${id}" /></div> `; }; const ItemsGrid = ({ items, onRemove, onChangeQuantity, isLoading }) => { const increaseQuantity = item => onChangeQuantity(item, item.quantity + 1); const decreaseQuantity = item => onChangeQuantity(item, item.quantity - 1); return html` ${!isLoading ? items.map(item => { const { adjustments, label, sku, total, subtotal, quantity, ids, details, image } = item || {}; const unitPrice = details[0] && details[0].pricing && details[0].pricing.amount || 0; return html` <div class="panel panel-default cart-item" key="${sku}"><div class="panel-body"><div class="cart-item-row"><div class="cart-item-image"><div class="lazyload-wrapper lazyload-square"><img loading="lazy" src="${image}" alt="${'Afbeelding van [name]'.replace('[name]', label || sku) }"/></div></div><div class="cart-item-info"><strong>${label || sku}</strong><br /><a class="btn btn-xs btn-link pull-right fa fa-times remove-cart-product" onClick="${() => onRemove(item)}" /><div class="cart-item-info-table"> ${adjustments.length > 0 && html` <div class="cart-item-info-table-row"><div class="cart-item-info-table-value mr-10"> Subtotaal </span><div class="cart-item-info-table-value"> ${formatPrice(subtotal)} </span></div> ${adjustments.map((adjustment, idx) => html` <div class="cart-item-info-table-row"><div class="cart-item-info-table-value mr-10"> ${adjustment.description} ${adjustment.isPercentage ? `(${adjustment.amount}%)` : ''} </span><div class="cart-item-info-table-value"> ${formatPrice(adjustment.outcome.amount * (adjustment.isDiscount ? -1 : 1))} </span></div> `)} `} <div class="cart-item-info-table-row"><div class="cart-item-info-table-value"> ${formatPrice(total)} </div></div><div class="cart-item-info-table-row"><div class="cart-item-info-table-value"><div class="input-group input-group-sm quantity-field"><div> Aantal: ${quantity} </div><div class="btn-group"><a onClick="${() => increaseQuantity(item)}" class="btn btn-info btn-xs modify-quantity"><i class="fa fa-plus" /></a> ${quantity > 1 && html` <a onClick="${() => decreaseQuantity(item)}" class="btn btn-info btn-xs modify-quantity"><i class="fa fa-minus" /></a> `} ${quantity == 1 && html` <a onClick="${() => onRemove(ids)}" class="btn btn-info btn-xs remove-cart-product"><i class="fa fa-minus" /></a> `} </div></div></div></div></div></div></div></div></div> `; }) : ''} `; }; const CartPage = () => { const [cart, setCart] = useState({}); const [isLoadingCart, setIsLoadingCart] = useState(true); const [error, setError] = useState(null); const checkoutUrl = cart && cart.checkout && cart.checkout.url || ''; const handleRemoveItems = async item => { const updatedCart = await window.Storefront.removeCartItems(item.ids); $('body').trigger('cart:updated', updatedCart); $(document).trigger('af.cart.remove', [[{ "price": ((item.details?.at(0)?.pricing?.amount || 0) / 100).toFixed(2), "product_id": item.sku, "sku": item.sku, "quantity": item.quantity, }]]); }; const handleChangeQuantity = async (item, quantity) => { try { if (!quantity || quantity === item.quantity) { return; } let cartResponse; if (quantity > item.quantity) { cartResponse = await window.Storefront.addCartItems([ { sku: item.sku, quantity: quantity - item.quantity, }, ]); $(document).trigger('af.cart.add', [[{ "price": ((item.details?.at(0)?.pricing?.amount || 0) / 100).toFixed(2), "product_id": item.sku, "sku": item.sku, "quantity": quantity - item.quantity, }]]); } else { const difference = item.quantity - quantity; const ids = [...(item.ids || [])].reverse().slice(0, difference); cartResponse = await window.Storefront.removeCartItems(ids); $(document).trigger('af.cart.remove', [[{ "price": ((item.details?.at(0)?.pricing?.amount || 0) / 100).toFixed(2), "product_id": item.sku, "sku": item.sku, "quantity": difference, }]]); } $('body').trigger('cart:updated', cartResponse); } catch(error) { $("#add-response-modal .modal-header .modal-title").html($("#add-response-modal").data("error-title")); $("#add-response-modal .modal-body").addClass('text-center'); $("#add-response-modal .modal-body").html('<span class="fa-stack fa-3x text-warning"><i class="far fa-circle fa-stack-2x"></i><i class="fas fa-exclamation fa-stack-1x"></i></span>
1<p class="lead mt-15">' + getErrorMessage(error) + '</p>'); $("#add-response-modal").modal('show'); } }; useEffect(() => { const updateCart = (event, val) => { setCart(val); if (isLoadingCart) { setIsLoadingCart(false); } }; $('body').on('cart:updated', updateCart); return () => { $('body').off('cart:updated', updateCart); } }, []); return html` <section id="contentcart" class="mb-24 mt-48 mt-sm-24 mt-md-8${isLoadingCart ? ' loading-ajax' : ''}"><div class="mb-15"><div class="cart-header d-flex justify-content-between"><h1 class="my-0 h3"> Winkelwagen </h1> ${((cart && cart.items && cart.items.length > 0) || isLoadingCart) && html` <a class="btn btn-success" href="${checkoutUrl}"> Verder met bestellen </a>`} </div><div class="clearfix"></div></div> ${error && html` <div class="alert alert-warning">${error}</div> `} ${(cart && cart.items && cart.items.length > 0) || isLoadingCart ? html` <div class="row"><div class="col-md-7 col-lg-8 cart-items"><${ItemsGrid} isLoading="${isLoadingCart}" items="${cart.items || []}" onRemove="${handleRemoveItems}" onChangeQuantity="${handleChangeQuantity}" /></div><div class="col-md-5 col-lg-4 cost-summary-wrapper"><${CartPageSummary} isLoading="${isLoadingCart}" cart="${cart}" checkoutUrl="${checkoutUrl}" /></div></div> ` : html` <h3 class="text-center text-warning"> Uw winkelwagen is leeg. <br /><br /><a class="center btn btn-primary" href="https://tuinmaak.nl/">Bekijk onze producten</a></h3> `} </section> `; }; const CartDrawerItem = ({ item, onRemove, onChangeQuantity }) => { const { adjustments, label, sku, image, ids, quantity, subtotal, total } = item; const increaseQuantity = item => onChangeQuantity(item, item.quantity + 1); const decreaseQuantity = item => onChangeQuantity(item, item.quantity - 1); return html` <div class="cart-overview-item"><div class="cart-overview-item-inner d-flex gap-8"><div class="cart-overview-item-delete align-self-center"><a class="text-danger" onClick="${() => onRemove(item)}"><i class="fa fa-times fa-sm"></i></a></div><div class="cart-overview-item-image px-10"><div class="d-block icon-75"><div class="lazyload-wrapper lazyload-square"><img class="lazyload" data-src="${image}" alt="${'Afbeelding van [name]'.replace('[name]', label || sku) }"/></div></div></div><div class="cart-overview-item-group d-flex flex-column justify-content-between flex-fill"><div class="cart-overview-item-name pb-5"> ${label || sku} </div> ${adjustments.length > 0 && html` <div class="d-flex justify-content-between text-muted mt-8"><small> Subtotaal </small><small> ${formatPrice(subtotal)} </small></div> ${adjustments.map(adjustment => html` <div class="d-flex justify-content-between text-muted"><small> ${adjustment.description}${adjustment.isPercentage ? ` (${adjustment.amount}%)` : ''} </small><small> ${formatPrice(adjustment.outcome.amount * (adjustment.isDiscount ? -1 : 1))} </small></div> `)} `} <div class="d-flex justify-content-between${adjustments.length > 0 ? ' mt-12' : ''}"><div class="cart-overview-item-quantity align-self-end"><div class="quantity-counter"><button type="button" class="btn" aria-label="aantal min 1" onClick="${() => decreaseQuantity(item)}" ><i class="fa fa-minus fa-sm"></i></button><div class="mx-10"> ${quantity} </div><button type="button" class="btn" aria-label="aantal plus 1" onClick="${() => increaseQuantity(item)}" ><i class="fa fa-plus fa-sm"></i></button></div></div><div class="cart-overview-item-price text-right"><strong> ${formatPrice(total)} </strong></div></div></div></div></div> `; }; const CartDrawer = () => { const [cart, setCart] = useState(null); const [isLoadingCart, setIsLoadingCart] = useState(false); const drawerRef = useRef(null); const handleRemoveItems = async item => { const updatedCart = await window.Storefront.removeCartItems(item.ids); setCart(updatedCart); $('body').trigger('cart:updated', updatedCart); $(document).trigger('af.cart.remove', [[{ "price": ((item.details?.at(0)?.pricing?.amount || 0) / 100).toFixed(2), "product_id": item.sku, "sku": item.sku, "quantity": item.quantity, }]]); }; const handleChangeQuantity = async (item, quantity) => { try { if (!quantity || quantity === item.quantity) { return; } let cartResponse; if (quantity > item.quantity) { cartResponse = await window.Storefront.addCartItems([ { sku: item.sku, quantity: quantity - item.quantity, }, ]); $(document).trigger('af.cart.add', [[{ "price": ((item.details?.at(0)?.pricing?.amount || 0) / 100).toFixed(2), "product_id": item.sku, "sku": item.sku, "quantity": quantity - item.quantity, }]]); } else { const difference = item.quantity - quantity; const ids = [...(item.ids || [])].reverse().slice(0, difference); cartResponse = await window.Storefront.removeCartItems(ids); $(document).trigger('af.cart.remove', [[{ "price": ((item.details?.at(0)?.pricing?.amount || 0) / 100).toFixed(2), "product_id": item.sku, "sku": item.sku, "quantity": difference, }]]); } setCart(cartResponse); $('body').trigger('cart:updated', cartResponse); } catch(error) { $("#add-response-modal .modal-header .modal-title").html($("#add-response-modal").data("error-title")); $("#add-response-modal .modal-body").addClass('text-center'); $("#add-response-modal .modal-body").html('<span class="fa-stack fa-3x text-warning"><i class="far fa-circle fa-stack-2x"></i><i class="fas fa-exclamation fa-stack-1x"></i></span>
1<p class="lead mt-15">' + getErrorMessage(error) + '</p>'); $("#add-response-modal").modal('show'); } }; const getCartData = async () => { try { setIsLoadingCart(true); let tokenIsValid = true; const { search = '', pathname } = window?.location || {}; const params = new URLSearchParams(search); const cartToken = params.get('hash'); const isCartPage = pathname === '/cart'; const intent = isCartPage ? 'VIEW_CART' : null; const cartResponse = await window.Storefront.getCart(cartToken, intent).catch(() => { if (cartToken) { tokenIsValid = false; return window.Storefront.getCart(null, intent); } return Promise.reject(new Error('Cart not found')); }); if (cartResponse && tokenIsValid && cartToken) { await window.Storefront.storeCartTokenInStorage(cartToken); } setIsLoadingCart(false); $('body').trigger('cart:updated', cartResponse); } catch (e) { console.log(e); } }; useEffect(() => { getCartData(); }, []); useEffect(() => { const updateCart = (event, val) => { if(!!val) { setCart(val); } if (isLoadingCart) { setIsLoadingCart(false); } }; $('body').on('cart:updated', updateCart); return () => { $('body').off('cart:updated', updateCart); } }, []); return html` <div class="drawer drawer-right" id="cart-drawer" ref="${drawerRef}"><div class="drawer-header"><div class="h4 m-0 fw-700"> Winkelwagen </div><button class="btn btn-default p-0 icon-40 ml-auto mr-n12" type="button" data-dismiss="drawer" aria-label="Sluit winkelwagen"><i class="fa fa-times icon-size-20 text-black"></i></button></div><div class="drawer-body configurator-drawer-inner p-0"> ${((cart && cart.items) || []).length === 0 ? html` <div class="text-center"><i class="fa fa-cart-plus text-primary fa-4x mt-40 mb-40"></i><span class="h4 mb-12">Uw winkelwagen is leeg</span><p class=" mb-40">Bekijk het aanbod op onze website en voeg producten toe aan je winkelwagen.</p><button type="button" class="btn btn-primary" data-dismiss="drawer"> Verder winkelen </button></div> ` : html` <div class="cart-preview-items py-8"> ${((cart && cart.items) || []).map(item => html` <${CartDrawerItem} key="${item.sku}" item="${item}" onRemove="${handleRemoveItems}" onChangeQuantity="${handleChangeQuantity}" /> `)} </div> `} </div> ${((cart && cart.items) || []).length ? html` <div class="drawer-footer drawer-footer-sticky pt-20 pb-24 px-16"> ${(cart.fees.shipping || []).map(({ description, total }, index) => html` <div class="d-flex justify-content-between my-5"><small> ${description} </small><small> ${formatPrice(total)} </small></div> `)} ${(cart.fees.payment || []).map(({ description, total }, index) => html` <div class="d-flex justify-content-between my-5"><small> ${description} </small><small> ${formatPrice(total)} </small></div> `)} <div class="d-flex justify-content-between py-20"><span> Totaal </span><strong> ${formatPrice(cart.total)} </strong></div><hr class="mt-0 mb-32" /><a class="btn btn-primary btn-block" href="https://tuinmaak.nl/cart"> Afrekenen </a></div> ` : ''} </div> `; }; const AccountMenu = () => { const [channel, setChannel] = useState(null); const accountLink = channel?.links?.find(({ type }) => type === 'MY_ACCOUNT')?.value; const [account, setAccount] = useState(window.Storefront.getUser()); const getChannelData = async () => { const channelResponse = await window.Storefront.getChannel(); setChannel(channelResponse); }; const handleSignOut = () => { window.Storefront.signOut(); setAccount(window.Storefront.getUser()); }; useEffect(() => { getChannelData(); }, []); $('[data-toggle="tooltip"]').tooltip(); if (account) { return html` <a data-toggle="dropdown" aria-haspopup="true" aria-expanded="false"><i class="fa fa-user-check"></i><br /><span class="hidden-xs account-link-label">${account.givenName}</span></a><ul class="dropdown-menu"><li><a href="${accountLink}/account/orders"> Mijn bestellingen </a></li><li><a href="${accountLink}/account/details"> Mijn gegevens </a></li><li><a href="${accountLink}/account/addresses"> Mijn adressen </a></li><li><a href="${accountLink}/account/preferences"> Mijn voorkeuren </a></li><li role="separator" class="divider" /><li><a onClick="${handleSignOut}">Uitloggen</a></li></ul> `; } return html` <a href="${accountLink}" data-toggle="tooltip" data-placement="bottom" title="Inloggen"><i class="fa fa-user-times"></i><br /><span class="hidden-xs account-link-label">Inloggen</span></a> `; }; const setupStorefront = () => { const client = createStorefrontClient({ domain: window.location.host, storefrontToken: 'stf.YjI3L1l1RWtzY2I3eG50UkFnUEl6NWRzR0RMY0wvbG53cno2MkY5eWU0WG5sSHFEZWFlT21wWnN2VmoyNG5ySHR0WlJOcjAxc1kxVkg4V2R6RlYzUEhJVkg4NG5jdU93NWE4MzZWQWMuXzNKMUxnMlZMVjRpOV85ZQ==', graphQLClientOptions: { headers: { "Accept-Language": document.documentElement.lang, } } }); if (window.visitor_id) { client.setSessionID(window.visitor_id); } const renderCartDrawer = () => { if (document.getElementById('cart-drawer-container')) { return render(html`<${CartDrawer} />`, document.getElementById('cart-drawer-container')); } console.warn('[Afosto Storefront] No element fount with id "cart
1-drawer-container" to mount the CartDrawer on. Add the id to an element or check your storefrontScripts.twig file.') }; const renderCartPage = () => { if (document.getElementById('cart-container')) { return render(html`<${CartPage} />`, document.getElementById('cart-container')); } console.warn('[Afosto Storefront] No element fount with id "cart-container" to mount the CartPage on. Add the id to an element or check your storefrontScripts.twig file.') }; const renderAccountMenu = () => { if (document.getElementById('account-display')) { return render(html`<${AccountMenu} />`, document.getElementById('account-display')); } console.warn('[Afosto Storefront] No element fount with id "account-display" to mount the AccountMenu on. Add the id to an element or check your storefrontScripts.twig file.') }; /** * Create a cart * @param {object=} input * @returns {object} */ const createCart = async (input = {}) => { const response = await request(createCartMutation, { cartInput: { sessionId: sessionID, ...input, countryCode: input?.countryCode || 'NL', }, }); const createdCart = response?.createCart?.cart || null; if (createdCart?.id) { storeCartTokenInStorage(createdCart?.id); } return createdCart; }; /** * Get a cart by cart token * @param {string=} cartToken * @param {(null|'BEGIN_CHECKOUT'|'VIEW_CART')=} intent Intent for server side tracking * @returns {Object} */ const getShippingMethodsQuery = gql` query GetCart($id: String!, $intent: TrackingEvent) { cart(id: $id, intent: $intent) { options { shipping { methods { name description pricing { fixed percentage } } } } } } `; const getShippingMethods = async (cartToken, intent) => { try { const storedCartToken = client.getCartTokenFromStorage() || null; const currentCartToken = cartToken || storedCartToken; if (!currentCartToken) { return null; } const response = await client.query(getShippingMethodsQuery, { id: currentCartToken, intent, }); return response?.cart || null; } catch (error) { return Promise.reject(error); } }; return { ...client, getShippingMethods, createCart, client, renderCartDrawer, renderCartPage, renderAccountMenu, }; }; const afostoStorefront = setupStorefront(); window.Storefront = afostoStorefront; const initializeCart = async () => { afostoStorefront.renderCartDrawer(); afostoStorefront.renderAccountMenu(); if ("page" === 'cart') { afostoStorefront.renderCartPage(); } }; document.addEventListener("readystatechange", (event) => { if (document.readyState === 'complete') { initializeCart().catch(() => { }) } });</script>
1<div class="modal fade" tabindex="-1" role="dialog" id="share-cart-dialog"><div class="modal-dialog" role="document"><div class="modal-content"><div class="modal-header"><button type="button" class="close" data-dismiss="modal" aria-label="Close"><span aria-hidden="true">×</span></button><h4 class="modal-title">Winkelwagen delen</h4></div><div class="modal-body text-center"><div class="row"><div class="col-md-4 col-xs-3"><a class="text-black" href="https://www.facebook.com/sharer/sharer.php?u={url}&t=" rel="noopener noreferrer" target="_blank" title="Share on Facebook" ><i class="fab fa-3x fa-facebook"></i></a></div><div class="col-md-4 visible-xs visible-sm col-xs-3"><a class="text-black" href="whatsapp://send?text={url}"><i class="fab fa-3x fa-whatsapp"></i></a></div><div class="col-md-4 col-xs-3"><a class="text-black" href="/cdn-cgi/l/email-protection#132c606671797670672e35717c776a2e6866617f6e" rel="noopener noreferrer" target="_self" title="Send email"><i class="fas fa-3x fa-envelope"></i></a></div></div></div><div class="modal-footer text-left"><p class="text-center"> Kopieer deze link om op je website te plaatsen of om te gebruiken in een bericht </p><div class="form-group"><div class="input-group"><input class="form-control" value="{url}" id="copy-cart-url-field" data-clipboard-text="{url}"><div class="input-group-btn">
1<button type="button" class="copy-to-clipboard btn btn-primary py-10" data-clipboard-target="#copy-cart-url-field" data-trigger="click" data-toggle="tooltip" data-placement="bottom" title="Gekopieerd!">Kopieer</button></div></div></div></div></div></div></div>
vendor: 108 bytes, line 1
1<script data-cfasync="false" src="/cdn-cgi/scripts/5c5dd728/cloudflare-static/email-decode.min.js"></script>
1<script src="https://afosto-cdn-01.afosto.com/js/2314175606-3256.js"></script>
1<script type="text/javascript">/*<![CDATA[*/ $(function(){ function allConsentGranted() { gtag('consent', 'update', { 'ad_user_data': 'granted', 'ad_personalization': 'granted', 'ad_storage': 'granted', 'analytics_storage': 'granted', 'functionality_storage': 'granted' }); } ; $(document).on('click','.cc-dismiss',allConsentGranted); }); $(document).on('af.cart.add', function (event, products) { var items = []; var value = 0; $.each(products, function(index, product) { const price = Number(product.price) || 0; const quantity = Number(product.quantity) || 1; value += price * quantity; items.push({ item_id: product.sku || product.product_id || '', item_name: product.name || '', price: price, quantity: quantity, index: index, ...Object.fromEntries( Object.entries(product).filter(([key]) => !['sku', 'product_id', 'name', 'price', 'quantity'].includes(key) ) ) }); }); afTrackEvent('event', 'add_to_cart', { currency: 'EUR', value: value, items: items });});$(document).on('af.cart.remove', function (event, products) { var items = []; var value = 0; $.each(products, function (index, product) { const price = Number(product.price) || 0; const quantity = Number(product.quantity) || 1; value += price * quantity; items.push({ item_id: product.sku || product.product_id || '', item_name: product.name || '', price: price, quantity: quantity, index: index, ...Object.fromEntries( Object.entries(product).filter(([key]) => !['sku', 'product_id', 'name', 'price', 'quantity'].includes(key) ) ) }); }); afTrackEvent('event', 'remove_from_cart', { currency: 'EUR', value: value, items: items });});/*]]>*/</script>
1<script type="module" src="https://static.cloudflareinsights.com/beacon.min.js/v4bc70e2c01a94c73b74392e4234840661791215815920" integrity="sha512-L0ha0OXavK/8okipN9F8BtP84dg9DUhPERbBXzwI6dgTA55d2+yweo3pn5CSFYs45/r8md2+xvUPtTdvTNRfjA==" data-cf-beacon='{"version":"2024.11.0","token":"e7fdde98f79f4853af15797dbe0e093b","r":1,"spa":2}' crossorigin="anonymous"></script>
1 2</body></html>
Line numbers count LF bytes from the start of the resource, as the search results do. Vendor segments are library code the classifier recognised; they are stored but not indexed. Bytes are shown as Latin1 characters, one per byte.