import {i18n} from "../i18n"; export const previewImage = (oldImgElement: HTMLImageElement, lang: keyof II18n = "zh_CN", theme = "classic") => { const oldImgRect = oldImgElement.getBoundingClientRect(); const height = 36; document.body.insertAdjacentHTML("beforeend", `
${i18n[lang].spin} X  ${i18n[lang].close}
`); document.body.style.overflow = "hidden"; // 图片从原始位置移动到预览正中间的动画效果 const imgElement = document.querySelector(".vditor-img img") as HTMLImageElement; const translate3d = `translate3d(${Math.max(0, window.innerWidth - oldImgElement.naturalWidth) / 2}px, ${Math.max(0, window.innerHeight - height - oldImgElement.naturalHeight) / 2}px, 0)`; setTimeout(() => { imgElement.setAttribute("style", `transition: transform .3s ease-in-out;transform: ${translate3d}`); setTimeout(() => { imgElement.parentElement.scrollTo( (imgElement.parentElement.scrollWidth - imgElement.parentElement.clientWidth) / 2, (imgElement.parentElement.scrollHeight - imgElement.parentElement.clientHeight) / 2); }, 400); }); // 旋转 const btnElement = document.querySelector(".vditor-img__btn"); btnElement.addEventListener("click", () => { const deg = parseInt(btnElement.getAttribute("data-deg"), 10) + 90; if ((deg / 90) % 2 === 1 && oldImgElement.naturalWidth > imgElement.parentElement.clientHeight) { imgElement.style.transform = `translate3d(${ Math.max(0, window.innerWidth - oldImgElement.naturalWidth) / 2}px, ${ oldImgElement.naturalWidth / 2 - oldImgElement.naturalHeight / 2}px, 0) rotateZ(${deg}deg)`; } else { imgElement.style.transform = `${translate3d} rotateZ(${deg}deg)`; } btnElement.setAttribute("data-deg", deg.toString()); setTimeout(() => { imgElement.parentElement.scrollTo( (imgElement.parentElement.scrollWidth - imgElement.parentElement.clientWidth) / 2, (imgElement.parentElement.scrollHeight - imgElement.parentElement.clientHeight) / 2); }, 400); }); };