fix: expose and apply control marking handles

This commit is contained in:
2026-08-28 17:45:03 +08:00
parent 7c45c21f8c
commit 11f4d748a7
3 changed files with 41 additions and 4 deletions

View File

@@ -106,6 +106,20 @@ assert.ok(
northSidewalks.find((handle) => handle.anchor.side === 'left').position[0] < 113,
'the sidewalk handle must follow the same side convention as the edge handle',
);
const controlHandles = junctionResolution.handles.handles.filter((handle) => handle.anchor.segmentId === 'segment:a');
const crosswalkHandle = controlHandles.find((handle) => handle.kind === 'junction-crosswalk-inset');
const stopLineHandle = controlHandles.find((handle) => handle.kind === 'junction-stop-line-offset');
assert.ok(crosswalkHandle && stopLineHandle, 'both control-marking handles must be published');
assert.notDeepEqual(
crosswalkHandle.position,
stopLineHandle.position,
'crosswalk and stop-line handles must not overlap at the shared cutback point',
);
assert.notEqual(
crosswalkHandle.axisAzimuth,
stopLineHandle.axisAzimuth,
'crosswalk inset and stop-line offset use opposite positive directions along the approach',
);
// A selection scopes the manifest to the object being edited. The whole-area
// manifest is 844 KB on a 41-road workspace, 89% of it `affects` id lists, while