@visactor/vrender-components 0.17.0-alpha.7 → 0.17.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/cjs/axis/circle.d.ts +3 -3
- package/cjs/axis/circle.js +2 -2
- package/cjs/axis/circle.js.map +1 -1
- package/cjs/axis/grid/base.js +2 -2
- package/cjs/axis/grid/base.js.map +1 -1
- package/cjs/axis/grid/circle.d.ts +2 -1
- package/cjs/axis/grid/circle.js +2 -2
- package/cjs/axis/grid/circle.js.map +1 -1
- package/cjs/axis/grid/line.d.ts +2 -1
- package/cjs/axis/grid/line.js +2 -3
- package/cjs/axis/grid/line.js.map +1 -1
- package/cjs/axis/line.d.ts +2 -1
- package/cjs/axis/line.js +2 -2
- package/cjs/axis/line.js.map +1 -1
- package/cjs/axis/type.d.ts +5 -23
- package/cjs/axis/type.js.map +1 -1
- package/cjs/brush/brush.d.ts +2 -1
- package/cjs/brush/brush.js +3 -3
- package/cjs/brush/brush.js.map +1 -1
- package/cjs/checkbox/checkbox.d.ts +2 -1
- package/cjs/checkbox/checkbox.js +3 -3
- package/cjs/checkbox/checkbox.js.map +1 -1
- package/cjs/core/base.d.ts +4 -2
- package/cjs/core/base.js +4 -2
- package/cjs/core/base.js.map +1 -1
- package/cjs/core/type.d.ts +15 -0
- package/cjs/core/type.js.map +1 -1
- package/cjs/crosshair/circle.d.ts +2 -1
- package/cjs/crosshair/circle.js +2 -2
- package/cjs/crosshair/circle.js.map +1 -1
- package/cjs/crosshair/line.d.ts +2 -1
- package/cjs/crosshair/line.js +2 -2
- package/cjs/crosshair/line.js.map +1 -1
- package/cjs/crosshair/polygon.d.ts +2 -1
- package/cjs/crosshair/polygon.js +2 -2
- package/cjs/crosshair/polygon.js.map +1 -1
- package/cjs/crosshair/rect.d.ts +2 -1
- package/cjs/crosshair/rect.js +2 -2
- package/cjs/crosshair/rect.js.map +1 -1
- package/cjs/crosshair/sector.d.ts +2 -1
- package/cjs/crosshair/sector.js +2 -2
- package/cjs/crosshair/sector.js.map +1 -1
- package/cjs/data-zoom/data-zoom.d.ts +2 -1
- package/cjs/data-zoom/data-zoom.js +3 -3
- package/cjs/data-zoom/data-zoom.js.map +1 -1
- package/cjs/index.d.ts +1 -1
- package/cjs/index.js +1 -1
- package/cjs/index.js.map +1 -1
- package/cjs/indicator/indicator.js.map +1 -1
- package/cjs/indicator/type.d.ts +3 -5
- package/cjs/indicator/type.js.map +1 -1
- package/cjs/interface.d.ts +4 -0
- package/cjs/interface.js.map +1 -1
- package/cjs/label/arc.d.ts +2 -1
- package/cjs/label/arc.js +3 -3
- package/cjs/label/arc.js.map +1 -1
- package/cjs/label/area.d.ts +1 -1
- package/cjs/label/area.js +2 -2
- package/cjs/label/area.js.map +1 -1
- package/cjs/label/base.d.ts +3 -2
- package/cjs/label/base.js +15 -9
- package/cjs/label/base.js.map +1 -1
- package/cjs/label/dataLabel.d.ts +2 -1
- package/cjs/label/dataLabel.js +3 -2
- package/cjs/label/dataLabel.js.map +1 -1
- package/cjs/label/index.d.ts +1 -0
- package/cjs/label/index.js +2 -1
- package/cjs/label/index.js.map +1 -1
- package/cjs/label/line-data.d.ts +2 -1
- package/cjs/label/line-data.js +3 -2
- package/cjs/label/line-data.js.map +1 -1
- package/cjs/label/line.d.ts +3 -2
- package/cjs/label/line.js +6 -5
- package/cjs/label/line.js.map +1 -1
- package/cjs/label/polygon.d.ts +2 -1
- package/cjs/label/polygon.js +3 -2
- package/cjs/label/polygon.js.map +1 -1
- package/cjs/label/rect.d.ts +2 -1
- package/cjs/label/rect.js +2 -2
- package/cjs/label/rect.js.map +1 -1
- package/cjs/label/symbol.d.ts +2 -1
- package/cjs/label/symbol.js +3 -2
- package/cjs/label/symbol.js.map +1 -1
- package/cjs/label/type.d.ts +1 -0
- package/cjs/label/type.js.map +1 -1
- package/cjs/legend/color/color.d.ts +2 -1
- package/cjs/legend/color/color.js +2 -2
- package/cjs/legend/color/color.js.map +1 -1
- package/cjs/legend/discrete/discrete.d.ts +2 -1
- package/cjs/legend/discrete/discrete.js +15 -13
- package/cjs/legend/discrete/discrete.js.map +1 -1
- package/cjs/legend/discrete/type.d.ts +1 -0
- package/cjs/legend/discrete/type.js.map +1 -1
- package/cjs/legend/index.d.ts +1 -0
- package/cjs/legend/index.js +2 -1
- package/cjs/legend/index.js.map +1 -1
- package/cjs/legend/size/size.d.ts +2 -3
- package/cjs/legend/size/size.js +5 -14
- package/cjs/legend/size/size.js.map +1 -1
- package/cjs/legend/util.d.ts +2 -0
- package/cjs/legend/util.js +13 -0
- package/cjs/legend/util.js.map +1 -0
- package/cjs/link-path/link-path.d.ts +2 -1
- package/cjs/link-path/link-path.js +3 -3
- package/cjs/link-path/link-path.js.map +1 -1
- package/cjs/marker/area.d.ts +2 -1
- package/cjs/marker/area.js +3 -2
- package/cjs/marker/area.js.map +1 -1
- package/cjs/marker/line.d.ts +2 -1
- package/cjs/marker/line.js +3 -2
- package/cjs/marker/line.js.map +1 -1
- package/cjs/marker/point.d.ts +2 -1
- package/cjs/marker/point.js +3 -2
- package/cjs/marker/point.js.map +1 -1
- package/cjs/marker/type.d.ts +14 -14
- package/cjs/marker/type.js.map +1 -1
- package/cjs/pager/pager.d.ts +2 -1
- package/cjs/pager/pager.js +3 -3
- package/cjs/pager/pager.js.map +1 -1
- package/cjs/player/base-player.d.ts +2 -1
- package/cjs/player/base-player.js +3 -3
- package/cjs/player/base-player.js.map +1 -1
- package/cjs/player/controller/controller.d.ts +2 -1
- package/cjs/player/controller/controller.js +3 -3
- package/cjs/player/controller/controller.js.map +1 -1
- package/cjs/player/discrete-player.d.ts +2 -1
- package/cjs/player/discrete-player.js +3 -3
- package/cjs/player/discrete-player.js.map +1 -1
- package/cjs/poptip/poptip.d.ts +2 -1
- package/cjs/poptip/poptip.js +3 -3
- package/cjs/poptip/poptip.js.map +1 -1
- package/cjs/scrollbar/scrollbar.d.ts +2 -1
- package/cjs/scrollbar/scrollbar.js +3 -3
- package/cjs/scrollbar/scrollbar.js.map +1 -1
- package/cjs/segment/segment.d.ts +2 -1
- package/cjs/segment/segment.js +3 -2
- package/cjs/segment/segment.js.map +1 -1
- package/cjs/slider/slider.d.ts +2 -1
- package/cjs/slider/slider.js +8 -8
- package/cjs/slider/slider.js.map +1 -1
- package/cjs/tag/tag.d.ts +2 -1
- package/cjs/tag/tag.js +4 -3
- package/cjs/tag/tag.js.map +1 -1
- package/cjs/tag/type.d.ts +3 -5
- package/cjs/tag/type.js.map +1 -1
- package/cjs/title/title.d.ts +2 -1
- package/cjs/title/title.js +42 -41
- package/cjs/title/title.js.map +1 -1
- package/cjs/tooltip/tooltip.d.ts +2 -1
- package/cjs/tooltip/tooltip.js +3 -2
- package/cjs/tooltip/tooltip.js.map +1 -1
- package/cjs/tooltip/util.js +5 -5
- package/cjs/tooltip/util.js.map +1 -1
- package/cjs/util/label-smartInvert.d.ts +2 -2
- package/cjs/util/label-smartInvert.js +9 -5
- package/cjs/util/label-smartInvert.js.map +1 -1
- package/dist/index.js +9927 -10908
- package/dist/index.min.js +1 -1
- package/es/axis/circle.d.ts +3 -3
- package/es/axis/circle.js +2 -2
- package/es/axis/circle.js.map +1 -1
- package/es/axis/grid/base.js +2 -2
- package/es/axis/grid/base.js.map +1 -1
- package/es/axis/grid/circle.d.ts +2 -1
- package/es/axis/grid/circle.js +2 -2
- package/es/axis/grid/circle.js.map +1 -1
- package/es/axis/grid/line.d.ts +2 -1
- package/es/axis/grid/line.js +2 -2
- package/es/axis/grid/line.js.map +1 -1
- package/es/axis/line.d.ts +2 -1
- package/es/axis/line.js +2 -2
- package/es/axis/line.js.map +1 -1
- package/es/axis/type.d.ts +5 -23
- package/es/axis/type.js.map +1 -1
- package/es/brush/brush.d.ts +2 -1
- package/es/brush/brush.js +6 -6
- package/es/brush/brush.js.map +1 -1
- package/es/checkbox/checkbox.d.ts +2 -1
- package/es/checkbox/checkbox.js +3 -2
- package/es/checkbox/checkbox.js.map +1 -1
- package/es/core/base.d.ts +4 -2
- package/es/core/base.js +4 -2
- package/es/core/base.js.map +1 -1
- package/es/core/type.d.ts +15 -0
- package/es/core/type.js.map +1 -1
- package/es/crosshair/circle.d.ts +2 -1
- package/es/crosshair/circle.js +2 -2
- package/es/crosshair/circle.js.map +1 -1
- package/es/crosshair/line.d.ts +2 -1
- package/es/crosshair/line.js +2 -2
- package/es/crosshair/line.js.map +1 -1
- package/es/crosshair/polygon.d.ts +2 -1
- package/es/crosshair/polygon.js +2 -2
- package/es/crosshair/polygon.js.map +1 -1
- package/es/crosshair/rect.d.ts +2 -1
- package/es/crosshair/rect.js +2 -2
- package/es/crosshair/rect.js.map +1 -1
- package/es/crosshair/sector.d.ts +2 -1
- package/es/crosshair/sector.js +2 -2
- package/es/crosshair/sector.js.map +1 -1
- package/es/data-zoom/data-zoom.d.ts +2 -1
- package/es/data-zoom/data-zoom.js +3 -3
- package/es/data-zoom/data-zoom.js.map +1 -1
- package/es/index.d.ts +1 -1
- package/es/index.js +1 -1
- package/es/index.js.map +1 -1
- package/es/indicator/indicator.js.map +1 -1
- package/es/indicator/type.d.ts +3 -5
- package/es/indicator/type.js.map +1 -1
- package/es/interface.d.ts +4 -0
- package/es/interface.js.map +1 -1
- package/es/label/arc.d.ts +2 -1
- package/es/label/arc.js +3 -3
- package/es/label/arc.js.map +1 -1
- package/es/label/area.d.ts +1 -1
- package/es/label/area.js +2 -2
- package/es/label/area.js.map +1 -1
- package/es/label/base.d.ts +3 -2
- package/es/label/base.js +14 -9
- package/es/label/base.js.map +1 -1
- package/es/label/dataLabel.d.ts +2 -1
- package/es/label/dataLabel.js +3 -2
- package/es/label/dataLabel.js.map +1 -1
- package/es/label/index.d.ts +1 -0
- package/es/label/index.js +2 -0
- package/es/label/index.js.map +1 -1
- package/es/label/line-data.d.ts +2 -1
- package/es/label/line-data.js +3 -2
- package/es/label/line-data.js.map +1 -1
- package/es/label/line.d.ts +3 -2
- package/es/label/line.js +6 -5
- package/es/label/line.js.map +1 -1
- package/es/label/polygon.d.ts +2 -1
- package/es/label/polygon.js +3 -2
- package/es/label/polygon.js.map +1 -1
- package/es/label/rect.d.ts +2 -1
- package/es/label/rect.js +2 -2
- package/es/label/rect.js.map +1 -1
- package/es/label/symbol.d.ts +2 -1
- package/es/label/symbol.js +3 -2
- package/es/label/symbol.js.map +1 -1
- package/es/label/type.d.ts +1 -0
- package/es/label/type.js.map +1 -1
- package/es/legend/color/color.d.ts +2 -1
- package/es/legend/color/color.js +3 -3
- package/es/legend/color/color.js.map +1 -1
- package/es/legend/discrete/discrete.d.ts +2 -1
- package/es/legend/discrete/discrete.js +15 -13
- package/es/legend/discrete/discrete.js.map +1 -1
- package/es/legend/discrete/type.d.ts +1 -0
- package/es/legend/discrete/type.js.map +1 -1
- package/es/legend/index.d.ts +1 -0
- package/es/legend/index.js +2 -0
- package/es/legend/index.js.map +1 -1
- package/es/legend/size/size.d.ts +2 -3
- package/es/legend/size/size.js +4 -9
- package/es/legend/size/size.js.map +1 -1
- package/es/legend/util.d.ts +2 -0
- package/es/legend/util.js +7 -0
- package/es/legend/util.js.map +1 -0
- package/es/link-path/link-path.d.ts +2 -1
- package/es/link-path/link-path.js +3 -3
- package/es/link-path/link-path.js.map +1 -1
- package/es/marker/area.d.ts +2 -1
- package/es/marker/area.js +3 -2
- package/es/marker/area.js.map +1 -1
- package/es/marker/line.d.ts +2 -1
- package/es/marker/line.js +3 -2
- package/es/marker/line.js.map +1 -1
- package/es/marker/point.d.ts +2 -1
- package/es/marker/point.js +3 -2
- package/es/marker/point.js.map +1 -1
- package/es/marker/type.d.ts +14 -14
- package/es/marker/type.js.map +1 -1
- package/es/pager/pager.d.ts +2 -1
- package/es/pager/pager.js +3 -3
- package/es/pager/pager.js.map +1 -1
- package/es/player/base-player.d.ts +2 -1
- package/es/player/base-player.js +3 -3
- package/es/player/base-player.js.map +1 -1
- package/es/player/controller/controller.d.ts +2 -1
- package/es/player/controller/controller.js +3 -3
- package/es/player/controller/controller.js.map +1 -1
- package/es/player/discrete-player.d.ts +2 -1
- package/es/player/discrete-player.js +3 -2
- package/es/player/discrete-player.js.map +1 -1
- package/es/poptip/poptip.d.ts +2 -1
- package/es/poptip/poptip.js +3 -2
- package/es/poptip/poptip.js.map +1 -1
- package/es/scrollbar/scrollbar.d.ts +2 -1
- package/es/scrollbar/scrollbar.js +3 -3
- package/es/scrollbar/scrollbar.js.map +1 -1
- package/es/segment/segment.d.ts +2 -1
- package/es/segment/segment.js +3 -2
- package/es/segment/segment.js.map +1 -1
- package/es/slider/slider.d.ts +2 -1
- package/es/slider/slider.js +8 -8
- package/es/slider/slider.js.map +1 -1
- package/es/tag/tag.d.ts +2 -1
- package/es/tag/tag.js +4 -3
- package/es/tag/tag.js.map +1 -1
- package/es/tag/type.d.ts +3 -5
- package/es/tag/type.js.map +1 -1
- package/es/title/title.d.ts +2 -1
- package/es/title/title.js +42 -41
- package/es/title/title.js.map +1 -1
- package/es/tooltip/tooltip.d.ts +2 -1
- package/es/tooltip/tooltip.js +3 -2
- package/es/tooltip/tooltip.js.map +1 -1
- package/es/tooltip/util.js +5 -5
- package/es/tooltip/util.js.map +1 -1
- package/es/util/label-smartInvert.d.ts +2 -2
- package/es/util/label-smartInvert.js +9 -5
- package/es/util/label-smartInvert.js.map +1 -1
- package/package.json +8 -8
package/cjs/title/title.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../src/title/title.ts"],"names":[],"mappings":"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","file":"title.js","sourcesContent":["/**\n * @description 标题组件\n */\nimport type { IGroup, IText, IRichText, IRichTextCharacter } from '@visactor/vrender-core';\nimport { merge, isValid, normalizePadding } from '@visactor/vutils';\nimport { AbstractComponent } from '../core/base';\nimport type { TitleAttrs } from './type';\nimport { DEFAULT_HTML_TEXT_SPEC } from '../constant';\n\nexport class Title extends AbstractComponent<Required<TitleAttrs>> {\n name = 'title';\n\n private _mainTitle?: IText | IRichText;\n private _subTitle?: IText | IRichText;\n\n static defaultAttributes: Partial<TitleAttrs> = {\n textStyle: {\n ellipsis: '...',\n fill: '#333',\n fontSize: 20,\n fontWeight: 'bold',\n textAlign: 'left',\n textBaseline: 'top'\n },\n subtextStyle: {\n ellipsis: '...',\n fill: '#6F6F6F',\n fontSize: 16,\n fontWeight: 'normal',\n textAlign: 'left',\n textBaseline: 'top'\n }\n };\n\n constructor(attributes: TitleAttrs) {\n super(merge({}, Title.defaultAttributes, attributes));\n }\n\n protected render() {\n const {\n textType,\n text,\n subtextType,\n textStyle,\n subtext,\n subtextStyle,\n width,\n height,\n minWidth,\n maxWidth,\n minHeight,\n maxHeight,\n align,\n verticalAlign,\n padding = 0\n } = this.attribute as TitleAttrs;\n\n const parsedPadding = normalizePadding(padding);\n\n const group = this.createOrUpdateChild(\n 'title-container',\n { x: parsedPadding[3], y: parsedPadding[0], zIndex: 1 },\n 'group'\n ) as IGroup;\n\n if (this.attribute?.visible !== false && textStyle?.visible !== false) {\n if (textType === 'rich' || isValid(textStyle.character)) {\n const attr = {\n x: textStyle.x ?? 0,\n y: textStyle.y ?? 0,\n width: textStyle.width ?? width ?? 0,\n height: textStyle.height ?? height ?? 0,\n ellipsis: textStyle.ellipsis ?? true,\n wordBreak: textStyle.wordBreak ?? 'break-word',\n maxHeight: textStyle.maxHeight,\n maxWidth: textStyle.maxWidth,\n textConfig: textStyle.character ?? (text as IRichTextCharacter[]),\n ...textStyle\n };\n this._mainTitle = group.createOrUpdateChild('mainTitle', attr, 'richtext') as IRichText;\n } else if (textType === 'html') {\n const attr = {\n html: {\n dom: text as string,\n ...DEFAULT_HTML_TEXT_SPEC,\n ...textStyle\n },\n x: textStyle.x ?? 0,\n y: textStyle.y ?? 0,\n width: textStyle.width ?? width ?? 0,\n height: textStyle.height ?? height ?? 0,\n ellipsis: textStyle.ellipsis ?? true,\n wordBreak: textStyle.wordBreak ?? 'break-word',\n maxHeight: textStyle.maxHeight,\n maxWidth: textStyle.maxWidth,\n textConfig: [] as any[],\n ...textStyle\n };\n this._mainTitle = group.createOrUpdateChild('mainTitle', attr, 'richtext') as IRichText;\n } else if (isValid(text)) {\n this._mainTitle = group.createOrUpdateChild(\n 'mainTitle',\n {\n text: [text as string],\n ...textStyle,\n maxLineWidth: textStyle?.maxLineWidth ?? width,\n heightLimit: textStyle?.heightLimit,\n lineClamp: textStyle?.lineClamp,\n ellipsis: textStyle?.ellipsis ?? true,\n x: 0,\n y: 0\n },\n 'wrapText'\n ) as IText;\n }\n }\n\n const maintextHeight = this._mainTitle ? this._mainTitle?.AABBBounds.height() : 0;\n const maintextWidth = this._mainTitle ? this._mainTitle?.AABBBounds.width() : 0;\n\n if (this.attribute?.visible !== false && subtextStyle?.visible !== false) {\n if (subtextType === 'rich' || isValid(subtextStyle.character)) {\n const attr: any = {\n x: subtextStyle.x ?? 0,\n y: subtextStyle.y ?? 0,\n width: subtextStyle.width ?? width ?? 0,\n height: subtextStyle.height ?? height ?? 0,\n ellipsis: subtextStyle.ellipsis ?? true,\n wordBreak: subtextStyle.wordBreak ?? 'break-word',\n maxHeight: subtextStyle.maxHeight,\n maxWidth: subtextStyle.maxWidth,\n textConfig: subtextStyle.character || (subtext as IRichTextCharacter[]),\n ...subtextStyle\n };\n this._subTitle = group.createOrUpdateChild('subTitle', attr, 'richtext') as IRichText;\n } else if (subtextType === 'html') {\n const attr: any = {\n html: {\n dom: subtext as string,\n ...DEFAULT_HTML_TEXT_SPEC,\n ...subtextStyle\n },\n x: subtextStyle.x ?? 0,\n y: subtextStyle.y ?? 0,\n width: subtextStyle.width ?? width ?? 0,\n height: subtextStyle.height ?? height ?? 0,\n ellipsis: subtextStyle.ellipsis ?? true,\n wordBreak: subtextStyle.wordBreak ?? 'break-word',\n maxHeight: subtextStyle.maxHeight,\n maxWidth: subtextStyle.maxWidth,\n textConfig: [] as any[],\n ...subtextStyle\n };\n this._subTitle = group.createOrUpdateChild('subTitle', attr, 'richtext') as IRichText;\n } else if (isValid(subtext)) {\n this._subTitle = group.createOrUpdateChild(\n 'subTitle',\n {\n text: [subtext as string],\n ...subtextStyle,\n maxLineWidth: subtextStyle?.maxLineWidth ?? width,\n heightLimit: subtextStyle?.heightLimit,\n lineClamp: subtextStyle?.lineClamp,\n ellipsis: subtextStyle?.ellipsis ?? true,\n x: 0,\n y: maintextHeight\n },\n 'wrapText'\n ) as IText;\n }\n }\n\n const subtextHeight = this._subTitle ? this._subTitle?.AABBBounds.height() : 0;\n const subtextWidth = this._subTitle ? this._subTitle?.AABBBounds.width() : 0;\n\n // 设置宽高\n let titleWidth = Math.max(maintextWidth, subtextWidth);\n let titleHeight = maintextHeight + (subtextStyle?.height ?? subtextHeight);\n\n if (isValid(width)) {\n titleWidth = width;\n this._mainTitle?.setAttribute('maxLineWidth', width);\n this._subTitle?.setAttribute('maxLineWidth', width);\n }\n\n if (isValid(height)) {\n titleHeight = height;\n }\n\n if (isValid(minWidth) && titleWidth < minWidth) {\n titleWidth = minWidth;\n }\n if (isValid(maxWidth)) {\n this._mainTitle?.setAttribute('maxLineWidth', maxWidth);\n this._subTitle?.setAttribute('maxLineWidth', maxWidth);\n this._mainTitle?.setAttribute('maxWidth', maxWidth);\n this._subTitle?.setAttribute('maxWidth', maxWidth);\n if (titleWidth > maxWidth) {\n titleWidth = maxWidth;\n }\n }\n\n if (isValid(minHeight) && titleHeight < minHeight) {\n titleHeight = minHeight;\n }\n if (isValid(maxHeight)) {\n this._mainTitle?.setAttribute('maxHeight', maxHeight);\n this._subTitle?.setAttribute('maxHeight', maxHeight - maintextHeight);\n if (titleHeight > maxHeight) {\n titleHeight = maxHeight;\n }\n }\n\n group.attribute.width = titleWidth;\n group.attribute.height = titleHeight;\n group.attribute.boundsPadding = parsedPadding;\n\n // 设置对齐\n if (isValid(align) || isValid(textStyle?.align)) {\n const mainTitleAlign = textStyle?.align ? textStyle?.align : align;\n const mainTitleWidth = textStyle?.width ?? maintextWidth;\n if (mainTitleAlign === 'left') {\n this._mainTitle?.setAttribute('x', 0);\n this._mainTitle?.setAttribute('textAlign', 'left');\n } else if (mainTitleAlign === 'center') {\n this._mainTitle?.setAttribute('x', mainTitleWidth / 2);\n this._mainTitle?.setAttribute('textAlign', 'center');\n } else if (mainTitleAlign === 'right') {\n this._mainTitle?.setAttribute('x', mainTitleWidth);\n this._mainTitle?.setAttribute('textAlign', 'right');\n }\n }\n\n if (isValid(verticalAlign) || isValid(textStyle?.verticalAlign)) {\n const mainTitleVerticalAlign = textStyle?.verticalAlign ? textStyle?.verticalAlign : verticalAlign;\n const mainTitleHeight = textStyle?.height ? textStyle?.height : titleHeight;\n if (mainTitleVerticalAlign === 'top') {\n this._mainTitle?.setAttribute('y', 0);\n this._mainTitle?.setAttribute('textBaseline', 'top');\n } else if (mainTitleVerticalAlign === 'middle') {\n this._mainTitle?.setAttribute('y', mainTitleHeight / 2);\n this._mainTitle?.setAttribute('textBaseline', 'middle');\n } else if (mainTitleVerticalAlign === 'bottom') {\n this._mainTitle?.setAttribute('y', mainTitleHeight);\n this._mainTitle?.setAttribute('textBaseline', 'bottom');\n }\n }\n\n if (isValid(align) || isValid(subtextStyle?.align)) {\n const subTitleAlign = subtextStyle?.align ? subtextStyle?.align : align;\n const subTitleWidth = subtextStyle?.width ?? subtextWidth;\n if (subTitleAlign === 'left') {\n this._subTitle?.setAttribute('x', 0);\n this._subTitle?.setAttribute('textAlign', 'left');\n } else if (subTitleAlign === 'center') {\n this._subTitle?.setAttribute('x', subTitleWidth / 2);\n this._subTitle?.setAttribute('textAlign', 'center');\n } else if (subTitleAlign === 'right') {\n this._subTitle?.setAttribute('x', subTitleWidth);\n this._subTitle?.setAttribute('textAlign', 'right');\n }\n }\n\n if (isValid(verticalAlign) || isValid(textStyle?.verticalAlign)) {\n const subTitleVerticalAlign = subtextStyle?.verticalAlign ? subtextStyle?.verticalAlign : verticalAlign;\n const subTitleYStart = maintextHeight;\n const subTitleHeight = subtextStyle?.height ?? 0;\n if (subTitleVerticalAlign === 'top') {\n this._subTitle?.setAttribute('y', subTitleYStart);\n this._subTitle?.setAttribute('textBaseline', 'top');\n } else if (subTitleVerticalAlign === 'middle') {\n this._subTitle?.setAttribute('y', subTitleYStart + subTitleHeight / 2);\n this._subTitle?.setAttribute('textBaseline', 'middle');\n } else if (subTitleVerticalAlign === 'bottom') {\n this._subTitle?.setAttribute('y', subTitleYStart + subTitleHeight);\n this._subTitle?.setAttribute('textBaseline', 'bottom');\n }\n }\n }\n}\n"]}
|
|
1
|
+
{"version":3,"sources":["../src/title/title.ts"],"names":[],"mappings":"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","file":"title.js","sourcesContent":["/**\n * @description 标题组件\n */\nimport type { IGroup, IText, IRichText, IRichTextCharacter } from '@visactor/vrender-core';\nimport { merge, isValid, normalizePadding } from '@visactor/vutils';\nimport { AbstractComponent } from '../core/base';\nimport type { TitleAttrs } from './type';\nimport type { ComponentOptions } from '../interface';\nimport { DEFAULT_HTML_TEXT_SPEC } from '../constant';\n\nexport class Title extends AbstractComponent<Required<TitleAttrs>> {\n name = 'title';\n\n private _mainTitle?: IText | IRichText;\n private _subTitle?: IText | IRichText;\n\n static defaultAttributes: Partial<TitleAttrs> = {\n textStyle: {\n ellipsis: '...',\n fill: '#333',\n fontSize: 20,\n fontWeight: 'bold',\n textAlign: 'left',\n textBaseline: 'top'\n },\n subtextStyle: {\n ellipsis: '...',\n fill: '#6F6F6F',\n fontSize: 16,\n fontWeight: 'normal',\n textAlign: 'left',\n textBaseline: 'top'\n }\n };\n\n constructor(attributes: TitleAttrs, options?: ComponentOptions) {\n super(options?.skipDefault ? attributes : merge({}, Title.defaultAttributes, attributes));\n }\n\n protected render() {\n const {\n textType,\n text,\n subtextType,\n textStyle,\n subtext,\n subtextStyle,\n width,\n height,\n minWidth,\n maxWidth,\n minHeight,\n maxHeight,\n align,\n verticalAlign,\n padding = 0\n } = this.attribute as TitleAttrs;\n\n const parsedPadding = normalizePadding(padding);\n\n const group = this.createOrUpdateChild(\n 'title-container',\n { x: parsedPadding[3], y: parsedPadding[0], zIndex: 1 },\n 'group'\n ) as IGroup;\n\n if (this.attribute?.visible !== false && textStyle?.visible !== false) {\n if (textType === 'rich' || isValid(textStyle.character)) {\n const attr = {\n x: textStyle.x ?? 0,\n y: textStyle.y ?? 0,\n width: textStyle.width ?? width ?? 0,\n height: textStyle.height ?? height ?? 0,\n ellipsis: textStyle.ellipsis ?? true,\n wordBreak: textStyle.wordBreak ?? 'break-word',\n maxHeight: textStyle.maxHeight,\n maxWidth: textStyle.maxWidth,\n // 兼容旧版富文本配置,如果未设置textType === 'rich',text内容为string 易报错\n textConfig: textStyle.character ?? (text as IRichTextCharacter[]),\n ...textStyle\n };\n this._mainTitle = group.createOrUpdateChild('mainTitle', attr, 'richtext') as IRichText;\n } else if (textType === 'html') {\n const attr = {\n html: {\n dom: text as string,\n ...DEFAULT_HTML_TEXT_SPEC,\n ...textStyle\n },\n x: textStyle.x ?? 0,\n y: textStyle.y ?? 0,\n width: textStyle.width ?? width ?? 0,\n height: textStyle.height ?? height ?? 0,\n ellipsis: textStyle.ellipsis ?? true,\n wordBreak: textStyle.wordBreak ?? 'break-word',\n maxHeight: textStyle.maxHeight,\n maxWidth: textStyle.maxWidth,\n textConfig: [] as any[],\n ...textStyle\n };\n this._mainTitle = group.createOrUpdateChild('mainTitle', attr, 'richtext') as IRichText;\n } else if (isValid(text)) {\n this._mainTitle = group.createOrUpdateChild(\n 'mainTitle',\n {\n text: [text as string],\n ...textStyle,\n maxLineWidth: textStyle?.maxLineWidth ?? width,\n heightLimit: textStyle?.heightLimit,\n lineClamp: textStyle?.lineClamp,\n ellipsis: textStyle?.ellipsis ?? true,\n x: 0,\n y: 0\n },\n 'wrapText'\n ) as IText;\n }\n }\n\n const maintextHeight = this._mainTitle ? this._mainTitle?.AABBBounds.height() : 0;\n const maintextWidth = this._mainTitle ? this._mainTitle?.AABBBounds.width() : 0;\n\n if (this.attribute?.visible !== false && subtextStyle?.visible !== false) {\n if (subtextType === 'rich' || isValid(subtextStyle.character)) {\n const attr: any = {\n x: subtextStyle.x ?? 0,\n y: subtextStyle.y ?? 0,\n width: subtextStyle.width ?? width ?? 0,\n height: subtextStyle.height ?? height ?? 0,\n ellipsis: subtextStyle.ellipsis ?? true,\n wordBreak: subtextStyle.wordBreak ?? 'break-word',\n maxHeight: subtextStyle.maxHeight,\n maxWidth: subtextStyle.maxWidth,\n // 兼容旧版富文本配置,如果未设置textType === 'rich',text内容为string 易报错\n textConfig: subtextStyle.character ?? (subtext as IRichTextCharacter[]),\n ...subtextStyle\n };\n this._subTitle = group.createOrUpdateChild('subTitle', attr, 'richtext') as IRichText;\n } else if (subtextType === 'html') {\n const attr: any = {\n html: {\n dom: subtext as string,\n ...DEFAULT_HTML_TEXT_SPEC,\n ...subtextStyle\n },\n x: subtextStyle.x ?? 0,\n y: subtextStyle.y ?? 0,\n width: subtextStyle.width ?? width ?? 0,\n height: subtextStyle.height ?? height ?? 0,\n ellipsis: subtextStyle.ellipsis ?? true,\n wordBreak: subtextStyle.wordBreak ?? 'break-word',\n maxHeight: subtextStyle.maxHeight,\n maxWidth: subtextStyle.maxWidth,\n textConfig: [] as any[],\n ...subtextStyle\n };\n this._subTitle = group.createOrUpdateChild('subTitle', attr, 'richtext') as IRichText;\n } else if (isValid(subtext)) {\n this._subTitle = group.createOrUpdateChild(\n 'subTitle',\n {\n text: [subtext as string],\n ...subtextStyle,\n maxLineWidth: subtextStyle?.maxLineWidth ?? width,\n heightLimit: subtextStyle?.heightLimit,\n lineClamp: subtextStyle?.lineClamp,\n ellipsis: subtextStyle?.ellipsis ?? true,\n x: 0,\n y: maintextHeight\n },\n 'wrapText'\n ) as IText;\n }\n }\n\n const subtextHeight = this._subTitle ? this._subTitle?.AABBBounds.height() : 0;\n const subtextWidth = this._subTitle ? this._subTitle?.AABBBounds.width() : 0;\n\n // 设置宽高\n let titleWidth = Math.max(maintextWidth, subtextWidth);\n let titleHeight = maintextHeight + (subtextStyle?.height ?? subtextHeight);\n\n if (isValid(width)) {\n titleWidth = width;\n this._mainTitle?.setAttribute('maxLineWidth', width);\n this._subTitle?.setAttribute('maxLineWidth', width);\n }\n\n if (isValid(height)) {\n titleHeight = height;\n }\n\n if (isValid(minWidth) && titleWidth < minWidth) {\n titleWidth = minWidth;\n }\n if (isValid(maxWidth)) {\n this._mainTitle?.setAttribute('maxLineWidth', maxWidth);\n this._subTitle?.setAttribute('maxLineWidth', maxWidth);\n this._mainTitle?.setAttribute('maxWidth', maxWidth);\n this._subTitle?.setAttribute('maxWidth', maxWidth);\n if (titleWidth > maxWidth) {\n titleWidth = maxWidth;\n }\n }\n\n if (isValid(minHeight) && titleHeight < minHeight) {\n titleHeight = minHeight;\n }\n if (isValid(maxHeight)) {\n this._mainTitle?.setAttribute('maxHeight', maxHeight);\n this._subTitle?.setAttribute('maxHeight', maxHeight - maintextHeight);\n if (titleHeight > maxHeight) {\n titleHeight = maxHeight;\n }\n }\n\n group.attribute.width = titleWidth;\n group.attribute.height = titleHeight;\n group.attribute.boundsPadding = parsedPadding;\n\n // 设置对齐\n if (isValid(align) || isValid(textStyle?.align)) {\n const mainTitleAlign = textStyle?.align ? textStyle?.align : align;\n const mainTitleWidth = textStyle?.width ?? maintextWidth;\n if (mainTitleAlign === 'left') {\n this._mainTitle?.setAttribute('x', 0);\n this._mainTitle?.setAttribute('textAlign', 'left');\n } else if (mainTitleAlign === 'center') {\n this._mainTitle?.setAttribute('x', mainTitleWidth / 2);\n this._mainTitle?.setAttribute('textAlign', 'center');\n } else if (mainTitleAlign === 'right') {\n this._mainTitle?.setAttribute('x', mainTitleWidth);\n this._mainTitle?.setAttribute('textAlign', 'right');\n }\n }\n\n if (isValid(verticalAlign) || isValid(textStyle?.verticalAlign)) {\n const mainTitleVerticalAlign = textStyle?.verticalAlign ? textStyle?.verticalAlign : verticalAlign;\n const mainTitleHeight = textStyle?.height ? textStyle?.height : titleHeight;\n if (mainTitleVerticalAlign === 'top') {\n this._mainTitle?.setAttribute('y', 0);\n this._mainTitle?.setAttribute('textBaseline', 'top');\n } else if (mainTitleVerticalAlign === 'middle') {\n this._mainTitle?.setAttribute('y', mainTitleHeight / 2);\n this._mainTitle?.setAttribute('textBaseline', 'middle');\n } else if (mainTitleVerticalAlign === 'bottom') {\n this._mainTitle?.setAttribute('y', mainTitleHeight);\n this._mainTitle?.setAttribute('textBaseline', 'bottom');\n }\n }\n\n if (isValid(align) || isValid(subtextStyle?.align)) {\n const subTitleAlign = subtextStyle?.align ? subtextStyle?.align : align;\n const subTitleWidth = subtextStyle?.width ?? subtextWidth;\n if (subTitleAlign === 'left') {\n this._subTitle?.setAttribute('x', 0);\n this._subTitle?.setAttribute('textAlign', 'left');\n } else if (subTitleAlign === 'center') {\n this._subTitle?.setAttribute('x', subTitleWidth / 2);\n this._subTitle?.setAttribute('textAlign', 'center');\n } else if (subTitleAlign === 'right') {\n this._subTitle?.setAttribute('x', subTitleWidth);\n this._subTitle?.setAttribute('textAlign', 'right');\n }\n }\n\n if (isValid(verticalAlign) || isValid(textStyle?.verticalAlign)) {\n const subTitleVerticalAlign = subtextStyle?.verticalAlign ? subtextStyle?.verticalAlign : verticalAlign;\n const subTitleYStart = maintextHeight;\n const subTitleHeight = subtextStyle?.height ?? 0;\n if (subTitleVerticalAlign === 'top') {\n this._subTitle?.setAttribute('y', subTitleYStart);\n this._subTitle?.setAttribute('textBaseline', 'top');\n } else if (subTitleVerticalAlign === 'middle') {\n this._subTitle?.setAttribute('y', subTitleYStart + subTitleHeight / 2);\n this._subTitle?.setAttribute('textBaseline', 'middle');\n } else if (subTitleVerticalAlign === 'bottom') {\n this._subTitle?.setAttribute('y', subTitleYStart + subTitleHeight);\n this._subTitle?.setAttribute('textBaseline', 'bottom');\n }\n }\n }\n}\n"]}
|
package/cjs/tooltip/tooltip.d.ts
CHANGED
|
@@ -1,5 +1,6 @@
|
|
|
1
1
|
import { AbstractComponent } from '../core/base';
|
|
2
2
|
import type { TooltipAttributes, TooltipRowAttrs, TooltipRowStyleAttrs } from './type';
|
|
3
|
+
import type { ComponentOptions } from '../interface';
|
|
3
4
|
export declare class Tooltip extends AbstractComponent<Required<TooltipAttributes>> {
|
|
4
5
|
name: string;
|
|
5
6
|
private _tooltipPanel;
|
|
@@ -8,7 +9,7 @@ export declare class Tooltip extends AbstractComponent<Required<TooltipAttribute
|
|
|
8
9
|
private _tooltipTitle;
|
|
9
10
|
private _tooltipContent;
|
|
10
11
|
static defaultAttributes: Partial<TooltipAttributes>;
|
|
11
|
-
constructor(attributes: TooltipAttributes);
|
|
12
|
+
constructor(attributes: TooltipAttributes, options?: ComponentOptions);
|
|
12
13
|
protected render(): void;
|
|
13
14
|
setAttributes(params: Partial<Required<TooltipAttributes>>, forceUpdateTag?: boolean | undefined): void;
|
|
14
15
|
static calculateTooltipPosition(attribute: Partial<TooltipAttributes>): Partial<TooltipAttributes>;
|
package/cjs/tooltip/tooltip.js
CHANGED
|
@@ -7,8 +7,9 @@ Object.defineProperty(exports, "__esModule", {
|
|
|
7
7
|
const vrender_core_1 = require("@visactor/vrender-core"), vutils_1 = require("@visactor/vutils"), base_1 = require("../core/base"), text_1 = require("../util/text"), util_1 = require("../util"), util_2 = require("./util"), config_1 = require("./config"), constant_1 = require("../constant"), TOOLTIP_BACKGROUND_NAME = "tooltip-background", TOOLTIP_TITLE_NAME = "tooltip-title", TOOLTIP_CONTENT_NAME = "tooltip-content", TOOLTIP_SHAPE_NAME_SUFFIX = "shape", TOOLTIP_KEY_NAME_SUFFIX = "key", TOOLTIP_VALUE_NAME_SUFFIX = "value";
|
|
8
8
|
|
|
9
9
|
class Tooltip extends base_1.AbstractComponent {
|
|
10
|
-
constructor(attributes) {
|
|
11
|
-
super((0, vutils_1.merge)({}, Tooltip.defaultAttributes, attributes)),
|
|
10
|
+
constructor(attributes, options) {
|
|
11
|
+
super((null == options ? void 0 : options.skipDefault) ? attributes : (0, vutils_1.merge)({}, Tooltip.defaultAttributes, attributes), options),
|
|
12
|
+
this.name = "tooltip";
|
|
12
13
|
}
|
|
13
14
|
render() {
|
|
14
15
|
var _a;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../src/tooltip/tooltip.ts"],"names":[],"mappings":"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","file":"tooltip.js","sourcesContent":["/**\n * @description 标题组件\n */\nimport type {\n IGroup,\n IText,\n IRichText,\n IRect,\n ISymbol,\n IRichTextCharacter,\n ITextGraphicAttribute\n} from '@visactor/vrender-core';\nimport { builtinSymbolsMap, calculateLineHeight } from '@visactor/vrender-core';\nimport { merge, isValid, normalizePadding, isNil } from '@visactor/vutils';\nimport { AbstractComponent } from '../core/base';\nimport { initTextMeasure } from '../util/text';\nimport { isVisible } from '../util';\nimport type { TooltipAttributes, TooltipRowAttrs, TooltipRowStyleAttrs, TooltipRichTextAttrs } from './type';\nimport { getRichTextAttribute, mergeRowAttrs } from './util';\nimport { defaultAttributes, TOOLTIP_POSITION_ATTRIBUTES } from './config';\nimport type { TextMeasureInput } from '@visactor/vutils';\nimport { DEFAULT_HTML_TEXT_SPEC } from '../constant';\n\nconst TOOLTIP_BACKGROUND_NAME = 'tooltip-background';\nconst TOOLTIP_TITLE_NAME = 'tooltip-title';\nconst TOOLTIP_CONTENT_NAME = 'tooltip-content';\n\nconst TOOLTIP_SHAPE_NAME_SUFFIX = 'shape';\nconst TOOLTIP_KEY_NAME_SUFFIX = 'key';\nconst TOOLTIP_VALUE_NAME_SUFFIX = 'value';\n\nexport class Tooltip extends AbstractComponent<Required<TooltipAttributes>> {\n name = 'tooltip';\n\n // tooltip 背景\n private _tooltipPanel!: IRect;\n // tooltip title 容器\n private _tooltipTitleContainer!: IGroup;\n // tooltip title shape\n private _tooltipTitleSymbol!: ISymbol;\n // tooltip title 文本\n private _tooltipTitle!: IText | IRichText;\n // tooltip 内容项容器\n private _tooltipContent!: IGroup;\n\n static defaultAttributes: Partial<TooltipAttributes> = defaultAttributes;\n\n constructor(attributes: TooltipAttributes) {\n super(merge({}, Tooltip.defaultAttributes, attributes));\n }\n\n protected render() {\n const { visible, content, panel, keyWidth, valueWidth, hasContentShape, autoCalculatePosition, autoMeasure } =\n this.attribute;\n\n if (!visible) {\n this.hideAll();\n return;\n }\n\n if (autoMeasure) {\n Tooltip.measureTooltip(this.attribute);\n }\n if (autoCalculatePosition) {\n Tooltip.calculateTooltipPosition(this.attribute);\n }\n\n const padding = normalizePadding(this.attribute.padding);\n\n // 创建背景层\n this._tooltipPanel = this.createOrUpdateChild(\n TOOLTIP_BACKGROUND_NAME,\n {\n visible: true,\n ...panel\n },\n 'rect'\n ) as IRect;\n\n // 创建标题层\n this._tooltipTitleContainer = this.createOrUpdateChild(\n TOOLTIP_TITLE_NAME,\n { visible: true, x: padding[3], y: padding[0] },\n 'group'\n ) as IGroup;\n\n // 合并样式\n const titleAttr = Tooltip.getTitleAttr(this.attribute);\n\n // 创建标题 shape\n // 创建 symbol\n this._tooltipTitleSymbol = this._tooltipTitleContainer.createOrUpdateChild(\n `${TOOLTIP_TITLE_NAME}-${TOOLTIP_SHAPE_NAME_SUFFIX}`,\n merge({ symbolType: 'circle' }, titleAttr.shape, {\n visible: isVisible(titleAttr) && isVisible(titleAttr.shape)\n }),\n 'symbol'\n ) as ISymbol;\n\n // 文本\n if (\n typeof titleAttr.value.text === 'object' &&\n titleAttr.value.text !== null &&\n ((titleAttr.value.text as TooltipRichTextAttrs).type === 'rich' ||\n (titleAttr.value.text as TooltipRichTextAttrs).type === 'html')\n ) {\n if ((titleAttr.value.text as TooltipRichTextAttrs).type === 'rich') {\n this._tooltipTitle = this._tooltipTitleContainer.createOrUpdateChild(\n `${TOOLTIP_TITLE_NAME}-${TOOLTIP_VALUE_NAME_SUFFIX}`,\n {\n visible: isVisible(titleAttr) && isVisible(titleAttr.value),\n ...getRichTextAttribute(titleAttr.value)\n },\n 'richtext'\n ) as IRichText;\n } else if ((titleAttr.value.text as TooltipRichTextAttrs).type === 'html') {\n this._tooltipTitle = this._tooltipTitleContainer.createOrUpdateChild(\n `${TOOLTIP_TITLE_NAME}-${TOOLTIP_VALUE_NAME_SUFFIX}`,\n {\n html: {\n dom: (titleAttr.value.text as TooltipRichTextAttrs).text as string,\n ...DEFAULT_HTML_TEXT_SPEC,\n ...titleAttr.value\n },\n visible: isVisible(titleAttr) && isVisible(titleAttr.value),\n width: titleAttr.value.width,\n height: titleAttr.value.height,\n wordBreak: titleAttr.value.wordBreak as any,\n textAlign: titleAttr.value.textAlign as any,\n textBaseline: titleAttr.value.textBaseline as any,\n singleLine: false,\n textConfig: [],\n ...titleAttr.value\n },\n 'richtext'\n ) as IRichText;\n }\n } else if (titleAttr.value.multiLine) {\n this._tooltipTitle = this._tooltipTitleContainer.createOrUpdateChild(\n `${TOOLTIP_TITLE_NAME}-${TOOLTIP_VALUE_NAME_SUFFIX}`,\n {\n visible: isVisible(titleAttr) && isVisible(titleAttr.value),\n ...getRichTextAttribute(titleAttr.value)\n },\n 'richtext'\n ) as IRichText;\n } else {\n this._tooltipTitle = this._tooltipTitleContainer.createOrUpdateChild(\n `${TOOLTIP_TITLE_NAME}-${TOOLTIP_VALUE_NAME_SUFFIX}`,\n {\n text: (titleAttr.value.text ?? '') as any,\n visible: isVisible(titleAttr) && isVisible(titleAttr.value),\n ...titleAttr.value\n },\n 'text'\n ) as IText;\n }\n\n // 调整标题的位置\n const titlePaddingLeft = isVisible(titleAttr.shape) ? titleAttr.shape.size + titleAttr.shape.spacing : 0;\n const { textAlign, textBaseline } = titleAttr.value;\n const contentWidth = panel.width - padding[3] - padding[0] - titlePaddingLeft;\n if (textAlign === 'center') {\n this._tooltipTitle.setAttribute('x', titlePaddingLeft + contentWidth / 2);\n } else if (textAlign === 'right' || textAlign === 'end') {\n // 右对齐\n this._tooltipTitle.setAttribute('x', titlePaddingLeft + contentWidth);\n } else {\n // 默认左对齐\n this._tooltipTitle.setAttribute('x', titlePaddingLeft);\n }\n if (textBaseline === 'bottom') {\n this._tooltipTitle.setAttribute('y', titleAttr.height);\n } else if (textBaseline === 'middle') {\n this._tooltipTitle.setAttribute('y', titleAttr.height / 2);\n } else {\n this._tooltipTitle.setAttribute('y', 0);\n }\n const titleHeight = isVisible(titleAttr) ? titleAttr.height + titleAttr.spaceRow : 0;\n\n // 创建内容层\n this._tooltipContent = this.createOrUpdateChild(TOOLTIP_CONTENT_NAME, { visible: true }, 'group') as IGroup;\n this._tooltipContent.removeAllChild(); // 清空内容区\n\n if (content?.length) {\n this._tooltipContent.setAttribute('x', padding[3]);\n this._tooltipContent.setAttribute('y', padding[0] + titleHeight);\n\n let lastYPos = 0;\n content.forEach((item, i) => {\n // 合并样式\n const itemAttr = Tooltip.getContentAttr(this.attribute, i);\n\n if (!isVisible(itemAttr)) {\n return;\n }\n\n const itemGroupName = `${TOOLTIP_CONTENT_NAME}-${i}`;\n const itemGroup = this._tooltipContent.createOrUpdateChild(\n itemGroupName,\n { visible: true, x: 0, y: lastYPos },\n 'group'\n ) as IGroup;\n\n let x = 0;\n if (isVisible(itemAttr.shape)) {\n // 存在 symbol\n itemGroup.createOrUpdateChild(\n `${itemGroupName}-${TOOLTIP_SHAPE_NAME_SUFFIX}`,\n {\n visible: true,\n x: itemAttr.shape.size / 2,\n y:\n itemAttr.shape.size / 2 +\n ((calculateLineHeight(itemAttr.key.lineHeight, itemAttr.key.fontSize) ?? itemAttr.key.fontSize) -\n itemAttr.shape.size) /\n 2,\n ...itemAttr.shape\n },\n 'symbol'\n ) as ISymbol;\n }\n if (hasContentShape) {\n x += itemAttr.shape.size + itemAttr.shape.spacing;\n }\n\n if (isVisible(itemAttr.key)) {\n let element: IRichText | IText;\n if (itemAttr.key.multiLine) {\n element = itemGroup.createOrUpdateChild(\n `${itemGroupName}-${TOOLTIP_KEY_NAME_SUFFIX}`,\n {\n visible: true,\n ...getRichTextAttribute(itemAttr.key),\n textBaseline: 'top'\n },\n 'richtext'\n ) as IRichText;\n } else if (\n typeof itemAttr.key.text === 'object' &&\n itemAttr.key.text !== null &&\n ((itemAttr.key.text as TooltipRichTextAttrs).type === 'rich' ||\n (itemAttr.key.text as TooltipRichTextAttrs).type === 'html')\n ) {\n if ((itemAttr.key.text as TooltipRichTextAttrs).type === 'rich') {\n element = itemGroup.createOrUpdateChild(\n `${itemGroupName}-${TOOLTIP_VALUE_NAME_SUFFIX}`,\n {\n visible: true,\n ...getRichTextAttribute(itemAttr.key),\n textBaseline: 'top'\n },\n 'richtext'\n ) as IRichText;\n } else {\n element = itemGroup.createOrUpdateChild(\n `${itemGroupName}-${TOOLTIP_VALUE_NAME_SUFFIX}`,\n {\n html: {\n dom: (itemAttr.key.text as TooltipRichTextAttrs).text as string,\n ...DEFAULT_HTML_TEXT_SPEC,\n ...itemAttr.key\n }\n },\n 'richtext'\n ) as IRichText;\n }\n } else {\n element = itemGroup.createOrUpdateChild(\n `${itemGroupName}-${TOOLTIP_KEY_NAME_SUFFIX}`,\n {\n visible: true,\n text: (itemAttr.key.text ?? '') as any,\n ...itemAttr.key,\n textBaseline: 'top'\n },\n 'text'\n ) as IText;\n }\n\n const { textAlign } = itemAttr.key;\n if (textAlign === 'center') {\n element.setAttribute('x', x + keyWidth / 2);\n } else if (textAlign === 'right' || textAlign === 'end') {\n // 右对齐\n element.setAttribute('x', x + keyWidth);\n } else {\n // 默认左对齐\n element.setAttribute('x', x);\n }\n\n element.setAttribute('y', 0);\n x += keyWidth + itemAttr.key.spacing;\n }\n\n if (isVisible(itemAttr.value)) {\n let element: IRichText | IText;\n if (itemAttr.value.multiLine) {\n element = itemGroup.createOrUpdateChild(\n `${itemGroupName}-${TOOLTIP_VALUE_NAME_SUFFIX}`,\n {\n visible: true,\n ...getRichTextAttribute(itemAttr.value),\n textBaseline: 'top'\n },\n 'richtext'\n ) as IRichText;\n } else if (\n typeof itemAttr.value.text === 'object' &&\n itemAttr.value.text !== null &&\n ((itemAttr.value.text as TooltipRichTextAttrs).type === 'rich' ||\n (itemAttr.value.text as TooltipRichTextAttrs).type === 'html')\n ) {\n if ((itemAttr.value.text as TooltipRichTextAttrs).type === 'rich') {\n element = itemGroup.createOrUpdateChild(\n `${itemGroupName}-${TOOLTIP_VALUE_NAME_SUFFIX}`,\n {\n visible: true,\n ...getRichTextAttribute(itemAttr.value),\n textBaseline: 'top'\n },\n 'richtext'\n ) as IRichText;\n } else {\n element = itemGroup.createOrUpdateChild(\n `${itemGroupName}-${TOOLTIP_VALUE_NAME_SUFFIX}`,\n {\n html: {\n dom: (itemAttr.value.text as TooltipRichTextAttrs).text as string,\n container: '',\n width: 30,\n height: 30,\n style: {},\n ...itemAttr.value\n }\n },\n 'richtext'\n ) as IRichText;\n }\n } else {\n element = itemGroup.createOrUpdateChild(\n `${itemGroupName}-${TOOLTIP_VALUE_NAME_SUFFIX}`,\n {\n visible: true,\n text: (itemAttr.value.text ?? '') as any,\n ...itemAttr.value,\n textBaseline: 'top'\n },\n 'text'\n ) as IText;\n }\n\n let textAlign = 'right';\n if (isValid(itemAttr.value.textAlign)) {\n textAlign = itemAttr.value.textAlign;\n } else if (!isVisible(itemAttr.key)) {\n textAlign = 'left';\n }\n element.setAttribute('textAlign', textAlign);\n\n if (textAlign === 'center') {\n element.setAttribute('x', x + valueWidth / 2);\n } else if (textAlign === 'right' || textAlign === 'end') {\n // 右对齐\n element.setAttribute('x', x + valueWidth);\n } else {\n // 默认左对齐\n element.setAttribute('x', x);\n }\n x += valueWidth;\n\n element.setAttribute('y', 0);\n\n itemGroup.add(element);\n }\n\n lastYPos += itemAttr.height + itemAttr.spaceRow;\n });\n }\n }\n\n setAttributes(params: Partial<Required<TooltipAttributes>>, forceUpdateTag?: boolean | undefined): void {\n const keys = Object.keys(params) as (keyof TooltipAttributes)[];\n // 优化:只更改 tooltip 位置\n if (this.attribute.autoCalculatePosition && keys.every(key => TOOLTIP_POSITION_ATTRIBUTES.includes(key))) {\n this._mergeAttributes(params, keys);\n // 计算 x y\n if (isNil(this.attribute.panel.width) && this.attribute.autoMeasure) {\n Tooltip.measureTooltip(this.attribute);\n }\n Tooltip.calculateTooltipPosition(this.attribute);\n // 应用 x y\n super.setAttributes(\n {\n x: this.attribute.x,\n y: this.attribute.y\n },\n forceUpdateTag\n );\n } else {\n super.setAttributes(params, forceUpdateTag);\n }\n }\n\n static calculateTooltipPosition(attribute: Partial<TooltipAttributes>): Partial<TooltipAttributes> {\n const { width: tooltipBoxWidth = 0, height: tooltipBoxHeight = 0 } = attribute.panel;\n\n const { offsetX, offsetY, pointerX, pointerY, positionX, positionY, parentBounds } = attribute;\n\n let x = pointerX;\n let y = pointerY;\n if (positionX === 'left') {\n x -= tooltipBoxWidth + offsetX;\n } else if (positionX === 'center') {\n x -= tooltipBoxWidth / 2;\n } else {\n x += offsetX;\n }\n if (positionY === 'top') {\n y -= tooltipBoxHeight + offsetY;\n } else if (positionY === 'middle') {\n y -= tooltipBoxHeight / 2;\n } else {\n y += offsetY;\n }\n\n /* 确保tooltip在视区内 */\n if (x + tooltipBoxWidth > parentBounds.x2) {\n // 位置不超出视区右界\n x -= tooltipBoxWidth + offsetX;\n }\n if (y + tooltipBoxHeight > parentBounds.y2) {\n // 位置不超出视区下界\n y -= tooltipBoxHeight + offsetY;\n }\n if (x < parentBounds.x1) {\n // 位置不超出视区左界\n x = parentBounds.x1;\n }\n if (y < parentBounds.y1) {\n // 位置不超出视区上界\n y = parentBounds.y1;\n }\n\n attribute.x = x;\n attribute.y = y;\n\n return attribute;\n }\n\n static measureTooltip(attribute: Partial<TooltipAttributes>): Partial<TooltipAttributes> {\n const { content, contentStyle } = attribute;\n const padding = normalizePadding(attribute.padding);\n // 合并样式\n const titleAttr = Tooltip.getTitleAttr(attribute);\n\n let maxWidth = 0;\n let containerHeight = padding[0] + padding[2];\n\n // calculate title\n let titleMaxHeight = 0;\n const { value: titleValue, shape: titleShape } = titleAttr;\n const { visible: titleHasShape = false, symbolType: titleShapeType = '' } = titleShape ?? {};\n\n if (isValid(titleValue) && typeof titleAttr.value.text !== 'object') {\n const { width, height } = initTextMeasure(titleValue as Partial<ITextGraphicAttribute>).quickMeasure(\n titleValue.text as TextMeasureInput\n );\n maxWidth = width;\n titleMaxHeight = height;\n }\n if (titleHasShape && builtinSymbolsMap[titleShapeType]) {\n maxWidth += titleShape.size + titleShape.spacing;\n titleMaxHeight = Math.max(titleShape.size, titleMaxHeight);\n }\n\n if (attribute.title) {\n attribute.title.width = maxWidth;\n attribute.title.height = titleMaxHeight;\n }\n\n if (isVisible(titleAttr)) {\n containerHeight += titleMaxHeight + titleAttr.spaceRow;\n }\n\n // calculate content\n if (content?.length) {\n // filter content\n const filteredContent: [TooltipRowAttrs, TooltipRowAttrs][] = [];\n content.forEach((item, i) => {\n // 合并样式\n const itemAttr = Tooltip.getContentAttr(attribute, i);\n if ((item.key || item.value) && isVisible(itemAttr)) {\n filteredContent.push([item, itemAttr]);\n }\n });\n\n if (filteredContent.length) {\n let hasContentShape = false;\n const shapeWidths: number[] = [];\n const keyWidths: number[] = [];\n const valueWidths: number[] = [];\n\n filteredContent.forEach(([item, itemAttr], i) => {\n const { key, value, shape, spaceRow } = itemAttr;\n const itemHasShape = isVisible(shape);\n const itemShapeType = shape?.symbolType ?? '';\n\n const keyTextMeasure = initTextMeasure(key as Partial<ITextGraphicAttribute>);\n const valueTextMeasure = initTextMeasure(value as Partial<ITextGraphicAttribute>);\n\n let itemHeight = 0;\n if (isVisible(key)) {\n const { width, height } = keyTextMeasure.quickMeasure(key.text as TextMeasureInput);\n keyWidths.push(width);\n itemHeight = Math.max(itemHeight, height);\n }\n if (isVisible(value)) {\n const { width, height } = valueTextMeasure.quickMeasure(value.text as TextMeasureInput);\n valueWidths.push(width);\n itemHeight = Math.max(itemHeight, height);\n }\n if (itemHasShape && builtinSymbolsMap[itemShapeType]) {\n hasContentShape = true;\n shapeWidths.push(shape.size);\n itemHeight = Math.max(shape.size, itemHeight);\n }\n\n item.height = itemHeight;\n containerHeight += itemHeight;\n if (i < filteredContent.length - 1) {\n containerHeight += spaceRow ?? contentStyle.spaceRow;\n }\n });\n\n const maxShapeWidth = shapeWidths.length ? Math.max(...shapeWidths) : 0; // shape 需要对齐\n const maxKeyWidth = keyWidths.length ? Math.max(...keyWidths) : 0; // name 需要对齐\n const maxValueWidth = valueWidths.length ? Math.max(...valueWidths) : 0; // value 需要对齐\n maxWidth = Math.max(\n maxKeyWidth +\n maxValueWidth +\n contentStyle.key.spacing +\n contentStyle.value.spacing +\n (hasContentShape ? maxShapeWidth + contentStyle.shape.spacing : 0),\n maxWidth\n );\n content.forEach(item => {\n item.width = maxWidth;\n });\n attribute.hasContentShape = hasContentShape;\n attribute.keyWidth = maxKeyWidth;\n attribute.valueWidth = maxValueWidth;\n }\n }\n\n attribute.panel.width = maxWidth + padding[1] + padding[3];\n attribute.panel.height = containerHeight;\n\n return attribute;\n }\n\n static getTitleAttr(attribute: Partial<TooltipAttributes>): TooltipRowAttrs & TooltipRowStyleAttrs {\n return mergeRowAttrs(\n {},\n Tooltip.defaultAttributes.titleStyle,\n Tooltip.defaultAttributes.title,\n attribute.titleStyle,\n attribute.title\n );\n }\n\n static getContentAttr(attribute: Partial<TooltipAttributes>, index: number): TooltipRowAttrs & TooltipRowStyleAttrs {\n return mergeRowAttrs({}, Tooltip.defaultAttributes.contentStyle, attribute.contentStyle, attribute.content[index]);\n }\n}\n"]}
|
|
1
|
+
{"version":3,"sources":["../src/tooltip/tooltip.ts"],"names":[],"mappings":"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","file":"tooltip.js","sourcesContent":["/**\n * @description 标题组件\n */\nimport type {\n IGroup,\n IText,\n IRichText,\n IRect,\n ISymbol,\n IRichTextCharacter,\n ITextGraphicAttribute\n} from '@visactor/vrender-core';\nimport { builtinSymbolsMap, calculateLineHeight } from '@visactor/vrender-core';\nimport { merge, isValid, normalizePadding, isNil } from '@visactor/vutils';\nimport { AbstractComponent } from '../core/base';\nimport { initTextMeasure } from '../util/text';\nimport { isVisible } from '../util';\nimport type { TooltipAttributes, TooltipRowAttrs, TooltipRowStyleAttrs, TooltipRichTextAttrs } from './type';\nimport { getRichTextAttribute, mergeRowAttrs } from './util';\nimport { defaultAttributes, TOOLTIP_POSITION_ATTRIBUTES } from './config';\nimport type { ComponentOptions } from '../interface';\nimport type { TextMeasureInput } from '@visactor/vutils';\nimport { DEFAULT_HTML_TEXT_SPEC } from '../constant';\n\nconst TOOLTIP_BACKGROUND_NAME = 'tooltip-background';\nconst TOOLTIP_TITLE_NAME = 'tooltip-title';\nconst TOOLTIP_CONTENT_NAME = 'tooltip-content';\n\nconst TOOLTIP_SHAPE_NAME_SUFFIX = 'shape';\nconst TOOLTIP_KEY_NAME_SUFFIX = 'key';\nconst TOOLTIP_VALUE_NAME_SUFFIX = 'value';\n\nexport class Tooltip extends AbstractComponent<Required<TooltipAttributes>> {\n name = 'tooltip';\n\n // tooltip 背景\n private _tooltipPanel!: IRect;\n // tooltip title 容器\n private _tooltipTitleContainer!: IGroup;\n // tooltip title shape\n private _tooltipTitleSymbol!: ISymbol;\n // tooltip title 文本\n private _tooltipTitle!: IText | IRichText;\n // tooltip 内容项容器\n private _tooltipContent!: IGroup;\n\n static defaultAttributes: Partial<TooltipAttributes> = defaultAttributes;\n\n constructor(attributes: TooltipAttributes, options?: ComponentOptions) {\n super(options?.skipDefault ? attributes : merge({}, Tooltip.defaultAttributes, attributes), options);\n }\n\n protected render() {\n const { visible, content, panel, keyWidth, valueWidth, hasContentShape, autoCalculatePosition, autoMeasure } =\n this.attribute;\n\n if (!visible) {\n this.hideAll();\n return;\n }\n\n if (autoMeasure) {\n Tooltip.measureTooltip(this.attribute);\n }\n if (autoCalculatePosition) {\n Tooltip.calculateTooltipPosition(this.attribute);\n }\n\n const padding = normalizePadding(this.attribute.padding);\n\n // 创建背景层\n this._tooltipPanel = this.createOrUpdateChild(\n TOOLTIP_BACKGROUND_NAME,\n {\n visible: true,\n ...panel\n },\n 'rect'\n ) as IRect;\n\n // 创建标题层\n this._tooltipTitleContainer = this.createOrUpdateChild(\n TOOLTIP_TITLE_NAME,\n { visible: true, x: padding[3], y: padding[0] },\n 'group'\n ) as IGroup;\n\n // 合并样式\n const titleAttr = Tooltip.getTitleAttr(this.attribute);\n\n // 创建标题 shape\n // 创建 symbol\n this._tooltipTitleSymbol = this._tooltipTitleContainer.createOrUpdateChild(\n `${TOOLTIP_TITLE_NAME}-${TOOLTIP_SHAPE_NAME_SUFFIX}`,\n merge({ symbolType: 'circle' }, titleAttr.shape, {\n visible: isVisible(titleAttr) && isVisible(titleAttr.shape)\n }),\n 'symbol'\n ) as ISymbol;\n\n // 文本\n if (\n typeof titleAttr.value.text === 'object' &&\n titleAttr.value.text !== null &&\n ((titleAttr.value.text as TooltipRichTextAttrs).type === 'rich' ||\n (titleAttr.value.text as TooltipRichTextAttrs).type === 'html')\n ) {\n if ((titleAttr.value.text as TooltipRichTextAttrs).type === 'rich') {\n this._tooltipTitle = this._tooltipTitleContainer.createOrUpdateChild(\n `${TOOLTIP_TITLE_NAME}-${TOOLTIP_VALUE_NAME_SUFFIX}`,\n {\n visible: isVisible(titleAttr) && isVisible(titleAttr.value),\n ...getRichTextAttribute(titleAttr.value)\n },\n 'richtext'\n ) as IRichText;\n } else if ((titleAttr.value.text as TooltipRichTextAttrs).type === 'html') {\n this._tooltipTitle = this._tooltipTitleContainer.createOrUpdateChild(\n `${TOOLTIP_TITLE_NAME}-${TOOLTIP_VALUE_NAME_SUFFIX}`,\n {\n html: {\n dom: (titleAttr.value.text as TooltipRichTextAttrs).text as string,\n ...DEFAULT_HTML_TEXT_SPEC,\n ...titleAttr.value\n },\n visible: isVisible(titleAttr) && isVisible(titleAttr.value),\n width: titleAttr.value.width,\n height: titleAttr.value.height,\n wordBreak: titleAttr.value.wordBreak as any,\n textAlign: titleAttr.value.textAlign as any,\n textBaseline: titleAttr.value.textBaseline as any,\n singleLine: false,\n textConfig: [],\n ...titleAttr.value\n },\n 'richtext'\n ) as IRichText;\n }\n } else if (titleAttr.value.multiLine) {\n this._tooltipTitle = this._tooltipTitleContainer.createOrUpdateChild(\n `${TOOLTIP_TITLE_NAME}-${TOOLTIP_VALUE_NAME_SUFFIX}`,\n {\n visible: isVisible(titleAttr) && isVisible(titleAttr.value),\n ...getRichTextAttribute(titleAttr.value)\n },\n 'richtext'\n ) as IRichText;\n } else {\n this._tooltipTitle = this._tooltipTitleContainer.createOrUpdateChild(\n `${TOOLTIP_TITLE_NAME}-${TOOLTIP_VALUE_NAME_SUFFIX}`,\n {\n text: (titleAttr.value.text ?? '') as any,\n visible: isVisible(titleAttr) && isVisible(titleAttr.value),\n ...titleAttr.value\n },\n 'text'\n ) as IText;\n }\n\n // 调整标题的位置\n const titlePaddingLeft = isVisible(titleAttr.shape) ? titleAttr.shape.size + titleAttr.shape.spacing : 0;\n const { textAlign, textBaseline } = titleAttr.value;\n const contentWidth = panel.width - padding[3] - padding[0] - titlePaddingLeft;\n if (textAlign === 'center') {\n this._tooltipTitle.setAttribute('x', titlePaddingLeft + contentWidth / 2);\n } else if (textAlign === 'right' || textAlign === 'end') {\n // 右对齐\n this._tooltipTitle.setAttribute('x', titlePaddingLeft + contentWidth);\n } else {\n // 默认左对齐\n this._tooltipTitle.setAttribute('x', titlePaddingLeft);\n }\n if (textBaseline === 'bottom') {\n this._tooltipTitle.setAttribute('y', titleAttr.height);\n } else if (textBaseline === 'middle') {\n this._tooltipTitle.setAttribute('y', titleAttr.height / 2);\n } else {\n this._tooltipTitle.setAttribute('y', 0);\n }\n const titleHeight = isVisible(titleAttr) ? titleAttr.height + titleAttr.spaceRow : 0;\n\n // 创建内容层\n this._tooltipContent = this.createOrUpdateChild(TOOLTIP_CONTENT_NAME, { visible: true }, 'group') as IGroup;\n this._tooltipContent.removeAllChild(); // 清空内容区\n\n if (content?.length) {\n this._tooltipContent.setAttribute('x', padding[3]);\n this._tooltipContent.setAttribute('y', padding[0] + titleHeight);\n\n let lastYPos = 0;\n content.forEach((item, i) => {\n // 合并样式\n const itemAttr = Tooltip.getContentAttr(this.attribute, i);\n\n if (!isVisible(itemAttr)) {\n return;\n }\n\n const itemGroupName = `${TOOLTIP_CONTENT_NAME}-${i}`;\n const itemGroup = this._tooltipContent.createOrUpdateChild(\n itemGroupName,\n { visible: true, x: 0, y: lastYPos },\n 'group'\n ) as IGroup;\n\n let x = 0;\n if (isVisible(itemAttr.shape)) {\n // 存在 symbol\n itemGroup.createOrUpdateChild(\n `${itemGroupName}-${TOOLTIP_SHAPE_NAME_SUFFIX}`,\n {\n visible: true,\n x: itemAttr.shape.size / 2,\n y:\n itemAttr.shape.size / 2 +\n ((calculateLineHeight(itemAttr.key.lineHeight, itemAttr.key.fontSize) ?? itemAttr.key.fontSize) -\n itemAttr.shape.size) /\n 2,\n ...itemAttr.shape\n },\n 'symbol'\n ) as ISymbol;\n }\n if (hasContentShape) {\n x += itemAttr.shape.size + itemAttr.shape.spacing;\n }\n\n if (isVisible(itemAttr.key)) {\n let element: IRichText | IText;\n if (itemAttr.key.multiLine) {\n element = itemGroup.createOrUpdateChild(\n `${itemGroupName}-${TOOLTIP_KEY_NAME_SUFFIX}`,\n {\n visible: true,\n ...getRichTextAttribute(itemAttr.key),\n textBaseline: 'top'\n },\n 'richtext'\n ) as IRichText;\n } else if (\n typeof itemAttr.key.text === 'object' &&\n itemAttr.key.text !== null &&\n ((itemAttr.key.text as TooltipRichTextAttrs).type === 'rich' ||\n (itemAttr.key.text as TooltipRichTextAttrs).type === 'html')\n ) {\n if ((itemAttr.key.text as TooltipRichTextAttrs).type === 'rich') {\n element = itemGroup.createOrUpdateChild(\n `${itemGroupName}-${TOOLTIP_VALUE_NAME_SUFFIX}`,\n {\n visible: true,\n ...getRichTextAttribute(itemAttr.key),\n textBaseline: 'top'\n },\n 'richtext'\n ) as IRichText;\n } else {\n element = itemGroup.createOrUpdateChild(\n `${itemGroupName}-${TOOLTIP_VALUE_NAME_SUFFIX}`,\n {\n html: {\n dom: (itemAttr.key.text as TooltipRichTextAttrs).text as string,\n ...DEFAULT_HTML_TEXT_SPEC,\n ...itemAttr.key\n }\n },\n 'richtext'\n ) as IRichText;\n }\n } else {\n element = itemGroup.createOrUpdateChild(\n `${itemGroupName}-${TOOLTIP_KEY_NAME_SUFFIX}`,\n {\n visible: true,\n text: (itemAttr.key.text ?? '') as any,\n ...itemAttr.key,\n textBaseline: 'top'\n },\n 'text'\n ) as IText;\n }\n\n const { textAlign } = itemAttr.key;\n if (textAlign === 'center') {\n element.setAttribute('x', x + keyWidth / 2);\n } else if (textAlign === 'right' || textAlign === 'end') {\n // 右对齐\n element.setAttribute('x', x + keyWidth);\n } else {\n // 默认左对齐\n element.setAttribute('x', x);\n }\n\n element.setAttribute('y', 0);\n x += keyWidth + itemAttr.key.spacing;\n }\n\n if (isVisible(itemAttr.value)) {\n let element: IRichText | IText;\n if (itemAttr.value.multiLine) {\n element = itemGroup.createOrUpdateChild(\n `${itemGroupName}-${TOOLTIP_VALUE_NAME_SUFFIX}`,\n {\n visible: true,\n ...getRichTextAttribute(itemAttr.value),\n textBaseline: 'top'\n },\n 'richtext'\n ) as IRichText;\n } else if (\n typeof itemAttr.value.text === 'object' &&\n itemAttr.value.text !== null &&\n ((itemAttr.value.text as TooltipRichTextAttrs).type === 'rich' ||\n (itemAttr.value.text as TooltipRichTextAttrs).type === 'html')\n ) {\n if ((itemAttr.value.text as TooltipRichTextAttrs).type === 'rich') {\n element = itemGroup.createOrUpdateChild(\n `${itemGroupName}-${TOOLTIP_VALUE_NAME_SUFFIX}`,\n {\n visible: true,\n ...getRichTextAttribute(itemAttr.value),\n textBaseline: 'top'\n },\n 'richtext'\n ) as IRichText;\n } else {\n element = itemGroup.createOrUpdateChild(\n `${itemGroupName}-${TOOLTIP_VALUE_NAME_SUFFIX}`,\n {\n html: {\n dom: (itemAttr.value.text as TooltipRichTextAttrs).text as string,\n container: '',\n width: 30,\n height: 30,\n style: {},\n ...itemAttr.value\n }\n },\n 'richtext'\n ) as IRichText;\n }\n } else {\n element = itemGroup.createOrUpdateChild(\n `${itemGroupName}-${TOOLTIP_VALUE_NAME_SUFFIX}`,\n {\n visible: true,\n text: (itemAttr.value.text ?? '') as any,\n ...itemAttr.value,\n textBaseline: 'top'\n },\n 'text'\n ) as IText;\n }\n\n let textAlign = 'right';\n if (isValid(itemAttr.value.textAlign)) {\n textAlign = itemAttr.value.textAlign;\n } else if (!isVisible(itemAttr.key)) {\n textAlign = 'left';\n }\n element.setAttribute('textAlign', textAlign);\n\n if (textAlign === 'center') {\n element.setAttribute('x', x + valueWidth / 2);\n } else if (textAlign === 'right' || textAlign === 'end') {\n // 右对齐\n element.setAttribute('x', x + valueWidth);\n } else {\n // 默认左对齐\n element.setAttribute('x', x);\n }\n x += valueWidth;\n\n element.setAttribute('y', 0);\n\n itemGroup.add(element);\n }\n\n lastYPos += itemAttr.height + itemAttr.spaceRow;\n });\n }\n }\n\n setAttributes(params: Partial<Required<TooltipAttributes>>, forceUpdateTag?: boolean | undefined): void {\n const keys = Object.keys(params) as (keyof TooltipAttributes)[];\n // 优化:只更改 tooltip 位置\n if (this.attribute.autoCalculatePosition && keys.every(key => TOOLTIP_POSITION_ATTRIBUTES.includes(key))) {\n this._mergeAttributes(params, keys);\n // 计算 x y\n if (isNil(this.attribute.panel.width) && this.attribute.autoMeasure) {\n Tooltip.measureTooltip(this.attribute);\n }\n Tooltip.calculateTooltipPosition(this.attribute);\n // 应用 x y\n super.setAttributes(\n {\n x: this.attribute.x,\n y: this.attribute.y\n },\n forceUpdateTag\n );\n } else {\n super.setAttributes(params, forceUpdateTag);\n }\n }\n\n static calculateTooltipPosition(attribute: Partial<TooltipAttributes>): Partial<TooltipAttributes> {\n const { width: tooltipBoxWidth = 0, height: tooltipBoxHeight = 0 } = attribute.panel;\n\n const { offsetX, offsetY, pointerX, pointerY, positionX, positionY, parentBounds } = attribute;\n\n let x = pointerX;\n let y = pointerY;\n if (positionX === 'left') {\n x -= tooltipBoxWidth + offsetX;\n } else if (positionX === 'center') {\n x -= tooltipBoxWidth / 2;\n } else {\n x += offsetX;\n }\n if (positionY === 'top') {\n y -= tooltipBoxHeight + offsetY;\n } else if (positionY === 'middle') {\n y -= tooltipBoxHeight / 2;\n } else {\n y += offsetY;\n }\n\n /* 确保tooltip在视区内 */\n if (x + tooltipBoxWidth > parentBounds.x2) {\n // 位置不超出视区右界\n x -= tooltipBoxWidth + offsetX;\n }\n if (y + tooltipBoxHeight > parentBounds.y2) {\n // 位置不超出视区下界\n y -= tooltipBoxHeight + offsetY;\n }\n if (x < parentBounds.x1) {\n // 位置不超出视区左界\n x = parentBounds.x1;\n }\n if (y < parentBounds.y1) {\n // 位置不超出视区上界\n y = parentBounds.y1;\n }\n\n attribute.x = x;\n attribute.y = y;\n\n return attribute;\n }\n\n static measureTooltip(attribute: Partial<TooltipAttributes>): Partial<TooltipAttributes> {\n const { content, contentStyle } = attribute;\n const padding = normalizePadding(attribute.padding);\n // 合并样式\n const titleAttr = Tooltip.getTitleAttr(attribute);\n\n let maxWidth = 0;\n let containerHeight = padding[0] + padding[2];\n\n // calculate title\n let titleMaxHeight = 0;\n const { value: titleValue, shape: titleShape } = titleAttr;\n const { visible: titleHasShape = false, symbolType: titleShapeType = '' } = titleShape ?? {};\n\n if (isValid(titleValue) && typeof titleAttr.value.text !== 'object') {\n const { width, height } = initTextMeasure(titleValue as Partial<ITextGraphicAttribute>).quickMeasure(\n titleValue.text as TextMeasureInput\n );\n maxWidth = width;\n titleMaxHeight = height;\n }\n if (titleHasShape && builtinSymbolsMap[titleShapeType]) {\n maxWidth += titleShape.size + titleShape.spacing;\n titleMaxHeight = Math.max(titleShape.size, titleMaxHeight);\n }\n\n if (attribute.title) {\n attribute.title.width = maxWidth;\n attribute.title.height = titleMaxHeight;\n }\n\n if (isVisible(titleAttr)) {\n containerHeight += titleMaxHeight + titleAttr.spaceRow;\n }\n\n // calculate content\n if (content?.length) {\n // filter content\n const filteredContent: [TooltipRowAttrs, TooltipRowAttrs][] = [];\n content.forEach((item, i) => {\n // 合并样式\n const itemAttr = Tooltip.getContentAttr(attribute, i);\n if ((item.key || item.value) && isVisible(itemAttr)) {\n filteredContent.push([item, itemAttr]);\n }\n });\n\n if (filteredContent.length) {\n let hasContentShape = false;\n const shapeWidths: number[] = [];\n const keyWidths: number[] = [];\n const valueWidths: number[] = [];\n\n filteredContent.forEach(([item, itemAttr], i) => {\n const { key, value, shape, spaceRow } = itemAttr;\n const itemHasShape = isVisible(shape);\n const itemShapeType = shape?.symbolType ?? '';\n\n const keyTextMeasure = initTextMeasure(key as Partial<ITextGraphicAttribute>);\n const valueTextMeasure = initTextMeasure(value as Partial<ITextGraphicAttribute>);\n\n let itemHeight = 0;\n if (isVisible(key)) {\n const { width, height } = keyTextMeasure.quickMeasure(key.text as TextMeasureInput);\n keyWidths.push(width);\n itemHeight = Math.max(itemHeight, height);\n }\n if (isVisible(value)) {\n const { width, height } = valueTextMeasure.quickMeasure(value.text as TextMeasureInput);\n valueWidths.push(width);\n itemHeight = Math.max(itemHeight, height);\n }\n if (itemHasShape && builtinSymbolsMap[itemShapeType]) {\n hasContentShape = true;\n shapeWidths.push(shape.size);\n itemHeight = Math.max(shape.size, itemHeight);\n }\n\n item.height = itemHeight;\n containerHeight += itemHeight;\n if (i < filteredContent.length - 1) {\n containerHeight += spaceRow ?? contentStyle.spaceRow;\n }\n });\n\n const maxShapeWidth = shapeWidths.length ? Math.max(...shapeWidths) : 0; // shape 需要对齐\n const maxKeyWidth = keyWidths.length ? Math.max(...keyWidths) : 0; // name 需要对齐\n const maxValueWidth = valueWidths.length ? Math.max(...valueWidths) : 0; // value 需要对齐\n maxWidth = Math.max(\n maxKeyWidth +\n maxValueWidth +\n contentStyle.key.spacing +\n contentStyle.value.spacing +\n (hasContentShape ? maxShapeWidth + contentStyle.shape.spacing : 0),\n maxWidth\n );\n content.forEach(item => {\n item.width = maxWidth;\n });\n attribute.hasContentShape = hasContentShape;\n attribute.keyWidth = maxKeyWidth;\n attribute.valueWidth = maxValueWidth;\n }\n }\n\n attribute.panel.width = maxWidth + padding[1] + padding[3];\n attribute.panel.height = containerHeight;\n\n return attribute;\n }\n\n static getTitleAttr(attribute: Partial<TooltipAttributes>): TooltipRowAttrs & TooltipRowStyleAttrs {\n return mergeRowAttrs(\n {},\n Tooltip.defaultAttributes.titleStyle,\n Tooltip.defaultAttributes.title,\n attribute.titleStyle,\n attribute.title\n );\n }\n\n static getContentAttr(attribute: Partial<TooltipAttributes>, index: number): TooltipRowAttrs & TooltipRowStyleAttrs {\n return mergeRowAttrs({}, Tooltip.defaultAttributes.contentStyle, attribute.contentStyle, attribute.content[index]);\n }\n}\n"]}
|
package/cjs/tooltip/util.js
CHANGED
|
@@ -17,14 +17,16 @@ exports.mergeRowAttrs = mergeRowAttrs;
|
|
|
17
17
|
|
|
18
18
|
const getRichTextAttribute = attr => {
|
|
19
19
|
const {width: width, height: height, wordBreak: wordBreak = "break-word", textAlign: textAlign, textBaseline: textBaseline, text: text} = attr;
|
|
20
|
-
return
|
|
20
|
+
return Array.isArray(text) ? {
|
|
21
21
|
width: width,
|
|
22
22
|
height: height,
|
|
23
23
|
wordBreak: wordBreak,
|
|
24
24
|
textAlign: textAlign,
|
|
25
25
|
textBaseline: textBaseline,
|
|
26
26
|
singleLine: !1,
|
|
27
|
-
textConfig: text.text
|
|
27
|
+
textConfig: (0, vutils_1.array)(text).map((text => Object.assign(Object.assign({}, attr), {
|
|
28
|
+
text: text
|
|
29
|
+
})))
|
|
28
30
|
} : {
|
|
29
31
|
width: width,
|
|
30
32
|
height: height,
|
|
@@ -32,9 +34,7 @@ const getRichTextAttribute = attr => {
|
|
|
32
34
|
textAlign: textAlign,
|
|
33
35
|
textBaseline: textBaseline,
|
|
34
36
|
singleLine: !1,
|
|
35
|
-
textConfig:
|
|
36
|
-
text: text
|
|
37
|
-
})))
|
|
37
|
+
textConfig: text.text
|
|
38
38
|
};
|
|
39
39
|
};
|
|
40
40
|
|
package/cjs/tooltip/util.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../src/tooltip/util.ts"],"names":[],"mappings":";;;AAAA,6CAAuD;AAKhD,MAAM,aAAa,GAAG,CAC3B,MAA8C,EAC9C,GAAG,OAAmD,EACd,EAAE;IAC1C,MAAM,SAAS,GAAG,CAAC,MAAM,CAAC,KAAK,EAAE,GAAG,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,aAAD,CAAC,uBAAD,CAAC,CAAE,KAAK,CAAC,CAAC,CAAC;IAChE,MAAM,OAAO,GAAG,CAAC,MAAM,CAAC,GAAG,EAAE,GAAG,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,aAAD,CAAC,uBAAD,CAAC,CAAE,GAAG,CAAC,CAAC,CAAC;IAC1D,MAAM,SAAS,GAAG,CAAC,MAAM,CAAC,KAAK,EAAE,GAAG,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,aAAD,CAAC,uBAAD,CAAC,CAAE,KAAK,CAAC,CAAC,CAAC;IAEhE,OAAO,IAAA,cAAK,EAAC,MAAM,EAAE,GAAG,OAAO,EAAE;QAC/B,KAAK,EAAE,SAAS,CAAC,KAAK,CAAC,cAAK,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,IAAA,cAAK,EAAC,EAAE,EAAE,GAAG,SAAS,CAAC;QACnE,GAAG,EAAE,OAAO,CAAC,KAAK,CAAC,cAAK,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,IAAA,cAAK,EAAC,EAAE,EAAE,GAAG,OAAO,CAAC;QAC7D,KAAK,EAAE,SAAS,CAAC,KAAK,CAAC,cAAK,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,IAAA,cAAK,EAAC,EAAE,EAAE,GAAG,SAAS,CAAC;KACpE,CAA2C,CAAC;AAC/C,CAAC,CAAC;AAbW,QAAA,aAAa,iBAaxB;AAEK,MAAM,oBAAoB,GAAG,CAAC,IAAsB,EAA6B,EAAE;IACxF,MAAM,EAAE,KAAK,EAAE,MAAM,EAAE,SAAS,GAAG,YAAY,EAAE,SAAS,EAAE,YAAY,EAAE,IAAI,EAAE,GAAG,IAAI,CAAC;IACxF,IAAI,OAAO,IAAI,
|
|
1
|
+
{"version":3,"sources":["../src/tooltip/util.ts"],"names":[],"mappings":";;;AAAA,6CAAuD;AAKhD,MAAM,aAAa,GAAG,CAC3B,MAA8C,EAC9C,GAAG,OAAmD,EACd,EAAE;IAC1C,MAAM,SAAS,GAAG,CAAC,MAAM,CAAC,KAAK,EAAE,GAAG,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,aAAD,CAAC,uBAAD,CAAC,CAAE,KAAK,CAAC,CAAC,CAAC;IAChE,MAAM,OAAO,GAAG,CAAC,MAAM,CAAC,GAAG,EAAE,GAAG,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,aAAD,CAAC,uBAAD,CAAC,CAAE,GAAG,CAAC,CAAC,CAAC;IAC1D,MAAM,SAAS,GAAG,CAAC,MAAM,CAAC,KAAK,EAAE,GAAG,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,aAAD,CAAC,uBAAD,CAAC,CAAE,KAAK,CAAC,CAAC,CAAC;IAEhE,OAAO,IAAA,cAAK,EAAC,MAAM,EAAE,GAAG,OAAO,EAAE;QAC/B,KAAK,EAAE,SAAS,CAAC,KAAK,CAAC,cAAK,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,IAAA,cAAK,EAAC,EAAE,EAAE,GAAG,SAAS,CAAC;QACnE,GAAG,EAAE,OAAO,CAAC,KAAK,CAAC,cAAK,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,IAAA,cAAK,EAAC,EAAE,EAAE,GAAG,OAAO,CAAC;QAC7D,KAAK,EAAE,SAAS,CAAC,KAAK,CAAC,cAAK,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,IAAA,cAAK,EAAC,EAAE,EAAE,GAAG,SAAS,CAAC;KACpE,CAA2C,CAAC;AAC/C,CAAC,CAAC;AAbW,QAAA,aAAa,iBAaxB;AAEK,MAAM,oBAAoB,GAAG,CAAC,IAAsB,EAA6B,EAAE;IACxF,MAAM,EAAE,KAAK,EAAE,MAAM,EAAE,SAAS,GAAG,YAAY,EAAE,SAAS,EAAE,YAAY,EAAE,IAAI,EAAE,GAAG,IAAI,CAAC;IACxF,IAAI,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC,EAAE;QACvB,OAAO;YACL,KAAK;YACL,MAAM;YACN,SAAS,EAAE,SAAgB;YAC3B,SAAS,EAAE,SAAgB;YAC3B,YAAY,EAAE,YAAmB;YACjC,UAAU,EAAE,KAAK;YACjB,UAAU,EAAE,IAAA,cAAK,EAAC,IAAgB,CAAC,CAAC,GAAG,CACrC,IAAI,CAAC,EAAE,CACL,CAAC,gCACI,IAAI,KACP,IAAI,GACG,CAAA,CACZ;SACF,CAAC;KACH;IACD,OAAO;QACL,KAAK;QACL,MAAM;QACN,SAAS,EAAE,SAAgB;QAC3B,SAAS,EAAE,SAAgB;QAC3B,YAAY,EAAE,YAAmB;QACjC,UAAU,EAAE,KAAK;QACjB,UAAU,EAAG,IAA6B,CAAC,IAA4B;KACxE,CAAC;AACJ,CAAC,CAAC;AA5BW,QAAA,oBAAoB,wBA4B/B","file":"util.js","sourcesContent":["import { array, isNil, merge } from '@visactor/vutils';\nimport type { IRichTextGraphicAttribute } from '@visactor/vrender-core';\nimport type { TooltipRowAttrs, TooltipRowStyleAttrs, TooltipTextAttrs, TooltipRichTextAttrs } from './type';\nimport type { IRichTextCharacter } from '@visactor/vrender-core';\n\nexport const mergeRowAttrs = (\n target: TooltipRowAttrs | TooltipRowStyleAttrs,\n ...sources: (TooltipRowAttrs | TooltipRowStyleAttrs)[]\n): TooltipRowAttrs | TooltipRowStyleAttrs => {\n const shapeList = [target.shape, ...sources.map(s => s?.shape)];\n const keyList = [target.key, ...sources.map(s => s?.key)];\n const valueList = [target.value, ...sources.map(s => s?.value)];\n\n return merge(target, ...sources, {\n shape: shapeList.every(isNil) ? undefined : merge({}, ...shapeList),\n key: keyList.every(isNil) ? undefined : merge({}, ...keyList),\n value: valueList.every(isNil) ? undefined : merge({}, ...valueList)\n }) as TooltipRowAttrs | TooltipRowStyleAttrs;\n};\n\nexport const getRichTextAttribute = (attr: TooltipTextAttrs): IRichTextGraphicAttribute => {\n const { width, height, wordBreak = 'break-word', textAlign, textBaseline, text } = attr;\n if (Array.isArray(text)) {\n return {\n width,\n height,\n wordBreak: wordBreak as any,\n textAlign: textAlign as any,\n textBaseline: textBaseline as any,\n singleLine: false,\n textConfig: array(text as string[]).map(\n text =>\n ({\n ...attr,\n text\n } as any)\n )\n };\n }\n return {\n width,\n height,\n wordBreak: wordBreak as any,\n textAlign: textAlign as any,\n textBaseline: textBaseline as any,\n singleLine: false,\n textConfig: (text as TooltipRichTextAttrs).text as IRichTextCharacter[]\n };\n};\n"]}
|
|
@@ -1,4 +1,4 @@
|
|
|
1
1
|
import type { IColor } from '@visactor/vrender-core';
|
|
2
|
-
export declare function labelSmartInvert(foregroundColorOrigin: IColor | undefined, backgroundColorOrogin: IColor | undefined, textType?: string | undefined, contrastRatiosThreshold?: number, alternativeColors?: string | string[]): IColor | undefined;
|
|
3
|
-
export declare function contrastAccessibilityChecker(foregroundColor: IColor | undefined, backgroundColor: IColor | undefined, textType?: IColor | undefined, contrastRatiosThreshold?: number): boolean;
|
|
2
|
+
export declare function labelSmartInvert(foregroundColorOrigin: IColor | undefined, backgroundColorOrogin: IColor | undefined, textType?: string | undefined, contrastRatiosThreshold?: number, alternativeColors?: string | string[], mode?: string): IColor | undefined;
|
|
3
|
+
export declare function contrastAccessibilityChecker(foregroundColor: IColor | undefined, backgroundColor: IColor | undefined, textType?: IColor | undefined, contrastRatiosThreshold?: number, mode?: string): boolean;
|
|
4
4
|
export declare function smartInvertStrategy(fillStrategy: string, baseColor: IColor, invertColor: IColor, similarColor: IColor): IColor;
|
|
@@ -6,20 +6,24 @@ Object.defineProperty(exports, "__esModule", {
|
|
|
6
6
|
|
|
7
7
|
const vutils_1 = require("@visactor/vutils"), defaultAlternativeColors = [ "#ffffff", "#000000" ], {Color: Color} = vutils_1.ColorUtil;
|
|
8
8
|
|
|
9
|
-
function labelSmartInvert(foregroundColorOrigin, backgroundColorOrogin, textType, contrastRatiosThreshold, alternativeColors) {
|
|
9
|
+
function labelSmartInvert(foregroundColorOrigin, backgroundColorOrogin, textType, contrastRatiosThreshold, alternativeColors, mode) {
|
|
10
10
|
if ("string" != typeof foregroundColorOrigin || "string" != typeof backgroundColorOrogin) return foregroundColorOrigin;
|
|
11
11
|
const foregroundColor = new Color(foregroundColorOrigin).toHex(), backgroundColor = new Color(backgroundColorOrogin).toHex();
|
|
12
|
-
return contrastAccessibilityChecker(foregroundColor, backgroundColor, textType, contrastRatiosThreshold) ? foregroundColor : improveContrastReverse(foregroundColor, backgroundColor, textType, contrastRatiosThreshold, alternativeColors);
|
|
12
|
+
return contrastAccessibilityChecker(foregroundColor, backgroundColor, textType, contrastRatiosThreshold, mode) ? foregroundColor : improveContrastReverse(foregroundColor, backgroundColor, textType, contrastRatiosThreshold, alternativeColors, mode);
|
|
13
13
|
}
|
|
14
14
|
|
|
15
|
-
function improveContrastReverse(foregroundColor, backgroundColor, textType, contrastRatiosThreshold, alternativeColors) {
|
|
15
|
+
function improveContrastReverse(foregroundColor, backgroundColor, textType, contrastRatiosThreshold, alternativeColors, mode) {
|
|
16
16
|
const alternativeColorPalletes = [];
|
|
17
17
|
alternativeColors && (alternativeColors instanceof Array ? alternativeColorPalletes.push(...alternativeColors) : alternativeColorPalletes.push(alternativeColors)),
|
|
18
18
|
alternativeColorPalletes.push(...defaultAlternativeColors);
|
|
19
|
-
for (const alternativeColor of alternativeColorPalletes) if (foregroundColor !== alternativeColor && contrastAccessibilityChecker(alternativeColor, backgroundColor, textType, contrastRatiosThreshold)) return alternativeColor;
|
|
19
|
+
for (const alternativeColor of alternativeColorPalletes) if (foregroundColor !== alternativeColor && contrastAccessibilityChecker(alternativeColor, backgroundColor, textType, contrastRatiosThreshold, mode)) return alternativeColor;
|
|
20
20
|
}
|
|
21
21
|
|
|
22
|
-
function contrastAccessibilityChecker(foregroundColor, backgroundColor, textType, contrastRatiosThreshold) {
|
|
22
|
+
function contrastAccessibilityChecker(foregroundColor, backgroundColor, textType, contrastRatiosThreshold, mode) {
|
|
23
|
+
if ("lightness" === mode) {
|
|
24
|
+
const backgroundColorLightness = Color.getColorBrightness(new Color(backgroundColor));
|
|
25
|
+
return Color.getColorBrightness(new Color(foregroundColor)) < .5 ? backgroundColorLightness >= .5 : backgroundColorLightness < .5;
|
|
26
|
+
}
|
|
23
27
|
return contrastRatiosThreshold ? contrastRatios(foregroundColor, backgroundColor) > contrastRatiosThreshold : "largeText" === textType ? contrastRatios(foregroundColor, backgroundColor) > 3 : contrastRatios(foregroundColor, backgroundColor) > 4.5;
|
|
24
28
|
}
|
|
25
29
|
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../src/util/label-smartInvert.ts"],"names":[],"mappings":";;;AACA,6CAA6C;AAE7C,MAAM,wBAAwB,GAAa,CAAC,SAAS,EAAE,SAAS,CAAC,CAAC;AAClE,MAAM,EAAE,KAAK,EAAE,GAAG,kBAAS,CAAC;AAQ5B,SAAgB,gBAAgB,CAC9B,qBAAyC,EACzC,qBAAyC,EACzC,QAA6B,EAC7B,uBAAgC,EAChC,iBAAqC;IAErC,IAAI,OAAO,qBAAqB,KAAK,QAAQ,IAAI,OAAO,qBAAqB,KAAK,QAAQ,EAAE;QAC1F,OAAO,qBAAqB,CAAC;KAC9B;IACD,MAAM,eAAe,GAAG,IAAI,KAAK,CAAC,qBAA+B,CAAC,CAAC,KAAK,EAAE,CAAC;IAC3E,MAAM,eAAe,GAAG,IAAI,KAAK,CAAC,qBAA+B,CAAC,CAAC,KAAK,EAAE,CAAC;IAC3E,IAAI,CAAC,4BAA4B,CAAC,eAAe,EAAE,eAAe,EAAE,QAAQ,EAAE,uBAAuB,CAAC,EAAE;QACtG,OAAO,sBAAsB,CAC3B,eAAe,EACf,eAAe,EACf,QAAQ,EACR,uBAAuB,EACvB,iBAAiB,CAClB,CAAC;KACH;IACD,OAAO,eAAe,CAAC;AACzB,CAAC;AAtBD,4CAsBC;AASD,SAAS,sBAAsB,CAC7B,eAAmC,EACnC,eAAmC,EACnC,QAA6B,EAC7B,uBAAgC,EAChC,iBAAqC;IAErC,MAAM,wBAAwB,GAAa,EAAE,CAAC;IAC9C,IAAI,iBAAiB,EAAE;QACrB,IAAI,iBAAiB,YAAY,KAAK,EAAE;YACtC,wBAAwB,CAAC,IAAI,CAAC,GAAG,iBAAiB,CAAC,CAAC;SACrD;aAAM;YACL,wBAAwB,CAAC,IAAI,CAAC,iBAAiB,CAAC,CAAC;SAClD;KACF;IACD,wBAAwB,CAAC,IAAI,CAAC,GAAG,wBAAwB,CAAC,CAAC;IAC3D,KAAK,MAAM,gBAAgB,IAAI,wBAAwB,EAAE;QACvD,IAAI,eAAe,KAAK,gBAAgB,EAAE;YACxC,SAAS;SACV;QACD,IAAI,4BAA4B,CAAC,gBAAgB,EAAE,eAAe,EAAE,QAAQ,EAAE,uBAAuB,CAAC,EAAE;YACtG,OAAO,gBAAgB,CAAC;SACzB;KACF;IACD,OAAO,SAAS,CAAC;AACnB,CAAC;AAWD,SAAgB,4BAA4B,CAC1C,eAAmC,EACnC,eAAmC,EACnC,QAA6B,EAC7B,uBAAgC;IAGhC,IAAI,uBAAuB,EAAE;QAC3B,IAAI,cAAc,CAAC,eAAe,EAAE,eAAe,CAAC,GAAG,uBAAuB,EAAE;YAC9E,OAAO,IAAI,CAAC;SACb;QACD,OAAO,KAAK,CAAC;KACd;SAAM,IAAI,QAAQ,KAAK,WAAW,EAAE;QACnC,IAAI,cAAc,CAAC,eAAe,EAAE,eAAe,CAAC,GAAG,CAAC,EAAE;YACxD,OAAO,IAAI,CAAC;SACb;QACD,OAAO,KAAK,CAAC;KACd;IACD,IAAI,cAAc,CAAC,eAAe,EAAE,eAAe,CAAC,GAAG,GAAG,EAAE;QAC1D,OAAO,IAAI,CAAC;KACb;IACD,OAAO,KAAK,CAAC;AACf,CAAC;AAtBD,oEAsBC;AAYD,SAAS,cAAc,CAAC,eAAmC,EAAE,eAAmC;IAC9F,MAAM,wBAAwB,GAAG,iBAAiB,CAAC,eAAyB,CAAC,CAAC;IAC9E,MAAM,wBAAwB,GAAG,iBAAiB,CAAC,eAAyB,CAAC,CAAC;IAC9E,MAAM,EAAE,GAAG,wBAAwB,GAAG,wBAAwB,CAAC,CAAC,CAAC,wBAAwB,CAAC,CAAC,CAAC,wBAAwB,CAAC;IACrH,MAAM,EAAE,GAAG,wBAAwB,GAAG,wBAAwB,CAAC,CAAC,CAAC,wBAAwB,CAAC,CAAC,CAAC,wBAAwB,CAAC;IACrH,MAAM,cAAc,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,CAAC;IACjD,OAAO,cAAc,CAAC;AACxB,CAAC;AAiBD,SAAS,iBAAiB,CAAC,KAAa;IACtC,MAAM,OAAO,GAAG,kBAAS,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC;IAC1C,MAAM,KAAK,GAAG,OAAO,CAAC,CAAC,CAAC,GAAG,GAAG,CAAC;IAC/B,MAAM,KAAK,GAAG,OAAO,CAAC,CAAC,CAAC,GAAG,GAAG,CAAC;IAC/B,MAAM,KAAK,GAAG,OAAO,CAAC,CAAC,CAAC,GAAG,GAAG,CAAC;IAC/B,IAAI,CAAC,CAAC;IACN,IAAI,CAAC,CAAC;IACN,IAAI,CAAC,CAAC;IACN,IAAI,KAAK,IAAI,OAAO,EAAE;QACpB,CAAC,GAAG,KAAK,GAAG,KAAK,CAAC;KACnB;SAAM;QACL,CAAC,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,KAAK,GAAG,KAAK,CAAC,GAAG,KAAK,EAAE,GAAG,CAAC,CAAC;KAC5C;IACD,IAAI,KAAK,IAAI,OAAO,EAAE;QACpB,CAAC,GAAG,KAAK,GAAG,KAAK,CAAC;KACnB;SAAM;QACL,CAAC,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,KAAK,GAAG,KAAK,CAAC,GAAG,KAAK,EAAE,GAAG,CAAC,CAAC;KAC5C;IACD,IAAI,KAAK,IAAI,OAAO,EAAE;QACpB,CAAC,GAAG,KAAK,GAAG,KAAK,CAAC;KACnB;SAAM;QACL,CAAC,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,KAAK,GAAG,KAAK,CAAC,GAAG,KAAK,EAAE,GAAG,CAAC,CAAC;KAC5C;IACD,MAAM,CAAC,GAAG,MAAM,GAAG,CAAC,GAAG,MAAM,GAAG,CAAC,GAAG,MAAM,GAAG,CAAC,CAAC;IAC/C,OAAO,CAAC,CAAC;AACX,CAAC;AAQD,SAAS,gBAAgB,CAAC,WAA+B;IACvD,IAAK,WAAsB,aAAtB,WAAW,uBAAX,WAAW,CAAa,QAAQ,CAAC,GAAG,CAAC,EAAE;QAC1C,OAAO,WAAW,CAAC;KACpB;IACD,MAAM,CAAC,GAAG,IAAI,kBAAS,CAAC,KAAK,CAAC,WAAqB,CAAC,CAAC;IACrD,MAAM,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,GAAG,CAAC,CAAC,KAAK,CAAC;IAC5B,OAAO,GAAG,GAAG,kBAAS,CAAC,QAAQ,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC;AAC3C,CAAC;AAED,SAAgB,mBAAmB,CACjC,YAAoB,EACpB,SAAiB,EACjB,WAAmB,EACnB,YAAoB;IAEpB,IAAI,MAAM,CAAC;IACX,QAAQ,YAAY,EAAE;QACpB,KAAK,MAAM;YACT,MAAM,GAAG,SAAS,CAAC;YACnB,MAAM;QACR,KAAK,YAAY;YACf,MAAM,GAAG,WAAW,CAAC;YACrB,MAAM;QACR,KAAK,aAAa;YAChB,MAAM,GAAG,YAAY,CAAC;QACxB;YACE,MAAM;KACT;IACD,OAAO,MAAM,CAAC;AAChB,CAAC;AApBD,kDAoBC","file":"label-smartInvert.js","sourcesContent":["import type { IColor } from '@visactor/vrender-core';\nimport { ColorUtil } from '@visactor/vutils';\n\nconst defaultAlternativeColors: string[] = ['#ffffff', '#000000'];\nconst { Color } = ColorUtil;\n\n/**\n * 标签智能反色\n * @param foregroundColorOrigin\n * @param backgroundColorOrogin\n * @returns\n */\nexport function labelSmartInvert(\n foregroundColorOrigin: IColor | undefined,\n backgroundColorOrogin: IColor | undefined,\n textType?: string | undefined,\n contrastRatiosThreshold?: number,\n alternativeColors?: string | string[]\n): IColor | undefined {\n if (typeof foregroundColorOrigin !== 'string' || typeof backgroundColorOrogin !== 'string') {\n return foregroundColorOrigin;\n }\n const foregroundColor = new Color(foregroundColorOrigin as string).toHex();\n const backgroundColor = new Color(backgroundColorOrogin as string).toHex();\n if (!contrastAccessibilityChecker(foregroundColor, backgroundColor, textType, contrastRatiosThreshold)) {\n return improveContrastReverse(\n foregroundColor,\n backgroundColor,\n textType,\n contrastRatiosThreshold,\n alternativeColors\n );\n }\n return foregroundColor;\n}\n\n/**\n * 提升对比度\n * 对于对比度不足阈值的情况,推荐备选颜色色板中的颜色提升对比\n * @param foregroundColor\n * @param backgroundColor\n * @returns\n */\nfunction improveContrastReverse(\n foregroundColor: IColor | undefined,\n backgroundColor: IColor | undefined,\n textType?: IColor | undefined,\n contrastRatiosThreshold?: number,\n alternativeColors?: string | string[]\n) {\n const alternativeColorPalletes: string[] = [];\n if (alternativeColors) {\n if (alternativeColors instanceof Array) {\n alternativeColorPalletes.push(...alternativeColors);\n } else {\n alternativeColorPalletes.push(alternativeColors);\n }\n }\n alternativeColorPalletes.push(...defaultAlternativeColors);\n for (const alternativeColor of alternativeColorPalletes) {\n if (foregroundColor === alternativeColor) {\n continue;\n }\n if (contrastAccessibilityChecker(alternativeColor, backgroundColor, textType, contrastRatiosThreshold)) {\n return alternativeColor;\n }\n }\n return undefined;\n}\n\n/**\n * 颜色对比度可行性检查 https://webaim.org/articles/contrast/\n * - WCAG 2.0 AA 级要求普通文本的对比度至少为 4.5:1,大文本的对比度至少为 3:1。(目前按照此标准)\n * - WCAG 2.1 要求图形和用户界面组件(例如表单输入边框)的对比度至少为 3:1。\n * - WCAG AAA 级要求普通文本的对比度至少为 7:1,大文本的对比度至少为 4.5:1。\n * @param foregroundColor\n * @param backgroundColor\n * @returns\n */\nexport function contrastAccessibilityChecker(\n foregroundColor: IColor | undefined,\n backgroundColor: IColor | undefined,\n textType?: IColor | undefined,\n contrastRatiosThreshold?: number\n): boolean {\n //Contrast ratios can range from 1 to 21\n if (contrastRatiosThreshold) {\n if (contrastRatios(foregroundColor, backgroundColor) > contrastRatiosThreshold) {\n return true;\n }\n return false;\n } else if (textType === 'largeText') {\n if (contrastRatios(foregroundColor, backgroundColor) > 3) {\n return true;\n }\n return false;\n }\n if (contrastRatios(foregroundColor, backgroundColor) > 4.5) {\n return true;\n }\n return false;\n}\n\n/**\n * 计算颜色对比度 https://webaim.org/articles/contrast/\n * Contrast ratios can range from 1 to 21 (commonly written 1:1 to 21:1).\n * (L1 + 0.05) / (L2 + 0.05), whereby:\n * L1 is the relative luminance of the lighter of the colors, and\n * L2 is the relative luminance of the darker of the colors.\n * @param foregroundColor\n * @param backgroundColor\n * @returns\n */\nfunction contrastRatios(foregroundColor: IColor | undefined, backgroundColor: IColor | undefined): number {\n const foregroundColorLuminance = getColorLuminance(foregroundColor as string);\n const backgroundColorLuminance = getColorLuminance(backgroundColor as string);\n const L1 = foregroundColorLuminance > backgroundColorLuminance ? foregroundColorLuminance : backgroundColorLuminance;\n const L2 = foregroundColorLuminance > backgroundColorLuminance ? backgroundColorLuminance : foregroundColorLuminance;\n const contrastRatios = (L1 + 0.05) / (L2 + 0.05);\n return contrastRatios;\n}\n\n/**\n * 计算相对亮度 https://webaim.org/articles/contrast/\n * the relative brightness of any point in a colorspace, normalized to 0 for darkest black and 1 for lightest white\n * Note 1: For the sRGB colorspace, the relative luminance of a color is defined as\n * L = 0.2126 * R + 0.7152 * G + 0.0722 * B where R, G and B are defined as:\n * if RsRGB <= 0.03928 then R = RsRGB/12.92 else R = ((RsRGB+0.055)/1.055) ^ 2.4\n * if GsRGB <= 0.03928 then G = GsRGB/12.92 else G = ((GsRGB+0.055)/1.055) ^ 2.4\n * if BsRGB <= 0.03928 then B = BsRGB/12.92 else B = ((BsRGB+0.055)/1.055) ^ 2.4\n * and RsRGB, GsRGB, and BsRGB are defined as:\n * RsRGB = R8bit/255\n * GsRGB = G8bit/255\n * BsRGB = B8bit/255\n * @param color\n * @returns\n */\nfunction getColorLuminance(color: string): number {\n const rgb8bit = ColorUtil.hexToRgb(color);\n const RsRGB = rgb8bit[0] / 255;\n const GsRGB = rgb8bit[1] / 255;\n const BsRGB = rgb8bit[2] / 255;\n let R;\n let G;\n let B;\n if (RsRGB <= 0.03928) {\n R = RsRGB / 12.92;\n } else {\n R = Math.pow((RsRGB + 0.055) / 1.055, 2.4);\n }\n if (GsRGB <= 0.03928) {\n G = GsRGB / 12.92;\n } else {\n G = Math.pow((GsRGB + 0.055) / 1.055, 2.4);\n }\n if (BsRGB <= 0.03928) {\n B = BsRGB / 12.92;\n } else {\n B = Math.pow((BsRGB + 0.055) / 1.055, 2.4);\n }\n const L = 0.2126 * R + 0.7152 * G + 0.0722 * B;\n return L;\n}\n\n/**\n * 规范化color格式为hex\n * 当color为颜色名称或rgb时,对其进行规范化处理\n * @param originColor\n * @returns\n */\nfunction formatColorToHex(originColor: IColor | undefined) {\n if ((originColor as string)?.includes('#')) {\n return originColor;\n }\n const c = new ColorUtil.Color(originColor as string);\n const { r, g, b } = c.color;\n return '#' + ColorUtil.rgbToHex(r, g, b);\n}\n\nexport function smartInvertStrategy(\n fillStrategy: string,\n baseColor: IColor,\n invertColor: IColor,\n similarColor: IColor\n) {\n let result;\n switch (fillStrategy) {\n case 'base':\n result = baseColor;\n break;\n case 'invertBase':\n result = invertColor;\n break;\n case 'similarBase':\n result = similarColor;\n default:\n break;\n }\n return result;\n}\n"]}
|
|
1
|
+
{"version":3,"sources":["../src/util/label-smartInvert.ts"],"names":[],"mappings":"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","file":"label-smartInvert.js","sourcesContent":["import type { IColor } from '@visactor/vrender-core';\nimport { ColorUtil } from '@visactor/vutils';\n\nconst defaultAlternativeColors: string[] = ['#ffffff', '#000000'];\nconst { Color } = ColorUtil;\n\n/**\n * 标签智能反色\n * @param foregroundColorOrigin\n * @param backgroundColorOrogin\n * @returns\n */\nexport function labelSmartInvert(\n foregroundColorOrigin: IColor | undefined,\n backgroundColorOrogin: IColor | undefined,\n textType?: string | undefined,\n contrastRatiosThreshold?: number,\n alternativeColors?: string | string[],\n mode?: string\n): IColor | undefined {\n if (typeof foregroundColorOrigin !== 'string' || typeof backgroundColorOrogin !== 'string') {\n return foregroundColorOrigin;\n }\n const foregroundColor = new Color(foregroundColorOrigin as string).toHex();\n const backgroundColor = new Color(backgroundColorOrogin as string).toHex();\n if (!contrastAccessibilityChecker(foregroundColor, backgroundColor, textType, contrastRatiosThreshold, mode)) {\n return improveContrastReverse(\n foregroundColor,\n backgroundColor,\n textType,\n contrastRatiosThreshold,\n alternativeColors,\n mode\n );\n }\n return foregroundColor;\n}\n\n/**\n * 提升对比度\n * 对于对比度不足阈值的情况,推荐备选颜色色板中的颜色提升对比\n * @param foregroundColor\n * @param backgroundColor\n * @returns\n */\nfunction improveContrastReverse(\n foregroundColor: IColor | undefined,\n backgroundColor: IColor | undefined,\n textType?: IColor | undefined,\n contrastRatiosThreshold?: number,\n alternativeColors?: string | string[],\n mode?: string\n) {\n const alternativeColorPalletes: string[] = [];\n if (alternativeColors) {\n if (alternativeColors instanceof Array) {\n alternativeColorPalletes.push(...alternativeColors);\n } else {\n alternativeColorPalletes.push(alternativeColors);\n }\n }\n alternativeColorPalletes.push(...defaultAlternativeColors);\n for (const alternativeColor of alternativeColorPalletes) {\n if (foregroundColor === alternativeColor) {\n continue;\n }\n if (contrastAccessibilityChecker(alternativeColor, backgroundColor, textType, contrastRatiosThreshold, mode)) {\n return alternativeColor;\n }\n }\n return undefined;\n}\n\n/**\n * 颜色对比度可行性检查 https://webaim.org/articles/contrast/\n * - WCAG 2.0 AA 级要求普通文本的对比度至少为 4.5:1,大文本的对比度至少为 3:1。(目前按照此标准)\n * - WCAG 2.1 要求图形和用户界面组件(例如表单输入边框)的对比度至少为 3:1。\n * - WCAG AAA 级要求普通文本的对比度至少为 7:1,大文本的对比度至少为 4.5:1。\n * @param foregroundColor\n * @param backgroundColor\n * @returns\n */\nexport function contrastAccessibilityChecker(\n foregroundColor: IColor | undefined,\n backgroundColor: IColor | undefined,\n textType?: IColor | undefined,\n contrastRatiosThreshold?: number,\n mode?: string\n): boolean {\n if (mode === 'lightness') {\n const backgroundColorLightness = Color.getColorBrightness(new Color(backgroundColor as string));\n const foregroundColorLightness = Color.getColorBrightness(new Color(foregroundColor as string));\n if (foregroundColorLightness < 0.5) {\n // 文字颜色为'#ffffff'\n if (backgroundColorLightness >= 0.5) {\n return true;\n }\n return false;\n }\n // 文字颜色为‘#000000'\n if (backgroundColorLightness < 0.5) {\n return true;\n }\n return false;\n }\n //Contrast ratios can range from 1 to 21\n if (contrastRatiosThreshold) {\n if (contrastRatios(foregroundColor, backgroundColor) > contrastRatiosThreshold) {\n return true;\n }\n return false;\n } else if (textType === 'largeText') {\n if (contrastRatios(foregroundColor, backgroundColor) > 3) {\n return true;\n }\n return false;\n }\n if (contrastRatios(foregroundColor, backgroundColor) > 4.5) {\n return true;\n }\n return false;\n}\n\n/**\n * 计算颜色对比度 https://webaim.org/articles/contrast/\n * Contrast ratios can range from 1 to 21 (commonly written 1:1 to 21:1).\n * (L1 + 0.05) / (L2 + 0.05), whereby:\n * L1 is the relative luminance of the lighter of the colors, and\n * L2 is the relative luminance of the darker of the colors.\n * @param foregroundColor\n * @param backgroundColor\n * @returns\n */\nfunction contrastRatios(foregroundColor: IColor | undefined, backgroundColor: IColor | undefined): number {\n const foregroundColorLuminance = getColorLuminance(foregroundColor as string);\n const backgroundColorLuminance = getColorLuminance(backgroundColor as string);\n const L1 = foregroundColorLuminance > backgroundColorLuminance ? foregroundColorLuminance : backgroundColorLuminance;\n const L2 = foregroundColorLuminance > backgroundColorLuminance ? backgroundColorLuminance : foregroundColorLuminance;\n const contrastRatios = (L1 + 0.05) / (L2 + 0.05);\n return contrastRatios;\n}\n\n/**\n * 计算相对亮度 https://webaim.org/articles/contrast/\n * the relative brightness of any point in a colorspace, normalized to 0 for darkest black and 1 for lightest white\n * Note 1: For the sRGB colorspace, the relative luminance of a color is defined as\n * L = 0.2126 * R + 0.7152 * G + 0.0722 * B where R, G and B are defined as:\n * if RsRGB <= 0.03928 then R = RsRGB/12.92 else R = ((RsRGB+0.055)/1.055) ^ 2.4\n * if GsRGB <= 0.03928 then G = GsRGB/12.92 else G = ((GsRGB+0.055)/1.055) ^ 2.4\n * if BsRGB <= 0.03928 then B = BsRGB/12.92 else B = ((BsRGB+0.055)/1.055) ^ 2.4\n * and RsRGB, GsRGB, and BsRGB are defined as:\n * RsRGB = R8bit/255\n * GsRGB = G8bit/255\n * BsRGB = B8bit/255\n * @param color\n * @returns\n */\nfunction getColorLuminance(color: string): number {\n const rgb8bit = ColorUtil.hexToRgb(color);\n const RsRGB = rgb8bit[0] / 255;\n const GsRGB = rgb8bit[1] / 255;\n const BsRGB = rgb8bit[2] / 255;\n let R;\n let G;\n let B;\n if (RsRGB <= 0.03928) {\n R = RsRGB / 12.92;\n } else {\n R = Math.pow((RsRGB + 0.055) / 1.055, 2.4);\n }\n if (GsRGB <= 0.03928) {\n G = GsRGB / 12.92;\n } else {\n G = Math.pow((GsRGB + 0.055) / 1.055, 2.4);\n }\n if (BsRGB <= 0.03928) {\n B = BsRGB / 12.92;\n } else {\n B = Math.pow((BsRGB + 0.055) / 1.055, 2.4);\n }\n const L = 0.2126 * R + 0.7152 * G + 0.0722 * B;\n return L;\n}\n\n/**\n * 规范化color格式为hex\n * 当color为颜色名称或rgb时,对其进行规范化处理\n * @param originColor\n * @returns\n */\nfunction formatColorToHex(originColor: IColor | undefined) {\n if ((originColor as string)?.includes('#')) {\n return originColor;\n }\n const c = new ColorUtil.Color(originColor as string);\n const { r, g, b } = c.color;\n return '#' + ColorUtil.rgbToHex(r, g, b);\n}\n\nexport function smartInvertStrategy(\n fillStrategy: string,\n baseColor: IColor,\n invertColor: IColor,\n similarColor: IColor\n) {\n let result;\n switch (fillStrategy) {\n case 'base':\n result = baseColor;\n break;\n case 'invertBase':\n result = invertColor;\n break;\n case 'similarBase':\n result = similarColor;\n default:\n break;\n }\n return result;\n}\n"]}
|