// Metro module 1895 (f1896). import Record from "../../lib/Record"; import { DayOfWeek } from "../../_bundle/Module1892"; import { $callWithNewTarget } from "../../_hermes/prelude"; let c1590_2 = Object.freeze({ 0: DayOfWeek.SUNDAY, 1: DayOfWeek.MONDAY, 2: DayOfWeek.TUESDAY, 3: DayOfWeek.WEDNESDAY, 4: DayOfWeek.THURSDAY, 5: DayOfWeek.FRIDAY, 6: DayOfWeek.SATURDAY }); const r50 = Object; const r52 = {}; r52[DayOfWeek.DAY_OF_WEEK_UNSPECIFIED] = 0; r52[DayOfWeek.MONDAY] = 1; r52[DayOfWeek.TUESDAY] = 2; r52[DayOfWeek.WEDNESDAY] = 3; r52[DayOfWeek.THURSDAY] = 4; r52[DayOfWeek.FRIDAY] = 5; r52[DayOfWeek.SATURDAY] = 6; r52[DayOfWeek.SUNDAY] = 0; let c1590_3 = r50.freeze(r52); class ScheduleRuleRecord extends Record { constructor(a0) { super(); this.ruleId = a0.ruleId; this.label = a0.label; this.startTime = a0.startTime; this.endTime = a0.endTime; this.days = a0.days; this.enabled = a0.enabled; } static fromServer(a0) { const { rule_id, label } = a0; let start_time = a0.start_time; if (start_time == null) { start_time = void 0; } let end_time = a0.end_time; if (end_time == null) { end_time = void 0; } const { days, enabled } = a0; const prototypeOf = Object.getPrototypeOf(ScheduleRuleRecord); const r17 = Object.create(ScheduleRuleRecord.prototype); const r18 = $callWithNewTarget(prototypeOf, r17, ScheduleRuleRecord); const r19 = r18 instanceof Object ? r18 : r17; r19.ruleId = rule_id; r19.label = label; r19.startTime = start_time; r19.endTime = end_time; r19.days = days; r19.enabled = enabled; return r19; } static fromCache(a0) { const prototypeOf = Object.getPrototypeOf(ScheduleRuleRecord); const r2 = Object.create(ScheduleRuleRecord.prototype); const r10 = $callWithNewTarget(prototypeOf, r2, ScheduleRuleRecord); const r11 = r10 instanceof Object ? r10 : r2; r11.ruleId = a0.ruleId; r11.label = a0.label; r11.startTime = a0.startTime; r11.endTime = a0.endTime; r11.days = a0.days; r11.enabled = a0.enabled; return r11; } isActiveAt(a0, a1) { if (this.startTime != null && this.endTime != null && this.days.length !== 0 && this.enabled) { const startTime = this.startTime; const r18 = 60 * startTime.hours + startTime.minutes; const endTime = this.endTime; const r22 = 60 * endTime.hours + endTime.minutes; const r23 = r18 > r22; if (this.days.includes(a0)) { if (r23) { if (a1 >= r18) { return true; } } else if (a1 >= r18 && a1 < r22) { return true; } } if (r23 && this.days.includes(a0 === DayOfWeek.MONDAY ? DayOfWeek.SUNDAY : a0 - 1) && a1 < r22) { return true; } return false; } return false; } getEndMinutes() { const endTime = this.endTime; let r2 = null; if (endTime != null) { const endTime2 = this.endTime; r2 = 60 * endTime2.hours + endTime2.minutes; } return r2; } getStartMinutes() { const startTime = this.startTime; let r2 = null; if (startTime != null) { const startTime2 = this.startTime; r2 = 60 * startTime2.hours + startTime2.minutes; } return r2; } } class RestrictedScheduleRecord extends Record { constructor(a0) { super(); this.rules = a0.rules; } static fromServer(a0) { let r1 = null; if (a0 != null) { const rules = a0.rules.map(ScheduleRuleRecord.fromServer); const prototypeOf = Object.getPrototypeOf(RestrictedScheduleRecord); const r16 = Object.create(RestrictedScheduleRecord.prototype); const r17 = $callWithNewTarget(prototypeOf, r16, RestrictedScheduleRecord); const r18 = r17 instanceof Object ? r17 : r16; r18.rules = rules; r1 = r18; } return r1; } static fromCache(a0) { let r1 = null; if (a0 != null) { const rules = a0.rules.map(ScheduleRuleRecord.fromCache); const prototypeOf = Object.getPrototypeOf(RestrictedScheduleRecord); const r16 = Object.create(RestrictedScheduleRecord.prototype); const r17 = $callWithNewTarget(prototypeOf, r16, RestrictedScheduleRecord); const r18 = r17 instanceof Object ? r17 : r16; r18.rules = rules; r1 = r18; } return r1; } isInRestrictedHours(r5 = new Date()) { if (this.rules.length === 0) { return false; } let c13282_0 = c1590_2[r5.getDay()]; let c13282_1 = 60 * r5.getHours() + r5.getMinutes(); return this.rules.some((rule) => rule.isActiveAt(c13282_0, c13282_1)); } getNextStartInfo(r4 = new Date()) { if (this.rules.length !== 0 && !this.isInRestrictedHours(r4)) { const day = r4.getDay(); const r6 = 60 * r4.getHours() + r4.getMinutes(); let r45 = null; for (const item of this.rules.filter((rule) => rule.enabled)) { const rule = item; const startMinutes = item.getStartMinutes(); if (startMinutes != null && rule.days.length !== 0) { for (const day2 of rule.days) { const r73 = (c1590_3[day2] - day + 7) % 7; const minutesUntil = 24 * ((r73 === 0 ? startMinutes <= r6 : r73 === 0) ? 7 : r73) * 60 - r6 + startMinutes; if (r45 == null || minutesUntil < r45.minutesUntil) { r45 = { minutesUntil, rule }; } } } } return r45; } return null; } getNextEndTime(r14 = new Date()) { if (this.rules.length === 0) { return null; } let c13283_0 = c1590_2[r14.getDay()]; const r44 = 60 * r14.getHours() + r14.getMinutes(); let c13283_1 = r44; for (const item of this.rules.filter((rule) => rule.isActiveAt(c13283_0, c13283_1))) { const endMinutes = item.getEndMinutes(); const startMinutes = item.getStartMinutes(); if (endMinutes == null) { continue; } if (startMinutes == null) { continue; } let r60 = startMinutes > endMinutes; const date = new Date(r14); const r70 = Math.floor(endMinutes / 60); const r71 = endMinutes % 60; if (r60) { r60 = r44 >= startMinutes; } if (r60) { date.setDate(date.getDate() + 1); } date.setHours(r70, r71, 0, 0); return date; } return null; } } export { c1590_2 as JS_DAY_TO_DAY_OF_WEEK }; export { ScheduleRuleRecord }; export { RestrictedScheduleRecord }; export function ensureRestrictedScheduleRecord(a0) { let r17; let r2 = null; if (a0 != null) { const r11 = a0 instanceof RestrictedScheduleRecord; let r3 = a0; if (!r11) { if (a0.rules.length === 0) { const rules = []; const prototypeOf = Object.getPrototypeOf(RestrictedScheduleRecord); const r24 = Object.create(RestrictedScheduleRecord.prototype); const r25 = $callWithNewTarget(prototypeOf, r24, RestrictedScheduleRecord); const r26 = r25 instanceof Object ? r25 : r24; r26.rules = rules; r17 = r26; } else { r17 = "ruleId" in a0.rules[0] ? RestrictedScheduleRecord.fromCache(a0) : RestrictedScheduleRecord.fromServer(a0); } r3 = r17; } r2 = r3; } return r2; }