JSFiddle - React, Tailwind, and code Playground

HTML

<input type="button" onclick="alertSelection()" unselectable="on" value="Get selection">

<div id="main"> <div data-canvas-width="109.56800326538084" data-font-name="Times New Roman" style="font-size: 16px; font-family: sans-serif; left: 94.432px; top: 92.8px; transform: scale(0.954702, 1); transform-origin: 0% 0% 0px;" dir="ltr">Anthony ...</div>
<div data-canvas-width="4.0000001192092896" data-font-name="Times New Roman" style="font-size: 16px; font-family: sans-serif; left: 204.187px; top: 92.8px; transform: scale(0.898876, 1); transform-origin: 0% 0% 0px;" dir="ltr"> </div>
<div data-canvas-width="150.38400448179246" data-font-name="Times New Roman" style="font-size: 16px; font-family: sans-serif; left: 94.432px; top: 111.227px; transform: scale(0.884959, 1); transform-origin: 0% 0% 0px;" dir="ltr">12 rue ...</div>
<div data-canvas-width="4.0000001192092896" data-font-name="Times New Roman" style="font-size: 16px; font-family: sans-serif; left: 244.987px; top: 111.227px; transform: scale(0.898876, 1); transform-origin: 0% 0% 0px;" dir="ltr"> </div>
<div data-canvas-width="114.99200342702865" data-font-name="Times New Roman" style="font-size: 16px; font-family: sans-serif; left: 94.432px; top: 129.627px; transform: scale(0.903788, 1); transform-origin: 0% 0% 0px;" dir="ltr">59... </div>
<div data-canvas-width="4.0000001192092896" data-font-name="Times New Roman" style="font-size: 16px; font-family: sans-serif; left: 209.467px; top: 129.627px; transform: scale(0.898876, 1); transform-origin: 0% 0% 0px;" dir="ltr"> </div>
<div data-canvas-width="96.00000286102295" data-font-name="Times New Roman" style="font-size: 16px; font-family: sans-serif; left: 94.432px; top: 148.027px; transform: scale(0.898876, 1); transform-origin: 0% 0% 0px;" dir="ltr">03.28.00.00.00</div>
<div data-canvas-width="4.0000001192092896" data-font-name="Times New Roman" style="font-size: 16px; font-family: sans-serif; left: 190.427px; top: 148.027px; transform: scale(0.898876, 1);...

JavaScript

function getSelectionCharOffsetsWithin(element) {
    var start = 0, end = 0;
    var sel, range, priorRange;
    if (typeof window.getSelection != "undefined") {
        range = window.getSelection().getRangeAt(0);
        priorRange = range.cloneRange();
        priorRange.selectNodeContents(element);
        priorRange.setEnd(range.startContainer, range.startOffset);
        start = priorRange.toString().length;
        end = start + range.toString().length;
    } else if (typeof document.selection != "undefined" &&
            (sel = document.selection).type != "Control") {
        range = sel.createRange();
        priorRange = document.body.createTextRange();
        priorRange.moveToElementText(element);
        priorRange.setEndPoint("EndToStart", range);
        start = priorRange.text.length;
        end = start + range.text.length;
    }
    return {
        start: start,
        end: end
    };
}

function alertSelection() {
    var mainDiv = document.getElementById("main");
    var sel = getSelectionCharOffsetsWithin(mainDiv);
    alert(sel.start + ": " + sel.end);
}