55 lines
1.4 KiB
TypeScript
55 lines
1.4 KiB
TypeScript
import { listEvents } from "@plugos/plugos-syscall/event";
|
|
import { matchBefore } from "@silverbulletmd/plugos-silverbullet-syscall/editor";
|
|
import { listPages } from "@silverbulletmd/plugos-silverbullet-syscall/space";
|
|
|
|
export async function queryComplete() {
|
|
let prefix = await matchBefore("#query [\\w\\-_]*");
|
|
|
|
if (prefix) {
|
|
let allEvents = await listEvents();
|
|
// console.log("All events", allEvents);
|
|
|
|
return {
|
|
from: prefix.from + "#query ".length,
|
|
options: allEvents
|
|
.filter((eventName) => eventName.startsWith("query:"))
|
|
.map((source) => ({
|
|
label: source.substring("query:".length),
|
|
})),
|
|
};
|
|
}
|
|
|
|
prefix = await matchBefore('render "[^"]*');
|
|
if (prefix) {
|
|
let allPages = await listPages();
|
|
return {
|
|
from: prefix.from + 'render "'.length,
|
|
options: allPages.map((pageMeta) => ({
|
|
label: pageMeta.name,
|
|
})),
|
|
};
|
|
}
|
|
|
|
prefix = await matchBefore('#template "[^"]*');
|
|
if (prefix) {
|
|
let allPages = await listPages();
|
|
return {
|
|
from: prefix.from + '#template "'.length,
|
|
options: allPages.map((pageMeta) => ({
|
|
label: pageMeta.name,
|
|
})),
|
|
};
|
|
}
|
|
|
|
prefix = await matchBefore('#include "[^"]*');
|
|
if (prefix) {
|
|
let allPages = await listPages();
|
|
return {
|
|
from: prefix.from + '#include "'.length,
|
|
options: allPages.map((pageMeta) => ({
|
|
label: pageMeta.name,
|
|
})),
|
|
};
|
|
}
|
|
}
|