@visactor/vchart 2.0.0 → 2.0.1-alpha.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/build/es5/index.js +1 -1
- package/build/index.es.js +178 -122
- package/build/index.js +178 -121
- package/build/index.min.js +2 -2
- package/build/tsconfig.tsbuildinfo +1 -1
- package/cjs/chart/base/base-chart.d.ts +1 -0
- package/cjs/chart/base/base-chart.js +3 -0
- package/cjs/chart/base/base-chart.js.map +1 -1
- package/cjs/chart/interface/chart.d.ts +1 -0
- package/cjs/chart/interface/chart.js.map +1 -1
- package/cjs/compile/compiler.js +6 -2
- package/cjs/compile/compiler.js.map +1 -1
- package/cjs/component/axis/base-axis.js.map +1 -1
- package/cjs/component/axis/interface/common.js.map +1 -1
- package/cjs/component/brush/brush.js +6 -6
- package/cjs/component/brush/brush.js.map +1 -1
- package/cjs/component/brush/interface.d.ts +1 -0
- package/cjs/component/brush/interface.js.map +1 -1
- package/cjs/component/crosshair/base.d.ts +1 -1
- package/cjs/component/crosshair/base.js +1 -1
- package/cjs/component/crosshair/base.js.map +1 -1
- package/cjs/component/crosshair/utils/cartesian.js +2 -2
- package/cjs/component/crosshair/utils/cartesian.js.map +1 -1
- package/cjs/core/index.d.ts +1 -1
- package/cjs/core/index.js +1 -1
- package/cjs/core/index.js.map +1 -1
- package/cjs/core/instance-manager.js +1 -1
- package/cjs/core/interface.js +1 -1
- package/cjs/core/vchart.js +7 -8
- package/cjs/core/vchart.js.map +1 -1
- package/cjs/data/initialize.js +1 -1
- package/cjs/data/register.js +1 -1
- package/cjs/mark/base/base-mark.d.ts +3 -1
- package/cjs/mark/base/base-mark.js +33 -31
- package/cjs/mark/base/base-mark.js.map +1 -1
- package/cjs/mark/group.d.ts +1 -1
- package/cjs/mark/group.js +14 -10
- package/cjs/mark/group.js.map +1 -1
- package/cjs/mark/interface/common.d.ts +1 -1
- package/cjs/mark/interface/common.js.map +1 -1
- package/cjs/model/base-model.d.ts +1 -0
- package/cjs/model/base-model.js +1 -0
- package/cjs/model/base-model.js.map +1 -1
- package/cjs/model/interface.d.ts +1 -0
- package/cjs/model/interface.js.map +1 -1
- package/cjs/series/base/base-series.js +2 -3
- package/cjs/series/base/base-series.js.map +1 -1
- package/cjs/series/funnel/funnel.js +0 -2
- package/cjs/series/funnel/funnel.js.map +1 -1
- package/cjs/series/map/map.js +1 -2
- package/cjs/series/map/map.js.map +1 -1
- package/cjs/series/pie/pie.js +0 -1
- package/cjs/series/pie/pie.js.map +1 -1
- package/cjs/util/mark.d.ts +1 -0
- package/cjs/util/mark.js +10 -1
- package/cjs/util/mark.js.map +1 -1
- package/esm/chart/base/base-chart.d.ts +1 -0
- package/esm/chart/base/base-chart.js +3 -0
- package/esm/chart/base/base-chart.js.map +1 -1
- package/esm/chart/interface/chart.d.ts +1 -0
- package/esm/chart/interface/chart.js.map +1 -1
- package/esm/compile/compiler.js +7 -4
- package/esm/compile/compiler.js.map +1 -1
- package/esm/component/axis/base-axis.js.map +1 -1
- package/esm/component/axis/interface/common.js.map +1 -1
- package/esm/component/brush/brush.js +6 -6
- package/esm/component/brush/brush.js.map +1 -1
- package/esm/component/brush/interface.d.ts +1 -0
- package/esm/component/brush/interface.js.map +1 -1
- package/esm/component/crosshair/base.d.ts +1 -1
- package/esm/component/crosshair/base.js +1 -1
- package/esm/component/crosshair/base.js.map +1 -1
- package/esm/component/crosshair/utils/cartesian.js +2 -2
- package/esm/component/crosshair/utils/cartesian.js.map +1 -1
- package/esm/core/index.d.ts +1 -1
- package/esm/core/index.js +1 -1
- package/esm/core/index.js.map +1 -1
- package/esm/core/instance-manager.js +1 -1
- package/esm/core/interface.js +1 -1
- package/esm/core/vchart.js +6 -7
- package/esm/core/vchart.js.map +1 -1
- package/esm/data/initialize.js +1 -1
- package/esm/data/register.js +1 -1
- package/esm/mark/base/base-mark.d.ts +3 -1
- package/esm/mark/base/base-mark.js +34 -30
- package/esm/mark/base/base-mark.js.map +1 -1
- package/esm/mark/group.d.ts +1 -1
- package/esm/mark/group.js +17 -9
- package/esm/mark/group.js.map +1 -1
- package/esm/mark/interface/common.d.ts +1 -1
- package/esm/mark/interface/common.js.map +1 -1
- package/esm/model/base-model.d.ts +1 -0
- package/esm/model/base-model.js +1 -0
- package/esm/model/base-model.js.map +1 -1
- package/esm/model/interface.d.ts +1 -0
- package/esm/model/interface.js.map +1 -1
- package/esm/series/base/base-series.js +2 -3
- package/esm/series/base/base-series.js.map +1 -1
- package/esm/series/funnel/funnel.js +0 -2
- package/esm/series/funnel/funnel.js.map +1 -1
- package/esm/series/map/map.js +1 -2
- package/esm/series/map/map.js.map +1 -1
- package/esm/series/pie/pie.js +0 -1
- package/esm/series/pie/pie.js.map +1 -1
- package/esm/util/mark.d.ts +1 -0
- package/esm/util/mark.js +7 -0
- package/esm/util/mark.js.map +1 -1
- package/package.json +8 -8
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../src/component/crosshair/utils/cartesian.ts"],"names":[],"mappings":"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","file":"cartesian.js","sourcesContent":["import type { IText } from '@visactor/vrender-core';\nimport type { BandScale } from '@visactor/vscale';\n// eslint-disable-next-line no-duplicate-imports\nimport { isContinuous, isDiscrete } from '@visactor/vscale';\nimport type { ICartesianSeries } from '../../../series';\nimport { Direction, type ILayoutPoint, type StringOrNumber } from '../../../typings';\nimport type {\n AxisCurrentValueMap,\n CrossHairStateByField,\n CrossHairStateItem,\n IBound,\n ICrosshairInfo,\n ICrosshairLabelInfo,\n IHair\n} from '../interface';\nimport { getDatumByValue } from './common';\nimport { getAxisLabelOffset } from '../../axis/util';\nimport { isValid } from '@visactor/vutils';\nimport type { IAxis, ILinearAxis } from '../../axis';\nimport { getFormatFunction } from '../../util';\nimport type { IDimensionData } from '../../../event/events/dimension/interface';\n\nexport const layoutByValue = (\n stateByField: CrossHairStateByField,\n series: ICartesianSeries,\n layoutStartPoint: ILayoutPoint,\n enableRemain: boolean = false\n) => {\n if (!layoutStartPoint) {\n layoutStartPoint = { x: 0, y: 0 };\n }\n\n Object.keys(stateByField).forEach(field => {\n const { currentValue, cacheInfo, labelsComp, attributes, coordKey } = stateByField[field];\n let axis = null;\n let coord = 0;\n let axisLabel: IText = null;\n if (currentValue.size) {\n const item = Array.from(currentValue.values())[0];\n coord =\n item.axis.getScale().scale(item.datum) +\n item.axis.getLayoutStartPoint()[coordKey as 'x' | 'y'] -\n layoutStartPoint[coordKey as 'x' | 'y'];\n axis = item.axis;\n axisLabel = axis\n .getVRenderComponents()[0]\n ?.children[0]?.children[0]?.getChildByName('axis-label-container')\n ?.getChildByName('axis-label-container-layer-0')?.children[0];\n }\n const isVisible = !!currentValue.size && Number.isFinite(coord) && !Number.isNaN(coord);\n const useCache = enableRemain && !isVisible && isValid(cacheInfo);\n const newCacheInfo: ICrosshairInfo = useCache\n ? cacheInfo\n : {\n coordRange: [0, 0],\n sizeRange: [0, 0],\n coord,\n labelsTextStyle: {},\n labels: labelsComp\n ? Object.keys(labelsComp).reduce((res: Record<string, ICrosshairLabelInfo>, labelKey: string) => {\n res[labelKey] = { visible: false, text: '', dx: 0, dy: 0 };\n\n return res;\n }, {})\n : null,\n visible: isVisible,\n axis,\n axisLabel: axisLabel\n };\n if (newCacheInfo) {\n newCacheInfo._isCache = useCache;\n }\n let bandSize;\n let offsetSize: number = 0;\n\n // 计算x轴和y轴的数据,只允许最多一对x和一对y\n if (attributes) {\n currentValue.forEach(({ axis, datum: value = '' }) => {\n let niceLabelFormatter: (value: StringOrNumber) => StringOrNumber = null;\n const scale = axis.getScale();\n if (isDiscrete(scale.type)) {\n bandSize = (scale as BandScale).bandwidth();\n\n if (bandSize === 0 && (scale as BandScale).step) {\n offsetSize = (scale as BandScale).step();\n }\n } else if (isContinuous(scale.type)) {\n const field1 = field === 'xField' ? series.fieldX[0] : series.fieldY[0]; // todo\n const field2 = field === 'xField' ? series.fieldX2 : series.fieldY2; // todo\n const datum = getDatumByValue(series.getViewData().latestData, +value, field1, field2);\n if (datum) {\n const startX = field === 'xField' ? series.dataToPositionX(datum) : series.dataToPositionY(datum);\n if (field2) {\n bandSize = Math.abs(\n startX - (field === 'xField' ? series.dataToPositionX1(datum) : series.dataToPositionY1(datum))\n );\n value = `${datum[field1]} ~ ${datum[field2]}`;\n } else {\n bandSize = 1;\n }\n coord = startX;\n }\n niceLabelFormatter = (axis as ILinearAxis).niceLabelFormatter;\n }\n if (newCacheInfo && attributes.label?.visible && !useCache) {\n const labelOffset = getAxisLabelOffset(axis.getSpec());\n const axisOrient = axis.getOrient();\n const syncAxisLabelAngle = attributes.label?.syncAxisLabelAngle;\n if (newCacheInfo.labels[axisOrient]) {\n newCacheInfo.labels[axisOrient].visible = true;\n newCacheInfo.labels[axisOrient].text = value;\n if (axisOrient === 'left') {\n newCacheInfo.labels[axisOrient].dx = -labelOffset;\n newCacheInfo.labelsTextStyle[axisOrient] = {\n textAlign: syncAxisLabelAngle && axisLabel ? axisLabel.attribute.textAlign ?? 'right' : 'right',\n textBaseline: syncAxisLabelAngle && axisLabel ? axisLabel.attribute.textBaseline ?? 'middle' : 'middle'\n };\n } else if (axisOrient === 'right') {\n newCacheInfo.labels[axisOrient].dx = labelOffset;\n newCacheInfo.labelsTextStyle[axisOrient] = {\n textAlign: syncAxisLabelAngle && axisLabel ? axisLabel.attribute.textAlign ?? 'left' : 'left',\n textBaseline: syncAxisLabelAngle && axisLabel ? axisLabel.attribute.textBaseline ?? 'middle' : 'middle'\n };\n } else if (axisOrient === 'top') {\n newCacheInfo.labels[axisOrient].y = 0;\n newCacheInfo.labels[axisOrient].dy = -labelOffset;\n newCacheInfo.labelsTextStyle[axisOrient] = {\n textAlign: syncAxisLabelAngle && axisLabel ? axisLabel.attribute.textAlign ?? 'center' : 'center',\n textBaseline: syncAxisLabelAngle && axisLabel ? axisLabel.attribute.textBaseline ?? 'bottom' : 'bottom'\n };\n } else if (axisOrient === 'bottom') {\n newCacheInfo.labels[axisOrient].dy = labelOffset;\n newCacheInfo.labelsTextStyle[axisOrient] = {\n textAlign: syncAxisLabelAngle && axisLabel ? axisLabel.attribute.textAlign ?? 'center' : 'center',\n textBaseline: syncAxisLabelAngle && axisLabel ? axisLabel.attribute.textBaseline ?? 'top' : 'top'\n };\n }\n newCacheInfo.labels[axisOrient].defaultFormatter = niceLabelFormatter;\n }\n }\n });\n }\n\n if (newCacheInfo && !useCache) {\n const region = { x1: Infinity, y1: Infinity, x2: -Infinity, y2: -Infinity };\n setRegionArea(region, currentValue);\n if (field === 'xField') {\n newCacheInfo.coordRange = [region.x1, region.x2];\n newCacheInfo.sizeRange = [region.y1, region.y2];\n newCacheInfo.coord = coord + layoutStartPoint.x;\n if (newCacheInfo.labels) {\n newCacheInfo.labels.top.y = region.y1;\n newCacheInfo.labels.bottom.y = region.y2;\n }\n } else {\n newCacheInfo.coordRange = [region.y1, region.y2]; // todo\n newCacheInfo.sizeRange = [region.x1, region.x2];\n newCacheInfo.coord = coord + layoutStartPoint.y;\n\n if (newCacheInfo.labels) {\n newCacheInfo.labels.left.x = region.x1;\n newCacheInfo.labels.right.x = region.x2;\n }\n }\n\n if (newCacheInfo.coord < newCacheInfo.coordRange[0] || newCacheInfo.coord > newCacheInfo.coordRange[1]) {\n newCacheInfo.visible = false;\n }\n\n if (attributes && attributes.label) {\n Object.keys(newCacheInfo.labels).forEach(labelKey => {\n if (newCacheInfo.labels[labelKey].visible) {\n setFormattedCrosshairLabel(newCacheInfo.labels[labelKey], labelKey, attributes.label);\n }\n });\n }\n }\n\n stateByField[field].bandSize = bandSize ?? 0;\n stateByField[field].offsetSize = offsetSize;\n stateByField[field].cacheInfo = newCacheInfo;\n });\n\n return stateByField;\n};\n\nconst setFormattedCrosshairLabel = (labelInfo: ICrosshairLabelInfo, position: string, labelSpec: IHair['label']) => {\n const { formatMethod, formatter } = labelSpec;\n const { formatFunc, args } = getFormatFunction(formatMethod, formatter, labelInfo.text, {\n label: labelInfo.text,\n position\n });\n if (formatFunc) {\n labelInfo.text = formatFunc(...args);\n } else if (labelInfo.defaultFormatter) {\n labelInfo.text = labelInfo.defaultFormatter(labelInfo.text);\n }\n};\n\n// 计算x轴和y轴对应的region区域\nconst setRegionArea = (outRegion: IBound, currentValue: AxisCurrentValueMap) => {\n currentValue.forEach(({ axis }) => {\n const regions = axis.getRegions();\n regions.forEach(r => {\n const { x, y } = r.getLayoutStartPoint();\n const { width, height } = r.getLayoutRect();\n\n outRegion.x1 = Math.min(outRegion.x1, x);\n outRegion.y1 = Math.min(outRegion.y1, y);\n outRegion.x2 = Math.max(outRegion.x2, x + width);\n outRegion.y2 = Math.max(outRegion.y2, y + height);\n });\n });\n};\n\nexport const layoutCrosshair = (stateItem: CrossHairStateItem) => {\n const { cacheInfo, attributes, bandSize, offsetSize, coordKey, anotherAxisKey } = stateItem;\n const { coord, sizeRange } = cacheInfo;\n\n // 外部设置的size\n const type = attributes.type;\n let positionAttribute;\n if (type === 'line') {\n const pos = coord + bandSize / 2;\n\n positionAttribute = {\n visible: true,\n start: { [coordKey]: pos, [anotherAxisKey]: sizeRange[0] },\n end: { [coordKey]: pos, [anotherAxisKey]: sizeRange[1] }\n };\n } else if (type === 'rect') {\n const [offset0, offset1] = getRectSize(attributes, bandSize, offsetSize, cacheInfo.axis);\n const { coordRange } = cacheInfo;\n\n positionAttribute = {\n visible: true,\n start: {\n [coordKey]: Math.max(coord + offset0, coordRange[0]),\n [anotherAxisKey]: sizeRange[0]\n },\n end: {\n [coordKey]: Math.min(coord + offset1, coordRange[1]),\n [anotherAxisKey]: sizeRange[1]\n }\n };\n }\n\n return positionAttribute;\n};\n\nconst getRectSize = (hair: IHair, bandSize: number, offsetSize: number, axis: IAxis) => {\n // 外部设置的size\n const visualSize = bandSize === 0 ? offsetSize : bandSize;\n let size = visualSize;\n\n if (hair.style?.sizePercent) {\n // 按照百分比设置大小\n size = visualSize * hair.style.sizePercent;\n } else if (typeof hair.style?.size === 'number') {\n size = hair.style.size;\n } else if (typeof hair.style?.size === 'function') {\n const axisRect = axis.getLayoutRect();\n size = hair.style.size(axisRect, axis);\n }\n\n return bandSize === 0 ? [-size / 2, size / 2] : [bandSize / 2 - size / 2, size / 2 + bandSize / 2];\n};\n\nexport const getCartesianCrosshairRect = (dimensionData: IDimensionData, layoutStartPoint: ILayoutPoint) => {\n const currValueX: AxisCurrentValueMap = new Map();\n const currValueY: AxisCurrentValueMap = new Map();\n const { series, datum } = dimensionData;\n const isHorizontal = (series as ICartesianSeries).direction === Direction.horizontal;\n const axisHelper = isHorizontal\n ? (series as ICartesianSeries).getYAxisHelper()\n : (series as ICartesianSeries).getXAxisHelper();\n const axisId = axisHelper.getAxisId();\n const axis = series\n .getChart()\n .getComponentsByKey('axes')\n .find(axis => axis.id === axisId) as IAxis;\n\n if (!axis) {\n return undefined;\n }\n (isHorizontal ? currValueY : currValueX).set(axis.getSpecIndex(), {\n datum: series.getDatumPositionValues(datum[0], series.getDimensionField())?.[0],\n axis\n });\n\n const state: CrossHairStateByField = {\n xField: {\n coordKey: 'x',\n anotherAxisKey: 'y',\n currentValue: currValueX,\n attributes: {\n visible: !!currValueX.size,\n type: 'rect'\n }\n },\n yField: {\n coordKey: 'y',\n anotherAxisKey: 'x',\n currentValue: currValueY,\n attributes: {\n visible: !!currValueY.size,\n type: 'rect'\n }\n }\n };\n\n layoutByValue(state, series as ICartesianSeries, layoutStartPoint);\n\n if (state.xField.cacheInfo) {\n return layoutCrosshair(state.xField);\n }\n if (state.yField.cacheInfo) {\n return layoutCrosshair(state.yField);\n }\n return undefined;\n};\n"]}
|
|
1
|
+
{"version":3,"sources":["../src/component/crosshair/utils/cartesian.ts"],"names":[],"mappings":"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","file":"cartesian.js","sourcesContent":["import type { IText } from '@visactor/vrender-core';\nimport type { BandScale } from '@visactor/vscale';\n// eslint-disable-next-line no-duplicate-imports\nimport { isContinuous, isDiscrete } from '@visactor/vscale';\nimport type { ICartesianSeries } from '../../../series';\nimport { Direction, type ILayoutPoint, type StringOrNumber } from '../../../typings';\nimport type {\n AxisCurrentValueMap,\n CrossHairStateByField,\n CrossHairStateItem,\n IBound,\n ICrosshairInfo,\n ICrosshairLabelInfo,\n IHair\n} from '../interface';\nimport { getDatumByValue } from './common';\nimport { getAxisLabelOffset } from '../../axis/util';\nimport { isValid } from '@visactor/vutils';\nimport type { IAxis, ILinearAxis } from '../../axis';\nimport { getFormatFunction } from '../../util';\nimport type { IDimensionData } from '../../../event/events/dimension/interface';\n\nexport const layoutByValue = (\n stateByField: CrossHairStateByField,\n series: ICartesianSeries,\n layoutStartPoint: ILayoutPoint,\n enableRemain: boolean = false\n) => {\n if (!layoutStartPoint) {\n layoutStartPoint = { x: 0, y: 0 };\n }\n\n Object.keys(stateByField).forEach(field => {\n const { currentValue, cacheInfo, labelsComp, attributes, coordKey } = stateByField[field];\n let axis = null;\n let coord = 0;\n let axisLabel: IText = null;\n if (currentValue.size) {\n const item = Array.from(currentValue.values())[0];\n coord =\n item.axis.getScale().scale(item.datum) +\n item.axis.getLayoutStartPoint()[coordKey as 'x' | 'y'] -\n layoutStartPoint[coordKey as 'x' | 'y'];\n axis = item.axis;\n axisLabel = axis\n .getVRenderComponents()[0]\n ?.children[0]?.children[0]?.children[0]?.getChildByName('axis-label-container')\n ?.getChildByName('axis-label-container-layer-0')?.children[0];\n }\n const isVisible = !!currentValue.size && Number.isFinite(coord) && !Number.isNaN(coord);\n const useCache = enableRemain && !isVisible && isValid(cacheInfo);\n const newCacheInfo: ICrosshairInfo = useCache\n ? cacheInfo\n : {\n coordRange: [0, 0],\n sizeRange: [0, 0],\n coord,\n labelsTextStyle: {},\n labels: labelsComp\n ? Object.keys(labelsComp).reduce((res: Record<string, ICrosshairLabelInfo>, labelKey: string) => {\n res[labelKey] = { visible: false, text: '', dx: 0, dy: 0 };\n\n return res;\n }, {})\n : null,\n visible: isVisible,\n axis,\n axisLabel: axisLabel\n };\n if (newCacheInfo) {\n newCacheInfo._isCache = useCache;\n }\n let bandSize;\n let offsetSize: number = 0;\n\n // 计算x轴和y轴的数据,只允许最多一对x和一对y\n if (attributes) {\n currentValue.forEach(({ axis, datum: value = '' }) => {\n let niceLabelFormatter: (value: StringOrNumber) => StringOrNumber = null;\n const scale = axis.getScale();\n if (isDiscrete(scale.type)) {\n bandSize = (scale as BandScale).bandwidth();\n\n if (bandSize === 0 && (scale as BandScale).step) {\n offsetSize = (scale as BandScale).step();\n }\n } else if (isContinuous(scale.type)) {\n const field1 = field === 'xField' ? series.fieldX[0] : series.fieldY[0]; // todo\n const field2 = field === 'xField' ? series.fieldX2 : series.fieldY2; // todo\n const datum = getDatumByValue(series.getViewData().latestData, +value, field1, field2);\n if (datum) {\n const startX = field === 'xField' ? series.dataToPositionX(datum) : series.dataToPositionY(datum);\n if (field2) {\n bandSize = Math.abs(\n startX - (field === 'xField' ? series.dataToPositionX1(datum) : series.dataToPositionY1(datum))\n );\n value = `${datum[field1]} ~ ${datum[field2]}`;\n } else {\n bandSize = 1;\n }\n coord = startX;\n }\n niceLabelFormatter = (axis as ILinearAxis).niceLabelFormatter;\n }\n if (newCacheInfo && attributes.label?.visible && !useCache) {\n const labelOffset = getAxisLabelOffset(axis.getSpec());\n const axisOrient = axis.getOrient();\n const syncAxisLabelAngle = attributes.label?.syncAxisLabelAngle;\n if (newCacheInfo.labels[axisOrient]) {\n newCacheInfo.labels[axisOrient].visible = true;\n newCacheInfo.labels[axisOrient].text = value;\n if (axisOrient === 'left') {\n newCacheInfo.labels[axisOrient].dx = -labelOffset;\n newCacheInfo.labelsTextStyle[axisOrient] = {\n textAlign: syncAxisLabelAngle && axisLabel ? axisLabel.attribute.textAlign ?? 'right' : 'right',\n textBaseline: syncAxisLabelAngle && axisLabel ? axisLabel.attribute.textBaseline ?? 'middle' : 'middle'\n };\n } else if (axisOrient === 'right') {\n newCacheInfo.labels[axisOrient].dx = labelOffset;\n newCacheInfo.labelsTextStyle[axisOrient] = {\n textAlign: syncAxisLabelAngle && axisLabel ? axisLabel.attribute.textAlign ?? 'left' : 'left',\n textBaseline: syncAxisLabelAngle && axisLabel ? axisLabel.attribute.textBaseline ?? 'middle' : 'middle'\n };\n } else if (axisOrient === 'top') {\n newCacheInfo.labels[axisOrient].y = 0;\n newCacheInfo.labels[axisOrient].dy = -labelOffset;\n newCacheInfo.labelsTextStyle[axisOrient] = {\n textAlign: syncAxisLabelAngle && axisLabel ? axisLabel.attribute.textAlign ?? 'center' : 'center',\n textBaseline: syncAxisLabelAngle && axisLabel ? axisLabel.attribute.textBaseline ?? 'bottom' : 'bottom'\n };\n } else if (axisOrient === 'bottom') {\n newCacheInfo.labels[axisOrient].dy = labelOffset;\n newCacheInfo.labelsTextStyle[axisOrient] = {\n textAlign: syncAxisLabelAngle && axisLabel ? axisLabel.attribute.textAlign ?? 'center' : 'center',\n textBaseline: syncAxisLabelAngle && axisLabel ? axisLabel.attribute.textBaseline ?? 'top' : 'top'\n };\n }\n newCacheInfo.labels[axisOrient].defaultFormatter = niceLabelFormatter;\n }\n }\n });\n }\n\n if (newCacheInfo && !useCache) {\n const region = { x1: Infinity, y1: Infinity, x2: -Infinity, y2: -Infinity };\n setRegionArea(region, currentValue);\n if (field === 'xField') {\n newCacheInfo.coordRange = [region.x1, region.x2];\n newCacheInfo.sizeRange = [region.y1, region.y2];\n newCacheInfo.coord = coord + layoutStartPoint.x;\n if (newCacheInfo.labels) {\n newCacheInfo.labels.top.y = region.y1;\n newCacheInfo.labels.bottom.y = region.y2;\n }\n } else {\n newCacheInfo.coordRange = [region.y1, region.y2]; // todo\n newCacheInfo.sizeRange = [region.x1, region.x2];\n newCacheInfo.coord = coord + layoutStartPoint.y;\n\n if (newCacheInfo.labels) {\n newCacheInfo.labels.left.x = region.x1;\n newCacheInfo.labels.right.x = region.x2;\n }\n }\n\n if (newCacheInfo.coord < newCacheInfo.coordRange[0] || newCacheInfo.coord > newCacheInfo.coordRange[1]) {\n newCacheInfo.visible = false;\n }\n\n if (attributes && attributes.label) {\n Object.keys(newCacheInfo.labels).forEach(labelKey => {\n if (newCacheInfo.labels[labelKey].visible) {\n setFormattedCrosshairLabel(newCacheInfo.labels[labelKey], labelKey, attributes.label);\n }\n });\n }\n }\n\n stateByField[field].bandSize = bandSize ?? 0;\n stateByField[field].offsetSize = offsetSize;\n stateByField[field].cacheInfo = newCacheInfo;\n });\n\n return stateByField;\n};\n\nconst setFormattedCrosshairLabel = (labelInfo: ICrosshairLabelInfo, position: string, labelSpec: IHair['label']) => {\n const { formatMethod, formatter } = labelSpec;\n const { formatFunc, args } = getFormatFunction(formatMethod, formatter, labelInfo.text, {\n label: labelInfo.text,\n position\n });\n if (formatFunc) {\n labelInfo.text = formatFunc(...args);\n } else if (labelInfo.defaultFormatter) {\n labelInfo.text = labelInfo.defaultFormatter(labelInfo.text);\n }\n};\n\n// 计算x轴和y轴对应的region区域\nconst setRegionArea = (outRegion: IBound, currentValue: AxisCurrentValueMap) => {\n currentValue.forEach(({ axis }) => {\n const regions = axis.getRegions();\n regions.forEach(r => {\n const { x, y } = r.getLayoutStartPoint();\n const { width, height } = r.getLayoutRect();\n\n outRegion.x1 = Math.min(outRegion.x1, x);\n outRegion.y1 = Math.min(outRegion.y1, y);\n outRegion.x2 = Math.max(outRegion.x2, x + width);\n outRegion.y2 = Math.max(outRegion.y2, y + height);\n });\n });\n};\n\nexport const layoutCrosshair = (stateItem: CrossHairStateItem) => {\n const { cacheInfo, attributes, bandSize, offsetSize, coordKey, anotherAxisKey } = stateItem;\n const { coord, sizeRange } = cacheInfo;\n\n // 外部设置的size\n const type = attributes.type;\n let positionAttribute;\n if (type === 'line') {\n const pos = coord + bandSize / 2;\n\n positionAttribute = {\n visible: true,\n start: { [coordKey]: pos, [anotherAxisKey]: sizeRange[0] },\n end: { [coordKey]: pos, [anotherAxisKey]: sizeRange[1] }\n };\n } else if (type === 'rect') {\n const [offset0, offset1] = getRectSize(attributes, bandSize, offsetSize, cacheInfo.axis);\n const { coordRange } = cacheInfo;\n\n positionAttribute = {\n visible: true,\n start: {\n [coordKey]: Math.max(coord + offset0, coordRange[0]),\n [anotherAxisKey]: sizeRange[0]\n },\n end: {\n [coordKey]: Math.min(coord + offset1, coordRange[1]),\n [anotherAxisKey]: sizeRange[1]\n }\n };\n }\n\n return positionAttribute;\n};\n\nconst getRectSize = (hair: IHair, bandSize: number, offsetSize: number, axis: IAxis) => {\n // 外部设置的size\n const visualSize = bandSize === 0 ? offsetSize : bandSize;\n let size = visualSize;\n\n if (hair.style?.sizePercent) {\n // 按照百分比设置大小\n size = visualSize * hair.style.sizePercent;\n } else if (typeof hair.style?.size === 'number') {\n size = hair.style.size;\n } else if (typeof hair.style?.size === 'function') {\n const axisRect = axis.getLayoutRect();\n size = hair.style.size(axisRect, axis);\n }\n\n return bandSize === 0 ? [-size / 2, size / 2] : [bandSize / 2 - size / 2, size / 2 + bandSize / 2];\n};\n\nexport const getCartesianCrosshairRect = (dimensionData: IDimensionData, layoutStartPoint: ILayoutPoint) => {\n const currValueX: AxisCurrentValueMap = new Map();\n const currValueY: AxisCurrentValueMap = new Map();\n const { series, datum } = dimensionData;\n const isHorizontal = (series as ICartesianSeries).direction === Direction.horizontal;\n const axisHelper = isHorizontal\n ? (series as ICartesianSeries).getYAxisHelper()\n : (series as ICartesianSeries).getXAxisHelper();\n const axisId = axisHelper.getAxisId();\n const axis = series\n .getChart()\n .getComponentsByKey('axes')\n .find(axis => axis.id === axisId) as IAxis;\n\n if (!axis) {\n return undefined;\n }\n (isHorizontal ? currValueY : currValueX).set(axis.getSpecIndex(), {\n datum: series.getDatumPositionValues(datum[0], series.getDimensionField())?.[0],\n axis\n });\n\n const state: CrossHairStateByField = {\n xField: {\n coordKey: 'x',\n anotherAxisKey: 'y',\n currentValue: currValueX,\n attributes: {\n visible: !!currValueX.size,\n type: 'rect'\n }\n },\n yField: {\n coordKey: 'y',\n anotherAxisKey: 'x',\n currentValue: currValueY,\n attributes: {\n visible: !!currValueY.size,\n type: 'rect'\n }\n }\n };\n\n layoutByValue(state, series as ICartesianSeries, layoutStartPoint);\n\n if (state.xField.cacheInfo) {\n return layoutCrosshair(state.xField);\n }\n if (state.yField.cacheInfo) {\n return layoutCrosshair(state.yField);\n }\n return undefined;\n};\n"]}
|
package/esm/core/index.d.ts
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import { VChart } from './vchart';
|
|
2
2
|
import { Factory } from './factory';
|
|
3
3
|
export { VChart, Factory };
|
|
4
|
-
export declare const version = "2.0.
|
|
4
|
+
export declare const version = "2.0.1-alpha.1";
|
|
5
5
|
export type { IVChart } from './interface';
|
|
6
6
|
export type { IStateSpec, StateValueType } from '../compile/mark';
|
|
7
7
|
export type { IRegion } from '../region/interface';
|
package/esm/core/index.js
CHANGED
package/esm/core/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../src/core/index.ts"],"names":[],"mappings":"AAIA,OAAO,EAAE,MAAM,EAAE,MAAM,UAAU,CAAC;AAClC,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAEpC,OAAO,EAAE,MAAM,EAAE,OAAO,EAAE,CAAC;AAG3B,MAAM,CAAC,MAAM,OAAO,GAAG,
|
|
1
|
+
{"version":3,"sources":["../src/core/index.ts"],"names":[],"mappings":"AAIA,OAAO,EAAE,MAAM,EAAE,MAAM,UAAU,CAAC;AAClC,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAEpC,OAAO,EAAE,MAAM,EAAE,OAAO,EAAE,CAAC;AAG3B,MAAM,CAAC,MAAM,OAAO,GAAG,eAAe,CAAC;AAOvC,cAAc,oBAAoB,CAAC;AACnC,cAAc,oBAAoB,CAAC;AACnC,cAAc,oBAAoB,CAAC;AAEnC,cAAc,aAAa,CAAC;AAC5B,cAAc,YAAY,CAAC;AAI3B,cAAc,kBAAkB,CAAC;AACjC,cAAc,kBAAkB,CAAC;AACjC,cAAc,oBAAoB,CAAC;AACnC,OAAO,EAAE,cAAc,EAAE,MAAM,uBAAuB,CAAC;AACvD,OAAO,EAAE,cAAc,EAAE,MAAM,oBAAoB,CAAC;AACpD,OAAO,EAAE,gBAAgB,EAAE,MAAM,2BAA2B,CAAC;AAC7D,OAAO,EAAE,UAAU,EAAE,MAAM,mBAAmB,CAAC;AAK/C,cAAc,uBAAuB,CAAC;AACtC,cAAc,mBAAmB,CAAC;AAGlC,cAAc,oBAAoB,CAAC;AAGnC,cAAc,gBAAgB,CAAC;AAG/B,OAAO,EACL,OAAO,EACP,WAAW,EACX,cAAc,EACd,UAAU,EACV,SAAS,EACT,UAAU,EACV,UAAU,EACV,UAAU,EACV,YAAY,EACb,MAAM,wBAAwB,CAAC;AAChC,OAAO,EAAE,YAAY,EAAE,WAAW,EAAE,MAAM,2BAA2B,CAAC;AAGtE,cAAc,eAAe,CAAC;AAC9B,OAAO,EAAE,kBAAkB,EAAE,MAAM,eAAe,CAAC;AACnD,OAAO,EAAE,WAAW,EAAE,MAAM,mBAAmB,CAAC;AAChD,OAAO,EAAE,6BAA6B,EAAE,gCAAgC,EAAE,MAAM,kBAAkB,CAAC;AACnG,OAAO,EAAE,MAAM,EAAE,MAAM,2BAA2B,CAAC;AACnD,OAAO,EAAE,IAAI,EAAE,MAAM,eAAe,CAAC;AACrC,OAAO,EAAE,WAAW,EAAE,MAAM,cAAc,CAAC","file":"index.js","sourcesContent":["/**\n * @description The core module of VChart, containing the necessary interfaces for using VChart.\n */\n\nimport { VChart } from './vchart';\nimport { Factory } from './factory';\n\nexport { VChart, Factory };\n\n// export the version\nexport const version = \"2.0.1-alpha.1\";\n\n// export necessary types\nexport type { IVChart } from './interface';\nexport type { IStateSpec, StateValueType } from '../compile/mark';\nexport type { IRegion } from '../region/interface';\n\nexport * from '../event/interface';\nexport * from '../theme/interface';\nexport * from '../model/interface';\n\nexport * from './interface';\nexport * from '../typings';\nexport type { IMarkGraphic, IGraphicContext } from '../mark/interface/';\n\n// some constants\nexport * from '../constant/base';\nexport * from '../constant/data';\nexport * from '../constant/layout';\nexport { AttributeLevel } from '../constant/attribute';\nexport { TransformLevel } from '../data/initialize';\nexport { STATE_VALUE_ENUM } from '../compile/mark/interface';\nexport { ChartEvent } from '../constant/event';\n\n/**\n * spec\n */\nexport * from '../typings/spec/index';\nexport * from '../typings/visual';\n\n// tooltip\nexport * from '../typings/tooltip';\n\n// theme\nexport * from '../theme/index';\n\n// vrender\nexport {\n vglobal,\n createGroup,\n createRichText,\n createText,\n createArc,\n createArea,\n createRect,\n createLine,\n createSymbol\n} from '@visactor/vrender-core';\nexport { ManualTicker, StreamLight } from '@visactor/vrender-animate';\n\n// utils\nexport * from '../util/space';\nexport { transformToGraphic } from '../util/style';\nexport { getSpecInfo } from '../component/util';\nexport { registerDataSetInstanceParser, registerDataSetInstanceTransform } from '../data/register';\nexport { lookup } from '../data/transforms/lookup';\nexport { warn } from '../util/debug';\nexport { measureText } from '../util/text';\n"]}
|
package/esm/core/interface.js
CHANGED
|
@@ -1,2 +1,2 @@
|
|
|
1
1
|
export { };
|
|
2
|
-
//# sourceMappingURL=interface.js.map
|
|
2
|
+
//# sourceMappingURL=interface.js.map
|
package/esm/core/vchart.js
CHANGED
|
@@ -209,7 +209,7 @@ export class VChart {
|
|
|
209
209
|
}, this._renderSync = (option = {}) => {
|
|
210
210
|
var _a;
|
|
211
211
|
const self = this;
|
|
212
|
-
return this._beforeRender(option) ? (
|
|
212
|
+
return this._beforeRender(option) ? (null === (_a = this._compiler) || void 0 === _a || _a.render(option.morphConfig),
|
|
213
213
|
this._updateAnimateState(!1), this._afterRender(), self) : self;
|
|
214
214
|
}, this._updateSpec = (spec, forceMerge = !1, userUpdateOptions) => {
|
|
215
215
|
var _a;
|
|
@@ -434,7 +434,7 @@ export class VChart {
|
|
|
434
434
|
const updateGraphicAnimationState = graphic => {
|
|
435
435
|
var _a;
|
|
436
436
|
const diffState = null === (_a = graphic.context) || void 0 === _a ? void 0 : _a.diffState;
|
|
437
|
-
return initial ? "exit" === diffState ?
|
|
437
|
+
return initial ? "exit" === diffState ? AnimationStateEnum.none : AnimationStateEnum.appear : diffState;
|
|
438
438
|
};
|
|
439
439
|
this._compiler.getRootMarks().forEach((mark => {
|
|
440
440
|
mark.updateAnimationState(updateGraphicAnimationState);
|
|
@@ -479,14 +479,13 @@ export class VChart {
|
|
|
479
479
|
}
|
|
480
480
|
updateDataSync(id, data, parserOptions, userUpdateOptions) {
|
|
481
481
|
return isNil(this._dataSet) ? this : this._chart ? (this._chart.updateData(id, data, !0, parserOptions),
|
|
482
|
-
|
|
483
|
-
this._updateAnimateState(!0)), this) : (this._spec.data = array(this._spec.data),
|
|
482
|
+
(null == userUpdateOptions ? void 0 : userUpdateOptions.reAnimate) && (this.stopAnimation(),
|
|
483
|
+
this._updateAnimateState(!0)), this._compiler.render(), this) : (this._spec.data = array(this._spec.data),
|
|
484
484
|
this._updateDataById(id, data, parserOptions), this);
|
|
485
485
|
}
|
|
486
486
|
updateFullDataSync(data, reRender = !0, userUpdateOptions) {
|
|
487
|
-
if (this._chart) return this._chart.updateFullData(data), reRender && (this.
|
|
488
|
-
(
|
|
489
|
-
this._updateAnimateState(!0))), this;
|
|
487
|
+
if (this._chart) return this._chart.updateFullData(data), reRender && ((null == userUpdateOptions ? void 0 : userUpdateOptions.reAnimate) && (this.stopAnimation(),
|
|
488
|
+
this._updateAnimateState(!0)), this._compiler.render()), this;
|
|
490
489
|
const prevData = array(this._spec.data);
|
|
491
490
|
return array(data).forEach((d => {
|
|
492
491
|
const {id: id, values: values, parser: parser, fields: fields} = d, preDV = prevData.find((dv => dv.name === id));
|