Haz un lienzo infinito

Actualmente estoy usando un lienzo en el que dibujé algunas áreas de interés. Consisten en cuadrados y se pueden mover con un clic del mouse (es decir: un área seleccionada se centrará en la posición de mi cursor cada vez que haga clic en el lienzo).

Mi problema actual es que me gustaría agregar la siguiente función: cuando hago clic cerca del borde del lienzo (ya sea izquierda o derecha),si una porción del cuadrado está fuera del lienzo, Quiero que esta parte fuera del lienzo aparezca en el edfe opuesto.

Ejemplo: si hago clic cerca del borde derecho del lienzo, la parte oculta debería aparecer a la izquierda.

Para ser honesto, no tengo idea de cómo hacer esto correctamente. Me parece que requiere una solución realmente pesada (con muchos bucles).

Tu ayuda sería muy apreciada.

Respuestas a la pregunta(1)

Su respuesta a la pregunta