UNPKG

@launchmenu/core

Version:

An environment for visual keyboard controlled applets

59 lines 5.18 kB
"use strict"; 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