@lspriv/wx-calendar
Version:
1 lines • 6.94 kB
JavaScript
Object.defineProperty(exports,"__esModule",{value:!0}),exports.WxCalendar=exports.timestamp=exports.fillAnnualSubs=exports.sameAnnualMarks=exports.getDateInfo=exports.monthDiff=exports.getWeekDateIdx=exports.findDateIndex=exports.findInWeeks=exports.weekRange=exports.sortWeeks=exports.inMonthDate=exports.offsetDate=exports.isToday=exports.isSameWeek=exports.isSameDate=exports.isLeapYear=exports.getMonthDays=exports.formDateByStrKey=exports.mergeAnnualMarks=exports.mergeAnnualDateStyle=exports.getScheduleDetail=exports.parseMarkKey=exports.getMarkKey=exports.getAnnualMarkKey=exports.themeStyle=exports.styleStringify=exports.reorderStyle=exports.styleParse=void 0,exports.normalDate=P;let t=require("../basic/layout"),n=require("../basic/constants"),a=require("../basic/tools"),o=require("../utils/shared"),s=require("../basic/service"),r=require("../plugins/mark"),e=e=>"string"==typeof e?e.trim()?(0,o.strToStyle)(e):{}:e,y=(exports.styleParse=e,(e,t)=>"string"==typeof e?(0,exports.styleStringify)((0,exports.styleParse)(e),t):(0,exports.styleStringify)(e,t)),i=(exports.reorderStyle=y,(t,r)=>{if(!t)return"";let e=Object.keys(t).map(e=>`${(0,o.camelToSnake)(e,"-")}:${t[e]};`);return(e=null!=r&&r.length?e.filter(e=>(0,o.includes)(r,e)):e).sort().join("")}),l=(exports.styleStringify=i,e=>(null==e?void 0:e[t.Layout.theme])||(null==e?void 0:e.light)),p=(exports.themeStyle=l,e=>e.month+"_"+e.day),u=(exports.getAnnualMarkKey=p,(e,t)=>(t?`[[${t}]]`:"")+e),h=(exports.getMarkKey=u,/^\[\[(.*?)\]\]/),d=e=>{var t;if(e)return t=(null==(t=e.match(h))?void 0:t[1])||void 0,{id:e.replace(h,""),plugin:t}},m=(exports.parseMarkKey=d,(e,t,r)=>{var a=(0,exports.parseMarkKey)(t.key),r=null!=a&&a.plugin?r.getPlugin(a.plugin):void 0;return{date:Object.assign({},e),text:t.text,style:t.style,plugin:null==a?void 0:a.plugin,info:null==(t=null==r?void 0:r.PLUGIN_TRACK_SCHEDULE)?void 0:t.call(r,e,null==a?void 0:a.id)}}),x=(exports.getScheduleDetail=m,(r,a)=>r&&a?[...new Set([...Object.keys(r),...Object.keys(a)])].reduce((e,t)=>(e[t]=Object.assign(Object.assign({},r[t]),a[t]),e),{}):r||a?Object.assign(Object.assign({},r),a):void 0),g=(exports.mergeAnnualDateStyle=x,(e,t)=>{if(t){var r,a;e=e||new Map;for([r,a]of t.entries()){var s=e.get(r)||{};a.rwtype&&(s.rwtype=a.rwtype),a.sub&&(s.sub=a.sub),a.style&&(s.style=(0,exports.mergeAnnualDateStyle)(s.style,a.style)),e.set(r,s)}}return e}),c=(exports.mergeAnnualMarks=g,e=>{var[e,t,r]=e.split("_");return{year:+e,month:+t,day:+r}}),f=(exports.formDateByStrKey=c,e=>new Date(e.year,e.month,0).getDate()),D=(exports.getMonthDays=f,e=>e%100!=0&&e%4==0||e%400==0),k=(exports.isLeapYear=D,(e,t)=>{var{year:e,month:r,day:a,week:s}=P(e);return{key:e+`_${r}_`+a,year:e,month:r,day:a,week:s,kind:t,today:(0,exports.isToday)({year:e,month:r,day:a}),style:"",mark:null,solar:null,corner:null,schedules:[]}}),S=(e,t=0)=>{let{year:r,month:a,week:s}=e;return Array.from({length:Math.abs(s+7-t)%7},(e,t)=>k({year:r,month:a,day:-t},"last")).reverse()},v=(e,t=0)=>{let{year:r,month:a,day:s,week:n}=e;return Array.from({length:6-Math.abs(n+7-t)%7},(e,t)=>k({year:r,month:a,day:s+t+1},"next"))},_=r=>Array.from({length:(0,exports.getMonthDays)(r)},(e,t)=>k({year:r.year,month:r.month,day:t+1},"current")),M=(t,a)=>Array.from({length:a.length/7},(e,r)=>({key:t.year+`_${t.month}_`+r,days:Array.from({length:7},(e,t)=>a[7*r+t])})),w=(e,t)=>e.year===t.year&&e.month===t.month&&e.day===t.day,b=(exports.isSameDate=w,(e,t,r=0)=>{e=(0,exports.weekRange)(e,r),r=+new Date(t.year,t.month-1,t.day);return r>=+e[0]&&r<=+e[1]}),I=(exports.isSameWeek=b,e=>(0,exports.isSameDate)(e,U.today||e));function P(e,t,r){var a;return e?{year:r=(t=(0,o.isString)(e)?new Date(e):(0,o.isNumber)(e)?void 0!==t&&void 0!==r?new Date(e,t-1,r):new Date(e):(0,o.isDate)(e)?e:new Date(e.year,e.month-1,e.day)).getFullYear(),month:e=t.getMonth()+1,day:a=t.getDate(),week:t.getDay(),today:(0,exports.isToday)({year:r,month:e,day:a})}:null}exports.isToday=I;let A=(e,t)=>P(e.year,e.month,e.day+t),K=(exports.offsetDate=A,(e,t,r)=>P({year:e,month:t,day:Math.min(r,(0,exports.getMonthDays)({year:e,month:t}))})),L=(exports.inMonthDate=K,e=>n.WEEKS.slice(e)+n.WEEKS.slice(0,e)),W=(exports.sortWeeks=L,(e,t=0)=>{var{year:e,month:r,day:a,week:s}=P(e),e=new Date(e,r-1,a-(s+7-t)%7),r=new Date(e.getFullYear(),e.getMonth(),e.getDate()+6);return[e,r]}),E=(exports.weekRange=W,(e,t)=>e.flatMap(e=>e.days).find(t)),j=(exports.findInWeeks=E,(e,t)=>e.flatMap(e=>e.days).findIndex(t)),G=(exports.findDateIndex=j,(r,t)=>{let a=-1,s=-1;for(let e=0;e<t.length;e++){var n=t[e].days.findIndex(({month:e,day:t})=>e===r.month&&t===r.day);if(0<=n){a=e,s=n;break}}return{wdx:a,ddx:s}}),N=(exports.getWeekDateIdx=G,(e,t=0)=>{var{year:e,month:r,day:a}=e,r=new Date(e,r-1,a),a=new Date(e,0,4);return a.setDate(a.getDate()-(a.getDay()+7-t)%7),r<a?N({year:e,month:1,day:0},t):(e=Math.floor((+r-+a)/864e5)+1,Math.ceil(e/7))}),Y=(e,t)=>12*(t.year-e.year)+t.month-e.month,T=(exports.monthDiff=Y,(e,t=0)=>{var r=(0,exports.getMonthDays)(e),{year:e,month:a}=e,s=new Date(e,a-1,1).getDay(),s=Math.abs(s+7-t)%7;return{key:`y_${e}_m_`+a,year:e,month:a,weeks:Math.ceil((r+s)/7),days:r+s,start:s}}),O=(e,t,r=!1)=>{var a=new Date(U.today.year,U.today.month-1,U.today.day),s=new Date(e.year,e.month-1,e.day),s=Math.floor((s.getTime()-a.getTime())/864e5),a=(0,exports.isToday)(e)?"周"+n.WEEKS[e.week]:Math.abs(s)+"天"+(s<0?"前":"后");return r?`第${N(e,t)}周 `+a:a},$=(exports.getDateInfo=O,(e,t)=>{if(e.size||null!=t&&t.size){if(e.size!==(null==t?void 0:t.size))return!1;var r,a;for([r,a]of e.entries()){var s=t.get(r);if(!(0,o.compareSame)(a,s))return!1}}return!0}),q=(exports.sameAnnualMarks=$,(r,a,e)=>null==e?void 0:e.map((e,t)=>(e.key=e.key||`AS_${r}_${a}_`+t,e))),C=(exports.fillAnnualSubs=q,e=>+new Date(e.year,e.month-1,e.day,0,0,0,0)),z=(exports.timestamp=C,e=>"object"==typeof e&&null!==e&&"construct"in e);class U{constructor(e,t=[]){t=[...t,...U._PLUGINS_,r.MarkPlugin].map(e=>z(e)?e:{construct:e});this.service=new s.PluginService(e,t)}createMonth(e,t=0){var{year:e,month:r}=P({year:e.year,month:e.month,day:1}),a=_({year:e,month:r}),s=a.length,n=S(a[0],t),t=v(a[s-1],t),n=[...n,...a,...t],a={key:e+"_"+r,year:e,month:r,weeks:M({year:e,month:r},n),count:s};return this.service.catchMonth(a),a}createYear(r,a=0){var e=Array.from({length:12},(e,t)=>T({year:r,month:t+1},a)),e={key:"Y_"+r,year:r,subinfo:[],months:e,marks:new Map};return this.service.catchYear(e),e}static use(t,e){var r;return(0,s.isPluginConstructor)(t)?(0<=(r=this._PLUGINS_.findIndex(e=>e.construct.KEY===t.KEY))&&this._PLUGINS_.splice(r,1),this._PLUGINS_.push({construct:t,options:e})):(0,a.warn)("Plugin missing static prop [KEY] !"),this}static clearPlugin(t){(0,o.isString)(t)?this._PLUGINS_=this._PLUGINS_.filter(e=>e.construct.KEY===t):(0,o.isFunction)(t)?this._PLUGINS_=this._PLUGINS_.filter(e=>!t(e)):this._PLUGINS_=[]}}(exports.WxCalendar=U).today=P(new Date),U._PLUGINS_=[];
;