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