@lspriv/wx-calendar
Version:
1 lines • 6.57 kB
JavaScript
"use strict";var e=this&&this.__awaiter||function(e,_,s,l){return new(s=s||Promise)(function(a,t){function i(e){try{n(l.next(e))}catch(e){t(e)}}function r(e){try{n(l.throw(e))}catch(e){t(e)}}function n(e){var t;e.done?a(e.value):((t=e.value)instanceof s?t:new s(function(e){e(t)})).then(i,r)}n((l=l.apply(e,_||[])).next())})};Object.defineProperty(exports,"__esModule",{value:!0}),exports.Dragger=exports.easingOpt=void 0;let t=require("../interface/component"),l=require("./tools"),c=require("./constants"),g=require("./layout"),i=require("./panel"),r=require("../interface/calendar"),n=require("../utils/shared"),{shared:v,timing:p,sequence:m,Easing:w,runOnJS:E}=wx.worklet,_=60,s=8,y=300,a=(e,t=wx.worklet.Easing.out(wx.worklet.Easing.sin))=>({duration:e,easing:t});exports.easingOpt=a;class d extends t.CalendarHandler{constructor(e){super(e),this._style_ids_=new Map,this.initializeShared()}initializeShared(){var e=this._instance_,t=(e.$_drag_state=v(0),e.$_current=v(e.data.current),e.$_drag_schedule_opacity=v(0),v(g.Layout.viewHeight(e._view_)));e.$_drag_panel_height=t;let a=e.data.checked||(0,r.normalDate)(e.data.date);t=Array.from({length:c.CALENDAR_PANELS},(e,t)=>v(this.calcPanelOffset(t,a))),e.$_drag_panel_trans=v(t),e.$_drag_bar_rotate=v(0),t=v(e._view_&c.View.week?_:0);e.$_drag_view_bar_translate_=t}update(){this._instance_.$_current.value=this._instance_.data.current,this.setPanelTrans()}bindAnimations(){this.bindContainerAnimation(),this.bindPanelAnimation(),this.bindBarAnimation(),this.bindViewBarAnimation()}bindContainerAnimation(){return e(this,void 0,void 0,function*(){let e=this._instance_;var t=yield(0,l.applyAnimated)(e,c.SELECTOR.PANEL_CONTAINER,()=>{"worklet";return{height:e.$_drag_panel_height.value+"px"}});this._style_ids_.set(c.SELECTOR.PANEL_CONTAINER,t)})}bindPanelAnimation(){return e(this,void 0,void 0,function*(){let a=this._instance_,{mainHeight:i,minHeight:r,dragMax:n}=g.Layout.layout;for(let e=0;e<c.CALENDAR_PANELS;e++){var _=c.SELECTOR.PANEL+e;let t=a.$_drag_panel_trans.value[e];var s=yield(0,l.applyAnimated)(a,_,()=>{"worklet";var e=Math.min(n,Math.max(r,a.$_drag_panel_height.value));return{transform:`translateY(${-(e>=i?0:t.value*(i-e)/(i-r))}px)`}});this._style_ids_.set(_,s)}})}bindBarAnimation(){return e(this,void 0,void 0,function*(){let e=this._instance_;var[t,a]=yield(0,n.promises)([(0,l.applyAnimated)(e,c.SELECTOR.BAR_1,()=>{"worklet";return{transform:`rotate(${e.$_drag_bar_rotate.value}deg)`}}),(0,l.applyAnimated)(e,c.SELECTOR.BAR_2,()=>{"worklet";return{transform:`rotate(${-e.$_drag_bar_rotate.value}deg)`}})]);this._style_ids_.set(c.SELECTOR.BAR_1,t),this._style_ids_.set(c.SELECTOR.BAR_2,a)})}bindViewBarAnimation(){return e(this,void 0,void 0,function*(){let e=this._instance_;var[t,a,i]=yield(0,n.promises)([(0,l.applyAnimated)(e,c.SELECTOR.VIEW_BAR,()=>{"worklet";return{transform:`translateX(${e.$_drag_view_bar_translate_.value}rpx) translateZ(0px)`}}),(0,l.applyAnimated)(e,c.SELECTOR.VIEW_BAR_1,()=>{"worklet";return{width:Math.max(_-s-e.$_drag_view_bar_translate_.value,s)+"rpx"}}),(0,l.applyAnimated)(e,c.SELECTOR.VIEW_BAR_2,()=>{"worklet";return{width:Math.max(e.$_drag_view_bar_translate_.value-s,s)+"rpx"}})]);this._style_ids_.set(c.SELECTOR.VIEW_BAR,t),this._style_ids_.set(c.SELECTOR.VIEW_BAR_1,a),this._style_ids_.set(c.SELECTOR.VIEW_BAR_2,i)})}bindScheduleAnimation(){return e(this,void 0,void 0,function*(){var e=this._instance_,t=(e.$_drag_schedule_opacity.value=e._view_&c.View.schedule?1:0,this.clearScheduleAnimation(),e.data.current),t=(this._schedule_selector_=""+c.SELECTOR.PANEL+t+" "+c.SELECTOR.SCHEDULES,yield(0,l.applyAnimated)(e,this._schedule_selector_,()=>{"worklet";return{opacity:this._instance_.$_drag_schedule_opacity.value}}));this._style_ids_.set(this._schedule_selector_,t)})}clearScheduleAnimation(){var e=this._style_ids_.get(this._schedule_selector_);e&&((0,l.clearAnimated)(this._instance_,this._schedule_selector_,[e]),this._style_ids_.delete(this._schedule_selector_))}calcPanelOffset(e,t){var a=this._instance_.data,[,t]=i.PanelTool.calcPanelOffset((0,r.offsetDate)(t,7*(0,l.circularDiff)(e,a.current)),a.weekstart);return t}setPanelTrans(){let i=this._instance_;i.$_drag_panel_trans.value.forEach((e,t)=>{var a=this.calcPanelOffset(t,i.data.checked||(0,r.normalDate)(i.data.date));i.$_drag_panel_trans.value[t].value=a})}calculateFlingDistance(e){return{distance:-e*e/-32e3,duration:Math.abs(1e3*(e/16e3))}}calculateTargetHeight({dragMax:t,currHeight:a,velocityY:i,mainHeight:e,minHeight:r,maxHeight:n}){var _=0<i?1:-1,{distance:i,duration:s}=this.calculateFlingDistance(i),i=a+i*_,_=i<=(r+e)/2?r:i<=(e+n)/2?e:n;if(i<_&&i<a||_<i&&a<i){r=Math.min(Math.max(0,i),t);let e=s;return{target:_,animations:[{target:r,duration:e=r!==i?Math.abs(r-a)/Math.abs(i-a)*s:e,easing:[.25,.46,.45,.94]},{target:_,duration:y,easing:[.34,1.56,.64,1]}]}}return{target:_,animations:[{target:_,duration:y,easing:[.34,1.56,.64,1]}]}}dragout(i){let r=this._instance_;var{minHeight:e,maxHeight:t,mainHeight:a,dragMax:n}=g.Layout.layout,_=r.$_drag_panel_height.value;let s=v(0),{target:l,animations:d}=this.calculateTargetHeight({dragMax:n,currHeight:_,velocityY:i,mainHeight:a,minHeight:e,maxHeight:t}),o=(s.value=l===e?c.View.week:l===t?c.View.schedule:c.View.month,s.value&c.View.week),h=s.value&c.View.schedule,u=(0,exports.easingOpt)(y);return new Promise(e=>{var t,a=()=>{"worklet";E(e)(s.value)};i?1===d.length?(t=d[0],r.$_drag_panel_height.value=p(t.target,(0,exports.easingOpt)(t.duration,w.cubicBezier(...t.easing)),a)):r.$_drag_panel_height.value=m(...d.map(e=>p(e.target,(0,exports.easingOpt)(e.duration,w.cubicBezier(...e.easing))))):r.$_drag_panel_height.value=p(l,u),r.$_drag_bar_rotate.value=p(0,u,a),r.$_drag_view_bar_translate_.value=p(o?60:0,u),r.$_drag_schedule_opacity.value=p(h?1:0,u)})}toView(r,n=!1){let _=this._instance_;if(_._view_&r)return Promise.resolve();let{minHeight:s,maxHeight:l,mainHeight:d}=g.Layout.layout,o={duration:y,easing:w.out(w.sin)};return new Promise(e=>{var t=r&c.View.week?s:r&c.View.schedule?l:d,a=r&c.View.week?60:0,i=r&c.View.schedule?1:0;_.$_drag_panel_height.value=n?p(t,o,()=>{"worklet";E(e)()}):t,_.$_drag_view_bar_translate_.value=n?p(a,o):a,_.$_drag_schedule_opacity.value=n?p(i,o):i,n||e()})}clear(){var e,t=this._instance_;for(e of[...this._style_ids_.keys()]){var a=this._style_ids_.get(e);a&&(0,l.clearAnimated)(t,e,[a])}this._style_ids_.clear(),t.$_current=void 0,t.$_drag_state=void 0,t.$_drag_panel_height=void 0,t.$_drag_panel_trans=void 0,t.$_drag_bar_rotate=void 0,t._dragger_=void 0}}exports.Dragger=d;