gitextract_qg8mm2ot/ ├── .github/ │ └── workflows/ │ └── swift.yml ├── .gitignore ├── .spi.yml ├── .swift-format ├── Assets/ │ └── Grape.blend ├── DocPostprocess.swift ├── Examples/ │ ├── ForceDirectedGraph3D/ │ │ ├── ForceDirectedGraph3D/ │ │ │ ├── Assets.xcassets/ │ │ │ │ ├── AppIcon.solidimagestack/ │ │ │ │ │ ├── Back.solidimagestacklayer/ │ │ │ │ │ │ ├── Content.imageset/ │ │ │ │ │ │ │ └── Contents.json │ │ │ │ │ │ └── Contents.json │ │ │ │ │ ├── Contents.json │ │ │ │ │ ├── Front.solidimagestacklayer/ │ │ │ │ │ │ ├── Content.imageset/ │ │ │ │ │ │ │ └── Contents.json │ │ │ │ │ │ └── Contents.json │ │ │ │ │ └── Middle.solidimagestacklayer/ │ │ │ │ │ ├── Content.imageset/ │ │ │ │ │ │ └── Contents.json │ │ │ │ │ └── Contents.json │ │ │ │ └── Contents.json │ │ │ ├── ContentView.swift │ │ │ ├── Data.swift │ │ │ ├── ForceDirectedGraph3DApp.swift │ │ │ ├── Info.plist │ │ │ └── Preview Content/ │ │ │ └── Preview Assets.xcassets/ │ │ │ └── Contents.json │ │ ├── ForceDirectedGraph3D.xcodeproj/ │ │ │ ├── project.pbxproj │ │ │ └── project.xcworkspace/ │ │ │ ├── contents.xcworkspacedata │ │ │ └── xcshareddata/ │ │ │ └── IDEWorkspaceChecks.plist │ │ └── Packages/ │ │ └── RealityKitContent/ │ │ ├── .build/ │ │ │ └── workspace-state.json │ │ ├── Package.realitycomposerpro/ │ │ │ ├── ProjectData/ │ │ │ │ └── main.json │ │ │ └── WorkspaceData/ │ │ │ ├── SceneMetadataList.json │ │ │ └── Settings.rcprojectdata │ │ ├── Package.swift │ │ ├── README.md │ │ └── Sources/ │ │ └── RealityKitContent/ │ │ ├── RealityKitContent.rkassets/ │ │ │ ├── Materials/ │ │ │ │ └── GridMaterial.usda │ │ │ └── Scene.usda │ │ └── RealityKitContent.swift │ └── ForceDirectedGraphExample/ │ ├── ForceDirectedGraphExample/ │ │ ├── Assets.xcassets/ │ │ │ ├── AccentColor.colorset/ │ │ │ │ └── Contents.json │ │ │ ├── AppIcon.appiconset/ │ │ │ │ └── Contents.json │ │ │ └── Contents.json │ │ ├── ContentView.swift │ │ ├── Data.swift │ │ ├── ForceDirectedGraphExample.entitlements │ │ ├── ForceDirectedGraphExampleApp.swift │ │ ├── GraphStateToolbar.swift │ │ ├── Lattice.swift │ │ ├── MermaidVisualization.swift │ │ ├── Miserables.swift │ │ ├── MyRing.swift │ │ └── Preview Content/ │ │ └── Preview Assets.xcassets/ │ │ └── Contents.json │ └── ForceDirectedGraphExample.xcodeproj/ │ ├── project.pbxproj │ ├── project.xcworkspace/ │ │ ├── contents.xcworkspacedata │ │ └── xcshareddata/ │ │ └── IDEWorkspaceChecks.plist │ └── xcshareddata/ │ └── xcschemes/ │ └── ForceDirectedGraphExample.xcscheme ├── LICENSE ├── Package.swift ├── README.md ├── Sources/ │ ├── ForceSimulation/ │ │ ├── ForceProtocol.swift │ │ ├── ForceSimulation.docc/ │ │ │ ├── CreatingASimulationWithBuiltinForces.md │ │ │ ├── Documentation.md │ │ │ └── theme-settings.json │ │ ├── Forces/ │ │ │ ├── CenterForce.swift │ │ │ ├── CollideForce.swift │ │ │ ├── CompositedForce.swift │ │ │ ├── EmptyForce.swift │ │ │ ├── KDTreeForce.swift │ │ │ ├── LinkForce.swift │ │ │ ├── ManyBodyForce.swift │ │ │ ├── PackedForce.swift │ │ │ ├── PositionForce.swift │ │ │ ├── RadialForce.swift │ │ │ ├── SealedForce2D.swift │ │ │ └── SealedForce3D.swift │ │ ├── KDTree/ │ │ │ ├── BufferedKDTree.swift │ │ │ ├── KDBox.swift │ │ │ ├── KDTree.swift │ │ │ ├── KDTreeDelegate.swift │ │ │ └── KDTreeNode.swift │ │ ├── Kinetics.swift │ │ ├── Simulation.swift │ │ └── Utils/ │ │ ├── AttributeDescriptor.swift │ │ ├── Disposable.swift │ │ ├── EdgeID.swift │ │ ├── LinearCongruentialGenerator.swift │ │ ├── SimulatableVector.swift │ │ └── UnsafeArray.swift │ └── Grape/ │ ├── Contents/ │ │ ├── AnyGraphContent.swift │ │ ├── GraphContent.swift │ │ ├── GraphContentBuilder.swift │ │ ├── LinkMark.swift │ │ ├── ModifiedGraphContent.swift │ │ ├── NodeMark.swift │ │ ├── Series.swift │ │ ├── _ArrayGraphContent.swift │ │ ├── _ConditionalGraphContent.swift │ │ ├── _EmptyGraphContent.swift │ │ ├── _IdentifiableNever.swift │ │ ├── _OptionalGraphContent.swift │ │ └── _PairedGraphContent.swift │ ├── Descriptors/ │ │ └── ForceDescriptor.swift │ ├── Gestures/ │ │ ├── GraphDragGesture.swift │ │ ├── GraphMagnifyGesture.swift │ │ └── GraphTapGesture.swift │ ├── Grape.docc/ │ │ ├── CreatingAForceDirectedGraph.md │ │ ├── Documentation.md │ │ ├── StateManagementAndEliminatingRedundantRerenders.md │ │ └── theme-settings.json │ ├── Modifiers/ │ │ ├── AnyGraphContentModifier.swift │ │ ├── Effects/ │ │ │ ├── GrapeEffect.ForegroundStyle.swift │ │ │ ├── GrapeEffect.Label.swift │ │ │ ├── GrapeEffect.Opacity.swift │ │ │ ├── GrapeEffect.Stroke.swift │ │ │ ├── GrapeEffect.Symbol.swift │ │ │ ├── GrapeEffect.SymbolSize.swift │ │ │ ├── GrapeEffect._LinkShape.swift │ │ │ └── GrapeEffect.swift │ │ ├── GraphContent+GraphContentModifiers.swift │ │ ├── GraphContentModifier.swift │ │ ├── GraphForegroundScale.swift │ │ └── GraphProxy.swift │ ├── Utils/ │ │ ├── CoreGraphics+SIMD.swift │ │ ├── GraphProtocol.swift │ │ ├── KeyFrame.swift │ │ ├── LinkShape.swift │ │ ├── RasterizedViewStore.swift │ │ ├── Transform.swift │ │ └── View+CGImage.swift │ └── Views/ │ ├── ForceDirectedGraph+View.swift │ ├── ForceDirectedGraph.swift │ ├── ForceDirectedGraphModel+Observation.swift │ ├── ForceDirectedGraphModel.findNode.swift │ ├── ForceDirectedGraphModel.swift │ ├── ForceDirectedGraphState.swift │ ├── GraphLayoutInputs.swift │ ├── GraphRenderingContext.swift │ ├── GraphRenderingStates.swift │ ├── RenderOperation.swift │ └── SimulationContext.swift └── Tests/ ├── ForceSimulationTests/ │ ├── ForceTests.swift │ ├── GKTreeCompareTest.swift │ ├── MiserableData.swift │ └── MiserableGraphTest.swift ├── GrapeTests/ │ ├── ContentBuilderTests.swift │ └── GraphContentBuilderTests.swift └── KDTreeTests/ ├── BufferedKDTreeTests.swift └── KDTreeTests.swift