PageSourceSearch

https://www.portseattle.org/core/assets/vendor/tua-body-scroll-lock/tua-bsl.umd.min.js?v=11.3.10

js portseattle.org collected 2026-09-24 08:38:17 UTC 4,086 bytes, 6 lines download raw bytes

1/**
2 * tua-body-scroll-lock v1.6.0
3 * (c) 2025 Evinma, BuptStEve
4 * @license MIT
5 */
6!function(e,t){"object"==typeof exports&&"undefined"!=typeof module?t(exports):"function"==typeof define&&define.amd?define(["exports"],t):t((e="undefined"!=typeof globalThis?globalThis:e||self).bodyScrollLock={})}(this,(function(e){"use strict";var t=function(){return"undefined"==typeof window},n=function(e){e=e||navigator.userAgent;var t=/(iPad).*OS\s([\d_]+)/.test(e);return{ios:!t&&/(iPhone\sOS)\s([\d_]+)/.test(e)||t,android:/(Android);?[\s/]+([\d.]+)?/.test(e)}};function o(e){if(t())return!1;if(!e)throw new Error("options must be provided");var n=!1,o={get passive(){n=!0}},i=function(){},l="__TUA_BSL_TEST_PASSIVE__";window.addEventListener(l,i,o),window.removeEventListener(l,i,o);var c=e.capture;return n?e:void 0!==c&&c}function i(){return"__BSL_PREVENT_DEFAULT__"in window||(window.__BSL_PREVENT_DEFAULT__=function(e){e.cancelable&&e.preventDefault()}),window.__BSL_PREVENT_DEFAULT__}function l(e){return e?Array.isArray(e)?e:[e]:[]}var c={lockedNum:0,lockedElements:[],unLockCallback:null,documentListenerAdded:!1,initialClientPos:{clientX:0,clientY:0}};function r(e){if(t())return c;if(!(null==e?void 0:e.useGlobalLockState))return r.lockState;var n="__BSL_LOCK_STATE__"in window?Object.assign(Object.assign({},c),window.__BSL_LOCK_STATE__):c;return window.__BSL_LOCK_STATE__=n,n}function d(e){var t=document.documentElement,n=Object.assign({},t.style),o=(void 0,!0);if(t.style.overflow="hidden",t.style.boxSizing="border-box",o){var i=window.innerWidth-t.clientWidth,l=parseInt(window.getComputedStyle(t).paddingRight,10);t.style.paddingRight="".concat(i+l,"px")}return function(){["overflow","boxSizing","paddingRight"].forEach((function(e){t.style[e]=n[e]||""}))}}function s(e){e.documentListenerAdded&&(document.removeEventListener("touchmove",i(),o({passive:!1})),e.documentListenerAdded=!1)}r.lockState=c,e.clearBodyLocks=function(e){var o;if(!t()){var i=r(e);if(i.lockedNum=0,null===(o=i.unLockCallback)||void 0===o||o.call(i),n().ios){if(i.lockedElements.length)for(var l=i.lockedElements.pop();l;)l.ontouchmove=null,l.ontouchstart=null,l=i.lockedElements.pop();s(i)}}},e.getLockState=r,e.lock=function(e,c){if(!t()){var s=n(),u=r(c);s.ios?(l(e).filter((function(e){return e&&-1===u.lockedElements.indexOf(e)})).forEach((function(e){e.ontouchstart=function(e){var t=e.targetTouches[0],n=t.clientX,o=t.clientY;u.initialClientPos={clientX:n,clientY:o}},e.ontouchmove=function(t){!function(e,t,n){if(t){var o=t.scrollTop,l=t.scrollLeft,c=t.scrollWidth,r=t.scrollHeight,d=t.clientWidth,s=t.clientHeight,u=e.targetTouches[0].clientX-n.clientX,a=e.targetTouches[0].clientY-n.clientY,f=Math.abs(a)>Math.abs(u);if(f&&(a>0&&0===o||a<0&&o+s+1>=r)||!f&&(u>0&&0===l||u<0&&l+d+1>=c))return i()(e)}e.stopPropagation()}(t,e,u.initialClientPos)},u.lockedElements.push(e)})),function(e){if(!n().ios)return;if(e.documentListenerAdded)return;document.addEventListener("touchmove",i(),o({passive:!1})),e.documentListenerAdded=!0}(u),(null==c?void 0:c.setOverflowForIOS)&&(u.unLockCallback=d())):u.lockedNum<=0&&(u.unLockCallback=s.android?function(e){var t=document.documentElement,n=document.body,o=t.scrollTop||n.scrollTop,i=Object.assign({},t.style),l=Object.assign({},n.style);return t.style.height="100%",t.style.overflow="hidden",n.style.top="-".concat(o,"px"),n.style.width="100%",n.style.height="auto",n.style.position="fixed",n.style.overflow=(null==e?void 0:e.overflowType)||"hidden",function(){t.style.height=i.height||"",t.style.overflow=i.overflow||"",["top","width","height","overflow","position"].forEach((function(e){n.style[e]=l[e]||""})),"scrollBehavior"in document.documentElement.style?window.scrollTo({top:o,behavior:"instant"}):window.scrollTo(0,o)}}(c):d()),u.lockedNum+=1}},e.unlock=function(e,o){var i;if(!t()){var c=r(o);c.lockedNum-=1,c.lockedNum>0||(null===(i=c.unLockCallback)||void 0===i||i.call(c),n().ios&&(l(e).forEach((function(e){var t=c.lockedElements.indexOf(e);e&&-1!==t&&(e.ontouchmove=null,e.ontouchstart=null,c.lockedElements.splice(t,1))})),s(c)))}}}));

Line numbers count LF bytes from the start of the resource, as the search results do. Vendor segments are library code the classifier recognised; they are stored but not indexed. Bytes are shown as Latin1 characters, one per byte.