|
class PromptGenerator { |
|
constructor() { |
|
this.currentPrompts = []; |
|
this.promptsDiv = document.querySelector("#prompts"); |
|
this.textArea = document.createElement("textarea"); |
|
this.portraitDiv = document.querySelector("#portraitDiv"); |
|
this.landscapesDiv = document.querySelector("#landscapesDiv"); |
|
this.randomDiv = document.querySelector("#randomDiv"); |
|
this.generatorOptionsButton = document.querySelector("#generatorOptionsButton"); |
|
this.generatorOptionsDiv = document.querySelector("#generatorOptionsDiv"); |
|
this.inputsDisclaimer = document.querySelector("#inputsDisclaimer"); |
|
this.charactersInputDiv = document.querySelector("#charactersInputDiv"); |
|
this.objectsInputDiv = document.querySelector("#objectsInputDiv"); |
|
this.shownOptions = 0; |
|
this.currentGenerator = "random"; |
|
this.currentCharacters = []; |
|
this.currentObjects = []; |
|
this.currentPlaces = []; |
|
this.currentArtists = []; |
|
this.currentStyles = []; |
|
this.currentColors = []; |
|
this.currentAdjectives = []; |
|
this.currentElements = []; |
|
this.currentImprovers = []; |
|
this.currentPrefixes = []; |
|
this.currentSuffixes = []; |
|
} |
|
|
|
generatePrompt() { |
|
|
|
const isPrefixePrompt = Math.random() < 0.25; |
|
|
|
|
|
const isSuffixPrompt = Math.random() < 0.1; |
|
|
|
|
|
const isPortraitPrompt = this.currentGenerator === "portrait"; |
|
|
|
|
|
const selectedPortraitShot = document.querySelector("#portraitShotSelect").value; |
|
|
|
|
|
const portraitShotOptions = ["Full-Length Shot", "American Shot", "Medium Shot", "Close-Up Shot", "Extreme Close-Up Shot"]; |
|
|
|
|
|
const randomizedPortraitShot = portraitShotOptions[Math.floor(Math.random() * portraitShotOptions.length)]; |
|
|
|
|
|
const isLandscapesPrompt = this.currentGenerator === "landscapes"; |
|
|
|
|
|
const selectedLandscapesShot = document.querySelector("#landscapesShotSelect").value; |
|
|
|
|
|
const landscapesShotOptions = ["Long Shot", "Medium Shot", "Close-Up Shot", "Extreme Close-Up Shot"]; |
|
|
|
|
|
const randomizedLandscapesShot = landscapesShotOptions[Math.floor(Math.random() * landscapesShotOptions.length)]; |
|
|
|
|
|
const isObjectsActive = document.querySelector("#objectsActive").checked; |
|
const isPlacesActive = document.querySelector("#placesActive").checked; |
|
const isArtistsActive = document.querySelector("#artistsActive").checked; |
|
const isStylesActive = document.querySelector("#stylesActive").checked; |
|
const isColorsActive = document.querySelector("#colorsActive").checked; |
|
const isAdjectivesActive = document.querySelector("#adjectivesActive").checked; |
|
const isElementsActive = document.querySelector("#elementsActive").checked; |
|
const isImproversActive = document.querySelector("#improversActive").checked; |
|
const isPrefixesActive = document.querySelector("#prefixesActive").checked; |
|
const isSuffixesActive = document.querySelector("#suffixesActive").checked; |
|
|
|
|
|
let prompt = ""; |
|
let mainSubject = ""; |
|
|
|
|
|
if (isLandscapesPrompt) { |
|
document.querySelector("#placesActive").classList.add("hidden"); |
|
} else { |
|
document.querySelector("#placesActive").classList.remove("hidden"); |
|
} |
|
|
|
|
|
let numArtists = Number(document.querySelector("#numArtists").value); |
|
let numStyles = Number(document.querySelector("#numStyles").value); |
|
|
|
|
|
let artistsPrompt = ""; |
|
let stylesPrompt = ""; |
|
|
|
|
|
for (let i = 0; i < numArtists; i++) { |
|
if (i < this.currentArtists.length) { |
|
artistsPrompt += `${this.randomElement(this.currentArtists.filter((artist) => !artistsPrompt.includes(artist)))}, `; |
|
} |
|
} |
|
artistsPrompt = artistsPrompt.slice(0, -2); |
|
|
|
for (let i = 0; i < numStyles; i++) { |
|
if (i < this.currentStyles.length) { |
|
stylesPrompt += `${this.randomElement(this.currentStyles.filter((style) => !stylesPrompt.includes(style)))}, `; |
|
} |
|
} |
|
stylesPrompt = stylesPrompt.slice(0, -2); |
|
|
|
if (isPortraitPrompt) { |
|
if (selectedPortraitShot !== "Random Shot") { |
|
|
|
prompt += selectedPortraitShot + " "; |
|
} else { |
|
|
|
prompt += Math.random() < 0.33 ? " " : `${randomizedPortraitShot} `; |
|
} |
|
} else if (isLandscapesPrompt) { |
|
if (selectedLandscapesShot !== "Random Shot") { |
|
|
|
prompt += selectedLandscapesShot + " "; |
|
} else { |
|
|
|
prompt += Math.random() < 0.33 ? " " : `${randomizedLandscapesShot} `; |
|
} |
|
} |
|
|
|
if (prompt.length > 1) { |
|
|
|
prompt += "of "; |
|
} |
|
|
|
if (!isLandscapesPrompt) { |
|
if ((isPrefixePrompt && isPrefixesActive) || this.currentPrefixes[0] !== prefixes[0]) { |
|
|
|
prompt += `${this.randomElement(this.currentPrefixes)} `; |
|
} |
|
|
|
if (isObjectsActive && Math.random() < 0.1 && this.currentCharacters[0] === characters[0]) { |
|
|
|
mainSubject = this.randomElement(this.currentObjects); |
|
prompt += `${mainSubject}`; |
|
} else { |
|
|
|
mainSubject = this.randomElement(this.currentCharacters); |
|
if (Math.random() < 0.25 || this.currentObjects[0] !== objects[0]) { |
|
if (isObjectsActive) { |
|
prompt += `${mainSubject} with ${this.randomElement(this.currentObjects)}`; |
|
} else { |
|
prompt += `${mainSubject}`; |
|
} |
|
} else { |
|
prompt += `${mainSubject}`; |
|
} |
|
} |
|
|
|
|
|
if (isElementsActive) { |
|
prompt += ` of ${this.randomElement(this.currentElements)}`; |
|
} |
|
|
|
if ((isSuffixPrompt && isSuffixesActive) || this.currentSuffixes[0] !== suffixes[0]) { |
|
|
|
prompt += ` ${this.randomElement(this.currentSuffixes)}`; |
|
} |
|
} |
|
|
|
|
|
if (isLandscapesPrompt) { |
|
prompt += `${this.randomElement(this.currentPlaces)}`; |
|
} else if (isPlacesActive) { |
|
prompt += `, ${this.randomElement(this.currentPlaces)}`; |
|
} |
|
|
|
|
|
if (isArtistsActive && isStylesActive) { |
|
prompt += `, ${stylesPrompt} in ${artistsPrompt} style`; |
|
} else if (isArtistsActive) { |
|
prompt += `, ${artistsPrompt} style`; |
|
} else if (isStylesActive) { |
|
prompt += `, ${stylesPrompt}`; |
|
} |
|
|
|
|
|
if (isAdjectivesActive) { |
|
const adjective1 = this.randomElement(this.currentAdjectives); |
|
prompt += `, ${adjective1}`; |
|
if (this.currentAdjectives.length > 1) { |
|
prompt += `, ${this.randomElement(this.currentAdjectives.filter((adjective) => adjective !== adjective1))}`; |
|
} |
|
} |
|
|
|
|
|
if (isImproversActive) { |
|
prompt += `, ${this.randomElement(this.currentImprovers)}`; |
|
} |
|
|
|
|
|
if (isColorsActive) { |
|
prompt += `, ${this.randomElement(this.currentColors)}`; |
|
} |
|
|
|
|
|
this.currentPrompts.push(prompt); |
|
} |
|
|
|
generatePrompts(num) { |
|
|
|
this.currentPrompts = []; |
|
this.promptsDiv.innerHTML = ""; |
|
|
|
|
|
this.replaceArraysWithUserInputs.bind(this); |
|
this.replaceArraysWithUserInputs(); |
|
|
|
|
|
for (let i = 0; i < num; i++) { |
|
this.generatePrompt(); |
|
} |
|
|
|
|
|
const tempDocumentFragment = document.createDocumentFragment(); |
|
for (let i = 0; i < this.currentPrompts.length; i++) { |
|
const newPromptLine = document.createElement("p"); |
|
newPromptLine.classList.add("py-3"); |
|
newPromptLine.textContent = `${this.currentPrompts[i]}`; |
|
tempDocumentFragment.appendChild(newPromptLine); |
|
} |
|
|
|
|
|
this.promptsDiv.appendChild(tempDocumentFragment); |
|
} |
|
|
|
showChosenGenerator() { |
|
|
|
this.portraitDiv.classList.add("hidden"); |
|
this.landscapesDiv.classList.add("hidden"); |
|
this.randomDiv.classList.add("hidden"); |
|
this.charactersInputDiv.classList.remove("hidden"); |
|
this.objectsInputDiv.classList.remove("hidden"); |
|
document.querySelector("#elementsInputDiv").classList.remove("hidden"); |
|
document.querySelector("#prefixesInputDiv").classList.remove("hidden"); |
|
document.querySelector("#suffixesInputDiv").classList.remove("hidden"); |
|
|
|
|
|
document.querySelector("#placesActive").classList.remove("hidden"); |
|
|
|
|
|
if (this.currentGenerator === "portrait") { |
|
this.portraitDiv.classList.remove("hidden"); |
|
} else if (this.currentGenerator === "landscapes") { |
|
this.landscapesDiv.classList.remove("hidden"); |
|
this.charactersInputDiv.classList.add("hidden"); |
|
this.objectsInputDiv.classList.add("hidden"); |
|
document.querySelector("#elementsInputDiv").classList.add("hidden"); |
|
document.querySelector("#prefixesInputDiv").classList.add("hidden"); |
|
document.querySelector("#suffixesInputDiv").classList.add("hidden"); |
|
document.querySelector("#placesActive").classList.add("hidden"); |
|
} else if (this.currentGenerator === "random") { |
|
this.randomDiv.classList.remove("hidden"); |
|
} |
|
} |
|
|
|
|
|
randomElement(array) { |
|
return array[Math.floor(Math.random() * array.length)]; |
|
} |
|
|
|
|
|
copyPromptsToClipboard(promptsArray) { |
|
this.textArea.textContent = promptsArray.join("\n"); |
|
navigator.clipboard.writeText(this.textArea.textContent); |
|
} |
|
|
|
|
|
checkUserArraysInputs(textArea) { |
|
return textArea.value !== ""; |
|
} |
|
|
|
|
|
replaceArraysWithUserInputs() { |
|
const charactersInput = document.querySelector("#charactersTextArea"); |
|
const objectsInput = document.querySelector("#objectsTextArea"); |
|
const placesInput = document.querySelector("#placesTextArea"); |
|
const artistsInput = document.querySelector("#artistsTextArea"); |
|
const stylesInput = document.querySelector("#stylesTextArea"); |
|
const colorsInput = document.querySelector("#colorsTextArea"); |
|
const adjectivesInput = document.querySelector("#adjectivesTextArea"); |
|
const elementsInput = document.querySelector("#elementsTextArea"); |
|
const improversInput = document.querySelector("#improversTextArea"); |
|
const prefixesInput = document.querySelector("#prefixesTextArea"); |
|
const suffixesInput = document.querySelector("#suffixesTextArea"); |
|
|
|
if (this.checkUserArraysInputs(charactersInput)) { |
|
this.currentCharacters = charactersInput.value.split(/\r?\n/); |
|
localStorage.setItem("characters", charactersInput.value); |
|
} else { |
|
this.currentCharacters = [...characters]; |
|
localStorage.setItem("characters", ""); |
|
} |
|
|
|
if (this.checkUserArraysInputs(objectsInput)) { |
|
this.currentObjects = objectsInput.value.split(/\r?\n/); |
|
localStorage.setItem("objects", objectsInput.value); |
|
} else { |
|
this.currentObjects = [...objects]; |
|
localStorage.setItem("objects", ""); |
|
} |
|
|
|
if (this.checkUserArraysInputs(placesInput)) { |
|
this.currentPlaces = placesInput.value.split(/\r?\n/); |
|
localStorage.setItem("places", placesInput.value); |
|
} else { |
|
this.currentPlaces = [...places]; |
|
localStorage.setItem("places", ""); |
|
} |
|
|
|
if (this.checkUserArraysInputs(artistsInput)) { |
|
this.currentArtists = artistsInput.value.split(/\r?\n/); |
|
localStorage.setItem("artists", artistsInput.value); |
|
} else { |
|
this.currentArtists = [...artists]; |
|
localStorage.setItem("artists", ""); |
|
} |
|
|
|
if (this.checkUserArraysInputs(stylesInput)) { |
|
this.currentStyles = stylesInput.value.split(/\r?\n/); |
|
localStorage.setItem("styles", stylesInput.value); |
|
} else { |
|
this.currentStyles = [...styles]; |
|
localStorage.setItem("styles", ""); |
|
} |
|
|
|
if (this.checkUserArraysInputs(colorsInput)) { |
|
this.currentColors = colorsInput.value.split(/\r?\n/); |
|
localStorage.setItem("colors", colorsInput.value); |
|
} else { |
|
this.currentColors = [...colors]; |
|
localStorage.setItem("colors", ""); |
|
} |
|
|
|
if (this.checkUserArraysInputs(adjectivesInput)) { |
|
this.currentAdjectives = adjectivesInput.value.split(/\r?\n/); |
|
localStorage.setItem("adjectives", adjectivesInput.value); |
|
} else { |
|
this.currentAdjectives = [...adjectives]; |
|
localStorage.setItem("adjectives", ""); |
|
} |
|
|
|
if (this.checkUserArraysInputs(elementsInput)) { |
|
this.currentElements = elementsInput.value.split(/\r?\n/); |
|
localStorage.setItem("elements", elementsInput.value); |
|
} else { |
|
this.currentElements = [...elements]; |
|
localStorage.setItem("elements", ""); |
|
} |
|
|
|
if (this.checkUserArraysInputs(improversInput)) { |
|
this.currentImprovers = improversInput.value.split(/\r?\n/); |
|
localStorage.setItem("improvers", improversInput.value); |
|
} else { |
|
this.currentImprovers = [...improvers]; |
|
localStorage.setItem("improvers", ""); |
|
} |
|
|
|
if (this.checkUserArraysInputs(prefixesInput)) { |
|
this.currentPrefixes = prefixesInput.value.split(/\r?\n/); |
|
localStorage.setItem("prefixes", prefixesInput.value); |
|
} else { |
|
this.currentPrefixes = [...prefixes]; |
|
localStorage.setItem("prefixes", ""); |
|
} |
|
|
|
if (this.checkUserArraysInputs(suffixesInput)) { |
|
this.currentSuffixes = suffixesInput.value.split(/\r?\n/); |
|
localStorage.setItem("suffixes", suffixesInput.value); |
|
} else { |
|
this.currentSuffixes = [...suffixes]; |
|
localStorage.setItem("suffixes", ""); |
|
} |
|
} |
|
|
|
|
|
addPreviousUserInputs() { |
|
const charactersInput = document.querySelector("#charactersTextArea"); |
|
const objectsInput = document.querySelector("#objectsTextArea"); |
|
const placesInput = document.querySelector("#placesTextArea"); |
|
const artistsInput = document.querySelector("#artistsTextArea"); |
|
const stylesInput = document.querySelector("#stylesTextArea"); |
|
const colorsInput = document.querySelector("#colorsTextArea"); |
|
const adjectivesInput = document.querySelector("#adjectivesTextArea"); |
|
const elementsInput = document.querySelector("#elementsTextArea"); |
|
const improversInput = document.querySelector("#improversTextArea"); |
|
const prefixesInput = document.querySelector("#prefixesTextArea"); |
|
const suffixesInput = document.querySelector("#suffixesTextArea"); |
|
|
|
charactersInput.value = localStorage.getItem("characters"); |
|
objectsInput.value = localStorage.getItem("objects"); |
|
placesInput.value = localStorage.getItem("places"); |
|
artistsInput.value = localStorage.getItem("artists"); |
|
stylesInput.value = localStorage.getItem("styles"); |
|
colorsInput.value = localStorage.getItem("colors"); |
|
adjectivesInput.value = localStorage.getItem("adjectives"); |
|
elementsInput.value = localStorage.getItem("elements"); |
|
improversInput.value = localStorage.getItem("improvers"); |
|
prefixesInput.value = localStorage.getItem("prefixes"); |
|
suffixesInput.value = localStorage.getItem("suffixes"); |
|
} |
|
|
|
|
|
resetUserInputs() { |
|
const charactersInput = document.querySelector("#charactersTextArea"); |
|
const objectsInput = document.querySelector("#objectsTextArea"); |
|
const placesInput = document.querySelector("#placesTextArea"); |
|
const artistsInput = document.querySelector("#artistsTextArea"); |
|
const stylesInput = document.querySelector("#stylesTextArea"); |
|
const colorsInput = document.querySelector("#colorsTextArea"); |
|
const adjectivesInput = document.querySelector("#adjectivesTextArea"); |
|
const elementsInput = document.querySelector("#elementsTextArea"); |
|
const improversInput = document.querySelector("#improversTextArea"); |
|
const prefixesInput = document.querySelector("#prefixesTextArea"); |
|
const suffixesInput = document.querySelector("#suffixesTextArea"); |
|
|
|
localStorage.setItem("characters", ""); |
|
localStorage.setItem("objects", ""); |
|
localStorage.setItem("places", ""); |
|
localStorage.setItem("artists", ""); |
|
localStorage.setItem("styles", ""); |
|
localStorage.setItem("colors", ""); |
|
localStorage.setItem("adjectives", ""); |
|
localStorage.setItem("elements", ""); |
|
localStorage.setItem("improvers", ""); |
|
localStorage.setItem("prefixes", ""); |
|
localStorage.setItem("suffixes", ""); |
|
|
|
charactersInput.value = localStorage.getItem("characters"); |
|
objectsInput.value = localStorage.getItem("objects"); |
|
placesInput.value = localStorage.getItem("places"); |
|
artistsInput.value = localStorage.getItem("artists"); |
|
stylesInput.value = localStorage.getItem("styles"); |
|
colorsInput.value = localStorage.getItem("colors"); |
|
adjectivesInput.value = localStorage.getItem("adjectives"); |
|
elementsInput.value = localStorage.getItem("elements"); |
|
improversInput.value = localStorage.getItem("improvers"); |
|
prefixesInput.value = localStorage.getItem("prefixes"); |
|
suffixesInput.value = localStorage.getItem("suffixes"); |
|
} |
|
} |
|
|
|
const promptGenerator = new PromptGenerator(); |
|
|
|
|
|
document.querySelector("#promptsCopyButton").addEventListener("click", (event) => { |
|
promptGenerator.copyPromptsToClipboard(promptGenerator.currentPrompts); |
|
}); |
|
|
|
|
|
document.querySelector("#generatePromptsButton").addEventListener("click", (event) => { |
|
const promptsNumber = document.querySelector("#promptsNumberInput").value; |
|
if (!isNaN(promptsNumber) && promptsNumber > 0 && promptsNumber <= 10000) { |
|
promptGenerator.generatePrompts(promptsNumber); |
|
} else { |
|
alert("Please enter a number of prompts to generate between 1 and 10000."); |
|
} |
|
}); |
|
|
|
|
|
let isMenuOpen = false; |
|
|
|
function mobileMenuClickHandling(event) { |
|
|
|
const hamburgerButton = document.getElementById("hamburgerButton"); |
|
const bgMobileMenu = document.getElementById("bgMobileMenu"); |
|
const menuList = document.getElementById("menuList"); |
|
|
|
const isClickOnButton = hamburgerButton.contains(event.target); |
|
|
|
if (isClickOnButton) { |
|
if (isMenuOpen) { |
|
menuList.classList.add("hidden"); |
|
bgMobileMenu.classList.add("hidden"); |
|
hamburgerButton.blur(); |
|
document.body.style.overflowY = "visible"; |
|
} else { |
|
menuList.classList.remove("hidden"); |
|
bgMobileMenu.classList.remove("hidden"); |
|
document.body.style.overflowY = "hidden"; |
|
} |
|
isMenuOpen = !isMenuOpen; |
|
} else if (menuList.contains(event.target)) { |
|
switchGenerator(); |
|
menuList.classList.add("hidden"); |
|
bgMobileMenu.classList.add("hidden"); |
|
isMenuOpen = false; |
|
document.body.style.overflowY = "visible"; |
|
} else { |
|
menuList.classList.add("hidden"); |
|
bgMobileMenu.classList.add("hidden"); |
|
isMenuOpen = false; |
|
document.body.style.overflowY = "visible"; |
|
} |
|
} |
|
|
|
function mobileMenuFocusBack(event) { |
|
if (isMenuOpen && !menuList.contains(event.target)) { |
|
event.stopImmediatePropagation(); |
|
hamburgerButton.focus(); |
|
} |
|
} |
|
|
|
|
|
document.addEventListener("click", mobileMenuClickHandling); |
|
|
|
|
|
document.addEventListener("focusin", mobileMenuFocusBack); |
|
|
|
|
|
function switchGenerator() { |
|
const isClickOnPortrait = event.target.classList.contains("portraitLink"); |
|
const isClickOnLandscapes = event.target.classList.contains("landscapesLink"); |
|
const isClickOnRandom = event.target.classList.contains("randomLink"); |
|
|
|
if (isClickOnPortrait) { |
|
promptGenerator.currentGenerator = "portrait"; |
|
} else if (isClickOnLandscapes) { |
|
promptGenerator.currentGenerator = "landscapes"; |
|
} else if (isClickOnRandom) { |
|
promptGenerator.currentGenerator = "random"; |
|
} |
|
|
|
promptGenerator.showChosenGenerator(); |
|
} |
|
|
|
|
|
document.querySelector("nav").addEventListener("click", switchGenerator); |
|
|
|
|
|
function showGeneratorOptions() { |
|
if (promptGenerator.shownOptions == 0) { |
|
promptGenerator.generatorOptionsButton.textContent = promptGenerator.generatorOptionsButton.textContent.replace("Show", "Hide"); |
|
promptGenerator.shownOptions++; |
|
} else { |
|
promptGenerator.generatorOptionsButton.textContent = promptGenerator.generatorOptionsButton.innerHTML.replace("Hide", "Show"); |
|
promptGenerator.shownOptions--; |
|
} |
|
promptGenerator.inputsDisclaimer.classList.toggle("hidden"); |
|
promptGenerator.generatorOptionsDiv.classList.toggle("hidden"); |
|
} |
|
|
|
|
|
document.querySelector("#generatorOptionsButton").addEventListener("click", showGeneratorOptions); |
|
|
|
|
|
document.querySelector("#resetInputsButton").addEventListener("click", promptGenerator.resetUserInputs); |
|
|
|
|
|
document.querySelector("#numArtists").addEventListener("change", () => { |
|
let numArtists = document.querySelector("#numArtists"); |
|
let v = Number(numArtists.value); |
|
if (v < 1) { |
|
numArtists.value = 1; |
|
} |
|
if (v > 5) { |
|
numArtists.value = 5; |
|
} |
|
}); |
|
|
|
|
|
document.querySelector("#numStyles").addEventListener("change", () => { |
|
let numStyles = document.querySelector("#numStyles"); |
|
let v = Number(numStyles.value); |
|
if (v < 1) { |
|
numStyles.value = 1; |
|
} |
|
if (v > 3) { |
|
numStyles.value = 3; |
|
} |
|
}); |
|
|
|
|
|
const characters = [ |
|
"Mermaid", |
|
"Fairy", |
|
"Wizard", |
|
"Warrior", |
|
"Vampire", |
|
"Dragon", |
|
"Goddess", |
|
"Cyborg", |
|
"Robot", |
|
"Angel", |
|
"Demon", |
|
"Alien", |
|
"Ghost", |
|
"Ninja", |
|
"Samurai", |
|
"Pirate", |
|
"Knight", |
|
"Bard", |
|
"Werewolf", |
|
"Zombie", |
|
"Giant", |
|
"Golem", |
|
"Sphinx", |
|
"Chimera", |
|
"Medusa", |
|
"Minotaur", |
|
"Harpy", |
|
"Kraken", |
|
"Cthulhu", |
|
"Gorgon", |
|
"Hydra", |
|
"Banshee", |
|
"Satyr", |
|
"Cyclops", |
|
"Dwarf", |
|
"Elf", |
|
"Centaur", |
|
"Manticore", |
|
"Frost Giant", |
|
"Sandworm", |
|
"Kelpie", |
|
"Thunderbird", |
|
"Leviathan", |
|
"Thundercats", |
|
"Gargantua", |
|
"Ogre", |
|
"Goblin", |
|
"Halfling", |
|
"Harlequin", |
|
"Jinn", |
|
"Kitsune", |
|
"Lich", |
|
"Mummy", |
|
"Naga", |
|
"Oni", |
|
"Pixie", |
|
"Siren", |
|
"Sylph", |
|
"Treant", |
|
"Unicorn", |
|
"Wendigo", |
|
"Wraith", |
|
"Xenomorph", |
|
"Yokai", |
|
"Zephyr", |
|
"Zombie Dragon", |
|
"Abomination", |
|
"Aasimar", |
|
"Arachne", |
|
"Cambion", |
|
"Cerberus", |
|
"Changeling", |
|
"Djinn", |
|
"Dryad", |
|
"Gargoyle", |
|
"Gnoll", |
|
"Grim Reaper", |
|
"Half-Demon", |
|
"Hobgoblin", |
|
"Ifrit", |
|
"Incubus", |
|
"Kappa", |
|
"Lizardfolk", |
|
"Mind Flayer", |
|
"Mongrelfolk", |
|
"Myconid", |
|
"Orc", |
|
"Sahuagin", |
|
"Shapeshifter", |
|
"Spectre", |
|
"Tengu", |
|
"Titan", |
|
"Witch", |
|
"Yeti", |
|
"Yuan-Ti", |
|
"Archer", |
|
"Barbarian", |
|
"Beastmaster", |
|
"Cleric", |
|
"Druid", |
|
"Enchanter", |
|
"Executioner", |
|
"Gladiator", |
|
"Gunslinger", |
|
"Healer", |
|
"Hunter", |
|
"Illusionist", |
|
"Infernal", |
|
"Inventor", |
|
"Jester", |
|
"Knight Errant", |
|
"Mage Hunter", |
|
"Marauder", |
|
"Necromancer", |
|
"Ninja Assassin", |
|
"Paladin", |
|
"Psionicist", |
|
"Ranger", |
|
"Rogue", |
|
"Runemaster", |
|
"Savage", |
|
"Scout", |
|
"Shaman", |
|
"Sniper", |
|
"Soldier", |
|
"Sorcerer", |
|
"Spellblade", |
|
"Spymaster", |
|
"Swashbuckler", |
|
"Templar", |
|
"Thief", |
|
"Time Traveler", |
|
"Tracker", |
|
"Trickster", |
|
"Vampire Hunter", |
|
"Warlock", |
|
"Warrior Monk", |
|
"Witch Doctor", |
|
"Wizard Hunter", |
|
"Zealot", |
|
"Arcanist", |
|
"Demon Hunter", |
|
"Dragon Slayer", |
|
"Elementalist", |
|
"Basilisk", |
|
"Cockatrice", |
|
"Cryptid", |
|
"Darkling", |
|
"Dracolich", |
|
"Elemental", |
|
"Enchantress", |
|
"Fenrir", |
|
"Gryphon", |
|
"Harpie", |
|
"Imp", |
|
"Jotun", |
|
"Lindworm", |
|
"Merfolk", |
|
"Nephilim", |
|
"Phoenix", |
|
"Roc", |
|
"Sasquatch", |
|
"Spriggan", |
|
"Troll", |
|
"Ursine", |
|
"Valkyrie", |
|
"Vargr", |
|
"Will-o'-the-wisp", |
|
"Wyvern", |
|
"Xorn", |
|
"Yeth Hound", |
|
"Zilant", |
|
"Ankheg", |
|
"Barghest", |
|
"Catoblepas", |
|
"Direwolf", |
|
"Empusa", |
|
"Frost Worm", |
|
"Giant Scorpion", |
|
"Homunculus", |
|
"Illithid", |
|
"Juggernaut", |
|
"Kobold", |
|
"Lamia", |
|
"Megafauna", |
|
"Nightmare", |
|
"Ophidian", |
|
"Peryton", |
|
"Quetzalcoatlus", |
|
"Rat King", |
|
"Salamander", |
|
"Alchemist", |
|
"Fire Elemental", |
|
"Water Elemental", |
|
"Earth Elemental", |
|
"Air Elemental", |
|
"Meteor Elemental", |
|
"Ice Elemental", |
|
"Light Elemental", |
|
"Shadow Elemental", |
|
"Astral Elemental", |
|
"Faun", |
|
"Moai", |
|
"Wight", |
|
"Bogeyman", |
|
"Revenant", |
|
"Selkie", |
|
"Pegasus", |
|
"Weretiger", |
|
"Werebear", |
|
"Seraphim", |
|
"Cherubim", |
|
"Hobbit", |
|
"Skinwalker", |
|
"Poltergeist", |
|
"Ghoul", |
|
"Fomorian", |
|
"Vodyanoi", |
|
"Kobaloi", |
|
"Graeae", |
|
"Erinyes", |
|
"Hippogriff", |
|
"Shade", |
|
"Kodama", |
|
"Strigoi", |
|
"Qilin", |
|
"Dullahan", |
|
"Headless Horseman", |
|
"Aswang", |
|
"Stymphalian Birds", |
|
"Tengu Warrior", |
|
"Koschei", |
|
"Nuckelavee", |
|
"Hellhound", |
|
"Simurgh", |
|
"Boogeyman", |
|
"Amphisbaena", |
|
"Amarok", |
|
"Tatzelwurm", |
|
"Kaiju", |
|
"Sea Serpent", |
|
"Raiju", |
|
"Wyrm", |
|
"Ooze", |
|
"Rakshasa", |
|
"Balrog", |
|
"Grotesque", |
|
"Warg", |
|
"Quasit", |
|
"Skull Knight", |
|
"Nephalem", |
|
"Archmage", |
|
"Astrophysicist", |
|
"Geomancer", |
|
"Lunar Deity", |
|
"Solar Deity", |
|
"Diviner", |
|
"Cartomancer", |
|
"Voodoo Priest", |
|
"Spiritualist", |
|
"Elemental Lord", |
|
"Shadowmancer", |
|
"Lunar Sorceress", |
|
"Wyrm Rider", |
|
"Geomancer", |
|
"Electromancer", |
|
"Quantum Mage", |
|
"Psychonaut", |
|
"Cosmonaut", |
|
"Seer", |
|
"Cosmic Serpent", |
|
"Galactic Entity", |
|
"Void Entity", |
|
"Astral Traveler", |
|
"Oracle", |
|
"Battle Mage", |
|
"Scholar", |
|
"High Priest", |
|
"Moon Priestess", |
|
"Sun Priest", |
|
"Seidr", |
|
"Feng Shui Master", |
|
"Metalbender", |
|
"Earthbender", |
|
"Firebender", |
|
"Waterbender", |
|
"Airbender", |
|
"Cosmic Bender", |
|
"Hexblade", |
|
"Shieldbearer", |
|
"Lorekeeper", |
|
"Peacekeeper", |
|
"Oathkeeper", |
|
"Master of Whispers", |
|
"Master of Arms", |
|
"Master of Beasts", |
|
"Master of Elements", |
|
"Death Knight", |
|
"Life Knight", |
|
"Chaos Knight", |
|
"Order Knight", |
|
"Cosmic Knight", |
|
"Temporal Knight", |
|
"Eldritch Knight", |
|
"Keyblade Master", |
|
"Astral Knight", |
|
"Lunar Knight", |
|
"Solar Knight", |
|
"Elemental Knight", |
|
"Undying", |
|
"Celestial", |
|
"Sea King", |
|
"Sky Queen", |
|
"Earth Mother", |
|
"Void Master", |
|
"Time Warden", |
|
"Cosmic Warden", |
|
"Lunar Warden", |
|
"Sun Warden", |
|
"Star Warden", |
|
"Shadow Warden", |
|
"Spirit Warden", |
|
"Ghost Pirate", |
|
"Sea Witch", |
|
"Lunar Witch", |
|
"Solar Witch", |
|
"Star Witch", |
|
"Wight King", |
|
"Oblivion Queen", |
|
"Astral Dragon", |
|
"Meteor Dragon", |
|
"Rainbow Dragon", |
|
"Stardust Dragon", |
|
"Lunar Phoenix", |
|
"Solar Phoenix", |
|
"Cosmic Phoenix", |
|
"Shadow Phoenix", |
|
"Flame Phoenix", |
|
"Ocean Phoenix", |
|
"Mystic Archer", |
|
"Time Archer", |
|
"Astral Archer", |
|
"Rocket Archer", |
|
"Void Archer", |
|
"Shadow Archer", |
|
"Spectral Archer", |
|
"Battle Seer", |
|
"Wind Dancer", |
|
"Shadow Dancer", |
|
"Star Dancer", |
|
"Spirit Dancer", |
|
"Oath Dancer", |
|
"Cosmic Dancer", |
|
"Chaos Dancer", |
|
"Order Dancer", |
|
"Sky Dancer", |
|
"Earth Dancer", |
|
"Flame Dancer", |
|
"Mystic Dancer", |
|
"Jungle Shaman", |
|
"Desert Shaman", |
|
"Mountain Shaman", |
|
"Island Shaman", |
|
"Sky Shaman", |
|
"Battle Shaman", |
|
"Shadow Shaman", |
|
"Star Shaman", |
|
"Chaos Shaman", |
|
"Order Shaman", |
|
"Master Chief", |
|
"Solid Snake", |
|
"Kratos", |
|
"Geralt of Rivia", |
|
"Cloud Strife", |
|
"Aloy", |
|
"Lara Croft", |
|
"Link", |
|
"Sonic", |
|
"Mario", |
|
"Zelda", |
|
"Samus Aran", |
|
"Sephiroth", |
|
"Arthur Morgan", |
|
"Niko Bellic", |
|
"Marcus Fenix", |
|
"Jill Valentine", |
|
"Sub-Zero", |
|
"Scorpion", |
|
"Goku", |
|
"Naruto", |
|
"Saitama", |
|
"Spike Spiegel", |
|
"Inuyasha", |
|
"Edward Elric", |
|
"Astolfo", |
|
"Alucard", |
|
"Light Yagami", |
|
"Asuka Langley", |
|
"Totoro", |
|
"Kenshin Himura", |
|
"Frodo Baggins", |
|
"Harry Potter", |
|
"Aragorn", |
|
"Gandalf", |
|
"Jon Snow", |
|
"Daenerys Targaryen", |
|
"Voldemort", |
|
"Lara Croft", |
|
"Samus Aran", |
|
"Aloy", |
|
"Jill Valentine", |
|
"Sailor Moon", |
|
"Homura Akemi", |
|
"Saber", |
|
"Mikasa Ackerman", |
|
"Asuka Langley Soryu", |
|
"Rem", |
|
"Nami", |
|
"Bulma", |
|
"Hermione Granger", |
|
"Galadriel", |
|
"Éowyn", |
|
"Daenerys Targaryen", |
|
"Arya Stark", |
|
"Leia Organa", |
|
"Ripley", |
|
"Wonder Woman", |
|
]; |
|
|
|
const objects = [ |
|
"Sword", |
|
"Amulet", |
|
"Crystal", |
|
"Potion", |
|
"Book", |
|
"Staff", |
|
"Wand", |
|
"Ring", |
|
"Armor", |
|
"Helm", |
|
"Goblet", |
|
"Chalice", |
|
"Crown", |
|
"Scepter", |
|
"Medallion", |
|
"Orb", |
|
"Talisman", |
|
"Relic", |
|
"Binoculars", |
|
"Spear", |
|
"Dagger", |
|
"Bow and Arrow", |
|
"Shield", |
|
"Mace", |
|
"Hammer", |
|
"Axe", |
|
"Crossbow", |
|
"Whip", |
|
"Bolas", |
|
"Poison", |
|
"Chainsaw", |
|
"Katana", |
|
"Glaive", |
|
"Shuriken", |
|
"Sniper", |
|
"Gun", |
|
"T-shirt", |
|
"Shirt", |
|
"Skirt", |
|
"Sneakers", |
|
"Jeans", |
|
"Sunglasses", |
|
"Baseball Cap", |
|
"Boots", |
|
"High Heels", |
|
"Excalibur", |
|
"Mjölnir", |
|
"Lightsaber", |
|
"Cape", |
|
"Leather Jacket", |
|
"Dragonscale Armor", |
|
"Refined Armor", |
|
"Heavy Armor", |
|
"Light Armor", |
|
"Laptop", |
|
"Smartphone", |
|
"Tablet", |
|
"Camera", |
|
"Chains", |
|
"Rope", |
|
"Breastplate", |
|
"Gauntlets", |
|
"Shin Guards", |
|
"Cuirass", |
|
"Gorget", |
|
"Pauldrons", |
|
"Vambraces", |
|
"Greaves", |
|
"Beanie", |
|
"Bucket Hat", |
|
"Beret", |
|
"Cloak", |
|
"Sarong", |
|
"Kilt", |
|
"Chaps", |
|
"Quiver", |
|
"Holster", |
|
"Backpack", |
|
"Bracelet", |
|
"Choker", |
|
"Pendant", |
|
"Kimono", |
|
"Toga", |
|
"Fedora", |
|
"Tutu", |
|
"Turban", |
|
"Fanny Pack", |
|
"Combat Boots", |
|
"Aviator Glasses", |
|
]; |
|
|
|
const places = [ |
|
"Underwater City", |
|
"Sky Castle", |
|
"Forest Temple", |
|
"Haunted Mansion", |
|
"Crystal Cavern", |
|
"Ice Fortress", |
|
"Volcano Lair", |
|
"Cyber City", |
|
"Steam Punk Metropolis", |
|
"Enchanted Garden", |
|
"Dark Dimension", |
|
"Celestial Palace", |
|
"Underground Tunnels", |
|
"Frozen Wasteland", |
|
"Desert Oasis", |
|
"Jungle Ruins", |
|
"Floating Island", |
|
"Time Warp", |
|
"Alien Planet", |
|
"Deep Space Station", |
|
"Magical Academy", |
|
"Futuristic Laboratory", |
|
"Ancient Library", |
|
"Artificial Intelligence Network", |
|
"Giant's Lair", |
|
"Chaos Realm", |
|
"Fairy Tale Castle", |
|
"Post-Apocalyptic City", |
|
"Interdimensional Nexus", |
|
"Dreamscape", |
|
"Abandoned Asylum", |
|
"Sunken Ship", |
|
"Forbidden Temple", |
|
"Lost City", |
|
"Parallel Universe", |
|
"Mystic Marsh", |
|
"Parallel World", |
|
"Underground Kingdom", |
|
"Dark Forest", |
|
"Crystal Palace", |
|
"Cursed Island", |
|
"Rainbow Valley", |
|
"Fire Mountain", |
|
"Hidden Cave", |
|
"Sky Kingdom", |
|
"Savage Wilds", |
|
"Mystical Mountain", |
|
"Ancient Pyramid", |
|
"Tropical Beach", |
|
"Elemental Plane", |
|
"Outer Space Colony", |
|
"Underground Bunker", |
|
"Lunar Base", |
|
"Forgotten Citadel", |
|
"Ancient Catacombs", |
|
"Holographic Theme Park", |
|
"Crystal Lake", |
|
"Floating Market", |
|
"Underground Volcano", |
|
"Abandoned Space Station", |
|
"Surreal Landscape", |
|
"Crystal Tower", |
|
"Mystical Island", |
|
"Mysterious Labyrinth", |
|
"Jungle Canopy", |
|
"Enchanted Marketplace", |
|
"Sunken Cityscape", |
|
"Haunted Forest", |
|
"Space Elevator", |
|
"Crystal Lagoon", |
|
"Magma Chamber", |
|
"Thundering Waterfall", |
|
"Ethereal Valley", |
|
"Abandoned Subway System", |
|
"Mirrored City", |
|
"Ancient Citadel", |
|
"Frozen Tundra", |
|
"Haunted Amusement Park", |
|
"Sunken Ruins", |
|
"Enchanted Castle", |
|
"Sandswept Canyon", |
|
"Orbital Station", |
|
"Lost Wilderness", |
|
"Aurora Borealis", |
|
"Giant Redwood Forest", |
|
"Futuristic Casino", |
|
"Mythical Underworld", |
|
"Infinite Desert", |
|
"Mystical Labyrinth", |
|
"Galactic Gateway", |
|
"Submerged Cavern", |
|
"Eternal Ice Fields", |
|
"Dark Matter Realm", |
|
"Holographic City", |
|
"Celestial Observatory", |
|
"Nebula Cluster", |
|
"Glacier National Park", |
|
"Undiscovered Island", |
|
"Underground Laboratory", |
|
"Retro Arcade", |
|
"Crystal Gardens", |
|
"Chromatic Coastline", |
|
"Iridescent Reef", |
|
"Lunar Colony", |
|
"Rainforest Canopy", |
|
"Hyperborean Forest", |
|
"Tesseract Station", |
|
"Magnetic Caves", |
|
"Abyssal Trench", |
|
"Interstellar Hub", |
|
"Exoplanet Outpost", |
|
"Emerald Canyon", |
|
"Spectral Sands", |
|
"Lost Oasis", |
|
"Nebula Nebula", |
|
"Astral Nexus", |
|
"Radiant Cityscape", |
|
"Euphoric Eden", |
|
"Pixelated Wonderland", |
|
"Clockwork Metropolis", |
|
"Ethereal Plane", |
|
"Neo-Tokyo Megapolis", |
|
"Doomsday New York", |
|
"Osaka", |
|
"Futuristic New York", |
|
"Gothic Paris", |
|
"Cybernetic London", |
|
"Spectral Rome", |
|
"Mythical Cairo", |
|
"Enchanted Sydney", |
|
"Steampunk San Francisco", |
|
"Eerie New Orleans", |
|
"Epic Berlin", |
|
"Venice of Dreams", |
|
"Steampunk London", |
|
"Retrofuturistic Moscow", |
|
"Ruins of Rome", |
|
"Shanghai Skybridge", |
|
"Cybernetic Arena", |
|
"Witch's Cottage", |
|
"Infinite Jungle", |
|
"Robot Zoo", |
|
"Elven Treehouse", |
|
"Desert Mirage", |
|
"Virtual Reality Playground", |
|
"Crystalized Cave", |
|
"Dragon's Den", |
|
"Sacred Waterfall", |
|
"Dimensional Library", |
|
"Moonlit Orchard", |
|
"Alchemist's Tower", |
|
"Haunted Graveyard", |
|
"Oceanic Abyss", |
|
"Temporal Café", |
|
"Lost Atlantis", |
|
"Vampire Castle", |
|
"Invisible Maze", |
|
"Cherry Blossom Temple", |
|
"Digital Utopia", |
|
"Celestial Zoo", |
|
"Pirate Cove", |
|
"Forest of Echoes", |
|
"Mars Colony", |
|
"Alien Zoo", |
|
"Petrified Forest", |
|
"Goblin Market", |
|
"Cursed Zoo", |
|
"Eldritch Library", |
|
"Heavenly Observatory", |
|
"Magic School", |
|
"Undying Desert", |
|
"Temporal Rift", |
|
"Robot Factory", |
|
"Spacecraft Graveyard", |
|
"Arctic Wilderness", |
|
"Lush Savannah", |
|
"Carnival of Nightmares", |
|
"Starlit Beach", |
|
]; |
|
|
|
const elements = [ |
|
"Fire", |
|
"Water", |
|
"Air", |
|
"Earth", |
|
"Lightning", |
|
"Ice", |
|
"Nature", |
|
"Darkness", |
|
"Light", |
|
"Metal", |
|
"Shadow", |
|
"Blood", |
|
"Lava", |
|
"Crystal", |
|
"Poison", |
|
"Time", |
|
"Space", |
|
"Gravity", |
|
"Sound", |
|
"Electricity", |
|
"Plasma", |
|
"Radiation", |
|
"Magma", |
|
"Smoke", |
|
"Steam", |
|
"Void", |
|
"Wind", |
|
"Plantlife", |
|
"Moon", |
|
"Sun", |
|
"Stars", |
|
"Sand", |
|
"Ash", |
|
"Quicksand", |
|
"Frost", |
|
"Acid", |
|
"Thunder", |
|
"Psychic Energy", |
|
"Dimensional Rift", |
|
"Cosmic Dust", |
|
"Spirit", |
|
"Gravity Waves", |
|
"Invisibility", |
|
"Psychokinesis", |
|
"Luminosity", |
|
"Chaos", |
|
"Magnetism", |
|
"Antimatter", |
|
"Pulse", |
|
"Gravity Flux", |
|
"Echolocation", |
|
"Photosynthesis", |
|
"Radiance", |
|
"Oblivion", |
|
"Memory", |
|
"Gravity Well", |
|
"Nanobots", |
|
"Nuclear Energy", |
|
"Psionics", |
|
"Phase Shift", |
|
]; |
|
|
|
const adjectives = [ |
|
"Ethereal", |
|
"Whimsical", |
|
"Mysterious", |
|
"Eerie", |
|
"Futuristic", |
|
"Gothic", |
|
"Serene", |
|
"Enigmatic", |
|
"Otherworldly", |
|
"Surreal", |
|
"Mythical", |
|
"Transcendent", |
|
"Celestial", |
|
"Nostalgic", |
|
"Hypnotic", |
|
"Cinematic", |
|
"Awe-Inspiring", |
|
"Epic", |
|
"Radiant", |
|
"Ornate", |
|
"Holographic", |
|
"Prismatic", |
|
"Intricate", |
|
"Majestic", |
|
"Harmonious", |
|
"Opulent", |
|
"Spectral", |
|
"Dramatic", |
|
"Glimmering", |
|
"Dreamlike", |
|
"Hyperrealistic", |
|
"Melancholic", |
|
"Psychedelic", |
|
"Retro-Futuristic", |
|
"Post-Apocalyptic", |
|
"Neon", |
|
"Saturated", |
|
"Sculptural", |
|
"Minimalist", |
|
"Abstract", |
|
"Vibrant", |
|
"Cosmic", |
|
"Organic", |
|
"Luminous", |
|
"Tranquil", |
|
"Whirlwind", |
|
"Hazy", |
|
"Fragile", |
|
"Crisp", |
|
"Dynamic", |
|
"Galactic", |
|
"Flamboyant", |
|
"Shimmering", |
|
"Misty", |
|
"Idyllic", |
|
"Nebulous", |
|
"Rustic", |
|
"Fleeting", |
|
"Nimble", |
|
"Spirited", |
|
"Geometric", |
|
"Polygonal", |
|
"Golden Hour", |
|
"Underwater", |
|
"Pokémon", |
|
]; |
|
|
|
const styles = [ |
|
"Digital Art", |
|
"Surrealism", |
|
"Concept Art", |
|
"Illustration", |
|
"Character Design", |
|
"Anime", |
|
"Realism", |
|
"Impressionism", |
|
"Pop Art", |
|
"Steampunk", |
|
"Pixel Art", |
|
"Graffiti Art", |
|
"Fantasy Art", |
|
"Futurism", |
|
"Art Deco", |
|
"Minimalism", |
|
"Street Art", |
|
"Hyperrealism", |
|
"Glitch Art", |
|
"Photorealism", |
|
"Calligraphy", |
|
"Ink", |
|
"Woodcut Print", |
|
"Manga", |
|
"Sketch", |
|
"Drawing", |
|
"Doodle", |
|
"Dot Art", |
|
"Stipple", |
|
"Anatomical Drawing", |
|
"Visual Novel", |
|
"Graphic Novel", |
|
"Hand-Drawn", |
|
"Graphite", |
|
"Colored Pencil", |
|
"Pastel Art", |
|
"Blackboard", |
|
"Splatter Paint", |
|
"Paper-Marbling", |
|
"Logo", |
|
"Comic Book", |
|
"Poster", |
|
"Kirigami", |
|
"Origami", |
|
"Frame", |
|
"Wall Decal", |
|
"Banner", |
|
"Papercutting", |
|
"Ice Carving", |
|
"Linocut", |
|
"Wood-Carving", |
|
"Light Art", |
|
"Bokeh", |
|
"Wildlife Photography", |
|
"Portrait", |
|
"Microscopic", |
|
"Ultra-Wide Angle", |
|
"Depth of Field", |
|
"Closeup", |
|
"Blur Effect", |
|
"Lens Flare", |
|
"Punk", |
|
]; |
|
|
|
const colors = [ |
|
"Warm Color Palette", |
|
"Colorful", |
|
"Rainbow", |
|
"Spectral Color", |
|
"Inverted Colors", |
|
"Neon", |
|
"Electric Colors", |
|
"Complimentary-Colors", |
|
"Dark Mode", |
|
"Triadic-Colors", |
|
"Polychromatic Colors", |
|
"Tones of Black", |
|
"Black and White", |
|
"Monochrome", |
|
"Sepia", |
|
"High Contrast", |
|
"Low Contrast", |
|
"Technicolor", |
|
"Atari Graphics", |
|
"Adobe RGB", |
|
"Hexadecimal", |
|
"Vintage", |
|
"Pastel Palette", |
|
"Metallic Colors", |
|
"Fire Tones", |
|
"Shades of Gray", |
|
"Pop Art Colors", |
|
"Night Colors", |
|
"Cool Tones", |
|
"Warm Tones", |
|
"Red Monochrome", |
|
"Green Monochrome", |
|
"Blue Monochrome", |
|
"Yellow Monochrome", |
|
"Purple Monochrome", |
|
]; |
|
|
|
const artists = [ |
|
"Alan Lee", |
|
"Cyril Rolando", |
|
"David Mack", |
|
"Donato Giancola", |
|
"Greg Rutkowski", |
|
"Ismail Inceoglu", |
|
"John Berkey", |
|
"Michael Garmash", |
|
"Peter Mohrbacher", |
|
"Sparth", |
|
"Vincent Di Fate", |
|
"Akihiko Yoshida", |
|
"Artgerm", |
|
"Charlie Bowater", |
|
"Frank Frazetta", |
|
"Hsiao-Ron Cheng", |
|
"Ilya Kuvshinov", |
|
"Joshua Middleton", |
|
"Krenz Cushart", |
|
"Lois Van Baarle", |
|
"Makoto Shinkai", |
|
"Rossdraws", |
|
"Wenjun Lin", |
|
"Anna Dittmann", |
|
"Agnes Cecile", |
|
"Alphonse Mucha", |
|
"Audrey Kawasaki", |
|
"Boris Vallejo", |
|
"Carne Griffiths", |
|
"Conrad Roset", |
|
"JC Leyendecker", |
|
"Joseph Lorusso", |
|
"Jovana Rikalo", |
|
"Karol Bak", |
|
"Marco Mazzoni", |
|
"Miho Hirano", |
|
"Rebeca Saray", |
|
"Robert McGinnis", |
|
"Russ Mills", |
|
"Tom Bagshaw", |
|
"Tristan Eaton", |
|
"Ed Mell", |
|
"Jessica Rossier", |
|
"Hubert Robert", |
|
"Ian McQue", |
|
"Marc Simonetti", |
|
"Raphael Lacoste", |
|
"Bernie Wrightson", |
|
"H.R. Giger", |
|
"Richard Corben", |
|
"Wayne Barlowe", |
|
"Zdzislaw Beksinski", |
|
"Hokusai Katsushika", |
|
"Akira Toriyama", |
|
"Eiichiro Oda", |
|
"Masashi Kishimoto", |
|
"Osamu Tezuka", |
|
"Vincent van Gogh", |
|
"Leonardo da Vinci", |
|
"Frida Kahlo", |
|
"Pablo Picasso", |
|
"Georgia O'Keeffe", |
|
"Ansel Adams", |
|
"Dorothea Lange", |
|
"Robert Capa", |
|
"Cindy Sherman", |
|
"Henri Cartier-Bresson", |
|
"Michelangelo", |
|
"Auguste Rodin", |
|
"Louise Bourgeois", |
|
"Donatello", |
|
"Constantin Brâncuși", |
|
"Milton Glaser", |
|
"Paul Rand", |
|
"Jessica Walsh", |
|
"Shepard Fairey", |
|
"Mary Blair", |
|
"Charles Schulz", |
|
"Bill Watterson", |
|
"Jack Kirby", |
|
"Stan Lee", |
|
"R. Crumb", |
|
"Banksy", |
|
"JR", |
|
"Shepard Fairey", |
|
"Kobra", |
|
"Obey", |
|
"Rembrandt van Rijn", |
|
"Claude Monet", |
|
"Edvard Munch", |
|
"Caravaggio", |
|
"Johannes Vermeer", |
|
"Salvador Dalí", |
|
"John Singer Sargent", |
|
"Egon Schiele", |
|
"Marc Chagall", |
|
"Henri Matisse", |
|
"Edgar Degas", |
|
"Jackson Pollock", |
|
"Wassily Kandinsky", |
|
"Édouard Manet", |
|
"Diego Rivera", |
|
"Giotto di Bondone", |
|
"Amedeo Modigliani", |
|
"Toulouse-Lautrec", |
|
"Piet Mondrian", |
|
"Francisco Goya", |
|
"Hayao Miyazaki", |
|
"Genndy Tartakovsky", |
|
"Naoko Takeuchi", |
|
"Hiromu Arakawa", |
|
"Bruce Timm", |
|
"Makoto Shinkai", |
|
"Rebecca Sugar", |
|
"Alex Hirsch", |
|
"Pendleton Ward", |
|
"Bryan Konietzko and Michael Dante DiMartino", |
|
"Junji Ito", |
|
"Yoshitaka Amano", |
|
"Rumiko Takahashi", |
|
"Mamoru Hosoda", |
|
"Craig McCracken", |
|
"Glen Keane", |
|
"Tite Kubo", |
|
"Hirohiko Araki", |
|
"Nick Park", |
|
"Tetsuya Nomura", |
|
"Annie Leibovitz", |
|
"Steve McCurry", |
|
"Yousuf Karsh", |
|
"Diane Arbus", |
|
"Vivian Maier", |
|
"Richard Avedon", |
|
"Sebastião Salgado", |
|
"Irving Penn", |
|
"Robert Frank", |
|
"Gordon Parks", |
|
"Studio Ghibli", |
|
"Madhouse", |
|
"Pixar Animation Studios", |
|
"Toei Animation", |
|
"Rooster Teeth", |
|
"Ankama Studio", |
|
"Ankama Games", |
|
]; |
|
|
|
const prefixes = [ |
|
"Zombie", |
|
"Superhero", |
|
"Robot", |
|
"Pirate", |
|
"Alien", |
|
"Wizard", |
|
"Vampire", |
|
"Werewolf", |
|
"Ninja", |
|
"Dragon", |
|
"Cyborg", |
|
"Time-traveler", |
|
"Space", |
|
"Giant", |
|
"Tiny", |
|
"Invisible", |
|
"Goblin", |
|
"Goddess", |
|
"Sorceress", |
|
"Witch", |
|
"Ghost", |
|
"Saiyan", |
|
"Astral", |
|
"Bionic", |
|
"Steampunk", |
|
"Chrono", |
|
"Quantum", |
|
"Cybernetic", |
|
"Galactic", |
|
"Arcane", |
|
"Mystic", |
|
"Eldritch", |
|
"Apocalyptic", |
|
"Elemental", |
|
"Divine", |
|
"Fallen", |
|
"Monstrous", |
|
"Mutated", |
|
"Psionic", |
|
"Supernatural", |
|
"Feral", |
|
"Aquatic", |
|
"Subterranean", |
|
"Celestial", |
|
"Phantasmal", |
|
"Revenant", |
|
"Living", |
|
"Sentient", |
|
"Spectral", |
|
"Mechanical", |
|
"Biological", |
|
"Mythic", |
|
"Fabled", |
|
"Demonic", |
|
"Shadow", |
|
"Lunar", |
|
"Solar", |
|
"Stellar", |
|
"Arctic", |
|
"Tropical", |
|
"Imperial", |
|
"Royal", |
|
"Majestic", |
|
"Temporal", |
|
"Dimensional", |
|
"Vigilante", |
|
"Cosmic", |
|
"Primordial", |
|
"Cursed", |
|
"Blessed", |
|
"Synthetic", |
|
"Aether", |
|
"Serpentine", |
|
"Nomadic", |
|
"Tribal", |
|
"High", |
|
"Low", |
|
"Cunning", |
|
"Ruthless", |
|
"Infernal", |
|
"Heavenly", |
|
"Abyssal", |
|
"Unholy", |
|
"Radiant", |
|
"Miraculous", |
|
"Noble", |
|
"Twisted", |
|
"Tormented", |
|
"Warped", |
|
"Grotesque", |
|
"Ascendant", |
|
"Dystopian", |
|
"Utopian", |
|
"Relentless", |
|
"Carnal", |
|
"Martial", |
|
"Aerial", |
|
"Aquamarine", |
|
"Ivory", |
|
"Amber", |
|
"Obsidian", |
|
"Coral", |
|
"Verdant", |
|
"Frigid", |
|
"Fiery", |
|
"Volcanic", |
|
"Magnetic", |
|
"Elastic", |
|
"Immortal", |
|
"Mortal", |
|
"Digital", |
|
"Equestrian", |
|
"Feathered", |
|
"Scaled", |
|
"Translucent", |
|
"Ornamental", |
|
"Alchemical", |
|
"Incorporeal", |
|
"Reclusive", |
|
"Avian", |
|
"Venomous", |
|
"Electric", |
|
]; |
|
|
|
const suffixes = [ |
|
"dancing", |
|
"flying", |
|
"running", |
|
"singing", |
|
"fighting", |
|
"swimming", |
|
"climbing", |
|
"jumping", |
|
"laughing", |
|
"crying", |
|
"shouting", |
|
"exploring", |
|
"sleeping", |
|
"eating", |
|
"walking", |
|
"sneaking", |
|
"teleporting", |
|
"summoning", |
|
"twirling", |
|
"mystifying", |
|
"illuminating", |
|
"contemplating", |
|
"enchanting", |
|
"whispering", |
|
"wandering", |
|
"daydreaming", |
|
"captivating", |
|
"vanishing", |
|
]; |
|
|
|
const improvers = [ |
|
"masterpiece, trending on artstation", |
|
"trending on deviantart", |
|
"award-winning", |
|
"masterpiece", |
|
"intricate and detailed", |
|
"hyper-realistic", |
|
"ethereal beauty", |
|
"surreal masterpiece", |
|
"jaw-dropping", |
|
"psychedelic", |
|
"colorful and vibrant", |
|
]; |
|
|
|
promptGenerator.addPreviousUserInputs(); |
|
|
|
|
|
promptGenerator.generatePrompts(10); |
|
|