@willcgage/module-schematic 0.80.0 → 0.81.0

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.
package/dist/index.cjs CHANGED
@@ -1576,10 +1576,47 @@ var FAST_TRACKS_N_ME55 = [
1576
1576
  substitutionRadius: { inches: subR, source: manufacturer, note: spec }
1577
1577
  };
1578
1578
  });
1579
+ var FAST_TRACKS_N_ME55_CROSSOVERS = [
1580
+ // [N, angle°, secondFrog°, defaultLength, minLength, trackSpacing]
1581
+ [6, 9.46, 19, 10.07, 9.31, 1.09],
1582
+ [8, 7.13, 14.3, 13.61, 13.07, 1.09]
1583
+ ].map(([n, deg, second, dflt, min, spacing]) => {
1584
+ const spec = "handlaidtrack.com Detailed Specifications, read 2026-07-26";
1585
+ const manufacturer = "manufacturer";
1586
+ return {
1587
+ id: `fast-tracks-n-me55-c-${n}`,
1588
+ manufacturer: "Fast Tracks",
1589
+ line: "Code 55",
1590
+ scale: "N",
1591
+ name: `#${n} Crossover`,
1592
+ kind: "crossover",
1593
+ partNumbers: { single: `AF-N-C-${n}-ME55` },
1594
+ frogNumber: n,
1595
+ buildable: true,
1596
+ actualAngle: { deg, source: manufacturer, note: `${spec}. atan(1/${n}) exactly.` },
1597
+ secondaryFrogAngle: {
1598
+ deg: second,
1599
+ source: manufacturer,
1600
+ note: `${spec}. The diamond of a scissors crossover \u2014 2 \xD7 ${deg}\xB0 within the published rounding.`
1601
+ },
1602
+ overallLength: {
1603
+ inches: dflt,
1604
+ source: manufacturer,
1605
+ note: `${spec}. The DEFAULT length of the whole assembly \u2014 a fixture, so the builder chooses.`
1606
+ },
1607
+ minimumLength: { inches: min, source: manufacturer, note: spec },
1608
+ trackSpacing: {
1609
+ inches: spacing,
1610
+ source: manufacturer,
1611
+ note: `${spec}. \u26A0\uFE0F Free-moN \xA72.0 requires ${FREEMO_TRACK_SPACING_INCHES}\u2033 \u2014 this fixture is built to ${spacing}\u2033, ${(FREEMO_TRACK_SPACING_INCHES - spacing).toFixed(3)}\u2033 tighter, and cannot be built to another spacing.`
1612
+ }
1613
+ };
1614
+ });
1579
1615
  var DEFAULT_FLEX_PART_ID = "atlas-c55-n-flex";
1580
1616
  var BUILT_IN_TRACK_PARTS = [
1581
1617
  ...ATLAS_CODE55_N,
1582
1618
  ...FAST_TRACKS_N_ME55,
1619
+ ...FAST_TRACKS_N_ME55_CROSSOVERS,
1583
1620
  ...FLEX_TRACK_PARTS
1584
1621
  ];
1585
1622
  function flexParts(library = BUILT_IN_TRACK_PARTS) {
@@ -1907,6 +1944,14 @@ function storedPartToTrackPart(row) {
1907
1944
  if (minimum) part.minimumLength = minimum;
1908
1945
  const substitution = dim(row.substitutionRadiusInches, row.substitutionRadiusSource);
1909
1946
  if (substitution) part.substitutionRadius = substitution;
1947
+ const spacing = dim(row.trackSpacingInches, row.trackSpacingSource);
1948
+ if (spacing) part.trackSpacing = spacing;
1949
+ if (typeof row.secondaryFrogAngleDeg === "number")
1950
+ part.secondaryFrogAngle = {
1951
+ deg: row.secondaryFrogAngleDeg,
1952
+ source: asSource(row.secondaryFrogAngleSource),
1953
+ ...note ? { note } : {}
1954
+ };
1910
1955
  if (row.buildable) part.buildable = true;
1911
1956
  if (lead) part.lead = lead;
1912
1957
  const outer = dim(row.outerRadiusInches, row.radiusSource);
@@ -2610,6 +2655,7 @@ exports.DEFAULT_FLEX_PART_ID = DEFAULT_FLEX_PART_ID;
2610
2655
  exports.ENDPLATE_FASCIA_CLEAR_INCHES = ENDPLATE_FASCIA_CLEAR_INCHES;
2611
2656
  exports.ENDPLATE_LEAD_INCHES = ENDPLATE_LEAD_INCHES;
2612
2657
  exports.FAST_TRACKS_N_ME55 = FAST_TRACKS_N_ME55;
2658
+ exports.FAST_TRACKS_N_ME55_CROSSOVERS = FAST_TRACKS_N_ME55_CROSSOVERS;
2613
2659
  exports.FLEX_TRACK_PARTS = FLEX_TRACK_PARTS;
2614
2660
  exports.FREEMO_ENDPLATE_TRACK_FASCIA_CLEARANCE_INCHES = FREEMO_ENDPLATE_TRACK_FASCIA_CLEARANCE_INCHES;
2615
2661
  exports.FREEMO_ENDPLATE_WIDTH_MIN_INCHES = FREEMO_ENDPLATE_WIDTH_MIN_INCHES;