@lspriv/wx-calendar
Version:
1 lines • 6.02 kB
JavaScript
"use strict";var e=this&&this.__awaiter||function(e,n,s,l){return new(s=s||Promise)(function(a,t){function i(e){try{_(l.next(e))}catch(e){t(e)}}function r(e){try{_(l.throw(e))}catch(e){t(e)}}function _(e){var t;e.done?a(e.value):((t=e.value)instanceof s?t:new s(function(e){e(t)})).then(i,r)}_((l=l.apply(e,n||[])).next())})};Object.defineProperty(exports,"__esModule",{value:!0}),exports.Dragger=void 0;let t=require("../interface/component"),m=require("./tools"),E=require("./constants"),y=require("./layout"),i=require("./panel"),r=require("../interface/calendar"),_=require("../utils/shared"),{shared:n,timing:A,sequence:$,Easing:f,delay:V,runOnJS:R}=wx.worklet,s=60,l=8,L=280,O=220;class a extends t.CalendarHandler{constructor(e){super(e),this._style_ids_=new Map,this.initializeShared()}initializeShared(){var e=this._instance_,t=(e.$_drag_state=n(0),e.$_current=n(e.data.current),e.$_drag_schedule_opacity=n(0),n(y.Layout.viewHeight(e._view_)));e.$_drag_panel_height=t;let a=e.data.checked||(0,r.normalDate)(e.data.date);t=Array.from({length:E.CALENDAR_PANELS},(e,t)=>n(this.calcPanelOffset(t,a))),e.$_drag_panel_trans=n(t),e.$_drag_bar_rotate=n(0),t=n(e._view_&E.View.week?s: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,m.applyAnimated)(e,E.SELECTOR.PANEL_CONTAINER,()=>{"worklet";return{height:e.$_drag_panel_height.value+"px"}});this._style_ids_.set(E.SELECTOR.PANEL_CONTAINER,t)})}bindPanelAnimation(){return e(this,void 0,void 0,function*(){let a=this._instance_,{mainHeight:i,minHeight:r,dragMax:_}=y.Layout.layout;for(let e=0;e<E.CALENDAR_PANELS;e++){var n=E.SELECTOR.PANEL+e;let t=a.$_drag_panel_trans.value[e];var s=yield(0,m.applyAnimated)(a,n,()=>{"worklet";var e=Math.min(_,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(n,s)}})}bindBarAnimation(){return e(this,void 0,void 0,function*(){let e=this._instance_;var[t,a]=yield(0,_.promises)([(0,m.applyAnimated)(e,E.SELECTOR.BAR_1,()=>{"worklet";return{transform:`rotate(${e.$_drag_bar_rotate.value}deg)`}}),(0,m.applyAnimated)(e,E.SELECTOR.BAR_2,()=>{"worklet";return{transform:`rotate(${-e.$_drag_bar_rotate.value}deg)`}})]);this._style_ids_.set(E.SELECTOR.BAR_1,t),this._style_ids_.set(E.SELECTOR.BAR_2,a)})}bindViewBarAnimation(){return e(this,void 0,void 0,function*(){let e=this._instance_;var[t,a,i]=yield(0,_.promises)([(0,m.applyAnimated)(e,E.SELECTOR.VIEW_BAR,()=>{"worklet";return{transform:`translateX(${e.$_drag_view_bar_translate_.value}rpx) translateZ(0px)`}}),(0,m.applyAnimated)(e,E.SELECTOR.VIEW_BAR_1,()=>{"worklet";return{width:Math.max(s-l-e.$_drag_view_bar_translate_.value,l)+"rpx"}}),(0,m.applyAnimated)(e,E.SELECTOR.VIEW_BAR_2,()=>{"worklet";return{width:Math.max(e.$_drag_view_bar_translate_.value-l,l)+"rpx"}})]);this._style_ids_.set(E.SELECTOR.VIEW_BAR,t),this._style_ids_.set(E.SELECTOR.VIEW_BAR_1,a),this._style_ids_.set(E.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_&E.View.schedule?1:0,this.clearScheduleAnimation(),e.data.current),t=(this._schedule_selector_=""+E.SELECTOR.PANEL+t+" "+E.SELECTOR.SCHEDULES,yield(0,m.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,m.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,m.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})}dragout(s){let l=this._instance_,{minHeight:d,maxHeight:o,mainHeight:e}=y.Layout.layout,h=l.$_drag_panel_height.value,u=d,c=n(0);var t;l._view_&E.View.week?(t=h-d,c.value=!(0<s)&&t<u?E.View.week:E.View.month):l._view_&E.View.schedule?(t=h-u,c.value=!(t>-u)||s<0?E.View.month:E.View.schedule):(t=h-e,c.value=s?0<t?0<s?E.View.schedule:E.View.month:s<0?E.View.week:E.View.month:t<-u?E.View.week:t>u?E.View.schedule:E.View.month);let v=c.value&E.View.week,g=c.value&E.View.schedule,w=v?d:g?o:e,p=(0,m.easingOpt)(L);return new Promise(e=>{var t,a,i,r,_,n=()=>{"worklet";R(e)(c.value)};!s||(t=Math.ceil(1e3*Math.abs((w-h)/s)))>=L||h<=d||h>=o?(l.$_drag_panel_height.value=A(w,p),l.$_drag_bar_rotate.value=A(0,p,n)):(_=u-u*t/L,a=Math.floor(Math.asin(_/u)*O),i=(0,m.easingOpt)(a),r=(0,m.easingOpt)(t,f.bezier(0,0,1,1)),_=!v&&(g||0<s)?w+_:w-_,l.$_drag_panel_height.value=$(A(w,r,n),A(_,i),A(w,i)),l.$_drag_bar_rotate.value=V(a+t,A(0,p))),l.$_drag_view_bar_translate_.value=A(v?60:0,p),l.$_drag_schedule_opacity.value=A(g?1:0,p)})}toView(r,_=!1){let n=this._instance_;if(n._view_&r)return Promise.resolve();let{minHeight:s,maxHeight:l,mainHeight:d}=y.Layout.layout,o={duration:L,easing:f.out(f.sin)};return new Promise(e=>{var t=r&E.View.week?s:r&E.View.schedule?l:d,a=r&E.View.week?60:0,i=r&E.View.schedule?1:0;n.$_drag_panel_height.value=_?A(t,o,()=>{"worklet";R(e)()}):t,n.$_drag_view_bar_translate_.value=_?A(a,o):a,n.$_drag_schedule_opacity.value=_?A(i,o):i,_||e()})}clear(){var e,t=this._instance_;for(e of[...this._style_ids_.keys()]){var a=this._style_ids_.get(e);a&&(0,m.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=a;