capdag 0.181.455 → 0.182.459

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.
Files changed (2) hide show
  1. package/cap-fab-renderer.js +31 -10
  2. package/package.json +2 -2
@@ -555,6 +555,26 @@ function buildStylesheet() {
555
555
  selector: 'edge.active',
556
556
  style: { 'width': 3, 'z-index': 1000 },
557
557
  },
558
+ {
559
+ selector: 'edge.strand-shape-edge',
560
+ style: {
561
+ 'line-style': 'dashed',
562
+ 'width': 2,
563
+ 'text-background-opacity': 0.92,
564
+ },
565
+ },
566
+ {
567
+ selector: 'edge.strand-foreach-edge',
568
+ style: {
569
+ 'target-arrow-shape': 'triangle',
570
+ },
571
+ },
572
+ {
573
+ selector: 'edge.strand-collect-edge',
574
+ style: {
575
+ 'target-arrow-shape': 'tee',
576
+ },
577
+ },
558
578
  {
559
579
  selector: 'edge.faded',
560
580
  style: { 'opacity': fadedEdgeOpacity },
@@ -1374,7 +1394,7 @@ function collapseStrandShapeTransitions(built) {
1374
1394
  label: '',
1375
1395
  title: '',
1376
1396
  fullUrn: '',
1377
- edgeClass: 'strand-cap-edge',
1397
+ edgeClass: 'strand-cap-edge strand-shape-edge strand-collect-edge',
1378
1398
  color: bodyExitCapEdge ? bodyExitCapEdge.color : inEdge.color,
1379
1399
  foreachEntry: false,
1380
1400
  });
@@ -1399,15 +1419,16 @@ function collapseStrandShapeTransitions(built) {
1399
1419
  e.edgeClass !== 'strand-collection');
1400
1420
  edges = edges.concat(synthesizedExitEdges);
1401
1421
 
1402
- // Step 2: foreach-entry cap edges keep whatever label the
1403
- // strand builder emitted the cap's own cardinality marker
1404
- // (from input_is_sequence/output_is_sequence) is the single
1405
- // source of truth for which edge carries a (1→n) / (n→1) /
1406
- // (n→n) annotation. The ForEach/Collect shape transitions
1407
- // themselves are invisible in the render; the cap preceding a
1408
- // ForEach (with output_is_sequence=true) already produces the
1409
- // (1→n) marker, and the cap following a Collect (with
1410
- // input_is_sequence=true) produces (n→1). No relabeling.
1422
+ // Step 2: surface shape transitions as distinct edge semantics.
1423
+ // The cap edge that enters a foreach body keeps its original cap
1424
+ // label; only the edge styling changes. Collect bridges are
1425
+ // synthesized above as dedicated dashed edges.
1426
+ edges = edges.map(edge => {
1427
+ if (!edge.foreachEntry) return edge;
1428
+ return Object.assign({}, edge, {
1429
+ edgeClass: `${edge.edgeClass} strand-shape-edge strand-foreach-edge`,
1430
+ });
1431
+ });
1411
1432
 
1412
1433
  // Step 3: merge the trailing `step_N → output` edge when step_N
1413
1434
  // and output represent the same media URN. The strand builder
package/package.json CHANGED
@@ -2,7 +2,7 @@
2
2
  "author": "Bahram Joharshamshiri",
3
3
  "dependencies": {
4
4
  "peggy": "^5.1.0",
5
- "tagged-urn": "^0.41.110"
5
+ "tagged-urn": "^0.42.114"
6
6
  },
7
7
  "description": "JavaScript implementation of Cap URN (Capability Uniform Resource Names) with strict validation and matching",
8
8
  "engines": {
@@ -40,5 +40,5 @@
40
40
  "pretest": "npm run build:parser",
41
41
  "test": "node capdag.test.js"
42
42
  },
43
- "version": "0.181.455"
43
+ "version": "0.182.459"
44
44
  }