Skip to content

Instantly share code, notes, and snippets.

@awhiteside1
Created July 24, 2023 03:18
Show Gist options
  • Save awhiteside1/060e65f6e1554bc38f24349587ab2b89 to your computer and use it in GitHub Desktop.
Save awhiteside1/060e65f6e1554bc38f24349587ab2b89 to your computer and use it in GitHub Desktop.
<!DOCTYPE html>
<html lang="en" dir="ltr">
<head>
<meta charset="utf-8" />
<title>dependency graph</title>
<style>
.node:active path,
.node:hover path,
.node.current path,
.node:active polygon,
.node:hover polygon,
.node.current polygon {
stroke: fuchsia;
stroke-width: 2;
}
.edge:active path,
.edge:hover path,
.edge.current path,
.edge:active ellipse,
.edge:hover ellipse,
.edge.current ellipse {
stroke: fuchsia;
stroke-width: 3;
stroke-opacity: 1;
}
.edge:active polygon,
.edge:hover polygon,
.edge.current polygon {
stroke: fuchsia;
stroke-width: 3;
fill: fuchsia;
stroke-opacity: 1;
fill-opacity: 1;
}
.edge:active text,
.edge:hover text {
fill: fuchsia;
}
.cluster path {
stroke-width: 3;
}
.cluster:active path,
.cluster:hover path {
fill: #ffff0011;
}
div.hint {
background-color: #000000aa;
color: white;
font-family: Arial, Helvetica, sans-serif;
border-radius: 1rem;
position: fixed;
top: calc(50% - 4em);
right: calc(50% - 10em);
border: none;
padding: 1em 3em 1em 1em;
}
.hint button {
position: absolute;
font-weight: bolder;
right: 0.6em;
top: 0.6em;
color: inherit;
background-color: inherit;
border: 1px solid currentColor;
border-radius: 1em;
margin-left: 0.6em;
}
.hint a {
color: inherit;
}
#button_help {
color: white;
background-color: #00000011;
border-radius: 1em;
position: fixed;
top: 1em;
right: 1em;
font-size: 24pt;
font-weight: bolder;
width: 2em;
height: 2em;
border: none;
}
#button_help:hover {
cursor: pointer;
background-color: #00000077;
}
@media print {
#button_help {
display: none;
}
div.hint {
display: none;
}
}
</style>
</head>
<body>
<button id="button_help">?</button>
<div id="hints" class="hint" style="display: none">
<button id="close-hints">x</button>
<span id="hint-text"></span>
<ul>
<li><b>Hover</b> - highlight</li>
<li><b>Right-click</b> - pin highlight</li>
<li><b>ESC</b> - clear</li>
</ul>
</div>
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN"
"http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd">
<!-- Generated by graphviz version 8.0.5 (20230430.1635)
-->
<!-- Title: dependency&#45;cruiser output Pages: 1 -->
<svg width="1500pt" height="563pt"
viewBox="0.00 0.00 1500.00 563.35" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink">
<g id="graph0" class="graph" transform="scale(1 1) rotate(0) translate(4 559.35)">
<title>dependency&#45;cruiser output</title>
<polygon fill="white" stroke="none" points="-4,4 -4,-559.35 1496,-559.35 1496,4 -4,4"/>
<g id="clust1" class="cluster">
<title>cluster_src</title>
<path fill="#ffffff" stroke="black" stroke-width="2" d="M20,-8C20,-8 1472,-8 1472,-8 1478,-8 1484,-14 1484,-20 1484,-20 1484,-535.35 1484,-535.35 1484,-541.35 1478,-547.35 1472,-547.35 1472,-547.35 20,-547.35 20,-547.35 14,-547.35 8,-541.35 8,-535.35 8,-535.35 8,-20 8,-20 8,-14 14,-8 20,-8"/>
<text text-anchor="middle" x="746" y="-534.8" font-family="Helvetica,sans-Serif" font-weight="bold" font-size="9.00">src</text>
</g>
<g id="clust2" class="cluster">
<title>cluster_src/app</title>
<path fill="#ffffff" stroke="black" stroke-width="2" d="M355,-159C355,-159 603,-159 603,-159 609,-159 615,-165 615,-171 615,-171 615,-509.6 615,-509.6 615,-515.6 609,-521.6 603,-521.6 603,-521.6 355,-521.6 355,-521.6 349,-521.6 343,-515.6 343,-509.6 343,-509.6 343,-171 343,-171 343,-165 349,-159 355,-159"/>
<text text-anchor="middle" x="479" y="-509.05" font-family="Helvetica,sans-Serif" font-weight="bold" font-size="9.00">app</text>
</g>
<g id="clust3" class="cluster">
<title>cluster_src/app/partner</title>
<path fill="#ffffff" stroke="black" stroke-width="2" d="M375,-270C375,-270 595,-270 595,-270 601,-270 607,-276 607,-282 607,-282 607,-483.85 607,-483.85 607,-489.85 601,-495.85 595,-495.85 595,-495.85 375,-495.85 375,-495.85 369,-495.85 363,-489.85 363,-483.85 363,-483.85 363,-282 363,-282 363,-276 369,-270 375,-270"/>
<text text-anchor="middle" x="485" y="-483.3" font-family="Helvetica,sans-Serif" font-weight="bold" font-size="9.00">partner</text>
</g>
<g id="clust4" class="cluster">
<title>cluster_src/app/partner/[partnerKey]</title>
<path fill="#ffffff" stroke="black" stroke-width="2" d="M395,-278C395,-278 587,-278 587,-278 593,-278 599,-284 599,-290 599,-290 599,-458.1 599,-458.1 599,-464.1 593,-470.1 587,-470.1 587,-470.1 395,-470.1 395,-470.1 389,-470.1 383,-464.1 383,-458.1 383,-458.1 383,-290 383,-290 383,-284 389,-278 395,-278"/>
<text text-anchor="middle" x="491" y="-457.55" font-family="Helvetica,sans-Serif" font-weight="bold" font-size="9.00">[partnerKey]</text>
</g>
<g id="clust5" class="cluster">
<title>cluster_src/app/partner/[partnerKey]/savings</title>
<path fill="#ffffff" stroke="black" stroke-width="2" d="M415,-286C415,-286 579,-286 579,-286 585,-286 591,-292 591,-298 591,-298 591,-432.35 591,-432.35 591,-438.35 585,-444.35 579,-444.35 579,-444.35 415,-444.35 415,-444.35 409,-444.35 403,-438.35 403,-432.35 403,-432.35 403,-298 403,-298 403,-292 409,-286 415,-286"/>
<text text-anchor="start" x="480.12" y="-431.8" font-family="Helvetica,sans-Serif" font-weight="bold" font-size="9.00">savings</text>
</g>
<g id="clust6" class="cluster">
<title>cluster_src/app/partner/[partnerKey]/savings/@list</title>
<path fill="#ffffff" stroke="black" stroke-width="2" d="M449,-350.5C449,-350.5 495,-350.5 495,-350.5 501,-350.5 507,-356.5 507,-362.5 507,-362.5 507,-406.6 507,-406.6 507,-412.6 501,-418.6 495,-418.6 495,-418.6 449,-418.6 449,-418.6 443,-418.6 437,-412.6 437,-406.6 437,-406.6 437,-362.5 437,-362.5 437,-356.5 443,-350.5 449,-350.5"/>
<text text-anchor="start" x="461.12" y="-406.05" font-family="Helvetica,sans-Serif" font-weight="bold" font-size="9.00">@list</text>
</g>
<g id="clust7" class="cluster">
<title>cluster_src/lib</title>
<path fill="#ffffff" stroke="black" stroke-width="2" d="M62,-24C62,-24 348,-24 348,-24 354,-24 360,-30 360,-36 360,-36 360,-131.93 360,-131.93 360,-137.93 354,-143.93 348,-143.93 348,-143.93 62,-143.93 62,-143.93 56,-143.93 50,-137.93 50,-131.93 50,-131.93 50,-36 50,-36 50,-30 56,-24 62,-24"/>
<text text-anchor="middle" x="205" y="-131.38" font-family="Helvetica,sans-Serif" font-weight="bold" font-size="9.00">lib</text>
</g>
<g id="clust9" class="cluster">
<title>cluster_src/lib/middleware</title>
<path fill="#ffffff" stroke="black" stroke-width="2" d="M290,-32C290,-32 340,-32 340,-32 346,-32 352,-38 352,-44 352,-44 352,-106.17 352,-106.17 352,-112.17 346,-118.17 340,-118.17 340,-118.17 290,-118.17 290,-118.17 284,-118.17 278,-112.17 278,-106.17 278,-106.17 278,-44 278,-44 278,-38 284,-32 290,-32"/>
<text text-anchor="start" x="290.25" y="-105.62" font-family="Helvetica,sans-Serif" font-weight="bold" font-size="9.00">middleware</text>
</g>
<g id="clust8" class="cluster">
<title>cluster_src/lib/client</title>
<path fill="#ffffff" stroke="black" stroke-width="2" d="M82,-32C82,-32 130,-32 130,-32 136,-32 142,-38 142,-44 142,-44 142,-106.17 142,-106.17 142,-112.17 136,-118.17 130,-118.17 130,-118.17 82,-118.17 82,-118.17 76,-118.17 70,-112.17 70,-106.17 70,-106.17 70,-44 70,-44 70,-38 76,-32 82,-32"/>
<text text-anchor="start" x="94.38" y="-105.62" font-family="Helvetica,sans-Serif" font-weight="bold" font-size="9.00">client</text>
</g>
<g id="clust10" class="cluster">
<title>cluster_src/server</title>
<path fill="#ffffff" stroke="black" stroke-width="2" d="M380,-65.75C380,-65.75 603,-65.75 603,-65.75 609,-65.75 615,-71.75 615,-77.75 615,-77.75 615,-139 615,-139 615,-145 609,-151 603,-151 603,-151 380,-151 380,-151 374,-151 368,-145 368,-139 368,-139 368,-77.75 368,-77.75 368,-71.75 374,-65.75 380,-65.75"/>
<text text-anchor="start" x="477.25" y="-138.45" font-family="Helvetica,sans-Serif" font-weight="bold" font-size="9.00">server</text>
</g>
<g id="clust11" class="cluster">
<title>cluster_src/server/config</title>
<path fill="#ffffff" stroke="black" stroke-width="2" d="M532,-73.75C532,-73.75 595,-73.75 595,-73.75 601,-73.75 607,-79.75 607,-85.75 607,-85.75 607,-113.25 607,-113.25 607,-119.25 601,-125.25 595,-125.25 595,-125.25 532,-125.25 532,-125.25 526,-125.25 520,-119.25 520,-113.25 520,-113.25 520,-85.75 520,-85.75 520,-79.75 526,-73.75 532,-73.75"/>
<text text-anchor="middle" x="563.5" y="-112.7" font-family="Helvetica,sans-Serif" font-weight="bold" font-size="9.00">config</text>
</g>
<g id="clust12" class="cluster">
<title>cluster_src/shared</title>
<path fill="#ffffff" stroke="black" stroke-width="2" d="M635,-16C635,-16 1406,-16 1406,-16 1412,-16 1418,-22 1418,-28 1418,-28 1418,-250 1418,-250 1418,-256 1412,-262 1406,-262 1406,-262 635,-262 635,-262 629,-262 623,-256 623,-250 623,-250 623,-28 623,-28 623,-22 629,-16 635,-16"/>
<text text-anchor="middle" x="1020.5" y="-249.45" font-family="Helvetica,sans-Serif" font-weight="bold" font-size="9.00">shared</text>
</g>
<g id="clust17" class="cluster">
<title>cluster_src/shared/session</title>
<path fill="#ffffff" stroke="black" stroke-width="2" d="M655,-159C655,-159 783,-159 783,-159 789,-159 795,-165 795,-171 795,-171 795,-198.5 795,-198.5 795,-204.5 789,-210.5 783,-210.5 783,-210.5 655,-210.5 655,-210.5 649,-210.5 643,-204.5 643,-198.5 643,-198.5 643,-171 643,-171 643,-165 649,-159 655,-159"/>
<text text-anchor="middle" x="719" y="-197.95" font-family="Helvetica,sans-Serif" font-weight="bold" font-size="9.00">session</text>
</g>
<g id="clust13" class="cluster">
<title>cluster_src/shared/offers</title>
<path fill="#ffffff" stroke="black" stroke-width="2" d="M815,-24C815,-24 1017,-24 1017,-24 1023,-24 1029,-30 1029,-36 1029,-36 1029,-224.25 1029,-224.25 1029,-230.25 1023,-236.25 1017,-236.25 1017,-236.25 815,-236.25 815,-236.25 809,-236.25 803,-230.25 803,-224.25 803,-224.25 803,-36 803,-36 803,-30 809,-24 815,-24"/>
<text text-anchor="start" x="903.25" y="-223.7" font-family="Helvetica,sans-Serif" font-weight="bold" font-size="9.00">offers</text>
</g>
<g id="clust14" class="cluster">
<title>cluster_src/shared/offers/core</title>
<path fill="#ffffff" stroke="black" stroke-width="2" d="M827,-32C827,-32 897,-32 897,-32 903,-32 909,-38 909,-44 909,-44 909,-113.25 909,-113.25 909,-119.25 903,-125.25 897,-125.25 897,-125.25 827,-125.25 827,-125.25 821,-125.25 815,-119.25 815,-113.25 815,-113.25 815,-44 815,-44 815,-38 821,-32 827,-32"/>
<text text-anchor="middle" x="862" y="-112.7" font-family="Helvetica,sans-Serif" font-weight="bold" font-size="9.00">core</text>
</g>
<g id="clust15" class="cluster">
<title>cluster_src/shared/offers/marketplace</title>
<path fill="#ffffff" stroke="black" stroke-width="2" d="M835,-159C835,-159 897,-159 897,-159 903,-159 909,-165 909,-171 909,-171 909,-198.5 909,-198.5 909,-204.5 903,-210.5 897,-210.5 897,-210.5 835,-210.5 835,-210.5 829,-210.5 823,-204.5 823,-198.5 823,-198.5 823,-171 823,-171 823,-165 829,-159 835,-159"/>
<text text-anchor="middle" x="866" y="-197.95" font-family="Helvetica,sans-Serif" font-weight="bold" font-size="9.00">marketplace</text>
</g>
<g id="clust16" class="cluster">
<title>cluster_src/shared/offers/ui</title>
<path fill="#ffffff" stroke="black" stroke-width="2" d="M929,-73.75C929,-73.75 1009,-73.75 1009,-73.75 1015,-73.75 1021,-79.75 1021,-85.75 1021,-85.75 1021,-191.43 1021,-191.43 1021,-197.43 1015,-203.43 1009,-203.43 1009,-203.43 929,-203.43 929,-203.43 923,-203.43 917,-197.43 917,-191.43 917,-191.43 917,-85.75 917,-85.75 917,-79.75 923,-73.75 929,-73.75"/>
<text text-anchor="start" x="965.25" y="-190.88" font-family="Helvetica,sans-Serif" font-weight="bold" font-size="9.00">ui</text>
</g>
<g id="clust18" class="cluster">
<title>cluster_src/shared/ui</title>
<path fill="#ffffff" stroke="black" stroke-width="2" d="M1049,-159C1049,-159 1398,-159 1398,-159 1404,-159 1410,-165 1410,-171 1410,-171 1410,-198.5 1410,-198.5 1410,-204.5 1404,-210.5 1398,-210.5 1398,-210.5 1049,-210.5 1049,-210.5 1043,-210.5 1037,-204.5 1037,-198.5 1037,-198.5 1037,-171 1037,-171 1037,-165 1043,-159 1049,-159"/>
<text text-anchor="start" x="1219.75" y="-197.95" font-family="Helvetica,sans-Serif" font-weight="bold" font-size="9.00">ui</text>
</g>
<!-- src -->
<!-- src/app -->
<!-- src/app/_server -->
<g id="node3" class="node">
<title>src/app/_server</title>
<g id="a_node3"><a xlink:href="https://github.com/evenfinancial/cnf-banking/tree/aw/app-router/src/app/_server" xlink:title="_server">
<polygon fill="#ffffcc" stroke="black" points="588,-184.75 535.97,-184.75 534,-182.78 534,-167 586.03,-167 588,-168.97 588,-184.75"/>
<polyline fill="none" stroke="black" points="586.03,-182.78 534,-182.78"/>
<polyline fill="none" stroke="black" points="586.03,-182.78 586.03,-167"/>
<polyline fill="none" stroke="black" points="586.03,-182.78 588,-184.75"/>
<text text-anchor="start" x="545.62" y="-172.2" font-family="Helvetica,sans-Serif" font-size="9.00">_server</text>
</a>
</g>
</g>
<!-- src/server/config/primitives -->
<g id="node4" class="node">
<title>src/server/config/primitives</title>
<g id="a_node4"><a xlink:href="https://github.com/evenfinancial/cnf-banking/tree/aw/app-router/src/server/config/primitives" xlink:title="primitives">
<polygon fill="#ccccff" stroke="black" points="598.5,-99.5 545.47,-99.5 543.5,-97.53 543.5,-81.75 596.53,-81.75 598.5,-83.72 598.5,-99.5"/>
<polyline fill="none" stroke="black" points="596.53,-97.53 543.5,-97.53"/>
<polyline fill="none" stroke="black" points="596.53,-97.53 596.53,-81.75"/>
<polyline fill="none" stroke="black" points="596.53,-97.53 598.5,-99.5"/>
<text text-anchor="start" x="551.5" y="-86.95" font-family="Helvetica,sans-Serif" font-size="9.00">primitives</text>
</a>
</g>
</g>
<!-- src/app/_server&#45;&gt;src/server/config/primitives -->
<g id="edge1" class="edge">
<title>src/app/_server&#45;&gt;src/server/config/primitives</title>
<path fill="none" stroke="#000000" stroke-width="2" stroke-opacity="0.200000" d="M565.75,-166.75C565.75,-166.75 565.75,-108.94 565.75,-108.94"/>
<polygon fill="#000000" fill-opacity="0.200000" stroke="#000000" stroke-width="2" stroke-opacity="0.200000" points="567.85,-108.94 565.75,-102.94 563.65,-108.94 567.85,-108.94"/>
</g>
<!-- src/lib/middleware -->
<!-- src/server/config/primitives&#45;&gt;src/lib/middleware -->
<g id="edge43" class="edge">
<title>src/server/config/primitives&#45;&gt;src/lib/middleware</title>
<path fill="none" stroke="#000000" stroke-width="2" stroke-opacity="0.200000" d="M571,-81.33C571,-75.47 571,-69 571,-69 571,-69 343.71,-69 343.71,-69 343.71,-69 343.71,-80.21 343.71,-80.21"/>
<polygon fill="#000000" fill-opacity="0.200000" stroke="#000000" stroke-width="2" stroke-opacity="0.200000" points="341.61,-80.21 343.71,-86.21 345.81,-80.21 341.61,-80.21"/>
</g>
<!-- src/app/partner -->
<!-- src/app/partner/[partnerKey] -->
<!-- src/app/partner/[partnerKey]/savings -->
<!-- src/app/partner/[partnerKey]/savings/_client -->
<g id="node8" class="node">
<title>src/app/partner/[partnerKey]/savings/_client</title>
<g id="a_node8"><a xlink:href="https://github.com/evenfinancial/cnf-banking/tree/aw/app-router/src/app/partner/[partnerKey]/savings/_client" xlink:title="_client">
<polygon fill="#99faa7" stroke="black" points="493,-342.5 440.97,-342.5 439,-340.53 439,-324.75 491.03,-324.75 493,-326.72 493,-342.5"/>
<polyline fill="none" stroke="black" points="491.03,-340.53 439,-340.53"/>
<polyline fill="none" stroke="black" points="491.03,-340.53 491.03,-324.75"/>
<polyline fill="none" stroke="black" points="491.03,-340.53 493,-342.5"/>
<text text-anchor="start" x="452.5" y="-329.95" font-family="Helvetica,sans-Serif" font-size="9.00">_client</text>
</a>
</g>
</g>
<!-- src/app/partner/[partnerKey]/savings&#45;&gt;src/app/partner/[partnerKey]/savings/_client -->
<g id="edge2" class="edge">
<title>src/app/partner/[partnerKey]/savings&#45;&gt;src/app/partner/[partnerKey]/savings/_client</title>
<path fill="none" stroke="#000000" stroke-width="2" stroke-opacity="0.200000" d="M427,-365.45C427,-358.91 427,-338 427,-338 427,-338 429.91,-338 429.91,-338"/>
<polygon fill="#000000" fill-opacity="0.200000" stroke="#000000" stroke-width="2" stroke-opacity="0.200000" points="429.91,-340.1 435.91,-338 429.91,-335.9 429.91,-340.1"/>
</g>
<!-- src/lib/types -->
<g id="node9" class="node">
<title>src/lib/types</title>
<g id="a_node9"><a xlink:href="https://github.com/evenfinancial/cnf-banking/tree/aw/app-router/src/lib/types" xlink:title="types">
<polygon fill="#ffffcc" stroke="black" points="204,-99.5 151.97,-99.5 150,-97.53 150,-81.75 202.03,-81.75 204,-83.72 204,-99.5"/>
<polyline fill="none" stroke="black" points="202.03,-97.53 150,-97.53"/>
<polyline fill="none" stroke="black" points="202.03,-97.53 202.03,-81.75"/>
<polyline fill="none" stroke="black" points="202.03,-97.53 204,-99.5"/>
<text text-anchor="start" x="166.12" y="-86.95" font-family="Helvetica,sans-Serif" font-size="9.00">types</text>
</a>
</g>
</g>
<!-- src/app/partner/[partnerKey]/savings&#45;&gt;src/lib/types -->
<g id="edge3" class="edge">
<title>src/app/partner/[partnerKey]/savings&#45;&gt;src/lib/types</title>
<path fill="none" stroke="#000000" stroke-width="2" stroke-opacity="0.200000" d="M424.92,-367C401.42,-367 186.53,-367 186.53,-367 186.53,-367 186.53,-108.82 186.53,-108.82"/>
<polygon fill="#000000" fill-opacity="0.200000" stroke="#000000" stroke-width="2" stroke-opacity="0.200000" points="188.63,-108.82 186.53,-102.82 184.43,-108.82 188.63,-108.82"/>
</g>
<!-- src/app/partner/[partnerKey]/savings/_server -->
<g id="node10" class="node">
<title>src/app/partner/[partnerKey]/savings/_server</title>
<g id="a_node10"><a xlink:href="https://github.com/evenfinancial/cnf-banking/tree/aw/app-router/src/app/partner/[partnerKey]/savings/_server" xlink:title="_server">
<polygon fill="#99faa7" stroke="black" points="498,-311.75 445.97,-311.75 444,-309.78 444,-294 496.03,-294 498,-295.97 498,-311.75"/>
<polyline fill="none" stroke="black" points="496.03,-309.78 444,-309.78"/>
<polyline fill="none" stroke="black" points="496.03,-309.78 496.03,-294"/>
<polyline fill="none" stroke="black" points="496.03,-309.78 498,-311.75"/>
<text text-anchor="start" x="455.62" y="-299.2" font-family="Helvetica,sans-Serif" font-size="9.00">_server</text>
</a>
</g>
</g>
<!-- src/app/partner/[partnerKey]/savings&#45;&gt;src/app/partner/[partnerKey]/savings/_server -->
<g id="edge4" class="edge">
<title>src/app/partner/[partnerKey]/savings&#45;&gt;src/app/partner/[partnerKey]/savings/_server</title>
<path fill="none" stroke="#000000" stroke-width="2" stroke-opacity="0.200000" d="M429.18,-367C431.2,-367 433.9,-367 433.9,-367 433.9,-367 433.9,-305 433.9,-305 433.9,-305 434.87,-305 434.87,-305"/>
<polygon fill="#000000" fill-opacity="0.200000" stroke="#000000" stroke-width="2" stroke-opacity="0.200000" points="434.65,-307.1 440.65,-305 434.65,-302.9 434.65,-307.1"/>
</g>
<!-- src/shared/session/headers -->
<g id="node11" class="node">
<title>src/shared/session/headers</title>
<g id="a_node11"><a xlink:href="https://github.com/evenfinancial/cnf-banking/tree/aw/app-router/src/shared/session/headers" xlink:title="headers">
<polygon fill="#33aacc" stroke="black" points="787,-184.75 734.97,-184.75 733,-182.78 733,-167 785.03,-167 787,-168.97 787,-184.75"/>
<polyline fill="none" stroke="black" points="785.03,-182.78 733,-182.78"/>
<polyline fill="none" stroke="black" points="785.03,-182.78 785.03,-167"/>
<polyline fill="none" stroke="black" points="785.03,-182.78 787,-184.75"/>
<text text-anchor="start" x="743.12" y="-172.2" font-family="Helvetica,sans-Serif" font-size="9.00">headers</text>
</a>
</g>
</g>
<!-- src/app/partner/[partnerKey]/savings&#45;&gt;src/shared/session/headers -->
<g id="edge5" class="edge">
<title>src/app/partner/[partnerKey]/savings&#45;&gt;src/shared/session/headers</title>
<path fill="none" stroke="#000000" stroke-width="2" stroke-opacity="0.200000" d="M427,-369.35C427,-372.9 427,-380 427,-380 427,-380 769,-380 769,-380 769,-380 769,-194.18 769,-194.18"/>
<polygon fill="#000000" fill-opacity="0.200000" stroke="#000000" stroke-width="2" stroke-opacity="0.200000" points="771.1,-194.18 769,-188.18 766.9,-194.18 771.1,-194.18"/>
</g>
<!-- src/app/partner/[partnerKey]/savings/_client&#45;&gt;src/lib/types -->
<g id="edge23" class="edge">
<title>src/app/partner/[partnerKey]/savings/_client&#45;&gt;src/lib/types</title>
<path fill="none" stroke="#000000" stroke-width="2" stroke-opacity="0.200000" d="M438.62,-328C369.03,-328 190.9,-328 190.9,-328 190.9,-328 190.9,-108.93 190.9,-108.93"/>
<polygon fill="#000000" fill-opacity="0.200000" stroke="#000000" stroke-width="2" stroke-opacity="0.200000" points="193,-108.93 190.9,-102.93 188.8,-108.93 193,-108.93"/>
</g>
<!-- src/app/partner/[partnerKey]/savings/_client&#45;&gt;src/app/partner/[partnerKey]/savings/_server -->
<g id="edge25" class="edge">
<title>src/app/partner/[partnerKey]/savings/_client&#45;&gt;src/app/partner/[partnerKey]/savings/_server</title>
<path fill="none" stroke="#000000" stroke-width="2" stroke-opacity="0.200000" d="M452.17,-324.57C452.17,-324.57 452.17,-320.98 452.17,-320.98"/>
<polygon fill="#000000" fill-opacity="0.200000" stroke="#000000" stroke-width="2" stroke-opacity="0.200000" points="454.27,-320.98 452.17,-314.98 450.07,-320.98 454.27,-320.98"/>
</g>
<!-- src/lib/client/suspense -->
<g id="node18" class="node">
<title>src/lib/client/suspense</title>
<g id="a_node18"><a xlink:href="https://github.com/evenfinancial/cnf-banking/tree/aw/app-router/src/lib/client/suspense" xlink:title="suspense">
<polygon fill="#ffffcc" stroke="black" points="133.88,-57.75 80.1,-57.75 78.12,-55.78 78.12,-40 131.9,-40 133.88,-41.97 133.88,-57.75"/>
<polyline fill="none" stroke="black" points="131.9,-55.78 78.12,-55.78"/>
<polyline fill="none" stroke="black" points="131.9,-55.78 131.9,-40"/>
<polyline fill="none" stroke="black" points="131.9,-55.78 133.88,-57.75"/>
<text text-anchor="start" x="86.12" y="-45.2" font-family="Helvetica,sans-Serif" font-size="9.00">suspense</text>
</a>
</g>
</g>
<!-- src/app/partner/[partnerKey]/savings/_client&#45;&gt;src/lib/client/suspense -->
<g id="edge26" class="edge">
<title>src/app/partner/[partnerKey]/savings/_client&#45;&gt;src/lib/client/suspense</title>
<path fill="none" stroke="#000000" stroke-width="2" stroke-opacity="0.200000" d="M438.55,-331C358.45,-331 130.61,-331 130.61,-331 130.61,-331 130.61,-66.94 130.61,-66.94"/>
<polygon fill="#000000" fill-opacity="0.200000" stroke="#000000" stroke-width="2" stroke-opacity="0.200000" points="132.71,-66.94 130.61,-60.94 128.51,-66.94 132.71,-66.94"/>
</g>
<!-- src/lib/client -->
<!-- src/app/partner/[partnerKey]/savings/_client&#45;&gt;src/lib/client -->
<g id="edge22" class="edge">
<title>src/app/partner/[partnerKey]/savings/_client&#45;&gt;src/lib/client</title>
<path fill="none" stroke="#000000" stroke-width="2" stroke-opacity="0.200000" d="M438.77,-335C356.97,-335 119,-335 119,-335 119,-335 119,-101.74 119,-101.74"/>
<polygon fill="#000000" fill-opacity="0.200000" stroke="#000000" stroke-width="2" stroke-opacity="0.200000" points="121.1,-101.74 119,-95.74 116.9,-101.74 121.1,-101.74"/>
</g>
<!-- src/shared/offers/marketplace/savings -->
<g id="node22" class="node">
<title>src/shared/offers/marketplace/savings</title>
<g id="a_node22"><a xlink:href="https://github.com/evenfinancial/cnf-banking/tree/aw/app-router/src/shared/offers/marketplace/savings" xlink:title="savings">
<polygon fill="#8adbef" stroke="black" points="901,-184.75 848.97,-184.75 847,-182.78 847,-167 899.03,-167 901,-168.97 901,-184.75"/>
<polyline fill="none" stroke="black" points="899.03,-182.78 847,-182.78"/>
<polyline fill="none" stroke="black" points="899.03,-182.78 899.03,-167"/>
<polyline fill="none" stroke="black" points="899.03,-182.78 901,-184.75"/>
<text text-anchor="start" x="858.25" y="-172.2" font-family="Helvetica,sans-Serif" font-size="9.00">savings</text>
</a>
</g>
</g>
<!-- src/app/partner/[partnerKey]/savings/_client&#45;&gt;src/shared/offers/marketplace/savings -->
<g id="edge24" class="edge">
<title>src/app/partner/[partnerKey]/savings/_client&#45;&gt;src/shared/offers/marketplace/savings</title>
<path fill="none" stroke="#000000" stroke-width="2" stroke-opacity="0.200000" d="M460.33,-324.4C460.33,-320.14 460.33,-316 460.33,-316 460.33,-316 874,-316 874,-316 874,-316 874,-194.07 874,-194.07"/>
<polygon fill="#000000" fill-opacity="0.200000" stroke="#000000" stroke-width="2" stroke-opacity="0.200000" points="876.1,-194.07 874,-188.07 871.9,-194.07 876.1,-194.07"/>
</g>
<!-- src/shared/ui/AdvertiserDisclosure -->
<g id="node23" class="node">
<title>src/shared/ui/AdvertiserDisclosure</title>
<g id="a_node23"><a xlink:href="https://github.com/evenfinancial/cnf-banking/tree/aw/app-router/src/shared/ui/AdvertiserDisclosure" xlink:title="AdvertiserDisclosure">
<polygon fill="#ffffcc" stroke="black" points="1336.38,-184.75 1237.6,-184.75 1235.62,-182.78 1235.62,-167 1334.4,-167 1336.38,-168.97 1336.38,-184.75"/>
<polyline fill="none" stroke="black" points="1334.4,-182.78 1235.62,-182.78"/>
<polyline fill="none" stroke="black" points="1334.4,-182.78 1334.4,-167"/>
<polyline fill="none" stroke="black" points="1334.4,-182.78 1336.38,-184.75"/>
<text text-anchor="start" x="1243.62" y="-172.2" font-family="Helvetica,sans-Serif" font-size="9.00">AdvertiserDisclosure</text>
</a>
</g>
</g>
<!-- src/app/partner/[partnerKey]/savings/_client&#45;&gt;src/shared/ui/AdvertiserDisclosure -->
<g id="edge27" class="edge">
<title>src/app/partner/[partnerKey]/savings/_client&#45;&gt;src/shared/ui/AdvertiserDisclosure</title>
<path fill="none" stroke="#000000" stroke-width="2" stroke-opacity="0.200000" d="M484.83,-324.7C484.83,-323.14 484.83,-322 484.83,-322 484.83,-322 1286,-322 1286,-322 1286,-322 1286,-194.02 1286,-194.02"/>
<polygon fill="#000000" fill-opacity="0.200000" stroke="#000000" stroke-width="2" stroke-opacity="0.200000" points="1288.1,-194.02 1286,-188.02 1283.9,-194.02 1288.1,-194.02"/>
</g>
<!-- src/shared/ui/forms -->
<g id="node24" class="node">
<title>src/shared/ui/forms</title>
<g id="a_node24"><a xlink:href="https://github.com/evenfinancial/cnf-banking/tree/aw/app-router/src/shared/ui/forms" xlink:title="forms">
<polygon fill="#ffffcc" stroke="black" points="1402,-184.75 1349.97,-184.75 1348,-182.78 1348,-167 1400.03,-167 1402,-168.97 1402,-184.75"/>
<polyline fill="none" stroke="black" points="1400.03,-182.78 1348,-182.78"/>
<polyline fill="none" stroke="black" points="1400.03,-182.78 1400.03,-167"/>
<polyline fill="none" stroke="black" points="1400.03,-182.78 1402,-184.75"/>
<text text-anchor="start" x="1363.75" y="-172.2" font-family="Helvetica,sans-Serif" font-size="9.00">forms</text>
</a>
</g>
</g>
<!-- src/app/partner/[partnerKey]/savings/_client&#45;&gt;src/shared/ui/forms -->
<g id="edge28" class="edge">
<title>src/app/partner/[partnerKey]/savings/_client&#45;&gt;src/shared/ui/forms</title>
<path fill="none" stroke="#000000" stroke-width="2" stroke-opacity="0.200000" d="M477,-342.96C477,-346.64 477,-350 477,-350 477,-350 1375,-350 1375,-350 1375,-350 1375,-194.24 1375,-194.24"/>
<polygon fill="#000000" fill-opacity="0.200000" stroke="#000000" stroke-width="2" stroke-opacity="0.200000" points="1377.1,-194.24 1375,-188.24 1372.9,-194.24 1377.1,-194.24"/>
</g>
<!-- src/shared/ui/ResponsiveSidebar -->
<g id="node25" class="node">
<title>src/shared/ui/ResponsiveSidebar</title>
<g id="a_node25"><a xlink:href="https://github.com/evenfinancial/cnf-banking/tree/aw/app-router/src/shared/ui/ResponsiveSidebar" xlink:title="ResponsiveSidebar">
<polygon fill="#ffffcc" stroke="black" points="1157.5,-184.75 1062.47,-184.75 1060.5,-182.78 1060.5,-167 1155.53,-167 1157.5,-168.97 1157.5,-184.75"/>
<polyline fill="none" stroke="black" points="1155.53,-182.78 1060.5,-182.78"/>
<polyline fill="none" stroke="black" points="1155.53,-182.78 1155.53,-167"/>
<polyline fill="none" stroke="black" points="1155.53,-182.78 1157.5,-184.75"/>
<text text-anchor="start" x="1068.5" y="-172.2" font-family="Helvetica,sans-Serif" font-size="9.00">ResponsiveSidebar</text>
</a>
</g>
</g>
<!-- src/app/partner/[partnerKey]/savings/_client&#45;&gt;src/shared/ui/ResponsiveSidebar -->
<g id="edge29" class="edge">
<title>src/app/partner/[partnerKey]/savings/_client&#45;&gt;src/shared/ui/ResponsiveSidebar</title>
<path fill="none" stroke="#000000" stroke-width="2" stroke-opacity="0.200000" d="M468.5,-324.36C468.5,-320.99 468.5,-318 468.5,-318 468.5,-318 1109,-318 1109,-318 1109,-318 1109,-194.2 1109,-194.2"/>
<polygon fill="#000000" fill-opacity="0.200000" stroke="#000000" stroke-width="2" stroke-opacity="0.200000" points="1111.1,-194.2 1109,-188.2 1106.9,-194.2 1111.1,-194.2"/>
</g>
<!-- src/shared/ui/theme -->
<g id="node26" class="node">
<title>src/shared/ui/theme</title>
<g id="a_node26"><a xlink:href="https://github.com/evenfinancial/cnf-banking/tree/aw/app-router/src/shared/ui/theme" xlink:title="theme">
<polygon fill="#ffffcc" stroke="black" points="1224,-184.75 1171.97,-184.75 1170,-182.78 1170,-167 1222.03,-167 1224,-168.97 1224,-184.75"/>
<polyline fill="none" stroke="black" points="1222.03,-182.78 1170,-182.78"/>
<polyline fill="none" stroke="black" points="1222.03,-182.78 1222.03,-167"/>
<polyline fill="none" stroke="black" points="1222.03,-182.78 1224,-184.75"/>
<text text-anchor="start" x="1184.25" y="-172.2" font-family="Helvetica,sans-Serif" font-size="9.00">theme</text>
</a>
</g>
</g>
<!-- src/app/partner/[partnerKey]/savings/_client&#45;&gt;src/shared/ui/theme -->
<g id="edge30" class="edge">
<title>src/app/partner/[partnerKey]/savings/_client&#45;&gt;src/shared/ui/theme</title>
<path fill="none" stroke="#000000" stroke-width="2" stroke-opacity="0.200000" d="M476.67,-324.31C476.67,-321.92 476.67,-320 476.67,-320 476.67,-320 1197,-320 1197,-320 1197,-320 1197,-193.89 1197,-193.89"/>
<polygon fill="#000000" fill-opacity="0.200000" stroke="#000000" stroke-width="2" stroke-opacity="0.200000" points="1199.1,-193.89 1197,-187.89 1194.9,-193.89 1199.1,-193.89"/>
</g>
<!-- src/app/partner/[partnerKey]/savings/_server&#45;&gt;src/app/_server -->
<g id="edge39" class="edge">
<title>src/app/partner/[partnerKey]/savings/_server&#45;&gt;src/app/_server</title>
<path fill="none" stroke="#000000" stroke-width="2" stroke-opacity="0.200000" d="M484.67,-293.68C484.67,-264.36 484.67,-175 484.67,-175 484.67,-175 524.87,-175 524.87,-175"/>
<polygon fill="#000000" fill-opacity="0.200000" stroke="#000000" stroke-width="2" stroke-opacity="0.200000" points="524.87,-177.1 530.87,-175 524.87,-172.9 524.87,-177.1"/>
</g>
<!-- src/app/partner/[partnerKey]/savings/_server&#45;&gt;src/server/config/primitives -->
<g id="edge40" class="edge">
<title>src/app/partner/[partnerKey]/savings/_server&#45;&gt;src/server/config/primitives</title>
<path fill="none" stroke="#000000" stroke-width="2" stroke-opacity="0.200000" d="M498.44,-296C534.48,-296 593.25,-296 593.25,-296 593.25,-296 593.25,-108.98 593.25,-108.98"/>
<polygon fill="#000000" fill-opacity="0.200000" stroke="#000000" stroke-width="2" stroke-opacity="0.200000" points="595.35,-108.98 593.25,-102.98 591.15,-108.98 595.35,-108.98"/>
</g>
<!-- src/app/partner/[partnerKey]/savings/_server&#45;&gt;src/lib/types -->
<g id="edge37" class="edge">
<title>src/app/partner/[partnerKey]/savings/_server&#45;&gt;src/lib/types</title>
<path fill="none" stroke="#000000" stroke-width="2" stroke-opacity="0.200000" d="M443.55,-302C373.81,-302 195.27,-302 195.27,-302 195.27,-302 195.27,-108.98 195.27,-108.98"/>
<polygon fill="#000000" fill-opacity="0.200000" stroke="#000000" stroke-width="2" stroke-opacity="0.200000" points="197.37,-108.98 195.27,-102.98 193.17,-108.98 197.37,-108.98"/>
</g>
<!-- src/app/partner/[partnerKey]/savings/_server&#45;&gt;src/shared/session/headers -->
<g id="edge35" class="edge">
<title>src/app/partner/[partnerKey]/savings/_server&#45;&gt;src/shared/session/headers</title>
<path fill="none" stroke="#000000" stroke-width="2" stroke-opacity="0.200000" d="M498.36,-302C568.81,-302 751,-302 751,-302 751,-302 751,-193.95 751,-193.95"/>
<polygon fill="#000000" fill-opacity="0.200000" stroke="#000000" stroke-width="2" stroke-opacity="0.200000" points="753.1,-193.95 751,-187.95 748.9,-193.95 753.1,-193.95"/>
</g>
<!-- src/lib/middleware/accessors -->
<g id="node27" class="node">
<title>src/lib/middleware/accessors</title>
<g id="a_node27"><a xlink:href="https://github.com/evenfinancial/cnf-banking/tree/aw/app-router/src/lib/middleware/accessors" xlink:title="accessors">
<polygon fill="#ffffcc" stroke="black" points="343.62,-57.75 288.35,-57.75 286.38,-55.78 286.38,-40 341.65,-40 343.62,-41.97 343.62,-57.75"/>
<polyline fill="none" stroke="black" points="341.65,-55.78 286.38,-55.78"/>
<polyline fill="none" stroke="black" points="341.65,-55.78 341.65,-40"/>
<polyline fill="none" stroke="black" points="341.65,-55.78 343.62,-57.75"/>
<text text-anchor="start" x="294.38" y="-45.2" font-family="Helvetica,sans-Serif" font-size="9.00">accessors</text>
</a>
</g>
</g>
<!-- src/app/partner/[partnerKey]/savings/_server&#45;&gt;src/lib/middleware/accessors -->
<g id="edge31" class="edge">
<title>src/app/partner/[partnerKey]/savings/_server&#45;&gt;src/lib/middleware/accessors</title>
<path fill="none" stroke="#000000" stroke-width="2" stroke-opacity="0.200000" d="M452,-293.66C452,-247.55 452,-44 452,-44 452,-44 353.05,-44 353.05,-44"/>
<polygon fill="#000000" fill-opacity="0.200000" stroke="#000000" stroke-width="2" stroke-opacity="0.200000" points="353.05,-41.9 347.05,-44 353.05,-46.1 353.05,-41.9"/>
</g>
<!-- src/lib/server -->
<g id="node28" class="node">
<title>src/lib/server</title>
<g id="a_node28"><a xlink:href="https://github.com/evenfinancial/cnf-banking/tree/aw/app-router/src/lib/server" xlink:title="server">
<polygon fill="#ffffcc" stroke="black" points="270,-99.5 217.97,-99.5 216,-97.53 216,-81.75 268.03,-81.75 270,-83.72 270,-99.5"/>
<polyline fill="none" stroke="black" points="268.03,-97.53 216,-97.53"/>
<polyline fill="none" stroke="black" points="268.03,-97.53 268.03,-81.75"/>
<polyline fill="none" stroke="black" points="268.03,-97.53 270,-99.5"/>
<text text-anchor="start" x="230.25" y="-86.95" font-family="Helvetica,sans-Serif" font-size="9.00">server</text>
</a>
</g>
</g>
<!-- src/app/partner/[partnerKey]/savings/_server&#45;&gt;src/lib/server -->
<g id="edge32" class="edge">
<title>src/app/partner/[partnerKey]/savings/_server&#45;&gt;src/lib/server</title>
<path fill="none" stroke="#000000" stroke-width="2" stroke-opacity="0.200000" d="M443.95,-299C383.56,-299 243,-299 243,-299 243,-299 243,-108.85 243,-108.85"/>
<polygon fill="#000000" fill-opacity="0.200000" stroke="#000000" stroke-width="2" stroke-opacity="0.200000" points="245.1,-108.85 243,-102.85 240.9,-108.85 245.1,-108.85"/>
</g>
<!-- src/server/engine -->
<g id="node29" class="node">
<title>src/server/engine</title>
<g id="a_node29"><a xlink:href="https://github.com/evenfinancial/cnf-banking/tree/aw/app-router/src/server/engine" xlink:title="engine">
<polygon fill="#ccccff" stroke="black" points="512,-99.5 459.97,-99.5 458,-97.53 458,-81.75 510.03,-81.75 512,-83.72 512,-99.5"/>
<polyline fill="none" stroke="black" points="510.03,-97.53 458,-97.53"/>
<polyline fill="none" stroke="black" points="510.03,-97.53 510.03,-81.75"/>
<polyline fill="none" stroke="black" points="510.03,-97.53 512,-99.5"/>
<text text-anchor="start" x="470.75" y="-86.95" font-family="Helvetica,sans-Serif" font-size="9.00">engine</text>
</a>
</g>
</g>
<!-- src/app/partner/[partnerKey]/savings/_server&#45;&gt;src/server/engine -->
<g id="edge33" class="edge">
<title>src/app/partner/[partnerKey]/savings/_server&#45;&gt;src/server/engine</title>
<path fill="none" stroke="#000000" stroke-width="2" stroke-opacity="0.200000" d="M471.33,-293.75C471.33,-293.75 471.33,-108.95 471.33,-108.95"/>
<polygon fill="#000000" fill-opacity="0.200000" stroke="#000000" stroke-width="2" stroke-opacity="0.200000" points="473.43,-108.95 471.33,-102.95 469.23,-108.95 473.43,-108.95"/>
</g>
<!-- src/shared/offers -->
<!-- src/app/partner/[partnerKey]/savings/_server&#45;&gt;src/shared/offers -->
<g id="edge34" class="edge">
<title>src/app/partner/[partnerKey]/savings/_server&#45;&gt;src/shared/offers</title>
<path fill="none" stroke="#000000" stroke-width="2" stroke-opacity="0.200000" d="M498.41,-305C579.56,-305 813,-305 813,-305 813,-305 813,-187.12 813,-187.12"/>
<polygon fill="#000000" fill-opacity="0.200000" stroke="#000000" stroke-width="2" stroke-opacity="0.200000" points="815.1,-187.12 813,-181.12 810.9,-187.12 815.1,-187.12"/>
</g>
<!-- src/shared/session/state -->
<g id="node31" class="node">
<title>src/shared/session/state</title>
<g id="a_node31"><a xlink:href="https://github.com/evenfinancial/cnf-banking/tree/aw/app-router/src/shared/session/state" xlink:title="state">
<polygon fill="#33aacc" stroke="black" points="721,-184.75 668.97,-184.75 667,-182.78 667,-167 719.03,-167 721,-168.97 721,-184.75"/>
<polyline fill="none" stroke="black" points="719.03,-182.78 667,-182.78"/>
<polyline fill="none" stroke="black" points="719.03,-182.78 719.03,-167"/>
<polyline fill="none" stroke="black" points="719.03,-182.78 721,-184.75"/>
<text text-anchor="start" x="684.25" y="-172.2" font-family="Helvetica,sans-Serif" font-size="9.00">state</text>
</a>
</g>
</g>
<!-- src/app/partner/[partnerKey]/savings/_server&#45;&gt;src/shared/session/state -->
<g id="edge36" class="edge">
<title>src/app/partner/[partnerKey]/savings/_server&#45;&gt;src/shared/session/state</title>
<path fill="none" stroke="#000000" stroke-width="2" stroke-opacity="0.200000" d="M498.34,-299C557.89,-299 694,-299 694,-299 694,-299 694,-194.13 694,-194.13"/>
<polygon fill="#000000" fill-opacity="0.200000" stroke="#000000" stroke-width="2" stroke-opacity="0.200000" points="696.1,-194.13 694,-188.13 691.9,-194.13 696.1,-194.13"/>
</g>
<!-- src/app/partner/[partnerKey]/savings/_server&#45;&gt;src/lib/middleware -->
<g id="edge38" class="edge">
<title>src/app/partner/[partnerKey]/savings/_server&#45;&gt;src/lib/middleware</title>
<path fill="none" stroke="#000000" stroke-width="2" stroke-opacity="0.200000" d="M443.64,-296C405.78,-296 342,-296 342,-296 342,-296 342,-101.4 342,-101.4"/>
<polygon fill="#000000" fill-opacity="0.200000" stroke="#000000" stroke-width="2" stroke-opacity="0.200000" points="344.1,-101.4 342,-95.4 339.9,-101.4 344.1,-101.4"/>
</g>
<!-- src/app/partner/[partnerKey]/savings/@bridgeAddon -->
<g id="node12" class="node">
<title>src/app/partner/[partnerKey]/savings/@bridgeAddon</title>
<g id="a_node12"><a xlink:href="https://github.com/evenfinancial/cnf-banking/tree/aw/app-router/src/app/partner/[partnerKey]/savings/@bridgeAddon" xlink:title="@bridgeAddon">
<polygon fill="#99faa7" stroke="black" points="583.12,-342.5 506.85,-342.5 504.88,-340.53 504.88,-324.75 581.15,-324.75 583.12,-326.72 583.12,-342.5"/>
<polyline fill="none" stroke="black" points="581.15,-340.53 504.88,-340.53"/>
<polyline fill="none" stroke="black" points="581.15,-340.53 581.15,-324.75"/>
<polyline fill="none" stroke="black" points="581.15,-340.53 583.12,-342.5"/>
<text text-anchor="start" x="512.88" y="-329.95" font-family="Helvetica,sans-Serif" font-size="9.00">@bridgeAddon</text>
</a>
</g>
</g>
<!-- src/app/partner/[partnerKey]/savings/@bridgeAddon&#45;&gt;src/lib/types -->
<g id="edge11" class="edge">
<title>src/app/partner/[partnerKey]/savings/@bridgeAddon&#45;&gt;src/lib/types</title>
<path fill="none" stroke="#000000" stroke-width="2" stroke-opacity="0.200000" d="M510.57,-324.55C510.57,-300.87 510.57,-239 510.57,-239 510.57,-239 199.63,-239 199.63,-239 199.63,-239 199.63,-108.91 199.63,-108.91"/>
<polygon fill="#000000" fill-opacity="0.200000" stroke="#000000" stroke-width="2" stroke-opacity="0.200000" points="201.73,-108.91 199.63,-102.91 197.53,-108.91 201.73,-108.91"/>
</g>
<!-- src/app/partner/[partnerKey]/savings/@bridgeAddon&#45;&gt;src/app/partner/[partnerKey]/savings/_server -->
<g id="edge10" class="edge">
<title>src/app/partner/[partnerKey]/savings/@bridgeAddon&#45;&gt;src/app/partner/[partnerKey]/savings/_server</title>
<path fill="none" stroke="#000000" stroke-width="2" stroke-opacity="0.200000" d="M509.15,-324.37C509.15,-317.03 509.15,-308 509.15,-308 509.15,-308 507.32,-308 507.32,-308"/>
<polygon fill="#000000" fill-opacity="0.200000" stroke="#000000" stroke-width="2" stroke-opacity="0.200000" points="507.32,-305.9 501.32,-308 507.32,-310.1 507.32,-305.9"/>
</g>
<!-- src/server/cms -->
<g id="node13" class="node">
<title>src/server/cms</title>
<g id="a_node13"><a xlink:href="https://github.com/evenfinancial/cnf-banking/tree/aw/app-router/src/server/cms" xlink:title="cms">
<polygon fill="#ccccff" stroke="black" points="446,-99.5 393.97,-99.5 392,-97.53 392,-81.75 444.03,-81.75 446,-83.72 446,-99.5"/>
<polyline fill="none" stroke="black" points="444.03,-97.53 392,-97.53"/>
<polyline fill="none" stroke="black" points="444.03,-97.53 444.03,-81.75"/>
<polyline fill="none" stroke="black" points="444.03,-97.53 446,-99.5"/>
<text text-anchor="start" x="410.75" y="-86.95" font-family="Helvetica,sans-Serif" font-size="9.00">cms</text>
</a>
</g>
</g>
<!-- src/app/partner/[partnerKey]/savings/@bridgeAddon&#45;&gt;src/server/cms -->
<g id="edge6" class="edge">
<title>src/app/partner/[partnerKey]/savings/@bridgeAddon&#45;&gt;src/server/cms</title>
<path fill="none" stroke="#000000" stroke-width="2" stroke-opacity="0.200000" d="M507.73,-324.28C507.73,-318.82 507.73,-313 507.73,-313 507.73,-313 431.35,-313 431.35,-313 431.35,-313 431.35,-108.9 431.35,-108.9"/>
<polygon fill="#000000" fill-opacity="0.200000" stroke="#000000" stroke-width="2" stroke-opacity="0.200000" points="433.45,-108.9 431.35,-102.9 429.25,-108.9 433.45,-108.9"/>
</g>
<!-- src/shared/offers/core/model -->
<g id="node14" class="node">
<title>src/shared/offers/core/model</title>
<g id="a_node14"><a xlink:href="https://github.com/evenfinancial/cnf-banking/tree/aw/app-router/src/shared/offers/core/model" xlink:title="model">
<polygon fill="#8adbef" stroke="black" points="901,-57.75 848.97,-57.75 847,-55.78 847,-40 899.03,-40 901,-41.97 901,-57.75"/>
<polyline fill="none" stroke="black" points="899.03,-55.78 847,-55.78"/>
<polyline fill="none" stroke="black" points="899.03,-55.78 899.03,-40"/>
<polyline fill="none" stroke="black" points="899.03,-55.78 901,-57.75"/>
<text text-anchor="start" x="861.25" y="-45.2" font-family="Helvetica,sans-Serif" font-size="9.00">model</text>
</a>
</g>
</g>
<!-- src/app/partner/[partnerKey]/savings/@bridgeAddon&#45;&gt;src/shared/offers/core/model -->
<g id="edge7" class="edge">
<title>src/app/partner/[partnerKey]/savings/@bridgeAddon&#45;&gt;src/shared/offers/core/model</title>
<path fill="none" stroke="#000000" stroke-width="2" stroke-opacity="0.200000" d="M520.1,-324.45C520.1,-275.56 520.1,-48 520.1,-48 520.1,-48 837.52,-48 837.52,-48"/>
<polygon fill="#000000" fill-opacity="0.200000" stroke="#000000" stroke-width="2" stroke-opacity="0.200000" points="837.52,-50.1 843.52,-48 837.52,-45.9 837.52,-50.1"/>
</g>
<!-- src/shared/offers/ui -->
<!-- src/app/partner/[partnerKey]/savings/@bridgeAddon&#45;&gt;src/shared/offers/ui -->
<g id="edge8" class="edge">
<title>src/app/partner/[partnerKey]/savings/@bridgeAddon&#45;&gt;src/shared/offers/ui</title>
<path fill="none" stroke="#000000" stroke-width="2" stroke-opacity="0.200000" d="M583.55,-330C681.4,-330 927,-330 927,-330 927,-330 927,-187.05 927,-187.05"/>
<polygon fill="#000000" fill-opacity="0.200000" stroke="#000000" stroke-width="2" stroke-opacity="0.200000" points="929.1,-187.05 927,-181.05 924.9,-187.05 929.1,-187.05"/>
</g>
<!-- src/shared/offers/ui/SavingsOfferCard -->
<g id="node16" class="node">
<title>src/shared/offers/ui/SavingsOfferCard</title>
<g id="a_node16"><a xlink:href="https://github.com/evenfinancial/cnf-banking/tree/aw/app-router/src/shared/offers/ui/SavingsOfferCard" xlink:title="SavingsOfferCard">
<polygon fill="#8adbef" stroke="black" points="1013.38,-99.5 926.6,-99.5 924.62,-97.53 924.62,-81.75 1011.4,-81.75 1013.38,-83.72 1013.38,-99.5"/>
<polyline fill="none" stroke="black" points="1011.4,-97.53 924.62,-97.53"/>
<polyline fill="none" stroke="black" points="1011.4,-97.53 1011.4,-81.75"/>
<polyline fill="none" stroke="black" points="1011.4,-97.53 1013.38,-99.5"/>
<text text-anchor="start" x="932.62" y="-86.95" font-family="Helvetica,sans-Serif" font-size="9.00">SavingsOfferCard</text>
</a>
</g>
</g>
<!-- src/app/partner/[partnerKey]/savings/@bridgeAddon&#45;&gt;src/shared/offers/ui/SavingsOfferCard -->
<g id="edge9" class="edge">
<title>src/app/partner/[partnerKey]/savings/@bridgeAddon&#45;&gt;src/shared/offers/ui/SavingsOfferCard</title>
<path fill="none" stroke="#000000" stroke-width="2" stroke-opacity="0.200000" d="M583.6,-336C686.97,-336 956.99,-336 956.99,-336 956.99,-336 956.99,-108.94 956.99,-108.94"/>
<polygon fill="#000000" fill-opacity="0.200000" stroke="#000000" stroke-width="2" stroke-opacity="0.200000" points="959.09,-108.94 956.99,-102.94 954.89,-108.94 959.09,-108.94"/>
</g>
<!-- src/shared/offers/ui&#45;&gt;src/shared/offers/ui/SavingsOfferCard -->
<g id="edge47" class="edge">
<title>src/shared/offers/ui&#45;&gt;src/shared/offers/ui/SavingsOfferCard</title>
<path fill="none" stroke="#000000" stroke-width="2" stroke-opacity="0.200000" d="M927,-173.77C927,-173.77 927,-108.93 927,-108.93"/>
<polygon fill="#000000" fill-opacity="0.200000" stroke="#000000" stroke-width="2" stroke-opacity="0.200000" points="929.1,-108.93 927,-102.93 924.9,-108.93 929.1,-108.93"/>
</g>
<!-- src/app/partner/[partnerKey]/savings/@list -->
<!-- src/app/partner/[partnerKey]/savings/@list&#45;&gt;src/lib/types -->
<g id="edge12" class="edge">
<title>src/app/partner/[partnerKey]/savings/@list&#45;&gt;src/lib/types</title>
<path fill="none" stroke="#000000" stroke-width="2" stroke-opacity="0.200000" d="M447,-393.08C447,-397.97 447,-410 447,-410 447,-410 182.17,-410 182.17,-410 182.17,-410 182.17,-108.84 182.17,-108.84"/>
<polygon fill="#000000" fill-opacity="0.200000" stroke="#000000" stroke-width="2" stroke-opacity="0.200000" points="184.27,-108.84 182.17,-102.84 180.07,-108.84 184.27,-108.84"/>
</g>
<!-- src/app/partner/[partnerKey]/savings/@list&#45;&gt;src/app/partner/[partnerKey]/savings/_server -->
<g id="edge15" class="edge">
<title>src/app/partner/[partnerKey]/savings/@list&#45;&gt;src/app/partner/[partnerKey]/savings/_server</title>
<path fill="none" stroke="#000000" stroke-width="2" stroke-opacity="0.200000" d="M444.97,-391C441.9,-391 436.45,-391 436.45,-391 436.45,-391 436.45,-308 436.45,-308 436.45,-308 437.18,-308 437.18,-308"/>
<polygon fill="#000000" fill-opacity="0.200000" stroke="#000000" stroke-width="2" stroke-opacity="0.200000" points="434.78,-310.1 440.78,-308 434.78,-305.9 434.78,-310.1"/>
</g>
<!-- src/app/partner/[partnerKey]/savings/@list&#45;&gt;src/shared/offers/ui/SavingsOfferCard -->
<g id="edge14" class="edge">
<title>src/app/partner/[partnerKey]/savings/@list&#45;&gt;src/shared/offers/ui/SavingsOfferCard</title>
<path fill="none" stroke="#000000" stroke-width="2" stroke-opacity="0.200000" d="M448.95,-391C484.18,-391 985.18,-391 985.18,-391 985.18,-391 985.18,-108.94 985.18,-108.94"/>
<polygon fill="#000000" fill-opacity="0.200000" stroke="#000000" stroke-width="2" stroke-opacity="0.200000" points="987.28,-108.94 985.18,-102.94 983.08,-108.94 987.28,-108.94"/>
</g>
<!-- src/app/partner/[partnerKey]/savings/@list&#45;&gt;src/lib/client/suspense -->
<g id="edge13" class="edge">
<title>src/app/partner/[partnerKey]/savings/@list&#45;&gt;src/lib/client/suspense</title>
<path fill="none" stroke="#000000" stroke-width="2" stroke-opacity="0.200000" d="M448.76,-390C454.75,-390 473.9,-390 473.9,-390 473.9,-390 473.9,-384 473.9,-384 473.9,-384 124.07,-384 124.07,-384 124.07,-384 124.07,-67.19 124.07,-67.19"/>
<polygon fill="#000000" fill-opacity="0.200000" stroke="#000000" stroke-width="2" stroke-opacity="0.200000" points="126.17,-67.19 124.07,-61.19 121.97,-67.19 126.17,-67.19"/>
</g>
<!-- src/app/partner/[partnerKey]/savings/@list/_client -->
<g id="node19" class="node">
<title>src/app/partner/[partnerKey]/savings/@list/_client</title>
<g id="a_node19"><a xlink:href="https://github.com/evenfinancial/cnf-banking/tree/aw/app-router/src/app/partner/[partnerKey]/savings/@list/_client" xlink:title="_client">
<polygon fill="#99faa7" stroke="black" points="499,-376.25 446.97,-376.25 445,-374.28 445,-358.5 497.03,-358.5 499,-360.47 499,-376.25"/>
<polyline fill="none" stroke="black" points="497.03,-374.28 445,-374.28"/>
<polyline fill="none" stroke="black" points="497.03,-374.28 497.03,-358.5"/>
<polyline fill="none" stroke="black" points="497.03,-374.28 499,-376.25"/>
<text text-anchor="start" x="458.5" y="-363.7" font-family="Helvetica,sans-Serif" font-size="9.00">_client</text>
</a>
</g>
</g>
<!-- src/app/partner/[partnerKey]/savings/@list&#45;&gt;src/app/partner/[partnerKey]/savings/@list/_client -->
<g id="edge16" class="edge">
<title>src/app/partner/[partnerKey]/savings/@list&#45;&gt;src/app/partner/[partnerKey]/savings/@list/_client</title>
<path fill="none" stroke="#000000" stroke-width="2" stroke-opacity="0.200000" d="M447,-388.87C447,-388.87 447,-385.36 447,-385.36"/>
<polygon fill="#000000" fill-opacity="0.200000" stroke="#000000" stroke-width="2" stroke-opacity="0.200000" points="449.1,-385.36 447,-379.36 444.9,-385.36 449.1,-385.36"/>
</g>
<!-- src/app/partner/[partnerKey]/savings/@list/_client&#45;&gt;src/app/partner/[partnerKey]/savings/_client -->
<g id="edge17" class="edge">
<title>src/app/partner/[partnerKey]/savings/@list/_client&#45;&gt;src/app/partner/[partnerKey]/savings/_client</title>
<path fill="none" stroke="#000000" stroke-width="2" stroke-opacity="0.200000" d="M461,-358.15C461,-358.15 461,-351.6 461,-351.6"/>
<polygon fill="#000000" fill-opacity="0.200000" stroke="#000000" stroke-width="2" stroke-opacity="0.200000" points="463.1,-351.6 461,-345.6 458.9,-351.6 463.1,-351.6"/>
</g>
<!-- src/app/partner/[partnerKey]/savings/@list/_client&#45;&gt;src/shared/offers/core/model -->
<g id="edge19" class="edge">
<title>src/app/partner/[partnerKey]/savings/@list/_client&#45;&gt;src/shared/offers/core/model</title>
<path fill="none" stroke="#000000" stroke-width="2" stroke-opacity="0.200000" d="M499.47,-362C551.86,-362 660.9,-362 660.9,-362 660.9,-362 660.9,-53 660.9,-53 660.9,-53 837.58,-53 837.58,-53"/>
<polygon fill="#000000" fill-opacity="0.200000" stroke="#000000" stroke-width="2" stroke-opacity="0.200000" points="837.58,-55.1 843.58,-53 837.58,-50.9 837.58,-55.1"/>
</g>
<!-- src/app/partner/[partnerKey]/savings/@list/_client&#45;&gt;src/shared/offers/ui -->
<g id="edge21" class="edge">
<title>src/app/partner/[partnerKey]/savings/@list/_client&#45;&gt;src/shared/offers/ui</title>
<path fill="none" stroke="#000000" stroke-width="2" stroke-opacity="0.200000" d="M499.24,-371C595.35,-371 912.81,-371 912.81,-371 912.81,-371 912.81,-175 912.81,-175 912.81,-175 916.26,-175 916.26,-175"/>
<polygon fill="#000000" fill-opacity="0.200000" stroke="#000000" stroke-width="2" stroke-opacity="0.200000" points="916.26,-177.1 922.26,-175 916.26,-172.9 916.26,-177.1"/>
</g>
<!-- src/app/partner/[partnerKey]/savings/@list/_client&#45;&gt;src/lib/client/suspense -->
<g id="edge18" class="edge">
<title>src/app/partner/[partnerKey]/savings/@list/_client&#45;&gt;src/lib/client/suspense</title>
<path fill="none" stroke="#000000" stroke-width="2" stroke-opacity="0.200000" d="M444.67,-362C363.15,-362 127.34,-362 127.34,-362 127.34,-362 127.34,-67.25 127.34,-67.25"/>
<polygon fill="#000000" fill-opacity="0.200000" stroke="#000000" stroke-width="2" stroke-opacity="0.200000" points="129.44,-67.25 127.34,-61.25 125.24,-67.25 129.44,-67.25"/>
</g>
<!-- src/shared/offers/core/registration -->
<g id="node20" class="node">
<title>src/shared/offers/core/registration</title>
<g id="a_node20"><a xlink:href="https://github.com/evenfinancial/cnf-banking/tree/aw/app-router/src/shared/offers/core/registration" xlink:title="registration">
<polygon fill="#8adbef" stroke="black" points="900.88,-99.5 841.1,-99.5 839.12,-97.53 839.12,-81.75 898.9,-81.75 900.88,-83.72 900.88,-99.5"/>
<polyline fill="none" stroke="black" points="898.9,-97.53 839.12,-97.53"/>
<polyline fill="none" stroke="black" points="898.9,-97.53 898.9,-81.75"/>
<polyline fill="none" stroke="black" points="898.9,-97.53 900.88,-99.5"/>
<text text-anchor="start" x="847.12" y="-86.95" font-family="Helvetica,sans-Serif" font-size="9.00">registration</text>
</a>
</g>
</g>
<!-- src/app/partner/[partnerKey]/savings/@list/_client&#45;&gt;src/shared/offers/core/registration -->
<g id="edge20" class="edge">
<title>src/app/partner/[partnerKey]/savings/@list/_client&#45;&gt;src/shared/offers/core/registration</title>
<path fill="none" stroke="#000000" stroke-width="2" stroke-opacity="0.200000" d="M499.29,-367C584.98,-367 843.06,-367 843.06,-367 843.06,-367 843.06,-108.82 843.06,-108.82"/>
<polygon fill="#000000" fill-opacity="0.200000" stroke="#000000" stroke-width="2" stroke-opacity="0.200000" points="845.16,-108.82 843.06,-102.82 840.96,-108.82 845.16,-108.82"/>
</g>
<!-- src/shared/offers/core/registration&#45;&gt;src/shared/offers/core/model -->
<g id="edge44" class="edge">
<title>src/shared/offers/core/registration&#45;&gt;src/shared/offers/core/model</title>
<path fill="none" stroke="#000000" stroke-width="2" stroke-opacity="0.200000" d="M873.94,-81.36C873.94,-81.36 873.94,-67.11 873.94,-67.11"/>
<polygon fill="#000000" fill-opacity="0.200000" stroke="#000000" stroke-width="2" stroke-opacity="0.200000" points="876.04,-67.11 873.94,-61.11 871.84,-67.11 876.04,-67.11"/>
</g>
<!-- src/lib/client&#45;&gt;src/lib/client/suspense -->
<g id="edge41" class="edge">
<title>src/lib/client&#45;&gt;src/lib/client/suspense</title>
<path fill="none" stroke="#000000" stroke-width="2" stroke-opacity="0.200000" d="M119,-88.38C119,-88.38 119,-67 119,-67"/>
<polygon fill="#000000" fill-opacity="0.200000" stroke="#000000" stroke-width="2" stroke-opacity="0.200000" points="121.1,-67 119,-61 116.9,-67 121.1,-67"/>
</g>
<!-- src/shared/offers/marketplace/savings&#45;&gt;src/shared/offers/core/registration -->
<g id="edge45" class="edge">
<title>src/shared/offers/marketplace/savings&#45;&gt;src/shared/offers/core/registration</title>
<path fill="none" stroke="#000000" stroke-width="2" stroke-opacity="0.200000" d="M882.92,-166.75C882.92,-166.75 882.92,-108.94 882.92,-108.94"/>
<polygon fill="#000000" fill-opacity="0.200000" stroke="#000000" stroke-width="2" stroke-opacity="0.200000" points="885.02,-108.94 882.92,-102.94 880.82,-108.94 885.02,-108.94"/>
</g>
<!-- src/shared/offers/marketplace/savings&#45;&gt;src/server/engine -->
<g id="edge46" class="edge">
<title>src/shared/offers/marketplace/savings&#45;&gt;src/server/engine</title>
<path fill="none" stroke="#000000" stroke-width="2" stroke-opacity="0.200000" d="M864.96,-166.98C864.96,-151.68 864.96,-122 864.96,-122 864.96,-122 506.3,-122 506.3,-122 506.3,-122 506.3,-108.87 506.3,-108.87"/>
<polygon fill="#000000" fill-opacity="0.200000" stroke="#000000" stroke-width="2" stroke-opacity="0.200000" points="508.4,-108.87 506.3,-102.87 504.2,-108.87 508.4,-108.87"/>
</g>
<!-- src/shared/session/state&#45;&gt;src/lib/middleware -->
<g id="edge48" class="edge">
<title>src/shared/session/state&#45;&gt;src/lib/middleware</title>
<path fill="none" stroke="#000000" stroke-width="2" stroke-opacity="0.200000" d="M694,-166.83C694,-157.4 694,-144 694,-144 694,-144 373,-144 373,-144 373,-144 373,-90 373,-90 373,-90 353.03,-90 353.03,-90"/>
<polygon fill="#000000" fill-opacity="0.200000" stroke="#000000" stroke-width="2" stroke-opacity="0.200000" points="353.03,-87.9 347.03,-90 353.03,-92.1 353.03,-87.9"/>
</g>
<!-- src/lib/middleware&#45;&gt;src/lib/middleware/accessors -->
<g id="edge42" class="edge">
<title>src/lib/middleware&#45;&gt;src/lib/middleware/accessors</title>
<path fill="none" stroke="#000000" stroke-width="2" stroke-opacity="0.200000" d="M341.91,-88.38C341.91,-88.38 341.91,-67 341.91,-67"/>
<polygon fill="#000000" fill-opacity="0.200000" stroke="#000000" stroke-width="2" stroke-opacity="0.200000" points="344.01,-67 341.91,-61 339.81,-67 344.01,-67"/>
</g>
<!-- src/lib -->
<!-- src/server -->
<!-- src/server/config -->
<!-- src/shared -->
<!-- src/shared/offers/core -->
<!-- src/shared/offers/marketplace -->
<!-- src/shared/session -->
<!-- src/shared/ui -->
</g>
</svg>
<script>var gMode = new Mode();
var title2ElementMap = (function makeElementMap() {
/** @type {NodeListOf<SVGGElement>} */
var nodes = document.querySelectorAll(".node");
/** @type {NodeListOf<SVGGElement>} */
var edges = document.querySelectorAll(".edge");
return new Title2ElementMap(edges, nodes);
})();
function getHoverHandler(pTitle2ElementMap) {
/** @type {string} */
var currentHighlightedTitle;
/** @param {MouseEvent} pMouseEvent */
return function hoverHighlightHandler(pMouseEvent) {
var closestNodeOrEdge = pMouseEvent.target.closest(".edge, .node");
var closestTitleText = getTitleText(closestNodeOrEdge);
if (
!(currentHighlightedTitle === closestTitleText) &&
gMode.get() === gMode.HOVER
) {
resetNodesAndEdges();
addHighlight(closestNodeOrEdge);
pTitle2ElementMap.get(closestTitleText).forEach(addHighlight);
currentHighlightedTitle = closestTitleText;
}
};
}
function getSelectHandler(pTitle2ElementMap) {
/** @type {string} */
var currentHighlightedTitle;
/** @param {MouseEvent} pMouseEvent */
return function selectHighlightHandler(pMouseEvent) {
pMouseEvent.preventDefault();
var closestNodeOrEdge = pMouseEvent.target.closest(".edge, .node");
var closestTitleText = getTitleText(closestNodeOrEdge);
if (!!closestNodeOrEdge) {
gMode.setToSelect();
} else {
gMode.setToHover();
}
if (!(currentHighlightedTitle === closestTitleText)) {
resetNodesAndEdges();
addHighlight(closestNodeOrEdge);
pTitle2ElementMap.get(closestTitleText).forEach(addHighlight);
currentHighlightedTitle = closestTitleText;
}
};
}
function Mode() {
var HOVER = 1;
var SELECT = 2;
function setToHover() {
this._mode = HOVER;
}
function setToSelect() {
this._mode = SELECT;
}
function get() {
return this._mode || HOVER;
}
return {
HOVER: HOVER,
SELECT: SELECT,
setToHover: setToHover,
setToSelect: setToSelect,
get: get,
};
}
/**
*
* @param {SVGGelement[]} pEdges
* @param {SVGGElement[]} pNodes
* @return {{get: (pTitleText:string) => SVGGElement[]}}
*/
function Title2ElementMap(pEdges, pNodes) {
/* {{[key: string]: SVGGElement[]}} */
var elementMap = buildMap(pEdges, pNodes);
/**
* @param {NodeListOf<SVGGElement>} pEdges
* @param {NodeListOf<SVGGElement>} pNodes
* @return {{[key: string]: SVGGElement[]}}
*/
function buildMap(pEdges, pNodes) {
var title2NodeMap = buildTitle2NodeMap(pNodes);
return nodeListToArray(pEdges).reduce(addEdgeToMap(title2NodeMap), {});
}
/**
* @param {NodeListOf<SVGGElement>} pNodes
* @return {{[key: string]: SVGGElement}}
*/
function buildTitle2NodeMap(pNodes) {
return nodeListToArray(pNodes).reduce(addNodeToMap, {});
}
function addNodeToMap(pMap, pNode) {
var titleText = getTitleText(pNode);
if (titleText) {
pMap[titleText] = pNode;
}
return pMap;
}
function addEdgeToMap(pNodeMap) {
return function (pEdgeMap, pEdge) {
/** @type {string} */
var titleText = getTitleText(pEdge);
if (titleText) {
var edge = pryEdgeFromTitle(titleText);
pEdgeMap[titleText] = [pNodeMap[edge.from], pNodeMap[edge.to]];
(pEdgeMap[edge.from] || (pEdgeMap[edge.from] = [])).push(pEdge);
(pEdgeMap[edge.to] || (pEdgeMap[edge.to] = [])).push(pEdge);
}
return pEdgeMap;
};
}
/**
*
* @param {string} pString
* @return {{from?: string; to?:string;}}
*/
function pryEdgeFromTitle(pString) {
var nodeNames = pString.split(/\s*->\s*/);
return {
from: nodeNames.shift(),
to: nodeNames.shift(),
};
}
/**
*
* @param {string} pTitleText
* @return {SVGGElement[]}
*/
function get(pTitleText) {
return (pTitleText && elementMap[pTitleText]) || [];
}
return {
get: get,
};
}
/**
* @param {SVGGElement} pGElement
* @return {string?}
*/
function getTitleText(pGElement) {
/** @type {SVGTitleElement} */
var title = pGElement && pGElement.querySelector("title");
/** @type {string} */
var titleText = title && title.textContent;
if (titleText) {
titleText = titleText.trim();
}
return titleText;
}
/**
* @param {NodeListOf<Element>} pNodeList
* @return {Element[]}
*/
function nodeListToArray(pNodeList) {
var lReturnValue = [];
pNodeList.forEach(function (pElement) {
lReturnValue.push(pElement);
});
return lReturnValue;
}
function resetNodesAndEdges() {
nodeListToArray(document.querySelectorAll(".current")).forEach(
removeHighlight
);
}
/**
* @param {SVGGElement} pGElement
*/
function removeHighlight(pGElement) {
if (pGElement && pGElement.classList) {
pGElement.classList.remove("current");
}
}
/**
* @param {SVGGElement} pGroup
*/
function addHighlight(pGroup) {
if (pGroup && pGroup.classList) {
pGroup.classList.add("current");
}
}
var hints = {
HIDDEN: 1,
SHOWN: 2,
state: this.HIDDEN,
show: function () {
document.getElementById("hints").removeAttribute("style");
hints.state = hints.SHOWN;
},
hide: function () {
document.getElementById("hints").style = "display:none";
hints.state = hints.HIDDEN;
},
toggle: function () {
if ((hints.state || hints.HIDDEN) === hints.HIDDEN) {
hints.show();
} else {
hints.hide();
}
},
};
/** @param {KeyboardEvent} pKeyboardEvent */
function keyboardEventHandler(pKeyboardEvent) {
if (pKeyboardEvent.key === "Escape") {
resetNodesAndEdges();
gMode.setToHover();
hints.hide();
}
if (pKeyboardEvent.key === "F1") {
pKeyboardEvent.preventDefault();
hints.toggle();
}
}
document.addEventListener("contextmenu", getSelectHandler(title2ElementMap));
document.addEventListener("mouseover", getHoverHandler(title2ElementMap));
document.addEventListener("keydown", keyboardEventHandler);
document.getElementById("close-hints").addEventListener("click", hints.hide);
document.getElementById("button_help").addEventListener("click", hints.toggle);
</script> </body>
</html>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment