@launchmenu/applet-notes
Version:
An applet to make short notes
96 lines (93 loc) • 6.27 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.regexTokenizer = exports.setSearchPatternAction = void 0;
const core_1 = require("@launchmenu/core");
const react_1 = __importDefault(require("react"));
/**
* An action to edit a search pattern
*/
exports.setSearchPatternAction = core_1.createContextAction({
name: "Set search pattern",
contextItem: {
icon: "edit",
name: "Set search pattern",
priority: [core_1.Priority.MEDIUM, core_1.Priority.MEDIUM - 7],
content: (react_1.default.createElement(core_1.ReactMarkdown, null, `
Edits a search pattern, which can be 1 of three things:
- Disabled: Enter only white spaces
- A prefix: Enter normal text
- Regex: Enter a regular expression between \`/\` characters. E.g.
\`\`\`regex
/^word\\s*:/
\`\`\`
When regex is used, any non match text will be used as the search text. In addition capture groups prefixed with \`t_\` in order to also be considered text. E.g. a pattern to only match words prefixed with 'word':
\`\`\`regex
/^word\\s*:\\s*(?<t_smth>\w+)$/
\`\`\`
or prefixed with \`c_\` followed by a css color for highlighting. E.g.:
\`\`\`regex
/^(?<c_f0f>test)\s*:/
\`\`\`
`)),
},
core: (fields) => {
const getExecuteBindings = () => fields.map(field => core_1.promptInputExecuteHandler.createBinding({
field,
highlighter: exports.regexTokenizer,
}));
return {
// Return the bindings for executing the action in the menu
actionBindings: getExecuteBindings,
// As well as some result for programmatic access for extension
result: {
execute: ({ context }) => core_1.executeAction.execute(context, [
{ actionBindings: getExecuteBindings() },
]),
getInputBindings: getExecuteBindings,
},
};
},
});
/**
* The regex tokenizer, but only if started with '/'
* multigroup lexer: https://github.com/SAP/chevrotain/blob/master/examples/lexer/multi_mode_lexer/multi_mode_lexer.js
*/
exports.regexTokenizer = new core_1.HighlightLexer({
defaultMode: "unknown",
modes: {
unknown: core_1.createHighlightTokens({
regexStart: {
pattern: /\//,
tags: [core_1.highlightTags.operator],
push_mode: "regex",
},
textStart: { pattern: /./, tags: [], push_mode: "text" },
}).tokenList,
// The regex matcher
regex: core_1.createHighlightTokens({
group: {
pattern: /\(|\)/,
tags: [core_1.highlightTags.bracket, core_1.highlightTags.keyword],
},
bracket: {
pattern: /\<|\>|\[|\]|\{|\}/,
tags: [core_1.highlightTags.bracket, core_1.highlightTags.literal],
},
operator: {
pattern: /\*|\+|\?|\||\!|\$|\^|\//,
tags: [core_1.highlightTags.operator],
},
charType: { pattern: /\\\w/, tags: ["charType"] },
words: { pattern: /./, tags: ["word"] },
}).tokenList,
// The literal matcher
text: core_1.createHighlightTokens({
text: { pattern: /./, tags: [] },
}).tokenList,
},
});
// TODO: create a regex grammar in order to highligh syntax errors
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2V0U2VhcmNoUGF0dGVybkFjdGlvbi5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3NyYy9pbnRlcmZhY2UvY2F0ZWdvcmllcy9hY3Rpb25IYW5kbGVycy9zZXRTZWFyY2hQYXR0ZXJuQWN0aW9uLnRzeCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7Ozs7QUFBQSwyQ0FXMEI7QUFDMUIsa0RBQTBCO0FBRTFCOztHQUVHO0FBQ1UsUUFBQSxzQkFBc0IsR0FBRywwQkFBbUIsQ0FBQztJQUN0RCxJQUFJLEVBQUUsb0JBQW9CO0lBQzFCLFdBQVcsRUFBRTtRQUNULElBQUksRUFBRSxNQUFNO1FBQ1osSUFBSSxFQUFFLG9CQUFvQjtRQUMxQixRQUFRLEVBQUUsQ0FBQyxlQUFRLENBQUMsTUFBTSxFQUFFLGVBQVEsQ0FBQyxNQUFNLEdBQUcsQ0FBQyxDQUFDO1FBQ2hELE9BQU8sRUFBRSxDQUNMLDhCQUFDLG9CQUFhLFFBQUU7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7YUFtQmYsQ0FBaUIsQ0FDckI7S0FDSjtJQUNELElBQUksRUFBRSxDQUFDLE1BQXdCLEVBQUUsRUFBRTtRQUMvQixNQUFNLGtCQUFrQixHQUFHLEdBQUcsRUFBRSxDQUM1QixNQUFNLENBQUMsR0FBRyxDQUFDLEtBQUssQ0FBQyxFQUFFLENBQ2YsZ0NBQXlCLENBQUMsYUFBYSxDQUFDO1lBQ3BDLEtBQUs7WUFDTCxXQUFXLEVBQUUsc0JBQWM7U0FDOUIsQ0FBQyxDQUNMLENBQUM7UUFFTixPQUFPO1lBQ0gsMkRBQTJEO1lBQzNELGNBQWMsRUFBRSxrQkFBa0I7WUFDbEMsK0RBQStEO1lBQy9ELE1BQU0sRUFBRTtnQkFDSixPQUFPLEVBQUUsQ0FBQyxFQUFDLE9BQU8sRUFBYyxFQUFFLEVBQUUsQ0FDaEMsb0JBQWEsQ0FBQyxPQUFPLENBQUMsT0FBTyxFQUFFO29CQUMzQixFQUFDLGNBQWMsRUFBRSxrQkFBa0IsRUFBRSxFQUFDO2lCQUN6QyxDQUFDO2dCQUNOLGdCQUFnQixFQUFFLGtCQUFrQjthQUN2QztTQUNKLENBQUM7SUFDTixDQUFDO0NBQ0osQ0FBQyxDQUFDO0FBRUg7OztHQUdHO0FBQ1UsUUFBQSxjQUFjLEdBQUcsSUFBSSxxQkFBYyxDQUFDO0lBQzdDLFdBQVcsRUFBRSxTQUFTO0lBQ3RCLEtBQUssRUFBRTtRQUNILE9BQU8sRUFBRSw0QkFBcUIsQ0FBQztZQUMzQixVQUFVLEVBQUU7Z0JBQ1IsT0FBTyxFQUFFLElBQUk7Z0JBQ2IsSUFBSSxFQUFFLENBQUMsb0JBQWEsQ0FBQyxRQUFRLENBQUM7Z0JBQzlCLFNBQVMsRUFBRSxPQUFPO2FBQ3JCO1lBQ0QsU0FBUyxFQUFFLEVBQUMsT0FBTyxFQUFFLEdBQUcsRUFBRSxJQUFJLEVBQUUsRUFBRSxFQUFFLFNBQVMsRUFBRSxNQUFNLEVBQUM7U0FDekQsQ0FBQyxDQUFDLFNBQVM7UUFDWixvQkFBb0I7UUFDcEIsS0FBSyxFQUFFLDRCQUFxQixDQUFDO1lBQ3pCLEtBQUssRUFBRTtnQkFDSCxPQUFPLEVBQUUsT0FBTztnQkFDaEIsSUFBSSxFQUFFLENBQUMsb0JBQWEsQ0FBQyxPQUFPLEVBQUUsb0JBQWEsQ0FBQyxPQUFPLENBQUM7YUFDdkQ7WUFDRCxPQUFPLEVBQUU7Z0JBQ0wsT0FBTyxFQUFFLG1CQUFtQjtnQkFDNUIsSUFBSSxFQUFFLENBQUMsb0JBQWEsQ0FBQyxPQUFPLEVBQUUsb0JBQWEsQ0FBQyxPQUFPLENBQUM7YUFDdkQ7WUFDRCxRQUFRLEVBQUU7Z0JBQ04sT0FBTyxFQUFFLHlCQUF5QjtnQkFDbEMsSUFBSSxFQUFFLENBQUMsb0JBQWEsQ0FBQyxRQUFRLENBQUM7YUFDakM7WUFDRCxRQUFRLEVBQUUsRUFBQyxPQUFPLEVBQUUsTUFBTSxFQUFFLElBQUksRUFBRSxDQUFDLFVBQVUsQ0FBQyxFQUFDO1lBQy9DLEtBQUssRUFBRSxFQUFDLE9BQU8sRUFBRSxHQUFHLEVBQUUsSUFBSSxFQUFFLENBQUMsTUFBTSxDQUFDLEVBQUM7U0FDeEMsQ0FBQyxDQUFDLFNBQVM7UUFDWixzQkFBc0I7UUFDdEIsSUFBSSxFQUFFLDRCQUFxQixDQUFDO1lBQ3hCLElBQUksRUFBRSxFQUFDLE9BQU8sRUFBRSxHQUFHLEVBQUUsSUFBSSxFQUFFLEVBQUUsRUFBQztTQUNqQyxDQUFDLENBQUMsU0FBUztLQUNmO0NBQ0osQ0FBQyxDQUFDO0FBRUgsa0VBQWtFIn0=