@willcgage/module-schematic 0.64.0 → 0.65.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
@@ -1285,6 +1285,18 @@ function leadInchesForSize(size, library = BUILT_IN_TRACK_PARTS) {
1285
1285
  const t = (size - lo.n) / (hi.n - lo.n);
1286
1286
  return lo.lead + t * (hi.lead - lo.lead);
1287
1287
  }
1288
+ function pastFrogInchesForSize(size, library = BUILT_IN_TRACK_PARTS) {
1289
+ const measured = library.filter((p) => p.kind === "turnout" && p.frogNumber != null).map((p) => ({ n: p.frogNumber, ext: partExtent(p) })).filter((p) => p.ext != null).map((p) => ({ n: p.n, past: p.ext.pastFrog })).sort((a, b) => a.n - b.n);
1290
+ if (!measured.length) return RAIL_GAUGE_INCHES * size;
1291
+ if (measured.length === 1) return measured[0].past;
1292
+ let i;
1293
+ if (size >= measured[measured.length - 1].n) i = measured.length - 2;
1294
+ else i = Math.max(0, measured.findIndex((p) => p.n >= size) - 1);
1295
+ const lo = measured[i];
1296
+ const hi = measured[i + 1];
1297
+ const t = (size - lo.n) / (hi.n - lo.n);
1298
+ return Math.max(0, lo.past + t * (hi.past - lo.past));
1299
+ }
1288
1300
  function parseXtpLibrary(text) {
1289
1301
  const parts = [];
1290
1302
  let cur = null;
@@ -2181,6 +2193,7 @@ exports.parseXtpLibrary = parseXtpLibrary;
2181
2193
  exports.partExtent = partExtent;
2182
2194
  exports.partExtentForSize = partExtentForSize;
2183
2195
  exports.partOutlineAtFrog = partOutlineAtFrog;
2196
+ exports.pastFrogInchesForSize = pastFrogInchesForSize;
2184
2197
  exports.pathLengthInches = pathLengthInches;
2185
2198
  exports.poseNeedsManual = poseNeedsManual;
2186
2199
  exports.poseOverridesFromDoc = poseOverridesFromDoc;