@visactor/vgrammar-core 0.12.5 → 0.12.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/attribute.js +15 -11
- package/cjs/graph/animation/attribute.js.map +1 -1
- package/cjs/graph/canvas-renderer.js +2 -1
- package/cjs/graph/canvas-renderer.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/base.d.ts +1 -0
- package/cjs/interactions/base.js +3 -0
- package/cjs/interactions/base.js.map +1 -1
- package/cjs/interactions/brush-active.d.ts +1 -0
- package/cjs/interactions/brush-active.js +3 -0
- package/cjs/interactions/brush-active.js.map +1 -1
- package/cjs/interactions/brush-highlight.d.ts +1 -0
- package/cjs/interactions/brush-highlight.js +3 -0
- package/cjs/interactions/brush-highlight.js.map +1 -1
- package/cjs/interactions/element-active-by-legend.d.ts +1 -0
- package/cjs/interactions/element-active-by-legend.js +3 -0
- package/cjs/interactions/element-active-by-legend.js.map +1 -1
- package/cjs/interactions/element-active.d.ts +1 -0
- package/cjs/interactions/element-active.js +3 -0
- package/cjs/interactions/element-active.js.map +1 -1
- package/cjs/interactions/element-highlight-by-group.d.ts +1 -0
- package/cjs/interactions/element-highlight-by-group.js +3 -0
- package/cjs/interactions/element-highlight-by-group.js.map +1 -1
- package/cjs/interactions/element-highlight-by-key.d.ts +1 -0
- package/cjs/interactions/element-highlight-by-key.js +3 -0
- package/cjs/interactions/element-highlight-by-key.js.map +1 -1
- package/cjs/interactions/element-highlight-by-legend.d.ts +1 -0
- package/cjs/interactions/element-highlight-by-legend.js +3 -0
- package/cjs/interactions/element-highlight-by-legend.js.map +1 -1
- package/cjs/interactions/element-highlight-by-name.d.ts +1 -0
- package/cjs/interactions/element-highlight-by-name.js +3 -0
- package/cjs/interactions/element-highlight-by-name.js.map +1 -1
- package/cjs/interactions/element-highlight.d.ts +1 -0
- package/cjs/interactions/element-highlight.js +3 -0
- package/cjs/interactions/element-highlight.js.map +1 -1
- package/cjs/interactions/element-select.d.ts +1 -0
- package/cjs/interactions/element-select.js +3 -0
- package/cjs/interactions/element-select.js.map +1 -1
- package/cjs/types/interaction.d.ts +1 -0
- package/cjs/types/interaction.js.map +1 -1
- package/cjs/view/component.js +2 -2
- package/cjs/view/component.js.map +1 -1
- package/es/graph/animation/attribute.js +15 -11
- package/es/graph/animation/attribute.js.map +1 -1
- package/es/graph/canvas-renderer.js +2 -1
- package/es/graph/canvas-renderer.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/base.d.ts +1 -0
- package/es/interactions/base.js +3 -0
- package/es/interactions/base.js.map +1 -1
- package/es/interactions/brush-active.d.ts +1 -0
- package/es/interactions/brush-active.js +3 -0
- package/es/interactions/brush-active.js.map +1 -1
- package/es/interactions/brush-highlight.d.ts +1 -0
- package/es/interactions/brush-highlight.js +3 -0
- package/es/interactions/brush-highlight.js.map +1 -1
- package/es/interactions/element-active-by-legend.d.ts +1 -0
- package/es/interactions/element-active-by-legend.js +3 -0
- package/es/interactions/element-active-by-legend.js.map +1 -1
- package/es/interactions/element-active.d.ts +1 -0
- package/es/interactions/element-active.js +3 -0
- package/es/interactions/element-active.js.map +1 -1
- package/es/interactions/element-highlight-by-group.d.ts +1 -0
- package/es/interactions/element-highlight-by-group.js +3 -0
- package/es/interactions/element-highlight-by-group.js.map +1 -1
- package/es/interactions/element-highlight-by-key.d.ts +1 -0
- package/es/interactions/element-highlight-by-key.js +3 -0
- package/es/interactions/element-highlight-by-key.js.map +1 -1
- package/es/interactions/element-highlight-by-legend.d.ts +1 -0
- package/es/interactions/element-highlight-by-legend.js +3 -0
- package/es/interactions/element-highlight-by-legend.js.map +1 -1
- package/es/interactions/element-highlight-by-name.d.ts +1 -0
- package/es/interactions/element-highlight-by-name.js +3 -0
- package/es/interactions/element-highlight-by-name.js.map +1 -1
- package/es/interactions/element-highlight.d.ts +1 -0
- package/es/interactions/element-highlight.js +3 -0
- package/es/interactions/element-highlight.js.map +1 -1
- package/es/interactions/element-select.d.ts +1 -0
- package/es/interactions/element-select.js +3 -0
- package/es/interactions/element-select.js.map +1 -1
- package/es/types/interaction.d.ts +1 -0
- package/es/types/interaction.js.map +1 -1
- package/es/view/component.js +2 -2
- package/es/view/component.js.map +1 -1
- package/package.json +9 -9
|
@@ -18,6 +18,9 @@ class ElementHighlightByName extends base_1.BaseInteraction {
|
|
|
18
18
|
}, this.options = Object.assign({}, ElementHighlightByName.defaultOptions, options),
|
|
19
19
|
this._marks = view.getMarksBySelector(this.options.selector);
|
|
20
20
|
}
|
|
21
|
+
getStartState() {
|
|
22
|
+
return this.options.highlightState;
|
|
23
|
+
}
|
|
21
24
|
getEvents() {
|
|
22
25
|
return [ {
|
|
23
26
|
type: this.options.trigger,
|
|
@@ -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.removeState(this.options.blurState);\n el.addState(this.options.highlightState);\n } else {\n el.removeState(this.options.highlightState);\n el.addState(this.options.blurState);\n }\n });\n });\n }\n\n reset() {\n this._marks.forEach(mark => {\n mark.elements.forEach(el => {\n el.removeState(this.options.blurState);\n el.removeState(this.options.highlightState);\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"]}
|
|
@@ -13,6 +13,7 @@ export declare class ElementHighlight extends BaseInteraction<ElementHighlightOp
|
|
|
13
13
|
protected _statedElements?: (IElement | IGlyphElement)[];
|
|
14
14
|
protected _resetType?: 'view' | 'self';
|
|
15
15
|
constructor(view: IView, options?: ElementHighlightOptions);
|
|
16
|
+
getStartState(): string;
|
|
16
17
|
protected getEvents(): {
|
|
17
18
|
type: EventType;
|
|
18
19
|
handler: (e: InteractionEvent) => void;
|
|
@@ -15,6 +15,9 @@ class ElementHighlight extends base_1.BaseInteraction {
|
|
|
15
15
|
}, this.options = Object.assign({}, ElementHighlight.defaultOptions, options), this._marks = view.getMarksBySelector(this.options.selector),
|
|
16
16
|
this._stateMarks = (0, utils_1.groupMarksByState)(this._marks, [ this.options.highlightState, this.options.blurState ]);
|
|
17
17
|
}
|
|
18
|
+
getStartState() {
|
|
19
|
+
return this.options.highlightState;
|
|
20
|
+
}
|
|
18
21
|
getEvents() {
|
|
19
22
|
const triggerOff = this.options.triggerOff, events = [ {
|
|
20
23
|
type: this.options.trigger,
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../src/interactions/element-highlight.ts"],"names":[],"mappings":";;;AAAA,0CAAsD;AAWtD,iCAAyC;AACzC,mCAA4C;AAC5C,6CAA4C;AAI5C,MAAa,gBAAiB,SAAQ,sBAAwC;IAiB5E,YAAY,IAAW,EAAE,OAAiC;QACxD,KAAK,CAAC,IAAI,EAAE,OAAO,CAAC,CAAC;QAhBvB,SAAI,GAAW,gBAAgB,CAAC,IAAI,CAAC;
|
|
1
|
+
{"version":3,"sources":["../src/interactions/element-highlight.ts"],"names":[],"mappings":"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","file":"element-highlight.js","sourcesContent":["import { InteractionStateEnum } from '../graph/enums';\nimport type {\n ElementHighlightOptions,\n EventType,\n IElement,\n IGlyphElement,\n IMark,\n IToggleStateMixin,\n IView,\n InteractionEvent\n} from '../types';\nimport { BaseInteraction } from './base';\nimport { groupMarksByState } from './utils';\nimport { isString } from '@visactor/vutils';\n\nexport interface ElementHighlight extends IToggleStateMixin, BaseInteraction<ElementHighlightOptions> {}\n\nexport class ElementHighlight extends BaseInteraction<ElementHighlightOptions> {\n static type: string = 'element-highlight';\n type: string = ElementHighlight.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 protected _stateMarks: Record<string, IMark[]>;\n protected _lastElement?: IElement;\n protected _statedElements?: (IElement | IGlyphElement)[];\n protected _resetType?: 'view' | 'self';\n\n constructor(view: IView, options?: ElementHighlightOptions) {\n super(view, options);\n this.options = Object.assign({}, ElementHighlight.defaultOptions, options);\n\n this._marks = view.getMarksBySelector(this.options.selector);\n this._stateMarks = groupMarksByState(this._marks, [this.options.highlightState, this.options.blurState]);\n }\n\n getStartState(): string {\n return this.options.highlightState;\n }\n\n protected getEvents() {\n const triggerOff = this.options.triggerOff;\n const trigger = this.options.trigger;\n const events = [\n {\n type: trigger,\n handler: this.handleStart\n }\n ];\n\n let eventName = triggerOff;\n if (isString(triggerOff) && (triggerOff as string).includes('view:')) {\n eventName = (triggerOff as string).replace('view:', '') as EventType;\n this._resetType = 'view';\n } else {\n this._resetType = 'self';\n }\n\n events.push({ type: eventName as EventType, handler: this.handleReset });\n\n return events;\n }\n\n clearPrevElements() {\n const { highlightState, blurState } = this.options;\n\n if (this._lastElement) {\n this.clearAllStates(highlightState, blurState);\n\n this.dispatchEvent('reset', { elements: [this._lastElement], options: this.options });\n\n this._lastElement = null;\n\n this._statedElements = null;\n }\n }\n\n start(element: InteractionEvent['element']) {\n if (element && this._marks && this._marks.includes(element.mark)) {\n const { highlightState, blurState } = this.options;\n\n if (this._lastElement === element) {\n return;\n }\n\n this._statedElements = this.updateStates([element], this._statedElements, highlightState, blurState);\n\n this._lastElement = element;\n\n this.dispatchEvent('start', { elements: [element], options: this.options });\n } else if (this._lastElement && this._resetType === 'view') {\n this.clearPrevElements();\n }\n }\n\n reset(element: InteractionEvent['element']) {\n if (!this._statedElements || !this._statedElements.length) {\n return;\n }\n\n const hasActiveElement = element && this._marks && this._marks.includes(element.mark);\n\n if (this._resetType === 'view' && !hasActiveElement) {\n this.clearPrevElements();\n } else if (this._resetType === 'self' && hasActiveElement) {\n this.clearPrevElements();\n }\n }\n\n handleStart = (e: InteractionEvent) => {\n this.start(e.element);\n };\n\n handleReset = (e: InteractionEvent) => {\n this.reset(e.element);\n };\n}\n"]}
|
|
@@ -12,6 +12,7 @@ export declare class ElementSelect extends BaseInteraction<ElementSelectOptions>
|
|
|
12
12
|
private _timer?;
|
|
13
13
|
protected _statedElements?: (IElement | IGlyphElement)[];
|
|
14
14
|
constructor(view: IView, options?: ElementSelectOptions);
|
|
15
|
+
getStartState(): string;
|
|
15
16
|
protected getEvents(): {
|
|
16
17
|
type: EventType | EventType[];
|
|
17
18
|
handler: (e: InteractionEvent) => void;
|
|
@@ -22,6 +22,9 @@ class ElementSelect extends base_1.BaseInteraction {
|
|
|
22
22
|
}, this.options = Object.assign({}, ElementSelect.defaultOptions, options), this._marks = view.getMarksBySelector(this.options.selector),
|
|
23
23
|
this._stateMarks = (0, utils_1.groupMarksByState)(this._marks, [ this.options.state, this.options.reverseState ]);
|
|
24
24
|
}
|
|
25
|
+
getStartState() {
|
|
26
|
+
return this.options.state;
|
|
27
|
+
}
|
|
25
28
|
getEvents() {
|
|
26
29
|
const triggerOff = this.options.triggerOff, trigger = this.options.trigger, events = [ {
|
|
27
30
|
type: trigger,
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../src/interactions/element-select.ts"],"names":[],"mappings":";;;AAAA,6CAAsD;AACtD,0CAAsD;AAWtD,mCAA4C;AAC5C,iCAAyC;AAIzC,MAAa,aAAc,SAAQ,sBAAqC;IActE,YAAY,IAAW,EAAE,OAA8B;QACrD,KAAK,CAAC,IAAI,EAAE,OAAO,CAAC,CAAC;QAbvB,SAAI,GAAW,aAAa,CAAC,IAAI,CAAC;
|
|
1
|
+
{"version":3,"sources":["../src/interactions/element-select.ts"],"names":[],"mappings":"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","file":"element-select.js","sourcesContent":["import { isNumber, isString } from '@visactor/vutils';\nimport { InteractionStateEnum } from '../graph/enums';\nimport type {\n ElementSelectOptions,\n EventType,\n IElement,\n IGlyphElement,\n IMark,\n IToggleStateMixin,\n IView,\n InteractionEvent\n} from '../types';\nimport { groupMarksByState } from './utils';\nimport { BaseInteraction } from './base';\n\nexport interface ElementSelect extends IToggleStateMixin, BaseInteraction<ElementSelectOptions> {}\n\nexport class ElementSelect extends BaseInteraction<ElementSelectOptions> {\n static type: string = 'element-select';\n type: string = ElementSelect.type;\n\n static defaultOptions: ElementSelectOptions = {\n state: InteractionStateEnum.selected,\n trigger: 'click'\n };\n protected _resetType?: 'view' | 'self' | 'timeout';\n protected _marks?: IMark[];\n protected _stateMarks: Record<string, IMark[]>;\n private _timer?: number;\n protected _statedElements?: (IElement | IGlyphElement)[];\n\n constructor(view: IView, options?: ElementSelectOptions) {\n super(view, options);\n this.options = Object.assign({}, ElementSelect.defaultOptions, options);\n\n this._marks = view.getMarksBySelector(this.options.selector);\n this._stateMarks = groupMarksByState(this._marks, [this.options.state, this.options.reverseState]);\n }\n\n getStartState(): string {\n return this.options.state;\n }\n\n protected getEvents() {\n const triggerOff = this.options.triggerOff;\n const trigger = this.options.trigger;\n\n const events = [\n {\n type: trigger,\n handler: this.handleStart\n }\n ];\n\n let eventName = triggerOff;\n\n if (triggerOff === 'empty') {\n eventName = trigger as EventType;\n\n this._resetType = 'view';\n } else if (triggerOff === 'none') {\n eventName = null;\n this._resetType = null;\n } else if (isString(triggerOff)) {\n if ((triggerOff as string).includes('view:')) {\n eventName = (triggerOff as string).replace('view:', '') as EventType;\n\n this._resetType = 'view';\n } else {\n eventName = triggerOff;\n\n this._resetType = 'self';\n }\n } else if (isNumber(triggerOff)) {\n eventName = null;\n this._resetType = 'timeout';\n } else {\n this._resetType = null;\n }\n\n if (eventName && eventName !== trigger) {\n events.push({ type: eventName as EventType, handler: this.handleReset });\n }\n\n return events;\n }\n\n clearPrevElements = () => {\n const { state, reverseState } = this.options;\n\n if (this._statedElements && this._statedElements.length) {\n this.clearAllStates(state, reverseState);\n this.dispatchEvent('reset', { elements: this._statedElements, options: this.options });\n\n this._statedElements = [];\n }\n };\n\n handleStart = (e: InteractionEvent) => {\n this.start(e.element);\n };\n\n handleReset = (e: InteractionEvent) => {\n this.reset(e.element);\n };\n\n start(element: InteractionEvent['element']) {\n const { state, reverseState, isMultiple } = this.options;\n if (element && this._marks && this._marks.includes(element.mark)) {\n if (element.hasState(state)) {\n if (this._resetType === 'self') {\n this._statedElements = this.updateStates(\n this._statedElements && this._statedElements.filter(el => el !== element),\n this._statedElements,\n state,\n reverseState\n );\n }\n } else {\n if (this._timer) {\n clearTimeout(this._timer);\n }\n element.addState(state);\n\n this._statedElements = this.updateStates(\n isMultiple && this._statedElements ? [...this._statedElements, element] : [element],\n this._statedElements,\n state,\n reverseState\n );\n this.dispatchEvent('start', { elements: this._statedElements, options: this.options });\n\n if (this._resetType === 'timeout') {\n this._timer = setTimeout(() => {\n this.clearPrevElements();\n }, this.options.triggerOff as number) as unknown as number;\n }\n }\n } else if (this._resetType === 'view' && this._statedElements && this._statedElements.length) {\n this.clearPrevElements();\n }\n }\n\n reset(element: InteractionEvent['element']) {\n if (!this._statedElements || !this._statedElements.length) {\n return;\n }\n\n const hasActiveElement = element && this._marks && this._marks.includes(element.mark);\n\n if (this._resetType === 'view' && !hasActiveElement) {\n this.clearPrevElements();\n } else if (this._resetType === 'self' && hasActiveElement) {\n this.clearPrevElements();\n }\n }\n}\n"]}
|
|
@@ -33,6 +33,7 @@ export interface IInteraction<T = any> {
|
|
|
33
33
|
unbind: () => void;
|
|
34
34
|
start: (element: IElement | IGlyphElement | string | any) => void;
|
|
35
35
|
reset: (element?: IElement | IGlyphElement) => void;
|
|
36
|
+
getStartState: () => string;
|
|
36
37
|
}
|
|
37
38
|
export interface IInteractionConstructor<T = any> {
|
|
38
39
|
readonly type: string;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../src/types/interaction.ts"],"names":[],"mappings":"","file":"interaction.js","sourcesContent":["import type { IView } from './view';\nimport type { EventType, InteractionEvent, ViewEventType } from './event';\nimport type {\n BaseCrosshairAttrs,\n BrushAttributes,\n TooltipAttributes,\n TooltipRowAttrs\n} from '@visactor/vrender-components';\nimport type { IPolygon, ISymbolGraphicAttribute, ITextGraphicAttribute } from '@visactor/vrender-core';\nimport type { IElement, IGlyphElement } from './element';\nimport type { IData, IGrammarBase, IMark, IScale } from './grammar';\nimport type { IPointLike } from '@visactor/vutils';\nimport type { IBaseScale } from '@visactor/vscale';\nimport type { IDatazoom, IScrollbar } from './component';\nimport type { FieldEncodeType, MarkFunctionType } from './mark';\n\nexport interface FilterDataTarget {\n data: string | IData;\n filter: string | ((datum: any, filterValues: any[]) => boolean);\n transform?: (data: any[], filterValues: any[]) => any[];\n}\n\nexport interface IBaseInteractionOptions {\n id?: string;\n\n dependency?: string | string[] | IGrammarBase | IGrammarBase[];\n\n shouldStart?: (e: any) => boolean;\n\n shouldUpdate?: (e: any) => boolean;\n\n shouldEnd?: (e: any) => boolean;\n\n shouldReset?: (e: any) => boolean;\n\n onStart?: (e: any) => boolean;\n\n onUpdate?: (e: any) => boolean;\n\n onEnd?: (e: any) => boolean;\n\n onReset?: (e: any) => boolean;\n}\n\nexport interface IInteraction<T = any> {\n readonly options: T;\n readonly type: string;\n depend: (grammar: IGrammarBase[] | IGrammarBase | string[] | string) => void;\n bind: () => void;\n unbind: () => void;\n start: (element: IElement | IGlyphElement | string | any) => void;\n reset: (element?: IElement | IGlyphElement) => void;\n}\n\nexport interface IInteractionConstructor<T = any> {\n readonly type: string;\n\n new (view: IView, options?: T): IInteraction<T>;\n}\n\n/**\n * the interaction to set the active state of specified marks\n */\nexport interface ElementActiveOptions extends IBaseInteractionOptions {\n /**\n * the selector of marks\n */\n selector?: string | string[] | IMark | IMark[];\n /**\n * the trigger event name\n */\n trigger?: EventType | EventType[];\n /**\n * the reset trigger event name\n */\n triggerOff?: EventType | EventType[] | 'none';\n /**\n * the active state name\n */\n state?: string;\n}\n\n/**\n * the interaction to set the seleted state of specified marks\n */\nexport interface ElementSelectOptions extends IBaseInteractionOptions {\n /**\n * the selector of marks\n */\n selector?: string | string[] | IMark | IMark[];\n /**\n * the trigger event name\n */\n trigger?: EventType | EventType[];\n /**\n * the selected state name\n */\n state?: string;\n /**\n * the non-selected state name\n */\n reverseState?: string;\n /**\n * the reset trigger event name\n */\n triggerOff?: EventType | EventType[] | ViewEventType | 'empty' | 'none' | number;\n /**\n * whether or not support multiple selected\n */\n isMultiple?: boolean;\n}\n\n/**\n * the interaction to set the highlight state of specified marks\n */\nexport interface ElementHighlightOptions extends IBaseInteractionOptions {\n /**\n * the selector of marks\n */\n selector?: string | string[] | IMark | IMark[];\n /**\n * the trigger event name\n */\n trigger?: EventType;\n /**\n * the reset trigger event name\n */\n triggerOff?: EventType | 'none';\n /**\n * the highlight state name\n */\n highlightState?: string;\n /**\n * the blur state name\n */\n blurState?: string;\n}\n\nexport interface ElementFilterOptions {\n /**\n * the filter type of element\n */\n filterType?: 'key' | 'groupKey';\n /**\n * the field to be filtered\n */\n filterField?: string;\n}\n\n/**\n * the interaction to set the active state of specified marks trigger by legend\n */\nexport interface ElementActiveByLegendOptions extends IBaseInteractionOptions, ElementFilterOptions {\n /**\n * the selector of marks\n */\n selector?: string | string[] | IMark | IMark[];\n /**\n * the active state name\n */\n state?: string;\n}\n\n/**\n * the interaction to set the active state of specified marks trigger by legend\n */\nexport interface ElementHighlightByLegendOptions extends IBaseInteractionOptions, ElementFilterOptions {\n /**\n * the selector of marks\n */\n selector?: string | string[] | IMark | IMark[];\n /**\n * the highlight state name\n */\n highlightState?: string;\n /**\n * the blur state name\n */\n blurState?: string;\n}\n\nexport interface ElementHighlightByNameOptions extends ElementHighlightByLegendOptions {\n graphicName?: string | string[];\n /**\n * the trigger event name\n */\n trigger?: EventType;\n /**\n * the reset trigger event name\n */\n triggerOff?: EventType | 'none';\n\n parseData?: (e: InteractionEvent) => any;\n}\n\nexport interface BrushEventParams {\n operateType: string;\n operateMask: IPolygon;\n activeElements?: (IElement | IGlyphElement)[];\n}\n\nexport interface BrushOptions extends IBaseInteractionOptions, BrushAttributes {\n /**\n * the selector of marks\n */\n selector?: string | string[] | IMark | IMark[];\n\n onStart?: (params: BrushEventParams) => boolean;\n\n onUpdate?: (params: BrushEventParams) => boolean;\n\n onEnd?: (params: BrushEventParams) => boolean;\n\n onReset?: (params: BrushEventParams) => boolean;\n}\n\nexport interface BrushHighlightOptions extends BrushOptions {\n /**\n * the highlight state name\n */\n highlightState?: string;\n /**\n * the blur state name\n */\n blurState?: string;\n}\n\nexport interface BrushActiveOptions extends BrushOptions {\n /**\n * the active state name\n */\n state?: string;\n}\n\nexport interface BrushFilterOptions extends BrushOptions {\n target: {\n data: IData | string;\n transform?: (data: any[], filterValue: any) => any[];\n };\n}\n\nexport interface DataFilterOptions extends IBaseInteractionOptions {\n /**\n * the selector of marks\n */\n source?: string | string[] | IMark | IMark[];\n\n /**\n * data target\n */\n target: {\n data: IData | string;\n filter?: string | ((datum: any, filterValue: any) => boolean);\n transform?: (data: any[], filterValue: any) => any[];\n };\n}\n\nexport interface DrillDownOptions extends BrushOptions {\n /**\n * enable brush\n */\n brush?: boolean;\n // trigger attribute is included in brush attributes\n target: {\n data: IData | string;\n transform?: (data: any[], filterValue: any) => any[];\n };\n}\n\nexport interface RollUpOptions extends DataFilterOptions {\n /**\n * the trigger event name\n */\n trigger?: EventType;\n /**\n * the reset trigger event name\n */\n triggerOff?: EventType | ViewEventType | 'empty';\n}\n\nexport type CustomTooltipCallback = (\n datum: any,\n element: IElement,\n parameters: any\n) => TooltipRowAttrs | TooltipRowAttrs[];\n\nexport interface ITooltipRow {\n visible?: boolean;\n key?: MarkFunctionType<string | Partial<ITextGraphicAttribute>> | FieldEncodeType;\n value?: MarkFunctionType<string | Partial<ITextGraphicAttribute>> | FieldEncodeType;\n symbol?: MarkFunctionType<string | Partial<ISymbolGraphicAttribute>> | FieldEncodeType;\n}\n\nexport type TooltipType = 'x' | 'y' | 'angle' | 'radius';\n\nexport interface TooltipOptions extends IBaseInteractionOptions {\n /**\n * the selector of marks\n */\n selector?: string | string[] | IMark | IMark[];\n /**\n * the trigger event name\n */\n trigger?: EventType;\n /**\n * the reset trigger event name\n */\n triggerOff?: EventType | 'none';\n\n title?: ITooltipRow | string | CustomTooltipCallback;\n content?: ITooltipRow | ITooltipRow[] | CustomTooltipCallback;\n attributes?: MarkFunctionType<TooltipAttributes>;\n}\n\nexport interface DimensionTooltipOptions extends TooltipOptions {\n scale?: IScale | string;\n tooltipType?: TooltipType;\n target?: {\n data: IData | string;\n filter: string | ((datum: any, tooltipValue: any) => boolean);\n };\n avoidMark?: string | string[];\n container?: string | IMark;\n center?: IPointLike;\n}\n\nexport type CrosshairType = 'x' | 'y' | 'angle' | 'radius' | 'radius-polygon';\n\nexport type CrosshairShape = 'line' | 'rect';\n\nexport interface CrosshairOptions extends IBaseInteractionOptions {\n /**\n * the trigger event name\n */\n trigger?: EventType;\n /**\n * the reset trigger event name\n */\n triggerOff?: EventType | 'none';\n scale?: IScale | string;\n crosshairType?: CrosshairType;\n crosshairShape?: CrosshairShape;\n container?: string | IMark;\n radius?: number;\n center?: IPointLike;\n attributes?: MarkFunctionType<BaseCrosshairAttrs>;\n}\nexport interface ViewNavigationBaseOptions {\n enableX?: boolean;\n enableY?: boolean;\n scaleX?: string | IScale;\n scaleY?: string | IScale;\n dataTargetX?: FilterDataTarget;\n dataTargetY?: FilterDataTarget;\n throttle?: number;\n linkedComponentX?: string | IDatazoom | IScrollbar;\n linkedComponentY?: string | IDatazoom | IScrollbar;\n rangeX?: [number, number] | (() => [number, number]);\n rangeY?: [number, number] | (() => [number, number]);\n}\n\nexport interface ViewZoomSimpleOptions {\n realtime?: boolean;\n rate?: number;\n focus?: boolean;\n trigger?: EventType;\n endTrigger?: EventType;\n triggerOff?: EventType | 'none';\n}\n\nexport type ViewZoomOptions = ViewZoomSimpleOptions & IBaseInteractionOptions & ViewNavigationBaseOptions;\n\nexport interface ViewScrollSimpleOptions {\n realtime?: boolean;\n reversed?: boolean;\n trigger?: EventType;\n endTrigger?: EventType;\n}\nexport type ViewScrollOptions = ViewScrollSimpleOptions & IBaseInteractionOptions & ViewNavigationBaseOptions;\n\nexport interface ViewDragSimpleOptions {\n realtime?: boolean;\n reversed?: boolean;\n trigger?: EventType;\n endTrigger?: EventType;\n updateTrigger?: EventType;\n}\n\nexport type ViewDragOptions = ViewDragSimpleOptions & IBaseInteractionOptions & ViewNavigationBaseOptions;\n\nexport interface ViewRoamOptions extends IBaseInteractionOptions, ViewNavigationBaseOptions {\n zoom?: ViewZoomSimpleOptions & { enable?: boolean };\n scroll?: ViewScrollSimpleOptions & { enable?: boolean };\n drag?: ViewDragSimpleOptions & { enable?: boolean };\n}\n\n/**\n * the interaction to set the highlight state of specified marks\n */\nexport interface SankeyHighlightOptions extends IBaseInteractionOptions {\n /**\n * the selector of node mark\n */\n nodeSelector?: string | IMark;\n /**\n * the selector of link mark\n */\n linkSelector?: string | IMark;\n /**\n * the trigger event name\n */\n trigger?: EventType;\n /**\n * the reset trigger event name\n */\n triggerOff?: EventType | 'none';\n /**\n * the highlight state name\n */\n highlightState?: string;\n /**\n * the blur state name\n */\n blurState?: string;\n /** set highlight state to different type of nodes */\n effect?: 'adjacency' | 'related';\n}\n\nexport interface FishEyeOptions extends IBaseInteractionOptions {\n selector?: string | string[] | IMark | IMark[];\n /** the radius of x-direction */\n radiusX?: number;\n /** the radius of y-direction */\n radiusY?: number;\n /** the radiusRatio of x-direction */\n radiusRatioX?: number;\n /** the radiusRatio of y-direction */\n radiusRatioY?: number;\n /** x方向的扰动 */\n distortionX?: number;\n /** y方向的扰动 */\n distortionY?: number;\n /** 禁用 x方向的变形 */\n enableX?: boolean;\n /** 禁用y方向的变形 */\n enableY?: boolean;\n /** x方向的scale */\n scaleX?: string | IScale;\n /** y方向的scale */\n scaleY?: string | IScale;\n /** 节流的时长,单位为ms */\n throttle?: number;\n /**\n * the trigger event name\n */\n trigger?: EventType;\n /**\n * the trigger event of end\n */\n endTrigger?: EventType;\n /**\n * the trigger event of updating\n */\n updateTrigger?: EventType;\n /**\n * the trigger event of reset\n */\n triggerOff?: string | 'none';\n}\n\nexport interface ElementActiveSpec extends ElementActiveOptions {\n type: 'element-active';\n}\nexport interface ElementSelectSpec extends ElementSelectOptions {\n type: 'element-select';\n}\nexport interface ElementHighlightSpec extends ElementHighlightOptions {\n type: 'element-highlight';\n}\nexport interface ElementHighlightByKeySpec extends ElementHighlightOptions {\n type: 'element-highlight-by-key';\n}\nexport interface ElementHighlightByGroupSpec extends ElementHighlightOptions {\n type: 'element-highlight-by-group';\n}\nexport interface ElementActiveByLegendSpec extends ElementActiveByLegendOptions {\n type: 'element-active-by-legend';\n}\n\nexport interface ElementHighlightByLegendSpec extends ElementHighlightByLegendOptions {\n type: 'element-highlight-by-legend';\n}\n\nexport interface ElementHighlightByNameSpec extends ElementHighlightByNameOptions {\n type: 'element-highlight-by-name';\n}\n\nexport interface BrushHighlightSpec extends BrushHighlightOptions {\n type: 'brush-highlight';\n}\n\nexport interface BrushActiveSpec extends BrushActiveOptions {\n type: 'brush-active';\n}\n\nexport interface BrushFilterSpec extends BrushFilterOptions {\n type: 'brush-filter';\n}\n\nexport interface LegendFilterSpec extends DataFilterOptions {\n type: 'legend-filter';\n}\n\nexport interface DatazoomFilterSpec extends DataFilterOptions {\n type: 'datazoom-filter';\n}\n\nexport interface SliderFilterSpec extends DataFilterOptions {\n type: 'slider-filter';\n}\n\nexport interface PlayerFilterSpec extends DataFilterOptions {\n type: 'player-filter';\n}\n\nexport interface ScrollbarFilterSpec extends DataFilterOptions {\n type: 'scrollbar-filter';\n}\n\nexport interface DrillDownSpec extends DrillDownOptions {\n type: 'drill-down';\n}\n\nexport interface RollUpSpec extends RollUpOptions {\n type: 'roll-up';\n}\n\nexport interface TooltipSpec extends TooltipOptions {\n type: 'tooltip';\n}\n\nexport interface DimensionTooltipSpec extends DimensionTooltipOptions {\n type: 'dimension-tooltip';\n}\n\nexport interface CrosshairSpec extends CrosshairOptions {\n type: 'crosshair';\n}\nexport interface ViewRoamSpec extends ViewRoamOptions {\n type: 'view-roam';\n}\n\nexport interface ViewZoomSpec extends ViewZoomOptions {\n type: 'view-zoom';\n}\n\nexport interface ViewScrollSpec extends ViewScrollOptions {\n type: 'view-scroll';\n}\n\nexport interface ViewDragSpec extends ViewDragOptions {\n type: 'view-drag';\n}\n\nexport interface SankeyHighlightSpec extends SankeyHighlightOptions {\n type: 'sankey-highlight';\n}\n\nexport interface FishEyeSpec extends FishEyeOptions {\n type: 'fish-eye';\n}\n\nexport interface CustomizedInteractionSpec extends IBaseInteractionOptions {\n type: string;\n}\n\nexport type InteractionSpec =\n | ElementActiveSpec\n | ElementSelectSpec\n | ElementHighlightSpec\n | ElementHighlightByKeySpec\n | ElementHighlightByGroupSpec\n | ElementActiveByLegendSpec\n | ElementHighlightByLegendSpec\n | ElementHighlightByNameSpec\n | BrushHighlightSpec\n | BrushActiveSpec\n | BrushFilterSpec\n | LegendFilterSpec\n | DatazoomFilterSpec\n | SliderFilterSpec\n | PlayerFilterSpec\n | ScrollbarFilterSpec\n | DrillDownSpec\n | RollUpSpec\n | TooltipSpec\n | DimensionTooltipSpec\n | CrosshairSpec\n | ViewRoamSpec\n | ViewZoomSpec\n | ViewScrollSpec\n | ViewDragSpec\n | SankeyHighlightSpec\n | FishEyeSpec\n | CustomizedInteractionSpec;\n\nexport interface ViewNavigationRange {\n needUpdate?: boolean;\n x?: [number, number];\n y?: [number, number];\n}\n\nexport interface IViewZoomMixin {\n updateZoomRange: (\n rangeFactor: [number, number],\n range: [number, number],\n zoomEvent: { zoomDelta: number; zoomX: number; zoomY: number },\n zoomOptions?: ViewZoomSimpleOptions\n ) => [number, number];\n formatZoomEvent: (e: InteractionEvent) => InteractionEvent & { zoomDelta?: number; zoomX?: number; zoomY?: number };\n handleZoomStart: (\n e: InteractionEvent,\n navState: Partial<Record<'x' | 'y', ViewStateByDim>>,\n zoomOptions?: ViewZoomSimpleOptions\n ) => ViewNavigationRange;\n handleZoomEnd: (\n e: InteractionEvent,\n navState: Partial<Record<'x' | 'y', ViewStateByDim>>,\n zoomOptions?: ViewZoomSimpleOptions\n ) => ViewNavigationRange;\n handleZoomReset: (\n e: InteractionEvent,\n navState: Partial<Record<'x' | 'y', ViewStateByDim>>,\n zoomOptions?: ViewZoomSimpleOptions\n ) => ViewNavigationRange;\n}\n\nexport interface IViewScrollMixin {\n formatScrollEvent: (e: InteractionEvent) => InteractionEvent & { scrollX?: number; scrollY?: number };\n handleScrollStart: (\n e: InteractionEvent,\n navState: Partial<Record<'x' | 'y', ViewStateByDim>>,\n scrollOptions?: ViewScrollSimpleOptions\n ) => ViewNavigationRange;\n handleScrollEnd: (\n e: InteractionEvent,\n navState: Partial<Record<'x' | 'y', ViewStateByDim>>,\n scrollOptions?: ViewScrollSimpleOptions\n ) => ViewNavigationRange;\n}\n\nexport interface IViewDragMixin {\n handleDragStart: (\n e: InteractionEvent,\n navState: Partial<Record<'x' | 'y', ViewStateByDim>>,\n dragOptions?: ViewDragSimpleOptions\n ) => ViewNavigationRange;\n handleDragUpdate: (\n e: InteractionEvent,\n navState: Partial<Record<'x' | 'y', ViewStateByDim>>,\n dragOptions?: ViewDragSimpleOptions\n ) => ViewNavigationRange;\n handleDragEnd: (\n e: InteractionEvent,\n navState: Partial<Record<'x' | 'y', ViewStateByDim>>,\n dragOptions?: ViewDragSimpleOptions\n ) => ViewNavigationRange;\n}\n\nexport interface IToggleStateMixin {\n updateStates: (\n newStatedElements: (IElement | IGlyphElement)[],\n prevStatedElements?: (IElement | IGlyphElement)[],\n state?: string,\n reverseState?: string\n ) => (IElement | IGlyphElement)[];\n clearAllStates: (state?: string, reverseState?: string) => void;\n}\n\nexport interface ViewStateByDim {\n scale?: IScale;\n data?: IData;\n linkedComponent?: IDatazoom | IScrollbar;\n filterValue?: any[];\n wholeScale?: IBaseScale;\n initRangeFactor?: [number, number];\n getCurrentRange?: () => [number, number];\n rangeFactor?: [number, number];\n}\n"]}
|
|
1
|
+
{"version":3,"sources":["../src/types/interaction.ts"],"names":[],"mappings":"","file":"interaction.js","sourcesContent":["import type { IView } from './view';\nimport type { EventType, InteractionEvent, ViewEventType } from './event';\nimport type {\n BaseCrosshairAttrs,\n BrushAttributes,\n TooltipAttributes,\n TooltipRowAttrs\n} from '@visactor/vrender-components';\nimport type { IPolygon, ISymbolGraphicAttribute, ITextGraphicAttribute } from '@visactor/vrender-core';\nimport type { IElement, IGlyphElement } from './element';\nimport type { IData, IGrammarBase, IMark, IScale } from './grammar';\nimport type { IPointLike } from '@visactor/vutils';\nimport type { IBaseScale } from '@visactor/vscale';\nimport type { IDatazoom, IScrollbar } from './component';\nimport type { FieldEncodeType, MarkFunctionType } from './mark';\n\nexport interface FilterDataTarget {\n data: string | IData;\n filter: string | ((datum: any, filterValues: any[]) => boolean);\n transform?: (data: any[], filterValues: any[]) => any[];\n}\n\nexport interface IBaseInteractionOptions {\n id?: string;\n\n dependency?: string | string[] | IGrammarBase | IGrammarBase[];\n\n shouldStart?: (e: any) => boolean;\n\n shouldUpdate?: (e: any) => boolean;\n\n shouldEnd?: (e: any) => boolean;\n\n shouldReset?: (e: any) => boolean;\n\n onStart?: (e: any) => boolean;\n\n onUpdate?: (e: any) => boolean;\n\n onEnd?: (e: any) => boolean;\n\n onReset?: (e: any) => boolean;\n}\n\nexport interface IInteraction<T = any> {\n readonly options: T;\n readonly type: string;\n depend: (grammar: IGrammarBase[] | IGrammarBase | string[] | string) => void;\n bind: () => void;\n unbind: () => void;\n start: (element: IElement | IGlyphElement | string | any) => void;\n reset: (element?: IElement | IGlyphElement) => void;\n getStartState: () => string;\n}\n\nexport interface IInteractionConstructor<T = any> {\n readonly type: string;\n\n new (view: IView, options?: T): IInteraction<T>;\n}\n\n/**\n * the interaction to set the active state of specified marks\n */\nexport interface ElementActiveOptions extends IBaseInteractionOptions {\n /**\n * the selector of marks\n */\n selector?: string | string[] | IMark | IMark[];\n /**\n * the trigger event name\n */\n trigger?: EventType | EventType[];\n /**\n * the reset trigger event name\n */\n triggerOff?: EventType | EventType[] | 'none';\n /**\n * the active state name\n */\n state?: string;\n}\n\n/**\n * the interaction to set the seleted state of specified marks\n */\nexport interface ElementSelectOptions extends IBaseInteractionOptions {\n /**\n * the selector of marks\n */\n selector?: string | string[] | IMark | IMark[];\n /**\n * the trigger event name\n */\n trigger?: EventType | EventType[];\n /**\n * the selected state name\n */\n state?: string;\n /**\n * the non-selected state name\n */\n reverseState?: string;\n /**\n * the reset trigger event name\n */\n triggerOff?: EventType | EventType[] | ViewEventType | 'empty' | 'none' | number;\n /**\n * whether or not support multiple selected\n */\n isMultiple?: boolean;\n}\n\n/**\n * the interaction to set the highlight state of specified marks\n */\nexport interface ElementHighlightOptions extends IBaseInteractionOptions {\n /**\n * the selector of marks\n */\n selector?: string | string[] | IMark | IMark[];\n /**\n * the trigger event name\n */\n trigger?: EventType;\n /**\n * the reset trigger event name\n */\n triggerOff?: EventType | 'none';\n /**\n * the highlight state name\n */\n highlightState?: string;\n /**\n * the blur state name\n */\n blurState?: string;\n}\n\nexport interface ElementFilterOptions {\n /**\n * the filter type of element\n */\n filterType?: 'key' | 'groupKey';\n /**\n * the field to be filtered\n */\n filterField?: string;\n}\n\n/**\n * the interaction to set the active state of specified marks trigger by legend\n */\nexport interface ElementActiveByLegendOptions extends IBaseInteractionOptions, ElementFilterOptions {\n /**\n * the selector of marks\n */\n selector?: string | string[] | IMark | IMark[];\n /**\n * the active state name\n */\n state?: string;\n}\n\n/**\n * the interaction to set the active state of specified marks trigger by legend\n */\nexport interface ElementHighlightByLegendOptions extends IBaseInteractionOptions, ElementFilterOptions {\n /**\n * the selector of marks\n */\n selector?: string | string[] | IMark | IMark[];\n /**\n * the highlight state name\n */\n highlightState?: string;\n /**\n * the blur state name\n */\n blurState?: string;\n}\n\nexport interface ElementHighlightByNameOptions extends ElementHighlightByLegendOptions {\n graphicName?: string | string[];\n /**\n * the trigger event name\n */\n trigger?: EventType;\n /**\n * the reset trigger event name\n */\n triggerOff?: EventType | 'none';\n\n parseData?: (e: InteractionEvent) => any;\n}\n\nexport interface BrushEventParams {\n operateType: string;\n operateMask: IPolygon;\n activeElements?: (IElement | IGlyphElement)[];\n}\n\nexport interface BrushOptions extends IBaseInteractionOptions, BrushAttributes {\n /**\n * the selector of marks\n */\n selector?: string | string[] | IMark | IMark[];\n\n onStart?: (params: BrushEventParams) => boolean;\n\n onUpdate?: (params: BrushEventParams) => boolean;\n\n onEnd?: (params: BrushEventParams) => boolean;\n\n onReset?: (params: BrushEventParams) => boolean;\n}\n\nexport interface BrushHighlightOptions extends BrushOptions {\n /**\n * the highlight state name\n */\n highlightState?: string;\n /**\n * the blur state name\n */\n blurState?: string;\n}\n\nexport interface BrushActiveOptions extends BrushOptions {\n /**\n * the active state name\n */\n state?: string;\n}\n\nexport interface BrushFilterOptions extends BrushOptions {\n target: {\n data: IData | string;\n transform?: (data: any[], filterValue: any) => any[];\n };\n}\n\nexport interface DataFilterOptions extends IBaseInteractionOptions {\n /**\n * the selector of marks\n */\n source?: string | string[] | IMark | IMark[];\n\n /**\n * data target\n */\n target: {\n data: IData | string;\n filter?: string | ((datum: any, filterValue: any) => boolean);\n transform?: (data: any[], filterValue: any) => any[];\n };\n}\n\nexport interface DrillDownOptions extends BrushOptions {\n /**\n * enable brush\n */\n brush?: boolean;\n // trigger attribute is included in brush attributes\n target: {\n data: IData | string;\n transform?: (data: any[], filterValue: any) => any[];\n };\n}\n\nexport interface RollUpOptions extends DataFilterOptions {\n /**\n * the trigger event name\n */\n trigger?: EventType;\n /**\n * the reset trigger event name\n */\n triggerOff?: EventType | ViewEventType | 'empty';\n}\n\nexport type CustomTooltipCallback = (\n datum: any,\n element: IElement,\n parameters: any\n) => TooltipRowAttrs | TooltipRowAttrs[];\n\nexport interface ITooltipRow {\n visible?: boolean;\n key?: MarkFunctionType<string | Partial<ITextGraphicAttribute>> | FieldEncodeType;\n value?: MarkFunctionType<string | Partial<ITextGraphicAttribute>> | FieldEncodeType;\n symbol?: MarkFunctionType<string | Partial<ISymbolGraphicAttribute>> | FieldEncodeType;\n}\n\nexport type TooltipType = 'x' | 'y' | 'angle' | 'radius';\n\nexport interface TooltipOptions extends IBaseInteractionOptions {\n /**\n * the selector of marks\n */\n selector?: string | string[] | IMark | IMark[];\n /**\n * the trigger event name\n */\n trigger?: EventType;\n /**\n * the reset trigger event name\n */\n triggerOff?: EventType | 'none';\n\n title?: ITooltipRow | string | CustomTooltipCallback;\n content?: ITooltipRow | ITooltipRow[] | CustomTooltipCallback;\n attributes?: MarkFunctionType<TooltipAttributes>;\n}\n\nexport interface DimensionTooltipOptions extends TooltipOptions {\n scale?: IScale | string;\n tooltipType?: TooltipType;\n target?: {\n data: IData | string;\n filter: string | ((datum: any, tooltipValue: any) => boolean);\n };\n avoidMark?: string | string[];\n container?: string | IMark;\n center?: IPointLike;\n}\n\nexport type CrosshairType = 'x' | 'y' | 'angle' | 'radius' | 'radius-polygon';\n\nexport type CrosshairShape = 'line' | 'rect';\n\nexport interface CrosshairOptions extends IBaseInteractionOptions {\n /**\n * the trigger event name\n */\n trigger?: EventType;\n /**\n * the reset trigger event name\n */\n triggerOff?: EventType | 'none';\n scale?: IScale | string;\n crosshairType?: CrosshairType;\n crosshairShape?: CrosshairShape;\n container?: string | IMark;\n radius?: number;\n center?: IPointLike;\n attributes?: MarkFunctionType<BaseCrosshairAttrs>;\n}\nexport interface ViewNavigationBaseOptions {\n enableX?: boolean;\n enableY?: boolean;\n scaleX?: string | IScale;\n scaleY?: string | IScale;\n dataTargetX?: FilterDataTarget;\n dataTargetY?: FilterDataTarget;\n throttle?: number;\n linkedComponentX?: string | IDatazoom | IScrollbar;\n linkedComponentY?: string | IDatazoom | IScrollbar;\n rangeX?: [number, number] | (() => [number, number]);\n rangeY?: [number, number] | (() => [number, number]);\n}\n\nexport interface ViewZoomSimpleOptions {\n realtime?: boolean;\n rate?: number;\n focus?: boolean;\n trigger?: EventType;\n endTrigger?: EventType;\n triggerOff?: EventType | 'none';\n}\n\nexport type ViewZoomOptions = ViewZoomSimpleOptions & IBaseInteractionOptions & ViewNavigationBaseOptions;\n\nexport interface ViewScrollSimpleOptions {\n realtime?: boolean;\n reversed?: boolean;\n trigger?: EventType;\n endTrigger?: EventType;\n}\nexport type ViewScrollOptions = ViewScrollSimpleOptions & IBaseInteractionOptions & ViewNavigationBaseOptions;\n\nexport interface ViewDragSimpleOptions {\n realtime?: boolean;\n reversed?: boolean;\n trigger?: EventType;\n endTrigger?: EventType;\n updateTrigger?: EventType;\n}\n\nexport type ViewDragOptions = ViewDragSimpleOptions & IBaseInteractionOptions & ViewNavigationBaseOptions;\n\nexport interface ViewRoamOptions extends IBaseInteractionOptions, ViewNavigationBaseOptions {\n zoom?: ViewZoomSimpleOptions & { enable?: boolean };\n scroll?: ViewScrollSimpleOptions & { enable?: boolean };\n drag?: ViewDragSimpleOptions & { enable?: boolean };\n}\n\n/**\n * the interaction to set the highlight state of specified marks\n */\nexport interface SankeyHighlightOptions extends IBaseInteractionOptions {\n /**\n * the selector of node mark\n */\n nodeSelector?: string | IMark;\n /**\n * the selector of link mark\n */\n linkSelector?: string | IMark;\n /**\n * the trigger event name\n */\n trigger?: EventType;\n /**\n * the reset trigger event name\n */\n triggerOff?: EventType | 'none';\n /**\n * the highlight state name\n */\n highlightState?: string;\n /**\n * the blur state name\n */\n blurState?: string;\n /** set highlight state to different type of nodes */\n effect?: 'adjacency' | 'related';\n}\n\nexport interface FishEyeOptions extends IBaseInteractionOptions {\n selector?: string | string[] | IMark | IMark[];\n /** the radius of x-direction */\n radiusX?: number;\n /** the radius of y-direction */\n radiusY?: number;\n /** the radiusRatio of x-direction */\n radiusRatioX?: number;\n /** the radiusRatio of y-direction */\n radiusRatioY?: number;\n /** x方向的扰动 */\n distortionX?: number;\n /** y方向的扰动 */\n distortionY?: number;\n /** 禁用 x方向的变形 */\n enableX?: boolean;\n /** 禁用y方向的变形 */\n enableY?: boolean;\n /** x方向的scale */\n scaleX?: string | IScale;\n /** y方向的scale */\n scaleY?: string | IScale;\n /** 节流的时长,单位为ms */\n throttle?: number;\n /**\n * the trigger event name\n */\n trigger?: EventType;\n /**\n * the trigger event of end\n */\n endTrigger?: EventType;\n /**\n * the trigger event of updating\n */\n updateTrigger?: EventType;\n /**\n * the trigger event of reset\n */\n triggerOff?: string | 'none';\n}\n\nexport interface ElementActiveSpec extends ElementActiveOptions {\n type: 'element-active';\n}\nexport interface ElementSelectSpec extends ElementSelectOptions {\n type: 'element-select';\n}\nexport interface ElementHighlightSpec extends ElementHighlightOptions {\n type: 'element-highlight';\n}\nexport interface ElementHighlightByKeySpec extends ElementHighlightOptions {\n type: 'element-highlight-by-key';\n}\nexport interface ElementHighlightByGroupSpec extends ElementHighlightOptions {\n type: 'element-highlight-by-group';\n}\nexport interface ElementActiveByLegendSpec extends ElementActiveByLegendOptions {\n type: 'element-active-by-legend';\n}\n\nexport interface ElementHighlightByLegendSpec extends ElementHighlightByLegendOptions {\n type: 'element-highlight-by-legend';\n}\n\nexport interface ElementHighlightByNameSpec extends ElementHighlightByNameOptions {\n type: 'element-highlight-by-name';\n}\n\nexport interface BrushHighlightSpec extends BrushHighlightOptions {\n type: 'brush-highlight';\n}\n\nexport interface BrushActiveSpec extends BrushActiveOptions {\n type: 'brush-active';\n}\n\nexport interface BrushFilterSpec extends BrushFilterOptions {\n type: 'brush-filter';\n}\n\nexport interface LegendFilterSpec extends DataFilterOptions {\n type: 'legend-filter';\n}\n\nexport interface DatazoomFilterSpec extends DataFilterOptions {\n type: 'datazoom-filter';\n}\n\nexport interface SliderFilterSpec extends DataFilterOptions {\n type: 'slider-filter';\n}\n\nexport interface PlayerFilterSpec extends DataFilterOptions {\n type: 'player-filter';\n}\n\nexport interface ScrollbarFilterSpec extends DataFilterOptions {\n type: 'scrollbar-filter';\n}\n\nexport interface DrillDownSpec extends DrillDownOptions {\n type: 'drill-down';\n}\n\nexport interface RollUpSpec extends RollUpOptions {\n type: 'roll-up';\n}\n\nexport interface TooltipSpec extends TooltipOptions {\n type: 'tooltip';\n}\n\nexport interface DimensionTooltipSpec extends DimensionTooltipOptions {\n type: 'dimension-tooltip';\n}\n\nexport interface CrosshairSpec extends CrosshairOptions {\n type: 'crosshair';\n}\nexport interface ViewRoamSpec extends ViewRoamOptions {\n type: 'view-roam';\n}\n\nexport interface ViewZoomSpec extends ViewZoomOptions {\n type: 'view-zoom';\n}\n\nexport interface ViewScrollSpec extends ViewScrollOptions {\n type: 'view-scroll';\n}\n\nexport interface ViewDragSpec extends ViewDragOptions {\n type: 'view-drag';\n}\n\nexport interface SankeyHighlightSpec extends SankeyHighlightOptions {\n type: 'sankey-highlight';\n}\n\nexport interface FishEyeSpec extends FishEyeOptions {\n type: 'fish-eye';\n}\n\nexport interface CustomizedInteractionSpec extends IBaseInteractionOptions {\n type: string;\n}\n\nexport type InteractionSpec =\n | ElementActiveSpec\n | ElementSelectSpec\n | ElementHighlightSpec\n | ElementHighlightByKeySpec\n | ElementHighlightByGroupSpec\n | ElementActiveByLegendSpec\n | ElementHighlightByLegendSpec\n | ElementHighlightByNameSpec\n | BrushHighlightSpec\n | BrushActiveSpec\n | BrushFilterSpec\n | LegendFilterSpec\n | DatazoomFilterSpec\n | SliderFilterSpec\n | PlayerFilterSpec\n | ScrollbarFilterSpec\n | DrillDownSpec\n | RollUpSpec\n | TooltipSpec\n | DimensionTooltipSpec\n | CrosshairSpec\n | ViewRoamSpec\n | ViewZoomSpec\n | ViewScrollSpec\n | ViewDragSpec\n | SankeyHighlightSpec\n | FishEyeSpec\n | CustomizedInteractionSpec;\n\nexport interface ViewNavigationRange {\n needUpdate?: boolean;\n x?: [number, number];\n y?: [number, number];\n}\n\nexport interface IViewZoomMixin {\n updateZoomRange: (\n rangeFactor: [number, number],\n range: [number, number],\n zoomEvent: { zoomDelta: number; zoomX: number; zoomY: number },\n zoomOptions?: ViewZoomSimpleOptions\n ) => [number, number];\n formatZoomEvent: (e: InteractionEvent) => InteractionEvent & { zoomDelta?: number; zoomX?: number; zoomY?: number };\n handleZoomStart: (\n e: InteractionEvent,\n navState: Partial<Record<'x' | 'y', ViewStateByDim>>,\n zoomOptions?: ViewZoomSimpleOptions\n ) => ViewNavigationRange;\n handleZoomEnd: (\n e: InteractionEvent,\n navState: Partial<Record<'x' | 'y', ViewStateByDim>>,\n zoomOptions?: ViewZoomSimpleOptions\n ) => ViewNavigationRange;\n handleZoomReset: (\n e: InteractionEvent,\n navState: Partial<Record<'x' | 'y', ViewStateByDim>>,\n zoomOptions?: ViewZoomSimpleOptions\n ) => ViewNavigationRange;\n}\n\nexport interface IViewScrollMixin {\n formatScrollEvent: (e: InteractionEvent) => InteractionEvent & { scrollX?: number; scrollY?: number };\n handleScrollStart: (\n e: InteractionEvent,\n navState: Partial<Record<'x' | 'y', ViewStateByDim>>,\n scrollOptions?: ViewScrollSimpleOptions\n ) => ViewNavigationRange;\n handleScrollEnd: (\n e: InteractionEvent,\n navState: Partial<Record<'x' | 'y', ViewStateByDim>>,\n scrollOptions?: ViewScrollSimpleOptions\n ) => ViewNavigationRange;\n}\n\nexport interface IViewDragMixin {\n handleDragStart: (\n e: InteractionEvent,\n navState: Partial<Record<'x' | 'y', ViewStateByDim>>,\n dragOptions?: ViewDragSimpleOptions\n ) => ViewNavigationRange;\n handleDragUpdate: (\n e: InteractionEvent,\n navState: Partial<Record<'x' | 'y', ViewStateByDim>>,\n dragOptions?: ViewDragSimpleOptions\n ) => ViewNavigationRange;\n handleDragEnd: (\n e: InteractionEvent,\n navState: Partial<Record<'x' | 'y', ViewStateByDim>>,\n dragOptions?: ViewDragSimpleOptions\n ) => ViewNavigationRange;\n}\n\nexport interface IToggleStateMixin {\n updateStates: (\n newStatedElements: (IElement | IGlyphElement)[],\n prevStatedElements?: (IElement | IGlyphElement)[],\n state?: string,\n reverseState?: string\n ) => (IElement | IGlyphElement)[];\n clearAllStates: (state?: string, reverseState?: string) => void;\n}\n\nexport interface ViewStateByDim {\n scale?: IScale;\n data?: IData;\n linkedComponent?: IDatazoom | IScrollbar;\n filterValue?: any[];\n wholeScale?: IBaseScale;\n initRangeFactor?: [number, number];\n getCurrentRange?: () => [number, number];\n rangeFactor?: [number, number];\n}\n"]}
|
package/cjs/view/component.js
CHANGED
|
@@ -21,11 +21,11 @@ class Component extends mark_1.Mark {
|
|
|
21
21
|
mode: this.mode,
|
|
22
22
|
skipDefault: this.spec.skipTheme
|
|
23
23
|
});
|
|
24
|
-
return this.emit(enums_1.HOOK_EVENT.BEFORE_ADD_VRENDER_MARK, {
|
|
24
|
+
return graphicItem && (this.emit(enums_1.HOOK_EVENT.BEFORE_ADD_VRENDER_MARK, {
|
|
25
25
|
graphicItem: graphicItem
|
|
26
26
|
}), this.graphicParent.appendChild(graphicItem), this.emit(enums_1.HOOK_EVENT.AFTER_ADD_VRENDER_MARK, {
|
|
27
27
|
graphicItem: graphicItem
|
|
28
|
-
}), graphicItem;
|
|
28
|
+
})), graphicItem;
|
|
29
29
|
}
|
|
30
30
|
join(data) {
|
|
31
31
|
return super.join(data, constants_1.DefaultKey);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../src/view/component.ts"],"names":[],"mappings":";;;AAAA,kDAAgD;AAChD,0CAA6D;AAY7D,6CAA0C;AAC1C,iCAA8B;AAE9B,MAAa,SAAU,SAAQ,WAAI;IAUjC,YAAY,IAAW,EAAE,aAAqB,EAAE,KAAkB,EAAE,IAAkB;QACpF,KAAK,CAAC,IAAI,EAAE,uBAAe,CAAC,SAAS,EAAE,KAAK,CAAC,CAAC;QAJtC,oBAAe,GAAQ,EAAE,CAAC,sBAAU,CAAC,EAAE,CAAC,EAAE,CAAC;QAKnD,IAAI,CAAC,aAAa,GAAG,aAAa,CAAC;QACnC,IAAI,CAAC,IAAI,CAAC,IAAI,GAAG,WAAW,CAAC;QAC7B,IAAI,CAAC,IAAI,CAAC,aAAa,GAAG,aAAa,CAAC;QACxC,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC;QACjB,IAAI,CAAC,wBAAwB,EAAE,CAAC;IAClC,CAAC;IAED,kBAAkB,CAAC,MAAW;QAC5B,IAAI,CAAC,IAAI,CAAC,eAAe,GAAG,MAAM,CAAC;QACnC,IAAI,CAAC,MAAM,EAAE,CAAC;QACd,OAAO,IAAI,CAAC;IACd,CAAC;IAED,cAAc,CAAC,KAAU,EAAE,QAAiB,EAAE,cAAoB;QAChE,MAAM,WAAW,GACf,cAAc,aAAd,cAAc,cAAd,cAAc,GACd,iBAAO,CAAC,sBAAsB,CAAC,IAAI,CAAC,aAAa,EAAE,KAAK,EAAE,EAAE,IAAI,EAAE,IAAI,CAAC,IAAI,EAAE,WAAW,EAAE,IAAI,CAAC,IAAI,CAAC,SAAS,EAAE,CAAC,CAAC;QAEnH,IAAI,CAAC,IAAI,CAAC,kBAAU,CAAC,uBAAuB,EAAE,EAAE,WAAW,EAAE,CAAC,CAAC;
|
|
1
|
+
{"version":3,"sources":["../src/view/component.ts"],"names":[],"mappings":"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","file":"component.js","sourcesContent":["import { DefaultKey } from '../graph/constants';\nimport { GrammarMarkType, HOOK_EVENT } from '../graph/enums';\nimport type {\n IGroupMark,\n IView,\n IComponent,\n ComponentSpec,\n IData,\n Nil,\n MarkFunctionType,\n StateEncodeSpec,\n BaseSingleEncodeSpec\n} from '../types';\nimport { Factory } from '../core/factory';\nimport { Mark } from './mark';\n\nexport class Component extends Mark implements IComponent {\n declare markType: GrammarMarkType.component;\n readonly componentType: string;\n protected declare spec: ComponentSpec;\n\n protected mode?: '2d' | '3d';\n\n protected _componentDatum: any = { [DefaultKey]: 0 };\n protected _encoders: StateEncodeSpec;\n\n constructor(view: IView, componentType: string, group?: IGroupMark, mode?: '2d' | '3d') {\n super(view, GrammarMarkType.component, group);\n this.componentType = componentType;\n this.spec.type = 'component';\n this.spec.componentType = componentType;\n this.mode = mode;\n this._updateComponentEncoders();\n }\n\n configureComponent(config: any) {\n this.spec.componentConfig = config;\n this.commit();\n return this;\n }\n\n addGraphicItem(attrs: any, groupKey?: string, newGraphicItem?: any) {\n const graphicItem =\n newGraphicItem ??\n Factory.createGraphicComponent(this.componentType, attrs, { mode: this.mode, skipDefault: this.spec.skipTheme });\n\n if (graphicItem) {\n this.emit(HOOK_EVENT.BEFORE_ADD_VRENDER_MARK, { graphicItem });\n (this.graphicParent as any).appendChild(graphicItem);\n\n this.emit(HOOK_EVENT.AFTER_ADD_VRENDER_MARK, { graphicItem });\n }\n\n return graphicItem;\n }\n\n join(data: IData | string | Nil) {\n return super.join(data, DefaultKey);\n }\n\n encodeState(state: string, channel: string | BaseSingleEncodeSpec, value?: MarkFunctionType<any>) {\n super.encodeState(state, channel, value);\n this._updateComponentEncoders();\n return this;\n }\n\n parseRenderContext() {\n return { large: false };\n }\n\n protected _prepareRejoin() {\n this._componentDatum[DefaultKey] += 1;\n }\n\n protected evaluateJoin(data: any[]) {\n this.spec.key = DefaultKey;\n\n if (data) {\n (data as any)[DefaultKey] = this._componentDatum[DefaultKey];\n\n this._componentDatum = data;\n } else {\n this._componentDatum = { [DefaultKey]: this._componentDatum[DefaultKey] };\n }\n\n // component mark do not support data join\n return super.evaluateJoin([this._componentDatum]);\n }\n\n protected _updateComponentEncoders() {\n this._encoders = this.spec.encode;\n }\n\n protected _getEncoders() {\n return this._encoders ?? {};\n }\n}\n"]}
|
|
@@ -87,10 +87,6 @@ export class AttributeAnimate extends ACustomAnimate {
|
|
|
87
87
|
return this.to;
|
|
88
88
|
}
|
|
89
89
|
onBind() {
|
|
90
|
-
var _a, _b;
|
|
91
|
-
this.from = null !== (_a = this.from) && void 0 !== _a ? _a : {}, this.to = null !== (_b = this.to) && void 0 !== _b ? _b : {};
|
|
92
|
-
}
|
|
93
|
-
onStart() {
|
|
94
90
|
var _a;
|
|
95
91
|
const excludedChannelMap = null !== (_a = this.target.constructor.NOWORK_ANIMATE_ATTR) && void 0 !== _a ? _a : NOWORK_ANIMATE_ATTR, excludedChannels = Object.keys(excludedChannelMap).filter((channel => 0 !== excludedChannelMap[channel]));
|
|
96
92
|
this.subAnimate.animate.preventAttrs(excludedChannels);
|
|
@@ -99,13 +95,21 @@ export class AttributeAnimate extends ACustomAnimate {
|
|
|
99
95
|
excludedChannels.includes(k) ? (from[k] = to[k], this.from[k] = to[k]) : isNil(from[k]) ? from[k] = this.target.getComputedAttribute(k) : animatedChannels.push(k);
|
|
100
96
|
})), this.target.animates.forEach((a => {
|
|
101
97
|
a !== this.subAnimate.animate && a.preventAttrs(animatedChannels);
|
|
102
|
-
})), this.
|
|
103
|
-
|
|
104
|
-
|
|
105
|
-
|
|
106
|
-
|
|
107
|
-
|
|
108
|
-
|
|
98
|
+
})), this._fromAttribute = from, this._toAttribute = to;
|
|
99
|
+
}
|
|
100
|
+
onStart() {
|
|
101
|
+
if (this._fromAttribute) {
|
|
102
|
+
const from = {};
|
|
103
|
+
Object.keys(this._fromAttribute).forEach((key => {
|
|
104
|
+
this.subAnimate.animate.validAttr(key) && (from[key] = this._fromAttribute[key]);
|
|
105
|
+
})), this.target.setAttributes(from, !1, {
|
|
106
|
+
type: AttributeUpdateType.ANIMATE_UPDATE,
|
|
107
|
+
animationState: {
|
|
108
|
+
ratio: 0,
|
|
109
|
+
end: !1
|
|
110
|
+
}
|
|
111
|
+
});
|
|
112
|
+
}
|
|
109
113
|
}
|
|
110
114
|
onEnd() {
|
|
111
115
|
if (this._toAttribute) {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../src/graph/animation/attribute.ts"],"names":[],"mappings":"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","file":"attribute.js","sourcesContent":["import type { EasingType, IGraphic } from '@visactor/vrender-core';\n// eslint-disable-next-line no-duplicate-imports\nimport { ACustomAnimate, AttributeUpdateType, NOWORK_ANIMATE_ATTR } from '@visactor/vrender-core';\nimport { isArray, isFunction, isNil, isObject, isValid } from '@visactor/vutils';\nimport type {\n IAnimationChannelInterpolator,\n IAnimationEffect,\n IAnimationParameters,\n IElement,\n IGlyphElement,\n IParsedAnimationAttrs\n} from '../../types';\nimport { isValidPointsChannel } from '../attributes/helpers';\nimport { Factory } from '../../core/factory';\n\nconst transformAnimationAttributes = (attributes: IParsedAnimationAttrs, element: IElement): IParsedAnimationAttrs => {\n if (!attributes) {\n return null;\n }\n\n if (attributes.from) {\n const from = attributes.from;\n const fromKeys = Object.keys(from);\n fromKeys.forEach(channel => {\n if (isNil(from[channel])) {\n delete from[channel];\n }\n });\n const computePoints = isValidPointsChannel(fromKeys, element.mark.markType) && !isValid(from.segments);\n if (computePoints) {\n const items = element.items.map(item => Object.assign({}, item, { nextAttrs: Object.assign({}, from) }));\n attributes.from = element.transformElementItems(items, element.mark.markType, computePoints);\n }\n }\n if (attributes.to) {\n const to = attributes.to;\n const toKeys = Object.keys(to);\n toKeys.forEach(channel => {\n if (isNil(to[channel])) {\n delete to[channel];\n }\n });\n const computePoints = isValidPointsChannel(toKeys, element.mark.markType) && !isValid(to.segments);\n if (computePoints) {\n const items = element.items.map(item => Object.assign({}, item, { nextAttrs: Object.assign({}, to) }));\n attributes.to = element.transformElementItems(items, element.mark.markType, computePoints);\n }\n }\n\n return attributes;\n};\n\nexport function typeAnimationAttributes(\n element: IElement,\n effect: IAnimationEffect,\n animationParameters: IAnimationParameters,\n parameters: any\n): IParsedAnimationAttrs {\n // const parameters =\n const options = isFunction(effect.options)\n ? effect.options.call(null, element.getDatum(), element, parameters)\n : effect.options;\n if (!effect.type || !Factory.getAnimationType(effect.type)) {\n return null;\n }\n const attributes = Factory.getAnimationType(effect.type)(element as IGlyphElement, options, animationParameters);\n\n return transformAnimationAttributes(attributes, element);\n}\n\nconst parseChannelValue = (\n element: IElement,\n channel: string,\n channelValue: any,\n animationParameters: IAnimationParameters,\n parameters: any\n) => {\n return isFunction(channelValue) ? channelValue(element.getDatum(), element, parameters) : channelValue;\n};\n\nexport function channelAnimationAttributes(\n element: IElement,\n effect: IAnimationEffect,\n animationParameters: IAnimationParameters,\n parameters: any\n): IParsedAnimationAttrs {\n const channel = effect.channel;\n let attributes: IParsedAnimationAttrs = null;\n\n if (isArray(channel)) {\n attributes = channel.reduce(\n (res, key) => {\n res.from[key] = element.getGraphicAttribute(key, true);\n res.to[key] = element.getGraphicAttribute(key, false);\n return res;\n },\n { from: {}, to: {} }\n );\n } else if (isObject(channel)) {\n attributes = Object.keys(channel).reduce(\n (res, key) => {\n const hasFrom = !isNil(channel[key]?.from);\n const hasTo = !isNil(channel[key]?.to);\n\n if (hasFrom || hasTo) {\n res.from[key] = hasFrom\n ? parseChannelValue(element, key, channel[key].from, animationParameters, parameters)\n : undefined;\n res.to[key] = hasTo\n ? parseChannelValue(element, key, channel[key].to, animationParameters, parameters)\n : element.getGraphicAttribute(key, false);\n }\n\n return res;\n },\n { from: {}, to: {} }\n );\n }\n\n return transformAnimationAttributes(attributes, element);\n}\n\nexport class CustomInterpolator extends ACustomAnimate<any> {\n private _element: IElement;\n private _interpolator?: IAnimationChannelInterpolator;\n\n constructor(\n from: any,\n to: any,\n duration: number,\n easing: EasingType,\n params: { interpolator: IAnimationChannelInterpolator; element: IElement; parameters?: any }\n ) {\n super(from, to, duration, easing, params);\n this._interpolator = params?.interpolator;\n this._element = params?.element;\n }\n\n onBind() {\n this.from = this.from ?? {};\n this.to = this.to ?? {};\n }\n\n getEndProps(): void | Record<string, any> {\n return this.to;\n }\n\n onUpdate(end: boolean, ratio: number, out: Record<string, any>): void {\n if (!this._interpolator || !this._element) {\n return;\n }\n this._interpolator.call(\n this,\n ratio,\n this.from,\n this.to,\n out,\n this._element.getDatum(),\n this._element,\n this.params.parameters\n );\n }\n}\n\nexport class AttributeAnimate extends ACustomAnimate<any> {\n declare target: IGraphic;\n\n private _fromAttribute: any;\n private _toAttribute: any;\n\n getEndProps(): Record<string, any> {\n return this.to;\n }\n\n onBind() {\n this.from = this.from ?? {};\n this.to = this.to ?? {};\n }\n\n onStart(): void {\n const excludedChannelMap = (this.target.constructor as any).NOWORK_ANIMATE_ATTR ?? NOWORK_ANIMATE_ATTR;\n const excludedChannels = Object.keys(excludedChannelMap).filter(channel => excludedChannelMap[channel] !== 0);\n this.subAnimate.animate.preventAttrs(excludedChannels);\n\n const from = Object.assign({}, this.from);\n const to = Object.assign({}, this.to);\n const animatedChannels: string[] = [];\n Object.keys(to).forEach(k => {\n if (excludedChannels.includes(k)) {\n from[k] = to[k];\n this.from[k] = to[k];\n } else if (isNil(from[k])) {\n from[k] = this.target.getComputedAttribute(k);\n } else {\n animatedChannels.push(k);\n }\n // if (this.to[k] === from[k]) {\n // delete from[k];\n // }\n });\n\n this.target.animates.forEach(a => {\n if (a !== this.subAnimate.animate) {\n a.preventAttrs(animatedChannels);\n }\n });\n\n this.target.setAttributes(from, false, {\n type: AttributeUpdateType.ANIMATE_UPDATE,\n animationState: { ratio: 0, end: false }\n });\n this._fromAttribute = from;\n this._toAttribute = to;\n }\n\n onEnd(): void {\n if (this._toAttribute) {\n const out = {};\n\n Object.keys(this._toAttribute).forEach(key => {\n if (this.subAnimate.animate.validAttr(key)) {\n out[key] = this._toAttribute[key];\n }\n });\n\n this.target.setAttributes(out, false, {\n type: AttributeUpdateType.ANIMATE_END\n });\n }\n }\n\n update(end: boolean, ratio: number, out: Record<string, any>): void {\n if (this.updateCount === 0) {\n this.onFirstRun();\n }\n this.updateCount += 1;\n\n // Hack: waiting for canopus to remove invalid key when updating\n const lastProps = this.step.getLastProps();\n Object.keys(lastProps).forEach(key => {\n if (this.subAnimate.animate.validAttr(key)) {\n out[key] = lastProps[key];\n }\n });\n this.onUpdate(end, ratio, out);\n if (end) {\n this.onEnd();\n }\n }\n\n onUpdate(end: boolean, ratio: number, out: Record<string, any>): void {\n this.target.stepInterpolate(\n this.subAnimate,\n this.subAnimate.animate,\n out,\n this.step,\n ratio,\n end,\n this._toAttribute,\n this._fromAttribute\n );\n }\n}\n"]}
|
|
1
|
+
{"version":3,"sources":["../src/graph/animation/attribute.ts"],"names":[],"mappings":"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","file":"attribute.js","sourcesContent":["import type { EasingType, IGraphic } from '@visactor/vrender-core';\n// eslint-disable-next-line no-duplicate-imports\nimport { ACustomAnimate, AttributeUpdateType, NOWORK_ANIMATE_ATTR } from '@visactor/vrender-core';\nimport { isArray, isFunction, isNil, isObject, isValid } from '@visactor/vutils';\nimport type {\n IAnimationChannelInterpolator,\n IAnimationEffect,\n IAnimationParameters,\n IElement,\n IGlyphElement,\n IParsedAnimationAttrs\n} from '../../types';\nimport { isValidPointsChannel } from '../attributes/helpers';\nimport { Factory } from '../../core/factory';\n\nconst transformAnimationAttributes = (attributes: IParsedAnimationAttrs, element: IElement): IParsedAnimationAttrs => {\n if (!attributes) {\n return null;\n }\n\n if (attributes.from) {\n const from = attributes.from;\n const fromKeys = Object.keys(from);\n fromKeys.forEach(channel => {\n if (isNil(from[channel])) {\n delete from[channel];\n }\n });\n const computePoints = isValidPointsChannel(fromKeys, element.mark.markType) && !isValid(from.segments);\n if (computePoints) {\n const items = element.items.map(item => Object.assign({}, item, { nextAttrs: Object.assign({}, from) }));\n attributes.from = element.transformElementItems(items, element.mark.markType, computePoints);\n }\n }\n if (attributes.to) {\n const to = attributes.to;\n const toKeys = Object.keys(to);\n toKeys.forEach(channel => {\n if (isNil(to[channel])) {\n delete to[channel];\n }\n });\n const computePoints = isValidPointsChannel(toKeys, element.mark.markType) && !isValid(to.segments);\n if (computePoints) {\n const items = element.items.map(item => Object.assign({}, item, { nextAttrs: Object.assign({}, to) }));\n attributes.to = element.transformElementItems(items, element.mark.markType, computePoints);\n }\n }\n\n return attributes;\n};\n\nexport function typeAnimationAttributes(\n element: IElement,\n effect: IAnimationEffect,\n animationParameters: IAnimationParameters,\n parameters: any\n): IParsedAnimationAttrs {\n // const parameters =\n const options = isFunction(effect.options)\n ? effect.options.call(null, element.getDatum(), element, parameters)\n : effect.options;\n if (!effect.type || !Factory.getAnimationType(effect.type)) {\n return null;\n }\n const attributes = Factory.getAnimationType(effect.type)(element as IGlyphElement, options, animationParameters);\n\n return transformAnimationAttributes(attributes, element);\n}\n\nconst parseChannelValue = (\n element: IElement,\n channel: string,\n channelValue: any,\n animationParameters: IAnimationParameters,\n parameters: any\n) => {\n return isFunction(channelValue) ? channelValue(element.getDatum(), element, parameters) : channelValue;\n};\n\nexport function channelAnimationAttributes(\n element: IElement,\n effect: IAnimationEffect,\n animationParameters: IAnimationParameters,\n parameters: any\n): IParsedAnimationAttrs {\n const channel = effect.channel;\n let attributes: IParsedAnimationAttrs = null;\n\n if (isArray(channel)) {\n attributes = channel.reduce(\n (res, key) => {\n res.from[key] = element.getGraphicAttribute(key, true);\n res.to[key] = element.getGraphicAttribute(key, false);\n return res;\n },\n { from: {}, to: {} }\n );\n } else if (isObject(channel)) {\n attributes = Object.keys(channel).reduce(\n (res, key) => {\n const hasFrom = !isNil(channel[key]?.from);\n const hasTo = !isNil(channel[key]?.to);\n\n if (hasFrom || hasTo) {\n res.from[key] = hasFrom\n ? parseChannelValue(element, key, channel[key].from, animationParameters, parameters)\n : undefined;\n res.to[key] = hasTo\n ? parseChannelValue(element, key, channel[key].to, animationParameters, parameters)\n : element.getGraphicAttribute(key, false);\n }\n\n return res;\n },\n { from: {}, to: {} }\n );\n }\n\n return transformAnimationAttributes(attributes, element);\n}\n\nexport class CustomInterpolator extends ACustomAnimate<any> {\n private _element: IElement;\n private _interpolator?: IAnimationChannelInterpolator;\n\n constructor(\n from: any,\n to: any,\n duration: number,\n easing: EasingType,\n params: { interpolator: IAnimationChannelInterpolator; element: IElement; parameters?: any }\n ) {\n super(from, to, duration, easing, params);\n this._interpolator = params?.interpolator;\n this._element = params?.element;\n }\n\n onBind() {\n this.from = this.from ?? {};\n this.to = this.to ?? {};\n }\n\n getEndProps(): void | Record<string, any> {\n return this.to;\n }\n\n onUpdate(end: boolean, ratio: number, out: Record<string, any>): void {\n if (!this._interpolator || !this._element) {\n return;\n }\n this._interpolator.call(\n this,\n ratio,\n this.from,\n this.to,\n out,\n this._element.getDatum(),\n this._element,\n this.params.parameters\n );\n }\n}\n\nexport class AttributeAnimate extends ACustomAnimate<any> {\n declare target: IGraphic;\n\n private _fromAttribute: any;\n private _toAttribute: any;\n\n getEndProps(): Record<string, any> {\n return this.to;\n }\n\n onBind() {\n const excludedChannelMap = (this.target.constructor as any).NOWORK_ANIMATE_ATTR ?? NOWORK_ANIMATE_ATTR;\n const excludedChannels = Object.keys(excludedChannelMap).filter(channel => excludedChannelMap[channel] !== 0);\n this.subAnimate.animate.preventAttrs(excludedChannels);\n\n const from = Object.assign({}, this.from);\n const to = Object.assign({}, this.to);\n const animatedChannels: string[] = [];\n Object.keys(to).forEach(k => {\n if (excludedChannels.includes(k)) {\n from[k] = to[k];\n this.from[k] = to[k];\n } else if (isNil(from[k])) {\n from[k] = this.target.getComputedAttribute(k);\n } else {\n animatedChannels.push(k);\n }\n });\n\n // prevent attributes at the animation invoking time\n this.target.animates.forEach(a => {\n if (a !== this.subAnimate.animate) {\n a.preventAttrs(animatedChannels);\n }\n });\n\n this._fromAttribute = from;\n this._toAttribute = to;\n }\n\n onStart(): void {\n if (this._fromAttribute) {\n const from = {};\n\n // apply attribute which has not been prevented\n Object.keys(this._fromAttribute).forEach(key => {\n if (this.subAnimate.animate.validAttr(key)) {\n from[key] = this._fromAttribute[key];\n }\n });\n\n this.target.setAttributes(from, !1, {\n type: AttributeUpdateType.ANIMATE_UPDATE,\n animationState: {\n ratio: 0,\n end: !1\n }\n });\n }\n }\n\n onEnd(): void {\n if (this._toAttribute) {\n const out = {};\n\n // apply attribute which has not been prevented\n Object.keys(this._toAttribute).forEach(key => {\n if (this.subAnimate.animate.validAttr(key)) {\n out[key] = this._toAttribute[key];\n }\n });\n\n this.target.setAttributes(out, false, {\n type: AttributeUpdateType.ANIMATE_END\n });\n }\n }\n\n update(end: boolean, ratio: number, out: Record<string, any>): void {\n if (this.updateCount === 0) {\n this.onFirstRun();\n }\n this.updateCount += 1;\n\n // Hack: waiting for canopus to remove invalid key when updating\n const lastProps = this.step.getLastProps();\n Object.keys(lastProps).forEach(key => {\n if (this.subAnimate.animate.validAttr(key)) {\n out[key] = lastProps[key];\n }\n });\n this.onUpdate(end, ratio, out);\n if (end) {\n this.onEnd();\n }\n }\n\n onUpdate(end: boolean, ratio: number, out: Record<string, any>): void {\n this.target.stepInterpolate(\n this.subAnimate,\n this.subAnimate.animate,\n out,\n this.step,\n ratio,\n end,\n this._toAttribute,\n this._fromAttribute\n );\n }\n}\n"]}
|
|
@@ -101,7 +101,8 @@ export default class CanvasRenderer {
|
|
|
101
101
|
optimize: viewOptions.optimize,
|
|
102
102
|
ticker: viewOptions.ticker,
|
|
103
103
|
supportsTouchEvents: viewOptions.supportsTouchEvents,
|
|
104
|
-
supportsPointerEvents: viewOptions.supportsPointerEvents
|
|
104
|
+
supportsPointerEvents: viewOptions.supportsPointerEvents,
|
|
105
|
+
ReactDOM: viewOptions.ReactDOM
|
|
105
106
|
});
|
|
106
107
|
(null === (_b = viewOptions.options3d) || void 0 === _b ? void 0 : _b.enable) && stage.set3dOptions(viewOptions.options3d),
|
|
107
108
|
stage.enableIncrementalAutoRender(), this._viewBox = viewOptions.viewBox, this._view.emit(HOOK_EVENT.AFTER_CREATE_VRENDER_STAGE),
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../src/graph/canvas-renderer.ts"],"names":[],"mappings":"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","file":"canvas-renderer.js","sourcesContent":["import type { IBoundsLike } from '@visactor/vutils';\n// eslint-disable-next-line no-duplicate-imports\nimport { isObject } from '@visactor/vutils';\nimport type { IEventTarget, IColor, ILayer, Stage } from '@visactor/vrender-core';\n// eslint-disable-next-line no-duplicate-imports\nimport { createStage, waitForAllSubLayers } from '@visactor/vrender-core';\nimport { DragNDrop, Gesture } from '@visactor/vrender-kits';\nimport type { IViewOptions, IView, IMark, IViewEventConfig } from '../types';\nimport type { IRenderer } from '../types/renderer';\nimport { HOOK_EVENT } from './enums';\n\nexport default class CanvasRenderer implements IRenderer {\n private _width: number;\n private _height: number;\n\n private _view: IView;\n private _viewOptions: IViewOptions;\n private _eventConfig: IViewEventConfig;\n private _stage: Stage;\n private _layer: ILayer;\n private _dragController: DragNDrop;\n private _gestureController: Gesture;\n private _viewBox: IBoundsLike;\n\n constructor(view: IView) {\n this._view = view;\n }\n\n initialize(width: number, height: number, options: IViewOptions, eventConfig: IViewEventConfig) {\n this._width = width;\n this._height = height;\n this._viewOptions = options;\n this._eventConfig = eventConfig;\n\n this.initStage();\n\n // this method will invoke resize to size the canvas appropriately\n return this;\n }\n\n stage() {\n return this._stage ?? null;\n }\n\n gestureController() {\n return this._gestureController ?? null;\n }\n\n canvas() {\n if (this._stage) {\n return this._stage.window.getNativeHandler().nativeCanvas;\n }\n return null;\n }\n\n context() {\n if (this._stage) {\n return this._stage.window.getContext().nativeContext;\n }\n return null;\n }\n\n combineIncrementalLayers() {\n if (this._stage) {\n waitForAllSubLayers(this._stage as any).then(() => {\n // stage might be null in current tick\n if (this._stage) {\n this._stage.defaultLayer.combineSubLayer();\n }\n });\n }\n return this;\n }\n\n background(color: IColor) {\n if (this._stage) {\n this._stage.background = color;\n return this;\n }\n }\n\n setDpr(resolution: number, redraw: boolean) {\n this._stage?.setDpr?.(resolution);\n if (redraw) {\n this.renderNextFrame();\n }\n return this;\n }\n\n shouldResize(width: number, height: number) {\n return width !== this._width || height !== this._height;\n }\n\n resize(width: number, height: number) {\n this._view.emit(HOOK_EVENT.BEFORE_STAGE_RESIZE);\n if (this.shouldResize(width, height)) {\n this._width = width;\n this._height = height;\n this._stage && this._stage.resize(width, height);\n }\n\n this._view.emit(HOOK_EVENT.AFTER_STAGE_RESIZE);\n\n return this;\n }\n\n setViewBox(viewBox: IBoundsLike, rerender: boolean = true) {\n if (!this._stage) {\n return this;\n }\n if (\n viewBox &&\n (!this._viewBox ||\n viewBox.x1 !== this._viewBox.x1 ||\n viewBox.x2 !== this._viewBox.x2 ||\n viewBox.y1 !== this._viewBox.y1 ||\n viewBox.y2 !== this._viewBox.y2)\n ) {\n this._viewBox = viewBox;\n\n // FIXME: vRender\n this._stage.setViewBox(viewBox.x1, viewBox.y1, viewBox.x2 - viewBox.x1, viewBox.y2 - viewBox.y1, rerender);\n }\n return this;\n }\n\n render(immediately: boolean = false) {\n this._view.emit(HOOK_EVENT.BEFORE_VRENDER_DRAW);\n\n this.initStage();\n\n // disable dirty bounds when render is called\n this._stage.disableDirtyBounds();\n this._stage.afterNextRender(this.handleAfterNextRender);\n\n // render immediately and skip render in next frame\n if (immediately) {\n this._stage.render();\n\n this._view.emit(HOOK_EVENT.AFTER_VRENDER_DRAW);\n }\n return this;\n }\n\n renderNextFrame() {\n this.initStage();\n\n this._stage.renderNextFrame();\n\n return this;\n }\n\n toCanvas() {\n if (this._stage) {\n return this._stage.toCanvas();\n }\n return null;\n }\n\n preventRender(tag: boolean) {\n if (this._stage) {\n this._stage.preventRender(tag);\n }\n }\n\n // toImageData() {\n // if (this._stage) {\n // return this._stage.toImageData();\n // }\n // return null;\n // }\n\n release() {\n this._view.traverseMarkTree((mark: IMark) => {\n mark.release();\n });\n\n if (this._dragController) {\n this._dragController.release();\n }\n if (this._gestureController) {\n this._gestureController.release();\n }\n\n if (this._stage !== (this._viewOptions?.stage as unknown as Stage)) {\n // don't release the stage created by outside\n this._stage.release();\n }\n\n this._stage = null;\n this._layer = null;\n this._dragController = null;\n this._gestureController = null;\n }\n\n private createStage() {\n this._view.emit(HOOK_EVENT.BEFORE_CREATE_VRENDER_STAGE);\n\n const viewOptions = this._viewOptions;\n\n const stage =\n (viewOptions.stage as unknown as Stage) ??\n createStage({\n width: this._width,\n height: this._height,\n renderStyle: viewOptions.renderStyle,\n viewBox: viewOptions.viewBox,\n dpr: viewOptions.dpr,\n canvas: viewOptions.renderCanvas,\n canvasControled: viewOptions.canvasControled,\n container: viewOptions.container,\n title: viewOptions.rendererTitle,\n beforeRender: viewOptions.beforeRender,\n afterRender: viewOptions.afterRender,\n disableDirtyBounds: true,\n autoRender: true,\n pluginList: viewOptions.pluginList,\n enableHtmlAttribute: viewOptions.enableHtmlAttribute,\n optimize: viewOptions.optimize,\n ticker: viewOptions.ticker,\n supportsTouchEvents: viewOptions.supportsTouchEvents,\n supportsPointerEvents: viewOptions.supportsPointerEvents\n });\n\n if (viewOptions.options3d?.enable) {\n stage.set3dOptions(viewOptions.options3d);\n }\n\n stage.enableIncrementalAutoRender();\n\n this._viewBox = viewOptions.viewBox;\n this._view.emit(HOOK_EVENT.AFTER_CREATE_VRENDER_STAGE);\n\n this._view.emit(HOOK_EVENT.BEFORE_CREATE_VRENDER_LAYER);\n const layer = viewOptions.layer ?? (stage.defaultLayer as ILayer);\n this._view.emit(HOOK_EVENT.AFTER_CREATE_VRENDER_LAYER);\n\n if (this._eventConfig?.drag) {\n // 允许 drag 事件\n this._dragController = new DragNDrop(stage as unknown as IEventTarget);\n }\n if (this._eventConfig?.gesture) {\n const gestureConfig = isObject(this._eventConfig.gesture) ? this._eventConfig.gesture : {};\n // 允许手势\n this._gestureController = new Gesture(stage as unknown as IEventTarget, gestureConfig);\n }\n\n return {\n stage,\n layer\n };\n }\n\n private initStage() {\n if (!this._stage) {\n const { stage, layer } = this.createStage();\n\n this._stage = stage;\n this._layer = layer;\n\n const background = this._view.background();\n this.background(background);\n }\n }\n\n private handleAfterNextRender = () => {\n if (this._stage && !this._viewOptions.disableDirtyBounds) {\n this._stage.enableDirtyBounds();\n }\n\n this._view.emit(HOOK_EVENT.AFTER_VRENDER_DRAW);\n this._view.emit(HOOK_EVENT.AFTER_VRENDER_NEXT_RENDER);\n };\n}\n"]}
|
|
1
|
+
{"version":3,"sources":["../src/graph/canvas-renderer.ts"],"names":[],"mappings":"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","file":"canvas-renderer.js","sourcesContent":["import type { IBoundsLike } from '@visactor/vutils';\n// eslint-disable-next-line no-duplicate-imports\nimport { isObject } from '@visactor/vutils';\nimport type { IEventTarget, IColor, ILayer, Stage } from '@visactor/vrender-core';\n// eslint-disable-next-line no-duplicate-imports\nimport { createStage, waitForAllSubLayers } from '@visactor/vrender-core';\nimport { DragNDrop, Gesture } from '@visactor/vrender-kits';\nimport type { IViewOptions, IView, IMark, IViewEventConfig } from '../types';\nimport type { IRenderer } from '../types/renderer';\nimport { HOOK_EVENT } from './enums';\n\nexport default class CanvasRenderer implements IRenderer {\n private _width: number;\n private _height: number;\n\n private _view: IView;\n private _viewOptions: IViewOptions;\n private _eventConfig: IViewEventConfig;\n private _stage: Stage;\n private _layer: ILayer;\n private _dragController: DragNDrop;\n private _gestureController: Gesture;\n private _viewBox: IBoundsLike;\n\n constructor(view: IView) {\n this._view = view;\n }\n\n initialize(width: number, height: number, options: IViewOptions, eventConfig: IViewEventConfig) {\n this._width = width;\n this._height = height;\n this._viewOptions = options;\n this._eventConfig = eventConfig;\n\n this.initStage();\n\n // this method will invoke resize to size the canvas appropriately\n return this;\n }\n\n stage() {\n return this._stage ?? null;\n }\n\n gestureController() {\n return this._gestureController ?? null;\n }\n\n canvas() {\n if (this._stage) {\n return this._stage.window.getNativeHandler().nativeCanvas;\n }\n return null;\n }\n\n context() {\n if (this._stage) {\n return this._stage.window.getContext().nativeContext;\n }\n return null;\n }\n\n combineIncrementalLayers() {\n if (this._stage) {\n waitForAllSubLayers(this._stage as any).then(() => {\n // stage might be null in current tick\n if (this._stage) {\n this._stage.defaultLayer.combineSubLayer();\n }\n });\n }\n return this;\n }\n\n background(color: IColor) {\n if (this._stage) {\n this._stage.background = color;\n return this;\n }\n }\n\n setDpr(resolution: number, redraw: boolean) {\n this._stage?.setDpr?.(resolution);\n if (redraw) {\n this.renderNextFrame();\n }\n return this;\n }\n\n shouldResize(width: number, height: number) {\n return width !== this._width || height !== this._height;\n }\n\n resize(width: number, height: number) {\n this._view.emit(HOOK_EVENT.BEFORE_STAGE_RESIZE);\n if (this.shouldResize(width, height)) {\n this._width = width;\n this._height = height;\n this._stage && this._stage.resize(width, height);\n }\n\n this._view.emit(HOOK_EVENT.AFTER_STAGE_RESIZE);\n\n return this;\n }\n\n setViewBox(viewBox: IBoundsLike, rerender: boolean = true) {\n if (!this._stage) {\n return this;\n }\n if (\n viewBox &&\n (!this._viewBox ||\n viewBox.x1 !== this._viewBox.x1 ||\n viewBox.x2 !== this._viewBox.x2 ||\n viewBox.y1 !== this._viewBox.y1 ||\n viewBox.y2 !== this._viewBox.y2)\n ) {\n this._viewBox = viewBox;\n\n // FIXME: vRender\n this._stage.setViewBox(viewBox.x1, viewBox.y1, viewBox.x2 - viewBox.x1, viewBox.y2 - viewBox.y1, rerender);\n }\n return this;\n }\n\n render(immediately: boolean = false) {\n this._view.emit(HOOK_EVENT.BEFORE_VRENDER_DRAW);\n\n this.initStage();\n\n // disable dirty bounds when render is called\n this._stage.disableDirtyBounds();\n this._stage.afterNextRender(this.handleAfterNextRender);\n\n // render immediately and skip render in next frame\n if (immediately) {\n this._stage.render();\n\n this._view.emit(HOOK_EVENT.AFTER_VRENDER_DRAW);\n }\n return this;\n }\n\n renderNextFrame() {\n this.initStage();\n\n this._stage.renderNextFrame();\n\n return this;\n }\n\n toCanvas() {\n if (this._stage) {\n return this._stage.toCanvas();\n }\n return null;\n }\n\n preventRender(tag: boolean) {\n if (this._stage) {\n this._stage.preventRender(tag);\n }\n }\n\n // toImageData() {\n // if (this._stage) {\n // return this._stage.toImageData();\n // }\n // return null;\n // }\n\n release() {\n this._view.traverseMarkTree((mark: IMark) => {\n mark.release();\n });\n\n if (this._dragController) {\n this._dragController.release();\n }\n if (this._gestureController) {\n this._gestureController.release();\n }\n\n if (this._stage !== (this._viewOptions?.stage as unknown as Stage)) {\n // don't release the stage created by outside\n this._stage.release();\n }\n\n this._stage = null;\n this._layer = null;\n this._dragController = null;\n this._gestureController = null;\n }\n\n private createStage() {\n this._view.emit(HOOK_EVENT.BEFORE_CREATE_VRENDER_STAGE);\n\n const viewOptions = this._viewOptions;\n\n const stage =\n (viewOptions.stage as unknown as Stage) ??\n createStage({\n width: this._width,\n height: this._height,\n renderStyle: viewOptions.renderStyle,\n viewBox: viewOptions.viewBox,\n dpr: viewOptions.dpr,\n canvas: viewOptions.renderCanvas,\n canvasControled: viewOptions.canvasControled,\n container: viewOptions.container,\n title: viewOptions.rendererTitle,\n beforeRender: viewOptions.beforeRender,\n afterRender: viewOptions.afterRender,\n disableDirtyBounds: true,\n autoRender: true,\n pluginList: viewOptions.pluginList,\n enableHtmlAttribute: viewOptions.enableHtmlAttribute,\n optimize: viewOptions.optimize,\n ticker: viewOptions.ticker,\n supportsTouchEvents: viewOptions.supportsTouchEvents,\n supportsPointerEvents: viewOptions.supportsPointerEvents,\n ReactDOM: viewOptions.ReactDOM\n });\n\n if (viewOptions.options3d?.enable) {\n stage.set3dOptions(viewOptions.options3d);\n }\n\n stage.enableIncrementalAutoRender();\n\n this._viewBox = viewOptions.viewBox;\n this._view.emit(HOOK_EVENT.AFTER_CREATE_VRENDER_STAGE);\n\n this._view.emit(HOOK_EVENT.BEFORE_CREATE_VRENDER_LAYER);\n const layer = viewOptions.layer ?? (stage.defaultLayer as ILayer);\n this._view.emit(HOOK_EVENT.AFTER_CREATE_VRENDER_LAYER);\n\n if (this._eventConfig?.drag) {\n // 允许 drag 事件\n this._dragController = new DragNDrop(stage as unknown as IEventTarget);\n }\n if (this._eventConfig?.gesture) {\n const gestureConfig = isObject(this._eventConfig.gesture) ? this._eventConfig.gesture : {};\n // 允许手势\n this._gestureController = new Gesture(stage as unknown as IEventTarget, gestureConfig);\n }\n\n return {\n stage,\n layer\n };\n }\n\n private initStage() {\n if (!this._stage) {\n const { stage, layer } = this.createStage();\n\n this._stage = stage;\n this._layer = layer;\n\n const background = this._view.background();\n this.background(background);\n }\n }\n\n private handleAfterNextRender = () => {\n if (this._stage && !this._viewOptions.disableDirtyBounds) {\n this._stage.enableDirtyBounds();\n }\n\n this._view.emit(HOOK_EVENT.AFTER_VRENDER_DRAW);\n this._view.emit(HOOK_EVENT.AFTER_VRENDER_NEXT_RENDER);\n };\n}\n"]}
|
package/es/index.d.ts
CHANGED
package/es/index.js
CHANGED
package/es/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../src/index.ts"],"names":[],"mappings":"AACA,MAAM,CAAC,MAAM,OAAO,GAAG,QAAQ,CAAC;AAEhC,cAAc,SAAS,CAAC;AAExB,cAAc,gBAAgB,CAAC;AAE/B,OAAO,EAAE,IAAI,EAAE,MAAM,QAAQ,CAAC;AAC9B,OAAO,EAAE,KAAK,EAAE,aAAa,EAAE,MAAM,cAAc,CAAC;AACpD,OAAO,EAAE,UAAU,EAAE,kBAAkB,EAAE,MAAM,mBAAmB,CAAC;AACnE,OAAO,EAAE,iBAAiB,EAAE,kBAAkB,EAAE,MAAM,cAAc,CAAC;AACrE,OAAO,EAAE,WAAW,EAAE,MAAM,qBAAqB,CAAC;AAClD,cAAc,aAAa,CAAC;AAC5B,cAAc,SAAS,CAAC;AACxB,OAAO,EAAE,OAAO,EAAE,MAAM,gBAAgB,CAAC;AACzC,OAAO,EACL,cAAc,EACd,aAAa,EACb,cAAc,EACd,kBAAkB,EAClB,iBAAiB,EACjB,YAAY,EACZ,eAAe,EAChB,MAAM,kBAAkB,CAAC;AAE1B,OAAO,EAAE,YAAY,EAAE,MAAM,uBAAuB,CAAC;AAErD,cAAc,SAAS,CAAC;AACxB,cAAc,aAAa,CAAC;AAC5B,cAAc,cAAc,CAAC;AAC7B,cAAc,6BAA6B,CAAC;AAE5C,OAAO,EAAE,OAAO,EAAE,MAAM,wBAAwB,CAAC;AACjD,cAAc,OAAO,CAAC;AACtB,cAAc,gBAAgB,CAAC;AAC/B,cAAc,uBAAuB,CAAC;AACtC,cAAc,2BAA2B,CAAC;AAC1C,cAAc,sBAAsB,CAAC","file":"index.js","sourcesContent":["// -- Exports -----\nexport const version = \"0.12.
|
|
1
|
+
{"version":3,"sources":["../src/index.ts"],"names":[],"mappings":"AACA,MAAM,CAAC,MAAM,OAAO,GAAG,QAAQ,CAAC;AAEhC,cAAc,SAAS,CAAC;AAExB,cAAc,gBAAgB,CAAC;AAE/B,OAAO,EAAE,IAAI,EAAE,MAAM,QAAQ,CAAC;AAC9B,OAAO,EAAE,KAAK,EAAE,aAAa,EAAE,MAAM,cAAc,CAAC;AACpD,OAAO,EAAE,UAAU,EAAE,kBAAkB,EAAE,MAAM,mBAAmB,CAAC;AACnE,OAAO,EAAE,iBAAiB,EAAE,kBAAkB,EAAE,MAAM,cAAc,CAAC;AACrE,OAAO,EAAE,WAAW,EAAE,MAAM,qBAAqB,CAAC;AAClD,cAAc,aAAa,CAAC;AAC5B,cAAc,SAAS,CAAC;AACxB,OAAO,EAAE,OAAO,EAAE,MAAM,gBAAgB,CAAC;AACzC,OAAO,EACL,cAAc,EACd,aAAa,EACb,cAAc,EACd,kBAAkB,EAClB,iBAAiB,EACjB,YAAY,EACZ,eAAe,EAChB,MAAM,kBAAkB,CAAC;AAE1B,OAAO,EAAE,YAAY,EAAE,MAAM,uBAAuB,CAAC;AAErD,cAAc,SAAS,CAAC;AACxB,cAAc,aAAa,CAAC;AAC5B,cAAc,cAAc,CAAC;AAC7B,cAAc,6BAA6B,CAAC;AAE5C,OAAO,EAAE,OAAO,EAAE,MAAM,wBAAwB,CAAC;AACjD,cAAc,OAAO,CAAC;AACtB,cAAc,gBAAgB,CAAC;AAC/B,cAAc,uBAAuB,CAAC;AACtC,cAAc,2BAA2B,CAAC;AAC1C,cAAc,sBAAsB,CAAC","file":"index.js","sourcesContent":["// -- Exports -----\nexport const version = \"0.12.7\";\n\nexport * from './graph';\n\nexport * from './interactions';\n\nexport { View } from './view';\nexport { Scale, registerScale } from './view/scale';\nexport { Coordinate, registerCoordinate } from './view/coordinate';\nexport { parseFunctionType, invokeFunctionType } from './parse/util';\nexport { GrammarBase } from './view/grammar-base';\nexport * from './util/text';\nexport * from './types';\nexport { Factory } from './core/factory';\nexport {\n SIGNAL_AUTOFIT,\n SIGNAL_HEIGHT,\n SIGNAL_PADDING,\n SIGNAL_VIEW_HEIGHT,\n SIGNAL_VIEW_WIDTH,\n SIGNAL_WIDTH,\n SIGNAL_VIEW_BOX\n} from './view/constants';\n\nexport { ThemeManager } from './theme/theme-manager';\n\nexport * from './glyph';\nexport * from './component';\nexport * from './transforms';\nexport * from './graph/animation/animation';\n\nexport { vglobal } from '@visactor/vrender-core';\nexport * from './env';\nexport * from './interactions';\nexport * from './semantic-marks/cell';\nexport * from './semantic-marks/interval';\nexport * from './graph/mark/graphic';\n"]}
|
|
@@ -9,6 +9,7 @@ export declare abstract class BaseInteraction<T extends IBaseInteractionOptions>
|
|
|
9
9
|
type: string | string[];
|
|
10
10
|
handler: InteractionEventHandler;
|
|
11
11
|
}>;
|
|
12
|
+
getStartState(): string;
|
|
12
13
|
depend(grammar: IGrammarBase[] | IGrammarBase | string[] | string): void;
|
|
13
14
|
parameters(): any;
|
|
14
15
|
bind(): void;
|
package/es/interactions/base.js
CHANGED
|
@@ -4,6 +4,9 @@ export class BaseInteraction {
|
|
|
4
4
|
constructor(view, options) {
|
|
5
5
|
this.references = new Map, this.view = view, this.depend(null == options ? void 0 : options.dependency);
|
|
6
6
|
}
|
|
7
|
+
getStartState() {
|
|
8
|
+
return null;
|
|
9
|
+
}
|
|
7
10
|
depend(grammar) {
|
|
8
11
|
this.references.clear(), array(grammar).map((grammar => isString(grammar) ? this.view.getGrammarById(grammar) : grammar)).filter((ref => !isNil(ref))).forEach((ref => {
|
|
9
12
|
var _a;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../src/interactions/base.ts"],"names":[],"mappings":"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","file":"base.js","sourcesContent":["import { array, isArray, isNil, isString, isValid } from '@visactor/vutils';\nimport type {\n IBaseInteractionOptions,\n IElement,\n IGlyphElement,\n IGrammarBase,\n IView,\n InteractionEventHandler\n} from '../types';\n\nexport abstract class BaseInteraction<T extends IBaseInteractionOptions> {\n readonly view: IView;\n\n options: T;\n\n type: string;\n\n constructor(view: IView, options: T) {\n this.view = view;\n this.depend(options?.dependency);\n }\n\n references: Map<IGrammarBase, number> = new Map();\n\n protected abstract getEvents(): Array<{ type: string | string[]; handler: InteractionEventHandler }>;\n\n depend(grammar: IGrammarBase[] | IGrammarBase | string[] | string) {\n this.references.clear();\n array(grammar)\n .map(grammar => (isString(grammar) ? this.view.getGrammarById(grammar) : grammar))\n .filter(ref => !isNil(ref))\n .forEach(ref => {\n this.references.set(ref, (this.references.get(ref) ?? 0) + 1);\n });\n }\n\n parameters() {\n const params: any = {};\n this.references.forEach((count, ref) => {\n // upstream reference with no valid id will not be recorded in parameters\n if (isValid(ref.id())) {\n params[ref.id() as string] = ref.output();\n }\n });\n return params;\n }\n\n bind() {\n const events = this.getEvents();\n\n (events ?? []).forEach(evt => {\n if (evt.type && evt.handler) {\n if (isArray(evt.type)) {\n evt.type.forEach(evtType => {\n evtType && evtType !== 'none' && this.view.addEventListener(evtType, evt.handler);\n });\n } else {\n evt.type !== 'none' && this.view.addEventListener(evt.type, evt.handler);\n }\n }\n });\n }\n\n unbind() {\n // unbind events\n const events = this.getEvents();\n\n (events ?? []).forEach(evt => {\n if (evt.type && evt.handler) {\n if (isArray(evt.type)) {\n evt.type.forEach(evtType => {\n evtType && evtType !== 'none' && this.view.removeEventListener(evtType, evt.handler);\n });\n } else {\n evt.type !== 'none' && this.view.removeEventListener(evt.type, evt.handler);\n }\n }\n });\n }\n\n start(element: IElement | IGlyphElement) {\n // do nothing\n }\n\n reset(element?: IElement | IGlyphElement) {\n // do nothing\n }\n\n protected dispatchEvent(type: 'start' | 'reset' | 'update' | 'end', params: any) {\n this.view.emit(`${this.type}:${type}`, params);\n\n if (type === 'start' && this.options.onStart) {\n this.options.onStart(params);\n } else if (type === 'reset' && this.options.onReset) {\n this.options.onReset(params);\n } else if (type === 'update' && this.options.onUpdate) {\n this.options.onUpdate(params);\n } else if (type === 'end' && this.options.onEnd) {\n this.options.onEnd(params);\n }\n }\n}\n"]}
|
|
1
|
+
{"version":3,"sources":["../src/interactions/base.ts"],"names":[],"mappings":"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","file":"base.js","sourcesContent":["import { array, isArray, isNil, isString, isValid } from '@visactor/vutils';\nimport type {\n IBaseInteractionOptions,\n IElement,\n IGlyphElement,\n IGrammarBase,\n IView,\n InteractionEventHandler\n} from '../types';\n\nexport abstract class BaseInteraction<T extends IBaseInteractionOptions> {\n readonly view: IView;\n\n options: T;\n\n type: string;\n\n constructor(view: IView, options: T) {\n this.view = view;\n this.depend(options?.dependency);\n }\n\n references: Map<IGrammarBase, number> = new Map();\n\n protected abstract getEvents(): Array<{ type: string | string[]; handler: InteractionEventHandler }>;\n\n getStartState(): string {\n return null;\n }\n\n depend(grammar: IGrammarBase[] | IGrammarBase | string[] | string) {\n this.references.clear();\n array(grammar)\n .map(grammar => (isString(grammar) ? this.view.getGrammarById(grammar) : grammar))\n .filter(ref => !isNil(ref))\n .forEach(ref => {\n this.references.set(ref, (this.references.get(ref) ?? 0) + 1);\n });\n }\n\n parameters() {\n const params: any = {};\n this.references.forEach((count, ref) => {\n // upstream reference with no valid id will not be recorded in parameters\n if (isValid(ref.id())) {\n params[ref.id() as string] = ref.output();\n }\n });\n return params;\n }\n\n bind() {\n const events = this.getEvents();\n\n (events ?? []).forEach(evt => {\n if (evt.type && evt.handler) {\n if (isArray(evt.type)) {\n evt.type.forEach(evtType => {\n evtType && evtType !== 'none' && this.view.addEventListener(evtType, evt.handler);\n });\n } else {\n evt.type !== 'none' && this.view.addEventListener(evt.type, evt.handler);\n }\n }\n });\n }\n\n unbind() {\n // unbind events\n const events = this.getEvents();\n\n (events ?? []).forEach(evt => {\n if (evt.type && evt.handler) {\n if (isArray(evt.type)) {\n evt.type.forEach(evtType => {\n evtType && evtType !== 'none' && this.view.removeEventListener(evtType, evt.handler);\n });\n } else {\n evt.type !== 'none' && this.view.removeEventListener(evt.type, evt.handler);\n }\n }\n });\n }\n\n start(element: IElement | IGlyphElement) {\n // do nothing\n }\n\n reset(element?: IElement | IGlyphElement) {\n // do nothing\n }\n\n protected dispatchEvent(type: 'start' | 'reset' | 'update' | 'end', params: any) {\n this.view.emit(`${this.type}:${type}`, params);\n\n if (type === 'start' && this.options.onStart) {\n this.options.onStart(params);\n } else if (type === 'reset' && this.options.onReset) {\n this.options.onReset(params);\n } else if (type === 'update' && this.options.onUpdate) {\n this.options.onUpdate(params);\n } else if (type === 'end' && this.options.onEnd) {\n this.options.onEnd(params);\n }\n }\n}\n"]}
|