From 75a0e4509a70055851b085f3f7293ae1cf48164c Mon Sep 17 00:00:00 2001 From: Ruben Beltran del Rio Date: Sat, 6 Feb 2021 00:55:04 +0100 Subject: Fix performance and undo --- Map/Views/MapRender.swift | 20 ++++++++++++-------- 1 file changed, 12 insertions(+), 8 deletions(-) (limited to 'Map/Views/MapRender.swift') diff --git a/Map/Views/MapRender.swift b/Map/Views/MapRender.swift index 7623b61..aa97e22 100644 --- a/Map/Views/MapRender.swift +++ b/Map/Views/MapRender.swift @@ -14,8 +14,10 @@ struct MapRenderView: View { @Environment(\.colorScheme) var colorScheme - var content: String - let evolution: Stage + @Binding var content: String + @Binding var evolution: Stage + + @State var parsedMap: ParsedMap = ParsedMap.empty let mapSize = CGSize(width: 1300.0, height: 1000.0) @@ -23,10 +25,6 @@ struct MapRenderView: View { let vertexSize = CGSize(width: 25.0, height: 25.0) let padding = CGFloat(30.0) - var parsedMap: ParsedMap { - return Map.parse(content: content) - } - var body: some View { ZStack(alignment: .topLeading) { @@ -50,13 +48,19 @@ struct MapRenderView: View { }.frame( width: mapSize.width, height: mapSize.height + 2 * padding, alignment: .topLeading - ).padding(padding) + ).onAppear { + self.parsedMap = Map.parse(content: content) + }.padding(padding).onChange(of: content) { newState in + self.parsedMap = Map.parse(content: newState) + } } } struct MapRenderView_Previews: PreviewProvider { static var previews: some View { - MapRenderView(content: "", evolution: Stage.stages(.general)).environment( + MapRenderView( + content: Binding.constant(""), evolution: Binding.constant(Stage.stages(.general)) + ).environment( \.managedObjectContext, PersistenceController.preview.container.viewContext) } } -- cgit