@visactor/vgrammar-plot 0.6.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +3 -0
- package/README.zh-CN.md +0 -0
- package/cjs/area.d.ts +14 -0
- package/cjs/area.js +83 -0
- package/cjs/area.js.map +1 -0
- package/cjs/cell.d.ts +14 -0
- package/cjs/cell.js +51 -0
- package/cjs/cell.js.map +1 -0
- package/cjs/circle-packing.d.ts +17 -0
- package/cjs/circle-packing.js +76 -0
- package/cjs/circle-packing.js.map +1 -0
- package/cjs/enums.d.ts +24 -0
- package/cjs/enums.js +17 -0
- package/cjs/enums.js.map +1 -0
- package/cjs/image.d.ts +13 -0
- package/cjs/image.js +77 -0
- package/cjs/image.js.map +1 -0
- package/cjs/index.d.ts +1 -0
- package/cjs/index.js +15 -0
- package/cjs/index.js.map +1 -0
- package/cjs/interval.d.ts +19 -0
- package/cjs/interval.js +102 -0
- package/cjs/interval.js.map +1 -0
- package/cjs/line.d.ts +14 -0
- package/cjs/line.js +52 -0
- package/cjs/line.js.map +1 -0
- package/cjs/path.d.ts +11 -0
- package/cjs/path.js +25 -0
- package/cjs/path.js.map +1 -0
- package/cjs/plot-all.d.ts +2 -0
- package/cjs/plot-all.js +19 -0
- package/cjs/plot-all.js.map +1 -0
- package/cjs/plot.d.ts +46 -0
- package/cjs/plot.js +265 -0
- package/cjs/plot.js.map +1 -0
- package/cjs/polygon.d.ts +12 -0
- package/cjs/polygon.js +44 -0
- package/cjs/polygon.js.map +1 -0
- package/cjs/rect-x.d.ts +13 -0
- package/cjs/rect-x.js +67 -0
- package/cjs/rect-x.js.map +1 -0
- package/cjs/rect-y.d.ts +13 -0
- package/cjs/rect-y.js +67 -0
- package/cjs/rect-y.js.map +1 -0
- package/cjs/rect.d.ts +13 -0
- package/cjs/rect.js +82 -0
- package/cjs/rect.js.map +1 -0
- package/cjs/rule-x.d.ts +12 -0
- package/cjs/rule-x.js +37 -0
- package/cjs/rule-x.js.map +1 -0
- package/cjs/rule-y.d.ts +12 -0
- package/cjs/rule-y.js +36 -0
- package/cjs/rule-y.js.map +1 -0
- package/cjs/rule.d.ts +12 -0
- package/cjs/rule.js +45 -0
- package/cjs/rule.js.map +1 -0
- package/cjs/sankey.d.ts +46 -0
- package/cjs/sankey.js +139 -0
- package/cjs/sankey.js.map +1 -0
- package/cjs/semantic-mark.d.ts +88 -0
- package/cjs/semantic-mark.js +846 -0
- package/cjs/semantic-mark.js.map +1 -0
- package/cjs/sunburst.d.ts +45 -0
- package/cjs/sunburst.js +134 -0
- package/cjs/sunburst.js.map +1 -0
- package/cjs/symbol.d.ts +13 -0
- package/cjs/symbol.js +53 -0
- package/cjs/symbol.js.map +1 -0
- package/cjs/text.d.ts +12 -0
- package/cjs/text.js +32 -0
- package/cjs/text.js.map +1 -0
- package/cjs/tree.d.ts +20 -0
- package/cjs/tree.js +128 -0
- package/cjs/tree.js.map +1 -0
- package/cjs/treemap.d.ts +41 -0
- package/cjs/treemap.js +109 -0
- package/cjs/treemap.js.map +1 -0
- package/cjs/util.d.ts +3 -0
- package/cjs/util.js +11 -0
- package/cjs/util.js.map +1 -0
- package/cjs/wordcloud-shape.d.ts +13 -0
- package/cjs/wordcloud-shape.js +85 -0
- package/cjs/wordcloud-shape.js.map +1 -0
- package/cjs/wordcloud.d.ts +13 -0
- package/cjs/wordcloud.js +81 -0
- package/cjs/wordcloud.js.map +1 -0
- package/dist/index.js +3291 -0
- package/dist/index.min.js +1 -0
- package/es/area.d.ts +14 -0
- package/es/area.js +83 -0
- package/es/area.js.map +1 -0
- package/es/cell.d.ts +14 -0
- package/es/cell.js +49 -0
- package/es/cell.js.map +1 -0
- package/es/circle-packing.d.ts +17 -0
- package/es/circle-packing.js +75 -0
- package/es/circle-packing.js.map +1 -0
- package/es/enums.d.ts +24 -0
- package/es/enums.js +13 -0
- package/es/enums.js.map +1 -0
- package/es/image.d.ts +13 -0
- package/es/image.js +74 -0
- package/es/image.js.map +1 -0
- package/es/index.d.ts +1 -0
- package/es/index.js +2 -0
- package/es/index.js.map +1 -0
- package/es/interval.d.ts +19 -0
- package/es/interval.js +103 -0
- package/es/interval.js.map +1 -0
- package/es/line.d.ts +14 -0
- package/es/line.js +50 -0
- package/es/line.js.map +1 -0
- package/es/path.d.ts +11 -0
- package/es/path.js +23 -0
- package/es/path.js.map +1 -0
- package/es/plot-all.d.ts +2 -0
- package/es/plot-all.js +50 -0
- package/es/plot-all.js.map +1 -0
- package/es/plot.d.ts +46 -0
- package/es/plot.js +263 -0
- package/es/plot.js.map +1 -0
- package/es/polygon.d.ts +12 -0
- package/es/polygon.js +43 -0
- package/es/polygon.js.map +1 -0
- package/es/rect-x.d.ts +13 -0
- package/es/rect-x.js +69 -0
- package/es/rect-x.js.map +1 -0
- package/es/rect-y.d.ts +13 -0
- package/es/rect-y.js +69 -0
- package/es/rect-y.js.map +1 -0
- package/es/rect.d.ts +13 -0
- package/es/rect.js +84 -0
- package/es/rect.js.map +1 -0
- package/es/rule-x.d.ts +12 -0
- package/es/rule-x.js +35 -0
- package/es/rule-x.js.map +1 -0
- package/es/rule-y.d.ts +12 -0
- package/es/rule-y.js +34 -0
- package/es/rule-y.js.map +1 -0
- package/es/rule.d.ts +12 -0
- package/es/rule.js +45 -0
- package/es/rule.js.map +1 -0
- package/es/sankey.d.ts +46 -0
- package/es/sankey.js +137 -0
- package/es/sankey.js.map +1 -0
- package/es/semantic-mark.d.ts +88 -0
- package/es/semantic-mark.js +833 -0
- package/es/semantic-mark.js.map +1 -0
- package/es/sunburst.d.ts +45 -0
- package/es/sunburst.js +133 -0
- package/es/sunburst.js.map +1 -0
- package/es/symbol.d.ts +13 -0
- package/es/symbol.js +51 -0
- package/es/symbol.js.map +1 -0
- package/es/text.d.ts +12 -0
- package/es/text.js +30 -0
- package/es/text.js.map +1 -0
- package/es/tree.d.ts +20 -0
- package/es/tree.js +127 -0
- package/es/tree.js.map +1 -0
- package/es/treemap.d.ts +41 -0
- package/es/treemap.js +108 -0
- package/es/treemap.js.map +1 -0
- package/es/util.d.ts +3 -0
- package/es/util.js +3 -0
- package/es/util.js.map +1 -0
- package/es/wordcloud-shape.d.ts +13 -0
- package/es/wordcloud-shape.js +84 -0
- package/es/wordcloud-shape.js.map +1 -0
- package/es/wordcloud.d.ts +13 -0
- package/es/wordcloud.js +80 -0
- package/es/wordcloud.js.map +1 -0
- package/package.json +73 -0
package/README.md
ADDED
package/README.zh-CN.md
ADDED
|
File without changes
|
package/cjs/area.d.ts
ADDED
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
import type { AreaEncodeChannels, SemanticTooltipOption, WithDefaultEncode, PlotAreaEncoderSpec, GenerateBaseEncodeSpec, Nil, ScaleSpec, ValueOf, CrosshairSpec } from '@visactor/vgrammar';
|
|
2
|
+
import { SemanticMark } from './semantic-mark';
|
|
3
|
+
import { GrammarMarkType } from '@visactor/vgrammar';
|
|
4
|
+
import { PlotMakType } from './enums';
|
|
5
|
+
export declare class Area extends SemanticMark<PlotAreaEncoderSpec, AreaEncodeChannels> {
|
|
6
|
+
static readonly type = PlotMakType.area;
|
|
7
|
+
constructor(id?: string | number);
|
|
8
|
+
setMarkType(): GrammarMarkType;
|
|
9
|
+
protected parseScaleOfEncodeX(option: ValueOf<WithDefaultEncode<PlotAreaEncoderSpec, AreaEncodeChannels>, AreaEncodeChannels>): ScaleSpec | Nil;
|
|
10
|
+
parseScaleByEncode(channel: AreaEncodeChannels, option: ValueOf<WithDefaultEncode<PlotAreaEncoderSpec, AreaEncodeChannels>, AreaEncodeChannels>): ScaleSpec | Nil;
|
|
11
|
+
setDefaultCrosshair(): Record<string, Pick<CrosshairSpec, 'crosshairShape' | 'crosshairType'>>;
|
|
12
|
+
setDefaultTooltip(): SemanticTooltipOption | Nil;
|
|
13
|
+
convertMarkEncode(encode: WithDefaultEncode<PlotAreaEncoderSpec, AreaEncodeChannels>): GenerateBaseEncodeSpec<PlotAreaEncoderSpec>;
|
|
14
|
+
}
|
package/cjs/area.js
ADDED
|
@@ -0,0 +1,83 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
Object.defineProperty(exports, "__esModule", {
|
|
4
|
+
value: !0
|
|
5
|
+
}), exports.Area = void 0;
|
|
6
|
+
|
|
7
|
+
const semantic_mark_1 = require("./semantic-mark"), vgrammar_1 = require("@visactor/vgrammar"), vutils_1 = require("@visactor/vutils"), enums_1 = require("./enums");
|
|
8
|
+
|
|
9
|
+
class Area extends semantic_mark_1.SemanticMark {
|
|
10
|
+
constructor(id) {
|
|
11
|
+
super(enums_1.PlotMakType.area, id);
|
|
12
|
+
}
|
|
13
|
+
setMarkType() {
|
|
14
|
+
return vgrammar_1.GrammarMarkType.area;
|
|
15
|
+
}
|
|
16
|
+
parseScaleOfEncodeX(option) {
|
|
17
|
+
const res = super.parseScaleOfEncodeX(option);
|
|
18
|
+
return res.type = "point", res;
|
|
19
|
+
}
|
|
20
|
+
parseScaleByEncode(channel, option) {
|
|
21
|
+
return this.parseScaleOfCommonEncode(channel, option);
|
|
22
|
+
}
|
|
23
|
+
setDefaultCrosshair() {
|
|
24
|
+
return {
|
|
25
|
+
x: {
|
|
26
|
+
crosshairShape: "line"
|
|
27
|
+
}
|
|
28
|
+
};
|
|
29
|
+
}
|
|
30
|
+
setDefaultTooltip() {
|
|
31
|
+
var _a, _b;
|
|
32
|
+
const encodeX = null === (_a = this.spec.encode) || void 0 === _a ? void 0 : _a.x, encodeY = null === (_b = this.spec.encode) || void 0 === _b ? void 0 : _b.y;
|
|
33
|
+
return {
|
|
34
|
+
disableGraphicTooltip: !0,
|
|
35
|
+
title: (0, vutils_1.isArray)(encodeX) ? encodeX[0] : encodeX,
|
|
36
|
+
content: (0, vutils_1.isArray)(encodeY) ? encodeY.map((entry => ({
|
|
37
|
+
value: entry
|
|
38
|
+
}))) : [ {
|
|
39
|
+
value: encodeY
|
|
40
|
+
} ]
|
|
41
|
+
};
|
|
42
|
+
}
|
|
43
|
+
convertMarkEncode(encode) {
|
|
44
|
+
var _a, _b, _c, _d, _e;
|
|
45
|
+
const markEncoder = this.convertSimpleMarkEncode(encode);
|
|
46
|
+
let res;
|
|
47
|
+
if ((0, vutils_1.isArray)(null === (_a = markEncoder.x) || void 0 === _a ? void 0 : _a.field)) res = {
|
|
48
|
+
y: markEncoder.y,
|
|
49
|
+
x: {
|
|
50
|
+
field: markEncoder.x.field[0],
|
|
51
|
+
scale: markEncoder.x.scale
|
|
52
|
+
},
|
|
53
|
+
x1: {
|
|
54
|
+
field: markEncoder.x.field[1],
|
|
55
|
+
scale: markEncoder.x.scale
|
|
56
|
+
}
|
|
57
|
+
}; else if ((0, vutils_1.isArray)(null === (_b = markEncoder.y) || void 0 === _b ? void 0 : _b.field)) res = {
|
|
58
|
+
y: {
|
|
59
|
+
field: markEncoder.y.field[0],
|
|
60
|
+
scale: markEncoder.y.scale
|
|
61
|
+
},
|
|
62
|
+
y1: {
|
|
63
|
+
field: markEncoder.y.field[1],
|
|
64
|
+
scale: markEncoder.y.scale
|
|
65
|
+
},
|
|
66
|
+
x: markEncoder.x
|
|
67
|
+
}; else {
|
|
68
|
+
const scaleYId = this.getScaleId("y");
|
|
69
|
+
res = {
|
|
70
|
+
x: markEncoder.x,
|
|
71
|
+
y: markEncoder.y,
|
|
72
|
+
y1: (datum, el, params) => {
|
|
73
|
+
const scale = params[scaleYId], domain = scale.domain(), min = Math.min.apply(null, domain), max = Math.max.apply(null, domain), baseValue = min > 0 ? min : max < 0 ? max : 0;
|
|
74
|
+
return scale.scale(baseValue);
|
|
75
|
+
}
|
|
76
|
+
};
|
|
77
|
+
}
|
|
78
|
+
return markEncoder.color || markEncoder.group ? res.fill = null !== (_c = markEncoder.color) && void 0 !== _c ? _c : markEncoder.group : res.fill = null !== (_e = null === (_d = this.spec.style) || void 0 === _d ? void 0 : _d.fill) && void 0 !== _e ? _e : (0,
|
|
79
|
+
vgrammar_1.getPalette)()[0], res;
|
|
80
|
+
}
|
|
81
|
+
}
|
|
82
|
+
|
|
83
|
+
exports.Area = Area, Area.type = enums_1.PlotMakType.area;
|
package/cjs/area.js.map
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../src/area.ts"],"names":[],"mappings":"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","file":"area.js","sourcesContent":["import type {\n AreaEncodeChannels,\n SemanticTooltipOption,\n WithDefaultEncode,\n PlotAreaEncoderSpec,\n GenerateBaseEncodeSpec,\n GenerateEncoderSpec,\n Nil,\n ScaleSpec,\n ValueOf,\n IElement,\n CrosshairSpec\n} from '@visactor/vgrammar';\nimport { SemanticMark } from './semantic-mark';\nimport { getPalette, GrammarMarkType } from '@visactor/vgrammar';\nimport { isArray } from '@visactor/vutils';\nimport { PlotMakType } from './enums';\n\nexport class Area extends SemanticMark<PlotAreaEncoderSpec, AreaEncodeChannels> {\n static readonly type = PlotMakType.area;\n constructor(id?: string | number) {\n super(PlotMakType.area, id);\n }\n\n setMarkType() {\n return GrammarMarkType.area;\n }\n\n protected parseScaleOfEncodeX(\n option: ValueOf<WithDefaultEncode<PlotAreaEncoderSpec, AreaEncodeChannels>, AreaEncodeChannels>\n ): ScaleSpec | Nil {\n const res = super.parseScaleOfEncodeX(option);\n\n res.type = 'point';\n return res;\n }\n\n parseScaleByEncode(\n channel: AreaEncodeChannels,\n option: ValueOf<WithDefaultEncode<PlotAreaEncoderSpec, AreaEncodeChannels>, AreaEncodeChannels>\n ): ScaleSpec | Nil {\n return this.parseScaleOfCommonEncode(channel, option);\n }\n\n setDefaultCrosshair(): Record<string, Pick<CrosshairSpec, 'crosshairShape' | 'crosshairType'>> {\n return {\n x: { crosshairShape: 'line' }\n };\n }\n\n setDefaultTooltip(): SemanticTooltipOption | Nil {\n const encodeX = this.spec.encode?.x;\n const encodeY = this.spec.encode?.y;\n return {\n disableGraphicTooltip: true,\n title: isArray(encodeX) ? encodeX[0] : encodeX,\n content: isArray(encodeY)\n ? encodeY.map(entry => {\n return {\n value: entry\n };\n })\n : [\n {\n value: encodeY\n }\n ]\n };\n }\n\n convertMarkEncode(\n encode: WithDefaultEncode<PlotAreaEncoderSpec, AreaEncodeChannels>\n ): GenerateBaseEncodeSpec<PlotAreaEncoderSpec> {\n const markEncoder = this.convertSimpleMarkEncode(encode);\n\n let res: GenerateEncoderSpec<PlotAreaEncoderSpec>;\n\n if (isArray(markEncoder.x?.field)) {\n res = {\n y: markEncoder.y,\n x: { field: markEncoder.x.field[0], scale: markEncoder.x.scale },\n x1: { field: markEncoder.x.field[1], scale: markEncoder.x.scale }\n } as GenerateEncoderSpec<PlotAreaEncoderSpec>;\n } else if (isArray(markEncoder.y?.field)) {\n res = {\n y: { field: markEncoder.y.field[0], scale: markEncoder.y.scale },\n y1: { field: markEncoder.y.field[1], scale: markEncoder.y.scale },\n x: markEncoder.x\n } as GenerateEncoderSpec<PlotAreaEncoderSpec>;\n } else {\n const scaleYId = this.getScaleId('y');\n res = {\n x: markEncoder.x,\n y: markEncoder.y,\n y1: (datum: any, el: IElement, params: any) => {\n const scale = params[scaleYId];\n const domain = scale.domain();\n const min = Math.min.apply(null, domain);\n const max = Math.max.apply(null, domain);\n const baseValue = min > 0 ? min : max < 0 ? max : 0;\n\n return scale.scale(baseValue);\n }\n } as GenerateEncoderSpec<PlotAreaEncoderSpec>;\n }\n\n if (markEncoder.color || markEncoder.group) {\n res.fill = markEncoder.color ?? markEncoder.group;\n } else {\n res.fill = this.spec.style?.fill ?? getPalette()[0];\n }\n\n return res;\n }\n}\n"]}
|
package/cjs/cell.d.ts
ADDED
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
import type { BasicEncoderSpecMap, GenerateBaseEncodeSpec, Nil, ScaleSpec, ValueOf, CrosshairSpec, CellEncodeChannels, SemanticTooltipOption, WithDefaultEncode } from '@visactor/vgrammar';
|
|
2
|
+
import { SemanticMark } from './semantic-mark';
|
|
3
|
+
import { GrammarMarkType } from '@visactor/vgrammar';
|
|
4
|
+
import { PlotMakType } from './enums';
|
|
5
|
+
export declare class Cell extends SemanticMark<BasicEncoderSpecMap['cell'], CellEncodeChannels> {
|
|
6
|
+
static readonly type = PlotMakType.cell;
|
|
7
|
+
constructor(id?: string | number);
|
|
8
|
+
setMarkType(): GrammarMarkType;
|
|
9
|
+
protected parseScaleOfEncodeX(option: ValueOf<WithDefaultEncode<BasicEncoderSpecMap['cell'], CellEncodeChannels>, CellEncodeChannels>): ScaleSpec | Nil;
|
|
10
|
+
parseScaleByEncode(channel: CellEncodeChannels, option: ValueOf<WithDefaultEncode<BasicEncoderSpecMap['cell'], CellEncodeChannels>, CellEncodeChannels>): ScaleSpec | Nil;
|
|
11
|
+
setDefaultCrosshair(): Record<string, Pick<CrosshairSpec, 'crosshairShape' | 'crosshairType'>>;
|
|
12
|
+
setDefaultTooltip(): SemanticTooltipOption | Nil;
|
|
13
|
+
convertMarkEncode(encode: WithDefaultEncode<BasicEncoderSpecMap['cell'], CellEncodeChannels>): GenerateBaseEncodeSpec<BasicEncoderSpecMap['cell']>;
|
|
14
|
+
}
|
package/cjs/cell.js
ADDED
|
@@ -0,0 +1,51 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
Object.defineProperty(exports, "__esModule", {
|
|
4
|
+
value: !0
|
|
5
|
+
}), exports.Cell = void 0;
|
|
6
|
+
|
|
7
|
+
const semantic_mark_1 = require("./semantic-mark"), vgrammar_1 = require("@visactor/vgrammar"), enums_1 = require("./enums");
|
|
8
|
+
|
|
9
|
+
class Cell extends semantic_mark_1.SemanticMark {
|
|
10
|
+
constructor(id) {
|
|
11
|
+
super(enums_1.PlotMakType.cell, id);
|
|
12
|
+
}
|
|
13
|
+
setMarkType() {
|
|
14
|
+
return vgrammar_1.GrammarMarkType.cell;
|
|
15
|
+
}
|
|
16
|
+
parseScaleOfEncodeX(option) {
|
|
17
|
+
const res = super.parseScaleOfEncodeX(option);
|
|
18
|
+
return res.type = "point", res;
|
|
19
|
+
}
|
|
20
|
+
parseScaleByEncode(channel, option) {
|
|
21
|
+
return this.parseScaleOfCommonEncode(channel, option);
|
|
22
|
+
}
|
|
23
|
+
setDefaultCrosshair() {
|
|
24
|
+
return {
|
|
25
|
+
x: {
|
|
26
|
+
crosshairShape: "line"
|
|
27
|
+
}
|
|
28
|
+
};
|
|
29
|
+
}
|
|
30
|
+
setDefaultTooltip() {
|
|
31
|
+
var _a, _b;
|
|
32
|
+
return {
|
|
33
|
+
title: null === (_a = this.spec.encode) || void 0 === _a ? void 0 : _a.x,
|
|
34
|
+
content: [ {
|
|
35
|
+
value: null === (_b = this.spec.encode) || void 0 === _b ? void 0 : _b.y
|
|
36
|
+
} ]
|
|
37
|
+
};
|
|
38
|
+
}
|
|
39
|
+
convertMarkEncode(encode) {
|
|
40
|
+
var _a, _b, _c;
|
|
41
|
+
const markEncoder = this.convertSimpleMarkEncode(encode), res = {
|
|
42
|
+
y: markEncoder.y,
|
|
43
|
+
x: markEncoder.x
|
|
44
|
+
};
|
|
45
|
+
return markEncoder.color || markEncoder.group ? res.stroke = null !== (_a = markEncoder.color) && void 0 !== _a ? _a : markEncoder.group : res.stroke = null !== (_c = null === (_b = this.spec.style) || void 0 === _b ? void 0 : _b.fill) && void 0 !== _c ? _c : (0,
|
|
46
|
+
vgrammar_1.getPalette)()[0], res;
|
|
47
|
+
}
|
|
48
|
+
}
|
|
49
|
+
|
|
50
|
+
exports.Cell = Cell, Cell.type = enums_1.PlotMakType.cell;
|
|
51
|
+
//# sourceMappingURL=cell.js.map
|
package/cjs/cell.js.map
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../src/cell.ts"],"names":[],"mappings":";;;AAYA,mDAA+C;AAC/C,iDAAiE;AACjE,mCAAsC;AAEtC,MAAa,IAAK,SAAQ,4BAA6D;IAErF,YAAY,EAAoB;QAC9B,KAAK,CAAC,mBAAW,CAAC,IAAI,EAAE,EAAE,CAAC,CAAC;IAC9B,CAAC;IAED,WAAW;QACT,OAAO,0BAAe,CAAC,IAAI,CAAC;IAC9B,CAAC;IAES,mBAAmB,CAC3B,MAAuG;QAEvG,MAAM,GAAG,GAAG,KAAK,CAAC,mBAAmB,CAAC,MAAM,CAAC,CAAC;QAE9C,GAAG,CAAC,IAAI,GAAG,OAAO,CAAC;QACnB,OAAO,GAAG,CAAC;IACb,CAAC;IAED,kBAAkB,CAChB,OAA2B,EAC3B,MAAuG;QAEvG,OAAO,IAAI,CAAC,wBAAwB,CAAC,OAAO,EAAE,MAAM,CAAC,CAAC;IACxD,CAAC;IAED,mBAAmB;QACjB,OAAO;YACL,CAAC,EAAE,EAAE,cAAc,EAAE,MAAM,EAAE;SAC9B,CAAC;IACJ,CAAC;IAED,iBAAiB;;QACf,OAAO;YACL,KAAK,EAAE,MAAA,IAAI,CAAC,IAAI,CAAC,MAAM,0CAAE,CAAC;YAC1B,OAAO,EAAE;gBACP;oBACE,KAAK,EAAE,MAAA,IAAI,CAAC,IAAI,CAAC,MAAM,0CAAE,CAAC;iBAC3B;aACF;SACF,CAAC;IACJ,CAAC;IAED,iBAAiB,CACf,MAA0E;;QAE1E,MAAM,WAAW,GAAG,IAAI,CAAC,uBAAuB,CAAC,MAAM,CAAC,CAAC;QAEzD,MAAM,GAAG,GAAG;YACV,CAAC,EAAE,WAAW,CAAC,CAAC;YAChB,CAAC,EAAE,WAAW,CAAC,CAAC;SACmC,CAAC;QAEtD,IAAI,WAAW,CAAC,KAAK,IAAI,WAAW,CAAC,KAAK,EAAE;YAC1C,GAAG,CAAC,MAAM,GAAG,MAAA,WAAW,CAAC,KAAK,mCAAI,WAAW,CAAC,KAAK,CAAC;SACrD;aAAM;YACL,GAAG,CAAC,MAAM,GAAG,MAAA,MAAA,IAAI,CAAC,IAAI,CAAC,KAAK,0CAAE,IAAI,mCAAI,IAAA,qBAAU,GAAE,CAAC,CAAC,CAAC,CAAC;SACvD;QAED,OAAO,GAAG,CAAC;IACb,CAAC;;AA5DH,oBA6DC;AA5DiB,SAAI,GAAG,mBAAW,CAAC,IAAI,CAAC","file":"cell.js","sourcesContent":["import type {\n BasicEncoderSpecMap,\n GenerateBaseEncodeSpec,\n GenerateEncoderSpec,\n Nil,\n ScaleSpec,\n ValueOf,\n CrosshairSpec,\n CellEncodeChannels,\n SemanticTooltipOption,\n WithDefaultEncode\n} from '@visactor/vgrammar';\nimport { SemanticMark } from './semantic-mark';\nimport { getPalette, GrammarMarkType } from '@visactor/vgrammar';\nimport { PlotMakType } from './enums';\n\nexport class Cell extends SemanticMark<BasicEncoderSpecMap['cell'], CellEncodeChannels> {\n static readonly type = PlotMakType.cell;\n constructor(id?: string | number) {\n super(PlotMakType.cell, id);\n }\n\n setMarkType() {\n return GrammarMarkType.cell;\n }\n\n protected parseScaleOfEncodeX(\n option: ValueOf<WithDefaultEncode<BasicEncoderSpecMap['cell'], CellEncodeChannels>, CellEncodeChannels>\n ): ScaleSpec | Nil {\n const res = super.parseScaleOfEncodeX(option);\n\n res.type = 'point';\n return res;\n }\n\n parseScaleByEncode(\n channel: CellEncodeChannels,\n option: ValueOf<WithDefaultEncode<BasicEncoderSpecMap['cell'], CellEncodeChannels>, CellEncodeChannels>\n ): ScaleSpec | Nil {\n return this.parseScaleOfCommonEncode(channel, option);\n }\n\n setDefaultCrosshair(): Record<string, Pick<CrosshairSpec, 'crosshairShape' | 'crosshairType'>> {\n return {\n x: { crosshairShape: 'line' }\n };\n }\n\n setDefaultTooltip(): SemanticTooltipOption | Nil {\n return {\n title: this.spec.encode?.x,\n content: [\n {\n value: this.spec.encode?.y\n }\n ]\n };\n }\n\n convertMarkEncode(\n encode: WithDefaultEncode<BasicEncoderSpecMap['cell'], CellEncodeChannels>\n ): GenerateBaseEncodeSpec<BasicEncoderSpecMap['cell']> {\n const markEncoder = this.convertSimpleMarkEncode(encode);\n\n const res = {\n y: markEncoder.y,\n x: markEncoder.x\n } as GenerateEncoderSpec<BasicEncoderSpecMap['cell']>;\n\n if (markEncoder.color || markEncoder.group) {\n res.stroke = markEncoder.color ?? markEncoder.group;\n } else {\n res.stroke = this.spec.style?.fill ?? getPalette()[0];\n }\n\n return res;\n }\n}\n"]}
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
import type { GenerateBaseEncodeSpec, Nil, ScaleSpec, ValueOf, TransformSpec, ChannelEncodeType, CirclepackingEncodeChannels, WithDefaultEncode, PlotCirclePackingEncodeSpec, SemanticLabelOption } from '@visactor/vgrammar';
|
|
2
|
+
import { SemanticMark } from './semantic-mark';
|
|
3
|
+
import { GrammarMarkType } from '@visactor/vgrammar';
|
|
4
|
+
import { PlotMakType } from './enums';
|
|
5
|
+
import type { ITextAttribute } from '@visactor/vrender';
|
|
6
|
+
export declare class CirclePackingSemanticMark extends SemanticMark<PlotCirclePackingEncodeSpec, CirclepackingEncodeChannels> {
|
|
7
|
+
static readonly type = PlotMakType.circlePacking;
|
|
8
|
+
constructor(id?: string | number);
|
|
9
|
+
setMarkType(): GrammarMarkType;
|
|
10
|
+
setDefaultDataTransform(): TransformSpec[];
|
|
11
|
+
parseScaleByEncode(channel: CirclepackingEncodeChannels, option: ValueOf<WithDefaultEncode<PlotCirclePackingEncodeSpec, CirclepackingEncodeChannels>, CirclepackingEncodeChannels>): ScaleSpec | Nil;
|
|
12
|
+
convertMarkEncode(encode: WithDefaultEncode<PlotCirclePackingEncodeSpec, CirclepackingEncodeChannels>): GenerateBaseEncodeSpec<PlotCirclePackingEncodeSpec>;
|
|
13
|
+
setMainMarkSpec(): {
|
|
14
|
+
key: string;
|
|
15
|
+
};
|
|
16
|
+
protected setLabelTextGetter(channel: string, option: SemanticLabelOption | boolean): ChannelEncodeType<ITextAttribute['text']>;
|
|
17
|
+
}
|
|
@@ -0,0 +1,76 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
Object.defineProperty(exports, "__esModule", {
|
|
4
|
+
value: !0
|
|
5
|
+
}), exports.CirclePackingSemanticMark = void 0;
|
|
6
|
+
|
|
7
|
+
const semantic_mark_1 = require("./semantic-mark"), vgrammar_1 = require("@visactor/vgrammar"), enums_1 = require("./enums"), vgrammar_util_1 = require("@visactor/vgrammar-util");
|
|
8
|
+
|
|
9
|
+
class CirclePackingSemanticMark extends semantic_mark_1.SemanticMark {
|
|
10
|
+
constructor(id) {
|
|
11
|
+
super(enums_1.PlotMakType.circlePacking, id), (0, vgrammar_1.getTransform)(enums_1.PlotMakType.circlePacking) || this._logger.error("Please add this line of code: import { registerCirclePackingTransforms } from '@visactor/vgrammar-hierarchy'; \n and run registerCirclePackingTransforms() before use treemap chart");
|
|
12
|
+
}
|
|
13
|
+
setMarkType() {
|
|
14
|
+
return vgrammar_1.GrammarMarkType.circle;
|
|
15
|
+
}
|
|
16
|
+
setDefaultDataTransform() {
|
|
17
|
+
var _a;
|
|
18
|
+
return [ {
|
|
19
|
+
type: enums_1.PlotMakType.circlePacking,
|
|
20
|
+
width: {
|
|
21
|
+
signal: "viewWidth"
|
|
22
|
+
},
|
|
23
|
+
height: {
|
|
24
|
+
signal: "viewHeight"
|
|
25
|
+
},
|
|
26
|
+
nodeKey: null === (_a = this.spec.encode) || void 0 === _a ? void 0 : _a.node,
|
|
27
|
+
flatten: !0
|
|
28
|
+
} ];
|
|
29
|
+
}
|
|
30
|
+
parseScaleByEncode(channel, option) {
|
|
31
|
+
return "color" === channel ? {
|
|
32
|
+
type: "ordinal",
|
|
33
|
+
id: this.getScaleId("color"),
|
|
34
|
+
domain: {
|
|
35
|
+
data: this.getDataIdOfFiltered(),
|
|
36
|
+
field: option
|
|
37
|
+
},
|
|
38
|
+
range: (0, vgrammar_1.getPalette)()
|
|
39
|
+
} : null;
|
|
40
|
+
}
|
|
41
|
+
convertMarkEncode(encode) {
|
|
42
|
+
var _a, _b;
|
|
43
|
+
const markEncoder = this.convertSimpleMarkEncode(encode), res = {
|
|
44
|
+
x: {
|
|
45
|
+
field: "x"
|
|
46
|
+
},
|
|
47
|
+
y: {
|
|
48
|
+
field: "y"
|
|
49
|
+
},
|
|
50
|
+
radius: {
|
|
51
|
+
field: "radius"
|
|
52
|
+
}
|
|
53
|
+
};
|
|
54
|
+
if (markEncoder.color) {
|
|
55
|
+
const scaleColorId = this.getScaleId("color"), colorAccessor = (0, vgrammar_util_1.field)(markEncoder.color.field);
|
|
56
|
+
res.fill = (datum, el, params) => {
|
|
57
|
+
const scale = params[scaleColorId];
|
|
58
|
+
return (null == datum ? void 0 : datum.datum) ? scale.scale(colorAccessor(datum.datum[datum.datum.length - 1])) : void 0;
|
|
59
|
+
};
|
|
60
|
+
} else res.fill = null !== (_b = null === (_a = this.spec.style) || void 0 === _a ? void 0 : _a.fill) && void 0 !== _b ? _b : (0,
|
|
61
|
+
vgrammar_1.getPalette)()[0];
|
|
62
|
+
return res;
|
|
63
|
+
}
|
|
64
|
+
setMainMarkSpec() {
|
|
65
|
+
return {
|
|
66
|
+
key: "key"
|
|
67
|
+
};
|
|
68
|
+
}
|
|
69
|
+
setLabelTextGetter(channel, option) {
|
|
70
|
+
const textGetter = (0, vgrammar_util_1.field)(channel);
|
|
71
|
+
return (datum, el, params) => textGetter(datum.datum[datum.datum.length - 1]);
|
|
72
|
+
}
|
|
73
|
+
}
|
|
74
|
+
|
|
75
|
+
exports.CirclePackingSemanticMark = CirclePackingSemanticMark, CirclePackingSemanticMark.type = enums_1.PlotMakType.circlePacking;
|
|
76
|
+
//# sourceMappingURL=circle-packing.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../src/circle-packing.ts"],"names":[],"mappings":"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","file":"circle-packing.js","sourcesContent":["import type {\n GenerateBaseEncodeSpec,\n GenerateEncoderSpec,\n Nil,\n ScaleSpec,\n ValueOf,\n TransformSpec,\n IElement,\n ChannelEncodeType,\n CirclepackingEncodeChannels,\n WithDefaultEncode,\n PlotCirclePackingEncodeSpec,\n SemanticLabelOption\n} from '@visactor/vgrammar';\nimport { SemanticMark } from './semantic-mark';\nimport { getPalette, GrammarMarkType, getTransform } from '@visactor/vgrammar';\nimport { PlotMakType } from './enums';\nimport { field as getFieldAccessor } from '@visactor/vgrammar-util';\nimport type { ITextAttribute } from '@visactor/vrender';\n\nexport class CirclePackingSemanticMark extends SemanticMark<PlotCirclePackingEncodeSpec, CirclepackingEncodeChannels> {\n static readonly type = PlotMakType.circlePacking;\n constructor(id?: string | number) {\n super(PlotMakType.circlePacking, id);\n\n if (!getTransform(PlotMakType.circlePacking)) {\n this._logger.error(\n `Please add this line of code: import { registerCirclePackingTransforms } from '@visactor/vgrammar-hierarchy'; \n and run registerCirclePackingTransforms() before use treemap chart`\n );\n }\n }\n\n setMarkType() {\n return GrammarMarkType.circle;\n }\n\n setDefaultDataTransform(): TransformSpec[] {\n return [\n {\n type: PlotMakType.circlePacking,\n width: { signal: 'viewWidth' },\n height: { signal: 'viewHeight' },\n nodeKey: this.spec.encode?.node,\n flatten: true\n }\n ];\n }\n parseScaleByEncode(\n channel: CirclepackingEncodeChannels,\n option: ValueOf<\n WithDefaultEncode<PlotCirclePackingEncodeSpec, CirclepackingEncodeChannels>,\n CirclepackingEncodeChannels\n >\n ): ScaleSpec | Nil {\n if (channel === 'color') {\n return {\n type: 'ordinal',\n id: this.getScaleId('color'),\n domain: {\n data: this.getDataIdOfFiltered(),\n field: option as string\n },\n range: getPalette()\n };\n }\n\n return null;\n }\n\n convertMarkEncode(\n encode: WithDefaultEncode<PlotCirclePackingEncodeSpec, CirclepackingEncodeChannels>\n ): GenerateBaseEncodeSpec<PlotCirclePackingEncodeSpec> {\n const markEncoder = this.convertSimpleMarkEncode(encode);\n\n const res: GenerateEncoderSpec<PlotCirclePackingEncodeSpec> = {\n x: { field: 'x' },\n y: { field: 'y' },\n radius: { field: 'radius' }\n };\n\n if (markEncoder.color) {\n const scaleColorId = this.getScaleId('color');\n const colorAccessor = getFieldAccessor(markEncoder.color.field);\n\n res.fill = (datum: any, el: IElement, params: any) => {\n const scale = params[scaleColorId];\n return datum?.datum ? scale.scale(colorAccessor(datum.datum[datum.datum.length - 1])) : undefined;\n };\n } else {\n res.fill = this.spec.style?.fill ?? getPalette()[0];\n }\n\n return res;\n }\n\n setMainMarkSpec() {\n return { key: 'key' };\n }\n\n protected setLabelTextGetter(\n channel: string,\n option: SemanticLabelOption | boolean\n ): ChannelEncodeType<ITextAttribute['text']> {\n const textGetter = getFieldAccessor(channel);\n return (datum: any, el: IElement, params: any) => {\n return textGetter(datum.datum[datum.datum.length - 1]);\n };\n }\n}\n"]}
|
package/cjs/enums.d.ts
ADDED
|
@@ -0,0 +1,24 @@
|
|
|
1
|
+
export declare enum PlotMakType {
|
|
2
|
+
area = "area",
|
|
3
|
+
cell = "cell",
|
|
4
|
+
image = "image",
|
|
5
|
+
interval = "interval",
|
|
6
|
+
line = "line",
|
|
7
|
+
path = "path",
|
|
8
|
+
polygon = "polygon",
|
|
9
|
+
rectX = "rectX",
|
|
10
|
+
rectY = "rectY",
|
|
11
|
+
rect = "rect",
|
|
12
|
+
ruleX = "ruleX",
|
|
13
|
+
ruleY = "ruleY",
|
|
14
|
+
rule = "rule",
|
|
15
|
+
symbol = "symbol",
|
|
16
|
+
text = "text",
|
|
17
|
+
tree = "tree",
|
|
18
|
+
circlePacking = "circlePacking",
|
|
19
|
+
sunburst = "sunburst",
|
|
20
|
+
treemap = "treemap",
|
|
21
|
+
sankey = "sankey",
|
|
22
|
+
wordcloud = "wordcloud",
|
|
23
|
+
wordcloudShape = "wordcloudShape"
|
|
24
|
+
}
|
package/cjs/enums.js
ADDED
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
var PlotMakType;
|
|
4
|
+
|
|
5
|
+
Object.defineProperty(exports, "__esModule", {
|
|
6
|
+
value: !0
|
|
7
|
+
}), exports.PlotMakType = void 0, function(PlotMakType) {
|
|
8
|
+
PlotMakType.area = "area", PlotMakType.cell = "cell", PlotMakType.image = "image",
|
|
9
|
+
PlotMakType.interval = "interval", PlotMakType.line = "line", PlotMakType.path = "path",
|
|
10
|
+
PlotMakType.polygon = "polygon", PlotMakType.rectX = "rectX", PlotMakType.rectY = "rectY",
|
|
11
|
+
PlotMakType.rect = "rect", PlotMakType.ruleX = "ruleX", PlotMakType.ruleY = "ruleY",
|
|
12
|
+
PlotMakType.rule = "rule", PlotMakType.symbol = "symbol", PlotMakType.text = "text",
|
|
13
|
+
PlotMakType.tree = "tree", PlotMakType.circlePacking = "circlePacking", PlotMakType.sunburst = "sunburst",
|
|
14
|
+
PlotMakType.treemap = "treemap", PlotMakType.sankey = "sankey", PlotMakType.wordcloud = "wordcloud",
|
|
15
|
+
PlotMakType.wordcloudShape = "wordcloudShape";
|
|
16
|
+
}(PlotMakType = exports.PlotMakType || (exports.PlotMakType = {}));
|
|
17
|
+
//# sourceMappingURL=enums.js.map
|
package/cjs/enums.js.map
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../src/enums.ts"],"names":[],"mappings":";;;AAAA,IAAY,WAwBX;AAxBD,WAAY,WAAW;IACrB,4BAAa,CAAA;IACb,4BAAa,CAAA;IACb,8BAAe,CAAA;IACf,oCAAqB,CAAA;IACrB,4BAAa,CAAA;IACb,4BAAa,CAAA;IACb,kCAAmB,CAAA;IACnB,8BAAe,CAAA;IACf,8BAAe,CAAA;IACf,4BAAa,CAAA;IACb,8BAAe,CAAA;IACf,8BAAe,CAAA;IACf,4BAAa,CAAA;IACb,gCAAiB,CAAA;IACjB,4BAAa,CAAA;IAEb,4BAAa,CAAA;IACb,8CAA+B,CAAA;IAC/B,oCAAqB,CAAA;IACrB,kCAAmB,CAAA;IACnB,gCAAiB,CAAA;IACjB,sCAAuB,CAAA;IACvB,gDAAiC,CAAA;AACnC,CAAC,EAxBW,WAAW,GAAX,mBAAW,KAAX,mBAAW,QAwBtB","file":"enums.js","sourcesContent":["export enum PlotMakType {\n area = 'area',\n cell = 'cell',\n image = 'image',\n interval = 'interval',\n line = 'line',\n path = 'path',\n polygon = 'polygon',\n rectX = 'rectX',\n rectY = 'rectY',\n rect = 'rect',\n ruleX = 'ruleX',\n ruleY = 'ruleY',\n rule = 'rule',\n symbol = 'symbol',\n text = 'text',\n\n tree = 'tree',\n circlePacking = 'circlePacking',\n sunburst = 'sunburst',\n treemap = 'treemap',\n sankey = 'sankey',\n wordcloud = 'wordcloud',\n wordcloudShape = 'wordcloudShape'\n}\n"]}
|
package/cjs/image.d.ts
ADDED
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
import { SemanticMark } from './semantic-mark';
|
|
2
|
+
import type { ImageEncodeChannels, WithDefaultEncode, PlotImageEncoderSpec, GenerateBaseEncodeSpec, Nil, ScaleSpec, ValueOf } from '@visactor/vgrammar';
|
|
3
|
+
import { GrammarMarkType } from '@visactor/vgrammar';
|
|
4
|
+
import { PlotMakType } from './enums';
|
|
5
|
+
export declare class ImageSemanticMark extends SemanticMark<PlotImageEncoderSpec, ImageEncodeChannels> {
|
|
6
|
+
static readonly type = PlotMakType.image;
|
|
7
|
+
static defaultSpec: PlotImageEncoderSpec;
|
|
8
|
+
constructor(id?: string | number);
|
|
9
|
+
setMarkType(): GrammarMarkType;
|
|
10
|
+
protected parseScaleOfEncodeX(option: ValueOf<WithDefaultEncode<PlotImageEncoderSpec, ImageEncodeChannels>, ImageEncodeChannels>): ScaleSpec | Nil;
|
|
11
|
+
parseScaleByEncode(channel: ImageEncodeChannels, option: ValueOf<WithDefaultEncode<PlotImageEncoderSpec, ImageEncodeChannels>, ImageEncodeChannels>): ScaleSpec | Nil;
|
|
12
|
+
convertMarkEncode(encode: WithDefaultEncode<PlotImageEncoderSpec, ImageEncodeChannels>): GenerateBaseEncodeSpec<PlotImageEncoderSpec>;
|
|
13
|
+
}
|
package/cjs/image.js
ADDED
|
@@ -0,0 +1,77 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
Object.defineProperty(exports, "__esModule", {
|
|
4
|
+
value: !0
|
|
5
|
+
}), exports.ImageSemanticMark = void 0;
|
|
6
|
+
|
|
7
|
+
const semantic_mark_1 = require("./semantic-mark"), vgrammar_1 = require("@visactor/vgrammar"), vutils_1 = require("@visactor/vutils"), vgrammar_util_1 = require("@visactor/vgrammar-util"), enums_1 = require("./enums");
|
|
8
|
+
|
|
9
|
+
class ImageSemanticMark extends semantic_mark_1.SemanticMark {
|
|
10
|
+
constructor(id) {
|
|
11
|
+
super(enums_1.PlotMakType.image, id);
|
|
12
|
+
}
|
|
13
|
+
setMarkType() {
|
|
14
|
+
return vgrammar_1.GrammarMarkType.image;
|
|
15
|
+
}
|
|
16
|
+
parseScaleOfEncodeX(option) {
|
|
17
|
+
const res = super.parseScaleOfEncodeX(option);
|
|
18
|
+
return res.type = "point", res;
|
|
19
|
+
}
|
|
20
|
+
parseScaleByEncode(channel, option) {
|
|
21
|
+
return "src" === channel ? {
|
|
22
|
+
type: "ordinal",
|
|
23
|
+
id: this.getScaleId("src"),
|
|
24
|
+
domain: {
|
|
25
|
+
data: this.getDataIdOfMain(),
|
|
26
|
+
field: option
|
|
27
|
+
}
|
|
28
|
+
} : this.parseScaleOfCommonEncode(channel, option);
|
|
29
|
+
}
|
|
30
|
+
convertMarkEncode(encode) {
|
|
31
|
+
var _a, _b, _c, _d, _e, _f, _g, _h, _j;
|
|
32
|
+
const markEncoder = this.convertSimpleMarkEncode(encode), scaleXId = this.getScaleId("x"), scaleYId = this.getScaleId("y"), res = {
|
|
33
|
+
image: markEncoder.src
|
|
34
|
+
};
|
|
35
|
+
if (markEncoder.src && (res.image = markEncoder.src), (0, vutils_1.isArray)(null === (_a = markEncoder.x) || void 0 === _a ? void 0 : _a.field)) {
|
|
36
|
+
const xAccessor = (0, vgrammar_util_1.field)(markEncoder.x.field[0]), x1Accessor = (0,
|
|
37
|
+
vgrammar_util_1.field)(markEncoder.x.field[1]);
|
|
38
|
+
res.x = (datum, el, params) => {
|
|
39
|
+
const scale = params[scaleXId];
|
|
40
|
+
return Math.min(scale.scale(xAccessor(datum)), scale.scale(x1Accessor(datum)));
|
|
41
|
+
}, res.width = (datum, el, params) => {
|
|
42
|
+
const scale = params[scaleXId];
|
|
43
|
+
return Math.abs(scale.scale(xAccessor(datum)) - scale.scale(x1Accessor(datum)));
|
|
44
|
+
};
|
|
45
|
+
} else {
|
|
46
|
+
const width = null !== (_c = null === (_b = this.spec.style) || void 0 === _b ? void 0 : _b.width) && void 0 !== _c ? _c : ImageSemanticMark.defaultSpec.width, xAccessor = (0,
|
|
47
|
+
vgrammar_util_1.field)(markEncoder.x.field);
|
|
48
|
+
res.x = (datum, el, params) => params[scaleXId].scale(xAccessor(datum)) - width / 2,
|
|
49
|
+
res.width = width;
|
|
50
|
+
}
|
|
51
|
+
if ((0, vutils_1.isArray)(null === (_d = markEncoder.y) || void 0 === _d ? void 0 : _d.field)) {
|
|
52
|
+
const yAccessor = (0, vgrammar_util_1.field)(markEncoder.y.field[0]), y1Accessor = (0,
|
|
53
|
+
vgrammar_util_1.field)(markEncoder.y.field[1]);
|
|
54
|
+
res.y = (datum, el, params) => {
|
|
55
|
+
const scale = params[scaleYId];
|
|
56
|
+
return Math.min(scale.scale(yAccessor(datum)), scale.scale(y1Accessor(datum)));
|
|
57
|
+
}, res.height = (datum, el, params) => {
|
|
58
|
+
const scale = params[scaleYId];
|
|
59
|
+
return Math.abs(scale.scale(yAccessor(datum)) - scale.scale(y1Accessor(datum)));
|
|
60
|
+
};
|
|
61
|
+
} else {
|
|
62
|
+
const height = null !== (_f = null === (_e = this.spec.style) || void 0 === _e ? void 0 : _e.height) && void 0 !== _f ? _f : ImageSemanticMark.defaultSpec.height, yAccessor = (0,
|
|
63
|
+
vgrammar_util_1.field)(markEncoder.y.field);
|
|
64
|
+
res.y = (datum, el, params) => params[scaleXId].scale(yAccessor(datum)) - height / 2,
|
|
65
|
+
res.height = height;
|
|
66
|
+
}
|
|
67
|
+
return markEncoder.color || markEncoder.group ? res.fill = null !== (_g = markEncoder.color) && void 0 !== _g ? _g : markEncoder.group : res.fill = null !== (_j = null === (_h = this.spec.style) || void 0 === _h ? void 0 : _h.fill) && void 0 !== _j ? _j : (0,
|
|
68
|
+
vgrammar_1.getPalette)()[0], res;
|
|
69
|
+
}
|
|
70
|
+
}
|
|
71
|
+
|
|
72
|
+
exports.ImageSemanticMark = ImageSemanticMark, ImageSemanticMark.type = enums_1.PlotMakType.image,
|
|
73
|
+
ImageSemanticMark.defaultSpec = {
|
|
74
|
+
width: 10,
|
|
75
|
+
height: 10
|
|
76
|
+
};
|
|
77
|
+
//# sourceMappingURL=image.js.map
|
package/cjs/image.js.map
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../src/image.ts"],"names":[],"mappings":"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","file":"image.js","sourcesContent":["import { SemanticMark } from './semantic-mark';\nimport type {\n ImageEncodeChannels,\n WithDefaultEncode,\n PlotImageEncoderSpec,\n GenerateBaseEncodeSpec,\n GenerateEncoderSpec,\n IElement,\n Nil,\n ScaleSpec,\n ValueOf\n} from '@visactor/vgrammar';\nimport { getPalette, GrammarMarkType } from '@visactor/vgrammar';\nimport { isArray } from '@visactor/vutils';\nimport { field as getFieldAccessor } from '@visactor/vgrammar-util';\nimport { PlotMakType } from './enums';\n\nexport class ImageSemanticMark extends SemanticMark<PlotImageEncoderSpec, ImageEncodeChannels> {\n static readonly type = PlotMakType.image;\n static defaultSpec: PlotImageEncoderSpec = { width: 10, height: 10 };\n constructor(id?: string | number) {\n super(PlotMakType.image, id);\n }\n\n setMarkType() {\n return GrammarMarkType.image;\n }\n\n protected parseScaleOfEncodeX(\n option: ValueOf<WithDefaultEncode<PlotImageEncoderSpec, ImageEncodeChannels>, ImageEncodeChannels>\n ): ScaleSpec | Nil {\n const res = super.parseScaleOfEncodeX(option);\n\n res.type = 'point';\n return res;\n }\n\n parseScaleByEncode(\n channel: ImageEncodeChannels,\n option: ValueOf<WithDefaultEncode<PlotImageEncoderSpec, ImageEncodeChannels>, ImageEncodeChannels>\n ): ScaleSpec | Nil {\n if (channel === 'src') {\n return {\n type: 'ordinal',\n id: this.getScaleId('src'),\n domain: {\n data: this.getDataIdOfMain(),\n field: option as string\n }\n };\n }\n\n return this.parseScaleOfCommonEncode(channel, option);\n }\n\n convertMarkEncode(\n encode: WithDefaultEncode<PlotImageEncoderSpec, ImageEncodeChannels>\n ): GenerateBaseEncodeSpec<PlotImageEncoderSpec> {\n const markEncoder = this.convertSimpleMarkEncode(encode);\n const scaleXId = this.getScaleId('x');\n const scaleYId = this.getScaleId('y');\n const res: GenerateEncoderSpec<PlotImageEncoderSpec> = {\n image: markEncoder.src\n };\n\n if (markEncoder.src) {\n res.image = markEncoder.src;\n }\n\n if (isArray(markEncoder.x?.field)) {\n const xAccessor = getFieldAccessor(markEncoder.x.field[0]);\n const x1Accessor = getFieldAccessor(markEncoder.x.field[1]);\n res.x = (datum: any, el: IElement, params: any) => {\n const scale = params[scaleXId];\n\n return Math.min(scale.scale(xAccessor(datum)), scale.scale(x1Accessor(datum)));\n };\n res.width = (datum: any, el: IElement, params: any) => {\n const scale = params[scaleXId];\n\n return Math.abs(scale.scale(xAccessor(datum)) - scale.scale(x1Accessor(datum)));\n };\n } else {\n const width = this.spec.style?.width ?? ImageSemanticMark.defaultSpec.width;\n const xAccessor = getFieldAccessor(markEncoder.x.field);\n\n res.x = (datum: any, el: IElement, params: any) => {\n const scale = params[scaleXId];\n\n return scale.scale(xAccessor(datum)) - width / 2;\n };\n res.width = width;\n }\n\n if (isArray(markEncoder.y?.field)) {\n const yAccessor = getFieldAccessor(markEncoder.y.field[0]);\n const y1Accessor = getFieldAccessor(markEncoder.y.field[1]);\n res.y = (datum: any, el: IElement, params: any) => {\n const scale = params[scaleYId];\n\n return Math.min(scale.scale(yAccessor(datum)), scale.scale(y1Accessor(datum)));\n };\n res.height = (datum: any, el: IElement, params: any) => {\n const scale = params[scaleYId];\n\n return Math.abs(scale.scale(yAccessor(datum)) - scale.scale(y1Accessor(datum)));\n };\n } else {\n const height = this.spec.style?.height ?? ImageSemanticMark.defaultSpec.height;\n const yAccessor = getFieldAccessor(markEncoder.y.field);\n\n res.y = (datum: any, el: IElement, params: any) => {\n const scale = params[scaleXId];\n\n return scale.scale(yAccessor(datum)) - height / 2;\n };\n res.height = height;\n }\n\n if (markEncoder.color || markEncoder.group) {\n res.fill = markEncoder.color ?? markEncoder.group;\n } else {\n res.fill = this.spec.style?.fill ?? getPalette()[0];\n }\n\n return res;\n }\n}\n"]}
|
package/cjs/index.d.ts
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export { Plot } from './plot-all';
|
package/cjs/index.js
ADDED
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
Object.defineProperty(exports, "__esModule", {
|
|
4
|
+
value: !0
|
|
5
|
+
}), exports.Plot = void 0;
|
|
6
|
+
|
|
7
|
+
var plot_all_1 = require("./plot-all");
|
|
8
|
+
|
|
9
|
+
Object.defineProperty(exports, "Plot", {
|
|
10
|
+
enumerable: !0,
|
|
11
|
+
get: function() {
|
|
12
|
+
return plot_all_1.Plot;
|
|
13
|
+
}
|
|
14
|
+
});
|
|
15
|
+
//# sourceMappingURL=index.js.map
|
package/cjs/index.js.map
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../src/index.ts"],"names":[],"mappings":";;;AAAA,uCAAkC;AAAzB,gGAAA,IAAI,OAAA","file":"index.js","sourcesContent":["export { Plot } from './plot-all';\n"]}
|
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
import type { IntervalEncodeChannels, PlotIntervalEncoderSpec, SemanticTooltipOption, WithDefaultEncode, GenerateBaseEncodeSpec, Nil, ScaleSpec, ValueOf, CrosshairSpec, AttributeTransform, TransformSpec } from '@visactor/vgrammar';
|
|
2
|
+
import { SemanticMark } from './semantic-mark';
|
|
3
|
+
import { GrammarMarkType } from '@visactor/vgrammar';
|
|
4
|
+
import { PlotMakType } from './enums';
|
|
5
|
+
export declare class Interval extends SemanticMark<PlotIntervalEncoderSpec, IntervalEncodeChannels> {
|
|
6
|
+
static readonly type = PlotMakType.interval;
|
|
7
|
+
constructor(id?: string | number);
|
|
8
|
+
setMarkType(): GrammarMarkType.arc | GrammarMarkType.rect;
|
|
9
|
+
parseScaleByEncode(channel: IntervalEncodeChannels, option: ValueOf<WithDefaultEncode<PlotIntervalEncoderSpec, IntervalEncodeChannels>, IntervalEncodeChannels>): ScaleSpec | Nil;
|
|
10
|
+
setDefaultMarkTransform(): TransformSpec[];
|
|
11
|
+
setDefaultCrosshair(): Record<string, Pick<CrosshairSpec, 'crosshairShape' | 'crosshairType'>>;
|
|
12
|
+
setDefaultTooltip(): SemanticTooltipOption | Nil;
|
|
13
|
+
setMainMarkSpec(): {
|
|
14
|
+
attributeTransforms: AttributeTransform[];
|
|
15
|
+
} | {
|
|
16
|
+
attributeTransforms?: undefined;
|
|
17
|
+
};
|
|
18
|
+
convertMarkEncode(encode: WithDefaultEncode<PlotIntervalEncoderSpec, IntervalEncodeChannels>): GenerateBaseEncodeSpec<PlotIntervalEncoderSpec>;
|
|
19
|
+
}
|
package/cjs/interval.js
ADDED
|
@@ -0,0 +1,102 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
Object.defineProperty(exports, "__esModule", {
|
|
4
|
+
value: !0
|
|
5
|
+
}), exports.Interval = void 0;
|
|
6
|
+
|
|
7
|
+
const vgrammar_util_1 = require("@visactor/vgrammar-util"), semantic_mark_1 = require("./semantic-mark"), vgrammar_1 = require("@visactor/vgrammar"), vutils_1 = require("@visactor/vutils"), enums_1 = require("./enums");
|
|
8
|
+
|
|
9
|
+
class Interval extends semantic_mark_1.SemanticMark {
|
|
10
|
+
constructor(id) {
|
|
11
|
+
super(enums_1.PlotMakType.interval, id);
|
|
12
|
+
}
|
|
13
|
+
setMarkType() {
|
|
14
|
+
var _a;
|
|
15
|
+
return "polar" === (null === (_a = this._coordinate) || void 0 === _a ? void 0 : _a.type) ? vgrammar_1.GrammarMarkType.arc : vgrammar_1.GrammarMarkType.rect;
|
|
16
|
+
}
|
|
17
|
+
parseScaleByEncode(channel, option) {
|
|
18
|
+
return this.parseScaleOfCommonEncode(channel, option);
|
|
19
|
+
}
|
|
20
|
+
setDefaultMarkTransform() {
|
|
21
|
+
var _a, _b, _c, _d;
|
|
22
|
+
return [ {
|
|
23
|
+
type: "dodge",
|
|
24
|
+
minWidth: null === (_a = this.spec.style) || void 0 === _a ? void 0 : _a.minWidth,
|
|
25
|
+
maxWidth: null === (_b = this.spec.style) || void 0 === _b ? void 0 : _b.maxWidth,
|
|
26
|
+
innerGap: null === (_c = this.spec.style) || void 0 === _c ? void 0 : _c.innerGap,
|
|
27
|
+
categoryGap: null === (_d = this.spec.style) || void 0 === _d ? void 0 : _d.categoryGap
|
|
28
|
+
} ];
|
|
29
|
+
}
|
|
30
|
+
setDefaultCrosshair() {
|
|
31
|
+
return {
|
|
32
|
+
x: {
|
|
33
|
+
crosshairShape: "rect"
|
|
34
|
+
}
|
|
35
|
+
};
|
|
36
|
+
}
|
|
37
|
+
setDefaultTooltip() {
|
|
38
|
+
var _a;
|
|
39
|
+
const encodeY = null === (_a = this.spec.encode) || void 0 === _a ? void 0 : _a.y;
|
|
40
|
+
return {
|
|
41
|
+
content: (0, vutils_1.isArray)(encodeY) ? encodeY.map((entry => ({
|
|
42
|
+
value: entry
|
|
43
|
+
}))) : [ {
|
|
44
|
+
value: encodeY
|
|
45
|
+
} ]
|
|
46
|
+
};
|
|
47
|
+
}
|
|
48
|
+
setMainMarkSpec() {
|
|
49
|
+
var _a;
|
|
50
|
+
return "polar" === (null === (_a = this._coordinate) || void 0 === _a ? void 0 : _a.type) ? {
|
|
51
|
+
attributeTransforms: [ {
|
|
52
|
+
channels: [ "x", "y", "x1", "y1", "cx", "cy" ],
|
|
53
|
+
transform: (graphicAttributes, nextAttrs, storedAttrs) => {
|
|
54
|
+
graphicAttributes.x = storedAttrs.cx, graphicAttributes.y = storedAttrs.cy, this._coordinate.transpose ? (graphicAttributes.startAngle = storedAttrs.y,
|
|
55
|
+
graphicAttributes.endAngle = storedAttrs.y1, graphicAttributes.innerRadius = storedAttrs.x,
|
|
56
|
+
graphicAttributes.outerRadius = storedAttrs.x1) : (graphicAttributes.startAngle = storedAttrs.x,
|
|
57
|
+
graphicAttributes.endAngle = storedAttrs.x1, graphicAttributes.innerRadius = storedAttrs.y,
|
|
58
|
+
graphicAttributes.outerRadius = storedAttrs.y1);
|
|
59
|
+
},
|
|
60
|
+
storedAttrs: "sizeAttrs"
|
|
61
|
+
} ]
|
|
62
|
+
} : {};
|
|
63
|
+
}
|
|
64
|
+
convertMarkEncode(encode) {
|
|
65
|
+
var _a, _b, _c, _d, _e;
|
|
66
|
+
const markEncoder = this.convertSimpleMarkEncode(encode), scaleXId = this.getScaleId("x"), scaleYId = this.getScaleId("y"), xAccessor = (0,
|
|
67
|
+
vgrammar_util_1.field)(markEncoder.x.field), res = {
|
|
68
|
+
x: (datum, el, params) => {
|
|
69
|
+
const scale = params[scaleXId], bandWidth = scale.bandwidth();
|
|
70
|
+
return scale.scale(xAccessor(datum)) + bandWidth / 4;
|
|
71
|
+
},
|
|
72
|
+
x1: (datum, el, params) => {
|
|
73
|
+
const scale = params[scaleXId], bandWidth = scale.bandwidth();
|
|
74
|
+
return scale.scale(xAccessor(datum)) + 3 * bandWidth / 4;
|
|
75
|
+
}
|
|
76
|
+
};
|
|
77
|
+
if ((0, vutils_1.isArray)(null === (_a = markEncoder.y) || void 0 === _a ? void 0 : _a.field)) res.y = {
|
|
78
|
+
field: markEncoder.y.field[0],
|
|
79
|
+
scale: markEncoder.y.scale
|
|
80
|
+
}, res.y1 = {
|
|
81
|
+
field: markEncoder.y.field[1],
|
|
82
|
+
scale: markEncoder.y.scale
|
|
83
|
+
}; else {
|
|
84
|
+
const yAccessor = (0, vgrammar_util_1.field)(markEncoder.y.field);
|
|
85
|
+
res.y = (datum, el, params) => {
|
|
86
|
+
const yVals = yAccessor(datum), scale = params[scaleYId];
|
|
87
|
+
return (0, vutils_1.isArray)(yVals) ? scale.scale(yVals[0]) : scale.scale(yVals);
|
|
88
|
+
}, res.y1 = (datum, el, params) => {
|
|
89
|
+
const scale = params[scaleYId], yVals = yAccessor(datum);
|
|
90
|
+
if ((0, vutils_1.isArray)(yVals) && yVals.length > 1) return scale.scale(yVals[1]);
|
|
91
|
+
const domain = scale.domain(), min = Math.min.apply(null, domain), max = Math.max.apply(null, domain), baseValue = min > 0 ? min : max < 0 ? max : 0;
|
|
92
|
+
return scale.scale(baseValue);
|
|
93
|
+
};
|
|
94
|
+
}
|
|
95
|
+
return markEncoder.color || markEncoder.group ? res.fill = null !== (_b = markEncoder.color) && void 0 !== _b ? _b : markEncoder.group : res.fill = null !== (_d = null === (_c = this.spec.style) || void 0 === _c ? void 0 : _c.fill) && void 0 !== _d ? _d : (0,
|
|
96
|
+
vgrammar_1.getPalette)()[0], "polar" === (null === (_e = this._coordinate) || void 0 === _e ? void 0 : _e.type) && (res.cx = (datum, el, params) => params[this._coordinate.id].origin().x,
|
|
97
|
+
res.cy = (datum, el, params) => params[this._coordinate.id].origin().y), res;
|
|
98
|
+
}
|
|
99
|
+
}
|
|
100
|
+
|
|
101
|
+
exports.Interval = Interval, Interval.type = enums_1.PlotMakType.interval;
|
|
102
|
+
//# sourceMappingURL=interval.js.map
|