From b2e01909ee9810ee08f43baf6862f458ceee5836 Mon Sep 17 00:00:00 2001 From: Andreas Berger Date: Mon, 25 Jul 2022 09:16:37 +0200 Subject: [PATCH 1/6] add support for sankey links with arrows --- src/traces/sankey/attributes.js | 8 ++ src/traces/sankey/defaults.js | 1 + src/traces/sankey/render.js | 71 ++++++++++-------- .../baselines/sankey_circular_with_arrows.png | Bin 0 -> 37342 bytes .../mocks/sankey_circular_with_arrows.json | 27 +++++++ 5 files changed, 75 insertions(+), 32 deletions(-) create mode 100644 test/image/baselines/sankey_circular_with_arrows.png create mode 100644 test/image/mocks/sankey_circular_with_arrows.json diff --git a/src/traces/sankey/attributes.js b/src/traces/sankey/attributes.js index c129227014c..538fa9be3ae 100644 --- a/src/traces/sankey/attributes.js +++ b/src/traces/sankey/attributes.js @@ -168,6 +168,14 @@ var attrs = module.exports = overrideAll({ }, link: { + arrowwidth: { + valType: 'number', + min: 0, + dflt: 0, + description: [ + 'Sets the width (in px) of the links arrow, if 0 no arrow will be drawn.' + ].join(' ') + }, label: { valType: 'data_array', dflt: [], diff --git a/src/traces/sankey/defaults.js b/src/traces/sankey/defaults.js index 9694df6eb7b..1b8512144fd 100644 --- a/src/traces/sankey/defaults.js +++ b/src/traces/sankey/defaults.js @@ -52,6 +52,7 @@ module.exports = function supplyDefaults(traceIn, traceOut, defaultColor, layout return Lib.coerce(linkIn, linkOut, attributes.link, attr, dflt); } coerceLink('label'); + coerceLink('arrowwidth'); coerceLink('source'); coerceLink('target'); coerceLink('value'); diff --git a/src/traces/sankey/render.js b/src/traces/sankey/render.js index ced03a514f5..3f8ccdfa345 100644 --- a/src/traces/sankey/render.js +++ b/src/traces/sankey/render.js @@ -271,6 +271,7 @@ function sankeyModel(layout, d, traceIndex) { nodeLineWidth: trace.node.line.width, linkLineColor: trace.link.line.color, linkLineWidth: trace.link.line.width, + linkArrowWidth: trace.link.arrowwidth, valueFormat: trace.valueformat, valueSuffix: trace.valuesuffix, textFont: trace.textfont, @@ -309,6 +310,7 @@ function linkModel(d, l, i) { linkPath: linkPath, linkLineColor: d.linkLineColor, linkLineWidth: d.linkLineWidth, + linkArrowWidth: d.linkArrowWidth, valueFormat: d.valueFormat, valueSuffix: d.valueSuffix, sankey: d.sankey, @@ -318,7 +320,7 @@ function linkModel(d, l, i) { }; } -function createCircularClosedPathString(link) { +function createCircularClosedPathString(link, arrowWidth) { // Using coordinates computed by d3-sankey-circular var pathString = ''; var offset = link.width / 2; @@ -328,17 +330,17 @@ function createCircularClosedPathString(link) { pathString = // start at the left of the target node 'M ' + - coords.targetX + ' ' + (coords.targetY + offset) + ' ' + + (coords.targetX - arrowWidth) + ' ' + (coords.targetY + offset) + ' ' + 'L' + - coords.rightInnerExtent + ' ' + (coords.targetY + offset) + + (coords.rightInnerExtent - arrowWidth) + ' ' + (coords.targetY + offset) + 'A' + (coords.rightLargeArcRadius + offset) + ' ' + (coords.rightSmallArcRadius + offset) + ' 0 0 1 ' + - (coords.rightFullExtent - offset) + ' ' + (coords.targetY - coords.rightSmallArcRadius) + + (coords.rightFullExtent - offset - arrowWidth) + ' ' + (coords.targetY - coords.rightSmallArcRadius) + 'L' + - (coords.rightFullExtent - offset) + ' ' + coords.verticalRightInnerExtent + + (coords.rightFullExtent - offset - arrowWidth) + ' ' + coords.verticalRightInnerExtent + 'A' + (coords.rightLargeArcRadius + offset) + ' ' + (coords.rightLargeArcRadius + offset) + ' 0 0 1 ' + - coords.rightInnerExtent + ' ' + (coords.verticalFullExtent - offset) + + (coords.rightInnerExtent - arrowWidth) + ' ' + (coords.verticalFullExtent - offset) + 'L' + coords.leftInnerExtent + ' ' + (coords.verticalFullExtent - offset) + 'A' + @@ -366,34 +368,35 @@ function createCircularClosedPathString(link) { (coords.leftLargeArcRadius - offset) + ' ' + (coords.leftLargeArcRadius - offset) + ' 0 0 0 ' + coords.leftInnerExtent + ' ' + (coords.verticalFullExtent + offset) + 'L' + - coords.rightInnerExtent + ' ' + (coords.verticalFullExtent + offset) + + (coords.rightInnerExtent - arrowWidth) + ' ' + (coords.verticalFullExtent + offset) + 'A' + (coords.rightLargeArcRadius - offset) + ' ' + (coords.rightLargeArcRadius - offset) + ' 0 0 0 ' + - (coords.rightFullExtent + offset) + ' ' + coords.verticalRightInnerExtent + + (coords.rightFullExtent + offset - arrowWidth) + ' ' + coords.verticalRightInnerExtent + 'L' + - (coords.rightFullExtent + offset) + ' ' + (coords.targetY - coords.rightSmallArcRadius) + + (coords.rightFullExtent + offset - arrowWidth) + ' ' + (coords.targetY - coords.rightSmallArcRadius) + 'A' + (coords.rightLargeArcRadius - offset) + ' ' + (coords.rightSmallArcRadius - offset) + ' 0 0 0 ' + - coords.rightInnerExtent + ' ' + (coords.targetY - offset) + + (coords.rightInnerExtent - arrowWidth) + ' ' + (coords.targetY - offset) + 'L' + - coords.targetX + ' ' + (coords.targetY - offset) + + (coords.targetX - arrowWidth) + ' ' + (coords.targetY - offset) + + (arrowWidth > 0 ? 'L' + coords.targetX + ' ' + (coords.targetY) : '') + 'Z'; } else { // Bottom path pathString = // start at the left of the target node 'M ' + - coords.targetX + ' ' + (coords.targetY - offset) + ' ' + + (coords.targetX - arrowWidth) + ' ' + (coords.targetY - offset) + ' ' + 'L' + - coords.rightInnerExtent + ' ' + (coords.targetY - offset) + + (coords.rightInnerExtent - arrowWidth) + ' ' + (coords.targetY - offset) + 'A' + (coords.rightLargeArcRadius + offset) + ' ' + (coords.rightSmallArcRadius + offset) + ' 0 0 0 ' + - (coords.rightFullExtent - offset) + ' ' + (coords.targetY + coords.rightSmallArcRadius) + + (coords.rightFullExtent - offset - arrowWidth) + ' ' + (coords.targetY + coords.rightSmallArcRadius) + 'L' + - (coords.rightFullExtent - offset) + ' ' + coords.verticalRightInnerExtent + + (coords.rightFullExtent - offset - arrowWidth) + ' ' + coords.verticalRightInnerExtent + 'A' + (coords.rightLargeArcRadius + offset) + ' ' + (coords.rightLargeArcRadius + offset) + ' 0 0 0 ' + - coords.rightInnerExtent + ' ' + (coords.verticalFullExtent + offset) + + (coords.rightInnerExtent - arrowWidth) + ' ' + (coords.verticalFullExtent + offset) + 'L' + coords.leftInnerExtent + ' ' + (coords.verticalFullExtent + offset) + 'A' + @@ -421,17 +424,18 @@ function createCircularClosedPathString(link) { (coords.leftLargeArcRadius - offset) + ' ' + (coords.leftLargeArcRadius - offset) + ' 0 0 1 ' + coords.leftInnerExtent + ' ' + (coords.verticalFullExtent - offset) + 'L' + - coords.rightInnerExtent + ' ' + (coords.verticalFullExtent - offset) + + (coords.rightInnerExtent - arrowWidth) + ' ' + (coords.verticalFullExtent - offset) + 'A' + (coords.rightLargeArcRadius - offset) + ' ' + (coords.rightLargeArcRadius - offset) + ' 0 0 1 ' + - (coords.rightFullExtent + offset) + ' ' + coords.verticalRightInnerExtent + + (coords.rightFullExtent + offset - arrowWidth) + ' ' + coords.verticalRightInnerExtent + 'L' + - (coords.rightFullExtent + offset) + ' ' + (coords.targetY + coords.rightSmallArcRadius) + + (coords.rightFullExtent + offset - arrowWidth) + ' ' + (coords.targetY + coords.rightSmallArcRadius) + 'A' + (coords.rightLargeArcRadius - offset) + ' ' + (coords.rightSmallArcRadius - offset) + ' 0 0 1 ' + - coords.rightInnerExtent + ' ' + (coords.targetY + offset) + + (coords.rightInnerExtent - arrowWidth) + ' ' + (coords.targetY + offset) + 'L' + - coords.targetX + ' ' + (coords.targetY + offset) + + (coords.targetX - arrowWidth) + ' ' + (coords.targetY + offset) + + (arrowWidth > 0 ? 'L' + coords.targetX + ' ' + (coords.targetY) : '') + 'Z'; } return pathString; @@ -441,10 +445,11 @@ function linkPath() { var curvature = 0.5; function path(d) { if(d.link.circular) { - return createCircularClosedPathString(d.link); + return createCircularClosedPathString(d.link, d.linkArrowWidth); } else { + var arrowWidth = d.linkArrowWidth; var x0 = d.link.source.x1; - var x1 = d.link.target.x0; + var x1 = d.link.target.x0 - arrowWidth; var xi = interpolateNumber(x0, x1); var x2 = xi(curvature); var x3 = xi(1 - curvature); @@ -452,15 +457,17 @@ function linkPath() { var y0b = d.link.y0 + d.link.width / 2; var y1a = d.link.y1 - d.link.width / 2; var y1b = d.link.y1 + d.link.width / 2; - return 'M' + x0 + ',' + y0a + - 'C' + x2 + ',' + y0a + - ' ' + x3 + ',' + y1a + - ' ' + x1 + ',' + y1a + - 'L' + x1 + ',' + y1b + - 'C' + x3 + ',' + y1b + - ' ' + x2 + ',' + y0b + - ' ' + x0 + ',' + y0b + - 'Z'; + var start = 'M' + x0 + ',' + y0a; + var upperCurve = 'C' + x2 + ',' + y0a + + ' ' + x3 + ',' + y1a + + ' ' + x1 + ',' + y1a; + var lowerCurve = 'C' + x3 + ',' + y1b + + ' ' + x2 + ',' + y0b + + ' ' + x0 + ',' + y0b; + + var rightEnd = arrowWidth > 0 ? 'L' + (x1 + arrowWidth) + ',' + (y1a + d.link.width / 2) : ''; + rightEnd += 'L' + x1 + ',' + y1b; + return start + upperCurve + rightEnd + lowerCurve + 'Z'; } } return path; diff --git a/test/image/baselines/sankey_circular_with_arrows.png b/test/image/baselines/sankey_circular_with_arrows.png new file mode 100644 index 0000000000000000000000000000000000000000..ed91164186296883334d36b1f46af47ce5a12d37 GIT binary patch literal 37342 zcmeFZXHb*h*EX8Opb$g@QWOLtpn_DD4uQ}Df=E@QqoOqFReG-?MHB_;y@T}LRIt!X z=uMDbq!S379sQTzbLM@&o|!ZAd{AcKE_<)N_FC6k*R}5u)qC<32zmqr0-?C0Agd06 zoI(-*k)8&>8MQfW3VuNC)#arjg`JldArKVgj;xfXi^0k`nY)3u{>g8{_;R!O49nNz3^@ActM@+aRjX7_&VR7)`Zzp1teuAP zhQLVw^B);07ppg0@(&Iq1_Fiu>pv6{fMu6p5)i{XcHI z356*M&wEJOu3;c|UdCOx^3MrD{Vo1^51i@(%9{<_5%SM*dP70Um`aG6JHl*x@f9_t$ONtQB^{TIdz}yj#l@fB zzkh#lWW-!@lU4GuWL6Ij@z8tyQsZKIuXmiQqFD8z&9$ zy|E+llSj|oemr5i;KuOX7N$?f=90k>3=F9T3!<0v#Z;w0M4@1ig=jlL+rU=EWwzIzY7BU0q#8-$s3RKa9Z<_hkwMY)B{+UP$TE zsIe@#1$abRFT3E^=#I(e?aQNm>-dGS|Pef_xSFB8u%p1_nx-`os0eCdX`E5{xu zBqTK33KZmJWPJ8Ki1iv~+N)|KDT-gm?m2tyIj>Hh5GGgmyiWECYHP(Vh8!%&OPWs} z{SvY?HvTkNsBa;OPm?t7@;ct~i_cSWpSiFb>va$-<+1JjNW|;7jQV-U3tH4;?{?GIAPPG zao0j?snl)H%55Oe;OV+co0xB7e32o)rGiz~y#&PAecp1j!`;CD*KRFKa+7GHQ z>0;8YwtH&RVGdXFF)QJCSTk`y=wv_Qr1-W;C%kPiJGL;uae0vBK5pJ|vcaRdzx}-X z)F~;*vDeA^$?#UH4hIDZ+5e)U9Fhf zueru_IMim~INo?P$14>6a>8S8ym|TlF<5+@CjsX*E^#z{{!9{Bw&liiczs-_2I zft#%sPG7wgTtMnD#)6FUzA!U|be1=np;>Ibu20Z<;_}$1F^4|oW{S`5azbWtPTNl; zcb_zOB*MNo9(`|wUzr|X_jI;DIsYD3~ya?&=;Oy^^O`w{oLVpVN)7IPOd`uHlDX~Eyv0T6>4Z`NL5wMC%XB1Y8jfZ zhQVGA=7|5i)J1Bg>WJ>pnmFFAJTol=m6lRkenrjVXc+)yOIp5rWxCSqu+q;c*8+=M z>F!oFz|D`ja*%TLF9qsNOQ(6zzv&SmXh`m8Xi4Y$W)waef4+R$5ck%dx^4nLSa}+X zNznrf#bBQHDq|UgOUGN4KvJF9y_d0uxTr#F{dL4muZ=TaNKM^Fns+ouUdQuZ5>=go z&xerxYEpN05xopTR%h|pqy!%ypQ*~iOCGk#U4cu5UFrDUlprRAZ$K#QdubA31+_8e zdAQmv%17fNA)ubyRV0yx_<=v0dwz$B;7lS-^17Ne=itQR6DK7G6%Jqy|LzS-X%q}P zetGekx{y5$4NWt}DuvJ((*4v2H`W)wXFg9o!=_!Tz9J{Igs-?Sl=BGEqa0$z)k?B5 zEwuVb^(zHxnj+ll9*wuA!xMZQuI`J$!8ffD5OIHS7990wNzja)T?~{Lx?}A&I_leV zdb})1ZW^=NZTiVwZgPT?Ycbw{X51A0J4EHIRc?#52Uw?*QO}=3o~)$E8mSI_|3aJO zy`|H_&J^u*4I2Sdx{KVp74Wu!LkF4TK9I$l!+*QWVevgL98cw^GN>@h7uGth*4*&^ zfOZoUPV`l=I@}bwcN1#-{5e;)ik24c%@VV)4T_K4x<+7=mAv}b>E`Oy`=;F#gwn*F zd?QT`uBF;Wd|qP>6=t)(lixfw9&baT(6An_%e&L}_4W0F!os!OoIr$Z%|yA2o*Y!x zBY#;%2!Errv{VcK@Cxd(ay)~mBlmKg0hc#B#%xK`%5-pfK*9q{E!!f>F77XdKKijp zsAhdn�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 Date: Mon, 25 Jul 2022 12:18:55 +0200 Subject: [PATCH 2/6] sankey arrows: adjustments after review * rename `arrowwidth` for sankey diagram to `arrowlen` * add test vor vertical orientation * check available space for arrows and apply max 50% of it to arrows --- src/traces/sankey/attributes.js | 4 +- src/traces/sankey/defaults.js | 2 +- src/traces/sankey/render.js | 62 ++++++++++-------- .../baselines/sankey_circular_with_arrows.png | Bin 37342 -> 37132 bytes .../sankey_circular_with_arrows_vertical.png | Bin 0 -> 41834 bytes .../baselines/sankey_x_y_with_arrows.png | Bin 0 -> 14234 bytes .../mocks/sankey_circular_with_arrows.json | 2 +- .../sankey_circular_with_arrows_vertical.json | 28 ++++++++ test/image/mocks/sankey_x_y_with_arrows.json | 29 ++++++++ 9 files changed, 94 insertions(+), 33 deletions(-) create mode 100644 test/image/baselines/sankey_circular_with_arrows_vertical.png create mode 100644 test/image/baselines/sankey_x_y_with_arrows.png create mode 100644 test/image/mocks/sankey_circular_with_arrows_vertical.json create mode 100644 test/image/mocks/sankey_x_y_with_arrows.json diff --git a/src/traces/sankey/attributes.js b/src/traces/sankey/attributes.js index 538fa9be3ae..3ebd92b0934 100644 --- a/src/traces/sankey/attributes.js +++ b/src/traces/sankey/attributes.js @@ -168,12 +168,12 @@ var attrs = module.exports = overrideAll({ }, link: { - arrowwidth: { + arrowlen: { valType: 'number', min: 0, dflt: 0, description: [ - 'Sets the width (in px) of the links arrow, if 0 no arrow will be drawn.' + 'Sets the length (in px) of the links arrow, if 0 no arrow will be drawn.' ].join(' ') }, label: { diff --git a/src/traces/sankey/defaults.js b/src/traces/sankey/defaults.js index 1b8512144fd..01fc14f6fa4 100644 --- a/src/traces/sankey/defaults.js +++ b/src/traces/sankey/defaults.js @@ -52,7 +52,7 @@ module.exports = function supplyDefaults(traceIn, traceOut, defaultColor, layout return Lib.coerce(linkIn, linkOut, attributes.link, attr, dflt); } coerceLink('label'); - coerceLink('arrowwidth'); + coerceLink('arrowlen'); coerceLink('source'); coerceLink('target'); coerceLink('value'); diff --git a/src/traces/sankey/render.js b/src/traces/sankey/render.js index 3f8ccdfa345..57bbfafa986 100644 --- a/src/traces/sankey/render.js +++ b/src/traces/sankey/render.js @@ -271,7 +271,7 @@ function sankeyModel(layout, d, traceIndex) { nodeLineWidth: trace.node.line.width, linkLineColor: trace.link.line.color, linkLineWidth: trace.link.line.width, - linkArrowWidth: trace.link.arrowwidth, + linkArrowLength: trace.link.arrowlen, valueFormat: trace.valueformat, valueSuffix: trace.valuesuffix, textFont: trace.textfont, @@ -310,7 +310,7 @@ function linkModel(d, l, i) { linkPath: linkPath, linkLineColor: d.linkLineColor, linkLineWidth: d.linkLineWidth, - linkArrowWidth: d.linkArrowWidth, + linkArrowLength: d.linkArrowLength, valueFormat: d.valueFormat, valueSuffix: d.valueSuffix, sankey: d.sankey, @@ -320,7 +320,7 @@ function linkModel(d, l, i) { }; } -function createCircularClosedPathString(link, arrowWidth) { +function createCircularClosedPathString(link, arrowLen) { // Using coordinates computed by d3-sankey-circular var pathString = ''; var offset = link.width / 2; @@ -330,17 +330,17 @@ function createCircularClosedPathString(link, arrowWidth) { pathString = // start at the left of the target node 'M ' + - (coords.targetX - arrowWidth) + ' ' + (coords.targetY + offset) + ' ' + + (coords.targetX - arrowLen) + ' ' + (coords.targetY + offset) + ' ' + 'L' + - (coords.rightInnerExtent - arrowWidth) + ' ' + (coords.targetY + offset) + + (coords.rightInnerExtent - arrowLen) + ' ' + (coords.targetY + offset) + 'A' + (coords.rightLargeArcRadius + offset) + ' ' + (coords.rightSmallArcRadius + offset) + ' 0 0 1 ' + - (coords.rightFullExtent - offset - arrowWidth) + ' ' + (coords.targetY - coords.rightSmallArcRadius) + + (coords.rightFullExtent - offset - arrowLen) + ' ' + (coords.targetY - coords.rightSmallArcRadius) + 'L' + - (coords.rightFullExtent - offset - arrowWidth) + ' ' + coords.verticalRightInnerExtent + + (coords.rightFullExtent - offset - arrowLen) + ' ' + coords.verticalRightInnerExtent + 'A' + (coords.rightLargeArcRadius + offset) + ' ' + (coords.rightLargeArcRadius + offset) + ' 0 0 1 ' + - (coords.rightInnerExtent - arrowWidth) + ' ' + (coords.verticalFullExtent - offset) + + (coords.rightInnerExtent - arrowLen) + ' ' + (coords.verticalFullExtent - offset) + 'L' + coords.leftInnerExtent + ' ' + (coords.verticalFullExtent - offset) + 'A' + @@ -368,35 +368,35 @@ function createCircularClosedPathString(link, arrowWidth) { (coords.leftLargeArcRadius - offset) + ' ' + (coords.leftLargeArcRadius - offset) + ' 0 0 0 ' + coords.leftInnerExtent + ' ' + (coords.verticalFullExtent + offset) + 'L' + - (coords.rightInnerExtent - arrowWidth) + ' ' + (coords.verticalFullExtent + offset) + + (coords.rightInnerExtent - arrowLen) + ' ' + (coords.verticalFullExtent + offset) + 'A' + (coords.rightLargeArcRadius - offset) + ' ' + (coords.rightLargeArcRadius - offset) + ' 0 0 0 ' + - (coords.rightFullExtent + offset - arrowWidth) + ' ' + coords.verticalRightInnerExtent + + (coords.rightFullExtent + offset - arrowLen) + ' ' + coords.verticalRightInnerExtent + 'L' + - (coords.rightFullExtent + offset - arrowWidth) + ' ' + (coords.targetY - coords.rightSmallArcRadius) + + (coords.rightFullExtent + offset - arrowLen) + ' ' + (coords.targetY - coords.rightSmallArcRadius) + 'A' + (coords.rightLargeArcRadius - offset) + ' ' + (coords.rightSmallArcRadius - offset) + ' 0 0 0 ' + - (coords.rightInnerExtent - arrowWidth) + ' ' + (coords.targetY - offset) + + (coords.rightInnerExtent - arrowLen) + ' ' + (coords.targetY - offset) + 'L' + - (coords.targetX - arrowWidth) + ' ' + (coords.targetY - offset) + - (arrowWidth > 0 ? 'L' + coords.targetX + ' ' + (coords.targetY) : '') + + (coords.targetX - arrowLen) + ' ' + (coords.targetY - offset) + + (arrowLen > 0 ? 'L' + coords.targetX + ' ' + (coords.targetY) : '') + 'Z'; } else { // Bottom path pathString = // start at the left of the target node 'M ' + - (coords.targetX - arrowWidth) + ' ' + (coords.targetY - offset) + ' ' + + (coords.targetX - arrowLen) + ' ' + (coords.targetY - offset) + ' ' + 'L' + - (coords.rightInnerExtent - arrowWidth) + ' ' + (coords.targetY - offset) + + (coords.rightInnerExtent - arrowLen) + ' ' + (coords.targetY - offset) + 'A' + (coords.rightLargeArcRadius + offset) + ' ' + (coords.rightSmallArcRadius + offset) + ' 0 0 0 ' + - (coords.rightFullExtent - offset - arrowWidth) + ' ' + (coords.targetY + coords.rightSmallArcRadius) + + (coords.rightFullExtent - offset - arrowLen) + ' ' + (coords.targetY + coords.rightSmallArcRadius) + 'L' + - (coords.rightFullExtent - offset - arrowWidth) + ' ' + coords.verticalRightInnerExtent + + (coords.rightFullExtent - offset - arrowLen) + ' ' + coords.verticalRightInnerExtent + 'A' + (coords.rightLargeArcRadius + offset) + ' ' + (coords.rightLargeArcRadius + offset) + ' 0 0 0 ' + - (coords.rightInnerExtent - arrowWidth) + ' ' + (coords.verticalFullExtent + offset) + + (coords.rightInnerExtent - arrowLen) + ' ' + (coords.verticalFullExtent + offset) + 'L' + coords.leftInnerExtent + ' ' + (coords.verticalFullExtent + offset) + 'A' + @@ -424,18 +424,18 @@ function createCircularClosedPathString(link, arrowWidth) { (coords.leftLargeArcRadius - offset) + ' ' + (coords.leftLargeArcRadius - offset) + ' 0 0 1 ' + coords.leftInnerExtent + ' ' + (coords.verticalFullExtent - offset) + 'L' + - (coords.rightInnerExtent - arrowWidth) + ' ' + (coords.verticalFullExtent - offset) + + (coords.rightInnerExtent - arrowLen) + ' ' + (coords.verticalFullExtent - offset) + 'A' + (coords.rightLargeArcRadius - offset) + ' ' + (coords.rightLargeArcRadius - offset) + ' 0 0 1 ' + - (coords.rightFullExtent + offset - arrowWidth) + ' ' + coords.verticalRightInnerExtent + + (coords.rightFullExtent + offset - arrowLen) + ' ' + coords.verticalRightInnerExtent + 'L' + - (coords.rightFullExtent + offset - arrowWidth) + ' ' + (coords.targetY + coords.rightSmallArcRadius) + + (coords.rightFullExtent + offset - arrowLen) + ' ' + (coords.targetY + coords.rightSmallArcRadius) + 'A' + (coords.rightLargeArcRadius - offset) + ' ' + (coords.rightSmallArcRadius - offset) + ' 0 0 1 ' + - (coords.rightInnerExtent - arrowWidth) + ' ' + (coords.targetY + offset) + + (coords.rightInnerExtent - arrowLen) + ' ' + (coords.targetY + offset) + 'L' + - (coords.targetX - arrowWidth) + ' ' + (coords.targetY + offset) + - (arrowWidth > 0 ? 'L' + coords.targetX + ' ' + (coords.targetY) : '') + + (coords.targetX - arrowLen) + ' ' + (coords.targetY + offset) + + (arrowLen > 0 ? 'L' + coords.targetX + ' ' + (coords.targetY) : '') + 'Z'; } return pathString; @@ -444,12 +444,16 @@ function createCircularClosedPathString(link, arrowWidth) { function linkPath() { var curvature = 0.5; function path(d) { + var arrowLen = d.linkArrowLength; if(d.link.circular) { - return createCircularClosedPathString(d.link, d.linkArrowWidth); + return createCircularClosedPathString(d.link, arrowLen); } else { - var arrowWidth = d.linkArrowWidth; + var maxArrowLength = Math.abs((d.link.target.x0 - d.link.source.x1) / 2); + if(arrowLen > maxArrowLength) { + arrowLen = maxArrowLength; + } var x0 = d.link.source.x1; - var x1 = d.link.target.x0 - arrowWidth; + var x1 = d.link.target.x0 - arrowLen; var xi = interpolateNumber(x0, x1); var x2 = xi(curvature); var x3 = xi(1 - curvature); @@ -465,7 +469,7 @@ function linkPath() { ' ' + x2 + ',' + y0b + ' ' + x0 + ',' + y0b; - var rightEnd = arrowWidth > 0 ? 'L' + (x1 + arrowWidth) + ',' + (y1a + d.link.width / 2) : ''; + var rightEnd = arrowLen > 0 ? 'L' + (x1 + arrowLen) + ',' + (y1a + d.link.width / 2) : ''; rightEnd += 'L' + x1 + ',' + y1b; return start + upperCurve + rightEnd + lowerCurve + 'Z'; } diff --git a/test/image/baselines/sankey_circular_with_arrows.png b/test/image/baselines/sankey_circular_with_arrows.png index ed91164186296883334d36b1f46af47ce5a12d37..c5472216a5d4e6f88cd5f94d4faf1b5cb42c69e4 100644 GIT binary patch literal 37132 zcmeFZbySqw+dn)rgfNJJ5=sswEe4Ii&?Vg+qLk7lIh3F{l!btFrzjyEf*?u^sWj5v zHPpLDzj2=T_xt-@>s{+PYaP!z=ghtDYhU}y&-K~&Gfj0xQaCLf0)db!E6Hg?Ab1Ge z-$aDqzl^#N+Cd-)h_altu8;ZZII+LEk=gl{MN)-wl7LzK^~ZgW%pQup4-eLw;*S== zyA+j?!I{=_^La-G3j)#cLG)%GClO~_)8}+fB5tCPNV>F-T|?@l9+Q37)kXxAlXAYD z@72%nY4ox6cx?o9OB}eHmoB{SlkBNqsO#x+Y3vbQNO|xH{G}ibf#Q=R|NX~hazh1( zGV+}c0tJB){p$}T0tuOx`Oj~_uY+6hi4f1U+*$tdC^-VMG zg2Z1HOShll4i-9ljU=^@(8Z>?g# zU+T1fXndTZ`p3Y)D~Z!3jVj@WE%bgChXmL5OuK8-1xBByiT%o|UreVMreDj0g)|cK zKP!hD&-V85q&D&5^dGpn^{vknoa)uiy)j{t*w?;roO*u5q~mwCTzba+Sty?O z!X^3-7Kh;$9}em_0xCUMhS)UB;@nTiCr{s>ZZVygot{pf2grB#C{qC6VIv?yC_A{{ zz^A`_h#hWpa`yQ`w>o6vTruiY+vVWsxHkLkWlmCe?Rw33F)=Zg(#N!T9n)VT)-=v$ zHC8K11BwTShc8^mPQqEG_U}u1wQ+VsZc9i!Zrn3ze9+@Ju~Sr9%D)|Gw2HDPMKqp# zZ+ukh)5deTg1btG2r&oWeu7V~^b+`!TD`m(MWp6bv2#En!(E@7heLw-@n0dgCl#!w z+V}%qZ^pmWg(w#U&8Kppp|b<|I{POJQj?OK!DQq}ZqI2KbKv`k7~njr_`xsWbvy4j z%ExQHM-?Tvj}-|E3tw0;z?7-Bd#o6{-6IIoy`Z+%5cRB}~^E#PS8iCs{7fwc# zCQlyHUAtB`d0anPyM1te+<5L->Nma;a=&p=p1)@M0RABL{A6LR^c-6nN|EkD+xPQl zLjAm8De>|vle2l}v#je_SEA{J358qFH_lHR+22P*M1(dR zZk(Sv_dgMsTe8>iGrqZ8*1P!pqKBlY|Dr6@$C>t+(bChA(qCj}Q)Gk-VB<$LI`x#d z1#7Z>#{v$pIUOELUHZQfh?JXjmDEsomGRtIRk2eUe11|vuUQpoLWAU${&n7 z3GF}cq#pgS9N_YX>o+)Vsajy;>yO7bDx+xl%|(0WyOPxQw2pFvu(@d#o|5mDCj~0h z7EFrr$UGTN7J|-fElqWFuH4f($+o~|^JIouou2?bR0eECS(KLs?iET;I**idEjDf( zH*6%i`=BKYO7&vCe*HRipfLRT%qgGC@Mwf-|J_9o((mfS=~&Zqlhf*-jZ2@F`(pxk zGo^#fYCOLA`uc_}B}`WoYSF66pA6(mdd_(VSzEWHoUYoM1O+wLFGy@uFMF$IhPxfM za!67fl3luFY-VO=S-P_6*RbGs8*5>ih(=Zd_xiOSWSnXR9cMcQhxgFsN*bN~I3=&H z2VS9OI-QByci-7K#Z~XX1@DlgOXGF@~!gfwv_kH^hB+^OkZNtEz-WVmePC z8EM;{1`U0IixGhxfoDJ!olBm0MM>Fj>t@-TZ#8bAo$-Z#HEz*0QWP;@)Mhu%);9?E zI?a;O&WrcpHC6*^-cCpDK_`lS8-A0HHP7IoFP)-2?^nCcb&5)_KH&E=>LmD(XwEYnlDU&{A%NfRPxE%ETlwre1kzC}<%CyNOR-Zgepx$|*`@OWLv7K4m zP}Rv;&uMZ+MFjz~X0zV>GDmpA7$knfctGvb2sqnD;89Ft$in*RiqmGYz}}%^6Pf|V zpwguK;f&#C1S{d4bKl>F3L@bYHPlqro~MNpVv6gY}zVA_y|)M$I|~T}4jp<_HrEqj^2~3e1Piyv?R+el~_X#RQ$q zg!+EF=h?UMGGvCqdyL{ly>T;~{~~M|w_@5FE-I{@ZUi-=qoWBebQcr#FdHk4XDf{( zAcUtT1s?295}lS5YIvA+m^EwUP~ww!q=4Y)7oZ+R@tI}wS5KhOp@NQZLyZ~+fPUT}F(|xdh3R_bgl$PG7=vU~T&!Wnpx-+ke#s!%s<}4YA-B%? zw83mh_!IVxAv3ahNwnvQ`sN+pnxopSuXLewbw~1(b=-FO>oI;~GmjoVobO!NTdQqg z)?X9}I;%T9j5+t&T&s0rqoF168Tyn$^@5RCfIxL}arvnruUJe=A}k8lBqKk0snD#( zXs~K<=esp40?xE7H7L$o^XzpLtXJleuZ1WpVrM1CC9{%Cu3?IRKfztXPEH}HQCG`w zz;lNtXp6?3`e0(;_kt1fUL_h{&QnDD^CgrBp^7jrudX+^`@c|_1*1i~)t zG;>97__32#>dM|rsiT+87Cdr1t&2GlRf|x()UK-k(bpf~R41Ti8$D`C?Gz8}nOo1YHpA&`g+qdVuuo^XeT|L-fI7-}_k-@QT$hI<@+9yz1VjpHfDV+(|=EVR{_UG@MT^G6U2 z+Q8|i*0_L~n($|ARrqs8!Za>%xDm`wgE7Op$6Y6>A!h9rrZ*`4G!{aqsSly%O)PC!^jCJMS&UOd24!&y9Jnqd1G~ zxsA&-9+2d&FVSK+HGfLE8HjZ8C5Gf_((l)|aE56gc&|8#GMV$&Q2`5i#hkHm-5^wvPfk#^ko4$*5RX0;)f zAexRF+Lg-*e^0#qk`C!HBN-&2d=)7`B`^Ga8lC7gQr?~U>C+t|s%k4mVco>eI6BDz zm|8f7G_yNhbS_b<)YpOgP0qlgf}U_Ot*cSdq6GH3zSLeH<;{TO;w2X2nT*DM^lPVt zU7hToklR7C3hljWi=@J1dA!s}foxUbh-&sa(V<spQ6UBTa@;j<8GI$p~p;?=ux6^xh4kfd(}{&O>u?Y<4U2k zvtY=rpk3yJt2IXhYVl4l1h~`lWfN~_(20jb(4BT8&vU}V`=0^pIdYPrad`Q|)4kxP z?mY;GGV_R}_Ddz_Px~*x(AXa9yap2|mH&|f_CFEYGFpT9+g*0oD z@l?rX2E|?A^iU0w?Jlo&JkKf4Rfr2 z8lAa$S<=;!nFl?_d9wJ`gq16CxTLLhT8uE@xR6eoPkorQqEklrF)c$M+HqZNR{Iz= zO9#amUnmYf#5EoS!Y3w=@NLo|8P3>>c_j3H8J7jze`HKUILZnmI>4xwZOn^W%rRM^ zaZB~eqSHp_*)5x|6Dg%bZCKz_H1%=7Nv+m?sx z{oT82^*N9m)X0{bFKZW#+u_5xuP!4!B*%+-8bu9m_H~R}L$iAK-_jx}dj&?)ClAKB z;*76cmZVTmSCbz`=jbd!@v-io^A|yFxsOP*m#!U3`$1+@-S~3Z;Iw4HT-Ejb06oKs zLWu)o^u~rHB4YDUDaKiJhHCwoem9(p(?fXzXh(_O_T5*Y|c=S3~7U zhe%@>d-9!!z7VV$8x~SfOSE_#@2>?%<+$WUSF_UB#PzF14>{N|S31S+P!;p^?lK1y z7B87tVbHy}a^iw;M9nXf+^4)AvbkE91{ImrblO_NXA<>wI*B4pskChhIAoSEmA+XY zWP+)MXs#d!7{_}Z#bQF@bGkS!mmX>ehx@v{aayfVknP?cydN&Or>4Qzr(4zrQ~Inf z%_>ymwVQQ=farvQ&kMqf_~iBCG1M zBl^t}7K3gmp;6-+7~l@jDcuhf##9f-C_EJSm@~ehC#*KwS5X>=*bCx<$~ng9(gYlr z#^zz|jpGALJ-Ya)k?_Ys`A|8MZ9$g&75T>dH6?<5nVLmSv^Q?NjX6`_(>)w0FL0@u zHE7s=ZQ1<9sd4GlxG_6F$@lkbtbq;_6?sL1#KDsHQK0vcH$M5MA_&SF7JZlTpI`1( z%X9i1@$_j(^@*>4VZ+|=Zt@t1)e@oXPXC^y#F~OI3)Z_hDUtorDkXf6ytCnx8TjZG^+yB_)bCx6gFU2~SU zlLQ#t#hduI*^!WMy59YU069&&2}Ro_i@IMYVx(P5L!gj%VYH<7 zPEM7AjzjptVK*dLQhsN+wE?$J@L!PQfwgA)^J9UUD% z?X3(a4ZYGN-_!#SIQI12z&$_&EuPWbyvo49?n62K)r2Ba7D@8c#Ka_&W<~xt`Fz4_ zY6MER=7NY6$N-ws!K!a>{K8}^hEkA$eSc<8L-b)V6fYvdqRL=V9p^r3+@eURS}83( zefdic4Z@hNYy=8b3o|Znc(OA;MQluo?+=DRhrLndP%xR{ltIRHGhDq&#F(xs4GG>Q zvSZ8o^yy{z^3u|6hnh$naEu3j))CvZ)Sny5WpL-toofz)YVu7?Q1sK?y}fsV+T==w zK-0w%iuE{6v)~JKEjI<@dF`+MVv%e!0m)Y$D#5JE%DggE>|W+OKpb2LCQfy7b-33n zRiUU8rM5d*a}-y#$&p}H0`g+gbVRHW7&wjizQE!Vq&$%wje9uRX%^T>5NxFBLvC(+ z<5LVvDM--f-u!4;NH8ynU90T0EGq&)Lz@Pcd&`4Eqodz{dj!?~tbId)tXt8h#f_y5 zZ;n6TY<`VGdf`*bl#9F%LDGT|nf)UBGA>zDGT#IUJwWNKNAxHj)=@#3@P|sw9LLAU zB?ZETd~SeTTo-E32qUslMQYUcb+pgU+Emi2J5nGK8+b4n49#aL2OQmP}aiD(E+ z68>nkvP-|jbm@M--OCFg-I0mKUB?aWGBY!UZr+6817jd38WHTt172 zyF6++@40|EWu?8$V*yfqh;91uNRN>{7mBzNV94bU2tf1h^;mISy znR0RyFyqHAE+0OVZ8-t^%4(_@Hg^O*++j0nU+xF?e1Hw3#SH+T5CGQ=!H}(;O5>)W z+r+?Ie*t`EyB-~+h@b#=!tx^-A8b2Pe`<63ix+lx$&RcO1B}Tr*s-MgD+nZYPONCv z2wbE`IzyTI|h&Q6YgOLcJI zA%^1v~utQNBV$~Cfe0sv=fzaYx?ufS9+DWJumg$BX*H8^}-nfLC0 z{1k3C`_~1L2zYQ!jTjh?tz?K$wjRsalYEZ*Q;i zetY!E>jefPIbI~>+0|EHaQ>r3V#jziQSX;2`N*h!=4&>uq-3%*l%`Rsw}wxGI4T6$ z2i}m?Cd%~3R#8#?!arM!I@D*^-qEWDKa6gO9ph~vc+ZigKnWl zF3kr@gGUtA8?~V*snr01X8FrTgA*ZYQ&CI{w@D|nM||<=^&C#g9C0U_Q{GCO*K23u5sj$t1YrmY!+}C)w|nC40U3%|{AM zUhPJ!oMR5y=oz3fKmbP1>uOw}5Ynb*Vp0IA`%RPZ{(XgW;7-z3YF^l#57b%s0+R7Y zV8MsADNlPqvT{+zB{VK_pUvhAYror~)Q8GHed;$hF?nA^_gbcj9jCdNY0oA2H+3^G zDqM0jehz+4{jRvZ+e|!=MQxZCU zug?m64L_Pm%85fg*`;Ra`&)kDViH{a21eZ`W!Cbmd+&kArl+SX^<;ARgNePO@4ZV; zQD8%+7l`h1gY#FxF-5cyH-&^Af@G;It=4GLw!FMdAlp&nx$>whQ82E2ZmKzSA1mcs z&*yBy_-!kvJ!fsnB*jUiZtj`Bo?gWi&!e|zpwhSnyFo~vV@cH?S|`j66rmeWe*tJV zQVU6fY1}Jzeiw+qcPFN3v5GkgN|BlYpE+{se9 zz4djc{;yB7Dc{1BoK6KL3bV7@1jg^JSaT970n&{pswoo~R|!7Or`TZ&J*icSj8E9u zEBNXXX$2QoR_^dw^H;V~AX9GdQ2MRz#qd>fM>Pb^b-o@N8hU6vrv9xGWarUSjg>|o zpmc{nN@tte4n)k|ba-X?{S9Ap#)h>DJ%CCD5p4rH8-p(^1m<2Kw2P9ZHaJj+{cp>& z?t<+<3G}B0I#tp|#{3>+eG8R!R47@vo5&CY@0BCI zc%j_K3NVli2ywZA`+e{FMM9d4;N@dAXmzqN1X*P7l0n zT4EiLi^f*2IOtvjuYNEl%7fGV$EKzx6c}T^Ie9WHm6xk*FQ(5NQ-NkhwF(kAGJCJl zmtx5I408{0$WCL7y_FTtIg@>8z_U{?np#`KK+gaE4%@0l!Kbvbu~7v$7kp0+MPN!} zIv=PVVquXfg!-K_Cn6`J5AT9UeN06iu;Ad9R_-{w0HFoHHp9`|BQ+|AYj1!5Mzx)I zG$ekONXhBke&pSVNk>Oa&*{4RC=o*P;KpMf1>mqRs5j(+iPKYvc&{g~jn@vxjkKDe zyOM-29NY8i{sv{mRVeXj4h4BQ`QwL5TN)thSfuu4^nrI~S8s9QqRwyF$Q3!iP@8nS zGA}>BV?DJ!K2%;X?Ga|ix5AsKjUU8Mi&JGs6Fv=Z4CA&aE%FPO=A=Z@7|T+h(tNL zx#Rh|KLjx^%XY(fi{D1FqI4Z7u-1=w3`#CCs{Xk0(YoQoWs$p3HmHqy9305NUGq!@ zSKmaDB!kGazc%`oi$#JN{?0ZhNQxPF#5q@KNq+qJT1mBEvG4pJ`ftS(<&o zn3bI;wRY@4y1@9l3E;HF0y9c_&Tb=7sb4yIGUlv6i!`N!67%QbI?*t@9T^od@Z+Ub zVF!kK;1j+&(S~77-(GU8;Wh3Vub5a^wB}L=tsJ)5n>5ZS@3)#b$ISZBXZZvd6mUB} ze$00k8s-0+ivO5u#cm0`>f?#l+wbQ;+_Dslnjhrf)d|Y=S{$7h2$-q!J8+_7Vv6~} zO?sg(dXp(|@k<;bIgKLHO|}Efc(pyva;C*p3Zg-2kR=+k0-Sr;uVV+xh4Nn@vv{QO zmnjl+p= z*$2)BXR+eMRIOu$#7^?1YBh1ieXg}xga5DaO9+|4-8<;8Mc=F}kW=DI z&N3>ufUo`jG}l1@z*IO=Wy!>i2L84mp9ZGHyhrvWa(BWAv9 zgf{kQ*z*4UOnWxA=dl(YdtH7Rp!$`Y>Cox}&Ziv2lv6{1AFJzaG10klU0H*N+m=?x z7}jBZ6@IX8gj-yJWMObXzIhWf!DL%Pv zO~`XyLttssmpZUZ#E3HsXbp6@|M~8xSMmFh+l^hc*D&b&hum#hu|0N=ThC69>q(fE zSMh!?v+Rar&H5QC_~Gmfz{EXvuT;FSKtV1y-m*260sBUOmz~7&ge}h3{`_qM`S!SR zelvoVb;RYyvgj!-u@(`=oLTZ!(OQ_fU8<*t2aaQs?z|8{MF}c$@>CshfMd88h<`M= z22=9FnhFmG1O((P-D#st#q03D@K~e@uu=M}PPD?~b{2Xr_=RN!SYfS&f4M%AOL)U& z2u3D3*7nbt+8zV%9X*v@i^tI|ZM)u4gM!~?cqrEhSRH$l*pDsX?0o(t*aO! zJMy40n<2+IKO8{G@`HU5nWe?Y17tEAjGIo}8H2`76X;Sl(4Y2iZ zzV4Mz!2VawE*sw*9UQD!B%Sk*<0XtW4aLRZ$VEcapc@sO{&r$-6y*A}J&HL$aKGTw z2cgNH9vT684J1Bt+s&r1j0d+oag0g3vroIB0wp=@Yy&Yl?&5}aYLc4n*V z8ei3=+kimu&BMR<4$y}!Lt^DTIkIo)K4!=ODkp7|F9WGIRuo=H+$gPJ!5Tff3XX=B z^j%6ybfqk-SfW$PUT=s@&XqO_WSSs|;4FzbdOuif_*A68{1#vYqJp#;_76wqYJ1y-z&N)-au3MiVnHo20Q9*6^SqbT> zho^^Se#7ugG}R)d0z6>0j5?1=%%cPF+IRwu>@PeS7ohoMbRQ@L(9wL%7IRB9B>D{d zhdthZmPD&H>oyutdV@T$zDppOUj!8W@$8+H-xyR*m=t^66Vx%yY7cyN(w=OFkyqW2 zT1zak7vA||eHkh@{7gpE(XkNy;sw4=(j_LzM>ID~T}bjHM;0HNJIW8-2%t+Twd)~2 zHNSW7-mIS^?|Fma`GU9+kRv%Hdqw7{FIR7Pv+i))yF0e4W7Y265wYR>>fdZT8{0uG z^Q`9$Ywq8$v0YN>dVxGV23P+8W@*3_9urZ+VBlb(`2*0~GowU&1edOBki@vB?!S_Q zU_3v%&M5dDPDiY**KSnC_|LND&}|D`h#gxWOoWfiMbwt^SF}gM5<-;X9~;z{E8gRB zqy|n$$*iG&8Ncnbf36hX^ve6isnC)pf2BhjDnA{%}UQNF@Kn*AJ-fWR|CH+lHgQb!0DSxbW+f-KUxj?=eaL$>4_ z)F}KRjm|J0i2R}XItLw(hHj>l|MtUFog|iIV>s$tq#`mk6D#w`GYke8Y2OcY=!mj+ zLoPcJJ=yx*Hf1~zq(P~KV-jA-w83tu#IwrJi7b7>zBhKzc)#j@+i(ihcyL zz(-6^cjaxMpk9i=(ZcXbKrhW*Rde>e!iwlNrOa*}9Dtqga5(9x4*HaP z+FIPa zNj`gl^Xv=}qB^SgOZb8t4(ki~iKD9?_eMxko_J@`hib2N9wiSM+3!YaUjwa6NB4X2 z?<2G2x8suq*FbD5Kd|gvVe*Dh#K=VEFxqKtZ8i6Q>H9#) zHf;1*i->Es8DDFctUZATG*4D=Y6E+A;Lxu%7m^L|3>KxD8SfhN7h}R=#@R)6Wo6L6Yp5_H= zYL{E6o3NHa2>=a0W_?>m{M)A)#%(vs;n(C>c4;P7zrpxOEibybf zr7N|)r`9Sh;oTou`9rV!mgF7K@jziOz-15-M650Z(}k9aOqs}( zTB%zNTW=z`SqcYGV1t9JTQZdGV7G>1h{a=#DwE=l8LPctOPrsCu_3x#T{Tn7m)@<6 zeI26xD1h3pv8AYlYpwXVF{Ywaao3@XirpL}&AJA92?_9~tlZMNB72}77g_?0s(ba9 z++82y#6E>3Lfs^ceN6ZfJ2=IiWrcgq0w?dZyLI(V8sEaxMiM?G#J_=Du2hzmBWvw_ z%Utq0yaD1;9Bp4p24!25P&&;71R^>1Z>}nrmAFx_bVVg!MIt{>wp&j&T)&3AY=4u( zNZay^vd-Vso&;g#CvZ7q$;|g+xvD%=Q(7)K_VT}q>;!cns@QQ?lJON}-BM>fZG7#_ zk@W@8vB)JYliBx>u2E?#DLX>6M#~!(54UETX(`@59}2Zod6S~6@Jt_6ZN(gls(%>= z3-VpW2y>77%IMxMbPDR##`Oq@_GRZ~DN4zwqLac~_LmS=97|>O#|Il^jJ{LaRx0|t z_30PV7S9h%xrN7EWZC?-KM!1A{;!eXlb60Y!0C#w-30-WwB^jaT1x0_d)Mb|XR6GyBFF2%0BL-*qd)An~0} zJcWHV`2)MrGR}5HhzG8@XJ1B&O;{g9ttGDOK(uV_y*<}-X0(ZTZ<({MCYu@UQ_V#M&o3D_mt-Z+ULAybIKJU+Ru(y^gOU2c$=&&H6pdC0i@{ z0HWZVufZ8k@>!%!J<~+od!4tAqV7s?B#3Mj(ryWVTi5J0of;#|^`LA@m=c#mV4%X} zkb{{1{rfYo39+=u0pyx;CV2)0#qjf?xkYIxozSC>V+8T=viURY3pDyyii97x>oR*! z{$%#rXqC7DKlf}S@aS_%ubOat^4waE_)ab#PSh)7&?R>s9f^(~I?!6^=;-t!Q*ji! zE}cEldXl;$-tnw_5(oi2VQzmJtq92Kg?Ydcofvh<;{H zZoGi$@BcKlKHpZJ2s(Ftp@}5F$489F7DkD`10>P$=EV4HEeeA8F)i*~9tQWh@|pS) z47fe;)jy~2lEv!R)a>`+8q6+#qFhD>$V|_-+r8WZRL4h09gRKAotROtcosJnDsq(i zUz#7h8~$}~;~pF7d&ZQ?TA_&t-eX>hZ0%9oh!N583N;cM$5iTqm3*T@gVIYaN)4xh z86IxahP2gvDNMdaAJ0}DFm@T($p0YBlk`x6SdID_n$>wv%%dhj-{#fB9NUrZb_t3l zI5Dq)Mq_fp$ydkqO3&|=Z`>nAQyDA*Th@K{i{lt#@bvVN8qcxyrRV0?VUbz=lrnCm z7f-#VV|0g9t>mIo_xfZBo=Q0=tcPw-}+o?}qq!12`jEF5vQr*6O{rWve34!JG zw?mts&3}gV?lEpx1>%zj9Sc$M^^g6`OMNmqF~Rsvcq1S31IZ4Yhryml(7=p;oPIIK z3J|^vQnBKvwN6g%K~IB*Jm3=9k=jp!iwMY{F-iLWR8N&OdvcQCkd|*cg3`8Pf4)6r zP}kxl<|go5mY`kagMFsNGy#9)s?Te&*pMmDVKamLe)owN;B0RPLVNuIx~hhp#x+g} zqs5BZPo?&};Wu9$5{QY5hdRIiben+3U>7$~o&WLfFpkHAP;Ew+=$ZA-7qa?kQm@gH z#fFZ<2vWLLV(*3zGPg1B^(|WM-unG>GJ_h1(K2Xpf(A`h_#0OFnL3h8q&H-th*u_+ zKNnKe1@Cz;PQy@eU$Jk1x0s#B8x4cnOh=OjMbNK!6}-ev*c8MPAA-5X0|EiP#noS* znpJmN%|_>HK8l5>N;t+$o2e);%lWC=)d%;;Pxh^hVzo)2vks!+;>G8^BlQ0i1vyW! zyL&yHVr`>oQOW9UsMDKrI^XpXR8cf4%-Z;Ex#RE+Tc#aj!=Cvd14YFM`v42BaEMz) zVv1%SmlGvEH|S~eU)^26Ay#J^NS#VbIZ7q}6m1>#h?Qr`BLrp|YMp#WWQdQwSk~}Z zfxDjh$&P6Qf+YB{g@f+`^}1ho*k*$MRW7~b77oRa#NV~~jLXp3o@|sPjH3l{WZ|(# z;gIdT$dDBS@cX3%#cH>+Kj~L-M^$dknzy z;U(4ci5>ff-)wstSwDbVmtl^$8NE^*YW{d7$%)`{DorU3mX8lQyBu}U5y$GaJdjUm zHkhraw-PKMs6j__LyrhCIcN_cju1M6U=?79+~au3OgNlh3uy(w;o#QXn|&iA4kI=n zVr3vkhW3`02%itZ8}ie#%r<9Vh}}ljAV(!ni!y$WVGdTF@3#R!<=JGy9UP=zM#71* zd;X?HDe>Uyug|WTkAHqhx8#R){MH>|Wh2qq7a&!2lqom2OP7H>(UtEX5&*L=6bS&B zXncdka0^ht7n7XPFBZ!h?2YTpJDlY|fz6#Lz z%gY*vogYnW5>bM24OiqdVcg7XiLzICYWitJ;>S5_OxJy9=Tdw3a%&Q(jr}e3Q~Mb5 zHNhD_%=(0{oU^Lx_vD=0Fl+tAMDEE_ijjqXu<(#YFgRlRVFdg-_Gw+8e9Z9R?z`7K z25)q!U`l~Pd&jIXcdbY6UnhCcpQ8qFY_IHmV0!RF+`X5HHmuQSA-l}~uyTP=&)}S4 zi`jduzU&e*83e7qEIrSucvPH(p;#M|wa7X+5s(kmnt!4{1jo+SiS2zwE zdwW+s5JlP9xPpQ>n{`_m-x`!jt@z)qfUQAO@ynkgCo@*E^Y0p)q&fHR!O!W>ehjZ$ z3&nl+<|T+74w~N+8o%>?qnP0Icy9W;*KkhlYV_zj=i;foUq6_WKALO@$ocRtJR^X= z;RF-&YpvE>acC^)=ZEGLmjx15adXoPef`Z|t3S1RAEI3cgJ)R&YoZpD&9(xhTP|b{uAteR9AdX(d(eZDG@; zrV6p@iRq|G#%lxjou5Hp%i@q(fSrFt?MI1%DcN^D-dd+=yh~@>3>zOty&gE?hj}tR zu#lujJOqL4M-x3GFms>-8Up`I%++Kf9RMc;6YqEX1L^;Ryn!3jao!XVumKkzpKo3K z#^ig3cL{)9xY=x?ue@}VCjf$0B;-zUi{ZvNmNqtQ3DI+3T0DyR`$#`iTSl<+K(iVe zCdx;j=&lr6*UgFuz!V_UptZ(HfSAFJNyt*7U(W}~>~kni{Ia!t|y^4U!jPvqKDwu`#|6bpXcL6_`5+3=8a* zm;2`3yN>`a;u@%;@8?$wAVuC^FC_`d(YtwTzCfHzAP%}-;r)Na(fNp*#RD$Ztzp#5NJApr|AQ_&F_4V~R`398uePD{F?AW8_{738f*3`W(%WxC9(9qECyX>ly zX9v5xhN`Nn(!~c{C{7Q%V%2q>2Dr?W8j;9#0Am%&=3N5E3j{172Gj2gnarSyqAE^I zaml9J#9_xP)3OjuUOO0XsjZlC5*-4o*h;6d$NT%xEfPBc+*G;QPKiAv5|FO%d(qL- zK6kKB#EVq$1JlM(&l@{T{HByJXN4xfvxvOUAmjP>L|x2~(zD=_?=ylp91Q7i*BE83 zN{bgMbY;NqAYY&H-&}z9r=)a0M>Bt3S~$(eF<~;2^4R{qe4TjFwVsyZnR~i#b<%1! z7s{^SwZh%<&nXOD{x{`$`~eIvy0Ngc=9F>( z5p{N9M%j_7g1eg^ydz{H6udZzY>a@(%uVD19uUrCS`jzz+_~?&^v!7Jyok#f0Nn}^ z*nDLCvAM*YN`FZPx7LN&p2uT$QrMbdb3F<4fSs7$VIOD2kjJ7tAe&X=MutRx?Sj06 zCv7UN*98E_Jp8Bc&#D3)%2^BAch<+M`vn}x<)4Y6{L>4+o1d&tqB9)m@q&KlZuZb-D;3yDS9*!ZWPs4AIeV2z4oqU64ZY07B?mC(gF^|> zV-?r1?#wH9;vL5RMLps?_P~$*NGuA0#etN_!ZC;XyUow+X>k`NxP>p$W8LFfX|wHc zqvuMeapO+K1^=fIZ6W3hNQ4`RF0)zm!3ce_z1Hl14B!;w~FgtGCH%yMdPDHf>b~HwbmgI{)tvv;yk>MS@G= zq^ASB+^MP{*xOsgf}$%6w7(HZe_&UKk3?_(wW~Oyd+O?hRRWC2734>^?A~qxkYM@-Oa`cMvLo)m;PilJCcPNx5QHxO{dlDO8?b+s0!e5Vn-HMV z6oJ(ZpNNY5T|Jz{&Umn+Lus>bB_QgSvW+y=<0?dA`ochIZ_6 zJb^&AgO88M)is0%Z(zC|z8oua8#PR+%({*#_z?7xTXgP(f9+wOh|}&OD24bZY2p+I z_duj0QIK|UaCk1p2F>EUG4TS)0_2cO5GDRA2lWd#5Ih1D-%!UZ4j%Z@zDaqmcaQmR zb)^L6obfO2*#7y5Mn@h>L0tX47!`gDAX7fjWv+SXXhFV4ma&a?_WuHaUrBK=5db$A ze}S9W_x!ruQ|>I-06$#?e)^A049sYjXc1G*p^Ah_>07xsT$CxIYXmX*=iRQ;KvCE!R_It&&RUOIbIRo9lX zo5k^~xN1TL@+=}HlZE^lh`^T>F8#Sk5c?n)ltkhISP$~M9~*2HFAoRjSlV;z8_u40 zIS2Mn98VmKfX@stIyyOBN3mfjlJSBs0}ZpcY~A{+;qsjOE-p6>CtZ)WA0RJNE-o#V z;l_9AGdrp0b$SK{quj?NE+a2XPN!Eash-MskZf`)5xouX@m#2lA~6@He?X^TAtryQ7&MPAkqS&{t|sCRYpek{!?%&bf8vgf z8M40+_wjjOmmF#a+oEW;T<;<1p%?+)Vgjv0!yl! z$`$)R{)H?-Q714-_zD-ps2GQx%B}!aM<5i-pT~>q*Q>i>Yr_G6WK|{ zuqsCX+}ymWp90_A-!}#|_3I%Dea!!S*lcSyHy!L?s-CImE^;|T0B_);MzAm9(7+81Wo$jP6SoiI?O6H$+ zcRdOL1r2eVyLV#3iGhIu)JywPU0x<&BYap@c3E7?VjXJr6;0et7ij_VI?s30lIlC#6I4 zD)iZlc)SN-t{gwzox6lvmJCP#_1c`0?q_78#GfbeUn@Q9OcDAZb^9tz$>tS3=NF)r zi{6rIia;xUyiGHn{bPRL2F(0I{P$*EnSbnIs(UB{eg3XACa^Q%wS;JgZ* zF8Cie34(u+*lEN7R9}et$H{9=dfe56$AA*2Z)T+z7(&c_}mC@APP z?m7HULD~)EXaNn$aAYz#D-lmoA+R_K*^E2c=KEf@wzec^7oFu0lt1g9d@44nTIVJQ z-$o*W{hMio;^%w8~#v{(S1PMQDqFFh;<7C?d|_4g-D1NZ`F>>$kLH&lXEIs{`&Z!`Mx)p+Y=+^ zklRN1+@QM8hlu6kOz0!03!pAr&dNFhlKU&3UI6<7-fpMgRR!es8XBAG={*3ru)ygLfTtXV9eU%(<9_YjeGT{Pd&DomWSZ`x zHhH89l9h=T%9RC3CtANHh}dw1o}r{qxH9tHWsv}EIfJCXh|c4jvMsn>SHw`D9jOvC zsC{sW4uNAkew;|gCCiQ%C@-PmOAD0v8I-*`rMtU@GQbctxh5izZom*`i$t&Btn6Aa z-i1p)!BqQpzd3EDEuh{;nII`z)B8qZnnVt-MDz} z!nptzjK1~(?I)>lMq__Qy`vew^|Gkr14U1f+NG_Ss`kkzw*N>b38tQI=tp!!Se5m|Yv5%H=bb#V-4{9ZYKebX*2rMk- zk@;1t*j}AHO3vLo2R(C=uep;7$^qH(ALWn%F}+ma7^usFUo61jS3x*1Fi$+og2>>C zzTbeB)SCaj4Ci2!@MJO1&S-kk_?ASSxoms^GZiT7Mfxz(5^&=L-1LTKX>TXf03Ew% zBBO8y9`6K2TZdV(p5*^s%oH@*pLg{u*9@IkC= z@Ya^==qKBlt{*>aOk2k1SH9^O*QWQTzdgH$+tNRw4FoJ0++0BTn}QBHB-1sLlK@y@ z34Syn8mFjJvEOL_f7<)*N2>exf9FIUDl1gxL4`!a%<7af%F5me;aH`tWE@e7j3UaG zSxCyrrj(MEJwhGXBPV3@xnAe!e&64};d|e|sJoZf>-oH%*S@aD^#l|#rMaj1GeUxT zTGMjRukODFoZ8yj9%obACh{}h4U3MB#(KXR-H!OEOJG(>`388hW>5zEa~Q)DBWm{U z#XEE_uQwo^l*Y2IDPQw~#IG6{)~%U(-xyn5h3|y#+$;L_V#73+==!ls7bomHXWPr##c!XKj6m|?MV0z^IsFQLfxR2sCcOY)v9H1c~< zNM9?yisAfgwDH+W7=vZ;f|UkQZKc4VlLl1N%2fUh7*6OOx_kHTiME0BQo3y~#CyMX zc7C)|PL~asgBb-n5b$S~2Gk?&Hwm+gp1v1AKtm^`l@s`r%|1)?ro<%LLt+5l`UGhM z4o31`a(nl|OfZ-Ma%-TzUP?1=n|*;|NWBnf6r>>&1{H!vphAVyAizGDn^Z%*aef}% zo2j_!Cg?f#Tp#K3r}AF|fm~B6Cuhmis{yt(Tbup#=~La#!Qu07D&JG^THj$OwF}(O zd=c$Ri=Mh}jy6W|e7zUM7Jc>G+pjOOvv)30U!^P$^4&jT$;;c*GBbie#$x8~t?Grh z=*?#3<%KVO;-p7t6AiR6Syu;ySoIB*dU0!kuzJF$hnTqV=Z&px_ zxf{3*|Knu3H%eZ^14%2lwrX$GNFyikFV6gaAL>CnrW&4#B^G2{Z)_Rhg5U>}=$I}6 zjv=z&|F_??E}W+r`ge4Heyfbvy=>KA>Q*DeAjvqNZh+qbC_==2%QwhE_)IJCFIMTE z=4|IOT3uZo;44?$+}yq+>%`O|xRU)(-XmJqg$``0Xt!O2b}RuM#P-BN>@>n)1l$QA zwsri;o$wdN5~QP99$-d};)b_#G7Jlgi%lFHgeT?B&kpe;5C038qs8kFY)k#a%FCjkX+sUm01?T;1Dt0t74t9=(&G^cX;LacC&p7e9RX&{487P=E5XJ{?caf*>k9 z93jxZ@ngDwTj-VCr1Qd4@%qNrFV$%%jQekYu7PPEJNs*hTvN0OI4diwS1s{S0jeg7 zAmsUXPd+ai{r56*zlxZn!_ zzV$F!q}HtY4% zzJP$5Ky@g9%2`=?zz!N96Ab{;BHLzeNp{m`eto^Yx5>CqM44{&O5Xs>s%8Q81pts5 zH5;?4-zfN~n9AL28bNuPGrX*HHM|#ICV&oN;3;a$)V$RiYZrGBQV@V~oSJ455mr`& zHy%C&&f-3K0iETR^M-ngDSZnRxfXm0=zpv4+1?d(c3Kq|@R|f5Z`NOIw>2sMnh9An&+p zMF=#563$1$AAL~rHU>X{Aftcu+}sMCdS2f#YwWKId=8-?zy!d^S<5IOVN2AZWV5Ei zt{_RyG;f1sa5^BhSiiw-$^xGvjDpH+mVGk9OCXq_d+oINdFXhfe$gQrNN5;WlZ~fL zqF4h4Sn97T00!V>1`81C4M{&4-RydUa}M$dk`O%U$9cOX5N2V#2hbsA+2auGqo^AY zC(^8`Iq4LGau}6nDe*e;e_zADZ521O2vlY9&F8x8f)ZUjKpXiFe2*d%xsq-W00A=zaq$D)JLBoduXuSZd>$ZppA?GW<2Sa6*{KtDLNciUt!qPh(Z`ld{!jyB<_5jn} zWI~YB*gKGqqRC+qazrd*)6Oq_6cF?+e6In5i)-r0AFt2>PT4^LYMz!KXGToH{e%B` z0VwrW0nyths4+Y@NKp9Cg(-f!E-C=z30%lBuuF^F89t!1;t218GR(}%J&zaNNE@#X z3>RNub3?q=!*F8HQDMa09GLgmmIM-ThzKh1Zg2r9p9mz=j2h3?e5y-5 zmb3ib0D;cplJ~&_$BoOu={j+=IySr{24`Xt2f1INxh@(i@+$9uv85{}CLoRx%1Ja! zf=6z8;_FWT*@vV{m{a_h$$?bmw+pxW>FBIwuhbuliion3IiELx4~Da{Iy}n z>Gh&5`Vaa?C4w zL0mbK#SE zwQrCitiYy@Ako(-+{{=4=IOdNJtz}AbBi%UsJGqpjt>B@t$`5U20(8?h~opBFoaFy zzq+mk7A*i01KG;c6Huai!z!##{R5&VI(pxh@Wd#*UVxgOTh8wN`}Z2{AMTvD%dLZX zl>v7kgeE`v2+G+94mREd*0n?%kLF(;RN&y?$Ts9MmCdK@>|xp8M?p~?c-~k70t$BS z$9c`t);)QGgREnKt{NG!QQ7+PKiMh&H0px<T)-Jq7u3~33d_;mT~b6(BP|iZBqe&LfB3uY!$KhDX$qqt<|;IRzO@GX z{*b#ZC?MA`{~dDLV9mEU_Frus^=vJcH{@+REG?f+SuML$!J0$27xr!OHfk@dRCFHg z1|0H;reMGd(w-TNXPydIi;kKyk=G~+#?N$$bprBFG_;7{4!L{7U-^ViNSg&bWB{j@ z!inD>0bi#NB#Q!HM?lKs6mSk;;n?Okaw_hdHNEK^DnPyFa>(&;a?(8_x?n8Wm|O1E)dcLAhA&cy@U`^x;DNc8wmu8s zgW8^#DVCs{gs;tyU2KbGs3)Q)yYh-*RO~&<0bc_&7}0f63v^FQTdw%9y|*{#gM-wu zadEj-RXqG#Uj$7pJ$O!+(SM2#`uu3Zy8$5DBzguVaupz#lI-n~2<95m>2F~igiA$G z77uzqE0XL@kapoq%{^M)1I}{IkbB|ij;(VLhn!7o%Y}9(|6R0WLI&&$76x-`2~A1? z%b}j&euItwN6sUR{K1=vV~cZ0VyJILBQ=NuVM+F%=gC2bN*qwlNnXi^X;us8AXkw8 z9Xc`O9L?s{Tb01LK_dSvPdq=R9fI)Cvh47nfR;0=y>3 zksBPhIGk&1w?q4W6az9KWvV4b@qrghPt4XBfUS8H$Qu7?WPv0VGFC+Mt!1vVi&^F6 z_uKp4x>&jJ5c?@~`CrvuVdvOq{T&S41)o2wCdKW)&<8n^92nReZFK`Q5TZaH{gq6l zC?|s`1+V&!sVPS#*7H}3fC^trI{p4C1~7u;c3-AzrbwrSq4i4%o+u(s!PoCd>hT}8 zhnXD!Zk*?H!c~)}rO<>lz%=Mdi|N*j2c5*TW-o$S3!~GyKv@7CkZp#7#il}ycCgnON?E(UONBS4o*OQ|}!PQQ$_poRA+Y8V~ zQYF855zO4oB9p|~>YM%ux~eT#)b#ClZ!@zzEXVHB0mXI%CXP!s1?^dK+nd{e*UmAQ zQm<0hNx5fb7{pxzyYiJQf}a=RH0*b1@v6f|aZE4OL&x3}k~roQj( z>(kM>beQZZ5O6|Z?X=sMb^%jjJ!`v2;F;zpCMGUvR6m5Q1AO!v)ZvIK%38Yt=B+g= z?LrL1YcfE@43S7eA?U>LcX)j3B!^2)EelDX?u5r>edZT-|9A+)8*J~?M1cDin$a{^?83lE*yEu^srOxYPkoUdL z^1@(wQOH%$TQG1-B5@Wkk+-5zJE&QX&8Hn!&umo*+K@V!K-OELqp`k}R1PdO8#Zpr ziaBuP8lZe&II+K?pN+upKv~|5HhgZ-J7q9pYPR2BQ4~lTKp-D&D5TMZ(W$Ac)9~+) zjEubD%Ph$`{pv(^AymowO5L(^O-o)k@B?6ntVjMvKcY6MP#ZzJpBwE-tTHw>HkJyq zK_05fRaJwa<;`9&yOH%Mt{Td~_aghxq#qW6ev^Z3kr|NEWZf{^Cw7%jE`2kL^6RLCOX4NUncG+_a=FU0(ySb3|B70i0s1PP-0d>_LH`C`^f>t_NB~`PV6b0V9bF!g$2ARi+Ys8tH-z zo&p6U2Z5;Pw-US^JEeC`mK@8l{_XO)hlB5<_<{r>1l2C(N>WooCL(p_T}o>BERAH0 zK=$^-XJF`xnKK_{l9E~(ksPdn|Kb3TJJ9|J#`49g`h`omlTlQMUwXQMx@DWtN7 zoj$r_?*2BEnlVULAXRVZV%h#_&)85zlm5M;q=4-3zmq`9os#=qb9J&9kZ;525m(6ZGd+$2o;lIhdp=%qz?3>*JPmYyE z3*W-j91IT#@U`d0?Gy(BMHzFIw+b@^-VQ2PcD@3i2EzjZVx{Cm_bm&N1{UJ8^Jk58 z@~Dg$<6clLIm<2c!dtrUpUPDu`1aRS4~QTWp}g8({#k{oW(Z{nxZhwpem0)8f(F>Y zFTASc!Zlnt5Gi+Xl(JZ4J`jZ0_bF-Yr00=-+#MNE?{5dUPttlo9B#EeHYn^|XI^xJ5uQjL6?E#SZ$*7w~hA@%IDgtCRS$|m4 z3wpV0IA7{*N(xjUAtuRB3IPI8HcW!$5F3}y2EtFw@sm-xMsGfX?d=%~aG>-np(w*( zG}vA!QGGshv~EyIMDo|vQ~?ZftMfb2^moBmV4?NIq4&d}wCh=a&Kdto`7i>GJM~|= z(T043>S=*x({t#1%@rJeebCteE?}_Fr-}@Pb0xUp6?MoMILaZOfGy*sArH`VP54O7h@V?O*sba|QQ>%-Sa)wei^^ zv#i}3NmxBJHG^5r|K@G12@u_Jq4-AbL1YYDzJ3}0S&QM|05g90}SEJAN51_ zz))wUc7!_O@%bRle-=Jz#I$Ksmcs@n_}XP%I4bRn8)r4lO-vlX9hY=EqC&A=Kpdd? zHcB%0RA=OzUH|{u@t#A9H?3%LElV0z8}1uFNEhnv>hAvf)3@fCbZGiVm>>$Wwn8D{ z3^BqHfO#G=f8RAVl`}3OCbp+s@GBjZOrVPXdSqn8j-lb}-=p9FDoU9>ZMs{_g@foH zvQr%}o(@kA^51%ro*~2Wo8nJe#T>n)ArNm>82!fm_~^KPnA@(7Et7j1-Vl)RDE;t< z{Wxep5;zKuTz8$qpX1ORSIH*lKR&MMS1LcWzxfqJK+quN$#`Bco%WL}Fu-gO)gNSn(HWv=7e=XSSV{|(+(+XV;wmg@@&7^#|T4=K)dXSfUIWE zjigo6TbrwcJUNS6f+t~QR=>xfkNdBR#qB6-C$W+B2<6C~) zc6|Qa5NkB(ShJB(XftAaD%y5>^y(HL`Aq?P8FAZB?ckTc?Yli<30(o%*?B-WA79^CtlG5Po0GKm zQ(#>A)XK%)0=!P}2A9f{Ru~nK-I5Q9GyB{JkY_@nsWFUWF$AjCqeflR=aZ9A2P#$S zPGX@5rFOMy-F@Xf&xTg$_+tZeRhYeAoP7f)YE~-#dXx~T8E?ov>KXX(?@O{2AuFS3 z#1qasW=nNnW9acS7^*n2(|wA-dXOzaQ%z0RgcL?p9V6NIf{3pQh@Q-$1~v!z3DrgT zEcMfqSF`UT3T1s(pi-zdx1KT z=-iNW>J*G7%3BfhwP|?ra5@w9cVAAhs6HFVPakEcPzO5kwb?o(@zgonz%UH<@7^s~ zXn<<*3)}nWpz#F+Gjr8X<}$x|w)WrcQ&+-ic(ZRm+;W$SxrR@JDLj)cAqm4qs;WzJ z!tD2$`KAicz;&X)M%kr<<_9N-R~~!#t@4a_7Ea1@%oI)cwf!+G<1RIq%MH%2(_HHp zwUX!e;3ZRjmKBAn-9Z#alMYH$#=HB1m@GzUd6!Iec-`@(j;JzO!>{yJZDiLqImV~B zZ0>Dr8kF@@>b_T{-0eB5@N1KKFhBTInaGcuRaXmqqDTQOy`kYre&sM;6i!?~# z&ZkXYD*wZPU;c1IzC_>jXC(ejt5nr$g=$_Gtu{$Kd+zKP;{??nU5X$^(qXWX%)4#x zfNjZu=DQ4su9teJy7DgNZA@j<#^iI!y3bp4DV{=q$_~*;zv{jI!P)s-f&yKR(VIh| z;o+JkL4K>5eri^GY%{$RnrIYC<#V&Ce!r#XCnz)C@2@ASu}$9el9UjIbOQ>_&xa*E z_;gnJE!YanQs~Yog=ik;r*%fn$eGLb0xmeJIfD_GA-+5GYB}6_RDf^G5DI;RNByjc zGkR^UYFu*tikp7O7MH7uVhL)_?Y-r`z>6RWN zhUj~jJTSO;KA1}TS!bmrsZ=|#H&Pljes7U&GB(p$-@QvpzUm$p1 zrGlQr`<}z35_m`N0W6^aU&Jle=}C0?{qwUcw6^&VsDEx!Mt{O(=KN{0nj~U)Pnzs4 zmLRxZvwFDFTj-#Z6LgWnx&Beq5o~^RmJXdT6ER)Pwn=wXRy^hBjQ0V8_~p(CE=6zN z@UHw)dEvBaR9Y&BL%QW@-{M8HUpZr;5#RhyJE4Y3yOETSSNv9XZeo4?L5U1PJ8>Nx6@H{#?z*naweQM2 zK2es9${gpVWO-<@PES5>gdR`CIDUIex&-W5Pd#6?O~uyWWm6I<>UdMj_*#$VGRA`G z4Dp!a9rETM1cL>*{Zs*3y>LaH)2xk=?h4E}uk>#lleN)>kmd0kQ(D=N<8!Swj>4dC zj5It4m3jF=p&qFRc=h^1)k0aVPBJKbUymV}#D*wYCQwHF89zt?_ZGMzdt|pHD8Mr? zguM1pF-JN(fElvggG)Et=fQMg>hgW&kr5vg-j6i8m%w^mnr_z{ow*JvB(}`()}a0h zW-QJk5OmjF4PS328P8dZQt%-Zm7ko-QJ#h){wYg;E5tCl0_5o^{jW(|Dx)I316dxU*E;g04V^JC5yZ3PL;;tI}-r_!)+03OoJYb3E zS%Rw61_eE8{s8oJir ztG}N@iK$o(tDPwU2lC>-J4ft{+wa* zg$}I*;sz^uZ^sRr(UqGT7`$M`oM2+-#b96*19=Frxoe#>9xCogS!C8G{x@HZ)q z%LzGl&+nsHRY5jJT=2M8*D>GKQoqd&7J-Ct?fXv3Ltl~%UMb-_%gVY|8D33|^3Bui zWYd*x{4i-ix>*i=n_h4MR`&EYD=wAz8nJr@uVxIO$P=`H?e}qPM?5b7Xbc9s`$?Ac z4>`87Fzs>9avP=&|n}>X|Uf*xYl-fN{Jzzy2Ix6+-hHA}IT|h|tGm{UWCg)}dtwzi->h=&8+;<9VL*k-P(!!#!54 zE|UVzQH^JM%f95wWBVYi6fTVZwE4MKC)RK$QAkBrp-Tx8;wW@D^8NX7>05ssWqj9` z2wr)4eM_%dZ1>B}T!^I79yArt&up@x)?|;P`kmesnaCpH;u{L>-N3YR=i%ekqn5fr zvamDxcg7+$Zm{9D&!QZ0F{HjV#7rH$5UnP|j{13lPxJJl^|x8%EsG%3JEodnXd8d@ zSi?aLm$0svmeX~S!Bi(2l5Q&x_N7Yl&r+wYHrGIpaw{MpORpv$LO#f7_XJ!}0`2`m z9+%(CucEt$54)F5#1CN!yC&5}2MwrOF&Ru+Wg>|LZ@t627N>gJM3THHT;Kwt(5S;a zx|37-TJnhbk$JiL&5k zSa6d6uc|e;%b*qRes!42Pkd>4+VRK(5h1k7edAlbu4VgcB4<>nZWd^iPwdOA6Q=wk z;;e>>v1KOKjgP+9CKkVP2~#Zh(jz-ABgH15zM=Wv#2^leugi0IsT^-H5wcy`kNn=; z?8fRZhQ`mM`S10P1VSqaDTKt7$ z1jozyOYGb`%fekD3r65BY8vF3t4le58#B7JUa6I{O~}lo z?N@#Y^qas|J>!ut+wz-N1RK2S)gEa|h=Yt`jOF699T%pm_iXwdJ@0s7ZN=njrisU| z1>*G%3G?N+y=|S19JkynR*$wXpYYqS}83?Iz|@Bsyj9hxw@*iE+KDyo`BQ zd_X~kmK*K-%5hR;I~2B1=txkD5IE;%b1IXvYt?75pZK9CfeQ zY0~!5Sq@>-W3j+(yXQ85>oda@R1FN04TEbeYUfWu0-h#0K#@fNx2Bg{#_ znSeLOZZiQ`tZ^7RAu-?Xv)8?OeBit~n#+I5gL5-6P8TlAEfI&3!lB)t4avV$y$38g zy8<@J=Z}#LOswB6?>6`Wx?5UX(=U{fRZ54Ef=h;GWW89k+}x*aigDsfRurLM+zDIr z=Jv)vM;Yy9^HdjYfD+DEjph==$sL|4`(^q)csC}7nghs!pU30612#AtA~*F zDsaFiKb2y&0^sboy%t4QWif^&>8CaGhjX+EoEhy=U2pmB3Ek#_dK31iy<| z#}v@f_D_fad&+=2gu7aF7R|a(W+LBmrCu}nV}v|}LhHa&8P3w!nZo^+lla{D?gUtnkxQ527E~sXn9N|>Us5f zdwa`4#yX>TubTu~QS=qqdRLgItkgfe^JsZQhGx=0*75zjC}Q{sS@q};OxYg)UK2n* z8PYs|;%)GzT#wGeG`93xi!*M6$#-LqR?KVft{A&b=C^qbi0~7Jt@2!Mx6^!3CV&v5lgxEJ5D&G&6cvXtp}Y`Kkr@zE z{*=&;tH#hFd7Tw0Z;)f9exG;(w?N94W>g1~s=w)|HIO29f>wC~jehppExY~Q>7cV5 zkxFsrS(s*|0i|GvZ*O-2#s%mjhX~a89I0jpPa62^UF{}|{k6iJBo^y|@|*oq+L6^5 zT5%F*68&cVW8pSP$tv4PemhK-c;wXEjz}&@Wx1^8b6bNA=y+*J^0))VRbpW_z#7xK z&pvy8<^A2=_z%IX>RgE~OyuKMM(l^rF~B-JBuYJ37X=SQ9cn=L1nYFDs2EdK&z{y* zC7G9;v52C9`)ZPigN}g_hhm_7o_Q{WP2%Rgk4gwTP;)~%%zj0yc5m#GlRd}zsRt4; zWc={GhFFR0-HMV*XdUKzxo$8+)u`go{x~IZc~4hoN%!jDE!)dl9TOGA6H4ArbKVXggr*%-|Z_^^h1v#-F=9(*iM05j)VVsAyj@Mn9Bb$%M%43 zFE@0l+2map_x?SwrMs8lFm8r{ADOcQ2~V{SGX@2HZuaXM#me*Es&4v$N!U~hmVv9cd&XkOvkF{4Mla8Gi zTnYkm#mL!1W=Gxoxo$4!yn{A2pHZ_>Ulu{T4WMs5M0~XnV^WQCdd3 zH@G7T;h8-2JdSfm*kut$z+ktn>;gFAQ8Oqe;wmPisr)7Bq*qfz-`F%D%5XLryqe_Z zTIl0ygZ`}T?PbpJo;aLi35Vt>o2K}lq7)98a}AF!K{$D$njtU~yREiM!atf8B7K=$ zv$CQqsgkD11K3%x$0w>a&mB1%PBV^>CGh~GrhKB$pB@$m9JDLKBQ5SIly$Y(zP!sH zCJm8CxCLIp?L7rh{l+2xjdhkx}7i7a^R!XaSjn@$t+gXJX3( ziVw&F(s<6X!pRjHDP7l=NCW2W9pI-`;L5Krz(w^UjfwJQ3yZ|<$a@JmWr)W=+445g z+@Cv*EXI{uk|Ku$3ZtX|%d($HKyqRE!kyrxbDZFN4-1MwUx+@U3b$5p{bZb1Cm+!Y zqei(4v(S zWDIHS$}!Se-wKD3#3ozQ3f$1t23-mjk2>C!i2eM^2DN;b(q(Y8MQfW3VuNC)#arjg`JldArKVgj;xfXi^0k`nY)3u{>g8{_;R!O49nNz3^@ActM@+aRjX7_&VR7)`Zzp1teuAP zhQLVw^B);07ppg0@(&Iq1_Fiu>pv6{fMu6p5)i{XcHI z356*M&wEJOu3;c|UdCOx^3MrD{Vo1^51i@(%9{<_5%SM*dP70Um`aG6JHl*x@f9_t$ONtQB^{TIdz}yj#l@fB zzkh#lWW-!@lU4GuWL6Ij@z8tyQsZKIuXmiQqFD8z&9$ zy|E+llSj|oemr5i;KuOX7N$?f=90k>3=F9T3!<0v#Z;w0M4@1ig=jlL+rU=EWwzIzY7BU0q#8-$s3RKa9Z<_hkwMY)B{+UP$TE zsIe@#1$abRFT3E^=#I(e?aQNm>-dGS|Pef_xSFB8u%p1_nx-`os0eCdX`E5{xu zBqTK33KZmJWPJ8Ki1iv~+N)|KDT-gm?m2tyIj>Hh5GGgmyiWECYHP(Vh8!%&OPWs} z{SvY?HvTkNsBa;OPm?t7@;ct~i_cSWpSiFb>va$-<+1JjNW|;7jQV-U3tH4;?{?GIAPPG zao0j?snl)H%55Oe;OV+co0xB7e32o)rGiz~y#&PAecp1j!`;CD*KRFKa+7GHQ z>0;8YwtH&RVGdXFF)QJCSTk`y=wv_Qr1-W;C%kPiJGL;uae0vBK5pJ|vcaRdzx}-X z)F~;*vDeA^$?#UH4hIDZ+5e)U9Fhf zueru_IMim~INo?P$14>6a>8S8ym|TlF<5+@CjsX*E^#z{{!9{Bw&liiczs-_2I zft#%sPG7wgTtMnD#)6FUzA!U|be1=np;>Ibu20Z<;_}$1F^4|oW{S`5azbWtPTNl; zcb_zOB*MNo9(`|wUzr|X_jI;DIsYD3~ya?&=;Oy^^O`w{oLVpVN)7IPOd`uHlDX~Eyv0T6>4Z`NL5wMC%XB1Y8jfZ zhQVGA=7|5i)J1Bg>WJ>pnmFFAJTol=m6lRkenrjVXc+)yOIp5rWxCSqu+q;c*8+=M z>F!oFz|D`ja*%TLF9qsNOQ(6zzv&SmXh`m8Xi4Y$W)waef4+R$5ck%dx^4nLSa}+X zNznrf#bBQHDq|UgOUGN4KvJF9y_d0uxTr#F{dL4muZ=TaNKM^Fns+ouUdQuZ5>=go z&xerxYEpN05xopTR%h|pqy!%ypQ*~iOCGk#U4cu5UFrDUlprRAZ$K#QdubA31+_8e zdAQmv%17fNA)ubyRV0yx_<=v0dwz$B;7lS-^17Ne=itQR6DK7G6%Jqy|LzS-X%q}P zetGekx{y5$4NWt}DuvJ((*4v2H`W)wXFg9o!=_!Tz9J{Igs-?Sl=BGEqa0$z)k?B5 zEwuVb^(zHxnj+ll9*wuA!xMZQuI`J$!8ffD5OIHS7990wNzja)T?~{Lx?}A&I_leV zdb})1ZW^=NZTiVwZgPT?Ycbw{X51A0J4EHIRc?#52Uw?*QO}=3o~)$E8mSI_|3aJO zy`|H_&J^u*4I2Sdx{KVp74Wu!LkF4TK9I$l!+*QWVevgL98cw^GN>@h7uGth*4*&^ zfOZoUPV`l=I@}bwcN1#-{5e;)ik24c%@VV)4T_K4x<+7=mAv}b>E`Oy`=;F#gwn*F zd?QT`uBF;Wd|qP>6=t)(lixfw9&baT(6An_%e&L}_4W0F!os!OoIr$Z%|yA2o*Y!x zBY#;%2!Errv{VcK@Cxd(ay)~mBlmKg0hc#B#%xK`%5-pfK*9q{E!!f>F77XdKKijp zsAhdn�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 literal 0 HcmV?d00001 diff --git a/test/image/mocks/sankey_circular_with_arrows.json b/test/image/mocks/sankey_circular_with_arrows.json index 708a855356a..2fb54d02a7c 100644 --- a/test/image/mocks/sankey_circular_with_arrows.json +++ b/test/image/mocks/sankey_circular_with_arrows.json @@ -7,7 +7,7 @@ "label": ["0", "1", "2", "3", "4", "5", "6"] }, "link": { - "arrowwidth": 20, + "arrowlen": 20, "source": [ 0, 0, 1, 2, 5, 4, 3 ], diff --git a/test/image/mocks/sankey_circular_with_arrows_vertical.json b/test/image/mocks/sankey_circular_with_arrows_vertical.json new file mode 100644 index 00000000000..b02189f526b --- /dev/null +++ b/test/image/mocks/sankey_circular_with_arrows_vertical.json @@ -0,0 +1,28 @@ +{ + "data": [ + { + "type": "sankey", + "orientation": "v", + "node": { + "pad": 5, + "label": ["0", "1", "2", "3", "4", "5", "6"] + }, + "link": { + "arrowlen": 20, + "source": [ + 0, 0, 1, 2, 5, 4, 3 + ], + "target": [ + 5, 3, 4, 3, 0, 2, 2 + ], + "value": [ + 1, 2, 1, 1, 1, 1, 1 + ] + } + }], + "layout": { + "title": {"text": "Sankey with circular data and arrows"}, + "width": 800, + "height": 800 + } +} diff --git a/test/image/mocks/sankey_x_y_with_arrows.json b/test/image/mocks/sankey_x_y_with_arrows.json new file mode 100644 index 00000000000..1a57d8934ce --- /dev/null +++ b/test/image/mocks/sankey_x_y_with_arrows.json @@ -0,0 +1,29 @@ +{ + "data": [ + { + "type": "sankey", + "arrangement": "freeform", + "node": { + "label": ["0", "1", "2"], + "x": [1, 2, 3], + "y": [0,0,0] + }, + "link": { + "arrowlen": 40, + "source": [ + 0, 1, 2 + ], + "target": [ + 1, 2, 0 + ], + "value": [ + 10, 9, 1 + ] + } + }], + "layout": { + "title": {"text": "Sankey with little space"}, + "width": 400, + "height": 400 + } +} From af190c9f043e34549a73f4ae661b60f320af553c Mon Sep 17 00:00:00 2001 From: Andreas Berger Date: Tue, 26 Jul 2022 08:27:10 +0200 Subject: [PATCH 3/6] update plot-schema diff --- test/plot-schema.json | 7 +++++++ 1 file changed, 7 insertions(+) diff --git a/test/plot-schema.json b/test/plot-schema.json index 8aed6ab4651..c9a667c0640 100644 --- a/test/plot-schema.json +++ b/test/plot-schema.json @@ -42051,6 +42051,13 @@ "valType": "number" }, "link": { + "arrowlen": { + "description": "Sets the length (in px) of the links arrow, if 0 no arrow will be drawn.", + "dflt": 0, + "editType": "calc", + "min": 0, + "valType": "number" + }, "color": { "arrayOk": true, "description": "Sets the `link` color. It can be a single value, or an array for specifying color for each `link`. If `link.color` is omitted, then by default, a translucent grey link will be used.", From c1fdf541c4052237943f2dd555512dccd1fa167d Mon Sep 17 00:00:00 2001 From: Andreas Berger Date: Tue, 26 Jul 2022 08:31:07 +0200 Subject: [PATCH 4/6] Rename test files to avoid a bug in the image tests. By renaming the test files, they are run at the end of the tests (https://github.com/plotly/plotly.js/pull/6276#issuecomment-1194448121) --- ...arrows.png => z-sankey_circular_with_arrows.png} | Bin ...g => z-sankey_circular_with_arrows_vertical.png} | Bin ...with_arrows.png => z-sankey_x_y_with_arrows.png} | Bin ...rows.json => z-sankey_circular_with_arrows.json} | 0 ... => z-sankey_circular_with_arrows_vertical.json} | 0 ...th_arrows.json => z-sankey_x_y_with_arrows.json} | 0 6 files changed, 0 insertions(+), 0 deletions(-) rename test/image/baselines/{sankey_circular_with_arrows.png => z-sankey_circular_with_arrows.png} (100%) rename test/image/baselines/{sankey_circular_with_arrows_vertical.png => z-sankey_circular_with_arrows_vertical.png} (100%) rename test/image/baselines/{sankey_x_y_with_arrows.png => z-sankey_x_y_with_arrows.png} (100%) rename test/image/mocks/{sankey_circular_with_arrows.json => z-sankey_circular_with_arrows.json} (100%) rename test/image/mocks/{sankey_circular_with_arrows_vertical.json => z-sankey_circular_with_arrows_vertical.json} (100%) rename test/image/mocks/{sankey_x_y_with_arrows.json => z-sankey_x_y_with_arrows.json} (100%) diff --git a/test/image/baselines/sankey_circular_with_arrows.png b/test/image/baselines/z-sankey_circular_with_arrows.png similarity index 100% rename from test/image/baselines/sankey_circular_with_arrows.png rename to test/image/baselines/z-sankey_circular_with_arrows.png diff --git a/test/image/baselines/sankey_circular_with_arrows_vertical.png b/test/image/baselines/z-sankey_circular_with_arrows_vertical.png similarity index 100% rename from test/image/baselines/sankey_circular_with_arrows_vertical.png rename to test/image/baselines/z-sankey_circular_with_arrows_vertical.png diff --git a/test/image/baselines/sankey_x_y_with_arrows.png b/test/image/baselines/z-sankey_x_y_with_arrows.png similarity index 100% rename from test/image/baselines/sankey_x_y_with_arrows.png rename to test/image/baselines/z-sankey_x_y_with_arrows.png diff --git a/test/image/mocks/sankey_circular_with_arrows.json b/test/image/mocks/z-sankey_circular_with_arrows.json similarity index 100% rename from test/image/mocks/sankey_circular_with_arrows.json rename to test/image/mocks/z-sankey_circular_with_arrows.json diff --git a/test/image/mocks/sankey_circular_with_arrows_vertical.json b/test/image/mocks/z-sankey_circular_with_arrows_vertical.json similarity index 100% rename from test/image/mocks/sankey_circular_with_arrows_vertical.json rename to test/image/mocks/z-sankey_circular_with_arrows_vertical.json diff --git a/test/image/mocks/sankey_x_y_with_arrows.json b/test/image/mocks/z-sankey_x_y_with_arrows.json similarity index 100% rename from test/image/mocks/sankey_x_y_with_arrows.json rename to test/image/mocks/z-sankey_x_y_with_arrows.json From 309bf21873824a9b42b99baa3b204a903f932507 Mon Sep 17 00:00:00 2001 From: Andreas Berger Date: Tue, 26 Jul 2022 08:36:37 +0200 Subject: [PATCH 5/6] Add draft log --- draftlogs/6276_add.md | 1 + 1 file changed, 1 insertion(+) create mode 100644 draftlogs/6276_add.md diff --git a/draftlogs/6276_add.md b/draftlogs/6276_add.md new file mode 100644 index 00000000000..ad355827948 --- /dev/null +++ b/draftlogs/6276_add.md @@ -0,0 +1 @@ +- Add support for sankey links with arrows [[#6276](https://github.com/plotly/plotly.js/pull/6276)] From 15b06b9393cebb9c0c1e50e16e3630ff57450512 Mon Sep 17 00:00:00 2001 From: Andreas Berger Date: Tue, 26 Jul 2022 15:10:35 +0200 Subject: [PATCH 6/6] Update draftlogs/6276_add.md Co-authored-by: Mojtaba Samimi <33888540+archmoj@users.noreply.github.com> --- draftlogs/6276_add.md | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/draftlogs/6276_add.md b/draftlogs/6276_add.md index ad355827948..fbfaf0c67d3 100644 --- a/draftlogs/6276_add.md +++ b/draftlogs/6276_add.md @@ -1 +1,2 @@ -- Add support for sankey links with arrows [[#6276](https://github.com/plotly/plotly.js/pull/6276)] + - Add support for sankey links with arrows [[#6276](https://github.com/plotly/plotly.js/pull/6276)], + with thanks to @Andy2003 for the contribution!