@brillout/docpress 0.2.1 → 0.2.3

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.
Files changed (40) hide show
  1. package/dist/{chunk-TTLAZ2T2.js → chunk-3QC7HYIF.js} +0 -1
  2. package/dist/{chunk-G2A5MZJA.js → chunk-4G4ACGLN.js} +0 -1
  3. package/dist/{chunk-H5CO4N2X.js → chunk-D4PNWSRD.js} +8 -5
  4. package/dist/{chunk-7HKDCMSZ.js → chunk-MSIQIC6B.js} +4 -3
  5. package/dist/chunk-NVJING6T.js +91 -0
  6. package/dist/{chunk-XUTBTIEE.js → chunk-RZAPSH5Z.js} +20 -19
  7. package/dist/cli/index.js +5 -6
  8. package/dist/components/features/FeatureList.css +0 -1
  9. package/dist/components/features/FeatureList.js +2 -3
  10. package/dist/components/features/initFeatureList.js +2 -3
  11. package/dist/{devServer-534L4U45.js → devServer-UKWIENKN.js} +4 -5
  12. package/dist/index.css +0 -1
  13. package/dist/index.d.ts +5 -4
  14. package/dist/index.js +181 -134
  15. package/dist/languages-KXPKJFQL.svg +1 -0
  16. package/dist/renderer/_default.page.client.css +22 -4
  17. package/dist/renderer/_default.page.client.js +6 -6
  18. package/dist/renderer/_default.page.server.css +2 -4
  19. package/dist/renderer/_default.page.server.d.ts +1 -1
  20. package/dist/renderer/_default.page.server.js +249 -223
  21. package/dist/repora-UNKQZ6QP.svg +10 -0
  22. package/package.json +3 -3
  23. package/dist/chunk-7HKDCMSZ.js.map +0 -1
  24. package/dist/chunk-C3OIVLKV.js +0 -75
  25. package/dist/chunk-C3OIVLKV.js.map +0 -1
  26. package/dist/chunk-G2A5MZJA.js.map +0 -1
  27. package/dist/chunk-H5CO4N2X.js.map +0 -1
  28. package/dist/chunk-TTLAZ2T2.js.map +0 -1
  29. package/dist/chunk-XUTBTIEE.js.map +0 -1
  30. package/dist/cli/index.js.map +0 -1
  31. package/dist/components/features/FeatureList.css.map +0 -1
  32. package/dist/components/features/FeatureList.js.map +0 -1
  33. package/dist/components/features/initFeatureList.js.map +0 -1
  34. package/dist/devServer-534L4U45.js.map +0 -1
  35. package/dist/index.css.map +0 -1
  36. package/dist/index.js.map +0 -1
  37. package/dist/renderer/_default.page.client.css.map +0 -1
  38. package/dist/renderer/_default.page.client.js.map +0 -1
  39. package/dist/renderer/_default.page.server.css.map +0 -1
  40. package/dist/renderer/_default.page.server.js.map +0 -1
@@ -1 +0,0 @@
1
- {"version":3,"sources":["../src/utils/filter.ts","../src/utils/determineSectionUrlHash.ts","../src/utils/jsxToTextContent.ts","../src/utils/objectAssign.ts","../src/utils/crawlAllFiles.ts","../src/utils/filesystemPathHandling.ts","../src/utils/Emoji/Emoji.ts"],"sourcesContent":["export { filter }\n\n// https://stackoverflow.com/questions/66341757/typescript-how-to-filter-the-object\nfunction filter<T extends object>(obj: T, predicate: <K extends keyof T>(value: T[K], key: K) => boolean): T {\n const result: { [K in keyof T]?: T[K] } = {}\n ;(Object.keys(obj) as Array<keyof T>).forEach((name) => {\n if (predicate(obj[name], name)) {\n result[name] = obj[name]\n }\n })\n return result as T\n}\n","import { assert } from './assert'\n\nexport { determineSectionUrlHash }\nexport { determineSectionTitle }\n\nfunction determineSectionUrlHash(title: string): string {\n const urlHash = title\n .toLowerCase()\n .split(/[^a-z0-9]+/)\n .filter(Boolean)\n .join('-')\n return urlHash\n}\n\nfunction determineSectionTitle(urlWithHash: string, titleNormalCase: boolean): string {\n assert(urlWithHash.includes('#'), { urlWithHash })\n const urlHash = urlWithHash.split('#')[1]\n const title = urlHash\n .split('-')\n .map((word, i) => {\n if (i === 0) {\n return capitalizeFirstLetter(word)\n }\n if (!titleNormalCase && word.length >= 4) {\n return capitalizeFirstLetter(word)\n }\n return word\n })\n .join(' ')\n return title\n}\n\nfunction capitalizeFirstLetter(word: string): string {\n return word[0].toUpperCase() + word.slice(1)\n}\n","import { assert } from './assert'\n\nexport { jsxToTextContent }\n\n// https://stackoverflow.com/questions/34204975/react-is-there-something-similar-to-node-textcontent/60564620#60564620\nfunction jsxToTextContent(node: JSX.Element | string): string {\n if (['string', 'number'].includes(typeof node)) return String(node)\n if (node instanceof Array) return node.map(jsxToTextContent).join('')\n if (typeof node === 'object' && node) return jsxToTextContent(node.props.children)\n assert(false)\n}\n","export { objectAssign }\n\n// Same as `Object.assign()` but with type inference\nfunction objectAssign<Obj extends Object, ObjAddendum>(\n obj: Obj,\n objAddendum: ObjAddendum\n): asserts obj is Obj & ObjAddendum {\n Object.assign(obj, objAddendum)\n}\n","export { crawlAllFiles }\n\nimport path from 'path'\nimport { promises as fsp } from 'fs'\nimport { toPosixPath } from './filesystemPathHandling'\n\n// Adapted from https://stackoverflow.com/questions/5827612/node-js-fs-readdir-recursive-directory-search/45130990#45130990\nasync function crawlAllFiles(dir: string): Promise<string[]> {\n const dirFiles = await fsp.readdir(dir, { withFileTypes: true })\n const allFiles = await Promise.all(\n dirFiles.map((file) => {\n const filePath = path.resolve(dir, file.name)\n return file.isDirectory() ? crawlAllFiles(filePath) : filePath\n })\n )\n return allFiles.flat().map(toPosixPath)\n}\n","export { toPosixPath }\nexport { assertPosixPath }\nexport { toSystemPath }\n\nimport assert from 'assert'\n\nconst sepPosix = '/'\nconst sepWin32 = '\\\\'\n\nfunction toPosixPath(path: string) {\n if (isPosix()) {\n assertPosixPath(path)\n return path\n }\n if (isWin32()) {\n const pathPosix = path.split(sepWin32).join(sepPosix)\n assertPosixPath(pathPosix)\n return pathPosix\n }\n assert(false)\n}\n\nfunction assertPosixPath(path: string) {\n assert(path && !path.includes(sepWin32), `Wrongly formatted path: ${path}`)\n}\n\nfunction toSystemPath(path: string) {\n if (isPosix()) {\n return toPosixPath(path)\n }\n if (isWin32()) {\n return path.split(sepPosix).join(sepWin32)\n }\n assert(false)\n}\n\nfunction isWin32() {\n return process.platform === 'win32'\n}\nfunction isPosix() {\n return !isWin32()\n}\n","import React from 'react'\nimport { assert } from '../assert'\n\nimport { iconMechanicalArm, iconCompass, iconRoadFork, iconShield, iconTypescript, iconEngine } from './assets'\n\nexport { Emoji }\nexport type { EmojiName }\n\ntype EmojiName =\n | 'warning'\n | 'typescript'\n | 'shield'\n | 'mechanical-arm'\n | 'mountain'\n | 'rocket'\n | 'wrench'\n | 'compass'\n | 'seedling'\n | 'books'\n | 'plug'\n | 'earth'\n | 'gear'\n | 'red-heart'\n | 'high-voltage'\n | 'gem-stone'\n | 'dizzy'\n | 'sparkles'\n | 'writing-hang'\n | 'road-fork'\n | 'engine'\n | 'red-circle'\n | 'sparkling-heart'\n | 'gift'\n | 'package'\n | 'info'\n | 'lab'\n | 'trophy'\n\nfunction Emoji({ name, style }: { name: EmojiName; style?: React.CSSProperties }): JSX.Element {\n const emoji =\n // ***\n // U+26A0\n // https://emojipedia.org/warning/\n // https://www.unicompat.com/26A0 => 94.1%\n // https://www.unicompat.com/26A0-FE0F => 92.4%\n // https://www.unicompat.com/2697 => 94.1%\n (name === 'warning' && Unicode(0x26a0, { fontFamily: 'emoji' })) ||\n // ***\n // U+2697\n // https://emojipedia.org/alembic/\n // https://www.unicompat.com/2697 => 94.1%\n (name === 'lab' && Unicode(0x2697)) ||\n // ***\n // U+2139\n // https://emojipedia.org/information/\n // https://www.unicompat.com/2139 => 94.8%\n // https://www.unicompat.com/2139-FE0F => 92.4%\n (name === 'info' && Unicode(0x2139, { fontFamily: 'emoji' })) ||\n // ***\n // U+1F4E6\n // https://emojipedia.org/package/\n // https://www.unicompat.com/1F4E6 => 94.1%\n (name === 'package' && Unicode(0x1f4e6)) ||\n // ***\n // U+1F381\n // https://emojipedia.org/wrapped-gift/\n // https://www.unicompat.com/1F381 => 94.1%\n (name === 'gift' && Unicode(0x1f381)) ||\n // ***\n // U+1F496\n // https://emojipedia.org/sparkling-heart/\n // https://www.unicompat.com/1F496 => 94.1%\n (name === 'sparkling-heart' && Unicode(0x1f496)) ||\n // ***\n // U+2B55\n // https://emojipedia.org/hollow-red-circle/\n // https://www.unicompat.com/2B55 => 94.1%\n (name === 'red-circle' && Unicode(0x2b55)) ||\n // ***\n (name === 'engine' && Img(iconEngine)) ||\n // ***\n // https://www.typescriptlang.org/branding/\n (name === 'typescript' && Img(iconTypescript)) ||\n // ***\n // U+FE0F\n // https://emojipedia.org/shield/\n // https://www.unicompat.com/FE0F => 46.5%\n // https://icon-sets.iconify.design/noto/shield/\n (name === 'shield' && Img(iconShield)) ||\n // ***\n // Custom\n (name === 'road-fork' && Img(iconRoadFork, '1.4em')) ||\n // ***\n // U+270D\n // https://emojipedia.org/writing-hand/\n // https://www.unicompat.com/270D => 93.8%\n (name === 'writing-hang' && Unicode(0x270d)) ||\n // ***\n // U+1F4AB\n // https://emojipedia.org/dizzy/\n // https://www.unicompat.com/1F4AB => 94.1%\n (name === 'dizzy' && Unicode(0x1f4ab)) ||\n // ***\n // U+1F9BE\n // https://iconify.design/icon-sets/noto/mechanical-arm.html\n // https://emojipedia.org/mechanical-arm/\n // https://www.unicompat.com/1f9be => 65.5%\n (name === 'mechanical-arm' && Img(iconMechanicalArm)) ||\n // ***\n // U+1F680\n // https://www.unicompat.com/1F680 => 94.1\n (name === 'rocket' && Unicode(0x1f680)) ||\n // ***\n // U+1F527\n // https://emojipedia.org/wrench/\n // https://www.unicompat.com/1F527 => 94.1%\n (name === 'wrench' && Unicode(0x1f527)) ||\n // ***\n // U+1F9ED\n // https://iconify.design/icon-sets/noto/compass.html\n // https://www.unicompat.com/1F9ED => 67.1%\n (name === 'compass' && Img(iconCompass, '1.4em')) ||\n // ***\n // U+1F331\n // https://www.unicompat.com/1F331 => 94.1%\n (name === 'seedling' && Unicode(0x1f331)) ||\n // ***\n // U+1F4DA\n // https://www.unicompat.com/1F4DA => 94.1%\n (name === 'books' && Unicode(0x1f4da)) ||\n // ***\n // U+1F50C\n // https://www.unicompat.com/1F50C => 94.1%\n (name === 'plug' && Unicode(0x1f50c)) ||\n // ***\n // U+1F30D\n // https://www.unicompat.com/1F30D => 88.8%\n (name === 'earth' && Unicode(0x1f30d)) ||\n // ***\n // U+2699\n // https://www.unicompat.com/2699 => 94.1%\n (name === 'gear' && Unicode(0x2699)) ||\n // ***\n // U+2764\n // https://emojipedia.org/red-heart/\n // https://www.unicompat.com/2764 => 94.4%\n // https://www.unicompat.com/2764-FE0F => 92.4%\n (name === 'red-heart' && Unicode(0x2764, { fontFamily: 'emoji' })) ||\n // U+26A1\n // https://www.unicompat.com/26A1 => 94.1%\n (name === 'high-voltage' && Unicode(0x26a1)) ||\n // U+2728\n // https://emojipedia.org/sparkles/\n // https://www.unicompat.com/2728 => 94.1%\n (name === 'sparkles' && Unicode(0x2728)) ||\n // ***\n // U+1F48E\n // https://emojipedia.org/gem-stone/\n // https://www.unicompat.com/1F48E => 94.1%\n (name === 'gem-stone' && Unicode(0x1f48e)) ||\n // ***\n // 0x1F3C6\n // https://emojipedia.org/trophy/\n // https://www.unicompat.com/1F3C6 => 94.1%\n (name === 'trophy' && Unicode(0x1f3c6)) ||\n false\n /* ======= Unused ========\n // ***\n // U+1FAA8\n // https://emojipedia.org/rock/\n // https://www.unicompat.com/1faa8 => 20.7%\n //\n // ***\n // U+26F0\n // https://emojipedia.org/mountain/\n // https://iconify.design/icon-sets/noto/mountain.html\n // https://www.unicompat.com/26F0 => 89.3%\n (name === 'mountain' && Img(iconMountain)) ||\n //\n // ***\n // U+2194\n // https://emojipedia.org/left-right-arrow/\n // https://www.unicompat.com/2194 => 95.0%\n // Couldn't manage to show colored version\n (name === 'left-right-arrow' && Unicode(0x2194)) ||\n (name === 'left-right-arrow' && Unicode(0x2194, { fontFamily: 'reset' })) ||\n (name === 'left-right-arrow' && Unicode(0xFE0F)) ||\n (name === 'left-right-arrow' && Unicode(0xFE0F, { fontFamily: 'reset' })) ||\n ======================== */\n\n assert(emoji, { name })\n\n return emoji\n\n function Unicode(codePoint: number, styleAddendum?: React.CSSProperties) {\n const text = String.fromCodePoint(codePoint)\n if (style || styleAddendum) {\n return React.createElement('span', { style: { ...style, ...styleAddendum } }, text)\n } else {\n return React.createElement(React.Fragment, null, text)\n }\n }\n\n function Img(imgSrc: string, width: string = '1.15em') {\n const props = {\n src: imgSrc,\n style: {\n verticalAlign: 'text-top',\n fontSize: '1em',\n width,\n ...style\n }\n }\n return React.createElement('img', props)\n }\n}\n"],"mappings":"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","names":["assert","path","assert"]}
@@ -1,75 +0,0 @@
1
- // src/components/features/FeatureList.tsx
2
- import React from "react";
3
-
4
- // src/components/features/chevron.svg
5
- var chevron_default = "/assets/chevron-R2IYJD62.svg";
6
-
7
- // src/components/features/FeatureList.tsx
8
- function FeatureList({ features }) {
9
- const numberOfFeatures = features.length;
10
- const numberOfRows = Math.ceil(numberOfFeatures / 2);
11
- return /* @__PURE__ */ React.createElement("div", { id: "features" }, Array.from({ length: numberOfRows }, (_, i) => {
12
- const feature1Id = 2 * i + 0;
13
- const feature2Id = 2 * i + 1;
14
- const feature1 = features[feature1Id];
15
- const feature2 = features[feature2Id];
16
- const className = ["features-row", feature2 ? "" : "single-column"].filter(Boolean).join(" ");
17
- return /* @__PURE__ */ React.createElement("div", { className, key: i }, /* @__PURE__ */ React.createElement(Feature, { ...{ ...feature1, featureId: feature1Id } }), feature2 && /* @__PURE__ */ React.createElement(Feature, { ...{ ...feature2, featureId: feature2Id } }));
18
- }));
19
- }
20
- function Feature({ title, desc, learnMore, isSecondaryFeature, featureId }) {
21
- const name = `feature-${featureId}`;
22
- const rightSide = featureId % 2 === 1;
23
- return /* @__PURE__ */ React.createElement(React.Fragment, null, /* @__PURE__ */ React.createElement(FeatureHead, { name, hasLearnMore: !!learnMore, isSecondaryFeature }, " ", /* @__PURE__ */ React.createElement("h2", null, title), desc), !!learnMore && /* @__PURE__ */ React.createElement(LearnMore, { name, rightSide }, learnMore));
24
- }
25
- function FeatureHead({
26
- children,
27
- name,
28
- hasLearnMore,
29
- isSecondaryFeature,
30
- className = ""
31
- }) {
32
- return /* @__PURE__ */ React.createElement(
33
- "summary",
34
- {
35
- className: [
36
- className,
37
- "feature",
38
- "colorize-on-hover",
39
- hasLearnMore && "has-learn-more",
40
- isSecondaryFeature && "secondary-feature"
41
- ].filter(Boolean).join(" "),
42
- id: name && `feature-${name}`,
43
- style: { cursor: hasLearnMore && "pointer" || void 0 }
44
- },
45
- children,
46
- hasLearnMore && /* @__PURE__ */ React.createElement("div", { style: { textAlign: "center", marginTop: "1em" } }, /* @__PURE__ */ React.createElement(
47
- "button",
48
- {
49
- type: "button",
50
- style: {
51
- textAlign: "center",
52
- padding: "0 7px",
53
- paddingTop: 3,
54
- paddingBottom: 1,
55
- display: "inline-block",
56
- fontSize: "10px",
57
- textTransform: "uppercase",
58
- letterSpacing: "1px",
59
- fontWeight: 600
60
- }
61
- },
62
- /* @__PURE__ */ React.createElement("span", { className: "decolorize-5" }, "Learn more"),
63
- /* @__PURE__ */ React.createElement("br", null),
64
- /* @__PURE__ */ React.createElement("img", { className: "decolorize-4 chevron", src: chevron_default, height: "7", style: { marginTop: 2 } })
65
- ))
66
- );
67
- }
68
- function LearnMore({ children, name, rightSide }) {
69
- return /* @__PURE__ */ React.createElement("aside", { className: "learn-more " + (rightSide ? "right-side" : ""), id: `learn-more-${name}` }, children);
70
- }
71
-
72
- export {
73
- FeatureList
74
- };
75
- //# sourceMappingURL=chunk-C3OIVLKV.js.map
@@ -1 +0,0 @@
1
- {"version":3,"sources":["../src/components/features/FeatureList.tsx"],"sourcesContent":["import React from 'react'\nimport './FeatureList.css'\nimport iconChevron from './chevron.svg'\n\nexport { FeatureList }\n\ntype FeatureProps = {\n title: React.ReactNode\n desc: React.ReactNode\n learnMore?: React.ReactNode\n isSecondaryFeature?: true\n}\n\nfunction FeatureList({ features }: { features: FeatureProps[] }) {\n const numberOfFeatures = features.length\n const numberOfRows = Math.ceil(numberOfFeatures / 2)\n return (\n <div id=\"features\">\n {Array.from({ length: numberOfRows }, (_, i) => {\n const feature1Id = 2 * i + 0\n const feature2Id = 2 * i + 1\n const feature1 = features[feature1Id]\n const feature2 = features[feature2Id]\n const className = ['features-row', feature2 ? '' : 'single-column'].filter(Boolean).join(' ')\n return (\n <div className={className} key={i}>\n <Feature {...{ ...feature1, featureId: feature1Id }} />\n {feature2 && <Feature {...{ ...feature2, featureId: feature2Id }} />}\n </div>\n )\n })}\n </div>\n )\n}\n\nfunction Feature({ title, desc, learnMore, isSecondaryFeature, featureId }: FeatureProps & { featureId: number }) {\n const name = `feature-${featureId}`\n const rightSide = featureId % 2 === 1\n return (\n <>\n <FeatureHead name={name} hasLearnMore={!!learnMore} isSecondaryFeature={isSecondaryFeature}>\n {' '}\n <h2>{title}</h2>\n {desc}\n </FeatureHead>\n {!!learnMore && (\n <LearnMore name={name} rightSide={rightSide}>\n {learnMore}\n </LearnMore>\n )}\n </>\n )\n}\n\nfunction FeatureHead({\n children,\n name,\n hasLearnMore,\n isSecondaryFeature,\n className = ''\n}: {\n className?: string\n name?: string\n hasLearnMore?: boolean\n isSecondaryFeature?: true\n children: any\n}) {\n return (\n <summary\n className={[\n className,\n 'feature',\n 'colorize-on-hover',\n hasLearnMore && 'has-learn-more',\n isSecondaryFeature && 'secondary-feature'\n ]\n .filter(Boolean)\n .join(' ')}\n id={name && `feature-${name}`}\n style={{ cursor: (hasLearnMore && 'pointer') || undefined }}\n >\n {children}\n {hasLearnMore && (\n <div style={{ textAlign: 'center', marginTop: '1em' }}>\n <button\n type=\"button\"\n style={{\n textAlign: 'center',\n padding: '0 7px',\n paddingTop: 3,\n paddingBottom: 1,\n display: 'inline-block',\n fontSize: '10px',\n textTransform: 'uppercase',\n letterSpacing: '1px',\n fontWeight: 600\n }}\n >\n <span className=\"decolorize-5\">Learn more</span>\n <br />\n <img className=\"decolorize-4 chevron\" src={iconChevron} height=\"7\" style={{ marginTop: 2 }} />\n </button>\n </div>\n )}\n </summary>\n )\n}\nfunction LearnMore({ children, name, rightSide }: { name: string; children: any; rightSide: boolean }) {\n return (\n <aside className={'learn-more ' + (rightSide ? 'right-side' : '')} id={`learn-more-${name}`}>\n {children}\n </aside>\n )\n}\n"],"mappings":";AAAA,OAAO,WAAW;;;;;;AAalB,SAAS,YAAY,EAAE,SAAS,GAAiC;AAC/D,QAAM,mBAAmB,SAAS;AAClC,QAAM,eAAe,KAAK,KAAK,mBAAmB,CAAC;AACnD,SACE,oCAAC,SAAI,IAAG,cACL,MAAM,KAAK,EAAE,QAAQ,aAAa,GAAG,CAAC,GAAG,MAAM;AAC9C,UAAM,aAAa,IAAI,IAAI;AAC3B,UAAM,aAAa,IAAI,IAAI;AAC3B,UAAM,WAAW,SAAS;AAC1B,UAAM,WAAW,SAAS;AAC1B,UAAM,YAAY,CAAC,gBAAgB,WAAW,KAAK,eAAe,EAAE,OAAO,OAAO,EAAE,KAAK,GAAG;AAC5F,WACE,oCAAC,SAAI,WAAsB,KAAK,KAC9B,oCAAC,WAAS,GAAG,EAAE,GAAG,UAAU,WAAW,WAAW,GAAG,GACpD,YAAY,oCAAC,WAAS,GAAG,EAAE,GAAG,UAAU,WAAW,WAAW,GAAG,CACpE;AAAA,EAEJ,CAAC,CACH;AAEJ;AAEA,SAAS,QAAQ,EAAE,OAAO,MAAM,WAAW,oBAAoB,UAAU,GAAyC;AAChH,QAAM,OAAO,WAAW;AACxB,QAAM,YAAY,YAAY,MAAM;AACpC,SACE,0DACE,oCAAC,eAAY,MAAY,cAAc,CAAC,CAAC,WAAW,sBACjD,KACD,oCAAC,YAAI,KAAM,GACV,IACH,GACC,CAAC,CAAC,aACD,oCAAC,aAAU,MAAY,aACpB,SACH,CAEJ;AAEJ;AAEA,SAAS,YAAY;AAAA,EACnB;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA,YAAY;AACd,GAMG;AACD,SACE;AAAA,IAAC;AAAA;AAAA,MACC,WAAW;AAAA,QACT;AAAA,QACA;AAAA,QACA;AAAA,QACA,gBAAgB;AAAA,QAChB,sBAAsB;AAAA,MACxB,EACG,OAAO,OAAO,EACd,KAAK,GAAG;AAAA,MACX,IAAI,QAAQ,WAAW;AAAA,MACvB,OAAO,EAAE,QAAS,gBAAgB,aAAc,OAAU;AAAA;AAAA,IAEzD;AAAA,IACA,gBACC,oCAAC,SAAI,OAAO,EAAE,WAAW,UAAU,WAAW,MAAM,KAClD;AAAA,MAAC;AAAA;AAAA,QACC,MAAK;AAAA,QACL,OAAO;AAAA,UACL,WAAW;AAAA,UACX,SAAS;AAAA,UACT,YAAY;AAAA,UACZ,eAAe;AAAA,UACf,SAAS;AAAA,UACT,UAAU;AAAA,UACV,eAAe;AAAA,UACf,eAAe;AAAA,UACf,YAAY;AAAA,QACd;AAAA;AAAA,MAEA,oCAAC,UAAK,WAAU,kBAAe,YAAU;AAAA,MACzC,oCAAC,UAAG;AAAA,MACJ,oCAAC,SAAI,WAAU,wBAAuB,KAAK,iBAAa,QAAO,KAAI,OAAO,EAAE,WAAW,EAAE,GAAG;AAAA,IAC9F,CACF;AAAA,EAEJ;AAEJ;AACA,SAAS,UAAU,EAAE,UAAU,MAAM,UAAU,GAAwD;AACrG,SACE,oCAAC,WAAM,WAAW,iBAAiB,YAAY,eAAe,KAAK,IAAI,cAAc,UAClF,QACH;AAEJ;","names":[]}
@@ -1 +0,0 @@
1
- {"version":3,"sources":["../src/utils/assert.ts","../src/utils/isBrowser.ts"],"sourcesContent":["export { assert }\nexport { assertUsage }\n\nfunction assert(condition: unknown, debugInfo?: unknown): asserts condition {\n if (condition) {\n return\n }\n const hasDebugInfo = debugInfo !== undefined\n if (hasDebugInfo) {\n console.log(debugInfo)\n if (typeof debugInfo === 'object') {\n debugInfo = JSON.stringify(debugInfo)\n }\n }\n let errMsg = '[DocPress] Bug. Contact DocPress maintainer.'\n if (hasDebugInfo) {\n errMsg += ' Debug info: ' + String(debugInfo)\n }\n const err = new Error(errMsg)\n if (isBrowserAndDev()) {\n alert(err.stack)\n }\n throw err\n}\n\nfunction assertUsage(condition: unknown, msg: string): asserts condition {\n if (condition) {\n return\n }\n const err = new Error('[DocPress][Wrong Usage] ' + msg)\n if (isBrowserAndDev()) {\n alert(err.stack)\n }\n throw err\n}\n\nfunction isBrowserAndDev() {\n return typeof window !== 'undefined' && window?.location?.port !== ''\n}\n","export { isBrowser }\n\nfunction isBrowser() {\n return typeof window !== 'undefined'\n}\n"],"mappings":";AAGA,SAAS,OAAO,WAAoB,WAAwC;AAC1E,MAAI,WAAW;AACb;AAAA,EACF;AACA,QAAM,eAAe,cAAc;AACnC,MAAI,cAAc;AAChB,YAAQ,IAAI,SAAS;AACrB,QAAI,OAAO,cAAc,UAAU;AACjC,kBAAY,KAAK,UAAU,SAAS;AAAA,IACtC;AAAA,EACF;AACA,MAAI,SAAS;AACb,MAAI,cAAc;AAChB,cAAU,kBAAkB,OAAO,SAAS;AAAA,EAC9C;AACA,QAAM,MAAM,IAAI,MAAM,MAAM;AAC5B,MAAI,gBAAgB,GAAG;AACrB,UAAM,IAAI,KAAK;AAAA,EACjB;AACA,QAAM;AACR;AAEA,SAAS,YAAY,WAAoB,KAAgC;AACvE,MAAI,WAAW;AACb;AAAA,EACF;AACA,QAAM,MAAM,IAAI,MAAM,6BAA6B,GAAG;AACtD,MAAI,gBAAgB,GAAG;AACrB,UAAM,IAAI,KAAK;AAAA,EACjB;AACA,QAAM;AACR;AAEA,SAAS,kBAAkB;AApC3B;AAqCE,SAAO,OAAO,WAAW,iBAAe,sCAAQ,aAAR,mBAAkB,UAAS;AACrE;;;ACpCA,SAAS,YAAY;AACnB,SAAO,OAAO,WAAW;AAC3B;","names":[]}
@@ -1 +0,0 @@
1
- {"version":3,"sources":["../src/components/RepoLink.tsx","../src/renderer/usePageContext.tsx","../src/headings.ts"],"sourcesContent":["import React from 'react'\nimport { assert } from '../utils/server'\nimport { usePageContext } from '../renderer/usePageContext'\n\nexport { RepoLink }\nexport { isRepoLink }\n\nfunction isRepoLink(href: string) {\n return ['/examples/', '/docs/', '/boilerplates/', '.github/', '/test/'].some((start) => href.startsWith(start))\n}\n\nfunction RepoLink({ path, text, editMode }: { path: string; text?: string | JSX.Element; editMode?: true }) {\n const pageContext = usePageContext()\n assert(isRepoLink(path), { path })\n text = text || path\n if (!path.startsWith('/')) {\n path = '/' + path\n }\n const viewMode = (editMode && 'edit') || (path.endsWith('/') && 'tree') || 'blob'\n const { githubRepository } = pageContext.config.projectInfo\n assert(githubRepository.startsWith('https://github.com/'))\n const href = `${githubRepository}/${viewMode}/main${path}`\n return <a href={href}>{text}</a>\n}\n","// `usePageContext` allows us to access `pageContext` in any React component.\n// More infos: https://vite-plugin-ssr.com/pageContext-anywhere\n\nimport React, { useContext } from 'react'\nimport type { PageContextResolved } from '../config/resolvePageContext'\n\nexport { PageContextProvider }\nexport { usePageContext }\n\nconst Context = React.createContext<PageContextResolved>(undefined as any)\n\nfunction PageContextProvider({\n pageContext,\n children\n}: {\n pageContext: PageContextResolved\n children: React.ReactNode\n}) {\n return <Context.Provider value={pageContext}>{children}</Context.Provider>\n}\n\nfunction usePageContext(): PageContextResolved {\n const pageContext = useContext(Context)\n return pageContext\n}\n","import React from 'react'\nimport { assert, Emoji, EmojiName } from './utils/server'\n\nexport { getHeadings }\nexport { parseTitle }\n\nexport type Heading = Omit<HeadingDefinition, 'title' | 'titleInNav'> & {\n title: JSX.Element\n titleInNav: JSX.Element\n parentHeadings: Heading[]\n // Not sure why this is needed\n isListTitle?: true\n sectionTitles?: string[]\n}\nexport type HeadingWithoutLink = {\n url: string\n title: string | JSX.Element\n}\nexport type HeadingDefinition = HeadingBase &\n (\n | ({ level: 1; titleEmoji: EmojiName } & HeadingAbstract)\n | ({ level: 4 } & HeadingAbstract)\n | {\n level: 2\n isListTitle?: true\n sectionTitles?: string[]\n url: string\n }\n | {\n level: 3\n url: string\n }\n )\ntype HeadingBase = {\n title: string\n level: number\n url?: string\n titleDocument?: string\n titleInNav?: string\n // titleSize?: string\n}\ntype HeadingAbstract = {\n url?: undefined\n titleDocument?: undefined\n titleInNav?: undefined\n}\n\nfunction getHeadings(config: { headings: HeadingDefinition[]; headingsWithoutLink: HeadingWithoutLink[] }): {\n headings: Heading[]\n headingsWithoutLink: HeadingWithoutLink[]\n} {\n const headingsWithoutParent: Omit<Heading, 'parentHeadings'>[] = config.headings.map((heading: HeadingDefinition) => {\n const titleProcessed: JSX.Element = parseTitle(heading.title)\n\n const titleInNav = heading.titleInNav || heading.title\n let titleInNavProcessed: JSX.Element\n if ('isListTitle' in heading) {\n assert(heading.isListTitle === true)\n let titleParsed: JSX.Element = parseTitle(titleInNav)\n // if (heading.titleSize) {\n // titleParsed = React.createElement('span', { style: { fontSize: heading.titleSize } }, titleParsed)\n // }\n titleInNavProcessed = React.createElement(React.Fragment, {}, getListPrefix(), titleParsed)\n } else {\n titleInNavProcessed = parseTitle(titleInNav)\n }\n if ('titleEmoji' in heading) {\n assert(heading.titleEmoji)\n titleInNavProcessed = withEmoji(heading.titleEmoji, titleInNavProcessed)\n }\n\n const headingProcessed: Omit<Heading, 'parentHeadings'> = {\n ...heading,\n title: titleProcessed,\n titleInNav: titleInNavProcessed\n }\n return headingProcessed\n })\n\n const headings: Heading[] = []\n headingsWithoutParent.forEach((heading) => {\n const parentHeadings = findParentHeadings(heading, headings)\n headings.push({ ...heading, parentHeadings })\n })\n\n const headingsWithoutLink = config.headingsWithoutLink.map((headingsWithoutLink) => {\n const { url, title } = headingsWithoutLink\n assert(\n headings.find((heading) => heading.url === url) === undefined,\n `remove ${headingsWithoutLink.url} from headingsWithoutLink`\n )\n const titleProcessed = typeof title === 'string' ? parseTitle(title) : title\n return {\n ...headingsWithoutLink,\n title: titleProcessed\n }\n })\n\n assertHeadingsUrl([...headings, ...headingsWithoutLink])\n return { headings, headingsWithoutLink }\n}\n\nfunction findParentHeadings(heading: Omit<Heading, 'parentHeadings'>, headings: Heading[]) {\n const parentHeadings: Heading[] = []\n let levelCurrent = heading.level\n let listTitleParentFound = false\n headings\n .slice()\n .reverse()\n .forEach((parentCandidate) => {\n let isListTitleParent = false\n if (\n !listTitleParentFound &&\n levelCurrent === heading.level &&\n parentCandidate.level === heading.level &&\n !parentCandidate.isListTitle &&\n heading.isListTitle\n ) {\n isListTitleParent = true\n listTitleParentFound = true\n }\n\n const isParent = parentCandidate.level < levelCurrent\n\n if (isParent || isListTitleParent) {\n levelCurrent = parentCandidate.level\n parentHeadings.push(parentCandidate)\n }\n })\n return parentHeadings\n}\n\nfunction assertHeadingsUrl(headings: { url?: string }[]) {\n const urls: Record<string, true> = {}\n headings.forEach((heading) => {\n if (heading.url) {\n const { url } = heading\n assert(url.startsWith('/'))\n assert(!urls[url], { url })\n urls[url] = true\n }\n })\n}\n\nfunction getListPrefix() {\n const nonBreakingSpace = String.fromCodePoint(0x00a0)\n const bulletPoint = String.fromCodePoint(0x2022)\n return nonBreakingSpace + bulletPoint + nonBreakingSpace\n}\n\nfunction parseTitle(title: string): JSX.Element {\n type Part = { nodeType: 'text' | 'code'; content: string }\n const parts: Part[] = []\n let current: Part | undefined\n title.split('').forEach((letter) => {\n if (letter === '`') {\n if (current?.nodeType === 'code') {\n // </code>\n parts.push(current)\n current = undefined\n } else {\n // <code>\n if (current) {\n parts.push(current)\n }\n current = { nodeType: 'code', content: '' }\n }\n } else {\n if (!current) {\n current = { nodeType: 'text', content: '' }\n }\n current.content += letter\n }\n })\n if (current) {\n parts.push(current)\n }\n\n const titleJsx = React.createElement(\n React.Fragment,\n {},\n ...parts.map((part, i) =>\n React.createElement(part.nodeType === 'code' ? 'code' : React.Fragment, { key: i }, part.content)\n )\n )\n\n return titleJsx\n}\n\nfunction withEmoji(name: EmojiName, title: string | JSX.Element): JSX.Element {\n const style = { fontSize: '1.4em' }\n //return React.createElement(React.Fragment, null, Emoji({ name, style }), ' ', title)\n return React.createElement(\n 'span',\n { style },\n Emoji({ name }),\n ' ',\n React.createElement('span', { style: { fontSize: '1rem' } }, title)\n )\n}\n"],"mappings":";;;;;;;;AAAA,OAAOA,YAAW;;;ACGlB,OAAO,SAAS,kBAAkB;AAMlC,IAAM,UAAU,MAAM,cAAmC,MAAgB;AAEzE,SAAS,oBAAoB;AAAA,EAC3B;AAAA,EACA;AACF,GAGG;AACD,SAAO,oCAAC,QAAQ,UAAR,EAAiB,OAAO,eAAc,QAAS;AACzD;AAEA,SAAS,iBAAsC;AAC7C,QAAM,cAAc,WAAW,OAAO;AACtC,SAAO;AACT;;;ADjBA,SAAS,WAAW,MAAc;AAChC,SAAO,CAAC,cAAc,UAAU,kBAAkB,YAAY,QAAQ,EAAE,KAAK,CAAC,UAAU,KAAK,WAAW,KAAK,CAAC;AAChH;AAEA,SAAS,SAAS,EAAE,MAAM,MAAM,SAAS,GAAmE;AAC1G,QAAM,cAAc,eAAe;AACnC,SAAO,WAAW,IAAI,GAAG,EAAE,KAAK,CAAC;AACjC,SAAO,QAAQ;AACf,MAAI,CAAC,KAAK,WAAW,GAAG,GAAG;AACzB,WAAO,MAAM;AAAA,EACf;AACA,QAAM,WAAY,YAAY,UAAY,KAAK,SAAS,GAAG,KAAK,UAAW;AAC3E,QAAM,EAAE,iBAAiB,IAAI,YAAY,OAAO;AAChD,SAAO,iBAAiB,WAAW,qBAAqB,CAAC;AACzD,QAAM,OAAO,GAAG,oBAAoB,gBAAgB;AACpD,SAAO,gBAAAC,OAAA,cAAC,OAAE,QAAa,IAAK;AAC9B;;;AEvBA,OAAOC,YAAW;AA+ClB,SAAS,YAAY,QAGnB;AACA,QAAM,wBAA2D,OAAO,SAAS,IAAI,CAAC,YAA+B;AACnH,UAAM,iBAA8B,WAAW,QAAQ,KAAK;AAE5D,UAAM,aAAa,QAAQ,cAAc,QAAQ;AACjD,QAAI;AACJ,QAAI,iBAAiB,SAAS;AAC5B,aAAO,QAAQ,gBAAgB,IAAI;AACnC,UAAI,cAA2B,WAAW,UAAU;AAIpD,4BAAsBC,OAAM,cAAcA,OAAM,UAAU,CAAC,GAAG,cAAc,GAAG,WAAW;AAAA,IAC5F,OAAO;AACL,4BAAsB,WAAW,UAAU;AAAA,IAC7C;AACA,QAAI,gBAAgB,SAAS;AAC3B,aAAO,QAAQ,UAAU;AACzB,4BAAsB,UAAU,QAAQ,YAAY,mBAAmB;AAAA,IACzE;AAEA,UAAM,mBAAoD;AAAA,MACxD,GAAG;AAAA,MACH,OAAO;AAAA,MACP,YAAY;AAAA,IACd;AACA,WAAO;AAAA,EACT,CAAC;AAED,QAAM,WAAsB,CAAC;AAC7B,wBAAsB,QAAQ,CAAC,YAAY;AACzC,UAAM,iBAAiB,mBAAmB,SAAS,QAAQ;AAC3D,aAAS,KAAK,EAAE,GAAG,SAAS,eAAe,CAAC;AAAA,EAC9C,CAAC;AAED,QAAM,sBAAsB,OAAO,oBAAoB,IAAI,CAACC,yBAAwB;AAClF,UAAM,EAAE,KAAK,MAAM,IAAIA;AACvB;AAAA,MACE,SAAS,KAAK,CAAC,YAAY,QAAQ,QAAQ,GAAG,MAAM;AAAA,MACpD,UAAUA,qBAAoB;AAAA,IAChC;AACA,UAAM,iBAAiB,OAAO,UAAU,WAAW,WAAW,KAAK,IAAI;AACvE,WAAO;AAAA,MACL,GAAGA;AAAA,MACH,OAAO;AAAA,IACT;AAAA,EACF,CAAC;AAED,oBAAkB,CAAC,GAAG,UAAU,GAAG,mBAAmB,CAAC;AACvD,SAAO,EAAE,UAAU,oBAAoB;AACzC;AAEA,SAAS,mBAAmB,SAA0C,UAAqB;AACzF,QAAM,iBAA4B,CAAC;AACnC,MAAI,eAAe,QAAQ;AAC3B,MAAI,uBAAuB;AAC3B,WACG,MAAM,EACN,QAAQ,EACR,QAAQ,CAAC,oBAAoB;AAC5B,QAAI,oBAAoB;AACxB,QACE,CAAC,wBACD,iBAAiB,QAAQ,SACzB,gBAAgB,UAAU,QAAQ,SAClC,CAAC,gBAAgB,eACjB,QAAQ,aACR;AACA,0BAAoB;AACpB,6BAAuB;AAAA,IACzB;AAEA,UAAM,WAAW,gBAAgB,QAAQ;AAEzC,QAAI,YAAY,mBAAmB;AACjC,qBAAe,gBAAgB;AAC/B,qBAAe,KAAK,eAAe;AAAA,IACrC;AAAA,EACF,CAAC;AACH,SAAO;AACT;AAEA,SAAS,kBAAkB,UAA8B;AACvD,QAAM,OAA6B,CAAC;AACpC,WAAS,QAAQ,CAAC,YAAY;AAC5B,QAAI,QAAQ,KAAK;AACf,YAAM,EAAE,IAAI,IAAI;AAChB,aAAO,IAAI,WAAW,GAAG,CAAC;AAC1B,aAAO,CAAC,KAAK,MAAM,EAAE,IAAI,CAAC;AAC1B,WAAK,OAAO;AAAA,IACd;AAAA,EACF,CAAC;AACH;AAEA,SAAS,gBAAgB;AACvB,QAAM,mBAAmB,OAAO,cAAc,GAAM;AACpD,QAAM,cAAc,OAAO,cAAc,IAAM;AAC/C,SAAO,mBAAmB,cAAc;AAC1C;AAEA,SAAS,WAAW,OAA4B;AAE9C,QAAM,QAAgB,CAAC;AACvB,MAAI;AACJ,QAAM,MAAM,EAAE,EAAE,QAAQ,CAAC,WAAW;AAClC,QAAI,WAAW,KAAK;AAClB,WAAI,mCAAS,cAAa,QAAQ;AAEhC,cAAM,KAAK,OAAO;AAClB,kBAAU;AAAA,MACZ,OAAO;AAEL,YAAI,SAAS;AACX,gBAAM,KAAK,OAAO;AAAA,QACpB;AACA,kBAAU,EAAE,UAAU,QAAQ,SAAS,GAAG;AAAA,MAC5C;AAAA,IACF,OAAO;AACL,UAAI,CAAC,SAAS;AACZ,kBAAU,EAAE,UAAU,QAAQ,SAAS,GAAG;AAAA,MAC5C;AACA,cAAQ,WAAW;AAAA,IACrB;AAAA,EACF,CAAC;AACD,MAAI,SAAS;AACX,UAAM,KAAK,OAAO;AAAA,EACpB;AAEA,QAAM,WAAWD,OAAM;AAAA,IACrBA,OAAM;AAAA,IACN,CAAC;AAAA,IACD,GAAG,MAAM;AAAA,MAAI,CAAC,MAAM,MAClBA,OAAM,cAAc,KAAK,aAAa,SAAS,SAASA,OAAM,UAAU,EAAE,KAAK,EAAE,GAAG,KAAK,OAAO;AAAA,IAClG;AAAA,EACF;AAEA,SAAO;AACT;AAEA,SAAS,UAAU,MAAiB,OAA0C;AAC5E,QAAM,QAAQ,EAAE,UAAU,QAAQ;AAElC,SAAOA,OAAM;AAAA,IACX;AAAA,IACA,EAAE,MAAM;AAAA,IACR,MAAM,EAAE,KAAK,CAAC;AAAA,IACd;AAAA,IACAA,OAAM,cAAc,QAAQ,EAAE,OAAO,EAAE,UAAU,OAAO,EAAE,GAAG,KAAK;AAAA,EACpE;AACF;","names":["React","React","React","React","headingsWithoutLink"]}
@@ -1 +0,0 @@
1
- {"version":3,"sources":[],"sourcesContent":[],"mappings":"","names":[]}
@@ -1 +0,0 @@
1
- {"version":3,"sources":["../src/vite.config.ts","../src/markdownHeadingsVitePlugin.ts"],"sourcesContent":["import mdx from '@mdx-js/rollup'\nimport react from '@vitejs/plugin-react-swc'\nimport ssr from 'vite-plugin-ssr/plugin'\nimport { UserConfig } from 'vite'\nimport { markdownHeadingsVitePlugin } from './markdownHeadingsVitePlugin'\nimport rehypePrettyCode from 'rehype-pretty-code'\nimport remarkGfm from 'remark-gfm'\n\nconst root = process.cwd()\nconst prettyCode = [rehypePrettyCode, { theme: 'github-light' }]\nconst rehypePlugins: any = [prettyCode]\nconst remarkPlugins = [remarkGfm]\n\nconst config: UserConfig = {\n root,\n plugins: [\n react(),\n markdownHeadingsVitePlugin(),\n mdx({ rehypePlugins, remarkPlugins }),\n ssr({\n prerender: {\n noExtraDir: true\n },\n // @ts-ignore until new version is released TODO\n extensions: [{\n npmPackageName: '@brillout/docpress',\n pageFilesDist: [\n '@brillout/docpress/renderer/_default.page.server.js',\n '@brillout/docpress/renderer/_default.page.client.js'\n ],\n assetsDir: '/dist/'\n }],\n includeAssetsImportedByServer: true,\n disableAutoFullBuild: true\n })\n ],\n // TODO: remove `react`?\n optimizeDeps: { include: ['@mdx-js/react', 'react', 'react-dom'] },\n // @ts-ignore\n ssr: {\n noExternal: ['@brillout/docpress']\n },\n clearScreen: false\n}\n\nexport default config\n","import { assert, determineSectionUrlHash } from '../src/utils/server'\n\nexport { markdownHeadingsVitePlugin }\nexport type { MarkdownHeading }\n\ntype MarkdownHeading = {\n title: string\n id: string\n headingLevel: number\n titleAddendum?: string\n}\n\nfunction markdownHeadingsVitePlugin() {\n return {\n name: 'mdx-headings',\n enforce: 'pre',\n transform: async (code: string, id: string) => {\n if (!id.includes('.page.') || !id.endsWith('.mdx')) {\n return\n }\n const codeNew = transform(code)\n return codeNew\n }\n }\n}\n\nfunction transform(code: string) {\n const headings: MarkdownHeading[] = []\n let isCodeBlock = false\n let codeNew = code\n .split('\\n')\n .map((line) => {\n // Skip code blocks, e.g.\n // ~~~md\n // # Markdown Example\n // Bla\n // ~~~\n if (line.startsWith('~~~') || line.startsWith('```')) {\n isCodeBlock = !isCodeBlock\n return line\n }\n if (isCodeBlock) {\n return line\n }\n\n if (line.startsWith('#')) {\n const { id, headingLevel, title, headingHtml } = parseMarkdownHeading(line)\n headings.push({ id, headingLevel, title })\n return headingHtml\n }\n if (line.startsWith('<h')) {\n assert(false, { line })\n }\n\n return line\n })\n .join('\\n')\n const headingsExportCode = `export const headings = [${headings\n .map((heading) => JSON.stringify(heading))\n .join(', ')}];`\n codeNew += `\\n\\n${headingsExportCode}\\n`\n return codeNew\n}\n\nfunction parseMarkdownHeading(line: string): MarkdownHeading & { headingHtml: string } {\n const [lineBegin, ...lineWords] = line.split(' ')\n assert(lineBegin.split('#').join('') === '', { line, lineWords })\n const headingLevel = lineBegin.length\n\n const titleMdx = lineWords.join(' ')\n assert(!titleMdx.startsWith(' '), { line, lineWords })\n assert(titleMdx, { line, lineWords })\n\n const id = determineSectionUrlHash(titleMdx)\n const title = titleMdx\n\n const headingHtml = `<h${headingLevel} id=\"${id}\">${parseTitle(title)}</h${headingLevel}>`\n\n const heading = { headingLevel, title, id, headingHtml }\n return heading\n}\n\nfunction parseTitle(titleMarkdown: string): string {\n type Part = { nodeType: 'text' | 'code'; content: string }\n const parts: Part[] = []\n let current: Part | undefined\n titleMarkdown.split('').forEach((letter) => {\n if (letter === '`') {\n if (current?.nodeType === 'code') {\n // </code>\n parts.push(current)\n current = undefined\n } else {\n // <code>\n if (current) {\n parts.push(current)\n }\n current = { nodeType: 'code', content: '' }\n }\n } else {\n if (!current) {\n current = { nodeType: 'text', content: '' }\n }\n current.content += letter\n }\n })\n if (current) {\n parts.push(current)\n }\n\n const titleHtml = parts\n .map((part) => {\n if (part.nodeType === 'code') {\n return `<code>${serializeText(part.content)}</code>`\n } else {\n assert(part.nodeType === 'text', { parts })\n return serializeText(part.content)\n }\n })\n .join('')\n\n return titleHtml\n\n function serializeText(text: string) {\n const textEscaped = text.split(\"'\").join(\"\\\\'\")\n return `{'${textEscaped}'}`\n }\n}\n"],"mappings":"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","names":[]}
@@ -1 +0,0 @@
1
- {"version":3,"sources":["../../src/cli/index.ts"],"sourcesContent":["import { build, preview } from 'vite'\nimport config from '../vite.config'\nimport { prerender } from 'vite-plugin-ssr/prerender'\nconst args = process.argv.filter(Boolean).slice(2)\nconst isDev = args.includes('dev')\nconst isPreview = args.includes('preview')\nconst isBuild = args.includes('build')\nError.stackTraceLimit = Infinity\n\ncli()\n\nasync function cli() {\n if (isDev) {\n await import('./devServer')\n } else if (isBuild) {\n await build(config)\n await build({ ...config, build: { ssr: true } })\n await prerender({ viteConfig: (config as any) })\n } else if (isPreview) {\n const server = await preview({ ...config, preview: { host: true } })\n server.printUrls()\n } else {\n throw new Error(\n `DocPress: unknown command \\`$ docpress ${args.join(\n ' '\n )}\\`. Known commands: \\`$ docpress dev\\` and \\`$ docpress preview\\`.`\n )\n }\n}\n"],"mappings":";;;;;;;;AAAA,SAAS,OAAO,eAAe;AAE/B,SAAS,iBAAiB;AAC1B,IAAM,OAAO,QAAQ,KAAK,OAAO,OAAO,EAAE,MAAM,CAAC;AACjD,IAAM,QAAQ,KAAK,SAAS,KAAK;AACjC,IAAM,YAAY,KAAK,SAAS,SAAS;AACzC,IAAM,UAAU,KAAK,SAAS,OAAO;AACrC,MAAM,kBAAkB;AAExB,IAAI;AAEJ,eAAe,MAAM;AACnB,MAAI,OAAO;AACT,UAAM,OAAO;AAAA,EACf,WAAW,SAAS;AAClB,UAAM,MAAM,mBAAM;AAClB,UAAM,MAAM,EAAE,GAAG,qBAAQ,OAAO,EAAE,KAAK,KAAK,EAAE,CAAC;AAC/C,UAAM,UAAU,EAAE,YAAa,oBAAe,CAAC;AAAA,EACjD,WAAW,WAAW;AACpB,UAAM,SAAS,MAAM,QAAQ,EAAE,GAAG,qBAAQ,SAAS,EAAE,MAAM,KAAK,EAAE,CAAC;AACnE,WAAO,UAAU;AAAA,EACnB,OAAO;AACL,UAAM,IAAI;AAAA,MACR,0CAA0C,KAAK;AAAA,QAC7C;AAAA,MACF;AAAA,IACF;AAAA,EACF;AACF;","names":[]}
@@ -1 +0,0 @@
1
- {"version":3,"sources":["../../../src/components/features/FeatureList.css"],"sourcesContent":["@media screen and (min-width: 840px) {\n .features-row {\n display: grid;\n grid-template-columns: repeat(2, 1fr);\n }\n .features-row summary:nth-of-type(1) {\n grid-row: 1;\n grid-column: 1 / 2;\n }\n .features-row summary:nth-of-type(2) {\n grid-row: 1;\n grid-column: 2 / 3;\n }\n .features-row aside {\n grid-row: 2;\n grid-column: 1 / 3;\n }\n}\n\n@media screen and (min-width: 840px) {\n .features-row.single-column .feature {\n grid-column: 1 / span 2 !important;\n width: 100% !important;\n max-width: calc(1010px / 2) !important;\n margin: auto !important;\n }\n}\n\n#features {\n margin: auto;\n margin-top: 0;\n max-width: 1080px;\n}\n\n#features summary p {\n margin: 10px 0;\n}\n#features h2 {\n margin-bottom: 0.7em;\n margin-top: 0.5em;\n}\n#features .secondary-feature h2 {\n font-size: 1.1em;\n margin-bottom: 0.7em;\n}\n.learn-more h3:first-of-type {\n margin-top: 15px;\n}\n\n.learn-more {\n border: var(--border-width) solid var(--border-color);\n padding: 10px 8px;\n}\n@media screen and (min-width: 840px) {\n .learn-more {\n max-width: 886px;\n border-radius: var(--border-radius);\n }\n}\naside.learn-more:not(.right-side) {\n border-top-left-radius: 0;\n}\naside.learn-more.right-side {\n border-top-right-radius: 0;\n justify-self: end;\n width: 100%;\n}\n@media screen and (max-width: 340px) {\n .learn-more {\n padding-right: 5px;\n padding-left: 5px;\n }\n}\n.learn-more {\n display: none;\n}\n.learn-more.selected {\n display: block;\n}\n#features {\n --border-radius: 20px;\n --border-width: 10px;\n --border-color: #f6f6f6;\n}\n.feature {\n padding: 8px;\n border-width: var(--border-width);\n border-style: solid;\n border-color: transparent;\n border-top-left-radius: var(--border-radius);\n border-top-right-radius: var(--border-radius);\n}\n.selected {\n border-color: var(--border-color);\n background-color: #fcfcfc;\n}\n.feature.selected {\n border-bottom: 0 !important;\n z-index: 1;\n}\n\n/* Hide top border of .learn-more */\n.learn-more {\n position: relative;\n top: calc(-1 * var(--border-width));\n}\n.feature {\n position: relative;\n z-index: 1;\n}\n\n.feature .chevron {\n transition: filter 0.3s ease-in-out, transform 0.3s ease-in-out !important;\n}\n.feature.selected .chevron {\n transform: rotate(180deg);\n}\n"],"mappings":";AAAA;AACE;AACE;AACA;AAAA;AAEF;AACE;AACA;AAAA;AAEF;AACE;AACA;AAAA;AAEF;AACE;AACA;AAAA;AAAA;AAIJ;AACE;AACE;AACA;AACA;AACA;AAAA;AAAA;AAIJ;AACE;AACA;AACA;AAAA;AAGF;AACE;AAAA;AAEF;AACE;AACA;AAAA;AAEF;AACE;AACA;AAAA;AAEF;AACE;AAAA;AAGF;AACE;AACA;AAAA;AAEF;AACE;AACE;AACA;AAAA;AAAA;AAGJ;AACE;AAAA;AAEF;AACE;AACA;AACA;AAAA;AAEF;AACE;AACE;AACA;AAAA;AAAA;AAGJ;AACE;AAAA;AAEF;AACE;AAAA;AAEF;AACE;AACA;AACA;AAAA;AAEF;AACE;AACA;AACA;AACA;AACA;AACA;AAAA;AAEF;AACE;AACA;AAAA;AAEF;AACE;AACA;AAAA;AAIF;AACE;AACA;AAAA;AAEF;AACE;AACA;AAAA;AAGF;AACE;AAAA;AAEF;AACE;AAAA;","names":[]}
@@ -1 +0,0 @@
1
- {"version":3,"sources":[],"sourcesContent":[],"mappings":"","names":[]}
@@ -1 +0,0 @@
1
- {"version":3,"sources":["../../../src/components/features/initFeatureList.ts"],"sourcesContent":["import { assert } from '../../utils/client'\n\naddTwitterWidgets()\naddFeatureClickHandlers()\nwindow.__docpress_hydrationFinished = true\n\nfunction addTwitterWidgets() {\n loadScript('https://platform.twitter.com/widgets.js')\n}\n\nfunction addFeatureClickHandlers() {\n const featureEls: HTMLElement[] = Array.from(\n document.getElementById('features')!.querySelectorAll('.feature.has-learn-more')\n )\n featureEls.forEach((featureEl) => {\n featureEl.onclick = () => {\n expandLearnMore(featureEl)\n }\n })\n}\n\nfunction expandLearnMore(featureEl: HTMLElement) {\n const featureId = featureEl.id\n assert(featureId.startsWith('feature-'), { featureId })\n const featureName = featureId.slice('feature-'.length)\n\n const selectedClass = 'selected'\n const learnId = 'learn-more-' + featureName\n const learnEl = document.getElementById(learnId)\n assert(learnEl, { learnId })\n\n const isExpanded = featureEl.classList.contains(selectedClass)\n\n if (!isExpanded) {\n const rowEl = featureEl.parentNode as HTMLElement\n if (getComputedStyle(rowEl, 'display') === 'grid') {\n ;[\n ...(rowEl.querySelectorAll('.learn-more') as any as HTMLElement[]),\n ...(rowEl.querySelectorAll('.feature') as any as HTMLElement[])\n ].forEach((el) => {\n el.classList.remove(selectedClass)\n })\n }\n }\n\n ;[featureEl, learnEl].forEach((el) => {\n el.classList.toggle(selectedClass)\n })\n}\n\nfunction loadScript(scriptUrl: string): void {\n assert(scriptUrl.startsWith('https://'))\n const scriptEl = document.createElement('script')\n scriptEl.src = scriptUrl\n scriptEl.async = true\n scriptEl.setAttribute('charset', 'utf-8')\n document.getElementsByTagName('head')[0].appendChild(scriptEl)\n}\n\nfunction getComputedStyle(el: HTMLElement, styleProp: string) {\n return window.document.defaultView!.getComputedStyle(el).getPropertyValue(styleProp)\n}\n\ndeclare global {\n var __docpress_hydrationFinished: undefined | true\n}\n"],"mappings":";;;;;;AAEA,kBAAkB;AAClB,wBAAwB;AACxB,OAAO,+BAA+B;AAEtC,SAAS,oBAAoB;AAC3B,aAAW,yCAAyC;AACtD;AAEA,SAAS,0BAA0B;AACjC,QAAM,aAA4B,MAAM;AAAA,IACtC,SAAS,eAAe,UAAU,EAAG,iBAAiB,yBAAyB;AAAA,EACjF;AACA,aAAW,QAAQ,CAAC,cAAc;AAChC,cAAU,UAAU,MAAM;AACxB,sBAAgB,SAAS;AAAA,IAC3B;AAAA,EACF,CAAC;AACH;AAEA,SAAS,gBAAgB,WAAwB;AAC/C,QAAM,YAAY,UAAU;AAC5B,SAAO,UAAU,WAAW,UAAU,GAAG,EAAE,UAAU,CAAC;AACtD,QAAM,cAAc,UAAU,MAAM,WAAW,MAAM;AAErD,QAAM,gBAAgB;AACtB,QAAM,UAAU,gBAAgB;AAChC,QAAM,UAAU,SAAS,eAAe,OAAO;AAC/C,SAAO,SAAS,EAAE,QAAQ,CAAC;AAE3B,QAAM,aAAa,UAAU,UAAU,SAAS,aAAa;AAE7D,MAAI,CAAC,YAAY;AACf,UAAM,QAAQ,UAAU;AACxB,QAAI,iBAAiB,OAAO,SAAS,MAAM,QAAQ;AACjD;AAAC;AAAA,QACC,GAAI,MAAM,iBAAiB,aAAa;AAAA,QACxC,GAAI,MAAM,iBAAiB,UAAU;AAAA,MACvC,EAAE,QAAQ,CAAC,OAAO;AAChB,WAAG,UAAU,OAAO,aAAa;AAAA,MACnC,CAAC;AAAA,IACH;AAAA,EACF;AAEA;AAAC,GAAC,WAAW,OAAO,EAAE,QAAQ,CAAC,OAAO;AACpC,OAAG,UAAU,OAAO,aAAa;AAAA,EACnC,CAAC;AACH;AAEA,SAAS,WAAW,WAAyB;AAC3C,SAAO,UAAU,WAAW,UAAU,CAAC;AACvC,QAAM,WAAW,SAAS,cAAc,QAAQ;AAChD,WAAS,MAAM;AACf,WAAS,QAAQ;AACjB,WAAS,aAAa,WAAW,OAAO;AACxC,WAAS,qBAAqB,MAAM,EAAE,GAAG,YAAY,QAAQ;AAC/D;AAEA,SAAS,iBAAiB,IAAiB,WAAmB;AAC5D,SAAO,OAAO,SAAS,YAAa,iBAAiB,EAAE,EAAE,iBAAiB,SAAS;AACrF;","names":[]}
@@ -1 +0,0 @@
1
- {"version":3,"sources":["../src/cli/devServer.ts"],"sourcesContent":["import express from 'express'\nimport * as vite from 'vite'\nimport { renderPage } from 'vite-plugin-ssr'\nimport config from '../vite.config'\nconst viteVersion = (vite as { version?: string }).version || '2.?.?'\n\nstartServer()\n\nasync function startServer() {\n const app = express()\n\n const viteDevServer = await vite.createServer({\n ...config,\n server: { middlewareMode: viteVersion.startsWith('2') ? 'ssr' : true }\n })\n app.use(viteDevServer.middlewares)\n\n app.get('*', async (req, res, next) => {\n const pageContextInit = {\n urlOriginal: req.originalUrl\n }\n const pageContext = await renderPage(pageContextInit)\n if (!pageContext.httpResponse) return next()\n const { body, statusCode, contentType } = pageContext.httpResponse\n res.status(statusCode).type(contentType).send(body)\n })\n\n const port = 3000\n app.listen(port)\n console.log(`Server running at http://localhost:${port}`)\n}\n"],"mappings":";;;;;;;;AAAA,OAAO,aAAa;AACpB,YAAY,UAAU;AACtB,SAAS,kBAAkB;AAE3B,IAAM,cAA6C,gBAAW;AAE9D,YAAY;AAEZ,eAAe,cAAc;AAC3B,QAAM,MAAM,QAAQ;AAEpB,QAAM,gBAAgB,MAAW,kBAAa;AAAA,IAC5C,GAAG;AAAA,IACH,QAAQ,EAAE,gBAAgB,YAAY,WAAW,GAAG,IAAI,QAAQ,KAAK;AAAA,EACvE,CAAC;AACD,MAAI,IAAI,cAAc,WAAW;AAEjC,MAAI,IAAI,KAAK,OAAO,KAAK,KAAK,SAAS;AACrC,UAAM,kBAAkB;AAAA,MACtB,aAAa,IAAI;AAAA,IACnB;AACA,UAAM,cAAc,MAAM,WAAW,eAAe;AACpD,QAAI,CAAC,YAAY;AAAc,aAAO,KAAK;AAC3C,UAAM,EAAE,MAAM,YAAY,YAAY,IAAI,YAAY;AACtD,QAAI,OAAO,UAAU,EAAE,KAAK,WAAW,EAAE,KAAK,IAAI;AAAA,EACpD,CAAC;AAED,QAAM,OAAO;AACb,MAAI,OAAO,IAAI;AACf,UAAQ,IAAI,sCAAsC,MAAM;AAC1D;","names":[]}
@@ -1 +0,0 @@
1
- {"version":3,"sources":["../src/components/P.css","../src/components/features/FeatureList.css"],"sourcesContent":["/* Copied from Chrome's user agent stylesheet */\ndiv.paragraph {\n display: block;\n margin-block-start: 1em;\n margin-block-end: 1em;\n margin-inline-start: 0px;\n margin-inline-end: 0px;\n}\n","@media screen and (min-width: 840px) {\n .features-row {\n display: grid;\n grid-template-columns: repeat(2, 1fr);\n }\n .features-row summary:nth-of-type(1) {\n grid-row: 1;\n grid-column: 1 / 2;\n }\n .features-row summary:nth-of-type(2) {\n grid-row: 1;\n grid-column: 2 / 3;\n }\n .features-row aside {\n grid-row: 2;\n grid-column: 1 / 3;\n }\n}\n\n@media screen and (min-width: 840px) {\n .features-row.single-column .feature {\n grid-column: 1 / span 2 !important;\n width: 100% !important;\n max-width: calc(1010px / 2) !important;\n margin: auto !important;\n }\n}\n\n#features {\n margin: auto;\n margin-top: 0;\n max-width: 1080px;\n}\n\n#features summary p {\n margin: 10px 0;\n}\n#features h2 {\n margin-bottom: 0.7em;\n margin-top: 0.5em;\n}\n#features .secondary-feature h2 {\n font-size: 1.1em;\n margin-bottom: 0.7em;\n}\n.learn-more h3:first-of-type {\n margin-top: 15px;\n}\n\n.learn-more {\n border: var(--border-width) solid var(--border-color);\n padding: 10px 8px;\n}\n@media screen and (min-width: 840px) {\n .learn-more {\n max-width: 886px;\n border-radius: var(--border-radius);\n }\n}\naside.learn-more:not(.right-side) {\n border-top-left-radius: 0;\n}\naside.learn-more.right-side {\n border-top-right-radius: 0;\n justify-self: end;\n width: 100%;\n}\n@media screen and (max-width: 340px) {\n .learn-more {\n padding-right: 5px;\n padding-left: 5px;\n }\n}\n.learn-more {\n display: none;\n}\n.learn-more.selected {\n display: block;\n}\n#features {\n --border-radius: 20px;\n --border-width: 10px;\n --border-color: #f6f6f6;\n}\n.feature {\n padding: 8px;\n border-width: var(--border-width);\n border-style: solid;\n border-color: transparent;\n border-top-left-radius: var(--border-radius);\n border-top-right-radius: var(--border-radius);\n}\n.selected {\n border-color: var(--border-color);\n background-color: #fcfcfc;\n}\n.feature.selected {\n border-bottom: 0 !important;\n z-index: 1;\n}\n\n/* Hide top border of .learn-more */\n.learn-more {\n position: relative;\n top: calc(-1 * var(--border-width));\n}\n.feature {\n position: relative;\n z-index: 1;\n}\n\n.feature .chevron {\n transition: filter 0.3s ease-in-out, transform 0.3s ease-in-out !important;\n}\n.feature.selected .chevron {\n transform: rotate(180deg);\n}\n"],"mappings":";AACA;AACE;AACA;AACA;AACA;AACA;AAAA;;;ACNF;AACE;AACE;AACA;AAAA;AAEF;AACE;AACA;AAAA;AAEF;AACE;AACA;AAAA;AAEF;AACE;AACA;AAAA;AAAA;AAIJ;AACE;AACE;AACA;AACA;AACA;AAAA;AAAA;AAIJ;AACE;AACA;AACA;AAAA;AAGF;AACE;AAAA;AAEF;AACE;AACA;AAAA;AAEF;AACE;AACA;AAAA;AAEF;AACE;AAAA;AAGF;AACE;AACA;AAAA;AAEF;AACE;AACE;AACA;AAAA;AAAA;AAGJ;AACE;AAAA;AAEF;AACE;AACA;AACA;AAAA;AAEF;AACE;AACE;AACA;AAAA;AAAA;AAGJ;AACE;AAAA;AAEF;AACE;AAAA;AAEF;AACE;AACA;AACA;AAAA;AAEF;AACE;AACA;AACA;AACA;AACA;AACA;AAAA;AAEF;AACE;AACA;AAAA;AAEF;AACE;AACA;AAAA;AAIF;AACE;AACA;AAAA;AAEF;AACE;AACA;AAAA;AAGF;AACE;AAAA;AAEF;AACE;AAAA;","names":[]}
package/dist/index.js.map DELETED
@@ -1 +0,0 @@
1
- {"version":3,"sources":["../src/components/Link.tsx","../src/components/DocLink.tsx","../src/components/P.tsx","../src/components/Info.tsx","../src/components/ReadingRecommendation.tsx","../src/components/Note.tsx","../src/components/ImportMeta.tsx","../src/components/HorizontalLine.tsx","../src/components/Sponsors.tsx","../src/components/CodeBlock.tsx"],"sourcesContent":["import React from 'react'\nimport { DocLink } from './DocLink'\nimport { isRepoLink, RepoLink } from './RepoLink'\n\nexport { Link }\n\nfunction Link(props: {\n href: string\n text?: string | JSX.Element\n noBreadcrumb?: true\n doNotInferSectionTitle?: true\n}) {\n if (isRepoLink(props.href)) {\n return <RepoLink path={props.href} text={props.text} />\n } else {\n return <DocLink {...props} />\n }\n}\n","import React from 'react'\nimport { getHeadings, parseTitle, Heading, HeadingWithoutLink } from '../headings'\nimport { PageContextResolved } from '../config/resolvePageContext'\nimport { usePageContext } from '../renderer/usePageContext'\nimport { assert, assertUsage, determineSectionTitle, determineSectionUrlHash } from '../utils/server'\n\nexport { DocLink }\n\nfunction DocLink({\n href,\n text,\n noBreadcrumb,\n doNotInferSectionTitle\n}: {\n href: string\n text?: string | JSX.Element\n noBreadcrumb?: true\n doNotInferSectionTitle?: true\n}) {\n const pageContext = usePageContext()\n return <a href={href}>{text || getTitle({ href, noBreadcrumb, pageContext, doNotInferSectionTitle })}</a>\n}\n\nfunction getTitle({\n href,\n noBreadcrumb,\n pageContext,\n doNotInferSectionTitle\n}: {\n href: string\n noBreadcrumb: true | undefined\n pageContext: PageContextResolved\n doNotInferSectionTitle: true | undefined\n}): string | JSX.Element {\n let urlHash: string | null = null\n let hrefWithoutHash: string = href\n if (href.includes('#')) {\n ;[hrefWithoutHash, urlHash] = href.split('#')\n }\n const heading = findHeading(hrefWithoutHash, pageContext)\n\n const breadcrumbs: (string | JSX.Element)[] = []\n\n if ('parentHeadings' in heading) {\n breadcrumbs.push(\n ...heading.parentHeadings\n .slice()\n .reverse()\n .map(({ title }) => title)\n )\n }\n\n breadcrumbs.push(heading.title)\n\n if (urlHash) {\n let sectionTitle: string | JSX.Element | undefined = undefined\n if ('sectionTitles' in heading && heading.sectionTitles) {\n heading.sectionTitles.forEach((title) => {\n if (determineSectionUrlHash(title) === urlHash) {\n sectionTitle = parseTitle(title)\n }\n })\n }\n if (!sectionTitle) {\n assertUsage(\n !doNotInferSectionTitle,\n `Page section title not found for <Link href=\"\\`${href}\\`\" doNotInferSectionTitle={true} />.`\n )\n sectionTitle = determineSectionTitle(href, pageContext.config.titleNormalCase)\n }\n breadcrumbs.push(sectionTitle)\n }\n\n {\n const linkIsOnSamePage = heading.url === pageContext.urlPathname\n if (noBreadcrumb || linkIsOnSamePage) {\n return breadcrumbs[breadcrumbs.length - 1]\n }\n }\n\n return (\n <>\n {breadcrumbs.map((title, i) => {\n const seperator = i === 0 ? <></> : ' > '\n return (\n <React.Fragment key={i}>\n {seperator}\n {title}\n </React.Fragment>\n )\n })}\n </>\n )\n}\n\nfunction findHeading(href: string, pageContext: PageContextResolved): Heading | HeadingWithoutLink {\n assert(href.startsWith('/'), `\\`href==='${href}'\\` but should start with \\`/\\`.`)\n const { headings, headingsWithoutLink } = getHeadings(pageContext.config)\n {\n const heading = headingsWithoutLink.find(({ url }) => href === url)\n if (heading) {\n return heading\n }\n }\n const heading = headings.find(({ url }) => href === url)\n assert(heading, `Could not find page \\`${href}\\`. Does it exist?`)\n return heading\n}\n","import React from 'react'\nimport './P.css'\n\nexport { P }\n\nfunction P(props: React.HTMLProps<HTMLDivElement>) {\n return <div {...props} className={'paragraph'} />\n}\n","import React from 'react'\nimport { P } from './P'\n\nexport { Info }\n\nfunction Info({ children }: { children: React.ReactNode }) {\n return (\n <blockquote>\n <P>{children}</P>\n </blockquote>\n )\n}\n","import React from 'react'\nimport { Info } from './Info'\nimport { Link } from './Link'\n\nexport { ReadingRecommendation }\n\nfunction ReadingRecommendation({ tour, links }: { tour?: true; links: string[] }) {\n const multiple = links.length + (tour ? 1 : 0) > 1\n return (\n <Info>\n {multiple ? ' ' : ''}\n <b>Reading Recommendation{multiple ? '.' : ': '}</b>\n {(() => {\n if (!multiple) {\n const link = tour ? <TourLink /> : <Link href={links[0]} />\n return (\n <>\n {link}\n {'.'}\n </>\n )\n }\n return (\n <ul\n style={{\n marginLeft: 18,\n marginTop: 11\n }}\n >\n {tour && (\n <li>\n <TourLink />\n </li>\n )}\n {links.map((link, i) => (\n <li key={i}>\n <Link href={link} />\n </li>\n ))}\n </ul>\n )\n })()}\n </Info>\n )\n}\n\nfunction TourLink() {\n return (\n <>\n <Link href={'/react-tour'} noBreadcrumb={true} /> or <Link href={'/vue-tour'} noBreadcrumb={true} />\n </>\n )\n}\n","export { Note }\n\nimport React from 'react'\nimport { assert } from '../utils/server'\n\nfunction Note({\n type,\n icon,\n children\n}: {\n icon: JSX.Element | string\n type?: 'error' | 'warning'\n children: JSX.Element\n}) {\n assert(type === undefined || ['error', 'warning'].includes(type))\n if (!icon) {\n if (type === 'error') {\n icon = ':no_entry:'\n }\n if (type === 'warning') {\n icon = ':warning:'\n }\n }\n return (\n <blockquote className={type}>\n <div style={{ marginBottom: 20 }} />\n {icon} {children}\n <div style={{ marginTop: 20 }} />\n </blockquote>\n )\n}\n","import React from 'react'\nimport { assert } from '../utils/server'\n\nexport { ImportMeta }\n\nfunction ImportMeta({ prop }: { prop: string }) {\n assert(!prop.startsWith('import'))\n assert(!prop.startsWith('.'))\n const text = 'imp' + 'ort.meta.' + prop\n return <code>{text}</code>\n}\n","import React from 'react'\n\nexport { HorizontalLine }\n\nfunction HorizontalLine({ primary }: { primary?: true }) {\n return (\n <div className={'header-separator-line ' + (primary ? 'primary' : '')} style={{ textAlign: 'center' }}>\n <hr\n style={{\n display: 'inline-block',\n margin: 0,\n border: 0,\n borderTop: '1px solid #eee',\n maxWidth: 500,\n width: '80%'\n }}\n />\n </div>\n )\n}\n","import React from 'react'\nimport iconHeart from '../icons/heart.svg'\nimport { usePageContext } from '../renderer/usePageContext'\nimport { assert, Emoji } from '../utils/server'\nimport ccoliLogo from './Sponsors/companyLogos/ccoli.svg'\nimport contraLogo from './Sponsors/companyLogos/contra.svg'\nimport mfqsLogo from './Sponsors/companyLogos/mfqs.svg'\nimport medalGold from './Sponsors/medalGold.svg'\nimport medalSilver from './Sponsors/medalSilver.svg'\nimport medalBronze from './Sponsors/medalBronze.svg'\nimport labelBgImg from './Sponsors/label.svg'\n\nexport { Sponsors }\n\ntype Plan = 'FREE_SLOT' | 'bronze' | 'silver' | 'gold' | 'platinum'\n\ntype SponsorCompany = {\n companyName: string\n companyLogo: string\n website: string\n plan: Plan\n}\ntype SponsorIndividual = {\n username: string\n}\ntype Sponsor = SponsorCompany | SponsorIndividual\n\nconst sponsors: Sponsor[] = [\n {\n companyName: 'Contra',\n companyLogo: contraLogo,\n plan: 'gold',\n website: 'https://contra.com'\n },\n {\n companyName: 'ccoli',\n companyLogo: ccoliLogo,\n plan: 'silver',\n website: 'https://ccoli.co'\n },\n {\n companyName: 'My Favorite Quilt Store',\n companyLogo: mfqsLogo,\n plan: 'bronze',\n website: 'https://myfavoritequiltstore.com'\n },\n {\n username: 'spacedawwwg'\n },\n {\n username: 'codthing'\n },\n {\n username: 'Junaidhkn'\n },\n {\n username: 'zgfdev'\n }\n]\n\nfunction Sponsors() {\n const pageContext = usePageContext()\n const { projectInfo } = pageContext.config\n return (\n <div style={{ textAlign: 'center', marginTop: 19 }}>\n <a\n className=\"button\"\n href=\"https://github.com/sponsors/brillout\"\n style={{\n color: 'inherit',\n display: 'inline-flex',\n alignItems: 'center',\n padding: '5px 10px',\n marginBottom: 10\n }}\n >\n <img src={iconHeart} height={22} /> <span style={{ marginLeft: 7, fontSize: '1.07em' }}>Sponsor</span>\n </a>\n <div></div>\n <div style={{ maxWidth: 400, display: 'inline-block', marginTop: 12, marginBottom: 12 }}>\n {projectInfo.projectNameJsx || projectInfo.projectName} is free and open source, made possible by wonderful\n sponsors.\n </div>\n <div style={{ display: 'flex', flexWrap: 'wrap', justifyContent: 'center', alignItems: 'end' }}>\n {sponsors.map((sponsor, i) => (\n <SponsorDiv sponsor={sponsor} key={i} />\n ))}\n </div>\n </div>\n )\n}\n\nfunction SponsorDiv({ sponsor }: { sponsor: Sponsor }) {\n let imgSrc: string\n let imgAlt: string | undefined\n let width: number\n let height: number\n let website: string\n let padding: number\n let backgroundColor = '#f0f0f0'\n let label: null | JSX.Element = null\n if ('username' in sponsor) {\n website = `https://github.com/${sponsor.username}`\n imgSrc = `https://github.com/${sponsor.username}.png?size=30`\n width = 30\n height = 30\n padding = 0\n backgroundColor = 'none'\n } else {\n imgSrc = sponsor.companyLogo\n website = sponsor.website\n const size = getSize(sponsor.plan)\n width = size.width\n height = size.height\n padding = size.padding\n imgAlt = sponsor.companyName\n label = <Label sponsor={sponsor} />\n }\n const marginWidth = 5\n return (\n <a\n href={website}\n style={{\n margin: `10px ${marginWidth}px`\n }}\n >\n {label}\n <div\n style={{\n backgroundColor,\n borderRadius: 7,\n overflow: 'hidden',\n width,\n maxWidth: `calc(100vw - 2 * var(--main-view-padding) - 2 * ${marginWidth}px)`,\n height,\n display: 'flex',\n alignItems: 'center',\n flexDirection: 'column',\n justifyContent: 'center'\n }}\n >\n <img\n style={{ width: `calc(100% - ${padding}px)`, height: height - padding, zIndex: 2 }}\n src={imgSrc}\n alt={imgAlt}\n />\n </div>\n </a>\n )\n}\n\nfunction Label({ sponsor }: { sponsor: Sponsor }) {\n assert(!('username' in sponsor))\n const labelBg = getLabelBg(sponsor)\n const labelIcon = getLabelIcon(sponsor)\n const labelText = getLabelText(sponsor)\n return (\n <div\n style={{\n top: 0,\n display: 'flex',\n justifyContent: 'center',\n alignItems: 'center',\n position: 'relative',\n paddingBottom: 1\n }}\n >\n {labelBg}\n {labelIcon}\n {labelText}\n </div>\n )\n}\n\nfunction getLabelBg(sponsor: SponsorCompany) {\n const height = sponsor.plan === 'platinum' ? 32 : 24\n return <img src={labelBgImg} style={{ height, position: 'absolute', bottom: 0, zIndex: -1 }} />\n}\n\nfunction getLabelText(sponsor: SponsorCompany) {\n if (sponsor.plan === 'platinum') {\n return <></>\n }\n const letterSpacing = ['bronze', 'silver', 'gold'].includes(sponsor.plan) ? 1 : undefined\n return (\n <>\n {' '}\n <span\n style={{\n zIndex: 1,\n fontSize: '0.82em',\n position: 'relative',\n top: 0,\n fontWeight: 500,\n color: '#666',\n letterSpacing\n }}\n >\n {capitalizeFirstLetter(sponsor.plan)}\n </span>\n </>\n )\n}\n\nfunction getLabelIcon(sponsor: SponsorCompany) {\n let medalSrc: string\n if (sponsor.plan === 'platinum') {\n return <Emoji name=\"trophy\" style={{ fontSize: '1.3em' }} />\n } else if (sponsor.plan === 'gold') {\n medalSrc = medalGold\n } else if (sponsor.plan === 'silver') {\n medalSrc = medalSilver\n } else if (sponsor.plan === 'bronze') {\n medalSrc = medalBronze\n } else {\n assert(false)\n }\n return <img src={medalSrc} style={{ height: 15, zIndex: 1, marginRight: 5 }} />\n}\n\nfunction getSize(plan: Plan) {\n if (plan === 'platinum') {\n assert(false)\n }\n if (plan === 'gold') {\n return { width: 400, height: 150, padding: 95 }\n }\n if (plan === 'silver') {\n return { width: 300, height: 100, padding: 45 }\n }\n if (plan === 'bronze') {\n return { width: 200, height: 70, padding: 30 }\n }\n if (plan === 'FREE_SLOT') {\n return { width: 150, height: 40, padding: 15 }\n }\n assert(false)\n}\n\nfunction capitalizeFirstLetter(word: string): string {\n return word[0].toUpperCase() + word.slice(1)\n}\n","export { CodeBlock }\n\nimport React from 'react'\nimport { assert, objectAssign } from '../utils/server'\n\nfunction CodeBlock({ children, lineBreak }: { children: any; lineBreak?: true }) {\n assert(lineBreak, '`lineBreak: true` is currently the only use case for <CodeBlock>')\n const style = {}\n if (lineBreak) {\n objectAssign(style, {\n wordWrap: 'break-word',\n wordBreak: 'break-all',\n whiteSpace: 'initial',\n paddingRight: '16px !important'\n })\n }\n return (\n <pre>\n <code style={style}>{children}</code>\n </pre>\n )\n}\n"],"mappings":"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","names":["React","heading","React","React","React","React","React","React","React","React","React","React","React","React","React","React","React","React","React"]}
@@ -1 +0,0 @@
1
- {"version":3,"sources":["../../src/css/reset.css","../../src/css/colorize-on-hover.css","../../src/css/heading.css","../../src/css/button.css","../../src/css/link.css","../../src/css/font.css","../../src/css/code/inline.css","../../src/css/code/block.css","../../src/css/code.css","../../src/css/note.css","../../src/css/table.css","../../src/css/tooltip.css","../../src/algolia/DocSearch.css"],"sourcesContent":["* {\n box-sizing: border-box;\n}\nbody {\n margin: 0;\n}\n\n/* Avoid tweet embeds to overflow the body width.\n * Settings `overflow: hidden` to a container doesn't work (This is a CSS bug?) */\niframe {\n max-width: 100%;\n}\n",".colorize-on-hover,\n.colorize-on-hover [class^='decolorize-'],\n.colorize-on-hover [class*=' decolorize-'] {\n transition: filter 0.3s ease-in-out;\n}\n.colorize-on-hover:hover,\n.colorize-on-hover:hover [class^='decolorize-'],\n.colorize-on-hover:hover [class*=' decolorize-'] {\n filter: grayscale(0) opacity(1) !important;\n}\n\n.decolorize-7 {\n filter: grayscale(1) opacity(0.7);\n}\n.decolorize-6 {\n filter: grayscale(1) opacity(0.6);\n}\n.decolorize-5 {\n filter: grayscale(1) opacity(0.5);\n}\n.decolorize-4 {\n filter: grayscale(1) opacity(0.4);\n}\n\n/*\n * Twitter opacity(0.7): #ababab > #868686\n * == Following computation does NOT work ==\n * Discord opacity(0.7): #6c6c6c > (0.7 * (#fff - #ababab) = #868686 = x * (#fff - #6c6c6c) <=> x = 0.7 * ((#fff - #ababab) / (#fff - #6c6c6c)) = 0.7 * ((255 - 171) / (255 - 108)) = 0.4)\n */\n",".doc-page h2 {\n margin-top: 50px;\n margin-bottom: 16px;\n}\n.doc-page h2[id] {\n cursor: pointer;\n position: relative;\n padding-left: 20px;\n margin-left: -20px;\n}\n.doc-page h2[id]:hover::before {\n content: '#';\n position: absolute;\n left: calc(-1 * (0.75em - 20px));\n color: #aaa;\n}\n\n.doc-page h1 + h2 {\n margin-top: 0;\n}\n\n.doc-page h4 {\n margin-top: 32px;\n margin-bottom: 16px;\n}\n","button,\na.button {\n background-color: #fafafa;\n border: 1px solid #aaa;\n border-radius: 5px;\n cursor: pointer;\n}\n","/*\n:root {\n --link-color: #4747ff;\n}\n*/\n\na {\n /*\n color: inherit;\n color: var(--link-color);\n */\n color: #4747ff;\n text-decoration: none;\n}\na > button {\n color: var(--color-text);\n}\n","body {\n font-family: 'Inter';\n}\nbutton {\n font-family: inherit;\n}\nbody {\n --color-text: #323d48;\n color: var(--color-text);\n line-height: 1.5;\n}\n\n@font-face {\n font-family: 'Inter';\n font-weight: 100 900;\n font-stretch: 75% 125%;\n font-style: oblique 0deg 12deg;\n src: url('./Inter-Var.ttf') format('truetype-variations');\n}\n","code {\n padding: 2px 5px;\n}\n\n/*\n * Line breaks in `<code>`:\n * - Avoid them on desktop\n * - Allow them on mobile\n * - Allo them for `<code long>`\n */\ncode {\n display: inline-block;\n}\n@media screen and (max-width: 500px) {\n code {\n word-break: break-word;\n display: inline;\n }\n}\n.inline-code-break code {\n display: inline;\n word-break: break-word;\n}\ncode.long {\n word-break: break-word;\n display: inline;\n}\n","pre > code {\n padding: 16px !important;\n}\n@media screen and (max-width: 900px) {\n pre > code {\n font-size: 0.7em;\n }\n}\npre {\n display: grid;\n}\npre > code {\n padding-right: 0px !important;\n overflow-x: auto;\n}\n\n@media screen and (max-width: 1139px) {\n pre > code {\n font-size: 0.95em;\n }\n}\n@media screen and (max-width: 1040px) {\n pre > code {\n font-size: 0.8em;\n }\n}\n@media screen and (max-width: 940px) {\n pre > code {\n font-size: 0.7em;\n }\n}\n\npre > code {\n display: reset;\n word-break: reset;\n}\n","@import './code/inline.css';\n@import './code/block.css';\n\ncode {\n /*\n background-color: #f4f4f4;\n 0.043137255 = 1 - (#f4 / #ff)\n */\n background-color: rgba(0, 0, 0, 0.043137255);\n border-radius: 4px;\n}\n\n/* Inline */\ncode {\n font-size: 1.1em;\n}\n/* Block */\npre > code {\n font-size: 1em;\n}\n","blockquote {\n --color: 0, 0, 0;\n --color-strengh-bg: 0.7;\n --color-strengh-border: 1.5;\n border-left: 8px solid rgba(var(--color), calc(0.06 * var(--color-strengh-border)));\n background-color: rgba(var(--color), calc(0.03 * var(--color-strengh-bg)));\n margin-left: 0;\n margin-right: 0;\n padding: 4px 16px;\n}\nblockquote.error {\n --color-strengh-bg: 1.7;\n --color-strengh-border: 6;\n --color: 190, 25, 49;\n}\nblockquote.warning {\n --color-strengh-bg: 4;\n --color-strengh-border: 8;\n --color: 255, 204, 50;\n}\nblockquote > p:first-child::before,\n/* blockquote > p:first-of-type::before, */\nblockquote > div.paragraph:first-child::before {\n font-family: emoji;\n content: 'ℹ️';\n margin-right: 4px;\n}\n","table th {\n background-color: #f7f7f7;\n}\ntable {\n border-collapse: collapse;\n}\ntable td,\ntable th {\n padding: 8px;\n border: 1px solid #ccc;\n}\ntable th {\n text-align: left;\n}\n","@import 'balloon-css';\n\n:root {\n --balloon-color: #444;\n --balloon-move: 2px;\n --balloon-font-size: 14px;\n --balloon-border-radius: 5px;\n}\n[aria-label][data-balloon-pos]:after {\n font-family: 'Inter';\n}\n","#docsearch-desktop {\n max-width: 110px !important;\n}\n#docsearch-desktop .DocSearch-Button-Placeholder {\n display: none;\n padding: 0 !important;\n}\n#docsearch-desktop .DocSearch-Search-Icon {\n margin-right: 6px !important;\n}\n#docsearch-desktop .DocSearch-Button {\n margin-right: 3px !important;\n margin-left: 1px !important;\n}\n\n#docsearch-mobile {\n margin-left: auto !important;\n padding-right: 20px !important;\n}\n\n#docsearch-mobile .DocSearch-Button {\n margin-left: 0px !important;\n}\n\n@media screen and (max-width: 339px) {\n #docsearch-mobile {\n padding-right: 6px !important;\n }\n}\n"],"mappings":";;;AAAA;AACE;AAAA;AAEF;AACE;AAAA;AAKF;AACE;AAAA;;;ACVF;AAAA;AAAA;AAGE;AAAA;AAEF;AAAA;AAAA;AAGE;AAAA;AAGF;AACE;AAAA;AAEF;AACE;AAAA;AAEF;AACE;AAAA;AAEF;AACE;AAAA;;;ACrBF;AACE;AACA;AAAA;AAEF;AACE;AACA;AACA;AACA;AAAA;AAEF;AACE;AACA;AACA;AACA;AAAA;AAGF;AACE;AAAA;AAGF;AACE;AACA;AAAA;;;ACvBF;AAAA;AAEE;AACA;AACA;AACA;AAAA;;;ACCF;AAKE;AACA;AAAA;AAEF;AACE;AAAA;;;ACfF;AACE;AAAA;AAEF;AACE;AAAA;AAEF;AACE;AACA;AACA;AAAA;AAGF;AACE;AACA;AACA;AACA;AACA;AAAA;;;ACjBF;AACE;AAAA;AASF;AACE;AAAA;AAEF;AACE;AACE;AACA;AAAA;AAAA;AAGJ;AACE;AACA;AAAA;AAEF;AACE;AACA;AAAA;;;ACzBF;AACE;AAAA;AAEF;AACE;AACE;AAAA;AAAA;AAGJ;AACE;AAAA;AAEF;AACE;AACA;AAAA;AAGF;AACE;AACE;AAAA;AAAA;AAGJ;AACE;AACE;AAAA;AAAA;AAGJ;AACE;AACE;AAAA;AAAA;AAIJ;AACE;AACA;AAAA;;;AC/BF;AAKE;AACA;AAAA;AAIF;AACE;AAAA;AAGF;AACE;AAAA;;;AClBF;AACE;AAAA;AAAA;AAAA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAAA;AAEF;AACE;AACA;AACA;AAAA;AAAA;AAAA;AAAA;AAEF;AACE;AACA;AACA;AAAA;AAAA;AAAA;AAAA;AAEF;AAAA;AAGE;AACA;AACA;AAAA;;;ACzBF;AACE;AAAA;AAEF;AACE;AAAA;AAEF;AAAA;AAEE;AACA;AAAA;AAEF;AACE;AAAA;;;ACVF;AACE;AACA;AACA;AACA;AAAA;AAEF;AACE;AAAA;;;ACTF;AACE;AAAA;AAEF;AACE;AACA;AAAA;AAEF;AACE;AAAA;AAEF;AACE;AACA;AAAA;AAGF;AACE;AACA;AAAA;AAGF;AACE;AAAA;AAGF;AACE;AACE;AAAA;AAAA;","names":[]}
@@ -1 +0,0 @@
1
- {"version":3,"sources":["../../src/autoScrollNav.ts","../../src/installSectionUrlHashs.ts","../../src/navigation/navigation-fullscreen/initNavigationFullscreen.ts","../../src/navigation/Navigation.client.ts"],"sourcesContent":["import { assert } from './utils/client'\n\nautoScrollNav()\n\nfunction autoScrollNav() {\n const navigationEl = document.getElementById('navigation-content')\n assert(navigationEl)\n const href = window.location.pathname\n const navLinks: HTMLElement[] = Array.from(navigationEl.querySelectorAll(`a[href=\"${href}\"]`))\n assert(navLinks.length <= 1, { navLinks, href })\n const navLink = navLinks[0]\n if (!navLink) return\n navLink.scrollIntoView({\n /*\n behavior: 'smooth',\n /*/\n behavior: 'auto',\n //*/\n block: 'center',\n inline: 'center'\n })\n}\n","import { assert } from './utils/client'\n\ninstallSectionUrlHashs()\n/* Let browser restore previous scroll\njumpToSection()\n*/\n\nfunction installSectionUrlHashs() {\n const pageContainer = document.querySelector('.doc-page #page-container')\n if (!pageContainer) {\n assert(window.location.pathname === '/')\n return\n }\n const navigationEl = document.getElementById('navigation-content')\n assert(navigationEl)\n const docSections = Array.from(document.querySelectorAll('h2'))\n docSections.forEach((docSection) => {\n const docTitle = docSection.textContent\n assert(docTitle)\n assert(docSection.id, { docSection })\n const urlHash = '#' + docSection.id\n assertNavLink(navigationEl, urlHash)\n docSection.onclick = () => {\n window.location.hash = urlHash\n // The browser doesn't jump if hash doesn't change\n jumpToSection()\n }\n })\n}\n\nfunction assertNavLink(navigationEl: HTMLElement, urlHash: string) {\n const parentNavLinkMatch = Array.from(navigationEl.querySelectorAll(`a[href=\"${window.location.pathname}\"]`))\n assert(parentNavLinkMatch.length <= 1)\n if (parentNavLinkMatch.length === 0) return\n const navLinks: HTMLElement[] = Array.from(navigationEl.querySelectorAll(`a[href=\"${urlHash}\"]`))\n assert(navLinks.length === 1, { urlHash })\n}\n\nfunction jumpToSection() {\n const { hash } = window.location\n if (hash === '' || hash === '#') {\n return\n }\n assert(hash.startsWith('#'))\n const target = document.getElementById(hash.slice(1))\n if (!target) {\n return\n }\n target.scrollIntoView()\n}\n","export { initNavigationFullscreen }\n\nimport { assert } from '../../utils/client'\n\nlet scrollPositionBeforeToggle: number = 0\n\nfunction initNavigationFullscreen() {\n updateColumnWidth()\n window.addEventListener('resize', updateColumnWidth, { passive: true })\n document.getElementById('navigation-fullscreen-button')!.onclick = toggleNavExpend\n document.getElementById('navigation-fullscreen-close')!.onclick = toggleNavExpend\n document.addEventListener(\n // We don't use keydown to not interfere with user pressing `<Esc>` for closing the browser's `<Ctrl-F>` search diablog, see https://stackoverflow.com/questions/66595035/how-to-detect-escape-key-if-search-bar-of-browser-is-open\n 'keydown',\n (ev) => {\n if (ev.key === 'Escape') toggleNavExpend()\n },\n false\n )\n}\n\nfunction toggleNavExpend() {\n const navContainer = document.getElementById('navigation-container')!\n const scrollPos = navContainer.scrollTop\n document.documentElement.classList.toggle('navigation-fullscreen')\n if (scrollPositionBeforeToggle !== undefined) {\n navContainer.scrollTop = scrollPositionBeforeToggle\n }\n scrollPositionBeforeToggle = scrollPos\n}\n\nfunction updateColumnWidth() {\n const navMinWidth = 299\n const navH1Groups = Array.from(document.querySelectorAll('.nav-h1-group'))\n const numberOfColumnsMax = navH1Groups.length\n\n const widthAvailable = getViewportWidth()\n const numberOfColumns = Math.max(1, Math.min(numberOfColumnsMax, Math.floor(widthAvailable / navMinWidth)))\n\n let columns = navH1Groups.map((navH1Group) => {\n const column = [\n {\n element: navH1Group,\n elementHeight: navH1Group.children.length\n }\n ]\n return column\n })\n\n mergeColumns(columns, numberOfColumns)\n\n const navContent = document.getElementById('navigation-content')!\n\n Array.from(navContent.children).forEach((child) => {\n assert(child.className === 'nav-column')\n })\n navContent.innerHTML = ''\n\n columns.forEach((column) => {\n const columnEl = document.createElement('div')\n columnEl.className = 'nav-column'\n column.forEach(({ element }) => {\n columnEl.appendChild(element)\n })\n navContent.appendChild(columnEl)\n })\n\n const navItemMaxWidth = 350\n navContent.style.maxWidth = `${numberOfColumns * navItemMaxWidth}px`\n}\nfunction getViewportWidth(): number {\n // `window.innerWidth` inlcudes scrollbar width: https://developer.mozilla.org/en-US/docs/Web/API/Window/innerWidth#usage_notes\n return document.documentElement.clientWidth\n}\n\nfunction mergeColumns<T>(columns: { element: T; elementHeight: number }[][], maxNumberOfColumns: number) {\n assert(columns.length > 0)\n assert(maxNumberOfColumns > 0)\n if (columns.length <= maxNumberOfColumns) {\n return columns\n }\n\n let mergeCandidate = {\n i: -1,\n mergeHeight: Infinity\n }\n for (let i = 0; i <= columns.length - 2; i++) {\n const column1 = columns[i + 0]\n const column2 = columns[i + 1]\n const column1Height = sum(column1.map((c) => c.elementHeight))\n const column2Height = sum(column2.map((c) => c.elementHeight))\n const mergeHeight = column1Height + column2Height\n if (mergeCandidate.mergeHeight > mergeHeight) {\n mergeCandidate = {\n i,\n mergeHeight\n }\n }\n }\n\n {\n const { i } = mergeCandidate\n assert(-1 < i && i < columns.length - 1, { i, columnsLength: columns.length, maxNumberOfColumns })\n columns[i] = [...columns[i], ...columns[i + 1]]\n columns.splice(i + 1, 1)\n }\n\n mergeColumns(columns, maxNumberOfColumns)\n}\n\nfunction sum(arr: number[]): number {\n let total = 0\n arr.forEach((n) => (total += n))\n return total\n}\n","import { initNavigationFullscreen } from './navigation-fullscreen/initNavigationFullscreen'\n\nactivateNavigationMask()\nactivateMenuToggle()\ninitNavigationFullscreen()\n\nfunction activateMenuToggle() {\n const menuToggle = document.getElementById('menu-toggle')!\n menuToggle.onclick = toggleNavigation\n}\n\nfunction activateNavigationMask() {\n const navigationMask = document.getElementById('navigation-mask')!\n navigationMask.onclick = toggleNavigation\n}\n\nfunction toggleNavigation() {\n document.body.classList.toggle('show-menu')\n}\n"],"mappings":"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","names":[]}
@@ -1 +0,0 @@
1
- {"version":3,"sources":["../../src/navigation/Navigation-layout.css","../../src/navigation/Navigation-items.css","../../src/navigation/Navigation.css","../../src/navigation/navigation-fullscreen/NavigationFullscreenButton.css","../../src/PageLayout.css"],"sourcesContent":[":root {\n --mobile-header-height: 60px;\n --navigation-min-height: 300px;\n --navigation-max-height: 350px;\n}\n#navigation-wrapper {\n min-width: var(--navigation-min-height);\n}\n.doc-page #navigation-wrapper {\n max-width: var(--navigation-max-height);\n}\n.landing-page #navigation-wrapper {\n /* prettier-ignore */\n max-width: min(var(--navigation-max-height), max(var(--navigation-min-height), calc(var(--navigation-min-height) + 100vw - 1240px)));\n}\n#navigation-container {\n /* `position: fixed` doesn't inherit the parent's width */\n position: sticky;\n overflow-y: auto;\n overscroll-behavior: contain;\n border-right: 1px solid #eee;\n}\n#navigation-mask {\n position: fixed;\n width: 100vw;\n height: 100vh;\n top: 0;\n left: 0;\n z-index: 2;\n}\n/* `1140px` is the breaking point that preserves the width of code blocks. */\n/* BEFORE EDITING THIS: also change the `1139px` value below */\n@media screen and (min-width: 1140px) {\n #mobile-header {\n display: none !important;\n }\n #navigation-container {\n height: 100vh;\n top: 0;\n }\n #navigation-mask {\n display: none;\n }\n}\n#navigation-container {\n transition: transform 0.25s ease;\n background: white;\n z-index: 3;\n}\n#page-wrapper {\n margin-left: calc(-1 * var(--navigation-fullscreen-button-width));\n}\n@media screen and (max-width: 1139px) {\n #navigation-header-logo,\n #docsearch {\n display: none !important;\n }\n #navigation-wrapper {\n min-width: 0px !important;\n max-width: 0px !important;\n }\n #navigation-fullscreen-button {\n display: none;\n }\n #page-wrapper {\n margin-left: 0 !important;\n }\n #navigation-container {\n --width: min(100vw, 350px);\n width: var(--width);\n left: 0;\n height: calc(100vh - var(--mobile-header-height));\n top: var(--mobile-header-height);\n padding-top: 20px;\n /* `position: sticky` doesn't seem to work on mobile */\n position: fixed;\n }\n body:not(.show-menu) #navigation-container {\n transform: translateX(calc(-1 * var(--width)));\n }\n body:not(.show-menu) #navigation-mask {\n display: none;\n }\n #mobile-header {\n display: inherit;\n }\n .doc-page h2 {\n --padding-top: calc(var(--mobile-header-height) + 12px) !important;\n }\n}\n\nhtml.navigation-fullscreen #navigation-container {\n width: 100vw;\n height: 100vh;\n overflow-y: scroll;\n position: fixed;\n top: 0;\n left: 0;\n background-color: white;\n}\nhtml.navigation-fullscreen #navigation-header {\n display: none !important;\n}\nhtml.navigation-fullscreen #navigation-content {\n display: flex;\n margin: auto; /* A `max-width` is set by src/navigation/navigation-fullscreen/initNavigationFullscreen.ts */\n}\nhtml.navigation-fullscreen #navigation-content > .nav-column {\n flex-grow: 1;\n max-width: 350px;\n}\nhtml.navigation-fullscreen .nav-column > .nav-h1-group:first-child > .nav-item-h1:first-child {\n margin-top: 0px;\n}\nhtml.navigation-fullscreen {\n /* disable scroll of main view */\n overflow: hidden !important;\n}\n",".nav-item {\n display: block;\n white-space: nowrap;\n overflow-x: hidden;\n --padding-left-global: 9px;\n --padding-left-additional: 0px;\n}\n.nav-item code {\n font-size: 0.9em;\n}\n.nav-item-h1 + .nav-item-h4 {\n margin-top: -2px;\n}\n.nav-item-h4 {\n margin-top: 14px;\n margin-bottom: -1px;\n color: #999;\n font-size: 12px;\n font-weight: 400;\n letter-spacing: 0.15ch;\n padding-left: var(--padding-left-global);\n padding-right: 4px;\n text-decoration: none;\n}\n.nav-column:first-of-type > .nav-h1-group:first-of-type > .nav-item-h1:first-of-type {\n margin-top: 20px;\n}\n.nav-item-h1 {\n margin-top: 30px;\n font-size: 15.4px;\n text-transform: uppercase;\n font-weight: 600;\n letter-spacing: 0.15ch;\n color: var(--color-text);\n padding: 12px 0;\n padding-left: calc(var(--padding-left-global) - 2px);\n padding-right: 4px;\n text-decoration: none;\n}\n.nav-item-h2 {\n text-decoration: none;\n font-size: 14.4px;\n font-weight: 400;\n letter-spacing: 0.15ch;\n color: var(--color-text);\n padding-left: var(--padding-left-global);\n padding-right: 0;\n --padding: 4px;\n padding-top: var(--padding);\n padding-bottom: var(--padding);\n}\n.nav-item-h3 {\n font-size: 12px;\n font-weight: 400;\n letter-spacing: 0.15ch;\n color: var(--color-text);\n text-decoration: none;\n --padding: 5px;\n\n background-color: #f9f9f9;\n padding: var(--padding) 0;\n padding-left: calc(var(--padding-left-global) + var(--padding-left-additional));\n}\nhtml.navigation-fullscreen .nav-item-h3 {\n border-right: 4px solid #eee;\n}\n.nav-item-h3.nav-item-first-of-its-kind {\n padding-top: calc(var(--padding) * 1.6);\n}\n.nav-item-h3.nav-item-last-of-its-kind {\n padding-bottom: calc(var(--padding) * 2);\n}\n.nav-item-h2,\n.nav-item-h3 {\n position: relative;\n}\n/*\n.nav-item-h2.is-active .nav-item-text{\n background-color: var(--background-color);\n}\n*/\n.nav-item-h2.is-active {\n background-color: var(--background-color);\n}\n.nav-item-h3.is-active:before {\n display: block;\n content: '';\n position: absolute;\n width: 4px;\n left: 0;\n top: 0;\n height: 100%;\n background-color: var(--background-color);\n z-index: 10;\n}\n.nav-item-h3.is-active-last:after {\n display: block;\n content: '';\n position: absolute;\n height: 4px;\n left: 0;\n bottom: 0;\n width: 100%;\n background-color: var(--background-color);\n z-index: 10;\n border-bottom-left-radius: 5px;\n}\nhtml.navigation-fullscreen .nav-item {\n --expend-border-radius: 5px;\n}\n.nav-item.is-active-first {\n border-top-left-radius: 5px;\n border-top-right-radius: var(--expend-border-radius);\n}\n.nav-item.is-active-last,\n.nav-item.is-active-last:before {\n border-bottom-left-radius: 5px;\n border-bottom-right-radius: var(--expend-border-radius);\n}\n.nav-item-h3.nav-item-parent-is-list-heading {\n --padding-left-additional: 21px;\n}\n","@import './Navigation-layout.css';\n@import './Navigation-items.css';\n@import './Navigation-highlight.css';\n\n#navigation-container {\n --background-color: #f0f0f0;\n padding-bottom: 70px;\n}\n\nhtml.navigation-fullscreen #detached-note {\n display: none;\n}\n",":root {\n --navigation-fullscreen-button-width: 20px;\n}\n#navigation-fullscreen-button {\n width: var(--navigation-fullscreen-button-width);\n position: relative;\n z-index: 2;\n}\n#navigation-wrapper:hover + #navigation-fullscreen-button > div > div,\n#navigation-fullscreen-button:hover > div > div {\n left: 0px;\n}\n#navigation-fullscreen-button > div > div {\n transition: all 0.3s ease-in-out;\n left: -20px;\n position: absolute;\n height: 100%;\n width: 100%;\n background-color: #eee !important;\n background: url('./chevron.svg');\n background-repeat: no-repeat;\n background-position: center center;\n}\n\nhtml:not(.navigation-fullscreen) #navigation-fullscreen-close {\n display: none;\n}\n\nhtml.navigation-fullscreen #page-content {\n /* Make `Ctrl-F` browser search only crawl the navigation menu */\n visibility: hidden;\n}\n",".doc-page #page-container {\n padding-bottom: 100px;\n}\n\n#page-layout {\n display: flex;\n justify-content: center;\n}\n#page-layout > #navigation-wrapper,\n#page-layout > #page-wrapper {\n flex-grow: 1;\n}\n/* Avoid overflow, see https://stackoverflow.com/questions/36230944/prevent-flex-items-from-overflowing-a-container/66689926#66689926 */\n#page-layout > #page-wrapper {\n min-width: 0;\n}\n\n.doc-page #page-wrapper {\n --main-view-max-width: 800px;\n}\n.landing-page #page-wrapper {\n --main-view-max-width: 1010px;\n}\n#page-wrapper {\n max-width: calc(var(--main-view-max-width) + 80px);\n}\n#page-content {\n box-sizing: content-box;\n max-width: var(--main-view-max-width);\n padding: 20px var(--main-view-padding);\n margin: auto;\n}\n\n#page-content {\n --main-view-padding: 20px;\n}\n@media screen and (max-width: 1139px) {\n #page-content {\n --main-view-padding: 10px;\n }\n}\n"],"mappings":";AAAA;AACE;AACA;AACA;AAAA;AAEF;AACE;AAAA;AAEF;AACE;AAAA;AAEF;AAEE;AAAA;AAEF;AAEE;AACA;AACA;AACA;AAAA;AAEF;AACE;AACA;AACA;AACA;AACA;AACA;AAAA;AAIF;AACE;AACE;AAAA;AAEF;AACE;AACA;AAAA;AAEF;AACE;AAAA;AAAA;AAGJ;AACE;AACA;AACA;AAAA;AAEF;AACE;AAAA;AAEF;AACE;AAAA;AAEE;AAAA;AAEF;AACE;AACA;AAAA;AAEF;AACE;AAAA;AAEF;AACE;AAAA;AAEF;AACE;AACA;AACA;AACA;AACA;AACA;AAEA;AAAA;AAEF;AACE;AAAA;AAEF;AACE;AAAA;AAEF;AACE;AAAA;AAEF;AACE;AAAA;AAAA;AAIJ;AACE;AACA;AACA;AACA;AACA;AACA;AACA;AAAA;AAEF;AACE;AAAA;AAEF;AACE;AACA;AAAA;AAEF;AACE;AACA;AAAA;AAEF;AACE;AAAA;AAEF;AAEE;AAAA;;;ACpHF;AACE;AACA;AACA;AACA;AACA;AAAA;AAEF;AACE;AAAA;AAEF;AACE;AAAA;AAEF;AACE;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAAA;AAEF;AACE;AAAA;AAEF;AACE;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAAA;AAEF;AACE;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAAA;AAEF;AACE;AACA;AACA;AACA;AACA;AACA;AAEA;AACA;AACA;AAAA;AAEF;AACE;AAAA;AAEF;AACE;AAAA;AAEF;AACE;AAAA;AAEF;AAAA;AAEE;AAAA;AAOF;AACE;AAAA;AAEF;AACE;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAAA;AAEF;AACE;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAAA;AAEF;AACE;AAAA;AAEF;AACE;AACA;AAAA;AAEF;AAAA;AAEE;AACA;AAAA;AAEF;AACE;AAAA;;;;;ACpHF;AACE;AACA;AAAA;AAGF;AACE;AAAA;;;ACVF;AACE;AAAA;AAEF;AACE;AACA;AACA;AAAA;AAEF;AAAA;AAEE;AAAA;AAEF;AACE;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAAA;AAGF;AACE;AAAA;AAGF;AAEE;AAAA;;;AC9BF;AACE;AAAA;AAGF;AACE;AACA;AAAA;AAEF;AAAA;AAEE;AAAA;AAGF;AACE;AAAA;AAGF;AACE;AAAA;AAEF;AACE;AAAA;AAEF;AACE;AAAA;AAEF;AACE;AACA;AACA;AACA;AAAA;AAGF;AACE;AAAA;AAEF;AACE;AACE;AAAA;AAAA;","names":[]}
@@ -1 +0,0 @@
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/server'\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, Emoji } from '../utils/server'\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 &mdash; 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/server'\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/server'\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/server'\nimport { getHeadings, HeadingWithoutLink, parseTitle } from '../headings'\nimport type { Heading } from '../headings'\nimport type { PageContextBuiltIn } from 'vite-plugin-ssr'\nimport type { MarkdownHeading } from '../markdownHeadingsVitePlugin'\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 as any)\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"]}