1. Расширять динамически канвас (холст), когда объект перетаскивается за границы, но не давать объекту скрыться (расширять на величину не более 80% от ширины или высоты, например).
2. На канвас, сверху, наложить "ширму": слой c "прозрачностью" (pointer-events) для событий мыши (и с прямоугольником в центре - видимая рабочая область в канвасе):
pointer-events: none;
Тогда при выделении, того, что находится под слоем-"ширмой", видно не будет, но границы области выделения будут растягиваться (событие выделения объекта) за этим слоем-"ширмой". Т.е., будет работать так, будто всё видно.
Здесь все варианты pointer-events.