changeShape(id, options, isSilent) {
    const executeMethodName = isSilent ? 'executeSilent' : 'execute';

    return this[executeMethodName](commands.CHANGE_SHAPE, id, options);
  }
Change shape
@param {number} id - object id
@param {Object} options - Shape options
     @param {(ShapeFillOption | string)} [options.fill] - {@link ShapeFillOption} or
       Shape foreground color (ex: '#fff', 'transparent')
     @param {string} [options.stroke] - Shape outline color
     @param {number} [options.strokeWidth] - Shape outline width
     @param {number} [options.width] - Width value (When type option is 'rect', this options can use)
     @param {number} [options.height] - Height value (When type option is 'rect', this options can use)
     @param {number} [options.rx] - Radius x value (When type option is 'circle', this options can use)
     @param {number} [options.ry] - Radius y value (When type option is 'circle', this options can use)
     @param {boolean} [options.isRegular] - Whether resizing shape has 1:1 ratio or not
@param {boolean} isSilent - is silent execution or not
@returns {Promise}
@example
// call after selecting shape object on canvas
imageEditor.changeShape(id, { // change rectagle or triangle
    fill: 'red',
    stroke: 'blue',
    strokeWidth: 3,
    width: 100,
    height: 200
});
@example
// call after selecting shape object on canvas
imageEditor.changeShape(id, { // change circle
    fill: 'red',
    stroke: 'blue',
    strokeWidth: 3,
    rx: 10,
    ry: 100
});