@visactor/vchart 1.4.0-alpha.7 → 1.4.0-beta.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.js +1045 -672
- package/build/index.min.js +1 -1
- package/build/tsconfig.tsbuildinfo +1 -1
- package/cjs/chart/base-chart.d.ts +7 -5
- package/cjs/chart/base-chart.js +42 -71
- package/cjs/chart/base-chart.js.map +1 -1
- package/cjs/chart/chart-meta/data.d.ts +15 -0
- package/cjs/chart/chart-meta/data.js +52 -0
- package/cjs/chart/chart-meta/data.js.map +1 -0
- package/cjs/chart/interface/chart.d.ts +0 -1
- package/cjs/chart/interface/chart.js.map +1 -1
- package/cjs/chart/progress/circular/circular.js +2 -1
- package/cjs/chart/progress/circular/circular.js.map +1 -1
- package/cjs/chart/sequence/sequence.d.ts +1 -0
- package/cjs/chart/sequence/sequence.js +24 -20
- package/cjs/chart/sequence/sequence.js.map +1 -1
- package/cjs/chart/util.d.ts +2 -0
- package/cjs/chart/util.js +8 -2
- package/cjs/chart/util.js.map +1 -1
- package/cjs/compile/compiler.d.ts +1 -1
- package/cjs/compile/compiler.js +3 -3
- package/cjs/compile/compiler.js.map +1 -1
- package/cjs/compile/data/compilable-data.js +2 -2
- package/cjs/compile/data/compilable-data.js.map +1 -1
- package/cjs/component/axis/base-axis.d.ts +1 -2
- package/cjs/component/axis/base-axis.js +3 -3
- package/cjs/component/axis/base-axis.js.map +1 -1
- package/cjs/component/axis/cartesian/axis.d.ts +1 -8
- package/cjs/component/axis/cartesian/axis.js +3 -6
- package/cjs/component/axis/cartesian/axis.js.map +1 -1
- package/cjs/component/axis/interface.d.ts +1 -0
- package/cjs/component/axis/interface.js.map +1 -1
- package/cjs/component/base/base-component.d.ts +2 -2
- package/cjs/component/base/base-component.js +10 -6
- package/cjs/component/base/base-component.js.map +1 -1
- package/cjs/component/brush/brush.d.ts +1 -2
- package/cjs/component/brush/brush.js +3 -3
- package/cjs/component/brush/brush.js.map +1 -1
- package/cjs/component/crosshair/base.d.ts +1 -2
- package/cjs/component/crosshair/base.js +4 -3
- package/cjs/component/crosshair/base.js.map +1 -1
- package/cjs/component/crosshair/interface/spec.d.ts +1 -1
- package/cjs/component/crosshair/interface/spec.js.map +1 -1
- package/cjs/component/custom-mark/custom-mark.d.ts +1 -2
- package/cjs/component/custom-mark/custom-mark.js +4 -4
- package/cjs/component/custom-mark/custom-mark.js.map +1 -1
- package/cjs/component/data-zoom/data-filter-base-component.d.ts +1 -2
- package/cjs/component/data-zoom/data-filter-base-component.js +4 -3
- package/cjs/component/data-zoom/data-filter-base-component.js.map +1 -1
- package/cjs/component/data-zoom/scroll-bar/scroll-bar.d.ts +1 -0
- package/cjs/component/data-zoom/scroll-bar/scroll-bar.js +5 -0
- package/cjs/component/data-zoom/scroll-bar/scroll-bar.js.map +1 -1
- package/cjs/component/label/base-label.d.ts +1 -2
- package/cjs/component/label/base-label.js +5 -4
- package/cjs/component/label/base-label.js.map +1 -1
- package/cjs/component/label/label.js +3 -2
- package/cjs/component/label/label.js.map +1 -1
- package/cjs/component/legend/base-legend.d.ts +1 -2
- package/cjs/component/legend/base-legend.js +5 -4
- package/cjs/component/legend/base-legend.js.map +1 -1
- package/cjs/component/legend/interface.d.ts +1 -0
- package/cjs/component/legend/interface.js.map +1 -1
- package/cjs/component/title/title.d.ts +1 -2
- package/cjs/component/title/title.js +4 -4
- package/cjs/component/title/title.js.map +1 -1
- package/cjs/component/tooltip/handler/base.d.ts +2 -1
- package/cjs/component/tooltip/handler/base.js +127 -49
- package/cjs/component/tooltip/handler/base.js.map +1 -1
- package/cjs/component/tooltip/handler/utils/position.d.ts +6 -0
- package/cjs/component/tooltip/handler/utils/position.js +31 -3
- package/cjs/component/tooltip/handler/utils/position.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/interface.d.ts +4 -4
- package/cjs/core/interface.js.map +1 -1
- package/cjs/core/vchart.d.ts +3 -2
- package/cjs/core/vchart.js +52 -30
- package/cjs/core/vchart.js.map +1 -1
- package/cjs/data/initialize.d.ts +1 -0
- package/cjs/data/initialize.js +6 -2
- package/cjs/data/initialize.js.map +1 -1
- package/cjs/data/transforms/link-dot-info.d.ts +13 -0
- package/cjs/data/transforms/link-dot-info.js +26 -0
- package/cjs/data/transforms/link-dot-info.js.map +1 -0
- package/cjs/data/transforms/obj-flat.js +2 -1
- package/cjs/data/transforms/obj-flat.js.map +1 -1
- package/cjs/event/events/dimension/util/common.js +16 -6
- package/cjs/event/events/dimension/util/common.js.map +1 -1
- package/cjs/mark/base/base-mark.d.ts +0 -1
- package/cjs/mark/base/base-mark.js +1 -4
- package/cjs/mark/base/base-mark.js.map +1 -1
- package/cjs/model/base-model.d.ts +8 -1
- package/cjs/model/base-model.js +14 -9
- package/cjs/model/base-model.js.map +1 -1
- package/cjs/model/interface.d.ts +0 -1
- package/cjs/model/interface.js.map +1 -1
- package/cjs/region/region.d.ts +1 -2
- package/cjs/region/region.js +4 -4
- package/cjs/region/region.js.map +1 -1
- package/cjs/series/bar/bar.d.ts +0 -8
- package/cjs/series/bar/bar.js +0 -5
- package/cjs/series/bar/bar.js.map +1 -1
- package/cjs/series/base/base-series.d.ts +4 -2
- package/cjs/series/base/base-series.js +26 -17
- package/cjs/series/base/base-series.js.map +1 -1
- package/cjs/series/cartesian/cartesian.d.ts +0 -8
- package/cjs/series/cartesian/cartesian.js +0 -5
- package/cjs/series/cartesian/cartesian.js.map +1 -1
- package/cjs/series/dot/dot.d.ts +2 -0
- package/cjs/series/dot/dot.js +8 -3
- package/cjs/series/dot/dot.js.map +1 -1
- package/cjs/series/funnel/funnel.d.ts +0 -8
- package/cjs/series/funnel/funnel.js +0 -15
- package/cjs/series/funnel/funnel.js.map +1 -1
- package/cjs/series/heatmap/heatmap.d.ts +0 -8
- package/cjs/series/heatmap/heatmap.js +0 -5
- package/cjs/series/heatmap/heatmap.js.map +1 -1
- package/cjs/series/interface/common.d.ts +1 -0
- package/cjs/series/interface/common.js.map +1 -1
- package/cjs/series/link/link.d.ts +1 -0
- package/cjs/series/link/link.js +18 -20
- package/cjs/series/link/link.js.map +1 -1
- package/cjs/series/map/map.d.ts +0 -8
- package/cjs/series/map/map.js +0 -5
- package/cjs/series/map/map.js.map +1 -1
- package/cjs/series/pie/pie.d.ts +3 -2
- package/cjs/series/pie/pie.js +9 -3
- package/cjs/series/pie/pie.js.map +1 -1
- package/cjs/series/polar/polar.d.ts +0 -8
- package/cjs/series/polar/polar.js +0 -5
- package/cjs/series/polar/polar.js.map +1 -1
- package/cjs/series/polar/progress-like/progress-like.js +18 -24
- package/cjs/series/polar/progress-like/progress-like.js.map +1 -1
- package/cjs/series/sankey/interface.d.ts +1 -0
- package/cjs/series/sankey/interface.js.map +1 -1
- package/cjs/series/sankey/sankey.d.ts +2 -0
- package/cjs/series/sankey/sankey.js +25 -13
- package/cjs/series/sankey/sankey.js.map +1 -1
- package/cjs/series/word-cloud/base.d.ts +0 -8
- package/cjs/series/word-cloud/base.js +2 -7
- package/cjs/series/word-cloud/base.js.map +1 -1
- package/cjs/series/word-cloud/config.d.ts +1 -1
- package/cjs/series/word-cloud/config.js +1 -1
- package/cjs/series/word-cloud/config.js.map +1 -1
- package/cjs/theme/builtin/common/component/tooltip.js +1 -0
- package/cjs/theme/builtin/common/component/tooltip.js.map +1 -1
- package/cjs/theme/builtin/common/series/circular-progress.js +6 -0
- package/cjs/theme/builtin/common/series/circular-progress.js.map +1 -1
- package/cjs/theme/builtin/common/series/gauge.js +6 -0
- package/cjs/theme/builtin/common/series/gauge.js.map +1 -1
- package/cjs/theme/builtin/common/series/pie.js +1 -0
- package/cjs/theme/builtin/common/series/pie.js.map +1 -1
- package/cjs/theme/builtin/common/series/rose.js +1 -0
- package/cjs/theme/builtin/common/series/rose.js.map +1 -1
- package/cjs/typings/tooltip/position.d.ts +13 -1
- package/cjs/typings/tooltip/position.js +11 -5
- package/cjs/typings/tooltip/position.js.map +1 -1
- package/cjs/typings/tooltip/tooltip.d.ts +2 -1
- package/cjs/typings/tooltip/tooltip.js.map +1 -1
- package/cjs/typings/visual.d.ts +1 -0
- package/cjs/typings/visual.js.map +1 -1
- package/esm/chart/base-chart.d.ts +7 -5
- package/esm/chart/base-chart.js +44 -74
- package/esm/chart/base-chart.js.map +1 -1
- package/esm/chart/chart-meta/data.d.ts +15 -0
- package/esm/chart/chart-meta/data.js +48 -0
- package/esm/chart/chart-meta/data.js.map +1 -0
- package/esm/chart/interface/chart.d.ts +0 -1
- package/esm/chart/interface/chart.js.map +1 -1
- package/esm/chart/progress/circular/circular.js +2 -1
- package/esm/chart/progress/circular/circular.js.map +1 -1
- package/esm/chart/sequence/sequence.d.ts +1 -0
- package/esm/chart/sequence/sequence.js +25 -21
- package/esm/chart/sequence/sequence.js.map +1 -1
- package/esm/chart/util.d.ts +2 -0
- package/esm/chart/util.js +6 -0
- package/esm/chart/util.js.map +1 -1
- package/esm/compile/compiler.d.ts +1 -1
- package/esm/compile/compiler.js +3 -3
- package/esm/compile/compiler.js.map +1 -1
- package/esm/compile/data/compilable-data.js +2 -2
- package/esm/compile/data/compilable-data.js.map +1 -1
- package/esm/component/axis/base-axis.d.ts +1 -2
- package/esm/component/axis/base-axis.js +3 -3
- package/esm/component/axis/base-axis.js.map +1 -1
- package/esm/component/axis/cartesian/axis.d.ts +1 -8
- package/esm/component/axis/cartesian/axis.js +3 -6
- package/esm/component/axis/cartesian/axis.js.map +1 -1
- package/esm/component/axis/interface.d.ts +1 -0
- package/esm/component/axis/interface.js.map +1 -1
- package/esm/component/base/base-component.d.ts +2 -2
- package/esm/component/base/base-component.js +11 -5
- package/esm/component/base/base-component.js.map +1 -1
- package/esm/component/brush/brush.d.ts +1 -2
- package/esm/component/brush/brush.js +3 -3
- package/esm/component/brush/brush.js.map +1 -1
- package/esm/component/crosshair/base.d.ts +1 -2
- package/esm/component/crosshair/base.js +5 -4
- package/esm/component/crosshair/base.js.map +1 -1
- package/esm/component/crosshair/interface/spec.d.ts +1 -1
- package/esm/component/crosshair/interface/spec.js.map +1 -1
- package/esm/component/custom-mark/custom-mark.d.ts +1 -2
- package/esm/component/custom-mark/custom-mark.js +3 -3
- package/esm/component/custom-mark/custom-mark.js.map +1 -1
- package/esm/component/data-zoom/data-filter-base-component.d.ts +1 -2
- package/esm/component/data-zoom/data-filter-base-component.js +5 -4
- package/esm/component/data-zoom/data-filter-base-component.js.map +1 -1
- package/esm/component/data-zoom/scroll-bar/scroll-bar.d.ts +1 -0
- package/esm/component/data-zoom/scroll-bar/scroll-bar.js +5 -0
- package/esm/component/data-zoom/scroll-bar/scroll-bar.js.map +1 -1
- package/esm/component/label/base-label.d.ts +1 -2
- package/esm/component/label/base-label.js +6 -3
- package/esm/component/label/base-label.js.map +1 -1
- package/esm/component/label/label.js +4 -3
- package/esm/component/label/label.js.map +1 -1
- package/esm/component/legend/base-legend.d.ts +1 -2
- package/esm/component/legend/base-legend.js +4 -4
- package/esm/component/legend/base-legend.js.map +1 -1
- package/esm/component/legend/interface.d.ts +1 -0
- package/esm/component/legend/interface.js.map +1 -1
- package/esm/component/title/title.d.ts +1 -2
- package/esm/component/title/title.js +4 -4
- package/esm/component/title/title.js.map +1 -1
- package/esm/component/tooltip/handler/base.d.ts +2 -1
- package/esm/component/tooltip/handler/base.js +122 -49
- package/esm/component/tooltip/handler/base.js.map +1 -1
- package/esm/component/tooltip/handler/utils/position.d.ts +6 -0
- package/esm/component/tooltip/handler/utils/position.js +28 -0
- package/esm/component/tooltip/handler/utils/position.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/interface.d.ts +4 -4
- package/esm/core/interface.js.map +1 -1
- package/esm/core/vchart.d.ts +3 -2
- package/esm/core/vchart.js +53 -31
- package/esm/core/vchart.js.map +1 -1
- package/esm/data/initialize.d.ts +1 -0
- package/esm/data/initialize.js +4 -0
- package/esm/data/initialize.js.map +1 -1
- package/esm/data/transforms/link-dot-info.d.ts +13 -0
- package/esm/data/transforms/link-dot-info.js +18 -0
- package/esm/data/transforms/link-dot-info.js.map +1 -0
- package/esm/data/transforms/obj-flat.js +2 -1
- package/esm/data/transforms/obj-flat.js.map +1 -1
- package/esm/event/events/dimension/util/common.js +17 -7
- package/esm/event/events/dimension/util/common.js.map +1 -1
- package/esm/mark/base/base-mark.d.ts +0 -1
- package/esm/mark/base/base-mark.js +2 -5
- package/esm/mark/base/base-mark.js.map +1 -1
- package/esm/model/base-model.d.ts +8 -1
- package/esm/model/base-model.js +13 -8
- package/esm/model/base-model.js.map +1 -1
- package/esm/model/interface.d.ts +0 -1
- package/esm/model/interface.js.map +1 -1
- package/esm/region/region.d.ts +1 -2
- package/esm/region/region.js +5 -5
- package/esm/region/region.js.map +1 -1
- package/esm/series/bar/bar.d.ts +0 -8
- package/esm/series/bar/bar.js +0 -5
- package/esm/series/bar/bar.js.map +1 -1
- package/esm/series/base/base-series.d.ts +4 -2
- package/esm/series/base/base-series.js +24 -17
- package/esm/series/base/base-series.js.map +1 -1
- package/esm/series/cartesian/cartesian.d.ts +0 -8
- package/esm/series/cartesian/cartesian.js +1 -6
- package/esm/series/cartesian/cartesian.js.map +1 -1
- package/esm/series/dot/dot.d.ts +2 -0
- package/esm/series/dot/dot.js +8 -3
- package/esm/series/dot/dot.js.map +1 -1
- package/esm/series/funnel/funnel.d.ts +0 -8
- package/esm/series/funnel/funnel.js +1 -16
- package/esm/series/funnel/funnel.js.map +1 -1
- package/esm/series/heatmap/heatmap.d.ts +0 -8
- package/esm/series/heatmap/heatmap.js +0 -5
- package/esm/series/heatmap/heatmap.js.map +1 -1
- package/esm/series/interface/common.d.ts +1 -0
- package/esm/series/interface/common.js.map +1 -1
- package/esm/series/link/link.d.ts +1 -0
- package/esm/series/link/link.js +19 -19
- package/esm/series/link/link.js.map +1 -1
- package/esm/series/map/map.d.ts +0 -8
- package/esm/series/map/map.js +0 -5
- package/esm/series/map/map.js.map +1 -1
- package/esm/series/pie/pie.d.ts +3 -2
- package/esm/series/pie/pie.js +9 -3
- package/esm/series/pie/pie.js.map +1 -1
- package/esm/series/polar/polar.d.ts +0 -8
- package/esm/series/polar/polar.js +1 -6
- package/esm/series/polar/polar.js.map +1 -1
- package/esm/series/polar/progress-like/progress-like.js +18 -25
- package/esm/series/polar/progress-like/progress-like.js.map +1 -1
- package/esm/series/sankey/interface.d.ts +1 -0
- package/esm/series/sankey/interface.js.map +1 -1
- package/esm/series/sankey/sankey.d.ts +2 -0
- package/esm/series/sankey/sankey.js +22 -12
- package/esm/series/sankey/sankey.js.map +1 -1
- package/esm/series/word-cloud/base.d.ts +0 -8
- package/esm/series/word-cloud/base.js +3 -8
- package/esm/series/word-cloud/base.js.map +1 -1
- package/esm/series/word-cloud/config.d.ts +1 -1
- package/esm/series/word-cloud/config.js +1 -1
- package/esm/series/word-cloud/config.js.map +1 -1
- package/esm/theme/builtin/common/component/tooltip.js +1 -0
- package/esm/theme/builtin/common/component/tooltip.js.map +1 -1
- package/esm/theme/builtin/common/series/circular-progress.js +6 -0
- package/esm/theme/builtin/common/series/circular-progress.js.map +1 -1
- package/esm/theme/builtin/common/series/gauge.js +6 -0
- package/esm/theme/builtin/common/series/gauge.js.map +1 -1
- package/esm/theme/builtin/common/series/pie.js +1 -0
- package/esm/theme/builtin/common/series/pie.js.map +1 -1
- package/esm/theme/builtin/common/series/rose.js +1 -0
- package/esm/theme/builtin/common/series/rose.js.map +1 -1
- package/esm/typings/tooltip/position.d.ts +13 -1
- package/esm/typings/tooltip/position.js +11 -2
- package/esm/typings/tooltip/position.js.map +1 -1
- package/esm/typings/tooltip/tooltip.d.ts +2 -1
- package/esm/typings/tooltip/tooltip.js.map +1 -1
- package/esm/typings/visual.d.ts +1 -0
- package/esm/typings/visual.js.map +1 -1
- package/package.json +8 -8
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../src/event/events/dimension/util/common.ts"],"names":[],"mappings":";;;
|
|
1
|
+
{"version":3,"sources":["../src/event/events/dimension/util/common.ts"],"names":[],"mappings":"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","file":"common.js","sourcesContent":["/* eslint-disable max-depth */\nimport type { ILayoutPoint } from '../../../../model/interface';\nimport type { IChart } from '../../../../chart/interface';\nimport type { IDimensionData, IDimensionInfo } from '../interface';\nimport { isNil, array, isValid, isValidNumber } from '../../../../util';\nimport type { AxisComponent } from '../../../../component/axis/base-axis';\nimport type { CoordinateType } from '../../../../typings';\nimport { isDiscrete } from '@visactor/vscale';\nimport type { ICartesianLinearAxisSpec } from '../../../../component';\nimport type { Maybe } from '@visactor/vutils';\n\nconst isInBound = (pos: ILayoutPoint, min: ILayoutPoint, max: ILayoutPoint): boolean =>\n pos.x >= min.x && pos.x <= max.x && pos.y >= min.y && pos.y <= max.y;\n\nexport const isInRegionBound = (chart: IChart, axis: AxisComponent, pos: ILayoutPoint) => {\n const regionList = chart.getRegionsInIds(array(axis.layoutBindRegionID));\n return regionList?.some(region => {\n const rect = region.getLayoutRect();\n const startPoint = region.getLayoutStartPoint();\n return isInBound(\n pos,\n { x: startPoint.x, y: startPoint.y },\n { x: rect.width + startPoint.x, y: rect.height + startPoint.y }\n );\n });\n};\n\nexport const isSameDimensionInfo = (a?: IDimensionInfo, b?: IDimensionInfo): boolean => {\n if (a === b) {\n return true;\n }\n if (isNil(a) || isNil(b)) {\n return false;\n }\n if (a.value !== b.value) {\n return false;\n }\n if (a.axis?.id !== b.axis?.id) {\n return false;\n }\n return true;\n};\n\n/** 给定维度项的值,获取对应维度数据 */\nexport const getDimensionData = (\n value: any,\n axis: AxisComponent,\n coordinate: CoordinateType,\n getDimensionField: (series: any) => string | string[]\n): IDimensionData[] => {\n const scale = axis.getScale();\n const isDiscreteAxis = isDiscrete(scale.type);\n\n const data: IDimensionData[] = [];\n const regions = axis.getRegions(); // TODO: 直接从轴里取系列\n for (const region of regions) {\n const seriesList = region.getSeries();\n for (const series of seriesList) {\n if (series.coordinate === coordinate) {\n const dimensionField = array(getDimensionField(series));\n const viewData = series.getViewData()?.latestData;\n if (dimensionField && viewData) {\n if (isDiscreteAxis) {\n data.push({\n series,\n datum: viewData.filter(\n (datum: any) => datum[dimensionField[0]]?.toString() === value?.toString() // 获取该维度项所对应的数据\n )\n });\n } else {\n // 连续轴\n if (isValid(dimensionField[1])) {\n // 直方图情况,根据范围取 datum\n data.push({\n series,\n datum: viewData.filter((datum: any) => {\n if (datum[dimensionField[0]]?.toString() === value?.toString()) {\n return true;\n }\n return (\n isValid(datum[dimensionField[0]]) &&\n isValid(datum[dimensionField[1]]) &&\n value >= datum[dimensionField[0]] &&\n value < datum[dimensionField[1]]\n );\n })\n });\n } else {\n // 散点图情况,依据轴上的配置判断\n const range = (axis.getSpec() as ICartesianLinearAxisSpec).tooltipFilterRange;\n const rangeArr = (isValidNumber(range) ? [-range, range] : range) as Maybe<[number, number]>;\n let datums: any[] = [];\n if (rangeArr) {\n // 根据范围取 datum\n viewData.forEach((datum: any) => {\n if (isValid(datum[dimensionField[0]])) {\n const delta = datum[dimensionField[0]] - value;\n if (delta >= rangeArr[0] && delta <= rangeArr[1]) {\n datums.push(datum);\n }\n }\n });\n } else {\n // 根据最近距离取 datum\n let minDelta = Infinity;\n let deltaSign = 0;\n viewData.forEach((datum: any) => {\n if (isValid(datum[dimensionField[0]])) {\n const delta = Math.abs(datum[dimensionField[0]] - value);\n const sign = Math.sign(datum[dimensionField[0]] - value);\n if (delta < minDelta) {\n minDelta = delta;\n datums = [datum];\n deltaSign = sign;\n } else if (delta === minDelta && sign === deltaSign) {\n datums.push(datum);\n }\n }\n });\n }\n data.push({\n series,\n datum: datums\n });\n }\n }\n }\n }\n }\n }\n return data;\n};\n"]}
|
|
@@ -132,7 +132,7 @@ class BaseMark extends compilable_mark_1.CompilableMark {
|
|
|
132
132
|
}
|
|
133
133
|
_computeStateAttribute(stateStyle, key, datum, state, opt) {
|
|
134
134
|
var _a;
|
|
135
|
-
if (stateStyle) return stateStyle.referer ? stateStyle.referer.getAttribute(key, datum, state, opt) : "function" == typeof stateStyle.style ? stateStyle.style(datum, this._attributeContext, opt, this.getDataView()) : constant_1.GradientType.includes(stateStyle.style.gradient) ? this._computeGradientAttr(stateStyle.style, datum, opt) : [ "outerBorder", "innerBorder" ].includes(key) ? this._computeBorderAttr(stateStyle.style, datum, opt) :
|
|
135
|
+
if (stateStyle) return stateStyle.referer ? stateStyle.referer.getAttribute(key, datum, state, opt) : "function" == typeof stateStyle.style ? stateStyle.style(datum, this._attributeContext, opt, this.getDataView()) : constant_1.GradientType.includes(stateStyle.style.gradient) ? this._computeGradientAttr(stateStyle.style, datum, opt) : [ "outerBorder", "innerBorder" ].includes(key) ? this._computeBorderAttr(stateStyle.style, datum, opt) : (0,
|
|
136
136
|
vscale_1.isValidScaleType)(null === (_a = stateStyle.style.scale) || void 0 === _a ? void 0 : _a.type) ? stateStyle.style.scale.scale(datum[stateStyle.style.field]) : stateStyle.style;
|
|
137
137
|
}
|
|
138
138
|
_initStyle() {
|
|
@@ -197,9 +197,6 @@ class BaseMark extends compilable_mark_1.CompilableMark {
|
|
|
197
197
|
}
|
|
198
198
|
return computeStyle;
|
|
199
199
|
}
|
|
200
|
-
_computeThresholdAttr(thresholdStyle) {
|
|
201
|
-
return (new vscale_1.ThresholdScale).domain(thresholdStyle.domain).range(thresholdStyle.range).scale(this.getDataView().latestData[0].value);
|
|
202
|
-
}
|
|
203
200
|
}
|
|
204
201
|
|
|
205
202
|
exports.BaseMark = BaseMark;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../src/mark/base/base-mark.ts"],"names":[],"mappings":"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","file":"base-mark.js","sourcesContent":["import type { IStateInfo, IAttributeOpt, IModelMarkAttributeContext } from '../../compile/mark/interface';\nimport type { BaseSeries } from '../../series/base/base-series';\nimport type {\n Datum,\n IMarkSpec,\n ConvertToMarkStyleSpec,\n GradientStop,\n IVisual,\n IVisualScale,\n IVisualSpecStyle,\n ICommonSpec,\n FunctionType,\n IThresholdStyle\n} from '../../typings';\n\nimport { isBoolean, isFunction, isNil, isValid, mergeSpec, Color, createScaleWithSpec, isNumber } from '../../util';\nimport type {\n IMarkRaw,\n IMarkStateStyle,\n IMarkStyle,\n IMark,\n IMarkOption,\n StyleConvert,\n VisualScaleType,\n MarkInputStyle\n} from '../interface';\nimport { AttributeLevel, GradientType, DEFAULT_GRADIENT_CONFIG } from '../../constant';\nimport { isValidScaleType, ThresholdScale } from '@visactor/vscale';\nimport type { DataView } from '@visactor/vdataset';\nimport { computeActualDataScheme, getDataScheme } from '../../theme/color-scheme/util';\nimport type { ISeries, SeriesTypeEnum } from '../../series/interface';\nimport { CompilableMark } from '../../compile/mark/compilable-mark';\nimport type { StateValueType } from '../../compile/mark';\nimport { degreeToRadian } from '@visactor/vutils';\n\nexport type ExChannelCall = (\n key: string | number | symbol,\n datum: Datum,\n states: StateValueType,\n opt: unknown,\n baseValue: unknown\n) => unknown;\n\nexport class BaseMark<T extends ICommonSpec> extends CompilableMark implements IMarkRaw<T> {\n declare stateStyle: IMarkStateStyle<T>;\n\n protected declare _option: IMarkOption;\n\n protected _attributeContext: IModelMarkAttributeContext;\n\n /** by _unCompileChannel, some channel need add default channel to make sure update available */\n _extensionChannel: {\n [key: string | number | symbol]: string[];\n } = {};\n /** same as _extensionChannel. when compute channel, add extension channel effect */\n _computeExChannel: {\n [key: string | number | symbol]: ExChannelCall;\n } = {};\n\n constructor(name: string, option: IMarkOption) {\n super(option, name, option.model);\n // 这里的上下文多数情况下与 mark 是什么是没有关系的,与mark的使用者,也就是series,component有的逻辑有关。\n this._attributeContext = option.attributeContext;\n option.map?.set(this.id, this as unknown as IMark);\n }\n\n created(): void {\n this._initStyle();\n }\n\n /**\n * 外部调用,根据 spec 初始化 style(如果由 IModel 派生类调用,请使用 IModel.initMarkStyleWithSpec)\n * @param spec\n * @param key\n * @returns\n */\n initStyleWithSpec(spec: IMarkSpec<T>, key?: string) {\n if (!spec) {\n return;\n }\n\n if (isValid(spec.id)) {\n this._userId = spec.id;\n }\n\n // interactive\n if (isBoolean(spec.interactive)) {\n this._interactive = spec.interactive;\n }\n // zIndex\n if (isValid(spec.zIndex)) {\n this.setZIndex(spec.zIndex);\n }\n // visible\n if (isBoolean(spec.visible)) {\n this.setVisible(spec.visible);\n }\n // style\n this._initSpecStyle(spec, this.stateStyle, key);\n }\n\n convertAngleToRadian(styleConverter: StyleConvert<number>): StyleConvert<any> {\n // 用户传入的angle配置,需要做一层转换\n if (isNumber(styleConverter)) {\n return degreeToRadian(styleConverter) as StyleConvert<any>;\n } else if ((styleConverter as VisualScaleType).scale) {\n const range = (styleConverter as VisualScaleType).scale.range();\n\n (styleConverter as VisualScaleType).scale.range(range.map(degreeToRadian));\n\n return styleConverter as StyleConvert<any>;\n } else if (typeof styleConverter === 'function') {\n return ((item: any, ctx: any, opt: IAttributeOpt, source?: DataView) => {\n return degreeToRadian((styleConverter as FunctionType<number>)(item, ctx, opt, source));\n }) as StyleConvert<any>;\n }\n\n return styleConverter;\n }\n\n isUserLevel(level: number) {\n return [AttributeLevel.User_Mark, AttributeLevel.User_Series, AttributeLevel.User_Chart].includes(level);\n }\n\n /**\n * 由外部series调用,设置markStyle的接口(如果由 IModel 派生类调用,请使用 IModel.setMarkStyle)\n * @param style\n * @param level\n * @param state\n */\n setStyle<U extends keyof T>(\n style: Partial<IMarkStyle<T>>,\n state: StateValueType = 'normal',\n level: number = 0,\n stateStyle = this.stateStyle\n ): void {\n if (isNil(style)) {\n return;\n }\n style = this._filterStyle(style, state, level, stateStyle);\n\n if (stateStyle[state] === undefined) {\n stateStyle[state] = {};\n }\n\n const isUserLevel = this.isUserLevel(level);\n\n Object.keys(style).forEach((attr: string) => {\n let attrStyle = style[attr] as MarkInputStyle<T[U]>;\n if (isNil(attrStyle)) {\n return;\n }\n\n attrStyle = this._filterAttribute(attr as any, attrStyle, state, level, isUserLevel, stateStyle);\n\n this.setAttribute(attr as any, attrStyle, state, level, stateStyle);\n });\n }\n\n getStyle(key: string, state: StateValueType = 'normal'): any {\n return this.stateStyle[state][key]?.style;\n }\n\n /** 过滤用户传来的 style 对象 */\n protected _filterStyle(\n style: Partial<IMarkStyle<T>>,\n state: StateValueType,\n level: number,\n stateStyle = this.stateStyle\n ): Partial<IMarkStyle<T>> {\n return style;\n }\n\n /** 过滤单个 attribute */\n protected _filterAttribute<U extends keyof T>(\n attr: U,\n style: MarkInputStyle<T[U]>,\n state: StateValueType,\n level: number,\n isUserLevel: boolean,\n stateStyle = this.stateStyle\n ): StyleConvert<T[U]> {\n let newStyle = this._styleConvert(style);\n if (isUserLevel && attr === 'angle') {\n newStyle = this.convertAngleToRadian(newStyle as StyleConvert<number>);\n }\n return newStyle;\n }\n\n /**\n * TODO: 没有外部调用\n * 设置mark样式所参考的图元\n */\n setReferer<U extends keyof T>(mark: IMarkRaw<T>, styleKey?: U, state?: StateValueType, stateStyle = this.stateStyle) {\n if (!mark) {\n return;\n }\n if (styleKey && state) {\n const style = stateStyle[state] ?? { [styleKey]: {} };\n stateStyle[state][styleKey] = {\n ...(style[styleKey] as unknown as any),\n ...{ referer: mark }\n };\n return;\n }\n\n Object.entries(stateStyle).forEach(([state, style]) => {\n Object.entries(style).forEach(([styleKey, style]) => {\n stateStyle[state][styleKey].referer = mark;\n });\n });\n }\n\n setPostProcess<U extends keyof T>(key: U, postProcessFunc: any, state: StateValueType = 'normal') {\n if (this.stateStyle[state]?.[key]) {\n this.stateStyle[state][key].postProcess = postProcessFunc;\n }\n }\n\n getAttribute<U extends keyof T>(key: U, datum: Datum, state: StateValueType = 'normal', opt?: IAttributeOpt) {\n return this._computeAttribute(key, datum, state, opt);\n }\n\n setAttribute<U extends keyof T>(\n attr: U,\n style: MarkInputStyle<T[U]>,\n state: StateValueType = 'normal',\n level: number = 0,\n stateStyle = this.stateStyle\n ) {\n if (stateStyle[state] === undefined) {\n stateStyle[state] = {};\n }\n\n if (stateStyle[state][attr] === undefined) {\n // eslint-disable-next-line @typescript-eslint/ban-ts-comment\n // @ts-ignore\n stateStyle[state][attr] = {\n level,\n style,\n referer: undefined\n };\n }\n const attrLevel = stateStyle[state][attr]?.level;\n if (isValid(attrLevel) && attrLevel <= level) {\n mergeSpec(stateStyle[state][attr], { style, level });\n }\n\n // some attr has extension channel in VChart to make some effect\n if (state !== 'normal') {\n if (attr in this._extensionChannel) {\n this._extensionChannel[attr].forEach(key => {\n if (stateStyle[state][key] === undefined) {\n // eslint-disable-next-line @typescript-eslint/ban-ts-comment\n // @ts-ignore\n stateStyle[state][key as keyof T] = stateStyle.normal[key];\n }\n });\n }\n }\n }\n\n /**\n * 与 vgrammar 默认值一致的样式可以不设置默认值或设置为undefined, 减少encode属性\n */\n protected _getDefaultStyle() {\n return {\n visible: true,\n // mark的层级应该在mark层 不在encode属性层\n // zIndex: LayoutZIndex.Mark,\n x: 0,\n y: 0\n } as IMarkStyle<T>;\n }\n\n // /**\n // * 获取该 mark 不支持的图形属性,由子类覆写\n // * @returns\n // */\n // protected getIgnoreAttributes(): string[] {\n // return [];\n // }\n\n protected _styleConvert<U extends keyof T>(style?: MarkInputStyle<T[U]>): StyleConvert<T[U]> | undefined {\n if (!style) {\n return style as undefined;\n }\n // visual spec 转换为 scale 类型的mark style\n if (isValidScaleType((style as IVisualSpecStyle<unknown, T[U]>).type) || (style as IVisualScale).scale) {\n // const _style = style as IVisual<T[U]>;\n const scale = createScaleWithSpec(style as IVisual<T[U]>, {\n globalScale: this._option.globalScale,\n dataStatistics: this._option.dataStatistics\n });\n if (scale) {\n return {\n scale,\n field: (style as IVisual<T[U]>).field,\n changeDomain: (style as IVisualScale).changeDomain\n };\n }\n }\n return style as StyleConvert<T[U]>;\n }\n\n protected _computeAttribute<U extends keyof T>(key: U, datum: Datum, state: StateValueType, opt: IAttributeOpt) {\n let stateStyle = this.stateStyle[state]?.[key];\n if (!stateStyle) {\n stateStyle = this.stateStyle.normal[key];\n }\n let baseValue = this._computeStateAttribute(stateStyle, key, datum, state, opt);\n\n if (isFunction(stateStyle?.postProcess)) {\n baseValue = stateStyle.postProcess(baseValue, datum, this._attributeContext, opt, this.getDataView());\n }\n // add effect to base\n if (key in this._computeExChannel) {\n return this._computeExChannel[key](key, datum, state, opt, baseValue);\n }\n return baseValue;\n }\n\n protected _computeStateAttribute<U extends keyof T>(\n stateStyle: any,\n key: U,\n datum: Datum,\n state: StateValueType,\n opt: IAttributeOpt\n ) {\n if (!stateStyle) {\n return undefined;\n }\n if (stateStyle.referer) {\n return stateStyle.referer.getAttribute(key, datum, state, opt);\n }\n if (typeof stateStyle.style === 'function') {\n return stateStyle.style(datum, this._attributeContext, opt, this.getDataView());\n }\n\n if (GradientType.includes(stateStyle.style.gradient)) {\n // 渐变色处理,支持各个属性回调\n return this._computeGradientAttr(stateStyle.style, datum, opt);\n }\n\n if (['outerBorder', 'innerBorder'].includes(key as string)) {\n // 内外描边处理,支持各个属性回调\n return this._computeBorderAttr(stateStyle.style, datum, opt);\n }\n\n if (stateStyle.style.type === 'threshold') {\n // 按阈值着色处理\n return this._computeThresholdAttr(stateStyle.style);\n }\n\n if (isValidScaleType(stateStyle.style.scale?.type)) {\n return stateStyle.style.scale.scale(datum[stateStyle.style.field]);\n }\n\n return stateStyle.style;\n }\n\n private _initStyle(): void {\n const defaultStyle = this._getDefaultStyle();\n this.setStyle(defaultStyle, 'normal', 0);\n }\n\n private _initSpecStyle(spec: IMarkSpec<T>, stateStyle: IMarkStateStyle<T>, key?: string) {\n // style\n if (spec.style) {\n this.setStyle(spec.style, 'normal', AttributeLevel.User_Mark, stateStyle);\n }\n const state = spec.state;\n if (state) {\n Object.keys(state).forEach(key => {\n const stateTemp = state[key];\n if ('style' in stateTemp) {\n const style = stateTemp.style;\n let stateInfo: IStateInfo = { stateValue: key };\n if ('level' in stateTemp) {\n stateInfo.level = stateTemp.level as number;\n }\n if ('filter' in stateTemp) {\n if (isFunction(stateTemp.filter)) {\n stateInfo = {\n filter: stateTemp.filter as (datum: any, options: Record<string, any>) => boolean,\n ...stateInfo\n };\n } else {\n stateInfo = { ...stateTemp.filter, ...stateInfo };\n }\n }\n this.state.addStateInfo(stateInfo);\n this.setStyle(style as ConvertToMarkStyleSpec<T>, key, AttributeLevel.User_Mark, stateStyle);\n } else {\n this.setStyle(stateTemp, key, AttributeLevel.User_Mark, stateStyle);\n }\n });\n }\n }\n\n private _computeGradientAttr(gradientStyle: any, data: Datum, opt: IAttributeOpt) {\n const { gradient, scale, field, ...rest } = gradientStyle;\n const markData = this.getDataView();\n let colorScale = scale;\n let colorField = field;\n if ((!scale || !field) && this.model.modelType === 'series') {\n // 目前只有series有这个属性\n const { scale: globalColorScale, field: globalField } = (this.model as BaseSeries<any>).getColorAttribute();\n if (!scale) {\n // 获取全局的 colorScale\n colorScale = globalColorScale;\n }\n if (!colorField) {\n colorField = globalField;\n }\n }\n\n const themeColor = computeActualDataScheme(\n getDataScheme(\n this.model.getOption()?.getTheme()?.colorScheme,\n this.model.modelType === 'series' ? (this.model.type as SeriesTypeEnum) : undefined\n ),\n (this.model as ISeries).getDefaultColorDomain()\n );\n const computeStyle: any = {};\n // 默认配置处理\n const mergedStyle = {\n ...DEFAULT_GRADIENT_CONFIG[gradient],\n ...rest\n };\n Object.keys(mergedStyle).forEach(key => {\n const value = mergedStyle[key];\n if (key === 'stops') {\n computeStyle.stops = value.map((stop: GradientStop) => {\n const { opacity, color, offset } = stop;\n let computeColor = color ?? colorScale?.scale(data[colorField]);\n if (isFunction(color)) {\n computeColor = color(data, this._attributeContext, opt, markData);\n }\n\n if (isValid(opacity)) {\n computeColor = Color.SetOpacity(computeColor as string, opacity);\n }\n\n return {\n offset: isFunction(offset) ? offset(data, this._attributeContext, opt, markData) : offset,\n color: computeColor || themeColor[0]\n };\n });\n } else if (isFunction(value)) {\n computeStyle[key] = value(data, this._attributeContext, opt, markData);\n } else {\n computeStyle[key] = value;\n }\n });\n\n computeStyle.gradient = gradient;\n\n return computeStyle;\n }\n\n private _computeBorderAttr(borderStyle: any, data: Datum, opt: IAttributeOpt) {\n const { scale, field, ...mergedStyle } = borderStyle;\n\n const computeStyle: any = {};\n\n Object.keys(mergedStyle).forEach(key => {\n const value = mergedStyle[key];\n if (isFunction(value)) {\n computeStyle[key] = value(data, this._attributeContext, opt, this.getDataView());\n } else {\n computeStyle[key] = value;\n }\n });\n if (!('stroke' in computeStyle)) {\n const themeColor = computeActualDataScheme(\n getDataScheme(\n this.model.getOption()?.getTheme()?.colorScheme,\n this.model.modelType === 'series' ? (this.model.type as SeriesTypeEnum) : undefined\n ),\n (this.model as ISeries).getDefaultColorDomain()\n );\n let colorScale = scale;\n let colorField = field;\n if ((!scale || !field) && this.model.modelType === 'series') {\n // 目前只有series有这个属性\n const { scale: globalColorScale, field: globalField } = (this.model as BaseSeries<any>).getColorAttribute();\n if (!scale) {\n // 获取全局的 colorScale\n colorScale = globalColorScale;\n }\n if (!colorField) {\n colorField = globalField;\n }\n computeStyle.stroke = colorScale?.scale(data[colorField]) || themeColor[0];\n }\n } else if (GradientType.includes(mergedStyle.stroke?.gradient)) {\n computeStyle.stroke = this._computeGradientAttr(mergedStyle.stroke, data, opt);\n }\n return computeStyle;\n }\n\n private _computeThresholdAttr(thresholdStyle: IThresholdStyle) {\n const scale = new ThresholdScale().domain(thresholdStyle.domain).range(thresholdStyle.range);\n return scale.scale(this.getDataView().latestData[0].value);\n }\n}\n"]}
|
|
1
|
+
{"version":3,"sources":["../src/mark/base/base-mark.ts"],"names":[],"mappings":"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","file":"base-mark.js","sourcesContent":["import type { IStateInfo, IAttributeOpt, IModelMarkAttributeContext } from '../../compile/mark/interface';\nimport type { BaseSeries } from '../../series/base/base-series';\nimport type {\n Datum,\n IMarkSpec,\n ConvertToMarkStyleSpec,\n GradientStop,\n IVisual,\n IVisualScale,\n IVisualSpecStyle,\n ICommonSpec,\n FunctionType\n} from '../../typings';\n\nimport { isBoolean, isFunction, isNil, isValid, mergeSpec, Color, createScaleWithSpec, isNumber } from '../../util';\nimport type {\n IMarkRaw,\n IMarkStateStyle,\n IMarkStyle,\n IMark,\n IMarkOption,\n StyleConvert,\n VisualScaleType,\n MarkInputStyle\n} from '../interface';\nimport { AttributeLevel, GradientType, DEFAULT_GRADIENT_CONFIG } from '../../constant';\nimport { isValidScaleType } from '@visactor/vscale';\nimport type { DataView } from '@visactor/vdataset';\nimport { computeActualDataScheme, getDataScheme } from '../../theme/color-scheme/util';\nimport type { ISeries, SeriesTypeEnum } from '../../series/interface';\nimport { CompilableMark } from '../../compile/mark/compilable-mark';\nimport type { StateValueType } from '../../compile/mark';\nimport { degreeToRadian } from '@visactor/vutils';\n\nexport type ExChannelCall = (\n key: string | number | symbol,\n datum: Datum,\n states: StateValueType,\n opt: unknown,\n baseValue: unknown\n) => unknown;\n\nexport class BaseMark<T extends ICommonSpec> extends CompilableMark implements IMarkRaw<T> {\n declare stateStyle: IMarkStateStyle<T>;\n\n protected declare _option: IMarkOption;\n\n protected _attributeContext: IModelMarkAttributeContext;\n\n /** by _unCompileChannel, some channel need add default channel to make sure update available */\n _extensionChannel: {\n [key: string | number | symbol]: string[];\n } = {};\n /** same as _extensionChannel. when compute channel, add extension channel effect */\n _computeExChannel: {\n [key: string | number | symbol]: ExChannelCall;\n } = {};\n\n constructor(name: string, option: IMarkOption) {\n super(option, name, option.model);\n // 这里的上下文多数情况下与 mark 是什么是没有关系的,与mark的使用者,也就是series,component有的逻辑有关。\n this._attributeContext = option.attributeContext;\n option.map?.set(this.id, this as unknown as IMark);\n }\n\n created(): void {\n this._initStyle();\n }\n\n /**\n * 外部调用,根据 spec 初始化 style(如果由 IModel 派生类调用,请使用 IModel.initMarkStyleWithSpec)\n * @param spec\n * @param key\n * @returns\n */\n initStyleWithSpec(spec: IMarkSpec<T>, key?: string) {\n if (!spec) {\n return;\n }\n\n if (isValid(spec.id)) {\n this._userId = spec.id;\n }\n\n // interactive\n if (isBoolean(spec.interactive)) {\n this._interactive = spec.interactive;\n }\n // zIndex\n if (isValid(spec.zIndex)) {\n this.setZIndex(spec.zIndex);\n }\n // visible\n if (isBoolean(spec.visible)) {\n this.setVisible(spec.visible);\n }\n // style\n this._initSpecStyle(spec, this.stateStyle, key);\n }\n\n convertAngleToRadian(styleConverter: StyleConvert<number>): StyleConvert<any> {\n // 用户传入的angle配置,需要做一层转换\n if (isNumber(styleConverter)) {\n return degreeToRadian(styleConverter) as StyleConvert<any>;\n } else if ((styleConverter as VisualScaleType).scale) {\n const range = (styleConverter as VisualScaleType).scale.range();\n\n (styleConverter as VisualScaleType).scale.range(range.map(degreeToRadian));\n\n return styleConverter as StyleConvert<any>;\n } else if (typeof styleConverter === 'function') {\n return ((item: any, ctx: any, opt: IAttributeOpt, source?: DataView) => {\n return degreeToRadian((styleConverter as FunctionType<number>)(item, ctx, opt, source));\n }) as StyleConvert<any>;\n }\n\n return styleConverter;\n }\n\n isUserLevel(level: number) {\n return [AttributeLevel.User_Mark, AttributeLevel.User_Series, AttributeLevel.User_Chart].includes(level);\n }\n\n /**\n * 由外部series调用,设置markStyle的接口(如果由 IModel 派生类调用,请使用 IModel.setMarkStyle)\n * @param style\n * @param level\n * @param state\n */\n setStyle<U extends keyof T>(\n style: Partial<IMarkStyle<T>>,\n state: StateValueType = 'normal',\n level: number = 0,\n stateStyle = this.stateStyle\n ): void {\n if (isNil(style)) {\n return;\n }\n style = this._filterStyle(style, state, level, stateStyle);\n\n if (stateStyle[state] === undefined) {\n stateStyle[state] = {};\n }\n\n const isUserLevel = this.isUserLevel(level);\n\n Object.keys(style).forEach((attr: string) => {\n let attrStyle = style[attr] as MarkInputStyle<T[U]>;\n if (isNil(attrStyle)) {\n return;\n }\n\n attrStyle = this._filterAttribute(attr as any, attrStyle, state, level, isUserLevel, stateStyle);\n\n this.setAttribute(attr as any, attrStyle, state, level, stateStyle);\n });\n }\n\n getStyle(key: string, state: StateValueType = 'normal'): any {\n return this.stateStyle[state][key]?.style;\n }\n\n /** 过滤用户传来的 style 对象 */\n protected _filterStyle(\n style: Partial<IMarkStyle<T>>,\n state: StateValueType,\n level: number,\n stateStyle = this.stateStyle\n ): Partial<IMarkStyle<T>> {\n return style;\n }\n\n /** 过滤单个 attribute */\n protected _filterAttribute<U extends keyof T>(\n attr: U,\n style: MarkInputStyle<T[U]>,\n state: StateValueType,\n level: number,\n isUserLevel: boolean,\n stateStyle = this.stateStyle\n ): StyleConvert<T[U]> {\n let newStyle = this._styleConvert(style);\n if (isUserLevel && attr === 'angle') {\n newStyle = this.convertAngleToRadian(newStyle as StyleConvert<number>);\n }\n return newStyle;\n }\n\n /**\n * TODO: 没有外部调用\n * 设置mark样式所参考的图元\n */\n setReferer<U extends keyof T>(mark: IMarkRaw<T>, styleKey?: U, state?: StateValueType, stateStyle = this.stateStyle) {\n if (!mark) {\n return;\n }\n if (styleKey && state) {\n const style = stateStyle[state] ?? { [styleKey]: {} };\n stateStyle[state][styleKey] = {\n ...(style[styleKey] as unknown as any),\n ...{ referer: mark }\n };\n return;\n }\n\n Object.entries(stateStyle).forEach(([state, style]) => {\n Object.entries(style).forEach(([styleKey, style]) => {\n stateStyle[state][styleKey].referer = mark;\n });\n });\n }\n\n setPostProcess<U extends keyof T>(key: U, postProcessFunc: any, state: StateValueType = 'normal') {\n if (this.stateStyle[state]?.[key]) {\n this.stateStyle[state][key].postProcess = postProcessFunc;\n }\n }\n\n getAttribute<U extends keyof T>(key: U, datum: Datum, state: StateValueType = 'normal', opt?: IAttributeOpt) {\n return this._computeAttribute(key, datum, state, opt);\n }\n\n setAttribute<U extends keyof T>(\n attr: U,\n style: MarkInputStyle<T[U]>,\n state: StateValueType = 'normal',\n level: number = 0,\n stateStyle = this.stateStyle\n ) {\n if (stateStyle[state] === undefined) {\n stateStyle[state] = {};\n }\n\n if (stateStyle[state][attr] === undefined) {\n // eslint-disable-next-line @typescript-eslint/ban-ts-comment\n // @ts-ignore\n stateStyle[state][attr] = {\n level,\n style,\n referer: undefined\n };\n }\n const attrLevel = stateStyle[state][attr]?.level;\n if (isValid(attrLevel) && attrLevel <= level) {\n mergeSpec(stateStyle[state][attr], { style, level });\n }\n\n // some attr has extension channel in VChart to make some effect\n if (state !== 'normal') {\n if (attr in this._extensionChannel) {\n this._extensionChannel[attr].forEach(key => {\n if (stateStyle[state][key] === undefined) {\n // eslint-disable-next-line @typescript-eslint/ban-ts-comment\n // @ts-ignore\n stateStyle[state][key as keyof T] = stateStyle.normal[key];\n }\n });\n }\n }\n }\n\n /**\n * 与 vgrammar 默认值一致的样式可以不设置默认值或设置为undefined, 减少encode属性\n */\n protected _getDefaultStyle() {\n return {\n visible: true,\n // mark的层级应该在mark层 不在encode属性层\n // zIndex: LayoutZIndex.Mark,\n x: 0,\n y: 0\n } as IMarkStyle<T>;\n }\n\n // /**\n // * 获取该 mark 不支持的图形属性,由子类覆写\n // * @returns\n // */\n // protected getIgnoreAttributes(): string[] {\n // return [];\n // }\n\n protected _styleConvert<U extends keyof T>(style?: MarkInputStyle<T[U]>): StyleConvert<T[U]> | undefined {\n if (!style) {\n return style as undefined;\n }\n // visual spec 转换为 scale 类型的mark style\n if (isValidScaleType((style as IVisualSpecStyle<unknown, T[U]>).type) || (style as IVisualScale).scale) {\n // const _style = style as IVisual<T[U]>;\n const scale = createScaleWithSpec(style as IVisual<T[U]>, {\n globalScale: this._option.globalScale,\n dataStatistics: this._option.dataStatistics\n });\n if (scale) {\n return {\n scale,\n field: (style as IVisual<T[U]>).field,\n changeDomain: (style as IVisualScale).changeDomain\n };\n }\n }\n return style as StyleConvert<T[U]>;\n }\n\n protected _computeAttribute<U extends keyof T>(key: U, datum: Datum, state: StateValueType, opt: IAttributeOpt) {\n let stateStyle = this.stateStyle[state]?.[key];\n if (!stateStyle) {\n stateStyle = this.stateStyle.normal[key];\n }\n let baseValue = this._computeStateAttribute(stateStyle, key, datum, state, opt);\n\n if (isFunction(stateStyle?.postProcess)) {\n baseValue = stateStyle.postProcess(baseValue, datum, this._attributeContext, opt, this.getDataView());\n }\n // add effect to base\n if (key in this._computeExChannel) {\n return this._computeExChannel[key](key, datum, state, opt, baseValue);\n }\n return baseValue;\n }\n\n protected _computeStateAttribute<U extends keyof T>(\n stateStyle: any,\n key: U,\n datum: Datum,\n state: StateValueType,\n opt: IAttributeOpt\n ) {\n if (!stateStyle) {\n return undefined;\n }\n if (stateStyle.referer) {\n return stateStyle.referer.getAttribute(key, datum, state, opt);\n }\n if (typeof stateStyle.style === 'function') {\n return stateStyle.style(datum, this._attributeContext, opt, this.getDataView());\n }\n\n if (GradientType.includes(stateStyle.style.gradient)) {\n // 渐变色处理,支持各个属性回调\n return this._computeGradientAttr(stateStyle.style, datum, opt);\n }\n\n if (['outerBorder', 'innerBorder'].includes(key as string)) {\n // 内外描边处理,支持各个属性回调\n return this._computeBorderAttr(stateStyle.style, datum, opt);\n }\n\n if (isValidScaleType(stateStyle.style.scale?.type)) {\n return stateStyle.style.scale.scale(datum[stateStyle.style.field]);\n }\n\n return stateStyle.style;\n }\n\n private _initStyle(): void {\n const defaultStyle = this._getDefaultStyle();\n this.setStyle(defaultStyle, 'normal', 0);\n }\n\n private _initSpecStyle(spec: IMarkSpec<T>, stateStyle: IMarkStateStyle<T>, key?: string) {\n // style\n if (spec.style) {\n this.setStyle(spec.style, 'normal', AttributeLevel.User_Mark, stateStyle);\n }\n const state = spec.state;\n if (state) {\n Object.keys(state).forEach(key => {\n const stateTemp = state[key];\n if ('style' in stateTemp) {\n const style = stateTemp.style;\n let stateInfo: IStateInfo = { stateValue: key };\n if ('level' in stateTemp) {\n stateInfo.level = stateTemp.level as number;\n }\n if ('filter' in stateTemp) {\n if (isFunction(stateTemp.filter)) {\n stateInfo = {\n filter: stateTemp.filter as (datum: any, options: Record<string, any>) => boolean,\n ...stateInfo\n };\n } else {\n stateInfo = { ...stateTemp.filter, ...stateInfo };\n }\n }\n this.state.addStateInfo(stateInfo);\n this.setStyle(style as ConvertToMarkStyleSpec<T>, key, AttributeLevel.User_Mark, stateStyle);\n } else {\n this.setStyle(stateTemp, key, AttributeLevel.User_Mark, stateStyle);\n }\n });\n }\n }\n\n private _computeGradientAttr(gradientStyle: any, data: Datum, opt: IAttributeOpt) {\n const { gradient, scale, field, ...rest } = gradientStyle;\n const markData = this.getDataView();\n let colorScale = scale;\n let colorField = field;\n if ((!scale || !field) && this.model.modelType === 'series') {\n // 目前只有series有这个属性\n const { scale: globalColorScale, field: globalField } = (this.model as BaseSeries<any>).getColorAttribute();\n if (!scale) {\n // 获取全局的 colorScale\n colorScale = globalColorScale;\n }\n if (!colorField) {\n colorField = globalField;\n }\n }\n\n const themeColor = computeActualDataScheme(\n getDataScheme(\n this.model.getOption()?.getTheme()?.colorScheme,\n this.model.modelType === 'series' ? (this.model.type as SeriesTypeEnum) : undefined\n ),\n (this.model as ISeries).getDefaultColorDomain()\n );\n const computeStyle: any = {};\n // 默认配置处理\n const mergedStyle = {\n ...DEFAULT_GRADIENT_CONFIG[gradient],\n ...rest\n };\n Object.keys(mergedStyle).forEach(key => {\n const value = mergedStyle[key];\n if (key === 'stops') {\n computeStyle.stops = value.map((stop: GradientStop) => {\n const { opacity, color, offset } = stop;\n let computeColor = color ?? colorScale?.scale(data[colorField]);\n if (isFunction(color)) {\n computeColor = color(data, this._attributeContext, opt, markData);\n }\n\n if (isValid(opacity)) {\n computeColor = Color.SetOpacity(computeColor as string, opacity);\n }\n\n return {\n offset: isFunction(offset) ? offset(data, this._attributeContext, opt, markData) : offset,\n color: computeColor || themeColor[0]\n };\n });\n } else if (isFunction(value)) {\n computeStyle[key] = value(data, this._attributeContext, opt, markData);\n } else {\n computeStyle[key] = value;\n }\n });\n\n computeStyle.gradient = gradient;\n\n return computeStyle;\n }\n\n private _computeBorderAttr(borderStyle: any, data: Datum, opt: IAttributeOpt) {\n const { scale, field, ...mergedStyle } = borderStyle;\n\n const computeStyle: any = {};\n\n Object.keys(mergedStyle).forEach(key => {\n const value = mergedStyle[key];\n if (isFunction(value)) {\n computeStyle[key] = value(data, this._attributeContext, opt, this.getDataView());\n } else {\n computeStyle[key] = value;\n }\n });\n if (!('stroke' in computeStyle)) {\n const themeColor = computeActualDataScheme(\n getDataScheme(\n this.model.getOption()?.getTheme()?.colorScheme,\n this.model.modelType === 'series' ? (this.model.type as SeriesTypeEnum) : undefined\n ),\n (this.model as ISeries).getDefaultColorDomain()\n );\n let colorScale = scale;\n let colorField = field;\n if ((!scale || !field) && this.model.modelType === 'series') {\n // 目前只有series有这个属性\n const { scale: globalColorScale, field: globalField } = (this.model as BaseSeries<any>).getColorAttribute();\n if (!scale) {\n // 获取全局的 colorScale\n colorScale = globalColorScale;\n }\n if (!colorField) {\n colorField = globalField;\n }\n computeStyle.stroke = colorScale?.scale(data[colorField]) || themeColor[0];\n }\n } else if (GradientType.includes(mergedStyle.stroke?.gradient)) {\n computeStyle.stroke = this._computeGradientAttr(mergedStyle.stroke, data, opt);\n }\n return computeStyle;\n }\n}\n"]}
|
|
@@ -58,7 +58,14 @@ export declare abstract class BaseModel<T extends IModelSpec> extends LayoutItem
|
|
|
58
58
|
updateSpec(spec: any): {
|
|
59
59
|
change: boolean;
|
|
60
60
|
reMake: boolean;
|
|
61
|
-
|
|
61
|
+
reRender: boolean;
|
|
62
|
+
reSize: boolean;
|
|
63
|
+
reCompile: boolean;
|
|
64
|
+
};
|
|
65
|
+
protected _transformSpec(): void;
|
|
66
|
+
protected _compareSpec(): {
|
|
67
|
+
change: boolean;
|
|
68
|
+
reMake: boolean;
|
|
62
69
|
reRender: boolean;
|
|
63
70
|
reSize: boolean;
|
|
64
71
|
reCompile: boolean;
|
package/cjs/model/base-model.js
CHANGED
|
@@ -47,11 +47,11 @@ class BaseModel extends layout_item_1.LayoutItem {
|
|
|
47
47
|
super(option), this.type = "null", this.modelType = "null", this.userId = void 0,
|
|
48
48
|
this._data = null, this._specIndex = 0, this.specKey = "", this._marks = new mark_set_1.MarkSet,
|
|
49
49
|
this._lastLayoutRect = null, this._isLayout = !0, this.id = (0, util_1.createID)(),
|
|
50
|
-
this._originalSpec = spec, this._spec = (0, util_1.cloneDeepSpec)(spec), this.
|
|
51
|
-
this.
|
|
52
|
-
this.
|
|
53
|
-
null === (_c = option.map) || void 0 === _c || _c.set(this.id, this),
|
|
54
|
-
this.state = new model_state_manager_1.ModelStateManager(Object.assign(Object.assign({}, option), {
|
|
50
|
+
this._originalSpec = spec, this._spec = (0, util_1.cloneDeepSpec)(spec), this._transformSpec(),
|
|
51
|
+
this.userId = spec.id, this._specIndex = null !== (_a = option.specIndex) && void 0 !== _a ? _a : 0,
|
|
52
|
+
this.specKey = null !== (_b = option.specKey) && void 0 !== _b ? _b : "", this.effect = {},
|
|
53
|
+
this.event = new event_1.Event(option.eventDispatcher, option.mode), null === (_c = option.map) || void 0 === _c || _c.set(this.id, this),
|
|
54
|
+
this._sceneNodeMap = new Map, this.state = new model_state_manager_1.ModelStateManager(Object.assign(Object.assign({}, option), {
|
|
55
55
|
stateKeyToSignalName: this.stateKeyToSignalName.bind(this)
|
|
56
56
|
}));
|
|
57
57
|
}
|
|
@@ -88,17 +88,22 @@ class BaseModel extends layout_item_1.LayoutItem {
|
|
|
88
88
|
this._data = this._specIndex = this._sceneNodeMap = null, this._marks.clear(), super.release();
|
|
89
89
|
}
|
|
90
90
|
updateSpec(spec) {
|
|
91
|
-
this.
|
|
91
|
+
this._spec = (0, util_1.cloneDeepSpec)(spec);
|
|
92
|
+
const result = this._compareSpec();
|
|
93
|
+
return this._originalSpec = spec, result.reMake || this.reInit(), result;
|
|
94
|
+
}
|
|
95
|
+
_transformSpec() {}
|
|
96
|
+
_compareSpec() {
|
|
92
97
|
return {
|
|
93
98
|
change: !1,
|
|
94
99
|
reMake: !1,
|
|
95
|
-
reMakeData: !1,
|
|
96
100
|
reRender: !1,
|
|
97
101
|
reSize: !1,
|
|
98
102
|
reCompile: !1
|
|
99
103
|
};
|
|
100
104
|
}
|
|
101
105
|
reInit(theme) {
|
|
106
|
+
this._spec = (0, util_1.cloneDeepSpec)(this._originalSpec), this._transformSpec(),
|
|
102
107
|
this._initTheme(theme), this.setAttrFromSpec();
|
|
103
108
|
}
|
|
104
109
|
_initTheme(theme) {
|
|
@@ -118,8 +123,8 @@ class BaseModel extends layout_item_1.LayoutItem {
|
|
|
118
123
|
_mergeThemeToSpec() {
|
|
119
124
|
if (this._shouldMergeThemeToSpec()) {
|
|
120
125
|
const specFromChart = this._getDefaultSpecFromChart(this.getChart().getSpec()), merge = originalSpec => (0,
|
|
121
|
-
util_1.mergeSpec)({}, this._theme, this._prepareSpecBeforeMergingTheme(specFromChart), this._prepareSpecBeforeMergingTheme(originalSpec));
|
|
122
|
-
(0, vutils_1.isArray)(
|
|
126
|
+
util_1.mergeSpec)({}, this._theme, this._prepareSpecBeforeMergingTheme(specFromChart), this._prepareSpecBeforeMergingTheme(originalSpec)), baseSpec = this._spec;
|
|
127
|
+
(0, vutils_1.isArray)(baseSpec) ? this._spec = baseSpec.map((spec => merge(spec))) : this._spec = merge(baseSpec);
|
|
123
128
|
}
|
|
124
129
|
this._prepareSpecAfterMergingTheme();
|
|
125
130
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../src/model/base-model.ts"],"names":[],"mappings":"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","file":"base-model.js","sourcesContent":["import { createID, isValid, cloneDeepSpec, preprocessSpecOrTheme, mergeSpec } from '../util';\nimport { Event } from '../event/event';\nimport type { IEvent } from '../event/interface';\nimport { LayoutItem } from './layout-item';\nimport type {\n IEffect,\n IModel,\n IModelInitOption,\n IModelOption,\n IModelRenderOption,\n IModelEvaluateOption,\n IModelSpec,\n ILayoutRect,\n IModelMarkInfo\n} from './interface';\nimport type { CoordinateType } from '../typings/coordinate';\nimport type { IMark, IMarkOption, IMarkRaw, IMarkStyle, MarkTypeEnum } from '../mark/interface';\nimport type { Datum, StateValueType, ConvertToMarkStyleSpec, ICommonSpec, StringOrNumber, IRect } from '../typings';\nimport type { ITooltipHelper } from './tooltip-helper';\nimport type { CompilableData } from '../compile/data/compilable-data';\nimport { ModelStateManager } from './model-state-manager';\nimport { PREFIX } from '../constant';\nimport type { IElement, IGroupMark, IMark as IVGrammarMark } from '@visactor/vgrammar-core';\nimport { array, isArray, isEqual, isNil } from '@visactor/vutils';\nimport { Factory } from '../core/factory';\nimport type { SeriesTypeEnum } from '../series/interface';\nimport { MarkSet } from '../mark/mark-set';\n\nexport abstract class BaseModel<T extends IModelSpec> extends LayoutItem<T> implements IModel {\n readonly type: string = 'null';\n readonly modelType: string = 'null';\n\n readonly id;\n\n userId: StringOrNumber | undefined = undefined;\n\n // 事件\n readonly event: IEvent;\n\n // 副作用\n readonly effect: IEffect;\n\n // 数据\n protected _data: CompilableData = null;\n getData() {\n return this._data;\n }\n\n protected _specIndex: number = 0;\n getSpecIndex() {\n return this._specIndex;\n }\n\n readonly specKey: string = '';\n\n protected _originalSpec: any;\n\n protected declare _option: IModelOption;\n getOption() {\n return this._option;\n }\n\n protected _sceneNodeMap: Map<string, IElement>;\n\n protected _marks: MarkSet = new MarkSet();\n getMarks(): IMark[] {\n return this._marks?.getMarks() ?? [];\n }\n getMarkNameMap() {\n return this._marks?.getMarkNameMap();\n }\n getMarkSet() {\n return this._marks;\n }\n getMarkInfoList(): IModelMarkInfo[] {\n return this.getMarks().map(mark => ({\n type: mark.type as MarkTypeEnum,\n name: mark.name\n }));\n }\n\n getChart() {\n return this._option.getChart();\n }\n\n /** 状态管理器 */\n state: ModelStateManager;\n getState() {\n return this.state._stateMap;\n }\n\n protected _theme?: any; // 非全局 theme,是对应于具体 model 的 theme 对象\n\n /** for layout diff */\n protected _lastLayoutRect: ILayoutRect = null;\n\n protected _tooltipHelper: ITooltipHelper | undefined;\n get tooltipHelper() {\n return this._tooltipHelper;\n }\n\n // TODO: 有些hack,这个tag是为了避免布局逻辑中,轴的数据变化,又由数据变化触发重新布局\n protected _isLayout: boolean = true;\n\n constructor(spec: T, option: IModelOption) {\n super(option);\n this.id = createID();\n this._originalSpec = spec;\n this._spec = cloneDeepSpec(spec);\n this.userId = spec.id;\n this._specIndex = option.specIndex ?? 0;\n this.specKey = option.specKey ?? '';\n this.effect = {};\n this.event = new Event(option.eventDispatcher, option.mode);\n option.map?.set(this.id, this);\n this._sceneNodeMap = new Map();\n this.state = new ModelStateManager({\n ...option,\n stateKeyToSignalName: this.stateKeyToSignalName.bind(this)\n });\n }\n coordinate?: CoordinateType;\n\n protected _releaseEvent() {\n this.event.release();\n }\n\n created() {\n this._initTheme();\n this.setAttrFromSpec();\n }\n\n updateState(newState: Record<string, unknown>) {\n return this.state.updateState(newState);\n }\n\n init(option: IModelInitOption) {\n // do nothing\n }\n\n afterInit() {\n // do nothing\n }\n\n onLayoutStart(layoutRect: IRect, viewRect: ILayoutRect, ctx: any): void {\n super.onLayoutStart(layoutRect, viewRect, ctx);\n this._isLayout = true;\n }\n onLayoutEnd(ctx: any): void {\n // diff layoutRect\n const layoutRect = this.getLayoutRect();\n if (this._forceLayoutTag || !isEqual(this._lastLayoutRect, layoutRect)) {\n this.updateLayoutAttribute();\n }\n this._forceLayoutTag = false;\n this.getMarks().forEach(m => m.updateLayoutState(true, true));\n this._isLayout = false;\n }\n\n protected _forceLayout() {\n if (this._isLayout) {\n return;\n }\n this._forceLayoutTag = true;\n this._option.globalInstance.getChart()?.setLayoutTag(true);\n }\n\n onEvaluateEnd(ctx: IModelEvaluateOption) {\n // do nothing\n }\n abstract onRender(ctx: IModelRenderOption): void;\n\n onDataUpdate() {\n // do nothing\n }\n\n release() {\n this._releaseEvent();\n this._originalSpec = {};\n this._spec = undefined;\n this.getMarks().forEach(m => m.release());\n this.state.release();\n this._data?.release();\n this._data = this._specIndex = this._sceneNodeMap = null;\n this._marks.clear();\n super.release();\n }\n\n updateSpec(spec: any) {\n this._originalSpec = spec;\n this._spec = cloneDeepSpec(spec);\n const result = {\n change: false,\n reMake: false,\n reMakeData: false,\n reRender: false,\n reSize: false,\n reCompile: false\n };\n return result;\n }\n\n reInit(theme?: any) {\n this._initTheme(theme);\n this.setAttrFromSpec();\n }\n\n protected _initTheme(theme?: any) {\n this._theme = theme;\n\n this._mergeMarkTheme();\n }\n\n /** 将全局的 mark theme 合并进 model theme */\n protected _mergeMarkTheme() {\n const globalTheme = this._option.getTheme?.();\n if (isNil(globalTheme) || isNil(this._theme)) {\n return;\n }\n\n const { mark: markThemeByType, markByName: markThemeByName } = globalTheme;\n this.getMarkInfoList().forEach(({ type, name }) => {\n this._theme[name] = mergeSpec(\n {},\n markThemeByType?.[array(type)[0]] ?? {},\n markThemeByName?.[name] ?? {},\n this._theme[name]\n );\n });\n }\n\n /** 将 theme merge 到 spec 中 */\n protected _mergeThemeToSpec() {\n if (this._shouldMergeThemeToSpec()) {\n const specFromChart = this._getDefaultSpecFromChart(this.getChart().getSpec());\n\n // this._originalSpec + specFromChart + this._theme = this._spec\n const merge = (originalSpec: any) =>\n mergeSpec(\n {},\n this._theme,\n this._prepareSpecBeforeMergingTheme(specFromChart),\n this._prepareSpecBeforeMergingTheme(originalSpec)\n );\n\n if (isArray(this._originalSpec)) {\n this._spec = this._originalSpec.map(spec => merge(spec)) as unknown as T;\n } else {\n this._spec = merge(this._originalSpec);\n }\n }\n this._prepareSpecAfterMergingTheme();\n }\n\n /** 从 chart spec 提取配置作为 model 的默认 spec 配置 */\n protected _getDefaultSpecFromChart(chartSpec: any): Partial<T> {\n return {};\n }\n\n /** 是否在初始化时将 theme 自动 merge 到 spec */\n protected _shouldMergeThemeToSpec(): boolean {\n return true;\n }\n\n /** 在 merge 主题前对 spec 进行预处理 */\n protected _prepareSpecBeforeMergingTheme(obj?: any): any {\n // do nothing\n return obj;\n }\n\n /** 在 merge 主题后对 spec 进行遍历和转换 */\n protected _prepareSpecAfterMergingTheme(obj?: any): any {\n if (!arguments.length) {\n obj = this._spec;\n }\n\n const newObj = preprocessSpecOrTheme(\n 'spec',\n obj,\n this._option.getTheme?.()?.colorScheme,\n this.modelType === 'series' ? (this.type as SeriesTypeEnum) : undefined\n );\n\n if (!arguments.length) {\n this._spec = newObj;\n }\n return newObj;\n }\n\n setCurrentTheme(theme: any, noRender?: boolean) {\n // do nothing\n }\n\n updateLayoutAttribute() {\n // do nothing\n }\n\n setAttrFromSpec() {\n super.setAttrFromSpec(this._spec, this._option.getChartViewRect());\n }\n\n /** mark style 内部转换逻辑,override 使用 */\n protected _convertMarkStyle<T extends ICommonSpec = ICommonSpec>(\n style: Partial<IMarkStyle<T> | ConvertToMarkStyleSpec<T>>\n ): Partial<IMarkStyle<T> | ConvertToMarkStyleSpec<T>> {\n const newStyle: any = { ...style };\n return newStyle;\n }\n\n setMarkStyle<T extends ICommonSpec>(\n mark: IMarkRaw<T>,\n style?: Partial<IMarkStyle<T> | ConvertToMarkStyleSpec<T>>,\n state?: StateValueType,\n level?: number\n ) {\n if (!isValid(mark) || !isValid(style)) {\n return;\n }\n mark.setStyle(this._convertMarkStyle(style), state, level);\n }\n\n initMarkStyleWithSpec(mark?: IMark, spec?: any, key?: string) {\n if (!isValid(mark) || !isValid(spec)) {\n return;\n }\n const { style, state } = spec;\n const newSpec = { ...spec };\n\n if (style) {\n newSpec.style = this._convertMarkStyle(style);\n }\n if (state) {\n newSpec.state = {};\n Object.keys(state).forEach(key => {\n newSpec.state[key] = this._convertMarkStyle(state[key]);\n });\n }\n mark.initStyleWithSpec(newSpec, key);\n }\n\n protected stateKeyToSignalName(key: string, opt?: string) {\n let name = `${PREFIX}_${this.modelType}_${this.type}_${this.id}_${key}`;\n opt && (name += `_${opt}`);\n return name;\n }\n\n compileData() {\n this._data?.compile();\n }\n\n compileMarks(group?: string | IGroupMark) {\n this.getMarks().forEach(m => {\n m.compile({ group });\n });\n }\n\n compileSignal() {\n this.state?.compile();\n }\n\n bindSceneNode(node: IElement) {\n this._sceneNodeMap.set(node.mark.id(), node as IElement);\n }\n\n getSceneNodes() {\n return Array.from(this._sceneNodeMap.values());\n }\n\n getSceneNodeMarks() {\n return this.getSceneNodes().map(node => node.mark as IVGrammarMark);\n }\n\n protected _createMark<T extends IMark>(markInfo: IModelMarkInfo, option: Partial<IMarkOption> = {}): T {\n const { type, name } = markInfo;\n const m = Factory.createMark(type as any, name, {\n model: this,\n map: this._option.map,\n getCompiler: this.getCompiler,\n globalScale: this._option.globalScale,\n ...option\n }) as T;\n m?.created();\n return m;\n }\n\n /**\n * 数据唯一ID\n * 根据自身动画数据匹配需求设置返回值。\n * 默认返回 undefined 时,根据 VGrammar 默认数据 ID 进行索引和匹配。\n */\n protected _getDataIdKey(): string | ((datum: Datum) => string) | undefined {\n return undefined;\n }\n}\n"]}
|
|
1
|
+
{"version":3,"sources":["../src/model/base-model.ts"],"names":[],"mappings":";;;AAAA,kCAA6F;AAC7F,0CAAuC;AAEvC,+CAA2C;AAiB3C,+DAA0D;AAC1D,0CAAqC;AAErC,6CAAkE;AAClE,6CAA0C;AAE1C,+CAA2C;AAE3C,MAAsB,SAAgC,SAAQ,wBAAa;IAgBzE,OAAO;QACL,OAAO,IAAI,CAAC,KAAK,CAAC;IACpB,CAAC;IAGD,YAAY;QACV,OAAO,IAAI,CAAC,UAAU,CAAC;IACzB,CAAC;IAOD,SAAS;QACP,OAAO,IAAI,CAAC,OAAO,CAAC;IACtB,CAAC;IAKD,QAAQ;;QACN,OAAO,MAAA,MAAA,IAAI,CAAC,MAAM,0CAAE,QAAQ,EAAE,mCAAI,EAAE,CAAC;IACvC,CAAC;IACD,cAAc;;QACZ,OAAO,MAAA,IAAI,CAAC,MAAM,0CAAE,cAAc,EAAE,CAAC;IACvC,CAAC;IACD,UAAU;QACR,OAAO,IAAI,CAAC,MAAM,CAAC;IACrB,CAAC;IACD,eAAe;QACb,OAAO,IAAI,CAAC,QAAQ,EAAE,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;YAClC,IAAI,EAAE,IAAI,CAAC,IAAoB;YAC/B,IAAI,EAAE,IAAI,CAAC,IAAI;SAChB,CAAC,CAAC,CAAC;IACN,CAAC;IAED,QAAQ;QACN,OAAO,IAAI,CAAC,OAAO,CAAC,QAAQ,EAAE,CAAC;IACjC,CAAC;IAID,QAAQ;QACN,OAAO,IAAI,CAAC,KAAK,CAAC,SAAS,CAAC;IAC9B,CAAC;IAQD,IAAI,aAAa;QACf,OAAO,IAAI,CAAC,cAAc,CAAC;IAC7B,CAAC;IAKD,YAAY,IAAO,EAAE,MAAoB;;QACvC,KAAK,CAAC,MAAM,CAAC,CAAC;QA5EP,SAAI,GAAW,MAAM,CAAC;QACtB,cAAS,GAAW,MAAM,CAAC;QAIpC,WAAM,GAA+B,SAAS,CAAC;QASrC,UAAK,GAAmB,IAAI,CAAC;QAK7B,eAAU,GAAW,CAAC,CAAC;QAKxB,YAAO,GAAW,EAAE,CAAC;QAWpB,WAAM,GAAY,IAAI,kBAAO,EAAE,CAAC;QA8BhC,oBAAe,GAAgB,IAAI,CAAC;QAQpC,cAAS,GAAY,IAAI,CAAC;QAIlC,IAAI,CAAC,EAAE,GAAG,IAAA,eAAQ,GAAE,CAAC;QACrB,IAAI,CAAC,aAAa,GAAG,IAAI,CAAC;QAC1B,IAAI,CAAC,KAAK,GAAG,IAAA,oBAAa,EAAC,IAAI,CAAC,CAAC;QACjC,IAAI,CAAC,cAAc,EAAE,CAAC;QACtB,IAAI,CAAC,MAAM,GAAG,IAAI,CAAC,EAAE,CAAC;QACtB,IAAI,CAAC,UAAU,GAAG,MAAA,MAAM,CAAC,SAAS,mCAAI,CAAC,CAAC;QACxC,IAAI,CAAC,OAAO,GAAG,MAAA,MAAM,CAAC,OAAO,mCAAI,EAAE,CAAC;QACpC,IAAI,CAAC,MAAM,GAAG,EAAE,CAAC;QACjB,IAAI,CAAC,KAAK,GAAG,IAAI,aAAK,CAAC,MAAM,CAAC,eAAe,EAAE,MAAM,CAAC,IAAI,CAAC,CAAC;QAC5D,MAAA,MAAM,CAAC,GAAG,0CAAE,GAAG,CAAC,IAAI,CAAC,EAAE,EAAE,IAAI,CAAC,CAAC;QAC/B,IAAI,CAAC,aAAa,GAAG,IAAI,GAAG,EAAE,CAAC;QAC/B,IAAI,CAAC,KAAK,GAAG,IAAI,uCAAiB,iCAC7B,MAAM,KACT,oBAAoB,EAAE,IAAI,CAAC,oBAAoB,CAAC,IAAI,CAAC,IAAI,CAAC,IAC1D,CAAC;IACL,CAAC;IAGS,aAAa;QACrB,IAAI,CAAC,KAAK,CAAC,OAAO,EAAE,CAAC;IACvB,CAAC;IAED,OAAO;QACL,IAAI,CAAC,UAAU,EAAE,CAAC;QAClB,IAAI,CAAC,eAAe,EAAE,CAAC;IACzB,CAAC;IAED,WAAW,CAAC,QAAiC;QAC3C,OAAO,IAAI,CAAC,KAAK,CAAC,WAAW,CAAC,QAAQ,CAAC,CAAC;IAC1C,CAAC;IAED,IAAI,CAAC,MAAwB;IAE7B,CAAC;IAED,SAAS;IAET,CAAC;IAED,aAAa,CAAC,UAAiB,EAAE,QAAqB,EAAE,GAAQ;QAC9D,KAAK,CAAC,aAAa,CAAC,UAAU,EAAE,QAAQ,EAAE,GAAG,CAAC,CAAC;QAC/C,IAAI,CAAC,SAAS,GAAG,IAAI,CAAC;IACxB,CAAC;IACD,WAAW,CAAC,GAAQ;QAElB,MAAM,UAAU,GAAG,IAAI,CAAC,aAAa,EAAE,CAAC;QACxC,IAAI,IAAI,CAAC,eAAe,IAAI,CAAC,IAAA,gBAAO,EAAC,IAAI,CAAC,eAAe,EAAE,UAAU,CAAC,EAAE;YACtE,IAAI,CAAC,qBAAqB,EAAE,CAAC;SAC9B;QACD,IAAI,CAAC,eAAe,GAAG,KAAK,CAAC;QAC7B,IAAI,CAAC,QAAQ,EAAE,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,iBAAiB,CAAC,IAAI,EAAE,IAAI,CAAC,CAAC,CAAC;QAC9D,IAAI,CAAC,SAAS,GAAG,KAAK,CAAC;IACzB,CAAC;IAES,YAAY;;QACpB,IAAI,IAAI,CAAC,SAAS,EAAE;YAClB,OAAO;SACR;QACD,IAAI,CAAC,eAAe,GAAG,IAAI,CAAC;QAC5B,MAAA,IAAI,CAAC,OAAO,CAAC,cAAc,CAAC,QAAQ,EAAE,0CAAE,YAAY,CAAC,IAAI,CAAC,CAAC;IAC7D,CAAC;IAED,aAAa,CAAC,GAAyB;IAEvC,CAAC;IAGD,YAAY;IAEZ,CAAC;IAED,OAAO;;QACL,IAAI,CAAC,aAAa,EAAE,CAAC;QACrB,IAAI,CAAC,aAAa,GAAG,EAAE,CAAC;QACxB,IAAI,CAAC,KAAK,GAAG,SAAS,CAAC;QACvB,IAAI,CAAC,QAAQ,EAAE,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,OAAO,EAAE,CAAC,CAAC;QAC1C,IAAI,CAAC,KAAK,CAAC,OAAO,EAAE,CAAC;QACrB,MAAA,IAAI,CAAC,KAAK,0CAAE,OAAO,EAAE,CAAC;QACtB,IAAI,CAAC,KAAK,GAAG,IAAI,CAAC,UAAU,GAAG,IAAI,CAAC,aAAa,GAAG,IAAI,CAAC;QACzD,IAAI,CAAC,MAAM,CAAC,KAAK,EAAE,CAAC;QACpB,KAAK,CAAC,OAAO,EAAE,CAAC;IAClB,CAAC;IAED,UAAU,CAAC,IAAS;QAClB,IAAI,CAAC,KAAK,GAAG,IAAA,oBAAa,EAAC,IAAI,CAAC,CAAC;QACjC,MAAM,MAAM,GAAG,IAAI,CAAC,YAAY,EAAE,CAAC;QACnC,IAAI,CAAC,aAAa,GAAG,IAAI,CAAC;QAC1B,IAAI,CAAC,MAAM,CAAC,MAAM,EAAE;YAClB,IAAI,CAAC,MAAM,EAAE,CAAC;SACf;QACD,OAAO,MAAM,CAAC;IAChB,CAAC;IAES,cAAc;IAGxB,CAAC;IAES,YAAY;QACpB,MAAM,MAAM,GAAG;YACb,MAAM,EAAE,KAAK;YACb,MAAM,EAAE,KAAK;YACb,QAAQ,EAAE,KAAK;YACf,MAAM,EAAE,KAAK;YACb,SAAS,EAAE,KAAK;SACjB,CAAC;QACF,OAAO,MAAM,CAAC;IAChB,CAAC;IAED,MAAM,CAAC,KAAW;QAEhB,IAAI,CAAC,KAAK,GAAG,IAAA,oBAAa,EAAC,IAAI,CAAC,aAAa,CAAC,CAAC;QAC/C,IAAI,CAAC,cAAc,EAAE,CAAC;QACtB,IAAI,CAAC,UAAU,CAAC,KAAK,CAAC,CAAC;QACvB,IAAI,CAAC,eAAe,EAAE,CAAC;IACzB,CAAC;IAES,UAAU,CAAC,KAAW;QAC9B,IAAI,CAAC,MAAM,GAAG,KAAK,CAAC;QAEpB,IAAI,CAAC,eAAe,EAAE,CAAC;IACzB,CAAC;IAGS,eAAe;;QACvB,MAAM,WAAW,GAAG,MAAA,MAAA,IAAI,CAAC,OAAO,EAAC,QAAQ,kDAAI,CAAC;QAC9C,IAAI,IAAA,cAAK,EAAC,WAAW,CAAC,IAAI,IAAA,cAAK,EAAC,IAAI,CAAC,MAAM,CAAC,EAAE;YAC5C,OAAO;SACR;QAED,MAAM,EAAE,IAAI,EAAE,eAAe,EAAE,UAAU,EAAE,eAAe,EAAE,GAAG,WAAW,CAAC;QAC3E,IAAI,CAAC,eAAe,EAAE,CAAC,OAAO,CAAC,CAAC,EAAE,IAAI,EAAE,IAAI,EAAE,EAAE,EAAE;;YAChD,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,GAAG,IAAA,gBAAS,EAC3B,EAAE,EACF,MAAA,eAAe,aAAf,eAAe,uBAAf,eAAe,CAAG,IAAA,cAAK,EAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,mCAAI,EAAE,EACvC,MAAA,eAAe,aAAf,eAAe,uBAAf,eAAe,CAAG,IAAI,CAAC,mCAAI,EAAE,EAC7B,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,CAClB,CAAC;QACJ,CAAC,CAAC,CAAC;IACL,CAAC;IAGS,iBAAiB;QACzB,IAAI,IAAI,CAAC,uBAAuB,EAAE,EAAE;YAClC,MAAM,aAAa,GAAG,IAAI,CAAC,wBAAwB,CAAC,IAAI,CAAC,QAAQ,EAAE,CAAC,OAAO,EAAE,CAAC,CAAC;YAG/E,MAAM,KAAK,GAAG,CAAC,YAAiB,EAAE,EAAE,CAClC,IAAA,gBAAS,EACP,EAAE,EACF,IAAI,CAAC,MAAM,EACX,IAAI,CAAC,8BAA8B,CAAC,aAAa,CAAC,EAClD,IAAI,CAAC,8BAA8B,CAAC,YAAY,CAAC,CAClD,CAAC;YAEJ,MAAM,QAAQ,GAAG,IAAI,CAAC,KAAK,CAAC;YAC5B,IAAI,IAAA,gBAAO,EAAC,QAAQ,CAAC,EAAE;gBACrB,IAAI,CAAC,KAAK,GAAG,QAAQ,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE,CAAC,KAAK,CAAC,IAAI,CAAC,CAAiB,CAAC;aAChE;iBAAM;gBACL,IAAI,CAAC,KAAK,GAAG,KAAK,CAAC,QAAQ,CAAC,CAAC;aAC9B;SACF;QACD,IAAI,CAAC,6BAA6B,EAAE,CAAC;IACvC,CAAC;IAGS,wBAAwB,CAAC,SAAc;QAC/C,OAAO,EAAE,CAAC;IACZ,CAAC;IAGS,uBAAuB;QAC/B,OAAO,IAAI,CAAC;IACd,CAAC;IAGS,8BAA8B,CAAC,GAAS;QAEhD,OAAO,GAAG,CAAC;IACb,CAAC;IAGS,6BAA6B,CAAC,GAAS;;QAC/C,IAAI,CAAC,SAAS,CAAC,MAAM,EAAE;YACrB,GAAG,GAAG,IAAI,CAAC,KAAK,CAAC;SAClB;QAED,MAAM,MAAM,GAAG,IAAA,4BAAqB,EAClC,MAAM,EACN,GAAG,EACH,MAAA,MAAA,MAAA,IAAI,CAAC,OAAO,EAAC,QAAQ,kDAAI,0CAAE,WAAW,EACtC,IAAI,CAAC,SAAS,KAAK,QAAQ,CAAC,CAAC,CAAE,IAAI,CAAC,IAAuB,CAAC,CAAC,CAAC,SAAS,CACxE,CAAC;QAEF,IAAI,CAAC,SAAS,CAAC,MAAM,EAAE;YACrB,IAAI,CAAC,KAAK,GAAG,MAAM,CAAC;SACrB;QACD,OAAO,MAAM,CAAC;IAChB,CAAC;IAED,eAAe,CAAC,KAAU,EAAE,QAAkB;IAE9C,CAAC;IAED,qBAAqB;IAErB,CAAC;IAED,eAAe;QACb,KAAK,CAAC,eAAe,CAAC,IAAI,CAAC,KAAK,EAAE,IAAI,CAAC,OAAO,CAAC,gBAAgB,EAAE,CAAC,CAAC;IACrE,CAAC;IAGS,iBAAiB,CACzB,KAAyD;QAEzD,MAAM,QAAQ,qBAAa,KAAK,CAAE,CAAC;QACnC,OAAO,QAAQ,CAAC;IAClB,CAAC;IAED,YAAY,CACV,IAAiB,EACjB,KAA0D,EAC1D,KAAsB,EACtB,KAAc;QAEd,IAAI,CAAC,IAAA,cAAO,EAAC,IAAI,CAAC,IAAI,CAAC,IAAA,cAAO,EAAC,KAAK,CAAC,EAAE;YACrC,OAAO;SACR;QACD,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,iBAAiB,CAAC,KAAK,CAAC,EAAE,KAAK,EAAE,KAAK,CAAC,CAAC;IAC7D,CAAC;IAED,qBAAqB,CAAC,IAAY,EAAE,IAAU,EAAE,GAAY;QAC1D,IAAI,CAAC,IAAA,cAAO,EAAC,IAAI,CAAC,IAAI,CAAC,IAAA,cAAO,EAAC,IAAI,CAAC,EAAE;YACpC,OAAO;SACR;QACD,MAAM,EAAE,KAAK,EAAE,KAAK,EAAE,GAAG,IAAI,CAAC;QAC9B,MAAM,OAAO,qBAAQ,IAAI,CAAE,CAAC;QAE5B,IAAI,KAAK,EAAE;YACT,OAAO,CAAC,KAAK,GAAG,IAAI,CAAC,iBAAiB,CAAC,KAAK,CAAC,CAAC;SAC/C;QACD,IAAI,KAAK,EAAE;YACT,OAAO,CAAC,KAAK,GAAG,EAAE,CAAC;YACnB,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,OAAO,CAAC,GAAG,CAAC,EAAE;gBAC/B,OAAO,CAAC,KAAK,CAAC,GAAG,CAAC,GAAG,IAAI,CAAC,iBAAiB,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC;YAC1D,CAAC,CAAC,CAAC;SACJ;QACD,IAAI,CAAC,iBAAiB,CAAC,OAAO,EAAE,GAAG,CAAC,CAAC;IACvC,CAAC;IAES,oBAAoB,CAAC,GAAW,EAAE,GAAY;QACtD,IAAI,IAAI,GAAG,GAAG,iBAAM,IAAI,IAAI,CAAC,SAAS,IAAI,IAAI,CAAC,IAAI,IAAI,IAAI,CAAC,EAAE,IAAI,GAAG,EAAE,CAAC;QACxE,GAAG,IAAI,CAAC,IAAI,IAAI,IAAI,GAAG,EAAE,CAAC,CAAC;QAC3B,OAAO,IAAI,CAAC;IACd,CAAC;IAED,WAAW;;QACT,MAAA,IAAI,CAAC,KAAK,0CAAE,OAAO,EAAE,CAAC;IACxB,CAAC;IAED,YAAY,CAAC,KAA2B;QACtC,IAAI,CAAC,QAAQ,EAAE,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE;YAC1B,CAAC,CAAC,OAAO,CAAC,EAAE,KAAK,EAAE,CAAC,CAAC;QACvB,CAAC,CAAC,CAAC;IACL,CAAC;IAED,aAAa;;QACX,MAAA,IAAI,CAAC,KAAK,0CAAE,OAAO,EAAE,CAAC;IACxB,CAAC;IAED,aAAa,CAAC,IAAc;QAC1B,IAAI,CAAC,aAAa,CAAC,GAAG,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,EAAE,EAAE,IAAgB,CAAC,CAAC;IAC3D,CAAC;IAED,aAAa;QACX,OAAO,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,aAAa,CAAC,MAAM,EAAE,CAAC,CAAC;IACjD,CAAC;IAED,iBAAiB;QACf,OAAO,IAAI,CAAC,aAAa,EAAE,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE,CAAC,IAAI,CAAC,IAAqB,CAAC,CAAC;IACtE,CAAC;IAES,WAAW,CAAkB,QAAwB,EAAE,SAA+B,EAAE;QAChG,MAAM,EAAE,IAAI,EAAE,IAAI,EAAE,GAAG,QAAQ,CAAC;QAChC,MAAM,CAAC,GAAG,iBAAO,CAAC,UAAU,CAAC,IAAW,EAAE,IAAI,kBAC5C,KAAK,EAAE,IAAI,EACX,GAAG,EAAE,IAAI,CAAC,OAAO,CAAC,GAAG,EACrB,WAAW,EAAE,IAAI,CAAC,WAAW,EAC7B,WAAW,EAAE,IAAI,CAAC,OAAO,CAAC,WAAW,IAClC,MAAM,EACJ,CAAC;QACR,CAAC,aAAD,CAAC,uBAAD,CAAC,CAAE,OAAO,EAAE,CAAC;QACb,OAAO,CAAC,CAAC;IACX,CAAC;IAOS,aAAa;QACrB,OAAO,SAAS,CAAC;IACnB,CAAC;CACF;AA9XD,8BA8XC","file":"base-model.js","sourcesContent":["import { createID, isValid, cloneDeepSpec, preprocessSpecOrTheme, mergeSpec } from '../util';\nimport { Event } from '../event/event';\nimport type { IEvent } from '../event/interface';\nimport { LayoutItem } from './layout-item';\nimport type {\n IEffect,\n IModel,\n IModelInitOption,\n IModelOption,\n IModelRenderOption,\n IModelEvaluateOption,\n IModelSpec,\n ILayoutRect,\n IModelMarkInfo\n} from './interface';\nimport type { CoordinateType } from '../typings/coordinate';\nimport type { IMark, IMarkOption, IMarkRaw, IMarkStyle, MarkTypeEnum } from '../mark/interface';\nimport type { Datum, StateValueType, ConvertToMarkStyleSpec, ICommonSpec, StringOrNumber, IRect } from '../typings';\nimport type { ITooltipHelper } from './tooltip-helper';\nimport type { CompilableData } from '../compile/data/compilable-data';\nimport { ModelStateManager } from './model-state-manager';\nimport { PREFIX } from '../constant';\nimport type { IElement, IGroupMark, IMark as IVGrammarMark } from '@visactor/vgrammar-core';\nimport { array, isArray, isEqual, isNil } from '@visactor/vutils';\nimport { Factory } from '../core/factory';\nimport type { SeriesTypeEnum } from '../series/interface';\nimport { MarkSet } from '../mark/mark-set';\n\nexport abstract class BaseModel<T extends IModelSpec> extends LayoutItem<T> implements IModel {\n readonly type: string = 'null';\n readonly modelType: string = 'null';\n\n readonly id;\n\n userId: StringOrNumber | undefined = undefined;\n\n // 事件\n readonly event: IEvent;\n\n // 副作用\n readonly effect: IEffect;\n\n // 数据\n protected _data: CompilableData = null;\n getData() {\n return this._data;\n }\n\n protected _specIndex: number = 0;\n getSpecIndex() {\n return this._specIndex;\n }\n\n readonly specKey: string = '';\n\n protected _originalSpec: any;\n\n protected declare _option: IModelOption;\n getOption() {\n return this._option;\n }\n\n protected _sceneNodeMap: Map<string, IElement>;\n\n protected _marks: MarkSet = new MarkSet();\n getMarks(): IMark[] {\n return this._marks?.getMarks() ?? [];\n }\n getMarkNameMap() {\n return this._marks?.getMarkNameMap();\n }\n getMarkSet() {\n return this._marks;\n }\n getMarkInfoList(): IModelMarkInfo[] {\n return this.getMarks().map(mark => ({\n type: mark.type as MarkTypeEnum,\n name: mark.name\n }));\n }\n\n getChart() {\n return this._option.getChart();\n }\n\n /** 状态管理器 */\n state: ModelStateManager;\n getState() {\n return this.state._stateMap;\n }\n\n protected _theme?: any; // 非全局 theme,是对应于具体 model 的 theme 对象\n\n /** for layout diff */\n protected _lastLayoutRect: ILayoutRect = null;\n\n protected _tooltipHelper: ITooltipHelper | undefined;\n get tooltipHelper() {\n return this._tooltipHelper;\n }\n\n // TODO: 有些hack,这个tag是为了避免布局逻辑中,轴的数据变化,又由数据变化触发重新布局\n protected _isLayout: boolean = true;\n\n constructor(spec: T, option: IModelOption) {\n super(option);\n this.id = createID();\n this._originalSpec = spec;\n this._spec = cloneDeepSpec(spec);\n this._transformSpec();\n this.userId = spec.id;\n this._specIndex = option.specIndex ?? 0;\n this.specKey = option.specKey ?? '';\n this.effect = {};\n this.event = new Event(option.eventDispatcher, option.mode);\n option.map?.set(this.id, this);\n this._sceneNodeMap = new Map();\n this.state = new ModelStateManager({\n ...option,\n stateKeyToSignalName: this.stateKeyToSignalName.bind(this)\n });\n }\n coordinate?: CoordinateType;\n\n protected _releaseEvent() {\n this.event.release();\n }\n\n created() {\n this._initTheme();\n this.setAttrFromSpec();\n }\n\n updateState(newState: Record<string, unknown>) {\n return this.state.updateState(newState);\n }\n\n init(option: IModelInitOption) {\n // do nothing\n }\n\n afterInit() {\n // do nothing\n }\n\n onLayoutStart(layoutRect: IRect, viewRect: ILayoutRect, ctx: any): void {\n super.onLayoutStart(layoutRect, viewRect, ctx);\n this._isLayout = true;\n }\n onLayoutEnd(ctx: any): void {\n // diff layoutRect\n const layoutRect = this.getLayoutRect();\n if (this._forceLayoutTag || !isEqual(this._lastLayoutRect, layoutRect)) {\n this.updateLayoutAttribute();\n }\n this._forceLayoutTag = false;\n this.getMarks().forEach(m => m.updateLayoutState(true, true));\n this._isLayout = false;\n }\n\n protected _forceLayout() {\n if (this._isLayout) {\n return;\n }\n this._forceLayoutTag = true;\n this._option.globalInstance.getChart()?.setLayoutTag(true);\n }\n\n onEvaluateEnd(ctx: IModelEvaluateOption) {\n // do nothing\n }\n abstract onRender(ctx: IModelRenderOption): void;\n\n onDataUpdate() {\n // do nothing\n }\n\n release() {\n this._releaseEvent();\n this._originalSpec = {};\n this._spec = undefined;\n this.getMarks().forEach(m => m.release());\n this.state.release();\n this._data?.release();\n this._data = this._specIndex = this._sceneNodeMap = null;\n this._marks.clear();\n super.release();\n }\n\n updateSpec(spec: any) {\n this._spec = cloneDeepSpec(spec);\n const result = this._compareSpec();\n this._originalSpec = spec;\n if (!result.reMake) {\n this.reInit();\n }\n return result;\n }\n\n protected _transformSpec() {\n // do nothing\n // change spec by default logic\n }\n\n protected _compareSpec() {\n const result = {\n change: false,\n reMake: false,\n reRender: false,\n reSize: false,\n reCompile: false\n };\n return result;\n }\n\n reInit(theme?: any) {\n // before reInit reset this._spec to original\n this._spec = cloneDeepSpec(this._originalSpec);\n this._transformSpec();\n this._initTheme(theme);\n this.setAttrFromSpec();\n }\n\n protected _initTheme(theme?: any) {\n this._theme = theme;\n\n this._mergeMarkTheme();\n }\n\n /** 将全局的 mark theme 合并进 model theme */\n protected _mergeMarkTheme() {\n const globalTheme = this._option.getTheme?.();\n if (isNil(globalTheme) || isNil(this._theme)) {\n return;\n }\n\n const { mark: markThemeByType, markByName: markThemeByName } = globalTheme;\n this.getMarkInfoList().forEach(({ type, name }) => {\n this._theme[name] = mergeSpec(\n {},\n markThemeByType?.[array(type)[0]] ?? {},\n markThemeByName?.[name] ?? {},\n this._theme[name]\n );\n });\n }\n\n /** 将 theme merge 到 spec 中 */\n protected _mergeThemeToSpec() {\n if (this._shouldMergeThemeToSpec()) {\n const specFromChart = this._getDefaultSpecFromChart(this.getChart().getSpec());\n\n // this._originalSpec + specFromChart + this._theme = this._spec\n const merge = (originalSpec: any) =>\n mergeSpec(\n {},\n this._theme,\n this._prepareSpecBeforeMergingTheme(specFromChart),\n this._prepareSpecBeforeMergingTheme(originalSpec)\n );\n\n const baseSpec = this._spec;\n if (isArray(baseSpec)) {\n this._spec = baseSpec.map(spec => merge(spec)) as unknown as T;\n } else {\n this._spec = merge(baseSpec);\n }\n }\n this._prepareSpecAfterMergingTheme();\n }\n\n /** 从 chart spec 提取配置作为 model 的默认 spec 配置 */\n protected _getDefaultSpecFromChart(chartSpec: any): Partial<T> {\n return {};\n }\n\n /** 是否在初始化时将 theme 自动 merge 到 spec */\n protected _shouldMergeThemeToSpec(): boolean {\n return true;\n }\n\n /** 在 merge 主题前对 spec 进行预处理 */\n protected _prepareSpecBeforeMergingTheme(obj?: any): any {\n // do nothing\n return obj;\n }\n\n /** 在 merge 主题后对 spec 进行遍历和转换 */\n protected _prepareSpecAfterMergingTheme(obj?: any): any {\n if (!arguments.length) {\n obj = this._spec;\n }\n\n const newObj = preprocessSpecOrTheme(\n 'spec',\n obj,\n this._option.getTheme?.()?.colorScheme,\n this.modelType === 'series' ? (this.type as SeriesTypeEnum) : undefined\n );\n\n if (!arguments.length) {\n this._spec = newObj;\n }\n return newObj;\n }\n\n setCurrentTheme(theme: any, noRender?: boolean) {\n // do nothing\n }\n\n updateLayoutAttribute() {\n // do nothing\n }\n\n setAttrFromSpec() {\n super.setAttrFromSpec(this._spec, this._option.getChartViewRect());\n }\n\n /** mark style 内部转换逻辑,override 使用 */\n protected _convertMarkStyle<T extends ICommonSpec = ICommonSpec>(\n style: Partial<IMarkStyle<T> | ConvertToMarkStyleSpec<T>>\n ): Partial<IMarkStyle<T> | ConvertToMarkStyleSpec<T>> {\n const newStyle: any = { ...style };\n return newStyle;\n }\n\n setMarkStyle<T extends ICommonSpec>(\n mark: IMarkRaw<T>,\n style?: Partial<IMarkStyle<T> | ConvertToMarkStyleSpec<T>>,\n state?: StateValueType,\n level?: number\n ) {\n if (!isValid(mark) || !isValid(style)) {\n return;\n }\n mark.setStyle(this._convertMarkStyle(style), state, level);\n }\n\n initMarkStyleWithSpec(mark?: IMark, spec?: any, key?: string) {\n if (!isValid(mark) || !isValid(spec)) {\n return;\n }\n const { style, state } = spec;\n const newSpec = { ...spec };\n\n if (style) {\n newSpec.style = this._convertMarkStyle(style);\n }\n if (state) {\n newSpec.state = {};\n Object.keys(state).forEach(key => {\n newSpec.state[key] = this._convertMarkStyle(state[key]);\n });\n }\n mark.initStyleWithSpec(newSpec, key);\n }\n\n protected stateKeyToSignalName(key: string, opt?: string) {\n let name = `${PREFIX}_${this.modelType}_${this.type}_${this.id}_${key}`;\n opt && (name += `_${opt}`);\n return name;\n }\n\n compileData() {\n this._data?.compile();\n }\n\n compileMarks(group?: string | IGroupMark) {\n this.getMarks().forEach(m => {\n m.compile({ group });\n });\n }\n\n compileSignal() {\n this.state?.compile();\n }\n\n bindSceneNode(node: IElement) {\n this._sceneNodeMap.set(node.mark.id(), node as IElement);\n }\n\n getSceneNodes() {\n return Array.from(this._sceneNodeMap.values());\n }\n\n getSceneNodeMarks() {\n return this.getSceneNodes().map(node => node.mark as IVGrammarMark);\n }\n\n protected _createMark<T extends IMark>(markInfo: IModelMarkInfo, option: Partial<IMarkOption> = {}): T {\n const { type, name } = markInfo;\n const m = Factory.createMark(type as any, name, {\n model: this,\n map: this._option.map,\n getCompiler: this.getCompiler,\n globalScale: this._option.globalScale,\n ...option\n }) as T;\n m?.created();\n return m;\n }\n\n /**\n * 数据唯一ID\n * 根据自身动画数据匹配需求设置返回值。\n * 默认返回 undefined 时,根据 VGrammar 默认数据 ID 进行索引和匹配。\n */\n protected _getDataIdKey(): string | ((datum: Datum) => string) | undefined {\n return undefined;\n }\n}\n"]}
|
package/cjs/model/interface.d.ts
CHANGED
|
@@ -109,7 +109,6 @@ export type IMarkTree = IMarkTreeGroup | IMark | (IMarkTreeGroup | IMark)[];
|
|
|
109
109
|
export interface IUpdateSpecResult {
|
|
110
110
|
change: boolean;
|
|
111
111
|
reMake: boolean;
|
|
112
|
-
reMakeData?: boolean;
|
|
113
112
|
reRender?: boolean;
|
|
114
113
|
reSize?: boolean;
|
|
115
114
|
reCompile?: boolean;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../src/model/interface.ts"],"names":[],"mappings":"","file":"interface.js","sourcesContent":["import type { IBoundsLike } from '@visactor/vutils';\nimport type { DataSet } from '@visactor/vdataset';\nimport type { IEvent, IEventDispatcher } from '../event/interface';\nimport type { IMark, IMarkRaw, IMarkStyle, MarkTypeEnum } from '../mark/interface';\nimport type { RenderMode } from '../typings/spec/common';\nimport type { VChart } from '../vchart-all';\nimport type { IData, IElement, IMark as IVGrammarMark } from '@visactor/vgrammar-core';\nimport type {\n IOrientType,\n IPoint,\n IGroupMarkSpec,\n ConvertToMarkStyleSpec,\n CoordinateType,\n ICommonSpec,\n IRect,\n StringOrNumber\n} from '../typings';\nimport type { ITheme } from '../theme';\nimport type { StateValueType } from '../typings/spec';\nimport type { ITooltipHelper } from './tooltip-helper';\nimport type { ModelStateManager } from './model-state-manager';\nimport type { ICompilable, ICompilableInitOption } from '../compile/interface';\nimport type { ICompilableData } from '../compile/data';\nimport type { IGlobalScale } from '../scale/interface';\nimport type { IChart } from '../chart/interface';\n\nexport type ILayoutNumber = number | IPercent | ((layoutRect: ILayoutRect) => number) | IPercentOffset;\n\nexport interface ILayoutPoint {\n x: number;\n y: number;\n}\n\nexport interface ILayoutRectLevel {\n width: number;\n height: number;\n}\nexport interface ILayoutRect {\n width: number;\n height: number;\n}\n\nexport type IPercent = `${number}%`;\n\nexport type IPercentOffset = { percent?: number; offset?: number };\n\nexport type ILayoutPercent = IPercent | number;\n\n/**\n * 相对布局和绝对布局\n * 在相对布局结束后进行二次的绝对布局\n * 绝对布局会只根据 chart 进行相对处理\n */\n\ntype ILayoutType = 'region-relative' | 'region' | 'normal' | 'absolute' | 'normal-inline';\n\nexport type ILayoutOrientPadding = {\n left?: ILayoutNumber;\n right?: ILayoutNumber;\n top?: ILayoutNumber;\n bottom?: ILayoutNumber;\n};\n\n/** 布局 padding的配置 */\nexport type ILayoutPaddingSpec = ILayoutOrientPadding | ILayoutNumber | ILayoutNumber[];\n\n/**\n * 因为这些元素都会继承到各个模块,所以这里统一有前缀避免语意冲突\n */\nexport interface ILayoutItem {\n /**\n * 标记这个布局Item的方向(left->right, right->left, top->bottom, bottom->top)\n */\n directionStr?: 'l2r' | 'r2l' | 't2b' | 'b2t';\n layoutClip: boolean;\n layoutType: ILayoutType;\n layoutBindRegionID: number | number[];\n layoutOrient: IOrientType;\n\n layoutPaddingLeft: number;\n layoutPaddingTop: number;\n layoutPaddingRight: number;\n layoutPaddingBottom: number;\n\n layoutOffsetX: number;\n layoutOffsetY: number;\n\n // 越大越先处理\n layoutLevel: number;\n\n layoutZIndex: number;\n chartLayoutRect: ILayoutRect;\n\n /** 是否可见 */\n getVisible: () => boolean;\n\n /** 是否自动缩进 */\n getAutoIndent: () => boolean;\n getLayoutStartPoint: () => ILayoutPoint;\n getLayoutRect: () => ILayoutRect;\n getLastComputeOutBounds: () => IBoundsLike;\n\n /**\n * 更新元素布局的 layoutRect 大小,用来更新指定布局空间\n */\n setLayoutRect: (rect: Partial<ILayoutRect>, levelMap?: Partial<ILayoutRectLevel>) => void;\n /**\n * 基于元素内部逻辑计算占位空间,rect表示可用空间\n */\n computeBoundsInRect: (rect: ILayoutRect) => ILayoutRect;\n /**\n * 更新元素布局的起始点位置\n */\n setLayoutStartPosition: (pos: Partial<IPoint>) => void;\n /**\n * 更新绝对布局元素的位置信息\n */\n absoluteLayoutInRect: (rect: IRect) => void;\n /**\n * 元素内部布局信息更新\n */\n updateLayoutAttribute: () => void;\n}\n\nexport interface ILayoutItemSpec {\n /** 当前模块的布局类型,配置为 absolute 的话,当前元素会以图表左上角为原点进行绝对布局 */\n layoutType?: ILayoutType;\n /**\n * 布局顺序等级,等级越大的,越优先布局\n * 比如顶部同时有标题和图例的场景,期望标题先放在顶部,然后放置图例。\n */\n layoutLevel?: number;\n\n // 基础的布局配置\n /** 模块布局位置 */\n orient?: IOrientType;\n /** 模块的布局间距 */\n padding?: ILayoutPaddingSpec;\n /** 是否按照 orient 自动修改 padding,隐藏位于外侧的 padding。目前只在组件上生效 */\n noOuterPadding?: boolean;\n /** 模块的布局大小:宽度 */\n width?: ILayoutNumber;\n /** 模块的布局最大宽度 */\n maxWidth?: ILayoutNumber;\n /** 模块的布局最小宽度 */\n minWidth?: ILayoutNumber;\n /** 模块的布局大小:高度 */\n height?: ILayoutNumber;\n /** 模块的布局最大高度 */\n maxHeight?: ILayoutNumber;\n /** 模块的布局最小高度 */\n minHeight?: ILayoutNumber;\n /** 模块的布局位置偏移:X */\n offsetX?: ILayoutNumber;\n /** 模块的布局位置偏移:Y */\n offsetY?: ILayoutNumber;\n\n /** 模块的展示层级,当2个模块重叠时,层级较大的展示在上方 */\n zIndex?: number;\n /** 模块是否裁剪超出布局区域外的绘图内容 */\n clip?: boolean;\n\n // 绝对布局下的对齐设置\n\n /** 模块绝对布局下,与图表左侧的距离。注意仅在 layoutType === 'absolute' 时生效 */\n left?: ILayoutNumber;\n /** 模块绝对布局下,与图表右侧的距离。注意仅在 layoutType === 'absolute' 时生效 */\n right?: ILayoutNumber;\n /** 模块绝对布局下,与图表顶部的距离。注意仅在 layoutType === 'absolute' 时生效 */\n top?: ILayoutNumber;\n /** 模块绝对布局下,与图表底部的距离。注意仅在 layoutType === 'absolute' 时生效 */\n bottom?: ILayoutNumber;\n /** 模块绝对布局下,元素将放置在图表的正中间。注意仅在 layoutType === 'absolute' 时生效,同时将忽略 padding 属性 */\n center?: boolean;\n}\n\n// TODO:\n// eslint-disable-next-line @typescript-eslint/no-empty-interface\nexport interface IModelInitOption {}\n// TODO:\n// eslint-disable-next-line @typescript-eslint/no-empty-interface\nexport interface IModelLayoutOption {}\n// TODO:\n// eslint-disable-next-line @typescript-eslint/no-empty-interface\nexport interface IModelEvaluateOption {}\n// TODO:\n// eslint-disable-next-line @typescript-eslint/no-empty-interface\nexport interface IModelRenderOption {}\n\nexport interface IEffect {\n [key: string]: (e?: any) => any;\n}\n\nexport interface IMarkTreeGroup extends Partial<IMarkStyle<IGroupMarkSpec>> {\n // 必须要有名字\n type: 'group';\n name: string;\n marks: (IMarkTreeGroup | IMark)[];\n // TODO: 这里要不要支持复杂场景,有图形组合的场景,用自定义mark?\n // from?: IData;\n}\n\nexport type IMarkTree = IMarkTreeGroup | IMark | (IMarkTreeGroup | IMark)[];\n\nexport interface IUpdateSpecResult {\n change: boolean;\n reMake: boolean;\n
|
|
1
|
+
{"version":3,"sources":["../src/model/interface.ts"],"names":[],"mappings":"","file":"interface.js","sourcesContent":["import type { IBoundsLike } from '@visactor/vutils';\nimport type { DataSet } from '@visactor/vdataset';\nimport type { IEvent, IEventDispatcher } from '../event/interface';\nimport type { IMark, IMarkRaw, IMarkStyle, MarkTypeEnum } from '../mark/interface';\nimport type { RenderMode } from '../typings/spec/common';\nimport type { VChart } from '../vchart-all';\nimport type { IData, IElement, IMark as IVGrammarMark } from '@visactor/vgrammar-core';\nimport type {\n IOrientType,\n IPoint,\n IGroupMarkSpec,\n ConvertToMarkStyleSpec,\n CoordinateType,\n ICommonSpec,\n IRect,\n StringOrNumber\n} from '../typings';\nimport type { ITheme } from '../theme';\nimport type { StateValueType } from '../typings/spec';\nimport type { ITooltipHelper } from './tooltip-helper';\nimport type { ModelStateManager } from './model-state-manager';\nimport type { ICompilable, ICompilableInitOption } from '../compile/interface';\nimport type { ICompilableData } from '../compile/data';\nimport type { IGlobalScale } from '../scale/interface';\nimport type { IChart } from '../chart/interface';\n\nexport type ILayoutNumber = number | IPercent | ((layoutRect: ILayoutRect) => number) | IPercentOffset;\n\nexport interface ILayoutPoint {\n x: number;\n y: number;\n}\n\nexport interface ILayoutRectLevel {\n width: number;\n height: number;\n}\nexport interface ILayoutRect {\n width: number;\n height: number;\n}\n\nexport type IPercent = `${number}%`;\n\nexport type IPercentOffset = { percent?: number; offset?: number };\n\nexport type ILayoutPercent = IPercent | number;\n\n/**\n * 相对布局和绝对布局\n * 在相对布局结束后进行二次的绝对布局\n * 绝对布局会只根据 chart 进行相对处理\n */\n\ntype ILayoutType = 'region-relative' | 'region' | 'normal' | 'absolute' | 'normal-inline';\n\nexport type ILayoutOrientPadding = {\n left?: ILayoutNumber;\n right?: ILayoutNumber;\n top?: ILayoutNumber;\n bottom?: ILayoutNumber;\n};\n\n/** 布局 padding的配置 */\nexport type ILayoutPaddingSpec = ILayoutOrientPadding | ILayoutNumber | ILayoutNumber[];\n\n/**\n * 因为这些元素都会继承到各个模块,所以这里统一有前缀避免语意冲突\n */\nexport interface ILayoutItem {\n /**\n * 标记这个布局Item的方向(left->right, right->left, top->bottom, bottom->top)\n */\n directionStr?: 'l2r' | 'r2l' | 't2b' | 'b2t';\n layoutClip: boolean;\n layoutType: ILayoutType;\n layoutBindRegionID: number | number[];\n layoutOrient: IOrientType;\n\n layoutPaddingLeft: number;\n layoutPaddingTop: number;\n layoutPaddingRight: number;\n layoutPaddingBottom: number;\n\n layoutOffsetX: number;\n layoutOffsetY: number;\n\n // 越大越先处理\n layoutLevel: number;\n\n layoutZIndex: number;\n chartLayoutRect: ILayoutRect;\n\n /** 是否可见 */\n getVisible: () => boolean;\n\n /** 是否自动缩进 */\n getAutoIndent: () => boolean;\n getLayoutStartPoint: () => ILayoutPoint;\n getLayoutRect: () => ILayoutRect;\n getLastComputeOutBounds: () => IBoundsLike;\n\n /**\n * 更新元素布局的 layoutRect 大小,用来更新指定布局空间\n */\n setLayoutRect: (rect: Partial<ILayoutRect>, levelMap?: Partial<ILayoutRectLevel>) => void;\n /**\n * 基于元素内部逻辑计算占位空间,rect表示可用空间\n */\n computeBoundsInRect: (rect: ILayoutRect) => ILayoutRect;\n /**\n * 更新元素布局的起始点位置\n */\n setLayoutStartPosition: (pos: Partial<IPoint>) => void;\n /**\n * 更新绝对布局元素的位置信息\n */\n absoluteLayoutInRect: (rect: IRect) => void;\n /**\n * 元素内部布局信息更新\n */\n updateLayoutAttribute: () => void;\n}\n\nexport interface ILayoutItemSpec {\n /** 当前模块的布局类型,配置为 absolute 的话,当前元素会以图表左上角为原点进行绝对布局 */\n layoutType?: ILayoutType;\n /**\n * 布局顺序等级,等级越大的,越优先布局\n * 比如顶部同时有标题和图例的场景,期望标题先放在顶部,然后放置图例。\n */\n layoutLevel?: number;\n\n // 基础的布局配置\n /** 模块布局位置 */\n orient?: IOrientType;\n /** 模块的布局间距 */\n padding?: ILayoutPaddingSpec;\n /** 是否按照 orient 自动修改 padding,隐藏位于外侧的 padding。目前只在组件上生效 */\n noOuterPadding?: boolean;\n /** 模块的布局大小:宽度 */\n width?: ILayoutNumber;\n /** 模块的布局最大宽度 */\n maxWidth?: ILayoutNumber;\n /** 模块的布局最小宽度 */\n minWidth?: ILayoutNumber;\n /** 模块的布局大小:高度 */\n height?: ILayoutNumber;\n /** 模块的布局最大高度 */\n maxHeight?: ILayoutNumber;\n /** 模块的布局最小高度 */\n minHeight?: ILayoutNumber;\n /** 模块的布局位置偏移:X */\n offsetX?: ILayoutNumber;\n /** 模块的布局位置偏移:Y */\n offsetY?: ILayoutNumber;\n\n /** 模块的展示层级,当2个模块重叠时,层级较大的展示在上方 */\n zIndex?: number;\n /** 模块是否裁剪超出布局区域外的绘图内容 */\n clip?: boolean;\n\n // 绝对布局下的对齐设置\n\n /** 模块绝对布局下,与图表左侧的距离。注意仅在 layoutType === 'absolute' 时生效 */\n left?: ILayoutNumber;\n /** 模块绝对布局下,与图表右侧的距离。注意仅在 layoutType === 'absolute' 时生效 */\n right?: ILayoutNumber;\n /** 模块绝对布局下,与图表顶部的距离。注意仅在 layoutType === 'absolute' 时生效 */\n top?: ILayoutNumber;\n /** 模块绝对布局下,与图表底部的距离。注意仅在 layoutType === 'absolute' 时生效 */\n bottom?: ILayoutNumber;\n /** 模块绝对布局下,元素将放置在图表的正中间。注意仅在 layoutType === 'absolute' 时生效,同时将忽略 padding 属性 */\n center?: boolean;\n}\n\n// TODO:\n// eslint-disable-next-line @typescript-eslint/no-empty-interface\nexport interface IModelInitOption {}\n// TODO:\n// eslint-disable-next-line @typescript-eslint/no-empty-interface\nexport interface IModelLayoutOption {}\n// TODO:\n// eslint-disable-next-line @typescript-eslint/no-empty-interface\nexport interface IModelEvaluateOption {}\n// TODO:\n// eslint-disable-next-line @typescript-eslint/no-empty-interface\nexport interface IModelRenderOption {}\n\nexport interface IEffect {\n [key: string]: (e?: any) => any;\n}\n\nexport interface IMarkTreeGroup extends Partial<IMarkStyle<IGroupMarkSpec>> {\n // 必须要有名字\n type: 'group';\n name: string;\n marks: (IMarkTreeGroup | IMark)[];\n // TODO: 这里要不要支持复杂场景,有图形组合的场景,用自定义mark?\n // from?: IData;\n}\n\nexport type IMarkTree = IMarkTreeGroup | IMark | (IMarkTreeGroup | IMark)[];\n\nexport interface IUpdateSpecResult {\n change: boolean;\n reMake: boolean;\n reRender?: boolean;\n reSize?: boolean;\n // TODO: compile 的判断应不应该出现在这里?\n reCompile?: boolean;\n}\n\nexport interface IModelProduct {\n srData: IData;\n}\n\nexport interface IModel extends ICompilable, ILayoutItem {\n readonly modelType: string;\n readonly type: string;\n readonly specKey: string;\n\n readonly id: number;\n\n readonly userId?: StringOrNumber;\n\n // 事件\n readonly event: IEvent;\n\n // 副作用\n readonly effect: IEffect;\n\n // state如果绑定到mark的更新?\n // 组件的 mark 要怎么样描述,才能正确的基于组件状态进行样式更新?\n // 方案1: 组件的 state 关联到 mark 的状态。\n // 方案2: 组件设置 mark 属性,mark自身属性变化时,自己去更新。\n // react state\n readonly state: ModelStateManager;\n getState: () => ModelStateManager['_stateMap'];\n\n coordinate?: CoordinateType;\n\n // 初始化参数\n getOption: () => IModelOption;\n\n getMarks: () => IMark[];\n getMarkNameMap: () => Record<string, IMark>;\n getMarkInfoList: () => IModelMarkInfo[];\n\n getData: () => ICompilableData;\n\n getChart: () => IChart;\n\n //生命周期\n // 创建模块自身内容,设置自身属性\n created: () => void;\n // 用来处理与其他图表模块的联系\n init: (option: IModelInitOption) => void;\n // updateSpec 或者切换主题后,根据新 spec 执行的初始化过程\n reInit: (theme?: any, lastSpec?: any) => void;\n\n onLayoutStart: (layoutRect: IRect, viewRect: ILayoutRect, ctx: IModelLayoutOption) => void;\n onLayoutEnd: (ctx: IModelLayoutOption) => void;\n onEvaluateEnd: (ctx: IModelEvaluateOption) => void;\n onRender: (ctx: IModelRenderOption) => void;\n onDataUpdate: () => void;\n\n updateSpec: (spec: any, totalSpec?: any) => IUpdateSpecResult;\n getSpec?: () => any;\n getSpecIndex: () => number;\n\n setCurrentTheme: (theme: any, noRender?: boolean) => void;\n\n setMarkStyle: <T extends ICommonSpec>(\n mark?: IMarkRaw<T>,\n style?: Partial<IMarkStyle<T> | ConvertToMarkStyleSpec<T>>,\n state?: StateValueType,\n level?: number\n ) => void;\n\n initMarkStyleWithSpec: (mark?: IMark, spec?: any, key?: string) => void;\n\n // tooltip\n tooltipHelper: ITooltipHelper;\n\n /** 绑定场景结点 */\n bindSceneNode: (node: IElement) => void;\n /** 获取场景结点 */\n getSceneNodes: () => IElement[];\n /** 获取场景结点对应 mark */\n getSceneNodeMarks: () => IVGrammarMark[];\n}\n\nexport interface IModelOption extends ICompilableInitOption {\n eventDispatcher: IEventDispatcher;\n dataSet: DataSet;\n map: Map<StringOrNumber, IModel | IMark>;\n mode: RenderMode;\n globalInstance: VChart;\n specIndex?: number;\n specKey?: string;\n\n getTheme?: () => ITheme;\n\n getChartLayoutRect: () => IRect;\n getChartViewRect: () => ILayoutRect;\n\n getChart: () => IChart;\n\n globalScale: IGlobalScale;\n animation: boolean;\n /**\n * 错误消息回调函数\n */\n onError: (...args: any[]) => void;\n}\n\nexport interface IModelConstructor {\n new (ctx: IModelOption): IModel;\n}\n\nexport type ILayoutModelState = ModelStateManager['_stateMap'];\n\n// TODO: 补充model共有配置\nexport type IModelSpec = ILayoutItemSpec & { id?: StringOrNumber };\n\nexport interface IModelMarkInfo {\n /** mark 类型 */\n type: MarkTypeEnum | string | (MarkTypeEnum | string)[];\n /** mark 名称 */\n name: string;\n}\n"]}
|
package/cjs/region/region.d.ts
CHANGED
|
@@ -30,10 +30,9 @@ export declare class Region<T extends IRegionSpec = IRegionSpec> extends BaseMod
|
|
|
30
30
|
initMark(): void;
|
|
31
31
|
protected _initBackgroundMarkStyle(): void;
|
|
32
32
|
protected _initForegroundMarkStyle(): void;
|
|
33
|
-
|
|
33
|
+
_compareSpec(): {
|
|
34
34
|
change: boolean;
|
|
35
35
|
reMake: boolean;
|
|
36
|
-
reMakeData: boolean;
|
|
37
36
|
reRender: boolean;
|
|
38
37
|
reSize: boolean;
|
|
39
38
|
reCompile: boolean;
|
package/cjs/region/region.js
CHANGED
|
@@ -84,10 +84,10 @@ class Region extends base_model_1.BaseModel {
|
|
|
84
84
|
fillOpacity: 0
|
|
85
85
|
}), "normal", constant_1.AttributeLevel.User_Mark);
|
|
86
86
|
}
|
|
87
|
-
|
|
88
|
-
const
|
|
89
|
-
return
|
|
90
|
-
result
|
|
87
|
+
_compareSpec() {
|
|
88
|
+
const result = super._compareSpec();
|
|
89
|
+
return (0, vutils_1.isEqual)(this._originalSpec.style, this._spec.style) || (result.reMake = !0),
|
|
90
|
+
result;
|
|
91
91
|
}
|
|
92
92
|
reInit(theme) {
|
|
93
93
|
super.reInit(theme), this._initBackgroundMarkStyle(), this._initForegroundMarkStyle();
|
package/cjs/region/region.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../src/region/region.ts"],"names":[],"mappings":"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","file":"region.js","sourcesContent":["import type { IBoundsLike } from '@visactor/vutils';\n// eslint-disable-next-line no-duplicate-imports\nimport { isEmpty } from '@visactor/vutils';\nimport type {\n Element,\n IElement,\n IGroupMark as IVGrammarGroupMark,\n ILayoutOptions,\n IMark\n} from '@visactor/vgrammar-core';\nimport { STATE_VALUE_ENUM_REVERSE } from '../compile/mark/interface';\nimport { DimensionTrigger } from '../interaction/dimension-trigger';\nimport { MarkTypeEnum } from '../mark/interface';\nimport { BaseModel } from '../model/base-model';\nimport type { ISeries } from '../series/interface';\nimport type { IModelOption, ILayoutItem } from '../model/interface';\nimport type { CoordinateType } from '../typings/coordinate';\nimport type { IRegion, IRegionSpec } from './interface';\nimport type { IGroupMark } from '../mark/group';\nimport type { IInteraction, ITrigger } from '../interaction/interface';\nimport { Interaction } from '../interaction/interaction';\nimport { AttributeLevel, ChartEvent, LayoutZIndex } from '../constant';\nimport { array, isValid } from '../util';\nimport type { IRectMark } from '../mark/rect';\nimport { AnimateManager } from '../animation/animate-manager';\nimport type { IAnimate } from '../animation/interface';\nimport type { StringOrNumber } from '../typings';\nimport { IFilterMode } from '../component/data-zoom/constant';\n\nexport class Region<T extends IRegionSpec = IRegionSpec> extends BaseModel<T> implements IRegion {\n static type = 'region';\n readonly modelType: string = 'region';\n\n type = Region.type;\n protected _series: ISeries[] = [];\n layoutType: ILayoutItem['layoutType'] = 'region';\n layoutZIndex: number = LayoutZIndex.Region;\n\n animate?: IAnimate;\n\n interaction: IInteraction = new Interaction();\n\n protected _groupMark!: IGroupMark;\n getGroupMark() {\n return this._groupMark;\n }\n\n protected _backgroundMark?: IRectMark;\n protected _foregroundMark?: IRectMark;\n\n protected _trigger: ITrigger;\n\n constructor(spec: T, ctx: IModelOption) {\n super(spec, ctx);\n this.userId = spec.id;\n this.coordinate = spec.coordinate ?? 'cartesian';\n if (this._option.animation) {\n this.animate = new AnimateManager({\n getCompiler: ctx.getCompiler\n });\n }\n // 层级应当支持配置\n if (isValid(spec.zIndex)) {\n this.layoutZIndex = spec.zIndex;\n }\n }\n\n protected _getClipDefaultValue() {\n const chartSpec = this._option.getChart().getSpec();\n const hasDataZoom = (chartSpec as any).dataZoom?.some?.((entry: any) => {\n const filterMode = entry.filterMode ?? IFilterMode.filter;\n return filterMode === IFilterMode.axis;\n });\n const hasScrollBar = (chartSpec as any).scrollBar?.some?.((entry: any) => {\n const filterMode = entry.filterMode ?? IFilterMode.axis;\n return filterMode === IFilterMode.axis;\n });\n\n return hasDataZoom || hasScrollBar ? true : this.layoutClip;\n }\n\n created(): void {\n super.created();\n this._groupMark = this._createMark({ type: MarkTypeEnum.group, name: 'regionGroup' }) as IGroupMark;\n this._groupMark.setUserId(this.userId);\n this._groupMark.setZIndex(this.layoutZIndex);\n const clip = this._spec.clip ?? this._getClipDefaultValue();\n this.setMarkStyle(\n this._groupMark,\n {\n x: () => this.getLayoutStartPoint().x,\n y: () => this.getLayoutStartPoint().y,\n width: () => this.getLayoutRect().width,\n height: () => this.getLayoutRect().height,\n clip\n },\n 'normal',\n AttributeLevel.Built_In\n );\n this.setMarkStyle(\n this._groupMark,\n {\n cornerRadius: this._spec.style?.cornerRadius\n },\n 'normal',\n AttributeLevel.User_Mark\n );\n this._marks.addMark(this._groupMark);\n // hack: region 的样式不能设置在groupMark上,因为groupMark目前没有计算dirtyBound,会导致拖影问题\n if (this._spec.style) {\n this._backgroundMark = this._createMark({ type: MarkTypeEnum.rect, name: 'regionBackground' }) as IRectMark;\n if (clip) {\n this._foregroundMark = this._createMark({ type: MarkTypeEnum.rect, name: 'regionForeground' }) as IRectMark;\n }\n [this._backgroundMark, this._foregroundMark].forEach(mark => {\n if (mark) {\n mark.created();\n this.setMarkStyle(\n mark,\n {\n width: () => this.getLayoutRect().width,\n height: () => this.getLayoutRect().height\n },\n 'normal',\n AttributeLevel.Built_In\n );\n this._groupMark.addMark(mark);\n }\n });\n this._backgroundMark && this._backgroundMark.setZIndex(0);\n this._foregroundMark && this._foregroundMark.setZIndex(LayoutZIndex.Mark + 1);\n }\n this.createTrigger();\n }\n\n init(option: any) {\n super.init(option);\n this.initMark();\n this.initSeriesDataflow();\n this.initInteraction();\n this.initTrigger();\n }\n initMark() {\n this._initBackgroundMarkStyle();\n this._initForegroundMarkStyle();\n }\n\n protected _initBackgroundMarkStyle() {\n if (this._backgroundMark) {\n this.setMarkStyle(\n this._backgroundMark,\n {\n fillOpacity: this._spec.style?.fill ? 1 : 0,\n ...this._spec.style\n },\n 'normal',\n AttributeLevel.User_Mark\n );\n if (this._spec.clip ?? this._getClipDefaultValue()) {\n this.setMarkStyle(\n this._backgroundMark,\n {\n strokeOpacity: 0\n },\n 'normal',\n AttributeLevel.Built_In\n );\n }\n }\n }\n\n protected _initForegroundMarkStyle() {\n if (this._foregroundMark) {\n this.setMarkStyle(\n this._foregroundMark,\n {\n ...this._spec.style,\n fillOpacity: 0\n },\n 'normal',\n AttributeLevel.User_Mark\n );\n }\n }\n\n updateSpec(spec: any) {\n const originalSpec = this._originalSpec;\n const result = super.updateSpec(spec);\n if ((originalSpec.style && !spec?.style) || (!originalSpec.style && spec?.style)) {\n result.reMake = true;\n return result;\n }\n\n return result;\n }\n\n reInit(theme?: any) {\n super.reInit(theme);\n this._initBackgroundMarkStyle();\n this._initForegroundMarkStyle();\n }\n\n addSeries(s: ISeries) {\n if (!s) {\n return;\n }\n if (!this._series.includes(s)) {\n this._series.push(s);\n }\n }\n\n removeSeries(s: ISeries) {\n if (!s) {\n return;\n }\n const index = this._series.findIndex(s_ => s_ === s);\n if (index >= 0) {\n this._series.splice(index, 1);\n }\n }\n\n getSeries(\n opt: {\n name?: string;\n userId?: StringOrNumber | StringOrNumber[];\n specIndex?: number | number[];\n id?: StringOrNumber;\n type?: string;\n coordinateType?: CoordinateType;\n dataName?: string;\n } = {}\n ): ISeries[] {\n return this._series.filter(\n s =>\n (opt.name ? s?.name === opt.name : true) &&\n (opt.userId ? array(opt.userId).includes(s.userId) : true) &&\n (isValid(opt.specIndex) && s.getSpecIndex ? array(opt.specIndex).includes(s.getSpecIndex()) : true) &&\n (opt.id ? s.id === opt.id : true) &&\n (opt.type ? s.type === opt.type : true) &&\n (opt.coordinateType ? s.coordinate === opt.coordinateType : true) &&\n (opt.dataName ? s.getRawData?.()?.name === opt.dataName : true)\n );\n }\n\n getSeriesInName(name: string): ISeries {\n return this.getSeries({ name })[0];\n }\n getSeriesInUserId(userId: string): ISeries {\n return this.getSeries({ userId })[0];\n }\n getSeriesInId(id: number): ISeries {\n return this.getSeries({ id })[0];\n }\n getSeriesInType(type: string): ISeries[] {\n return this.getSeries({ type });\n }\n getSeriesInCoordinateType(coordinateType: CoordinateType): ISeries[] {\n return this.getSeries({ coordinateType });\n }\n getSeriesInDataName(dataName: string): ISeries[] {\n return this.getSeries({ dataName });\n }\n\n onRender(ctx: any): void {\n // do nothing\n }\n\n initSeriesDataflow() {\n const viewDataFilters = this._series.map(s => s.getViewDataFilter()).filter(v => !!v);\n this._option.dataSet.multipleDataViewAddListener(viewDataFilters, 'change', this.seriesDataFilterOver);\n }\n\n seriesDataFilterOver = () => {\n this.event.emit(ChartEvent.regionSeriesDataFilterOver, { model: this });\n this._series.forEach(s => s.reTransformViewData());\n };\n\n release() {\n super.release();\n this._series = [];\n }\n /** dimension */\n createTrigger() {\n const triggerOptions = {\n ...this._option,\n model: this,\n interaction: this.interaction\n };\n this._trigger = new DimensionTrigger(triggerOptions);\n }\n\n initTrigger() {\n // register all mark\n // trigger check mark enable\n this._series.forEach(s => {\n s.getMarksWithoutRoot().forEach(m => {\n this._trigger.registerMark(m);\n });\n });\n this._trigger.init();\n }\n\n initInteraction() {\n // 注册所有支持反选状态mark\n this._series.forEach(s => {\n s.getMarksWithoutRoot().forEach(m => {\n for (const key in STATE_VALUE_ENUM_REVERSE) {\n if (!isEmpty(m.stateStyle[STATE_VALUE_ENUM_REVERSE[key]])) {\n this.interaction.registerMark(STATE_VALUE_ENUM_REVERSE[key], m);\n }\n }\n });\n });\n }\n\n compileMarks(group?: string | IVGrammarGroupMark) {\n this.getMarks().forEach(m => {\n m.compile({ group });\n m.getProduct()\n ?.configure({\n context: {\n model: this\n }\n })\n .layout(\n (group: IVGrammarGroupMark, children: IMark[], parentLayoutBounds: IBoundsLike, options?: ILayoutOptions) => {\n // console.log('region mark layout');\n }\n );\n });\n }\n\n compileSignal() {\n super.compileSignal();\n this.animate?.compile();\n }\n\n compile() {\n this.compileSignal();\n this.compileMarks();\n }\n\n bindSceneNode(node: IElement) {\n this._sceneNodeMap.set('default', node as Element);\n }\n}\n"]}
|
|
1
|
+
{"version":3,"sources":["../src/region/region.ts"],"names":[],"mappings":"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","file":"region.js","sourcesContent":["import type { IBoundsLike } from '@visactor/vutils';\n// eslint-disable-next-line no-duplicate-imports\nimport { isEmpty, isEqual } from '@visactor/vutils';\nimport type {\n Element,\n IElement,\n IGroupMark as IVGrammarGroupMark,\n ILayoutOptions,\n IMark\n} from '@visactor/vgrammar-core';\nimport { STATE_VALUE_ENUM_REVERSE } from '../compile/mark/interface';\nimport { DimensionTrigger } from '../interaction/dimension-trigger';\nimport { MarkTypeEnum } from '../mark/interface';\nimport { BaseModel } from '../model/base-model';\nimport type { ISeries } from '../series/interface';\nimport type { IModelOption, ILayoutItem } from '../model/interface';\nimport type { CoordinateType } from '../typings/coordinate';\nimport type { IRegion, IRegionSpec } from './interface';\nimport type { IGroupMark } from '../mark/group';\nimport type { IInteraction, ITrigger } from '../interaction/interface';\nimport { Interaction } from '../interaction/interaction';\nimport { AttributeLevel, ChartEvent, LayoutZIndex } from '../constant';\nimport { array, isValid } from '../util';\nimport type { IRectMark } from '../mark/rect';\nimport { AnimateManager } from '../animation/animate-manager';\nimport type { IAnimate } from '../animation/interface';\nimport type { StringOrNumber } from '../typings';\nimport { IFilterMode } from '../component/data-zoom/constant';\n\nexport class Region<T extends IRegionSpec = IRegionSpec> extends BaseModel<T> implements IRegion {\n static type = 'region';\n readonly modelType: string = 'region';\n\n type = Region.type;\n protected _series: ISeries[] = [];\n layoutType: ILayoutItem['layoutType'] = 'region';\n layoutZIndex: number = LayoutZIndex.Region;\n\n animate?: IAnimate;\n\n interaction: IInteraction = new Interaction();\n\n protected _groupMark!: IGroupMark;\n getGroupMark() {\n return this._groupMark;\n }\n\n protected _backgroundMark?: IRectMark;\n protected _foregroundMark?: IRectMark;\n\n protected _trigger: ITrigger;\n\n constructor(spec: T, ctx: IModelOption) {\n super(spec, ctx);\n this.userId = spec.id;\n this.coordinate = spec.coordinate ?? 'cartesian';\n if (this._option.animation) {\n this.animate = new AnimateManager({\n getCompiler: ctx.getCompiler\n });\n }\n // 层级应当支持配置\n if (isValid(spec.zIndex)) {\n this.layoutZIndex = spec.zIndex;\n }\n }\n\n protected _getClipDefaultValue() {\n const chartSpec = this._option.getChart().getSpec();\n const hasDataZoom = (chartSpec as any).dataZoom?.some?.((entry: any) => {\n const filterMode = entry.filterMode ?? IFilterMode.filter;\n return filterMode === IFilterMode.axis;\n });\n const hasScrollBar = (chartSpec as any).scrollBar?.some?.((entry: any) => {\n const filterMode = entry.filterMode ?? IFilterMode.axis;\n return filterMode === IFilterMode.axis;\n });\n\n return hasDataZoom || hasScrollBar ? true : this.layoutClip;\n }\n\n created(): void {\n super.created();\n this._groupMark = this._createMark({ type: MarkTypeEnum.group, name: 'regionGroup' }) as IGroupMark;\n this._groupMark.setUserId(this.userId);\n this._groupMark.setZIndex(this.layoutZIndex);\n const clip = this._spec.clip ?? this._getClipDefaultValue();\n this.setMarkStyle(\n this._groupMark,\n {\n x: () => this.getLayoutStartPoint().x,\n y: () => this.getLayoutStartPoint().y,\n width: () => this.getLayoutRect().width,\n height: () => this.getLayoutRect().height,\n clip\n },\n 'normal',\n AttributeLevel.Built_In\n );\n this.setMarkStyle(\n this._groupMark,\n {\n cornerRadius: this._spec.style?.cornerRadius\n },\n 'normal',\n AttributeLevel.User_Mark\n );\n this._marks.addMark(this._groupMark);\n // hack: region 的样式不能设置在groupMark上,因为groupMark目前没有计算dirtyBound,会导致拖影问题\n if (this._spec.style) {\n this._backgroundMark = this._createMark({ type: MarkTypeEnum.rect, name: 'regionBackground' }) as IRectMark;\n if (clip) {\n this._foregroundMark = this._createMark({ type: MarkTypeEnum.rect, name: 'regionForeground' }) as IRectMark;\n }\n [this._backgroundMark, this._foregroundMark].forEach(mark => {\n if (mark) {\n mark.created();\n this.setMarkStyle(\n mark,\n {\n width: () => this.getLayoutRect().width,\n height: () => this.getLayoutRect().height\n },\n 'normal',\n AttributeLevel.Built_In\n );\n this._groupMark.addMark(mark);\n }\n });\n this._backgroundMark && this._backgroundMark.setZIndex(0);\n this._foregroundMark && this._foregroundMark.setZIndex(LayoutZIndex.Mark + 1);\n }\n this.createTrigger();\n }\n\n init(option: any) {\n super.init(option);\n this.initMark();\n this.initSeriesDataflow();\n this.initInteraction();\n this.initTrigger();\n }\n initMark() {\n this._initBackgroundMarkStyle();\n this._initForegroundMarkStyle();\n }\n\n protected _initBackgroundMarkStyle() {\n if (this._backgroundMark) {\n this.setMarkStyle(\n this._backgroundMark,\n {\n fillOpacity: this._spec.style?.fill ? 1 : 0,\n ...this._spec.style\n },\n 'normal',\n AttributeLevel.User_Mark\n );\n if (this._spec.clip ?? this._getClipDefaultValue()) {\n this.setMarkStyle(\n this._backgroundMark,\n {\n strokeOpacity: 0\n },\n 'normal',\n AttributeLevel.Built_In\n );\n }\n }\n }\n\n protected _initForegroundMarkStyle() {\n if (this._foregroundMark) {\n this.setMarkStyle(\n this._foregroundMark,\n {\n ...this._spec.style,\n fillOpacity: 0\n },\n 'normal',\n AttributeLevel.User_Mark\n );\n }\n }\n\n _compareSpec() {\n const result = super._compareSpec();\n if (!isEqual(this._originalSpec.style, this._spec.style)) {\n result.reMake = true;\n }\n return result;\n }\n\n reInit(theme?: any) {\n super.reInit(theme);\n this._initBackgroundMarkStyle();\n this._initForegroundMarkStyle();\n }\n\n addSeries(s: ISeries) {\n if (!s) {\n return;\n }\n if (!this._series.includes(s)) {\n this._series.push(s);\n }\n }\n\n removeSeries(s: ISeries) {\n if (!s) {\n return;\n }\n const index = this._series.findIndex(s_ => s_ === s);\n if (index >= 0) {\n this._series.splice(index, 1);\n }\n }\n\n getSeries(\n opt: {\n name?: string;\n userId?: StringOrNumber | StringOrNumber[];\n specIndex?: number | number[];\n id?: StringOrNumber;\n type?: string;\n coordinateType?: CoordinateType;\n dataName?: string;\n } = {}\n ): ISeries[] {\n return this._series.filter(\n s =>\n (opt.name ? s?.name === opt.name : true) &&\n (opt.userId ? array(opt.userId).includes(s.userId) : true) &&\n (isValid(opt.specIndex) && s.getSpecIndex ? array(opt.specIndex).includes(s.getSpecIndex()) : true) &&\n (opt.id ? s.id === opt.id : true) &&\n (opt.type ? s.type === opt.type : true) &&\n (opt.coordinateType ? s.coordinate === opt.coordinateType : true) &&\n (opt.dataName ? s.getRawData?.()?.name === opt.dataName : true)\n );\n }\n\n getSeriesInName(name: string): ISeries {\n return this.getSeries({ name })[0];\n }\n getSeriesInUserId(userId: string): ISeries {\n return this.getSeries({ userId })[0];\n }\n getSeriesInId(id: number): ISeries {\n return this.getSeries({ id })[0];\n }\n getSeriesInType(type: string): ISeries[] {\n return this.getSeries({ type });\n }\n getSeriesInCoordinateType(coordinateType: CoordinateType): ISeries[] {\n return this.getSeries({ coordinateType });\n }\n getSeriesInDataName(dataName: string): ISeries[] {\n return this.getSeries({ dataName });\n }\n\n onRender(ctx: any): void {\n // do nothing\n }\n\n initSeriesDataflow() {\n const viewDataFilters = this._series.map(s => s.getViewDataFilter()).filter(v => !!v);\n this._option.dataSet.multipleDataViewAddListener(viewDataFilters, 'change', this.seriesDataFilterOver);\n }\n\n seriesDataFilterOver = () => {\n this.event.emit(ChartEvent.regionSeriesDataFilterOver, { model: this });\n this._series.forEach(s => s.reTransformViewData());\n };\n\n release() {\n super.release();\n this._series = [];\n }\n /** dimension */\n createTrigger() {\n const triggerOptions = {\n ...this._option,\n model: this,\n interaction: this.interaction\n };\n this._trigger = new DimensionTrigger(triggerOptions);\n }\n\n initTrigger() {\n // register all mark\n // trigger check mark enable\n this._series.forEach(s => {\n s.getMarksWithoutRoot().forEach(m => {\n this._trigger.registerMark(m);\n });\n });\n this._trigger.init();\n }\n\n initInteraction() {\n // 注册所有支持反选状态mark\n this._series.forEach(s => {\n s.getMarksWithoutRoot().forEach(m => {\n for (const key in STATE_VALUE_ENUM_REVERSE) {\n if (!isEmpty(m.stateStyle[STATE_VALUE_ENUM_REVERSE[key]])) {\n this.interaction.registerMark(STATE_VALUE_ENUM_REVERSE[key], m);\n }\n }\n });\n });\n }\n\n compileMarks(group?: string | IVGrammarGroupMark) {\n this.getMarks().forEach(m => {\n m.compile({ group });\n m.getProduct()\n ?.configure({\n context: {\n model: this\n }\n })\n .layout(\n (group: IVGrammarGroupMark, children: IMark[], parentLayoutBounds: IBoundsLike, options?: ILayoutOptions) => {\n // console.log('region mark layout');\n }\n );\n });\n }\n\n compileSignal() {\n super.compileSignal();\n this.animate?.compile();\n }\n\n compile() {\n this.compileSignal();\n this.compileMarks();\n }\n\n bindSceneNode(node: IElement) {\n this._sceneNodeMap.set('default', node as Element);\n }\n}\n"]}
|
package/cjs/series/bar/bar.d.ts
CHANGED
|
@@ -33,13 +33,5 @@ export declare class BarSeries<T extends IBarSeriesSpec = IBarSeriesSpec> extend
|
|
|
33
33
|
protected _getBarWidth(axisHelper: IAxisHelper): number;
|
|
34
34
|
protected _getPosition(direction: DirectionType, datum: Datum): number;
|
|
35
35
|
onLayoutEnd(ctx: any): void;
|
|
36
|
-
updateSpec(spec: IBarSeriesSpec): {
|
|
37
|
-
change: boolean;
|
|
38
|
-
reMake: boolean;
|
|
39
|
-
reMakeData: boolean;
|
|
40
|
-
reRender: boolean;
|
|
41
|
-
reSize: boolean;
|
|
42
|
-
reCompile: boolean;
|
|
43
|
-
};
|
|
44
36
|
getDefaultShapeType(): string;
|
|
45
37
|
}
|