@visactor/vchart 1.9.1 → 1.9.3
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/build/es5/index.js +1 -1
- package/build/index.js +1186 -1033
- package/build/index.min.js +1 -1
- package/build/tsconfig.tsbuildinfo +1 -1
- package/cjs/chart/base/base-chart.d.ts +1 -1
- package/cjs/chart/base/base-chart.js.map +1 -1
- package/cjs/chart/box-plot/box-plot-transformer.js +1 -1
- package/cjs/chart/box-plot/box-plot-transformer.js.map +1 -1
- package/cjs/chart/correlation/correlation-transformer.js.map +1 -1
- package/cjs/component/axis/base-axis.d.ts +3 -2
- package/cjs/component/axis/base-axis.js +4 -4
- package/cjs/component/axis/base-axis.js.map +1 -1
- package/cjs/component/axis/cartesian/axis.js +8 -6
- package/cjs/component/axis/cartesian/axis.js.map +1 -1
- package/cjs/component/axis/cartesian/time-axis.js +3 -3
- package/cjs/component/axis/cartesian/time-axis.js.map +1 -1
- package/cjs/component/axis/mixin/band-axis-mixin.d.ts +1 -0
- package/cjs/component/axis/mixin/band-axis-mixin.js +24 -12
- package/cjs/component/axis/mixin/band-axis-mixin.js.map +1 -1
- package/cjs/component/axis/polar/axis.js +2 -1
- package/cjs/component/axis/polar/axis.js.map +1 -1
- package/cjs/component/data-zoom/data-filter-base-component.d.ts +1 -0
- package/cjs/component/data-zoom/data-filter-base-component.js +2 -2
- package/cjs/component/data-zoom/data-filter-base-component.js.map +1 -1
- package/cjs/component/data-zoom/data-zoom/data-zoom.js +15 -13
- package/cjs/component/data-zoom/data-zoom/data-zoom.js.map +1 -1
- package/cjs/component/data-zoom/scroll-bar/scroll-bar.js +15 -13
- package/cjs/component/data-zoom/scroll-bar/scroll-bar.js.map +1 -1
- package/cjs/component/data-zoom/util.d.ts +1 -1
- package/cjs/component/data-zoom/util.js.map +1 -1
- package/cjs/component/label/label.d.ts +2 -2
- package/cjs/component/label/label.js.map +1 -1
- package/cjs/component/label/total-label.js.map +1 -1
- package/cjs/component/label/util.js +12 -16
- package/cjs/component/label/util.js.map +1 -1
- package/cjs/component/legend/util.d.ts +7 -1
- package/cjs/component/marker/mark-area/mark-area.js +15 -10
- package/cjs/component/marker/mark-area/mark-area.js.map +1 -1
- package/cjs/component/marker/mark-line/mark-line.js.map +1 -1
- package/cjs/component/marker/mark-point/mark-point.js.map +1 -1
- package/cjs/component/player/utils/transform.js +2 -2
- package/cjs/component/player/utils/transform.js.map +1 -1
- package/cjs/component/title/title.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/vchart.js +3 -2
- package/cjs/core/vchart.js.map +1 -1
- package/cjs/data/transforms/pie.js +4 -4
- package/cjs/data/transforms/pie.js.map +1 -1
- package/cjs/mark/group.d.ts +1 -1
- package/cjs/mark/group.js.map +1 -1
- package/cjs/plugin/components/tooltip-handler/base.js +4 -3
- package/cjs/plugin/components/tooltip-handler/base.js.map +1 -1
- package/cjs/plugin/components/tooltip-handler/dom/model/content-column-model.js +27 -22
- package/cjs/plugin/components/tooltip-handler/dom/model/content-column-model.js.map +1 -1
- package/cjs/plugin/components/tooltip-handler/dom/model/content-model.d.ts +1 -1
- package/cjs/plugin/components/tooltip-handler/dom/model/content-model.js.map +1 -1
- package/cjs/plugin/components/tooltip-handler/dom/model/shape-model.js +3 -3
- package/cjs/plugin/components/tooltip-handler/dom/model/shape-model.js.map +1 -1
- package/cjs/plugin/components/tooltip-handler/dom/model/style-constants.js +2 -1
- package/cjs/plugin/components/tooltip-handler/dom/model/style-constants.js.map +1 -1
- package/cjs/plugin/components/tooltip-handler/dom/utils/style.js +4 -1
- package/cjs/plugin/components/tooltip-handler/dom/utils/style.js.map +1 -1
- package/cjs/series/area/area.js +9 -9
- package/cjs/series/area/area.js.map +1 -1
- package/cjs/series/bar/bar.js +23 -23
- package/cjs/series/bar/bar.js.map +1 -1
- package/cjs/series/base/base-series-transformer.js +3 -2
- package/cjs/series/base/base-series-transformer.js.map +1 -1
- package/cjs/series/base/base-series.d.ts +2 -1
- package/cjs/series/base/base-series.js.map +1 -1
- package/cjs/series/box-plot/box-plot.js +19 -19
- package/cjs/series/box-plot/box-plot.js.map +1 -1
- package/cjs/series/cartesian/cartesian.d.ts +1 -0
- package/cjs/series/cartesian/cartesian.js +18 -13
- package/cjs/series/cartesian/cartesian.js.map +1 -1
- package/cjs/series/circle-packing/circle-packing.js.map +1 -1
- package/cjs/series/correlation/correlation.js.map +1 -1
- package/cjs/series/heatmap/heatmap.d.ts +1 -1
- package/cjs/series/heatmap/heatmap.js.map +1 -1
- package/cjs/series/line/constant.d.ts +1 -1
- package/cjs/series/line/constant.js.map +1 -1
- package/cjs/series/mixin/line-mixin.d.ts +1 -1
- package/cjs/series/mixin/line-mixin.js +3 -3
- package/cjs/series/mixin/line-mixin.js.map +1 -1
- package/cjs/series/pie/pie.js.map +1 -1
- package/cjs/series/polar/animation.js +3 -3
- package/cjs/series/polar/animation.js.map +1 -1
- package/cjs/series/radar/radar.js.map +1 -1
- package/cjs/series/range-area/constant.d.ts +1 -1
- package/cjs/series/range-area/constant.js.map +1 -1
- package/cjs/series/range-area/range-area.js +12 -12
- package/cjs/series/range-area/range-area.js.map +1 -1
- package/cjs/series/range-column/range-column-transformer.d.ts +1 -1
- package/cjs/series/range-column/range-column-transformer.js.map +1 -1
- package/cjs/series/range-column/range-column.d.ts +1 -1
- package/cjs/series/range-column/range-column.js.map +1 -1
- package/cjs/series/rose/rose.js.map +1 -1
- package/cjs/series/sankey/sankey.js.map +1 -1
- package/cjs/series/scatter/scatter.js.map +1 -1
- package/cjs/series/sunburst/sunburst.js.map +1 -1
- package/cjs/series/waterfall/waterfall.js +14 -14
- package/cjs/series/waterfall/waterfall.js.map +1 -1
- package/cjs/series/word-cloud/config.js +1 -1
- package/cjs/series/word-cloud/config.js.map +1 -1
- package/cjs/series/word-cloud/word-cloud-3d.js.map +1 -1
- package/cjs/theme/builtin/common/series/rangeColumn.d.ts +1 -1
- package/cjs/theme/builtin/common/series/rangeColumn.js.map +1 -1
- package/cjs/util/math.d.ts +1 -0
- package/cjs/util/math.js +18 -2
- package/cjs/util/math.js.map +1 -1
- package/cjs/util/scale.d.ts +2 -1
- package/cjs/util/scale.js.map +1 -1
- package/cjs/util/space.d.ts +1 -1
- package/cjs/util/space.js.map +1 -1
- package/cjs/util/spec/common.d.ts +1 -1
- package/cjs/util/spec/common.js.map +1 -1
- package/cjs/util/spec/merge-theme.d.ts +1 -1
- package/cjs/util/spec/merge-theme.js.map +1 -1
- package/esm/chart/base/base-chart.d.ts +1 -1
- package/esm/chart/base/base-chart.js.map +1 -1
- package/esm/chart/box-plot/box-plot-transformer.js +1 -1
- package/esm/chart/box-plot/box-plot-transformer.js.map +1 -1
- package/esm/chart/correlation/correlation-transformer.js.map +1 -1
- package/esm/component/axis/base-axis.d.ts +3 -2
- package/esm/component/axis/base-axis.js +1 -3
- package/esm/component/axis/base-axis.js.map +1 -1
- package/esm/component/axis/cartesian/axis.js +5 -3
- package/esm/component/axis/cartesian/axis.js.map +1 -1
- package/esm/component/axis/cartesian/time-axis.js +3 -3
- package/esm/component/axis/cartesian/time-axis.js.map +1 -1
- package/esm/component/axis/mixin/band-axis-mixin.d.ts +1 -0
- package/esm/component/axis/mixin/band-axis-mixin.js +23 -12
- package/esm/component/axis/mixin/band-axis-mixin.js.map +1 -1
- package/esm/component/axis/polar/axis.js +2 -1
- package/esm/component/axis/polar/axis.js.map +1 -1
- package/esm/component/data-zoom/data-filter-base-component.d.ts +1 -0
- package/esm/component/data-zoom/data-filter-base-component.js +2 -2
- package/esm/component/data-zoom/data-filter-base-component.js.map +1 -1
- package/esm/component/data-zoom/data-zoom/data-zoom.js +15 -13
- package/esm/component/data-zoom/data-zoom/data-zoom.js.map +1 -1
- package/esm/component/data-zoom/scroll-bar/scroll-bar.js +15 -13
- package/esm/component/data-zoom/scroll-bar/scroll-bar.js.map +1 -1
- package/esm/component/data-zoom/util.d.ts +1 -1
- package/esm/component/data-zoom/util.js.map +1 -1
- package/esm/component/label/label.d.ts +2 -2
- package/esm/component/label/label.js.map +1 -1
- package/esm/component/label/total-label.js.map +1 -1
- package/esm/component/label/util.js +10 -19
- package/esm/component/label/util.js.map +1 -1
- package/esm/component/legend/util.d.ts +7 -1
- package/esm/component/marker/mark-area/mark-area.js +15 -9
- package/esm/component/marker/mark-area/mark-area.js.map +1 -1
- package/esm/component/marker/mark-line/mark-line.js.map +1 -1
- package/esm/component/marker/mark-point/mark-point.js.map +1 -1
- package/esm/component/player/utils/transform.js +2 -2
- package/esm/component/player/utils/transform.js.map +1 -1
- package/esm/component/title/title.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/vchart.js +3 -2
- package/esm/core/vchart.js.map +1 -1
- package/esm/data/transforms/pie.js +5 -5
- package/esm/data/transforms/pie.js.map +1 -1
- package/esm/mark/group.d.ts +1 -1
- package/esm/mark/group.js.map +1 -1
- package/esm/plugin/components/tooltip-handler/base.js +4 -3
- package/esm/plugin/components/tooltip-handler/base.js.map +1 -1
- package/esm/plugin/components/tooltip-handler/dom/model/content-column-model.js +25 -20
- package/esm/plugin/components/tooltip-handler/dom/model/content-column-model.js.map +1 -1
- package/esm/plugin/components/tooltip-handler/dom/model/content-model.d.ts +1 -1
- package/esm/plugin/components/tooltip-handler/dom/model/content-model.js.map +1 -1
- package/esm/plugin/components/tooltip-handler/dom/model/shape-model.js +3 -3
- package/esm/plugin/components/tooltip-handler/dom/model/shape-model.js.map +1 -1
- package/esm/plugin/components/tooltip-handler/dom/model/style-constants.js +2 -1
- package/esm/plugin/components/tooltip-handler/dom/model/style-constants.js.map +1 -1
- package/esm/plugin/components/tooltip-handler/dom/utils/style.js +4 -1
- package/esm/plugin/components/tooltip-handler/dom/utils/style.js.map +1 -1
- package/esm/series/area/area.js +9 -9
- package/esm/series/area/area.js.map +1 -1
- package/esm/series/bar/bar.js +22 -22
- package/esm/series/bar/bar.js.map +1 -1
- package/esm/series/base/base-series-transformer.js +2 -2
- package/esm/series/base/base-series-transformer.js.map +1 -1
- package/esm/series/base/base-series.d.ts +2 -1
- package/esm/series/base/base-series.js.map +1 -1
- package/esm/series/box-plot/box-plot.js +19 -19
- package/esm/series/box-plot/box-plot.js.map +1 -1
- package/esm/series/cartesian/cartesian.d.ts +1 -0
- package/esm/series/cartesian/cartesian.js +17 -12
- package/esm/series/cartesian/cartesian.js.map +1 -1
- package/esm/series/circle-packing/circle-packing.js.map +1 -1
- package/esm/series/correlation/correlation.js.map +1 -1
- package/esm/series/heatmap/heatmap.d.ts +1 -1
- package/esm/series/heatmap/heatmap.js.map +1 -1
- package/esm/series/line/constant.d.ts +1 -1
- package/esm/series/line/constant.js.map +1 -1
- package/esm/series/mixin/line-mixin.d.ts +1 -1
- package/esm/series/mixin/line-mixin.js +3 -3
- package/esm/series/mixin/line-mixin.js.map +1 -1
- package/esm/series/pie/pie.js.map +1 -1
- package/esm/series/polar/animation.js +4 -2
- package/esm/series/polar/animation.js.map +1 -1
- package/esm/series/radar/radar.js.map +1 -1
- package/esm/series/range-area/constant.d.ts +1 -1
- package/esm/series/range-area/constant.js.map +1 -1
- package/esm/series/range-area/range-area.js +12 -12
- package/esm/series/range-area/range-area.js.map +1 -1
- package/esm/series/range-column/range-column-transformer.d.ts +1 -1
- package/esm/series/range-column/range-column-transformer.js.map +1 -1
- package/esm/series/range-column/range-column.d.ts +1 -1
- package/esm/series/range-column/range-column.js.map +1 -1
- package/esm/series/rose/rose.js.map +1 -1
- package/esm/series/sankey/sankey.js.map +1 -1
- package/esm/series/scatter/scatter.js.map +1 -1
- package/esm/series/sunburst/sunburst.js.map +1 -1
- package/esm/series/waterfall/waterfall.js +13 -13
- package/esm/series/waterfall/waterfall.js.map +1 -1
- package/esm/series/word-cloud/config.js +1 -1
- package/esm/series/word-cloud/config.js.map +1 -1
- package/esm/series/word-cloud/word-cloud-3d.js.map +1 -1
- package/esm/theme/builtin/common/series/rangeColumn.d.ts +1 -1
- package/esm/theme/builtin/common/series/rangeColumn.js.map +1 -1
- package/esm/util/math.d.ts +1 -0
- package/esm/util/math.js +16 -0
- package/esm/util/math.js.map +1 -1
- package/esm/util/scale.d.ts +2 -1
- package/esm/util/scale.js.map +1 -1
- package/esm/util/space.d.ts +1 -1
- package/esm/util/space.js.map +1 -1
- package/esm/util/spec/common.d.ts +1 -1
- package/esm/util/spec/common.js.map +1 -1
- package/esm/util/spec/merge-theme.d.ts +1 -1
- package/esm/util/spec/merge-theme.js.map +1 -1
- package/package.json +12 -12
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../src/plugin/components/tooltip-handler/base.ts"],"names":[],"mappings":"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","file":"base.js","sourcesContent":["import { DEFAULT_CHART_WIDTH, DEFAULT_CHART_HEIGHT } from '../../../constant/base';\nimport type { Options } from './constants';\n// eslint-disable-next-line no-duplicate-imports\nimport { DEFAULT_OPTIONS } from './constants';\nimport type { Maybe, IPoint, ILayoutPoint, RenderMode } from '../../../typings';\n// eslint-disable-next-line no-duplicate-imports\nimport { TooltipPositionMode } from '../../../typings/tooltip/position';\n// eslint-disable-next-line no-duplicate-imports\nimport { isTrueBrowser } from '../../../util/env';\nimport type {\n TooltipData,\n IToolTipActual,\n TooltipActiveType,\n ITooltipHandler,\n ITooltipPattern,\n ITooltipPositionActual,\n ITooltipPositionPattern\n} from '../../../typings/tooltip';\n// eslint-disable-next-line no-duplicate-imports\nimport type { TooltipFixedPosition } from '../../../typings/tooltip';\nimport type { BaseEventParams } from '../../../event/interface';\nimport { getTooltipPatternValue, getScale } from './utils/common';\nimport { getActualTooltipPositionValue, getHorizontalPositionType, getVerticalPositionType } from './utils/position';\nimport { getShowContent } from './utils/compose';\nimport { getTooltipSpecForShow } from './utils/get-spec';\nimport type { ISeries } from '../../../series/interface';\nimport type { IGroup } from '@visactor/vrender-core';\nimport type { AABBBounds } from '@visactor/vutils';\n// eslint-disable-next-line no-duplicate-imports\nimport {\n isNumber,\n isObject,\n isValidNumber,\n isValid,\n throttle,\n isNil,\n polygonContainPoint,\n pointInRect\n} from '@visactor/vutils';\nimport type { IElement } from '@visactor/vgrammar-core';\nimport type { ILayoutModel, IModel } from '../../../model/interface';\nimport type { Compiler } from '../../../compile/compiler';\nimport type { IContainerSize } from '@visactor/vrender-components';\nimport { getTooltipAttributes } from './utils/attribute';\nimport type { DimensionEventParams } from '../../../event/events/dimension/interface';\nimport type { IChartOption } from '../../../chart/interface';\nimport type {\n ITooltipSpec,\n Tooltip,\n TooltipActualTitleContent,\n TooltipHandlerParams\n} from '../../../component/tooltip';\n// eslint-disable-next-line no-duplicate-imports\nimport { TooltipResult } from '../../../component/tooltip';\nimport type { IComponentPlugin, IComponentPluginService } from '../interface';\nimport { BasePlugin } from '../../base/base-plugin';\nimport type { ITooltipAttributes } from './interface';\n\ntype ChangeTooltipFunc = (\n visible: boolean,\n params: TooltipHandlerParams,\n changePositionOnly?: boolean,\n activeType?: TooltipActiveType,\n data?: TooltipData\n) => TooltipResult;\n\ntype ChangeTooltipPositionFunc = (\n changePositionOnly: boolean,\n data: TooltipData,\n params: TooltipHandlerParams\n) => TooltipResult;\n\n/**\n * The tooltip handler class.\n */\nexport abstract class BaseTooltipHandler extends BasePlugin implements ITooltipHandler, IComponentPlugin {\n static readonly pluginType: 'component';\n static readonly specKey = 'tooltip';\n\n readonly type: string;\n\n /** 是否可见 */\n protected _visible = true;\n\n // protected _style: ITooltipStyle = {};\n\n protected _option: Options;\n\n protected _chartOption: IChartOption;\n\n protected _env: RenderMode;\n public get env() {\n return this._env;\n }\n\n protected _component: Tooltip;\n protected _attributes?: ITooltipAttributes | null = null;\n\n protected _chartContainer: Maybe<HTMLElement>;\n protected _compiler: Compiler;\n\n protected _cacheViewSpec: ITooltipSpec | undefined;\n protected _cacheActualTooltip: IToolTipActual | undefined;\n\n protected _isTooltipPaused: boolean;\n protected _isPointerEscaped: boolean;\n protected _cachePointerTimer: number;\n protected _cachePointerPosition: ILayoutPoint;\n protected _cacheTooltipPosition: ILayoutPoint;\n protected _cacheTooltipSize: IContainerSize;\n\n // tooltip 容器\n protected _container!: Maybe<IGroup | HTMLElement>;\n\n protected _isReleased: boolean = false;\n\n onAdd(service: IComponentPluginService<any>): void {\n super.onAdd(service);\n const component = service.component as Tooltip;\n this._component = component;\n this._chartOption = component.getOption() as any;\n this._env = this._chartOption.mode;\n this._chartContainer = this._chartOption.globalInstance.getContainer();\n this._compiler = component.getCompiler();\n this._initFromSpec();\n }\n\n showTooltip = (activeType: TooltipActiveType, data: TooltipData, params: TooltipHandlerParams) => {\n let changePositionOnly = !!params.changePositionOnly;\n if (!params.changePositionOnly || this._cacheActualTooltip?.activeType !== activeType) {\n changePositionOnly = false;\n this._clearCacheOfContent();\n }\n\n if (changePositionOnly && this._cacheViewSpec && this._cacheActualTooltip) {\n return this.changeTooltipPosition(changePositionOnly, data, params);\n }\n return this.changeTooltip(true, params, changePositionOnly, activeType, data);\n };\n\n /** 改变 tooltip 内容和位置(带 throttle 版本),返回是否遇到异常 */\n protected changeTooltip: ChangeTooltipFunc;\n\n /** 改变 tooltip 内容和位置(不带 throttle 版本),返回是否遇到异常 */\n protected _changeTooltip: ChangeTooltipFunc = (\n visible: boolean,\n params: TooltipHandlerParams,\n changePositionOnly?: boolean,\n activeType?: TooltipActiveType,\n data?: TooltipData\n ) => {\n const tooltipSpec = this._component.getSpec() as ITooltipSpec;\n if (this._isReleased || !tooltipSpec) {\n return TooltipResult.failed;\n }\n\n /** 关闭 tooltip */\n if (!visible) {\n this._clearAllCache();\n\n /** 用户自定义逻辑 */\n if (tooltipSpec.handler) {\n return tooltipSpec.handler.hideTooltip?.(params) ?? TooltipResult.success;\n }\n /** 默认逻辑 */\n this._updateTooltip(false, params);\n return TooltipResult.success;\n }\n\n if (isNil(activeType) || isNil(data)) {\n return TooltipResult.failed;\n }\n\n /** spec 预处理 */\n let spec: ITooltipSpec | undefined;\n if (changePositionOnly && this._cacheViewSpec) {\n spec = this._cacheViewSpec;\n } else {\n spec = getTooltipSpecForShow(\n activeType!,\n tooltipSpec,\n (params as BaseEventParams).model as ISeries,\n (params as DimensionEventParams).dimensionInfo\n );\n this._cacheViewSpec = spec;\n }\n\n if (spec.visible === false) {\n return TooltipResult.failed;\n }\n\n /** 用户自定义逻辑 */\n if (spec.handler) {\n return spec.handler.showTooltip?.(activeType!, data!, params) ?? TooltipResult.success;\n }\n\n /** 默认逻辑 */\n const pattern = spec[activeType!] as ITooltipPattern;\n if (!pattern) {\n return TooltipResult.failed;\n }\n\n // 合成 tooltip 内容\n let actualTooltip: IToolTipActual | undefined;\n if (changePositionOnly && this._cacheActualTooltip) {\n actualTooltip = this._cacheActualTooltip;\n } else {\n actualTooltip = this._getActualTooltipContent(pattern, data!, params);\n actualTooltip.title = pattern.updateTitle?.(actualTooltip.title, data, params) ?? actualTooltip.title;\n actualTooltip.content = pattern.updateContent?.(actualTooltip.content, data, params) ?? actualTooltip.content;\n }\n\n // 判断 tooltip 是否为空\n if (isNil(actualTooltip.title?.key) && isNil(actualTooltip.title?.value) && !actualTooltip.content?.length) {\n return TooltipResult.failed;\n }\n\n this._cacheActualTooltip = actualTooltip;\n return this._changeTooltipPosition(!!changePositionOnly, data!, params);\n };\n\n /** 改变 tooltip 位置(带 throttle 版本),返回是否遇到异常 */\n protected changeTooltipPosition: ChangeTooltipPositionFunc;\n\n /** 改变 tooltip 位置(不带 throttle 版本),返回是否遇到异常 */\n protected _changeTooltipPosition: ChangeTooltipPositionFunc = (\n changePositionOnly: boolean,\n data: TooltipData,\n params: TooltipHandlerParams\n ) => {\n if (this._isReleased) {\n return TooltipResult.failed;\n }\n\n const event = params.event as MouseEvent;\n const spec = this._cacheViewSpec;\n const actualTooltip = this._cacheActualTooltip;\n if (!spec || !actualTooltip) {\n return TooltipResult.failed;\n }\n\n if (spec.enterable) {\n if (!this._isPointerEscaped && this._isPointerMovingToTooltip(params)) {\n if (!this._isTooltipPaused) {\n this._isTooltipPaused = true;\n this._cachePointerTimer = setTimeout(() => {\n this._isPointerEscaped = true;\n }, 300) as unknown as number;\n }\n return TooltipResult.success;\n }\n this._isTooltipPaused = false;\n this._isPointerEscaped = false;\n clearTimeout(this._cachePointerTimer);\n this._cachePointerPosition = this._getPointerPositionRelativeToTooltipParent(params);\n }\n\n const activeType = actualTooltip.activeType;\n\n /** 用户自定义逻辑 */\n if (spec.handler) {\n return spec.handler.showTooltip?.(activeType, data, params) ?? TooltipResult.success;\n }\n\n /** 默认逻辑 */\n const pattern = spec[activeType];\n if (!pattern) {\n return TooltipResult.failed;\n }\n\n // 计算 tooltip 位置\n const position = this._getActualTooltipPosition(\n actualTooltip,\n params,\n this._getTooltipBoxSize(actualTooltip, changePositionOnly)\n );\n actualTooltip.position = position;\n if (pattern.updatePosition) {\n actualTooltip.position = pattern.updatePosition(actualTooltip.position, data, params);\n }\n\n // 判断 tooltip 可见性\n let tooltipVisible = pattern?.visible !== false;\n if (\n !data ||\n event.type === 'pointerout' ||\n !actualTooltip.visible ||\n (!actualTooltip.title && !actualTooltip.content)\n ) {\n tooltipVisible = false;\n }\n\n this._updateTooltip(\n tooltipVisible,\n {\n ...params,\n changePositionOnly\n },\n actualTooltip\n );\n return TooltipResult.success;\n };\n\n hideTooltip(params: TooltipHandlerParams): TooltipResult {\n return this.changeTooltip(false, params);\n }\n\n release(): void {\n this._clearAllCache();\n const spec = this._component.getSpec() ?? {};\n /** 用户自定义逻辑 */\n if (spec.handler) {\n spec.handler.release?.();\n return;\n }\n /** 默认逻辑 */\n this._removeTooltip();\n\n this._isReleased = true;\n }\n\n protected _clearAllCache() {\n this._clearCacheOfContent();\n this._clearCacheOfPosition();\n }\n\n protected _clearCacheOfContent() {\n this._cacheViewSpec = undefined;\n this._cacheActualTooltip = undefined;\n }\n\n protected _clearCacheOfPosition() {\n this._isTooltipPaused = false;\n this._isPointerEscaped = false;\n clearTimeout(this._cachePointerTimer);\n this._cachePointerTimer = -1;\n this._cachePointerPosition = undefined;\n this._cacheTooltipPosition = undefined;\n this._cacheTooltipSize = undefined;\n }\n\n /* -----需要子类继承的方法开始----- */\n\n protected abstract _updateTooltip(visible: boolean, params: TooltipHandlerParams, domData?: IToolTipActual): void;\n protected abstract _removeTooltip(): void;\n\n /* -----需要子类继承的方法结束----- */\n\n protected _throttle(callback: any) {\n const tooltipSpec = this._component.getSpec();\n let wait: number;\n if (isNumber(tooltipSpec.throttleInterval)) {\n wait = tooltipSpec.throttleInterval;\n } else {\n if (tooltipSpec.renderMode !== 'html' || !tooltipSpec.transitionDuration) {\n wait = 10;\n } else {\n wait = 50;\n }\n }\n return throttle(callback, wait);\n }\n\n protected _getDefaultOption(): Options {\n const { offset } = this._component.getSpec();\n return {\n ...DEFAULT_OPTIONS,\n offsetX: offset?.x ?? DEFAULT_OPTIONS.offsetX,\n offsetY: offset?.y ?? DEFAULT_OPTIONS.offsetY\n };\n }\n\n /**\n * 计算实际的 tooltip 内容\n * @param pattern\n * @param data\n * @param event\n */\n protected _getActualTooltipContent = (\n pattern: ITooltipPattern,\n data: TooltipData,\n params: TooltipHandlerParams\n ): IToolTipActual => {\n // 可见性\n const patternVisible = getTooltipPatternValue(pattern.visible, data, params);\n\n // 数据\n let tooltipContent: TooltipActualTitleContent | null = null;\n tooltipContent = getShowContent(pattern, data, params);\n\n const actualTooltip: IToolTipActual = {\n ...tooltipContent,\n visible: isValid(tooltipContent) ? patternVisible !== false : false, // 最终展示数据为 null 则不展示\n activeType: pattern.activeType,\n data\n };\n\n return actualTooltip;\n };\n\n /**\n * 计算实际的 tooltip 位置\n */\n protected _getActualTooltipPosition = (\n actualTooltip: IToolTipActual,\n params: TooltipHandlerParams,\n tooltipBoxSize: IContainerSize | undefined\n ): ITooltipPositionActual => {\n const event = params.event as MouseEvent;\n\n const invalidPosition = {\n x: Infinity,\n y: Infinity\n };\n\n const { offsetX, offsetY } = this._option;\n const tooltipSpec = this._cacheViewSpec;\n if (!tooltipSpec) {\n this._cacheTooltipPosition = undefined;\n return invalidPosition;\n }\n\n const { activeType, data } = actualTooltip;\n const pattern = tooltipSpec[activeType];\n const position = getTooltipPatternValue(pattern.position, data, params);\n const positionMode = getTooltipPatternValue(pattern.positionMode, data, params);\n const tooltipParentElement = this._getParentElement(tooltipSpec);\n const { width: tooltipBoxWidth = 0, height: tooltipBoxHeight = 0 } = tooltipBoxSize ?? {};\n\n const isCanvas = tooltipSpec.renderMode === 'canvas';\n const canvasRect = params?.chart?.getCanvasRect();\n const canvasWidth = canvasRect?.width ?? DEFAULT_CHART_WIDTH;\n const canvasHeight = canvasRect?.height ?? DEFAULT_CHART_HEIGHT;\n let isFixedPosition = false;\n\n const containerSize = {\n width: 0,\n height: 0\n };\n let relativePosOffset = { x: 0, y: 0 };\n let tooltipParentElementRect: IPoint | DOMRect = { x: 0, y: 0 };\n let chartElementScale = 1;\n let tooltipParentElementScale = 1;\n\n if (isTrueBrowser(this._env) && !tooltipSpec.confine) {\n // 只有在 browser 模式下才可以获取到 window 对象\n containerSize.width = window.innerWidth;\n containerSize.height = window.innerHeight;\n\n if (!isCanvas) {\n tooltipParentElementRect = tooltipParentElement?.getBoundingClientRect() ?? invalidPosition;\n const chartElement = (this._compiler.getCanvas() ?? this._chartContainer) as HTMLElement;\n const chartElementRect = chartElement?.getBoundingClientRect();\n relativePosOffset = {\n x: chartElementRect.x - tooltipParentElementRect.x,\n y: chartElementRect.y - tooltipParentElementRect.y\n };\n chartElementScale = getScale(chartElement, chartElementRect);\n tooltipParentElementScale = getScale(tooltipParentElement, tooltipParentElementRect as DOMRect);\n }\n } else {\n containerSize.width = canvasWidth;\n containerSize.height = canvasHeight;\n }\n const tooltipSizeScale = tooltipParentElementScale / chartElementScale;\n\n /* 一、计算 left、top、right、bottom */\n let left: number | undefined;\n let top: number | undefined;\n let right: number | undefined;\n let bottom: number | undefined;\n if (isObject(position)) {\n const { left: posLeft, right: posRight, top: posTop, bottom: posBottom } = position as ITooltipPositionPattern;\n left = getActualTooltipPositionValue(posLeft, event);\n top = getActualTooltipPositionValue(posTop, event);\n right = getActualTooltipPositionValue(posRight, event);\n bottom = getActualTooltipPositionValue(posBottom, event);\n } else if (\n isValid(position) &&\n positionMode !== TooltipPositionMode.pointer &&\n actualTooltip.activeType === 'mark'\n ) {\n isFixedPosition = true;\n const element = params.item as IElement;\n const model = params.model as IModel;\n const bounds = element?.getBounds() as AABBBounds;\n const startPoint = (<ILayoutModel>(<unknown>model))?.getLayoutStartPoint();\n if (bounds && startPoint) {\n let { x1, y1, x2, y2 } = bounds;\n x1 += startPoint.x;\n x2 += startPoint.x;\n y1 += startPoint.y;\n y2 += startPoint.y;\n switch (getHorizontalPositionType(position)) {\n case 'left':\n left = x1 - tooltipBoxWidth * tooltipSizeScale - offsetX;\n break;\n case 'right':\n left = x2 + offsetX;\n break;\n case 'middle':\n left = (x1 + x2) / 2 - (tooltipBoxWidth * tooltipSizeScale) / 2;\n break;\n }\n switch (getVerticalPositionType(position)) {\n case 'top':\n top = y1 - tooltipBoxHeight * tooltipSizeScale - offsetY;\n break;\n case 'bottom':\n top = y2 + offsetY;\n break;\n case 'middle':\n top = (y1 + y2) / 2 - (tooltipBoxHeight * tooltipSizeScale) / 2;\n break;\n }\n }\n }\n\n /* 二、换算成 x 和 y */\n let x: number;\n let y: number;\n\n const { canvasX, canvasY } = event as any;\n if (isValidNumber(left)) {\n x = left;\n } else if (isValidNumber(right)) {\n x = canvasWidth - tooltipBoxWidth * tooltipSizeScale - right;\n } else {\n const x0 = canvasX;\n switch (getHorizontalPositionType(position as TooltipFixedPosition, 'right')) {\n case 'middle':\n x = x0 - (tooltipBoxWidth * tooltipSizeScale) / 2;\n break;\n case 'left':\n x = x0 - tooltipBoxWidth * tooltipSizeScale - offsetX;\n break;\n case 'right':\n x = x0 + offsetX;\n break;\n }\n }\n if (isValidNumber(top)) {\n y = top;\n } else if (isValidNumber(bottom)) {\n y = canvasHeight - tooltipBoxHeight * tooltipSizeScale - bottom;\n } else {\n const y0 = canvasY;\n switch (getVerticalPositionType(position as TooltipFixedPosition, 'bottom')) {\n case 'middle':\n y = y0 - (tooltipBoxHeight * tooltipSizeScale) / 2;\n break;\n case 'top':\n y = y0 - tooltipBoxHeight * tooltipSizeScale - offsetY;\n break;\n case 'bottom':\n y = y0 + offsetY;\n break;\n }\n }\n\n x *= chartElementScale;\n y *= chartElementScale;\n if (isTrueBrowser(this._env)) {\n x += relativePosOffset.x;\n y += relativePosOffset.y;\n }\n x /= tooltipParentElementScale;\n y /= tooltipParentElementScale;\n\n /* 三、确保tooltip在视区内 */\n const { width: containerWidth, height: containerHeight } = containerSize;\n\n const isLeftOut = () => x * tooltipParentElementScale + tooltipParentElementRect.x < 0;\n const isRightOut = () =>\n (x + tooltipBoxWidth) * tooltipParentElementScale + tooltipParentElementRect.x > containerWidth;\n const isTopOut = () => y * tooltipParentElementScale + tooltipParentElementRect.y < 0;\n const isBottomOut = () =>\n (y + tooltipBoxHeight) * tooltipParentElementScale + tooltipParentElementRect.y > containerHeight;\n\n const detectLeftFirst = () => {\n if (isLeftOut()) {\n // 位置不超出视区左界\n if (isFixedPosition) {\n x = -tooltipParentElementRect.x / tooltipParentElementScale;\n } else {\n if (getHorizontalPositionType(position as TooltipFixedPosition, 'right') === 'middle') {\n x += offsetX + tooltipBoxWidth / 2;\n } else {\n x += offsetX * 2 + tooltipBoxWidth;\n }\n }\n }\n };\n const detectLeftLast = () => {\n if (isLeftOut()) {\n // 位置不超出视区左界\n x = -tooltipParentElementRect.x / tooltipParentElementScale;\n }\n };\n const detectRightFirst = () => {\n if (isRightOut()) {\n // 位置不超出视区右界\n if (isFixedPosition) {\n x = (containerWidth - tooltipParentElementRect.x) / tooltipParentElementScale - tooltipBoxWidth;\n } else {\n if (getHorizontalPositionType(position as TooltipFixedPosition, 'right') === 'middle') {\n x -= offsetX + tooltipBoxWidth / 2;\n } else {\n x -= offsetX * 2 + tooltipBoxWidth;\n }\n }\n }\n };\n const detectRightLast = () => {\n if (isRightOut()) {\n // 位置不超出视区右界\n x = (containerWidth - tooltipParentElementRect.x) / tooltipParentElementScale - tooltipBoxWidth;\n }\n };\n const detectTopFirst = () => {\n if (isTopOut()) {\n // 位置不超出视区上界\n if (isFixedPosition) {\n y = -tooltipParentElementRect.y / tooltipParentElementScale;\n } else {\n if (getVerticalPositionType(position as TooltipFixedPosition, 'bottom') === 'middle') {\n y += offsetY + tooltipBoxHeight / 2;\n } else {\n y += offsetY * 2 + tooltipBoxHeight;\n }\n }\n }\n };\n const detectTopLast = () => {\n if (isTopOut()) {\n // 位置不超出视区上界\n y = 0 - tooltipParentElementRect.y / tooltipParentElementScale;\n }\n };\n const detectBottomFirst = () => {\n if (isBottomOut()) {\n // 位置不超出视区下界\n if (isFixedPosition) {\n y = (containerHeight - tooltipParentElementRect.y) / tooltipParentElementScale - tooltipBoxHeight;\n } else {\n if (getVerticalPositionType(position as TooltipFixedPosition, 'bottom') === 'middle') {\n y -= offsetY + tooltipBoxHeight / 2;\n } else {\n y -= offsetY * 2 + tooltipBoxHeight;\n }\n }\n }\n };\n const detectBottomLast = () => {\n if (isBottomOut()) {\n // 位置不超出视区下界\n y = (containerHeight - tooltipParentElementRect.y) / tooltipParentElementScale - tooltipBoxHeight;\n }\n };\n\n // 处理左右\n switch (getHorizontalPositionType(position as TooltipFixedPosition, 'right')) {\n case 'middle':\n if (isLeftOut()) {\n detectLeftFirst();\n detectRightLast();\n } else {\n detectRightFirst();\n detectLeftLast();\n }\n break;\n case 'left':\n detectLeftFirst();\n detectRightLast();\n break;\n case 'right':\n detectRightFirst();\n detectLeftLast();\n break;\n }\n // 处理上下\n switch (getVerticalPositionType(position as TooltipFixedPosition, 'bottom')) {\n case 'middle':\n if (isTopOut()) {\n detectTopFirst();\n detectBottomLast();\n } else {\n detectBottomFirst();\n detectTopLast();\n }\n break;\n case 'top':\n detectTopFirst();\n detectBottomLast();\n break;\n case 'bottom':\n detectBottomFirst();\n detectTopLast();\n break;\n }\n\n const result = { x, y };\n this._cacheTooltipPosition = result;\n this._cacheTooltipSize = { width: tooltipBoxWidth, height: tooltipBoxHeight };\n return result;\n };\n\n // 计算 tooltip 内容区域的宽高,并缓存结果\n protected _getTooltipBoxSize(actualTooltip: IToolTipActual, changePositionOnly: boolean): IContainerSize | undefined {\n if (!changePositionOnly || isNil(this._attributes)) {\n const chartTheme = this._chartOption?.getTheme() ?? {};\n this._attributes = getTooltipAttributes(actualTooltip, this._component.getSpec(), chartTheme);\n }\n return {\n width: this._attributes?.panel?.width,\n height: this._attributes?.panel?.height\n };\n }\n\n protected _getPointerPositionRelativeToTooltipParent(params: TooltipHandlerParams) {\n let { canvasX: x, canvasY: y } = params.event;\n\n const invalidPosition = {\n x: Infinity,\n y: Infinity\n };\n\n const tooltipSpec = this._cacheViewSpec;\n const isCanvas = tooltipSpec.renderMode === 'canvas';\n const tooltipParentElement = this._getParentElement(tooltipSpec);\n\n let relativePosOffset = { x: 0, y: 0 };\n let tooltipParentElementRect: IPoint | DOMRect = { x: 0, y: 0 };\n let chartElementScale = 1;\n let tooltipParentElementScale = 1;\n\n if (isTrueBrowser(this._env) && !tooltipSpec.confine) {\n if (!isCanvas) {\n tooltipParentElementRect = tooltipParentElement?.getBoundingClientRect() ?? invalidPosition;\n const chartElement = (this._compiler.getCanvas() ?? this._chartContainer) as HTMLElement;\n const chartElementRect = chartElement?.getBoundingClientRect();\n relativePosOffset = {\n x: chartElementRect.x - tooltipParentElementRect.x,\n y: chartElementRect.y - tooltipParentElementRect.y\n };\n chartElementScale = getScale(chartElement, chartElementRect);\n tooltipParentElementScale = getScale(tooltipParentElement, tooltipParentElementRect as DOMRect);\n }\n }\n\n x *= chartElementScale;\n y *= chartElementScale;\n if (isTrueBrowser(this._env)) {\n x += relativePosOffset.x;\n y += relativePosOffset.y;\n }\n x /= tooltipParentElementScale;\n y /= tooltipParentElementScale;\n return { x, y };\n }\n\n protected _isPointerMovingToTooltip(params: TooltipHandlerParams) {\n if (!this._cacheTooltipPosition || !this._cacheTooltipSize || !this._cachePointerPosition) {\n return false;\n }\n const { width: tooltipWidth, height: tooltipHeight } = this._cacheTooltipSize;\n const { x: tooltipX = 0, y: tooltipY } = this._cacheTooltipPosition;\n\n const pos = this._getPointerPositionRelativeToTooltipParent(params);\n\n if (\n pointInRect(\n pos,\n {\n x1: tooltipX,\n y1: tooltipY,\n x2: tooltipX + tooltipWidth,\n y2: tooltipY + tooltipHeight\n },\n false\n )\n ) {\n return true;\n }\n\n // 确定 tooltip 四端点坐标\n const a = { x: tooltipX, y: tooltipY };\n const b = { x: a.x + tooltipWidth, y: a.y };\n const c = { x: a.x, y: a.y + tooltipHeight };\n const d = { x: b.x, y: c.y };\n const oldPos = this._cachePointerPosition;\n\n return (\n polygonContainPoint([oldPos, a, b], pos.x, pos.y) ||\n polygonContainPoint([oldPos, c, d], pos.x, pos.y) ||\n polygonContainPoint([oldPos, a, d], pos.x, pos.y) ||\n polygonContainPoint([oldPos, b, c], pos.x, pos.y)\n );\n }\n\n protected _getParentElement(spec: ITooltipSpec): HTMLElement {\n return spec.parentElement as any;\n }\n\n getTooltipContainer() {\n return this._container;\n }\n\n protected _initFromSpec() {\n this._option = this._getDefaultOption();\n // 为方法加防抖\n this.changeTooltip = this._throttle(this._changeTooltip) as any;\n this.changeTooltipPosition = this._throttle(this._changeTooltipPosition) as any;\n }\n\n reInit() {\n this._initFromSpec();\n }\n}\n"]}
|
|
1
|
+
{"version":3,"sources":["../src/plugin/components/tooltip-handler/base.ts"],"names":[],"mappings":"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","file":"base.js","sourcesContent":["import { DEFAULT_CHART_WIDTH, DEFAULT_CHART_HEIGHT } from '../../../constant/base';\nimport type { Options } from './constants';\n// eslint-disable-next-line no-duplicate-imports\nimport { DEFAULT_OPTIONS } from './constants';\nimport type { Maybe, IPoint, ILayoutPoint, RenderMode } from '../../../typings';\n// eslint-disable-next-line no-duplicate-imports\nimport { TooltipPositionMode } from '../../../typings/tooltip/position';\n// eslint-disable-next-line no-duplicate-imports\nimport { isTrueBrowser } from '../../../util/env';\nimport type {\n TooltipData,\n IToolTipActual,\n TooltipActiveType,\n ITooltipHandler,\n ITooltipPattern,\n ITooltipPositionActual,\n ITooltipPositionPattern\n} from '../../../typings/tooltip';\n// eslint-disable-next-line no-duplicate-imports\nimport type { TooltipFixedPosition } from '../../../typings/tooltip';\nimport type { BaseEventParams } from '../../../event/interface';\nimport { getTooltipPatternValue, getScale } from './utils/common';\nimport { getActualTooltipPositionValue, getHorizontalPositionType, getVerticalPositionType } from './utils/position';\nimport { getShowContent } from './utils/compose';\nimport { getTooltipSpecForShow } from './utils/get-spec';\nimport type { ISeries } from '../../../series/interface';\nimport type { IGroup } from '@visactor/vrender-core';\nimport type { AABBBounds } from '@visactor/vutils';\n// eslint-disable-next-line no-duplicate-imports\nimport {\n isNumber,\n isObject,\n isValidNumber,\n isValid,\n throttle,\n isNil,\n polygonContainPoint,\n pointInRect\n} from '@visactor/vutils';\nimport type { IElement } from '@visactor/vgrammar-core';\nimport type { ILayoutModel, IModel } from '../../../model/interface';\nimport type { Compiler } from '../../../compile/compiler';\nimport type { IContainerSize } from '@visactor/vrender-components';\nimport { getTooltipAttributes } from './utils/attribute';\nimport type { DimensionEventParams } from '../../../event/events/dimension/interface';\nimport type { IChartOption } from '../../../chart/interface';\nimport type {\n ITooltipSpec,\n Tooltip,\n TooltipActualTitleContent,\n TooltipHandlerParams\n} from '../../../component/tooltip';\n// eslint-disable-next-line no-duplicate-imports\nimport { TooltipResult } from '../../../component/tooltip';\nimport type { IComponentPlugin, IComponentPluginService } from '../interface';\nimport { BasePlugin } from '../../base/base-plugin';\nimport type { ITooltipAttributes } from './interface';\n\ntype ChangeTooltipFunc = (\n visible: boolean,\n params: TooltipHandlerParams,\n changePositionOnly?: boolean,\n activeType?: TooltipActiveType,\n data?: TooltipData\n) => TooltipResult;\n\ntype ChangeTooltipPositionFunc = (\n changePositionOnly: boolean,\n data: TooltipData,\n params: TooltipHandlerParams\n) => TooltipResult;\n\n/**\n * The tooltip handler class.\n */\nexport abstract class BaseTooltipHandler extends BasePlugin implements ITooltipHandler, IComponentPlugin {\n static readonly pluginType: 'component';\n static readonly specKey = 'tooltip';\n\n readonly type: string;\n\n /** 是否可见 */\n protected _visible = true;\n\n // protected _style: ITooltipStyle = {};\n\n protected _option: Options;\n\n protected _chartOption: IChartOption;\n\n protected _env: RenderMode;\n public get env() {\n return this._env;\n }\n\n protected _component: Tooltip;\n protected _attributes?: ITooltipAttributes | null = null;\n\n protected _chartContainer: Maybe<HTMLElement>;\n protected _compiler: Compiler;\n\n protected _cacheViewSpec: ITooltipSpec | undefined;\n protected _cacheActualTooltip: IToolTipActual | undefined;\n\n protected _isTooltipPaused: boolean;\n protected _isPointerEscaped: boolean;\n protected _cachePointerTimer: number;\n protected _cachePointerPosition: ILayoutPoint;\n protected _cacheTooltipPosition: ILayoutPoint;\n protected _cacheTooltipSize: IContainerSize;\n\n // tooltip 容器\n protected _container!: Maybe<IGroup | HTMLElement>;\n\n protected _isReleased: boolean = false;\n\n onAdd(service: IComponentPluginService<any>): void {\n super.onAdd(service);\n const component = service.component as Tooltip;\n this._component = component;\n this._chartOption = component.getOption() as any;\n this._env = this._chartOption.mode;\n this._chartContainer = this._chartOption.globalInstance.getContainer();\n this._compiler = component.getCompiler();\n this._initFromSpec();\n }\n\n showTooltip = (activeType: TooltipActiveType, data: TooltipData, params: TooltipHandlerParams) => {\n let changePositionOnly = !!params.changePositionOnly;\n if (!params.changePositionOnly || this._cacheActualTooltip?.activeType !== activeType) {\n changePositionOnly = false;\n this._clearCacheOfContent();\n }\n\n if (changePositionOnly && this._cacheViewSpec && this._cacheActualTooltip) {\n return this.changeTooltipPosition(changePositionOnly, data, params);\n }\n return this.changeTooltip(true, params, changePositionOnly, activeType, data);\n };\n\n /** 改变 tooltip 内容和位置(带 throttle 版本),返回是否遇到异常 */\n protected changeTooltip: ChangeTooltipFunc;\n\n /** 改变 tooltip 内容和位置(不带 throttle 版本),返回是否遇到异常 */\n protected _changeTooltip: ChangeTooltipFunc = (\n visible: boolean,\n params: TooltipHandlerParams,\n changePositionOnly?: boolean,\n activeType?: TooltipActiveType,\n data?: TooltipData\n ) => {\n const tooltipSpec = this._component.getSpec() as ITooltipSpec;\n if (this._isReleased || !tooltipSpec) {\n return TooltipResult.failed;\n }\n\n /** 关闭 tooltip */\n if (!visible) {\n this._clearAllCache();\n\n /** 用户自定义逻辑 */\n if (tooltipSpec.handler) {\n return tooltipSpec.handler.hideTooltip?.(params) ?? TooltipResult.success;\n }\n /** 默认逻辑 */\n this._updateTooltip(false, params);\n return TooltipResult.success;\n }\n\n if (isNil(activeType) || isNil(data)) {\n return TooltipResult.failed;\n }\n\n /** spec 预处理 */\n let spec: ITooltipSpec | undefined;\n if (changePositionOnly && this._cacheViewSpec) {\n spec = this._cacheViewSpec;\n } else {\n spec = getTooltipSpecForShow(\n activeType!,\n tooltipSpec,\n (params as BaseEventParams).model as ISeries,\n (params as DimensionEventParams).dimensionInfo\n );\n this._cacheViewSpec = spec;\n }\n\n if (spec.visible === false) {\n return TooltipResult.failed;\n }\n\n /** 用户自定义逻辑 */\n if (spec.handler) {\n return spec.handler.showTooltip?.(activeType!, data!, params) ?? TooltipResult.success;\n }\n\n /** 默认逻辑 */\n const pattern = spec[activeType!] as ITooltipPattern;\n if (!pattern) {\n return TooltipResult.failed;\n }\n\n // 合成 tooltip 内容\n let actualTooltip: IToolTipActual | undefined;\n if (changePositionOnly && this._cacheActualTooltip) {\n actualTooltip = this._cacheActualTooltip;\n } else {\n actualTooltip = this._getActualTooltipContent(pattern, data!, params);\n actualTooltip.title = pattern.updateTitle?.(actualTooltip.title, data, params) ?? actualTooltip.title;\n actualTooltip.content = pattern.updateContent?.(actualTooltip.content, data, params) ?? actualTooltip.content;\n }\n\n // 判断 tooltip 是否为空\n if (isNil(actualTooltip.title?.key) && isNil(actualTooltip.title?.value) && !actualTooltip.content?.length) {\n return TooltipResult.failed;\n }\n\n this._cacheActualTooltip = actualTooltip;\n return this._changeTooltipPosition(!!changePositionOnly, data!, params);\n };\n\n /** 改变 tooltip 位置(带 throttle 版本),返回是否遇到异常 */\n protected changeTooltipPosition: ChangeTooltipPositionFunc;\n\n /** 改变 tooltip 位置(不带 throttle 版本),返回是否遇到异常 */\n protected _changeTooltipPosition: ChangeTooltipPositionFunc = (\n changePositionOnly: boolean,\n data: TooltipData,\n params: TooltipHandlerParams\n ) => {\n if (this._isReleased) {\n return TooltipResult.failed;\n }\n\n const event = params.event as MouseEvent;\n const spec = this._cacheViewSpec;\n const actualTooltip = this._cacheActualTooltip;\n if (!spec || !actualTooltip) {\n return TooltipResult.failed;\n }\n\n if (spec.enterable) {\n if (!this._isPointerEscaped && this._isPointerMovingToTooltip(params)) {\n if (!this._isTooltipPaused) {\n this._isTooltipPaused = true;\n this._cachePointerTimer = setTimeout(() => {\n this._isPointerEscaped = true;\n }, 300) as unknown as number;\n }\n return TooltipResult.success;\n }\n this._isTooltipPaused = false;\n this._isPointerEscaped = false;\n clearTimeout(this._cachePointerTimer);\n this._cachePointerPosition = this._getPointerPositionRelativeToTooltipParent(params);\n }\n\n const activeType = actualTooltip.activeType;\n\n /** 用户自定义逻辑 */\n if (spec.handler) {\n return spec.handler.showTooltip?.(activeType, data, params) ?? TooltipResult.success;\n }\n\n /** 默认逻辑 */\n const pattern = spec[activeType];\n if (!pattern) {\n return TooltipResult.failed;\n }\n\n // 计算 tooltip 位置\n const position = this._getActualTooltipPosition(\n actualTooltip,\n params,\n this._getTooltipBoxSize(actualTooltip, changePositionOnly)\n );\n actualTooltip.position = position;\n if (pattern.updatePosition) {\n actualTooltip.position = pattern.updatePosition(actualTooltip.position, data, params);\n }\n\n // 判断 tooltip 可见性\n let tooltipVisible = pattern?.visible !== false;\n if (\n !data ||\n event.type === 'pointerout' ||\n !actualTooltip.visible ||\n (!actualTooltip.title && !actualTooltip.content)\n ) {\n tooltipVisible = false;\n }\n\n this._updateTooltip(\n tooltipVisible,\n {\n ...params,\n changePositionOnly\n },\n actualTooltip\n );\n return TooltipResult.success;\n };\n\n hideTooltip(params: TooltipHandlerParams): TooltipResult {\n return this.changeTooltip(false, params);\n }\n\n release(): void {\n this._clearAllCache();\n const spec = this._component.getSpec() ?? {};\n /** 用户自定义逻辑 */\n if (spec.handler) {\n spec.handler.release?.();\n return;\n }\n /** 默认逻辑 */\n this._removeTooltip();\n\n this._isReleased = true;\n }\n\n protected _clearAllCache() {\n this._clearCacheOfContent();\n this._clearCacheOfPosition();\n }\n\n protected _clearCacheOfContent() {\n this._cacheViewSpec = undefined;\n this._cacheActualTooltip = undefined;\n }\n\n protected _clearCacheOfPosition() {\n this._isTooltipPaused = false;\n this._isPointerEscaped = false;\n clearTimeout(this._cachePointerTimer);\n this._cachePointerTimer = -1;\n this._cachePointerPosition = undefined;\n this._cacheTooltipPosition = undefined;\n this._cacheTooltipSize = undefined;\n }\n\n /* -----需要子类继承的方法开始----- */\n\n protected abstract _updateTooltip(visible: boolean, params: TooltipHandlerParams, domData?: IToolTipActual): void;\n protected abstract _removeTooltip(): void;\n\n /* -----需要子类继承的方法结束----- */\n\n protected _throttle(callback: any) {\n const tooltipSpec = this._component.getSpec();\n let wait: number;\n if (isNumber(tooltipSpec.throttleInterval)) {\n wait = tooltipSpec.throttleInterval;\n } else {\n if (tooltipSpec.renderMode !== 'html' || !tooltipSpec.transitionDuration) {\n wait = 10;\n } else {\n wait = 50;\n }\n }\n return throttle(callback, wait);\n }\n\n protected _getDefaultOption(): Options {\n const { offset } = this._component.getSpec();\n return {\n ...DEFAULT_OPTIONS,\n offsetX: offset?.x ?? DEFAULT_OPTIONS.offsetX,\n offsetY: offset?.y ?? DEFAULT_OPTIONS.offsetY\n };\n }\n\n /**\n * 计算实际的 tooltip 内容\n * @param pattern\n * @param data\n * @param event\n */\n protected _getActualTooltipContent = (\n pattern: ITooltipPattern,\n data: TooltipData,\n params: TooltipHandlerParams\n ): IToolTipActual => {\n // 可见性\n const patternVisible = getTooltipPatternValue(pattern.visible, data, params);\n\n // 数据\n let tooltipContent: TooltipActualTitleContent | null = null;\n tooltipContent = getShowContent(pattern, data, params);\n\n const actualTooltip: IToolTipActual = {\n ...tooltipContent,\n visible: isValid(tooltipContent) ? patternVisible !== false : false, // 最终展示数据为 null 则不展示\n activeType: pattern.activeType,\n data\n };\n\n return actualTooltip;\n };\n\n /**\n * 计算实际的 tooltip 位置\n */\n protected _getActualTooltipPosition = (\n actualTooltip: IToolTipActual,\n params: TooltipHandlerParams,\n tooltipBoxSize: IContainerSize | undefined\n ): ITooltipPositionActual => {\n const event = params.event as MouseEvent;\n\n const invalidPosition = {\n x: Infinity,\n y: Infinity\n };\n\n const { offsetX, offsetY } = this._option;\n const tooltipSpec = this._cacheViewSpec;\n if (!tooltipSpec) {\n this._cacheTooltipPosition = undefined;\n return invalidPosition;\n }\n\n const { activeType, data } = actualTooltip;\n const pattern = tooltipSpec[activeType];\n const position = getTooltipPatternValue(pattern.position, data, params);\n const positionMode = getTooltipPatternValue(pattern.positionMode, data, params);\n const tooltipParentElement = this._getParentElement(tooltipSpec);\n const { width: tooltipBoxWidth = 0, height: tooltipBoxHeight = 0 } = tooltipBoxSize ?? {};\n\n const isCanvas = tooltipSpec.renderMode === 'canvas';\n const canvasRect = params?.chart?.getCanvasRect();\n const canvasWidth = canvasRect?.width ?? DEFAULT_CHART_WIDTH;\n const canvasHeight = canvasRect?.height ?? DEFAULT_CHART_HEIGHT;\n let isFixedPosition = false;\n\n const containerSize = {\n width: 0,\n height: 0\n };\n let relativePosOffset = { x: 0, y: 0 };\n let tooltipParentElementRect: IPoint | DOMRect = { x: 0, y: 0 };\n let chartElementScale = 1;\n let tooltipParentElementScale = 1;\n\n if (isTrueBrowser(this._env) && !tooltipSpec.confine) {\n // 只有在 browser 模式下才可以获取到 window 对象\n containerSize.width = window.innerWidth;\n containerSize.height = window.innerHeight;\n\n if (!isCanvas) {\n tooltipParentElementRect = tooltipParentElement?.getBoundingClientRect() ?? invalidPosition;\n const chartElement = (this._compiler.getCanvas() ?? this._chartContainer) as HTMLElement;\n const chartElementRect = chartElement?.getBoundingClientRect();\n relativePosOffset = {\n x: chartElementRect.x - tooltipParentElementRect.x,\n y: chartElementRect.y - tooltipParentElementRect.y\n };\n chartElementScale = getScale(chartElement, chartElementRect);\n tooltipParentElementScale = getScale(tooltipParentElement, tooltipParentElementRect as DOMRect);\n }\n } else {\n containerSize.width = canvasWidth;\n containerSize.height = canvasHeight;\n }\n const tooltipSizeScale = tooltipParentElementScale / chartElementScale;\n\n /* 一、计算 left、top、right、bottom */\n let left: number | undefined;\n let top: number | undefined;\n let right: number | undefined;\n let bottom: number | undefined;\n if (isObject(position)) {\n const { left: posLeft, right: posRight, top: posTop, bottom: posBottom } = position as ITooltipPositionPattern;\n left = getActualTooltipPositionValue(posLeft, event);\n top = getActualTooltipPositionValue(posTop, event);\n right = getActualTooltipPositionValue(posRight, event);\n bottom = getActualTooltipPositionValue(posBottom, event);\n } else if (\n isValid(position) &&\n positionMode !== TooltipPositionMode.pointer &&\n actualTooltip.activeType === 'mark'\n ) {\n isFixedPosition = true;\n const element = params.item as IElement;\n const model = params.model as IModel;\n const bounds = element?.getBounds() as AABBBounds;\n const startPoint = (<ILayoutModel>(<unknown>model))?.getLayoutStartPoint();\n if (bounds && startPoint) {\n let { x1, y1, x2, y2 } = bounds;\n x1 += startPoint.x;\n x2 += startPoint.x;\n y1 += startPoint.y;\n y2 += startPoint.y;\n switch (getHorizontalPositionType(position)) {\n case 'left':\n left = x1 - tooltipBoxWidth * tooltipSizeScale - offsetX;\n break;\n case 'right':\n left = x2 + offsetX;\n break;\n case 'middle':\n left = (x1 + x2) / 2 - (tooltipBoxWidth * tooltipSizeScale) / 2;\n break;\n }\n switch (getVerticalPositionType(position)) {\n case 'top':\n top = y1 - tooltipBoxHeight * tooltipSizeScale - offsetY;\n break;\n case 'bottom':\n top = y2 + offsetY;\n break;\n case 'middle':\n top = (y1 + y2) / 2 - (tooltipBoxHeight * tooltipSizeScale) / 2;\n break;\n }\n }\n }\n\n /* 二、换算成 x 和 y */\n let x: number;\n let y: number;\n\n const { canvasX, canvasY } = event as any;\n if (isValidNumber(left)) {\n x = left;\n } else if (isValidNumber(right)) {\n x = canvasWidth - tooltipBoxWidth * tooltipSizeScale - right;\n } else {\n const x0 = canvasX;\n switch (getHorizontalPositionType(position as TooltipFixedPosition, 'right')) {\n case 'middle':\n x = x0 - (tooltipBoxWidth * tooltipSizeScale) / 2;\n break;\n case 'left':\n x = x0 - tooltipBoxWidth * tooltipSizeScale - offsetX;\n break;\n case 'right':\n x = x0 + offsetX;\n break;\n }\n }\n if (isValidNumber(top)) {\n y = top;\n } else if (isValidNumber(bottom)) {\n y = canvasHeight - tooltipBoxHeight * tooltipSizeScale - bottom;\n } else {\n const y0 = canvasY;\n switch (getVerticalPositionType(position as TooltipFixedPosition, 'bottom')) {\n case 'middle':\n y = y0 - (tooltipBoxHeight * tooltipSizeScale) / 2;\n break;\n case 'top':\n y = y0 - tooltipBoxHeight * tooltipSizeScale - offsetY;\n break;\n case 'bottom':\n y = y0 + offsetY;\n break;\n }\n }\n\n x *= chartElementScale;\n y *= chartElementScale;\n if (isTrueBrowser(this._env)) {\n x += relativePosOffset.x;\n y += relativePosOffset.y;\n }\n x /= tooltipParentElementScale;\n y /= tooltipParentElementScale;\n\n /* 三、确保tooltip在视区内 */\n const { width: containerWidth, height: containerHeight } = containerSize;\n\n const isLeftOut = () => x * tooltipParentElementScale + tooltipParentElementRect.x < 0;\n const isRightOut = () =>\n (x + tooltipBoxWidth) * tooltipParentElementScale + tooltipParentElementRect.x > containerWidth;\n const isTopOut = () => y * tooltipParentElementScale + tooltipParentElementRect.y < 0;\n const isBottomOut = () =>\n (y + tooltipBoxHeight) * tooltipParentElementScale + tooltipParentElementRect.y > containerHeight;\n\n const detectLeftFirst = () => {\n if (isLeftOut()) {\n // 位置不超出视区左界\n if (isFixedPosition) {\n x = -tooltipParentElementRect.x / tooltipParentElementScale;\n } else {\n if (getHorizontalPositionType(position as TooltipFixedPosition, 'right') === 'middle') {\n x += offsetX + tooltipBoxWidth / 2;\n } else {\n x += offsetX * 2 + tooltipBoxWidth;\n }\n }\n }\n };\n const detectLeftLast = () => {\n if (isLeftOut()) {\n // 位置不超出视区左界\n x = -tooltipParentElementRect.x / tooltipParentElementScale;\n }\n };\n const detectRightFirst = () => {\n if (isRightOut()) {\n // 位置不超出视区右界\n if (isFixedPosition) {\n x = (containerWidth - tooltipParentElementRect.x) / tooltipParentElementScale - tooltipBoxWidth;\n } else {\n if (getHorizontalPositionType(position as TooltipFixedPosition, 'right') === 'middle') {\n x -= offsetX + tooltipBoxWidth / 2;\n } else {\n x -= offsetX * 2 + tooltipBoxWidth;\n }\n }\n }\n };\n const detectRightLast = () => {\n if (isRightOut()) {\n // 位置不超出视区右界\n x = (containerWidth - tooltipParentElementRect.x) / tooltipParentElementScale - tooltipBoxWidth;\n }\n };\n const detectTopFirst = () => {\n if (isTopOut()) {\n // 位置不超出视区上界\n if (isFixedPosition) {\n y = -tooltipParentElementRect.y / tooltipParentElementScale;\n } else {\n if (getVerticalPositionType(position as TooltipFixedPosition, 'bottom') === 'middle') {\n y += offsetY + tooltipBoxHeight / 2;\n } else {\n y += offsetY * 2 + tooltipBoxHeight;\n }\n }\n }\n };\n const detectTopLast = () => {\n if (isTopOut()) {\n // 位置不超出视区上界\n y = 0 - tooltipParentElementRect.y / tooltipParentElementScale;\n }\n };\n const detectBottomFirst = () => {\n if (isBottomOut()) {\n // 位置不超出视区下界\n if (isFixedPosition) {\n y = (containerHeight - tooltipParentElementRect.y) / tooltipParentElementScale - tooltipBoxHeight;\n } else {\n if (getVerticalPositionType(position as TooltipFixedPosition, 'bottom') === 'middle') {\n y -= offsetY + tooltipBoxHeight / 2;\n } else {\n y -= offsetY * 2 + tooltipBoxHeight;\n }\n }\n }\n };\n const detectBottomLast = () => {\n if (isBottomOut()) {\n // 位置不超出视区下界\n y = (containerHeight - tooltipParentElementRect.y) / tooltipParentElementScale - tooltipBoxHeight;\n }\n };\n\n // 处理左右\n switch (getHorizontalPositionType(position as TooltipFixedPosition, 'right')) {\n case 'middle':\n if (isLeftOut()) {\n detectLeftFirst();\n detectRightLast();\n } else {\n detectRightFirst();\n detectLeftLast();\n }\n break;\n case 'left':\n detectLeftFirst();\n detectRightLast();\n break;\n case 'right':\n detectRightFirst();\n detectLeftLast();\n break;\n }\n // 处理上下\n switch (getVerticalPositionType(position as TooltipFixedPosition, 'bottom')) {\n case 'middle':\n if (isTopOut()) {\n detectTopFirst();\n detectBottomLast();\n } else {\n detectBottomFirst();\n detectTopLast();\n }\n break;\n case 'top':\n detectTopFirst();\n detectBottomLast();\n break;\n case 'bottom':\n detectBottomFirst();\n detectTopLast();\n break;\n }\n\n const result = { x, y };\n this._cacheTooltipPosition = result;\n this._cacheTooltipSize = { width: tooltipBoxWidth, height: tooltipBoxHeight };\n return result;\n };\n\n // 计算 tooltip 内容区域的宽高,并缓存结果\n protected _getTooltipBoxSize(actualTooltip: IToolTipActual, changePositionOnly: boolean): IContainerSize | undefined {\n if (!changePositionOnly || isNil(this._attributes)) {\n const chartTheme = this._chartOption?.getTheme() ?? {};\n this._attributes = getTooltipAttributes(actualTooltip, this._component.getSpec(), chartTheme);\n }\n const { panel, panelDomHeight } = this._attributes ?? {};\n return {\n width: panel?.width,\n height: panelDomHeight ?? panel?.height\n };\n }\n\n protected _getPointerPositionRelativeToTooltipParent(params: TooltipHandlerParams) {\n let { canvasX: x, canvasY: y } = params.event;\n\n const invalidPosition = {\n x: Infinity,\n y: Infinity\n };\n\n const tooltipSpec = this._cacheViewSpec;\n const isCanvas = tooltipSpec.renderMode === 'canvas';\n const tooltipParentElement = this._getParentElement(tooltipSpec);\n\n let relativePosOffset = { x: 0, y: 0 };\n let tooltipParentElementRect: IPoint | DOMRect = { x: 0, y: 0 };\n let chartElementScale = 1;\n let tooltipParentElementScale = 1;\n\n if (isTrueBrowser(this._env) && !tooltipSpec.confine) {\n if (!isCanvas) {\n tooltipParentElementRect = tooltipParentElement?.getBoundingClientRect() ?? invalidPosition;\n const chartElement = (this._compiler.getCanvas() ?? this._chartContainer) as HTMLElement;\n const chartElementRect = chartElement?.getBoundingClientRect();\n relativePosOffset = {\n x: chartElementRect.x - tooltipParentElementRect.x,\n y: chartElementRect.y - tooltipParentElementRect.y\n };\n chartElementScale = getScale(chartElement, chartElementRect);\n tooltipParentElementScale = getScale(tooltipParentElement, tooltipParentElementRect as DOMRect);\n }\n }\n\n x *= chartElementScale;\n y *= chartElementScale;\n if (isTrueBrowser(this._env)) {\n x += relativePosOffset.x;\n y += relativePosOffset.y;\n }\n x /= tooltipParentElementScale;\n y /= tooltipParentElementScale;\n return { x, y };\n }\n\n protected _isPointerMovingToTooltip(params: TooltipHandlerParams) {\n if (!this._cacheTooltipPosition || !this._cacheTooltipSize || !this._cachePointerPosition) {\n return false;\n }\n const { width: tooltipWidth, height: tooltipHeight } = this._cacheTooltipSize;\n const { x: tooltipX = 0, y: tooltipY } = this._cacheTooltipPosition;\n\n const pos = this._getPointerPositionRelativeToTooltipParent(params);\n\n if (\n pointInRect(\n pos,\n {\n x1: tooltipX,\n y1: tooltipY,\n x2: tooltipX + tooltipWidth,\n y2: tooltipY + tooltipHeight\n },\n false\n )\n ) {\n return true;\n }\n\n // 确定 tooltip 四端点坐标\n const a = { x: tooltipX, y: tooltipY };\n const b = { x: a.x + tooltipWidth, y: a.y };\n const c = { x: a.x, y: a.y + tooltipHeight };\n const d = { x: b.x, y: c.y };\n const oldPos = this._cachePointerPosition;\n\n return (\n polygonContainPoint([oldPos, a, b], pos.x, pos.y) ||\n polygonContainPoint([oldPos, c, d], pos.x, pos.y) ||\n polygonContainPoint([oldPos, a, d], pos.x, pos.y) ||\n polygonContainPoint([oldPos, b, c], pos.x, pos.y)\n );\n }\n\n protected _getParentElement(spec: ITooltipSpec): HTMLElement {\n return spec.parentElement as any;\n }\n\n getTooltipContainer() {\n return this._container;\n }\n\n protected _initFromSpec() {\n this._option = this._getDefaultOption();\n // 为方法加防抖\n this.changeTooltip = this._throttle(this._changeTooltip) as any;\n this.changeTooltipPosition = this._throttle(this._changeTooltipPosition) as any;\n }\n\n reInit() {\n this._initFromSpec();\n }\n}\n"]}
|
|
@@ -39,27 +39,32 @@ class ContentColumnModel extends base_tooltip_model_1.BaseTooltipModel {
|
|
|
39
39
|
var _a, _b, _c, _d;
|
|
40
40
|
const tooltipStyle = this._option.getTooltipStyle();
|
|
41
41
|
super.setStyle((0, merge_spec_1.mergeSpec)({}, style_constants_1.defaultContentColumnStyle, tooltipStyle.content, this._getContentColumnStyle()));
|
|
42
|
-
const renderContent = null !== (_b = null === (_a = this._option.getTooltipActual()) || void 0 === _a ? void 0 : _a.content) && void 0 !== _b ? _b : [], contentAttributes = null !== (_d = null === (_c = this._option.getTooltipAttributes()) || void 0 === _c ? void 0 : _c.content) && void 0 !== _d ? _d : []
|
|
42
|
+
const renderContent = null !== (_b = null === (_a = this._option.getTooltipActual()) || void 0 === _a ? void 0 : _a.content) && void 0 !== _b ? _b : [], contentAttributes = null !== (_d = null === (_c = this._option.getTooltipAttributes()) || void 0 === _c ? void 0 : _c.content) && void 0 !== _d ? _d : [], getKeyItemStyle = (line, i) => {
|
|
43
|
+
var _a, _b;
|
|
44
|
+
const {key: key, isKeyAdaptive: isKeyAdaptive} = line, {height: height} = contentAttributes[i], {keyColumn: keyColumn} = tooltipStyle, style = (0,
|
|
45
|
+
merge_spec_1.mergeSpec)({}, isKeyAdaptive ? style_constants_1.defaultAdaptiveKeyStyle : style_constants_1.defaultKeyStyle, Object.assign(Object.assign(Object.assign({
|
|
46
|
+
height: (0, utils_1.getPixelPropertyStr)(height)
|
|
47
|
+
}, defaultLabelStyle), keyColumn.common), null === (_a = keyColumn.items) || void 0 === _a ? void 0 : _a[i]));
|
|
48
|
+
return (0, vutils_1.isString)(key) && "" !== (null === (_b = null == key ? void 0 : key.trim) || void 0 === _b ? void 0 : _b.call(key)) || (0,
|
|
49
|
+
vutils_1.isNumber)(key) || style.visibility ? style.visibility = "visible" : style.visibility = "hidden",
|
|
50
|
+
style;
|
|
51
|
+
};
|
|
43
52
|
renderContent.forEach(((line, i) => {
|
|
44
|
-
var _a
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
childStyle = (0, merge_spec_1.mergeSpec)({}, isKeyAdaptive ? style_constants_1.defaultAdaptiveKeyStyle : style_constants_1.defaultKeyStyle, Object.assign(Object.assign(Object.assign({
|
|
53
|
+
var _a;
|
|
54
|
+
"key-box" === this.className ? this.children[i].setStyle(getKeyItemStyle(line, i)) : "value-box" === this.className ? this.children[i].setStyle(((line, i) => {
|
|
55
|
+
var _a;
|
|
56
|
+
const {height: height} = contentAttributes[i], {valueColumn: valueColumn} = tooltipStyle;
|
|
57
|
+
return (0, merge_spec_1.mergeSpec)({}, style_constants_1.defaultValueStyle, Object.assign(Object.assign(Object.assign({
|
|
50
58
|
height: (0, utils_1.getPixelPropertyStr)(height)
|
|
51
|
-
}, defaultLabelStyle),
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
height: (0, utils_1.getPixelPropertyStr)(height + (i < renderContent.length - 1 ? spaceRow : 0))
|
|
61
|
-
}, tooltipStyle.shapeColumn.common), null === (_d = tooltipStyle.shapeColumn.items) || void 0 === _d ? void 0 : _d[i])),
|
|
62
|
-
null === (_e = this.children[i]) || void 0 === _e || _e.setStyle(childStyle, this._getShapeSvgOption(line, i)));
|
|
59
|
+
}, defaultLabelStyle), valueColumn.common), null === (_a = valueColumn.items) || void 0 === _a ? void 0 : _a[i]));
|
|
60
|
+
})(0, i)) : "shape-box" === this.className && (null === (_a = this.children[i]) || void 0 === _a || _a.setStyle(((line, i) => {
|
|
61
|
+
var _a, _b, _c, _d;
|
|
62
|
+
const {height: height} = contentAttributes[i], {shapeColumn: shapeColumn} = tooltipStyle, keyStyle = getKeyItemStyle(line, i), paddingTop = `calc((${null !== (_b = null !== (_a = keyStyle.lineHeight) && void 0 !== _a ? _a : keyStyle.fontSize) && void 0 !== _b ? _b : "18px"} - ${null !== (_c = shapeColumn.width) && void 0 !== _c ? _c : "8px"}) / 2)`;
|
|
63
|
+
return (0, merge_spec_1.mergeSpec)({}, style_constants_1.defaultShapeStyle, Object.assign(Object.assign({
|
|
64
|
+
height: (0, utils_1.getPixelPropertyStr)(height),
|
|
65
|
+
paddingTop: paddingTop
|
|
66
|
+
}, shapeColumn.common), null === (_d = shapeColumn.items) || void 0 === _d ? void 0 : _d[i]));
|
|
67
|
+
})(line, i), this._getShapeSvgOption(line, i)));
|
|
63
68
|
}));
|
|
64
69
|
}
|
|
65
70
|
setContent() {
|
|
@@ -100,8 +105,9 @@ class ContentColumnModel extends base_tooltip_model_1.BaseTooltipModel {
|
|
|
100
105
|
}
|
|
101
106
|
}
|
|
102
107
|
_getShapeSvgOption(line, index) {
|
|
103
|
-
var _a, _b, _c
|
|
104
|
-
const tooltipStyle = this._option.getTooltipStyle(), shapeColumn = Object.assign(Object.assign({}, tooltipStyle.shapeColumn), null === (_a = tooltipStyle.shapeColumn.items) || void 0 === _a ? void 0 : _a[index])
|
|
108
|
+
var _a, _b, _c;
|
|
109
|
+
const tooltipStyle = this._option.getTooltipStyle(), shapeColumn = Object.assign(Object.assign({}, tooltipStyle.shapeColumn), null === (_a = tooltipStyle.shapeColumn.items) || void 0 === _a ? void 0 : _a[index]);
|
|
110
|
+
Object.assign(Object.assign({}, tooltipStyle.keyColumn), null === (_b = tooltipStyle.keyColumn.items) || void 0 === _b ? void 0 : _b[index]);
|
|
105
111
|
return {
|
|
106
112
|
hasShape: line.hasShape,
|
|
107
113
|
symbolType: line.shapeType,
|
|
@@ -110,7 +116,6 @@ class ContentColumnModel extends base_tooltip_model_1.BaseTooltipModel {
|
|
|
110
116
|
stroke: line.shapeStroke,
|
|
111
117
|
lineWidth: line.shapeLineWidth,
|
|
112
118
|
hollow: line.shapeHollow,
|
|
113
|
-
marginTop: `calc((${null !== (_e = null !== (_d = keyColumn.lineHeight) && void 0 !== _d ? _d : keyColumn.fontSize) && void 0 !== _e ? _e : "18px"} - ${null !== (_f = shapeColumn.width) && void 0 !== _f ? _f : "8px"}) / 2)`,
|
|
114
119
|
index: index
|
|
115
120
|
};
|
|
116
121
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../src/plugin/components/tooltip-handler/dom/model/content-column-model.ts"],"names":[],"mappings":"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","file":"content-column-model.js","sourcesContent":["import { isNumber, isString, toNumber } from '@visactor/vutils';\nimport {\n defaultKeyStyle,\n defaultContentColumnStyle,\n defaultValueStyle,\n defaultAdaptiveKeyStyle,\n defaultShapeStyle\n} from './style-constants';\nimport { BaseTooltipModel } from './base-tooltip-model';\nimport type { ITooltipModelOption } from './interface';\nimport type { IShapeSvgOption } from './shape-model';\n// eslint-disable-next-line no-duplicate-imports\nimport { ShapeModel } from './shape-model';\nimport { TextModel } from './text-model';\nimport { TOOLTIP_EMPTY_STRING } from '../../constants';\nimport { getPixelPropertyStr } from '../utils';\nimport type { IToolTipLineActual } from '../../../../../typings';\nimport { mergeSpec } from '../../../../../util/spec/merge-spec';\n\nexport type ContentColumnType = 'shape-box' | 'key-box' | 'value-box';\n\n/** 默认的标签样式,覆盖外界对这些属性的预先配置 */\nconst defaultLabelStyle: Partial<CSSStyleDeclaration> = {\n overflowWrap: 'normal',\n wordWrap: 'normal'\n};\n\nexport class ContentColumnModel extends BaseTooltipModel {\n readonly className: ContentColumnType;\n\n constructor(\n parent: BaseTooltipModel | HTMLElement,\n option: ITooltipModelOption,\n className: ContentColumnType,\n childIndex?: number\n ) {\n super(parent, option, childIndex);\n this.className = className;\n }\n\n init(): void {\n if (!this.product) {\n this.product = this.createElement('div', [this.className]);\n }\n const renderContent = this._option.getTooltipActual()?.content ?? [];\n\n if (this.className === 'shape-box' && !renderContent.some(c => c.hasShape && c.shapeType)) {\n // 当有一行配有形状的时候,其他行要对齐。如果没有一行配有形状,则删除所有的行\n Object.keys(this.children).forEach(key => {\n const i = toNumber(key);\n this.children[i].release();\n delete this.children[i];\n });\n } else {\n // 删除多余的行\n Object.keys(this.children).forEach(key => {\n const i = toNumber(key);\n if (i >= renderContent.length) {\n this.children[i].release();\n delete this.children[i];\n }\n });\n // 新增没有的行\n for (let i = 0; i < renderContent.length; i++) {\n if (!this.children[i]) {\n if (this.className === 'key-box' || this.className === 'value-box') {\n const text = new TextModel(this.product!, this._option, i);\n text.init([this.className.substring(0, this.className.indexOf('-'))], undefined, 'div');\n this.children[i] = text;\n } else if (this.className === 'shape-box') {\n const shape = new ShapeModel(this.product!, this._option, i);\n shape.init(['shape'], undefined, 'div');\n this.children[i] = shape;\n }\n }\n }\n }\n }\n\n setStyle() {\n const tooltipStyle = this._option.getTooltipStyle();\n\n super.setStyle(mergeSpec({}, defaultContentColumnStyle, tooltipStyle.content, this._getContentColumnStyle()));\n\n const renderContent = this._option.getTooltipActual()?.content ?? [];\n const contentAttributes = this._option.getTooltipAttributes()?.content ?? [];\n renderContent.forEach((line, i) => {\n let childStyle: any = {};\n const { height, spaceRow = 0 } = contentAttributes[i];\n if (this.className === 'key-box') {\n const { key, isKeyAdaptive } = line;\n childStyle = mergeSpec({}, isKeyAdaptive ? defaultAdaptiveKeyStyle : defaultKeyStyle, {\n height: getPixelPropertyStr(height),\n ...defaultLabelStyle,\n ...tooltipStyle.keyColumn.common,\n ...tooltipStyle.keyColumn.items?.[i]\n } as Partial<CSSStyleDeclaration>);\n const hasContent = (isString(key) && key?.trim?.() !== '') || isNumber(key);\n if (!hasContent && !childStyle.visibility) {\n childStyle.visibility = 'hidden';\n } else {\n childStyle.visibility = 'visible';\n }\n (this.children[i] as TextModel).setStyle(childStyle);\n } else if (this.className === 'value-box') {\n childStyle = mergeSpec({}, defaultValueStyle, {\n height: getPixelPropertyStr(height),\n ...defaultLabelStyle,\n ...tooltipStyle.valueColumn.common,\n ...tooltipStyle.valueColumn.items?.[i]\n } as Partial<CSSStyleDeclaration>);\n (this.children[i] as TextModel).setStyle(childStyle);\n } else if (this.className === 'shape-box') {\n childStyle = mergeSpec({}, defaultShapeStyle, {\n height: getPixelPropertyStr(height + (i < renderContent.length - 1 ? spaceRow : 0)),\n ...tooltipStyle.shapeColumn.common,\n ...tooltipStyle.shapeColumn.items?.[i]\n });\n (this.children[i] as ShapeModel)?.setStyle(childStyle, this._getShapeSvgOption(line, i));\n }\n });\n }\n\n setContent(): void {\n const renderContent = this._option.getTooltipActual()?.content ?? [];\n const contentAttributes = this._option.getTooltipAttributes()?.content ?? [];\n renderContent.forEach((line, i) => {\n let childContent: any;\n if (this.className === 'key-box') {\n const keyContent = line.key;\n if ((isString(keyContent) && keyContent?.trim?.() !== '') || isNumber(keyContent)) {\n childContent = keyContent;\n } else {\n childContent = TOOLTIP_EMPTY_STRING;\n }\n (this.children[i] as TextModel)?.setContent(childContent, contentAttributes[i].key?.multiLine);\n } else if (this.className === 'value-box') {\n const valueContent = line.value;\n if ((isString(valueContent) && valueContent?.trim?.() !== '') || isNumber(valueContent)) {\n childContent = valueContent;\n } else {\n childContent = TOOLTIP_EMPTY_STRING;\n }\n (this.children[i] as TextModel)?.setContent(childContent, contentAttributes[i].value?.multiLine);\n } else if (this.className === 'shape-box') {\n childContent = this._getShapeSvgOption(line, i);\n this.children[i]?.setContent(childContent);\n }\n });\n }\n\n protected _getContentColumnStyle() {\n const tooltipStyle = this._option.getTooltipStyle();\n\n switch (this.className) {\n case 'shape-box':\n const renderContent = this._option.getTooltipActual()?.content ?? [];\n return {\n ...tooltipStyle.shapeColumn,\n ...(this.className === 'shape-box' && !renderContent.some(c => c.hasShape && c.shapeType)\n ? { display: 'none' }\n : {})\n };\n case 'key-box':\n return tooltipStyle.keyColumn;\n case 'value-box':\n return tooltipStyle.valueColumn;\n }\n }\n\n protected _getShapeSvgOption(line: IToolTipLineActual, index: number): IShapeSvgOption {\n const tooltipStyle = this._option.getTooltipStyle();\n const shapeColumn = {\n ...tooltipStyle.shapeColumn,\n ...tooltipStyle.shapeColumn.items?.[index]\n };\n const keyColumn = {\n ...tooltipStyle.keyColumn,\n ...tooltipStyle.keyColumn.items?.[index]\n };\n return {\n hasShape: line.hasShape,\n symbolType: line.shapeType,\n size: shapeColumn.width,\n fill: line.shapeFill ?? line.shapeColor,\n stroke: line.shapeStroke,\n lineWidth: line.shapeLineWidth,\n hollow: line.shapeHollow,\n marginTop: `calc((${keyColumn.lineHeight ?? keyColumn.fontSize ?? '18px'} - ${shapeColumn.width ?? '8px'}) / 2)`,\n index\n } as IShapeSvgOption;\n }\n}\n"]}
|
|
1
|
+
{"version":3,"sources":["../src/plugin/components/tooltip-handler/dom/model/content-column-model.ts"],"names":[],"mappings":"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","file":"content-column-model.js","sourcesContent":["import { isNumber, isString, toNumber } from '@visactor/vutils';\nimport {\n defaultKeyStyle,\n defaultContentColumnStyle,\n defaultValueStyle,\n defaultAdaptiveKeyStyle,\n defaultShapeStyle\n} from './style-constants';\nimport { BaseTooltipModel } from './base-tooltip-model';\nimport type { ITooltipModelOption } from './interface';\nimport type { IShapeSvgOption } from './shape-model';\n// eslint-disable-next-line no-duplicate-imports\nimport { ShapeModel } from './shape-model';\nimport { TextModel } from './text-model';\nimport { TOOLTIP_EMPTY_STRING } from '../../constants';\nimport { getPixelPropertyStr } from '../utils';\nimport type { IToolTipLineActual } from '../../../../../typings';\nimport { mergeSpec } from '../../../../../util/spec/merge-spec';\n\nexport type ContentColumnType = 'shape-box' | 'key-box' | 'value-box';\n\n/** 默认的标签样式,覆盖外界对这些属性的预先配置 */\nconst defaultLabelStyle: Partial<CSSStyleDeclaration> = {\n overflowWrap: 'normal',\n wordWrap: 'normal'\n};\n\nexport class ContentColumnModel extends BaseTooltipModel {\n readonly className: ContentColumnType;\n\n constructor(\n parent: BaseTooltipModel | HTMLElement,\n option: ITooltipModelOption,\n className: ContentColumnType,\n childIndex?: number\n ) {\n super(parent, option, childIndex);\n this.className = className;\n }\n\n init(): void {\n if (!this.product) {\n this.product = this.createElement('div', [this.className]);\n }\n const renderContent = this._option.getTooltipActual()?.content ?? [];\n\n if (this.className === 'shape-box' && !renderContent.some(c => c.hasShape && c.shapeType)) {\n // 当有一行配有形状的时候,其他行要对齐。如果没有一行配有形状,则删除所有的行\n Object.keys(this.children).forEach(key => {\n const i = toNumber(key);\n this.children[i].release();\n delete this.children[i];\n });\n } else {\n // 删除多余的行\n Object.keys(this.children).forEach(key => {\n const i = toNumber(key);\n if (i >= renderContent.length) {\n this.children[i].release();\n delete this.children[i];\n }\n });\n // 新增没有的行\n for (let i = 0; i < renderContent.length; i++) {\n if (!this.children[i]) {\n if (this.className === 'key-box' || this.className === 'value-box') {\n const text = new TextModel(this.product!, this._option, i);\n text.init([this.className.substring(0, this.className.indexOf('-'))], undefined, 'div');\n this.children[i] = text;\n } else if (this.className === 'shape-box') {\n const shape = new ShapeModel(this.product!, this._option, i);\n shape.init(['shape'], undefined, 'div');\n this.children[i] = shape;\n }\n }\n }\n }\n }\n\n setStyle() {\n const tooltipStyle = this._option.getTooltipStyle();\n\n super.setStyle(mergeSpec({}, defaultContentColumnStyle, tooltipStyle.content, this._getContentColumnStyle()));\n\n const renderContent = this._option.getTooltipActual()?.content ?? [];\n const contentAttributes = this._option.getTooltipAttributes()?.content ?? [];\n\n const getKeyItemStyle = (line: IToolTipLineActual, i: number): Partial<CSSStyleDeclaration> => {\n const { key, isKeyAdaptive } = line;\n const { height } = contentAttributes[i];\n const { keyColumn } = tooltipStyle;\n const style: Partial<CSSStyleDeclaration> = mergeSpec(\n {},\n isKeyAdaptive ? defaultAdaptiveKeyStyle : defaultKeyStyle,\n {\n height: getPixelPropertyStr(height),\n ...defaultLabelStyle,\n ...keyColumn.common,\n ...keyColumn.items?.[i]\n } as Partial<CSSStyleDeclaration>\n );\n const hasContent = (isString(key) && key?.trim?.() !== '') || isNumber(key);\n if (!hasContent && !style.visibility) {\n style.visibility = 'hidden';\n } else {\n style.visibility = 'visible';\n }\n return style;\n };\n\n const getValueItemStyle = (line: IToolTipLineActual, i: number): Partial<CSSStyleDeclaration> => {\n const { height } = contentAttributes[i];\n const { valueColumn } = tooltipStyle;\n const style: Partial<CSSStyleDeclaration> = mergeSpec({}, defaultValueStyle, {\n height: getPixelPropertyStr(height),\n ...defaultLabelStyle,\n ...valueColumn.common,\n ...valueColumn.items?.[i]\n } as Partial<CSSStyleDeclaration>);\n return style;\n };\n\n const getShapeItemStyle = (line: IToolTipLineActual, i: number): Partial<CSSStyleDeclaration> => {\n const { height } = contentAttributes[i];\n const { shapeColumn } = tooltipStyle;\n const keyStyle = getKeyItemStyle(line, i);\n const paddingTop = `calc((${keyStyle.lineHeight ?? keyStyle.fontSize ?? '18px'} - ${\n shapeColumn.width ?? '8px'\n }) / 2)`; // shape 和 key 的第一行文字对齐\n const style: Partial<CSSStyleDeclaration> = mergeSpec({}, defaultShapeStyle, {\n height: getPixelPropertyStr(height),\n paddingTop,\n ...shapeColumn.common,\n ...shapeColumn.items?.[i]\n } as Partial<CSSStyleDeclaration>);\n return style;\n };\n\n renderContent.forEach((line, i) => {\n if (this.className === 'key-box') {\n (this.children[i] as TextModel).setStyle(getKeyItemStyle(line, i));\n } else if (this.className === 'value-box') {\n (this.children[i] as TextModel).setStyle(getValueItemStyle(line, i));\n } else if (this.className === 'shape-box') {\n (this.children[i] as ShapeModel)?.setStyle(getShapeItemStyle(line, i), this._getShapeSvgOption(line, i));\n }\n });\n }\n\n setContent(): void {\n const renderContent = this._option.getTooltipActual()?.content ?? [];\n const contentAttributes = this._option.getTooltipAttributes()?.content ?? [];\n renderContent.forEach((line, i) => {\n let childContent: any;\n if (this.className === 'key-box') {\n const keyContent = line.key;\n if ((isString(keyContent) && keyContent?.trim?.() !== '') || isNumber(keyContent)) {\n childContent = keyContent;\n } else {\n childContent = TOOLTIP_EMPTY_STRING;\n }\n (this.children[i] as TextModel)?.setContent(childContent, contentAttributes[i].key?.multiLine);\n } else if (this.className === 'value-box') {\n const valueContent = line.value;\n if ((isString(valueContent) && valueContent?.trim?.() !== '') || isNumber(valueContent)) {\n childContent = valueContent;\n } else {\n childContent = TOOLTIP_EMPTY_STRING;\n }\n (this.children[i] as TextModel)?.setContent(childContent, contentAttributes[i].value?.multiLine);\n } else if (this.className === 'shape-box') {\n childContent = this._getShapeSvgOption(line, i);\n this.children[i]?.setContent(childContent);\n }\n });\n }\n\n protected _getContentColumnStyle() {\n const tooltipStyle = this._option.getTooltipStyle();\n\n switch (this.className) {\n case 'shape-box':\n const renderContent = this._option.getTooltipActual()?.content ?? [];\n return {\n ...tooltipStyle.shapeColumn,\n ...(this.className === 'shape-box' && !renderContent.some(c => c.hasShape && c.shapeType)\n ? { display: 'none' }\n : {})\n };\n case 'key-box':\n return tooltipStyle.keyColumn;\n case 'value-box':\n return tooltipStyle.valueColumn;\n }\n }\n\n protected _getShapeSvgOption(line: IToolTipLineActual, index: number): IShapeSvgOption {\n const tooltipStyle = this._option.getTooltipStyle();\n const shapeColumn = {\n ...tooltipStyle.shapeColumn,\n ...tooltipStyle.shapeColumn.items?.[index]\n };\n const keyColumn = {\n ...tooltipStyle.keyColumn,\n ...tooltipStyle.keyColumn.items?.[index]\n };\n return {\n hasShape: line.hasShape,\n symbolType: line.shapeType,\n size: shapeColumn.width,\n fill: line.shapeFill ?? line.shapeColor,\n stroke: line.shapeStroke,\n lineWidth: line.shapeLineWidth,\n hollow: line.shapeHollow,\n index\n } as IShapeSvgOption;\n }\n}\n"]}
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import { BaseTooltipModel } from './base-tooltip-model';
|
|
2
2
|
import { ContentColumnModel } from './content-column-model';
|
|
3
|
-
import {
|
|
3
|
+
import type { Maybe } from '@visactor/vutils';
|
|
4
4
|
export declare class ContentModel extends BaseTooltipModel {
|
|
5
5
|
shapeBox: Maybe<ContentColumnModel>;
|
|
6
6
|
keyBox: Maybe<ContentColumnModel>;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../src/plugin/components/tooltip-handler/dom/model/content-model.ts"],"names":[],"mappings":";;;AAAA,6DAAwD;AACxD,iEAA4D;
|
|
1
|
+
{"version":3,"sources":["../src/plugin/components/tooltip-handler/dom/model/content-model.ts"],"names":[],"mappings":"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","file":"content-model.js","sourcesContent":["import { BaseTooltipModel } from './base-tooltip-model';\nimport { ContentColumnModel } from './content-column-model';\nimport type { Maybe } from '@visactor/vutils';\n// eslint-disable-next-line no-duplicate-imports\nimport { isValid } from '@visactor/vutils';\nimport { mergeSpec } from '../../../../../util/spec/merge-spec';\nimport { getPixelPropertyStr, getScrollbarWidth, pixelPropertyStrToNumber } from '../utils';\n\nexport class ContentModel extends BaseTooltipModel {\n shapeBox: Maybe<ContentColumnModel>;\n keyBox: Maybe<ContentColumnModel>;\n valueBox: Maybe<ContentColumnModel>;\n\n init(): void {\n if (!this.product) {\n this.product = this.createElement('div', ['container-box']);\n }\n if (!this.shapeBox) {\n this._initShapeBox();\n }\n if (!this.keyBox) {\n this._initKeyBox();\n }\n if (!this.valueBox) {\n this._initValueBox();\n }\n }\n\n private _initShapeBox() {\n const shapeBox = new ContentColumnModel(this.product!, this._option, 'shape-box', 0);\n shapeBox.init();\n this.shapeBox = shapeBox;\n this.children[shapeBox.childIndex] = shapeBox;\n }\n\n private _initKeyBox() {\n const keyBox = new ContentColumnModel(this.product!, this._option, 'key-box', 1);\n keyBox.init();\n this.keyBox = keyBox;\n this.children[keyBox.childIndex] = keyBox;\n }\n\n private _initValueBox() {\n const valueBox = new ContentColumnModel(this.product!, this._option, 'value-box', 2);\n valueBox.init();\n this.valueBox = valueBox;\n this.children[valueBox.childIndex] = valueBox;\n }\n\n setStyle(style?: Partial<CSSStyleDeclaration>): void {\n super.setStyle(mergeSpec(this._getContentContainerStyle(), style));\n Object.values(this.children).forEach(c => {\n c.setStyle();\n });\n }\n\n setContent(): void {\n Object.values(this.children).forEach(c => {\n c.setContent();\n });\n }\n\n protected _getContentContainerStyle(): Partial<CSSStyleDeclaration> {\n const defaultStyle = {\n whiteSpace: 'nowrap',\n lineHeight: '0px'\n };\n\n const { panelDomHeight, panel: panelAttribute, maxContentHeight } = this._option.getTooltipAttributes();\n if (isValid(maxContentHeight) && panelDomHeight < panelAttribute.height) {\n const { shapeColumn = {}, keyColumn = {}, valueColumn = {}, panel = {} } = this._option.getTooltipStyle();\n const width = [\n shapeColumn.width,\n shapeColumn.marginRight,\n keyColumn.width,\n keyColumn.marginRight,\n valueColumn.width,\n valueColumn.marginRight,\n panel.paddingRight\n ].reduce((sum, cur) => sum + <number>pixelPropertyStrToNumber(cur), 0);\n return {\n ...defaultStyle,\n width: `${width + getScrollbarWidth(this._option.getContainer())}px`,\n maxHeight: getPixelPropertyStr(maxContentHeight),\n overflow: 'auto'\n };\n }\n return defaultStyle;\n }\n\n release(): void {\n super.release();\n this.shapeBox = null;\n this.keyBox = null;\n this.valueBox = null;\n }\n}\n"]}
|
|
@@ -37,7 +37,7 @@ const builtInShape = {
|
|
|
37
37
|
function getSvgHtml(option, valueToHtml) {
|
|
38
38
|
var _a, _b, _c, _d, _e, _f, _g;
|
|
39
39
|
if (!(null == option ? void 0 : option.hasShape) || !option.symbolType) return "";
|
|
40
|
-
const {symbolType: symbolType, fill: fill, stroke: stroke, hollow: hollow = !1} = option, size = option.size ? valueToHtml(option.size) : "8px",
|
|
40
|
+
const {symbolType: symbolType, fill: fill, stroke: stroke, hollow: hollow = !1} = option, size = option.size ? valueToHtml(option.size) : "8px", lineWidth = option.lineWidth ? valueToHtml(option.lineWidth) + "px" : "0px";
|
|
41
41
|
let fillString = "currentColor";
|
|
42
42
|
const getStroke = () => stroke ? valueToHtml(stroke) : fillString, sizeNumber = (0,
|
|
43
43
|
utils_1.pixelPropertyStrToNumber)(size), createSymbol = symbolType => new vrender_core_1.Symbol({
|
|
@@ -55,13 +55,13 @@ function getSvgHtml(option, valueToHtml) {
|
|
|
55
55
|
viewBox = `${x - lw / 2} ${y - lw / 2} ${w + lw} ${h + lw}`;
|
|
56
56
|
}
|
|
57
57
|
if (!fill || (0, vutils_1.isString)(fill) || hollow) return fillString = hollow ? "none" : fill ? valueToHtml(fill) : "currentColor",
|
|
58
|
-
`\n <svg width="${size}" height="${size}" viewBox="${viewBox}"\n style="display:
|
|
58
|
+
`\n <svg width="${size}" height="${size}" viewBox="${viewBox}"\n style="display: block;">\n <path\n d="${path}"\n style="fill: ${fillString}; stroke: ${getStroke()}; stroke-width: ${lineWidth}"\n >\n </path>\n </svg>`;
|
|
59
59
|
if ((0, vutils_1.isObject)(fill)) {
|
|
60
60
|
fillString = null !== (_b = "gradientColor" + option.index) && void 0 !== _b ? _b : "";
|
|
61
61
|
let gradient = "";
|
|
62
62
|
const stops = (null !== (_c = fill.stops) && void 0 !== _c ? _c : []).map((s => `<stop offset="${valueToHtml(s.offset.toString())}" stop-color="${valueToHtml(s.color)}"/>`)).join("");
|
|
63
63
|
return "radial" === fill.gradient ? gradient = `<radialGradient id="${fillString}" cx="50%" cy="50%" r="50%" fx="0%" fy="0%">\n ${stops}\n </radialGradient>` : "linear" === fill.gradient && (gradient = `<linearGradient id="${fillString}" x1="${100 * (null !== (_d = fill.x0) && void 0 !== _d ? _d : 0)}%" y1="${100 * (null !== (_e = fill.y0) && void 0 !== _e ? _e : 0)}%" x2="${100 * (null !== (_f = fill.x1) && void 0 !== _f ? _f : 0)}%" y2="${100 * (null !== (_g = fill.y1) && void 0 !== _g ? _g : 0)}%">\n ${stops}\n </linearGradient>`),
|
|
64
|
-
`\n <svg width="${size}" height="${size}" viewBox="-0.5 -0.5 1 1"\n style="display:
|
|
64
|
+
`\n <svg width="${size}" height="${size}" viewBox="-0.5 -0.5 1 1"\n style="display: block;">\n ${gradient}\n <path\n d="${path}"\n style="fill: url(#${fillString}); stroke: ${getStroke()}; stroke-width: ${lineWidth}"\n >\n </path>\n </svg>`;
|
|
65
65
|
}
|
|
66
66
|
return "";
|
|
67
67
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../src/plugin/components/tooltip-handler/dom/model/shape-model.ts"],"names":[],"mappings":";;;AAEA,yDAAgD;AAEhD,6CAAsD;AAEtD,6DAAwD;AACxD,oCAAoD;AAcpD,MAAa,UAAW,SAAQ,qCAAgB;IAK9C,IAAI,CAAC,SAAoB,EAAE,EAAW,EAAE,GAAiC;QACvE,IAAI,CAAC,IAAI,CAAC,OAAO,EAAE;YACjB,MAAM,SAAS,GAAG,IAAI,CAAC,aAAa,CAAC,GAAG,aAAH,GAAG,cAAH,GAAG,GAAI,KAAK,EAAE,CAAC,GAAG,CAAC,SAAS,aAAT,SAAS,cAAT,SAAS,GAAI,EAAE,CAAC,EAAE,OAAO,CAAC,EAAE,SAAS,EAAE,EAAE,CAAC,CAAC;YACnG,IAAI,CAAC,OAAO,GAAG,SAAS,CAAC;SAC1B;IACH,CAAC;IAED,QAAQ,CAAC,KAAoC,EAAE,MAAwB;QACrE,KAAK,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC;QACtB,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC;IACtB,CAAC;IAED,UAAU,CAAC,MAAuB;QAChC,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC;IACtB,CAAC;IAED,MAAM,CAAC,MAAwB;QAC7B,MAAM,IAAI,GAAG,UAAU,CAAC,MAAM,EAAE,IAAI,CAAC,OAAO,CAAC,WAAW,CAAC,CAAC;QAC1D,IAAI,IAAI,CAAC,OAAO,IAAI,IAAI,KAAK,IAAI,CAAC,aAAa,EAAE;YAC/C,IAAI,CAAC,aAAa,GAAG,IAAI,CAAC;YAC1B,IAAI,CAAC,OAAO,CAAC,SAAS,GAAG,IAAI,CAAC;SAC/B;IACH,CAAC;IAED,OAAO;QACL,KAAK,CAAC,OAAO,EAAE,CAAC;QAChB,IAAI,CAAC,aAAa,GAAG,EAAE,CAAC;IAC1B,CAAC;CACF;AAjCD,gCAiCC;AAED,MAAM,YAAY,GAAG;IAGnB,IAAI,EAAE,8WAA8W;CACrX,CAAC;AAEF,SAAS,UAAU,CAAC,MAAmC,EAAE,WAAmC;;IAC1F,IAAI,CAAC,CAAA,MAAM,aAAN,MAAM,uBAAN,MAAM,CAAE,QAAQ,CAAA,IAAI,CAAC,MAAM,CAAC,UAAU,EAAE;QAC3C,OAAO,EAAE,CAAC;KACX;IAED,MAAM,EAAE,UAAU,EAAE,IAAI,EAAE,MAAM,EAAE,MAAM,GAAG,KAAK,EAAE,GAAG,MAAM,CAAC;IAC5D,MAAM,IAAI,GAAG,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,WAAW,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC;IAC5D,MAAM,SAAS,GAAG,MAAM,CAAC,SAAS,CAAC,CAAC,CAAC,WAAW,CAAC,MAAM,CAAC,SAAS,CAAC,
|
|
1
|
+
{"version":3,"sources":["../src/plugin/components/tooltip-handler/dom/model/shape-model.ts"],"names":[],"mappings":"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","file":"shape-model.js","sourcesContent":["import type { IGradientColor, ILinearGradient } from '@visactor/vrender-core';\n// eslint-disable-next-line no-duplicate-imports\nimport { Symbol } from '@visactor/vrender-core';\n\nimport { isObject, isString } from '@visactor/vutils';\nimport type { ShapeType } from '../../../../../typings';\nimport { BaseTooltipModel } from './base-tooltip-model';\nimport { pixelPropertyStrToNumber } from '../utils';\n\nexport interface IShapeSvgOption {\n hasShape?: boolean;\n symbolType?: ShapeType | string;\n size?: string;\n fill?: string | IGradientColor;\n stroke?: string;\n lineWidth?: number;\n hollow?: boolean;\n marginTop?: string;\n index?: number;\n}\n\nexport class ShapeModel extends BaseTooltipModel {\n svg: SVGElement;\n\n private _svgHtmlCache: string;\n\n init(classList?: string[], id?: string, tag?: keyof HTMLElementTagNameMap): void {\n if (!this.product) {\n const container = this.createElement(tag ?? 'div', [...(classList ?? []), 'shape'], undefined, id);\n this.product = container;\n }\n }\n\n setStyle(style?: Partial<CSSStyleDeclaration>, option?: IShapeSvgOption): void {\n super.setStyle(style);\n this.setSvg(option);\n }\n\n setContent(option: IShapeSvgOption) {\n this.setSvg(option);\n }\n\n setSvg(option?: IShapeSvgOption) {\n const html = getSvgHtml(option, this._option.valueToHtml);\n if (this.product && html !== this._svgHtmlCache) {\n this._svgHtmlCache = html;\n this.product.innerHTML = html;\n }\n }\n\n release(): void {\n super.release();\n this._svgHtmlCache = '';\n }\n}\n\nconst builtInShape = {\n // FIXME: vrender 的五角星是用 canvas api 画出来的,没有内置的 path。这里先覆盖一下,等 vrender 修复\n // eslint-disable-next-line max-len\n star: 'M0 -1L0.22451398828979266 -0.3090169943749474L0.9510565162951535 -0.30901699437494745L0.3632712640026804 0.1180339887498948L0.5877852522924732 0.8090169943749473L8.326672684688674e-17 0.3819660112501051L-0.587785252292473 0.8090169943749476L-0.3632712640026804 0.11803398874989487L-0.9510565162951536 -0.30901699437494723L-0.22451398828979274 -0.30901699437494734Z'\n};\n\nfunction getSvgHtml(option: IShapeSvgOption | undefined, valueToHtml: (value: any) => string) {\n if (!option?.hasShape || !option.symbolType) {\n return '';\n }\n\n const { symbolType, fill, stroke, hollow = false } = option;\n const size = option.size ? valueToHtml(option.size) : '8px';\n const lineWidth = option.lineWidth ? valueToHtml(option.lineWidth) + 'px' : '0px';\n let fillString: string = 'currentColor';\n const getStroke = () => (stroke ? valueToHtml(stroke) : fillString);\n\n const sizeNumber = pixelPropertyStrToNumber(size) as number;\n const createSymbol = (symbolType: string) => new Symbol({ symbolType, size: sizeNumber, fill: true });\n\n let symbol = createSymbol(builtInShape[symbolType] ?? symbolType);\n const parsedPath = symbol.getParsedPath();\n if (!parsedPath.path) {\n symbol = createSymbol(parsedPath.pathStr);\n }\n const pathModel = symbol.getParsedPath().path;\n const path = pathModel.toString();\n const bounds = pathModel.bounds;\n let viewBox = `${bounds.x1} ${bounds.y1} ${bounds.width()} ${bounds.height()}`;\n\n // svg 不支持内描边,需要手动将描边空间预留在 viewBox 上\n if (lineWidth !== '0px') {\n const [x, y, w, h] = viewBox.split(' ').map(n => Number(n));\n const lw = Number(lineWidth.slice(0, -2));\n viewBox = `${x - lw / 2} ${y - lw / 2} ${w + lw} ${h + lw}`;\n }\n\n if (!fill || isString(fill) || hollow) {\n fillString = hollow ? 'none' : fill ? valueToHtml(fill) : 'currentColor';\n return `\n <svg width=\"${size}\" height=\"${size}\" viewBox=\"${viewBox}\"\n style=\"display: block;\">\n <path\n d=\"${path}\"\n style=\"fill: ${fillString}; stroke: ${getStroke()}; stroke-width: ${lineWidth}\"\n >\n </path>\n </svg>`;\n }\n if (isObject(fill)) {\n fillString = 'gradientColor' + option.index ?? '';\n let gradient = '';\n const stops = (fill.stops ?? [])\n .map(s => `<stop offset=\"${valueToHtml(s.offset.toString())}\" stop-color=\"${valueToHtml(s.color)}\"/>`)\n .join('');\n if ((fill as IGradientColor).gradient === 'radial') {\n gradient = `<radialGradient id=\"${fillString}\" cx=\"50%\" cy=\"50%\" r=\"50%\" fx=\"0%\" fy=\"0%\">\n ${stops}\n </radialGradient>`;\n } else if ((fill as IGradientColor).gradient === 'linear') {\n gradient = `<linearGradient id=\"${fillString}\" x1=\"${\n (((fill as ILinearGradient).x0 as number) ?? 0) * 100\n }%\" y1=\"${(((fill as ILinearGradient).y0 as number) ?? 0) * 100}%\" x2=\"${\n (((fill as ILinearGradient).x1 as number) ?? 0) * 100\n }%\" y2=\"${(((fill as ILinearGradient).y1 as number) ?? 0) * 100}%\">\n ${stops}\n </linearGradient>`;\n }\n return `\n <svg width=\"${size}\" height=\"${size}\" viewBox=\"-0.5 -0.5 1 1\"\n style=\"display: block;\">\n ${gradient}\n <path\n d=\"${path}\"\n style=\"fill: url(#${fillString}); stroke: ${getStroke()}; stroke-width: ${lineWidth}\"\n >\n </path>\n </svg>`;\n }\n\n return '';\n}\n"]}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../src/plugin/components/tooltip-handler/dom/model/style-constants.ts"],"names":[],"mappings":";;;AAAa,QAAA,cAAc,GAAiC;IAC1D,QAAQ,EAAE,MAAM;IAChB,YAAY,EAAE,KAAK;IACnB,UAAU,EAAE,QAAQ;CACrB,CAAC;AAEW,QAAA,qBAAqB,GAAiC;IACjE,SAAS,EAAE,YAAY;CACxB,CAAC;AAEW,QAAA,yBAAyB,GAAiC;IACrE,OAAO,EAAE,cAAc;IACvB,aAAa,EAAE,KAAK;CACrB,CAAC;AAEW,QAAA,eAAe,GAAiC;IAC3D,UAAU,EAAE,KAAK;IACjB,aAAa,EAAE,KAAK;IAGpB,SAAS,EAAE,MAAM;IACjB,UAAU,EAAE,QAAQ;CACrB,CAAC;AAEW,QAAA,uBAAuB,GAAiC;IACnE,UAAU,EAAE,KAAK;IACjB,aAAa,EAAE,KAAK;IACpB,SAAS,EAAE,MAAM;IACjB,UAAU,EAAE,QAAQ;CACrB,CAAC;AAEW,QAAA,iBAAiB,GAAiC;IAC7D,UAAU,EAAE,KAAK;IACjB,aAAa,EAAE,KAAK;IAEpB,SAAS,EAAE,OAAO;IAClB,UAAU,EAAE,QAAQ;CACrB,CAAC;AAEW,QAAA,iBAAiB,GAAiC;IAC7D,UAAU,EAAE,QAAQ;
|
|
1
|
+
{"version":3,"sources":["../src/plugin/components/tooltip-handler/dom/model/style-constants.ts"],"names":[],"mappings":";;;AAAa,QAAA,cAAc,GAAiC;IAC1D,QAAQ,EAAE,MAAM;IAChB,YAAY,EAAE,KAAK;IACnB,UAAU,EAAE,QAAQ;CACrB,CAAC;AAEW,QAAA,qBAAqB,GAAiC;IACjE,SAAS,EAAE,YAAY;CACxB,CAAC;AAEW,QAAA,yBAAyB,GAAiC;IACrE,OAAO,EAAE,cAAc;IACvB,aAAa,EAAE,KAAK;CACrB,CAAC;AAEW,QAAA,eAAe,GAAiC;IAC3D,UAAU,EAAE,KAAK;IACjB,aAAa,EAAE,KAAK;IAGpB,SAAS,EAAE,MAAM;IACjB,UAAU,EAAE,QAAQ;CACrB,CAAC;AAEW,QAAA,uBAAuB,GAAiC;IACnE,UAAU,EAAE,KAAK;IACjB,aAAa,EAAE,KAAK;IACpB,SAAS,EAAE,MAAM;IACjB,UAAU,EAAE,QAAQ;CACrB,CAAC;AAEW,QAAA,iBAAiB,GAAiC;IAC7D,UAAU,EAAE,KAAK;IACjB,aAAa,EAAE,KAAK;IAEpB,SAAS,EAAE,OAAO;IAClB,UAAU,EAAE,QAAQ;CACrB,CAAC;AAEW,QAAA,iBAAiB,GAAiC;IAC7D,UAAU,EAAE,QAAQ;IACpB,SAAS,EAAE,YAAY;CACxB,CAAC","file":"style-constants.js","sourcesContent":["export const defaultH2Style: Partial<CSSStyleDeclaration> = {\n fontSize: '13px',\n marginBottom: '0px',\n fontWeight: 'normal'\n};\n\nexport const defaultContainerStyle: Partial<CSSStyleDeclaration> = {\n boxSizing: 'border-box'\n};\n\nexport const defaultContentColumnStyle: Partial<CSSStyleDeclaration> = {\n display: 'inline-block',\n verticalAlign: 'top'\n};\n\nexport const defaultKeyStyle: Partial<CSSStyleDeclaration> = {\n paddingTop: '0px',\n paddingBottom: '0px',\n // overflow: 'hidden',\n // textOverflow: 'ellipsis',\n textAlign: 'left',\n fontWeight: 'normal'\n};\n\nexport const defaultAdaptiveKeyStyle: Partial<CSSStyleDeclaration> = {\n paddingTop: '0px',\n paddingBottom: '0px',\n textAlign: 'left',\n fontWeight: 'normal'\n};\n\nexport const defaultValueStyle: Partial<CSSStyleDeclaration> = {\n paddingTop: '0px',\n paddingBottom: '0px',\n // overflow: 'hidden',\n textAlign: 'right',\n fontWeight: 'normal'\n};\n\nexport const defaultShapeStyle: Partial<CSSStyleDeclaration> = {\n lineHeight: 'normal',\n boxSizing: 'border-box'\n};\n"]}
|
|
@@ -36,7 +36,10 @@ function getDomStyles(attributes) {
|
|
|
36
36
|
content: {},
|
|
37
37
|
shapeColumn: {
|
|
38
38
|
common: shapeStyle,
|
|
39
|
-
items:
|
|
39
|
+
items: null == contentAttribute ? void 0 : contentAttribute.map((({spaceRow: spaceRow}, i) => ({
|
|
40
|
+
marginTop: "0px",
|
|
41
|
+
marginBottom: i < contentAttribute.length - 1 ? (0, common_1.getPixelPropertyStr)(spaceRow) : "0px"
|
|
42
|
+
}))),
|
|
40
43
|
width: (0, common_1.getPixelPropertyStr)(shape.size),
|
|
41
44
|
marginRight: (0, common_1.getPixelPropertyStr)(null !== (_a = shape.spacing) && void 0 !== _a ? _a : 8)
|
|
42
45
|
},
|