@willcgage/module-schematic 0.19.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
@@ -365,7 +365,8 @@ function stateToDoc(state, recordNumber) {
365
365
  onTrack: t.onTrack,
366
366
  divergeTrack: t.divergeTrack,
367
367
  kind: t.kind,
368
- name: t.name || void 0
368
+ name: t.name || void 0,
369
+ ...t.size ? { size: t.size } : {}
369
370
  })),
370
371
  ...state.crossings.length > 0 ? {
371
372
  crossings: state.crossings.map((x) => ({
@@ -398,6 +399,7 @@ function stateToDoc(state, recordNumber) {
398
399
  track: ind.track,
399
400
  fromPos: ind.fromPos,
400
401
  toPos: ind.toPos,
402
+ ...ind.spots?.length ? { spots: ind.spots } : {},
401
403
  side: ind.side,
402
404
  ...ind.labelMode && ind.labelMode !== "none" ? { labelMode: ind.labelMode } : {},
403
405
  ...ind.carTypes.length ? { carTypes: ind.carTypes } : {},
@@ -521,7 +523,8 @@ function docToState(doc, fallbackLength, moduleTracks = []) {
521
523
  pos: sc(t.pos),
522
524
  onTrack: t.onTrack,
523
525
  divergeTrack: t.divergeTrack,
524
- kind: t.kind ?? "right"
526
+ kind: t.kind ?? "right",
527
+ ...t.size ? { size: t.size } : {}
525
528
  })),
526
529
  controlPoints: readControlPoints(d, sc),
527
530
  industries: (d.industries ?? []).map((ind) => ({
@@ -531,6 +534,12 @@ function docToState(doc, fallbackLength, moduleTracks = []) {
531
534
  track: ind.track,
532
535
  fromPos: sc(ind.fromPos ?? 0),
533
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
+ })),
534
543
  side: ind.side ?? "above",
535
544
  labelMode: ind.labelMode ?? "none",
536
545
  carTypes: Array.isArray(ind.carTypes) ? ind.carTypes : [],
@@ -834,21 +843,27 @@ function moduleFeatures(doc) {
834
843
  posFrac: clampFrac(e.at.pos),
835
844
  side: e.at.side === "down" ? "down" : "up"
836
845
  }));
837
- const industries = (doc.industries ?? []).map((ind) => {
838
- const from = ind.fromPos ?? 0;
839
- const to = ind.toPos ?? len;
840
- return {
841
- id: ind.id,
842
- name: ind.name ?? "",
843
- type: ind.type ?? null,
844
- fromFrac: clampFrac(Math.min(from, to)),
845
- toFrac: clampFrac(Math.max(from, to)),
846
- lane: trackLane.get(ind.track) ?? 0,
847
- side: ind.side ?? "above",
848
- labelMode: ind.labelMode ?? "none",
849
- cars: carCapacity(from, to),
850
- carTypes: Array.isArray(ind.carTypes) ? ind.carTypes : []
851
- };
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
+ });
852
867
  });
853
868
  const allLanes = [
854
869
  0,