@visactor/vrender-components 0.21.1-alpha.0 → 0.21.1
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/index.d.ts +1 -1
- package/cjs/index.js +1 -1
- package/cjs/index.js.map +1 -1
- package/cjs/label/base.d.ts +1 -0
- package/cjs/label/base.js +26 -19
- package/cjs/label/base.js.map +1 -1
- package/cjs/label/overlap/place.d.ts +1 -1
- package/cjs/label/overlap/place.js +7 -6
- package/cjs/label/overlap/place.js.map +1 -1
- package/cjs/label/overlap/shiftY.js +3 -3
- package/cjs/label/overlap/shiftY.js.map +1 -1
- package/cjs/label/type.d.ts +2 -0
- package/cjs/label/type.js.map +1 -1
- package/cjs/marker/config.js +32 -0
- package/cjs/marker/config.js.map +1 -1
- package/cjs/marker/point.js +5 -2
- package/cjs/marker/point.js.map +1 -1
- package/cjs/marker/type.d.ts +9 -1
- package/cjs/marker/type.js +6 -2
- package/cjs/marker/type.js.map +1 -1
- package/cjs/scrollbar/scrollbar-plugin.js +24 -19
- package/cjs/scrollbar/scrollbar-plugin.js.map +1 -1
- package/dist/index.es.js +177 -75
- package/es/index.d.ts +1 -1
- package/es/index.js +1 -1
- package/es/index.js.map +1 -1
- package/es/label/base.d.ts +1 -0
- package/es/label/base.js +26 -19
- package/es/label/base.js.map +1 -1
- package/es/label/overlap/place.d.ts +1 -1
- package/es/label/overlap/place.js +6 -5
- package/es/label/overlap/place.js.map +1 -1
- package/es/label/overlap/shiftY.js +3 -3
- package/es/label/overlap/shiftY.js.map +1 -1
- package/es/label/type.d.ts +2 -0
- package/es/label/type.js.map +1 -1
- package/es/marker/config.js +32 -0
- package/es/marker/config.js.map +1 -1
- package/es/marker/point.js +3 -1
- package/es/marker/point.js.map +1 -1
- package/es/marker/type.d.ts +9 -1
- package/es/marker/type.js +6 -2
- package/es/marker/type.js.map +1 -1
- package/es/scrollbar/scrollbar-plugin.js +24 -19
- package/es/scrollbar/scrollbar-plugin.js.map +1 -1
- package/package.json +8 -8
|
@@ -27,22 +27,23 @@ let ScrollBarPlugin = ScrollBarPlugin_1 = class {
|
|
|
27
27
|
this.scrollContainer.showV && !newScrollContainer.showV && this.clearScrollbar(this.scrollContainer.g, "vertical"),
|
|
28
28
|
this.scrollContainer = newScrollContainer;
|
|
29
29
|
} else data && this.scrollContainer && data.g !== this.scrollContainer.g && this.clearScrollbar(this.scrollContainer.g, "all");
|
|
30
|
-
this.scrollContainer = null != data ? data : this.scrollContainer;
|
|
31
|
-
const scrollContainer = data.g
|
|
30
|
+
if (this.scrollContainer = null != data ? data : this.scrollContainer, !data) return;
|
|
31
|
+
const scrollContainer = data.g;
|
|
32
|
+
if (!scrollContainer) return;
|
|
33
|
+
const {width: width, height: height, scrollX: scrollX = 0, scrollY: scrollY = 0} = scrollContainer.attribute;
|
|
32
34
|
let newScrollX = scrollX, newScrollY = scrollY, {showH: showH, showV: showV} = data;
|
|
33
35
|
this.scrollContainerBounds = (new Bounds).set(0, 0, scrollContainer.attribute.width, scrollContainer.attribute.height),
|
|
34
36
|
showH && showH && (abs(e.deltaX) > abs(e.deltaY) ? (showH = showH && !0, showV = showV && !1) : (showH = showH && !1,
|
|
35
37
|
showV = showV && !0));
|
|
36
|
-
const childrenBounds = this.childrenBounds;
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
newScrollY
|
|
41
|
-
childrenBounds.translate(-newScrollX, -newScrollY), this.addOrUpdateScroll(showH, showV, scrollContainer.parent, scrollContainer),
|
|
38
|
+
const scrollWidth = this.childrenBounds.width(), scrollHeight = this.childrenBounds.height();
|
|
39
|
+
showH && (newScrollX = scrollX - (null !== (_a = e.deltaX) && void 0 !== _a ? _a : 0),
|
|
40
|
+
newScrollX > 0 ? newScrollX = 0 : newScrollX < width - scrollWidth && (newScrollX = width - scrollWidth)),
|
|
41
|
+
showV && (newScrollY = scrollY - (null !== (_b = e.deltaY) && void 0 !== _b ? _b : 0),
|
|
42
|
+
newScrollY > 0 ? newScrollY = 0 : newScrollY < height - scrollHeight && (newScrollY = height - scrollHeight)),
|
|
42
43
|
scrollContainer.setAttributes({
|
|
43
|
-
scrollX:
|
|
44
|
-
scrollY:
|
|
45
|
-
});
|
|
44
|
+
scrollX: newScrollX,
|
|
45
|
+
scrollY: newScrollY
|
|
46
|
+
}), this.addOrUpdateScroll(showH, showV, scrollContainer.parent, scrollContainer);
|
|
46
47
|
}, this.handleScrollBarChange = params => {
|
|
47
48
|
if (!(this.scrollContainer && this.scrollContainerBounds && this.childrenBounds && params && params.target && params.detail && params.detail.value)) return;
|
|
48
49
|
const scrollbar = params.target, newRange = params.detail.value;
|
|
@@ -92,7 +93,7 @@ let ScrollBarPlugin = ScrollBarPlugin_1 = class {
|
|
|
92
93
|
return isHorozntal ? "horizontal" : "vertical";
|
|
93
94
|
}
|
|
94
95
|
addOrUpdateHScroll(scrollContainer, container, isHorozntal) {
|
|
95
|
-
var _a;
|
|
96
|
+
var _a, _b;
|
|
96
97
|
const direction = this.getDirection(isHorozntal), name = `${null !== (_a = scrollContainer.name) && void 0 !== _a ? _a : scrollContainer._uid}_${this.getDirection(isHorozntal)}_${this.name}`, scrollbars = container.children.filter((g => g.name === name));
|
|
97
98
|
let isUpdate = !0, scrollBar = scrollbars[0];
|
|
98
99
|
const {y: y = 0, dy: dy = 0, x: x = 0, dx: dx = 0, height: height, width: width, zIndex: zIndex = 0} = this.scrollContainer.g.attribute, attrs = {
|
|
@@ -113,13 +114,13 @@ let ScrollBarPlugin = ScrollBarPlugin_1 = class {
|
|
|
113
114
|
index && (null === (_a = child.parent) || void 0 === _a || _a.removeChild(child));
|
|
114
115
|
})) : (isUpdate = !1, scrollBar = new ScrollBar(attrs), scrollBar.name = name, container.add(scrollBar),
|
|
115
116
|
scrollBar.isScrollBar = !0);
|
|
116
|
-
const childrenBounds = this.childrenBounds;
|
|
117
|
+
const childrenBounds = this.childrenBounds, {scrollX: scrollX, scrollY: scrollY} = scrollContainer.attribute;
|
|
117
118
|
if (isHorozntal) {
|
|
118
|
-
const ratio = Math.min(this.scrollContainerBounds.width() / childrenBounds.width(), 1), start = Math.max(Math.min(
|
|
119
|
-
attrs.x = x + dx, attrs.y = y + dy + height -
|
|
119
|
+
const ratio = Math.min(this.scrollContainerBounds.width() / childrenBounds.width(), 1), start = Math.max(Math.min(scrollX / this.childrenBounds.width(), 0), ratio - 1);
|
|
120
|
+
attrs.x = x + dx, attrs.y = y + dy + height - (null !== (_b = attrs.height) && void 0 !== _b ? _b : 0),
|
|
120
121
|
attrs.range = [ -start, -start + ratio ];
|
|
121
122
|
} else {
|
|
122
|
-
const ratio = Math.min(this.scrollContainerBounds.height() / childrenBounds.height(), 1), start = Math.max(Math.min(
|
|
123
|
+
const ratio = Math.min(this.scrollContainerBounds.height() / childrenBounds.height(), 1), start = Math.max(Math.min(scrollY / this.childrenBounds.height(), 0), ratio - 1);
|
|
123
124
|
attrs.x = x + dx + width - this.scrollContainerBounds.width(), attrs.y = y + dy,
|
|
124
125
|
attrs.range = [ -start, -start + ratio ];
|
|
125
126
|
}
|
|
@@ -139,9 +140,13 @@ let ScrollBarPlugin = ScrollBarPlugin_1 = class {
|
|
|
139
140
|
const {overflow: overflow, width: width, height: height} = g.attribute;
|
|
140
141
|
if (!overflow || "hidden" === overflow) return null;
|
|
141
142
|
let showH = !1, showV = !1;
|
|
142
|
-
|
|
143
|
-
showV = !showH)
|
|
144
|
-
|
|
143
|
+
"scroll" === overflow ? (showH = !0, showV = !0) : (showH = "scroll-x" === overflow,
|
|
144
|
+
showV = !showH);
|
|
145
|
+
const childrenBounds = this.childrenBounds;
|
|
146
|
+
return childrenBounds.clear(), g.forEachChildren((g => {
|
|
147
|
+
childrenBounds.union(g.AABBBounds);
|
|
148
|
+
})), g.AABBBounds.empty() || (showH && (showH = width < childrenBounds.width()),
|
|
149
|
+
showV && (showV = height < childrenBounds.height())), showH || showV ? {
|
|
145
150
|
g: g,
|
|
146
151
|
showH: showH,
|
|
147
152
|
showV: showV
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../src/scrollbar/scrollbar-plugin.ts"],"names":[],"mappings":"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","file":"scrollbar-plugin.js","sourcesContent":["import type { IGraphic, IGroup, IPlugin, IPluginService } from '@visactor/vrender-core';\nimport { Generator, injectable } from '@visactor/vrender-core';\nimport { ScrollBar } from './scrollbar';\nimport type { IAABBBounds } from '@visactor/vutils';\nimport { AABBBounds, abs, Bounds } from '@visactor/vutils';\nimport { SCROLLBAR_EVENT } from '../constant';\nimport type { ScrollBarAttributes } from './type';\n\n// _showPoptip: 0-没有,1-添加,2-删除\n\ntype IParams = {\n timeout?: number; // 消失的timeout\n bufferV?: number; // 判定是否出现滚动条的buffer\n bufferH?: number; // 判定是否出现滚动条的buffer\n};\n\n@injectable()\nexport class ScrollBarPlugin implements IPlugin {\n name: 'scrollbar' = 'scrollbar';\n activeEvent: 'onRegister' = 'onRegister';\n pluginService: IPluginService;\n _uid: number = Generator.GenAutoIncrementId();\n key: string = this.name + this._uid;\n scrollContainer?: { g: IGroup; showH: boolean; showV: boolean };\n scrollContainerBounds: IAABBBounds;\n childrenBounds: IAABBBounds;\n\n static defaultParams: IParams = {\n timeout: 500\n };\n\n params: IParams;\n\n activate(context: IPluginService): void {\n this.pluginService = context;\n const { stage } = this.pluginService;\n\n this.childrenBounds = new AABBBounds();\n stage.addEventListener('wheel', this.scroll as any);\n this.params = ScrollBarPlugin.defaultParams;\n }\n scroll = (e: { deltaX: number; deltaY: number; target: IGraphic }) => {\n const graphic = e.target as any;\n const data = this.getScrollContainer(graphic);\n\n if (!data && !this.scrollContainer) {\n return;\n }\n\n if (!data && this.scrollContainer) {\n if (!this.scrollContainer.g.stage || this.scrollContainer.g.stage !== graphic.stage) {\n return;\n }\n const newScrollContainer = this.formatScrollContainer(this.scrollContainer.g);\n\n if (!newScrollContainer) {\n this.clearScrollbar(this.scrollContainer.g, 'all');\n // 删除老的scrollbar\n return;\n }\n if (this.scrollContainer.showH && !newScrollContainer.showH) {\n this.clearScrollbar(this.scrollContainer.g, 'horizontal');\n }\n\n if (this.scrollContainer.showV && !newScrollContainer.showV) {\n this.clearScrollbar(this.scrollContainer.g, 'vertical');\n }\n\n this.scrollContainer = newScrollContainer;\n } else if (data && this.scrollContainer && data.g !== this.scrollContainer.g) {\n this.clearScrollbar(this.scrollContainer.g, 'all');\n }\n\n this.scrollContainer = data ?? this.scrollContainer;\n\n const scrollContainer = data.g;\n const { width, height, scrollX = 0, scrollY = 0 } = scrollContainer.attribute;\n let newScrollX = scrollX;\n let newScrollY = scrollY;\n let { showH, showV } = data;\n this.scrollContainerBounds = new Bounds().set(\n 0,\n 0,\n scrollContainer.attribute.width,\n scrollContainer.attribute.height\n );\n if (showH && showH) {\n if (abs(e.deltaX) > abs(e.deltaY)) {\n showH = showH && true;\n showV = showV && false;\n } else {\n showH = showH && false;\n showV = showV && true;\n }\n }\n\n // 计算子元素的bounds\n const childrenBounds = this.childrenBounds;\n\n childrenBounds.clear();\n childrenBounds.set(0, 0, scrollContainer.AABBBounds.width(), scrollContainer.AABBBounds.height());\n\n const scrollWidth = childrenBounds.width();\n const scrollHeight = childrenBounds.height();\n\n if (showH) {\n newScrollX = Math.max(Math.min((e.deltaX ?? 0) - scrollX, scrollWidth - width), 0);\n } else {\n newScrollX = -scrollX;\n }\n\n if (showV) {\n newScrollY = Math.max(Math.min((e.deltaY ?? 0) - scrollY, scrollHeight - height), 0);\n } else {\n newScrollY = -scrollY;\n }\n\n childrenBounds.translate(-newScrollX, -newScrollY);\n\n this.addOrUpdateScroll(showH, showV, scrollContainer.parent, scrollContainer);\n scrollContainer.setAttributes({\n scrollX: -newScrollX,\n scrollY: -newScrollY\n });\n };\n\n handleScrollBarChange = (params: any) => {\n if (\n !this.scrollContainer ||\n !this.scrollContainerBounds ||\n !this.childrenBounds ||\n !params ||\n !params.target ||\n !params.detail ||\n !params.detail.value\n ) {\n return;\n }\n const scrollbar = params.target;\n const newRange = params.detail.value;\n\n if (scrollbar.attribute.direction === 'horizontal') {\n const scrollWidth = this.childrenBounds.width();\n\n this.scrollContainer.g.setAttributes({ scrollX: -newRange[0] * scrollWidth });\n } else {\n const scrollHeight = this.childrenBounds.height();\n\n this.scrollContainer.g.setAttributes({ scrollY: -newRange[0] * scrollHeight });\n }\n };\n\n initEventOfScrollbar(scrollContainer: IGroup, scrollbar: IGroup, isHorozntal?: boolean) {\n scrollContainer.addEventListener('pointerover', () => {\n scrollbar.setAttribute('visibleAll', true);\n });\n scrollContainer.addEventListener('pointermove', () => {\n scrollbar.setAttribute('visibleAll', true);\n });\n scrollContainer.addEventListener('pointerout', () => {\n scrollbar.setAttribute('visibleAll', false);\n });\n scrollbar.addEventListener('pointerover', () => {\n scrollbar.setAttribute('visibleAll', true);\n });\n scrollbar.addEventListener('pointerout', () => {\n scrollbar.setAttribute('visibleAll', true);\n });\n\n scrollbar.addEventListener('scrollUp', this.handleScrollBarChange);\n scrollbar.addEventListener(SCROLLBAR_EVENT, this.handleScrollBarChange);\n }\n\n addOrUpdateScroll(showH: boolean, showV: boolean, container: IGroup, scrollContainer: IGroup) {\n if (showH) {\n const { scrollBar: hScrollbar, isUpdate } = this.addOrUpdateHScroll(scrollContainer, container, true);\n\n if (!isUpdate) {\n this.initEventOfScrollbar(scrollContainer, hScrollbar, true);\n }\n } else {\n this.clearScrollbar(scrollContainer, 'horizontal');\n }\n if (showV) {\n const { scrollBar: vScrollbar, isUpdate } = this.addOrUpdateHScroll(scrollContainer, container, false);\n\n if (!isUpdate) {\n this.initEventOfScrollbar(scrollContainer, vScrollbar, false);\n }\n } else {\n this.clearScrollbar(scrollContainer, 'vertical');\n }\n }\n\n getDirection(isHorozntal?: boolean) {\n return isHorozntal ? 'horizontal' : 'vertical';\n }\n\n addOrUpdateHScroll(scrollContainer: IGroup, container: IGroup, isHorozntal?: boolean) {\n const direction = this.getDirection(isHorozntal);\n const name = `${scrollContainer.name ?? scrollContainer._uid}_${this.getDirection(isHorozntal)}_${this.name}`;\n const scrollbars = container.children.filter((g: ScrollBar) => g.name === name);\n let isUpdate = true;\n let scrollBar = scrollbars[0] as ScrollBar;\n\n const { y = 0, dy = 0, x = 0, dx = 0, height, width, zIndex = 0 } = this.scrollContainer.g.attribute;\n const attrs: Partial<ScrollBarAttributes> = {\n x: 0,\n y: 0,\n direction,\n zIndex: zIndex + 1,\n visibleAll: true,\n padding: [2, 0],\n railStyle: {\n fill: 'rgba(0, 0, 0, .1)'\n },\n range: [0, 0.05]\n };\n\n if (isHorozntal) {\n attrs.width = this.scrollContainerBounds.width();\n attrs.height = 12;\n } else {\n attrs.height = this.scrollContainerBounds.height();\n attrs.width = 12;\n }\n\n if (!scrollBar) {\n isUpdate = false;\n\n scrollBar = new ScrollBar(attrs as ScrollBarAttributes);\n scrollBar.name = name;\n container.add(scrollBar);\n (scrollBar as any).isScrollBar = true;\n } else if (scrollbars.length > 1) {\n scrollbars.forEach((child: IGraphic, index: number) => {\n if (index) {\n child.parent?.removeChild(child);\n }\n });\n }\n const childrenBounds = this.childrenBounds;\n\n if (isHorozntal) {\n const ratio = Math.min(this.scrollContainerBounds.width() / childrenBounds.width(), 1);\n const start = Math.max(Math.min(this.childrenBounds.x1 / this.childrenBounds.width(), 0), ratio - 1);\n attrs.x = x + dx;\n attrs.y = y + dy + height - this.scrollContainerBounds.height();\n attrs.range = [-start, -start + ratio];\n } else {\n const ratio = Math.min(this.scrollContainerBounds.height() / childrenBounds.height(), 1);\n const start = Math.max(Math.min(this.childrenBounds.y1 / this.childrenBounds.height(), 0), ratio - 1);\n attrs.x = x + dx + width - this.scrollContainerBounds.width();\n attrs.y = y + dy;\n attrs.range = [-start, -start + ratio];\n }\n\n scrollBar.setAttributes(attrs);\n return {\n scrollBar,\n isUpdate\n };\n }\n\n clearScrollbar(scrollContainer: IGroup, type: 'horizontal' | 'vertical' | 'all') {\n if (!scrollContainer.parent) {\n return;\n }\n const scrollbarBars = scrollContainer.parent.children.filter((child: IGroup) => {\n return (child as any).isScrollBar && (type === 'all' || (child.attribute as any).direction === type);\n });\n\n scrollbarBars.forEach((child: IGraphic) => {\n child.parent.removeChild(child);\n });\n }\n\n formatScrollContainer(g: IGraphic) {\n if (!g || g.type !== 'group' || !g.attribute) {\n return null;\n }\n\n const { overflow, width, height } = (g as IGroup).attribute;\n\n if (!overflow || overflow === 'hidden') {\n return null;\n }\n\n let showH = false;\n let showV = false;\n\n if (overflow === 'scroll') {\n showH = true;\n showV = true;\n } else {\n showH = overflow === 'scroll-x';\n showV = !showH;\n }\n\n if (!g.AABBBounds.empty()) {\n if (showH) {\n showH = width < g.AABBBounds.width();\n }\n\n if (showV) {\n showV = height < g.AABBBounds.height();\n }\n }\n\n return showH || showV ? { g: g as IGroup, showH, showV } : null;\n }\n\n // 获取响应滚动的元素\n getScrollContainer(graphic: IGraphic): { g: IGroup; showH: boolean; showV: boolean } | null {\n let g = graphic;\n while (g) {\n const res = this.formatScrollContainer(g);\n\n if (res) {\n return res;\n }\n g = g.parent;\n }\n return null;\n }\n\n deactivate(context: IPluginService): void {\n const { stage } = this.pluginService;\n stage.removeEventListener('wheel', this.scroll as any);\n }\n}\n"]}
|
|
1
|
+
{"version":3,"sources":["../src/scrollbar/scrollbar-plugin.ts"],"names":[],"mappings":"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","file":"scrollbar-plugin.js","sourcesContent":["import type { IGraphic, IGroup, IPlugin, IPluginService } from '@visactor/vrender-core';\nimport { Generator, injectable } from '@visactor/vrender-core';\nimport { ScrollBar } from './scrollbar';\nimport type { IAABBBounds } from '@visactor/vutils';\nimport { AABBBounds, abs, Bounds } from '@visactor/vutils';\nimport { SCROLLBAR_EVENT } from '../constant';\nimport type { ScrollBarAttributes } from './type';\n\n// _showPoptip: 0-没有,1-添加,2-删除\n\ntype IParams = {\n timeout?: number; // 消失的timeout\n bufferV?: number; // 判定是否出现滚动条的buffer\n bufferH?: number; // 判定是否出现滚动条的buffer\n};\n\n@injectable()\nexport class ScrollBarPlugin implements IPlugin {\n name: 'scrollbar' = 'scrollbar';\n activeEvent: 'onRegister' = 'onRegister';\n pluginService: IPluginService;\n _uid: number = Generator.GenAutoIncrementId();\n key: string = this.name + this._uid;\n scrollContainer?: { g: IGroup; showH: boolean; showV: boolean };\n scrollContainerBounds: IAABBBounds;\n childrenBounds: IAABBBounds;\n\n static defaultParams: IParams = {\n timeout: 500\n };\n\n params: IParams;\n\n activate(context: IPluginService): void {\n this.pluginService = context;\n const { stage } = this.pluginService;\n\n this.childrenBounds = new AABBBounds();\n stage.addEventListener('wheel', this.scroll as any);\n this.params = ScrollBarPlugin.defaultParams;\n }\n scroll = (e: { deltaX: number; deltaY: number; target: IGraphic }) => {\n // 计算子元素的bounds\n const graphic = e.target as any;\n // childrenBounds.set(0, 0, scrollContainer.AABBBounds.width(), scrollContainer.AABBBounds.height());\n\n const data = this.getScrollContainer(graphic);\n\n if (!data && !this.scrollContainer) {\n return;\n }\n\n if (!data && this.scrollContainer) {\n if (!this.scrollContainer.g.stage || this.scrollContainer.g.stage !== graphic.stage) {\n return;\n }\n const newScrollContainer = this.formatScrollContainer(this.scrollContainer.g);\n\n if (!newScrollContainer) {\n this.clearScrollbar(this.scrollContainer.g, 'all');\n // 删除老的scrollbar\n return;\n }\n if (this.scrollContainer.showH && !newScrollContainer.showH) {\n this.clearScrollbar(this.scrollContainer.g, 'horizontal');\n }\n\n if (this.scrollContainer.showV && !newScrollContainer.showV) {\n this.clearScrollbar(this.scrollContainer.g, 'vertical');\n }\n\n this.scrollContainer = newScrollContainer;\n } else if (data && this.scrollContainer && data.g !== this.scrollContainer.g) {\n this.clearScrollbar(this.scrollContainer.g, 'all');\n }\n\n this.scrollContainer = data ?? this.scrollContainer;\n if (!data) {\n return;\n }\n const scrollContainer = data.g;\n if (!scrollContainer) {\n return;\n }\n const { width, height, scrollX = 0, scrollY = 0 } = scrollContainer.attribute;\n let newScrollX = scrollX;\n let newScrollY = scrollY;\n let { showH, showV } = data;\n this.scrollContainerBounds = new Bounds().set(\n 0,\n 0,\n scrollContainer.attribute.width,\n scrollContainer.attribute.height\n );\n if (showH && showH) {\n if (abs(e.deltaX) > abs(e.deltaY)) {\n showH = showH && true;\n showV = showV && false;\n } else {\n showH = showH && false;\n showV = showV && true;\n }\n }\n\n const scrollWidth = this.childrenBounds.width();\n const scrollHeight = this.childrenBounds.height();\n\n if (showH) {\n newScrollX = scrollX - (e.deltaX ?? 0);\n if (newScrollX > 0) {\n newScrollX = 0;\n } else if (newScrollX < width - scrollWidth) {\n newScrollX = width - scrollWidth;\n }\n }\n\n if (showV) {\n newScrollY = scrollY - (e.deltaY ?? 0);\n if (newScrollY > 0) {\n newScrollY = 0;\n } else if (newScrollY < height - scrollHeight) {\n newScrollY = height - scrollHeight;\n }\n }\n\n scrollContainer.setAttributes({\n scrollX: newScrollX,\n scrollY: newScrollY\n });\n this.addOrUpdateScroll(showH, showV, scrollContainer.parent, scrollContainer);\n };\n\n handleScrollBarChange = (params: any) => {\n if (\n !this.scrollContainer ||\n !this.scrollContainerBounds ||\n !this.childrenBounds ||\n !params ||\n !params.target ||\n !params.detail ||\n !params.detail.value\n ) {\n return;\n }\n const scrollbar = params.target;\n const newRange = params.detail.value;\n\n if (scrollbar.attribute.direction === 'horizontal') {\n const scrollWidth = this.childrenBounds.width();\n\n this.scrollContainer.g.setAttributes({ scrollX: -newRange[0] * scrollWidth });\n } else {\n const scrollHeight = this.childrenBounds.height();\n\n this.scrollContainer.g.setAttributes({ scrollY: -newRange[0] * scrollHeight });\n }\n };\n\n initEventOfScrollbar(scrollContainer: IGroup, scrollbar: IGroup, isHorozntal?: boolean) {\n scrollContainer.addEventListener('pointerover', () => {\n scrollbar.setAttribute('visibleAll', true);\n });\n scrollContainer.addEventListener('pointermove', () => {\n scrollbar.setAttribute('visibleAll', true);\n });\n scrollContainer.addEventListener('pointerout', () => {\n scrollbar.setAttribute('visibleAll', false);\n });\n scrollbar.addEventListener('pointerover', () => {\n scrollbar.setAttribute('visibleAll', true);\n });\n scrollbar.addEventListener('pointerout', () => {\n scrollbar.setAttribute('visibleAll', true);\n });\n\n scrollbar.addEventListener('scrollUp', this.handleScrollBarChange);\n scrollbar.addEventListener(SCROLLBAR_EVENT, this.handleScrollBarChange);\n }\n\n addOrUpdateScroll(showH: boolean, showV: boolean, container: IGroup, scrollContainer: IGroup) {\n if (showH) {\n const { scrollBar: hScrollbar, isUpdate } = this.addOrUpdateHScroll(scrollContainer, container, true);\n\n if (!isUpdate) {\n this.initEventOfScrollbar(scrollContainer, hScrollbar, true);\n }\n } else {\n this.clearScrollbar(scrollContainer, 'horizontal');\n }\n if (showV) {\n const { scrollBar: vScrollbar, isUpdate } = this.addOrUpdateHScroll(scrollContainer, container, false);\n\n if (!isUpdate) {\n this.initEventOfScrollbar(scrollContainer, vScrollbar, false);\n }\n } else {\n this.clearScrollbar(scrollContainer, 'vertical');\n }\n }\n\n getDirection(isHorozntal?: boolean) {\n return isHorozntal ? 'horizontal' : 'vertical';\n }\n\n addOrUpdateHScroll(scrollContainer: IGroup, container: IGroup, isHorozntal?: boolean) {\n const direction = this.getDirection(isHorozntal);\n const name = `${scrollContainer.name ?? scrollContainer._uid}_${this.getDirection(isHorozntal)}_${this.name}`;\n const scrollbars = container.children.filter((g: ScrollBar) => g.name === name);\n let isUpdate = true;\n let scrollBar = scrollbars[0] as ScrollBar;\n\n const { y = 0, dy = 0, x = 0, dx = 0, height, width, zIndex = 0 } = this.scrollContainer.g.attribute;\n const attrs: Partial<ScrollBarAttributes> = {\n x: 0,\n y: 0,\n direction,\n zIndex: zIndex + 1,\n visibleAll: true,\n padding: [2, 0],\n railStyle: {\n fill: 'rgba(0, 0, 0, .1)'\n },\n range: [0, 0.05]\n };\n\n if (isHorozntal) {\n attrs.width = this.scrollContainerBounds.width();\n attrs.height = 12;\n } else {\n attrs.height = this.scrollContainerBounds.height();\n attrs.width = 12;\n }\n\n if (!scrollBar) {\n isUpdate = false;\n\n scrollBar = new ScrollBar(attrs as ScrollBarAttributes);\n scrollBar.name = name;\n container.add(scrollBar);\n (scrollBar as any).isScrollBar = true;\n } else if (scrollbars.length > 1) {\n scrollbars.forEach((child: IGraphic, index: number) => {\n if (index) {\n child.parent?.removeChild(child);\n }\n });\n }\n const childrenBounds = this.childrenBounds;\n\n const { scrollX, scrollY } = scrollContainer.attribute;\n if (isHorozntal) {\n const ratio = Math.min(this.scrollContainerBounds.width() / childrenBounds.width(), 1);\n const start = Math.max(Math.min(scrollX / this.childrenBounds.width(), 0), ratio - 1);\n attrs.x = x + dx;\n attrs.y = y + dy + height - (attrs.height ?? 0);\n attrs.range = [-start, -start + ratio];\n } else {\n const ratio = Math.min(this.scrollContainerBounds.height() / childrenBounds.height(), 1);\n const start = Math.max(Math.min(scrollY / this.childrenBounds.height(), 0), ratio - 1);\n attrs.x = x + dx + width - this.scrollContainerBounds.width();\n attrs.y = y + dy;\n attrs.range = [-start, -start + ratio];\n }\n\n scrollBar.setAttributes(attrs);\n return {\n scrollBar,\n isUpdate\n };\n }\n\n clearScrollbar(scrollContainer: IGroup, type: 'horizontal' | 'vertical' | 'all') {\n if (!scrollContainer.parent) {\n return;\n }\n const scrollbarBars = scrollContainer.parent.children.filter((child: IGroup) => {\n return (child as any).isScrollBar && (type === 'all' || (child.attribute as any).direction === type);\n });\n\n scrollbarBars.forEach((child: IGraphic) => {\n child.parent.removeChild(child);\n });\n }\n\n formatScrollContainer(g: IGraphic) {\n if (!g || g.type !== 'group' || !g.attribute) {\n return null;\n }\n\n const { overflow, width, height } = (g as IGroup).attribute;\n\n if (!overflow || overflow === 'hidden') {\n return null;\n }\n\n let showH = false;\n let showV = false;\n\n if (overflow === 'scroll') {\n showH = true;\n showV = true;\n } else {\n showH = overflow === 'scroll-x';\n showV = !showH;\n }\n\n const childrenBounds = this.childrenBounds;\n\n childrenBounds.clear();\n g.forEachChildren((g: IGraphic) => {\n childrenBounds.union(g.AABBBounds);\n });\n\n if (!g.AABBBounds.empty()) {\n if (showH) {\n showH = width < childrenBounds.width();\n }\n\n if (showV) {\n showV = height < childrenBounds.height();\n }\n }\n\n return showH || showV ? { g: g as IGroup, showH, showV } : null;\n }\n\n // 获取响应滚动的元素\n getScrollContainer(graphic: IGraphic): { g: IGroup; showH: boolean; showV: boolean } | null {\n let g = graphic;\n while (g) {\n const res = this.formatScrollContainer(g);\n\n if (res) {\n return res;\n }\n g = g.parent;\n }\n return null;\n }\n\n deactivate(context: IPluginService): void {\n const { stage } = this.pluginService;\n stage.removeEventListener('wheel', this.scroll as any);\n }\n}\n"]}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@visactor/vrender-components",
|
|
3
|
-
"version": "0.21.1
|
|
3
|
+
"version": "0.21.1",
|
|
4
4
|
"description": "components library for dp visualization",
|
|
5
5
|
"sideEffects": false,
|
|
6
6
|
"main": "cjs/index.js",
|
|
@@ -12,14 +12,14 @@
|
|
|
12
12
|
"dist"
|
|
13
13
|
],
|
|
14
14
|
"dependencies": {
|
|
15
|
-
"@visactor/vutils": "~0.19.
|
|
16
|
-
"@visactor/vscale": "~0.19.
|
|
17
|
-
"@visactor/vrender-core": "0.21.1
|
|
18
|
-
"@visactor/vrender-kits": "0.21.1
|
|
15
|
+
"@visactor/vutils": "~0.19.2",
|
|
16
|
+
"@visactor/vscale": "~0.19.2",
|
|
17
|
+
"@visactor/vrender-core": "0.21.1",
|
|
18
|
+
"@visactor/vrender-kits": "0.21.1"
|
|
19
19
|
},
|
|
20
20
|
"devDependencies": {
|
|
21
21
|
"@rushstack/eslint-patch": "~1.1.4",
|
|
22
|
-
"@visactor/vscale": "~0.19.
|
|
22
|
+
"@visactor/vscale": "~0.19.2",
|
|
23
23
|
"@types/jest": "^26.0.0",
|
|
24
24
|
"jest": "^26.0.0",
|
|
25
25
|
"jest-electron": "^0.1.12",
|
|
@@ -30,8 +30,8 @@
|
|
|
30
30
|
"typescript": "4.9.5",
|
|
31
31
|
"cross-env": "^7.0.3",
|
|
32
32
|
"@internal/bundler": "0.0.1",
|
|
33
|
-
"@internal/
|
|
34
|
-
"@internal/
|
|
33
|
+
"@internal/eslint-config": "0.0.1",
|
|
34
|
+
"@internal/ts-config": "0.0.1"
|
|
35
35
|
},
|
|
36
36
|
"keywords": [
|
|
37
37
|
"VisActor",
|