@visactor/vrender-components 0.20.6-alpha.0 → 0.20.6-alpha.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/axis/grid/base.d.ts +1 -0
- package/cjs/axis/grid/base.js +9 -3
- package/cjs/axis/grid/base.js.map +1 -1
- package/cjs/axis/grid/circle.d.ts +1 -0
- package/cjs/axis/grid/circle.js +4 -0
- package/cjs/axis/grid/circle.js.map +1 -1
- package/cjs/axis/grid/line.d.ts +2 -0
- package/cjs/axis/grid/line.js +9 -5
- package/cjs/axis/grid/line.js.map +1 -1
- package/cjs/axis/overlap/auto-hide.js +7 -13
- package/cjs/axis/overlap/auto-hide.js.map +1 -1
- package/cjs/axis/overlap/util.js +11 -10
- package/cjs/axis/overlap/util.js.map +1 -1
- package/cjs/axis/util.js +2 -1
- package/cjs/brush/type.js +1 -2
- package/cjs/index.d.ts +1 -1
- package/cjs/index.js +1 -1
- package/cjs/index.js.map +1 -1
- package/cjs/label/arc.js +1 -1
- package/cjs/label/arc.js.map +1 -1
- package/cjs/label/base.js +18 -29
- package/cjs/label/base.js.map +1 -1
- package/cjs/legend/discrete/discrete.js +5 -9
- package/cjs/legend/discrete/discrete.js.map +1 -1
- package/cjs/legend/discrete/type.d.ts +0 -1
- package/cjs/legend/discrete/type.js.map +1 -1
- package/cjs/scrollbar/scrollbar.d.ts +1 -10
- package/cjs/scrollbar/scrollbar.js +6 -6
- package/cjs/scrollbar/scrollbar.js.map +1 -1
- package/dist/index.es.js +180 -125
- package/es/axis/grid/base.d.ts +1 -0
- package/es/axis/grid/base.js +8 -4
- package/es/axis/grid/base.js.map +1 -1
- package/es/axis/grid/circle.d.ts +1 -0
- package/es/axis/grid/circle.js +4 -0
- package/es/axis/grid/circle.js.map +1 -1
- package/es/axis/grid/line.d.ts +2 -0
- package/es/axis/grid/line.js +9 -5
- package/es/axis/grid/line.js.map +1 -1
- package/es/axis/overlap/auto-hide.js +7 -12
- package/es/axis/overlap/auto-hide.js.map +1 -1
- package/es/axis/overlap/util.js +10 -10
- package/es/axis/overlap/util.js.map +1 -1
- package/es/axis/util.js +2 -1
- package/es/brush/type.js +1 -2
- package/es/index.d.ts +1 -1
- package/es/index.js +1 -1
- package/es/index.js.map +1 -1
- package/es/label/arc.js +1 -1
- package/es/label/arc.js.map +1 -1
- package/es/label/base.js +18 -29
- package/es/label/base.js.map +1 -1
- package/es/legend/discrete/discrete.js +5 -9
- package/es/legend/discrete/discrete.js.map +1 -1
- package/es/legend/discrete/type.d.ts +0 -1
- package/es/legend/discrete/type.js.map +1 -1
- package/es/scrollbar/scrollbar.d.ts +1 -10
- package/es/scrollbar/scrollbar.js +6 -6
- package/es/scrollbar/scrollbar.js.map +1 -1
- package/package.json +6 -6
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../src/scrollbar/scrollbar.ts"],"names":[],"mappings":"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","file":"scrollbar.js","sourcesContent":["/**\n * @description 滚动条组件\n */\nimport type { IRectGraphicAttribute, FederatedPointerEvent, IGroup, IRect } from '@visactor/vrender-core';\n// eslint-disable-next-line no-duplicate-imports\nimport { vglobal } from '@visactor/vrender-core';\nimport { merge, normalizePadding, clamp, clampRange, debounce, throttle } from '@visactor/vutils';\nimport { AbstractComponent } from '../core/base';\n\nimport type { ScrollBarAttributes } from './type';\nimport type { ComponentOptions } from '../interface';\nimport { loadScrollbarComponent } from './register';\nimport { SCROLLBAR_EVENT } from '../constant';\n\ntype ComponentBounds = {\n x1: number;\n y1: number;\n x2: number;\n y2: number;\n width: number;\n height: number;\n};\n\nconst delayMap = {\n debounce: debounce,\n throttle: throttle\n};\n\nloadScrollbarComponent();\n\nexport class ScrollBar extends AbstractComponent<Required<ScrollBarAttributes>> {\n name = 'scrollbar';\n\n static defaultAttributes = {\n direction: 'horizontal',\n round: true,\n sliderSize: 20,\n sliderStyle: {\n fill: 'rgba(0, 0, 0, .5)'\n },\n railStyle: {\n fill: 'rgba(0, 0, 0, .0)'\n },\n padding: 2,\n scrollRange: [0, 1],\n delayType: 'throttle',\n delayTime: 0,\n realTime: true\n };\n\n private _container!: IGroup;\n // 滚动条滑块\n private _slider!: IRect;\n // 滚动条滑轨\n private _rail!: IRect;\n // 滑块可渲染的区域包围盒\n private _sliderRenderBounds!: ComponentBounds | null;\n // 滑块滑动的范围\n private _sliderLimitRange!: [number, number] | null;\n // 保留滑块上一次的位置\n private _prePos!: number;\n // TODO: 临时方案\n private _viewPosition!: { x: number; y: number };\n private _sliderSize!: number;\n\n constructor(attributes: ScrollBarAttributes, options?: ComponentOptions) {\n super(options?.skipDefault ? attributes : merge({}, ScrollBar.defaultAttributes, attributes));\n }\n\n setScrollRange(range: [number, number], render = true) {\n const {\n direction = 'horizontal',\n limitRange = [0, 1],\n range: preRange,\n realTime = true\n } = this.attribute as ScrollBarAttributes;\n\n const currScrollRange = clampRange(range, limitRange[0], limitRange[1]);\n if (render) {\n // 更新图形\n const sliderPos = this._getSliderPos(currScrollRange);\n if (this._slider) {\n const sliderSize = sliderPos[1] - sliderPos[0];\n this._sliderSize = sliderSize;\n\n if (direction === 'horizontal') {\n this._slider.setAttributes(\n {\n x: sliderPos[0],\n width: sliderSize\n },\n true\n );\n } else {\n this._slider.setAttributes(\n {\n y: sliderPos[0],\n height: sliderSize\n },\n true\n );\n }\n\n if (this.stage && !this.stage.autoRender) {\n this.stage.renderNextFrame();\n }\n }\n }\n (this.attribute as ScrollBarAttributes).range = currScrollRange;\n // 发射 change 事件\n if (realTime) {\n this._dispatchEvent(SCROLLBAR_EVENT, {\n pre: preRange,\n value: currScrollRange\n });\n }\n }\n\n getScrollRange(): [number, number] {\n return (this.attribute as ScrollBarAttributes).range;\n }\n\n // public setLocation(point: PointLocationCfg) {\n // this.translateTo(point.x, point.y);\n // }\n\n // 绑定事件\n protected bindEvents(): void {\n if (this.attribute.disableTriggerEvent) {\n return;\n }\n const { delayType = 'throttle', delayTime = 0 } = this.attribute as ScrollBarAttributes;\n // TODO: wheel 事件支持\n if (this._rail) {\n this._rail.addEventListener(\n 'pointerdown',\n delayMap[delayType](this._onRailPointerDown, delayTime) as EventListener\n );\n }\n if (this._slider) {\n this._slider.addEventListener('pointerdown', this._onSliderPointerDown as EventListener);\n }\n }\n\n protected render() {\n this._reset();\n const {\n direction = 'horizontal',\n width,\n height,\n range,\n limitRange = [0, 1],\n // sliderSize = 20,\n // scrollValue = 0,\n // scrollRange = [0, 1],\n railStyle,\n sliderStyle,\n padding = 2\n } = this.attribute as ScrollBarAttributes;\n\n const group = this.createOrUpdateChild('scrollbar-container', {}, 'group') as IGroup;\n // 绘制轨道\n\n const rail = group.createOrUpdateChild(\n 'scrollbar-rail',\n {\n x: 0,\n y: 0,\n width,\n height,\n ...railStyle\n },\n 'rect'\n ) as IRect;\n this._rail = rail;\n\n // 滑块\n const sliderRenderBounds = this.getSliderRenderBounds();\n const sliderPos = this._getSliderPos(clampRange(range, limitRange[0], limitRange[1]));\n const sliderSize = sliderPos[1] - sliderPos[0];\n this._sliderSize = sliderSize;\n // const sliderRangePos = this._getScrollRange();\n\n let sliderAttribute: IRectGraphicAttribute;\n if (direction === 'horizontal') {\n sliderAttribute = {\n x: sliderPos[0],\n y: sliderRenderBounds.y1,\n width: sliderSize,\n height: sliderRenderBounds.height\n };\n } else {\n sliderAttribute = {\n x: sliderRenderBounds.x1,\n y: sliderPos[0],\n width: sliderRenderBounds.width,\n height: sliderSize\n };\n }\n\n const slider = group.createOrUpdateChild(\n 'slider',\n {\n ...sliderAttribute,\n cornerRadius: this._getDefaultSliderCornerRadius(),\n ...sliderStyle,\n boundsPadding: normalizePadding(padding),\n pickMode: 'imprecise'\n },\n 'rect'\n ) as IRect;\n this._slider = slider;\n this._container = group;\n\n const containerAABBBounds = this._container.AABBBounds;\n this._viewPosition = {\n x: containerAABBBounds.x1,\n y: containerAABBBounds.y1\n };\n }\n\n // 获取滑块渲染的包围盒区域\n getSliderRenderBounds() {\n if (this._sliderRenderBounds) {\n return this._sliderRenderBounds;\n }\n const { width, height, padding = 2 } = this.attribute as ScrollBarAttributes;\n const [top, right, bottom, left] = normalizePadding(padding);\n const renderBounds = {\n x1: left,\n y1: top,\n x2: width - right,\n y2: height - bottom,\n width: Math.max(0, width - (left + right)),\n height: Math.max(0, height - (top + bottom))\n };\n this._sliderRenderBounds = renderBounds;\n return renderBounds;\n }\n\n // 获取默认的滑块圆角\n private _getDefaultSliderCornerRadius() {\n const { direction, round } = this.attribute as ScrollBarAttributes;\n\n if (round) {\n const { width, height } = this.getSliderRenderBounds();\n return direction === 'horizontal' ? height : width;\n }\n\n return 0;\n }\n\n // 计算滑块在轨道的位置\n private _getSliderPos(range: [number, number]) {\n const { direction } = this.attribute as ScrollBarAttributes;\n const { width, height, x1, y1 } = this.getSliderRenderBounds();\n\n if (direction === 'horizontal') {\n return [width * range[0] + x1, width * range[1] + x1];\n }\n return [height * range[0] + y1, height * range[1] + y1];\n }\n\n private _getScrollRange() {\n if (this._sliderLimitRange) {\n return this._sliderLimitRange;\n }\n const { limitRange = [0, 1], direction } = this.attribute as ScrollBarAttributes;\n const [min, max] = clampRange(limitRange, 0, 1);\n const { width, height, x1, y1 } = this.getSliderRenderBounds();\n const sliderSize = this._sliderSize;\n\n return direction === 'horizontal'\n ? clampRange([x1 + min * width, x1 + max * width], x1, width - sliderSize)\n : clampRange([y1 + min * height, y1 + max * height], y1, height - sliderSize);\n }\n\n private _onRailPointerDown = (e: FederatedPointerEvent) => {\n // 将事件坐标转换为实际的滑块位置\n // TODO: 这里有问题,应该拿 viewX viewY,同时 graphic 要提供接口获取它的 相对 view 的坐标\n const { viewX, viewY } = e;\n const { direction, width, height, range } = this.attribute as ScrollBarAttributes;\n const sliderSize = this._sliderSize;\n const [min, max] = this._getScrollRange();\n let currentScrollValue;\n if (direction === 'vertical') {\n const relativeY = viewY - this._viewPosition.y;\n const currentYPos = clamp(relativeY - sliderSize / 2, min, max);\n currentScrollValue = relativeY / height;\n this._slider.setAttribute('y', currentYPos, true);\n } else {\n const relativeX = viewX - this._viewPosition.x;\n const currentXPos = clamp(relativeX - sliderSize / 2, min, max);\n currentScrollValue = relativeX / width;\n this._slider.setAttribute('x', currentXPos, true);\n }\n\n this.setScrollRange(\n [currentScrollValue - (range[1] - range[0]) / 2, currentScrollValue + (range[1] - range[0]) / 2],\n false\n );\n\n if (this.stage && !this.stage.autoRender) {\n this.stage.renderNextFrame();\n }\n };\n\n private _onSliderPointerDown = (e: FederatedPointerEvent) => {\n const { stopSliderDownPropagation = true } = this.attribute as ScrollBarAttributes;\n if (stopSliderDownPropagation) {\n e.stopPropagation();\n }\n const { direction } = this.attribute as ScrollBarAttributes;\n const { x, y } = this.stage.eventPointTransform(e);\n this._prePos = direction === 'horizontal' ? x : y;\n this._dispatchEvent('scrollDown', {\n pos: this._prePos,\n event: e\n });\n if (vglobal.env === 'browser') {\n vglobal.addEventListener('pointermove', this._onSliderPointerMoveWithDelay, { capture: true });\n vglobal.addEventListener('pointerup', this._onSliderPointerUp);\n } else {\n this.stage.addEventListener('pointermove', this._onSliderPointerMoveWithDelay, { capture: true });\n this.stage.addEventListener('pointerup', this._onSliderPointerUp);\n this.stage.addEventListener('pointerupoutside', this._onSliderPointerUp);\n }\n };\n\n private _computeScrollValue = (e: any) => {\n const { direction } = this.attribute as ScrollBarAttributes;\n const { x, y } = this.stage.eventPointTransform(e);\n\n let currentScrollValue;\n let currentPos;\n let delta = 0;\n\n const { width, height } = this.getSliderRenderBounds();\n if (direction === 'vertical') {\n currentPos = y;\n delta = currentPos - this._prePos;\n currentScrollValue = delta / height;\n } else {\n currentPos = x;\n delta = currentPos - this._prePos;\n currentScrollValue = delta / width;\n }\n return [currentPos, currentScrollValue];\n };\n\n private _onSliderPointerMove = (e: any) => {\n const { stopSliderMovePropagation = true } = this.attribute as ScrollBarAttributes;\n if (stopSliderMovePropagation) {\n e.stopPropagation();\n }\n const preScrollRange = this.getScrollRange();\n const [currentPos, currentScrollValue] = this._computeScrollValue(e);\n this.setScrollRange([preScrollRange[0] + currentScrollValue, preScrollRange[1] + currentScrollValue], true);\n this._prePos = currentPos;\n };\n\n private _onSliderPointerMoveWithDelay =\n this.attribute.delayTime === 0\n ? this._onSliderPointerMove\n : delayMap[this.attribute.delayType](this._onSliderPointerMove, this.attribute.delayTime);\n\n private _onSliderPointerUp = (e: any) => {\n e.preventDefault();\n const { realTime = true, range: preRange, limitRange = [0, 1] } = this.attribute as ScrollBarAttributes;\n // 发射 change 事件\n const preScrollRange = this.getScrollRange();\n const [currentPos, currentScrollValue] = this._computeScrollValue(e);\n const range: [number, number] = [preScrollRange[0] + currentScrollValue, preScrollRange[1] + currentScrollValue];\n\n this._dispatchEvent('scrollUp', {\n pre: preRange,\n value: clampRange(range, limitRange[0], limitRange[1])\n });\n if (vglobal.env === 'browser') {\n vglobal.removeEventListener('pointermove', this._onSliderPointerMoveWithDelay, { capture: true });\n vglobal.removeEventListener('pointerup', this._onSliderPointerUp);\n } else {\n this.stage.removeEventListener('pointermove', this._onSliderPointerMoveWithDelay, { capture: true });\n this.stage.removeEventListener('pointerup', this._onSliderPointerUp);\n this.stage.removeEventListener('pointerupoutside', this._onSliderPointerUp);\n }\n };\n\n private _reset() {\n this._sliderRenderBounds = null;\n this._sliderLimitRange = null;\n }\n}\n"]}
|
|
1
|
+
{"version":3,"sources":["../src/scrollbar/scrollbar.ts"],"names":[],"mappings":"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","file":"scrollbar.js","sourcesContent":["/**\n * @description 滚动条组件\n */\nimport type { IRectGraphicAttribute, FederatedPointerEvent, IGroup, IRect } from '@visactor/vrender-core';\n// eslint-disable-next-line no-duplicate-imports\nimport { vglobal } from '@visactor/vrender-core';\nimport { merge, normalizePadding, clamp, clampRange, debounce, throttle } from '@visactor/vutils';\nimport { AbstractComponent } from '../core/base';\n\nimport type { ScrollBarAttributes } from './type';\nimport type { ComponentOptions } from '../interface';\nimport { loadScrollbarComponent } from './register';\nimport { SCROLLBAR_EVENT } from '../constant';\n\ntype ComponentBounds = {\n x1: number;\n y1: number;\n x2: number;\n y2: number;\n width: number;\n height: number;\n};\n\nconst delayMap = {\n debounce: debounce,\n throttle: throttle\n};\n\nloadScrollbarComponent();\n\nexport class ScrollBar extends AbstractComponent<Required<ScrollBarAttributes>> {\n name = 'scrollbar';\n\n static defaultAttributes = {\n direction: 'horizontal',\n round: true,\n sliderSize: 20,\n sliderStyle: {\n fill: 'rgba(0, 0, 0, .5)'\n },\n railStyle: {\n fill: 'rgba(0, 0, 0, .0)'\n },\n padding: 2,\n scrollRange: [0, 1],\n delayType: 'throttle',\n delayTime: 0,\n realTime: true\n };\n\n private _container!: IGroup;\n // 滚动条滑块\n private _slider!: IRect;\n // 滚动条滑轨\n private _rail!: IRect;\n // 滑块可渲染的区域包围盒\n private _sliderRenderBounds!: ComponentBounds | null;\n // 滑块滑动的范围\n private _sliderLimitRange!: [number, number] | null;\n // 保留滑块上一次的位置\n private _prePos!: number;\n // TODO: 临时方案\n private _viewPosition!: { x: number; y: number };\n private _sliderSize!: number;\n\n constructor(attributes: ScrollBarAttributes, options?: ComponentOptions) {\n super(options?.skipDefault ? attributes : merge({}, ScrollBar.defaultAttributes, attributes));\n }\n\n setScrollRange(range: [number, number], render = true) {\n const {\n direction = 'horizontal',\n limitRange = [0, 1],\n range: preRange,\n realTime = true\n } = this.attribute as ScrollBarAttributes;\n\n const currScrollRange = clampRange(range, limitRange[0], limitRange[1]);\n if (render) {\n // 更新图形\n const sliderPos = this._getSliderPos(currScrollRange);\n if (this._slider) {\n const sliderSize = sliderPos[1] - sliderPos[0];\n this._sliderSize = sliderSize;\n\n if (direction === 'horizontal') {\n this._slider.setAttributes(\n {\n x: sliderPos[0],\n width: sliderSize\n },\n true\n );\n } else {\n this._slider.setAttributes(\n {\n y: sliderPos[0],\n height: sliderSize\n },\n true\n );\n }\n\n if (this.stage && !this.stage.autoRender) {\n this.stage.renderNextFrame();\n }\n }\n }\n (this.attribute as ScrollBarAttributes).range = currScrollRange;\n // 发射 change 事件\n if (realTime) {\n this._dispatchEvent(SCROLLBAR_EVENT, {\n pre: preRange,\n value: currScrollRange\n });\n }\n }\n\n getScrollRange(): [number, number] {\n return (this.attribute as ScrollBarAttributes).range;\n }\n\n // public setLocation(point: PointLocationCfg) {\n // this.translateTo(point.x, point.y);\n // }\n\n // 绑定事件\n protected bindEvents(): void {\n if (this.attribute.disableTriggerEvent) {\n return;\n }\n const { delayType = 'throttle', delayTime = 0 } = this.attribute as ScrollBarAttributes;\n // TODO: wheel 事件支持\n if (this._rail) {\n this._rail.addEventListener(\n 'pointerdown',\n delayMap[delayType](this._onRailPointerDown, delayTime) as EventListener\n );\n }\n if (this._slider) {\n this._slider.addEventListener('pointerdown', this._onSliderPointerDown as EventListener);\n }\n }\n\n protected render() {\n this._reset();\n const {\n direction = 'horizontal',\n width,\n height,\n range,\n limitRange = [0, 1],\n // sliderSize = 20,\n // scrollValue = 0,\n // scrollRange = [0, 1],\n railStyle,\n sliderStyle,\n padding = 2\n } = this.attribute as ScrollBarAttributes;\n\n const group = this.createOrUpdateChild('scrollbar-container', {}, 'group') as IGroup;\n // 绘制轨道\n\n const rail = group.createOrUpdateChild(\n 'scrollbar-rail',\n {\n x: 0,\n y: 0,\n width,\n height,\n ...railStyle\n },\n 'rect'\n ) as IRect;\n this._rail = rail;\n\n // 滑块\n const sliderRenderBounds = this._getSliderRenderBounds();\n const sliderPos = this._getSliderPos(clampRange(range, limitRange[0], limitRange[1]));\n const sliderSize = sliderPos[1] - sliderPos[0];\n this._sliderSize = sliderSize;\n // const sliderRangePos = this._getScrollRange();\n\n let sliderAttribute: IRectGraphicAttribute;\n if (direction === 'horizontal') {\n sliderAttribute = {\n x: sliderPos[0],\n y: sliderRenderBounds.y1,\n width: sliderSize,\n height: sliderRenderBounds.height\n };\n } else {\n sliderAttribute = {\n x: sliderRenderBounds.x1,\n y: sliderPos[0],\n width: sliderRenderBounds.width,\n height: sliderSize\n };\n }\n\n const slider = group.createOrUpdateChild(\n 'slider',\n {\n ...sliderAttribute,\n cornerRadius: this._getDefaultSliderCornerRadius(),\n ...sliderStyle,\n boundsPadding: normalizePadding(padding),\n pickMode: 'imprecise'\n },\n 'rect'\n ) as IRect;\n this._slider = slider;\n this._container = group;\n\n const containerAABBBounds = this._container.AABBBounds;\n this._viewPosition = {\n x: containerAABBBounds.x1,\n y: containerAABBBounds.y1\n };\n }\n\n // 获取滑块渲染的包围盒区域\n private _getSliderRenderBounds() {\n if (this._sliderRenderBounds) {\n return this._sliderRenderBounds;\n }\n const { width, height, padding = 2 } = this.attribute as ScrollBarAttributes;\n const [top, right, bottom, left] = normalizePadding(padding);\n const renderBounds = {\n x1: left,\n y1: top,\n x2: width - right,\n y2: height - bottom,\n width: Math.max(0, width - (left + right)),\n height: Math.max(0, height - (top + bottom))\n };\n this._sliderRenderBounds = renderBounds;\n return renderBounds;\n }\n\n // 获取默认的滑块圆角\n private _getDefaultSliderCornerRadius() {\n const { direction, round } = this.attribute as ScrollBarAttributes;\n\n if (round) {\n const { width, height } = this._getSliderRenderBounds();\n return direction === 'horizontal' ? height : width;\n }\n\n return 0;\n }\n\n // 计算滑块在轨道的位置\n private _getSliderPos(range: [number, number]) {\n const { direction } = this.attribute as ScrollBarAttributes;\n const { width, height, x1, y1 } = this._getSliderRenderBounds();\n\n if (direction === 'horizontal') {\n return [width * range[0] + x1, width * range[1] + x1];\n }\n return [height * range[0] + y1, height * range[1] + y1];\n }\n\n private _getScrollRange() {\n if (this._sliderLimitRange) {\n return this._sliderLimitRange;\n }\n const { limitRange = [0, 1], direction } = this.attribute as ScrollBarAttributes;\n const [min, max] = clampRange(limitRange, 0, 1);\n const { width, height, x1, y1 } = this._getSliderRenderBounds();\n const sliderSize = this._sliderSize;\n\n return direction === 'horizontal'\n ? clampRange([x1 + min * width, x1 + max * width], x1, width - sliderSize)\n : clampRange([y1 + min * height, y1 + max * height], y1, height - sliderSize);\n }\n\n private _onRailPointerDown = (e: FederatedPointerEvent) => {\n // 将事件坐标转换为实际的滑块位置\n // TODO: 这里有问题,应该拿 viewX viewY,同时 graphic 要提供接口获取它的 相对 view 的坐标\n const { viewX, viewY } = e;\n const { direction, width, height, range } = this.attribute as ScrollBarAttributes;\n const sliderSize = this._sliderSize;\n const [min, max] = this._getScrollRange();\n let currentScrollValue;\n if (direction === 'vertical') {\n const relativeY = viewY - this._viewPosition.y;\n const currentYPos = clamp(relativeY - sliderSize / 2, min, max);\n currentScrollValue = relativeY / height;\n this._slider.setAttribute('y', currentYPos, true);\n } else {\n const relativeX = viewX - this._viewPosition.x;\n const currentXPos = clamp(relativeX - sliderSize / 2, min, max);\n currentScrollValue = relativeX / width;\n this._slider.setAttribute('x', currentXPos, true);\n }\n\n this.setScrollRange(\n [currentScrollValue - (range[1] - range[0]) / 2, currentScrollValue + (range[1] - range[0]) / 2],\n false\n );\n\n if (this.stage && !this.stage.autoRender) {\n this.stage.renderNextFrame();\n }\n };\n\n private _onSliderPointerDown = (e: FederatedPointerEvent) => {\n const { stopSliderDownPropagation = true } = this.attribute as ScrollBarAttributes;\n if (stopSliderDownPropagation) {\n e.stopPropagation();\n }\n const { direction } = this.attribute as ScrollBarAttributes;\n const { x, y } = this.stage.eventPointTransform(e);\n this._prePos = direction === 'horizontal' ? x : y;\n this._dispatchEvent('scrollDown', {\n pos: this._prePos,\n event: e\n });\n if (vglobal.env === 'browser') {\n vglobal.addEventListener('pointermove', this._onSliderPointerMoveWithDelay, { capture: true });\n vglobal.addEventListener('pointerup', this._onSliderPointerUp);\n } else {\n this.stage.addEventListener('pointermove', this._onSliderPointerMoveWithDelay, { capture: true });\n this.stage.addEventListener('pointerup', this._onSliderPointerUp);\n this.stage.addEventListener('pointerupoutside', this._onSliderPointerUp);\n }\n };\n\n private _computeScrollValue = (e: any) => {\n const { direction } = this.attribute as ScrollBarAttributes;\n const { x, y } = this.stage.eventPointTransform(e);\n\n let currentScrollValue;\n let currentPos;\n let delta = 0;\n\n const { width, height } = this._getSliderRenderBounds();\n if (direction === 'vertical') {\n currentPos = y;\n delta = currentPos - this._prePos;\n currentScrollValue = delta / height;\n } else {\n currentPos = x;\n delta = currentPos - this._prePos;\n currentScrollValue = delta / width;\n }\n return [currentPos, currentScrollValue];\n };\n\n private _onSliderPointerMove = (e: any) => {\n const { stopSliderMovePropagation = true } = this.attribute as ScrollBarAttributes;\n if (stopSliderMovePropagation) {\n e.stopPropagation();\n }\n const preScrollRange = this.getScrollRange();\n const [currentPos, currentScrollValue] = this._computeScrollValue(e);\n this.setScrollRange([preScrollRange[0] + currentScrollValue, preScrollRange[1] + currentScrollValue], true);\n this._prePos = currentPos;\n };\n\n private _onSliderPointerMoveWithDelay =\n this.attribute.delayTime === 0\n ? this._onSliderPointerMove\n : delayMap[this.attribute.delayType](this._onSliderPointerMove, this.attribute.delayTime);\n\n private _onSliderPointerUp = (e: any) => {\n e.preventDefault();\n const { realTime = true, range: preRange, limitRange = [0, 1] } = this.attribute as ScrollBarAttributes;\n // 发射 change 事件\n const preScrollRange = this.getScrollRange();\n const [currentPos, currentScrollValue] = this._computeScrollValue(e);\n const range: [number, number] = [preScrollRange[0] + currentScrollValue, preScrollRange[1] + currentScrollValue];\n\n this._dispatchEvent('scrollUp', {\n pre: preRange,\n value: clampRange(range, limitRange[0], limitRange[1])\n });\n if (vglobal.env === 'browser') {\n vglobal.removeEventListener('pointermove', this._onSliderPointerMoveWithDelay, { capture: true });\n vglobal.removeEventListener('pointerup', this._onSliderPointerUp);\n } else {\n this.stage.removeEventListener('pointermove', this._onSliderPointerMoveWithDelay, { capture: true });\n this.stage.removeEventListener('pointerup', this._onSliderPointerUp);\n this.stage.removeEventListener('pointerupoutside', this._onSliderPointerUp);\n }\n };\n\n private _reset() {\n this._sliderRenderBounds = null;\n this._sliderLimitRange = null;\n }\n}\n"]}
|
package/dist/index.es.js
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { tau, halfPi as halfPi$1, AABBBounds, degreeToRadian, Point, PointService, abs, max, min, atan2, epsilon, Matrix, pi2, Logger, TextMeasure, EventEmitter, isBoolean, isObject, isFunction, isString, cos, sin, pi, isArray, pointAt, isNumber, getDecimalPlaces, isNil, Color, has, normalTransform, isValidUrl, isBase64, acos, sqrt, transformBoundsWithMatrix, arrayEqual, getContextFont, clampAngleByRadian, asin, Bounds, getRectIntersect, isRectIntersect, isPlainObject, merge, clamp, clampRange, normalizePadding, debounce, throttle, hexToRgb, crossProduct, isValid, isEmpty, rectInsideAnotherRect, radianToDegree, getAngleByPoint, polarToCartesian, array, isValidNumber, calculateAnchorOfBounds, computeQuadrant, isGreater, isLess, isNumberClose, normalizeAngle, flattenArray, cloneDeep, get,
|
|
1
|
+
import { tau, halfPi as halfPi$1, AABBBounds, degreeToRadian, Point, PointService, abs, max, min, atan2, epsilon, Matrix, pi2, Logger, TextMeasure, EventEmitter, isBoolean, isObject, isFunction, isString, cos, sin, pi, isArray, pointAt, isNumber, getDecimalPlaces, isNil, Color, OBBBounds, has, normalTransform, isValidUrl, isBase64, acos, sqrt, transformBoundsWithMatrix, arrayEqual, getContextFont, rotatePoint, clampAngleByRadian, asin, Bounds, getRectIntersect, isRectIntersect, isPlainObject, merge, clamp, clampRange, normalizePadding, debounce, throttle, hexToRgb, crossProduct, isValid, isEmpty, rectInsideAnotherRect, radianToDegree, getAngleByPoint, polarToCartesian, array, isValidNumber, calculateAnchorOfBounds, computeQuadrant, isGreater, isLess, isNumberClose, normalizeAngle, flattenArray, cloneDeep, get, last, isRotateAABBIntersect, mixin, isEqual, interpolateString, minInArray, maxInArray, binaryFuzzySearchInNumberRange, polygonContainPoint } from '@visactor/vutils';
|
|
2
2
|
import { isContinuous, isDiscrete, LinearScale } from '@visactor/vscale';
|
|
3
3
|
|
|
4
4
|
class Generator {
|
|
@@ -4466,6 +4466,9 @@ class Graphic extends Node {
|
|
|
4466
4466
|
get AABBBounds() {
|
|
4467
4467
|
return this.tryUpdateAABBBounds("imprecise" === this.attribute.boundsMode);
|
|
4468
4468
|
}
|
|
4469
|
+
get OBBBounds() {
|
|
4470
|
+
return this.tryUpdateOBBBounds();
|
|
4471
|
+
}
|
|
4469
4472
|
get globalAABBBounds() {
|
|
4470
4473
|
return this.tryUpdateGlobalAABBBounds();
|
|
4471
4474
|
}
|
|
@@ -4478,7 +4481,7 @@ class Graphic extends Node {
|
|
|
4478
4481
|
constructor() {
|
|
4479
4482
|
let params = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};
|
|
4480
4483
|
var _a;
|
|
4481
|
-
super(), this._AABBBounds = new AABBBounds(), this._updateTag = UpdateTag.INIT, this.attribute = params, this.valid = this.isValid(), params.background ? this.loadImage(null !== (_a = params.background.background) && void 0 !== _a ? _a : params.background, !0) : params.shadowGraphic && this.setShadowGraphic(params.shadowGraphic);
|
|
4484
|
+
super(), this._AABBBounds = new AABBBounds(), this._updateTag = UpdateTag.INIT, this.attribute = params, this.valid = this.isValid(), this.updateAABBBoundsStamp = 0, params.background ? this.loadImage(null !== (_a = params.background.background) && void 0 !== _a ? _a : params.background, !0) : params.shadowGraphic && this.setShadowGraphic(params.shadowGraphic);
|
|
4482
4485
|
}
|
|
4483
4486
|
setMode(mode) {
|
|
4484
4487
|
"3d" === mode ? this.set3dMode() : this.set2dMode();
|
|
@@ -4512,13 +4515,22 @@ class Graphic extends Node {
|
|
|
4512
4515
|
const bounds = this.doUpdateAABBBounds(full);
|
|
4513
4516
|
return application.graphicService.afterUpdateAABBBounds(this, this.stage, this._AABBBounds, this, !0), bounds;
|
|
4514
4517
|
}
|
|
4518
|
+
tryUpdateOBBBounds() {
|
|
4519
|
+
if (this._OBBBounds || (this._OBBBounds = new OBBBounds()), this.tryUpdateAABBBounds(), this.updateOBBBoundsStamp === this.updateAABBBoundsStamp) return this._OBBBounds;
|
|
4520
|
+
if (this.updateOBBBoundsStamp = this.updateAABBBoundsStamp, !this.valid) return this._OBBBounds.clear(), this._OBBBounds;
|
|
4521
|
+
return this.doUpdateOBBBounds();
|
|
4522
|
+
}
|
|
4515
4523
|
combindShadowAABBBounds(bounds) {
|
|
4516
4524
|
if (this.shadowRoot) {
|
|
4517
4525
|
const b = this.shadowRoot.AABBBounds.clone();
|
|
4518
4526
|
bounds.union(b);
|
|
4519
4527
|
}
|
|
4520
4528
|
}
|
|
4529
|
+
doUpdateOBBBounds() {
|
|
4530
|
+
return this._OBBBounds;
|
|
4531
|
+
}
|
|
4521
4532
|
doUpdateAABBBounds(full) {
|
|
4533
|
+
this.updateAABBBoundsStamp++;
|
|
4522
4534
|
const graphicTheme = this.getGraphicTheme();
|
|
4523
4535
|
this._AABBBounds.clear();
|
|
4524
4536
|
const attribute = this.attribute,
|
|
@@ -5476,6 +5488,7 @@ class Group extends Graphic {
|
|
|
5476
5488
|
}), application.graphicService.updateTempAABBBounds(aabbBounds), application.graphicService.transformAABBBounds(attribute, aabbBounds, groupTheme, !1, this), originalAABBBounds.copy(aabbBounds), originalAABBBounds;
|
|
5477
5489
|
}
|
|
5478
5490
|
doUpdateAABBBounds() {
|
|
5491
|
+
this.updateAABBBoundsStamp++;
|
|
5479
5492
|
const bounds = super.doUpdateAABBBounds();
|
|
5480
5493
|
return this.parent && this.parent.addChildUpdateBoundTag(), this._emitCustomEvent("AAABBBoundsChange"), bounds;
|
|
5481
5494
|
}
|
|
@@ -9152,7 +9165,10 @@ class InteractiveDrawItemInterceptorContribution {
|
|
|
9152
9165
|
}
|
|
9153
9166
|
beforeDrawInteractive(graphic, renderService, drawContext, drawContribution, params) {
|
|
9154
9167
|
const baseGraphic = graphic.baseGraphic;
|
|
9155
|
-
|
|
9168
|
+
let intree = !!baseGraphic.stage,
|
|
9169
|
+
_g = baseGraphic.parent;
|
|
9170
|
+
for (; intree && _g && _g.stage !== _g;) intree = !!_g.stage, _g = _g.parent;
|
|
9171
|
+
if (!intree) {
|
|
9156
9172
|
const interactiveLayer = drawContext.stage.getLayer("_builtin_interactive");
|
|
9157
9173
|
if (interactiveLayer) {
|
|
9158
9174
|
this.getShadowRoot(interactiveLayer).removeChild(graphic);
|
|
@@ -9501,6 +9517,35 @@ class Text extends Graphic {
|
|
|
9501
9517
|
getGraphicTheme() {
|
|
9502
9518
|
return getTheme(this).text;
|
|
9503
9519
|
}
|
|
9520
|
+
doUpdateOBBBounds() {
|
|
9521
|
+
const graphicTheme = this.getGraphicTheme();
|
|
9522
|
+
this._OBBBounds.clear();
|
|
9523
|
+
const attribute = this.attribute,
|
|
9524
|
+
{
|
|
9525
|
+
angle = graphicTheme.angle
|
|
9526
|
+
} = attribute;
|
|
9527
|
+
if (!angle) {
|
|
9528
|
+
const b = this.AABBBounds;
|
|
9529
|
+
return this._OBBBounds.setValue(b.x1, b.y1, b.x2, b.y2), this._OBBBounds;
|
|
9530
|
+
}
|
|
9531
|
+
this.obbText || (this.obbText = new Text({})), this.obbText.setAttributes(Object.assign(Object.assign({}, attribute), {
|
|
9532
|
+
angle: 0
|
|
9533
|
+
}));
|
|
9534
|
+
const bounds1 = this.obbText.AABBBounds,
|
|
9535
|
+
{
|
|
9536
|
+
x: x,
|
|
9537
|
+
y: y
|
|
9538
|
+
} = attribute,
|
|
9539
|
+
boundsCenter = {
|
|
9540
|
+
x: (bounds1.x1 + bounds1.x2) / 2,
|
|
9541
|
+
y: (bounds1.y1 + bounds1.y2) / 2
|
|
9542
|
+
},
|
|
9543
|
+
center = rotatePoint(boundsCenter, angle, {
|
|
9544
|
+
x: x,
|
|
9545
|
+
y: y
|
|
9546
|
+
});
|
|
9547
|
+
return this._OBBBounds.copy(bounds1), this._OBBBounds.translate(center.x - boundsCenter.x, center.y - boundsCenter.y), this._OBBBounds.angle = angle, this._OBBBounds;
|
|
9548
|
+
}
|
|
9504
9549
|
updateAABBBounds(attribute, textTheme, aabbBounds) {
|
|
9505
9550
|
const {
|
|
9506
9551
|
text = textTheme.text
|
|
@@ -11933,13 +11978,14 @@ class Arc extends Graphic {
|
|
|
11933
11978
|
return super.needUpdateTag(key, ARC_UPDATE_TAG_KEY);
|
|
11934
11979
|
}
|
|
11935
11980
|
toCustomPath() {
|
|
11981
|
+
var _a, _b, _c, _d;
|
|
11936
11982
|
const attribute = this.attribute,
|
|
11937
11983
|
{
|
|
11938
11984
|
startAngle: startAngle,
|
|
11939
11985
|
endAngle: endAngle
|
|
11940
11986
|
} = this.getParsedAngle();
|
|
11941
|
-
let innerRadius = attribute.innerRadius - (attribute.innerPadding
|
|
11942
|
-
outerRadius = attribute.outerRadius - (attribute.outerPadding
|
|
11987
|
+
let innerRadius = (null !== (_a = attribute.innerRadius) && void 0 !== _a ? _a : 0) - (null !== (_b = attribute.innerPadding) && void 0 !== _b ? _b : 0),
|
|
11988
|
+
outerRadius = (null !== (_c = attribute.outerRadius) && void 0 !== _c ? _c : 0) - (null !== (_d = attribute.outerPadding) && void 0 !== _d ? _d : 0);
|
|
11943
11989
|
const deltaAngle = abs(endAngle - startAngle),
|
|
11944
11990
|
clockwise = endAngle > startAngle;
|
|
11945
11991
|
if (outerRadius < innerRadius) {
|
|
@@ -14139,7 +14185,7 @@ class ScrollBar extends AbstractComponent {
|
|
|
14139
14185
|
let currentScrollValue;
|
|
14140
14186
|
let currentPos;
|
|
14141
14187
|
let delta = 0;
|
|
14142
|
-
const { width, height } = this.
|
|
14188
|
+
const { width, height } = this._getSliderRenderBounds();
|
|
14143
14189
|
if (direction === 'vertical') {
|
|
14144
14190
|
currentPos = y;
|
|
14145
14191
|
delta = currentPos - this._prePos;
|
|
@@ -14241,7 +14287,7 @@ class ScrollBar extends AbstractComponent {
|
|
|
14241
14287
|
const rail = group.createOrUpdateChild('scrollbar-rail', Object.assign({ x: 0, y: 0, width,
|
|
14242
14288
|
height }, railStyle), 'rect');
|
|
14243
14289
|
this._rail = rail;
|
|
14244
|
-
const sliderRenderBounds = this.
|
|
14290
|
+
const sliderRenderBounds = this._getSliderRenderBounds();
|
|
14245
14291
|
const sliderPos = this._getSliderPos(clampRange(range, limitRange[0], limitRange[1]));
|
|
14246
14292
|
const sliderSize = sliderPos[1] - sliderPos[0];
|
|
14247
14293
|
this._sliderSize = sliderSize;
|
|
@@ -14271,7 +14317,7 @@ class ScrollBar extends AbstractComponent {
|
|
|
14271
14317
|
y: containerAABBBounds.y1
|
|
14272
14318
|
};
|
|
14273
14319
|
}
|
|
14274
|
-
|
|
14320
|
+
_getSliderRenderBounds() {
|
|
14275
14321
|
if (this._sliderRenderBounds) {
|
|
14276
14322
|
return this._sliderRenderBounds;
|
|
14277
14323
|
}
|
|
@@ -14291,14 +14337,14 @@ class ScrollBar extends AbstractComponent {
|
|
|
14291
14337
|
_getDefaultSliderCornerRadius() {
|
|
14292
14338
|
const { direction, round } = this.attribute;
|
|
14293
14339
|
if (round) {
|
|
14294
|
-
const { width, height } = this.
|
|
14340
|
+
const { width, height } = this._getSliderRenderBounds();
|
|
14295
14341
|
return direction === 'horizontal' ? height : width;
|
|
14296
14342
|
}
|
|
14297
14343
|
return 0;
|
|
14298
14344
|
}
|
|
14299
14345
|
_getSliderPos(range) {
|
|
14300
14346
|
const { direction } = this.attribute;
|
|
14301
|
-
const { width, height, x1, y1 } = this.
|
|
14347
|
+
const { width, height, x1, y1 } = this._getSliderRenderBounds();
|
|
14302
14348
|
if (direction === 'horizontal') {
|
|
14303
14349
|
return [width * range[0] + x1, width * range[1] + x1];
|
|
14304
14350
|
}
|
|
@@ -14310,7 +14356,7 @@ class ScrollBar extends AbstractComponent {
|
|
|
14310
14356
|
}
|
|
14311
14357
|
const { limitRange = [0, 1], direction } = this.attribute;
|
|
14312
14358
|
const [min, max] = clampRange(limitRange, 0, 1);
|
|
14313
|
-
const { width, height, x1, y1 } = this.
|
|
14359
|
+
const { width, height, x1, y1 } = this._getSliderRenderBounds();
|
|
14314
14360
|
const sliderSize = this._sliderSize;
|
|
14315
14361
|
return direction === 'horizontal'
|
|
14316
14362
|
? clampRange([x1 + min * width, x1 + max * width], x1, width - sliderSize)
|
|
@@ -16802,44 +16848,31 @@ class LabelBase extends AbstractComponent {
|
|
|
16802
16848
|
const baseMark = this.getRelatedGraphic(label.attribute);
|
|
16803
16849
|
const backgroundColor = baseMark.attribute.fill;
|
|
16804
16850
|
const foregroundColor = label.attribute.fill;
|
|
16805
|
-
const baseColor = backgroundColor;
|
|
16806
16851
|
const invertColor = labelSmartInvert(foregroundColor, backgroundColor, textType, contrastRatiosThreshold, alternativeColors, mode);
|
|
16807
16852
|
const similarColor = contrastAccessibilityChecker(invertColor, brightColor) ? brightColor : darkColor;
|
|
16808
|
-
if (outsideEnable) {
|
|
16809
|
-
const fill = smartInvertStrategy(fillStrategy,
|
|
16853
|
+
if (outsideEnable || this._canPlaceInside(label.AABBBounds, baseMark.AABBBounds)) {
|
|
16854
|
+
const fill = smartInvertStrategy(fillStrategy, backgroundColor, invertColor, similarColor);
|
|
16810
16855
|
fill && label.setAttributes({ fill });
|
|
16811
16856
|
if (label.attribute.lineWidth === 0) {
|
|
16812
16857
|
continue;
|
|
16813
16858
|
}
|
|
16814
|
-
const stroke = smartInvertStrategy(strokeStrategy,
|
|
16859
|
+
const stroke = smartInvertStrategy(strokeStrategy, backgroundColor, invertColor, similarColor);
|
|
16815
16860
|
stroke && label.setAttributes({ stroke });
|
|
16816
16861
|
}
|
|
16817
|
-
else {
|
|
16818
|
-
|
|
16819
|
-
|
|
16820
|
-
const fill = smartInvertStrategy(fillStrategy, baseColor, invertColor, similarColor);
|
|
16821
|
-
fill && label.setAttributes({ fill });
|
|
16822
|
-
if (label.attribute.lineWidth === 0) {
|
|
16823
|
-
continue;
|
|
16824
|
-
}
|
|
16825
|
-
const stroke = smartInvertStrategy(strokeStrategy, baseColor, invertColor, similarColor);
|
|
16826
|
-
stroke && label.setAttributes({ stroke });
|
|
16862
|
+
else if (label.AABBBounds && baseMark.AABBBounds && baseMark.AABBBounds.intersects(label.AABBBounds)) {
|
|
16863
|
+
if (label.attribute.lineWidth === 0) {
|
|
16864
|
+
continue;
|
|
16827
16865
|
}
|
|
16828
|
-
|
|
16829
|
-
|
|
16830
|
-
|
|
16831
|
-
}
|
|
16832
|
-
|
|
16833
|
-
label.setAttributes({
|
|
16834
|
-
fill: labelSmartInvert(label.attribute.fill, label.attribute.stroke, textType, contrastRatiosThreshold, alternativeColors, mode)
|
|
16835
|
-
});
|
|
16836
|
-
continue;
|
|
16837
|
-
}
|
|
16838
|
-
const fill = smartInvertStrategy(fillStrategy, baseColor, invertColor, similarColor);
|
|
16839
|
-
fill && label.setAttributes({ fill });
|
|
16840
|
-
const stroke = smartInvertStrategy(strokeStrategy, baseColor, invertColor, similarColor);
|
|
16841
|
-
stroke && label.setAttributes({ stroke });
|
|
16866
|
+
if (label.attribute.stroke) {
|
|
16867
|
+
label.setAttributes({
|
|
16868
|
+
fill: labelSmartInvert(label.attribute.fill, label.attribute.stroke, textType, contrastRatiosThreshold, alternativeColors, mode)
|
|
16869
|
+
});
|
|
16870
|
+
continue;
|
|
16842
16871
|
}
|
|
16872
|
+
const fill = smartInvertStrategy(fillStrategy, backgroundColor, invertColor, similarColor);
|
|
16873
|
+
fill && label.setAttributes({ fill });
|
|
16874
|
+
const stroke = smartInvertStrategy(strokeStrategy, backgroundColor, invertColor, similarColor);
|
|
16875
|
+
stroke && label.setAttributes({ stroke });
|
|
16843
16876
|
}
|
|
16844
16877
|
}
|
|
16845
16878
|
}
|
|
@@ -17315,7 +17348,9 @@ class ArcLabel extends LabelBase {
|
|
|
17315
17348
|
const radius = this.computeRadius(radiusRatio, attribute.width, attribute.height);
|
|
17316
17349
|
const flag = isQuadrantLeft(quadrant) ? -1 : 1;
|
|
17317
17350
|
let cx = 0;
|
|
17318
|
-
let limit = (flag > 0 ? plotLayout.x2 - pointB.x : pointB.x - plotLayout.x1
|
|
17351
|
+
let limit = (flag > 0 ? plotLayout.x2 - pointB.x + this._alignOffset : pointB.x - plotLayout.x1 - this._alignOffset) -
|
|
17352
|
+
this._line2MinLength -
|
|
17353
|
+
spaceWidth;
|
|
17319
17354
|
if (labelLayoutAlign === 'labelLine') {
|
|
17320
17355
|
cx = (radius + line1MinLength + this._line2MinLength) * flag + center.x;
|
|
17321
17356
|
limit = (flag > 0 ? plotLayout.x2 - cx : cx - plotLayout.x1) - spaceWidth;
|
|
@@ -18772,60 +18807,6 @@ class AxisBase extends AbstractComponent {
|
|
|
18772
18807
|
}
|
|
18773
18808
|
}
|
|
18774
18809
|
|
|
18775
|
-
function rotate(x, y, deg, originX, originY) {
|
|
18776
|
-
return {
|
|
18777
|
-
x: (x - originX) * Math.cos(deg) + (y - originY) * Math.sin(deg) + originX,
|
|
18778
|
-
y: (x - originX) * Math.sin(deg) + (originY - y) * Math.cos(deg) + originY
|
|
18779
|
-
};
|
|
18780
|
-
}
|
|
18781
|
-
function genNormalBounds(item) {
|
|
18782
|
-
const bounds = item.AABBBounds;
|
|
18783
|
-
return {
|
|
18784
|
-
x1: bounds.x1,
|
|
18785
|
-
x2: bounds.x2,
|
|
18786
|
-
y1: bounds.y1,
|
|
18787
|
-
y2: bounds.y2,
|
|
18788
|
-
centerX: item.attribute.x,
|
|
18789
|
-
centerY: item.attribute.y,
|
|
18790
|
-
angle: item.attribute.angle
|
|
18791
|
-
};
|
|
18792
|
-
}
|
|
18793
|
-
function genRotateBounds(items) {
|
|
18794
|
-
items.forEach(item => {
|
|
18795
|
-
if (item.rotatedBounds || !item.attribute.angle) {
|
|
18796
|
-
return;
|
|
18797
|
-
}
|
|
18798
|
-
const bounds = genNormalBounds(item);
|
|
18799
|
-
const rotatedCenter = rotate(bounds.centerX, bounds.centerY, bounds.angle, item.attribute.x, item.attribute.y);
|
|
18800
|
-
const deltaX = rotatedCenter.x - bounds.centerX;
|
|
18801
|
-
const deltaY = rotatedCenter.y - bounds.centerY;
|
|
18802
|
-
bounds.x1 += deltaX;
|
|
18803
|
-
bounds.x2 += deltaX;
|
|
18804
|
-
bounds.y1 += deltaY;
|
|
18805
|
-
bounds.y2 += deltaY;
|
|
18806
|
-
bounds.centerX += deltaX;
|
|
18807
|
-
bounds.centerY += deltaY;
|
|
18808
|
-
item.rotatedBounds = bounds;
|
|
18809
|
-
});
|
|
18810
|
-
}
|
|
18811
|
-
function itemIntersect(item1, item2) {
|
|
18812
|
-
return (isRectIntersect(item1.AABBBounds, item2.AABBBounds, false) &&
|
|
18813
|
-
(item1.rotatedBounds && item2.rotatedBounds
|
|
18814
|
-
? isRotateAABBIntersect(item1.rotatedBounds, item2.rotatedBounds, true)
|
|
18815
|
-
: true));
|
|
18816
|
-
}
|
|
18817
|
-
const DELTA_ANGLE = Math.sin(Math.PI / 10);
|
|
18818
|
-
function isAngleVertical(angle) {
|
|
18819
|
-
const hasAngle = !isNil(angle) && angle !== 0;
|
|
18820
|
-
const cos = hasAngle ? Math.cos(angle) : 1;
|
|
18821
|
-
return hasAngle && Math.abs(cos) <= DELTA_ANGLE;
|
|
18822
|
-
}
|
|
18823
|
-
function isAngleHorizontal(angle) {
|
|
18824
|
-
const hasAngle = !isNil(angle) && angle !== 0;
|
|
18825
|
-
const sin = hasAngle ? Math.sin(angle) : 0;
|
|
18826
|
-
return !hasAngle || Math.abs(sin) <= DELTA_ANGLE;
|
|
18827
|
-
}
|
|
18828
|
-
|
|
18829
18810
|
const methods$1 = {
|
|
18830
18811
|
parity: function (items) {
|
|
18831
18812
|
return items.filter((item, i) => (i % 2 ? item.setAttribute('opacity', 0) : 1));
|
|
@@ -18842,13 +18823,14 @@ const methods$1 = {
|
|
|
18842
18823
|
}
|
|
18843
18824
|
};
|
|
18844
18825
|
function intersect$1(textA, textB, sep) {
|
|
18845
|
-
|
|
18846
|
-
|
|
18847
|
-
|
|
18848
|
-
|
|
18849
|
-
|
|
18850
|
-
|
|
18851
|
-
|
|
18826
|
+
let a = textA.OBBBounds;
|
|
18827
|
+
let b = textB.OBBBounds;
|
|
18828
|
+
if (a && b && !a.empty() && !b.empty()) {
|
|
18829
|
+
return a.intersects(b);
|
|
18830
|
+
}
|
|
18831
|
+
a = textA.AABBBounds;
|
|
18832
|
+
b = textB.AABBBounds;
|
|
18833
|
+
return sep > Math.max(b.x1 - a.x2, a.x1 - b.x2, b.y1 - a.y2, a.y1 - b.y2);
|
|
18852
18834
|
}
|
|
18853
18835
|
function hasOverlap$1(items, pad) {
|
|
18854
18836
|
for (let i = 1, n = items.length, a = items[0], b; i < n; a = b, ++i) {
|
|
@@ -18858,8 +18840,14 @@ function hasOverlap$1(items, pad) {
|
|
|
18858
18840
|
}
|
|
18859
18841
|
}
|
|
18860
18842
|
function hasBounds(item) {
|
|
18861
|
-
|
|
18862
|
-
|
|
18843
|
+
let bounds;
|
|
18844
|
+
if (!item.OBBBounds.empty()) {
|
|
18845
|
+
bounds = item.OBBBounds;
|
|
18846
|
+
}
|
|
18847
|
+
else {
|
|
18848
|
+
bounds = item.AABBBounds;
|
|
18849
|
+
}
|
|
18850
|
+
return bounds.width() > 1 && bounds.height() > 1;
|
|
18863
18851
|
}
|
|
18864
18852
|
function reset(items) {
|
|
18865
18853
|
items.forEach(item => item.setAttribute('opacity', 1));
|
|
@@ -18875,7 +18863,6 @@ function autoHide(labels, config) {
|
|
|
18875
18863
|
}
|
|
18876
18864
|
let items;
|
|
18877
18865
|
items = reset(source);
|
|
18878
|
-
genRotateBounds(items);
|
|
18879
18866
|
const { method = 'parity', separation: sep = 0 } = config;
|
|
18880
18867
|
const reduce = isFunction(method) ? method : methods$1[method] || methods$1.parity;
|
|
18881
18868
|
if (items.length >= 3 && hasOverlap$1(items, sep)) {
|
|
@@ -18906,6 +18893,61 @@ function autoHide(labels, config) {
|
|
|
18906
18893
|
});
|
|
18907
18894
|
}
|
|
18908
18895
|
|
|
18896
|
+
function genNormalBounds(item) {
|
|
18897
|
+
const bounds = item.AABBBounds;
|
|
18898
|
+
return {
|
|
18899
|
+
x1: bounds.x1,
|
|
18900
|
+
x2: bounds.x2,
|
|
18901
|
+
y1: bounds.y1,
|
|
18902
|
+
y2: bounds.y2,
|
|
18903
|
+
centerX: item.attribute.x,
|
|
18904
|
+
centerY: item.attribute.y,
|
|
18905
|
+
angle: item.attribute.angle
|
|
18906
|
+
};
|
|
18907
|
+
}
|
|
18908
|
+
function genRotateBounds(items) {
|
|
18909
|
+
items.forEach(item => {
|
|
18910
|
+
if (item.rotatedBounds || !item.attribute.angle) {
|
|
18911
|
+
return;
|
|
18912
|
+
}
|
|
18913
|
+
const bounds = genNormalBounds(item);
|
|
18914
|
+
const rotatedCenter = rotatePoint({ x: item.attribute.x, y: item.attribute.y }, bounds.angle, {
|
|
18915
|
+
x: bounds.centerX,
|
|
18916
|
+
y: bounds.centerY
|
|
18917
|
+
});
|
|
18918
|
+
const deltaX = rotatedCenter.x - bounds.centerX;
|
|
18919
|
+
const deltaY = rotatedCenter.y - bounds.centerY;
|
|
18920
|
+
bounds.x1 += deltaX;
|
|
18921
|
+
bounds.x2 += deltaX;
|
|
18922
|
+
bounds.y1 += deltaY;
|
|
18923
|
+
bounds.y2 += deltaY;
|
|
18924
|
+
bounds.centerX += deltaX;
|
|
18925
|
+
bounds.centerY += deltaY;
|
|
18926
|
+
item.rotatedBounds = bounds;
|
|
18927
|
+
});
|
|
18928
|
+
}
|
|
18929
|
+
function itemIntersect(item1, item2) {
|
|
18930
|
+
var _a, _b;
|
|
18931
|
+
if (!((_a = item1.OBBBounds) === null || _a === void 0 ? void 0 : _a.empty()) && !((_b = item2.OBBBounds) === null || _b === void 0 ? void 0 : _b.empty())) {
|
|
18932
|
+
return item1.OBBBounds.intersects(item2.OBBBounds);
|
|
18933
|
+
}
|
|
18934
|
+
return (isRectIntersect(item1.AABBBounds, item2.AABBBounds, false) &&
|
|
18935
|
+
(item1.rotatedBounds && item2.rotatedBounds
|
|
18936
|
+
? isRotateAABBIntersect(item1.rotatedBounds, item2.rotatedBounds, true)
|
|
18937
|
+
: true));
|
|
18938
|
+
}
|
|
18939
|
+
const DELTA_ANGLE = Math.sin(Math.PI / 10);
|
|
18940
|
+
function isAngleVertical(angle) {
|
|
18941
|
+
const hasAngle = !isNil(angle) && angle !== 0;
|
|
18942
|
+
const cos = hasAngle ? Math.cos(angle) : 1;
|
|
18943
|
+
return hasAngle && Math.abs(cos) <= DELTA_ANGLE;
|
|
18944
|
+
}
|
|
18945
|
+
function isAngleHorizontal(angle) {
|
|
18946
|
+
const hasAngle = !isNil(angle) && angle !== 0;
|
|
18947
|
+
const sin = hasAngle ? Math.sin(angle) : 0;
|
|
18948
|
+
return !hasAngle || Math.abs(sin) <= DELTA_ANGLE;
|
|
18949
|
+
}
|
|
18950
|
+
|
|
18909
18951
|
function autoRotate(items, rotateConfig) {
|
|
18910
18952
|
if (isEmpty(items)) {
|
|
18911
18953
|
return;
|
|
@@ -20854,8 +20896,25 @@ class BaseGrid extends AbstractComponent {
|
|
|
20854
20896
|
? alternateColor
|
|
20855
20897
|
: [alternateColor, 'transparent'];
|
|
20856
20898
|
const getColor = (index) => colors[index % colors.length];
|
|
20857
|
-
|
|
20858
|
-
|
|
20899
|
+
const originalItems = this.attribute.items;
|
|
20900
|
+
const firstItem = originalItems[0];
|
|
20901
|
+
const lastItem = originalItems[originalItems.length - 1];
|
|
20902
|
+
const noZero = !isNumberClose(firstItem.value, 0) && !isNumberClose(lastItem.value, 0);
|
|
20903
|
+
const noOne = !isNumberClose(firstItem.value, 1) && !isNumberClose(lastItem.value, 1);
|
|
20904
|
+
const allPoints = [];
|
|
20905
|
+
const isDesc = firstItem.value > lastItem.value;
|
|
20906
|
+
if ((isDesc && noOne) || (!isDesc && noZero)) {
|
|
20907
|
+
allPoints.push(this.getGridPointsByValue(isDesc ? 1 : 0));
|
|
20908
|
+
}
|
|
20909
|
+
items.forEach((item) => {
|
|
20910
|
+
allPoints.push(item.points);
|
|
20911
|
+
});
|
|
20912
|
+
if ((isDesc && noZero) || (!isDesc && noOne)) {
|
|
20913
|
+
allPoints.push(this.getGridPointsByValue(isDesc ? 0 : 1));
|
|
20914
|
+
}
|
|
20915
|
+
for (let index = 0; index < allPoints.length - 1; index++) {
|
|
20916
|
+
const prev = allPoints[index];
|
|
20917
|
+
const curr = allPoints[index + 1];
|
|
20859
20918
|
const path = getRegionPath(prev, curr, gridAttrs);
|
|
20860
20919
|
const shape = graphicCreator.path({
|
|
20861
20920
|
path,
|
|
@@ -20941,6 +21000,10 @@ class LineAxisGrid extends BaseGrid {
|
|
|
20941
21000
|
}
|
|
20942
21001
|
return gridPoints;
|
|
20943
21002
|
}
|
|
21003
|
+
getGridPointsByValue(value) {
|
|
21004
|
+
const basePoint = this.getTickCoord(value);
|
|
21005
|
+
return this._getGridPoint(this.attribute.type, basePoint);
|
|
21006
|
+
}
|
|
20944
21007
|
getGridAttribute(isSubGrid) {
|
|
20945
21008
|
const { type: gridType, alignWithLabel = true } = this.attribute;
|
|
20946
21009
|
const tickSegment = this._parseTickSegment();
|
|
@@ -20969,7 +21032,7 @@ class LineAxisGrid extends BaseGrid {
|
|
|
20969
21032
|
else {
|
|
20970
21033
|
gridAttribute = merge({}, this.attribute, this.attribute.subGrid);
|
|
20971
21034
|
const subGridItems = [];
|
|
20972
|
-
const { count: subCount = 4 } =
|
|
21035
|
+
const { count: subCount = 4 } = gridAttribute;
|
|
20973
21036
|
const tickLineCount = this.data.length;
|
|
20974
21037
|
if (tickLineCount >= 2) {
|
|
20975
21038
|
const points = this._getPointsOfSubGrid(tickSegment, alignWithLabel);
|
|
@@ -20978,23 +21041,22 @@ class LineAxisGrid extends BaseGrid {
|
|
|
20978
21041
|
const next = points[i + 1];
|
|
20979
21042
|
subGridItems.push({
|
|
20980
21043
|
id: `sub-${i}-0`,
|
|
20981
|
-
points: this.
|
|
21044
|
+
points: this.getGridPointsByValue(pre.value),
|
|
20982
21045
|
datum: {}
|
|
20983
21046
|
});
|
|
20984
21047
|
for (let j = 0; j < subCount; j++) {
|
|
20985
21048
|
const percent = (j + 1) / (subCount + 1);
|
|
20986
21049
|
const value = (1 - percent) * pre.value + percent * next.value;
|
|
20987
|
-
const point = this.getTickCoord(value);
|
|
20988
21050
|
subGridItems.push({
|
|
20989
21051
|
id: `sub-${i}-${j + 1}`,
|
|
20990
|
-
points: this.
|
|
21052
|
+
points: this.getGridPointsByValue(value),
|
|
20991
21053
|
datum: {}
|
|
20992
21054
|
});
|
|
20993
21055
|
}
|
|
20994
21056
|
if (i === points.length - 2) {
|
|
20995
21057
|
subGridItems.push({
|
|
20996
21058
|
id: `sub-${i}-${subCount + 1}`,
|
|
20997
|
-
points: this.
|
|
21059
|
+
points: this.getGridPointsByValue(next.value),
|
|
20998
21060
|
datum: {}
|
|
20999
21061
|
});
|
|
21000
21062
|
}
|
|
@@ -21012,6 +21074,11 @@ class CircleAxisGrid extends BaseGrid {
|
|
|
21012
21074
|
constructor(attributes, options) {
|
|
21013
21075
|
super((options === null || options === void 0 ? void 0 : options.skipDefault) ? attributes : merge({}, BaseGrid.defaultAttributes, attributes), options);
|
|
21014
21076
|
}
|
|
21077
|
+
getGridPointsByValue(value) {
|
|
21078
|
+
const basePoint = this.getTickCoord(value);
|
|
21079
|
+
const { radius, innerRadius = 0 } = this.attribute;
|
|
21080
|
+
return [basePoint, this.getVerticalCoord(basePoint, radius - innerRadius, true)];
|
|
21081
|
+
}
|
|
21015
21082
|
getGridAttribute(isSubGrid) {
|
|
21016
21083
|
let gridAttribute;
|
|
21017
21084
|
let items = [];
|
|
@@ -24517,7 +24584,7 @@ class DiscreteLegend extends LegendBase {
|
|
|
24517
24584
|
let focusSpace = 0;
|
|
24518
24585
|
if (focus) {
|
|
24519
24586
|
const focusSize = get(focusIconStyle, 'size', DEFAULT_SHAPE_SIZE);
|
|
24520
|
-
focusShape = graphicCreator.symbol(Object.assign(Object.assign({ x: 0, y: -focusSize / 2 - 1, strokeBoundsBuffer: 0 }, focusIconStyle), { visible: true, pickMode: 'imprecise'
|
|
24587
|
+
focusShape = graphicCreator.symbol(Object.assign(Object.assign({ x: 0, y: -focusSize / 2 - 1, strokeBoundsBuffer: 0, boundsPadding: parsedPadding }, focusIconStyle), { visible: true, pickMode: 'imprecise' }));
|
|
24521
24588
|
this._appendDataToShape(focusShape, LEGEND_ELEMENT_NAME.focus, item, itemGroup);
|
|
24522
24589
|
focusSpace = focusSize;
|
|
24523
24590
|
}
|
|
@@ -24700,15 +24767,6 @@ class DiscreteLegend extends LegendBase {
|
|
|
24700
24767
|
: (e) => {
|
|
24701
24768
|
return e.detail.current;
|
|
24702
24769
|
};
|
|
24703
|
-
const onScroll = (e) => {
|
|
24704
|
-
e.preventDefault();
|
|
24705
|
-
const scrollComponent = this._pagerComponent;
|
|
24706
|
-
const preScrollRange = scrollComponent.getScrollRange();
|
|
24707
|
-
const { direction } = scrollComponent.attribute;
|
|
24708
|
-
const { width, height } = scrollComponent.getSliderRenderBounds();
|
|
24709
|
-
const currentScrollValue = direction === 'vertical' ? e.deltaY / height : e.deltaX / width;
|
|
24710
|
-
scrollComponent.setScrollRange([preScrollRange[0] + currentScrollValue, preScrollRange[1] + currentScrollValue], true);
|
|
24711
|
-
};
|
|
24712
24770
|
const onPaging = (e) => {
|
|
24713
24771
|
const newPage = pageParser(e);
|
|
24714
24772
|
if (newPage === this._itemContext.currentPage) {
|
|
@@ -24733,9 +24791,6 @@ class DiscreteLegend extends LegendBase {
|
|
|
24733
24791
|
if (this._itemContext.isScrollbar) {
|
|
24734
24792
|
this._pagerComponent.addEventListener('scrollDrag', onPaging);
|
|
24735
24793
|
this._pagerComponent.addEventListener('scrollUp', onPaging);
|
|
24736
|
-
if (this.attribute.pager.roamScroll) {
|
|
24737
|
-
this.addEventListener('wheel', onScroll);
|
|
24738
|
-
}
|
|
24739
24794
|
}
|
|
24740
24795
|
else {
|
|
24741
24796
|
this._pagerComponent.addEventListener('toPrev', onPaging);
|
|
@@ -29014,6 +29069,6 @@ EmptyTip.defaultAttributes = {
|
|
|
29014
29069
|
}
|
|
29015
29070
|
};
|
|
29016
29071
|
|
|
29017
|
-
const version = "0.20.6-alpha.
|
|
29072
|
+
const version = "0.20.6-alpha.1";
|
|
29018
29073
|
|
|
29019
29074
|
export { AXIS_ELEMENT_NAME, AbstractComponent, ArcInfo, ArcLabel, ArcSegment, AxisStateValue, BasePlayer, Brush, CheckBox, CircleAxis, CircleAxisGrid, CircleCrosshair, ColorContinuousLegend, ContinuousPlayer, DEFAULT_ITEM_SPACE_COL, DEFAULT_ITEM_SPACE_ROW, DEFAULT_LABEL_SPACE, DEFAULT_PAGER_SPACE, DEFAULT_SHAPE_SIZE, DEFAULT_SHAPE_SPACE, DEFAULT_STATES$1 as DEFAULT_STATES, DEFAULT_TITLE_SPACE, DEFAULT_VALUE_SPACE, DataLabel, DataZoom, DataZoomActiveTag, DirectionEnum, DiscreteLegend, DiscretePlayer, EmptyTip, GroupTransition, IMarkAreaLabelPosition, IMarkCommonArcLabelPosition, IMarkLineLabelPosition, IMarkPointItemPosition, IOperateType, Indicator, LEGEND_ELEMENT_NAME, LabelBase, LegendEvent, LegendStateValue, LineAxis, LineAxisGrid, LineCrosshair, LineLabel, LinkPath, MarkArcArea, MarkArcLine, MarkArea, MarkLine, MarkPoint, Pager, PlayerEventEnum, PolygonCrosshair, PopTip, Radio, RectCrosshair, RectLabel, SLIDER_ELEMENT_NAME, ScrollBar, SectorCrosshair, Segment, SizeContinuousLegend, Slider, SymbolLabel, Tag, Timeline, Title, Tooltip, TopZIndex, VTag, alignTextInLine, angle, angleLabelOrientAttribute, angleTo, cartesianTicks, clampRadian, computeOffsetForlimit, continuousTicks, contrastAccessibilityChecker, convertDomainToTickData, createTextGraphicByType, deltaXYToAngle, fuzzyEqualNumber, getAxisBreakSymbolAttrs, getCircleLabelPosition, getCirclePoints, getCircleVerticalVector, getElMap, getHorizontalPath, getMarksByName, getNoneGroupMarksByName, getPolarAngleLabelPosition, getPolygonPath, getSizeHandlerPath, getTextAlignAttrOfVerticalDir, getTextType, getVerticalCoord, getVerticalPath, htmlAttributeTransform, initTextMeasure, isInRange, isPostiveXAxis, isRichText, isVisible, labelSmartInvert, length, limitShapeInBounds, linearDiscreteTicks, loadPoptip, measureTextSize, normalize, polarAngleAxisDiscreteTicks, polarTicks, reactAttributeTransform, registerArcDataLabel, registerLineDataLabel, registerMarkArcAreaAnimate, registerMarkArcLineAnimate, registerMarkAreaAnimate, registerMarkLineAnimate, registerMarkPointAnimate, registerRectDataLabel, registerSymbolDataLabel, removeRepeatPoint, richTextAttributeTransform, scale, setPoptipTheme, smartInvertStrategy, tan2AngleToAngle, ticks, traverseGroup, version };
|