@visactor/vgrammar-core 0.11.5 → 0.11.7
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/graph/animation/animation/update.js +6 -1
- package/cjs/graph/animation/animation/update.js.map +1 -1
- package/cjs/graph/attributes/helpers.js +3 -3
- package/cjs/graph/attributes/helpers.js.map +1 -1
- package/cjs/graph/attributes/transform.js +3 -20
- package/cjs/graph/attributes/transform.js.map +1 -1
- package/cjs/index.d.ts +1 -1
- package/cjs/index.js +1 -1
- package/cjs/index.js.map +1 -1
- package/cjs/interactions/crosshair.js +1 -1
- package/cjs/interactions/crosshair.js.map +1 -1
- package/cjs/interactions/dimension-tooltip.js +2 -1
- package/cjs/interactions/dimension-tooltip.js.map +1 -1
- package/cjs/interactions/tooltip.js +2 -1
- package/cjs/interactions/tooltip.js.map +1 -1
- package/cjs/semantic-marks/text.d.ts +0 -1
- package/cjs/semantic-marks/text.js +3 -7
- package/cjs/semantic-marks/text.js.map +1 -1
- package/cjs/transforms/mark/mark-overlap.js +2 -2
- package/cjs/transforms/mark/mark-overlap.js.map +1 -1
- package/cjs/types/mark.d.ts +3 -1
- package/cjs/types/mark.js.map +1 -1
- package/cjs/types/transform.d.ts +1 -0
- package/cjs/types/transform.js.map +1 -1
- package/cjs/util/text.d.ts +0 -4
- package/cjs/util/text.js +2 -9
- package/cjs/util/text.js.map +1 -1
- package/es/graph/animation/animation/update.js +7 -0
- package/es/graph/animation/animation/update.js.map +1 -1
- package/es/graph/attributes/helpers.js +3 -3
- package/es/graph/attributes/helpers.js.map +1 -1
- package/es/graph/attributes/transform.js +3 -20
- package/es/graph/attributes/transform.js.map +1 -1
- package/es/index.d.ts +1 -1
- package/es/index.js +1 -1
- package/es/index.js.map +1 -1
- package/es/interactions/crosshair.js +1 -1
- package/es/interactions/crosshair.js.map +1 -1
- package/es/interactions/dimension-tooltip.js +2 -1
- package/es/interactions/dimension-tooltip.js.map +1 -1
- package/es/interactions/tooltip.js +2 -1
- package/es/interactions/tooltip.js.map +1 -1
- package/es/semantic-marks/text.d.ts +0 -1
- package/es/semantic-marks/text.js +2 -8
- package/es/semantic-marks/text.js.map +1 -1
- package/es/transforms/mark/mark-overlap.js +2 -2
- package/es/transforms/mark/mark-overlap.js.map +1 -1
- package/es/types/mark.d.ts +3 -1
- package/es/types/mark.js.map +1 -1
- package/es/types/transform.d.ts +1 -0
- package/es/types/transform.js.map +1 -1
- package/es/util/text.d.ts +0 -4
- package/es/util/text.js +0 -7
- package/es/util/text.js.map +1 -1
- package/package.json +4 -4
|
@@ -4,10 +4,15 @@ Object.defineProperty(exports, "__esModule", {
|
|
|
4
4
|
value: !0
|
|
5
5
|
}), exports.update = void 0;
|
|
6
6
|
|
|
7
|
-
const vutils_1 = require("@visactor/vutils"), vgrammar_util_1 = require("@visactor/vgrammar-util"),
|
|
7
|
+
const vutils_1 = require("@visactor/vutils"), vgrammar_util_1 = require("@visactor/vgrammar-util"), BUILT_IN_EXCLUDE_CHANNELS = {
|
|
8
|
+
symbol: [ "_mo_hide_", "visible" ]
|
|
9
|
+
}, update = (element, options, animationParameters) => {
|
|
8
10
|
const from = Object.assign({}, element.getPrevGraphicAttributes()), to = Object.assign({}, element.getNextGraphicAttributes());
|
|
11
|
+
let excludeChannels;
|
|
9
12
|
return options && (0, vutils_1.array)(options.excludeChannels).forEach((key => {
|
|
10
13
|
delete from[key], delete to[key];
|
|
14
|
+
})), element.mark && element.mark.markType && (excludeChannels = BUILT_IN_EXCLUDE_CHANNELS[element.mark.markType]) && excludeChannels.forEach((key => {
|
|
15
|
+
delete from[key], delete to[key];
|
|
11
16
|
})), Object.keys(to).forEach((key => {
|
|
12
17
|
(0, vgrammar_util_1.isEqual)(key, from, to) && (delete from[key], delete to[key]);
|
|
13
18
|
})), {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../src/graph/animation/animation/update.ts"],"names":[],"mappings":";;;AAAA,6CAAyC;AACzC,2DAAkD;
|
|
1
|
+
{"version":3,"sources":["../src/graph/animation/animation/update.ts"],"names":[],"mappings":";;;AAAA,6CAAyC;AACzC,2DAAkD;AAQlD,MAAM,yBAAyB,GAAG;IAChC,MAAM,EAAE,CAAC,WAAW,EAAE,SAAS,CAAC;CACjC,CAAC;AAEK,MAAM,MAAM,GAA4B,CAC7C,OAAiB,EACjB,OAAgC,EAChC,mBAAyC,EACzC,EAAE;IACF,MAAM,IAAI,GAAG,MAAM,CAAC,MAAM,CAAC,EAAE,EAAE,OAAO,CAAC,wBAAwB,EAAE,CAAC,CAAC;IACnE,MAAM,EAAE,GAAG,MAAM,CAAC,MAAM,CAAC,EAAE,EAAE,OAAO,CAAC,wBAAwB,EAAE,CAAC,CAAC;IACjE,IAAI,OAAO,EAAE;QACX,IAAA,cAAK,EAAC,OAAO,CAAC,eAAe,CAAC,CAAC,OAAO,CAAC,GAAG,CAAC,EAAE;YAC3C,OAAO,IAAI,CAAC,GAAG,CAAC,CAAC;YACjB,OAAO,EAAE,CAAC,GAAG,CAAC,CAAC;QACjB,CAAC,CAAC,CAAC;KACJ;IACD,IAAI,eAAyB,CAAC;IAC9B,IAAI,OAAO,CAAC,IAAI,IAAI,OAAO,CAAC,IAAI,CAAC,QAAQ,IAAI,CAAC,eAAe,GAAG,yBAAyB,CAAC,OAAO,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC,EAAE;QACjH,eAAe,CAAC,OAAO,CAAC,GAAG,CAAC,EAAE;YAC5B,OAAO,IAAI,CAAC,GAAG,CAAC,CAAC;YACjB,OAAO,EAAE,CAAC,GAAG,CAAC,CAAC;QACjB,CAAC,CAAC,CAAC;KACJ;IAED,MAAM,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,OAAO,CAAC,GAAG,CAAC,EAAE;QAC5B,IAAI,IAAA,uBAAO,EAAC,GAAG,EAAE,IAAI,EAAE,EAAE,CAAC,EAAE;YAC1B,OAAO,IAAI,CAAC,GAAG,CAAC,CAAC;YACjB,OAAO,EAAE,CAAC,GAAG,CAAC,CAAC;SAChB;IACH,CAAC,CAAC,CAAC;IACH,OAAO,EAAE,IAAI,EAAE,EAAE,EAAE,CAAC;AACtB,CAAC,CAAC;AA5BW,QAAA,MAAM,UA4BjB","file":"update.js","sourcesContent":["import { array } from '@visactor/vutils';\nimport { isEqual } from '@visactor/vgrammar-util';\nimport type { IElement } from '../../../types';\nimport type { IAnimationParameters, TypeAnimation } from '../../../types/animate';\n\nexport interface IUpdateAnimationOptions {\n excludeChannels: string[];\n}\n\nconst BUILT_IN_EXCLUDE_CHANNELS = {\n symbol: ['_mo_hide_', 'visible']\n};\n\nexport const update: TypeAnimation<IElement> = (\n element: IElement,\n options: IUpdateAnimationOptions,\n animationParameters: IAnimationParameters\n) => {\n const from = Object.assign({}, element.getPrevGraphicAttributes());\n const to = Object.assign({}, element.getNextGraphicAttributes());\n if (options) {\n array(options.excludeChannels).forEach(key => {\n delete from[key];\n delete to[key];\n });\n }\n let excludeChannels: string[];\n if (element.mark && element.mark.markType && (excludeChannels = BUILT_IN_EXCLUDE_CHANNELS[element.mark.markType])) {\n excludeChannels.forEach(key => {\n delete from[key];\n delete to[key];\n });\n }\n\n Object.keys(to).forEach(key => {\n if (isEqual(key, from, to)) {\n delete from[key];\n delete to[key];\n }\n });\n return { from, to };\n};\n"]}
|
|
@@ -36,7 +36,7 @@ function getRulePoints(nextAttrs) {
|
|
|
36
36
|
}
|
|
37
37
|
|
|
38
38
|
function getLinePoints(items, includeOnePoint, lastPoints, isArea) {
|
|
39
|
-
if (!items || !items.length || 1 === items.length && includeOnePoint) return [];
|
|
39
|
+
if (!items || !items.length || 1 === items.length && !includeOnePoint) return [];
|
|
40
40
|
return items.some((item => isValidPointsChannel(Object.keys(item.nextAttrs), "line"))) ? items.map(((item, index) => {
|
|
41
41
|
var _a;
|
|
42
42
|
const attrs = item.nextAttrs, {x: x, y: y, x1: x1, y1: y1, defined: defined} = null !== (_a = null == lastPoints ? void 0 : lastPoints[index]) && void 0 !== _a ? _a : {};
|
|
@@ -48,7 +48,7 @@ function getLinePoints(items, includeOnePoint, lastPoints, isArea) {
|
|
|
48
48
|
}
|
|
49
49
|
|
|
50
50
|
function getLargeRectsPoints(items, includeOnePoint, lastPoints = []) {
|
|
51
|
-
if (!items || !items.length || 1 === items.length && includeOnePoint) return [];
|
|
51
|
+
if (!items || !items.length || 1 === items.length && !includeOnePoint) return [];
|
|
52
52
|
const arr = new Float32Array(4 * items.length);
|
|
53
53
|
return items.forEach(((item, index) => {
|
|
54
54
|
var _a, _b, _c, _d;
|
|
@@ -58,7 +58,7 @@ function getLargeRectsPoints(items, includeOnePoint, lastPoints = []) {
|
|
|
58
58
|
}
|
|
59
59
|
|
|
60
60
|
function getLargeSymbolsPoints(items, includeOnePoint, lastPoints = []) {
|
|
61
|
-
if (!items || !items.length || 1 === items.length && includeOnePoint) return [];
|
|
61
|
+
if (!items || !items.length || 1 === items.length && !includeOnePoint) return [];
|
|
62
62
|
const arr = new Float32Array(2 * items.length);
|
|
63
63
|
return items.forEach(((item, index) => {
|
|
64
64
|
var _a, _b;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../src/graph/attributes/helpers.ts"],"names":[],"mappings":"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","file":"helpers.js","sourcesContent":["import type { IPointLike } from '@visactor/vutils';\n// eslint-disable-next-line no-duplicate-imports\nimport { isNil, isValidNumber } from '@visactor/vutils';\nimport type { MarkElementItem, MarkType } from '../../types';\nimport { GrammarMarkType } from '../enums';\n\nexport function isValidPointsChannel(channels: string[], markType: MarkType): boolean {\n switch (markType) {\n case 'line':\n return channels.some(channel => ['x', 'y', 'defined'].includes(channel));\n case 'area':\n return channels.some(channel => ['x', 'y', 'x1', 'y1', 'defined'].includes(channel));\n case 'largeRects':\n return channels.some(channel => ['x', 'y', 'width', 'y1'].includes(channel));\n case 'largeSymbols':\n return channels.some(channel => ['x', 'y'].includes(channel));\n }\n return false;\n}\n\n/**\n * 获取rule的points\n * 相对位置\n * @param {*} item\n * @returns\n */\nexport function getRulePoints(nextAttrs: { x: number; y: number; x1: number; y1: number }) {\n const { x, y, x1, y1 } = nextAttrs;\n\n if (!isValidNumber(x) || !isValidNumber(y) || !isValidNumber(x1) || !isValidNumber(y1)) {\n return [];\n }\n return [\n { x, y },\n { x: x1, y: y1 }\n ];\n}\n/**\n * 生成用于渲染的点数组\n * @param {*} item\n * @returns {IPointLike[]}\n */\nexport function getLinePoints(\n items?: MarkElementItem[],\n includeOnePoint?: boolean,\n lastPoints?: IPointLike[],\n isArea?: boolean\n) {\n if (!items || !items.length || (items.length === 1 && includeOnePoint)) {\n return [];\n }\n const hasValidChannel = items.some(item => {\n return isValidPointsChannel(Object.keys(item.nextAttrs), 'line');\n });\n if (!hasValidChannel) {\n return lastPoints ?? [];\n }\n return items.map((item, index) => {\n const attrs = item.nextAttrs;\n const { x, y, x1, y1, defined } = lastPoints?.[index] ?? {};\n if (isNil(attrs.x)) {\n attrs.x = x;\n }\n if (isNil(attrs.y)) {\n attrs.y = y;\n }\n\n if (isNil(attrs.defined) && defined === false) {\n attrs.defined = false;\n }\n\n attrs.context = item.key;\n\n if (isArea) {\n if (isNil(attrs.x1)) {\n attrs.x1 = x1;\n }\n if (isNil(attrs.y1)) {\n attrs.y1 = y1;\n }\n }\n\n return attrs;\n });\n}\n\nexport function getLargeRectsPoints(\n items?: MarkElementItem[],\n includeOnePoint?: boolean,\n lastPoints: Float32Array | number[] = []\n): Float32Array | number[] {\n if (!items || !items.length || (items.length === 1 && includeOnePoint)) {\n return [];\n }\n const arr: Float32Array = new Float32Array(items.length * 4);\n\n items.forEach((item, index) => {\n const attrs = item.nextAttrs;\n const x = attrs.x ?? lastPoints[index * 4];\n const y = attrs.y ?? lastPoints[index * 4 + 1];\n const width = attrs.width ?? lastPoints[index * 4 + 2];\n const y1 = attrs.y1 ?? lastPoints[index * 4 + 3];\n arr[index * 4] = x;\n arr[index * 4 + 1] = y;\n arr[index * 4 + 2] = width;\n arr[index * 4 + 3] = y1 - y;\n });\n\n return arr;\n}\n\nexport function getLargeSymbolsPoints(\n items?: MarkElementItem[],\n includeOnePoint?: boolean,\n lastPoints: Float32Array | number[] = []\n): Float32Array | number[] {\n if (!items || !items.length || (items.length === 1 && includeOnePoint)) {\n return [];\n }\n const arr: Float32Array = new Float32Array(items.length * 2);\n\n items.forEach((item, index) => {\n const attrs = item.nextAttrs;\n const x = attrs.x ?? lastPoints[index * 2];\n const y = attrs.y ?? lastPoints[index * 2 + 1];\n arr[index * 2] = x;\n arr[index * 2 + 1] = y;\n });\n\n return arr;\n}\n\nexport function isPositionOrSizeChannel(type: string, channel: string) {\n if (['x', 'y', 'dx', 'dy'].includes(channel)) {\n return true;\n }\n\n switch (type) {\n case GrammarMarkType.arc:\n return ['innerRadius', 'outerRadius', 'startAngle', 'endAngle'].includes(channel);\n case GrammarMarkType.group:\n case GrammarMarkType.rect:\n case GrammarMarkType.image:\n return ['width', 'height', 'y1'].includes(channel);\n case GrammarMarkType.path:\n case GrammarMarkType.shape:\n return ['path', 'customPath'].includes(channel);\n case GrammarMarkType.line:\n return channel === 'defined';\n case GrammarMarkType.area:\n return ['x1', 'y1', 'defined'].includes(channel);\n case GrammarMarkType.rule:\n return ['x1', 'y1'].includes(channel);\n case GrammarMarkType.symbol:\n return channel === 'size';\n case GrammarMarkType.polygon:\n return channel === 'points';\n case GrammarMarkType.text:\n return channel === 'text';\n }\n\n return false;\n}\n\nexport function isPointsMarkType(markType: MarkType): boolean {\n return (\n [GrammarMarkType.line, GrammarMarkType.area, GrammarMarkType.largeRects, GrammarMarkType.largeSymbols] as MarkType[]\n ).includes(markType);\n}\n"]}
|
|
1
|
+
{"version":3,"sources":["../src/graph/attributes/helpers.ts"],"names":[],"mappings":"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","file":"helpers.js","sourcesContent":["import type { IPointLike } from '@visactor/vutils';\n// eslint-disable-next-line no-duplicate-imports\nimport { isNil, isValidNumber } from '@visactor/vutils';\nimport type { MarkElementItem, MarkType } from '../../types';\nimport { GrammarMarkType } from '../enums';\n\nexport function isValidPointsChannel(channels: string[], markType: MarkType): boolean {\n switch (markType) {\n case 'line':\n return channels.some(channel => ['x', 'y', 'defined'].includes(channel));\n case 'area':\n return channels.some(channel => ['x', 'y', 'x1', 'y1', 'defined'].includes(channel));\n case 'largeRects':\n return channels.some(channel => ['x', 'y', 'width', 'y1'].includes(channel));\n case 'largeSymbols':\n return channels.some(channel => ['x', 'y'].includes(channel));\n }\n return false;\n}\n\n/**\n * 获取rule的points\n * 相对位置\n * @param {*} item\n * @returns\n */\nexport function getRulePoints(nextAttrs: { x: number; y: number; x1: number; y1: number }) {\n const { x, y, x1, y1 } = nextAttrs;\n\n if (!isValidNumber(x) || !isValidNumber(y) || !isValidNumber(x1) || !isValidNumber(y1)) {\n return [];\n }\n return [\n { x, y },\n { x: x1, y: y1 }\n ];\n}\n/**\n * 生成用于渲染的点数组\n * @param {*} item\n * @returns {IPointLike[]}\n */\nexport function getLinePoints(\n items?: MarkElementItem[],\n includeOnePoint?: boolean,\n lastPoints?: IPointLike[],\n isArea?: boolean\n) {\n if (!items || !items.length || (items.length === 1 && !includeOnePoint)) {\n return [];\n }\n const hasValidChannel = items.some(item => {\n return isValidPointsChannel(Object.keys(item.nextAttrs), 'line');\n });\n if (!hasValidChannel) {\n return lastPoints ?? [];\n }\n return items.map((item, index) => {\n const attrs = item.nextAttrs;\n const { x, y, x1, y1, defined } = lastPoints?.[index] ?? {};\n if (isNil(attrs.x)) {\n attrs.x = x;\n }\n if (isNil(attrs.y)) {\n attrs.y = y;\n }\n\n if (isNil(attrs.defined) && defined === false) {\n attrs.defined = false;\n }\n\n attrs.context = item.key;\n\n if (isArea) {\n if (isNil(attrs.x1)) {\n attrs.x1 = x1;\n }\n if (isNil(attrs.y1)) {\n attrs.y1 = y1;\n }\n }\n\n return attrs;\n });\n}\n\nexport function getLargeRectsPoints(\n items?: MarkElementItem[],\n includeOnePoint?: boolean,\n lastPoints: Float32Array | number[] = []\n): Float32Array | number[] {\n if (!items || !items.length || (items.length === 1 && !includeOnePoint)) {\n return [];\n }\n const arr: Float32Array = new Float32Array(items.length * 4);\n\n items.forEach((item, index) => {\n const attrs = item.nextAttrs;\n const x = attrs.x ?? lastPoints[index * 4];\n const y = attrs.y ?? lastPoints[index * 4 + 1];\n const width = attrs.width ?? lastPoints[index * 4 + 2];\n const y1 = attrs.y1 ?? lastPoints[index * 4 + 3];\n arr[index * 4] = x;\n arr[index * 4 + 1] = y;\n arr[index * 4 + 2] = width;\n arr[index * 4 + 3] = y1 - y;\n });\n\n return arr;\n}\n\nexport function getLargeSymbolsPoints(\n items?: MarkElementItem[],\n includeOnePoint?: boolean,\n lastPoints: Float32Array | number[] = []\n): Float32Array | number[] {\n if (!items || !items.length || (items.length === 1 && !includeOnePoint)) {\n return [];\n }\n const arr: Float32Array = new Float32Array(items.length * 2);\n\n items.forEach((item, index) => {\n const attrs = item.nextAttrs;\n const x = attrs.x ?? lastPoints[index * 2];\n const y = attrs.y ?? lastPoints[index * 2 + 1];\n arr[index * 2] = x;\n arr[index * 2 + 1] = y;\n });\n\n return arr;\n}\n\nexport function isPositionOrSizeChannel(type: string, channel: string) {\n if (['x', 'y', 'dx', 'dy'].includes(channel)) {\n return true;\n }\n\n switch (type) {\n case GrammarMarkType.arc:\n return ['innerRadius', 'outerRadius', 'startAngle', 'endAngle'].includes(channel);\n case GrammarMarkType.group:\n case GrammarMarkType.rect:\n case GrammarMarkType.image:\n return ['width', 'height', 'y1'].includes(channel);\n case GrammarMarkType.path:\n case GrammarMarkType.shape:\n return ['path', 'customPath'].includes(channel);\n case GrammarMarkType.line:\n return channel === 'defined';\n case GrammarMarkType.area:\n return ['x1', 'y1', 'defined'].includes(channel);\n case GrammarMarkType.rule:\n return ['x1', 'y1'].includes(channel);\n case GrammarMarkType.symbol:\n return channel === 'size';\n case GrammarMarkType.polygon:\n return channel === 'points';\n case GrammarMarkType.text:\n return channel === 'text';\n }\n\n return false;\n}\n\nexport function isPointsMarkType(markType: MarkType): boolean {\n return (\n [GrammarMarkType.line, GrammarMarkType.area, GrammarMarkType.largeRects, GrammarMarkType.largeSymbols] as MarkType[]\n ).includes(markType);\n}\n"]}
|
|
@@ -49,18 +49,13 @@ exports.transformsByType = {
|
|
|
49
49
|
storedAttrs: "sizeAttrs"
|
|
50
50
|
} ],
|
|
51
51
|
[enums_1.GrammarMarkType.text]: [ {
|
|
52
|
-
channels: [ "text", "limit", "autoLimit", "maxLineWidth" ],
|
|
52
|
+
channels: [ "text", "limit", "autoLimit", "maxLineWidth", "textType" ],
|
|
53
53
|
transform: (graphicAttributes, nextAttrs, storedAttrs) => {
|
|
54
|
-
var _a, _b
|
|
54
|
+
var _a, _b;
|
|
55
55
|
const limit = null !== (_a = storedAttrs.limit) && void 0 !== _a ? _a : 1 / 0, autoLimit = null !== (_b = storedAttrs.autoLimit) && void 0 !== _b ? _b : 1 / 0, maxWidth = Math.min(limit, autoLimit), isTextConfig = (0,
|
|
56
56
|
vutils_1.isPlainObject)(storedAttrs.text) && !(0, vutils_1.isNil)(storedAttrs.text.text), text = isTextConfig ? storedAttrs.text.text : storedAttrs.text;
|
|
57
57
|
Array.isArray(text), graphicAttributes.maxLineWidth = maxWidth === 1 / 0 ? storedAttrs.maxLineWidth : maxWidth,
|
|
58
|
-
isTextConfig
|
|
59
|
-
dom: text,
|
|
60
|
-
width: null !== (_c = nextAttrs.width) && void 0 !== _c ? _c : maxWidth,
|
|
61
|
-
height: null !== (_d = nextAttrs.height) && void 0 !== _d ? _d : nextAttrs.fontSize,
|
|
62
|
-
anchorType: "position"
|
|
63
|
-
}, graphicAttributes.text = "") : "rich" === storedAttrs.text.type ? graphicAttributes.textConfig = text : graphicAttributes.text = text : graphicAttributes.text = text;
|
|
58
|
+
(isTextConfig || storedAttrs.textType) && ("rich" === storedAttrs.text.type || "rich" === storedAttrs.textType) ? graphicAttributes.textConfig = text : graphicAttributes.text = text;
|
|
64
59
|
},
|
|
65
60
|
storedAttrs: "limitAttrs"
|
|
66
61
|
} ],
|
|
@@ -85,18 +80,6 @@ exports.transformsByType = {
|
|
|
85
80
|
graphicAttributes.fill = !1) : (graphicAttributes.fill = storedAttrs.fill, graphicAttributes.background = storedAttrs.background);
|
|
86
81
|
},
|
|
87
82
|
storedAttrs: "imageAttrs"
|
|
88
|
-
} ],
|
|
89
|
-
[enums_1.GrammarMarkType.richtext]: [ {
|
|
90
|
-
channels: [ "text", "textConfig" ],
|
|
91
|
-
transform: (graphicAttributes, nextAttrs, storedAttrs) => {
|
|
92
|
-
var _a, _b, _c, _d;
|
|
93
|
-
graphicAttributes.text = null, "rich" === (null === (_a = nextAttrs.text) || void 0 === _a ? void 0 : _a.type) ? graphicAttributes.textConfig = nextAttrs.text.text : "html" === (null === (_b = nextAttrs.textConfig) || void 0 === _b ? void 0 : _b.type) ? (graphicAttributes.html = {
|
|
94
|
-
dom: nextAttrs.textConfig.text,
|
|
95
|
-
width: nextAttrs.width,
|
|
96
|
-
height: null !== (_c = nextAttrs.height) && void 0 !== _c ? _c : nextAttrs.fontSize,
|
|
97
|
-
anchorType: "position"
|
|
98
|
-
}, graphicAttributes.text = "") : "rich" === (null === (_d = nextAttrs.textConfig) || void 0 === _d ? void 0 : _d.type) ? graphicAttributes.textConfig = nextAttrs.textConfig.text : graphicAttributes.textConfig = nextAttrs.textConfig;
|
|
99
|
-
}
|
|
100
83
|
} ]
|
|
101
84
|
}, exports.cloneTransformAttributes = cloneTransformAttributes;
|
|
102
85
|
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../src/graph/attributes/transform.ts"],"names":[],"mappings":"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","file":"transform.js","sourcesContent":["import { has, isNil, isPlainObject, isString, isValidNumber } from '@visactor/vutils';\nimport type { IElement, IGlyphElement } from '../../types/element';\nimport type { AttributeTransform, MarkType } from '../../types/mark';\nimport { GrammarMarkType } from '../enums';\nimport { getRulePoints } from './helpers';\nimport { commonAttributes, transformCommonAttribute } from './common';\n\nfunction storeOriginAttributes(\n name: string,\n channels: string[],\n graphicAttributes: any,\n nextAttrs: any,\n element: IElement,\n markName: string\n): Record<string, any> {\n const prevStoredAttrs = (element as IGlyphElement).getGraphicAttribute(name, false, markName);\n\n if (prevStoredAttrs) {\n channels.forEach(channel => {\n if (channel in nextAttrs) {\n prevStoredAttrs[channel] = nextAttrs[channel];\n }\n });\n\n return prevStoredAttrs;\n }\n const storedAttrs = {};\n channels.forEach(channel => {\n storedAttrs[channel] = nextAttrs[channel];\n });\n graphicAttributes[name] = storedAttrs;\n return storedAttrs;\n}\n\nexport const transformsByType: Record<string, AttributeTransform[]> = {\n rect3d: [\n {\n channels: ['x', 'y', 'z', 'x1', 'y1', 'width', 'height', 'length'],\n transform: (graphicAttributes: any, nextAttrs: any, storedAttrs: any) => {\n // width\n if (isValidNumber(nextAttrs.width) || (!isValidNumber(nextAttrs.x1) && isValidNumber(storedAttrs.width))) {\n graphicAttributes.x = Math.min(storedAttrs.x ?? 0, storedAttrs.x1 ?? Infinity);\n graphicAttributes.width = storedAttrs.width;\n } else if (isValidNumber(nextAttrs.x1) || (!isValidNumber(nextAttrs.width) && isValidNumber(storedAttrs.x1))) {\n graphicAttributes.x = Math.min(storedAttrs.x, storedAttrs.x1);\n graphicAttributes.width = Math.abs(storedAttrs.x1 - storedAttrs.x);\n } else {\n graphicAttributes.x = Math.min(storedAttrs.x ?? 0, storedAttrs.x1 ?? Infinity);\n graphicAttributes.width = storedAttrs.width;\n }\n\n // height\n if (isValidNumber(nextAttrs.height) || (!isValidNumber(nextAttrs.y1) && isValidNumber(storedAttrs.height))) {\n graphicAttributes.y = Math.min(storedAttrs.y ?? 0, storedAttrs.y1 ?? Infinity);\n graphicAttributes.height = storedAttrs.height;\n } else if (isValidNumber(nextAttrs.y1) || (!isValidNumber(nextAttrs.height) && isValidNumber(storedAttrs.y1))) {\n graphicAttributes.y = Math.min(storedAttrs.y, storedAttrs.y1);\n graphicAttributes.height = Math.abs(storedAttrs.y1 - storedAttrs.y);\n } else {\n graphicAttributes.y = Math.min(storedAttrs.y ?? 0, storedAttrs.y1 ?? Infinity);\n graphicAttributes.height = storedAttrs.height;\n }\n\n // length\n if (isValidNumber(nextAttrs.length) || (!isValidNumber(nextAttrs.z1) && isValidNumber(storedAttrs.length))) {\n graphicAttributes.z = Math.min(storedAttrs.z ?? 0, storedAttrs.z1 ?? Infinity);\n graphicAttributes.length = storedAttrs.length;\n } else if (isValidNumber(nextAttrs.z1) || (!isValidNumber(nextAttrs.length) && isValidNumber(storedAttrs.z1))) {\n graphicAttributes.z = Math.min(storedAttrs.z, storedAttrs.z1);\n graphicAttributes.length = Math.abs(storedAttrs.z1 - storedAttrs.z);\n } else {\n graphicAttributes.z = Math.min(storedAttrs.z ?? 0, storedAttrs.z1 ?? Infinity);\n graphicAttributes.length = storedAttrs.length;\n }\n },\n storedAttrs: 'sizeAttrs'\n }\n ],\n [GrammarMarkType.text]: [\n {\n channels: ['text', 'limit', 'autoLimit', 'maxLineWidth'],\n transform: (graphicAttributes: any, nextAttrs: any, storedAttrs: any) => {\n const limit = storedAttrs.limit ?? Infinity;\n const autoLimit = storedAttrs.autoLimit ?? Infinity;\n const maxWidth = Math.min(limit, autoLimit);\n const isTextConfig = isPlainObject(storedAttrs.text) && !isNil(storedAttrs.text.text);\n const text = isTextConfig ? storedAttrs.text.text : storedAttrs.text;\n\n if (Array.isArray(text)) {\n graphicAttributes.maxLineWidth = maxWidth === Infinity ? storedAttrs.maxLineWidth : maxWidth;\n } else {\n graphicAttributes.maxLineWidth = maxWidth === Infinity ? storedAttrs.maxLineWidth : maxWidth;\n }\n\n if (isTextConfig) {\n if (storedAttrs.text.type === 'html') {\n graphicAttributes.html = {\n dom: text,\n width: nextAttrs.width ?? maxWidth,\n height: nextAttrs.height ?? nextAttrs.fontSize,\n anchorType: 'position'\n };\n graphicAttributes.text = '';\n } else if (storedAttrs.text.type === 'rich') {\n graphicAttributes.textConfig = text;\n } else {\n graphicAttributes.text = text;\n }\n } else {\n graphicAttributes.text = text;\n }\n },\n storedAttrs: 'limitAttrs'\n }\n ],\n [GrammarMarkType.rule]: [\n {\n channels: ['x', 'y', 'x1', 'y1'],\n transform: (graphicAttributes: any, nextAttrs: any, storedAttrs: any) => {\n const points = getRulePoints(storedAttrs);\n graphicAttributes.points = points;\n graphicAttributes.x = 0;\n graphicAttributes.y = 0;\n },\n storedAttrs: 'pointAttrs'\n }\n ],\n [GrammarMarkType.symbol]: [\n {\n channels: ['shape', 'symbolType'],\n transform: (graphicAttributes: any, nextAttrs: any, storedAttrs: any) => {\n graphicAttributes.symbolType = nextAttrs.shape ?? nextAttrs.symbolType;\n }\n },\n {\n channels: ['image', 'fill', 'background'],\n transform: (graphicAttributes: any, nextAttrs: any, storedAttrs: any) => {\n if (nextAttrs.image) {\n graphicAttributes.background = nextAttrs.image;\n graphicAttributes.fill = false;\n } else if (storedAttrs.image) {\n graphicAttributes.background = storedAttrs.image;\n graphicAttributes.fill = false;\n } else {\n graphicAttributes.fill = storedAttrs.fill;\n graphicAttributes.background = storedAttrs.background;\n }\n },\n storedAttrs: 'imageAttrs'\n }\n ],\n [GrammarMarkType.richtext]: [\n {\n channels: ['text', 'textConfig'],\n transform: (graphicAttributes: any, nextAttrs: any, storedAttrs: any) => {\n graphicAttributes.text = null;\n\n if (nextAttrs.text?.type === 'rich') {\n graphicAttributes.textConfig = nextAttrs.text.text;\n } else if (nextAttrs.textConfig?.type === 'html') {\n graphicAttributes.html = {\n dom: nextAttrs.textConfig.text,\n width: nextAttrs.width,\n height: nextAttrs.height ?? nextAttrs.fontSize,\n anchorType: 'position'\n };\n graphicAttributes.text = '';\n } else if (nextAttrs.textConfig?.type === 'rich') {\n graphicAttributes.textConfig = nextAttrs.textConfig.text;\n } else {\n graphicAttributes.textConfig = nextAttrs.textConfig;\n }\n }\n }\n ]\n};\n\nexport function cloneTransformAttributes(markType: MarkType, attributes: any) {\n const transforms = transformsByType[markType] ?? [];\n return transforms.reduce((clonedAttributes, transform) => {\n transform.channels.forEach(channel => {\n if (has(attributes, channel)) {\n clonedAttributes[channel] = attributes[channel];\n }\n });\n return clonedAttributes;\n }, {} as any);\n}\n\nexport const transformAttributes = (\n markType: MarkType | AttributeTransform[],\n nextAttrs: any,\n element: IElement,\n markName?: string\n) => {\n const graphicAttributes = {};\n const changedKeys = nextAttrs ? Object.keys(nextAttrs) : [];\n const transforms: AttributeTransform[] = isString(markType)\n ? transformsByType[markType]\n : (markType as AttributeTransform[]);\n\n if (transforms && transforms.length) {\n const tags: boolean[] = [];\n\n changedKeys.forEach(key => {\n let isTransformed = false;\n\n transforms.forEach((transform, index) => {\n if (transform.channels.includes(key)) {\n if (!tags[index]) {\n if (transform.storedAttrs) {\n const storedAttrs = storeOriginAttributes(\n transform.storedAttrs,\n transform.channels,\n graphicAttributes,\n nextAttrs,\n element,\n markName\n );\n transform.transform(graphicAttributes, nextAttrs, storedAttrs);\n } else {\n transform.transform(graphicAttributes, nextAttrs, null);\n }\n }\n // 记录一下,不重复处理\n tags[index] = true;\n isTransformed = true;\n }\n });\n\n if (!isTransformed) {\n if (commonAttributes.includes(key)) {\n transformCommonAttribute(graphicAttributes, key, nextAttrs);\n } else {\n graphicAttributes[key] = nextAttrs[key];\n }\n }\n });\n } else {\n changedKeys.forEach(key => {\n if (commonAttributes.includes(key)) {\n transformCommonAttribute(graphicAttributes, key, nextAttrs);\n } else {\n graphicAttributes[key] = nextAttrs[key];\n }\n });\n }\n\n return graphicAttributes;\n};\n"]}
|
|
1
|
+
{"version":3,"sources":["../src/graph/attributes/transform.ts"],"names":[],"mappings":"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","file":"transform.js","sourcesContent":["import { has, isNil, isPlainObject, isString, isValidNumber } from '@visactor/vutils';\nimport type { IElement, IGlyphElement } from '../../types/element';\nimport type { AttributeTransform, MarkType } from '../../types/mark';\nimport { GrammarMarkType } from '../enums';\nimport { getRulePoints } from './helpers';\nimport { commonAttributes, transformCommonAttribute } from './common';\n\nfunction storeOriginAttributes(\n name: string,\n channels: string[],\n graphicAttributes: any,\n nextAttrs: any,\n element: IElement,\n markName: string\n): Record<string, any> {\n const prevStoredAttrs = (element as IGlyphElement).getGraphicAttribute(name, false, markName);\n\n if (prevStoredAttrs) {\n channels.forEach(channel => {\n if (channel in nextAttrs) {\n prevStoredAttrs[channel] = nextAttrs[channel];\n }\n });\n\n return prevStoredAttrs;\n }\n const storedAttrs = {};\n channels.forEach(channel => {\n storedAttrs[channel] = nextAttrs[channel];\n });\n graphicAttributes[name] = storedAttrs;\n return storedAttrs;\n}\n\nexport const transformsByType: Record<string, AttributeTransform[]> = {\n rect3d: [\n {\n channels: ['x', 'y', 'z', 'x1', 'y1', 'width', 'height', 'length'],\n transform: (graphicAttributes: any, nextAttrs: any, storedAttrs: any) => {\n // width\n if (isValidNumber(nextAttrs.width) || (!isValidNumber(nextAttrs.x1) && isValidNumber(storedAttrs.width))) {\n graphicAttributes.x = Math.min(storedAttrs.x ?? 0, storedAttrs.x1 ?? Infinity);\n graphicAttributes.width = storedAttrs.width;\n } else if (isValidNumber(nextAttrs.x1) || (!isValidNumber(nextAttrs.width) && isValidNumber(storedAttrs.x1))) {\n graphicAttributes.x = Math.min(storedAttrs.x, storedAttrs.x1);\n graphicAttributes.width = Math.abs(storedAttrs.x1 - storedAttrs.x);\n } else {\n graphicAttributes.x = Math.min(storedAttrs.x ?? 0, storedAttrs.x1 ?? Infinity);\n graphicAttributes.width = storedAttrs.width;\n }\n\n // height\n if (isValidNumber(nextAttrs.height) || (!isValidNumber(nextAttrs.y1) && isValidNumber(storedAttrs.height))) {\n graphicAttributes.y = Math.min(storedAttrs.y ?? 0, storedAttrs.y1 ?? Infinity);\n graphicAttributes.height = storedAttrs.height;\n } else if (isValidNumber(nextAttrs.y1) || (!isValidNumber(nextAttrs.height) && isValidNumber(storedAttrs.y1))) {\n graphicAttributes.y = Math.min(storedAttrs.y, storedAttrs.y1);\n graphicAttributes.height = Math.abs(storedAttrs.y1 - storedAttrs.y);\n } else {\n graphicAttributes.y = Math.min(storedAttrs.y ?? 0, storedAttrs.y1 ?? Infinity);\n graphicAttributes.height = storedAttrs.height;\n }\n\n // length\n if (isValidNumber(nextAttrs.length) || (!isValidNumber(nextAttrs.z1) && isValidNumber(storedAttrs.length))) {\n graphicAttributes.z = Math.min(storedAttrs.z ?? 0, storedAttrs.z1 ?? Infinity);\n graphicAttributes.length = storedAttrs.length;\n } else if (isValidNumber(nextAttrs.z1) || (!isValidNumber(nextAttrs.length) && isValidNumber(storedAttrs.z1))) {\n graphicAttributes.z = Math.min(storedAttrs.z, storedAttrs.z1);\n graphicAttributes.length = Math.abs(storedAttrs.z1 - storedAttrs.z);\n } else {\n graphicAttributes.z = Math.min(storedAttrs.z ?? 0, storedAttrs.z1 ?? Infinity);\n graphicAttributes.length = storedAttrs.length;\n }\n },\n storedAttrs: 'sizeAttrs'\n }\n ],\n [GrammarMarkType.text]: [\n {\n channels: ['text', 'limit', 'autoLimit', 'maxLineWidth', 'textType'],\n transform: (graphicAttributes: any, nextAttrs: any, storedAttrs: any) => {\n const limit = storedAttrs.limit ?? Infinity;\n const autoLimit = storedAttrs.autoLimit ?? Infinity;\n const maxWidth = Math.min(limit, autoLimit);\n const isTextConfig = isPlainObject(storedAttrs.text) && !isNil(storedAttrs.text.text);\n const text = isTextConfig ? storedAttrs.text.text : storedAttrs.text;\n\n if (Array.isArray(text)) {\n graphicAttributes.maxLineWidth = maxWidth === Infinity ? storedAttrs.maxLineWidth : maxWidth;\n } else {\n graphicAttributes.maxLineWidth = maxWidth === Infinity ? storedAttrs.maxLineWidth : maxWidth;\n }\n\n if (isTextConfig || storedAttrs.textType) {\n if (storedAttrs.text.type === 'rich' || storedAttrs.textType === 'rich') {\n graphicAttributes.textConfig = text;\n } else {\n graphicAttributes.text = text;\n }\n } else {\n graphicAttributes.text = text;\n }\n },\n storedAttrs: 'limitAttrs'\n }\n ],\n [GrammarMarkType.rule]: [\n {\n channels: ['x', 'y', 'x1', 'y1'],\n transform: (graphicAttributes: any, nextAttrs: any, storedAttrs: any) => {\n const points = getRulePoints(storedAttrs);\n graphicAttributes.points = points;\n graphicAttributes.x = 0;\n graphicAttributes.y = 0;\n },\n storedAttrs: 'pointAttrs'\n }\n ],\n [GrammarMarkType.symbol]: [\n {\n channels: ['shape', 'symbolType'],\n transform: (graphicAttributes: any, nextAttrs: any, storedAttrs: any) => {\n graphicAttributes.symbolType = nextAttrs.shape ?? nextAttrs.symbolType;\n }\n },\n {\n channels: ['image', 'fill', 'background'],\n transform: (graphicAttributes: any, nextAttrs: any, storedAttrs: any) => {\n if (nextAttrs.image) {\n graphicAttributes.background = nextAttrs.image;\n graphicAttributes.fill = false;\n } else if (storedAttrs.image) {\n graphicAttributes.background = storedAttrs.image;\n graphicAttributes.fill = false;\n } else {\n graphicAttributes.fill = storedAttrs.fill;\n graphicAttributes.background = storedAttrs.background;\n }\n },\n storedAttrs: 'imageAttrs'\n }\n ]\n};\n\nexport function cloneTransformAttributes(markType: MarkType, attributes: any) {\n const transforms = transformsByType[markType] ?? [];\n return transforms.reduce((clonedAttributes, transform) => {\n transform.channels.forEach(channel => {\n if (has(attributes, channel)) {\n clonedAttributes[channel] = attributes[channel];\n }\n });\n return clonedAttributes;\n }, {} as any);\n}\n\nexport const transformAttributes = (\n markType: MarkType | AttributeTransform[],\n nextAttrs: any,\n element: IElement,\n markName?: string\n) => {\n const graphicAttributes = {};\n const changedKeys = nextAttrs ? Object.keys(nextAttrs) : [];\n const transforms: AttributeTransform[] = isString(markType)\n ? transformsByType[markType]\n : (markType as AttributeTransform[]);\n\n if (transforms && transforms.length) {\n const tags: boolean[] = [];\n\n changedKeys.forEach(key => {\n let isTransformed = false;\n\n transforms.forEach((transform, index) => {\n if (transform.channels.includes(key)) {\n if (!tags[index]) {\n if (transform.storedAttrs) {\n const storedAttrs = storeOriginAttributes(\n transform.storedAttrs,\n transform.channels,\n graphicAttributes,\n nextAttrs,\n element,\n markName\n );\n transform.transform(graphicAttributes, nextAttrs, storedAttrs);\n } else {\n transform.transform(graphicAttributes, nextAttrs, null);\n }\n }\n // 记录一下,不重复处理\n tags[index] = true;\n isTransformed = true;\n }\n });\n\n if (!isTransformed) {\n if (commonAttributes.includes(key)) {\n transformCommonAttribute(graphicAttributes, key, nextAttrs);\n } else {\n graphicAttributes[key] = nextAttrs[key];\n }\n }\n });\n } else {\n changedKeys.forEach(key => {\n if (commonAttributes.includes(key)) {\n transformCommonAttribute(graphicAttributes, key, nextAttrs);\n } else {\n graphicAttributes[key] = nextAttrs[key];\n }\n });\n }\n\n return graphicAttributes;\n};\n"]}
|
package/cjs/index.d.ts
CHANGED
package/cjs/index.js
CHANGED
|
@@ -18,7 +18,7 @@ var __createBinding = this && this.__createBinding || (Object.create ? function(
|
|
|
18
18
|
Object.defineProperty(exports, "__esModule", {
|
|
19
19
|
value: !0
|
|
20
20
|
}), exports.vglobal = exports.ThemeManager = exports.SIGNAL_VIEW_BOX = exports.SIGNAL_WIDTH = exports.SIGNAL_VIEW_WIDTH = exports.SIGNAL_VIEW_HEIGHT = exports.SIGNAL_PADDING = exports.SIGNAL_HEIGHT = exports.SIGNAL_AUTOFIT = exports.Factory = exports.GrammarBase = exports.invokeFunctionType = exports.parseFunctionType = exports.registerCoordinate = exports.Coordinate = exports.registerScale = exports.Scale = exports.View = exports.version = void 0,
|
|
21
|
-
exports.version = "0.11.
|
|
21
|
+
exports.version = "0.11.7", __exportStar(require("./graph"), exports), __exportStar(require("./interactions"), exports);
|
|
22
22
|
|
|
23
23
|
var view_1 = require("./view");
|
|
24
24
|
|
package/cjs/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../src/index.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;AACa,QAAA,OAAO,GAAG,QAAQ,CAAC;AAEhC,0CAAwB;AAExB,iDAA+B;AAE/B,+BAA8B;AAArB,4FAAA,IAAI,OAAA;AACb,sCAAoD;AAA3C,8FAAA,KAAK,OAAA;AAAE,sGAAA,aAAa,OAAA;AAC7B,gDAAmE;AAA1D,wGAAA,UAAU,OAAA;AAAE,gHAAA,kBAAkB,OAAA;AACvC,qCAAqE;AAA5D,yGAAA,iBAAiB,OAAA;AAAE,0GAAA,kBAAkB,OAAA;AAC9C,oDAAkD;AAAzC,2GAAA,WAAW,OAAA;AACpB,8CAA4B;AAC5B,0CAAwB;AACxB,0CAAyC;AAAhC,kGAAA,OAAO,OAAA;AAChB,8CAQ0B;AAPxB,2GAAA,cAAc,OAAA;AACd,0GAAA,aAAa,OAAA;AACb,2GAAA,cAAc,OAAA;AACd,+GAAA,kBAAkB,OAAA;AAClB,8GAAA,iBAAiB,OAAA;AACjB,yGAAA,YAAY,OAAA;AACZ,4GAAA,eAAe,OAAA;AAGjB,uDAAqD;AAA5C,6GAAA,YAAY,OAAA;AAErB,0CAAwB;AACxB,8CAA4B;AAC5B,+CAA6B;AAC7B,8DAA4C;AAE5C,uDAAiD;AAAxC,uGAAA,OAAO,OAAA;AAChB,wCAAsB;AACtB,iDAA+B;AAC/B,wDAAsC;AACtC,4DAA0C;AAC1C,uDAAqC","file":"index.js","sourcesContent":["// -- Exports -----\nexport const version = \"0.11.
|
|
1
|
+
{"version":3,"sources":["../src/index.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;AACa,QAAA,OAAO,GAAG,QAAQ,CAAC;AAEhC,0CAAwB;AAExB,iDAA+B;AAE/B,+BAA8B;AAArB,4FAAA,IAAI,OAAA;AACb,sCAAoD;AAA3C,8FAAA,KAAK,OAAA;AAAE,sGAAA,aAAa,OAAA;AAC7B,gDAAmE;AAA1D,wGAAA,UAAU,OAAA;AAAE,gHAAA,kBAAkB,OAAA;AACvC,qCAAqE;AAA5D,yGAAA,iBAAiB,OAAA;AAAE,0GAAA,kBAAkB,OAAA;AAC9C,oDAAkD;AAAzC,2GAAA,WAAW,OAAA;AACpB,8CAA4B;AAC5B,0CAAwB;AACxB,0CAAyC;AAAhC,kGAAA,OAAO,OAAA;AAChB,8CAQ0B;AAPxB,2GAAA,cAAc,OAAA;AACd,0GAAA,aAAa,OAAA;AACb,2GAAA,cAAc,OAAA;AACd,+GAAA,kBAAkB,OAAA;AAClB,8GAAA,iBAAiB,OAAA;AACjB,yGAAA,YAAY,OAAA;AACZ,4GAAA,eAAe,OAAA;AAGjB,uDAAqD;AAA5C,6GAAA,YAAY,OAAA;AAErB,0CAAwB;AACxB,8CAA4B;AAC5B,+CAA6B;AAC7B,8DAA4C;AAE5C,uDAAiD;AAAxC,uGAAA,OAAO,OAAA;AAChB,wCAAsB;AACtB,iDAA+B;AAC/B,wDAAsC;AACtC,4DAA0C;AAC1C,uDAAqC","file":"index.js","sourcesContent":["// -- Exports -----\nexport const version = \"0.11.7\";\n\nexport * from './graph';\n\nexport * from './interactions';\n\nexport { View } from './view';\nexport { Scale, registerScale } from './view/scale';\nexport { Coordinate, registerCoordinate } from './view/coordinate';\nexport { parseFunctionType, invokeFunctionType } from './parse/util';\nexport { GrammarBase } from './view/grammar-base';\nexport * from './util/text';\nexport * from './types';\nexport { Factory } from './core/factory';\nexport {\n SIGNAL_AUTOFIT,\n SIGNAL_HEIGHT,\n SIGNAL_PADDING,\n SIGNAL_VIEW_HEIGHT,\n SIGNAL_VIEW_WIDTH,\n SIGNAL_WIDTH,\n SIGNAL_VIEW_BOX\n} from './view/constants';\n\nexport { ThemeManager } from './theme/theme-manager';\n\nexport * from './glyph';\nexport * from './component';\nexport * from './transforms';\nexport * from './graph/animation/animation';\n\nexport { vglobal } from '@visactor/vrender-core';\nexport * from './env';\nexport * from './interactions';\nexport * from './semantic-marks/cell';\nexport * from './semantic-marks/interval';\nexport * from './graph/mark/graphic';\n"]}
|
|
@@ -196,7 +196,7 @@ class Crosshair extends base_1.BaseInteraction {
|
|
|
196
196
|
this.getCrosshairComponentType() !== enums_1.CrosshairEnum.circleCrosshair && (attributes.x = containerPoint.x,
|
|
197
197
|
attributes.y = containerPoint.y), this._crosshairComponent.showAll(), this._crosshairComponent.setAttributes(attributes);
|
|
198
198
|
}, this.handleCrosshairHide = () => {
|
|
199
|
-
this._crosshairComponent.hideAll();
|
|
199
|
+
this._crosshairComponent && this._crosshairComponent.hideAll();
|
|
200
200
|
}, this.options = Object.assign({}, Crosshair.defaultOptions, options), this._container = null !== (_b = null === (_a = view.getMarksBySelector(this.options.container)) || void 0 === _a ? void 0 : _a[0]) && void 0 !== _b ? _b : view.rootMark;
|
|
201
201
|
}
|
|
202
202
|
getEvents() {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../src/interactions/crosshair.ts"],"names":[],"mappings":"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","file":"crosshair.js","sourcesContent":["import type { IPointLike } from '@visactor/vutils';\n// eslint-disable-next-line no-duplicate-imports\nimport { clampRadian, getAngleByPoint, isString, merge } from '@visactor/vutils';\nimport type { IRectGraphicAttribute } from '@visactor/vrender-core';\nimport type {\n CircleCrosshairAttrs,\n LineCrosshairAttrs,\n PolygonCrosshairAttrs,\n RectCrosshairAttrs,\n SectorCrosshairAttrs\n} from '@visactor/vrender-components';\n// eslint-disable-next-line no-duplicate-imports\nimport {\n CircleCrosshair,\n LineCrosshair,\n PolygonCrosshair,\n RectCrosshair,\n SectorCrosshair\n} from '@visactor/vrender-components';\nimport type {\n CrosshairOptions,\n CrosshairType,\n IGroupMark,\n ITheme,\n IView,\n InteractionEvent,\n RecursivePartial\n} from '../types';\nimport { BaseInteraction } from './base';\nimport { CrosshairEnum } from '../graph/enums';\nimport type { IBandLikeScale, IBaseScale } from '@visactor/vscale';\n// eslint-disable-next-line no-duplicate-imports\nimport { isContinuous, isDiscrete } from '@visactor/vscale';\nimport { invokeFunctionType } from '../parse/util';\n\ntype CrosshairComponent = CircleCrosshair | LineCrosshair | PolygonCrosshair | RectCrosshair | SectorCrosshair;\n\nconst computeCrosshairStartEnd = (\n point: IPointLike,\n scale: IBaseScale,\n type: CrosshairType,\n groupSize: { width: number; height: number },\n config: any,\n offset: number = 0\n) => {\n const start = { x: 0, y: 0 };\n const end = { x: 0, y: 0 };\n const radius = type === 'angle' ? config?.radius ?? Math.min(groupSize.width, groupSize.height) / 2 : null;\n const center = type === 'angle' ? config?.center ?? { x: groupSize.width / 2, y: groupSize.height / 2 } : null;\n\n let current = 0;\n if (isDiscrete(scale.type)) {\n if (type === 'x') {\n current = scale.scale(scale.invert(point.x));\n } else if (type === 'y') {\n current = scale.scale(scale.invert(point.y));\n } else if (type === 'angle') {\n const angle = clampRadian(getAngleByPoint(center, point) + Math.PI * 2);\n current = scale.scale(scale.invert(angle));\n }\n } else if (isContinuous(scale.type)) {\n if (type === 'x') {\n current = point.x;\n } else if (type === 'y') {\n current = point.y;\n } else if (type === 'angle') {\n current = getAngleByPoint(center, point);\n }\n }\n current += offset;\n switch (type) {\n case 'x':\n start.x = current;\n start.y = 0;\n end.x = current;\n end.y = groupSize.height;\n break;\n case 'y':\n start.x = 0;\n start.y = current;\n end.x = groupSize.width;\n end.y = current;\n break;\n case 'angle':\n start.x = center.x;\n start.y = center.y;\n end.x = center.x + radius * Math.cos(current);\n end.y = center.y + radius * Math.sin(current);\n break;\n }\n return { start, end };\n};\n\nconst computeRadiusOfTangential = (\n point: IPointLike,\n scale: IBaseScale,\n type: CrosshairType,\n groupSize: { width: number; height: number },\n config: any,\n addition?:\n | RecursivePartial<PolygonCrosshairAttrs>\n | RecursivePartial<CircleCrosshairAttrs>\n | RecursivePartial<SectorCrosshairAttrs>\n) => {\n const center = addition?.center ?? config?.center ?? { x: groupSize.width / 2, y: groupSize.height / 2 };\n let currentRadius = 0;\n\n if (isDiscrete(scale.type)) {\n const offset = scale.type === 'band' ? (scale as IBandLikeScale).bandwidth() / 2 : 0;\n const radius = Math.sqrt((point.x - center.x) ** 2 + (point.y - center.y) ** 2);\n currentRadius = scale.scale(scale.invert(radius)) + offset;\n } else if (isContinuous(scale.type)) {\n const maxRadius = config?.radius ?? Math.min(groupSize.width, groupSize.height) / 2;\n currentRadius = Math.min(maxRadius, Math.sqrt((point.x - center.x) ** 2 + (point.y - center.y) ** 2));\n }\n\n return { radius: currentRadius, center };\n};\n\nexport const generateLineCrosshairAttributes = (\n point: IPointLike,\n scale: IBaseScale,\n type: CrosshairType,\n groupSize: { width: number; height: number },\n config: any,\n theme?: ITheme,\n addition?: RecursivePartial<LineCrosshairAttrs> & any\n): LineCrosshairAttrs => {\n const crosshairTheme = theme?.components?.lineCrosshair;\n const offset = scale.type === 'band' ? (scale as IBandLikeScale).bandwidth() / 2 : 0;\n const points = computeCrosshairStartEnd(\n point,\n scale,\n type,\n groupSize,\n {\n radius: addition?.radius ?? config?.radius,\n center: addition?.center ?? config?.center\n },\n offset\n );\n return merge({}, crosshairTheme, points, addition ?? {});\n};\n\nexport const generateRectCrosshairAttributes = (\n point: IPointLike,\n scale: IBaseScale,\n type: CrosshairType,\n groupSize: { width: number; height: number },\n config: any,\n theme?: ITheme,\n addition?: RecursivePartial<RectCrosshairAttrs>\n): RectCrosshairAttrs => {\n const crosshairTheme = theme?.components?.rectCrosshair;\n const defaultSize = scale.type === 'band' || scale.type === 'point' ? (scale as IBandLikeScale).step() : undefined;\n const customRectStyle = addition?.rectStyle;\n const size =\n defaultSize ??\n (type === 'y'\n ? customRectStyle?.width ?? crosshairTheme.rectStyle.width\n : customRectStyle?.height ?? crosshairTheme.rectStyle.height);\n const points = computeCrosshairStartEnd(point, scale, type, groupSize, config, scale.type === 'band' ? 0 : -size / 2);\n const rectStyle: Partial<IRectGraphicAttribute> = {};\n if (type === 'x') {\n rectStyle.width = size;\n } else {\n rectStyle.height = size;\n }\n const attribute = merge(\n {},\n crosshairTheme,\n {\n start: points.start,\n end: points.end,\n rectStyle\n },\n addition ?? {}\n );\n if (type === 'x') {\n attribute.rectStyle.height = attribute.end.y - attribute.start.y;\n } else {\n attribute.rectStyle.width = attribute.end.x - attribute.start.x;\n }\n return attribute;\n};\n\nexport const generateRingCrosshairAttributes = (\n point: IPointLike,\n scale: IBaseScale,\n type: CrosshairType,\n groupSize: { width: number; height: number },\n config: any,\n theme?: ITheme,\n addition?: RecursivePartial<SectorCrosshairAttrs>\n): SectorCrosshairAttrs => {\n const crosshairTheme = theme?.components?.circleCrosshair;\n const { center, radius } = computeRadiusOfTangential(point, scale, type, groupSize, config, addition);\n\n const startAngle = crosshairTheme.startAngle;\n const endAngle = crosshairTheme.endAngle;\n const deltaRadius = scale.type === 'band' || scale.type === 'point' ? (scale as IBandLikeScale).step() : 0;\n\n return merge(\n {},\n crosshairTheme,\n { center, innerRadius: radius - deltaRadius / 2, radius: radius + deltaRadius / 2, startAngle, endAngle },\n addition ?? {}\n );\n};\n\nexport const generateSectorCrosshairAttributes = (\n point: IPointLike,\n scale: IBaseScale,\n type: CrosshairType,\n groupSize: { width: number; height: number },\n config: any,\n theme?: ITheme,\n addition?: RecursivePartial<SectorCrosshairAttrs>\n): SectorCrosshairAttrs => {\n const crosshairTheme = theme?.components?.sectorCrosshair;\n const radius = addition?.radius ?? config?.radius ?? Math.min(groupSize.width, groupSize.height) / 2;\n const center = (addition?.center ??\n config?.center ?? { x: groupSize.width / 2, y: groupSize.height / 2 }) as IPointLike;\n const defaultAngle = crosshairTheme.endAngle - crosshairTheme.startAngle;\n const angle = scale.type === 'band' || scale.type === 'point' ? (scale as IBandLikeScale).step() : defaultAngle;\n let currentAngle = 0;\n if (isDiscrete(scale.type)) {\n const angle = clampRadian(getAngleByPoint(center, point) + Math.PI * 2);\n currentAngle =\n scale.scale(scale.invert(angle)) + (scale.type === 'band' ? (scale as IBandLikeScale).bandwidth() / 2 : 0);\n } else if (isContinuous(scale.type)) {\n currentAngle = getAngleByPoint(center, point);\n }\n const startAngle = currentAngle - angle / 2;\n const endAngle = currentAngle + angle / 2;\n return merge({}, crosshairTheme, { center, radius, startAngle, endAngle }, addition ?? {});\n};\n\nexport const generateCircleCrosshairAttributes = (\n point: IPointLike,\n scale: IBaseScale,\n type: CrosshairType,\n groupSize: { width: number; height: number },\n config: any,\n theme?: ITheme,\n addition?: RecursivePartial<CircleCrosshairAttrs>\n): CircleCrosshairAttrs => {\n const crosshairTheme = theme?.components?.circleCrosshair;\n const { center, radius } = computeRadiusOfTangential(point, scale, type, groupSize, config, addition);\n\n const startAngle = crosshairTheme.startAngle;\n const endAngle = crosshairTheme.endAngle;\n\n return merge({}, crosshairTheme, { center, radius: radius, startAngle, endAngle }, addition ?? {});\n};\n\nexport const generatePolygonCrosshairAttributes = (\n point: IPointLike,\n scale: IBaseScale,\n type: CrosshairType,\n groupSize: { width: number; height: number },\n config: any,\n theme?: ITheme,\n addition?: RecursivePartial<PolygonCrosshairAttrs>\n): PolygonCrosshairAttrs => {\n const crosshairTheme = theme?.components?.circleCrosshair;\n const { center, radius } = computeRadiusOfTangential(point, scale, type, groupSize, config, addition);\n\n const startAngle = crosshairTheme.startAngle;\n const endAngle = crosshairTheme.endAngle;\n return merge({}, crosshairTheme, { center, radius: radius, startAngle, endAngle }, addition ?? {});\n};\n\nexport class Crosshair extends BaseInteraction<CrosshairOptions> {\n static type: string = 'crosshair';\n type: string = Crosshair.type;\n options: CrosshairOptions;\n\n static defaultOptions: Omit<CrosshairOptions, 'target'> = {\n trigger: 'pointermove',\n triggerOff: 'pointerleave',\n crosshairType: 'x',\n crosshairShape: 'line'\n };\n\n protected _crosshairComponent?: CrosshairComponent;\n protected _crosshairComponentType?: keyof typeof CrosshairEnum;\n protected _container: IGroupMark;\n\n constructor(view: IView, options?: CrosshairOptions) {\n super(view, options);\n this.options = Object.assign({}, Crosshair.defaultOptions, options);\n this._container = (view.getMarksBySelector(this.options.container)?.[0] as IGroupMark) ?? view.rootMark;\n }\n\n protected getEvents() {\n return [\n {\n type: this.options.trigger,\n handler: this.handleCrosshairShow\n },\n {\n type: this.options.triggerOff,\n handler: this.handleCrosshairHide\n }\n ];\n }\n\n protected handleCrosshairShow = (event: InteractionEvent) => {\n if (!this._crosshairComponent) {\n return;\n }\n const groupGraphicItem = this._container.getGroupGraphicItem();\n // FIXME: waiting for vRender to add transformed position to event\n const point = { x: 0, y: 0 };\n const globalTransMatrix = groupGraphicItem.globalTransMatrix;\n const containerPoint = { x: globalTransMatrix.e, y: globalTransMatrix.f };\n globalTransMatrix.transformPoint(event.canvas, point);\n\n if (\n point.x < 0 ||\n point.x > groupGraphicItem.attribute.width ||\n point.y < 0 ||\n point.y > groupGraphicItem.attribute.height\n ) {\n this._crosshairComponent.hideAll();\n return;\n }\n\n const crosshairType = this.options.crosshairType ?? 'x';\n const groupSize = { width: groupGraphicItem.attribute.width, height: groupGraphicItem.attribute.height };\n const scaleGrammar = isString(this.options.scale) ? this.view.getScaleById(this.options.scale) : this.options.scale;\n const scale = scaleGrammar.getScale();\n const config = { center: this.options.center, radius: this.options.radius };\n const theme = this.view.getCurrentTheme();\n const addition = invokeFunctionType(this.options.attributes, this.parameters(), {}, {}) as any;\n\n let attributes: any = {};\n switch (this.getCrosshairComponentType()) {\n case CrosshairEnum.lineCrosshair:\n attributes = generateLineCrosshairAttributes(point, scale, crosshairType, groupSize, config, theme, addition);\n break;\n case CrosshairEnum.rectCrosshair:\n attributes = generateRectCrosshairAttributes(point, scale, crosshairType, groupSize, config, theme, addition);\n break;\n case CrosshairEnum.sectorCrosshair:\n attributes = generateSectorCrosshairAttributes(point, scale, crosshairType, groupSize, config, theme, addition);\n break;\n case CrosshairEnum.circleCrosshair:\n attributes = generateCircleCrosshairAttributes(point, scale, crosshairType, groupSize, config, theme, addition);\n break;\n case CrosshairEnum.polygonCrosshair:\n attributes = generatePolygonCrosshairAttributes(\n point,\n scale,\n crosshairType,\n groupSize,\n config,\n theme,\n addition\n );\n break;\n case CrosshairEnum.ringCrosshair:\n attributes = generateRingCrosshairAttributes(point, scale, crosshairType, groupSize, config, theme, addition);\n break;\n }\n // Hack: waiting for component to fix\n if (this.getCrosshairComponentType() !== CrosshairEnum.circleCrosshair) {\n attributes.x = containerPoint.x;\n attributes.y = containerPoint.y;\n }\n this._crosshairComponent.showAll();\n this._crosshairComponent.setAttributes(attributes);\n };\n\n protected handleCrosshairHide = () => {\n this._crosshairComponent.hideAll();\n };\n\n protected getCrosshairComponentType() {\n if (this._crosshairComponentType) {\n return this._crosshairComponentType;\n }\n const shape = this.options.crosshairShape ?? 'line';\n const type = this.options.crosshairType ?? 'x';\n if (shape === 'rect') {\n if (type === 'angle') {\n this._crosshairComponentType = CrosshairEnum.sectorCrosshair;\n } else if (type === 'radius') {\n this._crosshairComponentType = CrosshairEnum.ringCrosshair;\n } else if (type === 'radius-polygon') {\n this._crosshairComponentType = CrosshairEnum.polygonCrosshair;\n } else {\n this._crosshairComponentType = CrosshairEnum.rectCrosshair;\n }\n } else {\n if (type === 'radius') {\n this._crosshairComponentType = CrosshairEnum.circleCrosshair;\n } else if (type === 'radius-polygon') {\n this._crosshairComponentType = CrosshairEnum.polygonCrosshair;\n } else {\n this._crosshairComponentType = CrosshairEnum.lineCrosshair;\n }\n }\n return this._crosshairComponentType;\n }\n\n protected getDefaultCrosshairAttribute(): any {\n const type = this.options.crosshairType ?? 'x';\n if (type === 'radius' || type === 'radius-polygon') {\n return { center: { x: 0, y: 0 }, zIndex: -1 };\n }\n return { start: { x: 0, y: 0 }, end: { x: 0, y: 0 }, zIndex: -1 };\n }\n\n bind(): void {\n super.bind();\n\n const stage = this.view.renderer.stage();\n if (this._crosshairComponent || !stage) {\n return;\n }\n\n switch (this.getCrosshairComponentType()) {\n case CrosshairEnum.lineCrosshair:\n this._crosshairComponent = new LineCrosshair(this.getDefaultCrosshairAttribute());\n break;\n case CrosshairEnum.rectCrosshair:\n this._crosshairComponent = new RectCrosshair(this.getDefaultCrosshairAttribute());\n break;\n case CrosshairEnum.sectorCrosshair:\n this._crosshairComponent = new SectorCrosshair(this.getDefaultCrosshairAttribute());\n break;\n case CrosshairEnum.circleCrosshair:\n this._crosshairComponent = new CircleCrosshair(this.getDefaultCrosshairAttribute());\n break;\n case CrosshairEnum.polygonCrosshair:\n this._crosshairComponent = new PolygonCrosshair(this.getDefaultCrosshairAttribute());\n break;\n case CrosshairEnum.ringCrosshair:\n this._crosshairComponent = new SectorCrosshair(this.getDefaultCrosshairAttribute());\n break;\n }\n (stage.defaultLayer as any).appendChild(this._crosshairComponent);\n }\n\n unbind(): void {\n super.unbind();\n\n if (this._crosshairComponent) {\n this._crosshairComponent.release();\n this._crosshairComponent = null;\n }\n }\n}\n"]}
|
|
1
|
+
{"version":3,"sources":["../src/interactions/crosshair.ts"],"names":[],"mappings":"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","file":"crosshair.js","sourcesContent":["import type { IPointLike } from '@visactor/vutils';\n// eslint-disable-next-line no-duplicate-imports\nimport { clampRadian, getAngleByPoint, isString, merge } from '@visactor/vutils';\nimport type { IRectGraphicAttribute } from '@visactor/vrender-core';\nimport type {\n CircleCrosshairAttrs,\n LineCrosshairAttrs,\n PolygonCrosshairAttrs,\n RectCrosshairAttrs,\n SectorCrosshairAttrs\n} from '@visactor/vrender-components';\n// eslint-disable-next-line no-duplicate-imports\nimport {\n CircleCrosshair,\n LineCrosshair,\n PolygonCrosshair,\n RectCrosshair,\n SectorCrosshair\n} from '@visactor/vrender-components';\nimport type {\n CrosshairOptions,\n CrosshairType,\n IGroupMark,\n ITheme,\n IView,\n InteractionEvent,\n RecursivePartial\n} from '../types';\nimport { BaseInteraction } from './base';\nimport { CrosshairEnum } from '../graph/enums';\nimport type { IBandLikeScale, IBaseScale } from '@visactor/vscale';\n// eslint-disable-next-line no-duplicate-imports\nimport { isContinuous, isDiscrete } from '@visactor/vscale';\nimport { invokeFunctionType } from '../parse/util';\n\ntype CrosshairComponent = CircleCrosshair | LineCrosshair | PolygonCrosshair | RectCrosshair | SectorCrosshair;\n\nconst computeCrosshairStartEnd = (\n point: IPointLike,\n scale: IBaseScale,\n type: CrosshairType,\n groupSize: { width: number; height: number },\n config: any,\n offset: number = 0\n) => {\n const start = { x: 0, y: 0 };\n const end = { x: 0, y: 0 };\n const radius = type === 'angle' ? config?.radius ?? Math.min(groupSize.width, groupSize.height) / 2 : null;\n const center = type === 'angle' ? config?.center ?? { x: groupSize.width / 2, y: groupSize.height / 2 } : null;\n\n let current = 0;\n if (isDiscrete(scale.type)) {\n if (type === 'x') {\n current = scale.scale(scale.invert(point.x));\n } else if (type === 'y') {\n current = scale.scale(scale.invert(point.y));\n } else if (type === 'angle') {\n const angle = clampRadian(getAngleByPoint(center, point) + Math.PI * 2);\n current = scale.scale(scale.invert(angle));\n }\n } else if (isContinuous(scale.type)) {\n if (type === 'x') {\n current = point.x;\n } else if (type === 'y') {\n current = point.y;\n } else if (type === 'angle') {\n current = getAngleByPoint(center, point);\n }\n }\n current += offset;\n switch (type) {\n case 'x':\n start.x = current;\n start.y = 0;\n end.x = current;\n end.y = groupSize.height;\n break;\n case 'y':\n start.x = 0;\n start.y = current;\n end.x = groupSize.width;\n end.y = current;\n break;\n case 'angle':\n start.x = center.x;\n start.y = center.y;\n end.x = center.x + radius * Math.cos(current);\n end.y = center.y + radius * Math.sin(current);\n break;\n }\n return { start, end };\n};\n\nconst computeRadiusOfTangential = (\n point: IPointLike,\n scale: IBaseScale,\n type: CrosshairType,\n groupSize: { width: number; height: number },\n config: any,\n addition?:\n | RecursivePartial<PolygonCrosshairAttrs>\n | RecursivePartial<CircleCrosshairAttrs>\n | RecursivePartial<SectorCrosshairAttrs>\n) => {\n const center = addition?.center ?? config?.center ?? { x: groupSize.width / 2, y: groupSize.height / 2 };\n let currentRadius = 0;\n\n if (isDiscrete(scale.type)) {\n const offset = scale.type === 'band' ? (scale as IBandLikeScale).bandwidth() / 2 : 0;\n const radius = Math.sqrt((point.x - center.x) ** 2 + (point.y - center.y) ** 2);\n currentRadius = scale.scale(scale.invert(radius)) + offset;\n } else if (isContinuous(scale.type)) {\n const maxRadius = config?.radius ?? Math.min(groupSize.width, groupSize.height) / 2;\n currentRadius = Math.min(maxRadius, Math.sqrt((point.x - center.x) ** 2 + (point.y - center.y) ** 2));\n }\n\n return { radius: currentRadius, center };\n};\n\nexport const generateLineCrosshairAttributes = (\n point: IPointLike,\n scale: IBaseScale,\n type: CrosshairType,\n groupSize: { width: number; height: number },\n config: any,\n theme?: ITheme,\n addition?: RecursivePartial<LineCrosshairAttrs> & any\n): LineCrosshairAttrs => {\n const crosshairTheme = theme?.components?.lineCrosshair;\n const offset = scale.type === 'band' ? (scale as IBandLikeScale).bandwidth() / 2 : 0;\n const points = computeCrosshairStartEnd(\n point,\n scale,\n type,\n groupSize,\n {\n radius: addition?.radius ?? config?.radius,\n center: addition?.center ?? config?.center\n },\n offset\n );\n return merge({}, crosshairTheme, points, addition ?? {});\n};\n\nexport const generateRectCrosshairAttributes = (\n point: IPointLike,\n scale: IBaseScale,\n type: CrosshairType,\n groupSize: { width: number; height: number },\n config: any,\n theme?: ITheme,\n addition?: RecursivePartial<RectCrosshairAttrs>\n): RectCrosshairAttrs => {\n const crosshairTheme = theme?.components?.rectCrosshair;\n const defaultSize = scale.type === 'band' || scale.type === 'point' ? (scale as IBandLikeScale).step() : undefined;\n const customRectStyle = addition?.rectStyle;\n const size =\n defaultSize ??\n (type === 'y'\n ? customRectStyle?.width ?? crosshairTheme.rectStyle.width\n : customRectStyle?.height ?? crosshairTheme.rectStyle.height);\n const points = computeCrosshairStartEnd(point, scale, type, groupSize, config, scale.type === 'band' ? 0 : -size / 2);\n const rectStyle: Partial<IRectGraphicAttribute> = {};\n if (type === 'x') {\n rectStyle.width = size;\n } else {\n rectStyle.height = size;\n }\n const attribute = merge(\n {},\n crosshairTheme,\n {\n start: points.start,\n end: points.end,\n rectStyle\n },\n addition ?? {}\n );\n if (type === 'x') {\n attribute.rectStyle.height = attribute.end.y - attribute.start.y;\n } else {\n attribute.rectStyle.width = attribute.end.x - attribute.start.x;\n }\n return attribute;\n};\n\nexport const generateRingCrosshairAttributes = (\n point: IPointLike,\n scale: IBaseScale,\n type: CrosshairType,\n groupSize: { width: number; height: number },\n config: any,\n theme?: ITheme,\n addition?: RecursivePartial<SectorCrosshairAttrs>\n): SectorCrosshairAttrs => {\n const crosshairTheme = theme?.components?.circleCrosshair;\n const { center, radius } = computeRadiusOfTangential(point, scale, type, groupSize, config, addition);\n\n const startAngle = crosshairTheme.startAngle;\n const endAngle = crosshairTheme.endAngle;\n const deltaRadius = scale.type === 'band' || scale.type === 'point' ? (scale as IBandLikeScale).step() : 0;\n\n return merge(\n {},\n crosshairTheme,\n { center, innerRadius: radius - deltaRadius / 2, radius: radius + deltaRadius / 2, startAngle, endAngle },\n addition ?? {}\n );\n};\n\nexport const generateSectorCrosshairAttributes = (\n point: IPointLike,\n scale: IBaseScale,\n type: CrosshairType,\n groupSize: { width: number; height: number },\n config: any,\n theme?: ITheme,\n addition?: RecursivePartial<SectorCrosshairAttrs>\n): SectorCrosshairAttrs => {\n const crosshairTheme = theme?.components?.sectorCrosshair;\n const radius = addition?.radius ?? config?.radius ?? Math.min(groupSize.width, groupSize.height) / 2;\n const center = (addition?.center ??\n config?.center ?? { x: groupSize.width / 2, y: groupSize.height / 2 }) as IPointLike;\n const defaultAngle = crosshairTheme.endAngle - crosshairTheme.startAngle;\n const angle = scale.type === 'band' || scale.type === 'point' ? (scale as IBandLikeScale).step() : defaultAngle;\n let currentAngle = 0;\n if (isDiscrete(scale.type)) {\n const angle = clampRadian(getAngleByPoint(center, point) + Math.PI * 2);\n currentAngle =\n scale.scale(scale.invert(angle)) + (scale.type === 'band' ? (scale as IBandLikeScale).bandwidth() / 2 : 0);\n } else if (isContinuous(scale.type)) {\n currentAngle = getAngleByPoint(center, point);\n }\n const startAngle = currentAngle - angle / 2;\n const endAngle = currentAngle + angle / 2;\n return merge({}, crosshairTheme, { center, radius, startAngle, endAngle }, addition ?? {});\n};\n\nexport const generateCircleCrosshairAttributes = (\n point: IPointLike,\n scale: IBaseScale,\n type: CrosshairType,\n groupSize: { width: number; height: number },\n config: any,\n theme?: ITheme,\n addition?: RecursivePartial<CircleCrosshairAttrs>\n): CircleCrosshairAttrs => {\n const crosshairTheme = theme?.components?.circleCrosshair;\n const { center, radius } = computeRadiusOfTangential(point, scale, type, groupSize, config, addition);\n\n const startAngle = crosshairTheme.startAngle;\n const endAngle = crosshairTheme.endAngle;\n\n return merge({}, crosshairTheme, { center, radius: radius, startAngle, endAngle }, addition ?? {});\n};\n\nexport const generatePolygonCrosshairAttributes = (\n point: IPointLike,\n scale: IBaseScale,\n type: CrosshairType,\n groupSize: { width: number; height: number },\n config: any,\n theme?: ITheme,\n addition?: RecursivePartial<PolygonCrosshairAttrs>\n): PolygonCrosshairAttrs => {\n const crosshairTheme = theme?.components?.circleCrosshair;\n const { center, radius } = computeRadiusOfTangential(point, scale, type, groupSize, config, addition);\n\n const startAngle = crosshairTheme.startAngle;\n const endAngle = crosshairTheme.endAngle;\n return merge({}, crosshairTheme, { center, radius: radius, startAngle, endAngle }, addition ?? {});\n};\n\nexport class Crosshair extends BaseInteraction<CrosshairOptions> {\n static type: string = 'crosshair';\n type: string = Crosshair.type;\n options: CrosshairOptions;\n\n static defaultOptions: Omit<CrosshairOptions, 'target'> = {\n trigger: 'pointermove',\n triggerOff: 'pointerleave',\n crosshairType: 'x',\n crosshairShape: 'line'\n };\n\n protected _crosshairComponent?: CrosshairComponent;\n protected _crosshairComponentType?: keyof typeof CrosshairEnum;\n protected _container: IGroupMark;\n\n constructor(view: IView, options?: CrosshairOptions) {\n super(view, options);\n this.options = Object.assign({}, Crosshair.defaultOptions, options);\n this._container = (view.getMarksBySelector(this.options.container)?.[0] as IGroupMark) ?? view.rootMark;\n }\n\n protected getEvents() {\n return [\n {\n type: this.options.trigger,\n handler: this.handleCrosshairShow\n },\n {\n type: this.options.triggerOff,\n handler: this.handleCrosshairHide\n }\n ];\n }\n\n protected handleCrosshairShow = (event: InteractionEvent) => {\n if (!this._crosshairComponent) {\n return;\n }\n const groupGraphicItem = this._container.getGroupGraphicItem();\n // FIXME: waiting for vRender to add transformed position to event\n const point = { x: 0, y: 0 };\n const globalTransMatrix = groupGraphicItem.globalTransMatrix;\n const containerPoint = { x: globalTransMatrix.e, y: globalTransMatrix.f };\n globalTransMatrix.transformPoint(event.canvas, point);\n\n if (\n point.x < 0 ||\n point.x > groupGraphicItem.attribute.width ||\n point.y < 0 ||\n point.y > groupGraphicItem.attribute.height\n ) {\n this._crosshairComponent.hideAll();\n return;\n }\n\n const crosshairType = this.options.crosshairType ?? 'x';\n const groupSize = { width: groupGraphicItem.attribute.width, height: groupGraphicItem.attribute.height };\n const scaleGrammar = isString(this.options.scale) ? this.view.getScaleById(this.options.scale) : this.options.scale;\n const scale = scaleGrammar.getScale();\n const config = { center: this.options.center, radius: this.options.radius };\n const theme = this.view.getCurrentTheme();\n const addition = invokeFunctionType(this.options.attributes, this.parameters(), {}, {}) as any;\n\n let attributes: any = {};\n switch (this.getCrosshairComponentType()) {\n case CrosshairEnum.lineCrosshair:\n attributes = generateLineCrosshairAttributes(point, scale, crosshairType, groupSize, config, theme, addition);\n break;\n case CrosshairEnum.rectCrosshair:\n attributes = generateRectCrosshairAttributes(point, scale, crosshairType, groupSize, config, theme, addition);\n break;\n case CrosshairEnum.sectorCrosshair:\n attributes = generateSectorCrosshairAttributes(point, scale, crosshairType, groupSize, config, theme, addition);\n break;\n case CrosshairEnum.circleCrosshair:\n attributes = generateCircleCrosshairAttributes(point, scale, crosshairType, groupSize, config, theme, addition);\n break;\n case CrosshairEnum.polygonCrosshair:\n attributes = generatePolygonCrosshairAttributes(\n point,\n scale,\n crosshairType,\n groupSize,\n config,\n theme,\n addition\n );\n break;\n case CrosshairEnum.ringCrosshair:\n attributes = generateRingCrosshairAttributes(point, scale, crosshairType, groupSize, config, theme, addition);\n break;\n }\n // Hack: waiting for component to fix\n if (this.getCrosshairComponentType() !== CrosshairEnum.circleCrosshair) {\n attributes.x = containerPoint.x;\n attributes.y = containerPoint.y;\n }\n this._crosshairComponent.showAll();\n this._crosshairComponent.setAttributes(attributes);\n };\n\n protected handleCrosshairHide = () => {\n if (this._crosshairComponent) {\n this._crosshairComponent.hideAll();\n }\n };\n\n protected getCrosshairComponentType() {\n if (this._crosshairComponentType) {\n return this._crosshairComponentType;\n }\n const shape = this.options.crosshairShape ?? 'line';\n const type = this.options.crosshairType ?? 'x';\n if (shape === 'rect') {\n if (type === 'angle') {\n this._crosshairComponentType = CrosshairEnum.sectorCrosshair;\n } else if (type === 'radius') {\n this._crosshairComponentType = CrosshairEnum.ringCrosshair;\n } else if (type === 'radius-polygon') {\n this._crosshairComponentType = CrosshairEnum.polygonCrosshair;\n } else {\n this._crosshairComponentType = CrosshairEnum.rectCrosshair;\n }\n } else {\n if (type === 'radius') {\n this._crosshairComponentType = CrosshairEnum.circleCrosshair;\n } else if (type === 'radius-polygon') {\n this._crosshairComponentType = CrosshairEnum.polygonCrosshair;\n } else {\n this._crosshairComponentType = CrosshairEnum.lineCrosshair;\n }\n }\n return this._crosshairComponentType;\n }\n\n protected getDefaultCrosshairAttribute(): any {\n const type = this.options.crosshairType ?? 'x';\n if (type === 'radius' || type === 'radius-polygon') {\n return { center: { x: 0, y: 0 }, zIndex: -1 };\n }\n return { start: { x: 0, y: 0 }, end: { x: 0, y: 0 }, zIndex: -1 };\n }\n\n bind(): void {\n super.bind();\n\n const stage = this.view.renderer.stage();\n if (this._crosshairComponent || !stage) {\n return;\n }\n\n switch (this.getCrosshairComponentType()) {\n case CrosshairEnum.lineCrosshair:\n this._crosshairComponent = new LineCrosshair(this.getDefaultCrosshairAttribute());\n break;\n case CrosshairEnum.rectCrosshair:\n this._crosshairComponent = new RectCrosshair(this.getDefaultCrosshairAttribute());\n break;\n case CrosshairEnum.sectorCrosshair:\n this._crosshairComponent = new SectorCrosshair(this.getDefaultCrosshairAttribute());\n break;\n case CrosshairEnum.circleCrosshair:\n this._crosshairComponent = new CircleCrosshair(this.getDefaultCrosshairAttribute());\n break;\n case CrosshairEnum.polygonCrosshair:\n this._crosshairComponent = new PolygonCrosshair(this.getDefaultCrosshairAttribute());\n break;\n case CrosshairEnum.ringCrosshair:\n this._crosshairComponent = new SectorCrosshair(this.getDefaultCrosshairAttribute());\n break;\n }\n (stage.defaultLayer as any).appendChild(this._crosshairComponent);\n }\n\n unbind(): void {\n super.unbind();\n\n if (this._crosshairComponent) {\n this._crosshairComponent.release();\n this._crosshairComponent = null;\n }\n }\n}\n"]}
|
|
@@ -33,6 +33,7 @@ class DimensionTooltip extends base_tooltip_1.BaseTooltip {
|
|
|
33
33
|
super(view, options), this.type = DimensionTooltip.type, this._avoidMarks = [],
|
|
34
34
|
this._tooltipDataFilter = null, this.handleTooltipShow = (0, vutils_1.throttle)((event => {
|
|
35
35
|
var _a, _b, _c;
|
|
36
|
+
if (!this._tooltipComponent) return;
|
|
36
37
|
const scale = ((0, vutils_1.isString)(this.options.scale) ? this.view.getScaleById(this.options.scale) : this.options.scale).getScale(), groupGraphicItem = this._container.getGroupGraphicItem(), point = {
|
|
37
38
|
x: 0,
|
|
38
39
|
y: 0
|
|
@@ -73,7 +74,7 @@ class DimensionTooltip extends base_tooltip_1.BaseTooltip {
|
|
|
73
74
|
base_tooltip_2.generateTooltipAttributes)(point, title, content, bounds, theme, addition);
|
|
74
75
|
this._tooltipComponent.setAttributes(attributes);
|
|
75
76
|
}), 10), this.handleTooltipHide = event => {
|
|
76
|
-
this._tooltipComponent.hideAll();
|
|
77
|
+
this._tooltipComponent && this._tooltipComponent.hideAll();
|
|
77
78
|
}, this.options = Object.assign({}, DimensionTooltip.defaultOptions, options), this._marks = view.getMarksBySelector(this.options.selector),
|
|
78
79
|
this._avoidMarks = null !== (_a = view.getMarksBySelector(this.options.avoidMark)) && void 0 !== _a ? _a : [],
|
|
79
80
|
this._container = null !== (_c = null === (_b = view.getMarksBySelector(this.options.container)) || void 0 === _b ? void 0 : _b[0]) && void 0 !== _c ? _c : view.rootMark;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../src/interactions/dimension-tooltip.ts"],"names":[],"mappings":"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","file":"dimension-tooltip.js","sourcesContent":["import type { IPointLike } from '@visactor/vutils';\n// eslint-disable-next-line no-duplicate-imports\nimport { AABBBounds, array, getAngleByPoint, isString, throttle } from '@visactor/vutils';\nimport type { DimensionTooltipOptions, IGroupMark, IMark, IView, TooltipType } from '../types';\nimport { BaseTooltip } from './base-tooltip';\n// eslint-disable-next-line no-duplicate-imports\nimport { generateTooltipAttributes } from './base-tooltip';\nimport { BridgeElementKey } from '../graph/constants';\nimport type { IBaseScale } from '@visactor/vscale';\nimport { invokeFunctionType } from '../parse/util';\n\nconst isEqualTooltipDatum = (current: any[], previous: any[]) => {\n const currentDatum = array(current);\n const previousDatum = array(previous);\n if (currentDatum.length !== previousDatum.length) {\n return false;\n }\n return (\n currentDatum.every(datum => previousDatum.includes(datum)) &&\n previousDatum.every(datum => currentDatum.includes(datum))\n );\n};\n\nconst computeTooltipFilterValue = (\n point: IPointLike,\n scale: IBaseScale,\n type: TooltipType,\n groupSize: { width: number; height: number },\n tooltipCenter?: IPointLike\n) => {\n if (type === 'x') {\n return scale.invert(point.x);\n }\n if (type === 'y') {\n return scale.invert(point.y);\n }\n if (type === 'radius') {\n const center = tooltipCenter ?? { x: groupSize.width / 2, y: groupSize.height / 2 };\n const radius = Math.sqrt((center.x - point.x) ** 2 + (center.y - point.y) ** 2);\n return scale.invert(radius);\n }\n if (type === 'angle') {\n const center = tooltipCenter ?? { x: groupSize.width / 2, y: groupSize.height / 2 };\n const angle = getAngleByPoint(center, point);\n return scale.invert(angle < 0 ? angle + Math.PI * 2 : angle);\n }\n return scale.invert(point.x);\n};\n\nexport class DimensionTooltip extends BaseTooltip<DimensionTooltipOptions> {\n static type: string = 'dimension-tooltip';\n type: string = DimensionTooltip.type;\n\n static defaultOptions: Omit<DimensionTooltipOptions, 'target'> = {\n trigger: 'pointermove',\n triggerOff: 'pointerleave'\n };\n protected _avoidMarks: IMark[] = [];\n protected _lastDatum: any;\n protected _tooltipDataFilter: ((datum: any, filterValue: any[]) => boolean) | null = null;\n protected _container: IGroupMark;\n\n constructor(view: IView, options?: DimensionTooltipOptions) {\n super(view, options);\n this.options = Object.assign({}, DimensionTooltip.defaultOptions, options);\n this._marks = view.getMarksBySelector(this.options.selector);\n this._avoidMarks = view.getMarksBySelector(this.options.avoidMark) ?? [];\n this._container = (view.getMarksBySelector(this.options.container)?.[0] as IGroupMark) ?? view.rootMark;\n }\n\n protected getEvents() {\n const filter = this.options.target.filter;\n\n this._tooltipDataFilter = isString(filter)\n ? (datum: any, filterValue: any[]) => filterValue === datum[filter]\n : filter;\n\n return [\n { type: this.options.trigger, handler: this.handleTooltipShow },\n { type: this.options.triggerOff, handler: this.handleTooltipHide }\n ];\n }\n\n protected handleTooltipShow = throttle((event: any) => {\n const scaleGrammar = isString(this.options.scale) ? this.view.getScaleById(this.options.scale) : this.options.scale;\n const scale = scaleGrammar.getScale();\n const groupGraphicItem = this._container.getGroupGraphicItem();\n // FIXME: waiting for vRender to add transformed position to event\n const point = { x: 0, y: 0 };\n groupGraphicItem.globalTransMatrix.transformPoint(event.canvas, point);\n const groupSize = { width: groupGraphicItem.attribute.width, height: groupGraphicItem.attribute.height };\n\n // if pointer is not within the area of group, hide tooltip\n if (\n point.x < 0 ||\n point.x > groupGraphicItem.attribute.width ||\n point.y < 0 ||\n point.y > groupGraphicItem.attribute.height\n ) {\n this._tooltipComponent.hideAll();\n return;\n }\n // if pointer is hovered on the avoided marks, hide tooltip\n const eventTargetMark = event.target?.[BridgeElementKey]?.mark;\n if (this._avoidMarks.includes(eventTargetMark)) {\n this._tooltipComponent.hideAll();\n return;\n }\n\n const target = this.options.target?.data;\n const lastDataGrammar = !target ? null : isString(target) ? this.view.getDataById(target) : target;\n const data = lastDataGrammar ? lastDataGrammar.getValue() : [];\n\n const filterValue = computeTooltipFilterValue(\n point,\n scale,\n this.options.tooltipType,\n groupSize,\n this.options.center\n );\n const tooltipDatum = this._tooltipDataFilter\n ? data.filter(datum => this._tooltipDataFilter(datum, filterValue))\n : [];\n\n this._tooltipComponent.showAll();\n if (isEqualTooltipDatum(tooltipDatum, this._lastDatum)) {\n // only update pointer when element is not changed\n this._tooltipComponent.setAttributes({ pointerX: point.x, pointerY: point.y } as any);\n return;\n }\n this._lastDatum = tooltipDatum;\n\n // compute tooltip bounds\n const boundsStart = { x: 0, y: 0 };\n groupGraphicItem.globalTransMatrix.transformPoint({ x: 0, y: 0 }, boundsStart);\n const boundsEnd = { x: 0, y: 0 };\n groupGraphicItem.globalTransMatrix.transformPoint(\n {\n x: this.view.getSignalById('width').getValue() as number,\n y: this.view.getSignalById('height').getValue() as number\n },\n boundsEnd\n );\n const bounds = new AABBBounds().set(boundsStart.x, boundsStart.y, boundsEnd.x, boundsEnd.y);\n const { title, content } = this._computeTitleContent(tooltipDatum);\n const theme = this.view.getCurrentTheme();\n const addition = invokeFunctionType(this.options.attributes, this.parameters(), {}) as any;\n const attributes = generateTooltipAttributes(point, title, content, bounds, theme, addition);\n this._tooltipComponent.setAttributes(attributes);\n }, 10);\n\n protected handleTooltipHide = (event: any) => {\n this._tooltipComponent.hideAll();\n };\n}\n"]}
|
|
1
|
+
{"version":3,"sources":["../src/interactions/dimension-tooltip.ts"],"names":[],"mappings":";;;AAEA,6CAA0F;AAE1F,iDAA6C;AAE7C,iDAA2D;AAC3D,kDAAsD;AAEtD,wCAAmD;AAEnD,MAAM,mBAAmB,GAAG,CAAC,OAAc,EAAE,QAAe,EAAE,EAAE;IAC9D,MAAM,YAAY,GAAG,IAAA,cAAK,EAAC,OAAO,CAAC,CAAC;IACpC,MAAM,aAAa,GAAG,IAAA,cAAK,EAAC,QAAQ,CAAC,CAAC;IACtC,IAAI,YAAY,CAAC,MAAM,KAAK,aAAa,CAAC,MAAM,EAAE;QAChD,OAAO,KAAK,CAAC;KACd;IACD,OAAO,CACL,YAAY,CAAC,KAAK,CAAC,KAAK,CAAC,EAAE,CAAC,aAAa,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC;QAC1D,aAAa,CAAC,KAAK,CAAC,KAAK,CAAC,EAAE,CAAC,YAAY,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC,CAC3D,CAAC;AACJ,CAAC,CAAC;AAEF,MAAM,yBAAyB,GAAG,CAChC,KAAiB,EACjB,KAAiB,EACjB,IAAiB,EACjB,SAA4C,EAC5C,aAA0B,EAC1B,EAAE;IACF,IAAI,IAAI,KAAK,GAAG,EAAE;QAChB,OAAO,KAAK,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;KAC9B;IACD,IAAI,IAAI,KAAK,GAAG,EAAE;QAChB,OAAO,KAAK,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;KAC9B;IACD,IAAI,IAAI,KAAK,QAAQ,EAAE;QACrB,MAAM,MAAM,GAAG,aAAa,aAAb,aAAa,cAAb,aAAa,GAAI,EAAE,CAAC,EAAE,SAAS,CAAC,KAAK,GAAG,CAAC,EAAE,CAAC,EAAE,SAAS,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;QACpF,MAAM,MAAM,GAAG,IAAI,CAAC,IAAI,CAAC,CAAC,MAAM,CAAC,CAAC,GAAG,KAAK,CAAC,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC,GAAG,KAAK,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC;QAChF,OAAO,KAAK,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC;KAC7B;IACD,IAAI,IAAI,KAAK,OAAO,EAAE;QACpB,MAAM,MAAM,GAAG,aAAa,aAAb,aAAa,cAAb,aAAa,GAAI,EAAE,CAAC,EAAE,SAAS,CAAC,KAAK,GAAG,CAAC,EAAE,CAAC,EAAE,SAAS,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;QACpF,MAAM,KAAK,GAAG,IAAA,wBAAe,EAAC,MAAM,EAAE,KAAK,CAAC,CAAC;QAC7C,OAAO,KAAK,CAAC,MAAM,CAAC,KAAK,GAAG,CAAC,CAAC,CAAC,CAAC,KAAK,GAAG,IAAI,CAAC,EAAE,GAAG,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC;KAC9D;IACD,OAAO,KAAK,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;AAC/B,CAAC,CAAC;AAEF,MAAa,gBAAiB,SAAQ,0BAAoC;IAaxE,YAAY,IAAW,EAAE,OAAiC;;QACxD,KAAK,CAAC,IAAI,EAAE,OAAO,CAAC,CAAC;QAZvB,SAAI,GAAW,gBAAgB,CAAC,IAAI,CAAC;QAM3B,gBAAW,GAAY,EAAE,CAAC;QAE1B,uBAAkB,GAAyD,IAAI,CAAC;QAwBhF,sBAAiB,GAAG,IAAA,iBAAQ,EAAC,CAAC,KAAU,EAAE,EAAE;;YACpD,IAAI,CAAC,IAAI,CAAC,iBAAiB,EAAE;gBAC3B,OAAO;aACR;YAED,MAAM,YAAY,GAAG,IAAA,iBAAQ,EAAC,IAAI,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,OAAO,CAAC,KAAK,CAAC;YACpH,MAAM,KAAK,GAAG,YAAY,CAAC,QAAQ,EAAE,CAAC;YACtC,MAAM,gBAAgB,GAAG,IAAI,CAAC,UAAU,CAAC,mBAAmB,EAAE,CAAC;YAE/D,MAAM,KAAK,GAAG,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC;YAC7B,gBAAgB,CAAC,iBAAiB,CAAC,cAAc,CAAC,KAAK,CAAC,MAAM,EAAE,KAAK,CAAC,CAAC;YACvE,MAAM,SAAS,GAAG,EAAE,KAAK,EAAE,gBAAgB,CAAC,SAAS,CAAC,KAAK,EAAE,MAAM,EAAE,gBAAgB,CAAC,SAAS,CAAC,MAAM,EAAE,CAAC;YAGzG,IACE,KAAK,CAAC,CAAC,GAAG,CAAC;gBACX,KAAK,CAAC,CAAC,GAAG,gBAAgB,CAAC,SAAS,CAAC,KAAK;gBAC1C,KAAK,CAAC,CAAC,GAAG,CAAC;gBACX,KAAK,CAAC,CAAC,GAAG,gBAAgB,CAAC,SAAS,CAAC,MAAM,EAC3C;gBACA,IAAI,CAAC,iBAAiB,CAAC,OAAO,EAAE,CAAC;gBACjC,OAAO;aACR;YAED,MAAM,eAAe,GAAG,MAAA,MAAA,KAAK,CAAC,MAAM,0CAAG,4BAAgB,CAAC,0CAAE,IAAI,CAAC;YAC/D,IAAI,IAAI,CAAC,WAAW,CAAC,QAAQ,CAAC,eAAe,CAAC,EAAE;gBAC9C,IAAI,CAAC,iBAAiB,CAAC,OAAO,EAAE,CAAC;gBACjC,OAAO;aACR;YAED,MAAM,MAAM,GAAG,MAAA,IAAI,CAAC,OAAO,CAAC,MAAM,0CAAE,IAAI,CAAC;YACzC,MAAM,eAAe,GAAG,CAAC,MAAM,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,IAAA,iBAAQ,EAAC,MAAM,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,WAAW,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC;YACnG,MAAM,IAAI,GAAG,eAAe,CAAC,CAAC,CAAC,eAAe,CAAC,QAAQ,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;YAE/D,MAAM,WAAW,GAAG,yBAAyB,CAC3C,KAAK,EACL,KAAK,EACL,IAAI,CAAC,OAAO,CAAC,WAAW,EACxB,SAAS,EACT,IAAI,CAAC,OAAO,CAAC,MAAM,CACpB,CAAC;YACF,MAAM,YAAY,GAAG,IAAI,CAAC,kBAAkB;gBAC1C,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,EAAE,CAAC,IAAI,CAAC,kBAAkB,CAAC,KAAK,EAAE,WAAW,CAAC,CAAC;gBACnE,CAAC,CAAC,EAAE,CAAC;YAEP,IAAI,CAAC,iBAAiB,CAAC,OAAO,EAAE,CAAC;YACjC,IAAI,mBAAmB,CAAC,YAAY,EAAE,IAAI,CAAC,UAAU,CAAC,EAAE;gBAEtD,IAAI,CAAC,iBAAiB,CAAC,aAAa,CAAC,EAAE,QAAQ,EAAE,KAAK,CAAC,CAAC,EAAE,QAAQ,EAAE,KAAK,CAAC,CAAC,EAAS,CAAC,CAAC;gBACtF,OAAO;aACR;YACD,IAAI,CAAC,UAAU,GAAG,YAAY,CAAC;YAG/B,MAAM,WAAW,GAAG,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC;YACnC,gBAAgB,CAAC,iBAAiB,CAAC,cAAc,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,EAAE,WAAW,CAAC,CAAC;YAC/E,MAAM,SAAS,GAAG,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC;YACjC,gBAAgB,CAAC,iBAAiB,CAAC,cAAc,CAC/C;gBACE,CAAC,EAAE,IAAI,CAAC,IAAI,CAAC,aAAa,CAAC,OAAO,CAAC,CAAC,QAAQ,EAAY;gBACxD,CAAC,EAAE,IAAI,CAAC,IAAI,CAAC,aAAa,CAAC,QAAQ,CAAC,CAAC,QAAQ,EAAY;aAC1D,EACD,SAAS,CACV,CAAC;YACF,MAAM,MAAM,GAAG,IAAI,mBAAU,EAAE,CAAC,GAAG,CAAC,WAAW,CAAC,CAAC,EAAE,WAAW,CAAC,CAAC,EAAE,SAAS,CAAC,CAAC,EAAE,SAAS,CAAC,CAAC,CAAC,CAAC;YAC5F,MAAM,EAAE,KAAK,EAAE,OAAO,EAAE,GAAG,IAAI,CAAC,oBAAoB,CAAC,YAAY,CAAC,CAAC;YACnE,MAAM,KAAK,GAAG,IAAI,CAAC,IAAI,CAAC,eAAe,EAAE,CAAC;YAC1C,MAAM,QAAQ,GAAG,IAAA,yBAAkB,EAAC,IAAI,CAAC,OAAO,CAAC,UAAU,EAAE,IAAI,CAAC,UAAU,EAAE,EAAE,EAAE,CAAQ,CAAC;YAC3F,MAAM,UAAU,GAAG,IAAA,wCAAyB,EAAC,KAAK,EAAE,KAAK,EAAE,OAAO,EAAE,MAAM,EAAE,KAAK,EAAE,QAAQ,CAAC,CAAC;YAC7F,IAAI,CAAC,iBAAiB,CAAC,aAAa,CAAC,UAAU,CAAC,CAAC;QACnD,CAAC,EAAE,EAAE,CAAC,CAAC;QAEG,sBAAiB,GAAG,CAAC,KAAU,EAAE,EAAE;YAC3C,IAAI,IAAI,CAAC,iBAAiB,EAAE;gBAC1B,IAAI,CAAC,iBAAiB,CAAC,OAAO,EAAE,CAAC;aAClC;QACH,CAAC,CAAC;QA/FA,IAAI,CAAC,OAAO,GAAG,MAAM,CAAC,MAAM,CAAC,EAAE,EAAE,gBAAgB,CAAC,cAAc,EAAE,OAAO,CAAC,CAAC;QAC3E,IAAI,CAAC,MAAM,GAAG,IAAI,CAAC,kBAAkB,CAAC,IAAI,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAC;QAC7D,IAAI,CAAC,WAAW,GAAG,MAAA,IAAI,CAAC,kBAAkB,CAAC,IAAI,CAAC,OAAO,CAAC,SAAS,CAAC,mCAAI,EAAE,CAAC;QACzE,IAAI,CAAC,UAAU,GAAG,MAAC,MAAA,IAAI,CAAC,kBAAkB,CAAC,IAAI,CAAC,OAAO,CAAC,SAAS,CAAC,0CAAG,CAAC,CAAgB,mCAAI,IAAI,CAAC,QAAQ,CAAC;IAC1G,CAAC;IAES,SAAS;QACjB,MAAM,MAAM,GAAG,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC,MAAM,CAAC;QAE1C,IAAI,CAAC,kBAAkB,GAAG,IAAA,iBAAQ,EAAC,MAAM,CAAC;YACxC,CAAC,CAAC,CAAC,KAAU,EAAE,WAAkB,EAAE,EAAE,CAAC,WAAW,KAAK,KAAK,CAAC,MAAM,CAAC;YACnE,CAAC,CAAC,MAAM,CAAC;QAEX,OAAO;YACL,EAAE,IAAI,EAAE,IAAI,CAAC,OAAO,CAAC,OAAO,EAAE,OAAO,EAAE,IAAI,CAAC,iBAAiB,EAAE;YAC/D,EAAE,IAAI,EAAE,IAAI,CAAC,OAAO,CAAC,UAAU,EAAE,OAAO,EAAE,IAAI,CAAC,iBAAiB,EAAE;SACnE,CAAC;IACJ,CAAC;;AAhCH,4CA+GC;AA9GQ,qBAAI,GAAW,mBAAmB,CAAC;AAGnC,+BAAc,GAA4C;IAC/D,OAAO,EAAE,aAAa;IACtB,UAAU,EAAE,cAAc;CAC3B,CAAC","file":"dimension-tooltip.js","sourcesContent":["import type { IPointLike } from '@visactor/vutils';\n// eslint-disable-next-line no-duplicate-imports\nimport { AABBBounds, array, getAngleByPoint, isString, throttle } from '@visactor/vutils';\nimport type { DimensionTooltipOptions, IGroupMark, IMark, IView, TooltipType } from '../types';\nimport { BaseTooltip } from './base-tooltip';\n// eslint-disable-next-line no-duplicate-imports\nimport { generateTooltipAttributes } from './base-tooltip';\nimport { BridgeElementKey } from '../graph/constants';\nimport type { IBaseScale } from '@visactor/vscale';\nimport { invokeFunctionType } from '../parse/util';\n\nconst isEqualTooltipDatum = (current: any[], previous: any[]) => {\n const currentDatum = array(current);\n const previousDatum = array(previous);\n if (currentDatum.length !== previousDatum.length) {\n return false;\n }\n return (\n currentDatum.every(datum => previousDatum.includes(datum)) &&\n previousDatum.every(datum => currentDatum.includes(datum))\n );\n};\n\nconst computeTooltipFilterValue = (\n point: IPointLike,\n scale: IBaseScale,\n type: TooltipType,\n groupSize: { width: number; height: number },\n tooltipCenter?: IPointLike\n) => {\n if (type === 'x') {\n return scale.invert(point.x);\n }\n if (type === 'y') {\n return scale.invert(point.y);\n }\n if (type === 'radius') {\n const center = tooltipCenter ?? { x: groupSize.width / 2, y: groupSize.height / 2 };\n const radius = Math.sqrt((center.x - point.x) ** 2 + (center.y - point.y) ** 2);\n return scale.invert(radius);\n }\n if (type === 'angle') {\n const center = tooltipCenter ?? { x: groupSize.width / 2, y: groupSize.height / 2 };\n const angle = getAngleByPoint(center, point);\n return scale.invert(angle < 0 ? angle + Math.PI * 2 : angle);\n }\n return scale.invert(point.x);\n};\n\nexport class DimensionTooltip extends BaseTooltip<DimensionTooltipOptions> {\n static type: string = 'dimension-tooltip';\n type: string = DimensionTooltip.type;\n\n static defaultOptions: Omit<DimensionTooltipOptions, 'target'> = {\n trigger: 'pointermove',\n triggerOff: 'pointerleave'\n };\n protected _avoidMarks: IMark[] = [];\n protected _lastDatum: any;\n protected _tooltipDataFilter: ((datum: any, filterValue: any[]) => boolean) | null = null;\n protected _container: IGroupMark;\n\n constructor(view: IView, options?: DimensionTooltipOptions) {\n super(view, options);\n this.options = Object.assign({}, DimensionTooltip.defaultOptions, options);\n this._marks = view.getMarksBySelector(this.options.selector);\n this._avoidMarks = view.getMarksBySelector(this.options.avoidMark) ?? [];\n this._container = (view.getMarksBySelector(this.options.container)?.[0] as IGroupMark) ?? view.rootMark;\n }\n\n protected getEvents() {\n const filter = this.options.target.filter;\n\n this._tooltipDataFilter = isString(filter)\n ? (datum: any, filterValue: any[]) => filterValue === datum[filter]\n : filter;\n\n return [\n { type: this.options.trigger, handler: this.handleTooltipShow },\n { type: this.options.triggerOff, handler: this.handleTooltipHide }\n ];\n }\n\n protected handleTooltipShow = throttle((event: any) => {\n if (!this._tooltipComponent) {\n return;\n }\n\n const scaleGrammar = isString(this.options.scale) ? this.view.getScaleById(this.options.scale) : this.options.scale;\n const scale = scaleGrammar.getScale();\n const groupGraphicItem = this._container.getGroupGraphicItem();\n // FIXME: waiting for vRender to add transformed position to event\n const point = { x: 0, y: 0 };\n groupGraphicItem.globalTransMatrix.transformPoint(event.canvas, point);\n const groupSize = { width: groupGraphicItem.attribute.width, height: groupGraphicItem.attribute.height };\n\n // if pointer is not within the area of group, hide tooltip\n if (\n point.x < 0 ||\n point.x > groupGraphicItem.attribute.width ||\n point.y < 0 ||\n point.y > groupGraphicItem.attribute.height\n ) {\n this._tooltipComponent.hideAll();\n return;\n }\n // if pointer is hovered on the avoided marks, hide tooltip\n const eventTargetMark = event.target?.[BridgeElementKey]?.mark;\n if (this._avoidMarks.includes(eventTargetMark)) {\n this._tooltipComponent.hideAll();\n return;\n }\n\n const target = this.options.target?.data;\n const lastDataGrammar = !target ? null : isString(target) ? this.view.getDataById(target) : target;\n const data = lastDataGrammar ? lastDataGrammar.getValue() : [];\n\n const filterValue = computeTooltipFilterValue(\n point,\n scale,\n this.options.tooltipType,\n groupSize,\n this.options.center\n );\n const tooltipDatum = this._tooltipDataFilter\n ? data.filter(datum => this._tooltipDataFilter(datum, filterValue))\n : [];\n\n this._tooltipComponent.showAll();\n if (isEqualTooltipDatum(tooltipDatum, this._lastDatum)) {\n // only update pointer when element is not changed\n this._tooltipComponent.setAttributes({ pointerX: point.x, pointerY: point.y } as any);\n return;\n }\n this._lastDatum = tooltipDatum;\n\n // compute tooltip bounds\n const boundsStart = { x: 0, y: 0 };\n groupGraphicItem.globalTransMatrix.transformPoint({ x: 0, y: 0 }, boundsStart);\n const boundsEnd = { x: 0, y: 0 };\n groupGraphicItem.globalTransMatrix.transformPoint(\n {\n x: this.view.getSignalById('width').getValue() as number,\n y: this.view.getSignalById('height').getValue() as number\n },\n boundsEnd\n );\n const bounds = new AABBBounds().set(boundsStart.x, boundsStart.y, boundsEnd.x, boundsEnd.y);\n const { title, content } = this._computeTitleContent(tooltipDatum);\n const theme = this.view.getCurrentTheme();\n const addition = invokeFunctionType(this.options.attributes, this.parameters(), {}) as any;\n const attributes = generateTooltipAttributes(point, title, content, bounds, theme, addition);\n this._tooltipComponent.setAttributes(attributes);\n }, 10);\n\n protected handleTooltipHide = (event: any) => {\n if (this._tooltipComponent) {\n this._tooltipComponent.hideAll();\n }\n };\n}\n"]}
|
|
@@ -9,6 +9,7 @@ const vutils_1 = require("@visactor/vutils"), base_tooltip_1 = require("./base-t
|
|
|
9
9
|
class Tooltip extends base_tooltip_1.BaseTooltip {
|
|
10
10
|
constructor(view, options) {
|
|
11
11
|
super(view, options), this.type = Tooltip.type, this.handleTooltipShow = (0, vutils_1.throttle)((event => {
|
|
12
|
+
if (!this._tooltipComponent) return;
|
|
12
13
|
const element = event.element;
|
|
13
14
|
if (!this._marks.includes(null == element ? void 0 : element.mark)) return void this._tooltipComponent.hideAll();
|
|
14
15
|
this._tooltipComponent.showAll();
|
|
@@ -41,7 +42,7 @@ class Tooltip extends base_tooltip_1.BaseTooltip {
|
|
|
41
42
|
base_tooltip_1.generateTooltipAttributes)(point, title, content, bounds, theme, addition);
|
|
42
43
|
this._tooltipComponent.setAttributes(attributes);
|
|
43
44
|
}), 10), this.handleTooltipHide = event => {
|
|
44
|
-
this._tooltipComponent.hideAll();
|
|
45
|
+
this._tooltipComponent && this._tooltipComponent.hideAll();
|
|
45
46
|
}, this.options = Object.assign({}, Tooltip.defaultOptions, options);
|
|
46
47
|
}
|
|
47
48
|
getEvents() {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../src/interactions/tooltip.ts"],"names":[],"mappings":";;;AAAA,6CAAwD;AAExD,iDAAwE;AACxE,wCAAmD;AAEnD,MAAa,OAAQ,SAAQ,0BAA2B;IAUtD,YAAY,IAAW,EAAE,OAAwB;QAC/C,KAAK,CAAC,IAAI,EAAE,OAAO,CAAC,CAAC;QATvB,SAAI,GAAW,OAAO,CAAC,IAAI,CAAC;QAoBlB,sBAAiB,GAAG,IAAA,iBAAQ,EAAC,CAAC,KAAuB,EAAE,EAAE;YACjE,MAAM,OAAO,GAAG,KAAK,CAAC,OAAO,CAAC;YAC9B,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,OAAO,aAAP,OAAO,uBAAP,OAAO,CAAE,IAAI,CAAC,EAAE;gBACxC,IAAI,CAAC,iBAAiB,CAAC,OAAO,EAAE,CAAC;gBACjC,OAAO;aACR;YAED,IAAI,CAAC,iBAAiB,CAAC,OAAO,EAAE,CAAC;YAEjC,MAAM,gBAAgB,GAAG,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC,mBAAmB,EAAE,CAAC;YAElE,MAAM,KAAK,GAAG,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC;YAC7B,gBAAgB,CAAC,iBAAiB,CAAC,cAAc,CAAC,KAAK,CAAC,MAAM,EAAE,KAAK,CAAC,CAAC;YAEvE,IAAI,OAAO,KAAK,IAAI,CAAC,YAAY,EAAE;gBAEjC,IAAI,CAAC,iBAAiB,CAAC,aAAa,CAAC,EAAE,QAAQ,EAAE,KAAK,CAAC,CAAC,EAAE,QAAQ,EAAE,KAAK,CAAC,CAAC,EAAS,CAAC,CAAC;gBACtF,OAAO;aACR;YAED,MAAM,WAAW,GAAG,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC;YACnC,gBAAgB,CAAC,iBAAiB,CAAC,cAAc,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,EAAE,WAAW,CAAC,CAAC;YAC/E,MAAM,SAAS,GAAG,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC;YACjC,gBAAgB,CAAC,iBAAiB,CAAC,cAAc,CAC/C;gBACE,CAAC,EAAE,IAAI,CAAC,IAAI,CAAC,aAAa,CAAC,OAAO,CAAC,CAAC,QAAQ,EAAY;gBACxD,CAAC,EAAE,IAAI,CAAC,IAAI,CAAC,aAAa,CAAC,QAAQ,CAAC,CAAC,QAAQ,EAAY;aAC1D,EACD,SAAS,CACV,CAAC;YACF,MAAM,MAAM,GAAG,IAAI,mBAAU,EAAE,CAAC,GAAG,CAAC,WAAW,CAAC,CAAC,EAAE,WAAW,CAAC,CAAC,EAAE,SAAS,CAAC,CAAC,EAAE,SAAS,CAAC,CAAC,CAAC,CAAC;YAC5F,MAAM,EAAE,KAAK,EAAE,OAAO,EAAE,GAAG,IAAI,CAAC,oBAAoB,CAAC,OAAO,CAAC,QAAQ,EAAE,CAAC,CAAC;YACzE,MAAM,KAAK,GAAG,IAAI,CAAC,IAAI,CAAC,eAAe,EAAE,CAAC;YAC1C,MAAM,QAAQ,GAAG,IAAA,yBAAkB,EAAC,IAAI,CAAC,OAAO,CAAC,UAAU,EAAE,IAAI,CAAC,UAAU,EAAE,EAAE,OAAO,CAAC,QAAQ,EAAE,CAAQ,CAAC;YAC3G,MAAM,UAAU,GAAG,IAAA,wCAAyB,EAAC,KAAK,EAAE,KAAK,EAAE,OAAO,EAAE,MAAM,EAAE,KAAK,EAAE,QAAQ,CAAC,CAAC;YAC7F,IAAI,CAAC,iBAAiB,CAAC,aAAa,CAAC,UAAU,CAAC,CAAC;QACnD,CAAC,EAAE,EAAE,CAAuC,CAAC;QAEnC,sBAAiB,GAAG,CAAC,KAAU,EAAE,EAAE;YAC3C,IAAI,CAAC,iBAAiB,CAAC,OAAO,EAAE,CAAC;
|
|
1
|
+
{"version":3,"sources":["../src/interactions/tooltip.ts"],"names":[],"mappings":"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","file":"tooltip.js","sourcesContent":["import { AABBBounds, throttle } from '@visactor/vutils';\nimport type { IElement, IView, InteractionEvent, InteractionEventHandler, TooltipOptions } from '../types';\nimport { BaseTooltip, generateTooltipAttributes } from './base-tooltip';\nimport { invokeFunctionType } from '../parse/util';\n\nexport class Tooltip extends BaseTooltip<TooltipOptions> {\n static type: string = 'tooltip';\n type: string = Tooltip.type;\n\n static defaultOptions: Omit<TooltipOptions, 'target'> = {\n trigger: 'pointermove',\n triggerOff: 'pointerleave'\n };\n protected _lastElement: IElement;\n\n constructor(view: IView, options?: TooltipOptions) {\n super(view, options);\n this.options = Object.assign({}, Tooltip.defaultOptions, options);\n }\n\n protected getEvents() {\n return [\n { type: this.options.trigger, handler: this.handleTooltipShow },\n { type: this.options.triggerOff, handler: this.handleTooltipHide }\n ];\n }\n\n protected handleTooltipShow = throttle((event: InteractionEvent) => {\n if (!this._tooltipComponent) {\n return;\n }\n\n const element = event.element;\n if (!this._marks.includes(element?.mark)) {\n this._tooltipComponent.hideAll();\n return;\n }\n\n this._tooltipComponent.showAll();\n\n const groupGraphicItem = this.view.rootMark.getGroupGraphicItem();\n // FIXME: waiting for vRender to add transformed position to event\n const point = { x: 0, y: 0 };\n groupGraphicItem.globalTransMatrix.transformPoint(event.canvas, point);\n\n if (element === this._lastElement) {\n // only update pointer when element is not changed\n this._tooltipComponent.setAttributes({ pointerX: point.x, pointerY: point.y } as any);\n return;\n }\n\n const boundsStart = { x: 0, y: 0 };\n groupGraphicItem.globalTransMatrix.transformPoint({ x: 0, y: 0 }, boundsStart);\n const boundsEnd = { x: 0, y: 0 };\n groupGraphicItem.globalTransMatrix.transformPoint(\n {\n x: this.view.getSignalById('width').getValue() as number,\n y: this.view.getSignalById('height').getValue() as number\n },\n boundsEnd\n );\n const bounds = new AABBBounds().set(boundsStart.x, boundsStart.y, boundsEnd.x, boundsEnd.y);\n const { title, content } = this._computeTitleContent(element.getDatum());\n const theme = this.view.getCurrentTheme();\n const addition = invokeFunctionType(this.options.attributes, this.parameters(), element.getDatum()) as any;\n const attributes = generateTooltipAttributes(point, title, content, bounds, theme, addition);\n this._tooltipComponent.setAttributes(attributes);\n }, 10) as unknown as InteractionEventHandler;\n\n protected handleTooltipHide = (event: any) => {\n if (this._tooltipComponent) {\n this._tooltipComponent.hideAll();\n }\n };\n}\n"]}
|
|
@@ -4,17 +4,13 @@ Object.defineProperty(exports, "__esModule", {
|
|
|
4
4
|
value: !0
|
|
5
5
|
}), exports.Text = void 0;
|
|
6
6
|
|
|
7
|
-
const enums_1 = require("../graph/enums"), mark_1 = require("../view/mark"), graphic_1 = require("../graph/util/graphic")
|
|
7
|
+
const enums_1 = require("../graph/enums"), mark_1 = require("../view/mark"), graphic_1 = require("../graph/util/graphic");
|
|
8
8
|
|
|
9
9
|
class Text extends mark_1.Mark {
|
|
10
10
|
addGraphicItem(initAttrs, groupKey) {
|
|
11
|
-
const
|
|
11
|
+
const originalAttrs = initAttrs && initAttrs.limitAttrs, isRich = originalAttrs && ("rich" === originalAttrs.textType || originalAttrs.text && "rich" === originalAttrs.text.type), graphicItem = (0,
|
|
12
12
|
graphic_1.createGraphicItem)(this, isRich ? enums_1.GrammarMarkType.richtext : enums_1.GrammarMarkType.text, initAttrs);
|
|
13
|
-
return
|
|
14
|
-
}
|
|
15
|
-
getAttributeTransforms() {
|
|
16
|
-
var _a;
|
|
17
|
-
return "richtext" === (null === (_a = this.getGroupGraphicItem()) || void 0 === _a ? void 0 : _a.type) ? transform_1.transformsByType.richtext : transform_1.transformsByType.text;
|
|
13
|
+
return super.addGraphicItem(initAttrs, groupKey, graphicItem);
|
|
18
14
|
}
|
|
19
15
|
release() {
|
|
20
16
|
super.release();
|