scriptable-testlab
Version:
A lightweight, efficient tool designed to manage and update scripts for Scriptable.
127 lines • 3.68 kB
JavaScript
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