import type { ActionButton, EmojiConfig, Shortcut, SmartQuotesConfig, } from "./client.ts"; export interface ConfigContainer { config: Config; loadConfig(): Promise; } export type ObjectDecorator = { // The expression to match against the object where: string; // The dynamic attributes to add to the object attributes: DynamicAttributeDefinitionConfig; }; export interface DynamicAttributeDefinitionConfig { // Encodes a QueryExpression as a string [key: string]: string | DynamicAttributeDefinitionConfig; } export type LibraryDef = { /** * @deprecated Use `import` instead */ source?: string; import: string; exclude?: string[]; }; export type Config = { indexPage: string; shortcuts?: Shortcut[]; // DEPRECATED: Use smartQuotes instead useSmartQuotes?: boolean; maximumAttachmentSize?: number; libraries?: LibraryDef[]; // Open the last page that was open when the app was closed pwaOpenLastPage?: boolean; // UI visuals hideEditButton?: boolean; hideSyncButton?: boolean; actionButtons: ActionButton[]; objectDecorators?: ObjectDecorator[]; // Format: compatible with docker ignore spaceIgnore?: string; emoji?: EmojiConfig; autoCloseBrackets: string; smartQuotes?: SmartQuotesConfig; schema: SchemaConfig; // DEPRECATED: Use space styles instead customStyles?: string | string[]; // NOTE: Bit niche, maybe delete at some point? defaultLinkStyle?: string; } & Record; type SchemaConfig = { tag: Record; // any = JSONSchema config: Record; // any = JSONSchema }; export const defaultConfig: Config = { indexPage: "index", hideSyncButton: false, maximumAttachmentSize: 10, // MiB defaultLinkStyle: "wikilink", // wikilink [[]] or markdown []() actionButtons: [], // Actually defaults to defaultActionButtons autoCloseBrackets: "([{`", schema: { config: { type: "object", properties: {}, additionalProperties: true, }, tag: {}, }, }; export const defaultActionButtons: ActionButton[] = [ { icon: "Home", description: "Go to the index page", command: "Navigate: Home", }, { icon: "Book", description: `Open page`, command: "Navigate: Page Picker", }, { icon: "Terminal", description: `Run command`, command: "Open Command Palette", }, ];