scriptable-testlab
Version:
A lightweight, efficient tool designed to manage and update scripts for Scriptable.
152 lines • 3.89 kB
JavaScript
import { AbsListWidget } from "scriptable-abstract";
import { MockImage } from "../../media/image";
import { MockColor } from "../color";
import { MockLinearGradient } from "../gradient";
import { MockWidgetDate } from "./date";
import { MockWidgetImage } from "./image";
import { MockWidgetSpacer } from "./spacer";
import { MockWidgetStack } from "./stack";
import { MockWidgetText } from "./text";
const DEFAULT_STATE = {
family: "medium",
backgroundColor: new MockColor("#000000"),
backgroundImage: new MockImage(),
backgroundGradient: new MockLinearGradient(),
spacing: 0,
url: "",
refreshAfterDate: /* @__PURE__ */ new Date(),
padding: {
top: 0,
leading: 0,
bottom: 0,
trailing: 0
},
addAccessoryWidgetBackground: false,
elements: []
};
class MockWidget extends AbsListWidget {
constructor() {
super();
this.setState(DEFAULT_STATE);
}
get backgroundColor() {
return this.state.backgroundColor;
}
set backgroundColor(value) {
this.setState({ backgroundColor: value });
}
get backgroundImage() {
return this.state.backgroundImage;
}
set backgroundImage(value) {
this.setState({ backgroundImage: value });
}
get backgroundGradient() {
return this.state.backgroundGradient;
}
set backgroundGradient(value) {
this.setState({ backgroundGradient: value });
}
get spacing() {
return this.state.spacing;
}
set spacing(value) {
this.setState({ spacing: value });
}
get url() {
return this.state.url;
}
set url(value) {
this.setState({ url: value });
}
get refreshAfterDate() {
return this.state.refreshAfterDate;
}
set refreshAfterDate(value) {
this.setState({ refreshAfterDate: value });
}
get addAccessoryWidgetBackground() {
return this.state.addAccessoryWidgetBackground;
}
set addAccessoryWidgetBackground(value) {
this.setState({ addAccessoryWidgetBackground: value });
}
addText(text) {
const textElement = new MockWidgetText(text);
this.setState({
elements: [...this.state.elements, textElement]
});
return textElement;
}
addDate(date) {
const dateElement = new MockWidgetDate(date);
this.setState({
elements: [...this.state.elements, dateElement]
});
return dateElement;
}
addImage(image) {
const imageElement = new MockWidgetImage(image);
this.setState({
elements: [...this.state.elements, imageElement]
});
return imageElement;
}
addSpacer(length) {
const spacer = new MockWidgetSpacer(length);
this.setState({
elements: [...this.state.elements, spacer]
});
return spacer;
}
addStack() {
const stack = new MockWidgetStack();
this.setState({
elements: [...this.state.elements, stack]
});
return stack;
}
setPadding(top, leading, bottom, trailing) {
this.setState({
padding: { top, leading, bottom, trailing }
});
}
useDefaultPadding() {
this.setPadding(8, 8, 8, 8);
}
async presentSmall() {
this.setState({ family: "small" });
return Promise.resolve();
}
async presentMedium() {
this.setState({ family: "medium" });
return Promise.resolve();
}
async presentLarge() {
this.setState({ family: "large" });
return Promise.resolve();
}
async presentExtraLarge() {
this.setState({ family: "extraLarge" });
return Promise.resolve();
}
async presentAccessoryInline() {
this.setState({ family: "accessoryInline" });
return Promise.resolve();
}
async presentAccessoryCircular() {
this.setState({ family: "accessoryCircular" });
return Promise.resolve();
}
async presentAccessoryRectangular() {
this.setState({ family: "accessoryRectangular" });
return Promise.resolve();
}
get widgetFamily() {
return this.state.family;
}
}
export {
MockWidget
};
//# sourceMappingURL=widget.js.map