@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
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../src/interval.ts"],"names":[],"mappings":"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","file":"interval.js","sourcesContent":["import type { IBandLikeScale } from '@visactor/vscale';\nimport { field as getFieldAccessor } from '@visactor/vgrammar-util';\nimport type {\n IntervalEncodeChannels,\n PlotIntervalEncoderSpec,\n SemanticTooltipOption,\n WithDefaultEncode,\n GenerateBaseEncodeSpec,\n Nil,\n ScaleSpec,\n ValueOf,\n CrosshairSpec,\n GenerateEncoderSpec,\n AttributeTransform,\n IElement,\n TransformSpec\n} from '@visactor/vgrammar';\nimport { SemanticMark } from './semantic-mark';\nimport { getPalette, GrammarMarkType } from '@visactor/vgrammar';\nimport type { IPolarCoordinate } from '@visactor/vgrammar-coordinate';\nimport { isArray } from '@visactor/vutils';\nimport { PlotMakType } from './enums';\n\nexport class Interval extends SemanticMark<PlotIntervalEncoderSpec, IntervalEncodeChannels> {\n static readonly type = PlotMakType.interval;\n constructor(id?: string | number) {\n super(PlotMakType.interval, id);\n }\n\n setMarkType() {\n return this._coordinate?.type === 'polar' ? GrammarMarkType.arc : GrammarMarkType.rect;\n }\n\n parseScaleByEncode(\n channel: IntervalEncodeChannels,\n option: ValueOf<WithDefaultEncode<PlotIntervalEncoderSpec, IntervalEncodeChannels>, IntervalEncodeChannels>\n ): ScaleSpec | Nil {\n return this.parseScaleOfCommonEncode(channel, option);\n }\n\n setDefaultMarkTransform(): TransformSpec[] {\n return [\n {\n type: 'dodge',\n minWidth: this.spec.style?.minWidth,\n maxWidth: this.spec.style?.maxWidth,\n innerGap: this.spec.style?.innerGap,\n categoryGap: this.spec.style?.categoryGap\n }\n ];\n }\n\n setDefaultCrosshair(): Record<string, Pick<CrosshairSpec, 'crosshairShape' | 'crosshairType'>> {\n return {\n x: { crosshairShape: 'rect' }\n };\n }\n\n setDefaultTooltip(): SemanticTooltipOption | Nil {\n const encodeY = this.spec.encode?.y;\n return {\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 setMainMarkSpec() {\n return this._coordinate?.type === 'polar'\n ? {\n attributeTransforms: [\n {\n channels: ['x', 'y', 'x1', 'y1', 'cx', 'cy'],\n transform: (graphicAttributes: any, nextAttrs: any, storedAttrs: any) => {\n graphicAttributes.x = storedAttrs.cx;\n graphicAttributes.y = storedAttrs.cy;\n if (this._coordinate.transpose) {\n graphicAttributes.startAngle = storedAttrs.y;\n graphicAttributes.endAngle = storedAttrs.y1;\n graphicAttributes.innerRadius = storedAttrs.x;\n graphicAttributes.outerRadius = storedAttrs.x1;\n } else {\n //\n graphicAttributes.startAngle = storedAttrs.x;\n graphicAttributes.endAngle = storedAttrs.x1;\n graphicAttributes.innerRadius = storedAttrs.y;\n graphicAttributes.outerRadius = storedAttrs.y1;\n }\n },\n storedAttrs: 'sizeAttrs'\n }\n ] as AttributeTransform[]\n }\n : {};\n }\n\n convertMarkEncode(\n encode: WithDefaultEncode<PlotIntervalEncoderSpec, IntervalEncodeChannels>\n ): GenerateBaseEncodeSpec<PlotIntervalEncoderSpec> {\n const markEncoder = this.convertSimpleMarkEncode(encode);\n const scaleXId = this.getScaleId('x');\n const scaleYId = this.getScaleId('y');\n const xAccessor = getFieldAccessor(markEncoder.x.field);\n const res: GenerateEncoderSpec<PlotIntervalEncoderSpec> = {\n x: (datum: any, el: IElement, params: any) => {\n const scale = params[scaleXId];\n const bandWidth = (scale as IBandLikeScale).bandwidth();\n\n return scale.scale(xAccessor(datum)) + bandWidth / 4;\n },\n x1: (datum: any, el: IElement, params: any) => {\n const scale = params[scaleXId];\n const bandWidth = (scale as IBandLikeScale).bandwidth();\n\n return scale.scale(xAccessor(datum)) + (3 * bandWidth) / 4;\n }\n };\n\n if (isArray(markEncoder.y?.field)) {\n res.y = { field: markEncoder.y.field[0], scale: markEncoder.y.scale };\n res.y1 = { field: markEncoder.y.field[1], scale: markEncoder.y.scale };\n } else {\n const yAccessor = getFieldAccessor(markEncoder.y.field);\n res.y = (datum: any, el: IElement, params: any) => {\n const yVals = yAccessor(datum);\n const scale = params[scaleYId];\n\n return isArray(yVals) ? scale.scale(yVals[0]) : scale.scale(yVals);\n };\n res.y1 = (datum: any, el: IElement, params: any) => {\n const scale = params[scaleYId];\n const yVals = yAccessor(datum);\n\n if (isArray(yVals) && yVals.length > 1) {\n return scale.scale(yVals[1]);\n }\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 }\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 if (this._coordinate?.type === 'polar') {\n (res as any).cx = (datum: any, el: IElement, params: any) => {\n const coord = params[this._coordinate.id];\n const origin = (coord as IPolarCoordinate).origin();\n\n return origin.x;\n };\n (res as any).cy = (datum: any, el: IElement, params: any) => {\n const coord = params[this._coordinate.id];\n const origin = (coord as IPolarCoordinate).origin();\n\n return origin.y;\n };\n }\n\n return res;\n }\n}\n"]}
|
package/cjs/line.d.ts
ADDED
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
import type { LineEncodeChannels, SemanticTooltipOption, WithDefaultEncode, BasicEncoderSpecMap, 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 Line extends SemanticMark<BasicEncoderSpecMap['line'], LineEncodeChannels> {
|
|
6
|
+
static readonly type = PlotMakType.line;
|
|
7
|
+
constructor(id?: string | number);
|
|
8
|
+
setMarkType(): GrammarMarkType;
|
|
9
|
+
protected parseScaleOfEncodeX(option: ValueOf<WithDefaultEncode<BasicEncoderSpecMap['line'], LineEncodeChannels>, LineEncodeChannels>): ScaleSpec | Nil;
|
|
10
|
+
parseScaleByEncode(channel: LineEncodeChannels, option: ValueOf<WithDefaultEncode<BasicEncoderSpecMap['line'], LineEncodeChannels>, LineEncodeChannels>): ScaleSpec | Nil;
|
|
11
|
+
setDefaultCrosshair(): Record<string, Pick<CrosshairSpec, 'crosshairShape' | 'crosshairType'>>;
|
|
12
|
+
setDefaultTooltip(): SemanticTooltipOption | Nil;
|
|
13
|
+
convertMarkEncode(encode: WithDefaultEncode<BasicEncoderSpecMap['line'], LineEncodeChannels>): GenerateBaseEncodeSpec<BasicEncoderSpecMap['line']>;
|
|
14
|
+
}
|
package/cjs/line.js
ADDED
|
@@ -0,0 +1,52 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
Object.defineProperty(exports, "__esModule", {
|
|
4
|
+
value: !0
|
|
5
|
+
}), exports.Line = void 0;
|
|
6
|
+
|
|
7
|
+
const semantic_mark_1 = require("./semantic-mark"), vgrammar_1 = require("@visactor/vgrammar"), enums_1 = require("./enums");
|
|
8
|
+
|
|
9
|
+
class Line extends semantic_mark_1.SemanticMark {
|
|
10
|
+
constructor(id) {
|
|
11
|
+
super(enums_1.PlotMakType.line, id);
|
|
12
|
+
}
|
|
13
|
+
setMarkType() {
|
|
14
|
+
return vgrammar_1.GrammarMarkType.line;
|
|
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
|
+
disableGraphicTooltip: !0,
|
|
34
|
+
title: null === (_a = this.spec.encode) || void 0 === _a ? void 0 : _a.x,
|
|
35
|
+
content: [ {
|
|
36
|
+
value: null === (_b = this.spec.encode) || void 0 === _b ? void 0 : _b.y
|
|
37
|
+
} ]
|
|
38
|
+
};
|
|
39
|
+
}
|
|
40
|
+
convertMarkEncode(encode) {
|
|
41
|
+
var _a, _b, _c;
|
|
42
|
+
const markEncoder = this.convertSimpleMarkEncode(encode), res = {
|
|
43
|
+
y: markEncoder.y,
|
|
44
|
+
x: markEncoder.x
|
|
45
|
+
};
|
|
46
|
+
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.stroke) && void 0 !== _c ? _c : (0,
|
|
47
|
+
vgrammar_1.getPalette)()[0], res;
|
|
48
|
+
}
|
|
49
|
+
}
|
|
50
|
+
|
|
51
|
+
exports.Line = Line, Line.type = enums_1.PlotMakType.line;
|
|
52
|
+
//# sourceMappingURL=line.js.map
|
package/cjs/line.js.map
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../src/line.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,qBAAqB,EAAE,IAAI;YAC3B,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,MAAM,mCAAI,IAAA,qBAAU,GAAE,CAAC,CAAC,CAAC,CAAC;SACzD;QAED,OAAO,GAAG,CAAC;IACb,CAAC;;AA7DH,oBA8DC;AA7DiB,SAAI,GAAG,mBAAW,CAAC,IAAI,CAAC","file":"line.js","sourcesContent":["import type {\n LineEncodeChannels,\n SemanticTooltipOption,\n WithDefaultEncode,\n BasicEncoderSpecMap,\n GenerateBaseEncodeSpec,\n Nil,\n ScaleSpec,\n ValueOf,\n CrosshairSpec,\n GenerateEncoderSpec\n} from '@visactor/vgrammar';\nimport { SemanticMark } from './semantic-mark';\nimport { getPalette, GrammarMarkType } from '@visactor/vgrammar';\nimport { PlotMakType } from './enums';\n\nexport class Line extends SemanticMark<BasicEncoderSpecMap['line'], LineEncodeChannels> {\n static readonly type = PlotMakType.line;\n constructor(id?: string | number) {\n super(PlotMakType.line, id);\n }\n\n setMarkType() {\n return GrammarMarkType.line;\n }\n\n protected parseScaleOfEncodeX(\n option: ValueOf<WithDefaultEncode<BasicEncoderSpecMap['line'], LineEncodeChannels>, LineEncodeChannels>\n ): ScaleSpec | Nil {\n const res = super.parseScaleOfEncodeX(option);\n\n res.type = 'point';\n return res;\n }\n\n parseScaleByEncode(\n channel: LineEncodeChannels,\n option: ValueOf<WithDefaultEncode<BasicEncoderSpecMap['line'], LineEncodeChannels>, LineEncodeChannels>\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 disableGraphicTooltip: true,\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['line'], LineEncodeChannels>\n ): GenerateBaseEncodeSpec<BasicEncoderSpecMap['line']> {\n const markEncoder = this.convertSimpleMarkEncode(encode);\n\n const res = {\n y: markEncoder.y,\n x: markEncoder.x\n } as GenerateEncoderSpec<BasicEncoderSpecMap['line']>;\n\n if (markEncoder.color || markEncoder.group) {\n res.stroke = markEncoder.color ?? markEncoder.group;\n } else {\n res.stroke = this.spec.style?.stroke ?? getPalette()[0];\n }\n\n return res;\n }\n}\n"]}
|
package/cjs/path.d.ts
ADDED
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
import { GrammarMarkType } from '@visactor/vgrammar';
|
|
2
|
+
import type { PathEncodeChannels, WithDefaultEncode, BasicEncoderSpecMap, GenerateBaseEncodeSpec, Nil, ScaleSpec, ValueOf } from '@visactor/vgrammar';
|
|
3
|
+
import { PlotMakType } from './enums';
|
|
4
|
+
import { SemanticMark } from './semantic-mark';
|
|
5
|
+
export declare class PathSemanticMark extends SemanticMark<BasicEncoderSpecMap['path'], PathEncodeChannels> {
|
|
6
|
+
static readonly type = PlotMakType.path;
|
|
7
|
+
constructor(id?: string | number);
|
|
8
|
+
setMarkType(): GrammarMarkType;
|
|
9
|
+
parseScaleByEncode(channel: PathEncodeChannels, option: ValueOf<WithDefaultEncode<BasicEncoderSpecMap['path'], PathEncodeChannels>, PathEncodeChannels>): ScaleSpec | Nil;
|
|
10
|
+
convertMarkEncode(encode: WithDefaultEncode<BasicEncoderSpecMap['path'], PathEncodeChannels>): GenerateBaseEncodeSpec<BasicEncoderSpecMap['path']>;
|
|
11
|
+
}
|
package/cjs/path.js
ADDED
|
@@ -0,0 +1,25 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
Object.defineProperty(exports, "__esModule", {
|
|
4
|
+
value: !0
|
|
5
|
+
}), exports.PathSemanticMark = void 0;
|
|
6
|
+
|
|
7
|
+
const vgrammar_1 = require("@visactor/vgrammar"), enums_1 = require("./enums"), semantic_mark_1 = require("./semantic-mark");
|
|
8
|
+
|
|
9
|
+
class PathSemanticMark extends semantic_mark_1.SemanticMark {
|
|
10
|
+
constructor(id) {
|
|
11
|
+
super(enums_1.PlotMakType.path, id);
|
|
12
|
+
}
|
|
13
|
+
setMarkType() {
|
|
14
|
+
return vgrammar_1.GrammarMarkType.path;
|
|
15
|
+
}
|
|
16
|
+
parseScaleByEncode(channel, option) {
|
|
17
|
+
return null;
|
|
18
|
+
}
|
|
19
|
+
convertMarkEncode(encode) {
|
|
20
|
+
return null;
|
|
21
|
+
}
|
|
22
|
+
}
|
|
23
|
+
|
|
24
|
+
exports.PathSemanticMark = PathSemanticMark, PathSemanticMark.type = enums_1.PlotMakType.path;
|
|
25
|
+
//# sourceMappingURL=path.js.map
|
package/cjs/path.js.map
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../src/path.ts"],"names":[],"mappings":";;;AAAA,iDAAqD;AAUrD,mCAAsC;AACtC,mDAA+C;AAE/C,MAAa,gBAAiB,SAAQ,4BAA6D;IAEjG,YAAY,EAAoB;QAC9B,KAAK,CAAC,mBAAW,CAAC,IAAI,EAAE,EAAE,CAAC,CAAC;IAC9B,CAAC;IAED,WAAW;QACT,OAAO,0BAAe,CAAC,IAAI,CAAC;IAC9B,CAAC;IACD,kBAAkB,CAChB,OAA2B,EAC3B,MAAuG;QAEvG,OAAO,IAAI,CAAC;IACd,CAAC;IAED,iBAAiB,CACf,MAA0E;QAE1E,OAAO,IAAI,CAAC;IACd,CAAC;;AApBH,4CAqBC;AApBiB,qBAAI,GAAG,mBAAW,CAAC,IAAI,CAAC","file":"path.js","sourcesContent":["import { GrammarMarkType } from '@visactor/vgrammar';\nimport type {\n PathEncodeChannels,\n WithDefaultEncode,\n BasicEncoderSpecMap,\n GenerateBaseEncodeSpec,\n Nil,\n ScaleSpec,\n ValueOf\n} from '@visactor/vgrammar';\nimport { PlotMakType } from './enums';\nimport { SemanticMark } from './semantic-mark';\n\nexport class PathSemanticMark extends SemanticMark<BasicEncoderSpecMap['path'], PathEncodeChannels> {\n static readonly type = PlotMakType.path;\n constructor(id?: string | number) {\n super(PlotMakType.path, id);\n }\n\n setMarkType() {\n return GrammarMarkType.path;\n }\n parseScaleByEncode(\n channel: PathEncodeChannels,\n option: ValueOf<WithDefaultEncode<BasicEncoderSpecMap['path'], PathEncodeChannels>, PathEncodeChannels>\n ): ScaleSpec | Nil {\n return null;\n }\n\n convertMarkEncode(\n encode: WithDefaultEncode<BasicEncoderSpecMap['path'], PathEncodeChannels>\n ): GenerateBaseEncodeSpec<BasicEncoderSpecMap['path']> {\n return null;\n }\n}\n"]}
|
package/cjs/plot-all.js
ADDED
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
Object.defineProperty(exports, "__esModule", {
|
|
4
|
+
value: !0
|
|
5
|
+
}), exports.Plot = void 0;
|
|
6
|
+
|
|
7
|
+
const interval_1 = require("./interval"), line_1 = require("./line"), cell_1 = require("./cell"), rule_x_1 = require("./rule-x"), rule_y_1 = require("./rule-y"), area_1 = require("./area"), plot_1 = require("./plot");
|
|
8
|
+
|
|
9
|
+
Object.defineProperty(exports, "Plot", {
|
|
10
|
+
enumerable: !0,
|
|
11
|
+
get: function() {
|
|
12
|
+
return plot_1.Plot;
|
|
13
|
+
}
|
|
14
|
+
});
|
|
15
|
+
|
|
16
|
+
const image_1 = require("./image"), path_1 = require("./path"), polygon_1 = require("./polygon"), rect_x_1 = require("./rect-x"), rect_y_1 = require("./rect-y"), rect_1 = require("./rect"), rule_1 = require("./rule"), symbol_1 = require("./symbol"), text_1 = require("./text"), sankey_1 = require("./sankey"), sunburst_1 = require("./sunburst"), treemap_1 = require("./treemap"), circle_packing_1 = require("./circle-packing"), tree_1 = require("./tree"), wordcloud_1 = require("./wordcloud"), wordcloud_shape_1 = require("./wordcloud-shape");
|
|
17
|
+
|
|
18
|
+
plot_1.Plot.useMarks([ interval_1.Interval, line_1.Line, cell_1.Cell, rule_x_1.RuleX, rule_y_1.RuleY, area_1.Area, image_1.ImageSemanticMark, path_1.PathSemanticMark, polygon_1.PolygonSemanticMark, rect_1.RectSemanticMark, rect_x_1.RectXSemanticMark, rect_y_1.RectYSemanticMark, rule_1.Rule, symbol_1.SymbolSemanticMark, text_1.TextSemanticMark, sankey_1.SankeySemanticMark, sunburst_1.SunburstSemanticMark, treemap_1.TreemapSemanticMark, circle_packing_1.CirclePackingSemanticMark, tree_1.TreeSemanticMark, wordcloud_1.WordcloudSemanticMark, wordcloud_shape_1.WordcloudShapeSemanticMark ]);
|
|
19
|
+
//# sourceMappingURL=plot-all.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../src/plot-all.ts"],"names":[],"mappings":";;;AAAA,yCAAsC;AACtC,iCAA8B;AAC9B,iCAA8B;AAC9B,qCAAiC;AACjC,qCAAiC;AACjC,iCAA8B;AAC9B,iCAA8B;AA2CrB,qFA3CA,WAAI,OA2CA;AA1Cb,mCAA4C;AAC5C,iCAA0C;AAC1C,uCAAgD;AAChD,qCAA6C;AAC7C,qCAA6C;AAC7C,iCAA0C;AAC1C,iCAA8B;AAC9B,qCAA8C;AAC9C,iCAA0C;AAC1C,qCAA8C;AAC9C,yCAAkD;AAClD,uCAAgD;AAChD,qDAA6D;AAC7D,iCAA0C;AAC1C,2CAAoD;AACpD,uDAA+D;AAE/D,WAAI,CAAC,QAAQ,CAAC;IACZ,mBAAQ;IACR,WAAI;IACJ,WAAI;IACJ,cAAK;IACL,cAAK;IACL,WAAI;IACJ,yBAAiB;IACjB,uBAAgB;IAChB,6BAAmB;IACnB,uBAAgB;IAChB,0BAAiB;IACjB,0BAAiB;IACjB,WAAI;IACJ,2BAAkB;IAClB,uBAAgB;IAChB,2BAAkB;IAClB,+BAAoB;IACpB,6BAAmB;IACnB,0CAAyB;IACzB,uBAAgB;IAChB,iCAAqB;IACrB,4CAA0B;CAC3B,CAAC,CAAC","file":"plot-all.js","sourcesContent":["import { Interval } from './interval';\nimport { Line } from './line';\nimport { Cell } from './cell';\nimport { RuleX } from './rule-x';\nimport { RuleY } from './rule-y';\nimport { Area } from './area';\nimport { Plot } from './plot';\nimport { ImageSemanticMark } from './image';\nimport { PathSemanticMark } from './path';\nimport { PolygonSemanticMark } from './polygon';\nimport { RectXSemanticMark } from './rect-x';\nimport { RectYSemanticMark } from './rect-y';\nimport { RectSemanticMark } from './rect';\nimport { Rule } from './rule';\nimport { SymbolSemanticMark } from './symbol';\nimport { TextSemanticMark } from './text';\nimport { SankeySemanticMark } from './sankey';\nimport { SunburstSemanticMark } from './sunburst';\nimport { TreemapSemanticMark } from './treemap';\nimport { CirclePackingSemanticMark } from './circle-packing';\nimport { TreeSemanticMark } from './tree';\nimport { WordcloudSemanticMark } from './wordcloud';\nimport { WordcloudShapeSemanticMark } from './wordcloud-shape';\n\nPlot.useMarks([\n Interval,\n Line,\n Cell,\n RuleX,\n RuleY,\n Area,\n ImageSemanticMark,\n PathSemanticMark,\n PolygonSemanticMark,\n RectSemanticMark,\n RectXSemanticMark,\n RectYSemanticMark,\n Rule,\n SymbolSemanticMark,\n TextSemanticMark,\n SankeySemanticMark,\n SunburstSemanticMark,\n TreemapSemanticMark,\n CirclePackingSemanticMark,\n TreeSemanticMark,\n WordcloudSemanticMark,\n WordcloudShapeSemanticMark\n]);\n\nexport { Plot };\n"]}
|
package/cjs/plot.d.ts
ADDED
|
@@ -0,0 +1,46 @@
|
|
|
1
|
+
/// <reference types="node" />
|
|
2
|
+
import type { CoordinateType } from '@visactor/vgrammar-coordinate';
|
|
3
|
+
import type { BaseEventHandler, IMorphConfig, ViewSpec, CoordinateOption, IPlot, IPlotMarkConstructor, IPlotOptions, PlotSpec } from '@visactor/vgrammar';
|
|
4
|
+
export declare class Plot implements IPlot {
|
|
5
|
+
static useMarks(marks: IPlotMarkConstructor[]): void;
|
|
6
|
+
private _view;
|
|
7
|
+
private _semanticMarks;
|
|
8
|
+
private _hasInited?;
|
|
9
|
+
private _coordinate;
|
|
10
|
+
private _logger;
|
|
11
|
+
constructor(option?: IPlotOptions);
|
|
12
|
+
private _mergeScales;
|
|
13
|
+
protected parseViewSpec(): ViewSpec;
|
|
14
|
+
run(morphConfig?: IMorphConfig): this;
|
|
15
|
+
runAsync(morphConfig?: IMorphConfig): Promise<this>;
|
|
16
|
+
release(): this;
|
|
17
|
+
updateSpec(spec: PlotSpec): this;
|
|
18
|
+
parseSpec(spec: PlotSpec, isUpdate?: boolean): this;
|
|
19
|
+
getImageBuffer(): Buffer;
|
|
20
|
+
on(type: string, handler: BaseEventHandler): this;
|
|
21
|
+
off(type: string, handler?: BaseEventHandler): this;
|
|
22
|
+
protected getCoordinateId(viewId?: string | number): string;
|
|
23
|
+
coordinate(type: CoordinateType, spec?: Omit<CoordinateOption, 'type'>): this;
|
|
24
|
+
interval(): import("@visactor/vgrammar").ISemanticMark<any, any>;
|
|
25
|
+
line(): import("@visactor/vgrammar").ISemanticMark<any, any>;
|
|
26
|
+
area(): import("@visactor/vgrammar").ISemanticMark<any, any>;
|
|
27
|
+
cell(): import("@visactor/vgrammar").ISemanticMark<any, any>;
|
|
28
|
+
ruleX(): import("@visactor/vgrammar").ISemanticMark<any, any>;
|
|
29
|
+
ruleY(): import("@visactor/vgrammar").ISemanticMark<any, any>;
|
|
30
|
+
image(): import("@visactor/vgrammar").ISemanticMark<any, any>;
|
|
31
|
+
path(): import("@visactor/vgrammar").ISemanticMark<any, any>;
|
|
32
|
+
polygon(): import("@visactor/vgrammar").ISemanticMark<any, any>;
|
|
33
|
+
rectX(): import("@visactor/vgrammar").ISemanticMark<any, any>;
|
|
34
|
+
rectY(): import("@visactor/vgrammar").ISemanticMark<any, any>;
|
|
35
|
+
rect(): import("@visactor/vgrammar").ISemanticMark<any, any>;
|
|
36
|
+
rule(): import("@visactor/vgrammar").ISemanticMark<any, any>;
|
|
37
|
+
symbol(): import("@visactor/vgrammar").ISemanticMark<any, any>;
|
|
38
|
+
text(): import("@visactor/vgrammar").ISemanticMark<any, any>;
|
|
39
|
+
sankey(): import("@visactor/vgrammar").ISemanticMark<any, any>;
|
|
40
|
+
sunburst(): import("@visactor/vgrammar").ISemanticMark<any, any>;
|
|
41
|
+
tree(): import("@visactor/vgrammar").ISemanticMark<any, any>;
|
|
42
|
+
treemap(): import("@visactor/vgrammar").ISemanticMark<any, any>;
|
|
43
|
+
circlePacking(): import("@visactor/vgrammar").ISemanticMark<any, any>;
|
|
44
|
+
wordcloud(): import("@visactor/vgrammar").ISemanticMark<any, any>;
|
|
45
|
+
wordcloudShape(): import("@visactor/vgrammar").ISemanticMark<any, any>;
|
|
46
|
+
}
|
package/cjs/plot.js
ADDED
|
@@ -0,0 +1,265 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
var __awaiter = this && this.__awaiter || function(thisArg, _arguments, P, generator) {
|
|
4
|
+
return new (P || (P = Promise))((function(resolve, reject) {
|
|
5
|
+
function fulfilled(value) {
|
|
6
|
+
try {
|
|
7
|
+
step(generator.next(value));
|
|
8
|
+
} catch (e) {
|
|
9
|
+
reject(e);
|
|
10
|
+
}
|
|
11
|
+
}
|
|
12
|
+
function rejected(value) {
|
|
13
|
+
try {
|
|
14
|
+
step(generator.throw(value));
|
|
15
|
+
} catch (e) {
|
|
16
|
+
reject(e);
|
|
17
|
+
}
|
|
18
|
+
}
|
|
19
|
+
function step(result) {
|
|
20
|
+
var value;
|
|
21
|
+
result.done ? resolve(result.value) : (value = result.value, value instanceof P ? value : new P((function(resolve) {
|
|
22
|
+
resolve(value);
|
|
23
|
+
}))).then(fulfilled, rejected);
|
|
24
|
+
}
|
|
25
|
+
step((generator = generator.apply(thisArg, _arguments || [])).next());
|
|
26
|
+
}));
|
|
27
|
+
};
|
|
28
|
+
|
|
29
|
+
Object.defineProperty(exports, "__esModule", {
|
|
30
|
+
value: !0
|
|
31
|
+
}), exports.Plot = void 0;
|
|
32
|
+
|
|
33
|
+
const vutils_1 = require("@visactor/vutils"), util_1 = require("./util"), enums_1 = require("./enums"), vgrammar_1 = require("@visactor/vgrammar");
|
|
34
|
+
|
|
35
|
+
class Plot {
|
|
36
|
+
static useMarks(marks) {
|
|
37
|
+
marks.forEach((mark => {
|
|
38
|
+
vgrammar_1.Factory.registerPlotMarks(mark.type, mark);
|
|
39
|
+
}));
|
|
40
|
+
}
|
|
41
|
+
constructor(option) {
|
|
42
|
+
this._view = new vgrammar_1.View(option), this._semanticMarks = [], this._logger = vutils_1.Logger.getInstance();
|
|
43
|
+
}
|
|
44
|
+
_mergeScales(scales, prevScales) {
|
|
45
|
+
return scales.reduce(((res, scale) => {
|
|
46
|
+
if (scale.id) {
|
|
47
|
+
const prevScale = res.find((prev => prev.id === scale.id));
|
|
48
|
+
if (prevScale) {
|
|
49
|
+
if (scale.domain.data && scale.domain.field) if (prevScale.domain.data && prevScale.domain.field) scale.domain.data === prevScale.domain.data && scale.domain.field !== prevScale.domain.field ? prevScale.domain.field = [].concat(prevScale.domain.field).concat(scale.domain.field) : scale.domain.data !== prevScale.domain.data && (prevScale.domain = {
|
|
50
|
+
datas: [ {
|
|
51
|
+
data: prevScale.domain.data,
|
|
52
|
+
field: prevScale.domain.field
|
|
53
|
+
}, {
|
|
54
|
+
data: scale.domain.data,
|
|
55
|
+
field: scale.domain.field
|
|
56
|
+
} ],
|
|
57
|
+
sort: prevScale.domain.sort
|
|
58
|
+
}), (0, vutils_1.isNil)(scale.domain.sort) || (prevScale.domain.sort = scale.domain.sort); else if (prevScale.domain.datas) {
|
|
59
|
+
const prevData = prevScale.domain.datas.find((entry => entry.data !== scale.domain.data));
|
|
60
|
+
prevData && scale.domain.field !== prevData.field ? prevData.field = [].concat(prevData.field).concat(scale.domain.field) : prevData || prevScale.domain.datas.push({
|
|
61
|
+
data: scale.domain.data,
|
|
62
|
+
field: scale.domain.field
|
|
63
|
+
}), (0, vutils_1.isNil)(scale.domain.sort) || (prevScale.domain.sort = scale.domain.sort);
|
|
64
|
+
}
|
|
65
|
+
} else res.push(scale);
|
|
66
|
+
}
|
|
67
|
+
return res;
|
|
68
|
+
}), prevScales);
|
|
69
|
+
}
|
|
70
|
+
parseViewSpec() {
|
|
71
|
+
const spec = {
|
|
72
|
+
data: [],
|
|
73
|
+
marks: [],
|
|
74
|
+
scales: [],
|
|
75
|
+
coordinates: [],
|
|
76
|
+
signals: [],
|
|
77
|
+
projections: [],
|
|
78
|
+
events: []
|
|
79
|
+
};
|
|
80
|
+
return this._semanticMarks.forEach((mark => {
|
|
81
|
+
this._coordinate && mark.coordinate(this._coordinate);
|
|
82
|
+
const {data: data, marks: marks, scales: scales, coordinates: coordinates, signals: signals, projections: projections, events: events} = mark.toViewSpec();
|
|
83
|
+
data && data.length && (spec.data = (0, util_1.mergeGrammarSpecs)(data, spec.data)),
|
|
84
|
+
marks && marks.length && (spec.marks = spec.marks.concat(marks)), scales && scales.length && (spec.scales = this._mergeScales(scales, spec.scales)),
|
|
85
|
+
coordinates && coordinates.length && (spec.coordinates = (0, util_1.mergeGrammarSpecs)(coordinates, spec.coordinates)),
|
|
86
|
+
signals && signals.length && (spec.signals = spec.signals.concat(signals)), projections && projections.length && (spec.projections = spec.projections.concat(projections)),
|
|
87
|
+
events && events.length && (spec.events = spec.events.concat(events));
|
|
88
|
+
})), spec.marks = [ {
|
|
89
|
+
type: "group",
|
|
90
|
+
layout: {
|
|
91
|
+
display: "relative",
|
|
92
|
+
updateViewSignals: !0
|
|
93
|
+
},
|
|
94
|
+
dependency: [ vgrammar_1.SIGNAL_VIEW_BOX ],
|
|
95
|
+
encode: {
|
|
96
|
+
update: (datum, elment, params) => ({
|
|
97
|
+
x: params.viewBox.x1,
|
|
98
|
+
y: params.viewBox.y1,
|
|
99
|
+
width: params.viewBox.width(),
|
|
100
|
+
height: params.viewBox.height()
|
|
101
|
+
})
|
|
102
|
+
},
|
|
103
|
+
marks: spec.marks
|
|
104
|
+
} ], spec;
|
|
105
|
+
}
|
|
106
|
+
run(morphConfig) {
|
|
107
|
+
return this._view && (this._hasInited || this._view.parseSpec(this.parseViewSpec()),
|
|
108
|
+
this._hasInited = !0, this._view.runSync(morphConfig)), this;
|
|
109
|
+
}
|
|
110
|
+
runAsync(morphConfig) {
|
|
111
|
+
return __awaiter(this, void 0, void 0, (function*() {
|
|
112
|
+
return this._view && (this._hasInited || this._view.parseSpec(this.parseViewSpec()),
|
|
113
|
+
this._hasInited = !0, yield this._view.runAsync(morphConfig)), this;
|
|
114
|
+
}));
|
|
115
|
+
}
|
|
116
|
+
release() {
|
|
117
|
+
return this._view && this._view.release(), this;
|
|
118
|
+
}
|
|
119
|
+
updateSpec(spec) {
|
|
120
|
+
return this.parseSpec(spec, !0), this;
|
|
121
|
+
}
|
|
122
|
+
parseSpec(spec, isUpdate) {
|
|
123
|
+
var _a;
|
|
124
|
+
spec.coordinate && this.coordinate(spec.coordinate.type, spec.coordinate), (null === (_a = null == spec ? void 0 : spec.marks) || void 0 === _a ? void 0 : _a.length) && spec.marks.forEach((mark => {
|
|
125
|
+
const plotMark = vgrammar_1.Factory.createPlotMark(mark.type);
|
|
126
|
+
plotMark.parseSpec(mark), this._semanticMarks.push(plotMark);
|
|
127
|
+
}));
|
|
128
|
+
const viewSpec = this.parseViewSpec();
|
|
129
|
+
return viewSpec.width = spec.width, viewSpec.height = spec.height, viewSpec.background = spec.background,
|
|
130
|
+
viewSpec.padding = spec.padding, isUpdate ? this._view.updateSpec(viewSpec) : this._view.parseSpec(viewSpec),
|
|
131
|
+
this._hasInited = !0, this;
|
|
132
|
+
}
|
|
133
|
+
getImageBuffer() {
|
|
134
|
+
var _a, _b;
|
|
135
|
+
return null === (_b = null === (_a = this._view) || void 0 === _a ? void 0 : _a.getImageBuffer) || void 0 === _b ? void 0 : _b.call(_a);
|
|
136
|
+
}
|
|
137
|
+
on(type, handler) {
|
|
138
|
+
return this._view && this._view.addEventListener(type, handler), this;
|
|
139
|
+
}
|
|
140
|
+
off(type, handler) {
|
|
141
|
+
return this._view && this._view.removeEventListener(type, handler), this;
|
|
142
|
+
}
|
|
143
|
+
getCoordinateId(viewId = "0") {
|
|
144
|
+
return `coordinate-${viewId}`;
|
|
145
|
+
}
|
|
146
|
+
coordinate(type, spec) {
|
|
147
|
+
return this._coordinate = Object.assign({
|
|
148
|
+
type: type,
|
|
149
|
+
id: this.getCoordinateId()
|
|
150
|
+
}, spec), this;
|
|
151
|
+
}
|
|
152
|
+
interval() {
|
|
153
|
+
const mark = vgrammar_1.Factory.createPlotMark(enums_1.PlotMakType.interval);
|
|
154
|
+
return mark ? this._semanticMarks.push(mark) : this._logger.error(`Please register ${enums_1.PlotMakType.interval} before use it`),
|
|
155
|
+
mark;
|
|
156
|
+
}
|
|
157
|
+
line() {
|
|
158
|
+
const mark = vgrammar_1.Factory.createPlotMark(enums_1.PlotMakType.line);
|
|
159
|
+
return mark ? this._semanticMarks.push(mark) : this._logger.error(`Please register ${enums_1.PlotMakType.line} before use it`),
|
|
160
|
+
mark;
|
|
161
|
+
}
|
|
162
|
+
area() {
|
|
163
|
+
const mark = vgrammar_1.Factory.createPlotMark(enums_1.PlotMakType.area);
|
|
164
|
+
return mark ? this._semanticMarks.push(mark) : this._logger.error(`Please register ${enums_1.PlotMakType.area} before use it`),
|
|
165
|
+
mark;
|
|
166
|
+
}
|
|
167
|
+
cell() {
|
|
168
|
+
const mark = vgrammar_1.Factory.createPlotMark(enums_1.PlotMakType.cell);
|
|
169
|
+
return mark ? this._semanticMarks.push(mark) : this._logger.error(`Please register ${enums_1.PlotMakType.cell} before use it`),
|
|
170
|
+
mark;
|
|
171
|
+
}
|
|
172
|
+
ruleX() {
|
|
173
|
+
const mark = vgrammar_1.Factory.createPlotMark(enums_1.PlotMakType.ruleX);
|
|
174
|
+
return mark ? this._semanticMarks.push(mark) : this._logger.error(`Please register ${this.ruleX} before use it`),
|
|
175
|
+
mark;
|
|
176
|
+
}
|
|
177
|
+
ruleY() {
|
|
178
|
+
const mark = vgrammar_1.Factory.createPlotMark(enums_1.PlotMakType.ruleY);
|
|
179
|
+
return mark ? this._semanticMarks.push(mark) : this._logger.error(`Please register ${enums_1.PlotMakType.ruleY} before use it`),
|
|
180
|
+
mark;
|
|
181
|
+
}
|
|
182
|
+
image() {
|
|
183
|
+
const mark = vgrammar_1.Factory.createPlotMark(enums_1.PlotMakType.image);
|
|
184
|
+
return mark ? this._semanticMarks.push(mark) : this._logger.error(`Please register ${enums_1.PlotMakType.image} before use it`),
|
|
185
|
+
mark;
|
|
186
|
+
}
|
|
187
|
+
path() {
|
|
188
|
+
const mark = vgrammar_1.Factory.createPlotMark(enums_1.PlotMakType.path);
|
|
189
|
+
return mark ? this._semanticMarks.push(mark) : this._logger.error(`Please register ${enums_1.PlotMakType.path} before use it`),
|
|
190
|
+
mark;
|
|
191
|
+
}
|
|
192
|
+
polygon() {
|
|
193
|
+
const mark = vgrammar_1.Factory.createPlotMark(enums_1.PlotMakType.polygon);
|
|
194
|
+
return mark ? this._semanticMarks.push(mark) : this._logger.error(`Please register ${enums_1.PlotMakType.polygon} before use it`),
|
|
195
|
+
mark;
|
|
196
|
+
}
|
|
197
|
+
rectX() {
|
|
198
|
+
const mark = vgrammar_1.Factory.createPlotMark(enums_1.PlotMakType.rectX);
|
|
199
|
+
return mark ? this._semanticMarks.push(mark) : this._logger.error(`Please register ${enums_1.PlotMakType.rectX} before use it`),
|
|
200
|
+
mark;
|
|
201
|
+
}
|
|
202
|
+
rectY() {
|
|
203
|
+
const mark = vgrammar_1.Factory.createPlotMark(enums_1.PlotMakType.rectY);
|
|
204
|
+
return mark ? this._semanticMarks.push(mark) : this._logger.error(`Please register ${enums_1.PlotMakType.rectY} before use it`),
|
|
205
|
+
mark;
|
|
206
|
+
}
|
|
207
|
+
rect() {
|
|
208
|
+
const mark = vgrammar_1.Factory.createPlotMark(enums_1.PlotMakType.rect);
|
|
209
|
+
return mark ? this._semanticMarks.push(mark) : this._logger.error(`Please register ${enums_1.PlotMakType.rect} before use it`),
|
|
210
|
+
mark;
|
|
211
|
+
}
|
|
212
|
+
rule() {
|
|
213
|
+
const mark = vgrammar_1.Factory.createPlotMark(enums_1.PlotMakType.rule);
|
|
214
|
+
return mark ? this._semanticMarks.push(mark) : this._logger.error(`Please register ${enums_1.PlotMakType.rule} before use it`),
|
|
215
|
+
mark;
|
|
216
|
+
}
|
|
217
|
+
symbol() {
|
|
218
|
+
const mark = vgrammar_1.Factory.createPlotMark(enums_1.PlotMakType.symbol);
|
|
219
|
+
return mark ? this._semanticMarks.push(mark) : this._logger.error(`Please register ${enums_1.PlotMakType.symbol} before use it`),
|
|
220
|
+
mark;
|
|
221
|
+
}
|
|
222
|
+
text() {
|
|
223
|
+
const mark = vgrammar_1.Factory.createPlotMark(enums_1.PlotMakType.text);
|
|
224
|
+
return mark ? this._semanticMarks.push(mark) : this._logger.error(`Please register ${enums_1.PlotMakType.text} before use it`),
|
|
225
|
+
mark;
|
|
226
|
+
}
|
|
227
|
+
sankey() {
|
|
228
|
+
const mark = vgrammar_1.Factory.createPlotMark(enums_1.PlotMakType.sankey);
|
|
229
|
+
return mark ? this._semanticMarks.push(mark) : this._logger.error(`Please register ${enums_1.PlotMakType.sankey} before use it`),
|
|
230
|
+
mark;
|
|
231
|
+
}
|
|
232
|
+
sunburst() {
|
|
233
|
+
const mark = vgrammar_1.Factory.createPlotMark(enums_1.PlotMakType.sunburst);
|
|
234
|
+
return mark ? this._semanticMarks.push(mark) : this._logger.error(`Please register ${enums_1.PlotMakType.sunburst} before use it`),
|
|
235
|
+
mark;
|
|
236
|
+
}
|
|
237
|
+
tree() {
|
|
238
|
+
const mark = vgrammar_1.Factory.createPlotMark(enums_1.PlotMakType.tree);
|
|
239
|
+
return mark ? this._semanticMarks.push(mark) : this._logger.error(`Please register ${enums_1.PlotMakType.tree} before use it`),
|
|
240
|
+
mark;
|
|
241
|
+
}
|
|
242
|
+
treemap() {
|
|
243
|
+
const mark = vgrammar_1.Factory.createPlotMark(enums_1.PlotMakType.treemap);
|
|
244
|
+
return mark ? this._semanticMarks.push(mark) : this._logger.error(`Please register ${enums_1.PlotMakType.treemap} before use it`),
|
|
245
|
+
mark;
|
|
246
|
+
}
|
|
247
|
+
circlePacking() {
|
|
248
|
+
const mark = vgrammar_1.Factory.createPlotMark(enums_1.PlotMakType.circlePacking);
|
|
249
|
+
return mark ? this._semanticMarks.push(mark) : this._logger.error(`Please register ${enums_1.PlotMakType.circlePacking} before use it`),
|
|
250
|
+
mark;
|
|
251
|
+
}
|
|
252
|
+
wordcloud() {
|
|
253
|
+
const mark = vgrammar_1.Factory.createPlotMark(enums_1.PlotMakType.wordcloud);
|
|
254
|
+
return mark ? this._semanticMarks.push(mark) : this._logger.error(`Please register ${enums_1.PlotMakType.wordcloud} before use it`),
|
|
255
|
+
mark;
|
|
256
|
+
}
|
|
257
|
+
wordcloudShape() {
|
|
258
|
+
const mark = vgrammar_1.Factory.createPlotMark(enums_1.PlotMakType.wordcloudShape);
|
|
259
|
+
return mark ? this._semanticMarks.push(mark) : this._logger.error(`Please register ${enums_1.PlotMakType.wordcloudShape} before use it`),
|
|
260
|
+
mark;
|
|
261
|
+
}
|
|
262
|
+
}
|
|
263
|
+
|
|
264
|
+
exports.Plot = Plot;
|
|
265
|
+
//# sourceMappingURL=plot.js.map
|
package/cjs/plot.js.map
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../src/plot.ts"],"names":[],"mappings":"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","file":"plot.js","sourcesContent":["import type { CoordinateType } from '@visactor/vgrammar-coordinate';\nimport type {\n BaseEventHandler,\n IElement,\n IMorphConfig,\n IView,\n MultiScaleData,\n ScaleData,\n ScaleSpec,\n ViewSpec,\n CoordinateOption,\n IPlot,\n IPlotMarkConstructor,\n IPlotOptions,\n PlotMark,\n PlotSpec\n} from '@visactor/vgrammar';\nimport type { ILogger } from '@visactor/vutils';\nimport { Logger, isNil } from '@visactor/vutils';\nimport { mergeGrammarSpecs } from './util';\nimport { PlotMakType } from './enums';\nimport { Factory, SIGNAL_VIEW_BOX, View } from '@visactor/vgrammar';\n\nexport class Plot implements IPlot {\n static useMarks(marks: IPlotMarkConstructor[]) {\n marks.forEach(mark => {\n Factory.registerPlotMarks(mark.type, mark);\n });\n }\n private _view: IView;\n private _semanticMarks: PlotMark[];\n private _hasInited?: boolean;\n private _coordinate: CoordinateOption;\n private _logger: ILogger;\n\n constructor(option?: IPlotOptions) {\n this._view = new View(option);\n this._semanticMarks = [];\n this._logger = Logger.getInstance();\n }\n\n private _mergeScales(scales: ScaleSpec[], prevScales: ScaleSpec[]) {\n return scales.reduce((res, scale) => {\n if (scale.id) {\n const prevScale = res.find(prev => prev.id === scale.id);\n\n if (prevScale) {\n if ((scale.domain as ScaleData).data && (scale.domain as ScaleData).field) {\n if ((prevScale.domain as ScaleData).data && (prevScale.domain as ScaleData).field) {\n if (\n (scale.domain as ScaleData).data === (prevScale.domain as ScaleData).data &&\n (scale.domain as ScaleData).field !== (prevScale.domain as ScaleData).field\n ) {\n (prevScale.domain as ScaleData).field = []\n .concat((prevScale.domain as ScaleData).field)\n .concat((scale.domain as ScaleData).field);\n } else if ((scale.domain as ScaleData).data !== (prevScale.domain as ScaleData).data) {\n (prevScale.domain as MultiScaleData) = {\n datas: [\n { data: (prevScale.domain as ScaleData).data, field: (prevScale.domain as ScaleData).field },\n { data: (scale.domain as ScaleData).data, field: (scale.domain as ScaleData).field }\n ],\n sort: (prevScale.domain as MultiScaleData).sort\n };\n }\n if (!isNil((scale.domain as ScaleData).sort)) {\n (prevScale.domain as ScaleData).sort = (scale.domain as ScaleData).sort;\n }\n } else if ((prevScale.domain as MultiScaleData).datas) {\n const prevData = (prevScale.domain as MultiScaleData).datas.find(\n entry => entry.data !== (scale.domain as ScaleData).data\n );\n\n if (prevData && (scale.domain as ScaleData).field !== prevData.field) {\n prevData.field = [].concat(prevData.field).concat((scale.domain as ScaleData).field);\n } else if (!prevData) {\n (prevScale.domain as MultiScaleData).datas.push({\n data: (scale.domain as ScaleData).data,\n field: (scale.domain as ScaleData).field\n });\n }\n\n if (!isNil((scale.domain as ScaleData).sort)) {\n (prevScale.domain as ScaleData).sort = (scale.domain as ScaleData).sort;\n }\n }\n }\n } else {\n res.push(scale);\n }\n }\n\n return res;\n }, prevScales);\n }\n\n protected parseViewSpec() {\n const spec: ViewSpec = {\n data: [],\n marks: [],\n scales: [],\n coordinates: [],\n signals: [],\n projections: [],\n events: []\n };\n\n this._semanticMarks.forEach(mark => {\n if (this._coordinate) {\n mark.coordinate(this._coordinate);\n }\n const { data, marks, scales, coordinates, signals, projections, events } = mark.toViewSpec();\n\n if (data && data.length) {\n spec.data = mergeGrammarSpecs(data, spec.data);\n }\n if (marks && marks.length) {\n spec.marks = spec.marks.concat(marks);\n }\n\n if (scales && scales.length) {\n // todo: optimize the following code of combine scales\n spec.scales = this._mergeScales(scales, spec.scales);\n }\n if (coordinates && coordinates.length) {\n spec.coordinates = mergeGrammarSpecs(coordinates, spec.coordinates);\n }\n if (signals && signals.length) {\n spec.signals = spec.signals.concat(signals);\n }\n if (projections && projections.length) {\n spec.projections = spec.projections.concat(projections);\n }\n if (events && events.length) {\n spec.events = spec.events.concat(events);\n }\n });\n\n spec.marks = [\n {\n type: 'group',\n layout: {\n display: 'relative',\n updateViewSignals: true\n },\n dependency: [SIGNAL_VIEW_BOX],\n encode: {\n update: (datum: any, elment: IElement, params: any) => {\n return {\n x: params.viewBox.x1,\n y: params.viewBox.y1,\n width: params.viewBox.width(),\n height: params.viewBox.height()\n };\n }\n },\n marks: spec.marks\n }\n ];\n\n return spec;\n }\n run(morphConfig?: IMorphConfig) {\n if (this._view) {\n if (!this._hasInited) {\n this._view.parseSpec(this.parseViewSpec());\n }\n this._hasInited = true;\n\n this._view.runSync(morphConfig);\n }\n\n return this;\n }\n\n async runAsync(morphConfig?: IMorphConfig) {\n if (this._view) {\n if (!this._hasInited) {\n this._view.parseSpec(this.parseViewSpec());\n }\n this._hasInited = true;\n\n await this._view.runAsync(morphConfig);\n }\n\n return this;\n }\n\n release() {\n if (this._view) {\n this._view.release();\n }\n\n return this;\n }\n\n updateSpec(spec: PlotSpec) {\n this.parseSpec(spec, true);\n return this;\n }\n parseSpec(spec: PlotSpec, isUpdate?: boolean) {\n if (spec.coordinate) {\n this.coordinate(spec.coordinate.type, spec.coordinate);\n }\n\n if (spec?.marks?.length) {\n spec.marks.forEach(mark => {\n const plotMark: PlotMark = Factory.createPlotMark(mark.type);\n plotMark.parseSpec(mark as any);\n\n this._semanticMarks.push(plotMark);\n });\n }\n\n const viewSpec = this.parseViewSpec();\n viewSpec.width = spec.width;\n viewSpec.height = spec.height;\n viewSpec.background = spec.background;\n viewSpec.padding = spec.padding;\n\n if (isUpdate) {\n this._view.updateSpec(viewSpec);\n } else {\n this._view.parseSpec(viewSpec);\n }\n this._hasInited = true;\n\n return this;\n }\n\n getImageBuffer() {\n return this._view?.getImageBuffer?.();\n }\n\n on(type: string, handler: BaseEventHandler) {\n if (this._view) {\n this._view.addEventListener(type, handler);\n }\n return this;\n }\n off(type: string, handler?: BaseEventHandler) {\n if (this._view) {\n this._view.removeEventListener(type, handler);\n }\n return this;\n }\n\n protected getCoordinateId(viewId: string | number = '0') {\n return `coordinate-${viewId}`;\n }\n\n coordinate(type: CoordinateType, spec?: Omit<CoordinateOption, 'type'>) {\n this._coordinate = Object.assign({ type, id: this.getCoordinateId() }, spec);\n\n return this;\n }\n\n interval() {\n const mark = Factory.createPlotMark(PlotMakType.interval);\n\n if (!mark) {\n this._logger.error(`Please register ${PlotMakType.interval} before use it`);\n } else {\n this._semanticMarks.push(mark);\n }\n\n return mark;\n }\n\n line() {\n const mark = Factory.createPlotMark(PlotMakType.line);\n\n if (!mark) {\n this._logger.error(`Please register ${PlotMakType.line} before use it`);\n } else {\n this._semanticMarks.push(mark);\n }\n\n return mark;\n }\n\n area() {\n const mark = Factory.createPlotMark(PlotMakType.area);\n\n if (!mark) {\n this._logger.error(`Please register ${PlotMakType.area} before use it`);\n } else {\n this._semanticMarks.push(mark);\n }\n\n return mark;\n }\n cell() {\n const mark = Factory.createPlotMark(PlotMakType.cell);\n\n if (!mark) {\n this._logger.error(`Please register ${PlotMakType.cell} before use it`);\n } else {\n this._semanticMarks.push(mark);\n }\n\n return mark;\n }\n\n ruleX() {\n const mark = Factory.createPlotMark(PlotMakType.ruleX);\n\n if (!mark) {\n this._logger.error(`Please register ${this.ruleX} before use it`);\n } else {\n this._semanticMarks.push(mark);\n }\n\n return mark;\n }\n\n ruleY() {\n const mark = Factory.createPlotMark(PlotMakType.ruleY);\n\n if (!mark) {\n this._logger.error(`Please register ${PlotMakType.ruleY} before use it`);\n } else {\n this._semanticMarks.push(mark);\n }\n\n return mark;\n }\n\n image() {\n const mark = Factory.createPlotMark(PlotMakType.image);\n\n if (!mark) {\n this._logger.error(`Please register ${PlotMakType.image} before use it`);\n } else {\n this._semanticMarks.push(mark);\n }\n\n return mark;\n }\n\n path() {\n const mark = Factory.createPlotMark(PlotMakType.path);\n\n if (!mark) {\n this._logger.error(`Please register ${PlotMakType.path} before use it`);\n } else {\n this._semanticMarks.push(mark);\n }\n\n return mark;\n }\n\n polygon() {\n const mark = Factory.createPlotMark(PlotMakType.polygon);\n\n if (!mark) {\n this._logger.error(`Please register ${PlotMakType.polygon} before use it`);\n } else {\n this._semanticMarks.push(mark);\n }\n\n return mark;\n }\n\n rectX() {\n const mark = Factory.createPlotMark(PlotMakType.rectX);\n\n if (!mark) {\n this._logger.error(`Please register ${PlotMakType.rectX} before use it`);\n } else {\n this._semanticMarks.push(mark);\n }\n\n return mark;\n }\n\n rectY() {\n const mark = Factory.createPlotMark(PlotMakType.rectY);\n\n if (!mark) {\n this._logger.error(`Please register ${PlotMakType.rectY} before use it`);\n } else {\n this._semanticMarks.push(mark);\n }\n\n return mark;\n }\n\n rect() {\n const mark = Factory.createPlotMark(PlotMakType.rect);\n\n if (!mark) {\n this._logger.error(`Please register ${PlotMakType.rect} before use it`);\n } else {\n this._semanticMarks.push(mark);\n }\n\n return mark;\n }\n\n rule() {\n const mark = Factory.createPlotMark(PlotMakType.rule);\n\n if (!mark) {\n this._logger.error(`Please register ${PlotMakType.rule} before use it`);\n } else {\n this._semanticMarks.push(mark);\n }\n\n return mark;\n }\n\n symbol() {\n const mark = Factory.createPlotMark(PlotMakType.symbol);\n\n if (!mark) {\n this._logger.error(`Please register ${PlotMakType.symbol} before use it`);\n } else {\n this._semanticMarks.push(mark);\n }\n\n return mark;\n }\n\n text() {\n const mark = Factory.createPlotMark(PlotMakType.text);\n\n if (!mark) {\n this._logger.error(`Please register ${PlotMakType.text} before use it`);\n } else {\n this._semanticMarks.push(mark);\n }\n\n return mark;\n }\n\n sankey() {\n const mark = Factory.createPlotMark(PlotMakType.sankey);\n\n if (!mark) {\n this._logger.error(`Please register ${PlotMakType.sankey} before use it`);\n } else {\n this._semanticMarks.push(mark);\n }\n\n return mark;\n }\n\n sunburst() {\n const mark = Factory.createPlotMark(PlotMakType.sunburst);\n\n if (!mark) {\n this._logger.error(`Please register ${PlotMakType.sunburst} before use it`);\n } else {\n this._semanticMarks.push(mark);\n }\n\n return mark;\n }\n\n tree() {\n const mark = Factory.createPlotMark(PlotMakType.tree);\n\n if (!mark) {\n this._logger.error(`Please register ${PlotMakType.tree} before use it`);\n } else {\n this._semanticMarks.push(mark);\n }\n\n return mark;\n }\n\n treemap() {\n const mark = Factory.createPlotMark(PlotMakType.treemap);\n\n if (!mark) {\n this._logger.error(`Please register ${PlotMakType.treemap} before use it`);\n } else {\n this._semanticMarks.push(mark);\n }\n\n return mark;\n }\n\n circlePacking() {\n const mark = Factory.createPlotMark(PlotMakType.circlePacking);\n\n if (!mark) {\n this._logger.error(`Please register ${PlotMakType.circlePacking} before use it`);\n } else {\n this._semanticMarks.push(mark);\n }\n\n return mark;\n }\n\n wordcloud() {\n const mark = Factory.createPlotMark(PlotMakType.wordcloud);\n\n if (!mark) {\n this._logger.error(`Please register ${PlotMakType.wordcloud} before use it`);\n } else {\n this._semanticMarks.push(mark);\n }\n\n return mark;\n }\n\n wordcloudShape() {\n const mark = Factory.createPlotMark(PlotMakType.wordcloudShape);\n\n if (!mark) {\n this._logger.error(`Please register ${PlotMakType.wordcloudShape} before use it`);\n } else {\n this._semanticMarks.push(mark);\n }\n\n return mark;\n }\n}\n"]}
|
package/cjs/polygon.d.ts
ADDED
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
import type { PolygonEncodeChannels, WithDefaultEncode, PlotPolygonEncoderSpec, GenerateBaseEncodeSpec, Nil, ScaleSpec, ValueOf } from '@visactor/vgrammar';
|
|
2
|
+
import { SemanticMark } from './semantic-mark';
|
|
3
|
+
import { PlotMakType } from './enums';
|
|
4
|
+
import { GrammarMarkType } from '@visactor/vgrammar';
|
|
5
|
+
export declare class PolygonSemanticMark extends SemanticMark<PlotPolygonEncoderSpec, PolygonEncodeChannels> {
|
|
6
|
+
static readonly type = PlotMakType.polygon;
|
|
7
|
+
constructor(id?: string | number);
|
|
8
|
+
setMarkType(): GrammarMarkType;
|
|
9
|
+
protected parseScaleOfEncodeX(option: ValueOf<WithDefaultEncode<PlotPolygonEncoderSpec, PolygonEncodeChannels>, PolygonEncodeChannels>): ScaleSpec | Nil;
|
|
10
|
+
parseScaleByEncode(channel: PolygonEncodeChannels, option: ValueOf<WithDefaultEncode<PlotPolygonEncoderSpec, PolygonEncodeChannels>, PolygonEncodeChannels>): ScaleSpec | Nil;
|
|
11
|
+
convertMarkEncode(encode: WithDefaultEncode<PlotPolygonEncoderSpec, PolygonEncodeChannels>): GenerateBaseEncodeSpec<PlotPolygonEncoderSpec>;
|
|
12
|
+
}
|
package/cjs/polygon.js
ADDED
|
@@ -0,0 +1,44 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
Object.defineProperty(exports, "__esModule", {
|
|
4
|
+
value: !0
|
|
5
|
+
}), exports.PolygonSemanticMark = void 0;
|
|
6
|
+
|
|
7
|
+
const semantic_mark_1 = require("./semantic-mark"), vgrammar_util_1 = require("@visactor/vgrammar-util"), enums_1 = require("./enums"), vgrammar_1 = require("@visactor/vgrammar");
|
|
8
|
+
|
|
9
|
+
class PolygonSemanticMark extends semantic_mark_1.SemanticMark {
|
|
10
|
+
constructor(id) {
|
|
11
|
+
super(enums_1.PlotMakType.polygon, id);
|
|
12
|
+
}
|
|
13
|
+
setMarkType() {
|
|
14
|
+
return vgrammar_1.GrammarMarkType.polygon;
|
|
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
|
+
convertMarkEncode(encode) {
|
|
24
|
+
var _a, _b, _c, _d, _e, _f, _g;
|
|
25
|
+
const markEncoder = this.convertSimpleMarkEncode(encode), scaleXId = this.getScaleId("x"), scaleYId = this.getScaleId("y"), res = {};
|
|
26
|
+
if ((null === (_b = null === (_a = markEncoder.x) || void 0 === _a ? void 0 : _a.field) || void 0 === _b ? void 0 : _b.length) && (null === (_d = null === (_c = markEncoder.y) || void 0 === _c ? void 0 : _c.field) || void 0 === _d ? void 0 : _d.length)) {
|
|
27
|
+
const xAccessors = markEncoder.x.field.map((f => (0, vgrammar_util_1.field)(f))), yAccessors = markEncoder.y.field.map((f => (0,
|
|
28
|
+
vgrammar_util_1.field)(f)));
|
|
29
|
+
res.points = (datum, el, params) => {
|
|
30
|
+
const scaleX = params[scaleXId], scaleY = params[scaleYId], minLen = Math.min(xAccessors.length, yAccessors.length), points = [];
|
|
31
|
+
for (let i = 0; i < minLen; i++) points.push({
|
|
32
|
+
x: scaleX.scale(xAccessors[i](datum)),
|
|
33
|
+
y: scaleY.scale(yAccessors[i](datum))
|
|
34
|
+
});
|
|
35
|
+
return points;
|
|
36
|
+
};
|
|
37
|
+
}
|
|
38
|
+
return markEncoder.color || markEncoder.group ? res.fill = null !== (_e = markEncoder.color) && void 0 !== _e ? _e : markEncoder.group : res.fill = null !== (_g = null === (_f = this.spec.style) || void 0 === _f ? void 0 : _f.fill) && void 0 !== _g ? _g : (0,
|
|
39
|
+
vgrammar_1.getPalette)()[0], res;
|
|
40
|
+
}
|
|
41
|
+
}
|
|
42
|
+
|
|
43
|
+
exports.PolygonSemanticMark = PolygonSemanticMark, PolygonSemanticMark.type = enums_1.PlotMakType.polygon;
|
|
44
|
+
//# sourceMappingURL=polygon.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../src/polygon.ts"],"names":[],"mappings":";;;AAWA,mDAA+C;AAC/C,2DAAoE;AACpE,mCAAsC;AACtC,iDAAiE;AAEjE,MAAa,mBAAoB,SAAQ,4BAA2D;IAElG,YAAY,EAAoB;QAC9B,KAAK,CAAC,mBAAW,CAAC,OAAO,EAAE,EAAE,CAAC,CAAC;IACjC,CAAC;IAED,WAAW;QACT,OAAO,0BAAe,CAAC,OAAO,CAAC;IACjC,CAAC;IAES,mBAAmB,CAC3B,MAAwG;QAExG,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,OAA8B,EAC9B,MAAwG;QAExG,OAAO,IAAI,CAAC,wBAAwB,CAAC,OAAO,EAAE,MAAM,CAAC,CAAC;IACxD,CAAC;IAED,iBAAiB,CACf,MAAwE;;QAExE,MAAM,WAAW,GAAG,IAAI,CAAC,uBAAuB,CAAC,MAAM,CAAC,CAAC;QACzD,MAAM,QAAQ,GAAG,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,CAAC;QACtC,MAAM,QAAQ,GAAG,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,CAAC;QACtC,MAAM,GAAG,GAAgD,EAAE,CAAC;QAE5D,IAAI,CAAA,MAAA,MAAA,WAAW,CAAC,CAAC,0CAAE,KAAK,0CAAE,MAAM,MAAI,MAAA,MAAA,WAAW,CAAC,CAAC,0CAAE,KAAK,0CAAE,MAAM,CAAA,EAAE;YAChE,MAAM,UAAU,GAAG,WAAW,CAAC,CAAC,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAM,EAAE,EAAE,CAAC,IAAA,qBAAgB,EAAC,CAAC,CAAC,CAAC,CAAC;YAC5E,MAAM,UAAU,GAAG,WAAW,CAAC,CAAC,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAM,EAAE,EAAE,CAAC,IAAA,qBAAgB,EAAC,CAAC,CAAC,CAAC,CAAC;YAE5E,GAAG,CAAC,MAAM,GAAG,CAAC,KAAU,EAAE,EAAY,EAAE,MAAW,EAAE,EAAE;gBACrD,MAAM,MAAM,GAAG,MAAM,CAAC,QAAQ,CAAC,CAAC;gBAChC,MAAM,MAAM,GAAG,MAAM,CAAC,QAAQ,CAAC,CAAC;gBAChC,MAAM,MAAM,GAAG,IAAI,CAAC,GAAG,CAAC,UAAU,CAAC,MAAM,EAAE,UAAU,CAAC,MAAM,CAAC,CAAC;gBAC9D,MAAM,MAAM,GAAG,EAAE,CAAC;gBAElB,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,MAAM,EAAE,CAAC,EAAE,EAAE;oBAC/B,MAAM,CAAC,IAAI,CAAC;wBACV,CAAC,EAAE,MAAM,CAAC,KAAK,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC;wBACrC,CAAC,EAAE,MAAM,CAAC,KAAK,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC;qBACtC,CAAC,CAAC;iBACJ;gBAED,OAAO,MAAM,CAAC;YAChB,CAAC,CAAC;SACH;QAED,IAAI,WAAW,CAAC,KAAK,IAAI,WAAW,CAAC,KAAK,EAAE;YAC1C,GAAG,CAAC,IAAI,GAAG,MAAA,WAAW,CAAC,KAAK,mCAAI,WAAW,CAAC,KAAK,CAAC;SACnD;aAAM;YACL,GAAG,CAAC,IAAI,GAAG,MAAA,MAAA,IAAI,CAAC,IAAI,CAAC,KAAK,0CAAE,IAAI,mCAAI,IAAA,qBAAU,GAAE,CAAC,CAAC,CAAC,CAAC;SACrD;QAED,OAAO,GAAG,CAAC;IACb,CAAC;;AA9DH,kDA+DC;AA9DiB,wBAAI,GAAG,mBAAW,CAAC,OAAO,CAAC","file":"polygon.js","sourcesContent":["import type {\n PolygonEncodeChannels,\n WithDefaultEncode,\n PlotPolygonEncoderSpec,\n GenerateBaseEncodeSpec,\n Nil,\n ScaleSpec,\n ValueOf,\n IElement,\n GenerateEncoderSpec\n} from '@visactor/vgrammar';\nimport { SemanticMark } from './semantic-mark';\nimport { field as getFieldAccessor } from '@visactor/vgrammar-util';\nimport { PlotMakType } from './enums';\nimport { getPalette, GrammarMarkType } from '@visactor/vgrammar';\n\nexport class PolygonSemanticMark extends SemanticMark<PlotPolygonEncoderSpec, PolygonEncodeChannels> {\n static readonly type = PlotMakType.polygon;\n constructor(id?: string | number) {\n super(PlotMakType.polygon, id);\n }\n\n setMarkType() {\n return GrammarMarkType.polygon;\n }\n\n protected parseScaleOfEncodeX(\n option: ValueOf<WithDefaultEncode<PlotPolygonEncoderSpec, PolygonEncodeChannels>, PolygonEncodeChannels>\n ): ScaleSpec | Nil {\n const res = super.parseScaleOfEncodeX(option);\n\n res.type = 'point';\n return res;\n }\n\n parseScaleByEncode(\n channel: PolygonEncodeChannels,\n option: ValueOf<WithDefaultEncode<PlotPolygonEncoderSpec, PolygonEncodeChannels>, PolygonEncodeChannels>\n ): ScaleSpec | Nil {\n return this.parseScaleOfCommonEncode(channel, option);\n }\n\n convertMarkEncode(\n encode: WithDefaultEncode<PlotPolygonEncoderSpec, PolygonEncodeChannels>\n ): GenerateBaseEncodeSpec<PlotPolygonEncoderSpec> {\n const markEncoder = this.convertSimpleMarkEncode(encode);\n const scaleXId = this.getScaleId('x');\n const scaleYId = this.getScaleId('y');\n const res: GenerateEncoderSpec<PlotPolygonEncoderSpec> = {};\n\n if (markEncoder.x?.field?.length && markEncoder.y?.field?.length) {\n const xAccessors = markEncoder.x.field.map((f: any) => getFieldAccessor(f));\n const yAccessors = markEncoder.y.field.map((f: any) => getFieldAccessor(f));\n\n res.points = (datum: any, el: IElement, params: any) => {\n const scaleX = params[scaleXId];\n const scaleY = params[scaleYId];\n const minLen = Math.min(xAccessors.length, yAccessors.length);\n const points = [];\n\n for (let i = 0; i < minLen; i++) {\n points.push({\n x: scaleX.scale(xAccessors[i](datum)),\n y: scaleY.scale(yAccessors[i](datum))\n });\n }\n\n return points;\n };\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"]}
|