@visactor/vrender-components 0.17.2-alpha.1 → 0.17.2-alpha.3
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/base.js +12 -14
- package/cjs/axis/base.js.map +1 -1
- package/cjs/axis/circle.js +4 -2
- package/cjs/axis/circle.js.map +1 -1
- package/cjs/axis/grid/base.js +4 -6
- package/cjs/axis/grid/base.js.map +1 -1
- package/cjs/axis/grid/circle.js +3 -1
- package/cjs/axis/grid/circle.js.map +1 -1
- package/cjs/axis/grid/line.js +3 -1
- package/cjs/axis/grid/line.js.map +1 -1
- package/cjs/axis/line.d.ts +1 -2
- package/cjs/axis/line.js +5 -4
- package/cjs/axis/line.js.map +1 -1
- package/cjs/axis/register.d.ts +4 -0
- package/cjs/axis/register.js +32 -0
- package/cjs/axis/register.js.map +1 -0
- package/cjs/brush/brush.js +4 -3
- package/cjs/brush/brush.js.map +1 -1
- package/cjs/brush/register.d.ts +1 -0
- package/cjs/brush/register.js +14 -0
- package/cjs/brush/register.js.map +1 -0
- package/cjs/brush/type.js +1 -2
- package/cjs/checkbox/checkbox.js +3 -1
- package/cjs/checkbox/checkbox.js.map +1 -1
- package/cjs/checkbox/index.js +2 -1
- package/cjs/checkbox/register.d.ts +1 -0
- package/cjs/checkbox/register.js +15 -0
- package/cjs/checkbox/register.js.map +1 -0
- package/cjs/crosshair/circle.js +3 -1
- package/cjs/crosshair/circle.js.map +1 -1
- package/cjs/crosshair/line.js +3 -1
- package/cjs/crosshair/line.js.map +1 -1
- package/cjs/crosshair/polygon.js +3 -1
- package/cjs/crosshair/polygon.js.map +1 -1
- package/cjs/crosshair/rect.js +3 -1
- package/cjs/crosshair/rect.js.map +1 -1
- package/cjs/crosshair/register.d.ts +5 -0
- package/cjs/crosshair/register.js +32 -0
- package/cjs/crosshair/register.js.map +1 -0
- package/cjs/crosshair/sector.js +3 -1
- package/cjs/crosshair/sector.js.map +1 -1
- package/cjs/data-zoom/config.js +1 -2
- package/cjs/data-zoom/data-zoom.js +3 -1
- package/cjs/data-zoom/data-zoom.js.map +1 -1
- package/cjs/data-zoom/register.d.ts +1 -0
- package/cjs/data-zoom/register.js +15 -0
- package/cjs/data-zoom/register.js.map +1 -0
- package/cjs/index.d.ts +1 -1
- package/cjs/index.js +1 -1
- package/cjs/index.js.map +1 -1
- package/cjs/indicator/config.js +2 -1
- package/cjs/indicator/indicator.js +3 -1
- package/cjs/indicator/indicator.js.map +1 -1
- package/cjs/indicator/register.d.ts +1 -0
- package/cjs/indicator/register.js +14 -0
- package/cjs/indicator/register.js.map +1 -0
- package/cjs/label/arc.d.ts +1 -2
- package/cjs/label/arc.js +7 -4
- package/cjs/label/arc.js.map +1 -1
- package/cjs/label/area.js +7 -2
- package/cjs/label/area.js.map +1 -1
- package/cjs/label/base.js +7 -5
- package/cjs/label/base.js.map +1 -1
- package/cjs/label/index.js +1 -2
- package/cjs/label/line-data.js +7 -2
- package/cjs/label/line-data.js.map +1 -1
- package/cjs/label/line.js +7 -2
- package/cjs/label/line.js.map +1 -1
- package/cjs/label/polygon.js +7 -2
- package/cjs/label/polygon.js.map +1 -1
- package/cjs/label/rect.js +7 -2
- package/cjs/label/rect.js.map +1 -1
- package/cjs/label/register.d.ts +1 -0
- package/cjs/label/register.js +15 -0
- package/cjs/label/register.js.map +1 -0
- package/cjs/label/symbol.js +7 -2
- package/cjs/label/symbol.js.map +1 -1
- package/cjs/label/type.js +2 -1
- package/cjs/label/util.js +1 -1
- package/cjs/legend/base.js +2 -2
- package/cjs/legend/base.js.map +1 -1
- package/cjs/legend/color/color.js +3 -1
- package/cjs/legend/color/color.js.map +1 -1
- package/cjs/legend/constant.js +1 -1
- package/cjs/legend/discrete/discrete.js +12 -12
- package/cjs/legend/discrete/discrete.js.map +1 -1
- package/cjs/legend/index.js +1 -1
- package/cjs/legend/register.d.ts +3 -0
- package/cjs/legend/register.js +27 -0
- package/cjs/legend/register.js.map +1 -0
- package/cjs/legend/size/size.js +5 -4
- package/cjs/legend/size/size.js.map +1 -1
- package/cjs/legend/type.js +1 -1
- package/cjs/legend/util.js +1 -1
- package/cjs/link-path/index.js +1 -1
- package/cjs/link-path/link-path.js +2 -2
- package/cjs/link-path/link-path.js.map +1 -1
- package/cjs/link-path/register.d.ts +1 -0
- package/cjs/link-path/register.js +14 -0
- package/cjs/link-path/register.js.map +1 -0
- package/cjs/marker/area.js +4 -3
- package/cjs/marker/area.js.map +1 -1
- package/cjs/marker/base.js +3 -3
- package/cjs/marker/base.js.map +1 -1
- package/cjs/marker/line.js +3 -1
- package/cjs/marker/line.js.map +1 -1
- package/cjs/marker/point.js +5 -5
- package/cjs/marker/point.js.map +1 -1
- package/cjs/marker/register.d.ts +3 -0
- package/cjs/marker/register.js +28 -0
- package/cjs/marker/register.js.map +1 -0
- package/cjs/pager/pager.js +7 -6
- package/cjs/pager/pager.js.map +1 -1
- package/cjs/pager/register.d.ts +1 -0
- package/cjs/pager/register.js +14 -0
- package/cjs/pager/register.js.map +1 -0
- package/cjs/player/continuous-player.js +3 -1
- package/cjs/player/continuous-player.js.map +1 -1
- package/cjs/player/discrete-player.js +3 -1
- package/cjs/player/discrete-player.js.map +1 -1
- package/cjs/player/register.d.ts +2 -0
- package/cjs/player/register.js +23 -0
- package/cjs/player/register.js.map +1 -0
- package/cjs/poptip/index.d.ts +1 -1
- package/cjs/poptip/index.js +16 -2
- package/cjs/poptip/index.js.map +1 -1
- package/cjs/poptip/poptip.js +3 -1
- package/cjs/poptip/poptip.js.map +1 -1
- package/cjs/poptip/register.d.ts +1 -0
- package/cjs/poptip/register.js +9 -3
- package/cjs/poptip/register.js.map +1 -1
- package/cjs/scrollbar/index.d.ts +0 -1
- package/cjs/scrollbar/index.js +1 -2
- package/cjs/scrollbar/index.js.map +1 -1
- package/cjs/scrollbar/register.d.ts +1 -0
- package/cjs/scrollbar/register.js +7 -3
- package/cjs/scrollbar/register.js.map +1 -1
- package/cjs/scrollbar/scrollbar-plugin.js.map +1 -1
- package/cjs/scrollbar/scrollbar.js +3 -1
- package/cjs/scrollbar/scrollbar.js.map +1 -1
- package/cjs/segment/register.d.ts +1 -0
- package/cjs/segment/register.js +15 -0
- package/cjs/segment/register.js.map +1 -0
- package/cjs/segment/segment.js +6 -4
- package/cjs/segment/segment.js.map +1 -1
- package/cjs/slider/register.d.ts +1 -0
- package/cjs/slider/register.js +15 -0
- package/cjs/slider/register.js.map +1 -0
- package/cjs/slider/slider.js +13 -12
- package/cjs/slider/slider.js.map +1 -1
- package/cjs/tag/register.d.ts +1 -0
- package/cjs/tag/register.js +15 -0
- package/cjs/tag/register.js.map +1 -0
- package/cjs/tag/tag.js +3 -1
- package/cjs/tag/tag.js.map +1 -1
- package/cjs/title/register.d.ts +1 -0
- package/cjs/title/register.js +15 -0
- package/cjs/title/register.js.map +1 -0
- package/cjs/title/title.js +3 -1
- package/cjs/title/title.js.map +1 -1
- package/cjs/tooltip/register.d.ts +1 -0
- package/cjs/tooltip/register.js +15 -0
- package/cjs/tooltip/register.js.map +1 -0
- package/cjs/tooltip/tooltip.js +3 -1
- package/cjs/tooltip/tooltip.js.map +1 -1
- package/cjs/util/text.d.ts +2 -2
- package/dist/index.js +2675 -3425
- package/dist/index.min.js +1 -1
- package/es/axis/base.js +11 -11
- package/es/axis/base.js.map +1 -1
- package/es/axis/circle.js +6 -2
- package/es/axis/circle.js.map +1 -1
- package/es/axis/grid/base.js +5 -5
- package/es/axis/grid/base.js.map +1 -1
- package/es/axis/grid/circle.js +4 -0
- package/es/axis/grid/circle.js.map +1 -1
- package/es/axis/grid/line.js +4 -0
- package/es/axis/grid/line.js.map +1 -1
- package/es/axis/line.d.ts +1 -2
- package/es/axis/line.js +7 -3
- package/es/axis/line.js.map +1 -1
- package/es/axis/register.d.ts +4 -0
- package/es/axis/register.js +22 -0
- package/es/axis/register.js.map +1 -0
- package/es/brush/brush.js +6 -2
- package/es/brush/brush.js.map +1 -1
- package/es/brush/register.d.ts +1 -0
- package/es/brush/register.js +6 -0
- package/es/brush/register.js.map +1 -0
- package/es/brush/type.js +1 -2
- package/es/checkbox/checkbox.js +4 -0
- package/es/checkbox/checkbox.js.map +1 -1
- package/es/checkbox/index.js +2 -1
- package/es/checkbox/register.d.ts +1 -0
- package/es/checkbox/register.js +6 -0
- package/es/checkbox/register.js.map +1 -0
- package/es/crosshair/circle.js +4 -0
- package/es/crosshair/circle.js.map +1 -1
- package/es/crosshair/line.js +4 -0
- package/es/crosshair/line.js.map +1 -1
- package/es/crosshair/polygon.js +4 -0
- package/es/crosshair/polygon.js.map +1 -1
- package/es/crosshair/rect.js +4 -0
- package/es/crosshair/rect.js.map +1 -1
- package/es/crosshair/register.d.ts +5 -0
- package/es/crosshair/register.js +22 -0
- package/es/crosshair/register.js.map +1 -0
- package/es/crosshair/sector.js +4 -0
- package/es/crosshair/sector.js.map +1 -1
- package/es/data-zoom/config.js +1 -2
- package/es/data-zoom/data-zoom.js +4 -0
- package/es/data-zoom/data-zoom.js.map +1 -1
- package/es/data-zoom/register.d.ts +1 -0
- package/es/data-zoom/register.js +8 -0
- package/es/data-zoom/register.js.map +1 -0
- package/es/index.d.ts +1 -1
- package/es/index.js +1 -1
- package/es/index.js.map +1 -1
- package/es/indicator/config.js +2 -1
- package/es/indicator/indicator.js +4 -0
- package/es/indicator/indicator.js.map +1 -1
- package/es/indicator/register.d.ts +1 -0
- package/es/indicator/register.js +6 -0
- package/es/indicator/register.js.map +1 -0
- package/es/label/arc.d.ts +1 -2
- package/es/label/arc.js +8 -4
- package/es/label/arc.js.map +1 -1
- package/es/label/area.js +7 -2
- package/es/label/area.js.map +1 -1
- package/es/label/base.js +9 -5
- package/es/label/base.js.map +1 -1
- package/es/label/index.js +1 -2
- package/es/label/line-data.js +7 -2
- package/es/label/line-data.js.map +1 -1
- package/es/label/line.js +7 -2
- package/es/label/line.js.map +1 -1
- package/es/label/polygon.js +7 -2
- package/es/label/polygon.js.map +1 -1
- package/es/label/rect.js +7 -2
- package/es/label/rect.js.map +1 -1
- package/es/label/register.d.ts +1 -0
- package/es/label/register.js +6 -0
- package/es/label/register.js.map +1 -0
- package/es/label/symbol.js +7 -2
- package/es/label/symbol.js.map +1 -1
- package/es/label/type.js +2 -1
- package/es/label/util.js +1 -1
- package/es/legend/base.js +3 -3
- package/es/legend/base.js.map +1 -1
- package/es/legend/color/color.js +4 -0
- package/es/legend/color/color.js.map +1 -1
- package/es/legend/constant.js +1 -1
- package/es/legend/discrete/discrete.js +14 -10
- package/es/legend/discrete/discrete.js.map +1 -1
- package/es/legend/index.js +1 -1
- package/es/legend/register.d.ts +3 -0
- package/es/legend/register.js +24 -0
- package/es/legend/register.js.map +1 -0
- package/es/legend/size/size.js +7 -3
- package/es/legend/size/size.js.map +1 -1
- package/es/legend/type.js +1 -1
- package/es/legend/util.js +1 -1
- package/es/link-path/index.js +1 -1
- package/es/link-path/link-path.js +4 -0
- package/es/link-path/link-path.js.map +1 -1
- package/es/link-path/register.d.ts +1 -0
- package/es/link-path/register.js +6 -0
- package/es/link-path/register.js.map +1 -0
- package/es/marker/area.js +6 -2
- package/es/marker/area.js.map +1 -1
- package/es/marker/base.js +4 -4
- package/es/marker/base.js.map +1 -1
- package/es/marker/line.js +4 -0
- package/es/marker/line.js.map +1 -1
- package/es/marker/point.js +7 -3
- package/es/marker/point.js.map +1 -1
- package/es/marker/register.d.ts +3 -0
- package/es/marker/register.js +22 -0
- package/es/marker/register.js.map +1 -0
- package/es/pager/pager.js +9 -5
- package/es/pager/pager.js.map +1 -1
- package/es/pager/register.d.ts +1 -0
- package/es/pager/register.js +6 -0
- package/es/pager/register.js.map +1 -0
- package/es/player/continuous-player.js +4 -0
- package/es/player/continuous-player.js.map +1 -1
- package/es/player/discrete-player.js +4 -0
- package/es/player/discrete-player.js.map +1 -1
- package/es/player/register.d.ts +2 -0
- package/es/player/register.js +16 -0
- package/es/player/register.js.map +1 -0
- package/es/poptip/index.d.ts +1 -1
- package/es/poptip/index.js +1 -1
- package/es/poptip/index.js.map +1 -1
- package/es/poptip/poptip.js +4 -0
- package/es/poptip/poptip.js.map +1 -1
- package/es/poptip/register.d.ts +1 -0
- package/es/poptip/register.js +6 -0
- package/es/poptip/register.js.map +1 -1
- package/es/scrollbar/index.d.ts +0 -1
- package/es/scrollbar/index.js +0 -2
- package/es/scrollbar/index.js.map +1 -1
- package/es/scrollbar/register.d.ts +1 -0
- package/es/scrollbar/register.js +6 -0
- package/es/scrollbar/register.js.map +1 -1
- package/es/scrollbar/scrollbar-plugin.js.map +1 -1
- package/es/scrollbar/scrollbar.js +4 -0
- package/es/scrollbar/scrollbar.js.map +1 -1
- package/es/segment/register.d.ts +1 -0
- package/es/segment/register.js +6 -0
- package/es/segment/register.js.map +1 -0
- package/es/segment/segment.js +8 -4
- package/es/segment/segment.js.map +1 -1
- package/es/slider/register.d.ts +1 -0
- package/es/slider/register.js +6 -0
- package/es/slider/register.js.map +1 -0
- package/es/slider/slider.js +15 -11
- package/es/slider/slider.js.map +1 -1
- package/es/tag/register.d.ts +1 -0
- package/es/tag/register.js +6 -0
- package/es/tag/register.js.map +1 -0
- package/es/tag/tag.js +4 -0
- package/es/tag/tag.js.map +1 -1
- package/es/title/register.d.ts +1 -0
- package/es/title/register.js +6 -0
- package/es/title/register.js.map +1 -0
- package/es/title/title.js +4 -0
- package/es/title/title.js.map +1 -1
- package/es/tooltip/register.d.ts +1 -0
- package/es/tooltip/register.js +6 -0
- package/es/tooltip/register.js.map +1 -0
- package/es/tooltip/tooltip.js +4 -0
- package/es/tooltip/tooltip.js.map +1 -1
- package/es/util/text.d.ts +2 -2
- package/package.json +5 -4
package/es/axis/grid/line.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../src/axis/grid/line.ts"],"names":[],"mappings":"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","file":"line.js","sourcesContent":["/**\n * @description 直线型坐标轴的网格线\n * - `type: 'line'` 用于直角坐标系下的坐标轴网格线绘制\n * - `type: 'circle'` 或者 `type: 'polygon'` 用于极坐标半径轴的网格线绘制\n */\nimport type { IPointLike } from '@visactor/vutils';\nimport { PointService, merge, polarToCartesian, mixin } from '@visactor/vutils';\nimport { BaseGrid } from './base';\nimport type {\n GridItem,\n LineAxisGridAttributes,\n LineGridOfLineAxisAttributes,\n PolarGridOfLineAxisAttributes\n} from './type';\nimport type { Point } from '../../core/type';\nimport { POLAR_START_ANGLE, POLAR_END_ANGLE } from '../../constant';\nimport type { TransformedAxisItem } from '../type';\nimport { LineAxisMixin } from '../mixin/line';\nimport type { ComponentOptions } from '../../interface';\n\nfunction getCirclePoints(center: Point, count: number, radius: number, startAngle: number, endAngle: number) {\n const points: Point[] = [];\n const range = endAngle - startAngle;\n for (let i = 0; i < count; i++) {\n const angle = startAngle + (i * range) / count;\n points.push(polarToCartesian(center, radius, angle));\n }\n return points;\n}\n\nexport interface LineAxisGrid\n extends Pick<LineAxisMixin, 'isInValidValue' | 'getTickCoord' | 'getVerticalVector'>,\n BaseGrid<LineAxisGridAttributes> {}\n\nexport class LineAxisGrid extends BaseGrid<LineAxisGridAttributes> {\n constructor(attributes: LineAxisGridAttributes, options?: ComponentOptions) {\n super(options?.skipDefault ? attributes : merge({}, BaseGrid.defaultAttributes, attributes), options);\n }\n\n private _getGridPoint(gridType: string, point: IPointLike): Point[] {\n let gridPoints;\n if (gridType === 'line') {\n const { length } = this.attribute as LineGridOfLineAxisAttributes;\n const endPoint = this.getVerticalCoord(point, length as number, true);\n\n gridPoints = [point, endPoint];\n } else if (gridType === 'circle' || gridType === 'polygon') {\n const {\n center,\n sides = 6,\n startAngle = POLAR_START_ANGLE,\n endAngle = POLAR_END_ANGLE\n } = this.attribute as PolarGridOfLineAxisAttributes;\n const distance = PointService.distancePP(center as Point, point);\n gridPoints = getCirclePoints(center as Point, sides as number, distance, startAngle, endAngle);\n }\n\n return gridPoints;\n }\n\n protected getGridAttribute(isSubGrid: boolean) {\n const { type: gridType, alignWithLabel = true } = this.attribute;\n\n let tickSegment = 1;\n const count = this.data.length;\n if (count >= 2) {\n tickSegment = this.data[1].value - this.data[0].value;\n }\n let gridAttribute;\n let items: GridItem[] = [];\n if (!isSubGrid) {\n gridAttribute = this.attribute;\n // 计算 grid Items\n const gridItems: GridItem[] = [];\n this.data.forEach(item => {\n let { point } = item;\n\n if (!alignWithLabel) {\n // tickLine 不同 tick 对齐时需要调整 point\n const value = item.value - tickSegment / 2;\n if (this.isInValidValue(value)) {\n return;\n }\n point = this.getTickCoord(value);\n }\n\n gridItems.push({\n id: item.label,\n datum: item,\n points: this._getGridPoint(gridType, point)\n });\n });\n items = gridItems;\n } else {\n // 渲染 subGrid\n gridAttribute = merge({}, this.attribute, this.attribute.subGrid);\n // 计算 grid Items\n const subGridItems: GridItem[] = [];\n const { count: subCount = 4 } = this.attribute.subGrid || {};\n const tickLineCount = this.data.length;\n // 刻度线的数量大于 2 时,才绘制子刻度\n if (tickLineCount >= 2) {\n const points: { value: number }[] = [];\n this.data.forEach((item: TransformedAxisItem) => {\n let tickValue = item.value;\n if (!alignWithLabel) {\n // tickLine 不同 tick 对齐时需要调整 point\n const value = item.value - tickSegment / 2;\n if (this.isInValidValue(value)) {\n return;\n }\n tickValue = value;\n }\n points.push({\n value: tickValue\n });\n });\n\n for (let i = 0; i < points.length - 1; i++) {\n const pre = points[i];\n const next = points[i + 1];\n subGridItems.push({\n id: `sub-${i}-0`,\n points: this._getGridPoint(gridType, this.getTickCoord(pre.value)),\n // TODO: 其实这里也需要,后续需要考虑怎么挂上 data\n datum: {}\n });\n for (let j = 0; j < subCount; j++) {\n const percent = (j + 1) / (subCount + 1);\n const value = (1 - percent) * pre.value + percent * next.value;\n const point = this.getTickCoord(value);\n subGridItems.push({\n id: `sub-${i}-${j + 1}`,\n points: this._getGridPoint(gridType, point),\n // TODO: 其实这里也需要,后续需要考虑怎么挂上 data\n datum: {}\n });\n }\n if (i === points.length - 2) {\n subGridItems.push({\n id: `sub-${i}-${subCount + 1}`,\n points: this._getGridPoint(gridType, this.getTickCoord(next.value)),\n // TODO: 其实这里也需要,后续需要考虑怎么挂上 data\n datum: {}\n });\n }\n }\n items = subGridItems;\n }\n }\n\n return {\n ...gridAttribute,\n items\n };\n }\n}\n\nmixin(LineAxisGrid, LineAxisMixin);\n"]}
|
|
1
|
+
{"version":3,"sources":["../src/axis/grid/line.ts"],"names":[],"mappings":"AAMA,OAAO,EAAE,YAAY,EAAE,KAAK,EAAE,gBAAgB,EAAE,KAAK,EAAE,MAAM,kBAAkB,CAAC;AAChF,OAAO,EAAE,QAAQ,EAAE,MAAM,QAAQ,CAAC;AAQlC,OAAO,EAAE,iBAAiB,EAAE,eAAe,EAAE,MAAM,gBAAgB,CAAC;AAEpE,OAAO,EAAE,aAAa,EAAE,MAAM,eAAe,CAAC;AAE9C,OAAO,EAAE,yBAAyB,EAAE,MAAM,aAAa,CAAC;AAExD,SAAS,eAAe,CAAC,MAAa,EAAE,KAAa,EAAE,MAAc,EAAE,UAAkB,EAAE,QAAgB;IACzG,MAAM,MAAM,GAAY,EAAE,CAAC;IAC3B,MAAM,KAAK,GAAG,QAAQ,GAAG,UAAU,CAAC;IACpC,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,KAAK,EAAE,CAAC,EAAE,EAAE;QAC9B,MAAM,KAAK,GAAG,UAAU,GAAG,CAAC,CAAC,GAAG,KAAK,CAAC,GAAG,KAAK,CAAC;QAC/C,MAAM,CAAC,IAAI,CAAC,gBAAgB,CAAC,MAAM,EAAE,MAAM,EAAE,KAAK,CAAC,CAAC,CAAC;KACtD;IACD,OAAO,MAAM,CAAC;AAChB,CAAC;AAMD,yBAAyB,EAAE,CAAC;AAC5B,MAAM,OAAO,YAAa,SAAQ,QAAgC;IAChE,YAAY,UAAkC,EAAE,OAA0B;QACxE,KAAK,CAAC,CAAA,OAAO,aAAP,OAAO,uBAAP,OAAO,CAAE,WAAW,EAAC,CAAC,CAAC,UAAU,CAAC,CAAC,CAAC,KAAK,CAAC,EAAE,EAAE,QAAQ,CAAC,iBAAiB,EAAE,UAAU,CAAC,EAAE,OAAO,CAAC,CAAC;IACxG,CAAC;IAEO,aAAa,CAAC,QAAgB,EAAE,KAAiB;QACvD,IAAI,UAAU,CAAC;QACf,IAAI,QAAQ,KAAK,MAAM,EAAE;YACvB,MAAM,EAAE,MAAM,EAAE,GAAG,IAAI,CAAC,SAAyC,CAAC;YAClE,MAAM,QAAQ,GAAG,IAAI,CAAC,gBAAgB,CAAC,KAAK,EAAE,MAAgB,EAAE,IAAI,CAAC,CAAC;YAEtE,UAAU,GAAG,CAAC,KAAK,EAAE,QAAQ,CAAC,CAAC;SAChC;aAAM,IAAI,QAAQ,KAAK,QAAQ,IAAI,QAAQ,KAAK,SAAS,EAAE;YAC1D,MAAM,EACJ,MAAM,EACN,KAAK,GAAG,CAAC,EACT,UAAU,GAAG,iBAAiB,EAC9B,QAAQ,GAAG,eAAe,EAC3B,GAAG,IAAI,CAAC,SAA0C,CAAC;YACpD,MAAM,QAAQ,GAAG,YAAY,CAAC,UAAU,CAAC,MAAe,EAAE,KAAK,CAAC,CAAC;YACjE,UAAU,GAAG,eAAe,CAAC,MAAe,EAAE,KAAe,EAAE,QAAQ,EAAE,UAAU,EAAE,QAAQ,CAAC,CAAC;SAChG;QAED,OAAO,UAAU,CAAC;IACpB,CAAC;IAES,gBAAgB,CAAC,SAAkB;QAC3C,MAAM,EAAE,IAAI,EAAE,QAAQ,EAAE,cAAc,GAAG,IAAI,EAAE,GAAG,IAAI,CAAC,SAAS,CAAC;QAEjE,IAAI,WAAW,GAAG,CAAC,CAAC;QACpB,MAAM,KAAK,GAAG,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC;QAC/B,IAAI,KAAK,IAAI,CAAC,EAAE;YACd,WAAW,GAAG,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,KAAK,GAAG,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC;SACvD;QACD,IAAI,aAAa,CAAC;QAClB,IAAI,KAAK,GAAe,EAAE,CAAC;QAC3B,IAAI,CAAC,SAAS,EAAE;YACd,aAAa,GAAG,IAAI,CAAC,SAAS,CAAC;YAE/B,MAAM,SAAS,GAAe,EAAE,CAAC;YACjC,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,EAAE;gBACvB,IAAI,EAAE,KAAK,EAAE,GAAG,IAAI,CAAC;gBAErB,IAAI,CAAC,cAAc,EAAE;oBAEnB,MAAM,KAAK,GAAG,IAAI,CAAC,KAAK,GAAG,WAAW,GAAG,CAAC,CAAC;oBAC3C,IAAI,IAAI,CAAC,cAAc,CAAC,KAAK,CAAC,EAAE;wBAC9B,OAAO;qBACR;oBACD,KAAK,GAAG,IAAI,CAAC,YAAY,CAAC,KAAK,CAAC,CAAC;iBAClC;gBAED,SAAS,CAAC,IAAI,CAAC;oBACb,EAAE,EAAE,IAAI,CAAC,KAAK;oBACd,KAAK,EAAE,IAAI;oBACX,MAAM,EAAE,IAAI,CAAC,aAAa,CAAC,QAAQ,EAAE,KAAK,CAAC;iBAC5C,CAAC,CAAC;YACL,CAAC,CAAC,CAAC;YACH,KAAK,GAAG,SAAS,CAAC;SACnB;aAAM;YAEL,aAAa,GAAG,KAAK,CAAC,EAAE,EAAE,IAAI,CAAC,SAAS,EAAE,IAAI,CAAC,SAAS,CAAC,OAAO,CAAC,CAAC;YAElE,MAAM,YAAY,GAAe,EAAE,CAAC;YACpC,MAAM,EAAE,KAAK,EAAE,QAAQ,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,SAAS,CAAC,OAAO,IAAI,EAAE,CAAC;YAC7D,MAAM,aAAa,GAAG,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC;YAEvC,IAAI,aAAa,IAAI,CAAC,EAAE;gBACtB,MAAM,MAAM,GAAwB,EAAE,CAAC;gBACvC,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC,IAAyB,EAAE,EAAE;oBAC9C,IAAI,SAAS,GAAG,IAAI,CAAC,KAAK,CAAC;oBAC3B,IAAI,CAAC,cAAc,EAAE;wBAEnB,MAAM,KAAK,GAAG,IAAI,CAAC,KAAK,GAAG,WAAW,GAAG,CAAC,CAAC;wBAC3C,IAAI,IAAI,CAAC,cAAc,CAAC,KAAK,CAAC,EAAE;4BAC9B,OAAO;yBACR;wBACD,SAAS,GAAG,KAAK,CAAC;qBACnB;oBACD,MAAM,CAAC,IAAI,CAAC;wBACV,KAAK,EAAE,SAAS;qBACjB,CAAC,CAAC;gBACL,CAAC,CAAC,CAAC;gBAEH,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,MAAM,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC,EAAE,EAAE;oBAC1C,MAAM,GAAG,GAAG,MAAM,CAAC,CAAC,CAAC,CAAC;oBACtB,MAAM,IAAI,GAAG,MAAM,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC;oBAC3B,YAAY,CAAC,IAAI,CAAC;wBAChB,EAAE,EAAE,OAAO,CAAC,IAAI;wBAChB,MAAM,EAAE,IAAI,CAAC,aAAa,CAAC,QAAQ,EAAE,IAAI,CAAC,YAAY,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC;wBAElE,KAAK,EAAE,EAAE;qBACV,CAAC,CAAC;oBACH,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,QAAQ,EAAE,CAAC,EAAE,EAAE;wBACjC,MAAM,OAAO,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,QAAQ,GAAG,CAAC,CAAC,CAAC;wBACzC,MAAM,KAAK,GAAG,CAAC,CAAC,GAAG,OAAO,CAAC,GAAG,GAAG,CAAC,KAAK,GAAG,OAAO,GAAG,IAAI,CAAC,KAAK,CAAC;wBAC/D,MAAM,KAAK,GAAG,IAAI,CAAC,YAAY,CAAC,KAAK,CAAC,CAAC;wBACvC,YAAY,CAAC,IAAI,CAAC;4BAChB,EAAE,EAAE,OAAO,CAAC,IAAI,CAAC,GAAG,CAAC,EAAE;4BACvB,MAAM,EAAE,IAAI,CAAC,aAAa,CAAC,QAAQ,EAAE,KAAK,CAAC;4BAE3C,KAAK,EAAE,EAAE;yBACV,CAAC,CAAC;qBACJ;oBACD,IAAI,CAAC,KAAK,MAAM,CAAC,MAAM,GAAG,CAAC,EAAE;wBAC3B,YAAY,CAAC,IAAI,CAAC;4BAChB,EAAE,EAAE,OAAO,CAAC,IAAI,QAAQ,GAAG,CAAC,EAAE;4BAC9B,MAAM,EAAE,IAAI,CAAC,aAAa,CAAC,QAAQ,EAAE,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;4BAEnE,KAAK,EAAE,EAAE;yBACV,CAAC,CAAC;qBACJ;iBACF;gBACD,KAAK,GAAG,YAAY,CAAC;aACtB;SACF;QAED,uCACK,aAAa,KAChB,KAAK,IACL;IACJ,CAAC;CACF;AAED,KAAK,CAAC,YAAY,EAAE,aAAa,CAAC,CAAC","file":"line.js","sourcesContent":["/**\n * @description 直线型坐标轴的网格线\n * - `type: 'line'` 用于直角坐标系下的坐标轴网格线绘制\n * - `type: 'circle'` 或者 `type: 'polygon'` 用于极坐标半径轴的网格线绘制\n */\nimport type { IPointLike } from '@visactor/vutils';\nimport { PointService, merge, polarToCartesian, mixin } from '@visactor/vutils';\nimport { BaseGrid } from './base';\nimport type {\n GridItem,\n LineAxisGridAttributes,\n LineGridOfLineAxisAttributes,\n PolarGridOfLineAxisAttributes\n} from './type';\nimport type { Point } from '../../core/type';\nimport { POLAR_START_ANGLE, POLAR_END_ANGLE } from '../../constant';\nimport type { TransformedAxisItem } from '../type';\nimport { LineAxisMixin } from '../mixin/line';\nimport type { ComponentOptions } from '../../interface';\nimport { loadLineAxisGridComponent } from '../register';\n\nfunction getCirclePoints(center: Point, count: number, radius: number, startAngle: number, endAngle: number) {\n const points: Point[] = [];\n const range = endAngle - startAngle;\n for (let i = 0; i < count; i++) {\n const angle = startAngle + (i * range) / count;\n points.push(polarToCartesian(center, radius, angle));\n }\n return points;\n}\n\nexport interface LineAxisGrid\n extends Pick<LineAxisMixin, 'isInValidValue' | 'getTickCoord' | 'getVerticalVector'>,\n BaseGrid<LineAxisGridAttributes> {}\n\nloadLineAxisGridComponent();\nexport class LineAxisGrid extends BaseGrid<LineAxisGridAttributes> {\n constructor(attributes: LineAxisGridAttributes, options?: ComponentOptions) {\n super(options?.skipDefault ? attributes : merge({}, BaseGrid.defaultAttributes, attributes), options);\n }\n\n private _getGridPoint(gridType: string, point: IPointLike): Point[] {\n let gridPoints;\n if (gridType === 'line') {\n const { length } = this.attribute as LineGridOfLineAxisAttributes;\n const endPoint = this.getVerticalCoord(point, length as number, true);\n\n gridPoints = [point, endPoint];\n } else if (gridType === 'circle' || gridType === 'polygon') {\n const {\n center,\n sides = 6,\n startAngle = POLAR_START_ANGLE,\n endAngle = POLAR_END_ANGLE\n } = this.attribute as PolarGridOfLineAxisAttributes;\n const distance = PointService.distancePP(center as Point, point);\n gridPoints = getCirclePoints(center as Point, sides as number, distance, startAngle, endAngle);\n }\n\n return gridPoints;\n }\n\n protected getGridAttribute(isSubGrid: boolean) {\n const { type: gridType, alignWithLabel = true } = this.attribute;\n\n let tickSegment = 1;\n const count = this.data.length;\n if (count >= 2) {\n tickSegment = this.data[1].value - this.data[0].value;\n }\n let gridAttribute;\n let items: GridItem[] = [];\n if (!isSubGrid) {\n gridAttribute = this.attribute;\n // 计算 grid Items\n const gridItems: GridItem[] = [];\n this.data.forEach(item => {\n let { point } = item;\n\n if (!alignWithLabel) {\n // tickLine 不同 tick 对齐时需要调整 point\n const value = item.value - tickSegment / 2;\n if (this.isInValidValue(value)) {\n return;\n }\n point = this.getTickCoord(value);\n }\n\n gridItems.push({\n id: item.label,\n datum: item,\n points: this._getGridPoint(gridType, point)\n });\n });\n items = gridItems;\n } else {\n // 渲染 subGrid\n gridAttribute = merge({}, this.attribute, this.attribute.subGrid);\n // 计算 grid Items\n const subGridItems: GridItem[] = [];\n const { count: subCount = 4 } = this.attribute.subGrid || {};\n const tickLineCount = this.data.length;\n // 刻度线的数量大于 2 时,才绘制子刻度\n if (tickLineCount >= 2) {\n const points: { value: number }[] = [];\n this.data.forEach((item: TransformedAxisItem) => {\n let tickValue = item.value;\n if (!alignWithLabel) {\n // tickLine 不同 tick 对齐时需要调整 point\n const value = item.value - tickSegment / 2;\n if (this.isInValidValue(value)) {\n return;\n }\n tickValue = value;\n }\n points.push({\n value: tickValue\n });\n });\n\n for (let i = 0; i < points.length - 1; i++) {\n const pre = points[i];\n const next = points[i + 1];\n subGridItems.push({\n id: `sub-${i}-0`,\n points: this._getGridPoint(gridType, this.getTickCoord(pre.value)),\n // TODO: 其实这里也需要,后续需要考虑怎么挂上 data\n datum: {}\n });\n for (let j = 0; j < subCount; j++) {\n const percent = (j + 1) / (subCount + 1);\n const value = (1 - percent) * pre.value + percent * next.value;\n const point = this.getTickCoord(value);\n subGridItems.push({\n id: `sub-${i}-${j + 1}`,\n points: this._getGridPoint(gridType, point),\n // TODO: 其实这里也需要,后续需要考虑怎么挂上 data\n datum: {}\n });\n }\n if (i === points.length - 2) {\n subGridItems.push({\n id: `sub-${i}-${subCount + 1}`,\n points: this._getGridPoint(gridType, this.getTickCoord(next.value)),\n // TODO: 其实这里也需要,后续需要考虑怎么挂上 data\n datum: {}\n });\n }\n }\n items = subGridItems;\n }\n }\n\n return {\n ...gridAttribute,\n items\n };\n }\n}\n\nmixin(LineAxisGrid, LineAxisMixin);\n"]}
|
package/es/axis/line.d.ts
CHANGED
|
@@ -1,5 +1,4 @@
|
|
|
1
|
-
import type { TextAlignType } from '@visactor/vrender-core';
|
|
2
|
-
import { type IGroup, type IText, type TextBaselineType } from '@visactor/vrender-core';
|
|
1
|
+
import type { TextAlignType, IGroup, IText, TextBaselineType } from '@visactor/vrender-core';
|
|
3
2
|
import type { TagAttributes } from '../tag';
|
|
4
3
|
import type { LineAxisAttributes, AxisItem } from './type';
|
|
5
4
|
import { AxisBase } from './base';
|
package/es/axis/line.js
CHANGED
|
@@ -10,7 +10,7 @@ var __rest = this && this.__rest || function(s, e) {
|
|
|
10
10
|
|
|
11
11
|
import { get, isNil, merge, isNumberClose, isEmpty, isFunction, isValidNumber, isValid, normalizePadding, mixin, last as peek } from "@visactor/vutils";
|
|
12
12
|
|
|
13
|
-
import {
|
|
13
|
+
import { graphicCreator } from "@visactor/vrender-core";
|
|
14
14
|
|
|
15
15
|
import { Segment } from "../segment";
|
|
16
16
|
|
|
@@ -34,6 +34,10 @@ import { alignAxisLabels } from "../util/align";
|
|
|
34
34
|
|
|
35
35
|
import { LineAxisMixin } from "./mixin/line";
|
|
36
36
|
|
|
37
|
+
import { loadLineAxisComponent } from "./register";
|
|
38
|
+
|
|
39
|
+
loadLineAxisComponent();
|
|
40
|
+
|
|
37
41
|
export class LineAxis extends AxisBase {
|
|
38
42
|
constructor(attributes, options) {
|
|
39
43
|
super((null == options ? void 0 : options.skipDefault) ? attributes : merge({}, LineAxis.defaultAttributes, attributes), options);
|
|
@@ -43,7 +47,7 @@ export class LineAxis extends AxisBase {
|
|
|
43
47
|
super._renderInner(container);
|
|
44
48
|
const {panel: panel} = this.attribute;
|
|
45
49
|
if (panel && panel.visible) {
|
|
46
|
-
const axisContainer = this.axisContainer, axisContainerBounds = axisContainer.AABBBounds, bgRect =
|
|
50
|
+
const axisContainer = this.axisContainer, axisContainerBounds = axisContainer.AABBBounds, bgRect = graphicCreator.rect(Object.assign({
|
|
47
51
|
x: axisContainerBounds.x1,
|
|
48
52
|
y: axisContainerBounds.y1,
|
|
49
53
|
width: axisContainerBounds.width(),
|
|
@@ -213,7 +217,7 @@ export class LineAxis extends AxisBase {
|
|
|
213
217
|
y = axisLabelContainerBounds.y1) : "top" === orient ? (x = axisLabelContainerBounds.x1,
|
|
214
218
|
y = axisLabelContainerBounds.y2 - axisLabelContainerSize) : "bottom" === orient && (x = axisLabelContainerBounds.x1,
|
|
215
219
|
y = axisLabelContainerBounds.y1);
|
|
216
|
-
const bgRect =
|
|
220
|
+
const bgRect = graphicCreator.rect({
|
|
217
221
|
x: x,
|
|
218
222
|
y: y,
|
|
219
223
|
width: isHorizontal ? axisLabelContainerBounds.width() : axisLabelContainerSize,
|
package/es/axis/line.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../src/axis/line.ts"],"names":[],"mappings":"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","file":"line.js","sourcesContent":["/**\n * @description 直线型坐标轴\n */\n// eslint-disable-next-line no-duplicate-imports\nimport {\n get,\n isNil,\n merge,\n isNumberClose,\n isEmpty,\n isFunction,\n isValidNumber,\n isValid,\n normalizePadding,\n mixin,\n last as peek\n} from '@visactor/vutils';\nimport type { TextAlignType } from '@visactor/vrender-core';\n// eslint-disable-next-line no-duplicate-imports\nimport { createRect, type IGroup, type INode, type IText, type TextBaselineType } from '@visactor/vrender-core';\nimport type { SegmentAttributes } from '../segment';\n// eslint-disable-next-line no-duplicate-imports\nimport { Segment } from '../segment';\nimport { angleTo } from '../util/matrix';\nimport type { TagAttributes } from '../tag';\nimport type { LineAttributes, LineAxisAttributes, TitleAttributes, AxisItem } from './type';\nimport { AxisBase } from './base';\nimport { DEFAULT_AXIS_THEME } from './config';\nimport { AXIS_ELEMENT_NAME, DEFAULT_STATES } from './constant';\nimport { measureTextSize } from '../util';\nimport { autoHide as autoHideFunc } from './overlap/auto-hide';\nimport { autoRotate as autoRotateFunc, getXAxisLabelAlign, getYAxisLabelAlign } from './overlap/auto-rotate';\nimport { autoLimit as autoLimitFunc } from './overlap/auto-limit';\nimport { alignAxisLabels } from '../util/align';\nimport { LineAxisMixin } from './mixin/line';\nimport type { ComponentOptions } from '../interface';\n\nexport interface LineAxis\n extends Pick<LineAxisMixin, 'isInValidValue' | 'getTickCoord' | 'getVerticalVector' | 'getRelativeVector'>,\n AxisBase<LineAxisAttributes> {}\n\nexport class LineAxis extends AxisBase<LineAxisAttributes> {\n static defaultAttributes = DEFAULT_AXIS_THEME;\n\n constructor(attributes: LineAxisAttributes, options?: ComponentOptions) {\n super(options?.skipDefault ? attributes : merge({}, LineAxis.defaultAttributes, attributes), options);\n }\n\n protected _renderInner(container: IGroup) {\n super._renderInner(container);\n const { panel } = this.attribute;\n\n // TODO: 目前是通过包围盒绘制,在一些情况下会有那问题,比如圆弧轴、带了箭头的坐标轴等\n // 坐标轴主体 panel\n if (panel && panel.visible) {\n const axisContainer = this.axisContainer;\n const axisContainerBounds = axisContainer.AABBBounds;\n const bgRect = createRect({\n x: axisContainerBounds.x1,\n y: axisContainerBounds.y1,\n width: axisContainerBounds.width(),\n height: axisContainerBounds.height(),\n ...panel.style\n });\n bgRect.name = AXIS_ELEMENT_NAME.background;\n bgRect.id = this._getNodeId('background');\n\n bgRect.states = merge({}, DEFAULT_STATES, panel.state ?? {});\n axisContainer.insertBefore(bgRect, axisContainer.firstChild);\n }\n }\n\n // TODO: break\n protected renderLine(container: IGroup): void {\n const { start, end, line } = this.attribute as LineAxisAttributes;\n const { startSymbol, endSymbol, style, breakRange, breakShape, breakShapeStyle, state, ...restLineAttrs } =\n line as LineAttributes;\n const lineAttrs = {\n points: [start, end],\n startSymbol,\n endSymbol,\n lineStyle: style,\n ...restLineAttrs\n } as SegmentAttributes;\n\n if (!isEmpty(state)) {\n lineAttrs.state = {\n line: merge({}, DEFAULT_STATES, state),\n symbol: merge({}, DEFAULT_STATES, state)\n };\n }\n\n const axisLineGroup = new Segment(lineAttrs);\n axisLineGroup.name = AXIS_ELEMENT_NAME.line;\n axisLineGroup.id = this._getNodeId('line');\n container.add(axisLineGroup as unknown as INode);\n }\n\n // TODO: 太 hack 了,需要静心优化\n protected getTitleAttribute() {\n const {\n position = 'middle',\n space = 4,\n textStyle = {},\n autoRotate = true,\n shape,\n background,\n state,\n ...restAttrs\n } = this.attribute.title as TitleAttributes;\n let percent = 0.5;\n if (position === 'start') {\n percent = 0;\n } else if (position === 'end') {\n percent = 1;\n }\n const { verticalFactor = 1 } = this.attribute;\n const factor = -1 * verticalFactor;\n const point = this.getTickCoord(percent);\n const axisVector = this.getRelativeVector();\n // HACK;\n let labelLength = 0;\n if (this.attribute.label?.visible && this.attribute.label?.inside === false) {\n const space = +get(this.attribute, 'label.space', 4);\n labelLength += space;\n const layerCount = Object.keys(this.axisLabelLayerSize).length;\n if (axisVector[1] === 0) {\n const labelBoundsHeight = this.axisLabelsContainer.AABBBounds.height();\n if (isFinite(labelBoundsHeight)) {\n labelLength += labelBoundsHeight + (layerCount - 1) * space;\n } else {\n labelLength = 0;\n }\n } else {\n if (axisVector[0] === 0) {\n const boundsWidth = this.axisLabelsContainer.AABBBounds.width();\n if (isFinite(boundsWidth)) {\n labelLength += boundsWidth + (layerCount - 1) * space;\n } else {\n labelLength = 0;\n }\n } else {\n // 发生了旋转\n Object.keys(this.axisLabelLayerSize).forEach((layer, index) => {\n labelLength += this.axisLabelLayerSize[layer].width + (index > 0 ? space : 0);\n });\n }\n\n const textAlign = this.axisLabelLayerSize[0].textAlign;\n const isTextAlignStart = textAlign === 'start' || textAlign === 'left';\n const isTextCenter = textAlign === 'center';\n const isReverse = axisVector[1] > 0;\n if (factor === 1) {\n labelLength = isReverse\n ? isTextAlignStart\n ? labelLength\n : isTextCenter\n ? labelLength / 2\n : space\n : isTextAlignStart\n ? space\n : isTextCenter\n ? labelLength / 2\n : labelLength;\n } else {\n labelLength = isReverse\n ? isTextAlignStart\n ? space\n : isTextCenter\n ? labelLength / 2\n : labelLength\n : isTextAlignStart\n ? labelLength\n : isTextCenter\n ? labelLength / 2\n : space;\n }\n }\n }\n\n // 标题都默认朝外\n let tickLength = 0;\n if (this.attribute.tick?.visible && this.attribute.tick?.inside === false) {\n tickLength = this.attribute.tick?.length || 4;\n }\n if (this.attribute.subTick?.visible && this.attribute.subTick?.inside === false) {\n tickLength = Math.max(tickLength, this.attribute.subTick?.length || 2);\n }\n\n const offset = tickLength + labelLength + space;\n const titlePoint = this.getVerticalCoord(point, offset, false); // 标题的点\n const vector = this.getVerticalVector(offset, false, { x: 0, y: 0 });\n\n let { angle } = restAttrs; // 用户设置的是角度\n let textAlign;\n if (position === 'start') {\n textAlign = 'start';\n } else if (position === 'end') {\n textAlign = 'end';\n } else {\n textAlign = 'center';\n }\n let textBaseline;\n if (isNil(angle) && autoRotate) {\n const v1: [number, number] = [1, 0]; // 水平方向的向量\n const radian = angleTo(axisVector, v1, true);\n angle = radian;\n const { verticalFactor = 1 } = this.attribute;\n const factor = -1 * verticalFactor;\n if (factor === 1) {\n textBaseline = 'bottom';\n } else {\n textBaseline = 'top';\n }\n } else {\n // if (isValid(angle)) {\n // angle = degreeToRadian(angle);\n // }\n textAlign = this.getTextAlign(vector as number[]);\n textBaseline = this.getTextBaseline(vector as number[], false);\n }\n\n const attrs: TagAttributes = {\n ...titlePoint,\n ...restAttrs,\n textStyle: {\n // @ts-ignore\n textAlign,\n // @ts-ignore\n textBaseline,\n ...textStyle\n },\n state: {\n text: merge({}, DEFAULT_STATES, state?.text),\n shape: merge({}, DEFAULT_STATES, state?.shape),\n panel: merge({}, DEFAULT_STATES, state?.background)\n }\n };\n attrs.angle = angle;\n\n if (shape && shape.visible) {\n attrs.shape = {\n visible: true,\n ...shape.style\n };\n if (shape.space) {\n attrs.space = shape.space;\n }\n }\n\n if (background && background.visible) {\n attrs.panel = {\n visible: true,\n ...background.style\n };\n }\n\n return attrs;\n }\n\n protected getTextBaseline(vector: number[], inside?: boolean): TextBaselineType {\n let base: TextBaselineType = 'middle';\n const { verticalFactor = 1 } = this.attribute;\n const factor = (inside ? 1 : -1) * verticalFactor;\n if (isNumberClose(vector[1], 0)) {\n if (isNumberClose(vector[0], 0) && !Object.is(vector[0], -0) && !Object.is(vector[1], -0)) {\n base = factor === 1 ? 'bottom' : 'top';\n } else {\n base = 'middle';\n }\n } else if (vector[1] > 0) {\n base = 'top';\n } else if (vector[1] < 0) {\n base = 'bottom';\n }\n return base;\n }\n\n protected getLabelAlign(\n vector: [number, number],\n inside?: boolean,\n angle?: number\n ): { textAlign: TextAlignType; textBaseline: TextBaselineType } {\n const orient = this.attribute.orient;\n if (isValidNumber(angle)) {\n if (orient === 'top' || orient === 'bottom') {\n return getXAxisLabelAlign(orient, angle);\n }\n if (orient === 'left' || orient === 'right') {\n return getYAxisLabelAlign(orient, angle);\n }\n }\n\n return {\n textAlign: this.getTextAlign(vector),\n textBaseline: this.getTextBaseline(vector, inside)\n };\n }\n\n protected beforeLabelsOverlap(\n labelShapes: IText[],\n labelData: AxisItem[],\n labelContainer: IGroup,\n layer: number,\n layerCount: number\n ): void {\n const { flush = false } = this.attribute.label || {};\n if (flush && labelShapes.length) {\n // 首尾标签向内偏移\n const { orient, start: axisStart, end: axisEnd } = this.attribute;\n const isX = orient === 'bottom' || orient === 'top';\n const first = labelShapes[0];\n const last = peek(labelShapes);\n const isInverse = isX ? first.attribute.x > last.attribute.x : first.attribute.y < last.attribute.y;\n if (isX) {\n if (isInverse) {\n const start = axisEnd.x;\n const end = axisStart.x;\n const startBound = first.AABBBounds.x2;\n const endBound = last.AABBBounds.x1;\n\n if (startBound > start) {\n first.setAttributes({\n x: start,\n textAlign: 'right'\n });\n }\n\n if (endBound < end) {\n last.setAttributes({\n x: end,\n textAlign: 'left'\n });\n }\n } else {\n const start = axisStart.x;\n const end = axisEnd.x;\n const startBound = first.AABBBounds.x1;\n const endBound = last.AABBBounds.x2;\n if (startBound < start) {\n first.setAttributes({\n x: start,\n textAlign: 'left'\n });\n }\n\n if (endBound > end) {\n last.setAttributes({\n x: end,\n textAlign: 'right'\n });\n }\n }\n } else {\n if (isInverse) {\n const startBound = first.AABBBounds.y1;\n const endBound = last.AABBBounds.y2;\n const start = axisStart.y;\n const end = axisEnd.y;\n\n if (startBound < start) {\n first.setAttributes({\n y: start,\n textBaseline: 'top'\n });\n }\n\n if (endBound > end) {\n last.setAttributes({\n y: end,\n textBaseline: 'bottom'\n });\n }\n } else {\n const start = axisEnd.y;\n const end = axisStart.y;\n const startBound = first.AABBBounds.y2;\n const endBound = last.AABBBounds.y1;\n\n if (startBound > start) {\n first.setAttributes({\n y: start,\n textBaseline: 'bottom'\n });\n }\n\n if (endBound < end) {\n last.setAttributes({\n y: end,\n textBaseline: 'top'\n });\n }\n }\n }\n }\n\n return;\n }\n protected handleLabelsOverlap(\n labelShapes: IText[],\n labelData: AxisItem[],\n labelContainer: IGroup,\n layer: number,\n layerCount: number\n ): void {\n if (isEmpty(labelShapes)) {\n return;\n }\n\n const { verticalLimitSize, label, orient } = this.attribute;\n const limitLength = this._getAxisLabelLimitLength(verticalLimitSize, layerCount);\n\n const {\n layoutFunc,\n autoRotate,\n autoRotateAngle,\n autoLimit,\n limitEllipsis,\n autoHide,\n autoHideMethod,\n autoHideSeparation\n } = label;\n\n if (isFunction(layoutFunc)) {\n // 自定义布局\n layoutFunc(labelShapes, labelData, layer, this);\n } else {\n // order: autoRotate -> autoLimit -> autoHide\n if (autoRotate) {\n autoRotateFunc(labelShapes, {\n labelRotateAngle: autoRotateAngle,\n orient\n });\n }\n if (autoLimit && isValidNumber(limitLength) && limitLength > 0) {\n autoLimitFunc(labelShapes, {\n limitLength,\n ellipsis: limitEllipsis,\n orient\n });\n }\n if (autoHide) {\n autoHideFunc(labelShapes, {\n orient,\n method: autoHideMethod,\n separation: autoHideSeparation\n });\n }\n }\n }\n\n protected afterLabelsOverlap(\n labelShapes: IText[],\n labelData: AxisItem[],\n labelContainer: IGroup,\n layer: number,\n layerCount: number\n ) {\n const { verticalLimitSize, orient } = this.attribute;\n\n // 处理 verticalMinSize,根据 verticalMinSize 调整 labelContainer 的大小\n const isHorizontal = orient === 'bottom' || orient === 'top';\n const axisLabelContainerBounds = labelContainer.AABBBounds;\n let axisLabelContainerSize = isHorizontal ? axisLabelContainerBounds.height() : axisLabelContainerBounds.width();\n const { verticalMinSize } = this.attribute;\n\n if (isValidNumber(verticalMinSize) && (!isValidNumber(verticalLimitSize) || verticalMinSize <= verticalLimitSize)) {\n const minSize = this._getAxisLabelLimitLength(verticalMinSize, layerCount);\n axisLabelContainerSize = Math.max(axisLabelContainerSize, minSize);\n\n let x;\n let y;\n if (orient === 'left') {\n x = axisLabelContainerBounds.x2 - axisLabelContainerSize;\n y = axisLabelContainerBounds.y1;\n } else if (orient === 'right') {\n x = axisLabelContainerBounds.x1;\n y = axisLabelContainerBounds.y1;\n } else if (orient === 'top') {\n x = axisLabelContainerBounds.x1;\n y = axisLabelContainerBounds.y2 - axisLabelContainerSize;\n } else if (orient === 'bottom') {\n x = axisLabelContainerBounds.x1;\n y = axisLabelContainerBounds.y1;\n }\n\n const bgRect = createRect({\n x,\n y,\n width: isHorizontal ? axisLabelContainerBounds.width() : axisLabelContainerSize,\n height: isHorizontal ? axisLabelContainerSize : axisLabelContainerBounds.height(),\n pickable: false\n });\n bgRect.name = AXIS_ELEMENT_NAME.axisLabelBackground;\n bgRect.id = this._getNodeId('axis-label-background');\n labelContainer.insertBefore(bgRect, labelContainer.firstChild);\n }\n\n // 处理 align,进行整体的对齐操作\n if (isValid(this.attribute.label.containerAlign)) {\n let start;\n if (orient === 'left') {\n start = axisLabelContainerBounds.x2;\n } else if (orient === 'right') {\n start = axisLabelContainerBounds.x1;\n } else if (orient === 'top') {\n start = axisLabelContainerBounds.y2;\n } else if (orient === 'bottom') {\n start = axisLabelContainerBounds.y1;\n }\n\n alignAxisLabels(labelShapes, start, axisLabelContainerSize, orient, this.attribute.label.containerAlign);\n }\n }\n\n private _getAxisLabelLimitLength(limitSize: number, layerCount: number): number {\n const { label, title, line, tick } = this.attribute;\n const labelSpace = label.space ?? 4;\n let limitLength = limitSize;\n let titleHeight = 0;\n let titleSpacing = 0;\n const axisLineWidth = line?.visible ? line.style.lineWidth ?? 1 : 0;\n const tickLength = tick?.visible ? tick.length ?? 4 : 0;\n if (title?.visible && typeof title.text === 'string') {\n titleHeight = measureTextSize(title.text, title.textStyle).height;\n const padding = normalizePadding(title.padding);\n titleSpacing = title.space + padding[0] + padding[2];\n }\n if (limitLength) {\n limitLength = (limitLength - labelSpace - titleSpacing - titleHeight - axisLineWidth - tickLength) / layerCount;\n }\n return limitLength;\n }\n}\n\nmixin(LineAxis, LineAxisMixin);\n"]}
|
|
1
|
+
{"version":3,"sources":["../src/axis/line.ts"],"names":[],"mappings":"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","file":"line.js","sourcesContent":["/**\n * @description 直线型坐标轴\n */\n// eslint-disable-next-line no-duplicate-imports\nimport {\n get,\n isNil,\n merge,\n isNumberClose,\n isEmpty,\n isFunction,\n isValidNumber,\n isValid,\n normalizePadding,\n mixin,\n last as peek\n} from '@visactor/vutils';\nimport { graphicCreator } from '@visactor/vrender-core';\n// eslint-disable-next-line no-duplicate-imports\nimport type { TextAlignType, IGroup, INode, IText, TextBaselineType } from '@visactor/vrender-core';\nimport type { SegmentAttributes } from '../segment';\n// eslint-disable-next-line no-duplicate-imports\nimport { Segment } from '../segment';\nimport { angleTo } from '../util/matrix';\nimport type { TagAttributes } from '../tag';\nimport type { LineAttributes, LineAxisAttributes, TitleAttributes, AxisItem } from './type';\nimport { AxisBase } from './base';\nimport { DEFAULT_AXIS_THEME } from './config';\nimport { AXIS_ELEMENT_NAME, DEFAULT_STATES } from './constant';\nimport { measureTextSize } from '../util';\nimport { autoHide as autoHideFunc } from './overlap/auto-hide';\nimport { autoRotate as autoRotateFunc, getXAxisLabelAlign, getYAxisLabelAlign } from './overlap/auto-rotate';\nimport { autoLimit as autoLimitFunc } from './overlap/auto-limit';\nimport { alignAxisLabels } from '../util/align';\nimport { LineAxisMixin } from './mixin/line';\nimport type { ComponentOptions } from '../interface';\nimport { loadLineAxisComponent } from './register';\n\nloadLineAxisComponent();\nexport interface LineAxis\n extends Pick<LineAxisMixin, 'isInValidValue' | 'getTickCoord' | 'getVerticalVector' | 'getRelativeVector'>,\n AxisBase<LineAxisAttributes> {}\n\nexport class LineAxis extends AxisBase<LineAxisAttributes> {\n static defaultAttributes = DEFAULT_AXIS_THEME;\n\n constructor(attributes: LineAxisAttributes, options?: ComponentOptions) {\n super(options?.skipDefault ? attributes : merge({}, LineAxis.defaultAttributes, attributes), options);\n }\n\n protected _renderInner(container: IGroup) {\n super._renderInner(container);\n const { panel } = this.attribute;\n\n // TODO: 目前是通过包围盒绘制,在一些情况下会有那问题,比如圆弧轴、带了箭头的坐标轴等\n // 坐标轴主体 panel\n if (panel && panel.visible) {\n const axisContainer = this.axisContainer;\n const axisContainerBounds = axisContainer.AABBBounds;\n const bgRect = graphicCreator.rect({\n x: axisContainerBounds.x1,\n y: axisContainerBounds.y1,\n width: axisContainerBounds.width(),\n height: axisContainerBounds.height(),\n ...panel.style\n });\n bgRect.name = AXIS_ELEMENT_NAME.background;\n bgRect.id = this._getNodeId('background');\n\n bgRect.states = merge({}, DEFAULT_STATES, panel.state ?? {});\n axisContainer.insertBefore(bgRect, axisContainer.firstChild);\n }\n }\n\n // TODO: break\n protected renderLine(container: IGroup): void {\n const { start, end, line } = this.attribute as LineAxisAttributes;\n const { startSymbol, endSymbol, style, breakRange, breakShape, breakShapeStyle, state, ...restLineAttrs } =\n line as LineAttributes;\n const lineAttrs = {\n points: [start, end],\n startSymbol,\n endSymbol,\n lineStyle: style,\n ...restLineAttrs\n } as SegmentAttributes;\n\n if (!isEmpty(state)) {\n lineAttrs.state = {\n line: merge({}, DEFAULT_STATES, state),\n symbol: merge({}, DEFAULT_STATES, state)\n };\n }\n\n const axisLineGroup = new Segment(lineAttrs);\n axisLineGroup.name = AXIS_ELEMENT_NAME.line;\n axisLineGroup.id = this._getNodeId('line');\n container.add(axisLineGroup as unknown as INode);\n }\n\n // TODO: 太 hack 了,需要静心优化\n protected getTitleAttribute() {\n const {\n position = 'middle',\n space = 4,\n textStyle = {},\n autoRotate = true,\n shape,\n background,\n state,\n ...restAttrs\n } = this.attribute.title as TitleAttributes;\n let percent = 0.5;\n if (position === 'start') {\n percent = 0;\n } else if (position === 'end') {\n percent = 1;\n }\n const { verticalFactor = 1 } = this.attribute;\n const factor = -1 * verticalFactor;\n const point = this.getTickCoord(percent);\n const axisVector = this.getRelativeVector();\n // HACK;\n let labelLength = 0;\n if (this.attribute.label?.visible && this.attribute.label?.inside === false) {\n const space = +get(this.attribute, 'label.space', 4);\n labelLength += space;\n const layerCount = Object.keys(this.axisLabelLayerSize).length;\n if (axisVector[1] === 0) {\n const labelBoundsHeight = this.axisLabelsContainer.AABBBounds.height();\n if (isFinite(labelBoundsHeight)) {\n labelLength += labelBoundsHeight + (layerCount - 1) * space;\n } else {\n labelLength = 0;\n }\n } else {\n if (axisVector[0] === 0) {\n const boundsWidth = this.axisLabelsContainer.AABBBounds.width();\n if (isFinite(boundsWidth)) {\n labelLength += boundsWidth + (layerCount - 1) * space;\n } else {\n labelLength = 0;\n }\n } else {\n // 发生了旋转\n Object.keys(this.axisLabelLayerSize).forEach((layer, index) => {\n labelLength += this.axisLabelLayerSize[layer].width + (index > 0 ? space : 0);\n });\n }\n\n const textAlign = this.axisLabelLayerSize[0].textAlign;\n const isTextAlignStart = textAlign === 'start' || textAlign === 'left';\n const isTextCenter = textAlign === 'center';\n const isReverse = axisVector[1] > 0;\n if (factor === 1) {\n labelLength = isReverse\n ? isTextAlignStart\n ? labelLength\n : isTextCenter\n ? labelLength / 2\n : space\n : isTextAlignStart\n ? space\n : isTextCenter\n ? labelLength / 2\n : labelLength;\n } else {\n labelLength = isReverse\n ? isTextAlignStart\n ? space\n : isTextCenter\n ? labelLength / 2\n : labelLength\n : isTextAlignStart\n ? labelLength\n : isTextCenter\n ? labelLength / 2\n : space;\n }\n }\n }\n\n // 标题都默认朝外\n let tickLength = 0;\n if (this.attribute.tick?.visible && this.attribute.tick?.inside === false) {\n tickLength = this.attribute.tick?.length || 4;\n }\n if (this.attribute.subTick?.visible && this.attribute.subTick?.inside === false) {\n tickLength = Math.max(tickLength, this.attribute.subTick?.length || 2);\n }\n\n const offset = tickLength + labelLength + space;\n const titlePoint = this.getVerticalCoord(point, offset, false); // 标题的点\n const vector = this.getVerticalVector(offset, false, { x: 0, y: 0 });\n\n let { angle } = restAttrs; // 用户设置的是角度\n let textAlign;\n if (position === 'start') {\n textAlign = 'start';\n } else if (position === 'end') {\n textAlign = 'end';\n } else {\n textAlign = 'center';\n }\n let textBaseline;\n if (isNil(angle) && autoRotate) {\n const v1: [number, number] = [1, 0]; // 水平方向的向量\n const radian = angleTo(axisVector, v1, true);\n angle = radian;\n const { verticalFactor = 1 } = this.attribute;\n const factor = -1 * verticalFactor;\n if (factor === 1) {\n textBaseline = 'bottom';\n } else {\n textBaseline = 'top';\n }\n } else {\n // if (isValid(angle)) {\n // angle = degreeToRadian(angle);\n // }\n textAlign = this.getTextAlign(vector as number[]);\n textBaseline = this.getTextBaseline(vector as number[], false);\n }\n\n const attrs: TagAttributes = {\n ...titlePoint,\n ...restAttrs,\n textStyle: {\n // @ts-ignore\n textAlign,\n // @ts-ignore\n textBaseline,\n ...textStyle\n },\n state: {\n text: merge({}, DEFAULT_STATES, state?.text),\n shape: merge({}, DEFAULT_STATES, state?.shape),\n panel: merge({}, DEFAULT_STATES, state?.background)\n }\n };\n attrs.angle = angle;\n\n if (shape && shape.visible) {\n attrs.shape = {\n visible: true,\n ...shape.style\n };\n if (shape.space) {\n attrs.space = shape.space;\n }\n }\n\n if (background && background.visible) {\n attrs.panel = {\n visible: true,\n ...background.style\n };\n }\n\n return attrs;\n }\n\n protected getTextBaseline(vector: number[], inside?: boolean): TextBaselineType {\n let base: TextBaselineType = 'middle';\n const { verticalFactor = 1 } = this.attribute;\n const factor = (inside ? 1 : -1) * verticalFactor;\n if (isNumberClose(vector[1], 0)) {\n if (isNumberClose(vector[0], 0) && !Object.is(vector[0], -0) && !Object.is(vector[1], -0)) {\n base = factor === 1 ? 'bottom' : 'top';\n } else {\n base = 'middle';\n }\n } else if (vector[1] > 0) {\n base = 'top';\n } else if (vector[1] < 0) {\n base = 'bottom';\n }\n return base;\n }\n\n protected getLabelAlign(\n vector: [number, number],\n inside?: boolean,\n angle?: number\n ): { textAlign: TextAlignType; textBaseline: TextBaselineType } {\n const orient = this.attribute.orient;\n if (isValidNumber(angle)) {\n if (orient === 'top' || orient === 'bottom') {\n return getXAxisLabelAlign(orient, angle);\n }\n if (orient === 'left' || orient === 'right') {\n return getYAxisLabelAlign(orient, angle);\n }\n }\n\n return {\n textAlign: this.getTextAlign(vector),\n textBaseline: this.getTextBaseline(vector, inside)\n };\n }\n\n protected beforeLabelsOverlap(\n labelShapes: IText[],\n labelData: AxisItem[],\n labelContainer: IGroup,\n layer: number,\n layerCount: number\n ): void {\n const { flush = false } = this.attribute.label || {};\n if (flush && labelShapes.length) {\n // 首尾标签向内偏移\n const { orient, start: axisStart, end: axisEnd } = this.attribute;\n const isX = orient === 'bottom' || orient === 'top';\n const first = labelShapes[0];\n const last = peek(labelShapes);\n const isInverse = isX ? first.attribute.x > last.attribute.x : first.attribute.y < last.attribute.y;\n if (isX) {\n if (isInverse) {\n const start = axisEnd.x;\n const end = axisStart.x;\n const startBound = first.AABBBounds.x2;\n const endBound = last.AABBBounds.x1;\n\n if (startBound > start) {\n first.setAttributes({\n x: start,\n textAlign: 'right'\n });\n }\n\n if (endBound < end) {\n last.setAttributes({\n x: end,\n textAlign: 'left'\n });\n }\n } else {\n const start = axisStart.x;\n const end = axisEnd.x;\n const startBound = first.AABBBounds.x1;\n const endBound = last.AABBBounds.x2;\n if (startBound < start) {\n first.setAttributes({\n x: start,\n textAlign: 'left'\n });\n }\n\n if (endBound > end) {\n last.setAttributes({\n x: end,\n textAlign: 'right'\n });\n }\n }\n } else {\n if (isInverse) {\n const startBound = first.AABBBounds.y1;\n const endBound = last.AABBBounds.y2;\n const start = axisStart.y;\n const end = axisEnd.y;\n\n if (startBound < start) {\n first.setAttributes({\n y: start,\n textBaseline: 'top'\n });\n }\n\n if (endBound > end) {\n last.setAttributes({\n y: end,\n textBaseline: 'bottom'\n });\n }\n } else {\n const start = axisEnd.y;\n const end = axisStart.y;\n const startBound = first.AABBBounds.y2;\n const endBound = last.AABBBounds.y1;\n\n if (startBound > start) {\n first.setAttributes({\n y: start,\n textBaseline: 'bottom'\n });\n }\n\n if (endBound < end) {\n last.setAttributes({\n y: end,\n textBaseline: 'top'\n });\n }\n }\n }\n }\n\n return;\n }\n protected handleLabelsOverlap(\n labelShapes: IText[],\n labelData: AxisItem[],\n labelContainer: IGroup,\n layer: number,\n layerCount: number\n ): void {\n if (isEmpty(labelShapes)) {\n return;\n }\n\n const { verticalLimitSize, label, orient } = this.attribute;\n const limitLength = this._getAxisLabelLimitLength(verticalLimitSize, layerCount);\n\n const {\n layoutFunc,\n autoRotate,\n autoRotateAngle,\n autoLimit,\n limitEllipsis,\n autoHide,\n autoHideMethod,\n autoHideSeparation\n } = label;\n\n if (isFunction(layoutFunc)) {\n // 自定义布局\n layoutFunc(labelShapes, labelData, layer, this);\n } else {\n // order: autoRotate -> autoLimit -> autoHide\n if (autoRotate) {\n autoRotateFunc(labelShapes, {\n labelRotateAngle: autoRotateAngle,\n orient\n });\n }\n if (autoLimit && isValidNumber(limitLength) && limitLength > 0) {\n autoLimitFunc(labelShapes, {\n limitLength,\n ellipsis: limitEllipsis,\n orient\n });\n }\n if (autoHide) {\n autoHideFunc(labelShapes, {\n orient,\n method: autoHideMethod,\n separation: autoHideSeparation\n });\n }\n }\n }\n\n protected afterLabelsOverlap(\n labelShapes: IText[],\n labelData: AxisItem[],\n labelContainer: IGroup,\n layer: number,\n layerCount: number\n ) {\n const { verticalLimitSize, orient } = this.attribute;\n\n // 处理 verticalMinSize,根据 verticalMinSize 调整 labelContainer 的大小\n const isHorizontal = orient === 'bottom' || orient === 'top';\n const axisLabelContainerBounds = labelContainer.AABBBounds;\n let axisLabelContainerSize = isHorizontal ? axisLabelContainerBounds.height() : axisLabelContainerBounds.width();\n const { verticalMinSize } = this.attribute;\n\n if (isValidNumber(verticalMinSize) && (!isValidNumber(verticalLimitSize) || verticalMinSize <= verticalLimitSize)) {\n const minSize = this._getAxisLabelLimitLength(verticalMinSize, layerCount);\n axisLabelContainerSize = Math.max(axisLabelContainerSize, minSize);\n\n let x;\n let y;\n if (orient === 'left') {\n x = axisLabelContainerBounds.x2 - axisLabelContainerSize;\n y = axisLabelContainerBounds.y1;\n } else if (orient === 'right') {\n x = axisLabelContainerBounds.x1;\n y = axisLabelContainerBounds.y1;\n } else if (orient === 'top') {\n x = axisLabelContainerBounds.x1;\n y = axisLabelContainerBounds.y2 - axisLabelContainerSize;\n } else if (orient === 'bottom') {\n x = axisLabelContainerBounds.x1;\n y = axisLabelContainerBounds.y1;\n }\n\n const bgRect = graphicCreator.rect({\n x,\n y,\n width: isHorizontal ? axisLabelContainerBounds.width() : axisLabelContainerSize,\n height: isHorizontal ? axisLabelContainerSize : axisLabelContainerBounds.height(),\n pickable: false\n });\n bgRect.name = AXIS_ELEMENT_NAME.axisLabelBackground;\n bgRect.id = this._getNodeId('axis-label-background');\n labelContainer.insertBefore(bgRect, labelContainer.firstChild);\n }\n\n // 处理 align,进行整体的对齐操作\n if (isValid(this.attribute.label.containerAlign)) {\n let start;\n if (orient === 'left') {\n start = axisLabelContainerBounds.x2;\n } else if (orient === 'right') {\n start = axisLabelContainerBounds.x1;\n } else if (orient === 'top') {\n start = axisLabelContainerBounds.y2;\n } else if (orient === 'bottom') {\n start = axisLabelContainerBounds.y1;\n }\n\n alignAxisLabels(labelShapes, start, axisLabelContainerSize, orient, this.attribute.label.containerAlign);\n }\n }\n\n private _getAxisLabelLimitLength(limitSize: number, layerCount: number): number {\n const { label, title, line, tick } = this.attribute;\n const labelSpace = label.space ?? 4;\n let limitLength = limitSize;\n let titleHeight = 0;\n let titleSpacing = 0;\n const axisLineWidth = line?.visible ? line.style.lineWidth ?? 1 : 0;\n const tickLength = tick?.visible ? tick.length ?? 4 : 0;\n if (title?.visible && typeof title.text === 'string') {\n titleHeight = measureTextSize(title.text, title.textStyle).height;\n const padding = normalizePadding(title.padding);\n titleSpacing = title.space + padding[0] + padding[2];\n }\n if (limitLength) {\n limitLength = (limitLength - labelSpace - titleSpacing - titleHeight - axisLineWidth - tickLength) / layerCount;\n }\n return limitLength;\n }\n}\n\nmixin(LineAxis, LineAxisMixin);\n"]}
|
|
@@ -0,0 +1,22 @@
|
|
|
1
|
+
import { registerCircle, registerGroup, registerLine, registerPath, registerRect, registerRichtext, registerText } from "@visactor/vrender-kits";
|
|
2
|
+
|
|
3
|
+
function loadBasicAxis() {
|
|
4
|
+
registerGroup(), registerLine(), registerRichtext(), registerText();
|
|
5
|
+
}
|
|
6
|
+
|
|
7
|
+
export function loadLineAxisComponent() {
|
|
8
|
+
loadBasicAxis(), registerRect();
|
|
9
|
+
}
|
|
10
|
+
|
|
11
|
+
export function loadCircleAxisComponent() {
|
|
12
|
+
loadBasicAxis(), registerCircle();
|
|
13
|
+
}
|
|
14
|
+
|
|
15
|
+
export function loadLineAxisGridComponent() {
|
|
16
|
+
registerGroup(), registerPath();
|
|
17
|
+
}
|
|
18
|
+
|
|
19
|
+
export function loadCircleAxisGridComponent() {
|
|
20
|
+
registerGroup(), registerPath();
|
|
21
|
+
}
|
|
22
|
+
//# sourceMappingURL=register.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../src/axis/register.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,cAAc,EACd,aAAa,EACb,YAAY,EACZ,YAAY,EACZ,YAAY,EACZ,gBAAgB,EAChB,YAAY,EACb,MAAM,wBAAwB,CAAC;AAEhC,SAAS,aAAa;IACpB,aAAa,EAAE,CAAC;IAChB,YAAY,EAAE,CAAC;IACf,gBAAgB,EAAE,CAAC;IACnB,YAAY,EAAE,CAAC;AACjB,CAAC;AAED,MAAM,UAAU,qBAAqB;IACnC,aAAa,EAAE,CAAC;IAChB,YAAY,EAAE,CAAC;AACjB,CAAC;AAED,MAAM,UAAU,uBAAuB;IACrC,aAAa,EAAE,CAAC;IAChB,cAAc,EAAE,CAAC;AACnB,CAAC;AAED,MAAM,UAAU,yBAAyB;IACvC,aAAa,EAAE,CAAC;IAChB,YAAY,EAAE,CAAC;AACjB,CAAC;AAED,MAAM,UAAU,2BAA2B;IACzC,aAAa,EAAE,CAAC;IAChB,YAAY,EAAE,CAAC;AACjB,CAAC","file":"register.js","sourcesContent":["import {\n registerCircle,\n registerGroup,\n registerLine,\n registerPath,\n registerRect,\n registerRichtext,\n registerText\n} from '@visactor/vrender-kits';\n\nfunction loadBasicAxis() {\n registerGroup();\n registerLine();\n registerRichtext();\n registerText();\n}\n\nexport function loadLineAxisComponent() {\n loadBasicAxis();\n registerRect();\n}\n\nexport function loadCircleAxisComponent() {\n loadBasicAxis();\n registerCircle();\n}\n\nexport function loadLineAxisGridComponent() {\n registerGroup();\n registerPath();\n}\n\nexport function loadCircleAxisGridComponent() {\n registerGroup();\n registerPath();\n}\n"]}
|
package/es/brush/brush.js
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import {
|
|
1
|
+
import { graphicCreator } from "@visactor/vrender-core";
|
|
2
2
|
|
|
3
3
|
import { cloneDeep, debounce, isFunction, merge, polygonContainPoint, throttle } from "@visactor/vutils";
|
|
4
4
|
|
|
@@ -8,11 +8,15 @@ import { IOperateType } from "./type";
|
|
|
8
8
|
|
|
9
9
|
import { DEFAULT_BRUSH_ATTRIBUTES, DEFAULT_SIZE_THRESHOLD } from "./config";
|
|
10
10
|
|
|
11
|
+
import { loadBrushComponent } from "./register";
|
|
12
|
+
|
|
11
13
|
const delayMap = {
|
|
12
14
|
debounce: debounce,
|
|
13
15
|
throttle: throttle
|
|
14
16
|
};
|
|
15
17
|
|
|
18
|
+
loadBrushComponent();
|
|
19
|
+
|
|
16
20
|
export class Brush extends AbstractComponent {
|
|
17
21
|
constructor(attributes, options) {
|
|
18
22
|
super((null == options ? void 0 : options.skipDefault) ? attributes : merge({}, Brush.defaultAttributes, attributes)),
|
|
@@ -154,7 +158,7 @@ export class Brush extends AbstractComponent {
|
|
|
154
158
|
}
|
|
155
159
|
_addBrushMask() {
|
|
156
160
|
var _a;
|
|
157
|
-
const {brushStyle: brushStyle, hasMask: hasMask} = this.attribute, brushMask =
|
|
161
|
+
const {brushStyle: brushStyle, hasMask: hasMask} = this.attribute, brushMask = graphicCreator.polygon(Object.assign(Object.assign({
|
|
158
162
|
points: cloneDeep(this._cacheDrawPoints),
|
|
159
163
|
cursor: "move",
|
|
160
164
|
pickable: !1
|
package/es/brush/brush.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../src/brush/brush.ts"],"names":[],"mappings":"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","file":"brush.js","sourcesContent":["/**\n * @description 框选组件\n */\nimport type { FederatedPointerEvent, IGroup, IPolygon } from '@visactor/vrender-core';\nimport { createPolygon } from '@visactor/vrender-core';\nimport type { IBounds, IPointLike } from '@visactor/vutils';\nimport { cloneDeep, debounce, isFunction, merge, polygonContainPoint, throttle } from '@visactor/vutils';\nimport { AbstractComponent } from '../core/base';\nimport type { BrushAttributes } from './type';\nimport { IOperateType } from './type';\nimport { DEFAULT_BRUSH_ATTRIBUTES, DEFAULT_SIZE_THRESHOLD } from './config';\nimport type { ComponentOptions } from '../interface';\n\nconst delayMap = {\n debounce: debounce,\n throttle: throttle\n};\n\nexport class Brush extends AbstractComponent<Required<BrushAttributes>> {\n name = 'brush';\n static defaultAttributes = DEFAULT_BRUSH_ATTRIBUTES;\n\n private _container!: IGroup;\n\n // 绘制mask时的相关属性\n private _activeDrawState = false; // 用于标记绘制状态\n private _cacheDrawPoints: IPointLike[] = []; // 用于维护鼠标走过的路径,主要用于绘制mask的点\n private _isDrawedBeforeEnd = false;\n // 移动mask时的相关属性\n private _activeMoveState = false; // 用于标记移动状态\n private _operatingMaskMoveDx = 0; // 用于标记移动的位移量\n private _operatingMaskMoveDy = 0;\n private _operatingMaskMoveRangeX: [number, number] = [-Infinity, Infinity];\n private _operatingMaskMoveRangeY: [number, number] = [-Infinity, Infinity];\n private _cacheMovePoint!: IPointLike; // 用于维护鼠标所在位置,主要用于计算位移量\n\n private _operatingMask!: IPolygon; // 用于标记正在绘制的mask 或 正在移动的mask\n\n // 透出给上层的属性(主要是所有mask的AABBBounds,这里用的是dict存储方便添加和修改)\n private _brushMaskAABBBoundsDict: { [name: string]: IBounds } = {};\n private _updateDragMaskCallback!: (operateParams: {\n operateType: string;\n operateMask: IPolygon;\n operatedMaskAABBBounds: { [name: string]: IBounds };\n }) => void;\n\n constructor(attributes: BrushAttributes, options?: ComponentOptions) {\n super(options?.skipDefault ? attributes : merge({}, Brush.defaultAttributes, attributes));\n }\n\n protected bindBrushEvents(): void {\n if (this.attribute.disableTriggerEvent) {\n return;\n }\n const {\n delayType = 'throttle',\n delayTime = 0,\n trigger = DEFAULT_BRUSH_ATTRIBUTES.trigger,\n updateTrigger = DEFAULT_BRUSH_ATTRIBUTES.updateTrigger,\n endTrigger = DEFAULT_BRUSH_ATTRIBUTES.endTrigger,\n resetTrigger = DEFAULT_BRUSH_ATTRIBUTES.resetTrigger\n } = this.attribute as BrushAttributes;\n // 拖拽绘制开始\n this.stage.addEventListener(trigger, this._onBrushStart as EventListener);\n // 拖拽绘制时\n this.stage.addEventListener(updateTrigger, delayMap[delayType](this._onBrushing, delayTime) as EventListener);\n // 拖拽绘制结束\n this.stage.addEventListener(endTrigger, this._onBrushEnd as EventListener);\n this.stage.addEventListener(resetTrigger, this._onBrushEnd as EventListener);\n }\n\n private _isPosInBrushMask(e: FederatedPointerEvent) {\n const pos = this.eventPosToStagePos(e);\n const brushMasks = this._container.getChildren();\n for (let i = 0; i < brushMasks.length; i++) {\n const { points = [], dx = 0, dy = 0 } = (brushMasks[i] as IPolygon).attribute;\n const pointsConsiderOffset: IPointLike[] = points.map((point: IPointLike) => {\n return {\n x: point.x + dx,\n y: point.y + dy\n };\n });\n if (polygonContainPoint(pointsConsiderOffset, pos.x, pos.y)) {\n this._operatingMask = brushMasks[i] as IPolygon;\n return true;\n }\n }\n return false;\n }\n\n /**\n * 开始绘制 或 移动\n * @description\n * 1. 判断状态: 如果在brushMask中,则属于移动状态; 否则属于绘制状态\n *(移动状态和绘制状态互斥, 且移动状态考虑brushMoved配置, 如果在brush点内但brushMoved为false, 则走绘制状态, 而非两个状态都不响应, 此效果与echarts保持一致)\n * 2. 判断坐标是否在有效交互范围内\n * 2. 如果是移动状态: 标记移动状态 & 标记正在移动的mask & 初始化mask的dx和dy\n * 3. 如果是绘制状态: 标记绘制状态 & 标记正在绘制的mask & 清除之前的mask & 添加新的mask\n */\n private _onBrushStart = (e: FederatedPointerEvent) => {\n if (this._outOfInteractiveRange(e)) {\n return;\n }\n e.stopPropagation();\n\n const brushMoved = this.attribute?.brushMoved ?? true;\n this._activeMoveState = brushMoved && this._isPosInBrushMask(e); // 如果是移动状态,在这里会标记operatingMask为正在移动的mask\n this._activeDrawState = !this._activeMoveState;\n\n this._activeDrawState && this._initDraw(e); // 如果是绘制状态,在这里会标记operatingMask为正在绘制的mask\n this._activeMoveState && this._initMove(e);\n };\n\n /**\n * 绘制 或 移动 中\n * @description\n * 1. 如果是绘制状态: 更新_cacheDrawPoints 和 mask的points属性\n * 2. 如果是移动状态: 标记移动状态 & 计算位移量 & 给被移动的mask偏移属性\n */\n private _onBrushing = (e: FederatedPointerEvent) => {\n if (this._outOfInteractiveRange(e)) {\n return;\n }\n e.stopPropagation();\n\n this._activeDrawState && this._drawing(e); // 如果是绘制状态,在这里会标记operatingMask为正在绘制的mask\n this._activeMoveState && this._moving(e);\n };\n\n /**\n * 结束绘制 和 移动\n * @description 取消绘制 和 移动 状态\n */\n private _onBrushEnd = (e: FederatedPointerEvent) => {\n e.preventDefault();\n const { removeOnClick = true } = this.attribute as BrushAttributes;\n if (this._activeDrawState && !this._isDrawedBeforeEnd && removeOnClick) {\n this._container.incrementalClearChild();\n this._brushMaskAABBBoundsDict = {};\n this._updateDragMaskCallback &&\n this._updateDragMaskCallback({\n operateType: IOperateType.brushClear,\n operateMask: this._operatingMask,\n operatedMaskAABBBounds: this._brushMaskAABBBoundsDict\n });\n } else if (!this._outOfInteractiveRange(e)) {\n this._updateDragMaskCallback &&\n this._updateDragMaskCallback({\n operateType: this._activeDrawState ? IOperateType.drawEnd : IOperateType.moveEnd,\n operateMask: this._operatingMask,\n operatedMaskAABBBounds: this._brushMaskAABBBoundsDict\n });\n }\n\n this._activeDrawState = false;\n this._activeMoveState = false;\n this._isDrawedBeforeEnd = false;\n this._operatingMask?.setAttribute('pickable', false);\n };\n\n /**\n * 初始化绘制状态\n * @description 清除之前的mask & 添加新的mask\n */\n private _initDraw(e: FederatedPointerEvent) {\n const { brushMode } = this.attribute as BrushAttributes;\n const pos = this.eventPosToStagePos(e);\n this._cacheDrawPoints = [pos];\n this._isDrawedBeforeEnd = false;\n if (brushMode === 'single') {\n this._brushMaskAABBBoundsDict = {};\n this._container.incrementalClearChild();\n }\n this._addBrushMask();\n this._updateDragMaskCallback &&\n this._updateDragMaskCallback({\n operateType: IOperateType.drawStart,\n operateMask: this._operatingMask,\n operatedMaskAABBBounds: this._brushMaskAABBBoundsDict\n });\n }\n\n /**\n * 初始化移动状态\n * @description 初始化mask的dx和dy\n */\n private _initMove(e: FederatedPointerEvent) {\n this._cacheMovePoint = this.eventPosToStagePos(e);\n\n this._operatingMaskMoveDx = this._operatingMask.attribute.dx ?? 0;\n this._operatingMaskMoveDy = this._operatingMask.attribute.dy ?? 0;\n\n // 计算最大移动范围, 为了将brushMask限制在交互范围内\n const { interactiveRange } = this.attribute as BrushAttributes;\n const { minY = -Infinity, maxY = Infinity, minX = -Infinity, maxX = Infinity } = interactiveRange;\n\n const { x1, x2, y1, y2 } = this._operatingMask.globalAABBBounds;\n const minMoveStepX = minX - x1;\n const maxMoveStepX = maxX - x2;\n const minMoveStepY = minY - y1;\n const maxMoveStepY = maxY - y2;\n\n this._operatingMaskMoveRangeX = [minMoveStepX, maxMoveStepX];\n this._operatingMaskMoveRangeY = [minMoveStepY, maxMoveStepY];\n\n this._operatingMask.setAttribute('pickable', true);\n this._updateDragMaskCallback &&\n this._updateDragMaskCallback({\n operateType: IOperateType.moveStart,\n operateMask: this._operatingMask,\n operatedMaskAABBBounds: this._brushMaskAABBBoundsDict\n });\n }\n\n /**\n * 绘制中\n * @description 更新_cacheDrawPoints 和 mask的points属性\n */\n private _drawing(e: FederatedPointerEvent) {\n const pos = this.eventPosToStagePos(e);\n const { x1 = 0, x2 = 0, y1 = 0, y2 = 0 } = this._operatingMask?._AABBBounds;\n const { sizeThreshold = DEFAULT_SIZE_THRESHOLD, brushType } = this.attribute as BrushAttributes;\n\n const cacheLength = this._cacheDrawPoints.length;\n this._isDrawedBeforeEnd = !!(Math.abs(x2 - x1) > sizeThreshold || Math.abs(y1 - y2) > sizeThreshold);\n\n // 如果当前点的位置和上一次点的位置一致,则无需更新\n if (cacheLength > 0) {\n const lastPos = this._cacheDrawPoints[this._cacheDrawPoints.length - 1];\n if (pos.x === lastPos?.x && pos.y === lastPos?.y) {\n return;\n }\n }\n // 更新交互位置\n if (brushType === 'polygon' || cacheLength <= 1) {\n this._cacheDrawPoints.push(pos);\n } else {\n this._cacheDrawPoints[cacheLength - 1] = pos;\n }\n // 更新mask形状\n const maskPoints = this._computeMaskPoints();\n this._operatingMask.setAttribute('points', maskPoints);\n this._brushMaskAABBBoundsDict[this._operatingMask.name] = this._operatingMask.AABBBounds;\n this._updateDragMaskCallback &&\n this._updateDragMaskCallback({\n operateType: IOperateType.drawing,\n operateMask: this._operatingMask,\n operatedMaskAABBBounds: this._brushMaskAABBBoundsDict\n });\n }\n\n /**\n * 移动中\n * @description 标记移动状态 & 计算位移量 & 给被移动的mask偏移属性\n */\n private _moving(e: FederatedPointerEvent) {\n const startPos = this._cacheMovePoint;\n const pos = this.eventPosToStagePos(e);\n // 如果当前点的位置和上一次点的位置一致,则无需更新\n if (pos.x === startPos?.x && pos.y === startPos?.y) {\n return;\n }\n\n const moveStepX = pos.x - startPos.x;\n const moveStepY = pos.y - startPos.y;\n const moveX =\n Math.min(this._operatingMaskMoveRangeX[1], Math.max(this._operatingMaskMoveRangeX[0], moveStepX)) +\n this._operatingMaskMoveDx;\n const moveY =\n Math.min(this._operatingMaskMoveRangeY[1], Math.max(this._operatingMaskMoveRangeY[0], moveStepY)) +\n this._operatingMaskMoveDy;\n\n this._operatingMask.setAttributes({\n dx: moveX,\n dy: moveY\n });\n this._brushMaskAABBBoundsDict[this._operatingMask.name] = this._operatingMask.AABBBounds;\n this._updateDragMaskCallback &&\n this._updateDragMaskCallback({\n operateType: IOperateType.moving,\n operateMask: this._operatingMask,\n operatedMaskAABBBounds: this._brushMaskAABBBoundsDict\n });\n }\n\n /**\n * 构造brushMask的points属性\n * @description 根据不同的brushType从_cacheDrawPoints中取points\n * 1. 'rect': 只取鼠标轨迹_cacheDrawPoints的第一个点和最后一个点\n * 2. 'x': 只取鼠标轨迹_cacheDrawPoints的第一个点和最后一个点的x坐标\n * 3. 'y': 只取鼠标轨迹_cacheDrawPoints的第一个点和最后一个点的y坐标\n * 4. 'polygon': 取鼠标轨迹_cacheDrawPoints的所有点\n */\n private _computeMaskPoints() {\n const { brushType, xRange = [0, 0], yRange = [0, 0] } = this.attribute as BrushAttributes;\n let maskPoints: IPointLike[] = [];\n const startPoint = this._cacheDrawPoints[0];\n const endPoint = this._cacheDrawPoints[this._cacheDrawPoints.length - 1];\n\n if (brushType === 'rect') {\n maskPoints = [\n startPoint,\n {\n x: endPoint.x,\n y: startPoint.y\n },\n endPoint,\n {\n x: startPoint.x,\n y: endPoint.y\n }\n ];\n } else if (brushType === 'x') {\n maskPoints = [\n {\n x: startPoint.x,\n y: yRange[0]\n },\n {\n x: endPoint.x,\n y: yRange[0]\n },\n {\n x: endPoint.x,\n y: yRange[1]\n },\n {\n x: startPoint.x,\n y: yRange[1]\n }\n ];\n } else if (brushType === 'y') {\n maskPoints = [\n {\n x: xRange[0],\n y: startPoint.y\n },\n {\n x: xRange[0],\n y: endPoint.y\n },\n {\n x: xRange[1],\n y: endPoint.y\n },\n {\n x: xRange[1],\n y: startPoint.y\n }\n ];\n } else {\n maskPoints = cloneDeep(this._cacheDrawPoints); // _cacheDrawPoints在不断更新,所以这里需要cloneDeep\n }\n return maskPoints;\n }\n\n protected _addBrushMask() {\n const { brushStyle, hasMask } = this.attribute as BrushAttributes;\n const brushMask = createPolygon({\n points: cloneDeep(this._cacheDrawPoints), // _cacheDrawPoints在不断更新,所以这里需要cloneDeep\n cursor: 'move',\n pickable: false,\n ...brushStyle,\n opacity: hasMask ? brushStyle.opacity ?? 1 : 0\n });\n brushMask.name = `brush-${Date.now()}`; // 用Date给mask唯一标记\n this._operatingMask = brushMask;\n this._container.add(brushMask);\n this._brushMaskAABBBoundsDict[brushMask.name] = brushMask.AABBBounds;\n }\n\n private _outOfInteractiveRange(e: FederatedPointerEvent) {\n // 在返回坐标时,将其限制在交互范围内\n const { interactiveRange } = this.attribute as BrushAttributes;\n const { minY = -Infinity, maxY = Infinity, minX = -Infinity, maxX = Infinity } = interactiveRange;\n const pos = this.eventPosToStagePos(e);\n if (pos.x > maxX || pos.x < minX || pos.y > maxY || pos.y < minY) {\n return true;\n }\n return false;\n }\n\n /** 事件系统坐标转换为stage坐标 */\n protected eventPosToStagePos(e: FederatedPointerEvent) {\n const stagePosition = this.stage?.window.getBoundingClientRect();\n return {\n x: e.clientX - (stagePosition?.left || 0) - (this.stage?.x || 0),\n y: e.clientY - (stagePosition?.top || 0) - (this.stage?.y || 0)\n };\n }\n\n protected render() {\n this.bindBrushEvents();\n const group = this.createOrUpdateChild('brush-container', {}, 'group') as unknown as IGroup;\n this._container = group;\n }\n\n setUpdateDragMaskCallback(\n callback: (operateParams: {\n operateType: string;\n operateMask: IPolygon;\n operatedMaskAABBBounds: { [name: string]: IBounds };\n }) => void\n ) {\n isFunction(callback) && (this._updateDragMaskCallback = callback);\n }\n\n releaseBrushEvents(): void {\n const {\n delayType = 'throttle',\n delayTime = 0,\n trigger = DEFAULT_BRUSH_ATTRIBUTES.trigger,\n updateTrigger = DEFAULT_BRUSH_ATTRIBUTES.updateTrigger,\n endTrigger = DEFAULT_BRUSH_ATTRIBUTES.endTrigger,\n resetTrigger = DEFAULT_BRUSH_ATTRIBUTES.resetTrigger\n } = this.attribute as BrushAttributes;\n this.stage.removeEventListener(trigger, this._onBrushStart as EventListener);\n this.stage.removeEventListener(updateTrigger, delayMap[delayType](this._onBrushing, delayTime) as EventListener);\n this.stage.removeEventListener(endTrigger, this._onBrushEnd as EventListener);\n this.stage.removeEventListener(resetTrigger, this._onBrushEnd as EventListener);\n }\n}\n"]}
|
|
1
|
+
{"version":3,"sources":["../src/brush/brush.ts"],"names":[],"mappings":"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","file":"brush.js","sourcesContent":["/**\n * @description 框选组件\n */\nimport type { FederatedPointerEvent, IGroup, IPolygon } from '@visactor/vrender-core';\nimport { graphicCreator } from '@visactor/vrender-core';\nimport type { IBounds, IPointLike } from '@visactor/vutils';\nimport { cloneDeep, debounce, isFunction, merge, polygonContainPoint, throttle } from '@visactor/vutils';\nimport { AbstractComponent } from '../core/base';\nimport type { BrushAttributes } from './type';\nimport { IOperateType } from './type';\nimport { DEFAULT_BRUSH_ATTRIBUTES, DEFAULT_SIZE_THRESHOLD } from './config';\nimport type { ComponentOptions } from '../interface';\nimport { loadBrushComponent } from './register';\n\nconst delayMap = {\n debounce: debounce,\n throttle: throttle\n};\n\nloadBrushComponent();\nexport class Brush extends AbstractComponent<Required<BrushAttributes>> {\n name = 'brush';\n static defaultAttributes = DEFAULT_BRUSH_ATTRIBUTES;\n\n private _container!: IGroup;\n\n // 绘制mask时的相关属性\n private _activeDrawState = false; // 用于标记绘制状态\n private _cacheDrawPoints: IPointLike[] = []; // 用于维护鼠标走过的路径,主要用于绘制mask的点\n private _isDrawedBeforeEnd = false;\n // 移动mask时的相关属性\n private _activeMoveState = false; // 用于标记移动状态\n private _operatingMaskMoveDx = 0; // 用于标记移动的位移量\n private _operatingMaskMoveDy = 0;\n private _operatingMaskMoveRangeX: [number, number] = [-Infinity, Infinity];\n private _operatingMaskMoveRangeY: [number, number] = [-Infinity, Infinity];\n private _cacheMovePoint!: IPointLike; // 用于维护鼠标所在位置,主要用于计算位移量\n\n private _operatingMask!: IPolygon; // 用于标记正在绘制的mask 或 正在移动的mask\n\n // 透出给上层的属性(主要是所有mask的AABBBounds,这里用的是dict存储方便添加和修改)\n private _brushMaskAABBBoundsDict: { [name: string]: IBounds } = {};\n private _updateDragMaskCallback!: (operateParams: {\n operateType: string;\n operateMask: IPolygon;\n operatedMaskAABBBounds: { [name: string]: IBounds };\n }) => void;\n\n constructor(attributes: BrushAttributes, options?: ComponentOptions) {\n super(options?.skipDefault ? attributes : merge({}, Brush.defaultAttributes, attributes));\n }\n\n protected bindBrushEvents(): void {\n if (this.attribute.disableTriggerEvent) {\n return;\n }\n const {\n delayType = 'throttle',\n delayTime = 0,\n trigger = DEFAULT_BRUSH_ATTRIBUTES.trigger,\n updateTrigger = DEFAULT_BRUSH_ATTRIBUTES.updateTrigger,\n endTrigger = DEFAULT_BRUSH_ATTRIBUTES.endTrigger,\n resetTrigger = DEFAULT_BRUSH_ATTRIBUTES.resetTrigger\n } = this.attribute as BrushAttributes;\n // 拖拽绘制开始\n this.stage.addEventListener(trigger, this._onBrushStart as EventListener);\n // 拖拽绘制时\n this.stage.addEventListener(updateTrigger, delayMap[delayType](this._onBrushing, delayTime) as EventListener);\n // 拖拽绘制结束\n this.stage.addEventListener(endTrigger, this._onBrushEnd as EventListener);\n this.stage.addEventListener(resetTrigger, this._onBrushEnd as EventListener);\n }\n\n private _isPosInBrushMask(e: FederatedPointerEvent) {\n const pos = this.eventPosToStagePos(e);\n const brushMasks = this._container.getChildren();\n for (let i = 0; i < brushMasks.length; i++) {\n const { points = [], dx = 0, dy = 0 } = (brushMasks[i] as IPolygon).attribute;\n const pointsConsiderOffset: IPointLike[] = points.map((point: IPointLike) => {\n return {\n x: point.x + dx,\n y: point.y + dy\n };\n });\n if (polygonContainPoint(pointsConsiderOffset, pos.x, pos.y)) {\n this._operatingMask = brushMasks[i] as IPolygon;\n return true;\n }\n }\n return false;\n }\n\n /**\n * 开始绘制 或 移动\n * @description\n * 1. 判断状态: 如果在brushMask中,则属于移动状态; 否则属于绘制状态\n *(移动状态和绘制状态互斥, 且移动状态考虑brushMoved配置, 如果在brush点内但brushMoved为false, 则走绘制状态, 而非两个状态都不响应, 此效果与echarts保持一致)\n * 2. 判断坐标是否在有效交互范围内\n * 2. 如果是移动状态: 标记移动状态 & 标记正在移动的mask & 初始化mask的dx和dy\n * 3. 如果是绘制状态: 标记绘制状态 & 标记正在绘制的mask & 清除之前的mask & 添加新的mask\n */\n private _onBrushStart = (e: FederatedPointerEvent) => {\n if (this._outOfInteractiveRange(e)) {\n return;\n }\n e.stopPropagation();\n\n const brushMoved = this.attribute?.brushMoved ?? true;\n this._activeMoveState = brushMoved && this._isPosInBrushMask(e); // 如果是移动状态,在这里会标记operatingMask为正在移动的mask\n this._activeDrawState = !this._activeMoveState;\n\n this._activeDrawState && this._initDraw(e); // 如果是绘制状态,在这里会标记operatingMask为正在绘制的mask\n this._activeMoveState && this._initMove(e);\n };\n\n /**\n * 绘制 或 移动 中\n * @description\n * 1. 如果是绘制状态: 更新_cacheDrawPoints 和 mask的points属性\n * 2. 如果是移动状态: 标记移动状态 & 计算位移量 & 给被移动的mask偏移属性\n */\n private _onBrushing = (e: FederatedPointerEvent) => {\n if (this._outOfInteractiveRange(e)) {\n return;\n }\n e.stopPropagation();\n\n this._activeDrawState && this._drawing(e); // 如果是绘制状态,在这里会标记operatingMask为正在绘制的mask\n this._activeMoveState && this._moving(e);\n };\n\n /**\n * 结束绘制 和 移动\n * @description 取消绘制 和 移动 状态\n */\n private _onBrushEnd = (e: FederatedPointerEvent) => {\n e.preventDefault();\n const { removeOnClick = true } = this.attribute as BrushAttributes;\n if (this._activeDrawState && !this._isDrawedBeforeEnd && removeOnClick) {\n this._container.incrementalClearChild();\n this._brushMaskAABBBoundsDict = {};\n this._updateDragMaskCallback &&\n this._updateDragMaskCallback({\n operateType: IOperateType.brushClear,\n operateMask: this._operatingMask,\n operatedMaskAABBBounds: this._brushMaskAABBBoundsDict\n });\n } else if (!this._outOfInteractiveRange(e)) {\n this._updateDragMaskCallback &&\n this._updateDragMaskCallback({\n operateType: this._activeDrawState ? IOperateType.drawEnd : IOperateType.moveEnd,\n operateMask: this._operatingMask,\n operatedMaskAABBBounds: this._brushMaskAABBBoundsDict\n });\n }\n\n this._activeDrawState = false;\n this._activeMoveState = false;\n this._isDrawedBeforeEnd = false;\n this._operatingMask?.setAttribute('pickable', false);\n };\n\n /**\n * 初始化绘制状态\n * @description 清除之前的mask & 添加新的mask\n */\n private _initDraw(e: FederatedPointerEvent) {\n const { brushMode } = this.attribute as BrushAttributes;\n const pos = this.eventPosToStagePos(e);\n this._cacheDrawPoints = [pos];\n this._isDrawedBeforeEnd = false;\n if (brushMode === 'single') {\n this._brushMaskAABBBoundsDict = {};\n this._container.incrementalClearChild();\n }\n this._addBrushMask();\n this._updateDragMaskCallback &&\n this._updateDragMaskCallback({\n operateType: IOperateType.drawStart,\n operateMask: this._operatingMask,\n operatedMaskAABBBounds: this._brushMaskAABBBoundsDict\n });\n }\n\n /**\n * 初始化移动状态\n * @description 初始化mask的dx和dy\n */\n private _initMove(e: FederatedPointerEvent) {\n this._cacheMovePoint = this.eventPosToStagePos(e);\n\n this._operatingMaskMoveDx = this._operatingMask.attribute.dx ?? 0;\n this._operatingMaskMoveDy = this._operatingMask.attribute.dy ?? 0;\n\n // 计算最大移动范围, 为了将brushMask限制在交互范围内\n const { interactiveRange } = this.attribute as BrushAttributes;\n const { minY = -Infinity, maxY = Infinity, minX = -Infinity, maxX = Infinity } = interactiveRange;\n\n const { x1, x2, y1, y2 } = this._operatingMask.globalAABBBounds;\n const minMoveStepX = minX - x1;\n const maxMoveStepX = maxX - x2;\n const minMoveStepY = minY - y1;\n const maxMoveStepY = maxY - y2;\n\n this._operatingMaskMoveRangeX = [minMoveStepX, maxMoveStepX];\n this._operatingMaskMoveRangeY = [minMoveStepY, maxMoveStepY];\n\n this._operatingMask.setAttribute('pickable', true);\n this._updateDragMaskCallback &&\n this._updateDragMaskCallback({\n operateType: IOperateType.moveStart,\n operateMask: this._operatingMask,\n operatedMaskAABBBounds: this._brushMaskAABBBoundsDict\n });\n }\n\n /**\n * 绘制中\n * @description 更新_cacheDrawPoints 和 mask的points属性\n */\n private _drawing(e: FederatedPointerEvent) {\n const pos = this.eventPosToStagePos(e);\n const { x1 = 0, x2 = 0, y1 = 0, y2 = 0 } = this._operatingMask?._AABBBounds;\n const { sizeThreshold = DEFAULT_SIZE_THRESHOLD, brushType } = this.attribute as BrushAttributes;\n\n const cacheLength = this._cacheDrawPoints.length;\n this._isDrawedBeforeEnd = !!(Math.abs(x2 - x1) > sizeThreshold || Math.abs(y1 - y2) > sizeThreshold);\n\n // 如果当前点的位置和上一次点的位置一致,则无需更新\n if (cacheLength > 0) {\n const lastPos = this._cacheDrawPoints[this._cacheDrawPoints.length - 1];\n if (pos.x === lastPos?.x && pos.y === lastPos?.y) {\n return;\n }\n }\n // 更新交互位置\n if (brushType === 'polygon' || cacheLength <= 1) {\n this._cacheDrawPoints.push(pos);\n } else {\n this._cacheDrawPoints[cacheLength - 1] = pos;\n }\n // 更新mask形状\n const maskPoints = this._computeMaskPoints();\n this._operatingMask.setAttribute('points', maskPoints);\n this._brushMaskAABBBoundsDict[this._operatingMask.name] = this._operatingMask.AABBBounds;\n this._updateDragMaskCallback &&\n this._updateDragMaskCallback({\n operateType: IOperateType.drawing,\n operateMask: this._operatingMask,\n operatedMaskAABBBounds: this._brushMaskAABBBoundsDict\n });\n }\n\n /**\n * 移动中\n * @description 标记移动状态 & 计算位移量 & 给被移动的mask偏移属性\n */\n private _moving(e: FederatedPointerEvent) {\n const startPos = this._cacheMovePoint;\n const pos = this.eventPosToStagePos(e);\n // 如果当前点的位置和上一次点的位置一致,则无需更新\n if (pos.x === startPos?.x && pos.y === startPos?.y) {\n return;\n }\n\n const moveStepX = pos.x - startPos.x;\n const moveStepY = pos.y - startPos.y;\n const moveX =\n Math.min(this._operatingMaskMoveRangeX[1], Math.max(this._operatingMaskMoveRangeX[0], moveStepX)) +\n this._operatingMaskMoveDx;\n const moveY =\n Math.min(this._operatingMaskMoveRangeY[1], Math.max(this._operatingMaskMoveRangeY[0], moveStepY)) +\n this._operatingMaskMoveDy;\n\n this._operatingMask.setAttributes({\n dx: moveX,\n dy: moveY\n });\n this._brushMaskAABBBoundsDict[this._operatingMask.name] = this._operatingMask.AABBBounds;\n this._updateDragMaskCallback &&\n this._updateDragMaskCallback({\n operateType: IOperateType.moving,\n operateMask: this._operatingMask,\n operatedMaskAABBBounds: this._brushMaskAABBBoundsDict\n });\n }\n\n /**\n * 构造brushMask的points属性\n * @description 根据不同的brushType从_cacheDrawPoints中取points\n * 1. 'rect': 只取鼠标轨迹_cacheDrawPoints的第一个点和最后一个点\n * 2. 'x': 只取鼠标轨迹_cacheDrawPoints的第一个点和最后一个点的x坐标\n * 3. 'y': 只取鼠标轨迹_cacheDrawPoints的第一个点和最后一个点的y坐标\n * 4. 'polygon': 取鼠标轨迹_cacheDrawPoints的所有点\n */\n private _computeMaskPoints() {\n const { brushType, xRange = [0, 0], yRange = [0, 0] } = this.attribute as BrushAttributes;\n let maskPoints: IPointLike[] = [];\n const startPoint = this._cacheDrawPoints[0];\n const endPoint = this._cacheDrawPoints[this._cacheDrawPoints.length - 1];\n\n if (brushType === 'rect') {\n maskPoints = [\n startPoint,\n {\n x: endPoint.x,\n y: startPoint.y\n },\n endPoint,\n {\n x: startPoint.x,\n y: endPoint.y\n }\n ];\n } else if (brushType === 'x') {\n maskPoints = [\n {\n x: startPoint.x,\n y: yRange[0]\n },\n {\n x: endPoint.x,\n y: yRange[0]\n },\n {\n x: endPoint.x,\n y: yRange[1]\n },\n {\n x: startPoint.x,\n y: yRange[1]\n }\n ];\n } else if (brushType === 'y') {\n maskPoints = [\n {\n x: xRange[0],\n y: startPoint.y\n },\n {\n x: xRange[0],\n y: endPoint.y\n },\n {\n x: xRange[1],\n y: endPoint.y\n },\n {\n x: xRange[1],\n y: startPoint.y\n }\n ];\n } else {\n maskPoints = cloneDeep(this._cacheDrawPoints); // _cacheDrawPoints在不断更新,所以这里需要cloneDeep\n }\n return maskPoints;\n }\n\n protected _addBrushMask() {\n const { brushStyle, hasMask } = this.attribute as BrushAttributes;\n const brushMask = graphicCreator.polygon({\n points: cloneDeep(this._cacheDrawPoints), // _cacheDrawPoints在不断更新,所以这里需要cloneDeep\n cursor: 'move',\n pickable: false,\n ...brushStyle,\n opacity: hasMask ? brushStyle.opacity ?? 1 : 0\n });\n brushMask.name = `brush-${Date.now()}`; // 用Date给mask唯一标记\n this._operatingMask = brushMask;\n this._container.add(brushMask);\n this._brushMaskAABBBoundsDict[brushMask.name] = brushMask.AABBBounds;\n }\n\n private _outOfInteractiveRange(e: FederatedPointerEvent) {\n // 在返回坐标时,将其限制在交互范围内\n const { interactiveRange } = this.attribute as BrushAttributes;\n const { minY = -Infinity, maxY = Infinity, minX = -Infinity, maxX = Infinity } = interactiveRange;\n const pos = this.eventPosToStagePos(e);\n if (pos.x > maxX || pos.x < minX || pos.y > maxY || pos.y < minY) {\n return true;\n }\n return false;\n }\n\n /** 事件系统坐标转换为stage坐标 */\n protected eventPosToStagePos(e: FederatedPointerEvent) {\n const stagePosition = this.stage?.window.getBoundingClientRect();\n return {\n x: e.clientX - (stagePosition?.left || 0) - (this.stage?.x || 0),\n y: e.clientY - (stagePosition?.top || 0) - (this.stage?.y || 0)\n };\n }\n\n protected render() {\n this.bindBrushEvents();\n const group = this.createOrUpdateChild('brush-container', {}, 'group') as unknown as IGroup;\n this._container = group;\n }\n\n setUpdateDragMaskCallback(\n callback: (operateParams: {\n operateType: string;\n operateMask: IPolygon;\n operatedMaskAABBBounds: { [name: string]: IBounds };\n }) => void\n ) {\n isFunction(callback) && (this._updateDragMaskCallback = callback);\n }\n\n releaseBrushEvents(): void {\n const {\n delayType = 'throttle',\n delayTime = 0,\n trigger = DEFAULT_BRUSH_ATTRIBUTES.trigger,\n updateTrigger = DEFAULT_BRUSH_ATTRIBUTES.updateTrigger,\n endTrigger = DEFAULT_BRUSH_ATTRIBUTES.endTrigger,\n resetTrigger = DEFAULT_BRUSH_ATTRIBUTES.resetTrigger\n } = this.attribute as BrushAttributes;\n this.stage.removeEventListener(trigger, this._onBrushStart as EventListener);\n this.stage.removeEventListener(updateTrigger, delayMap[delayType](this._onBrushing, delayTime) as EventListener);\n this.stage.removeEventListener(endTrigger, this._onBrushEnd as EventListener);\n this.stage.removeEventListener(resetTrigger, this._onBrushEnd as EventListener);\n }\n}\n"]}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export declare function loadBrushComponent(): void;
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../src/brush/register.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,aAAa,EAAE,eAAe,EAAE,MAAM,wBAAwB,CAAC;AAExE,MAAM,UAAU,kBAAkB;IAChC,aAAa,EAAE,CAAC;IAChB,eAAe,EAAE,CAAC;AACpB,CAAC","file":"register.js","sourcesContent":["import { registerGroup, registerPolygon } from '@visactor/vrender-kits';\n\nexport function loadBrushComponent() {\n registerGroup();\n registerPolygon();\n}\n"]}
|
package/es/brush/type.js
CHANGED
|
@@ -4,5 +4,4 @@ export var IOperateType;
|
|
|
4
4
|
IOperateType.drawStart = "drawStart", IOperateType.drawEnd = "drawEnd", IOperateType.drawing = "drawing",
|
|
5
5
|
IOperateType.moving = "moving", IOperateType.moveStart = "moveStart", IOperateType.moveEnd = "moveEnd",
|
|
6
6
|
IOperateType.brushClear = "brushClear";
|
|
7
|
-
}(IOperateType || (IOperateType = {}));
|
|
8
|
-
//# sourceMappingURL=type.js.map
|
|
7
|
+
}(IOperateType || (IOperateType = {}));
|
package/es/checkbox/checkbox.js
CHANGED
|
@@ -4,8 +4,12 @@ import { AbstractComponent } from "../core/base";
|
|
|
4
4
|
|
|
5
5
|
import { CustomEvent, Image, Rect, WrapText } from "@visactor/vrender-core";
|
|
6
6
|
|
|
7
|
+
import { loadCheckBoxComponent } from "./register";
|
|
8
|
+
|
|
7
9
|
const checkSvg = '<svg width="200" height="200" viewBox="0 0 1024 1024" fill="#fff" xmlns="http://www.w3.org/2000/svg"><path d="M877.44815445 206.10060629a64.72691371 64.72691371 0 0 0-95.14856334 4.01306852L380.73381888 685.46812814 235.22771741 533.48933518a64.72691371 64.72691371 0 0 0-92.43003222-1.03563036l-45.82665557 45.82665443a64.72691371 64.72691371 0 0 0-0.90617629 90.61767965l239.61903446 250.10479331a64.72691371 64.72691371 0 0 0 71.19960405 15.14609778 64.33855261 64.33855261 0 0 0 35.08198741-21.23042702l36.24707186-42.71976334 40.5190474-40.77795556-3.36579926-3.49525333 411.40426297-486.74638962a64.72691371 64.72691371 0 0 0-3.88361443-87.64024149l-45.3088404-45.43829334z"></path></svg>', indeterminateSvg = '<svg width="200" height="200" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg" fill="none"><path stroke="#fff" stroke-linecap="round" stroke-linejoin="round" stroke-width="5" d="M5 12h14"/></svg>';
|
|
8
10
|
|
|
11
|
+
loadCheckBoxComponent();
|
|
12
|
+
|
|
9
13
|
export class CheckBox extends AbstractComponent {
|
|
10
14
|
constructor(attributes, options) {
|
|
11
15
|
super((null == options ? void 0 : options.skipDefault) ? attributes : merge({}, CheckBox.defaultAttributes, attributes)),
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../src/checkbox/checkbox.ts"],"names":[],"mappings":"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","file":"checkbox.js","sourcesContent":["import { merge } from '@visactor/vutils';\nimport { AbstractComponent } from '../core/base';\nimport type { CheckboxAttributes } from './type';\nimport { CustomEvent, Image, Rect, WrapText } from '@visactor/vrender-core';\nimport type { ComponentOptions } from '../interface';\n\nconst checkSvg =\n '<svg width=\"200\" height=\"200\" viewBox=\"0 0 1024 1024\" fill=\"#fff\" xmlns=\"http://www.w3.org/2000/svg\"><path d=\"M877.44815445 206.10060629a64.72691371 64.72691371 0 0 0-95.14856334 4.01306852L380.73381888 685.46812814 235.22771741 533.48933518a64.72691371 64.72691371 0 0 0-92.43003222-1.03563036l-45.82665557 45.82665443a64.72691371 64.72691371 0 0 0-0.90617629 90.61767965l239.61903446 250.10479331a64.72691371 64.72691371 0 0 0 71.19960405 15.14609778 64.33855261 64.33855261 0 0 0 35.08198741-21.23042702l36.24707186-42.71976334 40.5190474-40.77795556-3.36579926-3.49525333 411.40426297-486.74638962a64.72691371 64.72691371 0 0 0-3.88361443-87.64024149l-45.3088404-45.43829334z\"></path></svg>';\n\nconst indeterminateSvg =\n '<svg width=\"200\" height=\"200\" viewBox=\"0 0 24 24\" xmlns=\"http://www.w3.org/2000/svg\" fill=\"none\"><path stroke=\"#fff\" stroke-linecap=\"round\" stroke-linejoin=\"round\" stroke-width=\"5\" d=\"M5 12h14\"/></svg>';\n\nexport class CheckBox extends AbstractComponent<Required<CheckboxAttributes>> {\n static defaultAttributes: Partial<CheckboxAttributes> = {\n interactive: true,\n disabled: false,\n checked: false,\n indeterminate: false,\n cursor: 'pointer',\n disableCursor: 'not-allowed',\n spaceBetweenTextAndIcon: 8,\n text: {\n text: 'text',\n fontSize: 14,\n fill: '#000',\n disableFill: 'rgb(201,205,212)',\n textBaseline: 'top',\n pickable: false\n },\n icon: {\n checkIconImage: checkSvg,\n indeterminateIconImage: indeterminateSvg,\n width: 10,\n height: 10,\n pickable: false\n },\n box: {\n width: 14,\n height: 14,\n cornerRadius: 2,\n fill: '#fff',\n stroke: 'rgb(229,230,235)',\n disableFill: 'rgb(242,243,245)',\n checkedFill: 'rgb(22, 93, 255)',\n checkedStroke: 'rgb(22, 93, 255)',\n disableCheckedFill: 'rgb(148, 191, 255)',\n disableCheckedStroke: 'rgb(148, 191, 255)',\n pickable: false\n }\n };\n _box: Rect;\n _checkIcon: Image;\n _indeterminateIcon: Image;\n _text: WrapText;\n\n constructor(attributes: CheckboxAttributes, options?: ComponentOptions) {\n super(options?.skipDefault ? attributes : merge({}, CheckBox.defaultAttributes, attributes));\n this.renderGroup();\n\n this.onBeforeAttributeUpdate = (val: any, attributes: any, key: null | string | string[]) => {\n if ('interactive' in val) {\n this.setAttribute('pickable', val.interactive);\n }\n if ('disabled' in val) {\n this.setAttribute('cursor', val.disable ? this.attribute.disableCursor : this.attribute.cursor);\n }\n return undefined;\n };\n\n this.addEventListener('click', this.handleClick);\n }\n\n render() {\n this.removeAllChild();\n\n this.renderBox();\n this.renderIcon();\n this.renderText();\n this.layout();\n }\n\n renderBox() {\n this._box = new Rect(merge({}, this.attribute.box));\n const isCheckedOrIndeterminate = this.attribute.checked || this.attribute.indeterminate;\n if (isCheckedOrIndeterminate && this.attribute.disabled) {\n this._box.setAttributes({\n fill: this.attribute.box.disableCheckedFill,\n stroke: this.attribute.box.disableCheckedStroke\n });\n } else if (isCheckedOrIndeterminate) {\n this._box.setAttributes({\n fill: this.attribute.box.checkedFill,\n stroke: this.attribute.box.checkedStroke\n });\n }\n this.appendChild(this._box);\n }\n\n renderIcon() {\n this._checkIcon = new Image(merge({ image: this.attribute.icon.checkIconImage }, this.attribute.icon));\n this.appendChild(this._checkIcon);\n this._indeterminateIcon = new Image(\n merge(\n {\n image: this.attribute.icon.indeterminateIconImage\n },\n this.attribute.icon\n )\n );\n this.appendChild(this._indeterminateIcon);\n\n if (this.attribute.checked) {\n this._checkIcon.setAttribute('visible', true);\n this._indeterminateIcon.setAttribute('visible', false);\n } else if (this.attribute.indeterminate) {\n this._checkIcon.setAttribute('visible', false);\n this._indeterminateIcon.setAttribute('visible', true);\n } else {\n this._checkIcon.setAttribute('visible', false);\n this._indeterminateIcon.setAttribute('visible', false);\n }\n }\n\n renderText() {\n this._text = new WrapText(merge({}, this.attribute.text));\n if (this.attribute.disabled) {\n this._text.setAttribute('fill', this.attribute.text.disableFill);\n }\n this.appendChild(this._text);\n }\n\n renderGroup() {\n if (!this.attribute.interactive) {\n this.setAttribute('pickable', false);\n }\n if (this.attribute.disabled) {\n this.setAttribute('cursor', this.attribute.disableCursor);\n }\n }\n\n layout() {\n const boxHeight = this.attribute.box.height;\n const iconHeight = this.attribute.icon.height;\n const textHeight = this._text.AABBBounds.height();\n const maxHeight = Math.max(boxHeight, iconHeight, textHeight);\n const boxY = maxHeight / 2 - boxHeight / 2;\n const iconY = maxHeight / 2 - iconHeight / 2;\n const textY = maxHeight / 2 - textHeight / 2;\n\n const boxWidth = this.attribute.box.width;\n const iconWidth = this.attribute.icon.width;\n const maxWidth = Math.max(boxWidth, iconWidth);\n const boxX = maxWidth / 2 - boxWidth / 2;\n const iconX = maxWidth / 2 - iconWidth / 2;\n const textX = maxWidth + this.attribute.spaceBetweenTextAndIcon;\n\n this._box.setAttributes({\n x: boxX,\n y: boxY\n });\n this._checkIcon.setAttributes({\n x: iconX,\n y: iconY\n });\n this._indeterminateIcon.setAttributes({\n x: iconX,\n y: iconY\n });\n this._text.setAttributes({\n x: textX,\n y: textY\n });\n }\n\n handleClick() {\n if (this.attribute.disabled) {\n return;\n } else if (this.attribute.checked) {\n this.setAttribute('checked', false);\n this.setAttribute('indeterminate', false);\n } else {\n this.setAttribute('checked', true);\n this.setAttribute('indeterminate', false);\n }\n const changeEvent = new CustomEvent('checkbox_state_change', {\n eventType: 'checkbox_state_change',\n checked: this.attribute.checked\n } as unknown) as any;\n changeEvent.manager = (this.stage as any)?.eventSystem.manager;\n this.dispatchEvent(changeEvent);\n }\n}\n"]}
|
|
1
|
+
{"version":3,"sources":["../src/checkbox/checkbox.ts"],"names":[],"mappings":"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","file":"checkbox.js","sourcesContent":["import { merge } from '@visactor/vutils';\nimport { AbstractComponent } from '../core/base';\nimport type { CheckboxAttributes } from './type';\nimport { CustomEvent, Image, Rect, WrapText } from '@visactor/vrender-core';\nimport type { ComponentOptions } from '../interface';\nimport { loadCheckBoxComponent } from './register';\n\nconst checkSvg =\n '<svg width=\"200\" height=\"200\" viewBox=\"0 0 1024 1024\" fill=\"#fff\" xmlns=\"http://www.w3.org/2000/svg\"><path d=\"M877.44815445 206.10060629a64.72691371 64.72691371 0 0 0-95.14856334 4.01306852L380.73381888 685.46812814 235.22771741 533.48933518a64.72691371 64.72691371 0 0 0-92.43003222-1.03563036l-45.82665557 45.82665443a64.72691371 64.72691371 0 0 0-0.90617629 90.61767965l239.61903446 250.10479331a64.72691371 64.72691371 0 0 0 71.19960405 15.14609778 64.33855261 64.33855261 0 0 0 35.08198741-21.23042702l36.24707186-42.71976334 40.5190474-40.77795556-3.36579926-3.49525333 411.40426297-486.74638962a64.72691371 64.72691371 0 0 0-3.88361443-87.64024149l-45.3088404-45.43829334z\"></path></svg>';\n\nconst indeterminateSvg =\n '<svg width=\"200\" height=\"200\" viewBox=\"0 0 24 24\" xmlns=\"http://www.w3.org/2000/svg\" fill=\"none\"><path stroke=\"#fff\" stroke-linecap=\"round\" stroke-linejoin=\"round\" stroke-width=\"5\" d=\"M5 12h14\"/></svg>';\n\nloadCheckBoxComponent();\nexport class CheckBox extends AbstractComponent<Required<CheckboxAttributes>> {\n static defaultAttributes: Partial<CheckboxAttributes> = {\n interactive: true,\n disabled: false,\n checked: false,\n indeterminate: false,\n cursor: 'pointer',\n disableCursor: 'not-allowed',\n spaceBetweenTextAndIcon: 8,\n text: {\n text: 'text',\n fontSize: 14,\n fill: '#000',\n disableFill: 'rgb(201,205,212)',\n textBaseline: 'top',\n pickable: false\n },\n icon: {\n checkIconImage: checkSvg,\n indeterminateIconImage: indeterminateSvg,\n width: 10,\n height: 10,\n pickable: false\n },\n box: {\n width: 14,\n height: 14,\n cornerRadius: 2,\n fill: '#fff',\n stroke: 'rgb(229,230,235)',\n disableFill: 'rgb(242,243,245)',\n checkedFill: 'rgb(22, 93, 255)',\n checkedStroke: 'rgb(22, 93, 255)',\n disableCheckedFill: 'rgb(148, 191, 255)',\n disableCheckedStroke: 'rgb(148, 191, 255)',\n pickable: false\n }\n };\n _box: Rect;\n _checkIcon: Image;\n _indeterminateIcon: Image;\n _text: WrapText;\n\n constructor(attributes: CheckboxAttributes, options?: ComponentOptions) {\n super(options?.skipDefault ? attributes : merge({}, CheckBox.defaultAttributes, attributes));\n this.renderGroup();\n\n this.onBeforeAttributeUpdate = (val: any, attributes: any, key: null | string | string[]) => {\n if ('interactive' in val) {\n this.setAttribute('pickable', val.interactive);\n }\n if ('disabled' in val) {\n this.setAttribute('cursor', val.disable ? this.attribute.disableCursor : this.attribute.cursor);\n }\n return undefined;\n };\n\n this.addEventListener('click', this.handleClick);\n }\n\n render() {\n this.removeAllChild();\n\n this.renderBox();\n this.renderIcon();\n this.renderText();\n this.layout();\n }\n\n renderBox() {\n this._box = new Rect(merge({}, this.attribute.box));\n const isCheckedOrIndeterminate = this.attribute.checked || this.attribute.indeterminate;\n if (isCheckedOrIndeterminate && this.attribute.disabled) {\n this._box.setAttributes({\n fill: this.attribute.box.disableCheckedFill,\n stroke: this.attribute.box.disableCheckedStroke\n });\n } else if (isCheckedOrIndeterminate) {\n this._box.setAttributes({\n fill: this.attribute.box.checkedFill,\n stroke: this.attribute.box.checkedStroke\n });\n }\n this.appendChild(this._box);\n }\n\n renderIcon() {\n this._checkIcon = new Image(merge({ image: this.attribute.icon.checkIconImage }, this.attribute.icon));\n this.appendChild(this._checkIcon);\n this._indeterminateIcon = new Image(\n merge(\n {\n image: this.attribute.icon.indeterminateIconImage\n },\n this.attribute.icon\n )\n );\n this.appendChild(this._indeterminateIcon);\n\n if (this.attribute.checked) {\n this._checkIcon.setAttribute('visible', true);\n this._indeterminateIcon.setAttribute('visible', false);\n } else if (this.attribute.indeterminate) {\n this._checkIcon.setAttribute('visible', false);\n this._indeterminateIcon.setAttribute('visible', true);\n } else {\n this._checkIcon.setAttribute('visible', false);\n this._indeterminateIcon.setAttribute('visible', false);\n }\n }\n\n renderText() {\n this._text = new WrapText(merge({}, this.attribute.text));\n if (this.attribute.disabled) {\n this._text.setAttribute('fill', this.attribute.text.disableFill);\n }\n this.appendChild(this._text);\n }\n\n renderGroup() {\n if (!this.attribute.interactive) {\n this.setAttribute('pickable', false);\n }\n if (this.attribute.disabled) {\n this.setAttribute('cursor', this.attribute.disableCursor);\n }\n }\n\n layout() {\n const boxHeight = this.attribute.box.height;\n const iconHeight = this.attribute.icon.height;\n const textHeight = this._text.AABBBounds.height();\n const maxHeight = Math.max(boxHeight, iconHeight, textHeight);\n const boxY = maxHeight / 2 - boxHeight / 2;\n const iconY = maxHeight / 2 - iconHeight / 2;\n const textY = maxHeight / 2 - textHeight / 2;\n\n const boxWidth = this.attribute.box.width;\n const iconWidth = this.attribute.icon.width;\n const maxWidth = Math.max(boxWidth, iconWidth);\n const boxX = maxWidth / 2 - boxWidth / 2;\n const iconX = maxWidth / 2 - iconWidth / 2;\n const textX = maxWidth + this.attribute.spaceBetweenTextAndIcon;\n\n this._box.setAttributes({\n x: boxX,\n y: boxY\n });\n this._checkIcon.setAttributes({\n x: iconX,\n y: iconY\n });\n this._indeterminateIcon.setAttributes({\n x: iconX,\n y: iconY\n });\n this._text.setAttributes({\n x: textX,\n y: textY\n });\n }\n\n handleClick() {\n if (this.attribute.disabled) {\n return;\n } else if (this.attribute.checked) {\n this.setAttribute('checked', false);\n this.setAttribute('indeterminate', false);\n } else {\n this.setAttribute('checked', true);\n this.setAttribute('indeterminate', false);\n }\n const changeEvent = new CustomEvent('checkbox_state_change', {\n eventType: 'checkbox_state_change',\n checked: this.attribute.checked\n } as unknown) as any;\n changeEvent.manager = (this.stage as any)?.eventSystem.manager;\n this.dispatchEvent(changeEvent);\n }\n}\n"]}
|
package/es/checkbox/index.js
CHANGED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export declare function loadCheckBoxComponent(): void;
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../src/checkbox/register.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,aAAa,EAAE,aAAa,EAAE,YAAY,EAAE,gBAAgB,EAAE,MAAM,wBAAwB,CAAC;AAEtG,MAAM,UAAU,qBAAqB;IACnC,aAAa,EAAE,CAAC;IAChB,YAAY,EAAE,CAAC;IACf,gBAAgB,EAAE,CAAC;IACnB,aAAa,EAAE,CAAC;AAClB,CAAC","file":"register.js","sourcesContent":["import { registerGroup, registerImage, registerRect, registerWrapText } from '@visactor/vrender-kits';\n\nexport function loadCheckBoxComponent() {\n registerGroup();\n registerRect();\n registerWrapText();\n registerImage();\n}\n"]}
|
package/es/crosshair/circle.js
CHANGED
|
@@ -2,6 +2,10 @@ import { merge, PointService } from "@visactor/vutils";
|
|
|
2
2
|
|
|
3
3
|
import { CrosshairBase } from "./base";
|
|
4
4
|
|
|
5
|
+
import { loadCircleCrosshairComponent } from "./register";
|
|
6
|
+
|
|
7
|
+
loadCircleCrosshairComponent();
|
|
8
|
+
|
|
5
9
|
export class CircleCrosshair extends CrosshairBase {
|
|
6
10
|
constructor(attributes, options) {
|
|
7
11
|
super((null == options ? void 0 : options.skipDefault) ? attributes : merge({}, CircleCrosshair.defaultAttributes, attributes));
|