@visactor/vgrammar-core 0.15.0-alpha.0 → 0.15.0-beta.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (75) hide show
  1. package/cjs/graph/attributes/transform.js +7 -3
  2. package/cjs/graph/attributes/transform.js.map +1 -1
  3. package/cjs/index.d.ts +1 -1
  4. package/cjs/index.js +1 -1
  5. package/cjs/index.js.map +1 -1
  6. package/cjs/interactions/base.js.map +1 -1
  7. package/cjs/interactions/element-active-by-legend.d.ts +2 -1
  8. package/cjs/interactions/element-active-by-legend.js +5 -2
  9. package/cjs/interactions/element-active-by-legend.js.map +1 -1
  10. package/cjs/interactions/element-active.d.ts +3 -2
  11. package/cjs/interactions/element-active.js +4 -2
  12. package/cjs/interactions/element-active.js.map +1 -1
  13. package/cjs/interactions/element-highlight-by-group.d.ts +2 -2
  14. package/cjs/interactions/element-highlight-by-group.js +4 -3
  15. package/cjs/interactions/element-highlight-by-group.js.map +1 -1
  16. package/cjs/interactions/element-highlight-by-key.d.ts +2 -2
  17. package/cjs/interactions/element-highlight-by-key.js +3 -17
  18. package/cjs/interactions/element-highlight-by-key.js.map +1 -1
  19. package/cjs/interactions/element-highlight-by-legend.d.ts +2 -1
  20. package/cjs/interactions/element-highlight-by-legend.js +6 -3
  21. package/cjs/interactions/element-highlight-by-legend.js.map +1 -1
  22. package/cjs/interactions/element-highlight-by-name.d.ts +2 -1
  23. package/cjs/interactions/element-highlight-by-name.js +5 -2
  24. package/cjs/interactions/element-highlight-by-name.js.map +1 -1
  25. package/cjs/interactions/element-highlight.d.ts +1 -1
  26. package/cjs/interactions/element-highlight.js +9 -6
  27. package/cjs/interactions/element-highlight.js.map +1 -1
  28. package/cjs/interactions/element-select.d.ts +1 -1
  29. package/cjs/interactions/element-select.js +8 -8
  30. package/cjs/interactions/element-select.js.map +1 -1
  31. package/cjs/semantic-marks/text.js.map +1 -1
  32. package/cjs/types/mark.d.ts +1 -0
  33. package/cjs/types/mark.js.map +1 -1
  34. package/cjs/types/view.d.ts +2 -1
  35. package/cjs/types/view.js.map +1 -1
  36. package/cjs/view/mark.js +7 -3
  37. package/cjs/view/mark.js.map +1 -1
  38. package/es/graph/attributes/transform.js +7 -3
  39. package/es/graph/attributes/transform.js.map +1 -1
  40. package/es/index.d.ts +1 -1
  41. package/es/index.js +1 -1
  42. package/es/index.js.map +1 -1
  43. package/es/interactions/base.js.map +1 -1
  44. package/es/interactions/element-active-by-legend.d.ts +2 -1
  45. package/es/interactions/element-active-by-legend.js +5 -2
  46. package/es/interactions/element-active-by-legend.js.map +1 -1
  47. package/es/interactions/element-active.d.ts +3 -2
  48. package/es/interactions/element-active.js +4 -2
  49. package/es/interactions/element-active.js.map +1 -1
  50. package/es/interactions/element-highlight-by-group.d.ts +2 -2
  51. package/es/interactions/element-highlight-by-group.js +4 -3
  52. package/es/interactions/element-highlight-by-group.js.map +1 -1
  53. package/es/interactions/element-highlight-by-key.d.ts +2 -2
  54. package/es/interactions/element-highlight-by-key.js +3 -17
  55. package/es/interactions/element-highlight-by-key.js.map +1 -1
  56. package/es/interactions/element-highlight-by-legend.d.ts +2 -1
  57. package/es/interactions/element-highlight-by-legend.js +6 -3
  58. package/es/interactions/element-highlight-by-legend.js.map +1 -1
  59. package/es/interactions/element-highlight-by-name.d.ts +2 -1
  60. package/es/interactions/element-highlight-by-name.js +5 -2
  61. package/es/interactions/element-highlight-by-name.js.map +1 -1
  62. package/es/interactions/element-highlight.d.ts +1 -1
  63. package/es/interactions/element-highlight.js +9 -6
  64. package/es/interactions/element-highlight.js.map +1 -1
  65. package/es/interactions/element-select.d.ts +1 -1
  66. package/es/interactions/element-select.js +8 -8
  67. package/es/interactions/element-select.js.map +1 -1
  68. package/es/semantic-marks/text.js.map +1 -1
  69. package/es/types/mark.d.ts +1 -0
  70. package/es/types/mark.js.map +1 -1
  71. package/es/types/view.d.ts +2 -1
  72. package/es/types/view.js.map +1 -1
  73. package/es/view/mark.js +7 -3
  74. package/es/view/mark.js.map +1 -1
  75. package/package.json +12 -12
@@ -49,13 +49,17 @@ exports.transformsByType = {
49
49
  storedAttrs: "sizeAttrs"
50
50
  } ],
51
51
  [enums_1.GrammarMarkType.text]: [ {
52
- channels: [ "text", "limit", "autoLimit", "maxLineWidth", "textType" ],
52
+ channels: [ "text", "limit", "autoLimit", "maxLineWidth", "textType", "_originText" ],
53
53
  transform: (graphicAttributes, nextAttrs, storedAttrs) => {
54
- var _a, _b;
54
+ var _a, _b, _c, _d;
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 || storedAttrs.textType) && ("rich" === storedAttrs.text.type || "rich" === storedAttrs.textType) ? graphicAttributes.textConfig = text : graphicAttributes.text = text;
58
+ isTextConfig || storedAttrs.textType ? "rich" === storedAttrs.text.type || "rich" === storedAttrs.textType ? graphicAttributes.textConfig = text : "html" === storedAttrs.text.type ? (graphicAttributes.html = text,
59
+ graphicAttributes.text = null !== (_c = storedAttrs._originText) && void 0 !== _c ? _c : "",
60
+ graphicAttributes.renderable = !1) : "react" === storedAttrs.text.type ? (graphicAttributes.react = text,
61
+ graphicAttributes.text = null !== (_d = storedAttrs._originText) && void 0 !== _d ? _d : "",
62
+ graphicAttributes.renderable = !1) : graphicAttributes.text = text : graphicAttributes.text = text;
59
63
  },
60
64
  storedAttrs: "limitAttrs"
61
65
  } ],
@@ -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', '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"]}
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', '_originText'],\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 if (storedAttrs.text.type === 'html') {\n graphicAttributes.html = text;\n graphicAttributes.text = storedAttrs._originText ?? '';\n graphicAttributes.renderable = false;\n } else if (storedAttrs.text.type === 'react') {\n graphicAttributes.react = text;\n graphicAttributes.text = storedAttrs._originText ?? '';\n graphicAttributes.renderable = false;\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
@@ -1,4 +1,4 @@
1
- export declare const version = "0.15.0-alpha.0";
1
+ export declare const version = "0.15.0-beta.1";
2
2
  export * from './graph';
3
3
  export * from './interactions';
4
4
  export { View } from './view';
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.registerAnimate = exports.registerGesturePlugin = exports.registerDragPlugin = exports.GlyphMark = exports.registerGlyphMark = exports.defaultDoLayout = exports.registerDefaultLayout = exports.vglobal = exports.ThemeManager = exports.registerViewMorphAPI = exports.registerViewEventsAPI = 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.15.0-alpha.0", __exportStar(require("./graph"), exports), __exportStar(require("./interactions"), exports);
21
+ exports.version = "0.15.0-beta.1", __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,gBAAgB,CAAC;AAExC,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;AAEjB,4DAAgE;AAAvD,yHAAA,qBAAqB,OAAA;AAC9B,4DAA+D;AAAtD,wHAAA,oBAAoB,OAAA;AAE7B,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;AACrC,gDAA+E;AAAtE,+GAAA,qBAAqB,OAAA;AAAE,yGAAA,eAAe,OAAA;AAC/C,sCAA4D;AAAnD,0GAAA,iBAAiB,OAAA;AAAE,kGAAA,SAAS,OAAA;AAErC,yDAA4D;AAC5D,4CAAyC;AAElC,MAAM,kBAAkB,GAAG,GAAG,EAAE;IACrC,iBAAO,CAAC,wBAAwB,CAAC,MAAM,EAAE,wBAAS,CAAC,CAAC;AACtD,CAAC,CAAC;AAFW,QAAA,kBAAkB,sBAE7B;AAEK,MAAM,qBAAqB,GAAG,GAAG,EAAE;IACxC,iBAAO,CAAC,wBAAwB,CAAC,SAAS,EAAE,sBAAO,CAAC,CAAC;AACvD,CAAC,CAAC;AAFW,QAAA,qBAAqB,yBAEhC;AAEF,kEAAmE;AACnE,kEAAmE;AAE5D,MAAM,eAAe,GAAG,GAAG,EAAE;IAClC,IAAA,2CAAsB,GAAE,CAAC;IACzB,IAAA,2CAAsB,GAAE,CAAC;AAC3B,CAAC,CAAC;AAHW,QAAA,eAAe,mBAG1B","file":"index.js","sourcesContent":["// -- Exports -----\nexport const version = \"0.15.0-alpha.0\";\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';\nexport { registerViewEventsAPI } from './view/view-event-mixin';\nexport { registerViewMorphAPI } from './view/view-morph-mixin';\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';\nexport { registerDefaultLayout, defaultDoLayout } from './graph/layout/layout';\nexport { registerGlyphMark, GlyphMark } from './view/glyph';\n\nimport { DragNDrop, Gesture } from '@visactor/vrender-kits';\nimport { Factory } from './core/factory';\n\nexport const registerDragPlugin = () => {\n Factory.registerStageEventPlugin('drag', DragNDrop);\n};\n\nexport const registerGesturePlugin = () => {\n Factory.registerStageEventPlugin('gesture', Gesture);\n};\n\nimport { registerViewAnimateAPI } from './view/view-animate-mixin';\nimport { registerMarkAnimateAPI } from './view/mark-animate-mixin';\n\nexport const registerAnimate = () => {\n registerViewAnimateAPI();\n registerMarkAnimateAPI();\n};\n"]}
1
+ {"version":3,"sources":["../src/index.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;AACa,QAAA,OAAO,GAAG,eAAe,CAAC;AAEvC,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;AAEjB,4DAAgE;AAAvD,yHAAA,qBAAqB,OAAA;AAC9B,4DAA+D;AAAtD,wHAAA,oBAAoB,OAAA;AAE7B,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;AACrC,gDAA+E;AAAtE,+GAAA,qBAAqB,OAAA;AAAE,yGAAA,eAAe,OAAA;AAC/C,sCAA4D;AAAnD,0GAAA,iBAAiB,OAAA;AAAE,kGAAA,SAAS,OAAA;AAErC,yDAA4D;AAC5D,4CAAyC;AAElC,MAAM,kBAAkB,GAAG,GAAG,EAAE;IACrC,iBAAO,CAAC,wBAAwB,CAAC,MAAM,EAAE,wBAAS,CAAC,CAAC;AACtD,CAAC,CAAC;AAFW,QAAA,kBAAkB,sBAE7B;AAEK,MAAM,qBAAqB,GAAG,GAAG,EAAE;IACxC,iBAAO,CAAC,wBAAwB,CAAC,SAAS,EAAE,sBAAO,CAAC,CAAC;AACvD,CAAC,CAAC;AAFW,QAAA,qBAAqB,yBAEhC;AAEF,kEAAmE;AACnE,kEAAmE;AAE5D,MAAM,eAAe,GAAG,GAAG,EAAE;IAClC,IAAA,2CAAsB,GAAE,CAAC;IACzB,IAAA,2CAAsB,GAAE,CAAC;AAC3B,CAAC,CAAC;AAHW,QAAA,eAAe,mBAG1B","file":"index.js","sourcesContent":["// -- Exports -----\nexport const version = \"0.15.0-beta.1\";\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';\nexport { registerViewEventsAPI } from './view/view-event-mixin';\nexport { registerViewMorphAPI } from './view/view-morph-mixin';\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';\nexport { registerDefaultLayout, defaultDoLayout } from './graph/layout/layout';\nexport { registerGlyphMark, GlyphMark } from './view/glyph';\n\nimport { DragNDrop, Gesture } from '@visactor/vrender-kits';\nimport { Factory } from './core/factory';\n\nexport const registerDragPlugin = () => {\n Factory.registerStageEventPlugin('drag', DragNDrop);\n};\n\nexport const registerGesturePlugin = () => {\n Factory.registerStageEventPlugin('gesture', Gesture);\n};\n\nimport { registerViewAnimateAPI } from './view/view-animate-mixin';\nimport { registerMarkAnimateAPI } from './view/mark-animate-mixin';\n\nexport const registerAnimate = () => {\n registerViewAnimateAPI();\n registerMarkAnimateAPI();\n};\n"]}
@@ -1 +1 @@
1
- {"version":3,"sources":["../src/interactions/base.ts"],"names":[],"mappings":"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","file":"base.js","sourcesContent":["import { array, isArray, isNil, isString, isValid } from '@visactor/vutils';\nimport type {\n IBaseInteractionOptions,\n IElement,\n IGlyphElement,\n IGrammarBase,\n IView,\n InteractionEventHandler\n} from '../types';\n\nexport abstract class BaseInteraction<T extends IBaseInteractionOptions> {\n readonly view: IView;\n\n options: T;\n\n type: string;\n\n constructor(view: IView, options: T) {\n this.view = view;\n this.depend(options?.dependency);\n }\n\n references: Map<IGrammarBase, number> = new Map();\n\n protected abstract getEvents(): Array<{ type: string | string[]; handler: InteractionEventHandler }>;\n\n getStartState(): string {\n return null;\n }\n\n depend(grammar: IGrammarBase[] | IGrammarBase | string[] | string) {\n this.references.clear();\n array(grammar)\n .map(grammar => (isString(grammar) ? this.view.getGrammarById(grammar) : grammar))\n .filter(ref => !isNil(ref))\n .forEach(ref => {\n this.references.set(ref, (this.references.get(ref) ?? 0) + 1);\n });\n }\n\n parameters() {\n const params: any = {};\n this.references.forEach((count, ref) => {\n // upstream reference with no valid id will not be recorded in parameters\n if (isValid(ref.id())) {\n params[ref.id() as string] = ref.output();\n }\n });\n return params;\n }\n\n bind() {\n const events = this.getEvents();\n\n (events ?? []).forEach(evt => {\n if (evt.type && evt.handler) {\n if (isArray(evt.type)) {\n evt.type.forEach(evtType => {\n evtType && evtType !== 'none' && this.view.addEventListener(evtType, evt.handler);\n });\n } else {\n evt.type !== 'none' && this.view.addEventListener(evt.type, evt.handler);\n }\n }\n });\n }\n\n unbind() {\n // unbind events\n const events = this.getEvents();\n\n (events ?? []).forEach(evt => {\n if (evt.type && evt.handler) {\n if (isArray(evt.type)) {\n evt.type.forEach(evtType => {\n evtType && evtType !== 'none' && this.view.removeEventListener(evtType, evt.handler);\n });\n } else {\n evt.type !== 'none' && this.view.removeEventListener(evt.type, evt.handler);\n }\n }\n });\n }\n\n start(element: IElement | IGlyphElement) {\n // do nothing\n }\n\n reset(element?: IElement | IGlyphElement) {\n // do nothing\n }\n\n protected dispatchEvent(type: 'start' | 'reset' | 'update' | 'end', params: any) {\n this.view.emit(`${this.type}:${type}`, params);\n\n if (type === 'start' && this.options.onStart) {\n this.options.onStart(params);\n } else if (type === 'reset' && this.options.onReset) {\n this.options.onReset(params);\n } else if (type === 'update' && this.options.onUpdate) {\n this.options.onUpdate(params);\n } else if (type === 'end' && this.options.onEnd) {\n this.options.onEnd(params);\n }\n }\n}\n"]}
1
+ {"version":3,"sources":["../src/interactions/base.ts"],"names":[],"mappings":"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","file":"base.js","sourcesContent":["import { array, isArray, isNil, isString, isValid } from '@visactor/vutils';\nimport type {\n IBaseInteractionOptions,\n IElement,\n IGlyphElement,\n IGrammarBase,\n IView,\n InteractionEventHandler\n} from '../types';\n\nexport abstract class BaseInteraction<T extends IBaseInteractionOptions> {\n readonly view: IView;\n\n options: T;\n\n type: string;\n\n constructor(view: IView, options: T) {\n this.view = view;\n this.depend(options?.dependency);\n }\n\n references: Map<IGrammarBase, number> = new Map();\n\n protected abstract getEvents(): Array<{ type: string | string[]; handler: InteractionEventHandler }>;\n\n getStartState(): string {\n return null;\n }\n\n depend(grammar: IGrammarBase[] | IGrammarBase | string[] | string) {\n this.references.clear();\n array(grammar)\n .map(grammar => (isString(grammar) ? this.view.getGrammarById(grammar) : grammar))\n .filter(ref => !isNil(ref))\n .forEach(ref => {\n this.references.set(ref, (this.references.get(ref) ?? 0) + 1);\n });\n }\n\n parameters() {\n const params: any = {};\n this.references.forEach((count, ref) => {\n // upstream reference with no valid id will not be recorded in parameters\n if (isValid(ref.id())) {\n params[ref.id() as string] = ref.output();\n }\n });\n return params;\n }\n\n bind() {\n const events = this.getEvents();\n\n (events ?? []).forEach(evt => {\n if (evt.type && evt.handler) {\n if (isArray(evt.type)) {\n evt.type.forEach(evtType => {\n evtType && evtType !== 'none' && this.view.addEventListener(evtType, evt.handler);\n });\n } else {\n evt.type !== 'none' && this.view.addEventListener(evt.type, evt.handler);\n }\n }\n });\n }\n\n unbind() {\n // unbind events\n const events = this.getEvents();\n\n (events ?? []).forEach(evt => {\n if (evt.type && evt.handler) {\n if (isArray(evt.type)) {\n evt.type.forEach(evtType => {\n evtType && evtType !== 'none' && this.view.removeEventListener(evtType, evt.handler);\n });\n } else {\n evt.type !== 'none' && this.view.removeEventListener(evt.type, evt.handler);\n }\n }\n });\n }\n\n start(element: IElement | IGlyphElement) {\n // do nothing\n }\n\n reset(element?: IElement | IGlyphElement) {\n // do nothing\n }\n\n protected dispatchEvent(type: 'start' | 'reset' | 'update' | 'end', params: any) {\n this.view.emit(`${this.type}:${type}`, params);\n\n if (type === 'start' && this.options.onStart) {\n this.options.onStart(params);\n } else if (type === 'reset' && this.options.onReset) {\n this.options.onReset(params);\n } else if (type === 'update' && this.options.onUpdate) {\n this.options.onUpdate(params);\n } else if (type === 'end' && this.options.onEnd) {\n this.options.onEnd(params);\n }\n }\n}\n"]}
@@ -14,7 +14,8 @@ export declare class ElementActiveByLegend extends BaseInteraction<ElementActive
14
14
  }[];
15
15
  getStartState(): string;
16
16
  start(element: IElement | IGlyphElement | string): void;
17
- reset(): void;
17
+ resetAll(): void;
18
+ reset(element?: InteractionEvent['element']): void;
18
19
  handleStart: (e: InteractionEvent) => void;
19
20
  handleReset: (e: InteractionEvent) => void;
20
21
  }
@@ -12,7 +12,7 @@ class ElementActiveByLegend extends base_1.BaseInteraction {
12
12
  var _a, _b;
13
13
  this.start(null === (_b = null === (_a = e.detail) || void 0 === _a ? void 0 : _a.data) || void 0 === _b ? void 0 : _b.id);
14
14
  }, this.handleReset = e => {
15
- this.reset();
15
+ this.resetAll();
16
16
  }, this.options = Object.assign({}, ElementActiveByLegend.defaultOptions, options),
17
17
  this._marks = view.getMarksBySelector(this.options.selector);
18
18
  }
@@ -38,13 +38,16 @@ class ElementActiveByLegend extends base_1.BaseInteraction {
38
38
  }));
39
39
  }));
40
40
  }
41
- reset() {
41
+ resetAll() {
42
42
  this._marks.forEach((mark => {
43
43
  mark.elements.forEach((el => {
44
44
  el.removeState(this.options.state);
45
45
  }));
46
46
  }));
47
47
  }
48
+ reset(element) {
49
+ element ? this._marks && this._marks.includes(element.mark) && element.removeState(this.options.state) : this.resetAll();
50
+ }
48
51
  }
49
52
 
50
53
  exports.ElementActiveByLegend = ElementActiveByLegend, ElementActiveByLegend.type = "element-active-by-legend",
@@ -1 +1 @@
1
- {"version":3,"sources":["../src/interactions/element-active-by-legend.ts"],"names":[],"mappings":";;;AAAA,0CAAsD;AAEtD,iCAAyC;AACzC,qEAA2D;AAC3D,6CAAyC;AACzC,mCAA8C;AAE9C,MAAa,qBAAsB,SAAQ,sBAA6C;IAWtF,YAAY,IAAW,EAAE,OAAsC;QAC7D,KAAK,CAAC,IAAI,EAAE,OAAO,CAAC,CAAC;QAVvB,SAAI,GAAW,qBAAqB,CAAC,IAAI,CAAC;QA+D1C,gBAAW,GAAG,CAAC,CAAmB,EAAE,EAAE;;YACpC,IAAI,CAAC,KAAK,CAAC,MAAA,MAAA,CAAC,CAAC,MAAM,0CAAE,IAAI,0CAAE,EAAE,CAAC,CAAC;QACjC,CAAC,CAAC;QAEF,gBAAW,GAAG,CAAC,CAAmB,EAAE,EAAE;YACpC,IAAI,CAAC,KAAK,EAAE,CAAC;QACf,CAAC,CAAC;QA1DA,IAAI,CAAC,OAAO,GAAG,MAAM,CAAC,MAAM,CAAC,EAAE,EAAE,qBAAqB,CAAC,cAAc,EAAE,OAAO,CAAC,CAAC;QAEhF,IAAI,CAAC,MAAM,GAAG,IAAI,CAAC,kBAAkB,CAAC,IAAI,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAC;IAC/D,CAAC;IAES,SAAS;QACjB,OAAO;YACL;gBACE,IAAI,EAAE,gCAAW,CAAC,eAAe;gBACjC,OAAO,EAAE,IAAI,CAAC,WAAW;aAC1B;YACD;gBACE,IAAI,EAAE,gCAAW,CAAC,iBAAiB;gBACnC,OAAO,EAAE,IAAI,CAAC,WAAW;aAC1B;SACF,CAAC;IACJ,CAAC;IAED,aAAa;QACX,OAAO,IAAI,CAAC,OAAO,CAAC,KAAK,CAAC;IAC5B,CAAC;IAED,KAAK,CAAC,OAA0C;QAC9C,MAAM,OAAO,GAAG,OAAO,CAAC;QAExB,IAAI,IAAA,cAAK,EAAC,OAAO,CAAC,EAAE;YAClB,OAAO;SACR;QAED,MAAM,WAAW,GAAG,IAAA,2BAAmB,EAAC,IAAI,CAAC,OAAO,CAAC,CAAC;QAEtD,IAAI,CAAC,MAAM,CAAC,OAAO,CAAC,IAAI,CAAC,EAAE;YACzB,IAAI,CAAC,QAAQ,CAAC,OAAO,CAAC,EAAE,CAAC,EAAE;gBACzB,MAAM,QAAQ,GAAG,WAAW,CAAC,EAAE,CAAC,KAAK,OAAO,CAAC;gBAE7C,IAAI,QAAQ,EAAE;oBACZ,EAAE,CAAC,QAAQ,CAAC,IAAI,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC;iBACjC;qBAAM;oBACL,EAAE,CAAC,WAAW,CAAC,IAAI,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC;iBACpC;YACH,CAAC,CAAC,CAAC;QACL,CAAC,CAAC,CAAC;IACL,CAAC;IAED,KAAK;QACH,IAAI,CAAC,MAAM,CAAC,OAAO,CAAC,IAAI,CAAC,EAAE;YACzB,IAAI,CAAC,QAAQ,CAAC,OAAO,CAAC,EAAE,CAAC,EAAE;gBACzB,EAAE,CAAC,WAAW,CAAC,IAAI,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC;YACrC,CAAC,CAAC,CAAC;QACL,CAAC,CAAC,CAAC;IACL,CAAC;;AA/DH,sDAwEC;AAvEQ,0BAAI,GAAW,0BAA0B,CAAC;AAG1C,oCAAc,GAAiC;IACpD,KAAK,EAAE,4BAAoB,CAAC,MAAM;IAClC,UAAU,EAAE,UAAU;CACvB,CAAC","file":"element-active-by-legend.js","sourcesContent":["import { InteractionStateEnum } from '../graph/enums';\nimport type { ElementActiveByLegendOptions, IElement, IGlyphElement, IMark, IView, InteractionEvent } from '../types';\nimport { BaseInteraction } from './base';\nimport { LegendEvent } from '@visactor/vrender-components';\nimport { isNil } from '@visactor/vutils';\nimport { generateFilterValue } from './utils';\n\nexport class ElementActiveByLegend extends BaseInteraction<ElementActiveByLegendOptions> {\n static type: string = 'element-active-by-legend';\n type: string = ElementActiveByLegend.type;\n\n static defaultOptions: ElementActiveByLegendOptions = {\n state: InteractionStateEnum.active,\n filterType: 'groupKey'\n };\n options: ElementActiveByLegendOptions;\n protected _marks?: IMark[];\n\n constructor(view: IView, options?: ElementActiveByLegendOptions) {\n super(view, options);\n this.options = Object.assign({}, ElementActiveByLegend.defaultOptions, options);\n\n this._marks = view.getMarksBySelector(this.options.selector);\n }\n\n protected getEvents() {\n return [\n {\n type: LegendEvent.legendItemHover,\n handler: this.handleStart\n },\n {\n type: LegendEvent.legendItemUnHover,\n handler: this.handleReset\n }\n ];\n }\n\n getStartState(): string {\n return this.options.state;\n }\n\n start(element: IElement | IGlyphElement | string) {\n const itemKey = element;\n\n if (isNil(itemKey)) {\n return;\n }\n\n const filterValue = generateFilterValue(this.options);\n\n this._marks.forEach(mark => {\n mark.elements.forEach(el => {\n const isActive = filterValue(el) === itemKey;\n\n if (isActive) {\n el.addState(this.options.state);\n } else {\n el.removeState(this.options.state);\n }\n });\n });\n }\n\n reset() {\n this._marks.forEach(mark => {\n mark.elements.forEach(el => {\n el.removeState(this.options.state);\n });\n });\n }\n\n handleStart = (e: InteractionEvent) => {\n this.start(e.detail?.data?.id);\n };\n\n handleReset = (e: InteractionEvent) => {\n this.reset();\n };\n}\n"]}
1
+ {"version":3,"sources":["../src/interactions/element-active-by-legend.ts"],"names":[],"mappings":"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","file":"element-active-by-legend.js","sourcesContent":["import { InteractionStateEnum } from '../graph/enums';\nimport type { ElementActiveByLegendOptions, IElement, IGlyphElement, IMark, IView, InteractionEvent } from '../types';\nimport { BaseInteraction } from './base';\nimport { LegendEvent } from '@visactor/vrender-components';\nimport { isNil } from '@visactor/vutils';\nimport { generateFilterValue } from './utils';\n\nexport class ElementActiveByLegend extends BaseInteraction<ElementActiveByLegendOptions> {\n static type: string = 'element-active-by-legend';\n type: string = ElementActiveByLegend.type;\n\n static defaultOptions: ElementActiveByLegendOptions = {\n state: InteractionStateEnum.active,\n filterType: 'groupKey'\n };\n options: ElementActiveByLegendOptions;\n protected _marks?: IMark[];\n\n constructor(view: IView, options?: ElementActiveByLegendOptions) {\n super(view, options);\n this.options = Object.assign({}, ElementActiveByLegend.defaultOptions, options);\n\n this._marks = view.getMarksBySelector(this.options.selector);\n }\n\n protected getEvents() {\n return [\n {\n type: LegendEvent.legendItemHover,\n handler: this.handleStart\n },\n {\n type: LegendEvent.legendItemUnHover,\n handler: this.handleReset\n }\n ];\n }\n\n getStartState(): string {\n return this.options.state;\n }\n\n start(element: IElement | IGlyphElement | string) {\n const itemKey = element;\n\n if (isNil(itemKey)) {\n return;\n }\n\n const filterValue = generateFilterValue(this.options);\n\n this._marks.forEach(mark => {\n mark.elements.forEach(el => {\n const isActive = filterValue(el) === itemKey;\n\n if (isActive) {\n el.addState(this.options.state);\n } else {\n el.removeState(this.options.state);\n }\n });\n });\n }\n\n resetAll() {\n this._marks.forEach(mark => {\n mark.elements.forEach(el => {\n el.removeState(this.options.state);\n });\n });\n }\n\n reset(element?: InteractionEvent['element']) {\n if (element) {\n if (this._marks && this._marks.includes(element.mark)) {\n element.removeState(this.options.state);\n }\n } else {\n this.resetAll();\n }\n }\n\n handleStart = (e: InteractionEvent) => {\n this.start(e.detail?.data?.id);\n };\n\n handleReset = (e: InteractionEvent) => {\n this.resetAll();\n };\n}\n"]}
@@ -1,4 +1,4 @@
1
- import type { ElementActiveOptions, IMark, IView, InteractionEvent } from '../types';
1
+ import type { ElementActiveOptions, IElement, IMark, IView, InteractionEvent } from '../types';
2
2
  import { BaseInteraction } from './base';
3
3
  export declare class ElementActive extends BaseInteraction<ElementActiveOptions> {
4
4
  static type: string;
@@ -6,6 +6,7 @@ export declare class ElementActive extends BaseInteraction<ElementActiveOptions>
6
6
  static defaultOptions: ElementActiveOptions;
7
7
  options: ElementActiveOptions;
8
8
  protected _marks?: IMark[];
9
+ protected _prevActiveElement?: IElement;
9
10
  constructor(view: IView, options?: ElementActiveOptions);
10
11
  protected getEvents(): {
11
12
  type: "none" | import("../types").EventType | import("../types").EventType[];
@@ -13,7 +14,7 @@ export declare class ElementActive extends BaseInteraction<ElementActiveOptions>
13
14
  }[];
14
15
  getStartState(): string;
15
16
  start(element: InteractionEvent['element']): void;
16
- reset(element: InteractionEvent['element']): void;
17
+ reset(element?: InteractionEvent['element']): void;
17
18
  handleStart: (e: InteractionEvent) => void;
18
19
  handleReset: (e: InteractionEvent) => void;
19
20
  }
@@ -27,10 +27,12 @@ class ElementActive extends base_1.BaseInteraction {
27
27
  return this.options.state;
28
28
  }
29
29
  start(element) {
30
- element && this._marks && this._marks.includes(element.mark) && element.addState(this.options.state);
30
+ element && this._marks && this._marks.includes(element.mark) && (element.addState(this.options.state),
31
+ this._prevActiveElement = element);
31
32
  }
32
33
  reset(element) {
33
- element && this._marks && this._marks.includes(element.mark) && element.removeState(this.options.state);
34
+ const el = null != element ? element : this._prevActiveElement;
35
+ el && this._marks && this._marks.includes(el.mark) && el.removeState(this.options.state);
34
36
  }
35
37
  }
36
38
 
@@ -1 +1 @@
1
- {"version":3,"sources":["../src/interactions/element-active.ts"],"names":[],"mappings":";;;AAAA,0CAAsD;AAEtD,iCAAyC;AAEzC,MAAa,aAAc,SAAQ,sBAAqC;IAYtE,YAAY,IAAW,EAAE,OAA8B;QACrD,KAAK,CAAC,IAAI,EAAE,OAAO,CAAC,CAAC;QAXvB,SAAI,GAAW,aAAa,CAAC,IAAI,CAAC;QA+ClC,gBAAW,GAAG,CAAC,CAAmB,EAAE,EAAE;YACpC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC;QACxB,CAAC,CAAC;QAEF,gBAAW,GAAG,CAAC,CAAmB,EAAE,EAAE;YACpC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC;QACxB,CAAC,CAAC;QAzCA,IAAI,CAAC,OAAO,GAAG,MAAM,CAAC,MAAM,CAAC,EAAE,EAAE,aAAa,CAAC,cAAc,EAAE,OAAO,CAAC,CAAC;QAExE,IAAI,CAAC,MAAM,GAAG,IAAI,CAAC,kBAAkB,CAAC,IAAI,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAC;IAC/D,CAAC;IAES,SAAS;QACjB,OAAO;YACL;gBACE,IAAI,EAAE,IAAI,CAAC,OAAO,CAAC,OAAO;gBAC1B,OAAO,EAAE,IAAI,CAAC,WAAW;aAC1B;YACD,EAAE,IAAI,EAAE,IAAI,CAAC,OAAO,CAAC,UAAU,EAAE,OAAO,EAAE,IAAI,CAAC,WAAW,EAAE;SAC7D,CAAC;IACJ,CAAC;IAED,aAAa;QACX,OAAO,IAAI,CAAC,OAAO,CAAC,KAAK,CAAC;IAC5B,CAAC;IAED,KAAK,CAAC,OAAoC;QACxC,IAAI,OAAO,EAAE;YACX,IAAI,IAAI,CAAC,MAAM,IAAI,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,OAAO,CAAC,IAAI,CAAC,EAAE;gBACrD,OAAO,CAAC,QAAQ,CAAC,IAAI,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC;aACtC;SACF;IACH,CAAC;IAED,KAAK,CAAC,OAAoC;QACxC,IAAI,OAAO,EAAE;YACX,IAAI,IAAI,CAAC,MAAM,IAAI,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,OAAO,CAAC,IAAI,CAAC,EAAE;gBACrD,OAAO,CAAC,WAAW,CAAC,IAAI,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC;aACzC;SACF;IACH,CAAC;;AA/CH,sCAwDC;AAvDQ,kBAAI,GAAW,gBAAgB,CAAC;AAGhC,4BAAc,GAAyB;IAC5C,KAAK,EAAE,4BAAoB,CAAC,MAAM;IAClC,OAAO,EAAE,aAAa;IACtB,UAAU,EAAE,YAAY;CACzB,CAAC","file":"element-active.js","sourcesContent":["import { InteractionStateEnum } from '../graph/enums';\nimport type { ElementActiveOptions, IMark, IView, InteractionEvent } from '../types';\nimport { BaseInteraction } from './base';\n\nexport class ElementActive extends BaseInteraction<ElementActiveOptions> {\n static type: string = 'element-active';\n type: string = ElementActive.type;\n\n static defaultOptions: ElementActiveOptions = {\n state: InteractionStateEnum.active,\n trigger: 'pointerover',\n triggerOff: 'pointerout'\n };\n options: ElementActiveOptions;\n protected _marks?: IMark[];\n\n constructor(view: IView, options?: ElementActiveOptions) {\n super(view, options);\n this.options = Object.assign({}, ElementActive.defaultOptions, options);\n\n this._marks = view.getMarksBySelector(this.options.selector);\n }\n\n protected getEvents() {\n return [\n {\n type: this.options.trigger,\n handler: this.handleStart\n },\n { type: this.options.triggerOff, handler: this.handleReset }\n ];\n }\n\n getStartState(): string {\n return this.options.state;\n }\n\n start(element: InteractionEvent['element']) {\n if (element) {\n if (this._marks && this._marks.includes(element.mark)) {\n element.addState(this.options.state);\n }\n }\n }\n\n reset(element: InteractionEvent['element']) {\n if (element) {\n if (this._marks && this._marks.includes(element.mark)) {\n element.removeState(this.options.state);\n }\n }\n }\n\n handleStart = (e: InteractionEvent) => {\n this.start(e.element);\n };\n\n handleReset = (e: InteractionEvent) => {\n this.reset(e.element);\n };\n}\n"]}
1
+ {"version":3,"sources":["../src/interactions/element-active.ts"],"names":[],"mappings":";;;AAAA,0CAAsD;AAEtD,iCAAyC;AAEzC,MAAa,aAAc,SAAQ,sBAAqC;IAatE,YAAY,IAAW,EAAE,OAA8B;QACrD,KAAK,CAAC,IAAI,EAAE,OAAO,CAAC,CAAC;QAZvB,SAAI,GAAW,aAAa,CAAC,IAAI,CAAC;QAmDlC,gBAAW,GAAG,CAAC,CAAmB,EAAE,EAAE;YACpC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC;QACxB,CAAC,CAAC;QAEF,gBAAW,GAAG,CAAC,CAAmB,EAAE,EAAE;YACpC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC;QACxB,CAAC,CAAC;QA5CA,IAAI,CAAC,OAAO,GAAG,MAAM,CAAC,MAAM,CAAC,EAAE,EAAE,aAAa,CAAC,cAAc,EAAE,OAAO,CAAC,CAAC;QAExE,IAAI,CAAC,MAAM,GAAG,IAAI,CAAC,kBAAkB,CAAC,IAAI,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAC;IAC/D,CAAC;IAES,SAAS;QACjB,OAAO;YACL;gBACE,IAAI,EAAE,IAAI,CAAC,OAAO,CAAC,OAAO;gBAC1B,OAAO,EAAE,IAAI,CAAC,WAAW;aAC1B;YACD,EAAE,IAAI,EAAE,IAAI,CAAC,OAAO,CAAC,UAAU,EAAE,OAAO,EAAE,IAAI,CAAC,WAAW,EAAE;SAC7D,CAAC;IACJ,CAAC;IAED,aAAa;QACX,OAAO,IAAI,CAAC,OAAO,CAAC,KAAK,CAAC;IAC5B,CAAC;IAED,KAAK,CAAC,OAAoC;QACxC,IAAI,OAAO,EAAE;YACX,IAAI,IAAI,CAAC,MAAM,IAAI,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,OAAO,CAAC,IAAI,CAAC,EAAE;gBACrD,OAAO,CAAC,QAAQ,CAAC,IAAI,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC;gBACrC,IAAI,CAAC,kBAAkB,GAAG,OAAO,CAAC;aACnC;SACF;IACH,CAAC;IAED,KAAK,CAAC,OAAqC;QACzC,MAAM,EAAE,GAAG,OAAO,aAAP,OAAO,cAAP,OAAO,GAAI,IAAI,CAAC,kBAAkB,CAAC;QAE9C,IAAI,EAAE,EAAE;YACN,IAAI,IAAI,CAAC,MAAM,IAAI,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,EAAE,CAAC,IAAI,CAAC,EAAE;gBAChD,EAAE,CAAC,WAAW,CAAC,IAAI,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC;aACpC;SACF;IACH,CAAC;;AAnDH,sCA4DC;AA3DQ,kBAAI,GAAW,gBAAgB,CAAC;AAGhC,4BAAc,GAAyB;IAC5C,KAAK,EAAE,4BAAoB,CAAC,MAAM;IAClC,OAAO,EAAE,aAAa;IACtB,UAAU,EAAE,YAAY;CACzB,CAAC","file":"element-active.js","sourcesContent":["import { InteractionStateEnum } from '../graph/enums';\nimport type { ElementActiveOptions, IElement, IMark, IView, InteractionEvent } from '../types';\nimport { BaseInteraction } from './base';\n\nexport class ElementActive extends BaseInteraction<ElementActiveOptions> {\n static type: string = 'element-active';\n type: string = ElementActive.type;\n\n static defaultOptions: ElementActiveOptions = {\n state: InteractionStateEnum.active,\n trigger: 'pointerover',\n triggerOff: 'pointerout'\n };\n options: ElementActiveOptions;\n protected _marks?: IMark[];\n protected _prevActiveElement?: IElement;\n\n constructor(view: IView, options?: ElementActiveOptions) {\n super(view, options);\n this.options = Object.assign({}, ElementActive.defaultOptions, options);\n\n this._marks = view.getMarksBySelector(this.options.selector);\n }\n\n protected getEvents() {\n return [\n {\n type: this.options.trigger,\n handler: this.handleStart\n },\n { type: this.options.triggerOff, handler: this.handleReset }\n ];\n }\n\n getStartState(): string {\n return this.options.state;\n }\n\n start(element: InteractionEvent['element']) {\n if (element) {\n if (this._marks && this._marks.includes(element.mark)) {\n element.addState(this.options.state);\n this._prevActiveElement = element;\n }\n }\n }\n\n reset(element?: InteractionEvent['element']) {\n const el = element ?? this._prevActiveElement;\n\n if (el) {\n if (this._marks && this._marks.includes(el.mark)) {\n el.removeState(this.options.state);\n }\n }\n }\n\n handleStart = (e: InteractionEvent) => {\n this.start(e.element);\n };\n\n handleReset = (e: InteractionEvent) => {\n this.reset(e.element);\n };\n}\n"]}
@@ -12,9 +12,9 @@ export declare class ElementHighlightByGroup extends BaseInteraction<ElementHigh
12
12
  type: "none" | import("../types").EventType;
13
13
  handler: (e: InteractionEvent) => void;
14
14
  }[];
15
- clearPrevElements(): void;
15
+ resetAll(): void;
16
16
  start(element: InteractionEvent['element']): void;
17
- reset(element: InteractionEvent['element']): void;
17
+ reset(element?: InteractionEvent['element']): void;
18
18
  handleStart: (e: InteractionEvent) => void;
19
19
  handleReset: (e: InteractionEvent) => void;
20
20
  }
@@ -11,7 +11,8 @@ class ElementHighlightByGroup extends base_1.BaseInteraction {
11
11
  super(view, options), this.type = ElementHighlightByGroup.type, this.handleStart = e => {
12
12
  this.start(e.element);
13
13
  }, this.handleReset = e => {
14
- this.reset(e.element);
14
+ const element = e.element;
15
+ element && this._marks && this._marks.includes(element.mark) && this.resetAll();
15
16
  }, this.options = Object.assign({}, ElementHighlightByGroup.defaultOptions, options),
16
17
  this._marks = view.getMarksBySelector(this.options.selector);
17
18
  }
@@ -27,7 +28,7 @@ class ElementHighlightByGroup extends base_1.BaseInteraction {
27
28
  handler: this.handleReset
28
29
  } ];
29
30
  }
30
- clearPrevElements() {
31
+ resetAll() {
31
32
  const states = [ this.options.highlightState, this.options.blurState ];
32
33
  this._marks.forEach((mark => {
33
34
  mark.elements.forEach((el => {
@@ -53,7 +54,7 @@ class ElementHighlightByGroup extends base_1.BaseInteraction {
53
54
  }
54
55
  }
55
56
  reset(element) {
56
- element && this._marks && this._marks.includes(element.mark) && this.clearPrevElements();
57
+ element ? this._marks && this._marks.includes(element.mark) && element.removeState([ this.options.highlightState, this.options.blurState ]) : this.resetAll();
57
58
  }
58
59
  }
59
60
 
@@ -1 +1 @@
1
- {"version":3,"sources":["../src/interactions/element-highlight-by-group.ts"],"names":[],"mappings":"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","file":"element-highlight-by-group.js","sourcesContent":["import { isNil } from '@visactor/vutils';\nimport type { ElementHighlightOptions, IMark, IView, InteractionEvent } from '../types';\nimport { InteractionStateEnum } from '../graph/enums';\nimport { BaseInteraction } from './base';\n\nexport class ElementHighlightByGroup extends BaseInteraction<ElementHighlightOptions> {\n static type: string = 'element-highlight-by-group';\n type: string = ElementHighlightByGroup.type;\n\n static defaultOptions: ElementHighlightOptions = {\n highlightState: InteractionStateEnum.highlight,\n blurState: InteractionStateEnum.blur,\n trigger: 'pointerover',\n triggerOff: 'pointerout'\n };\n options: ElementHighlightOptions;\n protected _marks?: IMark[];\n\n constructor(view: IView, options?: ElementHighlightOptions) {\n super(view, options);\n this.options = Object.assign({}, ElementHighlightByGroup.defaultOptions, options);\n\n this._marks = view.getMarksBySelector(this.options.selector);\n }\n\n getStartState(): string {\n return this.options.highlightState;\n }\n\n protected getEvents() {\n return [\n {\n type: this.options.trigger,\n handler: this.handleStart\n },\n { type: this.options.triggerOff, handler: this.handleReset }\n ];\n }\n\n clearPrevElements() {\n const states = [this.options.highlightState, this.options.blurState];\n\n this._marks.forEach(mark => {\n mark.elements.forEach(el => {\n el.removeState(states);\n });\n });\n }\n\n start(element: InteractionEvent['element']) {\n if (element && this._marks && this._marks.includes(element.mark)) {\n const highlightKey = element.groupKey;\n\n if (isNil(highlightKey)) {\n return;\n }\n this._marks.forEach(mark => {\n mark.elements.forEach(el => {\n const isHighlight = el.groupKey === highlightKey;\n\n if (isHighlight) {\n el.updateStates({\n [this.options.blurState]: false,\n [this.options.highlightState]: true\n });\n } else {\n el.updateStates({\n [this.options.blurState]: true,\n [this.options.highlightState]: false\n });\n }\n });\n });\n }\n }\n\n reset(element: InteractionEvent['element']) {\n const hasActiveElement = element && this._marks && this._marks.includes(element.mark);\n\n if (hasActiveElement) {\n this.clearPrevElements();\n }\n }\n\n handleStart = (e: InteractionEvent) => {\n this.start(e.element);\n };\n\n handleReset = (e: InteractionEvent) => {\n this.reset(e.element);\n };\n}\n"]}
1
+ {"version":3,"sources":["../src/interactions/element-highlight-by-group.ts"],"names":[],"mappings":"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","file":"element-highlight-by-group.js","sourcesContent":["import { isNil } from '@visactor/vutils';\nimport type { ElementHighlightOptions, IMark, IView, InteractionEvent } from '../types';\nimport { InteractionStateEnum } from '../graph/enums';\nimport { BaseInteraction } from './base';\n\nexport class ElementHighlightByGroup extends BaseInteraction<ElementHighlightOptions> {\n static type: string = 'element-highlight-by-group';\n type: string = ElementHighlightByGroup.type;\n\n static defaultOptions: ElementHighlightOptions = {\n highlightState: InteractionStateEnum.highlight,\n blurState: InteractionStateEnum.blur,\n trigger: 'pointerover',\n triggerOff: 'pointerout'\n };\n options: ElementHighlightOptions;\n protected _marks?: IMark[];\n\n constructor(view: IView, options?: ElementHighlightOptions) {\n super(view, options);\n this.options = Object.assign({}, ElementHighlightByGroup.defaultOptions, options);\n\n this._marks = view.getMarksBySelector(this.options.selector);\n }\n\n getStartState(): string {\n return this.options.highlightState;\n }\n\n protected getEvents() {\n return [\n {\n type: this.options.trigger,\n handler: this.handleStart\n },\n { type: this.options.triggerOff, handler: this.handleReset }\n ];\n }\n\n resetAll() {\n const states = [this.options.highlightState, this.options.blurState];\n\n this._marks.forEach(mark => {\n mark.elements.forEach(el => {\n el.removeState(states);\n });\n });\n }\n\n start(element: InteractionEvent['element']) {\n if (element && this._marks && this._marks.includes(element.mark)) {\n const highlightKey = element.groupKey;\n\n if (isNil(highlightKey)) {\n return;\n }\n this._marks.forEach(mark => {\n mark.elements.forEach(el => {\n const isHighlight = el.groupKey === highlightKey;\n\n if (isHighlight) {\n el.updateStates({\n [this.options.blurState]: false,\n [this.options.highlightState]: true\n });\n } else {\n el.updateStates({\n [this.options.blurState]: true,\n [this.options.highlightState]: false\n });\n }\n });\n });\n }\n }\n\n reset(element?: InteractionEvent['element']) {\n if (element) {\n if (this._marks && this._marks.includes(element.mark)) {\n element.removeState([this.options.highlightState, this.options.blurState]);\n }\n } else {\n this.resetAll();\n }\n }\n\n handleStart = (e: InteractionEvent) => {\n this.start(e.element);\n };\n\n handleReset = (e: InteractionEvent) => {\n const element = e.element;\n const hasActiveElement = element && this._marks && this._marks.includes(element.mark);\n\n if (hasActiveElement) {\n this.resetAll();\n }\n };\n}\n"]}
@@ -12,9 +12,9 @@ export declare class ElementHighlightByKey extends BaseInteraction<ElementHighli
12
12
  type: "none" | import("../types").EventType;
13
13
  handler: (e: InteractionEvent) => void;
14
14
  }[];
15
- clearPrevElements(): void;
15
+ resetAll(): void;
16
16
  start(element: InteractionEvent['element']): void;
17
- reset(element: InteractionEvent['element']): void;
17
+ reset(element?: InteractionEvent['element']): void;
18
18
  handleStart: (e: InteractionEvent) => void;
19
19
  handleReset: (e: InteractionEvent) => void;
20
20
  }
@@ -11,7 +11,7 @@ class ElementHighlightByKey extends base_1.BaseInteraction {
11
11
  super(view, options), this.type = ElementHighlightByKey.type, this.handleStart = e => {
12
12
  this.start(e.element);
13
13
  }, this.handleReset = e => {
14
- e.element && this._marks && this._marks.includes(e.element.mark) && this.clearPrevElements();
14
+ e.element && this._marks && this._marks.includes(e.element.mark) && this.resetAll();
15
15
  }, this.options = Object.assign({}, ElementHighlightByKey.defaultOptions, options),
16
16
  this._marks = view.getMarksBySelector(this.options.selector);
17
17
  }
@@ -27,7 +27,7 @@ class ElementHighlightByKey extends base_1.BaseInteraction {
27
27
  handler: this.handleReset
28
28
  } ];
29
29
  }
30
- clearPrevElements() {
30
+ resetAll() {
31
31
  const states = [ this.options.highlightState, this.options.blurState ];
32
32
  this._marks.forEach((mark => {
33
33
  mark.elements.forEach((el => {
@@ -53,21 +53,7 @@ class ElementHighlightByKey extends base_1.BaseInteraction {
53
53
  }
54
54
  }
55
55
  reset(element) {
56
- if (element && this._marks && this._marks.includes(element.mark)) {
57
- const highlightKey = element.key;
58
- if ((0, vutils_1.isNil)(highlightKey)) return;
59
- this._marks.forEach((mark => {
60
- mark.elements.forEach((el => {
61
- el.key === highlightKey ? el.updateStates({
62
- [this.options.blurState]: !1,
63
- [this.options.highlightState]: !0
64
- }) : el.updateStates({
65
- [this.options.blurState]: !0,
66
- [this.options.highlightState]: !1
67
- });
68
- }));
69
- }));
70
- }
56
+ element ? this._marks && this._marks.includes(element.mark) && element.removeState([ this.options.highlightState, this.options.blurState ]) : this.resetAll();
71
57
  }
72
58
  }
73
59
 
@@ -1 +1 @@
1
- {"version":3,"sources":["../src/interactions/element-highlight-by-key.ts"],"names":[],"mappings":"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","file":"element-highlight-by-key.js","sourcesContent":["import { isNil } from '@visactor/vutils';\nimport type { ElementHighlightOptions, IMark, IView, InteractionEvent } from '../types';\nimport { BaseInteraction } from './base';\nimport { InteractionStateEnum } from '../graph/enums';\n\nexport class ElementHighlightByKey extends BaseInteraction<ElementHighlightOptions> {\n static type: string = 'element-highlight-by-key';\n type: string = ElementHighlightByKey.type;\n\n static defaultOptions: ElementHighlightOptions = {\n highlightState: InteractionStateEnum.highlight,\n blurState: InteractionStateEnum.blur,\n trigger: 'pointerover',\n triggerOff: 'pointerout'\n };\n options: ElementHighlightOptions;\n protected _marks?: IMark[];\n\n constructor(view: IView, options?: ElementHighlightOptions) {\n super(view, options);\n this.options = Object.assign({}, ElementHighlightByKey.defaultOptions, options);\n\n this._marks = view.getMarksBySelector(this.options.selector);\n }\n\n getStartState(): string {\n return this.options.highlightState;\n }\n\n protected getEvents() {\n return [\n {\n type: this.options.trigger,\n handler: this.handleStart\n },\n { type: this.options.triggerOff, handler: this.handleReset }\n ];\n }\n\n clearPrevElements() {\n const states = [this.options.highlightState, this.options.blurState];\n\n this._marks.forEach(mark => {\n mark.elements.forEach(el => {\n el.removeState(states);\n });\n });\n }\n\n start(element: InteractionEvent['element']) {\n if (element && this._marks && this._marks.includes(element.mark)) {\n const highlightKey = element.key;\n\n if (isNil(highlightKey)) {\n return;\n }\n this._marks.forEach(mark => {\n mark.elements.forEach(el => {\n const isHighlight = el.key === highlightKey;\n\n if (isHighlight) {\n el.updateStates({\n [this.options.blurState]: false,\n [this.options.highlightState]: true\n });\n } else {\n el.updateStates({\n [this.options.blurState]: true,\n [this.options.highlightState]: false\n });\n }\n });\n });\n }\n }\n\n reset(element: InteractionEvent['element']) {\n if (element && this._marks && this._marks.includes(element.mark)) {\n const highlightKey = element.key;\n\n if (isNil(highlightKey)) {\n return;\n }\n this._marks.forEach(mark => {\n mark.elements.forEach(el => {\n const isHighlight = el.key === highlightKey;\n\n if (isHighlight) {\n el.updateStates({\n [this.options.blurState]: false,\n [this.options.highlightState]: true\n });\n } else {\n el.updateStates({\n [this.options.blurState]: true,\n [this.options.highlightState]: false\n });\n }\n });\n });\n }\n }\n\n handleStart = (e: InteractionEvent) => {\n this.start(e.element);\n };\n\n handleReset = (e: InteractionEvent) => {\n const hasActiveElement = e.element && this._marks && this._marks.includes(e.element.mark);\n\n if (hasActiveElement) {\n this.clearPrevElements();\n }\n };\n}\n"]}
1
+ {"version":3,"sources":["../src/interactions/element-highlight-by-key.ts"],"names":[],"mappings":"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","file":"element-highlight-by-key.js","sourcesContent":["import { isNil } from '@visactor/vutils';\nimport type { ElementHighlightOptions, IMark, IView, InteractionEvent } from '../types';\nimport { BaseInteraction } from './base';\nimport { InteractionStateEnum } from '../graph/enums';\n\nexport class ElementHighlightByKey extends BaseInteraction<ElementHighlightOptions> {\n static type: string = 'element-highlight-by-key';\n type: string = ElementHighlightByKey.type;\n\n static defaultOptions: ElementHighlightOptions = {\n highlightState: InteractionStateEnum.highlight,\n blurState: InteractionStateEnum.blur,\n trigger: 'pointerover',\n triggerOff: 'pointerout'\n };\n options: ElementHighlightOptions;\n protected _marks?: IMark[];\n\n constructor(view: IView, options?: ElementHighlightOptions) {\n super(view, options);\n this.options = Object.assign({}, ElementHighlightByKey.defaultOptions, options);\n\n this._marks = view.getMarksBySelector(this.options.selector);\n }\n\n getStartState(): string {\n return this.options.highlightState;\n }\n\n protected getEvents() {\n return [\n {\n type: this.options.trigger,\n handler: this.handleStart\n },\n { type: this.options.triggerOff, handler: this.handleReset }\n ];\n }\n\n resetAll() {\n const states = [this.options.highlightState, this.options.blurState];\n\n this._marks.forEach(mark => {\n mark.elements.forEach(el => {\n el.removeState(states);\n });\n });\n }\n\n start(element: InteractionEvent['element']) {\n if (element && this._marks && this._marks.includes(element.mark)) {\n const highlightKey = element.key;\n\n if (isNil(highlightKey)) {\n return;\n }\n this._marks.forEach(mark => {\n mark.elements.forEach(el => {\n const isHighlight = el.key === highlightKey;\n\n if (isHighlight) {\n el.updateStates({\n [this.options.blurState]: false,\n [this.options.highlightState]: true\n });\n } else {\n el.updateStates({\n [this.options.blurState]: true,\n [this.options.highlightState]: false\n });\n }\n });\n });\n }\n }\n\n reset(element?: InteractionEvent['element']) {\n if (element) {\n if (this._marks && this._marks.includes(element.mark)) {\n element.removeState([this.options.highlightState, this.options.blurState]);\n }\n } else {\n this.resetAll();\n }\n }\n\n handleStart = (e: InteractionEvent) => {\n this.start(e.element);\n };\n\n handleReset = (e: InteractionEvent) => {\n const hasActiveElement = e.element && this._marks && this._marks.includes(e.element.mark);\n\n if (hasActiveElement) {\n this.resetAll();\n }\n };\n}\n"]}
@@ -14,7 +14,8 @@ export declare class ElementHighlightByLegend extends BaseInteraction<ElementHig
14
14
  handler: (e: InteractionEvent, element: IGlyphElement<any> | IElement) => void;
15
15
  }[];
16
16
  start(itemKey: IElement | IGlyphElement | string): void;
17
- reset(): void;
17
+ resetAll(): void;
18
+ reset(element?: InteractionEvent['element']): void;
18
19
  handleStart: (e: InteractionEvent, element: IElement | IGlyphElement) => void;
19
20
  handleReset: (e: InteractionEvent) => void;
20
21
  }
@@ -12,7 +12,7 @@ class ElementHighlightByLegend extends base_1.BaseInteraction {
12
12
  var _a, _b;
13
13
  this.start(null === (_b = null === (_a = e.detail) || void 0 === _a ? void 0 : _a.data) || void 0 === _b ? void 0 : _b.id);
14
14
  }, this.handleReset = e => {
15
- this.reset();
15
+ this.resetAll();
16
16
  }, this.options = Object.assign({}, ElementHighlightByLegend.defaultOptions, options),
17
17
  this._marks = view.getMarksBySelector(this.options.selector);
18
18
  }
@@ -43,14 +43,17 @@ class ElementHighlightByLegend extends base_1.BaseInteraction {
43
43
  }));
44
44
  }));
45
45
  }
46
- reset() {
47
- const states = [ this.options.blurState, this.options.highlightState ];
46
+ resetAll() {
47
+ const states = [ this.options.highlightState, this.options.blurState ];
48
48
  this._marks.forEach((mark => {
49
49
  mark.elements.forEach((el => {
50
50
  el.removeState(states);
51
51
  }));
52
52
  }));
53
53
  }
54
+ reset(element) {
55
+ element ? this._marks && this._marks.includes(element.mark) && element.removeState([ this.options.highlightState, this.options.blurState ]) : this.resetAll();
56
+ }
54
57
  }
55
58
 
56
59
  exports.ElementHighlightByLegend = ElementHighlightByLegend, ElementHighlightByLegend.type = "element-highlight-by-legend",
@@ -1 +1 @@
1
- {"version":3,"sources":["../src/interactions/element-highlight-by-legend.ts"],"names":[],"mappings":"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","file":"element-highlight-by-legend.js","sourcesContent":["import { InteractionStateEnum } from '../graph/enums';\nimport type {\n ElementHighlightByLegendOptions,\n IElement,\n IGlyphElement,\n IMark,\n IView,\n InteractionEvent\n} from '../types';\nimport { BaseInteraction } from './base';\nimport { LegendEvent } from '@visactor/vrender-components';\nimport { isNil } from '@visactor/vutils';\nimport { generateFilterValue } from './utils';\n\nexport class ElementHighlightByLegend extends BaseInteraction<ElementHighlightByLegendOptions> {\n static type: string = 'element-highlight-by-legend';\n type: string = ElementHighlightByLegend.type;\n\n static defaultOptions: ElementHighlightByLegendOptions = {\n highlightState: InteractionStateEnum.highlight,\n blurState: InteractionStateEnum.blur,\n filterType: 'groupKey'\n };\n options: ElementHighlightByLegendOptions;\n protected _marks?: IMark[];\n\n constructor(view: IView, options?: ElementHighlightByLegendOptions) {\n super(view, options);\n this.options = Object.assign({}, ElementHighlightByLegend.defaultOptions, options);\n\n this._marks = view.getMarksBySelector(this.options.selector);\n }\n\n getStartState(): string {\n return this.options.highlightState;\n }\n\n protected getEvents() {\n return [\n {\n type: LegendEvent.legendItemHover,\n handler: this.handleStart\n },\n { type: LegendEvent.legendItemUnHover, handler: this.handleReset }\n ];\n }\n\n start(itemKey: IElement | IGlyphElement | string) {\n if (isNil(itemKey)) {\n return;\n }\n const filterValue = generateFilterValue(this.options);\n\n this._marks.forEach(mark => {\n mark.elements.forEach(el => {\n const isHighlight = filterValue(el) === itemKey;\n\n if (isHighlight) {\n el.updateStates({\n [this.options.blurState]: false,\n [this.options.highlightState]: true\n });\n } else {\n el.updateStates({\n [this.options.blurState]: true,\n [this.options.highlightState]: false\n });\n }\n });\n });\n }\n\n reset() {\n const states = [this.options.blurState, this.options.highlightState];\n this._marks.forEach(mark => {\n mark.elements.forEach(el => {\n el.removeState(states);\n });\n });\n }\n\n handleStart = (e: InteractionEvent, element: IElement | IGlyphElement) => {\n this.start(e.detail?.data?.id);\n };\n\n handleReset = (e: InteractionEvent) => {\n this.reset();\n };\n}\n"]}
1
+ {"version":3,"sources":["../src/interactions/element-highlight-by-legend.ts"],"names":[],"mappings":"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","file":"element-highlight-by-legend.js","sourcesContent":["import { InteractionStateEnum } from '../graph/enums';\nimport type {\n ElementHighlightByLegendOptions,\n IElement,\n IGlyphElement,\n IMark,\n IView,\n InteractionEvent\n} from '../types';\nimport { BaseInteraction } from './base';\nimport { LegendEvent } from '@visactor/vrender-components';\nimport { isNil } from '@visactor/vutils';\nimport { generateFilterValue } from './utils';\n\nexport class ElementHighlightByLegend extends BaseInteraction<ElementHighlightByLegendOptions> {\n static type: string = 'element-highlight-by-legend';\n type: string = ElementHighlightByLegend.type;\n\n static defaultOptions: ElementHighlightByLegendOptions = {\n highlightState: InteractionStateEnum.highlight,\n blurState: InteractionStateEnum.blur,\n filterType: 'groupKey'\n };\n options: ElementHighlightByLegendOptions;\n protected _marks?: IMark[];\n\n constructor(view: IView, options?: ElementHighlightByLegendOptions) {\n super(view, options);\n this.options = Object.assign({}, ElementHighlightByLegend.defaultOptions, options);\n\n this._marks = view.getMarksBySelector(this.options.selector);\n }\n\n getStartState(): string {\n return this.options.highlightState;\n }\n\n protected getEvents() {\n return [\n {\n type: LegendEvent.legendItemHover,\n handler: this.handleStart\n },\n { type: LegendEvent.legendItemUnHover, handler: this.handleReset }\n ];\n }\n\n start(itemKey: IElement | IGlyphElement | string) {\n if (isNil(itemKey)) {\n return;\n }\n const filterValue = generateFilterValue(this.options);\n\n this._marks.forEach(mark => {\n mark.elements.forEach(el => {\n const isHighlight = filterValue(el) === itemKey;\n\n if (isHighlight) {\n el.updateStates({\n [this.options.blurState]: false,\n [this.options.highlightState]: true\n });\n } else {\n el.updateStates({\n [this.options.blurState]: true,\n [this.options.highlightState]: false\n });\n }\n });\n });\n }\n\n resetAll() {\n const states = [this.options.highlightState, this.options.blurState];\n\n this._marks.forEach(mark => {\n mark.elements.forEach(el => {\n el.removeState(states);\n });\n });\n }\n\n reset(element?: InteractionEvent['element']) {\n if (element) {\n if (this._marks && this._marks.includes(element.mark)) {\n element.removeState([this.options.highlightState, this.options.blurState]);\n }\n } else {\n this.resetAll();\n }\n }\n\n handleStart = (e: InteractionEvent, element: IElement | IGlyphElement) => {\n this.start(e.detail?.data?.id);\n };\n\n handleReset = (e: InteractionEvent) => {\n this.resetAll();\n };\n}\n"]}
@@ -18,7 +18,8 @@ export declare class ElementHighlightByName extends BaseInteraction<ElementHighl
18
18
  protected _filterByName(e: InteractionEvent): boolean;
19
19
  protected _parseTargetKey(e: InteractionEvent, element: IElement | IGlyphElement): any;
20
20
  start(itemKey: IElement | IGlyphElement | string): void;
21
- reset(): void;
21
+ resetAll(): void;
22
+ reset(element?: InteractionEvent['element']): void;
22
23
  handleStart: (e: InteractionEvent, element: IElement | IGlyphElement) => void;
23
24
  handleReset: (e: InteractionEvent) => void;
24
25
  }
@@ -14,7 +14,7 @@ class ElementHighlightByName extends base_1.BaseInteraction {
14
14
  this.start(itemKey);
15
15
  }
16
16
  }, this.handleReset = e => {
17
- (this.options.shouldReset ? this.options.shouldReset(e) : this._filterByName(e)) && this.reset();
17
+ (this.options.shouldReset ? this.options.shouldReset(e) : this._filterByName(e)) && this.resetAll();
18
18
  }, this.options = Object.assign({}, ElementHighlightByName.defaultOptions, options),
19
19
  this._marks = view.getMarksBySelector(this.options.selector);
20
20
  }
@@ -53,7 +53,7 @@ class ElementHighlightByName extends base_1.BaseInteraction {
53
53
  }));
54
54
  }));
55
55
  }
56
- reset() {
56
+ resetAll() {
57
57
  const states = [ this.options.blurState, this.options.highlightState ];
58
58
  this._marks.forEach((mark => {
59
59
  mark.elements.forEach((el => {
@@ -61,6 +61,9 @@ class ElementHighlightByName extends base_1.BaseInteraction {
61
61
  }));
62
62
  }));
63
63
  }
64
+ reset(element) {
65
+ element ? this._marks && this._marks.includes(element.mark) && element.removeState([ this.options.highlightState, this.options.blurState ]) : this.resetAll();
66
+ }
64
67
  }
65
68
 
66
69
  exports.ElementHighlightByName = ElementHighlightByName, ElementHighlightByName.type = "element-highlight-by-name",