calendar-ts
Version:
generate calendar data
1 lines • 3.11 kB
Source Map (JSON)
{"version":3,"sources":["../src/index.ts"],"sourcesContent":["class Calendar {\r\n firstWeekDay: number\r\n\r\n constructor(firstWeekDay = 0) {\r\n this.firstWeekDay = firstWeekDay\r\n }\r\n\r\n weekStartDate(date: Date): Date {\r\n const starDate: Date = new Date(date.getTime())\r\n while (starDate.getDay() !== this.firstWeekDay) { starDate.setDate(starDate.getDate() - 1) }\r\n\r\n return starDate\r\n }\r\n\r\n /**\r\n * @description: 生成日历数组\r\n * @param {number} year\r\n * @param {number} month\r\n */\r\n monthDates(year: number, month: number) {\r\n if (year < 1970) { console.warn('year must be a number >= 1970') }\r\n\r\n if ((month < 0) || (month > 11)) { console.error('month must be a number (Jan is 0)') }\r\n\r\n let week: Date[] = []\r\n\r\n const weeks: Array<Date[]> = []\r\n\r\n let date = this.weekStartDate(new Date(year, month, 1))\r\n\r\n do {\r\n for (let i = 0; i < 7; i++) {\r\n week.push(date)\r\n date = new Date(date.getTime())\r\n date.setDate(date.getDate() + 1)\r\n }\r\n weeks.push(week)\r\n week = []\r\n } while ((date.getMonth() <= month) && (date.getFullYear() === year))\r\n\r\n return weeks\r\n }\r\n\r\n monthDays(year: number, month: number) {\r\n return this.monthDates(year, month).map(row => row.map(col => col.getMonth() === month ? col.getDate() : 0))\r\n }\r\n\r\n monthText(year: number, month: number) {\r\n const getDayOrBlank = (date: Date) => {\r\n let s = date.getMonth() === month ? date.getDate().toString() : ' '\r\n while (s.length < 2) { s = ` ${s}` }\r\n return s\r\n }\r\n const weeks = this.monthDates(year, month).map(row => row.map(col => getDayOrBlank(col)))\r\n return weeks.join('\\n')\r\n }\r\n}\r\n\r\nexport default Calendar\r\n"],"mappings":";;;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,IAAM,WAAN,MAAe;AAAA,EAGb,YAAY,eAAe,GAAG;AAC5B,SAAK,eAAe;AAAA,EACtB;AAAA,EAEA,cAAc,MAAkB;AAC9B,UAAM,WAAiB,IAAI,KAAK,KAAK,QAAQ,CAAC;AAC9C,WAAO,SAAS,OAAO,MAAM,KAAK,cAAc;AAAE,eAAS,QAAQ,SAAS,QAAQ,IAAI,CAAC;AAAA,IAAE;AAE3F,WAAO;AAAA,EACT;AAAA,EAOA,WAAW,MAAc,OAAe;AACtC,QAAI,OAAO,MAAM;AAAE,cAAQ,KAAK,+BAA+B;AAAA,IAAE;AAEjE,QAAK,QAAQ,KAAO,QAAQ,IAAK;AAAE,cAAQ,MAAM,mCAAmC;AAAA,IAAE;AAEtF,QAAI,OAAe,CAAC;AAEpB,UAAM,QAAuB,CAAC;AAE9B,QAAI,OAAO,KAAK,cAAc,IAAI,KAAK,MAAM,OAAO,CAAC,CAAC;AAEtD,OAAG;AACD,eAAS,IAAI,GAAG,IAAI,GAAG,KAAK;AAC1B,aAAK,KAAK,IAAI;AACd,eAAO,IAAI,KAAK,KAAK,QAAQ,CAAC;AAC9B,aAAK,QAAQ,KAAK,QAAQ,IAAI,CAAC;AAAA,MACjC;AACA,YAAM,KAAK,IAAI;AACf,aAAO,CAAC;AAAA,IACV,SAAU,KAAK,SAAS,KAAK,SAAW,KAAK,YAAY,MAAM;AAE/D,WAAO;AAAA,EACT;AAAA,EAEA,UAAU,MAAc,OAAe;AACrC,WAAO,KAAK,WAAW,MAAM,KAAK,EAAE,IAAI,SAAO,IAAI,IAAI,SAAO,IAAI,SAAS,MAAM,QAAQ,IAAI,QAAQ,IAAI,CAAC,CAAC;AAAA,EAC7G;AAAA,EAEA,UAAU,MAAc,OAAe;AACrC,UAAM,gBAAgB,CAAC,SAAe;AACpC,UAAI,IAAI,KAAK,SAAS,MAAM,QAAQ,KAAK,QAAQ,EAAE,SAAS,IAAI;AAChE,aAAO,EAAE,SAAS,GAAG;AAAE,YAAI,IAAI;AAAA,MAAI;AACnC,aAAO;AAAA,IACT;AACA,UAAM,QAAQ,KAAK,WAAW,MAAM,KAAK,EAAE,IAAI,SAAO,IAAI,IAAI,SAAO,cAAc,GAAG,CAAC,CAAC;AACxF,WAAO,MAAM,KAAK,IAAI;AAAA,EACxB;AACF;AAEA,IAAO,cAAQ;","names":[]}