// import {helloHelper} from 'helper.js' // helloHelper2 = require('./helper.js') // for organizational proposes const helper = require('./helper') const sdapi = require('./sdapi') const exportHelper = require('./export_png') const outpaint = require('./outpaint') const psapi = require('./psapi') const app = window.require('photoshop').app const { batchPlay } = require('photoshop').action const { executeAsModal } = require('photoshop').core const dialog_box = require('./dialog_box') // const {entrypoints} = require('uxp') const html_manip = require('./html_manip') const export_png = require('./export_png') const viewer = require('./viewer') const selection = require('./selection') const util_layer = require('./utility/layer') const sd_options = require('./utility/sdapi/options') const sd_config = require('./utility/sdapi/config') const session = require('./utility/session') const ui = require('./utility/ui') async function hasSessionSelectionChanged(){ try{ const isSelectionActive = await psapi.checkIfSelectionAreaIsActive() if (isSelectionActive){ const current_selection = isSelectionActive // Note: don't use checkIfSelectionAreaIsActive to return the selection object, change this. if(await hasSelectionChanged(current_selection,g_selection)){ return true }else{ //selection has not changed return false } } }catch(e){ console.warn(e) return false } } async function calcWidthHeightFromSelection(){ //set the width and height, hrWidth, and hrHeight using selection info and selection mode const selection_mode = html_manip.getSelectionMode() if(selection_mode === "ratio"){ //change (width and height) and (hrWidth, hrHeight) to match the ratio of selection const [width,height,hr_width,hr_height] = await selection.selectionToFinalWidthHeight() html_manip.autoFillInWidth(width) html_manip.autoFillInHeight(height) html_manip.autoFillInHRWidth(hr_width) html_manip.autoFillInHRHeight(hr_height) }else if(selection_mode ==="precise" ){ const selectionInfo = await psapi.getSelectionInfoExe() const [width,height,hr_width,hr_height] = [selectionInfo.width,selectionInfo.height,0,0] html_manip.autoFillInWidth(width) html_manip.autoFillInHeight(height) } } const eventHandler = async (event, descriptor) => { try{ console.log(event, descriptor) const isSelectionActive = await psapi.checkIfSelectionAreaIsActive() if (isSelectionActive){ const current_selection = isSelectionActive // Note: don't use checkIfSelectionAreaIsActive to return the selection object, change this. await calcWidthHeightFromSelection() // console.log(` (${final_width}* ${final_height})/(${current_selection.width} * ${current_selection.height})`) // console.log("detail density: ",(final_width* final_height)/(current_selection.width * current_selection.height)) // const new_selection = await psapi.getSelectionInfoExe() if(await hasSelectionChanged(current_selection,g_selection)){ // endSessionUI //red color // if selection has changed : change the color and text generate btn "Generate" color "red" g_ui.endSessionUI() }else{ //indicate that the session will continue. only if the session we are in the same mode as the session's mode // startSessionUI// green color const current_mode = html_manip.getMode() if(g_generation_session.isSameMode(current_mode)){ g_ui.startSessionUI() } } } }catch(e){ console.warn(e) } } require("photoshop").action.addNotificationListener(['set','move'], eventHandler); async function getUniqueDocumentId () { try { uniqueDocumentId = await psapi.readUniqueDocumentIdExe() console.log( 'getUniqueDocumentId(): uniqueDocumentId: ', uniqueDocumentId ) // Regular expression to check if string is a valid UUID const regexExp = /^[0-9a-fA-F]{8}\b-[0-9a-fA-F]{4}\b-[0-9a-fA-F]{4}\b-[0-9a-fA-F]{4}\b-[0-9a-fA-F]{12}$/gi // String with valid UUID separated by dash // const str = 'a24a6ea4-ce75-4665-a070-57453082c256' const isValidId = regexExp.test(uniqueDocumentId) // true console.log('isValidId: ', isValidId) if (isValidId == false) { let uuid = self.crypto.randomUUID() console.log(uuid) // for example "36b8f84d-df4e-4d49-b662-bcde71a8764f" await psapi.saveUniqueDocumentIdExe(uuid) uniqueDocumentId = uuid } } catch (e) { console.warn('warning Document Id may not be valid', e) } return uniqueDocumentId } // document // .getElementById('btnLinkCurrentDocument') // .addEventListener('click', async () => { // await getUniqueDocumentId() // }) // attach event listeners for tabs Array.from(document.querySelectorAll(".sp-tab")).forEach(theTab => { theTab.onclick = () => { try{ // localStorage.setItem("currentTab", theTab.getAttribute("id")); Array.from(document.querySelectorAll(".sp-tab")).forEach(aTab => { if (aTab.getAttribute("id") === theTab.getAttribute("id")) { aTab.classList.add("selected"); } else { aTab.classList.remove("selected"); } }); Array.from(document.querySelectorAll(".sp-tab-page")).forEach(tabPage => { if (tabPage.getAttribute("id").startsWith(theTab.getAttribute("id"))) { tabPage.classList.add("visible"); } else { tabPage.classList.remove("visible"); } }); }catch(e){ console.warn(e) } } }); document.getElementById("sp-viewer-tab").addEventListener('click',()=>{ moveElementToAnotherTab("batchNumberUi","batchNumberViewerTabContainer") }) document.getElementById("sp-stable-diffusion-ui-tab").addEventListener('click', ()=>{ moveElementToAnotherTab("batchNumberUi","batchNumber-steps-container") }) // entrypoints.setup({ // panels:{ // vanilla: ()=>{ // console.log("you are in the vanilla panel") // }, // experimental_1: ()=>{ // console.log("you are in the experimental_1 panel") // } // } // } // ) // just a number that shouldn't unique enough that we will use when save files. // each session will get a number from 1 to 1000000 const random_session_id = Math.floor((Math.random() * 1000000) + 1); function getSelectedText() // JavaScript { // // Obtain the object reference for the