@visactor/vgrammar-core 0.14.0-alpha.3 → 0.14.0-alpha.5

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (217) hide show
  1. package/cjs/component/axis.d.ts +2 -0
  2. package/cjs/component/axis.js +15 -1
  3. package/cjs/component/axis.js.map +1 -1
  4. package/cjs/component/grid.d.ts +2 -0
  5. package/cjs/component/grid.js +15 -1
  6. package/cjs/component/grid.js.map +1 -1
  7. package/cjs/component/index.d.ts +2 -2
  8. package/cjs/component/index.js +21 -1
  9. package/cjs/component/index.js.map +1 -1
  10. package/cjs/core/factory.d.ts +8 -1
  11. package/cjs/core/factory.js +8 -1
  12. package/cjs/core/factory.js.map +1 -1
  13. package/cjs/glyph/boxplot.js +5 -5
  14. package/cjs/glyph/boxplot.js.map +1 -1
  15. package/cjs/glyph/link-path.js +2 -2
  16. package/cjs/glyph/link-path.js.map +1 -1
  17. package/cjs/glyph/ripple.js +3 -2
  18. package/cjs/glyph/ripple.js.map +1 -1
  19. package/cjs/glyph/tree-path.js +2 -2
  20. package/cjs/glyph/tree-path.js.map +1 -1
  21. package/cjs/glyph/violin.js +4 -4
  22. package/cjs/glyph/violin.js.map +1 -1
  23. package/cjs/glyph/wave.js +3 -2
  24. package/cjs/glyph/wave.js.map +1 -1
  25. package/cjs/graph/animation/animation/update.js +2 -2
  26. package/cjs/graph/animation/animation/update.js.map +1 -1
  27. package/cjs/graph/animation/morph.d.ts +2 -12
  28. package/cjs/graph/animation/morph.js +76 -163
  29. package/cjs/graph/animation/morph.js.map +1 -1
  30. package/cjs/graph/attributes/line.js.map +1 -1
  31. package/cjs/graph/canvas-renderer.d.ts +1 -1
  32. package/cjs/graph/canvas-renderer.js +4 -4
  33. package/cjs/graph/canvas-renderer.js.map +1 -1
  34. package/cjs/graph/element.d.ts +1 -0
  35. package/cjs/graph/element.js +15 -9
  36. package/cjs/graph/element.js.map +1 -1
  37. package/cjs/graph/glyph-element.js +4 -3
  38. package/cjs/graph/glyph-element.js.map +1 -1
  39. package/cjs/graph/layout/layout.d.ts +1 -0
  40. package/cjs/graph/layout/layout.js +8 -2
  41. package/cjs/graph/layout/layout.js.map +1 -1
  42. package/cjs/graph/mark/graphic.js +14 -8
  43. package/cjs/graph/mark/graphic.js.map +1 -1
  44. package/cjs/graph/util/point.js +10 -26
  45. package/cjs/graph/util/point.js.map +1 -1
  46. package/cjs/graph/view-diff.d.ts +8 -0
  47. package/cjs/graph/view-diff.js +93 -0
  48. package/cjs/graph/view-diff.js.map +1 -0
  49. package/cjs/index.d.ts +8 -1
  50. package/cjs/index.js +66 -2
  51. package/cjs/index.js.map +1 -1
  52. package/cjs/interactions/brush-base.js +1 -2
  53. package/cjs/interactions/brush-filter.js +2 -1
  54. package/cjs/interactions/fish-eye.js +1 -2
  55. package/cjs/interactions/index.js +2 -1
  56. package/cjs/interactions/tooltip.js +1 -1
  57. package/cjs/parse/event.d.ts +0 -2
  58. package/cjs/parse/event.js +4 -10
  59. package/cjs/parse/event.js.map +1 -1
  60. package/cjs/parse/util.js.map +1 -1
  61. package/cjs/transforms/data/pie.js +2 -2
  62. package/cjs/transforms/data/pie.js.map +1 -1
  63. package/cjs/transforms/util/util.d.ts +0 -2
  64. package/cjs/transforms/util/util.js +3 -13
  65. package/cjs/transforms/util/util.js.map +1 -1
  66. package/cjs/types/element.d.ts +1 -1
  67. package/cjs/types/element.js.map +1 -1
  68. package/cjs/types/morph.d.ts +1 -2
  69. package/cjs/types/morph.js.map +1 -1
  70. package/cjs/types/renderer.d.ts +6 -1
  71. package/cjs/types/renderer.js.map +1 -1
  72. package/cjs/view/View.d.ts +3 -6
  73. package/cjs/view/View.js +52 -105
  74. package/cjs/view/View.js.map +1 -1
  75. package/cjs/view/animate.js +2 -1
  76. package/cjs/view/animate.js.map +1 -1
  77. package/cjs/view/constants.d.ts +2 -0
  78. package/cjs/view/constants.js +3 -2
  79. package/cjs/view/constants.js.map +1 -1
  80. package/cjs/view/events.d.ts +0 -1
  81. package/cjs/view/events.js +3 -17
  82. package/cjs/view/events.js.map +1 -1
  83. package/cjs/view/glyph.d.ts +4 -0
  84. package/cjs/view/glyph.js +12 -3
  85. package/cjs/view/glyph.js.map +1 -1
  86. package/cjs/view/group.js +3 -3
  87. package/cjs/view/group.js.map +1 -1
  88. package/cjs/view/mark-animate-mixin.d.ts +1 -0
  89. package/cjs/view/mark-animate-mixin.js +29 -0
  90. package/cjs/view/mark-animate-mixin.js.map +1 -0
  91. package/cjs/view/mark.d.ts +2 -0
  92. package/cjs/view/mark.js +30 -23
  93. package/cjs/view/mark.js.map +1 -1
  94. package/cjs/view/view-animate-mixin.d.ts +1 -0
  95. package/cjs/view/view-animate-mixin.js +26 -0
  96. package/cjs/view/view-animate-mixin.js.map +1 -0
  97. package/cjs/view/view-event-mixin.d.ts +1 -0
  98. package/cjs/view/view-event-mixin.js +92 -0
  99. package/cjs/view/view-event-mixin.js.map +1 -0
  100. package/cjs/view/view-morph-mixin.d.ts +1 -0
  101. package/cjs/view/view-morph-mixin.js +32 -0
  102. package/cjs/view/view-morph-mixin.js.map +1 -0
  103. package/es/component/axis.d.ts +2 -0
  104. package/es/component/axis.js +10 -0
  105. package/es/component/axis.js.map +1 -1
  106. package/es/component/grid.d.ts +2 -0
  107. package/es/component/grid.js +10 -0
  108. package/es/component/grid.js.map +1 -1
  109. package/es/component/index.d.ts +2 -2
  110. package/es/component/index.js +2 -2
  111. package/es/component/index.js.map +1 -1
  112. package/es/core/factory.d.ts +8 -1
  113. package/es/core/factory.js +8 -1
  114. package/es/core/factory.js.map +1 -1
  115. package/es/glyph/boxplot.js +4 -2
  116. package/es/glyph/boxplot.js.map +1 -1
  117. package/es/glyph/link-path.js +4 -2
  118. package/es/glyph/link-path.js.map +1 -1
  119. package/es/glyph/ripple.js +3 -1
  120. package/es/glyph/ripple.js.map +1 -1
  121. package/es/glyph/tree-path.js +4 -2
  122. package/es/glyph/tree-path.js.map +1 -1
  123. package/es/glyph/violin.js +4 -2
  124. package/es/glyph/violin.js.map +1 -1
  125. package/es/glyph/wave.js +3 -1
  126. package/es/glyph/wave.js.map +1 -1
  127. package/es/graph/animation/animation/update.js +1 -3
  128. package/es/graph/animation/animation/update.js.map +1 -1
  129. package/es/graph/animation/morph.d.ts +2 -12
  130. package/es/graph/animation/morph.js +72 -159
  131. package/es/graph/animation/morph.js.map +1 -1
  132. package/es/graph/attributes/line.js.map +1 -1
  133. package/es/graph/canvas-renderer.d.ts +1 -1
  134. package/es/graph/canvas-renderer.js +5 -5
  135. package/es/graph/canvas-renderer.js.map +1 -1
  136. package/es/graph/element.d.ts +1 -0
  137. package/es/graph/element.js +13 -9
  138. package/es/graph/element.js.map +1 -1
  139. package/es/graph/glyph-element.js +3 -5
  140. package/es/graph/glyph-element.js.map +1 -1
  141. package/es/graph/layout/layout.d.ts +1 -0
  142. package/es/graph/layout/layout.js +6 -0
  143. package/es/graph/layout/layout.js.map +1 -1
  144. package/es/graph/mark/graphic.js +13 -7
  145. package/es/graph/mark/graphic.js.map +1 -1
  146. package/es/graph/util/point.js +10 -26
  147. package/es/graph/util/point.js.map +1 -1
  148. package/es/graph/view-diff.d.ts +8 -0
  149. package/es/graph/view-diff.js +89 -0
  150. package/es/graph/view-diff.js.map +1 -0
  151. package/es/index.d.ts +8 -1
  152. package/es/index.js +29 -1
  153. package/es/index.js.map +1 -1
  154. package/es/interactions/dimension-tooltip.js +1 -2
  155. package/es/interactions/element-highlight-by-group.js +2 -1
  156. package/es/interactions/element-highlight.js +1 -1
  157. package/es/interactions/element-select.js +1 -1
  158. package/es/interactions/filter.js +1 -1
  159. package/es/interactions/fish-eye.js +1 -1
  160. package/es/parse/event.d.ts +0 -2
  161. package/es/parse/event.js +3 -7
  162. package/es/parse/event.js.map +1 -1
  163. package/es/parse/option.js +1 -2
  164. package/es/parse/scale.js +2 -1
  165. package/es/parse/util.js.map +1 -1
  166. package/es/semantic-marks/cell.js +1 -1
  167. package/es/semantic-marks/interval.js +1 -1
  168. package/es/semantic-marks/text.js +1 -1
  169. package/es/transforms/data/pie.js +1 -1
  170. package/es/transforms/data/pie.js.map +1 -1
  171. package/es/transforms/util/util.d.ts +0 -2
  172. package/es/transforms/util/util.js +0 -10
  173. package/es/transforms/util/util.js.map +1 -1
  174. package/es/types/element.d.ts +1 -1
  175. package/es/types/element.js.map +1 -1
  176. package/es/types/morph.d.ts +1 -2
  177. package/es/types/morph.js.map +1 -1
  178. package/es/types/renderer.d.ts +6 -1
  179. package/es/types/renderer.js.map +1 -1
  180. package/es/view/View.d.ts +3 -6
  181. package/es/view/View.js +53 -114
  182. package/es/view/View.js.map +1 -1
  183. package/es/view/animate.js +2 -1
  184. package/es/view/animate.js.map +1 -1
  185. package/es/view/constants.d.ts +2 -0
  186. package/es/view/constants.js +4 -0
  187. package/es/view/constants.js.map +1 -1
  188. package/es/view/events.d.ts +0 -1
  189. package/es/view/events.js +1 -15
  190. package/es/view/events.js.map +1 -1
  191. package/es/view/glyph.d.ts +4 -0
  192. package/es/view/glyph.js +11 -0
  193. package/es/view/glyph.js.map +1 -1
  194. package/es/view/group.js +2 -4
  195. package/es/view/group.js.map +1 -1
  196. package/es/view/mark-animate-mixin.d.ts +1 -0
  197. package/es/view/mark-animate-mixin.js +25 -0
  198. package/es/view/mark-animate-mixin.js.map +1 -0
  199. package/es/view/mark.d.ts +2 -0
  200. package/es/view/mark.js +30 -25
  201. package/es/view/mark.js.map +1 -1
  202. package/es/view/view-animate-mixin.d.ts +1 -0
  203. package/es/view/view-animate-mixin.js +16 -0
  204. package/es/view/view-animate-mixin.js.map +1 -0
  205. package/es/view/view-event-mixin.d.ts +1 -0
  206. package/es/view/view-event-mixin.js +90 -0
  207. package/es/view/view-event-mixin.js.map +1 -0
  208. package/es/view/view-morph-mixin.d.ts +1 -0
  209. package/es/view/view-morph-mixin.js +22 -0
  210. package/es/view/view-morph-mixin.js.map +1 -0
  211. package/package.json +11 -11
  212. package/cjs/graph/util/element.d.ts +0 -2
  213. package/cjs/graph/util/element.js +0 -10
  214. package/cjs/graph/util/element.js.map +0 -1
  215. package/es/graph/util/element.d.ts +0 -2
  216. package/es/graph/util/element.js +0 -8
  217. package/es/graph/util/element.js.map +0 -1
@@ -24,17 +24,6 @@ function getOffsetPos(e) {
24
24
  };
25
25
  }
26
26
 
27
- function getBoundingClientRectPos(e, el) {
28
- const result = {
29
- canvasX: 0,
30
- canvasY: 0
31
- }, rect = el.getBoundingClientRect(), currentWidth = rect.width, widthRatio = currentWidth / (el.offsetWidth || currentWidth), currentHeight = rect.height, heightRatio = currentHeight / (el.offsetHeight || currentHeight);
32
- return [ "touchstart", "touchmove", "touchend" ].includes(e.type) && e.changedTouches && e.changedTouches.length ? (result.canvasX = (e.changedTouches[0].clientX - rect.left - (el.clientLeft || 0)) / widthRatio,
33
- result.canvasY = (e.changedTouches[0].clientY - rect.top - (el.clientTop || 0)) / heightRatio,
34
- result.clientX = e.changedTouches[0].clientX, result.clientY = e.changedTouches[0].clientY) : (result.canvasX = (e.clientX - rect.left - (el.clientLeft || 0)) / widthRatio,
35
- result.canvasY = (e.clientY - rect.top - (el.clientTop || 0)) / heightRatio), result;
36
- }
37
-
38
27
  function getXYPos(e) {
39
28
  return {
40
29
  canvasX: e.x,
@@ -43,25 +32,20 @@ function getXYPos(e) {
43
32
  }
44
33
 
45
34
  function getChangedTouchesPos(e) {
35
+ const pos = e.changedTouches[0];
46
36
  return {
47
- canvasX: e.changedTouches[0].x,
48
- canvasY: e.changedTouches[0].y
37
+ canvasX: pos.x,
38
+ canvasY: pos.y
49
39
  };
50
40
  }
51
41
 
52
42
  function defineSrPosition(event, pos, client = !0) {
53
- return isValidNumber(pos.canvasX) && Object.defineProperty(event, "canvasX", {
54
- value: pos.canvasX,
55
- writable: !0
56
- }), isValidNumber(pos.canvasY) && Object.defineProperty(event, "canvasY", {
57
- value: pos.canvasY,
58
- writable: !0
59
- }), client && isValidNumber(pos.clientX) && Object.defineProperty(event, "clientX", {
60
- value: pos.clientX,
61
- writable: !0
62
- }), client && isValidNumber(pos.clientY) && Object.defineProperty(event, "clientY", {
63
- value: pos.clientY,
64
- writable: !0
65
- }), [ pos.canvasX, pos.canvasY ];
43
+ const keys = [ "canvasX", "canvasY" ];
44
+ return client && (keys.push("clientX"), keys.push("clientY")), keys.forEach((key => {
45
+ isValidNumber(pos[key]) && Object.defineProperty(event, key, {
46
+ value: pos[key],
47
+ writable: !0
48
+ });
49
+ })), [ pos.canvasX, pos.canvasY ];
66
50
  }
67
51
  //# sourceMappingURL=point.js.map
@@ -1 +1 @@
1
- {"version":3,"sources":["../src/graph/util/point.ts"],"names":[],"mappings":"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","file":"point.js","sourcesContent":["import { isValidNumber, isNil } from '@visactor/vutils';\n\ninterface EventPosition {\n canvasX: number;\n canvasY: number;\n clientX?: number;\n clientY?: number;\n}\n\nexport function point(event: Event) {\n ['touches', 'changedTouches', 'targetTouches'].forEach(touchKey => {\n if (event[touchKey] && event[touchKey].length) {\n Array.from(event[touchKey]).forEach(touch => {\n const touchPosition = clientToLocal(touch as Event);\n defineSrPosition(touch, touchPosition, false);\n });\n }\n });\n\n const pos = clientToLocal(event);\n return defineSrPosition(event, pos);\n}\n\nfunction clientToLocal(e: Event): EventPosition {\n // For IE6+, chrome, safari, opera. (When will ff support offsetX?)\n if (!isNil((e as any).offsetX)) {\n return getOffsetPos(e);\n }\n\n // if (el && el.getBoundingClientRect) {\n // return getBoundingClientRectPos(e, el);\n // }\n\n // for miniApp\n if (!isNil((e as any).x)) {\n return getXYPos(e);\n }\n\n // for miniApp\n if ((e as any).changedTouches && (e as any).changedTouches.length) {\n return getChangedTouchesPos(e);\n }\n\n // For some other device, e.g., IOS safari.\n return {\n canvasX: 0,\n canvasY: 0\n };\n}\n\nfunction getOffsetPos(e: any) {\n return {\n canvasX: e.offsetX,\n canvasY: e.offsetY\n };\n}\n\nfunction getBoundingClientRectPos(e: any, el: HTMLElement) {\n const result: EventPosition = { canvasX: 0, canvasY: 0 };\n const rect = el.getBoundingClientRect();\n const currentWidth = rect.width;\n const originWidth = el.offsetWidth || currentWidth;\n const widthRatio = currentWidth / originWidth;\n const currentHeight = rect.height;\n const originHeight = el.offsetHeight || currentHeight;\n const heightRatio = currentHeight / originHeight;\n if (['touchstart', 'touchmove', 'touchend'].includes(e.type) && e.changedTouches && e.changedTouches.length) {\n result.canvasX = (e.changedTouches[0].clientX - rect.left - (el.clientLeft || 0)) / widthRatio;\n result.canvasY = (e.changedTouches[0].clientY - rect.top - (el.clientTop || 0)) / heightRatio;\n result.clientX = e.changedTouches[0].clientX;\n result.clientY = e.changedTouches[0].clientY;\n } else {\n result.canvasX = (e.clientX - rect.left - (el.clientLeft || 0)) / widthRatio;\n result.canvasY = (e.clientY - rect.top - (el.clientTop || 0)) / heightRatio;\n }\n return result;\n}\n\nfunction getXYPos(e: any) {\n return { canvasX: e.x, canvasY: e.y };\n}\n\nfunction getChangedTouchesPos(e: any) {\n return { canvasX: e.changedTouches[0].x, canvasY: e.changedTouches[0].y };\n}\n\nfunction defineSrPosition(event: any, pos: EventPosition, client = true) {\n isValidNumber(pos.canvasX) &&\n Object.defineProperty(event, 'canvasX', {\n value: pos.canvasX,\n writable: true\n });\n isValidNumber(pos.canvasY) &&\n Object.defineProperty(event, 'canvasY', {\n value: pos.canvasY,\n writable: true\n });\n client &&\n isValidNumber(pos.clientX) &&\n Object.defineProperty(event, 'clientX', {\n value: pos.clientX,\n writable: true\n });\n client &&\n isValidNumber(pos.clientY) &&\n Object.defineProperty(event, 'clientY', {\n value: pos.clientY,\n writable: true\n });\n return [pos.canvasX, pos.canvasY];\n}\n"]}
1
+ {"version":3,"sources":["../src/graph/util/point.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,aAAa,EAAE,KAAK,EAAE,MAAM,kBAAkB,CAAC;AASxD,MAAM,UAAU,KAAK,CAAC,KAAY;IAChC,CAAC,SAAS,EAAE,gBAAgB,EAAE,eAAe,CAAC,CAAC,OAAO,CAAC,QAAQ,CAAC,EAAE;QAChE,IAAI,KAAK,CAAC,QAAQ,CAAC,IAAI,KAAK,CAAC,QAAQ,CAAC,CAAC,MAAM,EAAE;YAC7C,KAAK,CAAC,IAAI,CAAC,KAAK,CAAC,QAAQ,CAAC,CAAC,CAAC,OAAO,CAAC,KAAK,CAAC,EAAE;gBAC1C,MAAM,aAAa,GAAG,aAAa,CAAC,KAAc,CAAC,CAAC;gBACpD,gBAAgB,CAAC,KAAK,EAAE,aAAa,EAAE,KAAK,CAAC,CAAC;YAChD,CAAC,CAAC,CAAC;SACJ;IACH,CAAC,CAAC,CAAC;IAEH,MAAM,GAAG,GAAG,aAAa,CAAC,KAAK,CAAC,CAAC;IACjC,OAAO,gBAAgB,CAAC,KAAK,EAAE,GAAG,CAAC,CAAC;AACtC,CAAC;AAED,SAAS,aAAa,CAAC,CAAQ;IAE7B,IAAI,CAAC,KAAK,CAAE,CAAS,CAAC,OAAO,CAAC,EAAE;QAC9B,OAAO,YAAY,CAAC,CAAC,CAAC,CAAC;KACxB;IAGD,IAAI,CAAC,KAAK,CAAE,CAAS,CAAC,CAAC,CAAC,EAAE;QACxB,OAAO,QAAQ,CAAC,CAAC,CAAC,CAAC;KACpB;IAGD,IAAK,CAAS,CAAC,cAAc,IAAK,CAAS,CAAC,cAAc,CAAC,MAAM,EAAE;QACjE,OAAO,oBAAoB,CAAC,CAAC,CAAC,CAAC;KAChC;IAGD,OAAO;QACL,OAAO,EAAE,CAAC;QACV,OAAO,EAAE,CAAC;KACX,CAAC;AACJ,CAAC;AAED,SAAS,YAAY,CAAC,CAAM;IAC1B,OAAO;QACL,OAAO,EAAE,CAAC,CAAC,OAAO;QAClB,OAAO,EAAE,CAAC,CAAC,OAAO;KACnB,CAAC;AACJ,CAAC;AAED,SAAS,QAAQ,CAAC,CAAM;IACtB,OAAO,EAAE,OAAO,EAAE,CAAC,CAAC,CAAC,EAAE,OAAO,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;AACxC,CAAC;AAED,SAAS,oBAAoB,CAAC,CAAM;IAClC,MAAM,GAAG,GAAG,CAAC,CAAC,cAAc,CAAC,CAAC,CAAC,CAAC;IAChC,OAAO,EAAE,OAAO,EAAE,GAAG,CAAC,CAAC,EAAE,OAAO,EAAE,GAAG,CAAC,CAAC,EAAE,CAAC;AAC5C,CAAC;AAED,SAAS,gBAAgB,CAAC,KAAU,EAAE,GAAkB,EAAE,MAAM,GAAG,IAAI;IACrE,MAAM,IAAI,GAAG,CAAC,SAAS,EAAE,SAAS,CAAC,CAAC;IAEpC,IAAI,MAAM,EAAE;QACV,IAAI,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;QACrB,IAAI,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;KACtB;IAED,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,EAAE;QACjB,aAAa,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;YACrB,MAAM,CAAC,cAAc,CAAC,KAAK,EAAE,GAAG,EAAE;gBAChC,KAAK,EAAE,GAAG,CAAC,GAAG,CAAC;gBACf,QAAQ,EAAE,IAAI;aACf,CAAC,CAAC;IACP,CAAC,CAAC,CAAC;IAEH,OAAO,CAAC,GAAG,CAAC,OAAO,EAAE,GAAG,CAAC,OAAO,CAAC,CAAC;AACpC,CAAC","file":"point.js","sourcesContent":["import { isValidNumber, isNil } from '@visactor/vutils';\n\ninterface EventPosition {\n canvasX: number;\n canvasY: number;\n clientX?: number;\n clientY?: number;\n}\n\nexport function point(event: Event) {\n ['touches', 'changedTouches', 'targetTouches'].forEach(touchKey => {\n if (event[touchKey] && event[touchKey].length) {\n Array.from(event[touchKey]).forEach(touch => {\n const touchPosition = clientToLocal(touch as Event);\n defineSrPosition(touch, touchPosition, false);\n });\n }\n });\n\n const pos = clientToLocal(event);\n return defineSrPosition(event, pos);\n}\n\nfunction clientToLocal(e: Event): EventPosition {\n // For IE6+, chrome, safari, opera. (When will ff support offsetX?)\n if (!isNil((e as any).offsetX)) {\n return getOffsetPos(e);\n }\n\n // for miniApp\n if (!isNil((e as any).x)) {\n return getXYPos(e);\n }\n\n // for miniApp\n if ((e as any).changedTouches && (e as any).changedTouches.length) {\n return getChangedTouchesPos(e);\n }\n\n // For some other device, e.g., IOS safari.\n return {\n canvasX: 0,\n canvasY: 0\n };\n}\n\nfunction getOffsetPos(e: any) {\n return {\n canvasX: e.offsetX,\n canvasY: e.offsetY\n };\n}\n\nfunction getXYPos(e: any) {\n return { canvasX: e.x, canvasY: e.y };\n}\n\nfunction getChangedTouchesPos(e: any) {\n const pos = e.changedTouches[0];\n return { canvasX: pos.x, canvasY: pos.y };\n}\n\nfunction defineSrPosition(event: any, pos: EventPosition, client = true) {\n const keys = ['canvasX', 'canvasY'];\n\n if (client) {\n keys.push('clientX');\n keys.push('clientY');\n }\n\n keys.forEach(key => {\n isValidNumber(pos[key]) &&\n Object.defineProperty(event, key, {\n value: pos[key],\n writable: true\n });\n });\n\n return [pos.canvasX, pos.canvasY];\n}\n"]}
@@ -0,0 +1,8 @@
1
+ import type { IGrammarBase, IMark, IRunningConfig } from '../types';
2
+ import type { DiffResult } from '../types/base';
3
+ import type { IViewDiff } from '../types/morph';
4
+ export declare class ViewDiff implements IViewDiff {
5
+ diffGrammar<U extends IGrammarBase>(prevGrammars: U[], nextGrammars: U[]): DiffResult<U, U>;
6
+ diffMark(prevMarks: IMark[], nextMarks: IMark[], runningConfig: IRunningConfig): DiffResult<IMark[], IMark[]>;
7
+ private diffUpdateByGroup;
8
+ }
@@ -0,0 +1,89 @@
1
+ import { diffSingle, groupData } from "./mark/differ";
2
+
3
+ import { GrammarMarkType } from "./enums";
4
+
5
+ const EmptyKey = Symbol.for("key");
6
+
7
+ export class ViewDiff {
8
+ diffGrammar(prevGrammars, nextGrammars) {
9
+ return diffSingle(prevGrammars, nextGrammars, (grammar => {
10
+ var _a;
11
+ return null !== (_a = grammar.id()) && void 0 !== _a ? _a : Symbol();
12
+ }));
13
+ }
14
+ diffMark(prevMarks, nextMarks, runningConfig) {
15
+ const diffResult = {
16
+ enter: [],
17
+ exit: [],
18
+ update: []
19
+ };
20
+ let prevDiffMarks = [], nextDiffMarks = [];
21
+ prevMarks.forEach((mark => {
22
+ mark.markType !== GrammarMarkType.group && (runningConfig.morph && mark.getMorphConfig().morph || runningConfig.morphAll || runningConfig.reuse) ? prevDiffMarks.push(mark) : diffResult.exit.push({
23
+ prev: [ mark ]
24
+ });
25
+ })), nextMarks.forEach((mark => {
26
+ mark.markType !== GrammarMarkType.group && (runningConfig.morph && mark.getMorphConfig().morph || runningConfig.morphAll || runningConfig.reuse) ? nextDiffMarks.push(mark) : diffResult.enter.push({
27
+ next: [ mark ]
28
+ });
29
+ }));
30
+ const keyDiffResult = this.diffUpdateByGroup(prevDiffMarks, nextDiffMarks, (mark => mark.getMorphConfig().morphKey), (mark => mark.getMorphConfig().morphKey));
31
+ prevDiffMarks = keyDiffResult.prev, nextDiffMarks = keyDiffResult.next, diffResult.update = diffResult.update.concat(keyDiffResult.update);
32
+ const nameDiffResult = this.diffUpdateByGroup(prevDiffMarks, nextDiffMarks, (mark => mark.id()), (mark => mark.id()));
33
+ prevDiffMarks = nameDiffResult.prev, nextDiffMarks = nameDiffResult.next, diffResult.update = diffResult.update.concat(nameDiffResult.update);
34
+ const prevParentGroup = groupData(prevDiffMarks, (mark => {
35
+ var _a, _b;
36
+ return null === (_b = null === (_a = mark.group) || void 0 === _a ? void 0 : _a.id) || void 0 === _b ? void 0 : _b.call(_a);
37
+ })), nextParentGroup = groupData(nextDiffMarks, (mark => {
38
+ var _a, _b;
39
+ return null === (_b = null === (_a = mark.group) || void 0 === _a ? void 0 : _a.id) || void 0 === _b ? void 0 : _b.call(_a);
40
+ }));
41
+ return Object.keys(nextParentGroup).forEach((groupName => {
42
+ const prevChildren = prevParentGroup.data.get(groupName), nextChildren = nextParentGroup.data.get(groupName);
43
+ if (prevChildren && nextChildren) {
44
+ for (let i = 0; i < Math.max(prevChildren.length, nextChildren.length); i += 1) {
45
+ const prevChild = prevChildren[i], nextChild = nextChildren[i];
46
+ prevChild && nextChild ? diffResult.update.push({
47
+ prev: [ prevChild ],
48
+ next: [ nextChild ]
49
+ }) : prevChild ? diffResult.exit.push({
50
+ prev: [ prevChild ]
51
+ }) : nextChild && diffResult.enter.push({
52
+ next: [ nextChild ]
53
+ });
54
+ }
55
+ prevDiffMarks = prevDiffMarks.filter((mark => !prevChildren.includes(mark))), nextDiffMarks = nextDiffMarks.filter((mark => !nextChildren.includes(mark)));
56
+ }
57
+ })), prevDiffMarks.forEach((mark => diffResult.exit.push({
58
+ prev: [ mark ]
59
+ }))), nextDiffMarks.forEach((mark => diffResult.enter.push({
60
+ next: [ mark ]
61
+ }))), diffResult;
62
+ }
63
+ diffUpdateByGroup(prev, next, prevKey, nextKey) {
64
+ const prevGroup = groupData(prev, (datum => {
65
+ var _a;
66
+ return null !== (_a = prevKey(datum)) && void 0 !== _a ? _a : EmptyKey;
67
+ })), nextGroup = groupData(next, (datum => {
68
+ var _a;
69
+ return null !== (_a = nextKey(datum)) && void 0 !== _a ? _a : EmptyKey;
70
+ }));
71
+ let prevAfterDiff = prev, nextAfterDiff = next;
72
+ const update = [];
73
+ return nextGroup.keys.forEach((key => {
74
+ if (key !== EmptyKey) {
75
+ const prevKeyData = prevGroup.data.get(key), nextKeyData = nextGroup.data.get(key);
76
+ prevKeyData && nextKeyData && (update.push({
77
+ prev: prevKeyData,
78
+ next: nextKeyData
79
+ }), prevAfterDiff = prevAfterDiff.filter((datum => !prevKeyData.includes(datum))),
80
+ nextAfterDiff = nextAfterDiff.filter((datum => !nextKeyData.includes(datum))));
81
+ }
82
+ })), {
83
+ prev: prevAfterDiff,
84
+ next: nextAfterDiff,
85
+ update: update
86
+ };
87
+ }
88
+ }
89
+ //# sourceMappingURL=view-diff.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../src/graph/view-diff.ts"],"names":[],"mappings":"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","file":"view-diff.js","sourcesContent":["import type { IGrammarBase, IMark, IRunningConfig, MarkSpec } from '../types';\nimport type { DiffResult } from '../types/base';\nimport type { IViewDiff } from '../types/morph';\nimport { diffSingle, groupData } from './mark/differ';\nimport { GrammarMarkType } from './enums';\n\nconst EmptyKey = Symbol.for('key');\n\nexport class ViewDiff implements IViewDiff {\n diffGrammar<U extends IGrammarBase>(prevGrammars: U[], nextGrammars: U[]): DiffResult<U, U> {\n const key = (grammar: U) => grammar.id() ?? Symbol();\n return diffSingle(prevGrammars, nextGrammars, key);\n }\n\n diffMark(prevMarks: IMark[], nextMarks: IMark[], runningConfig: IRunningConfig): DiffResult<IMark[], IMark[]> {\n const diffResult: DiffResult<IMark[], IMark[]> = {\n enter: [],\n exit: [],\n update: []\n };\n\n let prevDiffMarks: IMark[] = [];\n let nextDiffMarks: IMark[] = [];\n\n // filter out marks & specs which will not morph\n prevMarks.forEach(mark => {\n if (\n // group mark does not support reusing or morphing\n mark.markType !== GrammarMarkType.group &&\n ((runningConfig.morph && mark.getMorphConfig().morph) || runningConfig.morphAll || runningConfig.reuse)\n ) {\n prevDiffMarks.push(mark);\n } else {\n diffResult.exit.push({ prev: [mark] });\n }\n });\n nextMarks.forEach(mark => {\n if (\n mark.markType !== GrammarMarkType.group &&\n ((runningConfig.morph && mark.getMorphConfig().morph) || runningConfig.morphAll || runningConfig.reuse)\n ) {\n nextDiffMarks.push(mark);\n } else {\n diffResult.enter.push({ next: [mark] });\n }\n });\n\n // 1. match by custom key\n const keyDiffResult = this.diffUpdateByGroup(\n prevDiffMarks,\n nextDiffMarks,\n mark => mark.getMorphConfig().morphKey,\n mark => mark.getMorphConfig().morphKey\n );\n prevDiffMarks = keyDiffResult.prev;\n nextDiffMarks = keyDiffResult.next;\n diffResult.update = diffResult.update.concat(keyDiffResult.update);\n\n // 2. match by name\n const nameDiffResult = this.diffUpdateByGroup(\n prevDiffMarks,\n nextDiffMarks,\n mark => mark.id(),\n mark => mark.id()\n );\n prevDiffMarks = nameDiffResult.prev;\n nextDiffMarks = nameDiffResult.next;\n diffResult.update = diffResult.update.concat(nameDiffResult.update);\n\n // 3. match by index\n\n // FIXME: mark index cannot be get before executing, index is decided by remove/order for now\n const prevParentGroup = groupData(prevDiffMarks, mark => mark.group?.id?.());\n const nextParentGroup = groupData(nextDiffMarks, mark => mark.group?.id?.());\n\n Object.keys(nextParentGroup).forEach(groupName => {\n const prevChildren = prevParentGroup.data.get(groupName);\n const nextChildren = nextParentGroup.data.get(groupName);\n if (prevChildren && nextChildren) {\n for (let i = 0; i < Math.max(prevChildren.length, nextChildren.length); i += 1) {\n const prevChild = prevChildren[i];\n const nextChild = nextChildren[i];\n if (prevChild && nextChild) {\n diffResult.update.push({ prev: [prevChild], next: [nextChild] });\n } else if (prevChild) {\n diffResult.exit.push({ prev: [prevChild] });\n } else if (nextChild) {\n diffResult.enter.push({ next: [nextChild] });\n }\n }\n\n prevDiffMarks = prevDiffMarks.filter(mark => !prevChildren.includes(mark));\n nextDiffMarks = nextDiffMarks.filter(mark => !nextChildren.includes(mark));\n }\n });\n\n // 4. handle unmatched marks\n prevDiffMarks.forEach(mark => diffResult.exit.push({ prev: [mark] }));\n nextDiffMarks.forEach(mark => diffResult.enter.push({ next: [mark] }));\n\n return diffResult;\n }\n\n private diffUpdateByGroup<U extends IMark | MarkSpec, V extends IMark | MarkSpec>(\n prev: U[],\n next: V[],\n prevKey: (datum: U) => symbol | string,\n nextKey: (datum: V) => symbol | string\n ) {\n const prevGroup = groupData(prev, datum => prevKey(datum) ?? EmptyKey);\n const nextGroup = groupData(next, datum => nextKey(datum) ?? EmptyKey);\n\n let prevAfterDiff = prev;\n let nextAfterDiff = next;\n const update: { prev: U[]; next: V[] }[] = [];\n nextGroup.keys.forEach(key => {\n if (key !== EmptyKey) {\n const prevKeyData = prevGroup.data.get(key);\n const nextKeyData = nextGroup.data.get(key);\n if (prevKeyData && nextKeyData) {\n update.push({ prev: prevKeyData, next: nextKeyData });\n prevAfterDiff = prevAfterDiff.filter(datum => !prevKeyData.includes(datum));\n nextAfterDiff = nextAfterDiff.filter(datum => !nextKeyData.includes(datum));\n }\n }\n });\n return {\n prev: prevAfterDiff,\n next: nextAfterDiff,\n update\n };\n }\n}\n"]}
package/es/index.d.ts CHANGED
@@ -1,4 +1,4 @@
1
- export declare const version = "0.14.0-alpha.3";
1
+ export declare const version = "0.14.0-alpha.5";
2
2
  export * from './graph';
3
3
  export * from './interactions';
4
4
  export { View } from './view';
@@ -10,6 +10,8 @@ export * from './util/text';
10
10
  export * from './types';
11
11
  export { Factory } from './core/factory';
12
12
  export { SIGNAL_AUTOFIT, SIGNAL_HEIGHT, SIGNAL_PADDING, SIGNAL_VIEW_HEIGHT, SIGNAL_VIEW_WIDTH, SIGNAL_WIDTH, SIGNAL_VIEW_BOX } from './view/constants';
13
+ export { registerViewEventsAPI } from './view/view-event-mixin';
14
+ export { registerViewMorphAPI } from './view/view-morph-mixin';
13
15
  export { ThemeManager } from './theme/theme-manager';
14
16
  export * from './glyph';
15
17
  export * from './component';
@@ -21,3 +23,8 @@ export * from './interactions';
21
23
  export * from './semantic-marks/cell';
22
24
  export * from './semantic-marks/interval';
23
25
  export * from './graph/mark/graphic';
26
+ export { registerDefaultLayout, defaultDoLayout } from './graph/layout/layout';
27
+ export { registerGlyphMark, GlyphMark } from './view/glyph';
28
+ export declare const registerDragPlugin: () => void;
29
+ export declare const registerGesturePlugin: () => void;
30
+ export declare const registerAnimate: () => void;
package/es/index.js CHANGED
@@ -1,4 +1,4 @@
1
- export const version = "0.14.0-alpha.3";
1
+ export const version = "0.14.0-alpha.5";
2
2
 
3
3
  export * from "./graph";
4
4
 
@@ -22,6 +22,10 @@ export { Factory } from "./core/factory";
22
22
 
23
23
  export { SIGNAL_AUTOFIT, SIGNAL_HEIGHT, SIGNAL_PADDING, SIGNAL_VIEW_HEIGHT, SIGNAL_VIEW_WIDTH, SIGNAL_WIDTH, SIGNAL_VIEW_BOX } from "./view/constants";
24
24
 
25
+ export { registerViewEventsAPI } from "./view/view-event-mixin";
26
+
27
+ export { registerViewMorphAPI } from "./view/view-morph-mixin";
28
+
25
29
  export { ThemeManager } from "./theme/theme-manager";
26
30
 
27
31
  export * from "./glyph";
@@ -43,4 +47,28 @@ export * from "./semantic-marks/cell";
43
47
  export * from "./semantic-marks/interval";
44
48
 
45
49
  export * from "./graph/mark/graphic";
50
+
51
+ export { registerDefaultLayout, defaultDoLayout } from "./graph/layout/layout";
52
+
53
+ export { registerGlyphMark, GlyphMark } from "./view/glyph";
54
+
55
+ import { DragNDrop, Gesture } from "@visactor/vrender-kits";
56
+
57
+ import { Factory } from "./core/factory";
58
+
59
+ export const registerDragPlugin = () => {
60
+ Factory.registerStageEventPlugin("drag", DragNDrop);
61
+ };
62
+
63
+ export const registerGesturePlugin = () => {
64
+ Factory.registerStageEventPlugin("gesture", Gesture);
65
+ };
66
+
67
+ import { registerViewAnimateAPI } from "./view/view-animate-mixin";
68
+
69
+ import { registerMarkAnimateAPI } from "./view/mark-animate-mixin";
70
+
71
+ export const registerAnimate = () => {
72
+ registerViewAnimateAPI(), registerMarkAnimateAPI();
73
+ };
46
74
  //# sourceMappingURL=index.js.map
package/es/index.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"sources":["../src/index.ts"],"names":[],"mappings":"AACA,MAAM,CAAC,MAAM,OAAO,GAAG,gBAAgB,CAAC;AAExC,cAAc,SAAS,CAAC;AAExB,cAAc,gBAAgB,CAAC;AAE/B,OAAO,EAAE,IAAI,EAAE,MAAM,QAAQ,CAAC;AAC9B,OAAO,EAAE,KAAK,EAAE,aAAa,EAAE,MAAM,cAAc,CAAC;AACpD,OAAO,EAAE,UAAU,EAAE,kBAAkB,EAAE,MAAM,mBAAmB,CAAC;AACnE,OAAO,EAAE,iBAAiB,EAAE,kBAAkB,EAAE,MAAM,cAAc,CAAC;AACrE,OAAO,EAAE,WAAW,EAAE,MAAM,qBAAqB,CAAC;AAClD,cAAc,aAAa,CAAC;AAC5B,cAAc,SAAS,CAAC;AACxB,OAAO,EAAE,OAAO,EAAE,MAAM,gBAAgB,CAAC;AACzC,OAAO,EACL,cAAc,EACd,aAAa,EACb,cAAc,EACd,kBAAkB,EAClB,iBAAiB,EACjB,YAAY,EACZ,eAAe,EAChB,MAAM,kBAAkB,CAAC;AAE1B,OAAO,EAAE,YAAY,EAAE,MAAM,uBAAuB,CAAC;AAErD,cAAc,SAAS,CAAC;AACxB,cAAc,aAAa,CAAC;AAC5B,cAAc,cAAc,CAAC;AAC7B,cAAc,6BAA6B,CAAC;AAE5C,OAAO,EAAE,OAAO,EAAE,MAAM,wBAAwB,CAAC;AACjD,cAAc,OAAO,CAAC;AACtB,cAAc,gBAAgB,CAAC;AAC/B,cAAc,uBAAuB,CAAC;AACtC,cAAc,2BAA2B,CAAC;AAC1C,cAAc,sBAAsB,CAAC","file":"index.js","sourcesContent":["// -- Exports -----\nexport const version = \"0.14.0-alpha.3\";\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"]}
1
+ {"version":3,"sources":["../src/index.ts"],"names":[],"mappings":"AACA,MAAM,CAAC,MAAM,OAAO,GAAG,gBAAgB,CAAC;AAExC,cAAc,SAAS,CAAC;AAExB,cAAc,gBAAgB,CAAC;AAE/B,OAAO,EAAE,IAAI,EAAE,MAAM,QAAQ,CAAC;AAC9B,OAAO,EAAE,KAAK,EAAE,aAAa,EAAE,MAAM,cAAc,CAAC;AACpD,OAAO,EAAE,UAAU,EAAE,kBAAkB,EAAE,MAAM,mBAAmB,CAAC;AACnE,OAAO,EAAE,iBAAiB,EAAE,kBAAkB,EAAE,MAAM,cAAc,CAAC;AACrE,OAAO,EAAE,WAAW,EAAE,MAAM,qBAAqB,CAAC;AAClD,cAAc,aAAa,CAAC;AAC5B,cAAc,SAAS,CAAC;AACxB,OAAO,EAAE,OAAO,EAAE,MAAM,gBAAgB,CAAC;AACzC,OAAO,EACL,cAAc,EACd,aAAa,EACb,cAAc,EACd,kBAAkB,EAClB,iBAAiB,EACjB,YAAY,EACZ,eAAe,EAChB,MAAM,kBAAkB,CAAC;AAC1B,OAAO,EAAE,qBAAqB,EAAE,MAAM,yBAAyB,CAAC;AAChE,OAAO,EAAE,oBAAoB,EAAE,MAAM,yBAAyB,CAAC;AAE/D,OAAO,EAAE,YAAY,EAAE,MAAM,uBAAuB,CAAC;AAErD,cAAc,SAAS,CAAC;AACxB,cAAc,aAAa,CAAC;AAC5B,cAAc,cAAc,CAAC;AAC7B,cAAc,6BAA6B,CAAC;AAE5C,OAAO,EAAE,OAAO,EAAE,MAAM,wBAAwB,CAAC;AACjD,cAAc,OAAO,CAAC;AACtB,cAAc,gBAAgB,CAAC;AAC/B,cAAc,uBAAuB,CAAC;AACtC,cAAc,2BAA2B,CAAC;AAC1C,cAAc,sBAAsB,CAAC;AACrC,OAAO,EAAE,qBAAqB,EAAE,eAAe,EAAE,MAAM,uBAAuB,CAAC;AAC/E,OAAO,EAAE,iBAAiB,EAAE,SAAS,EAAE,MAAM,cAAc,CAAC;AAE5D,OAAO,EAAE,SAAS,EAAE,OAAO,EAAE,MAAM,wBAAwB,CAAC;AAC5D,OAAO,EAAE,OAAO,EAAE,MAAM,gBAAgB,CAAC;AAEzC,MAAM,CAAC,MAAM,kBAAkB,GAAG,GAAG,EAAE;IACrC,OAAO,CAAC,wBAAwB,CAAC,MAAM,EAAE,SAAS,CAAC,CAAC;AACtD,CAAC,CAAC;AAEF,MAAM,CAAC,MAAM,qBAAqB,GAAG,GAAG,EAAE;IACxC,OAAO,CAAC,wBAAwB,CAAC,SAAS,EAAE,OAAO,CAAC,CAAC;AACvD,CAAC,CAAC;AAEF,OAAO,EAAE,sBAAsB,EAAE,MAAM,2BAA2B,CAAC;AACnE,OAAO,EAAE,sBAAsB,EAAE,MAAM,2BAA2B,CAAC;AAEnE,MAAM,CAAC,MAAM,eAAe,GAAG,GAAG,EAAE;IAClC,sBAAsB,EAAE,CAAC;IACzB,sBAAsB,EAAE,CAAC;AAC3B,CAAC,CAAC","file":"index.js","sourcesContent":["// -- Exports -----\nexport const version = \"0.14.0-alpha.5\";\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"]}
@@ -96,5 +96,4 @@ export class DimensionTooltip extends BaseTooltip {
96
96
  DimensionTooltip.type = "dimension-tooltip", DimensionTooltip.defaultOptions = {
97
97
  trigger: "pointermove",
98
98
  triggerOff: "pointerleave"
99
- };
100
- //# sourceMappingURL=dimension-tooltip.js.map
99
+ };
@@ -60,4 +60,5 @@ ElementHighlightByGroup.type = "element-highlight-by-group", ElementHighlightByG
60
60
  blurState: InteractionStateEnum.blur,
61
61
  trigger: "pointerover",
62
62
  triggerOff: "pointerout"
63
- };
63
+ };
64
+ //# sourceMappingURL=element-highlight-by-group.js.map
@@ -61,4 +61,4 @@ ElementHighlight.type = "element-highlight", ElementHighlight.defaultOptions = {
61
61
  trigger: "pointerover",
62
62
  triggerOff: "pointerout"
63
63
  };
64
- //# sourceMappingURL=element-highlight.js.map
64
+ //# sourceMappingURL=element-highlight.js.map
@@ -63,4 +63,4 @@ ElementSelect.type = "element-select", ElementSelect.defaultOptions = {
63
63
  state: InteractionStateEnum.selected,
64
64
  trigger: "click"
65
65
  };
66
- //# sourceMappingURL=element-select.js.map
66
+ //# sourceMappingURL=element-select.js.map
@@ -28,4 +28,4 @@ export class Filter extends BaseInteraction {
28
28
  }
29
29
 
30
30
  Filter.defaultOptions = {};
31
- //# sourceMappingURL=filter.js.map
31
+ //# sourceMappingURL=filter.js.map
@@ -96,4 +96,4 @@ FishEye.type = "fish-eye", FishEye.defaultOptions = {
96
96
  distortionY: 2,
97
97
  throttle: 100
98
98
  };
99
- //# sourceMappingURL=fish-eye.js.map
99
+ //# sourceMappingURL=fish-eye.js.map
@@ -5,6 +5,4 @@ export declare const parseHandler: (callback: EventCallback, config: {
5
5
  debounce?: number;
6
6
  throttle?: number;
7
7
  }) => (...args: any[]) => any;
8
- export declare const NAME_PREFIX = "@";
9
- export declare const ID_PREFIX = "#";
10
8
  export declare const parseEventSelector: (selector: string, source?: EventSourceType) => Partial<ParsedViewEventSpec | ParsedWindowEventSpec>;
package/es/parse/event.js CHANGED
@@ -2,23 +2,19 @@ import { debounce, isNil, throttle } from "@visactor/vutils";
2
2
 
3
3
  import { isMarkType } from "../graph/util/graphic";
4
4
 
5
- import { EVENT_SOURCE_VIEW, EVENT_SOURCE_WINDOW } from "../view/constants";
5
+ import { EVENT_SOURCE_VIEW, EVENT_SOURCE_WINDOW, ID_PREFIX, NAME_PREFIX } from "../view/constants";
6
6
 
7
- export const generateFilterByMark = evtSpec => isNil(evtSpec.markId) ? el => el && el.mark.id() === evtSpec.markId : isNil(evtSpec.markName) ? el => el && el.mark.name() === evtSpec.markName : isNil(evtSpec.type) ? el => el && el.mark.markType === evtSpec.type : () => !0;
7
+ export const generateFilterByMark = evtSpec => isNil(evtSpec.markId) ? isNil(evtSpec.markName) ? isNil(evtSpec.markType) ? () => !0 : el => el && el.mark.markType === evtSpec.markType : el => el && el.mark.name() === evtSpec.markName : el => el && el.mark.id() === evtSpec.markId;
8
8
 
9
9
  export const parseHandler = (callback, config) => config && config.debounce ? debounce(callback, config.debounce) : config && config.throttle ? throttle(callback, config.throttle) : callback;
10
10
 
11
11
  const JOIN_SYMBOL = ":";
12
12
 
13
- export const NAME_PREFIX = "@";
14
-
15
- export const ID_PREFIX = "#";
16
-
17
13
  export const parseEventSelector = (selector, source = EVENT_SOURCE_VIEW) => {
18
14
  const spec = {}, splitArr = selector.split(":");
19
15
  if (2 === splitArr.length) {
20
16
  const [space, eventType] = splitArr;
21
- "#" === space[0] ? (spec.markId = space.slice(1), spec.source = source) : "@" === space[0] ? (spec.markName = space.slice(1),
17
+ space[0] === ID_PREFIX ? (spec.markId = space.slice(1), spec.source = source) : space[0] === NAME_PREFIX ? (spec.markName = space.slice(1),
22
18
  spec.source = source) : isMarkType(space) ? (spec.markType = space, spec.source = source) : spec.source = space === EVENT_SOURCE_WINDOW ? EVENT_SOURCE_WINDOW : source,
23
19
  spec.type = eventType;
24
20
  } else 1 === splitArr.length && (spec.type = selector, spec.source = source);
@@ -1 +1 @@
1
- {"version":3,"sources":["../src/parse/event.ts"],"names":[],"mappings":"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","file":"event.js","sourcesContent":["import { debounce, isNil, throttle } from '@visactor/vutils';\nimport type {\n EventSourceType,\n ParsedViewEventSpec,\n ParsedWindowEventSpec,\n EventCallback,\n MarkType,\n IElement\n} from '../types';\nimport { isMarkType } from '../graph/util/graphic';\nimport { EVENT_SOURCE_VIEW, EVENT_SOURCE_WINDOW } from '../view/constants';\n\nexport const generateFilterByMark = (evtSpec: Partial<ParsedViewEventSpec | ParsedWindowEventSpec>) => {\n if (isNil(evtSpec.markId)) {\n return (el: IElement) => {\n return el && el.mark.id() === evtSpec.markId;\n };\n }\n\n if (isNil(evtSpec.markName)) {\n return (el: IElement) => {\n return el && el.mark.name() === evtSpec.markName;\n };\n }\n\n if (isNil(evtSpec.type)) {\n return (el: IElement) => {\n return el && el.mark.markType === evtSpec.type;\n };\n }\n\n return () => true;\n};\n\nexport const parseHandler = (callback: EventCallback, config: { debounce?: number; throttle?: number }) => {\n if (config && config.debounce) {\n return debounce(callback, config.debounce);\n }\n\n if (config && config.throttle) {\n return throttle(callback, config.throttle);\n }\n\n return callback;\n};\n\nconst JOIN_SYMBOL = ':';\nexport const NAME_PREFIX = '@';\nexport const ID_PREFIX = '#';\n\n/**\n * Parse an event selector string.\n * Supported rules:\n * 1. mousedown\n * 2. rect:mousedown\n * 3. window:mousemove\n * 4. @foo:mousedown\n * Returns an event stream definitions.\n */\nexport const parseEventSelector = (\n selector: string,\n source: EventSourceType = EVENT_SOURCE_VIEW\n): Partial<ParsedViewEventSpec | ParsedWindowEventSpec> => {\n const spec: Partial<ParsedViewEventSpec | ParsedWindowEventSpec> = {};\n\n const splitArr = selector.split(JOIN_SYMBOL);\n\n if (splitArr.length === 2) {\n const [space, eventType] = splitArr;\n\n if (space[0] === ID_PREFIX) {\n // events on marks id\n spec.markId = space.slice(1);\n spec.source = source;\n } else if (space[0] === NAME_PREFIX) {\n // events on marks name\n spec.markName = space.slice(1);\n spec.source = source;\n } else if (isMarkType(space)) {\n spec.markType = space as MarkType;\n spec.source = source;\n } else if (space === EVENT_SOURCE_WINDOW) {\n spec.source = EVENT_SOURCE_WINDOW;\n } else {\n spec.source = source;\n }\n\n spec.type = eventType;\n } else if (splitArr.length === 1) {\n spec.type = selector;\n spec.source = source;\n }\n\n return spec;\n};\n"]}
1
+ {"version":3,"sources":["../src/parse/event.ts"],"names":[],"mappings":"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","file":"event.js","sourcesContent":["import { debounce, isNil, throttle } from '@visactor/vutils';\nimport type {\n EventSourceType,\n ParsedViewEventSpec,\n ParsedWindowEventSpec,\n EventCallback,\n MarkType,\n IElement\n} from '../types';\nimport { isMarkType } from '../graph/util/graphic';\nimport { EVENT_SOURCE_VIEW, EVENT_SOURCE_WINDOW, ID_PREFIX, NAME_PREFIX } from '../view/constants';\n\nexport const generateFilterByMark = (evtSpec: Partial<ParsedViewEventSpec | ParsedWindowEventSpec>) => {\n if (!isNil(evtSpec.markId)) {\n return (el: IElement) => {\n return el && el.mark.id() === evtSpec.markId;\n };\n }\n\n if (!isNil(evtSpec.markName)) {\n return (el: IElement) => {\n return el && el.mark.name() === evtSpec.markName;\n };\n }\n\n if (!isNil(evtSpec.markType)) {\n return (el: IElement) => {\n return el && el.mark.markType === evtSpec.markType;\n };\n }\n\n return () => true;\n};\n\nexport const parseHandler = (callback: EventCallback, config: { debounce?: number; throttle?: number }) => {\n if (config && config.debounce) {\n return debounce(callback, config.debounce);\n }\n\n if (config && config.throttle) {\n return throttle(callback, config.throttle);\n }\n\n return callback;\n};\n\nconst JOIN_SYMBOL = ':';\n\n/**\n * Parse an event selector string.\n * Supported rules:\n * 1. mousedown\n * 2. rect:mousedown\n * 3. window:mousemove\n * 4. @foo:mousedown\n * Returns an event stream definitions.\n */\nexport const parseEventSelector = (\n selector: string,\n source: EventSourceType = EVENT_SOURCE_VIEW\n): Partial<ParsedViewEventSpec | ParsedWindowEventSpec> => {\n const spec: Partial<ParsedViewEventSpec | ParsedWindowEventSpec> = {};\n\n const splitArr = selector.split(JOIN_SYMBOL);\n\n if (splitArr.length === 2) {\n const [space, eventType] = splitArr;\n\n if (space[0] === ID_PREFIX) {\n // events on marks id\n spec.markId = space.slice(1);\n spec.source = source;\n } else if (space[0] === NAME_PREFIX) {\n // events on marks name\n spec.markName = space.slice(1);\n spec.source = source;\n } else if (isMarkType(space)) {\n spec.markType = space as MarkType;\n spec.source = source;\n } else if (space === EVENT_SOURCE_WINDOW) {\n spec.source = EVENT_SOURCE_WINDOW;\n } else {\n spec.source = source;\n }\n\n spec.type = eventType;\n } else if (splitArr.length === 1) {\n spec.type = selector;\n spec.source = source;\n }\n\n return spec;\n};\n"]}
@@ -7,5 +7,4 @@ export const parseOptionValue = (value, params) => isGrammar(value) ? value.outp
7
7
  export const parseOptions = (options, params) => options ? isObject(options) ? Object.keys(options).reduce(((res, key) => {
8
8
  const option = options[key];
9
9
  return res[key] = parseOptionValue(option, params), res;
10
- }), {}) : options.map((option => parseOptionValue(option, params))) : options;
11
- //# sourceMappingURL=option.js.map
10
+ }), {}) : options.map((option => parseOptionValue(option, params))) : options;
package/es/parse/scale.js CHANGED
@@ -343,4 +343,5 @@ export function configureScale(spec, scale, parameters) {
343
343
  case "quantile":
344
344
  scale.rescale();
345
345
  }
346
- }
346
+ }
347
+ //# sourceMappingURL=scale.js.map
@@ -1 +1 @@
1
- {"version":3,"sources":["../src/parse/util.ts"],"names":[],"mappings":"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","file":"util.js","sourcesContent":["import { isString, isFunction, isNil, array, Color } from '@visactor/vutils';\nimport type { IElement } from '../types/element';\nimport type {\n FunctionCallback,\n SignalDependency,\n SignalReference,\n IView,\n GenericFunctionType,\n SignalFunction,\n ParameterFunctionType,\n ParameterCallback,\n Nil\n} from '../types';\nimport type { IGrammarBase } from '../types/grammar';\n\nexport function parseReference(dependency: SignalDependency | SignalDependency[], view: IView): IGrammarBase[] {\n const dependencies: SignalDependency[] = array(dependency);\n return dependencies.reduce((refs: IGrammarBase[], dep: string | IGrammarBase) => {\n const ref = (isString(dep) ? view.getGrammarById(dep as string) : dep) as IGrammarBase;\n\n if (ref) {\n refs.push(ref);\n }\n return refs;\n }, []);\n}\n\nfunction isSignalReferenceType(signal: any): signal is SignalReference {\n return !isFunction(signal) && !!(signal as SignalReference)?.signal;\n}\n\nfunction isSignalFunctionType<Callback extends FunctionCallback<T>, T>(\n signal: any\n): signal is SignalFunction<Callback, T> {\n return !isFunction(signal) && !!(signal as SignalFunction<Callback, T>)?.callback;\n}\n\nexport function parseFunctionType<Callback extends FunctionCallback<T>, T>(\n spec: GenericFunctionType<Callback, T> | Nil,\n view: IView\n): IGrammarBase[] {\n if (isNil(spec)) {\n return [];\n }\n if (isSignalReferenceType(spec)) {\n const signal = spec.signal;\n if (isString(signal)) {\n return array<IGrammarBase>(view.getGrammarById(signal as string) as IGrammarBase);\n } else if ((signal as IGrammarBase)?.grammarType === 'signal') {\n return [signal as IGrammarBase];\n }\n } else if (isSignalFunctionType(spec)) {\n return parseReference((spec as SignalFunction<Callback, T>).dependency, view);\n }\n return [];\n}\n\nexport function isFunctionType<Callback extends FunctionCallback<T>, T>(\n spec: any\n): spec is Callback | SignalReference | SignalFunction<Callback, T> {\n return isFunction(spec) || spec?.signal || !!(spec as SignalFunction<Callback, T>)?.callback;\n}\n\nexport function invokeFunctionType<Callback extends FunctionCallback<T>, T>(\n spec: GenericFunctionType<Callback, T> | Nil,\n parameters: any,\n datumOrGrammarInstance?: any | IGrammarBase,\n element?: IElement | any\n): T {\n if (isNil(spec)) {\n return spec as T;\n }\n\n if (isFunction(spec)) {\n if (element) {\n return (spec as Callback).call(null, datumOrGrammarInstance, element, parameters);\n }\n return (spec as Callback).call(null, datumOrGrammarInstance, parameters);\n } else if ((spec as SignalReference).signal) {\n const signal = (spec as SignalReference).signal;\n if (isString(signal)) {\n return parameters?.[signal as string];\n }\n return (signal as IGrammarBase).output();\n } else if ((spec as SignalFunction<Callback, T>).callback) {\n if (element) {\n return (spec as SignalFunction<Callback, T>).callback.call(null, datumOrGrammarInstance, element, parameters);\n }\n return (spec as SignalFunction<Callback, T>).callback.call(null, datumOrGrammarInstance, parameters);\n }\n return spec as T;\n}\n\nexport function invokeParameterFunctionType<T>(spec: ParameterFunctionType<T>, parameters: any): T {\n if (isNil(spec)) {\n return spec as T;\n }\n\n if (isFunction(spec)) {\n return spec.call(null, parameters);\n } else if ((spec as SignalReference).signal) {\n const signal = (spec as SignalReference).signal;\n if (isString(signal)) {\n return parameters?.[signal as string];\n }\n return (signal as IGrammarBase).output();\n } else if ((spec as SignalFunction<ParameterCallback<T>, T>).callback) {\n return (spec as SignalFunction<ParameterCallback<T>, T>).callback.call(null, parameters);\n }\n return spec as T;\n}\n\nexport function getGrammarOutput(grammar: IGrammarBase | string, parameters: any) {\n return isGrammar(grammar) ? grammar.output() : parameters[grammar];\n}\n\n/**\n * 判断是否是依赖signal\n */\nexport function isSignal(obj: any) {\n return obj && (obj.signal || obj.callback);\n}\n\nexport const isGrammar = (el: any): el is IGrammarBase => {\n return el && !isNil(el.grammarType);\n};\n\nexport const parseField = <T>(field: ((datum: T) => symbol | string) | string | symbol) => {\n if (isFunction(field)) {\n return field;\n }\n return (datum: T) => datum[field];\n};\n\nexport const parseColor = (color: any): string | null => {\n if (isString(color) && Color.parseColorString(color)) {\n return color;\n }\n return null;\n};\n"]}
1
+ {"version":3,"sources":["../src/parse/util.ts"],"names":[],"mappings":"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","file":"util.js","sourcesContent":["import { isString, isFunction, isNil, array, Color } from '@visactor/vutils';\nimport type { IElement } from '../types/element';\nimport type {\n FunctionCallback,\n SignalDependency,\n SignalReference,\n IView,\n GenericFunctionType,\n SignalFunction,\n ParameterFunctionType,\n ParameterCallback,\n Nil\n} from '../types';\nimport type { IGrammarBase } from '../types/grammar';\n\nexport function parseReference(dependency: SignalDependency | SignalDependency[], view: IView): IGrammarBase[] {\n const dependencies: SignalDependency[] = array(dependency);\n return dependencies.reduce((refs: IGrammarBase[], dep: string | IGrammarBase) => {\n const ref = (isString(dep) ? view.getGrammarById(dep as string) : dep) as IGrammarBase;\n\n if (ref) {\n refs.push(ref);\n }\n return refs;\n }, []);\n}\n\nfunction isSignalReferenceType(signal: any): signal is SignalReference {\n return !isFunction(signal) && !!(signal as SignalReference)?.signal;\n}\n\nfunction isSignalFunctionType<Callback extends FunctionCallback<T>, T>(\n signal: any\n): signal is SignalFunction<Callback, T> {\n return !isFunction(signal) && !!(signal as SignalFunction<Callback, T>)?.callback;\n}\n\nexport function parseFunctionType<Callback extends FunctionCallback<T>, T>(\n spec: GenericFunctionType<Callback, T> | Nil,\n view: IView\n): IGrammarBase[] {\n if (isNil(spec)) {\n return [];\n }\n if (isSignalReferenceType(spec)) {\n const signal = spec.signal;\n if (isString(signal)) {\n return array<IGrammarBase>(view.getGrammarById(signal as string) as IGrammarBase);\n } else if ((signal as IGrammarBase)?.grammarType === 'signal') {\n return [signal as IGrammarBase];\n }\n } else if (isSignalFunctionType(spec)) {\n return parseReference((spec as SignalFunction<Callback, T>).dependency, view);\n }\n return [];\n}\n\nexport function isFunctionType<Callback extends FunctionCallback<T>, T>(\n spec: any\n): spec is Callback | SignalReference | SignalFunction<Callback, T> {\n return isFunction(spec) || spec?.signal || !!(spec as SignalFunction<Callback, T>)?.callback;\n}\n\nexport function invokeFunctionType<Callback extends FunctionCallback<T>, T>(\n spec: GenericFunctionType<Callback, T> | Nil,\n parameters: any,\n datumOrGrammarInstance?: any | IGrammarBase,\n element?: IElement | any\n): T {\n if (isNil(spec)) {\n return spec as T;\n }\n\n if (isFunction(spec)) {\n if (element) {\n return (spec as Callback).call(null, datumOrGrammarInstance, element, parameters);\n }\n return (spec as Callback).call(null, datumOrGrammarInstance, parameters);\n } else if ((spec as SignalReference).signal) {\n const signal = (spec as SignalReference).signal;\n if (isString(signal)) {\n return parameters?.[signal as string];\n }\n return (signal as IGrammarBase).output();\n } else if ((spec as SignalFunction<Callback, T>).callback) {\n if (element) {\n return (spec as SignalFunction<Callback, T>).callback.call(null, datumOrGrammarInstance, element, parameters);\n }\n return (spec as SignalFunction<Callback, T>).callback.call(null, datumOrGrammarInstance, parameters);\n }\n return spec as T;\n}\n\nexport function invokeParameterFunctionType<T>(spec: ParameterFunctionType<T>, parameters: any): T {\n if (isNil(spec)) {\n return spec as T;\n }\n\n if (isFunction(spec)) {\n return spec.call(null, parameters);\n } else if ((spec as SignalReference).signal) {\n const signal = (spec as SignalReference).signal;\n if (isString(signal)) {\n return parameters?.[signal as string];\n }\n return (signal as IGrammarBase).output();\n } else if ((spec as SignalFunction<ParameterCallback<T>, T>).callback) {\n return (spec as SignalFunction<ParameterCallback<T>, T>).callback.call(null, parameters);\n }\n return spec as T;\n}\n\nexport function getGrammarOutput(grammar: IGrammarBase | string, parameters: any) {\n return isGrammar(grammar) ? grammar.output() : parameters[grammar];\n}\n\n/**\n * 判断是否是依赖signal\n */\nexport function isSignal(obj: any) {\n return obj && (obj.signal || obj.callback);\n}\n\nexport const isGrammar = (el: any): el is IGrammarBase => {\n return el && !isNil(el.grammarType);\n};\n\nexport const parseField = <T>(field: ((datum: T) => symbol | string) | string | symbol) => {\n if (isFunction(field)) {\n return field as (datum: T) => symbol | string;\n }\n return (datum: T) => datum[field as string | symbol];\n};\n\nexport const parseColor = (color: any): string | null => {\n if (isString(color) && Color.parseColorString(color)) {\n return color;\n }\n return null;\n};\n"]}
@@ -66,4 +66,4 @@ Cell.markType = GrammarMarkType.cell;
66
66
  export const registerCellMark = () => {
67
67
  Factory.registerMark(GrammarMarkType.cell, Cell);
68
68
  };
69
- //# sourceMappingURL=cell.js.map
69
+ //# sourceMappingURL=cell.js.map
@@ -92,4 +92,4 @@ Interval.markType = GrammarMarkType.interval;
92
92
  export const registerIntervalMark = () => {
93
93
  Factory.registerMark(GrammarMarkType.interval, Interval);
94
94
  };
95
- //# sourceMappingURL=interval.js.map
95
+ //# sourceMappingURL=interval.js.map
@@ -15,4 +15,4 @@ export class Text extends Mark {
15
15
  }
16
16
 
17
17
  Text.markType = GrammarMarkType.text;
18
- //# sourceMappingURL=text.js.map
18
+ //# sourceMappingURL=text.js.map
@@ -1,4 +1,4 @@
1
- import { computeQuadrant } from "../util/util";
1
+ import { computeQuadrant } from "@visactor/vutils";
2
2
 
3
3
  export const transform = (options, upstreamData) => {
4
4
  var _a, _b;
@@ -1 +1 @@
1
- {"version":3,"sources":["../src/transforms/data/pie.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,eAAe,EAAE,MAAM,cAAc,CAAC;AAE/C,MAAM,CAAC,MAAM,SAAS,GAAG,CAAC,OAA2B,EAAE,YAAmB,EAAE,EAAE;;IAC5E,IAAI,CAAC,YAAY,IAAI,YAAY,CAAC,MAAM,KAAK,CAAC,EAAE;QAC9C,OAAO,YAAY,CAAC;KACrB;IACD,MAAM,KAAK,GAAG,OAAO,CAAC,KAAK,CAAC;IAC5B,MAAM,UAAU,GAAG,MAAA,OAAO,CAAC,UAAU,mCAAI,CAAC,CAAC;IAC3C,MAAM,QAAQ,GAAG,MAAA,OAAO,CAAC,QAAQ,mCAAI,IAAI,CAAC,EAAE,GAAG,CAAC,CAAC;IAEjD,MAAM,EAAE,YAAY,EAAE,UAAU,EAAE,aAAa,EAAE,QAAQ,EAAE,OAAO,EAAE,UAAU,EAAE,GAAG,EAAE,GAAG,OAAO,CAAC;IAEhG,MAAM,KAAK,GAAG,YAAY,CAAC,MAAM,CAAC,CAAC,GAAG,EAAE,CAAC,EAAE,EAAE,CAAC,MAAM,CAAC,UAAU,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,GAAG,GAAG,EAAE,CAAC,CAAC,CAAC;IACpF,MAAM,GAAG,GAAG,YAAY,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,MAAM,CAAC,UAAU,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,CAAC,QAAQ,CAAC,CAAC;IAE/F,MAAM,aAAa,GAAG,QAAQ,GAAG,UAAU,CAAC;IAC5C,IAAI,SAAS,GAAG,UAAU,CAAC;IAC3B,MAAM,IAAI,GAAG,YAAY,CAAC,GAAG,CAAC,WAAW,CAAC,EAAE;QAC1C,MAAM,KAAK,GAAG,MAAM,CAAC,MAAM,CAAC,EAAE,EAAE,WAAW,CAAC,CAAC;QAC7C,MAAM,KAAK,GAAG,MAAM,CAAC,UAAU,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC,GAAG,KAAK,CAAC;QACtD,MAAM,MAAM,GAAG,KAAK,GAAG,aAAa,CAAC;QAErC,OAAO,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,GAAG,KAAK,CAAC,CAAC;QACpC,YAAY,IAAI,CAAC,KAAK,CAAC,YAAY,CAAC,GAAG,SAAS,CAAC,CAAC;QAClD,UAAU,IAAI,CAAC,KAAK,CAAC,UAAU,CAAC,GAAG,SAAS,GAAG,MAAM,CAAC,CAAC;QACvD,aAAa,IAAI,CAAC,KAAK,CAAC,aAAa,CAAC,GAAG,SAAS,GAAG,MAAM,GAAG,CAAC,CAAC,CAAC;QACjE,QAAQ,IAAI,CAAC,KAAK,CAAC,QAAQ,CAAC,GAAG,MAAM,CAAC,CAAC;QACvC,UAAU,IAAI,CAAC,KAAK,CAAC,UAAU,CAAC,GAAG,eAAe,CAAC,SAAS,GAAG,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC;QAC5E,GAAG,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,GAAG,MAAM,CAAC,UAAU,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC,GAAG,GAAG,CAAC,CAAC;QAE5D,SAAS,GAAG,KAAK,CAAC,UAAU,CAAC,CAAC;QAC9B,OAAO,KAAK,CAAC;IACf,CAAC,CAAC,CAAC;IACH,IAAI,CAAC,IAAI,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,UAAU,CAAC,GAAG,QAAQ,CAAC;IAC7C,OAAO,IAAI,CAAC;AACd,CAAC,CAAC","file":"pie.js","sourcesContent":["import type { PieTransformOption } from '../../types';\nimport { computeQuadrant } from '../util/util';\n\nexport const transform = (options: PieTransformOption, upstreamData: any[]) => {\n if (!upstreamData || upstreamData.length === 0) {\n return upstreamData;\n }\n const field = options.field;\n const startAngle = options.startAngle ?? 0;\n const endAngle = options.endAngle ?? Math.PI * 2;\n\n const { asStartAngle, asEndAngle, asMiddleAngle, asRadian, asRatio, asQuadrant, asK } = options;\n\n const total = upstreamData.reduce((sum, d) => Number.parseFloat(d[field]) + sum, 0);\n const max = upstreamData.reduce((m, d) => Math.max(m, Number.parseFloat(d[field])), -Infinity);\n\n const intervalAngle = endAngle - startAngle;\n let lastAngle = startAngle;\n const data = upstreamData.map(originDatum => {\n const datum = Object.assign({}, originDatum);\n const ratio = Number.parseFloat(datum[field]) / total;\n const radian = ratio * intervalAngle;\n\n asRatio && (datum[asRatio] = ratio);\n asStartAngle && (datum[asStartAngle] = lastAngle);\n asEndAngle && (datum[asEndAngle] = lastAngle + radian);\n asMiddleAngle && (datum[asMiddleAngle] = lastAngle + radian / 2);\n asRadian && (datum[asRadian] = radian);\n asQuadrant && (datum[asQuadrant] = computeQuadrant(lastAngle + radian / 2));\n asK && (datum[asK] = Number.parseFloat(datum[field]) / max);\n\n lastAngle = datum[asEndAngle];\n return datum;\n });\n data[data.length - 1][asEndAngle] = endAngle;\n return data;\n};\n"]}
1
+ {"version":3,"sources":["../src/transforms/data/pie.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,eAAe,EAAE,MAAM,kBAAkB,CAAC;AAGnD,MAAM,CAAC,MAAM,SAAS,GAAG,CAAC,OAA2B,EAAE,YAAmB,EAAE,EAAE;;IAC5E,IAAI,CAAC,YAAY,IAAI,YAAY,CAAC,MAAM,KAAK,CAAC,EAAE;QAC9C,OAAO,YAAY,CAAC;KACrB;IACD,MAAM,KAAK,GAAG,OAAO,CAAC,KAAK,CAAC;IAC5B,MAAM,UAAU,GAAG,MAAA,OAAO,CAAC,UAAU,mCAAI,CAAC,CAAC;IAC3C,MAAM,QAAQ,GAAG,MAAA,OAAO,CAAC,QAAQ,mCAAI,IAAI,CAAC,EAAE,GAAG,CAAC,CAAC;IAEjD,MAAM,EAAE,YAAY,EAAE,UAAU,EAAE,aAAa,EAAE,QAAQ,EAAE,OAAO,EAAE,UAAU,EAAE,GAAG,EAAE,GAAG,OAAO,CAAC;IAEhG,MAAM,KAAK,GAAG,YAAY,CAAC,MAAM,CAAC,CAAC,GAAG,EAAE,CAAC,EAAE,EAAE,CAAC,MAAM,CAAC,UAAU,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,GAAG,GAAG,EAAE,CAAC,CAAC,CAAC;IACpF,MAAM,GAAG,GAAG,YAAY,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,MAAM,CAAC,UAAU,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,CAAC,QAAQ,CAAC,CAAC;IAE/F,MAAM,aAAa,GAAG,QAAQ,GAAG,UAAU,CAAC;IAC5C,IAAI,SAAS,GAAG,UAAU,CAAC;IAC3B,MAAM,IAAI,GAAG,YAAY,CAAC,GAAG,CAAC,WAAW,CAAC,EAAE;QAC1C,MAAM,KAAK,GAAG,MAAM,CAAC,MAAM,CAAC,EAAE,EAAE,WAAW,CAAC,CAAC;QAC7C,MAAM,KAAK,GAAG,MAAM,CAAC,UAAU,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC,GAAG,KAAK,CAAC;QACtD,MAAM,MAAM,GAAG,KAAK,GAAG,aAAa,CAAC;QAErC,OAAO,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,GAAG,KAAK,CAAC,CAAC;QACpC,YAAY,IAAI,CAAC,KAAK,CAAC,YAAY,CAAC,GAAG,SAAS,CAAC,CAAC;QAClD,UAAU,IAAI,CAAC,KAAK,CAAC,UAAU,CAAC,GAAG,SAAS,GAAG,MAAM,CAAC,CAAC;QACvD,aAAa,IAAI,CAAC,KAAK,CAAC,aAAa,CAAC,GAAG,SAAS,GAAG,MAAM,GAAG,CAAC,CAAC,CAAC;QACjE,QAAQ,IAAI,CAAC,KAAK,CAAC,QAAQ,CAAC,GAAG,MAAM,CAAC,CAAC;QACvC,UAAU,IAAI,CAAC,KAAK,CAAC,UAAU,CAAC,GAAG,eAAe,CAAC,SAAS,GAAG,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC;QAC5E,GAAG,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,GAAG,MAAM,CAAC,UAAU,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC,GAAG,GAAG,CAAC,CAAC;QAE5D,SAAS,GAAG,KAAK,CAAC,UAAU,CAAC,CAAC;QAC9B,OAAO,KAAK,CAAC;IACf,CAAC,CAAC,CAAC;IACH,IAAI,CAAC,IAAI,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,UAAU,CAAC,GAAG,QAAQ,CAAC;IAC7C,OAAO,IAAI,CAAC;AACd,CAAC,CAAC","file":"pie.js","sourcesContent":["import { computeQuadrant } from '@visactor/vutils';\nimport type { PieTransformOption } from '../../types';\n\nexport const transform = (options: PieTransformOption, upstreamData: any[]) => {\n if (!upstreamData || upstreamData.length === 0) {\n return upstreamData;\n }\n const field = options.field;\n const startAngle = options.startAngle ?? 0;\n const endAngle = options.endAngle ?? Math.PI * 2;\n\n const { asStartAngle, asEndAngle, asMiddleAngle, asRadian, asRatio, asQuadrant, asK } = options;\n\n const total = upstreamData.reduce((sum, d) => Number.parseFloat(d[field]) + sum, 0);\n const max = upstreamData.reduce((m, d) => Math.max(m, Number.parseFloat(d[field])), -Infinity);\n\n const intervalAngle = endAngle - startAngle;\n let lastAngle = startAngle;\n const data = upstreamData.map(originDatum => {\n const datum = Object.assign({}, originDatum);\n const ratio = Number.parseFloat(datum[field]) / total;\n const radian = ratio * intervalAngle;\n\n asRatio && (datum[asRatio] = ratio);\n asStartAngle && (datum[asStartAngle] = lastAngle);\n asEndAngle && (datum[asEndAngle] = lastAngle + radian);\n asMiddleAngle && (datum[asMiddleAngle] = lastAngle + radian / 2);\n asRadian && (datum[asRadian] = radian);\n asQuadrant && (datum[asQuadrant] = computeQuadrant(lastAngle + radian / 2));\n asK && (datum[asK] = Number.parseFloat(datum[field]) / max);\n\n lastAngle = datum[asEndAngle];\n return datum;\n });\n data[data.length - 1][asEndAngle] = endAngle;\n return data;\n};\n"]}
@@ -1,7 +1,5 @@
1
1
  import type { FieldGetterFunction } from '@visactor/vgrammar-util';
2
2
  export declare function fieldNames(fields: string[] | FieldGetterFunction[], as?: string[]): string[];
3
3
  export declare function partition(data?: any[], groupBy?: FieldGetterFunction[], field?: FieldGetterFunction): any[];
4
- export declare function normalizeAngle(angle: number): number;
5
- export declare function computeQuadrant(angle: number): 1 | 2 | 3 | 4;
6
4
  export declare function sum(arr: any[]): any;
7
5
  export declare function average(arr: any[]): number;
@@ -21,16 +21,6 @@ export function partition(data, groupBy, field) {
21
21
  })), groups;
22
22
  }
23
23
 
24
- export function normalizeAngle(angle) {
25
- for (;angle < 0; ) angle += 2 * Math.PI;
26
- for (;angle >= 2 * Math.PI; ) angle -= 2 * Math.PI;
27
- return angle;
28
- }
29
-
30
- export function computeQuadrant(angle) {
31
- return (angle = normalizeAngle(angle)) > 0 && angle <= Math.PI / 2 ? 2 : angle > Math.PI / 2 && angle <= Math.PI ? 3 : angle > Math.PI && angle <= 3 * Math.PI / 2 ? 4 : 1;
32
- }
33
-
34
24
  export function sum(arr) {
35
25
  return arr.reduce(((accumulator, currentValue) => accumulator + currentValue), 0);
36
26
  }
@@ -1 +1 @@
1
- {"version":3,"sources":["../src/transforms/util/util.ts"],"names":[],"mappings":"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","file":"util.js","sourcesContent":["/* Adapted from vega by University of Washington Interactive Data Lab\n * https://vega.github.io/vega/\n * Licensed under the BSD-3-Clause\n\n * url: https://github.com/vega/vega/blob/main/packages/vega-transforms/src/util/util.js\n * License: https://github.com/vega/vega/blob/main/LICENSE\n * @license\n */\n\nimport { isNil, isString } from '@visactor/vutils';\nimport type { FieldGetterFunction } from '@visactor/vgrammar-util';\nimport { accessorName } from '@visactor/vgrammar-util';\n\n// use either provided alias or accessor field name\nexport function fieldNames(fields: string[] | FieldGetterFunction[], as?: string[]) {\n if (!fields) {\n return null;\n }\n return fields.map((f, i) => {\n return as[i] ?? (isString(f) ? f : accessorName(f));\n });\n}\n\nexport function partition(data?: any[], groupBy?: FieldGetterFunction[], field?: FieldGetterFunction) {\n // partition data points into groups\n if (isNil(groupBy)) {\n return [data.map(field)];\n }\n\n const groups: any[] = [];\n const map: Record<string, any> = {};\n data.forEach((entry: any) => {\n const groupKey = groupBy.map((groupFunc: (arg: any) => any) => groupFunc(entry)).toString();\n\n if (!map[groupKey]) {\n const groupItem: any[] = [];\n (groupItem as any).dims = groupKey;\n groups.push(groupItem);\n map[groupKey] = groupItem;\n } else {\n map[groupKey].push(field(entry));\n }\n });\n\n return groups;\n}\n\nexport function normalizeAngle(angle: number): number {\n while (angle < 0) {\n angle += Math.PI * 2;\n }\n while (angle >= Math.PI * 2) {\n angle -= Math.PI * 2;\n }\n return angle;\n}\n\nexport function computeQuadrant(angle: number): 1 | 2 | 3 | 4 {\n angle = normalizeAngle(angle);\n if (angle > 0 && angle <= Math.PI / 2) {\n return 2;\n } else if (angle > Math.PI / 2 && angle <= Math.PI) {\n return 3;\n } else if (angle > Math.PI && angle <= (3 * Math.PI) / 2) {\n return 4;\n }\n return 1;\n}\n\nexport function sum(arr: any[]) {\n return arr.reduce((accumulator, currentValue) => accumulator + currentValue, 0);\n}\n\nexport function average(arr: any[]) {\n if (arr.length === 0) {\n return 0;\n }\n const total = sum(arr);\n return total / arr.length;\n}\n"]}
1
+ {"version":3,"sources":["../src/transforms/util/util.ts"],"names":[],"mappings":"AASA,OAAO,EAAE,KAAK,EAAE,QAAQ,EAAE,MAAM,kBAAkB,CAAC;AAEnD,OAAO,EAAE,YAAY,EAAE,MAAM,yBAAyB,CAAC;AAGvD,MAAM,UAAU,UAAU,CAAC,MAAwC,EAAE,EAAa;IAChF,IAAI,CAAC,MAAM,EAAE;QACX,OAAO,IAAI,CAAC;KACb;IACD,OAAO,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE;;QACzB,OAAO,MAAA,EAAE,CAAC,CAAC,CAAC,mCAAI,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC,CAAC;IACtD,CAAC,CAAC,CAAC;AACL,CAAC;AAED,MAAM,UAAU,SAAS,CAAC,IAAY,EAAE,OAA+B,EAAE,KAA2B;IAElG,IAAI,KAAK,CAAC,OAAO,CAAC,EAAE;QAClB,OAAO,CAAC,IAAI,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC,CAAC;KAC1B;IAED,MAAM,MAAM,GAAU,EAAE,CAAC;IACzB,MAAM,GAAG,GAAwB,EAAE,CAAC;IACpC,IAAI,CAAC,OAAO,CAAC,CAAC,KAAU,EAAE,EAAE;QAC1B,MAAM,QAAQ,GAAG,OAAO,CAAC,GAAG,CAAC,CAAC,SAA4B,EAAE,EAAE,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC,CAAC,QAAQ,EAAE,CAAC;QAE5F,IAAI,CAAC,GAAG,CAAC,QAAQ,CAAC,EAAE;YAClB,MAAM,SAAS,GAAU,EAAE,CAAC;YAC3B,SAAiB,CAAC,IAAI,GAAG,QAAQ,CAAC;YACnC,MAAM,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;YACvB,GAAG,CAAC,QAAQ,CAAC,GAAG,SAAS,CAAC;SAC3B;aAAM;YACL,GAAG,CAAC,QAAQ,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC,CAAC;SAClC;IACH,CAAC,CAAC,CAAC;IAEH,OAAO,MAAM,CAAC;AAChB,CAAC;AAED,MAAM,UAAU,GAAG,CAAC,GAAU;IAC5B,OAAO,GAAG,CAAC,MAAM,CAAC,CAAC,WAAW,EAAE,YAAY,EAAE,EAAE,CAAC,WAAW,GAAG,YAAY,EAAE,CAAC,CAAC,CAAC;AAClF,CAAC;AAED,MAAM,UAAU,OAAO,CAAC,GAAU;IAChC,IAAI,GAAG,CAAC,MAAM,KAAK,CAAC,EAAE;QACpB,OAAO,CAAC,CAAC;KACV;IACD,MAAM,KAAK,GAAG,GAAG,CAAC,GAAG,CAAC,CAAC;IACvB,OAAO,KAAK,GAAG,GAAG,CAAC,MAAM,CAAC;AAC5B,CAAC","file":"util.js","sourcesContent":["/* Adapted from vega by University of Washington Interactive Data Lab\n * https://vega.github.io/vega/\n * Licensed under the BSD-3-Clause\n\n * url: https://github.com/vega/vega/blob/main/packages/vega-transforms/src/util/util.js\n * License: https://github.com/vega/vega/blob/main/LICENSE\n * @license\n */\n\nimport { isNil, isString } from '@visactor/vutils';\nimport type { FieldGetterFunction } from '@visactor/vgrammar-util';\nimport { accessorName } from '@visactor/vgrammar-util';\n\n// use either provided alias or accessor field name\nexport function fieldNames(fields: string[] | FieldGetterFunction[], as?: string[]) {\n if (!fields) {\n return null;\n }\n return fields.map((f, i) => {\n return as[i] ?? (isString(f) ? f : accessorName(f));\n });\n}\n\nexport function partition(data?: any[], groupBy?: FieldGetterFunction[], field?: FieldGetterFunction) {\n // partition data points into groups\n if (isNil(groupBy)) {\n return [data.map(field)];\n }\n\n const groups: any[] = [];\n const map: Record<string, any> = {};\n data.forEach((entry: any) => {\n const groupKey = groupBy.map((groupFunc: (arg: any) => any) => groupFunc(entry)).toString();\n\n if (!map[groupKey]) {\n const groupItem: any[] = [];\n (groupItem as any).dims = groupKey;\n groups.push(groupItem);\n map[groupKey] = groupItem;\n } else {\n map[groupKey].push(field(entry));\n }\n });\n\n return groups;\n}\n\nexport function sum(arr: any[]) {\n return arr.reduce((accumulator, currentValue) => accumulator + currentValue, 0);\n}\n\nexport function average(arr: any[]) {\n if (arr.length === 0) {\n return 0;\n }\n const total = sum(arr);\n return total / arr.length;\n}\n"]}
@@ -69,7 +69,7 @@ export interface IElement {
69
69
  setItemAttributes: (attributes: {
70
70
  [channel: string]: any;
71
71
  } | any[]) => void;
72
- updateData: (groupKey: string, data: any[], keyGenerator: MarkKeySpec, view: any) => void;
72
+ updateData: (groupKey: string, data: any[], keyGenerator: MarkKeySpec) => void;
73
73
  state: (markState: MarkFunctionType<string | string[]>, parameters?: any) => void;
74
74
  encodeItems: (items: MarkElementItem[], encoders: BaseEncodeSpec, isReentered?: boolean, parameters?: any) => void;
75
75
  encodeGraphic: (attributes?: any) => void;
@@ -1 +1 @@
1
- {"version":3,"sources":["../src/types/element.ts"],"names":[],"mappings":"","file":"element.js","sourcesContent":["import type {\n IArc,\n IArc3d,\n IArea,\n ICircle,\n IGlyph,\n IGraphic,\n IGroup,\n IImage,\n ILine,\n IPath,\n IPolygon,\n IPyramid3d,\n IRect,\n IRect3d,\n IRichText,\n ISymbol,\n IText\n} from '@visactor/vrender-core';\nimport type { DiffState } from '../graph/enums';\nimport type { IMark, IGlyphMark } from './grammar';\nimport type {\n BaseEncodeSpec,\n BaseSingleEncodeSpec,\n IMarkConfig,\n MarkFunctionType,\n MarkKeySpec,\n MarkType\n} from './mark';\n\nexport interface ElementGraphicMap {\n circle: ICircle;\n arc: IArc;\n area: IArea;\n image: IImage;\n line: ILine;\n path: IPath;\n rule: ILine;\n shape: IPath;\n symbol: ISymbol;\n text: IText;\n richtext: IRichText;\n polygon: IPolygon;\n cell: ISymbol;\n interval: IGraphic;\n rect: IRect;\n rect3d: IRect3d;\n arc3d: IArc3d;\n pyramid3d: IPyramid3d;\n group: IGroup;\n glyph: IGlyph;\n linkPath: IGlyph;\n treePath: IGlyph;\n wave: IGlyph;\n ripplePoint: IGlyph;\n barBoxplot: IGlyph;\n boxPlot: IGlyph;\n component: IGroup;\n axis: IGroup;\n legend: IGroup;\n corsshair: IGroup;\n slider: IGroup;\n datazoom: IGroup;\n label: IGroup;\n player: IGroup;\n}\n\nexport type GetGraphicByType<T> = T extends keyof ElementGraphicMap ? ElementGraphicMap[T] : IGraphic;\n\n/**\n * 保存graphicItem状态\n */\nexport interface MarkElementItem {\n /** 唯一key */\n key: string;\n /** 原始数据 */\n datum: any;\n /** VGrammar view */\n view: any;\n /** 当前渲染帧下graphicItem对应的最新属性 */\n nextAttrs?: any;\n /** 是否初始化过,用于解决collection mark对应的item,可能跳过enter状态的问题 */\n // hasEntered: boolean;\n}\nexport interface IElement {\n mark: IMark;\n isReserved: boolean;\n diffState: DiffState;\n key: string;\n groupKey?: string;\n data?: any[];\n /**\n * 不推荐使用,但是collection图元暂时可能回涉及到相关修改\n */\n items: MarkElementItem[];\n\n initGraphicItem: (attrs?: any) => void;\n updateGraphicItem: () => void;\n\n getDatum: () => any;\n getBounds: () => any;\n getGraphicItem: () => IGraphic;\n removeGraphicItem: () => void;\n resetGraphicItem: () => void;\n\n /**\n * 获取 graphic 视觉通道属性\n * @param channel 视觉通道\n * @param prev 是否从之前的 graphic 属性上获取,默认为 false\n * @returns 视觉通道值\n */\n getGraphicAttribute: (channel: string, prev?: boolean) => any;\n /**\n * 设置 graphic 视觉通道属性\n * @param channel 视觉通道\n * @param value 视觉通道属性\n * @param final 是否更新 graphic 最终变更的视觉通道结果,默认为 false\n */\n setGraphicAttribute: (channel: string, value: any, final?: boolean) => void;\n /**\n * 设置一系列 graphic 视觉通道属性\n * @param attributes 视觉通道键值对\n * @param final 是否更新 graphic 最终变更的视觉通道结果,默认为 false\n */\n setGraphicAttributes: (attributes: { [channel: string]: any }, final?: boolean) => void;\n\n /**\n * 【慎重使用】获取 VGrammar 自身的视觉通道属性\n * 只有在 'afterEncodeItems' 时机的mark transform中才能调用\n */\n getItemAttribute: (channel?: string) => any;\n /**\n * 【慎重使用】设置 VGrammar 自身的视觉通道\n * 只有在 'afterEncodeItems' 时机的mark transform中才能调用\n * @param attributes\n * @returns\n */\n setItemAttributes: (attributes: { [channel: string]: any } | any[]) => void;\n\n // element 执行流程相关接口\n updateData: (groupKey: string, data: any[], keyGenerator: MarkKeySpec, view: any) => void;\n state: (markState: MarkFunctionType<string | string[]>, parameters?: any) => void;\n encodeItems: (items: MarkElementItem[], encoders: BaseEncodeSpec, isReentered?: boolean, parameters?: any) => void;\n encodeGraphic: (attributes?: any) => void;\n transformElementItems: (items: MarkElementItem[], markType: MarkType, computePoints?: boolean) => Record<string, any>;\n remove: () => void;\n release: () => void;\n\n // 动画相关接口\n\n getFinalGraphicAttributes: () => { [key: string]: any };\n getPrevGraphicAttributes: () => { [key: string]: any };\n getNextGraphicAttributes: () => { [key: string]: any };\n getFinalAnimationAttribute: (channel: string) => any;\n getFinalAnimationAttributes: () => { [key: string]: any };\n clearChangedGraphicAttributes: () => void;\n clearGraphicAttributes: () => void;\n\n // state相关接口\n getStates: () => string[];\n hasState: (state: string) => boolean;\n clearStates: (noAnimation?: boolean) => void;\n addState: (state: string | string[], attrs?: any) => boolean;\n removeState: (state: string | string[]) => boolean;\n useStates: (states: string[], noAnimation?: boolean) => boolean;\n updateStates: (states: Record<string, boolean | BaseSingleEncodeSpec>) => any;\n}\n\nexport interface IGlyphElement<P = any> extends IElement {\n mark: IGlyphMark;\n\n getGlyphGraphicItems: () => { [markName: string]: any };\n\n getGraphicAttribute: (channel: string, prev?: boolean, markName?: any) => any;\n setGraphicAttribute: (channel: string, value: any, final?: boolean, markName?: any) => void;\n setGraphicAttributes: (attributes: { [channel: string]: any }, final?: boolean, markName?: any) => void;\n\n getFinalGraphicAttributes: (markName?: string) => { [key: string]: any };\n getPrevGraphicAttributes: (markName?: string) => { [key: string]: any };\n getNextGraphicAttributes: (markName?: string) => { [key: string]: any };\n\n encodeCustom: (nextAttrs?: any) => { [markName: string]: any };\n}\n"]}
1
+ {"version":3,"sources":["../src/types/element.ts"],"names":[],"mappings":"","file":"element.js","sourcesContent":["import type {\n IArc,\n IArc3d,\n IArea,\n ICircle,\n IGlyph,\n IGraphic,\n IGroup,\n IImage,\n ILine,\n IPath,\n IPolygon,\n IPyramid3d,\n IRect,\n IRect3d,\n IRichText,\n ISymbol,\n IText\n} from '@visactor/vrender-core';\nimport type { DiffState } from '../graph/enums';\nimport type { IMark, IGlyphMark } from './grammar';\nimport type {\n BaseEncodeSpec,\n BaseSingleEncodeSpec,\n IMarkConfig,\n MarkFunctionType,\n MarkKeySpec,\n MarkType\n} from './mark';\n\nexport interface ElementGraphicMap {\n circle: ICircle;\n arc: IArc;\n area: IArea;\n image: IImage;\n line: ILine;\n path: IPath;\n rule: ILine;\n shape: IPath;\n symbol: ISymbol;\n text: IText;\n richtext: IRichText;\n polygon: IPolygon;\n cell: ISymbol;\n interval: IGraphic;\n rect: IRect;\n rect3d: IRect3d;\n arc3d: IArc3d;\n pyramid3d: IPyramid3d;\n group: IGroup;\n glyph: IGlyph;\n linkPath: IGlyph;\n treePath: IGlyph;\n wave: IGlyph;\n ripplePoint: IGlyph;\n barBoxplot: IGlyph;\n boxPlot: IGlyph;\n component: IGroup;\n axis: IGroup;\n legend: IGroup;\n corsshair: IGroup;\n slider: IGroup;\n datazoom: IGroup;\n label: IGroup;\n player: IGroup;\n}\n\nexport type GetGraphicByType<T> = T extends keyof ElementGraphicMap ? ElementGraphicMap[T] : IGraphic;\n\n/**\n * 保存graphicItem状态\n */\nexport interface MarkElementItem {\n /** 唯一key */\n key: string;\n /** 原始数据 */\n datum: any;\n /** VGrammar view */\n view: any;\n /** 当前渲染帧下graphicItem对应的最新属性 */\n nextAttrs?: any;\n /** 是否初始化过,用于解决collection mark对应的item,可能跳过enter状态的问题 */\n // hasEntered: boolean;\n}\nexport interface IElement {\n mark: IMark;\n isReserved: boolean;\n diffState: DiffState;\n key: string;\n groupKey?: string;\n data?: any[];\n /**\n * 不推荐使用,但是collection图元暂时可能回涉及到相关修改\n */\n items: MarkElementItem[];\n\n initGraphicItem: (attrs?: any) => void;\n updateGraphicItem: () => void;\n\n getDatum: () => any;\n getBounds: () => any;\n getGraphicItem: () => IGraphic;\n removeGraphicItem: () => void;\n resetGraphicItem: () => void;\n\n /**\n * 获取 graphic 视觉通道属性\n * @param channel 视觉通道\n * @param prev 是否从之前的 graphic 属性上获取,默认为 false\n * @returns 视觉通道值\n */\n getGraphicAttribute: (channel: string, prev?: boolean) => any;\n /**\n * 设置 graphic 视觉通道属性\n * @param channel 视觉通道\n * @param value 视觉通道属性\n * @param final 是否更新 graphic 最终变更的视觉通道结果,默认为 false\n */\n setGraphicAttribute: (channel: string, value: any, final?: boolean) => void;\n /**\n * 设置一系列 graphic 视觉通道属性\n * @param attributes 视觉通道键值对\n * @param final 是否更新 graphic 最终变更的视觉通道结果,默认为 false\n */\n setGraphicAttributes: (attributes: { [channel: string]: any }, final?: boolean) => void;\n\n /**\n * 【慎重使用】获取 VGrammar 自身的视觉通道属性\n * 只有在 'afterEncodeItems' 时机的mark transform中才能调用\n */\n getItemAttribute: (channel?: string) => any;\n /**\n * 【慎重使用】设置 VGrammar 自身的视觉通道\n * 只有在 'afterEncodeItems' 时机的mark transform中才能调用\n * @param attributes\n * @returns\n */\n setItemAttributes: (attributes: { [channel: string]: any } | any[]) => void;\n\n // element 执行流程相关接口\n updateData: (groupKey: string, data: any[], keyGenerator: MarkKeySpec) => void;\n state: (markState: MarkFunctionType<string | string[]>, parameters?: any) => void;\n encodeItems: (items: MarkElementItem[], encoders: BaseEncodeSpec, isReentered?: boolean, parameters?: any) => void;\n encodeGraphic: (attributes?: any) => void;\n transformElementItems: (items: MarkElementItem[], markType: MarkType, computePoints?: boolean) => Record<string, any>;\n remove: () => void;\n release: () => void;\n\n // 动画相关接口\n\n getFinalGraphicAttributes: () => { [key: string]: any };\n getPrevGraphicAttributes: () => { [key: string]: any };\n getNextGraphicAttributes: () => { [key: string]: any };\n getFinalAnimationAttribute: (channel: string) => any;\n getFinalAnimationAttributes: () => { [key: string]: any };\n clearChangedGraphicAttributes: () => void;\n clearGraphicAttributes: () => void;\n\n // state相关接口\n getStates: () => string[];\n hasState: (state: string) => boolean;\n clearStates: (noAnimation?: boolean) => void;\n addState: (state: string | string[], attrs?: any) => boolean;\n removeState: (state: string | string[]) => boolean;\n useStates: (states: string[], noAnimation?: boolean) => boolean;\n updateStates: (states: Record<string, boolean | BaseSingleEncodeSpec>) => any;\n}\n\nexport interface IGlyphElement<P = any> extends IElement {\n mark: IGlyphMark;\n\n getGlyphGraphicItems: () => { [markName: string]: any };\n\n getGraphicAttribute: (channel: string, prev?: boolean, markName?: any) => any;\n setGraphicAttribute: (channel: string, value: any, final?: boolean, markName?: any) => void;\n setGraphicAttributes: (attributes: { [channel: string]: any }, final?: boolean, markName?: any) => void;\n\n getFinalGraphicAttributes: (markName?: string) => { [key: string]: any };\n getPrevGraphicAttributes: (markName?: string) => { [key: string]: any };\n getNextGraphicAttributes: (markName?: string) => { [key: string]: any };\n\n encodeCustom: (nextAttrs?: any) => { [markName: string]: any };\n}\n"]}