@visactor/vrender-components 0.14.6-alpha.7 → 0.14.6-alpha.9

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/cjs/index.d.ts CHANGED
@@ -1,4 +1,4 @@
1
- export declare const version = "0.14.6-alpha.7";
1
+ export declare const version = "0.14.6-alpha.9";
2
2
  export * from './core/base';
3
3
  export * from './scrollbar';
4
4
  export * from './tag';
package/cjs/index.js CHANGED
@@ -17,7 +17,7 @@ var __createBinding = this && this.__createBinding || (Object.create ? function(
17
17
 
18
18
  Object.defineProperty(exports, "__esModule", {
19
19
  value: !0
20
- }), exports.version = void 0, exports.version = "0.14.6-alpha.7", __exportStar(require("./core/base"), exports),
20
+ }), exports.version = void 0, exports.version = "0.14.6-alpha.9", __exportStar(require("./core/base"), exports),
21
21
  __exportStar(require("./scrollbar"), exports), __exportStar(require("./tag"), exports),
22
22
  __exportStar(require("./poptip"), exports), __exportStar(require("./crosshair"), exports),
23
23
  __exportStar(require("./label"), exports), __exportStar(require("./axis"), exports),
package/cjs/index.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"sources":["index.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;AACa,QAAA,OAAO,GAAG,gBAAgB,CAAC;AAExC,8CAA4B;AAC5B,8CAA4B;AAC5B,wCAAsB;AACtB,2CAAyB;AACzB,8CAA4B;AAC5B,0CAAwB;AACxB,yCAAuB;AACvB,4CAA0B;AAC1B,8CAA4B;AAC5B,2CAAyB;AACzB,0CAAwB;AACxB,2CAAyB;AACzB,0CAAwB;AACxB,8CAA4B;AAC5B,2CAAyB;AACzB,8CAA4B;AAC5B,2CAAyB;AACzB,0CAAwB;AACxB,4CAA0B;AAC1B,8CAA4B;AAC5B,wCAAsB","file":"index.js","sourcesContent":["// 导出版本号\nexport const version = \"0.14.6-alpha.7\";\n\nexport * from './core/base';\nexport * from './scrollbar';\nexport * from './tag';\nexport * from './poptip';\nexport * from './crosshair';\nexport * from './label';\nexport * from './axis';\nexport * from './segment';\nexport * from './data-zoom';\nexport * from './marker';\nexport * from './pager';\nexport * from './legend';\nexport * from './title';\nexport * from './indicator';\nexport * from './slider';\nexport * from './link-path';\nexport * from './player';\nexport * from './brush';\nexport * from './tooltip';\nexport * from './interface';\nexport * from './jsx';\n"]}
1
+ {"version":3,"sources":["index.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;AACa,QAAA,OAAO,GAAG,gBAAgB,CAAC;AAExC,8CAA4B;AAC5B,8CAA4B;AAC5B,wCAAsB;AACtB,2CAAyB;AACzB,8CAA4B;AAC5B,0CAAwB;AACxB,yCAAuB;AACvB,4CAA0B;AAC1B,8CAA4B;AAC5B,2CAAyB;AACzB,0CAAwB;AACxB,2CAAyB;AACzB,0CAAwB;AACxB,8CAA4B;AAC5B,2CAAyB;AACzB,8CAA4B;AAC5B,2CAAyB;AACzB,0CAAwB;AACxB,4CAA0B;AAC1B,8CAA4B;AAC5B,wCAAsB","file":"index.js","sourcesContent":["// 导出版本号\nexport const version = \"0.14.6-alpha.9\";\n\nexport * from './core/base';\nexport * from './scrollbar';\nexport * from './tag';\nexport * from './poptip';\nexport * from './crosshair';\nexport * from './label';\nexport * from './axis';\nexport * from './segment';\nexport * from './data-zoom';\nexport * from './marker';\nexport * from './pager';\nexport * from './legend';\nexport * from './title';\nexport * from './indicator';\nexport * from './slider';\nexport * from './link-path';\nexport * from './player';\nexport * from './brush';\nexport * from './tooltip';\nexport * from './interface';\nexport * from './jsx';\n"]}
@@ -22,7 +22,7 @@ class PopTip extends base_1.AbstractComponent {
22
22
  this.positionList = [ "top", "tl", "tr", "bottom", "bl", "br", "left", "lt", "lb", "right", "rt", "rb" ];
23
23
  }
24
24
  render() {
25
- var _a, _b, _c, _d, _e;
25
+ var _a, _b, _c, _d, _e, _f, _g;
26
26
  const {title: title = "", titleStyle: titleStyle = {}, position: position, content: content = "", contentStyle: contentStyle = {}, panel: panel = {}, space: space = 4, minWidth: minWidth = 0, maxWidth: maxWidth = 1 / 0, padding: padding = 4, visible: visible, state: state, dx: dx = 0, dy: dy = 0} = this.attribute, parsedPadding = (0,
27
27
  vutils_1.normalizePadding)(padding), group = this.createOrUpdateChild("poptip-content", {
28
28
  x: 0,
@@ -30,7 +30,7 @@ class PopTip extends base_1.AbstractComponent {
30
30
  zIndex: 1
31
31
  }, "group"), maxLineWidth = maxWidth - parsedPadding[1] - parsedPadding[3], titleVisible = (0,
32
32
  vutils_1.isValid)(title) && !1 !== visible, titleAttrs = Object.assign(Object.assign({
33
- text: title,
33
+ text: (0, vutils_1.isArray)(title) ? title : [ title ],
34
34
  visible: titleVisible
35
35
  }, titleStyle), {
36
36
  x: parsedPadding[3],
@@ -38,13 +38,13 @@ class PopTip extends base_1.AbstractComponent {
38
38
  maxLineWidth: maxLineWidth,
39
39
  textAlign: "left",
40
40
  textBaseline: "top"
41
- }), titleShape = group.createOrUpdateChild("poptip-title", titleAttrs, "text");
41
+ }), titleShape = group.createOrUpdateChild("poptip-title", titleAttrs, "wrapText");
42
42
  (0, vutils_1.isEmpty)(null == state ? void 0 : state.title) || (titleShape.states = state.title);
43
43
  const titleBounds = titleShape.AABBBounds, titleHeight = titleBounds.height(), titleWidth = titleBounds.width();
44
44
  let height = titleHeight + space;
45
45
  titleVisible || (height = 0);
46
46
  const contentVisible = (0, vutils_1.isValid)(content) && !1 !== visible, contentAttrs = Object.assign(Object.assign({
47
- text: content,
47
+ text: (0, vutils_1.isArray)(content) ? content : [ content ],
48
48
  visible: contentVisible
49
49
  }, contentStyle), {
50
50
  x: parsedPadding[3],
@@ -52,14 +52,27 @@ class PopTip extends base_1.AbstractComponent {
52
52
  maxLineWidth: maxLineWidth,
53
53
  textAlign: "left",
54
54
  textBaseline: "top"
55
- }), contentShape = group.createOrUpdateChild("poptip-content", contentAttrs, "text");
55
+ }), contentShape = group.createOrUpdateChild("poptip-content", contentAttrs, "wrapText");
56
56
  (0, vutils_1.isEmpty)(null == state ? void 0 : state.content) || (contentShape.states = state.content);
57
57
  const contentBounds = contentShape.AABBBounds, contentHeight = contentBounds.height(), contentWidth = contentBounds.width();
58
58
  contentVisible && (height += contentHeight);
59
59
  let popTipWidth = (0, vutils_1.max)(titleWidth + parsedPadding[1] + parsedPadding[3], contentWidth + parsedPadding[1] + parsedPadding[3]);
60
60
  popTipWidth > maxWidth ? popTipWidth = maxWidth : popTipWidth < minWidth && (popTipWidth = minWidth);
61
- const poptipHeight = parsedPadding[0] + parsedPadding[2] + height, {visible: bgVisible} = panel, backgroundStyle = __rest(panel, [ "visible" ]), symbolSize = null !== (_a = backgroundStyle.size) && void 0 !== _a ? _a : 12, spaceSize = (0,
62
- vutils_1.isArray)(symbolSize) ? [ symbolSize[0] + (null !== (_b = backgroundStyle.space) && void 0 !== _b ? _b : 0), symbolSize[1] + (null !== (_c = backgroundStyle.space) && void 0 !== _c ? _c : 0) ] : symbolSize + (null !== (_d = backgroundStyle.space) && void 0 !== _d ? _d : 0), lineWidth = null !== (_e = backgroundStyle.lineWidth) && void 0 !== _e ? _e : 1, range = this.stage ? [ this.stage.width, this.stage.height ] : void 0, layout = "auto" === position;
61
+ let poptipHeight = parsedPadding[0] + parsedPadding[2] + height;
62
+ const {visible: bgVisible} = panel, backgroundStyle = __rest(panel, [ "visible" ]), symbolSize = null !== (_a = backgroundStyle.size) && void 0 !== _a ? _a : 12, spaceSize = (0,
63
+ vutils_1.isArray)(symbolSize) ? [ symbolSize[0] + (null !== (_b = backgroundStyle.space) && void 0 !== _b ? _b : 0), symbolSize[1] + (null !== (_c = backgroundStyle.space) && void 0 !== _c ? _c : 0) ] : symbolSize + (null !== (_d = backgroundStyle.space) && void 0 !== _d ? _d : 0), lineWidth = null !== (_e = backgroundStyle.lineWidth) && void 0 !== _e ? _e : 1, range = this.stage ? [ null !== (_f = this.stage.viewWidth) && void 0 !== _f ? _f : this.stage.width, null !== (_g = this.stage.viewHeight) && void 0 !== _g ? _g : this.stage.height ] : void 0;
64
+ if (range) {
65
+ const b = this.AABBBounds, leftWidth = b.x1, rightWidth = range[0] - b.x1;
66
+ let maxSpace = Math.max(leftWidth, rightWidth);
67
+ if (maxSpace = Math.max(maxSpace - 10, .7 * maxSpace), maxSpace < popTipWidth) {
68
+ popTipWidth = maxSpace;
69
+ const buf = parsedPadding[1] + parsedPadding[3];
70
+ titleShape.setAttribute("maxLineWidth", maxSpace - buf), contentShape.setAttribute("maxLineWidth", maxSpace - buf),
71
+ poptipHeight = parsedPadding[0] + parsedPadding[2], titleVisible && (poptipHeight += titleShape.AABBBounds.height() + space),
72
+ poptipHeight += contentShape.AABBBounds.height();
73
+ }
74
+ }
75
+ const layout = "auto" === position;
63
76
  let maxBBoxI, maxBBoxSize = -1 / 0;
64
77
  for (let i = 0; i < this.positionList.length + 1; i++) {
65
78
  const p = layout ? this.positionList[i === this.positionList.length ? maxBBoxI : i] : position, {angle: angle, offset: offset, rectOffset: rectOffset} = this.getAngleAndOffset(p, popTipWidth, poptipHeight, (0,
@@ -1 +1 @@
1
- {"version":3,"sources":["poptip/poptip.ts"],"names":[],"mappings":"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","file":"poptip.js","sourcesContent":["/**\n * @description PopTip组件\n */\nimport type {\n IGroup,\n IRect,\n ISymbol,\n ISymbolGraphicAttribute,\n IText,\n ITextGraphicAttribute,\n TextAlignType,\n TextBaselineType\n} from '@visactor/vrender';\nimport {\n Bounds,\n getRectIntersect,\n isArray,\n isBoolean,\n isEmpty,\n isValid,\n max,\n merge,\n normalizePadding,\n pi,\n rectInsideAnotherRect\n} from '@visactor/vutils';\nimport { AbstractComponent } from '../core/base';\nimport type { BackgroundAttributes } from '../interface';\nimport type { PopTipAttributes } from './type';\n\nexport class PopTip extends AbstractComponent<Required<PopTipAttributes>> {\n name = 'poptip';\n\n static defaultAttributes: Partial<PopTipAttributes> = {\n position: 'rt',\n visible: true,\n title: null,\n content: null,\n titleStyle: {\n fontSize: 12,\n fill: '#000',\n textAlign: 'left',\n textBaseline: 'top'\n },\n contentStyle: {\n fontSize: 12,\n fill: '#000',\n textAlign: 'left',\n textBaseline: 'top'\n },\n space: 8,\n padding: 10\n };\n\n constructor(attributes: PopTipAttributes) {\n super(merge({}, PopTip.defaultAttributes, attributes));\n }\n\n protected render() {\n const {\n title = '',\n titleStyle = {} as ITextGraphicAttribute,\n position,\n content = '',\n contentStyle = {} as ITextGraphicAttribute,\n panel = {} as BackgroundAttributes & ISymbolGraphicAttribute & { space?: number },\n space = 4,\n minWidth = 0,\n maxWidth = Infinity,\n padding = 4,\n visible,\n state,\n dx = 0,\n dy = 0\n } = this.attribute as PopTipAttributes;\n\n const parsedPadding = normalizePadding(padding);\n\n const group = this.createOrUpdateChild('poptip-content', { x: 0, y: 0, zIndex: 1 }, 'group') as IGroup;\n\n const maxLineWidth = maxWidth - parsedPadding[1] - parsedPadding[3];\n\n const titleVisible = isValid(title) && visible !== false;\n const titleAttrs = {\n text: title,\n visible: titleVisible,\n ...titleStyle,\n x: parsedPadding[3],\n y: parsedPadding[0],\n maxLineWidth,\n textAlign: 'left' as TextAlignType,\n textBaseline: 'top' as TextBaselineType\n };\n\n const titleShape = group.createOrUpdateChild('poptip-title', titleAttrs, 'text') as IText;\n if (!isEmpty(state?.title)) {\n titleShape.states = state.title;\n }\n\n const titleBounds = titleShape.AABBBounds;\n const titleHeight = titleBounds.height();\n const titleWidth = titleBounds.width();\n let height = titleHeight + space;\n if (!titleVisible) {\n height = 0;\n }\n\n const contentVisible = isValid(content) && visible !== false;\n const contentAttrs = {\n text: content,\n visible: contentVisible,\n ...contentStyle,\n x: parsedPadding[3],\n y: parsedPadding[0] + height,\n maxLineWidth,\n textAlign: 'left' as TextAlignType,\n textBaseline: 'top' as TextBaselineType\n };\n\n const contentShape = group.createOrUpdateChild('poptip-content', contentAttrs, 'text') as IText;\n if (!isEmpty(state?.content)) {\n contentShape.states = state.content;\n }\n\n const contentBounds = contentShape.AABBBounds;\n const contentHeight = contentBounds.height();\n const contentWidth = contentBounds.width();\n\n if (contentVisible) {\n height += contentHeight;\n }\n\n // 计算整个popTip的宽高\n let popTipWidth = max(\n titleWidth + parsedPadding[1] + parsedPadding[3],\n contentWidth + parsedPadding[1] + parsedPadding[3]\n );\n if (popTipWidth > maxWidth) {\n popTipWidth = maxWidth;\n } else if (popTipWidth < minWidth) {\n popTipWidth = minWidth;\n }\n const poptipHeight = parsedPadding[0] + parsedPadding[2] + height;\n\n // 绘制背景层\n const { visible: bgVisible, ...backgroundStyle } = panel;\n const symbolSize = backgroundStyle.size ?? 12;\n const spaceSize: number | [number, number] = isArray(symbolSize)\n ? [symbolSize[0] + (backgroundStyle.space ?? 0), symbolSize[1] + (backgroundStyle.space ?? 0)]\n : (symbolSize as number) + (backgroundStyle.space ?? 0);\n const lineWidth = backgroundStyle.lineWidth ?? 1;\n const range: [number, number] | undefined = (this as any).stage\n ? [(this as any).stage.width, (this as any).stage.height]\n : undefined;\n\n const layout = position === 'auto';\n // 最多循环this.positionList次\n let maxBBoxI: number;\n let maxBBoxSize: number = -Infinity;\n for (let i = 0; i < this.positionList.length + 1; i++) {\n const p = layout ? this.positionList[i === this.positionList.length ? maxBBoxI : i] : position;\n const { angle, offset, rectOffset } = this.getAngleAndOffset(\n p,\n popTipWidth,\n poptipHeight,\n isArray(spaceSize) ? (spaceSize as [number, number]) : [spaceSize, spaceSize - lineWidth]\n );\n if (isBoolean(bgVisible)) {\n const offsetX = (isArray(symbolSize) ? symbolSize[0] : symbolSize) / 4;\n const bgSymbol = group.createOrUpdateChild(\n 'poptip-symbol-panel',\n {\n ...backgroundStyle,\n visible: bgVisible && (contentVisible || titleVisible),\n x: offsetX,\n y: 0,\n strokeBoundsBuffer: -1,\n boundsPadding: -2,\n anchor: [0, 0],\n symbolType: 'arrow2Left',\n angle: angle,\n dx: offset[0],\n dy: offset[1],\n size: symbolSize,\n zIndex: -9\n },\n 'symbol'\n ) as ISymbol;\n if (!isEmpty(state?.panel)) {\n bgSymbol.states = state.panel;\n }\n\n const bgRect = group.createOrUpdateChild(\n 'poptip-rect-panel',\n {\n ...backgroundStyle,\n visible: bgVisible && (contentVisible || titleVisible),\n x: 0,\n y: 0,\n width: popTipWidth,\n height: poptipHeight,\n zIndex: -8\n },\n 'rect'\n ) as IRect;\n if (!isEmpty(state?.panel)) {\n bgRect.states = state.panel;\n }\n }\n\n group.setAttributes({\n x: -offset[0] + dx,\n y: -offset[1] + dy\n });\n\n if (layout && range) {\n const b = (this as any).AABBBounds;\n const stageBounds = new Bounds().setValue(0, 0, range[0], range[1]);\n if (rectInsideAnotherRect(b, stageBounds, false)) {\n break;\n } else {\n const bbox = getRectIntersect(b, stageBounds, false);\n const size = (bbox.x2 - bbox.x1) * (bbox.y2 - bbox.y1);\n if (size > maxBBoxSize) {\n maxBBoxSize = size;\n maxBBoxI = i;\n }\n }\n } else {\n break;\n }\n }\n }\n\n positionList = ['top', 'tl', 'tr', 'bottom', 'bl', 'br', 'left', 'lt', 'lb', 'right', 'rt', 'rb'];\n\n getAngleAndOffset(\n position: string,\n width: number,\n height: number,\n size: [number, number]\n ): { angle: number; offset: [number, number]; rectOffset: [number, number] } {\n // const sizeW = size[0];\n const sizeH = size[1] / 2;\n switch (position) {\n case 'tl':\n return {\n angle: (pi / 2) * 3,\n offset: [width / 4, height + sizeH],\n rectOffset: [-width / 4, -height - size[1]]\n };\n case 'top':\n return { angle: (pi / 2) * 3, offset: [width / 2, height + sizeH], rectOffset: [0, -height - size[1]] };\n case 'tr':\n return {\n angle: (pi / 2) * 3,\n offset: [(width / 4) * 3, height + sizeH],\n rectOffset: [(width / 4) * 3, -height - size[1]]\n };\n case 'rt':\n return { angle: 0, offset: [-sizeH, height / 5], rectOffset: [(width / 4) * 3, -height - size[1]] };\n case 'right':\n return { angle: 0, offset: [-sizeH, height / 2], rectOffset: [(width / 4) * 3, -height - size[1]] };\n case 'rb':\n return { angle: 0, offset: [-sizeH, (height / 5) * 4], rectOffset: [(width / 4) * 3, -height - size[1]] };\n case 'bl':\n return { angle: pi / 2, offset: [width / 4, -sizeH], rectOffset: [-width / 4, -height - size[1]] };\n case 'bottom':\n return { angle: pi / 2, offset: [width / 2, -sizeH], rectOffset: [0, -height - size[1]] };\n case 'br':\n return { angle: pi / 2, offset: [(width / 4) * 3, -sizeH], rectOffset: [(width / 4) * 3, -height - size[1]] };\n case 'lt':\n return { angle: pi, offset: [width + sizeH, height / 5], rectOffset: [-width / 4, -height - size[1]] };\n case 'left':\n return { angle: pi, offset: [width + sizeH, height / 2], rectOffset: [0, -height - size[1]] };\n case 'lb':\n return {\n angle: pi,\n offset: [width + sizeH, (height / 5) * 4],\n rectOffset: [(width / 4) * 3, -height - size[1]]\n };\n }\n }\n}\n"]}
1
+ {"version":3,"sources":["poptip/poptip.ts"],"names":[],"mappings":"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","file":"poptip.js","sourcesContent":["/**\n * @description PopTip组件\n */\nimport type {\n IGroup,\n IRect,\n ISymbol,\n ISymbolGraphicAttribute,\n IText,\n ITextGraphicAttribute,\n TextAlignType,\n TextBaselineType\n} from '@visactor/vrender';\nimport {\n Bounds,\n getRectIntersect,\n isArray,\n isBoolean,\n isEmpty,\n isValid,\n max,\n merge,\n normalizePadding,\n pi,\n rectInsideAnotherRect\n} from '@visactor/vutils';\nimport { AbstractComponent } from '../core/base';\nimport type { BackgroundAttributes } from '../interface';\nimport type { PopTipAttributes } from './type';\n\nexport class PopTip extends AbstractComponent<Required<PopTipAttributes>> {\n name = 'poptip';\n\n static defaultAttributes: Partial<PopTipAttributes> = {\n position: 'rt',\n visible: true,\n title: null,\n content: null,\n titleStyle: {\n fontSize: 12,\n fill: '#000',\n textAlign: 'left',\n textBaseline: 'top'\n },\n contentStyle: {\n fontSize: 12,\n fill: '#000',\n textAlign: 'left',\n textBaseline: 'top'\n },\n space: 8,\n padding: 10\n };\n\n constructor(attributes: PopTipAttributes) {\n super(merge({}, PopTip.defaultAttributes, attributes));\n }\n\n protected render() {\n const {\n title = '',\n titleStyle = {} as ITextGraphicAttribute,\n position,\n content = '',\n contentStyle = {} as ITextGraphicAttribute,\n panel = {} as BackgroundAttributes & ISymbolGraphicAttribute & { space?: number },\n space = 4,\n minWidth = 0,\n maxWidth = Infinity,\n padding = 4,\n visible,\n state,\n dx = 0,\n dy = 0\n } = this.attribute as PopTipAttributes;\n\n const parsedPadding = normalizePadding(padding);\n\n const group = this.createOrUpdateChild('poptip-content', { x: 0, y: 0, zIndex: 1 }, 'group') as IGroup;\n\n const maxLineWidth = maxWidth - parsedPadding[1] - parsedPadding[3];\n\n const titleVisible = isValid(title) && visible !== false;\n const titleAttrs = {\n text: isArray(title) ? title : ([title] as any),\n visible: titleVisible,\n ...titleStyle,\n x: parsedPadding[3],\n y: parsedPadding[0],\n maxLineWidth,\n textAlign: 'left' as TextAlignType,\n textBaseline: 'top' as TextBaselineType\n };\n\n const titleShape = group.createOrUpdateChild('poptip-title', titleAttrs, 'wrapText') as IText;\n if (!isEmpty(state?.title)) {\n titleShape.states = state.title;\n }\n\n const titleBounds = titleShape.AABBBounds;\n const titleHeight = titleBounds.height();\n const titleWidth = titleBounds.width();\n let height = titleHeight + space;\n if (!titleVisible) {\n height = 0;\n }\n\n const contentVisible = isValid(content) && visible !== false;\n const contentAttrs = {\n text: isArray(content) ? content : ([content] as any),\n visible: contentVisible,\n ...contentStyle,\n x: parsedPadding[3],\n y: parsedPadding[0] + height,\n maxLineWidth,\n textAlign: 'left' as TextAlignType,\n textBaseline: 'top' as TextBaselineType\n };\n\n const contentShape = group.createOrUpdateChild('poptip-content', contentAttrs, 'wrapText') as IText;\n if (!isEmpty(state?.content)) {\n contentShape.states = state.content;\n }\n\n const contentBounds = contentShape.AABBBounds;\n const contentHeight = contentBounds.height();\n const contentWidth = contentBounds.width();\n\n if (contentVisible) {\n height += contentHeight;\n }\n\n // 计算整个popTip的宽高\n let popTipWidth = max(\n titleWidth + parsedPadding[1] + parsedPadding[3],\n contentWidth + parsedPadding[1] + parsedPadding[3]\n );\n if (popTipWidth > maxWidth) {\n popTipWidth = maxWidth;\n } else if (popTipWidth < minWidth) {\n popTipWidth = minWidth;\n }\n let poptipHeight = parsedPadding[0] + parsedPadding[2] + height;\n\n // 绘制背景层\n const { visible: bgVisible, ...backgroundStyle } = panel;\n const symbolSize = backgroundStyle.size ?? 12;\n const spaceSize: number | [number, number] = isArray(symbolSize)\n ? [symbolSize[0] + (backgroundStyle.space ?? 0), symbolSize[1] + (backgroundStyle.space ?? 0)]\n : (symbolSize as number) + (backgroundStyle.space ?? 0);\n const lineWidth = backgroundStyle.lineWidth ?? 1;\n const range: [number, number] | undefined = (this as any).stage\n ? [\n (this as any).stage.viewWidth ?? (this as any).stage.width,\n (this as any).stage.viewHeight ?? (this as any).stage.height\n ]\n : undefined;\n\n if (range) {\n // 尝试进行换行\n const b = (this as any).AABBBounds;\n const leftWidth = b.x1;\n const rightWidth = range[0] - b.x1;\n let maxSpace = Math.max(leftWidth, rightWidth);\n // 减一些buffer,buffer不能超过maxSpace的30%\n maxSpace = Math.max(maxSpace - 10, maxSpace * 0.7);\n // 需要进行换行\n if (maxSpace < popTipWidth) {\n popTipWidth = maxSpace;\n const buf = parsedPadding[1] + parsedPadding[3];\n titleShape.setAttribute('maxLineWidth', maxSpace - buf);\n contentShape.setAttribute('maxLineWidth', maxSpace - buf);\n poptipHeight = parsedPadding[0] + parsedPadding[2];\n if (titleVisible) {\n poptipHeight += titleShape.AABBBounds.height() + space;\n }\n poptipHeight += contentShape.AABBBounds.height();\n }\n }\n\n const layout = position === 'auto';\n // 最多循环this.positionList次\n let maxBBoxI: number;\n let maxBBoxSize: number = -Infinity;\n for (let i = 0; i < this.positionList.length + 1; i++) {\n const p = layout ? this.positionList[i === this.positionList.length ? maxBBoxI : i] : position;\n const { angle, offset, rectOffset } = this.getAngleAndOffset(\n p,\n popTipWidth,\n poptipHeight,\n isArray(spaceSize) ? (spaceSize as [number, number]) : [spaceSize, spaceSize - lineWidth]\n );\n if (isBoolean(bgVisible)) {\n const offsetX = (isArray(symbolSize) ? symbolSize[0] : symbolSize) / 4;\n const bgSymbol = group.createOrUpdateChild(\n 'poptip-symbol-panel',\n {\n ...backgroundStyle,\n visible: bgVisible && (contentVisible || titleVisible),\n x: offsetX,\n y: 0,\n strokeBoundsBuffer: -1,\n boundsPadding: -2,\n anchor: [0, 0],\n symbolType: 'arrow2Left',\n angle: angle,\n dx: offset[0],\n dy: offset[1],\n size: symbolSize,\n zIndex: -9\n },\n 'symbol'\n ) as ISymbol;\n if (!isEmpty(state?.panel)) {\n bgSymbol.states = state.panel;\n }\n\n const bgRect = group.createOrUpdateChild(\n 'poptip-rect-panel',\n {\n ...backgroundStyle,\n visible: bgVisible && (contentVisible || titleVisible),\n x: 0,\n y: 0,\n width: popTipWidth,\n height: poptipHeight,\n zIndex: -8\n },\n 'rect'\n ) as IRect;\n if (!isEmpty(state?.panel)) {\n bgRect.states = state.panel;\n }\n }\n\n group.setAttributes({\n x: -offset[0] + dx,\n y: -offset[1] + dy\n });\n\n if (layout && range) {\n const b = (this as any).AABBBounds;\n const stageBounds = new Bounds().setValue(0, 0, range[0], range[1]);\n if (rectInsideAnotherRect(b, stageBounds, false)) {\n break;\n } else {\n const bbox = getRectIntersect(b, stageBounds, false);\n const size = (bbox.x2 - bbox.x1) * (bbox.y2 - bbox.y1);\n if (size > maxBBoxSize) {\n maxBBoxSize = size;\n maxBBoxI = i;\n }\n }\n } else {\n break;\n }\n }\n }\n\n positionList = ['top', 'tl', 'tr', 'bottom', 'bl', 'br', 'left', 'lt', 'lb', 'right', 'rt', 'rb'];\n\n getAngleAndOffset(\n position: string,\n width: number,\n height: number,\n size: [number, number]\n ): { angle: number; offset: [number, number]; rectOffset: [number, number] } {\n // const sizeW = size[0];\n const sizeH = size[1] / 2;\n switch (position) {\n case 'tl':\n return {\n angle: (pi / 2) * 3,\n offset: [width / 4, height + sizeH],\n rectOffset: [-width / 4, -height - size[1]]\n };\n case 'top':\n return { angle: (pi / 2) * 3, offset: [width / 2, height + sizeH], rectOffset: [0, -height - size[1]] };\n case 'tr':\n return {\n angle: (pi / 2) * 3,\n offset: [(width / 4) * 3, height + sizeH],\n rectOffset: [(width / 4) * 3, -height - size[1]]\n };\n case 'rt':\n return { angle: 0, offset: [-sizeH, height / 5], rectOffset: [(width / 4) * 3, -height - size[1]] };\n case 'right':\n return { angle: 0, offset: [-sizeH, height / 2], rectOffset: [(width / 4) * 3, -height - size[1]] };\n case 'rb':\n return { angle: 0, offset: [-sizeH, (height / 5) * 4], rectOffset: [(width / 4) * 3, -height - size[1]] };\n case 'bl':\n return { angle: pi / 2, offset: [width / 4, -sizeH], rectOffset: [-width / 4, -height - size[1]] };\n case 'bottom':\n return { angle: pi / 2, offset: [width / 2, -sizeH], rectOffset: [0, -height - size[1]] };\n case 'br':\n return { angle: pi / 2, offset: [(width / 4) * 3, -sizeH], rectOffset: [(width / 4) * 3, -height - size[1]] };\n case 'lt':\n return { angle: pi, offset: [width + sizeH, height / 5], rectOffset: [-width / 4, -height - size[1]] };\n case 'left':\n return { angle: pi, offset: [width + sizeH, height / 2], rectOffset: [0, -height - size[1]] };\n case 'lb':\n return {\n angle: pi,\n offset: [width + sizeH, (height / 5) * 4],\n rectOffset: [(width / 4) * 3, -height - size[1]]\n };\n }\n }\n}\n"]}
@@ -14,9 +14,11 @@ function setPoptipTheme(defaultPoptipTheme) {
14
14
  (0, vutils_1.merge)(theme_1.theme.poptip, theme_1.DEFAULT_THEME, defaultPoptipTheme);
15
15
  }
16
16
 
17
- exports.popTipModule = new inversify_1.ContainerModule((bind => {
18
- bind(contribution_1.PopTipRenderContribution).toSelf().inSingletonScope(), bind(vrender_1.InteractiveSubRenderContribution).toService(contribution_1.PopTipRenderContribution),
19
- bind(poptip_plugin_1.PopTipPlugin).toSelf().inSingletonScope(), bind(vrender_1.AutoEnablePlugins).toService(poptip_plugin_1.PopTipPlugin),
20
- bind(poptip_plugin_1.PopTipForClipedTextPlugin).toSelf().inSingletonScope(), bind(vrender_1.AutoEnablePlugins).toService(poptip_plugin_1.PopTipForClipedTextPlugin);
17
+ exports.popTipModule = new inversify_1.ContainerModule(((bind, unbind, isBound, rebind) => {
18
+ isBound(contribution_1.PopTipRenderContribution) && isBound(poptip_plugin_1.PopTipPlugin) && isBound(poptip_plugin_1.PopTipForClipedTextPlugin) ? (rebind(contribution_1.PopTipRenderContribution).toSelf().inSingletonScope(),
19
+ rebind(poptip_plugin_1.PopTipPlugin).toSelf(), rebind(poptip_plugin_1.PopTipForClipedTextPlugin).toSelf()) : (bind(contribution_1.PopTipRenderContribution).toSelf().inSingletonScope(),
20
+ bind(vrender_1.InteractiveSubRenderContribution).toService(contribution_1.PopTipRenderContribution),
21
+ bind(poptip_plugin_1.PopTipPlugin).toSelf(), bind(vrender_1.AutoEnablePlugins).toService(poptip_plugin_1.PopTipPlugin),
22
+ bind(poptip_plugin_1.PopTipForClipedTextPlugin).toSelf(), bind(vrender_1.AutoEnablePlugins).toService(poptip_plugin_1.PopTipForClipedTextPlugin));
21
23
  })), exports.loadPoptip = loadPoptip, exports.setPoptipTheme = setPoptipTheme;
22
24
  //# sourceMappingURL=register.js.map
@@ -1 +1 @@
1
- {"version":3,"sources":["poptip/register.ts"],"names":[],"mappings":";;;AAAA,+CAAmG;AACnG,yCAA4C;AAC5C,6CAAyC;AACzC,iDAA0D;AAC1D,mDAA0E;AAE1E,mCAA+C;AAElC,QAAA,YAAY,GAAG,IAAI,2BAAe,CAAC,IAAI,CAAC,EAAE;IACrD,IAAI,CAAC,uCAAwB,CAAC,CAAC,MAAM,EAAE,CAAC,gBAAgB,EAAE,CAAC;IAC3D,IAAI,CAAC,0CAAgC,CAAC,CAAC,SAAS,CAAC,uCAAwB,CAAC,CAAC;IAE3E,IAAI,CAAC,4BAAY,CAAC,CAAC,MAAM,EAAE,CAAC,gBAAgB,EAAE,CAAC;IAC/C,IAAI,CAAC,2BAAiB,CAAC,CAAC,SAAS,CAAC,4BAAY,CAAC,CAAC;IAEhD,IAAI,CAAC,yCAAyB,CAAC,CAAC,MAAM,EAAE,CAAC,gBAAgB,EAAE,CAAC;IAC5D,IAAI,CAAC,2BAAiB,CAAC,CAAC,SAAS,CAAC,yCAAyB,CAAC,CAAC;AAC/D,CAAC,CAAC,CAAC;AAEH,SAAgB,UAAU,CAAC,kBAAoC;IAC7D,IAAA,cAAK,EAAC,aAAK,CAAC,MAAM,EAAE,kBAAkB,CAAC,CAAC;IACxC,mBAAS,CAAC,IAAI,CAAC,oBAAY,CAAC,CAAC;AAC/B,CAAC;AAHD,gCAGC;AAED,SAAgB,cAAc,CAAC,kBAAoC;IACjE,IAAA,cAAK,EAAC,aAAK,CAAC,MAAM,EAAE,qBAAa,EAAE,kBAAkB,CAAC,CAAC;AACzD,CAAC;AAFD,wCAEC","file":"register.js","sourcesContent":["import { container, InteractiveSubRenderContribution, AutoEnablePlugins } from '@visactor/vrender';\nimport { ContainerModule } from 'inversify';\nimport { merge } from '@visactor/vutils';\nimport { PopTipRenderContribution } from './contribution';\nimport { PopTipPlugin, PopTipForClipedTextPlugin } from './poptip-plugin';\nimport type { PopTipAttributes } from './type';\nimport { DEFAULT_THEME, theme } from './theme';\n\nexport const popTipModule = new ContainerModule(bind => {\n bind(PopTipRenderContribution).toSelf().inSingletonScope();\n bind(InteractiveSubRenderContribution).toService(PopTipRenderContribution);\n\n bind(PopTipPlugin).toSelf().inSingletonScope();\n bind(AutoEnablePlugins).toService(PopTipPlugin);\n\n bind(PopTipForClipedTextPlugin).toSelf().inSingletonScope();\n bind(AutoEnablePlugins).toService(PopTipForClipedTextPlugin);\n});\n\nexport function loadPoptip(defaultPoptipTheme: PopTipAttributes) {\n merge(theme.poptip, defaultPoptipTheme);\n container.load(popTipModule);\n}\n\nexport function setPoptipTheme(defaultPoptipTheme: PopTipAttributes) {\n merge(theme.poptip, DEFAULT_THEME, defaultPoptipTheme);\n}\n"]}
1
+ {"version":3,"sources":["poptip/register.ts"],"names":[],"mappings":";;;AAAA,+CAAmG;AACnG,yCAA4C;AAC5C,6CAAyC;AACzC,iDAA0D;AAC1D,mDAA0E;AAE1E,mCAA+C;AAElC,QAAA,YAAY,GAAG,IAAI,2BAAe,CAAC,CAAC,IAAI,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,EAAE,EAAE;IAChF,IAAI,CAAC,OAAO,CAAC,uCAAwB,CAAC,IAAI,CAAC,OAAO,CAAC,4BAAY,CAAC,IAAI,CAAC,OAAO,CAAC,yCAAyB,CAAC,EAAE;QACvG,IAAI,CAAC,uCAAwB,CAAC,CAAC,MAAM,EAAE,CAAC,gBAAgB,EAAE,CAAC;QAC3D,IAAI,CAAC,0CAAgC,CAAC,CAAC,SAAS,CAAC,uCAAwB,CAAC,CAAC;QAE3E,IAAI,CAAC,4BAAY,CAAC,CAAC,MAAM,EAAE,CAAC;QAC5B,IAAI,CAAC,2BAAiB,CAAC,CAAC,SAAS,CAAC,4BAAY,CAAC,CAAC;QAEhD,IAAI,CAAC,yCAAyB,CAAC,CAAC,MAAM,EAAE,CAAC;QACzC,IAAI,CAAC,2BAAiB,CAAC,CAAC,SAAS,CAAC,yCAAyB,CAAC,CAAC;KAC9D;SAAM;QACL,MAAM,CAAC,uCAAwB,CAAC,CAAC,MAAM,EAAE,CAAC,gBAAgB,EAAE,CAAC;QAC7D,MAAM,CAAC,4BAAY,CAAC,CAAC,MAAM,EAAE,CAAC;QAC9B,MAAM,CAAC,yCAAyB,CAAC,CAAC,MAAM,EAAE,CAAC;KAC5C;AACH,CAAC,CAAC,CAAC;AAEH,SAAgB,UAAU,CAAC,kBAAoC;IAC7D,IAAA,cAAK,EAAC,aAAK,CAAC,MAAM,EAAE,kBAAkB,CAAC,CAAC;IACxC,mBAAS,CAAC,IAAI,CAAC,oBAAY,CAAC,CAAC;AAC/B,CAAC;AAHD,gCAGC;AAED,SAAgB,cAAc,CAAC,kBAAoC;IACjE,IAAA,cAAK,EAAC,aAAK,CAAC,MAAM,EAAE,qBAAa,EAAE,kBAAkB,CAAC,CAAC;AACzD,CAAC;AAFD,wCAEC","file":"register.js","sourcesContent":["import { container, InteractiveSubRenderContribution, AutoEnablePlugins } from '@visactor/vrender';\nimport { ContainerModule } from 'inversify';\nimport { merge } from '@visactor/vutils';\nimport { PopTipRenderContribution } from './contribution';\nimport { PopTipPlugin, PopTipForClipedTextPlugin } from './poptip-plugin';\nimport type { PopTipAttributes } from './type';\nimport { DEFAULT_THEME, theme } from './theme';\n\nexport const popTipModule = new ContainerModule((bind, unbind, isBound, rebind) => {\n if (!isBound(PopTipRenderContribution) || !isBound(PopTipPlugin) || !isBound(PopTipForClipedTextPlugin)) {\n bind(PopTipRenderContribution).toSelf().inSingletonScope();\n bind(InteractiveSubRenderContribution).toService(PopTipRenderContribution);\n\n bind(PopTipPlugin).toSelf();\n bind(AutoEnablePlugins).toService(PopTipPlugin);\n\n bind(PopTipForClipedTextPlugin).toSelf();\n bind(AutoEnablePlugins).toService(PopTipForClipedTextPlugin);\n } else {\n rebind(PopTipRenderContribution).toSelf().inSingletonScope();\n rebind(PopTipPlugin).toSelf();\n rebind(PopTipForClipedTextPlugin).toSelf();\n }\n});\n\nexport function loadPoptip(defaultPoptipTheme: PopTipAttributes) {\n merge(theme.poptip, defaultPoptipTheme);\n container.load(popTipModule);\n}\n\nexport function setPoptipTheme(defaultPoptipTheme: PopTipAttributes) {\n merge(theme.poptip, DEFAULT_THEME, defaultPoptipTheme);\n}\n"]}
package/cjs/util/text.js CHANGED
@@ -14,17 +14,17 @@ const vrender_1 = require("@visactor/vrender"), vutils_1 = require("@visactor/vu
14
14
  }, null != option ? option : {}), textSpec);
15
15
 
16
16
  function measureTextSize(text, textSpec) {
17
- var _a, _b;
17
+ var _a;
18
18
  if (!text) return {
19
19
  width: 0,
20
20
  height: 0
21
21
  };
22
22
  const bounds = (0, vrender_1.getTextBounds)({
23
23
  text: text,
24
- fontFamily: null !== (_a = textSpec.fontFamily) && void 0 !== _a ? _a : "",
24
+ fontFamily: textSpec.fontFamily,
25
25
  fontSize: textSpec.fontSize || 12,
26
26
  fontWeight: textSpec.fontWeight,
27
- textAlign: null !== (_b = textSpec.textAlign) && void 0 !== _b ? _b : "center",
27
+ textAlign: null !== (_a = textSpec.textAlign) && void 0 !== _a ? _a : "center",
28
28
  textBaseline: textSpec.textBaseline,
29
29
  ellipsis: !!textSpec.ellipsis,
30
30
  maxLineWidth: textSpec.maxLineWidth || 1 / 0,
@@ -1 +1 @@
1
- {"version":3,"sources":["util/text.ts"],"names":[],"mappings":";;;AAEA,+CAAkD;AAGlD,6CAA+C;AAC/C,0CAA+E;AAExE,MAAM,eAAe,GAAG,CAC7B,QAAyC,EACzC,MAAoC,EACpC,cAAwB,EACY,EAAE;IACtC,OAAO,IAAI,oBAAW,iBAElB,iBAAiB,EAAE;YACjB,UAAU,EAAE,mCAAwB;YACpC,QAAQ,EAAE,iCAAsB;SACjC,EACD,aAAa,EAAE,cAAc,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,uBAAa,EACzD,cAAc,EAAE,cAAc,GAAG,oBAAW,CAAC,iBAAiB,GAAG,oBAAW,CAAC,iBAAiB,CAAC,WAAW,EAAE,IACzG,CAAC,MAAM,aAAN,MAAM,cAAN,MAAM,GAAI,EAAE,CAAC,GAEnB,QAAQ,CACT,CAAC;AACJ,CAAC,CAAC;AAjBW,QAAA,eAAe,mBAiB1B;AAGF,SAAgB,eAAe,CAAC,IAA2C,EAAE,QAAwC;;IACnH,IAAI,CAAC,IAAI,EAAE;QACT,OAAO,EAAE,KAAK,EAAE,CAAC,EAAE,MAAM,EAAE,CAAC,EAAE,CAAC;KAChC;IACD,MAAM,MAAM,GAAG,IAAA,uBAAa,EAAC;QAC3B,IAAI;QACJ,UAAU,EAAE,MAAA,QAAQ,CAAC,UAAU,mCAAI,EAAE;QACrC,QAAQ,EAAE,QAAQ,CAAC,QAAQ,IAAI,EAAE;QACjC,UAAU,EAAE,QAAQ,CAAC,UAAiB;QACtC,SAAS,EAAE,MAAA,QAAQ,CAAC,SAAS,mCAAI,QAAQ;QACzC,YAAY,EAAE,QAAQ,CAAC,YAAY;QACnC,QAAQ,EAAE,CAAC,CAAC,QAAQ,CAAC,QAAQ;QAC7B,YAAY,EAAE,QAAQ,CAAC,YAAY,IAAI,QAAQ;QAC/C,UAAU,EAAE,QAAQ,CAAC,QAAQ,IAAI,EAAE;KACpC,CAAC,CAAC;IAEH,OAAO,EAAE,KAAK,EAAE,MAAM,CAAC,KAAK,EAAE,EAAE,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,EAAE,CAAC;AAC5D,CAAC;AAjBD,0CAiBC","file":"text.js","sourcesContent":["import type { ITextGraphicAttribute } from '@visactor/vrender';\n// eslint-disable-next-line no-duplicate-imports\nimport { getTextBounds } from '@visactor/vrender';\nimport type { ITextMeasureOption } from '@visactor/vutils';\n// eslint-disable-next-line no-duplicate-imports\nimport { TextMeasure } from '@visactor/vutils';\nimport { DEFAULT_TEXT_FONT_FAMILY, DEFAULT_TEXT_FONT_SIZE } from '../constant';\n\nexport const initTextMeasure = (\n textSpec?: Partial<ITextGraphicAttribute>,\n option?: Partial<ITextMeasureOption>,\n useNaiveCanvas?: boolean\n): TextMeasure<ITextGraphicAttribute> => {\n return new TextMeasure<ITextGraphicAttribute>(\n {\n defaultFontParams: {\n fontFamily: DEFAULT_TEXT_FONT_FAMILY,\n fontSize: DEFAULT_TEXT_FONT_SIZE\n },\n getTextBounds: useNaiveCanvas ? undefined : getTextBounds,\n specialCharSet: '-/: .,@%\\'\"~' + TextMeasure.ALPHABET_CHAR_SET + TextMeasure.ALPHABET_CHAR_SET.toUpperCase(),\n ...(option ?? {})\n },\n textSpec\n );\n};\n\n// FIXME: 和上一个方法统一,使用 TextMeasure 类\nexport function measureTextSize(text: string | number | string[] | number[], textSpec: Partial<ITextGraphicAttribute>) {\n if (!text) {\n return { width: 0, height: 0 };\n }\n const bounds = getTextBounds({\n text,\n fontFamily: textSpec.fontFamily ?? '',\n fontSize: textSpec.fontSize || 12,\n fontWeight: textSpec.fontWeight as any,\n textAlign: textSpec.textAlign ?? 'center',\n textBaseline: textSpec.textBaseline,\n ellipsis: !!textSpec.ellipsis,\n maxLineWidth: textSpec.maxLineWidth || Infinity,\n lineHeight: textSpec.fontSize || 12\n });\n\n return { width: bounds.width(), height: bounds.height() };\n}\n"]}
1
+ {"version":3,"sources":["util/text.ts"],"names":[],"mappings":";;;AAEA,+CAAkD;AAGlD,6CAA+C;AAC/C,0CAA+E;AAExE,MAAM,eAAe,GAAG,CAC7B,QAAyC,EACzC,MAAoC,EACpC,cAAwB,EACY,EAAE;IACtC,OAAO,IAAI,oBAAW,iBAElB,iBAAiB,EAAE;YACjB,UAAU,EAAE,mCAAwB;YACpC,QAAQ,EAAE,iCAAsB;SACjC,EACD,aAAa,EAAE,cAAc,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,uBAAa,EACzD,cAAc,EAAE,cAAc,GAAG,oBAAW,CAAC,iBAAiB,GAAG,oBAAW,CAAC,iBAAiB,CAAC,WAAW,EAAE,IACzG,CAAC,MAAM,aAAN,MAAM,cAAN,MAAM,GAAI,EAAE,CAAC,GAEnB,QAAQ,CACT,CAAC;AACJ,CAAC,CAAC;AAjBW,QAAA,eAAe,mBAiB1B;AAGF,SAAgB,eAAe,CAAC,IAA2C,EAAE,QAAwC;;IACnH,IAAI,CAAC,IAAI,EAAE;QACT,OAAO,EAAE,KAAK,EAAE,CAAC,EAAE,MAAM,EAAE,CAAC,EAAE,CAAC;KAChC;IACD,MAAM,MAAM,GAAG,IAAA,uBAAa,EAAC;QAC3B,IAAI;QACJ,UAAU,EAAE,QAAQ,CAAC,UAAU;QAC/B,QAAQ,EAAE,QAAQ,CAAC,QAAQ,IAAI,EAAE;QACjC,UAAU,EAAE,QAAQ,CAAC,UAAiB;QACtC,SAAS,EAAE,MAAA,QAAQ,CAAC,SAAS,mCAAI,QAAQ;QACzC,YAAY,EAAE,QAAQ,CAAC,YAAY;QACnC,QAAQ,EAAE,CAAC,CAAC,QAAQ,CAAC,QAAQ;QAC7B,YAAY,EAAE,QAAQ,CAAC,YAAY,IAAI,QAAQ;QAC/C,UAAU,EAAE,QAAQ,CAAC,QAAQ,IAAI,EAAE;KACpC,CAAC,CAAC;IAEH,OAAO,EAAE,KAAK,EAAE,MAAM,CAAC,KAAK,EAAE,EAAE,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,EAAE,CAAC;AAC5D,CAAC;AAjBD,0CAiBC","file":"text.js","sourcesContent":["import type { ITextGraphicAttribute } from '@visactor/vrender';\n// eslint-disable-next-line no-duplicate-imports\nimport { getTextBounds } from '@visactor/vrender';\nimport type { ITextMeasureOption } from '@visactor/vutils';\n// eslint-disable-next-line no-duplicate-imports\nimport { TextMeasure } from '@visactor/vutils';\nimport { DEFAULT_TEXT_FONT_FAMILY, DEFAULT_TEXT_FONT_SIZE } from '../constant';\n\nexport const initTextMeasure = (\n textSpec?: Partial<ITextGraphicAttribute>,\n option?: Partial<ITextMeasureOption>,\n useNaiveCanvas?: boolean\n): TextMeasure<ITextGraphicAttribute> => {\n return new TextMeasure<ITextGraphicAttribute>(\n {\n defaultFontParams: {\n fontFamily: DEFAULT_TEXT_FONT_FAMILY,\n fontSize: DEFAULT_TEXT_FONT_SIZE\n },\n getTextBounds: useNaiveCanvas ? undefined : getTextBounds,\n specialCharSet: '-/: .,@%\\'\"~' + TextMeasure.ALPHABET_CHAR_SET + TextMeasure.ALPHABET_CHAR_SET.toUpperCase(),\n ...(option ?? {})\n },\n textSpec\n );\n};\n\n// FIXME: 和上一个方法统一,使用 TextMeasure 类\nexport function measureTextSize(text: string | number | string[] | number[], textSpec: Partial<ITextGraphicAttribute>) {\n if (!text) {\n return { width: 0, height: 0 };\n }\n const bounds = getTextBounds({\n text,\n fontFamily: textSpec.fontFamily,\n fontSize: textSpec.fontSize || 12,\n fontWeight: textSpec.fontWeight as any,\n textAlign: textSpec.textAlign ?? 'center',\n textBaseline: textSpec.textBaseline,\n ellipsis: !!textSpec.ellipsis,\n maxLineWidth: textSpec.maxLineWidth || Infinity,\n lineHeight: textSpec.fontSize || 12\n });\n\n return { width: bounds.width(), height: bounds.height() };\n}\n"]}
package/dist/index.js CHANGED
@@ -561,16 +561,16 @@
561
561
  }, getTextBounds: useNaiveCanvas ? undefined : vrender.getTextBounds, specialCharSet: '-/: .,@%\'"~' + vutils.TextMeasure.ALPHABET_CHAR_SET + vutils.TextMeasure.ALPHABET_CHAR_SET.toUpperCase() }, (option !== null && option !== void 0 ? option : {})), textSpec);
562
562
  };
563
563
  function measureTextSize(text, textSpec) {
564
- var _a, _b;
564
+ var _a;
565
565
  if (!text) {
566
566
  return { width: 0, height: 0 };
567
567
  }
568
568
  const bounds = vrender.getTextBounds({
569
569
  text,
570
- fontFamily: (_a = textSpec.fontFamily) !== null && _a !== void 0 ? _a : '',
570
+ fontFamily: textSpec.fontFamily,
571
571
  fontSize: textSpec.fontSize || 12,
572
572
  fontWeight: textSpec.fontWeight,
573
- textAlign: (_b = textSpec.textAlign) !== null && _b !== void 0 ? _b : 'center',
573
+ textAlign: (_a = textSpec.textAlign) !== null && _a !== void 0 ? _a : 'center',
574
574
  textBaseline: textSpec.textBaseline,
575
575
  ellipsis: !!textSpec.ellipsis,
576
576
  maxLineWidth: textSpec.maxLineWidth || Infinity,
@@ -703,14 +703,14 @@
703
703
  this.positionList = ['top', 'tl', 'tr', 'bottom', 'bl', 'br', 'left', 'lt', 'lb', 'right', 'rt', 'rb'];
704
704
  }
705
705
  render() {
706
- var _a, _b, _c, _d, _e;
706
+ var _a, _b, _c, _d, _e, _f, _g;
707
707
  const { title = '', titleStyle = {}, position, content = '', contentStyle = {}, panel = {}, space = 4, minWidth = 0, maxWidth = Infinity, padding = 4, visible, state, dx = 0, dy = 0 } = this.attribute;
708
708
  const parsedPadding = vutils.normalizePadding(padding);
709
709
  const group = this.createOrUpdateChild('poptip-content', { x: 0, y: 0, zIndex: 1 }, 'group');
710
710
  const maxLineWidth = maxWidth - parsedPadding[1] - parsedPadding[3];
711
711
  const titleVisible = vutils.isValid(title) && visible !== false;
712
- const titleAttrs = Object.assign(Object.assign({ text: title, visible: titleVisible }, titleStyle), { x: parsedPadding[3], y: parsedPadding[0], maxLineWidth, textAlign: 'left', textBaseline: 'top' });
713
- const titleShape = group.createOrUpdateChild('poptip-title', titleAttrs, 'text');
712
+ const titleAttrs = Object.assign(Object.assign({ text: vutils.isArray(title) ? title : [title], visible: titleVisible }, titleStyle), { x: parsedPadding[3], y: parsedPadding[0], maxLineWidth, textAlign: 'left', textBaseline: 'top' });
713
+ const titleShape = group.createOrUpdateChild('poptip-title', titleAttrs, 'wrapText');
714
714
  if (!vutils.isEmpty(state === null || state === void 0 ? void 0 : state.title)) {
715
715
  titleShape.states = state.title;
716
716
  }
@@ -722,8 +722,8 @@
722
722
  height = 0;
723
723
  }
724
724
  const contentVisible = vutils.isValid(content) && visible !== false;
725
- const contentAttrs = Object.assign(Object.assign({ text: content, visible: contentVisible }, contentStyle), { x: parsedPadding[3], y: parsedPadding[0] + height, maxLineWidth, textAlign: 'left', textBaseline: 'top' });
726
- const contentShape = group.createOrUpdateChild('poptip-content', contentAttrs, 'text');
725
+ const contentAttrs = Object.assign(Object.assign({ text: vutils.isArray(content) ? content : [content], visible: contentVisible }, contentStyle), { x: parsedPadding[3], y: parsedPadding[0] + height, maxLineWidth, textAlign: 'left', textBaseline: 'top' });
726
+ const contentShape = group.createOrUpdateChild('poptip-content', contentAttrs, 'wrapText');
727
727
  if (!vutils.isEmpty(state === null || state === void 0 ? void 0 : state.content)) {
728
728
  contentShape.states = state.content;
729
729
  }
@@ -740,7 +740,7 @@
740
740
  else if (popTipWidth < minWidth) {
741
741
  popTipWidth = minWidth;
742
742
  }
743
- const poptipHeight = parsedPadding[0] + parsedPadding[2] + height;
743
+ let poptipHeight = parsedPadding[0] + parsedPadding[2] + height;
744
744
  const { visible: bgVisible } = panel, backgroundStyle = __rest(panel, ["visible"]);
745
745
  const symbolSize = (_a = backgroundStyle.size) !== null && _a !== void 0 ? _a : 12;
746
746
  const spaceSize = vutils.isArray(symbolSize)
@@ -748,8 +748,29 @@
748
748
  : symbolSize + ((_d = backgroundStyle.space) !== null && _d !== void 0 ? _d : 0);
749
749
  const lineWidth = (_e = backgroundStyle.lineWidth) !== null && _e !== void 0 ? _e : 1;
750
750
  const range = this.stage
751
- ? [this.stage.width, this.stage.height]
751
+ ? [
752
+ (_f = this.stage.viewWidth) !== null && _f !== void 0 ? _f : this.stage.width,
753
+ (_g = this.stage.viewHeight) !== null && _g !== void 0 ? _g : this.stage.height
754
+ ]
752
755
  : undefined;
756
+ if (range) {
757
+ const b = this.AABBBounds;
758
+ const leftWidth = b.x1;
759
+ const rightWidth = range[0] - b.x1;
760
+ let maxSpace = Math.max(leftWidth, rightWidth);
761
+ maxSpace = Math.max(maxSpace - 10, maxSpace * 0.7);
762
+ if (maxSpace < popTipWidth) {
763
+ popTipWidth = maxSpace;
764
+ const buf = parsedPadding[1] + parsedPadding[3];
765
+ titleShape.setAttribute('maxLineWidth', maxSpace - buf);
766
+ contentShape.setAttribute('maxLineWidth', maxSpace - buf);
767
+ poptipHeight = parsedPadding[0] + parsedPadding[2];
768
+ if (titleVisible) {
769
+ poptipHeight += titleShape.AABBBounds.height() + space;
770
+ }
771
+ poptipHeight += contentShape.AABBBounds.height();
772
+ }
773
+ }
753
774
  const layout = position === 'auto';
754
775
  let maxBBoxI;
755
776
  let maxBBoxSize = -Infinity;
@@ -1056,13 +1077,20 @@
1056
1077
  injectable()
1057
1078
  ], PopTipForClipedTextPlugin);
1058
1079
 
1059
- const popTipModule = new ContainerModule(bind => {
1060
- bind(PopTipRenderContribution).toSelf().inSingletonScope();
1061
- bind(vrender.InteractiveSubRenderContribution).toService(PopTipRenderContribution);
1062
- bind(PopTipPlugin).toSelf().inSingletonScope();
1063
- bind(vrender.AutoEnablePlugins).toService(PopTipPlugin);
1064
- bind(PopTipForClipedTextPlugin).toSelf().inSingletonScope();
1065
- bind(vrender.AutoEnablePlugins).toService(PopTipForClipedTextPlugin);
1080
+ const popTipModule = new ContainerModule((bind, unbind, isBound, rebind) => {
1081
+ if (!isBound(PopTipRenderContribution) || !isBound(PopTipPlugin) || !isBound(PopTipForClipedTextPlugin)) {
1082
+ bind(PopTipRenderContribution).toSelf().inSingletonScope();
1083
+ bind(vrender.InteractiveSubRenderContribution).toService(PopTipRenderContribution);
1084
+ bind(PopTipPlugin).toSelf();
1085
+ bind(vrender.AutoEnablePlugins).toService(PopTipPlugin);
1086
+ bind(PopTipForClipedTextPlugin).toSelf();
1087
+ bind(vrender.AutoEnablePlugins).toService(PopTipForClipedTextPlugin);
1088
+ }
1089
+ else {
1090
+ rebind(PopTipRenderContribution).toSelf().inSingletonScope();
1091
+ rebind(PopTipPlugin).toSelf();
1092
+ rebind(PopTipForClipedTextPlugin).toSelf();
1093
+ }
1066
1094
  });
1067
1095
  function loadPoptip(defaultPoptipTheme) {
1068
1096
  vutils.merge(theme.poptip, defaultPoptipTheme);
@@ -10123,7 +10151,7 @@
10123
10151
  return new Tag(params ? params.attribute : {});
10124
10152
  }
10125
10153
 
10126
- const version = "0.14.6-alpha.7";
10154
+ const version = "0.14.6-alpha.9";
10127
10155
 
10128
10156
  exports.AbstractComponent = AbstractComponent;
10129
10157
  exports.ArcInfo = ArcInfo;