Lute: Word Count

Add word count functionality to Lute's New Book page

// ==UserScript==
// @name         Lute: Word Count
// @version      20240825
// @description  Add word count functionality to Lute's New Book page
// @match        http://localhost:500*/book/new
// @grant        none
// @namespace https://greasyfork.org/users/242246
// ==/UserScript==

(function() {
    'use strict';

    const button = document.createElement('button');
    button.textContent = 'Count Words';
    button.style.marginTop = '5px';
    button.style.padding = "0.1em 0.2em";
    button.style.fontSize = '0.8em';
    button.type = 'button';

    const countDisplay = document.createElement('span');
    countDisplay.style.marginLeft = '5px';
    countDisplay.style.fontSize = '0.9em';

    function countWords(e) {
        e.preventDefault();
        const text = document.getElementById('text').value;
        const wordCount = text.trim().split(/\s+/).filter(word => word.length > 0).length;
        countDisplay.textContent = `${wordCount}`;
    }

    button.addEventListener('click', countWords);

    const textarea = document.getElementById('text');
    textarea.parentNode.insertBefore(button, textarea.nextSibling);
    button.parentNode.insertBefore(countDisplay, button.nextSibling);
})();