@launchmenu/core
Version:
An environment for visual keyboard controlled applets
59 lines • 5.18 kB
JavaScript
Object.defineProperty(exports, "__esModule", { value: true });
exports.UnifiedAbstractUILayer = void 0;
const AbstractUILayer_1 = require("../AbstractUILayer");
/**
* An abstract class that can be used as a foundation for a UILayer, where all ui components can be passed together
*/
class UnifiedAbstractUILayer extends AbstractUILayer_1.AbstractUILayer {
/** @override */
async onOpen(context, close) {
// Call the regular onOpen which will call an initializer
const onClose = await super.onOpen(context, close);
// Open a child layers and keep their onClose callbacks
const childOnClose = await Promise.all(this.getAll()
.filter((item) => "onOpen" in item)
.map(item => item.onOpen(context, close)));
// Call close on the child layers and teh regular initializer
return async () => {
await Promise.all(childOnClose.map(onClose => (onClose ? onClose() : null)));
await (onClose === null || onClose === void 0 ? void 0 : onClose());
};
}
// TODO: add a system to not call the hook if nothing changed for a given stack (menu/field/content)
/**
* Retrieves the menu data
* @param hook The data hook to subscribe to changes
* @returns The menu data of this layer
*/
getMenuData(hook) {
const menus = this.getAll(hook)
.flatMap((item) => "getMenuData" in item ? item.getMenuData(hook) : [item])
.filter((el) => "menuView" in el);
return super.getMenuData(hook, menus);
}
/**
* Retrieves the field data
* @param hook The data hook to subscribe to changes
* @returns The field data of this layer
*/
getFieldData(hook) {
const fields = this.getAll(hook)
.flatMap((item) => "getFieldData" in item ? item.getFieldData(hook) : [item])
.filter((el) => "fieldView" in el);
return super.getFieldData(hook, fields);
}
/**
* Retrieves the content data
* @param hook The data hook to subscribe to changes
* @returns The content data of this layer
*/
getContentData(hook) {
const content = this.getAll(hook)
.flatMap((item) => "getContentData" in item ? item.getContentData(hook) : [item])
.filter((el) => "contentView" in el);
return super.getContentData(hook, content);
}
}
exports.UnifiedAbstractUILayer = UnifiedAbstractUILayer;
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiVW5pZmllZEFic3RyYWN0VUlMYXllci5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy91aUxheWVycy9zdGFuZGFyZFVJTGF5ZXIvVW5pZmllZEFic3RyYWN0VUlMYXllci50c3giXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7O0FBT0Esd0RBQW1EO0FBR25EOztHQUVHO0FBQ0gsTUFBc0Isc0JBQXVCLFNBQVEsaUNBQWU7SUFDaEUsZ0JBQWdCO0lBQ1QsS0FBSyxDQUFDLE1BQU0sQ0FDZixPQUFtQixFQUNuQixLQUFpQjtRQUVqQix5REFBeUQ7UUFDekQsTUFBTSxPQUFPLEdBQUcsTUFBTSxLQUFLLENBQUMsTUFBTSxDQUFDLE9BQU8sRUFBRSxLQUFLLENBQUMsQ0FBQztRQUVuRCx1REFBdUQ7UUFDdkQsTUFBTSxZQUFZLEdBQUcsTUFBTSxPQUFPLENBQUMsR0FBRyxDQUNsQyxJQUFJLENBQUMsTUFBTSxFQUFFO2FBQ1IsTUFBTSxDQUFDLENBQUMsSUFBSSxFQUFvQixFQUFFLENBQUMsUUFBUSxJQUFJLElBQUksQ0FBQzthQUNwRCxHQUFHLENBQUMsSUFBSSxDQUFDLEVBQUUsQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDLE9BQU8sRUFBRSxLQUFLLENBQUMsQ0FBQyxDQUNoRCxDQUFDO1FBRUYsNkRBQTZEO1FBQzdELE9BQU8sS0FBSyxJQUFJLEVBQUU7WUFDZCxNQUFNLE9BQU8sQ0FBQyxHQUFHLENBQUMsWUFBWSxDQUFDLEdBQUcsQ0FBQyxPQUFPLENBQUMsRUFBRSxDQUFDLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxPQUFPLEVBQUUsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDO1lBQzdFLE9BQU0sT0FBTyxhQUFQLE9BQU8sdUJBQVAsT0FBTyxHQUFJLENBQUM7UUFDdEIsQ0FBQyxDQUFDO0lBQ04sQ0FBQztJQVNELG9HQUFvRztJQUNwRzs7OztPQUlHO0lBQ0ksV0FBVyxDQUFDLElBQWdCO1FBQy9CLE1BQU0sS0FBSyxHQUFHLElBQUksQ0FBQyxNQUFNLENBQUMsSUFBSSxDQUFDO2FBQzFCLE9BQU8sQ0FBQyxDQUFDLElBQUksRUFBa0IsRUFBRSxDQUM5QixhQUFhLElBQUksSUFBSSxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsV0FBVyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUMxRDthQUNBLE1BQU0sQ0FBQyxDQUFDLEVBQUUsRUFBMEIsRUFBRSxDQUFDLFVBQVUsSUFBSSxFQUFFLENBQUMsQ0FBQztRQUM5RCxPQUFPLEtBQUssQ0FBQyxXQUFXLENBQUMsSUFBSSxFQUFFLEtBQUssQ0FBQyxDQUFDO0lBQzFDLENBQUM7SUFFRDs7OztPQUlHO0lBQ0ksWUFBWSxDQUFDLElBQWdCO1FBQ2hDLE1BQU0sTUFBTSxHQUFHLElBQUksQ0FBQyxNQUFNLENBQUMsSUFBSSxDQUFDO2FBQzNCLE9BQU8sQ0FBQyxDQUFDLElBQUksRUFBa0IsRUFBRSxDQUM5QixjQUFjLElBQUksSUFBSSxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsWUFBWSxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUM1RDthQUNBLE1BQU0sQ0FBQyxDQUFDLEVBQUUsRUFBMkIsRUFBRSxDQUFDLFdBQVcsSUFBSSxFQUFFLENBQUMsQ0FBQztRQUNoRSxPQUFPLEtBQUssQ0FBQyxZQUFZLENBQUMsSUFBSSxFQUFFLE1BQU0sQ0FBQyxDQUFDO0lBQzVDLENBQUM7SUFFRDs7OztPQUlHO0lBQ0ksY0FBYyxDQUFDLElBQWdCO1FBQ2xDLE1BQU0sT0FBTyxHQUFHLElBQUksQ0FBQyxNQUFNLENBQUMsSUFBSSxDQUFDO2FBQzVCLE9BQU8sQ0FBQyxDQUFDLElBQUksRUFBa0IsRUFBRSxDQUM5QixnQkFBZ0IsSUFBSSxJQUFJLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxjQUFjLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLENBQ2hFO2FBQ0EsTUFBTSxDQUFDLENBQUMsRUFBRSxFQUE2QixFQUFFLENBQUMsYUFBYSxJQUFJLEVBQUUsQ0FBQyxDQUFDO1FBQ3BFLE9BQU8sS0FBSyxDQUFDLGNBQWMsQ0FBQyxJQUFJLEVBQUUsT0FBTyxDQUFDLENBQUM7SUFDL0MsQ0FBQztDQUNKO0FBeEVELHdEQXdFQyJ9
;