🚚 Free delivery on orders over $50🚚 Pay on delivery, or by card🚚 Free delivery on orders over $50🚚 Pay on delivery, or by card
🚚 Free delivery on orders over $50🚚 Pay on delivery, or by card🚚 Free delivery on orders over $50🚚 Pay on delivery, or by card
🚚 Free delivery on orders over $50🚚 Pay on delivery, or by card🚚 Free delivery on orders over $50🚚 Pay on delivery, or by card
/
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')) + ';'
: ''" />
Clip-On Selfie Ring Light
Demo ProductSoft light for photos and video calls
Clips onto any phone or laptop, with three light colours and ten brightness levels for clear photos and video calls at night.
| Category | Gadgets & Extras |
|---|---|
| SKU | DEMO-7AE2E427 |
No reviews yet. Be the first to review this product!
Login to write a review
Related Products
$15
Free delivery
On orders over $50
Help every day
Safe and secure checkout
Fair prices
Deals on every department
Easy returns
Within 7 days
Stay connected
Early access to new arrivals, deals and tech tips.
© 2026 إشارة. All rights reserved.