@blueprint-chart/lib 1.8.1 → 1.8.2

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/dist/index.js CHANGED
@@ -1,8 +1,8 @@
1
- import { $ as e, A as t, B as n, C as r, Ct as i, D as a, E as o, F as s, G as c, H as l, I as ee, J as te, K as ne, L as re, M as ie, N as ae, O as oe, P as se, Q as ce, R as le, S as ue, St as de, T as fe, Tt as pe, U as me, V as u, W as he, X as ge, Y as d, Z as f, _ as _e, _t as ve, a as ye, at as be, b as p, bt as xe, c as Se, ct as Ce, d as we, dt as Te, et as m, f as Ee, ft as De, g as Oe, gt as ke, h as Ae, ht as je, i as h, it as Me, j as Ne, k as Pe, l as Fe, lt as Ie, m as g, mt as _, n as v, nt as Le, o as Re, ot as ze, p as y, pt as Be, q as Ve, r as He, rt as Ue, s as We, st as Ge, t as Ke, tt as qe, u as Je, ut as Ye, v as Xe, vt as Ze, w as Qe, wt as $e, x as b, xt as et, y as tt, yt as nt, z as rt } from "./render-bpc-Bp2OTJmu.js";
2
- import { t as it } from "./runtime-BnrDRLyH.js";
1
+ import { $ as e, A as t, B as n, C as r, Ct as i, D as a, E as o, Et as s, F as c, G as l, H as ee, I as te, J as u, K as ne, L as re, M as ie, N as ae, O as oe, P as se, Q as d, R as ce, S as f, St as le, T as ue, Tt as de, U as fe, V as pe, W as me, X as p, Y as he, Z as ge, _ as _e, _t as ve, a as ye, at as be, b as xe, bt as Se, c as Ce, ct as we, d as Te, dt as Ee, et as De, f as Oe, ft as ke, g as Ae, gt as je, h as Me, ht as Ne, i as m, it as Pe, j as Fe, k as Ie, l as Le, lt as h, m as g, mt as Re, n as _, nt as ze, o as Be, ot as Ve, p as v, pt as He, q as Ue, r as We, rt as Ge, s as Ke, st as qe, t as Je, tt as y, u as Ye, ut as Xe, v as Ze, vt as Qe, w as $e, wt as et, x as b, xt as tt, y as nt, yt as rt, z as it } from "./render-bpc-By-iMMKD.js";
2
+ import { t as at } from "./runtime-BnrDRLyH.js";
3
3
  import x from "chroma-js";
4
4
  //#region src/recommendations/intent.ts
5
- var at = [
5
+ var ot = [
6
6
  {
7
7
  intent: "range",
8
8
  pattern: /\b(range|high and low|high\/low|margin of error|confidence interval|confidence|interval|plus or minus|spread between)\b/i
@@ -30,7 +30,7 @@ var at = [
30
30
  ];
31
31
  function S(e) {
32
32
  if (e === void 0 || e.trim() === "") return "none";
33
- for (let t of at) if (t.pattern.test(e)) return t.intent;
33
+ for (let t of ot) if (t.pattern.test(e)) return t.intent;
34
34
  return "none";
35
35
  }
36
36
  //#endregion
@@ -101,7 +101,7 @@ var C = (e, t, n) => ({
101
101
  },
102
102
  other: { none: () => [C("bar-vertical", "good", "Default bar chart recommendation")] }
103
103
  };
104
- function ot(e, t, n) {
104
+ function st(e, t, n) {
105
105
  let r = w[e], i = r[t] ?? r.none;
106
106
  return i ? i(n) : [C("bar-vertical", "good", "Default bar chart recommendation")];
107
107
  }
@@ -113,7 +113,7 @@ function T(e, t) {
113
113
  }
114
114
  //#endregion
115
115
  //#region src/recommendations/types.ts
116
- var st = {
116
+ var ct = {
117
117
  "bar-vertical": "Vertical Bar Chart",
118
118
  "bar-horizontal": "Horizontal Bar Chart",
119
119
  "bar-multi": "Grouped Bar Chart",
@@ -130,17 +130,17 @@ var st = {
130
130
  };
131
131
  //#endregion
132
132
  //#region src/recommendations/recommend.ts
133
- function ct(e, t, n) {
134
- return e.length === 0 ? [] : ot(T(e, t), S(n), t).map((e) => ({
133
+ function lt(e, t, n) {
134
+ return e.length === 0 ? [] : st(T(e, t), S(n), t).map((e) => ({
135
135
  chartType: e.type,
136
- label: st[e.type] ?? e.type,
136
+ label: ct[e.type] ?? e.type,
137
137
  fitness: e.fitness,
138
138
  reason: e.reason
139
139
  }));
140
140
  }
141
141
  //#endregion
142
142
  //#region src/charts/colorblind.ts
143
- var lt = {
143
+ var ut = {
144
144
  protanopia: "Protanopia (no red)",
145
145
  deuteranopia: "Deuteranopia (no green)",
146
146
  tritanopia: "Tritanopia (no blue)"
@@ -215,24 +215,24 @@ var lt = {
215
215
  function D(e) {
216
216
  return `bc-cvd-${e}`;
217
217
  }
218
- function ut(e) {
218
+ function dt(e) {
219
219
  let t = "http://www.w3.org/2000/svg", n = document.createElementNS(t, "filter");
220
220
  n.setAttribute("id", D(e)), n.setAttribute("color-interpolation-filters", "linearRGB");
221
221
  let r = document.createElementNS(t, "feColorMatrix");
222
222
  return r.setAttribute("type", "matrix"), r.setAttribute("values", E[e].join(" ")), n.appendChild(r), n;
223
223
  }
224
- function dt(e) {
224
+ function ft(e) {
225
225
  return e <= .04045 ? e / 12.92 : ((e + .055) / 1.055) ** 2.4;
226
226
  }
227
227
  function O(e) {
228
228
  return e <= .0031308 ? 12.92 * e : 1.055 * e ** (1 / 2.4) - .055;
229
229
  }
230
230
  function k(e, t) {
231
- let [n, r, i] = x(e).rgb().map((e) => dt(e / 255)), a = E[t], o = O(a[0] * n + a[1] * r + a[2] * i), s = O(a[5] * n + a[6] * r + a[7] * i), c = O(a[10] * n + a[11] * r + a[12] * i), l = (e) => Math.min(255, Math.max(0, Math.round(e * 255)));
231
+ let [n, r, i] = x(e).rgb().map((e) => ft(e / 255)), a = E[t], o = O(a[0] * n + a[1] * r + a[2] * i), s = O(a[5] * n + a[6] * r + a[7] * i), c = O(a[10] * n + a[11] * r + a[12] * i), l = (e) => Math.min(255, Math.max(0, Math.round(e * 255)));
232
232
  return x(l(o), l(s), l(c)).hex();
233
233
  }
234
- var ft = 10;
235
- function pt(e) {
234
+ var pt = 10;
235
+ function mt(e) {
236
236
  if (e.length < 2) return [];
237
237
  let t = [
238
238
  "protanopia",
@@ -243,7 +243,7 @@ function pt(e) {
243
243
  let t = e.map((e) => k(e, r)), i = [];
244
244
  for (let n = 0; n < t.length; n++) for (let r = n + 1; r < t.length; r++) {
245
245
  let a = x.deltaE(t[n], t[r]);
246
- a < ft && i.push({
246
+ a < pt && i.push({
247
247
  a: e[n],
248
248
  b: e[r],
249
249
  deltaE: a
@@ -251,7 +251,7 @@ function pt(e) {
251
251
  }
252
252
  i.length > 0 && n.push({
253
253
  type: r,
254
- label: lt[r],
254
+ label: ut[r],
255
255
  pairs: i
256
256
  });
257
257
  }
@@ -269,13 +269,13 @@ function M(e, t) {
269
269
  let n = `${t}${/^[a-zA-Z_][a-zA-Z0-9_-]*$/.test(e.key) ? e.key : `"${e.key}"`} = ${j(e)}`;
270
270
  return [...A(e.leadingComments, t), n].join("\n");
271
271
  }
272
- function mt(e, t) {
272
+ function ht(e, t) {
273
273
  let n;
274
274
  return n = e.key === "series" && e.quotedKey && !(e.values && e.values.length > 1) ? `${t}"series" = ${j(e)}` : e.values && e.values.length > 1 ? `${t}${e.key === "series" && !e.quotedKey ? e.key : `"${e.key}"`} = ${e.values.map((e) => typeof e == "number" ? `${e}` : `"${String(e).replace(/\\/g, "\\\\").replace(/"/g, "\\\"")}"`).join(",")}` : `${t}${/^[a-zA-Z_][a-zA-Z0-9_-]*$/.test(e.key) ? e.key : `"${e.key}"`} = ${j(e)}`, [...A(e.leadingComments, t), n].join("\n");
275
275
  }
276
276
  function N(e, t) {
277
277
  let n = [...A(e.leadingComments, t), `${t}data {`];
278
- for (let r of e.entries) n.push(mt(r, `${t} `));
278
+ for (let r of e.entries) n.push(ht(r, `${t} `));
279
279
  return n.push(`${t}}`), n.join("\n");
280
280
  }
281
281
  function P(e, t) {
@@ -292,13 +292,13 @@ function I(e, t) {
292
292
  return n.push(`${t}}`), n.join("\n");
293
293
  }
294
294
  function L(e, t) {
295
- let n = e.kind ?? f.Point;
296
- if (n === f.Range) {
295
+ let n = e.kind ?? d.Point;
296
+ if (n === d.Range) {
297
297
  let n = [...A(e.leadingComments, t), `${t}range {`];
298
298
  for (let r of e.properties) n.push(M(r, `${t} `));
299
299
  return n.push(`${t}}`), n.join("\n");
300
300
  }
301
- if (n === f.Free) {
301
+ if (n === d.Free) {
302
302
  let n = [...A(e.leadingComments, t), `${t}note {`];
303
303
  for (let r of e.properties) n.push(M(r, `${t} `));
304
304
  return n.push(`${t}}`), n.join("\n");
@@ -329,11 +329,11 @@ function B(e, t) {
329
329
  for (let r of e.properties) n.push(M(r, `${t} `));
330
330
  return n.push(`${t}}`), n.join("\n");
331
331
  }
332
- function ht(e, t, n) {
333
- let r = p(n).find((t) => t.key === e);
332
+ function gt(e, t, n) {
333
+ let r = b(n).find((t) => t.key === e);
334
334
  return !r || r.default === void 0 ? !1 : String(r.default) === String(t);
335
335
  }
336
- function gt(e) {
336
+ function _t(e) {
337
337
  let t = [`chart ${e.chartType} {`];
338
338
  for (let n of e.properties) t.push(M(n, " "));
339
339
  e.data && t.push(N(e.data, " "));
@@ -346,11 +346,11 @@ function gt(e) {
346
346
  for (let n of e.transforms) t.push(B(n, " "));
347
347
  return t.push("}"), t.join("\n");
348
348
  }
349
- function _t(e) {
349
+ function vt(e) {
350
350
  return new Map(e.map((e) => [e.key, e.value]));
351
351
  }
352
352
  function V(e, t, n, r) {
353
- let i = p(n).find((t) => t.key === e);
353
+ let i = b(n).find((t) => t.key === e);
354
354
  return i ? r.has(e) ? String(r.get(e)) === String(t) : i.default !== void 0 && String(i.default) === String(t) : !1;
355
355
  }
356
356
  function H(e, t, n, r) {
@@ -358,7 +358,7 @@ function H(e, t, n, r) {
358
358
  for (let a of e.properties) (a.isPercentage || !V(a.key, a.value, n, r)) && i.push(M(a, `${t} `));
359
359
  return i.push(`${t}}`), i.join("\n");
360
360
  }
361
- function vt(e, t, n, r) {
361
+ function yt(e, t, n, r) {
362
362
  let i = e.properties.find((e) => e.key === "type"), a = i ? String(i.value) : n, o = e.name == null ? `${t}scene {` : `${t}scene "${e.name}" {`, s = [...A(e.leadingComments, t), o], c = new Map(r);
363
363
  for (let n of e.properties) {
364
364
  if (n.key === "type") {
@@ -376,7 +376,7 @@ function vt(e, t, n, r) {
376
376
  for (let n of e.transforms) s.push(B(n, `${t} `));
377
377
  return s.push(`${t}}`), s.join("\n");
378
378
  }
379
- function yt(e) {
379
+ function bt(e) {
380
380
  let t = [`chart ${e.chartType} {`], n = /* @__PURE__ */ new Map();
381
381
  for (let r of e.properties) (r.isPercentage || !V(r.key, r.value, e.chartType, n)) && t.push(M(r, " "));
382
382
  e.data && t.push(N(e.data, " "));
@@ -384,15 +384,15 @@ function yt(e) {
384
384
  for (let n of e.highlights) t.push(F(n, " "));
385
385
  for (let n of e.areaFills) t.push(I(n, " "));
386
386
  for (let n of e.annotations) t.push(L(n, " "));
387
- let r = _t(e.properties);
387
+ let r = vt(e.properties);
388
388
  for (let n of e.series) t.push(H(n, " ", e.chartType, r));
389
- for (let n of e.scenes) t.push(vt(n, " ", e.chartType, r));
389
+ for (let n of e.scenes) t.push(yt(n, " ", e.chartType, r));
390
390
  for (let n of e.transforms) t.push(B(n, " "));
391
391
  return t.push("}"), t.join("\n");
392
392
  }
393
- function bt(e) {
393
+ function xt(e) {
394
394
  let t = [`chart ${e.chartType} {`];
395
- for (let n of e.properties) ht(n.key, n.value, e.chartType) || t.push(M(n, " "));
395
+ for (let n of e.properties) gt(n.key, n.value, e.chartType) || t.push(M(n, " "));
396
396
  e.data && t.push(N(e.data, " "));
397
397
  for (let n of e.colorizes) t.push(P(n, " "));
398
398
  for (let n of e.highlights) t.push(F(n, " "));
@@ -421,7 +421,7 @@ var U = /* @__PURE__ */ new Set([
421
421
  "heightMode",
422
422
  "aspectRatio",
423
423
  "fixedHeight"
424
- ]), W = /* @__PURE__ */ new Set(["sort"]), xt = /* @__PURE__ */ new Set([
424
+ ]), W = /* @__PURE__ */ new Set(["sort"]), St = /* @__PURE__ */ new Set([
425
425
  "text",
426
426
  "repeat",
427
427
  "textColor",
@@ -439,7 +439,7 @@ var U = /* @__PURE__ */ new Set([
439
439
  "circleSize",
440
440
  "circleStyle",
441
441
  "circleColor"
442
- ]), St = /* @__PURE__ */ new Set([
442
+ ]), Ct = /* @__PURE__ */ new Set([
443
443
  "start",
444
444
  "end",
445
445
  "repeat",
@@ -451,7 +451,7 @@ var U = /* @__PURE__ */ new Set([
451
451
  "direction",
452
452
  "text",
453
453
  "textColor"
454
- ]), Ct = /* @__PURE__ */ new Set([
454
+ ]), wt = /* @__PURE__ */ new Set([
455
455
  "text",
456
456
  "x",
457
457
  "y",
@@ -460,7 +460,7 @@ var U = /* @__PURE__ */ new Set([
460
460
  "maxWidth",
461
461
  "textOutline"
462
462
  ]);
463
- function wt(e, t) {
463
+ function Tt(e, t) {
464
464
  let n = e.length, r = t.length;
465
465
  if (n === 0) return r;
466
466
  if (r === 0) return n;
@@ -478,19 +478,19 @@ function wt(e, t) {
478
478
  function G(e, t) {
479
479
  let n, r = Infinity;
480
480
  for (let i of t) {
481
- let t = wt(e.toLowerCase(), i.toLowerCase());
481
+ let t = Tt(e.toLowerCase(), i.toLowerCase());
482
482
  t < r && (r = t, n = i);
483
483
  }
484
484
  if (n === void 0) return;
485
485
  let i = Math.max(1, Math.min(3, Math.floor(e.length / 2)));
486
486
  return r <= i ? n : void 0;
487
487
  }
488
- function Tt(e, t) {
488
+ function Et(e, t) {
489
489
  return e.find((e) => e.key === t);
490
490
  }
491
- function Et(e, t, n, r) {
491
+ function Dt(e, t, n, r) {
492
492
  let i = t.value, a = String(i).toLowerCase();
493
- if (e.type === m.Boolean) {
493
+ if (e.type === y.Boolean) {
494
494
  if (e.key === "valueLabels" && a === "percent" || i === !0 || i === !1 || a === "true" || a === "false") return;
495
495
  r.push({
496
496
  code: "invalid-boolean",
@@ -513,11 +513,11 @@ function Et(e, t, n, r) {
513
513
  }
514
514
  }
515
515
  function K(e, t, n, r) {
516
- let i = p(e), a = /* @__PURE__ */ new Set([...i.map((e) => e.key), ...U]);
516
+ let i = b(e), a = /* @__PURE__ */ new Set([...i.map((e) => e.key), ...U]);
517
517
  for (let o of t) {
518
518
  let t = `${n}.${o.key}`;
519
519
  if (U.has(o.key)) continue;
520
- let s = Tt(i, o.key);
520
+ let s = Et(i, o.key);
521
521
  if (!s) {
522
522
  r.push({
523
523
  code: "unknown-property",
@@ -527,25 +527,25 @@ function K(e, t, n, r) {
527
527
  });
528
528
  continue;
529
529
  }
530
- Et(s, o, t, r);
530
+ Dt(s, o, t, r);
531
531
  }
532
532
  }
533
- function Dt(e) {
534
- return e === f.Range ? St : e === f.Free ? Ct : xt;
535
- }
536
533
  function Ot(e) {
537
- return d[e];
534
+ return e === d.Range ? Ct : e === d.Free ? wt : St;
535
+ }
536
+ function kt(e) {
537
+ return p[e];
538
538
  }
539
539
  function q(e, t, n) {
540
540
  e.forEach((e, r) => {
541
- let i = e.kind ?? f.Point, a = Dt(i), o = Ot(i);
541
+ let i = e.kind ?? d.Point, a = Ot(i), o = kt(i);
542
542
  for (let i of e.properties) a.has(i.key) || n.push({
543
543
  code: "unknown-annotation-property",
544
544
  path: `${t}.${o}[${r}].${i.key}`,
545
545
  message: `Unknown ${o} property "${i.key}"; it will be silently ignored.`,
546
546
  suggestion: G(i.key, a)
547
547
  });
548
- let s = y(e.properties).get("repeat");
548
+ let s = v(e.properties).get("repeat");
549
549
  s !== void 0 && (s === "true" || s === "false" || s === !0 || s === !1 || typeof s == "number" && Number.isInteger(s) && s >= 1 || n.push({
550
550
  code: "invalid-annotation-repeat",
551
551
  message: `repeat must be false, true, or a positive integer (got ${String(s)})`,
@@ -563,8 +563,8 @@ function J(e, t, n) {
563
563
  });
564
564
  });
565
565
  }
566
- function kt(e) {
567
- let t = [], n = [], r = b(), i = r.includes(e.chartType);
566
+ function At(e) {
567
+ let t = [], n = [], r = f(), i = r.includes(e.chartType);
568
568
  i || t.push({
569
569
  code: "unknown-chart-type",
570
570
  path: "chartType",
@@ -576,15 +576,15 @@ function kt(e) {
576
576
  code: "missing-data",
577
577
  path: "data",
578
578
  message: e.data && e.data.entries.length === 0 ? "Data block is empty." : "Chart has no data."
579
- }), e.data && At(e.data.entries, n), e.scenes.forEach((n, r) => {
580
- jt(n, e.chartType, r, t);
579
+ }), e.data && jt(e.data.entries, n), e.scenes.forEach((n, r) => {
580
+ Mt(n, e.chartType, r, t);
581
581
  }), {
582
582
  valid: t.length === 0,
583
583
  errors: t,
584
584
  warnings: n
585
585
  };
586
586
  }
587
- function At(e, t) {
587
+ function jt(e, t) {
588
588
  let n = e.findIndex((e) => e.key === "series" && !e.quotedKey);
589
589
  if (n === -1) return;
590
590
  let r = e[n], i = r.values ?? [r.value];
@@ -600,25 +600,25 @@ function At(e, t) {
600
600
  suggestion: "Move the series row to the top of the data block."
601
601
  });
602
602
  }
603
- function jt(e, t, n, r) {
603
+ function Mt(e, t, n, r) {
604
604
  let i = `scene[${n}]`, a = e.properties.find((e) => e.key === "type")?.value, o = a == null ? t : String(a);
605
- a != null && !b().includes(o) ? r.push({
605
+ a != null && !f().includes(o) ? r.push({
606
606
  code: "unknown-chart-type",
607
607
  path: `${i}.type`,
608
608
  message: `Unknown chart type "${o}".`,
609
- suggestion: G(o, b())
609
+ suggestion: G(o, f())
610
610
  }) : K(o, e.properties, i, r), J(e.transforms, i, r), q(e.annotations, i, r);
611
611
  }
612
612
  //#endregion
613
613
  //#region src/samples/letter-frequency.bpc?raw
614
- var Mt = "chart bar-vertical {\n title = \"E is the most frequent letter in English\"\n description = \"How often each letter appears in typical English text\"\n byline = \"Pierre Romera\"\n source = \"Lewand, Cryptological Mathematics\"\n sourceUrl = \"https://en.wikipedia.org/wiki/Letter_frequency\"\n note = \"Based on analysis of 40,000 words from English prose\"\n colorPalette = \"London\"\n sort = descending\n\n highlight \"E\"\n\n data {\n \"E\" = 12.70\n \"T\" = 9.06\n \"A\" = 8.17\n \"O\" = 7.51\n \"I\" = 6.97\n \"N\" = 6.75\n \"S\" = 6.33\n \"H\" = 6.09\n \"R\" = 5.99\n \"D\" = 4.25\n }\n}\n", Nt = "chart bar-vertical {\n // the headline above the chart\n title = \"China emits more CO₂ than the US and India combined\"\n description = \"Annual emissions in billion tonnes, 2023\"\n source = \"Our World in Data\"\n sourceUrl = \"https://ourworldindata.org/co2-emissions\"\n\n // one row per country: \"label\" = value\n data {\n \"China\" = 12.17\n \"United States\" = 4.92\n \"India\" = 3.06\n \"Russia\" = 1.73\n \"Japan\" = 0.99\n \"Germany\" = 0.59\n }\n\n // highlight pops one bar in the accent color\n highlight \"China\"\n\n // an annotation points a callout at a single bar\n annotation \"India\" {\n text = \"Surpassed EU in 2023\"\n showLine = true\n anchorDirection = N\n textOffsetX = 66\n textOffsetY = -41\n lineStyle = curve-left\n showArrow = true\n lineTargetDistance = 26\n showCircle = false\n }\n}\n", Pt = "chart bar-horizontal {\n title = \"Mandarin has nearly twice as many native speakers as Spanish\"\n description = \"Number of native speakers worldwide, in millions\"\n source = \"Ethnologue\"\n sourceUrl = \"https://ethnologue.com\"\n byline = \"Pierre Romera\"\n sort = descending\n\n highlight \"Mandarin\"\n\n data {\n \"Mandarin\" = 988\n \"Spanish\" = 487\n \"English\" = 372\n \"Hindi\" = 347\n \"Bengali\" = 232\n \"Portuguese\" = 252\n \"Russian\" = 133\n \"Japanese\" = 124\n }\n}\n", Ft = "chart line-multi {\n title = \"China now buys more electric cars than the rest of the world combined\"\n description = \"Electric car sales by region, millions per year\"\n source = \"IEA Global EV Outlook 2024\"\n sourceUrl = \"https://www.iea.org/reports/global-ev-outlook-2024\"\n colorPalette = \"Maya\"\n tooltips = true\n\n data {\n series = \"China\",\"Europe\",\"United States\",\"Rest of world\"\n \"2018\" = 1.1,0.4,0.36,0.1\n \"2020\" = 1.3,1.4,0.30,0.2\n \"2021\" = 3.3,2.3,0.63,0.4\n \"2022\" = 6.0,2.7,1.0,0.7\n \"2023\" = 8.1,3.2,1.4,1.0\n }\n}\n", It = "chart bar-multi {\n title = \"USA tops Paris 2024 with 126 medals across all categories\"\n description = \"2024 Paris Summer Games — top six nations\"\n source = \"Olympics.com\"\n sourceUrl = \"https://olympics.com\"\n colors = \"#eeca3b, #c0c0c0, #cd7f32\"\n sort = descending\n\n data {\n series = \"Gold\",\"Silver\",\"Bronze\"\n \"USA\" = 40,44,42\n \"China\" = 40,27,24\n \"Japan\" = 20,12,13\n \"Great Britain\" = 14,22,29\n \"Australia\" = 18,19,16\n \"France\" = 16,26,22\n }\n}\n", Lt = "chart line {\n title = \"2024 was the hottest year on record\"\n description = \"Deviation from the 1951–1980 average, in °C\"\n source = \"NASA GISS\"\n sourceUrl = \"https://data.giss.nasa.gov/gistemp/\"\n tooltips = true\n crosshair = false\n lineSymbols = true\n\n data {\n \"1980\" = 0.26\n \"1985\" = 0.12\n \"1990\" = 0.45\n \"1995\" = 0.45\n \"2000\" = 0.39\n \"2005\" = 0.68\n \"2010\" = 0.73\n \"2015\" = 0.9\n \"2020\" = 1.01\n \"2024\" = 1.28\n }\n\n annotation \"2015\" {\n text = \"2015 Paris Agreement to limit global warming to 1.5°C \"\n maxWidth = 224\n showLine = true\n lineStyle = curve-right\n showArrow = true\n showCircle = true\n }\n}\n", Rt = "chart line {\n title = \"Bitcoin surged past $90,000 in 2024\"\n description = \"USD, year-end closing price\"\n source = \"CoinGecko\"\n sourceUrl = \"https://www.coingecko.com\"\n colors = \"#f7931a\"\n lineSymbols = true\n lineSymbolShowOn = \"all\"\n lineSymbolShape = \"diamond\"\n verticalNumberFormat = \",.0f\"\n tooltips = true\n\n annotation \"2021\" {\n text = \"All-time high cycle\"\n textOffsetY = -12\n showArrow = true\n }\n\n data {\n \"2016\" = 963\n \"2017\" = 14156\n \"2018\" = 3742\n \"2019\" = 7194\n \"2020\" = 29080\n \"2021\" = 46306\n \"2022\" = 16547\n \"2023\" = 42258\n \"2024\" = 93429\n }\n}\n", zt = "chart line-multi {\n title = \"The income share of the top 1% has surged since 1980\"\n description = \"Pre-tax national income captured by the top 1%, percent\"\n source = \"World Inequality Database\"\n sourceUrl = \"https://wid.world\"\n colorPalette = \"Egypt\"\n tooltips = true\n lineSymbols = true\n lineSymbolShowOn = \"all\"\n\n data {\n series = \"United States\",\"India\",\"China\",\"France\"\n \"1980\" = 10.4,7.5,6.6,7.5\n \"1990\" = 14.7,10.7,8.3,9.0\n \"2000\" = 17.3,10.5,10.5,11.3\n \"2010\" = 17.9,16.4,15.2,11.0\n \"2021\" = 19.9,22.1,15.7,12.7\n }\n\n scene \"US doubles\" {\n title = \"The US top 1% nearly doubled its income share since 1980\"\n highlight \"United States\"\n }\n\n scene \"India overtakes\" {\n title = \"India is now the most unequal of these major economies\"\n highlight \"India\"\n }\n\n scene \"France's modest rise\" {\n title = \"France's top 1% rose far less than the US or India\"\n highlight \"France\"\n }\n}\n", Bt = "chart pie {\n title = \"Asia is home to nearly 60% of the world's population\"\n description = \"Estimated share, 2024\"\n source = \"United Nations\"\n sourceUrl = \"https://population.un.org\"\n colorPalette = \"Klimt\"\n legendPosition = \"right\"\n tooltips = true\n\n data {\n \"Asia\" = 58.9\n \"Africa\" = 18.6\n \"Europe\" = 9.1\n \"Latin America\" = 8.1\n \"North America\" = 4.7\n }\n}\n", Vt = "chart bar-vertical {\n title = \"Brazil produces more coffee than the next three countries combined\"\n description = \"Million 60-kg bags, 2023/24 crop year\"\n source = \"USDA Foreign Agricultural Service\"\n sourceUrl = \"https://www.fas.usda.gov/data/coffee-world-markets-and-trade\"\n colorPalette = \"Harvey\"\n\n data {\n \"Brazil\" = 66.4\n \"Vietnam\" = 27.5\n \"Colombia\" = 12.76\n \"Ethiopia\" = 9.13\n \"Indonesia\" = 7.65\n \"Honduras\" = 5.5\n }\n\n highlight \"Brazil\"\n\n transform sort {\n column = \"value\"\n direction = descending\n }\n}\n", Ht = "chart donut {\n title = \"The richest 1% own more wealth than the entire bottom 90% combined\"\n description = \"Share of global wealth by group, 2021\"\n source = \"World Inequality Report 2022\"\n sourceUrl = \"https://wir2022.wid.world\"\n colorPalette = \"Imperator\"\n legendPosition = \"right\"\n displayAsPercentage = true\n tooltips = true\n\n data {\n \"Top 1%\" = 38\n \"Next 9%\" = 38\n \"Middle 40%\" = 22\n \"Bottom 50%\" = 2\n }\n\n scene \"Top 1% spotlight\" {\n title = \"The top 1% hold 38% of all global wealth\"\n description = \"Share of global wealth by group, 2021\"\n highlight \"Top 1%\"\n }\n\n scene \"Bottom half\" {\n title = \"The bottom half of humanity owns just 2%\"\n description = \"Share of global wealth by group, 2021\"\n highlight \"Bottom 50%\"\n }\n\n scene \"Income tells a softer story\" {\n title = \"Income is concentrated too — but less than wealth\"\n description = \"Share of global income by the same groups, 2021\"\n highlight \"Top 1%\"\n data {\n \"Top 1%\" = 19\n \"Next 9%\" = 33\n \"Middle 40%\" = 39\n \"Bottom 50%\" = 9\n }\n }\n}\n", Ut = "chart area {\n title = \"The US national debt has more than tripled since 2008\"\n description = \"Total federal debt outstanding, trillions of dollars\"\n source = \"U.S. Treasury, Fiscal Data\"\n sourceUrl = \"https://fiscaldata.treasury.gov\"\n\n annotation \"2008\" {\n text = \"Financial crisis\"\n showArrow = true\n textOffsetY = -14\n }\n\n data {\n \"2000\" = 5.7\n \"2004\" = 7.4\n \"2008\" = 10.0\n \"2012\" = 16.1\n \"2016\" = 19.6\n \"2020\" = 26.9\n \"2024\" = 35.5\n }\n}\n", Wt = "chart area-stacked {\n title = \"Renewables' share of global energy has more than doubled since 2000\"\n description = \"Share of global primary energy by source, 2000–2023\"\n source = \"Our World in Data\"\n sourceUrl = \"https://ourworldindata.org/energy-mix\"\n stackPercent = true\n areaSortMode = descending\n\n data {\n series = \"Coal\",\"Oil\",\"Gas\",\"Renewables\"\n \"2000\" = 27456,43017,23994,2997\n \"2005\" = 36201,47017,27439,3510\n \"2010\" = 42016,48193,31593,4868\n \"2015\" = 43695,51294,34780,6400\n \"2020\" = 42316,49101,38704,8569\n \"2023\" = 45319,54839,40151,10325\n }\n}\n", Gt = "chart column-stacked {\n title = \"Natural gas and renewables pushed coal off the US power grid\"\n description = \"Share of US electricity generation by source, percent\"\n source = \"U.S. Energy Information Administration\"\n sourceUrl = \"https://www.eia.gov/electricity\"\n stackMode = \"percent\"\n\n data {\n series = \"Coal\",\"Natural gas\",\"Nuclear\",\"Renewables\"\n \"2010\" = 45,24,20,10\n \"2015\" = 33,33,20,13\n \"2020\" = 19,39,20,20\n \"2023\" = 16,43,19,21\n }\n}\n", Kt = "chart bar-stacked {\n title = \"India has far more children than China, and a workforce nearly as large\"\n description = \"Millions of people, 2023\"\n source = \"UN Population Division\"\n sourceUrl = \"https://population.un.org\"\n colorPalette = \"London\"\n\n data {\n series = \"0-14\",\"15-64\",\"65+\"\n \"China\" = 232,988,200\n \"India\" = 354,978,97\n \"USA\" = 58,216,59\n \"Indonesia\" = 67,189,21\n \"Brazil\" = 43,148,24\n }\n}\n", qt = "chart area-stacked {\n title = \"EU subsidies to new members surged after enlargement\"\n description = \"Agricultural subsidies to post-socialist EU members, million euros\"\n source = \"Eurostat\"\n sourceUrl = \"https://ec.europa.eu/eurostat\"\n colorPalette = \"Enara\"\n interpolation = \"linear\"\n heightMode = \"aspect-ratio\"\n aspectRatio = \"1:1\"\n\n data {\n series = \"Indirect subsidies\",\"Direct subsidies\"\n \"2000\" = 370,800\n \"2001\" = 445,896\n \"2002\" = 567,816\n \"2003\" = 641,950\n \"2004\" = 1908,2434\n \"2005\" = 2234,3509\n \"2006\" = 2576,4356\n \"2007\" = 2467,5429\n \"2008\" = 2672,6655\n \"2009\" = 2474,7195\n \"2010\" = 2117,8207\n \"2011\" = 1863,9230\n \"2012\" = 1528,9191\n \"2013\" = 1251,10252\n \"2014\" = 1132,10987\n \"2015\" = 1687,10145\n }\n\n scene \"Indirect subsidies shrank\" {\n title = \"Indirect subsidies were cut under WTO pressure\"\n description = \"Subsidies tied to specific crops fell foul of World Trade Organization rules\"\n\n highlight \"Indirect subsidies\"\n }\n\n scene \"Direct subsidies dominate\" {\n title = \"Direct per-hectare payments now dominate\"\n description = \"The larger the fields, the more money farmers receive\"\n\n highlight \"Direct subsidies\"\n }\n\n scene \"Bulgaria: subsidies explode\" {\n title = \"Bulgarian farmers received almost nothing before 2007 accession\"\n description = \"More than three-quarters of Bulgarian subsidies are direct payments — the highest share among new members\"\n\n data {\n series = \"Indirect subsidies\",\"Direct subsidies\"\n \"2000\" = 0,5\n \"2001\" = 0,33\n \"2002\" = 0,48\n \"2003\" = 0,69\n \"2004\" = 0,67\n \"2005\" = 0,87\n \"2006\" = 0,57\n \"2007\" = 59,250\n \"2008\" = 75,484\n \"2009\" = 97,415\n \"2010\" = 79,466\n \"2011\" = 94,458\n \"2012\" = 120,617\n \"2013\" = 132,852\n \"2014\" = 143,821\n \"2015\" = 213,677\n }\n\n highlight \"Direct subsidies\"\n }\n\n scene \"Bulgarian farms grew\" {\n title = \"Average farm size in Bulgaria quadrupled\"\n description = \"Average farm size in hectares\"\n type = line\n\n data {\n \"2005\" = 5\n \"2007\" = 6\n \"2010\" = 12\n \"2013\" = 18\n }\n }\n\n scene \"Production rose\" {\n title = \"Bulgarian farm production rose from 3 to 4 billion euros\"\n description = \"Total production of Bulgarian farms, million euros\"\n type = area\n\n data {\n \"2000\" = 2933\n \"2001\" = 3240\n \"2002\" = 3051\n \"2003\" = 2816\n \"2004\" = 3049\n \"2005\" = 3011\n \"2006\" = 3111\n \"2007\" = 3038\n \"2008\" = 4148\n \"2009\" = 3437\n \"2010\" = 3486\n \"2011\" = 4038\n \"2012\" = 4161\n \"2013\" = 4115\n \"2014\" = 4138\n \"2015\" = 3915\n }\n }\n\n scene \"Cash crops replaced vegetables\" {\n title = \"Cash crops replaced vegetables in Bulgaria\"\n description = \"Production of Bulgarian farms, million euros\"\n type = area-stacked\n\n data {\n series = \"Vegetables\",\"Cash crops\",\"Other production\"\n \"2000\" = 464,615,1854\n \"2001\" = 458,777,2005\n \"2002\" = 577,850,1624\n \"2003\" = 539,818,1459\n \"2004\" = 483,1103,1463\n \"2005\" = 492,994,1525\n \"2006\" = 510,1083,1518\n \"2007\" = 436,936,1666\n \"2008\" = 541,2045,1563\n \"2009\" = 243,1553,1641\n \"2010\" = 184,2173,1128\n \"2011\" = 120,2853,1065\n \"2012\" = 117,2900,1144\n \"2013\" = 139,2802,1174\n \"2014\" = 143,3082,914\n \"2015\" = 144,2986,785\n }\n\n highlight \"Cash crops\"\n }\n\n scene \"Vegetables collapsed\" {\n title = \"Vegetable production fell by a factor of three\"\n description = \"A traditional Bulgarian cultivation shrank as subsidies favoured large fields\"\n\n highlight \"Vegetables\"\n }\n\n scene \"Every vegetable declined\" {\n title = \"Bulgarian vegetable production collapsed across the board\"\n description = \"Production volume indexed to 2001 = 100\"\n type = line-multi\n lineSymbols = false\n\n data {\n series = \"Cabbages\",\"Tomatoes\",\"Watermelons\",\"Carrots\",\"Onions\",\"Garlic\",\"Strawberries\"\n \"2001\" = 100,100,100,100,100,100,100\n \"2002\" = 79,90,124,64,106,95,100\n \"2003\" = 100,157,177,142,118,98,72\n \"2004\" = 84,87,83,245,124,138,74\n \"2005\" = 50,46,62,30,40,93,42\n \"2006\" = 52,78,113,95,56,80,56\n \"2007\" = 36,49,64,74,29,30,38\n \"2008\" = 47,49,66,97,44,29,55\n \"2009\" = 28,38,74,105,23,39,55\n \"2010\" = 57,42,51,76,53,57,37\n \"2011\" = 32,38,56,86,47,43,45\n \"2012\" = 34,34,46,69,29,43,31\n \"2013\" = 33,43,53,39,36,40,24\n \"2014\" = 31,44,28,69,37,8,27\n \"2015\" = 31,45,50,57,25,18,32\n }\n }\n\n scene \"Jobs disappeared\" {\n title = \"Family farmers disappeared while salaried ag jobs held steady\"\n description = \"EU agricultural employment, thousands of full-time equivalents\"\n type = line-multi\n lineSymbols = false\n\n data {\n series = \"Salaried workers\",\"Non-salaried workers\"\n \"2000\" = 2678,12194\n \"2001\" = 2598,11586\n \"2002\" = 2658,10795\n \"2003\" = 2563,10609\n \"2004\" = 2560,9999\n \"2005\" = 2501,10047\n \"2006\" = 2499,9782\n \"2007\" = 2437,9231\n \"2008\" = 2416,8971\n \"2009\" = 2348,8672\n \"2010\" = 2335,7808\n \"2011\" = 2322,7551\n \"2012\" = 2325,7501\n \"2013\" = 2297,7425\n \"2014\" = 2366,7183\n \"2015\" = 2413,6928\n \"2016\" = 2457,6741\n }\n\n highlight \"Non-salaried workers\"\n }\n}\n", Jt = "chart bar-horizontal {\n title = \"China emits more CO₂ than the US and India combined\"\n description = \"Annual emissions in billion tonnes, 2023\"\n source = \"Our World in Data\"\n sourceUrl = \"https://ourworldindata.org/co2-emissions\"\n byline = \"Pierre Romera\"\n\n data {\n \"China\" = 12.17\n \"United States\" = 4.92\n \"India\" = 3.06\n \"Russia\" = 1.73\n \"Japan\" = 0.99\n \"Germany\" = 0.59\n }\n\n scene \"China spotlight\" {\n title = \"China alone emits more than the US and India together\"\n highlight \"China\"\n }\n\n scene \"India rising\" {\n title = \"India passed the EU to become the third-largest emitter\"\n highlight \"India\"\n }\n\n scene \"Japan declining\" {\n title = \"Japan's emissions have fallen since their 2013 peak\"\n highlight \"Japan\"\n }\n\n scene \"Per capita reframe\" {\n title = \"Per person, Gulf states dwarf the biggest emitters\"\n description = \"CO₂ emissions per capita, tonnes per person, 2023\"\n highlight \"Qatar\"\n data {\n \"Qatar\" = 40.13\n \"United Arab Emirates\" = 19.77\n \"United States\" = 14.32\n \"China\" = 8.56\n \"India\" = 2.13\n }\n }\n}\n", Yt = "chart bar-split {\n title = \"CDU/CSU led German polls at 29 % ahead of the 2021 election\"\n description = \"How Germany would vote in the September 2021 federal election, according to polling in the previous June\"\n source = \"FG Wahlen\"\n sourceUrl = \"https://www.forschungsgruppe.de\"\n note = \"Margin of error at 10%: +/- 2 percentage points; at 40%: +/- 3 percentage points\"\n\n data {\n series = \"Poll\",\"High\",\"Low\"\n \"CDU/CSU\" = 29,32,27\n \"Greens\" = 22,25,20\n \"SPD\" = 14,16,12\n \"AfD\" = 10,12,8\n \"FDP\" = 10,12,8\n \"Left\" = 7,9,5\n }\n}\n", Xt = "chart bar-grouped {\n title = \"Asia Pacific holds more renewable capacity than all other regions combined\"\n description = \"Installed capacity in gigawatts (GW), 2023\"\n source = \"IRENA\"\n sourceUrl = \"https://www.irena.org/Publications/2024/Mar/Renewable-capacity-statistics-2024\"\n colorPalette = \"Folklore\"\n\n data {\n series = \"Solar\",\"Wind\",\"Hydro\"\n \"Asia Pacific\" = 870,520,650\n \"Europe\" = 290,260,230\n \"North America\" = 150,170,200\n \"Latin America\" = 50,40,190\n \"Africa\" = 12,9,40\n }\n}\n";
614
+ var Nt = "chart bar-vertical {\n title = \"E is the most frequent letter in English\"\n description = \"How often each letter appears in typical English text\"\n byline = \"Pierre Romera\"\n source = \"Lewand, Cryptological Mathematics\"\n sourceUrl = \"https://en.wikipedia.org/wiki/Letter_frequency\"\n note = \"Based on analysis of 40,000 words from English prose\"\n colorPalette = \"London\"\n sort = descending\n\n highlight \"E\"\n\n data {\n \"E\" = 12.70\n \"T\" = 9.06\n \"A\" = 8.17\n \"O\" = 7.51\n \"I\" = 6.97\n \"N\" = 6.75\n \"S\" = 6.33\n \"H\" = 6.09\n \"R\" = 5.99\n \"D\" = 4.25\n }\n}\n", Pt = "chart bar-vertical {\n // the headline above the chart\n title = \"China emits more CO₂ than the US and India combined\"\n description = \"Annual emissions in billion tonnes, 2023\"\n source = \"Our World in Data\"\n sourceUrl = \"https://ourworldindata.org/co2-emissions\"\n\n // one row per country: \"label\" = value\n data {\n \"China\" = 12.17\n \"United States\" = 4.92\n \"India\" = 3.06\n \"Russia\" = 1.73\n \"Japan\" = 0.99\n \"Germany\" = 0.59\n }\n\n // highlight pops one bar in the accent color\n highlight \"China\"\n\n // an annotation points a callout at a single bar\n annotation \"India\" {\n text = \"Surpassed EU in 2023\"\n showLine = true\n anchorDirection = N\n textOffsetX = 66\n textOffsetY = -41\n lineStyle = curve-left\n showArrow = true\n lineTargetDistance = 26\n showCircle = false\n }\n}\n", Ft = "chart bar-horizontal {\n title = \"Mandarin has nearly twice as many native speakers as Spanish\"\n description = \"Number of native speakers worldwide, in millions\"\n source = \"Ethnologue\"\n sourceUrl = \"https://ethnologue.com\"\n byline = \"Pierre Romera\"\n sort = descending\n\n highlight \"Mandarin\"\n\n data {\n \"Mandarin\" = 988\n \"Spanish\" = 487\n \"English\" = 372\n \"Hindi\" = 347\n \"Bengali\" = 232\n \"Portuguese\" = 252\n \"Russian\" = 133\n \"Japanese\" = 124\n }\n}\n", It = "chart line-multi {\n title = \"China now buys more electric cars than the rest of the world combined\"\n description = \"Electric car sales by region, millions per year\"\n source = \"IEA Global EV Outlook 2024\"\n sourceUrl = \"https://www.iea.org/reports/global-ev-outlook-2024\"\n colorPalette = \"Maya\"\n tooltips = true\n\n data {\n series = \"China\",\"Europe\",\"United States\",\"Rest of world\"\n \"2018\" = 1.1,0.4,0.36,0.1\n \"2020\" = 1.3,1.4,0.30,0.2\n \"2021\" = 3.3,2.3,0.63,0.4\n \"2022\" = 6.0,2.7,1.0,0.7\n \"2023\" = 8.1,3.2,1.4,1.0\n }\n}\n", Lt = "chart bar-multi {\n title = \"USA tops Paris 2024 with 126 medals across all categories\"\n description = \"2024 Paris Summer Games — top six nations\"\n source = \"Olympics.com\"\n sourceUrl = \"https://olympics.com\"\n colors = \"#eeca3b, #c0c0c0, #cd7f32\"\n sort = descending\n\n data {\n series = \"Gold\",\"Silver\",\"Bronze\"\n \"USA\" = 40,44,42\n \"China\" = 40,27,24\n \"Japan\" = 20,12,13\n \"Great Britain\" = 14,22,29\n \"Australia\" = 18,19,16\n \"France\" = 16,26,22\n }\n}\n", Rt = "chart line {\n title = \"2024 was the hottest year on record\"\n description = \"Deviation from the 1951–1980 average, in °C\"\n source = \"NASA GISS\"\n sourceUrl = \"https://data.giss.nasa.gov/gistemp/\"\n tooltips = true\n crosshair = false\n lineSymbols = true\n\n data {\n \"1980\" = 0.26\n \"1985\" = 0.12\n \"1990\" = 0.45\n \"1995\" = 0.45\n \"2000\" = 0.39\n \"2005\" = 0.68\n \"2010\" = 0.73\n \"2015\" = 0.9\n \"2020\" = 1.01\n \"2024\" = 1.28\n }\n\n annotation \"2015\" {\n text = \"2015 Paris Agreement to limit global warming to 1.5°C \"\n maxWidth = 224\n showLine = true\n lineStyle = curve-right\n showArrow = true\n showCircle = true\n }\n}\n", zt = "chart line {\n title = \"Bitcoin surged past $90,000 in 2024\"\n description = \"USD, year-end closing price\"\n source = \"CoinGecko\"\n sourceUrl = \"https://www.coingecko.com\"\n colors = \"#f7931a\"\n lineSymbols = true\n lineSymbolShowOn = \"all\"\n lineSymbolShape = \"diamond\"\n verticalNumberFormat = \",.0f\"\n tooltips = true\n\n annotation \"2021\" {\n text = \"All-time high cycle\"\n textOffsetY = -12\n showArrow = true\n }\n\n data {\n \"2016\" = 963\n \"2017\" = 14156\n \"2018\" = 3742\n \"2019\" = 7194\n \"2020\" = 29080\n \"2021\" = 46306\n \"2022\" = 16547\n \"2023\" = 42258\n \"2024\" = 93429\n }\n}\n", Bt = "chart line-multi {\n title = \"The income share of the top 1% has surged since 1980\"\n description = \"Pre-tax national income captured by the top 1%, percent\"\n source = \"World Inequality Database\"\n sourceUrl = \"https://wid.world\"\n colorPalette = \"Egypt\"\n tooltips = true\n lineSymbols = true\n lineSymbolShowOn = \"all\"\n\n data {\n series = \"United States\",\"India\",\"China\",\"France\"\n \"1980\" = 10.4,7.5,6.6,7.5\n \"1990\" = 14.7,10.7,8.3,9.0\n \"2000\" = 17.3,10.5,10.5,11.3\n \"2010\" = 17.9,16.4,15.2,11.0\n \"2021\" = 19.9,22.1,15.7,12.7\n }\n\n scene \"US doubles\" {\n title = \"The US top 1% nearly doubled its income share since 1980\"\n highlight \"United States\"\n }\n\n scene \"India overtakes\" {\n title = \"India is now the most unequal of these major economies\"\n highlight \"India\"\n }\n\n scene \"France's modest rise\" {\n title = \"France's top 1% rose far less than the US or India\"\n highlight \"France\"\n }\n}\n", Vt = "chart pie {\n title = \"Asia is home to nearly 60% of the world's population\"\n description = \"Estimated share, 2024\"\n source = \"United Nations\"\n sourceUrl = \"https://population.un.org\"\n colorPalette = \"Klimt\"\n legendPosition = \"right\"\n tooltips = true\n\n data {\n \"Asia\" = 58.9\n \"Africa\" = 18.6\n \"Europe\" = 9.1\n \"Latin America\" = 8.1\n \"North America\" = 4.7\n }\n}\n", Ht = "chart bar-vertical {\n title = \"Brazil produces more coffee than the next three countries combined\"\n description = \"Million 60-kg bags, 2023/24 crop year\"\n source = \"USDA Foreign Agricultural Service\"\n sourceUrl = \"https://www.fas.usda.gov/data/coffee-world-markets-and-trade\"\n colorPalette = \"Harvey\"\n\n data {\n \"Brazil\" = 66.4\n \"Vietnam\" = 27.5\n \"Colombia\" = 12.76\n \"Ethiopia\" = 9.13\n \"Indonesia\" = 7.65\n \"Honduras\" = 5.5\n }\n\n highlight \"Brazil\"\n\n transform sort {\n column = \"value\"\n direction = descending\n }\n}\n", Ut = "chart donut {\n title = \"The richest 1% own more wealth than the entire bottom 90% combined\"\n description = \"Share of global wealth by group, 2021\"\n source = \"World Inequality Report 2022\"\n sourceUrl = \"https://wir2022.wid.world\"\n colorPalette = \"Imperator\"\n legendPosition = \"right\"\n displayAsPercentage = true\n tooltips = true\n\n data {\n \"Top 1%\" = 38\n \"Next 9%\" = 38\n \"Middle 40%\" = 22\n \"Bottom 50%\" = 2\n }\n\n scene \"Top 1% spotlight\" {\n title = \"The top 1% hold 38% of all global wealth\"\n description = \"Share of global wealth by group, 2021\"\n highlight \"Top 1%\"\n }\n\n scene \"Bottom half\" {\n title = \"The bottom half of humanity owns just 2%\"\n description = \"Share of global wealth by group, 2021\"\n highlight \"Bottom 50%\"\n }\n\n scene \"Income tells a softer story\" {\n title = \"Income is concentrated too — but less than wealth\"\n description = \"Share of global income by the same groups, 2021\"\n highlight \"Top 1%\"\n data {\n \"Top 1%\" = 19\n \"Next 9%\" = 33\n \"Middle 40%\" = 39\n \"Bottom 50%\" = 9\n }\n }\n}\n", Wt = "chart area {\n title = \"The US national debt has more than tripled since 2008\"\n description = \"Total federal debt outstanding, trillions of dollars\"\n source = \"U.S. Treasury, Fiscal Data\"\n sourceUrl = \"https://fiscaldata.treasury.gov\"\n\n annotation \"2008\" {\n text = \"Financial crisis\"\n showArrow = true\n textOffsetY = -14\n }\n\n data {\n \"2000\" = 5.7\n \"2004\" = 7.4\n \"2008\" = 10.0\n \"2012\" = 16.1\n \"2016\" = 19.6\n \"2020\" = 26.9\n \"2024\" = 35.5\n }\n}\n", Gt = "chart area-stacked {\n title = \"Renewables' share of global energy has more than doubled since 2000\"\n description = \"Share of global primary energy by source, 2000–2023\"\n source = \"Our World in Data\"\n sourceUrl = \"https://ourworldindata.org/energy-mix\"\n stackPercent = true\n areaSortMode = descending\n\n data {\n series = \"Coal\",\"Oil\",\"Gas\",\"Renewables\"\n \"2000\" = 27456,43017,23994,2997\n \"2005\" = 36201,47017,27439,3510\n \"2010\" = 42016,48193,31593,4868\n \"2015\" = 43695,51294,34780,6400\n \"2020\" = 42316,49101,38704,8569\n \"2023\" = 45319,54839,40151,10325\n }\n}\n", Kt = "chart column-stacked {\n title = \"Natural gas and renewables pushed coal off the US power grid\"\n description = \"Share of US electricity generation by source, percent\"\n source = \"U.S. Energy Information Administration\"\n sourceUrl = \"https://www.eia.gov/electricity\"\n stackMode = \"percent\"\n\n data {\n series = \"Coal\",\"Natural gas\",\"Nuclear\",\"Renewables\"\n \"2010\" = 45,24,20,10\n \"2015\" = 33,33,20,13\n \"2020\" = 19,39,20,20\n \"2023\" = 16,43,19,21\n }\n}\n", qt = "chart bar-stacked {\n title = \"India has far more children than China, and a workforce nearly as large\"\n description = \"Millions of people, 2023\"\n source = \"UN Population Division\"\n sourceUrl = \"https://population.un.org\"\n colorPalette = \"London\"\n\n data {\n series = \"0-14\",\"15-64\",\"65+\"\n \"China\" = 232,988,200\n \"India\" = 354,978,97\n \"USA\" = 58,216,59\n \"Indonesia\" = 67,189,21\n \"Brazil\" = 43,148,24\n }\n}\n", Jt = "chart area-stacked {\n title = \"EU subsidies to new members surged after enlargement\"\n description = \"Agricultural subsidies to post-socialist EU members, million euros\"\n source = \"Eurostat\"\n sourceUrl = \"https://ec.europa.eu/eurostat\"\n colorPalette = \"Enara\"\n interpolation = \"linear\"\n heightMode = \"aspect-ratio\"\n aspectRatio = \"1:1\"\n\n data {\n series = \"Indirect subsidies\",\"Direct subsidies\"\n \"2000\" = 370,800\n \"2001\" = 445,896\n \"2002\" = 567,816\n \"2003\" = 641,950\n \"2004\" = 1908,2434\n \"2005\" = 2234,3509\n \"2006\" = 2576,4356\n \"2007\" = 2467,5429\n \"2008\" = 2672,6655\n \"2009\" = 2474,7195\n \"2010\" = 2117,8207\n \"2011\" = 1863,9230\n \"2012\" = 1528,9191\n \"2013\" = 1251,10252\n \"2014\" = 1132,10987\n \"2015\" = 1687,10145\n }\n\n scene \"Indirect subsidies shrank\" {\n title = \"Indirect subsidies were cut under WTO pressure\"\n description = \"Subsidies tied to specific crops fell foul of World Trade Organization rules\"\n\n highlight \"Indirect subsidies\"\n }\n\n scene \"Direct subsidies dominate\" {\n title = \"Direct per-hectare payments now dominate\"\n description = \"The larger the fields, the more money farmers receive\"\n\n highlight \"Direct subsidies\"\n }\n\n scene \"Bulgaria: subsidies explode\" {\n title = \"Bulgarian farmers received almost nothing before 2007 accession\"\n description = \"More than three-quarters of Bulgarian subsidies are direct payments — the highest share among new members\"\n\n data {\n series = \"Indirect subsidies\",\"Direct subsidies\"\n \"2000\" = 0,5\n \"2001\" = 0,33\n \"2002\" = 0,48\n \"2003\" = 0,69\n \"2004\" = 0,67\n \"2005\" = 0,87\n \"2006\" = 0,57\n \"2007\" = 59,250\n \"2008\" = 75,484\n \"2009\" = 97,415\n \"2010\" = 79,466\n \"2011\" = 94,458\n \"2012\" = 120,617\n \"2013\" = 132,852\n \"2014\" = 143,821\n \"2015\" = 213,677\n }\n\n highlight \"Direct subsidies\"\n }\n\n scene \"Bulgarian farms grew\" {\n title = \"Average farm size in Bulgaria quadrupled\"\n description = \"Average farm size in hectares\"\n type = line\n\n data {\n \"2005\" = 5\n \"2007\" = 6\n \"2010\" = 12\n \"2013\" = 18\n }\n }\n\n scene \"Production rose\" {\n title = \"Bulgarian farm production rose from 3 to 4 billion euros\"\n description = \"Total production of Bulgarian farms, million euros\"\n type = area\n\n data {\n \"2000\" = 2933\n \"2001\" = 3240\n \"2002\" = 3051\n \"2003\" = 2816\n \"2004\" = 3049\n \"2005\" = 3011\n \"2006\" = 3111\n \"2007\" = 3038\n \"2008\" = 4148\n \"2009\" = 3437\n \"2010\" = 3486\n \"2011\" = 4038\n \"2012\" = 4161\n \"2013\" = 4115\n \"2014\" = 4138\n \"2015\" = 3915\n }\n }\n\n scene \"Cash crops replaced vegetables\" {\n title = \"Cash crops replaced vegetables in Bulgaria\"\n description = \"Production of Bulgarian farms, million euros\"\n type = area-stacked\n\n data {\n series = \"Vegetables\",\"Cash crops\",\"Other production\"\n \"2000\" = 464,615,1854\n \"2001\" = 458,777,2005\n \"2002\" = 577,850,1624\n \"2003\" = 539,818,1459\n \"2004\" = 483,1103,1463\n \"2005\" = 492,994,1525\n \"2006\" = 510,1083,1518\n \"2007\" = 436,936,1666\n \"2008\" = 541,2045,1563\n \"2009\" = 243,1553,1641\n \"2010\" = 184,2173,1128\n \"2011\" = 120,2853,1065\n \"2012\" = 117,2900,1144\n \"2013\" = 139,2802,1174\n \"2014\" = 143,3082,914\n \"2015\" = 144,2986,785\n }\n\n highlight \"Cash crops\"\n }\n\n scene \"Vegetables collapsed\" {\n title = \"Vegetable production fell by a factor of three\"\n description = \"A traditional Bulgarian cultivation shrank as subsidies favoured large fields\"\n\n highlight \"Vegetables\"\n }\n\n scene \"Every vegetable declined\" {\n title = \"Bulgarian vegetable production collapsed across the board\"\n description = \"Production volume indexed to 2001 = 100\"\n type = line-multi\n lineSymbols = false\n\n data {\n series = \"Cabbages\",\"Tomatoes\",\"Watermelons\",\"Carrots\",\"Onions\",\"Garlic\",\"Strawberries\"\n \"2001\" = 100,100,100,100,100,100,100\n \"2002\" = 79,90,124,64,106,95,100\n \"2003\" = 100,157,177,142,118,98,72\n \"2004\" = 84,87,83,245,124,138,74\n \"2005\" = 50,46,62,30,40,93,42\n \"2006\" = 52,78,113,95,56,80,56\n \"2007\" = 36,49,64,74,29,30,38\n \"2008\" = 47,49,66,97,44,29,55\n \"2009\" = 28,38,74,105,23,39,55\n \"2010\" = 57,42,51,76,53,57,37\n \"2011\" = 32,38,56,86,47,43,45\n \"2012\" = 34,34,46,69,29,43,31\n \"2013\" = 33,43,53,39,36,40,24\n \"2014\" = 31,44,28,69,37,8,27\n \"2015\" = 31,45,50,57,25,18,32\n }\n }\n\n scene \"Jobs disappeared\" {\n title = \"Family farmers disappeared while salaried ag jobs held steady\"\n description = \"EU agricultural employment, thousands of full-time equivalents\"\n type = line-multi\n lineSymbols = false\n\n data {\n series = \"Salaried workers\",\"Non-salaried workers\"\n \"2000\" = 2678,12194\n \"2001\" = 2598,11586\n \"2002\" = 2658,10795\n \"2003\" = 2563,10609\n \"2004\" = 2560,9999\n \"2005\" = 2501,10047\n \"2006\" = 2499,9782\n \"2007\" = 2437,9231\n \"2008\" = 2416,8971\n \"2009\" = 2348,8672\n \"2010\" = 2335,7808\n \"2011\" = 2322,7551\n \"2012\" = 2325,7501\n \"2013\" = 2297,7425\n \"2014\" = 2366,7183\n \"2015\" = 2413,6928\n \"2016\" = 2457,6741\n }\n\n highlight \"Non-salaried workers\"\n }\n}\n", Yt = "chart bar-horizontal {\n title = \"China emits more CO₂ than the US and India combined\"\n description = \"Annual emissions in billion tonnes, 2023\"\n source = \"Our World in Data\"\n sourceUrl = \"https://ourworldindata.org/co2-emissions\"\n byline = \"Pierre Romera\"\n\n data {\n \"China\" = 12.17\n \"United States\" = 4.92\n \"India\" = 3.06\n \"Russia\" = 1.73\n \"Japan\" = 0.99\n \"Germany\" = 0.59\n }\n\n scene \"China spotlight\" {\n title = \"China alone emits more than the US and India together\"\n highlight \"China\"\n }\n\n scene \"India rising\" {\n title = \"India passed the EU to become the third-largest emitter\"\n highlight \"India\"\n }\n\n scene \"Japan declining\" {\n title = \"Japan's emissions have fallen since their 2013 peak\"\n highlight \"Japan\"\n }\n\n scene \"Per capita reframe\" {\n title = \"Per person, Gulf states dwarf the biggest emitters\"\n description = \"CO₂ emissions per capita, tonnes per person, 2023\"\n highlight \"Qatar\"\n data {\n \"Qatar\" = 40.13\n \"United Arab Emirates\" = 19.77\n \"United States\" = 14.32\n \"China\" = 8.56\n \"India\" = 2.13\n }\n }\n}\n", Xt = "chart bar-split {\n title = \"CDU/CSU led German polls at 29 % ahead of the 2021 election\"\n description = \"How Germany would vote in the September 2021 federal election, according to polling in the previous June\"\n source = \"FG Wahlen\"\n sourceUrl = \"https://www.forschungsgruppe.de\"\n note = \"Margin of error at 10%: +/- 2 percentage points; at 40%: +/- 3 percentage points\"\n\n data {\n series = \"Poll\",\"High\",\"Low\"\n \"CDU/CSU\" = 29,32,27\n \"Greens\" = 22,25,20\n \"SPD\" = 14,16,12\n \"AfD\" = 10,12,8\n \"FDP\" = 10,12,8\n \"Left\" = 7,9,5\n }\n}\n", Zt = "chart bar-grouped {\n title = \"Asia Pacific holds more renewable capacity than all other regions combined\"\n description = \"Installed capacity in gigawatts (GW), 2023\"\n source = \"IRENA\"\n sourceUrl = \"https://www.irena.org/Publications/2024/Mar/Renewable-capacity-statistics-2024\"\n colorPalette = \"Folklore\"\n\n data {\n series = \"Solar\",\"Wind\",\"Hydro\"\n \"Asia Pacific\" = 870,520,650\n \"Europe\" = 290,260,230\n \"North America\" = 150,170,200\n \"Latin America\" = 50,40,190\n \"Africa\" = 12,9,40\n }\n}\n";
615
615
  //#endregion
616
616
  //#region src/samples.ts
617
617
  function Y(e, t) {
618
618
  let n = e.properties.find((e) => e.key === t);
619
619
  return n ? String(n.value) : "";
620
620
  }
621
- function Zt(e) {
621
+ function Qt(e) {
622
622
  if (!e.data) return "";
623
623
  let t = e.data.entries, n = t.find((e) => e.key === "series" && !e.quotedKey);
624
624
  return n ? [["category", ...String(n.value).split(",")].join(" "), ...t.filter((e) => !(e.key === "series" && !e.quotedKey)).map((e) => {
@@ -626,59 +626,59 @@ function Zt(e) {
626
626
  return [e.key, ...t].join(" ");
627
627
  })].join("\n") : [["label", "value"].join(" "), ...t.map((e) => [e.key, String(e.value)].join(" "))].join("\n");
628
628
  }
629
- function X(e) {
629
+ function $t(e) {
630
630
  if (!e.data) return "";
631
631
  let t = e.data.entries, n = t.find((e) => e.key === "series" && !e.quotedKey);
632
632
  return n ? [`series = "${String(n.value)}"`, ...t.filter((e) => !(e.key === "series" && !e.quotedKey)).map((e) => `"${e.key}" = "${String(e.value)}"`)].join("\n") : t.map((e) => `"${e.key}" = ${String(e.value)}`).join("\n");
633
633
  }
634
- function Z(e, t) {
634
+ function X(e, t) {
635
635
  let n = g(t);
636
636
  return {
637
637
  id: e,
638
638
  title: Y(n, "title"),
639
639
  description: Y(n, "description"),
640
640
  chartType: n.chartType,
641
- tsvData: Zt(n),
642
- serializedData: X(n),
641
+ tsvData: Qt(n),
642
+ serializedData: $t(n),
643
643
  dsl: t
644
644
  };
645
645
  }
646
- var Qt = [
647
- Z("letter-frequency", Mt),
648
- Z("co2-emissions", Nt),
649
- Z("coffee-production", Vt),
650
- Z("spoken-languages", Pt),
651
- Z("quarterly-revenue", Ft),
652
- Z("medal-count", It),
653
- Z("temperature-anomaly", Lt),
654
- Z("bitcoin-price", Rt),
655
- Z("unemployment-rates", zt),
656
- Z("browser-market", Ht),
657
- Z("world-population", Bt),
658
- Z("stock-price-area", Ut),
659
- Z("energy-mix-stacked-area", Wt),
660
- Z("quarterly-stacked-columns", Gt),
661
- Z("population-stacked-bar", Kt),
662
- Z("election-polls", Yt),
663
- Z("renewable-capacity", Xt),
664
- Z("farm-compass", qt),
665
- Z("co2-emissions-story", Jt)
666
- ], Q = class extends Error {
646
+ var en = [
647
+ X("letter-frequency", Nt),
648
+ X("co2-emissions", Pt),
649
+ X("coffee-production", Ht),
650
+ X("spoken-languages", Ft),
651
+ X("quarterly-revenue", It),
652
+ X("medal-count", Lt),
653
+ X("temperature-anomaly", Rt),
654
+ X("bitcoin-price", zt),
655
+ X("unemployment-rates", Bt),
656
+ X("browser-market", Ut),
657
+ X("world-population", Vt),
658
+ X("stock-price-area", Wt),
659
+ X("energy-mix-stacked-area", Gt),
660
+ X("quarterly-stacked-columns", Kt),
661
+ X("population-stacked-bar", qt),
662
+ X("election-polls", Xt),
663
+ X("renewable-capacity", Zt),
664
+ X("farm-compass", Jt),
665
+ X("co2-emissions-story", Yt)
666
+ ], Z = class extends Error {
667
667
  constructor(e, t) {
668
668
  super(e, t), this.name = "ChartParseError";
669
669
  }
670
- }, $ = class extends Error {
670
+ }, Q = class extends Error {
671
671
  constructor(e = "PNG export is only available in Node. Use toSvg() in the browser.") {
672
672
  super(e), this.name = "PngBrowserUnsupportedError";
673
673
  }
674
- }, $t = class extends Error {
674
+ }, tn = class extends Error {
675
675
  constructor(e) {
676
676
  super(e), this.name = "MissingNodeRenderDepsError";
677
677
  }
678
678
  };
679
679
  //#endregion
680
680
  //#region src/render/backends/dom-backend.ts
681
- function en() {
681
+ function nn() {
682
682
  return {
683
683
  kind: "dom",
684
684
  createContainer(e, t) {
@@ -689,7 +689,7 @@ function en() {
689
689
  };
690
690
  },
691
691
  renderToContainer(e, t, n) {
692
- v(e, t, {
692
+ _(e, t, {
693
693
  sceneIndex: n.sceneIndex,
694
694
  thumbnail: n.thumbnail ?? !1,
695
695
  transition: !1,
@@ -708,30 +708,30 @@ function en() {
708
708
  throw Error("dom-backend: renderToContainer produced no frame");
709
709
  },
710
710
  rasterizePng() {
711
- return Promise.reject(new $());
711
+ return Promise.reject(new Q());
712
712
  }
713
713
  };
714
714
  }
715
715
  //#endregion
716
716
  //#region src/render/public-render.ts
717
- var tn = 640, nn = 400;
718
- function rn() {
717
+ var rn = 640, an = 400;
718
+ function $() {
719
719
  return typeof document < "u" && typeof document.createElement == "function";
720
720
  }
721
- async function an() {
722
- return rn() ? en() : (await import("@blueprint-chart/lib/internal/node-backend")).createNodeBackend();
721
+ async function on() {
722
+ return $() ? nn() : (await import("@blueprint-chart/lib/internal/node-backend")).createNodeBackend();
723
723
  }
724
- async function on(e, t = {}) {
724
+ async function sn(e, t = {}) {
725
725
  let n;
726
726
  try {
727
- n = h(g(e));
727
+ n = m(g(e));
728
728
  } catch (e) {
729
- throw new Q(e instanceof Error ? e.message : String(e), { cause: e });
729
+ throw new Z(e instanceof Error ? e.message : String(e), { cause: e });
730
730
  }
731
- let r = await an(), i = t.frame ?? !0, a = {
731
+ let r = await on(), i = t.frame ?? !0, a = {
732
732
  sceneIndex: t.scene,
733
- width: t.width ?? tn,
734
- height: t.height ?? nn
733
+ width: t.width ?? rn,
734
+ height: t.height ?? an
735
735
  };
736
736
  function o(e) {
737
737
  r.renderToContainer(e, n, {
@@ -782,4 +782,4 @@ async function on(e, t = {}) {
782
782
  return s;
783
783
  }
784
784
  //#endregion
785
- export { d as ANNOTATION_KIND_KEYWORD, ge as Anchor, f as AnnotationKind, ce as AnnotationLineStyle, e as AxisDirection, t as BC_TRANSITION_NAME, m as ChartOptionType, Q as ChartParseError, qe as ChartType, Le as CompassDirection, Ue as CrosshairDirection, Me as CrosshairStyle, ie as DEFAULT_BAR_GAP, be as DirectLabelMode, ze as DslNodeType, Ge as FrameSizing, Ce as GridStyle, Ie as Interpolation, Ye as LabelPosition, Te as LabelRotation, De as LegendPosition, Be as LineStyle, $t as MissingNodeRenderDepsError, _ as Orientation, $ as PngBrowserUnsupportedError, je as RangeAnchor, ke as ScaleType, oe as SceneTransition, ve as SortDirection, Ze as SortMode, nt as StackMode, xe as StrokeStyle, et as SymbolShape, de as SymbolShowOn, i as SymbolStyle, $e as TickPosition, pe as ValueLabelPosition, he as adjustColorsForBackground, h as astToDefinition, _e as buildChartOptions, it as buildSrcdoc, pt as checkCvdColors, S as classifyIntent, rt as commitFadeOut, bt as compactSerialize, yt as compactSerializeDeep, ye as convertAnnotations, Re as convertAreaFills, We as convertColorizes, Se as convertHighlights, Fe as convertSeriesOverrides, me as createCanvas, ut as createCvdSvgFilter, te as createFrame, Je as dataEntriesToString, we as extractChartTypeOptions, Ee as extractSceneOverrides, n as fadeIn, o as featureJoin, Ne as getCachedChart, tt as getChart, p as getChartOptions, Ae as getChartTypeDefaults, D as getCvdFilterId, Pe as getSceneTransition, u as getTransitionDuration, r as isSeriesHidden, b as listCharts, se as listPalettes, g as parse, Xe as parseData, y as propertyMap, ct as recommendCharts, ue as registerChart, on as render, Ke as renderBpc, v as renderChart, re as renderHorizontalAxis, ee as renderLegend, le as renderVerticalAxis, c as resolveBackgroundColor, ae as resolveBarGapPadding, Oe as resolveChartTypeOptions, s as resolvePalette, He as resolveScene, Qe as resolveSeriesColor, fe as resolveSeriesInterpolation, Qt as samples, gt as serialize, T as shapeOf, k as simulateCvdColor, l as snapshotForFadeOut, a as snapshotLiveAttrs, kt as validateChart, ne as wcagContrastRatio, Ve as wcagLevel };
785
+ export { p as ANNOTATION_KIND_KEYWORD, ge as Anchor, d as AnnotationKind, e as AnnotationLineStyle, De as AxisDirection, Fe as BC_TRANSITION_NAME, y as ChartOptionType, Z as ChartParseError, ze as ChartType, Ge as CompassDirection, Pe as CrosshairDirection, be as CrosshairStyle, ae as DEFAULT_BAR_GAP, Ve as DirectLabelMode, qe as DslNodeType, we as FrameSizing, h as GridStyle, Xe as Interpolation, Ee as LabelPosition, ke as LabelRotation, He as LegendPosition, Re as LineStyle, tn as MissingNodeRenderDepsError, Ne as Orientation, Q as PngBrowserUnsupportedError, je as RangeAnchor, ve as ScaleType, Ie as SceneTransition, Qe as SortDirection, rt as SortMode, Se as StackMode, tt as StrokeStyle, le as SymbolShape, i as SymbolShowOn, et as SymbolStyle, de as TickPosition, s as ValueLabelPosition, l as adjustColorsForBackground, m as astToDefinition, _e as buildChartOptions, at as buildSrcdoc, mt as checkCvdColors, S as classifyIntent, n as commitFadeOut, xt as compactSerialize, bt as compactSerializeDeep, ye as convertAnnotations, Be as convertAreaFills, Ke as convertColorizes, Ce as convertHighlights, Le as convertSeriesOverrides, me as createCanvas, dt as createCvdSvgFilter, he as createFrame, Ye as dataEntriesToString, Te as extractChartTypeOptions, Oe as extractSceneOverrides, pe as fadeIn, a as featureJoin, ie as getCachedChart, xe as getChart, b as getChartOptions, Me as getChartTypeDefaults, D as getCvdFilterId, t as getSceneTransition, ee as getTransitionDuration, $e as isSeriesHidden, f as listCharts, c as listPalettes, g as parse, Ze as parseData, v as propertyMap, lt as recommendCharts, r as registerChart, sn as render, Je as renderBpc, _ as renderChart, ce as renderHorizontalAxis, re as renderLegend, it as renderVerticalAxis, ne as resolveBackgroundColor, se as resolveBarGapPadding, Ae as resolveChartTypeOptions, te as resolvePalette, We as resolveScene, ue as resolveSeriesColor, o as resolveSeriesInterpolation, en as samples, _t as serialize, T as shapeOf, k as simulateCvdColor, fe as snapshotForFadeOut, oe as snapshotLiveAttrs, nt as stripDigitGroupSpaces, At as validateChart, Ue as wcagContrastRatio, u as wcagLevel };