/
0 ? -0.25 : 0.25;
const oldScale = zoomScale;
zoomScale = Math.max(1, Math.min(zoomMaxScale, zoomScale + delta));
if (oldScale === 1 && zoomScale > 1) {
const r = $el.getBoundingClientRect();
const cx = $event.clientX - (r.left + r.width/2);
const cy = $event.clientY - (r.top + r.height/2);
zoomPanX = -cx * (zoomScale-1)/zoomScale;
zoomPanY = -cy * (zoomScale-1)/zoomScale;
} else if (zoomScale > 1) {
zoomPanX = zoomPanX * (zoomScale / oldScale);
zoomPanY = zoomPanY * (zoomScale / oldScale);
}
if (zoomScale <= 1) { resetZoom(); } else { clampPan(); }
"
class="relative w-full h-full flex items-center justify-center p-4 [touch-action:none]"
:class="zoomScale > 1 ? (zoomPanning ? 'cursor-grabbing' : 'cursor-grab') : (modalTotal > 1 ? (modalDragging ? 'cursor-grabbing' : 'cursor-grab') : '')"
@mousedown="modalDragStart($event)"
@mousemove="modalDragMove($event)"
@mouseup="modalDragEnd($event)"
@mouseleave="modalDragEnd($event)"
@touchstart="modalDragStart($event)"
@touchmove="modalDragMove($event)"
@touchend="modalDragEnd($event)"
:style="modalDragOffset ? `transform: translateX(${modalDragOffset}px); transition: none;` : 'transition: transform 0.2s ease-out;'">
measureZoomCeiling($el))"
@click.stop
@dblclick.stop.prevent="if (lastInputWasTouch) return; zoomAnimating = true; if (zoomScale > 1) { resetZoom(); } else { const r = $el.getBoundingClientRect(); const cx = $event.clientX - (r.left + r.width/2); const cy = $event.clientY - (r.top + r.height/2); zoomScale = Math.min(2.5, zoomMaxScale); zoomPanX = -cx * (zoomScale-1)/zoomScale; zoomPanY = -cy * (zoomScale-1)/zoomScale; clampPan(); } setTimeout(() => { zoomAnimating = false; }, 300);"
draggable="false"
:style="modalActive === largeIdx
? 'position:relative;transform: scale(' + zoomScale + ') translate(' + (zoomPanX / zoomScale) + 'px, ' + (zoomPanY / zoomScale) + 'px); transform-origin: center center; will-change: transform; transition: ' + (zoomAnimating ? 'transform 0.3s ease-out' : (zoomScale > 1 ? 'none' : 'transform 0.2s ease-out')) + ';'
: ''" />
Long-Life Coolant, Ready to Use, 4 L
Demo ProductStops overheating in summer traffic
Ready mixed, so it goes straight into the tank without adding water. It keeps the engine cool in summer traffic and protects the radiator from rust and scale.
| Category | Oils & Fluids |
|---|---|
| SKU | DEMO-E0CD3D36 |
| Compatible Vehicles |
Toyota
8
Camry
2
2.5L
(2012
-
2017)
2.5L
(2018
-
2024)
Corolla
2
1.6L
(2014
-
2019)
2.0L
(2020
-
2024)
Land Cruiser
2
4.6L
(2008
-
2021)
3.5L
(2022
-
2024)
Hilux
2
2.7L
(2016
-
2024)
2.4L
(2016
-
2024)
Nissan
4
Sunny
1
1.5L
(2012
-
2024)
Patrol
1
5.6L
(2010
-
2024)
Altima
2
2.5L
(2013
-
2018)
2.5L
(2019
-
2024)
Hyundai
5
Elantra
2
2.0L
(2016
-
2020)
2.0L
(2021
-
2024)
Accent
1
1.6L
(2018
-
2024)
Tucson
2
2.0L
(2016
-
2020)
2.5L
(2021
-
2024)
Kia
3
Cerato
1
2.0L
(2019
-
2024)
Sportage
2
2.4L
(2016
-
2021)
2.5L
(2022
-
2024)
Honda
4
Accord
2
2.4L
(2013
-
2017)
1.5L
(2018
-
2024)
Civic
2
2.0L
(2016
-
2021)
2.0L
(2022
-
2024)
Chevrolet
3
Tahoe
2
5.3L
(2015
-
2020)
5.3L
(2021
-
2024)
Malibu
1
1.5L
(2016
-
2024)
|
No reviews yet. Be the first to review this product!
Login to write a review
Related Products
TL 16