"use strict";const e=require("./props.js"),t=require("../../libs/mixin/mpMixin.js"),i=require("../../libs/mixin/mixin.js"),n=require("../../../../common/vendor.js"),s=require("../../libs/function/index.js");const a={name:"up-datetime-picker",mixins:[t.mpMixin,i.mixin,e.props],data:()=>({inputValue:"",showByClickInput:!1,columns:[],innerDefaultIndex:[],innerFormatter:(e,t)=>t}),watch:{show(e,t){e&&(this.innerValue=this.correctValue(this.modelValue),this.updateColumnValue(this.innerValue))},modelValue(e){this.init()},propsChange(){this.init()}},computed:{propsChange(){return[this.mode,this.maxDate,this.minDate,this.minHour,this.maxHour,this.minMinute,this.maxMinute,this.filter,this.modelValue]},inputPropsInner(){return{border:this.inputBorder,placeholder:this.placeholder,disabled:this.disabled,disabledColor:this.disabledColor,...this.inputProps}}},mounted(){this.init()},emits:["close","cancel","confirm","change","update:modelValue"],methods:{getInputValue(e){if(""!=e&&e&&null!=e)if("time"==this.mode)this.inputValue=e;else if(this.format)this.inputValue=n.dayjs$1(e).format(this.format);else{let t="";switch(this.mode){case"date":t="YYYY-MM-DD";break;case"year-month":t="YYYY-MM";break;case"datetime":t="YYYY-MM-DD HH:mm";break;case"time":t="HH:mm"}this.inputValue=n.dayjs$1(e).format(t)}else this.inputValue=""},init(){this.innerValue=this.correctValue(this.modelValue),this.updateColumnValue(this.innerValue),this.getInputValue(this.innerValue)},setFormatter(e){this.innerFormatter=e},close(){this.closeOnClickOverlay&&this.$emit("close")},cancel(){this.hasInput&&(this.showByClickInput=!1),this.$emit("cancel")},confirm(){this.$emit("update:modelValue",this.innerValue),this.hasInput&&(this.getInputValue(this.innerValue),this.showByClickInput=!1),this.$emit("confirm",{value:this.innerValue,mode:this.mode})},intercept(e,t){let i=e.match(/\d+/g);return i.length>1?0:t&&4==i[0].length?i[0]:i[0].length>2?0:i[0]},change(e){const{indexs:t,values:i}=e;let s="";if("time"===this.mode)s=`${this.intercept(i[0][t[0]])}:${this.intercept(i[1][t[1]])}`;else{const e=parseInt(this.intercept(i[0][t[0]],"year")),a=parseInt(this.intercept(i[1][t[1]]));let r=parseInt(i[2]?this.intercept(i[2][t[2]]):1),o=0,u=0;const h=n.dayjs$1(`${e}-${a}`).daysInMonth();"year-month"===this.mode&&(r=1),r=Math.min(h,r),"datetime"===this.mode&&(o=parseInt(this.intercept(i[3][t[3]])),u=parseInt(this.intercept(i[4][t[4]]))),s=Number(new Date(e,a-1,r,o,u))}s=this.correctValue(s),this.innerValue=s,this.updateColumnValue(s),this.$emit("change",{value:s,mode:this.mode})},updateColumnValue(e){this.innerValue=e,this.updateColumns(),setTimeout(()=>{this.updateIndexs(e)},0)},updateIndexs(e){let t=[];const i=this.formatter||this.innerFormatter;if("time"===this.mode){const n=e.split(":");t=[i("hour",n[0]),i("minute",n[1])]}else t=[i("year",`${n.dayjs$1(e).year()}`),i("month",s.padZero(n.dayjs$1(e).month()+1))],"date"===this.mode&&t.push(i("day",s.padZero(n.dayjs$1(e).date()))),"datetime"===this.mode&&t.push(i("day",s.padZero(n.dayjs$1(e).date())),i("hour",s.padZero(n.dayjs$1(e).hour())),i("minute",s.padZero(n.dayjs$1(e).minute())));const a=this.columns.map((e,i)=>Math.max(0,e.findIndex(e=>e===t[i])));this.innerDefaultIndex=a},updateColumns(){const e=this.formatter||this.innerFormatter,t=this.getOriginColumns().map(t=>t.values.map(i=>e(t.type,i)));this.columns=t},getOriginColumns(){return this.getRanges().map(({type:e,range:t})=>{let i=function(e,t){let i=-1;const n=Array(e<0?0:e);for(;++i{let n=t[0]+i;return n="year"===e?`${n}`:s.padZero(n),n});return this.filter&&(i=this.filter(e,i),(!i||i&&0==i.length)&&console.log("日期filter结果不能为空")),{type:e,values:i}})},generateArray:(e,t)=>Array.from(new Array(t+1).keys()).slice(e),correctValue(e){const t="time"!==this.mode;if(t&&!n.dayjs$1.unix(e).isValid()?e=this.minDate:t||e||(e=`${s.padZero(this.minHour)}:${s.padZero(this.minMinute)}`),t)return e=n.dayjs$1(e).isBefore(n.dayjs$1(this.minDate))?this.minDate:e,e=n.dayjs$1(e).isAfter(n.dayjs$1(this.maxDate))?this.maxDate:e;{if(-1===String(e).indexOf(":"))return s.error();let[t,i]=e.split(":");return t=s.padZero(s.range(this.minHour,this.maxHour,Number(t))),i=s.padZero(s.range(this.minMinute,this.maxMinute,Number(i))),`${t}:${i}`}},getRanges(){if("time"===this.mode)return[{type:"hour",range:[this.minHour,this.maxHour]},{type:"minute",range:[this.minMinute,this.maxMinute]}];const{maxYear:e,maxDate:t,maxMonth:i,maxHour:n,maxMinute:s}=this.getBoundary("max",this.innerValue),{minYear:a,minDate:r,minMonth:o,minHour:u,minMinute:h}=this.getBoundary("min",this.innerValue),l=[{type:"year",range:[a,e]},{type:"month",range:[o,i]},{type:"day",range:[r,t]},{type:"hour",range:[u,n]},{type:"minute",range:[h,s]}];return"date"===this.mode&&l.splice(3,2),"year-month"===this.mode&&l.splice(2,3),l},getBoundary(e,t){let i=new Date(t);isNaN(i.getTime())&&(i=new Date);const s=new Date(this[`${e}Date`]),a=n.dayjs$1(s).year();let r=1,o=1,u=0,h=0;return"max"===e&&(r=12,o=n.dayjs$1(i).daysInMonth(),u=23,h=59),n.dayjs$1(i).year()===a&&(r=n.dayjs$1(s).month()+1,n.dayjs$1(i).month()+1===r&&(o=n.dayjs$1(s).date(),n.dayjs$1(i).date()===o&&(u=n.dayjs$1(s).hour(),n.dayjs$1(i).hour()===u&&(h=n.dayjs$1(s).minute())))),{[`${e}Year`]:a,[`${e}Month`]:r,[`${e}Date`]:o,[`${e}Hour`]:u,[`${e}Minute`]:h}},onShowByClickInput(){this.disabled||(this.showByClickInput=!this.showByClickInput)}}};if(!Array){(n.resolveComponent("up-input")+n.resolveComponent("u-picker"))()}Math||((()=>"../u-input/u-input.js")+(()=>"../u-picker/u-picker.js"))();const r=n._export_sfc(a,[["render",function(e,t,i,s,a,r){return n.e({a:e.hasInput},e.hasInput?{b:n.o(e=>a.inputValue=e),c:n.p({readonly:!!a.showByClickInput,...r.inputPropsInner,modelValue:a.inputValue}),d:n.r("trigger",{value:a.inputValue}),e:n.o((...e)=>r.onShowByClickInput&&r.onShowByClickInput(...e))}:{},{f:n.sr("picker","2e1531d6-1"),g:n.o(r.close),h:n.o(r.cancel),i:n.o(r.confirm),j:n.o(r.change),k:n.p({show:e.show||e.hasInput&&a.showByClickInput,popupMode:e.popupMode,closeOnClickOverlay:e.closeOnClickOverlay,columns:a.columns,title:e.title,itemHeight:e.itemHeight,showToolbar:e.showToolbar,visibleItemCount:e.visibleItemCount,defaultIndex:a.innerDefaultIndex,cancelText:e.cancelText,confirmText:e.confirmText,cancelColor:e.cancelColor,confirmColor:e.confirmColor,toolbarRightSlot:e.toolbarRightSlot}),l:n.gei(e,"")})}],["__scopeId","data-v-2e1531d6"]]);wx.createComponent(r);