Problema con el objeto al restringirlo al límite del lienzo

Actualmente estoy ejecutando mi proyecto y en eso he usado fabric js para trabajar con canvas. En eso quiero que mi objeto de lienzo no salga del límite del lienzo.este codigo y funciona bien a menos y hasta que lo esté girando. pero cuando estoy girando el objeto, la parte superior izquierda de ese objeto se está obteniendo según la rotación y mi código no funciona bien. Quiero alguna solución que funcione en cualquier condición, pero mi objeto no debe salir del límite del lienzo. Gracias

var canvas=new fabric.Canvas('demo');
canvas.on('object:moving',function(e){
    if(e.target.getWidth()+e.target.left>canvas.width)
    {
        e.target.set('left',canvas.width-e.target.getWidth());
        e.target.setCoords();
        canvas.renderAll();
    }
    if(e.target.getHeight()+e.target.top>canvas.height)
    {
        e.target.set('top',canvas.height-e.target.getHeight());
        e.target.setCoords();
        canvas.renderAll();
    }
    if(e.target.top<0)
    {
        e.target.set('top',0);
        e.target.setCoords();
        canvas.renderAll();
    }
    if(e.target.left<0)
    {
        e.target.set('left',0);
        e.target.setCoords();
        canvas.renderAll();
    }
});
var text=new fabric.IText('Jayesh');
canvas.add(text);
<script src="http://fabricjs.com/lib/fabric.js"></script>
<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.10.1/jquery.min.js"></script>
<canvas id="demo" style="width:100px;height:100px;border: 1px solid black"></canvas>

Respuestas a la pregunta(1)

Su respuesta a la pregunta