@visactor/vchart 1.13.8-alpha.0 → 1.13.8-alpha.2
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/build/es5/index.js +1 -1
- package/build/index.es.js +60 -17
- package/build/index.js +60 -17
- package/build/index.min.js +1 -1
- package/build/tsconfig.tsbuildinfo +1 -1
- package/cjs/component/common/trigger/config.js +1 -1
- package/cjs/component/common/trigger/config.js.map +1 -1
- package/cjs/constant/funnel.js +1 -2
- package/cjs/constant/marker.js +2 -1
- package/cjs/core/index.d.ts +1 -1
- package/cjs/core/index.js +3 -2
- package/cjs/core/index.js.map +1 -1
- package/cjs/core/interface.js +1 -2
- package/cjs/interaction/zoom/zoomable.js +4 -1
- package/cjs/interaction/zoom/zoomable.js.map +1 -1
- package/esm/component/common/trigger/config.js +1 -1
- package/esm/component/common/trigger/config.js.map +1 -1
- package/esm/constant/funnel.js +1 -2
- package/esm/constant/marker.js +2 -1
- package/esm/core/index.d.ts +1 -1
- package/esm/core/index.js +3 -2
- package/esm/core/index.js.map +1 -1
- package/esm/core/interface.js +1 -2
- package/esm/interaction/zoom/zoomable.js +4 -1
- package/esm/interaction/zoom/zoomable.js.map +1 -1
- package/package.json +14 -14
|
@@ -18,7 +18,7 @@ function getDefaultTriggerEventByMode(mode) {
|
|
|
18
18
|
} : (0, env_1.isMobileLikeMode)(mode) || (0, env_1.isMiniAppLikeMode)(mode) ? {
|
|
19
19
|
start: "pointerdown",
|
|
20
20
|
move: "pointermove",
|
|
21
|
-
end: [ "pointerup", "pointerupoutside" ],
|
|
21
|
+
end: [ "pointerup", "pointerupoutside", "pointerleave" ],
|
|
22
22
|
zoom: "pinch",
|
|
23
23
|
zoomEnd: "pinchend",
|
|
24
24
|
scroll: "pan",
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../src/component/common/trigger/config.ts"],"names":[],"mappings":";;;AAEA,yDAA8D;AAC9D,2CAAwE;AACxE,uCAA2C;AAC3C,qCAAyC;AAEzC,SAAgB,4BAA4B,CAAC,IAAgB;IAC3D,IAAI,IAAI,KAAK,uBAAc,CAAC,iBAAiB,CAAC,IAAI,IAAI,KAAK,uBAAc,CAAC,iBAAiB,CAAC,EAAE;QAC5F,OAAO;YACL,KAAK,EAAE,aAAa;YACpB,IAAI,EAAE,aAAa;YACnB,GAAG,EAAE,CAAC,WAAW,EAAE,kBAAkB,CAAC;YACtC,IAAI,EAAE,OAAO;YACb,OAAO,EAAE,WAAW;YACpB,MAAM,EAAE,OAAO;YAEf,OAAO,EAAE,wBAAc;SACxB,CAAC;KACH;IAED,IAAI,IAAA,sBAAgB,EAAC,IAAI,CAAC,IAAI,IAAA,uBAAiB,EAAC,IAAI,CAAC,EAAE;QACrD,OAAO;YACL,KAAK,EAAE,aAAa;YACpB,IAAI,EAAE,aAAa;YACnB,GAAG,EAAE,CAAC,WAAW,EAAE,kBAAkB,CAAC;
|
|
1
|
+
{"version":3,"sources":["../src/component/common/trigger/config.ts"],"names":[],"mappings":";;;AAEA,yDAA8D;AAC9D,2CAAwE;AACxE,uCAA2C;AAC3C,qCAAyC;AAEzC,SAAgB,4BAA4B,CAAC,IAAgB;IAC3D,IAAI,IAAI,KAAK,uBAAc,CAAC,iBAAiB,CAAC,IAAI,IAAI,KAAK,uBAAc,CAAC,iBAAiB,CAAC,EAAE;QAC5F,OAAO;YACL,KAAK,EAAE,aAAa;YACpB,IAAI,EAAE,aAAa;YACnB,GAAG,EAAE,CAAC,WAAW,EAAE,kBAAkB,CAAC;YACtC,IAAI,EAAE,OAAO;YACb,OAAO,EAAE,WAAW;YACpB,MAAM,EAAE,OAAO;YAEf,OAAO,EAAE,wBAAc;SACxB,CAAC;KACH;IAED,IAAI,IAAA,sBAAgB,EAAC,IAAI,CAAC,IAAI,IAAA,uBAAiB,EAAC,IAAI,CAAC,EAAE;QACrD,OAAO;YACL,KAAK,EAAE,aAAa;YACpB,IAAI,EAAE,aAAa;YACnB,GAAG,EAAE,CAAC,WAAW,EAAE,kBAAkB,EAAE,cAAc,CAAC;YACtD,IAAI,EAAE,OAAO;YACb,OAAO,EAAE,UAAU;YACnB,MAAM,EAAE,KAAK;YACb,SAAS,EAAE,QAAQ;YACnB,OAAO,EAAE,sBAAa;SACvB,CAAC;KACH;IAED,OAAO,IAAI,CAAC;AACd,CAAC;AA5BD,oEA4BC","file":"config.js","sourcesContent":["import type { RenderMode } from '../../../typings/spec';\n// eslint-disable-next-line no-duplicate-imports\nimport { RenderModeEnum } from '../../../typings/spec/common';\nimport { isMiniAppLikeMode, isMobileLikeMode } from '../../../util/env';\nimport { DeskTopTrigger } from './desktop';\nimport { MobileTrigger } from './mobile';\n\nexport function getDefaultTriggerEventByMode(mode: RenderMode) {\n if (mode === RenderModeEnum['desktop-browser'] || mode === RenderModeEnum['desktop-miniApp']) {\n return {\n start: 'pointerdown',\n move: 'pointermove',\n end: ['pointerup', 'pointerupoutside'],\n zoom: 'wheel',\n zoomEnd: 'pointerup',\n scroll: 'wheel',\n // scrollEnd: 'pointerup',\n trigger: DeskTopTrigger\n };\n }\n\n if (isMobileLikeMode(mode) || isMiniAppLikeMode(mode)) {\n return {\n start: 'pointerdown',\n move: 'pointermove',\n end: ['pointerup', 'pointerupoutside', 'pointerleave'],\n zoom: 'pinch',\n zoomEnd: 'pinchend',\n scroll: 'pan',\n scrollEnd: 'panend',\n trigger: MobileTrigger\n };\n }\n\n return null;\n}\n"]}
|
package/cjs/constant/funnel.js
CHANGED
|
@@ -12,5 +12,4 @@ exports.FUNNEL_LAST_VALUE_RATIO = `${base_1.PREFIX}_FUNNEL_LAST_VALUE_RATIO`, ex
|
|
|
12
12
|
exports.FUNNEL_LAST_VALUE = `${base_1.PREFIX}_FUNNEL_LAST_VALUE`, exports.FUNNEL_CURRENT_VALUE = `${base_1.PREFIX}_FUNNEL_CURRENT_VALUE`,
|
|
13
13
|
exports.FUNNEL_NEXT_VALUE = `${base_1.PREFIX}_FUNNEL_NEXT_VALUE`, exports.FUNNEL_TRANSFORM_LEVEL = `${base_1.PREFIX}_FUNNEL_TRANSFORM_LEVEL`,
|
|
14
14
|
exports.FUNNEL_LABEL_LINE_LENGTH = 20, exports.FUNNEL_LABEL_SPACE_WIDTH = 5, exports.FUNNEL_MAX_SIZE = "80%",
|
|
15
|
-
exports.FUNNEL_MIN_SIZE = 0;
|
|
16
|
-
//# sourceMappingURL=funnel.js.map
|
|
15
|
+
exports.FUNNEL_MIN_SIZE = 0;
|
package/cjs/constant/marker.js
CHANGED
|
@@ -3,4 +3,5 @@
|
|
|
3
3
|
Object.defineProperty(exports, "__esModule", {
|
|
4
4
|
value: !0
|
|
5
5
|
}), exports.REGRESS_TYPE = exports.AGGR_TYPE = void 0, exports.AGGR_TYPE = [ "sum", "average", "min", "max", "variance", "standardDeviation", "median" ],
|
|
6
|
-
exports.REGRESS_TYPE = [ "regression" ];
|
|
6
|
+
exports.REGRESS_TYPE = [ "regression" ];
|
|
7
|
+
//# sourceMappingURL=marker.js.map
|
package/cjs/core/index.d.ts
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import { VChart } from './vchart';
|
|
2
2
|
import { Factory } from './factory';
|
|
3
3
|
export { VChart, Factory };
|
|
4
|
-
export declare const version = "1.13.8-alpha.
|
|
4
|
+
export declare const version = "1.13.8-alpha.2";
|
|
5
5
|
export type { IVChart } from './interface';
|
|
6
6
|
export type { IStateSpec, StateValueType } from '../compile/mark';
|
|
7
7
|
export type { IRegion } from '../region/interface';
|
package/cjs/core/index.js
CHANGED
|
@@ -35,7 +35,7 @@ Object.defineProperty(exports, "Factory", {
|
|
|
35
35
|
get: function() {
|
|
36
36
|
return factory_1.Factory;
|
|
37
37
|
}
|
|
38
|
-
}), exports.version = "1.13.8-alpha.
|
|
38
|
+
}), exports.version = "1.13.8-alpha.2", __exportStar(require("../typings/spec/common"), exports),
|
|
39
39
|
__exportStar(require("../event/interface"), exports), __exportStar(require("../theme/interface"), exports),
|
|
40
40
|
__exportStar(require("./interface"), exports), __exportStar(require("../constant/base"), exports),
|
|
41
41
|
__exportStar(require("../constant/data"), exports), __exportStar(require("../typings/spec/index"), exports),
|
|
@@ -88,4 +88,5 @@ Object.defineProperty(exports, "vglobal", {
|
|
|
88
88
|
get: function() {
|
|
89
89
|
return vrender_core_1.createSymbol;
|
|
90
90
|
}
|
|
91
|
-
});
|
|
91
|
+
});
|
|
92
|
+
//# sourceMappingURL=index.js.map
|
package/cjs/core/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../src/core/index.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;AAIA,qCAAkC;AAGzB,uFAHA,eAAM,OAGA;AAFf,uCAAoC;AAEnB,wFAFR,iBAAO,OAEQ;AAGX,QAAA,OAAO,GAAG,gBAAgB,CAAC;AAOxC,yDAAuC;AACvC,qDAAmC;AACnC,qDAAmC;AACnC,8CAA4B;AAG5B,mDAAiC;AACjC,mDAAiC;AAKjC,wDAAsC;AAGtC,qDAAmC;AAGnC,iDAA+B;AAG/B,uDAUgC;AAT9B,uGAAA,OAAO,OAAA;AACP,2GAAA,WAAW,OAAA;AACX,8GAAA,cAAc,OAAA;AACd,0GAAA,UAAU,OAAA;AACV,yGAAA,SAAS,OAAA;AACT,0GAAA,UAAU,OAAA;AACV,0GAAA,UAAU,OAAA;AACV,0GAAA,UAAU,OAAA;AACV,4GAAA,YAAY,OAAA","file":"index.js","sourcesContent":["/**\n * @description The core module of VChart, containing the necessary interfaces for using VChart.\n */\n\nimport { VChart } from './vchart';\nimport { Factory } from './factory';\n\nexport { VChart, Factory };\n\n// export the version\nexport const version = \"1.13.8-alpha.
|
|
1
|
+
{"version":3,"sources":["../src/core/index.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;AAIA,qCAAkC;AAGzB,uFAHA,eAAM,OAGA;AAFf,uCAAoC;AAEnB,wFAFR,iBAAO,OAEQ;AAGX,QAAA,OAAO,GAAG,gBAAgB,CAAC;AAOxC,yDAAuC;AACvC,qDAAmC;AACnC,qDAAmC;AACnC,8CAA4B;AAG5B,mDAAiC;AACjC,mDAAiC;AAKjC,wDAAsC;AAGtC,qDAAmC;AAGnC,iDAA+B;AAG/B,uDAUgC;AAT9B,uGAAA,OAAO,OAAA;AACP,2GAAA,WAAW,OAAA;AACX,8GAAA,cAAc,OAAA;AACd,0GAAA,UAAU,OAAA;AACV,yGAAA,SAAS,OAAA;AACT,0GAAA,UAAU,OAAA;AACV,0GAAA,UAAU,OAAA;AACV,0GAAA,UAAU,OAAA;AACV,4GAAA,YAAY,OAAA","file":"index.js","sourcesContent":["/**\n * @description The core module of VChart, containing the necessary interfaces for using VChart.\n */\n\nimport { VChart } from './vchart';\nimport { Factory } from './factory';\n\nexport { VChart, Factory };\n\n// export the version\nexport const version = \"1.13.8-alpha.2\";\n\n// export necessary types\nexport type { IVChart } from './interface';\nexport type { IStateSpec, StateValueType } from '../compile/mark';\nexport type { IRegion } from '../region/interface';\n\nexport * from '../typings/spec/common';\nexport * from '../event/interface';\nexport * from '../theme/interface';\nexport * from './interface';\n\n// some constants\nexport * from '../constant/base';\nexport * from '../constant/data';\n\n/**\n * spec\n */\nexport * from '../typings/spec/index';\n\n// tooltip\nexport * from '../typings/tooltip';\n\n// theme\nexport * from '../theme/index';\n\n// vrender\nexport {\n vglobal,\n createGroup,\n createRichText,\n createText,\n createArc,\n createArea,\n createRect,\n createLine,\n createSymbol\n} from '@visactor/vrender-core';\n"]}
|
package/cjs/core/interface.js
CHANGED
|
@@ -33,6 +33,7 @@ class Zoomable {
|
|
|
33
33
|
x: zoomX,
|
|
34
34
|
y: zoomY
|
|
35
35
|
}, this._getRegionOrSeriesLayout(regionOrSeries), !1)) return;
|
|
36
|
+
this._clearDragEvent(), this._zoomableTrigger.clearScroll();
|
|
36
37
|
let extendParams = {};
|
|
37
38
|
callback && (extendParams = callback({
|
|
38
39
|
zoomDelta: zoomDelta,
|
|
@@ -94,7 +95,8 @@ class Zoomable {
|
|
|
94
95
|
vutils_1.pointInRect)({
|
|
95
96
|
x: canvasX,
|
|
96
97
|
y: canvasY
|
|
97
|
-
}, this._getRegionOrSeriesLayout(regionOrSeries), !1) ? (
|
|
98
|
+
}, this._getRegionOrSeriesLayout(regionOrSeries), !1) ? (this._clearDragEvent(),
|
|
99
|
+
this._zoomableTrigger.clearZoom(), callback && (stopBubble = callback({
|
|
98
100
|
scrollX: scrollX,
|
|
99
101
|
scrollY: scrollY
|
|
100
102
|
}, event)), this._eventObj.emit("scroll", {
|
|
@@ -179,6 +181,7 @@ class Zoomable {
|
|
|
179
181
|
var _a, _b, _c;
|
|
180
182
|
if (this._clearDragEvent(), this._option.disableTriggerEvent) return;
|
|
181
183
|
if (this._clickEnable = !1, !this._zoomableTrigger.parserDragEvent(params.event)) return;
|
|
184
|
+
this._zoomableTrigger.clearZoom(), this._zoomableTrigger.clearScroll();
|
|
182
185
|
const delayType = null !== (_a = null == option ? void 0 : option.delayType) && void 0 !== _a ? _a : "throttle", delayTime = null !== (_b = null == option ? void 0 : option.delayTime) && void 0 !== _b ? _b : 0, realTime = null === (_c = null == option ? void 0 : option.realTime) || void 0 === _c || _c, move = this._getZoomTriggerEvent("move"), end = this._getZoomTriggerEvent("end"), event = params.event;
|
|
183
186
|
let moveX = event.canvasX, moveY = event.canvasY, upX = event.canvasX, upY = event.canvasY;
|
|
184
187
|
this._handleDragMouseUp = delayMap[delayType]((params => {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../src/interaction/zoom/zoomable.ts"],"names":[],"mappings":"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","file":"zoomable.js","sourcesContent":["import type { IModelOption } from './../../model/interface';\n/* eslint-disable no-duplicate-imports */\nimport { debounce, isNil, pointInRect, throttle } from '@visactor/vutils';\nimport type { BaseEventParams, EventQuery, EventType, ExtendEventParam, IEvent } from '../../event/interface';\nimport type { IRegion } from '../../region/interface';\nimport type { RenderMode } from '../../typings/spec';\nimport { RenderModeEnum } from '../../typings/spec/common';\nimport { getDefaultTriggerEventByMode } from '../../component/common/trigger/config';\nimport type { IZoomTrigger } from '../../component/common/trigger/interface';\nimport type { ISeries } from '../../series/interface';\nimport { Event_Bubble_Level, Event_Source_Type } from '../../constant/event';\nimport type { IDelayType } from '../../typings/event';\nimport { isMiniAppLikeMode, isMobileLikeMode } from '../../util';\nimport type { Gesture } from '@visactor/vrender-kits';\n\nconst delayMap = {\n debounce: debounce,\n throttle: throttle\n};\n\nexport interface ITriggerOption {\n delayType: IDelayType;\n delayTime: number;\n realTime: boolean;\n // 在某些场景中, 组件不应该触发zoom事件, 例如滚动分页的离散图例\n // 但在另一些场景中, 组件应该触发zoom事件, 例如缩略轴和滚动条\n // 当前代码逻辑中, 默认不触发组件zoom事件\n // 所以增设该配置, 用于允许组件触发zoom事件\n allowComponentZoom?: boolean;\n}\n\nexport type ZoomEventParams = { zoomDelta: number; zoomX: number; zoomY: number };\n\nexport type ZoomCallback = (params: ZoomEventParams, e: BaseEventParams['event']) => Record<string, any> | void;\n\nexport interface IZoomable {\n initZoomable: (evt: IEvent, mode?: RenderMode) => void;\n initZoomEventOfSeries: (s: ISeries, callback?: ZoomCallback) => any;\n initZoomEventOfRegions: (\n regions: IRegion[],\n filter?: (s: ISeries) => boolean,\n callback?: ZoomCallback,\n option?: ITriggerOption\n ) => void;\n\n initScrollEventOfSeries: (\n s: ISeries,\n callback?: (params: { scrollX: number; scrollY: number }, e: BaseEventParams['event']) => void\n ) => any;\n initScrollEventOfRegions: (\n regions: IRegion[],\n filter?: (s: ISeries) => boolean,\n callback?: (params: { scrollX: number; scrollY: number }, e: BaseEventParams['event']) => void,\n option?: ITriggerOption\n ) => void;\n\n initDragEventOfSeries: (\n s: ISeries,\n callback?: (delta: [number, number], e: BaseEventParams['event']) => void,\n option?: ITriggerOption\n ) => any;\n\n initDragEventOfRegions: (\n regions: IRegion[],\n filter?: (s: ISeries) => boolean,\n callback?: (delta: [number, number], e: BaseEventParams['event']) => void,\n option?: ITriggerOption\n ) => void;\n}\n\nexport class Zoomable implements IZoomable {\n private _clickEnable: boolean;\n\n private _option: IModelOption;\n\n private _zoomableTrigger: IZoomTrigger;\n\n private _eventObj: IEvent;\n\n private _renderMode: RenderMode;\n\n private _gestureController!: Gesture | null;\n\n private _isGestureListener: boolean = false;\n\n initZoomable(evt: IEvent, mode: RenderMode = RenderModeEnum['desktop-browser']) {\n this._eventObj = evt;\n this._renderMode = mode;\n this._gestureController = (this._option.getChart().getVGrammarView().renderer as any)._gestureController;\n this._isGestureListener = isMobileLikeMode(this._renderMode) || isMiniAppLikeMode(this._renderMode);\n if (getDefaultTriggerEventByMode(this._renderMode)) {\n // hack 应该由事件系统做?或者事件系统有更好的方式处理这种交互冲突场景\n\n // 只在drag时屏蔽,而zoom、scroll时不屏蔽\n // drag move: 屏蔽\n // darg end 结束屏蔽\n // 屏蔽时:clickEnable应该为false,即其他逻辑不允许响应click\n this._clickEnable = true;\n this._zoomableTrigger = new (this._getZoomTriggerEvent('trigger') as any)();\n }\n }\n\n // event\n private _getZoomTriggerEvent(type: string): EventType | EventType[] {\n return getDefaultTriggerEventByMode(this._renderMode)[type];\n }\n\n private _zoomEventDispatch(\n params: BaseEventParams,\n regionOrSeries: IRegion | ISeries,\n callback?: ZoomCallback,\n allowComponentZoom?: boolean\n ) {\n if (!this._isGestureListener && !params.event) {\n return;\n }\n const event = this._isGestureListener ? params : params.event.clone();\n this._zoomableTrigger.parserZoomEvent(event);\n // FIXME: event类型目前不全\n const { zoomDelta, zoomX, zoomY, path } = event as any;\n\n // 不响应由组件触发的 zoom 事件(例如滚动分页的离散图例)\n if (!allowComponentZoom && !path.some((node: any) => node.name && node.name.includes('region'))) {\n return;\n }\n\n if (isNil(zoomDelta)) {\n return;\n }\n if (\n !pointInRect(\n {\n x: zoomX,\n y: zoomY\n },\n this._getRegionOrSeriesLayout(regionOrSeries),\n false\n )\n ) {\n return;\n }\n let extendParams: ReturnType<typeof callback> = {};\n if (callback) {\n extendParams = callback({ zoomDelta, zoomX, zoomY }, event);\n }\n this._eventObj.emit('zoom', {\n scale: event.zoomDelta,\n scaleCenter: { x: event.zoomX, y: event.zoomY },\n ...extendParams,\n model: this\n } as unknown as ExtendEventParam);\n }\n\n private _getRegionOrSeriesLayout(rs: IRegion | ISeries) {\n if (rs.type !== 'region') {\n rs = (<ISeries>rs).getRegion();\n }\n const { x, y, width, height } = rs.layout.getLayout();\n return {\n x1: x,\n y1: y,\n x2: x + width,\n y2: y + height\n };\n }\n\n private _bindZoomEventAsRegion(\n eventObj: IEvent,\n regionOrSeries: IRegion | ISeries,\n callback?: ZoomCallback,\n option?: ITriggerOption\n ) {\n const delayType = option?.delayType ?? 'throttle';\n const delayTime = option?.delayTime ?? 0;\n\n const event = this._isGestureListener ? this._gestureController : eventObj;\n const zoomParams = this._isGestureListener\n ? [this._getZoomTriggerEvent('zoom')]\n : [this._getZoomTriggerEvent('zoom'), { level: Event_Bubble_Level.chart, consume: true }];\n const zoomEndParams: [string] | [string, EventQuery] = this._isGestureListener\n ? [this._getZoomTriggerEvent('zoomEnd') as string]\n : [this._getZoomTriggerEvent('zoomEnd') as string, { level: Event_Bubble_Level.chart, consume: false }];\n // pc端没有scrollEnd事件,所以漫游模式下scroll仅支持realTime\n (event as any).on(\n ...zoomEndParams,\n delayMap[delayType]((params: BaseEventParams) => {\n this._zoomableTrigger.clearZoom();\n }, delayTime) as any\n );\n\n (event as any).on(\n ...zoomParams,\n delayMap[delayType]((params: BaseEventParams) => {\n // if (realTime) {\n this._zoomEventDispatch(params, regionOrSeries, callback, option?.allowComponentZoom ?? false);\n // }\n }, delayTime) as any\n );\n }\n\n initZoomEventOfSeries(s: ISeries, callback?: ZoomCallback, option?: ITriggerOption) {\n if (this._option.disableTriggerEvent) {\n return;\n }\n if (getDefaultTriggerEventByMode(this._renderMode)) {\n this._bindZoomEventAsRegion(s.event, s, callback, option);\n }\n }\n\n initZoomEventOfRegions(\n regions: IRegion[],\n filter?: (s: ISeries) => boolean,\n callback?: ZoomCallback,\n option?: ITriggerOption\n ) {\n if (this._option.disableTriggerEvent) {\n return;\n }\n if (getDefaultTriggerEventByMode(this._renderMode)) {\n regions.forEach(r => {\n if (filter) {\n r.getSeries().forEach(s => {\n if (filter(s)) {\n this._bindZoomEventAsRegion(s.event, s, callback, option);\n }\n });\n } else {\n this._bindZoomEventAsRegion(this._eventObj, r, callback, option);\n }\n });\n }\n }\n\n private _scrollEventDispatch(\n params: BaseEventParams,\n regionOrSeries: IRegion | ISeries,\n callback?: (params: { scrollX: number; scrollY: number }, e: BaseEventParams['event']) => any\n ) {\n let stopBubble: boolean | undefined = false;\n if (!this._isGestureListener && (!params.event || this._option.disableTriggerEvent)) {\n return stopBubble;\n }\n const event = this._isGestureListener ? params : params.event;\n this._zoomableTrigger.parserScrollEvent(event);\n // FIXME: event类型目前不全\n const { scrollX, scrollY, canvasX, canvasY } = event as any;\n if (isNil(scrollX) && isNil(scrollY)) {\n return stopBubble;\n }\n if (\n !pointInRect(\n {\n x: canvasX,\n y: canvasY\n },\n this._getRegionOrSeriesLayout(regionOrSeries),\n false\n )\n ) {\n return stopBubble;\n }\n\n if (callback) {\n stopBubble = callback({ scrollX, scrollY }, event as any);\n }\n this._eventObj.emit('scroll', {\n scrollX,\n scrollY,\n model: this\n } as unknown as ExtendEventParam);\n\n return stopBubble;\n }\n\n private _bindScrollEventAsRegion(\n eventObj: IEvent,\n regionOrSeries: IRegion | ISeries,\n callback?: (params: { scrollX: number; scrollY: number }, e: BaseEventParams['event']) => any,\n option?: ITriggerOption\n ) {\n const delayType = option?.delayType ?? 'throttle';\n const delayTime = option?.delayTime ?? 0;\n\n const event = this._isGestureListener ? this._gestureController : eventObj;\n const scrollParams = this._isGestureListener\n ? [this._getZoomTriggerEvent('scroll')]\n : [this._getZoomTriggerEvent('scroll'), { level: Event_Bubble_Level.chart, consume: true }];\n const scrollEndParams = this._isGestureListener\n ? [this._getZoomTriggerEvent('scrollEnd')]\n : [this._getZoomTriggerEvent('scrollEnd'), { level: Event_Bubble_Level.chart, consume: false }];\n\n // pc端没有scrollEnd事件,所以漫游模式下scroll仅支持realTime\n (event as any).on(\n ...scrollEndParams,\n delayMap[delayType]((params: any) => {\n this._zoomableTrigger.clearScroll();\n }, delayTime)\n );\n\n (event as any).on(\n ...scrollParams,\n delayMap[delayType]((params: any) => {\n // if (realTime) {\n return this._scrollEventDispatch(params, regionOrSeries, callback);\n // }\n }, delayTime)\n );\n }\n\n initScrollEventOfSeries(\n s: ISeries,\n callback?: (params: { scrollX: number; scrollY: number }, e: BaseEventParams['event']) => void,\n option?: ITriggerOption\n ) {\n if (getDefaultTriggerEventByMode(this._renderMode)) {\n this._bindScrollEventAsRegion(s.event, s, callback, option);\n }\n }\n\n initScrollEventOfRegions(\n regions: IRegion[],\n filter?: (s: ISeries) => boolean,\n callback?: (params: { scrollX: number; scrollY: number }, e: BaseEventParams['event']) => void,\n option?: ITriggerOption\n ) {\n if (this._option.disableTriggerEvent) {\n return;\n }\n if (getDefaultTriggerEventByMode(this._renderMode)) {\n regions.forEach(r => {\n if (filter) {\n r.getSeries().forEach(s => {\n if (filter(s)) {\n this._bindScrollEventAsRegion(s.event, s, callback, option);\n }\n });\n } else {\n this._bindScrollEventAsRegion(this._eventObj, r, callback, option);\n }\n });\n }\n }\n\n private _bindDragEventAsRegion(\n eventObj: IEvent,\n regionOrSeries: IRegion | ISeries,\n callback?: (delta: [number, number], e: BaseEventParams['event']) => void,\n option?: ITriggerOption\n ) {\n eventObj.on(this._getZoomTriggerEvent('start') as string, { level: Event_Bubble_Level.chart }, (params: any) => {\n if (!params.event) {\n return;\n }\n\n const { event } = params;\n const shouldTrigger = pointInRect(\n {\n x: event.canvasX,\n y: event.canvasY\n },\n this._getRegionOrSeriesLayout(regionOrSeries),\n false\n );\n if (shouldTrigger) {\n this._handleDrag(params, callback, option);\n }\n });\n // hack 应该由事件系统做?或者事件系统有更好的方式处理这种交互冲突场景\n\n // 只在drag时屏蔽,而zoom、scrol时不屏蔽\n // drag move: 屏蔽\n // darg end 结束屏蔽\n // 屏蔽时:clickEnable应该为false,即其他逻辑不允许响应click\n eventObj.on('click', { level: Event_Bubble_Level.chart }, () => {\n return !this._clickEnable;\n });\n }\n\n initDragEventOfSeries(\n s: ISeries,\n callback?: (delta: [number, number], e: BaseEventParams['event']) => void,\n option?: ITriggerOption\n ) {\n if (this._option.disableTriggerEvent) {\n return;\n }\n if (getDefaultTriggerEventByMode(this._renderMode)) {\n s.event.on(\n this._getZoomTriggerEvent('start') as string,\n { level: Event_Bubble_Level.model, filter: ({ model }) => model?.id === s.id },\n params => {\n this._handleDrag(params, callback, option);\n }\n );\n }\n }\n\n initDragEventOfRegions(\n regions: IRegion[],\n filter?: (s: ISeries) => boolean,\n callback?: (delta: [number, number], e: BaseEventParams['event']) => void,\n option?: ITriggerOption\n ) {\n if (this._option.disableTriggerEvent) {\n return;\n }\n if (getDefaultTriggerEventByMode(this._renderMode)) {\n regions.forEach(r => {\n if (filter) {\n r.getSeries().forEach(s => {\n if (filter(s)) {\n s.event.on(\n this._getZoomTriggerEvent('start') as string,\n { level: Event_Bubble_Level.model, filter: ({ model }) => model?.id === s.id },\n params => {\n this._handleDrag(params, callback);\n }\n );\n\n // click 事件需要在drag和zoom时被屏蔽\n // hack 应该由事件系统做?或者事件系统有更好的方式处理这种交互冲突场景\n\n // 只在drag时屏蔽,而zoom、scrol时不屏蔽\n // drag move: 屏蔽\n // darg end 结束屏蔽\n // 屏蔽时:clickEnable应该为false,即其他逻辑不允许响应click\n s.event.on(\n 'click',\n { level: Event_Bubble_Level.model, filter: ({ model }) => model?.id === s.id },\n () => {\n return !this._clickEnable;\n }\n );\n }\n });\n } else {\n this._bindDragEventAsRegion(this._eventObj, r, callback, option);\n }\n });\n }\n }\n\n private _handleDragMouseUp?: (params: ExtendEventParam) => void;\n private _handleDragMouseMove?: (params: ExtendEventParam) => void;\n\n protected _clearDragEvent() {\n const move = this._getZoomTriggerEvent('move') as string;\n const end = this._getZoomTriggerEvent('end') as string[];\n\n if (this._handleDragMouseMove) {\n this._eventObj.off(\n move,\n { level: Event_Bubble_Level.chart, source: Event_Source_Type.chart },\n this._handleDragMouseMove\n );\n this._handleDragMouseMove = undefined;\n }\n\n if (this._handleDragMouseUp) {\n end.forEach(endEventType => {\n this._eventObj.off(\n endEventType,\n { level: Event_Bubble_Level.chart, source: Event_Source_Type.chart },\n this._handleDragMouseUp\n );\n this._eventObj.allow(endEventType);\n });\n\n this._handleDragMouseUp = undefined;\n }\n }\n\n protected _handleDrag(\n params: ExtendEventParam,\n callback?: (delta: [number, number], e: BaseEventParams['event']) => void,\n option?: ITriggerOption\n ) {\n this._clearDragEvent();\n if (this._option.disableTriggerEvent) {\n return;\n }\n this._clickEnable = false;\n if (!this._zoomableTrigger.parserDragEvent(params.event)) {\n return;\n }\n const delayType = option?.delayType ?? 'throttle';\n const delayTime = option?.delayTime ?? 0;\n const realTime = option?.realTime ?? true;\n const move = this._getZoomTriggerEvent('move') as string;\n const end = this._getZoomTriggerEvent('end') as string[];\n const event = params.event;\n let moveX = event.canvasX;\n let moveY = event.canvasY;\n let upX = event.canvasX;\n let upY = event.canvasY;\n\n this._handleDragMouseUp = delayMap[delayType]((params: ExtendEventParam) => {\n this._clickEnable = true;\n const event = params.event as any;\n const dx = event.canvasX - upX;\n const dy = event.canvasY - upY;\n const delta: [number, number] = [dx, dy];\n\n upX = event.canvasX;\n upY = event.canvasY;\n\n if (!realTime && callback) {\n callback(delta, params.event);\n }\n\n this._eventObj.emit('panend', {\n delta,\n model: this\n } as unknown as BaseEventParams);\n this._zoomableTrigger.pointerId = null;\n this._clearDragEvent();\n }, delayTime);\n\n this._handleDragMouseMove = delayMap[delayType]((params: ExtendEventParam) => {\n if (!this._zoomableTrigger.parserDragEvent(params.event)) {\n return;\n }\n this._clickEnable = false;\n end.forEach(endEventType => this._eventObj.prevent(endEventType, this._handleDragMouseUp as any));\n\n const event = params.event;\n const dx = event.canvasX - moveX;\n const dy = event.canvasY - moveY;\n const delta: [number, number] = [dx, dy];\n\n moveX = event.canvasX;\n moveY = event.canvasY;\n\n if (realTime && callback) {\n callback(delta, params.event);\n }\n this._eventObj.emit('panmove', {\n delta,\n model: this\n } as unknown as ExtendEventParam);\n }, delayTime);\n\n this._eventObj.on(\n move,\n { level: Event_Bubble_Level.chart, source: Event_Source_Type.chart },\n this._handleDragMouseMove as any\n );\n end.forEach(endEventType => {\n this._eventObj.on(\n endEventType,\n { level: Event_Bubble_Level.chart, source: Event_Source_Type.chart },\n this._handleDragMouseUp\n );\n });\n }\n}\n"]}
|
|
1
|
+
{"version":3,"sources":["../src/interaction/zoom/zoomable.ts"],"names":[],"mappings":"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","file":"zoomable.js","sourcesContent":["import type { IModelOption } from './../../model/interface';\n/* eslint-disable no-duplicate-imports */\nimport { debounce, isNil, pointInRect, throttle } from '@visactor/vutils';\nimport type { BaseEventParams, EventQuery, EventType, ExtendEventParam, IEvent } from '../../event/interface';\nimport type { IRegion } from '../../region/interface';\nimport type { RenderMode } from '../../typings/spec';\nimport { RenderModeEnum } from '../../typings/spec/common';\nimport { getDefaultTriggerEventByMode } from '../../component/common/trigger/config';\nimport type { IZoomTrigger } from '../../component/common/trigger/interface';\nimport type { ISeries } from '../../series/interface';\nimport { Event_Bubble_Level, Event_Source_Type } from '../../constant/event';\nimport type { IDelayType } from '../../typings/event';\nimport { isMiniAppLikeMode, isMobileLikeMode } from '../../util';\nimport type { Gesture } from '@visactor/vrender-kits';\n\nconst delayMap = {\n debounce: debounce,\n throttle: throttle\n};\n\nexport interface ITriggerOption {\n delayType: IDelayType;\n delayTime: number;\n realTime: boolean;\n // 在某些场景中, 组件不应该触发zoom事件, 例如滚动分页的离散图例\n // 但在另一些场景中, 组件应该触发zoom事件, 例如缩略轴和滚动条\n // 当前代码逻辑中, 默认不触发组件zoom事件\n // 所以增设该配置, 用于允许组件触发zoom事件\n allowComponentZoom?: boolean;\n}\n\nexport type ZoomEventParams = { zoomDelta: number; zoomX: number; zoomY: number };\n\nexport type ZoomCallback = (params: ZoomEventParams, e: BaseEventParams['event']) => Record<string, any> | void;\n\nexport interface IZoomable {\n initZoomable: (evt: IEvent, mode?: RenderMode) => void;\n initZoomEventOfSeries: (s: ISeries, callback?: ZoomCallback) => any;\n initZoomEventOfRegions: (\n regions: IRegion[],\n filter?: (s: ISeries) => boolean,\n callback?: ZoomCallback,\n option?: ITriggerOption\n ) => void;\n\n initScrollEventOfSeries: (\n s: ISeries,\n callback?: (params: { scrollX: number; scrollY: number }, e: BaseEventParams['event']) => void\n ) => any;\n initScrollEventOfRegions: (\n regions: IRegion[],\n filter?: (s: ISeries) => boolean,\n callback?: (params: { scrollX: number; scrollY: number }, e: BaseEventParams['event']) => void,\n option?: ITriggerOption\n ) => void;\n\n initDragEventOfSeries: (\n s: ISeries,\n callback?: (delta: [number, number], e: BaseEventParams['event']) => void,\n option?: ITriggerOption\n ) => any;\n\n initDragEventOfRegions: (\n regions: IRegion[],\n filter?: (s: ISeries) => boolean,\n callback?: (delta: [number, number], e: BaseEventParams['event']) => void,\n option?: ITriggerOption\n ) => void;\n}\n\nexport class Zoomable implements IZoomable {\n private _clickEnable: boolean;\n\n private _option: IModelOption;\n\n private _zoomableTrigger: IZoomTrigger;\n\n private _eventObj: IEvent;\n\n private _renderMode: RenderMode;\n\n private _gestureController!: Gesture | null;\n\n private _isGestureListener: boolean = false;\n\n initZoomable(evt: IEvent, mode: RenderMode = RenderModeEnum['desktop-browser']) {\n this._eventObj = evt;\n this._renderMode = mode;\n this._gestureController = (this._option.getChart().getVGrammarView().renderer as any)._gestureController;\n this._isGestureListener = isMobileLikeMode(this._renderMode) || isMiniAppLikeMode(this._renderMode);\n if (getDefaultTriggerEventByMode(this._renderMode)) {\n // hack 应该由事件系统做?或者事件系统有更好的方式处理这种交互冲突场景\n\n // 只在drag时屏蔽,而zoom、scroll时不屏蔽\n // drag move: 屏蔽\n // darg end 结束屏蔽\n // 屏蔽时:clickEnable应该为false,即其他逻辑不允许响应click\n this._clickEnable = true;\n this._zoomableTrigger = new (this._getZoomTriggerEvent('trigger') as any)();\n }\n }\n\n // event\n private _getZoomTriggerEvent(type: string): EventType | EventType[] {\n return getDefaultTriggerEventByMode(this._renderMode)[type];\n }\n\n private _zoomEventDispatch(\n params: BaseEventParams,\n regionOrSeries: IRegion | ISeries,\n callback?: ZoomCallback,\n allowComponentZoom?: boolean\n ) {\n if (!this._isGestureListener && !params.event) {\n return;\n }\n const event = this._isGestureListener ? params : params.event.clone();\n this._zoomableTrigger.parserZoomEvent(event);\n // FIXME: event类型目前不全\n const { zoomDelta, zoomX, zoomY, path } = event as any;\n\n // 不响应由组件触发的 zoom 事件(例如滚动分页的离散图例)\n if (!allowComponentZoom && !path.some((node: any) => node.name && node.name.includes('region'))) {\n return;\n }\n\n if (isNil(zoomDelta)) {\n return;\n }\n if (\n !pointInRect(\n {\n x: zoomX,\n y: zoomY\n },\n this._getRegionOrSeriesLayout(regionOrSeries),\n false\n )\n ) {\n return;\n }\n this._clearDragEvent(); // 防止drag 事件被同时触发,状态混乱\n this._zoomableTrigger.clearScroll(); // 防止scroll事件被同时触发,状态混乱\n\n let extendParams: ReturnType<typeof callback> = {};\n if (callback) {\n extendParams = callback({ zoomDelta, zoomX, zoomY }, event);\n }\n this._eventObj.emit('zoom', {\n scale: event.zoomDelta,\n scaleCenter: { x: event.zoomX, y: event.zoomY },\n ...extendParams,\n model: this\n } as unknown as ExtendEventParam);\n }\n\n private _getRegionOrSeriesLayout(rs: IRegion | ISeries) {\n if (rs.type !== 'region') {\n rs = (<ISeries>rs).getRegion();\n }\n const { x, y, width, height } = rs.layout.getLayout();\n return {\n x1: x,\n y1: y,\n x2: x + width,\n y2: y + height\n };\n }\n\n private _bindZoomEventAsRegion(\n eventObj: IEvent,\n regionOrSeries: IRegion | ISeries,\n callback?: ZoomCallback,\n option?: ITriggerOption\n ) {\n const delayType = option?.delayType ?? 'throttle';\n const delayTime = option?.delayTime ?? 0;\n\n const event = this._isGestureListener ? this._gestureController : eventObj;\n const zoomParams = this._isGestureListener\n ? [this._getZoomTriggerEvent('zoom')]\n : [this._getZoomTriggerEvent('zoom'), { level: Event_Bubble_Level.chart, consume: true }];\n const zoomEndParams: [string] | [string, EventQuery] = this._isGestureListener\n ? [this._getZoomTriggerEvent('zoomEnd') as string]\n : [this._getZoomTriggerEvent('zoomEnd') as string, { level: Event_Bubble_Level.chart, consume: false }];\n // pc端没有scrollEnd事件,所以漫游模式下scroll仅支持realTime\n (event as any).on(\n ...zoomEndParams,\n delayMap[delayType]((params: BaseEventParams) => {\n this._zoomableTrigger.clearZoom();\n }, delayTime) as any\n );\n\n (event as any).on(\n ...zoomParams,\n delayMap[delayType]((params: BaseEventParams) => {\n // if (realTime) {\n this._zoomEventDispatch(params, regionOrSeries, callback, option?.allowComponentZoom ?? false);\n // }\n }, delayTime) as any\n );\n }\n\n initZoomEventOfSeries(s: ISeries, callback?: ZoomCallback, option?: ITriggerOption) {\n if (this._option.disableTriggerEvent) {\n return;\n }\n if (getDefaultTriggerEventByMode(this._renderMode)) {\n this._bindZoomEventAsRegion(s.event, s, callback, option);\n }\n }\n\n initZoomEventOfRegions(\n regions: IRegion[],\n filter?: (s: ISeries) => boolean,\n callback?: ZoomCallback,\n option?: ITriggerOption\n ) {\n if (this._option.disableTriggerEvent) {\n return;\n }\n if (getDefaultTriggerEventByMode(this._renderMode)) {\n regions.forEach(r => {\n if (filter) {\n r.getSeries().forEach(s => {\n if (filter(s)) {\n this._bindZoomEventAsRegion(s.event, s, callback, option);\n }\n });\n } else {\n this._bindZoomEventAsRegion(this._eventObj, r, callback, option);\n }\n });\n }\n }\n\n private _scrollEventDispatch(\n params: BaseEventParams,\n regionOrSeries: IRegion | ISeries,\n callback?: (params: { scrollX: number; scrollY: number }, e: BaseEventParams['event']) => any\n ) {\n let stopBubble: boolean | undefined = false;\n if (!this._isGestureListener && (!params.event || this._option.disableTriggerEvent)) {\n return stopBubble;\n }\n const event = this._isGestureListener ? params : params.event;\n this._zoomableTrigger.parserScrollEvent(event);\n // FIXME: event类型目前不全\n const { scrollX, scrollY, canvasX, canvasY } = event as any;\n if (isNil(scrollX) && isNil(scrollY)) {\n return stopBubble;\n }\n if (\n !pointInRect(\n {\n x: canvasX,\n y: canvasY\n },\n this._getRegionOrSeriesLayout(regionOrSeries),\n false\n )\n ) {\n return stopBubble;\n }\n this._clearDragEvent(); // 防止drag 同时触发,状态混乱\n this._zoomableTrigger.clearZoom(); // 防止zoom同时触发,状态混乱\n\n if (callback) {\n stopBubble = callback({ scrollX, scrollY }, event as any);\n }\n this._eventObj.emit('scroll', {\n scrollX,\n scrollY,\n model: this\n } as unknown as ExtendEventParam);\n\n return stopBubble;\n }\n\n private _bindScrollEventAsRegion(\n eventObj: IEvent,\n regionOrSeries: IRegion | ISeries,\n callback?: (params: { scrollX: number; scrollY: number }, e: BaseEventParams['event']) => any,\n option?: ITriggerOption\n ) {\n const delayType = option?.delayType ?? 'throttle';\n const delayTime = option?.delayTime ?? 0;\n\n const event = this._isGestureListener ? this._gestureController : eventObj;\n const scrollParams = this._isGestureListener\n ? [this._getZoomTriggerEvent('scroll')]\n : [this._getZoomTriggerEvent('scroll'), { level: Event_Bubble_Level.chart, consume: true }];\n const scrollEndParams = this._isGestureListener\n ? [this._getZoomTriggerEvent('scrollEnd')]\n : [this._getZoomTriggerEvent('scrollEnd'), { level: Event_Bubble_Level.chart, consume: false }];\n\n // pc端没有scrollEnd事件,所以漫游模式下scroll仅支持realTime\n (event as any).on(\n ...scrollEndParams,\n delayMap[delayType]((params: any) => {\n this._zoomableTrigger.clearScroll();\n }, delayTime)\n );\n\n (event as any).on(\n ...scrollParams,\n delayMap[delayType]((params: any) => {\n // if (realTime) {\n return this._scrollEventDispatch(params, regionOrSeries, callback);\n // }\n }, delayTime)\n );\n }\n\n initScrollEventOfSeries(\n s: ISeries,\n callback?: (params: { scrollX: number; scrollY: number }, e: BaseEventParams['event']) => void,\n option?: ITriggerOption\n ) {\n if (getDefaultTriggerEventByMode(this._renderMode)) {\n this._bindScrollEventAsRegion(s.event, s, callback, option);\n }\n }\n\n initScrollEventOfRegions(\n regions: IRegion[],\n filter?: (s: ISeries) => boolean,\n callback?: (params: { scrollX: number; scrollY: number }, e: BaseEventParams['event']) => void,\n option?: ITriggerOption\n ) {\n if (this._option.disableTriggerEvent) {\n return;\n }\n if (getDefaultTriggerEventByMode(this._renderMode)) {\n regions.forEach(r => {\n if (filter) {\n r.getSeries().forEach(s => {\n if (filter(s)) {\n this._bindScrollEventAsRegion(s.event, s, callback, option);\n }\n });\n } else {\n this._bindScrollEventAsRegion(this._eventObj, r, callback, option);\n }\n });\n }\n }\n\n private _bindDragEventAsRegion(\n eventObj: IEvent,\n regionOrSeries: IRegion | ISeries,\n callback?: (delta: [number, number], e: BaseEventParams['event']) => void,\n option?: ITriggerOption\n ) {\n eventObj.on(this._getZoomTriggerEvent('start') as string, { level: Event_Bubble_Level.chart }, (params: any) => {\n if (!params.event) {\n return;\n }\n\n const { event } = params;\n const shouldTrigger = pointInRect(\n {\n x: event.canvasX,\n y: event.canvasY\n },\n this._getRegionOrSeriesLayout(regionOrSeries),\n false\n );\n if (shouldTrigger) {\n this._handleDrag(params, callback, option);\n }\n });\n // hack 应该由事件系统做?或者事件系统有更好的方式处理这种交互冲突场景\n\n // 只在drag时屏蔽,而zoom、scrol时不屏蔽\n // drag move: 屏蔽\n // darg end 结束屏蔽\n // 屏蔽时:clickEnable应该为false,即其他逻辑不允许响应click\n eventObj.on('click', { level: Event_Bubble_Level.chart }, () => {\n return !this._clickEnable;\n });\n }\n\n initDragEventOfSeries(\n s: ISeries,\n callback?: (delta: [number, number], e: BaseEventParams['event']) => void,\n option?: ITriggerOption\n ) {\n if (this._option.disableTriggerEvent) {\n return;\n }\n if (getDefaultTriggerEventByMode(this._renderMode)) {\n s.event.on(\n this._getZoomTriggerEvent('start') as string,\n { level: Event_Bubble_Level.model, filter: ({ model }) => model?.id === s.id },\n params => {\n this._handleDrag(params, callback, option);\n }\n );\n }\n }\n\n initDragEventOfRegions(\n regions: IRegion[],\n filter?: (s: ISeries) => boolean,\n callback?: (delta: [number, number], e: BaseEventParams['event']) => void,\n option?: ITriggerOption\n ) {\n if (this._option.disableTriggerEvent) {\n return;\n }\n if (getDefaultTriggerEventByMode(this._renderMode)) {\n regions.forEach(r => {\n if (filter) {\n r.getSeries().forEach(s => {\n if (filter(s)) {\n s.event.on(\n this._getZoomTriggerEvent('start') as string,\n { level: Event_Bubble_Level.model, filter: ({ model }) => model?.id === s.id },\n params => {\n this._handleDrag(params, callback);\n }\n );\n\n // click 事件需要在drag和zoom时被屏蔽\n // hack 应该由事件系统做?或者事件系统有更好的方式处理这种交互冲突场景\n\n // 只在drag时屏蔽,而zoom、scrol时不屏蔽\n // drag move: 屏蔽\n // darg end 结束屏蔽\n // 屏蔽时:clickEnable应该为false,即其他逻辑不允许响应click\n s.event.on(\n 'click',\n { level: Event_Bubble_Level.model, filter: ({ model }) => model?.id === s.id },\n () => {\n return !this._clickEnable;\n }\n );\n }\n });\n } else {\n this._bindDragEventAsRegion(this._eventObj, r, callback, option);\n }\n });\n }\n }\n\n private _handleDragMouseUp?: (params: ExtendEventParam) => void;\n private _handleDragMouseMove?: (params: ExtendEventParam) => void;\n\n protected _clearDragEvent() {\n const move = this._getZoomTriggerEvent('move') as string;\n const end = this._getZoomTriggerEvent('end') as string[];\n\n if (this._handleDragMouseMove) {\n this._eventObj.off(\n move,\n { level: Event_Bubble_Level.chart, source: Event_Source_Type.chart },\n this._handleDragMouseMove\n );\n this._handleDragMouseMove = undefined;\n }\n\n if (this._handleDragMouseUp) {\n end.forEach(endEventType => {\n this._eventObj.off(\n endEventType,\n { level: Event_Bubble_Level.chart, source: Event_Source_Type.chart },\n this._handleDragMouseUp\n );\n this._eventObj.allow(endEventType);\n });\n\n this._handleDragMouseUp = undefined;\n }\n }\n\n protected _handleDrag(\n params: ExtendEventParam,\n callback?: (delta: [number, number], e: BaseEventParams['event']) => void,\n option?: ITriggerOption\n ) {\n this._clearDragEvent();\n if (this._option.disableTriggerEvent) {\n return;\n }\n this._clickEnable = false;\n if (!this._zoomableTrigger.parserDragEvent(params.event)) {\n return;\n }\n this._zoomableTrigger.clearZoom(); // 防止zoom 事件被同时触发, 状态混乱\n this._zoomableTrigger.clearScroll(); // 防止 scroll 事件被同时触发, 状态混乱\n const delayType = option?.delayType ?? 'throttle';\n const delayTime = option?.delayTime ?? 0;\n const realTime = option?.realTime ?? true;\n const move = this._getZoomTriggerEvent('move') as string;\n const end = this._getZoomTriggerEvent('end') as string[];\n const event = params.event;\n let moveX = event.canvasX;\n let moveY = event.canvasY;\n let upX = event.canvasX;\n let upY = event.canvasY;\n\n this._handleDragMouseUp = delayMap[delayType]((params: ExtendEventParam) => {\n this._clickEnable = true;\n const event = params.event as any;\n const dx = event.canvasX - upX;\n const dy = event.canvasY - upY;\n const delta: [number, number] = [dx, dy];\n\n upX = event.canvasX;\n upY = event.canvasY;\n\n if (!realTime && callback) {\n callback(delta, params.event);\n }\n\n this._eventObj.emit('panend', {\n delta,\n model: this\n } as unknown as BaseEventParams);\n this._zoomableTrigger.pointerId = null;\n this._clearDragEvent();\n }, delayTime);\n\n this._handleDragMouseMove = delayMap[delayType]((params: ExtendEventParam) => {\n if (!this._zoomableTrigger.parserDragEvent(params.event)) {\n return;\n }\n this._clickEnable = false;\n end.forEach(endEventType => this._eventObj.prevent(endEventType, this._handleDragMouseUp as any));\n\n const event = params.event;\n const dx = event.canvasX - moveX;\n const dy = event.canvasY - moveY;\n const delta: [number, number] = [dx, dy];\n\n moveX = event.canvasX;\n moveY = event.canvasY;\n\n if (realTime && callback) {\n callback(delta, params.event);\n }\n this._eventObj.emit('panmove', {\n delta,\n model: this\n } as unknown as ExtendEventParam);\n }, delayTime);\n\n this._eventObj.on(\n move,\n { level: Event_Bubble_Level.chart, source: Event_Source_Type.chart },\n this._handleDragMouseMove as any\n );\n end.forEach(endEventType => {\n this._eventObj.on(\n endEventType,\n { level: Event_Bubble_Level.chart, source: Event_Source_Type.chart },\n this._handleDragMouseUp\n );\n });\n }\n}\n"]}
|
|
@@ -18,7 +18,7 @@ export function getDefaultTriggerEventByMode(mode) {
|
|
|
18
18
|
} : isMobileLikeMode(mode) || isMiniAppLikeMode(mode) ? {
|
|
19
19
|
start: "pointerdown",
|
|
20
20
|
move: "pointermove",
|
|
21
|
-
end: [ "pointerup", "pointerupoutside" ],
|
|
21
|
+
end: [ "pointerup", "pointerupoutside", "pointerleave" ],
|
|
22
22
|
zoom: "pinch",
|
|
23
23
|
zoomEnd: "pinchend",
|
|
24
24
|
scroll: "pan",
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../src/component/common/trigger/config.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,cAAc,EAAE,MAAM,8BAA8B,CAAC;AAC9D,OAAO,EAAE,iBAAiB,EAAE,gBAAgB,EAAE,MAAM,mBAAmB,CAAC;AACxE,OAAO,EAAE,cAAc,EAAE,MAAM,WAAW,CAAC;AAC3C,OAAO,EAAE,aAAa,EAAE,MAAM,UAAU,CAAC;AAEzC,MAAM,UAAU,4BAA4B,CAAC,IAAgB;IAC3D,IAAI,IAAI,KAAK,cAAc,CAAC,iBAAiB,CAAC,IAAI,IAAI,KAAK,cAAc,CAAC,iBAAiB,CAAC,EAAE;QAC5F,OAAO;YACL,KAAK,EAAE,aAAa;YACpB,IAAI,EAAE,aAAa;YACnB,GAAG,EAAE,CAAC,WAAW,EAAE,kBAAkB,CAAC;YACtC,IAAI,EAAE,OAAO;YACb,OAAO,EAAE,WAAW;YACpB,MAAM,EAAE,OAAO;YAEf,OAAO,EAAE,cAAc;SACxB,CAAC;KACH;IAED,IAAI,gBAAgB,CAAC,IAAI,CAAC,IAAI,iBAAiB,CAAC,IAAI,CAAC,EAAE;QACrD,OAAO;YACL,KAAK,EAAE,aAAa;YACpB,IAAI,EAAE,aAAa;YACnB,GAAG,EAAE,CAAC,WAAW,EAAE,kBAAkB,CAAC;
|
|
1
|
+
{"version":3,"sources":["../src/component/common/trigger/config.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,cAAc,EAAE,MAAM,8BAA8B,CAAC;AAC9D,OAAO,EAAE,iBAAiB,EAAE,gBAAgB,EAAE,MAAM,mBAAmB,CAAC;AACxE,OAAO,EAAE,cAAc,EAAE,MAAM,WAAW,CAAC;AAC3C,OAAO,EAAE,aAAa,EAAE,MAAM,UAAU,CAAC;AAEzC,MAAM,UAAU,4BAA4B,CAAC,IAAgB;IAC3D,IAAI,IAAI,KAAK,cAAc,CAAC,iBAAiB,CAAC,IAAI,IAAI,KAAK,cAAc,CAAC,iBAAiB,CAAC,EAAE;QAC5F,OAAO;YACL,KAAK,EAAE,aAAa;YACpB,IAAI,EAAE,aAAa;YACnB,GAAG,EAAE,CAAC,WAAW,EAAE,kBAAkB,CAAC;YACtC,IAAI,EAAE,OAAO;YACb,OAAO,EAAE,WAAW;YACpB,MAAM,EAAE,OAAO;YAEf,OAAO,EAAE,cAAc;SACxB,CAAC;KACH;IAED,IAAI,gBAAgB,CAAC,IAAI,CAAC,IAAI,iBAAiB,CAAC,IAAI,CAAC,EAAE;QACrD,OAAO;YACL,KAAK,EAAE,aAAa;YACpB,IAAI,EAAE,aAAa;YACnB,GAAG,EAAE,CAAC,WAAW,EAAE,kBAAkB,EAAE,cAAc,CAAC;YACtD,IAAI,EAAE,OAAO;YACb,OAAO,EAAE,UAAU;YACnB,MAAM,EAAE,KAAK;YACb,SAAS,EAAE,QAAQ;YACnB,OAAO,EAAE,aAAa;SACvB,CAAC;KACH;IAED,OAAO,IAAI,CAAC;AACd,CAAC","file":"config.js","sourcesContent":["import type { RenderMode } from '../../../typings/spec';\n// eslint-disable-next-line no-duplicate-imports\nimport { RenderModeEnum } from '../../../typings/spec/common';\nimport { isMiniAppLikeMode, isMobileLikeMode } from '../../../util/env';\nimport { DeskTopTrigger } from './desktop';\nimport { MobileTrigger } from './mobile';\n\nexport function getDefaultTriggerEventByMode(mode: RenderMode) {\n if (mode === RenderModeEnum['desktop-browser'] || mode === RenderModeEnum['desktop-miniApp']) {\n return {\n start: 'pointerdown',\n move: 'pointermove',\n end: ['pointerup', 'pointerupoutside'],\n zoom: 'wheel',\n zoomEnd: 'pointerup',\n scroll: 'wheel',\n // scrollEnd: 'pointerup',\n trigger: DeskTopTrigger\n };\n }\n\n if (isMobileLikeMode(mode) || isMiniAppLikeMode(mode)) {\n return {\n start: 'pointerdown',\n move: 'pointermove',\n end: ['pointerup', 'pointerupoutside', 'pointerleave'],\n zoom: 'pinch',\n zoomEnd: 'pinchend',\n scroll: 'pan',\n scrollEnd: 'panend',\n trigger: MobileTrigger\n };\n }\n\n return null;\n}\n"]}
|
package/esm/constant/funnel.js
CHANGED
package/esm/constant/marker.js
CHANGED
package/esm/core/index.d.ts
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import { VChart } from './vchart';
|
|
2
2
|
import { Factory } from './factory';
|
|
3
3
|
export { VChart, Factory };
|
|
4
|
-
export declare const version = "1.13.8-alpha.
|
|
4
|
+
export declare const version = "1.13.8-alpha.2";
|
|
5
5
|
export type { IVChart } from './interface';
|
|
6
6
|
export type { IStateSpec, StateValueType } from '../compile/mark';
|
|
7
7
|
export type { IRegion } from '../region/interface';
|
package/esm/core/index.js
CHANGED
|
@@ -4,7 +4,7 @@ import { Factory } from "./factory";
|
|
|
4
4
|
|
|
5
5
|
export { VChart, Factory };
|
|
6
6
|
|
|
7
|
-
export const version = "1.13.8-alpha.
|
|
7
|
+
export const version = "1.13.8-alpha.2";
|
|
8
8
|
|
|
9
9
|
export * from "../typings/spec/common";
|
|
10
10
|
|
|
@@ -24,4 +24,5 @@ export * from "../typings/tooltip";
|
|
|
24
24
|
|
|
25
25
|
export * from "../theme/index";
|
|
26
26
|
|
|
27
|
-
export { vglobal, createGroup, createRichText, createText, createArc, createArea, createRect, createLine, createSymbol } from "@visactor/vrender-core";
|
|
27
|
+
export { vglobal, createGroup, createRichText, createText, createArc, createArea, createRect, createLine, createSymbol } from "@visactor/vrender-core";
|
|
28
|
+
//# sourceMappingURL=index.js.map
|
package/esm/core/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../src/core/index.ts"],"names":[],"mappings":"AAIA,OAAO,EAAE,MAAM,EAAE,MAAM,UAAU,CAAC;AAClC,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAEpC,OAAO,EAAE,MAAM,EAAE,OAAO,EAAE,CAAC;AAG3B,MAAM,CAAC,MAAM,OAAO,GAAG,gBAAgB,CAAC;AAOxC,cAAc,wBAAwB,CAAC;AACvC,cAAc,oBAAoB,CAAC;AACnC,cAAc,oBAAoB,CAAC;AACnC,cAAc,aAAa,CAAC;AAG5B,cAAc,kBAAkB,CAAC;AACjC,cAAc,kBAAkB,CAAC;AAKjC,cAAc,uBAAuB,CAAC;AAGtC,cAAc,oBAAoB,CAAC;AAGnC,cAAc,gBAAgB,CAAC;AAG/B,OAAO,EACL,OAAO,EACP,WAAW,EACX,cAAc,EACd,UAAU,EACV,SAAS,EACT,UAAU,EACV,UAAU,EACV,UAAU,EACV,YAAY,EACb,MAAM,wBAAwB,CAAC","file":"index.js","sourcesContent":["/**\n * @description The core module of VChart, containing the necessary interfaces for using VChart.\n */\n\nimport { VChart } from './vchart';\nimport { Factory } from './factory';\n\nexport { VChart, Factory };\n\n// export the version\nexport const version = \"1.13.8-alpha.
|
|
1
|
+
{"version":3,"sources":["../src/core/index.ts"],"names":[],"mappings":"AAIA,OAAO,EAAE,MAAM,EAAE,MAAM,UAAU,CAAC;AAClC,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAEpC,OAAO,EAAE,MAAM,EAAE,OAAO,EAAE,CAAC;AAG3B,MAAM,CAAC,MAAM,OAAO,GAAG,gBAAgB,CAAC;AAOxC,cAAc,wBAAwB,CAAC;AACvC,cAAc,oBAAoB,CAAC;AACnC,cAAc,oBAAoB,CAAC;AACnC,cAAc,aAAa,CAAC;AAG5B,cAAc,kBAAkB,CAAC;AACjC,cAAc,kBAAkB,CAAC;AAKjC,cAAc,uBAAuB,CAAC;AAGtC,cAAc,oBAAoB,CAAC;AAGnC,cAAc,gBAAgB,CAAC;AAG/B,OAAO,EACL,OAAO,EACP,WAAW,EACX,cAAc,EACd,UAAU,EACV,SAAS,EACT,UAAU,EACV,UAAU,EACV,UAAU,EACV,YAAY,EACb,MAAM,wBAAwB,CAAC","file":"index.js","sourcesContent":["/**\n * @description The core module of VChart, containing the necessary interfaces for using VChart.\n */\n\nimport { VChart } from './vchart';\nimport { Factory } from './factory';\n\nexport { VChart, Factory };\n\n// export the version\nexport const version = \"1.13.8-alpha.2\";\n\n// export necessary types\nexport type { IVChart } from './interface';\nexport type { IStateSpec, StateValueType } from '../compile/mark';\nexport type { IRegion } from '../region/interface';\n\nexport * from '../typings/spec/common';\nexport * from '../event/interface';\nexport * from '../theme/interface';\nexport * from './interface';\n\n// some constants\nexport * from '../constant/base';\nexport * from '../constant/data';\n\n/**\n * spec\n */\nexport * from '../typings/spec/index';\n\n// tooltip\nexport * from '../typings/tooltip';\n\n// theme\nexport * from '../theme/index';\n\n// vrender\nexport {\n vglobal,\n createGroup,\n createRichText,\n createText,\n createArc,\n createArea,\n createRect,\n createLine,\n createSymbol\n} from '@visactor/vrender-core';\n"]}
|
package/esm/core/interface.js
CHANGED
|
@@ -1,2 +1 @@
|
|
|
1
|
-
export { };
|
|
2
|
-
//# sourceMappingURL=interface.js.map
|
|
1
|
+
export { };
|
|
@@ -36,6 +36,7 @@ export class Zoomable {
|
|
|
36
36
|
x: zoomX,
|
|
37
37
|
y: zoomY
|
|
38
38
|
}, this._getRegionOrSeriesLayout(regionOrSeries), !1)) return;
|
|
39
|
+
this._clearDragEvent(), this._zoomableTrigger.clearScroll();
|
|
39
40
|
let extendParams = {};
|
|
40
41
|
callback && (extendParams = callback({
|
|
41
42
|
zoomDelta: zoomDelta,
|
|
@@ -96,7 +97,8 @@ export class Zoomable {
|
|
|
96
97
|
return isNil(scrollX) && isNil(scrollY) ? stopBubble : pointInRect({
|
|
97
98
|
x: canvasX,
|
|
98
99
|
y: canvasY
|
|
99
|
-
}, this._getRegionOrSeriesLayout(regionOrSeries), !1) ? (
|
|
100
|
+
}, this._getRegionOrSeriesLayout(regionOrSeries), !1) ? (this._clearDragEvent(),
|
|
101
|
+
this._zoomableTrigger.clearZoom(), callback && (stopBubble = callback({
|
|
100
102
|
scrollX: scrollX,
|
|
101
103
|
scrollY: scrollY
|
|
102
104
|
}, event)), this._eventObj.emit("scroll", {
|
|
@@ -181,6 +183,7 @@ export class Zoomable {
|
|
|
181
183
|
var _a, _b, _c;
|
|
182
184
|
if (this._clearDragEvent(), this._option.disableTriggerEvent) return;
|
|
183
185
|
if (this._clickEnable = !1, !this._zoomableTrigger.parserDragEvent(params.event)) return;
|
|
186
|
+
this._zoomableTrigger.clearZoom(), this._zoomableTrigger.clearScroll();
|
|
184
187
|
const delayType = null !== (_a = null == option ? void 0 : option.delayType) && void 0 !== _a ? _a : "throttle", delayTime = null !== (_b = null == option ? void 0 : option.delayTime) && void 0 !== _b ? _b : 0, realTime = null === (_c = null == option ? void 0 : option.realTime) || void 0 === _c || _c, move = this._getZoomTriggerEvent("move"), end = this._getZoomTriggerEvent("end"), event = params.event;
|
|
185
188
|
let moveX = event.canvasX, moveY = event.canvasY, upX = event.canvasX, upY = event.canvasY;
|
|
186
189
|
this._handleDragMouseUp = delayMap[delayType]((params => {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../src/interaction/zoom/zoomable.ts"],"names":[],"mappings":"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","file":"zoomable.js","sourcesContent":["import type { IModelOption } from './../../model/interface';\n/* eslint-disable no-duplicate-imports */\nimport { debounce, isNil, pointInRect, throttle } from '@visactor/vutils';\nimport type { BaseEventParams, EventQuery, EventType, ExtendEventParam, IEvent } from '../../event/interface';\nimport type { IRegion } from '../../region/interface';\nimport type { RenderMode } from '../../typings/spec';\nimport { RenderModeEnum } from '../../typings/spec/common';\nimport { getDefaultTriggerEventByMode } from '../../component/common/trigger/config';\nimport type { IZoomTrigger } from '../../component/common/trigger/interface';\nimport type { ISeries } from '../../series/interface';\nimport { Event_Bubble_Level, Event_Source_Type } from '../../constant/event';\nimport type { IDelayType } from '../../typings/event';\nimport { isMiniAppLikeMode, isMobileLikeMode } from '../../util';\nimport type { Gesture } from '@visactor/vrender-kits';\n\nconst delayMap = {\n debounce: debounce,\n throttle: throttle\n};\n\nexport interface ITriggerOption {\n delayType: IDelayType;\n delayTime: number;\n realTime: boolean;\n // 在某些场景中, 组件不应该触发zoom事件, 例如滚动分页的离散图例\n // 但在另一些场景中, 组件应该触发zoom事件, 例如缩略轴和滚动条\n // 当前代码逻辑中, 默认不触发组件zoom事件\n // 所以增设该配置, 用于允许组件触发zoom事件\n allowComponentZoom?: boolean;\n}\n\nexport type ZoomEventParams = { zoomDelta: number; zoomX: number; zoomY: number };\n\nexport type ZoomCallback = (params: ZoomEventParams, e: BaseEventParams['event']) => Record<string, any> | void;\n\nexport interface IZoomable {\n initZoomable: (evt: IEvent, mode?: RenderMode) => void;\n initZoomEventOfSeries: (s: ISeries, callback?: ZoomCallback) => any;\n initZoomEventOfRegions: (\n regions: IRegion[],\n filter?: (s: ISeries) => boolean,\n callback?: ZoomCallback,\n option?: ITriggerOption\n ) => void;\n\n initScrollEventOfSeries: (\n s: ISeries,\n callback?: (params: { scrollX: number; scrollY: number }, e: BaseEventParams['event']) => void\n ) => any;\n initScrollEventOfRegions: (\n regions: IRegion[],\n filter?: (s: ISeries) => boolean,\n callback?: (params: { scrollX: number; scrollY: number }, e: BaseEventParams['event']) => void,\n option?: ITriggerOption\n ) => void;\n\n initDragEventOfSeries: (\n s: ISeries,\n callback?: (delta: [number, number], e: BaseEventParams['event']) => void,\n option?: ITriggerOption\n ) => any;\n\n initDragEventOfRegions: (\n regions: IRegion[],\n filter?: (s: ISeries) => boolean,\n callback?: (delta: [number, number], e: BaseEventParams['event']) => void,\n option?: ITriggerOption\n ) => void;\n}\n\nexport class Zoomable implements IZoomable {\n private _clickEnable: boolean;\n\n private _option: IModelOption;\n\n private _zoomableTrigger: IZoomTrigger;\n\n private _eventObj: IEvent;\n\n private _renderMode: RenderMode;\n\n private _gestureController!: Gesture | null;\n\n private _isGestureListener: boolean = false;\n\n initZoomable(evt: IEvent, mode: RenderMode = RenderModeEnum['desktop-browser']) {\n this._eventObj = evt;\n this._renderMode = mode;\n this._gestureController = (this._option.getChart().getVGrammarView().renderer as any)._gestureController;\n this._isGestureListener = isMobileLikeMode(this._renderMode) || isMiniAppLikeMode(this._renderMode);\n if (getDefaultTriggerEventByMode(this._renderMode)) {\n // hack 应该由事件系统做?或者事件系统有更好的方式处理这种交互冲突场景\n\n // 只在drag时屏蔽,而zoom、scroll时不屏蔽\n // drag move: 屏蔽\n // darg end 结束屏蔽\n // 屏蔽时:clickEnable应该为false,即其他逻辑不允许响应click\n this._clickEnable = true;\n this._zoomableTrigger = new (this._getZoomTriggerEvent('trigger') as any)();\n }\n }\n\n // event\n private _getZoomTriggerEvent(type: string): EventType | EventType[] {\n return getDefaultTriggerEventByMode(this._renderMode)[type];\n }\n\n private _zoomEventDispatch(\n params: BaseEventParams,\n regionOrSeries: IRegion | ISeries,\n callback?: ZoomCallback,\n allowComponentZoom?: boolean\n ) {\n if (!this._isGestureListener && !params.event) {\n return;\n }\n const event = this._isGestureListener ? params : params.event.clone();\n this._zoomableTrigger.parserZoomEvent(event);\n // FIXME: event类型目前不全\n const { zoomDelta, zoomX, zoomY, path } = event as any;\n\n // 不响应由组件触发的 zoom 事件(例如滚动分页的离散图例)\n if (!allowComponentZoom && !path.some((node: any) => node.name && node.name.includes('region'))) {\n return;\n }\n\n if (isNil(zoomDelta)) {\n return;\n }\n if (\n !pointInRect(\n {\n x: zoomX,\n y: zoomY\n },\n this._getRegionOrSeriesLayout(regionOrSeries),\n false\n )\n ) {\n return;\n }\n let extendParams: ReturnType<typeof callback> = {};\n if (callback) {\n extendParams = callback({ zoomDelta, zoomX, zoomY }, event);\n }\n this._eventObj.emit('zoom', {\n scale: event.zoomDelta,\n scaleCenter: { x: event.zoomX, y: event.zoomY },\n ...extendParams,\n model: this\n } as unknown as ExtendEventParam);\n }\n\n private _getRegionOrSeriesLayout(rs: IRegion | ISeries) {\n if (rs.type !== 'region') {\n rs = (<ISeries>rs).getRegion();\n }\n const { x, y, width, height } = rs.layout.getLayout();\n return {\n x1: x,\n y1: y,\n x2: x + width,\n y2: y + height\n };\n }\n\n private _bindZoomEventAsRegion(\n eventObj: IEvent,\n regionOrSeries: IRegion | ISeries,\n callback?: ZoomCallback,\n option?: ITriggerOption\n ) {\n const delayType = option?.delayType ?? 'throttle';\n const delayTime = option?.delayTime ?? 0;\n\n const event = this._isGestureListener ? this._gestureController : eventObj;\n const zoomParams = this._isGestureListener\n ? [this._getZoomTriggerEvent('zoom')]\n : [this._getZoomTriggerEvent('zoom'), { level: Event_Bubble_Level.chart, consume: true }];\n const zoomEndParams: [string] | [string, EventQuery] = this._isGestureListener\n ? [this._getZoomTriggerEvent('zoomEnd') as string]\n : [this._getZoomTriggerEvent('zoomEnd') as string, { level: Event_Bubble_Level.chart, consume: false }];\n // pc端没有scrollEnd事件,所以漫游模式下scroll仅支持realTime\n (event as any).on(\n ...zoomEndParams,\n delayMap[delayType]((params: BaseEventParams) => {\n this._zoomableTrigger.clearZoom();\n }, delayTime) as any\n );\n\n (event as any).on(\n ...zoomParams,\n delayMap[delayType]((params: BaseEventParams) => {\n // if (realTime) {\n this._zoomEventDispatch(params, regionOrSeries, callback, option?.allowComponentZoom ?? false);\n // }\n }, delayTime) as any\n );\n }\n\n initZoomEventOfSeries(s: ISeries, callback?: ZoomCallback, option?: ITriggerOption) {\n if (this._option.disableTriggerEvent) {\n return;\n }\n if (getDefaultTriggerEventByMode(this._renderMode)) {\n this._bindZoomEventAsRegion(s.event, s, callback, option);\n }\n }\n\n initZoomEventOfRegions(\n regions: IRegion[],\n filter?: (s: ISeries) => boolean,\n callback?: ZoomCallback,\n option?: ITriggerOption\n ) {\n if (this._option.disableTriggerEvent) {\n return;\n }\n if (getDefaultTriggerEventByMode(this._renderMode)) {\n regions.forEach(r => {\n if (filter) {\n r.getSeries().forEach(s => {\n if (filter(s)) {\n this._bindZoomEventAsRegion(s.event, s, callback, option);\n }\n });\n } else {\n this._bindZoomEventAsRegion(this._eventObj, r, callback, option);\n }\n });\n }\n }\n\n private _scrollEventDispatch(\n params: BaseEventParams,\n regionOrSeries: IRegion | ISeries,\n callback?: (params: { scrollX: number; scrollY: number }, e: BaseEventParams['event']) => any\n ) {\n let stopBubble: boolean | undefined = false;\n if (!this._isGestureListener && (!params.event || this._option.disableTriggerEvent)) {\n return stopBubble;\n }\n const event = this._isGestureListener ? params : params.event;\n this._zoomableTrigger.parserScrollEvent(event);\n // FIXME: event类型目前不全\n const { scrollX, scrollY, canvasX, canvasY } = event as any;\n if (isNil(scrollX) && isNil(scrollY)) {\n return stopBubble;\n }\n if (\n !pointInRect(\n {\n x: canvasX,\n y: canvasY\n },\n this._getRegionOrSeriesLayout(regionOrSeries),\n false\n )\n ) {\n return stopBubble;\n }\n\n if (callback) {\n stopBubble = callback({ scrollX, scrollY }, event as any);\n }\n this._eventObj.emit('scroll', {\n scrollX,\n scrollY,\n model: this\n } as unknown as ExtendEventParam);\n\n return stopBubble;\n }\n\n private _bindScrollEventAsRegion(\n eventObj: IEvent,\n regionOrSeries: IRegion | ISeries,\n callback?: (params: { scrollX: number; scrollY: number }, e: BaseEventParams['event']) => any,\n option?: ITriggerOption\n ) {\n const delayType = option?.delayType ?? 'throttle';\n const delayTime = option?.delayTime ?? 0;\n\n const event = this._isGestureListener ? this._gestureController : eventObj;\n const scrollParams = this._isGestureListener\n ? [this._getZoomTriggerEvent('scroll')]\n : [this._getZoomTriggerEvent('scroll'), { level: Event_Bubble_Level.chart, consume: true }];\n const scrollEndParams = this._isGestureListener\n ? [this._getZoomTriggerEvent('scrollEnd')]\n : [this._getZoomTriggerEvent('scrollEnd'), { level: Event_Bubble_Level.chart, consume: false }];\n\n // pc端没有scrollEnd事件,所以漫游模式下scroll仅支持realTime\n (event as any).on(\n ...scrollEndParams,\n delayMap[delayType]((params: any) => {\n this._zoomableTrigger.clearScroll();\n }, delayTime)\n );\n\n (event as any).on(\n ...scrollParams,\n delayMap[delayType]((params: any) => {\n // if (realTime) {\n return this._scrollEventDispatch(params, regionOrSeries, callback);\n // }\n }, delayTime)\n );\n }\n\n initScrollEventOfSeries(\n s: ISeries,\n callback?: (params: { scrollX: number; scrollY: number }, e: BaseEventParams['event']) => void,\n option?: ITriggerOption\n ) {\n if (getDefaultTriggerEventByMode(this._renderMode)) {\n this._bindScrollEventAsRegion(s.event, s, callback, option);\n }\n }\n\n initScrollEventOfRegions(\n regions: IRegion[],\n filter?: (s: ISeries) => boolean,\n callback?: (params: { scrollX: number; scrollY: number }, e: BaseEventParams['event']) => void,\n option?: ITriggerOption\n ) {\n if (this._option.disableTriggerEvent) {\n return;\n }\n if (getDefaultTriggerEventByMode(this._renderMode)) {\n regions.forEach(r => {\n if (filter) {\n r.getSeries().forEach(s => {\n if (filter(s)) {\n this._bindScrollEventAsRegion(s.event, s, callback, option);\n }\n });\n } else {\n this._bindScrollEventAsRegion(this._eventObj, r, callback, option);\n }\n });\n }\n }\n\n private _bindDragEventAsRegion(\n eventObj: IEvent,\n regionOrSeries: IRegion | ISeries,\n callback?: (delta: [number, number], e: BaseEventParams['event']) => void,\n option?: ITriggerOption\n ) {\n eventObj.on(this._getZoomTriggerEvent('start') as string, { level: Event_Bubble_Level.chart }, (params: any) => {\n if (!params.event) {\n return;\n }\n\n const { event } = params;\n const shouldTrigger = pointInRect(\n {\n x: event.canvasX,\n y: event.canvasY\n },\n this._getRegionOrSeriesLayout(regionOrSeries),\n false\n );\n if (shouldTrigger) {\n this._handleDrag(params, callback, option);\n }\n });\n // hack 应该由事件系统做?或者事件系统有更好的方式处理这种交互冲突场景\n\n // 只在drag时屏蔽,而zoom、scrol时不屏蔽\n // drag move: 屏蔽\n // darg end 结束屏蔽\n // 屏蔽时:clickEnable应该为false,即其他逻辑不允许响应click\n eventObj.on('click', { level: Event_Bubble_Level.chart }, () => {\n return !this._clickEnable;\n });\n }\n\n initDragEventOfSeries(\n s: ISeries,\n callback?: (delta: [number, number], e: BaseEventParams['event']) => void,\n option?: ITriggerOption\n ) {\n if (this._option.disableTriggerEvent) {\n return;\n }\n if (getDefaultTriggerEventByMode(this._renderMode)) {\n s.event.on(\n this._getZoomTriggerEvent('start') as string,\n { level: Event_Bubble_Level.model, filter: ({ model }) => model?.id === s.id },\n params => {\n this._handleDrag(params, callback, option);\n }\n );\n }\n }\n\n initDragEventOfRegions(\n regions: IRegion[],\n filter?: (s: ISeries) => boolean,\n callback?: (delta: [number, number], e: BaseEventParams['event']) => void,\n option?: ITriggerOption\n ) {\n if (this._option.disableTriggerEvent) {\n return;\n }\n if (getDefaultTriggerEventByMode(this._renderMode)) {\n regions.forEach(r => {\n if (filter) {\n r.getSeries().forEach(s => {\n if (filter(s)) {\n s.event.on(\n this._getZoomTriggerEvent('start') as string,\n { level: Event_Bubble_Level.model, filter: ({ model }) => model?.id === s.id },\n params => {\n this._handleDrag(params, callback);\n }\n );\n\n // click 事件需要在drag和zoom时被屏蔽\n // hack 应该由事件系统做?或者事件系统有更好的方式处理这种交互冲突场景\n\n // 只在drag时屏蔽,而zoom、scrol时不屏蔽\n // drag move: 屏蔽\n // darg end 结束屏蔽\n // 屏蔽时:clickEnable应该为false,即其他逻辑不允许响应click\n s.event.on(\n 'click',\n { level: Event_Bubble_Level.model, filter: ({ model }) => model?.id === s.id },\n () => {\n return !this._clickEnable;\n }\n );\n }\n });\n } else {\n this._bindDragEventAsRegion(this._eventObj, r, callback, option);\n }\n });\n }\n }\n\n private _handleDragMouseUp?: (params: ExtendEventParam) => void;\n private _handleDragMouseMove?: (params: ExtendEventParam) => void;\n\n protected _clearDragEvent() {\n const move = this._getZoomTriggerEvent('move') as string;\n const end = this._getZoomTriggerEvent('end') as string[];\n\n if (this._handleDragMouseMove) {\n this._eventObj.off(\n move,\n { level: Event_Bubble_Level.chart, source: Event_Source_Type.chart },\n this._handleDragMouseMove\n );\n this._handleDragMouseMove = undefined;\n }\n\n if (this._handleDragMouseUp) {\n end.forEach(endEventType => {\n this._eventObj.off(\n endEventType,\n { level: Event_Bubble_Level.chart, source: Event_Source_Type.chart },\n this._handleDragMouseUp\n );\n this._eventObj.allow(endEventType);\n });\n\n this._handleDragMouseUp = undefined;\n }\n }\n\n protected _handleDrag(\n params: ExtendEventParam,\n callback?: (delta: [number, number], e: BaseEventParams['event']) => void,\n option?: ITriggerOption\n ) {\n this._clearDragEvent();\n if (this._option.disableTriggerEvent) {\n return;\n }\n this._clickEnable = false;\n if (!this._zoomableTrigger.parserDragEvent(params.event)) {\n return;\n }\n const delayType = option?.delayType ?? 'throttle';\n const delayTime = option?.delayTime ?? 0;\n const realTime = option?.realTime ?? true;\n const move = this._getZoomTriggerEvent('move') as string;\n const end = this._getZoomTriggerEvent('end') as string[];\n const event = params.event;\n let moveX = event.canvasX;\n let moveY = event.canvasY;\n let upX = event.canvasX;\n let upY = event.canvasY;\n\n this._handleDragMouseUp = delayMap[delayType]((params: ExtendEventParam) => {\n this._clickEnable = true;\n const event = params.event as any;\n const dx = event.canvasX - upX;\n const dy = event.canvasY - upY;\n const delta: [number, number] = [dx, dy];\n\n upX = event.canvasX;\n upY = event.canvasY;\n\n if (!realTime && callback) {\n callback(delta, params.event);\n }\n\n this._eventObj.emit('panend', {\n delta,\n model: this\n } as unknown as BaseEventParams);\n this._zoomableTrigger.pointerId = null;\n this._clearDragEvent();\n }, delayTime);\n\n this._handleDragMouseMove = delayMap[delayType]((params: ExtendEventParam) => {\n if (!this._zoomableTrigger.parserDragEvent(params.event)) {\n return;\n }\n this._clickEnable = false;\n end.forEach(endEventType => this._eventObj.prevent(endEventType, this._handleDragMouseUp as any));\n\n const event = params.event;\n const dx = event.canvasX - moveX;\n const dy = event.canvasY - moveY;\n const delta: [number, number] = [dx, dy];\n\n moveX = event.canvasX;\n moveY = event.canvasY;\n\n if (realTime && callback) {\n callback(delta, params.event);\n }\n this._eventObj.emit('panmove', {\n delta,\n model: this\n } as unknown as ExtendEventParam);\n }, delayTime);\n\n this._eventObj.on(\n move,\n { level: Event_Bubble_Level.chart, source: Event_Source_Type.chart },\n this._handleDragMouseMove as any\n );\n end.forEach(endEventType => {\n this._eventObj.on(\n endEventType,\n { level: Event_Bubble_Level.chart, source: Event_Source_Type.chart },\n this._handleDragMouseUp\n );\n });\n }\n}\n"]}
|
|
1
|
+
{"version":3,"sources":["../src/interaction/zoom/zoomable.ts"],"names":[],"mappings":"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","file":"zoomable.js","sourcesContent":["import type { IModelOption } from './../../model/interface';\n/* eslint-disable no-duplicate-imports */\nimport { debounce, isNil, pointInRect, throttle } from '@visactor/vutils';\nimport type { BaseEventParams, EventQuery, EventType, ExtendEventParam, IEvent } from '../../event/interface';\nimport type { IRegion } from '../../region/interface';\nimport type { RenderMode } from '../../typings/spec';\nimport { RenderModeEnum } from '../../typings/spec/common';\nimport { getDefaultTriggerEventByMode } from '../../component/common/trigger/config';\nimport type { IZoomTrigger } from '../../component/common/trigger/interface';\nimport type { ISeries } from '../../series/interface';\nimport { Event_Bubble_Level, Event_Source_Type } from '../../constant/event';\nimport type { IDelayType } from '../../typings/event';\nimport { isMiniAppLikeMode, isMobileLikeMode } from '../../util';\nimport type { Gesture } from '@visactor/vrender-kits';\n\nconst delayMap = {\n debounce: debounce,\n throttle: throttle\n};\n\nexport interface ITriggerOption {\n delayType: IDelayType;\n delayTime: number;\n realTime: boolean;\n // 在某些场景中, 组件不应该触发zoom事件, 例如滚动分页的离散图例\n // 但在另一些场景中, 组件应该触发zoom事件, 例如缩略轴和滚动条\n // 当前代码逻辑中, 默认不触发组件zoom事件\n // 所以增设该配置, 用于允许组件触发zoom事件\n allowComponentZoom?: boolean;\n}\n\nexport type ZoomEventParams = { zoomDelta: number; zoomX: number; zoomY: number };\n\nexport type ZoomCallback = (params: ZoomEventParams, e: BaseEventParams['event']) => Record<string, any> | void;\n\nexport interface IZoomable {\n initZoomable: (evt: IEvent, mode?: RenderMode) => void;\n initZoomEventOfSeries: (s: ISeries, callback?: ZoomCallback) => any;\n initZoomEventOfRegions: (\n regions: IRegion[],\n filter?: (s: ISeries) => boolean,\n callback?: ZoomCallback,\n option?: ITriggerOption\n ) => void;\n\n initScrollEventOfSeries: (\n s: ISeries,\n callback?: (params: { scrollX: number; scrollY: number }, e: BaseEventParams['event']) => void\n ) => any;\n initScrollEventOfRegions: (\n regions: IRegion[],\n filter?: (s: ISeries) => boolean,\n callback?: (params: { scrollX: number; scrollY: number }, e: BaseEventParams['event']) => void,\n option?: ITriggerOption\n ) => void;\n\n initDragEventOfSeries: (\n s: ISeries,\n callback?: (delta: [number, number], e: BaseEventParams['event']) => void,\n option?: ITriggerOption\n ) => any;\n\n initDragEventOfRegions: (\n regions: IRegion[],\n filter?: (s: ISeries) => boolean,\n callback?: (delta: [number, number], e: BaseEventParams['event']) => void,\n option?: ITriggerOption\n ) => void;\n}\n\nexport class Zoomable implements IZoomable {\n private _clickEnable: boolean;\n\n private _option: IModelOption;\n\n private _zoomableTrigger: IZoomTrigger;\n\n private _eventObj: IEvent;\n\n private _renderMode: RenderMode;\n\n private _gestureController!: Gesture | null;\n\n private _isGestureListener: boolean = false;\n\n initZoomable(evt: IEvent, mode: RenderMode = RenderModeEnum['desktop-browser']) {\n this._eventObj = evt;\n this._renderMode = mode;\n this._gestureController = (this._option.getChart().getVGrammarView().renderer as any)._gestureController;\n this._isGestureListener = isMobileLikeMode(this._renderMode) || isMiniAppLikeMode(this._renderMode);\n if (getDefaultTriggerEventByMode(this._renderMode)) {\n // hack 应该由事件系统做?或者事件系统有更好的方式处理这种交互冲突场景\n\n // 只在drag时屏蔽,而zoom、scroll时不屏蔽\n // drag move: 屏蔽\n // darg end 结束屏蔽\n // 屏蔽时:clickEnable应该为false,即其他逻辑不允许响应click\n this._clickEnable = true;\n this._zoomableTrigger = new (this._getZoomTriggerEvent('trigger') as any)();\n }\n }\n\n // event\n private _getZoomTriggerEvent(type: string): EventType | EventType[] {\n return getDefaultTriggerEventByMode(this._renderMode)[type];\n }\n\n private _zoomEventDispatch(\n params: BaseEventParams,\n regionOrSeries: IRegion | ISeries,\n callback?: ZoomCallback,\n allowComponentZoom?: boolean\n ) {\n if (!this._isGestureListener && !params.event) {\n return;\n }\n const event = this._isGestureListener ? params : params.event.clone();\n this._zoomableTrigger.parserZoomEvent(event);\n // FIXME: event类型目前不全\n const { zoomDelta, zoomX, zoomY, path } = event as any;\n\n // 不响应由组件触发的 zoom 事件(例如滚动分页的离散图例)\n if (!allowComponentZoom && !path.some((node: any) => node.name && node.name.includes('region'))) {\n return;\n }\n\n if (isNil(zoomDelta)) {\n return;\n }\n if (\n !pointInRect(\n {\n x: zoomX,\n y: zoomY\n },\n this._getRegionOrSeriesLayout(regionOrSeries),\n false\n )\n ) {\n return;\n }\n this._clearDragEvent(); // 防止drag 事件被同时触发,状态混乱\n this._zoomableTrigger.clearScroll(); // 防止scroll事件被同时触发,状态混乱\n\n let extendParams: ReturnType<typeof callback> = {};\n if (callback) {\n extendParams = callback({ zoomDelta, zoomX, zoomY }, event);\n }\n this._eventObj.emit('zoom', {\n scale: event.zoomDelta,\n scaleCenter: { x: event.zoomX, y: event.zoomY },\n ...extendParams,\n model: this\n } as unknown as ExtendEventParam);\n }\n\n private _getRegionOrSeriesLayout(rs: IRegion | ISeries) {\n if (rs.type !== 'region') {\n rs = (<ISeries>rs).getRegion();\n }\n const { x, y, width, height } = rs.layout.getLayout();\n return {\n x1: x,\n y1: y,\n x2: x + width,\n y2: y + height\n };\n }\n\n private _bindZoomEventAsRegion(\n eventObj: IEvent,\n regionOrSeries: IRegion | ISeries,\n callback?: ZoomCallback,\n option?: ITriggerOption\n ) {\n const delayType = option?.delayType ?? 'throttle';\n const delayTime = option?.delayTime ?? 0;\n\n const event = this._isGestureListener ? this._gestureController : eventObj;\n const zoomParams = this._isGestureListener\n ? [this._getZoomTriggerEvent('zoom')]\n : [this._getZoomTriggerEvent('zoom'), { level: Event_Bubble_Level.chart, consume: true }];\n const zoomEndParams: [string] | [string, EventQuery] = this._isGestureListener\n ? [this._getZoomTriggerEvent('zoomEnd') as string]\n : [this._getZoomTriggerEvent('zoomEnd') as string, { level: Event_Bubble_Level.chart, consume: false }];\n // pc端没有scrollEnd事件,所以漫游模式下scroll仅支持realTime\n (event as any).on(\n ...zoomEndParams,\n delayMap[delayType]((params: BaseEventParams) => {\n this._zoomableTrigger.clearZoom();\n }, delayTime) as any\n );\n\n (event as any).on(\n ...zoomParams,\n delayMap[delayType]((params: BaseEventParams) => {\n // if (realTime) {\n this._zoomEventDispatch(params, regionOrSeries, callback, option?.allowComponentZoom ?? false);\n // }\n }, delayTime) as any\n );\n }\n\n initZoomEventOfSeries(s: ISeries, callback?: ZoomCallback, option?: ITriggerOption) {\n if (this._option.disableTriggerEvent) {\n return;\n }\n if (getDefaultTriggerEventByMode(this._renderMode)) {\n this._bindZoomEventAsRegion(s.event, s, callback, option);\n }\n }\n\n initZoomEventOfRegions(\n regions: IRegion[],\n filter?: (s: ISeries) => boolean,\n callback?: ZoomCallback,\n option?: ITriggerOption\n ) {\n if (this._option.disableTriggerEvent) {\n return;\n }\n if (getDefaultTriggerEventByMode(this._renderMode)) {\n regions.forEach(r => {\n if (filter) {\n r.getSeries().forEach(s => {\n if (filter(s)) {\n this._bindZoomEventAsRegion(s.event, s, callback, option);\n }\n });\n } else {\n this._bindZoomEventAsRegion(this._eventObj, r, callback, option);\n }\n });\n }\n }\n\n private _scrollEventDispatch(\n params: BaseEventParams,\n regionOrSeries: IRegion | ISeries,\n callback?: (params: { scrollX: number; scrollY: number }, e: BaseEventParams['event']) => any\n ) {\n let stopBubble: boolean | undefined = false;\n if (!this._isGestureListener && (!params.event || this._option.disableTriggerEvent)) {\n return stopBubble;\n }\n const event = this._isGestureListener ? params : params.event;\n this._zoomableTrigger.parserScrollEvent(event);\n // FIXME: event类型目前不全\n const { scrollX, scrollY, canvasX, canvasY } = event as any;\n if (isNil(scrollX) && isNil(scrollY)) {\n return stopBubble;\n }\n if (\n !pointInRect(\n {\n x: canvasX,\n y: canvasY\n },\n this._getRegionOrSeriesLayout(regionOrSeries),\n false\n )\n ) {\n return stopBubble;\n }\n this._clearDragEvent(); // 防止drag 同时触发,状态混乱\n this._zoomableTrigger.clearZoom(); // 防止zoom同时触发,状态混乱\n\n if (callback) {\n stopBubble = callback({ scrollX, scrollY }, event as any);\n }\n this._eventObj.emit('scroll', {\n scrollX,\n scrollY,\n model: this\n } as unknown as ExtendEventParam);\n\n return stopBubble;\n }\n\n private _bindScrollEventAsRegion(\n eventObj: IEvent,\n regionOrSeries: IRegion | ISeries,\n callback?: (params: { scrollX: number; scrollY: number }, e: BaseEventParams['event']) => any,\n option?: ITriggerOption\n ) {\n const delayType = option?.delayType ?? 'throttle';\n const delayTime = option?.delayTime ?? 0;\n\n const event = this._isGestureListener ? this._gestureController : eventObj;\n const scrollParams = this._isGestureListener\n ? [this._getZoomTriggerEvent('scroll')]\n : [this._getZoomTriggerEvent('scroll'), { level: Event_Bubble_Level.chart, consume: true }];\n const scrollEndParams = this._isGestureListener\n ? [this._getZoomTriggerEvent('scrollEnd')]\n : [this._getZoomTriggerEvent('scrollEnd'), { level: Event_Bubble_Level.chart, consume: false }];\n\n // pc端没有scrollEnd事件,所以漫游模式下scroll仅支持realTime\n (event as any).on(\n ...scrollEndParams,\n delayMap[delayType]((params: any) => {\n this._zoomableTrigger.clearScroll();\n }, delayTime)\n );\n\n (event as any).on(\n ...scrollParams,\n delayMap[delayType]((params: any) => {\n // if (realTime) {\n return this._scrollEventDispatch(params, regionOrSeries, callback);\n // }\n }, delayTime)\n );\n }\n\n initScrollEventOfSeries(\n s: ISeries,\n callback?: (params: { scrollX: number; scrollY: number }, e: BaseEventParams['event']) => void,\n option?: ITriggerOption\n ) {\n if (getDefaultTriggerEventByMode(this._renderMode)) {\n this._bindScrollEventAsRegion(s.event, s, callback, option);\n }\n }\n\n initScrollEventOfRegions(\n regions: IRegion[],\n filter?: (s: ISeries) => boolean,\n callback?: (params: { scrollX: number; scrollY: number }, e: BaseEventParams['event']) => void,\n option?: ITriggerOption\n ) {\n if (this._option.disableTriggerEvent) {\n return;\n }\n if (getDefaultTriggerEventByMode(this._renderMode)) {\n regions.forEach(r => {\n if (filter) {\n r.getSeries().forEach(s => {\n if (filter(s)) {\n this._bindScrollEventAsRegion(s.event, s, callback, option);\n }\n });\n } else {\n this._bindScrollEventAsRegion(this._eventObj, r, callback, option);\n }\n });\n }\n }\n\n private _bindDragEventAsRegion(\n eventObj: IEvent,\n regionOrSeries: IRegion | ISeries,\n callback?: (delta: [number, number], e: BaseEventParams['event']) => void,\n option?: ITriggerOption\n ) {\n eventObj.on(this._getZoomTriggerEvent('start') as string, { level: Event_Bubble_Level.chart }, (params: any) => {\n if (!params.event) {\n return;\n }\n\n const { event } = params;\n const shouldTrigger = pointInRect(\n {\n x: event.canvasX,\n y: event.canvasY\n },\n this._getRegionOrSeriesLayout(regionOrSeries),\n false\n );\n if (shouldTrigger) {\n this._handleDrag(params, callback, option);\n }\n });\n // hack 应该由事件系统做?或者事件系统有更好的方式处理这种交互冲突场景\n\n // 只在drag时屏蔽,而zoom、scrol时不屏蔽\n // drag move: 屏蔽\n // darg end 结束屏蔽\n // 屏蔽时:clickEnable应该为false,即其他逻辑不允许响应click\n eventObj.on('click', { level: Event_Bubble_Level.chart }, () => {\n return !this._clickEnable;\n });\n }\n\n initDragEventOfSeries(\n s: ISeries,\n callback?: (delta: [number, number], e: BaseEventParams['event']) => void,\n option?: ITriggerOption\n ) {\n if (this._option.disableTriggerEvent) {\n return;\n }\n if (getDefaultTriggerEventByMode(this._renderMode)) {\n s.event.on(\n this._getZoomTriggerEvent('start') as string,\n { level: Event_Bubble_Level.model, filter: ({ model }) => model?.id === s.id },\n params => {\n this._handleDrag(params, callback, option);\n }\n );\n }\n }\n\n initDragEventOfRegions(\n regions: IRegion[],\n filter?: (s: ISeries) => boolean,\n callback?: (delta: [number, number], e: BaseEventParams['event']) => void,\n option?: ITriggerOption\n ) {\n if (this._option.disableTriggerEvent) {\n return;\n }\n if (getDefaultTriggerEventByMode(this._renderMode)) {\n regions.forEach(r => {\n if (filter) {\n r.getSeries().forEach(s => {\n if (filter(s)) {\n s.event.on(\n this._getZoomTriggerEvent('start') as string,\n { level: Event_Bubble_Level.model, filter: ({ model }) => model?.id === s.id },\n params => {\n this._handleDrag(params, callback);\n }\n );\n\n // click 事件需要在drag和zoom时被屏蔽\n // hack 应该由事件系统做?或者事件系统有更好的方式处理这种交互冲突场景\n\n // 只在drag时屏蔽,而zoom、scrol时不屏蔽\n // drag move: 屏蔽\n // darg end 结束屏蔽\n // 屏蔽时:clickEnable应该为false,即其他逻辑不允许响应click\n s.event.on(\n 'click',\n { level: Event_Bubble_Level.model, filter: ({ model }) => model?.id === s.id },\n () => {\n return !this._clickEnable;\n }\n );\n }\n });\n } else {\n this._bindDragEventAsRegion(this._eventObj, r, callback, option);\n }\n });\n }\n }\n\n private _handleDragMouseUp?: (params: ExtendEventParam) => void;\n private _handleDragMouseMove?: (params: ExtendEventParam) => void;\n\n protected _clearDragEvent() {\n const move = this._getZoomTriggerEvent('move') as string;\n const end = this._getZoomTriggerEvent('end') as string[];\n\n if (this._handleDragMouseMove) {\n this._eventObj.off(\n move,\n { level: Event_Bubble_Level.chart, source: Event_Source_Type.chart },\n this._handleDragMouseMove\n );\n this._handleDragMouseMove = undefined;\n }\n\n if (this._handleDragMouseUp) {\n end.forEach(endEventType => {\n this._eventObj.off(\n endEventType,\n { level: Event_Bubble_Level.chart, source: Event_Source_Type.chart },\n this._handleDragMouseUp\n );\n this._eventObj.allow(endEventType);\n });\n\n this._handleDragMouseUp = undefined;\n }\n }\n\n protected _handleDrag(\n params: ExtendEventParam,\n callback?: (delta: [number, number], e: BaseEventParams['event']) => void,\n option?: ITriggerOption\n ) {\n this._clearDragEvent();\n if (this._option.disableTriggerEvent) {\n return;\n }\n this._clickEnable = false;\n if (!this._zoomableTrigger.parserDragEvent(params.event)) {\n return;\n }\n this._zoomableTrigger.clearZoom(); // 防止zoom 事件被同时触发, 状态混乱\n this._zoomableTrigger.clearScroll(); // 防止 scroll 事件被同时触发, 状态混乱\n const delayType = option?.delayType ?? 'throttle';\n const delayTime = option?.delayTime ?? 0;\n const realTime = option?.realTime ?? true;\n const move = this._getZoomTriggerEvent('move') as string;\n const end = this._getZoomTriggerEvent('end') as string[];\n const event = params.event;\n let moveX = event.canvasX;\n let moveY = event.canvasY;\n let upX = event.canvasX;\n let upY = event.canvasY;\n\n this._handleDragMouseUp = delayMap[delayType]((params: ExtendEventParam) => {\n this._clickEnable = true;\n const event = params.event as any;\n const dx = event.canvasX - upX;\n const dy = event.canvasY - upY;\n const delta: [number, number] = [dx, dy];\n\n upX = event.canvasX;\n upY = event.canvasY;\n\n if (!realTime && callback) {\n callback(delta, params.event);\n }\n\n this._eventObj.emit('panend', {\n delta,\n model: this\n } as unknown as BaseEventParams);\n this._zoomableTrigger.pointerId = null;\n this._clearDragEvent();\n }, delayTime);\n\n this._handleDragMouseMove = delayMap[delayType]((params: ExtendEventParam) => {\n if (!this._zoomableTrigger.parserDragEvent(params.event)) {\n return;\n }\n this._clickEnable = false;\n end.forEach(endEventType => this._eventObj.prevent(endEventType, this._handleDragMouseUp as any));\n\n const event = params.event;\n const dx = event.canvasX - moveX;\n const dy = event.canvasY - moveY;\n const delta: [number, number] = [dx, dy];\n\n moveX = event.canvasX;\n moveY = event.canvasY;\n\n if (realTime && callback) {\n callback(delta, params.event);\n }\n this._eventObj.emit('panmove', {\n delta,\n model: this\n } as unknown as ExtendEventParam);\n }, delayTime);\n\n this._eventObj.on(\n move,\n { level: Event_Bubble_Level.chart, source: Event_Source_Type.chart },\n this._handleDragMouseMove as any\n );\n end.forEach(endEventType => {\n this._eventObj.on(\n endEventType,\n { level: Event_Bubble_Level.chart, source: Event_Source_Type.chart },\n this._handleDragMouseUp\n );\n });\n }\n}\n"]}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@visactor/vchart",
|
|
3
|
-
"version": "1.13.8-alpha.
|
|
3
|
+
"version": "1.13.8-alpha.2",
|
|
4
4
|
"description": "charts lib based @visactor/VGrammar",
|
|
5
5
|
"main": "cjs/index.js",
|
|
6
6
|
"module": "esm/index.js",
|
|
@@ -81,27 +81,27 @@
|
|
|
81
81
|
"@size-limit/file": "9.0.0",
|
|
82
82
|
"rimraf": "3.0.2",
|
|
83
83
|
"cross-env": "^7.0.3",
|
|
84
|
-
"@internal/ts-config": "0.0.1",
|
|
85
84
|
"@internal/bundler": "0.0.1",
|
|
86
85
|
"@internal/eslint-config": "0.0.1",
|
|
86
|
+
"@internal/ts-config": "0.0.1",
|
|
87
87
|
"@internal/typescript-json-schema": "0.0.1"
|
|
88
88
|
},
|
|
89
89
|
"dependencies": {
|
|
90
90
|
"@visactor/vutils": "~0.19.4",
|
|
91
91
|
"@visactor/vdataset": "~0.19.4",
|
|
92
92
|
"@visactor/vscale": "~0.19.4",
|
|
93
|
-
"@visactor/vrender-core": "0.22.
|
|
94
|
-
"@visactor/vrender-kits": "0.22.
|
|
95
|
-
"@visactor/vrender-components": "0.22.
|
|
96
|
-
"@visactor/vgrammar-core": "0.16.
|
|
97
|
-
"@visactor/vgrammar-projection": "0.16.
|
|
98
|
-
"@visactor/vgrammar-wordcloud": "0.16.
|
|
99
|
-
"@visactor/vgrammar-wordcloud-shape": "0.16.
|
|
100
|
-
"@visactor/vgrammar-hierarchy": "0.16.
|
|
101
|
-
"@visactor/vgrammar-sankey": "0.16.
|
|
102
|
-
"@visactor/vgrammar-venn": "0.16.
|
|
103
|
-
"@visactor/vgrammar-util": "0.16.
|
|
104
|
-
"@visactor/vutils-extension": "1.13.8-alpha.
|
|
93
|
+
"@visactor/vrender-core": "0.22.6",
|
|
94
|
+
"@visactor/vrender-kits": "0.22.6",
|
|
95
|
+
"@visactor/vrender-components": "0.22.6",
|
|
96
|
+
"@visactor/vgrammar-core": "0.16.2",
|
|
97
|
+
"@visactor/vgrammar-projection": "0.16.2",
|
|
98
|
+
"@visactor/vgrammar-wordcloud": "0.16.2",
|
|
99
|
+
"@visactor/vgrammar-wordcloud-shape": "0.16.2",
|
|
100
|
+
"@visactor/vgrammar-hierarchy": "0.16.2",
|
|
101
|
+
"@visactor/vgrammar-sankey": "0.16.2",
|
|
102
|
+
"@visactor/vgrammar-venn": "0.16.2",
|
|
103
|
+
"@visactor/vgrammar-util": "0.16.2",
|
|
104
|
+
"@visactor/vutils-extension": "1.13.8-alpha.2"
|
|
105
105
|
},
|
|
106
106
|
"publishConfig": {
|
|
107
107
|
"access": "public",
|