@mintlify/common 1.0.1019 → 1.0.1020
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/mdx/componentIds.js +1 -0
- package/dist/mdx/getMDXOptions.js +2 -1
- package/dist/mdx/plugins/remark/index.d.ts +1 -0
- package/dist/mdx/plugins/remark/index.js +1 -0
- package/dist/mdx/plugins/remark/remarkFileTree.d.ts +2 -0
- package/dist/mdx/plugins/remark/remarkFileTree.js +73 -0
- package/dist/mdx/utils.js +1 -0
- package/dist/tsconfig.build.tsbuildinfo +1 -1
- package/package.json +2 -2
package/dist/mdx/componentIds.js
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { rehypeCodeBlocks, rehypeDynamicTailwindCss, rehypeKeyboardSymbols, rehypeListItemText, rehypeMdxExtractEndpoint, rehypeMdxExtractExamples, rehypeParamFieldIds, rehypeRawComponents, rehypeTable, rehypeUnicodeIds, rehypeZoomImages, remarkExtractChangelogFilters, remarkExtractTableOfContents, remarkFrames, remarkComponentIds, remarkMdxInjectSnippets, remarkMdxRemoveUnusedVariables, remarkRemoveImports, remarkMdxExtractPanel, remarkResolveRelativeLinks, remarkVideo, remarkMdxClientComponentBoundaries, remarkExtractMultiView, remarkPrompt, remarkUnwrapJsxHeadings, } from './plugins/index.js';
|
|
1
|
+
import { rehypeCodeBlocks, rehypeDynamicTailwindCss, rehypeKeyboardSymbols, rehypeListItemText, rehypeMdxExtractEndpoint, rehypeMdxExtractExamples, rehypeParamFieldIds, rehypeRawComponents, rehypeTable, rehypeUnicodeIds, rehypeZoomImages, remarkExtractChangelogFilters, remarkExtractTableOfContents, remarkFileTree, remarkFrames, remarkComponentIds, remarkMdxInjectSnippets, remarkMdxRemoveUnusedVariables, remarkRemoveImports, remarkMdxExtractPanel, remarkResolveRelativeLinks, remarkVideo, remarkMdxClientComponentBoundaries, remarkExtractMultiView, remarkPrompt, remarkUnwrapJsxHeadings, } from './plugins/index.js';
|
|
2
2
|
import { remarkMdxRemoveUnknownJsx } from './plugins/remark/remarkMdxRemoveUnknownJsx/index.js';
|
|
3
3
|
import { remarkMermaid } from './plugins/remark/remarkMermaid.js';
|
|
4
4
|
// avoid running extractors unnecessarily
|
|
@@ -24,6 +24,7 @@ export const getMDXOptions = ({ data, remarkPlugins = [], rehypePlugins = [], md
|
|
|
24
24
|
[remarkExtractMultiView, mdxExtracts],
|
|
25
25
|
remarkMdxRemoveUnusedVariables,
|
|
26
26
|
remarkFrames,
|
|
27
|
+
remarkFileTree,
|
|
27
28
|
remarkRemoveImports,
|
|
28
29
|
remarkMermaid,
|
|
29
30
|
remarkVideo,
|
|
@@ -0,0 +1,73 @@
|
|
|
1
|
+
import { visit } from 'unist-util-visit';
|
|
2
|
+
const isList = (node) => node.type === 'list';
|
|
3
|
+
const isTreeItemElement = (node) => node.type === 'mdxJsxFlowElement' &&
|
|
4
|
+
'name' in node &&
|
|
5
|
+
(node.name === 'Tree.Folder' ||
|
|
6
|
+
node.name === 'Tree.File');
|
|
7
|
+
const isExpression = (node) => node.type === 'mdxFlowExpression' || node.type === 'mdxTextExpression';
|
|
8
|
+
const getNodeText = (node) => {
|
|
9
|
+
var _a;
|
|
10
|
+
if (typeof node.value === 'string')
|
|
11
|
+
return node.value;
|
|
12
|
+
return ((_a = node.children) !== null && _a !== void 0 ? _a : []).map(getNodeText).join('');
|
|
13
|
+
};
|
|
14
|
+
const describeNode = (node) => {
|
|
15
|
+
if (node.type === 'mdxJsxFlowElement' && 'name' in node && node.name) {
|
|
16
|
+
return `<${String(node.name)}>`;
|
|
17
|
+
}
|
|
18
|
+
const text = getNodeText(node).trim().replace(/\s+/g, ' ');
|
|
19
|
+
const preview = text.length > 40 ? `${text.slice(0, 40)}…` : text;
|
|
20
|
+
return preview ? `Text ("${preview}")` : `A ${node.type} node`;
|
|
21
|
+
};
|
|
22
|
+
const parseListItems = (list) => list.children.map((item) => {
|
|
23
|
+
const nestedList = item.children.find(isList);
|
|
24
|
+
const name = item.children
|
|
25
|
+
.filter((child) => !isList(child))
|
|
26
|
+
.map(getNodeText)
|
|
27
|
+
.join('')
|
|
28
|
+
.trim();
|
|
29
|
+
return {
|
|
30
|
+
name: name.replace(/\/+$/, ''),
|
|
31
|
+
isFolder: name.endsWith('/') || nestedList !== undefined,
|
|
32
|
+
children: nestedList ? parseListItems(nestedList) : [],
|
|
33
|
+
};
|
|
34
|
+
});
|
|
35
|
+
const buildTreeElement = (node) => ({
|
|
36
|
+
type: 'mdxJsxFlowElement',
|
|
37
|
+
name: node.isFolder ? 'Tree.Folder' : 'Tree.File',
|
|
38
|
+
attributes: [
|
|
39
|
+
{ type: 'mdxJsxAttribute', name: 'name', value: node.name },
|
|
40
|
+
...(node.isFolder
|
|
41
|
+
? [{ type: 'mdxJsxAttribute', name: 'defaultOpen', value: null }]
|
|
42
|
+
: []),
|
|
43
|
+
],
|
|
44
|
+
children: node.children.map(buildTreeElement),
|
|
45
|
+
});
|
|
46
|
+
const collectSalvageableEntries = (node) => {
|
|
47
|
+
var _a;
|
|
48
|
+
if (isList(node))
|
|
49
|
+
return [node];
|
|
50
|
+
if (isTreeItemElement(node))
|
|
51
|
+
return [node];
|
|
52
|
+
return ((_a = node.children) !== null && _a !== void 0 ? _a : []).flatMap(collectSalvageableEntries);
|
|
53
|
+
};
|
|
54
|
+
const sanitizeEntries = (children, componentName) => children.flatMap((child) => {
|
|
55
|
+
if (isList(child))
|
|
56
|
+
return parseListItems(child).map(buildTreeElement);
|
|
57
|
+
if (isTreeItemElement(child)) {
|
|
58
|
+
child.children = sanitizeEntries(child.children, componentName);
|
|
59
|
+
return [child];
|
|
60
|
+
}
|
|
61
|
+
if (isExpression(child))
|
|
62
|
+
return [child];
|
|
63
|
+
const entries = sanitizeEntries(collectSalvageableEntries(child), componentName);
|
|
64
|
+
console.warn(`${describeNode(child)} cannot be a child of <${componentName}> and was removed.`);
|
|
65
|
+
return entries;
|
|
66
|
+
});
|
|
67
|
+
export const remarkFileTree = () => (tree) => {
|
|
68
|
+
visit(tree, 'mdxJsxFlowElement', (node) => {
|
|
69
|
+
if (node.name !== 'FileTree' && node.name !== 'Tree')
|
|
70
|
+
return;
|
|
71
|
+
node.children = sanitizeEntries(node.children, node.name);
|
|
72
|
+
});
|
|
73
|
+
};
|