UNPKG

scriptable-testlab

Version:

A lightweight, efficient tool designed to manage and update scripts for Scriptable.

127 lines 3.68 kB
var __defProp = Object.defineProperty; var __defNormalProp = (obj, key, value) => key in obj ? __defProp(obj, key, { enumerable: true, configurable: true, writable: true, value }) : obj[key] = value; var __publicField = (obj, key, value) => __defNormalProp(obj, typeof key !== "symbol" ? key + "" : key, value); import { AbsCalendar } from "scriptable-abstract"; import { MockColor } from "../ui/color"; const DEFAULT_STATE = { identifier: "", title: "", allowsContentModifications: true, isSubscribed: false, color: new MockColor("#000000") }; const _MockCalendar = class _MockCalendar extends AbsCalendar { static get instance() { if (!this._instance) { this._instance = new _MockCalendar(); } return this._instance; } constructor() { super(DEFAULT_STATE); } // Static methods static async forReminders() { return this._calendars.filter((cal) => !cal.isSubscribed); } static async forEvents() { return this._calendars.filter((cal) => !cal.isSubscribed); } static async forRemindersByTitle(title) { const calendar = this._calendars.find((cal) => cal.title === title && !cal.isSubscribed); if (!calendar) { throw new Error(`No calendar found with title: ${title}`); } return calendar; } static async forEventsByTitle(title) { const calendar = this._calendars.find((cal) => cal.title === title && !cal.isSubscribed); if (!calendar) { throw new Error(`No calendar found with title: ${title}`); } return calendar; } static async createForReminders(title) { const calendar = new _MockCalendar(); calendar.title = title; calendar.save(); return calendar; } static async findOrCreateForReminders(title) { try { return await this.forRemindersByTitle(title); } catch { return this.createForReminders(title); } } static async defaultForReminders() { const calendars = await this.forReminders(); if (calendars.length === 0) { return this.createForReminders("Default Reminders"); } return calendars[0]; } static async defaultForEvents() { const calendars = await this.forEvents(); if (calendars.length === 0) { const calendar = new _MockCalendar(); calendar.title = "Default Events"; calendar.save(); return calendar; } return calendars[0]; } static async presentPicker(allowMultiple = false) { return allowMultiple ? this._calendars : [this._calendars[0]]; } // Instance methods get identifier() { return this.state.identifier; } get title() { return this.state.title; } set title(value) { this.setState({ title: value }); } get allowsContentModifications() { return this.state.allowsContentModifications; } set allowsContentModifications(value) { this.setState({ allowsContentModifications: value }); } get isSubscribed() { return this.state.isSubscribed; } get color() { return this.state.color; } set color(value) { this.setState({ color: value }); } supportsAvailability(_availability) { return true; } save() { if (!_MockCalendar._calendars.includes(this)) { _MockCalendar._calendars.push(this); } } remove() { const index = _MockCalendar._calendars.indexOf(this); if (index > -1) { _MockCalendar._calendars.splice(index, 1); } } // Helper method to clear all calendars (for testing) static clearAll() { this._calendars = []; } }; __publicField(_MockCalendar, "_instance", null); __publicField(_MockCalendar, "_calendars", []); let MockCalendar = _MockCalendar; export { MockCalendar }; //# sourceMappingURL=calendar.js.map