QuantumHawk42 commited on
Commit
88143fe
·
verified ·
1 Parent(s): 66e023b

Update js/app.js

Browse files
Files changed (1) hide show
  1. js/app.js +51 -0
js/app.js CHANGED
@@ -45,6 +45,57 @@ const ui = {
45
  showThinker: $("show-thinker"), thinker: $("thinker"), thinkerStep: $("thinker-step"),
46
  };
47
  const thinkerView = new ThinkerView($("plan-canvas"), $("pred-canvas"));
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
48
  ui.showThinker.checked = store.get("agate-thinker") !== "0";
49
  ui.showThinker.onchange = () => { store.set("agate-thinker", ui.showThinker.checked ? "1" : "0"); if (!ui.showThinker.checked) ui.thinker.hidden = true; };
50
 
 
45
  showThinker: $("show-thinker"), thinker: $("thinker"), thinkerStep: $("thinker-step"),
46
  };
47
  const thinkerView = new ThinkerView($("plan-canvas"), $("pred-canvas"));
48
+
49
+ /* Reference image upload and preview */
50
+ const referenceInput = $("reference-image");
51
+ const referencePreview = $("reference-preview");
52
+ const referencePreviewWrap = $("reference-preview-wrap");
53
+ const clearReferenceButton = $("clear-reference");
54
+ const imageStrength = $("image-strength");
55
+ const imageStrengthValue = $("image-strength-v");
56
+
57
+ let referenceImageUrl = null;
58
+
59
+ referenceInput.addEventListener("change", () => {
60
+ const file = referenceInput.files?.[0];
61
+
62
+ if (!file) return;
63
+
64
+ if (!file.type.startsWith("image/")) {
65
+ referenceInput.value = "";
66
+ setProgress(0, "Please select an image file", "");
67
+ return;
68
+ }
69
+
70
+ // Release the previous preview URL, if one exists.
71
+ if (referenceImageUrl) {
72
+ URL.revokeObjectURL(referenceImageUrl);
73
+ }
74
+
75
+ referenceImageUrl = URL.createObjectURL(file);
76
+ referencePreview.src = referenceImageUrl;
77
+ referencePreviewWrap.hidden = false;
78
+
79
+ setProgress(0, "Reference image selected", file.name);
80
+ });
81
+
82
+ clearReferenceButton.addEventListener("click", () => {
83
+ referenceInput.value = "";
84
+ referencePreview.removeAttribute("src");
85
+ referencePreviewWrap.hidden = true;
86
+
87
+ if (referenceImageUrl) {
88
+ URL.revokeObjectURL(referenceImageUrl);
89
+ referenceImageUrl = null;
90
+ }
91
+
92
+ setProgress(0, agate ? "Ready" : "Idle", "");
93
+ });
94
+
95
+ imageStrength.addEventListener("input", () => {
96
+ imageStrengthValue.textContent = Number(imageStrength.value).toFixed(2);
97
+ });
98
+
99
  ui.showThinker.checked = store.get("agate-thinker") !== "0";
100
  ui.showThinker.onchange = () => { store.set("agate-thinker", ui.showThinker.checked ? "1" : "0"); if (!ui.showThinker.checked) ui.thinker.hidden = true; };
101