<!--NOLIM--><!--NLM142--><!--settings {
"elemClass": "elemClass142", "cursorTypeHover":"grab", "cursorType":"grabbing", "scaling":"0.9", "onlyDesktop":"1"
}
settingsend--><!--ts1741601411136ts--><script>$(document).ready(function() {
if('1'==='1' && window.innerWidth < 1200) {
console.log('off');
return;
}
const dragItemList=Array.from(document.querySelectorAll('.elemClass142'));
console.log('dragItemList', dragItemList);
let active=false;
let currentX;
let currentY;
let initialX;
let initialY;
let xOffset=0;
let yOffset=0;
let zIndexCounter=getBiggestZIndex() + 1;
let draggedElem;
/* Функция получения самого большого z-index среди всех перетаскиваемых элементов */
function getBiggestZIndex() {
const zIndexArray=[];
dragItemList.forEach((dragItem)=> {
const dragItemZIndex=window.getComputedStyle(dragItem).zIndex;
zIndexArray.push(dragItemZIndex);
}
);
return Math.max(...zIndexArray);
}
/* Функции для блокировки скролла */
function disableBodyScroll() {
document.body.style.overflow='hidden';
}
function enableBodyScroll() {
document.body.style.overflow='';
}
function dragStart(e) {
if(window.innerWidth < 1200) {
disableBodyScroll();
}
draggedElem=e.target.closest('.elemClass142');
draggedElem.classList.add('draggable-dragging');
draggedElem.style.setProperty('z-index', zIndexCounter++);
/* Устанавливаем офсеты текущего элемента */
let myZoom=checkZoom(draggedElem);
xOffset=(draggedElem ? draggedElem.offsetLeft * myZoom: 0);
yOffset=(draggedElem ? draggedElem.offsetTop * myZoom: 0);
if (e.type==="touchstart") {
initialX=e.touches[0].clientX - xOffset;
initialY=e.touches[0].clientY - yOffset;
}
else {
initialX=e.clientX - xOffset;
initialY=e.clientY - yOffset;
}
if (dragItemList.includes(draggedElem)) {
active=true;
}
}
function dragEnd(e) {
if(window.innerWidth < 1200) {
enableBodyScroll();
}
if(!draggedElem) return;
draggedElem.classList.remove('draggable-dragging');
initialX=currentX;
initialY=currentY;
active=false;
draggedElem=null;
}
function drag(e) {
if (active) {
e.preventDefault();
if (e.type==="touchmove") {
currentX=e.touches[0].clientX - initialX;
currentY=e.touches[0].clientY - initialY;
}
else {
currentX=e.clientX - initialX;
currentY=e.clientY - initialY;
}
xOffset=currentX;
yOffset=currentY;
const dragElem=e.target.closest('.elemClass142');
if (draggedElem) {
setTranslate(currentX, currentY, draggedElem);
}
}
}
function setTranslate(xPos, yPos, el) {
const myZoom=checkZoom(el);
el.style.left=(xPos / myZoom) + "px";
el.style.top=(yPos / myZoom) + "px";
}
function checkZoom(el) {
let myZoom=1;
if (window.isFirefox || window.isOpera) {
let scaleWrapper=el.querySelector(".tn-atom__scale-wrapper");
if (scaleWrapper) {
myZoom=scaleWrapper.style.transform.replace(/[^0-9, .]/g, "");
}
}
else {
if (el.style.zoom !="") {
myZoom=el.style.zoom;
}
}
return myZoom;
}
/* Добавляем обработчики для мыши */
dragItemList.forEach((dragItem)=> {
dragItem.addEventListener("mousedown", (e)=> {
e.preventDefault();
dragStart(e);
}
);
/* Добавляем обработчики для touch-событий */
dragItem.addEventListener("touchstart", (e)=> {
dragStart(e);
}
);
}
);
document.addEventListener("mouseup", (e)=> {
e.preventDefault();
dragEnd(e);
}
);
document.addEventListener("mousemove", (e)=> {
e.preventDefault();
drag(e);
}
);
if(1) {
document.addEventListener("touchmove", (e)=> {
drag(e);
}
);
}
if(!1) {
document.addEventListener("touchmove", (e)=> {
drag(e);
}
, {
passive: false
}
);
}
document.addEventListener("touchend", (e)=> {
dragEnd(e);
}
);
}
);
</script><style>.draggable-dragging {
/* Класс, добавляемый при перемещении элемента */
transform: scale(0.9);
cursor: grabbing!important;
}
.elemClass142 {
cursor: grab;
}
</style>