@visactor/vrender-components 0.22.7-alpha.5 → 0.22.7-alpha.7
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/cjs/axis/util.js +1 -2
- package/cjs/brush/type.js +2 -1
- package/cjs/crosshair/base.js +2 -1
- package/cjs/crosshair/type.js +1 -2
- package/cjs/data-zoom/data-zoom.d.ts +3 -0
- package/cjs/data-zoom/data-zoom.js +39 -24
- package/cjs/data-zoom/data-zoom.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/poptip/contribution.js +2 -4
- package/cjs/poptip/contribution.js.map +1 -1
- package/cjs/poptip/poptip.d.ts +0 -5
- package/cjs/poptip/poptip.js +18 -87
- package/cjs/poptip/poptip.js.map +1 -1
- package/cjs/poptip/type.d.ts +1 -4
- package/cjs/poptip/type.js.map +1 -1
- package/cjs/scrollbar/scrollbar.d.ts +1 -0
- package/cjs/scrollbar/scrollbar.js +21 -12
- package/cjs/scrollbar/scrollbar.js.map +1 -1
- package/cjs/slider/slider.d.ts +3 -0
- package/cjs/slider/slider.js +48 -27
- package/cjs/slider/slider.js.map +1 -1
- package/cjs/switch/switch.js +2 -2
- package/cjs/switch/switch.js.map +1 -1
- package/cjs/util/event.d.ts +1 -0
- package/cjs/util/event.js +14 -0
- package/cjs/util/event.js.map +1 -0
- package/dist/index.es.js +133 -215
- package/es/axis/util.js +1 -2
- package/es/brush/type.js +2 -1
- package/es/crosshair/base.js +2 -1
- package/es/crosshair/type.js +1 -2
- package/es/data-zoom/data-zoom.d.ts +3 -0
- package/es/data-zoom/data-zoom.js +38 -21
- package/es/data-zoom/data-zoom.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/poptip/contribution.js +2 -4
- package/es/poptip/contribution.js.map +1 -1
- package/es/poptip/poptip.d.ts +0 -5
- package/es/poptip/poptip.js +19 -85
- package/es/poptip/poptip.js.map +1 -1
- package/es/poptip/type.d.ts +1 -4
- package/es/poptip/type.js.map +1 -1
- package/es/scrollbar/scrollbar.d.ts +1 -0
- package/es/scrollbar/scrollbar.js +22 -11
- package/es/scrollbar/scrollbar.js.map +1 -1
- package/es/slider/slider.d.ts +3 -0
- package/es/slider/slider.js +49 -26
- package/es/slider/slider.js.map +1 -1
- package/es/switch/switch.js +2 -2
- package/es/switch/switch.js.map +1 -1
- package/es/util/event.d.ts +1 -0
- package/es/util/event.js +6 -0
- package/es/util/event.js.map +1 -0
- package/package.json +3 -3
|
@@ -34,12 +34,10 @@ let PopTipRenderContribution = class {
|
|
|
34
34
|
this.poptipComponent.setAttributes(Object.assign(Object.assign({
|
|
35
35
|
visibleAll: !0,
|
|
36
36
|
pickable: !1,
|
|
37
|
-
childrenPickable: !1
|
|
38
|
-
poptipAnchor: "bounds"
|
|
37
|
+
childrenPickable: !1
|
|
39
38
|
}, poptip), {
|
|
40
39
|
x: matrix.e,
|
|
41
|
-
y: matrix.f
|
|
42
|
-
positionBounds: graphic.globalAABBBounds
|
|
40
|
+
y: matrix.f
|
|
43
41
|
})), drawContext.stage.tryInitInteractiveLayer();
|
|
44
42
|
const interactiveLayer = drawContext.stage.getLayer("_builtin_interactive");
|
|
45
43
|
interactiveLayer && interactiveLayer.add(this.poptipComponent);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../src/poptip/contribution.ts"],"names":[],"mappings":";;;;;;AAQA,OAAO,EAAE,UAAU,EAAE,MAAM,wBAAwB,CAAC;AACpD,OAAO,EAAE,MAAM,EAAE,MAAM,UAAU,CAAC;AAClC,OAAO,EAAE,KAAK,EAAE,MAAM,kBAAkB,CAAC;AACzC,OAAO,EAAE,KAAK,EAAE,MAAM,SAAS,CAAC;AAEhC,SAAS,UAAU,CAAC,MAA2B,EAAE,MAA2B;IAC1E,KAAK,CAAC,MAAM,EAAE,KAAK,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IACpC,OAAO,MAAM,CAAC;AAChB,CAAC;AAGM,IAAM,wBAAwB,GAA9B,MAAM,wBAAwB;IAEnC,MAAM,CACJ,OAA6C,EAC7C,OAAmB,EACnB,CAAS,EACT,CAAS,EACT,MAAe,EACf,QAAiB,EACjB,QAAiB,EACjB,QAAiB,EACjB,gBAA6C,EAC7C,WAAyB,EACzB,MAAiH,EACjH,QAAmH,EACnH,OAAa;;QAEb,IAAI,OAAO,CAAC,WAAW,KAAK,CAAC,EAAE;YAC7B,MAAM,EAAE,OAAO,EAAE,SAAS,EAAE,GAAI,OAAO,CAAC,SAAiB,CAAC,MAAM,IAAI,EAAE,CAAC;YACvE,IAAI,OAAO,KAAK,KAAK,IAAI,CAAC,SAAS,IAAI,SAAS,CAAC,OAAO,CAAC,KAAK,KAAK,CAAC,EAAE;gBACpE,OAAO;aACR;YACD,MAAM,SAAS,GAAG,EAAE,CAAC;YACrB,KAAK,CACH,SAAS,EACT,MAAM,CAAC,iBAAiB,EACvB,OAAO,CAAC,SAAiB,CAAC,MAAM,CAAC,CAAC,CAAE,OAAO,CAAC,SAAiB,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,CAC3E,CAAC;YACF,IAAI,CAAC,IAAI,CAAC,eAAe,EAAE;gBACzB,IAAI,CAAC,eAAe,GAAG,IAAI,MAAM,CAAC,SAAS,CAAC,CAAC;aAC9C;iBAAM;gBACL,IAAI,CAAC,eAAe,CAAC,cAAc,CAAC,SAAS,CAAC,CAAC;aAChD;YAED,IAAI,MAAM,GAAI,OAAO,CAAC,SAAiB,CAAC,MAAM,IAAI,EAAE,CAAC;YACrD,IAAI,OAAO,CAAC,IAAI,KAAK,MAAM,IAAI,MAAM,CAAC,KAAK,IAAI,IAAI,IAAI,MAAM,CAAC,OAAO,IAAI,IAAI,EAAE;gBAC7E,MAAM,GAAG,GAAG,EAAE,CAAC;gBACf,UAAU,CAAC,GAAG,EAAE,MAAM,CAAC,CAAC;gBACxB,MAAM,GAAG,GAAG,CAAC;gBACb,MAAM,CAAC,OAAO,GAAG,MAAA,MAAM,CAAC,OAAO,mCAAK,OAAO,CAAC,SAAiB,CAAC,IAAI,CAAC;aACpE;YACD,MAAM,MAAM,GAAG,OAAO,CAAC,iBAAiB,CAAC;YACzC,IAAI,CAAC,eAAe,CAAC,aAAa,+BAChC,UAAU,EAAE,IAAI,EAChB,QAAQ,EAAE,KAAK,EACf,gBAAgB,EAAE,KAAK,
|
|
1
|
+
{"version":3,"sources":["../src/poptip/contribution.ts"],"names":[],"mappings":";;;;;;AAQA,OAAO,EAAE,UAAU,EAAE,MAAM,wBAAwB,CAAC;AACpD,OAAO,EAAE,MAAM,EAAE,MAAM,UAAU,CAAC;AAClC,OAAO,EAAE,KAAK,EAAE,MAAM,kBAAkB,CAAC;AACzC,OAAO,EAAE,KAAK,EAAE,MAAM,SAAS,CAAC;AAEhC,SAAS,UAAU,CAAC,MAA2B,EAAE,MAA2B;IAC1E,KAAK,CAAC,MAAM,EAAE,KAAK,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IACpC,OAAO,MAAM,CAAC;AAChB,CAAC;AAGM,IAAM,wBAAwB,GAA9B,MAAM,wBAAwB;IAEnC,MAAM,CACJ,OAA6C,EAC7C,OAAmB,EACnB,CAAS,EACT,CAAS,EACT,MAAe,EACf,QAAiB,EACjB,QAAiB,EACjB,QAAiB,EACjB,gBAA6C,EAC7C,WAAyB,EACzB,MAAiH,EACjH,QAAmH,EACnH,OAAa;;QAEb,IAAI,OAAO,CAAC,WAAW,KAAK,CAAC,EAAE;YAC7B,MAAM,EAAE,OAAO,EAAE,SAAS,EAAE,GAAI,OAAO,CAAC,SAAiB,CAAC,MAAM,IAAI,EAAE,CAAC;YACvE,IAAI,OAAO,KAAK,KAAK,IAAI,CAAC,SAAS,IAAI,SAAS,CAAC,OAAO,CAAC,KAAK,KAAK,CAAC,EAAE;gBACpE,OAAO;aACR;YACD,MAAM,SAAS,GAAG,EAAE,CAAC;YACrB,KAAK,CACH,SAAS,EACT,MAAM,CAAC,iBAAiB,EACvB,OAAO,CAAC,SAAiB,CAAC,MAAM,CAAC,CAAC,CAAE,OAAO,CAAC,SAAiB,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,CAC3E,CAAC;YACF,IAAI,CAAC,IAAI,CAAC,eAAe,EAAE;gBACzB,IAAI,CAAC,eAAe,GAAG,IAAI,MAAM,CAAC,SAAS,CAAC,CAAC;aAC9C;iBAAM;gBACL,IAAI,CAAC,eAAe,CAAC,cAAc,CAAC,SAAS,CAAC,CAAC;aAChD;YAED,IAAI,MAAM,GAAI,OAAO,CAAC,SAAiB,CAAC,MAAM,IAAI,EAAE,CAAC;YACrD,IAAI,OAAO,CAAC,IAAI,KAAK,MAAM,IAAI,MAAM,CAAC,KAAK,IAAI,IAAI,IAAI,MAAM,CAAC,OAAO,IAAI,IAAI,EAAE;gBAC7E,MAAM,GAAG,GAAG,EAAE,CAAC;gBACf,UAAU,CAAC,GAAG,EAAE,MAAM,CAAC,CAAC;gBACxB,MAAM,GAAG,GAAG,CAAC;gBACb,MAAM,CAAC,OAAO,GAAG,MAAA,MAAM,CAAC,OAAO,mCAAK,OAAO,CAAC,SAAiB,CAAC,IAAI,CAAC;aACpE;YACD,MAAM,MAAM,GAAG,OAAO,CAAC,iBAAiB,CAAC;YACzC,IAAI,CAAC,eAAe,CAAC,aAAa,+BAChC,UAAU,EAAE,IAAI,EAChB,QAAQ,EAAE,KAAK,EACf,gBAAgB,EAAE,KAAK,IACpB,MAAM,KACT,CAAC,EAAE,MAAM,CAAC,CAAC,EACX,CAAC,EAAE,MAAM,CAAC,CAAC,IACX,CAAC;YAEH,WAAW,CAAC,KAAK,CAAC,uBAAuB,EAAE,CAAC;YAC5C,MAAM,gBAAgB,GAAG,WAAW,CAAC,KAAK,CAAC,QAAQ,CAAC,sBAAsB,CAAC,CAAC;YAC5E,IAAI,gBAAgB,EAAE;gBACpB,gBAAgB,CAAC,GAAG,CAAC,IAAI,CAAC,eAAe,CAAC,CAAC;aAC5C;SACF;aAAM,IAAI,OAAO,CAAC,WAAW,KAAK,CAAC,EAAE;YACpC,OAAO,CAAC,WAAW,GAAG,CAAC,CAAC;YACxB,IAAI,IAAI,CAAC,eAAe,EAAE;gBACxB,IAAI,CAAC,eAAe,CAAC,aAAa,CAAC;oBACjC,UAAU,EAAE,KAAK;iBAClB,CAAC,CAAC;gBACH,MAAA,IAAI,CAAC,eAAe,CAAC,MAAM,0CAAE,WAAW,CAAC,IAAI,CAAC,eAAe,CAAC,CAAC;gBAC/D,IAAI,CAAC,eAAe,GAAG,IAAI,CAAC;aAC7B;SACF;IACH,CAAC;CACF,CAAA;AAnEY,wBAAwB;IADpC,UAAU,EAAE;GACA,wBAAwB,CAmEpC;SAnEY,wBAAwB","file":"contribution.js","sourcesContent":["import type {\n IContext2d,\n IGraphic,\n IGraphicAttribute,\n IInteractiveSubRenderContribution,\n IThemeAttribute,\n IDrawContext\n} from '@visactor/vrender-core';\nimport { injectable } from '@visactor/vrender-core';\nimport { PopTip } from './poptip';\nimport { merge } from '@visactor/vutils';\nimport { theme } from './theme';\n\nfunction wrapPoptip(target: Record<string, any>, source: Record<string, any>) {\n merge(target, theme.poptip, source);\n return target;\n}\n\n@injectable()\nexport class PopTipRenderContribution implements IInteractiveSubRenderContribution {\n declare poptipComponent: PopTip;\n render(\n graphic: IGraphic<Partial<IGraphicAttribute>>,\n context: IContext2d,\n x: number,\n y: number,\n doFill: boolean,\n doStroke: boolean,\n fVisible: boolean,\n sVisible: boolean,\n graphicAttribute: Required<IGraphicAttribute>,\n drawContext: IDrawContext,\n fillCb?: (ctx: IContext2d, markAttribute: Partial<IGraphicAttribute>, themeAttribute: IThemeAttribute) => boolean,\n strokeCb?: (ctx: IContext2d, markAttribute: Partial<IGraphicAttribute>, themeAttribute: IThemeAttribute) => boolean,\n options?: any\n ): void {\n if (graphic._showPoptip === 1) {\n const { visible, visibleCb } = (graphic.attribute as any).poptip || {};\n if (visible === false || (visibleCb && visibleCb(graphic) === false)) {\n return;\n }\n const attribute = {};\n merge(\n attribute,\n PopTip.defaultAttributes,\n (graphic.attribute as any).poptip ? (graphic.attribute as any).poptip : {}\n );\n if (!this.poptipComponent) {\n this.poptipComponent = new PopTip(attribute);\n } else {\n this.poptipComponent.initAttributes(attribute);\n }\n // 如果text图元没有配置title和content的话\n let poptip = (graphic.attribute as any).poptip || {};\n if (graphic.type === 'text' && poptip.title == null && poptip.content == null) {\n const out = {};\n wrapPoptip(out, poptip);\n poptip = out;\n poptip.content = poptip.content ?? (graphic.attribute as any).text;\n }\n const matrix = graphic.globalTransMatrix;\n this.poptipComponent.setAttributes({\n visibleAll: true,\n pickable: false,\n childrenPickable: false,\n ...poptip,\n x: matrix.e,\n y: matrix.f\n });\n // 添加到交互层中\n drawContext.stage.tryInitInteractiveLayer();\n const interactiveLayer = drawContext.stage.getLayer('_builtin_interactive');\n if (interactiveLayer) {\n interactiveLayer.add(this.poptipComponent);\n }\n } else if (graphic._showPoptip === 2) {\n graphic._showPoptip = 0;\n if (this.poptipComponent) {\n this.poptipComponent.setAttributes({\n visibleAll: false\n });\n this.poptipComponent.parent?.removeChild(this.poptipComponent);\n this.poptipComponent = null;\n }\n }\n }\n}\n"]}
|
package/es/poptip/poptip.d.ts
CHANGED
|
@@ -1,5 +1,4 @@
|
|
|
1
1
|
import { type IGroup, type IText } from '@visactor/vrender-core';
|
|
2
|
-
import { type IAABBBoundsLike } from '@visactor/vutils';
|
|
3
2
|
import { AbstractComponent } from '../core/base';
|
|
4
3
|
import type { ComponentOptions } from '../interface';
|
|
5
4
|
import type { PopTipAttributes } from './type';
|
|
@@ -12,10 +11,6 @@ export declare class PopTip extends AbstractComponent<Required<PopTipAttributes>
|
|
|
12
11
|
constructor(attributes: PopTipAttributes, options?: ComponentOptions);
|
|
13
12
|
protected render(): void;
|
|
14
13
|
positionList: string[];
|
|
15
|
-
calculateAnchorPoint(position: string, positionBounds?: IAABBBoundsLike): {
|
|
16
|
-
x: number;
|
|
17
|
-
y: number;
|
|
18
|
-
};
|
|
19
14
|
getAngleAndOffset(position: string, width: number, height: number, size: [number, number], symbolType: 'arrow2Left' | string): {
|
|
20
15
|
angle: number;
|
|
21
16
|
offset: [number, number];
|
package/es/poptip/poptip.js
CHANGED
|
@@ -10,7 +10,7 @@ var __rest = this && this.__rest || function(s, e) {
|
|
|
10
10
|
|
|
11
11
|
import { InputText } from "@visactor/vrender-core";
|
|
12
12
|
|
|
13
|
-
import { AABBBounds, Bounds, getRectIntersect, isArray, isBoolean, isEmpty, isValid, max, merge,
|
|
13
|
+
import { AABBBounds, Bounds, getRectIntersect, isArray, isBoolean, isEmpty, isValid, max, merge, normalizePadding, pi, rectInsideAnotherRect } from "@visactor/vutils";
|
|
14
14
|
|
|
15
15
|
import { AbstractComponent } from "../core/base";
|
|
16
16
|
|
|
@@ -38,7 +38,7 @@ export class PopTip extends AbstractComponent {
|
|
|
38
38
|
}
|
|
39
39
|
render() {
|
|
40
40
|
var _a, _b, _c, _d, _e, _f, _g, _h, _j;
|
|
41
|
-
const {titleStyle: titleStyle = {}, position: position, contentStyle: contentStyle = {}, panel: panel, logoSymbol: logoSymbol,
|
|
41
|
+
const {titleStyle: titleStyle = {}, position: position, contentStyle: contentStyle = {}, panel: panel, logoSymbol: logoSymbol, logoText: logoText, logoTextStyle: logoTextStyle = {}, triangleMode: triangleMode = "default", space: space = 4, minWidth: minWidth = 0, maxWidth: maxWidth = 1 / 0, padding: padding = 4, maxWidthPercent: maxWidthPercent, visible: visible, state: state, dx: dx = 0, dy: dy = 0} = this.attribute;
|
|
42
42
|
let {title: title = "", content: content = ""} = this.attribute;
|
|
43
43
|
title = this.attribute.titleFormatMethod ? this.attribute.titleFormatMethod(title) : title,
|
|
44
44
|
content = this.attribute.contentFormatMethod ? this.attribute.contentFormatMethod(content) : content;
|
|
@@ -104,23 +104,17 @@ export class PopTip extends AbstractComponent {
|
|
|
104
104
|
poptipHeight += contentShape.AABBBounds.height();
|
|
105
105
|
}
|
|
106
106
|
}
|
|
107
|
-
const layout = "auto" === position
|
|
107
|
+
const layout = "auto" === position;
|
|
108
108
|
let maxBBoxI, maxBBoxSize = -1 / 0;
|
|
109
|
-
for (let i = 0; i < positionList.length + 1; i++) {
|
|
110
|
-
const p = layout ? positionList[i === positionList.length ? maxBBoxI : i] : position;
|
|
109
|
+
for (let i = 0; i < this.positionList.length + 1; i++) {
|
|
110
|
+
const p = layout ? this.positionList[i === this.positionList.length ? maxBBoxI : i] : position;
|
|
111
111
|
let symbolType = "arrow2Left", offsetX = (isArray(symbolSize) ? symbolSize[0] : symbolSize) / 4, offsetY = 0;
|
|
112
112
|
"top" === p || "bottom" === p || "left" === p || "right" === p ? symbolType = "arrow2Left" : "concise" === triangleMode && (symbolType = conciseSymbolMap[p],
|
|
113
|
-
offsetX = [ "tl", "bl", "rt", "rb" ].includes(
|
|
114
|
-
offsetY = [ "tl", "tr", "lb", "rb" ].includes(
|
|
113
|
+
offsetX = [ "tl", "bl", "rt", "rb" ].includes(position) ? (isArray(symbolSize) ? symbolSize[0] : symbolSize) / 2 : -(isArray(symbolSize) ? symbolSize[0] : symbolSize) / 2,
|
|
114
|
+
offsetY = [ "tl", "tr", "lb", "rb" ].includes(position) ? -(isArray(symbolSize) ? symbolSize[1] : symbolSize) / 2 : (isArray(symbolSize) ? symbolSize[1] : symbolSize) / 2);
|
|
115
115
|
const {angle: angle, offset: offset} = this.getAngleAndOffset(p, popTipWidth, poptipHeight, isArray(spaceSize) ? spaceSize : [ spaceSize, spaceSize - lineWidth ], symbolType);
|
|
116
|
-
|
|
117
|
-
|
|
118
|
-
y: 0
|
|
119
|
-
};
|
|
120
|
-
if ("bounds" === poptipAnchor && positionBounds && (anchorPoint = this.calculateAnchorPoint(p, positionBounds)),
|
|
121
|
-
isBoolean(bgVisible)) {
|
|
122
|
-
let bgRect;
|
|
123
|
-
bgSymbol = group.createOrUpdateChild("poptip-symbol-panel", Object.assign(Object.assign({}, backgroundStyle), {
|
|
116
|
+
if (isBoolean(bgVisible)) {
|
|
117
|
+
const bgSymbol = group.createOrUpdateChild("poptip-symbol-panel", Object.assign(Object.assign({}, backgroundStyle), {
|
|
124
118
|
visible: bgVisible && (contentVisible || titleVisible),
|
|
125
119
|
x: offsetX,
|
|
126
120
|
y: offsetY,
|
|
@@ -133,7 +127,9 @@ export class PopTip extends AbstractComponent {
|
|
|
133
127
|
dy: offset[1] - (null !== (_j = backgroundStyle.space) && void 0 !== _j ? _j : 0),
|
|
134
128
|
size: symbolSize,
|
|
135
129
|
zIndex: 9
|
|
136
|
-
}), "symbol")
|
|
130
|
+
}), "symbol");
|
|
131
|
+
let bgRect;
|
|
132
|
+
isEmpty(null == state ? void 0 : state.panel) || (bgSymbol.states = state.panel),
|
|
137
133
|
bgRect = panel.panelSymbolType ? group.createOrUpdateChild("poptip-rect-panel", Object.assign(Object.assign({}, backgroundStyle), {
|
|
138
134
|
visible: bgVisible && (contentVisible || titleVisible),
|
|
139
135
|
x: 0,
|
|
@@ -151,8 +147,8 @@ export class PopTip extends AbstractComponent {
|
|
|
151
147
|
}), "rect"), isEmpty(null == state ? void 0 : state.panel) || (bgRect.states = state.panel);
|
|
152
148
|
}
|
|
153
149
|
if (group.setAttributes({
|
|
154
|
-
x: -offset[0] + dx
|
|
155
|
-
y: -offset[1] + dy
|
|
150
|
+
x: -offset[0] + dx,
|
|
151
|
+
y: -offset[1] + dy,
|
|
156
152
|
anchor: [ offsetX, offsetY ]
|
|
157
153
|
}), logoSymbol) {
|
|
158
154
|
const {size: size = 12} = logoSymbol, sizeArray = isArray(size) ? size : [ size, size ];
|
|
@@ -177,80 +173,18 @@ export class PopTip extends AbstractComponent {
|
|
|
177
173
|
zIndex: 10
|
|
178
174
|
}), "text");
|
|
179
175
|
}
|
|
180
|
-
if (!range) break;
|
|
176
|
+
if (!layout || !range) break;
|
|
181
177
|
{
|
|
182
178
|
_tBounds.setValue(0, 0, popTipWidth, poptipHeight).transformWithMatrix(group.globalTransMatrix);
|
|
183
179
|
const b = _tBounds, stageBounds = (new Bounds).setValue(0, 0, range[0], range[1]);
|
|
184
|
-
if (
|
|
185
|
-
|
|
186
|
-
|
|
187
|
-
|
|
188
|
-
size > maxBBoxSize && (maxBBoxSize = size, maxBBoxI = i);
|
|
189
|
-
}
|
|
180
|
+
if (rectInsideAnotherRect(b, stageBounds, !1)) break;
|
|
181
|
+
{
|
|
182
|
+
const bbox = getRectIntersect(b, stageBounds, !1), size = (bbox.x2 - bbox.x1) * (bbox.y2 - bbox.y1);
|
|
183
|
+
size > maxBBoxSize && (maxBBoxSize = size, maxBBoxI = i);
|
|
190
184
|
}
|
|
191
|
-
if ([ "top", "bottom", "left", "right" ].includes(p)) {
|
|
192
|
-
const isVerticalPosition = "top" === p || "bottom" === p, isHorizontalPosition = "left" === p || "right" === p;
|
|
193
|
-
let mainDirectionOverlap = !1;
|
|
194
|
-
if (isVerticalPosition ? mainDirectionOverlap = "top" === p && b.y1 < 0 || "bottom" === p && b.y2 > stageBounds.y2 : isHorizontalPosition && (mainDirectionOverlap = "left" === p && b.x1 < 0 || "right" === p && b.x2 > stageBounds.x2),
|
|
195
|
-
!mainDirectionOverlap) {
|
|
196
|
-
let secondaryOffset = 0;
|
|
197
|
-
const szNumber = (isArray(symbolSize) ? symbolSize[1] : symbolSize) / 2;
|
|
198
|
-
isVerticalPosition ? (b.x1 < 0 ? secondaryOffset = -b.x1 : b.x2 > stageBounds.x2 && (secondaryOffset = stageBounds.x2 - b.x2),
|
|
199
|
-
group.setAttribute("x", group.attribute.x + secondaryOffset), bgSymbol.setAttribute("dx", min(max(bgSymbol.attribute.dx - secondaryOffset, szNumber), b.width() - szNumber))) : isHorizontalPosition && (b.y1 < 0 ? secondaryOffset = -b.y1 : b.y2 > stageBounds.y2 && (secondaryOffset = stageBounds.y2 - b.y2),
|
|
200
|
-
group.setAttribute("y", group.attribute.y + secondaryOffset), bgSymbol.setAttribute("dy", min(max(bgSymbol.attribute.dy - secondaryOffset, szNumber), b.height() - szNumber)));
|
|
201
|
-
break;
|
|
202
|
-
}
|
|
203
|
-
}
|
|
204
|
-
if (!layout) break;
|
|
205
185
|
}
|
|
206
186
|
}
|
|
207
187
|
}
|
|
208
|
-
calculateAnchorPoint(position, positionBounds) {
|
|
209
|
-
if (!positionBounds) return {
|
|
210
|
-
x: 0,
|
|
211
|
-
y: 0
|
|
212
|
-
};
|
|
213
|
-
const {x: x, y: y} = this.attribute, {x1: x1, y1: y1, x2: x2, y2: y2} = positionBounds, width = x2 - x1, height = y2 - y1;
|
|
214
|
-
switch (position) {
|
|
215
|
-
case "top":
|
|
216
|
-
case "tl":
|
|
217
|
-
case "tr":
|
|
218
|
-
return {
|
|
219
|
-
x: x1 + width / 2 - x,
|
|
220
|
-
y: y1 - y
|
|
221
|
-
};
|
|
222
|
-
|
|
223
|
-
case "bottom":
|
|
224
|
-
case "bl":
|
|
225
|
-
case "br":
|
|
226
|
-
return {
|
|
227
|
-
x: x1 + width / 2 - x,
|
|
228
|
-
y: y2 - y
|
|
229
|
-
};
|
|
230
|
-
|
|
231
|
-
case "left":
|
|
232
|
-
case "lt":
|
|
233
|
-
case "lb":
|
|
234
|
-
return {
|
|
235
|
-
x: x1 - x,
|
|
236
|
-
y: y1 + height / 2 - y
|
|
237
|
-
};
|
|
238
|
-
|
|
239
|
-
case "right":
|
|
240
|
-
case "rt":
|
|
241
|
-
case "rb":
|
|
242
|
-
return {
|
|
243
|
-
x: x2 - x,
|
|
244
|
-
y: y1 + height / 2 - y
|
|
245
|
-
};
|
|
246
|
-
|
|
247
|
-
default:
|
|
248
|
-
return {
|
|
249
|
-
x: 0,
|
|
250
|
-
y: 0
|
|
251
|
-
};
|
|
252
|
-
}
|
|
253
|
-
}
|
|
254
188
|
getAngleAndOffset(position, width, height, size, symbolType) {
|
|
255
189
|
const sizeH = "arrow2Left" === symbolType ? size[1] / 2 : size[1];
|
|
256
190
|
switch (position) {
|
package/es/poptip/poptip.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../src/poptip/poptip.ts"],"names":[],"mappings":"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","file":"poptip.js","sourcesContent":["/**\n * @description PopTip组件\n */\nimport {\n InputText,\n type IGraphic,\n type IGroup,\n type IRect,\n type ISymbol,\n type IText,\n type ITextGraphicAttribute,\n type TextAlignType,\n type TextBaselineType\n} from '@visactor/vrender-core';\nimport {\n AABBBounds,\n Bounds,\n getRectIntersect,\n isArray,\n isBoolean,\n isEmpty,\n isValid,\n max,\n merge,\n min,\n normalizePadding,\n pi,\n rectInsideAnotherRect,\n type IAABBBoundsLike\n} from '@visactor/vutils';\nimport { AbstractComponent } from '../core/base';\nimport type { ComponentOptions } from '../interface';\nimport type { PopTipAttributes } from './type';\nimport { loadPoptipComponent } from './register';\n\nconst _tBounds = new AABBBounds();\n\nloadPoptipComponent();\n\nconst tlStr = 'M -0.5 -0.5, L -0.5 0.5, L 0.5 -0.5, Z';\nconst blStr = 'M -0.5 -0.5, L -0.5 0.5, L 0.5 0.5, Z';\nconst trStr = 'M -0.5 -0.5, L 0.5 -0.5, L 0.5 0.5, Z';\nconst brStr = 'M 0.5 -0.5, L 0.5 0.5, L -0.5 0.5, Z';\n\nconst conciseSymbolMap = {\n tl: tlStr,\n tr: trStr,\n bl: blStr,\n br: brStr,\n lt: tlStr,\n lb: blStr,\n rt: trStr,\n rb: brStr\n};\nexport class PopTip extends AbstractComponent<Required<PopTipAttributes>> {\n name = 'poptip';\n\n static defaultAttributes: Partial<PopTipAttributes> = {\n position: 'rt',\n visible: true,\n title: null,\n content: null,\n titleStyle: {\n fontSize: 12,\n fill: '#000',\n textAlign: 'left',\n textBaseline: 'top'\n },\n contentStyle: {\n fontSize: 12,\n fill: '#000',\n textAlign: 'left',\n textBaseline: 'top'\n },\n panel: {} as any,\n maxWidthPercent: 0.8,\n space: 8,\n padding: 10\n };\n\n titleShape?: IText;\n contentShape?: IText;\n group?: IGroup;\n\n constructor(attributes: PopTipAttributes, options?: ComponentOptions) {\n super(options?.skipDefault ? attributes : merge({}, PopTip.defaultAttributes, attributes));\n }\n\n protected render() {\n const {\n titleStyle = {} as ITextGraphicAttribute,\n position,\n contentStyle = {} as ITextGraphicAttribute,\n panel,\n logoSymbol,\n poptipAnchor = 'position',\n logoText,\n logoTextStyle = {} as ITextGraphicAttribute,\n triangleMode = 'default',\n space = 4,\n minWidth = 0,\n maxWidth = Infinity,\n padding = 4,\n maxWidthPercent,\n visible,\n state,\n dx = 0,\n dy = 0,\n positionBounds\n } = this.attribute as PopTipAttributes;\n\n let { title = '', content = '' } = this.attribute as PopTipAttributes;\n\n title = this.attribute.titleFormatMethod ? this.attribute.titleFormatMethod(title) : title;\n content = this.attribute.contentFormatMethod ? this.attribute.contentFormatMethod(content) : content;\n\n const parsedPadding = normalizePadding(padding);\n\n const group = this.createOrUpdateChild('poptip-content', { x: 0, y: 0, zIndex: 1 }, 'group') as IGroup;\n this.group = group;\n\n const maxLineWidth = maxWidth - parsedPadding[1] - parsedPadding[3];\n\n const titleVisible = isValid(title) && visible !== false;\n const titleAttrs = {\n text: isArray(title) ? title : ([title] as any),\n visible: titleVisible,\n wrap: true,\n ...titleStyle,\n x: parsedPadding[3],\n y: parsedPadding[0],\n maxLineWidth,\n textAlign: 'left' as TextAlignType,\n textBaseline: 'top' as TextBaselineType\n };\n\n const titleShape = group.createOrUpdateChild('poptip-title', titleAttrs, 'text') as IText;\n if (!isEmpty(state?.title)) {\n titleShape.states = state.title;\n }\n\n const titleBounds = titleShape.AABBBounds;\n const titleHeight = titleBounds.height();\n const titleWidth = titleBounds.width();\n let height = titleHeight + space;\n if (!titleVisible) {\n height = 0;\n }\n\n const contentVisible = isValid(content) && visible !== false;\n const contentAttrs = {\n text: isArray(content) ? content : ([content] as any),\n visible: contentVisible,\n wrap: true,\n ...contentStyle,\n x: parsedPadding[3],\n y: parsedPadding[0] + height,\n maxLineWidth,\n textAlign: 'left' as TextAlignType,\n textBaseline: 'top' as TextBaselineType\n };\n\n const contentShape = group.createOrUpdateChild('poptip-content', contentAttrs, 'text') as IText;\n if (!isEmpty(state?.content)) {\n contentShape.states = state.content;\n }\n\n const contentBounds = contentShape.AABBBounds;\n const contentHeight = contentBounds.height();\n const contentWidth = contentBounds.width();\n\n if (contentVisible) {\n height += contentHeight;\n }\n\n this.titleShape = titleShape;\n this.contentShape = contentShape;\n\n // 计算整个popTip的宽高\n let popTipWidth = max(\n titleWidth + parsedPadding[1] + parsedPadding[3],\n contentWidth + parsedPadding[1] + parsedPadding[3]\n );\n if (popTipWidth > maxWidth) {\n popTipWidth = maxWidth;\n } else if (popTipWidth < minWidth) {\n popTipWidth = minWidth;\n }\n let poptipHeight = parsedPadding[0] + parsedPadding[2] + height;\n\n // 绘制背景层\n const { visible: bgVisible, square, ...backgroundStyle } = panel;\n // 如果是正方形,取宽高的最大值,同时文字也需要居中\n if (square) {\n const maxWH = max(popTipWidth, poptipHeight);\n popTipWidth = maxWH;\n const deltaH = maxWH - poptipHeight;\n poptipHeight = maxWH;\n titleShape.setAttributes({ dy: deltaH / 2 });\n contentShape.setAttributes({ dy: deltaH / 2 });\n }\n const symbolSize = backgroundStyle.size ?? 12;\n const spaceSize: number | [number, number] = isArray(symbolSize)\n ? [symbolSize[0] + (backgroundStyle.space ?? 0), symbolSize[1] + (backgroundStyle.space ?? 0)]\n : (symbolSize as number) + (backgroundStyle.space ?? 0);\n const lineWidth = backgroundStyle.lineWidth ?? 1;\n const range: [number, number] | undefined = (this as any).stage\n ? [\n (this as any).stage.viewWidth ?? (this as any).stage.width,\n (this as any).stage.viewHeight ?? (this as any).stage.height\n ]\n : undefined;\n\n if (range) {\n // 尝试进行换行\n const b = (this as any).AABBBounds;\n const leftWidth = this.attribute.x ?? b.x1;\n const rightWidth = range[0] - b.x1;\n let maxSpace = Math.max(leftWidth, rightWidth);\n // 减一些buffer,buffer不能超过maxSpace的20%\n const buf = (isArray(symbolSize) ? symbolSize[0] : 12) + 3;\n maxSpace = Math.min(maxSpace - buf, maxSpace * maxWidthPercent);\n // 需要进行换行\n if (maxSpace < popTipWidth) {\n popTipWidth = maxSpace;\n const buf = parsedPadding[1] + parsedPadding[3];\n titleShape.setAttribute('maxLineWidth', maxSpace - buf);\n contentShape.setAttribute('maxLineWidth', maxSpace - buf);\n poptipHeight = parsedPadding[0] + parsedPadding[2];\n if (titleVisible) {\n poptipHeight += titleShape.AABBBounds.height() + space;\n }\n poptipHeight += contentShape.AABBBounds.height();\n }\n }\n\n const layout = position === 'auto' || isArray(position);\n const positionList = isArray(position) ? position : this.positionList;\n // 最多循环this.positionList次\n let maxBBoxI: number;\n let maxBBoxSize: number = -Infinity;\n\n for (let i = 0; i < positionList.length + 1; i++) {\n const p = layout ? positionList[i === positionList.length ? maxBBoxI : i] : position;\n let symbolType = 'arrow2Left';\n let offsetX = (isArray(symbolSize) ? symbolSize[0] : symbolSize) / 4;\n let offsetY = 0;\n if (p === 'top' || p === 'bottom' || p === 'left' || p === 'right') {\n symbolType = 'arrow2Left';\n } else if (triangleMode === 'concise') {\n symbolType = (conciseSymbolMap as any)[p];\n offsetX = ['tl', 'bl', 'rt', 'rb'].includes(p)\n ? (isArray(symbolSize) ? symbolSize[0] : symbolSize) / 2\n : -(isArray(symbolSize) ? symbolSize[0] : symbolSize) / 2;\n offsetY = ['tl', 'tr', 'lb', 'rb'].includes(p)\n ? -(isArray(symbolSize) ? symbolSize[1] : symbolSize) / 2\n : (isArray(symbolSize) ? symbolSize[1] : symbolSize) / 2;\n }\n\n const { angle, offset } = this.getAngleAndOffset(\n p,\n popTipWidth,\n poptipHeight,\n isArray(spaceSize) ? (spaceSize as [number, number]) : [spaceSize, spaceSize - lineWidth],\n symbolType\n );\n\n // Calculate anchor point if using bounds\n let anchorPoint = { x: 0, y: 0 };\n if (poptipAnchor === 'bounds' && positionBounds) {\n anchorPoint = this.calculateAnchorPoint(p, positionBounds);\n }\n\n // 后续可能需要偏移,所以需要保存\n let bgSymbol: ISymbol;\n if (isBoolean(bgVisible)) {\n bgSymbol = group.createOrUpdateChild(\n 'poptip-symbol-panel',\n {\n ...backgroundStyle,\n visible: bgVisible && (contentVisible || titleVisible),\n x: offsetX,\n y: offsetY,\n strokeBoundsBuffer: -1,\n boundsPadding: -2,\n anchor: [0, 0],\n symbolType,\n angle: angle,\n dx: offset[0],\n // 标签和背景同时移动\n dy: offset[1] - (backgroundStyle.space ?? 0),\n size: symbolSize,\n zIndex: 9\n },\n 'symbol'\n ) as ISymbol;\n if (!isEmpty(state?.panel)) {\n bgSymbol.states = state.panel;\n }\n\n let bgRect: IGraphic;\n if (panel.panelSymbolType) {\n bgRect = group.createOrUpdateChild(\n 'poptip-rect-panel',\n {\n ...backgroundStyle,\n visible: bgVisible && (contentVisible || titleVisible),\n x: 0,\n y: 0,\n symbolType: 'rect',\n size: [popTipWidth, poptipHeight],\n zIndex: -8\n },\n 'symbol'\n ) as ISymbol;\n } else {\n bgRect = group.createOrUpdateChild(\n 'poptip-rect-panel',\n {\n ...backgroundStyle,\n visible: bgVisible && (contentVisible || titleVisible),\n x: 0,\n y: 0,\n width: popTipWidth,\n height: poptipHeight,\n zIndex: -8\n },\n 'rect'\n ) as IRect;\n }\n if (!isEmpty(state?.panel)) {\n bgRect.states = state.panel;\n }\n }\n\n group.setAttributes({\n x: -offset[0] + dx + anchorPoint.x,\n y: -offset[1] + dy + anchorPoint.y,\n anchor: [offsetX, offsetY]\n });\n\n // 添加logo和logo内的text\n if (logoSymbol) {\n const { size = 12 } = logoSymbol;\n const sizeArray = isArray(size) ? (size as [number | string, number | string]) : [size, size];\n if (sizeArray[1] === 'auto') {\n sizeArray[1] = poptipHeight;\n }\n if (sizeArray[0] === 'auto') {\n sizeArray[0] = poptipHeight;\n }\n const sizeW = sizeArray[0] as number;\n group.createOrUpdateChild(\n 'poptip-logo',\n {\n ...logoSymbol,\n x: 0,\n y: poptipHeight / 2,\n visible: bgVisible && (contentVisible || titleVisible),\n zIndex: 10,\n size: sizeArray as [number, number]\n },\n 'symbol'\n );\n group.setAttributes({\n x: -offset[0] + dx + sizeW / 2,\n y: -offset[1] + dy\n });\n if (logoText) {\n group.createOrUpdateChild(\n 'poptip-logo-text',\n {\n ...logoTextStyle,\n x: 0,\n y: poptipHeight / 2,\n visible: bgVisible && (contentVisible || titleVisible),\n text: logoText,\n textAlign: 'center',\n textBaseline: 'middle',\n zIndex: 10\n },\n 'text'\n );\n }\n }\n\n if (range) {\n _tBounds.setValue(0, 0, popTipWidth, poptipHeight).transformWithMatrix(group.globalTransMatrix);\n const b = _tBounds;\n const stageBounds = new Bounds().setValue(0, 0, range[0], range[1]);\n if (layout) {\n if (rectInsideAnotherRect(b, stageBounds, false)) {\n break;\n } else {\n const bbox = getRectIntersect(b, stageBounds, false);\n\n const size = (bbox.x2 - bbox.x1) * (bbox.y2 - bbox.y1);\n if (size > maxBBoxSize) {\n maxBBoxSize = size;\n maxBBoxI = i;\n }\n }\n }\n\n // 检测是否是'top' | 'bottom' | 'left' | 'right',如果是,则需要进行偏移\n // 1. 判断主方向上有没有重叠(top|bottom的话就是垂直方向,left|right的话就是水平方向),如果重叠就无法偏移\n // 2. 找到次方向上的偏移量(top|bottom的话就是水平方向,left|right的话就是垂直方向),然后对group进行偏移即可\n if (['top', 'bottom', 'left', 'right'].includes(p)) {\n const isVerticalPosition = p === 'top' || p === 'bottom';\n const isHorizontalPosition = p === 'left' || p === 'right';\n\n // 判断主方向上有没有偏移\n let mainDirectionOverlap = false;\n if (isVerticalPosition) {\n mainDirectionOverlap = (p === 'top' && b.y1 < 0) || (p === 'bottom' && b.y2 > stageBounds.y2);\n } else if (isHorizontalPosition) {\n mainDirectionOverlap = (p === 'left' && b.x1 < 0) || (p === 'right' && b.x2 > stageBounds.x2);\n }\n\n // 如果主方向上没有偏移,则可以尝试在次方向上找到合适的偏移量\n if (!mainDirectionOverlap) {\n let secondaryOffset = 0;\n\n const szNumber = (isArray(symbolSize) ? symbolSize[1] : symbolSize) / 2;\n if (isVerticalPosition) {\n // 水平偏移\n if (b.x1 < 0) {\n secondaryOffset = -b.x1;\n } else if (b.x2 > stageBounds.x2) {\n secondaryOffset = stageBounds.x2 - b.x2;\n }\n group.setAttribute('x', group.attribute.x + secondaryOffset);\n bgSymbol.setAttribute(\n 'dx',\n min(max(bgSymbol.attribute.dx - secondaryOffset, szNumber), b.width() - szNumber)\n );\n } else if (isHorizontalPosition) {\n // 垂直偏移\n if (b.y1 < 0) {\n secondaryOffset = -b.y1;\n } else if (b.y2 > stageBounds.y2) {\n secondaryOffset = stageBounds.y2 - b.y2;\n }\n\n group.setAttribute('y', group.attribute.y + secondaryOffset);\n bgSymbol.setAttribute(\n 'dy',\n min(max(bgSymbol.attribute.dy - secondaryOffset, szNumber), b.height() - szNumber)\n );\n }\n break;\n }\n }\n\n if (!layout) {\n break;\n }\n } else {\n break;\n }\n }\n }\n\n positionList = ['top', 'tl', 'tr', 'bottom', 'bl', 'br', 'left', 'lt', 'lb', 'right', 'rt', 'rb'];\n\n /**\n * Calculate anchor point based on positionBounds and position\n */\n calculateAnchorPoint(position: string, positionBounds?: IAABBBoundsLike): { x: number; y: number } {\n if (!positionBounds) {\n return { x: 0, y: 0 };\n }\n\n const { x, y } = this.attribute;\n\n const { x1, y1, x2, y2 } = positionBounds;\n const width = x2 - x1;\n const height = y2 - y1;\n\n // Calculate anchor point based on position\n switch (position) {\n case 'top':\n case 'tl':\n case 'tr':\n return { x: x1 + width / 2 - x, y: y1 - y };\n case 'bottom':\n case 'bl':\n case 'br':\n return { x: x1 + width / 2 - x, y: y2 - y };\n case 'left':\n case 'lt':\n case 'lb':\n return { x: x1 - x, y: y1 + height / 2 - y };\n case 'right':\n case 'rt':\n case 'rb':\n return { x: x2 - x, y: y1 + height / 2 - y };\n default:\n return { x: 0, y: 0 };\n }\n }\n\n getAngleAndOffset(\n position: string,\n width: number,\n height: number,\n size: [number, number],\n symbolType: 'arrow2Left' | string\n ): { angle: number; offset: [number, number] } {\n // const sizeW = size[0];\n const sizeH = symbolType === 'arrow2Left' ? size[1] / 2 : size[1];\n switch (position) {\n case 'tl':\n return {\n angle: symbolType === 'arrow2Left' ? (pi / 2) * 3 : 0,\n offset: symbolType === 'arrow2Left' ? [width / 4, height + sizeH] : [0, height + sizeH]\n };\n case 'top':\n return { angle: (pi / 2) * 3, offset: [width / 2, height + sizeH] };\n case 'tr':\n return {\n angle: symbolType === 'arrow2Left' ? (pi / 2) * 3 : 0,\n offset: symbolType === 'arrow2Left' ? [(width / 4) * 3, height + sizeH] : [width, height + sizeH]\n };\n case 'rt':\n return {\n angle: 0,\n offset: symbolType === 'arrow2Left' ? [-sizeH, height / 5] : [-sizeH, 0]\n };\n case 'right':\n return { angle: 0, offset: [-sizeH, height / 2] };\n case 'rb':\n return {\n angle: 0,\n offset: symbolType === 'arrow2Left' ? [-sizeH, (height / 5) * 4] : [-sizeH, height]\n };\n case 'bl':\n return {\n angle: symbolType === 'arrow2Left' ? pi / 2 : 0,\n offset: symbolType === 'arrow2Left' ? [width / 4, -sizeH] : [0, -sizeH]\n };\n case 'bottom':\n return { angle: pi / 2, offset: [width / 2, -sizeH] };\n case 'br':\n return {\n angle: symbolType === 'arrow2Left' ? pi / 2 : 0,\n offset: symbolType === 'arrow2Left' ? [(width / 4) * 3, -sizeH] : [width, -sizeH]\n };\n case 'lt':\n return {\n angle: symbolType === 'arrow2Left' ? pi : 0,\n offset: symbolType === 'arrow2Left' ? [width + sizeH, height / 5] : [width + sizeH, 0]\n };\n case 'left':\n return { angle: pi, offset: [width + sizeH, height / 2] };\n case 'lb':\n return {\n angle: symbolType === 'arrow2Left' ? pi : 0,\n offset: symbolType === 'arrow2Left' ? [width + sizeH, (height / 5) * 4] : [width + sizeH, height]\n };\n }\n }\n\n appearAnimate(animateConfig: { duration?: number; easing?: string; wave?: number }) {\n // 基准时间,line[0, 500], point[100, 600] 100 onebyone, pointNormal[600, 1000] 90+90 onebyone, activeLine[500, 700]\n // line和activeLine的clipRange\n const { duration = 1000, easing = 'quadOut' } = animateConfig;\n this.setAttributes({ scaleX: 0, scaleY: 0 });\n this.animate().to({ scaleX: 1, scaleY: 1 }, (duration / 3) * 2, easing as any);\n this.titleShape &&\n this.titleShape\n .animate()\n .play(new InputText({ text: '' }, { text: this.titleShape.attribute.text as string }, duration, easing as any));\n this.contentShape &&\n this.contentShape\n .animate()\n .play(\n new InputText({ text: '' }, { text: this.contentShape.attribute.text as string }, duration, easing as any)\n );\n\n // 摇摆\n if (animateConfig.wave) {\n const dur = duration / 6;\n this.group\n .animate()\n .to({ angle: animateConfig.wave }, dur, easing as any)\n .to({ angle: -animateConfig.wave }, dur * 2, easing as any)\n .to({ angle: animateConfig.wave }, dur * 2, easing as any)\n .to({ angle: 0 }, dur, easing as any);\n }\n }\n\n disappearAnimate(animateConfig: { duration?: number; easing?: string }) {\n // 基准时间,line[0, 500], point[100, 600] 100 onebyone, pointNormal[600, 1000] 90+90 onebyone, activeLine[500, 700]\n // line和activeLine的clipRange\n const { duration = 1000, easing = 'quadOut' } = animateConfig;\n this.animate().to({ scaleX: 0, scaleY: 0 }, duration, easing as any);\n }\n}\n"]}
|
|
1
|
+
{"version":3,"sources":["../src/poptip/poptip.ts"],"names":[],"mappings":"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","file":"poptip.js","sourcesContent":["/**\n * @description PopTip组件\n */\nimport {\n InputText,\n type IGraphic,\n type IGroup,\n type IRect,\n type ISymbol,\n type ISymbolGraphicAttribute,\n type IText,\n type ITextGraphicAttribute,\n type TextAlignType,\n type TextBaselineType\n} from '@visactor/vrender-core';\nimport {\n AABBBounds,\n Bounds,\n getRectIntersect,\n isArray,\n isBoolean,\n isEmpty,\n isValid,\n max,\n merge,\n normalizePadding,\n pi,\n rectInsideAnotherRect\n} from '@visactor/vutils';\nimport { AbstractComponent } from '../core/base';\nimport type { BackgroundAttributes, ComponentOptions } from '../interface';\nimport type { PopTipAttributes } from './type';\nimport { loadPoptipComponent } from './register';\n\nconst _tBounds = new AABBBounds();\n\nloadPoptipComponent();\n\nconst tlStr = 'M -0.5 -0.5, L -0.5 0.5, L 0.5 -0.5, Z';\nconst blStr = 'M -0.5 -0.5, L -0.5 0.5, L 0.5 0.5, Z';\nconst trStr = 'M -0.5 -0.5, L 0.5 -0.5, L 0.5 0.5, Z';\nconst brStr = 'M 0.5 -0.5, L 0.5 0.5, L -0.5 0.5, Z';\n\nconst conciseSymbolMap = {\n tl: tlStr,\n tr: trStr,\n bl: blStr,\n br: brStr,\n lt: tlStr,\n lb: blStr,\n rt: trStr,\n rb: brStr\n};\nexport class PopTip extends AbstractComponent<Required<PopTipAttributes>> {\n name = 'poptip';\n\n static defaultAttributes: Partial<PopTipAttributes> = {\n position: 'rt',\n visible: true,\n title: null,\n content: null,\n titleStyle: {\n fontSize: 12,\n fill: '#000',\n textAlign: 'left',\n textBaseline: 'top'\n },\n contentStyle: {\n fontSize: 12,\n fill: '#000',\n textAlign: 'left',\n textBaseline: 'top'\n },\n panel: {} as any,\n maxWidthPercent: 0.8,\n space: 8,\n padding: 10\n };\n\n titleShape?: IText;\n contentShape?: IText;\n group?: IGroup;\n\n constructor(attributes: PopTipAttributes, options?: ComponentOptions) {\n super(options?.skipDefault ? attributes : merge({}, PopTip.defaultAttributes, attributes));\n }\n\n protected render() {\n const {\n titleStyle = {} as ITextGraphicAttribute,\n position,\n contentStyle = {} as ITextGraphicAttribute,\n panel,\n logoSymbol,\n logoText,\n logoTextStyle = {} as ITextGraphicAttribute,\n triangleMode = 'default',\n space = 4,\n minWidth = 0,\n maxWidth = Infinity,\n padding = 4,\n maxWidthPercent,\n visible,\n state,\n dx = 0,\n dy = 0\n } = this.attribute as PopTipAttributes;\n\n let { title = '', content = '' } = this.attribute as PopTipAttributes;\n\n title = this.attribute.titleFormatMethod ? this.attribute.titleFormatMethod(title) : title;\n content = this.attribute.contentFormatMethod ? this.attribute.contentFormatMethod(content) : content;\n\n const parsedPadding = normalizePadding(padding);\n\n const group = this.createOrUpdateChild('poptip-content', { x: 0, y: 0, zIndex: 1 }, 'group') as IGroup;\n this.group = group;\n\n const maxLineWidth = maxWidth - parsedPadding[1] - parsedPadding[3];\n\n const titleVisible = isValid(title) && visible !== false;\n const titleAttrs = {\n text: isArray(title) ? title : ([title] as any),\n visible: titleVisible,\n wrap: true,\n ...titleStyle,\n x: parsedPadding[3],\n y: parsedPadding[0],\n maxLineWidth,\n textAlign: 'left' as TextAlignType,\n textBaseline: 'top' as TextBaselineType\n };\n\n const titleShape = group.createOrUpdateChild('poptip-title', titleAttrs, 'text') as IText;\n if (!isEmpty(state?.title)) {\n titleShape.states = state.title;\n }\n\n const titleBounds = titleShape.AABBBounds;\n const titleHeight = titleBounds.height();\n const titleWidth = titleBounds.width();\n let height = titleHeight + space;\n if (!titleVisible) {\n height = 0;\n }\n\n const contentVisible = isValid(content) && visible !== false;\n const contentAttrs = {\n text: isArray(content) ? content : ([content] as any),\n visible: contentVisible,\n wrap: true,\n ...contentStyle,\n x: parsedPadding[3],\n y: parsedPadding[0] + height,\n maxLineWidth,\n textAlign: 'left' as TextAlignType,\n textBaseline: 'top' as TextBaselineType\n };\n\n const contentShape = group.createOrUpdateChild('poptip-content', contentAttrs, 'text') as IText;\n if (!isEmpty(state?.content)) {\n contentShape.states = state.content;\n }\n\n const contentBounds = contentShape.AABBBounds;\n const contentHeight = contentBounds.height();\n const contentWidth = contentBounds.width();\n\n if (contentVisible) {\n height += contentHeight;\n }\n\n this.titleShape = titleShape;\n this.contentShape = contentShape;\n\n // 计算整个popTip的宽高\n let popTipWidth = max(\n titleWidth + parsedPadding[1] + parsedPadding[3],\n contentWidth + parsedPadding[1] + parsedPadding[3]\n );\n if (popTipWidth > maxWidth) {\n popTipWidth = maxWidth;\n } else if (popTipWidth < minWidth) {\n popTipWidth = minWidth;\n }\n let poptipHeight = parsedPadding[0] + parsedPadding[2] + height;\n\n // 绘制背景层\n const { visible: bgVisible, square, ...backgroundStyle } = panel;\n // 如果是正方形,取宽高的最大值,同时文字也需要居中\n if (square) {\n const maxWH = max(popTipWidth, poptipHeight);\n popTipWidth = maxWH;\n const deltaH = maxWH - poptipHeight;\n poptipHeight = maxWH;\n titleShape.setAttributes({ dy: deltaH / 2 });\n contentShape.setAttributes({ dy: deltaH / 2 });\n }\n const symbolSize = backgroundStyle.size ?? 12;\n const spaceSize: number | [number, number] = isArray(symbolSize)\n ? [symbolSize[0] + (backgroundStyle.space ?? 0), symbolSize[1] + (backgroundStyle.space ?? 0)]\n : (symbolSize as number) + (backgroundStyle.space ?? 0);\n const lineWidth = backgroundStyle.lineWidth ?? 1;\n const range: [number, number] | undefined = (this as any).stage\n ? [\n (this as any).stage.viewWidth ?? (this as any).stage.width,\n (this as any).stage.viewHeight ?? (this as any).stage.height\n ]\n : undefined;\n\n if (range) {\n // 尝试进行换行\n const b = (this as any).AABBBounds;\n const leftWidth = this.attribute.x ?? b.x1;\n const rightWidth = range[0] - b.x1;\n let maxSpace = Math.max(leftWidth, rightWidth);\n // 减一些buffer,buffer不能超过maxSpace的20%\n const buf = (isArray(symbolSize) ? symbolSize[0] : 12) + 3;\n maxSpace = Math.min(maxSpace - buf, maxSpace * maxWidthPercent);\n // 需要进行换行\n if (maxSpace < popTipWidth) {\n popTipWidth = maxSpace;\n const buf = parsedPadding[1] + parsedPadding[3];\n titleShape.setAttribute('maxLineWidth', maxSpace - buf);\n contentShape.setAttribute('maxLineWidth', maxSpace - buf);\n poptipHeight = parsedPadding[0] + parsedPadding[2];\n if (titleVisible) {\n poptipHeight += titleShape.AABBBounds.height() + space;\n }\n poptipHeight += contentShape.AABBBounds.height();\n }\n }\n\n const layout = position === 'auto';\n // 最多循环this.positionList次\n let maxBBoxI: number;\n let maxBBoxSize: number = -Infinity;\n\n for (let i = 0; i < this.positionList.length + 1; i++) {\n const p = layout ? this.positionList[i === this.positionList.length ? maxBBoxI : i] : position;\n let symbolType = 'arrow2Left';\n let offsetX = (isArray(symbolSize) ? symbolSize[0] : symbolSize) / 4;\n let offsetY = 0;\n if (p === 'top' || p === 'bottom' || p === 'left' || p === 'right') {\n symbolType = 'arrow2Left';\n } else if (triangleMode === 'concise') {\n symbolType = (conciseSymbolMap as any)[p];\n offsetX = ['tl', 'bl', 'rt', 'rb'].includes(position)\n ? (isArray(symbolSize) ? symbolSize[0] : symbolSize) / 2\n : -(isArray(symbolSize) ? symbolSize[0] : symbolSize) / 2;\n offsetY = ['tl', 'tr', 'lb', 'rb'].includes(position)\n ? -(isArray(symbolSize) ? symbolSize[1] : symbolSize) / 2\n : (isArray(symbolSize) ? symbolSize[1] : symbolSize) / 2;\n }\n\n const { angle, offset } = this.getAngleAndOffset(\n p,\n popTipWidth,\n poptipHeight,\n isArray(spaceSize) ? (spaceSize as [number, number]) : [spaceSize, spaceSize - lineWidth],\n symbolType\n );\n if (isBoolean(bgVisible)) {\n const bgSymbol = group.createOrUpdateChild(\n 'poptip-symbol-panel',\n {\n ...backgroundStyle,\n visible: bgVisible && (contentVisible || titleVisible),\n x: offsetX,\n y: offsetY,\n strokeBoundsBuffer: -1,\n boundsPadding: -2,\n anchor: [0, 0],\n symbolType,\n angle: angle,\n dx: offset[0],\n // 标签和背景同时移动\n dy: offset[1] - (backgroundStyle.space ?? 0),\n size: symbolSize,\n zIndex: 9\n },\n 'symbol'\n ) as ISymbol;\n if (!isEmpty(state?.panel)) {\n bgSymbol.states = state.panel;\n }\n\n let bgRect: IGraphic;\n if (panel.panelSymbolType) {\n bgRect = group.createOrUpdateChild(\n 'poptip-rect-panel',\n {\n ...backgroundStyle,\n visible: bgVisible && (contentVisible || titleVisible),\n x: 0,\n y: 0,\n symbolType: 'rect',\n size: [popTipWidth, poptipHeight],\n zIndex: -8\n },\n 'symbol'\n ) as ISymbol;\n } else {\n bgRect = group.createOrUpdateChild(\n 'poptip-rect-panel',\n {\n ...backgroundStyle,\n visible: bgVisible && (contentVisible || titleVisible),\n x: 0,\n y: 0,\n width: popTipWidth,\n height: poptipHeight,\n zIndex: -8\n },\n 'rect'\n ) as IRect;\n }\n if (!isEmpty(state?.panel)) {\n bgRect.states = state.panel;\n }\n }\n\n group.setAttributes({\n x: -offset[0] + dx,\n y: -offset[1] + dy,\n anchor: [offsetX, offsetY]\n });\n\n // 添加logo和logo内的text\n if (logoSymbol) {\n const { size = 12 } = logoSymbol;\n const sizeArray = isArray(size) ? (size as [number | string, number | string]) : [size, size];\n if (sizeArray[1] === 'auto') {\n sizeArray[1] = poptipHeight;\n }\n if (sizeArray[0] === 'auto') {\n sizeArray[0] = poptipHeight;\n }\n const sizeW = sizeArray[0] as number;\n group.createOrUpdateChild(\n 'poptip-logo',\n {\n ...logoSymbol,\n x: 0,\n y: poptipHeight / 2,\n visible: bgVisible && (contentVisible || titleVisible),\n zIndex: 10,\n size: sizeArray as [number, number]\n },\n 'symbol'\n );\n group.setAttributes({\n x: -offset[0] + dx + sizeW / 2,\n y: -offset[1] + dy\n });\n if (logoText) {\n group.createOrUpdateChild(\n 'poptip-logo-text',\n {\n ...logoTextStyle,\n x: 0,\n y: poptipHeight / 2,\n visible: bgVisible && (contentVisible || titleVisible),\n text: logoText,\n textAlign: 'center',\n textBaseline: 'middle',\n zIndex: 10\n },\n 'text'\n );\n }\n }\n\n if (layout && range) {\n _tBounds.setValue(0, 0, popTipWidth, poptipHeight).transformWithMatrix(group.globalTransMatrix);\n const b = _tBounds;\n const stageBounds = new Bounds().setValue(0, 0, range[0], range[1]);\n if (rectInsideAnotherRect(b, stageBounds, false)) {\n break;\n } else {\n const bbox = getRectIntersect(b, stageBounds, false);\n const size = (bbox.x2 - bbox.x1) * (bbox.y2 - bbox.y1);\n if (size > maxBBoxSize) {\n maxBBoxSize = size;\n maxBBoxI = i;\n }\n }\n } else {\n break;\n }\n }\n }\n\n positionList = ['top', 'tl', 'tr', 'bottom', 'bl', 'br', 'left', 'lt', 'lb', 'right', 'rt', 'rb'];\n\n getAngleAndOffset(\n position: string,\n width: number,\n height: number,\n size: [number, number],\n symbolType: 'arrow2Left' | string\n ): { angle: number; offset: [number, number] } {\n // const sizeW = size[0];\n const sizeH = symbolType === 'arrow2Left' ? size[1] / 2 : size[1];\n switch (position) {\n case 'tl':\n return {\n angle: symbolType === 'arrow2Left' ? (pi / 2) * 3 : 0,\n offset: symbolType === 'arrow2Left' ? [width / 4, height + sizeH] : [0, height + sizeH]\n };\n case 'top':\n return { angle: (pi / 2) * 3, offset: [width / 2, height + sizeH] };\n case 'tr':\n return {\n angle: symbolType === 'arrow2Left' ? (pi / 2) * 3 : 0,\n offset: symbolType === 'arrow2Left' ? [(width / 4) * 3, height + sizeH] : [width, height + sizeH]\n };\n case 'rt':\n return {\n angle: 0,\n offset: symbolType === 'arrow2Left' ? [-sizeH, height / 5] : [-sizeH, 0]\n };\n case 'right':\n return { angle: 0, offset: [-sizeH, height / 2] };\n case 'rb':\n return {\n angle: 0,\n offset: symbolType === 'arrow2Left' ? [-sizeH, (height / 5) * 4] : [-sizeH, height]\n };\n case 'bl':\n return {\n angle: symbolType === 'arrow2Left' ? pi / 2 : 0,\n offset: symbolType === 'arrow2Left' ? [width / 4, -sizeH] : [0, -sizeH]\n };\n case 'bottom':\n return { angle: pi / 2, offset: [width / 2, -sizeH] };\n case 'br':\n return {\n angle: symbolType === 'arrow2Left' ? pi / 2 : 0,\n offset: symbolType === 'arrow2Left' ? [(width / 4) * 3, -sizeH] : [width, -sizeH]\n };\n case 'lt':\n return {\n angle: symbolType === 'arrow2Left' ? pi : 0,\n offset: symbolType === 'arrow2Left' ? [width + sizeH, height / 5] : [width + sizeH, 0]\n };\n case 'left':\n return { angle: pi, offset: [width + sizeH, height / 2] };\n case 'lb':\n return {\n angle: symbolType === 'arrow2Left' ? pi : 0,\n offset: symbolType === 'arrow2Left' ? [width + sizeH, (height / 5) * 4] : [width + sizeH, height]\n };\n }\n }\n\n appearAnimate(animateConfig: { duration?: number; easing?: string; wave?: number }) {\n // 基准时间,line[0, 500], point[100, 600] 100 onebyone, pointNormal[600, 1000] 90+90 onebyone, activeLine[500, 700]\n // line和activeLine的clipRange\n const { duration = 1000, easing = 'quadOut' } = animateConfig;\n this.setAttributes({ scaleX: 0, scaleY: 0 });\n this.animate().to({ scaleX: 1, scaleY: 1 }, (duration / 3) * 2, easing as any);\n this.titleShape &&\n this.titleShape\n .animate()\n .play(new InputText({ text: '' }, { text: this.titleShape.attribute.text as string }, duration, easing as any));\n this.contentShape &&\n this.contentShape\n .animate()\n .play(\n new InputText({ text: '' }, { text: this.contentShape.attribute.text as string }, duration, easing as any)\n );\n\n // 摇摆\n if (animateConfig.wave) {\n const dur = duration / 6;\n this.group\n .animate()\n .to({ angle: animateConfig.wave }, dur, easing as any)\n .to({ angle: -animateConfig.wave }, dur * 2, easing as any)\n .to({ angle: animateConfig.wave }, dur * 2, easing as any)\n .to({ angle: 0 }, dur, easing as any);\n }\n }\n\n disappearAnimate(animateConfig: { duration?: number; easing?: string }) {\n // 基准时间,line[0, 500], point[100, 600] 100 onebyone, pointNormal[600, 1000] 90+90 onebyone, activeLine[500, 700]\n // line和activeLine的clipRange\n const { duration = 1000, easing = 'quadOut' } = animateConfig;\n this.animate().to({ scaleX: 0, scaleY: 0 }, duration, easing as any);\n }\n}\n"]}
|
package/es/poptip/type.d.ts
CHANGED
|
@@ -1,16 +1,13 @@
|
|
|
1
1
|
import type { IGraphic, IGroupGraphicAttribute, IRectGraphicAttribute, ISymbolGraphicAttribute, ITextGraphicAttribute } from '@visactor/vrender-core';
|
|
2
2
|
import type { Padding, State } from '../core/type';
|
|
3
3
|
import type { BackgroundAttributes } from '../interface';
|
|
4
|
-
import type { IAABBBoundsLike } from '@visactor/vutils';
|
|
5
4
|
type StateStyle = {
|
|
6
5
|
title?: State<Partial<ITextGraphicAttribute>>;
|
|
7
6
|
content?: State<Partial<ITextGraphicAttribute>>;
|
|
8
7
|
panel?: State<Partial<IRectGraphicAttribute>>;
|
|
9
8
|
};
|
|
10
9
|
export type PopTipAttributes = {
|
|
11
|
-
position?: 'auto' | 'top' | 'tl' | 'tr' | 'bottom' | 'bl' | 'br' | 'left' | 'lt' | 'lb' | 'right' | 'rt' | 'rb'
|
|
12
|
-
poptipAnchor?: 'position' | 'bounds';
|
|
13
|
-
positionBounds?: IAABBBoundsLike;
|
|
10
|
+
position?: 'auto' | 'top' | 'tl' | 'tr' | 'bottom' | 'bl' | 'br' | 'left' | 'lt' | 'lb' | 'right' | 'rt' | 'rb';
|
|
14
11
|
title?: string | string[] | number | number[];
|
|
15
12
|
titleStyle?: Partial<ITextGraphicAttribute>;
|
|
16
13
|
titleFormatMethod?: (t: string | string[] | number | number[]) => string | string[] | number | number[];
|
package/es/poptip/type.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../src/poptip/type.ts"],"names":[],"mappings":"","file":"type.js","sourcesContent":["import type {\n IGraphic,\n IGroupGraphicAttribute,\n IRectGraphicAttribute,\n ISymbolGraphicAttribute,\n ITextGraphicAttribute\n} from '@visactor/vrender-core';\nimport type { Padding, State } from '../core/type';\nimport type { BackgroundAttributes } from '../interface';\
|
|
1
|
+
{"version":3,"sources":["../src/poptip/type.ts"],"names":[],"mappings":"","file":"type.js","sourcesContent":["import type {\n IGraphic,\n IGroupGraphicAttribute,\n IRectGraphicAttribute,\n ISymbolGraphicAttribute,\n ITextGraphicAttribute\n} from '@visactor/vrender-core';\nimport type { Padding, State } from '../core/type';\nimport type { BackgroundAttributes } from '../interface';\n\ntype StateStyle = {\n /**\n * title 文本的状态配置\n */\n title?: State<Partial<ITextGraphicAttribute>>;\n /**\n * content 文本的状态配置\n */\n content?: State<Partial<ITextGraphicAttribute>>;\n /**\n * panel 背景的状态配置ß\n */\n panel?: State<Partial<IRectGraphicAttribute>>;\n};\n\nexport type PopTipAttributes = {\n /**\n * 弹出框的方位,有 12 个方位可供选择\n */\n position?: 'auto' | 'top' | 'tl' | 'tr' | 'bottom' | 'bl' | 'br' | 'left' | 'lt' | 'lb' | 'right' | 'rt' | 'rb';\n /**\n * 标题内容,如果需要进行换行,则使用数组形式,如 ['abc', '123']\n */\n title?: string | string[] | number | number[];\n /**\n * 标题样式\n */\n titleStyle?: Partial<ITextGraphicAttribute>;\n /**\n * 标题的格式化方法\n */\n titleFormatMethod?: (t: string | string[] | number | number[]) => string | string[] | number | number[];\n /**\n * 内容文本,如果需要进行换行,则使用数组形式,如 ['abc', '123']\n */\n content?: string | string[] | number | number[];\n /**\n * 内容文本样式\n */\n contentStyle?: Partial<ITextGraphicAttribute>;\n /**\n * 内容的格式化方法\n */\n contentFormatMethod?: (t: string | string[] | number | number[]) => string | string[] | number | number[];\n /**\n * 标题与内容的间距\n */\n space?: number;\n /**\n * 内部边距\n */\n padding?: Padding;\n /**\n * 标签的背景面板配置, TODO: 支持symbol形状\n * space: 与位置之间的距离\n * square: 是否是正方形\n */\n panel?: BackgroundAttributes &\n ISymbolGraphicAttribute & { space?: number; square?: boolean; panelSymbolType?: string };\n\n // 标签三角的模式,默认是default,即默认的三角形状,concise是紧凑型三角形状显得更简洁\n // @since 0.22.0\n triangleMode?: 'default' | 'concise';\n\n // 放置在poptip前方的logo区域\n logoSymbol?: ISymbolGraphicAttribute;\n // logo内的text\n logoText?: string | string[] | number | number[];\n // logo内的text样式\n logoTextStyle?: Partial<ITextGraphicAttribute>;\n\n /**\n * 最小宽度,像素值\n * @default 30\n */\n minWidth?: number;\n /**\n * 最大宽度,像素值。当文字超过最大宽度时,会自动省略。\n */\n maxWidth?: number;\n\n /**\n * 最大宽度比例\n */\n maxWidthPercent?: number;\n /**\n * 是否展示\n */\n visible?: boolean;\n /**\n * 自定义的展示逻辑\n */\n visibleFunc?: (graphic: IGraphic) => boolean;\n state?: StateStyle;\n dx?: number;\n dy?: number;\n} & Omit<IGroupGraphicAttribute, 'background'>;\n\nexport type PoptipShapeAttributes = {\n /**\n * 是否展示 shape\n */\n visible: boolean;\n} & Partial<ISymbolGraphicAttribute>;\n"]}
|
|
@@ -49,6 +49,7 @@ export declare class ScrollBar extends AbstractComponent<Required<ScrollBarAttri
|
|
|
49
49
|
private _computeScrollValue;
|
|
50
50
|
private _onSliderPointerMove;
|
|
51
51
|
private _onSliderPointerMoveWithDelay;
|
|
52
|
+
private _clearDragEvents;
|
|
52
53
|
private _onSliderPointerUp;
|
|
53
54
|
private _reset;
|
|
54
55
|
}
|
|
@@ -8,6 +8,8 @@ import { loadScrollbarComponent } from "./register";
|
|
|
8
8
|
|
|
9
9
|
import { SCROLLBAR_START_EVENT, SCROLLBAR_EVENT, SCROLLBAR_END_EVENT } from "../constant";
|
|
10
10
|
|
|
11
|
+
import { getEndTriggersOfDrag } from "../util/event";
|
|
12
|
+
|
|
11
13
|
const delayMap = {
|
|
12
14
|
debounce: debounce,
|
|
13
15
|
throttle: throttle
|
|
@@ -31,17 +33,21 @@ export class ScrollBar extends AbstractComponent {
|
|
|
31
33
|
this.setScrollRange([ currentScrollValue - (range[1] - range[0]) / 2, currentScrollValue + (range[1] - range[0]) / 2 ], !1),
|
|
32
34
|
this.stage && !this.stage.autoRender && this.stage.renderNextFrame();
|
|
33
35
|
}, this._onSliderPointerDown = e => {
|
|
36
|
+
this._clearDragEvents();
|
|
34
37
|
const {stopSliderDownPropagation: stopSliderDownPropagation = !0} = this.attribute;
|
|
35
38
|
stopSliderDownPropagation && e.stopPropagation();
|
|
36
39
|
const {direction: direction} = this.attribute, {x: x, y: y} = this.stage.eventPointTransform(e);
|
|
37
40
|
this._prePos = "horizontal" === direction ? x : y, this._dispatchEvent(SCROLLBAR_START_EVENT, {
|
|
38
41
|
pos: this._prePos,
|
|
39
42
|
event: e
|
|
40
|
-
})
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
capture: !0
|
|
44
|
-
|
|
43
|
+
});
|
|
44
|
+
const triggers = getEndTriggersOfDrag(), obj = "browser" === vglobal.env ? vglobal : this.stage;
|
|
45
|
+
obj.addEventListener("pointermove", this._onSliderPointerMoveWithDelay, {
|
|
46
|
+
capture: !0,
|
|
47
|
+
passive: !0
|
|
48
|
+
}), triggers.forEach((trigger => {
|
|
49
|
+
obj.addEventListener(trigger, this._onSliderPointerUp);
|
|
50
|
+
}));
|
|
45
51
|
}, this._computeScrollValue = e => {
|
|
46
52
|
const {direction: direction} = this.attribute, {x: x, y: y} = this.stage.eventPointTransform(e);
|
|
47
53
|
let currentScrollValue, currentPos, delta = 0;
|
|
@@ -50,6 +56,7 @@ export class ScrollBar extends AbstractComponent {
|
|
|
50
56
|
currentScrollValue = delta / height) : (currentPos = x, delta = currentPos - this._prePos,
|
|
51
57
|
currentScrollValue = delta / width), [ currentPos, currentScrollValue ];
|
|
52
58
|
}, this._onSliderPointerMove = e => {
|
|
59
|
+
e.preventDefault();
|
|
53
60
|
const {stopSliderMovePropagation: stopSliderMovePropagation = !0} = this.attribute;
|
|
54
61
|
stopSliderMovePropagation && e.stopPropagation();
|
|
55
62
|
const preScrollRange = this.getScrollRange(), [currentPos, currentScrollValue] = this._computeScrollValue(e);
|
|
@@ -57,16 +64,11 @@ export class ScrollBar extends AbstractComponent {
|
|
|
57
64
|
this._prePos = currentPos;
|
|
58
65
|
}, this._onSliderPointerMoveWithDelay = 0 === this.attribute.delayTime ? this._onSliderPointerMove : delayMap[this.attribute.delayType](this._onSliderPointerMove, this.attribute.delayTime),
|
|
59
66
|
this._onSliderPointerUp = e => {
|
|
60
|
-
e.preventDefault();
|
|
61
67
|
const {range: preRange, limitRange: limitRange = [ 0, 1 ]} = this.attribute, preScrollRange = this.getScrollRange(), [currentPos, currentScrollValue] = this._computeScrollValue(e), range = [ preScrollRange[0] + currentScrollValue, preScrollRange[1] + currentScrollValue ];
|
|
62
68
|
this._dispatchEvent(SCROLLBAR_END_EVENT, {
|
|
63
69
|
pre: preRange,
|
|
64
70
|
value: clampRange(range, limitRange[0], limitRange[1])
|
|
65
|
-
}),
|
|
66
|
-
capture: !0
|
|
67
|
-
}), vglobal.removeEventListener("pointerup", this._onSliderPointerUp)) : (this.stage.removeEventListener("pointermove", this._onSliderPointerMoveWithDelay, {
|
|
68
|
-
capture: !0
|
|
69
|
-
}), this.stage.removeEventListener("pointerup", this._onSliderPointerUp), this.stage.removeEventListener("pointerupoutside", this._onSliderPointerUp));
|
|
71
|
+
}), this._clearDragEvents();
|
|
70
72
|
};
|
|
71
73
|
}
|
|
72
74
|
setScrollRange(range, render = !0) {
|
|
@@ -162,6 +164,15 @@ export class ScrollBar extends AbstractComponent {
|
|
|
162
164
|
const {limitRange: limitRange = [ 0, 1 ], direction: direction} = this.attribute, [min, max] = clampRange(limitRange, 0, 1), {width: width, height: height, x1: x1, y1: y1} = this.getSliderRenderBounds(), sliderSize = this._sliderSize;
|
|
163
165
|
return "horizontal" === direction ? clampRange([ x1 + min * width, x1 + max * width ], x1, width - sliderSize) : clampRange([ y1 + min * height, y1 + max * height ], y1, height - sliderSize);
|
|
164
166
|
}
|
|
167
|
+
_clearDragEvents() {
|
|
168
|
+
const triggers = getEndTriggersOfDrag(), obj = "browser" === vglobal.env ? vglobal : this.stage;
|
|
169
|
+
obj.removeEventListener("pointermove", this._onSliderPointerMoveWithDelay, {
|
|
170
|
+
capture: !0,
|
|
171
|
+
passive: !1
|
|
172
|
+
}), triggers.forEach((trigger => {
|
|
173
|
+
obj.removeEventListener(trigger, this._onSliderPointerUp);
|
|
174
|
+
}));
|
|
175
|
+
}
|
|
165
176
|
_reset() {
|
|
166
177
|
this._sliderRenderBounds = null, this._sliderLimitRange = null;
|
|
167
178
|
}
|