@visactor/vchart 1.13.9-alpha.6 → 1.13.10-alpha.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (182) hide show
  1. package/build/es5/index.js +1 -1
  2. package/build/index.es.js +1062 -748
  3. package/build/index.js +1062 -747
  4. package/build/index.min.js +1 -1
  5. package/build/tsconfig.tsbuildinfo +1 -1
  6. package/cjs/chart/index.d.ts +1 -1
  7. package/cjs/chart/index.js.map +1 -1
  8. package/cjs/chart/pictogram/interface.d.ts +1 -1
  9. package/cjs/chart/pictogram/interface.js.map +1 -1
  10. package/cjs/chart/progress/linear/linear-progress-transformer.js +1 -1
  11. package/cjs/chart/progress/linear/linear-progress-transformer.js.map +1 -1
  12. package/cjs/compile/mark/compilable-mark.d.ts +1 -0
  13. package/cjs/compile/mark/compilable-mark.js +3 -0
  14. package/cjs/compile/mark/compilable-mark.js.map +1 -1
  15. package/cjs/component/axis/base-axis.js +7 -2
  16. package/cjs/component/axis/base-axis.js.map +1 -1
  17. package/cjs/component/axis/interface/spec.d.ts +7 -2
  18. package/cjs/component/axis/interface/spec.js.map +1 -1
  19. package/cjs/component/brush/brush.d.ts +23 -24
  20. package/cjs/component/brush/brush.js +183 -182
  21. package/cjs/component/brush/brush.js.map +1 -1
  22. package/cjs/component/brush/interface.d.ts +2 -0
  23. package/cjs/component/brush/interface.js.map +1 -1
  24. package/cjs/component/crosshair/base.js +1 -1
  25. package/cjs/component/crosshair/base.js.map +1 -1
  26. package/cjs/component/crosshair/utils/cartesian.js +9 -8
  27. package/cjs/component/crosshair/utils/cartesian.js.map +1 -1
  28. package/cjs/component/data-zoom/data-zoom/interface.d.ts +2 -3
  29. package/cjs/component/data-zoom/data-zoom/interface.js.map +1 -1
  30. package/cjs/component/marker/mark-area/base-mark-area.js +27 -17
  31. package/cjs/component/marker/mark-area/base-mark-area.js.map +1 -1
  32. package/cjs/component/marker/mark-area/interface/theme.d.ts +4 -3
  33. package/cjs/component/marker/mark-area/interface/theme.js.map +1 -1
  34. package/cjs/component/marker/mark-line/base-mark-line.js +31 -20
  35. package/cjs/component/marker/mark-line/base-mark-line.js.map +1 -1
  36. package/cjs/component/marker/mark-line/cartesian-mark-line.js +32 -26
  37. package/cjs/component/marker/mark-line/cartesian-mark-line.js.map +1 -1
  38. package/cjs/component/marker/mark-line/interface/theme.d.ts +4 -3
  39. package/cjs/component/marker/mark-line/interface/theme.js.map +1 -1
  40. package/cjs/component/marker/mark-point/cartesian-mark-point.js +3 -1
  41. package/cjs/component/marker/mark-point/cartesian-mark-point.js.map +1 -1
  42. package/cjs/component/marker/utils.d.ts +12 -0
  43. package/cjs/component/marker/utils.js +22 -7
  44. package/cjs/component/marker/utils.js.map +1 -1
  45. package/cjs/constant/event.d.ts +1 -0
  46. package/cjs/constant/event.js +6 -6
  47. package/cjs/constant/event.js.map +1 -1
  48. package/cjs/constant/funnel.js +1 -2
  49. package/cjs/constant/layout.js +2 -1
  50. package/cjs/core/index.d.ts +1 -1
  51. package/cjs/core/index.js +2 -3
  52. package/cjs/core/index.js.map +1 -1
  53. package/cjs/core/interface.js +2 -1
  54. package/cjs/data/transforms/pictogram.d.ts +1 -9
  55. package/cjs/data/transforms/pictogram.js +3 -3
  56. package/cjs/data/transforms/pictogram.js.map +1 -1
  57. package/cjs/data/transforms/pie.js +1 -1
  58. package/cjs/data/transforms/pie.js.map +1 -1
  59. package/cjs/index-harmony-simple.js.map +1 -1
  60. package/cjs/index.d.ts +1 -0
  61. package/cjs/index.js +8 -7
  62. package/cjs/index.js.map +1 -1
  63. package/cjs/model/base-model.d.ts +1 -0
  64. package/cjs/model/base-model.js +6 -0
  65. package/cjs/model/base-model.js.map +1 -1
  66. package/cjs/plugin/components/tooltip-handler/base.js +8 -0
  67. package/cjs/plugin/components/tooltip-handler/base.js.map +1 -1
  68. package/cjs/plugin/components/tooltip-handler/dom-tooltip-handler.js +11 -7
  69. package/cjs/plugin/components/tooltip-handler/dom-tooltip-handler.js.map +1 -1
  70. package/cjs/plugin/components/tooltip-handler/utils/position.d.ts +1 -1
  71. package/cjs/plugin/components/tooltip-handler/utils/position.js +9 -1
  72. package/cjs/plugin/components/tooltip-handler/utils/position.js.map +1 -1
  73. package/cjs/series/bar/bar.js.map +1 -1
  74. package/cjs/series/gauge/gauge.js +7 -5
  75. package/cjs/series/gauge/gauge.js.map +1 -1
  76. package/cjs/series/pictogram/tooltip-helper.d.ts +2 -2
  77. package/cjs/series/pictogram/tooltip-helper.js.map +1 -1
  78. package/cjs/series/pie/pie.js +3 -3
  79. package/cjs/series/pie/pie.js.map +1 -1
  80. package/cjs/series/polar/progress-like/interface.d.ts +1 -0
  81. package/cjs/series/polar/progress-like/interface.js.map +1 -1
  82. package/cjs/series/polar/progress-like/progress-like.js +4 -3
  83. package/cjs/series/polar/progress-like/progress-like.js.map +1 -1
  84. package/cjs/series/progress/linear/interface.d.ts +1 -0
  85. package/cjs/series/progress/linear/interface.js.map +1 -1
  86. package/cjs/series/progress/linear/linear.js +6 -4
  87. package/cjs/series/progress/linear/linear.js.map +1 -1
  88. package/cjs/series/sankey/interface.d.ts +0 -1
  89. package/cjs/series/sankey/interface.js.map +1 -1
  90. package/cjs/typings/tooltip/position.d.ts +1 -1
  91. package/cjs/typings/tooltip/position.js.map +1 -1
  92. package/cjs/typings/visual.d.ts +1 -1
  93. package/cjs/typings/visual.js.map +1 -1
  94. package/esm/chart/index.d.ts +1 -1
  95. package/esm/chart/index.js.map +1 -1
  96. package/esm/chart/pictogram/interface.d.ts +1 -1
  97. package/esm/chart/pictogram/interface.js.map +1 -1
  98. package/esm/chart/progress/linear/linear-progress-transformer.js +1 -1
  99. package/esm/chart/progress/linear/linear-progress-transformer.js.map +1 -1
  100. package/esm/compile/mark/compilable-mark.d.ts +1 -0
  101. package/esm/compile/mark/compilable-mark.js +3 -0
  102. package/esm/compile/mark/compilable-mark.js.map +1 -1
  103. package/esm/component/axis/base-axis.js +7 -2
  104. package/esm/component/axis/base-axis.js.map +1 -1
  105. package/esm/component/axis/interface/spec.d.ts +7 -2
  106. package/esm/component/axis/interface/spec.js.map +1 -1
  107. package/esm/component/brush/brush.d.ts +23 -24
  108. package/esm/component/brush/brush.js +179 -177
  109. package/esm/component/brush/brush.js.map +1 -1
  110. package/esm/component/brush/interface.d.ts +2 -0
  111. package/esm/component/brush/interface.js.map +1 -1
  112. package/esm/component/crosshair/base.js +1 -1
  113. package/esm/component/crosshair/base.js.map +1 -1
  114. package/esm/component/crosshair/utils/cartesian.js +9 -8
  115. package/esm/component/crosshair/utils/cartesian.js.map +1 -1
  116. package/esm/component/data-zoom/data-zoom/interface.d.ts +2 -3
  117. package/esm/component/data-zoom/data-zoom/interface.js.map +1 -1
  118. package/esm/component/marker/mark-area/base-mark-area.js +27 -16
  119. package/esm/component/marker/mark-area/base-mark-area.js.map +1 -1
  120. package/esm/component/marker/mark-area/interface/theme.d.ts +4 -3
  121. package/esm/component/marker/mark-area/interface/theme.js.map +1 -1
  122. package/esm/component/marker/mark-line/base-mark-line.js +30 -19
  123. package/esm/component/marker/mark-line/base-mark-line.js.map +1 -1
  124. package/esm/component/marker/mark-line/cartesian-mark-line.js +31 -26
  125. package/esm/component/marker/mark-line/cartesian-mark-line.js.map +1 -1
  126. package/esm/component/marker/mark-line/interface/theme.d.ts +4 -3
  127. package/esm/component/marker/mark-line/interface/theme.js.map +1 -1
  128. package/esm/component/marker/mark-point/cartesian-mark-point.js +1 -1
  129. package/esm/component/marker/mark-point/cartesian-mark-point.js.map +1 -1
  130. package/esm/component/marker/utils.d.ts +12 -0
  131. package/esm/component/marker/utils.js +19 -4
  132. package/esm/component/marker/utils.js.map +1 -1
  133. package/esm/constant/event.d.ts +1 -0
  134. package/esm/constant/event.js +6 -6
  135. package/esm/constant/event.js.map +1 -1
  136. package/esm/constant/funnel.js +1 -2
  137. package/esm/constant/layout.js +2 -1
  138. package/esm/core/index.d.ts +1 -1
  139. package/esm/core/index.js +2 -3
  140. package/esm/core/index.js.map +1 -1
  141. package/esm/core/interface.js +2 -1
  142. package/esm/data/transforms/pictogram.d.ts +1 -9
  143. package/esm/data/transforms/pictogram.js +3 -3
  144. package/esm/data/transforms/pictogram.js.map +1 -1
  145. package/esm/data/transforms/pie.js +1 -1
  146. package/esm/data/transforms/pie.js.map +1 -1
  147. package/esm/index-harmony-simple.js.map +1 -1
  148. package/esm/index.d.ts +1 -0
  149. package/esm/index.js +2 -0
  150. package/esm/index.js.map +1 -1
  151. package/esm/model/base-model.d.ts +1 -0
  152. package/esm/model/base-model.js +6 -0
  153. package/esm/model/base-model.js.map +1 -1
  154. package/esm/plugin/components/tooltip-handler/base.js +8 -0
  155. package/esm/plugin/components/tooltip-handler/base.js.map +1 -1
  156. package/esm/plugin/components/tooltip-handler/dom-tooltip-handler.js +11 -7
  157. package/esm/plugin/components/tooltip-handler/dom-tooltip-handler.js.map +1 -1
  158. package/esm/plugin/components/tooltip-handler/utils/position.d.ts +1 -1
  159. package/esm/plugin/components/tooltip-handler/utils/position.js +9 -1
  160. package/esm/plugin/components/tooltip-handler/utils/position.js.map +1 -1
  161. package/esm/series/bar/bar.js.map +1 -1
  162. package/esm/series/gauge/gauge.js +6 -4
  163. package/esm/series/gauge/gauge.js.map +1 -1
  164. package/esm/series/pictogram/tooltip-helper.d.ts +2 -2
  165. package/esm/series/pictogram/tooltip-helper.js.map +1 -1
  166. package/esm/series/pie/pie.js +4 -4
  167. package/esm/series/pie/pie.js.map +1 -1
  168. package/esm/series/polar/progress-like/interface.d.ts +1 -0
  169. package/esm/series/polar/progress-like/interface.js.map +1 -1
  170. package/esm/series/polar/progress-like/progress-like.js +4 -3
  171. package/esm/series/polar/progress-like/progress-like.js.map +1 -1
  172. package/esm/series/progress/linear/interface.d.ts +1 -0
  173. package/esm/series/progress/linear/interface.js.map +1 -1
  174. package/esm/series/progress/linear/linear.js +6 -4
  175. package/esm/series/progress/linear/linear.js.map +1 -1
  176. package/esm/series/sankey/interface.d.ts +0 -1
  177. package/esm/series/sankey/interface.js.map +1 -1
  178. package/esm/typings/tooltip/position.d.ts +1 -1
  179. package/esm/typings/tooltip/position.js.map +1 -1
  180. package/esm/typings/visual.d.ts +1 -1
  181. package/esm/typings/visual.js.map +1 -1
  182. package/package.json +18 -18
@@ -107,8 +107,7 @@ const pictogram = data => {
107
107
  elements.forEach(((el, index) => {
108
108
  var _a;
109
109
  el[data_1.DEFAULT_DATA_INDEX] = index, el._uniqueId = `${el.id}-${index}`, el.data = void 0;
110
- const {graphicType: type, transform: transform} = el;
111
- let finalAttributes = {
110
+ const {graphicType: type, transform: transform} = el, finalAttributes = {
112
111
  visible: "hidden" !== el.attributes.visibility && "collapse" !== el.attributes.visibility
113
112
  };
114
113
  "text" === el.graphicType ? (0, vutils_1.merge)(finalAttributes, el._inheritStyle, null === (_a = el.parent) || void 0 === _a ? void 0 : _a._textGroupStyle, el.attributes) : "group" !== el.graphicType && (0,
@@ -129,7 +128,8 @@ const pictogram = data => {
129
128
  return result;
130
129
  }));
131
130
  if (children && children.length) {
132
- let startX = null !== (_b = null === (_a = texts[i]._textGroupStyle) || void 0 === _a ? void 0 : _a.x) && void 0 !== _b ? _b : 0, curX = startX;
131
+ const startX = null !== (_b = null === (_a = texts[i]._textGroupStyle) || void 0 === _a ? void 0 : _a.x) && void 0 !== _b ? _b : 0;
132
+ let curX = startX;
133
133
  for (let j = 0; j < children.length; j++) {
134
134
  const currentChild = children[j];
135
135
  if ("group" === currentChild.graphicType) curX = startX; else if (currentChild.value && void 0 === currentChild.parent._textGroupStyle.x) {
@@ -1 +1 @@
1
- {"version":3,"sources":["../src/data/transforms/pictogram.ts"],"names":[],"mappings":"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","file":"pictogram.js","sourcesContent":["import { isValid, merge } from '@visactor/vutils';\nimport type { DataView, SVGParserResult } from '@visactor/vdataset';\nimport { DEFAULT_DATA_INDEX } from '../../constant/data';\nimport { measureText } from '../../util';\n\nfunction isValidStrokeOrFill(attr: any) {\n return isValid(attr) && attr !== 'none' && !attr.includes?.('url');\n}\n\nconst getLineWidth = (attributes: any) => {\n const strokeWidth = parseFloat(attributes['strokeWidth']);\n if (!isNaN(strokeWidth)) {\n return strokeWidth;\n }\n\n const stroke = attributes['stroke'];\n return stroke && isValidStrokeOrFill(stroke) ? 1 : 0;\n};\n\nconst getFill = (attributes: any, defaultFill?: string) => {\n const fill = attributes['fill'] ?? defaultFill;\n return fill && isValidStrokeOrFill(fill) ? fill : undefined;\n};\n\nconst getStroke = (attributes: any, defaultStroke?: string) => {\n const stroke = attributes['stroke'] ?? defaultStroke;\n return stroke && isValidStrokeOrFill(stroke) ? stroke : false;\n};\n\nconst commonAttributes = (attributes: Record<string, any>) => {\n return {\n ...attributes,\n x: parseFloat(attributes.x) || undefined,\n y: parseFloat(attributes.y) || undefined,\n fillStrokeOrder: false,\n fill: getFill(attributes),\n lineWidth: getLineWidth(attributes),\n stroke: getStroke(attributes)\n };\n};\n\nexport const graphicAttributeTransform = {\n group: (attributes: Record<string, any>) => {\n const common = commonAttributes(attributes);\n return {\n ...common,\n visibleAll: common['visible'] !== false\n };\n },\n rule: (attributes: Record<string, any>) => {\n return {\n ...commonAttributes(attributes),\n x: parseFloat(attributes.x1),\n y: parseFloat(attributes.y1),\n x1: parseFloat(attributes.x2),\n y1: parseFloat(attributes.y2)\n };\n },\n rect: (attributes: Record<string, any>) => {\n return {\n ...commonAttributes(attributes),\n // rect 在 chrome 下有默认黑色填充,这里保持效果一致\n fill: getFill(attributes, '#000'),\n width: parseFloat(attributes.width),\n height: parseFloat(attributes.height)\n };\n },\n polygon: (attributes: Record<string, any>) => {\n return {\n ...commonAttributes(attributes),\n // rect 在 chrome 下有默认黑色填充,这里保持效果一致\n fill: getFill(attributes, '#000'),\n points: attributes.points\n .trim()\n .split(/\\s+/)\n .map((pair: string) => {\n const [x, y] = pair.split(',').map(Number);\n return { x, y };\n })\n };\n },\n line: (attributes: Record<string, any>) => {\n return {\n ...commonAttributes(attributes),\n points: attributes.points\n .trim()\n .split(/\\s+/)\n .map((pair: string) => {\n const [x, y] = pair.split(',').map(Number);\n return { x, y };\n })\n };\n },\n path: (attributes: Record<string, any>) => {\n return {\n ...commonAttributes(attributes),\n path: attributes.d,\n fillStrokeOrder: false,\n fill: getFill(attributes, '#000')\n };\n },\n arc: (attributes: Record<string, any>) => {\n return {\n ...commonAttributes(attributes),\n outerRadius: attributes.r ?? attributes.ry,\n x: parseFloat(attributes.cx),\n y: parseFloat(attributes.cy),\n startAngle: 0,\n endAngle: Math.PI * 2,\n scaleX: parseFloat(attributes.rx) / parseFloat(attributes.ry) || 1,\n fill: getFill(attributes, '#000')\n };\n },\n text: (attributes: Record<string, any>, value: string) => {\n return {\n ...commonAttributes(attributes),\n text: value,\n textAlign: attributes.textAlign ?? 'left',\n textBaseLine: attributes.textAnchor ?? 'middle',\n anchor: [0, 0],\n fill: getFill(attributes, '#000')\n };\n }\n};\n\nexport const pictogram = (data: DataView[]) => {\n if (!data || !data[0]) {\n return {};\n }\n const { elements } = data[0].latestData as SVGParserResult;\n\n // 处理最终属性\n if (elements && elements.length) {\n // TODO: type\n // elements.forEach((el: SVGParsedElementExtend, index: number) => {\n elements.forEach((el: any, index: number) => {\n el[DEFAULT_DATA_INDEX] = index;\n el._uniqueId = `${el.id}-${index}`;\n el.data = undefined;\n\n const { graphicType: type, transform } = el;\n\n let finalAttributes = {\n visible: el.attributes.visibility !== 'hidden' && el.attributes.visibility !== 'collapse'\n };\n\n if (el.graphicType === 'text') {\n merge(finalAttributes, el._inheritStyle, el.parent?._textGroupStyle, el.attributes);\n } else if (el.graphicType !== 'group') {\n merge(finalAttributes, el._inheritStyle, el.attributes);\n }\n\n if (graphicAttributeTransform[type]) {\n el._finalAttributes = graphicAttributeTransform[type](finalAttributes, el.value);\n } else {\n el._finalAttributes = finalAttributes;\n }\n\n if (transform) {\n el._finalAttributes.postMatrix = { ...transform };\n }\n });\n\n // 处理文字布局\n const texts = elements.filter(el => el.tagName === 'text');\n for (let i = 0; i < texts.length; i++) {\n const textId = texts[i]._uniqueId;\n const children = elements.filter(el => {\n let result = false;\n let parent = el.parent;\n while (parent) {\n if (parent._uniqueId === textId) {\n result = true;\n break;\n }\n parent = parent.parent;\n }\n return result;\n });\n\n if (children && children.length) {\n let startX = texts[i]._textGroupStyle?.x ?? 0;\n let curX = startX;\n\n for (let j = 0; j < children.length; j++) {\n const currentChild = children[j];\n if (currentChild.graphicType === 'group') {\n curX = startX;\n } else if (currentChild.value) {\n if (currentChild.parent._textGroupStyle.x === undefined) {\n const lastText = children\n .slice(0, j)\n .reverse()\n .find(c => c.graphicType === 'text' && c.value);\n if (lastText) {\n const width = measureText(lastText.value, lastText._finalAttributes).width;\n curX += width;\n }\n currentChild._finalAttributes.x = curX;\n }\n }\n }\n }\n }\n }\n\n return elements;\n};\n"]}
1
+ {"version":3,"sources":["../src/data/transforms/pictogram.ts"],"names":[],"mappings":"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","file":"pictogram.js","sourcesContent":["import { isValid, merge } from '@visactor/vutils';\nimport type { DataView, SVGParserResult } from '@visactor/vdataset';\nimport { DEFAULT_DATA_INDEX } from '../../constant/data';\nimport { measureText } from '../../util';\n\nfunction isValidStrokeOrFill(attr: any) {\n return isValid(attr) && attr !== 'none' && !attr.includes?.('url');\n}\n\nconst getLineWidth = (attributes: any) => {\n const strokeWidth = parseFloat(attributes.strokeWidth);\n if (!isNaN(strokeWidth)) {\n return strokeWidth;\n }\n\n const stroke = attributes.stroke;\n return stroke && isValidStrokeOrFill(stroke) ? 1 : 0;\n};\n\nconst getFill = (attributes: any, defaultFill?: string) => {\n const fill = attributes.fill ?? defaultFill;\n return fill && isValidStrokeOrFill(fill) ? fill : undefined;\n};\n\nconst getStroke = (attributes: any, defaultStroke?: string) => {\n const stroke = attributes.stroke ?? defaultStroke;\n return stroke && isValidStrokeOrFill(stroke) ? stroke : false;\n};\n\nconst commonAttributes = (attributes: Record<string, any>) => {\n return {\n ...attributes,\n x: parseFloat(attributes.x) || undefined,\n y: parseFloat(attributes.y) || undefined,\n fillStrokeOrder: false,\n fill: getFill(attributes),\n lineWidth: getLineWidth(attributes),\n stroke: getStroke(attributes)\n };\n};\n\nexport const graphicAttributeTransform = {\n group: (attributes: Record<string, any>) => {\n const common = commonAttributes(attributes) as any;\n return {\n ...common,\n visibleAll: common.visible !== false\n };\n },\n rule: (attributes: Record<string, any>) => {\n return {\n ...commonAttributes(attributes),\n x: parseFloat(attributes.x1),\n y: parseFloat(attributes.y1),\n x1: parseFloat(attributes.x2),\n y1: parseFloat(attributes.y2)\n };\n },\n rect: (attributes: Record<string, any>) => {\n return {\n ...commonAttributes(attributes),\n // rect 在 chrome 下有默认黑色填充,这里保持效果一致\n fill: getFill(attributes, '#000'),\n width: parseFloat(attributes.width),\n height: parseFloat(attributes.height)\n };\n },\n polygon: (attributes: Record<string, any>) => {\n return {\n ...commonAttributes(attributes),\n // rect 在 chrome 下有默认黑色填充,这里保持效果一致\n fill: getFill(attributes, '#000'),\n points: attributes.points\n .trim()\n .split(/\\s+/)\n .map((pair: string) => {\n const [x, y] = pair.split(',').map(Number);\n return { x, y };\n })\n };\n },\n line: (attributes: Record<string, any>) => {\n return {\n ...commonAttributes(attributes),\n points: attributes.points\n .trim()\n .split(/\\s+/)\n .map((pair: string) => {\n const [x, y] = pair.split(',').map(Number);\n return { x, y };\n })\n };\n },\n path: (attributes: Record<string, any>) => {\n return {\n ...commonAttributes(attributes),\n path: attributes.d,\n fillStrokeOrder: false,\n fill: getFill(attributes, '#000')\n };\n },\n arc: (attributes: Record<string, any>) => {\n return {\n ...commonAttributes(attributes),\n outerRadius: attributes.r ?? attributes.ry,\n x: parseFloat(attributes.cx),\n y: parseFloat(attributes.cy),\n startAngle: 0,\n endAngle: Math.PI * 2,\n scaleX: parseFloat(attributes.rx) / parseFloat(attributes.ry) || 1,\n fill: getFill(attributes, '#000')\n };\n },\n text: (attributes: Record<string, any>, value: string) => {\n return {\n ...commonAttributes(attributes),\n text: value,\n textAlign: attributes.textAlign ?? 'left',\n textBaseLine: attributes.textAnchor ?? 'middle',\n anchor: [0, 0],\n fill: getFill(attributes, '#000')\n };\n }\n};\n\nexport const pictogram = (data: DataView[]) => {\n if (!data || !data[0]) {\n return {};\n }\n const { elements } = data[0].latestData as SVGParserResult;\n\n // 处理最终属性\n if (elements && elements.length) {\n // TODO: type\n // elements.forEach((el: SVGParsedElementExtend, index: number) => {\n elements.forEach((el: any, index: number) => {\n el[DEFAULT_DATA_INDEX] = index;\n el._uniqueId = `${el.id}-${index}`;\n el.data = undefined;\n\n const { graphicType: type, transform } = el;\n\n const finalAttributes = {\n visible: el.attributes.visibility !== 'hidden' && el.attributes.visibility !== 'collapse'\n };\n\n if (el.graphicType === 'text') {\n merge(finalAttributes, el._inheritStyle, el.parent?._textGroupStyle, el.attributes);\n } else if (el.graphicType !== 'group') {\n merge(finalAttributes, el._inheritStyle, el.attributes);\n }\n\n if (graphicAttributeTransform[type]) {\n el._finalAttributes = graphicAttributeTransform[type](finalAttributes, el.value);\n } else {\n el._finalAttributes = finalAttributes;\n }\n\n if (transform) {\n el._finalAttributes.postMatrix = { ...transform };\n }\n });\n\n // 处理文字布局\n const texts = elements.filter(el => el.tagName === 'text');\n for (let i = 0; i < texts.length; i++) {\n const textId = texts[i]._uniqueId;\n const children = elements.filter(el => {\n let result = false;\n let parent = el.parent;\n while (parent) {\n if (parent._uniqueId === textId) {\n result = true;\n break;\n }\n parent = parent.parent;\n }\n return result;\n });\n\n if (children && children.length) {\n const startX = texts[i]._textGroupStyle?.x ?? 0;\n let curX = startX;\n\n for (let j = 0; j < children.length; j++) {\n const currentChild = children[j];\n if (currentChild.graphicType === 'group') {\n curX = startX;\n } else if (currentChild.value) {\n if (currentChild.parent._textGroupStyle.x === undefined) {\n const lastText = children\n .slice(0, j)\n .reverse()\n .find(c => c.graphicType === 'text' && c.value);\n if (lastText) {\n const width = measureText(lastText.value, lastText._finalAttributes).width;\n curX += width;\n }\n currentChild._finalAttributes.x = curX;\n }\n }\n }\n }\n }\n }\n\n return elements;\n};\n"]}
@@ -13,7 +13,7 @@ function transformInvalidValue(value) {
13
13
  const pie = (originData, op) => {
14
14
  const {asStartAngle: asStartAngle, asEndAngle: asEndAngle, asMiddleAngle: asMiddleAngle, asRadian: asRadian, asRatio: asRatio, asQuadrant: asQuadrant, asK: asK, showAllZero: showAllZero, supportNegative: supportNegative, showEmptyCircle: showEmptyCircle} = op, angleField = op.angleField(), startAngle = op.startAngle(), endAngle = op.endAngle(), minAngle = op.minAngle(), data = originData.map((datum => Object.assign({}, datum)));
15
15
  if (!data || 0 === data.length) return data;
16
- if (!showAllZero && showEmptyCircle && (0, exports.isDataEmpty)(data, angleField, supportNegative)) return data;
16
+ if (!showAllZero && showEmptyCircle && (0, exports.isDataEmpty)(data, angleField, supportNegative)) return [];
17
17
  const appendArcInfo = (data, startAngle, angle) => {
18
18
  data[asStartAngle] = startAngle, data[asEndAngle] = startAngle + angle, data[asMiddleAngle] = startAngle + angle / 2,
19
19
  data[asRadian] = angle, data[asQuadrant] = (0, vutils_1.computeQuadrant)(startAngle + angle / 2);
@@ -1 +1 @@
1
- {"version":3,"sources":["../src/data/transforms/pie.ts"],"names":[],"mappings":"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","file":"pie.js","sourcesContent":["import type { DataView } from '@visactor/vdataset';\nimport type { Datum } from '../../typings';\nimport { couldBeValidNumber } from '../../util/type';\nimport { getPercentValue } from '../../util/math';\nimport { ARC_TRANSFORM_VALUE } from '../../constant/polar';\nimport { computeQuadrant, isNil } from '@visactor/vutils';\n\nexport interface IPieOpt {\n angleField: () => string;\n startAngle: () => number;\n endAngle: () => number;\n minAngle: () => number;\n\n asStartAngle: string;\n asEndAngle: string;\n asMiddleAngle: string;\n asRadian: string;\n asRatio: string;\n asQuadrant: string;\n asK: string;\n showAllZero: boolean;\n supportNegative: boolean;\n showEmptyCircle: boolean;\n}\n\nfunction transformInvalidValue(value: any) {\n if (!couldBeValidNumber(value)) {\n return 0;\n }\n return Number.parseFloat(value);\n}\n\nexport const pie = (originData: Array<DataView>, op: IPieOpt) => {\n const {\n asStartAngle,\n asEndAngle,\n asMiddleAngle,\n asRadian,\n asRatio,\n asQuadrant,\n asK,\n showAllZero,\n supportNegative,\n showEmptyCircle\n } = op;\n\n const angleField = op.angleField();\n const startAngle = op.startAngle();\n const endAngle = op.endAngle();\n const minAngle = op.minAngle();\n\n const data = originData.map((datum: Datum) => ({ ...datum }));\n if (!data || data.length === 0) {\n return data;\n }\n\n if (!showAllZero && showEmptyCircle && isDataEmpty(data, angleField, supportNegative)) {\n return data;\n }\n\n const appendArcInfo = (data: Datum, startAngle: number, angle: number) => {\n data[asStartAngle] = startAngle;\n data[asEndAngle] = startAngle + angle;\n data[asMiddleAngle] = startAngle + angle / 2;\n data[asRadian] = angle;\n data[asQuadrant] = computeQuadrant(startAngle + angle / 2);\n };\n\n let total = 0;\n let max = -Infinity;\n let isAllZero = true;\n for (let index = 0; index < data.length; index++) {\n const angleFieldValue = supportNegative\n ? Math.abs(transformInvalidValue(data[index][angleField]))\n : transformInvalidValue(data[index][angleField]);\n total += angleFieldValue;\n max = Math.max(angleFieldValue, max);\n if (isAllZero && angleFieldValue !== 0) {\n isAllZero = false;\n }\n\n data[index][ARC_TRANSFORM_VALUE] = angleFieldValue;\n }\n\n const valueList = data.map(d => Number(d[angleField]));\n const angleRange = endAngle - startAngle;\n let lastAngle = startAngle;\n let restAngle = angleRange;\n let largeThanMinAngleTotal = 0;\n const percents = getPercentValue(valueList);\n\n data.forEach((d, i) => {\n const angleFieldValue = d[ARC_TRANSFORM_VALUE];\n const ratio = total ? angleFieldValue / total : 0;\n let radian = ratio * angleRange;\n\n if (radian < minAngle) {\n radian = minAngle;\n restAngle -= minAngle;\n } else {\n largeThanMinAngleTotal += angleFieldValue;\n }\n\n const dStartAngle = lastAngle;\n const dEndAngle = lastAngle + radian;\n\n d[asRatio] = ratio;\n d[asK] = max ? angleFieldValue / max : 0;\n d._percent_ = (percents as number[])[i];\n appendArcInfo(d, dStartAngle, radian);\n\n lastAngle = dEndAngle;\n });\n\n if (restAngle < angleRange) {\n if (restAngle <= 1e-3) {\n const angle = angleRange / data.length;\n data.forEach((d, index) => {\n appendArcInfo(d, startAngle + index * angle, angle);\n });\n } else {\n const unitRadian = restAngle / largeThanMinAngleTotal;\n lastAngle = startAngle;\n data.forEach(d => {\n const angle = d[asRadian] === minAngle ? minAngle : d[ARC_TRANSFORM_VALUE] * unitRadian;\n appendArcInfo(d, lastAngle, angle);\n\n lastAngle += angle;\n });\n }\n }\n\n if (total !== 0) {\n // 数据都为 0 时,起始角和结束角相同,不应该强制赋值\n // 防止一个扇区的角度会因为浮点数精度问题和传入的 endAngle 不相等\n data[data.length - 1][asEndAngle] = endAngle;\n }\n\n if (isAllZero && showAllZero) {\n const angle = angleRange / data.length;\n data.forEach((d, index) => {\n appendArcInfo(d, startAngle + index * angle, angle);\n });\n }\n return data;\n};\n\nexport const isDataEmpty = (data: Datum[], angleField: string, supportNegative: boolean) => {\n if (isNil(data)) {\n return true;\n }\n if (data.length === 0) {\n return true;\n }\n if (data.every(datum => transformInvalidValue(datum[angleField]) === 0)) {\n return true;\n }\n // 未支持负数, 并且和为0, 则也认为是空数据\n if (!supportNegative && data.reduce((sum, datum) => sum + transformInvalidValue(datum[angleField]), 0) === 0) {\n return true;\n }\n\n return false;\n};\n"]}
1
+ {"version":3,"sources":["../src/data/transforms/pie.ts"],"names":[],"mappings":"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","file":"pie.js","sourcesContent":["import type { DataView } from '@visactor/vdataset';\nimport type { Datum } from '../../typings';\nimport { couldBeValidNumber } from '../../util/type';\nimport { getPercentValue } from '../../util/math';\nimport { ARC_TRANSFORM_VALUE } from '../../constant/polar';\nimport { computeQuadrant, isNil } from '@visactor/vutils';\n\nexport interface IPieOpt {\n angleField: () => string;\n startAngle: () => number;\n endAngle: () => number;\n minAngle: () => number;\n\n asStartAngle: string;\n asEndAngle: string;\n asMiddleAngle: string;\n asRadian: string;\n asRatio: string;\n asQuadrant: string;\n asK: string;\n showAllZero: boolean;\n supportNegative: boolean;\n showEmptyCircle: boolean;\n}\n\nfunction transformInvalidValue(value: any) {\n if (!couldBeValidNumber(value)) {\n return 0;\n }\n return Number.parseFloat(value);\n}\n\nexport const pie = (originData: Array<DataView>, op: IPieOpt) => {\n const {\n asStartAngle,\n asEndAngle,\n asMiddleAngle,\n asRadian,\n asRatio,\n asQuadrant,\n asK,\n showAllZero,\n supportNegative,\n showEmptyCircle\n } = op;\n\n const angleField = op.angleField();\n const startAngle = op.startAngle();\n const endAngle = op.endAngle();\n const minAngle = op.minAngle();\n\n const data = originData.map((datum: Datum) => ({ ...datum }));\n if (!data || data.length === 0) {\n return data;\n }\n\n if (!showAllZero && showEmptyCircle && isDataEmpty(data, angleField, supportNegative)) {\n return [];\n }\n\n const appendArcInfo = (data: Datum, startAngle: number, angle: number) => {\n data[asStartAngle] = startAngle;\n data[asEndAngle] = startAngle + angle;\n data[asMiddleAngle] = startAngle + angle / 2;\n data[asRadian] = angle;\n data[asQuadrant] = computeQuadrant(startAngle + angle / 2);\n };\n\n let total = 0;\n let max = -Infinity;\n let isAllZero = true;\n for (let index = 0; index < data.length; index++) {\n const angleFieldValue = supportNegative\n ? Math.abs(transformInvalidValue(data[index][angleField]))\n : transformInvalidValue(data[index][angleField]);\n total += angleFieldValue;\n max = Math.max(angleFieldValue, max);\n if (isAllZero && angleFieldValue !== 0) {\n isAllZero = false;\n }\n\n data[index][ARC_TRANSFORM_VALUE] = angleFieldValue;\n }\n\n const valueList = data.map(d => Number(d[angleField]));\n const angleRange = endAngle - startAngle;\n let lastAngle = startAngle;\n let restAngle = angleRange;\n let largeThanMinAngleTotal = 0;\n const percents = getPercentValue(valueList);\n\n data.forEach((d, i) => {\n const angleFieldValue = d[ARC_TRANSFORM_VALUE];\n const ratio = total ? angleFieldValue / total : 0;\n let radian = ratio * angleRange;\n\n if (radian < minAngle) {\n radian = minAngle;\n restAngle -= minAngle;\n } else {\n largeThanMinAngleTotal += angleFieldValue;\n }\n\n const dStartAngle = lastAngle;\n const dEndAngle = lastAngle + radian;\n\n d[asRatio] = ratio;\n d[asK] = max ? angleFieldValue / max : 0;\n d._percent_ = (percents as number[])[i];\n appendArcInfo(d, dStartAngle, radian);\n\n lastAngle = dEndAngle;\n });\n\n if (restAngle < angleRange) {\n if (restAngle <= 1e-3) {\n const angle = angleRange / data.length;\n data.forEach((d, index) => {\n appendArcInfo(d, startAngle + index * angle, angle);\n });\n } else {\n const unitRadian = restAngle / largeThanMinAngleTotal;\n lastAngle = startAngle;\n data.forEach(d => {\n const angle = d[asRadian] === minAngle ? minAngle : d[ARC_TRANSFORM_VALUE] * unitRadian;\n appendArcInfo(d, lastAngle, angle);\n\n lastAngle += angle;\n });\n }\n }\n\n if (total !== 0) {\n // 数据都为 0 时,起始角和结束角相同,不应该强制赋值\n // 防止一个扇区的角度会因为浮点数精度问题和传入的 endAngle 不相等\n data[data.length - 1][asEndAngle] = endAngle;\n }\n\n if (isAllZero && showAllZero) {\n const angle = angleRange / data.length;\n data.forEach((d, index) => {\n appendArcInfo(d, startAngle + index * angle, angle);\n });\n }\n return data;\n};\n\nexport const isDataEmpty = (data: Datum[], angleField: string, supportNegative: boolean) => {\n if (isNil(data)) {\n return true;\n }\n if (data.length === 0) {\n return true;\n }\n if (data.every(datum => transformInvalidValue(datum[angleField]) === 0)) {\n return true;\n }\n // 未支持负数, 并且和为0, 则也认为是空数据\n if (!supportNegative && data.reduce((sum, datum) => sum + transformInvalidValue(datum[angleField]), 0) === 0) {\n return true;\n }\n\n return false;\n};\n"]}
@@ -1 +1 @@
1
- {"version":3,"sources":["../src/index-harmony-simple.ts"],"names":[],"mappings":"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","file":"index-harmony-simple.js","sourcesContent":["/**\n * @description 包含基础的折柱饼图,提供坐标轴、离散图例以及 tooltip、crosshair、label 组件\n */\nimport { VChart } from './core';\nimport { registerHarmonyEnv } from './env';\n\nimport { registerLineChart } from './chart/line';\nimport { registerAreaChart } from './chart/area';\nimport { registerBarChart } from './chart/bar';\nimport { registerScatterChart } from './chart/scatter';\nimport { registerMapChart } from './chart/map';\nimport { registerPieChart } from './chart/pie';\nimport { registerRoseChart } from './chart/rose';\nimport { registerRadarChart } from './chart/radar';\nimport { registerCommonChart } from './chart/common';\nimport { registerHistogramChart } from './chart/histogram';\nimport { registerCircularProgressChart } from './chart/progress/circular';\nimport { registerGaugeChart } from './chart/gauge';\nimport { registerWordCloudChart } from './chart/word-cloud';\nimport { registerFunnelChart } from './chart/funnel';\nimport { registerLinearProgressChart } from './chart/progress/linear';\nimport { registerRangeColumnChart } from './chart/range-column';\nimport { registerSunburstChart } from './chart/sunburst';\nimport { registerCirclePackingChart } from './chart/circle-packing';\nimport { registerTreemapChart } from './chart/treemap';\nimport { registerWaterfallChart } from './chart/waterfall';\nimport { registerBoxplotChart } from './chart/box-plot';\nimport { registerSankeyChart } from './chart/sankey';\nimport { registerRangeAreaChart } from './chart/range-area';\nimport { registerHeatmapChart } from './chart/heatmap';\nimport { registerCorrelationChart } from './chart/correlation';\nimport {\n registerCartesianBandAxis,\n registerCartesianLinearAxis,\n registerCartesianLogAxis,\n registerCartesianSymlogAxis,\n registerCartesianTimeAxis\n} from './component/axis/cartesian';\nimport { registerPolarBandAxis, registerPolarLinearAxis } from './component/axis/polar';\nimport { registerContinuousLegend, registerDiscreteLegend } from './component/legend';\nimport { registerTooltip } from './component/tooltip';\nimport { registerCartesianCrossHair, registerPolarCrossHair } from './component/crosshair';\nimport { registerDataZoom, registerScrollBar } from './component/data-zoom';\nimport { registerIndicator } from './component/indicator';\nimport { registerGeoCoordinate } from './component/geo';\nimport { registerMarkLine, registerPolarMarkLine } from './component/marker/mark-line';\nimport { registerTitle } from './component/title';\nimport { registerMarkArea, registerPolarMarkArea } from './component/marker/mark-area';\nimport { registerPlayer } from './component/player';\nimport { registerLabel } from './component/label';\nimport { registerTotalLabel } from './component/label/total-label';\nimport { registerMarkPoint, registerPolarMarkPoint, registerGeoMarkPoint } from './component/marker/mark-point';\nimport { registerBrush } from './component/brush';\nimport { registerCustomMark } from './component/custom-mark';\nimport { registerMapLabel } from './component/map-label';\nimport { registerGridLayout } from './layout/grid-layout/grid-layout';\nimport { registerPoptip } from './component/poptip';\nimport { registerCanvasTooltipHandler } from './plugin/components/tooltip-handler';\nimport { registerElementHighlight, registerElementSelect } from '@visactor/vgrammar-core';\nimport { DefaultTicker } from '@visactor/vrender-core';\nimport { registerAnimate } from './plugin/other';\n\nVChart.useRegisters([\n registerLineChart,\n registerAreaChart,\n registerBarChart,\n registerPieChart,\n registerCommonChart,\n\n // components\n registerCartesianLinearAxis,\n registerCartesianBandAxis,\n registerDiscreteLegend,\n registerTooltip,\n registerCartesianCrossHair,\n registerLabel,\n\n // plugin\n registerCanvasTooltipHandler\n]);\n\n// load env code\nVChart.useRegisters([registerHarmonyEnv]);\n\nexport { VChart, DefaultTicker, registerAnimate };\n\nexport {\n // charts\n registerScatterChart,\n registerRoseChart,\n registerRadarChart,\n registerHistogramChart,\n registerMapChart,\n registerGaugeChart,\n registerWordCloudChart,\n registerFunnelChart,\n registerWaterfallChart,\n registerBoxplotChart,\n registerCircularProgressChart,\n registerLinearProgressChart,\n registerRangeColumnChart,\n registerRangeAreaChart,\n registerSunburstChart,\n registerCirclePackingChart,\n registerTreemapChart,\n registerSankeyChart,\n registerHeatmapChart,\n registerCorrelationChart,\n // 优化vchart-all体积, 默认不注册\n // registerLiquidChart,\n // registerVennChart,\n registerCartesianTimeAxis,\n registerCartesianLogAxis,\n registerCartesianSymlogAxis,\n registerPolarBandAxis,\n registerPolarLinearAxis,\n registerContinuousLegend,\n registerPolarCrossHair,\n registerDataZoom,\n registerScrollBar,\n registerIndicator,\n registerGeoCoordinate,\n registerMarkLine,\n registerMarkArea,\n registerMarkPoint,\n registerPolarMarkLine,\n registerPolarMarkArea,\n registerPolarMarkPoint,\n registerGeoMarkPoint,\n registerTitle,\n registerPlayer,\n registerTotalLabel,\n registerBrush,\n registerCustomMark,\n registerMapLabel,\n registerPoptip,\n\n // layout\n registerGridLayout,\n\n // vgrammar interactions,\n registerElementHighlight,\n registerElementSelect\n};\n\nexport default VChart;\n\nexport * from './core';\nexport * from './plugin/chart';\nexport * from './plugin/components/tooltip-handler';\nexport * from './plugin/components/axis-sync';\n"]}
1
+ {"version":3,"sources":["../src/index-harmony-simple.ts"],"names":[],"mappings":"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","file":"index-harmony-simple.js","sourcesContent":["/**\n * @description 包含基础的折柱饼图,提供坐标轴、离散图例以及 tooltip、crosshair、label 组件\n */\nimport { VChart } from './core';\nimport { registerHarmonyEnv } from './env';\n\nimport { registerLineChart } from './chart/line';\nimport { registerAreaChart } from './chart/area';\nimport { registerBarChart } from './chart/bar';\nimport { registerScatterChart } from './chart/scatter';\nimport { registerMapChart } from './chart/map';\nimport { registerPieChart } from './chart/pie';\nimport { registerRoseChart } from './chart/rose';\nimport { registerRadarChart } from './chart/radar';\nimport { registerCommonChart } from './chart/common';\nimport { registerHistogramChart } from './chart/histogram';\nimport { registerCircularProgressChart } from './chart/progress/circular';\nimport { registerGaugeChart } from './chart/gauge';\nimport { registerWordCloudChart } from './chart/word-cloud';\nimport { registerFunnelChart } from './chart/funnel';\nimport { registerLinearProgressChart } from './chart/progress/linear';\nimport { registerRangeColumnChart } from './chart/range-column';\nimport { registerSunburstChart } from './chart/sunburst';\nimport { registerCirclePackingChart } from './chart/circle-packing';\nimport { registerTreemapChart } from './chart/treemap';\nimport { registerWaterfallChart } from './chart/waterfall';\nimport { registerBoxplotChart } from './chart/box-plot';\nimport { registerSankeyChart } from './chart/sankey';\nimport { registerRangeAreaChart } from './chart/range-area';\nimport { registerHeatmapChart } from './chart/heatmap';\nimport { registerCorrelationChart } from './chart/correlation';\nimport {\n registerCartesianBandAxis,\n registerCartesianLinearAxis,\n registerCartesianLogAxis,\n registerCartesianSymlogAxis,\n registerCartesianTimeAxis\n} from './component/axis/cartesian';\nimport { registerPolarBandAxis, registerPolarLinearAxis } from './component/axis/polar';\nimport { registerContinuousLegend, registerDiscreteLegend } from './component/legend';\nimport { registerTooltip } from './component/tooltip';\nimport { registerCartesianCrossHair, registerPolarCrossHair } from './component/crosshair';\nimport { registerDataZoom, registerScrollBar } from './component/data-zoom';\nimport { registerIndicator } from './component/indicator';\nimport { registerGeoCoordinate } from './component/geo';\nimport { registerMarkLine, registerPolarMarkLine } from './component/marker/mark-line';\nimport { registerTitle } from './component/title';\nimport { registerMarkArea, registerPolarMarkArea } from './component/marker/mark-area';\nimport { registerPlayer } from './component/player';\nimport { registerLabel } from './component/label';\nimport { registerTotalLabel } from './component/label/total-label';\nimport { registerMarkPoint, registerPolarMarkPoint, registerGeoMarkPoint } from './component/marker/mark-point';\nimport { registerBrush } from './component/brush';\nimport { registerCustomMark } from './component/custom-mark';\nimport { registerMapLabel } from './component/map-label';\nimport { registerGridLayout } from './layout/grid-layout/grid-layout';\nimport { registerPoptip } from './component/poptip';\nimport { registerCanvasTooltipHandler } from './plugin/components/tooltip-handler';\nimport { registerElementHighlight, registerElementSelect } from '@visactor/vgrammar-core';\nimport { DefaultTicker } from '@visactor/vrender-core';\nimport { registerAnimate } from './plugin/other';\n\nVChart.useRegisters([\n registerLineChart,\n registerAreaChart,\n registerBarChart,\n registerPieChart,\n registerCommonChart,\n\n // components\n registerCartesianLinearAxis,\n registerCartesianBandAxis,\n registerDiscreteLegend,\n registerTooltip,\n registerCartesianCrossHair,\n registerLabel,\n\n // plugin\n registerCanvasTooltipHandler\n]);\n\n// load env code\nVChart.useRegisters([registerHarmonyEnv]);\n\nexport { VChart, DefaultTicker, registerAnimate };\n\nexport {\n // charts\n registerScatterChart,\n registerRoseChart,\n registerRadarChart,\n registerHistogramChart,\n registerMapChart,\n registerGaugeChart,\n registerWordCloudChart,\n registerFunnelChart,\n registerWaterfallChart,\n registerBoxplotChart,\n registerCircularProgressChart,\n registerLinearProgressChart,\n registerRangeColumnChart,\n registerRangeAreaChart,\n registerSunburstChart,\n registerCirclePackingChart,\n registerTreemapChart,\n registerSankeyChart,\n registerHeatmapChart,\n registerCorrelationChart,\n // 优化vchart-all体积, 默认不注册\n // registerLiquidChart,\n // registerVennChart,\n registerCartesianTimeAxis,\n registerCartesianLogAxis,\n registerCartesianSymlogAxis,\n registerPolarBandAxis,\n registerPolarLinearAxis,\n registerContinuousLegend,\n registerPolarCrossHair,\n registerDataZoom,\n registerScrollBar,\n registerIndicator,\n registerGeoCoordinate,\n registerMarkLine,\n registerMarkArea,\n registerMarkPoint,\n registerPolarMarkLine,\n registerPolarMarkArea,\n registerPolarMarkPoint,\n registerGeoMarkPoint,\n registerTitle,\n registerPlayer,\n registerTotalLabel,\n registerBrush,\n registerCustomMark,\n registerMapLabel,\n registerPoptip,\n // layout\n registerGridLayout,\n // vgrammar interactions,\n registerElementHighlight,\n registerElementSelect\n};\n\nexport default VChart;\n\nexport * from './core';\nexport * from './plugin/chart';\nexport * from './plugin/components/tooltip-handler';\nexport * from './plugin/components/axis-sync';\n"]}
package/cjs/index.d.ts CHANGED
@@ -3,6 +3,7 @@ export default VChart;
3
3
  export * from './core';
4
4
  export * from './chart';
5
5
  export * from './chart/base';
6
+ export * from './chart/cartesian';
6
7
  export * from './chart/common';
7
8
  export * from './series';
8
9
  export * from './mark';
package/cjs/index.js CHANGED
@@ -23,11 +23,12 @@ const vchart_all_1 = require("./vchart-all");
23
23
 
24
24
  exports.default = vchart_all_1.VChart, __exportStar(require("./core"), exports),
25
25
  __exportStar(require("./chart"), exports), __exportStar(require("./chart/base"), exports),
26
- __exportStar(require("./chart/common"), exports), __exportStar(require("./series"), exports),
27
- __exportStar(require("./mark"), exports), __exportStar(require("./component"), exports),
28
- __exportStar(require("./layout"), exports), __exportStar(require("./env"), exports),
29
- __exportStar(require("./event"), exports), __exportStar(require("./plugin/chart"), exports),
30
- __exportStar(require("./plugin/components/tooltip-handler"), exports), __exportStar(require("./plugin/components/axis-sync"), exports),
31
- __exportStar(require("./plugin/other"), exports), __exportStar(require("./vrender-tools"), exports),
32
- __exportStar(require("./util/data"), exports), __exportStar(require("./util/spec/transform"), exports);
26
+ __exportStar(require("./chart/cartesian"), exports), __exportStar(require("./chart/common"), exports),
27
+ __exportStar(require("./series"), exports), __exportStar(require("./mark"), exports),
28
+ __exportStar(require("./component"), exports), __exportStar(require("./layout"), exports),
29
+ __exportStar(require("./env"), exports), __exportStar(require("./event"), exports),
30
+ __exportStar(require("./plugin/chart"), exports), __exportStar(require("./plugin/components/tooltip-handler"), exports),
31
+ __exportStar(require("./plugin/components/axis-sync"), exports), __exportStar(require("./plugin/other"), exports),
32
+ __exportStar(require("./vrender-tools"), exports), __exportStar(require("./util/data"), exports),
33
+ __exportStar(require("./util/spec/transform"), exports);
33
34
  //# sourceMappingURL=index.js.map
package/cjs/index.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"sources":["../src/index.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;AAAA,6CAAsC;AAEtC,kBAAe,mBAAM,CAAC;AAEtB,yCAAuB;AAGvB,0CAAwB;AACxB,+CAA6B;AAC7B,iDAA+B;AAC/B,2CAAyB;AACzB,yCAAuB;AACvB,8CAA4B;AAC5B,2CAAyB;AACzB,wCAAsB;AACtB,0CAAwB;AAExB,iDAA+B;AAC/B,sEAAoD;AACpD,gEAA8C;AAC9C,iDAA+B;AAC/B,kDAAgC;AAEhC,8CAA4B;AAC5B,wDAAsC","file":"index.js","sourcesContent":["import { VChart } from './vchart-all';\n\nexport default VChart;\n\nexport * from './core';\n\n// chart model for extension\nexport * from './chart';\nexport * from './chart/base';\nexport * from './chart/common';\nexport * from './series';\nexport * from './mark';\nexport * from './component';\nexport * from './layout';\nexport * from './env';\nexport * from './event';\n// plugin路径太深,如果直接引用,会导致tree-shaking失效\nexport * from './plugin/chart';\nexport * from './plugin/components/tooltip-handler';\nexport * from './plugin/components/axis-sync';\nexport * from './plugin/other';\nexport * from './vrender-tools';\n// util\nexport * from './util/data';\nexport * from './util/spec/transform';\n"]}
1
+ {"version":3,"sources":["../src/index.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;AAAA,6CAAsC;AAEtC,kBAAe,mBAAM,CAAC;AAEtB,yCAAuB;AAGvB,0CAAwB;AACxB,+CAA6B;AAC7B,oDAAkC;AAClC,iDAA+B;AAC/B,2CAAyB;AACzB,yCAAuB;AACvB,8CAA4B;AAC5B,2CAAyB;AACzB,wCAAsB;AACtB,0CAAwB;AAExB,iDAA+B;AAC/B,sEAAoD;AACpD,gEAA8C;AAC9C,iDAA+B;AAC/B,kDAAgC;AAEhC,8CAA4B;AAC5B,wDAAsC","file":"index.js","sourcesContent":["import { VChart } from './vchart-all';\n\nexport default VChart;\n\nexport * from './core';\n\n// chart model for extension\nexport * from './chart';\nexport * from './chart/base';\nexport * from './chart/cartesian';\nexport * from './chart/common';\nexport * from './series';\nexport * from './mark';\nexport * from './component';\nexport * from './layout';\nexport * from './env';\nexport * from './event';\n// plugin路径太深,如果直接引用,会导致tree-shaking失效\nexport * from './plugin/chart';\nexport * from './plugin/components/tooltip-handler';\nexport * from './plugin/components/axis-sync';\nexport * from './plugin/other';\nexport * from './vrender-tools';\n// util\nexport * from './util/data';\nexport * from './util/spec/transform';\n"]}
@@ -48,6 +48,7 @@ export declare abstract class BaseModel<T extends IModelSpec> extends Compilable
48
48
  abstract onRender(ctx: IModelRenderOption): void;
49
49
  onDataUpdate(): void;
50
50
  beforeRelease(): void;
51
+ clear(): void;
51
52
  release(): void;
52
53
  updateSpec(spec: T): {
53
54
  change: boolean;
@@ -76,6 +76,12 @@ class BaseModel extends compilable_base_1.CompilableBase {
76
76
  onEvaluateEnd(ctx) {}
77
77
  onDataUpdate() {}
78
78
  beforeRelease() {}
79
+ clear() {
80
+ this.getMarks().forEach((m => {
81
+ var _a;
82
+ return null === (_a = m.clear) || void 0 === _a ? void 0 : _a.call(m);
83
+ }));
84
+ }
79
85
  release() {
80
86
  var _a;
81
87
  this._releaseEvent(), this._spec = void 0, this.getMarks().forEach((m => m.release())),
@@ -1 +1 @@
1
- {"version":3,"sources":["../src/model/base-model.ts"],"names":[],"mappings":"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","file":"base-model.js","sourcesContent":["import { createID } from '../util/id';\nimport { Event } from '../event/event';\nimport type { IEvent } from '../event/interface';\nimport type {\n IEffect,\n IModel,\n IModelInitOption,\n IModelOption,\n IModelRenderOption,\n IModelEvaluateOption,\n IModelSpec,\n IModelMarkInfo,\n IModelSpecInfo\n} from './interface';\nimport type { CoordinateType } from '../typings/coordinate';\nimport type { ICompileMarkConfig, IMark, IMarkOption, IMarkRaw, IMarkStyle, MarkTypeEnum } from '../mark/interface';\nimport type {\n Datum,\n StateValueType,\n ConvertToMarkStyleSpec,\n ICommonSpec,\n StringOrNumber,\n IRect,\n ILayoutRect\n} from '../typings';\nimport type { CompilableData } from '../compile/data/compilable-data';\nimport type { IGroupMark } from '@visactor/vgrammar-core';\nimport { isValid } from '@visactor/vutils';\nimport { Factory } from '../core/factory';\nimport { MarkSet } from '../mark/mark-set';\nimport type { ILayoutItem } from '../layout/interface';\nimport { CompilableBase } from '../compile/compilable-base';\nimport { PREFIX } from '../constant/base';\nimport { BaseModelSpecTransformer } from './base-model-transformer';\nimport { getProperty } from '@visactor/vutils-extension';\n\nexport abstract class BaseModel<T extends IModelSpec> extends CompilableBase implements IModel {\n readonly transformerConstructor = BaseModelSpecTransformer;\n\n protected _spec: T;\n getSpec(): T {\n return this._spec || ({} as T);\n }\n\n /** 获取当前 model 对应在图表 spec 上的路径 */\n getSpecPath() {\n return this._option?.specPath;\n }\n\n /** 获取当前 model 对应在图表 specInfo 上的路径 */\n getSpecInfoPath() {\n return this._option?.specInfoPath ?? this._option?.specPath;\n }\n\n readonly type: string = 'null';\n readonly modelType: string = 'null';\n\n readonly id;\n\n userId: StringOrNumber | undefined = undefined;\n\n // 事件\n readonly event: IEvent;\n\n // 副作用\n readonly effect: IEffect;\n\n // 数据\n protected _data: CompilableData = null;\n getData() {\n return this._data;\n }\n\n // 布局\n protected _layout?: ILayoutItem = null;\n get layout() {\n return this._layout;\n }\n\n readonly specKey: string = '';\n\n protected declare _option: IModelOption;\n getOption() {\n return this._option;\n }\n\n protected _marks: MarkSet = new MarkSet();\n getMarks(): IMark[] {\n return this._marks?.getMarks() ?? [];\n }\n getMarkNameMap() {\n return this._marks?.getMarkNameMap();\n }\n getMarkSet() {\n return this._marks;\n }\n\n getChart() {\n return this._option.getChart();\n }\n\n protected get _theme() {\n return this.getSpecInfo()?.theme;\n }\n\n /** for layout diff */\n protected _lastLayoutRect: ILayoutRect = null;\n\n constructor(spec: T, option: IModelOption) {\n super(option);\n this.id = createID();\n this.userId = spec.id;\n this._spec = spec;\n this.effect = {};\n this.event = new Event(option.eventDispatcher, option.mode);\n option.map?.set(this.id, this);\n }\n coordinate?: CoordinateType;\n\n protected _releaseEvent() {\n this.event.release();\n }\n\n created() {\n this.setAttrFromSpec();\n }\n\n init(option: IModelInitOption) {\n // do nothing\n }\n\n afterInit() {\n // do nothing\n }\n\n getVisible() {\n return (this._spec as unknown as any)?.visible !== false;\n }\n\n onLayoutStart(layoutRect: IRect, viewRect: ILayoutRect, ctx: any): void {\n // do nothing\n this._layout?.onLayoutStart(layoutRect, viewRect, ctx);\n }\n onLayoutEnd(ctx: any): void {\n this._layout?.onLayoutEnd(ctx);\n this.getMarks().forEach(m => m.updateLayoutState(true, true));\n }\n\n onEvaluateEnd(ctx: IModelEvaluateOption) {\n // do nothing\n }\n abstract onRender(ctx: IModelRenderOption): void;\n\n onDataUpdate() {\n // do nothing\n }\n\n beforeRelease() {\n // do nothing\n }\n\n release() {\n this._releaseEvent();\n this._spec = undefined;\n this.getMarks().forEach(m => m.release());\n this._data?.release();\n this._data = null;\n this._marks.clear();\n super.release();\n }\n\n updateSpec(spec: T) {\n const result = this._compareSpec(spec, this._spec);\n this._spec = spec;\n\n return result;\n }\n\n protected _compareSpec(spec: T, prevSpec: T) {\n const result = {\n change: false,\n reMake: false,\n reRender: false,\n reSize: false,\n reCompile: false\n };\n return result;\n }\n\n reInit(spec?: T) {\n if (spec) {\n this._spec = spec;\n }\n this.setAttrFromSpec();\n }\n\n updateLayoutAttribute() {\n // do nothing\n }\n\n setAttrFromSpec() {\n this._layout?.setAttrFromSpec(this._spec, this._option.getChartViewRect());\n }\n\n /** mark style 内部转换逻辑,override 使用 */\n protected _convertMarkStyle<T extends ICommonSpec = ICommonSpec>(\n style: Partial<IMarkStyle<T> | ConvertToMarkStyleSpec<T>>\n ): Partial<IMarkStyle<T> | ConvertToMarkStyleSpec<T>> {\n const newStyle: any = { ...style };\n return newStyle;\n }\n\n setMarkStyle<T extends ICommonSpec>(\n mark: IMarkRaw<T>,\n style?: Partial<IMarkStyle<T> | ConvertToMarkStyleSpec<T>>,\n state?: StateValueType,\n level?: number\n ) {\n if (!isValid(mark) || !isValid(style)) {\n return;\n }\n mark.setStyle(this._convertMarkStyle(style), state, level);\n }\n\n initMarkStyleWithSpec(mark?: IMark, spec?: any, key?: string) {\n if (!isValid(mark) || !isValid(spec)) {\n return;\n }\n const { style, state } = spec;\n const newSpec = { ...spec };\n\n if (style) {\n newSpec.style = this._convertMarkStyle(style);\n }\n if (state) {\n newSpec.state = {};\n Object.keys(state).forEach(key => {\n newSpec.state[key] = this._convertMarkStyle(state[key]);\n });\n }\n mark.initStyleWithSpec(newSpec, key);\n }\n\n protected stateKeyToSignalName(key: string, opt?: string) {\n let name = `${PREFIX}_${this.modelType}_${this.type}_${this.id}_${key}`;\n opt && (name += `_${opt}`);\n return name;\n }\n\n compileData() {\n this._data?.compile();\n }\n\n compileMarks(group?: string | IGroupMark) {\n this.getMarks().forEach(m => {\n m.compile({ group });\n });\n }\n\n protected _createMark<T extends IMark>(\n markInfo: IModelMarkInfo,\n option: Partial<IMarkOption> = {},\n config?: ICompileMarkConfig\n ): T {\n const { type, name } = markInfo;\n const m = Factory.createMark(type as any, name, {\n model: this,\n map: this._option.map,\n getCompiler: this.getCompiler,\n globalScale: this._option.globalScale,\n ...option\n }) as T;\n\n if (m) {\n m.created();\n config && m.setMarkConfig(config);\n }\n return m;\n }\n\n /**\n * 数据唯一ID\n * 根据自身动画数据匹配需求设置返回值。\n * 默认返回 undefined 时,根据 VGrammar 默认数据 ID 进行索引和匹配。\n */\n protected _getDataIdKey(): string | ((datum: Datum) => string) | undefined {\n return undefined;\n }\n\n getColorScheme() {\n return this._option.getTheme?.().colorScheme;\n }\n\n getSpecInfo() {\n const specInfo = this._option.getSpecInfo?.() ?? {};\n return getProperty<IModelSpecInfo>(specInfo, this.getSpecInfoPath());\n }\n\n getSpecIndex() {\n const path = this.getSpecPath();\n if (!path?.length) {\n return 0;\n }\n const index = Number(path[path.length - 1]);\n if (isNaN(index)) {\n return 0;\n }\n return index;\n }\n}\n"]}
1
+ {"version":3,"sources":["../src/model/base-model.ts"],"names":[],"mappings":"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","file":"base-model.js","sourcesContent":["import { createID } from '../util/id';\nimport { Event } from '../event/event';\nimport type { IEvent } from '../event/interface';\nimport type {\n IEffect,\n IModel,\n IModelInitOption,\n IModelOption,\n IModelRenderOption,\n IModelEvaluateOption,\n IModelSpec,\n IModelMarkInfo,\n IModelSpecInfo\n} from './interface';\nimport type { CoordinateType } from '../typings/coordinate';\nimport type { ICompileMarkConfig, IMark, IMarkOption, IMarkRaw, IMarkStyle, MarkTypeEnum } from '../mark/interface';\nimport type {\n Datum,\n StateValueType,\n ConvertToMarkStyleSpec,\n ICommonSpec,\n StringOrNumber,\n IRect,\n ILayoutRect\n} from '../typings';\nimport type { CompilableData } from '../compile/data/compilable-data';\nimport type { IGroupMark } from '@visactor/vgrammar-core';\nimport { isValid } from '@visactor/vutils';\nimport { Factory } from '../core/factory';\nimport { MarkSet } from '../mark/mark-set';\nimport type { ILayoutItem } from '../layout/interface';\nimport { CompilableBase } from '../compile/compilable-base';\nimport { PREFIX } from '../constant/base';\nimport { BaseModelSpecTransformer } from './base-model-transformer';\nimport { getProperty } from '@visactor/vutils-extension';\n\nexport abstract class BaseModel<T extends IModelSpec> extends CompilableBase implements IModel {\n readonly transformerConstructor = BaseModelSpecTransformer;\n\n protected _spec: T;\n getSpec(): T {\n return this._spec || ({} as T);\n }\n\n /** 获取当前 model 对应在图表 spec 上的路径 */\n getSpecPath() {\n return this._option?.specPath;\n }\n\n /** 获取当前 model 对应在图表 specInfo 上的路径 */\n getSpecInfoPath() {\n return this._option?.specInfoPath ?? this._option?.specPath;\n }\n\n readonly type: string = 'null';\n readonly modelType: string = 'null';\n\n readonly id;\n\n userId: StringOrNumber | undefined = undefined;\n\n // 事件\n readonly event: IEvent;\n\n // 副作用\n readonly effect: IEffect;\n\n // 数据\n protected _data: CompilableData = null;\n getData() {\n return this._data;\n }\n\n // 布局\n protected _layout?: ILayoutItem = null;\n get layout() {\n return this._layout;\n }\n\n readonly specKey: string = '';\n\n protected declare _option: IModelOption;\n getOption() {\n return this._option;\n }\n\n protected _marks: MarkSet = new MarkSet();\n getMarks(): IMark[] {\n return this._marks?.getMarks() ?? [];\n }\n getMarkNameMap() {\n return this._marks?.getMarkNameMap();\n }\n getMarkSet() {\n return this._marks;\n }\n\n getChart() {\n return this._option.getChart();\n }\n\n protected get _theme() {\n return this.getSpecInfo()?.theme;\n }\n\n /** for layout diff */\n protected _lastLayoutRect: ILayoutRect = null;\n\n constructor(spec: T, option: IModelOption) {\n super(option);\n this.id = createID();\n this.userId = spec.id;\n this._spec = spec;\n this.effect = {};\n this.event = new Event(option.eventDispatcher, option.mode);\n option.map?.set(this.id, this);\n }\n coordinate?: CoordinateType;\n\n protected _releaseEvent() {\n this.event.release();\n }\n\n created() {\n this.setAttrFromSpec();\n }\n\n init(option: IModelInitOption) {\n // do nothing\n }\n\n afterInit() {\n // do nothing\n }\n\n getVisible() {\n return (this._spec as unknown as any)?.visible !== false;\n }\n\n onLayoutStart(layoutRect: IRect, viewRect: ILayoutRect, ctx: any): void {\n // do nothing\n this._layout?.onLayoutStart(layoutRect, viewRect, ctx);\n }\n onLayoutEnd(ctx: any): void {\n this._layout?.onLayoutEnd(ctx);\n this.getMarks().forEach(m => m.updateLayoutState(true, true));\n }\n\n onEvaluateEnd(ctx: IModelEvaluateOption) {\n // do nothing\n }\n abstract onRender(ctx: IModelRenderOption): void;\n\n onDataUpdate() {\n // do nothing\n }\n\n beforeRelease() {\n // do nothing\n }\n\n clear() {\n this.getMarks().forEach(m => m.clear?.());\n }\n\n release() {\n this._releaseEvent();\n this._spec = undefined;\n this.getMarks().forEach(m => m.release());\n this._data?.release();\n this._data = null;\n this._marks.clear();\n super.release();\n }\n\n updateSpec(spec: T) {\n const result = this._compareSpec(spec, this._spec);\n this._spec = spec;\n\n return result;\n }\n\n protected _compareSpec(spec: T, prevSpec: T) {\n const result = {\n change: false,\n reMake: false,\n reRender: false,\n reSize: false,\n reCompile: false\n };\n return result;\n }\n\n reInit(spec?: T) {\n if (spec) {\n this._spec = spec;\n }\n this.setAttrFromSpec();\n }\n\n updateLayoutAttribute() {\n // do nothing\n }\n\n setAttrFromSpec() {\n this._layout?.setAttrFromSpec(this._spec, this._option.getChartViewRect());\n }\n\n /** mark style 内部转换逻辑,override 使用 */\n protected _convertMarkStyle<T extends ICommonSpec = ICommonSpec>(\n style: Partial<IMarkStyle<T> | ConvertToMarkStyleSpec<T>>\n ): Partial<IMarkStyle<T> | ConvertToMarkStyleSpec<T>> {\n const newStyle: any = { ...style };\n return newStyle;\n }\n\n setMarkStyle<T extends ICommonSpec>(\n mark: IMarkRaw<T>,\n style?: Partial<IMarkStyle<T> | ConvertToMarkStyleSpec<T>>,\n state?: StateValueType,\n level?: number\n ) {\n if (!isValid(mark) || !isValid(style)) {\n return;\n }\n mark.setStyle(this._convertMarkStyle(style), state, level);\n }\n\n initMarkStyleWithSpec(mark?: IMark, spec?: any, key?: string) {\n if (!isValid(mark) || !isValid(spec)) {\n return;\n }\n const { style, state } = spec;\n const newSpec = { ...spec };\n\n if (style) {\n newSpec.style = this._convertMarkStyle(style);\n }\n if (state) {\n newSpec.state = {};\n Object.keys(state).forEach(key => {\n newSpec.state[key] = this._convertMarkStyle(state[key]);\n });\n }\n mark.initStyleWithSpec(newSpec, key);\n }\n\n protected stateKeyToSignalName(key: string, opt?: string) {\n let name = `${PREFIX}_${this.modelType}_${this.type}_${this.id}_${key}`;\n opt && (name += `_${opt}`);\n return name;\n }\n\n compileData() {\n this._data?.compile();\n }\n\n compileMarks(group?: string | IGroupMark) {\n this.getMarks().forEach(m => {\n m.compile({ group });\n });\n }\n\n protected _createMark<T extends IMark>(\n markInfo: IModelMarkInfo,\n option: Partial<IMarkOption> = {},\n config?: ICompileMarkConfig\n ): T {\n const { type, name } = markInfo;\n const m = Factory.createMark(type as any, name, {\n model: this,\n map: this._option.map,\n getCompiler: this.getCompiler,\n globalScale: this._option.globalScale,\n ...option\n }) as T;\n\n if (m) {\n m.created();\n config && m.setMarkConfig(config);\n }\n return m;\n }\n\n /**\n * 数据唯一ID\n * 根据自身动画数据匹配需求设置返回值。\n * 默认返回 undefined 时,根据 VGrammar 默认数据 ID 进行索引和匹配。\n */\n protected _getDataIdKey(): string | ((datum: Datum) => string) | undefined {\n return undefined;\n }\n\n getColorScheme() {\n return this._option.getTheme?.().colorScheme;\n }\n\n getSpecInfo() {\n const specInfo = this._option.getSpecInfo?.() ?? {};\n return getProperty<IModelSpecInfo>(specInfo, this.getSpecInfoPath());\n }\n\n getSpecIndex() {\n const path = this.getSpecPath();\n if (!path?.length) {\n return 0;\n }\n const index = Number(path[path.length - 1]);\n if (isNaN(index)) {\n return 0;\n }\n return index;\n }\n}\n"]}
@@ -91,6 +91,10 @@ class BaseTooltipHandler extends base_plugin_1.BasePlugin {
91
91
  calcPos[posKey] = dim1 - boxSize * tooltipSizeScale - dimOffset;
92
92
  break;
93
93
 
94
+ case -1.5:
95
+ calcPos[posKey] = dim1 + dimOffset;
96
+ break;
97
+
94
98
  case 0:
95
99
  calcPos[posKey] = (dim1 + dim2) / 2 - boxSize * tooltipSizeScale / 2;
96
100
  break;
@@ -103,6 +107,10 @@ class BaseTooltipHandler extends base_plugin_1.BasePlugin {
103
107
  calcPos[posKey] = (dim1 + dim2) / 2 + dimOffset;
104
108
  break;
105
109
 
110
+ case 1.5:
111
+ calcPos[posKey] = dim2 - boxSize * tooltipSizeScale - dimOffset;
112
+ break;
113
+
106
114
  case 2:
107
115
  calcPos[posKey] = dim2 + dimOffset;
108
116
  }
@@ -1 +1 @@
1
- {"version":3,"sources":["../src/plugin/components/tooltip-handler/base.ts"],"names":[],"mappings":"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","file":"base.js","sourcesContent":["import { DEFAULT_CHART_WIDTH, DEFAULT_CHART_HEIGHT } from '../../../constant/base';\n// eslint-disable-next-line no-duplicate-imports\nimport { DEFAULT_OPTIONS } from './constants';\nimport type { Maybe, IPoint, RenderMode } from '../../../typings';\n// eslint-disable-next-line no-duplicate-imports\nimport type { ITooltipPositionFixedValue, TooltipPositionKeys } from '../../../typings/tooltip/position';\n// eslint-disable-next-line no-duplicate-imports\nimport { isTrueBrowser } from '../../../util/env';\nimport type {\n TooltipData,\n ITooltipActual,\n TooltipActiveType,\n ITooltipHandler,\n ITooltipPositionActual,\n IGlobalTooltipPositionPattern\n} from '../../../typings/tooltip';\n// eslint-disable-next-line no-duplicate-imports\nimport type { TooltipFixedPosition } from '../../../typings/tooltip';\nimport { getScale } from './utils/common';\nimport {\n getActualTooltipPositionValue,\n getCartesianCrosshairRect,\n getPositionType,\n isFixedTooltipPositionPattern,\n isGlobalTooltipPositionPattern\n} from './utils/position';\nimport type { IGroup } from '@visactor/vrender-core';\nimport type { AABBBounds } from '@visactor/vutils';\n// eslint-disable-next-line no-duplicate-imports\nimport { isNumber, isObject, isValidNumber, isValid, isFunction } from '@visactor/vutils';\nimport type { IElement } from '@visactor/vgrammar-core';\nimport type { ILayoutModel } from '../../../model/interface';\nimport type { IContainerSize } from '@visactor/vrender-components';\nimport type { IChartOption } from '../../../chart/interface';\nimport type { ITooltipSpec, Tooltip, TooltipHandlerParams } from '../../../component/tooltip';\n// eslint-disable-next-line no-duplicate-imports\nimport { TooltipResult } from '../../../component/tooltip';\nimport type { IComponentPlugin, IComponentPluginService } from '../interface';\nimport { BasePlugin } from '../../base/base-plugin';\nimport { getTooltipPatternValue } from '../../../component/tooltip/utils';\nimport type { IDimensionData, IDimensionInfo } from '../../../event/events/dimension/interface';\nimport type { ITooltipHandlerOptions } from './interface';\nimport type { ICompiler } from '../../../compile/interface/compilable-item';\n\ntype ChangeTooltipFunc = (visible: boolean, params: TooltipHandlerParams, data?: TooltipData) => TooltipResult;\n\ntype ChangeTooltipPositionFunc = (params: TooltipHandlerParams, data: TooltipData) => TooltipResult;\n\n/**\n * The tooltip handler class.\n */\nexport abstract class BaseTooltipHandler extends BasePlugin implements ITooltipHandler, IComponentPlugin {\n static readonly pluginType: 'component';\n static readonly specKey = 'tooltip';\n\n readonly type: string;\n\n /** 是否可见 */\n protected _visible = true;\n\n // protected _style: ITooltipStyle = {};\n\n protected _option: ITooltipHandlerOptions;\n\n protected _chartOption: IChartOption;\n\n protected _env: RenderMode;\n public get env() {\n return this._env;\n }\n\n protected _component: Tooltip;\n\n protected _chartContainer: Maybe<HTMLElement>;\n protected _compiler: ICompiler;\n\n // tooltip 容器\n protected _container!: Maybe<IGroup | HTMLElement>;\n\n protected _isReleased: boolean = false;\n\n onAdd(service: IComponentPluginService<any>): void {\n super.onAdd(service);\n const component = service.component as Tooltip;\n this._component = component;\n this._chartOption = component.getOption() as any;\n this._env = this._chartOption.mode;\n this._chartContainer = this._chartOption.globalInstance.getContainer();\n this._compiler = component.getCompiler();\n this._initFromSpec();\n }\n\n showTooltip = (activeType: TooltipActiveType, data: TooltipData, params: TooltipHandlerParams) => {\n const { changePositionOnly } = params;\n\n if (changePositionOnly) {\n return this.changeTooltipPosition(params, data);\n }\n return this.changeTooltip(true, params, data);\n };\n\n /** 改变 tooltip 内容和位置(不带 throttle 版本),返回是否遇到异常 */\n protected changeTooltip: ChangeTooltipFunc = (visible: boolean, params: TooltipHandlerParams, data?: TooltipData) => {\n if (this._isReleased) {\n return TooltipResult.failed;\n }\n\n if (!visible) {\n /** 关闭 tooltip */\n this._updateTooltip(false, params);\n return TooltipResult.success;\n }\n\n return this.changeTooltipPosition(params, data);\n };\n\n /** 改变 tooltip 位置(不带 throttle 版本),返回是否遇到异常 */\n protected changeTooltipPosition: ChangeTooltipPositionFunc = (params: TooltipHandlerParams, data: TooltipData) => {\n if (this._isReleased) {\n return TooltipResult.failed;\n }\n\n const event = params.event as MouseEvent;\n const { tooltipSpec, activeTooltipSpec, changePositionOnly } = params;\n\n if (!activeTooltipSpec) {\n return TooltipResult.failed;\n }\n\n const activeType = activeTooltipSpec.activeType;\n\n /** 用户自定义逻辑 */\n if (activeTooltipSpec.handler) {\n return activeTooltipSpec.handler.showTooltip?.(activeType, data, params) ?? TooltipResult.success;\n }\n\n /** 默认逻辑 */\n const pattern = activeTooltipSpec;\n\n // 计算 tooltip 位置\n const position = this._getActualTooltipPosition(\n activeTooltipSpec,\n params,\n this._getTooltipBoxSize(activeTooltipSpec, changePositionOnly)\n );\n activeTooltipSpec.position = position;\n const updatePosition = activeTooltipSpec.updatePosition ?? tooltipSpec[activeType]?.updatePosition;\n\n if (updatePosition) {\n activeTooltipSpec.position = updatePosition(activeTooltipSpec.position, data, params);\n }\n\n // 判断 tooltip 可见性\n let tooltipVisible = pattern?.visible !== false;\n if (\n !data ||\n event.type === 'pointerout' ||\n !activeTooltipSpec.visible ||\n (!activeTooltipSpec.title && !activeTooltipSpec.content)\n ) {\n tooltipVisible = false;\n }\n\n this._updateTooltip(tooltipVisible, {\n ...params,\n changePositionOnly\n });\n return TooltipResult.success;\n };\n\n hideTooltip(params: TooltipHandlerParams): TooltipResult {\n return this.changeTooltip(false, params);\n }\n\n release(): void {\n const spec = this._component.getSpec() ?? {};\n /** 用户自定义逻辑 */\n if (spec.handler) {\n spec.handler.release?.();\n return;\n }\n /** 默认逻辑 */\n this._removeTooltip();\n\n this._isReleased = true;\n }\n\n /* -----需要子类继承的方法开始----- */\n\n protected abstract _updateTooltip(visible: boolean, params: TooltipHandlerParams): void;\n protected abstract _removeTooltip(): void;\n protected abstract _getTooltipBoxSize(\n actualTooltip: ITooltipActual,\n changePositionOnly: boolean\n ): IContainerSize | undefined;\n\n /* -----需要子类继承的方法结束----- */\n\n protected _getDefaultOption(): ITooltipHandlerOptions {\n const { offset } = this._component.getSpec();\n\n return offset\n ? {\n offsetX: offset.x ?? DEFAULT_OPTIONS.offsetX,\n offsetY: offset.y ?? DEFAULT_OPTIONS.offsetY\n }\n : DEFAULT_OPTIONS;\n }\n\n /**\n * 计算实际的 tooltip 位置\n */\n protected _getActualTooltipPosition = (\n actualTooltip: ITooltipActual,\n params: TooltipHandlerParams,\n tooltipBoxSize: IContainerSize | undefined\n ): ITooltipPositionActual => {\n const { tooltipSpec } = params;\n const invalidPosition = {\n x: Infinity,\n y: Infinity\n };\n if (!tooltipSpec) {\n return invalidPosition;\n }\n const event = params.event as MouseEvent;\n const { activeType, data } = actualTooltip;\n const firstDim =\n activeType === 'dimension' ? (data as IDimensionInfo[])[0]?.data?.[0] : (data as IDimensionData[])?.[0];\n\n const { offsetX, offsetY } = this._option;\n\n const spec = tooltipSpec[activeType];\n const position = getTooltipPatternValue(spec?.position, data, params);\n const positionMode =\n getTooltipPatternValue(spec?.positionMode, data, params) ?? (activeType === 'mark' ? 'mark' : 'pointer');\n const { width: tooltipBoxWidth = 0, height: tooltipBoxHeight = 0 } = tooltipBoxSize ?? {};\n\n const isCanvas = tooltipSpec.renderMode === 'canvas';\n const canvasRect = params?.chart?.getCanvasRect();\n const canvasWidth = canvasRect?.width ?? DEFAULT_CHART_WIDTH;\n const canvasHeight = canvasRect?.height ?? DEFAULT_CHART_HEIGHT;\n let isFixedPosition = false;\n\n const containerSize = {\n width: 0,\n height: 0\n };\n let relativePosOffset = { x: 0, y: 0 };\n let tooltipParentElementRect: IPoint | DOMRect = { x: 0, y: 0 };\n let chartElementRect: DOMRect;\n let chartElementScale = 1;\n let tooltipParentElementScale = 1;\n const isBrowser = isTrueBrowser(this._env);\n\n if (isBrowser && !tooltipSpec.confine) {\n // 只有在 browser 模式下才可以获取到 window 对象\n containerSize.width = window.innerWidth;\n containerSize.height = window.innerHeight;\n } else {\n containerSize.width = canvasWidth;\n containerSize.height = canvasHeight;\n }\n if (isBrowser && !isCanvas) {\n const tooltipParentElement = this._getParentElement(tooltipSpec);\n tooltipParentElementRect = tooltipParentElement?.getBoundingClientRect?.() ?? invalidPosition;\n const chartElement = (this._compiler.getCanvas() ?? this._chartContainer) as HTMLElement;\n chartElementRect = chartElement?.getBoundingClientRect();\n relativePosOffset = {\n x: chartElementRect.x - tooltipParentElementRect.x,\n y: chartElementRect.y - tooltipParentElementRect.y\n };\n chartElementScale = getScale(chartElement, chartElementRect);\n tooltipParentElementScale = getScale(tooltipParentElement, tooltipParentElementRect as DOMRect);\n }\n const tooltipSizeScale = tooltipParentElementScale / chartElementScale;\n\n /* 一、计算 left、top、right、bottom */\n\n const calcPos: { top?: number; bottom?: number; left?: number; right?: number } = {};\n const pointerFixedPosition: {\n x: TooltipFixedPosition;\n y: TooltipFixedPosition;\n } = { x: position as any, y: position as any };\n const dimToPos = { x: ['left', 'right'], y: ['top', 'bottom'] };\n\n const processCartesianFixedPosition = ({ orient, mode, offset }: ITooltipPositionFixedValue, dim: 'x' | 'y') => {\n let dim1: number;\n let dim2: number;\n const model = params.model as ILayoutModel;\n const startPoint = model?.getLayoutStartPoint();\n const dimOffset = offset ?? (dim === 'x' ? offsetX : offsetY);\n\n if (mode === 'mark') {\n isFixedPosition = true;\n const element = params.item as IElement;\n const bounds = element?.getBounds() as AABBBounds;\n if (bounds && startPoint) {\n dim1 = (dim === 'x' ? bounds.x1 : bounds.y1) + startPoint[dim];\n dim2 = (dim === 'x' ? bounds.x2 : bounds.y2) + startPoint[dim];\n }\n } else if (\n mode === 'crosshair' &&\n firstDim?.series?.coordinate === 'cartesian' &&\n firstDim.datum &&\n firstDim.datum.length\n ) {\n isFixedPosition = true;\n const rect = getCartesianCrosshairRect(firstDim, startPoint);\n if (rect) {\n dim1 = rect.start[dim];\n dim2 = rect.end[dim];\n }\n } else {\n pointerFixedPosition[dim] = orient;\n }\n\n if (isFixedPosition) {\n const posKey = dimToPos[dim][0] as TooltipPositionKeys;\n const boxSize = dim === 'x' ? tooltipBoxWidth : tooltipBoxHeight;\n switch (getPositionType(orient, dim)) {\n case -2:\n calcPos[posKey] = dim1 - boxSize * tooltipSizeScale - dimOffset;\n break;\n case 0:\n calcPos[posKey] = (dim1 + dim2) / 2 - (boxSize * tooltipSizeScale) / 2;\n break;\n case -1:\n calcPos[posKey] = (dim1 + dim2) / 2 - boxSize * tooltipSizeScale - dimOffset;\n break;\n case 1:\n calcPos[posKey] = (dim1 + dim2) / 2 + dimOffset;\n break;\n case 2:\n calcPos[posKey] = dim2 + dimOffset;\n break;\n }\n }\n };\n const dims = ['x', 'y'] as ('x' | 'y')[];\n if (isObject(position)) {\n if (isGlobalTooltipPositionPattern(position)) {\n const {\n left: posLeft,\n right: posRight,\n top: posTop,\n bottom: posBottom\n } = position as IGlobalTooltipPositionPattern;\n calcPos.left = getActualTooltipPositionValue(posLeft, event);\n calcPos.top = getActualTooltipPositionValue(posTop, event);\n calcPos.right = getActualTooltipPositionValue(posRight, event);\n calcPos.bottom = getActualTooltipPositionValue(posBottom, event);\n } else if (isFixedTooltipPositionPattern(position)) {\n dims.forEach(dim => {\n const dimValue = position[dim];\n if (isNumber(dimValue) || isFunction(dimValue)) {\n calcPos[dimToPos[dim][0] as TooltipPositionKeys] = getActualTooltipPositionValue(\n dimValue as number | ((event: MouseEvent) => number),\n event\n );\n } else {\n processCartesianFixedPosition(dimValue as ITooltipPositionFixedValue, dim);\n }\n });\n }\n } else if (isValid(position)) {\n processCartesianFixedPosition({ orient: position, mode: positionMode } as ITooltipPositionFixedValue, 'x');\n processCartesianFixedPosition({ orient: position, mode: positionMode } as ITooltipPositionFixedValue, 'y');\n }\n\n const result: ITooltipPositionActual = { x: null, y: null };\n\n dims.forEach(dim => {\n /* 二、换算成 x 和 y */\n const boxSize = dim === 'x' ? tooltipBoxWidth : tooltipBoxHeight;\n const canvasSize = dim === 'x' ? canvasWidth : canvasHeight;\n const offset = dim === 'x' ? offsetX : offsetY;\n const posType = getPositionType(pointerFixedPosition[dim], dim);\n if (isValidNumber(calcPos[dimToPos[dim][0] as TooltipPositionKeys])) {\n result[dim] = calcPos[dimToPos[dim][0] as TooltipPositionKeys];\n } else if (isValidNumber(calcPos[dimToPos[dim][1] as TooltipPositionKeys])) {\n result[dim] = canvasSize - boxSize * tooltipSizeScale - calcPos[dimToPos[dim][1] as TooltipPositionKeys];\n } else {\n const value0 = dim === 'x' ? (event as any).canvasX : (event as any).canvasY;\n\n if (posType > 0) {\n result[dim] = value0 + offset;\n } else if (posType === 0) {\n result[dim] = value0 - (boxSize * tooltipSizeScale) / 2;\n } else {\n result[dim] = value0 - boxSize * tooltipSizeScale - offset;\n }\n }\n result[dim] *= chartElementScale;\n\n if (isBrowser) {\n result[dim] += relativePosOffset[dim];\n }\n result[dim] /= tooltipParentElementScale;\n\n /* 三、确保tooltip在视区内 */\n const containerDimSize = dim === 'x' ? containerSize.width : containerSize.height;\n const leftOrTop = tooltipSpec.confine\n ? -(tooltipParentElementRect[dim] - (chartElementRect?.[dim] ?? 0) / chartElementScale) /\n tooltipParentElementScale\n : -tooltipParentElementRect[dim] / tooltipParentElementScale;\n const rightOrBottom = containerDimSize / tooltipParentElementScale + leftOrTop - boxSize;\n\n // 处理左右\n if (posType !== 2 && result[dim] < leftOrTop) {\n // 优先检测left\n if (isFixedPosition) {\n result[dim] = leftOrTop;\n } else {\n if (posType === 0) {\n // 从居中 挪至 右侧\n result[dim] += offset + boxSize / 2;\n } else {\n // 从居左/左侧 挪至 居右/右侧\n result[dim] += offset * 2 + boxSize;\n }\n\n if (result[dim] > rightOrBottom) {\n // 位置不超出视区右界\n result[dim] = rightOrBottom;\n }\n }\n } else if (posType !== -2 && result[dim] > rightOrBottom) {\n // 优先检测right\n // 位置不超出视区右界\n if (isFixedPosition) {\n result[dim] = rightOrBottom;\n } else {\n if (posType === 0) {\n // 从居中 挪至 左侧\n result[dim] -= offset + boxSize / 2;\n } else {\n // 从居右/右侧 挪至 居左/左侧\n result[dim] -= offset * 2 + boxSize;\n }\n\n if (result[dim] < leftOrTop) {\n // 位置不超出视区左界\n result[dim] = leftOrTop;\n }\n }\n }\n });\n\n return result;\n };\n\n protected _getParentElement(spec: ITooltipSpec): HTMLElement {\n return spec.parentElement as any;\n }\n\n getTooltipContainer() {\n return this._container;\n }\n\n protected _initFromSpec() {\n this._option = this._getDefaultOption();\n }\n\n reInit() {\n this._initFromSpec();\n }\n}\n"]}
1
+ {"version":3,"sources":["../src/plugin/components/tooltip-handler/base.ts"],"names":[],"mappings":"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","file":"base.js","sourcesContent":["import { DEFAULT_CHART_WIDTH, DEFAULT_CHART_HEIGHT } from '../../../constant/base';\n// eslint-disable-next-line no-duplicate-imports\nimport { DEFAULT_OPTIONS } from './constants';\nimport type { Maybe, IPoint, RenderMode } from '../../../typings';\n// eslint-disable-next-line no-duplicate-imports\nimport type { ITooltipPositionFixedValue, TooltipPositionKeys } from '../../../typings/tooltip/position';\n// eslint-disable-next-line no-duplicate-imports\nimport { isTrueBrowser } from '../../../util/env';\nimport type {\n TooltipData,\n ITooltipActual,\n TooltipActiveType,\n ITooltipHandler,\n ITooltipPositionActual,\n IGlobalTooltipPositionPattern\n} from '../../../typings/tooltip';\n// eslint-disable-next-line no-duplicate-imports\nimport type { TooltipFixedPosition } from '../../../typings/tooltip';\nimport { getScale } from './utils/common';\nimport {\n getActualTooltipPositionValue,\n getCartesianCrosshairRect,\n getPositionType,\n isFixedTooltipPositionPattern,\n isGlobalTooltipPositionPattern\n} from './utils/position';\nimport type { IGroup } from '@visactor/vrender-core';\nimport type { AABBBounds } from '@visactor/vutils';\n// eslint-disable-next-line no-duplicate-imports\nimport { isNumber, isObject, isValidNumber, isValid, isFunction } from '@visactor/vutils';\nimport type { IElement } from '@visactor/vgrammar-core';\nimport type { ILayoutModel } from '../../../model/interface';\nimport type { IContainerSize } from '@visactor/vrender-components';\nimport type { IChartOption } from '../../../chart/interface';\nimport type { ITooltipSpec, Tooltip, TooltipHandlerParams } from '../../../component/tooltip';\n// eslint-disable-next-line no-duplicate-imports\nimport { TooltipResult } from '../../../component/tooltip';\nimport type { IComponentPlugin, IComponentPluginService } from '../interface';\nimport { BasePlugin } from '../../base/base-plugin';\nimport { getTooltipPatternValue } from '../../../component/tooltip/utils';\nimport type { IDimensionData, IDimensionInfo } from '../../../event/events/dimension/interface';\nimport type { ITooltipHandlerOptions } from './interface';\nimport type { ICompiler } from '../../../compile/interface/compilable-item';\n\ntype ChangeTooltipFunc = (visible: boolean, params: TooltipHandlerParams, data?: TooltipData) => TooltipResult;\n\ntype ChangeTooltipPositionFunc = (params: TooltipHandlerParams, data: TooltipData) => TooltipResult;\n\n/**\n * The tooltip handler class.\n */\nexport abstract class BaseTooltipHandler extends BasePlugin implements ITooltipHandler, IComponentPlugin {\n static readonly pluginType: 'component';\n static readonly specKey = 'tooltip';\n\n readonly type: string;\n\n /** 是否可见 */\n protected _visible = true;\n\n // protected _style: ITooltipStyle = {};\n\n protected _option: ITooltipHandlerOptions;\n\n protected _chartOption: IChartOption;\n\n protected _env: RenderMode;\n public get env() {\n return this._env;\n }\n\n protected _component: Tooltip;\n\n protected _chartContainer: Maybe<HTMLElement>;\n protected _compiler: ICompiler;\n\n // tooltip 容器\n protected _container!: Maybe<IGroup | HTMLElement>;\n\n protected _isReleased: boolean = false;\n\n onAdd(service: IComponentPluginService<any>): void {\n super.onAdd(service);\n const component = service.component as Tooltip;\n this._component = component;\n this._chartOption = component.getOption() as any;\n this._env = this._chartOption.mode;\n this._chartContainer = this._chartOption.globalInstance.getContainer();\n this._compiler = component.getCompiler();\n this._initFromSpec();\n }\n\n showTooltip = (activeType: TooltipActiveType, data: TooltipData, params: TooltipHandlerParams) => {\n const { changePositionOnly } = params;\n\n if (changePositionOnly) {\n return this.changeTooltipPosition(params, data);\n }\n return this.changeTooltip(true, params, data);\n };\n\n /** 改变 tooltip 内容和位置(不带 throttle 版本),返回是否遇到异常 */\n protected changeTooltip: ChangeTooltipFunc = (visible: boolean, params: TooltipHandlerParams, data?: TooltipData) => {\n if (this._isReleased) {\n return TooltipResult.failed;\n }\n\n if (!visible) {\n /** 关闭 tooltip */\n this._updateTooltip(false, params);\n return TooltipResult.success;\n }\n\n return this.changeTooltipPosition(params, data);\n };\n\n /** 改变 tooltip 位置(不带 throttle 版本),返回是否遇到异常 */\n protected changeTooltipPosition: ChangeTooltipPositionFunc = (params: TooltipHandlerParams, data: TooltipData) => {\n if (this._isReleased) {\n return TooltipResult.failed;\n }\n\n const event = params.event as MouseEvent;\n const { tooltipSpec, activeTooltipSpec, changePositionOnly } = params;\n\n if (!activeTooltipSpec) {\n return TooltipResult.failed;\n }\n\n const activeType = activeTooltipSpec.activeType;\n\n /** 用户自定义逻辑 */\n if (activeTooltipSpec.handler) {\n return activeTooltipSpec.handler.showTooltip?.(activeType, data, params) ?? TooltipResult.success;\n }\n\n /** 默认逻辑 */\n const pattern = activeTooltipSpec;\n\n // 计算 tooltip 位置\n const position = this._getActualTooltipPosition(\n activeTooltipSpec,\n params,\n this._getTooltipBoxSize(activeTooltipSpec, changePositionOnly)\n );\n activeTooltipSpec.position = position;\n const updatePosition = activeTooltipSpec.updatePosition ?? tooltipSpec[activeType]?.updatePosition;\n\n if (updatePosition) {\n activeTooltipSpec.position = updatePosition(activeTooltipSpec.position, data, params);\n }\n\n // 判断 tooltip 可见性\n let tooltipVisible = pattern?.visible !== false;\n if (\n !data ||\n event.type === 'pointerout' ||\n !activeTooltipSpec.visible ||\n (!activeTooltipSpec.title && !activeTooltipSpec.content)\n ) {\n tooltipVisible = false;\n }\n\n this._updateTooltip(tooltipVisible, {\n ...params,\n changePositionOnly\n });\n return TooltipResult.success;\n };\n\n hideTooltip(params: TooltipHandlerParams): TooltipResult {\n return this.changeTooltip(false, params);\n }\n\n release(): void {\n const spec = this._component.getSpec() ?? {};\n /** 用户自定义逻辑 */\n if (spec.handler) {\n spec.handler.release?.();\n return;\n }\n /** 默认逻辑 */\n this._removeTooltip();\n\n this._isReleased = true;\n }\n\n /* -----需要子类继承的方法开始----- */\n\n protected abstract _updateTooltip(visible: boolean, params: TooltipHandlerParams): void;\n protected abstract _removeTooltip(): void;\n protected abstract _getTooltipBoxSize(\n actualTooltip: ITooltipActual,\n changePositionOnly: boolean\n ): IContainerSize | undefined;\n\n /* -----需要子类继承的方法结束----- */\n\n protected _getDefaultOption(): ITooltipHandlerOptions {\n const { offset } = this._component.getSpec();\n\n return offset\n ? {\n offsetX: offset.x ?? DEFAULT_OPTIONS.offsetX,\n offsetY: offset.y ?? DEFAULT_OPTIONS.offsetY\n }\n : DEFAULT_OPTIONS;\n }\n\n /**\n * 计算实际的 tooltip 位置\n */\n protected _getActualTooltipPosition = (\n actualTooltip: ITooltipActual,\n params: TooltipHandlerParams,\n tooltipBoxSize: IContainerSize | undefined\n ): ITooltipPositionActual => {\n const { tooltipSpec } = params;\n const invalidPosition = {\n x: Infinity,\n y: Infinity\n };\n if (!tooltipSpec) {\n return invalidPosition;\n }\n const event = params.event as MouseEvent;\n const { activeType, data } = actualTooltip;\n const firstDim =\n activeType === 'dimension' ? (data as IDimensionInfo[])[0]?.data?.[0] : (data as IDimensionData[])?.[0];\n\n const { offsetX, offsetY } = this._option;\n\n const spec = tooltipSpec[activeType];\n const position = getTooltipPatternValue(spec?.position, data, params);\n const positionMode =\n getTooltipPatternValue(spec?.positionMode, data, params) ?? (activeType === 'mark' ? 'mark' : 'pointer');\n const { width: tooltipBoxWidth = 0, height: tooltipBoxHeight = 0 } = tooltipBoxSize ?? {};\n\n const isCanvas = tooltipSpec.renderMode === 'canvas';\n const canvasRect = params?.chart?.getCanvasRect();\n const canvasWidth = canvasRect?.width ?? DEFAULT_CHART_WIDTH;\n const canvasHeight = canvasRect?.height ?? DEFAULT_CHART_HEIGHT;\n let isFixedPosition = false;\n\n const containerSize = {\n width: 0,\n height: 0\n };\n let relativePosOffset = { x: 0, y: 0 };\n let tooltipParentElementRect: IPoint | DOMRect = { x: 0, y: 0 };\n let chartElementRect: DOMRect;\n let chartElementScale = 1;\n let tooltipParentElementScale = 1;\n const isBrowser = isTrueBrowser(this._env);\n\n if (isBrowser && !tooltipSpec.confine) {\n // 只有在 browser 模式下才可以获取到 window 对象\n containerSize.width = window.innerWidth;\n containerSize.height = window.innerHeight;\n } else {\n containerSize.width = canvasWidth;\n containerSize.height = canvasHeight;\n }\n if (isBrowser && !isCanvas) {\n const tooltipParentElement = this._getParentElement(tooltipSpec);\n tooltipParentElementRect = tooltipParentElement?.getBoundingClientRect?.() ?? invalidPosition;\n const chartElement = (this._compiler.getCanvas() ?? this._chartContainer) as HTMLElement;\n chartElementRect = chartElement?.getBoundingClientRect();\n relativePosOffset = {\n x: chartElementRect.x - tooltipParentElementRect.x,\n y: chartElementRect.y - tooltipParentElementRect.y\n };\n chartElementScale = getScale(chartElement, chartElementRect);\n tooltipParentElementScale = getScale(tooltipParentElement, tooltipParentElementRect as DOMRect);\n }\n const tooltipSizeScale = tooltipParentElementScale / chartElementScale;\n\n /* 一、计算 left、top、right、bottom */\n\n const calcPos: { top?: number; bottom?: number; left?: number; right?: number } = {};\n const pointerFixedPosition: {\n x: TooltipFixedPosition;\n y: TooltipFixedPosition;\n } = { x: position as any, y: position as any };\n const dimToPos = { x: ['left', 'right'], y: ['top', 'bottom'] };\n\n const processCartesianFixedPosition = ({ orient, mode, offset }: ITooltipPositionFixedValue, dim: 'x' | 'y') => {\n let dim1: number;\n let dim2: number;\n const model = params.model as ILayoutModel;\n const startPoint = model?.getLayoutStartPoint();\n const dimOffset = offset ?? (dim === 'x' ? offsetX : offsetY);\n\n if (mode === 'mark') {\n isFixedPosition = true;\n const element = params.item as IElement;\n const bounds = element?.getBounds() as AABBBounds;\n if (bounds && startPoint) {\n dim1 = (dim === 'x' ? bounds.x1 : bounds.y1) + startPoint[dim];\n dim2 = (dim === 'x' ? bounds.x2 : bounds.y2) + startPoint[dim];\n }\n } else if (\n mode === 'crosshair' &&\n firstDim?.series?.coordinate === 'cartesian' &&\n firstDim.datum &&\n firstDim.datum.length\n ) {\n isFixedPosition = true;\n const rect = getCartesianCrosshairRect(firstDim, startPoint);\n if (rect) {\n dim1 = rect.start[dim];\n dim2 = rect.end[dim];\n }\n } else {\n pointerFixedPosition[dim] = orient;\n }\n\n if (isFixedPosition) {\n const posKey = dimToPos[dim][0] as TooltipPositionKeys;\n const boxSize = dim === 'x' ? tooltipBoxWidth : tooltipBoxHeight;\n switch (getPositionType(orient, dim)) {\n case -2:\n calcPos[posKey] = dim1 - boxSize * tooltipSizeScale - dimOffset;\n break;\n case -1.5:\n calcPos[posKey] = dim1 + dimOffset;\n break;\n case 0:\n calcPos[posKey] = (dim1 + dim2) / 2 - (boxSize * tooltipSizeScale) / 2;\n break;\n case -1:\n calcPos[posKey] = (dim1 + dim2) / 2 - boxSize * tooltipSizeScale - dimOffset;\n break;\n case 1:\n calcPos[posKey] = (dim1 + dim2) / 2 + dimOffset;\n break;\n case 1.5:\n calcPos[posKey] = dim2 - boxSize * tooltipSizeScale - dimOffset;\n break;\n case 2:\n calcPos[posKey] = dim2 + dimOffset;\n break;\n }\n }\n };\n const dims = ['x', 'y'] as ('x' | 'y')[];\n if (isObject(position)) {\n if (isGlobalTooltipPositionPattern(position)) {\n const {\n left: posLeft,\n right: posRight,\n top: posTop,\n bottom: posBottom\n } = position as IGlobalTooltipPositionPattern;\n calcPos.left = getActualTooltipPositionValue(posLeft, event);\n calcPos.top = getActualTooltipPositionValue(posTop, event);\n calcPos.right = getActualTooltipPositionValue(posRight, event);\n calcPos.bottom = getActualTooltipPositionValue(posBottom, event);\n } else if (isFixedTooltipPositionPattern(position)) {\n dims.forEach(dim => {\n const dimValue = position[dim];\n if (isNumber(dimValue) || isFunction(dimValue)) {\n calcPos[dimToPos[dim][0] as TooltipPositionKeys] = getActualTooltipPositionValue(\n dimValue as number | ((event: MouseEvent) => number),\n event\n );\n } else {\n processCartesianFixedPosition(dimValue as ITooltipPositionFixedValue, dim);\n }\n });\n }\n } else if (isValid(position)) {\n processCartesianFixedPosition({ orient: position, mode: positionMode } as ITooltipPositionFixedValue, 'x');\n processCartesianFixedPosition({ orient: position, mode: positionMode } as ITooltipPositionFixedValue, 'y');\n }\n\n const result: ITooltipPositionActual = { x: null, y: null };\n\n dims.forEach(dim => {\n /* 二、换算成 x 和 y */\n const boxSize = dim === 'x' ? tooltipBoxWidth : tooltipBoxHeight;\n const canvasSize = dim === 'x' ? canvasWidth : canvasHeight;\n const offset = dim === 'x' ? offsetX : offsetY;\n const posType = getPositionType(pointerFixedPosition[dim], dim);\n if (isValidNumber(calcPos[dimToPos[dim][0] as TooltipPositionKeys])) {\n result[dim] = calcPos[dimToPos[dim][0] as TooltipPositionKeys];\n } else if (isValidNumber(calcPos[dimToPos[dim][1] as TooltipPositionKeys])) {\n result[dim] = canvasSize - boxSize * tooltipSizeScale - calcPos[dimToPos[dim][1] as TooltipPositionKeys];\n } else {\n const value0 = dim === 'x' ? (event as any).canvasX : (event as any).canvasY;\n\n if (posType > 0) {\n result[dim] = value0 + offset;\n } else if (posType === 0) {\n result[dim] = value0 - (boxSize * tooltipSizeScale) / 2;\n } else {\n result[dim] = value0 - boxSize * tooltipSizeScale - offset;\n }\n }\n result[dim] *= chartElementScale;\n\n if (isBrowser) {\n result[dim] += relativePosOffset[dim];\n }\n result[dim] /= tooltipParentElementScale;\n\n /* 三、确保tooltip在视区内 */\n const containerDimSize = dim === 'x' ? containerSize.width : containerSize.height;\n const leftOrTop = tooltipSpec.confine\n ? -(tooltipParentElementRect[dim] - (chartElementRect?.[dim] ?? 0) / chartElementScale) /\n tooltipParentElementScale\n : -tooltipParentElementRect[dim] / tooltipParentElementScale;\n const rightOrBottom = containerDimSize / tooltipParentElementScale + leftOrTop - boxSize;\n\n // 处理左右\n if (posType !== 2 && result[dim] < leftOrTop) {\n // 优先检测left\n if (isFixedPosition) {\n result[dim] = leftOrTop;\n } else {\n if (posType === 0) {\n // 从居中 挪至 右侧\n result[dim] += offset + boxSize / 2;\n } else {\n // 从居左/左侧 挪至 居右/右侧\n result[dim] += offset * 2 + boxSize;\n }\n\n if (result[dim] > rightOrBottom) {\n // 位置不超出视区右界\n result[dim] = rightOrBottom;\n }\n }\n } else if (posType !== -2 && result[dim] > rightOrBottom) {\n // 优先检测right\n // 位置不超出视区右界\n if (isFixedPosition) {\n result[dim] = rightOrBottom;\n } else {\n if (posType === 0) {\n // 从居中 挪至 左侧\n result[dim] -= offset + boxSize / 2;\n } else {\n // 从居右/右侧 挪至 居左/左侧\n result[dim] -= offset * 2 + boxSize;\n }\n\n if (result[dim] < leftOrTop) {\n // 位置不超出视区左界\n result[dim] = leftOrTop;\n }\n }\n }\n });\n\n return result;\n };\n\n protected _getParentElement(spec: ITooltipSpec): HTMLElement {\n return spec.parentElement as any;\n }\n\n getTooltipContainer() {\n return this._container;\n }\n\n protected _initFromSpec() {\n this._option = this._getDefaultOption();\n }\n\n reInit() {\n this._initFromSpec();\n }\n}\n"]}
@@ -153,12 +153,16 @@ class DomTooltipHandler extends base_1.BaseTooltipHandler {
153
153
  } else contentDom && !hasContent && contentDom.parentNode.removeChild(contentDom);
154
154
  }
155
155
  _updateDomStyle(sizeKey = "width") {
156
- var _a, _b, _c, _d;
157
- const rootDom = this._rootDom, contentDom = [ ...rootDom.children ].find((child => child.className.includes(constants_1.TOOLTIP_CONTENT_BOX_CLASS_NAME)));
156
+ var _a, _b, _c, _d, _e;
157
+ const rootDom = this._rootDom, contentDom = [ ...rootDom.children ].find((child => child.className.includes(constants_1.TOOLTIP_CONTENT_BOX_CLASS_NAME))), titleDom = [ ...rootDom.children ].find((child => child.className.includes(constants_1.TOOLTIP_TITLE_CLASS_NAME)));
158
158
  if (contentDom) {
159
- const tooltipSpec = this._component.getSpec(), contentStyle = {};
160
- if ((0, vutils_1.isValid)(null === (_a = null == tooltipSpec ? void 0 : tooltipSpec.style) || void 0 === _a ? void 0 : _a.maxContentHeight)) {
161
- const titleDom = rootDom.children[0], titleHeight = titleDom && titleDom.className.includes(constants_1.TOOLTIP_TITLE_CLASS_NAME) ? titleDom.getBoundingClientRect().height + (null !== (_b = tooltipSpec.style.spaceRow) && void 0 !== _b ? _b : 0) : 0, viewRect = this._chartOption.getChartViewRect(), maxHeight = (0,
159
+ const tooltipSpec = this._component.getSpec(), contentStyle = {}, titleLabel = null === (_a = tooltipSpec.style) || void 0 === _a ? void 0 : _a.titleLabel;
160
+ if (titleLabel && titleLabel.autoWidth && !1 !== titleLabel.multiLine && titleDom) {
161
+ const maxWidth = [ ...contentDom.children ].reduce(((res, col) => "height" === sizeKey ? res + col.getBoundingClientRect().width : Math.max(res, col.getBoundingClientRect().width)), 0);
162
+ maxWidth > 0 && (titleDom.style.maxWidth = `${maxWidth}px`, titleDom.style.maxWidth = `${Math.ceil(contentDom.getBoundingClientRect().width)}px`);
163
+ }
164
+ if ((0, vutils_1.isValid)(null === (_b = null == tooltipSpec ? void 0 : tooltipSpec.style) || void 0 === _b ? void 0 : _b.maxContentHeight)) {
165
+ const titleHeight = titleDom && titleDom.className.includes(constants_1.TOOLTIP_TITLE_CLASS_NAME) ? titleDom.getBoundingClientRect().height + (null !== (_c = tooltipSpec.style.spaceRow) && void 0 !== _c ? _c : 0) : 0, viewRect = this._chartOption.getChartViewRect(), maxHeight = (0,
162
166
  space_1.calcLayoutNumber)(tooltipSpec.style.maxContentHeight, Math.min(viewRect.height, document.body.clientHeight) - titleHeight - (this._domStyle.panelPadding ? this._domStyle.panelPadding[0] + this._domStyle.panelPadding[1] : 0));
163
167
  maxHeight > 0 && (contentStyle.maxHeight = `${maxHeight}px`, contentStyle.overflowY = "auto",
164
168
  contentStyle.width = `calc(100% + ${this._domStyle.panelPadding ? this._domStyle.panelPadding[1] + "px" : "10px"})`,
@@ -167,14 +171,14 @@ class DomTooltipHandler extends base_1.BaseTooltipHandler {
167
171
  const rows = contentDom.children, widthByCol = [];
168
172
  if (rows) {
169
173
  for (let i = 0; i < rows.length; i++) {
170
- const cols = null !== (_c = rows[i].children) && void 0 !== _c ? _c : [];
174
+ const cols = null !== (_d = rows[i].children) && void 0 !== _d ? _d : [];
171
175
  for (let j = 0; j < cols.length; j++) {
172
176
  const width = cols[j].getBoundingClientRect()[sizeKey];
173
177
  (void 0 === widthByCol[j] || widthByCol[j] < width) && (widthByCol[j] = width);
174
178
  }
175
179
  }
176
180
  for (let i = 0; i < rows.length; i++) {
177
- const cols = null !== (_d = rows[i].children) && void 0 !== _d ? _d : [];
181
+ const cols = null !== (_e = rows[i].children) && void 0 !== _e ? _e : [];
178
182
  for (let j = 0; j < cols.length; j++) cols[j].style[sizeKey] = `${widthByCol[j]}px`;
179
183
  }
180
184
  }