|
| 1 | +<script src="https://cdn.jsdelivr.net/gh/EpicAMPlifier/FantasyWordGenerator@latest/wordgen.js"></script> |
| 2 | +<style> |
| 3 | + .spinner{ |
| 4 | + border: 4px solid #f3f3f3; /* Light grey */ |
| 5 | + border-top: 4px solid #3498db; /* Blue */ |
| 6 | + border-radius: 50%; |
| 7 | + width: 30px; |
| 8 | + height: 30px; |
| 9 | + animation: spin 1s linear infinite; |
| 10 | + display: inline-block; |
| 11 | + margin-left: 0px; |
| 12 | + } |
| 13 | + |
| 14 | + @keyframes spin { |
| 15 | + 0% { transform: rotate(0deg); } |
| 16 | + 100% { transform: rotate(360deg); } |
| 17 | + } |
| 18 | + |
| 19 | + #wordDisplay{ |
| 20 | + white-space: pre-wrap; |
| 21 | + } |
| 22 | +</style> |
| 23 | + |
| 24 | +<h1>Fantasy Word Generator</h1> |
| 25 | +<label for="style-input-field">Word Style:</label> |
| 26 | +<input type="text" placeholder="Language Code" id="style-input-field"> |
| 27 | +<label for="number-input-field">Word Quantity</label> |
| 28 | +<input type="number" min="1" max="100" step="5" placeholder="1" id="number-input-field"> |
| 29 | +<button id="submitButton" onclick="getFormValues()">Generate</button> |
| 30 | +<br> |
| 31 | +<input type="checkbox" id="paraBox" onclick="toggleBoxes()">Paragraph Mode</input> |
| 32 | +<input type="checkbox" id="advBox" onclick="toggleBoxes()">Advanced Options</input> |
| 33 | +<br> |
| 34 | +<label id="advLabel" for="style-input-field" hidden>Article Title:</label> |
| 35 | +<input type="text" placeholder="Title" id="title-input-field" hidden> |
| 36 | +<br> |
| 37 | +<br> |
| 38 | +<hr> |
| 39 | +<h2>Generated Text:</h2> |
| 40 | +<div id="loadSpinner" class="spinner" style="display: none;"></div> |
| 41 | +<div id="wordDisplay">...</div> |
| 42 | +<script> |
| 43 | + const wordDisplayDiv = document.getElementById('wordDisplay'); |
| 44 | + const wordQInput = document.getElementById('number-input-field'); |
| 45 | + const wordLangInput = document.getElementById('style-input-field'); |
| 46 | + const advBox = document.getElementById('advBox'); |
| 47 | + const advField = document.getElementById('title-input-field'); |
| 48 | + const spinner = document.getElementById("loadSpinner"); |
| 49 | + let spacer = "\n"; |
| 50 | + let wordQ = 1; |
| 51 | + let langCode = 'en'; |
| 52 | + |
| 53 | + function getFormValues() { |
| 54 | + wordDisplayDiv.innerHTML = ''; |
| 55 | + wordQ = parseInt(wordQInput.value) || 1; |
| 56 | + langCode = wordLangInput.value; |
| 57 | + generateResultsHTML(); |
| 58 | + } |
| 59 | + |
| 60 | + async function createResult(title, lang) { |
| 61 | + spinner.style.display = "inline-block"; |
| 62 | + WordGen.letterLimit = 10; |
| 63 | + WordGen.sliceMax = 2000; |
| 64 | + const result = await WordGen.create(title, lang); |
| 65 | + |
| 66 | + wordDisplayDiv.innerHTML = ''; |
| 67 | + for (let i = 0; i < wordQ; i++) { |
| 68 | + let finalResult = result(); |
| 69 | + wordDisplayDiv.textContent += finalResult + spacer; |
| 70 | + spinner.style.display = "none"; |
| 71 | + } |
| 72 | + } |
| 73 | + |
| 74 | + function toggleBoxes() { |
| 75 | + const advIsChecked = document.getElementById('advBox').checked; |
| 76 | + document.getElementById('title-input-field').hidden = !advIsChecked; |
| 77 | + document.getElementById('advLabel').hidden = !advIsChecked; |
| 78 | + |
| 79 | + const paraIsChecked = document.getElementById('paraBox').checked; |
| 80 | + spacer = paraIsChecked ? " " : "\n"; |
| 81 | + } |
| 82 | + |
| 83 | + function generateResultsHTML() { |
| 84 | + let title = 'Hotel'; |
| 85 | + |
| 86 | + if (advBox.checked && advField.value) { |
| 87 | + title = advField.value; |
| 88 | + } |
| 89 | + createResult(title, langCode); |
| 90 | + } |
| 91 | +</script> |
0 commit comments