@launchmenu/applet-dictionary
Version:
An applet to find dictionary definitions
95 lines • 7.71 kB
JavaScript
;
var __importDefault = (this && this.__importDefault) || function (mod) {
return (mod && mod.__esModule) ? mod : { "default": mod };
};
Object.defineProperty(exports, "__esModule", { value: true });
exports.settings = exports.info = exports.dictionaryIcon = void 0;
const react_1 = __importDefault(require("react"));
const core_1 = require("@launchmenu/core");
const model_react_1 = require("model-react");
const Wiktionary_1 = require("./Wiktionary");
const ILanguage_1 = require("./_types/ILanguage");
const bi_1 = require("react-icons/bi");
const dictionaryPatternMatcher_1 = require("./dictionaryPatternMatcher");
const createWordMenuItem_1 = require("./items/createWordMenuItem");
exports.dictionaryIcon = react_1.default.createElement(bi_1.BiBookAlt, null);
exports.info = {
name: "Dictionary",
description: "A dictionary applet",
version: "0.0.0",
icon: exports.dictionaryIcon,
};
exports.settings = core_1.createSettings({
version: "0.0.0",
settings: () => core_1.createSettingsFolder({
...exports.info,
children: {
language: core_1.createOptionSetting({
name: "Default language",
init: "English",
options: Object.values(ILanguage_1.languages),
createOptionView: option => core_1.createStandardMenuItem({ name: option }),
}),
},
}),
});
const resultCache = new core_1.SearchCache(createWordMenuItem_1.createWordMenuItem);
/**
* A search function to get the dictionary results
* @param query The query
* @param hook The hook to subscribe to changes
* @returns The search entry point
*/
const search = async (query, hook) => {
var _a, _b;
const pattern = dictionaryPatternMatcher_1.dictionaryPatternMatcher(query);
const search = (_a = pattern === null || pattern === void 0 ? void 0 : pattern.searchText) !== null && _a !== void 0 ? _a : query.search;
const language = ((_b = pattern === null || pattern === void 0 ? void 0 : pattern.metadata) === null || _b === void 0 ? void 0 : _b.language) ||
query.context.settings.get(exports.settings).language.get(hook);
const words = await model_react_1.getAsync(h => Wiktionary_1.Wiktionary.search(search, language, h));
const items = resultCache.getAll(words.map(word => [word, language]));
return {
patternMatch: pattern,
children: core_1.searchAction.get(items).map(
// Adjust the priorities of the searchable, TODO: find/create a neater way of assigning base priorities to items in core
searchable => core_1.adjustSearchable(searchable, {
item: prioritizedItem => {
if (prioritizedItem) {
const { item, priority } = prioritizedItem;
return {
item: item,
// Prefix the priority with [medium, low]
priority: priority && [
core_1.Priority.MEDIUM,
core_1.Priority.LOW,
...(priority instanceof Array
? priority
: [priority]),
],
};
}
},
})),
};
};
exports.default = core_1.declare({
info: exports.info,
settings: exports.settings,
search,
open({ context, onClose }) {
const searchField = new core_1.TextField();
const searchMenu = new core_1.SearchMenu(context, { search });
const searchObserver = new model_react_1.Observer(h => searchField.get(h)).listen(search => searchMenu.setSearch(search));
context.open(new core_1.UILayer(() => ({
icon: exports.dictionaryIcon,
field: searchField,
menu: searchMenu,
searchable: false,
onClose: () => {
searchObserver.destroy();
onClose();
},
}), { path: "Dictionary" }));
},
});
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi9zcmMvaW5kZXgudHN4Il0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7OztBQUFBLGtEQUEwQjtBQUMxQiwyQ0FjMEI7QUFDMUIsNkNBQTBEO0FBQzFELDZDQUF3QztBQUN4QyxrREFBd0Q7QUFDeEQsdUNBQXlDO0FBQ3pDLHlFQUFvRTtBQUNwRSxtRUFBOEQ7QUFFakQsUUFBQSxjQUFjLEdBQUcsOEJBQUMsY0FBUyxPQUFHLENBQUM7QUFDL0IsUUFBQSxJQUFJLEdBQUc7SUFDaEIsSUFBSSxFQUFFLFlBQVk7SUFDbEIsV0FBVyxFQUFFLHFCQUFxQjtJQUNsQyxPQUFPLEVBQUUsT0FBTztJQUNoQixJQUFJLEVBQUUsc0JBQWM7Q0FDZCxDQUFDO0FBRUUsUUFBQSxRQUFRLEdBQUcscUJBQWMsQ0FBQztJQUNuQyxPQUFPLEVBQUUsT0FBTztJQUNoQixRQUFRLEVBQUUsR0FBRyxFQUFFLENBQ1gsMkJBQW9CLENBQUM7UUFDakIsR0FBRyxZQUFJO1FBQ1AsUUFBUSxFQUFFO1lBQ04sUUFBUSxFQUFFLDBCQUFtQixDQUFDO2dCQUMxQixJQUFJLEVBQUUsa0JBQWtCO2dCQUN4QixJQUFJLEVBQUUsU0FBc0I7Z0JBQzVCLE9BQU8sRUFBRSxNQUFNLENBQUMsTUFBTSxDQUFDLHFCQUFTLENBQUM7Z0JBQ2pDLGdCQUFnQixFQUFFLE1BQU0sQ0FBQyxFQUFFLENBQUMsNkJBQXNCLENBQUMsRUFBQyxJQUFJLEVBQUUsTUFBTSxFQUFDLENBQUM7YUFDckUsQ0FBQztTQUNMO0tBQ0osQ0FBQztDQUNULENBQUMsQ0FBQztBQUVILE1BQU0sV0FBVyxHQUFHLElBQUksa0JBQVcsQ0FBQyx1Q0FBa0IsQ0FBQyxDQUFDO0FBRXhEOzs7OztHQUtHO0FBQ0gsTUFBTSxNQUFNLEdBQUcsS0FBSyxFQUFFLEtBQWEsRUFBRSxJQUFlLEVBQUUsRUFBRTs7SUFDcEQsTUFBTSxPQUFPLEdBQUcsbURBQXdCLENBQUMsS0FB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