@visactor/vgrammar-core 0.14.0-alpha.0 → 0.14.0-alpha.2

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 (195) hide show
  1. package/cjs/component/axis.d.ts +0 -2
  2. package/cjs/component/axis.js +1 -15
  3. package/cjs/component/axis.js.map +1 -1
  4. package/cjs/component/grid.d.ts +0 -2
  5. package/cjs/component/grid.js +1 -15
  6. package/cjs/component/grid.js.map +1 -1
  7. package/cjs/component/index.d.ts +2 -2
  8. package/cjs/component/index.js +1 -21
  9. package/cjs/component/index.js.map +1 -1
  10. package/cjs/core/factory.d.ts +1 -8
  11. package/cjs/core/factory.js +1 -8
  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 +2 -3
  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 +2 -3
  24. package/cjs/glyph/wave.js.map +1 -1
  25. package/cjs/graph/animation/animation/fade.js +4 -4
  26. package/cjs/graph/animation/animation/fade.js.map +1 -1
  27. package/cjs/graph/animation/animation/grow-cartesian.js +14 -14
  28. package/cjs/graph/animation/animation/grow-cartesian.js.map +1 -1
  29. package/cjs/graph/animation/animation/grow-interval.js +9 -9
  30. package/cjs/graph/animation/animation/grow-interval.js.map +1 -1
  31. package/cjs/graph/animation/animation/grow-points.js +9 -9
  32. package/cjs/graph/animation/animation/grow-points.js.map +1 -1
  33. package/cjs/graph/animation/animation/grow-polar.js +24 -24
  34. package/cjs/graph/animation/animation/grow-polar.js.map +1 -1
  35. package/cjs/graph/animation/animation/move.js +6 -6
  36. package/cjs/graph/animation/animation/move.js.map +1 -1
  37. package/cjs/graph/animation/animation/rotate.js +5 -5
  38. package/cjs/graph/animation/animation/rotate.js.map +1 -1
  39. package/cjs/graph/animation/animation/scale.js +5 -5
  40. package/cjs/graph/animation/animation/scale.js.map +1 -1
  41. package/cjs/graph/animation/animation/update.js +2 -2
  42. package/cjs/graph/animation/animation/update.js.map +1 -1
  43. package/cjs/graph/animation/animator.js +6 -1
  44. package/cjs/graph/animation/animator.js.map +1 -1
  45. package/cjs/graph/attributes/line.js.map +1 -1
  46. package/cjs/graph/canvas-renderer.d.ts +1 -1
  47. package/cjs/graph/canvas-renderer.js +4 -4
  48. package/cjs/graph/canvas-renderer.js.map +1 -1
  49. package/cjs/graph/element.d.ts +2 -0
  50. package/cjs/graph/element.js +14 -7
  51. package/cjs/graph/element.js.map +1 -1
  52. package/cjs/graph/glyph-element.js +2 -3
  53. package/cjs/graph/glyph-element.js.map +1 -1
  54. package/cjs/graph/layout/layout.d.ts +0 -1
  55. package/cjs/graph/layout/layout.js +2 -8
  56. package/cjs/graph/layout/layout.js.map +1 -1
  57. package/cjs/graph/mark/graphic.js +8 -14
  58. package/cjs/graph/mark/graphic.js.map +1 -1
  59. package/cjs/graph/util/element.d.ts +2 -0
  60. package/cjs/graph/util/element.js +10 -0
  61. package/cjs/graph/util/element.js.map +1 -0
  62. package/cjs/graph/util/point.js +26 -10
  63. package/cjs/graph/util/point.js.map +1 -1
  64. package/cjs/index.d.ts +1 -6
  65. package/cjs/index.js +2 -51
  66. package/cjs/index.js.map +1 -1
  67. package/cjs/parse/event.d.ts +2 -0
  68. package/cjs/parse/event.js +10 -4
  69. package/cjs/parse/event.js.map +1 -1
  70. package/cjs/types/animate.d.ts +1 -0
  71. package/cjs/types/animate.js.map +1 -1
  72. package/cjs/types/element.d.ts +5 -1
  73. package/cjs/types/element.js.map +1 -1
  74. package/cjs/types/renderer.d.ts +1 -6
  75. package/cjs/types/renderer.js.map +1 -1
  76. package/cjs/view/View.d.ts +4 -2
  77. package/cjs/view/View.js +76 -21
  78. package/cjs/view/View.js.map +1 -1
  79. package/cjs/view/constants.d.ts +0 -2
  80. package/cjs/view/constants.js +2 -3
  81. package/cjs/view/constants.js.map +1 -1
  82. package/cjs/view/events.d.ts +1 -0
  83. package/cjs/view/events.js +17 -3
  84. package/cjs/view/events.js.map +1 -1
  85. package/cjs/view/glyph.d.ts +0 -4
  86. package/cjs/view/glyph.js +3 -12
  87. package/cjs/view/glyph.js.map +1 -1
  88. package/cjs/view/grammar-record.js +2 -3
  89. package/cjs/view/grammar-record.js.map +1 -1
  90. package/cjs/view/group.js +3 -3
  91. package/cjs/view/group.js.map +1 -1
  92. package/cjs/view/mark.d.ts +0 -2
  93. package/cjs/view/mark.js +16 -15
  94. package/cjs/view/mark.js.map +1 -1
  95. package/es/component/axis.d.ts +0 -2
  96. package/es/component/axis.js +0 -10
  97. package/es/component/axis.js.map +1 -1
  98. package/es/component/grid.d.ts +0 -2
  99. package/es/component/grid.js +0 -10
  100. package/es/component/grid.js.map +1 -1
  101. package/es/component/index.d.ts +2 -2
  102. package/es/component/index.js +2 -2
  103. package/es/component/index.js.map +1 -1
  104. package/es/core/factory.d.ts +1 -8
  105. package/es/core/factory.js +1 -8
  106. package/es/core/factory.js.map +1 -1
  107. package/es/glyph/boxplot.js +2 -4
  108. package/es/glyph/boxplot.js.map +1 -1
  109. package/es/glyph/link-path.js +2 -4
  110. package/es/glyph/link-path.js.map +1 -1
  111. package/es/glyph/ripple.js +1 -3
  112. package/es/glyph/ripple.js.map +1 -1
  113. package/es/glyph/tree-path.js +2 -4
  114. package/es/glyph/tree-path.js.map +1 -1
  115. package/es/glyph/violin.js +2 -4
  116. package/es/glyph/violin.js.map +1 -1
  117. package/es/glyph/wave.js +1 -3
  118. package/es/glyph/wave.js.map +1 -1
  119. package/es/graph/animation/animation/fade.js +4 -4
  120. package/es/graph/animation/animation/fade.js.map +1 -1
  121. package/es/graph/animation/animation/grow-cartesian.js +14 -14
  122. package/es/graph/animation/animation/grow-cartesian.js.map +1 -1
  123. package/es/graph/animation/animation/grow-interval.js +9 -9
  124. package/es/graph/animation/animation/grow-interval.js.map +1 -1
  125. package/es/graph/animation/animation/grow-points.js +9 -9
  126. package/es/graph/animation/animation/grow-points.js.map +1 -1
  127. package/es/graph/animation/animation/grow-polar.js +24 -24
  128. package/es/graph/animation/animation/grow-polar.js.map +1 -1
  129. package/es/graph/animation/animation/move.js +6 -6
  130. package/es/graph/animation/animation/move.js.map +1 -1
  131. package/es/graph/animation/animation/rotate.js +4 -4
  132. package/es/graph/animation/animation/rotate.js.map +1 -1
  133. package/es/graph/animation/animation/scale.js +5 -5
  134. package/es/graph/animation/animation/scale.js.map +1 -1
  135. package/es/graph/animation/animation/update.js +3 -1
  136. package/es/graph/animation/animation/update.js.map +1 -1
  137. package/es/graph/animation/animator.js +6 -1
  138. package/es/graph/animation/animator.js.map +1 -1
  139. package/es/graph/attributes/line.js.map +1 -1
  140. package/es/graph/canvas-renderer.d.ts +1 -1
  141. package/es/graph/canvas-renderer.js +5 -5
  142. package/es/graph/canvas-renderer.js.map +1 -1
  143. package/es/graph/element.d.ts +2 -0
  144. package/es/graph/element.js +14 -5
  145. package/es/graph/element.js.map +1 -1
  146. package/es/graph/glyph-element.js +4 -2
  147. package/es/graph/glyph-element.js.map +1 -1
  148. package/es/graph/layout/layout.d.ts +0 -1
  149. package/es/graph/layout/layout.js +0 -6
  150. package/es/graph/layout/layout.js.map +1 -1
  151. package/es/graph/mark/graphic.js +7 -13
  152. package/es/graph/mark/graphic.js.map +1 -1
  153. package/es/graph/util/element.d.ts +2 -0
  154. package/es/graph/util/element.js +8 -0
  155. package/es/graph/util/element.js.map +1 -0
  156. package/es/graph/util/point.js +26 -10
  157. package/es/graph/util/point.js.map +1 -1
  158. package/es/index.d.ts +1 -6
  159. package/es/index.js +1 -19
  160. package/es/index.js.map +1 -1
  161. package/es/parse/event.d.ts +2 -0
  162. package/es/parse/event.js +7 -3
  163. package/es/parse/event.js.map +1 -1
  164. package/es/types/animate.d.ts +1 -0
  165. package/es/types/animate.js.map +1 -1
  166. package/es/types/element.d.ts +5 -1
  167. package/es/types/element.js.map +1 -1
  168. package/es/types/renderer.d.ts +1 -6
  169. package/es/types/renderer.js.map +1 -1
  170. package/es/view/View.d.ts +4 -2
  171. package/es/view/View.js +82 -20
  172. package/es/view/View.js.map +1 -1
  173. package/es/view/constants.d.ts +0 -2
  174. package/es/view/constants.js +0 -4
  175. package/es/view/constants.js.map +1 -1
  176. package/es/view/events.d.ts +1 -0
  177. package/es/view/events.js +15 -1
  178. package/es/view/events.js.map +1 -1
  179. package/es/view/glyph.d.ts +0 -4
  180. package/es/view/glyph.js +0 -11
  181. package/es/view/glyph.js.map +1 -1
  182. package/es/view/grammar-record.js +2 -3
  183. package/es/view/grammar-record.js.map +1 -1
  184. package/es/view/group.js +4 -2
  185. package/es/view/group.js.map +1 -1
  186. package/es/view/mark.d.ts +0 -2
  187. package/es/view/mark.js +16 -16
  188. package/es/view/mark.js.map +1 -1
  189. package/package.json +12 -12
  190. package/cjs/view/view-event-mixin.d.ts +0 -1
  191. package/cjs/view/view-event-mixin.js +0 -92
  192. package/cjs/view/view-event-mixin.js.map +0 -1
  193. package/es/view/view-event-mixin.d.ts +0 -1
  194. package/es/view/view-event-mixin.js +0 -90
  195. package/es/view/view-event-mixin.js.map +0 -1
@@ -1 +0,0 @@
1
- {"version":3,"sources":["../src/view/view-event-mixin.ts"],"names":[],"mappings":"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","file":"view-event-mixin.js","sourcesContent":["import { isObject, isString, mixin } from '@visactor/vutils';\nimport type { BaseEventSpec, EventSpec } from '../types/event';\nimport type { IView, IViewEventConfig } from '../types/view';\nimport { generateFilterByMark, parseEventSelector, parseHandler } from '../parse/event';\nimport { parseReference } from '../parse/util';\nimport { EVENT_SOURCE_VIEW, EVENT_SOURCE_WINDOW, NO_TRAP } from './constants';\nimport { permit, prevent } from './events';\n// eslint-disable-next-line no-duplicate-imports\nimport { vglobal } from '@visactor/vrender-core';\nimport type { IElement } from '../types/element';\nimport getExtendedEvents from '../graph/util/events-extend';\nimport View from './View';\n\nclass ViewEventsMixin {\n private _eventConfig: IViewEventConfig;\n private _eventCache: Record<string, () => void>;\n private _eventListeners: Array<{\n type: string;\n source: any;\n handler: any;\n }>;\n\n event(eventSpec: EventSpec) {\n if ('between' in eventSpec) {\n const [starEvent, endEvent] = eventSpec.between;\n // FIXME between需要生成唯一ID\n const id = `${starEvent.type}-${eventSpec.type}-${endEvent.type}`;\n\n let unbindEndEvent: any;\n\n this.bindEvents(\n Object.assign({}, starEvent, {\n callback: () => {\n if (!this._eventCache) {\n this._eventCache = {};\n }\n // 中间的事件绑定\n if (!this._eventCache[id]) {\n const unbindEvent = this.bindEvents(eventSpec);\n this._eventCache[id] = unbindEvent;\n }\n if (!unbindEndEvent) {\n // 结束的事件绑定\n unbindEndEvent = this.bindEvents(\n Object.assign({}, endEvent, {\n callback: () => {\n if (this._eventCache[id]) {\n this._eventCache[id]();\n this._eventCache[id] = null;\n }\n }\n })\n );\n }\n }\n })\n );\n } else if ('merge' in eventSpec) {\n eventSpec.merge.forEach(entry => {\n const singleEvent: Partial<BaseEventSpec> = Object.assign({}, eventSpec);\n\n if (isString(entry)) {\n singleEvent.type = entry;\n } else if (isObject(entry)) {\n Object.assign(singleEvent, entry);\n }\n singleEvent.debounce = 50;\n this.bindEvents(singleEvent as BaseEventSpec);\n });\n } else {\n this.bindEvents(eventSpec);\n }\n }\n\n // --- Event ---\n\n private bindEvents(eventSpec: BaseEventSpec) {\n if (this._eventConfig.disable) {\n return;\n }\n const { type: evtType, filter, callback, throttle, debounce, consume, target, dependency } = eventSpec;\n const eventSelector = parseEventSelector(evtType);\n\n if (!eventSelector) {\n return;\n }\n const { source, type } = eventSelector;\n\n const markFilter = generateFilterByMark(eventSelector);\n const targetSignals =\n Array.isArray(target) && target.length\n ? target.map(entry => {\n return {\n signal: (this as unknown as IView).getSignalById(entry.target),\n callback: entry.callback\n };\n })\n : [\n {\n signal: isString(target) ? (this as unknown as IView).getSignalById(target) : null,\n callback\n }\n ];\n const validateSignals = targetSignals.filter(entry => entry.signal || entry.callback);\n const refs = parseReference(dependency, this as unknown as IView);\n\n const send = parseHandler(\n (evt?: any, element?: IElement) => {\n const needPreventDefault =\n (source === EVENT_SOURCE_VIEW && prevent(this._eventConfig, type)) ||\n (consume && (evt.cancelable === undefined || evt.cancelable));\n\n if (source === EVENT_SOURCE_WINDOW) {\n evt = getExtendedEvents(this as unknown as IView, evt, element, type, EVENT_SOURCE_WINDOW);\n }\n\n let hasCommitted = false;\n\n if ((!filter || filter(evt)) && (!markFilter || markFilter(element)) && validateSignals.length) {\n const params = refs.reduce((params, ref) => {\n params[ref.id()] = ref.output();\n return params;\n }, {});\n validateSignals.forEach(entry => {\n if (entry.callback && entry.signal) {\n const changed = entry.signal.set(entry.callback(evt, params));\n\n if (changed) {\n (this as unknown as IView).commit(entry.signal);\n hasCommitted = true;\n }\n } else if (entry.callback) {\n entry.callback(evt, params);\n } else {\n (this as unknown as IView).commit(entry.signal);\n hasCommitted = true;\n }\n });\n }\n\n if (needPreventDefault) {\n evt.preventDefault();\n }\n\n if (consume) {\n evt.stopPropagation();\n }\n\n if (hasCommitted) {\n (this as unknown as IView).run();\n }\n },\n { throttle, debounce }\n );\n\n if (source === EVENT_SOURCE_VIEW) {\n if (permit(this._eventConfig, EVENT_SOURCE_VIEW, type)) {\n // send traps errors, so use {trap: false} option\n (this as unknown as IView).addEventListener(type, send, NO_TRAP);\n\n return () => {\n (this as unknown as IView).removeEventListener(type, send);\n };\n }\n } else if (source === EVENT_SOURCE_WINDOW) {\n vglobal.addEventListener(type, send);\n this._eventListeners.push({\n type: type,\n source: vglobal,\n handler: send\n });\n\n return () => {\n vglobal.removeEventListener(type, send);\n\n const index = this._eventListeners.findIndex((entry: any) => {\n return entry.type === type && entry.source === vglobal && entry.handler === send;\n });\n\n if (index >= 0) {\n this._eventListeners.splice(index, 1);\n }\n };\n }\n }\n}\n\nexport const registerViewEventsAPI = () => {\n mixin(View, ViewEventsMixin);\n};\n"]}