chore(types): add additional hint for LSP support (#864)
Signed-off-by: Aaron <29749331+aarnphm@users.noreply.github.com>
This commit is contained in:
		| @@ -1,7 +1,7 @@ | ||||
| import { QuartzComponentConstructor, QuartzComponentProps } from "./types" | ||||
| import { QuartzComponent, QuartzComponentConstructor, QuartzComponentProps } from "./types" | ||||
| import { classNames } from "../util/lang" | ||||
|  | ||||
| function ArticleTitle({ fileData, displayClass }: QuartzComponentProps) { | ||||
| const ArticleTitle: QuartzComponent = ({ fileData, displayClass }: QuartzComponentProps) => { | ||||
|   const title = fileData.frontmatter?.title | ||||
|   if (title) { | ||||
|     return <h1 class={classNames(displayClass, "article-title")}>{title}</h1> | ||||
|   | ||||
| @@ -1,10 +1,15 @@ | ||||
| import { QuartzComponentConstructor, QuartzComponentProps } from "./types" | ||||
| import { QuartzComponent, QuartzComponentConstructor, QuartzComponentProps } from "./types" | ||||
| import style from "./styles/backlinks.scss" | ||||
| import { resolveRelative, simplifySlug } from "../util/path" | ||||
| import { i18n } from "../i18n" | ||||
| import { classNames } from "../util/lang" | ||||
|  | ||||
| function Backlinks({ fileData, allFiles, displayClass, cfg }: QuartzComponentProps) { | ||||
| const Backlinks: QuartzComponent = ({ | ||||
|   fileData, | ||||
|   allFiles, | ||||
|   displayClass, | ||||
|   cfg, | ||||
| }: QuartzComponentProps) => { | ||||
|   const slug = simplifySlug(fileData.slug!) | ||||
|   const backlinkFiles = allFiles.filter((file) => file.links?.includes(slug)) | ||||
|   return ( | ||||
|   | ||||
| @@ -1,9 +1,9 @@ | ||||
| // @ts-ignore | ||||
| import clipboardScript from "./scripts/clipboard.inline" | ||||
| import clipboardStyle from "./styles/clipboard.scss" | ||||
| import { QuartzComponentConstructor, QuartzComponentProps } from "./types" | ||||
| import { QuartzComponent, QuartzComponentConstructor, QuartzComponentProps } from "./types" | ||||
|  | ||||
| function Body({ children }: QuartzComponentProps) { | ||||
| const Body: QuartzComponent = ({ children }: QuartzComponentProps) => { | ||||
|   return <div id="quartz-body">{children}</div> | ||||
| } | ||||
|  | ||||
|   | ||||
| @@ -1,4 +1,4 @@ | ||||
| import { QuartzComponentConstructor, QuartzComponentProps } from "./types" | ||||
| import { QuartzComponent, QuartzComponentConstructor, QuartzComponentProps } from "./types" | ||||
| import breadcrumbsStyle from "./styles/breadcrumbs.scss" | ||||
| import { FullSlug, SimpleSlug, resolveRelative } from "../util/path" | ||||
| import { QuartzPluginData } from "../plugins/vfile" | ||||
| @@ -54,7 +54,11 @@ export default ((opts?: Partial<BreadcrumbOptions>) => { | ||||
|   // computed index of folder name to its associated file data | ||||
|   let folderIndex: Map<string, QuartzPluginData> | undefined | ||||
|  | ||||
|   function Breadcrumbs({ fileData, allFiles, displayClass }: QuartzComponentProps) { | ||||
|   const Breadcrumbs: QuartzComponent = ({ | ||||
|     fileData, | ||||
|     allFiles, | ||||
|     displayClass, | ||||
|   }: QuartzComponentProps) => { | ||||
|     // Hide crumbs on root if enabled | ||||
|     if (options.hideOnRoot && fileData.slug === "index") { | ||||
|       return <></> | ||||
| @@ -121,5 +125,6 @@ export default ((opts?: Partial<BreadcrumbOptions>) => { | ||||
|     ) | ||||
|   } | ||||
|   Breadcrumbs.css = breadcrumbsStyle | ||||
|  | ||||
|   return Breadcrumbs | ||||
| }) satisfies QuartzComponentConstructor | ||||
|   | ||||
| @@ -3,11 +3,11 @@ | ||||
| // see: https://v8.dev/features/modules#defer | ||||
| import darkmodeScript from "./scripts/darkmode.inline" | ||||
| import styles from "./styles/darkmode.scss" | ||||
| import { QuartzComponentConstructor, QuartzComponentProps } from "./types" | ||||
| import { QuartzComponent, QuartzComponentConstructor, QuartzComponentProps } from "./types" | ||||
| import { i18n } from "../i18n" | ||||
| import { classNames } from "../util/lang" | ||||
|  | ||||
| function Darkmode({ displayClass, cfg }: QuartzComponentProps) { | ||||
| const Darkmode: QuartzComponent = ({ displayClass, cfg }: QuartzComponentProps) => { | ||||
|   return ( | ||||
|     <div class={classNames(displayClass, "darkmode")}> | ||||
|       <input class="toggle" id="darkmode-toggle" type="checkbox" tabIndex={-1} /> | ||||
|   | ||||
| @@ -3,7 +3,7 @@ import { QuartzComponent, QuartzComponentConstructor, QuartzComponentProps } fro | ||||
| export default ((component?: QuartzComponent) => { | ||||
|   if (component) { | ||||
|     const Component = component | ||||
|     function DesktopOnly(props: QuartzComponentProps) { | ||||
|     const DesktopOnly: QuartzComponent = (props: QuartzComponentProps) => { | ||||
|       return <Component displayClass="desktop-only" {...props} /> | ||||
|     } | ||||
|  | ||||
|   | ||||
| @@ -1,4 +1,4 @@ | ||||
| import { QuartzComponentConstructor, QuartzComponentProps } from "./types" | ||||
| import { QuartzComponent, QuartzComponentConstructor, QuartzComponentProps } from "./types" | ||||
| import explorerStyle from "./styles/explorer.scss" | ||||
|  | ||||
| // @ts-ignore | ||||
| @@ -75,7 +75,12 @@ export default ((userOpts?: Partial<Options>) => { | ||||
|     jsonTree = JSON.stringify(folders) | ||||
|   } | ||||
|  | ||||
|   function Explorer({ cfg, allFiles, displayClass, fileData }: QuartzComponentProps) { | ||||
|   const Explorer: QuartzComponent = ({ | ||||
|     cfg, | ||||
|     allFiles, | ||||
|     displayClass, | ||||
|     fileData, | ||||
|   }: QuartzComponentProps) => { | ||||
|     constructFileTree(allFiles) | ||||
|     return ( | ||||
|       <div class={classNames(displayClass, "explorer")}> | ||||
|   | ||||
| @@ -1,4 +1,4 @@ | ||||
| import { QuartzComponentConstructor, QuartzComponentProps } from "./types" | ||||
| import { QuartzComponent, QuartzComponentConstructor, QuartzComponentProps } from "./types" | ||||
| import style from "./styles/footer.scss" | ||||
| import { version } from "../../package.json" | ||||
| import { i18n } from "../i18n" | ||||
| @@ -8,7 +8,7 @@ interface Options { | ||||
| } | ||||
|  | ||||
| export default ((opts?: Options) => { | ||||
|   function Footer({ displayClass, cfg }: QuartzComponentProps) { | ||||
|   const Footer: QuartzComponent = ({ displayClass, cfg }: QuartzComponentProps) => { | ||||
|     const year = new Date().getFullYear() | ||||
|     const links = opts?.links ?? [] | ||||
|     return ( | ||||
|   | ||||
| @@ -1,4 +1,4 @@ | ||||
| import { QuartzComponentConstructor, QuartzComponentProps } from "./types" | ||||
| import { QuartzComponent, QuartzComponentConstructor, QuartzComponentProps } from "./types" | ||||
| // @ts-ignore | ||||
| import script from "./scripts/graph.inline" | ||||
| import style from "./styles/graph.scss" | ||||
| @@ -54,7 +54,7 @@ const defaultOptions: GraphOptions = { | ||||
| } | ||||
|  | ||||
| export default ((opts?: GraphOptions) => { | ||||
|   function Graph({ displayClass, cfg }: QuartzComponentProps) { | ||||
|   const Graph: QuartzComponent = ({ displayClass, cfg }: QuartzComponentProps) => { | ||||
|     const localGraph = { ...defaultOptions.localGraph, ...opts?.localGraph } | ||||
|     const globalGraph = { ...defaultOptions.globalGraph, ...opts?.globalGraph } | ||||
|     return ( | ||||
|   | ||||
| @@ -1,10 +1,10 @@ | ||||
| import { i18n } from "../i18n" | ||||
| import { FullSlug, joinSegments, pathToRoot } from "../util/path" | ||||
| import { JSResourceToScriptElement } from "../util/resources" | ||||
| import { QuartzComponentConstructor, QuartzComponentProps } from "./types" | ||||
| import { QuartzComponent, QuartzComponentConstructor, QuartzComponentProps } from "./types" | ||||
|  | ||||
| export default (() => { | ||||
|   function Head({ cfg, fileData, externalResources }: QuartzComponentProps) { | ||||
|   const Head: QuartzComponent = ({ cfg, fileData, externalResources }: QuartzComponentProps) => { | ||||
|     const title = fileData.frontmatter?.title ?? i18n(cfg.locale).propertyDefaults.title | ||||
|     const description = | ||||
|       fileData.description?.trim() ?? i18n(cfg.locale).propertyDefaults.description | ||||
|   | ||||
| @@ -1,6 +1,6 @@ | ||||
| import { QuartzComponentConstructor, QuartzComponentProps } from "./types" | ||||
| import { QuartzComponent, QuartzComponentConstructor, QuartzComponentProps } from "./types" | ||||
|  | ||||
| function Header({ children }: QuartzComponentProps) { | ||||
| const Header: QuartzComponent = ({ children }: QuartzComponentProps) => { | ||||
|   return children.length > 0 ? <header>{children}</header> : null | ||||
| } | ||||
|  | ||||
|   | ||||
| @@ -3,7 +3,7 @@ import { QuartzComponent, QuartzComponentConstructor, QuartzComponentProps } fro | ||||
| export default ((component?: QuartzComponent) => { | ||||
|   if (component) { | ||||
|     const Component = component | ||||
|     function MobileOnly(props: QuartzComponentProps) { | ||||
|     const MobileOnly: QuartzComponent = (props: QuartzComponentProps) => { | ||||
|       return <Component displayClass="mobile-only" {...props} /> | ||||
|     } | ||||
|  | ||||
|   | ||||
| @@ -1,7 +1,7 @@ | ||||
| import { FullSlug, resolveRelative } from "../util/path" | ||||
| import { QuartzPluginData } from "../plugins/vfile" | ||||
| import { Date, getDate } from "./Date" | ||||
| import { QuartzComponentProps } from "./types" | ||||
| import { QuartzComponent, QuartzComponentProps } from "./types" | ||||
| import { GlobalConfiguration } from "../cfg" | ||||
|  | ||||
| export function byDateAndAlphabetical( | ||||
| @@ -29,7 +29,7 @@ type Props = { | ||||
|   limit?: number | ||||
| } & QuartzComponentProps | ||||
|  | ||||
| export function PageList({ cfg, fileData, allFiles, limit }: Props) { | ||||
| export const PageList: QuartzComponent = ({ cfg, fileData, allFiles, limit }: Props) => { | ||||
|   let list = allFiles.sort(byDateAndAlphabetical(cfg)) | ||||
|   if (limit) { | ||||
|     list = list.slice(0, limit) | ||||
|   | ||||
| @@ -1,9 +1,9 @@ | ||||
| import { pathToRoot } from "../util/path" | ||||
| import { QuartzComponentConstructor, QuartzComponentProps } from "./types" | ||||
| import { QuartzComponent, QuartzComponentConstructor, QuartzComponentProps } from "./types" | ||||
| import { classNames } from "../util/lang" | ||||
| import { i18n } from "../i18n" | ||||
|  | ||||
| function PageTitle({ fileData, cfg, displayClass }: QuartzComponentProps) { | ||||
| const PageTitle: QuartzComponent = ({ fileData, cfg, displayClass }: QuartzComponentProps) => { | ||||
|   const title = cfg?.pageTitle ?? i18n(cfg.locale).propertyDefaults.title | ||||
|   const baseDir = pathToRoot(fileData.slug!) | ||||
|   return ( | ||||
|   | ||||
| @@ -1,4 +1,4 @@ | ||||
| import { QuartzComponentConstructor, QuartzComponentProps } from "./types" | ||||
| import { QuartzComponent, QuartzComponentConstructor, QuartzComponentProps } from "./types" | ||||
| import { FullSlug, SimpleSlug, resolveRelative } from "../util/path" | ||||
| import { QuartzPluginData } from "../plugins/vfile" | ||||
| import { byDateAndAlphabetical } from "./PageList" | ||||
| @@ -24,7 +24,12 @@ const defaultOptions = (cfg: GlobalConfiguration): Options => ({ | ||||
| }) | ||||
|  | ||||
| export default ((userOpts?: Partial<Options>) => { | ||||
|   function RecentNotes({ allFiles, fileData, displayClass, cfg }: QuartzComponentProps) { | ||||
|   const RecentNotes: QuartzComponent = ({ | ||||
|     allFiles, | ||||
|     fileData, | ||||
|     displayClass, | ||||
|     cfg, | ||||
|   }: QuartzComponentProps) => { | ||||
|     const opts = { ...defaultOptions(cfg), ...userOpts } | ||||
|     const pages = allFiles.filter(opts.filter).sort(opts.sort) | ||||
|     const remaining = Math.max(0, pages.length - opts.limit) | ||||
|   | ||||
| @@ -1,4 +1,4 @@ | ||||
| import { QuartzComponentConstructor, QuartzComponentProps } from "./types" | ||||
| import { QuartzComponent, QuartzComponentConstructor, QuartzComponentProps } from "./types" | ||||
| import style from "./styles/search.scss" | ||||
| // @ts-ignore | ||||
| import script from "./scripts/search.inline" | ||||
| @@ -14,7 +14,7 @@ const defaultOptions: SearchOptions = { | ||||
| } | ||||
|  | ||||
| export default ((userOpts?: Partial<SearchOptions>) => { | ||||
|   function Search({ displayClass, cfg }: QuartzComponentProps) { | ||||
|   const Search: QuartzComponent = ({ displayClass, cfg }: QuartzComponentProps) => { | ||||
|     const opts = { ...defaultOptions, ...userOpts } | ||||
|     const searchPlaceholder = i18n(cfg.locale).components.search.searchBarPlaceholder | ||||
|     return ( | ||||
|   | ||||
| @@ -1,4 +1,4 @@ | ||||
| import { QuartzComponentConstructor, QuartzComponentProps } from "./types" | ||||
| import { QuartzComponent, QuartzComponentConstructor, QuartzComponentProps } from "./types" | ||||
| import legacyStyle from "./styles/legacyToc.scss" | ||||
| import modernStyle from "./styles/toc.scss" | ||||
| import { classNames } from "../util/lang" | ||||
| @@ -15,7 +15,11 @@ const defaultOptions: Options = { | ||||
|   layout: "modern", | ||||
| } | ||||
|  | ||||
| function TableOfContents({ fileData, displayClass, cfg }: QuartzComponentProps) { | ||||
| const TableOfContents: QuartzComponent = ({ | ||||
|   fileData, | ||||
|   displayClass, | ||||
|   cfg, | ||||
| }: QuartzComponentProps) => { | ||||
|   if (!fileData.toc) { | ||||
|     return null | ||||
|   } | ||||
| @@ -56,7 +60,7 @@ function TableOfContents({ fileData, displayClass, cfg }: QuartzComponentProps) | ||||
| TableOfContents.css = modernStyle | ||||
| TableOfContents.afterDOMLoaded = script | ||||
|  | ||||
| function LegacyTableOfContents({ fileData, cfg }: QuartzComponentProps) { | ||||
| const LegacyTableOfContents: QuartzComponent = ({ fileData, cfg }: QuartzComponentProps) => { | ||||
|   if (!fileData.toc) { | ||||
|     return null | ||||
|   } | ||||
|   | ||||
| @@ -1,8 +1,8 @@ | ||||
| import { pathToRoot, slugTag } from "../util/path" | ||||
| import { QuartzComponentConstructor, QuartzComponentProps } from "./types" | ||||
| import { QuartzComponent, QuartzComponentConstructor, QuartzComponentProps } from "./types" | ||||
| import { classNames } from "../util/lang" | ||||
|  | ||||
| function TagList({ fileData, displayClass }: QuartzComponentProps) { | ||||
| const TagList: QuartzComponent = ({ fileData, displayClass }: QuartzComponentProps) => { | ||||
|   const tags = fileData.frontmatter?.tags | ||||
|   const baseDir = pathToRoot(fileData.slug!) | ||||
|   if (tags && tags.length > 0) { | ||||
|   | ||||
		Reference in New Issue
	
	Block a user