rspress-plugin-file-tree 1.0.0 → 1.0.1

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 (45) hide show
  1. package/dist/0~142.js +2 -0
  2. package/dist/0~164.js +2 -0
  3. package/dist/0~2.js +2 -0
  4. package/dist/0~225.js +2 -0
  5. package/dist/0~288.js +2 -0
  6. package/dist/0~299.js +2 -0
  7. package/dist/0~3.js +2 -0
  8. package/dist/0~311.js +2 -0
  9. package/dist/0~326.js +2 -0
  10. package/dist/0~40.js +2 -0
  11. package/dist/0~43.js +2 -0
  12. package/dist/0~433.js +2 -0
  13. package/dist/0~453.js +2 -0
  14. package/dist/0~457.js +2 -0
  15. package/dist/0~497.js +2 -0
  16. package/dist/0~511.js +2 -0
  17. package/dist/0~603.js +2 -0
  18. package/dist/0~616.js +2 -0
  19. package/dist/0~659.js +2 -0
  20. package/dist/0~670.js +2 -0
  21. package/dist/0~687.js +2 -0
  22. package/dist/0~706.js +2 -0
  23. package/dist/0~729.js +2 -0
  24. package/dist/0~768.js +2 -0
  25. package/dist/0~819.js +2 -0
  26. package/dist/0~830.js +2 -0
  27. package/dist/0~854.js +2 -0
  28. package/dist/0~863.js +2 -0
  29. package/dist/0~879.js +2 -0
  30. package/dist/0~96.js +2 -0
  31. package/dist/0~97.js +2 -0
  32. package/dist/components/FileTree/{FileTreeItem_module.css → FileTree.css} +14 -2
  33. package/dist/components/FileTree/FileTree.js +508 -5
  34. package/dist/index.js +69 -2
  35. package/package.json +1 -1
  36. package/dist/components/FileTree/FileTree.module.js +0 -5
  37. package/dist/components/FileTree/FileTreeItem.js +0 -80
  38. package/dist/components/FileTree/FileTreeItem.module.js +0 -11
  39. package/dist/components/FileTree/FileTree_module.css +0 -12
  40. package/dist/components/FileTree/RemoteSvgIcon.js +0 -26
  41. package/dist/components/FileTree/index.js +0 -4
  42. package/dist/components/folder-icons.js +0 -177
  43. package/dist/components/languages.js +0 -98
  44. package/dist/components/tree-parser/tree-parser.js +0 -68
  45. package/dist/components/tree-parser/types.js +0 -0
@@ -1,11 +0,0 @@
1
- import "./FileTreeItem_module.css";
2
- const FileTreeItem_module = {
3
- item: "item-mfHlfR",
4
- row: "row-AOLrYw",
5
- chevron: "chevron-Zi120f",
6
- iconWrapper: "iconWrapper-SwAXs4",
7
- name: "name-ItNtUc",
8
- children: "children-yp3kEz",
9
- indentGuide: "indentGuide-bjr2fi"
10
- };
11
- export { FileTreeItem_module as default };
@@ -1,12 +0,0 @@
1
- .container-ZPDb1C {
2
- box-sizing: border-box;
3
- border-radius: var(--rp-radius);
4
- border: var(--rp-code-block-border, 1px solid var(--rp-c-divider-light));
5
- min-height: 100%;
6
- box-shadow: var(--rp-code-block-shadow, none);
7
- padding: 8px;
8
- font-family: inherit;
9
- font-size: 13px;
10
- line-height: 22px;
11
- }
12
-
@@ -1,26 +0,0 @@
1
- import { jsx } from "react/jsx-runtime";
2
- import { useEffect, useState } from "react";
3
- const RemoteSvgIcon = ({ content, className })=>{
4
- const [svgContent, setSvgContent] = useState('');
5
- useEffect(()=>{
6
- let cancelled = false;
7
- content().then((mod)=>{
8
- if (cancelled) return;
9
- const svg = 'string' == typeof mod ? mod : mod.default;
10
- setSvgContent(svg);
11
- });
12
- return ()=>{
13
- cancelled = true;
14
- };
15
- }, [
16
- content
17
- ]);
18
- if (!svgContent) return null;
19
- return /*#__PURE__*/ jsx("span", {
20
- className: className,
21
- dangerouslySetInnerHTML: {
22
- __html: svgContent
23
- }
24
- });
25
- };
26
- export { RemoteSvgIcon };
@@ -1,4 +0,0 @@
1
- import { FileTree } from "./FileTree.js";
2
- import { FileTreeItem } from "./FileTreeItem.js";
3
- const components_FileTree = FileTree;
4
- export { FileTree, FileTreeItem, components_FileTree as default };
@@ -1,177 +0,0 @@
1
- import { SUPPORTED_LANGUAGES } from "./languages.js";
2
- const FOLDER_ICONS = {
3
- src: {
4
- name: 'folder-src',
5
- content: ()=>import("material-icon-theme/icons/folder-src.svg?raw")
6
- },
7
- source: {
8
- name: 'folder-src',
9
- content: ()=>import("material-icon-theme/icons/folder-src.svg?raw")
10
- },
11
- components: {
12
- name: 'folder-components',
13
- content: ()=>import("material-icon-theme/icons/folder-components.svg?raw")
14
- },
15
- component: {
16
- name: 'folder-components',
17
- content: ()=>import("material-icon-theme/icons/folder-components.svg?raw")
18
- },
19
- hooks: {
20
- name: 'folder-hook',
21
- content: ()=>import("material-icon-theme/icons/folder-hook.svg?raw")
22
- },
23
- hook: {
24
- name: 'folder-hook',
25
- content: ()=>import("material-icon-theme/icons/folder-hook.svg?raw")
26
- },
27
- utils: {
28
- name: 'folder-utils',
29
- content: ()=>import("material-icon-theme/icons/folder-utils.svg?raw")
30
- },
31
- util: {
32
- name: 'folder-utils',
33
- content: ()=>import("material-icon-theme/icons/folder-utils.svg?raw")
34
- },
35
- lib: {
36
- name: 'folder-lib',
37
- content: ()=>import("material-icon-theme/icons/folder-lib.svg?raw")
38
- },
39
- libs: {
40
- name: 'folder-lib',
41
- content: ()=>import("material-icon-theme/icons/folder-lib.svg?raw")
42
- },
43
- core: {
44
- name: 'folder-core',
45
- content: ()=>import("material-icon-theme/icons/folder-core.svg?raw")
46
- },
47
- runtime: {
48
- name: 'folder-core',
49
- content: ()=>import("material-icon-theme/icons/folder-core.svg?raw")
50
- },
51
- locales: {
52
- name: 'folder-i18n',
53
- content: ()=>import("material-icon-theme/icons/folder-i18n.svg?raw")
54
- },
55
- locale: {
56
- name: 'folder-i18n',
57
- content: ()=>import("material-icon-theme/icons/folder-i18n.svg?raw")
58
- },
59
- i18n: {
60
- name: 'folder-i18n',
61
- content: ()=>import("material-icon-theme/icons/folder-i18n.svg?raw")
62
- },
63
- assets: {
64
- name: 'folder-images',
65
- content: ()=>import("material-icon-theme/icons/folder-images.svg?raw")
66
- },
67
- images: {
68
- name: 'folder-images',
69
- content: ()=>import("material-icon-theme/icons/folder-images.svg?raw")
70
- },
71
- styles: {
72
- name: 'folder-css',
73
- content: ()=>import("material-icon-theme/icons/folder-css.svg?raw")
74
- },
75
- css: {
76
- name: 'folder-css',
77
- content: ()=>import("material-icon-theme/icons/folder-css.svg?raw")
78
- },
79
- test: {
80
- name: 'folder-test',
81
- content: ()=>import("material-icon-theme/icons/folder-test.svg?raw")
82
- },
83
- tests: {
84
- name: 'folder-test',
85
- content: ()=>import("material-icon-theme/icons/folder-test.svg?raw")
86
- },
87
- __tests__: {
88
- name: 'folder-test',
89
- content: ()=>import("material-icon-theme/icons/folder-test.svg?raw")
90
- },
91
- config: {
92
- name: 'folder-config',
93
- content: ()=>import("material-icon-theme/icons/folder-config.svg?raw")
94
- },
95
- configs: {
96
- name: 'folder-config',
97
- content: ()=>import("material-icon-theme/icons/folder-config.svg?raw")
98
- },
99
- api: {
100
- name: 'folder-api',
101
- content: ()=>import("material-icon-theme/icons/folder-api.svg?raw")
102
- },
103
- apis: {
104
- name: 'folder-api',
105
- content: ()=>import("material-icon-theme/icons/folder-api.svg?raw")
106
- },
107
- public: {
108
- name: 'folder-public',
109
- content: ()=>import("material-icon-theme/icons/folder-public.svg?raw")
110
- },
111
- dist: {
112
- name: 'folder-dist',
113
- content: ()=>import("material-icon-theme/icons/folder-dist.svg?raw")
114
- },
115
- build: {
116
- name: 'folder-dist',
117
- content: ()=>import("material-icon-theme/icons/folder-dist.svg?raw")
118
- },
119
- node_modules: {
120
- name: 'folder-node',
121
- content: ()=>import("material-icon-theme/icons/folder-node.svg?raw")
122
- },
123
- types: {
124
- name: "folder-typescript",
125
- content: ()=>import("material-icon-theme/icons/folder-typescript.svg?raw")
126
- },
127
- typings: {
128
- name: "folder-typescript",
129
- content: ()=>import("material-icon-theme/icons/folder-typescript.svg?raw")
130
- },
131
- pages: {
132
- name: 'folder-views',
133
- content: ()=>import("material-icon-theme/icons/folder-views.svg?raw")
134
- },
135
- views: {
136
- name: 'folder-views',
137
- content: ()=>import("material-icon-theme/icons/folder-views.svg?raw")
138
- },
139
- routes: {
140
- name: 'folder-routes',
141
- content: ()=>import("material-icon-theme/icons/folder-routes.svg?raw")
142
- },
143
- docs: {
144
- name: 'folder-docs',
145
- content: ()=>import("material-icon-theme/icons/folder-docs.svg?raw")
146
- },
147
- services: {
148
- name: 'folder-app',
149
- content: ()=>import("material-icon-theme/icons/folder-app.svg?raw")
150
- },
151
- app: {
152
- name: 'folder-app',
153
- content: ()=>import("material-icon-theme/icons/folder-app.svg?raw")
154
- }
155
- };
156
- const DEFAULT_FOLDER_ICON = {
157
- name: 'folder',
158
- content: ()=>import("material-icon-theme/icons/folder.svg?raw")
159
- };
160
- const DEFAULT_FILE_ICON = {
161
- name: 'file',
162
- content: ()=>import("material-icon-theme/icons/file.svg?raw"),
163
- matcher: /^.*$/
164
- };
165
- function getFolderIcon(name) {
166
- const lowerName = name.toLowerCase();
167
- return FOLDER_ICONS[lowerName] || DEFAULT_FOLDER_ICON;
168
- }
169
- function getFileIcon(fileName) {
170
- for (const language of SUPPORTED_LANGUAGES)for (const icon of language.icons)if (icon.matcher.test(fileName)) return {
171
- name: icon.name,
172
- content: icon.content,
173
- matcher: icon.matcher
174
- };
175
- return DEFAULT_FILE_ICON;
176
- }
177
- export { DEFAULT_FILE_ICON, DEFAULT_FOLDER_ICON, FOLDER_ICONS, getFileIcon, getFolderIcon };
@@ -1,98 +0,0 @@
1
- const SUPPORTED_LANGUAGES = [
2
- {
3
- id: "javascript",
4
- icons: [
5
- {
6
- name: "javascript",
7
- content: ()=>import("material-icon-theme/icons/javascript.svg?raw"),
8
- matcher: /^.*\.js$/
9
- },
10
- {
11
- name: "javascript-beta",
12
- content: ()=>import("material-icon-theme/icons/javascript.svg?raw"),
13
- matcher: /^.*\.cjs$/
14
- },
15
- {
16
- name: "javascript-beta",
17
- content: ()=>import("material-icon-theme/icons/javascript.svg?raw"),
18
- matcher: /^.*\.mjs$/
19
- }
20
- ]
21
- },
22
- {
23
- id: "typescript",
24
- icons: [
25
- {
26
- name: "typescript",
27
- content: ()=>import("material-icon-theme/icons/typescript.svg?raw"),
28
- matcher: /^.*\.ts$/
29
- },
30
- {
31
- name: "typescript-beta",
32
- content: ()=>import("material-icon-theme/icons/typescript.svg?raw"),
33
- matcher: /^.*\.mts$/
34
- },
35
- {
36
- name: "typescript-beta",
37
- content: ()=>import("material-icon-theme/icons/typescript.svg?raw"),
38
- matcher: /^.*\.cts$/
39
- },
40
- {
41
- name: 'react_ts',
42
- content: ()=>import("material-icon-theme/icons/react_ts.svg?raw"),
43
- matcher: /^.*\.tsx$/
44
- }
45
- ]
46
- },
47
- {
48
- id: 'react',
49
- icons: [
50
- {
51
- name: 'react',
52
- content: ()=>import("material-icon-theme/icons/react.svg?raw"),
53
- matcher: /^.*\.jsx$/
54
- }
55
- ]
56
- },
57
- {
58
- id: 'css',
59
- icons: [
60
- {
61
- name: 'css',
62
- content: ()=>import("material-icon-theme/icons/css.svg?raw"),
63
- matcher: /^.*\.css$/
64
- },
65
- {
66
- name: 'less',
67
- content: ()=>import("material-icon-theme/icons/less.svg?raw"),
68
- matcher: /^.*\.less$/
69
- },
70
- {
71
- name: 'sass',
72
- content: ()=>import("material-icon-theme/icons/sass.svg?raw"),
73
- matcher: /^.*\.scss$/
74
- }
75
- ]
76
- },
77
- {
78
- id: 'json',
79
- icons: [
80
- {
81
- name: 'json',
82
- content: ()=>import("material-icon-theme/icons/json.svg?raw"),
83
- matcher: /^.*\.json$/
84
- }
85
- ]
86
- },
87
- {
88
- id: 'markdown',
89
- icons: [
90
- {
91
- name: 'markdown',
92
- content: ()=>import("material-icon-theme/icons/markdown.svg?raw"),
93
- matcher: /^.*\.(md|mdx)$/
94
- }
95
- ]
96
- }
97
- ];
98
- export { SUPPORTED_LANGUAGES };
@@ -1,68 +0,0 @@
1
- function parseTreeContent(content) {
2
- const lines = content.split('\n').filter((line)=>line.trim());
3
- const nodes = [];
4
- const stack = [];
5
- for (const line of lines){
6
- const indent = calculateIndent(line);
7
- const fullName = extractName(line);
8
- const commentMatch = fullName.match(/^(.*?)(?:\s*\/\/\s*(.*))?$/);
9
- const name = commentMatch ? commentMatch[1].trim() : fullName;
10
- if (!name) continue;
11
- const isDirectory = isDirectoryName(name);
12
- const node = {
13
- name: name.replace(/\/$/, ''),
14
- type: isDirectory ? 'directory' : 'file',
15
- children: [],
16
- extension: isDirectory ? void 0 : getExtension(name)
17
- };
18
- while(stack.length > 0 && stack[stack.length - 1].indent >= indent)stack.pop();
19
- if (0 === stack.length) nodes.push(node);
20
- else stack[stack.length - 1].node.children.push(node);
21
- if ('directory' === node.type) stack.push({
22
- node,
23
- indent
24
- });
25
- }
26
- return {
27
- nodes,
28
- raw: content
29
- };
30
- }
31
- function calculateIndent(line) {
32
- let indent = 0;
33
- let i = 0;
34
- while(i < line.length){
35
- const char = line[i];
36
- if ('│' === char && '│ ' === line.substring(i, i + 4)) {
37
- indent++;
38
- i += 4;
39
- continue;
40
- }
41
- if (' ' === line.substring(i, i + 4)) {
42
- indent++;
43
- i += 4;
44
- continue;
45
- }
46
- if ('├' === char || '└' === char) {
47
- if ('├──' === line.substring(i, i + 3) || '└──' === line.substring(i, i + 3)) indent++;
48
- }
49
- break;
50
- }
51
- return indent;
52
- }
53
- function extractName(line) {
54
- return line.replace(/^[\s│]*/g, '').replace(/^[├└]──\s*/, '').trim();
55
- }
56
- function isDirectoryName(name) {
57
- const cleanName = name.split(/\s+\/\//)[0].trim();
58
- if (cleanName.endsWith('/')) return true;
59
- const lastPart = cleanName.split('/').pop() || cleanName;
60
- if (lastPart.startsWith('.')) return false;
61
- if (/\.[a-zA-Z0-9]+$/.test(lastPart)) return false;
62
- return true;
63
- }
64
- function getExtension(name) {
65
- const match = name.match(/\.([^.]+)$/);
66
- return match ? match[1] : '';
67
- }
68
- export { parseTreeContent };
File without changes