totalShapeHorizontal = createShape({
$none$: createShape({
$elements$: (_) => M.circle({r: 10}),
$neighbors$: createShape({
$curr$: 'ref',
$next$: 'ref',
},{
'curr->next': [C.alignMiddle, C.hSpace(15)]
})
}),
invisProximityBG: M.rect({fill: 'none'}),
proximityBG: M.rect({fill: '#ccc'}),
$proximity$: createShape({
$elements$: createShape({
$fst$: (_) => M.circle({r: 10}),
$snd$: (_) => M.circle({r: 10}),
},{
'fst->snd': [C.alignMiddle, C.hSpace(5)],
}),
$neighbors$: createShape({
$curr$: 'ref',
$next$: 'ref',
},{
'curr->next': [C.alignMiddle, C.hSpace(25)],
})
}),
$commonRegion$: createShape({
$list$: createShape({
$elements$: (_) => M.circle({r: 10}),
$neighbors$: createShape({
$curr$: 'ref',
$next$: 'ref',
},{
'curr->next': [C.alignMiddle, C.hSpace(15)],
})
}),
$pairs$: createShape({
invisbox: M.rect({fill: 'none'}),
box: M.rect({stroke: 'black', fill: 'none'}),
$fst$: 'ref',
$snd$: 'ref',
},{
'invisbox->fst': [...C.containsShrinkWrap],
'invisbox->snd': [...C.containsShrinkWrap],
'box->invisbox': [C.alignBottomSpace(-5), C.alignTopSpace(-5), C.alignLeftSpace(2.5), C.alignRightSpace(2.5)],
})
}),
invisElementConnectednessBG: M.rect({fill: 'none'}),
elementConnectednessBG: M.rect({fill: '#ccc'}),
$elementConnectedness$: createShape({
$list$: createShape({
$elements$: (_) => M.circle({r: 10}),
$neighbors$: createShape({
$curr$: 'ref',
$next$: 'ref',
},{
'curr->next': [C.alignMiddle, C.hSpace(15)],
})
}),
$pairs$: createShape({
line: M.line({stroke: 'black', strokeWidth: '3px'}),
$fst$: 'ref',
$snd$: 'ref',
},{
'fst->line': [C.makeEqual('right', 'left'), C.makeEqual('centerY', 'top')],
'line->snd': [C.makeEqual('right', 'left'), C.makeEqual('bottom', 'centerY')],
})
}),
$similarColor$: createShape({
$elements$: createShape({
$fst$: (color) => M.circle({r: 10, fill: color}),
$snd$: (color) => M.circle({r: 10, fill: color}),
},{
'fst->snd': [C.alignMiddle, C.hSpace(15)],
}),
$neighbors$: createShape({
$curr$: 'ref',
$next$: 'ref',
},{
'curr->next': [C.alignMiddle, C.hSpace(15)],
})
}),
invisAlignmentBG: M.rect({fill: 'none'}),
alignmentBG: M.rect({fill: '#ccc'}),
$alignment$: createShape({
$elements$: createShape({
$fst$: (_) => M.ellipse({rx: 10, ry: 3}),
$snd$: (_) => M.ellipse({rx: 10, ry: 3}),
invisbox: M.rect({fill: 'none'}),
box: M.rect({fill: 'black'}),
// box: M.rect({fill: 'none', stroke:'black'}),
},{
'invisbox->fst': [...C.containsShrinkWrap],
'invisbox->snd': [...C.containsShrinkWrap],
'box->invisbox': [C.alignBottomSpace(-5), C.alignTopSpace(-5), C.alignLeftSpace(2.5), C.alignRightSpace(2.5)],
'fst->snd': [C.alignMiddle, C.hSpace(15)],
}),
$neighbors$: createShape({
$0$: createShape({
$curr$: 'ref',
$next$: 'ref',
},{
'curr/snd->next/fst': [C.alignMiddle, C.hSpace(15)],
}),
$1$: createShape({
$curr$: 'ref',
$next$: 'ref',
},{
'curr/snd->next/fst': [C.alignTopSpace(-7.5), C.hSpace(15)],
}),
})
})/* createShape({
$list$: createShape({
$elements$: (_) => M.circle({r: 10}),
$neighbors$: createShape({
$curr$: 'ref',
$next$: 'ref',
},{
'curr->next': [C.hSpace(15)],
})
}),
$pairs$: createShape({
$fst$: 'ref',
$snd$: 'ref',
},{
'fst->snd': [C.alignMiddle],
}),
$spacing1$: createShape({
$fst$: 'ref',
$snd$: 'ref',
},{
'fst->snd': [C.alignBottomSpace(-20)],
}),
$spacing2$: createShape({
$fst$: 'ref',
$snd$: 'ref',
},{
'fst->snd': [C.alignBottomSpace(10)],
}),
}), */
},{
'proximityBG->invisProximityBG': [C.alignBottomSpace(-10), C.alignTopSpace(-10)/* , C.alignLeftSpace(10), C.alignRightSpace(10) */],
'invisProximityBG->proximity': [...C.containsShrinkWrap],
'elementConnectednessBG->invisElementConnectednessBG': [C.alignBottomSpace(-10), C.alignTopSpace(-10), C.alignLeftSpace(10), C.alignRightSpace(10)],
'elementConnectednessBG->proximityBG': [C.alignLeft, C.alignRight],
// 'elementConnectednessBG->alignmentBG': [C.alignLeft, C.alignRight],
'alignmentBG->invisAlignmentBG': [C.alignBottomSpace(-10), C.alignTopSpace(-10)/* , C.alignLeftSpace(10), C.alignRightSpace(10) */],
'invisAlignmentBG->alignment': [...C.containsShrinkWrap],
'invisElementConnectednessBG->elementConnectedness': [...C.containsShrinkWrap],
'none->alignment': [C.alignCenter, C.vSpace(verticalSpacing)],
'alignment->commonRegion': [C.alignCenter, C.vSpace(verticalSpacing)],
// 'commonRegion->elementConnectedness': [C.alignCenter, C.vSpace(verticalSpacing)],
'elementConnectedness->similarColor': [C.alignCenter, C.vSpace(verticalSpacing)],
// 'similarColor->alignment': [C.alignCenter, C.vSpace(verticalSpacing)],
'none->elementConnectedness': [C.alignMiddle, C.hSpace(30)],
})