scriptable-testlab
Version:
A lightweight, efficient tool designed to manage and update scripts for Scriptable.
62 lines • 1.98 kB
JavaScript
import { EventEmitter } from "events";
const STATE_CHANGE_EVENT = "stateChange";
var SystemState;
((SystemState2) => {
const emitter = new EventEmitter();
let state = {};
function getState() {
return { ...state };
}
SystemState2.getState = getState;
function setState(newState) {
state = { ...state, ...newState };
emitter.emit(STATE_CHANGE_EVENT, getState());
}
SystemState2.setState = setState;
function reset() {
state = {};
emitter.emit(STATE_CHANGE_EVENT, getState());
}
SystemState2.reset = reset;
function getAlertResponse() {
return state.alertResponse;
}
SystemState2.getAlertResponse = getAlertResponse;
function setAlertResponse(response) {
setState({ alertResponse: response });
}
SystemState2.setAlertResponse = setAlertResponse;
function getTextFieldValue(fieldId) {
return state.textFieldValues?.[fieldId];
}
SystemState2.getTextFieldValue = getTextFieldValue;
function setTextFieldValue(fieldId, value) {
const textFieldValues = { ...state.textFieldValues || {} };
textFieldValues[fieldId] = value;
setState({ textFieldValues });
}
SystemState2.setTextFieldValue = setTextFieldValue;
function addEventListener(event, listener) {
if (event !== STATE_CHANGE_EVENT) {
throw new Error(`Invalid event: ${event}`);
}
emitter.addListener(event, listener);
}
SystemState2.addEventListener = addEventListener;
function removeEventListener(event, listener) {
if (event !== STATE_CHANGE_EVENT) {
throw new Error(`Invalid event: ${event}`);
}
emitter.removeListener(event, listener);
}
SystemState2.removeEventListener = removeEventListener;
function subscribe(handler) {
addEventListener(STATE_CHANGE_EVENT, handler);
return () => removeEventListener(STATE_CHANGE_EVENT, handler);
}
SystemState2.subscribe = subscribe;
})(SystemState || (SystemState = {}));
export {
SystemState
};
//# sourceMappingURL=system.js.map