@openfga/frontend-utils
Version:
Exposes helpful utilities for building authoring experiences of OpenFGA Models.
39 lines (38 loc) • 1.24 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", { value: true });
exports.providerHover = void 0;
const concepts_1 = require("../../../documentation/concepts");
function getDocumentation(keyword, documentationMap) {
const definition = documentationMap[keyword];
if (!definition) {
return undefined;
}
const { link, summary } = definition;
const documentation = [
{ value: "**Documentation**" },
{
value: summary,
},
];
if (link) {
documentation.push({ value: `[Learn more](${link})` });
}
return documentation;
}
const providerHover = (monaco, documentationMap = concepts_1.defaultDocumentationMap) => (model, position) => {
// eslint-disable-next-line @typescript-eslint/no-non-null-assertion
const wordMeta = model.getWordAtPosition(position);
if (!wordMeta) {
return;
}
const { startColumn, endColumn, word } = wordMeta;
const contents = getDocumentation(word, documentationMap);
if (!contents) {
return;
}
return {
range: new monaco.Range(position.lineNumber, startColumn, position.lineNumber, endColumn),
contents,
};
};
exports.providerHover = providerHover;