OMPONG188 ~ Absolute Penyedia Game Online Infrastruktur Server Kecepatan Tinggi
OMPONG188 TERPERCAYA
|
1876-0LX01893491
Klik untuk Lihat Detail


OMPONG188 ~ Absolute Penyedia Game Online Infrastruktur Server Kecepatan Tinggi
OMPONG188 TERPERCAYA
|
1876-0LX01893491
Rp. 10.000
OMPONG188 ~ Absolute Penyedia Game Online Infrastruktur Server Kecepatan Tinggi
Topi Tanpa Bingkai Futura Wash
Info lebih lanjut Bayar dengan cicilan 0% x 4 sebesar Rp. 799
OMPONG188 ~ Absolute Penyedia Game Online Infrastruktur Server Kecepatan Tinggi
Topi Tanpa Bingkai Futura Wash
Info lebih lanjutReview Pengguna OMPONG188
Charles Pasaribu - Jambi
★★★★★
OMPONG188
OMPONG188 adalah tempat absolute penyedia game online dengan infrastruktur server berkecepatan tinggi disemua perangkat melahirkan pesona bermain anti bosan bagi semua kalangan pemain yang membuat sensasi hiburan digital terasa nyata.
Nandar Sudrajat - Surakarta
★★★★★
OMPONG188 LOGIN
OMPONG188 login menyediakan akses cepat melalui OMPONG188 link alternatif terpercaya yang aman, mudah digunakan, dan tersedia 24 jam nonstop.
Reynaldi Parengkuan - Bali
★★★★★
OMPONG188 DAFTAR
OMPONG188 daftar akun dapat dilakukan dengan mudah melalui situs OMPONG188 link terpercaya yang memiliki akses cepat, aman, terpercaya, dan online 24 jam nonstop.
' + '
';
$(this).html(img_html);
temp_count++;
}, );
current_img = 1;
});
/* on click on image opened fullscreen toggle zoom */
$(document).on("click", ".fotorama__img--full", function() {
$(this).dblclick();
});
// Zoom the image on clicking on Closer Look
$(".closer-look").on("click", function() {
$(".fotorama__nav__shaft .fotorama__active").click();
});
$(document).on("click", ".fotorama__img--full", function() {
$(this).dblclick();
});
let isZoomed = false;
let activeContainer = null;
function createZoom(container, imgSrc) {
const lens = $('');
const result = $('').css({
"background-image": `url(${imgSrc})`,
display: "block",
});
container.append(lens).append(result);
container.addClass("zoomed");
isZoomed = true;
activeContainer = container;
// Disable fotorama navigation elements when zoomed
$(".fotorama__nav__shaft").css("pointer-events", "none").css("opacity", "0.5").addClass("zoom-active");
$(".fotorama__arr").css("pointer-events", "none").css("opacity", "0.5").addClass("zoom-active");
$(".closer-look").hide();
}
function removeZoom(container) {
container.find(".zoom-lens, .zoom-result").remove();
container.removeClass("zoomed");
isZoomed = false;
activeContainer = null;
// Re-enable fotorama navigation elements when zoom is removed
$(".fotorama__nav__shaft").css("pointer-events", "auto").css("opacity", "1").removeClass("zoom-active");
$(".fotorama__arr").css("pointer-events", "auto").css("opacity", "1").removeClass("zoom-active");
$(".closer-look").show();
}
function handleZoomMove(e, container) {
const lens = container.find(".zoom-lens");
const result = container.find(".zoom-result");
const touch = e.touches ? e.touches[0] : e;
const offset = container.offset();
const x = touch.pageX - offset.left;
const y = touch.pageY - offset.top;
const lensWidth = lens.width();
const lensHeight = lens.height();
let lensX = x - lensWidth / 2;
let lensY = y - lensHeight / 2;
lensX = Math.max(0, Math.min(lensX, container.width() - lensWidth));
lensY = Math.max(0, Math.min(lensY, container.height() - lensHeight), );
lens.css({
left: `${lensX}px`,
top: `${lensY}px`
});
const percentX = (lensX / container.width()) * 100;
const percentY = (lensY / container.height()) * 100;
result.css("background-position", `${percentX}% ${percentY}%`);
}
function isMobileZoom() {
return window.innerWidth = 1025;
}
if (isDesktop()) {
// Toggle zoom on click/tap
$(document).on("click touchstart", ".fotorama__stage__frame.fotorama__active", function(e) {
const container = $(this);
const img = container.find(".fotorama__img");
const imgSrc = img.attr("src");
if (!imgSrc) return;
if (isZoomed && container[0] === activeContainer[0]) {
removeZoom(container);
} else {
removeZoom($(".zoomed")); // Remove previous if any
createZoom(container, imgSrc);
}
// Prevent double tap zoom
e.preventDefault();
}, );
// Move lens on mousemove/touchmove
$(document).on("mousemove touchmove", ".fotorama__stage__frame.zoomed", function(e) {
handleZoomMove(e.originalEvent || e, $(this));
}, );
// Exit zoom on click outside
$(document).on("click touchstart", function(e) {
if (isZoomed && !$(e.target).closest(".fotorama__stage__frame.zoomed").length) {
removeZoom($(".zoomed"));
}
});
// Exit zoom when cursor leaves the gallery container
$(document).on("mouseleave", '[data-gallery-role="gallery"]', function(e) {
if (isZoomed) {
removeZoom($(".zoomed"));
}
}, );
}
if (isMobileZoom()) {
let currentImg = null;
let isZoomed = false;
let touchStartX = 0;
let touchStartY = 0;
let touchStartTime = 0;
let containerEl = null;
let touchMoveHandler = null;
// Function to reset zoom state
function resetZoom() {
if (isZoomed && currentImg) {
currentImg.style.transition = "transform 0.2s ease-out";
currentImg.style.transform = "translate3d(0px, 0px, 0) scale(1)";
currentImg.style.willChange = "auto"; // Reset optimization hint
isZoomed = false;
currentImg = null;
if (containerEl && touchMoveHandler) {
containerEl.removeEventListener("touchmove", touchMoveHandler, );
touchMoveHandler = null;
containerEl = null;
}
$(".closer-look").show();
}
}
let lastCounterValue = "";
function checkCounterChange() {
const counter = document.querySelector(".gallery__counter");
if (counter) {
const currentValue = counter.textContent;
if (lastCounterValue && lastCounterValue !== currentValue) {
resetZoom();
}
lastCounterValue = currentValue;
}
}
setInterval(checkCounterChange, 100);
$(document).on("touchstart", ".fotorama__stage__frame.fotorama__active", function(e) {
const touch = e.originalEvent.touches[0];
touchStartX = touch.clientX;
touchStartY = touch.clientY;
touchStartTime = Date.now();
}, );
$(document).on("touchend", ".fotorama__stage__frame.fotorama__active", function(e) {
const touch = e.originalEvent.changedTouches[0];
const deltaX = Math.abs(touch.clientX - touchStartX);
const deltaY = Math.abs(touch.clientY - touchStartY);
const deltaTime = Date.now() - touchStartTime;
const isTap = deltaX {
const moveTouch = moveEvent.touches[0];
// Calculate movement delta from initial touch position
const deltaX = moveTouch.clientX - touchStartX;
const deltaY = moveTouch.clientY - touchStartY;
// Apply movement to the initial translation
const newTranslateX = initialTranslateX + deltaX;
const newTranslateY = initialTranslateY + deltaY;
// Apply bounds using cached values
const boundedX = Math.max(-maxTranslateX, Math.min(maxTranslateX, newTranslateX), );
const boundedY = Math.max(-maxTranslateY, Math.min(maxTranslateY, newTranslateY), );
currentImg.style.transform = `translate3d(${boundedX}px, ${boundedY}px, 0) scale(1.96)`;
touchMoveHandler.rafId = null;
});
}
};
container.addEventListener("touchmove", touchMoveHandler, {
passive: false,
});
$(".closer-look").hide();
}, );
// Reset zoom when clicking outside the gallery
$(document).on("click touchend", function(e) {
if (isZoomed && !$(e.target).closest('[data-fotorama-stage="fotorama__stage"]').length) {
resetZoom();
}
});
}
});
});

