@brillout/docpress 0.1.8 → 0.1.10
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/{src/css/Inter-Var.ttf → dist/Inter-Var-IOAEQULN.ttf} +0 -0
- package/{src/components/Sponsors/companyLogos/ccoli.svg → dist/ccoli-CHW3TQKS.svg} +0 -0
- package/{src/icons/changelog.svg → dist/changelog-IPI5F42D.svg} +0 -0
- package/{src/navigation/navigation-fullscreen/chevron.svg → dist/chevron-K3WPYLOP.svg} +0 -0
- package/{src/components/features/chevron.svg → dist/chevron-R2IYJD62.svg} +0 -0
- package/dist/chunk-3NFN2KUH.js +1 -0
- package/dist/chunk-3NFN2KUH.js.map +1 -0
- package/dist/chunk-G2KXEHNF.js +56 -0
- package/dist/chunk-G2KXEHNF.js.map +1 -0
- package/dist/{cli/chunk-KZROB63P.js → chunk-G6OTZHVA.js} +2 -1
- package/dist/chunk-G6OTZHVA.js.map +1 -0
- package/dist/chunk-JKLALMFU.js +103 -0
- package/dist/chunk-JKLALMFU.js.map +1 -0
- package/dist/chunk-OEVBWUR6.js +92 -0
- package/dist/chunk-OEVBWUR6.js.map +1 -0
- package/dist/chunk-TTLAZ2T2.js +8 -0
- package/dist/chunk-TTLAZ2T2.js.map +1 -0
- package/dist/chunk-UCY72YQS.js +178 -0
- package/dist/chunk-UCY72YQS.js.map +1 -0
- package/dist/cli/index.d.ts +1 -0
- package/dist/cli/index.js +4 -2
- package/dist/cli/index.js.map +1 -0
- package/{src/navigation/navigation-fullscreen/close.svg → dist/close-IQXTDOHV.svg} +0 -0
- package/{src/utils/Emoji/compass.svg → dist/compass-2RWQU3E4.svg} +0 -0
- package/{src/components/Sponsors/companyLogos/contra.svg → dist/contra-WLZBOPBV.svg} +0 -0
- package/dist/{cli/devServer.js → devServer-UEJORYCC.js} +3 -1
- package/dist/devServer-UEJORYCC.js.map +1 -0
- package/{src/icons/discord.svg → dist/discord-JD33TUSF.svg} +0 -0
- package/{src/utils/Emoji/engine.png → dist/engine-6Q6VSCVA.png} +0 -0
- package/{src/icons/github.svg → dist/github-P5ZSKN2N.svg} +0 -0
- package/{src/icons/heart.svg → dist/heart-OINVKOXO.svg} +0 -0
- package/dist/index.css +121 -0
- package/dist/index.css.map +1 -0
- package/dist/index.d.ts +135 -0
- package/dist/index.js +488 -0
- package/dist/index.js.map +1 -0
- package/{src/components/Sponsors/label.svg → dist/label-MP75CTIA.svg} +0 -0
- package/{src/utils/Emoji/mechanical-arm.svg → dist/mechanical-arm-TR7IQQMG.svg} +0 -0
- package/{src/components/Sponsors/medalBronze.svg → dist/medalBronze-CO4CTUR4.svg} +0 -0
- package/{src/components/Sponsors/medalGold.svg → dist/medalGold-UP6A73FL.svg} +0 -0
- package/{src/components/Sponsors/medalSilver.svg → dist/medalSilver-FAPGGOBN.svg} +0 -0
- package/{src/components/Sponsors/companyLogos/mfqs.svg → dist/mfqs-2EAEE7N6.svg} +0 -0
- package/{src/utils/Emoji/road-fork.svg → dist/road-fork-3WZLW3HB.svg} +0 -0
- package/{src/utils/Emoji/shield.svg → dist/shield-CU45RG5C.svg} +0 -0
- package/{src → dist/src}/components/features/FeatureList.css +2 -7
- package/dist/src/components/features/FeatureList.css.map +1 -0
- package/dist/src/components/features/FeatureList.d.ts +13 -0
- package/dist/src/components/features/FeatureList.js +8 -0
- package/dist/src/components/features/FeatureList.js.map +1 -0
- package/dist/src/components/features/initFeatureList.d.ts +3 -0
- package/dist/src/components/features/initFeatureList.js +60 -0
- package/dist/src/components/features/initFeatureList.js.map +1 -0
- package/dist/src/renderer/_default.page.client.css +272 -0
- package/dist/src/renderer/_default.page.client.css.map +1 -0
- package/dist/src/renderer/_default.page.client.d.ts +1 -0
- package/dist/src/renderer/_default.page.client.js +182 -0
- package/dist/src/renderer/_default.page.client.js.map +1 -0
- package/dist/src/renderer/_default.page.server.css +312 -0
- package/dist/src/renderer/_default.page.server.css.map +1 -0
- package/dist/src/renderer/_default.page.server.d.ts +22 -0
- package/dist/src/renderer/_default.page.server.js +602 -0
- package/dist/src/renderer/_default.page.server.js.map +1 -0
- package/{src/icons/twitter.svg → dist/twitter-I7DXDN3J.svg} +0 -0
- package/{src/utils/Emoji/typescript.svg → dist/typescript-ALIPKLRM.svg} +0 -0
- package/package.json +25 -17
- package/vite.config.ts +10 -4
- package/cli.mjs +0 -2
- package/dist/cli/configFile.js +0 -6
- package/src/MobileHeader.tsx +0 -68
- package/src/PageLayout.css +0 -41
- package/src/PageLayout.tsx +0 -37
- package/src/algolia/DocSearch.css +0 -29
- package/src/algolia/DocSearch.ts +0 -37
- package/src/autoScrollNav.ts +0 -22
- package/src/components/CodeBlock.tsx +0 -22
- package/src/components/DocLink.tsx +0 -108
- package/src/components/EditPageNote.tsx +0 -18
- package/src/components/HorizontalLine.tsx +0 -20
- package/src/components/ImportMeta.tsx +0 -11
- package/src/components/Info.tsx +0 -12
- package/src/components/Link.tsx +0 -18
- package/src/components/Note.tsx +0 -31
- package/src/components/P.css +0 -8
- package/src/components/P.tsx +0 -8
- package/src/components/ReadingRecommendation.tsx +0 -53
- package/src/components/RepoLink.tsx +0 -24
- package/src/components/Sponsors/companyLogos/ccoli-logo.svg +0 -1
- package/src/components/Sponsors/companyLogos/ccoli-text.svg +0 -1
- package/src/components/Sponsors/label.draft.svg +0 -108
- package/src/components/Sponsors.tsx +0 -243
- package/src/components/features/FeatureList.tsx +0 -114
- package/src/components/features/initFeatureList.ts +0 -66
- package/src/components/index.ts +0 -13
- package/src/config/Config.ts +0 -30
- package/src/config/getConfig.ts +0 -18
- package/src/config/resolveConfig/resolveHeading.ts +0 -0
- package/src/config/resolvePageContext.ts +0 -157
- package/src/css/button.css +0 -7
- package/src/css/code/block.css +0 -36
- package/src/css/code/inline.css +0 -27
- package/src/css/code.css +0 -20
- package/src/css/colorize-on-hover.css +0 -29
- package/src/css/font.css +0 -19
- package/src/css/heading.css +0 -25
- package/src/css/index.css +0 -10
- package/src/css/link.css +0 -17
- package/src/css/note.css +0 -26
- package/src/css/reset.css +0 -12
- package/src/css/table.css +0 -14
- package/src/css/tooltip.css +0 -11
- package/src/headings.ts +0 -201
- package/src/index.ts +0 -3
- package/src/installSectionUrlHashs.ts +0 -50
- package/src/navigation/Navigation-highlight.css +0 -41
- package/src/navigation/Navigation-items.css +0 -122
- package/src/navigation/Navigation-layout.css +0 -118
- package/src/navigation/Navigation.client.old.ts +0 -303
- package/src/navigation/Navigation.client.ts +0 -19
- package/src/navigation/Navigation.css +0 -12
- package/src/navigation/Navigation.tsx +0 -229
- package/src/navigation/NavigationHeader.tsx +0 -97
- package/src/navigation/navigation-fullscreen/NavigationFullscreenButton.css +0 -32
- package/src/navigation/navigation-fullscreen/NavigationFullscreenButton.tsx +0 -44
- package/src/navigation/navigation-fullscreen/initNavigationFullscreen.ts +0 -115
- package/src/parseEmojis.ts +0 -33
- package/src/renderer/_default.page.client.ts +0 -7
- package/src/renderer/_default.page.server.tsx +0 -69
- package/src/renderer/usePageContext.tsx +0 -25
- package/src/types.ts +0 -2
- package/src/utils/Emoji/Emoji.ts +0 -216
- package/src/utils/Emoji/assets.ts +0 -9
- package/src/utils/Emoji/index.ts +0 -1
- package/src/utils/Emoji/mountain.svg +0 -1
- package/src/utils/assert.ts +0 -39
- package/src/utils/determineSectionUrlHash.ts +0 -35
- package/src/utils/filter.ts +0 -12
- package/src/utils/index.ts +0 -6
- package/src/utils/isBrowser.ts +0 -5
- package/src/utils/jsxToTextContent.ts +0 -11
- package/src/utils/objectAssign.ts +0 -9
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../../../src/renderer/_default.page.server.tsx","../../../src/PageLayout.tsx","../../../src/navigation/Navigation.tsx","../../../src/navigation/NavigationHeader.tsx","../../../src/navigation/navigation-fullscreen/NavigationFullscreenButton.tsx","../../../src/MobileHeader.tsx","../../../src/components/EditPageNote.tsx","../../../src/config/getConfig.ts","../../../src/config/resolvePageContext.ts","../../../src/algolia/DocSearch.ts","../../../src/parseEmojis.ts"],"sourcesContent":["import ReactDOMServer from 'react-dom/server'\nimport React from 'react'\nimport { escapeInject, dangerouslySkipEscape } from 'vite-plugin-ssr'\nimport { PageLayout } from '../PageLayout'\nimport { resolvePageContext, PageContextOriginal } from '../config/resolvePageContext'\nimport { getDocSearchJS, getDocSearchCSS } from '../algolia/DocSearch'\nimport { parseEmojis } from '../parseEmojis'\nimport { assert } from '../utils'\n\nexport { render }\n\nasync function render(pageContextOriginal: PageContextOriginal) {\n const { Page } = pageContextOriginal\n const pageContextResolved = resolvePageContext(pageContextOriginal)\n\n const page = (\n <PageLayout pageContext={pageContextResolved}>\n <Page />\n </PageLayout>\n )\n\n const descriptionTag = pageContextResolved.isLandingPage\n ? dangerouslySkipEscape(`<meta name=\"description\" content=\"${pageContextResolved.meta.tagline}\" />`)\n : ''\n\n const docSearchJS = getDocSearchJS(pageContextResolved)\n const docSearchCSS = getDocSearchCSS(pageContextResolved)\n\n let pageHtml = ReactDOMServer.renderToString(page)\n pageHtml = parseEmojis(pageHtml)\n\n return escapeInject`<!DOCTYPE html>\n <html>\n <head>\n <meta charset=\"UTF-8\" />\n <link rel=\"icon\" href=\"${pageContextResolved.meta.faviconUrl}\" />\n <title>${pageContextResolved.meta.title}</title>\n ${descriptionTag}\n <meta name=\"viewport\" content=\"width=device-width,initial-scale=1,user-scalable=no\" />\n ${docSearchCSS}\n ${getOpenGraphTags(pageContextOriginal.urlPathname, pageContextResolved.meta)}\n </head>\n <body>\n <div id=\"page-view\">${dangerouslySkipEscape(pageHtml)}</div>\n ${docSearchJS}\n </body>\n </html>`\n}\n\nfunction getOpenGraphTags(\n url: string,\n meta: { title: string; tagline: string; websiteUrl: string; twitterHandle: string; bannerUrl?: string }\n) {\n const { title, tagline, websiteUrl, twitterHandle, bannerUrl } = meta\n\n assert(url.startsWith('/'))\n if (url !== '/' || !bannerUrl) return ''\n\n // See view-source:https://vitejs.dev/\n return escapeInject`\n <meta property=\"og:type\" content=\"website\">\n <meta property=\"og:title\" content=\"${title}\">\n <meta property=\"og:image\" content=\"${bannerUrl}\">\n <meta property=\"og:url\" content=\"${websiteUrl}\">\n <meta property=\"og:description\" content=\"${tagline}\">\n <meta name=\"twitter:card\" content=\"summary_large_image\">\n <meta name=\"twitter:site\" content=\"${twitterHandle}\">\n `\n}\n","import React from 'react'\nimport { Navigation, NavigationMask } from './navigation/Navigation'\nimport type { PageContextResolved } from './config/resolvePageContext'\nimport { MobileHeader } from './MobileHeader'\nimport { EditPageNote } from './components/EditPageNote'\nimport { PageContextProvider } from './renderer/usePageContext'\nimport './PageLayout.css'\nimport { NavigationFullscreenButton } from './navigation/navigation-fullscreen/NavigationFullscreenButton'\n\nexport { PageLayout }\n\nfunction PageLayout({ pageContext, children }: { pageContext: PageContextResolved; children: JSX.Element }) {\n const { isLandingPage, pageTitle } = pageContext\n return (\n <React.StrictMode>\n <PageContextProvider pageContext={pageContext}>\n <div id=\"page-layout\" className={isLandingPage ? 'landing-page' : 'doc-page'}>\n <div id=\"navigation-wrapper\">\n <Navigation pageContext={pageContext} />\n </div>\n <NavigationFullscreenButton />\n <div id=\"page-wrapper\">\n <div id=\"page-container\">\n <MobileHeader />\n <div id=\"page-content\">\n {pageTitle && <h1>{pageTitle}</h1>}\n {children}\n {!isLandingPage && <EditPageNote pageContext={pageContext} />}\n </div>\n </div>\n <NavigationMask />\n </div>\n </div>\n </PageContextProvider>\n </React.StrictMode>\n )\n}\n","export { Navigation }\nexport { NavigationMask }\n\nimport React from 'react'\nimport { NavigationHeader } from './NavigationHeader'\nimport { Heading } from '../headings'\nimport { assert } from '../utils'\nimport { Emoji } from '../utils/Emoji'\nimport './Navigation.css'\nimport { NavigationFullscreenClose } from './navigation-fullscreen/NavigationFullscreenButton'\n\nfunction Navigation({\n pageContext\n}: {\n pageContext: {\n headingsWithSubHeadings: Heading[]\n urlPathname: string\n isDetachedPage: boolean\n }\n}) {\n const { isDetachedPage } = pageContext\n return (\n <>\n <div id=\"navigation-container\">\n <NavigationHeader />\n {isDetachedPage && <DetachedPageNote />}\n <NavigationContent pageContext={pageContext} />\n {/* <ScrollOverlay /> */}\n <NavigationFullscreenClose />\n </div>\n </>\n )\n}\n\nfunction NavigationMask() {\n return <div id=\"navigation-mask\" />\n}\n\nfunction NavigationContent({\n pageContext\n}: {\n pageContext: {\n headingsWithSubHeadings: Heading[]\n urlPathname: string\n isDetachedPage: boolean\n }\n}) {\n const headings = getHeadingsWithComputedProps(pageContext)\n const headingsGrouped = groupHeadings(headings)\n return (\n <div id=\"navigation-content\">\n <div className=\"nav-column\" style={{ position: 'relative' }}>\n {headingsGrouped.map((headingsH1, i) => (\n <div className=\"nav-h1-group\" key={i}>\n <Heading heading={headingsH1} />\n {headingsH1.headings.map((heading, j) => (\n <Heading heading={heading} key={j} />\n ))}\n </div>\n ))}\n </div>\n </div>\n )\n}\n\nfunction Heading({\n heading\n}: {\n heading: {\n level: number\n url?: string\n titleInNav: string | JSX.Element\n computed: {\n isActive: boolean\n isActiveFirst: boolean\n isActiveLast: boolean\n isChildOfListHeading: boolean\n isFirstOfItsKind: boolean\n isLastOfItsKind: boolean\n }\n }\n}) {\n assert([1, 2, 3, 4].includes(heading.level), heading)\n return (\n <a\n className={[\n 'nav-item',\n 'nav-item-h' + heading.level,\n heading.computed.isActive && ' is-active',\n heading.computed.isActiveFirst && ' is-active-first',\n heading.computed.isActiveLast && ' is-active-last',\n heading.computed.isChildOfListHeading && 'nav-item-parent-is-list-heading',\n heading.computed.isFirstOfItsKind && 'nav-item-first-of-its-kind',\n heading.computed.isLastOfItsKind && 'nav-item-last-of-its-kind'\n ]\n .filter(Boolean)\n .join(' ')}\n href={heading.url || undefined}\n >\n {/* <span className=\"nav-item-text\">{heading.titleInNav}</span> */}\n {heading.titleInNav}\n </a>\n )\n}\n\nfunction groupHeadings<T extends { level: number }>(headings: T[]) {\n const headingsGrouped: (T & { headings: T[] })[] = []\n headings.forEach((heading) => {\n if (heading.level === 1) {\n headingsGrouped.push({ ...heading, headings: [] })\n } else {\n headingsGrouped[headingsGrouped.length - 1].headings.push(heading)\n }\n })\n return headingsGrouped\n}\n\nfunction getHeadingsWithComputedProps(pageContext: {\n headingsWithSubHeadings: Heading[]\n urlPathname: string\n isDetachedPage: boolean\n}) {\n const { headingsWithSubHeadings, urlPathname } = pageContext\n return headingsWithSubHeadings.map((heading, i) => {\n assert([1, 2, 3, 4].includes(heading.level), heading)\n\n const headingPrevious = headingsWithSubHeadings[i - 1]\n const headingNext = headingsWithSubHeadings[i + 1]\n\n let isActiveFirst = false\n let isActiveLast = false\n let isActive = false\n if (heading.url === urlPathname) {\n assert(heading.level === 2, { urlPathname })\n isActive = true\n isActiveFirst = true\n if (headingNext?.level !== 3) {\n isActiveLast = true\n }\n }\n if (heading.level === 3) {\n isActive = true\n if (headingNext?.level !== 3) {\n isActiveLast = true\n }\n }\n\n const isFirstOfItsKind = heading.level !== headingPrevious?.level\n const isLastOfItsKind = heading.level !== headingNext?.level\n const isChildOfListHeading = !!heading.parentHeadings[0]?.isListTitle\n\n return {\n ...heading,\n computed: {\n isActive,\n isActiveFirst,\n isActiveLast,\n isFirstOfItsKind,\n isLastOfItsKind,\n isChildOfListHeading\n }\n }\n })\n}\n\nfunction ScrollOverlay() {\n // const width = '1px'\n // const color = '#aaa'\n return (\n <div\n id=\"scroll-overlay\"\n style={{\n pointerEvents: 'none',\n position: 'absolute',\n left: '0',\n width: '100%',\n /*\n background: `linear-gradient(to right, ${color} ${width}, transparent ${width}) 0 0,\n linear-gradient(to right, ${color} ${width}, transparent ${width}) 0 100%,\n linear-gradient(to left, ${color} ${width}, transparent ${width}) 100% 0,\n linear-gradient(to left, ${color} ${width}, transparent ${width}) 100% 100%,\n linear-gradient(to bottom, ${color} ${width}, transparent ${width}) 0 0,\n linear-gradient(to bottom, ${color} ${width}, transparent ${width}) 100% 0,\n linear-gradient(to top, ${color} ${width}, transparent ${width}) 0 100%,\n linear-gradient(to top, ${color} ${width}, transparent ${width}) 100% 100%`,\n //*/\n //borderRight: `5px solid ${color}`,\n borderRight: `3px solid #666`,\n //border: `1px solid ${color}`,\n boxSizing: 'border-box',\n // backgroundColor: 'rgba(0,0,0,0.03)',\n backgroundRepeat: 'no-repeat',\n\n backgroundSize: '10px 10px'\n }}\n />\n )\n}\n\nfunction DetachedPageNote() {\n return (\n <div\n id=\"detached-note\"\n style={{\n backgroundColor: 'var(--background-color)',\n textAlign: 'left',\n marginLeft: 10,\n marginRight: 10,\n marginTop: 30,\n marginBottom: -8,\n borderRadius: 5,\n padding: 10\n }}\n >\n <Emoji name=\"info\" />{' '}\n <b>\n <em>Detached</em>\n </b>\n <span\n style={{\n opacity: 0.8\n }}\n >\n {' '}\n — this page isn't listed in the navigation menu below.\n </span>\n </div>\n )\n}\n","import React from 'react'\nimport iconGithub from '../icons/github.svg'\nimport iconTwitter from '../icons/twitter.svg'\nimport iconDiscord from '../icons/discord.svg'\nimport iconChangelog from '../icons/changelog.svg'\nimport { usePageContext } from '../renderer/usePageContext'\n\nexport { NavigationHeader }\n\nfunction NavigationHeader() {\n const pageContext = usePageContext()\n return (\n <div\n id=\"navigation-header\"\n style={{\n display: 'flex',\n flexDirection: 'column',\n alignItems: 'center',\n marginBottom: -5\n }}\n >\n <a\n id=\"navigation-header-logo\"\n style={{\n display: 'flex',\n alignItems: 'center',\n color: 'inherit',\n justifyContent: 'left',\n textDecoration: 'none',\n paddingTop: 12,\n paddingBottom: 7\n }}\n href=\"/\"\n >\n {pageContext.config.navHeader}\n </a>\n <Links />\n </div>\n )\n}\n\nfunction Links() {\n const pageContext = usePageContext()\n const { projectInfo } = pageContext.config\n return (\n <div\n style={{\n display: 'flex',\n alignItems: 'center',\n paddingTop: 0,\n justifyContent: 'left'\n }}\n >\n <SocialLink className=\"decolorize-4\" icon={iconGithub} href={projectInfo.githubRepository} />\n <SocialLink className=\"decolorize-6\" icon={iconDiscord} href={projectInfo.discordInvite} />\n <SocialLink className=\"decolorize-7\" icon={iconTwitter} href={projectInfo.twitterProfile} />\n <div id=\"docsearch-desktop\" />\n <ChangelogButton />\n </div>\n )\n}\n\nfunction ChangelogButton() {\n const pageContext = usePageContext()\n const { projectInfo } = pageContext.config\n return (\n <a\n href={`${projectInfo.githubRepository}/blob/main/CHANGELOG.md`}\n className=\"button colorize-on-hover\"\n style={{\n display: 'flex',\n alignItems: 'center',\n padding: '1px 7px',\n marginLeft: 2,\n fontSize: '0.97em',\n color: 'inherit'\n }}\n >\n <span className=\"decolorize-7\">v{projectInfo.projectVersion}</span>\n <img className=\"decolorize-6\" src={iconChangelog} height={16} style={{ marginLeft: 5 }} />\n </a>\n )\n}\n\nfunction SocialLink({ className, icon, href }: { className: string; icon: string; href: string }) {\n return (\n <>\n <a\n className={'colorize-on-hover ' + className}\n href={href}\n style={{ padding: 3, display: 'inline-block', lineHeight: 0 }}\n >\n <img src={icon} height=\"20\" style={{}} />\n </a>\n </>\n )\n}\n","export { NavigationFullscreenButton }\nexport { NavigationFullscreenClose }\n\nimport React from 'react'\nimport './NavigationFullscreenButton.css'\nimport closeIcon from './close.svg'\n\nfunction NavigationFullscreenButton() {\n return (\n <>\n <a id=\"navigation-fullscreen-button\">\n <div\n style={{\n position: 'fixed',\n cursor: 'pointer',\n height: '100vh',\n width: 20,\n overflow: 'hidden'\n }}\n >\n <div></div>\n </div>\n <div\n style={{ position: 'fixed', height: '100vh', width: 20 }}\n aria-label=\"Press <Esc>\"\n data-balloon-pos=\"right\"\n ></div>\n </a>\n </>\n )\n}\n\nfunction NavigationFullscreenClose() {\n return (\n <a\n id=\"navigation-fullscreen-close\"\n style={{ position: 'fixed', top: 11, right: 15, zIndex: 10 }}\n aria-label=\"Press <Esc>\"\n data-balloon-pos=\"left\"\n >\n <img src={closeIcon} height={50} width={50} style={{ display: 'block' }} />\n </a>\n )\n}\n","import React from 'react'\nimport { usePageContext } from './renderer/usePageContext'\n\nexport { MobileHeader }\n\nfunction MobileHeader() {\n const pageContext = usePageContext()\n return (\n <div\n id=\"mobile-header\"\n style={{\n height: 'var(--mobile-header-height)',\n width: '100vw',\n position: 'relative'\n }}\n >\n <div\n style={{\n position: 'fixed',\n display: 'flex',\n alignItems: 'center',\n background: 'white',\n zIndex: 99,\n top: 0,\n left: 0,\n height: 'var(--mobile-header-height)',\n width: '100%',\n borderBottom: '1px solid #ddd'\n }}\n >\n <MenuToggle />\n <a\n href=\"/\"\n style={{\n color: 'inherit',\n display: 'flex',\n alignItems: 'center',\n justifyContent: 'left',\n textDecoration: 'none'\n }}\n >\n {pageContext.config.navHeaderMobile}\n </a>\n <div id=\"docsearch-mobile\" />\n </div>\n </div>\n )\n}\n\nfunction MenuToggle() {\n return (\n <div style={{ padding: 20, lineHeight: 0 }} id=\"menu-toggle\">\n <svg\n style={{ width: 20 }}\n className=\"icon\"\n xmlns=\"http://www.w3.org/2000/svg\"\n aria-hidden=\"true\"\n role=\"img\"\n viewBox=\"0 0 448 512\"\n >\n <path\n fill=\"currentColor\"\n d=\"M436 124H12c-6.627 0-12-5.373-12-12V80c0-6.627 5.373-12 12-12h424c6.627 0 12 5.373 12 12v32c0 6.627-5.373 12-12 12zm0 160H12c-6.627 0-12-5.373-12-12v-32c0-6.627 5.373-12 12-12h424c6.627 0 12 5.373 12 12v32c0 6.627-5.373 12-12 12zm0 160H12c-6.627 0-12-5.373-12-12v-32c0-6.627 5.373-12 12-12h424c6.627 0 12 5.373 12 12v32c0 6.627-5.373 12-12 12z\"\n ></path>\n </svg>\n </div>\n )\n}\n","import React from 'react'\nimport { RepoLink } from './RepoLink'\nimport { Emoji } from '../utils/Emoji'\n\nexport { EditPageNote }\n\nfunction EditPageNote({ pageContext }: { pageContext: { urlPathname: string } }) {\n const text = (\n <>\n <Emoji name=\"writing-hang\" /> Edit this page\n </>\n )\n return (\n <div style={{ marginTop: 50 }}>\n <RepoLink path={'/docs/pages' + pageContext.urlPathname + '.page.server.mdx'} text={text} editMode={true} />\n </div>\n )\n}\n","export { getConfig }\nimport { assert, assertUsage } from '../utils'\nimport { Config } from './Config'\n\nfunction getConfig(): Config {\n // We use `@ts-ignore` because the DocPress user most likely didn't add `vite/client` in his `tsconfig.json`.\n // @ts-ignore\n const globResult = import.meta.glob('/**/docpress.config.*([a-zA-Z0-9])', { eager: true })\n const files = Object.keys(globResult)\n assertUsage(files.length >= 1, 'No DocPress config file found `docpress.config.(js|ts|tsx|...)`')\n assertUsage(\n files.length === 1,\n `Found multiple \\`docpress.config.js\\` files: ${files.map((f) => `\\`${f}\\``).join(', ')}. Define only one instead.`\n )\n const config = (Object.values(globResult)[0] as any).default as Config\n assert(config)\n return config\n}\n","import { assert, jsxToTextContent, objectAssign } from '../utils'\nimport { getHeadings, HeadingWithoutLink, parseTitle } from '../headings'\nimport type { Heading } from '../headings'\nimport type { PageContextBuiltIn } from 'vite-plugin-ssr'\nimport type { MarkdownHeading } from '../../vite.config/markdownHeadings'\nimport type { Config } from './Config'\nimport { getConfig } from './getConfig'\n\nexport { resolvePageContext }\nexport type { PageContextOriginal }\nexport type { PageContextResolved }\nexport type { Heading }\n\ntype ReactComponent = () => JSX.Element\ntype Exports = {\n headings?: MarkdownHeading[]\n}\ntype PageContextOriginal = PageContextBuiltIn & {\n Page: ReactComponent\n exports: Exports\n}\ntype PageContextResolved = ReturnType<typeof resolvePageContext>\n\nfunction resolvePageContext(pageContext: PageContextOriginal) {\n const config = getConfig()\n const { headings, headingsWithoutLink } = getHeadings(config)\n const activeHeading = findActiveHeading(headings, headingsWithoutLink, pageContext)\n const headingsWithSubHeadings = getHeadingsWithSubHeadings(headings, pageContext, activeHeading)\n const { title, isLandingPage, pageTitle, isDetachedPage } = getMetaData(\n headingsWithoutLink,\n activeHeading,\n pageContext,\n config\n )\n const { faviconUrl, algolia, tagline, twitterHandle, bannerUrl, websiteUrl } = config\n const pageContextResolved = {}\n objectAssign(pageContextResolved, {\n ...pageContext,\n meta: {\n title,\n faviconUrl,\n twitterHandle,\n bannerUrl,\n websiteUrl,\n tagline,\n algolia\n },\n headings,\n headingsWithSubHeadings,\n isLandingPage,\n isDetachedPage,\n pageTitle,\n config\n })\n return pageContextResolved\n}\n\nfunction getMetaData(\n headingsWithoutLink: HeadingWithoutLink[],\n activeHeading: Heading | null,\n pageContext: { urlOriginal: string; exports: Exports },\n config: Config\n) {\n const url = pageContext.urlOriginal\n\n let title: string\n let pageTitle: string | JSX.Element | null\n let isDetachedPage: boolean\n if (activeHeading) {\n title = activeHeading.titleDocument || jsxToTextContent(activeHeading.title)\n pageTitle = activeHeading.title\n isDetachedPage = false\n } else {\n pageTitle = headingsWithoutLink.find((h) => h.url === url)!.title\n title = jsxToTextContent(pageTitle)\n isDetachedPage = true\n }\n\n const isLandingPage = url === '/'\n if (!isLandingPage) {\n title += ' | ' + config.projectInfo.projectName\n }\n\n if (isLandingPage) {\n pageTitle = null\n }\n\n return { title, isLandingPage, pageTitle, isDetachedPage }\n}\n\nfunction findActiveHeading(\n headings: Heading[],\n headingsWithoutLink: HeadingWithoutLink[],\n pageContext: { urlOriginal: string; exports: Exports }\n): Heading | null {\n let activeHeading: Heading | null = null\n assert(pageContext.urlOriginal)\n const pageUrl = pageContext.urlOriginal\n headings.forEach((heading) => {\n if (heading.url === pageUrl) {\n activeHeading = heading\n assert(heading.level === 2, { pageUrl, heading })\n }\n })\n const debugInfo = {\n msg: 'Heading not found for url: ' + pageUrl,\n urls: headings.map((h) => h.url),\n url: pageUrl\n }\n assert(activeHeading || headingsWithoutLink.find(({ url }) => pageUrl === url), debugInfo)\n return activeHeading\n}\n\nfunction getHeadingsWithSubHeadings(\n headings: Heading[],\n pageContext: { exports: Exports; urlOriginal: string },\n activeHeading: Heading | null\n): Heading[] {\n const headingsWithSubHeadings = headings.slice()\n if (activeHeading === null) return headingsWithSubHeadings\n const activeHeadingIdx = headingsWithSubHeadings.indexOf(activeHeading)\n assert(activeHeadingIdx >= 0)\n const pageHeadings = pageContext.exports.headings || []\n pageHeadings.forEach((pageHeading, i) => {\n const title = parseTitle(pageHeading.title)\n const url = '#' + pageHeading.id\n assert(\n pageHeading.headingLevel !== 3,\n 'Wrong page heading level `' +\n pageHeading.headingLevel +\n '` (it should be `<h2>`) for sub-heading `' +\n pageHeading.title +\n '` of page `' +\n pageContext.urlOriginal +\n '`.'\n )\n if (pageHeading.headingLevel === 2) {\n const heading: Heading = {\n url,\n title,\n parentHeadings: [activeHeading, ...activeHeading.parentHeadings],\n titleInNav: title,\n level: 3\n }\n headingsWithSubHeadings.splice(activeHeadingIdx + 1 + i, 0, heading)\n }\n })\n\n if (activeHeading?.sectionTitles) {\n activeHeading.sectionTitles.forEach((sectionTitle) => {\n const pageHeadingTitles = pageHeadings.map((h) => h.title)\n assert(pageHeadingTitles.includes(sectionTitle), { pageHeadingTitles, sectionTitle })\n })\n }\n\n return headingsWithSubHeadings\n}\n","import { escapeInject } from 'vite-plugin-ssr'\nimport { PageContextResolved } from '../config/resolvePageContext'\n\nexport { getDocSearchCSS }\nexport { getDocSearchJS }\n\nfunction getDocSearchCSS(pageContext: PageContextResolved) {\n const docSearchCSS = !pageContext.meta.algolia\n ? ''\n : escapeInject`\n <link rel=\"stylesheet\" href=\"https://cdn.jsdelivr.net/npm/@docsearch/css@alpha\" />\n `\n return docSearchCSS\n}\n\nfunction getDocSearchJS(pageContext: PageContextResolved) {\n const docSearchJS = !pageContext.meta.algolia\n ? ''\n : escapeInject`\n <script type=\"text/javascript\" src=\"https://cdn.jsdelivr.net/npm/@docsearch/js@alpha\"></script>\n <script type=\"text/javascript\">\n docsearch({\n appId: '${pageContext.meta.algolia.appId}',\n apiKey: '${pageContext.meta.algolia.apiKey}',\n indexName: '${pageContext.meta.algolia.indexName}',\n container: '#docsearch-desktop',\n })\n docsearch({\n appId: '${pageContext.meta.algolia.appId}',\n apiKey: '${pageContext.meta.algolia.apiKey}',\n indexName: '${pageContext.meta.algolia.indexName}',\n container: '#docsearch-mobile',\n })\n </script>\n `\n return docSearchJS\n}\n","export { parseEmojis }\n\nimport twemoji from 'twemoji'\n\nconst emojiList = {\n // https://emojipedia.org/no-entry/\n ':no_entry:': 0x26d4,\n // https://emojipedia.org/warning/\n ':warning:': 0x26a0,\n // https://emojipedia.org/trophy/\n ':trophy:': 0x1f3c6\n /*\n // https://emojipedia.org/red-heart/\n ':heart:': 0x2764,\n */\n}\n\nfunction parseEmojis(html: string) {\n Object.entries(emojiList).forEach(([shortcode, codepoint]) => {\n if (!html.includes(shortcode)) {\n return\n }\n const emojiStr = twemoji.convert.fromCodePoint(codepoint)\n let emojiImg: any = twemoji.parse(emojiStr, {\n folder: 'svg',\n ext: '.svg'\n })\n const style = 'height: 1.275em; width: 1.275em; vertical-align: -20%'\n emojiImg = emojiImg.replace('<img class=\"emoji\" ', `<img style=\"${style}\" `)\n html = html.split(shortcode).join(emojiImg)\n })\n return html\n}\n"],"mappings":"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","names":["React","escapeInject","React","React","React","React","React","_a","React","React","React","React","React","React","React","escapeInject"]}
|
|
File without changes
|
|
File without changes
|
package/package.json
CHANGED
|
@@ -1,14 +1,23 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@brillout/docpress",
|
|
3
|
-
"version": "0.1.
|
|
3
|
+
"version": "0.1.10",
|
|
4
4
|
"exports": {
|
|
5
|
-
".": "./
|
|
6
|
-
"./
|
|
7
|
-
"browser": "./src/components/features/initFeatureList.ts"
|
|
8
|
-
},
|
|
9
|
-
"./style.css": {
|
|
5
|
+
".": "./dist/index.js",
|
|
6
|
+
"./index.css": {
|
|
10
7
|
"browser": "./src/css/index.css"
|
|
11
|
-
}
|
|
8
|
+
},
|
|
9
|
+
"./renderer/_default.page.server.js": "./dist/src/renderer/_default.page.server.js",
|
|
10
|
+
"./renderer/_default.page.client.js": "./dist/src/renderer/_default.page.client.js",
|
|
11
|
+
"./renderer/_default.page.server.css": "./dist/src/renderer/_default.page.server.css",
|
|
12
|
+
"./renderer/_default.page.client.css": "./dist/src/renderer/_default.page.client.css",
|
|
13
|
+
"./features/FeatureList": "./dist/src/components/features/FeatureList.js",
|
|
14
|
+
"./features/FeatureList.css": {
|
|
15
|
+
"browser": "./dist/src/components/features/FeatureList.css"
|
|
16
|
+
},
|
|
17
|
+
"./features/initFeatureList": {
|
|
18
|
+
"browser": "./dist/src/components/features/initFeatureList.js"
|
|
19
|
+
},
|
|
20
|
+
"./package.json": "./package.json"
|
|
12
21
|
},
|
|
13
22
|
"scripts": {
|
|
14
23
|
"// === DocPress Demo ===": "",
|
|
@@ -17,8 +26,8 @@
|
|
|
17
26
|
"demo:dev": "docpress dev",
|
|
18
27
|
"demo:preview": "docpress build && docpress preview",
|
|
19
28
|
"// === DocPress Source Code ===": "",
|
|
20
|
-
"build": "
|
|
21
|
-
"reset": "git clean -Xdf && pnpm install",
|
|
29
|
+
"build": "framework-builder",
|
|
30
|
+
"reset": "git clean -Xdf && pnpm install && pnpm run build",
|
|
22
31
|
"// === Release ===": "",
|
|
23
32
|
"prepublishOnly": "pnpm run build",
|
|
24
33
|
"release": "npm version patch && npm publish && git push && git push --tags"
|
|
@@ -35,32 +44,31 @@
|
|
|
35
44
|
"shiki": "^0.10.1",
|
|
36
45
|
"twemoji": "^13.1.0",
|
|
37
46
|
"vite": "^3.0.9",
|
|
38
|
-
"vite-plugin-ssr": "^0.4.
|
|
47
|
+
"vite-plugin-ssr": "^0.4.54"
|
|
39
48
|
},
|
|
40
49
|
"peerDependencies": {
|
|
41
50
|
"react": "18",
|
|
42
51
|
"react-dom": "18"
|
|
43
52
|
},
|
|
44
53
|
"devDependencies": {
|
|
54
|
+
"@brillout/framework-builder": "^0.0.2",
|
|
45
55
|
"@types/express": "^4.17.13",
|
|
46
56
|
"@types/node": "^15.12.1",
|
|
47
57
|
"@types/react": "^17.0.44",
|
|
48
58
|
"@types/react-dom": "^17.0.6",
|
|
59
|
+
"docpress": "link:",
|
|
49
60
|
"react": "^18.1.0",
|
|
50
61
|
"react-dom": "^18.1.0",
|
|
51
62
|
"rollup": "^2.74.1",
|
|
52
|
-
"
|
|
53
|
-
"typescript": "^4.8.4"
|
|
54
|
-
"docpress": "link:"
|
|
63
|
+
"tsx": "^3.12.1",
|
|
64
|
+
"typescript": "^4.8.4"
|
|
55
65
|
},
|
|
56
66
|
"bin": {
|
|
57
|
-
"docpress": "./cli.
|
|
67
|
+
"docpress": "./dist/cli/index.js"
|
|
58
68
|
},
|
|
59
69
|
"files": [
|
|
60
|
-
"src/*",
|
|
61
70
|
"*.ts",
|
|
62
|
-
"dist
|
|
63
|
-
"cli.mjs",
|
|
71
|
+
"dist/",
|
|
64
72
|
"vite.config.ts",
|
|
65
73
|
"vite.config/*"
|
|
66
74
|
],
|
package/vite.config.ts
CHANGED
|
@@ -23,10 +23,16 @@ const config: UserConfig = {
|
|
|
23
23
|
prerender: {
|
|
24
24
|
noExtraDir: true
|
|
25
25
|
},
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
26
|
+
extensions: [{
|
|
27
|
+
npmPackageName: '@brillout/docpress',
|
|
28
|
+
pageFiles: [
|
|
29
|
+
'@brillout/docpress/renderer/_default.page.server.js',
|
|
30
|
+
'@brillout/docpress/renderer/_default.page.server.css',
|
|
31
|
+
'@brillout/docpress/renderer/_default.page.client.js',
|
|
32
|
+
'@brillout/docpress/renderer/_default.page.client.css'
|
|
33
|
+
],
|
|
34
|
+
assetsDir: 'dist/'
|
|
35
|
+
}],
|
|
30
36
|
includeAssetsImportedByServer: true
|
|
31
37
|
})
|
|
32
38
|
],
|
package/cli.mjs
DELETED
package/dist/cli/configFile.js
DELETED
package/src/MobileHeader.tsx
DELETED
|
@@ -1,68 +0,0 @@
|
|
|
1
|
-
import React from 'react'
|
|
2
|
-
import { usePageContext } from './renderer/usePageContext'
|
|
3
|
-
|
|
4
|
-
export { MobileHeader }
|
|
5
|
-
|
|
6
|
-
function MobileHeader() {
|
|
7
|
-
const pageContext = usePageContext()
|
|
8
|
-
return (
|
|
9
|
-
<div
|
|
10
|
-
id="mobile-header"
|
|
11
|
-
style={{
|
|
12
|
-
height: 'var(--mobile-header-height)',
|
|
13
|
-
width: '100vw',
|
|
14
|
-
position: 'relative'
|
|
15
|
-
}}
|
|
16
|
-
>
|
|
17
|
-
<div
|
|
18
|
-
style={{
|
|
19
|
-
position: 'fixed',
|
|
20
|
-
display: 'flex',
|
|
21
|
-
alignItems: 'center',
|
|
22
|
-
background: 'white',
|
|
23
|
-
zIndex: 99,
|
|
24
|
-
top: 0,
|
|
25
|
-
left: 0,
|
|
26
|
-
height: 'var(--mobile-header-height)',
|
|
27
|
-
width: '100%',
|
|
28
|
-
borderBottom: '1px solid #ddd'
|
|
29
|
-
}}
|
|
30
|
-
>
|
|
31
|
-
<MenuToggle />
|
|
32
|
-
<a
|
|
33
|
-
href="/"
|
|
34
|
-
style={{
|
|
35
|
-
color: 'inherit',
|
|
36
|
-
display: 'flex',
|
|
37
|
-
alignItems: 'center',
|
|
38
|
-
justifyContent: 'left',
|
|
39
|
-
textDecoration: 'none'
|
|
40
|
-
}}
|
|
41
|
-
>
|
|
42
|
-
{pageContext.config.navHeaderMobile}
|
|
43
|
-
</a>
|
|
44
|
-
<div id="docsearch-mobile" />
|
|
45
|
-
</div>
|
|
46
|
-
</div>
|
|
47
|
-
)
|
|
48
|
-
}
|
|
49
|
-
|
|
50
|
-
function MenuToggle() {
|
|
51
|
-
return (
|
|
52
|
-
<div style={{ padding: 20, lineHeight: 0 }} id="menu-toggle">
|
|
53
|
-
<svg
|
|
54
|
-
style={{ width: 20 }}
|
|
55
|
-
className="icon"
|
|
56
|
-
xmlns="http://www.w3.org/2000/svg"
|
|
57
|
-
aria-hidden="true"
|
|
58
|
-
role="img"
|
|
59
|
-
viewBox="0 0 448 512"
|
|
60
|
-
>
|
|
61
|
-
<path
|
|
62
|
-
fill="currentColor"
|
|
63
|
-
d="M436 124H12c-6.627 0-12-5.373-12-12V80c0-6.627 5.373-12 12-12h424c6.627 0 12 5.373 12 12v32c0 6.627-5.373 12-12 12zm0 160H12c-6.627 0-12-5.373-12-12v-32c0-6.627 5.373-12 12-12h424c6.627 0 12 5.373 12 12v32c0 6.627-5.373 12-12 12zm0 160H12c-6.627 0-12-5.373-12-12v-32c0-6.627 5.373-12 12-12h424c6.627 0 12 5.373 12 12v32c0 6.627-5.373 12-12 12z"
|
|
64
|
-
></path>
|
|
65
|
-
</svg>
|
|
66
|
-
</div>
|
|
67
|
-
)
|
|
68
|
-
}
|
package/src/PageLayout.css
DELETED
|
@@ -1,41 +0,0 @@
|
|
|
1
|
-
.doc-page #page-container {
|
|
2
|
-
padding-bottom: 100px;
|
|
3
|
-
}
|
|
4
|
-
|
|
5
|
-
#page-layout {
|
|
6
|
-
display: flex;
|
|
7
|
-
justify-content: center;
|
|
8
|
-
}
|
|
9
|
-
#page-layout > #navigation-wrapper,
|
|
10
|
-
#page-layout > #page-wrapper {
|
|
11
|
-
flex-grow: 1;
|
|
12
|
-
}
|
|
13
|
-
/* Avoid overflow, see https://stackoverflow.com/questions/36230944/prevent-flex-items-from-overflowing-a-container/66689926#66689926 */
|
|
14
|
-
#page-layout > #page-wrapper {
|
|
15
|
-
min-width: 0;
|
|
16
|
-
}
|
|
17
|
-
|
|
18
|
-
.doc-page #page-wrapper {
|
|
19
|
-
--main-view-max-width: 800px;
|
|
20
|
-
}
|
|
21
|
-
.landing-page #page-wrapper {
|
|
22
|
-
--main-view-max-width: 1010px;
|
|
23
|
-
}
|
|
24
|
-
#page-wrapper {
|
|
25
|
-
max-width: calc(var(--main-view-max-width) + 80px);
|
|
26
|
-
}
|
|
27
|
-
#page-content {
|
|
28
|
-
box-sizing: content-box;
|
|
29
|
-
max-width: var(--main-view-max-width);
|
|
30
|
-
padding: 20px var(--main-view-padding);
|
|
31
|
-
margin: auto;
|
|
32
|
-
}
|
|
33
|
-
|
|
34
|
-
#page-content {
|
|
35
|
-
--main-view-padding: 20px;
|
|
36
|
-
}
|
|
37
|
-
@media screen and (max-width: 1139px) {
|
|
38
|
-
#page-content {
|
|
39
|
-
--main-view-padding: 10px;
|
|
40
|
-
}
|
|
41
|
-
}
|
package/src/PageLayout.tsx
DELETED
|
@@ -1,37 +0,0 @@
|
|
|
1
|
-
import React from 'react'
|
|
2
|
-
import { Navigation, NavigationMask } from './navigation/Navigation'
|
|
3
|
-
import type { PageContextResolved } from './config/resolvePageContext'
|
|
4
|
-
import { MobileHeader } from './MobileHeader'
|
|
5
|
-
import { EditPageNote } from './components/EditPageNote'
|
|
6
|
-
import { PageContextProvider } from './renderer/usePageContext'
|
|
7
|
-
import './PageLayout.css'
|
|
8
|
-
import { NavigationFullscreenButton } from './navigation/navigation-fullscreen/NavigationFullscreenButton'
|
|
9
|
-
|
|
10
|
-
export { PageLayout }
|
|
11
|
-
|
|
12
|
-
function PageLayout({ pageContext, children }: { pageContext: PageContextResolved; children: JSX.Element }) {
|
|
13
|
-
const { isLandingPage, pageTitle } = pageContext
|
|
14
|
-
return (
|
|
15
|
-
<React.StrictMode>
|
|
16
|
-
<PageContextProvider pageContext={pageContext}>
|
|
17
|
-
<div id="page-layout" className={isLandingPage ? 'landing-page' : 'doc-page'}>
|
|
18
|
-
<div id="navigation-wrapper">
|
|
19
|
-
<Navigation pageContext={pageContext} />
|
|
20
|
-
</div>
|
|
21
|
-
<NavigationFullscreenButton />
|
|
22
|
-
<div id="page-wrapper">
|
|
23
|
-
<div id="page-container">
|
|
24
|
-
<MobileHeader />
|
|
25
|
-
<div id="page-content">
|
|
26
|
-
{pageTitle && <h1>{pageTitle}</h1>}
|
|
27
|
-
{children}
|
|
28
|
-
{!isLandingPage && <EditPageNote pageContext={pageContext} />}
|
|
29
|
-
</div>
|
|
30
|
-
</div>
|
|
31
|
-
<NavigationMask />
|
|
32
|
-
</div>
|
|
33
|
-
</div>
|
|
34
|
-
</PageContextProvider>
|
|
35
|
-
</React.StrictMode>
|
|
36
|
-
)
|
|
37
|
-
}
|
|
@@ -1,29 +0,0 @@
|
|
|
1
|
-
#docsearch-desktop {
|
|
2
|
-
max-width: 110px !important;
|
|
3
|
-
}
|
|
4
|
-
#docsearch-desktop .DocSearch-Button-Placeholder {
|
|
5
|
-
display: none;
|
|
6
|
-
padding: 0 !important;
|
|
7
|
-
}
|
|
8
|
-
#docsearch-desktop .DocSearch-Search-Icon {
|
|
9
|
-
margin-right: 6px !important;
|
|
10
|
-
}
|
|
11
|
-
#docsearch-desktop .DocSearch-Button {
|
|
12
|
-
margin-right: 3px !important;
|
|
13
|
-
margin-left: 1px !important;
|
|
14
|
-
}
|
|
15
|
-
|
|
16
|
-
#docsearch-mobile {
|
|
17
|
-
margin-left: auto !important;
|
|
18
|
-
padding-right: 20px !important;
|
|
19
|
-
}
|
|
20
|
-
|
|
21
|
-
#docsearch-mobile .DocSearch-Button {
|
|
22
|
-
margin-left: 0px !important;
|
|
23
|
-
}
|
|
24
|
-
|
|
25
|
-
@media screen and (max-width: 339px) {
|
|
26
|
-
#docsearch-mobile {
|
|
27
|
-
padding-right: 6px !important;
|
|
28
|
-
}
|
|
29
|
-
}
|
package/src/algolia/DocSearch.ts
DELETED
|
@@ -1,37 +0,0 @@
|
|
|
1
|
-
import { escapeInject } from 'vite-plugin-ssr'
|
|
2
|
-
import { PageContextResolved } from '../config/resolvePageContext'
|
|
3
|
-
|
|
4
|
-
export { getDocSearchCSS }
|
|
5
|
-
export { getDocSearchJS }
|
|
6
|
-
|
|
7
|
-
function getDocSearchCSS(pageContext: PageContextResolved) {
|
|
8
|
-
const docSearchCSS = !pageContext.meta.algolia
|
|
9
|
-
? ''
|
|
10
|
-
: escapeInject`
|
|
11
|
-
<link rel="stylesheet" href="https://cdn.jsdelivr.net/npm/@docsearch/css@alpha" />
|
|
12
|
-
`
|
|
13
|
-
return docSearchCSS
|
|
14
|
-
}
|
|
15
|
-
|
|
16
|
-
function getDocSearchJS(pageContext: PageContextResolved) {
|
|
17
|
-
const docSearchJS = !pageContext.meta.algolia
|
|
18
|
-
? ''
|
|
19
|
-
: escapeInject`
|
|
20
|
-
<script type="text/javascript" src="https://cdn.jsdelivr.net/npm/@docsearch/js@alpha"></script>
|
|
21
|
-
<script type="text/javascript">
|
|
22
|
-
docsearch({
|
|
23
|
-
appId: '${pageContext.meta.algolia.appId}',
|
|
24
|
-
apiKey: '${pageContext.meta.algolia.apiKey}',
|
|
25
|
-
indexName: '${pageContext.meta.algolia.indexName}',
|
|
26
|
-
container: '#docsearch-desktop',
|
|
27
|
-
})
|
|
28
|
-
docsearch({
|
|
29
|
-
appId: '${pageContext.meta.algolia.appId}',
|
|
30
|
-
apiKey: '${pageContext.meta.algolia.apiKey}',
|
|
31
|
-
indexName: '${pageContext.meta.algolia.indexName}',
|
|
32
|
-
container: '#docsearch-mobile',
|
|
33
|
-
})
|
|
34
|
-
</script>
|
|
35
|
-
`
|
|
36
|
-
return docSearchJS
|
|
37
|
-
}
|
package/src/autoScrollNav.ts
DELETED
|
@@ -1,22 +0,0 @@
|
|
|
1
|
-
import { assert } from './utils'
|
|
2
|
-
|
|
3
|
-
autoScrollNav()
|
|
4
|
-
|
|
5
|
-
function autoScrollNav() {
|
|
6
|
-
const navigationEl = document.getElementById('navigation-content')
|
|
7
|
-
assert(navigationEl)
|
|
8
|
-
const href = window.location.pathname
|
|
9
|
-
const navLinks: HTMLElement[] = Array.from(navigationEl.querySelectorAll(`a[href="${href}"]`))
|
|
10
|
-
assert(navLinks.length <= 1, { navLinks, href })
|
|
11
|
-
const navLink = navLinks[0]
|
|
12
|
-
if (!navLink) return
|
|
13
|
-
navLink.scrollIntoView({
|
|
14
|
-
/*
|
|
15
|
-
behavior: 'smooth',
|
|
16
|
-
/*/
|
|
17
|
-
behavior: 'auto',
|
|
18
|
-
//*/
|
|
19
|
-
block: 'center',
|
|
20
|
-
inline: 'center'
|
|
21
|
-
})
|
|
22
|
-
}
|
|
@@ -1,22 +0,0 @@
|
|
|
1
|
-
export { CodeBlock }
|
|
2
|
-
|
|
3
|
-
import React from 'react'
|
|
4
|
-
import { assert, objectAssign } from '../utils'
|
|
5
|
-
|
|
6
|
-
function CodeBlock({ children, lineBreak }: { children: any; lineBreak?: true }) {
|
|
7
|
-
assert(lineBreak, '`lineBreak: true` is currently the only use case for <CodeBlock>')
|
|
8
|
-
const style = {}
|
|
9
|
-
if (lineBreak) {
|
|
10
|
-
objectAssign(style, {
|
|
11
|
-
wordWrap: 'break-word',
|
|
12
|
-
wordBreak: 'break-all',
|
|
13
|
-
whiteSpace: 'initial',
|
|
14
|
-
paddingRight: '16px !important'
|
|
15
|
-
})
|
|
16
|
-
}
|
|
17
|
-
return (
|
|
18
|
-
<pre>
|
|
19
|
-
<code style={style}>{children}</code>
|
|
20
|
-
</pre>
|
|
21
|
-
)
|
|
22
|
-
}
|
|
@@ -1,108 +0,0 @@
|
|
|
1
|
-
import React from 'react'
|
|
2
|
-
import { getHeadings, parseTitle, Heading, HeadingWithoutLink } from '../headings'
|
|
3
|
-
import { PageContextResolved } from '../config/resolvePageContext'
|
|
4
|
-
import { usePageContext } from '../renderer/usePageContext'
|
|
5
|
-
import { assert, assertUsage, determineSectionTitle, determineSectionUrlHash } from '../utils'
|
|
6
|
-
|
|
7
|
-
export { DocLink }
|
|
8
|
-
|
|
9
|
-
function DocLink({
|
|
10
|
-
href,
|
|
11
|
-
text,
|
|
12
|
-
noBreadcrumb,
|
|
13
|
-
doNotInferSectionTitle
|
|
14
|
-
}: {
|
|
15
|
-
href: string
|
|
16
|
-
text?: string | JSX.Element
|
|
17
|
-
noBreadcrumb?: true
|
|
18
|
-
doNotInferSectionTitle?: true
|
|
19
|
-
}) {
|
|
20
|
-
const pageContext = usePageContext()
|
|
21
|
-
return <a href={href}>{text || getTitle({ href, noBreadcrumb, pageContext, doNotInferSectionTitle })}</a>
|
|
22
|
-
}
|
|
23
|
-
|
|
24
|
-
function getTitle({
|
|
25
|
-
href,
|
|
26
|
-
noBreadcrumb,
|
|
27
|
-
pageContext,
|
|
28
|
-
doNotInferSectionTitle
|
|
29
|
-
}: {
|
|
30
|
-
href: string
|
|
31
|
-
noBreadcrumb: true | undefined
|
|
32
|
-
pageContext: PageContextResolved
|
|
33
|
-
doNotInferSectionTitle: true | undefined
|
|
34
|
-
}): string | JSX.Element {
|
|
35
|
-
let urlHash: string | null = null
|
|
36
|
-
let hrefWithoutHash: string = href
|
|
37
|
-
if (href.includes('#')) {
|
|
38
|
-
;[hrefWithoutHash, urlHash] = href.split('#')
|
|
39
|
-
}
|
|
40
|
-
const heading = findHeading(hrefWithoutHash, pageContext)
|
|
41
|
-
|
|
42
|
-
const breadcrumbs: (string | JSX.Element)[] = []
|
|
43
|
-
|
|
44
|
-
if ('parentHeadings' in heading) {
|
|
45
|
-
breadcrumbs.push(
|
|
46
|
-
...heading.parentHeadings
|
|
47
|
-
.slice()
|
|
48
|
-
.reverse()
|
|
49
|
-
.map(({ title }) => title)
|
|
50
|
-
)
|
|
51
|
-
}
|
|
52
|
-
|
|
53
|
-
breadcrumbs.push(heading.title)
|
|
54
|
-
|
|
55
|
-
if (urlHash) {
|
|
56
|
-
let sectionTitle: string | JSX.Element | undefined = undefined
|
|
57
|
-
if ('sectionTitles' in heading && heading.sectionTitles) {
|
|
58
|
-
heading.sectionTitles.forEach((title) => {
|
|
59
|
-
if (determineSectionUrlHash(title) === urlHash) {
|
|
60
|
-
sectionTitle = parseTitle(title)
|
|
61
|
-
}
|
|
62
|
-
})
|
|
63
|
-
}
|
|
64
|
-
if (!sectionTitle) {
|
|
65
|
-
assertUsage(
|
|
66
|
-
!doNotInferSectionTitle,
|
|
67
|
-
`Page section title not found for <Link href="\`${href}\`" doNotInferSectionTitle={true} />.`
|
|
68
|
-
)
|
|
69
|
-
sectionTitle = determineSectionTitle(href, pageContext.config.titleNormalCase)
|
|
70
|
-
}
|
|
71
|
-
breadcrumbs.push(sectionTitle)
|
|
72
|
-
}
|
|
73
|
-
|
|
74
|
-
{
|
|
75
|
-
const linkIsOnSamePage = heading.url === pageContext.urlPathname
|
|
76
|
-
if (noBreadcrumb || linkIsOnSamePage) {
|
|
77
|
-
return breadcrumbs[breadcrumbs.length - 1]
|
|
78
|
-
}
|
|
79
|
-
}
|
|
80
|
-
|
|
81
|
-
return (
|
|
82
|
-
<>
|
|
83
|
-
{breadcrumbs.map((title, i) => {
|
|
84
|
-
const seperator = i === 0 ? <></> : ' > '
|
|
85
|
-
return (
|
|
86
|
-
<React.Fragment key={i}>
|
|
87
|
-
{seperator}
|
|
88
|
-
{title}
|
|
89
|
-
</React.Fragment>
|
|
90
|
-
)
|
|
91
|
-
})}
|
|
92
|
-
</>
|
|
93
|
-
)
|
|
94
|
-
}
|
|
95
|
-
|
|
96
|
-
function findHeading(href: string, pageContext: PageContextResolved): Heading | HeadingWithoutLink {
|
|
97
|
-
assert(href.startsWith('/'), `\`href==='${href}'\` but should start with \`/\`.`)
|
|
98
|
-
const { headings, headingsWithoutLink } = getHeadings(pageContext.config)
|
|
99
|
-
{
|
|
100
|
-
const heading = headingsWithoutLink.find(({ url }) => href === url)
|
|
101
|
-
if (heading) {
|
|
102
|
-
return heading
|
|
103
|
-
}
|
|
104
|
-
}
|
|
105
|
-
const heading = headings.find(({ url }) => href === url)
|
|
106
|
-
assert(heading, `Could not find page \`${href}\`. Does it exist?`)
|
|
107
|
-
return heading
|
|
108
|
-
}
|
|
@@ -1,18 +0,0 @@
|
|
|
1
|
-
import React from 'react'
|
|
2
|
-
import { RepoLink } from './RepoLink'
|
|
3
|
-
import { Emoji } from '../utils/Emoji'
|
|
4
|
-
|
|
5
|
-
export { EditPageNote }
|
|
6
|
-
|
|
7
|
-
function EditPageNote({ pageContext }: { pageContext: { urlPathname: string } }) {
|
|
8
|
-
const text = (
|
|
9
|
-
<>
|
|
10
|
-
<Emoji name="writing-hang" /> Edit this page
|
|
11
|
-
</>
|
|
12
|
-
)
|
|
13
|
-
return (
|
|
14
|
-
<div style={{ marginTop: 50 }}>
|
|
15
|
-
<RepoLink path={'/docs/pages' + pageContext.urlPathname + '.page.server.mdx'} text={text} editMode={true} />
|
|
16
|
-
</div>
|
|
17
|
-
)
|
|
18
|
-
}
|
|
@@ -1,20 +0,0 @@
|
|
|
1
|
-
import React from 'react'
|
|
2
|
-
|
|
3
|
-
export { HorizontalLine }
|
|
4
|
-
|
|
5
|
-
function HorizontalLine({ primary }: { primary?: true }) {
|
|
6
|
-
return (
|
|
7
|
-
<div className={'header-separator-line ' + (primary ? 'primary' : '')} style={{ textAlign: 'center' }}>
|
|
8
|
-
<hr
|
|
9
|
-
style={{
|
|
10
|
-
display: 'inline-block',
|
|
11
|
-
margin: 0,
|
|
12
|
-
border: 0,
|
|
13
|
-
borderTop: '1px solid #eee',
|
|
14
|
-
maxWidth: 500,
|
|
15
|
-
width: '80%'
|
|
16
|
-
}}
|
|
17
|
-
/>
|
|
18
|
-
</div>
|
|
19
|
-
)
|
|
20
|
-
}
|
|
@@ -1,11 +0,0 @@
|
|
|
1
|
-
import React from 'react'
|
|
2
|
-
import { assert } from '../utils'
|
|
3
|
-
|
|
4
|
-
export { ImportMeta }
|
|
5
|
-
|
|
6
|
-
function ImportMeta({ prop }: { prop: string }) {
|
|
7
|
-
assert(!prop.startsWith('import'))
|
|
8
|
-
assert(!prop.startsWith('.'))
|
|
9
|
-
const text = 'imp' + 'ort.meta.' + prop
|
|
10
|
-
return <code>{text}</code>
|
|
11
|
-
}
|