Enable image pasting from clipboard in Poe

Simulate drag and drop when pasting an image from the clipboard

// ==UserScript==
// @name         Enable image pasting from clipboard in Poe
// @namespace    http://tampermonkey.net/
// @version      0.2
// @description  Simulate drag and drop when pasting an image from the clipboard
// @author       You
// @match        https://poe.com/*
// @grant        none
// @license MIT
// ==/UserScript==

(function() {
    'use strict';

    // Helper function to dispatch an event
    function dispatchEvent(type, target, dataTransfer) {
        const event = new Event(type, {
            bubbles: true,
            cancelable: true
        });

        // Set the dataTransfer property if available
        if (dataTransfer) {
            event.dataTransfer = dataTransfer;
        }

        // Dispatch the event on the target element
        target.dispatchEvent(event);
    }

    // Add event listener for paste events
    window.addEventListener('paste', (event) => {
        let items = (event.clipboardData || event.originalEvent.clipboardData).items;

        for (let index in items) {
            let item = items[index];
            if (item.kind === 'file') {
                let blob = item.getAsFile();
                let dataTransfer = new DataTransfer();
                dataTransfer.items.add(blob);

                // Identify the drop zone element. You need to adjust this selector for the webpage.
                let dropZone = document.querySelector("div[class*=ChatDragDropTarget_dropTarget]");

                // Simulate the drag and drop events
                dispatchEvent('dragenter', dropZone, dataTransfer);
                dispatchEvent('dragover', dropZone, dataTransfer);
                dispatchEvent('drop', dropZone, dataTransfer);

                // Prevent the default paste action
                event.preventDefault();
            }
        }
    });
})();