export function initSelectionListener(dotNetHelper, container) {
    if (!container) return;

    console.log("[SelectionHandler] Initializing...");

    const handleSelection = () => {
        const selection = window.getSelection();
        const text = selection.toString().trim();

        if (text.length > 3) {
            const range = selection.getRangeAt(0);
            
            // Look for the closest block-wrapper
            let node = range.commonAncestorContainer;
            if (node.nodeType !== 1) node = node.parentElement;

            const blockNode = node.closest('[id]');

                if (blockNode) {
                    const rect = range.getBoundingClientRect();

                    console.log("[SelectionHandler] Selection at screen coords:", rect.top, rect.left);

                    dotNetHelper.invokeMethodAsync('HandleTextSelected', 
                        text, 
                        blockNode.id, 
                        { 
                            Top: rect.top, 
                            Left: rect.left,
                            Width: rect.width
                        });
                }
        } else {
            dotNetHelper.invokeMethodAsync('HandleSelectionCleared');
        }
    };

    // Use multiple triggers for maximum reliability
    document.addEventListener('selectionchange', handleSelection);
    container.addEventListener('mouseup', () => setTimeout(handleSelection, 10));
}
