Skip to content

Commit 0a2625c

Browse files
committed
fix: implement code review changes
1 parent 6ef9989 commit 0a2625c

File tree

11 files changed

+27
-42
lines changed

11 files changed

+27
-42
lines changed

packages/react/src/core/FileTree.tsx

Lines changed: 27 additions & 42 deletions
Original file line numberDiff line numberDiff line change
@@ -19,6 +19,25 @@ interface Props {
1919
className?: string;
2020
}
2121

22+
const extensionsToIcons = new Map([
23+
['ts', 'i-ph-file-ts-duotone'],
24+
25+
['cjs', 'i-ph-file-js-duotone'],
26+
['mjs', 'i-ph-file-js-duotone'],
27+
['js', 'i-ph-file-js-duotone'],
28+
29+
['html', 'i-ph-file-html-duotone'],
30+
31+
['css', 'i-ph-file-css-duotone'],
32+
33+
['md', 'i-ph-file-md-duotone'],
34+
35+
['gif', 'i-ph-file-image-duotone'],
36+
['jpg', 'i-ph-file-image-duotone'],
37+
['jpeg', 'i-ph-file-image-duotone'],
38+
['png', 'i-ph-file-image-duotone'],
39+
]);
40+
2241
export function FileTree({
2342
files,
2443
onFileSelect,
@@ -183,7 +202,8 @@ interface FileProps {
183202
}
184203

185204
function File({ file: { depth, name }, onClick, selected }: FileProps) {
186-
const fileIcon = name ? getFileTreeIcon(name) : '';
205+
const extension = getFileExtension(name);
206+
const fileIcon = extensionsToIcons.get(extension) || 'i-ph-file-duotone';
187207
return (
188208
<NodeButton
189209
className={classNames('group transition-theme', {
@@ -360,47 +380,12 @@ function compareString(a: string, b: string) {
360380
return 0;
361381
}
362382

363-
function getFileTreeIcon(fileName: string) {
364-
const extension = fileName.split('.').at(-1);
383+
function getFileExtension(filename: string) {
384+
const parts = filename.split('.');
365385

366-
if (!extension) {
367-
console.error('Cannot infer file type');
368-
return '';
369-
}
386+
parts.shift();
370387

371-
switch (extension) {
372-
case 'ts': {
373-
return 'i-ph-file-ts-duotone';
374-
}
375-
case 'cjs':
376-
case 'mjs':
377-
case 'js': {
378-
return 'i-ph-file-js-duotone';
379-
}
380-
case 'html': {
381-
return 'i-ph-file-html-duotone';
382-
}
383-
case 'css': {
384-
return 'i-ph-file-css-duotone';
385-
}
386-
// case 'scss':
387-
// case 'sass': {
388-
// return 'i-languages-sass?mask';
389-
// }
390-
case 'md': {
391-
return 'i-ph-file-md-duotone';
392-
}
393-
// case 'json': {
394-
// return 'i-languages-json?mask';
395-
// }
396-
case 'gif':
397-
case 'jpg':
398-
case 'jpeg':
399-
case 'png': {
400-
return 'i-ph-file-image-duotone';
401-
}
402-
default: {
403-
return 'i-ph-file-duotone';
404-
}
405-
}
388+
const extension = parts.at(-1) || '';
389+
390+
return extension;
406391
}

packages/template/src/content/tutorial/1-basics/1-introduction/2-foo/_files/src/test-1.js

Whitespace-only changes.

packages/template/src/content/tutorial/1-basics/1-introduction/2-foo/_files/src/test-10.ts

Whitespace-only changes.

packages/template/src/content/tutorial/1-basics/1-introduction/2-foo/_files/src/test-2.cjs

Whitespace-only changes.

packages/template/src/content/tutorial/1-basics/1-introduction/2-foo/_files/src/test-3.mjs

Whitespace-only changes.

packages/template/src/content/tutorial/1-basics/1-introduction/2-foo/_files/src/test-4.css

Whitespace-only changes.

packages/template/src/content/tutorial/1-basics/1-introduction/2-foo/_files/src/test-5.md

Whitespace-only changes.

packages/template/src/content/tutorial/1-basics/1-introduction/2-foo/_files/src/test-6.png

Loading

packages/template/src/content/tutorial/1-basics/1-introduction/2-foo/_files/src/test-7.jpg

Loading

packages/template/src/content/tutorial/1-basics/1-introduction/2-foo/_files/src/test-8.gif

Loading

0 commit comments

Comments
 (0)