@xiee/utils 1.14.85 → 1.14.86

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/css/lt-plot.css CHANGED
@@ -14,8 +14,10 @@
14
14
  .lt-eb {
15
15
  position: relative;
16
16
  vertical-align: middle;
17
- line { stroke: #888; }
18
- circle { fill: #333; }
17
+ /* default only series without a per-series stroke=/fill= attribute, so that
18
+ attribute still shows; override either via that attr or a `.lt-eb` rule */
19
+ line:not([stroke]):not(.lt-eb-ref) { stroke: #888; }
20
+ circle:not([fill]) { fill: #333; }
19
21
  .lt-eb-ref { stroke: #ccc; }
20
22
  }
21
23
  .lt-eb-axis {
@@ -39,7 +41,7 @@
39
41
  attribute still shows; override either via `color` or `.lt-dot circle` */
40
42
  circle:not([fill]) { fill: currentColor; }
41
43
  }
42
- .lt-dot-legend {
44
+ .lt-plot-legend {
43
45
  margin-top: 3px; /* small gap below the axis, since the cell has no padding */
44
46
  font-size: 11px;
45
47
  color: #666;
@@ -1,2 +1,2 @@
1
- .lt-table{& .lt-eb-cell{text-align:left;padding:0;position:relative}& .lt-eb-grid-bg{position:absolute;top:0;left:0;& line{stroke:#eee}}& .lt-eb{vertical-align:middle;position:relative;& line{stroke:#888}& circle{fill:#333}& .lt-eb-ref{stroke:#ccc}}& .lt-eb-axis{margin-top:3px;display:block;& line{stroke:#888}& text{fill:#666;font-size:11px}& .lt-eb-axis-label{fill:#333;font-size:12px}}& .lt-spark{vertical-align:middle;color:#4682b4;& .lt-spark-line{fill:none;stroke:currentColor;stroke-width:1px}& .lt-spark-bar{fill:currentColor}}& .lt-dot{vertical-align:middle;color:#333;position:relative;& circle:not([fill]){fill:currentColor}}& .lt-dot-legend{color:#666;margin-top:3px;font-size:11px;& i{vertical-align:middle;border-radius:50%;width:8px;height:8px;margin-right:2px;display:inline-block}& span{white-space:nowrap;margin-right:6px}}}
1
+ .lt-table{& .lt-eb-cell{text-align:left;padding:0;position:relative}& .lt-eb-grid-bg{position:absolute;top:0;left:0;& line{stroke:#eee}}& .lt-eb{vertical-align:middle;position:relative;& line:not([stroke]):not(.lt-eb-ref){stroke:#888}& circle:not([fill]){fill:#333}& .lt-eb-ref{stroke:#ccc}}& .lt-eb-axis{margin-top:3px;display:block;& line{stroke:#888}& text{fill:#666;font-size:11px}& .lt-eb-axis-label{fill:#333;font-size:12px}}& .lt-spark{vertical-align:middle;color:#4682b4;& .lt-spark-line{fill:none;stroke:currentColor;stroke-width:1px}& .lt-spark-bar{fill:currentColor}}& .lt-dot{vertical-align:middle;color:#333;position:relative;& circle:not([fill]){fill:currentColor}}& .lt-plot-legend{color:#666;margin-top:3px;font-size:11px;& i{vertical-align:middle;border-radius:50%;width:8px;height:8px;margin-right:2px;display:inline-block}& span{white-space:nowrap;margin-right:6px}}}
2
2
  /*# sourceMappingURL=lt-plot.min.css.map */
@@ -1 +1 @@
1
- {"version":3,"mappings":"AACA,UACE,0DAKA,gDAIE,oBAEF,iDAGE,mBACA,mBACA,0BAEF,2CAGE,mBACA,gCACA,8CAEF,gDAGE,gEACA,mCAEF,6DAME,wCAEF,0DAIE,uGAQA","sources":["lt-plot.css"],"sourcesContent":["/* lt-plot.css — styles for inline graphics cells (see lt-plot.js). */\n.lt-table {\n .lt-eb-cell {\n position: relative;\n padding: 0; /* so the gridline background fills the whole cell */\n text-align: left; /* keep the plot flush left, aligned with the gridlines */\n }\n .lt-eb-grid-bg {\n position: absolute;\n left: 0;\n top: 0;\n line { stroke: #eee; }\n }\n .lt-eb {\n position: relative;\n vertical-align: middle;\n line { stroke: #888; }\n circle { fill: #333; }\n .lt-eb-ref { stroke: #ccc; }\n }\n .lt-eb-axis {\n display: block;\n margin-top: 3px; /* small gap below the body, since the cell has no padding */\n line { stroke: #888; }\n text { fill: #666; font-size: 11px; }\n .lt-eb-axis-label { fill: #333; font-size: 12px; }\n }\n .lt-spark {\n vertical-align: middle;\n color: #4682b4; /* line/bars inherit this via currentColor; override inline */\n .lt-spark-line { fill: none; stroke: currentColor; stroke-width: 1; }\n .lt-spark-bar { fill: currentColor; }\n }\n .lt-dot {\n position: relative; /* paint above the absolutely-positioned gridlines */\n vertical-align: middle;\n color: #333;\n /* default only the dots without a per-column fill= attribute, so that\n attribute still shows; override either via `color` or `.lt-dot circle` */\n circle:not([fill]) { fill: currentColor; }\n }\n .lt-dot-legend {\n margin-top: 3px; /* small gap below the axis, since the cell has no padding */\n font-size: 11px;\n color: #666;\n i {\n display: inline-block;\n width: 8px;\n height: 8px;\n margin-right: 2px;\n border-radius: 50%;\n vertical-align: middle;\n }\n span { margin-right: 6px; white-space: nowrap; }\n }\n}\n"],"names":[]}
1
+ {"version":3,"mappings":"AACA,UACE,0DAKA,gDAIE,oBAEF,iDAKE,iDACA,+BACA,0BAEF,2CAGE,mBACA,gCACA,8CAEF,gDAGE,gEACA,mCAEF,6DAME,wCAEF,2DAIE,uGAQA","sources":["lt-plot.css"],"sourcesContent":["/* lt-plot.css — styles for inline graphics cells (see lt-plot.js). */\n.lt-table {\n .lt-eb-cell {\n position: relative;\n padding: 0; /* so the gridline background fills the whole cell */\n text-align: left; /* keep the plot flush left, aligned with the gridlines */\n }\n .lt-eb-grid-bg {\n position: absolute;\n left: 0;\n top: 0;\n line { stroke: #eee; }\n }\n .lt-eb {\n position: relative;\n vertical-align: middle;\n /* default only series without a per-series stroke=/fill= attribute, so that\n attribute still shows; override either via that attr or a `.lt-eb` rule */\n line:not([stroke]):not(.lt-eb-ref) { stroke: #888; }\n circle:not([fill]) { fill: #333; }\n .lt-eb-ref { stroke: #ccc; }\n }\n .lt-eb-axis {\n display: block;\n margin-top: 3px; /* small gap below the body, since the cell has no padding */\n line { stroke: #888; }\n text { fill: #666; font-size: 11px; }\n .lt-eb-axis-label { fill: #333; font-size: 12px; }\n }\n .lt-spark {\n vertical-align: middle;\n color: #4682b4; /* line/bars inherit this via currentColor; override inline */\n .lt-spark-line { fill: none; stroke: currentColor; stroke-width: 1; }\n .lt-spark-bar { fill: currentColor; }\n }\n .lt-dot {\n position: relative; /* paint above the absolutely-positioned gridlines */\n vertical-align: middle;\n color: #333;\n /* default only the dots without a per-column fill= attribute, so that\n attribute still shows; override either via `color` or `.lt-dot circle` */\n circle:not([fill]) { fill: currentColor; }\n }\n .lt-plot-legend {\n margin-top: 3px; /* small gap below the axis, since the cell has no padding */\n font-size: 11px;\n color: #666;\n i {\n display: inline-block;\n width: 8px;\n height: 8px;\n margin-right: 2px;\n border-radius: 50%;\n vertical-align: middle;\n }\n span { margin-right: 6px; white-space: nowrap; }\n }\n}\n"],"names":[]}
package/js/lt-plot.js CHANGED
@@ -54,32 +54,52 @@
54
54
  return Math.round(Math.max(EB_PAD, Math.min(eb.width - EB_PAD, p)) * 10) / 10;
55
55
  };
56
56
 
57
- // Inline SVG for an error-bar cell: a point at the estimate and a horizontal
58
- // bar (with end caps) from the lower to the upper bound, on the column's
59
- // shared [min,max] scale. Only the numbers are shipped in the spec; the SVG
60
- // is built here at render time, so an interactive table (which rebuilds
61
- // <tbody> from spec._viewRows) draws it only for the rows on the current
62
- // page. `u` carries the core helpers (esc/isNum/str) passed in by lt.js.
57
+ // y pixel of series i of n within a cell of height H: a lone series on the
58
+ // mid-line, else evenly spaced tracks so stacked points/bars do not overlap.
59
+ // Shared by the stacked error bar and the staggered dot plot.
60
+ const stackY = (i, n, H) => n <= 1 ? H / 2 : Math.round((i + 1) / (n + 1) * H);
61
+
62
+ // Inline SVG for an error-bar cell: one series per triple (value, lower,
63
+ // upper) — a point at the estimate and a horizontal bar (with end caps) from
64
+ // the lower to the upper bound, on the column's shared [min,max] scale. A
65
+ // single series sits on the mid-line; several series stack at evenly spaced
66
+ // rows, each optionally colored (see the footer legend). Only the numbers are
67
+ // shipped in the spec; the SVG is built here at render time, so an
68
+ // interactive table (which rebuilds <tbody> from spec._viewRows) draws it
69
+ // only for the rows on the current page. `u` carries the core helpers
70
+ // (esc/isNum/str) passed in by lt.js.
63
71
  function svgErrorbar(eb, data, r, u) {
64
72
  const num = k => { const v = data[k]?.[r - 1]; return u.isNum(v) ? v : null; };
65
- const est = num(eb.col), lo = num(eb.lo), hi = num(eb.hi);
66
- if (est == null && lo == null && hi == null) return "";
67
- const H = eb.height, y = H / 2, x = v => ebX(eb, v),
68
- cap = Math.min(4, (H - 1) / 2); // half-height of the end caps
73
+ const H = eb.height, n = eb.cols.length, x = v => ebX(eb, v),
74
+ yOf = i => stackY(i, n, H), // one track per series, stacked
75
+ cap = Math.min(4, (H / n - 1) / 2); // half-height of the end caps
69
76
  let s = `<svg class="lt-eb" width="${eb.width}" height="${H}">`;
70
77
  if (eb.ref != null)
71
78
  s += `<line class="lt-eb-ref" x1="${x(eb.ref)}" y1="0" x2="${x(eb.ref)}" y2="${H}"/>`;
72
- if (lo != null && hi != null) {
73
- // horizontal bar plus short vertical end caps at both ends
74
- const xl = x(lo), xh = x(hi);
75
- s += `<line x1="${xl}" y1="${y}" x2="${xh}" y2="${y}"/>` +
76
- `<line x1="${xl}" y1="${y - cap}" x2="${xl}" y2="${y + cap}"/>` +
77
- `<line x1="${xh}" y1="${y - cap}" x2="${xh}" y2="${y + cap}"/>`;
78
- }
79
- if (est != null) s += `<circle cx="${x(est)}" cy="${y}" r="3"/>`;
80
- const ci = lo != null && hi != null ? ` (${u.str(lo)}, ${u.str(hi)})` : "";
81
- s += `<title>${u.esc((est != null ? u.str(est) : "") + ci)}</title></svg>`;
82
- return s;
79
+ const titles = [];
80
+ eb.cols.forEach((c, i) => {
81
+ const est = num(c), lo = num(eb.los[i]), hi = num(eb.his[i]);
82
+ if (est == null && lo == null && hi == null) return;
83
+ const y = yOf(i), col = eb.colors?.[i],
84
+ // per-series color via stroke=/fill= attributes; the stylesheet only
85
+ // defaults series that lack them (:not([stroke])/:not([fill])), so a
86
+ // color shows but a user CSS rule can still override it
87
+ st = col ? ` stroke="${u.esc(col)}"` : "",
88
+ fl = col ? ` fill="${u.esc(col)}"` : "";
89
+ if (lo != null && hi != null) {
90
+ // horizontal bar plus short vertical end caps at both ends
91
+ const xl = x(lo), xh = x(hi);
92
+ s += `<line${st} x1="${xl}" y1="${y}" x2="${xh}" y2="${y}"/>` +
93
+ `<line${st} x1="${xl}" y1="${y - cap}" x2="${xl}" y2="${y + cap}"/>` +
94
+ `<line${st} x1="${xh}" y1="${y - cap}" x2="${xh}" y2="${y + cap}"/>`;
95
+ }
96
+ if (est != null) s += `<circle${fl} cx="${x(est)}" cy="${y}" r="3"/>`;
97
+ const ci = lo != null && hi != null ? ` (${u.str(lo)}, ${u.str(hi)})` : "";
98
+ titles.push((eb.labels?.[i] ? eb.labels[i] + ": " : "") +
99
+ (est != null ? u.str(est) : "") + ci);
100
+ });
101
+ if (!titles.length) return "";
102
+ return s + `<title>${u.esc(titles.join("\n"))}</title></svg>`;
83
103
  }
84
104
 
85
105
  // Full-cell background layer of faint vertical gridlines at the shared tick
@@ -123,10 +143,12 @@
123
143
  // r, u) -> body-cell HTML; foot(cfg, u) -> footer (axis) HTML or "".
124
144
  cells.errorbar = {
125
145
  resolve(op) {
126
- const [v, lo, hi] = op.columns || [];
146
+ const cols = op.columns || [], v = cols[0];
127
147
  if (!v) return {};
128
148
  const eb = {
129
- col: v, lo, hi, min: op.min, max: op.max, ref: op.ref, axis: op.axis,
149
+ col: v, cols, los: op.lowers || [], his: op.uppers || [],
150
+ colors: op.colors, labels: op.labels,
151
+ min: op.min, max: op.max, ref: op.ref, axis: op.axis,
130
152
  axisLabel: op.axis_label, width: op.width || 160, height: op.height || 16
131
153
  };
132
154
  // When an axis is requested, the same nice ticks drive both the footer
@@ -139,7 +161,7 @@
139
161
  // background can run unbroken from one row to the next.
140
162
  cellClass: eb => eb.ticks ? "lt-eb-cell" : "",
141
163
  cell: (eb, data, r, u) => (eb.ticks ? svgGrid(eb) : "") + svgErrorbar(eb, data, r, u),
142
- foot: (eb, u) => eb.axis ? svgAxis(eb, u) : ""
164
+ foot: (eb, u) => (eb.ticks ? svgAxis(eb, u) : "") + legend(eb, u)
143
165
  };
144
166
 
145
167
  // Padding (px) inside a sparkline SVG, so the line/bars never touch the edge.
@@ -216,10 +238,14 @@
216
238
  // Inline SVG dot plot for a cell: one dot per column, each at its value on the
217
239
  // column group's shared [min,max] scale, so a row with N columns shows N dots
218
240
  // laid out horizontally on one baseline. When colors are given, each dot takes
219
- // its column's color (see dotLegend for the key). Non-finite values draw no
241
+ // its column's color (see legend() for the key). Non-finite values draw no
220
242
  // dot. Reuses the error-bar scale (ebX) and padding.
221
243
  function svgDotplot(dp, data, r, u) {
222
- const H = dp.height, y = H / 2, x = v => ebX(dp, v);
244
+ const H = dp.height, n = dp.cols.length, x = v => ebX(dp, v),
245
+ // all dots on the mid-line by default; stagger puts each column on its
246
+ // own track (like the stacked error bar) so near-equal values do not
247
+ // overlap — the vertical position is cosmetic, only x carries a value
248
+ yOf = i => dp.stagger ? stackY(i, n, H) : H / 2;
223
249
  let s = `<svg class="lt-dot" width="${dp.width}" height="${H}">`;
224
250
  const titles = [];
225
251
  dp.cols.forEach((c, i) => {
@@ -229,20 +255,22 @@
229
255
  // only defaults dots that lack it (:not([fill])), so this color shows but
230
256
  // user CSS (a stylesheet rule) can still override it
231
257
  const col = dp.colors?.[i], fl = col ? ` fill="${u.esc(col)}"` : "";
232
- s += `<circle${fl} cx="${x(v)}" cy="${y}" r="3"/>`;
258
+ s += `<circle${fl} cx="${x(v)}" cy="${yOf(i)}" r="3"/>`;
233
259
  titles.push((dp.labels?.[i] ? dp.labels[i] + ": " : "") + u.str(v));
234
260
  });
235
261
  return s + `<title>${u.esc(titles.join("\n"))}</title></svg>`;
236
262
  }
237
263
 
238
- // Color key for a colored dot plot, drawn once in the footer under the axis: a
239
- // swatch + label per column. "" when the plot is monochrome (no colors).
240
- function dotLegend(dp, u) {
241
- if (!dp.colors) return "";
242
- const items = dp.cols.map((c, i) =>
243
- `<span><i style="background:${u.esc(dp.colors[i])}"></i>` +
244
- `${u.esc(dp.labels?.[i] ?? c)}</span>`).join("");
245
- return `<div class="lt-dot-legend">${items}</div>`;
264
+ // Color key for a colored dot/error-bar plot, drawn once in the footer under
265
+ // the axis: a swatch + label per series. "" when the plot is monochrome (no
266
+ // colors). Shared by the dot-plot and error-bar renderers (cfg.cols/colors/
267
+ // labels have the same shape in both).
268
+ function legend(cfg, u) {
269
+ if (!cfg.colors) return "";
270
+ const items = cfg.cols.map((c, i) =>
271
+ `<span><i style="background:${u.esc(cfg.colors[i])}"></i>` +
272
+ `${u.esc(cfg.labels?.[i] ?? c)}</span>`).join("");
273
+ return `<div class="lt-plot-legend">${items}</div>`;
246
274
  }
247
275
 
248
276
  // Dot-plot cell renderer. columns = the value columns (one dot each); the plot
@@ -253,7 +281,7 @@
253
281
  const cols = op.columns || [], v = cols[0];
254
282
  if (!v) return {};
255
283
  const dp = {
256
- col: v, cols, colors: op.colors, labels: op.labels,
284
+ col: v, cols, colors: op.colors, labels: op.labels, stagger: op.stagger,
257
285
  min: op.min, max: op.max, axisLabel: op.axis_label,
258
286
  width: op.width || 160, height: op.height || 16
259
287
  };
@@ -262,7 +290,7 @@
262
290
  },
263
291
  cellClass: dp => dp.ticks ? "lt-eb-cell" : "",
264
292
  cell: (dp, data, r, u) => (dp.ticks ? svgGrid(dp) : "") + svgDotplot(dp, data, r, u),
265
- foot: (dp, u) => (dp.ticks ? svgAxis(dp, u) : "") + dotLegend(dp, u)
293
+ foot: (dp, u) => (dp.ticks ? svgAxis(dp, u) : "") + legend(dp, u)
266
294
  };
267
295
 
268
296
  // If core already built a table before this module loaded (a doc where an
package/js/lt-plot.min.js CHANGED
@@ -1,2 +1,2 @@
1
- (t=>{"use strict";const l=t.LT||(t.LT={}),e=l.cells||(l.cells={});if(e.errorbar)return;function s(t,l,e=5){if(!(l>t))return[t];const s=(t,l)=>{const e=Math.floor(Math.log10(t)),s=t/10**e;return(l?s<1.5?1:s<3?2:s<7?5:10:s<=1?1:s<=2?2:s<=5?5:10)*10**e},n=s(s(l-t,!1)/(e-1),!0),i=Math.max(0,-Math.floor(Math.log10(n))),o=[];for(let e=Math.ceil(t/n)*n;e<=l+n/2;e+=n)o.push(+e.toFixed(i));return o}function n(t){const l=t.width-8,e=11*Math.max(String(t.min).length,String(t.max).length)*.6+11;return Math.max(2,Math.min(8,Math.floor(l/e)+1))}const i=(t,l)=>{const e=t.width-8,s=t.max-t.min,n=s>0?4+(l-t.min)/s*e:t.width/2;return Math.round(10*Math.max(4,Math.min(t.width-4,n)))/10};function o(t){let l=`<svg class="lt-eb-grid-bg" width="${t.width}" height="100%" viewBox="0 0 ${t.width} 10" preserveAspectRatio="none">`;for(const e of t.ticks)l+=`<line x1="${i(t,e)}" y1="0" x2="${i(t,e)}" y2="10"/>`;return l+"</svg>"}function r(t,l){const e=t.width,s=t.axisLabel,n=s?32:18,o=l=>i(t,l);let r=`<svg class="lt-eb-axis" width="${e}" height="${n}" overflow="visible"><line x1="4" y1="1" x2="${e-4}" y2="1"/>`;for(const s of t.ticks||[]){const t=o(s);r+=`<line x1="${t}" y1="0" x2="${t}" y2="4"/><text x="${t}" y="15" text-anchor="${t<=4?"start":t>=e-4?"end":"middle"}">${l.esc(l.str(s))}</text>`}return s&&(r+=`<text class="lt-eb-axis-label" x="${e/2}" y="${n-4}" text-anchor="middle">${l.esc(s)}</text>`),r+"</svg>"}e.errorbar={resolve(t){const[l,e,i]=t.columns||[];if(!l)return{};const o={col:l,lo:e,hi:i,min:t.min,max:t.max,ref:t.ref,axis:t.axis,axisLabel:t.axis_label,width:t.width||160,height:t.height||16};return t.axis&&(o.ticks=s(o.min,o.max,n(o))),{[l]:o}},cellClass:t=>t.ticks?"lt-eb-cell":"",cell:(t,l,e,s)=>(t.ticks?o(t):"")+function(t,l,e,s){const n=t=>{const n=l[t]?.[e-1];return s.isNum(n)?n:null},o=n(t.col),r=n(t.lo),c=n(t.hi);if(null==o&&null==r&&null==c)return"";const a=t.height,h=a/2,u=l=>i(t,l),$=Math.min(4,(a-1)/2);let x=`<svg class="lt-eb" width="${t.width}" height="${a}">`;if(null!=t.ref&&(x+=`<line class="lt-eb-ref" x1="${u(t.ref)}" y1="0" x2="${u(t.ref)}" y2="${a}"/>`),null!=r&&null!=c){const t=u(r),l=u(c);x+=`<line x1="${t}" y1="${h}" x2="${l}" y2="${h}"/><line x1="${t}" y1="${h-$}" x2="${t}" y2="${h+$}"/><line x1="${l}" y1="${h-$}" x2="${l}" y2="${h+$}"/>`}null!=o&&(x+=`<circle cx="${u(o)}" cy="${h}" r="3"/>`);const m=null!=r&&null!=c?` (${s.str(r)}, ${s.str(c)})`:"";return x+=`<title>${s.esc((null!=o?s.str(o):"")+m)}</title></svg>`,x}(t,l,e,s),foot:(t,l)=>t.axis?r(t,l):""};const c=t=>Math.round(10*t)/10,a=t=>`"${t}"`;function h(t,l,e,s){const n=function(t,l,e,s){const n=l[t.cols[0]]?.[e-1];return(1===t.cols.length&&Array.isArray(n)?n:t.cols.map(t=>l[t]?.[e-1])).map(t=>s.isNum(t)?+t:null)}(t,l,e,s),i=n.filter(t=>null!=t);if(!i.length)return"";const o=t.width,r=t.height,h=n.length,u=null!=t.min?t.min:Math.min(...i),$=null!=t.max?t.max:Math.max(...i),x=t=>c($>u?r-2-(t-u)/($-u)*(r-4):r/2),m=t.color?` style="color:${s.esc(t.color)}"`:"";let d;if("bar"===t.kind){const t=(o-4)/h,l=c(Math.max(1,.8*t)),e=x(u<0&&$>0?0:u);d=n.map((s,n)=>{if(null==s)return"";const i=x(s),o=c(2+n*t+(t-l)/2);return`<rect class="lt-spark-bar" x=${a(o)} y=${a(Math.min(i,e))} width=${a(l)} height=${a(Math.max(1,Math.abs(e-i)))}/>`}).join("")}else{let t="",l=!1;n.forEach((e,s)=>{null!=e?(t+=`${l?"L":"M"}${(t=>c(h>1?2+t/(h-1)*(o-4):o/2))(s)} ${x(e)}`,l=!0):l=!1}),d=`<path class="lt-spark-line" d="${t}"/>`}return`<svg class="lt-spark" width="${o}" height="${r}"${m}>${d}<title>${s.esc(i.map(s.str).join(", "))}</title></svg>`}function u(t,l,e,s){const n=t.height,o=n/2;let r=`<svg class="lt-dot" width="${t.width}" height="${n}">`;const c=[];return t.cols.forEach((n,a)=>{const h=l[n]?.[e-1];if(!s.isNum(h))return;const u=t.colors?.[a],$=u?` fill="${s.esc(u)}"`:"";r+=`<circle${$} cx="${(l=>i(t,l))(h)}" cy="${o}" r="3"/>`,c.push((t.labels?.[a]?t.labels[a]+": ":"")+s.str(h))}),r+`<title>${s.esc(c.join("\n"))}</title></svg>`}e.sparkline={resolve(t){const l=t.columns||[],e=l[0];return e?{[e]:{col:e,cols:l,kind:t.kind,min:t.min,max:t.max,color:t.color,width:t.width||120,height:t.height||20}}:{}},cell:(t,l,e,s)=>h(t,l,e,s)},e.dotplot={resolve(t){const l=t.columns||[],e=l[0];if(!e)return{};const i={col:e,cols:l,colors:t.colors,labels:t.labels,min:t.min,max:t.max,axisLabel:t.axis_label,width:t.width||160,height:t.height||16};return t.axis&&(i.ticks=s(i.min,i.max,n(i))),{[e]:i}},cellClass:t=>t.ticks?"lt-eb-cell":"",cell:(t,l,e,s)=>(t.ticks?o(t):"")+u(t,l,e,s),foot:(t,l)=>(t.ticks?r(t,l):"")+function(t,l){return t.colors?`<div class="lt-dot-legend">${t.cols.map((e,s)=>`<span><i style="background:${l.esc(t.colors[s])}"></i>${l.esc(t.labels?.[s]??e)}</span>`).join("")}</div>`:""}(t,l)};const $=t.document;if($)for(const t of $.querySelectorAll(".lt-table"))(t._ltSpec?.ops||[]).some(t=>e[t.type])&&l.refresh?.(t)})(window);
1
+ (t=>{"use strict";const l=t.LT||(t.LT={}),s=l.cells||(l.cells={});if(s.errorbar)return;function e(t,l,s=5){if(!(l>t))return[t];const e=(t,l)=>{const s=Math.floor(Math.log10(t)),e=t/10**s;return(l?e<1.5?1:e<3?2:e<7?5:10:e<=1?1:e<=2?2:e<=5?5:10)*10**s},n=e(e(l-t,!1)/(s-1),!0),i=Math.max(0,-Math.floor(Math.log10(n))),o=[];for(let s=Math.ceil(t/n)*n;s<=l+n/2;s+=n)o.push(+s.toFixed(i));return o}function n(t){const l=t.width-8,s=11*Math.max(String(t.min).length,String(t.max).length)*.6+11;return Math.max(2,Math.min(8,Math.floor(l/s)+1))}const i=(t,l)=>{const s=t.width-8,e=t.max-t.min,n=e>0?4+(l-t.min)/e*s:t.width/2;return Math.round(10*Math.max(4,Math.min(t.width-4,n)))/10},o=(t,l,s)=>l<=1?s/2:Math.round((t+1)/(l+1)*s);function r(t,l,s,e){const n=t=>{const n=l[t]?.[s-1];return e.isNum(n)?n:null},r=t.height,c=t.cols.length,a=l=>i(t,l),h=Math.min(4,(r/c-1)/2);let u=`<svg class="lt-eb" width="${t.width}" height="${r}">`;null!=t.ref&&(u+=`<line class="lt-eb-ref" x1="${a(t.ref)}" y1="0" x2="${a(t.ref)}" y2="${r}"/>`);const $=[];return t.cols.forEach((l,s)=>{const i=n(l),x=n(t.los[s]),m=n(t.his[s]);if(null==i&&null==x&&null==m)return;const f=(t=>o(t,c,r))(s),g=t.colors?.[s],d=g?` stroke="${e.esc(g)}"`:"",b=g?` fill="${e.esc(g)}"`:"";if(null!=x&&null!=m){const t=a(x),l=a(m);u+=`<line${d} x1="${t}" y1="${f}" x2="${l}" y2="${f}"/><line${d} x1="${t}" y1="${f-h}" x2="${t}" y2="${f+h}"/><line${d} x1="${l}" y1="${f-h}" x2="${l}" y2="${f+h}"/>`}null!=i&&(u+=`<circle${b} cx="${a(i)}" cy="${f}" r="3"/>`);const w=null!=x&&null!=m?` (${e.str(x)}, ${e.str(m)})`:"";$.push((t.labels?.[s]?t.labels[s]+": ":"")+(null!=i?e.str(i):"")+w)}),$.length?u+`<title>${e.esc($.join("\n"))}</title></svg>`:""}function c(t){let l=`<svg class="lt-eb-grid-bg" width="${t.width}" height="100%" viewBox="0 0 ${t.width} 10" preserveAspectRatio="none">`;for(const s of t.ticks)l+=`<line x1="${i(t,s)}" y1="0" x2="${i(t,s)}" y2="10"/>`;return l+"</svg>"}function a(t,l){const s=t.width,e=t.axisLabel,n=e?32:18,o=l=>i(t,l);let r=`<svg class="lt-eb-axis" width="${s}" height="${n}" overflow="visible"><line x1="4" y1="1" x2="${s-4}" y2="1"/>`;for(const e of t.ticks||[]){const t=o(e);r+=`<line x1="${t}" y1="0" x2="${t}" y2="4"/><text x="${t}" y="15" text-anchor="${t<=4?"start":t>=s-4?"end":"middle"}">${l.esc(l.str(e))}</text>`}return e&&(r+=`<text class="lt-eb-axis-label" x="${s/2}" y="${n-4}" text-anchor="middle">${l.esc(e)}</text>`),r+"</svg>"}s.errorbar={resolve(t){const l=t.columns||[],s=l[0];if(!s)return{};const i={col:s,cols:l,los:t.lowers||[],his:t.uppers||[],colors:t.colors,labels:t.labels,min:t.min,max:t.max,ref:t.ref,axis:t.axis,axisLabel:t.axis_label,width:t.width||160,height:t.height||16};return t.axis&&(i.ticks=e(i.min,i.max,n(i))),{[s]:i}},cellClass:t=>t.ticks?"lt-eb-cell":"",cell:(t,l,s,e)=>(t.ticks?c(t):"")+r(t,l,s,e),foot:(t,l)=>(t.ticks?a(t,l):"")+m(t,l)};const h=t=>Math.round(10*t)/10,u=t=>`"${t}"`;function $(t,l,s,e){const n=function(t,l,s,e){const n=l[t.cols[0]]?.[s-1];return(1===t.cols.length&&Array.isArray(n)?n:t.cols.map(t=>l[t]?.[s-1])).map(t=>e.isNum(t)?+t:null)}(t,l,s,e),i=n.filter(t=>null!=t);if(!i.length)return"";const o=t.width,r=t.height,c=n.length,a=null!=t.min?t.min:Math.min(...i),$=null!=t.max?t.max:Math.max(...i),x=t=>h($>a?r-2-(t-a)/($-a)*(r-4):r/2),m=t.color?` style="color:${e.esc(t.color)}"`:"";let f;if("bar"===t.kind){const t=(o-4)/c,l=h(Math.max(1,.8*t)),s=x(a<0&&$>0?0:a);f=n.map((e,n)=>{if(null==e)return"";const i=x(e),o=h(2+n*t+(t-l)/2);return`<rect class="lt-spark-bar" x=${u(o)} y=${u(Math.min(i,s))} width=${u(l)} height=${u(Math.max(1,Math.abs(s-i)))}/>`}).join("")}else{let t="",l=!1;n.forEach((s,e)=>{null!=s?(t+=`${l?"L":"M"}${(t=>h(c>1?2+t/(c-1)*(o-4):o/2))(e)} ${x(s)}`,l=!0):l=!1}),f=`<path class="lt-spark-line" d="${t}"/>`}return`<svg class="lt-spark" width="${o}" height="${r}"${m}>${f}<title>${e.esc(i.map(e.str).join(", "))}</title></svg>`}function x(t,l,s,e){const n=t.height,r=t.cols.length;let c=`<svg class="lt-dot" width="${t.width}" height="${n}">`;const a=[];return t.cols.forEach((h,u)=>{const $=l[h]?.[s-1];if(!e.isNum($))return;const x=t.colors?.[u],m=x?` fill="${e.esc(x)}"`:"";c+=`<circle${m} cx="${(l=>i(t,l))($)}" cy="${(l=>t.stagger?o(l,r,n):n/2)(u)}" r="3"/>`,a.push((t.labels?.[u]?t.labels[u]+": ":"")+e.str($))}),c+`<title>${e.esc(a.join("\n"))}</title></svg>`}function m(t,l){if(!t.colors)return"";return`<div class="lt-plot-legend">${t.cols.map((s,e)=>`<span><i style="background:${l.esc(t.colors[e])}"></i>${l.esc(t.labels?.[e]??s)}</span>`).join("")}</div>`}s.sparkline={resolve(t){const l=t.columns||[],s=l[0];return s?{[s]:{col:s,cols:l,kind:t.kind,min:t.min,max:t.max,color:t.color,width:t.width||120,height:t.height||20}}:{}},cell:(t,l,s,e)=>$(t,l,s,e)},s.dotplot={resolve(t){const l=t.columns||[],s=l[0];if(!s)return{};const i={col:s,cols:l,colors:t.colors,labels:t.labels,stagger:t.stagger,min:t.min,max:t.max,axisLabel:t.axis_label,width:t.width||160,height:t.height||16};return t.axis&&(i.ticks=e(i.min,i.max,n(i))),{[s]:i}},cellClass:t=>t.ticks?"lt-eb-cell":"",cell:(t,l,s,e)=>(t.ticks?c(t):"")+x(t,l,s,e),foot:(t,l)=>(t.ticks?a(t,l):"")+m(t,l)};const f=t.document;if(f)for(const t of f.querySelectorAll(".lt-table"))(t._ltSpec?.ops||[]).some(t=>s[t.type])&&l.refresh?.(t)})(window);
2
2
  //# sourceMappingURL=lt-plot.min.js.map
@@ -1 +1 @@
1
- {"version":3,"names":["root","LT","cells","errorbar","niceTicks","lo","hi","n","niceNum","x","round","e","Math","floor","log10","f","d","dec","max","ticks","v","ceil","push","toFixed","nAxisTicks","eb","inner","width","per","String","min","length","ebX","span","p","svgGrid","s","t","svgAxis","u","W","lbl","axisLabel","H","xt","esc","str","resolve","op","columns","col","ref","axis","axis_label","height","cellClass","cell","data","r","num","k","isNum","est","y","cap","xl","xh","ci","svgErrorbar","foot","round1","q","svgSparkline","sp","vals","cols","Array","isArray","map","c","spSeries","fin","filter","yAt","style","color","body","kind","slot","bw","base","i","yv","abs","join","pen","forEach","xAt","svgDotplot","dp","titles","colors","fl","labels","sparkline","dotplot","dotLegend","doc","document","tbl","querySelectorAll","_ltSpec","ops","some","o","type","refresh","window"],"sources":["lt-plot.js"],"mappings":"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","ignoreList":[]}
1
+ {"version":3,"names":["root","LT","cells","errorbar","niceTicks","lo","hi","n","niceNum","x","round","e","Math","floor","log10","f","d","dec","max","ticks","v","ceil","push","toFixed","nAxisTicks","eb","inner","width","per","String","min","length","ebX","span","p","stackY","i","H","svgErrorbar","data","r","u","num","k","isNum","height","cols","cap","s","ref","titles","forEach","c","est","los","his","y","yOf","col","colors","st","esc","fl","xl","xh","ci","str","labels","join","svgGrid","t","svgAxis","W","lbl","axisLabel","xt","resolve","op","columns","lowers","uppers","axis","axis_label","cellClass","cell","foot","legend","round1","q","svgSparkline","sp","vals","Array","isArray","map","spSeries","fin","filter","yAt","style","color","body","kind","slot","bw","base","yv","abs","pen","xAt","svgDotplot","dp","stagger","cfg","sparkline","dotplot","doc","document","tbl","querySelectorAll","_ltSpec","ops","some","o","type","refresh","window"],"sources":["lt-plot.js"],"mappings":"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","ignoreList":[]}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@xiee/utils",
3
- "version": "1.14.85",
3
+ "version": "1.14.86",
4
4
  "description": "Miscellaneous tools and utilities to manipulate HTML pages",
5
5
  "scripts": {
6
6
  "test": "echo \"Error: no test specified\" && exit 1"