@brillout/docpress 0.15.10-commit-ef0b9a0 → 0.15.10-commit-b6b1605
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/components/CodeSnippets.tsx +5 -1
- package/detypePlugin.ts +67 -23
- package/dist/+config.js +1 -1
- package/dist/NavItemComponent.js +46 -38
- package/dist/components/CodeBlockTransformer.js +3 -2
- package/dist/components/CodeSnippets.js +83 -21
- package/dist/components/Comment.js +2 -1
- package/dist/components/FileRemoved.js +6 -4
- package/dist/components/HorizontalLine.js +2 -1
- package/dist/components/ImportMeta.js +3 -2
- package/dist/components/Link.js +50 -34
- package/dist/components/Note.js +29 -17
- package/dist/components/P.js +12 -1
- package/dist/components/RepoLink.js +9 -7
- package/dist/determineNavItemsColumnLayout.js +62 -48
- package/dist/detypePlugin.js +143 -40
- package/dist/parseMarkdownMini.js +17 -5
- package/dist/parsePageSections.js +82 -41
- package/dist/renderer/usePageContext.js +7 -6
- package/dist/resolvePageContext.js +103 -91
- package/dist/utils/Emoji/Emoji.js +21 -13
- package/dist/utils/assert.js +16 -14
- package/dist/utils/cls.js +1 -1
- package/dist/utils/contentMap.d.ts +9 -0
- package/dist/utils/contentMap.js +22 -0
- package/dist/utils/determineSectionUrlHash.js +5 -5
- package/dist/utils/filter.js +2 -2
- package/dist/utils/getGlobalObject.js +3 -3
- package/dist/utils/useSelectedLanguage.js +12 -11
- package/dist/vite.config.js +7 -7
- package/package.json +2 -2
- package/tsconfig.json +0 -1
- package/utils/contentMap.ts +34 -0
|
@@ -1,3 +1,23 @@
|
|
|
1
|
+
var __assign = (this && this.__assign) || function () {
|
|
2
|
+
__assign = Object.assign || function(t) {
|
|
3
|
+
for (var s, i = 1, n = arguments.length; i < n; i++) {
|
|
4
|
+
s = arguments[i];
|
|
5
|
+
for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p))
|
|
6
|
+
t[p] = s[p];
|
|
7
|
+
}
|
|
8
|
+
return t;
|
|
9
|
+
};
|
|
10
|
+
return __assign.apply(this, arguments);
|
|
11
|
+
};
|
|
12
|
+
var __spreadArray = (this && this.__spreadArray) || function (to, from, pack) {
|
|
13
|
+
if (pack || arguments.length === 2) for (var i = 0, l = from.length, ar; i < l; i++) {
|
|
14
|
+
if (ar || !(i in from)) {
|
|
15
|
+
if (!ar) ar = Array.prototype.slice.call(from, 0, i);
|
|
16
|
+
ar[i] = from[i];
|
|
17
|
+
}
|
|
18
|
+
}
|
|
19
|
+
return to.concat(ar || Array.prototype.slice.call(from));
|
|
20
|
+
};
|
|
1
21
|
export { resolvePageContext };
|
|
2
22
|
import { assert } from './utils/assert';
|
|
3
23
|
import { jsxToTextContent } from './utils/jsxToTextContent';
|
|
@@ -5,53 +25,51 @@ import pc from '@brillout/picocolors';
|
|
|
5
25
|
import { parseMarkdownMini } from './parseMarkdownMini';
|
|
6
26
|
import { determineNavItemsColumnLayout } from './determineNavItemsColumnLayout';
|
|
7
27
|
function resolvePageContext(pageContext) {
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
28
|
+
var _a;
|
|
29
|
+
var config = pageContext.globalContext.config.docpress;
|
|
30
|
+
var urlPathname = pageContext.urlPathname;
|
|
31
|
+
var pageSections = (_a = pageContext.config.pageSectionsExport) !== null && _a !== void 0 ? _a : [];
|
|
11
32
|
{
|
|
12
|
-
|
|
13
|
-
assertHeadingsDefinition([
|
|
33
|
+
var headings = config.headings, headingsDetached = config.headingsDetached;
|
|
34
|
+
assertHeadingsDefinition(__spreadArray(__spreadArray([], headings, true), headingsDetached, true));
|
|
14
35
|
}
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
const linksAll = [...linksPage, ...linksGlobal];
|
|
27
|
-
let navItemsAll;
|
|
28
|
-
let navItemsDetached;
|
|
36
|
+
var ret = getHeadingsResolved(config);
|
|
37
|
+
var headingsDetachedResolved = ret.headingsDetachedResolved;
|
|
38
|
+
var headingsResolved = ret.headingsResolved;
|
|
39
|
+
var _b = getActiveHeading(headingsResolved, headingsDetachedResolved, urlPathname), activeHeading = _b.activeHeading, isDetachedPage = _b.isDetachedPage, activeCategoryName = _b.activeCategoryName;
|
|
40
|
+
var _c = getTitles(activeHeading, urlPathname, config), documentTitle = _c.documentTitle, isLandingPage = _c.isLandingPage, pageTitle = _c.pageTitle;
|
|
41
|
+
var pageSectionsResolved = getPageSectionsResolved(pageSections, activeHeading);
|
|
42
|
+
var linksGlobal = __spreadArray(__spreadArray([], headingsResolved.map(headingToLinkData), true), headingsDetachedResolved.map(headingToLinkData), true);
|
|
43
|
+
var linksPage = pageSectionsResolved.map(pageSectionToLinkData);
|
|
44
|
+
var linksAll = __spreadArray(__spreadArray([], linksPage, true), linksGlobal, true);
|
|
45
|
+
var navItemsAll;
|
|
46
|
+
var navItemsDetached;
|
|
29
47
|
{
|
|
30
|
-
|
|
31
|
-
.filter((pageSection)
|
|
48
|
+
var navItemsPageSections = pageSectionsResolved
|
|
49
|
+
.filter(function (pageSection) { return pageSection.pageSectionLevel === 2; })
|
|
32
50
|
.map(pageSectionToNavItem);
|
|
33
51
|
navItemsAll = headingsResolved.map(headingToNavItem);
|
|
34
52
|
determineNavItemsColumnLayout(navItemsAll);
|
|
35
53
|
if (isDetachedPage) {
|
|
36
|
-
navItemsDetached = [headingToNavItem(activeHeading),
|
|
54
|
+
navItemsDetached = __spreadArray([headingToNavItem(activeHeading)], navItemsPageSections, true);
|
|
37
55
|
}
|
|
38
56
|
else {
|
|
39
|
-
|
|
40
|
-
assert(
|
|
41
|
-
navItemsPageSections.forEach((navItem, i)
|
|
42
|
-
navItemsAll.splice(
|
|
57
|
+
var activeHeadingIndex_1 = navItemsAll.findIndex(function (navItem) { return navItem.url === urlPathname; });
|
|
58
|
+
assert(activeHeadingIndex_1 >= 0);
|
|
59
|
+
navItemsPageSections.forEach(function (navItem, i) {
|
|
60
|
+
navItemsAll.splice(activeHeadingIndex_1 + 1 + i, 0, navItem);
|
|
43
61
|
});
|
|
44
62
|
}
|
|
45
63
|
}
|
|
46
|
-
|
|
47
|
-
navItemsAll,
|
|
48
|
-
navItemsDetached,
|
|
64
|
+
var resolved = {
|
|
65
|
+
navItemsAll: navItemsAll,
|
|
66
|
+
navItemsDetached: navItemsDetached,
|
|
49
67
|
pageDesign: activeHeading.pageDesign,
|
|
50
|
-
linksAll,
|
|
51
|
-
isLandingPage,
|
|
52
|
-
pageTitle,
|
|
53
|
-
documentTitle,
|
|
54
|
-
activeCategoryName,
|
|
68
|
+
linksAll: linksAll,
|
|
69
|
+
isLandingPage: isLandingPage,
|
|
70
|
+
pageTitle: pageTitle,
|
|
71
|
+
documentTitle: documentTitle,
|
|
72
|
+
activeCategoryName: activeCategoryName,
|
|
55
73
|
};
|
|
56
74
|
return resolved;
|
|
57
75
|
}
|
|
@@ -91,24 +109,26 @@ function pageSectionToLinkData(pageSection) {
|
|
|
91
109
|
};
|
|
92
110
|
}
|
|
93
111
|
function getTitles(activeHeading, urlPathname, config) {
|
|
94
|
-
|
|
95
|
-
|
|
96
|
-
|
|
97
|
-
|
|
112
|
+
var isLandingPage = urlPathname === '/';
|
|
113
|
+
var title = activeHeading.title;
|
|
114
|
+
var pageTitle = isLandingPage ? null : title;
|
|
115
|
+
var documentTitle = activeHeading.titleDocument || jsxToTextContent(parseMarkdownMini(title));
|
|
98
116
|
if (!isLandingPage) {
|
|
99
117
|
documentTitle += ' | ' + config.name;
|
|
100
118
|
}
|
|
101
119
|
if (isLandingPage) {
|
|
102
120
|
pageTitle = null;
|
|
103
121
|
}
|
|
104
|
-
return { documentTitle, isLandingPage, pageTitle };
|
|
122
|
+
return { documentTitle: documentTitle, isLandingPage: isLandingPage, pageTitle: pageTitle };
|
|
105
123
|
}
|
|
106
124
|
function getActiveHeading(headingsResolved, headingsDetachedResolved, urlPathname) {
|
|
107
|
-
|
|
108
|
-
|
|
109
|
-
|
|
125
|
+
var _a;
|
|
126
|
+
var activeHeading = null;
|
|
127
|
+
var activeCategoryName = 'Miscellaneous';
|
|
128
|
+
var headingCategory;
|
|
110
129
|
assert(urlPathname);
|
|
111
|
-
for (
|
|
130
|
+
for (var _i = 0, headingsResolved_1 = headingsResolved; _i < headingsResolved_1.length; _i++) {
|
|
131
|
+
var heading = headingsResolved_1[_i];
|
|
112
132
|
if (heading.level === 1) {
|
|
113
133
|
headingCategory = heading.title;
|
|
114
134
|
}
|
|
@@ -116,87 +136,79 @@ function getActiveHeading(headingsResolved, headingsDetachedResolved, urlPathnam
|
|
|
116
136
|
activeHeading = heading;
|
|
117
137
|
assert(headingCategory);
|
|
118
138
|
activeCategoryName = headingCategory;
|
|
119
|
-
assert(heading.level === 2, { pageUrl: urlPathname, heading });
|
|
139
|
+
assert(heading.level === 2, { pageUrl: urlPathname, heading: heading });
|
|
120
140
|
break;
|
|
121
141
|
}
|
|
122
142
|
}
|
|
123
|
-
|
|
143
|
+
var isDetachedPage = !activeHeading;
|
|
124
144
|
if (!activeHeading) {
|
|
125
|
-
activeHeading = headingsDetachedResolved.find((
|
|
145
|
+
activeHeading = (_a = headingsDetachedResolved.find(function (_a) {
|
|
146
|
+
var url = _a.url;
|
|
147
|
+
return urlPathname === url;
|
|
148
|
+
})) !== null && _a !== void 0 ? _a : null;
|
|
126
149
|
}
|
|
127
150
|
if (!activeHeading) {
|
|
128
151
|
throw new Error([
|
|
129
|
-
|
|
130
|
-
[
|
|
131
|
-
.
|
|
132
|
-
.map((h) => h.url)
|
|
152
|
+
"URL ".concat(pc.bold(urlPathname), " not found in following URLs:"),
|
|
153
|
+
__spreadArray(__spreadArray([], headingsResolved, true), headingsDetachedResolved, true).filter(Boolean)
|
|
154
|
+
.map(function (h) { return h.url; })
|
|
133
155
|
.sort()
|
|
134
|
-
.map((url)
|
|
156
|
+
.map(function (url) { return " ".concat(url); })
|
|
135
157
|
.join('\n'),
|
|
136
158
|
].join('\n'));
|
|
137
159
|
}
|
|
138
160
|
if (activeHeading.category)
|
|
139
161
|
activeCategoryName = activeHeading.category;
|
|
140
|
-
return { activeHeading, isDetachedPage, activeCategoryName };
|
|
162
|
+
return { activeHeading: activeHeading, isDetachedPage: isDetachedPage, activeCategoryName: activeCategoryName };
|
|
141
163
|
}
|
|
142
164
|
function getPageSectionsResolved(pageSections, activeHeading) {
|
|
143
|
-
|
|
144
|
-
|
|
145
|
-
|
|
146
|
-
|
|
147
|
-
|
|
165
|
+
var pageSectionsResolved = pageSections.map(function (pageSection) {
|
|
166
|
+
var _a;
|
|
167
|
+
var pageSectionTitle = pageSection.pageSectionTitle;
|
|
168
|
+
var url = pageSection.pageSectionId === null ? null : '#' + pageSection.pageSectionId;
|
|
169
|
+
var pageSectionResolved = {
|
|
170
|
+
url: url,
|
|
148
171
|
title: pageSectionTitle,
|
|
149
|
-
linkBreadcrumb: [activeHeading.title,
|
|
172
|
+
linkBreadcrumb: __spreadArray([activeHeading.title], ((_a = activeHeading.linkBreadcrumb) !== null && _a !== void 0 ? _a : []), true),
|
|
150
173
|
titleInNav: pageSectionTitle,
|
|
151
174
|
pageSectionLevel: pageSection.pageSectionLevel,
|
|
152
175
|
};
|
|
153
176
|
return pageSectionResolved;
|
|
154
177
|
});
|
|
155
|
-
if (activeHeading
|
|
156
|
-
activeHeading.sectionTitles.forEach((sectionTitle)
|
|
157
|
-
|
|
158
|
-
assert(pageSectionTitles.includes(sectionTitle), { pageHeadingTitles: pageSectionTitles, sectionTitle });
|
|
178
|
+
if (activeHeading === null || activeHeading === void 0 ? void 0 : activeHeading.sectionTitles) {
|
|
179
|
+
activeHeading.sectionTitles.forEach(function (sectionTitle) {
|
|
180
|
+
var pageSectionTitles = pageSections.map(function (h) { return h.pageSectionTitle; });
|
|
181
|
+
assert(pageSectionTitles.includes(sectionTitle), { pageHeadingTitles: pageSectionTitles, sectionTitle: sectionTitle });
|
|
159
182
|
});
|
|
160
183
|
}
|
|
161
184
|
return pageSectionsResolved;
|
|
162
185
|
}
|
|
163
186
|
function getHeadingsResolved(config) {
|
|
164
|
-
|
|
165
|
-
|
|
166
|
-
|
|
167
|
-
...heading,
|
|
168
|
-
titleInNav,
|
|
169
|
-
};
|
|
187
|
+
var headingsWithoutBreadcrumb = config.headings.map(function (heading) {
|
|
188
|
+
var titleInNav = heading.titleInNav || heading.title;
|
|
189
|
+
var headingResolved = __assign(__assign({}, heading), { titleInNav: titleInNav });
|
|
170
190
|
return headingResolved;
|
|
171
191
|
});
|
|
172
|
-
|
|
173
|
-
headingsWithoutBreadcrumb.forEach((heading)
|
|
174
|
-
|
|
175
|
-
headingsResolved.push({
|
|
176
|
-
...heading,
|
|
177
|
-
linkBreadcrumb,
|
|
178
|
-
});
|
|
192
|
+
var headingsResolved = [];
|
|
193
|
+
headingsWithoutBreadcrumb.forEach(function (heading) {
|
|
194
|
+
var linkBreadcrumb = getHeadingsBreadcrumb(heading, headingsResolved);
|
|
195
|
+
headingsResolved.push(__assign(__assign({}, heading), { linkBreadcrumb: linkBreadcrumb }));
|
|
179
196
|
});
|
|
180
|
-
|
|
181
|
-
|
|
182
|
-
assert(headingsResolved.find((heading)
|
|
183
|
-
return {
|
|
184
|
-
...headingsDetached,
|
|
185
|
-
level: 2,
|
|
186
|
-
titleInNav: headingsDetached.title,
|
|
187
|
-
linkBreadcrumb: null,
|
|
188
|
-
};
|
|
197
|
+
var headingsDetachedResolved = config.headingsDetached.map(function (headingsDetached) {
|
|
198
|
+
var url = headingsDetached.url;
|
|
199
|
+
assert(headingsResolved.find(function (heading) { return heading.url === url; }) === undefined, "remove ".concat(headingsDetached.url, " from headingsDetached"));
|
|
200
|
+
return __assign(__assign({}, headingsDetached), { level: 2, titleInNav: headingsDetached.title, linkBreadcrumb: null });
|
|
189
201
|
});
|
|
190
|
-
return { headingsResolved, headingsDetachedResolved };
|
|
202
|
+
return { headingsResolved: headingsResolved, headingsDetachedResolved: headingsDetachedResolved };
|
|
191
203
|
}
|
|
192
204
|
function getHeadingsBreadcrumb(heading, headings) {
|
|
193
|
-
|
|
194
|
-
|
|
205
|
+
var linkBreadcrumb = [];
|
|
206
|
+
var levelCurrent = heading.level;
|
|
195
207
|
headings
|
|
196
208
|
.slice()
|
|
197
209
|
.reverse()
|
|
198
|
-
.forEach((parentCandidate)
|
|
199
|
-
|
|
210
|
+
.forEach(function (parentCandidate) {
|
|
211
|
+
var isParent = parentCandidate.level < levelCurrent;
|
|
200
212
|
if (isParent) {
|
|
201
213
|
levelCurrent = parentCandidate.level;
|
|
202
214
|
linkBreadcrumb.push(parentCandidate.title);
|
|
@@ -205,9 +217,9 @@ function getHeadingsBreadcrumb(heading, headings) {
|
|
|
205
217
|
return linkBreadcrumb;
|
|
206
218
|
}
|
|
207
219
|
function assertHeadingsDefinition(headings) {
|
|
208
|
-
headings.forEach((heading)
|
|
220
|
+
headings.forEach(function (heading) {
|
|
209
221
|
if (heading.url) {
|
|
210
|
-
|
|
222
|
+
var url = heading.url;
|
|
211
223
|
assert(url.startsWith('/'));
|
|
212
224
|
}
|
|
213
225
|
});
|
|
@@ -1,10 +1,22 @@
|
|
|
1
1
|
// Let's eventually remove this. Telefunc is still using this as of 2024-12.
|
|
2
|
+
var __assign = (this && this.__assign) || function () {
|
|
3
|
+
__assign = Object.assign || function(t) {
|
|
4
|
+
for (var s, i = 1, n = arguments.length; i < n; i++) {
|
|
5
|
+
s = arguments[i];
|
|
6
|
+
for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p))
|
|
7
|
+
t[p] = s[p];
|
|
8
|
+
}
|
|
9
|
+
return t;
|
|
10
|
+
};
|
|
11
|
+
return __assign.apply(this, arguments);
|
|
12
|
+
};
|
|
2
13
|
import React from 'react';
|
|
3
14
|
import { assert } from '../assert';
|
|
4
15
|
import { iconMechanicalArm, iconShield, iconTypescript, iconEngine } from './assets';
|
|
5
16
|
export { Emoji };
|
|
6
|
-
function Emoji(
|
|
7
|
-
|
|
17
|
+
function Emoji(_a) {
|
|
18
|
+
var name = _a.name, style = _a.style;
|
|
19
|
+
var emoji =
|
|
8
20
|
// ***
|
|
9
21
|
// U+26A0
|
|
10
22
|
// https://emojipedia.org/warning/
|
|
@@ -153,26 +165,22 @@ function Emoji({ name, style }) {
|
|
|
153
165
|
(name === 'left-right-arrow' && Unicode(0xFE0F)) ||
|
|
154
166
|
(name === 'left-right-arrow' && Unicode(0xFE0F, { fontFamily: 'reset' })) ||
|
|
155
167
|
======================== */
|
|
156
|
-
assert(emoji, { name });
|
|
168
|
+
assert(emoji, { name: name });
|
|
157
169
|
return emoji;
|
|
158
170
|
function Unicode(codePoint, styleAddendum) {
|
|
159
|
-
|
|
171
|
+
var text = String.fromCodePoint(codePoint);
|
|
160
172
|
if (style || styleAddendum) {
|
|
161
|
-
return React.createElement('span', { style: {
|
|
173
|
+
return React.createElement('span', { style: __assign(__assign({}, style), styleAddendum) }, text);
|
|
162
174
|
}
|
|
163
175
|
else {
|
|
164
176
|
return React.createElement(React.Fragment, null, text);
|
|
165
177
|
}
|
|
166
178
|
}
|
|
167
|
-
function Img(imgSrc, width
|
|
168
|
-
|
|
179
|
+
function Img(imgSrc, width) {
|
|
180
|
+
if (width === void 0) { width = '1.15em'; }
|
|
181
|
+
var props = {
|
|
169
182
|
src: imgSrc,
|
|
170
|
-
style: {
|
|
171
|
-
verticalAlign: 'text-top',
|
|
172
|
-
fontSize: '1em',
|
|
173
|
-
width,
|
|
174
|
-
...style,
|
|
175
|
-
},
|
|
183
|
+
style: __assign({ verticalAlign: 'text-top', fontSize: '1em', width: width }, style),
|
|
176
184
|
};
|
|
177
185
|
return React.createElement('img', props);
|
|
178
186
|
}
|
package/dist/utils/assert.js
CHANGED
|
@@ -2,8 +2,8 @@ export { assert };
|
|
|
2
2
|
export { assertUsage };
|
|
3
3
|
export { assertWarning };
|
|
4
4
|
import { getGlobalObject } from './getGlobalObject.js';
|
|
5
|
-
|
|
6
|
-
|
|
5
|
+
var devModeKey = '__docpress_dev_mode';
|
|
6
|
+
var globalObject = getGlobalObject('utils/assert.ts', {
|
|
7
7
|
alreadyLogged: new Set(),
|
|
8
8
|
});
|
|
9
9
|
if (isBrowser()) {
|
|
@@ -18,7 +18,7 @@ if (isBrowser()) {
|
|
|
18
18
|
.join(' '));
|
|
19
19
|
}
|
|
20
20
|
if (isDevMode()) {
|
|
21
|
-
window.onerror = (err)
|
|
21
|
+
window.onerror = function (err) {
|
|
22
22
|
window.alert(err);
|
|
23
23
|
window.onerror = null;
|
|
24
24
|
};
|
|
@@ -27,25 +27,25 @@ function assert(condition, debugInfo) {
|
|
|
27
27
|
if (condition) {
|
|
28
28
|
return;
|
|
29
29
|
}
|
|
30
|
-
|
|
30
|
+
var hasDebugInfo = debugInfo !== undefined;
|
|
31
31
|
if (hasDebugInfo) {
|
|
32
32
|
console.log(debugInfo);
|
|
33
33
|
if (typeof debugInfo === 'object') {
|
|
34
34
|
debugInfo = JSON.stringify(debugInfo);
|
|
35
35
|
}
|
|
36
36
|
}
|
|
37
|
-
|
|
37
|
+
var errMsg = '[DocPress] Bug. Contact DocPress maintainer.';
|
|
38
38
|
if (hasDebugInfo) {
|
|
39
39
|
errMsg += ' Debug info: ' + String(debugInfo);
|
|
40
40
|
}
|
|
41
|
-
|
|
41
|
+
var err = new Error(errMsg);
|
|
42
42
|
throw err;
|
|
43
43
|
}
|
|
44
44
|
function assertUsage(condition, msg) {
|
|
45
45
|
if (condition) {
|
|
46
46
|
return;
|
|
47
47
|
}
|
|
48
|
-
|
|
48
|
+
var err = new Error('[DocPress][Wrong Usage] ' + msg);
|
|
49
49
|
throw err;
|
|
50
50
|
}
|
|
51
51
|
function isBrowser() {
|
|
@@ -55,32 +55,34 @@ function isDevMode() {
|
|
|
55
55
|
return isBrowser() && (!!window.localStorage[devModeKey] || isLocalhost());
|
|
56
56
|
}
|
|
57
57
|
function isLocalhost() {
|
|
58
|
-
|
|
58
|
+
var _a;
|
|
59
|
+
return ((_a = window === null || window === void 0 ? void 0 : window.location) === null || _a === void 0 ? void 0 : _a.port) !== '';
|
|
59
60
|
}
|
|
60
61
|
function toggleDevMode() {
|
|
61
62
|
if (isLocalhost())
|
|
62
63
|
throw new Error('On localhost DEV MODE is always on.');
|
|
63
|
-
|
|
64
|
+
var isEnabled = function () { return window.localStorage[devModeKey]; };
|
|
64
65
|
if (!isEnabled()) {
|
|
65
66
|
window.localStorage[devModeKey] = 'true';
|
|
66
67
|
}
|
|
67
68
|
else {
|
|
68
69
|
delete window.localStorage[devModeKey];
|
|
69
70
|
}
|
|
70
|
-
console.log(
|
|
71
|
+
console.log("DEV MODE ".concat(isEnabled() ? 'enabled' : 'disabled'));
|
|
71
72
|
}
|
|
72
|
-
function assertWarning(condition, msg,
|
|
73
|
+
function assertWarning(condition, msg, _a) {
|
|
74
|
+
var _b = _a === void 0 ? {} : _a, _c = _b.onlyOnce, onlyOnce = _c === void 0 ? true : _c, showStackTrace = _b.showStackTrace;
|
|
73
75
|
if (condition) {
|
|
74
76
|
return;
|
|
75
77
|
}
|
|
76
|
-
|
|
78
|
+
var err = new Error(msg);
|
|
77
79
|
if (!import.meta.env.DEV) {
|
|
78
80
|
throw err;
|
|
79
81
|
}
|
|
80
82
|
else {
|
|
81
83
|
if (onlyOnce) {
|
|
82
|
-
|
|
83
|
-
|
|
84
|
+
var alreadyLogged = globalObject.alreadyLogged;
|
|
85
|
+
var key = onlyOnce === true ? msg : onlyOnce;
|
|
84
86
|
if (alreadyLogged.has(key))
|
|
85
87
|
return;
|
|
86
88
|
alreadyLogged.add(key);
|
package/dist/utils/cls.js
CHANGED
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
export type ContentMap = {
|
|
2
|
+
/**
|
|
3
|
+
* @returns key
|
|
4
|
+
*/
|
|
5
|
+
add(title: string, sourceLength: number, content: string): string;
|
|
6
|
+
get(key: string): string | undefined;
|
|
7
|
+
};
|
|
8
|
+
export declare const createContentMap: () => ContentMap;
|
|
9
|
+
export declare const contentMapKeyRE: RegExp;
|
|
@@ -0,0 +1,22 @@
|
|
|
1
|
+
import { createHash } from 'node:crypto';
|
|
2
|
+
export var createContentMap = function () {
|
|
3
|
+
var map = new Map();
|
|
4
|
+
return {
|
|
5
|
+
add: function (title, length, content) {
|
|
6
|
+
var key = generateKey("".concat(title, "_").concat(length));
|
|
7
|
+
if (!map.has(key)) {
|
|
8
|
+
map.set(key, content);
|
|
9
|
+
}
|
|
10
|
+
return key;
|
|
11
|
+
},
|
|
12
|
+
get: function (key) {
|
|
13
|
+
var val = map.get(key);
|
|
14
|
+
return val;
|
|
15
|
+
},
|
|
16
|
+
};
|
|
17
|
+
};
|
|
18
|
+
var generateKey = function (value) {
|
|
19
|
+
var hash = createHash('md5').update(value).digest('hex');
|
|
20
|
+
return "#_#_".concat(hash, "_#_#");
|
|
21
|
+
};
|
|
22
|
+
export var contentMapKeyRE = /#_#_[0-9a-fA-F]{32}_#_#/g;
|
|
@@ -4,7 +4,7 @@ export { determineSectionTitle };
|
|
|
4
4
|
function determineSectionUrlHash(title) {
|
|
5
5
|
title = title.toLowerCase();
|
|
6
6
|
title = removeAccentsAndDiacritics(title);
|
|
7
|
-
|
|
7
|
+
var urlHash = title
|
|
8
8
|
// \u4E00-\u9FA5 are chinese characters, see https://github.com/brillout/docpress/pull/2
|
|
9
9
|
.split(/[^a-z0-9\u4E00-\u9FA5]+/)
|
|
10
10
|
.filter(Boolean)
|
|
@@ -20,11 +20,11 @@ function removeAccentsAndDiacritics(str) {
|
|
|
20
20
|
return str.normalize('NFD').replace(/[\u0300-\u036f]/g, '');
|
|
21
21
|
}
|
|
22
22
|
function determineSectionTitle(urlWithHash) {
|
|
23
|
-
assert(urlWithHash.includes('#'), { urlWithHash });
|
|
24
|
-
|
|
25
|
-
|
|
23
|
+
assert(urlWithHash.includes('#'), { urlWithHash: urlWithHash });
|
|
24
|
+
var urlHash = urlWithHash.split('#')[1];
|
|
25
|
+
var title = urlHash
|
|
26
26
|
.split('-')
|
|
27
|
-
.map((word, i)
|
|
27
|
+
.map(function (word, i) {
|
|
28
28
|
if (i === 0) {
|
|
29
29
|
return capitalizeFirstLetter(word);
|
|
30
30
|
}
|
package/dist/utils/filter.js
CHANGED
|
@@ -1,8 +1,8 @@
|
|
|
1
1
|
export { filter };
|
|
2
2
|
// https://stackoverflow.com/questions/66341757/typescript-how-to-filter-the-object
|
|
3
3
|
function filter(obj, predicate) {
|
|
4
|
-
|
|
5
|
-
Object.keys(obj).forEach((name)
|
|
4
|
+
var result = {};
|
|
5
|
+
Object.keys(obj).forEach(function (name) {
|
|
6
6
|
if (predicate(obj[name], name)) {
|
|
7
7
|
result[name] = obj[name];
|
|
8
8
|
}
|
|
@@ -2,8 +2,8 @@ export function getGlobalObject(
|
|
|
2
2
|
// We use the filename as key; each `getGlobalObject()` call should live inside a file with a unique filename.
|
|
3
3
|
key, defaultValue) {
|
|
4
4
|
// @ts-ignore
|
|
5
|
-
|
|
6
|
-
|
|
5
|
+
var globalObjectsAll = (globalThis[projectKey] = globalThis[projectKey] || {});
|
|
6
|
+
var globalObject = (globalObjectsAll[key] = globalObjectsAll[key] || defaultValue);
|
|
7
7
|
return globalObject;
|
|
8
8
|
}
|
|
9
|
-
|
|
9
|
+
var projectKey = '_docpress';
|
|
@@ -1,20 +1,21 @@
|
|
|
1
1
|
export { useSelectedLanguage };
|
|
2
2
|
import { useState, useEffect, useCallback } from 'react';
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
3
|
+
var key = 'docpress:selectedLang';
|
|
4
|
+
var defaultSsrLang = 'ts';
|
|
5
|
+
var defaultClientLang = 'js';
|
|
6
6
|
function useSelectedLanguage() {
|
|
7
|
-
|
|
8
|
-
|
|
7
|
+
var _a = useState(defaultSsrLang), selectedLang = _a[0], setSelectedLang = _a[1];
|
|
8
|
+
var getValue = function () {
|
|
9
|
+
var _a;
|
|
9
10
|
try {
|
|
10
|
-
return localStorage.getItem(key)
|
|
11
|
+
return (_a = localStorage.getItem(key)) !== null && _a !== void 0 ? _a : defaultClientLang;
|
|
11
12
|
}
|
|
12
13
|
catch (error) {
|
|
13
14
|
console.warn('Error reading from localStorage:', error);
|
|
14
15
|
return defaultClientLang;
|
|
15
16
|
}
|
|
16
17
|
};
|
|
17
|
-
|
|
18
|
+
var setValue = useCallback(function (value) {
|
|
18
19
|
try {
|
|
19
20
|
window.localStorage.setItem(key, value);
|
|
20
21
|
setSelectedLang(value);
|
|
@@ -24,22 +25,22 @@ function useSelectedLanguage() {
|
|
|
24
25
|
console.warn('Error setting localStorage:', error);
|
|
25
26
|
}
|
|
26
27
|
}, []);
|
|
27
|
-
useEffect(()
|
|
28
|
+
useEffect(function () {
|
|
28
29
|
// Initial load from localStorage
|
|
29
30
|
setSelectedLang(getValue());
|
|
30
31
|
// Update language in current tab
|
|
31
|
-
|
|
32
|
+
var handleCustomEvent = function () {
|
|
32
33
|
setSelectedLang(getValue());
|
|
33
34
|
};
|
|
34
35
|
// Update language if changed in another tab
|
|
35
|
-
|
|
36
|
+
var handleNativeStorage = function (event) {
|
|
36
37
|
if (event.key === key) {
|
|
37
38
|
setSelectedLang(getValue());
|
|
38
39
|
}
|
|
39
40
|
};
|
|
40
41
|
window.addEventListener('lang-storage', handleCustomEvent);
|
|
41
42
|
window.addEventListener('storage', handleNativeStorage);
|
|
42
|
-
return ()
|
|
43
|
+
return function () {
|
|
43
44
|
window.removeEventListener('lang-storage', handleCustomEvent);
|
|
44
45
|
window.removeEventListener('storage', handleNativeStorage);
|
|
45
46
|
};
|
package/dist/vite.config.js
CHANGED
|
@@ -6,16 +6,16 @@ import { detypePlugin } from './detypePlugin.js';
|
|
|
6
6
|
import rehypePrettyCode from 'rehype-pretty-code';
|
|
7
7
|
import remarkGfm from 'remark-gfm';
|
|
8
8
|
import { transformerNotationDiff } from '@shikijs/transformers';
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
root,
|
|
9
|
+
var root = process.cwd();
|
|
10
|
+
var prettyCode = [rehypePrettyCode, { theme: 'github-light', transformers: [transformerNotationDiff()] }];
|
|
11
|
+
var rehypePlugins = [prettyCode];
|
|
12
|
+
var remarkPlugins = [remarkGfm];
|
|
13
|
+
var config = {
|
|
14
|
+
root: root,
|
|
15
15
|
plugins: [
|
|
16
16
|
parsePageSections(),
|
|
17
17
|
detypePlugin(),
|
|
18
|
-
mdx({ rehypePlugins, remarkPlugins }),
|
|
18
|
+
mdx({ rehypePlugins: rehypePlugins, remarkPlugins: remarkPlugins }),
|
|
19
19
|
// @vitejs/plugin-react-swc needs to be added *after* the mdx plugins
|
|
20
20
|
react(),
|
|
21
21
|
],
|
package/package.json
CHANGED
|
@@ -1,10 +1,9 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@brillout/docpress",
|
|
3
|
-
"version": "0.15.10-commit-
|
|
3
|
+
"version": "0.15.10-commit-b6b1605",
|
|
4
4
|
"type": "module",
|
|
5
5
|
"dependencies": {
|
|
6
6
|
"@brillout/picocolors": "^1.0.10",
|
|
7
|
-
"detype": "^1.1.2",
|
|
8
7
|
"@docsearch/css": "3.9.0",
|
|
9
8
|
"@docsearch/react": "3.9.0",
|
|
10
9
|
"@mdx-js/mdx": "3.0.1",
|
|
@@ -12,6 +11,7 @@
|
|
|
12
11
|
"@mdx-js/rollup": "3.0.1",
|
|
13
12
|
"@shikijs/transformers": "1.2.0",
|
|
14
13
|
"@vitejs/plugin-react-swc": "^3.10.2",
|
|
14
|
+
"detype": "^1.1.2",
|
|
15
15
|
"rehype-pretty-code": "0.13.0",
|
|
16
16
|
"remark-gfm": "4.0.0",
|
|
17
17
|
"shiki": "1.2.0",
|