UNPKG

@launchmenu/core

Version:

An environment for visual keyboard controlled applets

68 lines 6.88 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.createContextFolderHandler = 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 */ function createContextFolderHandler(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.createContextFolderHandler = createContextFolderHandler; //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY3JlYXRlQ29udGV4dEZvbGRlckhhbmRsZXIuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9zcmMvYWN0aW9ucy9jb250ZXh0TWVudUFjdGlvbi9jb250ZXh0Rm9sZGVycy9jcmVhdGVDb250ZXh0Rm9sZGVySGFuZGxlci50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7QUFBQSw2Q0FBa0Q7QUFLbEQsb0VBQStEO0FBQy9ELHNFQUFpRTtBQUNqRSxvR0FBK0Y7QUFDL0YscURBQWdEO0FBQ2hELHdFQUFtRTtBQUNuRSw0REFBdUQ7QUFDdkQsd0dBQW1HO0FBRW5HOzs7R0FHRztBQUNILFNBQWdCLDBCQUEwQixDQUN0QyxNQUFtQztJQUVuQyxNQUFNLE1BQU0sR0FBRyxNQUFNLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxNQUFNLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxxQ0FBaUIsQ0FBQztJQUVqRSxNQUFNLEVBQ0YsSUFBSSxFQUNKLFFBQVEsRUFBRSxlQUFlLEVBQ3pCLFFBQVEsRUFDUixvQkFBb0IsRUFDcEIsUUFBUSxHQUNYLEdBQUcsTUFBTSxDQUFDO0lBRVgsMkJBQTJCO0lBQzNCLE9BQU8sMkJBQVksQ0FBQztRQUNoQixJQUFJO1FBQ0osT0FBTyxFQUFFLENBQUMsTUFBTSxFQUFFLEdBQUcsQ0FBQyxRQUFRLENBQUMsQ0FBQyxDQUFDLENBQUMsUUFBUSxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDO1FBQ2xELElBQUksRUFBRSxVQUFVLFFBQWdDLEVBQUUsRUFBRSxFQUFFLEVBQUUsRUFBRSxPQUFPO1lBQzdELCtLQUErSztZQUMvSyxNQUFNLFdBQVcsR0FBRyxJQUFJLHdCQUFVLENBQUMsQ0FBQyxDQUFDLEVBQUU7Z0JBQ25DLE1BQU0sT0FBTyxHQUFHLE9BQU8sQ0FBQyxNQUFNLENBQUMsTUFBTSxDQUFDLEVBQUUsQ0FBQyxNQUFNLElBQUksTUFBTSxDQUFDLENBQUM7Z0JBQzNELE1BQU0s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