@visactor/vrender-core 0.19.4-alpha.5 → 0.19.4

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 (772) hide show
  1. package/cjs/allocator/bounds-allocate.js +1 -1
  2. package/cjs/allocator/bounds-allocate.js.map +1 -1
  3. package/cjs/allocator/canvas-allocate.js +11 -9
  4. package/cjs/allocator/canvas-allocate.js.map +1 -1
  5. package/cjs/allocator/graphic-allocate.js +5 -9
  6. package/cjs/allocator/graphic-allocate.js.map +1 -1
  7. package/cjs/allocator/matrix-allocate.js +2 -6
  8. package/cjs/allocator/matrix-allocate.js.map +1 -1
  9. package/cjs/animate/Ticker/default-ticker.js +25 -14
  10. package/cjs/animate/Ticker/default-ticker.js.map +1 -1
  11. package/cjs/animate/animate.js +8 -7
  12. package/cjs/animate/animate.js.map +1 -1
  13. package/cjs/animate/custom-animate.js +54 -51
  14. package/cjs/animate/custom-animate.js.map +1 -1
  15. package/cjs/animate/easing.js +19 -8
  16. package/cjs/animate/easing.js.map +1 -1
  17. package/cjs/animate/morphing.js +20 -23
  18. package/cjs/animate/morphing.js.map +1 -1
  19. package/cjs/application.js +7 -1
  20. package/cjs/application.js.map +1 -1
  21. package/cjs/canvas/conical-gradient.js +12 -5
  22. package/cjs/canvas/conical-gradient.js.map +1 -1
  23. package/cjs/canvas/contributions/base-canvas.js +19 -7
  24. package/cjs/canvas/contributions/base-canvas.js.map +1 -1
  25. package/cjs/color-string/interpolate.js +5 -3
  26. package/cjs/color-string/interpolate.js.map +1 -1
  27. package/cjs/color-string/store.js +3 -1
  28. package/cjs/color-string/store.js.map +1 -1
  29. package/cjs/common/bounds-context.js +1 -0
  30. package/cjs/common/bounds-context.js.map +1 -1
  31. package/cjs/common/canvas-utils.js +3 -6
  32. package/cjs/common/canvas-utils.js.map +1 -1
  33. package/cjs/common/contribution-provider.js +3 -0
  34. package/cjs/common/contribution-provider.js.map +1 -1
  35. package/cjs/common/custom-path2d.js +7 -1
  36. package/cjs/common/custom-path2d.js.map +1 -1
  37. package/cjs/common/generator.js +2 -1
  38. package/cjs/common/generator.js.map +1 -1
  39. package/cjs/common/inversify/binding.js +12 -0
  40. package/cjs/common/inversify/binding.js.map +1 -1
  41. package/cjs/common/inversify/container.js +4 -0
  42. package/cjs/common/inversify/container.js.map +1 -1
  43. package/cjs/common/inversify/cotainer-module.js +2 -0
  44. package/cjs/common/inversify/cotainer-module.js.map +1 -1
  45. package/cjs/common/inversify/meta-data.js +2 -0
  46. package/cjs/common/inversify/meta-data.js.map +1 -1
  47. package/cjs/common/inversify/syntax/binding_in_syntax.js +1 -0
  48. package/cjs/common/inversify/syntax/binding_in_syntax.js.map +1 -1
  49. package/cjs/common/inversify/syntax/binding_to_syntax.js +1 -0
  50. package/cjs/common/inversify/syntax/binding_to_syntax.js.map +1 -1
  51. package/cjs/common/inversify-lite/annotation/lazy_service_identifier.js +1 -0
  52. package/cjs/common/inversify-lite/annotation/lazy_service_identifier.js.map +1 -1
  53. package/cjs/common/inversify-lite/bindings/binding.js +14 -0
  54. package/cjs/common/inversify-lite/bindings/binding.js.map +1 -1
  55. package/cjs/common/inversify-lite/container/container.js +22 -46
  56. package/cjs/common/inversify-lite/container/container.js.map +1 -1
  57. package/cjs/common/inversify-lite/container/container_module.js +4 -0
  58. package/cjs/common/inversify-lite/container/container_module.js.map +1 -1
  59. package/cjs/common/inversify-lite/container/lookup.js +1 -0
  60. package/cjs/common/inversify-lite/container/lookup.js.map +1 -1
  61. package/cjs/common/inversify-lite/planning/context.js +4 -0
  62. package/cjs/common/inversify-lite/planning/context.js.map +1 -1
  63. package/cjs/common/inversify-lite/planning/metadata.js +2 -0
  64. package/cjs/common/inversify-lite/planning/metadata.js.map +1 -1
  65. package/cjs/common/inversify-lite/planning/plan.js +2 -0
  66. package/cjs/common/inversify-lite/planning/plan.js.map +1 -1
  67. package/cjs/common/inversify-lite/planning/queryable_string.js +1 -0
  68. package/cjs/common/inversify-lite/planning/queryable_string.js.map +1 -1
  69. package/cjs/common/inversify-lite/planning/request.js +8 -0
  70. package/cjs/common/inversify-lite/planning/request.js.map +1 -1
  71. package/cjs/common/inversify-lite/planning/target.js +7 -0
  72. package/cjs/common/inversify-lite/planning/target.js.map +1 -1
  73. package/cjs/common/inversify-lite/resolution/instantiation.js +16 -42
  74. package/cjs/common/inversify-lite/resolution/instantiation.js.map +1 -1
  75. package/cjs/common/inversify-lite/scope/scope.js +3 -29
  76. package/cjs/common/inversify-lite/scope/scope.js.map +1 -1
  77. package/cjs/common/inversify-lite/syntax/binding_in_syntax.js +1 -0
  78. package/cjs/common/inversify-lite/syntax/binding_in_syntax.js.map +1 -1
  79. package/cjs/common/inversify-lite/syntax/binding_in_when_on_syntax.js +3 -0
  80. package/cjs/common/inversify-lite/syntax/binding_in_when_on_syntax.js.map +1 -1
  81. package/cjs/common/inversify-lite/syntax/binding_on_syntax.js +1 -0
  82. package/cjs/common/inversify-lite/syntax/binding_on_syntax.js.map +1 -1
  83. package/cjs/common/inversify-lite/syntax/binding_to_syntax.js +1 -0
  84. package/cjs/common/inversify-lite/syntax/binding_to_syntax.js.map +1 -1
  85. package/cjs/common/inversify-lite/syntax/binding_when_on_syntax.js +2 -0
  86. package/cjs/common/inversify-lite/syntax/binding_when_on_syntax.js.map +1 -1
  87. package/cjs/common/inversify-lite/syntax/binding_when_syntax.js +1 -0
  88. package/cjs/common/inversify-lite/syntax/binding_when_syntax.js.map +1 -1
  89. package/cjs/common/polygon.js +1 -2
  90. package/cjs/common/polygon.js.map +1 -1
  91. package/cjs/common/render-area.js +2 -3
  92. package/cjs/common/render-area.js.map +1 -1
  93. package/cjs/common/render-curve.js +4 -8
  94. package/cjs/common/render-curve.js.map +1 -1
  95. package/cjs/common/seg-context.js +12 -3
  96. package/cjs/common/seg-context.js.map +1 -1
  97. package/cjs/common/segment/basis.js +13 -0
  98. package/cjs/common/segment/basis.js.map +1 -1
  99. package/cjs/common/segment/common.js +2 -2
  100. package/cjs/common/segment/common.js.map +1 -1
  101. package/cjs/common/segment/curve/arc.js +2 -2
  102. package/cjs/common/segment/curve/arc.js.map +1 -1
  103. package/cjs/common/segment/curve/base.js +4 -0
  104. package/cjs/common/segment/curve/base.js.map +1 -1
  105. package/cjs/common/segment/curve/cubic-bezier.js +2 -2
  106. package/cjs/common/segment/curve/cubic-bezier.js.map +1 -1
  107. package/cjs/common/segment/curve/curve-context.js +4 -0
  108. package/cjs/common/segment/curve/curve-context.js.map +1 -1
  109. package/cjs/common/segment/curve/ellipse.js +3 -3
  110. package/cjs/common/segment/curve/ellipse.js.map +1 -1
  111. package/cjs/common/segment/curve/line.js +2 -1
  112. package/cjs/common/segment/curve/line.js.map +1 -1
  113. package/cjs/common/segment/curve/move.js +2 -1
  114. package/cjs/common/segment/curve/move.js.map +1 -1
  115. package/cjs/common/segment/curve/path.js +2 -0
  116. package/cjs/common/segment/curve/path.js.map +1 -1
  117. package/cjs/common/segment/curve/quadratic-bezier.js +2 -2
  118. package/cjs/common/segment/curve/quadratic-bezier.js.map +1 -1
  119. package/cjs/common/segment/linear-closed.js.map +1 -1
  120. package/cjs/common/segment/linear.js +10 -0
  121. package/cjs/common/segment/linear.js.map +1 -1
  122. package/cjs/common/segment/monotone.js +13 -0
  123. package/cjs/common/segment/monotone.js.map +1 -1
  124. package/cjs/common/segment/step.js +13 -2
  125. package/cjs/common/segment/step.js.map +1 -1
  126. package/cjs/common/sort.js +3 -34
  127. package/cjs/common/sort.js.map +1 -1
  128. package/cjs/common/split-path.js +4 -11
  129. package/cjs/common/split-path.js.map +1 -1
  130. package/cjs/common/utils.d.ts +1 -1
  131. package/cjs/common/utils.js +10 -6
  132. package/cjs/common/utils.js.map +1 -1
  133. package/cjs/common/xml/parser.js +3 -2
  134. package/cjs/common/xml/parser.js.map +1 -1
  135. package/cjs/core/camera.js +11 -4
  136. package/cjs/core/camera.js.map +1 -1
  137. package/cjs/core/contributions/env/base-contribution.js +6 -0
  138. package/cjs/core/contributions/env/base-contribution.js.map +1 -1
  139. package/cjs/core/contributions/layerHandler/canvas2d-contribution.js +20 -11
  140. package/cjs/core/contributions/layerHandler/canvas2d-contribution.js.map +1 -1
  141. package/cjs/core/contributions/layerHandler/empty-contribution.js +8 -8
  142. package/cjs/core/contributions/layerHandler/empty-contribution.js.map +1 -1
  143. package/cjs/core/contributions/layerHandler/offscreen2d-contribution.js +5 -6
  144. package/cjs/core/contributions/layerHandler/offscreen2d-contribution.js.map +1 -1
  145. package/cjs/core/contributions/textMeasure/AtextMeasure.js +11 -8
  146. package/cjs/core/contributions/textMeasure/AtextMeasure.js.map +1 -1
  147. package/cjs/core/contributions/textMeasure/layout.js +3 -0
  148. package/cjs/core/contributions/textMeasure/layout.js.map +1 -1
  149. package/cjs/core/contributions/window/base-contribution.js +2 -0
  150. package/cjs/core/contributions/window/base-contribution.js.map +1 -1
  151. package/cjs/core/global.js +8 -0
  152. package/cjs/core/global.js.map +1 -1
  153. package/cjs/core/graphic-utils.js +16 -5
  154. package/cjs/core/graphic-utils.js.map +1 -1
  155. package/cjs/core/layer-service.js +7 -7
  156. package/cjs/core/layer-service.js.map +1 -1
  157. package/cjs/core/layer.js +7 -9
  158. package/cjs/core/layer.js.map +1 -1
  159. package/cjs/core/stage.js +79 -35
  160. package/cjs/core/stage.js.map +1 -1
  161. package/cjs/core/window.js +16 -13
  162. package/cjs/core/window.js.map +1 -1
  163. package/cjs/event/event-manager.js +152 -143
  164. package/cjs/event/event-manager.js.map +1 -1
  165. package/cjs/event/event-system.js +60 -43
  166. package/cjs/event/event-system.js.map +1 -1
  167. package/cjs/event/event-target.js +1 -3
  168. package/cjs/event/event-target.js.map +1 -1
  169. package/cjs/event/federated-event/base-event.js +43 -15
  170. package/cjs/event/federated-event/base-event.js.map +1 -1
  171. package/cjs/event/federated-event/mouse-event.js +27 -18
  172. package/cjs/event/federated-event/mouse-event.js.map +1 -1
  173. package/cjs/event/federated-event/pointer-event.js +13 -8
  174. package/cjs/event/federated-event/pointer-event.js.map +1 -1
  175. package/cjs/event/federated-event/wheel-event.js +14 -10
  176. package/cjs/event/federated-event/wheel-event.js.map +1 -1
  177. package/cjs/graphic/arc.js +10 -5
  178. package/cjs/graphic/arc.js.map +1 -1
  179. package/cjs/graphic/arc3d.js +7 -4
  180. package/cjs/graphic/arc3d.js.map +1 -1
  181. package/cjs/graphic/area.js +14 -9
  182. package/cjs/graphic/area.js.map +1 -1
  183. package/cjs/graphic/builtin-symbol/arrow.js +2 -3
  184. package/cjs/graphic/builtin-symbol/arrow.js.map +1 -1
  185. package/cjs/graphic/builtin-symbol/arrow2-down.js +2 -3
  186. package/cjs/graphic/builtin-symbol/arrow2-down.js.map +1 -1
  187. package/cjs/graphic/builtin-symbol/arrow2-left.js +2 -3
  188. package/cjs/graphic/builtin-symbol/arrow2-left.js.map +1 -1
  189. package/cjs/graphic/builtin-symbol/arrow2-right.js +2 -3
  190. package/cjs/graphic/builtin-symbol/arrow2-right.js.map +1 -1
  191. package/cjs/graphic/builtin-symbol/arrow2-up.js +2 -3
  192. package/cjs/graphic/builtin-symbol/arrow2-up.js.map +1 -1
  193. package/cjs/graphic/builtin-symbol/circle.js +2 -3
  194. package/cjs/graphic/builtin-symbol/circle.js.map +1 -1
  195. package/cjs/graphic/builtin-symbol/close.js +2 -3
  196. package/cjs/graphic/builtin-symbol/close.js.map +1 -1
  197. package/cjs/graphic/builtin-symbol/cross.js +2 -3
  198. package/cjs/graphic/builtin-symbol/cross.js.map +1 -1
  199. package/cjs/graphic/builtin-symbol/diamond.js +2 -3
  200. package/cjs/graphic/builtin-symbol/diamond.js.map +1 -1
  201. package/cjs/graphic/builtin-symbol/line-h.js +2 -3
  202. package/cjs/graphic/builtin-symbol/line-h.js.map +1 -1
  203. package/cjs/graphic/builtin-symbol/line-v.js +2 -3
  204. package/cjs/graphic/builtin-symbol/line-v.js.map +1 -1
  205. package/cjs/graphic/builtin-symbol/rect.js +2 -3
  206. package/cjs/graphic/builtin-symbol/rect.js.map +1 -1
  207. package/cjs/graphic/builtin-symbol/square.js +2 -3
  208. package/cjs/graphic/builtin-symbol/square.js.map +1 -1
  209. package/cjs/graphic/builtin-symbol/star.js +2 -3
  210. package/cjs/graphic/builtin-symbol/star.js.map +1 -1
  211. package/cjs/graphic/builtin-symbol/stroke.js +2 -3
  212. package/cjs/graphic/builtin-symbol/stroke.js.map +1 -1
  213. package/cjs/graphic/builtin-symbol/thin-triangle.js +2 -3
  214. package/cjs/graphic/builtin-symbol/thin-triangle.js.map +1 -1
  215. package/cjs/graphic/builtin-symbol/triangle-down.js +2 -3
  216. package/cjs/graphic/builtin-symbol/triangle-down.js.map +1 -1
  217. package/cjs/graphic/builtin-symbol/triangle-left.js +2 -3
  218. package/cjs/graphic/builtin-symbol/triangle-left.js.map +1 -1
  219. package/cjs/graphic/builtin-symbol/triangle-right.js +2 -3
  220. package/cjs/graphic/builtin-symbol/triangle-right.js.map +1 -1
  221. package/cjs/graphic/builtin-symbol/triangle-up.js +2 -3
  222. package/cjs/graphic/builtin-symbol/triangle-up.js.map +1 -1
  223. package/cjs/graphic/builtin-symbol/triangle.js +1 -3
  224. package/cjs/graphic/builtin-symbol/triangle.js.map +1 -1
  225. package/cjs/graphic/builtin-symbol/utils.js +6 -1
  226. package/cjs/graphic/builtin-symbol/utils.js.map +1 -1
  227. package/cjs/graphic/builtin-symbol/wedge.js +2 -3
  228. package/cjs/graphic/builtin-symbol/wedge.js.map +1 -1
  229. package/cjs/graphic/builtin-symbol/wye.js +2 -3
  230. package/cjs/graphic/builtin-symbol/wye.js.map +1 -1
  231. package/cjs/graphic/circle.js +8 -6
  232. package/cjs/graphic/circle.js.map +1 -1
  233. package/cjs/graphic/config.js +59 -32
  234. package/cjs/graphic/config.js.map +1 -1
  235. package/cjs/graphic/glyph.js +10 -9
  236. package/cjs/graphic/glyph.js.map +1 -1
  237. package/cjs/graphic/graphic-service/graphic-service.js +12 -8
  238. package/cjs/graphic/graphic-service/graphic-service.js.map +1 -1
  239. package/cjs/graphic/graphic.d.ts +1 -0
  240. package/cjs/graphic/graphic.js +32 -42
  241. package/cjs/graphic/graphic.js.map +1 -1
  242. package/cjs/graphic/group.js +9 -5
  243. package/cjs/graphic/group.js.map +1 -1
  244. package/cjs/graphic/image.js +18 -16
  245. package/cjs/graphic/image.js.map +1 -1
  246. package/cjs/graphic/line.js +11 -6
  247. package/cjs/graphic/line.js.map +1 -1
  248. package/cjs/graphic/node-tree.js +25 -44
  249. package/cjs/graphic/node-tree.js.map +1 -1
  250. package/cjs/graphic/path.js +12 -6
  251. package/cjs/graphic/path.js.map +1 -1
  252. package/cjs/graphic/polygon.js +7 -4
  253. package/cjs/graphic/polygon.js.map +1 -1
  254. package/cjs/graphic/pyramid3d.js +4 -3
  255. package/cjs/graphic/pyramid3d.js.map +1 -1
  256. package/cjs/graphic/rect.js +7 -3
  257. package/cjs/graphic/rect.js.map +1 -1
  258. package/cjs/graphic/rect3d.js +5 -4
  259. package/cjs/graphic/rect3d.js.map +1 -1
  260. package/cjs/graphic/richtext/frame.js +19 -0
  261. package/cjs/graphic/richtext/frame.js.map +1 -1
  262. package/cjs/graphic/richtext/icon.js +14 -6
  263. package/cjs/graphic/richtext/icon.js.map +1 -1
  264. package/cjs/graphic/richtext/line.js +14 -2
  265. package/cjs/graphic/richtext/line.js.map +1 -1
  266. package/cjs/graphic/richtext/paragraph.js +22 -0
  267. package/cjs/graphic/richtext/paragraph.js.map +1 -1
  268. package/cjs/graphic/richtext/utils.js +1 -2
  269. package/cjs/graphic/richtext/utils.js.map +1 -1
  270. package/cjs/graphic/richtext/wrapper.js +12 -0
  271. package/cjs/graphic/richtext/wrapper.js.map +1 -1
  272. package/cjs/graphic/richtext.js +38 -45
  273. package/cjs/graphic/richtext.js.map +1 -1
  274. package/cjs/graphic/shadow-root.js +2 -1
  275. package/cjs/graphic/shadow-root.js.map +1 -1
  276. package/cjs/graphic/symbol.js +12 -5
  277. package/cjs/graphic/symbol.js.map +1 -1
  278. package/cjs/graphic/text.js +45 -45
  279. package/cjs/graphic/text.js.map +1 -1
  280. package/cjs/graphic/theme.js +4 -0
  281. package/cjs/graphic/theme.js.map +1 -1
  282. package/cjs/graphic/tools.js +16 -44
  283. package/cjs/graphic/tools.js.map +1 -1
  284. package/cjs/graphic/wrap-text.js +7 -7
  285. package/cjs/graphic/wrap-text.js.map +1 -1
  286. package/cjs/interface/global.d.ts +2 -1
  287. package/cjs/interface/global.js.map +1 -1
  288. package/cjs/interface/graphic.d.ts +1 -0
  289. package/cjs/interface/graphic.js.map +1 -1
  290. package/cjs/picker/global-picker-service.js +1 -0
  291. package/cjs/picker/global-picker-service.js.map +1 -1
  292. package/cjs/picker/pick-interceptor.js +5 -15
  293. package/cjs/picker/pick-interceptor.js.map +1 -1
  294. package/cjs/picker/picker-service.js +5 -5
  295. package/cjs/picker/picker-service.js.map +1 -1
  296. package/cjs/plugins/builtin-plugin/3dview-transform-plugin.js +26 -20
  297. package/cjs/plugins/builtin-plugin/3dview-transform-plugin.js.map +1 -1
  298. package/cjs/plugins/builtin-plugin/auto-render-plugin.js +5 -4
  299. package/cjs/plugins/builtin-plugin/auto-render-plugin.js.map +1 -1
  300. package/cjs/plugins/builtin-plugin/dirty-bounds-plugin.js +5 -4
  301. package/cjs/plugins/builtin-plugin/dirty-bounds-plugin.js.map +1 -1
  302. package/cjs/plugins/builtin-plugin/flex-layout-plugin.js +11 -8
  303. package/cjs/plugins/builtin-plugin/flex-layout-plugin.js.map +1 -1
  304. package/cjs/plugins/builtin-plugin/html-attribute-plugin.js +28 -19
  305. package/cjs/plugins/builtin-plugin/html-attribute-plugin.js.map +1 -1
  306. package/cjs/plugins/builtin-plugin/incremental-auto-render-plugin.js +12 -8
  307. package/cjs/plugins/builtin-plugin/incremental-auto-render-plugin.js.map +1 -1
  308. package/cjs/plugins/builtin-plugin/react-attribute-plugin.js +6 -7
  309. package/cjs/plugins/builtin-plugin/react-attribute-plugin.js.map +1 -1
  310. package/cjs/plugins/plugin-service.js +1 -0
  311. package/cjs/plugins/plugin-service.js.map +1 -1
  312. package/cjs/render/contributions/render/arc-render.js +6 -4
  313. package/cjs/render/contributions/render/arc-render.js.map +1 -1
  314. package/cjs/render/contributions/render/arc3d-render.js +5 -7
  315. package/cjs/render/contributions/render/arc3d-render.js.map +1 -1
  316. package/cjs/render/contributions/render/area-render.js +21 -23
  317. package/cjs/render/contributions/render/area-render.js.map +1 -1
  318. package/cjs/render/contributions/render/base-render.js +5 -0
  319. package/cjs/render/contributions/render/base-render.js.map +1 -1
  320. package/cjs/render/contributions/render/circle-render.js +6 -4
  321. package/cjs/render/contributions/render/circle-render.js.map +1 -1
  322. package/cjs/render/contributions/render/contributions/arc-contribution-render.js +3 -4
  323. package/cjs/render/contributions/render/contributions/arc-contribution-render.js.map +1 -1
  324. package/cjs/render/contributions/render/contributions/area-texture-contribution-render.js +6 -9
  325. package/cjs/render/contributions/render/contributions/area-texture-contribution-render.js.map +1 -1
  326. package/cjs/render/contributions/render/contributions/base-contribution-render.js +10 -8
  327. package/cjs/render/contributions/render/contributions/base-contribution-render.js.map +1 -1
  328. package/cjs/render/contributions/render/contributions/base-texture-contribution-render.js +4 -4
  329. package/cjs/render/contributions/render/contributions/base-texture-contribution-render.js.map +1 -1
  330. package/cjs/render/contributions/render/contributions/circle-contribution-render.js +3 -4
  331. package/cjs/render/contributions/render/contributions/circle-contribution-render.js.map +1 -1
  332. package/cjs/render/contributions/render/contributions/group-contribution-render.js +1 -3
  333. package/cjs/render/contributions/render/contributions/group-contribution-render.js.map +1 -1
  334. package/cjs/render/contributions/render/contributions/image-contribution-render.js +1 -3
  335. package/cjs/render/contributions/render/contributions/image-contribution-render.js.map +1 -1
  336. package/cjs/render/contributions/render/contributions/rect-contribution-render.js +11 -14
  337. package/cjs/render/contributions/render/contributions/rect-contribution-render.js.map +1 -1
  338. package/cjs/render/contributions/render/contributions/symbol-contribution-render.js +3 -4
  339. package/cjs/render/contributions/render/contributions/symbol-contribution-render.js.map +1 -1
  340. package/cjs/render/contributions/render/contributions/text-contribution-render.js +6 -8
  341. package/cjs/render/contributions/render/contributions/text-contribution-render.js.map +1 -1
  342. package/cjs/render/contributions/render/draw-contribution.js +12 -14
  343. package/cjs/render/contributions/render/draw-contribution.js.map +1 -1
  344. package/cjs/render/contributions/render/draw-interceptor.js +11 -21
  345. package/cjs/render/contributions/render/draw-interceptor.js.map +1 -1
  346. package/cjs/render/contributions/render/glyph-render.js +2 -3
  347. package/cjs/render/contributions/render/glyph-render.js.map +1 -1
  348. package/cjs/render/contributions/render/graphic-render.js +4 -1
  349. package/cjs/render/contributions/render/graphic-render.js.map +1 -1
  350. package/cjs/render/contributions/render/group-render.js +7 -3
  351. package/cjs/render/contributions/render/group-render.js.map +1 -1
  352. package/cjs/render/contributions/render/image-render.js +4 -2
  353. package/cjs/render/contributions/render/image-render.js.map +1 -1
  354. package/cjs/render/contributions/render/incremental-area-render.js +1 -3
  355. package/cjs/render/contributions/render/incremental-area-render.js.map +1 -1
  356. package/cjs/render/contributions/render/incremental-draw-contribution.js +80 -109
  357. package/cjs/render/contributions/render/incremental-draw-contribution.js.map +1 -1
  358. package/cjs/render/contributions/render/incremental-line-render.js +1 -3
  359. package/cjs/render/contributions/render/incremental-line-render.js.map +1 -1
  360. package/cjs/render/contributions/render/line-render.js +12 -16
  361. package/cjs/render/contributions/render/line-render.js.map +1 -1
  362. package/cjs/render/contributions/render/path-render.js +8 -7
  363. package/cjs/render/contributions/render/path-render.js.map +1 -1
  364. package/cjs/render/contributions/render/polygon-render.js +6 -4
  365. package/cjs/render/contributions/render/polygon-render.js.map +1 -1
  366. package/cjs/render/contributions/render/pyramid3d-render.js +3 -5
  367. package/cjs/render/contributions/render/pyramid3d-render.js.map +1 -1
  368. package/cjs/render/contributions/render/rect-render.js +8 -7
  369. package/cjs/render/contributions/render/rect-render.js.map +1 -1
  370. package/cjs/render/contributions/render/rect3d-render.js +5 -7
  371. package/cjs/render/contributions/render/rect3d-render.js.map +1 -1
  372. package/cjs/render/contributions/render/richtext-render.js +4 -3
  373. package/cjs/render/contributions/render/richtext-render.js.map +1 -1
  374. package/cjs/render/contributions/render/symbol-render.js +11 -14
  375. package/cjs/render/contributions/render/symbol-render.js.map +1 -1
  376. package/cjs/render/contributions/render/text-render.js +8 -8
  377. package/cjs/render/contributions/render/text-render.js.map +1 -1
  378. package/cjs/render/contributions/render/utils.js +1 -1
  379. package/cjs/render/contributions/render/utils.js.map +1 -1
  380. package/cjs/render/render-service.js +11 -2
  381. package/cjs/render/render-service.js.map +1 -1
  382. package/cjs/resource-loader/loader.js +13 -16
  383. package/cjs/resource-loader/loader.js.map +1 -1
  384. package/cjs/tapable/Hook.js +3 -0
  385. package/cjs/tapable/Hook.js.map +1 -1
  386. package/dist/index.es.js +28908 -0
  387. package/es/allocator/bounds-allocate.js +1 -1
  388. package/es/allocator/bounds-allocate.js.map +1 -1
  389. package/es/allocator/canvas-allocate.js +11 -9
  390. package/es/allocator/canvas-allocate.js.map +1 -1
  391. package/es/allocator/graphic-allocate.js +5 -9
  392. package/es/allocator/graphic-allocate.js.map +1 -1
  393. package/es/allocator/matrix-allocate.js +2 -6
  394. package/es/allocator/matrix-allocate.js.map +1 -1
  395. package/es/animate/Ticker/default-ticker.js +25 -14
  396. package/es/animate/Ticker/default-ticker.js.map +1 -1
  397. package/es/animate/animate.js +7 -8
  398. package/es/animate/animate.js.map +1 -1
  399. package/es/animate/custom-animate.js +52 -50
  400. package/es/animate/custom-animate.js.map +1 -1
  401. package/es/animate/easing.js +18 -8
  402. package/es/animate/easing.js.map +1 -1
  403. package/es/animate/morphing.js +20 -23
  404. package/es/animate/morphing.js.map +1 -1
  405. package/es/application.js +7 -1
  406. package/es/application.js.map +1 -1
  407. package/es/canvas/conical-gradient.js +12 -6
  408. package/es/canvas/conical-gradient.js.map +1 -1
  409. package/es/canvas/contributions/base-canvas.js +19 -7
  410. package/es/canvas/contributions/base-canvas.js.map +1 -1
  411. package/es/color-string/interpolate.js +5 -3
  412. package/es/color-string/interpolate.js.map +1 -1
  413. package/es/color-string/store.js +2 -2
  414. package/es/color-string/store.js.map +1 -1
  415. package/es/common/bounds-context.js +1 -0
  416. package/es/common/bounds-context.js.map +1 -1
  417. package/es/common/canvas-utils.js +3 -6
  418. package/es/common/canvas-utils.js.map +1 -1
  419. package/es/common/contribution-provider.js +3 -0
  420. package/es/common/contribution-provider.js.map +1 -1
  421. package/es/common/custom-path2d.js +7 -1
  422. package/es/common/custom-path2d.js.map +1 -1
  423. package/es/common/generator.js +1 -2
  424. package/es/common/generator.js.map +1 -1
  425. package/es/common/inversify/binding.js +12 -0
  426. package/es/common/inversify/binding.js.map +1 -1
  427. package/es/common/inversify/container.js +4 -0
  428. package/es/common/inversify/container.js.map +1 -1
  429. package/es/common/inversify/cotainer-module.js +2 -0
  430. package/es/common/inversify/cotainer-module.js.map +1 -1
  431. package/es/common/inversify/meta-data.js +2 -0
  432. package/es/common/inversify/meta-data.js.map +1 -1
  433. package/es/common/inversify/syntax/binding_in_syntax.js +1 -0
  434. package/es/common/inversify/syntax/binding_in_syntax.js.map +1 -1
  435. package/es/common/inversify/syntax/binding_to_syntax.js +1 -0
  436. package/es/common/inversify/syntax/binding_to_syntax.js.map +1 -1
  437. package/es/common/inversify-lite/annotation/lazy_service_identifier.js +1 -0
  438. package/es/common/inversify-lite/annotation/lazy_service_identifier.js.map +1 -1
  439. package/es/common/inversify-lite/bindings/binding.js +14 -0
  440. package/es/common/inversify-lite/bindings/binding.js.map +1 -1
  441. package/es/common/inversify-lite/container/container.js +22 -48
  442. package/es/common/inversify-lite/container/container.js.map +1 -1
  443. package/es/common/inversify-lite/container/container_module.js +4 -0
  444. package/es/common/inversify-lite/container/container_module.js.map +1 -1
  445. package/es/common/inversify-lite/container/lookup.js +1 -0
  446. package/es/common/inversify-lite/container/lookup.js.map +1 -1
  447. package/es/common/inversify-lite/planning/context.js +4 -0
  448. package/es/common/inversify-lite/planning/context.js.map +1 -1
  449. package/es/common/inversify-lite/planning/metadata.js +2 -0
  450. package/es/common/inversify-lite/planning/metadata.js.map +1 -1
  451. package/es/common/inversify-lite/planning/plan.js +2 -0
  452. package/es/common/inversify-lite/planning/plan.js.map +1 -1
  453. package/es/common/inversify-lite/planning/queryable_string.js +1 -0
  454. package/es/common/inversify-lite/planning/queryable_string.js.map +1 -1
  455. package/es/common/inversify-lite/planning/request.js +8 -0
  456. package/es/common/inversify-lite/planning/request.js.map +1 -1
  457. package/es/common/inversify-lite/planning/target.js +7 -0
  458. package/es/common/inversify-lite/planning/target.js.map +1 -1
  459. package/es/common/inversify-lite/resolution/instantiation.js +16 -44
  460. package/es/common/inversify-lite/resolution/instantiation.js.map +1 -1
  461. package/es/common/inversify-lite/scope/scope.js +3 -29
  462. package/es/common/inversify-lite/scope/scope.js.map +1 -1
  463. package/es/common/inversify-lite/syntax/binding_in_syntax.js +1 -0
  464. package/es/common/inversify-lite/syntax/binding_in_syntax.js.map +1 -1
  465. package/es/common/inversify-lite/syntax/binding_in_when_on_syntax.js +3 -0
  466. package/es/common/inversify-lite/syntax/binding_in_when_on_syntax.js.map +1 -1
  467. package/es/common/inversify-lite/syntax/binding_on_syntax.js +1 -0
  468. package/es/common/inversify-lite/syntax/binding_on_syntax.js.map +1 -1
  469. package/es/common/inversify-lite/syntax/binding_to_syntax.js +1 -0
  470. package/es/common/inversify-lite/syntax/binding_to_syntax.js.map +1 -1
  471. package/es/common/inversify-lite/syntax/binding_when_on_syntax.js +2 -0
  472. package/es/common/inversify-lite/syntax/binding_when_on_syntax.js.map +1 -1
  473. package/es/common/inversify-lite/syntax/binding_when_syntax.js +1 -0
  474. package/es/common/inversify-lite/syntax/binding_when_syntax.js.map +1 -1
  475. package/es/common/polygon.js +1 -2
  476. package/es/common/polygon.js.map +1 -1
  477. package/es/common/render-area.js +2 -3
  478. package/es/common/render-area.js.map +1 -1
  479. package/es/common/render-curve.js +4 -8
  480. package/es/common/render-curve.js.map +1 -1
  481. package/es/common/seg-context.js +12 -3
  482. package/es/common/seg-context.js.map +1 -1
  483. package/es/common/segment/basis.js +13 -0
  484. package/es/common/segment/basis.js.map +1 -1
  485. package/es/common/segment/common.js +1 -1
  486. package/es/common/segment/common.js.map +1 -1
  487. package/es/common/segment/curve/arc.js +2 -1
  488. package/es/common/segment/curve/arc.js.map +1 -1
  489. package/es/common/segment/curve/base.js +4 -0
  490. package/es/common/segment/curve/base.js.map +1 -1
  491. package/es/common/segment/curve/cubic-bezier.js +2 -2
  492. package/es/common/segment/curve/cubic-bezier.js.map +1 -1
  493. package/es/common/segment/curve/curve-context.js +4 -0
  494. package/es/common/segment/curve/curve-context.js.map +1 -1
  495. package/es/common/segment/curve/ellipse.js +3 -3
  496. package/es/common/segment/curve/ellipse.js.map +1 -1
  497. package/es/common/segment/curve/line.js +2 -1
  498. package/es/common/segment/curve/line.js.map +1 -1
  499. package/es/common/segment/curve/move.js +2 -1
  500. package/es/common/segment/curve/move.js.map +1 -1
  501. package/es/common/segment/curve/path.js +2 -0
  502. package/es/common/segment/curve/path.js.map +1 -1
  503. package/es/common/segment/curve/quadratic-bezier.js +2 -2
  504. package/es/common/segment/curve/quadratic-bezier.js.map +1 -1
  505. package/es/common/segment/linear-closed.js.map +1 -1
  506. package/es/common/segment/linear.js +10 -0
  507. package/es/common/segment/linear.js.map +1 -1
  508. package/es/common/segment/monotone.js +13 -0
  509. package/es/common/segment/monotone.js.map +1 -1
  510. package/es/common/segment/step.js +12 -1
  511. package/es/common/segment/step.js.map +1 -1
  512. package/es/common/sort.js +3 -34
  513. package/es/common/sort.js.map +1 -1
  514. package/es/common/split-path.js +4 -11
  515. package/es/common/split-path.js.map +1 -1
  516. package/es/common/utils.d.ts +1 -1
  517. package/es/common/utils.js +9 -7
  518. package/es/common/utils.js.map +1 -1
  519. package/es/common/xml/parser.js +2 -2
  520. package/es/common/xml/parser.js.map +1 -1
  521. package/es/core/camera.js +11 -4
  522. package/es/core/camera.js.map +1 -1
  523. package/es/core/contributions/env/base-contribution.js +6 -0
  524. package/es/core/contributions/env/base-contribution.js.map +1 -1
  525. package/es/core/contributions/layerHandler/canvas2d-contribution.js +20 -11
  526. package/es/core/contributions/layerHandler/canvas2d-contribution.js.map +1 -1
  527. package/es/core/contributions/layerHandler/empty-contribution.js +8 -8
  528. package/es/core/contributions/layerHandler/empty-contribution.js.map +1 -1
  529. package/es/core/contributions/layerHandler/offscreen2d-contribution.js +5 -6
  530. package/es/core/contributions/layerHandler/offscreen2d-contribution.js.map +1 -1
  531. package/es/core/contributions/textMeasure/AtextMeasure.js +11 -8
  532. package/es/core/contributions/textMeasure/AtextMeasure.js.map +1 -1
  533. package/es/core/contributions/textMeasure/layout.js +3 -0
  534. package/es/core/contributions/textMeasure/layout.js.map +1 -1
  535. package/es/core/contributions/window/base-contribution.js +2 -0
  536. package/es/core/contributions/window/base-contribution.js.map +1 -1
  537. package/es/core/global.js +8 -0
  538. package/es/core/global.js.map +1 -1
  539. package/es/core/graphic-utils.js +16 -5
  540. package/es/core/graphic-utils.js.map +1 -1
  541. package/es/core/layer-service.js +7 -7
  542. package/es/core/layer-service.js.map +1 -1
  543. package/es/core/layer.js +7 -9
  544. package/es/core/layer.js.map +1 -1
  545. package/es/core/stage.js +79 -35
  546. package/es/core/stage.js.map +1 -1
  547. package/es/core/window.js +16 -14
  548. package/es/core/window.js.map +1 -1
  549. package/es/event/event-manager.js +152 -143
  550. package/es/event/event-manager.js.map +1 -1
  551. package/es/event/event-system.js +60 -43
  552. package/es/event/event-system.js.map +1 -1
  553. package/es/event/event-target.js +1 -3
  554. package/es/event/event-target.js.map +1 -1
  555. package/es/event/federated-event/base-event.js +43 -15
  556. package/es/event/federated-event/base-event.js.map +1 -1
  557. package/es/event/federated-event/mouse-event.js +27 -18
  558. package/es/event/federated-event/mouse-event.js.map +1 -1
  559. package/es/event/federated-event/pointer-event.js +13 -8
  560. package/es/event/federated-event/pointer-event.js.map +1 -1
  561. package/es/event/federated-event/wheel-event.js +13 -11
  562. package/es/event/federated-event/wheel-event.js.map +1 -1
  563. package/es/graphic/arc.js +9 -6
  564. package/es/graphic/arc.js.map +1 -1
  565. package/es/graphic/arc3d.js +6 -5
  566. package/es/graphic/arc3d.js.map +1 -1
  567. package/es/graphic/area.js +13 -10
  568. package/es/graphic/area.js.map +1 -1
  569. package/es/graphic/builtin-symbol/arrow.js +2 -3
  570. package/es/graphic/builtin-symbol/arrow.js.map +1 -1
  571. package/es/graphic/builtin-symbol/arrow2-down.js +2 -3
  572. package/es/graphic/builtin-symbol/arrow2-down.js.map +1 -1
  573. package/es/graphic/builtin-symbol/arrow2-left.js +2 -3
  574. package/es/graphic/builtin-symbol/arrow2-left.js.map +1 -1
  575. package/es/graphic/builtin-symbol/arrow2-right.js +2 -3
  576. package/es/graphic/builtin-symbol/arrow2-right.js.map +1 -1
  577. package/es/graphic/builtin-symbol/arrow2-up.js +2 -3
  578. package/es/graphic/builtin-symbol/arrow2-up.js.map +1 -1
  579. package/es/graphic/builtin-symbol/circle.js +2 -3
  580. package/es/graphic/builtin-symbol/circle.js.map +1 -1
  581. package/es/graphic/builtin-symbol/close.js +2 -3
  582. package/es/graphic/builtin-symbol/close.js.map +1 -1
  583. package/es/graphic/builtin-symbol/cross.js +2 -3
  584. package/es/graphic/builtin-symbol/cross.js.map +1 -1
  585. package/es/graphic/builtin-symbol/diamond.js +2 -3
  586. package/es/graphic/builtin-symbol/diamond.js.map +1 -1
  587. package/es/graphic/builtin-symbol/line-h.js +2 -3
  588. package/es/graphic/builtin-symbol/line-h.js.map +1 -1
  589. package/es/graphic/builtin-symbol/line-v.js +2 -3
  590. package/es/graphic/builtin-symbol/line-v.js.map +1 -1
  591. package/es/graphic/builtin-symbol/rect.js +2 -3
  592. package/es/graphic/builtin-symbol/rect.js.map +1 -1
  593. package/es/graphic/builtin-symbol/square.js +2 -3
  594. package/es/graphic/builtin-symbol/square.js.map +1 -1
  595. package/es/graphic/builtin-symbol/star.js +2 -3
  596. package/es/graphic/builtin-symbol/star.js.map +1 -1
  597. package/es/graphic/builtin-symbol/stroke.js +2 -3
  598. package/es/graphic/builtin-symbol/stroke.js.map +1 -1
  599. package/es/graphic/builtin-symbol/thin-triangle.js +2 -3
  600. package/es/graphic/builtin-symbol/thin-triangle.js.map +1 -1
  601. package/es/graphic/builtin-symbol/triangle-down.js +2 -3
  602. package/es/graphic/builtin-symbol/triangle-down.js.map +1 -1
  603. package/es/graphic/builtin-symbol/triangle-left.js +2 -3
  604. package/es/graphic/builtin-symbol/triangle-left.js.map +1 -1
  605. package/es/graphic/builtin-symbol/triangle-right.js +2 -3
  606. package/es/graphic/builtin-symbol/triangle-right.js.map +1 -1
  607. package/es/graphic/builtin-symbol/triangle-up.js +2 -3
  608. package/es/graphic/builtin-symbol/triangle-up.js.map +1 -1
  609. package/es/graphic/builtin-symbol/triangle.js +1 -3
  610. package/es/graphic/builtin-symbol/triangle.js.map +1 -1
  611. package/es/graphic/builtin-symbol/utils.js +6 -2
  612. package/es/graphic/builtin-symbol/utils.js.map +1 -1
  613. package/es/graphic/builtin-symbol/wedge.js +2 -3
  614. package/es/graphic/builtin-symbol/wedge.js.map +1 -1
  615. package/es/graphic/builtin-symbol/wye.js +2 -3
  616. package/es/graphic/builtin-symbol/wye.js.map +1 -1
  617. package/es/graphic/circle.js +7 -6
  618. package/es/graphic/circle.js.map +1 -1
  619. package/es/graphic/config.js +73 -44
  620. package/es/graphic/config.js.map +1 -1
  621. package/es/graphic/glyph.js +9 -9
  622. package/es/graphic/glyph.js.map +1 -1
  623. package/es/graphic/graphic-service/graphic-service.js +12 -8
  624. package/es/graphic/graphic-service/graphic-service.js.map +1 -1
  625. package/es/graphic/graphic.d.ts +1 -0
  626. package/es/graphic/graphic.js +32 -42
  627. package/es/graphic/graphic.js.map +1 -1
  628. package/es/graphic/group.js +8 -5
  629. package/es/graphic/group.js.map +1 -1
  630. package/es/graphic/image.js +17 -16
  631. package/es/graphic/image.js.map +1 -1
  632. package/es/graphic/line.js +10 -7
  633. package/es/graphic/line.js.map +1 -1
  634. package/es/graphic/node-tree.js +25 -44
  635. package/es/graphic/node-tree.js.map +1 -1
  636. package/es/graphic/path.js +11 -7
  637. package/es/graphic/path.js.map +1 -1
  638. package/es/graphic/polygon.js +6 -4
  639. package/es/graphic/polygon.js.map +1 -1
  640. package/es/graphic/pyramid3d.js +3 -3
  641. package/es/graphic/pyramid3d.js.map +1 -1
  642. package/es/graphic/rect.js +6 -4
  643. package/es/graphic/rect.js.map +1 -1
  644. package/es/graphic/rect3d.js +4 -4
  645. package/es/graphic/rect3d.js.map +1 -1
  646. package/es/graphic/richtext/frame.js +19 -0
  647. package/es/graphic/richtext/frame.js.map +1 -1
  648. package/es/graphic/richtext/icon.js +14 -6
  649. package/es/graphic/richtext/icon.js.map +1 -1
  650. package/es/graphic/richtext/line.js +14 -2
  651. package/es/graphic/richtext/line.js.map +1 -1
  652. package/es/graphic/richtext/paragraph.js +22 -0
  653. package/es/graphic/richtext/paragraph.js.map +1 -1
  654. package/es/graphic/richtext/utils.js +1 -2
  655. package/es/graphic/richtext/utils.js.map +1 -1
  656. package/es/graphic/richtext/wrapper.js +12 -0
  657. package/es/graphic/richtext/wrapper.js.map +1 -1
  658. package/es/graphic/richtext.js +37 -46
  659. package/es/graphic/richtext.js.map +1 -1
  660. package/es/graphic/shadow-root.js +2 -1
  661. package/es/graphic/shadow-root.js.map +1 -1
  662. package/es/graphic/symbol.js +11 -6
  663. package/es/graphic/symbol.js.map +1 -1
  664. package/es/graphic/text.js +39 -40
  665. package/es/graphic/text.js.map +1 -1
  666. package/es/graphic/theme.js +4 -0
  667. package/es/graphic/theme.js.map +1 -1
  668. package/es/graphic/tools.js +16 -44
  669. package/es/graphic/tools.js.map +1 -1
  670. package/es/graphic/wrap-text.js +6 -6
  671. package/es/graphic/wrap-text.js.map +1 -1
  672. package/es/interface/global.d.ts +2 -1
  673. package/es/interface/global.js.map +1 -1
  674. package/es/interface/graphic.d.ts +1 -0
  675. package/es/interface/graphic.js.map +1 -1
  676. package/es/picker/global-picker-service.js +1 -0
  677. package/es/picker/global-picker-service.js.map +1 -1
  678. package/es/picker/pick-interceptor.js +5 -15
  679. package/es/picker/pick-interceptor.js.map +1 -1
  680. package/es/picker/picker-service.js +5 -5
  681. package/es/picker/picker-service.js.map +1 -1
  682. package/es/plugins/builtin-plugin/3dview-transform-plugin.js +26 -20
  683. package/es/plugins/builtin-plugin/3dview-transform-plugin.js.map +1 -1
  684. package/es/plugins/builtin-plugin/auto-render-plugin.js +5 -4
  685. package/es/plugins/builtin-plugin/auto-render-plugin.js.map +1 -1
  686. package/es/plugins/builtin-plugin/dirty-bounds-plugin.js +5 -4
  687. package/es/plugins/builtin-plugin/dirty-bounds-plugin.js.map +1 -1
  688. package/es/plugins/builtin-plugin/flex-layout-plugin.js +11 -8
  689. package/es/plugins/builtin-plugin/flex-layout-plugin.js.map +1 -1
  690. package/es/plugins/builtin-plugin/html-attribute-plugin.js +28 -17
  691. package/es/plugins/builtin-plugin/html-attribute-plugin.js.map +1 -1
  692. package/es/plugins/builtin-plugin/incremental-auto-render-plugin.js +12 -8
  693. package/es/plugins/builtin-plugin/incremental-auto-render-plugin.js.map +1 -1
  694. package/es/plugins/builtin-plugin/react-attribute-plugin.js +6 -6
  695. package/es/plugins/builtin-plugin/react-attribute-plugin.js.map +1 -1
  696. package/es/plugins/plugin-service.js +1 -0
  697. package/es/plugins/plugin-service.js.map +1 -1
  698. package/es/render/contributions/render/arc-render.js +6 -4
  699. package/es/render/contributions/render/arc-render.js.map +1 -1
  700. package/es/render/contributions/render/arc3d-render.js +5 -7
  701. package/es/render/contributions/render/arc3d-render.js.map +1 -1
  702. package/es/render/contributions/render/area-render.js +21 -23
  703. package/es/render/contributions/render/area-render.js.map +1 -1
  704. package/es/render/contributions/render/base-render.js +5 -0
  705. package/es/render/contributions/render/base-render.js.map +1 -1
  706. package/es/render/contributions/render/circle-render.js +6 -4
  707. package/es/render/contributions/render/circle-render.js.map +1 -1
  708. package/es/render/contributions/render/contributions/arc-contribution-render.js +3 -3
  709. package/es/render/contributions/render/contributions/arc-contribution-render.js.map +1 -1
  710. package/es/render/contributions/render/contributions/area-texture-contribution-render.js +2 -5
  711. package/es/render/contributions/render/contributions/area-texture-contribution-render.js.map +1 -1
  712. package/es/render/contributions/render/contributions/base-contribution-render.js +10 -7
  713. package/es/render/contributions/render/contributions/base-contribution-render.js.map +1 -1
  714. package/es/render/contributions/render/contributions/base-texture-contribution-render.js +4 -3
  715. package/es/render/contributions/render/contributions/base-texture-contribution-render.js.map +1 -1
  716. package/es/render/contributions/render/contributions/circle-contribution-render.js +3 -3
  717. package/es/render/contributions/render/contributions/circle-contribution-render.js.map +1 -1
  718. package/es/render/contributions/render/contributions/group-contribution-render.js +1 -3
  719. package/es/render/contributions/render/contributions/group-contribution-render.js.map +1 -1
  720. package/es/render/contributions/render/contributions/image-contribution-render.js +1 -3
  721. package/es/render/contributions/render/contributions/image-contribution-render.js.map +1 -1
  722. package/es/render/contributions/render/contributions/rect-contribution-render.js +11 -11
  723. package/es/render/contributions/render/contributions/rect-contribution-render.js.map +1 -1
  724. package/es/render/contributions/render/contributions/symbol-contribution-render.js +3 -3
  725. package/es/render/contributions/render/contributions/symbol-contribution-render.js.map +1 -1
  726. package/es/render/contributions/render/contributions/text-contribution-render.js +6 -8
  727. package/es/render/contributions/render/contributions/text-contribution-render.js.map +1 -1
  728. package/es/render/contributions/render/draw-contribution.js +12 -14
  729. package/es/render/contributions/render/draw-contribution.js.map +1 -1
  730. package/es/render/contributions/render/draw-interceptor.js +11 -21
  731. package/es/render/contributions/render/draw-interceptor.js.map +1 -1
  732. package/es/render/contributions/render/glyph-render.js +2 -3
  733. package/es/render/contributions/render/glyph-render.js.map +1 -1
  734. package/es/render/contributions/render/graphic-render.js +4 -1
  735. package/es/render/contributions/render/graphic-render.js.map +1 -1
  736. package/es/render/contributions/render/group-render.js +7 -3
  737. package/es/render/contributions/render/group-render.js.map +1 -1
  738. package/es/render/contributions/render/image-render.js +5 -2
  739. package/es/render/contributions/render/image-render.js.map +1 -1
  740. package/es/render/contributions/render/incremental-area-render.js +1 -3
  741. package/es/render/contributions/render/incremental-area-render.js.map +1 -1
  742. package/es/render/contributions/render/incremental-draw-contribution.js +80 -109
  743. package/es/render/contributions/render/incremental-draw-contribution.js.map +1 -1
  744. package/es/render/contributions/render/incremental-line-render.js +1 -3
  745. package/es/render/contributions/render/incremental-line-render.js.map +1 -1
  746. package/es/render/contributions/render/line-render.js +12 -16
  747. package/es/render/contributions/render/line-render.js.map +1 -1
  748. package/es/render/contributions/render/path-render.js +8 -6
  749. package/es/render/contributions/render/path-render.js.map +1 -1
  750. package/es/render/contributions/render/polygon-render.js +6 -4
  751. package/es/render/contributions/render/polygon-render.js.map +1 -1
  752. package/es/render/contributions/render/pyramid3d-render.js +3 -5
  753. package/es/render/contributions/render/pyramid3d-render.js.map +1 -1
  754. package/es/render/contributions/render/rect-render.js +8 -6
  755. package/es/render/contributions/render/rect-render.js.map +1 -1
  756. package/es/render/contributions/render/rect3d-render.js +5 -7
  757. package/es/render/contributions/render/rect3d-render.js.map +1 -1
  758. package/es/render/contributions/render/richtext-render.js +4 -3
  759. package/es/render/contributions/render/richtext-render.js.map +1 -1
  760. package/es/render/contributions/render/symbol-render.js +11 -14
  761. package/es/render/contributions/render/symbol-render.js.map +1 -1
  762. package/es/render/contributions/render/text-render.js +9 -8
  763. package/es/render/contributions/render/text-render.js.map +1 -1
  764. package/es/render/contributions/render/utils.js +1 -1
  765. package/es/render/contributions/render/utils.js.map +1 -1
  766. package/es/render/render-service.js +11 -2
  767. package/es/render/render-service.js.map +1 -1
  768. package/es/resource-loader/loader.js +12 -17
  769. package/es/resource-loader/loader.js.map +1 -1
  770. package/es/tapable/Hook.js +3 -0
  771. package/es/tapable/Hook.js.map +1 -1
  772. package/package.json +4 -4
@@ -10,8 +10,9 @@ export function divideLinear(curve, t) {
10
10
  }
11
11
 
12
12
  export class LineCurve extends Curve {
13
+ type=CurveTypeEnum.LineCurve;
13
14
  constructor(p0, p1) {
14
- super(), this.type = CurveTypeEnum.LineCurve, this.p0 = p0, this.p1 = p1;
15
+ super(), this.p0 = p0, this.p1 = p1;
15
16
  }
16
17
  getPointAt(t) {
17
18
  if (!1 !== this.defined) return PointService.pointAtPP(this.p0, this.p1, t);
@@ -1 +1 @@
1
- {"version":3,"sources":["../src/common/segment/curve/line.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,GAAG,EAAE,KAAK,EAAE,YAAY,EAAE,MAAM,kBAAkB,CAAC;AAE5D,OAAO,EAAE,KAAK,EAAE,MAAM,QAAQ,CAAC;AAC/B,OAAO,EAAE,aAAa,EAAE,SAAS,EAAE,MAAM,aAAa,CAAC;AAEvD,MAAM,UAAU,YAAY,CAAC,KAAiB,EAAE,CAAS;IACvD,MAAM,EAAE,EAAE,EAAE,EAAE,EAAE,GAAG,KAAK,CAAC;IAGzB,MAAM,EAAE,GAAG,YAAY,CAAC,SAAS,CAAC,EAAE,EAAE,EAAE,EAAE,CAAC,CAAC,CAAC;IAG7C,MAAM,MAAM,GAAG,IAAI,SAAS,CAAC,EAAE,EAAE,EAAE,CAAC,CAAC;IACrC,MAAM,MAAM,GAAG,IAAI,SAAS,CAAC,EAAE,EAAE,EAAE,CAAC,CAAC;IAErC,OAAO,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;AAC1B,CAAC;AAED,MAAM,OAAO,SAAU,SAAQ,KAAK;IAOlC,YAAY,EAAU,EAAE,EAAU;QAChC,KAAK,EAAE,CAAC;QAPV,SAAI,GAAW,aAAa,CAAC,SAAS,CAAC;QAQrC,IAAI,CAAC,EAAE,GAAG,EAAE,CAAC;QACb,IAAI,CAAC,EAAE,GAAG,EAAE,CAAC;IACf,CAAC;IACD,UAAU,CAAC,CAAS;QAClB,IAAI,IAAI,CAAC,OAAO,KAAK,KAAK,EAAE;YAC1B,OAAO,YAAY,CAAC,SAAS,CAAC,IAAI,CAAC,EAAE,EAAE,IAAI,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC;SACpD;QACD,MAAM,IAAI,KAAK,CAAC,6BAA6B,CAAC,CAAC;IACjD,CAAC;IAED,UAAU,CAAC,CAAS;QAClB,IAAI,IAAI,CAAC,KAAK,IAAI,IAAI,EAAE;YACtB,IAAI,CAAC,KAAK,GAAG,KAAK,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,GAAG,IAAI,CAAC,EAAE,CAAC,CAAC,EAAE,IAAI,CAAC,EAAE,CAAC,CAAC,GAAG,IAAI,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC;SAClE;QACD,OAAO,IAAI,CAAC,KAAK,CAAC;IACpB,CAAC;IAES,WAAW;QACnB,OAAO,MAAM,CAAC,QAAQ,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,GAAG,IAAI,CAAC,EAAE,CAAC,CAAC,GAAG,IAAI,CAAC,EAAE,CAAC,CAAC,GAAG,IAAI,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC;IACxE,CAAC;IAES,UAAU;QAClB,IAAI,IAAI,CAAC,WAAW,EAAE,EAAE;YACtB,OAAO,YAAY,CAAC,UAAU,CAAC,IAAI,CAAC,EAAE,EAAE,IAAI,CAAC,EAAE,CAAC,CAAC;SAClD;QAED,OAAO,EAAE,CAAC;IACZ,CAAC;IAES,cAAc,CAAC,SAAqB;QAC5C,IAAI,SAAS,KAAK,SAAS,CAAC,GAAG,EAAE;YAC/B,OAAO,GAAG,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,GAAG,IAAI,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC;SACnC;aAAM,IAAI,SAAS,KAAK,SAAS,CAAC,MAAM,EAAE;YACzC,OAAO,GAAG,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,GAAG,IAAI,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC;SACnC;QACD,OAAO,CAAC,CAAC;IACX,CAAC;CACF","file":"line.js","sourcesContent":["import type { IPoint, IPointLike } from '@visactor/vutils';\nimport { abs, atan2, PointService } from '@visactor/vutils';\nimport type { ILineCurve, IDirection } from '../../../interface';\nimport { Curve } from './base';\nimport { CurveTypeEnum, Direction } from '../../enums';\n\nexport function divideLinear(curve: ILineCurve, t: number): ILineCurve[] {\n const { p0, p1 } = curve;\n\n // 计算两点之间的差值点\n const c1 = PointService.pointAtPP(p0, p1, t);\n // const direction = p1.x1 ? p1.y > p0.y ? 0 : 1 : p1.x > p0.x ? 0 : 1;\n\n const curve1 = new LineCurve(p0, c1);\n const curve2 = new LineCurve(c1, p1);\n\n return [curve1, curve2];\n}\n\nexport class LineCurve extends Curve implements ILineCurve {\n type: number = CurveTypeEnum.LineCurve;\n declare originP1?: IPointLike;\n declare originP2?: IPointLike;\n declare p0: IPoint;\n declare p1: IPoint;\n declare angle: number;\n constructor(p0: IPoint, p1: IPoint) {\n super();\n this.p0 = p0;\n this.p1 = p1;\n }\n getPointAt(t: number): IPointLike {\n if (this.defined !== false) {\n return PointService.pointAtPP(this.p0, this.p1, t);\n }\n throw new Error('defined为false的点不能getPointAt');\n }\n\n getAngleAt(t: number): number {\n if (this.angle == null) {\n this.angle = atan2(this.p1.y - this.p0.y, this.p1.x - this.p0.x);\n }\n return this.angle;\n }\n\n protected _validPoint() {\n return Number.isFinite(this.p0.x + this.p0.y + this.p1.x + this.p1.y);\n }\n\n protected calcLength(): number {\n if (this._validPoint()) {\n return PointService.distancePP(this.p0, this.p1);\n }\n // TODO 默认长度不好给,只能给个差不多的长度\n return 60;\n }\n\n protected calcProjLength(direction: IDirection): number {\n if (direction === Direction.ROW) {\n return abs(this.p0.x - this.p1.x);\n } else if (direction === Direction.COLUMN) {\n return abs(this.p0.y - this.p1.y);\n }\n return 0;\n }\n}\n"]}
1
+ {"version":3,"sources":["../src/common/segment/curve/line.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,GAAG,EAAE,KAAK,EAAE,YAAY,EAAE,MAAM,kBAAkB,CAAC;AAE5D,OAAO,EAAE,KAAK,EAAE,MAAM,QAAQ,CAAC;AAC/B,OAAO,EAAE,aAAa,EAAE,SAAS,EAAE,MAAM,aAAa,CAAC;AAEvD,MAAM,UAAU,YAAY,CAAC,KAAiB,EAAE,CAAS;IACvD,MAAM,EAAE,EAAE,EAAE,EAAE,EAAE,GAAG,KAAK,CAAC;IAGzB,MAAM,EAAE,GAAG,YAAY,CAAC,SAAS,CAAC,EAAE,EAAE,EAAE,EAAE,CAAC,CAAC,CAAC;IAG7C,MAAM,MAAM,GAAG,IAAI,SAAS,CAAC,EAAE,EAAE,EAAE,CAAC,CAAC;IACrC,MAAM,MAAM,GAAG,IAAI,SAAS,CAAC,EAAE,EAAE,EAAE,CAAC,CAAC;IAErC,OAAO,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;AAC1B,CAAC;AAED,MAAM,OAAO,SAAU,SAAQ,KAAK;IAClC,IAAI,GAAW,aAAa,CAAC,SAAS,CAAC;IAMvC,YAAY,EAAU,EAAE,EAAU;QAChC,KAAK,EAAE,CAAC;QACR,IAAI,CAAC,EAAE,GAAG,EAAE,CAAC;QACb,IAAI,CAAC,EAAE,GAAG,EAAE,CAAC;IACf,CAAC;IACD,UAAU,CAAC,CAAS;QAClB,IAAI,IAAI,CAAC,OAAO,KAAK,KAAK,EAAE;YAC1B,OAAO,YAAY,CAAC,SAAS,CAAC,IAAI,CAAC,EAAE,EAAE,IAAI,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC;SACpD;QACD,MAAM,IAAI,KAAK,CAAC,6BAA6B,CAAC,CAAC;IACjD,CAAC;IAED,UAAU,CAAC,CAAS;QAClB,IAAI,IAAI,CAAC,KAAK,IAAI,IAAI,EAAE;YACtB,IAAI,CAAC,KAAK,GAAG,KAAK,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,GAAG,IAAI,CAAC,EAAE,CAAC,CAAC,EAAE,IAAI,CAAC,EAAE,CAAC,CAAC,GAAG,IAAI,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC;SAClE;QACD,OAAO,IAAI,CAAC,KAAK,CAAC;IACpB,CAAC;IAES,WAAW;QACnB,OAAO,MAAM,CAAC,QAAQ,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,GAAG,IAAI,CAAC,EAAE,CAAC,CAAC,GAAG,IAAI,CAAC,EAAE,CAAC,CAAC,GAAG,IAAI,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC;IACxE,CAAC;IAES,UAAU;QAClB,IAAI,IAAI,CAAC,WAAW,EAAE,EAAE;YACtB,OAAO,YAAY,CAAC,UAAU,CAAC,IAAI,CAAC,EAAE,EAAE,IAAI,CAAC,EAAE,CAAC,CAAC;SAClD;QAED,OAAO,EAAE,CAAC;IACZ,CAAC;IAES,cAAc,CAAC,SAAqB;QAC5C,IAAI,SAAS,KAAK,SAAS,CAAC,GAAG,EAAE;YAC/B,OAAO,GAAG,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,GAAG,IAAI,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC;SACnC;aAAM,IAAI,SAAS,KAAK,SAAS,CAAC,MAAM,EAAE;YACzC,OAAO,GAAG,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,GAAG,IAAI,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC;SACnC;QACD,OAAO,CAAC,CAAC;IACX,CAAC;CACF","file":"line.js","sourcesContent":["import type { IPoint, IPointLike } from '@visactor/vutils';\nimport { abs, atan2, PointService } from '@visactor/vutils';\nimport type { ILineCurve, IDirection } from '../../../interface';\nimport { Curve } from './base';\nimport { CurveTypeEnum, Direction } from '../../enums';\n\nexport function divideLinear(curve: ILineCurve, t: number): ILineCurve[] {\n const { p0, p1 } = curve;\n\n // 计算两点之间的差值点\n const c1 = PointService.pointAtPP(p0, p1, t);\n // const direction = p1.x1 ? p1.y > p0.y ? 0 : 1 : p1.x > p0.x ? 0 : 1;\n\n const curve1 = new LineCurve(p0, c1);\n const curve2 = new LineCurve(c1, p1);\n\n return [curve1, curve2];\n}\n\nexport class LineCurve extends Curve implements ILineCurve {\n type: number = CurveTypeEnum.LineCurve;\n declare originP1?: IPointLike;\n declare originP2?: IPointLike;\n declare p0: IPoint;\n declare p1: IPoint;\n declare angle: number;\n constructor(p0: IPoint, p1: IPoint) {\n super();\n this.p0 = p0;\n this.p1 = p1;\n }\n getPointAt(t: number): IPointLike {\n if (this.defined !== false) {\n return PointService.pointAtPP(this.p0, this.p1, t);\n }\n throw new Error('defined为false的点不能getPointAt');\n }\n\n getAngleAt(t: number): number {\n if (this.angle == null) {\n this.angle = atan2(this.p1.y - this.p0.y, this.p1.x - this.p0.x);\n }\n return this.angle;\n }\n\n protected _validPoint() {\n return Number.isFinite(this.p0.x + this.p0.y + this.p1.x + this.p1.y);\n }\n\n protected calcLength(): number {\n if (this._validPoint()) {\n return PointService.distancePP(this.p0, this.p1);\n }\n // TODO 默认长度不好给,只能给个差不多的长度\n return 60;\n }\n\n protected calcProjLength(direction: IDirection): number {\n if (direction === Direction.ROW) {\n return abs(this.p0.x - this.p1.x);\n } else if (direction === Direction.COLUMN) {\n return abs(this.p0.y - this.p1.y);\n }\n return 0;\n }\n}\n"]}
@@ -3,8 +3,9 @@ import { Curve } from "./base";
3
3
  import { CurveTypeEnum } from "../../enums";
4
4
 
5
5
  export class MoveCurve extends Curve {
6
+ type=CurveTypeEnum.MoveCurve;
6
7
  constructor(p0, p1) {
7
- super(), this.type = CurveTypeEnum.MoveCurve, this.p0 = p0, this.p1 = p1;
8
+ super(), this.p0 = p0, this.p1 = p1;
8
9
  }
9
10
  getAngleAt(t) {
10
11
  throw new Error("ArcCurve暂不支持getAngleAt");
@@ -1 +1 @@
1
- {"version":3,"sources":["../src/common/segment/curve/move.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,KAAK,EAAE,MAAM,QAAQ,CAAC;AAC/B,OAAO,EAAE,aAAa,EAAE,MAAM,aAAa,CAAC;AAE5C,MAAM,OAAO,SAAU,SAAQ,KAAK;IAIlC,YAAY,EAAU,EAAE,EAAU;QAChC,KAAK,EAAE,CAAC;QAJV,SAAI,GAAW,aAAa,CAAC,SAAS,CAAC;QAKrC,IAAI,CAAC,EAAE,GAAG,EAAE,CAAC;QACb,IAAI,CAAC,EAAE,GAAG,EAAE,CAAC;IACf,CAAC;IACD,UAAU,CAAC,CAAS;QAClB,MAAM,IAAI,KAAK,CAAC,wBAAwB,CAAC,CAAC;IAC5C,CAAC;IACD,UAAU,CAAC,CAAS;QAClB,MAAM,IAAI,KAAK,CAAC,yBAAyB,CAAC,CAAC;IAC7C,CAAC;IACS,UAAU;QAClB,MAAM,IAAI,KAAK,CAAC,2BAA2B,CAAC,CAAC;IAC/C,CAAC;IACS,cAAc,CAAC,SAAqB;QAC5C,MAAM,IAAI,KAAK,CAAC,sCAAsC,CAAC,CAAC;IAC1D,CAAC;CACF","file":"move.js","sourcesContent":["import type { IPoint, IPointLike } from '@visactor/vutils';\nimport type { IMoveCurve, IDirection } from '../../../interface';\nimport { Curve } from './base';\nimport { CurveTypeEnum } from '../../enums';\n\nexport class MoveCurve extends Curve implements IMoveCurve {\n type: number = CurveTypeEnum.MoveCurve;\n declare p0: IPoint;\n declare p1: IPoint;\n constructor(p0: IPoint, p1: IPoint) {\n super();\n this.p0 = p0;\n this.p1 = p1;\n }\n getAngleAt(t: number): number {\n throw new Error('ArcCurve暂不支持getAngleAt');\n }\n getPointAt(t: number): IPointLike {\n throw new Error('MoveCurve暂不支持getPointAt');\n }\n protected calcLength(): number {\n throw new Error('MoveCurve暂不支持updateLength');\n }\n protected calcProjLength(direction: IDirection): number {\n throw new Error('QuadraticBezierCurve暂不支持updateLength');\n }\n}\n"]}
1
+ {"version":3,"sources":["../src/common/segment/curve/move.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,KAAK,EAAE,MAAM,QAAQ,CAAC;AAC/B,OAAO,EAAE,aAAa,EAAE,MAAM,aAAa,CAAC;AAE5C,MAAM,OAAO,SAAU,SAAQ,KAAK;IAClC,IAAI,GAAW,aAAa,CAAC,SAAS,CAAC;IAGvC,YAAY,EAAU,EAAE,EAAU;QAChC,KAAK,EAAE,CAAC;QACR,IAAI,CAAC,EAAE,GAAG,EAAE,CAAC;QACb,IAAI,CAAC,EAAE,GAAG,EAAE,CAAC;IACf,CAAC;IACD,UAAU,CAAC,CAAS;QAClB,MAAM,IAAI,KAAK,CAAC,wBAAwB,CAAC,CAAC;IAC5C,CAAC;IACD,UAAU,CAAC,CAAS;QAClB,MAAM,IAAI,KAAK,CAAC,yBAAyB,CAAC,CAAC;IAC7C,CAAC;IACS,UAAU;QAClB,MAAM,IAAI,KAAK,CAAC,2BAA2B,CAAC,CAAC;IAC/C,CAAC;IACS,cAAc,CAAC,SAAqB;QAC5C,MAAM,IAAI,KAAK,CAAC,sCAAsC,CAAC,CAAC;IAC1D,CAAC;CACF","file":"move.js","sourcesContent":["import type { IPoint, IPointLike } from '@visactor/vutils';\nimport type { IMoveCurve, IDirection } from '../../../interface';\nimport { Curve } from './base';\nimport { CurveTypeEnum } from '../../enums';\n\nexport class MoveCurve extends Curve implements IMoveCurve {\n type: number = CurveTypeEnum.MoveCurve;\n declare p0: IPoint;\n declare p1: IPoint;\n constructor(p0: IPoint, p1: IPoint) {\n super();\n this.p0 = p0;\n this.p1 = p1;\n }\n getAngleAt(t: number): number {\n throw new Error('ArcCurve暂不支持getAngleAt');\n }\n getPointAt(t: number): IPointLike {\n throw new Error('MoveCurve暂不支持getPointAt');\n }\n protected calcLength(): number {\n throw new Error('MoveCurve暂不支持updateLength');\n }\n protected calcProjLength(direction: IDirection): number {\n throw new Error('QuadraticBezierCurve暂不支持updateLength');\n }\n}\n"]}
@@ -1,6 +1,8 @@
1
1
  import { AABBBounds } from "@visactor/vutils";
2
2
 
3
3
  export class CurvePath {
4
+ curves;
5
+ bounds;
4
6
  constructor() {
5
7
  this.curves = [], this.bounds = new AABBBounds;
6
8
  }
@@ -1 +1 @@
1
- {"version":3,"sources":["../src/common/segment/curve/path.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,UAAU,EAAE,MAAM,kBAAkB,CAAC;AAG9C,MAAM,OAAO,SAAS;IAGpB;QACE,IAAI,CAAC,MAAM,GAAG,EAAE,CAAC;QACjB,IAAI,CAAC,MAAM,GAAG,IAAI,UAAU,EAAE,CAAC;IACjC,CAAC;IACD,eAAe;QACb,OAAO,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,KAAK,CAAC,EAAE,CAAC,KAAK,CAAC,SAAS,EAAE,CAAC,CAAC;IACrD,CAAC;IACD,UAAU,CAAC,CAAS;QAClB,OAAO,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC;IACxB,CAAC;IACD,SAAS;QACP,OAAO,CAAC,CAAC;IACX,CAAC;IACD,SAAS;QACP,OAAO,IAAI,CAAC,MAAM,CAAC;IACrB,CAAC;CACF","file":"path.js","sourcesContent":["import type { IAABBBounds, IPoint, IPointLike } from '@visactor/vutils';\nimport { AABBBounds } from '@visactor/vutils';\nimport type { ICurvePath, ICurve } from '../../../interface';\n\nexport class CurvePath implements ICurvePath<IPoint> {\n curves: ICurve<IPoint>[];\n bounds: IAABBBounds;\n constructor() {\n this.curves = [];\n this.bounds = new AABBBounds();\n }\n getCurveLengths(): number[] {\n return this.curves.map(curve => curve.getLength());\n }\n getPointAt(t: number): IPointLike {\n return { x: 0, y: 0 };\n }\n getLength(): number {\n return 0;\n }\n getBounds() {\n return this.bounds;\n }\n}\n"]}
1
+ {"version":3,"sources":["../src/common/segment/curve/path.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,UAAU,EAAE,MAAM,kBAAkB,CAAC;AAG9C,MAAM,OAAO,SAAS;IACpB,MAAM,CAAmB;IACzB,MAAM,CAAc;IACpB;QACE,IAAI,CAAC,MAAM,GAAG,EAAE,CAAC;QACjB,IAAI,CAAC,MAAM,GAAG,IAAI,UAAU,EAAE,CAAC;IACjC,CAAC;IACD,eAAe;QACb,OAAO,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,KAAK,CAAC,EAAE,CAAC,KAAK,CAAC,SAAS,EAAE,CAAC,CAAC;IACrD,CAAC;IACD,UAAU,CAAC,CAAS;QAClB,OAAO,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC;IACxB,CAAC;IACD,SAAS;QACP,OAAO,CAAC,CAAC;IACX,CAAC;IACD,SAAS;QACP,OAAO,IAAI,CAAC,MAAM,CAAC;IACrB,CAAC;CACF","file":"path.js","sourcesContent":["import type { IAABBBounds, IPoint, IPointLike } from '@visactor/vutils';\nimport { AABBBounds } from '@visactor/vutils';\nimport type { ICurvePath, ICurve } from '../../../interface';\n\nexport class CurvePath implements ICurvePath<IPoint> {\n curves: ICurve<IPoint>[];\n bounds: IAABBBounds;\n constructor() {\n this.curves = [];\n this.bounds = new AABBBounds();\n }\n getCurveLengths(): number[] {\n return this.curves.map(curve => curve.getLength());\n }\n getPointAt(t: number): IPointLike {\n return { x: 0, y: 0 };\n }\n getLength(): number {\n return 0;\n }\n getBounds() {\n return this.bounds;\n }\n}\n"]}
@@ -3,9 +3,9 @@ import { CurveTypeEnum } from "src/common/enums";
3
3
  import { Curve } from "./base";
4
4
 
5
5
  export class QuadraticBezierCurve extends Curve {
6
+ type=CurveTypeEnum.QuadraticBezierCurve;
6
7
  constructor(p0, p1, p2) {
7
- super(), this.type = CurveTypeEnum.QuadraticBezierCurve, this.p0 = p0, this.p1 = p1,
8
- this.p2 = p2;
8
+ super(), this.p0 = p0, this.p1 = p1, this.p2 = p2;
9
9
  }
10
10
  getPointAt(t) {
11
11
  throw new Error("QuadraticBezierCurve暂不支持getPointAt");
@@ -1 +1 @@
1
- {"version":3,"sources":["../src/common/segment/curve/quadratic-bezier.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,aAAa,EAAE,MAAM,kBAAkB,CAAC;AAEjD,OAAO,EAAE,KAAK,EAAE,MAAM,QAAQ,CAAC;AAG/B,MAAM,OAAO,oBAAqB,SAAQ,KAAK;IAQ7C,YAAY,EAAU,EAAE,EAAU,EAAE,EAAU;QAC5C,KAAK,EAAE,CAAC;QARV,SAAI,GAAW,aAAa,CAAC,oBAAoB,CAAC;QAShD,IAAI,CAAC,EAAE,GAAG,EAAE,CAAC;QACb,IAAI,CAAC,EAAE,GAAG,EAAE,CAAC;QACb,IAAI,CAAC,EAAE,GAAG,EAAE,CAAC;IACf,CAAC;IACD,UAAU,CAAC,CAAS;QAClB,MAAM,IAAI,KAAK,CAAC,oCAAoC,CAAC,CAAC;IACxD,CAAC;IACS,UAAU;QAClB,MAAM,IAAI,KAAK,CAAC,sCAAsC,CAAC,CAAC;IAC1D,CAAC;IACS,cAAc,CAAC,SAAqB;QAC5C,MAAM,IAAI,KAAK,CAAC,sCAAsC,CAAC,CAAC;IAC1D,CAAC;IACD,UAAU,CAAC,CAAS;QAClB,MAAM,IAAI,KAAK,CAAC,wBAAwB,CAAC,CAAC;IAC5C,CAAC;CACF","file":"quadratic-bezier.js","sourcesContent":["import { CurveTypeEnum } from 'src/common/enums';\nimport type { IDirection, IQuadraticBezierCurve } from '../../../interface';\nimport { Curve } from './base';\nimport type { IPoint, IPointLike } from '@visactor/vutils';\n\nexport class QuadraticBezierCurve extends Curve implements IQuadraticBezierCurve {\n type: number = CurveTypeEnum.QuadraticBezierCurve;\n declare originP1?: IPointLike;\n declare originP2?: IPointLike;\n\n declare readonly p0: IPoint;\n declare readonly p1: IPoint;\n declare readonly p2: IPoint;\n constructor(p0: IPoint, p1: IPoint, p2: IPoint) {\n super();\n this.p0 = p0;\n this.p1 = p1;\n this.p2 = p2;\n }\n getPointAt(t: number): IPointLike {\n throw new Error('QuadraticBezierCurve暂不支持getPointAt');\n }\n protected calcLength(): number {\n throw new Error('QuadraticBezierCurve暂不支持updateLength');\n }\n protected calcProjLength(direction: IDirection): number {\n throw new Error('QuadraticBezierCurve暂不支持updateLength');\n }\n getAngleAt(t: number): number {\n throw new Error('ArcCurve暂不支持getAngleAt');\n }\n}\n"]}
1
+ {"version":3,"sources":["../src/common/segment/curve/quadratic-bezier.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,aAAa,EAAE,MAAM,kBAAkB,CAAC;AAEjD,OAAO,EAAE,KAAK,EAAE,MAAM,QAAQ,CAAC;AAG/B,MAAM,OAAO,oBAAqB,SAAQ,KAAK;IAC7C,IAAI,GAAW,aAAa,CAAC,oBAAoB,CAAC;IAOlD,YAAY,EAAU,EAAE,EAAU,EAAE,EAAU;QAC5C,KAAK,EAAE,CAAC;QACR,IAAI,CAAC,EAAE,GAAG,EAAE,CAAC;QACb,IAAI,CAAC,EAAE,GAAG,EAAE,CAAC;QACb,IAAI,CAAC,EAAE,GAAG,EAAE,CAAC;IACf,CAAC;IACD,UAAU,CAAC,CAAS;QAClB,MAAM,IAAI,KAAK,CAAC,oCAAoC,CAAC,CAAC;IACxD,CAAC;IACS,UAAU;QAClB,MAAM,IAAI,KAAK,CAAC,sCAAsC,CAAC,CAAC;IAC1D,CAAC;IACS,cAAc,CAAC,SAAqB;QAC5C,MAAM,IAAI,KAAK,CAAC,sCAAsC,CAAC,CAAC;IAC1D,CAAC;IACD,UAAU,CAAC,CAAS;QAClB,MAAM,IAAI,KAAK,CAAC,wBAAwB,CAAC,CAAC;IAC5C,CAAC;CACF","file":"quadratic-bezier.js","sourcesContent":["import { CurveTypeEnum } from 'src/common/enums';\nimport type { IDirection, IQuadraticBezierCurve } from '../../../interface';\nimport { Curve } from './base';\nimport type { IPoint, IPointLike } from '@visactor/vutils';\n\nexport class QuadraticBezierCurve extends Curve implements IQuadraticBezierCurve {\n type: number = CurveTypeEnum.QuadraticBezierCurve;\n declare originP1?: IPointLike;\n declare originP2?: IPointLike;\n\n declare readonly p0: IPoint;\n declare readonly p1: IPoint;\n declare readonly p2: IPoint;\n constructor(p0: IPoint, p1: IPoint, p2: IPoint) {\n super();\n this.p0 = p0;\n this.p1 = p1;\n this.p2 = p2;\n }\n getPointAt(t: number): IPointLike {\n throw new Error('QuadraticBezierCurve暂不支持getPointAt');\n }\n protected calcLength(): number {\n throw new Error('QuadraticBezierCurve暂不支持updateLength');\n }\n protected calcProjLength(direction: IDirection): number {\n throw new Error('QuadraticBezierCurve暂不支持updateLength');\n }\n getAngleAt(t: number): number {\n throw new Error('ArcCurve暂不支持getAngleAt');\n }\n}\n"]}
@@ -1 +1 @@
1
- {"version":3,"sources":["../src/common/segment/linear-closed.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,gBAAgB,EAAE,aAAa,EAAE,MAAM,UAAU,CAAC;AAE3D,OAAO,EAAE,MAAM,EAAE,MAAM,UAAU,CAAC;AAqBlC,MAAM,OAAO,YAAa,SAAQ,MAAM;IAKtC,OAAO;QACL,IAAI,CAAC,OAAO,CAAC,SAAS,EAAE,CAAC;IAC3B,CAAC;CACF;AAED,MAAM,UAAU,uBAAuB,CAAC,MAAoB,EAAE,SAA4B,EAAE;IAC1F,MAAM,EAAE,SAAS,EAAE,UAAU,EAAE,GAAG,MAAM,CAAC;IACzC,IAAI,MAAM,CAAC,MAAM,GAAG,CAAC,GAAG,MAAM,CAAC,CAAC,CAAC,UAAU,CAAC,EAAE;QAC5C,OAAO,IAAI,CAAC;KACb;IAED,MAAM,UAAU,GAAG,aAAa,CAAC,QAAQ,EAAE,SAAS,EAAE,MAAM,CAAC,CAAC;IAE9D,MAAM,MAAM,GAAG,IAAI,YAAY,CAAC,UAAU,EAAE,UAAU,CAAC,CAAC;IAExD,2BAA2B,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IAE5C,OAAO,UAAU,CAAC;AACpB,CAAC;AAED,MAAM,UAAU,2BAA2B,CAAC,IAAoB,EAAE,MAAoB;IACpF,OAAO,gBAAgB,CAAC,IAAI,EAAE,MAAM,EAAE,CAAC,CAAC,CAAC;AAC3C,CAAC","file":"linear-closed.js","sourcesContent":["import type { IPointLike } from '@visactor/vutils';\nimport { genCurveSegments, genSegContext } from './common';\nimport type { IGenSegmentParams, ILinearSegment, ISegPath2D } from '../../interface/curve';\nimport { Linear } from './linear';\n\n/**\n * 部分源码参考 https://github.com/d3/d3-shape/\n * Copyright 2010-2022 Mike Bostock\n\n Permission to use, copy, modify, and/or distribute this software for any purpose\n with or without fee is hereby granted, provided that the above copyright notice\n and this permission notice appear in all copies.\n\n THE SOFTWARE IS PROVIDED \"AS IS\" AND THE AUTHOR DISCLAIMS ALL WARRANTIES WITH\n REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND\n FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT,\n INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS\n OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER\n TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF\n THIS SOFTWARE.\n */\n\n// 基于d3-shape重构,定义绘制线段的方法\n// https://github.com/d3/d3-shape/blob/main/src/curve/linear.js\nexport class LinearClosed extends Linear implements ILinearSegment {\n declare context: ISegPath2D;\n\n protected startPoint?: IPointLike;\n\n lineEnd() {\n this.context.closePath();\n }\n}\n\nexport function genLinearClosedSegments(points: IPointLike[], params: IGenSegmentParams = {}): ISegPath2D | null {\n const { direction, startPoint } = params;\n if (points.length < 2 - Number(!!startPoint)) {\n return null;\n }\n\n const segContext = genSegContext('linear', direction, points);\n\n const linear = new LinearClosed(segContext, startPoint);\n\n genLinearClosedTypeSegments(linear, points);\n\n return segContext;\n}\n\nexport function genLinearClosedTypeSegments(path: ILinearSegment, points: IPointLike[]): void {\n return genCurveSegments(path, points, 1);\n}\n"]}
1
+ {"version":3,"sources":["../src/common/segment/linear-closed.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,gBAAgB,EAAE,aAAa,EAAE,MAAM,UAAU,CAAC;AAE3D,OAAO,EAAE,MAAM,EAAE,MAAM,UAAU,CAAC;AAqBlC,MAAM,OAAO,YAAa,SAAQ,MAAM;IAKtC,OAAO;QACL,IAAI,CAAC,OAAO,CAAC,SAAS,EAAE,CAAC;IAC3B,CAAC;CACF;AAED,MAAM,UAAU,uBAAuB,CAAC,MAAoB,EAAE,SAA4B,EAAE;IAC1F,MAAM,EAAE,SAAS,EAAE,UAAU,EAAE,GAAG,MAAM,CAAC;IACzC,IAAI,MAAM,CAAC,MAAM,GAAG,CAAC,GAAG,MAAM,CAAC,CAAC,CAAC,UAAU,CAAC,EAAE;QAC5C,OAAO,IAAI,CAAC;KACb;IAED,MAAM,UAAU,GAAG,aAAa,CAAC,QAAQ,EAAE,SAAS,EAAE,MAAM,CAAC,CAAC;IAE9D,MAAM,MAAM,GAAG,IAAI,YAAY,CAAC,UAAU,EAAE,UAAU,CAAC,CAAC;IAExD,2BAA2B,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IAE5C,OAAO,UAAU,CAAC;AACpB,CAAC;AAED,MAAM,UAAU,2BAA2B,CAAC,IAAoB,EAAE,MAAoB;IACpF,OAAO,gBAAgB,CAAC,IAAI,EAAE,MAAM,EAAE,CAAC,CAAC,CAAC;AAC3C,CAAC","file":"linear-closed.js","sourcesContent":["import type { IPointLike } from '@visactor/vutils';\nimport { genCurveSegments, genSegContext } from './common';\nimport type { IGenSegmentParams, ILinearSegment, ISegPath2D } from '../../interface/curve';\nimport { Linear } from './linear';\n\n/**\n * 部分源码参考 https://github.com/d3/d3-shape/\n * Copyright 2010-2022 Mike Bostock\n\n Permission to use, copy, modify, and/or distribute this software for any purpose\n with or without fee is hereby granted, provided that the above copyright notice\n and this permission notice appear in all copies.\n\n THE SOFTWARE IS PROVIDED \"AS IS\" AND THE AUTHOR DISCLAIMS ALL WARRANTIES WITH\n REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND\n FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT,\n INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS\n OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER\n TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF\n THIS SOFTWARE.\n */\n\n// 基于d3-shape重构,定义绘制线段的方法\n// https://github.com/d3/d3-shape/blob/main/src/curve/linear.js\nexport class LinearClosed extends Linear implements ILinearSegment {\n declare context: ISegPath2D;\n\n protected declare startPoint?: IPointLike;\n\n lineEnd() {\n this.context.closePath();\n }\n}\n\nexport function genLinearClosedSegments(points: IPointLike[], params: IGenSegmentParams = {}): ISegPath2D | null {\n const { direction, startPoint } = params;\n if (points.length < 2 - Number(!!startPoint)) {\n return null;\n }\n\n const segContext = genSegContext('linear', direction, points);\n\n const linear = new LinearClosed(segContext, startPoint);\n\n genLinearClosedTypeSegments(linear, points);\n\n return segContext;\n}\n\nexport function genLinearClosedTypeSegments(path: ILinearSegment, points: IPointLike[]): void {\n return genCurveSegments(path, points, 1);\n}\n"]}
@@ -1,9 +1,19 @@
1
1
  import { genCurveSegments, genSegContext } from "./common";
2
2
 
3
3
  export class Linear {
4
+ _lastDefined;
5
+ startPoint;
4
6
  constructor(context, startPoint) {
5
7
  this.context = context, startPoint && (this.startPoint = startPoint);
6
8
  }
9
+ _x;
10
+ _y;
11
+ _x0;
12
+ _x1;
13
+ _y0;
14
+ _y1;
15
+ _line;
16
+ _point;
7
17
  areaStart() {
8
18
  this._line = 0;
9
19
  }
@@ -1 +1 @@
1
- {"version":3,"sources":["../src/common/segment/linear.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,gBAAgB,EAAE,aAAa,EAAE,MAAM,UAAU,CAAC;AAsB3D,MAAM,OAAO,MAAM;IAMjB,YAAY,OAAmB,EAAE,UAAuB;QACtD,IAAI,CAAC,OAAO,GAAG,OAAO,CAAC;QACvB,UAAU,IAAI,CAAC,IAAI,CAAC,UAAU,GAAG,UAAU,CAAC,CAAC;IAC/C,CAAC;IAUD,SAAS;QACP,IAAI,CAAC,KAAK,GAAG,CAAC,CAAC;IACjB,CAAC;IACD,OAAO;QACL,IAAI,CAAC,KAAK,GAAG,GAAG,CAAC;IACnB,CAAC;IACD,SAAS;QACP,IAAI,CAAC,MAAM,GAAG,CAAC,CAAC;QAChB,IAAI,CAAC,UAAU,IAAI,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC;IACjD,CAAC;IACD,OAAO;QACL,IAAI,IAAI,CAAC,KAAK,IAAI,CAAC,IAAI,CAAC,KAAK,KAAK,CAAC,IAAI,IAAI,CAAC,MAAM,KAAK,CAAC,CAAC,EAAE;YACzD,IAAI,CAAC,OAAO,CAAC,SAAS,EAAE,CAAC;SAC1B;QACD,IAAI,CAAC,KAAK,GAAG,CAAC,GAAG,IAAI,CAAC,KAAK,CAAC;IAC9B,CAAC;IACD,KAAK,CAAC,CAAa;QACjB,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC;QACd,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC;QACd,QAAQ,IAAI,CAAC,MAAM,EAAE;YACnB,KAAK,CAAC;gBACJ,IAAI,CAAC,MAAM,GAAG,CAAC,CAAC;gBAChB,IAAI,CAAC,KAAK;oBACR,CAAC,CAAC,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC,EAAE,CAAC,EAAE,IAAI,CAAC,YAAY,KAAK,KAAK,IAAI,CAAC,CAAC,OAAO,KAAK,KAAK,EAAE,CAAC,CAAC;oBAClF,CAAC,CAAC,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC;gBACjC,MAAM;YACR,KAAK,CAAC;gBACJ,IAAI,CAAC,MAAM,GAAG,CAAC,CAAC;YAClB;gBACE,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC,EAAE,CAAC,EAAE,IAAI,CAAC,YAAY,KAAK,KAAK,IAAI,CAAC,CAAC,OAAO,KAAK,KAAK,EAAE,CAAC,CAAC,CAAC;gBACjF,MAAM;SACT;QAED,IAAI,CAAC,YAAY,GAAG,CAAC,CAAC,OAAO,CAAC;IAChC,CAAC;IAED,eAAe;QACb,OAAO,IAAI,CAAC,OAAO,CAAC,eAAe,EAAE,CAAC;IACxC,CAAC;CACF;AAED,MAAM,UAAU,iBAAiB,CAAC,MAAoB,EAAE,SAA4B,EAAE;IACpF,MAAM,EAAE,SAAS,EAAE,UAAU,EAAE,GAAG,MAAM,CAAC;IACzC,IAAI,MAAM,CAAC,MAAM,GAAG,CAAC,GAAG,MAAM,CAAC,CAAC,CAAC,UAAU,CAAC,EAAE;QAC5C,OAAO,IAAI,CAAC;KACb;IAED,MAAM,UAAU,GAAG,aAAa,CAAC,QAAQ,EAAE,SAAS,EAAE,MAAM,CAAC,CAAC;IAE9D,MAAM,MAAM,GAAG,IAAI,MAAM,CAAC,UAAU,EAAE,UAAU,CAAC,CAAC;IAElD,qBAAqB,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IAEtC,OAAO,UAAU,CAAC;AACpB,CAAC;AAED,MAAM,UAAU,qBAAqB,CAAC,IAAoB,EAAE,MAAoB;IAC9E,OAAO,gBAAgB,CAAC,IAAI,EAAE,MAAM,EAAE,CAAC,CAAC,CAAC;AAC3C,CAAC","file":"linear.js","sourcesContent":["import type { IPointLike } from '@visactor/vutils';\nimport { genCurveSegments, genSegContext } from './common';\nimport type { IGenSegmentParams, ILinearSegment, ISegPath2D } from '../../interface/curve';\n\n/**\n * 部分源码参考 https://github.com/d3/d3-shape/\n * Copyright 2010-2022 Mike Bostock\n\n Permission to use, copy, modify, and/or distribute this software for any purpose\n with or without fee is hereby granted, provided that the above copyright notice\n and this permission notice appear in all copies.\n\n THE SOFTWARE IS PROVIDED \"AS IS\" AND THE AUTHOR DISCLAIMS ALL WARRANTIES WITH\n REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND\n FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT,\n INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS\n OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER\n TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF\n THIS SOFTWARE.\n */\n\n// 基于d3-shape重构,定义绘制线段的方法\n// https://github.com/d3/d3-shape/blob/main/src/curve/linear.js\nexport class Linear implements ILinearSegment {\n declare context: ISegPath2D;\n protected _lastDefined?: boolean;\n\n protected startPoint?: IPointLike;\n\n constructor(context: ISegPath2D, startPoint?: IPointLike) {\n this.context = context;\n startPoint && (this.startPoint = startPoint);\n }\n _x: number;\n _y: number;\n _x0: number;\n _x1: number;\n _y0: number;\n _y1: number;\n _line: number;\n _point: number;\n\n areaStart() {\n this._line = 0;\n }\n areaEnd() {\n this._line = NaN;\n }\n lineStart() {\n this._point = 0;\n this.startPoint && this.point(this.startPoint);\n }\n lineEnd() {\n if (this._line || (this._line !== 0 && this._point === 1)) {\n this.context.closePath();\n }\n this._line = 1 - this._line;\n }\n point(p: IPointLike): void {\n const x = p.x;\n const y = p.y;\n switch (this._point) {\n case 0:\n this._point = 1;\n this._line\n ? this.context.lineTo(x, y, this._lastDefined !== false && p.defined !== false, p)\n : this.context.moveTo(x, y, p);\n break;\n case 1:\n this._point = 2; // falls through\n default:\n this.context.lineTo(x, y, this._lastDefined !== false && p.defined !== false, p);\n break;\n }\n\n this._lastDefined = p.defined;\n }\n\n tryUpdateLength(): number {\n return this.context.tryUpdateLength();\n }\n}\n\nexport function genLinearSegments(points: IPointLike[], params: IGenSegmentParams = {}): ISegPath2D | null {\n const { direction, startPoint } = params;\n if (points.length < 2 - Number(!!startPoint)) {\n return null;\n }\n\n const segContext = genSegContext('linear', direction, points);\n\n const linear = new Linear(segContext, startPoint);\n\n genLinearTypeSegments(linear, points);\n\n return segContext;\n}\n\nexport function genLinearTypeSegments(path: ILinearSegment, points: IPointLike[]): void {\n return genCurveSegments(path, points, 1);\n}\n"]}
1
+ {"version":3,"sources":["../src/common/segment/linear.ts"],"names":[],"mappings":"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","file":"linear.js","sourcesContent":["import type { IPointLike } from '@visactor/vutils';\nimport { genCurveSegments, genSegContext } from './common';\nimport type { IGenSegmentParams, ILinearSegment, ISegPath2D } from '../../interface/curve';\n\n/**\n * 部分源码参考 https://github.com/d3/d3-shape/\n * Copyright 2010-2022 Mike Bostock\n\n Permission to use, copy, modify, and/or distribute this software for any purpose\n with or without fee is hereby granted, provided that the above copyright notice\n and this permission notice appear in all copies.\n\n THE SOFTWARE IS PROVIDED \"AS IS\" AND THE AUTHOR DISCLAIMS ALL WARRANTIES WITH\n REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND\n FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT,\n INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS\n OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER\n TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF\n THIS SOFTWARE.\n */\n\n// 基于d3-shape重构,定义绘制线段的方法\n// https://github.com/d3/d3-shape/blob/main/src/curve/linear.js\nexport class Linear implements ILinearSegment {\n declare context: ISegPath2D;\n protected _lastDefined?: boolean;\n\n protected startPoint?: IPointLike;\n\n constructor(context: ISegPath2D, startPoint?: IPointLike) {\n this.context = context;\n startPoint && (this.startPoint = startPoint);\n }\n _x: number;\n _y: number;\n _x0: number;\n _x1: number;\n _y0: number;\n _y1: number;\n _line: number;\n _point: number;\n\n areaStart() {\n this._line = 0;\n }\n areaEnd() {\n this._line = NaN;\n }\n lineStart() {\n this._point = 0;\n this.startPoint && this.point(this.startPoint);\n }\n lineEnd() {\n if (this._line || (this._line !== 0 && this._point === 1)) {\n this.context.closePath();\n }\n this._line = 1 - this._line;\n }\n point(p: IPointLike): void {\n const x = p.x;\n const y = p.y;\n switch (this._point) {\n case 0:\n this._point = 1;\n this._line\n ? this.context.lineTo(x, y, this._lastDefined !== false && p.defined !== false, p)\n : this.context.moveTo(x, y, p);\n break;\n case 1:\n this._point = 2; // falls through\n default:\n this.context.lineTo(x, y, this._lastDefined !== false && p.defined !== false, p);\n break;\n }\n\n this._lastDefined = p.defined;\n }\n\n tryUpdateLength(): number {\n return this.context.tryUpdateLength();\n }\n}\n\nexport function genLinearSegments(points: IPointLike[], params: IGenSegmentParams = {}): ISegPath2D | null {\n const { direction, startPoint } = params;\n if (points.length < 2 - Number(!!startPoint)) {\n return null;\n }\n\n const segContext = genSegContext('linear', direction, points);\n\n const linear = new Linear(segContext, startPoint);\n\n genLinearTypeSegments(linear, points);\n\n return segContext;\n}\n\nexport function genLinearTypeSegments(path: ILinearSegment, points: IPointLike[]): void {\n return genCurveSegments(path, points, 1);\n}\n"]}
@@ -22,9 +22,22 @@ function point(curveClass, t0, t1, defined, p) {
22
22
  }
23
23
 
24
24
  export class MonotoneX {
25
+ _lastDefined1;
26
+ _lastDefined2;
27
+ startPoint;
28
+ lastPoint0;
29
+ lastPoint1;
25
30
  constructor(context, startPoint) {
26
31
  this.context = context, this.startPoint = startPoint;
27
32
  }
33
+ _x;
34
+ _y;
35
+ _x0;
36
+ _x1;
37
+ _y0;
38
+ _y1;
39
+ _line;
40
+ _point;
28
41
  areaStart() {
29
42
  this._line = 0;
30
43
  }
@@ -1 +1 @@
1
- {"version":3,"sources":["../src/common/segment/monotone.ts"],"names":[],"mappings":"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","file":"monotone.js","sourcesContent":["import type { IPointLike } from '@visactor/vutils';\nimport { genLinearSegments } from './linear';\nimport { genCurveSegments, genSegContext } from './common';\nimport type { ICurvedSegment, IGenSegmentParams, ISegPath2D } from '../../interface/curve';\n\n/**\n * 部分源码参考 https://github.com/d3/d3-shape/\n * Copyright 2010-2022 Mike Bostock\n\n Permission to use, copy, modify, and/or distribute this software for any purpose\n with or without fee is hereby granted, provided that the above copyright notice\n and this permission notice appear in all copies.\n\n THE SOFTWARE IS PROVIDED \"AS IS\" AND THE AUTHOR DISCLAIMS ALL WARRANTIES WITH\n REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND\n FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT,\n INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS\n OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER\n TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF\n THIS SOFTWARE.\n */\n\n// 基于d3-shape重构\n// https://github.com/d3/d3-shape/blob/main/src/curve/monotone.js\nfunction sign(x: number): number {\n return x < 0 ? -1 : 1;\n}\n\n// Calculate the slopes of the tangents (Hermite-type interpolation) based on\n// the following paper: Steffen, M. 1990. A Simple Method for Monotonic\n// Interpolation in One Dimension. Astronomy and Astrophysics, Vol. 239, NO.\n// NOV(II), P. 443, 1990.\nfunction slope3(curveClass: MonotoneX | MonotoneY, x2: number, y2: number) {\n const h0 = curveClass._x1 - curveClass._x0;\n const h1 = x2 - curveClass._x1;\n const s0 = (curveClass._y1 - curveClass._y0) / (h0 || Number(h1 < 0 && -0));\n const s1 = (y2 - curveClass._y1) / (h1 || Number(h0 < 0 && -0));\n const p = (s0 * h1 + s1 * h0) / (h0 + h1);\n return (sign(s0) + sign(s1)) * Math.min(Math.abs(s0), Math.abs(s1), 0.5 * Math.abs(p)) || 0;\n}\n\n// Calculate a one-sided slope.\nfunction slope2(curveClass: MonotoneX | MonotoneY, t: number) {\n const h = curveClass._x1 - curveClass._x0;\n return h ? ((3 * (curveClass._y1 - curveClass._y0)) / h - t) / 2 : t;\n}\n\n// According to https://en.wikipedia.org/wiki/Cubic_Hermite_spline#Representations\n// \"you can express cubic Hermite interpolation in terms of cubic Bézier curves\n// with respect to the four values p0, p0 + m0 / 3, p1 - m1 / 3, p1\".\nfunction point(curveClass: MonotoneX | MonotoneY, t0: number, t1: number, defined: boolean, p: IPointLike) {\n const x0 = curveClass._x0;\n const y0 = curveClass._y0;\n const x1 = curveClass._x1;\n const y1 = curveClass._y1;\n const dx = (x1 - x0) / 3;\n curveClass.context.bezierCurveTo(\n x0 + dx,\n y0 + dx * t0,\n x1 - dx,\n y1 - dx * t1,\n x1,\n y1,\n defined,\n curveClass.lastPoint1\n );\n}\n\nexport class MonotoneX implements ICurvedSegment {\n protected _lastDefined1?: boolean;\n protected _lastDefined2?: boolean;\n declare context: ISegPath2D;\n declare _t0: number;\n\n protected startPoint?: IPointLike;\n lastPoint0?: IPointLike;\n lastPoint1?: IPointLike;\n\n constructor(context: ISegPath2D, startPoint?: IPointLike) {\n this.context = context;\n this.startPoint = startPoint;\n }\n _x: number;\n _y: number;\n _x0: number;\n _x1: number;\n _y0: number;\n _y1: number;\n _line: number;\n _point: number;\n\n areaStart() {\n this._line = 0;\n }\n areaEnd() {\n this._line = NaN;\n }\n lineStart() {\n this._x0 = this._x1 = this._y0 = this._y1 = this._t0 = NaN;\n this._point = 0;\n this.startPoint && this.point(this.startPoint);\n }\n lineEnd() {\n switch (this._point) {\n case 2:\n this.context.lineTo(\n this._x1,\n this._y1,\n this._lastDefined1 !== false && this._lastDefined2 !== false,\n this.lastPoint1\n );\n break;\n case 3:\n point(\n this,\n this._t0,\n slope2(this, this._t0),\n this._lastDefined1 !== false && this._lastDefined2 !== false,\n this.lastPoint1\n );\n break;\n }\n if (this._line || (this._line !== 0 && this._point === 1)) {\n this.context.closePath();\n }\n this._line = 1 - this._line;\n }\n point(p: IPointLike): void {\n let t1 = NaN;\n const x = p.x;\n const y = p.y;\n // if (x === this._x1 && y === this._y1) {\n // return;\n // } // Ignore coincident points.\n switch (this._point) {\n case 0:\n this._point = 1;\n this._line\n ? this.context.lineTo(x, y, this._lastDefined1 !== false && this._lastDefined2 !== false, p)\n : this.context.moveTo(x, y, p);\n break;\n case 1:\n this._point = 2;\n break;\n case 2:\n this._point = 3;\n point(\n this,\n slope2(this, (t1 = slope3(this, x, y))),\n t1,\n this._lastDefined1 !== false && this._lastDefined2 !== false,\n p\n );\n break;\n default:\n point(\n this,\n this._t0,\n (t1 = slope3(this, x, y)),\n this._lastDefined1 !== false && this._lastDefined2 !== false,\n p\n );\n break;\n }\n\n (this._x0 = this._x1), (this._x1 = x);\n (this._y0 = this._y1), (this._y1 = y);\n this._t0 = t1;\n this._lastDefined1 = this._lastDefined2;\n this._lastDefined2 = p.defined !== false;\n this.lastPoint0 = this.lastPoint1;\n this.lastPoint1 = p;\n }\n\n tryUpdateLength(): number {\n return this.context.tryUpdateLength();\n }\n}\n\nexport class MonotoneY extends MonotoneX {\n declare context: ISegPath2D;\n\n protected declare startPoint?: IPointLike;\n\n constructor(context: ISegPath2D, startPoint?: IPointLike) {\n super(context, startPoint);\n }\n\n point(p: IPointLike): void {\n return super.point({ y: p.x, x: p.y, defined: p.defined } as any);\n }\n}\n\nexport function genMonotoneXTypeSegments(path: MonotoneX, points: IPointLike[]): void {\n return genCurveSegments(path, points, 2);\n}\n\nexport function genMonotoneXSegments(points: IPointLike[], params: IGenSegmentParams = {}): ISegPath2D | null {\n const { direction, startPoint } = params;\n\n if (points.length < 2 - Number(!!startPoint)) {\n return null;\n }\n if (points.length < 3 - Number(!!startPoint)) {\n return genLinearSegments(points, params);\n }\n const segContext = genSegContext('monotoneX', direction, points);\n\n const monotoneX = new MonotoneX(segContext, startPoint);\n\n genMonotoneXTypeSegments(monotoneX, points);\n\n return segContext;\n}\n\nexport function genMonotoneYTypeSegments(path: MonotoneX, points: IPointLike[]): void {\n return genCurveSegments(path, points, 2);\n}\n\nexport function genMonotoneYSegments(points: IPointLike[], params: IGenSegmentParams = {}): ISegPath2D | null {\n const { direction, startPoint } = params;\n if (points.length < 2 - Number(!!startPoint)) {\n return null;\n }\n if (points.length < 3 - Number(!!startPoint)) {\n return genLinearSegments(points, params);\n }\n const segContext = genSegContext('monotoneY', direction, points);\n const monotoneY = new MonotoneY(segContext, startPoint);\n\n genMonotoneYTypeSegments(monotoneY, points);\n\n return segContext;\n}\n"]}
1
+ {"version":3,"sources":["../src/common/segment/monotone.ts"],"names":[],"mappings":"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","file":"monotone.js","sourcesContent":["import type { IPointLike } from '@visactor/vutils';\nimport { genLinearSegments } from './linear';\nimport { genCurveSegments, genSegContext } from './common';\nimport type { ICurvedSegment, IGenSegmentParams, ISegPath2D } from '../../interface/curve';\n\n/**\n * 部分源码参考 https://github.com/d3/d3-shape/\n * Copyright 2010-2022 Mike Bostock\n\n Permission to use, copy, modify, and/or distribute this software for any purpose\n with or without fee is hereby granted, provided that the above copyright notice\n and this permission notice appear in all copies.\n\n THE SOFTWARE IS PROVIDED \"AS IS\" AND THE AUTHOR DISCLAIMS ALL WARRANTIES WITH\n REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND\n FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT,\n INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS\n OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER\n TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF\n THIS SOFTWARE.\n */\n\n// 基于d3-shape重构\n// https://github.com/d3/d3-shape/blob/main/src/curve/monotone.js\nfunction sign(x: number): number {\n return x < 0 ? -1 : 1;\n}\n\n// Calculate the slopes of the tangents (Hermite-type interpolation) based on\n// the following paper: Steffen, M. 1990. A Simple Method for Monotonic\n// Interpolation in One Dimension. Astronomy and Astrophysics, Vol. 239, NO.\n// NOV(II), P. 443, 1990.\nfunction slope3(curveClass: MonotoneX | MonotoneY, x2: number, y2: number) {\n const h0 = curveClass._x1 - curveClass._x0;\n const h1 = x2 - curveClass._x1;\n const s0 = (curveClass._y1 - curveClass._y0) / (h0 || Number(h1 < 0 && -0));\n const s1 = (y2 - curveClass._y1) / (h1 || Number(h0 < 0 && -0));\n const p = (s0 * h1 + s1 * h0) / (h0 + h1);\n return (sign(s0) + sign(s1)) * Math.min(Math.abs(s0), Math.abs(s1), 0.5 * Math.abs(p)) || 0;\n}\n\n// Calculate a one-sided slope.\nfunction slope2(curveClass: MonotoneX | MonotoneY, t: number) {\n const h = curveClass._x1 - curveClass._x0;\n return h ? ((3 * (curveClass._y1 - curveClass._y0)) / h - t) / 2 : t;\n}\n\n// According to https://en.wikipedia.org/wiki/Cubic_Hermite_spline#Representations\n// \"you can express cubic Hermite interpolation in terms of cubic Bézier curves\n// with respect to the four values p0, p0 + m0 / 3, p1 - m1 / 3, p1\".\nfunction point(curveClass: MonotoneX | MonotoneY, t0: number, t1: number, defined: boolean, p: IPointLike) {\n const x0 = curveClass._x0;\n const y0 = curveClass._y0;\n const x1 = curveClass._x1;\n const y1 = curveClass._y1;\n const dx = (x1 - x0) / 3;\n curveClass.context.bezierCurveTo(\n x0 + dx,\n y0 + dx * t0,\n x1 - dx,\n y1 - dx * t1,\n x1,\n y1,\n defined,\n curveClass.lastPoint1\n );\n}\n\nexport class MonotoneX implements ICurvedSegment {\n protected _lastDefined1?: boolean;\n protected _lastDefined2?: boolean;\n declare context: ISegPath2D;\n declare _t0: number;\n\n protected startPoint?: IPointLike;\n lastPoint0?: IPointLike;\n lastPoint1?: IPointLike;\n\n constructor(context: ISegPath2D, startPoint?: IPointLike) {\n this.context = context;\n this.startPoint = startPoint;\n }\n _x: number;\n _y: number;\n _x0: number;\n _x1: number;\n _y0: number;\n _y1: number;\n _line: number;\n _point: number;\n\n areaStart() {\n this._line = 0;\n }\n areaEnd() {\n this._line = NaN;\n }\n lineStart() {\n this._x0 = this._x1 = this._y0 = this._y1 = this._t0 = NaN;\n this._point = 0;\n this.startPoint && this.point(this.startPoint);\n }\n lineEnd() {\n switch (this._point) {\n case 2:\n this.context.lineTo(\n this._x1,\n this._y1,\n this._lastDefined1 !== false && this._lastDefined2 !== false,\n this.lastPoint1\n );\n break;\n case 3:\n point(\n this,\n this._t0,\n slope2(this, this._t0),\n this._lastDefined1 !== false && this._lastDefined2 !== false,\n this.lastPoint1\n );\n break;\n }\n if (this._line || (this._line !== 0 && this._point === 1)) {\n this.context.closePath();\n }\n this._line = 1 - this._line;\n }\n point(p: IPointLike): void {\n let t1 = NaN;\n const x = p.x;\n const y = p.y;\n // if (x === this._x1 && y === this._y1) {\n // return;\n // } // Ignore coincident points.\n switch (this._point) {\n case 0:\n this._point = 1;\n this._line\n ? this.context.lineTo(x, y, this._lastDefined1 !== false && this._lastDefined2 !== false, p)\n : this.context.moveTo(x, y, p);\n break;\n case 1:\n this._point = 2;\n break;\n case 2:\n this._point = 3;\n point(\n this,\n slope2(this, (t1 = slope3(this, x, y))),\n t1,\n this._lastDefined1 !== false && this._lastDefined2 !== false,\n p\n );\n break;\n default:\n point(\n this,\n this._t0,\n (t1 = slope3(this, x, y)),\n this._lastDefined1 !== false && this._lastDefined2 !== false,\n p\n );\n break;\n }\n\n (this._x0 = this._x1), (this._x1 = x);\n (this._y0 = this._y1), (this._y1 = y);\n this._t0 = t1;\n this._lastDefined1 = this._lastDefined2;\n this._lastDefined2 = p.defined !== false;\n this.lastPoint0 = this.lastPoint1;\n this.lastPoint1 = p;\n }\n\n tryUpdateLength(): number {\n return this.context.tryUpdateLength();\n }\n}\n\nexport class MonotoneY extends MonotoneX {\n declare context: ISegPath2D;\n\n protected declare startPoint?: IPointLike;\n\n constructor(context: ISegPath2D, startPoint?: IPointLike) {\n super(context, startPoint);\n }\n\n point(p: IPointLike): void {\n return super.point({ y: p.x, x: p.y, defined: p.defined } as any);\n }\n}\n\nexport function genMonotoneXTypeSegments(path: MonotoneX, points: IPointLike[]): void {\n return genCurveSegments(path, points, 2);\n}\n\nexport function genMonotoneXSegments(points: IPointLike[], params: IGenSegmentParams = {}): ISegPath2D | null {\n const { direction, startPoint } = params;\n\n if (points.length < 2 - Number(!!startPoint)) {\n return null;\n }\n if (points.length < 3 - Number(!!startPoint)) {\n return genLinearSegments(points, params);\n }\n const segContext = genSegContext('monotoneX', direction, points);\n\n const monotoneX = new MonotoneX(segContext, startPoint);\n\n genMonotoneXTypeSegments(monotoneX, points);\n\n return segContext;\n}\n\nexport function genMonotoneYTypeSegments(path: MonotoneX, points: IPointLike[]): void {\n return genCurveSegments(path, points, 2);\n}\n\nexport function genMonotoneYSegments(points: IPointLike[], params: IGenSegmentParams = {}): ISegPath2D | null {\n const { direction, startPoint } = params;\n if (points.length < 2 - Number(!!startPoint)) {\n return null;\n }\n if (points.length < 3 - Number(!!startPoint)) {\n return genLinearSegments(points, params);\n }\n const segContext = genSegContext('monotoneY', direction, points);\n const monotoneY = new MonotoneY(segContext, startPoint);\n\n genMonotoneYTypeSegments(monotoneY, points);\n\n return segContext;\n}\n"]}
@@ -7,9 +7,20 @@ import { genCurveSegments } from "./common";
7
7
  import { Direction } from "../enums";
8
8
 
9
9
  export class Step {
10
+ _lastDefined;
11
+ startPoint;
12
+ lastPoint;
10
13
  constructor(context, t = .5, startPoint) {
11
14
  this.context = context, this._t = t, this.startPoint = startPoint;
12
15
  }
16
+ _x;
17
+ _y;
18
+ _x0;
19
+ _x1;
20
+ _y0;
21
+ _y1;
22
+ _line;
23
+ _point;
13
24
  areaStart() {
14
25
  this._line = 0;
15
26
  }
@@ -52,7 +63,7 @@ export class Step {
52
63
  export function genStepSegments(points, t, params = {}) {
53
64
  const {direction: direction, startPoint: startPoint} = params;
54
65
  if (points.length < 2 - Number(!!startPoint)) return null;
55
- const segContext = new SegContext("step", null != direction ? direction : abs(points[points.length - 1].x - points[0].x) > abs(points[points.length - 1].y - points[0].y) ? Direction.ROW : Direction.COLUMN);
66
+ const segContext = new SegContext("step", direction ?? (abs(points[points.length - 1].x - points[0].x) > abs(points[points.length - 1].y - points[0].y) ? Direction.ROW : Direction.COLUMN));
56
67
  return genStepTypeSegments(new Step(segContext, t, startPoint), points), segContext;
57
68
  }
58
69
 
@@ -1 +1 @@
1
- {"version":3,"sources":["../src/common/segment/step.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,GAAG,EAAE,MAAM,kBAAkB,CAAC;AACvC,OAAO,EAAE,UAAU,EAAE,MAAM,gBAAgB,CAAC;AAC5C,OAAO,EAAE,gBAAgB,EAAE,MAAM,UAAU,CAAC;AAC5C,OAAO,EAAE,SAAS,EAAE,MAAM,UAAU,CAAC;AAsBrC,MAAM,OAAO,IAAI;IAQf,YAAY,OAAmB,EAAE,IAAY,GAAG,EAAE,UAAuB;QACvE,IAAI,CAAC,OAAO,GAAG,OAAO,CAAC;QACvB,IAAI,CAAC,EAAE,GAAG,CAAC,CAAC;QACZ,IAAI,CAAC,UAAU,GAAG,UAAU,CAAC;IAC/B,CAAC;IAUD,SAAS;QACP,IAAI,CAAC,KAAK,GAAG,CAAC,CAAC;IACjB,CAAC;IACD,OAAO;QACL,IAAI,CAAC,KAAK,GAAG,GAAG,CAAC;IACnB,CAAC;IACD,SAAS;QACP,IAAI,CAAC,EAAE,GAAG,IAAI,CAAC,EAAE,GAAG,GAAG,CAAC;QACxB,IAAI,CAAC,MAAM,GAAG,CAAC,CAAC;QAChB,IAAI,CAAC,UAAU,IAAI,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC;IACjD,CAAC;IACD,OAAO;QACL,IAAI,CAAC,GAAG,IAAI,CAAC,EAAE,IAAI,IAAI,CAAC,EAAE,GAAG,CAAC,IAAI,IAAI,CAAC,MAAM,KAAK,CAAC,EAAE;YACnD,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC,IAAI,CAAC,EAAE,EAAE,IAAI,CAAC,EAAE,EAAE,IAAI,CAAC,YAAY,KAAK,KAAK,EAAE,IAAI,CAAC,SAAS,CAAC,CAAC;SACpF;QACD,IAAI,IAAI,CAAC,KAAK,IAAI,CAAC,IAAI,CAAC,KAAK,KAAK,CAAC,IAAI,IAAI,CAAC,MAAM,KAAK,CAAC,CAAC,EAAE;YACzD,IAAI,CAAC,OAAO,CAAC,SAAS,EAAE,CAAC;SAC1B;QACD,IAAI,IAAI,CAAC,KAAK,IAAI,CAAC,EAAE;YACnB,CAAC,IAAI,CAAC,EAAE,GAAG,CAAC,GAAG,IAAI,CAAC,EAAE,CAAC,EAAE,CAAC,IAAI,CAAC,KAAK,GAAG,CAAC,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC;SACxD;IACH,CAAC;IACD,KAAK,CAAC,CAAa;QACjB,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC;QACd,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC;QAEd,QAAQ,IAAI,CAAC,MAAM,EAAE;YACnB,KAAK,CAAC;gBACJ,IAAI,CAAC,MAAM,GAAG,CAAC,CAAC;gBAChB,IAAI,CAAC,KAAK;oBACR,CAAC,CAAC,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC,EAAE,CAAC,EAAE,IAAI,CAAC,YAAY,KAAK,KAAK,IAAI,CAAC,CAAC,OAAO,KAAK,KAAK,EAAE,CAAC,CAAC;oBAClF,CAAC,CAAC,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC;gBACjC,MAAM;YACR,KAAK,CAAC;gBACJ,IAAI,CAAC,MAAM,GAAG,CAAC,CAAC;YAClB,OAAO,CAAC,CAAC;gBACP,IAAI,IAAI,CAAC,EAAE,IAAI,CAAC,EAAE;oBAChB,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC,IAAI,CAAC,EAAE,EAAE,CAAC,EAAE,IAAI,CAAC,YAAY,KAAK,KAAK,IAAI,CAAC,CAAC,OAAO,KAAK,KAAK,EAAE,IAAI,CAAC,SAAS,CAAC,CAAC;oBACpG,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC,EAAE,CAAC,EAAE,IAAI,CAAC,YAAY,KAAK,KAAK,IAAI,CAAC,CAAC,OAAO,KAAK,KAAK,EAAE,CAAC,CAAC,CAAC;iBAClF;qBAAM;oBACL,MAAM,EAAE,GAAG,IAAI,CAAC,EAAE,GAAG,CAAC,CAAC,GAAG,IAAI,CAAC,EAAE,CAAC,GAAG,CAAC,GAAG,IAAI,CAAC,EAAE,CAAC;oBACjD,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC,EAAE,EAAE,IAAI,CAAC,EAAE,EAAE,IAAI,CAAC,YAAY,KAAK,KAAK,IAAI,CAAC,CAAC,OAAO,KAAK,KAAK,EAAE,IAAI,CAAC,SAAS,CAAC,CAAC;oBACrG,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC,EAAE,EAAE,CAAC,EAAE,IAAI,CAAC,YAAY,KAAK,KAAK,IAAI,CAAC,CAAC,OAAO,KAAK,KAAK,EAAE,CAAC,CAAC,CAAC;iBACnF;gBACD,MAAM;aACP;SACF;QACD,IAAI,CAAC,YAAY,GAAG,CAAC,CAAC,OAAO,CAAC;QAC9B,CAAC,IAAI,CAAC,EAAE,GAAG,CAAC,CAAC,EAAE,CAAC,IAAI,CAAC,EAAE,GAAG,CAAC,CAAC,CAAC;QAC7B,IAAI,CAAC,SAAS,GAAG,CAAC,CAAC;IACrB,CAAC;IAED,eAAe;QACb,OAAO,IAAI,CAAC,OAAO,CAAC,eAAe,EAAE,CAAC;IACxC,CAAC;CACF;AAED,MAAM,UAAU,eAAe,CAAC,MAAoB,EAAE,CAAS,EAAE,SAA4B,EAAE;IAC7F,MAAM,EAAE,SAAS,EAAE,UAAU,EAAE,GAAG,MAAM,CAAC;IACzC,IAAI,MAAM,CAAC,MAAM,GAAG,CAAC,GAAG,MAAM,CAAC,CAAC,CAAC,UAAU,CAAC,EAAE;QAC5C,OAAO,IAAI,CAAC;KACb;IACD,MAAM,UAAU,GAAG,IAAI,UAAU,CAC/B,MAAM,EACN,SAAS,aAAT,SAAS,cAAT,SAAS,GACP,CAAC,GAAG,CAAC,MAAM,CAAC,MAAM,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,GAAG,CAAC,MAAM,CAAC,MAAM,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;QAC9F,CAAC,CAAC,SAAS,CAAC,GAAG;QACf,CAAC,CAAC,SAAS,CAAC,MAAM,CAAC,CACxB,CAAC;IACF,MAAM,IAAI,GAAG,IAAI,IAAI,CAAC,UAAU,EAAE,CAAC,EAAE,UAAU,CAAC,CAAC;IAEjD,mBAAmB,CAAC,IAAI,EAAE,MAAM,CAAC,CAAC;IAElC,OAAO,UAAU,CAAC;AACpB,CAAC;AAED,MAAM,UAAU,mBAAmB,CAAC,IAAoB,EAAE,MAAoB;IAC5E,OAAO,gBAAgB,CAAC,IAAI,EAAE,MAAM,EAAE,CAAC,CAAC,CAAC;AAC3C,CAAC","file":"step.js","sourcesContent":["import type { IPointLike } from '@visactor/vutils';\nimport { abs } from '@visactor/vutils';\nimport { SegContext } from '../seg-context';\nimport { genCurveSegments } from './common';\nimport { Direction } from '../enums';\nimport type { ICurvedSegment, IGenSegmentParams, ILinearSegment, ISegPath2D } from '../../interface/curve';\n\n/**\n * 部分源码参考 https://github.com/d3/d3-shape/\n * Copyright 2010-2022 Mike Bostock\n\n Permission to use, copy, modify, and/or distribute this software for any purpose\n with or without fee is hereby granted, provided that the above copyright notice\n and this permission notice appear in all copies.\n\n THE SOFTWARE IS PROVIDED \"AS IS\" AND THE AUTHOR DISCLAIMS ALL WARRANTIES WITH\n REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND\n FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT,\n INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS\n OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER\n TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF\n THIS SOFTWARE.\n */\n\n// 基于d3-shape重构\n// https://github.com/d3/d3-shape/blob/main/src/curve/step.js\nexport class Step implements ICurvedSegment {\n declare context: ISegPath2D;\n declare _t: number;\n private _lastDefined?: boolean;\n\n protected startPoint?: IPointLike;\n protected lastPoint?: IPointLike;\n\n constructor(context: ISegPath2D, t: number = 0.5, startPoint?: IPointLike) {\n this.context = context;\n this._t = t;\n this.startPoint = startPoint;\n }\n _x: number;\n _y: number;\n _x0: number;\n _x1: number;\n _y0: number;\n _y1: number;\n _line: number;\n _point: number;\n\n areaStart() {\n this._line = 0;\n }\n areaEnd() {\n this._line = NaN;\n }\n lineStart() {\n this._x = this._y = NaN;\n this._point = 0;\n this.startPoint && this.point(this.startPoint);\n }\n lineEnd() {\n if (0 < this._t && this._t < 1 && this._point === 2) {\n this.context.lineTo(this._x, this._y, this._lastDefined !== false, this.lastPoint);\n }\n if (this._line || (this._line !== 0 && this._point === 1)) {\n this.context.closePath();\n }\n if (this._line >= 0) {\n (this._t = 1 - this._t), (this._line = 1 - this._line);\n }\n }\n point(p: IPointLike): void {\n const x = p.x;\n const y = p.y;\n\n switch (this._point) {\n case 0:\n this._point = 1;\n this._line\n ? this.context.lineTo(x, y, this._lastDefined !== false && p.defined !== false, p)\n : this.context.moveTo(x, y, p);\n break;\n case 1:\n this._point = 2; // falls through\n default: {\n if (this._t <= 0) {\n this.context.lineTo(this._x, y, this._lastDefined !== false && p.defined !== false, this.lastPoint);\n this.context.lineTo(x, y, this._lastDefined !== false && p.defined !== false, p);\n } else {\n const x1 = this._x * (1 - this._t) + x * this._t;\n this.context.lineTo(x1, this._y, this._lastDefined !== false && p.defined !== false, this.lastPoint);\n this.context.lineTo(x1, y, this._lastDefined !== false && p.defined !== false, p);\n }\n break;\n }\n }\n this._lastDefined = p.defined;\n (this._x = x), (this._y = y);\n this.lastPoint = p;\n }\n\n tryUpdateLength(): number {\n return this.context.tryUpdateLength();\n }\n}\n\nexport function genStepSegments(points: IPointLike[], t: number, params: IGenSegmentParams = {}): ISegPath2D | null {\n const { direction, startPoint } = params;\n if (points.length < 2 - Number(!!startPoint)) {\n return null;\n }\n const segContext = new SegContext(\n 'step',\n direction ??\n (abs(points[points.length - 1].x - points[0].x) > abs(points[points.length - 1].y - points[0].y)\n ? Direction.ROW\n : Direction.COLUMN)\n );\n const step = new Step(segContext, t, startPoint);\n\n genStepTypeSegments(step, points);\n\n return segContext;\n}\n\nexport function genStepTypeSegments(path: ILinearSegment, points: IPointLike[]): void {\n return genCurveSegments(path, points, 1);\n}\n"]}
1
+ {"version":3,"sources":["../src/common/segment/step.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,GAAG,EAAE,MAAM,kBAAkB,CAAC;AACvC,OAAO,EAAE,UAAU,EAAE,MAAM,gBAAgB,CAAC;AAC5C,OAAO,EAAE,gBAAgB,EAAE,MAAM,UAAU,CAAC;AAC5C,OAAO,EAAE,SAAS,EAAE,MAAM,UAAU,CAAC;AAsBrC,MAAM,OAAO,IAAI;IAGP,YAAY,CAAW;IAErB,UAAU,CAAc;IACxB,SAAS,CAAc;IAEjC,YAAY,OAAmB,EAAE,IAAY,GAAG,EAAE,UAAuB;QACvE,IAAI,CAAC,OAAO,GAAG,OAAO,CAAC;QACvB,IAAI,CAAC,EAAE,GAAG,CAAC,CAAC;QACZ,IAAI,CAAC,UAAU,GAAG,UAAU,CAAC;IAC/B,CAAC;IACD,EAAE,CAAS;IACX,EAAE,CAAS;IACX,GAAG,CAAS;IACZ,GAAG,CAAS;IACZ,GAAG,CAAS;IACZ,GAAG,CAAS;IACZ,KAAK,CAAS;IACd,MAAM,CAAS;IAEf,SAAS;QACP,IAAI,CAAC,KAAK,GAAG,CAAC,CAAC;IACjB,CAAC;IACD,OAAO;QACL,IAAI,CAAC,KAAK,GAAG,GAAG,CAAC;IACnB,CAAC;IACD,SAAS;QACP,IAAI,CAAC,EAAE,GAAG,IAAI,CAAC,EAAE,GAAG,GAAG,CAAC;QACxB,IAAI,CAAC,MAAM,GAAG,CAAC,CAAC;QAChB,IAAI,CAAC,UAAU,IAAI,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC;IACjD,CAAC;IACD,OAAO;QACL,IAAI,CAAC,GAAG,IAAI,CAAC,EAAE,IAAI,IAAI,CAAC,EAAE,GAAG,CAAC,IAAI,IAAI,CAAC,MAAM,KAAK,CAAC,EAAE;YACnD,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC,IAAI,CAAC,EAAE,EAAE,IAAI,CAAC,EAAE,EAAE,IAAI,CAAC,YAAY,KAAK,KAAK,EAAE,IAAI,CAAC,SAAS,CAAC,CAAC;SACpF;QACD,IAAI,IAAI,CAAC,KAAK,IAAI,CAAC,IAAI,CAAC,KAAK,KAAK,CAAC,IAAI,IAAI,CAAC,MAAM,KAAK,CAAC,CAAC,EAAE;YACzD,IAAI,CAAC,OAAO,CAAC,SAAS,EAAE,CAAC;SAC1B;QACD,IAAI,IAAI,CAAC,KAAK,IAAI,CAAC,EAAE;YACnB,CAAC,IAAI,CAAC,EAAE,GAAG,CAAC,GAAG,IAAI,CAAC,EAAE,CAAC,EAAE,CAAC,IAAI,CAAC,KAAK,GAAG,CAAC,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC;SACxD;IACH,CAAC;IACD,KAAK,CAAC,CAAa;QACjB,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC;QACd,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC;QAEd,QAAQ,IAAI,CAAC,MAAM,EAAE;YACnB,KAAK,CAAC;gBACJ,IAAI,CAAC,MAAM,GAAG,CAAC,CAAC;gBAChB,IAAI,CAAC,KAAK;oBACR,CAAC,CAAC,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC,EAAE,CAAC,EAAE,IAAI,CAAC,YAAY,KAAK,KAAK,IAAI,CAAC,CAAC,OAAO,KAAK,KAAK,EAAE,CAAC,CAAC;oBAClF,CAAC,CAAC,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC;gBACjC,MAAM;YACR,KAAK,CAAC;gBACJ,IAAI,CAAC,MAAM,GAAG,CAAC,CAAC;YAClB,OAAO,CAAC,CAAC;gBACP,IAAI,IAAI,CAAC,EAAE,IAAI,CAAC,EAAE;oBAChB,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC,IAAI,CAAC,EAAE,EAAE,CAAC,EAAE,IAAI,CAAC,YAAY,KAAK,KAAK,IAAI,CAAC,CAAC,OAAO,KAAK,KAAK,EAAE,IAAI,CAAC,SAAS,CAAC,CAAC;oBACpG,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC,EAAE,CAAC,EAAE,IAAI,CAAC,YAAY,KAAK,KAAK,IAAI,CAAC,CAAC,OAAO,KAAK,KAAK,EAAE,CAAC,CAAC,CAAC;iBAClF;qBAAM;oBACL,MAAM,EAAE,GAAG,IAAI,CAAC,EAAE,GAAG,CAAC,CAAC,GAAG,IAAI,CAAC,EAAE,CAAC,GAAG,CAAC,GAAG,IAAI,CAAC,EAAE,CAAC;oBACjD,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC,EAAE,EAAE,IAAI,CAAC,EAAE,EAAE,IAAI,CAAC,YAAY,KAAK,KAAK,IAAI,CAAC,CAAC,OAAO,KAAK,KAAK,EAAE,IAAI,CAAC,SAAS,CAAC,CAAC;oBACrG,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC,EAAE,EAAE,CAAC,EAAE,IAAI,CAAC,YAAY,KAAK,KAAK,IAAI,CAAC,CAAC,OAAO,KAAK,KAAK,EAAE,CAAC,CAAC,CAAC;iBACnF;gBACD,MAAM;aACP;SACF;QACD,IAAI,CAAC,YAAY,GAAG,CAAC,CAAC,OAAO,CAAC;QAC9B,CAAC,IAAI,CAAC,EAAE,GAAG,CAAC,CAAC,EAAE,CAAC,IAAI,CAAC,EAAE,GAAG,CAAC,CAAC,CAAC;QAC7B,IAAI,CAAC,SAAS,GAAG,CAAC,CAAC;IACrB,CAAC;IAED,eAAe;QACb,OAAO,IAAI,CAAC,OAAO,CAAC,eAAe,EAAE,CAAC;IACxC,CAAC;CACF;AAED,MAAM,UAAU,eAAe,CAAC,MAAoB,EAAE,CAAS,EAAE,SAA4B,EAAE;IAC7F,MAAM,EAAE,SAAS,EAAE,UAAU,EAAE,GAAG,MAAM,CAAC;IACzC,IAAI,MAAM,CAAC,MAAM,GAAG,CAAC,GAAG,MAAM,CAAC,CAAC,CAAC,UAAU,CAAC,EAAE;QAC5C,OAAO,IAAI,CAAC;KACb;IACD,MAAM,UAAU,GAAG,IAAI,UAAU,CAC/B,MAAM,EACN,SAAS;QACP,CAAC,GAAG,CAAC,MAAM,CAAC,MAAM,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,GAAG,CAAC,MAAM,CAAC,MAAM,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;YAC9F,CAAC,CAAC,SAAS,CAAC,GAAG;YACf,CAAC,CAAC,SAAS,CAAC,MAAM,CAAC,CACxB,CAAC;IACF,MAAM,IAAI,GAAG,IAAI,IAAI,CAAC,UAAU,EAAE,CAAC,EAAE,UAAU,CAAC,CAAC;IAEjD,mBAAmB,CAAC,IAAI,EAAE,MAAM,CAAC,CAAC;IAElC,OAAO,UAAU,CAAC;AACpB,CAAC;AAED,MAAM,UAAU,mBAAmB,CAAC,IAAoB,EAAE,MAAoB;IAC5E,OAAO,gBAAgB,CAAC,IAAI,EAAE,MAAM,EAAE,CAAC,CAAC,CAAC;AAC3C,CAAC","file":"step.js","sourcesContent":["import type { IPointLike } from '@visactor/vutils';\nimport { abs } from '@visactor/vutils';\nimport { SegContext } from '../seg-context';\nimport { genCurveSegments } from './common';\nimport { Direction } from '../enums';\nimport type { ICurvedSegment, IGenSegmentParams, ILinearSegment, ISegPath2D } from '../../interface/curve';\n\n/**\n * 部分源码参考 https://github.com/d3/d3-shape/\n * Copyright 2010-2022 Mike Bostock\n\n Permission to use, copy, modify, and/or distribute this software for any purpose\n with or without fee is hereby granted, provided that the above copyright notice\n and this permission notice appear in all copies.\n\n THE SOFTWARE IS PROVIDED \"AS IS\" AND THE AUTHOR DISCLAIMS ALL WARRANTIES WITH\n REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND\n FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT,\n INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS\n OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER\n TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF\n THIS SOFTWARE.\n */\n\n// 基于d3-shape重构\n// https://github.com/d3/d3-shape/blob/main/src/curve/step.js\nexport class Step implements ICurvedSegment {\n declare context: ISegPath2D;\n declare _t: number;\n private _lastDefined?: boolean;\n\n protected startPoint?: IPointLike;\n protected lastPoint?: IPointLike;\n\n constructor(context: ISegPath2D, t: number = 0.5, startPoint?: IPointLike) {\n this.context = context;\n this._t = t;\n this.startPoint = startPoint;\n }\n _x: number;\n _y: number;\n _x0: number;\n _x1: number;\n _y0: number;\n _y1: number;\n _line: number;\n _point: number;\n\n areaStart() {\n this._line = 0;\n }\n areaEnd() {\n this._line = NaN;\n }\n lineStart() {\n this._x = this._y = NaN;\n this._point = 0;\n this.startPoint && this.point(this.startPoint);\n }\n lineEnd() {\n if (0 < this._t && this._t < 1 && this._point === 2) {\n this.context.lineTo(this._x, this._y, this._lastDefined !== false, this.lastPoint);\n }\n if (this._line || (this._line !== 0 && this._point === 1)) {\n this.context.closePath();\n }\n if (this._line >= 0) {\n (this._t = 1 - this._t), (this._line = 1 - this._line);\n }\n }\n point(p: IPointLike): void {\n const x = p.x;\n const y = p.y;\n\n switch (this._point) {\n case 0:\n this._point = 1;\n this._line\n ? this.context.lineTo(x, y, this._lastDefined !== false && p.defined !== false, p)\n : this.context.moveTo(x, y, p);\n break;\n case 1:\n this._point = 2; // falls through\n default: {\n if (this._t <= 0) {\n this.context.lineTo(this._x, y, this._lastDefined !== false && p.defined !== false, this.lastPoint);\n this.context.lineTo(x, y, this._lastDefined !== false && p.defined !== false, p);\n } else {\n const x1 = this._x * (1 - this._t) + x * this._t;\n this.context.lineTo(x1, this._y, this._lastDefined !== false && p.defined !== false, this.lastPoint);\n this.context.lineTo(x1, y, this._lastDefined !== false && p.defined !== false, p);\n }\n break;\n }\n }\n this._lastDefined = p.defined;\n (this._x = x), (this._y = y);\n this.lastPoint = p;\n }\n\n tryUpdateLength(): number {\n return this.context.tryUpdateLength();\n }\n}\n\nexport function genStepSegments(points: IPointLike[], t: number, params: IGenSegmentParams = {}): ISegPath2D | null {\n const { direction, startPoint } = params;\n if (points.length < 2 - Number(!!startPoint)) {\n return null;\n }\n const segContext = new SegContext(\n 'step',\n direction ??\n (abs(points[points.length - 1].x - points[0].x) > abs(points[points.length - 1].y - points[0].y)\n ? Direction.ROW\n : Direction.COLUMN)\n );\n const step = new Step(segContext, t, startPoint);\n\n genStepTypeSegments(step, points);\n\n return segContext;\n}\n\nexport function genStepTypeSegments(path: ILinearSegment, points: IPointLike[]): void {\n return genCurveSegments(path, points, 1);\n}\n"]}
package/es/common/sort.js CHANGED
@@ -1,29 +1,3 @@
1
- var __awaiter = this && this.__awaiter || function(thisArg, _arguments, P, generator) {
2
- return new (P || (P = Promise))((function(resolve, reject) {
3
- function fulfilled(value) {
4
- try {
5
- step(generator.next(value));
6
- } catch (e) {
7
- reject(e);
8
- }
9
- }
10
- function rejected(value) {
11
- try {
12
- step(generator.throw(value));
13
- } catch (e) {
14
- reject(e);
15
- }
16
- }
17
- function step(result) {
18
- var value;
19
- result.done ? resolve(result.value) : (value = result.value, value instanceof P ? value : new P((function(resolve) {
20
- resolve(value);
21
- }))).then(fulfilled, rejected);
22
- }
23
- step((generator = generator.apply(thisArg, _arguments || [])).next());
24
- }));
25
- };
26
-
27
1
  export function foreach(graphic, defaultZIndex, cb, reverse = !1, sort3d = !1) {
28
2
  const childMap = {}, zIdxArray = [];
29
3
  let needSort = !1;
@@ -44,10 +18,7 @@ export function foreach(graphic, defaultZIndex, cb, reverse = !1, sort3d = !1) {
44
18
  let skip = !1;
45
19
  for (let i = 0; i < zIdxArray.length && !skip; i++) {
46
20
  const idx = zIdxArray[i], children = childMap[idx];
47
- sort3d && children.sort(((a, b) => {
48
- var _a, _b;
49
- return (reverse ? -1 : 1) * ((null !== (_a = b.attribute.z) && void 0 !== _a ? _a : 0) - (null !== (_b = a.attribute.z) && void 0 !== _b ? _b : 0));
50
- }));
21
+ sort3d && children.sort(((a, b) => (reverse ? -1 : 1) * ((b.attribute.z ?? 0) - (a.attribute.z ?? 0))));
51
22
  for (let i = 0; i < children.length; i++) if (cb(children[i], i)) {
52
23
  skip = !0;
53
24
  break;
@@ -56,10 +27,8 @@ export function foreach(graphic, defaultZIndex, cb, reverse = !1, sort3d = !1) {
56
27
  } else graphic.forEachChildren(cb, reverse);
57
28
  }
58
29
 
59
- export function foreachAsync(graphic, defaultZIndex, cb, reverse = !1) {
60
- return __awaiter(this, void 0, void 0, (function*() {
61
- yield graphic.forEachChildrenAsync(cb, reverse);
62
- }));
30
+ export async function foreachAsync(graphic, defaultZIndex, cb, reverse = !1) {
31
+ await graphic.forEachChildrenAsync(cb, reverse);
63
32
  }
64
33
 
65
34
  export function findNextGraphic(graphic, id, defaultZIndex, reverse = !1) {
@@ -1 +1 @@
1
- {"version":3,"sources":["../src/common/sort.ts"],"names":[],"mappings":"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","file":"sort.js","sourcesContent":["import type { IGraphic } from '../interface';\n\nexport function foreach(\n graphic: IGraphic,\n defaultZIndex: number,\n cb: (...data: any) => boolean | void,\n reverse: boolean = false,\n sort3d: boolean = false\n) {\n const childMap: { [id: number]: IGraphic[] } = {};\n const zIdxArray: number[] = [];\n // 遍历一遍查看是否有zIndex不同的\n let needSort = false;\n if (sort3d) {\n needSort = true;\n } else {\n let lastZIndex: number;\n graphic.forEachChildren((item: IGraphic, i: number) => {\n const { zIndex = defaultZIndex } = item.attribute;\n if (i === 0) {\n lastZIndex = zIndex;\n } else if (lastZIndex !== zIndex) {\n needSort = true;\n return true;\n }\n return false;\n }, reverse);\n }\n if (needSort) {\n graphic.forEachChildren((item: IGraphic) => {\n const { zIndex = defaultZIndex } = item.attribute;\n if (childMap[zIndex]) {\n childMap[zIndex].push(item);\n } else {\n childMap[zIndex] = [item];\n zIdxArray.push(zIndex);\n }\n }, reverse);\n zIdxArray.sort((a, b) => (reverse ? b - a : a - b));\n let skip = false;\n for (let i = 0; i < zIdxArray.length; i++) {\n if (skip) {\n break;\n }\n const idx = zIdxArray[i];\n const children = childMap[idx];\n // 根据z进行排序\n if (sort3d) {\n children.sort((a, b) => {\n return (reverse ? -1 : 1) * ((b.attribute.z ?? 0) - (a.attribute.z ?? 0));\n });\n }\n for (let i = 0; i < children.length; i++) {\n if (cb(children[i], i)) {\n skip = true;\n break;\n }\n }\n }\n } else {\n graphic.forEachChildren(cb, reverse);\n }\n}\n\nexport async function foreachAsync(\n graphic: IGraphic,\n defaultZIndex: number,\n cb: (data: any, i: number) => boolean | void | Promise<boolean | void>,\n reverse: boolean = false\n) {\n // 不支持zIndex\n await graphic.forEachChildrenAsync(cb, reverse);\n // const childMap: { [id: number]: IGraphic[] } = {};\n // const zIdxArray: number[] = [];\n // // 遍历一遍查看是否有zIndex不同的\n // let needSort = false;\n // let lastZIndex: number;\n // graphic.forEachChildren((item: IGraphic, i: number) => {\n // const { zIndex = defaultZIndex } = item.attribute;\n // if (i === 0) {\n // lastZIndex === zIndex;\n // } else if (lastZIndex !== zIndex) {\n // needSort = true;\n // return true;\n // }\n // return false;\n // }, reverse);\n // if (needSort) {\n // graphic.forEachChildren((item: IGraphic) => {\n // const { zIndex = defaultZIndex } = item.attribute;\n // if (childMap[zIndex]) {\n // childMap[zIndex].push(item);\n // } else {\n // childMap[zIndex] = [item];\n // zIdxArray.push(zIndex);\n // }\n // }, reverse);\n // zIdxArray.sort((a, b) => (reverse ? b - a : a - b));\n // let skip = false;\n // for (let i = 0; i < zIdxArray.length; i++) {\n // if (skip) {\n // break;\n // }\n // const idx = zIdxArray[i];\n // const children = childMap[idx];\n // for (let i = 0; i < children.length; i++) {\n // let d = cb(children[i], i);\n // if ((d as any).then) {\n // d = await d;\n // }\n // if (d) {\n // skip = true;\n // break;\n // }\n // }\n // }\n // } else {\n // await graphic.forEachChildrenAsync(cb, reverse);\n // }\n}\n\nexport function findNextGraphic(graphic: IGraphic, id: number, defaultZIndex: number, reverse: boolean = false) {\n const childMap: { [id: number]: IGraphic[] } = {};\n const zIdxArray: number[] = [];\n // 遍历一遍查看是否有zIndex不同的\n let needSort = false;\n let lastZIndex: number;\n graphic.forEachChildren((item: IGraphic, i: number) => {\n const { zIndex = defaultZIndex } = item.attribute;\n if (i === 0) {\n lastZIndex === zIndex;\n } else if (lastZIndex !== zIndex) {\n needSort = true;\n return true;\n }\n return false;\n }, reverse);\n let result: IGraphic | null = null;\n let next: boolean = false;\n if (needSort) {\n graphic.forEachChildren((item: IGraphic) => {\n const { zIndex = defaultZIndex } = item.attribute;\n if (childMap[zIndex]) {\n childMap[zIndex].push(item);\n } else {\n childMap[zIndex] = [item];\n zIdxArray.push(zIndex);\n }\n }, reverse);\n zIdxArray.sort((a, b) => (reverse ? b - a : a - b));\n let skip = false;\n for (let i = 0; i < zIdxArray.length; i++) {\n if (skip) {\n break;\n }\n const idx = zIdxArray[i];\n const children = childMap[idx];\n for (let i = 0; i < children.length; i++) {\n if (next) {\n skip = true;\n result = children[i];\n break;\n }\n if (children[i]._uid === id) {\n next = true;\n continue;\n }\n }\n }\n } else {\n graphic.forEachChildren(item => {\n if (next) {\n result = item as IGraphic;\n return true;\n }\n if (item._uid === id) {\n next = true;\n }\n return false;\n }, reverse);\n }\n\n return result;\n}\n"]}
1
+ {"version":3,"sources":["../src/common/sort.ts"],"names":[],"mappings":"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","file":"sort.js","sourcesContent":["import type { IGraphic } from '../interface';\n\nexport function foreach(\n graphic: IGraphic,\n defaultZIndex: number,\n cb: (...data: any) => boolean | void,\n reverse: boolean = false,\n sort3d: boolean = false\n) {\n const childMap: { [id: number]: IGraphic[] } = {};\n const zIdxArray: number[] = [];\n // 遍历一遍查看是否有zIndex不同的\n let needSort = false;\n if (sort3d) {\n needSort = true;\n } else {\n let lastZIndex: number;\n graphic.forEachChildren((item: IGraphic, i: number) => {\n const { zIndex = defaultZIndex } = item.attribute;\n if (i === 0) {\n lastZIndex = zIndex;\n } else if (lastZIndex !== zIndex) {\n needSort = true;\n return true;\n }\n return false;\n }, reverse);\n }\n if (needSort) {\n graphic.forEachChildren((item: IGraphic) => {\n const { zIndex = defaultZIndex } = item.attribute;\n if (childMap[zIndex]) {\n childMap[zIndex].push(item);\n } else {\n childMap[zIndex] = [item];\n zIdxArray.push(zIndex);\n }\n }, reverse);\n zIdxArray.sort((a, b) => (reverse ? b - a : a - b));\n let skip = false;\n for (let i = 0; i < zIdxArray.length; i++) {\n if (skip) {\n break;\n }\n const idx = zIdxArray[i];\n const children = childMap[idx];\n // 根据z进行排序\n if (sort3d) {\n children.sort((a, b) => {\n return (reverse ? -1 : 1) * ((b.attribute.z ?? 0) - (a.attribute.z ?? 0));\n });\n }\n for (let i = 0; i < children.length; i++) {\n if (cb(children[i], i)) {\n skip = true;\n break;\n }\n }\n }\n } else {\n graphic.forEachChildren(cb, reverse);\n }\n}\n\nexport async function foreachAsync(\n graphic: IGraphic,\n defaultZIndex: number,\n cb: (data: any, i: number) => boolean | void | Promise<boolean | void>,\n reverse: boolean = false\n) {\n // 不支持zIndex\n await graphic.forEachChildrenAsync(cb, reverse);\n // const childMap: { [id: number]: IGraphic[] } = {};\n // const zIdxArray: number[] = [];\n // // 遍历一遍查看是否有zIndex不同的\n // let needSort = false;\n // let lastZIndex: number;\n // graphic.forEachChildren((item: IGraphic, i: number) => {\n // const { zIndex = defaultZIndex } = item.attribute;\n // if (i === 0) {\n // lastZIndex === zIndex;\n // } else if (lastZIndex !== zIndex) {\n // needSort = true;\n // return true;\n // }\n // return false;\n // }, reverse);\n // if (needSort) {\n // graphic.forEachChildren((item: IGraphic) => {\n // const { zIndex = defaultZIndex } = item.attribute;\n // if (childMap[zIndex]) {\n // childMap[zIndex].push(item);\n // } else {\n // childMap[zIndex] = [item];\n // zIdxArray.push(zIndex);\n // }\n // }, reverse);\n // zIdxArray.sort((a, b) => (reverse ? b - a : a - b));\n // let skip = false;\n // for (let i = 0; i < zIdxArray.length; i++) {\n // if (skip) {\n // break;\n // }\n // const idx = zIdxArray[i];\n // const children = childMap[idx];\n // for (let i = 0; i < children.length; i++) {\n // let d = cb(children[i], i);\n // if ((d as any).then) {\n // d = await d;\n // }\n // if (d) {\n // skip = true;\n // break;\n // }\n // }\n // }\n // } else {\n // await graphic.forEachChildrenAsync(cb, reverse);\n // }\n}\n\nexport function findNextGraphic(graphic: IGraphic, id: number, defaultZIndex: number, reverse: boolean = false) {\n const childMap: { [id: number]: IGraphic[] } = {};\n const zIdxArray: number[] = [];\n // 遍历一遍查看是否有zIndex不同的\n let needSort = false;\n let lastZIndex: number;\n graphic.forEachChildren((item: IGraphic, i: number) => {\n const { zIndex = defaultZIndex } = item.attribute;\n if (i === 0) {\n lastZIndex === zIndex;\n } else if (lastZIndex !== zIndex) {\n needSort = true;\n return true;\n }\n return false;\n }, reverse);\n let result: IGraphic | null = null;\n let next: boolean = false;\n if (needSort) {\n graphic.forEachChildren((item: IGraphic) => {\n const { zIndex = defaultZIndex } = item.attribute;\n if (childMap[zIndex]) {\n childMap[zIndex].push(item);\n } else {\n childMap[zIndex] = [item];\n zIdxArray.push(zIndex);\n }\n }, reverse);\n zIdxArray.sort((a, b) => (reverse ? b - a : a - b));\n let skip = false;\n for (let i = 0; i < zIdxArray.length; i++) {\n if (skip) {\n break;\n }\n const idx = zIdxArray[i];\n const children = childMap[idx];\n for (let i = 0; i < children.length; i++) {\n if (next) {\n skip = true;\n result = children[i];\n break;\n }\n if (children[i]._uid === id) {\n next = true;\n continue;\n }\n }\n }\n } else {\n graphic.forEachChildren(item => {\n if (next) {\n result = item as IGraphic;\n return true;\n }\n if (item._uid === id) {\n next = true;\n }\n return false;\n }, reverse);\n }\n\n return result;\n}\n"]}
@@ -82,14 +82,10 @@ const samplingPoints = (points, count) => {
82
82
  };
83
83
 
84
84
  export const splitArea = (area, count) => {
85
- var _a, _b;
86
85
  const attribute = area.attribute;
87
86
  let points = attribute.points;
88
87
  const segements = attribute.segments;
89
- points || (points = segements.reduce(((res, seg) => {
90
- var _a;
91
- return res.concat(null !== (_a = seg.points) && void 0 !== _a ? _a : []);
92
- }), []));
88
+ points || (points = segements.reduce(((res, seg) => res.concat(seg.points ?? [])), []));
93
89
  const validatePoints = points.filter((point => !1 !== point.defined && isNumber(point.x) && isNumber(point.y)));
94
90
  if (!validatePoints.length) return [];
95
91
  const allPoints = [];
@@ -102,8 +98,8 @@ export const splitArea = (area, count) => {
102
98
  for (let i = validatePoints.length - 1; i >= 0; i--) {
103
99
  const point = validatePoints[i];
104
100
  allPoints.push({
105
- x: null !== (_a = point.x1) && void 0 !== _a ? _a : point.x,
106
- y: null !== (_b = point.y1) && void 0 !== _b ? _b : point.y
101
+ x: point.x1 ?? point.x,
102
+ y: point.y1 ?? point.y
107
103
  });
108
104
  }
109
105
  const res = [];
@@ -114,10 +110,7 @@ export const splitLine = (line, count) => {
114
110
  const attribute = line.attribute, points = attribute.points;
115
111
  if (points) return samplingPoints(points, count);
116
112
  if (attribute.segments) {
117
- const allPoints = attribute.segments.reduce(((res, seg) => {
118
- var _a;
119
- return res.concat(null !== (_a = seg.points) && void 0 !== _a ? _a : []);
120
- }), []);
113
+ const allPoints = attribute.segments.reduce(((res, seg) => res.concat(seg.points ?? [])), []);
121
114
  return samplingPoints(allPoints, count);
122
115
  }
123
116
  return [];
@@ -1 +1 @@
1
- {"version":3,"sources":["../src/common/split-path.ts"],"names":[],"mappings":"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","file":"split-path.js","sourcesContent":["/* Adapted from zrender by ecomfe\n * https://github.com/ecomfe/zrender\n * Licensed under the BSD-3-Clause\n\n * url: https://github.com/ecomfe/zrender/blob/master/src/tool/dividePath.ts\n * License: https://github.com/ecomfe/zrender/blob/master/LICENSE\n * @license\n */\n\nimport type { ICustomPath2D } from './../interface/path';\nimport type { IPointLike } from '@visactor/vutils';\nimport { isNumber, Bounds, getIntersectPoint } from '@visactor/vutils';\nimport type { ILine, IRect, IArc, ICircle, IArea, IPolygon, IPath } from '../interface';\nimport { bezierCurversToPath, pathToBezierCurves } from './morphing-utils';\nimport { normalizeRectAttributes } from './rect-utils';\n/**\n * split a rect to grids\n */\nexport function splitToGrids(width: number, height: number, count: number) {\n const ratio = width / height;\n\n let rowCount: number;\n let columnCount: number;\n\n if (width >= height) {\n columnCount = Math.ceil(Math.sqrt(count * ratio));\n rowCount = Math.floor(count / columnCount);\n\n if (rowCount === 0) {\n rowCount = 1;\n columnCount = count;\n }\n } else {\n rowCount = Math.ceil(Math.sqrt(count / ratio));\n columnCount = Math.floor(count / rowCount);\n\n if (columnCount === 0) {\n columnCount = 1;\n rowCount = count;\n }\n }\n\n const grids: number[] = [];\n for (let i = 0; i < rowCount; i++) {\n grids.push(columnCount);\n }\n const sumCount = rowCount * columnCount;\n const remained = count - sumCount;\n\n if (remained > 0) {\n for (let i = 0; i < remained; i += columnCount) {\n if (i + columnCount < remained) {\n grids.push(columnCount);\n } else {\n grids.push(remained - i);\n }\n }\n }\n return grids;\n}\n\nexport const splitRect = (rect: IRect, count: number) => {\n const { width, height } = normalizeRectAttributes(rect.attribute);\n\n const x = 0;\n const y = 0;\n const grids = splitToGrids(width, height, count);\n const res = [];\n const gridHeight = height / grids.length;\n\n for (let i = 0, rowCount = grids.length; i < rowCount; i++) {\n const columnCount = grids[i];\n const gridWidth = width / columnCount;\n for (let j = 0; j < columnCount; j++) {\n res.push({\n x: x + j * gridWidth,\n y: y + i * gridHeight,\n width: gridWidth,\n height: gridHeight\n });\n }\n }\n\n return res;\n};\n\nexport const splitArc = (arc: IArc, count: number) => {\n const x = 0;\n const y = 0;\n const angles = arc.getParsedAngle();\n const startAngle = angles.startAngle;\n const endAngle = angles.endAngle;\n const innerRadius = arc.getComputedAttribute('innerRadius');\n const outerRadius = arc.getComputedAttribute('outerRadius');\n const angleDelta = Math.abs(startAngle - endAngle);\n const radiusDelta = Math.abs(outerRadius - innerRadius);\n\n const grids = splitToGrids((angleDelta * (innerRadius + outerRadius)) / 2, radiusDelta, count);\n const res = [];\n const gridRadius = radiusDelta / grids.length;\n const radiusSign = outerRadius >= innerRadius ? 1 : -1;\n const angleSign = endAngle >= startAngle ? 1 : -1;\n\n for (let i = 0, rowCount = grids.length; i < rowCount; i++) {\n const columnCount = grids[i];\n const gridAngle = angleDelta / columnCount;\n for (let j = 0; j < columnCount; j++) {\n // from outter to inner\n res.push({\n innerRadius: outerRadius - gridRadius * i * radiusSign,\n outerRadius: outerRadius - gridRadius * (i + 1) * radiusSign,\n startAngle: startAngle + gridAngle * j * angleSign,\n endAngle: startAngle + gridAngle * (j + 1) * angleSign\n });\n }\n }\n\n return res;\n};\n\nexport const splitCircle = (arc: ICircle, count: number) => {\n const x = 0;\n const y = 0;\n const startAngle = arc.getComputedAttribute('startAngle');\n const endAngle = arc.getComputedAttribute('endAngle');\n const radius = arc.getComputedAttribute('radius');\n const angleDelta = Math.abs(startAngle - endAngle);\n\n const grids = splitToGrids(angleDelta * radius, radius, count);\n const res = [];\n const gridAngle = angleDelta / grids[0];\n const gridRadius = radius / grids.length;\n const angleSign = endAngle >= startAngle ? 1 : -1;\n\n for (let i = 0, rowCount = grids.length; i < rowCount; i++) {\n for (let j = 0, columnCount = grids[i]; j < columnCount; j++) {\n res.push({\n innerRadius: gridRadius * i,\n outerRadius: gridRadius * (i + 1),\n startAngle: startAngle + gridAngle * j * angleSign,\n endAngle: startAngle + gridAngle * (j + 1) * angleSign\n });\n }\n }\n\n return res;\n};\n\nconst samplingPoints = (points: IPointLike[], count: number) => {\n const validatePoints = points.filter(point => point.defined !== false && isNumber(point.x) && isNumber(point.y));\n\n if (validatePoints.length === 0) {\n return [];\n }\n if (validatePoints.length === 1) {\n return new Array(count).fill(0).map(i => validatePoints[0]);\n }\n\n const res = [];\n if (count <= validatePoints.length) {\n const step = validatePoints.length / count;\n let i = 0;\n let cur = 0;\n\n while (i < count) {\n res.push(validatePoints[Math.floor(cur)]);\n\n cur += step;\n i++;\n }\n\n return res;\n }\n\n const insertCount = count - validatePoints.length;\n const insertStep = insertCount / (validatePoints.length - 1);\n const insetRatio = 1 / (insertStep + 1);\n let curCount = 0;\n\n for (let i = 0, len = points.length; i < len; i++) {\n res.push(points[i]);\n\n if (i < len - 1) {\n let cur = insetRatio;\n const xCur = points[i].x;\n const yCur = points[i].y;\n const xNext = points[i + 1].x;\n const yNext = points[i + 1].y;\n\n while (cur < 1 && curCount < insertCount) {\n res.push({\n x: xCur + (xNext - xCur) * cur,\n y: yCur + (yNext - yCur) * cur\n });\n cur += insetRatio;\n curCount += 1;\n }\n }\n }\n\n return res;\n};\n\nexport const splitArea = (area: IArea, count: number) => {\n const attribute = area.attribute;\n let points = attribute.points;\n const segements = attribute.segments;\n\n if (!points) {\n points = segements.reduce((res, seg) => {\n return res.concat(seg.points ?? []);\n }, []);\n }\n const validatePoints = points.filter(point => point.defined !== false && isNumber(point.x) && isNumber(point.y));\n\n if (!validatePoints.length) {\n return [];\n }\n\n const allPoints: IPointLike[] = [];\n\n validatePoints.forEach(point => {\n allPoints.push({ x: point.x, y: point.y });\n });\n\n for (let i = validatePoints.length - 1; i >= 0; i--) {\n const point = validatePoints[i];\n\n allPoints.push({ x: point.x1 ?? point.x, y: point.y1 ?? point.y });\n }\n\n const res: { points: IPointLike[] }[] = [];\n\n recursiveCallBinarySplit(points, count, res);\n\n return res;\n};\n\nexport const splitLine = (line: ILine, count: number) => {\n const attribute = line.attribute;\n const points = attribute.points;\n\n if (points) {\n return samplingPoints(points, count);\n } else if (attribute.segments) {\n const segs = attribute.segments;\n const allPoints = segs.reduce((res, seg) => {\n return res.concat(seg.points ?? []);\n }, []);\n\n return samplingPoints(allPoints, count);\n }\n return [];\n};\n\nfunction crossProduct(dir1: [number, number], dir2: [number, number]): number {\n return dir1[0] * dir2[1] - dir1[1] * dir2[0];\n}\n\nconst clonePoints = (points: IPointLike[]) => {\n return points.map(p => ({ x: p.x, y: p.y }));\n};\n\nconst splitPolygonByLine = (points: IPointLike[], p0: IPointLike, p1: IPointLike) => {\n const len = points.length;\n const intersections: { dot: number; point: IPointLike; edgeIndex: number }[] = [];\n\n for (let i = 0; i < len; i++) {\n const cur = points[i];\n const next = i === len - 1 ? points[0] : points[i + 1];\n\n const res = getIntersectPoint([p0.x, p0.y], [p1.x, p1.y], [cur.x, cur.y], [next.x, next.y]);\n\n if (res && typeof res !== 'boolean') {\n intersections.push({\n dot: crossProduct([res[0] - p0.x, res[1] - p0.x], [p1.x - p0.x, p1.y - p0.x]),\n point: { x: res[0], y: res[1] },\n edgeIndex: i\n });\n }\n }\n\n if (intersections.length < 2) {\n // 没有交点或者和某条边共线\n return [clonePoints(points), clonePoints(points)];\n }\n\n intersections.sort((a, b) => a.dot - b.dot);\n let is0 = intersections[0];\n let is1 = intersections[intersections.length - 1];\n\n if (is0.edgeIndex > is1.edgeIndex) {\n [is0, is1] = [is1, is0];\n }\n\n const newP0 = is0.point;\n const newP1 = is1.point;\n const newPointsA = [{ x: newP0.x, y: newP0.y }];\n\n for (let i = is0.edgeIndex + 1; i <= is1.edgeIndex; i++) {\n newPointsA.push({ x: points[i].x, y: points[i].y });\n }\n newPointsA.push({ x: newP1.x, y: newP1.y });\n\n const newPointsB = [{ x: newP1.x, y: newP1.y }];\n for (let i = is1.edgeIndex + 1, maxIndex = is0.edgeIndex + len; i <= maxIndex; i++) {\n const p = points[i % len];\n newPointsB.push({ x: p.x, y: p.y });\n }\n newPointsB.push({ x: newP0.x, y: newP0.y });\n\n return [newPointsA, newPointsB];\n};\n\nexport const binarySplitPolygon = (points: IPointLike[]) => {\n const box = new Bounds();\n\n points.forEach(point => {\n box.add(point.x, point.y);\n });\n const width = box.width();\n const height = box.height();\n\n if (width >= height) {\n // split horizontal\n const midX = box.x1 + width / 2;\n\n return splitPolygonByLine(\n points,\n {\n x: midX,\n y: box.y1\n },\n {\n x: midX,\n y: box.y2\n }\n );\n }\n // split vertical\n const midY = box.y1 + height / 2;\n\n return splitPolygonByLine(\n points,\n {\n x: box.x1,\n y: midY\n },\n {\n x: box.x2,\n y: midY\n }\n );\n};\n\nexport const recursiveCallBinarySplit = (points: IPointLike[], count: number, out: { points: IPointLike[] }[]) => {\n if (count === 1) {\n out.push({ points });\n } else {\n const half = Math.floor(count / 2);\n const res = binarySplitPolygon(points);\n\n recursiveCallBinarySplit(res[0], half, out);\n recursiveCallBinarySplit(res[1], count - half, out);\n }\n};\n\nexport const splitPolygon = (polygon: IPolygon, count: number) => {\n const points = polygon.attribute.points;\n\n if (!points || !points.length) {\n return [];\n }\n if (count === 1) {\n return [{ points: clonePoints(points) }];\n }\n const res: { points: IPointLike[] }[] = [];\n\n recursiveCallBinarySplit(points, count, res);\n\n return res;\n};\n\nexport const splitPath = (path: IPath, count: number) => {\n const pathShape = path.getParsedPathShape();\n const bezierCurves = pathToBezierCurves(pathShape);\n\n if (!bezierCurves.length || count < 0) {\n return [];\n }\n\n const subPathCnt = bezierCurves.length;\n\n if (bezierCurves.length >= count) {\n const res: { path: ICustomPath2D }[] = [];\n const stepCount = Math.floor(bezierCurves.length / count);\n\n for (let i = 0; i < count; i++) {\n const curves = bezierCurves.slice(i * stepCount, i === count - 1 ? subPathCnt : (i + 1) * stepCount);\n\n res.push({ path: bezierCurversToPath(curves) });\n }\n\n return res;\n }\n\n const res: { points: IPointLike[] }[] = [];\n const stepCount = Math.floor(count / subPathCnt);\n let remain = count;\n\n for (let c = 0; c < subPathCnt; c++) {\n const points: IPointLike[] = [];\n\n for (let i = 2, len = bezierCurves[c].length; i < len; i += 2) {\n points.push({ x: bezierCurves[0][i], y: bezierCurves[0][i + 1] });\n }\n recursiveCallBinarySplit(points, c === subPathCnt - 1 ? remain : stepCount, res);\n remain -= stepCount;\n }\n\n return res;\n};\n"]}
1
+ {"version":3,"sources":["../src/common/split-path.ts"],"names":[],"mappings":"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","file":"split-path.js","sourcesContent":["/* Adapted from zrender by ecomfe\n * https://github.com/ecomfe/zrender\n * Licensed under the BSD-3-Clause\n\n * url: https://github.com/ecomfe/zrender/blob/master/src/tool/dividePath.ts\n * License: https://github.com/ecomfe/zrender/blob/master/LICENSE\n * @license\n */\n\nimport type { ICustomPath2D } from './../interface/path';\nimport type { IPointLike } from '@visactor/vutils';\nimport { isNumber, Bounds, getIntersectPoint } from '@visactor/vutils';\nimport type { ILine, IRect, IArc, ICircle, IArea, IPolygon, IPath } from '../interface';\nimport { bezierCurversToPath, pathToBezierCurves } from './morphing-utils';\nimport { normalizeRectAttributes } from './rect-utils';\n/**\n * split a rect to grids\n */\nexport function splitToGrids(width: number, height: number, count: number) {\n const ratio = width / height;\n\n let rowCount: number;\n let columnCount: number;\n\n if (width >= height) {\n columnCount = Math.ceil(Math.sqrt(count * ratio));\n rowCount = Math.floor(count / columnCount);\n\n if (rowCount === 0) {\n rowCount = 1;\n columnCount = count;\n }\n } else {\n rowCount = Math.ceil(Math.sqrt(count / ratio));\n columnCount = Math.floor(count / rowCount);\n\n if (columnCount === 0) {\n columnCount = 1;\n rowCount = count;\n }\n }\n\n const grids: number[] = [];\n for (let i = 0; i < rowCount; i++) {\n grids.push(columnCount);\n }\n const sumCount = rowCount * columnCount;\n const remained = count - sumCount;\n\n if (remained > 0) {\n for (let i = 0; i < remained; i += columnCount) {\n if (i + columnCount < remained) {\n grids.push(columnCount);\n } else {\n grids.push(remained - i);\n }\n }\n }\n return grids;\n}\n\nexport const splitRect = (rect: IRect, count: number) => {\n const { width, height } = normalizeRectAttributes(rect.attribute);\n\n const x = 0;\n const y = 0;\n const grids = splitToGrids(width, height, count);\n const res = [];\n const gridHeight = height / grids.length;\n\n for (let i = 0, rowCount = grids.length; i < rowCount; i++) {\n const columnCount = grids[i];\n const gridWidth = width / columnCount;\n for (let j = 0; j < columnCount; j++) {\n res.push({\n x: x + j * gridWidth,\n y: y + i * gridHeight,\n width: gridWidth,\n height: gridHeight\n });\n }\n }\n\n return res;\n};\n\nexport const splitArc = (arc: IArc, count: number) => {\n const x = 0;\n const y = 0;\n const angles = arc.getParsedAngle();\n const startAngle = angles.startAngle;\n const endAngle = angles.endAngle;\n const innerRadius = arc.getComputedAttribute('innerRadius');\n const outerRadius = arc.getComputedAttribute('outerRadius');\n const angleDelta = Math.abs(startAngle - endAngle);\n const radiusDelta = Math.abs(outerRadius - innerRadius);\n\n const grids = splitToGrids((angleDelta * (innerRadius + outerRadius)) / 2, radiusDelta, count);\n const res = [];\n const gridRadius = radiusDelta / grids.length;\n const radiusSign = outerRadius >= innerRadius ? 1 : -1;\n const angleSign = endAngle >= startAngle ? 1 : -1;\n\n for (let i = 0, rowCount = grids.length; i < rowCount; i++) {\n const columnCount = grids[i];\n const gridAngle = angleDelta / columnCount;\n for (let j = 0; j < columnCount; j++) {\n // from outter to inner\n res.push({\n innerRadius: outerRadius - gridRadius * i * radiusSign,\n outerRadius: outerRadius - gridRadius * (i + 1) * radiusSign,\n startAngle: startAngle + gridAngle * j * angleSign,\n endAngle: startAngle + gridAngle * (j + 1) * angleSign\n });\n }\n }\n\n return res;\n};\n\nexport const splitCircle = (arc: ICircle, count: number) => {\n const x = 0;\n const y = 0;\n const startAngle = arc.getComputedAttribute('startAngle');\n const endAngle = arc.getComputedAttribute('endAngle');\n const radius = arc.getComputedAttribute('radius');\n const angleDelta = Math.abs(startAngle - endAngle);\n\n const grids = splitToGrids(angleDelta * radius, radius, count);\n const res = [];\n const gridAngle = angleDelta / grids[0];\n const gridRadius = radius / grids.length;\n const angleSign = endAngle >= startAngle ? 1 : -1;\n\n for (let i = 0, rowCount = grids.length; i < rowCount; i++) {\n for (let j = 0, columnCount = grids[i]; j < columnCount; j++) {\n res.push({\n innerRadius: gridRadius * i,\n outerRadius: gridRadius * (i + 1),\n startAngle: startAngle + gridAngle * j * angleSign,\n endAngle: startAngle + gridAngle * (j + 1) * angleSign\n });\n }\n }\n\n return res;\n};\n\nconst samplingPoints = (points: IPointLike[], count: number) => {\n const validatePoints = points.filter(point => point.defined !== false && isNumber(point.x) && isNumber(point.y));\n\n if (validatePoints.length === 0) {\n return [];\n }\n if (validatePoints.length === 1) {\n return new Array(count).fill(0).map(i => validatePoints[0]);\n }\n\n const res = [];\n if (count <= validatePoints.length) {\n const step = validatePoints.length / count;\n let i = 0;\n let cur = 0;\n\n while (i < count) {\n res.push(validatePoints[Math.floor(cur)]);\n\n cur += step;\n i++;\n }\n\n return res;\n }\n\n const insertCount = count - validatePoints.length;\n const insertStep = insertCount / (validatePoints.length - 1);\n const insetRatio = 1 / (insertStep + 1);\n let curCount = 0;\n\n for (let i = 0, len = points.length; i < len; i++) {\n res.push(points[i]);\n\n if (i < len - 1) {\n let cur = insetRatio;\n const xCur = points[i].x;\n const yCur = points[i].y;\n const xNext = points[i + 1].x;\n const yNext = points[i + 1].y;\n\n while (cur < 1 && curCount < insertCount) {\n res.push({\n x: xCur + (xNext - xCur) * cur,\n y: yCur + (yNext - yCur) * cur\n });\n cur += insetRatio;\n curCount += 1;\n }\n }\n }\n\n return res;\n};\n\nexport const splitArea = (area: IArea, count: number) => {\n const attribute = area.attribute;\n let points = attribute.points;\n const segements = attribute.segments;\n\n if (!points) {\n points = segements.reduce((res, seg) => {\n return res.concat(seg.points ?? []);\n }, []);\n }\n const validatePoints = points.filter(point => point.defined !== false && isNumber(point.x) && isNumber(point.y));\n\n if (!validatePoints.length) {\n return [];\n }\n\n const allPoints: IPointLike[] = [];\n\n validatePoints.forEach(point => {\n allPoints.push({ x: point.x, y: point.y });\n });\n\n for (let i = validatePoints.length - 1; i >= 0; i--) {\n const point = validatePoints[i];\n\n allPoints.push({ x: point.x1 ?? point.x, y: point.y1 ?? point.y });\n }\n\n const res: { points: IPointLike[] }[] = [];\n\n recursiveCallBinarySplit(points, count, res);\n\n return res;\n};\n\nexport const splitLine = (line: ILine, count: number) => {\n const attribute = line.attribute;\n const points = attribute.points;\n\n if (points) {\n return samplingPoints(points, count);\n } else if (attribute.segments) {\n const segs = attribute.segments;\n const allPoints = segs.reduce((res, seg) => {\n return res.concat(seg.points ?? []);\n }, []);\n\n return samplingPoints(allPoints, count);\n }\n return [];\n};\n\nfunction crossProduct(dir1: [number, number], dir2: [number, number]): number {\n return dir1[0] * dir2[1] - dir1[1] * dir2[0];\n}\n\nconst clonePoints = (points: IPointLike[]) => {\n return points.map(p => ({ x: p.x, y: p.y }));\n};\n\nconst splitPolygonByLine = (points: IPointLike[], p0: IPointLike, p1: IPointLike) => {\n const len = points.length;\n const intersections: { dot: number; point: IPointLike; edgeIndex: number }[] = [];\n\n for (let i = 0; i < len; i++) {\n const cur = points[i];\n const next = i === len - 1 ? points[0] : points[i + 1];\n\n const res = getIntersectPoint([p0.x, p0.y], [p1.x, p1.y], [cur.x, cur.y], [next.x, next.y]);\n\n if (res && typeof res !== 'boolean') {\n intersections.push({\n dot: crossProduct([res[0] - p0.x, res[1] - p0.x], [p1.x - p0.x, p1.y - p0.x]),\n point: { x: res[0], y: res[1] },\n edgeIndex: i\n });\n }\n }\n\n if (intersections.length < 2) {\n // 没有交点或者和某条边共线\n return [clonePoints(points), clonePoints(points)];\n }\n\n intersections.sort((a, b) => a.dot - b.dot);\n let is0 = intersections[0];\n let is1 = intersections[intersections.length - 1];\n\n if (is0.edgeIndex > is1.edgeIndex) {\n [is0, is1] = [is1, is0];\n }\n\n const newP0 = is0.point;\n const newP1 = is1.point;\n const newPointsA = [{ x: newP0.x, y: newP0.y }];\n\n for (let i = is0.edgeIndex + 1; i <= is1.edgeIndex; i++) {\n newPointsA.push({ x: points[i].x, y: points[i].y });\n }\n newPointsA.push({ x: newP1.x, y: newP1.y });\n\n const newPointsB = [{ x: newP1.x, y: newP1.y }];\n for (let i = is1.edgeIndex + 1, maxIndex = is0.edgeIndex + len; i <= maxIndex; i++) {\n const p = points[i % len];\n newPointsB.push({ x: p.x, y: p.y });\n }\n newPointsB.push({ x: newP0.x, y: newP0.y });\n\n return [newPointsA, newPointsB];\n};\n\nexport const binarySplitPolygon = (points: IPointLike[]) => {\n const box = new Bounds();\n\n points.forEach(point => {\n box.add(point.x, point.y);\n });\n const width = box.width();\n const height = box.height();\n\n if (width >= height) {\n // split horizontal\n const midX = box.x1 + width / 2;\n\n return splitPolygonByLine(\n points,\n {\n x: midX,\n y: box.y1\n },\n {\n x: midX,\n y: box.y2\n }\n );\n }\n // split vertical\n const midY = box.y1 + height / 2;\n\n return splitPolygonByLine(\n points,\n {\n x: box.x1,\n y: midY\n },\n {\n x: box.x2,\n y: midY\n }\n );\n};\n\nexport const recursiveCallBinarySplit = (points: IPointLike[], count: number, out: { points: IPointLike[] }[]) => {\n if (count === 1) {\n out.push({ points });\n } else {\n const half = Math.floor(count / 2);\n const res = binarySplitPolygon(points);\n\n recursiveCallBinarySplit(res[0], half, out);\n recursiveCallBinarySplit(res[1], count - half, out);\n }\n};\n\nexport const splitPolygon = (polygon: IPolygon, count: number) => {\n const points = polygon.attribute.points;\n\n if (!points || !points.length) {\n return [];\n }\n if (count === 1) {\n return [{ points: clonePoints(points) }];\n }\n const res: { points: IPointLike[] }[] = [];\n\n recursiveCallBinarySplit(points, count, res);\n\n return res;\n};\n\nexport const splitPath = (path: IPath, count: number) => {\n const pathShape = path.getParsedPathShape();\n const bezierCurves = pathToBezierCurves(pathShape);\n\n if (!bezierCurves.length || count < 0) {\n return [];\n }\n\n const subPathCnt = bezierCurves.length;\n\n if (bezierCurves.length >= count) {\n const res: { path: ICustomPath2D }[] = [];\n const stepCount = Math.floor(bezierCurves.length / count);\n\n for (let i = 0; i < count; i++) {\n const curves = bezierCurves.slice(i * stepCount, i === count - 1 ? subPathCnt : (i + 1) * stepCount);\n\n res.push({ path: bezierCurversToPath(curves) });\n }\n\n return res;\n }\n\n const res: { points: IPointLike[] }[] = [];\n const stepCount = Math.floor(count / subPathCnt);\n let remain = count;\n\n for (let c = 0; c < subPathCnt; c++) {\n const points: IPointLike[] = [];\n\n for (let i = 2, len = bezierCurves[c].length; i < len; i += 2) {\n points.push({ x: bezierCurves[0][i], y: bezierCurves[0][i + 1] });\n }\n recursiveCallBinarySplit(points, c === subPathCnt - 1 ? remain : stepCount, res);\n remain -= stepCount;\n }\n\n return res;\n};\n"]}