@visactor/vgrammar-core 0.12.7 → 0.12.8-alpha.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/cjs/core/factory.d.ts +0 -1
- package/cjs/core/factory.js +0 -3
- package/cjs/core/factory.js.map +1 -1
- package/cjs/graph/animation/attribute.js +11 -15
- package/cjs/graph/animation/attribute.js.map +1 -1
- package/cjs/graph/canvas-renderer.js +1 -2
- package/cjs/graph/canvas-renderer.js.map +1 -1
- package/cjs/graph/element.d.ts +2 -2
- package/cjs/graph/element.js +7 -1
- package/cjs/graph/element.js.map +1 -1
- package/cjs/index.d.ts +1 -1
- package/cjs/index.js +1 -1
- package/cjs/index.js.map +1 -1
- package/cjs/interactions/base-tooltip.js +1 -4
- package/cjs/interactions/base-tooltip.js.map +1 -1
- package/cjs/interactions/base.d.ts +0 -1
- package/cjs/interactions/base.js +4 -7
- package/cjs/interactions/base.js.map +1 -1
- package/cjs/interactions/brush-active.d.ts +0 -1
- package/cjs/interactions/brush-active.js +0 -3
- package/cjs/interactions/brush-active.js.map +1 -1
- package/cjs/interactions/brush-base.js +2 -4
- package/cjs/interactions/brush-base.js.map +1 -1
- package/cjs/interactions/brush-highlight.d.ts +0 -1
- package/cjs/interactions/brush-highlight.js +0 -3
- package/cjs/interactions/brush-highlight.js.map +1 -1
- package/cjs/interactions/crosshair.d.ts +2 -5
- package/cjs/interactions/crosshair.js +2 -4
- package/cjs/interactions/crosshair.js.map +1 -1
- package/cjs/interactions/dimension-tooltip.d.ts +2 -5
- package/cjs/interactions/element-active-by-legend.d.ts +0 -1
- package/cjs/interactions/element-active-by-legend.js +0 -3
- package/cjs/interactions/element-active-by-legend.js.map +1 -1
- package/cjs/interactions/element-active.d.ts +1 -2
- package/cjs/interactions/element-active.js +0 -3
- package/cjs/interactions/element-active.js.map +1 -1
- package/cjs/interactions/element-highlight-by-group.d.ts +1 -2
- package/cjs/interactions/element-highlight-by-group.js +0 -3
- package/cjs/interactions/element-highlight-by-group.js.map +1 -1
- package/cjs/interactions/element-highlight-by-key.d.ts +1 -2
- package/cjs/interactions/element-highlight-by-key.js +0 -3
- package/cjs/interactions/element-highlight-by-key.js.map +1 -1
- package/cjs/interactions/element-highlight-by-legend.d.ts +0 -1
- package/cjs/interactions/element-highlight-by-legend.js +0 -3
- package/cjs/interactions/element-highlight-by-legend.js.map +1 -1
- package/cjs/interactions/element-highlight-by-name.d.ts +2 -6
- package/cjs/interactions/element-highlight-by-name.js +0 -3
- package/cjs/interactions/element-highlight-by-name.js.map +1 -1
- package/cjs/interactions/element-highlight.d.ts +0 -1
- package/cjs/interactions/element-highlight.js +0 -3
- package/cjs/interactions/element-highlight.js.map +1 -1
- package/cjs/interactions/element-select.d.ts +0 -1
- package/cjs/interactions/element-select.js +2 -5
- package/cjs/interactions/element-select.js.map +1 -1
- package/cjs/interactions/tooltip.d.ts +2 -5
- package/cjs/interactions/view-drag.d.ts +0 -1
- package/cjs/interactions/view-drag.js +7 -7
- package/cjs/interactions/view-drag.js.map +1 -1
- package/cjs/interactions/view-navigation-base.d.ts +2 -2
- package/cjs/interactions/view-navigation-base.js +8 -11
- package/cjs/interactions/view-navigation-base.js.map +1 -1
- package/cjs/interactions/view-roam.d.ts +0 -3
- package/cjs/interactions/view-roam.js +8 -12
- package/cjs/interactions/view-roam.js.map +1 -1
- package/cjs/interactions/view-scroll.d.ts +0 -1
- package/cjs/interactions/view-scroll.js +3 -4
- package/cjs/interactions/view-scroll.js.map +1 -1
- package/cjs/interactions/view-utils.js +3 -8
- package/cjs/interactions/view-utils.js.map +1 -1
- package/cjs/interactions/view-zoom-mixin.js +3 -7
- package/cjs/interactions/view-zoom-mixin.js.map +1 -1
- package/cjs/interactions/view-zoom.d.ts +1 -2
- package/cjs/interactions/view-zoom.js +6 -6
- package/cjs/interactions/view-zoom.js.map +1 -1
- package/cjs/types/element.d.ts +2 -2
- package/cjs/types/element.js.map +1 -1
- package/cjs/types/interaction.d.ts +9 -14
- package/cjs/types/interaction.js.map +1 -1
- package/cjs/view/View.js +2 -3
- package/cjs/view/View.js.map +1 -1
- package/cjs/view/animate.js +3 -5
- package/cjs/view/animate.js.map +1 -1
- package/cjs/view/component.js +2 -5
- package/cjs/view/component.js.map +1 -1
- package/cjs/view/group.d.ts +1 -4
- package/cjs/view/group.js +4 -45
- package/cjs/view/group.js.map +1 -1
- package/cjs/view/mark.d.ts +3 -6
- package/cjs/view/mark.js +27 -20
- package/cjs/view/mark.js.map +1 -1
- package/es/core/factory.d.ts +0 -1
- package/es/core/factory.js +0 -3
- package/es/core/factory.js.map +1 -1
- package/es/graph/animation/attribute.js +11 -15
- package/es/graph/animation/attribute.js.map +1 -1
- package/es/graph/canvas-renderer.js +1 -2
- package/es/graph/canvas-renderer.js.map +1 -1
- package/es/graph/element.d.ts +2 -2
- package/es/graph/element.js +5 -1
- package/es/graph/element.js.map +1 -1
- package/es/index.d.ts +1 -1
- package/es/index.js +1 -1
- package/es/index.js.map +1 -1
- package/es/interactions/base-tooltip.js +1 -4
- package/es/interactions/base-tooltip.js.map +1 -1
- package/es/interactions/base.d.ts +0 -1
- package/es/interactions/base.js +4 -7
- package/es/interactions/base.js.map +1 -1
- package/es/interactions/brush-active.d.ts +0 -1
- package/es/interactions/brush-active.js +0 -3
- package/es/interactions/brush-active.js.map +1 -1
- package/es/interactions/brush-base.js +2 -4
- package/es/interactions/brush-base.js.map +1 -1
- package/es/interactions/brush-filter.js +1 -2
- package/es/interactions/brush-highlight.d.ts +0 -1
- package/es/interactions/brush-highlight.js +0 -3
- package/es/interactions/brush-highlight.js.map +1 -1
- package/es/interactions/crosshair.d.ts +2 -5
- package/es/interactions/crosshair.js +2 -4
- package/es/interactions/crosshair.js.map +1 -1
- package/es/interactions/dimension-tooltip.d.ts +2 -5
- package/es/interactions/element-active-by-legend.d.ts +0 -1
- package/es/interactions/element-active-by-legend.js +0 -3
- package/es/interactions/element-active-by-legend.js.map +1 -1
- package/es/interactions/element-active.d.ts +1 -2
- package/es/interactions/element-active.js +0 -3
- package/es/interactions/element-active.js.map +1 -1
- package/es/interactions/element-highlight-by-group.d.ts +1 -2
- package/es/interactions/element-highlight-by-group.js +2 -4
- package/es/interactions/element-highlight-by-group.js.map +1 -1
- package/es/interactions/element-highlight-by-key.d.ts +1 -2
- package/es/interactions/element-highlight-by-key.js +0 -3
- package/es/interactions/element-highlight-by-key.js.map +1 -1
- package/es/interactions/element-highlight-by-legend.d.ts +0 -1
- package/es/interactions/element-highlight-by-legend.js +0 -3
- package/es/interactions/element-highlight-by-legend.js.map +1 -1
- package/es/interactions/element-highlight-by-name.d.ts +2 -6
- package/es/interactions/element-highlight-by-name.js +0 -3
- package/es/interactions/element-highlight-by-name.js.map +1 -1
- package/es/interactions/element-highlight.d.ts +0 -1
- package/es/interactions/element-highlight.js +0 -3
- package/es/interactions/element-highlight.js.map +1 -1
- package/es/interactions/element-select.d.ts +0 -1
- package/es/interactions/element-select.js +1 -5
- package/es/interactions/element-select.js.map +1 -1
- package/es/interactions/index.js +1 -2
- package/es/interactions/legend-filter.js +1 -1
- package/es/interactions/player-filter.js +1 -1
- package/es/interactions/roll-up.js +1 -1
- package/es/interactions/scrollbar-filter.js +1 -1
- package/es/interactions/slider-filter.js +1 -1
- package/es/interactions/toggle-state-mixin.js +1 -1
- package/es/interactions/tooltip.d.ts +2 -5
- package/es/interactions/tooltip.js +1 -1
- package/es/interactions/view-drag.d.ts +0 -1
- package/es/interactions/view-drag.js +7 -7
- package/es/interactions/view-drag.js.map +1 -1
- package/es/interactions/view-navigation-base.d.ts +2 -2
- package/es/interactions/view-navigation-base.js +9 -11
- package/es/interactions/view-navigation-base.js.map +1 -1
- package/es/interactions/view-roam.d.ts +0 -3
- package/es/interactions/view-roam.js +8 -12
- package/es/interactions/view-roam.js.map +1 -1
- package/es/interactions/view-scroll.d.ts +0 -1
- package/es/interactions/view-scroll.js +3 -4
- package/es/interactions/view-scroll.js.map +1 -1
- package/es/interactions/view-utils.js +3 -6
- package/es/interactions/view-utils.js.map +1 -1
- package/es/interactions/view-zoom-mixin.js +3 -7
- package/es/interactions/view-zoom-mixin.js.map +1 -1
- package/es/interactions/view-zoom.d.ts +1 -2
- package/es/interactions/view-zoom.js +6 -6
- package/es/interactions/view-zoom.js.map +1 -1
- package/es/parse/coordinate.js +1 -1
- package/es/parse/event.js +1 -1
- package/es/parse/mark.js +1 -1
- package/es/parse/option.js +1 -1
- package/es/parse/scale.js +2 -1
- package/es/parse/transform.js +1 -1
- package/es/parse/util.js +1 -1
- package/es/parse/view.js +1 -1
- package/es/types/element.d.ts +2 -2
- package/es/types/element.js.map +1 -1
- package/es/types/interaction.d.ts +9 -14
- package/es/types/interaction.js.map +1 -1
- package/es/view/View.js +2 -3
- package/es/view/View.js.map +1 -1
- package/es/view/animate.js +3 -5
- package/es/view/animate.js.map +1 -1
- package/es/view/component.js +2 -5
- package/es/view/component.js.map +1 -1
- package/es/view/group.d.ts +1 -4
- package/es/view/group.js +4 -48
- package/es/view/group.js.map +1 -1
- package/es/view/mark.d.ts +3 -6
- package/es/view/mark.js +28 -21
- package/es/view/mark.js.map +1 -1
- package/package.json +8 -8
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../src/interactions/view-roam.ts"],"names":[],"mappings":"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","file":"view-roam.js","sourcesContent":["import { merge, throttle } from '@visactor/vutils';\nimport type {\n ViewRoamOptions,\n IView,\n InteractionEvent,\n IScale,\n IData,\n IViewZoomMixin,\n IViewScrollMixin,\n IViewDragMixin,\n InteractionEventHandler\n} from '../types';\nimport { ViewNavigationBase } from './view-navigation-base';\n\nexport interface ViewRoam\n extends Pick<IViewDragMixin, 'handleDragStart' | 'handleDragEnd' | 'handleDragUpdate'>,\n Pick<IViewScrollMixin, 'formatScrollEvent' | 'handleScrollStart' | 'handleScrollEnd'>,\n Pick<\n IViewZoomMixin,\n 'formatZoomEvent' | 'handleZoomStart' | 'handleZoomEnd' | 'handleZoomReset' | 'updateZoomRange'\n >,\n ViewNavigationBase<ViewRoamOptions> {}\n\nexport class ViewRoam extends ViewNavigationBase<ViewRoamOptions> {\n static type: string = 'view-roam';\n type: string = ViewRoam.type;\n\n static defaultOptions: ViewRoamOptions = {\n zoom: {\n realtime: true,\n enable: true,\n focus: true,\n trigger: 'wheel',\n endTrigger: 'pointerup',\n triggerOff: 'dblclick',\n rate: 1\n },\n scroll: {\n realtime: true,\n enable: false,\n reversed: false,\n trigger: 'wheel',\n endTrigger: 'pointerup'\n },\n drag: {\n realtime: true,\n enable: true,\n reversed: false,\n trigger: 'pointerdown',\n updateTrigger: 'pointermove',\n endTrigger: 'pointerup'\n },\n throttle: 100\n };\n\n protected _inited?: boolean;\n protected _lastScale: number;\n protected _scaleX: IScale;\n protected _scaleY: IScale;\n protected _data: IData;\n protected handleRoamZoomStart: (e: InteractionEvent) => void;\n protected handleRoamDragUpdate: (e: InteractionEvent) => void;\n protected handleRoamScrollStart: (e: InteractionEvent) => void;\n protected _isDragStarted?: boolean;\n protected _isScrollStarted?: boolean;\n protected _isZoomStarted?: boolean;\n\n constructor(view: IView, option?: ViewRoamOptions) {\n super(view, merge({}, ViewRoam.defaultOptions, option));\n this.handleRoamZoomStart = throttle(this.handleRoamZoomStartInner, this.options.throttle);\n this.handleRoamDragUpdate = throttle(this.handleRoamDragUpdateInner, this.options.throttle);\n this.handleRoamScrollStart = throttle(this.handleRoamScrollStartInner, this.options.throttle);\n }\n\n protected getEvents() {\n const events: Array<{ type: string; handler: InteractionEventHandler }> = [];\n\n if (this.options.zoom?.enable) {\n this.options.zoom.trigger && events.push({ type: this.options.zoom.trigger, handler: this.handleRoamZoomStart });\n this.options.zoom.endTrigger &&\n events.push({ type: this.options.zoom.endTrigger, handler: this.handleRoamZoomEnd });\n this.options.zoom.triggerOff &&\n events.push({ type: this.options.zoom.triggerOff, handler: this.handleRoamZoomReset });\n }\n\n if (this.options.scroll?.enable) {\n this.options.scroll.trigger &&\n events.push({ type: this.options.scroll.trigger, handler: this.handleRoamScrollStart });\n this.options.scroll.trigger &&\n events.push({ type: this.options.scroll.endTrigger, handler: this.handleRoamScrollEnd });\n }\n\n if (this.options.drag?.enable) {\n this.options.drag.trigger && events.push({ type: this.options.drag.trigger, handler: this.handleRoamDragStart });\n this.options.drag.updateTrigger &&\n events.push({ type: this.options.drag.updateTrigger, handler: this.handleRoamDragUpdate });\n this.options.drag.endTrigger &&\n events.push({ type: this.options.drag.endTrigger, handler: this.handleRoamDragEnd });\n }\n\n return events;\n }\n\n handleRoamZoomStartInner = (e: InteractionEvent) => {\n this.formatZoomEvent(e);\n if (!e || (this.options.shouldStart && !this.options.shouldStart(e))) {\n return;\n }\n\n if (!this._inited) {\n this._initGrammars();\n }\n\n this._isZoomStarted = true;\n\n this.updateView('start', this.handleZoomStart(e, this._state, this.options.zoom), 'zoom', e);\n };\n\n handleRoamZoomEnd = (e: InteractionEvent) => {\n if (!this._isZoomStarted) {\n return;\n }\n\n this.formatZoomEvent(e);\n if (!e || (this.options.shouldEnd && !this.options.shouldEnd(e))) {\n return;\n }\n\n this.updateView('end', this.handleZoomEnd(e, this._state, this.options.zoom), 'zoom', e);\n this._isZoomStarted = false;\n };\n\n handleRoamZoomReset = (e: InteractionEvent) => {\n if (!this._isZoomStarted || !e || (this.options.shouldReset && !this.options.shouldReset(e))) {\n return;\n }\n this.updateView('reset', this.handleZoomReset(e, this._state, this.options.zoom), 'zoom', e);\n this._isZoomStarted = false;\n };\n\n handleRoamDragStart = (e: InteractionEvent) => {\n if (!e || (this.options.shouldStart && !this.options.shouldStart(e))) {\n return;\n }\n\n if (!this._inited) {\n this._initGrammars();\n }\n this._isDragStarted = true;\n\n this.updateView('start', this.handleDragStart(e, this._state, this.options.drag), 'drag', e);\n };\n\n handleRoamDragUpdateInner = (e: InteractionEvent) => {\n if (!this._isDragStarted || !e || (this.options.shouldUpdate && !this.options.shouldUpdate(e))) {\n return;\n }\n this.updateView('update', this.handleDragUpdate(e, this._state, this.options.drag), 'drag', e);\n };\n\n handleRoamDragEnd = (e: InteractionEvent) => {\n if (!this._isDragStarted || !e || (this.options.shouldEnd && !this.options.shouldEnd(e))) {\n return;\n }\n\n this.updateView('end', this.handleDragEnd(e, this._state, this.options.drag), 'drag', e);\n this._isDragStarted = false;\n };\n\n handleRoamScrollStartInner = (e: InteractionEvent) => {\n this.formatScrollEvent(e);\n if (!e || (this.options.shouldStart && !this.options.shouldStart(e))) {\n return;\n }\n\n if (!this._inited) {\n this._initGrammars();\n }\n this._isScrollStarted = true;\n\n this.updateView('start', this.handleScrollStart(e, this._state, this.options.scroll), 'scroll', e);\n };\n\n handleRoamScrollEnd = (e: InteractionEvent) => {\n if (!this._isScrollStarted) {\n return;\n }\n\n this.formatScrollEvent(e);\n if (!e || (this.options.shouldEnd && !this.options.shouldEnd(e))) {\n return;\n }\n\n this.updateView('end', this.handleScrollEnd(e, this._state, this.options.scroll), 'scroll', e);\n this._isScrollStarted = true;\n };\n}\n"]}
|
|
1
|
+
{"version":3,"sources":["../src/interactions/view-roam.ts"],"names":[],"mappings":"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","file":"view-roam.js","sourcesContent":["import { merge, throttle } from '@visactor/vutils';\nimport type {\n ViewRoamOptions,\n IView,\n InteractionEvent,\n IScale,\n IData,\n IViewZoomMixin,\n IViewScrollMixin,\n IViewDragMixin,\n InteractionEventHandler\n} from '../types';\nimport { ViewNavigationBase } from './view-navigation-base';\n\nexport interface ViewRoam\n extends Pick<IViewDragMixin, 'handleDragStart' | 'handleDragEnd' | 'handleDragUpdate'>,\n Pick<IViewScrollMixin, 'formatScrollEvent' | 'handleScrollStart' | 'handleScrollEnd'>,\n Pick<\n IViewZoomMixin,\n 'formatZoomEvent' | 'handleZoomStart' | 'handleZoomEnd' | 'handleZoomReset' | 'updateZoomRange'\n >,\n ViewNavigationBase<ViewRoamOptions> {}\n\nexport class ViewRoam extends ViewNavigationBase<ViewRoamOptions> {\n static type: string = 'view-roam';\n type: string = ViewRoam.type;\n\n static defaultOptions: ViewRoamOptions = {\n zoom: {\n realtime: true,\n enable: true,\n focus: true,\n trigger: 'wheel',\n endTrigger: 'pointerup',\n triggerOff: 'dblclick',\n rate: 1\n },\n scroll: {\n realtime: true,\n enable: false,\n reversed: false,\n trigger: 'wheel',\n endTrigger: 'pointerup'\n },\n drag: {\n realtime: true,\n enable: true,\n reversed: false,\n trigger: 'pointerdown',\n updateTrigger: 'pointermove',\n endTrigger: 'pointerup'\n },\n throttle: 100\n };\n\n protected _inited?: boolean;\n protected _lastScale: number;\n protected _scaleX: IScale;\n protected _scaleY: IScale;\n protected _data: IData;\n protected handleRoamZoomStart: (e: InteractionEvent) => void;\n protected handleRoamDragUpdate: (e: InteractionEvent) => void;\n protected handleRoamScrollStart: (e: InteractionEvent) => void;\n\n constructor(view: IView, option?: ViewRoamOptions) {\n super(view, merge({}, ViewRoam.defaultOptions, option));\n this.handleRoamZoomStart = throttle(this.handleRoamZoomStartInner, this.options.throttle);\n this.handleRoamDragUpdate = throttle(this.handleRoamDragUpdateInner, this.options.throttle);\n this.handleRoamScrollStart = throttle(this.handleRoamScrollStartInner, this.options.throttle);\n }\n\n protected getEvents() {\n const events: Array<{ type: string; handler: InteractionEventHandler }> = [];\n\n if (this.options.zoom?.enable) {\n this.options.zoom.trigger && events.push({ type: this.options.zoom.trigger, handler: this.handleRoamZoomStart });\n this.options.zoom.endTrigger &&\n events.push({ type: this.options.zoom.endTrigger, handler: this.handleRoamZoomEnd });\n this.options.zoom.triggerOff &&\n events.push({ type: this.options.zoom.triggerOff, handler: this.handleRoamZoomReset });\n }\n\n if (this.options.scroll?.enable) {\n this.options.scroll.trigger &&\n events.push({ type: this.options.scroll.trigger, handler: this.handleRoamScrollStart });\n this.options.scroll.trigger &&\n events.push({ type: this.options.scroll.endTrigger, handler: this.handleRoamScrollEnd });\n }\n\n if (this.options.drag?.enable) {\n this.options.drag.trigger && events.push({ type: this.options.drag.trigger, handler: this.handleRoamDragStart });\n this.options.drag.updateTrigger &&\n events.push({ type: this.options.drag.updateTrigger, handler: this.handleRoamDragUpdate });\n this.options.drag.endTrigger &&\n events.push({ type: this.options.drag.endTrigger, handler: this.handleRoamDragEnd });\n }\n\n return events;\n }\n\n handleRoamZoomStartInner = (e: InteractionEvent) => {\n this.formatZoomEvent(e);\n if (!e || (this.options.shouldStart && !this.options.shouldStart(e))) {\n return;\n }\n\n if (!this._inited) {\n this._initGrammars();\n }\n\n this.updateView('start', this.handleZoomStart(e, this._state, this.options.zoom), e);\n };\n\n handleRoamZoomEnd = (e: InteractionEvent) => {\n this.formatZoomEvent(e);\n if (!e || (this.options.shouldEnd && !this.options.shouldEnd(e))) {\n return;\n }\n\n this.updateView('end', this.handleZoomEnd(e, this._state, this.options.zoom), e);\n };\n\n handleRoamZoomReset = (e: InteractionEvent) => {\n if (!e || (this.options.shouldReset && !this.options.shouldReset(e))) {\n return;\n }\n this.updateView('reset', this.handleZoomReset(e, this._state, this.options.zoom), e);\n };\n\n handleRoamDragStart = (e: InteractionEvent) => {\n if (!e || (this.options.shouldStart && !this.options.shouldStart(e))) {\n return;\n }\n\n if (!this._inited) {\n this._initGrammars();\n }\n\n this.updateView('start', this.handleDragStart(e, this._state, this.options.drag), e);\n };\n\n handleRoamDragUpdateInner = (e: InteractionEvent) => {\n if (!e || (this.options.shouldUpdate && !this.options.shouldUpdate(e))) {\n return;\n }\n this.updateView('update', this.handleDragUpdate(e, this._state, this.options.drag), e);\n };\n\n handleRoamDragEnd = (e: InteractionEvent) => {\n if (!e || (this.options.shouldEnd && !this.options.shouldEnd(e))) {\n return;\n }\n\n this.updateView('end', this.handleDragEnd(e, this._state, this.options.drag), e);\n };\n\n handleRoamScrollStartInner = (e: InteractionEvent) => {\n this.formatScrollEvent(e);\n if (!e || (this.options.shouldStart && !this.options.shouldStart(e))) {\n return;\n }\n\n if (!this._inited) {\n this._initGrammars();\n }\n\n this.updateView('start', this.handleScrollStart(e, this._state, this.options.scroll), e);\n };\n\n handleRoamScrollEnd = (e: InteractionEvent) => {\n this.formatScrollEvent(e);\n if (!e || (this.options.shouldEnd && !this.options.shouldEnd(e))) {\n return;\n }\n\n this.updateView('end', this.handleScrollEnd(e, this._state, this.options.scroll), e);\n };\n}\n"]}
|
|
@@ -6,7 +6,6 @@ export declare class ViewScroll extends ViewNavigationBase<ViewScrollOptions> {
|
|
|
6
6
|
static type: string;
|
|
7
7
|
type: string;
|
|
8
8
|
static defaultOptions: ViewScrollOptions;
|
|
9
|
-
protected _isStarted?: boolean;
|
|
10
9
|
protected handleStart: (e: InteractionEvent) => void;
|
|
11
10
|
constructor(view: IView, option?: ViewScrollOptions);
|
|
12
11
|
protected getEvents(): {
|
|
@@ -10,11 +10,10 @@ class ViewScroll extends view_navigation_base_1.ViewNavigationBase {
|
|
|
10
10
|
constructor(view, option) {
|
|
11
11
|
super(view, Object.assign({}, ViewScroll.defaultOptions, option)), this.type = ViewScroll.type,
|
|
12
12
|
this.handleStartInner = e => {
|
|
13
|
-
this.formatScrollEvent(e), !e || this.options.shouldStart && !this.options.shouldStart(e) || (this.
|
|
14
|
-
this.
|
|
13
|
+
this.formatScrollEvent(e), !e || this.options.shouldStart && !this.options.shouldStart(e) || (this._inited || this._initGrammars(),
|
|
14
|
+
this.updateView("start", this.handleScrollStart(e, this._state, this.options), e));
|
|
15
15
|
}, this.handleEnd = e => {
|
|
16
|
-
this.
|
|
17
|
-
this._isStarted = !1));
|
|
16
|
+
this.formatScrollEvent(e), !e || this.options.shouldEnd && !this.options.shouldEnd(e) || this.updateView("end", this.handleScrollEnd(e, this._state, this.options), e);
|
|
18
17
|
}, this.handleStart = (0, vutils_1.throttle)(this.handleStartInner, this.options.throttle);
|
|
19
18
|
}
|
|
20
19
|
getEvents() {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../src/interactions/view-scroll.ts"],"names":[],"mappings":";;;AAAA,6CAA4C;AAE5C,iEAA4D;AAM5D,MAAa,UAAW,SAAQ,yCAAqC;
|
|
1
|
+
{"version":3,"sources":["../src/interactions/view-scroll.ts"],"names":[],"mappings":";;;AAAA,6CAA4C;AAE5C,iEAA4D;AAM5D,MAAa,UAAW,SAAQ,yCAAqC;IAcnE,YAAY,IAAW,EAAE,MAA0B;QACjD,KAAK,CAAC,IAAI,EAAE,MAAM,CAAC,MAAM,CAAC,EAAE,EAAE,UAAU,CAAC,cAAc,EAAE,MAAM,CAAC,CAAC,CAAC;QAbpE,SAAI,GAAW,UAAU,CAAC,IAAI,CAAC;QAyB/B,qBAAgB,GAAG,CAAC,CAAmB,EAAE,EAAE;YACxC,IAAoC,CAAC,iBAAiB,CAAC,CAAC,CAAC,CAAC;YAC3D,IAAI,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,WAAW,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC,EAAE;gBACpE,OAAO;aACR;YAED,IAAI,CAAC,IAAI,CAAC,OAAO,EAAE;gBACjB,IAAI,CAAC,aAAa,EAAE,CAAC;aACtB;YAED,IAAI,CAAC,UAAU,CAAC,OAAO,EAAG,IAAoC,CAAC,iBAAiB,CAAC,CAAC,EAAE,IAAI,CAAC,MAAM,EAAE,IAAI,CAAC,OAAO,CAAC,EAAE,CAAC,CAAC,CAAC;QACrH,CAAC,CAAC;QAEF,cAAS,GAAG,CAAC,CAAmB,EAAE,EAAE;YACjC,IAAoC,CAAC,iBAAiB,CAAC,CAAC,CAAC,CAAC;YAC3D,IAAI,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,SAAS,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,EAAE;gBAChE,OAAO;aACR;YAED,IAAI,CAAC,UAAU,CAAC,KAAK,EAAG,IAAoC,CAAC,eAAe,CAAC,CAAC,EAAE,IAAI,CAAC,MAAM,EAAE,IAAI,CAAC,OAAO,CAAC,EAAE,CAAC,CAAC,CAAC;QACjH,CAAC,CAAC;QA9BA,IAAI,CAAC,WAAW,GAAG,IAAA,iBAAQ,EAAC,IAAI,CAAC,gBAAgB,EAAE,IAAI,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAC;IAC5E,CAAC;IAES,SAAS;QACjB,OAAO;YACL,EAAE,IAAI,EAAE,IAAI,CAAC,OAAO,CAAC,OAAO,EAAE,OAAO,EAAE,IAAI,CAAC,WAAW,EAAE;YACzD,EAAE,IAAI,EAAE,IAAI,CAAC,OAAO,CAAC,UAAU,EAAE,OAAO,EAAE,IAAI,CAAC,SAAS,EAAE;SAC3D,CAAC;IACJ,CAAC;;AAzBH,gCAgDC;AA/CQ,eAAI,GAAW,aAAa,CAAC;AAG7B,yBAAc,GAAsB;IACzC,QAAQ,EAAE,IAAI;IACd,QAAQ,EAAE,KAAK;IACf,OAAO,EAAE,OAAO;IAChB,UAAU,EAAE,WAAW;IACvB,QAAQ,EAAE,GAAG;CACd,CAAC","file":"view-scroll.js","sourcesContent":["import { throttle } from '@visactor/vutils';\nimport type { ViewScrollOptions, IView, InteractionEvent, IViewScrollMixin } from '../types';\nimport { ViewNavigationBase } from './view-navigation-base';\n\nexport interface ViewScroll\n extends Pick<IViewScrollMixin, 'formatScrollEvent' | 'handleScrollStart' | 'handleScrollEnd'>,\n ViewNavigationBase<ViewScrollOptions> {}\n\nexport class ViewScroll extends ViewNavigationBase<ViewScrollOptions> {\n static type: string = 'view-scroll';\n type: string = ViewScroll.type;\n\n static defaultOptions: ViewScrollOptions = {\n realtime: true,\n reversed: false,\n trigger: 'wheel',\n endTrigger: 'pointerup',\n throttle: 100\n };\n\n protected handleStart: (e: InteractionEvent) => void;\n\n constructor(view: IView, option?: ViewScrollOptions) {\n super(view, Object.assign({}, ViewScroll.defaultOptions, option));\n\n this.handleStart = throttle(this.handleStartInner, this.options.throttle);\n }\n\n protected getEvents() {\n return [\n { type: this.options.trigger, handler: this.handleStart },\n { type: this.options.endTrigger, handler: this.handleEnd }\n ];\n }\n\n handleStartInner = (e: InteractionEvent) => {\n (this as unknown as IViewScrollMixin).formatScrollEvent(e);\n if (!e || (this.options.shouldStart && !this.options.shouldStart(e))) {\n return;\n }\n\n if (!this._inited) {\n this._initGrammars();\n }\n\n this.updateView('start', (this as unknown as IViewScrollMixin).handleScrollStart(e, this._state, this.options), e);\n };\n\n handleEnd = (e: InteractionEvent) => {\n (this as unknown as IViewScrollMixin).formatScrollEvent(e);\n if (!e || (this.options.shouldEnd && !this.options.shouldEnd(e))) {\n return;\n }\n\n this.updateView('end', (this as unknown as IViewScrollMixin).handleScrollEnd(e, this._state, this.options), e);\n };\n}\n"]}
|
|
@@ -58,18 +58,13 @@ const handleScrolling = (scrollPos, navState, scrollOptions) => {
|
|
|
58
58
|
needUpdate: !1
|
|
59
59
|
};
|
|
60
60
|
return navState ? (Object.keys(navState).forEach((dim => {
|
|
61
|
-
const {scale: scale, data: data, linkedComponent: linkedComponent, rangeFactor: rangeFactor,
|
|
61
|
+
const {scale: scale, data: data, linkedComponent: linkedComponent, rangeFactor: rangeFactor, wholeScale: wholeScale} = navState[dim];
|
|
62
62
|
if (linkedComponent) res[dim] = (0, exports.updateScrollRange)((0, exports.getRangeOfLinkedComponent)(linkedComponent), (0,
|
|
63
63
|
exports.getBoundsRangeOfLinkedComponent)(linkedComponent, dim), scrollPos[dim], scrollOptions); else if (scale) {
|
|
64
|
-
const innerScale = scale.getScale(),
|
|
65
|
-
|
|
66
|
-
newRange && (navState[dim].rangeFactor = newRange, data ? (navState[dim].filterValue = newRange,
|
|
64
|
+
const innerScale = scale.getScale(), newRange = (0, exports.updateScrollRange)(rangeFactor, innerScale.range(), scrollPos[dim], scrollOptions);
|
|
65
|
+
newRange && (navState[dim].rangeFactor = newRange, data ? (navState[dim].filterValue = rangeFactor,
|
|
67
66
|
data.commit()) : (scale.setRangeFactor(newRange), scale.commit()), res.needUpdate = !0,
|
|
68
67
|
res[dim] = newRange);
|
|
69
|
-
} else {
|
|
70
|
-
const oldRange = (getCurrentRange ? getCurrentRange() : rangeFactor) || [ 0, 1 ], newRange = (0,
|
|
71
|
-
exports.updateScrollRange)(oldRange, [ 0, 1 ], scrollPos[dim], scrollOptions);
|
|
72
|
-
res[dim] = newRange || oldRange;
|
|
73
68
|
}
|
|
74
69
|
})), res) : res;
|
|
75
70
|
};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../src/interactions/view-utils.ts"],"names":[],"mappings":"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
|
|
1
|
+
{"version":3,"sources":["../src/interactions/view-utils.ts"],"names":[],"mappings":"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","file":"view-utils.js","sourcesContent":["import { isContinuous, type IBaseScale } from '@visactor/vscale';\nimport { ComponentEnum } from '../graph/enums';\nimport type { IDatazoom, IScrollbar, ViewNavigationRange, ViewStateByDim } from '../types';\n\nexport const getRangeOfLinkedComponent = (comp: IDatazoom | IScrollbar): [number, number] => {\n if (comp.componentType === ComponentEnum.datazoom) {\n const res = (comp as IDatazoom).getStartEndValue();\n return res ? [res.start, res.end] : null;\n }\n\n return (comp as IScrollbar).getScrollRange();\n};\n\nexport const getBoundsRangeOfLinkedComponent = (comp: IDatazoom | IScrollbar, dim: 'x' | 'y'): [number, number] => {\n const bounds = comp.getBounds();\n\n if (bounds && !bounds.empty()) {\n return dim === 'y' ? [bounds.y1, bounds.y2] : [bounds.x1, bounds.x2];\n }\n};\n\nexport const getFilteredValuesFromScale = (scale: IBaseScale, range: [number, number]) => {\n const scaleRange = scale.range();\n const startPos = scaleRange[0] + (scaleRange[1] - scaleRange[0]) * range[0];\n const endPos = scaleRange[0] + (scaleRange[1] - scaleRange[0]) * range[1];\n\n if (isContinuous(scale.type)) {\n const startValue = scale.invert(startPos);\n const endValue = scale.invert(endPos);\n\n return [Math.min(startValue, endValue), Math.max(startValue, endValue)];\n }\n const domain = scale.domain();\n\n return domain.filter((entry: any) => {\n const val = scale.scale(entry);\n return val >= startPos && val <= endPos;\n });\n};\n\nexport const updateScrollRange = (\n rangeFactor: [number, number] = [0, 1],\n range: [number, number],\n scrollValue: number = 0,\n scrollOptions?: { reversed?: boolean }\n) => {\n if (Math.abs(scrollValue) < 1e-3) {\n return;\n }\n const rangeDelta = Math.abs(rangeFactor[1] - rangeFactor[0]);\n\n if (rangeDelta >= 1) {\n return;\n }\n const size = Math.abs(range[range.length - 1] - range[0]);\n\n if (size <= 0 || Number.isNaN(size)) {\n return;\n }\n\n const value = (scrollOptions.reversed ? -1 : 1) * scrollValue;\n\n if (value > 0 && rangeFactor[1] < 1) {\n const delta = Math.min(1 - rangeFactor[1], value / size);\n\n return [rangeFactor[0] + delta, rangeFactor[1] + delta] as [number, number];\n } else if (value < 0 && rangeFactor[0] > 0) {\n const delta = Math.max(-rangeFactor[0], value / size);\n\n return [rangeFactor[0] + delta, rangeFactor[1] + delta] as [number, number];\n }\n};\n\nexport const handleScrolling = (\n scrollPos: { x?: number; y?: number },\n navState: Partial<Record<'x' | 'y', ViewStateByDim>>,\n scrollOptions?: { reversed?: boolean }\n): ViewNavigationRange => {\n const res: ViewNavigationRange = { needUpdate: false };\n if (!navState) {\n return res;\n }\n\n Object.keys(navState).forEach(dim => {\n const { scale, data, linkedComponent, rangeFactor, wholeScale } = navState[dim];\n\n if (linkedComponent) {\n res[dim] = updateScrollRange(\n getRangeOfLinkedComponent(linkedComponent),\n getBoundsRangeOfLinkedComponent(linkedComponent, dim as 'x' | 'y'),\n scrollPos[dim],\n scrollOptions\n );\n } else if (scale) {\n const innerScale = scale.getScale();\n const newRange = updateScrollRange(rangeFactor, innerScale.range(), scrollPos[dim], scrollOptions);\n\n if (newRange) {\n navState[dim].rangeFactor = newRange;\n\n if (data) {\n navState[dim].filterValue = rangeFactor;\n\n data.commit();\n } else {\n scale.setRangeFactor(newRange);\n scale.commit();\n }\n res.needUpdate = true;\n res[dim] = newRange;\n }\n }\n });\n return res;\n};\n"]}
|
|
@@ -37,15 +37,12 @@ class ViewZoomMixin {
|
|
|
37
37
|
needUpdate: !1
|
|
38
38
|
};
|
|
39
39
|
return navState ? (Object.keys(navState).forEach((dim => {
|
|
40
|
-
const {scale: scale, data: data, linkedComponent: linkedComponent, rangeFactor: rangeFactor
|
|
40
|
+
const {scale: scale, data: data, linkedComponent: linkedComponent, rangeFactor: rangeFactor} = navState[dim];
|
|
41
41
|
if (linkedComponent) res[dim] = this.updateZoomRange((0, view_utils_1.getRangeOfLinkedComponent)(linkedComponent), null, zoomPos, zoomOptions); else if (scale) {
|
|
42
42
|
const innerScale = scale.getScale(), newRange = this.updateZoomRange(rangeFactor, innerScale, zoomPos, zoomOptions);
|
|
43
43
|
newRange && (navState[dim].rangeFactor = newRange, data ? (navState[dim].filterValue = newRange,
|
|
44
44
|
data.commit()) : (scale.setRangeFactor(newRange), scale.commit()), res.needUpdate = !0,
|
|
45
45
|
res[dim] = newRange);
|
|
46
|
-
} else {
|
|
47
|
-
const oldRange = (getCurrentRange ? getCurrentRange() : rangeFactor) || [ 0, 1 ], newRange = this.updateZoomRange(oldRange, null, zoomPos, zoomOptions);
|
|
48
|
-
res[dim] = newRange || oldRange;
|
|
49
46
|
}
|
|
50
47
|
})), res) : res;
|
|
51
48
|
}
|
|
@@ -69,10 +66,9 @@ class ViewZoomMixin {
|
|
|
69
66
|
};
|
|
70
67
|
return navState ? (Object.keys(navState).forEach((dim => {
|
|
71
68
|
const {scale: scale, data: data, linkedComponent: linkedComponent} = navState[dim], newRange = [ 0, 1 ];
|
|
72
|
-
linkedComponent ? res[dim] = newRange : scale
|
|
69
|
+
linkedComponent ? res[dim] = newRange : scale && (navState[dim].rangeFactor = null,
|
|
73
70
|
data ? (navState[dim].filterValue = null, data.commit()) : (scale.setRangeFactor(newRange),
|
|
74
|
-
scale.commit()), res.needUpdate = !0, res[dim] = newRange)
|
|
75
|
-
res[dim] = navState[dim].initRangeFactor);
|
|
71
|
+
scale.commit()), res.needUpdate = !0, res[dim] = newRange);
|
|
76
72
|
})), res) : res;
|
|
77
73
|
}
|
|
78
74
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../src/interactions/view-zoom-mixin.ts"],"names":[],"mappings":"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","file":"view-zoom-mixin.js","sourcesContent":["import { clamp, isNil } from '@visactor/vutils';\nimport type {\n IViewZoomMixin,\n InteractionEvent,\n ViewNavigationRange,\n ViewStateByDim,\n ViewZoomSimpleOptions\n} from '../types';\nimport { getRangeOfLinkedComponent } from './view-utils';\n\nexport class ViewZoomMixin implements IViewZoomMixin {\n protected declare _state: Partial<Record<'x' | 'y', ViewStateByDim>>;\n\n protected _lastScale: number;\n protected _zoomPos: {\n zoomDelta: number;\n zoomX: number;\n zoomY: number;\n };\n\n protected _formatPinchZoom(e: InteractionEvent) {\n const scale = (e as any).scale;\n if (isNil(this._lastScale)) {\n this._lastScale = scale;\n return e;\n }\n const zoomDelta = scale / this._lastScale;\n\n this._lastScale = scale;\n const center = (e as any).center;\n\n (e as any).zoomDelta = zoomDelta;\n (e as any).zoomX = center.x;\n (e as any).zoomY = center.y;\n\n return e;\n }\n\n protected _formatWheelZoom(e: InteractionEvent) {\n /**\n * @see https://vega.github.io/vega/examples/zoomable-world-map/\n * After testing, the ctrlKey field will only be true when the directions of the two fingers are inconsistent.\n * Based on this, determine whether to trigger the scroll event.\n */\n if (!(e as any).ctrlKey) {\n (e as any).zoomDelta = null;\n (e as any).zoomX = null;\n (e as any).zoomY = null;\n return e;\n }\n\n // @see https://vega.github.io/vega/examples/zoomable-world-map/\n const zoomDelta = Math.pow(1.0005, -(e as any).deltaY * Math.pow(16, (e as any).deltaMode));\n\n (e as any).zoomDelta = zoomDelta;\n (e as any).zoomX = e.canvasX;\n (e as any).zoomY = e.canvasY;\n return e;\n }\n\n formatZoomEvent(e: InteractionEvent) {\n if (!e) {\n return e;\n }\n\n if (e.type === 'pinch') {\n return this._formatPinchZoom(e);\n }\n\n return this._formatWheelZoom(e);\n }\n\n updateZoomRange(\n rangeFactor: [number, number] = [0, 1],\n range: [number, number],\n zoomEvent: { zoomDelta: number; zoomX: number; zoomY: number },\n zoomOptions?: { rate?: number; focus?: boolean }\n ) {\n const { zoomDelta } = zoomEvent;\n\n const rangeDelta = Math.abs(rangeFactor[1] - rangeFactor[0]);\n\n if (rangeDelta >= 1 && zoomDelta >= 1) {\n return;\n }\n if (rangeDelta <= 1e-3 && zoomDelta <= 1) {\n return;\n }\n const value = (rangeDelta * (zoomDelta - 1) * (zoomOptions.rate ?? 1)) / 2;\n\n const start = clamp(rangeFactor[0] - value, 0, 1);\n const end = clamp(rangeFactor[1] + value, 0, 1);\n\n return [Math.min(start, end), Math.max(start, end)] as [number, number];\n }\n\n protected _handleZooming(\n zoomPos: { zoomDelta: number; zoomX: number; zoomY: number },\n navState: Partial<Record<'x' | 'y', ViewStateByDim>>,\n zoomOptions?: ViewZoomSimpleOptions\n ): ViewNavigationRange {\n const res: ViewNavigationRange = { needUpdate: false };\n if (!navState) {\n return res;\n }\n\n Object.keys(navState).forEach(dim => {\n const { scale, data, linkedComponent, rangeFactor, getCurrentRange } = navState[dim];\n\n if (linkedComponent) {\n res[dim] = this.updateZoomRange(getRangeOfLinkedComponent(linkedComponent), null, zoomPos, zoomOptions);\n } else if (scale) {\n const innerScale = scale.getScale();\n const newRange = this.updateZoomRange(rangeFactor, innerScale, zoomPos, zoomOptions);\n\n if (newRange) {\n navState[dim].rangeFactor = newRange;\n\n if (data) {\n navState[dim].filterValue = newRange;\n\n data.commit();\n } else {\n scale.setRangeFactor(newRange);\n scale.commit();\n }\n res.needUpdate = true;\n res[dim] = newRange;\n }\n } else {\n const oldRange = (getCurrentRange ? getCurrentRange() : rangeFactor) || [0, 1];\n const newRange = this.updateZoomRange(oldRange, null, zoomPos, zoomOptions);\n\n res[dim] = newRange || oldRange;\n }\n });\n return res;\n }\n\n handleZoomStart(\n e: InteractionEvent,\n navState: Partial<Record<'x' | 'y', ViewStateByDim>>,\n zoomOptions?: ViewZoomSimpleOptions\n ): ViewNavigationRange {\n if (isNil((e as any).zoomDelta)) {\n return;\n }\n e.stopPropagation();\n e.preventDefault();\n\n if (zoomOptions && zoomOptions.realtime) {\n return this._handleZooming(\n e as unknown as { zoomDelta: number; zoomX: number; zoomY: number },\n navState,\n zoomOptions\n );\n }\n\n if (isNil(this._zoomPos)) {\n this._zoomPos = {\n zoomDelta: (e as any).zoomDelta,\n zoomX: (e as any).zoomX,\n zoomY: (e as any).zoomY\n };\n } else {\n this._zoomPos.zoomDelta *= (e as any).zoomDelta;\n }\n\n return null;\n }\n\n handleZoomEnd(\n e: InteractionEvent,\n navState: Partial<Record<'x' | 'y', ViewStateByDim>>,\n zoomOptions?: ViewZoomSimpleOptions\n ): ViewNavigationRange {\n this._lastScale = null;\n const res =\n zoomOptions && zoomOptions.realtime === false && this._zoomPos\n ? this._handleZooming(this._zoomPos, navState, zoomOptions)\n : null;\n\n this._zoomPos = null;\n\n return res;\n }\n\n handleZoomReset(\n e: InteractionEvent,\n navState: Partial<Record<'x' | 'y', ViewStateByDim>>,\n zoomOptions?: ViewZoomSimpleOptions\n ): ViewNavigationRange {\n const res: ViewNavigationRange = { needUpdate: false };\n if (!navState) {\n return res;\n }\n\n Object.keys(navState).forEach(dim => {\n const { scale, data, linkedComponent } = navState[dim];\n const newRange = [0, 1];\n\n if (linkedComponent) {\n res[dim] = newRange;\n } else if (scale) {\n navState[dim].rangeFactor = null;\n\n if (data) {\n navState[dim].filterValue = null;\n\n data.commit();\n } else {\n scale.setRangeFactor(newRange);\n scale.commit();\n }\n res.needUpdate = true;\n res[dim] = newRange;\n } else {\n navState[dim].rangeFactor = navState[dim].initRangeFactor;\n res[dim] = navState[dim].initRangeFactor;\n }\n });\n return res;\n }\n}\n"]}
|
|
1
|
+
{"version":3,"sources":["../src/interactions/view-zoom-mixin.ts"],"names":[],"mappings":"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","file":"view-zoom-mixin.js","sourcesContent":["import { clamp, isNil } from '@visactor/vutils';\nimport type {\n IViewZoomMixin,\n InteractionEvent,\n ViewNavigationRange,\n ViewStateByDim,\n ViewZoomSimpleOptions\n} from '../types';\nimport { getFilteredValuesFromScale, getRangeOfLinkedComponent } from './view-utils';\n\nexport class ViewZoomMixin implements IViewZoomMixin {\n protected declare _state: Partial<Record<'x' | 'y', ViewStateByDim>>;\n\n protected _lastScale: number;\n protected _zoomPos: {\n zoomDelta: number;\n zoomX: number;\n zoomY: number;\n };\n\n protected _formatPinchZoom(e: InteractionEvent) {\n const scale = (e as any).scale;\n if (isNil(this._lastScale)) {\n this._lastScale = scale;\n return e;\n }\n const zoomDelta = scale / this._lastScale;\n\n this._lastScale = scale;\n const center = (e as any).center;\n\n (e as any).zoomDelta = zoomDelta;\n (e as any).zoomX = center.x;\n (e as any).zoomY = center.y;\n\n return e;\n }\n\n protected _formatWheelZoom(e: InteractionEvent) {\n /**\n * @see https://vega.github.io/vega/examples/zoomable-world-map/\n * After testing, the ctrlKey field will only be true when the directions of the two fingers are inconsistent.\n * Based on this, determine whether to trigger the scroll event.\n */\n if (!(e as any).ctrlKey) {\n (e as any).zoomDelta = null;\n (e as any).zoomX = null;\n (e as any).zoomY = null;\n return e;\n }\n\n // @see https://vega.github.io/vega/examples/zoomable-world-map/\n const zoomDelta = Math.pow(1.0005, -(e as any).deltaY * Math.pow(16, (e as any).deltaMode));\n\n (e as any).zoomDelta = zoomDelta;\n (e as any).zoomX = e.canvasX;\n (e as any).zoomY = e.canvasY;\n return e;\n }\n\n formatZoomEvent(e: InteractionEvent) {\n if (!e) {\n return e;\n }\n\n if (e.type === 'pinch') {\n return this._formatPinchZoom(e);\n }\n\n return this._formatWheelZoom(e);\n }\n\n updateZoomRange(\n rangeFactor: [number, number] = [0, 1],\n range: [number, number],\n zoomEvent: { zoomDelta: number; zoomX: number; zoomY: number },\n zoomOptions?: { rate?: number; focus?: boolean }\n ) {\n const { zoomDelta } = zoomEvent;\n\n const rangeDelta = Math.abs(rangeFactor[1] - rangeFactor[0]);\n\n if (rangeDelta >= 1 && zoomDelta >= 1) {\n return;\n }\n if (rangeDelta <= 1e-3 && zoomDelta <= 1) {\n return;\n }\n const value = (rangeDelta * (zoomDelta - 1) * (zoomOptions.rate ?? 1)) / 2;\n\n const start = clamp(rangeFactor[0] - value, 0, 1);\n const end = clamp(rangeFactor[1] + value, 0, 1);\n\n return [Math.min(start, end), Math.max(start, end)] as [number, number];\n }\n\n protected _handleZooming(\n zoomPos: { zoomDelta: number; zoomX: number; zoomY: number },\n navState: Partial<Record<'x' | 'y', ViewStateByDim>>,\n zoomOptions?: ViewZoomSimpleOptions\n ): ViewNavigationRange {\n const res: ViewNavigationRange = { needUpdate: false };\n if (!navState) {\n return res;\n }\n\n Object.keys(navState).forEach(dim => {\n const { scale, data, linkedComponent, rangeFactor } = navState[dim];\n\n if (linkedComponent) {\n res[dim] = this.updateZoomRange(getRangeOfLinkedComponent(linkedComponent), null, zoomPos, zoomOptions);\n } else if (scale) {\n const innerScale = scale.getScale();\n const newRange = this.updateZoomRange(rangeFactor, innerScale, zoomPos, zoomOptions);\n\n if (newRange) {\n navState[dim].rangeFactor = newRange;\n\n if (data) {\n navState[dim].filterValue = newRange;\n\n data.commit();\n } else {\n scale.setRangeFactor(newRange);\n scale.commit();\n }\n res.needUpdate = true;\n res[dim] = newRange;\n }\n }\n });\n return res;\n }\n\n handleZoomStart(\n e: InteractionEvent,\n navState: Partial<Record<'x' | 'y', ViewStateByDim>>,\n zoomOptions?: ViewZoomSimpleOptions\n ): ViewNavigationRange {\n if (isNil((e as any).zoomDelta)) {\n return;\n }\n e.stopPropagation();\n e.preventDefault();\n\n if (zoomOptions && zoomOptions.realtime) {\n return this._handleZooming(\n e as unknown as { zoomDelta: number; zoomX: number; zoomY: number },\n navState,\n zoomOptions\n );\n }\n\n if (isNil(this._zoomPos)) {\n this._zoomPos = {\n zoomDelta: (e as any).zoomDelta,\n zoomX: (e as any).zoomX,\n zoomY: (e as any).zoomY\n };\n } else {\n this._zoomPos.zoomDelta *= (e as any).zoomDelta;\n }\n\n return null;\n }\n\n handleZoomEnd(\n e: InteractionEvent,\n navState: Partial<Record<'x' | 'y', ViewStateByDim>>,\n zoomOptions?: ViewZoomSimpleOptions\n ): ViewNavigationRange {\n this._lastScale = null;\n const res =\n zoomOptions && zoomOptions.realtime === false && this._zoomPos\n ? this._handleZooming(this._zoomPos, navState, zoomOptions)\n : null;\n\n this._zoomPos = null;\n\n return res;\n }\n\n handleZoomReset(\n e: InteractionEvent,\n navState: Partial<Record<'x' | 'y', ViewStateByDim>>,\n zoomOptions?: ViewZoomSimpleOptions\n ): ViewNavigationRange {\n const res: ViewNavigationRange = { needUpdate: false };\n if (!navState) {\n return res;\n }\n\n Object.keys(navState).forEach(dim => {\n const { scale, data, linkedComponent } = navState[dim];\n const newRange = [0, 1];\n\n if (linkedComponent) {\n res[dim] = newRange;\n } else if (scale) {\n navState[dim].rangeFactor = null;\n\n if (data) {\n navState[dim].filterValue = null;\n\n data.commit();\n } else {\n scale.setRangeFactor(newRange);\n scale.commit();\n }\n res.needUpdate = true;\n res[dim] = newRange;\n }\n });\n return res;\n }\n}\n"]}
|
|
@@ -12,10 +12,9 @@ export declare class ViewZoom extends ViewNavigationBase<ViewZoomOptions> {
|
|
|
12
12
|
protected _scaleY: IScale;
|
|
13
13
|
protected _data: IData;
|
|
14
14
|
protected handleStart: (e: InteractionEvent) => void;
|
|
15
|
-
protected _isStarted?: boolean;
|
|
16
15
|
constructor(view: IView, option?: ViewZoomOptions);
|
|
17
16
|
protected getEvents(): {
|
|
18
|
-
type:
|
|
17
|
+
type: import("../types").EventType;
|
|
19
18
|
handler: (e: InteractionEvent) => void;
|
|
20
19
|
}[];
|
|
21
20
|
handleStartInner: (e: InteractionEvent) => void;
|
|
@@ -11,20 +11,20 @@ class ViewZoom extends view_navigation_base_1.ViewNavigationBase {
|
|
|
11
11
|
super(view, Object.assign({}, ViewZoom.defaultOptions, option)), this.type = ViewZoom.type,
|
|
12
12
|
this.handleStartInner = e => {
|
|
13
13
|
this.formatZoomEvent(e), !e || this.options.shouldStart && !this.options.shouldStart(e) || (this._inited || this._initGrammars(),
|
|
14
|
-
this.
|
|
14
|
+
this.updateView("start", this.handleZoomStart(e, this._state, {
|
|
15
15
|
rate: this.options.rate,
|
|
16
16
|
focus: this.options.focus
|
|
17
|
-
})
|
|
17
|
+
})));
|
|
18
18
|
}, this.handleEnd = e => {
|
|
19
|
-
this.
|
|
19
|
+
this.formatZoomEvent(e), !e || this.options.shouldEnd && !this.options.shouldEnd(e) || this.updateView("end", this.handleZoomEnd(e, this._state, {
|
|
20
20
|
rate: this.options.rate,
|
|
21
21
|
focus: this.options.focus
|
|
22
|
-
}),
|
|
22
|
+
}), e);
|
|
23
23
|
}, this.handleReset = e => {
|
|
24
|
-
|
|
24
|
+
!e || this.options.shouldReset && !this.options.shouldReset(e) || this.updateView("reset", this.handleZoomReset(e, this._state, {
|
|
25
25
|
rate: this.options.rate,
|
|
26
26
|
focus: this.options.focus
|
|
27
|
-
}),
|
|
27
|
+
}), e);
|
|
28
28
|
}, this.handleStart = (0, vutils_1.throttle)(this.handleStartInner, this.options.throttle);
|
|
29
29
|
}
|
|
30
30
|
getEvents() {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../src/interactions/view-zoom.ts"],"names":[],"mappings":";;;AAAA,6CAA4C;AAE5C,iEAA4D;AAQ5D,MAAa,QAAS,SAAQ,yCAAmC;
|
|
1
|
+
{"version":3,"sources":["../src/interactions/view-zoom.ts"],"names":[],"mappings":";;;AAAA,6CAA4C;AAE5C,iEAA4D;AAQ5D,MAAa,QAAS,SAAQ,yCAAmC;IAqB/D,YAAY,IAAW,EAAE,MAAwB;QAC/C,KAAK,CAAC,IAAI,EAAE,MAAM,CAAC,MAAM,CAAC,EAAE,EAAE,QAAQ,CAAC,cAAc,EAAE,MAAM,CAAC,CAAC,CAAC;QApBlE,SAAI,GAAW,QAAQ,CAAC,IAAI,CAAC;QAgC7B,qBAAgB,GAAG,CAAC,CAAmB,EAAE,EAAE;YACxC,IAAkC,CAAC,eAAe,CAAC,CAAC,CAAC,CAAC;YACvD,IAAI,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,WAAW,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC,EAAE;gBACpE,OAAO;aACR;YAED,IAAI,CAAC,IAAI,CAAC,OAAO,EAAE;gBACjB,IAAI,CAAC,aAAa,EAAE,CAAC;aACtB;YAED,IAAI,CAAC,UAAU,CACb,OAAO,EACN,IAAkC,CAAC,eAAe,CAAC,CAAC,EAAE,IAAI,CAAC,MAAM,EAAE;gBAClE,IAAI,EAAE,IAAI,CAAC,OAAO,CAAC,IAAI;gBACvB,KAAK,EAAE,IAAI,CAAC,OAAO,CAAC,KAAK;aAC1B,CAAC,CACH,CAAC;QACJ,CAAC,CAAC;QAEF,cAAS,GAAG,CAAC,CAAmB,EAAE,EAAE;YACjC,IAAkC,CAAC,eAAe,CAAC,CAAC,CAAC,CAAC;YACvD,IAAI,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,SAAS,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,EAAE;gBAChE,OAAO;aACR;YAED,IAAI,CAAC,UAAU,CACb,KAAK,EACJ,IAAkC,CAAC,aAAa,CAAC,CAAC,EAAE,IAAI,CAAC,MAAM,EAAE;gBAChE,IAAI,EAAE,IAAI,CAAC,OAAO,CAAC,IAAI;gBACvB,KAAK,EAAE,IAAI,CAAC,OAAO,CAAC,KAAK;aAC1B,CAAC,EACF,CAAC,CACF,CAAC;QACJ,CAAC,CAAC;QAEF,gBAAW,GAAG,CAAC,CAAmB,EAAE,EAAE;YACpC,IAAI,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,WAAW,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC,EAAE;gBACpE,OAAO;aACR;YACD,IAAI,CAAC,UAAU,CACb,OAAO,EACN,IAAkC,CAAC,eAAe,CAAC,CAAC,EAAE,IAAI,CAAC,MAAM,EAAE;gBAClE,IAAI,EAAE,IAAI,CAAC,OAAO,CAAC,IAAI;gBACvB,KAAK,EAAE,IAAI,CAAC,OAAO,CAAC,KAAK;aAC1B,CAAC,EACF,CAAC,CACF,CAAC;QACJ,CAAC,CAAC;QA1DA,IAAI,CAAC,WAAW,GAAG,IAAA,iBAAQ,EAAC,IAAI,CAAC,gBAAgB,EAAE,IAAI,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAC;IAC5E,CAAC;IAES,SAAS;QACjB,OAAO;YACL,EAAE,IAAI,EAAE,IAAI,CAAC,OAAO,CAAC,OAAO,EAAE,OAAO,EAAE,IAAI,CAAC,WAAW,EAAE;YACzD,EAAE,IAAI,EAAE,IAAI,CAAC,OAAO,CAAC,UAAU,EAAE,OAAO,EAAE,IAAI,CAAC,SAAS,EAAE;YAC1D,EAAE,IAAI,EAAE,IAAI,CAAC,OAAO,CAAC,UAAU,EAAE,OAAO,EAAE,IAAI,CAAC,WAAW,EAAE;SAC7D,CAAC;IACJ,CAAC;;AAhCH,4BAkFC;AAjFQ,aAAI,GAAW,WAAW,CAAC;AAG3B,uBAAc,GAAoB;IACvC,QAAQ,EAAE,IAAI;IACd,KAAK,EAAE,IAAI;IACX,OAAO,EAAE,OAAO;IAChB,UAAU,EAAE,WAAW;IACvB,UAAU,EAAE,UAAU;IACtB,IAAI,EAAE,CAAC;IACP,QAAQ,EAAE,GAAG;CACd,CAAC","file":"view-zoom.js","sourcesContent":["import { throttle } from '@visactor/vutils';\nimport type { ViewZoomOptions, IView, InteractionEvent, IScale, IData, IViewZoomMixin } from '../types';\nimport { ViewNavigationBase } from './view-navigation-base';\n\nexport interface ViewZoom\n extends Pick<\n IViewZoomMixin,\n 'formatZoomEvent' | 'handleZoomStart' | 'handleZoomEnd' | 'handleZoomReset' | 'updateZoomRange'\n >,\n ViewNavigationBase<ViewZoomOptions> {}\nexport class ViewZoom extends ViewNavigationBase<ViewZoomOptions> {\n static type: string = 'view-zoom';\n type: string = ViewZoom.type;\n\n static defaultOptions: ViewZoomOptions = {\n realtime: true,\n focus: true,\n trigger: 'wheel',\n endTrigger: 'pointerup',\n triggerOff: 'dblclick',\n rate: 1,\n throttle: 100\n };\n\n protected _inited?: boolean;\n protected _lastScale: number;\n protected _scaleX: IScale;\n protected _scaleY: IScale;\n protected _data: IData;\n protected handleStart: (e: InteractionEvent) => void;\n\n constructor(view: IView, option?: ViewZoomOptions) {\n super(view, Object.assign({}, ViewZoom.defaultOptions, option));\n this.handleStart = throttle(this.handleStartInner, this.options.throttle);\n }\n\n protected getEvents() {\n return [\n { type: this.options.trigger, handler: this.handleStart },\n { type: this.options.endTrigger, handler: this.handleEnd },\n { type: this.options.triggerOff, handler: this.handleReset }\n ];\n }\n\n handleStartInner = (e: InteractionEvent) => {\n (this as unknown as IViewZoomMixin).formatZoomEvent(e);\n if (!e || (this.options.shouldStart && !this.options.shouldStart(e))) {\n return;\n }\n\n if (!this._inited) {\n this._initGrammars();\n }\n\n this.updateView(\n 'start',\n (this as unknown as IViewZoomMixin).handleZoomStart(e, this._state, {\n rate: this.options.rate,\n focus: this.options.focus\n })\n );\n };\n\n handleEnd = (e: InteractionEvent) => {\n (this as unknown as IViewZoomMixin).formatZoomEvent(e);\n if (!e || (this.options.shouldEnd && !this.options.shouldEnd(e))) {\n return;\n }\n\n this.updateView(\n 'end',\n (this as unknown as IViewZoomMixin).handleZoomEnd(e, this._state, {\n rate: this.options.rate,\n focus: this.options.focus\n }),\n e\n );\n };\n\n handleReset = (e: InteractionEvent) => {\n if (!e || (this.options.shouldReset && !this.options.shouldReset(e))) {\n return;\n }\n this.updateView(\n 'reset',\n (this as unknown as IViewZoomMixin).handleZoomReset(e, this._state, {\n rate: this.options.rate,\n focus: this.options.focus\n }),\n e\n );\n };\n}\n"]}
|
package/cjs/types/element.d.ts
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import type { IArc, IArc3d, IArea, ICircle, IGlyph, IGraphic, IGroup, IImage, ILine, IPath, IPolygon, IPyramid3d, IRect, IRect3d, IRichText, ISymbol, IText } from '@visactor/vrender-core';
|
|
2
2
|
import type { DiffState } from '../graph/enums';
|
|
3
3
|
import type { IMark, IGlyphMark } from './grammar';
|
|
4
|
-
import type { BaseEncodeSpec, MarkFunctionType, MarkKeySpec, MarkType } from './mark';
|
|
4
|
+
import type { BaseEncodeSpec, IMarkConfig, MarkFunctionType, MarkKeySpec, MarkType } from './mark';
|
|
5
5
|
export interface ElementGraphicMap {
|
|
6
6
|
circle: ICircle;
|
|
7
7
|
arc: IArc;
|
|
@@ -54,7 +54,7 @@ export interface IElement {
|
|
|
54
54
|
data?: any[];
|
|
55
55
|
items: MarkElementItem[];
|
|
56
56
|
initGraphicItem: (attrs?: any) => void;
|
|
57
|
-
updateGraphicItem: () => void;
|
|
57
|
+
updateGraphicItem: (config: IMarkConfig) => void;
|
|
58
58
|
getDatum: () => any;
|
|
59
59
|
getBounds: () => any;
|
|
60
60
|
getGraphicItem: () => IGraphic;
|
package/cjs/types/element.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../src/types/element.ts"],"names":[],"mappings":"","file":"element.js","sourcesContent":["import type {\n IArc,\n IArc3d,\n IArea,\n ICircle,\n IGlyph,\n IGraphic,\n IGroup,\n IImage,\n ILine,\n IPath,\n IPolygon,\n IPyramid3d,\n IRect,\n IRect3d,\n IRichText,\n ISymbol,\n IText\n} from '@visactor/vrender-core';\nimport type { DiffState } from '../graph/enums';\nimport type { IMark, IGlyphMark } from './grammar';\nimport type { BaseEncodeSpec, IMarkConfig, MarkFunctionType, MarkKeySpec, MarkType } from './mark';\n\nexport interface ElementGraphicMap {\n circle: ICircle;\n arc: IArc;\n area: IArea;\n image: IImage;\n line: ILine;\n path: IPath;\n rule: ILine;\n shape: IPath;\n symbol: ISymbol;\n text: IText;\n richtext: IRichText;\n polygon: IPolygon;\n cell: ISymbol;\n interval: IGraphic;\n rect: IRect;\n rect3d: IRect3d;\n arc3d: IArc3d;\n pyramid3d: IPyramid3d;\n group: IGroup;\n glyph: IGlyph;\n linkPath: IGlyph;\n treePath: IGlyph;\n wave: IGlyph;\n ripplePoint: IGlyph;\n barBoxplot: IGlyph;\n boxPlot: IGlyph;\n component: IGroup;\n axis: IGroup;\n legend: IGroup;\n corsshair: IGroup;\n slider: IGroup;\n datazoom: IGroup;\n label: IGroup;\n player: IGroup;\n}\n\nexport type GetGraphicByType<T> = T extends keyof ElementGraphicMap ? ElementGraphicMap[T] : IGraphic;\n\n/**\n * 保存graphicItem状态\n */\nexport interface MarkElementItem {\n /** 唯一key */\n key: string;\n /** 原始数据 */\n datum: any;\n /** VGrammar view */\n view: any;\n /** 当前渲染帧下graphicItem对应的最新属性 */\n nextAttrs?: any;\n /** 是否初始化过,用于解决collection mark对应的item,可能跳过enter状态的问题 */\n // hasEntered: boolean;\n}\nexport interface IElement {\n mark: IMark;\n isReserved: boolean;\n diffState: DiffState;\n key: string;\n groupKey?: string;\n data?: any[];\n /**\n * 不推荐使用,但是collection图元暂时可能回涉及到相关修改\n */\n items: MarkElementItem[];\n\n initGraphicItem: (attrs?: any) => void;\n updateGraphicItem: () => void;\n\n getDatum: () => any;\n getBounds: () => any;\n getGraphicItem: () => IGraphic;\n removeGraphicItem: () => void;\n resetGraphicItem: () => void;\n\n /**\n * 获取 graphic 视觉通道属性\n * @param channel 视觉通道\n * @param prev 是否从之前的 graphic 属性上获取,默认为 false\n * @returns 视觉通道值\n */\n getGraphicAttribute: (channel: string, prev?: boolean) => any;\n /**\n * 设置 graphic 视觉通道属性\n * @param channel 视觉通道\n * @param value 视觉通道属性\n * @param final 是否更新 graphic 最终变更的视觉通道结果,默认为 false\n */\n setGraphicAttribute: (channel: string, value: any, final?: boolean) => void;\n /**\n * 设置一系列 graphic 视觉通道属性\n * @param attributes 视觉通道键值对\n * @param final 是否更新 graphic 最终变更的视觉通道结果,默认为 false\n */\n setGraphicAttributes: (attributes: { [channel: string]: any }, final?: boolean) => void;\n\n /**\n * 【慎重使用】获取 VGrammar 自身的视觉通道属性\n * 只有在 'afterEncodeItems' 时机的mark transform中才能调用\n */\n getItemAttribute: (channel?: string) => any;\n /**\n * 【慎重使用】设置 VGrammar 自身的视觉通道\n * 只有在 'afterEncodeItems' 时机的mark transform中才能调用\n * @param attributes\n * @returns\n */\n setItemAttributes: (attributes: { [channel: string]: any } | any[]) => void;\n\n // element 执行流程相关接口\n updateData: (groupKey: string, data: any[], keyGenerator: MarkKeySpec, view: any) => void;\n state: (markState: MarkFunctionType<string | string[]>, parameters?: any) => void;\n encodeItems: (items: MarkElementItem[], encoders: BaseEncodeSpec, isReentered?: boolean, parameters?: any) => void;\n encodeGraphic: (attributes?: any) => void;\n transformElementItems: (items: MarkElementItem[], markType: MarkType, computePoints?: boolean) => Record<string, any>;\n remove: () => void;\n release: () => void;\n\n // 动画相关接口\n\n getFinalGraphicAttributes: () => { [key: string]: any };\n getPrevGraphicAttributes: () => { [key: string]: any };\n getNextGraphicAttributes: () => { [key: string]: any };\n clearChangedGraphicAttributes: () => void;\n clearGraphicAttributes: () => void;\n\n // state相关接口\n getStates: () => string[];\n hasState: (state: string) => boolean;\n clearStates: (noAnimation?: boolean) => void;\n addState: (state: string | string[], attrs?: any) => boolean;\n removeState: (state: string | string[]) => boolean;\n useStates: (states: string[], noAnimation?: boolean) => boolean;\n}\n\nexport interface IGlyphElement<P = any> extends IElement {\n mark: IGlyphMark;\n\n getGlyphGraphicItems: () => { [markName: string]: any };\n\n getGraphicAttribute: (channel: string, prev?: boolean, markName?: any) => any;\n setGraphicAttribute: (channel: string, value: any, final?: boolean, markName?: any) => void;\n setGraphicAttributes: (attributes: { [channel: string]: any }, final?: boolean, markName?: any) => void;\n\n getFinalGraphicAttributes: (markName?: string) => { [key: string]: any };\n getPrevGraphicAttributes: (markName?: string) => { [key: string]: any };\n getNextGraphicAttributes: (markName?: string) => { [key: string]: any };\n\n encodeCustom: (nextAttrs?: any) => { [markName: string]: any };\n}\n"]}
|
|
1
|
+
{"version":3,"sources":["../src/types/element.ts"],"names":[],"mappings":"","file":"element.js","sourcesContent":["import type {\n IArc,\n IArc3d,\n IArea,\n ICircle,\n IGlyph,\n IGraphic,\n IGroup,\n IImage,\n ILine,\n IPath,\n IPolygon,\n IPyramid3d,\n IRect,\n IRect3d,\n IRichText,\n ISymbol,\n IText\n} from '@visactor/vrender-core';\nimport type { DiffState } from '../graph/enums';\nimport type { IMark, IGlyphMark } from './grammar';\nimport type { BaseEncodeSpec, IMarkConfig, MarkFunctionType, MarkKeySpec, MarkType } from './mark';\n\nexport interface ElementGraphicMap {\n circle: ICircle;\n arc: IArc;\n area: IArea;\n image: IImage;\n line: ILine;\n path: IPath;\n rule: ILine;\n shape: IPath;\n symbol: ISymbol;\n text: IText;\n richtext: IRichText;\n polygon: IPolygon;\n cell: ISymbol;\n interval: IGraphic;\n rect: IRect;\n rect3d: IRect3d;\n arc3d: IArc3d;\n pyramid3d: IPyramid3d;\n group: IGroup;\n glyph: IGlyph;\n linkPath: IGlyph;\n treePath: IGlyph;\n wave: IGlyph;\n ripplePoint: IGlyph;\n barBoxplot: IGlyph;\n boxPlot: IGlyph;\n component: IGroup;\n axis: IGroup;\n legend: IGroup;\n corsshair: IGroup;\n slider: IGroup;\n datazoom: IGroup;\n label: IGroup;\n player: IGroup;\n}\n\nexport type GetGraphicByType<T> = T extends keyof ElementGraphicMap ? ElementGraphicMap[T] : IGraphic;\n\n/**\n * 保存graphicItem状态\n */\nexport interface MarkElementItem {\n /** 唯一key */\n key: string;\n /** 原始数据 */\n datum: any;\n /** VGrammar view */\n view: any;\n /** 当前渲染帧下graphicItem对应的最新属性 */\n nextAttrs?: any;\n /** 是否初始化过,用于解决collection mark对应的item,可能跳过enter状态的问题 */\n // hasEntered: boolean;\n}\nexport interface IElement {\n mark: IMark;\n isReserved: boolean;\n diffState: DiffState;\n key: string;\n groupKey?: string;\n data?: any[];\n /**\n * 不推荐使用,但是collection图元暂时可能回涉及到相关修改\n */\n items: MarkElementItem[];\n\n initGraphicItem: (attrs?: any) => void;\n updateGraphicItem: (config: IMarkConfig) => void;\n\n getDatum: () => any;\n getBounds: () => any;\n getGraphicItem: () => IGraphic;\n removeGraphicItem: () => void;\n resetGraphicItem: () => void;\n\n /**\n * 获取 graphic 视觉通道属性\n * @param channel 视觉通道\n * @param prev 是否从之前的 graphic 属性上获取,默认为 false\n * @returns 视觉通道值\n */\n getGraphicAttribute: (channel: string, prev?: boolean) => any;\n /**\n * 设置 graphic 视觉通道属性\n * @param channel 视觉通道\n * @param value 视觉通道属性\n * @param final 是否更新 graphic 最终变更的视觉通道结果,默认为 false\n */\n setGraphicAttribute: (channel: string, value: any, final?: boolean) => void;\n /**\n * 设置一系列 graphic 视觉通道属性\n * @param attributes 视觉通道键值对\n * @param final 是否更新 graphic 最终变更的视觉通道结果,默认为 false\n */\n setGraphicAttributes: (attributes: { [channel: string]: any }, final?: boolean) => void;\n\n /**\n * 【慎重使用】获取 VGrammar 自身的视觉通道属性\n * 只有在 'afterEncodeItems' 时机的mark transform中才能调用\n */\n getItemAttribute: (channel?: string) => any;\n /**\n * 【慎重使用】设置 VGrammar 自身的视觉通道\n * 只有在 'afterEncodeItems' 时机的mark transform中才能调用\n * @param attributes\n * @returns\n */\n setItemAttributes: (attributes: { [channel: string]: any } | any[]) => void;\n\n // element 执行流程相关接口\n updateData: (groupKey: string, data: any[], keyGenerator: MarkKeySpec, view: any) => void;\n state: (markState: MarkFunctionType<string | string[]>, parameters?: any) => void;\n encodeItems: (items: MarkElementItem[], encoders: BaseEncodeSpec, isReentered?: boolean, parameters?: any) => void;\n encodeGraphic: (attributes?: any) => void;\n transformElementItems: (items: MarkElementItem[], markType: MarkType, computePoints?: boolean) => Record<string, any>;\n remove: () => void;\n release: () => void;\n\n // 动画相关接口\n\n getFinalGraphicAttributes: () => { [key: string]: any };\n getPrevGraphicAttributes: () => { [key: string]: any };\n getNextGraphicAttributes: () => { [key: string]: any };\n clearChangedGraphicAttributes: () => void;\n clearGraphicAttributes: () => void;\n\n // state相关接口\n getStates: () => string[];\n hasState: (state: string) => boolean;\n clearStates: (noAnimation?: boolean) => void;\n addState: (state: string | string[], attrs?: any) => boolean;\n removeState: (state: string | string[]) => boolean;\n useStates: (states: string[], noAnimation?: boolean) => boolean;\n}\n\nexport interface IGlyphElement<P = any> extends IElement {\n mark: IGlyphMark;\n\n getGlyphGraphicItems: () => { [markName: string]: any };\n\n getGraphicAttribute: (channel: string, prev?: boolean, markName?: any) => any;\n setGraphicAttribute: (channel: string, value: any, final?: boolean, markName?: any) => void;\n setGraphicAttributes: (attributes: { [channel: string]: any }, final?: boolean, markName?: any) => void;\n\n getFinalGraphicAttributes: (markName?: string) => { [key: string]: any };\n getPrevGraphicAttributes: (markName?: string) => { [key: string]: any };\n getNextGraphicAttributes: (markName?: string) => { [key: string]: any };\n\n encodeCustom: (nextAttrs?: any) => { [markName: string]: any };\n}\n"]}
|
|
@@ -33,7 +33,6 @@ 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;
|
|
37
36
|
}
|
|
38
37
|
export interface IInteractionConstructor<T = any> {
|
|
39
38
|
readonly type: string;
|
|
@@ -42,7 +41,7 @@ export interface IInteractionConstructor<T = any> {
|
|
|
42
41
|
export interface ElementActiveOptions extends IBaseInteractionOptions {
|
|
43
42
|
selector?: string | string[] | IMark | IMark[];
|
|
44
43
|
trigger?: EventType | EventType[];
|
|
45
|
-
triggerOff?: EventType | EventType[]
|
|
44
|
+
triggerOff?: EventType | EventType[];
|
|
46
45
|
state?: string;
|
|
47
46
|
}
|
|
48
47
|
export interface ElementSelectOptions extends IBaseInteractionOptions {
|
|
@@ -50,13 +49,13 @@ export interface ElementSelectOptions extends IBaseInteractionOptions {
|
|
|
50
49
|
trigger?: EventType | EventType[];
|
|
51
50
|
state?: string;
|
|
52
51
|
reverseState?: string;
|
|
53
|
-
triggerOff?: EventType | EventType[] | ViewEventType | 'empty' |
|
|
52
|
+
triggerOff?: EventType | EventType[] | ViewEventType | 'empty' | number;
|
|
54
53
|
isMultiple?: boolean;
|
|
55
54
|
}
|
|
56
55
|
export interface ElementHighlightOptions extends IBaseInteractionOptions {
|
|
57
56
|
selector?: string | string[] | IMark | IMark[];
|
|
58
57
|
trigger?: EventType;
|
|
59
|
-
triggerOff?: EventType
|
|
58
|
+
triggerOff?: EventType;
|
|
60
59
|
highlightState?: string;
|
|
61
60
|
blurState?: string;
|
|
62
61
|
}
|
|
@@ -76,7 +75,7 @@ export interface ElementHighlightByLegendOptions extends IBaseInteractionOptions
|
|
|
76
75
|
export interface ElementHighlightByNameOptions extends ElementHighlightByLegendOptions {
|
|
77
76
|
graphicName?: string | string[];
|
|
78
77
|
trigger?: EventType;
|
|
79
|
-
triggerOff?: EventType
|
|
78
|
+
triggerOff?: EventType;
|
|
80
79
|
parseData?: (e: InteractionEvent) => any;
|
|
81
80
|
}
|
|
82
81
|
export interface BrushEventParams {
|
|
@@ -134,7 +133,7 @@ export type TooltipType = 'x' | 'y' | 'angle' | 'radius';
|
|
|
134
133
|
export interface TooltipOptions extends IBaseInteractionOptions {
|
|
135
134
|
selector?: string | string[] | IMark | IMark[];
|
|
136
135
|
trigger?: EventType;
|
|
137
|
-
triggerOff?: EventType
|
|
136
|
+
triggerOff?: EventType;
|
|
138
137
|
title?: ITooltipRow | string | CustomTooltipCallback;
|
|
139
138
|
content?: ITooltipRow | ITooltipRow[] | CustomTooltipCallback;
|
|
140
139
|
attributes?: MarkFunctionType<TooltipAttributes>;
|
|
@@ -154,7 +153,7 @@ export type CrosshairType = 'x' | 'y' | 'angle' | 'radius' | 'radius-polygon';
|
|
|
154
153
|
export type CrosshairShape = 'line' | 'rect';
|
|
155
154
|
export interface CrosshairOptions extends IBaseInteractionOptions {
|
|
156
155
|
trigger?: EventType;
|
|
157
|
-
triggerOff?: EventType
|
|
156
|
+
triggerOff?: EventType;
|
|
158
157
|
scale?: IScale | string;
|
|
159
158
|
crosshairType?: CrosshairType;
|
|
160
159
|
crosshairShape?: CrosshairShape;
|
|
@@ -173,8 +172,6 @@ export interface ViewNavigationBaseOptions {
|
|
|
173
172
|
throttle?: number;
|
|
174
173
|
linkedComponentX?: string | IDatazoom | IScrollbar;
|
|
175
174
|
linkedComponentY?: string | IDatazoom | IScrollbar;
|
|
176
|
-
rangeX?: [number, number] | (() => [number, number]);
|
|
177
|
-
rangeY?: [number, number] | (() => [number, number]);
|
|
178
175
|
}
|
|
179
176
|
export interface ViewZoomSimpleOptions {
|
|
180
177
|
realtime?: boolean;
|
|
@@ -182,7 +179,7 @@ export interface ViewZoomSimpleOptions {
|
|
|
182
179
|
focus?: boolean;
|
|
183
180
|
trigger?: EventType;
|
|
184
181
|
endTrigger?: EventType;
|
|
185
|
-
triggerOff?: EventType
|
|
182
|
+
triggerOff?: EventType;
|
|
186
183
|
}
|
|
187
184
|
export type ViewZoomOptions = ViewZoomSimpleOptions & IBaseInteractionOptions & ViewNavigationBaseOptions;
|
|
188
185
|
export interface ViewScrollSimpleOptions {
|
|
@@ -215,7 +212,7 @@ export interface SankeyHighlightOptions extends IBaseInteractionOptions {
|
|
|
215
212
|
nodeSelector?: string | IMark;
|
|
216
213
|
linkSelector?: string | IMark;
|
|
217
214
|
trigger?: EventType;
|
|
218
|
-
triggerOff?: EventType
|
|
215
|
+
triggerOff?: EventType;
|
|
219
216
|
highlightState?: string;
|
|
220
217
|
blurState?: string;
|
|
221
218
|
effect?: 'adjacency' | 'related';
|
|
@@ -236,7 +233,7 @@ export interface FishEyeOptions extends IBaseInteractionOptions {
|
|
|
236
233
|
trigger?: EventType;
|
|
237
234
|
endTrigger?: EventType;
|
|
238
235
|
updateTrigger?: EventType;
|
|
239
|
-
triggerOff?: string
|
|
236
|
+
triggerOff?: string;
|
|
240
237
|
}
|
|
241
238
|
export interface ElementActiveSpec extends ElementActiveOptions {
|
|
242
239
|
type: 'element-active';
|
|
@@ -366,7 +363,5 @@ export interface ViewStateByDim {
|
|
|
366
363
|
linkedComponent?: IDatazoom | IScrollbar;
|
|
367
364
|
filterValue?: any[];
|
|
368
365
|
wholeScale?: IBaseScale;
|
|
369
|
-
initRangeFactor?: [number, number];
|
|
370
|
-
getCurrentRange?: () => [number, number];
|
|
371
366
|
rangeFactor?: [number, number];
|
|
372
367
|
}
|
|
@@ -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 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"]}
|
|
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[];\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' | 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;\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;\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;\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;\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}\n\nexport interface ViewZoomSimpleOptions {\n realtime?: boolean;\n rate?: number;\n focus?: boolean;\n trigger?: EventType;\n endTrigger?: EventType;\n triggerOff?: EventType;\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;\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;\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 rangeFactor?: [number, number];\n}\n"]}
|
package/cjs/view/View.js
CHANGED
|
@@ -691,9 +691,8 @@ class View extends vutils_1.EventEmitter {
|
|
|
691
691
|
}
|
|
692
692
|
release() {
|
|
693
693
|
var _a, _b, _c;
|
|
694
|
-
this.
|
|
695
|
-
this.
|
|
696
|
-
this.grammars.release(), this._cachedGrammars.release(), this._dataflow.release(),
|
|
694
|
+
this.releaseStageEvent(), this._unBindResizeEvent(), this.clearProgressive(), factory_1.Factory.unregisterRuntimeTransforms(),
|
|
695
|
+
this.animate.stop(), this.grammars.release(), this._cachedGrammars.release(), this._dataflow.release(),
|
|
697
696
|
this._dataflow = null, null === (_b = null === (_a = this.renderer) || void 0 === _a ? void 0 : _a.release) || void 0 === _b || _b.call(_a),
|
|
698
697
|
this.renderer = null, this._boundInteractions = null, this.removeAllListeners(),
|
|
699
698
|
null === (_c = this._eventListeners) || void 0 === _c || _c.forEach((listener => {
|