@visactor/vgrammar-plot 0.7.0-alpha.3 → 0.7.1
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/cjs/area.d.ts +2 -2
- package/cjs/area.js +2 -2
- package/cjs/area.js.map +1 -1
- package/cjs/cell.d.ts +2 -2
- package/cjs/cell.js +2 -2
- package/cjs/cell.js.map +1 -1
- package/cjs/circle-packing.d.ts +2 -2
- package/cjs/circle-packing.js +3 -3
- package/cjs/circle-packing.js.map +1 -1
- package/cjs/image.d.ts +2 -2
- package/cjs/image.js +2 -2
- package/cjs/image.js.map +1 -1
- package/cjs/interval.d.ts +2 -2
- package/cjs/interval.js +2 -2
- package/cjs/interval.js.map +1 -1
- package/cjs/line.d.ts +2 -2
- package/cjs/line.js +2 -2
- package/cjs/line.js.map +1 -1
- package/cjs/path.d.ts +2 -2
- package/cjs/path.js +2 -2
- package/cjs/path.js.map +1 -1
- package/cjs/plot.d.ts +23 -23
- package/cjs/plot.js +27 -27
- package/cjs/plot.js.map +1 -1
- package/cjs/polygon.d.ts +2 -2
- package/cjs/polygon.js +2 -2
- package/cjs/polygon.js.map +1 -1
- package/cjs/rect-x.d.ts +2 -2
- package/cjs/rect-x.js +8 -4
- package/cjs/rect-x.js.map +1 -1
- package/cjs/rect-y.d.ts +2 -2
- package/cjs/rect-y.js +8 -4
- package/cjs/rect-y.js.map +1 -1
- package/cjs/rect.d.ts +2 -2
- package/cjs/rect.js +14 -6
- package/cjs/rect.js.map +1 -1
- package/cjs/rule-x.d.ts +2 -2
- package/cjs/rule-x.js +2 -2
- package/cjs/rule-x.js.map +1 -1
- package/cjs/rule-y.d.ts +2 -2
- package/cjs/rule-y.js +2 -2
- package/cjs/rule-y.js.map +1 -1
- package/cjs/rule.d.ts +2 -2
- package/cjs/rule.js +2 -2
- package/cjs/rule.js.map +1 -1
- package/cjs/sankey.d.ts +4 -4
- package/cjs/sankey.js +5 -5
- package/cjs/sankey.js.map +1 -1
- package/cjs/semantic-mark.d.ts +5 -1
- package/cjs/semantic-mark.js +163 -43
- package/cjs/semantic-mark.js.map +1 -1
- package/cjs/sunburst.d.ts +3 -3
- package/cjs/sunburst.js +4 -4
- package/cjs/sunburst.js.map +1 -1
- package/cjs/symbol.d.ts +2 -2
- package/cjs/symbol.js +2 -2
- package/cjs/symbol.js.map +1 -1
- package/cjs/text.d.ts +2 -2
- package/cjs/text.js +2 -2
- package/cjs/text.js.map +1 -1
- package/cjs/tree.d.ts +2 -2
- package/cjs/tree.js +4 -4
- package/cjs/tree.js.map +1 -1
- package/cjs/treemap.d.ts +3 -3
- package/cjs/treemap.js +4 -4
- package/cjs/treemap.js.map +1 -1
- package/cjs/wordcloud-shape.d.ts +2 -2
- package/cjs/wordcloud-shape.js +3 -3
- package/cjs/wordcloud-shape.js.map +1 -1
- package/cjs/wordcloud.d.ts +2 -2
- package/cjs/wordcloud.js +3 -3
- package/cjs/wordcloud.js.map +1 -1
- package/es/area.d.ts +2 -2
- package/es/area.js +1 -1
- package/es/area.js.map +1 -1
- package/es/cell.d.ts +2 -2
- package/es/cell.js +1 -1
- package/es/cell.js.map +1 -1
- package/es/circle-packing.d.ts +2 -2
- package/es/circle-packing.js +2 -2
- package/es/circle-packing.js.map +1 -1
- package/es/image.d.ts +2 -2
- package/es/image.js +1 -1
- package/es/image.js.map +1 -1
- package/es/interval.d.ts +2 -2
- package/es/interval.js +1 -1
- package/es/interval.js.map +1 -1
- package/es/line.d.ts +2 -2
- package/es/line.js +1 -1
- package/es/line.js.map +1 -1
- package/es/path.d.ts +2 -2
- package/es/path.js +1 -1
- package/es/path.js.map +1 -1
- package/es/plot.d.ts +23 -23
- package/es/plot.js +1 -1
- package/es/plot.js.map +1 -1
- package/es/polygon.d.ts +2 -2
- package/es/polygon.js +1 -1
- package/es/polygon.js.map +1 -1
- package/es/rect-x.d.ts +2 -2
- package/es/rect-x.js +9 -3
- package/es/rect-x.js.map +1 -1
- package/es/rect-y.d.ts +2 -2
- package/es/rect-y.js +9 -3
- package/es/rect-y.js.map +1 -1
- package/es/rect.d.ts +2 -2
- package/es/rect.js +15 -5
- package/es/rect.js.map +1 -1
- package/es/rule-x.d.ts +2 -2
- package/es/rule-x.js +1 -1
- package/es/rule-x.js.map +1 -1
- package/es/rule-y.d.ts +2 -2
- package/es/rule-y.js +1 -1
- package/es/rule-y.js.map +1 -1
- package/es/rule.d.ts +2 -2
- package/es/rule.js +1 -1
- package/es/rule.js.map +1 -1
- package/es/sankey.d.ts +4 -4
- package/es/sankey.js +3 -3
- package/es/sankey.js.map +1 -1
- package/es/semantic-mark.d.ts +5 -1
- package/es/semantic-mark.js +137 -18
- package/es/semantic-mark.js.map +1 -1
- package/es/sunburst.d.ts +3 -3
- package/es/sunburst.js +2 -2
- package/es/sunburst.js.map +1 -1
- package/es/symbol.d.ts +2 -2
- package/es/symbol.js +1 -1
- package/es/symbol.js.map +1 -1
- package/es/text.d.ts +2 -2
- package/es/text.js +1 -1
- package/es/text.js.map +1 -1
- package/es/tree.d.ts +2 -2
- package/es/tree.js +3 -3
- package/es/tree.js.map +1 -1
- package/es/treemap.d.ts +3 -3
- package/es/treemap.js +2 -2
- package/es/treemap.js.map +1 -1
- package/es/wordcloud-shape.d.ts +2 -2
- package/es/wordcloud-shape.js +2 -2
- package/es/wordcloud-shape.js.map +1 -1
- package/es/wordcloud.d.ts +2 -2
- package/es/wordcloud.js +2 -2
- package/es/wordcloud.js.map +1 -1
- package/package.json +8 -8
- package/dist/index.js +0 -3448
- package/dist/index.min.js +0 -1
package/es/rect.js
CHANGED
|
@@ -2,12 +2,14 @@ import { field as getFieldAccessor } from "@visactor/vgrammar-util";
|
|
|
2
2
|
|
|
3
3
|
import { SemanticMark } from "./semantic-mark";
|
|
4
4
|
|
|
5
|
-
import { GrammarMarkType } from "@visactor/vgrammar";
|
|
5
|
+
import { GrammarMarkType } from "@visactor/vgrammar-core";
|
|
6
6
|
|
|
7
7
|
import { isArray } from "@visactor/vutils";
|
|
8
8
|
|
|
9
9
|
import { PlotMakType } from "./enums";
|
|
10
10
|
|
|
11
|
+
import { isContinuous } from "@visactor/vscale";
|
|
12
|
+
|
|
11
13
|
export class RectSemanticMark extends SemanticMark {
|
|
12
14
|
constructor(id) {
|
|
13
15
|
super(PlotMakType.rect, id);
|
|
@@ -51,10 +53,14 @@ export class RectSemanticMark extends SemanticMark {
|
|
|
51
53
|
const xVals = xAccessor(datum), scale = params[scaleXId];
|
|
52
54
|
return isArray(xVals) ? scale.scale(xVals[0]) : scale.scale(xVals);
|
|
53
55
|
}, res.x1 = (datum, el, params) => {
|
|
56
|
+
var _a, _b, _c, _d;
|
|
54
57
|
const scale = params[scaleXId], xVals = xAccessor(datum);
|
|
55
58
|
if (isArray(xVals) && xVals.length > 1) return scale.scale(xVals[1]);
|
|
56
|
-
|
|
57
|
-
|
|
59
|
+
if (isContinuous(scale.type)) {
|
|
60
|
+
const domain = scale.domain(), min = Math.min.apply(null, domain), max = Math.max.apply(null, domain), baseValue = min > 0 ? min : max < 0 ? max : 0;
|
|
61
|
+
return scale.scale(baseValue);
|
|
62
|
+
}
|
|
63
|
+
return scale.scale(xVals) + (null !== (_d = null !== (_b = null === (_a = scale.bandwidth) || void 0 === _a ? void 0 : _a.call(scale)) && void 0 !== _b ? _b : null === (_c = scale.step) || void 0 === _c ? void 0 : _c.call(scale)) && void 0 !== _d ? _d : 0);
|
|
58
64
|
};
|
|
59
65
|
}
|
|
60
66
|
if (isArray(null === (_b = markEncoder.y) || void 0 === _b ? void 0 : _b.field)) res.y = {
|
|
@@ -69,10 +75,14 @@ export class RectSemanticMark extends SemanticMark {
|
|
|
69
75
|
const yVals = yAccessor(datum), scale = params[scaleYId];
|
|
70
76
|
return isArray(yVals) ? scale.scale(yVals[0]) : scale.scale(yVals);
|
|
71
77
|
}, res.y1 = (datum, el, params) => {
|
|
78
|
+
var _a, _b, _c, _d;
|
|
72
79
|
const scale = params[scaleYId], yVals = yAccessor(datum);
|
|
73
80
|
if (isArray(yVals) && yVals.length > 1) return scale.scale(yVals[1]);
|
|
74
|
-
|
|
75
|
-
|
|
81
|
+
if (isContinuous(scale.type)) {
|
|
82
|
+
const domain = scale.domain(), min = Math.min.apply(null, domain), max = Math.max.apply(null, domain), baseValue = min > 0 ? min : max < 0 ? max : 0;
|
|
83
|
+
return scale.scale(baseValue);
|
|
84
|
+
}
|
|
85
|
+
return scale.scale(yVals) + (null !== (_d = null !== (_b = null === (_a = scale.bandwidth) || void 0 === _a ? void 0 : _a.call(scale)) && void 0 !== _b ? _b : null === (_c = scale.step) || void 0 === _c ? void 0 : _c.call(scale)) && void 0 !== _d ? _d : 0);
|
|
76
86
|
};
|
|
77
87
|
}
|
|
78
88
|
return markEncoder.stroke && (res.stroke = markEncoder.stroke), 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 : null === (_f = this.getPalette()) || void 0 === _f ? void 0 : _f[0],
|
package/es/rect.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../src/rect.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,IAAI,gBAAgB,EAAE,MAAM,yBAAyB,CAAC;AAapE,OAAO,EAAE,YAAY,EAAE,MAAM,iBAAiB,CAAC;AAE/C,OAAO,EAAE,eAAe,EAAE,MAAM,
|
|
1
|
+
{"version":3,"sources":["../src/rect.ts"],"names":[],"mappings":"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","file":"rect.js","sourcesContent":["import { field as getFieldAccessor } from '@visactor/vgrammar-util';\nimport type {\n RectEncodeChannels,\n PlotRectEncoderSpec,\n SemanticTooltipOption,\n WithDefaultEncode,\n GenerateBaseEncodeSpec,\n CrosshairSpec,\n Nil,\n ScaleSpec,\n ValueOf,\n IElement\n} from '@visactor/vgrammar-core';\nimport { SemanticMark } from './semantic-mark';\n// eslint-disable-next-line no-duplicate-imports\nimport { GrammarMarkType } from '@visactor/vgrammar-core';\nimport { isArray } from '@visactor/vutils';\nimport { PlotMakType } from './enums';\nimport { isContinuous } from '@visactor/vscale';\n\nexport class RectSemanticMark extends SemanticMark<PlotRectEncoderSpec, RectEncodeChannels> {\n static readonly type = PlotMakType.rect;\n constructor(id?: string | number) {\n super(PlotMakType.rect, id);\n }\n\n setMarkType() {\n return GrammarMarkType.rect;\n }\n\n parseScaleByEncode(\n channel: RectEncodeChannels,\n option: ValueOf<WithDefaultEncode<PlotRectEncoderSpec, RectEncodeChannels>, RectEncodeChannels>\n ): ScaleSpec | Nil {\n return this.parseScaleOfCommonEncode(channel, option);\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 convertMarkEncode(\n encode: WithDefaultEncode<PlotRectEncoderSpec, RectEncodeChannels>\n ): GenerateBaseEncodeSpec<PlotRectEncoderSpec> {\n const markEncoder = this.convertSimpleMarkEncode(encode);\n const scaleXId = this.getScaleId('x');\n const scaleYId = this.getScaleId('y');\n const res: GenerateBaseEncodeSpec<PlotRectEncoderSpec> = {};\n\n if (isArray(markEncoder.x?.field)) {\n res.x = { field: markEncoder.x.field[0], scale: markEncoder.x.scale };\n res.x1 = { field: markEncoder.x.field[1], scale: markEncoder.x.scale };\n } else {\n const xAccessor = getFieldAccessor(markEncoder.x.field);\n res.x = (datum: any, el: IElement, params: any) => {\n const xVals = xAccessor(datum);\n const scale = params[scaleXId];\n\n return isArray(xVals) ? scale.scale(xVals[0]) : scale.scale(xVals);\n };\n res.x1 = (datum: any, el: IElement, params: any) => {\n const scale = params[scaleXId];\n const xVals = xAccessor(datum);\n\n if (isArray(xVals) && xVals.length > 1) {\n return scale.scale(xVals[1]);\n }\n\n if (isContinuous(scale.type)) {\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 return scale.scale(xVals) + (scale.bandwidth?.() ?? scale.step?.() ?? 0);\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 if (isContinuous(scale.type)) {\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 return scale.scale(yVals) + (scale.bandwidth?.() ?? scale.step?.() ?? 0);\n };\n }\n\n if (markEncoder.stroke) {\n res.stroke = markEncoder.stroke;\n }\n\n if (markEncoder.color || markEncoder.group) {\n res.fill = markEncoder.color ?? markEncoder.group;\n } else {\n res.fill = this.spec.style?.fill ?? this.getPalette()?.[0];\n }\n\n return res;\n }\n}\n"]}
|
package/es/rule-x.d.ts
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
|
-
import type { RuleXEncodeChannels, WithDefaultEncode, BasicEncoderSpecMap, GenerateBaseEncodeSpec, Nil, ScaleSpec, ValueOf } from '@visactor/vgrammar';
|
|
1
|
+
import type { RuleXEncodeChannels, WithDefaultEncode, BasicEncoderSpecMap, GenerateBaseEncodeSpec, Nil, ScaleSpec, ValueOf } from '@visactor/vgrammar-core';
|
|
2
2
|
import { SemanticMark } from './semantic-mark';
|
|
3
|
-
import { GrammarMarkType } from '@visactor/vgrammar';
|
|
3
|
+
import { GrammarMarkType } from '@visactor/vgrammar-core';
|
|
4
4
|
import { PlotMakType } from './enums';
|
|
5
5
|
export declare class RuleX extends SemanticMark<BasicEncoderSpecMap['rule'], RuleXEncodeChannels> {
|
|
6
6
|
static readonly type = PlotMakType.ruleX;
|
package/es/rule-x.js
CHANGED
package/es/rule-x.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../src/rule-x.ts"],"names":[],"mappings":"AAWA,OAAO,EAAE,YAAY,EAAE,MAAM,iBAAiB,CAAC;AAE/C,OAAO,EAAE,eAAe,EAAE,MAAM,
|
|
1
|
+
{"version":3,"sources":["../src/rule-x.ts"],"names":[],"mappings":"AAWA,OAAO,EAAE,YAAY,EAAE,MAAM,iBAAiB,CAAC;AAE/C,OAAO,EAAE,eAAe,EAAE,MAAM,yBAAyB,CAAC;AAC1D,OAAO,EAAE,WAAW,EAAE,MAAM,SAAS,CAAC;AAEtC,MAAM,OAAO,KAAM,SAAQ,YAA8D;IAEvF,YAAY,EAAoB;QAC9B,KAAK,CAAC,WAAW,CAAC,KAAK,EAAE,EAAE,CAAC,CAAC;IAC/B,CAAC;IAED,WAAW;QACT,OAAO,eAAe,CAAC,IAAI,CAAC;IAC9B,CAAC;IAES,mBAAmB,CAC3B,MAAyG;QAEzG,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,OAA4B,EAC5B,MAAyG;QAEzG,OAAO,IAAI,CAAC,wBAAwB,CAAC,OAAO,EAAE,MAAM,CAAC,CAAC;IACxD,CAAC;IAED,iBAAiB,CACf,MAA2E;;QAE3E,MAAM,WAAW,GAAG,IAAI,CAAC,uBAAuB,CAAC,MAAM,CAAC,CAAC;QAEzD,MAAM,GAAG,GAAG;YACV,CAAC,EAAE,WAAW,CAAC,CAAC;YAChB,EAAE,EAAE,WAAW,CAAC,CAAC;YACjB,CAAC,EAAE,CAAC,KAAU,EAAE,EAAY,EAAE,MAAW,EAAE,EAAE;gBAC3C,OAAO,CAAC,CAAC;YACX,CAAC;YACD,EAAE,EAAE,CAAC,KAAU,EAAE,EAAY,EAAE,MAAW,EAAE,EAAE;gBAC5C,OAAO,MAAM,CAAC,OAAO,CAAC,MAAM,EAAE,CAAC;YACjC,CAAC;SACkD,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,MAAA,IAAI,CAAC,UAAU,EAAE,0CAAG,CAAC,CAAC,CAAC;SAChE;QAED,OAAO,GAAG,CAAC;IACb,CAAC;;AAhDe,UAAI,GAAG,WAAW,CAAC,KAAK,CAAC","file":"rule-x.js","sourcesContent":["import type {\n RuleXEncodeChannels,\n WithDefaultEncode,\n BasicEncoderSpecMap,\n GenerateBaseEncodeSpec,\n GenerateEncoderSpec,\n IElement,\n Nil,\n ScaleSpec,\n ValueOf\n} from '@visactor/vgrammar-core';\nimport { SemanticMark } from './semantic-mark';\n// eslint-disable-next-line no-duplicate-imports\nimport { GrammarMarkType } from '@visactor/vgrammar-core';\nimport { PlotMakType } from './enums';\n\nexport class RuleX extends SemanticMark<BasicEncoderSpecMap['rule'], RuleXEncodeChannels> {\n static readonly type = PlotMakType.ruleX;\n constructor(id?: string | number) {\n super(PlotMakType.ruleX, id);\n }\n\n setMarkType() {\n return GrammarMarkType.rule;\n }\n\n protected parseScaleOfEncodeX(\n option: ValueOf<WithDefaultEncode<BasicEncoderSpecMap['rule'], RuleXEncodeChannels>, RuleXEncodeChannels>\n ): ScaleSpec | Nil {\n const res = super.parseScaleOfEncodeX(option);\n\n res.type = 'point';\n return res;\n }\n\n parseScaleByEncode(\n channel: RuleXEncodeChannels,\n option: ValueOf<WithDefaultEncode<BasicEncoderSpecMap['rule'], RuleXEncodeChannels>, RuleXEncodeChannels>\n ): ScaleSpec | Nil {\n return this.parseScaleOfCommonEncode(channel, option);\n }\n\n convertMarkEncode(\n encode: WithDefaultEncode<BasicEncoderSpecMap['rule'], RuleXEncodeChannels>\n ): GenerateBaseEncodeSpec<BasicEncoderSpecMap['rule']> {\n const markEncoder = this.convertSimpleMarkEncode(encode);\n\n const res = {\n x: markEncoder.x,\n x1: markEncoder.x,\n y: (datum: any, el: IElement, params: any) => {\n return 0;\n },\n y1: (datum: any, el: IElement, params: any) => {\n return params.viewBox.height();\n }\n } as GenerateEncoderSpec<BasicEncoderSpecMap['rule']>;\n\n if (markEncoder.color || markEncoder.group) {\n res.stroke = markEncoder.color ?? markEncoder.group;\n } else {\n res.stroke = this.spec.style?.stroke ?? this.getPalette()?.[0];\n }\n\n return res;\n }\n}\n"]}
|
package/es/rule-y.d.ts
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
|
-
import type { RuleYEncodeChannels, WithDefaultEncode, BasicEncoderSpecMap, GenerateBaseEncodeSpec, Nil, ScaleSpec, ValueOf } from '@visactor/vgrammar';
|
|
1
|
+
import type { RuleYEncodeChannels, WithDefaultEncode, BasicEncoderSpecMap, GenerateBaseEncodeSpec, Nil, ScaleSpec, ValueOf } from '@visactor/vgrammar-core';
|
|
2
2
|
import { SemanticMark } from './semantic-mark';
|
|
3
|
-
import { GrammarMarkType } from '@visactor/vgrammar';
|
|
3
|
+
import { GrammarMarkType } from '@visactor/vgrammar-core';
|
|
4
4
|
import { PlotMakType } from './enums';
|
|
5
5
|
export declare class RuleY extends SemanticMark<BasicEncoderSpecMap['rule'], RuleYEncodeChannels> {
|
|
6
6
|
static readonly type = PlotMakType.ruleY;
|
package/es/rule-y.js
CHANGED
package/es/rule-y.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../src/rule-y.ts"],"names":[],"mappings":"AAWA,OAAO,EAAE,YAAY,EAAE,MAAM,iBAAiB,CAAC;AAE/C,OAAO,EAAE,eAAe,EAAE,MAAM,
|
|
1
|
+
{"version":3,"sources":["../src/rule-y.ts"],"names":[],"mappings":"AAWA,OAAO,EAAE,YAAY,EAAE,MAAM,iBAAiB,CAAC;AAE/C,OAAO,EAAE,eAAe,EAAE,MAAM,yBAAyB,CAAC;AAC1D,OAAO,EAAE,WAAW,EAAE,MAAM,SAAS,CAAC;AACtC,OAAO,EAAE,OAAO,EAAE,MAAM,kBAAkB,CAAC;AAE3C,MAAM,OAAO,KAAM,SAAQ,YAA8D;IAEvF,YAAY,EAAoB;QAC9B,KAAK,CAAC,WAAW,CAAC,KAAK,EAAE,EAAE,CAAC,CAAC;IAC/B,CAAC;IAED,WAAW;QACT,OAAO,eAAe,CAAC,IAAI,CAAC;IAC9B,CAAC;IAES,mBAAmB,CAC3B,MAAyG;QAEzG,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,OAA4B,EAC5B,MAAyG;QAEzG,OAAO,IAAI,CAAC,wBAAwB,CAAC,OAAO,EAAE,MAAM,CAAC,CAAC;IACxD,CAAC;IAED,iBAAiB,CACf,MAA2E;;QAE3E,MAAM,WAAW,GAAG,IAAI,CAAC,uBAAuB,CAAC,MAAM,CAAC,CAAC;QAEzD,MAAM,GAAG,GAAG;YACV,CAAC,EAAE,WAAW,CAAC,CAAC;YAChB,EAAE,EAAE,WAAW,CAAC,CAAC;YACjB,CAAC,EAAE,OAAO,CAAC,MAAA,WAAW,CAAC,CAAC,0CAAE,KAAK,CAAC;gBAC9B,CAAC,CAAC,EAAE,KAAK,EAAE,WAAW,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,KAAK,EAAE,WAAW,CAAC,CAAC,CAAC,KAAK,EAAE;gBAC/D,CAAC,CAAC,CAAC,KAAU,EAAE,EAAY,EAAE,MAAW,EAAE,EAAE;oBACxC,OAAO,CAAC,CAAC;gBACX,CAAC;YACL,EAAE,EAAE,OAAO,CAAC,MAAA,WAAW,CAAC,CAAC,0CAAE,KAAK,CAAC;gBAC/B,CAAC,CAAC,EAAE,KAAK,EAAE,WAAW,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,KAAK,EAAE,WAAW,CAAC,CAAC,CAAC,KAAK,EAAE;gBAC/D,CAAC,CAAC,CAAC,KAAU,EAAE,EAAY,EAAE,MAAW,EAAE,EAAE;oBACxC,OAAO,MAAM,CAAC,OAAO,CAAC,KAAK,EAAE,CAAC;gBAChC,CAAC;SAC8C,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,MAAA,IAAI,CAAC,UAAU,EAAE,0CAAG,CAAC,CAAC,CAAC;SAChE;QAED,OAAO,GAAG,CAAC;IACb,CAAC;;AApDe,UAAI,GAAG,WAAW,CAAC,KAAK,CAAC","file":"rule-y.js","sourcesContent":["import type {\n RuleYEncodeChannels,\n WithDefaultEncode,\n BasicEncoderSpecMap,\n GenerateBaseEncodeSpec,\n GenerateEncoderSpec,\n IElement,\n Nil,\n ScaleSpec,\n ValueOf\n} from '@visactor/vgrammar-core';\nimport { SemanticMark } from './semantic-mark';\n// eslint-disable-next-line no-duplicate-imports\nimport { GrammarMarkType } from '@visactor/vgrammar-core';\nimport { PlotMakType } from './enums';\nimport { isArray } from '@visactor/vutils';\n\nexport class RuleY extends SemanticMark<BasicEncoderSpecMap['rule'], RuleYEncodeChannels> {\n static readonly type = PlotMakType.ruleY;\n constructor(id?: string | number) {\n super(PlotMakType.ruleY, id);\n }\n\n setMarkType() {\n return GrammarMarkType.rule;\n }\n\n protected parseScaleOfEncodeX(\n option: ValueOf<WithDefaultEncode<BasicEncoderSpecMap['rule'], RuleYEncodeChannels>, RuleYEncodeChannels>\n ): ScaleSpec | Nil {\n const res = super.parseScaleOfEncodeX(option);\n\n res.type = 'point';\n return res;\n }\n\n parseScaleByEncode(\n channel: RuleYEncodeChannels,\n option: ValueOf<WithDefaultEncode<BasicEncoderSpecMap['rule'], RuleYEncodeChannels>, RuleYEncodeChannels>\n ): ScaleSpec | Nil {\n return this.parseScaleOfCommonEncode(channel, option);\n }\n\n convertMarkEncode(\n encode: WithDefaultEncode<BasicEncoderSpecMap['rule'], RuleYEncodeChannels>\n ): GenerateBaseEncodeSpec<BasicEncoderSpecMap['rule']> {\n const markEncoder = this.convertSimpleMarkEncode(encode);\n\n const res = {\n y: markEncoder.y,\n y1: markEncoder.y,\n x: isArray(markEncoder.x?.field)\n ? { field: markEncoder.x.field[0], scale: markEncoder.x.scale }\n : (datum: any, el: IElement, params: any) => {\n return 0;\n },\n x1: isArray(markEncoder.x?.field)\n ? { field: markEncoder.x.field[1], scale: markEncoder.x.scale }\n : (datum: any, el: IElement, params: any) => {\n return params.viewBox.width();\n }\n } as GenerateEncoderSpec<BasicEncoderSpecMap['rule']>;\n\n if (markEncoder.color || markEncoder.group) {\n res.stroke = markEncoder.color ?? markEncoder.group;\n } else {\n res.stroke = this.spec.style?.stroke ?? this.getPalette()?.[0];\n }\n\n return res;\n }\n}\n"]}
|
package/es/rule.d.ts
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
|
-
import type { RuleEncodeChannels, WithDefaultEncode, PlotRuleEncoderSpec, GenerateBaseEncodeSpec, Nil, ScaleSpec, ValueOf } from '@visactor/vgrammar';
|
|
1
|
+
import type { RuleEncodeChannels, WithDefaultEncode, PlotRuleEncoderSpec, GenerateBaseEncodeSpec, Nil, ScaleSpec, ValueOf } from '@visactor/vgrammar-core';
|
|
2
2
|
import { SemanticMark } from './semantic-mark';
|
|
3
|
-
import { GrammarMarkType } from '@visactor/vgrammar';
|
|
3
|
+
import { GrammarMarkType } from '@visactor/vgrammar-core';
|
|
4
4
|
import { PlotMakType } from './enums';
|
|
5
5
|
export declare class Rule extends SemanticMark<PlotRuleEncoderSpec, RuleEncodeChannels> {
|
|
6
6
|
static readonly type = PlotMakType.rule;
|
package/es/rule.js
CHANGED
package/es/rule.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../src/rule.ts"],"names":[],"mappings":"AAUA,OAAO,EAAE,YAAY,EAAE,MAAM,iBAAiB,CAAC;AAE/C,OAAO,EAAE,eAAe,EAAE,MAAM,
|
|
1
|
+
{"version":3,"sources":["../src/rule.ts"],"names":[],"mappings":"AAUA,OAAO,EAAE,YAAY,EAAE,MAAM,iBAAiB,CAAC;AAE/C,OAAO,EAAE,eAAe,EAAE,MAAM,yBAAyB,CAAC;AAC1D,OAAO,EAAE,OAAO,EAAE,MAAM,kBAAkB,CAAC;AAC3C,OAAO,EAAE,WAAW,EAAE,MAAM,SAAS,CAAC;AAEtC,MAAM,OAAO,IAAK,SAAQ,YAAqD;IAE7E,YAAY,EAAoB;QAC9B,KAAK,CAAC,WAAW,CAAC,IAAI,EAAE,EAAE,CAAC,CAAC;IAC9B,CAAC;IAED,WAAW;QACT,OAAO,eAAe,CAAC,IAAI,CAAC;IAC9B,CAAC;IAES,mBAAmB,CAC3B,MAA+F;QAE/F,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,MAA+F;QAE/F,OAAO,IAAI,CAAC,wBAAwB,CAAC,OAAO,EAAE,MAAM,CAAC,CAAC;IACxD,CAAC;IAED,iBAAiB,CACf,MAAkE;;QAElE,MAAM,WAAW,GAAG,IAAI,CAAC,uBAAuB,CAAC,MAAM,CAAC,CAAC;QAEzD,IAAI,GAA6C,CAAC;QAElD,IAAI,OAAO,CAAC,MAAA,WAAW,CAAC,CAAC,0CAAE,KAAK,CAAC,EAAE;YACjC,GAAG,CAAC,CAAC,GAAG,EAAE,KAAK,EAAE,WAAW,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,KAAK,EAAE,WAAW,CAAC,CAAC,CAAC,KAAK,EAAE,CAAC;YACtE,GAAG,CAAC,EAAE,GAAG,EAAE,KAAK,EAAE,WAAW,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,KAAK,EAAE,WAAW,CAAC,CAAC,CAAC,KAAK,EAAE,CAAC;SACxE;aAAM;YACL,GAAG,CAAC,CAAC,GAAG,GAAG,CAAC,EAAE,GAAG,WAAW,CAAC,CAAC,CAAC;SAChC;QAED,IAAI,OAAO,CAAC,MAAA,WAAW,CAAC,CAAC,0CAAE,KAAK,CAAC,EAAE;YACjC,GAAG,CAAC,CAAC,GAAG,EAAE,KAAK,EAAE,WAAW,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,KAAK,EAAE,WAAW,CAAC,CAAC,CAAC,KAAK,EAAE,CAAC;YACtE,GAAG,CAAC,EAAE,GAAG,EAAE,KAAK,EAAE,WAAW,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,KAAK,EAAE,WAAW,CAAC,CAAC,CAAC,KAAK,EAAE,CAAC;SACxE;aAAM;YACL,GAAG,CAAC,CAAC,GAAG,GAAG,CAAC,EAAE,GAAG,WAAW,CAAC,CAAC,CAAC;SAChC;QAED,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,MAAA,IAAI,CAAC,UAAU,EAAE,0CAAG,CAAC,CAAC,CAAC;SAChE;QAED,OAAO,GAAG,CAAC;IACb,CAAC;;AArDe,SAAI,GAAG,WAAW,CAAC,IAAI,CAAC","file":"rule.js","sourcesContent":["import type {\n RuleEncodeChannels,\n WithDefaultEncode,\n PlotRuleEncoderSpec,\n GenerateBaseEncodeSpec,\n GenerateEncoderSpec,\n Nil,\n ScaleSpec,\n ValueOf\n} from '@visactor/vgrammar-core';\nimport { SemanticMark } from './semantic-mark';\n// eslint-disable-next-line no-duplicate-imports\nimport { GrammarMarkType } from '@visactor/vgrammar-core';\nimport { isArray } from '@visactor/vutils';\nimport { PlotMakType } from './enums';\n\nexport class Rule extends SemanticMark<PlotRuleEncoderSpec, RuleEncodeChannels> {\n static readonly type = PlotMakType.rule;\n constructor(id?: string | number) {\n super(PlotMakType.rule, id);\n }\n\n setMarkType() {\n return GrammarMarkType.rule;\n }\n\n protected parseScaleOfEncodeX(\n option: ValueOf<WithDefaultEncode<PlotRuleEncoderSpec, RuleEncodeChannels>, RuleEncodeChannels>\n ): ScaleSpec | Nil {\n const res = super.parseScaleOfEncodeX(option);\n\n res.type = 'point';\n return res;\n }\n\n parseScaleByEncode(\n channel: RuleEncodeChannels,\n option: ValueOf<WithDefaultEncode<PlotRuleEncoderSpec, RuleEncodeChannels>, RuleEncodeChannels>\n ): ScaleSpec | Nil {\n return this.parseScaleOfCommonEncode(channel, option);\n }\n\n convertMarkEncode(\n encode: WithDefaultEncode<PlotRuleEncoderSpec, RuleEncodeChannels>\n ): GenerateBaseEncodeSpec<PlotRuleEncoderSpec> {\n const markEncoder = this.convertSimpleMarkEncode(encode);\n\n let res: GenerateEncoderSpec<PlotRuleEncoderSpec>;\n\n if (isArray(markEncoder.x?.field)) {\n res.x = { field: markEncoder.x.field[0], scale: markEncoder.x.scale };\n res.x1 = { field: markEncoder.x.field[1], scale: markEncoder.x.scale };\n } else {\n res.x = res.x1 = markEncoder.x;\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 res.y = res.y1 = markEncoder.y;\n }\n\n if (markEncoder.color || markEncoder.group) {\n res.stroke = markEncoder.color ?? markEncoder.group;\n } else {\n res.stroke = this.spec.style?.stroke ?? this.getPalette()?.[0];\n }\n\n return res;\n }\n}\n"]}
|
package/es/sankey.d.ts
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
|
-
import type { SankeyEncodeChannels, WithDefaultEncode, PlotSankeyEncoderSpec, SemanticLabelOption, ChannelEncodeType, DataSpec, GenerateBaseEncodeSpec, Nil, ScaleSpec, ValueOf, TransformSpec, IElement } from '@visactor/vgrammar';
|
|
1
|
+
import type { SankeyEncodeChannels, WithDefaultEncode, PlotSankeyEncoderSpec, SemanticLabelOption, ChannelEncodeType, DataSpec, GenerateBaseEncodeSpec, Nil, ScaleSpec, ValueOf, TransformSpec, IElement } from '@visactor/vgrammar-core';
|
|
2
2
|
import { SemanticMark } from './semantic-mark';
|
|
3
|
-
import { GrammarMarkType } from '@visactor/vgrammar';
|
|
3
|
+
import { GrammarMarkType } from '@visactor/vgrammar-core';
|
|
4
4
|
import { PlotMakType } from './enums';
|
|
5
5
|
import type { ITextAttribute } from '@visactor/vrender';
|
|
6
6
|
export declare class SankeySemanticMark extends SemanticMark<PlotSankeyEncoderSpec, SankeyEncodeChannels> {
|
|
@@ -29,8 +29,8 @@ export declare class SankeySemanticMark extends SemanticMark<PlotSankeyEncoderSp
|
|
|
29
29
|
};
|
|
30
30
|
key: string;
|
|
31
31
|
dependency: string[];
|
|
32
|
-
animation: import("@visactor/vgrammar").MarkAnimationSpec;
|
|
33
|
-
encode: Record<string, Partial<Partial<import("@visactor/vgrammar").LinkPathEncoderSpec>>> & {
|
|
32
|
+
animation: import("@visactor/vgrammar-core").MarkAnimationSpec;
|
|
33
|
+
encode: Record<string, Partial<Partial<import("@visactor/vgrammar-core").LinkPathEncoderSpec>>> & {
|
|
34
34
|
enter: any;
|
|
35
35
|
update: (datum: any, el: IElement, params: any) => {
|
|
36
36
|
direction: string;
|
package/es/sankey.js
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import { SemanticMark } from "./semantic-mark";
|
|
2
2
|
|
|
3
|
-
import { GrammarMarkType, SIGNAL_VIEW_BOX,
|
|
3
|
+
import { GrammarMarkType, SIGNAL_VIEW_BOX, Factory } from "@visactor/vgrammar-core";
|
|
4
4
|
|
|
5
5
|
import { PlotMakType } from "./enums";
|
|
6
6
|
|
|
@@ -8,8 +8,8 @@ import { field as getFieldAccessor } from "@visactor/vgrammar-util";
|
|
|
8
8
|
|
|
9
9
|
export class SankeySemanticMark extends SemanticMark {
|
|
10
10
|
constructor(id) {
|
|
11
|
-
super(PlotMakType.sankey, id), getTransform(PlotMakType.sankey) || this._logger.error("Please add this line of code: import { registerSankeyTransforms } from '@visactor/vgrammar-sankey'; \n and run registerSankeyTransforms() before use sankey"),
|
|
12
|
-
getGlyph("linkPath") || this._logger.error("\n Please add this line of code: import { registerLinkPathGlyph } from '@visactor/vgrammar';\n add run registerLinkPathGlyph() before use sankey\n ");
|
|
11
|
+
super(PlotMakType.sankey, id), Factory.getTransform(PlotMakType.sankey) || this._logger.error("Please add this line of code: import { registerSankeyTransforms } from '@visactor/vgrammar-sankey'; \n and run registerSankeyTransforms() before use sankey"),
|
|
12
|
+
Factory.getGlyph("linkPath") || this._logger.error("\n Please add this line of code: import { registerLinkPathGlyph } from '@visactor/vgrammar-core';\n add run registerLinkPathGlyph() before use sankey\n ");
|
|
13
13
|
}
|
|
14
14
|
setMarkType() {
|
|
15
15
|
return GrammarMarkType.rect;
|
package/es/sankey.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../src/sankey.ts"],"names":[],"mappings":"AAeA,OAAO,EAAE,YAAY,EAAE,MAAM,iBAAiB,CAAC;AAE/C,OAAO,EAAE,eAAe,EAAE,eAAe,EAAE,
|
|
1
|
+
{"version":3,"sources":["../src/sankey.ts"],"names":[],"mappings":"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","file":"sankey.js","sourcesContent":["import type {\n SankeyEncodeChannels,\n WithDefaultEncode,\n PlotSankeyEncoderSpec,\n SemanticLabelOption,\n ChannelEncodeType,\n DataSpec,\n GenerateBaseEncodeSpec,\n GenerateEncoderSpec,\n Nil,\n ScaleSpec,\n ValueOf,\n TransformSpec,\n IElement\n} from '@visactor/vgrammar-core';\nimport { SemanticMark } from './semantic-mark';\n// eslint-disable-next-line no-duplicate-imports\nimport { GrammarMarkType, SIGNAL_VIEW_BOX, Factory } from '@visactor/vgrammar-core';\nimport { PlotMakType } from './enums';\nimport { field as getFieldAccessor } from '@visactor/vgrammar-util';\nimport type { ITextAttribute } from '@visactor/vrender';\n\nexport class SankeySemanticMark extends SemanticMark<PlotSankeyEncoderSpec, SankeyEncodeChannels> {\n static readonly type = PlotMakType.sankey;\n constructor(id?: string | number) {\n super(PlotMakType.sankey, id);\n\n if (!Factory.getTransform(PlotMakType.sankey)) {\n this._logger.error(\n `Please add this line of code: import { registerSankeyTransforms } from '@visactor/vgrammar-sankey'; \n and run registerSankeyTransforms() before use sankey`\n );\n }\n\n if (!Factory.getGlyph('linkPath')) {\n this._logger.error(`\n Please add this line of code: import { registerLinkPathGlyph } from '@visactor/vgrammar-core';\n add run registerLinkPathGlyph() before use sankey\n `);\n }\n }\n\n setMarkType() {\n return GrammarMarkType.rect;\n }\n\n setDefaultDataTransform(): TransformSpec[] {\n return [\n {\n type: 'sankey',\n width: { signal: 'viewWidth' },\n height: { signal: 'viewHeight' },\n nodeKey: this.spec.encode?.node\n }\n ];\n }\n\n getDataIdOfLink() {\n return `${this.spec.data?.id ?? this.spec.id}-data-link`;\n }\n\n setMultipleData(): DataSpec[] {\n return [\n {\n id: this.getDataIdOfFiltered(),\n transform: [\n {\n type: 'map',\n all: true,\n callback: (datum: any) => {\n return datum[0].nodes;\n }\n }\n ]\n },\n {\n source: this.getDataIdOfMain(),\n id: this.getDataIdOfLink(),\n transform: [\n {\n type: 'map',\n all: true,\n callback: (datum: any) => {\n // return formatLinkPath(datum[0].links);\n return datum[0].links;\n }\n }\n ]\n }\n ];\n }\n\n parseScaleByEncode(\n channel: SankeyEncodeChannels,\n option: ValueOf<WithDefaultEncode<PlotSankeyEncoderSpec, SankeyEncodeChannels>, SankeyEncodeChannels>\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: this.getPalette()\n };\n }\n\n return null;\n }\n\n convertMarkEncode(\n encode: WithDefaultEncode<PlotSankeyEncoderSpec, SankeyEncodeChannels>\n ): GenerateBaseEncodeSpec<PlotSankeyEncoderSpec> {\n const markEncoder = this.convertSimpleMarkEncode(encode);\n\n const res: GenerateEncoderSpec<PlotSankeyEncoderSpec> = {\n x: { field: 'x0' },\n x1: { field: 'x1' },\n y: { field: 'y0' },\n y1: { field: 'y1' }\n };\n\n if (markEncoder.stroke) {\n res.stroke = markEncoder.stroke;\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 scale.scale(colorAccessor(datum?.datum));\n };\n } else {\n res.fill = this.spec.style?.nodeStyle?.fill ?? this.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);\n };\n }\n\n setMultiMarksSpec() {\n // TODO: optimize the default style\n return [\n {\n id: `${this.getMarkId()}-link`,\n type: 'glyph',\n glyphType: 'linkPath',\n from: {\n data: this.getDataIdOfLink()\n },\n layout: {\n position: 'content',\n skipBeforeLayouted: true\n },\n key: 'index',\n dependency: this.viewSpec.scales.map(scale => scale.id).concat(SIGNAL_VIEW_BOX),\n animation: this.convertMarkAnimation(),\n encode: Object.assign({}, this.spec.state, {\n enter: Object.assign(\n {\n backgroundStyle: { fillColor: '#ccc', fillOpacity: 0.2 },\n fillOpacity: 0.8,\n round: true\n },\n this.spec.style?.linkStyle\n ),\n update: (datum: any, el: IElement, params: any) => {\n return {\n direction: datum.vertical ? 'vertical' : 'horizontal',\n x0: datum.x0,\n x1: datum.x1,\n y0: datum.y0,\n y1: datum.y1,\n thickness: datum.thickness,\n fill: this.spec.style?.linkStyle?.fill ?? this.getPalette()?.[0]\n };\n }\n })\n }\n ];\n }\n}\n"]}
|
package/es/semantic-mark.d.ts
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import type { ILogger } from '@visactor/vutils';
|
|
2
|
-
import type { ISemanticMark, ISemanticMarkSpec, ParsedSimpleEncode, WithDefaultEncode, SemanticTooltipOption, SemanticAxisOption, SemanticPlayerOption, SemanticLabelOption, SemanticDataZoomOption, SemanticSliderOption, SemanticLegendOption, SemanticCrosshairOption, CoordinateOption, AxisSpec, CrosshairSpec, DatazoomSpec, DimensionTooltipSpec, LabelSpec, LegendSpec, PlayerSpec, SliderSpec, TooltipSpec, CoordinateSpec, DataSpec, ChannelEncodeType, ScaleSpec, TransformSpec, MarkAnimationSpec, ViewSpec, MarkType, Nil, ValueOf, GenerateBaseEncodeSpec, IAnimationConfig, MarkSpec, MarkRelativeItemSpec, IPlot } from '@visactor/vgrammar';
|
|
2
|
+
import type { ISemanticMark, ISemanticMarkSpec, ParsedSimpleEncode, WithDefaultEncode, SemanticTooltipOption, SemanticAxisOption, SemanticPlayerOption, SemanticLabelOption, SemanticDataZoomOption, SemanticSliderOption, SemanticLegendOption, SemanticCrosshairOption, CoordinateOption, AxisSpec, CrosshairSpec, DatazoomSpec, DimensionTooltipSpec, LabelSpec, LegendSpec, PlayerSpec, SliderSpec, TooltipSpec, CoordinateSpec, DataSpec, ChannelEncodeType, ScaleSpec, TransformSpec, MarkAnimationSpec, ViewSpec, MarkType, Nil, ValueOf, GenerateBaseEncodeSpec, IAnimationConfig, MarkSpec, MarkRelativeItemSpec, IPlot, SemanticGridOption, GridSpec, TitleSpec, SemanticTitleOption } from '@visactor/vgrammar-core';
|
|
3
3
|
import type { ITextAttribute } from '@visactor/vrender';
|
|
4
4
|
export declare abstract class SemanticMark<EncodeSpec, K extends string> implements ISemanticMark<EncodeSpec, K> {
|
|
5
5
|
spec: ISemanticMarkSpec<EncodeSpec, K>;
|
|
@@ -20,6 +20,7 @@ export declare abstract class SemanticMark<EncodeSpec, K extends string> impleme
|
|
|
20
20
|
state(state: string, option: Partial<EncodeSpec>): this;
|
|
21
21
|
animate(state: string, option: IAnimationConfig | IAnimationConfig[]): this;
|
|
22
22
|
axis(channel: string, option?: SemanticAxisOption | boolean, layout?: MarkRelativeItemSpec): this;
|
|
23
|
+
grid(channel: string, option?: SemanticGridOption | boolean): this;
|
|
23
24
|
legend(channel: string, option?: SemanticLegendOption | boolean, layout?: MarkRelativeItemSpec): this;
|
|
24
25
|
crosshair(channel: string, option?: SemanticCrosshairOption | boolean): this;
|
|
25
26
|
tooltip(option: SemanticTooltipOption | boolean): this;
|
|
@@ -27,6 +28,7 @@ export declare abstract class SemanticMark<EncodeSpec, K extends string> impleme
|
|
|
27
28
|
datazoom(channel: string, option?: SemanticDataZoomOption | boolean, layout?: MarkRelativeItemSpec): this;
|
|
28
29
|
label(channel: string, option?: SemanticLabelOption | boolean): this;
|
|
29
30
|
player(data?: any[], option?: SemanticPlayerOption | boolean, layout?: MarkRelativeItemSpec): this;
|
|
31
|
+
title(option: SemanticTitleOption, layout?: MarkRelativeItemSpec): this;
|
|
30
32
|
protected getPalette(): import("@visactor/vrender").IColor[];
|
|
31
33
|
abstract setMarkType(): MarkType;
|
|
32
34
|
abstract parseScaleByEncode(channel: K, option: ValueOf<WithDefaultEncode<EncodeSpec, K>, K>): ScaleSpec | Nil;
|
|
@@ -55,6 +57,7 @@ export declare abstract class SemanticMark<EncodeSpec, K extends string> impleme
|
|
|
55
57
|
protected parseScaleOfCommonEncode(channel: K, option: ValueOf<WithDefaultEncode<EncodeSpec, K>, K>): ScaleSpec | Nil;
|
|
56
58
|
protected setDefaultAxis(): Record<string, Partial<AxisSpec>>;
|
|
57
59
|
protected parseAxisSpec(): AxisSpec[];
|
|
60
|
+
protected parseGridSpec(): GridSpec[];
|
|
58
61
|
protected parseOption<T>(spec: {
|
|
59
62
|
option: T | boolean;
|
|
60
63
|
layout?: MarkRelativeItemSpec;
|
|
@@ -80,6 +83,7 @@ export declare abstract class SemanticMark<EncodeSpec, K extends string> impleme
|
|
|
80
83
|
protected parseLabelSpec(): LabelSpec[];
|
|
81
84
|
protected setDefaultPlayer(): Record<string, Partial<PlayerSpec>>;
|
|
82
85
|
protected parsePlayerSpec(): PlayerSpec[];
|
|
86
|
+
protected parseTitleSpec(): TitleSpec[];
|
|
83
87
|
protected parseDataSpec(): DataSpec[];
|
|
84
88
|
protected parseScaleSpec(): (ScaleSpec & {
|
|
85
89
|
userScale?: ScaleSpec;
|
package/es/semantic-mark.js
CHANGED
|
@@ -2,7 +2,7 @@ import { Logger, array, isArray, isBoolean, isNil, isPlainObject, merge } from "
|
|
|
2
2
|
|
|
3
3
|
import { isContinuous, isDiscrete } from "@visactor/vscale";
|
|
4
4
|
|
|
5
|
-
import { ComponentEnum, SIGNAL_VIEW_BOX, BuiltInEncodeNames, ThemeManager } from "@visactor/vgrammar";
|
|
5
|
+
import { ComponentEnum, SIGNAL_VIEW_BOX, BuiltInEncodeNames, ThemeManager, Factory } from "@visactor/vgrammar-core";
|
|
6
6
|
|
|
7
7
|
import { field as getFieldAccessor, toPercent } from "@visactor/vgrammar-util";
|
|
8
8
|
|
|
@@ -53,46 +53,70 @@ export class SemanticMark {
|
|
|
53
53
|
this);
|
|
54
54
|
}
|
|
55
55
|
axis(channel, option = !0, layout) {
|
|
56
|
-
return this.spec.axis || (this.spec.axis = {}),
|
|
56
|
+
return Factory.hasComponent("axis") ? (this.spec.axis || (this.spec.axis = {}),
|
|
57
|
+
this.spec.axis[channel] = {
|
|
57
58
|
option: option,
|
|
58
59
|
layout: layout
|
|
59
|
-
}, this;
|
|
60
|
+
}, this) : (this._logger.error('Please add this line of code: import { registerAxis } from \'@visactor/vgrammar-core\'; \n and run "registerAxis();" or "View.useRegisters([registerAxis]);" '),
|
|
61
|
+
this);
|
|
62
|
+
}
|
|
63
|
+
grid(channel, option = !0) {
|
|
64
|
+
return Factory.hasComponent("grid") ? (this.spec.grid || (this.spec.grid = {}),
|
|
65
|
+
this.spec.grid[channel] = option, this) : (this._logger.error('Please add this line of code: import { registerGrid } from \'@visactor/vgrammar-core\'; \n and run "registerGrid();" or "View.useRegisters([registerGrid]);" '),
|
|
66
|
+
this);
|
|
60
67
|
}
|
|
61
68
|
legend(channel, option = !0, layout) {
|
|
62
|
-
return this.spec.legend || (this.spec.legend = {}),
|
|
69
|
+
return Factory.hasComponent("legend") ? (this.spec.legend || (this.spec.legend = {}),
|
|
70
|
+
this.spec.legend[channel] = {
|
|
63
71
|
option: option,
|
|
64
72
|
layout: layout
|
|
65
|
-
}, this;
|
|
73
|
+
}, this) : (this._logger.error('Please add this line of code: import { registerLegend } from \'@visactor/vgrammar-core\'; \n and run "registerLegend();" or "View.useRegisters([registerLegend]);" '),
|
|
74
|
+
this);
|
|
66
75
|
}
|
|
67
76
|
crosshair(channel, option) {
|
|
68
|
-
return this.spec.crosshair || (this.spec.crosshair = {}),
|
|
69
|
-
this;
|
|
77
|
+
return Factory.hasComponent("crosshair") ? (this.spec.crosshair || (this.spec.crosshair = {}),
|
|
78
|
+
this.spec.crosshair[channel] = option, this) : (this._logger.error('Please add this line of code: import { registerCrosshair } from \'@visactor/vgrammar-core\'; \n and run "registerCrosshair();" or "View.useRegisters([registerCrosshair]);" '),
|
|
79
|
+
this);
|
|
70
80
|
}
|
|
71
81
|
tooltip(option) {
|
|
72
|
-
return this.spec.tooltip = option, this;
|
|
82
|
+
return Factory.hasComponent("tooltip") ? (this.spec.tooltip = option, this) : (this._logger.error('Please add this line of code: import { registerTooltip } from \'@visactor/vgrammar-core\'; \n and run "registerTooltip();" or "View.useRegisters([registerTooltip]);" '),
|
|
83
|
+
this);
|
|
73
84
|
}
|
|
74
85
|
slider(channel, option, layout) {
|
|
75
|
-
return this.spec.slider || (this.spec.slider = {}),
|
|
86
|
+
return Factory.hasComponent("slider") ? (this.spec.slider || (this.spec.slider = {}),
|
|
87
|
+
this.spec.slider[channel] = {
|
|
76
88
|
option: option,
|
|
77
89
|
layout: layout
|
|
78
|
-
}, this;
|
|
90
|
+
}, this) : (this._logger.error('Please add this line of code: import { registerSlider } from \'@visactor/vgrammar-core\'; \n and run "registerSlider();" or "View.useRegisters([registerSlider]);" '),
|
|
91
|
+
this);
|
|
79
92
|
}
|
|
80
93
|
datazoom(channel, option, layout) {
|
|
81
|
-
return this.spec.datazoom || (this.spec.datazoom = {}),
|
|
94
|
+
return Factory.hasComponent("datazoom") ? (this.spec.datazoom || (this.spec.datazoom = {}),
|
|
95
|
+
this.spec.datazoom[channel] = {
|
|
82
96
|
option: option,
|
|
83
97
|
layout: layout
|
|
84
|
-
}, this;
|
|
98
|
+
}, this) : (this._logger.error('Please add this line of code: import { registerDataZoom } from \'@visactor/vgrammar-core\'; \n and run "registerDataZoom();" or "View.useRegisters([registerDataZoom]);" '),
|
|
99
|
+
this);
|
|
85
100
|
}
|
|
86
101
|
label(channel, option) {
|
|
87
|
-
return this.spec.label || (this.spec.label = {}),
|
|
88
|
-
this;
|
|
102
|
+
return Factory.hasComponent("label") ? (this.spec.label || (this.spec.label = {}),
|
|
103
|
+
this.spec.label[channel] = option, this) : (this._logger.error('Please add this line of code: import { registerLabel } from \'@visactor/vgrammar-core\'; \n and run "registerLabel();" or "View.useRegisters([registerLabel]);" '),
|
|
104
|
+
this);
|
|
89
105
|
}
|
|
90
106
|
player(data, option, layout) {
|
|
91
|
-
return this.spec.player = {
|
|
107
|
+
return Factory.hasComponent("player") ? (this.spec.player = {
|
|
92
108
|
data: data,
|
|
93
109
|
option: option,
|
|
94
110
|
layout: layout
|
|
95
|
-
}, this;
|
|
111
|
+
}, this) : (this._logger.error('Please add this line of code: import { registerPlayer } from \'@visactor/vgrammar-core\'; \n and run "registerPlayer();" or "View.useRegisters([registerPlayer]);" '),
|
|
112
|
+
this);
|
|
113
|
+
}
|
|
114
|
+
title(option, layout) {
|
|
115
|
+
return Factory.hasComponent("title") ? (this.spec.title = {
|
|
116
|
+
option: option,
|
|
117
|
+
layout: layout
|
|
118
|
+
}, this) : (this._logger.error('Please add this line of code: import { registerTitle } from \'@visactor/vgrammar-core\'; \n and run "registerTitle();" or "View.useRegisters([registerTitle]);" '),
|
|
119
|
+
this);
|
|
96
120
|
}
|
|
97
121
|
getPalette() {
|
|
98
122
|
var _a;
|
|
@@ -283,6 +307,60 @@ export class SemanticMark {
|
|
|
283
307
|
}
|
|
284
308
|
})), res;
|
|
285
309
|
}
|
|
310
|
+
parseGridSpec() {
|
|
311
|
+
const grid = this.spec.grid, res = [];
|
|
312
|
+
return grid && Object.keys(grid).forEach((channel => {
|
|
313
|
+
var _a, _b, _c, _d, _e;
|
|
314
|
+
const option = grid[channel];
|
|
315
|
+
if (option) {
|
|
316
|
+
const relatedAxisOption = null === (_b = this.parseOption(null === (_a = this.spec.axis) || void 0 === _a ? void 0 : _a[channel])) || void 0 === _b ? void 0 : _b.option, visiualChannel = this.getVisualChannel(channel), isCircleGrid = "radius" === visiualChannel, tickCount = null !== (_c = option.tickCount) && void 0 !== _c ? _c : null == relatedAxisOption ? void 0 : relatedAxisOption.tickCount, otherChannel = "x" === channel ? "y" : "x", otherScaleId = this.getScaleId(otherChannel), otherAxisOption = null === (_e = this.parseOption(null === (_d = this.spec.axis) || void 0 === _d ? void 0 : _d[otherChannel])) || void 0 === _e ? void 0 : _e.option, markSpec = {
|
|
317
|
+
type: "component",
|
|
318
|
+
componentType: ComponentEnum.grid,
|
|
319
|
+
scale: this.getScaleId(channel),
|
|
320
|
+
dependency: [ SIGNAL_VIEW_BOX, otherScaleId ],
|
|
321
|
+
tickCount: tickCount,
|
|
322
|
+
inside: option.inside,
|
|
323
|
+
baseValue: option.baseValue,
|
|
324
|
+
gridType: "angle" === visiualChannel ? "circle" : "line",
|
|
325
|
+
gridShape: isCircleGrid ? "polygon" === option.type ? "polygon" : "circle" : "line",
|
|
326
|
+
encode: {
|
|
327
|
+
update: (datum, elment, params) => {
|
|
328
|
+
var _a, _b, _c;
|
|
329
|
+
const positionAttrs = this._coordinate ? {} : "x" === channel ? {
|
|
330
|
+
x: 0,
|
|
331
|
+
y: params.viewBox.height(),
|
|
332
|
+
start: {
|
|
333
|
+
x: 0,
|
|
334
|
+
y: 0
|
|
335
|
+
},
|
|
336
|
+
end: {
|
|
337
|
+
x: params.viewBox.width(),
|
|
338
|
+
y: 0
|
|
339
|
+
},
|
|
340
|
+
length: params.viewBox.height()
|
|
341
|
+
} : {
|
|
342
|
+
x: 0,
|
|
343
|
+
y: params.viewBox.height(),
|
|
344
|
+
start: {
|
|
345
|
+
x: 0,
|
|
346
|
+
y: 0
|
|
347
|
+
},
|
|
348
|
+
verticalFactor: -1,
|
|
349
|
+
end: {
|
|
350
|
+
x: 0,
|
|
351
|
+
y: -params.viewBox.height()
|
|
352
|
+
},
|
|
353
|
+
length: params.viewBox.width()
|
|
354
|
+
};
|
|
355
|
+
return isCircleGrid && "polygon" === option.type && (positionAttrs.sides = null !== (_a = null == option ? void 0 : option.sides) && void 0 !== _a ? _a : null === (_c = null === (_b = params[otherScaleId]) || void 0 === _b ? void 0 : _b.ticks(null == otherAxisOption ? void 0 : otherAxisOption.tickCount)) || void 0 === _c ? void 0 : _c.length),
|
|
356
|
+
isPlainObject(option) ? merge(positionAttrs, option) : positionAttrs;
|
|
357
|
+
}
|
|
358
|
+
}
|
|
359
|
+
};
|
|
360
|
+
res.push(markSpec);
|
|
361
|
+
}
|
|
362
|
+
})), res;
|
|
363
|
+
}
|
|
286
364
|
parseOption(spec) {
|
|
287
365
|
let option, layout;
|
|
288
366
|
return isPlainObject(spec) ? isNil(spec.option) ? option = spec : (option = spec.option,
|
|
@@ -719,6 +797,46 @@ export class SemanticMark {
|
|
|
719
797
|
}
|
|
720
798
|
return res;
|
|
721
799
|
}
|
|
800
|
+
parseTitleSpec() {
|
|
801
|
+
const title = this.spec.title, res = [];
|
|
802
|
+
if (title) {
|
|
803
|
+
const {option: option, layout: layout} = this.parseOption(title);
|
|
804
|
+
if (option) {
|
|
805
|
+
const markLayout = null != layout ? layout : {
|
|
806
|
+
position: "top"
|
|
807
|
+
}, markSpec = {
|
|
808
|
+
type: "component",
|
|
809
|
+
componentType: ComponentEnum.title,
|
|
810
|
+
dependency: [ SIGNAL_VIEW_BOX ],
|
|
811
|
+
title: option.text,
|
|
812
|
+
subTitle: option.subtext,
|
|
813
|
+
encode: {
|
|
814
|
+
update: (datum, elment, params) => {
|
|
815
|
+
var _a, _b, _c, _d, _e, _f, _g, _h, _j, _k, _l, _m, _o, _p, _q, _r, _s, _t, _u, _v, _w, _x, _y, _z;
|
|
816
|
+
const calculatedAttrs = "left" === markLayout.position ? {
|
|
817
|
+
x: null !== (_c = null === (_b = null === (_a = elment.mark) || void 0 === _a ? void 0 : _a.relativePosition) || void 0 === _b ? void 0 : _b.left) && void 0 !== _c ? _c : 0,
|
|
818
|
+
y: null !== (_f = null === (_e = null === (_d = elment.mark) || void 0 === _d ? void 0 : _d.relativePosition) || void 0 === _e ? void 0 : _e.top) && void 0 !== _f ? _f : 0
|
|
819
|
+
} : "right" === markLayout.position ? {
|
|
820
|
+
x: null !== (_j = null === (_h = null === (_g = elment.mark) || void 0 === _g ? void 0 : _g.relativePosition) || void 0 === _h ? void 0 : _h.left) && void 0 !== _j ? _j : params.viewBox.width(),
|
|
821
|
+
y: null !== (_m = null === (_l = null === (_k = elment.mark) || void 0 === _k ? void 0 : _k.relativePosition) || void 0 === _l ? void 0 : _l.top) && void 0 !== _m ? _m : 0
|
|
822
|
+
} : "bottom" === markLayout.position ? {
|
|
823
|
+
x: null !== (_q = null === (_p = null === (_o = elment.mark) || void 0 === _o ? void 0 : _o.relativePosition) || void 0 === _p ? void 0 : _p.left) && void 0 !== _q ? _q : 0,
|
|
824
|
+
y: null !== (_t = null === (_s = null === (_r = elment.mark) || void 0 === _r ? void 0 : _r.relativePosition) || void 0 === _s ? void 0 : _s.top) && void 0 !== _t ? _t : params.viewBox.height(),
|
|
825
|
+
width: params.viewBox.width()
|
|
826
|
+
} : {
|
|
827
|
+
x: null !== (_w = null === (_v = null === (_u = elment.mark) || void 0 === _u ? void 0 : _u.relativePosition) || void 0 === _v ? void 0 : _v.left) && void 0 !== _w ? _w : 0,
|
|
828
|
+
y: null !== (_z = null === (_y = null === (_x = elment.mark) || void 0 === _x ? void 0 : _x.relativePosition) || void 0 === _y ? void 0 : _y.top) && void 0 !== _z ? _z : 0,
|
|
829
|
+
width: params.viewBox.width()
|
|
830
|
+
};
|
|
831
|
+
return isPlainObject(option) ? merge({}, calculatedAttrs, option) : calculatedAttrs;
|
|
832
|
+
}
|
|
833
|
+
}
|
|
834
|
+
};
|
|
835
|
+
markSpec.layout = markLayout, res.push(markSpec);
|
|
836
|
+
}
|
|
837
|
+
}
|
|
838
|
+
return res;
|
|
839
|
+
}
|
|
722
840
|
parseDataSpec() {
|
|
723
841
|
var _a;
|
|
724
842
|
const {data: data, player: player} = this.spec, res = [];
|
|
@@ -832,8 +950,9 @@ export class SemanticMark {
|
|
|
832
950
|
this.viewSpec.coordinates = this.parseCoordinateSpec();
|
|
833
951
|
let marks = [];
|
|
834
952
|
marks = marks.concat(this.parseLegendSpec()), marks = marks.concat(this.parseAxisSpec()),
|
|
835
|
-
marks = marks.concat(this.
|
|
836
|
-
marks = marks.concat(this.
|
|
953
|
+
marks = marks.concat(this.parseGridSpec()), marks = marks.concat(this.parseCrosshairSpec()),
|
|
954
|
+
marks = marks.concat(this.parseSliderSpec()), marks = marks.concat(this.parseDataZoomSpec()),
|
|
955
|
+
marks = marks.concat(this.parsePlayerSpec()), marks = marks.concat(this.parseTitleSpec()),
|
|
837
956
|
marks.push(Object.assign({
|
|
838
957
|
id: this.getMarkId(),
|
|
839
958
|
type: this.setMarkType(),
|