SurferSEO Colon to Dash (Direct Formatting)

Formats selected text by replacing colons with dashes directly in place

// ==UserScript==
// @name         SurferSEO Colon to Dash (Direct Formatting)
// @namespace    http://tampermonkey.net/
// @version      1.0
// @description  Formats selected text by replacing colons with dashes directly in place
// @author       Your Name
// @match        https://app.surferseo.com/drafts/s/*
// @grant        none
// ==/UserScript==

(function () {
    'use strict';

    // Function to format and replace the selected text directly
    function formatSelectedText() {
        const selection = window.getSelection();
        if (selection.rangeCount > 0) {
            const range = selection.getRangeAt(0);
            const selectedText = range.toString();
            if (selectedText) {
                // Format the selected text
                const formattedText = selectedText
                    .split('\n')
                    .map(para => para.trim().replace(/:\s*/g, ' - ').replace(/\s*—\s*/g, ' — '))
                    .join('\n');

                // Replace the selected text in place
                range.deleteContents();
                range.insertNode(document.createTextNode(formattedText));

                showAlert('Text formatted successfully!');
            } else {
                showAlert('Please select text to format.');
            }
        }
    }

    // Function to show alert
    function showAlert(message) {
        const alertDiv = document.createElement('div');
        alertDiv.innerText = message;
        alertDiv.style.position = 'fixed';
        alertDiv.style.top = '5px';
        alertDiv.style.left = '60px';
        alertDiv.style.background = 'lightgreen';
        alertDiv.style.color = 'green';
        alertDiv.style.padding = '10px 20px';
        alertDiv.style.borderRadius = '5px';
        alertDiv.style.zIndex = 1000;
        alertDiv.style.transition = 'opacity 0.5s ease';

        document.body.appendChild(alertDiv);

        setTimeout(function () {
            alertDiv.style.opacity = '0';
            setTimeout(function () {
                document.body.removeChild(alertDiv);
            }, 500);
        }, 2000);
    }

    // Add button to trigger formatting
    if (window.location.href.startsWith('https://app.surferseo.com/drafts/s/')) {
        const button = document.createElement('button');
        button.innerText = 'Colon to Dash';
        button.style.position = 'fixed';
        button.style.top = '450px';
        button.style.left = '60px';
        button.style.height = '40px';
        button.style.width = '150px';
        button.style.background = 'Black';
        button.style.color = 'white';
        button.style.fontWeight = '600';
        button.style.zIndex = 1000;
        button.style.borderRadius = '8px';
        button.style.padding = '5px 10px';
        button.style.border = 'none';
        button.style.cursor = 'pointer';
        button.style.transition = 'background 0.3s ease, transform 0.3s ease';

        button.addEventListener('mouseover', function () {
            button.style.background = '#3CCF4E';
            button.style.transform = 'scale(1.05)';
        });

        button.addEventListener('mouseout', function () {
            button.style.background = 'Black';
            button.style.transform = 'scale(1)';
        });

        button.addEventListener('click', formatSelectedText);

        document.body.appendChild(button);
    }
})();