@willcgage/module-schematic 0.20.0 → 0.21.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
@@ -399,6 +399,7 @@ function stateToDoc(state, recordNumber) {
399
399
  track: ind.track,
400
400
  fromPos: ind.fromPos,
401
401
  toPos: ind.toPos,
402
+ ...ind.spots?.length ? { spots: ind.spots } : {},
402
403
  side: ind.side,
403
404
  ...ind.labelMode && ind.labelMode !== "none" ? { labelMode: ind.labelMode } : {},
404
405
  ...ind.carTypes.length ? { carTypes: ind.carTypes } : {},
@@ -533,6 +534,12 @@ function docToState(doc, fallbackLength, moduleTracks = []) {
533
534
  track: ind.track,
534
535
  fromPos: sc(ind.fromPos ?? 0),
535
536
  toPos: ind.toPos != null ? sc(ind.toPos) : len,
537
+ spots: (ind.spots ?? []).map((s) => ({
538
+ track: s.track,
539
+ fromPos: sc(s.fromPos ?? 0),
540
+ toPos: s.toPos != null ? sc(s.toPos) : len,
541
+ ...s.side ? { side: s.side } : {}
542
+ })),
536
543
  side: ind.side ?? "above",
537
544
  labelMode: ind.labelMode ?? "none",
538
545
  carTypes: Array.isArray(ind.carTypes) ? ind.carTypes : [],
@@ -836,21 +843,27 @@ function moduleFeatures(doc) {
836
843
  posFrac: clampFrac(e.at.pos),
837
844
  side: e.at.side === "down" ? "down" : "up"
838
845
  }));
839
- const industries = (doc.industries ?? []).map((ind) => {
840
- const from = ind.fromPos ?? 0;
841
- const to = ind.toPos ?? len;
842
- return {
843
- id: ind.id,
844
- name: ind.name ?? "",
845
- type: ind.type ?? null,
846
- fromFrac: clampFrac(Math.min(from, to)),
847
- toFrac: clampFrac(Math.max(from, to)),
848
- lane: trackLane.get(ind.track) ?? 0,
849
- side: ind.side ?? "above",
850
- labelMode: ind.labelMode ?? "none",
851
- cars: carCapacity(from, to),
852
- carTypes: Array.isArray(ind.carTypes) ? ind.carTypes : []
853
- };
846
+ const industries = (doc.industries ?? []).flatMap((ind) => {
847
+ const spots = [
848
+ { track: ind.track, fromPos: ind.fromPos, toPos: ind.toPos, side: ind.side },
849
+ ...ind.spots ?? []
850
+ ];
851
+ return spots.map((sp, i) => {
852
+ const from = sp.fromPos ?? 0;
853
+ const to = sp.toPos ?? len;
854
+ return {
855
+ id: i === 0 ? ind.id : `${ind.id}-s${i}`,
856
+ name: ind.name ?? "",
857
+ type: ind.type ?? null,
858
+ fromFrac: clampFrac(Math.min(from, to)),
859
+ toFrac: clampFrac(Math.max(from, to)),
860
+ lane: trackLane.get(sp.track) ?? 0,
861
+ side: sp.side ?? "above",
862
+ labelMode: ind.labelMode ?? "none",
863
+ cars: carCapacity(from, to),
864
+ carTypes: Array.isArray(ind.carTypes) ? ind.carTypes : []
865
+ };
866
+ });
854
867
  });
855
868
  const allLanes = [
856
869
  0,