@tscircuit/schematic-trace-solver 0.0.44 → 0.0.45

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (25) hide show
  1. package/dist/index.d.ts +14 -3
  2. package/dist/index.js +754 -95
  3. package/lib/solvers/SchematicTracePipelineSolver/SchematicTracePipelineSolver.ts +0 -1
  4. package/lib/solvers/TraceCleanupSolver/TraceCleanupSolver.ts +83 -36
  5. package/lib/solvers/TraceCleanupSolver/hasCollisions.ts +16 -4
  6. package/lib/solvers/TraceCleanupSolver/is4PointRectangle.ts +17 -0
  7. package/lib/solvers/TraceCleanupSolver/isSegmentAnEndpointSegment.ts +36 -0
  8. package/lib/solvers/TraceCleanupSolver/mergeGraphicsObjects.ts +28 -0
  9. package/lib/solvers/TraceCleanupSolver/minimizeTurnsWithFilteredLabels.ts +18 -1
  10. package/lib/solvers/TraceCleanupSolver/recognizeStairStepPattern.ts +56 -0
  11. package/lib/solvers/TraceCleanupSolver/sub-solver/UntangleTraceSubsolver.ts +370 -0
  12. package/lib/solvers/TraceCleanupSolver/sub-solver/findAllLShapedTurns.ts +48 -0
  13. package/lib/solvers/TraceCleanupSolver/sub-solver/findIntersectionsWithObstacles.ts +36 -0
  14. package/lib/solvers/TraceCleanupSolver/sub-solver/generateLShapeRerouteCandidates.ts +107 -0
  15. package/lib/solvers/TraceCleanupSolver/sub-solver/generateRectangleCandidates.ts +55 -0
  16. package/lib/solvers/TraceCleanupSolver/sub-solver/getTraceObstacles.ts +25 -0
  17. package/lib/solvers/TraceCleanupSolver/sub-solver/isPathColliding.ts +58 -0
  18. package/lib/solvers/TraceCleanupSolver/sub-solver/visualizeCandidates.ts +33 -0
  19. package/lib/solvers/TraceCleanupSolver/sub-solver/visualizeCollision.ts +20 -0
  20. package/lib/solvers/TraceCleanupSolver/sub-solver/visualizeIntersectionPoints.ts +26 -0
  21. package/lib/solvers/TraceCleanupSolver/sub-solver/visualizeLSapes.ts +33 -0
  22. package/lib/solvers/TraceCleanupSolver/turnMinimization.ts +50 -56
  23. package/lib/solvers/TraceCleanupSolver/visualizeTightRectangle.ts +24 -0
  24. package/package.json +1 -1
  25. package/tests/examples/__snapshots__/example29.snap.svg +6 -6
package/dist/index.d.ts CHANGED
@@ -517,17 +517,23 @@ declare class LongDistancePairSolver extends BaseSolver {
517
517
  };
518
518
  }
519
519
 
520
+ /**
521
+ * Defines the input structure for the TraceCleanupSolver.
522
+ */
520
523
  interface TraceCleanupSolverInput {
521
524
  inputProblem: InputProblem;
522
525
  allTraces: SolvedTracePath[];
523
- targetTraceIds: Set<string>;
524
526
  allLabelPlacements: NetLabelPlacement[];
525
527
  mergedLabelNetIdMap: Record<string, Set<string>>;
526
528
  paddingBuffer: number;
527
529
  }
528
530
  /**
529
- * Cleans up traces by minimizing turns and balancing L-shapes to improve
530
- * the overall aesthetics and readability of the schematic.
531
+ * The TraceCleanupSolver is responsible for improving the aesthetics and readability of schematic traces.
532
+ * It operates in a multi-step pipeline:
533
+ * 1. **Untangling Traces**: It first attempts to untangle any overlapping or highly convoluted traces using a sub-solver.
534
+ * 2. **Minimizing Turns**: After untangling, it iterates through each trace to minimize the number of turns, simplifying their paths.
535
+ * 3. **Balancing L-Shapes**: Finally, it balances L-shaped trace segments to create more visually appealing and consistent layouts.
536
+ * The solver processes traces one by one, applying these cleanup steps sequentially to refine the overall trace layout.
531
537
  */
532
538
  declare class TraceCleanupSolver extends BaseSolver {
533
539
  private input;
@@ -536,8 +542,13 @@ declare class TraceCleanupSolver extends BaseSolver {
536
542
  private tracesMap;
537
543
  private pipelineStep;
538
544
  private activeTraceId;
545
+ activeSubSolver: BaseSolver | null;
539
546
  constructor(solverInput: TraceCleanupSolverInput);
540
547
  _step(): void;
548
+ private _runUntangleTracesStep;
549
+ private _runMinimizeTurnsStep;
550
+ private _runBalanceLShapesStep;
551
+ private _processTrace;
541
552
  getOutput(): {
542
553
  traces: SolvedTracePath[];
543
554
  };