PageSourceSearch

https://collabohouse.info/assets/js/lib/scrollbooster.min.js?v=1.0.24

js collabohouse.info collected 2026-10-03 21:01:08 UTC 11,397 bytes, 1 lines download raw bytes

1!function(t,e){"object"==typeof exports&&"object"==typeof module?module.exports=e():"function"==typeof define&&define.amd?define("ScrollBooster",[],e):"object"==typeof exports?exports.ScrollBooster=e():t.ScrollBooster=e()}(this,function(){return i=[function(t,e,i){"use strict";function n(e,t){var i,o=Object.keys(e);return Object.getOwnPropertySymbols&&(i=Object.getOwnPropertySymbols(e),t&&(i=i.filter(function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable})),o.push.apply(o,i)),o}function o(o){for(var t=1;t<arguments.length;t++){var s=null!=arguments[t]?arguments[t]:{};t%2?n(Object(s),!0).forEach(function(t){var e,i;e=o,i=s[t=t],t in e?Object.defineProperty(e,t,{value:i,enumerable:!0,configurable:!0,writable:!0}):e[t]=i}):Object.getOwnPropertyDescriptors?Object.defineProperties(o,Object.getOwnPropertyDescriptors(s)):n(Object(s)).forEach(function(t){Object.defineProperty(o,t,Object.getOwnPropertyDescriptor(s,t))})}return o}function s(t,e){for(var i=0;i<e.length;i++){var o=e[i];o.enumerable=o.enumerable||!1,o.configurable=!0,"value"in o&&(o.writable=!0),Object.defineProperty(t,o.key,o)}}i.r(e),i.d(e,"default",function(){return r});s(p.prototype,[{key:"updateOptions",value:function(){this.props=o({},this.props,{},0<arguments.length&&void 0!==arguments[0]?arguments[0]:{}),this.props.onUpdate(this.getState()),this.startAnimationLoop()}},{key:"updateMetrics",value:function(){var t;this.viewport={width:this.props.viewport.clientWidth,height:this.props.viewport.clientHeight},this.content={width:(t=this.props.content,Math.max(t.offsetWidth,t.scrollWidth)),height:(t=this.props.content,Math.max(t.offsetHeight,t.scrollHeight))},this.edgeX={from:Math.min(-this.content.width+this.viewport.width,0),to:0},this.edgeY={from:Math.min(-this.content.height+this.viewport.height,0),to:0},this.props.onUpdate(this.getState()),this.startAnimationLoop()}},{key:"startAnimationLoop",value:function(){var t=this;this.isRunning=!0,cancelAnimationFrame(this.rafID),this.rafID=requestAnimationFrame(function(){return t.animate()})}},{key:"animate",value:function(){var t,e=this;this.isRunning&&(this.updateScrollPosition(),this.isMoving()||(this.isRunning=!1,this.isTargetScroll=!1),t=this.getState(),this.setContentPosition(t),this.props.onUpdate(t),this.rafID=requestAnimationFrame(function(){return e.animate()}))}},{key:"updateScrollPosition",value:function(){this.applyEdgeForce(),this.applyDragForce(),this.applyScrollForce(),this.applyTargetForce();var t=1-this.props.friction;this.velocity.x*=t,this.velocity.y*=t,"vertical"!==this.props.direction&&(this.position.x+=this.velocity.x),"horizontal"!==this.props.direction&&(this.position.y+=this.velocity.y),this.props.bounce&&!this.isScrolling||this.isTargetScroll||(this.position.x=Math.max(Math.min(this.position.x,this.edgeX.to),this.edgeX.from),this.position.y=Math.max(Math.min(this.position.y,this.edgeY.to),this.edgeY.from))}},{key:"applyForce",value:function(t){this.velocity.x+=t.x,this.velocity.y+=t.y}},{key:"applyEdgeForce",value:function(){var t,e,i,o,s,n,r,p,h,a,c;this.props.bounce&&!this.isDragging&&(t=this.position.x<this.edgeX.from,e=this.position.x>this.edgeX.to,i=this.position.y<this.edgeY.from,o=this.position.y>this.edgeY.to,n=i||o,(s=t||e)||n)&&(r=t?this.edgeX.from:this.edgeX.to,p=i?this.edgeY.from:this.edgeY.to,r=r-this.position.x,p=p-this.position.y,h={x:r*this.props.bounceForce,y:p*this.props.bounceForce},a=this.position.x+(this.velocity.x+h.x)/this.props.friction,c=this.position.y+(this.velocity.y+h.y)/this.props.friction,(t&&a>=this.edgeX.from||e&&a<=this.edgeX.to)&&(h.x=r*this.props.bounceForce-this.velocity.x),(i&&c>=this.edgeY.from||o&&c<=this.edgeY.to)&&(h.y=p*this.props.bounceForce-this.velocity.y),this.applyForce({x:s?h.x:0,y:n?h.y:0}))}},{key:"applyDragForce",value:function(){var t,e;this.isDragging&&(t=this.dragPosition.x-this.position.x,e=this.dragPosition.y-this.position.y,this.applyForce({x:t-this.velocity.x,y:e-this.velocity.y}))}},{key:"applyScrollForce",value:function(){this.isScrolling&&(this.applyForce({x:this.scrollOffset.x-this.velocity.x,y:this.scrollOffset.y-this.velocity.y}),this.scrollOffset.x=0,this.scrollOffset.y=0)}},{key:"applyTargetForce",value:function(){this.isTargetScroll&&this.applyForce({x:.08*(this.targetPosition.x-this.position.x)-this.velocity.x,y:.08*(this.targetPosition.y-this.position.y)-this.velocity.y})}},{key:"isMoving",value:function(){return this.isDragging||this.isScrolling||.01<=Math.abs(this.velocity.x)||.01<=Math.abs(this.velocity.y)}},{key:"scrollTo",value:function(){var t=0<arguments.length&&void 0!==arguments[0]?arguments[0]:{};this.isTargetScroll=!0,this.targetPosition.x=-t.x||0,this.targetPosition.y=-t.y||0,this.startAnimationLoop()}},{key:"setPosition",value:function(){var t=0<arguments.length&&void 0!==arguments[0]?arguments[0]:{};this.velocity.x=0,this.velocity.y=0,this.position.x=-t.x||0,this.position.y=-t.y||0,this.startAnimationLoop()}},{key:"getState",value:function(){return{isMoving:this.isMoving(),isDragging:!(!this.dragOffset.x&&!this.dragOffset.y),position:{x:-this.position.x,y:-this.position.y},dragOffset:this.dragOffset,borderCollision:{left:this.position.x>=this.edgeX.to,right:this.position.x<=this.edgeX.from,top:this.position.y>=this.edgeY.to,bottom:this.position.y<=this.edgeY.from}}}},{key:"setContentPosition",value:function(t){"transform"===this.props.scrollMode&&(this.props.content.style.transform="translate(".concat(-t.position.x,"px, ").concat(-t.position.y,"px)")),"native"===this.props.scrollMode&&(this.props.viewport.scrollTop=t.position.y,this.props.viewport.scrollLeft=t.position.x)}},{key:"handleEvents",value:function(){function p(t){var e;h.isDragging&&(e=(c?t.touches[0]:t).pageX,t=(c?t.touches[0]:t).pageY,h.dragOffset.x=e-a.x,h.dragOffset.y=t-a.y,h.dragPosition.x=h.dragStartPosition.x+h.dragOffset.x,h.dragPosition.y=h.dragStartPosition.y+h.dragOffset.y)}var h=this,a={x:0,y:0},e=null,c=!1;this.events.pointerdown=function(t){var e=(c=!(!t.touches||!t.touches[0]))?t.touches[0]:t,i=e.pageX,o=e.pageY,s=e.clientX,e=e.clientY,n=h.props.viewport,r=n.getBoundingClientRect();if(!(s-r.left>=n.clientLeft+n.clientWidth)&&!(e-r.top>=n.clientTop+n.clientHeight)&&h.props.shouldScroll(h.getState(),t)&&2!==t.button&&("mouse"!==h.props.pointerMode||!c)&&("touch"!==h.props.pointerMode||c)&&!(h.props.inputsFocus&&-1<["input","textarea","button","select","label"].indexOf(t.target.nodeName.toLowerCase()))){if(h.props.textSelection){if(function(t,e,
1i){for(var o=t.childNodes,s=document.createRange(),n=0;n<o.length;n++){var r=o[n];if(3===r.nodeType){s.selectNodeContents(r);var p=s.getBoundingClientRect();if(e>=p.left&&i>=p.top&&e<=p.right&&i<=p.bottom)return r}}}(t.target,s,e))return;(r=window.getSelection?window.getSelection():document.selection)&&(r.removeAllRanges?r.removeAllRanges():r.empty&&r.empty())}h.isDragging=!0,a.x=i,a.y=o,h.dragStartPosition.x=h.position.x,h.dragStartPosition.y=h.position.y,p(t),h.startAnimationLoop(),h.props.pointerDownPreventDefault&&t.preventDefault()}},this.events.pointermove=function(t){p(t)},this.events.pointerup=function(){h.isDragging=!1},this.events.wheel=function(t){h.props.emulateScroll&&(h.velocity.x=0,h.velocity.y=0,h.isScrolling=!0,h.scrollOffset.x=-t.deltaX,h.scrollOffset.y=-t.deltaY,h.startAnimationLoop(),clearTimeout(e),e=setTimeout(function(){return h.isScrolling=!1},80),t.preventDefault())},this.events.scroll=function(){var t=h.props.viewport,e=t.scrollLeft,t=t.scrollTop;3<Math.abs(h.position.x+e)&&(h.position.x=-e,h.velocity.x=0),3<Math.abs(h.position.y+t)&&(h.position.y=-t,h.velocity.y=0)},this.events.click=function(t){var e=h.getState(),i="vertical"!==h.props.direction?e.dragOffset.x:0,o="horizontal"!==h.props.direction?e.dragOffset.y:0;5<Math.max(Math.abs(i),Math.abs(o))&&(t.preventDefault(),t.stopPropagation()),h.props.onClick(e,t)},this.events.contentLoad=function(){return h.updateMetrics()},this.events.resize=function(){return h.updateMetrics()},this.props.viewport.addEventListener("mousedown",this.events.pointerdown),this.props.viewport.addEventListener("touchstart",this.events.pointerdown),this.props.viewport.addEventListener("click",this.events.click),this.props.viewport.addEventListener("wheel",this.events.wheel),this.props.viewport.addEventListener("scroll",this.events.scroll),this.props.content.addEventListener("load",this.events.contentLoad,!0),window.addEventListener("mousemove",this.events.pointermove),window.addEventListener("touchmove",this.events.pointermove),window.addEventListener("mouseup",this.events.pointerup),window.addEventListener("touchend",this.events.pointerup),window.addEventListener("resize",this.events.resize)}},{key:"destroy",value:function(){this.props.viewport.removeEventListener("mousedown",this.events.pointerdown),this.props.viewport.removeEventListener("touchstart",this.events.pointerdown),this.props.viewport.removeEventListener("click",this.events.click),this.props.viewport.removeEventListener("wheel",this.events.wheel),this.props.viewport.removeEventListener("scroll",this.events.scroll),this.props.content.removeEventListener("load",this.events.contentLoad),window.removeEventListener("mousemove",this.events.pointermove),window.removeEventListener("touchmove",this.events.pointermove),window.removeEventListener("mouseup",this.events.pointerup),window.removeEventListener("touchend",this.events.pointerup),window.removeEventListener("resize",this.events.resize)}}]);var r=p;function p(){var t=0<arguments.length&&void 0!==arguments[0]?arguments[0]:{},e=this,i=p;if(!(e instanceof i))throw new TypeError("Cannot call a class as a function");e={content:t.viewport.children[0],direction:"all",pointerMode:"all",scrollMode:void 0,bounce:!0,bounceForce:.1,friction:.05,textSelection:!1,inputsFocus:!0,emulateScroll:!1,pointerDownPreventDefault:!0,onClick:function(){},onUpdate:function(){},shouldScroll:function(){return!0}};this.props=o({},e,{},t),this.props.viewport&&this.props.viewport instanceof Element?this.props.content?(this.isDragging=!1,this.isTargetScroll=!1,this.isScrolling=!1,this.isRunning=!1,this.position=o({},i={x:0,y:0}),this.velocity=o({},i),this.dragStartPosition=o({},i),this.dragOffset=o({},i),this.dragPosition=o({},i),this.targetPosition=o({},i),this.scrollOffset=o({},i),this.rafID=null,this.events={},this.updateMetrics(),this.handleEvents()):console.error("ScrollBooster init error: Viewport does not have any content"):console.error('ScrollBooster init error: "viewport" config property must be present and must be Element')}}],o={},s.m=i,s.c=o,s.d=function(t,e,i){s.o(t,e)||Object.defineProperty(t,e,{enumerable:!0,get:i})},s.r=function(t){"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(t,Symbol.toStringTag,{value:"Module"}
1),Object.defineProperty(t,"__esModule",{value:!0})},s.t=function(e,t){if(1&t&&(e=s(e)),8&t)return e;if(4&t&&"object"==typeof e&&e&&e.__esModule)return e;var i=Object.create(null);if(s.r(i),Object.defineProperty(i,"default",{enumerable:!0,value:e}),2&t&&"string"!=typeof e)for(var o in e)s.d(i,o,function(t){return e[t]}.bind(null,o));return i},s.n=function(t){var e=t&&t.__esModule?function(){return t.default}:function(){return t};return s.d(e,"a",e),e},s.o=function(t,e){return Object.prototype.hasOwnProperty.call(t,e)},s.p="",s(s.s=0).default;function s(t){var e;return(o[t]||(e=o[t]={i:t,l:!1,exports:{}},i[t].call(e.exports,e,e.exports,s),e.l=!0,e)).exports}var i,o});

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.