@milaboratories/miplots4 1.0.161 → 1.0.163
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/_virtual/index10.js +2 -5
- package/dist/_virtual/index10.js.map +1 -1
- package/dist/_virtual/index5.js +5 -2
- package/dist/_virtual/index5.js.map +1 -1
- package/dist/_virtual/index6.js +4 -4
- package/dist/_virtual/index7.js +1 -1
- package/dist/_virtual/index8.js +4 -4
- package/dist/_virtual/index9.js +3 -3
- package/dist/common/BandAxis.d.ts +2 -1
- package/dist/common/BandAxis.js +19 -18
- package/dist/common/BandAxis.js.map +1 -1
- package/dist/common/ContinuousAxis.js +20 -20
- package/dist/common/ContinuousAxis.js.map +1 -1
- package/dist/common/Legend.js +3 -3
- package/dist/common/Legend.js.map +1 -1
- package/dist/discrete/DiscreteSettingsImpl.d.ts +6 -4
- package/dist/discrete/DiscreteSettingsImpl.js +9 -9
- package/dist/discrete/DiscreteSettingsImpl.js.map +1 -1
- package/dist/discrete/constants.d.ts +1 -1
- package/dist/discrete/constants.js +1 -1
- package/dist/discrete/constants.js.map +1 -1
- package/dist/discrete/index.js +107 -106
- package/dist/discrete/index.js.map +1 -1
- package/dist/discrete/layers/bar.js +25 -22
- package/dist/discrete/layers/bar.js.map +1 -1
- package/dist/discrete/layers/errorbars.js +57 -48
- package/dist/discrete/layers/errorbars.js.map +1 -1
- package/dist/discrete/layers/lines.js +40 -31
- package/dist/discrete/layers/lines.js.map +1 -1
- package/dist/discrete/layers/stackedBar.js.map +1 -1
- package/dist/discrete/layers/stats/pValueCalculation.js +5 -5
- package/dist/heatmap/components/Captions/AxisCaptions.js +34 -34
- package/dist/heatmap/components/Captions/AxisCaptions.js.map +1 -1
- package/dist/heatmap/fillCellsData.js +49 -46
- package/dist/heatmap/fillCellsData.js.map +1 -1
- package/dist/heatmap/utils/calculateChartSideElementSizes.js +23 -23
- package/dist/heatmap/utils/calculateChartSideElementSizes.js.map +1 -1
- package/dist/histogram/ChartRenderer.js +57 -54
- package/dist/histogram/ChartRenderer.js.map +1 -1
- package/dist/histogram/constants.d.ts +1 -1
- package/dist/histogram/constants.js.map +1 -1
- package/dist/histogram/index.js +58 -51
- package/dist/histogram/index.js.map +1 -1
- package/dist/node_modules/.pnpm/scheduler@0.23.2/node_modules/scheduler/index.js +1 -1
- package/dist/scatterplot/ChartRenderer.js +89 -89
- package/dist/scatterplot/ChartRenderer.js.map +1 -1
- package/dist/scatterplot/components/ChartAxis.js +30 -30
- package/dist/scatterplot/components/ChartAxis.js.map +1 -1
- package/dist/scatterplot/components/ChartAxisTitles.js +22 -22
- package/dist/scatterplot/components/ChartAxisTitles.js.map +1 -1
- package/dist/scatterplot/constants.d.ts +1 -1
- package/dist/scatterplot/constants.js +1 -1
- package/dist/scatterplot/constants.js.map +1 -1
- package/dist/scatterplot/dots.d.ts +1 -1
- package/dist/scatterplot/dots.js +14 -14
- package/dist/scatterplot/dots.js.map +1 -1
- package/dist/scatterplot/index.js +94 -79
- package/dist/scatterplot/index.js.map +1 -1
- package/dist/scatterplot-umap/ChartRenderer.d.ts +1 -1
- package/dist/scatterplot-umap/ChartRenderer.js +14 -14
- package/dist/scatterplot-umap/ChartRenderer.js.map +1 -1
- package/dist/scatterplot-umap/components/LowerSVG.js +38 -38
- package/dist/scatterplot-umap/components/LowerSVG.js.map +1 -1
- package/dist/types/bubble.d.ts +5 -5
- package/dist/types/bubble.js +40 -40
- package/dist/types/bubble.js.map +1 -1
- package/dist/types/common.d.ts +25 -2
- package/dist/types/common.js +16 -15
- package/dist/types/common.js.map +1 -1
- package/dist/types/discrete.d.ts +66 -56
- package/dist/types/discrete.js +40 -38
- package/dist/types/discrete.js.map +1 -1
- package/dist/types/heatmap.d.ts +5 -6
- package/dist/types/heatmap.js +29 -29
- package/dist/types/heatmap.js.map +1 -1
- package/package.json +1 -1
package/dist/_virtual/index10.js
CHANGED
|
@@ -1,8 +1,5 @@
|
|
|
1
|
-
|
|
2
|
-
import { __require as o } from "../node_modules/.pnpm/@stdlib_stats-wilcoxon@0.2.2/node_modules/@stdlib/stats-wilcoxon/lib/index.js";
|
|
3
|
-
var t = o();
|
|
4
|
-
const a = /* @__PURE__ */ r(t);
|
|
1
|
+
var e = { exports: {} };
|
|
5
2
|
export {
|
|
6
|
-
|
|
3
|
+
e as __module
|
|
7
4
|
};
|
|
8
5
|
//# sourceMappingURL=index10.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index10.js","sources":[],"sourcesContent":[],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"index10.js","sources":[],"sourcesContent":[],"names":[],"mappings":";"}
|
package/dist/_virtual/index5.js
CHANGED
|
@@ -1,5 +1,8 @@
|
|
|
1
|
-
|
|
1
|
+
import { getDefaultExportFromCjs as r } from "./_commonjsHelpers.js";
|
|
2
|
+
import { __require as o } from "../node_modules/.pnpm/@stdlib_stats-anova1@0.2.2/node_modules/@stdlib/stats-anova1/lib/index.js";
|
|
3
|
+
var t = o();
|
|
4
|
+
const i = /* @__PURE__ */ r(t);
|
|
2
5
|
export {
|
|
3
|
-
|
|
6
|
+
i as default
|
|
4
7
|
};
|
|
5
8
|
//# sourceMappingURL=index5.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index5.js","sources":[],"sourcesContent":[],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"index5.js","sources":[],"sourcesContent":[],"names":[],"mappings":";;;;"}
|
package/dist/_virtual/index6.js
CHANGED
|
@@ -1,8 +1,8 @@
|
|
|
1
1
|
import { getDefaultExportFromCjs as r } from "./_commonjsHelpers.js";
|
|
2
|
-
import { __require as
|
|
3
|
-
var
|
|
4
|
-
const
|
|
2
|
+
import { __require as t } from "../node_modules/.pnpm/@stdlib_stats-ttest@0.2.2/node_modules/@stdlib/stats-ttest/lib/index.js";
|
|
3
|
+
var e = t();
|
|
4
|
+
const s = /* @__PURE__ */ r(e);
|
|
5
5
|
export {
|
|
6
|
-
|
|
6
|
+
s as default
|
|
7
7
|
};
|
|
8
8
|
//# sourceMappingURL=index6.js.map
|
package/dist/_virtual/index7.js
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import { getDefaultExportFromCjs as r } from "./_commonjsHelpers.js";
|
|
2
|
-
import { __require as t } from "../node_modules/.pnpm/@stdlib_stats-
|
|
2
|
+
import { __require as t } from "../node_modules/.pnpm/@stdlib_stats-ttest2@0.2.2/node_modules/@stdlib/stats-ttest2/lib/index.js";
|
|
3
3
|
var e = t();
|
|
4
4
|
const s = /* @__PURE__ */ r(e);
|
|
5
5
|
export {
|
package/dist/_virtual/index8.js
CHANGED
|
@@ -1,8 +1,8 @@
|
|
|
1
1
|
import { getDefaultExportFromCjs as r } from "./_commonjsHelpers.js";
|
|
2
|
-
import { __require as
|
|
3
|
-
var
|
|
4
|
-
const
|
|
2
|
+
import { __require as o } from "../node_modules/.pnpm/@stdlib_stats-kruskal-test@0.2.2/node_modules/@stdlib/stats-kruskal-test/lib/index.js";
|
|
3
|
+
var t = o();
|
|
4
|
+
const i = /* @__PURE__ */ r(t);
|
|
5
5
|
export {
|
|
6
|
-
|
|
6
|
+
i as default
|
|
7
7
|
};
|
|
8
8
|
//# sourceMappingURL=index8.js.map
|
package/dist/_virtual/index9.js
CHANGED
|
@@ -1,8 +1,8 @@
|
|
|
1
1
|
import { getDefaultExportFromCjs as r } from "./_commonjsHelpers.js";
|
|
2
|
-
import { __require as o } from "../node_modules/.pnpm/@stdlib_stats-
|
|
2
|
+
import { __require as o } from "../node_modules/.pnpm/@stdlib_stats-wilcoxon@0.2.2/node_modules/@stdlib/stats-wilcoxon/lib/index.js";
|
|
3
3
|
var t = o();
|
|
4
|
-
const
|
|
4
|
+
const a = /* @__PURE__ */ r(t);
|
|
5
5
|
export {
|
|
6
|
-
|
|
6
|
+
a as default
|
|
7
7
|
};
|
|
8
8
|
//# sourceMappingURL=index9.js.map
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import { ScaleBand, ScalePoint } from 'd3-scale';
|
|
2
2
|
type Scale = ScaleBand<string> | ScalePoint<string | number>;
|
|
3
3
|
type Orient = 'left' | 'bottom';
|
|
4
|
-
export declare const BandAxis: ({ scale, tickSize, tickPadding, orient, labelsPosition, labels, offset, }: {
|
|
4
|
+
export declare const BandAxis: ({ scale, tickSize, tickPadding, orient, labelsPosition, labels, offset, hiddenLabels, }: {
|
|
5
5
|
scale: Scale;
|
|
6
6
|
tickSize?: number;
|
|
7
7
|
tickPadding?: number;
|
|
@@ -9,5 +9,6 @@ export declare const BandAxis: ({ scale, tickSize, tickPadding, orient, labelsPo
|
|
|
9
9
|
orient?: Orient;
|
|
10
10
|
labels?: Record<string, string[]>;
|
|
11
11
|
labelsPosition?: "center" | "45deg" | "90deg";
|
|
12
|
+
hiddenLabels?: boolean;
|
|
12
13
|
}) => import("react/jsx-runtime").JSX.Element;
|
|
13
14
|
export {};
|
package/dist/common/BandAxis.js
CHANGED
|
@@ -1,59 +1,60 @@
|
|
|
1
1
|
import { j as m } from "../_virtual/jsx-runtime.js";
|
|
2
2
|
import { BLACK as l } from "../constants.js";
|
|
3
3
|
import { TICK_OFFSET as d } from "../discrete/constants.js";
|
|
4
|
-
function
|
|
4
|
+
function A(t) {
|
|
5
5
|
return `translate(${t},0)`;
|
|
6
6
|
}
|
|
7
|
-
function
|
|
7
|
+
function B(t) {
|
|
8
8
|
return `translate(0,${t})`;
|
|
9
9
|
}
|
|
10
10
|
const u = 21;
|
|
11
|
-
function
|
|
11
|
+
function F(t, n) {
|
|
12
12
|
if (t === "45deg") {
|
|
13
13
|
const i = n === "left" ? -u / 2 : 0, e = n === "bottom" ? u / 2 : -u / 2;
|
|
14
14
|
return `translate(${i},${e}) rotate(-45)`;
|
|
15
15
|
}
|
|
16
16
|
return t === "90deg" && n === "bottom" ? `translate(${-u / 2},${d + u / 2}) rotate(-90)` : n === "bottom" ? `translate(0,${d})` : `translate(${-d},0)`;
|
|
17
17
|
}
|
|
18
|
-
function
|
|
18
|
+
function M(t, n) {
|
|
19
19
|
return n === "left" || n === "bottom" && t === "90deg" ? "central" : t === "center" ? "hanging" : "auto";
|
|
20
20
|
}
|
|
21
|
-
function
|
|
21
|
+
function E(t, n) {
|
|
22
22
|
return n === "left" || n === "bottom" && t !== "center" ? "end" : "middle";
|
|
23
23
|
}
|
|
24
|
-
const
|
|
24
|
+
const H = ({
|
|
25
25
|
scale: t,
|
|
26
26
|
tickSize: n = 6,
|
|
27
27
|
tickPadding: i = d,
|
|
28
28
|
orient: e = "bottom",
|
|
29
29
|
labelsPosition: s = "center",
|
|
30
30
|
labels: p = {},
|
|
31
|
-
offset: f = typeof window < "u" && window.devicePixelRatio > 1 ? 0 : 0.5
|
|
31
|
+
offset: f = typeof window < "u" && window.devicePixelRatio > 1 ? 0 : 0.5,
|
|
32
|
+
hiddenLabels: g = !1
|
|
32
33
|
}) => {
|
|
33
|
-
function
|
|
34
|
+
function h(r, o) {
|
|
34
35
|
return r.bandwidth && (o = Math.max(0, r.bandwidth() - o * 2) / 2), r != null && r.round() && (o = Math.round(o)), (c) => {
|
|
35
36
|
const a = r(c);
|
|
36
37
|
return a === void 0 ? 0 : a + o;
|
|
37
38
|
};
|
|
38
39
|
}
|
|
39
|
-
const
|
|
40
|
+
const $ = t.domain(), j = (r) => p[r] ?? [], y = Math.max(n, 0) + i, b = h(t.copy(), f), w = e === "bottom" ? A : B, x = e === "left" ? -1 : 1, T = {
|
|
40
41
|
[(e === "left" ? "x" : "y") + "2"]: x * n
|
|
41
|
-
},
|
|
42
|
-
[e === "left" ? "x" : "y"]: x *
|
|
42
|
+
}, v = {
|
|
43
|
+
[e === "left" ? "x" : "y"]: x * y
|
|
43
44
|
};
|
|
44
|
-
return /* @__PURE__ */ m.jsx("g", { children:
|
|
45
|
-
/* @__PURE__ */ m.jsx("line", { stroke: l, ...
|
|
46
|
-
/* @__PURE__ */ m.jsx("g", { transform:
|
|
45
|
+
return /* @__PURE__ */ m.jsx("g", { children: $.map((r, o) => /* @__PURE__ */ m.jsxs("g", { className: "tick", transform: w(b(r) + f), children: [
|
|
46
|
+
/* @__PURE__ */ m.jsx("line", { stroke: l, ...T }),
|
|
47
|
+
/* @__PURE__ */ m.jsx("g", { transform: F(s, e), children: !g && j(r).map((c, a) => /* @__PURE__ */ m.jsx(
|
|
47
48
|
"text",
|
|
48
49
|
{
|
|
49
50
|
fill: l,
|
|
50
51
|
fontSize: "14px",
|
|
51
52
|
fontWeight: "500",
|
|
52
53
|
fontFamily: "Manrope",
|
|
53
|
-
dominantBaseline:
|
|
54
|
-
textAnchor:
|
|
54
|
+
dominantBaseline: M(s, e),
|
|
55
|
+
textAnchor: E(s, e),
|
|
55
56
|
dy: 20 * a,
|
|
56
|
-
...
|
|
57
|
+
...v,
|
|
57
58
|
children: c
|
|
58
59
|
},
|
|
59
60
|
`${c}_${a}`
|
|
@@ -61,6 +62,6 @@ const C = ({
|
|
|
61
62
|
] }, o)) });
|
|
62
63
|
};
|
|
63
64
|
export {
|
|
64
|
-
|
|
65
|
+
H as BandAxis
|
|
65
66
|
};
|
|
66
67
|
//# sourceMappingURL=BandAxis.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"BandAxis.js","sources":["../../src/common/BandAxis.tsx"],"sourcesContent":["import {BLACK} from '../constants';\nimport {TICK_OFFSET} from '../discrete/constants';\nimport React from 'react';\nimport type {ScaleBand, ScalePoint} from 'd3-scale';\n\ntype Scale = ScaleBand<string> | ScalePoint<string | number>;\ntype Orient = 'left' | 'bottom';\n\nfunction translateX(x: number) {\n return `translate(${x},0)`;\n}\n\nfunction translateY(y: number) {\n return `translate(0,${y})`;\n}\n\ntype LabelsPosition = 'center' | '45deg' | '90deg';\n\nconst FONT_HEIGHT = 21;\nfunction getRotationTransform(labelsPosition: LabelsPosition, orient: 'left' | 'bottom') {\n if (labelsPosition === '45deg') {\n const x = orient === 'left' ? -FONT_HEIGHT / 2 : 0;\n const y = orient === 'bottom' ? FONT_HEIGHT / 2 : -FONT_HEIGHT / 2;\n return `translate(${x},${y}) rotate(-45)`;\n }\n if (labelsPosition === '90deg' && orient === 'bottom') {\n return `translate(${-FONT_HEIGHT / 2},${TICK_OFFSET + FONT_HEIGHT / 2}) rotate(-90)`;\n }\n return orient === 'bottom' ? `translate(0,${TICK_OFFSET})` : `translate(${-TICK_OFFSET},0)`;\n}\n\nfunction getDominantBaseline(labelsPosition: LabelsPosition, orient: 'left' | 'bottom') {\n if (orient === 'left' || (orient === 'bottom' && labelsPosition === '90deg')) {\n return 'central';\n }\n if (labelsPosition === 'center') {\n return 'hanging';\n }\n return 'auto';\n}\n\nfunction getTextAnchor(labelsPosition: LabelsPosition, orient: 'left' | 'bottom') {\n if (orient === 'left' || (orient === 'bottom' && labelsPosition !== 'center')) {\n return 'end';\n }\n return 'middle';\n}\n\nexport const BandAxis = ({\n scale,\n tickSize = 6,\n tickPadding = TICK_OFFSET,\n orient = 'bottom',\n labelsPosition = 'center',\n labels = {},\n offset = typeof window !== 'undefined' && window.devicePixelRatio > 1 ? 0 : 0.5,\n}: {\n scale: Scale;\n tickSize?: number;\n tickPadding?: number;\n offset?: number;\n orient?: Orient;\n labels?: Record<string, string[]>;\n labelsPosition?: 'center' | '45deg' | '90deg';\n}) => {\n function center(scale: Scale, offset: number) {\n if (scale.bandwidth) {\n offset = Math.max(0, scale.bandwidth() - offset * 2) / 2;\n }\n if (scale?.round()) {\n offset = Math.round(offset);\n }\n return (d: string | number) => {\n const value = scale(d as string);\n return value === undefined ? 0 : value + offset;\n };\n }\n\n const values = scale.domain();\n const getLabel = (tick: string | number) => labels[tick] ?? [];\n const spacing = Math.max(tickSize, 0) + tickPadding;\n const position = center(scale.copy(), offset);\n\n const transform = orient === 'bottom' ? translateX : translateY;\n const k = orient === 'left' ? -1 : 1;\n\n const lineProps = {\n [(orient === 'left' ? 'x' : 'y') + '2']: k * tickSize,\n };\n\n const textProps = {\n [orient === 'left' ? 'x' : 'y']: k * spacing,\n };\n\n return (\n <g>\n {values.map((tick: string | number, i: number) => (\n <g className=\"tick\" key={i} transform={transform(position(tick) + offset)}>\n <line stroke={BLACK} {...lineProps} />\n <g transform={getRotationTransform(labelsPosition, orient)}>\n {getLabel(tick).map((line, idx) => {\n return (\n <text\n key={`${line}_${idx}`}\n fill={BLACK}\n fontSize=\"14px\"\n fontWeight=\"500\"\n fontFamily=\"Manrope\"\n dominantBaseline={getDominantBaseline(labelsPosition, orient)}\n textAnchor={getTextAnchor(labelsPosition, orient)}\n dy={20 * idx}\n {...textProps}\n >\n {line}\n </text>\n );\n })}\n </g>\n </g>\n ))}\n </g>\n );\n};\n"],"names":["translateX","x","translateY","y","FONT_HEIGHT","getRotationTransform","labelsPosition","orient","TICK_OFFSET","getDominantBaseline","getTextAnchor","BandAxis","scale","tickSize","tickPadding","labels","offset","center","d","value","values","getLabel","tick","spacing","position","transform","k","lineProps","textProps","i","jsxs","jsx","BLACK","line","idx"],"mappings":";;;AAQA,SAASA,EAAWC,GAAW;AAC3B,SAAO,aAAaA,CAAC;AACzB;AAEA,SAASC,EAAWC,GAAW;AAC3B,SAAO,eAAeA,CAAC;AAC3B;AAIA,MAAMC,IAAc;AACpB,SAASC,EAAqBC,GAAgCC,GAA2B;AACrF,MAAID,MAAmB,SAAS;AAC5B,UAAML,IAAIM,MAAW,SAAS,CAACH,IAAc,IAAI,GAC3CD,IAAII,MAAW,WAAWH,IAAc,IAAI,CAACA,IAAc;AACjE,WAAO,aAAaH,CAAC,IAAIE,CAAC;AAAA,EAC9B;AACA,SAAIG,MAAmB,WAAWC,MAAW,WAClC,aAAa,CAACH,IAAc,CAAC,IAAII,IAAcJ,IAAc,CAAC,kBAElEG,MAAW,WAAW,eAAeC,CAAW,MAAM,aAAa,CAACA,CAAW;AAC1F;AAEA,SAASC,EAAoBH,GAAgCC,GAA2B;AACpF,SAAIA,MAAW,UAAWA,MAAW,YAAYD,MAAmB,UACzD,YAEPA,MAAmB,WACZ,YAEJ;AACX;AAEA,SAASI,EAAcJ,GAAgCC,GAA2B;AAC9E,SAAIA,MAAW,UAAWA,MAAW,YAAYD,MAAmB,WACzD,QAEJ;AACX;AAEO,MAAMK,IAAW,CAAC;AAAA,EACrB,OAAAC;AAAA,EACA,UAAAC,IAAW;AAAA,EACX,aAAAC,IAAcN;AAAA,EACd,QAAAD,IAAS;AAAA,EACT,gBAAAD,IAAiB;AAAA,EACjB,QAAAS,IAAS,CAAA;AAAA,EACT,QAAAC,IAAS,OAAO,SAAW,OAAe,OAAO,mBAAmB,IAAI,IAAI;
|
|
1
|
+
{"version":3,"file":"BandAxis.js","sources":["../../src/common/BandAxis.tsx"],"sourcesContent":["import {BLACK} from '../constants';\nimport {TICK_OFFSET} from '../discrete/constants';\nimport React from 'react';\nimport type {ScaleBand, ScalePoint} from 'd3-scale';\n\ntype Scale = ScaleBand<string> | ScalePoint<string | number>;\ntype Orient = 'left' | 'bottom';\n\nfunction translateX(x: number) {\n return `translate(${x},0)`;\n}\n\nfunction translateY(y: number) {\n return `translate(0,${y})`;\n}\n\ntype LabelsPosition = 'center' | '45deg' | '90deg';\n\nconst FONT_HEIGHT = 21;\nfunction getRotationTransform(labelsPosition: LabelsPosition, orient: 'left' | 'bottom') {\n if (labelsPosition === '45deg') {\n const x = orient === 'left' ? -FONT_HEIGHT / 2 : 0;\n const y = orient === 'bottom' ? FONT_HEIGHT / 2 : -FONT_HEIGHT / 2;\n return `translate(${x},${y}) rotate(-45)`;\n }\n if (labelsPosition === '90deg' && orient === 'bottom') {\n return `translate(${-FONT_HEIGHT / 2},${TICK_OFFSET + FONT_HEIGHT / 2}) rotate(-90)`;\n }\n return orient === 'bottom' ? `translate(0,${TICK_OFFSET})` : `translate(${-TICK_OFFSET},0)`;\n}\n\nfunction getDominantBaseline(labelsPosition: LabelsPosition, orient: 'left' | 'bottom') {\n if (orient === 'left' || (orient === 'bottom' && labelsPosition === '90deg')) {\n return 'central';\n }\n if (labelsPosition === 'center') {\n return 'hanging';\n }\n return 'auto';\n}\n\nfunction getTextAnchor(labelsPosition: LabelsPosition, orient: 'left' | 'bottom') {\n if (orient === 'left' || (orient === 'bottom' && labelsPosition !== 'center')) {\n return 'end';\n }\n return 'middle';\n}\n\nexport const BandAxis = ({\n scale,\n tickSize = 6,\n tickPadding = TICK_OFFSET,\n orient = 'bottom',\n labelsPosition = 'center',\n labels = {},\n offset = typeof window !== 'undefined' && window.devicePixelRatio > 1 ? 0 : 0.5,\n hiddenLabels = false,\n}: {\n scale: Scale;\n tickSize?: number;\n tickPadding?: number;\n offset?: number;\n orient?: Orient;\n labels?: Record<string, string[]>;\n labelsPosition?: 'center' | '45deg' | '90deg';\n hiddenLabels?: boolean;\n}) => {\n function center(scale: Scale, offset: number) {\n if (scale.bandwidth) {\n offset = Math.max(0, scale.bandwidth() - offset * 2) / 2;\n }\n if (scale?.round()) {\n offset = Math.round(offset);\n }\n return (d: string | number) => {\n const value = scale(d as string);\n return value === undefined ? 0 : value + offset;\n };\n }\n\n const values = scale.domain();\n const getLabel = (tick: string | number) => labels[tick] ?? [];\n const spacing = Math.max(tickSize, 0) + tickPadding;\n const position = center(scale.copy(), offset);\n\n const transform = orient === 'bottom' ? translateX : translateY;\n const k = orient === 'left' ? -1 : 1;\n\n const lineProps = {\n [(orient === 'left' ? 'x' : 'y') + '2']: k * tickSize,\n };\n\n const textProps = {\n [orient === 'left' ? 'x' : 'y']: k * spacing,\n };\n\n return (\n <g>\n {values.map((tick: string | number, i: number) => (\n <g className=\"tick\" key={i} transform={transform(position(tick) + offset)}>\n <line stroke={BLACK} {...lineProps} />\n <g transform={getRotationTransform(labelsPosition, orient)}>\n {!hiddenLabels && getLabel(tick).map((line, idx) => {\n return (\n <text\n key={`${line}_${idx}`}\n fill={BLACK}\n fontSize=\"14px\"\n fontWeight=\"500\"\n fontFamily=\"Manrope\"\n dominantBaseline={getDominantBaseline(labelsPosition, orient)}\n textAnchor={getTextAnchor(labelsPosition, orient)}\n dy={20 * idx}\n {...textProps}\n >\n {line}\n </text>\n );\n })}\n </g>\n </g>\n ))}\n </g>\n );\n};\n"],"names":["translateX","x","translateY","y","FONT_HEIGHT","getRotationTransform","labelsPosition","orient","TICK_OFFSET","getDominantBaseline","getTextAnchor","BandAxis","scale","tickSize","tickPadding","labels","offset","hiddenLabels","center","d","value","values","getLabel","tick","spacing","position","transform","k","lineProps","textProps","i","jsxs","jsx","BLACK","line","idx"],"mappings":"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"}
|
|
@@ -1,58 +1,58 @@
|
|
|
1
|
-
import { j as
|
|
2
|
-
import { BLACK as
|
|
1
|
+
import { j as o } from "../_virtual/jsx-runtime.js";
|
|
2
|
+
import { BLACK as l } from "../constants.js";
|
|
3
3
|
import { TICK_OFFSET as s } from "../discrete/constants.js";
|
|
4
4
|
import { getTicksAndFormat as T } from "../scatterplot/utils/getTicksAndFormat.js";
|
|
5
|
-
function
|
|
5
|
+
function v(t) {
|
|
6
6
|
return `translate(${t},0)`;
|
|
7
7
|
}
|
|
8
|
-
function
|
|
8
|
+
function w(t) {
|
|
9
9
|
return `translate(0,${t})`;
|
|
10
10
|
}
|
|
11
|
-
function
|
|
11
|
+
function F(t) {
|
|
12
12
|
return t === "bottom" ? `translate(0,${s})` : `translate(${-s},0)`;
|
|
13
13
|
}
|
|
14
|
-
function
|
|
14
|
+
function $(t) {
|
|
15
15
|
return t === "bottom" ? "hanging" : "central";
|
|
16
16
|
}
|
|
17
|
-
function
|
|
17
|
+
function k(t) {
|
|
18
18
|
return t === "bottom" ? "middle" : "end";
|
|
19
19
|
}
|
|
20
20
|
const E = ({
|
|
21
21
|
scale: t,
|
|
22
22
|
tickSize: a = 6,
|
|
23
|
-
tickPadding:
|
|
23
|
+
tickPadding: f = s,
|
|
24
24
|
orient: n = "bottom",
|
|
25
25
|
onlyPositive: c = !1,
|
|
26
26
|
hiddenLabels: u = !1,
|
|
27
27
|
offset: x = typeof window < "u" && window.devicePixelRatio > 1 ? 0 : 0.5
|
|
28
28
|
}) => {
|
|
29
|
-
function d(
|
|
30
|
-
return (
|
|
31
|
-
const m =
|
|
29
|
+
function d(e) {
|
|
30
|
+
return (r) => {
|
|
31
|
+
const m = e(r);
|
|
32
32
|
return m === void 0 ? 0 : +m;
|
|
33
33
|
};
|
|
34
34
|
}
|
|
35
|
-
const { ticks: p, format: g } =
|
|
35
|
+
const { ticks: p, format: g } = T(t, c, n === "bottom"), h = Math.max(a, 0) + f, b = d(t.copy()), j = n === "bottom" ? v : w, i = n === "left" ? -1 : 1, y = {
|
|
36
36
|
[(n === "left" ? "x" : "y") + "2"]: i * a
|
|
37
37
|
}, A = {
|
|
38
38
|
[n === "left" ? "x" : "y"]: i * h
|
|
39
39
|
};
|
|
40
|
-
return /* @__PURE__ */
|
|
41
|
-
/* @__PURE__ */
|
|
42
|
-
/* @__PURE__ */
|
|
40
|
+
return /* @__PURE__ */ o.jsx("g", { children: p.map((e, r) => /* @__PURE__ */ o.jsxs("g", { className: "tick", transform: j(b(e) + x), children: [
|
|
41
|
+
/* @__PURE__ */ o.jsx("line", { stroke: l, ...y }),
|
|
42
|
+
!u && /* @__PURE__ */ o.jsx("g", { transform: F(n), children: /* @__PURE__ */ o.jsx(
|
|
43
43
|
"text",
|
|
44
44
|
{
|
|
45
|
-
fill:
|
|
45
|
+
fill: l,
|
|
46
46
|
fontSize: "14px",
|
|
47
47
|
fontWeight: "500",
|
|
48
48
|
fontFamily: "Manrope",
|
|
49
|
-
dominantBaseline:
|
|
50
|
-
textAnchor:
|
|
49
|
+
dominantBaseline: $(n),
|
|
50
|
+
textAnchor: k(n),
|
|
51
51
|
...A,
|
|
52
|
-
children: g(
|
|
52
|
+
children: g(e)
|
|
53
53
|
}
|
|
54
54
|
) })
|
|
55
|
-
] },
|
|
55
|
+
] }, r)) });
|
|
56
56
|
};
|
|
57
57
|
export {
|
|
58
58
|
E as ContinuousAxis
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ContinuousAxis.js","sources":["../../src/common/ContinuousAxis.tsx"],"sourcesContent":["import {BLACK} from '../constants';\nimport {TICK_OFFSET} from '../discrete/constants';\nimport {getTicksAndFormat} from '../scatterplot/utils/getTicksAndFormat';\nimport React from 'react';\nimport type {ScaleLinear, ScaleLogarithmic, ScaleSymLog} from 'd3-scale';\n\ntype Scale = ScaleLinear<number, number> | ScaleLogarithmic<number, number> | ScaleSymLog<number, number>;\ntype Orient = 'left' | 'bottom';\n\nfunction translateX(x: number) {\n return `translate(${x},0)`;\n}\n\nfunction translateY(y: number) {\n return `translate(0,${y})`;\n}\n\nfunction getRotationTransform(orient: 'left' | 'bottom') {\n return orient === 'bottom' ? `translate(0,${TICK_OFFSET})` : `translate(${-TICK_OFFSET},0)`;\n}\n\nfunction getDominantBaseline(orient: 'left' | 'bottom') {\n return orient === 'bottom' ? 'hanging' : 'central';\n}\n\nfunction getTextAnchor( orient: 'left' | 'bottom') {\n return orient === 'bottom' ? 'middle' : 'end';\n}\n\nexport const ContinuousAxis = ({\n scale,\n tickSize = 6,\n tickPadding = TICK_OFFSET,\n orient = 'bottom',\n onlyPositive = false,\n hiddenLabels = false,\n offset = typeof window !== 'undefined' && window.devicePixelRatio > 1 ? 0 : 0.5,\n}: {\n scale: Scale;\n tickSize?: number;\n tickPadding?: number;\n offset?: number;\n orient?: Orient;\n hiddenLabels?: boolean;\n onlyPositive?: boolean;\n}) => {\n function number(scale: Scale) {\n return (d: number) => {\n const value = scale(d);\n return value === undefined ? 0 : +value;\n };\n }\n const {ticks: values, format} =
|
|
1
|
+
{"version":3,"file":"ContinuousAxis.js","sources":["../../src/common/ContinuousAxis.tsx"],"sourcesContent":["import {BLACK} from '../constants';\nimport {TICK_OFFSET} from '../discrete/constants';\nimport {getTicksAndFormat} from '../scatterplot/utils/getTicksAndFormat';\nimport React from 'react';\nimport type {ScaleLinear, ScaleLogarithmic, ScaleSymLog} from 'd3-scale';\n\ntype Scale = ScaleLinear<number, number> | ScaleLogarithmic<number, number> | ScaleSymLog<number, number>;\ntype Orient = 'left' | 'bottom';\n\nfunction translateX(x: number) {\n return `translate(${x},0)`;\n}\n\nfunction translateY(y: number) {\n return `translate(0,${y})`;\n}\n\nfunction getRotationTransform(orient: 'left' | 'bottom') {\n return orient === 'bottom' ? `translate(0,${TICK_OFFSET})` : `translate(${-TICK_OFFSET},0)`;\n}\n\nfunction getDominantBaseline(orient: 'left' | 'bottom') {\n return orient === 'bottom' ? 'hanging' : 'central';\n}\n\nfunction getTextAnchor( orient: 'left' | 'bottom') {\n return orient === 'bottom' ? 'middle' : 'end';\n}\n\nexport const ContinuousAxis = ({\n scale,\n tickSize = 6,\n tickPadding = TICK_OFFSET,\n orient = 'bottom',\n onlyPositive = false,\n hiddenLabels = false,\n offset = typeof window !== 'undefined' && window.devicePixelRatio > 1 ? 0 : 0.5,\n}: {\n scale: Scale;\n tickSize?: number;\n tickPadding?: number;\n offset?: number;\n orient?: Orient;\n hiddenLabels?: boolean;\n onlyPositive?: boolean;\n}) => {\n function number(scale: Scale) {\n return (d: number) => {\n const value = scale(d);\n return value === undefined ? 0 : +value;\n };\n }\n const {ticks: values, format} = getTicksAndFormat(scale, onlyPositive, orient === 'bottom');\n const spacing = Math.max(tickSize, 0) + tickPadding,\n position = (number)(scale.copy());\n\n const transform = orient === 'bottom' ? translateX : translateY;\n const k = orient === 'left' ? -1 : 1;\n\n const lineProps = {\n [(orient === 'left' ? 'x' : 'y') + '2']: k * tickSize,\n };\n\n const textProps = {\n [orient === 'left' ? 'x' : 'y']: k * spacing,\n };\n\n return (\n <g>\n {values.map((tick: number, i: number) => (\n <g className=\"tick\" key={i} transform={transform(position(tick) + offset)}>\n <line stroke={BLACK} {...lineProps} />\n {!hiddenLabels && (\n <g transform={getRotationTransform(orient)}>\n <text\n fill={BLACK}\n fontSize=\"14px\"\n fontWeight=\"500\"\n fontFamily=\"Manrope\"\n dominantBaseline={getDominantBaseline(orient)}\n textAnchor={getTextAnchor(orient)}\n {...textProps}\n >\n {format(tick)}\n </text>\n </g>\n )}\n </g>\n ))}\n </g>\n );\n};\n"],"names":["translateX","x","translateY","y","getRotationTransform","orient","TICK_OFFSET","getDominantBaseline","getTextAnchor","ContinuousAxis","scale","tickSize","tickPadding","onlyPositive","hiddenLabels","offset","number","d","value","values","format","getTicksAndFormat","spacing","position","transform","k","lineProps","textProps","tick","i","jsxs","jsx","BLACK"],"mappings":";;;;AASA,SAASA,EAAWC,GAAW;AAC3B,SAAO,aAAaA,CAAC;AACzB;AAEA,SAASC,EAAWC,GAAW;AAC3B,SAAO,eAAeA,CAAC;AAC3B;AAEA,SAASC,EAAqBC,GAA2B;AACrD,SAAOA,MAAW,WAAW,eAAeC,CAAW,MAAM,aAAa,CAACA,CAAW;AAC1F;AAEA,SAASC,EAAoBF,GAA2B;AACpD,SAAOA,MAAW,WAAW,YAAY;AAC7C;AAEA,SAASG,EAAeH,GAA2B;AAC/C,SAAQA,MAAW,WAAW,WAAW;AAC7C;AAEO,MAAMI,IAAiB,CAAC;AAAA,EAC5B,OAAAC;AAAA,EACA,UAAAC,IAAW;AAAA,EACX,aAAAC,IAAcN;AAAA,EACd,QAAAD,IAAS;AAAA,EACT,cAAAQ,IAAe;AAAA,EACf,cAAAC,IAAe;AAAA,EACf,QAAAC,IAAS,OAAO,SAAW,OAAe,OAAO,mBAAmB,IAAI,IAAI;AAC/E,MAQM;AACF,WAASC,EAAON,GAAc;AAC1B,WAAO,CAACO,MAAc;AAClB,YAAMC,IAAQR,EAAMO,CAAC;AACrB,aAAOC,MAAU,SAAY,IAAI,CAACA;AAAA,IACtC;AAAA,EACJ;AACA,QAAM,EAAC,OAAOC,GAAQ,QAAAC,EAAA,IAAUC,EAAkBX,GAAOG,GAAcR,MAAW,QAAQ,GACpFiB,IAAU,KAAK,IAAIX,GAAU,CAAC,IAAIC,GACpCW,IAAYP,EAAQN,EAAM,KAAA,CAAM,GAE9Bc,IAAYnB,MAAW,WAAWL,IAAaE,GAC/CuB,IAAIpB,MAAW,SAAS,KAAK,GAE7BqB,IAAY;AAAA,IACd,EAAErB,MAAW,SAAS,MAAM,OAAO,GAAG,GAAGoB,IAAId;AAAA,EAAA,GAG3CgB,IAAY;AAAA,IACd,CAACtB,MAAW,SAAS,MAAM,GAAG,GAAGoB,IAAIH;AAAA,EAAA;AAGzC,+BACK,KAAA,EACI,UAAAH,EAAO,IAAI,CAACS,GAAcC,MACvBC,gBAAAA,EAAAA,KAAC,KAAA,EAAE,WAAU,QAAe,WAAWN,EAAUD,EAASK,CAAI,IAAIb,CAAM,GACpE,UAAA;AAAA,IAAAgB,gBAAAA,EAAAA,IAAC,QAAA,EAAK,QAAQC,GAAQ,GAAGN,EAAA,CAAW;AAAA,IACnC,CAACZ,KACEiB,gBAAAA,EAAAA,IAAC,OAAE,WAAW3B,EAAqBC,CAAM,GACrC,UAAA0B,gBAAAA,EAAAA;AAAAA,MAAC;AAAA,MAAA;AAAA,QACG,MAAMC;AAAA,QACN,UAAS;AAAA,QACT,YAAW;AAAA,QACX,YAAW;AAAA,QACX,kBAAkBzB,EAAoBF,CAAM;AAAA,QAC5C,YAAYG,EAAcH,CAAM;AAAA,QAC/B,GAAGsB;AAAA,QAEH,YAAOC,CAAI;AAAA,MAAA;AAAA,IAAA,EAChB,CACJ;AAAA,EAAA,KAfiBC,CAiBzB,CACH,GACL;AAER;"}
|
package/dist/common/Legend.js
CHANGED
|
@@ -61,7 +61,7 @@ function y({ aes: e, label: a }) {
|
|
|
61
61
|
/* @__PURE__ */ n.jsx("text", { x: o + 8, y: o / 2, dominantBaseline: "central", fontWeight: 500, children: a })
|
|
62
62
|
] });
|
|
63
63
|
}
|
|
64
|
-
function
|
|
64
|
+
function W({ legendData: e }) {
|
|
65
65
|
const l = e.items.filter((t) => t.type === "continuous");
|
|
66
66
|
return /* @__PURE__ */ n.jsxs("g", { children: [
|
|
67
67
|
/* @__PURE__ */ n.jsx("defs", { children: l.map((t) => /* @__PURE__ */ n.jsx("linearGradient", { id: t.id, gradientTransform: "rotate(90)", children: t.scale.domain().reverse().map((r) => {
|
|
@@ -146,7 +146,7 @@ function b({ legendData: e }) {
|
|
|
146
146
|
t.values.map((s, c) => {
|
|
147
147
|
const f = t.scale(s);
|
|
148
148
|
return /* @__PURE__ */ n.jsxs("g", { transform: `translate(0, ${c * r})`, children: [
|
|
149
|
-
/* @__PURE__ */ n.jsx("circle", { r: f, cx: r / 2, cy: r / 2, fill: i }),
|
|
149
|
+
/* @__PURE__ */ n.jsx("circle", { r: f, cx: r / 2, cy: r / 2, fill: "none", stroke: i, strokeWidth: 1 }),
|
|
150
150
|
/* @__PURE__ */ n.jsx("text", { x: r + 4, y: r / 2, alignmentBaseline: "central", children: t.labels[s] })
|
|
151
151
|
] }, s);
|
|
152
152
|
}),
|
|
@@ -157,6 +157,6 @@ function b({ legendData: e }) {
|
|
|
157
157
|
] });
|
|
158
158
|
}
|
|
159
159
|
export {
|
|
160
|
-
|
|
160
|
+
W as Legend
|
|
161
161
|
};
|
|
162
162
|
//# sourceMappingURL=Legend.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Legend.js","sources":["../../src/common/Legend.tsx"],"sourcesContent":["import { color } from 'd3-color';\nimport { BLACK } from '../constants';\nimport type { AesItem, LineShape } from '../types';\nimport { getPointShape } from '../utils/getPointShape';\nimport type { DotAesItem, LegendData, LegendItemDiscreteMultiAes, LegendItemGradient } from './types';\n\nconst LEGEND_ITEM_SIZE = 12;\nconst TITLE_POSITION = -12;\nconst COLOR_ITEM_WIDTH_C = 14;\n\ninterface LegendProps {\n legendData: LegendData;\n}\n\nfunction getLineShapePath(lineShape:LineShape|null = null):string {\n if (lineShape === 'dashed') {\n return 'M1 11.25H6V12.75H1V11.25ZM9.5 11.25H14.5V12.75H9.5V11.25ZM18 11.25H23V12.75H18V11.25Z';\n }\n if (lineShape === 'dotted') {\n return 'M2.75 11.25H1.25V12.75H2.75V11.25Z M11.25 11.25H12.75V12.75H11.25V11.25Z M22.75 11.25H21.25V12.75H22.75V11.25Z M7.75 11.25H6.25V12.75H7.75V11.25Z M16.25 11.25H17.75V12.75H16.25V11.25Z';\n }\n if (lineShape === 'longdash') {\n return 'M1 11.25H10V12.75H1V11.25ZM14 11.25H23V12.75H14V11.25Z';\n }\n if (lineShape === 'dotdash') {\n return 'M1 11.25H2.5V12.75H1V11.25ZM17 12.75H7V11.25H17V12.75ZM21.5 12.75V11.25H23V12.75H21.5Z';\n }\n if (lineShape === 'twodash') {\n return 'M1 11.25H4V12.75H1V11.25ZM17.0261 12.75H7V11.25H17.0261V12.75ZM20 12.75V11.25H23V12.75H20Z';\n }\n return 'M1 11.25H23V12.75H1V11.25Z';\n}\n\nconst POINT_SIZE = 3;\nconst LINE_WIDTH = 24;\n\nfunction getAesItemStroke(fillColor?:string, lineColor?:string) {\n if (fillColor === 'transparent') {\n return BLACK;\n }\n // black border for white square if fill color is white\n const fill = color(fillColor ?? lineColor ?? '');\n if (fill && fill.formatHex() === '#ffffff') {\n return BLACK;\n }\n return fillColor ?? lineColor;\n}\nfunction AesLegendItem({ aes, label, usedAes }: { aes: AesItem; label: string, usedAes: LegendItemDiscreteMultiAes['usedAes'] }) {\n const needRenderLine = usedAes.lineShape;\n const needRenderDot = usedAes.dotShape;\n const needRenderRect = usedAes.fillColor ||\n (usedAes.lineColor && !usedAes.lineShape) ||\n (usedAes.dotFill && !usedAes.dotShape);\n\n const shape = needRenderDot ? getPointShape(\n aes.dotShape ?? '21',\n POINT_SIZE,\n needRenderRect ? BLACK : aes.dotFill ?? BLACK\n ) : null;\n\n const lineOffset = (needRenderDot && needRenderLine ? 2 * LEGEND_ITEM_SIZE : 0 ) - 6;\n const textOffset = needRenderLine ? lineOffset + LINE_WIDTH + 8 : LEGEND_ITEM_SIZE + 8;\n return (\n <g>\n {needRenderRect && (\n <rect\n width={LEGEND_ITEM_SIZE}\n height={LEGEND_ITEM_SIZE}\n stroke={getAesItemStroke(aes.fillColor, aes.lineColor)}\n fill={aes.fillColor ?? aes.lineColor}\n rx=\"1\"\n ry=\"1\"\n />\n )}\n {needRenderDot && <g transform={`translate(${LEGEND_ITEM_SIZE / 2},${LEGEND_ITEM_SIZE / 2})`}>\n {shape}\n </g>}\n {needRenderLine && (\n <path\n transform={`translate(${lineOffset},-5)`}\n fillRule=\"evenodd\"\n clipRule=\"evenodd\"\n d={getLineShapePath(aes.lineShape)}\n fill={aes.lineColor}\n />\n )}\n <text\n x={textOffset}\n y={LEGEND_ITEM_SIZE / 2}\n dominantBaseline=\"central\"\n fontWeight={500}\n >\n {label}\n </text>\n </g>\n );\n}\n\nfunction DotAesItemElement({aes, label}: {aes: DotAesItem; label: string}) {\n const shape = getPointShape(aes.shape, aes.size, aes.color);\n\n return (\n <g>\n <g transform={`translate(${LEGEND_ITEM_SIZE / 2},${LEGEND_ITEM_SIZE / 2})`}>{shape}</g>\n <text x={LEGEND_ITEM_SIZE + 8} y={LEGEND_ITEM_SIZE / 2} dominantBaseline=\"central\" fontWeight={500}>\n {label}\n </text>\n </g>\n );\n}\n\nexport function Legend({legendData}: LegendProps) {\n const debug = false;\n const continuousItems= legendData.items.filter((item) => item.type === 'continuous') as LegendItemGradient[];\n return (\n <g>\n <defs>\n {continuousItems.map(item => (\n <linearGradient key={item.id} id={item.id} gradientTransform=\"rotate(90)\">\n {item.scale.domain().reverse().map(value => {\n const domain = item.scale.domain();\n const range = domain[domain.length - 1] - domain[0];\n const percent = range > 0 ? 100 - (value - domain[0]) / range * 100 : 0;\n return (\n <stop\n key={value}\n offset={`${percent}%`}\n stopColor={item.scale(value)}\n />\n );\n })}\n </linearGradient>\n ))}\n </defs>\n {legendData.items.map(item => {\n if (item.type === 'continuous') {\n return (\n <g key={item.id} transform={`translate(${item.left},${item.top})`} fontSize=\"14px\">\n <text fontWeight={500} fontSize=\"14px\" y={TITLE_POSITION}>{item.title}</text>\n <rect\n x=\"0\"\n y=\"0\"\n width={COLOR_ITEM_WIDTH_C}\n height={item.height}\n stroke={BLACK}\n fill={`url(#${item.id})`}\n />\n <g transform={`translate(${COLOR_ITEM_WIDTH_C},0)`}>\n {item.values.map(value => {\n const y = item.tickPositionScale(value) ?? 0;\n return (\n <g key={value} transform={`translate(0,${y})`}>\n <line x1=\"0\" x2={-4} stroke={BLACK} />\n <text x={8} y={4}>{value}</text>\n </g>\n );\n })}\n </g>\n {debug && <rect width={item.width} height={item.height} fill=\"none\" stroke=\"black\"/>}\n </g>\n );\n }\n if (item.type === 'discreteColor') {\n return (\n <g key={item.id} transform={`translate(${item.left},${item.top})`} fontSize=\"14px\">\n <text fontWeight={500} y={TITLE_POSITION}>{item.title}</text>\n {item.values.map((value, idx) => {\n return <g key={value} transform={`translate(0, ${idx * (LEGEND_ITEM_SIZE + 4)})`}>\n <rect\n x=\"0\"\n y=\"0\"\n width={LEGEND_ITEM_SIZE}\n height={LEGEND_ITEM_SIZE}\n fill={item.scale(value)}\n rx=\"1\"\n ry=\"1\"\n stroke={BLACK}\n />\n <text x={LEGEND_ITEM_SIZE + 8} y={10}>{item.labels[value] ?? value}</text>\n </g>;\n })}\n {debug && <rect width={item.width} height={item.height} fill=\"none\" stroke=\"black\"/>}\n </g>\n );\n }\n if (item.type === 'discreteMulti') {\n return (\n <g key={item.id} transform={`translate(${item.left},${item.top})`} fontSize=\"14px\" fontWeight={500}>\n <text fontWeight={600} y={TITLE_POSITION}>\n {item.title}\n </text>\n {item.values.map((value, idx) => {\n return (\n <g key={value} transform={`translate(0, ${idx * (LEGEND_ITEM_SIZE + 4)})`}>\n <AesLegendItem\n aes={item.scale(value)}\n label={item.labels[value]}\n usedAes={item.usedAes}\n />\n </g>\n );\n })}\n {debug && <rect width={item.width} height={item.height} fill=\"none\" stroke=\"black\" />}\n </g>\n );\n }\n if (item.type === 'dots') {\n return (\n <g key={item.id} transform={`translate(${item.left},${item.top})`} fontSize=\"14px\" fontWeight={500}>\n <text fontWeight={500} y={TITLE_POSITION}>\n {item.title}\n </text>\n {item.values.map((value, idx) => {\n return (\n <g key={value} transform={`translate(0, ${idx * (LEGEND_ITEM_SIZE + 4)})`}>\n <DotAesItemElement aes={item.scale(value)} label={item.labels[value]} />\n </g>\n );\n })}\n {debug && <rect width={item.width} height={item.height} fill=\"none\" stroke=\"black\" />}\n </g>\n );\n }\n if (item.type === 'size') {\n const size = item.height / item.values.length;\n return (\n <g key={item.id} transform={`translate(${item.left},${item.top})`} fontSize=\"14px\" fontWeight={500}>\n <text fontWeight={500} y={TITLE_POSITION}>\n {item.title}\n </text>\n {item.values.map((value, idx) => {\n const r = item.scale(value);\n return (\n <g key={value} transform={`translate(0, ${idx * size})`}>\n <circle r={r} cx={size / 2} cy={size / 2} fill={BLACK}/>\n <text x={size + 4} y={size / 2} alignmentBaseline=\"central\">{item.labels[value]}</text>\n </g>\n );\n })}\n {debug && <rect width={item.width} height={item.height} fill=\"none\" stroke=\"black\" />}\n </g>\n );\n }\n })}\n </g>\n );\n}\n"],"names":["LEGEND_ITEM_SIZE","TITLE_POSITION","COLOR_ITEM_WIDTH_C","getLineShapePath","lineShape","POINT_SIZE","LINE_WIDTH","getAesItemStroke","fillColor","lineColor","BLACK","fill","color","AesLegendItem","aes","label","usedAes","needRenderLine","needRenderDot","needRenderRect","shape","getPointShape","lineOffset","textOffset","jsx","DotAesItemElement","Legend","legendData","continuousItems","item","value","domain","range","percent","jsxs","y","idx","size","r"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"Legend.js","sources":["../../src/common/Legend.tsx"],"sourcesContent":["import { color } from 'd3-color';\nimport { BLACK } from '../constants';\nimport type { AesItem, LineShape } from '../types';\nimport { getPointShape } from '../utils/getPointShape';\nimport type { DotAesItem, LegendData, LegendItemDiscreteMultiAes, LegendItemGradient } from './types';\n\nconst LEGEND_ITEM_SIZE = 12;\nconst TITLE_POSITION = -12;\nconst COLOR_ITEM_WIDTH_C = 14;\n\ninterface LegendProps {\n legendData: LegendData;\n}\n\nfunction getLineShapePath(lineShape:LineShape|null = null):string {\n if (lineShape === 'dashed') {\n return 'M1 11.25H6V12.75H1V11.25ZM9.5 11.25H14.5V12.75H9.5V11.25ZM18 11.25H23V12.75H18V11.25Z';\n }\n if (lineShape === 'dotted') {\n return 'M2.75 11.25H1.25V12.75H2.75V11.25Z M11.25 11.25H12.75V12.75H11.25V11.25Z M22.75 11.25H21.25V12.75H22.75V11.25Z M7.75 11.25H6.25V12.75H7.75V11.25Z M16.25 11.25H17.75V12.75H16.25V11.25Z';\n }\n if (lineShape === 'longdash') {\n return 'M1 11.25H10V12.75H1V11.25ZM14 11.25H23V12.75H14V11.25Z';\n }\n if (lineShape === 'dotdash') {\n return 'M1 11.25H2.5V12.75H1V11.25ZM17 12.75H7V11.25H17V12.75ZM21.5 12.75V11.25H23V12.75H21.5Z';\n }\n if (lineShape === 'twodash') {\n return 'M1 11.25H4V12.75H1V11.25ZM17.0261 12.75H7V11.25H17.0261V12.75ZM20 12.75V11.25H23V12.75H20Z';\n }\n return 'M1 11.25H23V12.75H1V11.25Z';\n}\n\nconst POINT_SIZE = 3;\nconst LINE_WIDTH = 24;\n\nfunction getAesItemStroke(fillColor?:string, lineColor?:string) {\n if (fillColor === 'transparent') {\n return BLACK;\n }\n // black border for white square if fill color is white\n const fill = color(fillColor ?? lineColor ?? '');\n if (fill && fill.formatHex() === '#ffffff') {\n return BLACK;\n }\n return fillColor ?? lineColor;\n}\nfunction AesLegendItem({ aes, label, usedAes }: { aes: AesItem; label: string, usedAes: LegendItemDiscreteMultiAes['usedAes'] }) {\n const needRenderLine = usedAes.lineShape;\n const needRenderDot = usedAes.dotShape;\n const needRenderRect = usedAes.fillColor ||\n (usedAes.lineColor && !usedAes.lineShape) ||\n (usedAes.dotFill && !usedAes.dotShape);\n\n const shape = needRenderDot ? getPointShape(\n aes.dotShape ?? '21',\n POINT_SIZE,\n needRenderRect ? BLACK : aes.dotFill ?? BLACK\n ) : null;\n\n const lineOffset = (needRenderDot && needRenderLine ? 2 * LEGEND_ITEM_SIZE : 0 ) - 6;\n const textOffset = needRenderLine ? lineOffset + LINE_WIDTH + 8 : LEGEND_ITEM_SIZE + 8;\n return (\n <g>\n {needRenderRect && (\n <rect\n width={LEGEND_ITEM_SIZE}\n height={LEGEND_ITEM_SIZE}\n stroke={getAesItemStroke(aes.fillColor, aes.lineColor)}\n fill={aes.fillColor ?? aes.lineColor}\n rx=\"1\"\n ry=\"1\"\n />\n )}\n {needRenderDot && <g transform={`translate(${LEGEND_ITEM_SIZE / 2},${LEGEND_ITEM_SIZE / 2})`}>\n {shape}\n </g>}\n {needRenderLine && (\n <path\n transform={`translate(${lineOffset},-5)`}\n fillRule=\"evenodd\"\n clipRule=\"evenodd\"\n d={getLineShapePath(aes.lineShape)}\n fill={aes.lineColor}\n />\n )}\n <text\n x={textOffset}\n y={LEGEND_ITEM_SIZE / 2}\n dominantBaseline=\"central\"\n fontWeight={500}\n >\n {label}\n </text>\n </g>\n );\n}\n\nfunction DotAesItemElement({aes, label}: {aes: DotAesItem; label: string}) {\n const shape = getPointShape(aes.shape, aes.size, aes.color);\n\n return (\n <g>\n <g transform={`translate(${LEGEND_ITEM_SIZE / 2},${LEGEND_ITEM_SIZE / 2})`}>{shape}</g>\n <text x={LEGEND_ITEM_SIZE + 8} y={LEGEND_ITEM_SIZE / 2} dominantBaseline=\"central\" fontWeight={500}>\n {label}\n </text>\n </g>\n );\n}\n\nexport function Legend({legendData}: LegendProps) {\n const debug = false;\n const continuousItems= legendData.items.filter((item) => item.type === 'continuous') as LegendItemGradient[];\n return (\n <g>\n <defs>\n {continuousItems.map(item => (\n <linearGradient key={item.id} id={item.id} gradientTransform=\"rotate(90)\">\n {item.scale.domain().reverse().map(value => {\n const domain = item.scale.domain();\n const range = domain[domain.length - 1] - domain[0];\n const percent = range > 0 ? 100 - (value - domain[0]) / range * 100 : 0;\n return (\n <stop\n key={value}\n offset={`${percent}%`}\n stopColor={item.scale(value)}\n />\n );\n })}\n </linearGradient>\n ))}\n </defs>\n {legendData.items.map(item => {\n if (item.type === 'continuous') {\n return (\n <g key={item.id} transform={`translate(${item.left},${item.top})`} fontSize=\"14px\">\n <text fontWeight={500} fontSize=\"14px\" y={TITLE_POSITION}>{item.title}</text>\n <rect\n x=\"0\"\n y=\"0\"\n width={COLOR_ITEM_WIDTH_C}\n height={item.height}\n stroke={BLACK}\n fill={`url(#${item.id})`}\n />\n <g transform={`translate(${COLOR_ITEM_WIDTH_C},0)`}>\n {item.values.map(value => {\n const y = item.tickPositionScale(value) ?? 0;\n return (\n <g key={value} transform={`translate(0,${y})`}>\n <line x1=\"0\" x2={-4} stroke={BLACK} />\n <text x={8} y={4}>{value}</text>\n </g>\n );\n })}\n </g>\n {debug && <rect width={item.width} height={item.height} fill=\"none\" stroke=\"black\"/>}\n </g>\n );\n }\n if (item.type === 'discreteColor') {\n return (\n <g key={item.id} transform={`translate(${item.left},${item.top})`} fontSize=\"14px\">\n <text fontWeight={500} y={TITLE_POSITION}>{item.title}</text>\n {item.values.map((value, idx) => {\n return <g key={value} transform={`translate(0, ${idx * (LEGEND_ITEM_SIZE + 4)})`}>\n <rect\n x=\"0\"\n y=\"0\"\n width={LEGEND_ITEM_SIZE}\n height={LEGEND_ITEM_SIZE}\n fill={item.scale(value)}\n rx=\"1\"\n ry=\"1\"\n stroke={BLACK}\n />\n <text x={LEGEND_ITEM_SIZE + 8} y={10}>{item.labels[value] ?? value}</text>\n </g>;\n })}\n {debug && <rect width={item.width} height={item.height} fill=\"none\" stroke=\"black\"/>}\n </g>\n );\n }\n if (item.type === 'discreteMulti') {\n return (\n <g key={item.id} transform={`translate(${item.left},${item.top})`} fontSize=\"14px\" fontWeight={500}>\n <text fontWeight={600} y={TITLE_POSITION}>\n {item.title}\n </text>\n {item.values.map((value, idx) => {\n return (\n <g key={value} transform={`translate(0, ${idx * (LEGEND_ITEM_SIZE + 4)})`}>\n <AesLegendItem\n aes={item.scale(value)}\n label={item.labels[value]}\n usedAes={item.usedAes}\n />\n </g>\n );\n })}\n {debug && <rect width={item.width} height={item.height} fill=\"none\" stroke=\"black\" />}\n </g>\n );\n }\n if (item.type === 'dots') {\n return (\n <g key={item.id} transform={`translate(${item.left},${item.top})`} fontSize=\"14px\" fontWeight={500}>\n <text fontWeight={500} y={TITLE_POSITION}>\n {item.title}\n </text>\n {item.values.map((value, idx) => {\n return (\n <g key={value} transform={`translate(0, ${idx * (LEGEND_ITEM_SIZE + 4)})`}>\n <DotAesItemElement aes={item.scale(value)} label={item.labels[value]} />\n </g>\n );\n })}\n {debug && <rect width={item.width} height={item.height} fill=\"none\" stroke=\"black\" />}\n </g>\n );\n }\n if (item.type === 'size') {\n const size = item.height / item.values.length;\n return (\n <g key={item.id} transform={`translate(${item.left},${item.top})`} fontSize=\"14px\" fontWeight={500}>\n <text fontWeight={500} y={TITLE_POSITION}>\n {item.title}\n </text>\n {item.values.map((value, idx) => {\n const r = item.scale(value);\n return (\n <g key={value} transform={`translate(0, ${idx * size})`}>\n <circle r={r} cx={size / 2} cy={size / 2} fill=\"none\" stroke={BLACK} strokeWidth={1} />\n <text x={size + 4} y={size / 2} alignmentBaseline=\"central\">{item.labels[value]}</text>\n </g>\n );\n })}\n {debug && <rect width={item.width} height={item.height} fill=\"none\" stroke=\"black\" />}\n </g>\n );\n }\n })}\n </g>\n );\n}\n"],"names":["LEGEND_ITEM_SIZE","TITLE_POSITION","COLOR_ITEM_WIDTH_C","getLineShapePath","lineShape","POINT_SIZE","LINE_WIDTH","getAesItemStroke","fillColor","lineColor","BLACK","fill","color","AesLegendItem","aes","label","usedAes","needRenderLine","needRenderDot","needRenderRect","shape","getPointShape","lineOffset","textOffset","jsx","DotAesItemElement","Legend","legendData","continuousItems","item","value","domain","range","percent","jsxs","y","idx","size","r"],"mappings":"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"}
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { AesRecord, Color, ColumnName, DataValue, DiscreteSettings, FrameType, InheritAesDiscrete, LegendPosition, LineShape, Orientation, BarLayer as OuterBarLayer, BinnedDotsLayer as OuterBinnedDotsLayer, BoxLayer as OuterBoxLayer, DotLayer as OuterDotLayer, ErrorBarLayer as OuterErrorBarLayer, LineLayer as OuterLineLayer, LogoPlotLayer as OuterLogoPlotLayer, PairedPointsLayer as OuterPairedPointsLayer, SinaLayer as OuterSinaLayer, StackedAreaLayer as OuterStackedAreaLayer, StackedBarLayer as OuterStackedBarLayer, StatLayer as OuterStatLayer, ViolinLayer as OuterViolinLayer, PointShape, PValueCorrectionMethod, SettingsInterface, SignificanceLevels, StatTestMethod, SummaryErrorValue, SummaryGroupValue, TitlePosition } from '../types';
|
|
1
|
+
import { AesRecord, AggregationMethod, Color, ColumnName, DataValue, DiscreteSettings, FrameType, InheritAesDiscrete, LegendPosition, LineShape, Orientation, BarLayer as OuterBarLayer, BinnedDotsLayer as OuterBinnedDotsLayer, BoxLayer as OuterBoxLayer, DotLayer as OuterDotLayer, ErrorBarLayer as OuterErrorBarLayer, LineLayer as OuterLineLayer, LogoPlotLayer as OuterLogoPlotLayer, PairedPointsLayer as OuterPairedPointsLayer, SinaLayer as OuterSinaLayer, StackedAreaLayer as OuterStackedAreaLayer, StackedBarLayer as OuterStackedBarLayer, StatLayer as OuterStatLayer, ViolinLayer as OuterViolinLayer, PointShape, PValueCorrectionMethod, SettingsInterface, SignificanceLevels, StatTestMethod, SummaryErrorValue, SummaryGroupValue, TitlePosition } from '../types';
|
|
2
2
|
declare abstract class BaseDiscreteLayer {
|
|
3
3
|
abstract type: string;
|
|
4
4
|
abstract isEqualForCalculation(otherLayer: DiscreteLayer): boolean;
|
|
@@ -97,7 +97,7 @@ export declare class ErrorBarLayer extends BaseDiscreteLayer {
|
|
|
97
97
|
}
|
|
98
98
|
export declare class BarLayer extends BaseDiscreteLayer {
|
|
99
99
|
readonly type = "bar";
|
|
100
|
-
readonly height:
|
|
100
|
+
readonly height: AggregationMethod;
|
|
101
101
|
readonly aes: {
|
|
102
102
|
width: number | 'auto';
|
|
103
103
|
lineColor: InheritAesDiscrete | Color;
|
|
@@ -111,7 +111,7 @@ export declare class BarLayer extends BaseDiscreteLayer {
|
|
|
111
111
|
export declare class StackedBarLayer extends BaseDiscreteLayer {
|
|
112
112
|
readonly type = "stackedBar";
|
|
113
113
|
readonly normalize: boolean;
|
|
114
|
-
readonly height:
|
|
114
|
+
readonly height: AggregationMethod;
|
|
115
115
|
readonly aes: {
|
|
116
116
|
width: number | 'auto';
|
|
117
117
|
lineColor: InheritAesDiscrete | Color;
|
|
@@ -125,7 +125,7 @@ export declare class StackedBarLayer extends BaseDiscreteLayer {
|
|
|
125
125
|
export declare class StackedAreaLayer extends BaseDiscreteLayer {
|
|
126
126
|
readonly type = "stackedArea";
|
|
127
127
|
readonly normalize: boolean;
|
|
128
|
-
readonly height:
|
|
128
|
+
readonly height: AggregationMethod;
|
|
129
129
|
readonly showBars: boolean;
|
|
130
130
|
readonly aes: {
|
|
131
131
|
barWidth: number | 'auto';
|
|
@@ -220,12 +220,14 @@ export declare class DiscreteSettingsImpl implements SettingsInterface {
|
|
|
220
220
|
order?: DataValue[];
|
|
221
221
|
inheritedAes?: AesRecord;
|
|
222
222
|
allowNullGroup?: boolean;
|
|
223
|
+
unlimitedGroupsCount?: boolean;
|
|
223
224
|
} | null;
|
|
224
225
|
readonly secondaryGrouping: {
|
|
225
226
|
columnName: ColumnName;
|
|
226
227
|
order?: DataValue[];
|
|
227
228
|
inheritedAes?: AesRecord;
|
|
228
229
|
allowNullGroup?: boolean;
|
|
230
|
+
unlimitedGroupsCount?: boolean;
|
|
229
231
|
} | null;
|
|
230
232
|
readonly facetSettings: {
|
|
231
233
|
sharedX: boolean;
|
|
@@ -1,16 +1,16 @@
|
|
|
1
1
|
var S = Object.defineProperty;
|
|
2
2
|
var x = (o, i, t) => i in o ? S(o, i, { enumerable: !0, configurable: !0, writable: !0, value: t }) : o[i] = t;
|
|
3
3
|
var e = (o, i, t) => x(o, typeof i != "symbol" ? i + "" : i, t);
|
|
4
|
-
import { DEFAULT_HEIGHT_SMALL as b, DEFAULT_HEIGHT as
|
|
4
|
+
import { DEFAULT_HEIGHT_SMALL as b, DEFAULT_HEIGHT as G, DEFAULT_WIDTH_SMALL as k, DEFAULT_WIDTH as z, BLACK as n } from "../constants.js";
|
|
5
5
|
import "../types/common.js";
|
|
6
|
-
import { DiscreteSettingsSchema as
|
|
6
|
+
import { DiscreteSettingsSchema as E } from "../types/discrete.js";
|
|
7
7
|
import "../types/scatterplot.js";
|
|
8
8
|
import "../types/heatmap.js";
|
|
9
9
|
import "../types/dendro.js";
|
|
10
10
|
import "../types/histogram.js";
|
|
11
11
|
import "../types/bubble.js";
|
|
12
|
-
import { PADDINGS as
|
|
13
|
-
import
|
|
12
|
+
import { PADDINGS as F, MIN_MARGIN as v } from "./constants.js";
|
|
13
|
+
import B from "../_virtual/lodash.js";
|
|
14
14
|
import { exhaustive as O } from "../utils/index.js";
|
|
15
15
|
const u = "#3e9838", h = "21", p = 3;
|
|
16
16
|
class r {
|
|
@@ -346,17 +346,17 @@ class et {
|
|
|
346
346
|
e(this, "chartSettings");
|
|
347
347
|
e(this, "layers");
|
|
348
348
|
var t, a, l, c, d, m, f, w, C, y;
|
|
349
|
-
|
|
349
|
+
E.parse(i), this.id = B.uniqueId("settings"), this.y = i.y, this.keyColumn = i.keyColumn ?? null, this.primaryGrouping = i.primaryGrouping ? { unlimitedGroupsCount: !1, ...i.primaryGrouping } : null, this.secondaryGrouping = i.secondaryGrouping ? { unlimitedGroupsCount: !1, ...i.secondaryGrouping } : null, this.facetSettings = {
|
|
350
350
|
sharedX: !0,
|
|
351
351
|
sharedY: !0,
|
|
352
352
|
titlePosition: "left",
|
|
353
353
|
...i.facetSettings
|
|
354
354
|
}, this.facetBy = i.facetBy ?? [], this.chartSettings = {
|
|
355
355
|
size: {
|
|
356
|
-
width: ((t = i == null ? void 0 : i.size) == null ? void 0 : t.width) ?? (this.facetBy.length ?
|
|
357
|
-
height: ((a = i == null ? void 0 : i.size) == null ? void 0 : a.height) ?? (this.facetBy.length ? b :
|
|
358
|
-
outerOffset: ((l = i == null ? void 0 : i.size) == null ? void 0 : l.outerOffset) ??
|
|
359
|
-
innerOffset: ((c = i == null ? void 0 : i.size) == null ? void 0 : c.innerOffset) ??
|
|
356
|
+
width: ((t = i == null ? void 0 : i.size) == null ? void 0 : t.width) ?? (this.facetBy.length ? k : z),
|
|
357
|
+
height: ((a = i == null ? void 0 : i.size) == null ? void 0 : a.height) ?? (this.facetBy.length ? b : G),
|
|
358
|
+
outerOffset: ((l = i == null ? void 0 : i.size) == null ? void 0 : l.outerOffset) ?? v,
|
|
359
|
+
innerOffset: ((c = i == null ? void 0 : i.size) == null ? void 0 : c.innerOffset) ?? F.TOP
|
|
360
360
|
},
|
|
361
361
|
title: {
|
|
362
362
|
position: "center",
|