bezel-charts 1.3.0 → 1.5.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +53 -9
- package/dist/bezel-charts.iife.js +12 -9
- package/dist/bezel-charts.js +457 -90
- package/dist/bezel-charts.min.js +12 -9
- package/dist/charts/area.js +4 -0
- package/dist/charts/bars.js +2 -2
- package/dist/charts/donut.js +2 -2
- package/dist/charts/gauge.js +2 -2
- package/dist/charts/heatmap.js +2 -2
- package/dist/charts/histogram.js +3 -0
- package/dist/charts/line.js +3 -3
- package/dist/charts/progress.js +2 -2
- package/dist/charts/ring.js +2 -2
- package/dist/charts/scatter.js +2 -2
- package/dist/charts/shared-5J5X5F2N.js +2 -0
- package/dist/charts/{shared-PCFIMFLL.js → shared-I437GKHE.js} +2 -2
- package/dist/charts/shared-WQEE2V6C.js +2 -0
- package/dist/charts/spark.js +2 -2
- package/package.json +6 -3
- package/src/charts/area.js +97 -0
- package/src/charts/histogram.js +182 -0
- package/src/charts/line.js +18 -59
- package/src/core/xy.js +81 -0
- package/src/element.js +1 -1
- package/src/entries/area.js +10 -0
- package/src/entries/histogram.js +10 -0
- package/src/index.js +3 -1
- package/src/render.js +1 -1
- package/dist/charts/shared-L67BQ555.js +0 -2
package/README.md
CHANGED
|
@@ -9,7 +9,7 @@
|
|
|
9
9
|
[](https://github.com/ShazMoghaddam/bezel-charts/actions/workflows/python.yml)
|
|
10
10
|
[](LICENSE)
|
|
11
11
|
|
|
12
|
-
Bezel Charts is a set of free, open-source web components:
|
|
12
|
+
Bezel Charts is a set of free, open-source web components: twelve chart tiles drawn in pure SVG, so they stay sharp on a phone, a 4K screen or a printed report. Build one in the Studio, paste one line of HTML into any site, or save any chart as a static SVG for a README, Notion page or slide, where JavaScript can't run.
|
|
13
13
|
|
|
14
14
|

|
|
15
15
|
|
|
@@ -20,7 +20,7 @@ Bezel Charts is a set of free, open-source web components: ten chart tiles drawn
|
|
|
20
20
|
- **Made for READMEs.** Every chart exports as a clean static SVG, so a GitHub README can show a real chart.
|
|
21
21
|
- **Data science friendly.** Scatter plots with a least-squares trend line and Pearson's r, grouped series, goal lines and notes on key points.
|
|
22
22
|
- **Speaks your language.** Numbers and dates follow any locale, including Persian.
|
|
23
|
-
- **Light.** About
|
|
23
|
+
- **Light.** About 19 kB gzipped for all twelve charts, or 7 to 10 kB for a page that loads just one. No dependencies and no build step.
|
|
24
24
|
- **Accessible.** Tab to any chart and step through its values with the arrow keys. Screen readers hear each value and get a hidden table of the data. Dashes, shapes and patterns tell series apart without relying on colour, and animation respects reduced-motion settings.
|
|
25
25
|
- **Python too.** `pip install bezel-charts` draws the same charts straight from a pandas DataFrame, for notebooks, reports and READMEs.
|
|
26
26
|
|
|
@@ -49,7 +49,7 @@ A sibling of [Bezel](https://github.com/ShazMoghaddam/bezel), the clock, calenda
|
|
|
49
49
|
<bezel-bars heading="Commits this week" values="4,9,6,3,8,5,3" labels="M,T,W,T,F,S,S" stat="total"></bezel-bars>
|
|
50
50
|
```
|
|
51
51
|
|
|
52
|
-
`@1` always loads the latest 1.x release, so you get fixes without changing anything. To pin an exact version, use `@v1.
|
|
52
|
+
`@1` always loads the latest 1.x release, so you get fixes without changing anything. To pin an exact version, use `@v1.5.0` instead.
|
|
53
53
|
|
|
54
54
|
That's all. Charts fill the width of whatever they sit in and redraw when it changes, so they work in a sidebar, a card grid or a full-width section without extra CSS.
|
|
55
55
|
|
|
@@ -84,9 +84,9 @@ import { toSVG } from 'bezel-charts/line'; // render and toSVG work for every ch
|
|
|
84
84
|
| Page | Gzipped |
|
|
85
85
|
| --- | --- |
|
|
86
86
|
| One sparkline, ring, donut, gauge, progress bar or heatmap | 7.2 to 7.4 kB |
|
|
87
|
-
| One line, scatter or bar chart | 9.
|
|
88
|
-
| A line and a bar chart | 12.
|
|
89
|
-
| Every chart: the full bundle |
|
|
87
|
+
| One line, area, histogram, scatter or bar chart | 9.5 to 10.4 kB |
|
|
88
|
+
| A line and a bar chart | 12.6 kB |
|
|
89
|
+
| Every chart: the full bundle | 19.0 kB |
|
|
90
90
|
|
|
91
91
|
Once a page needs four or five different charts, load the full bundle instead. `<bezel-chart type="…">` works with whichever charts are loaded, and tells you which file to add if its type isn't one of them. The classic `iife.js` script always has every chart, because a classic script can't load the shared file.
|
|
92
92
|
|
|
@@ -164,6 +164,28 @@ One or more lines over time, with an axis, a legend and notes on key moments. Se
|
|
|
164
164
|
| `dash` | a line style per series: `solid`, `dashed`, `dotted`, `dashdot`. On its own, gives each series the next style | off |
|
|
165
165
|
| `markers` | a shape on each point, per series: `circle`, `square`, `triangle`, `diamond`, `none`. On its own, gives each series the next shape | off |
|
|
166
166
|
|
|
167
|
+
### `<bezel-area>`
|
|
168
|
+
|
|
169
|
+
Filled areas over time. Several series overlap as see-through fills, or add `stacked` to pile them up so the top edge is the total, or `stacked="percent"` to show how each total splits. The axis always starts at zero, since an area's height reads as an amount.
|
|
170
|
+
|
|
171
|
+
```html
|
|
172
|
+
<bezel-area heading="Energy mix · GWh" values="120,130,125,140,150,160|80,85,90,88,95,100|40,45,60,70,85,110"
|
|
173
|
+
series="Gas,Nuclear,Wind" labels="2021,2022,2023,2024,2025,2026" stacked></bezel-area>
|
|
174
|
+
```
|
|
175
|
+
|
|
176
|
+
| Attribute | Values | Default |
|
|
177
|
+
| ------------- | -------------------------------------------------------- | ------- |
|
|
178
|
+
| `values` | numbers, series separated by `\|` | |
|
|
179
|
+
| `series` | series names for the legend | |
|
|
180
|
+
| `labels` | one per point, along the bottom | |
|
|
181
|
+
| `stacked` | with several series: on its own to pile them up, or `percent` to scale each column to 100% | off |
|
|
182
|
+
| `height` | chart height in px | `170` |
|
|
183
|
+
| `straight` | boolean, straight edges instead of curves | off |
|
|
184
|
+
| `dash`, `markers` | styles for each series' top edge, as on line charts | off |
|
|
185
|
+
| `patterns` | a fill per series, as on bars | off |
|
|
186
|
+
|
|
187
|
+
The tooltip lists every series, plus the total when stacked, and each series' share in a percent stack. `show-values` writes each value, or the total above each column of a stack. Negative values stack below zero, as stacked bars do, but stacks read best when every value is positive: bands that swing between positive and negative cross over each other.
|
|
188
|
+
|
|
167
189
|
### `<bezel-bars>`
|
|
168
190
|
|
|
169
191
|
Bars, vertical or horizontal. Give it more than one series and you get **grouped bars**, side by side with a legend, or add `stacked` to pile each group's series into one bar.
|
|
@@ -197,6 +219,27 @@ Stacked bars put positive parts above zero and negative parts below it. The tool
|
|
|
197
219
|
|
|
198
220
|
Without `angle-labels`, labels that don't fit take turns, so only every few are shown. With it, they lean at 40 degrees and every one shows, shortened after 24 characters. The tooltip always has the full label.
|
|
199
221
|
|
|
222
|
+
### `<bezel-histogram>`
|
|
223
|
+
|
|
224
|
+
How raw values spread out. Give it the values themselves, such as 500 customers' ages, and it counts how many fall into each range. The ranges get round edges (20, 30, 40, not 19.7, 31.4) and a sensible number for the amount of data.
|
|
225
|
+
|
|
226
|
+
```html
|
|
227
|
+
<bezel-histogram heading="Commute times · minutes" values="34,28,41,22,37,30,45,26,33,52,29,38" mark="median"></bezel-histogram>
|
|
228
|
+
```
|
|
229
|
+
|
|
230
|
+
| Attribute | Values | Default |
|
|
231
|
+
| ------------- | ---------------------------------------------------------- | ------- |
|
|
232
|
+
| `values` | raw numbers, series separated by `\|` | |
|
|
233
|
+
| `series` | series names for the legend | |
|
|
234
|
+
| `bins` | roughly how many ranges | about log₂(n) + 1 |
|
|
235
|
+
| `bin-width` | an exact width for each range, such as `5` | automatic |
|
|
236
|
+
| `mark` | `mean`, `median` or `mean,median`: a labelled line for each | none |
|
|
237
|
+
| `percent` | boolean, shares instead of counts, so groups of different sizes compare | off |
|
|
238
|
+
| `patterns` | with several series, a fill each, as on bars | off |
|
|
239
|
+
| `height` | chart height in px | `190` |
|
|
240
|
+
|
|
241
|
+
Each range includes its lower edge but not its upper one, except the last, which includes both, so the largest value always counts. Several series share the same ranges and overlap, so their spreads compare directly. `prefix`, `suffix` and `decimals` format the range edges. If you have already counted, use `<bezel-bars>` instead.
|
|
242
|
+
|
|
200
243
|
### `<bezel-scatter>`
|
|
201
244
|
|
|
202
245
|
How two measures move together. Pass matching `x` and `y` lists; separate groups with `|`.
|
|
@@ -331,7 +374,7 @@ Any of the above, picked with `type`: `<bezel-chart type="donut" values="3,2,1">
|
|
|
331
374
|
| `no-tooltips` | boolean, turns off hover, tap and keyboard values, and leaves the chart out of the Tab order | off |
|
|
332
375
|
| `static` | boolean, skips the entrance animation | off |
|
|
333
376
|
|
|
334
|
-
Not every option suits every chart: `notes` works on spark, line and scatter; `show-values` on spark, line and bars; `goal-label` on spark, line, bars and scatter; `stat` on everything except the gauge and scatter. The Studio only shows what applies.
|
|
377
|
+
Not every option suits every chart: `notes` works on spark, line, area and scatter; `show-values` on spark, line, area and bars; `goal-label` on spark, line, area, bars and scatter; `stat` on everything except the gauge and scatter. The Studio only shows what applies.
|
|
335
378
|
|
|
336
379
|
## Colours and dark mode
|
|
337
380
|
|
|
@@ -425,7 +468,7 @@ bc.line(df, x="month", y=["sales", "costs"], heading="Sales", prefix="£")
|
|
|
425
468
|
bc.spark(df["signups"], heading="Signups").save("docs/signups.svg")
|
|
426
469
|
```
|
|
427
470
|
|
|
428
|
-
All
|
|
471
|
+
All twelve charts are available, and the Python output matches the JavaScript byte for byte, checked in CI. `chart.alt` gives ready-made alt text for the saved image. See the [Python README](python/README.md).
|
|
429
472
|
|
|
430
473
|
## Frameworks
|
|
431
474
|
|
|
@@ -458,7 +501,8 @@ npm run test:browser # click through every Studio control in a real browser (nee
|
|
|
458
501
|
|
|
459
502
|
```
|
|
460
503
|
src/
|
|
461
|
-
core/ shared helpers, the bezel frame and the colour themes; series.js has the extras for line, bars
|
|
504
|
+
core/ shared helpers, the bezel frame and the colour themes; series.js has the extras for line, area, bars
|
|
505
|
+
and scatter, and xy.js the axis frame line and area charts share
|
|
462
506
|
charts/ one file per chart type: options in, SVG string out
|
|
463
507
|
render.js picks the chart and returns its SVG
|
|
464
508
|
element.js the custom element: sizing, theme, tooltips, keyboard and export
|
|
@@ -1,9 +1,12 @@
|
|
|
1
|
-
/*! Bezel Charts v1.
|
|
2
|
-
var BezelCharts=(()=>{var Ae=Object.defineProperty;var rr=Object.getOwnPropertyDescriptor;var ar=Object.getOwnPropertyNames;var nr=Object.prototype.hasOwnProperty;var ir=(t,e)=>{for(var r in e)Ae(t,r,{get:e[r],enumerable:!0})},lr=(t,e,r,l)=>{if(e&&typeof e=="object"||typeof e=="function")for(let i of ar(e))!nr.call(t,i)&&i!==r&&Ae(t,i,{get:()=>e[i],enumerable:!(l=rr(e,i))||l.enumerable});return t};var or=t=>lr(Ae({},"__esModule",{value:!0}),t);var yr={};ir(yr,{BezelChart:()=>Mt,render:()=>kt,themes:()=>Wt,toSVG:()=>Ct,types:()=>br,version:()=>xr});var at="ui-sans-serif,system-ui,-apple-system,'Segoe UI',Roboto,Helvetica,Arial,sans-serif",vt="ui-monospace,SFMono-Regular,Menlo,Consolas,monospace",sr=0;function Dt(t){return"bzc"+t+(++sr).toString(36)+Math.random().toString(36).slice(2,6)}function nt(t){return String(t??"").replace(/[&<>"']/g,function(e){return{"&":"&","<":"<",">":">",'"':""","'":"'"}[e]})}function a(t){return Math.round(t*100)/100}function _(t,e,r){return Math.max(e,Math.min(r,t))}function I(t,e){var r=parseFloat(t);return isFinite(r)?r:e}function v(t){return t!=null&&t!==""}function K(t){return Array.isArray(t)?t.map(function(e){var r=+e;return isFinite(r)?r:0}):v(t)?String(t).split(/[\s,;]+/).filter(Boolean).map(function(e){var r=+e;return isFinite(r)?r:0}):[]}function P(t){return Array.isArray(t)?t.map(String):v(t)?String(t).split(",").map(function(e){return e.trim()}):[]}function At(t){return Array.isArray(t)?Array.isArray(t[0])?t.map(K):[K(t)]:v(t)?String(t).split("|").map(K).filter(function(e){return e.length}):[]}function Tt(t){return t.reduce(function(e,r){return e+r},0)}function bt(t,e,r){return String(t).length*e*(r?.6:.56)}function qt(t,e){return t=String(t),t.length>e?t.slice(0,Math.max(1,e-1))+"\u2026":t}function j(t){return t===!0||t===""||t==="true"||t==="1"}function h(t,e,r){if(!isFinite(t))return"\u2013";var l=Math.abs(t),i;v(e.decimals)?i=_(parseInt(e.decimals,10)||0,0,6):i=t%1===0?0:l<10?2:l<100?1:0;var n={maximumFractionDigits:i,minimumFractionDigits:v(e.decimals)?i:0};(j(e.compact)||r)&&l>=1e4&&(n={notation:"compact",maximumFractionDigits:1});var s;try{s=new Intl.NumberFormat(e.lang||"en-GB",n).format(l)}catch{s=String(a(l))}return(t<0?"\u2212":"")+(e.prefix||"")+s+(e.suffix||"")}function oe(t,e){if(!t.length)return"";for(var r="M"+a(t[0][0])+","+a(t[0][1]),l=1;l<t.length;l++){var i=t[l-1],n=t[l];if(e)r+="L"+a(n[0])+","+a(n[1]);else{var s=(i[0]+n[0])/2;r+="C"+a(s)+","+a(i[1])+" "+a(s)+","+a(n[1])+" "+a(n[0])+","+a(n[1])}}return r}function S(t,e,r,l){return'<text x="'+a(t)+'" y="'+a(e)+'" '+(l||"")+">"+nt(r)+"</text>"}function $(t,e,r,l){return'fill="'+(l||t.muted)+'" font-family="'+vt+'" font-size="'+(e||10)+'"'+(r?" "+r:"")}function yt(t,e,r,l,i){return'<rect class="bzc-hit" x="'+a(t)+'" y="'+a(e)+'" width="'+a(Math.max(1,r))+'" height="'+a(Math.max(1,l))+'" fill="#000" fill-opacity="0" data-tip="'+nt(i)+'"/>'}function lt(t,e,r){return t.animate?' class="'+e+'"'+(r?' style="animation-delay:'+a(r)+'s"':""):""}function ut(t,e){var r=P(t.color).filter(Boolean);return r.length?r:e.palette}function ht(t,e,r,l,i){return S(e+l/2,r+i/2+4,"No data yet",'text-anchor="middle" fill="'+t.muted+'" font-family="'+at+'" font-size="13"')}function Kt(t,e){return v(t.notes)?String(t.notes).split(";").map(function(r){var l=r.indexOf(":");if(l<0)return null;var i=r.slice(0,l).trim(),n=r.slice(l+1).trim(),s=e.map(String).indexOf(i);return s<0&&String(parseInt(i,10))===i&&(s=parseInt(i,10)),s>=0&&n?{i:s,text:n}:null}).filter(Boolean):[]}function Pt(t,e,r,l,i){var n=(v(t.goalLabel)?t.goalLabel:"Goal")+" "+h(I(t.goal,0),t);return'<line x1="'+a(r)+'" x2="'+a(l)+'" y1="'+a(i)+'" y2="'+a(i)+'" stroke="'+e.fg+'" stroke-opacity=".55" stroke-width="1.25" stroke-dasharray="4 4"/>'+S(l,i-5,n,$(e,10,'text-anchor="end"'))}function zt(t,e,r){var l=String(v(e.stat)?e.stat:r||"").toLowerCase();if(!l||l==="none"||!t.length)return null;var i=Tt(t),n={last:t[t.length-1],total:i,sum:i,average:i/t.length,avg:i/t.length,max:Math.max.apply(null,t),min:Math.min.apply(null,t)};if(!(l in n))return null;var s=null;return l==="last"&&t.length>1&&e.delta!=="none"&&(s=t[t.length-1]-t[0]),{val:n[l],delta:s}}function Yt(t){var e=Math.round(_(I(t.width,360),160,2400)),r=t.frame==="none"?0:4,l=t.frame==="none"?8:20;return{W:e,b:r,P:l,w:e-2*(r+l)}}var fr=".bzc-a{animation:bzc-in .6s ease both}.bzc-d{animation:bzc-draw 1.1s cubic-bezier(.3,.7,.2,1) both}.bzc-g{transform-box:fill-box;transform-origin:50% 100%;animation:bzc-grow .7s cubic-bezier(.2,.8,.2,1) both}.bzc-gn{transform-box:fill-box;transform-origin:50% 0;animation:bzc-grow .7s cubic-bezier(.2,.8,.2,1) both}.bzc-gx{transform-box:fill-box;transform-origin:0 50%;animation:bzc-growx .8s cubic-bezier(.2,.8,.2,1) both}.bzc-s{animation:bzc-sweep 1.1s cubic-bezier(.2,.8,.2,1) both}@keyframes bzc-in{from{opacity:0}}@keyframes bzc-draw{from{stroke-dashoffset:1}}@keyframes bzc-grow{from{transform:scaleY(0)}}@keyframes bzc-growx{from{transform:scaleX(0)}}@keyframes bzc-sweep{from{stroke-dasharray:0 100}}@media (prefers-reduced-motion:reduce){[class^=bzc-]{animation:none!important}}";function mt(t,e,r,l,i){var n=Yt(t),s=n.W,o=n.b,c=n.P,x=n.w,g=_(I(t.corners,22),0,60),d=o+c,f="";v(t.heading)&&(f+=S(o+c,d+10,String(t.heading).toUpperCase(),$(e,11,'font-weight="600" letter-spacing="1.3"')),d+=24);var C=i&&i.stat;if(C){if(f+=S(o+c,d+30,h(C.val,t),'fill="'+e.fg+'" font-family="'+at+'" font-size="32" font-weight="800" letter-spacing="-0.5"'),C.delta!=null){var z=C.delta>0,B=C.delta===0,F=t.delta==="inverse"?!z:z,b=B?e.muted:F?e.up:e.down,L=(B?"\u25CF ":z?"\u25B2 ":"\u25BC ")+h(Math.abs(C.delta),t)+" "+(v(t.deltaLabel)?t.deltaLabel:"since start");f+=S(o+c+x,d+28,L,'text-anchor="end" fill="'+b+'" font-family="'+vt+'" font-size="11" font-weight="600"')}d+=44}var m=l(o+c,d,x,r),A=Math.round(d+r+c+o),E="";t.frame!=="none"?E='<rect width="'+s+'" height="'+A+'" rx="'+g+'" fill="'+e.bezel+'"/><rect x="'+o+'" y="'+o+'" width="'+(s-2*o)+'" height="'+(A-2*o)+'" rx="'+Math.max(0,g-o)+'" fill="'+(t.background||e.tile)+'"/>':v(t.background)&&(E='<rect width="'+s+'" height="'+A+'" rx="'+g+'" fill="'+t.background+'"/>');var y=(v(t.heading)?t.heading+": ":"")+(i&&i.summary||"chart");return'<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 '+s+" "+A+'" width="'+s+'" height="'+A+'" role="img" aria-label="'+nt(y)+'"><title>'+nt(y)+"</title>"+(t.animate?"<style>"+fr+"</style>":"")+E+f+m+"</svg>"}function se(t,e){var r=K(t.values),l=ut(t,e)[0],i=I(t.height,64),n=P(t.labels),s=Kt(t,n),o=zt(r,t,"last");return mt(t,e,i,function(c,x,g,d){if(!r.length)return ht(e,c,x,g,d);var f=r.length===1?[r[0],r[0]]:r,C=Math.min.apply(null,f),z=Math.max.apply(null,f);v(t.goal)&&(C=Math.min(C,+t.goal),z=Math.max(z,+t.goal));var B=(z-C||Math.abs(z)||1)*.12;C-=B,z+=B;var F=function(k){return c+k*g/(f.length-1)},b=function(k){return x+d-(k-C)/(z-C)*d},L=f.map(function(k,p){return[F(p),b(k)]}),m=oe(L,j(t.straight)),A=Dt("g"),E=L[L.length-1],y='<defs><linearGradient id="'+A+'" x1="0" y1="0" x2="0" y2="1"><stop offset="0" stop-color="'+l+'" stop-opacity=".32"/><stop offset="1" stop-color="'+l+'" stop-opacity="0"/></linearGradient></defs>';[1/3,2/3].forEach(function(k){y+='<line x1="'+c+'" x2="'+(c+g)+'" y1="'+a(x+d*k)+'" y2="'+a(x+d*k)+'" stroke="'+e.grid+'" stroke-dasharray="2 4"/>'}),y+='<path d="'+m+"L"+a(E[0])+","+(x+d)+"L"+c+","+(x+d)+'Z" fill="url(#'+A+')"'+lt(t,"bzc-a")+"/>",y+='<path d="'+m+'" fill="none" stroke="'+l+'" stroke-width="2.5" stroke-linecap="round" stroke-linejoin="round" pathLength="1" style="stroke-dasharray:1"'+lt(t,"bzc-d")+"/>",v(t.goal)&&(y+=Pt(t,e,c,c+g,b(+t.goal))),s.forEach(function(k){if(!(k.i>=r.length)){var p=L[k.i];y+='<circle cx="'+a(p[0])+'" cy="'+a(p[1])+'" r="3.5" fill="'+e.fg+'"/>'+S(_(p[0],c+30,c+g-30),p[1]-9,k.text,$(e,10,'text-anchor="middle"',e.fg))}}),y+='<circle cx="'+a(E[0])+'" cy="'+a(E[1])+'" r="9" fill="'+l+'" fill-opacity=".25"/><circle cx="'+a(E[0])+'" cy="'+a(E[1])+'" r="4.5" fill="'+l+'"/>',j(t.showValues)&&L.forEach(function(k,p){p<r.length&&(y+=S(k[0],k[1]-8,h(r[p],t,!0),$(e,9,'text-anchor="middle"')))});var O=r.length>1?g/(r.length-1):g;return r.forEach(function(k,p){y+=yt(F(p)-O/2,x-6,O,d+12,(n[p]||"#"+(p+1))+": "+h(k,t))}),y},{stat:o,summary:r.length?"latest "+h(r[r.length-1],t):"no data"})}se.table=function(t){var e=P(t.labels);return{head:["Label","Value"],rows:K(t.values).map(function(r,l){return[e[l]||"#"+(l+1),h(r,t)]})}};var Wt={dark:{tile:"#15151d",bezel:"#000000",fg:"#f2f1f7",muted:"#8c8aa0",grid:"#2a2935",up:"#5EE6C8",down:"#F675A8",palette:["#9FA1FF","#F675A8","#5EE6C8","#FFC857","#7CC4FF","#FF8A5B"]},light:{tile:"#ffffff",bezel:"#000000",fg:"#17161f",muted:"#6b6980",grid:"#e8e6ef",up:"#12a383",down:"#d63f7c",palette:["#6E70F0","#E2508C","#16A884","#D99A0E","#2F8FE0","#EE6431"]}};var fe=["spark","line","bars","scatter","ring","donut","gauge","progress","heatmap"],ce={};function pt(t,e){ce[t]=e}var cr=t=>t.replace(/-([a-z])/g,(e,r)=>r.toUpperCase());function De(t,e){if(!ce[t])throw new Error(fe.includes(t)?`Bezel Charts: the ${t} chart isn't loaded. Add import 'bezel-charts/${t}', or load dist/charts/${t}.js.`:`Bezel Charts: unknown chart type "${t}". Choose one of: ${fe.join(", ")}.`);let r={};for(let[l,i]of Object.entries(e))r[cr(l)]=i;return r}function kt(t,e={}){let r=De(t,e);r.animate=j(r.animate),r.frame=r.frame==="none"?"none":"bezel";let l=r.theme==="light"||r.theme==="dark"?r.theme:r.autoTheme||"dark";return ce[t](r,Wt[l])}function Pe(t,e={}){return ce[t].table(De(t,e))}function Oe(t){return t.replace(/<rect class="bzc-hit"[^>]*\/>/g,"").replace(/<circle[^>]* class="bzc-hit"[^>]*\/>/g,"").replace(/ data-tip="[^"]*"/g,"")}function Ct(t,e={}){return Oe(kt(t,{...e,animate:!1}))}var Ue=["type","values","labels","series","heading","prefix","suffix","decimals","compact","color","theme","frame","width","height","goal","goal-label","notes","show-values","stat","delta","delta-label","max","min","value","zones","horizontal","straight","zero","start","lang","corners","background","center-label","highlight","x","y","x-label","y-label","trend","static","no-tooltips","stacked","angle-labels","dash","markers","patterns"],ur=`:host{display:block;position:relative;max-width:100%}:host([hidden]){display:none}svg{display:block;max-width:100%;height:auto;overflow:visible}.tip{position:absolute;left:0;top:0;pointer-events:none;background:#0b0b10;color:#f2f1f7;font:600 12px/1.5 ${vt};padding:7px 10px;border-radius:10px;white-space:pre;opacity:0;transform:translate(-50%,calc(-100% - 12px));transition:opacity .12s;z-index:3;border:1px solid #2a2935;box-shadow:0 8px 24px rgba(0,0,0,.35)}.tip.on{opacity:1}.c{outline:none}.c:focus-visible{outline:2px solid #fff;outline-offset:3px;box-shadow:0 0 0 7px #000}.k{stroke:currentColor;stroke-width:2;stroke-opacity:1}.sr{position:absolute;width:1px;height:1px;overflow:hidden;clip-path:inset(50%);white-space:nowrap}@media (forced-colors:active){.c:focus-visible{outline-color:Highlight}}`,hr={ArrowLeft:-1,ArrowUp:-1,ArrowRight:1,ArrowDown:1},mr=()=>typeof matchMedia=="function"?matchMedia("(prefers-color-scheme: dark)"):null,pr=()=>{let t=typeof document<"u"&&document.documentElement?.getAttribute?.("data-theme");return t==="light"||t==="dark"?t:null},Te=new Set;typeof MutationObserver=="function"&&typeof document<"u"&&document.documentElement&&new MutationObserver(()=>Te.forEach(t=>t.refresh())).observe(document.documentElement,{attributes:!0,attributeFilter:["data-theme"]});var dr=typeof HTMLElement>"u"?class{}:HTMLElement,Mt=class extends dr{static get observedAttributes(){return Ue}static get themes(){return Wt}get resolvedTheme(){let e=this.getAttribute("theme");return e==="light"||e==="dark"?e:this.options.autoTheme}get chartType(){return this.getAttribute("type")||"spark"}connectedCallback(){this.shadowRoot||(this.attachShadow({mode:"open"}).innerHTML=`<style>${ur}</style><div class="c" role="group" aria-roledescription="chart"></div><p class="sr" id="h">Use the arrow keys to step through the values.</p><div class="tip" aria-hidden="true"></div><div class="sr" aria-live="polite"></div><div class="sr"></div>`,[,this.#t,,this.#r,this.#o,this.#c]=this.shadowRoot.children,this.shadowRoot.addEventListener("pointermove",e=>this.#h(e)),this.shadowRoot.addEventListener("pointerdown",e=>this.#h(e)),this.addEventListener("pointerleave",()=>this.#r.classList.remove("on")),this.#t.addEventListener("keydown",e=>this.#v(e)),this.#t.addEventListener("blur",()=>this.#g())),Te.add(this),this.#a=mr(),this.#a?.addEventListener?.("change",this.#u),typeof ResizeObserver=="function"?(this.#l=new ResizeObserver(([e])=>{let r=Math.round(e.contentRect.width);(!this.#n||!this.hasAttribute("width")&&r>0&&Math.abs(r-this.#s)>1)&&this.#i()}),this.#l.observe(this)):this.#i()}disconnectedCallback(){Te.delete(this),this.#l?.disconnect(),this.#a?.removeEventListener?.("change",this.#u)}attributeChangedCallback(){!this.#n||this.#f||(this.#f=!0,queueMicrotask(()=>{this.#f=!1,this.#i()}))}get options(){let e={};for(let r of Ue)this.hasAttribute(r)&&(e[r]=this.getAttribute(r));return e.width||(e.width=this.#s||360),e.autoTheme=pr()||(this.#a?this.#a.matches?"dark":"light":"dark"),e}refresh(){this.#n&&this.#i()}toSVG(e={}){return Oe(kt(this.chartType,{...this.options,...e,animate:!1}))}download(e){let r=URL.createObjectURL(new Blob([this.toSVG()],{type:"image/svg+xml"})),l=Object.assign(document.createElement("a"),{href:r,download:`${(e||this.getAttribute("heading")||this.chartType).replace(/[^\w-]+/g,"-").toLowerCase()}.svg`});document.body.append(l),l.click(),l.remove(),setTimeout(()=>URL.revokeObjectURL(r),1e3)}#l=null;#t=null;#r=null;#o=null;#c=null;#e=-1;#a=null;#s=0;#n=!1;#f=!1;#u=()=>{let e=this.getAttribute("theme");(!e||e==="auto")&&this.refresh()};#i(){if(!this.shadowRoot)return;let e=Math.round(this.getBoundingClientRect?.().width||0);this.#s=e>0?e:360;let r=this.options;r.animate=!this.#n&&!this.hasAttribute("static");let l,i=null;try{l=kt(this.chartType,r),i=Pe(this.chartType,r)}catch(c){l=`<p style="font:13px ${at};color:#d63f7c">${nt(c.message)}</p>`}let n=this.#t;n.innerHTML=l.replace(/<title>[\s\S]*?<\/title>/,"");let s=n.querySelector("svg");s?(n.setAttribute("aria-label",s.getAttribute("aria-label")),s.removeAttribute("role"),s.removeAttribute("aria-label"),s.setAttribute("aria-hidden","true")):n.removeAttribute("aria-label");let o=!!s&&!this.hasAttribute("no-tooltips");o?(n.setAttribute("tabindex","0"),n.setAttribute("aria-describedby","h")):(n.removeAttribute("tabindex"),n.removeAttribute("aria-describedby")),n.style.color=Wt[r.theme==="light"||r.theme==="dark"?r.theme:r.autoTheme].fg,n.style.borderRadius=`${r.frame==="none"?4:_(+r.corners||22,0,60)}px`,this.#c.innerHTML=i&&i.rows.length?gr(r.heading,i):"",this.#e>=0&&o&&this.shadowRoot.activeElement===n?this.#d(this.#e):this.#e=-1,this.#n=!0,this.dispatchEvent(new CustomEvent("bezel-render",{bubbles:!0}))}#h(e){if(this.hasAttribute("no-tooltips"))return;let r=e.target?.closest?.("[data-tip]");if(!r){this.#r.classList.remove("on");return}this.#m(r,e.clientX,e.clientY)}#m(e,r,l){let i=this.#r;i.textContent=e.getAttribute("data-tip");let n=this.getBoundingClientRect?.()||{left:0,top:0,width:0},s=i.offsetWidth/2;i.style.left=`${_(r-n.left,s,Math.max(s,n.width-s))}px`,i.style.top=`${l-n.top}px`,i.classList.add("on")}#p(){return[...this.#t.querySelectorAll("[data-tip]:not([data-skip])")]}#v(e){let r=this.#p(),l=r.length;if(!l)return;let i=this.#e,n=hr[e.key];if(n)this.chartType==="heatmap"&&/Left|Right/.test(e.key)&&(n*=7),i=i<0?n>0?0:l-1:_(i+n,0,l-1);else if(e.key==="Home"||e.key==="End")i=e.key==="Home"?0:l-1;else{e.key==="Escape"&&this.#g();return}e.preventDefault(),this.#d(i,!0)}#d(e,r){let l=this.#p();if(!l.length)return;e=_(e,0,l.length-1),this.#t.querySelector(".k")?.classList.remove("k");let i=l[e],n=i.getBoundingClientRect?.()||{left:0,top:0,width:0};i.classList.add("k"),this.#e=e,this.#m(i,n.left+n.width/2,n.top),r&&(this.#o.textContent=`${i.getAttribute("data-tip").replace(/\n/g,", ")}. ${e+1} of ${l.length}`)}#g(){this.#t.querySelector(".k")?.classList.remove("k"),this.#r.classList.remove("on"),this.#o.textContent="",this.#e=-1}};function gr(t,{head:e,rows:r}){let l=i=>i.map((n,s)=>s?`<td>${nt(n)}</td>`:`<th scope="row">${nt(n)}</th>`).join("");return`<table><caption>${nt(t||"Chart data")}</caption><thead><tr>${e.map(i=>`<th scope="col">${nt(i)}</th>`).join("")}</tr></thead><tbody>${r.map(i=>`<tr>${l(i)}</tr>`).join("")}</tbody></table>`}function dt(t){typeof customElements>"u"||typeof HTMLElement>"u"||(customElements.get(`bezel-${t}`)||customElements.define(`bezel-${t}`,class extends Mt{get chartType(){return t}}),customElements.get("bezel-chart")||customElements.define("bezel-chart",class extends Mt{}))}pt("spark",se);dt("spark");function ie(t,e,r){if(t===e)if(t===0)e=1;else{var l=Math.abs(t)*.1;t-=l,e+=l}for(var i=(e-t)/(r||4),n=Math.pow(10,Math.floor(Math.log10(i))),s=i/n,o=(s<=1?1:s<=2?2:s<=5?5:10)*n,c=Math.floor(t/o)*o,x=Math.ceil(e/o)*o,g=[],d=c;d<=x+o/2;d+=o)g.push(+d.toFixed(10));return{lo:c,hi:x,ticks:g}}function Xt(t,e,r,l,i,n,s,o){var c=l,x=i,g="",d=o||13;return t.forEach(function(f,C){var z=d+bt(f,12)+16;c>l&&c+z-16>l+n&&(c=l,x+=20),g+=(s?s(C,c,x):'<circle cx="'+a(c+4)+'" cy="'+a(x+6)+'" r="4" fill="'+e[C%e.length]+'"/>')+S(c+d,x+10,f,'fill="'+r.fg+'" font-family="'+at+'" font-size="12"'),c+=z}),{svg:g,height:x-i+24}}var ue={solid:"",dashed:"7 5",dotted:"1 5",dashdot:"9 4 1 4"},he=["circle","square","triangle","diamond"],Ie=["solid","stripes","dots","grid"];function _t(t,e,r){if(t==null||t===!1||t==="none"||t==="false")return null;var l=t===!0||t===""||t==="auto"?e:P(t).map(function(i){return e.indexOf(i)<0?r:i});return l.length?function(i){return l[i%l.length]}:null}function jt(t,e,r,l,i){var n=l*1.15,s=l*.85;return t==="square"?'<rect x="'+a(e-s)+'" y="'+a(r-s)+'" width="'+a(2*s)+'" height="'+a(2*s)+'" rx="1"'+i+"/>":t==="triangle"?'<path d="M'+a(e)+","+a(r-n)+"L"+a(e+n)+","+a(r+s)+"L"+a(e-n)+","+a(r+s)+'Z"'+i+"/>":t==="diamond"?'<path d="M'+a(e)+","+a(r-n*1.1)+"L"+a(e+n)+","+a(r)+"L"+a(e)+","+a(r+n*1.1)+"L"+a(e-n)+","+a(r)+'Z"'+i+"/>":'<circle cx="'+a(e)+'" cy="'+a(r)+'" r="'+a(l)+'"'+i+"/>"}function qe(t,e,r,l){var i=' stroke="'+l+'" stroke-opacity=".55" stroke-width="1.5"';return'<pattern id="'+t+'" width="6" height="6" patternUnits="userSpaceOnUse"'+(e==="dots"?"":' patternTransform="rotate(45)"')+'><rect width="6" height="6" fill="'+r+'"/>'+(e==="dots"?'<circle cx="3" cy="3" r="1.3" fill="'+l+'" fill-opacity=".55"/>':'<path d="M3,0V6'+(e==="grid"?"M0,3H6":"")+'"'+i+"/>")+"</pattern>"}function Ye(t){return Math.max.apply(null,t.map(function(e){return bt(e,10,!0)}))+10}function me(t,e){for(var r=At(t.values),l=P(t.series),i=P(t.labels),n=[],s=Math.max.apply(null,[0].concat(r.map(function(d){return d.length}))),o=0;o<s;o++){var c=[i[o]||"#"+(o+1)],x=0;r.forEach(function(d){c.push(o<d.length?h(d[o],t):""),x+=o<d.length?d[o]:0}),e&&c.push(h(x,t)),n.push(c)}var g=r.length>1||l.length?r.map(function(d,f){return l[f]||"Series "+(f+1)}):["Value"];return{head:["Label"].concat(g,e?["Total"]:[]),rows:n}}function pe(t,e){var r=At(t.values),l=P(t.series),i=P(t.labels),n=ut(t,e),s=I(t.height,170),o=Math.max.apply(null,[0].concat(r.map(function(B){return B.length}))),c=Kt(t,i),x=r.length>1||l.length>0,g=zt(r[0]||[],t,""),d=_t(t.dash,Object.keys(ue),"solid"),f=_t(t.markers,he,"none"),C=t.background||e.tile,z=(d||f)&&function(B,F,b){var L=n[B%n.length],m=d?ue[d(B)]:"",A=f?f(B):"none";return'<line x1="'+a(F)+'" x2="'+a(F+18)+'" y1="'+a(b+6)+'" y2="'+a(b+6)+'" stroke="'+L+'" stroke-width="2.5" stroke-linecap="round"'+(m?' stroke-dasharray="'+m+'"':"")+"/>"+(A!=="none"?jt(A,F+9,b+6,3.5,' fill="'+L+'" stroke="'+C+'" stroke-width="1.5"'):"")};return mt(t,e,s,function(B,F,b,L){if(!o)return ht(e,B,F,b,L);var m="",A=F;if(x){var E=Xt(r.map(function(R,u){return l[u]||"Series "+(u+1)}),n,e,B,A,b,z,z&&24);m+=E.svg,A+=E.height}var y=[].concat.apply([],r),O=Math.min.apply(null,y),k=Math.max.apply(null,y);v(t.goal)&&(O=Math.min(O,+t.goal),k=Math.max(k,+t.goal)),j(t.zero)&&(O=Math.min(0,O),k=Math.max(0,k));var p=ie(O,k,4),D=p.ticks.map(function(R){return h(R,t,!0)}),M=Math.max.apply(null,D.map(function(R){return bt(R,10,!0)}))+10,w=i.length?20:4,T=B+M,U=b-M,q=L-(A-F)-w,tt=function(R){return o===1?T+U/2:T+R*U/(o-1)},Q=function(R){return A+q-(R-p.lo)/(p.hi-p.lo)*q};if(p.ticks.forEach(function(R,u){var G=Q(R);m+='<line x1="'+a(T)+'" x2="'+a(T+U)+'" y1="'+a(G)+'" y2="'+a(G)+'" stroke="'+e.grid+'"'+(R===0?"":' stroke-dasharray="2 4"')+"/>"+S(T-8,G+3.5,D[u],$(e,10,'text-anchor="end"'))}),i.length){for(var ot=Math.max(1,Math.ceil(o*(Math.max.apply(null,i.map(function(R){return bt(R,10,!0)}))+10)/U)),Y=0;Y<o;Y+=ot)if(i[Y]!=null){var J=o>1&&Y===0?"start":o>1&&Y===o-1?"end":"middle";m+=S(tt(Y),A+q+15,i[Y],$(e,10,'text-anchor="'+J+'"'))}}c.forEach(function(R){if(!(R.i>=o)){var u=tt(R.i);m+='<line x1="'+a(u)+'" x2="'+a(u)+'" y1="'+a(A+12)+'" y2="'+a(A+q)+'" stroke="'+e.fg+'" stroke-opacity=".4" stroke-dasharray="3 3"/>'+S(_(u,T+30,T+U-30),A+8,R.text,$(e,10,'text-anchor="middle"',e.fg))}}),r.forEach(function(R,u){var G=n[u%n.length],N=R.map(function(X,ft){return[tt(ft),Q(X)]});N.length===1&&(N=[[T,N[0][1]],[T+U,N[0][1]]]);var et=oe(N,j(t.straight));if(u===0){var W=Dt("g"),xt=N[N.length-1];m+='<defs><linearGradient id="'+W+'" x1="0" y1="0" x2="0" y2="1"><stop offset="0" stop-color="'+G+'" stop-opacity=".26"/><stop offset="1" stop-color="'+G+'" stop-opacity="0"/></linearGradient></defs><path d="'+et+"L"+a(xt[0])+","+a(A+q)+"L"+a(N[0][0])+","+a(A+q)+'Z" fill="url(#'+W+')"'+lt(t,"bzc-a")+"/>"}var wt=d?ue[d(u)]:"",Et=f?f(u):"none";if(m+=wt?'<path d="'+et+'" fill="none" stroke="'+G+'" stroke-width="2.5" stroke-linecap="round" stroke-linejoin="round" stroke-dasharray="'+wt+'"'+lt(t,"bzc-a",u*.15)+"/>":'<path d="'+et+'" fill="none" stroke="'+G+'" stroke-width="2.5" stroke-linecap="round" stroke-linejoin="round" pathLength="1" style="stroke-dasharray:1'+(t.animate?";animation-delay:"+u*.15+"s":"")+'"'+(t.animate?' class="bzc-d"':"")+"/>",Et!=="none"){var V=Math.ceil(R.length/40);R.forEach(function(X,ft){(ft%V===0||ft===R.length-1)&&(m+=jt(Et,tt(ft),Q(X),3.5,' fill="'+G+'" stroke="'+C+'" stroke-width="1.5"'+lt(t,"bzc-a",.6+u*.15)))})}else{var Z=N[N.length-1];m+='<circle cx="'+a(Z[0])+'" cy="'+a(Z[1])+'" r="4" fill="'+G+'" stroke="'+C+'" stroke-width="2"/>'}j(t.showValues)&&R.forEach(function(X,ft){m+=S(tt(ft),Q(X)-8,h(X,t,!0),$(e,9,'text-anchor="middle"'))})}),v(t.goal)&&(m+=Pt(t,e,T,T+U,Q(+t.goal)));for(var Ft=o>1?U/(o-1):U,st=0;st<o;st++){var gt=i[st]||"#"+(st+1);r.forEach(function(R,u){st<R.length&&(gt+=`
|
|
3
|
-
`+(
|
|
4
|
-
`+
|
|
5
|
-
Total: `+
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
`+(v(
|
|
9
|
-
|
|
1
|
+
/*! Bezel Charts v1.5.0 | MIT | github.com/ShazMoghaddam/bezel-charts */
|
|
2
|
+
var BezelCharts=(()=>{var Ge=Object.defineProperty;var ur=Object.getOwnPropertyDescriptor;var hr=Object.getOwnPropertyNames;var mr=Object.prototype.hasOwnProperty;var pr=(t,e)=>{for(var r in e)Ge(t,r,{get:e[r],enumerable:!0})},dr=(t,e,r,l)=>{if(e&&typeof e=="object"||typeof e=="function")for(let n of hr(e))!mr.call(t,n)&&n!==r&&Ge(t,n,{get:()=>e[n],enumerable:!(l=ur(e,n))||l.enumerable});return t};var gr=t=>dr(Ge({},"__esModule",{value:!0}),t);var Fr={};pr(Fr,{BezelChart:()=>At,render:()=>Lt,themes:()=>Qt,toSVG:()=>Ft,types:()=>Cr,version:()=>Tr});var yt="ui-sans-serif,system-ui,-apple-system,'Segoe UI',Roboto,Helvetica,Arial,sans-serif",St="ui-monospace,SFMono-Regular,Menlo,Consolas,monospace",vr=0;function Vt(t){return"bzc"+t+(++vr).toString(36)+Math.random().toString(36).slice(2,6)}function bt(t){return String(t??"").replace(/[&<>"']/g,function(e){return{"&":"&","<":"<",">":">",'"':""","'":"'"}[e]})}function a(t){return Math.round(t*100)/100}function nt(t,e,r){return Math.max(e,Math.min(r,t))}function W(t,e){var r=parseFloat(t);return isFinite(r)?r:e}function T(t){return t!=null&&t!==""}function ct(t){return Array.isArray(t)?t.map(function(e){var r=+e;return isFinite(r)?r:0}):T(t)?String(t).split(/[\s,;]+/).filter(Boolean).map(function(e){var r=+e;return isFinite(r)?r:0}):[]}function $(t){return Array.isArray(t)?t.map(String):T(t)?String(t).split(",").map(function(e){return e.trim()}):[]}function Et(t){return Array.isArray(t)?Array.isArray(t[0])?t.map(ct):[ct(t)]:T(t)?String(t).split("|").map(ct).filter(function(e){return e.length}):[]}function Bt(t){return t.reduce(function(e,r){return e+r},0)}function wt(t,e,r){return String(t).length*e*(r?.6:.56)}function Kt(t,e){return t=String(t),t.length>e?t.slice(0,Math.max(1,e-1))+"\u2026":t}function j(t){return t===!0||t===""||t==="true"||t==="1"}function m(t,e,r){if(!isFinite(t))return"\u2013";var l=Math.abs(t),n;T(e.decimals)?n=nt(parseInt(e.decimals,10)||0,0,6):n=t%1===0?0:l<10?2:l<100?1:0;var i={maximumFractionDigits:n,minimumFractionDigits:T(e.decimals)?n:0};(j(e.compact)||r)&&l>=1e4&&(i={notation:"compact",maximumFractionDigits:1});var o;try{o=new Intl.NumberFormat(e.lang||"en-GB",i).format(l)}catch{o=String(a(l))}return(t<0?"\u2212":"")+(e.prefix||"")+o+(e.suffix||"")}function Yt(t,e){if(!t.length)return"";for(var r="M"+a(t[0][0])+","+a(t[0][1]),l=1;l<t.length;l++){var n=t[l-1],i=t[l];if(e)r+="L"+a(i[0])+","+a(i[1]);else{var o=(n[0]+i[0])/2;r+="C"+a(o)+","+a(n[1])+" "+a(o)+","+a(i[1])+" "+a(i[0])+","+a(i[1])}}return r}function C(t,e,r,l){return'<text x="'+a(t)+'" y="'+a(e)+'" '+(l||"")+">"+bt(r)+"</text>"}function D(t,e,r,l){return'fill="'+(l||t.muted)+'" font-family="'+St+'" font-size="'+(e||10)+'"'+(r?" "+r:"")}function zt(t,e,r,l,n){return'<rect class="bzc-hit" x="'+a(t)+'" y="'+a(e)+'" width="'+a(Math.max(1,r))+'" height="'+a(Math.max(1,l))+'" fill="#000" fill-opacity="0" data-tip="'+bt(n)+'"/>'}function ut(t,e,r){return t.animate?' class="'+e+'"'+(r?' style="animation-delay:'+a(r)+'s"':""):""}function ht(t,e){var r=$(t.color).filter(Boolean);return r.length?r:e.palette}function mt(t,e,r,l,n){return C(e+l/2,r+n/2+4,"No data yet",'text-anchor="middle" fill="'+t.muted+'" font-family="'+yt+'" font-size="13"')}function _t(t,e){return T(t.notes)?String(t.notes).split(";").map(function(r){var l=r.indexOf(":");if(l<0)return null;var n=r.slice(0,l).trim(),i=r.slice(l+1).trim(),o=e.map(String).indexOf(n);return o<0&&String(parseInt(n,10))===n&&(o=parseInt(n,10)),o>=0&&i?{i:o,text:i}:null}).filter(Boolean):[]}function It(t,e,r,l,n){var i=(T(t.goalLabel)?t.goalLabel:"Goal")+" "+m(W(t.goal,0),t);return'<line x1="'+a(r)+'" x2="'+a(l)+'" y1="'+a(n)+'" y2="'+a(n)+'" stroke="'+e.fg+'" stroke-opacity=".55" stroke-width="1.25" stroke-dasharray="4 4"/>'+C(l,n-5,i,D(e,10,'text-anchor="end"'))}function Ot(t,e,r){var l=String(T(e.stat)?e.stat:r||"").toLowerCase();if(!l||l==="none"||!t.length)return null;var n=Bt(t),i={last:t[t.length-1],total:n,sum:n,average:n/t.length,avg:n/t.length,max:Math.max.apply(null,t),min:Math.min.apply(null,t)};if(!(l in i))return null;var o=null;return l==="last"&&t.length>1&&e.delta!=="none"&&(o=t[t.length-1]-t[0]),{val:i[l],delta:o}}function qt(t){var e=Math.round(nt(W(t.width,360),160,2400)),r=t.frame==="none"?0:4,l=t.frame==="none"?8:20;return{W:e,b:r,P:l,w:e-2*(r+l)}}var xr=".bzc-a{animation:bzc-in .6s ease both}.bzc-d{animation:bzc-draw 1.1s cubic-bezier(.3,.7,.2,1) both}.bzc-g{transform-box:fill-box;transform-origin:50% 100%;animation:bzc-grow .7s cubic-bezier(.2,.8,.2,1) both}.bzc-gn{transform-box:fill-box;transform-origin:50% 0;animation:bzc-grow .7s cubic-bezier(.2,.8,.2,1) both}.bzc-gx{transform-box:fill-box;transform-origin:0 50%;animation:bzc-growx .8s cubic-bezier(.2,.8,.2,1) both}.bzc-s{animation:bzc-sweep 1.1s cubic-bezier(.2,.8,.2,1) both}@keyframes bzc-in{from{opacity:0}}@keyframes bzc-draw{from{stroke-dashoffset:1}}@keyframes bzc-grow{from{transform:scaleY(0)}}@keyframes bzc-growx{from{transform:scaleX(0)}}@keyframes bzc-sweep{from{stroke-dasharray:0 100}}@media (prefers-reduced-motion:reduce){[class^=bzc-]{animation:none!important}}";function pt(t,e,r,l,n){var i=qt(t),o=i.W,s=i.b,f=i.P,u=i.w,v=nt(W(t.corners,22),0,60),d=s+f,c="";T(t.heading)&&(c+=C(s+f,d+10,String(t.heading).toUpperCase(),D(e,11,'font-weight="600" letter-spacing="1.3"')),d+=24);var M=n&&n.stat;if(M){if(c+=C(s+f,d+30,m(M.val,t),'fill="'+e.fg+'" font-family="'+yt+'" font-size="32" font-weight="800" letter-spacing="-0.5"'),M.delta!=null){var k=M.delta>0,V=M.delta===0,F=t.delta==="inverse"?!k:k,L=V?e.muted:F?e.up:e.down,b=(V?"\u25CF ":k?"\u25B2 ":"\u25BC ")+m(Math.abs(M.delta),t)+" "+(T(t.deltaLabel)?t.deltaLabel:"since start");c+=C(s+f+u,d+28,b,'text-anchor="end" fill="'+L+'" font-family="'+St+'" font-size="11" font-weight="600"')}d+=44}var p=l(s+f,d,u,r),R=Math.round(d+r+f+s),S="";t.frame!=="none"?S='<rect width="'+o+'" height="'+R+'" rx="'+v+'" fill="'+e.bezel+'"/><rect x="'+s+'" y="'+s+'" width="'+(o-2*s)+'" height="'+(R-2*s)+'" rx="'+Math.max(0,v-s)+'" fill="'+(t.background||e.tile)+'"/>':T(t.background)&&(S='<rect width="'+o+'" height="'+R+'" rx="'+v+'" fill="'+t.background+'"/>');var x=(T(t.heading)?t.heading+": ":"")+(n&&n.summary||"chart");return'<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 '+o+" "+R+'" width="'+o+'" height="'+R+'" role="img" aria-label="'+bt(x)+'"><title>'+bt(x)+"</title>"+(t.animate?"<style>"+xr+"</style>":"")+S+c+p+"</svg>"}function me(t,e){var r=ct(t.values),l=ht(t,e)[0],n=W(t.height,64),i=$(t.labels),o=_t(t,i),s=Ot(r,t,"last");return pt(t,e,n,function(f,u,v,d){if(!r.length)return mt(e,f,u,v,d);var c=r.length===1?[r[0],r[0]]:r,M=Math.min.apply(null,c),k=Math.max.apply(null,c);T(t.goal)&&(M=Math.min(M,+t.goal),k=Math.max(k,+t.goal));var V=(k-M||Math.abs(k)||1)*.12;M-=V,k+=V;var F=function(g){return f+g*v/(c.length-1)},L=function(g){return u+d-(g-M)/(k-M)*d},b=c.map(function(g,h){return[F(h),L(g)]}),p=Yt(b,j(t.straight)),R=Vt("g"),S=b[b.length-1],x='<defs><linearGradient id="'+R+'" x1="0" y1="0" x2="0" y2="1"><stop offset="0" stop-color="'+l+'" stop-opacity=".32"/><stop offset="1" stop-color="'+l+'" stop-opacity="0"/></linearGradient></defs>';[1/3,2/3].forEach(function(g){x+='<line x1="'+f+'" x2="'+(f+v)+'" y1="'+a(u+d*g)+'" y2="'+a(u+d*g)+'" stroke="'+e.grid+'" stroke-dasharray="2 4"/>'}),x+='<path d="'+p+"L"+a(S[0])+","+(u+d)+"L"+f+","+(u+d)+'Z" fill="url(#'+R+')"'+ut(t,"bzc-a")+"/>",x+='<path d="'+p+'" fill="none" stroke="'+l+'" stroke-width="2.5" stroke-linecap="round" stroke-linejoin="round" pathLength="1" style="stroke-dasharray:1"'+ut(t,"bzc-d")+"/>",T(t.goal)&&(x+=It(t,e,f,f+v,L(+t.goal))),o.forEach(function(g){if(!(g.i>=r.length)){var h=b[g.i];x+='<circle cx="'+a(h[0])+'" cy="'+a(h[1])+'" r="3.5" fill="'+e.fg+'"/>'+C(nt(h[0],f+30,f+v-30),h[1]-9,g.text,D(e,10,'text-anchor="middle"',e.fg))}}),x+='<circle cx="'+a(S[0])+'" cy="'+a(S[1])+'" r="9" fill="'+l+'" fill-opacity=".25"/><circle cx="'+a(S[0])+'" cy="'+a(S[1])+'" r="4.5" fill="'+l+'"/>',j(t.showValues)&&b.forEach(function(g,h){h<r.length&&(x+=C(g[0],g[1]-8,m(r[h],t,!0),D(e,9,'text-anchor="middle"')))});var w=r.length>1?v/(r.length-1):v;return r.forEach(function(g,h){x+=zt(F(h)-w/2,u-6,w,d+12,(i[h]||"#"+(h+1))+": "+m(g,t))}),x},{stat:s,summary:r.length?"latest "+m(r[r.length-1],t):"no data"})}me.table=function(t){var e=$(t.labels);return{head:["Label","Value"],rows:ct(t.values).map(function(r,l){return[e[l]||"#"+(l+1),m(r,t)]})}};var Qt={dark:{tile:"#15151d",bezel:"#000000",fg:"#f2f1f7",muted:"#8c8aa0",grid:"#2a2935",up:"#5EE6C8",down:"#F675A8",palette:["#9FA1FF","#F675A8","#5EE6C8","#FFC857","#7CC4FF","#FF8A5B"]},light:{tile:"#ffffff",bezel:"#000000",fg:"#17161f",muted:"#6b6980",grid:"#e8e6ef",up:"#12a383",down:"#d63f7c",palette:["#6E70F0","#E2508C","#16A884","#D99A0E","#2F8FE0","#EE6431"]}};var pe=["spark","line","area","bars","histogram","scatter","ring","donut","gauge","progress","heatmap"],de={};function dt(t,e){de[t]=e}var yr=t=>t.replace(/-([a-z])/g,(e,r)=>r.toUpperCase());function Ke(t,e){if(!de[t])throw new Error(pe.includes(t)?`Bezel Charts: the ${t} chart isn't loaded. Add import 'bezel-charts/${t}', or load dist/charts/${t}.js.`:`Bezel Charts: unknown chart type "${t}". Choose one of: ${pe.join(", ")}.`);let r={};for(let[l,n]of Object.entries(e))r[yr(l)]=n;return r}function Lt(t,e={}){let r=Ke(t,e);r.animate=j(r.animate),r.frame=r.frame==="none"?"none":"bezel";let l=r.theme==="light"||r.theme==="dark"?r.theme:r.autoTheme||"dark";return de[t](r,Qt[l])}function qe(t,e={}){return de[t].table(Ke(t,e))}function He(t){return t.replace(/<rect class="bzc-hit"[^>]*\/>/g,"").replace(/<circle[^>]* class="bzc-hit"[^>]*\/>/g,"").replace(/ data-tip="[^"]*"/g,"")}function Ft(t,e={}){return He(Lt(t,{...e,animate:!1}))}var Qe=["type","values","labels","series","heading","prefix","suffix","decimals","compact","color","theme","frame","width","height","goal","goal-label","notes","show-values","stat","delta","delta-label","max","min","value","zones","horizontal","straight","zero","start","lang","corners","background","center-label","highlight","x","y","x-label","y-label","trend","static","no-tooltips","stacked","angle-labels","dash","markers","patterns","bins","bin-width","mark","percent"],br=`:host{display:block;position:relative;max-width:100%}:host([hidden]){display:none}svg{display:block;max-width:100%;height:auto;overflow:visible}.tip{position:absolute;left:0;top:0;pointer-events:none;background:#0b0b10;color:#f2f1f7;font:600 12px/1.5 ${St};padding:7px 10px;border-radius:10px;white-space:pre;opacity:0;transform:translate(-50%,calc(-100% - 12px));transition:opacity .12s;z-index:3;border:1px solid #2a2935;box-shadow:0 8px 24px rgba(0,0,0,.35)}.tip.on{opacity:1}.c{outline:none}.c:focus-visible{outline:2px solid #fff;outline-offset:3px;box-shadow:0 0 0 7px #000}.k{stroke:currentColor;stroke-width:2;stroke-opacity:1}.sr{position:absolute;width:1px;height:1px;overflow:hidden;clip-path:inset(50%);white-space:nowrap}@media (forced-colors:active){.c:focus-visible{outline-color:Highlight}}`,Mr={ArrowLeft:-1,ArrowUp:-1,ArrowRight:1,ArrowDown:1},kr=()=>typeof matchMedia=="function"?matchMedia("(prefers-color-scheme: dark)"):null,wr=()=>{let t=typeof document<"u"&&document.documentElement?.getAttribute?.("data-theme");return t==="light"||t==="dark"?t:null},Pe=new Set;typeof MutationObserver=="function"&&typeof document<"u"&&document.documentElement&&new MutationObserver(()=>Pe.forEach(t=>t.refresh())).observe(document.documentElement,{attributes:!0,attributeFilter:["data-theme"]});var Sr=typeof HTMLElement>"u"?class{}:HTMLElement,At=class extends Sr{static get observedAttributes(){return Qe}static get themes(){return Qt}get resolvedTheme(){let e=this.getAttribute("theme");return e==="light"||e==="dark"?e:this.options.autoTheme}get chartType(){return this.getAttribute("type")||"spark"}connectedCallback(){this.shadowRoot||(this.attachShadow({mode:"open"}).innerHTML=`<style>${br}</style><div class="c" role="group" aria-roledescription="chart"></div><p class="sr" id="h">Use the arrow keys to step through the values.</p><div class="tip" aria-hidden="true"></div><div class="sr" aria-live="polite"></div><div class="sr"></div>`,[,this.#t,,this.#r,this.#o,this.#c]=this.shadowRoot.children,this.shadowRoot.addEventListener("pointermove",e=>this.#h(e)),this.shadowRoot.addEventListener("pointerdown",e=>this.#h(e)),this.addEventListener("pointerleave",()=>this.#r.classList.remove("on")),this.#t.addEventListener("keydown",e=>this.#v(e)),this.#t.addEventListener("blur",()=>this.#g())),Pe.add(this),this.#a=kr(),this.#a?.addEventListener?.("change",this.#u),typeof ResizeObserver=="function"?(this.#l=new ResizeObserver(([e])=>{let r=Math.round(e.contentRect.width);(!this.#n||!this.hasAttribute("width")&&r>0&&Math.abs(r-this.#s)>1)&&this.#i()}),this.#l.observe(this)):this.#i()}disconnectedCallback(){Pe.delete(this),this.#l?.disconnect(),this.#a?.removeEventListener?.("change",this.#u)}attributeChangedCallback(){!this.#n||this.#f||(this.#f=!0,queueMicrotask(()=>{this.#f=!1,this.#i()}))}get options(){let e={};for(let r of Qe)this.hasAttribute(r)&&(e[r]=this.getAttribute(r));return e.width||(e.width=this.#s||360),e.autoTheme=wr()||(this.#a?this.#a.matches?"dark":"light":"dark"),e}refresh(){this.#n&&this.#i()}toSVG(e={}){return He(Lt(this.chartType,{...this.options,...e,animate:!1}))}download(e){let r=URL.createObjectURL(new Blob([this.toSVG()],{type:"image/svg+xml"})),l=Object.assign(document.createElement("a"),{href:r,download:`${(e||this.getAttribute("heading")||this.chartType).replace(/[^\w-]+/g,"-").toLowerCase()}.svg`});document.body.append(l),l.click(),l.remove(),setTimeout(()=>URL.revokeObjectURL(r),1e3)}#l=null;#t=null;#r=null;#o=null;#c=null;#e=-1;#a=null;#s=0;#n=!1;#f=!1;#u=()=>{let e=this.getAttribute("theme");(!e||e==="auto")&&this.refresh()};#i(){if(!this.shadowRoot)return;let e=Math.round(this.getBoundingClientRect?.().width||0);this.#s=e>0?e:360;let r=this.options;r.animate=!this.#n&&!this.hasAttribute("static");let l,n=null;try{l=Lt(this.chartType,r),n=qe(this.chartType,r)}catch(f){l=`<p style="font:13px ${yt};color:#d63f7c">${bt(f.message)}</p>`}let i=this.#t;i.innerHTML=l.replace(/<title>[\s\S]*?<\/title>/,"");let o=i.querySelector("svg");o?(i.setAttribute("aria-label",o.getAttribute("aria-label")),o.removeAttribute("role"),o.removeAttribute("aria-label"),o.setAttribute("aria-hidden","true")):i.removeAttribute("aria-label");let s=!!o&&!this.hasAttribute("no-tooltips");s?(i.setAttribute("tabindex","0"),i.setAttribute("aria-describedby","h")):(i.removeAttribute("tabindex"),i.removeAttribute("aria-describedby")),i.style.color=Qt[r.theme==="light"||r.theme==="dark"?r.theme:r.autoTheme].fg,i.style.borderRadius=`${r.frame==="none"?4:nt(+r.corners||22,0,60)}px`,this.#c.innerHTML=n&&n.rows.length?Er(r.heading,n):"",this.#e>=0&&s&&this.shadowRoot.activeElement===i?this.#d(this.#e):this.#e=-1,this.#n=!0,this.dispatchEvent(new CustomEvent("bezel-render",{bubbles:!0}))}#h(e){if(this.hasAttribute("no-tooltips"))return;let r=e.target?.closest?.("[data-tip]");if(!r){this.#r.classList.remove("on");return}this.#m(r,e.clientX,e.clientY)}#m(e,r,l){let n=this.#r;n.textContent=e.getAttribute("data-tip");let i=this.getBoundingClientRect?.()||{left:0,top:0,width:0},o=n.offsetWidth/2;n.style.left=`${nt(r-i.left,o,Math.max(o,i.width-o))}px`,n.style.top=`${l-i.top}px`,n.classList.add("on")}#p(){return[...this.#t.querySelectorAll("[data-tip]:not([data-skip])")]}#v(e){let r=this.#p(),l=r.length;if(!l)return;let n=this.#e,i=Mr[e.key];if(i)this.chartType==="heatmap"&&/Left|Right/.test(e.key)&&(i*=7),n=n<0?i>0?0:l-1:nt(n+i,0,l-1);else if(e.key==="Home"||e.key==="End")n=e.key==="Home"?0:l-1;else{e.key==="Escape"&&this.#g();return}e.preventDefault(),this.#d(n,!0)}#d(e,r){let l=this.#p();if(!l.length)return;e=nt(e,0,l.length-1),this.#t.querySelector(".k")?.classList.remove("k");let n=l[e],i=n.getBoundingClientRect?.()||{left:0,top:0,width:0};n.classList.add("k"),this.#e=e,this.#m(n,i.left+i.width/2,i.top),r&&(this.#o.textContent=`${n.getAttribute("data-tip").replace(/\n/g,", ")}. ${e+1} of ${l.length}`)}#g(){this.#t.querySelector(".k")?.classList.remove("k"),this.#r.classList.remove("on"),this.#o.textContent="",this.#e=-1}};function Er(t,{head:e,rows:r}){let l=n=>n.map((i,o)=>o?`<td>${bt(i)}</td>`:`<th scope="row">${bt(i)}</th>`).join("");return`<table><caption>${bt(t||"Chart data")}</caption><thead><tr>${e.map(n=>`<th scope="col">${bt(n)}</th>`).join("")}</tr></thead><tbody>${r.map(n=>`<tr>${l(n)}</tr>`).join("")}</tbody></table>`}function gt(t){typeof customElements>"u"||typeof HTMLElement>"u"||(customElements.get(`bezel-${t}`)||customElements.define(`bezel-${t}`,class extends At{get chartType(){return t}}),customElements.get("bezel-chart")||customElements.define("bezel-chart",class extends At{}))}dt("spark",me);gt("spark");function Jt(t,e,r){if(t===e)if(t===0)e=1;else{var l=Math.abs(t)*.1;t-=l,e+=l}for(var n=(e-t)/(r||4),i=Math.pow(10,Math.floor(Math.log10(n))),o=n/i,s=(o<=1?1:o<=2?2:o<=5?5:10)*i,f=Math.floor(t/s)*s,u=Math.ceil(e/s)*s,v=[],d=f;d<=u+s/2;d+=s)v.push(+d.toFixed(10));return{lo:f,hi:u,ticks:v}}function Ut(t,e,r,l,n,i,o,s){var f=l,u=n,v="",d=s||13;return t.forEach(function(c,M){var k=d+wt(c,12)+16;f>l&&f+k-16>l+i&&(f=l,u+=20),v+=(o?o(M,f,u):'<circle cx="'+a(f+4)+'" cy="'+a(u+6)+'" r="4" fill="'+e[M%e.length]+'"/>')+C(f+d,u+10,c,'fill="'+r.fg+'" font-family="'+yt+'" font-size="12"'),f+=k}),{svg:v,height:u-n+24}}var Xt={solid:"",dashed:"7 5",dotted:"1 5",dashdot:"9 4 1 4"},re=["circle","square","triangle","diamond"],ae=["solid","stripes","dots","grid"];function Nt(t,e,r){if(t==null||t===!1||t==="none"||t==="false")return null;var l=t===!0||t===""||t==="auto"?e:$(t).map(function(n){return e.indexOf(n)<0?r:n});return l.length?function(n){return l[n%l.length]}:null}function ne(t,e,r,l,n){var i=l*1.15,o=l*.85;return t==="square"?'<rect x="'+a(e-o)+'" y="'+a(r-o)+'" width="'+a(2*o)+'" height="'+a(2*o)+'" rx="1"'+n+"/>":t==="triangle"?'<path d="M'+a(e)+","+a(r-i)+"L"+a(e+i)+","+a(r+o)+"L"+a(e-i)+","+a(r+o)+'Z"'+n+"/>":t==="diamond"?'<path d="M'+a(e)+","+a(r-i*1.1)+"L"+a(e+i)+","+a(r)+"L"+a(e)+","+a(r+i*1.1)+"L"+a(e-i)+","+a(r)+'Z"'+n+"/>":'<circle cx="'+a(e)+'" cy="'+a(r)+'" r="'+a(l)+'"'+n+"/>"}function ie(t,e,r,l){var n=' stroke="'+l+'" stroke-opacity=".55" stroke-width="1.5"';return'<pattern id="'+t+'" width="6" height="6" patternUnits="userSpaceOnUse"'+(e==="dots"?"":' patternTransform="rotate(45)"')+'><rect width="6" height="6" fill="'+r+'"/>'+(e==="dots"?'<circle cx="3" cy="3" r="1.3" fill="'+l+'" fill-opacity=".55"/>':'<path d="M3,0V6'+(e==="grid"?"M0,3H6":"")+'"'+n+"/>")+"</pattern>"}function Je(t){return Math.max.apply(null,t.map(function(e){return wt(e,10,!0)}))+10}function le(t,e){for(var r=Et(t.values),l=$(t.series),n=$(t.labels),i=[],o=Math.max.apply(null,[0].concat(r.map(function(d){return d.length}))),s=0;s<o;s++){var f=[n[s]||"#"+(s+1)],u=0;r.forEach(function(d){f.push(s<d.length?m(d[s],t):""),u+=s<d.length?d[s]:0}),e&&f.push(m(u,t)),i.push(f)}var v=r.length>1||l.length?r.map(function(d,c){return l[c]||"Series "+(c+1)}):["Value"];return{head:["Label"].concat(v,e?["Total"]:[]),rows:i}}function ge(t,e,r,l,n,i,o){var s="",f=n,u=r.n,v=r.labels;if(r.names){var d=Ut(r.names,r.pal,e,l,f,i,r.key,r.kw);s+=d.svg,f+=d.height}var c=r.lo,M=r.hi;T(t.goal)&&(c=Math.min(c,+t.goal),M=Math.max(M,+t.goal)),r.zero&&(c=Math.min(0,c),M=Math.max(0,M));var k=Jt(c,M,4),V=k.ticks.map(r.tick),F=Math.max.apply(null,V.map(function(O){return wt(O,10,!0)}))+10,L=v.length?20:4,b=l+F,p=i-F,R=o-(f-n)-L,S=function(O){return u===1?b+p/2:b+O*p/(u-1)},x=function(O){return f+R-(O-k.lo)/(k.hi-k.lo)*R};if(k.ticks.forEach(function(O,y){var E=x(O);s+='<line x1="'+a(b)+'" x2="'+a(b+p)+'" y1="'+a(E)+'" y2="'+a(E)+'" stroke="'+e.grid+'"'+(O===0?"":' stroke-dasharray="2 4"')+"/>"+C(b-8,E+3.5,V[y],D(e,10,'text-anchor="end"'))}),v.length){for(var w=Math.max(1,Math.ceil(u*(Math.max.apply(null,v.map(function(O){return wt(O,10,!0)}))+10)/p)),g=0;g<u;g+=w)if(v[g]!=null){var h=u>1&&g===0?"start":u>1&&g===u-1?"end":"middle";s+=C(S(g),f+R+15,v[g],D(e,10,'text-anchor="'+h+'"'))}}return r.notes.forEach(function(O){if(!(O.i>=u)){var y=S(O.i);s+='<line x1="'+a(y)+'" x2="'+a(y)+'" y1="'+a(f+12)+'" y2="'+a(f+R)+'" stroke="'+e.fg+'" stroke-opacity=".4" stroke-dasharray="3 3"/>'+C(nt(y,b+30,b+p-30),f+8,O.text,D(e,10,'text-anchor="middle"',e.fg))}}),{svg:s,X:S,Y:x,px:b,pw:p,top:f,ph:R}}function ve(t,e,r,l,n){for(var i=T(t.goal)?It(t,e,r.px,r.px+r.pw,r.Y(+t.goal)):"",o=l>1?r.pw/(l-1):r.pw,s=0;s<l;s++)i+=zt(r.X(s)-o/2,r.top,o,r.ph,n(s));return i}function xe(t,e,r,l){return function(n,i,o){var s=t[n%t.length],f=e?Xt[e(n)]:"",u=r?r(n):"none";return'<line x1="'+a(i)+'" x2="'+a(i+18)+'" y1="'+a(o+6)+'" y2="'+a(o+6)+'" stroke="'+s+'" stroke-width="2.5" stroke-linecap="round"'+(f?' stroke-dasharray="'+f+'"':"")+"/>"+(u!=="none"?ne(u,i+9,o+6,3.5,' fill="'+s+'" stroke="'+l+'" stroke-width="1.5"'):"")}}function ye(t,e,r,l,n){return n?'<path d="'+e+'" fill="none" stroke="'+r+'" stroke-width="2.5" stroke-linecap="round" stroke-linejoin="round" stroke-dasharray="'+n+'"'+ut(t,"bzc-a",l*.15)+"/>":'<path d="'+e+'" fill="none" stroke="'+r+'" stroke-width="2.5" stroke-linecap="round" stroke-linejoin="round" pathLength="1" style="stroke-dasharray:1'+(t.animate?";animation-delay:"+l*.15+"s":"")+'"'+(t.animate?' class="bzc-d"':"")+"/>"}function be(t,e,r,l,n,i,o,s){var f="",u=Math.ceil(r.length/40);return r.forEach(function(v,d){(d%u===0||d===r.length-1)&&(f+=ne(e,l(d),n(v),3.5,' fill="'+i+'" stroke="'+o+'" stroke-width="1.5"'+ut(t,"bzc-a",.6+s*.15)))}),f}function Me(t,e){var r=Et(t.values),l=$(t.series),n=$(t.labels),i=ht(t,e),o=W(t.height,170),s=Math.max.apply(null,[0].concat(r.map(function(F){return F.length}))),f=_t(t,n),u=r.length>1||l.length>0,v=Ot(r[0]||[],t,""),d=Nt(t.dash,Object.keys(Xt),"solid"),c=Nt(t.markers,re,"none"),M=t.background||e.tile,k=(d||c)&&xe(i,d,c,M),V=function(F){return l[F]||"Series "+(F+1)};return pt(t,e,o,function(F,L,b,p){if(!s)return mt(e,F,L,b,p);var R=[].concat.apply([],r),S=ge(t,e,{n:s,names:u?r.map(function(N,G){return V(G)}):null,pal:i,key:k,kw:k&&24,lo:Math.min.apply(null,R),hi:Math.max.apply(null,R),zero:j(t.zero),labels:n,notes:f,tick:function(N){return m(N,t,!0)}},F,L,b,p),x=S.svg,w=S.X,g=S.Y,h=S.px,O=S.pw,y=S.top,E=S.ph;return r.forEach(function(N,G){var Z=i[G%i.length],Y=N.map(function(rt,lt){return[w(lt),g(rt)]});Y.length===1&&(Y=[[h,Y[0][1]],[h+O,Y[0][1]]]);var Q=Yt(Y,j(t.straight));if(G===0){var ot=Vt("g"),it=Y[Y.length-1];x+='<defs><linearGradient id="'+ot+'" x1="0" y1="0" x2="0" y2="1"><stop offset="0" stop-color="'+Z+'" stop-opacity=".26"/><stop offset="1" stop-color="'+Z+'" stop-opacity="0"/></linearGradient></defs><path d="'+Q+"L"+a(it[0])+","+a(y+E)+"L"+a(Y[0][0])+","+a(y+E)+'Z" fill="url(#'+ot+')"'+ut(t,"bzc-a")+"/>"}var H=c?c(G):"none";if(x+=ye(t,Q,Z,G,d?Xt[d(G)]:""),H!=="none")x+=be(t,H,N,w,g,Z,M,G);else{var et=Y[Y.length-1];x+='<circle cx="'+a(et[0])+'" cy="'+a(et[1])+'" r="4" fill="'+Z+'" stroke="'+M+'" stroke-width="2"/>'}j(t.showValues)&&N.forEach(function(rt,lt){x+=C(w(lt),g(rt)-8,m(rt,t,!0),D(e,9,'text-anchor="middle"'))})}),x+ve(t,e,S,s,function(N){var G=n[N]||"#"+(N+1);return r.forEach(function(Z,Y){N<Z.length&&(G+=`
|
|
3
|
+
`+(u?V(Y)+": ":"")+m(Z[N],t))}),G})},{stat:v,summary:r.length+" series over "+s+" points"})}Me.table=function(t){return le(t)};dt("line",Me);gt("line");function ke(t,e){for(var r=Et(t.values),l=$(t.series),n=$(t.labels),i=ht(t,e),o=W(t.height,170),s=r.length,f=Math.max.apply(null,[0].concat(r.map(function(H){return H.length}))),u=s>1?t.stacked==="percent"?"percent":j(t.stacked)?"stack":"":"",v=_t(t,n),d=s>1||l.length>0,c=function(H){return l[H]||"Series "+(H+1)},M=function(H,et){return et<r[H].length?r[H][et]:0},k=r.map(function(){return[]}),V=r.map(function(){return[]}),F=[],L=[],b=0;b<f;b++){for(var p=0,R=0,S=0,x=0,w=0;w<s;w++)S+=M(w,b),x+=Math.max(0,M(w,b));for(F.push(S),L.push(x),w=0;w<s;w++){var g=u==="percent"?x?Math.max(0,M(w,b))/x*100:0:M(w,b);u?g>=0?(k[w].push(p),p+=g,V[w].push(p)):(k[w].push(R),R+=g,V[w].push(R)):(k[w].push(0),V[w].push(g))}}for(var h=[].concat.apply([],k.concat(V)),O=Nt(t.dash,Object.keys(Xt),"solid"),y=Nt(t.markers,re,"none"),E=s>1?Nt(t.patterns,ae,"solid"):null,N=t.background||e.tile,G="",Z=[],Y=0;E&&Y<s;Y++)if(E(Y)!=="solid"){var Q=Vt("g");G+=ie(Q,E(Y),i[Y%i.length],N),Z[Y]="url(#"+Q+")"}var ot=E?function(H,et,rt){return'<rect x="'+a(et)+'" y="'+a(rt+1)+'" width="10" height="10" rx="2" fill="'+(Z[H]||i[H%i.length])+'"/>'}:(O||y)&&xe(i,O,y,N),it=function(H,et){return L[et]?Math.round(Math.max(0,M(H,et))/L[et]*100):0};return pt(t,e,o,function(H,et,rt,lt){if(!f)return mt(e,H,et,rt,lt);var st=ge(t,e,{n:f,names:d?r.map(function(K,A){return c(A)}):null,pal:i,key:ot,kw:ot&&(E?15:24),lo:Math.min.apply(null,h),hi:Math.max.apply(null,h),zero:!0,labels:n,notes:v,tick:u==="percent"?function(K){return m(K,{lang:t.lang},!0)+"%"}:function(K){return m(K,t,!0)}},H,et,rt,lt),z=(G?"<defs>"+G+"</defs>":"")+st.svg,U=st.X,B=st.Y,ft=function(K){var A=K.map(function(_,I){return[U(I),B(_)]});return A.length===1?[[st.px,A[0][1]],[st.px+st.pw,A[0][1]]]:A},J=j(t.straight),Mt=u?".8":".22",vt=function(K){return u?V[K]:r[K]};return r.forEach(function(K,A){var _=ft(vt(A)),I=ft(u?k[A]:vt(A).map(function(){return 0})).reverse();z+='<path d="'+Yt(_,J)+Yt(I,J).replace(/^M/,"L")+'Z" fill="'+(Z[A]||i[A%i.length])+'" fill-opacity="'+Mt+'"'+(t.animate?' class="bzc-a" style="animation-delay:'+a(A*.1)+'s"':"")+"/>"}),r.forEach(function(K,A){var _=i[A%i.length],I=vt(A),P=ft(I),q=y?y(A):"none";z+=ye(t,Yt(P,J),_,A,O?Xt[O(A)]:""),q!=="none"?z+=be(t,q,I,U,B,_,N,A):u||(z+='<circle cx="'+a(P[P.length-1][0])+'" cy="'+a(P[P.length-1][1])+'" r="4" fill="'+_+'" stroke="'+N+'" stroke-width="2"/>'),j(t.showValues)&&!u&&I.forEach(function(tt,at){z+=C(U(at),B(tt)-8,m(tt,t,!0),D(e,9,'text-anchor="middle"'))})}),j(t.showValues)&&u==="stack"&&F.forEach(function(K,A){var _=Math.max.apply(null,V.map(function(I){return I[A]}).concat([0]));z+=C(U(A),B(_)-8,m(K,t,!0),D(e,9,'text-anchor="middle"'))}),z+ve(t,e,st,f,function(K){var A=n[K]||"#"+(K+1);return r.forEach(function(_,I){K<_.length&&(A+=`
|
|
4
|
+
`+(d?c(I)+": ":"")+m(_[K],t)+(u==="percent"?" ("+it(I,K)+"%)":""))}),A+(u?`
|
|
5
|
+
Total: `+m(F[K],t):"")})},{stat:Ot(u?F:r[0]||[],t,""),summary:s+" series "+(u==="percent"?"as shares of each total":u?"stacked":"filled")+" over "+f+" points"})}ke.table=function(t){var e=Et(t.values);return le(t,e.length>1&&(t.stacked==="percent"||j(t.stacked)))};dt("area",ke);gt("area");var je=40,tr=24;function we(t,e){for(var r=Et(t.values),l=$(t.series),n=$(t.labels),i=ht(t,e),o=r.length,s=Math.max.apply(null,[0].concat(r.map(function(z){return z.length}))),f=o>1,u=j(t.horizontal),v=f&&j(t.stacked),d=!f&&$(t.color).filter(Boolean).length>1,c=r[0]||[],M=[].concat.apply([],r),k=function(z,U){return r.reduce(function(B,ft){return z<ft.length&&ft[z]*U>0?B+ft[z]:B},0)},V=[],F=[],L=[],b=0;v&&b<s;b++)F.push(k(b,1)),L.push(k(b,-1)),V.push(F[b]+L[b]);for(var p=v?F.concat(L):M,R=p.length?Math.max.apply(null,p):0,S=function(z){return l[z]||"Series "+(z+1)},x=f?Nt(t.patterns,ae,"solid"):null,w="",g=[],h=0;x&&h<o;h++)if(x(h)!=="solid"){var O=Vt("g");w+=ie(O,x(h),i[h%i.length],t.background||e.tile),g[h]="url(#"+O+")"}var y=function(z,U){return f?g[z]||i[z%i.length]:d?i[U%i.length]:i[0]},E=x&&function(z,U,B){return'<rect x="'+a(U)+'" y="'+a(B+1)+'" width="10" height="10" rx="2" fill="'+y(z)+'"/>'},N=function(z){return f||d||t.highlight==="none"||z===R?1:.5},G=function(z){return n[z]||"#"+(z+1)},Z=function(z){return f?G(z)+r.map(function(U,B){return z<U.length?`
|
|
6
|
+
`+S(B)+": "+m(U[z],t):""}).join("")+(v?`
|
|
7
|
+
Total: `+m(V[z],t):""):G(z)+": "+m(c[z],t)},Y=qt(t),Q=f||l.length?Ut(r.map(function(z,U){return S(U)}),i,e,0,0,Y.w,E,E&&15).height:0,ot=v?1:o,it=f&&!v,H=it?10:14,et=3,rt=u?ot*H+(ot-1)*et+(it?14:16):0,lt=u?Q+Math.max(1,s)*rt-6:W(t.height,140)+Q,st=c.indexOf(Math.max.apply(null,c.length?c:[0]));return pt(t,e,lt,function(z,U,B,ft){if(!s)return mt(e,z,U,B,ft);var J=w?"<defs>"+w+"</defs>":"",Mt=U;Q&&(J+=Ut(r.map(function(X,xt){return S(xt)}),i,e,z,U,B,E,E&&15).svg,Mt+=Q);var vt=Math.min(0,Math.min.apply(null,p)),K=Math.max(0,R);if(T(t.goal)&&(vt=Math.min(vt,+t.goal),K=Math.max(K,+t.goal)),K===vt&&(K=vt+1),u){for(var A=n.length?Math.min(B*.4,Math.max.apply(null,n.map(function(X){return wt(X,12)}))+10):0,_=v?[V.map(function(X){return m(X,t)})]:r.map(function(X){return X.map(function(xt){return m(xt,t)})}),I=Math.max.apply(null,[].concat.apply([],_).map(function(X){return wt(X,it?10:11,!0)}))+10,P=z+A,q=B-A-I,tt=Math.max(K,0)||1,at=0;at<s;at++){var Ct=Mt+at*rt;n[at]!=null&&(J+=C(z,Ct+(rt-6)/2+4,Kt(n[at],Math.floor(A/6.7)),'fill="'+e.fg+'" font-family="'+yt+'" font-size="12"')),v?(J+=lr(at,P,Ct+5,q,tt),J+=C(z+B,Ct+5+H/2+3.8,_[0][at],'text-anchor="end" fill="'+e.fg+'" font-family="'+St+'" font-size="11" font-weight="600"')):r.forEach(function(X,xt){if(!(at>=X.length)){var kt=X[at],Rt=Ct+(f?2:5)+xt*(H+et),Ht=Math.max(0,kt)/tt*q;f||(J+='<rect x="'+a(P)+'" y="'+a(Rt)+'" width="'+a(q)+'" height="'+H+'" rx="'+H/2+'" fill="'+e.grid+'" fill-opacity=".6"/>'),Ht>0&&(J+='<rect x="'+a(P)+'" y="'+a(Rt)+'" width="'+a(Math.max(H,Ht))+'" height="'+H+'" rx="'+H/2+'" fill="'+y(xt,at)+'" fill-opacity="'+N(kt)+'"'+ut(t,"bzc-gx",at*.06+xt*.03)+"/>"),J+=C(z+B,Rt+H/2+3.8,_[xt][at],'text-anchor="end" fill="'+e.fg+'" font-family="'+St+'" font-size="'+(f?10:11)+'" font-weight="600"')}}),J+=zt(z,Ct,B,rt-6,Z(at))}if(T(t.goal)&&+t.goal>0){var De=P+ +t.goal/tt*q;J+='<line x1="'+a(De)+'" x2="'+a(De)+'" y1="'+a(Mt-2)+'" y2="'+a(U+ft+2)+'" stroke="'+e.fg+'" stroke-opacity=".55" stroke-dasharray="3 3"/>'}return J}function lr(X,xt,kt,Rt,Ht){var Pt='<rect x="'+a(xt)+'" y="'+a(kt)+'" width="'+a(Rt)+'" height="'+H+'" rx="'+H/2+'" fill="'+e.grid+'" fill-opacity=".6"/>',te=0;return r.forEach(function(ce,Dt){var ee=X<ce.length?ce[X]:0,$t=Math.max(0,ee)/Ht*Rt;if(!($t<=0)){var Zt=te>0?1.5:0;Pt+='<rect x="'+a(xt+te+Zt)+'" y="'+a(kt)+'" width="'+a(Math.max(2,$t-Zt))+'" height="'+H+'" rx="'+a(Math.min(3,$t/2))+'" fill="'+y(Dt,X)+'"'+ut(t,"bzc-gx",X*.06+Dt*.03)+"/>",te+=$t}}),Pt}var $e=n.length?Math.max.apply(null,n.map(function(X){return wt(X,10,!0)})):0,Ce=n.length?Math.max(1,Math.ceil(s*($e+8)/B)):1,oe=j(t.angleLabels)&&Ce>1,Ue=je*Math.PI/180,Ye=function(X){return oe?Kt(X,tr):X};if(oe){var or=B/s,jt=0;n.forEach(function(X,xt){jt=Math.max(jt,Math.cos(Ue)*wt(Ye(X),10,!0)+4-(xt+.5)*or)}),jt=Math.min(jt,B*.25),z+=jt,B-=jt,Ce=1}var _e=j(t.showValues)&&vt<0?14:0,sr=oe?Math.ceil(Math.sin(Ue)*Math.min($e,wt("x".repeat(tr),10,!0)))+18:20,fr=(n.length?sr:2)+_e,Ie=j(t.showValues)?16:4,Fe=ft-(Mt-U)-fr-Ie,Xe=Mt+Ie,Gt=function(X){return Xe+Fe-(X-vt)/(K-vt)*Fe},se=B/s,fe=Math.min(se*(it?.78:.62),it?o*30:56),We=it?Math.min(3,fe/o*.15):0,Wt=v?fe:(fe-We*(o-1))/o,he=Gt(0);J+='<line x1="'+z+'" x2="'+(z+B)+'" y1="'+a(he)+'" y2="'+a(he)+'" stroke="'+e.grid+'"/>';for(var Tt=0;Tt<s;Tt++){var Ne=z+Tt*se+(se-fe)/2;if(v?J+=cr(Tt,Ne):r.forEach(function(X,xt){if(!(Tt>=X.length)){var kt=X[Tt],Rt=Ne+xt*(Wt+We),Ht=Math.min(Gt(kt),he),Pt=Math.abs(Gt(kt)-he);Pt>.5&&(J+='<rect x="'+a(Rt)+'" y="'+a(Ht)+'" width="'+a(Wt)+'" height="'+a(Pt)+'" rx="'+a(Math.min(6,Wt/2,Pt/2))+'" fill="'+y(xt,Tt)+'" fill-opacity="'+N(kt)+'"'+ut(t,kt<0?"bzc-gn":"bzc-g",Tt*.05+xt*.03)+"/>"),j(t.showValues)&&(J+=C(Rt+Wt/2,kt<0?Gt(kt)+12:Gt(kt)-5,m(kt,t,!0),'text-anchor="middle" fill="'+e.fg+'" font-family="'+St+'" font-size="'+(f?9:10)+'" font-weight="600"'))}}),n[Tt]!=null&&Tt%Ce===0){var Re=Ne+fe/2,Ve=Xe+Fe+_e+(oe?12:15);J+=oe?C(Re,Ve,Ye(n[Tt]),D(e,10,'text-anchor="end" transform="rotate(-'+je+" "+a(Re)+" "+a(Ve)+')"')):C(Re,Ve,n[Tt],D(e,10,'text-anchor="middle"'))}J+=zt(z+Tt*se,Mt,se,ft-(Mt-U),Z(Tt))}return T(t.goal)&&(J+=It(t,e,z,z+B,Gt(+t.goal))),J;function cr(X,xt){var kt="",Rt=0,Ht=0;if(r.forEach(function(te,ce){var Dt=X<te.length?te[X]:0;if(Dt){var ee=Dt>0?Rt:Ht,$t=ee+Dt;Dt>0?Rt=$t:Ht=$t;var Zt=Gt(Math.max(ee,$t)),Be=Gt(Math.min(ee,$t)),ue=Be-Zt,Ze=ee!==0?Math.min(1.5,ue/2):0;Dt>0?Be-=Ze:Zt+=Ze,ue=Be-Zt,ue>.5&&(kt+='<rect x="'+a(xt)+'" y="'+a(Zt)+'" width="'+a(Wt)+'" height="'+a(ue)+'" rx="'+a(Math.min(3,Wt/2,ue/2))+'" fill="'+y(ce,X)+'"'+ut(t,Dt<0?"bzc-gn":"bzc-g",X*.05+ce*.03)+"/>")}}),j(t.showValues)){var Pt=V[X];kt+=C(xt+Wt/2,Pt<0?Gt(L[X])+12:Gt(F[X])-5,m(Pt,t,!0),'text-anchor="middle" fill="'+e.fg+'" font-family="'+St+'" font-size="10" font-weight="600"')}return kt}},{stat:Ot(c,t,""),summary:s?v?o+" series stacked across "+s+" groups":f?o+" series across "+s+" groups":"highest "+(n[st]||"")+" "+m(c[st],t):"no data"})}we.table=function(t){return le(t,Et(t.values).length>1&&j(t.stacked))};dt("bars",we);gt("bars");function Se(t,e){for(var r=rr(t),l=$(t.series),n=ht(t,e),i=W(t.height,190),o=r?r.S:[],s=o.length,f=s>1||l.length>0,u=j(t.percent),v=function(h){return l[h]||"Series "+(h+1)},d=Object.assign({},t,{decimals:T(t.decimals)?t.decimals:r?r.dp:0}),c=function(h){return m(r.edge(h),d)+" to "+m(r.edge(h+1),d)},M=function(h,O){return Math.round(r.counts[h][O]/o[h].length*100)},k=function(h,O){return u?r.counts[h][O]/o[h].length*100:r.counts[h][O]},V=$(t.mark).filter(function(h){return h==="mean"||h==="median"}),F=s>1?Nt(t.patterns,ae,"solid"):null,L="",b=[],p=0;F&&p<s;p++)if(F(p)!=="solid"){var R=Vt("g");L+=ie(R,F(p),n[p%n.length],t.background||e.tile),b[p]="url(#"+R+")"}var S=F&&function(h,O,y){return'<rect x="'+a(O)+'" y="'+a(y+1)+'" width="10" height="10" rx="2" fill="'+(b[h]||n[h%n.length])+'"/>'},x=0,w=0;if(r){for(var g=0;g<r.count;g++)er(r,g)>er(r,x)&&(x=g);o.forEach(function(h){w+=h.length})}return pt(t,e,i,function(h,O,y,E){if(!r)return mt(e,h,O,y,E);var N=L?"<defs>"+L+"</defs>":"",G=O;if(f){var Z=Ut(o.map(function(P,q){return v(q)}),n,e,h,G,y,S,S&&15);N+=Z.svg,G+=Z.height}var Y=0;o.forEach(function(P,q){for(var tt=0;tt<r.count;tt++)Y=Math.max(Y,k(q,tt))});var Q=Jt(0,Y||1,4),ot=Q.ticks.map(function(P){return m(P,{lang:t.lang},!0)+(u?"%":"")}),it=Math.max.apply(null,ot.map(function(P){return wt(P,10,!0)}))+10,H=h+it,et=y-it,rt=E-(G-O)-20,lt=et/r.count,st=function(P){return H+P*lt},z=function(P){return G+rt-(P-Q.lo)/(Q.hi-Q.lo)*rt};Q.ticks.forEach(function(P,q){var tt=z(P);N+='<line x1="'+a(H)+'" x2="'+a(H+et)+'" y1="'+a(tt)+'" y2="'+a(tt)+'" stroke="'+e.grid+'"'+(P===0?"":' stroke-dasharray="2 4"')+"/>"+C(H-8,tt+3.5,ot[q],D(e,10,'text-anchor="end"'))});for(var U=[],B=0;B<=r.count;B++)U.push(m(r.edge(B),d,!0));var ft=Math.max(1,Math.ceil((Math.max.apply(null,U.map(function(P){return wt(P,10,!0)}))*1.5+8)/lt));for(B=0;B<=r.count;B+=ft)N+=C(st(B),G+rt+15,U[B],D(e,10,'text-anchor="'+(B===0?"start":B===r.count?"end":"middle")+'"'));o.forEach(function(P,q){for(var tt=0;tt<r.count;tt++){var at=k(q,tt);if(at){var Ct=z(at);N+='<rect x="'+a(st(tt)+.5)+'" y="'+a(Ct)+'" width="'+a(Math.max(1,lt-1))+'" height="'+a(G+rt-Ct)+'" fill="'+(b[q]||n[q%n.length])+'"'+(f?' fill-opacity=".55"':"")+ut(t,"bzc-g",Math.min(.6,tt*.03))+"/>"}}});var J=r.edge(0),Mt=r.edge(r.count)-J,vt=[];if(o.forEach(function(P,q){V.forEach(function(tt){var at=tt==="mean"?Lr(P):Ar(P);vt.push({x:H+(at-J)/Mt*et,c:f?n[q%n.length]:e.fg,t:(f?v(q)+" ":"")+tt+" "+m(at,t)})})}),vt.length){var K=vt.map(function(P){return P.x}),A=(Math.min.apply(null,K)+Math.max.apply(null,K))/2>H+et/2,_=A?Math.min.apply(null,K)-5:Math.max.apply(null,K)+5;vt.forEach(function(P,q){N+='<line x1="'+a(P.x)+'" x2="'+a(P.x)+'" y1="'+a(G)+'" y2="'+a(G+rt)+'" stroke="'+P.c+'" stroke-width="1.5" stroke-dasharray="4 3"/>'+C(_,G+9+q*12,P.t,D(e,10,'text-anchor="'+(A?"end":"start")+'"',f?P.c:e.fg))})}for(g=0;g<r.count;g++){var I=c(g);o.forEach(function(P,q){I+=`
|
|
8
|
+
`+(f?v(q)+": ":"")+r.counts[q][g]+" ("+M(q,g)+"%)"}),N+=zt(st(g),G,lt,rt,I)}return N},{summary:r?(f?s+" series, ":"")+w+" values in "+r.count+" ranges from "+m(r.edge(0),d)+" to "+m(r.edge(r.count),d)+", most in "+c(x):"no data"})}Se.table=function(t){var e=rr(t),r=$(t.series);if(!e)return{head:["Range","Count"],rows:[]};for(var l=e.S.length>1||r.length>0,n=Object.assign({},t,{decimals:T(t.decimals)?t.decimals:e.dp}),i=[],o=0;o<e.count;o++){var s=[m(e.edge(o),n)+" to "+m(e.edge(o+1),n)];l?e.S.forEach(function(f,u){s.push(String(e.counts[u][o]))}):s.push(String(e.counts[0][o]),Math.round(e.counts[0][o]/e.S[0].length*100)+"%"),i.push(s)}return{head:["Range"].concat(l?e.S.map(function(f,u){return r[u]||"Series "+(u+1)}):["Count","Share"]),rows:i}};function zr(t){var e=Math.floor(Math.log10(t)),r=+("1e"+e),l=t/r,n=l<1.4142?1:l<2.2361?2:l<3.5355?2.5:l<7.0711?5:10;return{w:n*r,dp:Math.max(0,n===10?-e-1:-e)+(n===2.5?1:0)}}function rr(t){var e=Et(t.values),r=[].concat.apply([],e);if(!r.length)return null;var l=Math.min.apply(null,r),n=Math.max.apply(null,r),i=W(t.binWidth,0),o,s;if(i>0&&(n-l)/i<=200){var f=String(t.binWidth),u=f.indexOf(".");o=u<0?0:Math.min(6,f.length-u-1)}else{var v=W(t.bins,0)>0?Math.round(W(t.bins,0)):Math.ceil(Math.log2(r.length)+1);v=Math.min(Math.max(v,1),50),s=zr(n>l?(n-l)/v:Math.abs(l)||1),i=s.w,o=s.dp}for(var d=Math.floor(l/i),c=function(V){return Number(((d+V)*i).toFixed(o+3))};c(0)>l;)d--;for(var M=Math.max(1,Math.ceil((n-c(0))/i));M>1&&c(M-1)>=n;)M--;for(;c(M)<n;)M++;var k=e.map(function(V){for(var F=[],L=0;L<M;L++)F.push(0);return V.forEach(function(b){for(var p=Math.min(M-1,Math.max(0,Math.floor((b-c(0))/i)));p>0&&b<c(p);)p--;for(;p<M-1&&b>=c(p+1);)p++;F[p]++}),F});return{S:e,edge:c,count:M,counts:k,dp:o}}function er(t,e){var r=0;return t.counts.forEach(function(l){r+=l[e]}),r}function Lr(t){var e=0;return t.forEach(function(r){e+=r}),e/t.length}function Ar(t){var e=t.slice().sort(function(l,n){return l-n}),r=Math.floor(e.length/2);return e.length%2?e[r]:(e[r-1]+e[r])/2}dt("histogram",Se);gt("histogram");function Or(t,e){var r=Math.min(t.length,e.length);if(r<2)return null;var l=0,n=0,i;for(i=0;i<r;i++)l+=t[i],n+=e[i];l/=r,n/=r;var o=0,s=0,f=0;for(i=0;i<r;i++)o+=(t[i]-l)*(t[i]-l),s+=(e[i]-n)*(e[i]-n),f+=(t[i]-l)*(e[i]-n);if(!o)return null;var u=f/o;return{slope:u,intercept:n-u*l,r:s?f/Math.sqrt(o*s):0}}function Ee(t,e){for(var r=Et(t.x),l=Et(t.y),n=$(t.series),i=$(t.labels),o=ht(t,e),s=[],f=0;f<Math.max(r.length,l.length);f++){var u=r[f]||[],v=l[f]||[],d=Math.min(u.length,v.length);s.push({xs:u.slice(0,d),ys:v.slice(0,d)})}s=s.filter(function(w){return w.xs.length});var c=s.reduce(function(w,g){return w+g.xs.length},0),M=W(t.height,210),k=s.length>1||n.length>0,V=j(t.trend),F=function(w){return n[w]||"Group "+(w+1)},L={decimals:t.decimals,compact:t.compact,lang:t.lang},b=_t(t,i),p=Nt(t.markers,re,"circle"),R=t.background||e.tile,S=function(w){var g=p?p(w):"circle";return g==="none"?"circle":g},x=p&&function(w,g,h){return ne(S(w),g+4,h+6,4,' fill="'+o[w%o.length]+'"')};return pt(t,e,M,function(w,g,h,O){if(!c)return mt(e,w,g,h,O);var y="",E=g;if(k){var N=Ut(s.map(function(A,_){return F(_)}),o,e,w,E,h,x);y+=N.svg,E+=N.height}var G=[].concat.apply([],s.map(function(A){return A.xs})),Z=[].concat.apply([],s.map(function(A){return A.ys})),Y=Math.min.apply(null,Z),Q=Math.max.apply(null,Z);T(t.goal)&&(Y=Math.min(Y,+t.goal),Q=Math.max(Q,+t.goal)),j(t.zero)&&(Y=Math.min(0,Y),Q=Math.max(0,Q));var ot=Jt(Y,Q,4),it=Jt(Math.min.apply(null,G),Math.max.apply(null,G),5),H=ot.ticks.map(function(A){return m(A,t,!0)}),et=Je(H)+(T(t.yLabel)?14:0),rt=20+(T(t.xLabel)?16:0),lt=w+et,st=h-et,z=O-(E-g)-rt,U=function(A){return lt+6+(A-it.lo)/(it.hi-it.lo)*(st-12)},B=function(A){return E+6+z-6-(A-ot.lo)/(ot.hi-ot.lo)*(z-6)};ot.ticks.forEach(function(A,_){var I=B(A);y+='<line x1="'+a(lt)+'" x2="'+a(lt+st)+'" y1="'+a(I)+'" y2="'+a(I)+'" stroke="'+e.grid+'" stroke-dasharray="2 4"/>'+C(lt-8,I+3.5,H[_],D(e,10,'text-anchor="end"'))});var ft=Math.max(1,Math.ceil(it.ticks.length*44/st));if(it.ticks.forEach(function(A,_){if(!(_%ft)){var I=U(A);y+='<line x1="'+a(I)+'" x2="'+a(I)+'" y1="'+a(E)+'" y2="'+a(E+z)+'" stroke="'+e.grid+'" stroke-dasharray="2 4"/>'+C(I,E+z+15,m(A,L,!0),D(e,10,'text-anchor="middle"'))}}),T(t.xLabel)&&(y+=C(lt+st/2,E+z+32,t.xLabel,D(e,10,'text-anchor="middle" font-weight="600"'))),T(t.yLabel)){var J=E+z/2;y+='<text x="'+a(w+4)+'" y="'+a(J)+'" transform="rotate(-90 '+a(w+4)+" "+a(J)+')" text-anchor="middle" '+D(e,10,'font-weight="600"')+' dominant-baseline="hanging">'+String(t.yLabel).replace(/[&<>"]/g,function(A){return{"&":"&","<":"<",">":">",'"':"""}[A]})+"</text>"}T(t.goal)&&(y+=It(t,e,lt,lt+st,B(+t.goal))),V&&s.forEach(function(A,_){var I=Or(A.xs,A.ys);if(I){var P=Math.min.apply(null,A.xs),q=Math.max.apply(null,A.xs),tt=I.slope*P+I.intercept,at=I.slope*q+I.intercept,Ct=o[_%o.length];y+='<line x1="'+a(U(P))+'" y1="'+a(nt(B(tt),E,E+z))+'" x2="'+a(U(q))+'" y2="'+a(nt(B(at),E,E+z))+'" stroke="'+Ct+'" stroke-width="2" stroke-dasharray="6 4" stroke-linecap="round" stroke-opacity=".9"/>',y+=C(Math.min(U(q),lt+st)-2,nt(B(at),E+10,E+z)-7,"r = "+I.r.toFixed(2),D(e,10,'text-anchor="end" font-weight="600"',Ct))}});var Mt=0,vt=c>150?3:4.5;s.forEach(function(A,_){var I=o[_%o.length];A.xs.forEach(function(P,q){var tt=U(P),at=B(A.ys[q]),Ct=(i[Mt]?i[Mt]+`
|
|
9
|
+
`:k?F(_)+`
|
|
10
|
+
`:"")+(T(t.xLabel)?t.xLabel:"x")+": "+m(P,L)+`
|
|
11
|
+
`+(T(t.yLabel)?t.yLabel:"y")+": "+m(A.ys[q],t);y+=ne(S(_),tt,at,vt,' fill="'+I+'" fill-opacity=".85" stroke="'+R+'" stroke-width="1.5"'+(t.animate?' class="bzc-a" style="animation-delay:'+a(Math.min(.8,Mt*.012))+'s"':"")),y+=zt(tt-8,at-8,16,16,Ct),Mt++})});var K=[];return s.forEach(function(A){A.xs.forEach(function(_,I){K.push([U(_),B(A.ys[I])])})}),b.forEach(function(A){var _=K[A.i];_&&(y+='<circle cx="'+a(_[0])+'" cy="'+a(_[1])+'" r="'+(vt+4)+'" fill="none" stroke="'+e.fg+'" stroke-width="1.5"/>'+C(nt(_[0],lt+30,lt+st-30),_[1]-vt-9,A.text,D(e,10,'text-anchor="middle"',e.fg)))}),y},{summary:c+" points"+(k?" in "+s.length+" groups":"")})}Ee.table=function(t){var e=Et(t.x),r=Et(t.y),l=$(t.series),n=$(t.labels),i=e.length>1||l.length>0,o={decimals:t.decimals,compact:t.compact,lang:t.lang},s=[],f=0;return e.forEach(function(u,v){for(var d=r[v]||[],c=0;c<Math.min(u.length,d.length);c++,f++)s.push([n[f]||"#"+(f+1)].concat(i?[l[v]||"Group "+(v+1)]:[],[m(u[c],o),m(d[c],t)]))}),{head:["Point"].concat(i?["Group"]:[],[T(t.xLabel)?t.xLabel:"x",T(t.yLabel)?t.yLabel:"y"]),rows:s}};dt("scatter",Ee);gt("scatter");function ze(t,e){var r=ct(t.values),l=$(t.labels),n=ht(t,e),i=W(t.max,100)||100,o=W(t.height,140),s=!T(t.prefix)&&!T(t.suffix)&&i===100,f=function(v){return m(v,t)+(s?"%":"")},u=Ot(r,t,"");return pt(t,e,o,function(v,d,c,M){if(!r.length)return mt(e,v,d,c,M);var k="",V=r.length===1,F=Math.min(M,V?c:c*.55),L=V?v+c/2:v+F/2,b=d+M/2,p=V?F*.12:nt(F*.42/(r.length*1.35),5,16),R=p*.38;if(r.forEach(function(g,h){var O=F/2-p/2-h*(p+R);if(!(O<=p/2)){var y=nt(g/i*100,0,100),E=n[h%n.length];k+='<circle cx="'+a(L)+'" cy="'+a(b)+'" r="'+a(O)+'" fill="none" stroke="'+E+'" stroke-opacity=".16" stroke-width="'+a(p)+'"/>',y>0&&(k+='<circle cx="'+a(L)+'" cy="'+a(b)+'" r="'+a(O)+'" fill="none" stroke="'+E+'" stroke-width="'+a(p)+'" stroke-linecap="round" pathLength="100" transform="rotate(-90 '+a(L)+" "+a(b)+')" style="stroke-dasharray:'+a(y)+" 100"+(t.animate?";animation-delay:"+h*.12+"s":"")+'"'+(t.animate?' class="bzc-s"':"")+"/>"),k+='<circle cx="'+a(L)+'" cy="'+a(b)+'" r="'+a(O+p/2)+'" fill="#000" fill-opacity="0" class="bzc-hit" data-tip="'+bt((l[h]||"#"+(h+1))+": "+f(g)+(s?"":" of "+m(i,t)))+'"/>'}}),V)k+=C(L,b+F*.08,f(r[0]),'text-anchor="middle" fill="'+e.fg+'" font-family="'+yt+'" font-size="'+a(F*.22)+'" font-weight="800"'),l[0]&&(k+=C(L,b+F*.08+16,l[0],D(e,10,'text-anchor="middle"')));else{var S=v+F+22,x=Math.min(26,M/r.length),w=b-x*r.length/2;r.forEach(function(g,h){var O=w+h*x+x/2;k+='<circle cx="'+a(S+4)+'" cy="'+a(O)+'" r="4" fill="'+n[h%n.length]+'"/>'+C(S+14,O+4,Kt(l[h]||"#"+(h+1),Math.floor((v+c-S-60)/6.7)),'fill="'+e.fg+'" font-family="'+yt+'" font-size="12"')+C(v+c,O+4,f(g),'text-anchor="end" fill="'+e.fg+'" font-family="'+St+'" font-size="11" font-weight="600"')})}return k},{stat:u,summary:r.map(function(v,d){return(l[d]?l[d]+" ":"")+f(v)}).join(", ")})}ze.table=function(t){var e=$(t.labels),r=W(t.max,100)||100,l=!T(t.prefix)&&!T(t.suffix)&&r===100;return{head:["Label","Value"],rows:ct(t.values).map(function(n,i){return[e[i]||"#"+(i+1),m(n,t)+(l?"%":" of "+m(r,t))]})}};dt("ring",ze);gt("ring");function Le(t,e){var r=ct(t.values).map(function(c){return Math.max(0,c)}),l=$(t.labels),n=ht(t,e),i=r.slice(),o=l.slice();if(i.length>6){var s=i.map(function(c,M){return M}).sort(function(c,M){return r[M]-r[c]}),f=s.slice(0,5).sort(function(c,M){return c-M});i=f.map(function(c){return r[c]}),o=f.map(function(c){return l[c]||"#"+(c+1)}),i.push(Bt(s.slice(5).map(function(c){return r[c]}))),o.push("Other")}var u=Bt(i),v=W(t.height,150),d=Ot(i,t,"");return pt(t,e,v,function(c,M,k,V){if(!u)return mt(e,c,M,k,V);var F="",L=Math.min(V,k*.5),b=c+L/2,p=M+V/2,R=L*.16,S=(L-R)/2,x=0,w=i.filter(Boolean).length>1?.9:0;i.forEach(function(y,E){var N=y/u*100;if(!(N<=0)){var G=Math.max(.01,N-w);F+='<circle cx="'+a(b)+'" cy="'+a(p)+'" r="'+a(S)+'" fill="none" stroke="'+n[E%n.length]+'" stroke-width="'+a(R)+'" pathLength="100" stroke-dasharray="'+a(G)+" "+a(100-G)+'" stroke-dashoffset="'+a(-x)+'" transform="rotate(-90 '+a(b)+" "+a(p)+')"'+ut(t,"bzc-a",E*.08)+"/>",x+=N}}),F+=C(b,p+2,m(u,t,!0),'text-anchor="middle" fill="'+e.fg+'" font-family="'+yt+'" font-size="'+a(L*.17)+'" font-weight="800"'),F+=C(b,p+2+14,(T(t.centerLabel)?t.centerLabel:"Total").toUpperCase(),D(e,9,'text-anchor="middle" letter-spacing="1"'));var g=c+L+22,h=Math.min(24,V/i.length),O=p-h*i.length/2;return i.forEach(function(y,E){var N=O+E*h+h/2,G=Math.round(y/u*100),Z=(o[E]||"#"+(E+1))+": "+m(y,t)+" ("+G+"%)";F+='<circle cx="'+a(g+4)+'" cy="'+a(N)+'" r="4" fill="'+n[E%n.length]+'"/>'+C(g+14,N+4,Kt(o[E]||"#"+(E+1),Math.floor((c+k-g-50)/6.7)),'fill="'+e.fg+'" font-family="'+yt+'" font-size="12"')+C(c+k,N+4,G+"%",'text-anchor="end" fill="'+e.muted+'" font-family="'+St+'" font-size="11" font-weight="600"')+zt(g,N-h/2,c+k-g,h,Z)}),x=0,i.forEach(function(y,E){var N=y/u*100;N<=0||(F+='<circle cx="'+a(b)+'" cy="'+a(p)+'" r="'+a(S)+'" fill="none" stroke="#000" stroke-opacity="0" stroke-width="'+a(R)+'" pathLength="100" stroke-dasharray="'+a(N)+" "+a(100-N)+'" stroke-dashoffset="'+a(-x)+'" transform="rotate(-90 '+a(b)+" "+a(p)+')" class="bzc-hit" data-skip="" data-tip="'+bt((o[E]||"#"+(E+1))+": "+m(y,t)+" ("+Math.round(N)+"%)")+'"/>',x+=N)}),F},{stat:d,summary:"total "+m(u,t)+" across "+i.length+" parts"})}Le.table=function(t){var e=ct(t.values).map(function(n){return Math.max(0,n)}),r=$(t.labels),l=Bt(e);return{head:["Label","Value","Share"],rows:e.map(function(n,i){return[r[i]||"#"+(i+1),m(n,t),(l?Math.round(n/l*100):0)+"%"]})}};dt("donut",Le);gt("donut");function Ae(t,e){var r=ct(t.values),l=r.length?r[0]:W(t.value,NaN),n=$(t.labels),i=W(t.min,0),o=W(t.max,100),s=W(t.height,130);o===i&&(o=i+1);var f=ct(t.zones),u=ht(t,e),v=$(t.color).filter(Boolean).length>1?u:[e.up,e.palette[3],e.down],d=u[0];if(f.length&&isFinite(l)){for(var c=0;c<f.length&&l>=f[c];)c++;d=v[Math.min(c,v.length-1)]}var M=!T(t.prefix)&&!T(t.suffix)&&i===0&&o===100,k=function(V){return m(V,t)+(M?"%":"")};return pt(t,e,s,function(V,F,L,b){if(!isFinite(l))return mt(e,V,F,L,b);var p=Math.min(L/2,b-22),R=p*.16,S=p-R/2,x=V+L/2,w=F+p,g=nt((l-i)/(o-i),0,1),h=function(Y,Q){var ot=Math.PI*(1-Y);return[x+Q*Math.cos(ot),w-Q*Math.sin(ot)]},O="M"+a(x-S)+","+a(w)+"A"+a(S)+","+a(S)+" 0 0 1 "+a(x+S)+","+a(w),y='<path d="'+O+'" fill="none" stroke="'+d+'" stroke-opacity=".16" stroke-width="'+a(R)+'" stroke-linecap="round"/>';f.length&&f.forEach(function(Y){var Q=nt((Y-i)/(o-i),0,1),ot=h(Q,S-R/2-3),it=h(Q,S-R/2-8);y+='<line x1="'+a(ot[0])+'" y1="'+a(ot[1])+'" x2="'+a(it[0])+'" y2="'+a(it[1])+'" stroke="'+e.muted+'" stroke-width="1.5"/>'}),g>0&&(y+='<path d="'+O+'" fill="none" stroke="'+d+'" stroke-width="'+a(R)+'" stroke-linecap="round" pathLength="100" style="stroke-dasharray:'+a(g*100)+' 100"'+ut(t,"bzc-s")+"/>");var E=h(g,S);if(y+='<circle cx="'+a(E[0])+'" cy="'+a(E[1])+'" r="'+a(R*.26)+'" fill="'+(t.background||e.tile)+'"'+ut(t,"bzc-a",.9)+"/>",T(t.goal)){var N=nt((+t.goal-i)/(o-i),0,1),G=h(N,S+R/2+4),Z=h(N,S-R/2-4);y+='<line x1="'+a(G[0])+'" y1="'+a(G[1])+'" x2="'+a(Z[0])+'" y2="'+a(Z[1])+'" stroke="'+e.fg+'" stroke-width="2" stroke-linecap="round"/>'}return y+=C(x,w-p*.12,k(l),'text-anchor="middle" fill="'+e.fg+'" font-family="'+yt+'" font-size="'+a(p*.34)+'" font-weight="800"'),n[0]&&(y+=C(x,w-p*.12+16,n[0],D(e,10,'text-anchor="middle"'))),y+=C(x-S,w+18,m(i,t,!0),D(e,10,'text-anchor="middle"'))+C(x+S,w+18,m(o,t,!0),D(e,10,'text-anchor="middle"')),y+=zt(x-p,w-p,p*2,p,(n[0]?n[0]+": ":"")+k(l)+" (range "+m(i,t)+" to "+m(o,t)+")"+(T(t.goal)?`
|
|
12
|
+
Goal: `+m(+t.goal,t):"")),y},{summary:isFinite(l)?k(l)+" on a scale of "+m(i,t)+" to "+m(o,t):"no data"})}Ae.table=function(t){var e=ct(t.values),r=e.length?e[0]:W(t.value,NaN),l=$(t.labels),n=W(t.min,0),i=W(t.max,100),o=!T(t.prefix)&&!T(t.suffix)&&n===0&&i===100;return isFinite(r)?{head:["Label","Value"],rows:[[l[0]||"Reading",m(r,t)+(o?"%":"")],["Lowest",m(n,t)],["Highest",m(i,t)]].concat(T(t.goal)?[["Goal",m(+t.goal,t)]]:[])}:{head:["Label","Value"],rows:[]}};dt("gauge",Ae);gt("gauge");function Oe(t,e){var r=ct(t.values).map(function(L){return Math.max(0,L)}),l=$(t.labels),n=ht(t,e),i=r.length===1,o=Bt(r),s=T(t.max)?W(t.max,100):i?100:o;s>0||(s=1);var f=!T(t.prefix)&&!T(t.suffix)&&s===100&&i,u=function(L){return m(L,t)+(f?"%":"")},v=qt(t),d=v.w,c=0,M=[];if(!i&&r.length){var k=0;c=1,r.forEach(function(L,b){var p=l[b]||"#"+(b+1),R=14+wt(p,12)+6+wt(m(L,t),11,!0)+18;k>0&&k+R>d&&(k=0,c++),M.push({x:k,row:c-1,l:p}),k+=R})}var V=36+(c?12+c*20:0),F=Ot(r,t,"");return pt(t,e,V,function(L,b,p,R){if(!r.length)return mt(e,L,b,p,R);var S="",x=b+22,w=Vt("c"),g=i?u(r[0])+(f?"":" of "+m(s,t)):m(o,t)+" of "+m(s,t);i&&l[0]&&(S+=C(L,b+11,l[0],'fill="'+e.fg+'" font-family="'+yt+'" font-size="12"')),S+=C(L+p,b+11,g,'text-anchor="end" fill="'+e.fg+'" font-family="'+St+'" font-size="11" font-weight="600"'),S+='<rect x="'+L+'" y="'+x+'" width="'+p+'" height="14" rx="7" fill="'+e.grid+'" fill-opacity=".7"/>',S+='<clipPath id="'+w+'"><rect x="'+L+'" y="'+x+'" width="'+p+'" height="14" rx="7"/></clipPath><g clip-path="url(#'+w+')"><g'+ut(t,"bzc-gx")+">";var h=0;if(r.forEach(function(y,E){var N=Math.min(y,Math.max(0,s-h))/s*p;N>0&&(S+='<rect x="'+a(L+h/s*p)+'" y="'+x+'" width="'+a(N)+'" height="14" fill="'+n[E%n.length]+'"/>'),E>0&&N>0&&(S+='<rect x="'+a(L+h/s*p-1)+'" y="'+x+'" width="2" height="14" fill="'+(t.background||e.tile)+'"/>'),h+=y}),S+="</g></g>",T(t.goal)){var O=L+nt(+t.goal/s,0,1)*p;S+='<line x1="'+a(O)+'" x2="'+a(O)+'" y1="'+(x-4)+'" y2="'+(x+18)+'" stroke="'+e.fg+'" stroke-width="2" stroke-linecap="round"/>'}return h=0,r.forEach(function(y,E){var N=Math.min(y,Math.max(0,s-h))/s*p;N>0&&(S+=zt(L+h/s*p,x-4,N,22,(l[E]||(i?"Progress":"#"+(E+1)))+": "+u(y)+(i?"":" ("+Math.round(y/s*100)+"%)"))),h+=y}),M.forEach(function(y,E){var N=L+y.x,G=x+14+12+y.row*20+8;S+='<circle cx="'+a(N+4)+'" cy="'+a(G)+'" r="4" fill="'+n[E%n.length]+'"/><text x="'+a(N+14)+'" y="'+a(G+4)+'" fill="'+e.fg+'" font-family="'+yt+'" font-size="12">'+bt(y.l)+'<tspan dx="6" fill="'+e.muted+'" font-family="'+St+'" font-size="11">'+bt(m(r[E],t))+"</tspan></text>"}),S},{stat:F,summary:i?u(r[0])+(f?"":" of "+m(s,t)):m(o,t)+" of "+m(s,t)})}Oe.table=function(t){var e=ct(t.values).map(function(o){return Math.max(0,o)}),r=$(t.labels),l=e.length===1,n=T(t.max)?W(t.max,100):l?100:Bt(e);n>0||(n=1);var i=!T(t.prefix)&&!T(t.suffix)&&n===100&&l;return l?{head:["Label","Value"],rows:[[r[0]||"Progress",m(e[0],t)+(i?"%":" of "+m(n,t))]]}:{head:["Label","Value","Share"],rows:e.map(function(o,s){return[r[s]||"#"+(s+1),m(o,t),Math.round(o/n*100)+"%"]})}};dt("progress",Oe);gt("progress");var ar={weekday:"short",day:"numeric",month:"short",year:"numeric"};function nr(t,e){if(T(t.start)&&/^\d{4}-\d{2}-\d{2}$/.test(String(t.start)))return new Date(String(t.start)+"T00:00:00Z");var r=new Date;return new Date(Date.UTC(r.getFullYear(),r.getMonth(),r.getDate())-Math.max(0,e-1)*864e5)}function ir(t,e){try{return new Intl.DateTimeFormat(t,Object.assign({timeZone:"UTC"},e))}catch{return new Intl.DateTimeFormat("en-GB",Object.assign({timeZone:"UTC"},e))}}function Te(t,e){var r=ct(t.values),l=ht(t,e)[0],n=t.lang||"en-GB",i=nr(t,r.length),o=(i.getUTCDay()+6)%7,s=Math.max(1,Math.ceil((o+r.length)/7)),f=qt(t),u=28,v=Math.max(1,Math.floor((f.w-u)/10));if(s>v){var d=(s-v)*7-o;r=r.slice(d),i=new Date(i.getTime()+d*864e5),o=0,s=v}var c=Math.min(18,(f.w-u)/s),M=c<8?1:3,k=c-M,V=16+7*c+26,F=r.length?Math.max.apply(null,r):0,L=function(x){return ir(n,x)},b=L({month:"short"}),p=L({weekday:"short"}),R=L(ar),S=Ot(r,t,"");return pt(t,e,V,function(x,w,g,h){if(!r.length)return mt(e,x,w,g,h);var O="",y=x+u,E=w+16,N=-99,G=[.28,.5,.75,1];c>=9&&[0,2,4].forEach(function(J){var Mt=new Date(Date.UTC(2024,0,1+J));O+=C(x,E+J*c+k/2+3.5,p.format(Mt),D(e,9))});for(var Z=0;Z<r.length;Z++){var Y=o+Z,Q=Math.floor(Y/7),ot=Y%7,it=new Date(i.getTime()+Z*864e5),H=y+Q*c,et=E+ot*c;(it.getUTCDate()===1||Z===0)&&H-N>30&&(O+=C(H,w+9,b.format(it),D(e,9)),N=H);var rt=r[Z]<=0||!F?0:Math.ceil(r[Z]/F*4),lt=rt?l:e.grid,st=rt?G[rt-1]:.7;O+='<rect x="'+a(H)+'" y="'+a(et)+'" width="'+a(k)+'" height="'+a(k)+'" rx="'+a(k*.24)+'" fill="'+lt+'" fill-opacity="'+st+'"'+(t.animate?' class="bzc-a" style="animation-delay:'+a(Q*.012)+'s"':"")+' data-tip="'+bt(R.format(it)+": "+m(r[Z],t))+'"/>'}var z=E+7*c+14,U=10,B=x+g-5*(U+3)-30;O+=C(x,z+8,m(Bt(r),t,!0)+" in "+r.length+" days",D(e,10)),O+=C(B-6,z+8,"Less",D(e,9,'text-anchor="end"'));for(var ft=0;ft<5;ft++)O+='<rect x="'+a(B+ft*(U+3))+'" y="'+z+'" width="'+U+'" height="'+U+'" rx="2.5" fill="'+(ft?l:e.grid)+'" fill-opacity="'+(ft?G[ft-1]:.7)+'"/>';return O+=C(B+5*(U+3)+3,z+8,"More",D(e,9)),O},{stat:S,summary:m(Bt(r),t)+" across "+r.length+" days"})}Te.table=function(t){var e=ct(t.values),r=nr(t,e.length),l=ir(t.lang||"en-GB",ar);return{head:["Date","Value"],rows:e.map(function(n,i){return[l.format(new Date(r.getTime()+i*864e5)),m(n,t)]})}};dt("heatmap",Te);gt("heatmap");var Tr="1.5.0",Cr=pe.slice();return gr(Fr);})();
|