{"version":3,"file":"js/64443-71a994847edbdbfd8b0c.js","mappings":"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","sources":["webpack://assistant/./frontend/packs/models/PossibleDate.ts","webpack://assistant/./frontend/packs/utils/CalendarUtil.ts"],"sourcesContent":["import { DateTime } from \"luxon\"\nimport RoomMember from \"./RoomMember\"\nimport axios from \"axios\"\nimport { funcName, Logger, onlyUnique } from \"packs/common\"\nimport Util from \"packs/utils/Util\"\nimport AvailableScheduleTag from \"./AvailableScheduleTag\"\nimport Event from \"./Event\"\nimport NotificationControl from \"packs/utils/NotificationControl\"\nimport CalendarUtil from \"packs/utils/CalendarUtil\"\n\ninterface ConflictInfo {\n did_check: boolean\n events: Event[]\n is_conflict: boolean\n}\n\nexport default class PossibleDate {\n constructor(\n public format: string,\n public jp_format: string,\n public date_format: string,\n public start_time: number,\n public type: string,\n public short_format: string, // 06121200\n public start_hour: number,\n public start_min: number,\n public duration: number,\n public selected: boolean,\n public wday: number,\n public ok_attendees: any[],\n public ng_attendees: any[],\n public unknown_attendees: any[],\n public ok_groups: string[],\n public is_conflict: boolean,\n public priority: number,\n public ok_room_member_ids: string[],\n public conflict_info: ConflictInfo,\n public created_at: number,\n public updated_at: number,\n public id: string,\n public tz_format: string, // jp_formatと同様\n public tz_date_format: string, // 0629 date_formatと同様\n public tz_from_utc: string,\n public booked_num: number,\n public max_bookings_num: number,\n public is_group_event: boolean,\n public date: string\n ) {}\n\n // static fetchFromJson(datesJson: any): [PossibleDate[], string[]] {\n static fetchFromJson(datesJson: any): { [key: string]: any } {\n let possibleDates = []\n let jp_formats = []\n\n // Logger(`arrOfGroups: ${datesJson}`)\n for (const date of datesJson) {\n const _date: PossibleDate = date\n const fmt = _date.jp_format\n possibleDates.push(_date)\n jp_formats.push(fmt)\n }\n // return [possibleDates, jp_formats]\n return { possible_dates: possibleDates, jp_formats: jp_formats }\n }\n\n static toOptionalDates(pds: PossibleDate[]): Event[] {\n if (Util.isBlank(pds)) return []\n\n let ops = []\n for (let pd of pds) {\n const op = PossibleDate.toEvent(pd)\n ops.push(op)\n }\n return ops\n }\n\n static toEvent(pd: PossibleDate): Event {\n const time = DateTime.fromSeconds(pd.start_time)\n let ev = Event.createOptional(`optional_add`, time, pd.duration)\n return ev\n }\n\n static createFromStartTime(startTime: number, duration: number) {\n let st = DateTime.fromSeconds(startTime)\n let wday = st.weekday\n if (wday >= 7) wday -= 7\n\n let pd = new PossibleDate(\n st.toFormat(\"yyyy-MM-dd-HH:mm\"),\n CalendarUtil.toJpFormat(startTime, duration),\n st.toFormat(\"MMdd\"),\n startTime,\n `optional_add`,\n st.toFormat(\"MMddHHmm\"),\n st.hour,\n st.minute,\n duration,\n true,\n wday,\n null,\n null,\n null,\n null,\n false,\n 0,\n null,\n null,\n null,\n null,\n null,\n null,\n null,\n null,\n null,\n null,\n false,\n st.toFormat(\"MMdd\")\n )\n return pd\n }\n\n /**\n * サーバーに送信するOptionalDateの追加日時をフォーマット化します。\n * @param addDates\n * @return {string: hash[]} key=dateString, op = { duration: pd.duration, start_time: pd.start_time }\n */\n static toFormat(addDates): any {\n let ops = {}\n for (let _op of addDates) {\n let op: any = _op\n let date: string = DateTime.fromSeconds(op.start_time).toFormat(`MMdd`)\n let arr = ops[date] || []\n arr.push(op)\n ops[date] = arr\n }\n return ops\n }\n\n /**\n * 作成済みのAstagから表示できる候補を取得してきます。\n * @param astag [AvailableScheduleTag]\n */\n static getPossibleDates(astag: AvailableScheduleTag, duration: number): Promise {\n if (!duration) duration = 60\n const params = { id: astag.id, duration: duration }\n Logger(`PossibleDate.${funcName()} post PD possibleDates from Remote::::`)\n\n return axios\n .post(`${Util.prefixUrl}/available_schedule_tags/possible_dates`, params)\n .then(result => {\n const possibles = result.data.possible_dates\n const selected_possibles = result.data.selected_possible_dates\n const total_num = result.data.total_pds_num\n\n let pdm = {}\n if (!possibles) return pdm\n Logger(`PossibleDate.${funcName()} ***********get this.pd: ${Util.output(possibles)}`)\n\n let format = PossibleDate.fetchFromJson(possibles)\n pdm = format.possible_dates\n let selected_pdm = PossibleDate.fetchFromJson(selected_possibles || [])\n\n // jp_formatsのみを返します。\n return { pdm, selected_pdm: selected_pdm.possible_dates, total_num }\n })\n .catch(err => {\n NotificationControl.showErrorMessage(err)\n return null\n })\n }\n\n static isSame(pd1, pd2) {\n return pd1.start_time == pd2.start_time && pd1.duration == pd2.duration\n }\n\n static checkPdIndex(pds: PossibleDate[], pd: PossibleDate): number {\n let num = -1\n if (!pds || pds.length == 0) return num\n if (!pd) return num\n\n num = pds.findIndex(_pd => PossibleDate.isSame(pd, _pd))\n\n Logger(`PossibleDate.${funcName()} num: ${num}`)\n return num\n }\n\n static checkPdIndexType(pds: PossibleDate[], num: number) {\n if (!pds) return\n if (num == 0) {\n return \"first\"\n } else if (num == pds.length - 1) {\n return \"last\"\n } else {\n return ``\n }\n }\n\n static changeForPreview(astag: AvailableScheduleTag) {\n if (!astag) return\n let ops = { ...astag.optional_schedules }\n if (Util.isPresent(ops)) {\n Object.entries(ops).forEach(([date, events]) => {\n let _events: PossibleDate[] = events as any\n let evs = []\n for (let ev of _events) {\n // ev.systemUpdatedAt = Util.getSec() + ev.start_time\n ev.selected = false\n ev.type = `optional`\n evs.push(ev)\n }\n ops[date] = evs\n // this.rcm.astag.optional[date] = evs\n })\n }\n return ops\n }\n\n /**\n * pdsから月ごとの可能な日付を取得します。\n * @param pds\n * @param tzDic\n * @returns\n */\n static getAvailableCalendarsFromPds(pds: PossibleDate[], tzDic: any = null): any[] {\n Logger(`PossibleDate.${funcName()} tzDic:${Util.output(tzDic)}`)\n\n let possibleDatekeys = [] // [\"0614\", \"0615\", \"0616\"]\n let thisMonth = DateTime.local().month\n let monthPlus1 = thisMonth + 1 > 12 ? thisMonth + 1 - 12 : thisMonth + 1\n let monthPlus2 = thisMonth + 2 > 12 ? thisMonth + 2 - 12 : thisMonth + 2\n let monthPlus3 = thisMonth + 3 > 12 ? thisMonth + 3 - 12 : thisMonth + 3\n let monthPlus4 = thisMonth + 4 > 12 ? thisMonth + 4 - 12 : thisMonth + 4\n let thisMonthDates = []\n let nextMonthDates = []\n let monthDatesPlus2 = []\n let monthDatesPlus3 = []\n let monthDatesPlus4 = []\n let cannotFindTZformat = false\n let now = DateTime.local().toSeconds()\n for (let _pd of pds) {\n let _month\n let _day\n if (Util.isPresent(tzDic) && Util.isPresent(_pd.tz_date_format)) {\n _month = Number(_pd.tz_date_format.slice(0, 2))\n _day = Number(_pd.tz_date_format.slice(2, 4))\n } else {\n _month = Number(_pd.short_format.slice(0, 2))\n _day = Number(_pd.short_format.slice(2, 4))\n cannotFindTZformat = true\n }\n if (_pd.start_time) {\n let dt = DateTime.fromSeconds(_pd.start_time)\n\n if (dt && !possibleDatekeys.includes(`${dt.toFormat(`yyyyMMdd`)}`)) {\n possibleDatekeys.push(`${dt.toFormat(`yyyyMMdd`)}`)\n }\n }\n\n // Logger(`pd: ${_pd.short_format}`)\n if (thisMonth == _month) {\n //今月\n thisMonthDates.push(_day)\n } else if (monthPlus1 == _month) {\n nextMonthDates.push(_day)\n } else if (monthPlus2 == _month) {\n monthDatesPlus2.push(_day)\n } else if (monthPlus3 == _month) {\n monthDatesPlus3.push(_day)\n } else if (monthPlus4 == _month) {\n monthDatesPlus4.push(_day)\n }\n }\n\n let monthlyPossibleDates = [\n thisMonthDates.filter(onlyUnique),\n nextMonthDates.filter(onlyUnique),\n monthDatesPlus2.filter(onlyUnique),\n monthDatesPlus3.filter(onlyUnique),\n monthDatesPlus4.filter(onlyUnique),\n ]\n return [monthlyPossibleDates, cannotFindTZformat, possibleDatekeys]\n }\n\n /**\n *\n * @param offset [number] -8, +3.5\n * @returns [number] -8, +3:30\n */\n static toTimezoneUTCFormat(offset: number): string {\n if (offset % 1 == 0) {\n // 整数\n return `${offset >= 0 ? `+` : ``}${offset}`\n }\n let inte = this.integerPart(offset)\n let dec = this.decimalPart(offset)\n let str = `${offset >= 0 ? `+` : `-`}${inte}:${dec * 60}`\n Logger(`PossibleDate.${funcName()} ret:${str}`)\n return str\n }\n\n static integerPart(num) {\n return num >= 0 ? Math.floor(num) : Math.ceil(num)\n }\n\n static decimalPart(num): number {\n let decPart = num - (num >= 0 ? Math.floor(num) : Math.ceil(num))\n // return decPart.toFixed(decDigits) as number;\n return decPart\n }\n\n static setTimeZoneWithFormat(pd: PossibleDate, tzDic: any): PossibleDate {\n let st = pd.start_time\n let offsetStr = PossibleDate.toTimezoneUTCFormat(tzDic.diff)\n let tz_st = DateTime.fromSeconds(st).setZone(`UTC${offsetStr}`)\n let tz_et = tz_st.plus({ minute: pd.duration })\n pd.tz_date_format = tz_st.toFormat(\"MMdd\")\n pd.tz_from_utc = offsetStr\n let stFormat = tz_st.toFormat(\"MM/dd/yyyy, HH:mm\")\n let etFormat = tz_et.toFormat(\"HH:mm\")\n pd.tz_format = `${stFormat}~${etFormat}`\n return pd\n }\n\n /**\n *\n * @param pd [PossibleDate]\n * @param dateId [string] \"0614\"\n * @param tzDic [TimezoneDic] タイムゾーン\n */\n static isSameDateId(pd: PossibleDate, dateId: string, tzDic: any) {\n if (tzDic && pd.tz_date_format) {\n return pd.tz_date_format == dateId\n } else {\n return pd.date_format == dateId\n }\n }\n\n static createDefaultConflictInfo(evs = []): ConflictInfo {\n const ci: ConflictInfo = {\n did_check: true,\n events: evs, // Event型の配列を適切に定義する必要があります\n is_conflict: true,\n }\n return ci\n }\n}\n","import axios from \"axios\"\nimport { DateTime, Interval } from \"luxon\"\nimport { Logger } from \"packs/common\"\n// import qs from \"qs\"\n// import isMobile from \"ismobilejs\"\nimport Appointment from \"packs/models/Appointment\"\nimport Util from \"./Util\"\nimport RoomMember from \"packs/models/RoomMember\"\nimport DateTag from \"packs/models/DateTag\"\nimport RoomSetting from \"packs/models/RoomSetting\"\nimport SelectUtil from \"./SelectUtil\"\nimport Notice from \"packs/models/Notice\"\nimport NotificationControl from \"./NotificationControl\"\n// declare var ics: any\n// const ics = require(\"ics\")\n// const { writeFileSync } = require(\"fs\")\n\n// 便利系を記載.\nexport default class CalendarUtil {\n static createEvent(appo: Appointment, publicId: string, attendees: RoomMember[]) {\n // let start = DateTime.fromSeconds(st)\n // let stArr = [start.year, start.month, start.day, start.hour, start.minute]\n // Logger(`create event: ${stArr}`)\n const str = this.toIcsFormat(appo, publicId, attendees)\n let blob = new Blob([str], { type: \"text/calendar\" })\n let link = document.createElement(\"a\")\n link.href = window.URL.createObjectURL(blob)\n link.download = `waaq_event_${appo.start_time}.ics`\n link.click()\n }\n\n static toIcsFormat(appo: Appointment, publicId: string, attendees: RoomMember[]): string {\n const now = DateTime.local().toUTC()\n const startTime = DateTime.fromSeconds(appo.start_time).toUTC()\n // let attStr = ``\n let attArray = []\n for (let att of attendees) {\n let attStr = ``\n attStr += `${att.name}`\n if (att.short_name) attStr += `(${att.short_name})`\n attArray.push(attStr)\n }\n // const endTime = startTime.plus({ minutes: appo.duration })\n return `BEGIN:VCALENDAR\nVERSION:2.0\nCALSCALE:GREGORIAN\nPRODID:waaqlink/waaq.jp\nMETHOD:PUBLISH\nX-PUBLISHED-TTL:PT${appo.duration}M\nBEGIN:VEVENT\nUID:${this.calendarFormat(now)}Z\nSUMMARY:${appo.name}\nDTSTAMP:${this.calendarFormat(now)}Z\nDTSTART:${this.calendarFormat(startTime)}Z\nDESCRIPTION:出席予定者: ${attArray.join(`,`)}\\\\n \\\\n${this.getLocationInfoForDescription(appo, true).replace(\n /\\n/g,\n `\\\\n`\n )}\\\\n調整ページID: ${publicId}\nX-MICROSOFT-CDO-BUSYSTATUS:FREE\nDURATION:PT${appo.duration}M\nLOCATION:${this.getLocationName(appo)}\nORGANIZER:mailto:\nEND:VEVENT\nEND:VCALENDAR`\n }\n\n static calendarFormat(time: DateTime) {\n const date = time.toFormat(`yyyyMMdd`)\n const hourmin = time.toFormat(`HHmm`)\n return `${date}T${hourmin}00`\n }\n\n static calendarMSFormat(time: DateTime) {\n const date = time.toFormat(`yyyy-MM-dd`)\n const hourmin = time.toFormat(`HH:mm`)\n return `${date}T${hourmin}:00`\n }\n\n static getLocationName(appo: Appointment): string {\n if (appo.is_online_meeting) {\n let onlineDic = appo.online_meeting\n if (onlineDic) {\n return onlineDic.online_meeting_url\n }\n }\n return appo.location_name\n }\n\n static getLocationInfoForDescription(appo: Appointment, useLineBreak = true): string {\n let text = ``\n if (appo.is_online_meeting) {\n text = `オンライン会議を予定しています。`\n text += useLineBreak ? `\\n` : `
`\n\n let onlineDic = appo.online_meeting\n if (onlineDic) {\n text += `出席者用URL:${useLineBreak ? `\\n` : `
`}${onlineDic.online_meeting_url}${\n useLineBreak ? `\\n\\n` : `
`\n }`\n if (onlineDic.online_meeting_id && onlineDic.online_meeting_password) {\n text += `${useLineBreak ? `-------\\n` : `
`}ID: ${onlineDic.online_meeting_id}${\n useLineBreak ? `\\n` : ` `\n }ミーティングパスコード: ${onlineDic.online_meeting_password}${useLineBreak ? `\\n-------` : `
`}`\n }\n }\n }\n if (Util.isBlank(text) && Util.isPresent(appo.location_name)) text += appo.location_name\n text += useLineBreak ? `\\n\\n` : `

`\n\n if (Util.isPresent(appo.memo)) text += appo.memo\n text += useLineBreak ? `\\n\\n` : `

`\n\n return text\n }\n\n static createGoogleEvent(appo: Appointment, publicId: string): string {\n const startTime = DateTime.fromSeconds(appo.start_time)\n const endTime = startTime.plus({ minutes: appo.duration })\n // Logger(`Googleカレンダー startTime: ${CalendarUtil.calendarFormat(startTime)}`)\n let params = {\n text: `${appo.name}`,\n dates: `${this.calendarFormat(startTime)}/${this.calendarFormat(endTime)}`,\n details: `${this.getLocationInfoForDescription(appo)}\\n--------------------------\\n調整ページID: [${publicId}]`,\n }\n if (appo.location_name) params[\"location\"] = this.getLocationName(appo)\n const url = `http://www.google.com/calendar/render?action=TEMPLATE&${Util.serialize(params)}`\n return url\n }\n\n /**\n *\n * @param appo\n * @param publicId\n * @param type \"office\" or \"outlook\"\n */\n static createMSEvent(appo: Appointment, publicId: string, type: string): string {\n const startTime = DateTime.fromSeconds(appo.start_time)\n const endTime = startTime.plus({ minutes: appo.duration })\n const urlType = type == \"office\" ? `outlook.office` : `outlook.live`\n Logger(`カレンダー登録appo : ${Util.output(appo)}, ${startTime} ${this.calendarMSFormat(startTime)}`)\n let bodyText = this.getLocationInfoForDescription(appo, false)\n bodyText = Util.truncate(bodyText, 250).replace(/\\n/g, `
`)\n\n let params = {\n subject: `${appo.name}`,\n startdt: `${this.calendarMSFormat(startTime)}`,\n enddt: `${this.calendarMSFormat(endTime)}`,\n location: `${appo.location_name ? `${this.getLocationName(appo)}` : ``}`,\n body: `${bodyText}
--------------------------
調整ページID: [${publicId}]`,\n }\n const url = `https://${urlType}.com/owa/?path=/calendar/action/compose&rru=addevent&${Util.serialize(params)}`\n Logger(`MS Calendar URL: ${url}`)\n return url\n }\n\n static toJpFormatDate(start_time: number) {\n if (!start_time) return\n let st = DateTime.fromSeconds(start_time)\n let wday = DateTag.weekNames()\n let weekday = st.weekday\n if (weekday >= 7) weekday -= 7\n\n return st.toFormat(`MM月dd日(${wday[weekday]})`)\n }\n\n static toHourMin(start_time: number) {\n if (!start_time) return\n let st = DateTime.fromSeconds(start_time)\n\n return st.toFormat(`HH:mm`)\n }\n\n static toCalId(dt: DateTime): string {\n return dt.toFormat(`yyyyMM`)\n }\n\n // str [string] \"202352\"\n static toTimeFromWeekSpan(str: string): DateTime {\n let yearNumber = parseInt(str.slice(0, 4))\n let weekNumber = parseInt(str.slice(4, 6))\n const dt = DateTime.fromObject({\n weekYear: yearNumber,\n weekNumber: weekNumber,\n weekday: 7,\n })\n return dt\n }\n\n static toWeekSpan(dt: DateTime): string {\n // 日曜日を週の開始日とする\n const startOfWeek = dt.minus({ days: dt.weekday % 7 })\n return startOfWeek.toFormat(`kkkkWW`)\n }\n\n static toJpFormat(start_time: number, duration: number, includeYear = false) {\n if (!start_time) return\n if (!duration) duration = 0\n let st = DateTime.fromSeconds(start_time)\n let et = DateTime.fromSeconds(start_time + duration * 60)\n let wday = DateTag.weekNames()\n let weekday = st.weekday\n if (weekday >= 7) weekday -= 7\n let jpFormat = ``\n jpFormat += includeYear ? st.toFormat(`yyyy年`) : ``\n jpFormat += st.toFormat(`MM月dd日(${wday[weekday]})HH:mm`)\n jpFormat += duration != 0 ? et.toFormat(`~HH:mm`) : ``\n return jpFormat\n }\n\n static readonly defaultMeetingTimeDic = {\n type: \"1時間ごと\",\n description: `00スタートの日程を表示します。`,\n time: `hourly`,\n number: 60,\n }\n\n /**\n * 提案する候補のpossible_datesの表示設定.\n */\n static readonly selectDisplayMeetingTimeArr = [\n {\n type: \"15分ごと\",\n description: `00/15/30/45スタートの日程を表示します。`,\n time: `every_15_min`,\n number: 15,\n },\n { type: \"30分ごと\", description: `00/30スタートの日程を表示します。`, time: `every_30_min`, number: 30 },\n { type: \"1時間ごと\", description: `00スタートの日程を表示します。`, time: `hourly`, number: 60 },\n {\n type: \"奇数時間ごと\",\n description: `00分で奇数時間にスタートの日程を表示します。`,\n time: `odd_hourly`,\n number: -1,\n },\n {\n type: \"偶数時間ごと\",\n description: `00分で偶数時間にスタートの日程を表示します。`,\n time: `even_hourly`,\n number: -1,\n },\n {\n type: \"カスタム\",\n description: `開始時間を曜日ごとに設定します。`,\n time: `custom`,\n number: -1,\n },\n ]\n\n static readonly selectDisplayPossibleDatesNum = [0, 1, 2, 3, 4, 5]\n\n static readonly selectAddEventTypes = [\n { type: \"same_event\", name: \"オーナーと同一のイベントに招待して作成\" },\n { type: \"same_event_but_not_display_form\", name: \"オーナーと同一のイベントに招待するが、同席者はフォームで追加しない\" },\n { type: \"other_event\", name: \"オーナーと別イベントとして作成\" },\n { type: \"other_event_but_not_display_form\", name: \"オーナーと別イベントとして作成し、同席者はフォームで追加しない\" },\n ]\n\n static getHolidayNum(startT: DateTime, endT: DateTime) {\n let interval = Interval.fromDateTimes(startT, endT)\n // 日程候補算出日は当日も含むため +1する\n let days = Math.ceil(interval.length(`days`)) + 1\n\n let nums = Array(days)\n .fill(0)\n .map((_, i) => i)\n let startW = startT.weekday\n Logger(`getHolidayNum: days: ${days}, startW: ${startW}, nums: ${Util.output(nums)}`)\n let weekendCounter = 0\n for (let d of nums) {\n let num = startW + d + weekendCounter\n if ([6].includes(num % 7)) {\n weekendCounter += 2\n } else if ([0].includes(num % 7)) {\n weekendCounter += 1\n }\n }\n Logger(`getHolidayNum: weekendCounter: ${weekendCounter}`)\n\n return weekendCounter\n }\n\n static getSpanDescriptionText(rs: RoomSetting): Promise {\n let periodText = ``\n if (rs.available_period_type == `absolute`) {\n let startt = DateTime.fromSeconds(rs.available_period_start_at).toFormat(`MM月dd日`)\n let endt = DateTime.fromSeconds(rs.available_period_end_at).toFormat(`MM月dd日`)\n periodText += `${startt} ~ ${endt}`\n return Promise.resolve([periodText, []])\n }\n\n let skipType = rs.available_period_skip_type // none, weekend, weekend_and_holiday\n let skipTypeName = skipType != `none` ? SelectUtil.availablePeriodSkipTypes.find(t => t.type == skipType).name + ` ` : ``\n let startM = rs.available_period_start_min\n let startH = startM % 60 == 0 ? startM / 60 : null\n let startDay = startM % (60 * 24) == 0 ? startM / (60 * 24) : null\n let endM = rs.available_period_end_min\n let endDay = endM / (60 * 24)\n let availableMonths = []\n let availableWeeks = []\n let useBusinessDay = rs.use_business_day\n\n let params = { room_setting: rs }\n return axios\n .post(`${Util.prefixUrl}/rooms/available_period_preview`, params)\n .then(res => {\n Logger(`/rooms/available_period_preview: data: ${Util.output(res.data)}`)\n if (res.data.start_time) {\n let startTimeNum = res.data.start_time\n let startTime = DateTime.fromSeconds(startTimeNum)\n let startFormat = startTime.toFormat(`MM月dd日`)\n let endFormat = DateTime.fromSeconds(res.data.end_time).toFormat(`MM月dd日`)\n\n periodText += `${skipTypeName}${startDay || startH || startM || 0}${\n startDay ? (useBusinessDay ? `営業日` : `日`) : startH ? `時間` : `分`\n }後 ~ ${endDay}${useBusinessDay ? `営業日` : `日`}後(${startFormat} ~ ${endFormat})`\n availableMonths = res.data.available_months\n availableWeeks = res.data.available_weeks\n }\n\n return [periodText, availableMonths, availableWeeks]\n })\n .catch(err => {\n Logger(`err: ${err.message} ${Util.output(err.response)}`)\n // NotificationControl.showErrorMessage(err)\n return [``, null, null]\n })\n }\n\n static getHolidays(): Promise {\n return axios.get(`${Util.prefixUrl}/calendars/holidays`).then(res => {\n if (Util.isPresent(res.data)) {\n return res.data.holidays\n }\n return null\n })\n }\n}\n"],"names":["PossibleDate","format","jp_format","date_format","start_time","type","short_format","start_hour","start_min","duration","selected","wday","ok_attendees","ng_attendees","unknown_attendees","ok_groups","is_conflict","priority","ok_room_member_ids","conflict_info","created_at","updated_at","id","tz_format","tz_date_format","tz_from_utc","booked_num","max_bookings_num","is_group_event","date","fetchFromJson","datesJson","possibleDates","jp_formats","_i","datesJson_1","length","_date","fmt","push","possible_dates","toOptionalDates","pds","Util","isBlank","ops","pds_1","pd","op","toEvent","time","DateTime","fromSeconds","Event","createOptional","createFromStartTime","startTime","st","weekday","toFormat","CalendarUtil","toJpFormat","hour","minute","addDates","addDates_1","arr","getPossibleDates","astag","params","Logger","concat","funcName","axios","post","prefixUrl","then","result","possibles","data","selected_possibles","selected_possible_dates","total_num","total_pds_num","pdm","output","selected_pdm","err","NotificationControl","showErrorMessage","isSame","pd1","pd2","checkPdIndex","num","findIndex","_pd","checkPdIndexType","changeForPreview","__assign","optional_schedules","isPresent","Object","entries","forEach","_a","evs","_events_1","ev","getAvailableCalendarsFromPds","tzDic","possibleDatekeys","thisMonth","local","month","monthPlus1","monthPlus2","monthPlus3","monthPlus4","thisMonthDates","nextMonthDates","monthDatesPlus2","monthDatesPlus3","monthDatesPlus4","cannotFindTZformat","toSeconds","pds_2","_month","_day","Number","slice","dt","includes","filter","onlyUnique","toTimezoneUTCFormat","offset","inte","this","integerPart","dec","decimalPart","str","Math","floor","ceil","setTimeZoneWithFormat","offsetStr","diff","tz_st","setZone","tz_et","plus","stFormat","etFormat","isSameDateId","dateId","createDefaultConflictInfo","did_check","events","createEvent","appo","publicId","attendees","toIcsFormat","blob","Blob","link","document","createElement","href","window","URL","createObjectURL","download","click","now","toUTC","attArray","attendees_1","att","attStr","name","short_name","calendarFormat","join","getLocationInfoForDescription","replace","getLocationName","hourmin","calendarMSFormat","is_online_meeting","onlineDic","online_meeting","online_meeting_url","location_name","useLineBreak","text","online_meeting_id","online_meeting_password","memo","createGoogleEvent","endTime","minutes","dates","details","serialize","createMSEvent","urlType","bodyText","truncate","subject","startdt","enddt","location","body","url","toJpFormatDate","DateTag","weekNames","toHourMin","toCalId","toTimeFromWeekSpan","yearNumber","parseInt","weekNumber","fromObject","weekYear","toWeekSpan","minus","days","includeYear","et","jpFormat","getHolidayNum","startT","endT","interval","Interval","fromDateTimes","nums","Array","fill","map","_","i","startW","weekendCounter","nums_1","getSpanDescriptionText","rs","periodText","available_period_type","startt","available_period_start_at","endt","available_period_end_at","Promise","resolve","skipType","available_period_skip_type","skipTypeName","SelectUtil","availablePeriodSkipTypes","find","t","startM","available_period_start_min","startH","startDay","endDay","available_period_end_min","availableMonths","availableWeeks","useBusinessDay","use_business_day","room_setting","res","startTimeNum","startFormat","endFormat","end_time","available_months","available_weeks","message","response","getHolidays","get","holidays","defaultMeetingTimeDic","description","number","selectDisplayMeetingTimeArr","selectDisplayPossibleDatesNum","selectAddEventTypes"],"sourceRoot":""}