scriptable-testlab
Version:
A lightweight, efficient tool designed to manage and update scripts for Scriptable.
187 lines • 5.13 kB
JavaScript
var __defProp = Object.defineProperty;
var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
var __getOwnPropNames = Object.getOwnPropertyNames;
var __hasOwnProp = Object.prototype.hasOwnProperty;
var __export = (target, all) => {
for (var name in all)
__defProp(target, name, { get: all[name], enumerable: true });
};
var __copyProps = (to, from, except, desc) => {
if (from && typeof from === "object" || typeof from === "function") {
for (let key of __getOwnPropNames(from))
if (!__hasOwnProp.call(to, key) && key !== except)
__defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });
}
return to;
};
var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
var stack_exports = {};
__export(stack_exports, {
MockWidgetStack: () => MockWidgetStack
});
module.exports = __toCommonJS(stack_exports);
var import_scriptable_abstract = require("scriptable-abstract");
var import_image = require("../../media/image");
var import_color = require("../color");
var import_gradient = require("../gradient");
var import_date = require("./date");
var import_image2 = require("./image");
var import_text = require("./text");
const DEFAULT_STATE = {
alignment: "leading",
spacing: 0,
size: { width: 0, height: 0 },
backgroundColor: new import_color.MockColor("#000000"),
backgroundImage: import_image.MockImage.fromFile(""),
backgroundGradient: new import_gradient.MockLinearGradient(),
cornerRadius: 0,
borderWidth: 0,
borderColor: new import_color.MockColor("#000000"),
url: "",
padding: { top: 0, leading: 0, bottom: 0, trailing: 0 },
items: [],
layout: "vertical"
};
class MockWidgetStack extends import_scriptable_abstract.AbsWidgetStack {
constructor() {
super(DEFAULT_STATE);
}
/**
* Creates a new widget stack instance.
*/
static create() {
return new MockWidgetStack();
}
// Property accessors
get alignment() {
return this.state.alignment;
}
set alignment(value) {
this.setState({ alignment: value });
}
get spacing() {
return this.state.spacing;
}
set spacing(value) {
this.setState({ spacing: value });
}
get size() {
return { ...this.state.size };
}
set size(value) {
this.setState({ size: { ...value } });
}
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 cornerRadius() {
return this.state.cornerRadius;
}
set cornerRadius(value) {
this.setState({ cornerRadius: value });
}
get borderWidth() {
return this.state.borderWidth;
}
set borderWidth(value) {
this.setState({ borderWidth: value });
}
get borderColor() {
return this.state.borderColor;
}
set borderColor(value) {
this.setState({ borderColor: value });
}
get url() {
return this.state.url;
}
set url(value) {
this.setState({ url: value });
}
// Widget element management methods
addText(text) {
const textItem = new import_text.MockWidgetText(text);
this.setState((prevState) => ({
items: [...prevState.items, textItem]
}));
return textItem;
}
addDate(date) {
const dateItem = new import_date.MockWidgetDate(date);
this.setState((prevState) => ({
items: [...prevState.items, dateItem]
}));
return dateItem;
}
addImage(image) {
const imageItem = import_image2.MockWidgetImage.create(image);
this.setState((prevState) => ({
items: [...prevState.items, imageItem]
}));
return imageItem;
}
addSpacer(length) {
const spacer = { type: "spacer", length: length ?? 0 };
this.setState((prevState) => ({
items: [...prevState.items, spacer]
}));
return spacer;
}
addStack() {
const stack = MockWidgetStack.create();
this.setState((prevState) => ({
items: [...prevState.items, stack]
}));
return stack;
}
// Layout methods
setPadding(top, leading, bottom, trailing) {
this.setState({
padding: { top, leading, bottom, trailing }
});
}
getPadding() {
return { ...this.state.padding };
}
getItems() {
return [...this.state.items];
}
useDefaultPadding() {
this.setPadding(8, 8, 8, 8);
}
topAlignContent() {
this.setState({ alignment: "leading" });
}
centerAlignContent() {
this.setState({ alignment: "center" });
}
bottomAlignContent() {
this.setState({ alignment: "trailing" });
}
layoutHorizontally() {
this.setState({ layout: "horizontal" });
}
layoutVertically() {
this.setState({ layout: "vertical" });
}
}
// Annotate the CommonJS export names for ESM import in node:
0 && (module.exports = {
MockWidgetStack
});
//# sourceMappingURL=stack.js.map