Templates 2.0 (#636)

Templates 2.0 and a whole bunch of other refactoring
This commit is contained in:
Zef Hemel
2024-01-20 19:16:07 +01:00
committed by GitHub
parent 0a6a0016a2
commit f30b1d3418
171 changed files with 2038 additions and 1628 deletions
+8 -2
View File
@@ -17,8 +17,14 @@ export async function pageComplete(completeEvent: CompleteEvent) {
/render\s+\[\[|page:\s*["']\[\[/.test(
completeEvent.linePrefix,
);
const tagToQuery = isInTemplateContext ? "template" : "page";
let allPages: PageMeta[] = await queryObjects<PageMeta>(tagToQuery, {}, 5);
// When in a template context, we only want to complete template pages
// When outside of a template context, we want to complete all pages except template pages
let allPages: PageMeta[] = isInTemplateContext
? await queryObjects<PageMeta>("template", {}, 5)
: await queryObjects<PageMeta>("page", {
filter: ["!=", ["attr", "tags"], ["string", "template"]],
}, 5);
const prefix = match[1];
if (prefix.startsWith("!")) {
// Federation prefix, let's first see if we're matching anything from federation that is locally synced
+26
View File
@@ -15,6 +15,27 @@ functions:
command:
name: "Editor: Toggle Dark Mode"
openCommandPalette:
path: editor.ts:openCommandPalette
command:
name: "Open Command Palette"
key: "Ctrl-/"
mac: "Cmd-/"
openPageNavigator:
path: editor.ts:openPageNavigator
command:
name: "Open Page Navigator"
key: "Ctrl-k"
mac: "Cmd-k"
openTemplateNavigator:
path: editor.ts:openTemplateNavigator
command:
name: "Open Template Navigator"
key: "Ctrl-Shift-t"
mac: "Cmd-Shift-t"
# Page operations
deletePage:
path: "./page.ts:deletePage"
@@ -35,6 +56,11 @@ functions:
events:
- editor:complete
reloadSettingsAndCommands:
path: editor.ts:reloadSettingsAndCommands
command:
name: "System: Reload Settings and Commands"
# Navigation
linkNavigate:
path: "./navigate.ts:linkNavigate"
+17
View File
@@ -10,6 +10,18 @@ export async function setEditorMode() {
}
}
export function openCommandPalette() {
return editor.openCommandPalette();
}
export async function openPageNavigator() {
await editor.openPageNavigator("page");
}
export async function openTemplateNavigator() {
await editor.openPageNavigator("template");
}
export async function toggleDarkMode() {
let darkMode = await clientStore.get("darkMode");
darkMode = !darkMode;
@@ -34,3 +46,8 @@ export async function moveToPosCommand() {
export async function customFlashMessage(_def: any, message: string) {
await editor.flashNotification(message);
}
export async function reloadSettingsAndCommands() {
await editor.reloadSettingsAndCommands();
await editor.flashNotification("Reloaded settings and commands");
}
+20 -9
View File
@@ -14,15 +14,20 @@ export async function deletePage() {
await space.deletePage(pageName);
}
export async function copyPage(_def: any, predefinedNewName: string) {
const oldName = await editor.getCurrentPage();
let suggestedName = predefinedNewName || oldName;
export async function copyPage(
_def: any,
sourcePage?: string,
toName?: string,
) {
const currentPage = await editor.getCurrentPage();
const fromName = sourcePage || currentPage;
let suggestedName = toName || fromName;
if (isFederationPath(oldName)) {
const pieces = oldName.split("/");
if (isFederationPath(fromName)) {
const pieces = fromName.split("/");
suggestedName = pieces.slice(1).join("/");
}
const newName = await editor.prompt(`Copy to new page:`, suggestedName);
const newName = await editor.prompt(`Copy to page:`, suggestedName);
if (!newName) {
return;
@@ -44,11 +49,17 @@ export async function copyPage(_def: any, predefinedNewName: string) {
}
}
const text = await editor.getText();
const text = await space.readPage(fromName);
console.log("Writing new page to space");
await space.writePage(newName, text);
console.log("Navigating to new page");
await editor.navigate(newName);
if (currentPage === fromName) {
// If we're copying the current page, navigate there
console.log("Navigating to new page");
await editor.navigate(newName);
} else {
// Otherwise just notify of success
await editor.flashNotification("Page copied successfully");
}
}