UNPKG

@launchmenu/core

Version:

An environment for visual keyboard controlled applets

69 lines 6.92 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.createContextFolderHandlerRaw = void 0; const model_react_1 = require("model-react"); const Priority_1 = require("../../../menus/menu/priority/Priority"); const getHooked_1 = require("../../../utils/subscribables/getHooked"); const hasHigherOrEqualPriority_1 = require("../../../menus/menu/priority/hasHigherOrEqualPriority"); const createAction_1 = require("../../createAction"); const collectContextMenuItems_1 = require("../collectContextMenuItems"); const contextMenuAction_1 = require("../contextMenuAction"); const createContextFolderMenuItem_1 = require("../../../menus/items/types/createContextFolderMenuItem"); /** * Creates a context menu handler that adds an folder to the (context) menu * @param config The configuration for the context folder * @exportTo noExport */ function createContextFolderHandlerRaw(config) { const parent = config.parent ? config.parent : contextMenuAction_1.contextMenuAction; const { name, itemData: contextItemData, override, preventCountCategory, priority, } = config; // Create the action itself return createAction_1.createAction({ name, parents: [parent, ...(override ? [override] : [])], core: function (itemData, _1, _2, targets) { // Create a retriever for the menu items (Cache is important, since createFolderMenuItem expects multiple calls to return the same items, unless a hook specified data updated) const itemsSource = new model_react_1.DataCacher(h => { const sources = targets.filter(target => "view" in target); const extra = targets .filter(target => !("view" in target)) .flatMap(({ actionBindings }) => getHooked_1.getHooked(actionBindings, h)); const items = collectContextMenuItems_1.collectContextMenuItems(itemData, sources, extra, h); const positiveItems = items.filter(({ priority }) => Priority_1.Priority.isPositive(priority)); positiveItems.sort((a, b) => hasHigherOrEqualPriority_1.hasHigherOrEqualPriority(a.priority, b.priority) ? -1 : 1); return positiveItems.map(({ item }) => item); }); const itemsGetter = (h) => itemsSource.get(h); const searchItems = (contextItemData === null || contextItemData === void 0 ? void 0 : contextItemData.preventSearch) ? [] : (query, hook) => itemsGetter(hook); // Create the item const item = createContextFolderMenuItem_1.createContextFolderMenuItem({ name, pathName: name, children: itemsGetter, searchChildren: searchItems, ...contextItemData, }); // Retrieve the result with bindings for the parent menu const parentBinding = parent.createBinding({ action: this, item: { priority, item, }, override, preventCountCategory, }); // Override binding, forward items to folder being overridden const overrideBindings = override ? itemData.map(item => override.createBinding(item)) : []; return { result: itemData, children: [parentBinding, ...overrideBindings], }; }, }); } exports.createContextFolderHandlerRaw = createContextFolderHandlerRaw; //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY3JlYXRlQ29udGV4dEZvbGRlckhhbmRsZXJSYXcuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9zcmMvYWN0aW9ucy9jb250ZXh0TWVudUFjdGlvbi9jb250ZXh0Rm9sZGVycy9jcmVhdGVDb250ZXh0Rm9sZGVySGFuZGxlclJhdy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7QUFBQSw2Q0FBa0Q7QUFLbEQsb0VBQStEO0FBQy9ELHNFQUFpRTtBQUNqRSxvR0FBK0Y7QUFDL0YscURBQWdEO0FBQ2hELHdFQUFtRTtBQUNuRSw0REFBdUQ7QUFDdkQsd0dBQW1HO0FBRW5HOzs7O0dBSUc7QUFDSCxTQUFnQiw2QkFBNkIsQ0FDekMsTUFBbUM7SUFFbkMsTUFBTSxNQUFNLEdBQUcsTUFBTSxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsTUFBTSxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMscUNBQWlCLENBQUM7SUFFakUsTUFBTSxFQUNGLElBQUksRUFDSixRQUFRLEVBQUUsZUFBZSxFQUN6QixRQUFRLEVBQ1Isb0JBQW9CLEVBQ3BCLFFBQVEsR0FDWCxHQUFHLE1BQU0sQ0FBQztJQUVYLDJCQUEyQjtJQUMzQixPQUFPLDJCQUFZLENBQUM7UUFDaEIsSUFBSTtRQUNKLE9BQU8sRUFBRSxDQUFDLE1BQU0sRUFBRSxHQUFHLENBQUMsUUFBUSxDQUFDLENBQUMsQ0FBQyxDQUFDLFFBQVEsQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQztRQUNsRCxJQUFJLEVBQUUsVUFBVSxRQUFnQyxFQUFFLEVBQUUsRUFBRSxFQUFFLEVBQUUsT0FBTztZQUM3RCwrS0FBK0s7WUFDL0ssTUFBTSxXQUFXLEdBQUcsSUFBSSx3QkFBVSxDQUFDLENBQUMsQ0FBQyxFQUFFO2dCQUNuQyxNQUFNLE9BQU8sR0FBRyxPQUFPLENBQUMsTUFBTSxDQUFDLE1BQU0sQ0FBQyxFQUFFLENBQUMsTUFBTSxJQUFJLE1BQU0sQ0FBQyxDQUFDO2dCQUMz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