UNPKG

@launchmenu/applet-dictionary

Version:
95 lines 7.71 kB
"use strict"; 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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