Add glossary hover presentation
This commit is contained in:
Vendored
+2
@@ -22,5 +22,7 @@ export declare class InkEngine {
|
||||
private getChoiceTags;
|
||||
private extractChoicePreviewTags;
|
||||
private resolveInkPath;
|
||||
private findNamedInkChild;
|
||||
private getInkContainerMap;
|
||||
private isNamedContainerMap;
|
||||
}
|
||||
|
||||
Vendored
+31
-4
@@ -236,12 +236,12 @@ class InkEngine {
|
||||
for (const part of parts) {
|
||||
if (!node)
|
||||
return null;
|
||||
if (Array.isArray(node) && node.length > 0 && this.isNamedContainerMap(node[node.length - 1]) && part in node[node.length - 1]) {
|
||||
node = node[node.length - 1][part];
|
||||
}
|
||||
else if (Array.isArray(node) && /^\d+$/.test(part)) {
|
||||
if (Array.isArray(node) && /^\d+$/.test(part)) {
|
||||
node = node[Number(part)];
|
||||
}
|
||||
else if (Array.isArray(node)) {
|
||||
node = this.findNamedInkChild(node, part);
|
||||
}
|
||||
else if (this.isNamedContainerMap(node) && part in node) {
|
||||
node = node[part];
|
||||
}
|
||||
@@ -251,6 +251,33 @@ class InkEngine {
|
||||
}
|
||||
return node;
|
||||
}
|
||||
findNamedInkChild(container, part) {
|
||||
for (let index = container.length - 1; index >= 0; index -= 1) {
|
||||
const item = container[index];
|
||||
if (this.isNamedContainerMap(item) && part in item) {
|
||||
return item[part];
|
||||
}
|
||||
if (!Array.isArray(item))
|
||||
continue;
|
||||
const namedMap = this.getInkContainerMap(item);
|
||||
if (namedMap?.['#n'] === part) {
|
||||
return item;
|
||||
}
|
||||
if (namedMap && part in namedMap) {
|
||||
return namedMap[part];
|
||||
}
|
||||
}
|
||||
return null;
|
||||
}
|
||||
getInkContainerMap(container) {
|
||||
for (let index = container.length - 1; index >= 0; index -= 1) {
|
||||
const item = container[index];
|
||||
if (this.isNamedContainerMap(item)) {
|
||||
return item;
|
||||
}
|
||||
}
|
||||
return null;
|
||||
}
|
||||
isNamedContainerMap(value) {
|
||||
return Boolean(value) && typeof value === 'object' && !Array.isArray(value);
|
||||
}
|
||||
|
||||
Vendored
+1
-1
File diff suppressed because one or more lines are too long
Reference in New Issue
Block a user