@launchmenu/applet-settings-manager
Version:
An applet to manage settings
97 lines • 8.88 kB
JavaScript
;
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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