Server IP : 80.87.202.40 / Your IP : 216.73.216.169 Web Server : Apache System : Linux rospirotorg.ru 5.14.0-539.el9.x86_64 #1 SMP PREEMPT_DYNAMIC Thu Dec 5 22:26:13 UTC 2024 x86_64 User : bitrix ( 600) PHP Version : 8.2.27 Disable Function : NONE MySQL : OFF | cURL : ON | WGET : ON | Perl : ON | Python : OFF | Sudo : ON | Pkexec : ON Directory : /home/bitrix/ext_www/cvetdv.ru/bitrix/js/landing/ui/panel/content/src/internal/ |
Upload File : |
import {Dom} from 'main.core'; import calculateDurationTransition from './calculate-duration-transition'; export default function scrollTo(container, element) { return new Promise((resolve) => { let elementTop = 0; let duration = 0; if (element) { const defaultMargin = 20; const elementMarginTop = Math.max(parseInt(Dom.style(element, 'margin-top')), defaultMargin); let containerScrollTop = container.scrollTop; if (!(container instanceof HTMLIFrameElement)) { elementTop = element.offsetTop - (container.offsetTop || 0) - elementMarginTop; } else { containerScrollTop = container.contentWindow.scrollY; elementTop = BX.pos(element).top - elementMarginTop - 100; } duration = calculateDurationTransition( Math.abs(elementTop - containerScrollTop) ); const start = Math.max(containerScrollTop, 0); const finish = Math.max(elementTop, 0); if (start !== finish) { (new BX.easing({ duration, start: {scrollTop: start}, finish: {scrollTop: finish}, step(state) { if (!(container instanceof HTMLIFrameElement)) { container.scrollTop = state.scrollTop; } else { container.contentWindow.scrollTo(0, Math.max(state.scrollTop, 0)); } }, })).animate(); setTimeout(resolve, duration); } else { resolve(); } } else { resolve(); } }); }