UNPKG

@launchmenu/applet-settings-manager

Version:
97 lines 8.88 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.addSettingsPatternMask = exports.createGlobalSettingsBindings = void 0; const core_1 = require("@launchmenu/core"); const _1 = require("."); const settingsFolderHandler_1 = require("./settingsFolderHandler"); const uuid_1 = require("uuid"); /** * Creates the bindings for all global settings items * @param settings The base settings for the context menu * @param appletSettings The settings for the currently opened applet * @returns The menu item folder containing the given settings */ function createGlobalSettingsBindings({ settingsFolder, selectedAppletSettingsFolder, fileControls, settingsManager, }) { const allSettings = core_1.createGlobalContextBinding({ priority: core_1.Priority.LOW, item: core_1.createFolderMenuItem({ name: "All settings", children: settingsFolder, searchChildren: (query) => core_1.settingPatternMatcher(query) ? settingsFolder : [], }), }, settingsFolderHandler_1.settingsFolderHandler); const selectedSettings = selectedAppletSettingsFolder && core_1.createGlobalContextBinding({ priority: [core_1.Priority.LOW, core_1.Priority.HIGH], item: addSettingsPatternMask(selectedAppletSettingsFolder), }, settingsFolderHandler_1.settingsFolderHandler); const save = fileControls && core_1.createGlobalContextBinding({ priority: [core_1.Priority.HIGH, core_1.Priority.HIGH], item: core_1.createStandardMenuItem({ name: "Save settings", onExecute: () => settingsManager.saveAll(), shortcut: (context, h) => context.settings.get(_1.settings).controls.save.get(h), }), }, settingsFolderHandler_1.settingsFolderHandler); const load = fileControls && core_1.createGlobalContextBinding({ priority: core_1.Priority.HIGH, item: core_1.createStandardMenuItem({ name: "Reload settings", onExecute: () => settingsManager.saveAll(), shortcut: (context, h) => context.settings.get(_1.settings).controls.load.get(h), }), }, settingsFolderHandler_1.settingsFolderHandler); return [ allSettings, ...(selectedSettings ? [selectedSettings] : []), ...(save ? [save] : []), ...(load ? [load] : []), ]; } exports.createGlobalSettingsBindings = createGlobalSettingsBindings; /** * Adds a search 'mask' to the item, such that children are only searched through if the query contains the settings pattern * @param item The item to add the mask to * @returns The newly created item */ function addSettingsPatternMask(item) { return core_1.identityAction.copyItem(item, bindings => { const nonSearchActions = bindings.filter(binding => !core_1.isActionBindingFor(core_1.searchAction, binding)); const ID = uuid_1.v4(); const searchBinding = core_1.tracedRecursiveSearchHandler.createBinding(getTrace => ({ ID, search: async (query, hook) => { // Get all original results by obtaining recursive and non recursive results const originalRecursiveResults = core_1.tracedRecursiveSearchHandler .get([{ actionBindings: bindings }]) .getSearchables(getTrace); const originalNonRecursiveResults = core_1.searchAction.get([ { actionBindings: bindings.filter(binding => !core_1.isActionBindingFor(core_1.tracedRecursiveSearchHandler, binding)), }, ]); const originalResults = [ ...originalNonRecursiveResults, ...originalRecursiveResults, ]; // If the pattern matches, just return the children as the original item would obtain if (core_1.settingPatternMatcher(query)) return { children: originalResults }; // If the pattern doesn't match, only return the direct result, but not their children else return { children: originalResults.map((searchable) => core_1.adjustSearchable(searchable, { children: () => [], // Make the ID different, such that the searcher notices these are different nodes ID: ID => `capped-${ID}`, })), }; }, })); return [searchBinding, ...nonSearchActions]; }); } exports.addSettingsPatternMask = addSettingsPatternMask; //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY3JlYXRlR2xvYmFsU2V0dGluZ3NCaW5kaW5ncy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uL3NyYy9jcmVhdGVHbG9iYWxTZXR0aW5nc0JpbmRpbmdzLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7OztBQUFBLDJDQWlCMEI7QUFDMUIsd0JBQTJCO0FBQzNCLG1FQUE4RDtBQUM5RCwrQkFBZ0M7QUFFaEM7Ozs7O0dBS0c7QUFDSCxTQUFnQiw0QkFBNEIsQ0FHMUMsRUFDRSxjQUFjLEVBQ2QsNEJBQTRCLEVBQzVCLFlBQVksRUFDWixlQUFlLEdBT2xCO0lBQ0csTUFBTSxXQUFXLEdBQUcsaUNBQTBCLENBQzFDO1FBQ0ksUUFBUSxFQUFFLGVBQVEsQ0FBQyxHQUFHO1FBQ3RCLElBQUksRUFBRSwyQkFBb0IsQ0FBQztZQUN2QixJQUFJLEVBQUUsY0FBYztZQUNwQixRQUFRLEVBQUUsY0FBYztZQUN4QixjQUFjLEVBQUUsQ0FBQyxLQUFhLEVBQUUsRUFBRSxDQUM5Qiw0QkFBcUIsQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLENBQUMsY0FBYyxDQUFDLENBQUMsQ0FBQyxFQUFFO1NBQ3pELENBQUM7S0FDTCxFQUNELDZDQUFxQixDQUN4QixDQUFDO0lBRUYsTUFBTSxnQkFBZ0IsR0FDbEIsNEJBQTRCO1FBQzVCLGlDQUEwQixDQUN0QjtZQUNJLFFBQVEsRUFBRSxDQUFDLGVBQVEsQ0FBQyxHQUFHLEVBQUUsZUFBUSxDQUFDLElBQUksQ0FBQztZQUN2QyxJQUFJLEVBQUUsc0JBQXNCLENBQUMsNEJBQTRCLENBQUM7U0FDN0QsRUFDRCw2Q0FBcUIsQ0FDeEIsQ0FBQztJQUVOLE1BQU0sSUFBSSxHQUNOLFlBQVk7UUFDWixpQ0FBMEIsQ0FDdEI7WUFDSSxRQUFRLEVBQUUsQ0FBQyxlQUFRLENBQUMsSUFBSSxFQUFFLGVBQVEsQ0FBQyxJQUFJLENBQUM7WUFDeEMsSUFBSSxFQUFFLDZCQUFzQixDQUFDO2dCQUN6QixJQUFJLEVBQUUsZUFBZTtnQkFD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