{{chain.ServiceName}} Router
{{#each routes as |item|}}
{{/each}}
Splitters
{{#each (sort-by 'Name' splitters) as |item|}}
{{/each}}
Resolvers
{{#each (sort-by 'Name' resolvers) as |item|}}
{{/each}}
{{nodes}}
{{#each routes as |item|}} {{#if item.rect}} {{#let item.rect item.NextItem.rect as |src destRect|}} {{#let (tween-to (hash x=destRect.x y=(add destRect.y (div destRect.height 2))) (concat item.ID)) as |dest| }}
' item.NextNode}} d={{svg-curve (hash x=dest.x y=(sub dest.y 0)) src=(hash x=src.right y=(add src.y (div src.height 2))) }} >
{{/let}} {{/let}} {{/if}} {{/each}} {{#each splitters as |splitter|}} {{#if splitter.rect}} {{#let splitter.rect as |src|}} {{#each splitter.Splits as |item index|}} {{#let item.NextItem.rect as |destRect|}} {{#let (tween-to (hash x=destRect.x y=(add destRect.y (div destRect.height 2))) (concat splitter.ID '-' index) ) as |dest| }}
' item.NextNode}} class='split' d={{svg-curve (hash x=dest.x y=dest.y) src=(hash x=src.right y=(add src.y (div src.height 2))) }} >
{{/let}} {{/let}} {{/each}} {{/let}} {{/if}} {{/each}}
{{#each routes as |item|}} {{#if (string-starts-with item.NextNode 'resolver:')}} {{#let (or item.NextItem.rect (hash y=0 height=0)) as |dest|}}
{{/let}} {{/if}} {{/each}} {{#each splitters as |item|}} {{#each item.Splits as |item|}} {{#let (or item.NextItem.rect (hash y=0 height=0)) as |dest|}}
{{/let}} {{/each}} {{/each}}
{{#each routes as |item|}} {{#if (string-starts-with item.NextNode 'splitter:')}} {{#let (or item.NextItem.rect (hash y=0 height=0)) as |dest|}}
{{/let}} {{/if}} {{/each}}