Skip to content

Commit 95578f1

Browse files
committed
update sidebar titles, signature boxes
1 parent 4274e9e commit 95578f1

File tree

5 files changed

+53
-17
lines changed

5 files changed

+53
-17
lines changed

src/generators/jsx-ast/utils/buildBarProps.mjs

Lines changed: 20 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,7 @@
11
import readingTime from 'reading-time';
22
import { visit } from 'unist-util-visit';
33

4+
import { getFullName } from './createSignatureElements.mjs';
45
import { DOC_API_BLOB_EDIT_BASE_URL } from '../../../constants.mjs';
56
import {
67
getCompatibleVersions,
@@ -27,14 +28,25 @@ export const buildMetaBarProps = (head, entries) => {
2728
.filter(
2829
entry => entry.heading?.data?.text && entry.heading?.data?.depth < 3
2930
)
30-
.map(entry => ({
31-
depth: entry.heading.depth,
32-
value: entry.heading.data.text
33-
.replace(/`/g, '')
34-
.replace(/^[^:]+:/, '')
35-
.trim(),
36-
slug: entry.heading.data.slug,
37-
}));
31+
.map(entry => {
32+
let heading = getFullName(
33+
entry.heading.data,
34+
entry.heading.data.name
35+
.replace(/`/g, '')
36+
.replace(/^[^:]+:/, '')
37+
.trim()
38+
);
39+
40+
if (entry.heading.data.type === 'ctor') {
41+
heading += ' Constructor';
42+
}
43+
44+
return {
45+
depth: entry.heading.depth,
46+
value: heading,
47+
slug: entry.heading.data.slug,
48+
};
49+
});
3850

3951
return {
4052
headings,

src/generators/jsx-ast/utils/buildContent.mjs

Lines changed: 5 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -88,7 +88,7 @@ const createSourceLink = sourceLink =>
8888
const createHeadingElement = (content, changeElement) => {
8989
const { type, depth, slug } = content.data;
9090

91-
const headingContent =
91+
let headingContent =
9292
getFullName(content.data, false) ||
9393
sliceMarkdown(
9494
content,
@@ -97,6 +97,10 @@ const createHeadingElement = (content, changeElement) => {
9797
{ trimWhitespace: true }
9898
).children;
9999

100+
if (type === 'ctor') {
101+
headingContent += ' Constructor';
102+
}
103+
100104
const headingWrapper = createElement('div', [
101105
createElement(`h${depth}`, [
102106
createElement(`a#${slug}`, { href: `#${slug}` }, headingContent),

src/generators/jsx-ast/utils/createSignatureElements.mjs

Lines changed: 18 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -132,16 +132,17 @@ export const createPropertyTable = (node, withHeading = true) => {
132132
* Generates all valid function signatures based on optional parameters
133133
* @param {string} functionName - Name of the function
134134
* @param {import('../../legacy-json/types.d.ts').MethodSignature} signature - Signature object
135+
* @param {string} prefix - `'new '` or `''`
135136
*/
136-
export const generateSignatures = (functionName, signature) => {
137+
export const generateSignatures = (functionName, signature, prefix = '') => {
137138
const { params, return: returnType } = signature;
138139
const returnStr = returnType ? `: ${returnType.type}` : '';
139140

140141
// Handle case with no optional parameters
141142
const optionalParams = params.filter(param => param.optional);
142143
if (!optionalParams.length) {
143144
const paramsStr = params.map(param => param.name).join(', ');
144-
return [`${functionName}(${paramsStr})${returnStr}`];
145+
return [`${prefix}${functionName}(${paramsStr})${returnStr}`];
145146
}
146147

147148
// Find indexes of optional parameters
@@ -175,7 +176,7 @@ export const generateSignatures = (functionName, signature) => {
175176
})
176177
.join(', ');
177178

178-
signatures.push(`${functionName}(${paramsStr})${returnStr}`);
179+
signatures.push(`${prefix}${functionName}(${paramsStr})${returnStr}`);
179180
}
180181

181182
return signatures;
@@ -185,11 +186,13 @@ export const generateSignatures = (functionName, signature) => {
185186
* Creates a code block with function signatures
186187
* @param {string} functionName - Name of the function
187188
* @param {import('../../legacy-json/types.d.ts').MethodSignature} signature - Signature object
189+
* @param {string} prefix - `'new '` or `''`
188190
*/
189-
export const createSignatureCodeBlock = (functionName, signature) => {
190-
const signatures = generateSignatures(functionName, signature);
191+
export const createSignatureCodeBlock = (functionName, signature, prefix) => {
192+
const signatures = generateSignatures(functionName, signature, prefix);
191193
const codeContent = signatures.join('\n');
192-
return highlightToHast(codeContent, 'typescript');
194+
const highlighted = highlightToHast(codeContent, 'typescript');
195+
return createElement('div', { class: 'signature' }, [highlighted]);
193196
};
194197

195198
/**
@@ -226,5 +229,13 @@ export default ({ children }, { data }, idx) => {
226229
const signature = parseSignature(data.text, params);
227230
const displayName = getFullName(data);
228231

229-
children.splice(idx, 0, createSignatureCodeBlock(displayName, signature));
232+
children.splice(
233+
idx,
234+
0,
235+
createSignatureCodeBlock(
236+
displayName,
237+
signature,
238+
data.type === 'ctor' ? 'new ' : ''
239+
)
240+
);
230241
};

src/generators/web/build/bundle.mjs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -21,7 +21,7 @@ const createConfig = (code, { server, debug }) => ({
2121
loader: 'jsx',
2222
},
2323
bundle: true,
24-
minify: true,
24+
minify: !debug,
2525
format: 'iife',
2626
platform: server ? 'node' : 'browser',
2727
jsx: 'automatic',

src/generators/web/ui/index.css

Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -14,3 +14,12 @@ code {
1414
a {
1515
padding-right: unset;
1616
}
17+
18+
/* No line numbers on signatures */
19+
.signature .line::after {
20+
all: unset !important;
21+
}
22+
23+
.signature .line {
24+
padding-left: unset !important;
25+
}

0 commit comments

Comments
 (0)