@launchmenu/core
Version:
An environment for visual keyboard controlled applets
69 lines • 6.92 kB
JavaScript
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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
;