@tarojs/components
Version:
1 lines • 5.48 kB
JavaScript
var __awaiter=this&&this.__awaiter||function(t,e,o,r){function l(t){return t instanceof o?t:new o((function(e){e(t)}))}return new(o||(o=Promise))((function(o,n){function i(t){try{c(r.next(t))}catch(t){n(t)}}function s(t){try{c(r["throw"](t))}catch(t){n(t)}}function c(t){t.done?o(t.value):l(t.value).then(i,s)}c((r=r.apply(t,e||[])).next())}))};var __generator=this&&this.__generator||function(t,e){var o={label:0,sent:function(){if(n[0]&1)throw n[1];return n[1]},trys:[],ops:[]},r,l,n,i;return i={next:s(0),throw:s(1),return:s(2)},typeof Symbol==="function"&&(i[Symbol.iterator]=function(){return this}),i;function s(t){return function(e){return c([t,e])}}function c(s){if(r)throw new TypeError("Generator is already executing.");while(i&&(i=0,s[0]&&(o=0)),o)try{if(r=1,l&&(n=s[0]&2?l["return"]:s[0]?l["throw"]||((n=l["return"])&&n.call(l),0):l.next)&&!(n=n.call(l,s[1])).done)return n;if(l=0,n)s=[s[0]&2,n.value];switch(s[0]){case 0:case 1:n=s;break;case 4:o.label++;return{value:s[1],done:false};case 5:o.label++;l=s[1];s=[0];continue;case 7:s=o.ops.pop();o.trys.pop();continue;default:if(!(n=o.trys,n=n.length>0&&n[n.length-1])&&(s[0]===6||s[0]===2)){o=0;continue}if(s[0]===3&&(!n||s[1]>n[0]&&s[1]<n[3])){o.label=s[1];break}if(s[0]===6&&o.label<n[1]){o.label=n[1];n=s;break}if(n&&o.label<n[2]){o.label=n[2];o.ops.push(s);break}if(n[2])o.ops.pop();o.trys.pop();continue}s=e.call(t,o)}catch(t){s=[6,t];l=0}finally{r=n=0}if(s[0]&5)throw s[1];return{value:s[0]?s[1]:void 0,done:true}}};import{r as registerInstance,c as createEvent,h,H as Host,g as getElement}from"./index-980f930f.js";import{c as classnames}from"./index-c3e4004b.js";import{d as debounce}from"./index-d1b03e47.js";var indexCss="taro-scroll-view-core{display:block;width:100%;-webkit-overflow-scrolling:auto}taro-scroll-view-core::-webkit-scrollbar{display:none}.taro-scroll-view__scroll-x{overflow-x:scroll;overflow-y:hidden}.taro-scroll-view__scroll-y{overflow-x:hidden;overflow-y:scroll}";function easeOutScroll(t,e,o,r){if(o===void 0){o=500}if(t===e||typeof t!=="number"){return}var l=e-t;var n=Date.now();var i=e>=t;function s(t,e,o,r){return o*t/r+e}function c(){t=s(Date.now()-n,t,l,o);if(i&&t>=e||!i&&e>=t){r(e);return}r(t);requestAnimationFrame(c)}c()}var ScrollView=function(){function t(t){var e=this;registerInstance(this,t);this.onScroll=createEvent(this,"scroll",3);this.onScrollToUpper=createEvent(this,"scrolltoupper",3);this.onScrollToLower=createEvent(this,"scrolltolower",3);this._scrollLeft=0;this._scrollTop=0;this.upperAndLower=debounce((function(){var t=e.el,o=t.offsetWidth,r=t.offsetHeight,l=t.scrollLeft,n=t.scrollTop,i=t.scrollHeight,s=t.scrollWidth;var c=Number(e.lowerThreshold);var a=Number(e.upperThreshold);if(!isNaN(c)&&(e.scrollY&&r+n+c>=i||e.scrollX&&o+l+c>=s)){e.onScrollToLower.emit({direction:e.scrollX?"right":e.scrollY?"bottom":""})}if(!isNaN(a)&&(e.scrollY&&n<=a||e.scrollX&&l<=a)){e.onScrollToUpper.emit({direction:e.scrollX?"left":e.scrollY?"top":""})}}),200);this.scrollX=false;this.scrollY=false;this.upperThreshold=50;this.lowerThreshold=50;this.mpScrollTop=undefined;this.mpScrollLeft=undefined;this.mpScrollIntoView=undefined;this.animated=false}t.prototype.watchScrollLeft=function(t){var e=Number(t);var o=this.animated;this.mpScrollToMethod({left:e,animated:o})};t.prototype.watchScrollTop=function(t){var e=Number(t);var o=this.animated;this.mpScrollToMethod({top:e,animated:o})};t.prototype.watchScrollIntoView=function(t){this.mpScrollIntoViewMethod(t)};t.prototype.handleScroll=function(t){if(t instanceof CustomEvent)return;t.stopPropagation();var e=this.el,o=e.scrollLeft,r=e.scrollTop,l=e.scrollHeight,n=e.scrollWidth;this._scrollLeft=o;this._scrollTop=r;this.upperAndLower();this.onScroll.emit({scrollLeft:o,scrollTop:r,scrollHeight:l,scrollWidth:n})};t.prototype.mpScrollToMethod=function(t){return __awaiter(this,void 0,void 0,(function(){var e,o,r,l,n;var i=this;return __generator(this,(function(s){e=t.top,o=t.left,r=t.duration,l=t.animated,n=l===void 0?false:l;if(this.scrollY&&typeof e==="number"&&!isNaN(e)&&e!==this._scrollTop){if(n){easeOutScroll(this._scrollTop,e,r,(function(t){return i.el.scrollTop=t}))}else{this.el.scrollTop=e}this._scrollTop=e}if(this.scrollX&&typeof o==="number"&&!isNaN(o)&&o!==this._scrollLeft){if(n){easeOutScroll(this._scrollLeft,o,r,(function(t){return i.el.scrollLeft=t}))}else{this.el.scrollLeft=o}this._scrollLeft=o}return[2]}))}))};t.prototype.mpScrollIntoViewMethod=function(t){return __awaiter(this,void 0,void 0,(function(){var e;return __generator(this,(function(o){if(typeof t==="string"&&t){(e=document.querySelector("#".concat(t)))===null||e===void 0?void 0:e.scrollIntoView({behavior:"smooth",block:"center",inline:"start"})}return[2]}))}))};t.prototype.componentDidLoad=function(){var t=Number(this.mpScrollTop);var e=Number(this.mpScrollLeft);var o=this.animated;this.mpScrollToMethod({top:t,left:e,animated:o})};t.prototype.render=function(){var t=this,e=t.scrollX,o=t.scrollY;var r=classnames({"taro-scroll-view__scroll-x":e,"taro-scroll-view__scroll-y":o});return h(Host,{class:r},h("slot",null))};Object.defineProperty(t.prototype,"el",{get:function(){return getElement(this)},enumerable:false,configurable:true});Object.defineProperty(t,"watchers",{get:function(){return{mpScrollLeft:["watchScrollLeft"],mpScrollTop:["watchScrollTop"],mpScrollIntoView:["watchScrollIntoView"]}},enumerable:false,configurable:true});return t}();ScrollView.style=indexCss;export{ScrollView as taro_scroll_view_core};