UNPKG

2.98 kBJavaScriptView Raw
1import{r as t,c as i,h as s,H as h,g as e}from"./p-059912fd.js";let a=class{constructor(s){t(this,s),this.onChange=i(this,"change",7),this.onChanging=i(this,"changing",7),this.min=0,this.max=100,this.step=1,this.disabled=!1,this.value=0,this.activeColor="#1aad19",this.backgroundColor="#e9e9e9",this.blockSize=28,this.blockColor="#ffffff",this.showValue=!1,this.name="",this.totalWidth=0,this.touching=!1,this.ogX=0,this.touchId=null,this.percent=0,this.isWillLoadCalled=!1,this.handleTouchStart=t=>{this.touching||this.disabled||(this.touching=!0,this.touchId=t.targetTouches[0].identifier,this.totalWidth=this.sliderInsRef.clientWidth,this.ogX=t.targetTouches[0].pageX,this.ogPercent=this.percent)},this.handleTouchMove=t=>{const{disabled:i,touching:s,touchId:h,totalWidth:e,max:a,min:n,ogX:o,ogPercent:l}=this;if(!s||i)return;if(t.targetTouches[0].identifier!==h)return;t.preventDefault();let r=(t.targetTouches[0].pageX-o)/e*100+l;r=Math.max(0,Math.min(r,100)),this.updateByStep(n+.01*r*(a-n)),this.onChanging.emit({detail:t.detail,value:this.val})},this.handleTouchEnd=t=>{const{disabled:i,touching:s}=this;s&&!i&&(this.percent!==this.ogPercent&&this.onChange.emit({detail:t.detail,value:this.val}),this.touching=!1,this.touchId=null,this.ogX=0,this.ogPercent=0)}}function(t){if(!this.isWillLoadCalled)return;const{max:i,min:s}=this;if(null!==t&&t!==this.val){const h=Math.max(s,Math.min(t,i));this.updateByStep(h)}}componentDidLoad(){Object.defineProperty(this.el,"value",{get:()=>this.val,set:t=>this.value=t,configurable:!0}),this.handler.addEventListener("touchstart",this.handleTouchStart),this.handler.addEventListener("touchmove",this.handleTouchMove),this.handler.addEventListener("touchend",this.handleTouchEnd)}componentDidUpdate(){this.value=null}componentWillLoad(){this.isWillLoadCalled=!0;const{value:t,max:i,min:s}=this;if(null===t)return;const h=Math.max(s,Math.min(t,i));this.updateByStep(h)}updateByStep(t){const{max:i,min:s,step:h}=this,e=Math.floor((i-s)/h);for(let i=0;i<=e;i++){const a=s+h*i,n=i===e?null:s+h*(i+1);if(t===a)break;if(!n&&t>a&&(t=a),n&&t>a&&t<n){t=t-a<h/2?a:n;break}}const a=(t-s)/(i-s)*100;this.val=t,this.percent=a}render(){const{showValue:t,backgroundColor:i,activeColor:e,blockColor:a,name:n,percent:o,val:l}=this;let r=this.blockSize;const c={backgroundColor:i},u=o>100?100:o,d={width:`${u}%`,backgroundColor:e};r<12&&(r=12),r>28&&(r=28);const f={left:`${u}%`,width:`${r}px`,height:`${r}px`,backgroundColor:a,marginTop:`-${Math.floor(r/2)}px`,marginLeft:`-${Math.floor(r/2)}px`};return s(h,{class:"weui-slider-box"},s("div",{class:"weui-slider"},s("div",{class:"weui-slider__inner",style:c,ref:t=>this.sliderInsRef=t},s("div",{style:d,class:"weui-slider__track"}),s("div",{class:"weui-slider__handler",ref:t=>{t&&(this.handler=t)},style:f}),s("input",{type:"hidden",name:n,value:l}))),t&&s("div",{class:"weui-slider-box__value"},l))}get el(){return e(this)}static get watchers(){return{value:["function"]}}};export{a as taro_slider_core}
\No newline at end of file