@brillout/docpress 0.2.2 → 0.2.4
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/{chunk-G2A5MZJA.js → chunk-2ZTPUQGS.js} +11 -1
- package/dist/{chunk-TTLAZ2T2.js → chunk-3QC7HYIF.js} +0 -1
- package/dist/{chunk-JS5BGVDK.js → chunk-6E4FPH4J.js} +2 -3
- package/dist/{chunk-XUTBTIEE.js → chunk-LOKHCWMR.js} +20 -19
- package/dist/{chunk-OEVBWUR6.js → chunk-NVJING6T.js} +0 -1
- package/dist/{chunk-7HKDCMSZ.js → chunk-Q2ERR2XO.js} +4 -3
- package/dist/cli/index.js +5 -6
- package/dist/components/features/FeatureList.css +0 -1
- package/dist/components/features/FeatureList.d.ts +1 -1
- package/dist/components/features/FeatureList.js +2 -3
- package/dist/components/features/initFeatureList.js +2 -3
- package/dist/{devServer-534L4U45.js → devServer-4RTCJ64B.js} +4 -5
- package/dist/index.css +0 -1
- package/dist/index.d.ts +13 -11
- package/dist/index.js +40 -15
- package/dist/languages-KXPKJFQL.svg +1 -0
- package/dist/renderer/_default.page.client.css +22 -4
- package/dist/renderer/_default.page.client.js +6 -6
- package/dist/renderer/_default.page.server.css +2 -4
- package/dist/renderer/_default.page.server.d.ts +5 -5
- package/dist/renderer/_default.page.server.js +36 -15
- package/dist/repora-UNKQZ6QP.svg +10 -0
- package/package.json +6 -6
- package/dist/chunk-7HKDCMSZ.js.map +0 -1
- package/dist/chunk-G2A5MZJA.js.map +0 -1
- package/dist/chunk-JS5BGVDK.js.map +0 -1
- package/dist/chunk-OEVBWUR6.js.map +0 -1
- package/dist/chunk-TTLAZ2T2.js.map +0 -1
- package/dist/chunk-XUTBTIEE.js.map +0 -1
- package/dist/cli/index.js.map +0 -1
- package/dist/components/features/FeatureList.css.map +0 -1
- package/dist/components/features/FeatureList.js.map +0 -1
- package/dist/components/features/initFeatureList.js.map +0 -1
- package/dist/devServer-534L4U45.js.map +0 -1
- package/dist/index.css.map +0 -1
- package/dist/index.js.map +0 -1
- package/dist/renderer/_default.page.client.css.map +0 -1
- package/dist/renderer/_default.page.client.js.map +0 -1
- package/dist/renderer/_default.page.server.css.map +0 -1
- package/dist/renderer/_default.page.server.js.map +0 -1
|
@@ -34,6 +34,16 @@ function isBrowserAndDev() {
|
|
|
34
34
|
var _a;
|
|
35
35
|
return typeof window !== "undefined" && ((_a = window == null ? void 0 : window.location) == null ? void 0 : _a.port) !== "";
|
|
36
36
|
}
|
|
37
|
+
function assertWarning(condition, msg) {
|
|
38
|
+
if (condition) {
|
|
39
|
+
return;
|
|
40
|
+
}
|
|
41
|
+
msg = "[DocPress][Warning] " + msg;
|
|
42
|
+
console.warn(msg);
|
|
43
|
+
if (isBrowserAndDev()) {
|
|
44
|
+
alert(msg);
|
|
45
|
+
}
|
|
46
|
+
}
|
|
37
47
|
|
|
38
48
|
// src/utils/isBrowser.ts
|
|
39
49
|
function isBrowser() {
|
|
@@ -43,6 +53,6 @@ function isBrowser() {
|
|
|
43
53
|
export {
|
|
44
54
|
assert,
|
|
45
55
|
assertUsage,
|
|
56
|
+
assertWarning,
|
|
46
57
|
isBrowser
|
|
47
58
|
};
|
|
48
|
-
//# sourceMappingURL=chunk-G2A5MZJA.js.map
|
|
@@ -1,9 +1,9 @@
|
|
|
1
1
|
import {
|
|
2
2
|
Emoji
|
|
3
|
-
} from "./chunk-
|
|
3
|
+
} from "./chunk-Q2ERR2XO.js";
|
|
4
4
|
import {
|
|
5
5
|
assert
|
|
6
|
-
} from "./chunk-
|
|
6
|
+
} from "./chunk-2ZTPUQGS.js";
|
|
7
7
|
|
|
8
8
|
// src/components/RepoLink.tsx
|
|
9
9
|
import React2 from "react";
|
|
@@ -175,4 +175,3 @@ export {
|
|
|
175
175
|
getHeadings,
|
|
176
176
|
parseTitle
|
|
177
177
|
};
|
|
178
|
-
//# sourceMappingURL=chunk-JS5BGVDK.js.map
|
|
@@ -1,9 +1,9 @@
|
|
|
1
1
|
import {
|
|
2
2
|
determineSectionUrlHash
|
|
3
|
-
} from "./chunk-
|
|
3
|
+
} from "./chunk-Q2ERR2XO.js";
|
|
4
4
|
import {
|
|
5
5
|
assert
|
|
6
|
-
} from "./chunk-
|
|
6
|
+
} from "./chunk-2ZTPUQGS.js";
|
|
7
7
|
|
|
8
8
|
// src/vite.config.ts
|
|
9
9
|
import mdx from "@mdx-js/rollup";
|
|
@@ -36,13 +36,10 @@ function transform(code) {
|
|
|
36
36
|
return line;
|
|
37
37
|
}
|
|
38
38
|
if (line.startsWith("#")) {
|
|
39
|
-
const {
|
|
40
|
-
headings.push({
|
|
39
|
+
const { headingId, headingLevel, title, headingHtml } = parseMarkdownHeading(line);
|
|
40
|
+
headings.push({ headingId, headingLevel, title });
|
|
41
41
|
return headingHtml;
|
|
42
42
|
}
|
|
43
|
-
if (line.startsWith("<h")) {
|
|
44
|
-
assert(false, { line });
|
|
45
|
-
}
|
|
46
43
|
return line;
|
|
47
44
|
}).join("\n");
|
|
48
45
|
const headingsExportCode = `export const headings = [${headings.map((heading) => JSON.stringify(heading)).join(", ")}];`;
|
|
@@ -59,10 +56,13 @@ function parseMarkdownHeading(line) {
|
|
|
59
56
|
const titleMdx = lineWords.join(" ");
|
|
60
57
|
assert(!titleMdx.startsWith(" "), { line, lineWords });
|
|
61
58
|
assert(titleMdx, { line, lineWords });
|
|
62
|
-
const
|
|
59
|
+
const headingId = determineSectionUrlHash(titleMdx);
|
|
63
60
|
const title = titleMdx;
|
|
64
|
-
const
|
|
65
|
-
|
|
61
|
+
const titleParsed = parseTitle(title);
|
|
62
|
+
assert(headingId === null || headingId.length > 0);
|
|
63
|
+
const headingAttrId = headingId === null ? "" : ` id="${headingId}"`;
|
|
64
|
+
const headingHtml = `<h${headingLevel}${headingAttrId}>${titleParsed}</h${headingLevel}>`;
|
|
65
|
+
const heading = { headingLevel, title, headingId, headingHtml };
|
|
66
66
|
return heading;
|
|
67
67
|
}
|
|
68
68
|
function parseTitle(titleMarkdown) {
|
|
@@ -121,14 +121,16 @@ var config = {
|
|
|
121
121
|
prerender: {
|
|
122
122
|
noExtraDir: true
|
|
123
123
|
},
|
|
124
|
-
extensions: [
|
|
125
|
-
|
|
126
|
-
|
|
127
|
-
|
|
128
|
-
|
|
129
|
-
|
|
130
|
-
|
|
131
|
-
|
|
124
|
+
extensions: [
|
|
125
|
+
{
|
|
126
|
+
npmPackageName: "@brillout/docpress",
|
|
127
|
+
pageFilesDist: [
|
|
128
|
+
"@brillout/docpress/renderer/_default.page.server.js",
|
|
129
|
+
"@brillout/docpress/renderer/_default.page.client.js"
|
|
130
|
+
],
|
|
131
|
+
assetsDir: "/dist/"
|
|
132
|
+
}
|
|
133
|
+
],
|
|
132
134
|
includeAssetsImportedByServer: true,
|
|
133
135
|
disableAutoFullBuild: true
|
|
134
136
|
})
|
|
@@ -144,4 +146,3 @@ var vite_config_default = config;
|
|
|
144
146
|
export {
|
|
145
147
|
vite_config_default
|
|
146
148
|
};
|
|
147
|
-
//# sourceMappingURL=chunk-XUTBTIEE.js.map
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import {
|
|
2
2
|
assert
|
|
3
|
-
} from "./chunk-
|
|
3
|
+
} from "./chunk-2ZTPUQGS.js";
|
|
4
4
|
|
|
5
5
|
// src/utils/filter.ts
|
|
6
6
|
function filter(obj, predicate) {
|
|
@@ -15,7 +15,9 @@ function filter(obj, predicate) {
|
|
|
15
15
|
|
|
16
16
|
// src/utils/determineSectionUrlHash.ts
|
|
17
17
|
function determineSectionUrlHash(title) {
|
|
18
|
-
const urlHash = title.toLowerCase().split(/[^a-z0-9]+/).filter(Boolean).join("-");
|
|
18
|
+
const urlHash = title.toLowerCase().normalize("NFD").replace(/[\u0300-\u036f]/g, "").split(/[^a-z0-9]+/).filter(Boolean).join("-");
|
|
19
|
+
if (urlHash === "")
|
|
20
|
+
return null;
|
|
19
21
|
return urlHash;
|
|
20
22
|
}
|
|
21
23
|
function determineSectionTitle(urlWithHash, titleNormalCase) {
|
|
@@ -151,4 +153,3 @@ export {
|
|
|
151
153
|
crawlAllFiles,
|
|
152
154
|
Emoji
|
|
153
155
|
};
|
|
154
|
-
//# sourceMappingURL=chunk-7HKDCMSZ.js.map
|
package/dist/cli/index.js
CHANGED
|
@@ -1,9 +1,9 @@
|
|
|
1
1
|
import {
|
|
2
2
|
vite_config_default
|
|
3
|
-
} from "../chunk-
|
|
4
|
-
import "../chunk-
|
|
5
|
-
import "../chunk-
|
|
6
|
-
import "../chunk-
|
|
3
|
+
} from "../chunk-LOKHCWMR.js";
|
|
4
|
+
import "../chunk-Q2ERR2XO.js";
|
|
5
|
+
import "../chunk-2ZTPUQGS.js";
|
|
6
|
+
import "../chunk-3QC7HYIF.js";
|
|
7
7
|
|
|
8
8
|
// src/cli/index.ts
|
|
9
9
|
import { build, preview } from "vite";
|
|
@@ -16,7 +16,7 @@ Error.stackTraceLimit = Infinity;
|
|
|
16
16
|
cli();
|
|
17
17
|
async function cli() {
|
|
18
18
|
if (isDev) {
|
|
19
|
-
await import("../devServer-
|
|
19
|
+
await import("../devServer-4RTCJ64B.js");
|
|
20
20
|
} else if (isBuild) {
|
|
21
21
|
await build(vite_config_default);
|
|
22
22
|
await build({ ...vite_config_default, build: { ssr: true } });
|
|
@@ -32,4 +32,3 @@ async function cli() {
|
|
|
32
32
|
);
|
|
33
33
|
}
|
|
34
34
|
}
|
|
35
|
-
//# sourceMappingURL=index.js.map
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import {
|
|
2
2
|
assert
|
|
3
|
-
} from "../../chunk-
|
|
4
|
-
import "../../chunk-
|
|
3
|
+
} from "../../chunk-2ZTPUQGS.js";
|
|
4
|
+
import "../../chunk-3QC7HYIF.js";
|
|
5
5
|
|
|
6
6
|
// src/components/features/initFeatureList.ts
|
|
7
7
|
addTwitterWidgets();
|
|
@@ -57,4 +57,3 @@ function loadScript(scriptUrl) {
|
|
|
57
57
|
function getComputedStyle(el, styleProp) {
|
|
58
58
|
return window.document.defaultView.getComputedStyle(el).getPropertyValue(styleProp);
|
|
59
59
|
}
|
|
60
|
-
//# sourceMappingURL=initFeatureList.js.map
|
|
@@ -1,9 +1,9 @@
|
|
|
1
1
|
import {
|
|
2
2
|
vite_config_default
|
|
3
|
-
} from "./chunk-
|
|
4
|
-
import "./chunk-
|
|
5
|
-
import "./chunk-
|
|
6
|
-
import "./chunk-
|
|
3
|
+
} from "./chunk-LOKHCWMR.js";
|
|
4
|
+
import "./chunk-Q2ERR2XO.js";
|
|
5
|
+
import "./chunk-2ZTPUQGS.js";
|
|
6
|
+
import "./chunk-3QC7HYIF.js";
|
|
7
7
|
|
|
8
8
|
// src/cli/devServer.ts
|
|
9
9
|
import express from "express";
|
|
@@ -32,4 +32,3 @@ async function startServer() {
|
|
|
32
32
|
app.listen(port);
|
|
33
33
|
console.log(`Server running at http://localhost:${port}`);
|
|
34
34
|
}
|
|
35
|
-
//# sourceMappingURL=devServer-534L4U45.js.map
|
package/dist/index.css
CHANGED
package/dist/index.d.ts
CHANGED
|
@@ -3,12 +3,13 @@ export { FeatureList } from './components/features/FeatureList.js';
|
|
|
3
3
|
|
|
4
4
|
declare function assert(condition: unknown, debugInfo?: unknown): asserts condition;
|
|
5
5
|
declare function assertUsage(condition: unknown, msg: string): asserts condition;
|
|
6
|
+
declare function assertWarning(condition: unknown, msg: string): asserts condition;
|
|
6
7
|
|
|
7
8
|
declare function isBrowser(): boolean;
|
|
8
9
|
|
|
9
10
|
declare function filter<T extends object>(obj: T, predicate: <K extends keyof T>(value: T[K], key: K) => boolean): T;
|
|
10
11
|
|
|
11
|
-
declare function determineSectionUrlHash(title: string): string;
|
|
12
|
+
declare function determineSectionUrlHash(title: string): string | null;
|
|
12
13
|
declare function determineSectionTitle(urlWithHash: string, titleNormalCase: boolean): string;
|
|
13
14
|
|
|
14
15
|
declare function jsxToTextContent(node: JSX.Element | string): string;
|
|
@@ -17,17 +18,17 @@ declare function objectAssign<Obj extends Object, ObjAddendum>(obj: Obj, objAdde
|
|
|
17
18
|
|
|
18
19
|
declare function crawlAllFiles(dir: string): Promise<string[]>;
|
|
19
20
|
|
|
20
|
-
|
|
21
|
+
type EmojiName = 'warning' | 'typescript' | 'shield' | 'mechanical-arm' | 'mountain' | 'rocket' | 'wrench' | 'compass' | 'seedling' | 'books' | 'plug' | 'earth' | 'gear' | 'red-heart' | 'high-voltage' | 'gem-stone' | 'dizzy' | 'sparkles' | 'writing-hang' | 'road-fork' | 'engine' | 'red-circle' | 'sparkling-heart' | 'gift' | 'package' | 'info' | 'lab' | 'trophy';
|
|
21
22
|
declare function Emoji({ name, style }: {
|
|
22
23
|
name: EmojiName;
|
|
23
24
|
style?: React$1.CSSProperties;
|
|
24
25
|
}): JSX.Element;
|
|
25
26
|
|
|
26
|
-
|
|
27
|
+
type HeadingWithoutLink = {
|
|
27
28
|
url: string;
|
|
28
29
|
title: string | JSX.Element;
|
|
29
30
|
};
|
|
30
|
-
|
|
31
|
+
type HeadingDefinition = HeadingBase & (({
|
|
31
32
|
level: 1;
|
|
32
33
|
titleEmoji: EmojiName;
|
|
33
34
|
} & HeadingAbstract) | ({
|
|
@@ -36,25 +37,25 @@ declare type HeadingDefinition = HeadingBase & (({
|
|
|
36
37
|
level: 2;
|
|
37
38
|
isListTitle?: true;
|
|
38
39
|
sectionTitles?: string[];
|
|
39
|
-
url: string;
|
|
40
|
+
url: null | string;
|
|
40
41
|
} | {
|
|
41
42
|
level: 3;
|
|
42
|
-
url: string;
|
|
43
|
+
url: null | string;
|
|
43
44
|
});
|
|
44
|
-
|
|
45
|
+
type HeadingBase = {
|
|
45
46
|
title: string;
|
|
46
47
|
level: number;
|
|
47
|
-
url?: string;
|
|
48
|
+
url?: null | string;
|
|
48
49
|
titleDocument?: string;
|
|
49
50
|
titleInNav?: string;
|
|
50
51
|
};
|
|
51
|
-
|
|
52
|
+
type HeadingAbstract = {
|
|
52
53
|
url?: undefined;
|
|
53
54
|
titleDocument?: undefined;
|
|
54
55
|
titleInNav?: undefined;
|
|
55
56
|
};
|
|
56
57
|
|
|
57
|
-
|
|
58
|
+
type Config = {
|
|
58
59
|
projectInfo: {
|
|
59
60
|
githubRepository: string;
|
|
60
61
|
githubIssues: string;
|
|
@@ -79,6 +80,7 @@ declare type Config = {
|
|
|
79
80
|
websiteUrl: string;
|
|
80
81
|
bannerUrl?: string;
|
|
81
82
|
twitterHandle: string;
|
|
83
|
+
i18n?: true;
|
|
82
84
|
};
|
|
83
85
|
|
|
84
86
|
declare function Link(props: {
|
|
@@ -134,4 +136,4 @@ declare function CodeBlock({ children, lineBreak }: {
|
|
|
134
136
|
lineBreak?: true;
|
|
135
137
|
}): JSX.Element;
|
|
136
138
|
|
|
137
|
-
export { CodeBlock, Config, DocLink, Emoji, EmojiName, HeadingDefinition, HeadingWithoutLink, HorizontalLine, ImportMeta, Info, Link, Note, P, ReadingRecommendation, RepoLink, Sponsors, assert, assertUsage, crawlAllFiles, determineSectionTitle, determineSectionUrlHash, filter, isBrowser, isRepoLink, jsxToTextContent, objectAssign };
|
|
139
|
+
export { CodeBlock, Config, DocLink, Emoji, EmojiName, HeadingDefinition, HeadingWithoutLink, HorizontalLine, ImportMeta, Info, Link, Note, P, ReadingRecommendation, RepoLink, Sponsors, assert, assertUsage, assertWarning, crawlAllFiles, determineSectionTitle, determineSectionUrlHash, filter, isBrowser, isRepoLink, jsxToTextContent, objectAssign };
|
package/dist/index.js
CHANGED
|
@@ -4,10 +4,10 @@ import {
|
|
|
4
4
|
isRepoLink,
|
|
5
5
|
parseTitle,
|
|
6
6
|
usePageContext
|
|
7
|
-
} from "./chunk-
|
|
7
|
+
} from "./chunk-6E4FPH4J.js";
|
|
8
8
|
import {
|
|
9
9
|
FeatureList
|
|
10
|
-
} from "./chunk-
|
|
10
|
+
} from "./chunk-NVJING6T.js";
|
|
11
11
|
import {
|
|
12
12
|
Emoji,
|
|
13
13
|
crawlAllFiles,
|
|
@@ -16,13 +16,14 @@ import {
|
|
|
16
16
|
filter,
|
|
17
17
|
jsxToTextContent,
|
|
18
18
|
objectAssign
|
|
19
|
-
} from "./chunk-
|
|
19
|
+
} from "./chunk-Q2ERR2XO.js";
|
|
20
20
|
import {
|
|
21
21
|
assert,
|
|
22
22
|
assertUsage,
|
|
23
|
+
assertWarning,
|
|
23
24
|
isBrowser
|
|
24
|
-
} from "./chunk-
|
|
25
|
-
import "./chunk-
|
|
25
|
+
} from "./chunk-2ZTPUQGS.js";
|
|
26
|
+
import "./chunk-3QC7HYIF.js";
|
|
26
27
|
|
|
27
28
|
// src/components/Link.tsx
|
|
28
29
|
import React2 from "react";
|
|
@@ -225,15 +226,6 @@ import React9 from "react";
|
|
|
225
226
|
// src/icons/heart.svg
|
|
226
227
|
var heart_default = "/assets/heart-OINVKOXO.svg";
|
|
227
228
|
|
|
228
|
-
// src/components/Sponsors/companyLogos/ccoli.svg
|
|
229
|
-
var ccoli_default = "/assets/ccoli-CHW3TQKS.svg";
|
|
230
|
-
|
|
231
|
-
// src/components/Sponsors/companyLogos/contra.svg
|
|
232
|
-
var contra_default = "/assets/contra-WLZBOPBV.svg";
|
|
233
|
-
|
|
234
|
-
// src/components/Sponsors/companyLogos/mfqs.svg
|
|
235
|
-
var mfqs_default = "/assets/mfqs-2EAEE7N6.svg";
|
|
236
|
-
|
|
237
229
|
// src/components/Sponsors/medalGold.svg
|
|
238
230
|
var medalGold_default = "/assets/medalGold-UP6A73FL.svg";
|
|
239
231
|
|
|
@@ -246,6 +238,18 @@ var medalBronze_default = "/assets/medalBronze-CO4CTUR4.svg";
|
|
|
246
238
|
// src/components/Sponsors/label.svg
|
|
247
239
|
var label_default = "/assets/label-MP75CTIA.svg";
|
|
248
240
|
|
|
241
|
+
// src/components/Sponsors/companyLogos/ccoli.svg
|
|
242
|
+
var ccoli_default = "/assets/ccoli-CHW3TQKS.svg";
|
|
243
|
+
|
|
244
|
+
// src/components/Sponsors/companyLogos/contra.svg
|
|
245
|
+
var contra_default = "/assets/contra-WLZBOPBV.svg";
|
|
246
|
+
|
|
247
|
+
// src/components/Sponsors/companyLogos/mfqs.svg
|
|
248
|
+
var mfqs_default = "/assets/mfqs-2EAEE7N6.svg";
|
|
249
|
+
|
|
250
|
+
// src/components/Sponsors/companyLogos/repora.svg
|
|
251
|
+
var repora_default = "/assets/repora-UNKQZ6QP.svg";
|
|
252
|
+
|
|
249
253
|
// src/components/Sponsors.tsx
|
|
250
254
|
var sponsors = [
|
|
251
255
|
{
|
|
@@ -266,9 +270,30 @@ var sponsors = [
|
|
|
266
270
|
plan: "bronze",
|
|
267
271
|
website: "https://myfavoritequiltstore.com"
|
|
268
272
|
},
|
|
273
|
+
{
|
|
274
|
+
companyName: "Repora",
|
|
275
|
+
companyLogo: repora_default,
|
|
276
|
+
plan: "bronze",
|
|
277
|
+
website: "https://www.repora.com"
|
|
278
|
+
},
|
|
279
|
+
{
|
|
280
|
+
username: "DannyZB"
|
|
281
|
+
},
|
|
282
|
+
{
|
|
283
|
+
username: "pieperz"
|
|
284
|
+
},
|
|
285
|
+
{
|
|
286
|
+
username: "hemengke1997"
|
|
287
|
+
},
|
|
269
288
|
{
|
|
270
289
|
username: "spacedawwwg"
|
|
271
290
|
},
|
|
291
|
+
{
|
|
292
|
+
username: "arthurgailes"
|
|
293
|
+
},
|
|
294
|
+
{
|
|
295
|
+
username: "stackblitz"
|
|
296
|
+
},
|
|
272
297
|
{
|
|
273
298
|
username: "codthing"
|
|
274
299
|
},
|
|
@@ -477,6 +502,7 @@ export {
|
|
|
477
502
|
Sponsors,
|
|
478
503
|
assert,
|
|
479
504
|
assertUsage,
|
|
505
|
+
assertWarning,
|
|
480
506
|
crawlAllFiles,
|
|
481
507
|
determineSectionTitle,
|
|
482
508
|
determineSectionUrlHash,
|
|
@@ -486,4 +512,3 @@ export {
|
|
|
486
512
|
jsxToTextContent,
|
|
487
513
|
objectAssign
|
|
488
514
|
};
|
|
489
|
-
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
<svg xmlns="http://www.w3.org/2000/svg" aria-hidden="true" focusable="false" viewBox="0 0 24 24" class="option-icon" data-v-fe4c30c3=""><path d="M0 0h24v24H0z" fill="none"></path><path d=" M12.87 15.07l-2.54-2.51.03-.03c1.74-1.94 2.98-4.17 3.71-6.53H17V4h-7V2H8v2H1v1.99h11.17C11.5 7.92 10.44 9.75 9 11.35 8.07 10.32 7.3 9.19 6.69 8h-2c.73 1.63 1.73 3.17 2.98 4.56l-5.09 5.02L4 19l5-5 3.11 3.11.76-2.04zM18.5 10h-2L12 22h2l1.12-3h4.75L21 22h2l-4.5-12zm-2.62 7l1.62-4.33L19.12 17h-3.24z " class="css-c4d79v"></path></svg>
|
|
@@ -95,7 +95,7 @@ body {
|
|
|
95
95
|
font-weight: 100 900;
|
|
96
96
|
font-stretch: 75% 125%;
|
|
97
97
|
font-style: oblique 0deg 12deg;
|
|
98
|
-
src: url(
|
|
98
|
+
src: url(../Inter-Var-IOAEQULN.ttf) format("truetype-variations");
|
|
99
99
|
}
|
|
100
100
|
|
|
101
101
|
/* src/css/code/inline.css */
|
|
@@ -233,15 +233,34 @@ table th {
|
|
|
233
233
|
}
|
|
234
234
|
|
|
235
235
|
/* src/algolia/DocSearch.css */
|
|
236
|
+
.DocSearch-Button-Keys {
|
|
237
|
+
margin-left: 6px !important;
|
|
238
|
+
}
|
|
239
|
+
.DocSearch-Search-Icon {
|
|
240
|
+
margin-right: 0 !important;
|
|
241
|
+
}
|
|
242
|
+
.DocSearch-Button-Placeholder {
|
|
243
|
+
padding-right: 6px !important;
|
|
244
|
+
}
|
|
236
245
|
#docsearch-desktop {
|
|
237
246
|
max-width: 110px !important;
|
|
238
247
|
}
|
|
239
|
-
#docsearch-desktop .DocSearch-Button-Placeholder
|
|
248
|
+
#docsearch-desktop .DocSearch-Button-Placeholder,
|
|
249
|
+
#docsearch-desktop .DocSearch-Button-Keys {
|
|
240
250
|
display: none;
|
|
251
|
+
}
|
|
252
|
+
#docsearch-desktop .DocSearch-Button {
|
|
253
|
+
background: transparent !important;
|
|
241
254
|
padding: 0 !important;
|
|
255
|
+
position: relative;
|
|
256
|
+
top: -1px;
|
|
257
|
+
outline: none !important;
|
|
258
|
+
border: none !important;
|
|
259
|
+
box-shadow: none !important;
|
|
242
260
|
}
|
|
243
261
|
#docsearch-desktop .DocSearch-Search-Icon {
|
|
244
|
-
|
|
262
|
+
height: 21px !important;
|
|
263
|
+
width: 21px !important;
|
|
245
264
|
}
|
|
246
265
|
#docsearch-desktop .DocSearch-Button {
|
|
247
266
|
margin-right: 3px !important;
|
|
@@ -261,4 +280,3 @@ table th {
|
|
|
261
280
|
}
|
|
262
281
|
|
|
263
282
|
/* src/css/index.css */
|
|
264
|
-
/*# sourceMappingURL=_default.page.client.css.map */
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import {
|
|
2
2
|
assert
|
|
3
|
-
} from "../chunk-
|
|
4
|
-
import "../chunk-
|
|
3
|
+
} from "../chunk-2ZTPUQGS.js";
|
|
4
|
+
import "../chunk-3QC7HYIF.js";
|
|
5
5
|
|
|
6
6
|
// src/autoScrollNav.ts
|
|
7
7
|
autoScrollNav();
|
|
@@ -33,9 +33,8 @@ function installSectionUrlHashs() {
|
|
|
33
33
|
assert(navigationEl);
|
|
34
34
|
const docSections = Array.from(document.querySelectorAll("h2"));
|
|
35
35
|
docSections.forEach((docSection) => {
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
assert(docSection.id, { docSection });
|
|
36
|
+
if (!docSection.id)
|
|
37
|
+
return;
|
|
39
38
|
const urlHash = "#" + docSection.id;
|
|
40
39
|
assertNavLink(navigationEl, urlHash);
|
|
41
40
|
docSection.onclick = () => {
|
|
@@ -75,6 +74,8 @@ function initNavigationFullscreen() {
|
|
|
75
74
|
document.addEventListener(
|
|
76
75
|
"keydown",
|
|
77
76
|
(ev) => {
|
|
77
|
+
if (document.body.classList.contains("DocSearch--active"))
|
|
78
|
+
return;
|
|
78
79
|
if (ev.key === "Escape")
|
|
79
80
|
toggleNavExpend();
|
|
80
81
|
},
|
|
@@ -177,4 +178,3 @@ function activateNavigationMask() {
|
|
|
177
178
|
function toggleNavigation() {
|
|
178
179
|
document.body.classList.toggle("show-menu");
|
|
179
180
|
}
|
|
180
|
-
//# sourceMappingURL=_default.page.client.js.map
|
|
@@ -48,8 +48,7 @@
|
|
|
48
48
|
margin-left: calc(-1 * var(--navigation-fullscreen-button-width));
|
|
49
49
|
}
|
|
50
50
|
@media screen and (max-width: 1139px) {
|
|
51
|
-
#navigation-header-logo
|
|
52
|
-
#docsearch {
|
|
51
|
+
#navigation-header-logo {
|
|
53
52
|
display: none !important;
|
|
54
53
|
}
|
|
55
54
|
#navigation-wrapper {
|
|
@@ -260,7 +259,7 @@ html.navigation-fullscreen #detached-note {
|
|
|
260
259
|
height: 100%;
|
|
261
260
|
width: 100%;
|
|
262
261
|
background-color: #eee !important;
|
|
263
|
-
background: url(
|
|
262
|
+
background: url(../chevron-K3WPYLOP.svg);
|
|
264
263
|
background-repeat: no-repeat;
|
|
265
264
|
background-position: center center;
|
|
266
265
|
}
|
|
@@ -309,4 +308,3 @@ html.navigation-fullscreen #page-content {
|
|
|
309
308
|
--main-view-padding: 10px;
|
|
310
309
|
}
|
|
311
310
|
}
|
|
312
|
-
/*# sourceMappingURL=_default.page.server.css.map */
|
|
@@ -1,18 +1,18 @@
|
|
|
1
1
|
import * as vite_plugin_ssr_dist_cjs_node_html_renderHtml from 'vite-plugin-ssr/dist/cjs/node/html/renderHtml';
|
|
2
2
|
import { PageContextBuiltIn } from 'vite-plugin-ssr';
|
|
3
3
|
|
|
4
|
-
|
|
4
|
+
type MarkdownHeading = {
|
|
5
5
|
title: string;
|
|
6
|
-
|
|
6
|
+
headingId: string | null;
|
|
7
7
|
headingLevel: number;
|
|
8
8
|
titleAddendum?: string;
|
|
9
9
|
};
|
|
10
10
|
|
|
11
|
-
|
|
12
|
-
|
|
11
|
+
type ReactComponent = () => JSX.Element;
|
|
12
|
+
type Exports = {
|
|
13
13
|
headings?: MarkdownHeading[];
|
|
14
14
|
};
|
|
15
|
-
|
|
15
|
+
type PageContextOriginal = PageContextBuiltIn & {
|
|
16
16
|
Page: ReactComponent;
|
|
17
17
|
exports: Exports;
|
|
18
18
|
};
|
|
@@ -4,19 +4,20 @@ import {
|
|
|
4
4
|
getHeadings,
|
|
5
5
|
parseTitle,
|
|
6
6
|
usePageContext
|
|
7
|
-
} from "../chunk-
|
|
7
|
+
} from "../chunk-6E4FPH4J.js";
|
|
8
8
|
import {
|
|
9
9
|
Emoji,
|
|
10
10
|
jsxToTextContent,
|
|
11
11
|
objectAssign
|
|
12
|
-
} from "../chunk-
|
|
12
|
+
} from "../chunk-Q2ERR2XO.js";
|
|
13
13
|
import {
|
|
14
14
|
assert,
|
|
15
|
-
assertUsage
|
|
16
|
-
|
|
15
|
+
assertUsage,
|
|
16
|
+
assertWarning
|
|
17
|
+
} from "../chunk-2ZTPUQGS.js";
|
|
17
18
|
import {
|
|
18
19
|
__template
|
|
19
|
-
} from "../chunk-
|
|
20
|
+
} from "../chunk-3QC7HYIF.js";
|
|
20
21
|
|
|
21
22
|
// src/renderer/_default.page.server.tsx
|
|
22
23
|
import ReactDOMServer from "react-dom/server";
|
|
@@ -44,6 +45,9 @@ var discord_default = "/assets/discord-JD33TUSF.svg";
|
|
|
44
45
|
// src/icons/changelog.svg
|
|
45
46
|
var changelog_default = "/assets/changelog-IPI5F42D.svg";
|
|
46
47
|
|
|
48
|
+
// src/icons/languages.svg
|
|
49
|
+
var languages_default = "/assets/languages-KXPKJFQL.svg";
|
|
50
|
+
|
|
47
51
|
// src/navigation/NavigationHeader.tsx
|
|
48
52
|
function NavigationHeader() {
|
|
49
53
|
const pageContext = usePageContext();
|
|
@@ -71,7 +75,13 @@ function NavigationHeader() {
|
|
|
71
75
|
}
|
|
72
76
|
function Links() {
|
|
73
77
|
const pageContext = usePageContext();
|
|
74
|
-
const { projectInfo } = pageContext.config;
|
|
78
|
+
const { projectInfo, i18n } = pageContext.config;
|
|
79
|
+
const iconI18n = !i18n ? null : /* @__PURE__ */ React.createElement(LinkIcon, {
|
|
80
|
+
className: "decolorize-4",
|
|
81
|
+
icon: languages_default,
|
|
82
|
+
href: "/languages",
|
|
83
|
+
style: { height: 21, position: "relative", top: 0, left: 0 }
|
|
84
|
+
});
|
|
75
85
|
return /* @__PURE__ */ React.createElement("div", {
|
|
76
86
|
style: {
|
|
77
87
|
display: "flex",
|
|
@@ -79,21 +89,22 @@ function Links() {
|
|
|
79
89
|
paddingTop: 0,
|
|
80
90
|
justifyContent: "left"
|
|
81
91
|
}
|
|
82
|
-
}, /* @__PURE__ */ React.createElement(
|
|
92
|
+
}, /* @__PURE__ */ React.createElement(LinkIcon, {
|
|
83
93
|
className: "decolorize-4",
|
|
84
94
|
icon: github_default,
|
|
85
95
|
href: projectInfo.githubRepository
|
|
86
|
-
}), /* @__PURE__ */ React.createElement(
|
|
96
|
+
}), /* @__PURE__ */ React.createElement(LinkIcon, {
|
|
87
97
|
className: "decolorize-6",
|
|
88
98
|
icon: discord_default,
|
|
89
99
|
href: projectInfo.discordInvite
|
|
90
|
-
}), /* @__PURE__ */ React.createElement(
|
|
100
|
+
}), /* @__PURE__ */ React.createElement(LinkIcon, {
|
|
91
101
|
className: "decolorize-7",
|
|
92
102
|
icon: twitter_default,
|
|
93
103
|
href: projectInfo.twitterProfile
|
|
94
104
|
}), /* @__PURE__ */ React.createElement("div", {
|
|
105
|
+
className: "decolorize-6 colorize-on-hover",
|
|
95
106
|
id: "docsearch-desktop"
|
|
96
|
-
}), /* @__PURE__ */ React.createElement(ChangelogButton, null));
|
|
107
|
+
}), iconI18n, /* @__PURE__ */ React.createElement(ChangelogButton, null));
|
|
97
108
|
}
|
|
98
109
|
function ChangelogButton() {
|
|
99
110
|
const pageContext = usePageContext();
|
|
@@ -119,7 +130,7 @@ function ChangelogButton() {
|
|
|
119
130
|
style: { marginLeft: 5 }
|
|
120
131
|
}));
|
|
121
132
|
}
|
|
122
|
-
function
|
|
133
|
+
function LinkIcon({ className, icon, href, style }) {
|
|
123
134
|
return /* @__PURE__ */ React.createElement(React.Fragment, null, /* @__PURE__ */ React.createElement("a", {
|
|
124
135
|
className: "colorize-on-hover " + className,
|
|
125
136
|
href,
|
|
@@ -127,7 +138,7 @@ function SocialLink({ className, icon, href }) {
|
|
|
127
138
|
}, /* @__PURE__ */ React.createElement("img", {
|
|
128
139
|
src: icon,
|
|
129
140
|
height: "20",
|
|
130
|
-
style
|
|
141
|
+
style
|
|
131
142
|
})));
|
|
132
143
|
}
|
|
133
144
|
|
|
@@ -209,6 +220,17 @@ function Heading({
|
|
|
209
220
|
heading
|
|
210
221
|
}) {
|
|
211
222
|
assert([1, 2, 3, 4].includes(heading.level), heading);
|
|
223
|
+
if (heading.level === 1 || heading.level === 4) {
|
|
224
|
+
assert(heading.url === void 0);
|
|
225
|
+
} else {
|
|
226
|
+
const sectionTitle = jsxToTextContent(heading.title);
|
|
227
|
+
assertWarning(
|
|
228
|
+
heading.url,
|
|
229
|
+
`${jsxToTextContent(
|
|
230
|
+
heading.titleInNav
|
|
231
|
+
)} is missing a URL hash. Use \`<h2 id="url-hash">${sectionTitle}</h2>\` instead of \`## ${sectionTitle}\`.`
|
|
232
|
+
);
|
|
233
|
+
}
|
|
212
234
|
return /* @__PURE__ */ React3.createElement("a", {
|
|
213
235
|
className: [
|
|
214
236
|
"nav-item",
|
|
@@ -220,7 +242,7 @@ function Heading({
|
|
|
220
242
|
heading.computed.isFirstOfItsKind && "nav-item-first-of-its-kind",
|
|
221
243
|
heading.computed.isLastOfItsKind && "nav-item-last-of-its-kind"
|
|
222
244
|
].filter(Boolean).join(" "),
|
|
223
|
-
href: heading.url
|
|
245
|
+
href: heading.url ?? void 0
|
|
224
246
|
}, heading.titleInNav);
|
|
225
247
|
}
|
|
226
248
|
function groupHeadings(headings) {
|
|
@@ -486,7 +508,7 @@ function getHeadingsWithSubHeadings(headings, pageContext, activeHeading) {
|
|
|
486
508
|
const pageHeadings = pageContext.exports.headings || [];
|
|
487
509
|
pageHeadings.forEach((pageHeading, i) => {
|
|
488
510
|
const title = parseTitle(pageHeading.title);
|
|
489
|
-
const url = "#" + pageHeading.
|
|
511
|
+
const url = pageHeading.headingId && "#" + pageHeading.headingId;
|
|
490
512
|
assert(
|
|
491
513
|
pageHeading.headingLevel !== 3,
|
|
492
514
|
"Wrong page heading level `" + pageHeading.headingLevel + "` (it should be `<h2>`) for sub-heading `" + pageHeading.title + "` of page `" + pageContext.urlOriginal + "`."
|
|
@@ -600,4 +622,3 @@ function getOpenGraphTags(url, meta) {
|
|
|
600
622
|
export {
|
|
601
623
|
render
|
|
602
624
|
};
|
|
603
|
-
//# sourceMappingURL=_default.page.server.js.map
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 178.84 55.522">
|
|
2
|
+
<defs>
|
|
3
|
+
<style>
|
|
4
|
+
.a {
|
|
5
|
+
fill: #00204f;
|
|
6
|
+
}
|
|
7
|
+
</style>
|
|
8
|
+
</defs>
|
|
9
|
+
<path class="a" d="M27.761,0A27.761,27.761,0,1,0,55.522,27.761,27.793,27.793,0,0,0,27.761,0Zm0,52.262a24.5,24.5,0,1,1,24.5-24.5A24.529,24.529,0,0,1,27.761,52.262Zm-5.543-8.536H35.3L22.218,28.358Zm5.9-30.856h-5.9V27.242h5.9a7.186,7.186,0,1,0,0-14.372Zm75.168,22.755a1.825,1.825,0,0,0-1.239.656A6.35,6.35,0,0,1,97.2,38.467a6.762,6.762,0,0,1-6.668-6.959,6.762,6.762,0,0,1,6.668-6.96,5.551,5.551,0,0,1,3.5,1.166l-3.844,4.245a1.23,1.23,0,0,0-.328.911,1.37,1.37,0,0,0,2.405.838l4.646-5.3a1.468,1.468,0,0,0-.074-2.223,9.326,9.326,0,0,0-6.3-2.332,9.656,9.656,0,0,0,0,19.312,9.22,9.22,0,0,0,7.105-3.17,1.7,1.7,0,0,0,.438-.984A1.38,1.38,0,0,0,103.286,35.625ZM117.543,22.01a9.019,9.019,0,0,0-6.622,2.833,10.116,10.116,0,0,0-1.843,2.566,9.363,9.363,0,0,0-.99,4.172v14.4a1.406,1.406,0,0,0,1.416,1.452,1.428,1.428,0,0,0,1.417-1.452V37.947a8.885,8.885,0,0,0,6.622,2.833,9.156,9.156,0,0,0,9.173-9.385A9.156,9.156,0,0,0,117.543,22.01Zm-.177,16.149a6.5,6.5,0,0,1-6.445-6.481v-.566a6.466,6.466,0,1,1,12.926.283A6.55,6.55,0,0,1,117.366,38.159ZM139.83,22.01a9.385,9.385,0,0,0,0,18.77,9.208,9.208,0,0,0,9.314-9.385A9.209,9.209,0,0,0,139.83,22.01Zm0,16.149a6.593,6.593,0,0,1-6.481-6.764,6.47,6.47,0,1,1,12.926,0A6.565,6.565,0,0,1,139.83,38.159Zm38.292-10.041a10.174,10.174,0,0,0-2.116-3.275A9.17,9.17,0,0,0,160.211,31.4a9.156,9.156,0,0,0,9.173,9.385,8.942,8.942,0,0,0,6.622-2.833v1.31a1.429,1.429,0,0,0,1.417,1.452,1.407,1.407,0,0,0,1.417-1.452V31.581A10.176,10.176,0,0,0,178.122,28.118Zm-2.116,3.56A6.466,6.466,0,1,1,163.08,31.4a6.466,6.466,0,1,1,12.926-.283ZM158.27,22.15a4.873,4.873,0,0,0-3.208.735,4.992,4.992,0,0,0-2.182,3.663l-.006.067V39.3a1.415,1.415,0,1,0,2.829,0V26.761a2.183,2.183,0,0,1,.9-1.5,2.076,2.076,0,0,1,1.336-.3,1.414,1.414,0,1,0,.331-2.809ZM77.577,28.959l.732-.037A6.319,6.319,0,0,0,83.8,22.369c0-4.063-3.038-7.322-7.688-7.322h-5.93a1.547,1.547,0,0,0-1.538,1.538V39.393a1.556,1.556,0,1,0,3.112,0V17.939H76a4.414,4.414,0,1,1,0,8.823H74.794A1.4,1.4,0,0,0,73.4,28.19a1.927,1.927,0,0,0,.476,1.208l9.226,10.983a1.489,1.489,0,0,0,1.208.586,1.547,1.547,0,0,0,1.538-1.537,1.424,1.424,0,0,0-.366-1.025Z"/>
|
|
10
|
+
</svg>
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@brillout/docpress",
|
|
3
|
-
"version": "0.2.
|
|
3
|
+
"version": "0.2.4",
|
|
4
4
|
"exports": {
|
|
5
5
|
"./renderer/_default.page.server.js": "./dist/renderer/_default.page.server.js",
|
|
6
6
|
"./renderer/_default.page.client.js": "./dist/renderer/_default.page.client.js",
|
|
@@ -35,8 +35,7 @@
|
|
|
35
35
|
"// Build Docpress": "",
|
|
36
36
|
"build": "rm -rf dist/ && framework-builder",
|
|
37
37
|
"// Release": "",
|
|
38
|
-
"
|
|
39
|
-
"release": "npm version patch && npm publish && git push && git push --tags"
|
|
38
|
+
"release": "release-me patch"
|
|
40
39
|
},
|
|
41
40
|
"dependencies": {
|
|
42
41
|
"@mdx-js/mdx": "^2.0.0",
|
|
@@ -50,15 +49,16 @@
|
|
|
50
49
|
"shiki": "^0.10.1",
|
|
51
50
|
"twemoji": "^13.1.0",
|
|
52
51
|
"vite": "npm:@brillout/vite@4.0.1-fix",
|
|
53
|
-
"vite-plugin-ssr": "^0.4.
|
|
52
|
+
"vite-plugin-ssr": "^0.4.65"
|
|
54
53
|
},
|
|
55
54
|
"peerDependencies": {
|
|
56
55
|
"react": "18",
|
|
57
56
|
"react-dom": "18"
|
|
58
57
|
},
|
|
59
58
|
"devDependencies": {
|
|
60
|
-
"@brillout/framework-builder": "^0.0.2",
|
|
61
59
|
"@brillout/docpress": "link:.",
|
|
60
|
+
"@brillout/framework-builder": "^0.1.1",
|
|
61
|
+
"@brillout/release-me": "^0.1.0",
|
|
62
62
|
"@types/express": "^4.17.13",
|
|
63
63
|
"@types/node": "^15.12.1",
|
|
64
64
|
"@types/react": "^17.0.44",
|
|
@@ -68,7 +68,7 @@
|
|
|
68
68
|
"react-dom": "^18.1.0",
|
|
69
69
|
"rollup": "^2.74.1",
|
|
70
70
|
"tsx": "^3.12.1",
|
|
71
|
-
"typescript": "^4.
|
|
71
|
+
"typescript": "^4.9.4"
|
|
72
72
|
},
|
|
73
73
|
"bin": {
|
|
74
74
|
"docpress": "./bin.js"
|
|
@@ -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 +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":"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","names":["React","React","React","React","headingsWithoutLink"]}
|
|
@@ -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;AAAA,IAAI,IAAG;AAAA,KACL,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;AAAA,MAAI;AAAA,MAAsB,KAAK;AAAA,OAC9B,oCAAC;AAAA,MAAS,GAAG,EAAE,GAAG,UAAU,WAAW,WAAW;AAAA,KAAG,GACpD,YAAY,oCAAC;AAAA,MAAS,GAAG,EAAE,GAAG,UAAU,WAAW,WAAW;AAAA,KAAG,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;AAAA,IAAY;AAAA,IAAY,cAAc,CAAC,CAAC;AAAA,IAAW;AAAA,KACjD,KACD,oCAAC,YAAI,KAAM,GACV,IACH,GACC,CAAC,CAAC,aACD,oCAAC;AAAA,IAAU;AAAA,IAAY;AAAA,KACpB,SACH,CAEJ;AAEJ;AAEA,SAAS,YAAY;AAAA,EACnB;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA,YAAY;AACd,GAMG;AACD,SACE,oCAAC;AAAA,IACC,WAAW;AAAA,MACT;AAAA,MACA;AAAA,MACA;AAAA,MACA,gBAAgB;AAAA,MAChB,sBAAsB;AAAA,IACxB,EACG,OAAO,OAAO,EACd,KAAK,GAAG;AAAA,IACX,IAAI,QAAQ,WAAW;AAAA,IACvB,OAAO,EAAE,QAAS,gBAAgB,aAAc,OAAU;AAAA,KAEzD,UACA,gBACC,oCAAC;AAAA,IAAI,OAAO,EAAE,WAAW,UAAU,WAAW,MAAM;AAAA,KAClD,oCAAC;AAAA,IACC,MAAK;AAAA,IACL,OAAO;AAAA,MACL,WAAW;AAAA,MACX,SAAS;AAAA,MACT,YAAY;AAAA,MACZ,eAAe;AAAA,MACf,SAAS;AAAA,MACT,UAAU;AAAA,MACV,eAAe;AAAA,MACf,eAAe;AAAA,MACf,YAAY;AAAA,IACd;AAAA,KAEA,oCAAC;AAAA,IAAK,WAAU;AAAA,KAAe,YAAU,GACzC,oCAAC,UAAG,GACJ,oCAAC;AAAA,IAAI,WAAU;AAAA,IAAuB,KAAK;AAAA,IAAa,QAAO;AAAA,IAAI,OAAO,EAAE,WAAW,EAAE;AAAA,GAAG,CAC9F,CACF,CAEJ;AAEJ;AACA,SAAS,UAAU,EAAE,UAAU,MAAM,UAAU,GAAwD;AACrG,SACE,oCAAC;AAAA,IAAM,WAAW,iBAAiB,YAAY,eAAe;AAAA,IAAK,IAAI,cAAc;AAAA,KAClF,QACH;AAEJ;","names":[]}
|
|
@@ -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":[]}
|
package/dist/cli/index.js.map
DELETED
|
@@ -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":[]}
|
package/dist/index.css.map
DELETED
|
@@ -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 — 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 id=\"version-number\" 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"]}
|