@@ -3,25 +3,26 @@ import 'dart:math';
33import 'dart:html' ;
44import 'dart:async' ;
55
6+ import 'package:code_mirror/code_mirror.dart' ;
67import 'package:wallpaper/wallpaper.dart' ;
78
89final CanvasElement canvas = querySelector ("#output" ) as CanvasElement ;
910final OffscreenCanvas offscreenCanvas = canvas.transferControlToOffscreen ();
1011final OffscreenCanvasRenderingContext2D offCtx = offscreenCanvas.getContext ('2d' ) as OffscreenCanvasRenderingContext2D ;
1112
12- final TextAreaElement textArea = document.querySelector ("#input" ) as TextAreaElement ;
1313final ButtonElement saveBtn = document.querySelector ("#save-btn" ) as ButtonElement ;
1414final DivElement loading = document.querySelector ("#loading-panel" ) as DivElement ;
1515final ParagraphElement loadingMessage = document.querySelector ("#loading-message" ) as ParagraphElement ;
1616
17+ final CodeMirrorEditor codeEditor = CodeMirrorEditor ("#input" );
18+
1719const int numberOfConfigurations = 7 ;
1820Timer ? _debounceTimer;
1921
2022final String workerName = "wallpaper_generator_worker.js" ;
2123Worker ? worker;
2224
2325void main () async {
24-
2526 // Set first wallpaper
2627 await setFirstWallpaper ();
2728
@@ -36,8 +37,8 @@ Future setFirstWallpaper() async {
3637}
3738
3839void bindUI () {
39- textArea.onInput.listen ((_) => debounceUpdateWallpaper ());
4040 saveBtn.onClick.listen ((_) => saveImage ());
41+ codeEditor.onChange (debounceUpdateWallpaper);
4142}
4243
4344void saveImage () {
@@ -58,26 +59,28 @@ void debounceUpdateWallpaper() {
5859
5960void updateWallpaper () {
6061 print ("Wallpaper Update" );
61- String compactJson = getJsonFromTextArea ();
62+ String ? compactJson = codeEditor.getValue ();
63+ if (compactJson == null ) return ;
6264 Wallpaper ? wallpaper = Wallpaper .fromRawJson (compactJson);
63- setWallpaper (wallpaper);
65+ updateCanvas (wallpaper);
6466}
6567
6668void setWallpaper (Wallpaper ? wallpaper) {
6769 if (wallpaper == null ) return ;
68- setJsonInTextArea (wallpaper.toRawJson ());
70+ setJsonInCodeMirror (wallpaper.toRawJson ());
6971 updateCanvas (wallpaper);
7072}
7173
72- void setJsonInTextArea (String ? jsonString) {
74+ void setJsonInCodeMirror (String ? jsonString) {
7375 if (jsonString == null ) return ;
7476 Map <String , dynamic >? map = json.decoder.convert (jsonString);
7577 if (map == null ) return ;
7678 JsonEncoder encoder = JsonEncoder .withIndent (' ' );
7779 String prettyprint = encoder.convert (map);
78- textArea.text = prettyprint;
80+ codeEditor. setValue ( prettyprint) ;
7981}
8082
83+
8184// Stop the current worker and start another one
8285void updateCanvas (Wallpaper ? wallpaper) {
8386 if (wallpaper == null ) return ;
@@ -104,12 +107,6 @@ void updateCanvas(Wallpaper? wallpaper) {
104107 worker? .postMessage ({'wallpaper' : wallpaper.toJson ()});
105108}
106109
107- String getJsonFromTextArea () {
108- String jsonString = textArea.value! .trim ();
109- Map <String , dynamic > jsonData = jsonDecode (jsonString);
110- return jsonEncode (jsonData);
111- }
112-
113110Uri getRandomInitialConfiguration () {
114111 int index = Random .secure ().nextInt (numberOfConfigurations) + 1 ;
115112 return Uri .parse ("https://lucaffo.github.io/github-wallpapers/static/wallpapers/wallpaper_${index .toString ().padLeft (2 , '0' )}.json" );
0 commit comments