@logseq/libs
    Preparing search index...

    Interface IAppProxy

    App level APIs

    interface IAppProxy {
        _installPluginHook: (pid: string, hook: string, opts?: any) => void;
        _uninstallPluginHook: (pid: string, hookOrAll: string | boolean) => void;
        checkCurrentIsDbGraph: () => Promise<Boolean>;
        clearRightSidebarBlocks: (opts?: { close: boolean }) => void;
        createTemplate: (
            target: string,
            name: string,
            opts?: { overwrite: boolean },
        ) => Promise<any>;
        execGitCommand: (args: string[]) => Promise<string>;
        existTemplate: (name: string) => Promise<Boolean>;
        getCurrentGraph: () => Promise<AppGraphInfo>;
        getCurrentGraphConfigs: (...keys: string[]) => Promise<any>;
        getCurrentGraphFavorites: () => Promise<(string | PageEntity)[]>;
        getCurrentGraphRecent: () => Promise<(string | PageEntity)[]>;
        getCurrentGraphTemplates: () => Promise<Record<string, BlockEntity>>;
        getExternalPlugin: (pid: string) => Promise<{}>;
        getInfo: (key?: keyof AppInfo) => Promise<any>;
        getStateFromStore: <T = any>(path: string | string[]) => Promise<T>;
        getTemplate: (name: string) => Promise<BlockEntity>;
        getUserConfigs: () => Promise<AppUserConfigs>;
        getUserInfo: () => Promise<AppUserInfo>;
        insertTemplate: (target: string, name: string) => Promise<any>;
        invokeExternalCommand: (
            type: ExternalCommandType,
            ...args: any[],
        ) => Promise<void>;
        invokeExternalPlugin: (type: string, ...args: any[]) => Promise<unknown>;
        onAfterCommandInvoked: (
            condition: string,
            callback: (e: IHookEvent) => void,
        ) => IUserOffHook;
        onBeforeCommandInvoked: (
            condition: string,
            callback: (e: IHookEvent) => void,
        ) => IUserOffHook;
        onBlockRendererSlotted: IUserConditionSlotHook<
            string,
            Omit<BlockEntity, "children" | "page">,
        >;
        onCurrentGraphChanged: IUserHook;
        onGraphAfterIndexed: IUserHook<{ repo: string }>;
        onMacroRendererSlotted: IUserSlotHook<
            { payload: { arguments: string[]; uuid: string; [key: string]: any } },
        >;
        onPageHeadActionsSlotted: IUserSlotHook;
        onRouteChanged: IUserHook<{ path: string; template: string }>;
        onSidebarVisibleChanged: IUserHook<{ visible: boolean }>;
        onThemeChanged: IUserHook<
            Partial<{ mode: string; name: string; pid: string; url: string }>,
        >;
        onThemeModeChanged: IUserHook<{ mode: "light" | "dark" }>;
        onTodayJournalCreated: IUserHook<{ title: string }>;
        openExternalLink: (url: string) => Promise<void>;
        pushState: (
            k: string,
            params?: Record<string, any>,
            query?: Record<string, any>,
        ) => void;
        quit: () => Promise<void>;
        registerCommand: (
            type: string,
            opts: {
                desc?: string;
                key: string;
                keybinding?: SimpleCommandKeybinding;
                label: string;
                palette?: boolean;
            },
            action: SimpleCommandCallback,
        ) => void;
        registerCommandPalette: (
            opts: {
                key: string;
                keybinding?: SimpleCommandKeybinding;
                label: string;
            },
            action: SimpleCommandCallback,
        ) => void;
        registerCommandShortcut: (
            keybinding: string | SimpleCommandKeybinding,
            action: SimpleCommandCallback,
            opts?: Partial<
                {
                    desc: string;
                    extras: Record<string, any>;
                    key: string;
                    label: string;
                },
            >,
        ) => void;
        registerPageMenuItem: (
            tag: string,
            action: (e: IHookEvent & { page: string }) => void,
        ) => void;
        registerUIItem: (
            type: "toolbar" | "pagebar",
            opts: { key: string; template: string },
        ) => void;
        relaunch: () => Promise<void>;
        removeTemplate: (name: string) => Promise<any>;
        replaceState: (
            k: string,
            params?: Record<string, any>,
            query?: Record<string, any>,
        ) => void;
        setCurrentGraphConfigs: (configs: {}) => Promise<void>;
        setFullScreen: (flag: boolean | "toggle") => void;
        setLeftSidebarVisible: (flag: boolean | "toggle") => void;
        setRightSidebarVisible: (flag: boolean | "toggle") => void;
        setStateFromStore: (path: string | string[], value: any) => Promise<void>;
        setZoomFactor: (factor: number) => void;
        registerSearchService<T extends IPluginSearchServiceHooks>(s: T): void;
    }
    Index

    Properties

    _installPluginHook: (pid: string, hook: string, opts?: any) => void
    _uninstallPluginHook: (pid: string, hookOrAll: string | boolean) => void
    checkCurrentIsDbGraph: () => Promise<Boolean>
    clearRightSidebarBlocks: (opts?: { close: boolean }) => void
    createTemplate: (
        target: string,
        name: string,
        opts?: { overwrite: boolean },
    ) => Promise<any>
    execGitCommand: (args: string[]) => Promise<string>

    Using logseq.Git.execCommand

    existTemplate: (name: string) => Promise<Boolean>
    getCurrentGraph: () => Promise<AppGraphInfo>
    getCurrentGraphConfigs: (...keys: string[]) => Promise<any>
    getCurrentGraphFavorites: () => Promise<(string | PageEntity)[]>
    getCurrentGraphRecent: () => Promise<(string | PageEntity)[]>
    getCurrentGraphTemplates: () => Promise<Record<string, BlockEntity>>
    getExternalPlugin: (pid: string) => Promise<{}>

    0.0.13

    getInfo: (key?: keyof AppInfo) => Promise<any>

    0.0.4

    getStateFromStore: <T = any>(path: string | string[]) => Promise<T>
    const isDocMode = await logseq.App.getStateFromStore('document/mode?')
    
    getTemplate: (name: string) => Promise<BlockEntity>
    getUserConfigs: () => Promise<AppUserConfigs>
    getUserInfo: () => Promise<AppUserInfo>
    insertTemplate: (target: string, name: string) => Promise<any>
    invokeExternalCommand: (
        type: ExternalCommandType,
        ...args: any[],
    ) => Promise<void>

    Supported all registered palette commands

    invokeExternalPlugin: (type: string, ...args: any[]) => Promise<unknown>

    Call external plugin command provided by models or registered commands

    Type Declaration

      • (type: string, ...args: any[]): Promise<unknown>
      • Parameters

        • type: string

          xx-plugin-id.commands.xx-key, xx-plugin-id.models.xx-key

        • ...args: any[]

        Returns Promise<unknown>

    0.0.13

    onAfterCommandInvoked: (
        condition: string,
        callback: (e: IHookEvent) => void,
    ) => IUserOffHook
    onBeforeCommandInvoked: (
        condition: string,
        callback: (e: IHookEvent) => void,
    ) => IUserOffHook
    onBlockRendererSlotted: IUserConditionSlotHook<
        string,
        Omit<BlockEntity, "children" | "page">,
    >

    provide ui slot to specific block with UUID

    0.0.13

    onCurrentGraphChanged: IUserHook
    onGraphAfterIndexed: IUserHook<{ repo: string }>
    onMacroRendererSlotted: IUserSlotHook<
        { payload: { arguments: string[]; uuid: string; [key: string]: any } },
    >

    provide ui slot to block renderer macro for {{renderer arg1, arg2}}

    https://github.com/logseq/logseq-plugin-samples/tree/master/logseq-pomodoro-timer
    
    // e.g. {{renderer :h1, hello world, green}}

    logseq.App.onMacroRendererSlotted(({ slot, payload: { arguments } }) => {
    let [type, text, color] = arguments
    if (type !== ':h1') return
    logseq.provideUI({
    key: 'h1-playground',
    slot, template: `
    <h2 style="color: ${color || 'red'}">${text}</h2>
    `,
    })
    })
    onPageHeadActionsSlotted: IUserSlotHook
    onRouteChanged: IUserHook<{ path: string; template: string }>
    onSidebarVisibleChanged: IUserHook<{ visible: boolean }>
    onThemeChanged: IUserHook<
        Partial<{ mode: string; name: string; pid: string; url: string }>,
    >
    onThemeModeChanged: IUserHook<{ mode: "light" | "dark" }>
    onTodayJournalCreated: IUserHook<{ title: string }>
    openExternalLink: (url: string) => Promise<void>
    pushState: (
        k: string,
        params?: Record<string, any>,
        query?: Record<string, any>,
    ) => void
    quit: () => Promise<void>
    registerCommand: (
        type: string,
        opts: {
            desc?: string;
            key: string;
            keybinding?: SimpleCommandKeybinding;
            label: string;
            palette?: boolean;
        },
        action: SimpleCommandCallback,
    ) => void
    registerCommandPalette: (
        opts: {
            key: string;
            keybinding?: SimpleCommandKeybinding;
            label: string;
        },
        action: SimpleCommandCallback,
    ) => void
    registerCommandShortcut: (
        keybinding: string | SimpleCommandKeybinding,
        action: SimpleCommandCallback,
        opts?: Partial<
            {
                desc: string;
                extras: Record<string, any>;
                key: string;
                label: string;
            },
        >,
    ) => void

    Supported key names

    registerPageMenuItem: (
        tag: string,
        action: (e: IHookEvent & { page: string }) => void,
    ) => void
    registerUIItem: (
        type: "toolbar" | "pagebar",
        opts: { key: string; template: string },
    ) => void
    relaunch: () => Promise<void>
    removeTemplate: (name: string) => Promise<any>
    replaceState: (
        k: string,
        params?: Record<string, any>,
        query?: Record<string, any>,
    ) => void
    setCurrentGraphConfigs: (configs: {}) => Promise<void>
    setFullScreen: (flag: boolean | "toggle") => void
    setLeftSidebarVisible: (flag: boolean | "toggle") => void
    setRightSidebarVisible: (flag: boolean | "toggle") => void
    setStateFromStore: (path: string | string[], value: any) => Promise<void>
    setZoomFactor: (factor: number) => void

    Methods