Voor 23:59 besteld, morgen in huis!

Zoeken

Menu

Neem contact met ons op

Laat een vraag of opmerking achter en wij zullen hier zo spoedig mogelijk op terugkomen.
{ if (e.clientY > 0) this.seenInside = true; }; document.addEventListener('mousemove', this.onMove, { passive: true }); setTimeout(() => { this.armed = true; }, this.graceMs); this.onLeave = (e) => { if (this.armed && this.seenInside && e.clientY <= 0) this.trigger(); }; document.addEventListener('mouseleave', this.onLeave); // No-mouse / mobile fallback: an INACTIVITY timer, not a page-load // one. Every tap, key, wheel or scroll rearms it, so a visitor who is // actively building a box is never interrupted mid-flow. this.onActivity = () => this.armIdleTimer(); this.idleEvents.forEach((e) => document.addEventListener(e, this.onActivity, { passive: true, capture: true })); this.armIdleTimer(); }, armIdleTimer() { if (this.open) return; clearTimeout(this.timer); this.timer = setTimeout(() => this.trigger(), this.idleMs); }, teardown() { if (this.onLeave) document.removeEventListener('mouseleave', this.onLeave); if (this.onMove) document.removeEventListener('mousemove', this.onMove); if (this.onActivity) this.idleEvents.forEach((e) => document.removeEventListener(e, this.onActivity, { capture: true })); clearTimeout(this.timer); }, trigger() { if (this.open) return; let shown = false; try { shown = localStorage.getItem(this.storageKey) === '1'; } catch (e) {} if (shown) return; this.open = true; try { localStorage.setItem(this.storageKey, '1'); } catch (e) {} // Server-side: resolve the A/B discount + count the exposure once. this.$wire.open(); this.teardown(); }, close() { this.open = false; }, }" x-cloak >

Nieuwe website — iets mis?

We zijn net live met onze nieuwe website. Werkt er iets niet of loopt iets raar? Laat het ons hier even weten — dan pakken we het meteen op.

We sturen een schermafbeelding van deze pagina mee om je sneller te kunnen helpen.