Refactor PlotterRegion to use PlotterRegionState for managing its internal state