UNPKG

disable-body-scroll

Version:

Disable the scrolling of the content of the body when the content of the pop-up window is scrolled

1 lines 2.05 kB
"use strict";Object.defineProperty(exports,"__esModule",{value:!0}),exports.directive=exports.disabledBodyScroll=void 0;var isScrolledToBottom=function(o){return o.scrollHeight<=o.scrollTop+o.offsetHeight},isScrolledToTop=function(o){return 0===o.scrollTop};function suppertScrollBehavior(){return void 0!==document.body.style.overscrollBehavior}function disabledDefault(o){var e=arguments.length>1&&void 0!==arguments[1]?arguments[1]:"moveToTop";return!("moveToBottom"!=e||!isScrolledToTop(o))||!("moveToTop"!=e||!isScrolledToBottom(o))}function removeDocumentStartEvent(o){o.removeEventListener("touchstart",o.$documentTouchStart),o.removeEventListener("mousemove",o.$movefunction),o.removeEventListener("mouseup",o.$upFunction)}function setScrollBehavior(o,e){o.style.overscrollBehavior="working"==e?"contain":"auto"}var disabledBodyScroll=function(o,e){var t=e.value,r="disabled"===e.arg?"disabled":"working";if(suppertScrollBehavior())setScrollBehavior(o,r);else{var n=0,i=0;o.$movefunction=function(e){e.stopPropagation();var u=s(e),c=u.offsetY-n,v=u.offsetX-i,l=c<0?"moveToTop":"moveToBottom";90==t?l=v>0?"moveToTop":"moveToBottom":-90==t&&(l=v<0?"moveToTop":"moveToBottom");var a=disabledDefault(o,l);"working"===r&&a&&e.cancelable&&e.preventDefault()},o.$upFunction=function(e){e.stopPropagation(),o.removeEventListener("mousemove",o.$movefunction),o.removeEventListener("mouseup",o.$upFunction)},o.$documentTouchStart=function(e){e.stopPropagation();var t=s(e);n=t.offsetY,i=t.offsetX,o.addEventListener("touchmove",o.$movefunction,!1),o.addEventListener("touchend",o.$upFunction,!1)},o.addEventListener("touchstart",o.$documentTouchStart,!1)}function s(o){var e={};o.targetTouches&&o.targetTouches[0]?e={offsetX:o.targetTouches[0].pageX,offsetY:o.targetTouches[0].pageY,e:o}:e={offsetX:o.offsetX,offsetY:o.offsetY,e:o};return e}};exports.disabledBodyScroll=disabledBodyScroll;var directive={bind:disabledBodyScroll,beforeMount:disabledBodyScroll,unbind:removeDocumentStartEvent,unmounted:removeDocumentStartEvent};exports.directive=directive;