From c22d3bedea902deaaf5021a28d3c113fcc4fa439 Mon Sep 17 00:00:00 2001 From: Evert Timberg Date: Sat, 17 Oct 2020 15:46:56 -0400 Subject: [PATCH] Ability to fill a line from a specified value along an axis (#7905) --- docs/docs/charts/area.md | 7 ++- samples/charts/area/analyser.js | 2 +- samples/charts/area/line-datasets.html | 6 +++ samples/charts/area/radar.html | 6 +++ src/plugins/plugin.filler.js | 21 +++++++-- .../plugin.filler/fill-line-value.json | 42 ++++++++++++++++++ .../plugin.filler/fill-line-value.png | Bin 0 -> 5227 bytes .../plugin.filler/fill-radar-value.json | 39 ++++++++++++++++ .../plugin.filler/fill-radar-value.png | Bin 0 -> 8389 bytes types/plugins/index.d.ts | 2 +- 10 files changed, 117 insertions(+), 8 deletions(-) create mode 100644 test/fixtures/plugin.filler/fill-line-value.json create mode 100644 test/fixtures/plugin.filler/fill-line-value.png create mode 100644 test/fixtures/plugin.filler/fill-radar-value.json create mode 100644 test/fixtures/plugin.filler/fill-radar-value.png diff --git a/docs/docs/charts/area.md b/docs/docs/charts/area.md index 4ec8edb75..477ece36f 100644 --- a/docs/docs/charts/area.md +++ b/docs/docs/charts/area.md @@ -15,11 +15,13 @@ Both [line](./line.mdx) and [radar](./radar.mdx) charts support a `fill` option | Boundary 2 | `string` | `'start'`, `'end'`, `'origin'` | | Disabled 3 | `boolean` | `false` | | Stacked value below 4 | `string` | `'stack'` | +| Axis value 5 | `object` | `{ value: number; }` | > 1 dataset filling modes have been introduced in version 2.6.0
> 2 prior version 2.6.0, boundary values was `'zero'`, `'top'`, `'bottom'` (not supported anymore)
> 3 for backward compatibility, `fill: true` (default) is equivalent to `fill: 'origin'`
> 4 stack mode has been introduced in version 3.0.0
+> 5 axis value mode has been introduced in version 3.0.0
**Example** @@ -31,7 +33,8 @@ new Chart(ctx, { {fill: '+2'}, // 1: fill to dataset 3 {fill: 1}, // 2: fill to dataset 1 {fill: false}, // 3: no fill - {fill: '-2'} // 4: fill to dataset 2 + {fill: '-2'}, // 4: fill to dataset 2 + {fill: {value: 25}} // 5: fill to axis value 25 ] } }); @@ -41,7 +44,7 @@ If you need to support multiple colors when filling from one dataset to another, | Param | Type | Description | | :--- | :--- | :--- | -| `target` | `number`, `string`, `boolean` | The accepted values are the same as the filling mode values, so you may use absolute and relative dataset indexes and/or boundaries. | +| `target` | `number`, `string`, `boolean`, `object` | The accepted values are the same as the filling mode values, so you may use absolute and relative dataset indexes and/or boundaries. | | `above` | `Color` | If no color is set, the default color will be the background color of the chart. | | `below` | `Color` | Same as the above. | diff --git a/samples/charts/area/analyser.js b/samples/charts/area/analyser.js index 5c1005418..592dcbb9d 100644 --- a/samples/charts/area/analyser.js +++ b/samples/charts/area/analyser.js @@ -48,7 +48,7 @@ } else if (isFinite(target)) { target = 'dataset ' + target; } else { - target = 'boundary "' + target + '"'; + target = 'boundary "' + (typeof target === 'object' ? JSON.stringify(target) : target) + '"'; } if (stat.visible) { diff --git a/samples/charts/area/line-datasets.html b/samples/charts/area/line-datasets.html index 9a6636161..1d1d2706e 100644 --- a/samples/charts/area/line-datasets.html +++ b/samples/charts/area/line-datasets.html @@ -102,6 +102,12 @@ hidden: true, label: 'D8', fill: 'end' + }, { + backgroundColor: utils.transparentize(presets.yellow), + borderColor: presets.yellow, + data: generateData(), + label: 'D9', + fill: {above: 'blue', below: 'red', target: {value: 350}} }] }; diff --git a/samples/charts/area/radar.html b/samples/charts/area/radar.html index de30630ed..3c36d670f 100644 --- a/samples/charts/area/radar.html +++ b/samples/charts/area/radar.html @@ -85,6 +85,12 @@ data: generateData(), label: 'D5', fill: '-1' + }, { + backgroundColor: utils.transparentize(presets.grey), + borderColor: presets.grey, + data: generateData(), + label: 'D6', + fill: {value: 85}, }] }; diff --git a/src/plugins/plugin.filler.js b/src/plugins/plugin.filler.js index c27e4d377..49d2d9ec9 100644 --- a/src/plugins/plugin.filler.js +++ b/src/plugins/plugin.filler.js @@ -7,7 +7,7 @@ import Line from '../elements/element.line'; import {_boundSegment, _boundSegments} from '../helpers/helpers.segment'; import {clipArea, unclipArea} from '../helpers/helpers.canvas'; -import {isArray, isFinite, valueOrDefault} from '../helpers/helpers.core'; +import {isArray, isFinite, isObject, valueOrDefault} from '../helpers/helpers.core'; import {TAU, _normalizeAngle} from '../helpers/helpers.math'; /** @@ -57,7 +57,9 @@ function decodeFill(line, index, count) { const fill = parseFillOption(line); let target = parseFloat(fill); - if (isFinite(target) && Math.floor(target) === target) { + if (isObject(fill)) { + return isNaN(fill.value) ? false : fill; + } else if (isFinite(target) && Math.floor(target) === target) { if (fill[0] === '-' || fill[0] === '+') { target = index + target; } @@ -81,6 +83,8 @@ function computeLinearBoundary(source) { target = scale.bottom; } else if (fill === 'end') { target = scale.top; + } else if (isObject(fill)) { + target = scale.getPixelForValue(fill.value); } else if (scale.getBasePixel) { target = scale.getBasePixel(); } @@ -135,8 +139,17 @@ function computeCircularBoundary(source) { const target = []; const start = options.reverse ? scale.max : scale.min; const end = options.reverse ? scale.min : scale.max; - const value = fill === 'start' ? start : fill === 'end' ? end : scale.getBaseValue(); - let i, center; + let i, center, value; + + if (fill === 'start') { + value = start; + } else if (fill === 'end') { + value = end; + } else if (isObject(fill)) { + value = fill.value; + } else { + value = scale.getBaseValue(); + } if (options.gridLines.circular) { center = scale.getPointPositionForValue(0, start); diff --git a/test/fixtures/plugin.filler/fill-line-value.json b/test/fixtures/plugin.filler/fill-line-value.json new file mode 100644 index 000000000..f8520ea6e --- /dev/null +++ b/test/fixtures/plugin.filler/fill-line-value.json @@ -0,0 +1,42 @@ +{ + "config": { + "type": "line", + "data": { + "labels": ["0", "1", "2", "3", "4", "5", "6", "7", "8"], + "datasets": [{ + "backgroundColor": "rgba(255, 0, 0, 0.25)", + "data": [-4, 4, 0, -1, 0, 1, 0, -1, 0], + "fill": { "value": 2 } + }] + }, + "options": { + "responsive": false, + "spanGaps": false, + "legend": false, + "title": false, + "scales": { + "x": { + "display": false + }, + "y": { + "display": false + } + }, + "elements": { + "point": { + "radius": 0 + }, + "line": { + "borderColor": "transparent", + "tension": 0 + } + } + } + }, + "options": { + "canvas": { + "height": 256, + "width": 512 + } + } +} diff --git a/test/fixtures/plugin.filler/fill-line-value.png b/test/fixtures/plugin.filler/fill-line-value.png new file mode 100644 index 0000000000000000000000000000000000000000..758b1c1324b2b9a148fb267bd1119714048b16e2 GIT binary patch literal 5227 zc-oCvdpwkB8-C|Clf#55hmvX>(~3s5Yb&Rrq_C(IQf5{M-{vrsO@x`@>+8I1n?nbg zt!xL0wh&=nDjl?_REWs2GS+BpVVL)Op6B)b`Tc&)KlOXA`?>Gyy6*dV<{3x)d_1(Z z=4fFUroC?M>J1o%ga6VnjcMSY2kG@;7^c5;-D+3={UL+xPH{HHGZ}s>%q=VuO~J<{ zHywSRUXTAW9$HbmFU~hV?|F+)$Wrz-+m|Cj*83fcJEi@vs=^DBzBIM+s;7HeaYdMz zE51yek!DP^wdxiWv(Il)+P1h3(luBn=~n6UvE&Md=vAvAiuOrIdQ=lE+Q7xC6WEq; zVHsm>lv=T#3D?Be#2!n`AvD7<92l`%?ZHeGVT;L5qX=~rvF3jZhksH#NJT8b=AJ_lnkd4}>lM)2dsm$2wqpr1cx?`MLxp*6k}tXJ`w6&2PGQlt z(2)?~73f)=)+M@V8PuB@sdjJ%tivC}qCcUKG!){cWdTC^VMv6UI|?x|#m+gAam@7B zR@Mu+B4Q7&N$ZqBUwd1*uE@2(l~^pL#{jYYM*LEZTL?q)TDeQ85GQPe3YmpMj9^Fu z4B6SrHKjuAv8~^tLd#I0nfM}g(IP|_*up||d$H)3h;9d>+soLjg9X5bof4=qsF25) z9Ul%#VVu7=aN#+gKTVVm6?vA5AD|ZUUt)HlC`5=t{)8bjpqD$}5H)bBt%|l{vmFta zRgepJo!CH)cm(O5jO0_J61W6AejX_@hl(WUh@&+A2qaf#U&IF;>Cv5~%-iS*p;YM-s#+Dg9I21?MavQ2>oYOy zr)c`K;Pl%S5Y{wF4aiH}j^zJ{_%38)N2vpnjY9GWEt=#x3^^6aUr$Lg#r)4A)yq(; zSBedAZZTB-p_NEMH;H_tt(9}IPNlqB%wrZxok~A%3?EcJ`7Y1_jJ8IT-j(^7DslJV zmjoGkV|1+U9%+bAfMEpU>*&|iMIE_Yl!~PVKD-`7iQe@zO9;d<0Kfyl-Embp<4RTP zD_^jhfM=+2$HvHk?k+<~h$0YP4AxA49jv#X6yPGEp=6I$5G;CB6D)c`@%jU^>p(`r z3~VK4LdTB9o?HrO`*}-tV}ZMYW0Jtvfs4T=L)Mi!SSIXnpyanxkVPoINsZV8H$7PS za1SuZZ!6ps1vl-t3Ua0@O~>l$QKk8?68A?jn4A`9P)*K`55U8P3;dQ~Ht^8-T~D>i z0_}5WSWgq>!JZ%8cXB73rEG37##(|xj-e0+;~GPB7-mVy+3}dlVvF6UBw3(BOT@cr zCcBUTtDwac7cDFX(Jg4_9&;M^WKTQ`6Cb1UeM{){X7m>HrH zdvfPYL?r`bQEc-mD)eh~(R)Y*&)IQ=qGE~NZ$MORkh?wjCY(C~=cXrTM?4i`ie-}> zEBqS@CY!b>tD56)!E&tZ)e<+%j+C;oC|xpGLk_Mszq+W|eX6ns%7?i|e(p05?J)z5YUC57{` zHr!(0jWcOl6J#~n)H*1XPC5z4)ORz)7q7hy*ueh`vP$0tmNA+|J(eHvIQE2KJzYGq z{p2PRrWf9epBTT`+o93S@3oA<&(5Dn;kK3eMTbZB!HwOA%Nfn$-aJkG5JYO8`E?&7 zp2B?(SNzN@QmgX{FkIeS&C$4?xVmXGG-1f`aujV}O8l57z71?4JUv$13K+YpXm(^r zd`LSkqboic&=<$cnfRi)2H*K>0w>fPt_6!yqu*}+f&VC#$GWo5`}!AiagYFeO6r~u zF2&T}RTLa0^mUV6B~M~*)*pqoi1!W{cG4ULIh*)T)TJhN12H#m*y6X|0t$kb%D9kj z3jINHA7soPYz}NN6dS3D#>mVZWzTm}G#~EB40DF3^C(07t4D3zkU{nm$iDr7Ltz{< z8o!V>+q4L7ogEXK*dIb|eY-7Ds2{DAs#i^V_)N^m-o}3nODk{Ig>)Q;q%JM{VAyG~ zmi=O*Nf$6>#L>-Jd4-68(0iY9#`2*0hd&!0P6XO>d^6HIEbW59baWIa@Iu$GJZZ0|C5X#s2RmI{={ZFofKrzacfj-$SOeL7S=r1exExa%NkkNI9>& z+U4C_EnF|kQ*8OyOhAF-XcI+Sd_SZ=-*J>F%QNxg|F&RDmkqS6X4N~xPB+;&ueX{P zt;-OnoVDjaUIr`C!1IcaB@`5nbQTu#;sO?F*c2U^=amfyFs`lhi*u_jfsM@JeW>Pb z&)rwBfz|xLK+$D{gC0t{`waQ4iF3SxYM1`1bLG~qo&NQo*!HV{)9l#eZTR$*+<|bX z(f-ynug&HfTWcIAvySTkCsWf7vs0>#?fxEc8hzN}tN3eNc&6Y^f+=sDEGy>SQ1u0L zgsEIuA9-4Gn3gB7Gwf2{a@`o=M)YSZ8*hs#JYWQ8nHUjOq?Btcpd8%98zh+itmtQyUwmt9G6_F}; z*LLlwXB3KNw+WVG-xuO8d-sHT)$3r*M7>7xp3c2*CS9yS30;Tpld76^UD>Z4 zauYnec_mwT`lb?+^QLd3Qs@uwLs`XErF*hQd3h<-vqK-Iy|4tBC31V-fdtGXm?Tvt_=cHyNq0M#0U!voa8ye?60?F*izGL?67_G;P2 zo)W2~n^ka=a8Q*wS#mI0!*R6kyc?5kDIp7gmBK#pZe8|D@_Gl;<@sC)T>~7b`WP?` zB&#}5Hgb8^I7r4Dx3G@-w@5W~F?lDvC~h5EpSyAx&=WST^OtGRCWSY~GvG;Tt30N< zeFRpy=zF2d1LWGT( z%B92aa@Q1h2AEPROK$IO0N|KcV~g!BV|DTeze^ zPYQh%ykQo8G?5dK-l0kPuk;)GjU+pq2RmBmI9xSwgZKrgO%6LugyQ3*>OUb6nHB!W zlio!6s?KU&{PuzzVj69doA{s950A?&w{@cfpx|3Roaqj~f?M!Pa8`t$$2R;Q*a^WcQ?O0rG6+`;XRi4wxDrnB z=dvkyapNKgR}E)+d=>13;L{YW&w3ASU`A9}g6E2eTf$8PW0RZohrh1~y;c(7eTW+i zj-cPUw$b}Q8ycK_uc05rW_TF1!OU22`s?6b2==02H#`i^o13xV>es=W5$r+1p?Daa zmQZ6s+1J5q5WI?lQ}8e-EX7#x_^V*~zYy#~!58o}NbQ2Lpylh}wFq{g;2Jy)Ca*CT zeE2Fj`diSzuw3Jpday$=;*0S6bF?-XzL+(3Fz0H6gVxf&<{udCx3v>e;edAgQtkGj z+PxmN+r}i?0wm)U4SS-W3=v{;kjzE-^a}ht0eG}8hu@jAn)h3>&@>Ql(KLim({M~f z25TLQsDN*Nu1PRofQWM_;_md%P`0~$h!I7+$O;iRK*R|*`~W;wZpMZB@a_7@uvrh( zy47&>BYckXO~p>|`v3hzfEJ}Ig3`4b=_<-5Ucm=rbM2x-km;X{5?D*N_d)_p7U<0n z2UK_w-5IMW*}+J*(Uk0kMV3(ZoncQiO13SMeSAu`elwEYw%>9FB|8kkiBqt_s14j* zKKx{AcLPd3=0_#BmIuMwvE3O{r<)BYPj>5fidtajMaW!UyXXYP+!@}CEn%xDVMT-o z)cx*6z#K|<#VlmYLCTgG@fYY?mvNyZ<=TD@GL=c0+Jz6nVh_F#iJux43f82CMMPAB z+HBBn3yS#xB+Q!3w0TCEd8k79TcmRU=>`euM?ktk z8s70e=MOmN!@l;1z1P|+_qy+E{od(nKPJMb#RmX@NKIAgDFA?ge-{jjy_t9vz5)OQ zpr$0R?`yW3x#>aCQ`Ph4yQ)IR4y<|KS7PzNW2aLD5hLiXJ@4Aw;YZZg?T7oO$=yZL ziItj!+A4zpit~Va4rN3VO)@J!;mP{=1F6FJ$_VcDaiqH7-fzb>n^7n-)L)P?q6fwWTAjI=^-@N{kyj{| z1S?1q;IR|v+{ls*$qqu2_6md50V$u>2c}rjQQ2(RDm925MK5ihQH~Y0W736q#GuHK zahVlbMp)76dt6{C6(k(dGd!KoixvI2iNjQ*`1-!DM$Q!RF1uY4hF5;>#Qb9aqj?b| zsUX8V)Sm(WdvMo7%_;fY{=2L~ML%#<=cpVwfI|ewG>+~IWckx^iAMHU0vEyXS^+Mt zdzWocPX&GlO$B?%7OO6G#3AVhHM;+q0<@482Wt{FAS_FI=MvguByWkEl&WaOO%Z*# zDa!ooI3JcH2D7TO7}A;%vsb9<7mCLQ!B3M__0be`+DP7>ox)Jz8*hkEbTK|N1vEd{ z6h|HQw_XK~Ffh0F#?*l)>CoN4PrT(RR5$ta|0tK*ctJlRcflWQMwiU)<$3Fxf3ElE zrSuQQP(E`vu*K_ps0v4rHka5????RgMrrO-p82`Eie(3qZyDvZG5!5X?yeJ;Z1*^3 z=z@vL@`|>w0?)PProCwf1>>%#(QGCT=XE=P25y8?j`Cy&?^2u z^+m>TM8XnVW!(jcOBT!r*Eb;OiN#P?n?@|kiCb(iIj{pu&w}^{e03CyI$u-rr$NCU zRR4kX%ky&P#WU3bei@EPSK1K;OM`(g&oL~J^!AQpe@T1yR4x$T+jz~hI@yN|%ipho zIOUaL9=%m+&l?e^HbUIkdxI-<>?l9!QohZ@Pr>Ui#M4=+C#b_O&nk}%A~Q zFW8H^Z*&w*Yj?I1r6AVPhp`0y=NoZW$v}Q37xI+3P%fwGOhjU9{XrpgainskZm{m> zW1M8*ydEc|84_+Idoa%OQ9j$9u3Niv?{H9zTS?JF8)$LNKDjQP_hm->^KMd&{0mxS&$V{Px)ipe7>W|Rsk@gto1EP@ILR#ukLbDYcI z-p-F9^dy*q4|3*Tt}{sk!VO0#!5`|qR>iJ8*#?G&B|(8z{tgFopEcwLOb6F$`#9T2 z?azC(QeS*a+oj<^EuQKIYLmOYs@dk46j0OO3c4p_^kFPB+>HQ(f}2gRpvi}!$X%+Fz!e8gj3s#H zN+fC8?y)|E54lXMul>T}u?0CjJF0kfdm`uty--H^TM;>Y&q?ln*0nF2v??&!1G?D! z3Y&?*C>NSk4;6OpxW@pp0VK1l`sVZ_S$ZGQ%>rCLT{%dbKOpp>=RrGDdG$|buwDMX zzm%*6FW##@0nB@Lp>f<(0lSRb7h53;F9IJFTAz{HeP)o{RZkaw3_~8B1kkNWPjc4v zo_so*z9_b#-VGTx&P9BWI3hbZ0h7K#ylPHbN538q4}j4lfWFzei&xF>q+6H>bKiXy zcTD>z+`A)hOGLx8OCVkWy)pk4jECNZARKQhig>0m<7SHg z*w&-V9biOfaynI7Gt=>Lq82%GPVAb26cvjBqrhQ}PG3C&3W0n5CEu?~DCC;tEKDEa)xnuI+yFf){Yc-2V<%E^whcKchBckBFty9@icn&qzX zy3XxP4}2gkmdHI_Pc(NYNMo9S0I9~wnQ0YUo^8D^`4r%Fp(6(x-wtUNpVnqeRuqy4 zZ_L3?CtHPu%qjzE9^6@*lpceAh|~KJ(N&F=&F>K0!f)FK%t{{qpj==Wr6FH(YE{`@yds6M*)n z@+RiZvm^bdwg6Rt^xq_JH4@AOrjtALT1J2M(ltm7wxP@P_RX9>7~*zddN4bo9Q13w zvaeBtX1vQD>vj z3cLbKoaFyre0_D!hy>PfA=UJ-bqpU*4Kn^TPAKWoSbtTl&6sOGR z<10cr`LF=P5`$BmNLh-L)fs7qiE54NQ3YDIb55ECd0+D8V*4V;0BjfgWR{&{xTE}; z2ks9wfG#KL_pqFMy1-q{UZXltCam716ex{j#e%YO7CLunbiC6l*gP^HXf1(^lCenR z(?_TeRdWlIA`PZ)Y;NS%9;ev)!h7RzWg_OzRRixI@ssnqz&376zq7LJW)Uf4c)@2!+ z@m{wouZs~T7i=53Rekx1TX^j-{y`G9Y;!P`CMFVAN~_OyQ6S5Y1tfOx_cFLK>(w!6 zz+XbKC`sVeY00SP15-Mav2w_AQ~`32Z2q=EEr5s|bH^9D=9(rZl*?y&drX9#!>)y; zTy_thytM?6uF3IUsv=mE0C0PWD^55NoP>6-{Zyk#h$sNY(4kK;q9LRE5#-7Ody!US? z++s;lcRoQRt?~N)3`iY7Gi$VT{BJ{(zoKSCRg2!?)Aw0F6$drTh$I0!hvDWLgQuRM z5Z&b6wkjgYF3yWN13jlw=1FxR0;TzMkXk=3UDxg{z;-n<#m_;AFZgu~wf0!-!d4fO z41}<}dVJ9jBKM(YL2U(LILM*lsZVIb_`7v9!s~jH)761;-z^vEAt#uK5)ibY`$pIX zA*itSvj2f(p&1+_U(n|;O*6B=H0h%VsoWRlk|mu?vpe;^5Tp;rf;=~kCc|CM89%9F z$_QBYCB54leXEXXi6$wQW(I*NeXwe`~8Nx~XSF2c}hP}k#*ZI^4%+(>wZoWTSM zXeWRnYTzp^c}{R?!vyQh8q$CrmG;Sth&uh!o3OLVlgv*^M$)JWS6WA@W`P8h+k#tv z!`FOYV|KL=m@_wrBbwu*$aS-VzYZXo=p)EGZ#~W>@JH)tniI}mrF}f5#m-G2@T%ni zL0iQAj%@YsQUs}e1KAhI=aUM*j(1$qPRii1ti zaux){?|Z_Mu&mw73+kot{}XFQ8hbBQ z&QFA*8f<@dz8OEwhgmo|d>l&LXbP;j*C}w}ct{Sv>&;jqB*C;3Ez4Llb*O`H1IdbT zF7+&1lT6-=->5J#MXV{h8Haeh2fzF?biyk96meiwXmaq?CPxH{?OZKnw0PS&ozo37 zKJr(EqbP_%=0GJse~-Mg(hCNSusrkixgNhFOj3Y?zqYMvlAv(?fMiI=J(%M^Te5YC z71u}gb@y&axvT^2&l2&nS*;O5{+9vRu-;K}mEtdf$ct$Fij&?Z7jdb50vujL{XI2y zNapE1JTF~3ET3qPQ&n_Mxqf|Si2|N3L3h62oDPg0CysPT@lf3d^`$@-4-7M!4r zolgVjCksh$6x);{vpx8tD4{S+guVqDAr##H60ti)Nvr^zUS{%tJ5ot?^?BEA#Ku#h zV+WC)1Du%+$7#P--VBU741I#m-!W3mexZJ^V9JheLuSPT)|UdA8m(itQ2#c*?=&sx z4{_UG6pQS*Ja+~A(7zk!A{RwDKOt1DDF4NqGVb_Te@J2Zh$@R_!@2X|Z0<>(!wmu! z)}p8ALFgn+p)@gH1%+8GQE^2)8mI2^V)Z^Hd%`MIoUj3-pC`Mvt90^Q9J{Yv2Liht zkz3G;e%zuOmR}p;LO7TzBOZb+!RRqhFf{^L4?%ebva>D!!|h+BpRjX*ElFXNu$VwO z)W2dPSC8Yv5m=>XMt}RxQB@k@-8MBK{ZINsN%s0SS1%0$C8U?i#nEG6q=pc%HYjI; zbU?t-brz1f%_wZ#-j!j3A0cSERy~)+PE5{><)gX5P*TZC8d~-{@U}$udeYs|S&A4E zFc`RpgB$)>)#CSy^JSIM^yg-zZzC{^)7i}(Z7~}(mDp-sT+eACfzc*8d!j`}KYy?Yi zh&hq-t}nJdA*&qXH?HDTMI2nOA5`>ll}R9hFRhoav+27?BDbb2euv#${9#bg*UAh> zEg`c9RRdTUaH;YlV2GzKo_Gs_1(gvxKVI8@3QZ{NgOVPQ!%m=%Y=w+4KzW6uIh3>Tq~KfIodI{iv%mocL&K3eB3oQ zO1M1XJ$kF4Z#7>k==UqCM|`0sWAXchgWQV!NzA*IZS42^*PuR)h%|%K!%cRDAwMQU zNq!kY@Z*P;*SlTqAJ1o%5VItpz-M7)FOGJ#n9=W6el^w!EHP@;ot7C+5&vzEG}EUe zB1NVB=kHKisH+~NmKUV;5==EONO2}Cl5_1Vrt7m`jDzytA}`KnFTn#Nx}Oq8-K=(YrhT`&I6G%XX6 z#F3oBt;3=|o!tn&rR6{c-II4$WHc3jlcBM0 zF~AfR$wESm#*!*A&bgF^{X1$HLeu5gZM6Ogum6;x#B7macPOT3VN{Bf#BT3O4hkNX z#4Iqh556DreVD3V!-Q_YmfSRY#QFPwIw%fMGc4TYs$HwUV-`NdnMN^X{8Ln##P08v zTs{q|8}!GkGg`MHt*gAqSsjdCjMaTElh?O%_C^zO;Ev~Y%MZ7kAGPFg52bT9;2mOh zJAfZBW;E8iT#!y=47@ytkibIB+^rcO1h7S|;Abf+AHlc2!XQf7ja0sHS_#XmK2-7x zs`z*ROM1Ot9GD-Z4r5YoQx-?TQ5YH6;9z0TNIPD4Y7!P7I?&MW%QJIal%FPcGgaPv zax^SysYM{9ohlf@WxOY-x+IZjt%Pgh`9wZ?pD)(vB;0jNI+;h$kS28fFWFFC+M?m1 z?YqwhT0^v0UFzh^bnrmGEb1I3i5G;)P}cC-zl>t)?$mqPg9N%4lk!cItNNtpg%HQA z&|TZ#LaZua63^o_fk0-7Nmt}Zk>saBk?%3c)8Ilmkc|0{vHmppa^mFZH(}z=g+y+n zSf+VR$J8jq}9~ft$H(s0|~r5YF}@E;X3OpvDS6Wzs^DBaM}SI zY~gtHxrGf*isHa;SlRHc_1e%t3mvyk(+A)?CJL)9BKe>_I0{i8hx^jSV_rO>cU^qER}aeTznY?Zx83m;AAMV zp6Ql#sSWzC9+Ary#I(g)gfU2O_JghK$*5_|?K-rwz*A-{5RR3fXcZb><&X~VS0_ie z#_DDb17g#}$7oC#97+50iX$l{AMSqHh#dyo?@o4g33e2+{h2E5-7^Lk#ovQLfsMqo z=9L8Jxn*N~@@lMm5whlRZym+8^rFAHNMPt0YTl3Ib=KNBjSNncxQ1?A0A@i;ZX9mq zTC*r5;STq?al)@nf+0O|kr%IL0vD554dS+8=l)kXuXK|0m4M%+&78z#@jc!@CQfq_ zw#``|~$cCn9r?%_~s#xLKOk@^#NpWqY zaQNrt6ss<(b$ake)8IUn6AkDs&OKT1qTW=~cp(}~qP`l3#JqI)Dnx!|rXDIZdvDy< zC;qW>UN{7ymEJ(e>~Q?4$d#{nTQl0z)-K6}I(AO4Xf-01@bcH_3w7YmCA5HDefD!! z@c7?1Se$cV@A~;U4_$EM68`yu9Hgd1$gk^1Mlf?VKRY1&dLN&wB|Xa*`RKmfs(sq8 zIm0Eqr3lP+&ptxnx~{OO90 z&tth6u2LW|TX2QEpYk|{twN^?Vk%7-u+_J17<-67^aRpX%u7cn(|w`68Fj~9)CwGx zCc#N_{t_rxmTcAOS8wrihP%S|VYT{cJnF}{2fe~eo59<$$U`2@lg@I>JCEP|n;1eQ zkZ=Q9sgVChEl6*#QE^8sgUz6`gwoUwNWXcbYlFi-=cZq6GBQ@bi?h<5cK)fi9j2(|5n(FSVH_&$G9uWYXW6Fw(z9>pF8aSPlgC69wBORmzUxN9 zkqPf}zc?&3qFbp&LlTbcb0_qh(Lgi{)_vRZN$FzKjyxdnspTh;oJ&`|g zDbx|4+rXm{lIp-xMAK7+t% zAK|65X%!>oaXM4 z(O%n+&14Fq3-hx@-j~0N-9m3G7(I!IKZoBF{q``C8Jy-mnq!-tGRCejQJrj~kZ`VB zS333@rvxKf8QXk_=Okx4OJLtWfB?Zh887is7^RXbBqTZzYTjJBHi{1=%eVRSi{&q! zsEov!g!OmTC+KLnsKAlSI{|>hh|;IMytVrpC&TOz=5X~PvX%UyG@6qm)BUmsZ!AjR zwKtSOqlSJMrm!Uwr}E~J$6+{+fc6? zj>IJWe7Tm2^T$eKieT75;{yq;vSjru9)EKahHHf(3}V{igkp!0&}1S9UkU*nc0bOn z{EN%Q=h-VkobHfLVr{ctChnG{xj)S&v{4|Ox;q^%s}QgefskQgJZV7djE5h08YV90r+33h8hVjLq8Ujz0+!9 z_AaiS7X(*h;IXm=vqFL=1KyM-|1Yg_EuYbmYBg=k#n;fqzLTUk<#?W|z|gV<4ef}6 z{M6f1wfku1!q@qt8@99psV+Z9>ON=Y66n*LEH+NL@Ai%iInY|1h0D)eRgOGP zJI>NQ7mn8mke|>CY?YMR=-ydWi?>$~!h zJQ3DsG{#BzFcflyBgQ1+%{-y5TJ-S0Rp7JKb6=@yIpVzkyXoUHi$q6X#=7Qva)Hv? z-BXf^e?S={{Odjo3*ox75a$J_o#Xnb4J!l@GG{|9V7&ody$yfc%EEtN78$oUzwYnK zUkGYfzQ^Gb@*20bJ|$UfzV<>Hjv$TiJzROvAQyboQrFM%5~ZlVIvzV~z-2Zjeto`> z4@%njWcTVdJ+6wXWHa#m zpeGO-_-7B)@Sm@k)MT;!1F$+^c#8Lt;inPuNiTA*Y`eO@d9*u81zA3pGLJf23QOfs zh#rqp!G=u;zrfzogV@rVU9&Xgca^ zEA=G16z?bJA24AHirmU@0u3!=JKe}#iAOHXW literal 0 Hc-jL100001 diff --git a/types/plugins/index.d.ts b/types/plugins/index.d.ts index 414d3f907..cecf760a1 100644 --- a/types/plugins/index.d.ts +++ b/types/plugins/index.d.ts @@ -9,7 +9,7 @@ export interface IFillerOptions { propagate: boolean; } -export type FillTarget = number | string | 'start' | 'end' | 'origin' | 'stack' | false; +export type FillTarget = number | string | { value: number } | 'start' | 'end' | 'origin' | 'stack' | false; export interface IFillTarget { /** -- 2.47.2