@visactor/vgrammar-core 0.13.5 → 0.13.7
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/graph/animation/animation/fade.js +4 -3
- package/cjs/graph/animation/animation/fade.js.map +1 -1
- package/cjs/graph/animation/animation/grow-interval.js +9 -6
- package/cjs/graph/animation/animation/grow-interval.js.map +1 -1
- package/cjs/graph/animation/animation/grow-polar.js +76 -63
- package/cjs/graph/animation/animation/grow-polar.js.map +1 -1
- package/cjs/graph/animation/animation/move.js +5 -5
- package/cjs/graph/animation/animation/move.js.map +1 -1
- package/cjs/graph/animation/animation/rotate.js +2 -2
- package/cjs/graph/animation/animation/rotate.js.map +1 -1
- package/cjs/graph/animation/animation/scale.js +5 -4
- package/cjs/graph/animation/animation/scale.js.map +1 -1
- package/cjs/graph/element.d.ts +1 -0
- package/cjs/graph/element.js +22 -3
- package/cjs/graph/element.js.map +1 -1
- package/cjs/graph/glyph-element.js +3 -3
- package/cjs/graph/glyph-element.js.map +1 -1
- package/cjs/index.d.ts +1 -1
- package/cjs/index.js +1 -1
- package/cjs/index.js.map +1 -1
- package/cjs/interactions/brush-highlight.js +16 -7
- package/cjs/interactions/brush-highlight.js.map +1 -1
- package/cjs/interactions/element-highlight-by-group.js +9 -3
- package/cjs/interactions/element-highlight-by-group.js.map +1 -1
- package/cjs/interactions/element-highlight-by-key.js +16 -5
- package/cjs/interactions/element-highlight-by-key.js.map +1 -1
- package/cjs/interactions/element-highlight-by-legend.js +9 -3
- package/cjs/interactions/element-highlight-by-legend.js.map +1 -1
- package/cjs/interactions/element-highlight-by-name.js +9 -3
- package/cjs/interactions/element-highlight-by-name.js.map +1 -1
- package/cjs/types/element.d.ts +2 -1
- package/cjs/types/element.js.map +1 -1
- package/cjs/view/group.js +6 -3
- package/cjs/view/group.js.map +1 -1
- package/cjs/view/mark.js +15 -9
- package/cjs/view/mark.js.map +1 -1
- package/es/graph/animation/animation/fade.js +4 -3
- package/es/graph/animation/animation/fade.js.map +1 -1
- package/es/graph/animation/animation/grow-interval.js +9 -6
- package/es/graph/animation/animation/grow-interval.js.map +1 -1
- package/es/graph/animation/animation/grow-polar.js +76 -63
- package/es/graph/animation/animation/grow-polar.js.map +1 -1
- package/es/graph/animation/animation/move.js +5 -5
- package/es/graph/animation/animation/move.js.map +1 -1
- package/es/graph/animation/animation/rotate.js +2 -2
- package/es/graph/animation/animation/rotate.js.map +1 -1
- package/es/graph/animation/animation/scale.js +5 -4
- package/es/graph/animation/animation/scale.js.map +1 -1
- package/es/graph/element.d.ts +1 -0
- package/es/graph/element.js +23 -4
- package/es/graph/element.js.map +1 -1
- package/es/graph/glyph-element.js +3 -3
- package/es/graph/glyph-element.js.map +1 -1
- package/es/index.d.ts +1 -1
- package/es/index.js +1 -1
- package/es/index.js.map +1 -1
- package/es/interactions/brush-filter.js +2 -1
- package/es/interactions/brush-highlight.js +16 -7
- package/es/interactions/brush-highlight.js.map +1 -1
- package/es/interactions/element-highlight-by-group.js +10 -5
- package/es/interactions/element-highlight-by-group.js.map +1 -1
- package/es/interactions/element-highlight-by-key.js +16 -5
- package/es/interactions/element-highlight-by-key.js.map +1 -1
- package/es/interactions/element-highlight-by-legend.js +9 -3
- package/es/interactions/element-highlight-by-legend.js.map +1 -1
- package/es/interactions/element-highlight-by-name.js +9 -3
- package/es/interactions/element-highlight-by-name.js.map +1 -1
- package/es/interactions/index.js +2 -1
- package/es/interactions/legend-filter.js +1 -1
- package/es/interactions/player-filter.js +1 -1
- package/es/interactions/roll-up.js +1 -1
- package/es/interactions/scrollbar-filter.js +1 -1
- package/es/interactions/slider-filter.js +1 -1
- package/es/interactions/toggle-state-mixin.js +1 -1
- package/es/interactions/tooltip.js +1 -1
- package/es/parse/coordinate.js +1 -1
- package/es/parse/event.js +1 -1
- package/es/parse/mark.js +1 -1
- package/es/parse/option.js +1 -1
- package/es/parse/scale.js +1 -2
- package/es/parse/transform.js +1 -1
- package/es/parse/util.js +1 -1
- package/es/parse/view.js +1 -1
- package/es/types/element.d.ts +2 -1
- package/es/types/element.js.map +1 -1
- package/es/view/group.js +6 -3
- package/es/view/group.js.map +1 -1
- package/es/view/mark.js +14 -6
- package/es/view/mark.js.map +1 -1
- package/package.json +7 -7
|
@@ -28,9 +28,10 @@ class ElementHighlightByKey extends base_1.BaseInteraction {
|
|
|
28
28
|
} ];
|
|
29
29
|
}
|
|
30
30
|
clearPrevElements() {
|
|
31
|
+
const states = [ this.options.highlightState, this.options.blurState ];
|
|
31
32
|
this._marks.forEach((mark => {
|
|
32
33
|
mark.elements.forEach((el => {
|
|
33
|
-
el.removeState(
|
|
34
|
+
el.removeState(states);
|
|
34
35
|
}));
|
|
35
36
|
}));
|
|
36
37
|
}
|
|
@@ -40,8 +41,13 @@ class ElementHighlightByKey extends base_1.BaseInteraction {
|
|
|
40
41
|
if ((0, vutils_1.isNil)(highlightKey)) return;
|
|
41
42
|
this._marks.forEach((mark => {
|
|
42
43
|
mark.elements.forEach((el => {
|
|
43
|
-
el.key === highlightKey ?
|
|
44
|
-
|
|
44
|
+
el.key === highlightKey ? el.updateStates({
|
|
45
|
+
[this.options.blurState]: !1,
|
|
46
|
+
[this.options.highlightState]: !0
|
|
47
|
+
}) : el.updateStates({
|
|
48
|
+
[this.options.blurState]: !0,
|
|
49
|
+
[this.options.highlightState]: !1
|
|
50
|
+
});
|
|
45
51
|
}));
|
|
46
52
|
}));
|
|
47
53
|
}
|
|
@@ -52,8 +58,13 @@ class ElementHighlightByKey extends base_1.BaseInteraction {
|
|
|
52
58
|
if ((0, vutils_1.isNil)(highlightKey)) return;
|
|
53
59
|
this._marks.forEach((mark => {
|
|
54
60
|
mark.elements.forEach((el => {
|
|
55
|
-
el.key === highlightKey ?
|
|
56
|
-
|
|
61
|
+
el.key === highlightKey ? el.updateStates({
|
|
62
|
+
[this.options.blurState]: !1,
|
|
63
|
+
[this.options.highlightState]: !0
|
|
64
|
+
}) : el.updateStates({
|
|
65
|
+
[this.options.blurState]: !0,
|
|
66
|
+
[this.options.highlightState]: !1
|
|
67
|
+
});
|
|
57
68
|
}));
|
|
58
69
|
}));
|
|
59
70
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../src/interactions/element-highlight-by-key.ts"],"names":[],"mappings":";;;AAAA,6CAAyC;AAEzC,iCAAyC;AACzC,0CAAsD;AAEtD,MAAa,qBAAsB,SAAQ,sBAAwC;IAajF,YAAY,IAAW,EAAE,OAAiC;QACxD,KAAK,CAAC,IAAI,EAAE,OAAO,CAAC,CAAC;QAZvB,SAAI,GAAW,qBAAqB,CAAC,IAAI,CAAC;
|
|
1
|
+
{"version":3,"sources":["../src/interactions/element-highlight-by-key.ts"],"names":[],"mappings":"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","file":"element-highlight-by-key.js","sourcesContent":["import { isNil } from '@visactor/vutils';\nimport type { ElementHighlightOptions, IMark, IView, InteractionEvent } from '../types';\nimport { BaseInteraction } from './base';\nimport { InteractionStateEnum } from '../graph/enums';\n\nexport class ElementHighlightByKey extends BaseInteraction<ElementHighlightOptions> {\n static type: string = 'element-highlight-by-key';\n type: string = ElementHighlightByKey.type;\n\n static defaultOptions: ElementHighlightOptions = {\n highlightState: InteractionStateEnum.highlight,\n blurState: InteractionStateEnum.blur,\n trigger: 'pointerover',\n triggerOff: 'pointerout'\n };\n options: ElementHighlightOptions;\n protected _marks?: IMark[];\n\n constructor(view: IView, options?: ElementHighlightOptions) {\n super(view, options);\n this.options = Object.assign({}, ElementHighlightByKey.defaultOptions, options);\n\n this._marks = view.getMarksBySelector(this.options.selector);\n }\n\n getStartState(): string {\n return this.options.highlightState;\n }\n\n protected getEvents() {\n return [\n {\n type: this.options.trigger,\n handler: this.handleStart\n },\n { type: this.options.triggerOff, handler: this.handleReset }\n ];\n }\n\n clearPrevElements() {\n const states = [this.options.highlightState, this.options.blurState];\n\n this._marks.forEach(mark => {\n mark.elements.forEach(el => {\n el.removeState(states);\n });\n });\n }\n\n start(element: InteractionEvent['element']) {\n if (element && this._marks && this._marks.includes(element.mark)) {\n const highlightKey = element.key;\n\n if (isNil(highlightKey)) {\n return;\n }\n this._marks.forEach(mark => {\n mark.elements.forEach(el => {\n const isHighlight = el.key === highlightKey;\n\n if (isHighlight) {\n el.updateStates({\n [this.options.blurState]: false,\n [this.options.highlightState]: true\n });\n } else {\n el.updateStates({\n [this.options.blurState]: true,\n [this.options.highlightState]: false\n });\n }\n });\n });\n }\n }\n\n reset(element: InteractionEvent['element']) {\n if (element && this._marks && this._marks.includes(element.mark)) {\n const highlightKey = element.key;\n\n if (isNil(highlightKey)) {\n return;\n }\n this._marks.forEach(mark => {\n mark.elements.forEach(el => {\n const isHighlight = el.key === highlightKey;\n\n if (isHighlight) {\n el.updateStates({\n [this.options.blurState]: false,\n [this.options.highlightState]: true\n });\n } else {\n el.updateStates({\n [this.options.blurState]: true,\n [this.options.highlightState]: false\n });\n }\n });\n });\n }\n }\n\n handleStart = (e: InteractionEvent) => {\n this.start(e.element);\n };\n\n handleReset = (e: InteractionEvent) => {\n const hasActiveElement = e.element && this._marks && this._marks.includes(e.element.mark);\n\n if (hasActiveElement) {\n this.clearPrevElements();\n }\n };\n}\n"]}
|
|
@@ -33,15 +33,21 @@ class ElementHighlightByLegend extends base_1.BaseInteraction {
|
|
|
33
33
|
const filterValue = (0, utils_1.generateFilterValue)(this.options);
|
|
34
34
|
this._marks.forEach((mark => {
|
|
35
35
|
mark.elements.forEach((el => {
|
|
36
|
-
filterValue(el) === itemKey ?
|
|
37
|
-
|
|
36
|
+
filterValue(el) === itemKey ? el.updateStates({
|
|
37
|
+
[this.options.blurState]: !1,
|
|
38
|
+
[this.options.highlightState]: !0
|
|
39
|
+
}) : el.updateStates({
|
|
40
|
+
[this.options.blurState]: !0,
|
|
41
|
+
[this.options.highlightState]: !1
|
|
42
|
+
});
|
|
38
43
|
}));
|
|
39
44
|
}));
|
|
40
45
|
}
|
|
41
46
|
reset() {
|
|
47
|
+
const states = [ this.options.blurState, this.options.highlightState ];
|
|
42
48
|
this._marks.forEach((mark => {
|
|
43
49
|
mark.elements.forEach((el => {
|
|
44
|
-
el.removeState(
|
|
50
|
+
el.removeState(states);
|
|
45
51
|
}));
|
|
46
52
|
}));
|
|
47
53
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../src/interactions/element-highlight-by-legend.ts"],"names":[],"mappings":";;;AAAA,0CAAsD;AAStD,iCAAyC;AACzC,qEAA2D;AAC3D,6CAAyC;AACzC,mCAA8C;AAE9C,MAAa,wBAAyB,SAAQ,sBAAgD;IAY5F,YAAY,IAAW,EAAE,OAAyC;QAChE,KAAK,CAAC,IAAI,EAAE,OAAO,CAAC,CAAC;QAXvB,SAAI,GAAW,wBAAwB,CAAC,IAAI,CAAC;
|
|
1
|
+
{"version":3,"sources":["../src/interactions/element-highlight-by-legend.ts"],"names":[],"mappings":"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","file":"element-highlight-by-legend.js","sourcesContent":["import { InteractionStateEnum } from '../graph/enums';\nimport type {\n ElementHighlightByLegendOptions,\n IElement,\n IGlyphElement,\n IMark,\n IView,\n InteractionEvent\n} from '../types';\nimport { BaseInteraction } from './base';\nimport { LegendEvent } from '@visactor/vrender-components';\nimport { isNil } from '@visactor/vutils';\nimport { generateFilterValue } from './utils';\n\nexport class ElementHighlightByLegend extends BaseInteraction<ElementHighlightByLegendOptions> {\n static type: string = 'element-highlight-by-legend';\n type: string = ElementHighlightByLegend.type;\n\n static defaultOptions: ElementHighlightByLegendOptions = {\n highlightState: InteractionStateEnum.highlight,\n blurState: InteractionStateEnum.blur,\n filterType: 'groupKey'\n };\n options: ElementHighlightByLegendOptions;\n protected _marks?: IMark[];\n\n constructor(view: IView, options?: ElementHighlightByLegendOptions) {\n super(view, options);\n this.options = Object.assign({}, ElementHighlightByLegend.defaultOptions, options);\n\n this._marks = view.getMarksBySelector(this.options.selector);\n }\n\n getStartState(): string {\n return this.options.highlightState;\n }\n\n protected getEvents() {\n return [\n {\n type: LegendEvent.legendItemHover,\n handler: this.handleStart\n },\n { type: LegendEvent.legendItemUnHover, handler: this.handleReset }\n ];\n }\n\n start(itemKey: IElement | IGlyphElement | string) {\n if (isNil(itemKey)) {\n return;\n }\n const filterValue = generateFilterValue(this.options);\n\n this._marks.forEach(mark => {\n mark.elements.forEach(el => {\n const isHighlight = filterValue(el) === itemKey;\n\n if (isHighlight) {\n el.updateStates({\n [this.options.blurState]: false,\n [this.options.highlightState]: true\n });\n } else {\n el.updateStates({\n [this.options.blurState]: true,\n [this.options.highlightState]: false\n });\n }\n });\n });\n }\n\n reset() {\n const states = [this.options.blurState, this.options.highlightState];\n this._marks.forEach(mark => {\n mark.elements.forEach(el => {\n el.removeState(states);\n });\n });\n }\n\n handleStart = (e: InteractionEvent, element: IElement | IGlyphElement) => {\n this.start(e.detail?.data?.id);\n };\n\n handleReset = (e: InteractionEvent) => {\n this.reset();\n };\n}\n"]}
|
|
@@ -43,15 +43,21 @@ class ElementHighlightByName extends base_1.BaseInteraction {
|
|
|
43
43
|
const filterValue = (0, utils_1.generateFilterValue)(this.options);
|
|
44
44
|
this._marks.forEach((mark => {
|
|
45
45
|
mark.elements.forEach((el => {
|
|
46
|
-
filterValue(el) === itemKey ?
|
|
47
|
-
|
|
46
|
+
filterValue(el) === itemKey ? el.updateStates({
|
|
47
|
+
[this.options.blurState]: !1,
|
|
48
|
+
[this.options.highlightState]: !0
|
|
49
|
+
}) : el.updateStates({
|
|
50
|
+
[this.options.blurState]: !0,
|
|
51
|
+
[this.options.highlightState]: !1
|
|
52
|
+
});
|
|
48
53
|
}));
|
|
49
54
|
}));
|
|
50
55
|
}
|
|
51
56
|
reset() {
|
|
57
|
+
const states = [ this.options.blurState, this.options.highlightState ];
|
|
52
58
|
this._marks.forEach((mark => {
|
|
53
59
|
mark.elements.forEach((el => {
|
|
54
|
-
el.removeState(
|
|
60
|
+
el.removeState(states);
|
|
55
61
|
}));
|
|
56
62
|
}));
|
|
57
63
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../src/interactions/element-highlight-by-name.ts"],"names":[],"mappings":";;;AAAA,0CAAsD;AAEtD,iCAAyC;AACzC,6CAAgD;AAChD,mCAA8C;AAE9C,MAAa,sBAAuB,SAAQ,sBAA8C;IAcxF,YAAY,IAAW,EAAE,OAAuC;QAC9D,KAAK,CAAC,IAAI,EAAE,OAAO,CAAC,CAAC;QAbvB,SAAI,GAAW,sBAAsB,CAAC,IAAI,CAAC;
|
|
1
|
+
{"version":3,"sources":["../src/interactions/element-highlight-by-name.ts"],"names":[],"mappings":"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","file":"element-highlight-by-name.js","sourcesContent":["import { InteractionStateEnum } from '../graph/enums';\nimport type { ElementHighlightByNameOptions, IElement, IGlyphElement, IMark, IView, InteractionEvent } from '../types';\nimport { BaseInteraction } from './base';\nimport { array, isNil } from '@visactor/vutils';\nimport { generateFilterValue } from './utils';\n\nexport class ElementHighlightByName extends BaseInteraction<ElementHighlightByNameOptions> {\n static type: string = 'element-highlight-by-name';\n type: string = ElementHighlightByName.type;\n\n static defaultOptions: ElementHighlightByNameOptions = {\n trigger: 'pointerover',\n triggerOff: 'pointerout',\n highlightState: InteractionStateEnum.highlight,\n blurState: InteractionStateEnum.blur,\n filterType: 'groupKey'\n };\n options: ElementHighlightByNameOptions;\n protected _marks?: IMark[];\n\n constructor(view: IView, options?: ElementHighlightByNameOptions) {\n super(view, options);\n this.options = Object.assign({}, ElementHighlightByName.defaultOptions, options);\n\n this._marks = view.getMarksBySelector(this.options.selector);\n }\n\n getStartState(): string {\n return this.options.highlightState;\n }\n\n protected getEvents() {\n return [\n {\n type: this.options.trigger,\n handler: this.handleStart\n },\n { type: this.options.triggerOff, handler: this.handleReset }\n ];\n }\n\n protected _filterByName(e: InteractionEvent) {\n const names = array(this.options.graphicName);\n return e?.target?.name && names.includes(e.target.name);\n }\n\n protected _parseTargetKey(e: InteractionEvent, element: IElement | IGlyphElement) {\n return this.options.parseData\n ? this.options.parseData(e)\n : e.target.type === 'text'\n ? (e.target.attribute as any).text\n : null;\n }\n\n start(itemKey: IElement | IGlyphElement | string) {\n if (isNil(itemKey)) {\n return;\n }\n\n const filterValue = generateFilterValue(this.options);\n\n this._marks.forEach(mark => {\n mark.elements.forEach(el => {\n const isHighlight = filterValue(el) === itemKey;\n if (isHighlight) {\n el.updateStates({\n [this.options.blurState]: false,\n [this.options.highlightState]: true\n });\n } else {\n el.updateStates({\n [this.options.blurState]: true,\n [this.options.highlightState]: false\n });\n }\n });\n });\n }\n\n reset() {\n const states = [this.options.blurState, this.options.highlightState];\n\n this._marks.forEach(mark => {\n mark.elements.forEach(el => {\n el.removeState(states);\n });\n });\n }\n\n handleStart = (e: InteractionEvent, element: IElement | IGlyphElement) => {\n const shoudStart = this.options.shouldStart ? this.options.shouldStart(e) : this._filterByName(e);\n if (shoudStart) {\n const itemKey = this._parseTargetKey(e, element);\n this.start(itemKey);\n }\n };\n\n handleReset = (e: InteractionEvent) => {\n const shoudReset = this.options.shouldReset ? this.options.shouldReset(e) : this._filterByName(e);\n\n if (shoudReset) {\n this.reset();\n }\n };\n}\n"]}
|
package/cjs/types/element.d.ts
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import type { IArc, IArc3d, IArea, ICircle, IGlyph, IGraphic, IGroup, IImage, ILine, IPath, IPolygon, IPyramid3d, IRect, IRect3d, IRichText, ISymbol, IText } from '@visactor/vrender-core';
|
|
2
2
|
import type { DiffState } from '../graph/enums';
|
|
3
3
|
import type { IMark, IGlyphMark } from './grammar';
|
|
4
|
-
import type { BaseEncodeSpec, MarkFunctionType, MarkKeySpec, MarkType } from './mark';
|
|
4
|
+
import type { BaseEncodeSpec, BaseSingleEncodeSpec, MarkFunctionType, MarkKeySpec, MarkType } from './mark';
|
|
5
5
|
export interface ElementGraphicMap {
|
|
6
6
|
circle: ICircle;
|
|
7
7
|
arc: IArc;
|
|
@@ -93,6 +93,7 @@ export interface IElement {
|
|
|
93
93
|
addState: (state: string | string[], attrs?: any) => boolean;
|
|
94
94
|
removeState: (state: string | string[]) => boolean;
|
|
95
95
|
useStates: (states: string[], noAnimation?: boolean) => boolean;
|
|
96
|
+
updateStates: (states: Record<string, boolean | BaseSingleEncodeSpec>) => any;
|
|
96
97
|
}
|
|
97
98
|
export interface IGlyphElement<P = any> extends IElement {
|
|
98
99
|
mark: IGlyphMark;
|
package/cjs/types/element.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../src/types/element.ts"],"names":[],"mappings":"","file":"element.js","sourcesContent":["import type {\n IArc,\n IArc3d,\n IArea,\n ICircle,\n IGlyph,\n IGraphic,\n IGroup,\n IImage,\n ILine,\n IPath,\n IPolygon,\n IPyramid3d,\n IRect,\n IRect3d,\n IRichText,\n ISymbol,\n IText\n} from '@visactor/vrender-core';\nimport type { DiffState } from '../graph/enums';\nimport type { IMark, IGlyphMark } from './grammar';\nimport type {
|
|
1
|
+
{"version":3,"sources":["../src/types/element.ts"],"names":[],"mappings":"","file":"element.js","sourcesContent":["import type {\n IArc,\n IArc3d,\n IArea,\n ICircle,\n IGlyph,\n IGraphic,\n IGroup,\n IImage,\n ILine,\n IPath,\n IPolygon,\n IPyramid3d,\n IRect,\n IRect3d,\n IRichText,\n ISymbol,\n IText\n} from '@visactor/vrender-core';\nimport type { DiffState } from '../graph/enums';\nimport type { IMark, IGlyphMark } from './grammar';\nimport type {\n BaseEncodeSpec,\n BaseSingleEncodeSpec,\n IMarkConfig,\n MarkFunctionType,\n MarkKeySpec,\n MarkType\n} from './mark';\n\nexport interface ElementGraphicMap {\n circle: ICircle;\n arc: IArc;\n area: IArea;\n image: IImage;\n line: ILine;\n path: IPath;\n rule: ILine;\n shape: IPath;\n symbol: ISymbol;\n text: IText;\n richtext: IRichText;\n polygon: IPolygon;\n cell: ISymbol;\n interval: IGraphic;\n rect: IRect;\n rect3d: IRect3d;\n arc3d: IArc3d;\n pyramid3d: IPyramid3d;\n group: IGroup;\n glyph: IGlyph;\n linkPath: IGlyph;\n treePath: IGlyph;\n wave: IGlyph;\n ripplePoint: IGlyph;\n barBoxplot: IGlyph;\n boxPlot: IGlyph;\n component: IGroup;\n axis: IGroup;\n legend: IGroup;\n corsshair: IGroup;\n slider: IGroup;\n datazoom: IGroup;\n label: IGroup;\n player: IGroup;\n}\n\nexport type GetGraphicByType<T> = T extends keyof ElementGraphicMap ? ElementGraphicMap[T] : IGraphic;\n\n/**\n * 保存graphicItem状态\n */\nexport interface MarkElementItem {\n /** 唯一key */\n key: string;\n /** 原始数据 */\n datum: any;\n /** VGrammar view */\n view: any;\n /** 当前渲染帧下graphicItem对应的最新属性 */\n nextAttrs?: any;\n /** 是否初始化过,用于解决collection mark对应的item,可能跳过enter状态的问题 */\n // hasEntered: boolean;\n}\nexport interface IElement {\n mark: IMark;\n isReserved: boolean;\n diffState: DiffState;\n key: string;\n groupKey?: string;\n data?: any[];\n /**\n * 不推荐使用,但是collection图元暂时可能回涉及到相关修改\n */\n items: MarkElementItem[];\n\n initGraphicItem: (attrs?: any) => void;\n updateGraphicItem: () => void;\n\n getDatum: () => any;\n getBounds: () => any;\n getGraphicItem: () => IGraphic;\n removeGraphicItem: () => void;\n resetGraphicItem: () => void;\n\n /**\n * 获取 graphic 视觉通道属性\n * @param channel 视觉通道\n * @param prev 是否从之前的 graphic 属性上获取,默认为 false\n * @returns 视觉通道值\n */\n getGraphicAttribute: (channel: string, prev?: boolean) => any;\n /**\n * 设置 graphic 视觉通道属性\n * @param channel 视觉通道\n * @param value 视觉通道属性\n * @param final 是否更新 graphic 最终变更的视觉通道结果,默认为 false\n */\n setGraphicAttribute: (channel: string, value: any, final?: boolean) => void;\n /**\n * 设置一系列 graphic 视觉通道属性\n * @param attributes 视觉通道键值对\n * @param final 是否更新 graphic 最终变更的视觉通道结果,默认为 false\n */\n setGraphicAttributes: (attributes: { [channel: string]: any }, final?: boolean) => void;\n\n /**\n * 【慎重使用】获取 VGrammar 自身的视觉通道属性\n * 只有在 'afterEncodeItems' 时机的mark transform中才能调用\n */\n getItemAttribute: (channel?: string) => any;\n /**\n * 【慎重使用】设置 VGrammar 自身的视觉通道\n * 只有在 'afterEncodeItems' 时机的mark transform中才能调用\n * @param attributes\n * @returns\n */\n setItemAttributes: (attributes: { [channel: string]: any } | any[]) => void;\n\n // element 执行流程相关接口\n updateData: (groupKey: string, data: any[], keyGenerator: MarkKeySpec, view: any) => void;\n state: (markState: MarkFunctionType<string | string[]>, parameters?: any) => void;\n encodeItems: (items: MarkElementItem[], encoders: BaseEncodeSpec, isReentered?: boolean, parameters?: any) => void;\n encodeGraphic: (attributes?: any) => void;\n transformElementItems: (items: MarkElementItem[], markType: MarkType, computePoints?: boolean) => Record<string, any>;\n remove: () => void;\n release: () => void;\n\n // 动画相关接口\n\n getFinalGraphicAttributes: () => { [key: string]: any };\n getPrevGraphicAttributes: () => { [key: string]: any };\n getNextGraphicAttributes: () => { [key: string]: any };\n clearChangedGraphicAttributes: () => void;\n clearGraphicAttributes: () => void;\n\n // state相关接口\n getStates: () => string[];\n hasState: (state: string) => boolean;\n clearStates: (noAnimation?: boolean) => void;\n addState: (state: string | string[], attrs?: any) => boolean;\n removeState: (state: string | string[]) => boolean;\n useStates: (states: string[], noAnimation?: boolean) => boolean;\n updateStates: (states: Record<string, boolean | BaseSingleEncodeSpec>) => any;\n}\n\nexport interface IGlyphElement<P = any> extends IElement {\n mark: IGlyphMark;\n\n getGlyphGraphicItems: () => { [markName: string]: any };\n\n getGraphicAttribute: (channel: string, prev?: boolean, markName?: any) => any;\n setGraphicAttribute: (channel: string, value: any, final?: boolean, markName?: any) => void;\n setGraphicAttributes: (attributes: { [channel: string]: any }, final?: boolean, markName?: any) => void;\n\n getFinalGraphicAttributes: (markName?: string) => { [key: string]: any };\n getPrevGraphicAttributes: (markName?: string) => { [key: string]: any };\n getNextGraphicAttributes: (markName?: string) => { [key: string]: any };\n\n encodeCustom: (nextAttrs?: any) => { [markName: string]: any };\n}\n"]}
|
package/cjs/view/group.js
CHANGED
|
@@ -40,9 +40,12 @@ class GroupMark extends mark_1.Mark {
|
|
|
40
40
|
}
|
|
41
41
|
getChannelsFromConfig(element) {
|
|
42
42
|
const spec = this.spec, initAttrs = {};
|
|
43
|
-
|
|
44
|
-
(0, vutils_1.isNil)(spec.clipPath)
|
|
45
|
-
|
|
43
|
+
if ((0, vutils_1.isNil)(spec.clip) || (initAttrs.clip = spec.clip), (0, vutils_1.isNil)(spec.zIndex) || (initAttrs.zIndex = spec.zIndex),
|
|
44
|
+
!(0, vutils_1.isNil)(spec.clipPath)) {
|
|
45
|
+
const paths = (0, vutils_1.isFunction)(spec.clipPath) ? spec.clipPath([ element ]) : spec.clipPath;
|
|
46
|
+
paths && paths.length ? initAttrs.path = paths : (initAttrs.path = null, initAttrs.clip = !1);
|
|
47
|
+
}
|
|
48
|
+
return (0, vutils_1.isNil)(spec.interactive) || (initAttrs.pickable = spec.interactive),
|
|
46
49
|
initAttrs;
|
|
47
50
|
}
|
|
48
51
|
evaluateGroupEncode(elements, groupEncode, parameters) {
|
package/cjs/view/group.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../src/view/group.ts"],"names":[],"mappings":"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
|
|
1
|
+
{"version":3,"sources":["../src/view/group.ts"],"names":[],"mappings":"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","file":"group.js","sourcesContent":["import type { INode } from '@visactor/vrender-core';\nimport { transformsByType } from '../graph/attributes';\nimport { DefaultKey, DefaultMarkData } from '../graph/constants';\nimport { BuiltInEncodeNames, GrammarMarkType, HOOK_EVENT } from '../graph/enums';\nimport { createElement } from '../graph/util/element';\nimport { createGraphicItem } from '../graph/util/graphic';\nimport type { IElement, IGlyphMark, IGroupMark, IMark, IView } from '../types';\nimport { Mark } from './mark';\nimport { isFunction, isNil } from '@visactor/vutils';\nimport { invokeEncoderToItems } from '../graph/mark/encode';\n\nexport class GroupMark extends Mark implements IGroupMark {\n children: (IMark | IGroupMark | IGlyphMark)[];\n\n layoutChildren?: (IMark | IGroupMark | IGlyphMark)[];\n\n constructor(view: IView, group?: IGroupMark) {\n super(view, GrammarMarkType.group, group);\n this.children = [];\n }\n\n parseRenderContext() {\n return { large: false };\n }\n\n appendChild(mark: IMark) {\n this.children.push(mark);\n return this;\n }\n removeChild(mark: IMark) {\n this.children = this.children.filter(child => child !== mark);\n return this;\n }\n\n includesChild(mark: IMark, descendant: boolean = true) {\n if (this.children.includes(mark)) {\n return true;\n }\n if (!descendant) {\n return false;\n }\n return this.children.some(child => {\n if (child.markType === GrammarMarkType.group) {\n return (child as IGroupMark).includesChild(mark, true);\n }\n return false;\n });\n }\n\n updateLayoutChildren() {\n if (!this.children.length) {\n return this;\n }\n if (!this.layoutChildren) {\n this.layoutChildren = [];\n }\n\n this.layoutChildren = this.children.filter(child => child.needLayout());\n\n return this;\n }\n\n getAttributeTransforms() {\n return transformsByType.rect;\n }\n\n protected evaluateJoin(data: any[]) {\n if (!this.elements.length) {\n const el = createElement(this);\n\n el.updateData(DefaultKey, DefaultMarkData, () => '', this.view);\n this.elements = [el];\n this.elementMap.set(DefaultKey, el);\n }\n }\n\n protected getChannelsFromConfig(element?: IElement) {\n const spec = this.spec;\n\n const initAttrs: any = {};\n\n if (!isNil(spec.clip)) {\n initAttrs.clip = spec.clip;\n }\n\n if (!isNil(spec.zIndex)) {\n initAttrs.zIndex = spec.zIndex;\n }\n\n if (!isNil(spec.clipPath)) {\n const paths = isFunction(spec.clipPath) ? spec.clipPath([element]) : spec.clipPath;\n\n if (paths && paths.length) {\n initAttrs.path = paths;\n } else {\n initAttrs.path = null;\n initAttrs.clip = false;\n }\n }\n\n if (!isNil(spec.interactive)) {\n initAttrs.pickable = spec.interactive;\n }\n\n return initAttrs;\n }\n\n protected evaluateGroupEncode(elements: IElement[], groupEncode: any, parameters: any) {\n const el = this.elements[0];\n const nextAttrs = {};\n const items = [Object.assign({}, el.items?.[0], { nextAttrs })];\n invokeEncoderToItems(el, items, groupEncode, parameters);\n\n this._groupEncodeResult = nextAttrs;\n return nextAttrs;\n }\n\n protected evaluateEncode(elements: IElement[], encoders: any, parameters: any, noGroupEncode?: boolean) {\n const initAttrs = this.getChannelsFromConfig();\n\n if (encoders) {\n this.emit(HOOK_EVENT.BEFORE_ELEMENT_ENCODE, { encoders, parameters }, this);\n\n const groupEncodeAttrs = noGroupEncode\n ? null\n : this.evaluateGroupEncode(elements, encoders[BuiltInEncodeNames.group], parameters);\n\n elements.forEach(element => {\n element.items.forEach(item => {\n item.nextAttrs = Object.assign(item.nextAttrs, initAttrs, groupEncodeAttrs);\n });\n\n element.encodeItems(element.items, encoders, this._isReentered, parameters);\n });\n\n this._isReentered = false;\n\n this.evaluateTransform(this._getTransformsAfterEncodeItems(), elements, parameters);\n\n elements.forEach(element => {\n element.encodeGraphic();\n });\n this.emit(HOOK_EVENT.AFTER_ELEMENT_ENCODE, { encoders, parameters }, this);\n } else {\n elements.forEach(element => {\n element.initGraphicItem(initAttrs);\n });\n }\n }\n\n addGraphicItem(attrs: any, groupKey?: string, newGraphicItem?: any) {\n const graphicItem: any = newGraphicItem ?? createGraphicItem(this, this.markType, attrs);\n\n if (!graphicItem) {\n return;\n }\n\n this.emit(HOOK_EVENT.BEFORE_ADD_VRENDER_MARK, { graphicItem });\n\n graphicItem.name = `${this.id() || this.markType}`;\n\n this.graphicParent.insertIntoKeepIdx(graphicItem as unknown as INode, this.graphicIndex);\n this.emit(HOOK_EVENT.AFTER_ADD_VRENDER_MARK, { graphicItem });\n\n return graphicItem;\n }\n}\n"]}
|
package/cjs/view/mark.js
CHANGED
|
@@ -250,15 +250,21 @@ class Mark extends grammar_base_1.GrammarBase {
|
|
|
250
250
|
this.graphicIndex = markIndex;
|
|
251
251
|
}
|
|
252
252
|
update(spec) {
|
|
253
|
-
this._context = this.spec.context, this.isUpdated = !0, this.renderContext.progressive || (spec.animation && this.animate.updateConfig(spec.animation),
|
|
254
|
-
this.animate.updateState(spec.animationState)), this.markType !== enums_1.GrammarMarkType.group
|
|
255
|
-
|
|
256
|
-
|
|
257
|
-
|
|
258
|
-
|
|
259
|
-
|
|
260
|
-
|
|
261
|
-
|
|
253
|
+
if (this._context = this.spec.context, this.isUpdated = !0, this.renderContext.progressive || (spec.animation && this.animate.updateConfig(spec.animation),
|
|
254
|
+
this.animate.updateState(spec.animationState)), this.markType !== enums_1.GrammarMarkType.group) {
|
|
255
|
+
if ((0, vutils_1.isNil)(spec.zIndex) || this.graphicItem.setAttribute("zIndex", spec.zIndex),
|
|
256
|
+
(0, vutils_1.isNil)(spec.clip) || this.graphicItem.setAttribute("clip", spec.clip),
|
|
257
|
+
!(0, vutils_1.isNil)(spec.clipPath)) {
|
|
258
|
+
const paths = (0, vutils_1.isArray)(spec.clipPath) ? spec.clipPath : spec.clipPath(this.elements);
|
|
259
|
+
paths && paths.length ? this.graphicItem.setAttribute("path", paths) : this.graphicItem.setAttributes({
|
|
260
|
+
path: paths,
|
|
261
|
+
clip: !1
|
|
262
|
+
});
|
|
263
|
+
}
|
|
264
|
+
this.elementMap.forEach((element => {
|
|
265
|
+
element.updateGraphicItem();
|
|
266
|
+
}));
|
|
267
|
+
} else this.elementMap.forEach((element => {
|
|
262
268
|
element.updateGraphicItem();
|
|
263
269
|
}));
|
|
264
270
|
}
|