import { App, ComputedRef, InjectionKey, MaybeRef, MaybeRefOrGetter, Ref } from "vue"; import { PageDataRef, PageFrontmatterRef, Router, SiteLocaleDataRef, useRoute, useRouter } from "vuepress/client"; import { BlogOptions, BulletinOptions, CopyrightFrontmatter, GitContributor, NavItemWithLink, PresetLocale, ResolvedNavItem, ResolvedSidebarItem, ThemeBlogPostItem, ThemeBlogPostList, ThemeData, ThemeFriendsFrontmatter, ThemeHomeFrontmatter, ThemeHomeHero, ThemeLocaleData, ThemeOutline, ThemePageData, ThemePageFrontmatter, ThemePostFrontmatter, ThemeSidebar, ThemeSidebarItem } from "../../shared/index.js"; import { RouteParamValueRaw } from "vue-router"; //#region src/client/composables/aside.d.ts declare function useAside(): { isAsideEnabled: ComputedRef; }; //#endregion //#region src/client/composables/blog-archives.d.ts type ShortPostItem = Pick; interface ArchiveItem { title: string; label: string; list: ShortPostItem[]; } declare function useArchives(): { archives: ComputedRef; }; //#endregion //#region src/client/composables/blog-category.d.ts interface CategoryItemWithPost { type: "post"; title: string; path: string; } interface CategoryItem { id: string; type: "category"; sort: number; title: string; items: (CategoryItem | CategoryItemWithPost)[]; } type BlogCategory = (CategoryItem | CategoryItemWithPost)[]; declare function useBlogCategory(): { categories: ComputedRef; }; //#endregion //#region src/client/composables/blog-data.d.ts type BlogDataRef = Ref; declare const blogPostData: BlogDataRef; declare function usePostList(): BlogDataRef; declare function useLocalePostList(): ComputedRef; //#endregion //#region src/client/composables/blog-extract.d.ts interface BlogExtractLink { link?: string; text?: string; total: number; } declare function useBlogExtract(): { hasBlogExtract: ComputedRef; tags: ComputedRef; archives: ComputedRef; categories: ComputedRef; }; //#endregion //#region src/client/composables/blog-post-list.d.ts interface UsePostListControlResult { postList: ComputedRef; page: Ref; totalPage: ComputedRef; pageRange: ComputedRef<{ value: number | string; more?: true; }[]>; isLastPage: ComputedRef; isFirstPage: ComputedRef; isPaginationEnabled: ComputedRef; changePage: (page: number) => void; } declare function usePostListControl(homePage: Ref): UsePostListControlResult; //#endregion //#region src/client/composables/blog-tags.d.ts type ShortPostItem$1 = Pick; interface BlogTagItem { name: string; count: string | number; className: string; } interface UseTagsResult { tags: ComputedRef; currentTag: Ref; postList: ComputedRef; handleTagClick: (tag: string) => void; } declare function useTags(): UseTagsResult; //#endregion //#region src/client/composables/bulletin.d.ts declare function useBulletin = Record>(): ComputedRef; declare function useBulletinControl = Record>(): { bulletin: ComputedRef; enableBulletin: ComputedRef; showBulletin: Ref; close: () => void; }; //#endregion //#region src/client/composables/contributors.d.ts interface useContributorsResult { mode: ComputedRef<"inline" | "block">; contributors: ComputedRef; hasContributors: ComputedRef; } declare function useContributors(): useContributorsResult; //#endregion //#region src/client/composables/copyright.d.ts interface useCopyrightResult { license: ComputedRef; author: ComputedRef>; hasCopyright: ComputedRef; creation: ComputedRef; creationText: ComputedRef; sourceUrl: ComputedRef; } declare function useCopyright(copyright: ComputedRef): useCopyrightResult; interface License { name: string; url?: string; icons?: string[]; } //#endregion //#region src/client/composables/dark-mode.d.ts type DarkModeRef = Ref; declare const darkModeSymbol: InjectionKey; declare function enableTransitions(): boolean; declare function setupDarkMode(app: App): void; /** * Inject dark mode global computed */ declare function useDarkMode(): DarkModeRef; //#endregion //#region src/client/composables/theme-data.d.ts type ThemeDataRef = Ref; type ThemeLocaleDataRef = ComputedRef; declare const themeLocaleDataSymbol: InjectionKey; declare const themeData: ThemeDataRef; declare function useThemeData(): ThemeDataRef; declare function useThemeLocaleData(): ThemeLocaleDataRef; declare function setupThemeData(app: App): void; //#endregion //#region src/client/composables/data.d.ts type FrontmatterType = "home" | "post" | "friends" | "page"; type Frontmatter = T extends "home" ? ThemeHomeFrontmatter : T extends "post" ? ThemePostFrontmatter : T extends "friends" ? ThemeFriendsFrontmatter : ThemePageFrontmatter; interface Data { theme: ThemeLocaleDataRef; page: PageDataRef; frontmatter: PageFrontmatterRef & Record>; blog: Ref; lang: Ref; site: SiteLocaleDataRef; isDark: Ref; } declare function useData(): Data; //#endregion //#region src/client/composables/edit-link.d.ts declare function useEditLink(): ComputedRef; //#endregion //#region src/client/composables/encrypt-data.d.ts type EncryptConfig = readonly [boolean, string, string, string[], Record]; interface EncryptDataRule { key: string; match: string; rules: string[]; } interface EncryptData { global: boolean; separator: string; admins: string[]; matches: string[]; ruleList: EncryptDataRule[]; } type EncryptRef = Ref; declare const encrypt: EncryptRef; declare function useEncryptData(): EncryptRef; //#endregion //#region src/client/composables/encrypt.d.ts interface Encrypt { hasPageEncrypt: Ref; isGlobalDecrypted: Ref; isPageDecrypted: Ref; hashList: Ref; } declare const EncryptSymbol: InjectionKey; declare function setupEncrypt(): void; declare function useEncrypt(): Encrypt; declare function useEncryptCompare(): { compareGlobal: (password: string) => Promise; comparePage: (password: string) => Promise; }; //#endregion //#region src/client/composables/flyout.d.ts interface UseFlyoutOptions { el: Ref; onFocus?: () => void; onBlur?: () => void; } declare const focusedElement: Ref; declare function useFlyout(options: UseFlyoutOptions): Readonly>; //#endregion //#region src/client/composables/home.d.ts interface TintPlate { r: { value: number; offset: number; }; g: { value: number; offset: number; }; b: { value: number; offset: number; }; } declare function useHomeHeroTintPlate(canvas: Ref, enable: Ref, tintPlate: Ref): void; //#endregion //#region src/client/composables/icons.d.ts type IconsData = Record; type IconsDataRef = Ref; declare const useIconsData: () => IconsDataRef; //#endregion //#region src/client/composables/internal-link.d.ts interface InternalLink { text: string; link: string; } declare function useInternalLink(): { home: ComputedRef; blog: ComputedRef; tags: ComputedRef; archive: ComputedRef; categories: ComputedRef; }; //#endregion //#region src/client/composables/langs.d.ts interface Lang { text?: string; link: string; } interface UseLangOptions { removeCurrent?: boolean; } interface UseLangResult { localeLinks: ComputedRef; currentLang: ComputedRef; } declare function useLangs({ removeCurrent }?: UseLangOptions): UseLangResult; //#endregion //#region src/client/composables/latest-updated.d.ts declare function useLastUpdated(): { datetime: Ref; isoDatetime: ComputedRef; lastUpdatedText: ComputedRef; }; //#endregion //#region src/client/composables/link.d.ts interface UseLinkResult { /** * 外部链接 */ isExternal: ComputedRef; /** * 外部链接协议 * 此项不包含 target="_blank" 的情况 */ isExternalProtocol: ComputedRef; link: ComputedRef; } declare function useLink(href: MaybeRefOrGetter, target?: MaybeRefOrGetter): UseLinkResult; //#endregion //#region src/client/composables/nav.d.ts declare function useNavbarData(): Ref; interface UseNavReturn { isScreenOpen: Ref; openScreen: () => void; closeScreen: () => void; toggleScreen: () => void; } declare function useNav(): UseNavReturn; //#endregion //#region src/client/composables/outline.d.ts interface Header { /** * The level of the header * * `1` to `6` for `

` to `

` */ level: number; /** * The title of the header */ title: string; /** * The slug of the header * * Typically the `id` attr of the header anchor */ slug: string; /** * Link of the header * * Typically using `#${slug}` as the anchor hash */ link: string; /** * The children of the header */ children: Header[]; } type MenuItem = Omit & { element: HTMLHeadElement; children?: MenuItem[]; }; declare const headersSymbol: InjectionKey>; declare function setupHeaders(): Ref; declare function useHeaders(): Ref; declare function getHeaders(range?: ThemeOutline): MenuItem[]; declare function resolveHeaders(headers: MenuItem[], range?: ThemeOutline): MenuItem[]; declare function useActiveAnchor(container: Ref, marker: Ref): void; //#endregion //#region src/client/composables/page.d.ts declare function useBlogPageData(): { isBlogPost: ComputedRef; isBlogLayout: ComputedRef; }; //#endregion //#region src/client/composables/preset-locales.d.ts interface PresetLocales { [locale: string]: PresetLocale; } declare const presetLocales: PresetLocales; declare function getPresetLocaleData(locale: string, name: keyof PresetLocale): string; //#endregion //#region src/client/composables/prev-next.d.ts interface UsePrevNextResult { prev: ComputedRef; next: ComputedRef; } declare function usePrevNext(): UsePrevNextResult; //#endregion //#region src/client/composables/route-query.d.ts type RouteQueryValueRaw = RouteParamValueRaw | string[]; interface ReactiveRouteOptions { /** * Mode to update the router query, ref is also acceptable * * @default 'replace' */ mode?: MaybeRef<"replace" | "push">; /** * Route instance, use `useRoute()` if not given */ route?: ReturnType; /** * Router instance, use `useRouter()` if not given */ router?: ReturnType; } interface ReactiveRouteOptionsWithTransform extends ReactiveRouteOptions { /** * Function to transform data before return */ transform?: (val: V) => R; } declare function useRouteQuery(name: string): Ref; declare function useRouteQuery(name: string, defaultValue?: MaybeRefOrGetter, options?: ReactiveRouteOptionsWithTransform): Ref; //#endregion //#region src/client/composables/scroll-behavior.d.ts declare function enhanceScrollBehavior(router: Router): void; //#endregion //#region src/client/composables/scroll-promise.d.ts interface ScrollPromise { wait: () => Promise | null; pending: () => void; resolve: () => void; } declare const useScrollPromise: () => ScrollPromise; //#endregion //#region src/client/composables/sidebar.d.ts type SidebarData = Record; type SidebarDataRef = Ref; type AutoDirSidebarRef = Ref; type AutoHomeDataRef = Ref>; declare function setupSidebar(): void; declare function useSidebarData(): Ref; /** * Get the `Sidebar` from sidebar option. This method will ensure to get correct * sidebar config from `MultiSideBarConfig` with various path combinations such * as matching `guide/` and `/guide/`. If no matching config was found, it will * return empty array. */ declare function getSidebar(routePath: string, routeLocal: string): ResolvedSidebarItem[]; /** * Get or generate sidebar group from the given sidebar items. */ declare function getSidebarGroups(sidebar: ResolvedSidebarItem[]): ResolvedSidebarItem[]; /** * Check if the given sidebar item contains any active link. */ declare function hasActiveLink(path: string, items: ResolvedSidebarItem | ResolvedSidebarItem[]): boolean; interface SidebarControl { collapsed: Ref; collapsible: ComputedRef; isLink: ComputedRef; isActiveLink: Ref; hasActiveLink: ComputedRef; hasChildren: ComputedRef; toggle: () => void; } interface UseSidebarReturn { isOpen: Ref; sidebar: Ref; sidebarKey: Ref; sidebarGroups: Ref; hasSidebar: ComputedRef; hasAside: ComputedRef; leftAside: ComputedRef; isSidebarEnabled: ComputedRef; open: () => void; close: () => void; toggle: () => void; } declare function useSidebar(): UseSidebarReturn; /** * a11y: cache the element that opened the Sidebar (the menu button) then * focus that button again when Menu is closed with Escape key. */ declare function useCloseSidebarOnEscape(isOpen: Ref, close: () => void): void; declare function useSidebarControl(item: ComputedRef): SidebarControl; declare function getSidebarFirstLink(sidebar: ResolvedSidebarItem[]): string; //#endregion //#region src/client/composables/tag-colors.d.ts type TagColors = Record; type TagColorsRef = Ref; declare const useTagColors: () => TagColorsRef; //#endregion //#region src/client/composables/watermark.d.ts declare function setupWatermark(): void; //#endregion export { AutoDirSidebarRef, AutoHomeDataRef, BlogCategory, BlogDataRef, CategoryItem, CategoryItemWithPost, Data, Encrypt, EncryptConfig, EncryptData, EncryptDataRule, EncryptRef, EncryptSymbol, Header, InternalLink, MenuItem, ReactiveRouteOptions, ReactiveRouteOptionsWithTransform, RouteQueryValueRaw, ScrollPromise, ShortPostItem, SidebarControl, SidebarData, SidebarDataRef, TagColors, TagColorsRef, ThemeDataRef, ThemeLocaleDataRef, TintPlate, UseNavReturn, UseSidebarReturn, blogPostData, darkModeSymbol, enableTransitions, encrypt, enhanceScrollBehavior, focusedElement, getHeaders, getPresetLocaleData, getSidebar, getSidebarFirstLink, getSidebarGroups, hasActiveLink, headersSymbol, presetLocales, resolveHeaders, setupDarkMode, setupEncrypt, setupHeaders, setupSidebar, setupThemeData, setupWatermark, themeData, themeLocaleDataSymbol, useActiveAnchor, useArchives, useAside, useBlogCategory, useBlogExtract, useBlogPageData, useBulletin, useBulletinControl, useCloseSidebarOnEscape, useContributors, useCopyright, useDarkMode, useData, useEditLink, useEncrypt, useEncryptCompare, useEncryptData, useFlyout, useHeaders, useHomeHeroTintPlate, useIconsData, useInternalLink, useLangs, useLastUpdated, useLink, useLocalePostList, useNav, useNavbarData, usePostList, usePostListControl, usePrevNext, useRouteQuery, useScrollPromise, useSidebar, useSidebarControl, useSidebarData, useTagColors, useTags, useThemeData, useThemeLocaleData };