UNPKG

@launchmenu/core

Version:

An environment for visual keyboard controlled applets

109 lines 10.1 kB
"use strict"; var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) { if (k2 === undefined) k2 = k; Object.defineProperty(o, k2, { enumerable: true, get: function() { return m[k]; } }); }) : (function(o, m, k, k2) { if (k2 === undefined) k2 = k; o[k2] = m[k]; })); var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) { Object.defineProperty(o, "default", { enumerable: true, value: v }); }) : function(o, v) { o["default"] = v; }); var __importStar = (this && this.__importStar) || function (mod) { if (mod && mod.__esModule) return mod; var result = {}; if (mod != null) for (var k in mod) if (k !== "default" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k); __setModuleDefault(result, mod); return result; }; Object.defineProperty(exports, "__esModule", { value: true }); exports.createFolderMenuItem = exports.getChildList = void 0; const react_1 = __importStar(require("react")); const MenuItemFrame_1 = require("../../components/items/MenuItemFrame"); const MenuItemLayout_1 = require("../../components/items/MenuItemLayout"); const MenuItemIcon_1 = require("../../components/items/MenuItemIcon"); const Truncated_1 = require("../../components/Truncated"); const adjustBindings_1 = require("./adjustBindings"); const getHooked_1 = require("../../utils/subscribables/getHooked"); const openMenuExecuteHandler_1 = require("../../actions/types/execute/types/openMenuExecuteHandler"); const forwardKeyEventHandler_1 = require("../../actions/types/keyHandler/forwardKeyEventHandler"); const createStandardActionBindings_1 = require("./createStandardActionBindings"); const Box_1 = require("../../styling/box/Box"); const ShortcutLabel_1 = require("../../components/items/ShortcutLabel"); const ThemeIcon_1 = require("../../components/ThemeIcon"); const simpleSearchHandler_1 = require("../../actions/types/search/tracedRecursiveSearch/simpleSearch/simpleSearchHandler"); const model_react_1 = require("model-react"); /** * Retrieves the children in (subscribable) list form * @param children The children to get * @returns The children list */ function getChildList(children) { return children instanceof Function || children instanceof Array ? children : Object.values(children); } exports.getChildList = getChildList; /** * Creates a new folder menu item, used to store multiple child menu items in * @param data The data to create the menu item from * @returns The folder menu item, including the children */ function createFolderMenuItem({ actionBindings, children, closeOnExecute = false, forwardKeyEvents = false, searchChildren, name, pathName = getHooked_1.getHooked(name), searchIcon, layerContentData, layerFieldData, ...rest }) { const childList = getChildList(children); const extraBindings = []; if (childList.length > 0 || childList instanceof Function) extraBindings.push(openMenuExecuteHandler_1.openMenuExecuteHandler.createBinding({ items: childList, closeOnExecute, pathName, searchIcon, content: layerContentData, field: layerFieldData, })); if (forwardKeyEvents) extraBindings.push(forwardKeyEventHandler_1.forwardKeyEventHandler.createBinding({ subscribableData: h => ({ targets: getHooked_1.getHooked(childList, h), }), })); if (!searchChildren) searchChildren = (children instanceof Function ? (query, hook) => children(hook) : children); const bindings = createStandardActionBindings_1.createStandardActionBindings({ name, ...rest, actionBindings: adjustBindings_1.adjustBindings(actionBindings !== null && actionBindings !== void 0 ? actionBindings : [], extraBindings), searchChildren: getChildList(searchChildren), onShowChild: async ({ parent, child, context }) => { if (parent) await openMenuExecuteHandler_1.openMenuExecuteHandler .get([parent]) .execute({ context, focus: child }); }, }, () => item); const { icon = "menu", description, shortcut } = rest; // TODO: add folder specific styling to indicate it's a folder const item = { view: react_1.memo(({ highlight, ...props }) => { const [h] = model_react_1.useDataHook(); const iconV = getHooked_1.getHooked(icon, h); const descriptionV = getHooked_1.getHooked(description, h); const nameV = getHooked_1.getHooked(name, h); return (react_1.default.createElement(MenuItemFrame_1.MenuItemFrame, Object.assign({}, props), react_1.default.createElement(Box_1.Box, { display: "flex", alignItems: "center" }, react_1.default.createElement(MenuItemLayout_1.MenuItemLayout, { icon: iconV && react_1.default.createElement(MenuItemIcon_1.MenuItemIcon, { icon: iconV }), name: react_1.default.createElement(Box_1.Box, { font: "header" }, react_1.default.createElement(simpleSearchHandler_1.simpleSearchHandler.Highlighter, { query: highlight, pattern: rest.searchPattern }, nameV)), shortcut: shortcut && react_1.default.createElement(ShortcutLabel_1.ShortcutLabel, { shortcut: shortcut }), description: descriptionV && (react_1.default.createElement(Truncated_1.Truncated, { title: descriptionV }, react_1.default.createElement(simpleSearchHandler_1.simpleSearchHandler.Highlighter, { query: highlight, pattern: rest.searchPattern }, descriptionV))) }), react_1.default.createElement(ThemeIcon_1.ThemeIcon, { icon: "arrowRight", size: 30 })))); }), actionBindings: bindings, children, }; return item; } exports.createFolderMenuItem = createFolderMenuItem; //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY3JlYXRlRm9sZGVyTWVudUl0ZW0uanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvbWVudXMvaXRlbXMvY3JlYXRlRm9sZGVyTWVudUl0ZW0udHN4Il0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7QUFBQSwrQ0FBa0M7QUFHbEMsd0VBQW1FO0FBQ25FLDBFQUFxRTtBQUNyRSxzRUFBaUU7QUFDakUsMERBQXFEO0FBQ3JELHFEQUFnRDtBQUVoRCxtRUFBOEQ7QUFFOUQscUdBQWdHO0FBQ2hHLGtHQUE2RjtBQUM3RixpRkFBNEU7QUFDNUUsK0NBQTBDO0FBQzFDLHdFQUFtRTtBQUNuRSwwREFBcUQ7QUFDckQsMkhBQXNIO0FBR3RILDZDQUFtRDtBQUVuRDs7OztHQUlHO0FBQ0gsU0FBZ0IsWUFBWSxDQUUxQixRQUFXO0lBQ1QsT0FBTyxRQUFRLFlBQVksUUFBUSxJQUFJLFFBQVEsWUFBWSxLQUFLO1FBQzVELENBQUMsQ0FBRSxRQUFnQjtRQUNuQixDQUFDLENBQUMsTUFBTSxDQUFDLE1BQU0sQ0FBQyxRQUFRLENBQUMsQ0FBQztBQUNsQyxDQUFDO0FBTkQsb0NBTUM7QUFFRDs7OztHQUlHO0FBQ0gsU0FBZ0Isb0JBQW9CLENBT2xDLEVBQ0UsY0FBYyxFQUNkLFFBQVEsRUFDUixjQUFjLEdBQUcsS0FBSyxFQUN0QixnQkFBZ0IsR0FBRyxLQUFLLEVBQ3hCLGNBQWMsRUFDZCxJQUFJLEVBQ0osUUFBUSxHQUFHLHFCQUFTLENBQUMsSUFBSSxDQUFDLEVBQzFCLFVBQVUsRUFDVixnQkFBZ0IsRUFDaEIsY0FBYyxFQUNkLEdBQUcsSUFBSSxFQUNpQjtJQUN4QixNQUFNLFNBQVMsR0FBRyxZQUFZLENBQUMsUUFBUSxDQUFDLENBQUM7SUFDekMsTUFBTSxhQUFhLEdBQXFCLEVBQUUsQ0FBQztJQUMzQyxJQUFJLFNBQVMsQ0FBQyxNQUFNLEdBQUcsQ0FBQyxJQUFJLFNBQVMsWUFBWSxRQUFRO1FBQ3JELGFB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