@visactor/vchart 1.11.4 → 1.11.5

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.
Files changed (66) hide show
  1. package/build/es5/index.js +1 -1
  2. package/build/index.es.js +112 -61
  3. package/build/index.js +112 -61
  4. package/build/index.min.js +1 -1
  5. package/build/tsconfig.tsbuildinfo +1 -1
  6. package/cjs/component/tooltip/interface/theme.d.ts +1 -0
  7. package/cjs/component/tooltip/interface/theme.js.map +1 -1
  8. package/cjs/core/index.d.ts +1 -1
  9. package/cjs/core/index.js +1 -1
  10. package/cjs/core/index.js.map +1 -1
  11. package/cjs/data/transforms/waterfall.js +17 -6
  12. package/cjs/data/transforms/waterfall.js.map +1 -1
  13. package/cjs/plugin/components/tooltip-handler/dom/interface.d.ts +1 -0
  14. package/cjs/plugin/components/tooltip-handler/dom/interface.js.map +1 -1
  15. package/cjs/plugin/components/tooltip-handler/dom/model/content-model.d.ts +1 -3
  16. package/cjs/plugin/components/tooltip-handler/dom/model/content-model.js +9 -14
  17. package/cjs/plugin/components/tooltip-handler/dom/model/content-model.js.map +1 -1
  18. package/cjs/plugin/components/tooltip-handler/dom/model/shape-model.js +7 -11
  19. package/cjs/plugin/components/tooltip-handler/dom/model/shape-model.js.map +1 -1
  20. package/cjs/plugin/components/tooltip-handler/dom/model/title-model.js +8 -6
  21. package/cjs/plugin/components/tooltip-handler/dom/model/title-model.js.map +1 -1
  22. package/cjs/plugin/components/tooltip-handler/dom/utils/style.js +6 -5
  23. package/cjs/plugin/components/tooltip-handler/dom/utils/style.js.map +1 -1
  24. package/cjs/plugin/components/tooltip-handler/interface/style.d.ts +1 -0
  25. package/cjs/plugin/components/tooltip-handler/interface/style.js.map +1 -1
  26. package/cjs/plugin/components/tooltip-handler/utils/attribute.js +8 -3
  27. package/cjs/plugin/components/tooltip-handler/utils/attribute.js.map +1 -1
  28. package/cjs/theme/builtin/common/component/legend/discrete-legend.js +24 -0
  29. package/cjs/theme/builtin/common/component/legend/discrete-legend.js.map +1 -1
  30. package/cjs/theme/builtin/common/component/tooltip.js +0 -2
  31. package/cjs/theme/builtin/common/component/tooltip.js.map +1 -1
  32. package/cjs/theme/builtin/dark/color-scheme.js +4 -1
  33. package/cjs/theme/builtin/dark/color-scheme.js.map +1 -1
  34. package/cjs/theme/builtin/light/color-scheme.js +4 -1
  35. package/cjs/theme/builtin/light/color-scheme.js.map +1 -1
  36. package/esm/component/tooltip/interface/theme.d.ts +1 -0
  37. package/esm/component/tooltip/interface/theme.js.map +1 -1
  38. package/esm/core/index.d.ts +1 -1
  39. package/esm/core/index.js +1 -1
  40. package/esm/core/index.js.map +1 -1
  41. package/esm/data/transforms/waterfall.js +17 -6
  42. package/esm/data/transforms/waterfall.js.map +1 -1
  43. package/esm/plugin/components/tooltip-handler/dom/interface.d.ts +1 -0
  44. package/esm/plugin/components/tooltip-handler/dom/interface.js.map +1 -1
  45. package/esm/plugin/components/tooltip-handler/dom/model/content-model.d.ts +1 -3
  46. package/esm/plugin/components/tooltip-handler/dom/model/content-model.js +9 -14
  47. package/esm/plugin/components/tooltip-handler/dom/model/content-model.js.map +1 -1
  48. package/esm/plugin/components/tooltip-handler/dom/model/shape-model.js +5 -9
  49. package/esm/plugin/components/tooltip-handler/dom/model/shape-model.js.map +1 -1
  50. package/esm/plugin/components/tooltip-handler/dom/model/title-model.js +8 -6
  51. package/esm/plugin/components/tooltip-handler/dom/model/title-model.js.map +1 -1
  52. package/esm/plugin/components/tooltip-handler/dom/utils/style.js +5 -4
  53. package/esm/plugin/components/tooltip-handler/dom/utils/style.js.map +1 -1
  54. package/esm/plugin/components/tooltip-handler/interface/style.d.ts +1 -0
  55. package/esm/plugin/components/tooltip-handler/interface/style.js.map +1 -1
  56. package/esm/plugin/components/tooltip-handler/utils/attribute.js +7 -2
  57. package/esm/plugin/components/tooltip-handler/utils/attribute.js.map +1 -1
  58. package/esm/theme/builtin/common/component/legend/discrete-legend.js +24 -0
  59. package/esm/theme/builtin/common/component/legend/discrete-legend.js.map +1 -1
  60. package/esm/theme/builtin/common/component/tooltip.js +0 -2
  61. package/esm/theme/builtin/common/component/tooltip.js.map +1 -1
  62. package/esm/theme/builtin/dark/color-scheme.js +4 -1
  63. package/esm/theme/builtin/dark/color-scheme.js.map +1 -1
  64. package/esm/theme/builtin/light/color-scheme.js +4 -1
  65. package/esm/theme/builtin/light/color-scheme.js.map +1 -1
  66. package/package.json +5 -5
@@ -49,8 +49,12 @@ exports.getPanelAttributes = getPanelAttributes;
49
49
 
50
50
  const getTooltipAttributes = (actualTooltip, spec, globalTheme) => {
51
51
  var _a, _b, _c, _d, _e;
52
- const {style: style = {}, enterable: enterable, transitionDuration: transitionDuration} = spec, {panel: panel = {}, titleLabel: titleLabel, shape: shape, keyLabel: keyLabel, valueLabel: valueLabel, spaceRow: commonSpaceRow, maxContentHeight: maxContentHeight} = style, padding = (0,
53
- vutils_1.normalizePadding)(panel.padding), paddingSpec = (0, space_1.normalizeLayoutPaddingSpec)(panel.padding), titleStyle = getTextAttributes(titleLabel, globalTheme), keyStyle = getTextAttributes(keyLabel, globalTheme), valueStyle = getTextAttributes(valueLabel, globalTheme), shapeStyle = {
52
+ const {style: style = {}, enterable: enterable, transitionDuration: transitionDuration} = spec, {panel: panel = {}, titleLabel: titleLabel, shape: shape, keyLabel: keyLabel, valueLabel: valueLabel, spaceRow: commonSpaceRow, maxContentHeight: maxContentHeight, align: align} = style, padding = (0,
53
+ vutils_1.normalizePadding)(panel.padding), paddingSpec = (0, space_1.normalizeLayoutPaddingSpec)(panel.padding), titleStyle = getTextAttributes(Object.assign({
54
+ textAlign: "right" === align ? "right" : "left"
55
+ }, titleLabel), globalTheme), keyStyle = getTextAttributes(Object.assign({
56
+ textAlign: "right" === align ? "right" : "left"
57
+ }, keyLabel), globalTheme), valueStyle = getTextAttributes(valueLabel, globalTheme), shapeStyle = {
54
58
  fill: !0,
55
59
  size: null !== (_a = null == shape ? void 0 : shape.size) && void 0 !== _a ? _a : 8,
56
60
  spacing: null !== (_b = null == shape ? void 0 : shape.spacing) && void 0 !== _b ? _b : 6
@@ -74,7 +78,8 @@ const getTooltipAttributes = (actualTooltip, spec, globalTheme) => {
74
78
  valueWidth: 0,
75
79
  maxContentHeight: maxContentHeight,
76
80
  enterable: enterable,
77
- transitionDuration: transitionDuration
81
+ transitionDuration: transitionDuration,
82
+ align: align
78
83
  }, {title: title = {}, content: content = []} = actualTooltip;
79
84
  let panelWidth = paddingSpec.left + paddingSpec.right, panelHeight = paddingSpec.top + paddingSpec.bottom, panelDomHeight = paddingSpec.top + paddingSpec.bottom, contentMaxWidth = 0;
80
85
  const filteredContent = content.filter((item => (item.key || item.value) && !1 !== item.visible)), hasContent = !!filteredContent.length;
@@ -1 +1 @@
1
- {"version":3,"sources":["../src/plugin/components/tooltip-handler/utils/attribute.ts"],"names":[],"mappings":"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","file":"attribute.js","sourcesContent":["import type {\n TooltipPanelAttrs,\n TooltipRowAttrs,\n TooltipRowStyleAttrs,\n TooltipSymbolAttrs,\n TooltipTextAttrs\n} from '@visactor/vrender-components';\nimport type { IPadding, ITooltipActual } from '../../../../typings';\nimport type { ITooltipAttributes, ITooltipTextStyle } from '../interface';\nimport { isValid, maxInArray, normalizePadding } from '@visactor/vutils';\nimport { mergeSpec } from '@visactor/vutils-extension';\nimport { normalizeLayoutPaddingSpec } from '../../../../util/space';\nimport { measureTooltipText } from './common';\nimport type { ITheme } from '../../../../theme';\nimport type { ITooltipSpec, ITooltipTextTheme, ITooltipTheme } from '../../../../component/tooltip';\nimport { token } from '../../../../theme/token';\n\nconst DEFAULT_TEXT_ATTRIBUTES: Partial<ITooltipTextStyle> = {\n fontFamily: token.fontFamily,\n spacing: 10,\n wordBreak: 'break-word'\n};\n\nexport function getTextAttributes(\n style: ITooltipTextTheme = {},\n globalTheme?: ITheme,\n defaultAttributes?: Partial<ITooltipTextStyle>\n): ITooltipTextStyle {\n const attrs: ITooltipTextStyle = {\n ...(defaultAttributes ?? DEFAULT_TEXT_ATTRIBUTES),\n fill: (style.fill ?? style.fontColor) as string,\n textAlign: style.textAlign,\n textBaseline: style.textBaseline,\n fontFamily: style.fontFamily ?? (globalTheme?.fontFamily as string),\n fontSize: style.fontSize as number,\n fontWeight: style.fontWeight,\n lineHeight: style.lineHeight as number,\n spacing: style.spacing,\n multiLine: style.multiLine,\n maxWidth: style.maxWidth,\n wordBreak: style.wordBreak,\n autoWidth: style.autoWidth\n };\n return attrs;\n}\n\nexport const getPanelAttributes = (style: ITooltipTheme['panel']): TooltipPanelAttrs => {\n const { backgroundColor, border, shadow } = style;\n const panelAttrs: TooltipPanelAttrs = {\n lineWidth: border?.width ?? 0,\n shadow: !!shadow\n };\n if (border?.color) {\n panelAttrs.stroke = border.color as string;\n }\n if (backgroundColor) {\n panelAttrs.fill = backgroundColor as string;\n }\n if (shadow) {\n panelAttrs.shadowColor = shadow.color as string;\n panelAttrs.shadowBlur = shadow.blur;\n panelAttrs.shadowOffsetX = shadow.x;\n panelAttrs.shadowOffsetY = shadow.y;\n panelAttrs.shadowSpread = shadow.spread;\n }\n const { radius } = border ?? {};\n if (isValid(radius)) {\n panelAttrs.cornerRadius = [radius, radius, radius, radius];\n }\n return panelAttrs;\n};\n\nexport const getTooltipAttributes = (\n actualTooltip: ITooltipActual,\n spec: ITooltipSpec,\n globalTheme: ITheme\n): ITooltipAttributes => {\n const { style = {}, enterable, transitionDuration } = spec;\n const { panel = {}, titleLabel, shape, keyLabel, valueLabel, spaceRow: commonSpaceRow, maxContentHeight } = style;\n const padding = normalizePadding(panel.padding);\n const paddingSpec = normalizeLayoutPaddingSpec(panel.padding) as IPadding;\n\n const titleStyle = getTextAttributes(titleLabel, globalTheme);\n const keyStyle = getTextAttributes(keyLabel, globalTheme);\n const valueStyle = getTextAttributes(valueLabel, globalTheme);\n const shapeStyle: TooltipRowStyleAttrs['shape'] = {\n fill: true,\n size: shape?.size ?? 8,\n spacing: shape?.spacing ?? 6\n };\n\n const attributes: ITooltipAttributes = {\n panel: getPanelAttributes(panel),\n padding,\n\n title: {},\n content: [],\n\n titleStyle: {\n value: titleStyle,\n spaceRow: commonSpaceRow\n },\n contentStyle: {\n shape: shapeStyle,\n key: keyStyle,\n value: valueStyle,\n spaceRow: commonSpaceRow\n },\n hasContentShape: false,\n keyWidth: 0,\n valueWidth: 0,\n\n maxContentHeight,\n\n enterable,\n transitionDuration\n };\n\n const { title = {}, content = [] } = actualTooltip;\n\n let panelWidth = paddingSpec.left + paddingSpec.right;\n let panelHeight = paddingSpec.top + paddingSpec.bottom;\n /** dom tooltip 的高度。由于 canvas tooltip 不支持滚动条,dom tooltip 单独计算高度 */\n let panelDomHeight = paddingSpec.top + paddingSpec.bottom;\n\n // calculate content\n let contentMaxWidth = 0;\n // filter content\n const filteredContent = content.filter(item => {\n return (item.key || item.value) && item.visible !== false;\n });\n const hasContent = !!filteredContent.length;\n let maxKeyWidth = 0;\n let maxAdaptiveKeyWidth = 0;\n let maxValueWidth = 0;\n let maxShapeWidth = 0;\n\n if (hasContent) {\n const keyWidths: number[] = [];\n const adaptiveKeyWidths: number[] = [];\n const valueWidths: number[] = [];\n const shapeWidths: number[] = [];\n\n let contentHeight = 0;\n attributes.content = filteredContent.map((item, i) => {\n let itemHeight = 0;\n const {\n hasShape: actualHasShape,\n key: actualKey,\n shapeType: actualShapeType = '',\n shapeFill: actualShapeFill,\n shapeStroke: actualShapeStroke,\n shapeLineWidth: actualShapeLineWidth,\n shapeSize: actualShapeSize,\n value: actualValue,\n isKeyAdaptive: actualIsKeyAdaptive,\n spaceRow: actualSpaceRow,\n keyStyle: actualKeyStyle,\n valueStyle: actualValueStyle,\n shapeHollow: actualShapeHollow,\n // 弃用的属性,做下兼容\n shapeColor: actualShapeColor\n } = item;\n const itemAttrs: TooltipRowAttrs = { height: 0, spaceRow: actualSpaceRow ?? commonSpaceRow };\n if (isValid(actualKey)) {\n const itemKeyStyle: ITooltipTextStyle = mergeSpec(\n {},\n keyStyle,\n getTextAttributes(actualKeyStyle, undefined, {})\n );\n const { width, height, text } = measureTooltipText(actualKey, itemKeyStyle);\n itemAttrs.key = {\n width,\n height,\n ...itemKeyStyle,\n text\n };\n if (!actualIsKeyAdaptive) {\n keyWidths.push(width);\n } else {\n adaptiveKeyWidths.push(width);\n }\n itemHeight = Math.max(itemHeight, height);\n }\n if (isValid(actualValue)) {\n const itemValueStyle: ITooltipTextStyle = mergeSpec(\n {},\n valueStyle,\n getTextAttributes(actualValueStyle, undefined, {})\n );\n const { width, height, text } = measureTooltipText(actualValue, itemValueStyle);\n itemAttrs.value = {\n width,\n height,\n ...itemValueStyle,\n text\n };\n valueWidths.push(width);\n itemHeight = Math.max(itemHeight, height);\n }\n if (actualHasShape) {\n const shape: TooltipSymbolAttrs = {\n visible: true,\n symbolType: actualShapeType\n };\n const adaptiveShapeFill = actualShapeFill ?? actualShapeColor;\n if (actualShapeHollow) {\n shape.stroke = adaptiveShapeFill;\n } else {\n shape.fill = adaptiveShapeFill;\n }\n shape.stroke = actualShapeStroke ?? adaptiveShapeFill;\n shape.lineWidth = actualShapeLineWidth;\n itemAttrs.shape = shape;\n\n const shapeWidth = actualShapeSize ?? shapeStyle.size;\n itemHeight = Math.max(shapeWidth, itemHeight);\n shapeWidths.push(shapeWidth);\n } else {\n itemAttrs.shape = { visible: false };\n }\n\n itemAttrs.height = itemHeight;\n contentHeight += itemHeight;\n if (i < filteredContent.length - 1) {\n contentHeight += itemAttrs.spaceRow;\n }\n\n return itemAttrs;\n });\n panelHeight += contentHeight;\n panelDomHeight += Math.min(contentHeight, maxContentHeight ?? Infinity);\n\n maxKeyWidth = keyWidths.length ? maxInArray(keyWidths) : 0; // name 需要对齐\n maxAdaptiveKeyWidth = adaptiveKeyWidths.length ? maxInArray(adaptiveKeyWidths) : 0;\n maxValueWidth = valueWidths.length ? maxInArray(valueWidths) : 0; // value 需要对齐\n maxShapeWidth = shapeWidths.length ? maxInArray(shapeWidths) + shapeStyle.spacing : 0; // shape 列宽度\n contentMaxWidth = Math.max(\n maxShapeWidth + maxKeyWidth + keyStyle.spacing + maxValueWidth + valueStyle.spacing,\n maxShapeWidth + maxAdaptiveKeyWidth,\n contentMaxWidth\n );\n attributes.hasContentShape = !!shapeWidths.length;\n attributes.keyWidth = maxKeyWidth;\n attributes.valueWidth = maxValueWidth;\n }\n\n // calculate title\n let titleMaxWidth = 0;\n let titleMaxHeight = 0;\n let titleHeightWithSpace = 0;\n const {\n visible: actualTitleVisible = true,\n value: actualTitleValue = '',\n valueStyle: actualTitleValueStyle,\n spaceRow: actualTitleSpaceRow\n } = title;\n attributes.title.visible = actualTitleVisible;\n attributes.title.spaceRow = actualTitleSpaceRow ?? commonSpaceRow;\n\n let titleValueStyle: ITooltipTextStyle = {};\n // 当前是否处于自适应宽度模式\n const isAutoWidthMode = () => titleValueStyle.autoWidth && titleValueStyle.multiLine !== false;\n if (actualTitleVisible) {\n titleValueStyle = mergeSpec({}, titleStyle, getTextAttributes(actualTitleValueStyle, undefined, {}));\n // 标题默认优化策略:如果 autoWidth 为 true,则宽度默认跟随 content 宽度并开启自动换行\n if (isAutoWidthMode()) {\n titleValueStyle.multiLine = titleValueStyle.multiLine ?? true;\n titleValueStyle.maxWidth = titleValueStyle.maxWidth ?? (hasContent ? Math.ceil(contentMaxWidth) : undefined);\n }\n\n const { text, width, height } = measureTooltipText(actualTitleValue, titleValueStyle);\n attributes.title.value = {\n width: isAutoWidthMode() ? Math.min(width, titleValueStyle.maxWidth ?? Number.MAX_VALUE) : width,\n height,\n ...titleValueStyle,\n text\n };\n titleMaxWidth = attributes.title.value.width;\n titleMaxHeight = attributes.title.value.height;\n\n titleHeightWithSpace = titleMaxHeight + (hasContent ? attributes.title.spaceRow : 0);\n }\n panelHeight += titleHeightWithSpace;\n panelDomHeight += titleHeightWithSpace;\n attributes.title.width = titleMaxWidth;\n attributes.title.height = titleMaxHeight;\n\n if (isAutoWidthMode()) {\n panelWidth += contentMaxWidth ? contentMaxWidth : titleMaxWidth;\n } else {\n panelWidth += Math.max(titleMaxWidth, contentMaxWidth);\n }\n\n // 处理 content 的自动宽度模式\n if (hasContent) {\n attributes.content.forEach(item => {\n const value = item.value as ITooltipTextStyle & TooltipTextAttrs;\n // 最后一列默认自适应宽度\n if (value && (value.autoWidth ?? true)) {\n value.width =\n panelWidth -\n paddingSpec.left -\n paddingSpec.right -\n maxShapeWidth -\n maxKeyWidth -\n keyStyle.spacing -\n valueStyle.spacing;\n //value.multiLine = true; multiLine 需要用户手动开启,不会自动开启\n if (!value.maxWidth) {\n value.maxWidth = Math.ceil(value.width);\n }\n attributes.valueWidth = Math.max(attributes.valueWidth, value.width);\n }\n });\n }\n\n attributes.panel.width = panelWidth;\n attributes.panel.height = panelHeight;\n attributes.panelDomHeight = panelDomHeight;\n return attributes;\n};\n"]}
1
+ {"version":3,"sources":["../src/plugin/components/tooltip-handler/utils/attribute.ts"],"names":[],"mappings":"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","file":"attribute.js","sourcesContent":["import type {\n TooltipPanelAttrs,\n TooltipRowAttrs,\n TooltipRowStyleAttrs,\n TooltipSymbolAttrs,\n TooltipTextAttrs\n} from '@visactor/vrender-components';\nimport type { IPadding, ITooltipActual } from '../../../../typings';\nimport type { ITooltipAttributes, ITooltipTextStyle } from '../interface';\nimport { isValid, maxInArray, normalizePadding } from '@visactor/vutils';\nimport { mergeSpec } from '@visactor/vutils-extension';\nimport { normalizeLayoutPaddingSpec } from '../../../../util/space';\nimport { measureTooltipText } from './common';\nimport type { ITheme } from '../../../../theme';\nimport type { ITooltipSpec, ITooltipTextTheme, ITooltipTheme } from '../../../../component/tooltip';\nimport { token } from '../../../../theme/token';\n\nconst DEFAULT_TEXT_ATTRIBUTES: Partial<ITooltipTextStyle> = {\n fontFamily: token.fontFamily,\n spacing: 10,\n wordBreak: 'break-word'\n};\n\nexport function getTextAttributes(\n style: ITooltipTextTheme = {},\n globalTheme?: ITheme,\n defaultAttributes?: Partial<ITooltipTextStyle>\n): ITooltipTextStyle {\n const attrs: ITooltipTextStyle = {\n ...(defaultAttributes ?? DEFAULT_TEXT_ATTRIBUTES),\n fill: (style.fill ?? style.fontColor) as string,\n textAlign: style.textAlign,\n textBaseline: style.textBaseline,\n fontFamily: style.fontFamily ?? (globalTheme?.fontFamily as string),\n fontSize: style.fontSize as number,\n fontWeight: style.fontWeight,\n lineHeight: style.lineHeight as number,\n spacing: style.spacing,\n multiLine: style.multiLine,\n maxWidth: style.maxWidth,\n wordBreak: style.wordBreak,\n autoWidth: style.autoWidth\n };\n return attrs;\n}\n\nexport const getPanelAttributes = (style: ITooltipTheme['panel']): TooltipPanelAttrs => {\n const { backgroundColor, border, shadow } = style;\n const panelAttrs: TooltipPanelAttrs = {\n lineWidth: border?.width ?? 0,\n shadow: !!shadow\n };\n if (border?.color) {\n panelAttrs.stroke = border.color as string;\n }\n if (backgroundColor) {\n panelAttrs.fill = backgroundColor as string;\n }\n if (shadow) {\n panelAttrs.shadowColor = shadow.color as string;\n panelAttrs.shadowBlur = shadow.blur;\n panelAttrs.shadowOffsetX = shadow.x;\n panelAttrs.shadowOffsetY = shadow.y;\n panelAttrs.shadowSpread = shadow.spread;\n }\n const { radius } = border ?? {};\n if (isValid(radius)) {\n panelAttrs.cornerRadius = [radius, radius, radius, radius];\n }\n return panelAttrs;\n};\n\nexport const getTooltipAttributes = (\n actualTooltip: ITooltipActual,\n spec: ITooltipSpec,\n globalTheme: ITheme\n): ITooltipAttributes => {\n const { style = {}, enterable, transitionDuration } = spec;\n const {\n panel = {},\n titleLabel,\n shape,\n keyLabel,\n valueLabel,\n spaceRow: commonSpaceRow,\n maxContentHeight,\n align\n } = style;\n const padding = normalizePadding(panel.padding);\n const paddingSpec = normalizeLayoutPaddingSpec(panel.padding) as IPadding;\n\n const titleStyle = getTextAttributes(\n {\n textAlign: align === 'right' ? 'right' : 'left',\n ...titleLabel\n },\n globalTheme\n );\n const keyStyle = getTextAttributes(\n {\n textAlign: align === 'right' ? 'right' : 'left',\n ...keyLabel\n },\n globalTheme\n );\n const valueStyle = getTextAttributes(valueLabel, globalTheme);\n const shapeStyle: TooltipRowStyleAttrs['shape'] = {\n fill: true,\n size: shape?.size ?? 8,\n spacing: shape?.spacing ?? 6\n };\n\n const attributes: ITooltipAttributes = {\n panel: getPanelAttributes(panel),\n padding,\n\n title: {},\n content: [],\n\n titleStyle: {\n value: titleStyle,\n spaceRow: commonSpaceRow\n },\n contentStyle: {\n shape: shapeStyle,\n key: keyStyle,\n value: valueStyle,\n spaceRow: commonSpaceRow\n },\n hasContentShape: false,\n keyWidth: 0,\n valueWidth: 0,\n\n maxContentHeight,\n\n enterable,\n transitionDuration,\n align\n };\n\n const { title = {}, content = [] } = actualTooltip;\n\n let panelWidth = paddingSpec.left + paddingSpec.right;\n let panelHeight = paddingSpec.top + paddingSpec.bottom;\n /** dom tooltip 的高度。由于 canvas tooltip 不支持滚动条,dom tooltip 单独计算高度 */\n let panelDomHeight = paddingSpec.top + paddingSpec.bottom;\n\n // calculate content\n let contentMaxWidth = 0;\n // filter content\n const filteredContent = content.filter(item => {\n return (item.key || item.value) && item.visible !== false;\n });\n const hasContent = !!filteredContent.length;\n let maxKeyWidth = 0;\n let maxAdaptiveKeyWidth = 0;\n let maxValueWidth = 0;\n let maxShapeWidth = 0;\n\n if (hasContent) {\n const keyWidths: number[] = [];\n const adaptiveKeyWidths: number[] = [];\n const valueWidths: number[] = [];\n const shapeWidths: number[] = [];\n\n let contentHeight = 0;\n attributes.content = filteredContent.map((item, i) => {\n let itemHeight = 0;\n const {\n hasShape: actualHasShape,\n key: actualKey,\n shapeType: actualShapeType = '',\n shapeFill: actualShapeFill,\n shapeStroke: actualShapeStroke,\n shapeLineWidth: actualShapeLineWidth,\n shapeSize: actualShapeSize,\n value: actualValue,\n isKeyAdaptive: actualIsKeyAdaptive,\n spaceRow: actualSpaceRow,\n keyStyle: actualKeyStyle,\n valueStyle: actualValueStyle,\n shapeHollow: actualShapeHollow,\n // 弃用的属性,做下兼容\n shapeColor: actualShapeColor\n } = item;\n const itemAttrs: TooltipRowAttrs = { height: 0, spaceRow: actualSpaceRow ?? commonSpaceRow };\n if (isValid(actualKey)) {\n const itemKeyStyle: ITooltipTextStyle = mergeSpec(\n {},\n keyStyle,\n getTextAttributes(actualKeyStyle, undefined, {})\n );\n const { width, height, text } = measureTooltipText(actualKey, itemKeyStyle);\n itemAttrs.key = {\n width,\n height,\n ...itemKeyStyle,\n text\n };\n if (!actualIsKeyAdaptive) {\n keyWidths.push(width);\n } else {\n adaptiveKeyWidths.push(width);\n }\n itemHeight = Math.max(itemHeight, height);\n }\n if (isValid(actualValue)) {\n const itemValueStyle: ITooltipTextStyle = mergeSpec(\n {},\n valueStyle,\n getTextAttributes(actualValueStyle, undefined, {})\n );\n const { width, height, text } = measureTooltipText(actualValue, itemValueStyle);\n itemAttrs.value = {\n width,\n height,\n ...itemValueStyle,\n text\n };\n valueWidths.push(width);\n itemHeight = Math.max(itemHeight, height);\n }\n if (actualHasShape) {\n const shape: TooltipSymbolAttrs = {\n visible: true,\n symbolType: actualShapeType\n };\n const adaptiveShapeFill = actualShapeFill ?? actualShapeColor;\n if (actualShapeHollow) {\n shape.stroke = adaptiveShapeFill;\n } else {\n shape.fill = adaptiveShapeFill;\n }\n shape.stroke = actualShapeStroke ?? adaptiveShapeFill;\n shape.lineWidth = actualShapeLineWidth;\n itemAttrs.shape = shape;\n\n const shapeWidth = actualShapeSize ?? shapeStyle.size;\n itemHeight = Math.max(shapeWidth, itemHeight);\n shapeWidths.push(shapeWidth);\n } else {\n itemAttrs.shape = { visible: false };\n }\n\n itemAttrs.height = itemHeight;\n contentHeight += itemHeight;\n if (i < filteredContent.length - 1) {\n contentHeight += itemAttrs.spaceRow;\n }\n\n return itemAttrs;\n });\n panelHeight += contentHeight;\n panelDomHeight += Math.min(contentHeight, maxContentHeight ?? Infinity);\n\n maxKeyWidth = keyWidths.length ? maxInArray(keyWidths) : 0; // name 需要对齐\n maxAdaptiveKeyWidth = adaptiveKeyWidths.length ? maxInArray(adaptiveKeyWidths) : 0;\n maxValueWidth = valueWidths.length ? maxInArray(valueWidths) : 0; // value 需要对齐\n maxShapeWidth = shapeWidths.length ? maxInArray(shapeWidths) + shapeStyle.spacing : 0; // shape 列宽度\n contentMaxWidth = Math.max(\n maxShapeWidth + maxKeyWidth + keyStyle.spacing + maxValueWidth + valueStyle.spacing,\n maxShapeWidth + maxAdaptiveKeyWidth,\n contentMaxWidth\n );\n attributes.hasContentShape = !!shapeWidths.length;\n attributes.keyWidth = maxKeyWidth;\n attributes.valueWidth = maxValueWidth;\n }\n\n // calculate title\n let titleMaxWidth = 0;\n let titleMaxHeight = 0;\n let titleHeightWithSpace = 0;\n const {\n visible: actualTitleVisible = true,\n value: actualTitleValue = '',\n valueStyle: actualTitleValueStyle,\n spaceRow: actualTitleSpaceRow\n } = title;\n attributes.title.visible = actualTitleVisible;\n attributes.title.spaceRow = actualTitleSpaceRow ?? commonSpaceRow;\n\n let titleValueStyle: ITooltipTextStyle = {};\n // 当前是否处于自适应宽度模式\n const isAutoWidthMode = () => titleValueStyle.autoWidth && titleValueStyle.multiLine !== false;\n if (actualTitleVisible) {\n titleValueStyle = mergeSpec({}, titleStyle, getTextAttributes(actualTitleValueStyle, undefined, {}));\n // 标题默认优化策略:如果 autoWidth 为 true,则宽度默认跟随 content 宽度并开启自动换行\n if (isAutoWidthMode()) {\n titleValueStyle.multiLine = titleValueStyle.multiLine ?? true;\n titleValueStyle.maxWidth = titleValueStyle.maxWidth ?? (hasContent ? Math.ceil(contentMaxWidth) : undefined);\n }\n\n const { text, width, height } = measureTooltipText(actualTitleValue, titleValueStyle);\n attributes.title.value = {\n width: isAutoWidthMode() ? Math.min(width, titleValueStyle.maxWidth ?? Number.MAX_VALUE) : width,\n height,\n ...titleValueStyle,\n text\n };\n titleMaxWidth = attributes.title.value.width;\n titleMaxHeight = attributes.title.value.height;\n\n titleHeightWithSpace = titleMaxHeight + (hasContent ? attributes.title.spaceRow : 0);\n }\n panelHeight += titleHeightWithSpace;\n panelDomHeight += titleHeightWithSpace;\n attributes.title.width = titleMaxWidth;\n attributes.title.height = titleMaxHeight;\n\n if (isAutoWidthMode()) {\n panelWidth += contentMaxWidth ? contentMaxWidth : titleMaxWidth;\n } else {\n panelWidth += Math.max(titleMaxWidth, contentMaxWidth);\n }\n\n // 处理 content 的自动宽度模式\n if (hasContent) {\n attributes.content.forEach(item => {\n const value = item.value as ITooltipTextStyle & TooltipTextAttrs;\n // 最后一列默认自适应宽度\n if (value && (value.autoWidth ?? true)) {\n value.width =\n panelWidth -\n paddingSpec.left -\n paddingSpec.right -\n maxShapeWidth -\n maxKeyWidth -\n keyStyle.spacing -\n valueStyle.spacing;\n //value.multiLine = true; multiLine 需要用户手动开启,不会自动开启\n if (!value.maxWidth) {\n value.maxWidth = Math.ceil(value.width);\n }\n attributes.valueWidth = Math.max(attributes.valueWidth, value.width);\n }\n });\n }\n\n attributes.panel.width = panelWidth;\n attributes.panel.height = panelHeight;\n attributes.panelDomHeight = panelDomHeight;\n return attributes;\n};\n"]}
@@ -26,6 +26,30 @@ Object.defineProperty(exports, "__esModule", {
26
26
  },
27
27
  space: 12
28
28
  },
29
+ pager: {
30
+ textStyle: {
31
+ fill: {
32
+ type: "palette",
33
+ key: "discreteLegendPagerTextColor"
34
+ }
35
+ },
36
+ handler: {
37
+ style: {
38
+ fill: {
39
+ type: "palette",
40
+ key: "discreteLegendPagerHandlerColor"
41
+ }
42
+ },
43
+ state: {
44
+ disable: {
45
+ fill: {
46
+ type: "palette",
47
+ key: "discreteLegendPagerHandlerDisableColor"
48
+ }
49
+ }
50
+ }
51
+ }
52
+ },
29
53
  item: {
30
54
  visible: !0,
31
55
  spaceCol: 10,
@@ -1 +1 @@
1
- {"version":3,"sources":["../src/theme/builtin/common/component/legend/discrete-legend.ts"],"names":[],"mappings":";;;AAEa,QAAA,cAAc,GAAyB;IAClD,MAAM,EAAE,QAAQ;IAChB,QAAQ,EAAE,QAAQ;IAClB,OAAO,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC;IACjB,KAAK,EAAE;QACL,OAAO,EAAE,KAAK;QACd,OAAO,EAAE,CAAC;QACV,SAAS,EAAE;YACT,QAAQ,EAAE,EAAE,IAAI,EAAE,OAAO,EAAE,GAAG,EAAE,YAAY,EAAE;YAC9C,UAAU,EAAE,EAAE,IAAI,EAAE,OAAO,EAAE,GAAG,EAAE,cAAc,EAAE;YAElD,IAAI,EAAE,EAAE,IAAI,EAAE,SAAS,EAAE,GAAG,EAAE,kBAAkB,EAAE;YAClD,UAAU,EAAE,QAAQ;SACrB;QACD,KAAK,EAAE,EAAE;KACV;IACD,IAAI,EAAE;QACJ,OAAO,EAAE,IAAI;QACb,QAAQ,EAAE,EAAE;QACZ,QAAQ,EAAE,CAAC;QACX,OAAO,EAAE,CAAC;QACV,UAAU,EAAE;YACV,KAAK,EAAE;gBACL,aAAa,EAAE;oBACb,IAAI,EAAE,EAAE,IAAI,EAAE,SAAS,EAAE,GAAG,EAAE,sBAAsB,EAAE;iBACvD;gBACD,eAAe,EAAE;oBACf,IAAI,EAAE,EAAE,IAAI,EAAE,SAAS,EAAE,GAAG,EAAE,sBAAsB,EAAE;iBACvD;aACF;SACF;QACD,KAAK,EAAE;YACL,KAAK,EAAE,CAAC;YACR,KAAK,EAAE;gBACL,SAAS,EAAE,CAAC;gBACZ,WAAW,EAAE,CAAC;gBACd,OAAO,EAAE,CAAC;aACX;YACD,KAAK,EAAE;gBACL,UAAU,EAAE;oBACV,WAAW,EAAE,GAAG;oBAChB,OAAO,EAAE,CAAC;iBACX;aACF;SACF;QACD,KAAK,EAAE;YACL,KAAK,EAAE,CAAC;YACR,KAAK,EAAE;gBACL,IAAI,EAAE,EAAE,IAAI,EAAE,SAAS,EAAE,GAAG,EAAE,oBAAoB,EAAE,OAAO,EAAE,SAAS,EAAE;gBACxE,QAAQ,EAAE,EAAE,IAAI,EAAE,OAAO,EAAE,GAAG,EAAE,YAAY,EAAE;gBAC9C,UAAU,EAAE,EAAE,IAAI,EAAE,OAAO,EAAE,GAAG,EAAE,cAAc,EAAE;gBAElD,OAAO,EAAE,CAAC;aACX;YACD,KAAK,EAAE;gBACL,UAAU,EAAE;oBACV,IAAI,EAAE,EAAE,IAAI,EAAE,SAAS,EAAE,GAAG,EAAE,kBAAkB,EAAE;oBAClD,OAAO,EAAE,CAAC;iBACX;aACF;SACF;KACF;IACD,gBAAgB,EAAE,KAAK;CACxB,CAAC","file":"discrete-legend.js","sourcesContent":["import type { IDiscreteLegendTheme } from '../../../../../component/legend';\n\nexport const discreteLegend: IDiscreteLegendTheme = {\n orient: 'bottom',\n position: 'middle',\n padding: [16, 24],\n title: {\n visible: false,\n padding: 0,\n textStyle: {\n fontSize: { type: 'token', key: 'l5FontSize' },\n lineHeight: { type: 'token', key: 'l5LineHeight' },\n\n fill: { type: 'palette', key: 'primaryFontColor' },\n fontWeight: 'normal'\n },\n space: 12\n },\n item: {\n visible: true,\n spaceCol: 10,\n spaceRow: 6,\n padding: 2,\n background: {\n state: {\n selectedHover: {\n fill: { type: 'palette', key: 'hoverBackgroundColor' }\n },\n unSelectedHover: {\n fill: { type: 'palette', key: 'hoverBackgroundColor' }\n }\n }\n },\n shape: {\n space: 6,\n style: {\n lineWidth: 0,\n fillOpacity: 1,\n opacity: 1 // 覆盖 vrender-components 里的默认值\n },\n state: {\n unSelected: {\n fillOpacity: 0.2,\n opacity: 1 // 覆盖 vrender-components 里的默认值\n }\n }\n },\n label: {\n space: 6,\n style: {\n fill: { type: 'palette', key: 'secondaryFontColor', default: '#89909d' },\n fontSize: { type: 'token', key: 'l5FontSize' },\n lineHeight: { type: 'token', key: 'l5LineHeight' },\n\n opacity: 1 // 覆盖 vrender-components 里的默认值\n },\n state: {\n unSelected: {\n fill: { type: 'palette', key: 'disableFontColor' },\n opacity: 1 // 覆盖 vrender-components 里的默认值\n }\n }\n }\n },\n allowAllCanceled: false\n};\n"]}
1
+ {"version":3,"sources":["../src/theme/builtin/common/component/legend/discrete-legend.ts"],"names":[],"mappings":";;;AAEa,QAAA,cAAc,GAAyB;IAClD,MAAM,EAAE,QAAQ;IAChB,QAAQ,EAAE,QAAQ;IAClB,OAAO,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC;IACjB,KAAK,EAAE;QACL,OAAO,EAAE,KAAK;QACd,OAAO,EAAE,CAAC;QACV,SAAS,EAAE;YACT,QAAQ,EAAE,EAAE,IAAI,EAAE,OAAO,EAAE,GAAG,EAAE,YAAY,EAAE;YAC9C,UAAU,EAAE,EAAE,IAAI,EAAE,OAAO,EAAE,GAAG,EAAE,cAAc,EAAE;YAElD,IAAI,EAAE,EAAE,IAAI,EAAE,SAAS,EAAE,GAAG,EAAE,kBAAkB,EAAE;YAClD,UAAU,EAAE,QAAQ;SACrB;QACD,KAAK,EAAE,EAAE;KACV;IACD,KAAK,EAAE;QACL,SAAS,EAAE;YACT,IAAI,EAAE,EAAE,IAAI,EAAE,SAAS,EAAE,GAAG,EAAE,8BAA8B,EAAE;SAC/D;QACD,OAAO,EAAE;YACP,KAAK,EAAE;gBACL,IAAI,EAAE,EAAE,IAAI,EAAE,SAAS,EAAE,GAAG,EAAE,iCAAiC,EAAE;aAClE;YACD,KAAK,EAAE;gBACL,OAAO,EAAE;oBACP,IAAI,EAAE,EAAE,IAAI,EAAE,SAAS,EAAE,GAAG,EAAE,wCAAwC,EAAE;iBACzE;aACF;SACF;KACF;IACD,IAAI,EAAE;QACJ,OAAO,EAAE,IAAI;QACb,QAAQ,EAAE,EAAE;QACZ,QAAQ,EAAE,CAAC;QACX,OAAO,EAAE,CAAC;QACV,UAAU,EAAE;YACV,KAAK,EAAE;gBACL,aAAa,EAAE;oBACb,IAAI,EAAE,EAAE,IAAI,EAAE,SAAS,EAAE,GAAG,EAAE,sBAAsB,EAAE;iBACvD;gBACD,eAAe,EAAE;oBACf,IAAI,EAAE,EAAE,IAAI,EAAE,SAAS,EAAE,GAAG,EAAE,sBAAsB,EAAE;iBACvD;aACF;SACF;QACD,KAAK,EAAE;YACL,KAAK,EAAE,CAAC;YACR,KAAK,EAAE;gBACL,SAAS,EAAE,CAAC;gBACZ,WAAW,EAAE,CAAC;gBACd,OAAO,EAAE,CAAC;aACX;YACD,KAAK,EAAE;gBACL,UAAU,EAAE;oBACV,WAAW,EAAE,GAAG;oBAChB,OAAO,EAAE,CAAC;iBACX;aACF;SACF;QACD,KAAK,EAAE;YACL,KAAK,EAAE,CAAC;YACR,KAAK,EAAE;gBACL,IAAI,EAAE,EAAE,IAAI,EAAE,SAAS,EAAE,GAAG,EAAE,oBAAoB,EAAE,OAAO,EAAE,SAAS,EAAE;gBACxE,QAAQ,EAAE,EAAE,IAAI,EAAE,OAAO,EAAE,GAAG,EAAE,YAAY,EAAE;gBAC9C,UAAU,EAAE,EAAE,IAAI,EAAE,OAAO,EAAE,GAAG,EAAE,cAAc,EAAE;gBAElD,OAAO,EAAE,CAAC;aACX;YACD,KAAK,EAAE;gBACL,UAAU,EAAE;oBACV,IAAI,EAAE,EAAE,IAAI,EAAE,SAAS,EAAE,GAAG,EAAE,kBAAkB,EAAE;oBAClD,OAAO,EAAE,CAAC;iBACX;aACF;SACF;KACF;IACD,gBAAgB,EAAE,KAAK;CACxB,CAAC","file":"discrete-legend.js","sourcesContent":["import type { IDiscreteLegendTheme } from '../../../../../component/legend';\n\nexport const discreteLegend: IDiscreteLegendTheme = {\n orient: 'bottom',\n position: 'middle',\n padding: [16, 24],\n title: {\n visible: false,\n padding: 0,\n textStyle: {\n fontSize: { type: 'token', key: 'l5FontSize' },\n lineHeight: { type: 'token', key: 'l5LineHeight' },\n\n fill: { type: 'palette', key: 'primaryFontColor' },\n fontWeight: 'normal'\n },\n space: 12\n },\n pager: {\n textStyle: {\n fill: { type: 'palette', key: 'discreteLegendPagerTextColor' }\n },\n handler: {\n style: {\n fill: { type: 'palette', key: 'discreteLegendPagerHandlerColor' }\n },\n state: {\n disable: {\n fill: { type: 'palette', key: 'discreteLegendPagerHandlerDisableColor' }\n }\n }\n }\n },\n item: {\n visible: true,\n spaceCol: 10,\n spaceRow: 6,\n padding: 2,\n background: {\n state: {\n selectedHover: {\n fill: { type: 'palette', key: 'hoverBackgroundColor' }\n },\n unSelectedHover: {\n fill: { type: 'palette', key: 'hoverBackgroundColor' }\n }\n }\n },\n shape: {\n space: 6,\n style: {\n lineWidth: 0,\n fillOpacity: 1,\n opacity: 1 // 覆盖 vrender-components 里的默认值\n },\n state: {\n unSelected: {\n fillOpacity: 0.2,\n opacity: 1 // 覆盖 vrender-components 里的默认值\n }\n }\n },\n label: {\n space: 6,\n style: {\n fill: { type: 'palette', key: 'secondaryFontColor', default: '#89909d' },\n fontSize: { type: 'token', key: 'l5FontSize' },\n lineHeight: { type: 'token', key: 'l5LineHeight' },\n\n opacity: 1 // 覆盖 vrender-components 里的默认值\n },\n state: {\n unSelected: {\n fill: { type: 'palette', key: 'disableFontColor' },\n opacity: 1 // 覆盖 vrender-components 里的默认值\n }\n }\n }\n },\n allowAllCanceled: false\n};\n"]}
@@ -52,7 +52,6 @@ Object.defineProperty(exports, "__esModule", {
52
52
  key: "primaryFontColor"
53
53
  },
54
54
  fontWeight: "bold",
55
- textAlign: "left",
56
55
  textBaseline: "middle",
57
56
  spacing: 0
58
57
  },
@@ -73,7 +72,6 @@ Object.defineProperty(exports, "__esModule", {
73
72
  type: "palette",
74
73
  key: "secondaryFontColor"
75
74
  },
76
- textAlign: "left",
77
75
  textBaseline: "middle",
78
76
  spacing: 26
79
77
  },
@@ -1 +1 @@
1
- {"version":3,"sources":["../src/theme/builtin/common/component/tooltip.ts"],"names":[],"mappings":";;;AAGa,QAAA,OAAO,GAAsC;IACxD,MAAM,EAAE;QACN,CAAC,EAAE,EAAE;QACL,CAAC,EAAE,EAAE;KACN;IACD,KAAK,EAAE;QACL,OAAO,EAAE;YACP,GAAG,EAAE,EAAE;YACP,IAAI,EAAE,EAAE;YACR,KAAK,EAAE,EAAE;YACT,MAAM,EAAE,EAAE;SACX;QACD,eAAe,EAAE,EAAE,IAAI,EAAE,SAAS,EAAE,GAAG,EAAE,sBAAsB,EAAE;QACjE,MAAM,EAAE;YACN,KAAK,EAAE,EAAE,IAAI,EAAE,SAAS,EAAE,GAAG,EAAE,sBAAsB,EAAE;YACvD,KAAK,EAAE,CAAC;YACR,MAAM,EAAE,CAAC;SACV;QACD,MAAM,EAAE;YACN,CAAC,EAAE,CAAC;YACJ,CAAC,EAAE,CAAC;YACJ,IAAI,EAAE,EAAE;YACR,MAAM,EAAE,CAAC;YACT,KAAK,EAAE,EAAE,IAAI,EAAE,SAAS,EAAE,GAAG,EAAE,aAAa,EAAE;SAC/C;KACF;IACD,QAAQ,EAAE,CAAC;IACX,UAAU,EAAE;QACV,QAAQ,EAAE,EAAE,IAAI,EAAE,OAAO,EAAE,GAAG,EAAE,YAAY,EAAE;QAC9C,UAAU,EAAE,EAAE,IAAI,EAAE,OAAO,EAAE,GAAG,EAAE,cAAc,EAAE;QAElD,SAAS,EAAE,EAAE,IAAI,EAAE,SAAS,EAAE,GAAG,EAAE,kBAAkB,EAAE;QACvD,UAAU,EAAE,MAAM;QAClB,SAAS,EAAE,MAAM;QACjB,YAAY,EAAE,QAAQ;QACtB,OAAO,EAAE,CAAC;KACX;IACD,KAAK,EAAE;QACL,IAAI,EAAE,CAAC;QACP,OAAO,EAAE,CAAC;KACX;IACD,QAAQ,EAAE;QACR,QAAQ,EAAE,EAAE,IAAI,EAAE,OAAO,EAAE,GAAG,EAAE,YAAY,EAAE;QAC9C,UAAU,EAAE,EAAE,IAAI,EAAE,OAAO,EAAE,GAAG,EAAE,cAAc,EAAE;QAElD,SAAS,EAAE,EAAE,IAAI,EAAE,SAAS,EAAE,GAAG,EAAE,oBAAoB,EAAE;QACzD,SAAS,EAAE,MAAM;QACjB,YAAY,EAAE,QAAQ;QACtB,OAAO,EAAE,EAAE;KACZ;IACD,UAAU,EAAE;QACV,QAAQ,EAAE,EAAE,IAAI,EAAE,OAAO,EAAE,GAAG,EAAE,YAAY,EAAE;QAC9C,UAAU,EAAE,EAAE,IAAI,EAAE,OAAO,EAAE,GAAG,EAAE,cAAc,EAAE;QAElD,SAAS,EAAE,EAAE,IAAI,EAAE,SAAS,EAAE,GAAG,EAAE,kBAAkB,EAAE;QACvD,UAAU,EAAE,MAAM;QAClB,YAAY,EAAE,QAAQ;QACtB,OAAO,EAAE,CAAC;KACX;CACF,CAAC","file":"tooltip.js","sourcesContent":["import type { ITooltipTheme } from '../../../../component/tooltip/interface';\nimport type { IColorKey } from '../../../color-scheme';\n\nexport const tooltip: ITooltipTheme<string | IColorKey> = {\n offset: {\n x: 10,\n y: 10\n },\n panel: {\n padding: {\n top: 10,\n left: 10,\n right: 10,\n bottom: 10\n },\n backgroundColor: { type: 'palette', key: 'popupBackgroundColor' },\n border: {\n color: { type: 'palette', key: 'popupBackgroundColor' },\n width: 0,\n radius: 3\n },\n shadow: {\n x: 0,\n y: 4,\n blur: 12,\n spread: 0,\n color: { type: 'palette', key: 'shadowColor' }\n }\n },\n spaceRow: 6,\n titleLabel: {\n fontSize: { type: 'token', key: 'l4FontSize' },\n lineHeight: { type: 'token', key: 'l4LineHeight' },\n\n fontColor: { type: 'palette', key: 'primaryFontColor' },\n fontWeight: 'bold',\n textAlign: 'left',\n textBaseline: 'middle',\n spacing: 0\n },\n shape: {\n size: 8,\n spacing: 6\n },\n keyLabel: {\n fontSize: { type: 'token', key: 'l4FontSize' },\n lineHeight: { type: 'token', key: 'l4LineHeight' },\n\n fontColor: { type: 'palette', key: 'secondaryFontColor' },\n textAlign: 'left',\n textBaseline: 'middle',\n spacing: 26\n },\n valueLabel: {\n fontSize: { type: 'token', key: 'l4FontSize' },\n lineHeight: { type: 'token', key: 'l4LineHeight' },\n\n fontColor: { type: 'palette', key: 'primaryFontColor' },\n fontWeight: 'bold',\n textBaseline: 'middle',\n spacing: 0\n }\n};\n"]}
1
+ {"version":3,"sources":["../src/theme/builtin/common/component/tooltip.ts"],"names":[],"mappings":";;;AAGa,QAAA,OAAO,GAAsC;IACxD,MAAM,EAAE;QACN,CAAC,EAAE,EAAE;QACL,CAAC,EAAE,EAAE;KACN;IACD,KAAK,EAAE;QACL,OAAO,EAAE;YACP,GAAG,EAAE,EAAE;YACP,IAAI,EAAE,EAAE;YACR,KAAK,EAAE,EAAE;YACT,MAAM,EAAE,EAAE;SACX;QACD,eAAe,EAAE,EAAE,IAAI,EAAE,SAAS,EAAE,GAAG,EAAE,sBAAsB,EAAE;QACjE,MAAM,EAAE;YACN,KAAK,EAAE,EAAE,IAAI,EAAE,SAAS,EAAE,GAAG,EAAE,sBAAsB,EAAE;YACvD,KAAK,EAAE,CAAC;YACR,MAAM,EAAE,CAAC;SACV;QACD,MAAM,EAAE;YACN,CAAC,EAAE,CAAC;YACJ,CAAC,EAAE,CAAC;YACJ,IAAI,EAAE,EAAE;YACR,MAAM,EAAE,CAAC;YACT,KAAK,EAAE,EAAE,IAAI,EAAE,SAAS,EAAE,GAAG,EAAE,aAAa,EAAE;SAC/C;KACF;IACD,QAAQ,EAAE,CAAC;IACX,UAAU,EAAE;QACV,QAAQ,EAAE,EAAE,IAAI,EAAE,OAAO,EAAE,GAAG,EAAE,YAAY,EAAE;QAC9C,UAAU,EAAE,EAAE,IAAI,EAAE,OAAO,EAAE,GAAG,EAAE,cAAc,EAAE;QAElD,SAAS,EAAE,EAAE,IAAI,EAAE,SAAS,EAAE,GAAG,EAAE,kBAAkB,EAAE;QACvD,UAAU,EAAE,MAAM;QAClB,YAAY,EAAE,QAAQ;QACtB,OAAO,EAAE,CAAC;KACX;IACD,KAAK,EAAE;QACL,IAAI,EAAE,CAAC;QACP,OAAO,EAAE,CAAC;KACX;IACD,QAAQ,EAAE;QACR,QAAQ,EAAE,EAAE,IAAI,EAAE,OAAO,EAAE,GAAG,EAAE,YAAY,EAAE;QAC9C,UAAU,EAAE,EAAE,IAAI,EAAE,OAAO,EAAE,GAAG,EAAE,cAAc,EAAE;QAElD,SAAS,EAAE,EAAE,IAAI,EAAE,SAAS,EAAE,GAAG,EAAE,oBAAoB,EAAE;QACzD,YAAY,EAAE,QAAQ;QACtB,OAAO,EAAE,EAAE;KACZ;IACD,UAAU,EAAE;QACV,QAAQ,EAAE,EAAE,IAAI,EAAE,OAAO,EAAE,GAAG,EAAE,YAAY,EAAE;QAC9C,UAAU,EAAE,EAAE,IAAI,EAAE,OAAO,EAAE,GAAG,EAAE,cAAc,EAAE;QAElD,SAAS,EAAE,EAAE,IAAI,EAAE,SAAS,EAAE,GAAG,EAAE,kBAAkB,EAAE;QACvD,UAAU,EAAE,MAAM;QAClB,YAAY,EAAE,QAAQ;QACtB,OAAO,EAAE,CAAC;KACX;CACF,CAAC","file":"tooltip.js","sourcesContent":["import type { ITooltipTheme } from '../../../../component/tooltip/interface';\nimport type { IColorKey } from '../../../color-scheme';\n\nexport const tooltip: ITooltipTheme<string | IColorKey> = {\n offset: {\n x: 10,\n y: 10\n },\n panel: {\n padding: {\n top: 10,\n left: 10,\n right: 10,\n bottom: 10\n },\n backgroundColor: { type: 'palette', key: 'popupBackgroundColor' },\n border: {\n color: { type: 'palette', key: 'popupBackgroundColor' },\n width: 0,\n radius: 3\n },\n shadow: {\n x: 0,\n y: 4,\n blur: 12,\n spread: 0,\n color: { type: 'palette', key: 'shadowColor' }\n }\n },\n spaceRow: 6,\n titleLabel: {\n fontSize: { type: 'token', key: 'l4FontSize' },\n lineHeight: { type: 'token', key: 'l4LineHeight' },\n\n fontColor: { type: 'palette', key: 'primaryFontColor' },\n fontWeight: 'bold',\n textBaseline: 'middle',\n spacing: 0\n },\n shape: {\n size: 8,\n spacing: 6\n },\n keyLabel: {\n fontSize: { type: 'token', key: 'l4FontSize' },\n lineHeight: { type: 'token', key: 'l4LineHeight' },\n\n fontColor: { type: 'palette', key: 'secondaryFontColor' },\n textBaseline: 'middle',\n spacing: 26\n },\n valueLabel: {\n fontSize: { type: 'token', key: 'l4FontSize' },\n lineHeight: { type: 'token', key: 'l4LineHeight' },\n\n fontColor: { type: 'palette', key: 'primaryFontColor' },\n fontWeight: 'bold',\n textBaseline: 'middle',\n spacing: 0\n }\n};\n"]}
@@ -36,7 +36,10 @@ exports.colorScheme = {
36
36
  dangerColor: "#eb4b4b",
37
37
  warningColor: "#f0bd30",
38
38
  successColor: "#14b267",
39
- infoColor: "#4284ff"
39
+ infoColor: "#4284ff",
40
+ discreteLegendPagerTextColor: "#BBBDC3",
41
+ discreteLegendPagerHandlerColor: "#BBBDC3",
42
+ discreteLegendPagerHandlerDisableColor: "#55595F"
40
43
  }
41
44
  }
42
45
  };
@@ -1 +1 @@
1
- {"version":3,"sources":["../src/theme/builtin/dark/color-scheme.ts"],"names":[],"mappings":";;;AACA,gEAAgE;AAGnD,QAAA,WAAW,GAAsB;IAC5C,OAAO,EAAE;QACP,UAAU,EAAV,oBAAU;QACV,OAAO,EAAE;YAEP,eAAe,EAAE,SAAS;YAE1B,WAAW,EAAE,SAAS;YAEtB,WAAW,EAAE,iBAAiB;YAE9B,oBAAoB,EAAE,SAAS;YAE/B,eAAe,EAAE,SAAS;YAE1B,iBAAiB,EAAE,SAAS;YAE5B,gBAAgB,EAAE,SAAS;YAE3B,oBAAoB,EAAE,SAAS;YAG/B,gBAAgB,EAAE,SAAS;YAE3B,kBAAkB,EAAE,SAAS;YAE7B,iBAAiB,EAAE,SAAS;YAE5B,kBAAkB,EAAE,SAAS;YAE7B,gBAAgB,EAAE,SAAS;YAE3B,mBAAmB,EAAE,SAAS;YAG9B,aAAa,EAAE,SAAS;YAExB,eAAe,EAAE,SAAS;YAG1B,yBAAyB,EAAE,SAAS;YAEpC,kBAAkB,EAAE,SAAS;YAG7B,qBAAqB,EAAE,SAAS;YAGhC,oBAAoB,EAAE,uBAAuB;YAG7C,yBAAyB,EAAE,SAAS;YAEpC,wBAAwB,EAAE,SAAS;YAEnC,mBAAmB,EAAE,SAAS;YAG9B,WAAW,EAAE,SAAS;YAEtB,YAAY,EAAE,SAAS;YAEvB,YAAY,EAAE,SAAS;YAEvB,SAAS,EAAE,SAAS;SACE;KACzB;CACF,CAAC","file":"color-scheme.js","sourcesContent":["import type { IThemeColorScheme } from '../../color-scheme/interface';\nimport { dataScheme } from '../../color-scheme/builtin/default';\nimport type { BuiltinColorPalette } from '../../color-scheme/builtin/interface';\n\nexport const colorScheme: IThemeColorScheme = {\n default: {\n dataScheme,\n palette: {\n /** 背景色 */\n backgroundColor: '#202226',\n /** 图表边框色 */\n borderColor: '#404349',\n /** 默认阴影颜色 */\n shadowColor: 'rgba(0,0,0,0.1)',\n /** 鼠标 hover 项背景颜色 */\n hoverBackgroundColor: '#404349',\n /** 滑块类组件背景条填充颜色 */\n sliderRailColor: '#404349',\n /** 滑块类组件滑块填充颜色 */\n sliderHandleColor: '#202226',\n /** 滑块类组件已选范围填充颜色 */\n sliderTrackColor: '#4284FF',\n /** 浮层背景区域颜色 */\n popupBackgroundColor: '#404349',\n\n /** 主要字色 */\n primaryFontColor: '#fdfdfd',\n /** 次要字色 */\n secondaryFontColor: '#bbbdc3',\n /** 第三字色 */\n tertiaryFontColor: '#888c93',\n /** 轴标签字色 */\n axisLabelFontColor: '#888c93',\n /** 禁用字色 */\n disableFontColor: '#55595f',\n /** 轴高亮标记字色 */\n axisMarkerFontColor: '#202226',\n\n /** 轴网格线颜色 */\n axisGridColor: '#404349',\n /** 轴线颜色 */\n axisDomainColor: '#4b4f54',\n\n /** 缩略轴滑块描边颜色 */\n dataZoomHandleStrokeColor: '#bbbdc3',\n /** 缩略轴图表区域颜色 */\n dataZoomChartColor: '#55595F',\n\n /** 播放器控制器填充颜色 */\n playerControllerColor: '#4284FF',\n\n /** 滚动条滑块颜色 */\n scrollBarSliderColor: 'rgba(255,255,255,0.3)',\n\n /** 轴高亮标记背景色 */\n axisMarkerBackgroundColor: '#fdfdfd',\n /** 标注标签背景颜色 */\n markLabelBackgroundColor: '#404349',\n /** 标注线颜色 */\n markLineStrokeColor: '#bbbdc3',\n\n /** 危险色 */\n dangerColor: '#eb4b4b',\n /** 警告色 */\n warningColor: '#f0bd30',\n /** 成功色 */\n successColor: '#14b267',\n /** 信息色 */\n infoColor: '#4284ff'\n } as BuiltinColorPalette\n }\n};\n"]}
1
+ {"version":3,"sources":["../src/theme/builtin/dark/color-scheme.ts"],"names":[],"mappings":";;;AACA,gEAAgE;AAGnD,QAAA,WAAW,GAAsB;IAC5C,OAAO,EAAE;QACP,UAAU,EAAV,oBAAU;QACV,OAAO,EAAE;YAEP,eAAe,EAAE,SAAS;YAE1B,WAAW,EAAE,SAAS;YAEtB,WAAW,EAAE,iBAAiB;YAE9B,oBAAoB,EAAE,SAAS;YAE/B,eAAe,EAAE,SAAS;YAE1B,iBAAiB,EAAE,SAAS;YAE5B,gBAAgB,EAAE,SAAS;YAE3B,oBAAoB,EAAE,SAAS;YAG/B,gBAAgB,EAAE,SAAS;YAE3B,kBAAkB,EAAE,SAAS;YAE7B,iBAAiB,EAAE,SAAS;YAE5B,kBAAkB,EAAE,SAAS;YAE7B,gBAAgB,EAAE,SAAS;YAE3B,mBAAmB,EAAE,SAAS;YAG9B,aAAa,EAAE,SAAS;YAExB,eAAe,EAAE,SAAS;YAG1B,yBAAyB,EAAE,SAAS;YAEpC,kBAAkB,EAAE,SAAS;YAG7B,qBAAqB,EAAE,SAAS;YAGhC,oBAAoB,EAAE,uBAAuB;YAG7C,yBAAyB,EAAE,SAAS;YAEpC,wBAAwB,EAAE,SAAS;YAEnC,mBAAmB,EAAE,SAAS;YAG9B,WAAW,EAAE,SAAS;YAEtB,YAAY,EAAE,SAAS;YAEvB,YAAY,EAAE,SAAS;YAEvB,SAAS,EAAE,SAAS;YAGpB,4BAA4B,EAAE,SAAS;YAEvC,+BAA+B,EAAE,SAAS;YAE1C,sCAAsC,EAAE,SAAS;SAC3B;KACzB;CACF,CAAC","file":"color-scheme.js","sourcesContent":["import type { IThemeColorScheme } from '../../color-scheme/interface';\nimport { dataScheme } from '../../color-scheme/builtin/default';\nimport type { BuiltinColorPalette } from '../../color-scheme/builtin/interface';\n\nexport const colorScheme: IThemeColorScheme = {\n default: {\n dataScheme,\n palette: {\n /** 背景色 */\n backgroundColor: '#202226',\n /** 图表边框色 */\n borderColor: '#404349',\n /** 默认阴影颜色 */\n shadowColor: 'rgba(0,0,0,0.1)',\n /** 鼠标 hover 项背景颜色 */\n hoverBackgroundColor: '#404349',\n /** 滑块类组件背景条填充颜色 */\n sliderRailColor: '#404349',\n /** 滑块类组件滑块填充颜色 */\n sliderHandleColor: '#202226',\n /** 滑块类组件已选范围填充颜色 */\n sliderTrackColor: '#4284FF',\n /** 浮层背景区域颜色 */\n popupBackgroundColor: '#404349',\n\n /** 主要字色 */\n primaryFontColor: '#fdfdfd',\n /** 次要字色 */\n secondaryFontColor: '#bbbdc3',\n /** 第三字色 */\n tertiaryFontColor: '#888c93',\n /** 轴标签字色 */\n axisLabelFontColor: '#888c93',\n /** 禁用字色 */\n disableFontColor: '#55595f',\n /** 轴高亮标记字色 */\n axisMarkerFontColor: '#202226',\n\n /** 轴网格线颜色 */\n axisGridColor: '#404349',\n /** 轴线颜色 */\n axisDomainColor: '#4b4f54',\n\n /** 缩略轴滑块描边颜色 */\n dataZoomHandleStrokeColor: '#bbbdc3',\n /** 缩略轴图表区域颜色 */\n dataZoomChartColor: '#55595F',\n\n /** 播放器控制器填充颜色 */\n playerControllerColor: '#4284FF',\n\n /** 滚动条滑块颜色 */\n scrollBarSliderColor: 'rgba(255,255,255,0.3)',\n\n /** 轴高亮标记背景色 */\n axisMarkerBackgroundColor: '#fdfdfd',\n /** 标注标签背景颜色 */\n markLabelBackgroundColor: '#404349',\n /** 标注线颜色 */\n markLineStrokeColor: '#bbbdc3',\n\n /** 危险色 */\n dangerColor: '#eb4b4b',\n /** 警告色 */\n warningColor: '#f0bd30',\n /** 成功色 */\n successColor: '#14b267',\n /** 信息色 */\n infoColor: '#4284ff',\n\n /** 图例翻页器文字颜色 */\n discreteLegendPagerTextColor: '#BBBDC3',\n /** 图例翻页器按钮颜色 */\n discreteLegendPagerHandlerColor: '#BBBDC3',\n /** 图例翻页器按钮颜色(disable 态) */\n discreteLegendPagerHandlerDisableColor: '#55595F'\n } as BuiltinColorPalette\n }\n};\n"]}
@@ -36,7 +36,10 @@ exports.colorScheme = {
36
36
  dangerColor: "#e33232",
37
37
  warningColor: "#ffc528",
38
38
  successColor: "#07a35a",
39
- infoColor: "#3073f2"
39
+ infoColor: "#3073f2",
40
+ discreteLegendPagerTextColor: "rgb(51, 51, 51)",
41
+ discreteLegendPagerHandlerColor: "rgb(47, 69, 84)",
42
+ discreteLegendPagerHandlerDisableColor: "rgb(170, 170, 170)"
40
43
  }
41
44
  }
42
45
  };
@@ -1 +1 @@
1
- {"version":3,"sources":["../src/theme/builtin/light/color-scheme.ts"],"names":[],"mappings":";;;AACA,gEAAgE;AAGnD,QAAA,WAAW,GAAsB;IAC5C,OAAO,EAAE;QACP,UAAU,EAAV,oBAAU;QACV,OAAO,EAAE;YAEP,eAAe,EAAE,SAAS;YAE1B,WAAW,EAAE,SAAS;YAEtB,WAAW,EAAE,oBAAoB;YAEjC,oBAAoB,EAAE,SAAS;YAE/B,eAAe,EAAE,SAAS;YAE1B,iBAAiB,EAAE,SAAS;YAE5B,gBAAgB,EAAE,SAAS;YAE3B,oBAAoB,EAAE,SAAS;YAG/B,gBAAgB,EAAE,SAAS;YAE3B,kBAAkB,EAAE,SAAS;YAE7B,iBAAiB,EAAE,SAAS;YAE5B,kBAAkB,EAAE,SAAS;YAE7B,gBAAgB,EAAE,SAAS;YAE3B,mBAAmB,EAAE,SAAS;YAG9B,aAAa,EAAE,SAAS;YAExB,eAAe,EAAE,SAAS;YAG1B,yBAAyB,EAAE,SAAS;YAEpC,kBAAkB,EAAE,SAAS;YAG7B,qBAAqB,EAAE,SAAS;YAGhC,oBAAoB,EAAE,iBAAiB;YAGvC,yBAAyB,EAAE,SAAS;YAEpC,wBAAwB,EAAE,SAAS;YAEnC,mBAAmB,EAAE,SAAS;YAG9B,WAAW,EAAE,SAAS;YAEtB,YAAY,EAAE,SAAS;YAEvB,YAAY,EAAE,SAAS;YAEvB,SAAS,EAAE,SAAS;SACE;KACzB;CACF,CAAC","file":"color-scheme.js","sourcesContent":["import type { IThemeColorScheme } from '../../color-scheme/interface';\nimport { dataScheme } from '../../color-scheme/builtin/default';\nimport type { BuiltinColorPalette } from '../../color-scheme/builtin/interface';\n\nexport const colorScheme: IThemeColorScheme = {\n default: {\n dataScheme,\n palette: {\n /** 背景色 */\n backgroundColor: '#ffffff',\n /** 图表边框色 */\n borderColor: '#e3e5e8',\n /** 默认阴影颜色 */\n shadowColor: 'rgba(33,37,44,0.1)',\n /** 鼠标 hover 项背景颜色 */\n hoverBackgroundColor: '#f1f2f5',\n /** 滑块类组件背景条填充颜色 */\n sliderRailColor: '#f1f3f4',\n /** 滑块类组件滑块填充颜色 */\n sliderHandleColor: '#ffffff',\n /** 滑块类组件已选范围填充颜色 */\n sliderTrackColor: '#0040ff',\n /** 浮层背景区域颜色 */\n popupBackgroundColor: '#ffffff',\n\n /** 主要字色 */\n primaryFontColor: '#21252c',\n /** 次要字色 */\n secondaryFontColor: '#606773',\n /** 第三字色 */\n tertiaryFontColor: '#89909d',\n /** 轴标签字色 */\n axisLabelFontColor: '#89909d',\n /** 禁用字色 */\n disableFontColor: '#bcc1cb',\n /** 轴高亮标记字色 */\n axisMarkerFontColor: '#ffffff',\n\n /** 轴网格线颜色 */\n axisGridColor: '#f1f2f5',\n /** 轴线颜色 */\n axisDomainColor: '#d9dde4',\n\n /** 缩略轴滑块描边颜色 */\n dataZoomHandleStrokeColor: '#aeb5be',\n /** 缩略轴图表区域颜色 */\n dataZoomChartColor: '#c9ced8',\n\n /** 播放器控制器填充颜色 */\n playerControllerColor: '#0040ff',\n\n /** 滚动条滑块颜色 */\n scrollBarSliderColor: 'rgba(0,0,0,0.3)',\n\n /** 轴高亮标记背景色 */\n axisMarkerBackgroundColor: '#21252c',\n /** 标注标签背景颜色 */\n markLabelBackgroundColor: '#f1f2f5',\n /** 标注线颜色 */\n markLineStrokeColor: '#606773',\n\n /** 危险色 */\n dangerColor: '#e33232',\n /** 警告色 */\n warningColor: '#ffc528',\n /** 成功色 */\n successColor: '#07a35a',\n /** 信息色 */\n infoColor: '#3073f2'\n } as BuiltinColorPalette\n }\n};\n"]}
1
+ {"version":3,"sources":["../src/theme/builtin/light/color-scheme.ts"],"names":[],"mappings":";;;AACA,gEAAgE;AAGnD,QAAA,WAAW,GAAsB;IAC5C,OAAO,EAAE;QACP,UAAU,EAAV,oBAAU;QACV,OAAO,EAAE;YAEP,eAAe,EAAE,SAAS;YAE1B,WAAW,EAAE,SAAS;YAEtB,WAAW,EAAE,oBAAoB;YAEjC,oBAAoB,EAAE,SAAS;YAE/B,eAAe,EAAE,SAAS;YAE1B,iBAAiB,EAAE,SAAS;YAE5B,gBAAgB,EAAE,SAAS;YAE3B,oBAAoB,EAAE,SAAS;YAG/B,gBAAgB,EAAE,SAAS;YAE3B,kBAAkB,EAAE,SAAS;YAE7B,iBAAiB,EAAE,SAAS;YAE5B,kBAAkB,EAAE,SAAS;YAE7B,gBAAgB,EAAE,SAAS;YAE3B,mBAAmB,EAAE,SAAS;YAG9B,aAAa,EAAE,SAAS;YAExB,eAAe,EAAE,SAAS;YAG1B,yBAAyB,EAAE,SAAS;YAEpC,kBAAkB,EAAE,SAAS;YAG7B,qBAAqB,EAAE,SAAS;YAGhC,oBAAoB,EAAE,iBAAiB;YAGvC,yBAAyB,EAAE,SAAS;YAEpC,wBAAwB,EAAE,SAAS;YAEnC,mBAAmB,EAAE,SAAS;YAG9B,WAAW,EAAE,SAAS;YAEtB,YAAY,EAAE,SAAS;YAEvB,YAAY,EAAE,SAAS;YAEvB,SAAS,EAAE,SAAS;YAGpB,4BAA4B,EAAE,iBAAiB;YAE/C,+BAA+B,EAAE,iBAAiB;YAElD,sCAAsC,EAAE,oBAAoB;SACtC;KACzB;CACF,CAAC","file":"color-scheme.js","sourcesContent":["import type { IThemeColorScheme } from '../../color-scheme/interface';\nimport { dataScheme } from '../../color-scheme/builtin/default';\nimport type { BuiltinColorPalette } from '../../color-scheme/builtin/interface';\n\nexport const colorScheme: IThemeColorScheme = {\n default: {\n dataScheme,\n palette: {\n /** 背景色 */\n backgroundColor: '#ffffff',\n /** 图表边框色 */\n borderColor: '#e3e5e8',\n /** 默认阴影颜色 */\n shadowColor: 'rgba(33,37,44,0.1)',\n /** 鼠标 hover 项背景颜色 */\n hoverBackgroundColor: '#f1f2f5',\n /** 滑块类组件背景条填充颜色 */\n sliderRailColor: '#f1f3f4',\n /** 滑块类组件滑块填充颜色 */\n sliderHandleColor: '#ffffff',\n /** 滑块类组件已选范围填充颜色 */\n sliderTrackColor: '#0040ff',\n /** 浮层背景区域颜色 */\n popupBackgroundColor: '#ffffff',\n\n /** 主要字色 */\n primaryFontColor: '#21252c',\n /** 次要字色 */\n secondaryFontColor: '#606773',\n /** 第三字色 */\n tertiaryFontColor: '#89909d',\n /** 轴标签字色 */\n axisLabelFontColor: '#89909d',\n /** 禁用字色 */\n disableFontColor: '#bcc1cb',\n /** 轴高亮标记字色 */\n axisMarkerFontColor: '#ffffff',\n\n /** 轴网格线颜色 */\n axisGridColor: '#f1f2f5',\n /** 轴线颜色 */\n axisDomainColor: '#d9dde4',\n\n /** 缩略轴滑块描边颜色 */\n dataZoomHandleStrokeColor: '#aeb5be',\n /** 缩略轴图表区域颜色 */\n dataZoomChartColor: '#c9ced8',\n\n /** 播放器控制器填充颜色 */\n playerControllerColor: '#0040ff',\n\n /** 滚动条滑块颜色 */\n scrollBarSliderColor: 'rgba(0,0,0,0.3)',\n\n /** 轴高亮标记背景色 */\n axisMarkerBackgroundColor: '#21252c',\n /** 标注标签背景颜色 */\n markLabelBackgroundColor: '#f1f2f5',\n /** 标注线颜色 */\n markLineStrokeColor: '#606773',\n\n /** 危险色 */\n dangerColor: '#e33232',\n /** 警告色 */\n warningColor: '#ffc528',\n /** 成功色 */\n successColor: '#07a35a',\n /** 信息色 */\n infoColor: '#3073f2',\n\n /** 图例翻页器文字颜色 */\n discreteLegendPagerTextColor: 'rgb(51, 51, 51)',\n /** 图例翻页器按钮颜色 */\n discreteLegendPagerHandlerColor: 'rgb(47, 69, 84)',\n /** 图例翻页器按钮颜色(disable 态) */\n discreteLegendPagerHandlerDisableColor: 'rgb(170, 170, 170)'\n } as BuiltinColorPalette\n }\n};\n"]}
@@ -47,4 +47,5 @@ export interface ITooltipTheme<ColorType = string> {
47
47
  x?: number;
48
48
  y?: number;
49
49
  };
50
+ align?: 'left' | 'right';
50
51
  }
@@ -1 +1 @@
1
- {"version":3,"sources":["../src/component/tooltip/interface/theme.ts"],"names":[],"mappings":"","file":"theme.js","sourcesContent":["import type { RichTextWordBreak } from '@visactor/vrender-core';\nimport type { ITooltipShapeActual, StringOrNumber, TextAlign, TextBaseLine } from '../../../typings';\nimport type { Padding } from '@visactor/vrender-components';\nimport type { ITokenKey } from '../../../theme/token';\n\nexport interface ITooltipTextTheme<ColorType = string> {\n /** 字体 */\n fontFamily?: string;\n /** 字体大小 */\n fontSize?: number | ITokenKey;\n /** 字体颜色 */\n fill?: ColorType;\n /** @deprecated 字体颜色(兼容旧版本) */\n fontColor?: ColorType;\n /** 字重 */\n fontWeight?: StringOrNumber;\n /** 对齐方式 */\n textAlign?: TextAlign;\n /** 字体基线 */\n textBaseline?: TextBaseLine;\n /** 行高 */\n lineHeight?: number | string | ITokenKey;\n /** 与相邻元素的水平间距 */\n spacing?: number;\n /** 是否支持换行 */\n multiLine?: boolean;\n /** 最大宽度 */\n maxWidth?: number;\n /** 换行模式,默认为'break-word' */\n wordBreak?: RichTextWordBreak;\n /**\n * 是否开启自动宽度。效果分为以下几种情况:\n * - tooltip 标题:`autoWidth` 默认为 `false`。如果配置为 `true`,则 tooltip 标题会保持和 tooltip 内容一致的宽度\n * - tooltip key 标签:`autoWidth` 不适用\n * - tooltip value 标签:`autoWidth` 默认为 `true`。如果配置为 `true`,则 tooltip value 标签会自动占满 tooltip 整体宽度的剩余部分\n * @since 1.4.2\n */\n autoWidth?: boolean;\n}\n\nexport interface ITooltipTheme<ColorType = string> {\n /** 容器样式配置 */\n panel?: {\n /** tooltip 容器内边距 */\n padding?: Padding;\n /** 背景色 */\n backgroundColor?: ColorType;\n /** tooltip边框 */\n border?: {\n color?: ColorType;\n width?: number;\n /** 圆角 */\n radius?: number;\n };\n /** tooltip阴影 */\n shadow?: {\n x: number;\n y: number;\n blur: number;\n spread: number;\n color: ColorType;\n };\n };\n shape?: {\n /** 标记大小 */\n size?: number;\n /** shape 与相邻元素的水平间距 */\n spacing?: number;\n } & ITooltipShapeActual;\n /** tooltip标题 */\n titleLabel?: ITooltipTextTheme<ColorType>;\n /** tooltip内容,key字段 */\n keyLabel?: Omit<ITooltipTextTheme<ColorType>, 'autoWidth'>;\n /** tooltip内容,value字段 */\n valueLabel?: ITooltipTextTheme<ColorType>;\n /** 内容项行间距 */\n spaceRow?: number;\n /**\n * 最大内容区高度,内容区若超过该高度将显示局部滚动条(适用于 dom tooltip)\n * @since 1.9.0\n */\n maxContentHeight?: number;\n /** 偏移量 */\n offset?: {\n x?: number;\n y?: number;\n };\n}\n"]}
1
+ {"version":3,"sources":["../src/component/tooltip/interface/theme.ts"],"names":[],"mappings":"","file":"theme.js","sourcesContent":["import type { RichTextWordBreak } from '@visactor/vrender-core';\nimport type { ITooltipShapeActual, StringOrNumber, TextAlign, TextBaseLine } from '../../../typings';\nimport type { Padding } from '@visactor/vrender-components';\nimport type { ITokenKey } from '../../../theme/token';\n\nexport interface ITooltipTextTheme<ColorType = string> {\n /** 字体 */\n fontFamily?: string;\n /** 字体大小 */\n fontSize?: number | ITokenKey;\n /** 字体颜色 */\n fill?: ColorType;\n /** @deprecated 字体颜色(兼容旧版本) */\n fontColor?: ColorType;\n /** 字重 */\n fontWeight?: StringOrNumber;\n /** 对齐方式 */\n textAlign?: TextAlign;\n /** 字体基线 */\n textBaseline?: TextBaseLine;\n /** 行高 */\n lineHeight?: number | string | ITokenKey;\n /** 与相邻元素的水平间距 */\n spacing?: number;\n /** 是否支持换行 */\n multiLine?: boolean;\n /** 最大宽度 */\n maxWidth?: number;\n /** 换行模式,默认为'break-word' */\n wordBreak?: RichTextWordBreak;\n /**\n * 是否开启自动宽度。效果分为以下几种情况:\n * - tooltip 标题:`autoWidth` 默认为 `false`。如果配置为 `true`,则 tooltip 标题会保持和 tooltip 内容一致的宽度\n * - tooltip key 标签:`autoWidth` 不适用\n * - tooltip value 标签:`autoWidth` 默认为 `true`。如果配置为 `true`,则 tooltip value 标签会自动占满 tooltip 整体宽度的剩余部分\n * @since 1.4.2\n */\n autoWidth?: boolean;\n}\n\nexport interface ITooltipTheme<ColorType = string> {\n /** 容器样式配置 */\n panel?: {\n /** tooltip 容器内边距 */\n padding?: Padding;\n /** 背景色 */\n backgroundColor?: ColorType;\n /** tooltip边框 */\n border?: {\n color?: ColorType;\n width?: number;\n /** 圆角 */\n radius?: number;\n };\n /** tooltip阴影 */\n shadow?: {\n x: number;\n y: number;\n blur: number;\n spread: number;\n color: ColorType;\n };\n };\n shape?: {\n /** 标记大小 */\n size?: number;\n /** shape 与相邻元素的水平间距 */\n spacing?: number;\n } & ITooltipShapeActual;\n /** tooltip标题 */\n titleLabel?: ITooltipTextTheme<ColorType>;\n /** tooltip内容,key字段 */\n keyLabel?: Omit<ITooltipTextTheme<ColorType>, 'autoWidth'>;\n /** tooltip内容,value字段 */\n valueLabel?: ITooltipTextTheme<ColorType>;\n /** 内容项行间距 */\n spaceRow?: number;\n /**\n * 最大内容区高度,内容区若超过该高度将显示局部滚动条(适用于 dom tooltip)\n * @since 1.9.0\n */\n maxContentHeight?: number;\n /** 偏移量 */\n offset?: {\n x?: number;\n y?: number;\n };\n /**\n * @since 1.11.5\n *\n * shape、key、value的对齐方式,可选项如下:\n * 'left': 从左到右对齐\n * 'right': 从右到左对齐\n */\n align?: 'left' | 'right';\n}\n"]}
@@ -1,7 +1,7 @@
1
1
  import { VChart } from './vchart';
2
2
  import { Factory } from './factory';
3
3
  export { VChart, Factory };
4
- export declare const version = "1.11.4";
4
+ export declare const version = "1.11.5";
5
5
  export type { IVChart } from './interface';
6
6
  export type { IStateSpec, StateValueType } from '../compile/mark';
7
7
  export * from '../typings/spec/common';
package/esm/core/index.js CHANGED
@@ -4,7 +4,7 @@ import { Factory } from "./factory";
4
4
 
5
5
  export { VChart, Factory };
6
6
 
7
- export const version = "1.11.4";
7
+ export const version = "1.11.5";
8
8
 
9
9
  export * from "../typings/spec/common";
10
10
 
@@ -1 +1 @@
1
- {"version":3,"sources":["../src/core/index.ts"],"names":[],"mappings":"AAIA,OAAO,EAAE,MAAM,EAAE,MAAM,UAAU,CAAC;AAClC,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAEpC,OAAO,EAAE,MAAM,EAAE,OAAO,EAAE,CAAC;AAG3B,MAAM,CAAC,MAAM,OAAO,GAAG,QAAQ,CAAC;AAMhC,cAAc,wBAAwB,CAAC;AACvC,cAAc,oBAAoB,CAAC;AACnC,cAAc,oBAAoB,CAAC;AACnC,cAAc,aAAa,CAAC;AAC5B,cAAc,aAAa,CAAC;AAK5B,cAAc,uBAAuB,CAAC;AAGtC,cAAc,oBAAoB,CAAC;AAGnC,cAAc,gBAAgB,CAAC;AAG/B,OAAO,EAAE,OAAO,EAAE,MAAM,wBAAwB,CAAC;AAGjD,cAAc,WAAW,CAAC","file":"index.js","sourcesContent":["/**\n * @description The core module of VChart, containing the necessary interfaces for using VChart.\n */\n\nimport { VChart } from './vchart';\nimport { Factory } from './factory';\n\nexport { VChart, Factory };\n\n// export the version\nexport const version = \"1.11.4\";\n\n// export necessary types\nexport type { IVChart } from './interface';\nexport type { IStateSpec, StateValueType } from '../compile/mark';\n\nexport * from '../typings/spec/common';\nexport * from '../event/interface';\nexport * from '../theme/interface';\nexport * from '../constant';\nexport * from './interface';\n\n/**\n * spec\n */\nexport * from '../typings/spec/index';\n\n// tooltip\nexport * from '../typings/tooltip';\n\n// theme\nexport * from '../theme/index';\n\n// vrender\nexport { vglobal } from '@visactor/vrender-core';\n\n// plugin\nexport * from '../plugin';\n"]}
1
+ {"version":3,"sources":["../src/core/index.ts"],"names":[],"mappings":"AAIA,OAAO,EAAE,MAAM,EAAE,MAAM,UAAU,CAAC;AAClC,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAEpC,OAAO,EAAE,MAAM,EAAE,OAAO,EAAE,CAAC;AAG3B,MAAM,CAAC,MAAM,OAAO,GAAG,QAAQ,CAAC;AAMhC,cAAc,wBAAwB,CAAC;AACvC,cAAc,oBAAoB,CAAC;AACnC,cAAc,oBAAoB,CAAC;AACnC,cAAc,aAAa,CAAC;AAC5B,cAAc,aAAa,CAAC;AAK5B,cAAc,uBAAuB,CAAC;AAGtC,cAAc,oBAAoB,CAAC;AAGnC,cAAc,gBAAgB,CAAC;AAG/B,OAAO,EAAE,OAAO,EAAE,MAAM,wBAAwB,CAAC;AAGjD,cAAc,WAAW,CAAC","file":"index.js","sourcesContent":["/**\n * @description The core module of VChart, containing the necessary interfaces for using VChart.\n */\n\nimport { VChart } from './vchart';\nimport { Factory } from './factory';\n\nexport { VChart, Factory };\n\n// export the version\nexport const version = \"1.11.5\";\n\n// export necessary types\nexport type { IVChart } from './interface';\nexport type { IStateSpec, StateValueType } from '../compile/mark';\n\nexport * from '../typings/spec/common';\nexport * from '../event/interface';\nexport * from '../theme/interface';\nexport * from '../constant';\nexport * from './interface';\n\n/**\n * spec\n */\nexport * from '../typings/spec/index';\n\n// tooltip\nexport * from '../typings/tooltip';\n\n// theme\nexport * from '../theme/index';\n\n// vrender\nexport { vglobal } from '@visactor/vrender-core';\n\n// plugin\nexport * from '../plugin';\n"]}
@@ -12,6 +12,8 @@ export const waterfall = (lastData, op) => {
12
12
  let temp = {
13
13
  start: 0,
14
14
  end: 0,
15
+ positive: 0,
16
+ negative: 0,
15
17
  lastIndex: null
16
18
  };
17
19
  return indexValues.forEach(((key, index) => {
@@ -21,7 +23,9 @@ export const waterfall = (lastData, op) => {
21
23
  lastIndex: temp.lastIndex,
22
24
  lastEnd: temp.end,
23
25
  index: key,
24
- isTotal: !1
26
+ isTotal: !1,
27
+ positive: temp.end,
28
+ negative: temp.end
25
29
  }, indexData = dimensionData[key];
26
30
  if (null == indexData || indexData.forEach(((d, i) => {
27
31
  i === indexData.length - 1 ? d[STACK_FIELD_TOTAL_TOP] = !0 : delete d[STACK_FIELD_TOTAL_TOP];
@@ -56,10 +60,12 @@ function computeTotalWithMultipleData(indexData, key, total, totalData, temp, in
56
60
  const totalConfigData = _totalTemp[0];
57
61
  let {start: start, end: end} = getTotalStartEnd(totalConfigData, total, totalData, temp, totalSpec);
58
62
  total.start = start, total.end = end;
59
- let valueTemp = end - start;
63
+ let positive = start, navigate = start, valueTemp = end - start;
60
64
  return _normalTemp.forEach((d => {
61
- d[startAs] = +start, d[endAs] = precisionAdd(d[startAs], +d[valueField]), start = d[endAs],
62
- valueTemp = precisionSub(valueTemp, +d[valueField]);
65
+ const value = +d[valueField];
66
+ value >= 0 ? (d[startAs] = +positive, positive = precisionAdd(positive, value)) : (d[startAs] = +navigate,
67
+ navigate = precisionAdd(navigate, value)), d[endAs] = precisionAdd(d[startAs], value),
68
+ start = precisionAdd(start, value), valueTemp = precisionSub(valueTemp, value);
63
69
  })), _totalTemp.forEach((d => {
64
70
  d[startAs] = +start, d[endAs] = precisionAdd(d[startAs], valueTemp), d[valueField] = valueTemp;
65
71
  })), Object.assign(Object.assign({}, total), {
@@ -82,8 +88,13 @@ function computeNormalData(indexData, key, total, totalData, temp, indexValues,
82
88
  }
83
89
  } else index === indexValues.length - 1 && (total.start = 0, d[startAs] = total.start,
84
90
  d[endAs] = total.end, isTotalTag = !0);
85
- isTotalTag || (d[startAs] = +total.end, d[endAs] = precisionAdd(d[startAs], +d[valueField]),
86
- total.end = d[endAs]), total.isTotal = isTotalTag, (isNil(seriesField) || seriesField === WaterfallDefaultSeriesField) && (d[WaterfallDefaultSeriesField] = isTotalTag ? seriesFieldName.total : +d[valueField] >= 0 ? seriesFieldName.increase : seriesFieldName.decrease);
91
+ if (!isTotalTag) {
92
+ const value = +d[valueField];
93
+ value >= 0 ? (d[startAs] = +total.positive, total.positive = precisionAdd(total.positive, value)) : (d[startAs] = +total.negative,
94
+ total.negative = precisionAdd(total.negative, value)), d[endAs] = precisionAdd(d[startAs], value),
95
+ total.end = precisionAdd(total.end, value);
96
+ }
97
+ total.isTotal = isTotalTag, (isNil(seriesField) || seriesField === WaterfallDefaultSeriesField) && (d[WaterfallDefaultSeriesField] = isTotalTag ? seriesFieldName.total : +d[valueField] >= 0 ? seriesFieldName.increase : seriesFieldName.decrease);
87
98
  })), Object.assign(Object.assign({}, total), {
88
99
  lastIndex: key
89
100
  });
@@ -1 +1 @@
1
- {"version":3,"sources":["../src/data/transforms/waterfall.ts"],"names":[],"mappings":"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","file":"waterfall.js","sourcesContent":["import { isNil, precisionAdd, precisionSub } from '@visactor/vutils';\n\nimport type { DataView } from '@visactor/vdataset';\nimport type {\n IWaterfallSeriesSpec,\n IWaterfallTotalCustom,\n IWaterfallTotalField\n} from '../../series/waterfall/interface';\nimport type { Datum } from '../../typings';\nimport { WaterfallDefaultSeriesField } from '../../constant/waterfall';\nimport { warn } from '../../util/debug';\nimport { STACK_FIELD_TOTAL_TOP } from '../../constant';\n\ntype TotalInfo = {\n start: number;\n end: number;\n lastIndex: string;\n lastEnd: number;\n index: string;\n isTotal: boolean;\n};\n\nexport interface IWaterfallOpt {\n indexField: string;\n valueField: string;\n seriesField?: string;\n startAs: string;\n endAs: string;\n total: IWaterfallSeriesSpec['total'];\n seriesFieldName: {\n total: string;\n increase: string;\n decrease: string;\n };\n groupData: () => DataView;\n}\n\nexport const waterfall = (lastData: Array<Datum>, op: IWaterfallOpt) => {\n if (!lastData || lastData.length === 0) {\n return lastData;\n }\n const { indexField, total: totalSpec, groupData } = op;\n const totalData: {\n start: number;\n end: number;\n lastIndex: string;\n lastEnd: number;\n index: string;\n isTotal: boolean;\n }[] = [];\n const { dimensionValues, dimensionData } = groupData().latestData as {\n dimensionValues: { [key in string]: Set<string> };\n dimensionData: { [key in string]: Datum[] };\n };\n const indexValues = Array.from(dimensionValues[indexField]);\n // 上一次的计算结果\n let temp: { start: number; end: number; lastIndex: string } = { start: 0, end: 0, lastIndex: null };\n indexValues.forEach((key, index) => {\n const total = {\n start: temp.end,\n end: temp.end,\n lastIndex: temp.lastIndex,\n lastEnd: temp.end,\n index: key,\n isTotal: false\n };\n\n const indexData = dimensionData[key];\n indexData?.forEach((d, i) => {\n if (i === indexData.length - 1) {\n d[STACK_FIELD_TOTAL_TOP] = true;\n } else {\n delete d[STACK_FIELD_TOTAL_TOP];\n }\n });\n // 1.9.5 新增能力\n // 当前 key 对应的数据中有一个总计数据,并且还有其他的分组数据时。总计的计算逻辑需要将总计值拆分\n if (indexData.length > 1) {\n const isTotalCheck = (d: Datum) => {\n if (!totalSpec || totalSpec.type === 'end') {\n if (index === indexValues.length - 1) {\n return true;\n }\n } else if (totalSpec.type === 'field' || totalSpec.type === 'custom') {\n const tag = d[totalSpec.tagField];\n return !!tag;\n }\n return false;\n };\n const isTotalTag = indexData.some(d => isTotalCheck(d));\n if (isTotalTag) {\n temp = computeTotalWithMultipleData(\n indexData,\n key,\n total,\n totalData,\n temp,\n indexValues,\n index,\n op,\n isTotalCheck\n );\n totalData.push(total);\n return;\n }\n }\n temp = computeNormalData(indexData, key, total, totalData, temp, indexValues, index, op);\n totalData.push(total);\n });\n return totalData;\n};\n\nfunction computeTotalWithMultipleData(\n indexData: Datum[],\n key: string,\n total: TotalInfo,\n totalData: TotalInfo[],\n temp: { start: number; end: number; lastIndex: string },\n indexValues: string[],\n index: number,\n op: IWaterfallOpt,\n isTotalCheck: (d: Datum) => boolean\n) {\n total.isTotal = true;\n const { valueField, startAs, endAs, total: totalSpec } = op;\n // 先将数据分为总计数据与常规数据\n const _normalTemp: Datum[] = [];\n const _totalTemp: Datum[] = [];\n indexData.forEach(d => {\n if (isTotalCheck(d)) {\n _totalTemp.push(d);\n } else {\n _normalTemp.push(d);\n }\n });\n // 1. 不可能全都不是总计数据\n // 2. 如果全都是总计数据,让它们都是同一个值\n if (_totalTemp.length === indexData.length) {\n const result = computeNormalData([indexData[0]], key, total, totalData, temp, indexValues, index, op);\n _totalTemp.forEach(d => {\n d[startAs] = indexData[0][startAs];\n d[endAs] = indexData[0][endAs];\n d[valueField] = indexData[0][valueField];\n });\n return result;\n }\n\n // 3. 其他常规情况\n // 先获取当前的起始值/结束值应当是多少\n // 按照第一个总计数据的配置来决定\n const totalConfigData = _totalTemp[0];\n // eslint-disable-next-line prefer-const\n let { start, end } = getTotalStartEnd(totalConfigData, total, totalData, temp, totalSpec);\n total.start = start;\n total.end = end;\n // 当前剩余的总计值\n let valueTemp = end - start;\n // 将非总计数据进行堆叠\n _normalTemp.forEach(d => {\n d[startAs] = +start;\n d[endAs] = precisionAdd(d[startAs], +d[valueField]);\n start = d[endAs];\n valueTemp = precisionSub(valueTemp, +d[valueField]);\n });\n // 先在的start end 就是 total 的\n _totalTemp.forEach(d => {\n d[startAs] = +start;\n d[endAs] = precisionAdd(d[startAs], valueTemp);\n d[valueField] = valueTemp;\n });\n return { ...total, lastIndex: key };\n}\n\nfunction computeNormalData(\n indexData: Datum[],\n key: string,\n total: TotalInfo,\n totalData: TotalInfo[],\n temp: { start: number; end: number; lastIndex: string },\n indexValues: string[],\n index: number,\n op: IWaterfallOpt\n) {\n const { valueField, startAs, endAs, total: totalSpec, seriesField, seriesFieldName } = op;\n indexData.forEach(d => {\n let isTotalTag = false;\n if (!totalSpec || totalSpec.type === 'end') {\n if (index === indexValues.length - 1) {\n total.start = 0;\n d[startAs] = total.start;\n d[endAs] = total.end;\n isTotalTag = true;\n }\n } else if (totalSpec.type === 'field' || totalSpec.type === 'custom') {\n const tag = d[totalSpec.tagField];\n if (tag) {\n isTotalTag = true;\n const { start, end } = getTotalStartEnd(d, total, totalData, temp, totalSpec);\n d[startAs] = start;\n d[endAs] = end;\n d[valueField] = end - start;\n total.start = start;\n total.end = end;\n }\n }\n if (!isTotalTag) {\n d[startAs] = +total.end;\n d[endAs] = precisionAdd(d[startAs], +d[valueField]);\n total.end = d[endAs];\n }\n total.isTotal = isTotalTag;\n\n if (isNil(seriesField) || seriesField === WaterfallDefaultSeriesField) {\n if (isTotalTag) {\n d[WaterfallDefaultSeriesField] = seriesFieldName.total;\n } else {\n d[WaterfallDefaultSeriesField] = +d[valueField] >= 0 ? seriesFieldName.increase : seriesFieldName.decrease;\n }\n }\n });\n return { ...total, lastIndex: key };\n}\n\nfunction getTotalStartEnd(\n d: Datum,\n total: TotalInfo,\n totalData: TotalInfo[],\n temp: { start: number; end: number; lastIndex: string },\n totalSpec: IWaterfallOpt['total']\n) {\n if (!totalSpec || totalSpec.type === 'end') {\n return getTotalInEndType(total);\n } else if (totalSpec.type === 'field' || totalSpec.type === 'custom') {\n if (totalSpec.type === 'custom') {\n return getTotalInCustomType(d, temp, totalSpec);\n }\n // 如果有设置count, valueField 和 startField 无效\n if (totalSpec.collectCountField && !isNil(d[totalSpec.collectCountField])) {\n return getTotalInCollectField(d, totalData, total, totalSpec);\n }\n return getTotalInField(d, total, totalSpec);\n }\n return { start: 0, end: 0 };\n}\n\nfunction getTotalInEndType(total: TotalInfo) {\n return { start: 0, end: total.end };\n}\n\nfunction getTotalInCustomType(\n d: Datum,\n temp: { start: number; end: number; lastIndex: string },\n totalSpec: IWaterfallOpt['total']\n) {\n return (<IWaterfallTotalCustom>totalSpec).product(d, temp);\n}\n\nfunction getTotalInCollectField(d: Datum, totalData: TotalInfo[], total: TotalInfo, totalSpec: IWaterfallTotalField) {\n let start = 0;\n let end = total.end;\n const startIndex = totalData.length - +d[totalSpec.collectCountField];\n const endIndex = totalData.length - 1;\n if (startIndex < 0) {\n warn('total.collectCountField error');\n } else {\n start = totalData[startIndex].start;\n }\n if (endIndex < 0) {\n warn('total.collectCountField error');\n } else {\n end = totalData[endIndex].end;\n }\n return { start, end };\n}\n\nfunction getTotalInField(d: Datum, total: TotalInfo, totalSpec: IWaterfallTotalField) {\n let start = 0;\n let end = total.end;\n if (totalSpec.startField && !isNil(d[totalSpec.startField])) {\n start = +d[totalSpec.startField];\n }\n if (totalSpec.valueField && !isNil(d[totalSpec.valueField])) {\n end = precisionAdd(start, +d[totalSpec.valueField]);\n }\n return { start, end };\n}\n\nexport interface IWaterfallFillEndOpt {\n indexField: string;\n valueField: string;\n seriesField?: string;\n total: IWaterfallSeriesSpec['total'];\n}\n\nexport const waterfallFillTotal = (data: Array<Datum>, op: IWaterfallFillEndOpt) => {\n if (!data) {\n return data;\n }\n const { indexField, valueField, total, seriesField } = op;\n const totalData = {\n [indexField]: total?.text || 'total',\n [valueField]: data.reduce((pre, cur) => precisionAdd(pre, +cur[valueField]), 0)\n };\n if (seriesField) {\n totalData[seriesField] = 'total';\n }\n data.push(totalData);\n return data;\n};\n"]}
1
+ {"version":3,"sources":["../src/data/transforms/waterfall.ts"],"names":[],"mappings":"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","file":"waterfall.js","sourcesContent":["import { isNil, precisionAdd, precisionSub } from '@visactor/vutils';\n\nimport type { DataView } from '@visactor/vdataset';\nimport type {\n IWaterfallSeriesSpec,\n IWaterfallTotalCustom,\n IWaterfallTotalField\n} from '../../series/waterfall/interface';\nimport type { Datum } from '../../typings';\nimport { WaterfallDefaultSeriesField } from '../../constant/waterfall';\nimport { warn } from '../../util/debug';\nimport { STACK_FIELD_TOTAL_TOP } from '../../constant';\n\ntype TotalInfo = {\n start: number;\n end: number;\n lastIndex: string;\n lastEnd: number;\n index: string;\n isTotal: boolean;\n positive: number;\n negative: number;\n};\n\nexport interface IWaterfallOpt {\n indexField: string;\n valueField: string;\n seriesField?: string;\n startAs: string;\n endAs: string;\n total: IWaterfallSeriesSpec['total'];\n seriesFieldName: {\n total: string;\n increase: string;\n decrease: string;\n };\n groupData: () => DataView;\n}\n\nexport const waterfall = (lastData: Array<Datum>, op: IWaterfallOpt) => {\n if (!lastData || lastData.length === 0) {\n return lastData;\n }\n const { indexField, total: totalSpec, groupData } = op;\n const totalData: {\n start: number;\n end: number;\n lastIndex: string;\n lastEnd: number;\n index: string;\n isTotal: boolean;\n positive: number;\n negative: number;\n }[] = [];\n const { dimensionValues, dimensionData } = groupData().latestData as {\n dimensionValues: { [key in string]: Set<string> };\n dimensionData: { [key in string]: Datum[] };\n };\n const indexValues = Array.from(dimensionValues[indexField]);\n // 上一次的计算结果\n let temp: { start: number; end: number; lastIndex: string; positive: number; negative: number } = {\n start: 0,\n end: 0,\n positive: 0,\n negative: 0,\n lastIndex: null\n };\n indexValues.forEach((key, index) => {\n const total = {\n start: temp.end,\n end: temp.end,\n lastIndex: temp.lastIndex,\n lastEnd: temp.end,\n index: key,\n isTotal: false,\n positive: temp.end,\n negative: temp.end\n };\n\n const indexData = dimensionData[key];\n indexData?.forEach((d, i) => {\n if (i === indexData.length - 1) {\n d[STACK_FIELD_TOTAL_TOP] = true;\n } else {\n delete d[STACK_FIELD_TOTAL_TOP];\n }\n });\n // 1.9.5 新增能力\n // 当前 key 对应的数据中有一个总计数据,并且还有其他的分组数据时。总计的计算逻辑需要将总计值拆分\n if (indexData.length > 1) {\n const isTotalCheck = (d: Datum) => {\n if (!totalSpec || totalSpec.type === 'end') {\n if (index === indexValues.length - 1) {\n return true;\n }\n } else if (totalSpec.type === 'field' || totalSpec.type === 'custom') {\n const tag = d[totalSpec.tagField];\n return !!tag;\n }\n return false;\n };\n const isTotalTag = indexData.some(d => isTotalCheck(d));\n if (isTotalTag) {\n temp = computeTotalWithMultipleData(\n indexData,\n key,\n total,\n totalData,\n temp,\n indexValues,\n index,\n op,\n isTotalCheck\n );\n totalData.push(total);\n return;\n }\n }\n temp = computeNormalData(indexData, key, total, totalData, temp, indexValues, index, op);\n totalData.push(total);\n });\n return totalData;\n};\n\nfunction computeTotalWithMultipleData(\n indexData: Datum[],\n key: string,\n total: TotalInfo,\n totalData: TotalInfo[],\n temp: { start: number; end: number; lastIndex: string; positive: number; negative: number },\n indexValues: string[],\n index: number,\n op: IWaterfallOpt,\n isTotalCheck: (d: Datum) => boolean\n) {\n total.isTotal = true;\n const { valueField, startAs, endAs, total: totalSpec } = op;\n // 先将数据分为总计数据与常规数据\n const _normalTemp: Datum[] = [];\n const _totalTemp: Datum[] = [];\n indexData.forEach(d => {\n if (isTotalCheck(d)) {\n _totalTemp.push(d);\n } else {\n _normalTemp.push(d);\n }\n });\n // 1. 不可能全都不是总计数据\n // 2. 如果全都是总计数据,让它们都是同一个值\n if (_totalTemp.length === indexData.length) {\n const result = computeNormalData([indexData[0]], key, total, totalData, temp, indexValues, index, op);\n _totalTemp.forEach(d => {\n d[startAs] = indexData[0][startAs];\n d[endAs] = indexData[0][endAs];\n d[valueField] = indexData[0][valueField];\n });\n return result;\n }\n\n // 3. 其他常规情况\n // 先获取当前的起始值/结束值应当是多少\n // 按照第一个总计数据的配置来决定\n const totalConfigData = _totalTemp[0];\n // eslint-disable-next-line prefer-const\n let { start, end } = getTotalStartEnd(totalConfigData, total, totalData, temp, totalSpec);\n total.start = start;\n total.end = end;\n let positive = start;\n let navigate = start;\n // 当前剩余的总计值\n let valueTemp = end - start;\n // 将非总计数据进行堆叠\n _normalTemp.forEach(d => {\n const value = +d[valueField];\n if (value >= 0) {\n d[startAs] = +positive;\n positive = precisionAdd(positive, value);\n } else {\n d[startAs] = +navigate;\n navigate = precisionAdd(navigate, value);\n }\n d[endAs] = precisionAdd(d[startAs], value);\n start = precisionAdd(start, value);\n valueTemp = precisionSub(valueTemp, value);\n });\n // 现在的start end 就是 total 的\n _totalTemp.forEach(d => {\n d[startAs] = +start;\n d[endAs] = precisionAdd(d[startAs], valueTemp);\n d[valueField] = valueTemp;\n });\n return { ...total, lastIndex: key };\n}\n\nfunction computeNormalData(\n indexData: Datum[],\n key: string,\n total: TotalInfo,\n totalData: TotalInfo[],\n temp: { start: number; end: number; lastIndex: string; positive: number; negative: number },\n indexValues: string[],\n index: number,\n op: IWaterfallOpt\n) {\n const { valueField, startAs, endAs, total: totalSpec, seriesField, seriesFieldName } = op;\n indexData.forEach(d => {\n let isTotalTag = false;\n if (!totalSpec || totalSpec.type === 'end') {\n if (index === indexValues.length - 1) {\n total.start = 0;\n d[startAs] = total.start;\n d[endAs] = total.end;\n isTotalTag = true;\n }\n } else if (totalSpec.type === 'field' || totalSpec.type === 'custom') {\n const tag = d[totalSpec.tagField];\n if (tag) {\n isTotalTag = true;\n const { start, end } = getTotalStartEnd(d, total, totalData, temp, totalSpec);\n d[startAs] = start;\n d[endAs] = end;\n d[valueField] = end - start;\n total.start = start;\n total.end = end;\n }\n }\n if (!isTotalTag) {\n const value = +d[valueField];\n // 区分正负值\n if (value >= 0) {\n d[startAs] = +total.positive;\n total.positive = precisionAdd(total.positive, value);\n } else {\n d[startAs] = +total.negative;\n total.negative = precisionAdd(total.negative, value);\n }\n d[endAs] = precisionAdd(d[startAs], value);\n total.end = precisionAdd(total.end, value);\n }\n total.isTotal = isTotalTag;\n\n if (isNil(seriesField) || seriesField === WaterfallDefaultSeriesField) {\n if (isTotalTag) {\n d[WaterfallDefaultSeriesField] = seriesFieldName.total;\n } else {\n d[WaterfallDefaultSeriesField] = +d[valueField] >= 0 ? seriesFieldName.increase : seriesFieldName.decrease;\n }\n }\n });\n return { ...total, lastIndex: key };\n}\n\nfunction getTotalStartEnd(\n d: Datum,\n total: TotalInfo,\n totalData: TotalInfo[],\n temp: { start: number; end: number; lastIndex: string; positive: number; negative: number },\n totalSpec: IWaterfallOpt['total']\n) {\n if (!totalSpec || totalSpec.type === 'end') {\n return getTotalInEndType(total);\n } else if (totalSpec.type === 'field' || totalSpec.type === 'custom') {\n if (totalSpec.type === 'custom') {\n return getTotalInCustomType(d, temp, totalSpec);\n }\n // 如果有设置count, valueField 和 startField 无效\n if (totalSpec.collectCountField && !isNil(d[totalSpec.collectCountField])) {\n return getTotalInCollectField(d, totalData, total, totalSpec);\n }\n return getTotalInField(d, total, totalSpec);\n }\n return { start: 0, end: 0 };\n}\n\nfunction getTotalInEndType(total: TotalInfo) {\n return { start: 0, end: total.end };\n}\n\nfunction getTotalInCustomType(\n d: Datum,\n temp: { start: number; end: number; lastIndex: string; positive: number; negative: number },\n totalSpec: IWaterfallOpt['total']\n) {\n return (<IWaterfallTotalCustom>totalSpec).product(d, temp);\n}\n\nfunction getTotalInCollectField(d: Datum, totalData: TotalInfo[], total: TotalInfo, totalSpec: IWaterfallTotalField) {\n let start = 0;\n let end = total.end;\n const startIndex = totalData.length - +d[totalSpec.collectCountField];\n const endIndex = totalData.length - 1;\n if (startIndex < 0) {\n warn('total.collectCountField error');\n } else {\n start = totalData[startIndex].start;\n }\n if (endIndex < 0) {\n warn('total.collectCountField error');\n } else {\n end = totalData[endIndex].end;\n }\n return { start, end };\n}\n\nfunction getTotalInField(d: Datum, total: TotalInfo, totalSpec: IWaterfallTotalField) {\n let start = 0;\n let end = total.end;\n if (totalSpec.startField && !isNil(d[totalSpec.startField])) {\n start = +d[totalSpec.startField];\n }\n if (totalSpec.valueField && !isNil(d[totalSpec.valueField])) {\n end = precisionAdd(start, +d[totalSpec.valueField]);\n }\n return { start, end };\n}\n\nexport interface IWaterfallFillEndOpt {\n indexField: string;\n valueField: string;\n seriesField?: string;\n total: IWaterfallSeriesSpec['total'];\n}\n\nexport const waterfallFillTotal = (data: Array<Datum>, op: IWaterfallFillEndOpt) => {\n if (!data) {\n return data;\n }\n const { indexField, valueField, total, seriesField } = op;\n const totalData = {\n [indexField]: total?.text || 'total',\n [valueField]: data.reduce((pre, cur) => precisionAdd(pre, +cur[valueField]), 0)\n };\n if (seriesField) {\n totalData[seriesField] = 'total';\n }\n data.push(totalData);\n return data;\n};\n"]}
@@ -16,6 +16,7 @@ export interface IDomTooltipStyle {
16
16
  shapeColumn: TooltipColumnStyle<IShapeStyle>;
17
17
  keyColumn: TooltipColumnStyle<ILabelStyle>;
18
18
  valueColumn: TooltipColumnStyle<ILabelStyle>;
19
+ align?: 'left' | 'right';
19
20
  }
20
21
  export type TooltipColumnStyle<T> = IMargin & {
21
22
  width?: string;
@@ -1 +1 @@
1
- {"version":3,"sources":["../src/plugin/components/tooltip-handler/dom/interface.ts"],"names":[],"mappings":"","file":"interface.js","sourcesContent":["import type { FontWeight, TextAlign } from '../../../../typings/visual';\n\nexport interface IDomTooltipStyle {\n panel: IPadding &\n IBorder & {\n width?: string;\n height?: string;\n minHeight?: string;\n backgroundColor?: string;\n boxShadow?: string;\n pointerEvents?: 'auto' | 'none';\n transitionDuration?: string;\n transitionProperty?: string;\n transitionTimingFunction?: string;\n };\n title: ILabelStyle;\n content: IMargin;\n shapeColumn: TooltipColumnStyle<IShapeStyle>;\n keyColumn: TooltipColumnStyle<ILabelStyle>;\n valueColumn: TooltipColumnStyle<ILabelStyle>;\n}\n\nexport type TooltipColumnStyle<T> = IMargin & {\n width?: string;\n /** 各行通用配置 */\n common?: T;\n /** 各行具体配置 */\n items?: T[];\n};\n\nexport interface ILabelStyle extends IMargin {\n fontFamily?: string;\n fontSize?: string;\n color?: string;\n textAlign?: TextAlign;\n lineHeight?: string;\n fontWeight?: FontWeight;\n whiteSpace?: string;\n wordBreak?: string;\n maxWidth?: string;\n width?: string;\n}\n\nexport interface IShapeStyle extends IMargin {\n width?: string;\n height?: string;\n}\n\nexport interface IMargin {\n marginLeft?: string;\n marginRight?: string;\n marginTop?: string;\n marginBottom?: string;\n}\n\nexport interface IPadding {\n paddingTop?: string;\n paddingRight?: string;\n paddingBottom?: string;\n paddingLeft?: string;\n}\n\nexport interface IBorder {\n borderColor?: string;\n borderWidth?: string;\n borderRadius?: string;\n}\n"]}
1
+ {"version":3,"sources":["../src/plugin/components/tooltip-handler/dom/interface.ts"],"names":[],"mappings":"","file":"interface.js","sourcesContent":["import type { FontWeight, TextAlign } from '../../../../typings/visual';\n\nexport interface IDomTooltipStyle {\n panel: IPadding &\n IBorder & {\n width?: string;\n height?: string;\n minHeight?: string;\n backgroundColor?: string;\n boxShadow?: string;\n pointerEvents?: 'auto' | 'none';\n transitionDuration?: string;\n transitionProperty?: string;\n transitionTimingFunction?: string;\n };\n title: ILabelStyle;\n content: IMargin;\n shapeColumn: TooltipColumnStyle<IShapeStyle>;\n keyColumn: TooltipColumnStyle<ILabelStyle>;\n valueColumn: TooltipColumnStyle<ILabelStyle>;\n align?: 'left' | 'right';\n}\n\nexport type TooltipColumnStyle<T> = IMargin & {\n width?: string;\n /** 各行通用配置 */\n common?: T;\n /** 各行具体配置 */\n items?: T[];\n};\n\nexport interface ILabelStyle extends IMargin {\n fontFamily?: string;\n fontSize?: string;\n color?: string;\n textAlign?: TextAlign;\n lineHeight?: string;\n fontWeight?: FontWeight;\n whiteSpace?: string;\n wordBreak?: string;\n maxWidth?: string;\n width?: string;\n}\n\nexport interface IShapeStyle extends IMargin {\n width?: string;\n height?: string;\n}\n\nexport interface IMargin {\n marginLeft?: string;\n marginRight?: string;\n marginTop?: string;\n marginBottom?: string;\n}\n\nexport interface IPadding {\n paddingTop?: string;\n paddingRight?: string;\n paddingBottom?: string;\n paddingLeft?: string;\n}\n\nexport interface IBorder {\n borderColor?: string;\n borderWidth?: string;\n borderRadius?: string;\n}\n"]}
@@ -6,9 +6,7 @@ export declare class ContentModel extends BaseTooltipModel {
6
6
  keyBox: Maybe<ContentColumnModel>;
7
7
  valueBox: Maybe<ContentColumnModel>;
8
8
  init(): void;
9
- private _initShapeBox;
10
- private _initKeyBox;
11
- private _initValueBox;
9
+ private _initBox;
12
10
  setStyle(style?: Partial<CSSStyleDeclaration>): void;
13
11
  setContent(): void;
14
12
  protected _getContentContainerStyle(): Partial<CSSStyleDeclaration>;
@@ -10,20 +10,15 @@ import { getPixelPropertyStr, getScrollbarWidth, pixelPropertyStrToNumber } from
10
10
 
11
11
  export class ContentModel extends BaseTooltipModel {
12
12
  init() {
13
- this.product || (this.product = this.createElement("div", [ "container-box" ])),
14
- this.shapeBox || this._initShapeBox(), this.keyBox || this._initKeyBox(), this.valueBox || this._initValueBox();
15
- }
16
- _initShapeBox() {
17
- const shapeBox = new ContentColumnModel(this.product, this._option, "shape-box", 0);
18
- shapeBox.init(), this.shapeBox = shapeBox, this.children[shapeBox.childIndex] = shapeBox;
19
- }
20
- _initKeyBox() {
21
- const keyBox = new ContentColumnModel(this.product, this._option, "key-box", 1);
22
- keyBox.init(), this.keyBox = keyBox, this.children[keyBox.childIndex] = keyBox;
23
- }
24
- _initValueBox() {
25
- const valueBox = new ContentColumnModel(this.product, this._option, "value-box", 2);
26
- valueBox.init(), this.valueBox = valueBox, this.children[valueBox.childIndex] = valueBox;
13
+ this.product || (this.product = this.createElement("div", [ "container-box" ]));
14
+ const {align: align} = this._option.getTooltipAttributes();
15
+ "right" === align ? (this.valueBox || (this.valueBox = this._initBox("value-box", 0)),
16
+ this.keyBox || (this.keyBox = this._initBox("key-box", 1)), this.shapeBox || (this.shapeBox = this._initBox("shape-box", 2))) : (this.shapeBox || (this.shapeBox = this._initBox("shape-box", 0)),
17
+ this.keyBox || (this.keyBox = this._initBox("key-box", 1)), this.valueBox || (this.valueBox = this._initBox("value-box", 2)));
18
+ }
19
+ _initBox(className, index) {
20
+ const box = new ContentColumnModel(this.product, this._option, className, index);
21
+ return box.init(), this.children[box.childIndex] = box, box;
27
22
  }
28
23
  setStyle(style) {
29
24
  super.setStyle(mergeSpec(this._getContentContainerStyle(), style)), Object.values(this.children).forEach((c => {
@@ -1 +1 @@
1
- {"version":3,"sources":["../src/plugin/components/tooltip-handler/dom/model/content-model.ts"],"names":[],"mappings":"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","file":"content-model.js","sourcesContent":["import { BaseTooltipModel } from './base-tooltip-model';\nimport { ContentColumnModel } from './content-column-model';\nimport type { Maybe } from '@visactor/vutils';\n// eslint-disable-next-line no-duplicate-imports\nimport { isValid } from '@visactor/vutils';\nimport { mergeSpec } from '@visactor/vutils-extension';\nimport { getPixelPropertyStr, getScrollbarWidth, pixelPropertyStrToNumber } from '../utils';\n\nexport class ContentModel extends BaseTooltipModel {\n shapeBox: Maybe<ContentColumnModel>;\n keyBox: Maybe<ContentColumnModel>;\n valueBox: Maybe<ContentColumnModel>;\n\n init(): void {\n if (!this.product) {\n this.product = this.createElement('div', ['container-box']);\n }\n if (!this.shapeBox) {\n this._initShapeBox();\n }\n if (!this.keyBox) {\n this._initKeyBox();\n }\n if (!this.valueBox) {\n this._initValueBox();\n }\n }\n\n private _initShapeBox() {\n const shapeBox = new ContentColumnModel(this.product!, this._option, 'shape-box', 0);\n shapeBox.init();\n this.shapeBox = shapeBox;\n this.children[shapeBox.childIndex] = shapeBox;\n }\n\n private _initKeyBox() {\n const keyBox = new ContentColumnModel(this.product!, this._option, 'key-box', 1);\n keyBox.init();\n this.keyBox = keyBox;\n this.children[keyBox.childIndex] = keyBox;\n }\n\n private _initValueBox() {\n const valueBox = new ContentColumnModel(this.product!, this._option, 'value-box', 2);\n valueBox.init();\n this.valueBox = valueBox;\n this.children[valueBox.childIndex] = valueBox;\n }\n\n setStyle(style?: Partial<CSSStyleDeclaration>): void {\n super.setStyle(mergeSpec(this._getContentContainerStyle(), style));\n Object.values(this.children).forEach(c => {\n c.setStyle();\n });\n }\n\n setContent(): void {\n Object.values(this.children).forEach(c => {\n c.setContent();\n });\n }\n\n protected _getContentContainerStyle(): Partial<CSSStyleDeclaration> {\n const defaultStyle = {\n whiteSpace: 'nowrap',\n lineHeight: '0px'\n };\n\n const { panelDomHeight, panel: panelAttribute, maxContentHeight } = this._option.getTooltipAttributes();\n if (isValid(maxContentHeight) && panelDomHeight < panelAttribute.height) {\n const { shapeColumn = {}, keyColumn = {}, valueColumn = {}, panel = {} } = this._option.getTooltipStyle();\n const width = [\n shapeColumn.width,\n shapeColumn.marginRight,\n keyColumn.width,\n keyColumn.marginRight,\n valueColumn.width,\n valueColumn.marginRight,\n panel.paddingRight\n ].reduce((sum, cur) => sum + <number>pixelPropertyStrToNumber(cur), 0);\n return {\n ...defaultStyle,\n width: `${width + getScrollbarWidth(this._option.getContainer())}px`,\n maxHeight: getPixelPropertyStr(maxContentHeight),\n overflow: 'auto'\n };\n }\n return defaultStyle;\n }\n\n release(): void {\n super.release();\n this.shapeBox = null;\n this.keyBox = null;\n this.valueBox = null;\n }\n}\n"]}
1
+ {"version":3,"sources":["../src/plugin/components/tooltip-handler/dom/model/content-model.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,gBAAgB,EAAE,MAAM,sBAAsB,CAAC;AAExD,OAAO,EAAE,kBAAkB,EAAE,MAAM,wBAAwB,CAAC;AAG5D,OAAO,EAAE,OAAO,EAAE,MAAM,kBAAkB,CAAC;AAC3C,OAAO,EAAE,SAAS,EAAE,MAAM,4BAA4B,CAAC;AACvD,OAAO,EAAE,mBAAmB,EAAE,iBAAiB,EAAE,wBAAwB,EAAE,MAAM,UAAU,CAAC;AAE5F,MAAM,OAAO,YAAa,SAAQ,gBAAgB;IAKhD,IAAI;QACF,IAAI,CAAC,IAAI,CAAC,OAAO,EAAE;YACjB,IAAI,CAAC,OAAO,GAAG,IAAI,CAAC,aAAa,CAAC,KAAK,EAAE,CAAC,eAAe,CAAC,CAAC,CAAC;SAC7D;QACD,MAAM,EAAE,KAAK,EAAE,GAAG,IAAI,CAAC,OAAO,CAAC,oBAAoB,EAAE,CAAC;QACtD,IAAI,KAAK,KAAK,OAAO,EAAE;YACrB,IAAI,CAAC,IAAI,CAAC,QAAQ,EAAE;gBAClB,IAAI,CAAC,QAAQ,GAAG,IAAI,CAAC,QAAQ,CAAC,WAAW,EAAE,CAAC,CAAC,CAAC;aAC/C;YACD,IAAI,CAAC,IAAI,CAAC,MAAM,EAAE;gBAChB,IAAI,CAAC,MAAM,GAAG,IAAI,CAAC,QAAQ,CAAC,SAAS,EAAE,CAAC,CAAC,CAAC;aAC3C;YACD,IAAI,CAAC,IAAI,CAAC,QAAQ,EAAE;gBAClB,IAAI,CAAC,QAAQ,GAAG,IAAI,CAAC,QAAQ,CAAC,WAAW,EAAE,CAAC,CAAC,CAAC;aAC/C;SACF;aAAM;YACL,IAAI,CAAC,IAAI,CAAC,QAAQ,EAAE;gBAClB,IAAI,CAAC,QAAQ,GAAG,IAAI,CAAC,QAAQ,CAAC,WAAW,EAAE,CAAC,CAAC,CAAC;aAC/C;YACD,IAAI,CAAC,IAAI,CAAC,MAAM,EAAE;gBAChB,IAAI,CAAC,MAAM,GAAG,IAAI,CAAC,QAAQ,CAAC,SAAS,EAAE,CAAC,CAAC,CAAC;aAC3C;YACD,IAAI,CAAC,IAAI,CAAC,QAAQ,EAAE;gBAClB,IAAI,CAAC,QAAQ,GAAG,IAAI,CAAC,QAAQ,CAAC,WAAW,EAAE,CAAC,CAAC,CAAC;aAC/C;SACF;IACH,CAAC;IAEO,QAAQ,CAAC,SAA4B,EAAE,KAAa;QAC1D,MAAM,GAAG,GAAG,IAAI,kBAAkB,CAAC,IAAI,CAAC,OAAQ,EAAE,IAAI,CAAC,OAAO,EAAE,SAAS,EAAE,KAAK,CAAC,CAAC;QAClF,GAAG,CAAC,IAAI,EAAE,CAAC;QACX,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,UAAU,CAAC,GAAG,GAAG,CAAC;QACpC,OAAO,GAAG,CAAC;IACb,CAAC;IAED,QAAQ,CAAC,KAAoC;QAC3C,KAAK,CAAC,QAAQ,CAAC,SAAS,CAAC,IAAI,CAAC,yBAAyB,EAAE,EAAE,KAAK,CAAC,CAAC,CAAC;QACnE,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE;YACvC,CAAC,CAAC,QAAQ,EAAE,CAAC;QACf,CAAC,CAAC,CAAC;IACL,CAAC;IAED,UAAU;QACR,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE;YACvC,CAAC,CAAC,UAAU,EAAE,CAAC;QACjB,CAAC,CAAC,CAAC;IACL,CAAC;IAES,yBAAyB;QACjC,MAAM,YAAY,GAAG;YACnB,UAAU,EAAE,QAAQ;YACpB,UAAU,EAAE,KAAK;SAClB,CAAC;QAEF,MAAM,EAAE,cAAc,EAAE,KAAK,EAAE,cAAc,EAAE,gBAAgB,EAAE,GAAG,IAAI,CAAC,OAAO,CAAC,oBAAoB,EAAE,CAAC;QACxG,IAAI,OAAO,CAAC,gBAAgB,CAAC,IAAI,cAAc,GAAG,cAAc,CAAC,MAAM,EAAE;YACvE,MAAM,EAAE,WAAW,GAAG,EAAE,EAAE,SAAS,GAAG,EAAE,EAAE,WAAW,GAAG,EAAE,EAAE,KAAK,GAAG,EAAE,EAAE,GAAG,IAAI,CAAC,OAAO,CAAC,eAAe,EAAE,CAAC;YAC1G,MAAM,KAAK,GAAG;gBACZ,WAAW,CAAC,KAAK;gBACjB,WAAW,CAAC,WAAW;gBACvB,SAAS,CAAC,KAAK;gBACf,SAAS,CAAC,WAAW;gBACrB,WAAW,CAAC,KAAK;gBACjB,WAAW,CAAC,WAAW;gBACvB,KAAK,CAAC,YAAY;aACnB,CAAC,MAAM,CAAC,CAAC,GAAG,EAAE,GAAG,EAAE,EAAE,CAAC,GAAG,GAAW,wBAAwB,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,CAAC;YACvE,uCACK,YAAY,KACf,KAAK,EAAE,GAAG,KAAK,GAAG,iBAAiB,CAAC,IAAI,CAAC,OAAO,CAAC,YAAY,EAAE,CAAC,IAAI,EACpE,SAAS,EAAE,mBAAmB,CAAC,gBAAgB,CAAC,EAChD,QAAQ,EAAE,MAAM,IAChB;SACH;QACD,OAAO,YAAY,CAAC;IACtB,CAAC;IAED,OAAO;QACL,KAAK,CAAC,OAAO,EAAE,CAAC;QAChB,IAAI,CAAC,QAAQ,GAAG,IAAI,CAAC;QACrB,IAAI,CAAC,MAAM,GAAG,IAAI,CAAC;QACnB,IAAI,CAAC,QAAQ,GAAG,IAAI,CAAC;IACvB,CAAC;CACF","file":"content-model.js","sourcesContent":["import { BaseTooltipModel } from './base-tooltip-model';\nimport type { ContentColumnType } from './content-column-model';\nimport { ContentColumnModel } from './content-column-model';\nimport type { Maybe } from '@visactor/vutils';\n// eslint-disable-next-line no-duplicate-imports\nimport { isValid } from '@visactor/vutils';\nimport { mergeSpec } from '@visactor/vutils-extension';\nimport { getPixelPropertyStr, getScrollbarWidth, pixelPropertyStrToNumber } from '../utils';\n\nexport class ContentModel extends BaseTooltipModel {\n shapeBox: Maybe<ContentColumnModel>;\n keyBox: Maybe<ContentColumnModel>;\n valueBox: Maybe<ContentColumnModel>;\n\n init(): void {\n if (!this.product) {\n this.product = this.createElement('div', ['container-box']);\n }\n const { align } = this._option.getTooltipAttributes();\n if (align === 'right') {\n if (!this.valueBox) {\n this.valueBox = this._initBox('value-box', 0);\n }\n if (!this.keyBox) {\n this.keyBox = this._initBox('key-box', 1);\n }\n if (!this.shapeBox) {\n this.shapeBox = this._initBox('shape-box', 2);\n }\n } else {\n if (!this.shapeBox) {\n this.shapeBox = this._initBox('shape-box', 0);\n }\n if (!this.keyBox) {\n this.keyBox = this._initBox('key-box', 1);\n }\n if (!this.valueBox) {\n this.valueBox = this._initBox('value-box', 2);\n }\n }\n }\n\n private _initBox(className: ContentColumnType, index: number) {\n const box = new ContentColumnModel(this.product!, this._option, className, index);\n box.init();\n this.children[box.childIndex] = box;\n return box;\n }\n\n setStyle(style?: Partial<CSSStyleDeclaration>): void {\n super.setStyle(mergeSpec(this._getContentContainerStyle(), style));\n Object.values(this.children).forEach(c => {\n c.setStyle();\n });\n }\n\n setContent(): void {\n Object.values(this.children).forEach(c => {\n c.setContent();\n });\n }\n\n protected _getContentContainerStyle(): Partial<CSSStyleDeclaration> {\n const defaultStyle = {\n whiteSpace: 'nowrap',\n lineHeight: '0px'\n };\n\n const { panelDomHeight, panel: panelAttribute, maxContentHeight } = this._option.getTooltipAttributes();\n if (isValid(maxContentHeight) && panelDomHeight < panelAttribute.height) {\n const { shapeColumn = {}, keyColumn = {}, valueColumn = {}, panel = {} } = this._option.getTooltipStyle();\n const width = [\n shapeColumn.width,\n shapeColumn.marginRight,\n keyColumn.width,\n keyColumn.marginRight,\n valueColumn.width,\n valueColumn.marginRight,\n panel.paddingRight\n ].reduce((sum, cur) => sum + <number>pixelPropertyStrToNumber(cur), 0);\n return {\n ...defaultStyle,\n width: `${width + getScrollbarWidth(this._option.getContainer())}px`,\n maxHeight: getPixelPropertyStr(maxContentHeight),\n overflow: 'auto'\n };\n }\n return defaultStyle;\n }\n\n release(): void {\n super.release();\n this.shapeBox = null;\n this.keyBox = null;\n this.valueBox = null;\n }\n}\n"]}