1
1
<script setup lang="ts">
2
2
import figlet from ' figlet' ;
3
3
import TextareaCopyable from ' @/components/TextareaCopyable.vue' ;
4
+ import { languages , translateToLanguage } from ' @/utils/ascii-lang-utils' ;
4
5
5
6
const input = ref (' Ascii ART' );
7
+ const language = useStorage (' ascii-text-drawer:language' , ' raw' );
6
8
const font = useStorage (' ascii-text-drawer:font' , ' Standard' );
7
9
const width = useStorage (' ascii-text-drawer:width' , 80 );
8
10
const output = ref (' ' );
@@ -11,16 +13,24 @@ const processing = ref(false);
11
13
12
14
figlet .defaults ({ fontPath: ' //unpkg.com/[email protected] /fonts/' });
13
15
16
+ const languagesOptions = languages .map (lang => ({ value: lang .id , label: lang .name }));
17
+
18
+ figlet .defaults ({ fontPath: ' //unpkg.com/[email protected] /fonts/' });
19
+
14
20
watchEffect (async () => {
21
+ const inputValue = input .value ;
22
+ const languageValue = language .value ;
23
+ const fontValue = font .value ;
24
+ const widthValue = width .value ;
15
25
processing .value = true ;
16
26
try {
17
27
const options: figlet .Options = {
18
- font: font . value as figlet .Fonts ,
19
- width: width . value ,
28
+ font: fontValue as figlet .Fonts ,
29
+ width: widthValue ,
20
30
whitespaceBreak: true ,
21
31
};
22
- output . value = await (new Promise <string >((resolve , reject ) =>
23
- figlet .text (input . value , options ,
32
+ const rawOutput = await (new Promise <string >((resolve , reject ) =>
33
+ figlet .text (inputValue , options ,
24
34
(err , text ) => {
25
35
if (err ) {
26
36
reject (err );
@@ -29,6 +39,8 @@ watchEffect(async () => {
29
39
30
40
resolve (text ?? ' ' );
31
41
})));
42
+
43
+ output .value = translateToLanguage (rawOutput , languageValue );
32
44
errored .value = false ;
33
45
}
34
46
catch (e : any ) {
@@ -50,6 +62,7 @@ const fonts = ['1Row', '3-D', '3D Diagonal', '3D-ASCII', '3x5', '4Max', '5 Line
50
62
multiline
51
63
rows =" 4"
52
64
/>
65
+ <c-select v-model:value =" language" :options =" languagesOptions" searchable mt-3 />
53
66
54
67
<n-divider />
55
68
0 commit comments