@tscircuit/schematic-trace-solver 0.0.42 → 0.0.44

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 (38) hide show
  1. package/dist/index.d.ts +31 -29
  2. package/dist/index.js +981 -926
  3. package/lib/solvers/SchematicTracePipelineSolver/SchematicTracePipelineSolver.ts +20 -1
  4. package/lib/solvers/TraceCleanupSolver/TraceCleanupSolver.ts +133 -0
  5. package/lib/solvers/TraceCleanupSolver/balanceZShapes.ts +200 -0
  6. package/lib/solvers/TraceCleanupSolver/minimizeTurnsWithFilteredLabels.ts +76 -0
  7. package/lib/solvers/TraceLabelOverlapAvoidanceSolver/TraceLabelOverlapAvoidanceSolver.ts +1 -21
  8. package/lib/solvers/TraceLabelOverlapAvoidanceSolver/rerouteCollidingTrace.ts +1 -1
  9. package/lib/solvers/TraceLabelOverlapAvoidanceSolver/sub-solvers/SingleOverlapSolver/SingleOverlapSolver.ts +1 -1
  10. package/lib/solvers/TraceOverlapShiftSolver/TraceOverlapShiftSolver.ts +83 -0
  11. package/package.json +1 -1
  12. package/site/examples/example26.page.tsx +4 -0
  13. package/tests/assets/example26.json +1206 -0
  14. package/tests/examples/__snapshots__/example02.snap.svg +1 -1
  15. package/tests/examples/__snapshots__/example09.snap.svg +34 -34
  16. package/tests/examples/__snapshots__/example11.snap.svg +13 -13
  17. package/tests/examples/__snapshots__/example12.snap.svg +3 -3
  18. package/tests/examples/__snapshots__/example13.snap.svg +12 -12
  19. package/tests/examples/__snapshots__/example16.snap.svg +4 -4
  20. package/tests/examples/__snapshots__/example19.snap.svg +9 -9
  21. package/tests/examples/__snapshots__/example25.snap.svg +3 -3
  22. package/tests/examples/__snapshots__/example26.snap.svg +3 -3
  23. package/tests/examples/__snapshots__/example28.snap.svg +3 -3
  24. package/tests/examples/__snapshots__/example29.snap.svg +1208 -0
  25. package/tests/examples/example29.test.ts +13 -0
  26. package/tests/solvers/{TraceLabelOverlapAvoidanceSolver/sub-solver → TraceCleanupSolver}/TraceCleanupSolver.test.ts +2 -2
  27. package/tests/solvers/{TraceLabelOverlapAvoidanceSolver/sub-solver → TraceCleanupSolver}/__snapshots__/TraceCleanupSolver.snap.svg +1 -1
  28. package/tests/solvers/TraceLabelOverlapAvoidanceSolver/renderComparisonView/__snapshots__/renderComparisonView03.snap.svg +1 -1
  29. package/tests/solvers/TraceLabelOverlapAvoidanceSolver/renderComparisonView/renderComparisonView03.test.ts +1 -1
  30. package/lib/solvers/TraceLabelOverlapAvoidanceSolver/sub-solvers/TraceCleanupSolver/TraceCleanupSolver.ts +0 -132
  31. package/lib/solvers/TraceLabelOverlapAvoidanceSolver/sub-solvers/TraceCleanupSolver/balanceLShapes.ts +0 -209
  32. package/lib/solvers/TraceLabelOverlapAvoidanceSolver/sub-solvers/TraceCleanupSolver/minimizeTurnsWithFilteredLabels.ts +0 -66
  33. /package/lib/solvers/{TraceLabelOverlapAvoidanceSolver/sub-solvers/TraceCleanupSolver → TraceCleanupSolver}/countTurns.ts +0 -0
  34. /package/lib/solvers/{TraceLabelOverlapAvoidanceSolver/sub-solvers/TraceCleanupSolver → TraceCleanupSolver}/hasCollisions.ts +0 -0
  35. /package/lib/solvers/{TraceLabelOverlapAvoidanceSolver/sub-solvers/TraceCleanupSolver → TraceCleanupSolver}/hasCollisionsWithLabels.ts +0 -0
  36. /package/lib/solvers/{TraceLabelOverlapAvoidanceSolver/sub-solvers/TraceCleanupSolver → TraceCleanupSolver}/simplifyPath.ts +0 -0
  37. /package/lib/solvers/{TraceLabelOverlapAvoidanceSolver/sub-solvers/TraceCleanupSolver → TraceCleanupSolver}/tryConnectPoints.ts +0 -0
  38. /package/lib/solvers/{TraceLabelOverlapAvoidanceSolver/sub-solvers/TraceCleanupSolver → TraceCleanupSolver}/turnMinimization.ts +0 -0
package/dist/index.d.ts CHANGED
@@ -238,6 +238,7 @@ declare class TraceOverlapShiftSolver extends BaseSolver {
238
238
  */
239
239
  traceNetIslands: Record<ConnNetId, Array<SolvedTracePath>>;
240
240
  correctedTraceMap: Record<MspConnectionPairId, SolvedTracePath>;
241
+ cleanupPhase: "diagonals" | "done" | null;
241
242
  constructor(params: {
242
243
  inputProblem: InputProblem;
243
244
  inputTracePaths: Array<SolvedTracePath>;
@@ -248,6 +249,8 @@ declare class TraceOverlapShiftSolver extends BaseSolver {
248
249
  findNextOverlapIssue(): {
249
250
  overlappingTraceSegments: Array<OverlappingTraceSegmentLocator>;
250
251
  } | null;
252
+ private findNextDiagonalSegment;
253
+ private findAndFixNextDiagonalSegment;
251
254
  _step(): void;
252
255
  visualize(): graphics_debug.GraphicsObject;
253
256
  }
@@ -406,33 +409,6 @@ declare class MergedNetLabelObstacleSolver extends BaseSolver {
406
409
  visualize(): GraphicsObject;
407
410
  }
408
411
 
409
- interface TraceCleanupSolverInput {
410
- inputProblem: InputProblem;
411
- allTraces: SolvedTracePath[];
412
- targetTraceIds: Set<string>;
413
- allLabelPlacements: NetLabelPlacement[];
414
- mergedLabelNetIdMap: Record<string, Set<string>>;
415
- paddingBuffer: number;
416
- }
417
- /**
418
- * Cleans up traces by minimizing turns and balancing L-shapes to improve
419
- * the overall aesthetics and readability of the schematic.
420
- */
421
- declare class TraceCleanupSolver extends BaseSolver {
422
- private input;
423
- private outputTraces;
424
- private pipelineStepIndex;
425
- private tracesToProcess;
426
- private minimizedTraces;
427
- private balancedTraces;
428
- constructor(solverInput: TraceCleanupSolverInput);
429
- _step(): void;
430
- getOutput(): {
431
- traces: SolvedTracePath[];
432
- };
433
- visualize(): GraphicsObject;
434
- }
435
-
436
412
  interface SingleOverlapSolverInput {
437
413
  trace: SolvedTracePath;
438
414
  label: NetLabelPlacement;
@@ -502,7 +478,6 @@ declare class TraceLabelOverlapAvoidanceSolver extends BaseSolver {
502
478
  netLabelPlacements: NetLabelPlacement[];
503
479
  labelMergingSolver?: MergedNetLabelObstacleSolver;
504
480
  overlapAvoidanceSolver?: OverlapAvoidanceStepSolver;
505
- traceCleanupSolver?: TraceCleanupSolver;
506
481
  pipelineStepIndex: number;
507
482
  constructor(solverInput: TraceLabelOverlapAvoidanceSolverInput);
508
483
  _step(): void;
@@ -542,6 +517,33 @@ declare class LongDistancePairSolver extends BaseSolver {
542
517
  };
543
518
  }
544
519
 
520
+ interface TraceCleanupSolverInput {
521
+ inputProblem: InputProblem;
522
+ allTraces: SolvedTracePath[];
523
+ targetTraceIds: Set<string>;
524
+ allLabelPlacements: NetLabelPlacement[];
525
+ mergedLabelNetIdMap: Record<string, Set<string>>;
526
+ paddingBuffer: number;
527
+ }
528
+ /**
529
+ * Cleans up traces by minimizing turns and balancing L-shapes to improve
530
+ * the overall aesthetics and readability of the schematic.
531
+ */
532
+ declare class TraceCleanupSolver extends BaseSolver {
533
+ private input;
534
+ private outputTraces;
535
+ private traceIdQueue;
536
+ private tracesMap;
537
+ private pipelineStep;
538
+ private activeTraceId;
539
+ constructor(solverInput: TraceCleanupSolverInput);
540
+ _step(): void;
541
+ getOutput(): {
542
+ traces: SolvedTracePath[];
543
+ };
544
+ visualize(): GraphicsObject;
545
+ }
546
+
545
547
  /**
546
548
  * Pipeline solver that runs a series of solvers to find the best schematic layout.
547
549
  * Coordinates the entire layout process from chip partitioning through final packing.
@@ -572,7 +574,7 @@ declare class SchematicTracePipelineSolver extends BaseSolver {
572
574
  timeSpentOnPhase: Record<string, number>;
573
575
  firstIterationOfPhase: Record<string, number>;
574
576
  inputProblem: InputProblem;
575
- pipelineDef: (PipelineStep<typeof MspConnectionPairSolver> | PipelineStep<typeof SchematicTraceLinesSolver> | PipelineStep<typeof LongDistancePairSolver> | PipelineStep<typeof TraceOverlapShiftSolver> | PipelineStep<typeof NetLabelPlacementSolver> | PipelineStep<typeof TraceLabelOverlapAvoidanceSolver>)[];
577
+ pipelineDef: (PipelineStep<typeof MspConnectionPairSolver> | PipelineStep<typeof SchematicTraceLinesSolver> | PipelineStep<typeof LongDistancePairSolver> | PipelineStep<typeof TraceOverlapShiftSolver> | PipelineStep<typeof NetLabelPlacementSolver> | PipelineStep<typeof TraceLabelOverlapAvoidanceSolver> | PipelineStep<typeof TraceCleanupSolver>)[];
576
578
  constructor(inputProblem: InputProblem);
577
579
  getConstructorParams(): ConstructorParameters<typeof SchematicTracePipelineSolver>[0];
578
580
  currentPipelineStepIndex: number;