1
- import react from "@vitejs/plugin-react-swc" ;
2
1
import { Box , Text , render , useApp , useInput } from "ink" ;
3
2
import SelectInput from "ink-select-input" ;
4
- import { resolve } from "node:path" ;
5
- import { fileURLToPath } from "node:url" ;
6
3
import React , { useEffect , useMemo , useRef , useState } from "react" ;
7
4
import glob from "tiny-glob" ;
8
- import { createServer } from "vite" ;
9
- import { copyJklFonts , setupDev } from "../../utils/vite/index.mjs" ;
5
+ import { createViteServer } from "./create-vite-server.mjs" ;
10
6
11
7
export default function App ( ) {
12
8
const [ components , setComponents ] = useState ( [ ] ) ;
@@ -52,17 +48,7 @@ export default function App() {
52
48
53
49
useEffect ( ( ) => {
54
50
glob ( "**/documentation/Example.tsx" ) . then ( ( result ) => {
55
- setComponents (
56
- result . map ( ( file ) => {
57
- return {
58
- label : file . split ( "/" ) [ 2 ] ,
59
- value : resolve (
60
- fileURLToPath ( new URL ( file , import . meta. url ) ) ,
61
- ".." ,
62
- ) ,
63
- } ;
64
- } ) ,
65
- ) ;
51
+ setComponents ( result . map ( ( file ) => file . split ( "/" ) [ 2 ] ) ) ;
66
52
} ) ;
67
53
} , [ ] ) ;
68
54
@@ -86,33 +72,9 @@ export default function App() {
86
72
} ) ;
87
73
88
74
const handleSelect = async ( component ) => {
89
- setSelectedComponent ( component ) ;
75
+ setSelectedComponent ( component . label ) ;
90
76
91
- server . current = await createServer ( {
92
- mode : "development" ,
93
- configFile : false ,
94
- plugins : [
95
- react ( ) ,
96
- copyJklFonts ( resolve ( component . value , "public" , "fonts" ) ) ,
97
- setupDev ( component . value ) ,
98
- ] ,
99
- resolve : {
100
- alias : {
101
- "doc-utils" : resolve (
102
- fileURLToPath ( new URL ( "." , import . meta. url ) ) ,
103
- ".." ,
104
- ".." ,
105
- "utils" ,
106
- "dev-example" ,
107
- ) ,
108
- } ,
109
- } ,
110
- root : component . value ,
111
- server : {
112
- port : 3000 ,
113
- } ,
114
- customLogger,
115
- } ) ;
77
+ server . current = await createViteServer ( component . label , customLogger ) ;
116
78
await server . current . listen ( ) ;
117
79
} ;
118
80
@@ -123,9 +85,13 @@ export default function App() {
123
85
< Text > Choose a component from the list below</ Text >
124
86
< Text > Filter: { filterString } </ Text >
125
87
< SelectInput
126
- items = { components . filter ( ( component ) =>
127
- component . label . startsWith ( filterString ) ,
128
- ) }
88
+ items = { components
89
+ . filter ( ( component ) =>
90
+ component . startsWith ( filterString ) ,
91
+ )
92
+ . map ( ( component ) => ( {
93
+ label : component ,
94
+ } ) ) }
129
95
onSelect = { handleSelect }
130
96
/>
131
97
</ Box >
@@ -134,8 +100,8 @@ export default function App() {
134
100
< Box flexDirection = "column" gap = { 1 } >
135
101
< Text >
136
102
Dev-server for component{ " " }
137
- < Text color = "green" > { selectedComponent . label } </ Text > { " " }
138
- started on port 3000
103
+ < Text color = "green" > { selectedComponent } </ Text > started
104
+ on port 3000
139
105
</ Text >
140
106
< Text > Use 'q' to exit to main menu</ Text >
141
107
</ Box >
0 commit comments