From 08b9e17a93cd56529a9cd7cbc73b64505e99a544 Mon Sep 17 00:00:00 2001 From: Evan You Date: Sat, 28 Nov 2020 13:33:27 -0500 Subject: [PATCH] refactor: code split optional features + improve typing --- src/client/app/exports.ts | 11 +- src/client/shim.d.ts | 10 ++ src/client/theme-default/Layout.vue | 77 +++++--- .../components/AlgoliaSearchBox.vue | 165 ++++++++++-------- src/client/theme-default/composables/nav.ts | 3 +- src/client/theme-default/composables/url.ts | 3 +- src/client/theme-default/config.ts | 36 ++-- src/client/tsconfig.json | 1 - tsconfig.json | 5 +- 9 files changed, 175 insertions(+), 136 deletions(-) diff --git a/src/client/app/exports.ts b/src/client/app/exports.ts index 2776d145..f806e333 100644 --- a/src/client/app/exports.ts +++ b/src/client/app/exports.ts @@ -1,26 +1,27 @@ // exports in this file are exposed to themes and md files via 'vitepress' // so the user can do `import { useRoute, useSiteData } from 'vitepress'` -import { ComponentOptions } from 'vue' - // generic types export type { SiteData, PageData } from '/@types/shared' +export type { Router, Route } from './router' // theme types export * from './theme' // composables -export { useRouter, useRoute, Router, Route } from './router' +export { useRouter, useRoute } from './router' export { useSiteData } from './composables/siteData' export { useSiteDataByRoute } from './composables/siteDataByRoute' export { usePageData } from './composables/pageData' export { useFrontmatter } from './composables/frontmatter' +// utilities +export { inBrowser, joinPath } from './utils' + // components export { Content } from './components/Content' +import { ComponentOptions } from 'vue' import _Debug from './components/Debug.vue' - const Debug = _Debug as ComponentOptions - export { Debug } diff --git a/src/client/shim.d.ts b/src/client/shim.d.ts index 0768c22d..4c240a37 100644 --- a/src/client/shim.d.ts +++ b/src/client/shim.d.ts @@ -10,3 +10,13 @@ declare module '@siteData' { const data: string export default data } + +// this module's typing is broken +declare module '@docsearch/js' { + function docsearch(props: T): void + export default docsearch +} + +declare module '@docsearch/css' { + export default string +} diff --git a/src/client/theme-default/Layout.vue b/src/client/theme-default/Layout.vue index 3aa7661c..1720f942 100644 --- a/src/client/theme-default/Layout.vue +++ b/src/client/theme-default/Layout.vue @@ -4,10 +4,7 @@ @@ -41,10 +38,10 @@ @@ -67,24 +64,42 @@ diff --git a/src/client/theme-default/components/AlgoliaSearchBox.vue b/src/client/theme-default/components/AlgoliaSearchBox.vue index 9d37cb1e..112660ba 100644 --- a/src/client/theme-default/components/AlgoliaSearchBox.vue +++ b/src/client/theme-default/components/AlgoliaSearchBox.vue @@ -2,23 +2,36 @@