@launchmenu/core
Version:
An environment for visual keyboard controlled applets
115 lines • 9.77 kB
JavaScript
"use strict";
var __importDefault = (this && this.__importDefault) || function (mod) {
return (mod && mod.__esModule) ? mod : { "default": mod };
};
Object.defineProperty(exports, "__esModule", { value: true });
exports.createCategorySortingSetting = exports.createMenuSettingsFolder = exports.getMenuControlsFolderCategories = void 0;
const model_react_1 = require("model-react");
const react_1 = __importDefault(require("react"));
const createStandardCategory_1 = require("../../../../menus/categories/createStandardCategory");
const createStandardMenuItem_1 = require("../../../../menus/items/createStandardMenuItem");
const createFieldMenuItem_1 = require("../../../../menus/items/inputs/createFieldMenuItem");
const createBooleanSetting_1 = require("../../../../settings/inputs/createBooleanSetting");
const createNumberSetting_1 = require("../../../../settings/inputs/createNumberSetting");
const createSettingsFolder_1 = require("../../../../settings/inputs/createSettingsFolder");
const settingPatternMatcher_1 = require("../../../../settings/inputs/settingPatternMatcher");
const promptSelectExecuteHandler_1 = require("../../../../uiLayers/types/select/promptSelectExecuteHandler");
const constGetter_1 = require("../../../../utils/constGetter");
/**
* The categories used for the menu folder
*/
exports.getMenuControlsFolderCategories = constGetter_1.constGetter(() => ({
cursor: createStandardCategory_1.createStandardCategory({ name: "Cursor" }),
categories: createStandardCategory_1.createStandardCategory({ name: "Categories" }),
}));
/**
* Creates a new settings folder with menu settings
* @returns The created menu settings
*/
function createMenuSettingsFolder() {
return createSettingsFolder_1.createSettingsFolder({
name: "Menu",
children: {
// Categories
maxSearchMenuSize: createNumberSetting_1.createNumberSetting({
name: "Max number of search results",
init: 200,
min: 5,
content: (react_1.default.createElement(react_1.default.Fragment, null, "The maximum number of items to show when performing a search.")),
category: exports.getMenuControlsFolderCategories().categories,
}),
maxMenuSize: createNumberSetting_1.createNumberSetting({
name: "Max number of menu items",
init: 200,
min: 5,
content: (react_1.default.createElement(react_1.default.Fragment, null, "The maximum number of items to show in a menu, excluding the search menu.")),
category: exports.getMenuControlsFolderCategories().categories,
}),
categoryOrder: createCategorySortingSetting({
name: "Category sort item",
content: react_1.default.createElement(react_1.default.Fragment, null, "What item sorting the categories in the menu is based on."),
category: exports.getMenuControlsFolderCategories().categories,
}),
showCategories: createBooleanSetting_1.createBooleanSetting({
name: "Show categories",
init: true,
content: react_1.default.createElement(react_1.default.Fragment, null, "Whether to show the category labels in the menu."),
category: exports.getMenuControlsFolderCategories().categories,
}),
// Cursor
scrollSpeed: createNumberSetting_1.createNumberSetting({
name: "Cursor scroll speed",
init: 70,
min: 0,
content: (react_1.default.createElement(react_1.default.Fragment, null, "The duration in milliseconds it takes to scroll to the newly selected item.")),
category: exports.getMenuControlsFolderCategories().cursor,
}),
scrollWrapSpeed: createNumberSetting_1.createNumberSetting({
name: "Cursor wrap scroll speed",
init: 200,
min: 0,
content: (react_1.default.createElement(react_1.default.Fragment, null, "The duration in milliseconds it takes to scroll to the newly selected item, when switching between the first and last item of the menu.")),
category: exports.getMenuControlsFolderCategories().cursor,
}),
scrollPadding: createNumberSetting_1.createNumberSetting({
name: "Cursor scroll margin",
init: 50,
min: 0,
content: (react_1.default.createElement(react_1.default.Fragment, null, "The number of pixels that must be above and below the cursor. Essentially determines at which point the menu decides to start scrolling.")),
category: exports.getMenuControlsFolderCategories().cursor,
}),
},
});
}
exports.createMenuSettingsFolder = createMenuSettingsFolder;
/**
* Creates a setting with choices for item sorting
* @param data The config
* @returns The created menu item and field
*/
function createCategorySortingSetting({ name, content, category, }) {
return createFieldMenuItem_1.createFieldMenuItem({
init: "first",
data: field => ({
name,
valueView: react_1.default.createElement(model_react_1.Loader, null, h => field.get(h).toString()),
actionBindings: [
promptSelectExecuteHandler_1.promptSelectExecuteHandler.createBinding({
field,
undoable: true,
liveUpdate: false,
options: ["first", "middle", "last"],
createOptionView: v => createStandardMenuItem_1.createStandardMenuItem({ name: v.toString() }),
}),
],
content,
tags: h => ["field", field.get(h).toString()],
resetable: true,
resetUndoable: true,
searchPattern: settingPatternMatcher_1.settingPatternMatcher,
category,
}),
});
}
exports.createCategorySortingSetting = createCategorySortingSetting;
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY3JlYXRlTWVudVNldHRpbmdzRm9sZGVyLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vc3JjL2FwcGxpY2F0aW9uL3NldHRpbmdzL2Jhc2VTZXR0aW5ncy9nZW5lcmFsL2NyZWF0ZU1lbnVTZXR0aW5nc0ZvbGRlci50c3giXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7O0FBQUEsNkNBQW1DO0FBQ25DLGtEQUEwQjtBQUUxQixnR0FBMkY7QUFDM0YsMkZBQXNGO0FBQ3RGLDRGQUF1RjtBQUN2RiwyRkFBc0Y7QUFDdEYseUZBQW9GO0FBQ3BGLDJGQUFzRjtBQUN0Riw2RkFBd0Y7QUFDeEYsNkdBQXdHO0FBRXhHLCtEQUEwRDtBQUUxRDs7R0FFRztBQUNVLFFBQUEsK0JBQStCLEdBQUcseUJBQVcsQ0FBQyxHQUFHLEVBQUUsQ0FBQyxDQUFDO0lBQzlELE1BQU0sRUFBRSwrQ0FBc0IsQ0FBQyxFQUFDLElBQUksRUFBRSxRQUFRLEVBQUMsQ0FBQztJQUNoRCxVQUFVLEVBQUUsK0NBQXNCLENBQUMsRUFBQyxJQUFJLEVBQUUsWUFBWSxFQUFDLENBQUM7Q0FDM0QsQ0FBQyxDQUFDLENBQUM7QUFFSjs7O0dBR0c7QUFDSCxTQUFnQix3QkFBd0I7SUFDcEMsT0FBTywyQ0FBb0IsQ0FBQztRQUN4QixJQUFJLEVBQUUsTUFBTTtRQUNaLFFBQVEsRUFBRTtZQUNOLGFBQWE7WUFDYixpQkFBaUIsRUFBRSx5Q0FBbUIsQ0FBQztnQkFDbkMsSUFBSSxFQUFFLDhCQUE4QjtnQkFDcEMsSUFBSSxFQUFFLEdBQUc7Z0JBQ1QsR0FBRyxFQUFFLENBQUM7Z0JBQ04sT0FBTyxFQUFFLENBQ0wsOEhBQWtFLENBQ3JFO2dCQUNELFFBQVEsRUFBRSx1Q0FBK0IsRUFBRSxDQUFDLFVBQVU7YUFDekQsQ0FBQztZQUNGLFdBQVcsRUFBRSx5Q0FBbUIsQ0FBQztnQkFDN0IsSUFBSSxFQUFFLDBCQUEwQjtnQkFDaEMsSUFBSSxFQUFFLEdBQUc7Z0JBQ1Qs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