in src/canvastools/ts/CanvasTools/Region/RegionsManager.ts [788:827]
private onRegionChange(region: Region, regionData: RegionData, state: ChangeEventType,
multiSelection: boolean = false) {
// resize or drag begin
if (state === ChangeEventType.MOVEBEGIN) {
if (!multiSelection) {
this.unselectRegions(region);
}
this.menu.hide();
this.callbacks.onRegionSelected(region.ID, multiSelection);
this.callbacks.onRegionMoveBegin(region.ID, regionData);
this.justManipulated = false;
// resizing or dragging
} else if (state === ChangeEventType.MOVING) {
this.callbacks.onRegionMove(region.ID, regionData);
this.justManipulated = true;
// resize or drag end
} else if (state === ChangeEventType.MOVEEND) {
if (this.justManipulated) {
region.select();
this.menu.showOnRegion(region);
this.sortRegionsByArea();
}
this.callbacks.onRegionMoveEnd(region.ID, regionData);
} else if (state === ChangeEventType.SELECTIONTOGGLE && !this.justManipulated) {
// select
if (!region.isSelected) {
if (!multiSelection) {
this.unselectRegions(region);
}
region.select();
this.menu.showOnRegion(region);
this.callbacks.onRegionSelected(region.ID, multiSelection);
// unselect
} else {
region.unselect();
this.menu.hide();
this.callbacks.onRegionSelected("", multiSelection);
}
}
}