1// app/typescript/controllers/image_generator_controller.ts 2import { Controller } from "@hotwired/stimulus"; 3import { createConsumer } from "@rails/actioncable"; 4import * as Vue from "vue"; 5 6class image_generator_controller_default extends Controller { 7 connect() { 8 const consumer = createConsumer("/cable?token=" + window.gon.user_token); 9 console.log("Creating Image Channel"); 10 consumer.subscriptions.create({ channel: "ImageGeneratorChannel", token: window.gon.user_token }, { 11 connected() { 12 console.log("Connected to Image Generator Updates"); 13 }, 14 disconnected() { 15 console.log("Disconnected from Image Generator Updates"); 16 }, 17 received(data) { 18 console.log("Image Generator Data"); 19 window.imageGeneratorApp.processData(data); 20 } 21 }); 22 window.imageGeneratorApp = Vue.createApp({ 23 data() { 24 return { 25 mode: "generate", 26 images: [], 27 style: "", 28 prompt: "", 29 steps: 4 30 }; 31 }, 32 methods: { 33 processData(data) { 34 this.images.push({ 35 src: `data:image/png;base64,${data}`, 36 prompt: this.prompt 37 }); 38 this.mode = "generate"; 39 }, 40 async generate() { 41 if (this.prompt?.trim()?.length == 0) { 42 return; 43 } 44 this.mode = "waiting"; 45 let prompt = this.prompt; 46 if (this.style != "") { 47 prompt = this.style.replace("{prompt}", prompt); 48 } 49 let data = { prompt, steps: this.steps }; 50 await fetch("https://www.mentza.com/admin/image_generator", { 51 method: "POST", 52 mode: "cors", 53 cache: "no-cache", 54 credentials: "include", 55 headers: { 56 "Content-Type": "application/json" 57 }, 58 redirect: "follow", 59 referrerPolicy: "no-referrer", 60 body: JSON.stringify(data) 61 }); 62 } 63 } 64 }).mount("#image-generator"); 65 } 66} 67export { 68 image_generator_controller_default as default 69};
Line numbers count LF bytes from the start of the resource, as the search results do. Vendor segments are library code the classifier recognised; they are stored but not indexed. Bytes are shown as Latin1 characters, one per byte.