@brillout/docpress 0.15.10 → 0.15.11-commit-e615832

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (48) hide show
  1. package/Layout.tsx +3 -0
  2. package/autoScrollNav.ts +3 -3
  3. package/code-blocks/components/CodeSnippets.css +74 -0
  4. package/code-blocks/components/CodeSnippets.tsx +51 -0
  5. package/code-blocks/components/Pre.css +51 -0
  6. package/code-blocks/components/Pre.tsx +70 -0
  7. package/code-blocks/hooks/useMDXComponents.tsx +13 -0
  8. package/code-blocks/hooks/useSelectCodeLang.ts +74 -0
  9. package/code-blocks/rehypeMetaToProps.ts +69 -0
  10. package/code-blocks/remarkDetype.ts +192 -0
  11. package/code-blocks/shikiTransformerAutoLinks.ts +61 -0
  12. package/css/button.css +23 -0
  13. package/css/code.css +3 -21
  14. package/css/tooltip.css +10 -2
  15. package/dist/+config.js +1 -1
  16. package/dist/NavItemComponent.js +38 -46
  17. package/dist/code-blocks/rehypeMetaToProps.d.ts +35 -0
  18. package/dist/code-blocks/rehypeMetaToProps.js +62 -0
  19. package/dist/code-blocks/remarkDetype.d.ts +4 -0
  20. package/dist/code-blocks/remarkDetype.js +164 -0
  21. package/dist/code-blocks/shikiTransformerAutoLinks.d.ts +8 -0
  22. package/dist/code-blocks/shikiTransformerAutoLinks.js +51 -0
  23. package/dist/components/CodeBlockTransformer.js +2 -3
  24. package/dist/components/Comment.js +1 -2
  25. package/dist/components/FileRemoved.js +4 -6
  26. package/dist/components/HorizontalLine.js +1 -2
  27. package/dist/components/ImportMeta.js +2 -3
  28. package/dist/components/Link.js +34 -50
  29. package/dist/components/Note.js +17 -29
  30. package/dist/components/P.js +1 -12
  31. package/dist/components/RepoLink.js +7 -9
  32. package/dist/determineNavItemsColumnLayout.js +48 -63
  33. package/dist/parseMarkdownMini.js +5 -17
  34. package/dist/parsePageSections.js +41 -82
  35. package/dist/renderer/usePageContext.js +6 -7
  36. package/dist/resolvePageContext.js +103 -110
  37. package/dist/utils/Emoji/Emoji.js +13 -21
  38. package/dist/utils/assert.js +14 -16
  39. package/dist/utils/cls.js +1 -1
  40. package/dist/utils/determineSectionUrlHash.js +5 -5
  41. package/dist/utils/filter.js +2 -2
  42. package/dist/utils/getGlobalObject.js +3 -3
  43. package/dist/vite.config.js +17 -7
  44. package/index.ts +16 -14
  45. package/package.json +7 -2
  46. package/resolvePageContext.ts +19 -15
  47. package/tsconfig.json +2 -1
  48. package/vite.config.ts +14 -4
@@ -1,66 +1,26 @@
1
- var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
2
- function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
3
- return new (P || (P = Promise))(function (resolve, reject) {
4
- function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
5
- function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
6
- function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
7
- step((generator = generator.apply(thisArg, _arguments || [])).next());
8
- });
9
- };
10
- var __generator = (this && this.__generator) || function (thisArg, body) {
11
- var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g = Object.create((typeof Iterator === "function" ? Iterator : Object).prototype);
12
- return g.next = verb(0), g["throw"] = verb(1), g["return"] = verb(2), typeof Symbol === "function" && (g[Symbol.iterator] = function() { return this; }), g;
13
- function verb(n) { return function (v) { return step([n, v]); }; }
14
- function step(op) {
15
- if (f) throw new TypeError("Generator is already executing.");
16
- while (g && (g = 0, op[0] && (_ = 0)), _) try {
17
- if (f = 1, y && (t = op[0] & 2 ? y["return"] : op[0] ? y["throw"] || ((t = y["return"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t;
18
- if (y = 0, t) op = [op[0] & 2, t.value];
19
- switch (op[0]) {
20
- case 0: case 1: t = op; break;
21
- case 4: _.label++; return { value: op[1], done: false };
22
- case 5: _.label++; y = op[1]; op = [0]; continue;
23
- case 7: op = _.ops.pop(); _.trys.pop(); continue;
24
- default:
25
- if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; }
26
- if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; }
27
- if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; }
28
- if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; }
29
- if (t[2]) _.ops.pop();
30
- _.trys.pop(); continue;
31
- }
32
- op = body.call(thisArg, _);
33
- } catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; }
34
- if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true };
35
- }
36
- };
37
1
  export { parsePageSections };
38
2
  import { assert } from './utils/assert.js';
39
3
  import { determineSectionUrlHash } from './utils/determineSectionUrlHash.js';
40
4
  import os from 'os';
41
5
  function parsePageSections() {
42
- var _this = this;
43
6
  return {
44
7
  name: '@brillout/docpress:parsePageSections',
45
8
  enforce: 'pre',
46
- transform: function (code, id) { return __awaiter(_this, void 0, void 0, function () {
47
- var codeNew;
48
- return __generator(this, function (_a) {
49
- if (!id.endsWith('+Page.mdx')) {
50
- return [2 /*return*/];
51
- }
52
- codeNew = transform(code);
53
- return [2 /*return*/, codeNew];
54
- });
55
- }); },
9
+ transform: async (code, id) => {
10
+ if (!id.endsWith('+Page.mdx')) {
11
+ return;
12
+ }
13
+ const codeNew = transform(code);
14
+ return codeNew;
15
+ },
56
16
  };
57
17
  }
58
18
  function transform(code) {
59
- var pageSections = [];
60
- var isCodeBlock = false;
61
- var codeNew = code
19
+ const pageSections = [];
20
+ let isCodeBlock = false;
21
+ let codeNew = code
62
22
  .split('\n')
63
- .map(function (line) {
23
+ .map((line) => {
64
24
  // Skip code blocks, e.g.
65
25
  // ~~~md
66
26
  // # Markdown Example
@@ -78,51 +38,50 @@ function transform(code) {
78
38
  || line.startsWith('<h2')
79
39
  */
80
40
  ) {
81
- var _a = parsePageSection(line), pageSectionId = _a.pageSectionId, pageSectionLevel = _a.pageSectionLevel, pageSectionTitle = _a.pageSectionTitle, headingHtml = _a.headingHtml;
82
- pageSections.push({ pageSectionId: pageSectionId, pageSectionLevel: pageSectionLevel, pageSectionTitle: pageSectionTitle });
41
+ const { pageSectionId, pageSectionLevel, pageSectionTitle, headingHtml } = parsePageSection(line);
42
+ pageSections.push({ pageSectionId, pageSectionLevel, pageSectionTitle });
83
43
  return headingHtml;
84
44
  }
85
45
  return line;
86
46
  })
87
47
  .join('\n');
88
- var exportCode = "export const pageSectionsExport = [".concat(pageSections
89
- .map(function (pageSection) { return JSON.stringify(pageSection); })
90
- .join(', '), "];");
91
- codeNew += "\n\n".concat(exportCode, "\n");
48
+ const exportCode = `export const pageSectionsExport = [${pageSections
49
+ .map((pageSection) => JSON.stringify(pageSection))
50
+ .join(', ')}];`;
51
+ codeNew += `\n\n${exportCode}\n`;
92
52
  return codeNew;
93
53
  }
94
54
  function parsePageSection(line) {
95
- var _a;
96
- var _b = line.split(' '), lineBegin = _b[0], lineWords = _b.slice(1);
97
- assert(lineBegin.split('#').join('') === '', { line: line, lineWords: lineWords });
98
- var pageSectionLevel = lineBegin.length;
99
- var titleMdx = lineWords.join(' ');
100
- assert(!titleMdx.startsWith(' '), { line: line, lineWords: lineWords });
101
- assert(titleMdx, { line: line, lineWords: lineWords });
102
- var pageSectionTitle = titleMdx;
103
- var anchor = titleMdx;
55
+ const [lineBegin, ...lineWords] = line.split(' ');
56
+ assert(lineBegin.split('#').join('') === '', { line, lineWords });
57
+ const pageSectionLevel = lineBegin.length;
58
+ const titleMdx = lineWords.join(' ');
59
+ assert(!titleMdx.startsWith(' '), { line, lineWords });
60
+ assert(titleMdx, { line, lineWords });
61
+ let pageSectionTitle = titleMdx;
62
+ let anchor = titleMdx;
104
63
  {
105
64
  // Support custom anchor: `## Some Title{#custom-anchor}`
106
- var customAnchor = (_a = /(?<={#).*(?=})/g.exec(titleMdx)) === null || _a === void 0 ? void 0 : _a[0];
65
+ const customAnchor = /(?<={#).*(?=})/g.exec(titleMdx)?.[0];
107
66
  if (customAnchor) {
108
67
  anchor = customAnchor;
109
68
  pageSectionTitle = titleMdx.replace(/{#.*}/g, '');
110
69
  }
111
70
  }
112
- var pageSectionId = determineSectionUrlHash(anchor);
113
- var titleParsed = parseMarkdownMini(pageSectionTitle);
71
+ const pageSectionId = determineSectionUrlHash(anchor);
72
+ const titleParsed = parseMarkdownMini(pageSectionTitle);
114
73
  assert(pageSectionId === null || pageSectionId.length > 0);
115
- var headingId = pageSectionId === null ? '' : " id=\"".concat(pageSectionId, "\"");
116
- var headingHtml = "<h".concat(pageSectionLevel).concat(headingId, ">").concat(titleParsed, "</h").concat(pageSectionLevel, ">");
117
- var pageSection = { pageSectionLevel: pageSectionLevel, pageSectionTitle: pageSectionTitle, pageSectionId: pageSectionId, headingHtml: headingHtml };
74
+ const headingId = pageSectionId === null ? '' : ` id="${pageSectionId}"`;
75
+ const headingHtml = `<h${pageSectionLevel}${headingId}>${titleParsed}</h${pageSectionLevel}>`;
76
+ const pageSection = { pageSectionLevel, pageSectionTitle, pageSectionId, headingHtml };
118
77
  return pageSection;
119
78
  }
120
79
  function parseMarkdownMini(titleMarkdown) {
121
- var parts = [];
122
- var current;
123
- titleMarkdown.split('').forEach(function (letter) {
80
+ const parts = [];
81
+ let current;
82
+ titleMarkdown.split('').forEach((letter) => {
124
83
  if (letter === '`') {
125
- if ((current === null || current === void 0 ? void 0 : current.nodeType) === 'code') {
84
+ if (current?.nodeType === 'code') {
126
85
  // </code>
127
86
  parts.push(current);
128
87
  current = undefined;
@@ -145,25 +104,25 @@ function parseMarkdownMini(titleMarkdown) {
145
104
  if (current) {
146
105
  parts.push(current);
147
106
  }
148
- var titleHtml = parts
149
- .map(function (part) {
107
+ const titleHtml = parts
108
+ .map((part) => {
150
109
  if (part.nodeType === 'code') {
151
- return "<code>".concat(serializeText(part.content), "</code>");
110
+ return `<code>${serializeText(part.content)}</code>`;
152
111
  }
153
112
  else {
154
- assert(part.nodeType === 'text', { parts: parts });
113
+ assert(part.nodeType === 'text', { parts });
155
114
  return serializeText(part.content);
156
115
  }
157
116
  })
158
117
  .join('');
159
118
  return titleHtml;
160
119
  function serializeText(text) {
161
- var textEscaped = text.split("'").join("\\'");
120
+ let textEscaped = text.split("'").join("\\'");
162
121
  // https://github.com/brillout/docpress/pull/2
163
122
  if (isWindows()) {
164
123
  textEscaped = textEscaped.replace(/\r/, '');
165
124
  }
166
- return "{'".concat(textEscaped, "'}");
125
+ return `{'${textEscaped}'}`;
167
126
  }
168
127
  }
169
128
  function isWindows() {
@@ -3,20 +3,19 @@ export { usePageContext };
3
3
  export { usePageContextLegacy };
4
4
  import React, { useContext } from 'react';
5
5
  import { getGlobalObject } from '../utils/getGlobalObject';
6
- var globalObject = getGlobalObject('usePageContext.ts', {
6
+ const globalObject = getGlobalObject('usePageContext.ts', {
7
7
  Ctx: React.createContext(undefined),
8
8
  });
9
9
  function usePageContextLegacy() {
10
- var Ctx = globalObject.Ctx;
11
- var pageContext = useContext(Ctx);
10
+ const { Ctx } = globalObject;
11
+ const pageContext = useContext(Ctx);
12
12
  return pageContext.resolved;
13
13
  }
14
14
  function usePageContext() {
15
- var pageContext = useContext(globalObject.Ctx);
15
+ const pageContext = useContext(globalObject.Ctx);
16
16
  return pageContext;
17
17
  }
18
- function PageContextProvider(_a) {
19
- var pageContext = _a.pageContext, children = _a.children;
20
- var Ctx = globalObject.Ctx;
18
+ function PageContextProvider({ pageContext, children, }) {
19
+ const { Ctx } = globalObject;
21
20
  return React.createElement(Ctx.Provider, { value: pageContext }, children);
22
21
  }
@@ -1,75 +1,57 @@
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
- };
21
1
  export { resolvePageContext };
22
- import { assert } from './utils/assert';
2
+ import { assert, assertUsage } from './utils/assert';
23
3
  import { jsxToTextContent } from './utils/jsxToTextContent';
24
4
  import pc from '@brillout/picocolors';
25
5
  import { parseMarkdownMini } from './parseMarkdownMini';
26
6
  import { determineNavItemsColumnLayout } from './determineNavItemsColumnLayout';
27
7
  function resolvePageContext(pageContext) {
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 : [];
8
+ const config = pageContext.globalContext.config.docpress;
9
+ const { urlPathname } = pageContext;
10
+ const pageSections = pageContext.config.pageSectionsExport ?? [];
32
11
  {
33
- var headings = config.headings, headingsDetached = config.headingsDetached;
34
- assertHeadingsDefinition(__spreadArray(__spreadArray([], headings, true), headingsDetached, true));
12
+ const { headings, headingsDetached } = config;
13
+ assertHeadingsDefinition([...headings, ...headingsDetached]);
35
14
  }
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;
15
+ const ret = getHeadingsResolved(config);
16
+ const { headingsDetachedResolved } = ret;
17
+ let { headingsResolved } = ret;
18
+ const { activeHeading, isDetachedPage, activeCategoryName } = getActiveHeading(headingsResolved, headingsDetachedResolved, urlPathname);
19
+ const { documentTitle, isLandingPage, pageTitle } = getTitles(activeHeading, urlPathname, config);
20
+ const pageSectionsResolved = getPageSectionsResolved(pageSections, activeHeading);
21
+ const linksGlobal = [
22
+ ...headingsResolved.map(headingToLinkData),
23
+ ...headingsDetachedResolved.map(headingToLinkData),
24
+ ];
25
+ const linksPage = pageSectionsResolved.map(pageSectionToLinkData);
26
+ const linksAll = [...linksPage, ...linksGlobal];
27
+ let navItemsAll;
28
+ let navItemsDetached;
47
29
  {
48
- var navItemsPageSections = pageSectionsResolved
49
- .filter(function (pageSection) { return pageSection.pageSectionLevel === 2; })
30
+ const navItemsPageSections = pageSectionsResolved
31
+ .filter((pageSection) => pageSection.pageSectionLevel === 2)
50
32
  .map(pageSectionToNavItem);
51
33
  navItemsAll = headingsResolved.map(headingToNavItem);
52
34
  determineNavItemsColumnLayout(navItemsAll);
53
35
  if (isDetachedPage) {
54
- navItemsDetached = __spreadArray([headingToNavItem(activeHeading)], navItemsPageSections, true);
36
+ navItemsDetached = [headingToNavItem(activeHeading), ...navItemsPageSections];
55
37
  }
56
38
  else {
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);
39
+ const activeHeadingIndex = navItemsAll.findIndex((navItem) => navItem.url === urlPathname);
40
+ assert(activeHeadingIndex >= 0);
41
+ navItemsPageSections.forEach((navItem, i) => {
42
+ navItemsAll.splice(activeHeadingIndex + 1 + i, 0, navItem);
61
43
  });
62
44
  }
63
45
  }
64
- var resolved = {
65
- navItemsAll: navItemsAll,
66
- navItemsDetached: navItemsDetached,
46
+ const resolved = {
47
+ navItemsAll,
48
+ navItemsDetached,
67
49
  pageDesign: activeHeading.pageDesign,
68
- linksAll: linksAll,
69
- isLandingPage: isLandingPage,
70
- pageTitle: pageTitle,
71
- documentTitle: documentTitle,
72
- activeCategoryName: activeCategoryName,
50
+ linksAll,
51
+ isLandingPage,
52
+ pageTitle,
53
+ documentTitle,
54
+ activeCategoryName,
73
55
  };
74
56
  return resolved;
75
57
  }
@@ -109,106 +91,117 @@ function pageSectionToLinkData(pageSection) {
109
91
  };
110
92
  }
111
93
  function getTitles(activeHeading, urlPathname, config) {
112
- var isLandingPage = urlPathname === '/';
113
- var title = activeHeading.title;
114
- var pageTitle = isLandingPage ? null : title;
115
- var documentTitle = activeHeading.titleDocument || jsxToTextContent(parseMarkdownMini(title));
94
+ const isLandingPage = urlPathname === '/';
95
+ const { title } = activeHeading;
96
+ let pageTitle = isLandingPage ? null : title;
97
+ let documentTitle = activeHeading.titleDocument || jsxToTextContent(parseMarkdownMini(title));
116
98
  if (!isLandingPage) {
117
99
  documentTitle += ' | ' + config.name;
118
100
  }
119
101
  if (isLandingPage) {
120
102
  pageTitle = null;
121
103
  }
122
- return { documentTitle: documentTitle, isLandingPage: isLandingPage, pageTitle: pageTitle };
104
+ return { documentTitle, isLandingPage, pageTitle };
123
105
  }
124
106
  function getActiveHeading(headingsResolved, headingsDetachedResolved, urlPathname) {
125
- var _a;
126
- var activeHeading = null;
127
- var activeCategoryName = 'Miscellaneous';
128
- var headingCategory;
107
+ const URLs = '\n' +
108
+ [...headingsResolved, ...headingsDetachedResolved]
109
+ .filter(Boolean)
110
+ .map((h) => h.url)
111
+ .sort()
112
+ .map((url) => ` ${url}`)
113
+ .join('\n');
114
+ const errNotFound = `URL ${pc.bold(urlPathname)} not found in following URLs:${URLs}`;
115
+ const errFoundTwice = `URL ${pc.bold(urlPathname)} found twice in following URLs:${URLs}`;
116
+ let activeHeading = null;
117
+ let activeCategoryName = 'Miscellaneous';
118
+ let headingCategory;
129
119
  assert(urlPathname);
130
- for (var _i = 0, headingsResolved_1 = headingsResolved; _i < headingsResolved_1.length; _i++) {
131
- var heading = headingsResolved_1[_i];
120
+ for (const heading of headingsResolved) {
132
121
  if (heading.level === 1) {
133
122
  headingCategory = heading.title;
134
123
  }
135
124
  if (heading.url === urlPathname) {
125
+ assertUsage(!activeHeading, errFoundTwice);
136
126
  activeHeading = heading;
137
127
  assert(headingCategory);
138
128
  activeCategoryName = headingCategory;
139
- assert(heading.level === 2, { pageUrl: urlPathname, heading: heading });
129
+ assert(heading.level === 2, { pageUrl: urlPathname, heading });
140
130
  break;
141
131
  }
142
132
  }
143
- var isDetachedPage = !activeHeading;
144
- if (!activeHeading) {
145
- activeHeading = (_a = headingsDetachedResolved.find(function (_a) {
146
- var url = _a.url;
147
- return urlPathname === url;
148
- })) !== null && _a !== void 0 ? _a : null;
149
- }
133
+ const isDetachedPage = !activeHeading;
150
134
  if (!activeHeading) {
151
- throw new Error([
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; })
155
- .sort()
156
- .map(function (url) { return " ".concat(url); })
157
- .join('\n'),
158
- ].join('\n'));
135
+ const found = headingsDetachedResolved.filter(({ url }) => urlPathname === url);
136
+ if (found.length > 0) {
137
+ assertUsage(found.length === 1, errFoundTwice);
138
+ assertUsage(!activeHeading, errFoundTwice);
139
+ activeHeading = found[0];
140
+ }
159
141
  }
142
+ assertUsage(activeHeading, errNotFound);
160
143
  if (activeHeading.category)
161
144
  activeCategoryName = activeHeading.category;
162
- return { activeHeading: activeHeading, isDetachedPage: isDetachedPage, activeCategoryName: activeCategoryName };
145
+ return { activeHeading, isDetachedPage, activeCategoryName };
163
146
  }
164
147
  function getPageSectionsResolved(pageSections, activeHeading) {
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
+ const pageSectionsResolved = pageSections.map((pageSection) => {
149
+ const { pageSectionTitle } = pageSection;
150
+ const url = pageSection.pageSectionId === null ? null : '#' + pageSection.pageSectionId;
151
+ const pageSectionResolved = {
152
+ url,
171
153
  title: pageSectionTitle,
172
- linkBreadcrumb: __spreadArray([activeHeading.title], ((_a = activeHeading.linkBreadcrumb) !== null && _a !== void 0 ? _a : []), true),
154
+ linkBreadcrumb: [activeHeading.title, ...(activeHeading.linkBreadcrumb ?? [])],
173
155
  titleInNav: pageSectionTitle,
174
156
  pageSectionLevel: pageSection.pageSectionLevel,
175
157
  };
176
158
  return pageSectionResolved;
177
159
  });
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 });
160
+ if (activeHeading?.sectionTitles) {
161
+ activeHeading.sectionTitles.forEach((sectionTitle) => {
162
+ const pageSectionTitles = pageSections.map((h) => h.pageSectionTitle);
163
+ assert(pageSectionTitles.includes(sectionTitle), { pageHeadingTitles: pageSectionTitles, sectionTitle });
182
164
  });
183
165
  }
184
166
  return pageSectionsResolved;
185
167
  }
186
168
  function getHeadingsResolved(config) {
187
- var headingsWithoutBreadcrumb = config.headings.map(function (heading) {
188
- var titleInNav = heading.titleInNav || heading.title;
189
- var headingResolved = __assign(__assign({}, heading), { titleInNav: titleInNav });
169
+ const headingsWithoutBreadcrumb = config.headings.map((heading) => {
170
+ const titleInNav = heading.titleInNav || heading.title;
171
+ const headingResolved = {
172
+ ...heading,
173
+ titleInNav,
174
+ };
190
175
  return headingResolved;
191
176
  });
192
- var headingsResolved = [];
193
- headingsWithoutBreadcrumb.forEach(function (heading) {
194
- var linkBreadcrumb = getHeadingsBreadcrumb(heading, headingsResolved);
195
- headingsResolved.push(__assign(__assign({}, heading), { linkBreadcrumb: linkBreadcrumb }));
177
+ const headingsResolved = [];
178
+ headingsWithoutBreadcrumb.forEach((heading) => {
179
+ const linkBreadcrumb = getHeadingsBreadcrumb(heading, headingsResolved);
180
+ headingsResolved.push({
181
+ ...heading,
182
+ linkBreadcrumb,
183
+ });
196
184
  });
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 });
185
+ const headingsDetachedResolved = config.headingsDetached.map((headingsDetached) => {
186
+ const { url } = headingsDetached;
187
+ assert(headingsResolved.find((heading) => heading.url === url) === undefined, `remove ${headingsDetached.url} from headingsDetached`);
188
+ return {
189
+ ...headingsDetached,
190
+ level: 2,
191
+ titleInNav: headingsDetached.title,
192
+ linkBreadcrumb: null,
193
+ };
201
194
  });
202
- return { headingsResolved: headingsResolved, headingsDetachedResolved: headingsDetachedResolved };
195
+ return { headingsResolved, headingsDetachedResolved };
203
196
  }
204
197
  function getHeadingsBreadcrumb(heading, headings) {
205
- var linkBreadcrumb = [];
206
- var levelCurrent = heading.level;
198
+ const linkBreadcrumb = [];
199
+ let levelCurrent = heading.level;
207
200
  headings
208
201
  .slice()
209
202
  .reverse()
210
- .forEach(function (parentCandidate) {
211
- var isParent = parentCandidate.level < levelCurrent;
203
+ .forEach((parentCandidate) => {
204
+ const isParent = parentCandidate.level < levelCurrent;
212
205
  if (isParent) {
213
206
  levelCurrent = parentCandidate.level;
214
207
  linkBreadcrumb.push(parentCandidate.title);
@@ -217,9 +210,9 @@ function getHeadingsBreadcrumb(heading, headings) {
217
210
  return linkBreadcrumb;
218
211
  }
219
212
  function assertHeadingsDefinition(headings) {
220
- headings.forEach(function (heading) {
213
+ headings.forEach((heading) => {
221
214
  if (heading.url) {
222
- var url = heading.url;
215
+ const { url } = heading;
223
216
  assert(url.startsWith('/'));
224
217
  }
225
218
  });
@@ -1,22 +1,10 @@
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
- };
13
2
  import React from 'react';
14
3
  import { assert } from '../assert';
15
4
  import { iconMechanicalArm, iconShield, iconTypescript, iconEngine } from './assets';
16
5
  export { Emoji };
17
- function Emoji(_a) {
18
- var name = _a.name, style = _a.style;
19
- var emoji =
6
+ function Emoji({ name, style }) {
7
+ const emoji =
20
8
  // ***
21
9
  // U+26A0
22
10
  // https://emojipedia.org/warning/
@@ -165,22 +153,26 @@ function Emoji(_a) {
165
153
  (name === 'left-right-arrow' && Unicode(0xFE0F)) ||
166
154
  (name === 'left-right-arrow' && Unicode(0xFE0F, { fontFamily: 'reset' })) ||
167
155
  ======================== */
168
- assert(emoji, { name: name });
156
+ assert(emoji, { name });
169
157
  return emoji;
170
158
  function Unicode(codePoint, styleAddendum) {
171
- var text = String.fromCodePoint(codePoint);
159
+ const text = String.fromCodePoint(codePoint);
172
160
  if (style || styleAddendum) {
173
- return React.createElement('span', { style: __assign(__assign({}, style), styleAddendum) }, text);
161
+ return React.createElement('span', { style: { ...style, ...styleAddendum } }, text);
174
162
  }
175
163
  else {
176
164
  return React.createElement(React.Fragment, null, text);
177
165
  }
178
166
  }
179
- function Img(imgSrc, width) {
180
- if (width === void 0) { width = '1.15em'; }
181
- var props = {
167
+ function Img(imgSrc, width = '1.15em') {
168
+ const props = {
182
169
  src: imgSrc,
183
- style: __assign({ verticalAlign: 'text-top', fontSize: '1em', width: width }, style),
170
+ style: {
171
+ verticalAlign: 'text-top',
172
+ fontSize: '1em',
173
+ width,
174
+ ...style,
175
+ },
184
176
  };
185
177
  return React.createElement('img', props);
186
178
  }