@visactor/vchart 1.1.0-beta.3 → 1.1.0-beta.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 (199) hide show
  1. package/build/index.js +489 -389
  2. package/build/index.min.js +2 -2
  3. package/cjs/chart/base-chart.d.ts +3 -1
  4. package/cjs/chart/base-chart.js +34 -1
  5. package/cjs/chart/base-chart.js.map +1 -1
  6. package/cjs/chart/box-plot/box-plot.js +3 -8
  7. package/cjs/chart/box-plot/box-plot.js.map +1 -1
  8. package/cjs/chart/interface/chart.d.ts +10 -1
  9. package/cjs/chart/interface/chart.js.map +1 -1
  10. package/cjs/component/axis/base-axis.js +1 -14
  11. package/cjs/component/axis/base-axis.js.map +1 -1
  12. package/cjs/component/axis/interface.d.ts +1 -0
  13. package/cjs/component/axis/interface.js.map +1 -1
  14. package/cjs/component/axis/mixin/band-axis-mixin.d.ts +16 -0
  15. package/cjs/component/axis/mixin/band-axis-mixin.js +15 -1
  16. package/cjs/component/axis/mixin/band-axis-mixin.js.map +1 -1
  17. package/cjs/component/crosshair/cartesian.d.ts +2 -0
  18. package/cjs/component/crosshair/cartesian.js +11 -2
  19. package/cjs/component/crosshair/cartesian.js.map +1 -1
  20. package/cjs/component/crosshair/interface/spec.d.ts +6 -1
  21. package/cjs/component/crosshair/interface/spec.js.map +1 -1
  22. package/cjs/component/tooltip/handler/base.js.map +1 -1
  23. package/cjs/component/tooltip/handler/constants.d.ts +1 -1
  24. package/cjs/component/tooltip/handler/constants.js +2 -2
  25. package/cjs/component/tooltip/handler/constants.js.map +1 -1
  26. package/cjs/component/tooltip/handler/dom/dom-tooltip-handler.js +8 -8
  27. package/cjs/component/tooltip/handler/dom/dom-tooltip-handler.js.map +1 -1
  28. package/cjs/component/tooltip/handler/dom/interface.d.ts +3 -0
  29. package/cjs/component/tooltip/handler/dom/interface.js.map +1 -1
  30. package/cjs/component/tooltip/handler/dom/model/base-tooltip-model.d.ts +0 -1
  31. package/cjs/component/tooltip/handler/dom/model/base-tooltip-model.js +4 -2
  32. package/cjs/component/tooltip/handler/dom/model/base-tooltip-model.js.map +1 -1
  33. package/cjs/component/tooltip/handler/dom/model/content-column-model.d.ts +3 -0
  34. package/cjs/component/tooltip/handler/dom/model/content-column-model.js +34 -33
  35. package/cjs/component/tooltip/handler/dom/model/content-column-model.js.map +1 -1
  36. package/cjs/component/tooltip/handler/dom/model/interface.d.ts +2 -0
  37. package/cjs/component/tooltip/handler/dom/model/interface.js.map +1 -1
  38. package/cjs/component/tooltip/handler/dom/model/shape-model.d.ts +1 -0
  39. package/cjs/component/tooltip/handler/dom/model/shape-model.js +3 -3
  40. package/cjs/component/tooltip/handler/dom/model/shape-model.js.map +1 -1
  41. package/cjs/component/tooltip/handler/dom/model/text-model.d.ts +1 -1
  42. package/cjs/component/tooltip/handler/dom/model/text-model.js +3 -2
  43. package/cjs/component/tooltip/handler/dom/model/text-model.js.map +1 -1
  44. package/cjs/component/tooltip/handler/dom/model/title-model.js +3 -3
  45. package/cjs/component/tooltip/handler/dom/model/title-model.js.map +1 -1
  46. package/cjs/component/tooltip/handler/dom/util.d.ts +1 -0
  47. package/cjs/component/tooltip/handler/dom/util.js +28 -27
  48. package/cjs/component/tooltip/handler/dom/util.js.map +1 -1
  49. package/cjs/component/tooltip/handler/interface/style.d.ts +10 -7
  50. package/cjs/component/tooltip/handler/interface/style.js.map +1 -1
  51. package/cjs/component/tooltip/handler/utils/attribute.d.ts +9 -2
  52. package/cjs/component/tooltip/handler/utils/attribute.js +58 -9
  53. package/cjs/component/tooltip/handler/utils/attribute.js.map +1 -1
  54. package/cjs/component/tooltip/handler/utils/common.js.map +1 -1
  55. package/cjs/component/tooltip/handler/utils/style.d.ts +2 -2
  56. package/cjs/component/tooltip/handler/utils/style.js +5 -2
  57. package/cjs/component/tooltip/handler/utils/style.js.map +1 -1
  58. package/cjs/component/tooltip/interface/common.d.ts +6 -0
  59. package/cjs/component/tooltip/interface/common.js.map +1 -1
  60. package/cjs/component/tooltip/interface/theme.d.ts +4 -0
  61. package/cjs/component/tooltip/interface/theme.js.map +1 -1
  62. package/cjs/component/tooltip/tooltip.d.ts +3 -2
  63. package/cjs/component/tooltip/tooltip.js +8 -4
  64. package/cjs/component/tooltip/tooltip.js.map +1 -1
  65. package/cjs/component/tooltip/utils/show-tooltip.js +9 -4
  66. package/cjs/component/tooltip/utils/show-tooltip.js.map +1 -1
  67. package/cjs/constant/scatter.js +1 -2
  68. package/cjs/core/factory.js +2 -1
  69. package/cjs/core/index.d.ts +1 -1
  70. package/cjs/core/index.js +1 -1
  71. package/cjs/core/index.js.map +1 -1
  72. package/cjs/core/instance-manager.d.ts +2 -1
  73. package/cjs/core/instance-manager.js +7 -2
  74. package/cjs/core/instance-manager.js.map +1 -1
  75. package/cjs/core/interface.d.ts +3 -0
  76. package/cjs/core/interface.js.map +1 -1
  77. package/cjs/core/vchart.d.ts +5 -3
  78. package/cjs/core/vchart.js +9 -3
  79. package/cjs/core/vchart.js.map +1 -1
  80. package/cjs/data/transforms/legend-data/discrete/discrete.js +3 -3
  81. package/cjs/data/transforms/legend-data/discrete/discrete.js.map +1 -1
  82. package/cjs/event/event.d.ts +5 -1
  83. package/cjs/event/event.js +3 -0
  84. package/cjs/event/event.js.map +1 -1
  85. package/cjs/event/events/dimension/base.d.ts +4 -0
  86. package/cjs/event/events/dimension/base.js +16 -1
  87. package/cjs/event/events/dimension/base.js.map +1 -1
  88. package/cjs/event/events/dimension/util/cartesian.d.ts +4 -0
  89. package/cjs/event/events/dimension/util/cartesian.js +37 -46
  90. package/cjs/event/events/dimension/util/cartesian.js.map +1 -1
  91. package/cjs/event/interface.d.ts +5 -0
  92. package/cjs/event/interface.js.map +1 -1
  93. package/cjs/interaction/dimension-trigger.js +3 -3
  94. package/cjs/interaction/dimension-trigger.js.map +1 -1
  95. package/cjs/util/env.d.ts +1 -0
  96. package/cjs/util/env.js +3 -2
  97. package/cjs/util/env.js.map +1 -1
  98. package/cjs/util/text.d.ts +4 -0
  99. package/cjs/util/text.js +9 -1
  100. package/cjs/util/text.js.map +1 -1
  101. package/esm/chart/base-chart.d.ts +3 -1
  102. package/esm/chart/base-chart.js +35 -0
  103. package/esm/chart/base-chart.js.map +1 -1
  104. package/esm/chart/box-plot/box-plot.js +2 -9
  105. package/esm/chart/box-plot/box-plot.js.map +1 -1
  106. package/esm/chart/interface/chart.d.ts +10 -1
  107. package/esm/chart/interface/chart.js.map +1 -1
  108. package/esm/component/axis/base-axis.js +1 -14
  109. package/esm/component/axis/base-axis.js.map +1 -1
  110. package/esm/component/axis/interface.d.ts +1 -0
  111. package/esm/component/axis/interface.js.map +1 -1
  112. package/esm/component/axis/mixin/band-axis-mixin.d.ts +16 -0
  113. package/esm/component/axis/mixin/band-axis-mixin.js +16 -0
  114. package/esm/component/axis/mixin/band-axis-mixin.js.map +1 -1
  115. package/esm/component/crosshair/cartesian.d.ts +2 -0
  116. package/esm/component/crosshair/cartesian.js +12 -1
  117. package/esm/component/crosshair/cartesian.js.map +1 -1
  118. package/esm/component/crosshair/interface/spec.d.ts +6 -1
  119. package/esm/component/crosshair/interface/spec.js.map +1 -1
  120. package/esm/component/tooltip/handler/base.js.map +1 -1
  121. package/esm/component/tooltip/handler/constants.d.ts +1 -1
  122. package/esm/component/tooltip/handler/constants.js +1 -1
  123. package/esm/component/tooltip/handler/constants.js.map +1 -1
  124. package/esm/component/tooltip/handler/dom/dom-tooltip-handler.js +5 -5
  125. package/esm/component/tooltip/handler/dom/dom-tooltip-handler.js.map +1 -1
  126. package/esm/component/tooltip/handler/dom/interface.d.ts +3 -0
  127. package/esm/component/tooltip/handler/dom/interface.js.map +1 -1
  128. package/esm/component/tooltip/handler/dom/model/base-tooltip-model.d.ts +0 -1
  129. package/esm/component/tooltip/handler/dom/model/base-tooltip-model.js +1 -1
  130. package/esm/component/tooltip/handler/dom/model/base-tooltip-model.js.map +1 -1
  131. package/esm/component/tooltip/handler/dom/model/content-column-model.d.ts +3 -0
  132. package/esm/component/tooltip/handler/dom/model/content-column-model.js +33 -31
  133. package/esm/component/tooltip/handler/dom/model/content-column-model.js.map +1 -1
  134. package/esm/component/tooltip/handler/dom/model/interface.d.ts +2 -0
  135. package/esm/component/tooltip/handler/dom/model/interface.js.map +1 -1
  136. package/esm/component/tooltip/handler/dom/model/shape-model.d.ts +1 -0
  137. package/esm/component/tooltip/handler/dom/model/shape-model.js +3 -3
  138. package/esm/component/tooltip/handler/dom/model/shape-model.js.map +1 -1
  139. package/esm/component/tooltip/handler/dom/model/text-model.d.ts +1 -1
  140. package/esm/component/tooltip/handler/dom/model/text-model.js +3 -2
  141. package/esm/component/tooltip/handler/dom/model/text-model.js.map +1 -1
  142. package/esm/component/tooltip/handler/dom/model/title-model.js +3 -3
  143. package/esm/component/tooltip/handler/dom/model/title-model.js.map +1 -1
  144. package/esm/component/tooltip/handler/dom/util.d.ts +1 -0
  145. package/esm/component/tooltip/handler/dom/util.js +8 -5
  146. package/esm/component/tooltip/handler/dom/util.js.map +1 -1
  147. package/esm/component/tooltip/handler/interface/style.d.ts +10 -7
  148. package/esm/component/tooltip/handler/interface/style.js.map +1 -1
  149. package/esm/component/tooltip/handler/utils/attribute.d.ts +9 -2
  150. package/esm/component/tooltip/handler/utils/attribute.js +56 -8
  151. package/esm/component/tooltip/handler/utils/attribute.js.map +1 -1
  152. package/esm/component/tooltip/handler/utils/common.js.map +1 -1
  153. package/esm/component/tooltip/handler/utils/style.d.ts +2 -2
  154. package/esm/component/tooltip/handler/utils/style.js +5 -2
  155. package/esm/component/tooltip/handler/utils/style.js.map +1 -1
  156. package/esm/component/tooltip/interface/common.d.ts +6 -0
  157. package/esm/component/tooltip/interface/common.js.map +1 -1
  158. package/esm/component/tooltip/interface/theme.d.ts +4 -0
  159. package/esm/component/tooltip/interface/theme.js.map +1 -1
  160. package/esm/component/tooltip/tooltip.d.ts +3 -2
  161. package/esm/component/tooltip/tooltip.js +10 -4
  162. package/esm/component/tooltip/tooltip.js.map +1 -1
  163. package/esm/component/tooltip/utils/show-tooltip.js +9 -4
  164. package/esm/component/tooltip/utils/show-tooltip.js.map +1 -1
  165. package/esm/constant/scatter.js +1 -2
  166. package/esm/core/factory.js +2 -1
  167. package/esm/core/index.d.ts +1 -1
  168. package/esm/core/index.js +1 -1
  169. package/esm/core/index.js.map +1 -1
  170. package/esm/core/instance-manager.d.ts +2 -1
  171. package/esm/core/instance-manager.js +7 -2
  172. package/esm/core/instance-manager.js.map +1 -1
  173. package/esm/core/interface.d.ts +3 -0
  174. package/esm/core/interface.js.map +1 -1
  175. package/esm/core/vchart.d.ts +5 -3
  176. package/esm/core/vchart.js +9 -3
  177. package/esm/core/vchart.js.map +1 -1
  178. package/esm/data/transforms/legend-data/discrete/discrete.js +3 -3
  179. package/esm/data/transforms/legend-data/discrete/discrete.js.map +1 -1
  180. package/esm/event/event.d.ts +5 -1
  181. package/esm/event/event.js +3 -0
  182. package/esm/event/event.js.map +1 -1
  183. package/esm/event/events/dimension/base.d.ts +4 -0
  184. package/esm/event/events/dimension/base.js +18 -1
  185. package/esm/event/events/dimension/base.js.map +1 -1
  186. package/esm/event/events/dimension/util/cartesian.d.ts +4 -0
  187. package/esm/event/events/dimension/util/cartesian.js +32 -44
  188. package/esm/event/events/dimension/util/cartesian.js.map +1 -1
  189. package/esm/event/interface.d.ts +5 -0
  190. package/esm/event/interface.js.map +1 -1
  191. package/esm/interaction/dimension-trigger.js +2 -4
  192. package/esm/interaction/dimension-trigger.js.map +1 -1
  193. package/esm/util/env.d.ts +1 -0
  194. package/esm/util/env.js +2 -0
  195. package/esm/util/env.js.map +1 -1
  196. package/esm/util/text.d.ts +4 -0
  197. package/esm/util/text.js +7 -1
  198. package/esm/util/text.js.map +1 -1
  199. package/package.json +7 -7
@@ -136,9 +136,14 @@ export interface IEvent {
136
136
  off: (<Evt extends EventType>(eType: Evt, callback?: EventCallback<EventParamsDefinition[Evt]>) => this) & (<Evt extends EventType>(eType: Evt, query: EventQuery, callback: EventCallback<EventParamsDefinition[Evt]>) => this);
137
137
  emit: <Evt extends EventType>(eType: Evt, params: EventParamsDefinition[Evt], level?: EventBubbleLevel) => void;
138
138
  release: () => void;
139
+ getComposedEventMap: () => Map<EventCallback<EventParams>, {
140
+ eventType: EventType;
141
+ event: IComposedEvent;
142
+ }>;
139
143
  }
140
144
  export interface IComposedEvent {
141
145
  register: <Evt extends EventType>(eType: Evt, handler: EventHandler<EventParamsDefinition[Evt]>) => void;
142
146
  unregister: () => void;
147
+ dispatch: (v: unknown, opt: unknown) => unknown;
143
148
  }
144
149
  export {};
@@ -1 +1 @@
1
- {"version":3,"sources":["../src/event/interface.ts"],"names":[],"mappings":"","file":"interface.js","sourcesContent":["import type { INode } from '@visactor/vrender';\nimport type { IElement } from '@visactor/vgrammar';\nimport type { IChart } from '../chart/interface';\nimport type { IModel } from '../model/interface';\nimport type { IMark, MarkType } from '../mark/interface';\nimport type { VChart } from '../core/vchart';\nimport type { DimensionEventParams } from './events/dimension/interface';\nimport type { Datum, IPoint, StringOrNumber } from '../typings';\nimport type { ChartEvent, Event_Bubble_Level, Event_Source_Type, VGRAMMAR_HOOK_EVENT } from '../constant';\nimport type { SeriesType } from '../series/interface';\n\nexport type EventType =\n | 'pointerdown'\n | 'pointerup'\n | 'pointerupoutside'\n | 'pointertap'\n | 'pointerover'\n | 'pointermove'\n | 'pointerenter'\n | 'pointerleave'\n | 'pointerout'\n | 'mousedown'\n | 'mouseup'\n | 'mouseupoutside'\n | 'rightdown'\n | 'rightup'\n | 'rightupoutside'\n | 'click'\n | 'dblclick'\n | 'mousemove'\n | 'mouseover'\n | 'mouseout'\n | 'mouseenter'\n | 'mouseleave'\n | 'wheel'\n | 'touchstart'\n | 'touchend'\n | 'touchendoutside'\n | 'touchmove'\n | 'touchcancel'\n | 'tap'\n | 'dragstart'\n | 'drag'\n | 'dragenter'\n | 'dragleave'\n | 'dragover'\n | 'dragend'\n | 'drop'\n | 'pan'\n | 'panstart'\n | 'panend'\n | 'press'\n | 'pressup'\n | 'pressend'\n | 'pinch'\n | 'pinchstart'\n | 'pinchend'\n | 'swipe'\n | keyof typeof ChartEvent\n | keyof typeof VGRAMMAR_HOOK_EVENT\n | string;\n\nexport type EventBubbleLevel = keyof typeof Event_Bubble_Level;\n\nexport type ComponentType =\n | 'axis'\n | 'dataZoom'\n | 'indicator'\n | 'legend'\n | 'mapLabel'\n | 'markLine'\n | 'tooltip'\n | 'title';\nexport type EventTargetType = MarkType | ComponentType | SeriesType;\n\nexport type EventSourceType = keyof typeof Event_Source_Type;\n\n/**\n * 事件 API 中的事件筛选配置\n */\nexport type EventQuery = {\n /**\n * 事件的冒泡层级配置,其中 model 指的是图表的内部模型,包括 region、series 以及 component\n */\n level?: EventBubbleLevel;\n /**\n * 事件来源配置。\n * - `window`: window 事件\n * - `chart`: 图表事件\n */\n source?: EventSourceType;\n\n /**\n * vrender 图形节点名称\n */\n nodeName?: string;\n /**\n * mark 图元名称\n */\n markName?: string;\n /**\n * 仅在 level 为 'mark' 或者 'model' 的场景下使用,用于筛选 mark 类型或者图表组成元素模型类型\n */\n type?: EventTargetType;\n /**\n * 用户在 spec 上配置的 id\n */\n id?: StringOrNumber;\n /**\n * 自定义过滤函数\n * @param params\n * @returns\n */\n filter?: (params: Partial<BaseEventParams>) => boolean;\n\n throttle?: number;\n debounce?: number;\n\n consume?: boolean;\n};\n\nexport type EventParams = {\n /**\n * 事件对象\n */\n event?: SuperEvent;\n /**\n * 供不同的事件用于存储期望携带的数据\n */\n value?: any;\n /**\n * 事件来源的 mark\n */\n mark?: IMark;\n /**\n * 事件来源的 model\n */\n model?: IModel;\n /**\n * 事件来源的 chart\n */\n chart?: IChart;\n /**\n * 事件拾取到的图元的数据\n */\n datum?: Datum;\n /**\n * 拾取到的图形节点\n */\n node?: INode;\n};\n\ntype SuperEvent = Event & {\n [key: string]: any;\n};\n\nexport type BaseEventParams = EventParams & {\n /**\n * 事件对象\n */\n event: SuperEvent;\n item: IElement;\n datum: Datum;\n source: EventSourceType;\n itemMap: Map<string, any>;\n};\n\nexport type EventCallback<Params extends EventParams> = (params: Params) => boolean | void;\n\n/**\n * 内部事件分发中所应用的事件筛选配置\n */\nexport type EventFilter = {\n source: EventSourceType;\n level: EventBubbleLevel;\n type: string | null;\n markName: string | null;\n nodeName: string | null;\n userId: StringOrNumber | null;\n filter: (params: Partial<BaseEventParams>) => boolean | null;\n};\n\nexport type EventHandler<Params extends EventParams> = {\n callback: EventCallback<Params>;\n query: EventQuery | null;\n // 如果有 debounce/throttle 配置则需要封装原始回调函数\n wrappedCallback?: EventCallback<Params>;\n // 转换后的事件筛选配置\n filter?: EventFilter;\n};\n\nexport type ExtendEventParam = EventParams & {\n event?: Event;\n item?: any;\n datum?: Datum;\n source?: EventSourceType;\n itemMap?: Map<string, any>;\n};\n\nexport type PanEventParam = ExtendEventParam & {\n // x/y方向上的偏移值\n delta: [number, number];\n};\n\nexport type ZoomEventParam = ExtendEventParam & {\n // 缩放值\n scale: number;\n // 缩放中心\n scaleCenter: IPoint;\n};\n\nexport type EventParamsDefinition = {\n // 基础事件回调参数\n pointerdown: BaseEventParams;\n pointerup: BaseEventParams;\n pointerupoutside: BaseEventParams;\n pointertap: BaseEventParams;\n pointerover: BaseEventParams;\n pointermove: BaseEventParams;\n pointerenter: BaseEventParams;\n pointerleave: BaseEventParams;\n pointerout: BaseEventParams;\n mousedown: BaseEventParams;\n mouseup: BaseEventParams;\n mouseupoutside: BaseEventParams;\n rightdown: BaseEventParams;\n rightup: BaseEventParams;\n rightupoutside: BaseEventParams;\n click: BaseEventParams;\n dblclick: BaseEventParams;\n mousemove: BaseEventParams;\n mouseover: BaseEventParams;\n mouseout: BaseEventParams;\n mouseenter: BaseEventParams;\n mouseleave: BaseEventParams;\n wheel: BaseEventParams;\n touchstart: BaseEventParams;\n touchend: BaseEventParams;\n touchendoutside: BaseEventParams;\n touchmove: BaseEventParams;\n touchcancel: BaseEventParams;\n\n dragstart: BaseEventParams;\n drag: BaseEventParams;\n dragenter: BaseEventParams;\n dragleave: BaseEventParams;\n dragover: BaseEventParams;\n dragend: BaseEventParams;\n drop: BaseEventParams;\n\n tap: BaseEventParams;\n pan: BaseEventParams;\n panstart: BaseEventParams;\n panend: BaseEventParams;\n press: BaseEventParams;\n pressup: BaseEventParams;\n pressend: BaseEventParams;\n pinch: BaseEventParams;\n pinchstart: BaseEventParams;\n pinchend: BaseEventParams;\n swipe: BaseEventParams;\n\n // VChart 内置的扩展组合事件\n dimension: DimensionEventParams;\n\n // 扩展事件参数\n [key: string]: ExtendEventParam;\n};\n\nexport interface IEventDispatcher {\n globalInstance: VChart;\n register: <Evt extends EventType>(eType: Evt, handler: EventHandler<EventParamsDefinition[Evt]>) => this;\n unregister: <Evt extends EventType>(eType: Evt, handler?: EventHandler<EventParamsDefinition[Evt]>) => this;\n dispatch: <Evt extends EventType>(eType: Evt, params?: EventParamsDefinition[Evt], level?: EventBubbleLevel) => this;\n release: () => void;\n}\n\nexport interface IEvent {\n on: (<Evt extends EventType>(eType: Evt, callback: EventCallback<EventParamsDefinition[Evt]>) => this) &\n (<Evt extends EventType>(\n eType: Evt,\n query: EventQuery,\n callback: EventCallback<EventParamsDefinition[Evt]>\n ) => this);\n off: (<Evt extends EventType>(eType: Evt, callback?: EventCallback<EventParamsDefinition[Evt]>) => this) &\n (<Evt extends EventType>(\n eType: Evt,\n query: EventQuery,\n callback: EventCallback<EventParamsDefinition[Evt]>\n ) => this);\n emit: <Evt extends EventType>(eType: Evt, params: EventParamsDefinition[Evt], level?: EventBubbleLevel) => void;\n release: () => void;\n}\n\nexport interface IComposedEvent {\n register: <Evt extends EventType>(eType: Evt, handler: EventHandler<EventParamsDefinition[Evt]>) => void;\n unregister: () => void;\n}\n"]}
1
+ {"version":3,"sources":["../src/event/interface.ts"],"names":[],"mappings":"","file":"interface.js","sourcesContent":["import type { INode } from '@visactor/vrender';\nimport type { IElement } from '@visactor/vgrammar';\nimport type { IChart } from '../chart/interface';\nimport type { IModel } from '../model/interface';\nimport type { IMark, MarkType } from '../mark/interface';\nimport type { VChart } from '../core/vchart';\nimport type { DimensionEventParams } from './events/dimension/interface';\nimport type { Datum, IPoint, StringOrNumber } from '../typings';\nimport type { ChartEvent, Event_Bubble_Level, Event_Source_Type, VGRAMMAR_HOOK_EVENT } from '../constant';\nimport type { SeriesType } from '../series/interface';\n\nexport type EventType =\n | 'pointerdown'\n | 'pointerup'\n | 'pointerupoutside'\n | 'pointertap'\n | 'pointerover'\n | 'pointermove'\n | 'pointerenter'\n | 'pointerleave'\n | 'pointerout'\n | 'mousedown'\n | 'mouseup'\n | 'mouseupoutside'\n | 'rightdown'\n | 'rightup'\n | 'rightupoutside'\n | 'click'\n | 'dblclick'\n | 'mousemove'\n | 'mouseover'\n | 'mouseout'\n | 'mouseenter'\n | 'mouseleave'\n | 'wheel'\n | 'touchstart'\n | 'touchend'\n | 'touchendoutside'\n | 'touchmove'\n | 'touchcancel'\n | 'tap'\n | 'dragstart'\n | 'drag'\n | 'dragenter'\n | 'dragleave'\n | 'dragover'\n | 'dragend'\n | 'drop'\n | 'pan'\n | 'panstart'\n | 'panend'\n | 'press'\n | 'pressup'\n | 'pressend'\n | 'pinch'\n | 'pinchstart'\n | 'pinchend'\n | 'swipe'\n | keyof typeof ChartEvent\n | keyof typeof VGRAMMAR_HOOK_EVENT\n | string;\n\nexport type EventBubbleLevel = keyof typeof Event_Bubble_Level;\n\nexport type ComponentType =\n | 'axis'\n | 'dataZoom'\n | 'indicator'\n | 'legend'\n | 'mapLabel'\n | 'markLine'\n | 'tooltip'\n | 'title';\nexport type EventTargetType = MarkType | ComponentType | SeriesType;\n\nexport type EventSourceType = keyof typeof Event_Source_Type;\n\n/**\n * 事件 API 中的事件筛选配置\n */\nexport type EventQuery = {\n /**\n * 事件的冒泡层级配置,其中 model 指的是图表的内部模型,包括 region、series 以及 component\n */\n level?: EventBubbleLevel;\n /**\n * 事件来源配置。\n * - `window`: window 事件\n * - `chart`: 图表事件\n */\n source?: EventSourceType;\n\n /**\n * vrender 图形节点名称\n */\n nodeName?: string;\n /**\n * mark 图元名称\n */\n markName?: string;\n /**\n * 仅在 level 为 'mark' 或者 'model' 的场景下使用,用于筛选 mark 类型或者图表组成元素模型类型\n */\n type?: EventTargetType;\n /**\n * 用户在 spec 上配置的 id\n */\n id?: StringOrNumber;\n /**\n * 自定义过滤函数\n * @param params\n * @returns\n */\n filter?: (params: Partial<BaseEventParams>) => boolean;\n\n throttle?: number;\n debounce?: number;\n\n consume?: boolean;\n};\n\nexport type EventParams = {\n /**\n * 事件对象\n */\n event?: SuperEvent;\n /**\n * 供不同的事件用于存储期望携带的数据\n */\n value?: any;\n /**\n * 事件来源的 mark\n */\n mark?: IMark;\n /**\n * 事件来源的 model\n */\n model?: IModel;\n /**\n * 事件来源的 chart\n */\n chart?: IChart;\n /**\n * 事件拾取到的图元的数据\n */\n datum?: Datum;\n /**\n * 拾取到的图形节点\n */\n node?: INode;\n};\n\ntype SuperEvent = Event & {\n [key: string]: any;\n};\n\nexport type BaseEventParams = EventParams & {\n /**\n * 事件对象\n */\n event: SuperEvent;\n item: IElement;\n datum: Datum;\n source: EventSourceType;\n itemMap: Map<string, any>;\n};\n\nexport type EventCallback<Params extends EventParams> = (params: Params) => boolean | void;\n\n/**\n * 内部事件分发中所应用的事件筛选配置\n */\nexport type EventFilter = {\n source: EventSourceType;\n level: EventBubbleLevel;\n type: string | null;\n markName: string | null;\n nodeName: string | null;\n userId: StringOrNumber | null;\n filter: (params: Partial<BaseEventParams>) => boolean | null;\n};\n\nexport type EventHandler<Params extends EventParams> = {\n callback: EventCallback<Params>;\n query: EventQuery | null;\n // 如果有 debounce/throttle 配置则需要封装原始回调函数\n wrappedCallback?: EventCallback<Params>;\n // 转换后的事件筛选配置\n filter?: EventFilter;\n};\n\nexport type ExtendEventParam = EventParams & {\n event?: Event;\n item?: any;\n datum?: Datum;\n source?: EventSourceType;\n itemMap?: Map<string, any>;\n};\n\nexport type PanEventParam = ExtendEventParam & {\n // x/y方向上的偏移值\n delta: [number, number];\n};\n\nexport type ZoomEventParam = ExtendEventParam & {\n // 缩放值\n scale: number;\n // 缩放中心\n scaleCenter: IPoint;\n};\n\nexport type EventParamsDefinition = {\n // 基础事件回调参数\n pointerdown: BaseEventParams;\n pointerup: BaseEventParams;\n pointerupoutside: BaseEventParams;\n pointertap: BaseEventParams;\n pointerover: BaseEventParams;\n pointermove: BaseEventParams;\n pointerenter: BaseEventParams;\n pointerleave: BaseEventParams;\n pointerout: BaseEventParams;\n mousedown: BaseEventParams;\n mouseup: BaseEventParams;\n mouseupoutside: BaseEventParams;\n rightdown: BaseEventParams;\n rightup: BaseEventParams;\n rightupoutside: BaseEventParams;\n click: BaseEventParams;\n dblclick: BaseEventParams;\n mousemove: BaseEventParams;\n mouseover: BaseEventParams;\n mouseout: BaseEventParams;\n mouseenter: BaseEventParams;\n mouseleave: BaseEventParams;\n wheel: BaseEventParams;\n touchstart: BaseEventParams;\n touchend: BaseEventParams;\n touchendoutside: BaseEventParams;\n touchmove: BaseEventParams;\n touchcancel: BaseEventParams;\n\n dragstart: BaseEventParams;\n drag: BaseEventParams;\n dragenter: BaseEventParams;\n dragleave: BaseEventParams;\n dragover: BaseEventParams;\n dragend: BaseEventParams;\n drop: BaseEventParams;\n\n tap: BaseEventParams;\n pan: BaseEventParams;\n panstart: BaseEventParams;\n panend: BaseEventParams;\n press: BaseEventParams;\n pressup: BaseEventParams;\n pressend: BaseEventParams;\n pinch: BaseEventParams;\n pinchstart: BaseEventParams;\n pinchend: BaseEventParams;\n swipe: BaseEventParams;\n\n // VChart 内置的扩展组合事件\n dimension: DimensionEventParams;\n\n // 扩展事件参数\n [key: string]: ExtendEventParam;\n};\n\nexport interface IEventDispatcher {\n globalInstance: VChart;\n register: <Evt extends EventType>(eType: Evt, handler: EventHandler<EventParamsDefinition[Evt]>) => this;\n unregister: <Evt extends EventType>(eType: Evt, handler?: EventHandler<EventParamsDefinition[Evt]>) => this;\n dispatch: <Evt extends EventType>(eType: Evt, params?: EventParamsDefinition[Evt], level?: EventBubbleLevel) => this;\n release: () => void;\n}\n\nexport interface IEvent {\n on: (<Evt extends EventType>(eType: Evt, callback: EventCallback<EventParamsDefinition[Evt]>) => this) &\n (<Evt extends EventType>(\n eType: Evt,\n query: EventQuery,\n callback: EventCallback<EventParamsDefinition[Evt]>\n ) => this);\n off: (<Evt extends EventType>(eType: Evt, callback?: EventCallback<EventParamsDefinition[Evt]>) => this) &\n (<Evt extends EventType>(\n eType: Evt,\n query: EventQuery,\n callback: EventCallback<EventParamsDefinition[Evt]>\n ) => this);\n emit: <Evt extends EventType>(eType: Evt, params: EventParamsDefinition[Evt], level?: EventBubbleLevel) => void;\n release: () => void;\n\n getComposedEventMap: () => Map<EventCallback<EventParams>, { eventType: EventType; event: IComposedEvent }>;\n}\n\nexport interface IComposedEvent {\n register: <Evt extends EventType>(eType: Evt, handler: EventHandler<EventParamsDefinition[Evt]>) => void;\n unregister: () => void;\n dispatch: (v: unknown, opt: unknown) => unknown;\n}\n"]}
@@ -2,8 +2,6 @@ import { isEmpty, isArray } from "@visactor/vutils";
2
2
 
3
3
  import { DimensionEventEnum } from "../event/events/dimension/interface";
4
4
 
5
- import { Event } from "../event/event";
6
-
7
5
  import { MarkSet } from "../mark/mark-set";
8
6
 
9
7
  import { STATE_VALUE_ENUM } from "../compile/mark/interface";
@@ -34,7 +32,7 @@ export class DimensionTrigger {
34
32
  params = null;
35
33
  }
36
34
  this._lastDimensionEvent = params;
37
- }, this._option = option, this.event = new Event(option.eventDispatcher, option.mode),
35
+ }, this._option = option, this.event = this._option.model.getOption().getChart().getEvent(),
38
36
  this.interaction = option.interaction, this.initConfig(option.mode);
39
37
  }
40
38
  setStateKeys(fields) {}
@@ -59,7 +57,7 @@ export class DimensionTrigger {
59
57
  const items = [];
60
58
  return params.dimensionInfo.forEach((df => {
61
59
  df.data.forEach((dd => {
62
- (reverse ? this._markReverse : this._marks).getMarks().filter((m => m.model === dd.series)).forEach((m => {
60
+ (reverse ? this._markReverse : this._marks).getMarks().filter((m => m.model === dd.series && m.getVisible())).forEach((m => {
63
61
  const elements = m.getProduct().elements.filter((e => {
64
62
  const datum = e.getDatum();
65
63
  let c;
@@ -1 +1 @@
1
- {"version":3,"sources":["../src/interaction/dimension-trigger.ts"],"names":[],"mappings":"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","file":"dimension-trigger.js","sourcesContent":["import { isEmpty, isArray } from '@visactor/vutils';\nimport type { IElement } from '@visactor/vgrammar';\nimport type { DimensionEventParams } from '../event/events/dimension/interface';\n// eslint-disable-next-line no-duplicate-imports\nimport { DimensionEventEnum } from '../event/events/dimension/interface';\nimport { Event } from '../event/event';\n\nimport type { IMark } from '../mark/interface';\nimport type { EventCallback, EventParams, IEvent } from '../event/interface';\nimport type { IHoverSpec, IInteraction, ISelectSpec, ITrigger, ITriggerOption } from './interface';\nimport type { RenderMode } from '../typings/spec';\nimport { MarkSet } from '../mark/mark-set';\nimport { STATE_VALUE_ENUM } from '../compile/mark/interface';\n\nexport class DimensionTrigger implements ITrigger {\n // 事件\n readonly event: IEvent;\n\n protected readonly interaction: IInteraction;\n\n protected _option: ITriggerOption;\n protected _marks: MarkSet = new MarkSet();\n protected _markReverse: MarkSet = new MarkSet();\n\n protected _lastDimensionEvent: DimensionEventParams = null;\n\n private _hover: IHoverSpec;\n get hover() {\n return this._hover;\n }\n private _select: ISelectSpec;\n get select() {\n return this._select;\n }\n\n constructor(option: ITriggerOption) {\n this._option = option;\n this.event = new Event(option.eventDispatcher, option.mode);\n this.interaction = option.interaction;\n this.initConfig(option.mode);\n }\n\n setStateKeys(fields: string[]): void {\n // do nothing\n }\n\n registerMark(mark: IMark): void {\n // do nothing\n if (!isEmpty(mark.stateStyle[STATE_VALUE_ENUM.STATE_DIMENSION_HOVER])) {\n this._marks.addMark(mark);\n }\n if (!isEmpty(mark.stateStyle[STATE_VALUE_ENUM.STATE_DIMENSION_HOVER_REVERSE])) {\n this._markReverse.addMark(mark);\n }\n }\n\n init(): void {\n this.initEvent();\n }\n\n release(): void {\n this.releaseEvent();\n }\n\n // event\n protected initEvent() {\n const event = this.event;\n event.on(DimensionEventEnum.dimensionHover, this.onHover as EventCallback<EventParams>);\n }\n\n protected releaseEvent(): void {\n this.event.release();\n }\n\n private initConfig(mode: RenderMode): void {\n // do nothing\n }\n\n protected getEventElement(params: DimensionEventParams, reverse: boolean = false): { el: IElement; mark: IMark }[] {\n // items 修改遍历方法从 mark\n\n const items: { el: IElement; mark: IMark }[] = [] as unknown as { el: IElement; mark: IMark }[];\n params.dimensionInfo.forEach(df => {\n df.data.forEach(dd => {\n const seriesMark = (reverse ? this._markReverse : this._marks).getMarks().filter(m => m.model === dd.series);\n seriesMark.forEach(m => {\n const elements = m\n .getProduct()\n .elements.filter(e => {\n const datum = e.getDatum();\n let c;\n if (isArray(datum)) {\n c = datum.every((oneData, i) => oneData === dd.datum[i]);\n } else {\n c = dd.datum.some(dd_d => dd_d === datum);\n }\n return reverse ? !c : c;\n })\n .map(el => {\n return {\n el,\n mark: m\n };\n });\n items.push(...elements);\n });\n });\n });\n return items;\n }\n\n protected dimensionDataEqual(params: DimensionEventParams) {\n if (this._lastDimensionEvent === params) {\n return true;\n }\n if (!this._lastDimensionEvent || !params) {\n return false;\n }\n if (this._lastDimensionEvent.dimensionInfo.length !== params.dimensionInfo.length) {\n return false;\n }\n for (let i = 0; i < this._lastDimensionEvent.dimensionInfo.length; i++) {\n const last = this._lastDimensionEvent.dimensionInfo[i];\n const current = params.dimensionInfo[i];\n if (last.value !== current.value) {\n return false;\n }\n if (last.axis !== current.axis) {\n return false;\n }\n if (last.data.length !== current.data.length) {\n return false;\n }\n for (let j = 0; j < last.data.length; j++) {\n const lastData = last.data[j];\n const currentData = current.data[j];\n if (lastData.series !== currentData.series) {\n return false;\n }\n if (lastData.datum.length !== currentData.datum.length) {\n return false;\n }\n for (let k = 0; k < lastData.datum.length; k++) {\n if (lastData.datum[k] !== currentData.datum[k]) {\n return false;\n }\n }\n }\n }\n return true;\n }\n\n private onHover = (params: DimensionEventParams) => {\n const elements = this.getEventElement(params);\n switch (params.action) {\n case 'enter':\n // clear last hover\n // eslint-disable-next-line no-case-declarations\n const lastHover = this.interaction.getEventElement(STATE_VALUE_ENUM.STATE_DIMENSION_HOVER);\n lastHover.forEach(e => {\n this.interaction.addEventElement(STATE_VALUE_ENUM.STATE_DIMENSION_HOVER_REVERSE, e);\n });\n this.interaction.clearEventElement(STATE_VALUE_ENUM.STATE_DIMENSION_HOVER, false);\n // add new\n elements.forEach(({ el, mark }) => {\n this.interaction.addEventElement(STATE_VALUE_ENUM.STATE_DIMENSION_HOVER, el);\n });\n this.interaction.reverseEventElement(STATE_VALUE_ENUM.STATE_DIMENSION_HOVER);\n break;\n case 'leave':\n // clear all\n this.interaction.clearEventElement(STATE_VALUE_ENUM.STATE_DIMENSION_HOVER, true);\n params = null;\n break;\n case 'click':\n case 'move':\n default:\n break;\n }\n this._lastDimensionEvent = params;\n };\n}\n"]}
1
+ {"version":3,"sources":["../src/interaction/dimension-trigger.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,MAAM,kBAAkB,CAAC;AAIpD,OAAO,EAAE,kBAAkB,EAAE,MAAM,qCAAqC,CAAC;AAOzE,OAAO,EAAE,OAAO,EAAE,MAAM,kBAAkB,CAAC;AAC3C,OAAO,EAAE,gBAAgB,EAAE,MAAM,2BAA2B,CAAC;AAE7D,MAAM,OAAO,gBAAgB;IAa3B,IAAI,KAAK;QACP,OAAO,IAAI,CAAC,MAAM,CAAC;IACrB,CAAC;IAED,IAAI,MAAM;QACR,OAAO,IAAI,CAAC,OAAO,CAAC;IACtB,CAAC;IAED,YAAY,MAAsB;QAdxB,WAAM,GAAY,IAAI,OAAO,EAAE,CAAC;QAChC,iBAAY,GAAY,IAAI,OAAO,EAAE,CAAC;QAEtC,wBAAmB,GAAyB,IAAI,CAAC;QAkInD,YAAO,GAAG,CAAC,MAA4B,EAAE,EAAE;YACjD,MAAM,QAAQ,GAAG,IAAI,CAAC,eAAe,CAAC,MAAM,CAAC,CAAC;YAC9C,QAAQ,MAAM,CAAC,MAAM,EAAE;gBACrB,KAAK,OAAO;oBAGV,MAAM,SAAS,GAAG,IAAI,CAAC,WAAW,CAAC,eAAe,CAAC,gBAAgB,CAAC,qBAAqB,CAAC,CAAC;oBAC3F,SAAS,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE;wBACpB,IAAI,CAAC,WAAW,CAAC,eAAe,CAAC,gBAAgB,CAAC,6BAA6B,EAAE,CAAC,CAAC,CAAC;oBACtF,CAAC,CAAC,CAAC;oBACH,IAAI,CAAC,WAAW,CAAC,iBAAiB,CAAC,gBAAgB,CAAC,qBAAqB,EAAE,KAAK,CAAC,CAAC;oBAElF,QAAQ,CAAC,OAAO,CAAC,CAAC,EAAE,EAAE,EAAE,IAAI,EAAE,EAAE,EAAE;wBAChC,IAAI,CAAC,WAAW,CAAC,eAAe,CAAC,gBAAgB,CAAC,qBAAqB,EAAE,EAAE,CAAC,CAAC;oBAC/E,CAAC,CAAC,CAAC;oBACH,IAAI,CAAC,WAAW,CAAC,mBAAmB,CAAC,gBAAgB,CAAC,qBAAqB,CAAC,CAAC;oBAC7E,MAAM;gBACR,KAAK,OAAO;oBAEV,IAAI,CAAC,WAAW,CAAC,iBAAiB,CAAC,gBAAgB,CAAC,qBAAqB,EAAE,IAAI,CAAC,CAAC;oBACjF,MAAM,GAAG,IAAI,CAAC;oBACd,MAAM;gBACR,KAAK,OAAO,CAAC;gBACb,KAAK,MAAM,CAAC;gBACZ;oBACE,MAAM;aACT;YACD,IAAI,CAAC,mBAAmB,GAAG,MAAM,CAAC;QACpC,CAAC,CAAC;QAlJA,IAAI,CAAC,OAAO,GAAG,MAAM,CAAC;QACtB,IAAI,CAAC,KAAK,GAAG,IAAI,CAAC,OAAO,CAAC,KAAK,CAAC,SAAS,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,EAAE,CAAC;QAClE,IAAI,CAAC,WAAW,GAAG,MAAM,CAAC,WAAW,CAAC;QACtC,IAAI,CAAC,UAAU,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC;IAC/B,CAAC;IAED,YAAY,CAAC,MAAgB;IAE7B,CAAC;IAED,YAAY,CAAC,IAAW;QAEtB,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,UAAU,CAAC,gBAAgB,CAAC,qBAAqB,CAAC,CAAC,EAAE;YACrE,IAAI,CAAC,MAAM,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC;SAC3B;QACD,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,UAAU,CAAC,gBAAgB,CAAC,6BAA6B,CAAC,CAAC,EAAE;YAC7E,IAAI,CAAC,YAAY,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC;SACjC;IACH,CAAC;IAED,IAAI;QACF,IAAI,CAAC,SAAS,EAAE,CAAC;IACnB,CAAC;IAED,OAAO;QACL,IAAI,CAAC,YAAY,EAAE,CAAC;IACtB,CAAC;IAGS,SAAS;QACjB,MAAM,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC;QACzB,KAAK,CAAC,EAAE,CAAC,kBAAkB,CAAC,cAAc,EAAE,IAAI,CAAC,OAAqC,CAAC,CAAC;IAC1F,CAAC;IAES,YAAY;QACpB,IAAI,CAAC,KAAK,CAAC,OAAO,EAAE,CAAC;IACvB,CAAC;IAEO,UAAU,CAAC,IAAgB;IAEnC,CAAC;IAES,eAAe,CAAC,MAA4B,EAAE,UAAmB,KAAK;QAG9E,MAAM,KAAK,GAAoC,EAAgD,CAAC;QAChG,MAAM,CAAC,aAAa,CAAC,OAAO,CAAC,EAAE,CAAC,EAAE;YAChC,EAAE,CAAC,IAAI,CAAC,OAAO,CAAC,EAAE,CAAC,EAAE;gBACnB,MAAM,UAAU,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,IAAI,CAAC,YAAY,CAAC,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC;qBAC3D,QAAQ,EAAE;qBACV,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,KAAK,KAAK,EAAE,CAAC,MAAM,IAAI,CAAC,CAAC,UAAU,EAAE,CAAC,CAAC;gBACxD,UAAU,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE;oBACrB,MAAM,QAAQ,GAAG,CAAC;yBACf,UAAU,EAAE;yBACZ,QAAQ,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE;wBACnB,MAAM,KAAK,GAAG,CAAC,CAAC,QAAQ,EAAE,CAAC;wBAC3B,IAAI,CAAC,CAAC;wBACN,IAAI,OAAO,CAAC,KAAK,CAAC,EAAE;4BAClB,CAAC,GAAG,KAAK,CAAC,KAAK,CAAC,CAAC,OAAO,EAAE,CAAC,EAAE,EAAE,CAAC,OAAO,KAAK,EAAE,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC;yBAC1D;6BAAM;4BACL,CAAC,GAAG,EAAE,CAAC,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,IAAI,KAAK,KAAK,CAAC,CAAC;yBAC3C;wBACD,OAAO,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;oBAC1B,CAAC,CAAC;yBACD,GAAG,CAAC,EAAE,CAAC,EAAE;wBACR,OAAO;4BACL,EAAE;4BACF,IAAI,EAAE,CAAC;yBACR,CAAC;oBACJ,CAAC,CAAC,CAAC;oBACL,KAAK,CAAC,IAAI,CAAC,GAAG,QAAQ,CAAC,CAAC;gBAC1B,CAAC,CAAC,CAAC;YACL,CAAC,CAAC,CAAC;QACL,CAAC,CAAC,CAAC;QACH,OAAO,KAAK,CAAC;IACf,CAAC;IAES,kBAAkB,CAAC,MAA4B;QACvD,IAAI,IAAI,CAAC,mBAAmB,KAAK,MAAM,EAAE;YACvC,OAAO,IAAI,CAAC;SACb;QACD,IAAI,CAAC,IAAI,CAAC,mBAAmB,IAAI,CAAC,MAAM,EAAE;YACxC,OAAO,KAAK,CAAC;SACd;QACD,IAAI,IAAI,CAAC,mBAAmB,CAAC,aAAa,CAAC,MAAM,KAAK,MAAM,CAAC,aAAa,CAAC,MAAM,EAAE;YACjF,OAAO,KAAK,CAAC;SACd;QACD,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,IAAI,CAAC,mBAAmB,CAAC,aAAa,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE;YACtE,MAAM,IAAI,GAAG,IAAI,CAAC,mBAAmB,CAAC,aAAa,CAAC,CAAC,CAAC,CAAC;YACvD,MAAM,OAAO,GAAG,MAAM,CAAC,aAAa,CAAC,CAAC,CAAC,CAAC;YACxC,IAAI,IAAI,CAAC,KAAK,KAAK,OAAO,CAAC,KAAK,EAAE;gBAChC,OAAO,KAAK,CAAC;aACd;YACD,IAAI,IAAI,CAAC,IAAI,KAAK,OAAO,CAAC,IAAI,EAAE;gBAC9B,OAAO,KAAK,CAAC;aACd;YACD,IAAI,IAAI,CAAC,IAAI,CAAC,MAAM,KAAK,OAAO,CAAC,IAAI,CAAC,MAAM,EAAE;gBAC5C,OAAO,KAAK,CAAC;aACd;YACD,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,IAAI,CAAC,IAAI,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE;gBACzC,MAAM,QAAQ,GAAG,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;gBAC9B,MAAM,WAAW,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;gBACpC,IAAI,QAAQ,CAAC,MAAM,KAAK,WAAW,CAAC,MAAM,EAAE;oBAC1C,OAAO,KAAK,CAAC;iBACd;gBACD,IAAI,QAAQ,CAAC,KAAK,CAAC,MAAM,KAAK,WAAW,CAAC,KAAK,CAAC,MAAM,EAAE;oBACtD,OAAO,KAAK,CAAC;iBACd;gBACD,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,QAAQ,CAAC,KAAK,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE;oBAC9C,IAAI,QAAQ,CAAC,KAAK,CAAC,CAAC,CAAC,KAAK,WAAW,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE;wBAC9C,OAAO,KAAK,CAAC;qBACd;iBACF;aACF;SACF;QACD,OAAO,IAAI,CAAC;IACd,CAAC;CA+BF","file":"dimension-trigger.js","sourcesContent":["import { isEmpty, isArray } from '@visactor/vutils';\nimport type { IElement } from '@visactor/vgrammar';\nimport type { DimensionEventParams } from '../event/events/dimension/interface';\n// eslint-disable-next-line no-duplicate-imports\nimport { DimensionEventEnum } from '../event/events/dimension/interface';\nimport { Event } from '../event/event';\n\nimport type { IMark } from '../mark/interface';\nimport type { EventCallback, EventParams, IEvent } from '../event/interface';\nimport type { IHoverSpec, IInteraction, ISelectSpec, ITrigger, ITriggerOption } from './interface';\nimport type { RenderMode } from '../typings/spec';\nimport { MarkSet } from '../mark/mark-set';\nimport { STATE_VALUE_ENUM } from '../compile/mark/interface';\n\nexport class DimensionTrigger implements ITrigger {\n // 事件\n readonly event: IEvent;\n\n protected readonly interaction: IInteraction;\n\n protected _option: ITriggerOption;\n protected _marks: MarkSet = new MarkSet();\n protected _markReverse: MarkSet = new MarkSet();\n\n protected _lastDimensionEvent: DimensionEventParams = null;\n\n private _hover: IHoverSpec;\n get hover() {\n return this._hover;\n }\n private _select: ISelectSpec;\n get select() {\n return this._select;\n }\n\n constructor(option: ITriggerOption) {\n this._option = option;\n this.event = this._option.model.getOption().getChart().getEvent(); // new Event(option.eventDispatcher, option.mode);\n this.interaction = option.interaction;\n this.initConfig(option.mode);\n }\n\n setStateKeys(fields: string[]): void {\n // do nothing\n }\n\n registerMark(mark: IMark): void {\n // do nothing\n if (!isEmpty(mark.stateStyle[STATE_VALUE_ENUM.STATE_DIMENSION_HOVER])) {\n this._marks.addMark(mark);\n }\n if (!isEmpty(mark.stateStyle[STATE_VALUE_ENUM.STATE_DIMENSION_HOVER_REVERSE])) {\n this._markReverse.addMark(mark);\n }\n }\n\n init(): void {\n this.initEvent();\n }\n\n release(): void {\n this.releaseEvent();\n }\n\n // event\n protected initEvent() {\n const event = this.event;\n event.on(DimensionEventEnum.dimensionHover, this.onHover as EventCallback<EventParams>);\n }\n\n protected releaseEvent(): void {\n this.event.release();\n }\n\n private initConfig(mode: RenderMode): void {\n // do nothing\n }\n\n protected getEventElement(params: DimensionEventParams, reverse: boolean = false): { el: IElement; mark: IMark }[] {\n // items 修改遍历方法从 mark\n\n const items: { el: IElement; mark: IMark }[] = [] as unknown as { el: IElement; mark: IMark }[];\n params.dimensionInfo.forEach(df => {\n df.data.forEach(dd => {\n const seriesMark = (reverse ? this._markReverse : this._marks)\n .getMarks()\n .filter(m => m.model === dd.series && m.getVisible());\n seriesMark.forEach(m => {\n const elements = m\n .getProduct()\n .elements.filter(e => {\n const datum = e.getDatum();\n let c;\n if (isArray(datum)) {\n c = datum.every((oneData, i) => oneData === dd.datum[i]);\n } else {\n c = dd.datum.some(dd_d => dd_d === datum);\n }\n return reverse ? !c : c;\n })\n .map(el => {\n return {\n el,\n mark: m\n };\n });\n items.push(...elements);\n });\n });\n });\n return items;\n }\n\n protected dimensionDataEqual(params: DimensionEventParams) {\n if (this._lastDimensionEvent === params) {\n return true;\n }\n if (!this._lastDimensionEvent || !params) {\n return false;\n }\n if (this._lastDimensionEvent.dimensionInfo.length !== params.dimensionInfo.length) {\n return false;\n }\n for (let i = 0; i < this._lastDimensionEvent.dimensionInfo.length; i++) {\n const last = this._lastDimensionEvent.dimensionInfo[i];\n const current = params.dimensionInfo[i];\n if (last.value !== current.value) {\n return false;\n }\n if (last.axis !== current.axis) {\n return false;\n }\n if (last.data.length !== current.data.length) {\n return false;\n }\n for (let j = 0; j < last.data.length; j++) {\n const lastData = last.data[j];\n const currentData = current.data[j];\n if (lastData.series !== currentData.series) {\n return false;\n }\n if (lastData.datum.length !== currentData.datum.length) {\n return false;\n }\n for (let k = 0; k < lastData.datum.length; k++) {\n if (lastData.datum[k] !== currentData.datum[k]) {\n return false;\n }\n }\n }\n }\n return true;\n }\n\n private onHover = (params: DimensionEventParams) => {\n const elements = this.getEventElement(params);\n switch (params.action) {\n case 'enter':\n // clear last hover\n // eslint-disable-next-line no-case-declarations\n const lastHover = this.interaction.getEventElement(STATE_VALUE_ENUM.STATE_DIMENSION_HOVER);\n lastHover.forEach(e => {\n this.interaction.addEventElement(STATE_VALUE_ENUM.STATE_DIMENSION_HOVER_REVERSE, e);\n });\n this.interaction.clearEventElement(STATE_VALUE_ENUM.STATE_DIMENSION_HOVER, false);\n // add new\n elements.forEach(({ el, mark }) => {\n this.interaction.addEventElement(STATE_VALUE_ENUM.STATE_DIMENSION_HOVER, el);\n });\n this.interaction.reverseEventElement(STATE_VALUE_ENUM.STATE_DIMENSION_HOVER);\n break;\n case 'leave':\n // clear all\n this.interaction.clearEventElement(STATE_VALUE_ENUM.STATE_DIMENSION_HOVER, true);\n params = null;\n break;\n case 'click':\n case 'move':\n default:\n break;\n }\n this._lastDimensionEvent = params;\n };\n}\n"]}
package/esm/util/env.d.ts CHANGED
@@ -1,5 +1,6 @@
1
1
  import type { RenderMode } from '../typings/spec';
2
2
  export declare const isBrowser: boolean;
3
+ export declare const domDocument: Document;
3
4
  export declare function isTrueBrowser(mode: RenderMode): boolean;
4
5
  export declare function isPcLikeMode(mode: RenderMode): boolean;
5
6
  export declare function isMobileLikeMode(mode: RenderMode): boolean;
package/esm/util/env.js CHANGED
@@ -1,5 +1,7 @@
1
1
  export const isBrowser = "undefined" != typeof window && void 0 !== window.document;
2
2
 
3
+ export const domDocument = isBrowser && globalThis.document;
4
+
3
5
  export function isTrueBrowser(mode) {
4
6
  return ("desktop-browser" === mode || "mobile-browser" === mode) && isBrowser;
5
7
  }
@@ -1 +1 @@
1
- {"version":3,"sources":["../src/util/env.ts"],"names":[],"mappings":"AAEA,MAAM,CAAC,MAAM,SAAS,GAAG,OAAO,MAAM,KAAK,WAAW,IAAI,OAAO,MAAM,CAAC,QAAQ,KAAK,WAAW,CAAC;AAGjG,MAAM,UAAU,aAAa,CAAC,IAAgB;IAC5C,OAAO,CAAC,IAAI,KAAK,iBAAiB,IAAI,IAAI,KAAK,gBAAgB,CAAC,IAAI,SAAS,CAAC;AAChF,CAAC;AAED,MAAM,UAAU,YAAY,CAAC,IAAgB;IAC3C,OAAO,IAAI,KAAK,iBAAiB,IAAI,IAAI,KAAK,iBAAiB,CAAC;AAClE,CAAC;AAED,MAAM,UAAU,gBAAgB,CAAC,IAAgB;IAC/C,OAAO,IAAI,KAAK,SAAS,IAAI,IAAI,KAAK,gBAAgB,CAAC;AACzD,CAAC;AAED,MAAM,UAAU,iBAAiB,CAAC,IAAgB;IAChD,OAAO,IAAI,CAAC,QAAQ,CAAC,SAAS,CAAC,IAAI,IAAI,KAAK,MAAM,CAAC;AACrD,CAAC","file":"env.js","sourcesContent":["import type { RenderMode } from '../typings/spec';\n\nexport const isBrowser = typeof window !== 'undefined' && typeof window.document !== 'undefined';\n\n// Taro 会模拟实现 DOM,所以还是加上 mode 的判断\nexport function isTrueBrowser(mode: RenderMode): boolean {\n return (mode === 'desktop-browser' || mode === 'mobile-browser') && isBrowser;\n}\n\nexport function isPcLikeMode(mode: RenderMode) {\n return mode === 'desktop-miniApp' || mode === 'desktop-browser';\n}\n\nexport function isMobileLikeMode(mode: RenderMode) {\n return mode === 'miniApp' || mode === 'mobile-browser';\n}\n\nexport function isMiniAppLikeMode(mode: RenderMode) {\n return mode.includes('miniApp') || mode === 'lynx';\n}\n"]}
1
+ {"version":3,"sources":["../src/util/env.ts"],"names":[],"mappings":"AAEA,MAAM,CAAC,MAAM,SAAS,GAAG,OAAO,MAAM,KAAK,WAAW,IAAI,OAAO,MAAM,CAAC,QAAQ,KAAK,WAAW,CAAC;AACjG,MAAM,CAAC,MAAM,WAAW,GAAG,SAAS,IAAI,UAAU,CAAC,QAAQ,CAAC;AAG5D,MAAM,UAAU,aAAa,CAAC,IAAgB;IAC5C,OAAO,CAAC,IAAI,KAAK,iBAAiB,IAAI,IAAI,KAAK,gBAAgB,CAAC,IAAI,SAAS,CAAC;AAChF,CAAC;AAED,MAAM,UAAU,YAAY,CAAC,IAAgB;IAC3C,OAAO,IAAI,KAAK,iBAAiB,IAAI,IAAI,KAAK,iBAAiB,CAAC;AAClE,CAAC;AAED,MAAM,UAAU,gBAAgB,CAAC,IAAgB;IAC/C,OAAO,IAAI,KAAK,SAAS,IAAI,IAAI,KAAK,gBAAgB,CAAC;AACzD,CAAC;AAED,MAAM,UAAU,iBAAiB,CAAC,IAAgB;IAChD,OAAO,IAAI,CAAC,QAAQ,CAAC,SAAS,CAAC,IAAI,IAAI,KAAK,MAAM,CAAC;AACrD,CAAC","file":"env.js","sourcesContent":["import type { RenderMode } from '../typings/spec';\n\nexport const isBrowser = typeof window !== 'undefined' && typeof window.document !== 'undefined';\nexport const domDocument = isBrowser && globalThis.document;\n\n// Taro 会模拟实现 DOM,所以还是加上 mode 的判断\nexport function isTrueBrowser(mode: RenderMode): boolean {\n return (mode === 'desktop-browser' || mode === 'mobile-browser') && isBrowser;\n}\n\nexport function isPcLikeMode(mode: RenderMode) {\n return mode === 'desktop-miniApp' || mode === 'desktop-browser';\n}\n\nexport function isMobileLikeMode(mode: RenderMode) {\n return mode === 'miniApp' || mode === 'mobile-browser';\n}\n\nexport function isMiniAppLikeMode(mode: RenderMode) {\n return mode.includes('miniApp') || mode === 'lynx';\n}\n"]}
@@ -1,5 +1,9 @@
1
1
  import type { ITextMeasureOption } from '@visactor/vutils';
2
2
  import { TextMeasure, TestTextMeasure } from '@visactor/vutils';
3
+ import type { IRichTextAttribute } from '@visactor/vrender';
3
4
  import type { ITextMarkSpec } from '../typings';
4
5
  export declare const initTextMeasure: (textSpec?: Partial<ITextMarkSpec>, option?: Partial<ITextMeasureOption>, useNaiveCanvas?: boolean) => TextMeasure<ITextMarkSpec>;
5
6
  export declare const testTextMeasure: (textSpec?: Partial<ITextMarkSpec>, useVRender?: boolean) => TestTextMeasure<any>;
7
+ type IRichTextBoundsParams = Partial<IRichTextAttribute>;
8
+ export declare function getRichTextBounds(params: IRichTextBoundsParams): import("@visactor/vutils").IBounds;
9
+ export {};
package/esm/util/text.js CHANGED
@@ -1,6 +1,6 @@
1
1
  import { TextMeasure, TestTextMeasure } from "@visactor/vutils";
2
2
 
3
- import { getTextBounds } from "@visactor/vrender";
3
+ import { createRichText, getTextBounds } from "@visactor/vrender";
4
4
 
5
5
  import { DEFAULT_TEXT_FONT_FAMILY, DEFAULT_TEXT_FONT_SIZE } from "../theme";
6
6
 
@@ -20,4 +20,10 @@ export const testTextMeasure = (textSpec, useVRender) => new TestTextMeasure({
20
20
  },
21
21
  getTextBounds: useVRender ? getTextBounds : void 0
22
22
  }, textSpec);
23
+
24
+ const richText = createRichText({});
25
+
26
+ export function getRichTextBounds(params) {
27
+ return richText.setAttributes(params), richText.AABBBounds;
28
+ }
23
29
  //# sourceMappingURL=text.js.map
@@ -1 +1 @@
1
- {"version":3,"sources":["../src/util/text.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,WAAW,EAAE,eAAe,EAAE,MAAM,kBAAkB,CAAC;AAChE,OAAO,EAAE,aAAa,EAAE,MAAM,mBAAmB,CAAC;AAElD,OAAO,EAAE,wBAAwB,EAAE,sBAAsB,EAAE,MAAM,UAAU,CAAC;AAE5E,MAAM,CAAC,MAAM,eAAe,GAAG,CAC7B,QAAiC,EACjC,MAAoC,EACpC,cAAwB,EACI,EAAE;IAC9B,OAAO,IAAI,WAAW,iBAElB,iBAAiB,EAAE;YACjB,UAAU,EAAE,wBAAwB;YACpC,QAAQ,EAAE,sBAAsB;SACjC,EACD,aAAa,EAAE,cAAc,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,aAAa,EACzD,cAAc,EAAE,cAAc,GAAG,WAAW,CAAC,iBAAiB,GAAG,WAAW,CAAC,iBAAiB,CAAC,WAAW,EAAE,IACzG,CAAC,MAAM,aAAN,MAAM,cAAN,MAAM,GAAI,EAAE,CAAC,GAEnB,QAAQ,CACT,CAAC;AACJ,CAAC,CAAC;AAGF,MAAM,CAAC,MAAM,eAAe,GAAG,CAAC,QAAiC,EAAE,UAAoB,EAAwB,EAAE;IAC/G,OAAO,IAAI,eAAe,CACxB;QACE,iBAAiB,EAAE;YACjB,UAAU,EAAE,wBAAwB;YACpC,QAAQ,EAAE,sBAAsB;SACjC;QACD,aAAa,EAAE,UAAU,CAAC,CAAC,CAAC,aAAa,CAAC,CAAC,CAAC,SAAS;KACtD,EACD,QAAQ,CACT,CAAC;AACJ,CAAC,CAAC","file":"text.js","sourcesContent":["import type { ITextMeasureOption } from '@visactor/vutils';\n// eslint-disable-next-line no-duplicate-imports\nimport { TextMeasure, TestTextMeasure } from '@visactor/vutils';\nimport { getTextBounds } from '@visactor/vrender';\nimport type { ITextMarkSpec } from '../typings';\nimport { DEFAULT_TEXT_FONT_FAMILY, DEFAULT_TEXT_FONT_SIZE } from '../theme';\n\nexport const initTextMeasure = (\n textSpec?: Partial<ITextMarkSpec>,\n option?: Partial<ITextMeasureOption>,\n useNaiveCanvas?: boolean\n): TextMeasure<ITextMarkSpec> => {\n return new TextMeasure<ITextMarkSpec>(\n {\n defaultFontParams: {\n fontFamily: DEFAULT_TEXT_FONT_FAMILY,\n fontSize: DEFAULT_TEXT_FONT_SIZE\n },\n getTextBounds: useNaiveCanvas ? undefined : getTextBounds,\n specialCharSet: '-/: .,@%\\'\"~' + TextMeasure.ALPHABET_CHAR_SET + TextMeasure.ALPHABET_CHAR_SET.toUpperCase(),\n ...(option ?? {})\n },\n textSpec\n );\n};\n\n/** 测试方法 */\nexport const testTextMeasure = (textSpec?: Partial<ITextMarkSpec>, useVRender?: boolean): TestTextMeasure<any> => {\n return new TestTextMeasure(\n {\n defaultFontParams: {\n fontFamily: DEFAULT_TEXT_FONT_FAMILY,\n fontSize: DEFAULT_TEXT_FONT_SIZE\n },\n getTextBounds: useVRender ? getTextBounds : undefined\n },\n textSpec\n );\n};\n"]}
1
+ {"version":3,"sources":["../src/util/text.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,WAAW,EAAE,eAAe,EAAE,MAAM,kBAAkB,CAAC;AAGhE,OAAO,EAAE,cAAc,EAAE,aAAa,EAAE,MAAM,mBAAmB,CAAC;AAElE,OAAO,EAAE,wBAAwB,EAAE,sBAAsB,EAAE,MAAM,UAAU,CAAC;AAE5E,MAAM,CAAC,MAAM,eAAe,GAAG,CAC7B,QAAiC,EACjC,MAAoC,EACpC,cAAwB,EACI,EAAE;IAC9B,OAAO,IAAI,WAAW,iBAElB,iBAAiB,EAAE;YACjB,UAAU,EAAE,wBAAwB;YACpC,QAAQ,EAAE,sBAAsB;SACjC,EACD,aAAa,EAAE,cAAc,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,aAAa,EACzD,cAAc,EAAE,cAAc,GAAG,WAAW,CAAC,iBAAiB,GAAG,WAAW,CAAC,iBAAiB,CAAC,WAAW,EAAE,IACzG,CAAC,MAAM,aAAN,MAAM,cAAN,MAAM,GAAI,EAAE,CAAC,GAEnB,QAAQ,CACT,CAAC;AACJ,CAAC,CAAC;AAGF,MAAM,CAAC,MAAM,eAAe,GAAG,CAAC,QAAiC,EAAE,UAAoB,EAAwB,EAAE;IAC/G,OAAO,IAAI,eAAe,CACxB;QACE,iBAAiB,EAAE;YACjB,UAAU,EAAE,wBAAwB;YACpC,QAAQ,EAAE,sBAAsB;SACjC;QACD,aAAa,EAAE,UAAU,CAAC,CAAC,CAAC,aAAa,CAAC,CAAC,CAAC,SAAS;KACtD,EACD,QAAQ,CACT,CAAC;AACJ,CAAC,CAAC;AAKF,MAAM,QAAQ,GAAG,cAAc,CAAC,EAAE,CAAC,CAAC;AACpC,MAAM,UAAU,iBAAiB,CAAC,MAA6B;IAC7D,QAAQ,CAAC,aAAa,CAAC,MAAM,CAAC,CAAC;IAC/B,OAAO,QAAQ,CAAC,UAAU,CAAC;AAC7B,CAAC","file":"text.js","sourcesContent":["import type { ITextMeasureOption } from '@visactor/vutils';\n// eslint-disable-next-line no-duplicate-imports\nimport { TextMeasure, TestTextMeasure } from '@visactor/vutils';\nimport type { IRichTextAttribute } from '@visactor/vrender';\n// eslint-disable-next-line no-duplicate-imports\nimport { createRichText, getTextBounds } from '@visactor/vrender';\nimport type { ITextMarkSpec } from '../typings';\nimport { DEFAULT_TEXT_FONT_FAMILY, DEFAULT_TEXT_FONT_SIZE } from '../theme';\n\nexport const initTextMeasure = (\n textSpec?: Partial<ITextMarkSpec>,\n option?: Partial<ITextMeasureOption>,\n useNaiveCanvas?: boolean\n): TextMeasure<ITextMarkSpec> => {\n return new TextMeasure<ITextMarkSpec>(\n {\n defaultFontParams: {\n fontFamily: DEFAULT_TEXT_FONT_FAMILY,\n fontSize: DEFAULT_TEXT_FONT_SIZE\n },\n getTextBounds: useNaiveCanvas ? undefined : getTextBounds,\n specialCharSet: '-/: .,@%\\'\"~' + TextMeasure.ALPHABET_CHAR_SET + TextMeasure.ALPHABET_CHAR_SET.toUpperCase(),\n ...(option ?? {})\n },\n textSpec\n );\n};\n\n/** 测试方法 */\nexport const testTextMeasure = (textSpec?: Partial<ITextMarkSpec>, useVRender?: boolean): TestTextMeasure<any> => {\n return new TestTextMeasure(\n {\n defaultFontParams: {\n fontFamily: DEFAULT_TEXT_FONT_FAMILY,\n fontSize: DEFAULT_TEXT_FONT_SIZE\n },\n getTextBounds: useVRender ? getTextBounds : undefined\n },\n textSpec\n );\n};\n\n/** 测量富文本 */\n// FIXME: 等 vrender 支持后删掉\ntype IRichTextBoundsParams = Partial<IRichTextAttribute>;\nconst richText = createRichText({});\nexport function getRichTextBounds(params: IRichTextBoundsParams) {\n richText.setAttributes(params);\n return richText.AABBBounds;\n}\n"]}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@visactor/vchart",
3
- "version": "1.1.0-beta.3",
3
+ "version": "1.1.0-beta.5",
4
4
  "description": "charts lib based @visactor/VGrammar",
5
5
  "main": "cjs/index.js",
6
6
  "module": "esm/index.js",
@@ -85,12 +85,12 @@
85
85
  "@visactor/vutils": "~0.11.1",
86
86
  "@visactor/vdataset": "~0.11.1",
87
87
  "@visactor/vscale": "~0.11.1",
88
- "@visactor/vgrammar": "~0.3.2",
89
- "@visactor/vgrammar-projection": "~0.3.2",
90
- "@visactor/vgrammar-wordcloud": "~0.3.2",
91
- "@visactor/vgrammar-wordcloud-shape": "~0.3.2",
92
- "@visactor/vgrammar-hierarchy": "~0.3.2",
93
- "@visactor/vgrammar-sankey": "~0.3.2",
88
+ "@visactor/vgrammar": "0.3.4-alpha.0",
89
+ "@visactor/vgrammar-projection": "0.3.4-alpha.0",
90
+ "@visactor/vgrammar-wordcloud": "0.3.4-alpha.0",
91
+ "@visactor/vgrammar-wordcloud-shape": "0.3.4-alpha.0",
92
+ "@visactor/vgrammar-hierarchy": "0.3.4-alpha.0",
93
+ "@visactor/vgrammar-sankey": "0.3.4-alpha.0",
94
94
  "@visactor/vgrammar-util": "~0.3.1",
95
95
  "@visactor/vrender": "~0.12.0",
96
96
  "@visactor/vrender-components": "~0.12.0"