Files
wp-multisite-waas/assets/js/template-previewer.js
2024-11-30 18:24:12 -07:00

143 lines
4.9 KiB
JavaScript

(() => {
"use strict";
const CreateCookie = (name, value, days) => {
let expires;
if (days) {
const date = /* @__PURE__ */ new Date();
date.setTime(date.getTime() + days * 24 * 60 * 60 * 1e3);
expires = "; expires=" + date.toUTCString();
} else {
expires = "";
}
document.cookie = name + "=" + value + expires + "; path=/";
};
const ReadCookie = (name) => {
const nameEQ = name + "=";
const ca = document.cookie.split(";");
for (let i = 0; i < ca.length; i++) {
let c = ca[i];
while (c.charAt(0) === " ") {
c = c.substring(1, c.length);
}
if (c.indexOf(nameEQ) === 0) {
return c.substring(nameEQ.length, c.length);
}
}
return null;
};
const ListenToCookieChange = (name, callback) => {
let cookie_value = ReadCookie(name);
setInterval(function() {
const new_cookie_value = ReadCookie(name);
if (new_cookie_value !== cookie_value) {
cookie_value = new_cookie_value;
callback(cookie_value);
}
}, 100);
};
window.addEventListener("beforeunload", () => {
var _a;
return (_a = window.top) == null ? void 0 : _a.postMessage("wu_preview_changed", "*");
});
CreateCookie("wu_template", "");
const isIOS = () => {
var _a;
window.addEventListener("touchstart", () => {
});
const iDevices = [
"iPad Simulator",
"iPhone Simulator",
"iPod Simulator",
"iPad",
"iPhone",
"iPod"
];
const platform = ((_a = navigator == null ? void 0 : navigator.userAgentData) == null ? void 0 : _a.platform) || (navigator == null ? void 0 : navigator.platform) || "";
return iDevices.includes(platform);
};
document.addEventListener("DOMContentLoaded", () => {
var _a;
ListenToCookieChange("wu_selected_products", () => document.location.reload());
const iframe = document.getElementById("iframe");
const wn = iframe == null ? void 0 : iframe.contentWindow;
wn == null ? void 0 : wn.postMessage("Hello to iframe from parent!", "https://" + location.hostname);
const elements = document.querySelectorAll("#action-select, #action-select2");
elements.forEach((element) => element.addEventListener("click", (event) => {
event.preventDefault();
const value = document.getElementById("template-selector").value;
CreateCookie("wu_template", value);
window.close();
}));
iframe == null ? void 0 : iframe.addEventListener("load", () => {
var _a2;
if (isIOS()) {
const body = (_a2 = document.getElementById("iframe")) == null ? void 0 : _a2.getElementsByTagName("body")[0];
body == null ? void 0 : body.classList.add("wu-fix-safari-preview");
(body == null ? void 0 : body.style) && Object.assign(body.style, {
position: "fixed",
top: 0,
right: 0,
bottom: 0,
left: 0,
"overflow-y": "scroll",
"-webkit-overflow-scrolling": "touch"
});
}
});
const adjustIframeHeight = () => {
var _a2;
const ee = ((_a2 = document.getElementById("switcher")) == null ? void 0 : _a2.offsetHeight) || 0;
iframe.style.height = document.body.offsetHeight - ee + "px";
};
window.addEventListener("resize", adjustIframeHeight);
adjustIframeHeight();
const toggleList = () => {
const list = document.querySelectorAll("#theme_list ul");
list.forEach((element) => element.style.display = element.style.display === "none" ? "block" : "none");
};
toggleList();
(_a = document.getElementById("template_selector")) == null ? void 0 : _a.addEventListener("click", (event) => {
event.preventDefault();
toggleList();
});
document.querySelectorAll("#theme_list ul li a").forEach((element) => element.addEventListener("click", (event) => {
event.preventDefault();
toggleList();
const target = event.currentTarget;
const href = target.getAttribute("href") || "";
iframe.src = target.getAttribute("data-frame") || "";
const selector = document.getElementById("template_selector");
const selectorText = selector.firstChild;
selectorText.nodeValue = target.getAttribute("data-title") || "";
window.history.pushState({}, "", href);
}));
const headerBar = document.getElementById("header-bar");
if (headerBar) {
headerBar.style.display = "none";
}
const screenSizes = {
desktop: "100%",
tabletlandscape: "1040px",
tabletportrait: "788px",
mobilelandscape: "500px",
mobileportrait: "340px",
placebo: "0px"
};
document.querySelectorAll(".responsive a").forEach((element) => element.addEventListener("click", (event) => {
const target = event.currentTarget;
const width = Array.from(target.classList).reduce((acc, cur) => {
if (screenSizes[cur]) {
acc = screenSizes[cur];
}
return acc;
}, "");
iframe.style.width = width;
iframe.style.transition = "200ms";
document.querySelectorAll(".responsive a").forEach((element2) => element2.classList.remove("active"));
target.classList.add("active");
}));
if (navigator.userAgent.match(/iPad/i) !== null) {
iframe.style.height = "100%";
}
});
})()