example keep margins

by ps7566

HTML

<canvas id="c"></canvas>

JavaScript

var canvas = new fabric.Canvas("c",{
	width: 600,
  height: 500
});
var a = new fabric.Rect({
  left: 70,
  top: 70,
  fill: 'blue',
  width: 100,
  height: 100,
  strokeWidth: 0
});
var b = new fabric.Rect({
	top: a.top + a.height/2,
  left: a.left + a.width/2,
	width: 80,
  height: 60,
  fill: 'black',
  strokeWidth: 0,
  originX: 'center',
  originY: 'center',
});
var g=new fabric.Group([a,b]);
canvas.on('object:scaling',(p)=>{
  var outer_obj = p.target.item(0);
  var inner_obj = p.target.item(1);
  var target_scale_x = p.target.scaleX;
  var target_scale_y = p.target.scaleY;
  var new_inner_scale_x = ((outer_obj.width * target_scale_x)-20)/inner_obj.width;
  var new_inner_scale_y = ((outer_obj.height * target_scale_y)-40)/inner_obj.height;
  inner_obj.width = p.target.width - 20;
  inner_obj.height = (outer_obj.height * target_scale_y) - 40;
});
g.noScaleCache = false;
canvas.add(g);