@visactor/vrender-core 0.19.4-alpha.4 → 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 (776) hide show
  1. package/cjs/allocator/allocator-modules.js +0 -2
  2. package/cjs/allocator/bounds-allocate.js +1 -1
  3. package/cjs/allocator/bounds-allocate.js.map +1 -1
  4. package/cjs/allocator/canvas-allocate.js +11 -9
  5. package/cjs/allocator/canvas-allocate.js.map +1 -1
  6. package/cjs/allocator/graphic-allocate.js +5 -9
  7. package/cjs/allocator/graphic-allocate.js.map +1 -1
  8. package/cjs/allocator/matrix-allocate.js +2 -6
  9. package/cjs/allocator/matrix-allocate.js.map +1 -1
  10. package/cjs/animate/Ticker/default-ticker.js +25 -14
  11. package/cjs/animate/Ticker/default-ticker.js.map +1 -1
  12. package/cjs/animate/animate.js +8 -7
  13. package/cjs/animate/animate.js.map +1 -1
  14. package/cjs/animate/config.js +1 -2
  15. package/cjs/animate/custom-animate.js +54 -51
  16. package/cjs/animate/custom-animate.js.map +1 -1
  17. package/cjs/animate/easing.js +19 -8
  18. package/cjs/animate/easing.js.map +1 -1
  19. package/cjs/animate/morphing.js +20 -23
  20. package/cjs/animate/morphing.js.map +1 -1
  21. package/cjs/application.js +7 -1
  22. package/cjs/application.js.map +1 -1
  23. package/cjs/canvas/conical-gradient.js +12 -5
  24. package/cjs/canvas/conical-gradient.js.map +1 -1
  25. package/cjs/canvas/contributions/base-canvas.js +19 -7
  26. package/cjs/canvas/contributions/base-canvas.js.map +1 -1
  27. package/cjs/color-string/interpolate.js +5 -3
  28. package/cjs/color-string/interpolate.js.map +1 -1
  29. package/cjs/color-string/store.js +3 -1
  30. package/cjs/color-string/store.js.map +1 -1
  31. package/cjs/common/bounds-context.js +1 -0
  32. package/cjs/common/bounds-context.js.map +1 -1
  33. package/cjs/common/canvas-utils.js +3 -6
  34. package/cjs/common/canvas-utils.js.map +1 -1
  35. package/cjs/common/contribution-provider.js +3 -0
  36. package/cjs/common/contribution-provider.js.map +1 -1
  37. package/cjs/common/custom-path2d.js +7 -1
  38. package/cjs/common/custom-path2d.js.map +1 -1
  39. package/cjs/common/generator.js +2 -1
  40. package/cjs/common/generator.js.map +1 -1
  41. package/cjs/common/inversify/binding.js +12 -0
  42. package/cjs/common/inversify/binding.js.map +1 -1
  43. package/cjs/common/inversify/container.js +4 -0
  44. package/cjs/common/inversify/container.js.map +1 -1
  45. package/cjs/common/inversify/cotainer-module.js +2 -0
  46. package/cjs/common/inversify/cotainer-module.js.map +1 -1
  47. package/cjs/common/inversify/meta-data.js +2 -0
  48. package/cjs/common/inversify/meta-data.js.map +1 -1
  49. package/cjs/common/inversify/syntax/binding_in_syntax.js +1 -0
  50. package/cjs/common/inversify/syntax/binding_in_syntax.js.map +1 -1
  51. package/cjs/common/inversify/syntax/binding_to_syntax.js +1 -0
  52. package/cjs/common/inversify/syntax/binding_to_syntax.js.map +1 -1
  53. package/cjs/common/inversify-lite/annotation/lazy_service_identifier.js +1 -0
  54. package/cjs/common/inversify-lite/annotation/lazy_service_identifier.js.map +1 -1
  55. package/cjs/common/inversify-lite/bindings/binding.js +14 -0
  56. package/cjs/common/inversify-lite/bindings/binding.js.map +1 -1
  57. package/cjs/common/inversify-lite/container/container.js +22 -46
  58. package/cjs/common/inversify-lite/container/container.js.map +1 -1
  59. package/cjs/common/inversify-lite/container/container_module.js +4 -0
  60. package/cjs/common/inversify-lite/container/container_module.js.map +1 -1
  61. package/cjs/common/inversify-lite/container/lookup.js +1 -0
  62. package/cjs/common/inversify-lite/container/lookup.js.map +1 -1
  63. package/cjs/common/inversify-lite/planning/context.js +4 -0
  64. package/cjs/common/inversify-lite/planning/context.js.map +1 -1
  65. package/cjs/common/inversify-lite/planning/metadata.js +2 -0
  66. package/cjs/common/inversify-lite/planning/metadata.js.map +1 -1
  67. package/cjs/common/inversify-lite/planning/plan.js +2 -0
  68. package/cjs/common/inversify-lite/planning/plan.js.map +1 -1
  69. package/cjs/common/inversify-lite/planning/queryable_string.js +1 -0
  70. package/cjs/common/inversify-lite/planning/queryable_string.js.map +1 -1
  71. package/cjs/common/inversify-lite/planning/request.js +8 -0
  72. package/cjs/common/inversify-lite/planning/request.js.map +1 -1
  73. package/cjs/common/inversify-lite/planning/target.js +7 -0
  74. package/cjs/common/inversify-lite/planning/target.js.map +1 -1
  75. package/cjs/common/inversify-lite/resolution/instantiation.js +16 -42
  76. package/cjs/common/inversify-lite/resolution/instantiation.js.map +1 -1
  77. package/cjs/common/inversify-lite/scope/scope.js +3 -29
  78. package/cjs/common/inversify-lite/scope/scope.js.map +1 -1
  79. package/cjs/common/inversify-lite/syntax/binding_in_syntax.js +1 -0
  80. package/cjs/common/inversify-lite/syntax/binding_in_syntax.js.map +1 -1
  81. package/cjs/common/inversify-lite/syntax/binding_in_when_on_syntax.js +3 -0
  82. package/cjs/common/inversify-lite/syntax/binding_in_when_on_syntax.js.map +1 -1
  83. package/cjs/common/inversify-lite/syntax/binding_on_syntax.js +1 -0
  84. package/cjs/common/inversify-lite/syntax/binding_on_syntax.js.map +1 -1
  85. package/cjs/common/inversify-lite/syntax/binding_to_syntax.js +1 -0
  86. package/cjs/common/inversify-lite/syntax/binding_to_syntax.js.map +1 -1
  87. package/cjs/common/inversify-lite/syntax/binding_when_on_syntax.js +2 -0
  88. package/cjs/common/inversify-lite/syntax/binding_when_on_syntax.js.map +1 -1
  89. package/cjs/common/inversify-lite/syntax/binding_when_syntax.js +1 -0
  90. package/cjs/common/inversify-lite/syntax/binding_when_syntax.js.map +1 -1
  91. package/cjs/common/polygon.js +1 -2
  92. package/cjs/common/polygon.js.map +1 -1
  93. package/cjs/common/render-area.js +2 -3
  94. package/cjs/common/render-area.js.map +1 -1
  95. package/cjs/common/render-curve.js +4 -8
  96. package/cjs/common/render-curve.js.map +1 -1
  97. package/cjs/common/seg-context.js +12 -3
  98. package/cjs/common/seg-context.js.map +1 -1
  99. package/cjs/common/segment/basis.js +13 -0
  100. package/cjs/common/segment/basis.js.map +1 -1
  101. package/cjs/common/segment/common.js +2 -2
  102. package/cjs/common/segment/common.js.map +1 -1
  103. package/cjs/common/segment/curve/arc.js +2 -2
  104. package/cjs/common/segment/curve/arc.js.map +1 -1
  105. package/cjs/common/segment/curve/base.js +4 -0
  106. package/cjs/common/segment/curve/base.js.map +1 -1
  107. package/cjs/common/segment/curve/cubic-bezier.js +2 -2
  108. package/cjs/common/segment/curve/cubic-bezier.js.map +1 -1
  109. package/cjs/common/segment/curve/curve-context.js +4 -0
  110. package/cjs/common/segment/curve/curve-context.js.map +1 -1
  111. package/cjs/common/segment/curve/ellipse.js +3 -3
  112. package/cjs/common/segment/curve/ellipse.js.map +1 -1
  113. package/cjs/common/segment/curve/line.js +2 -1
  114. package/cjs/common/segment/curve/line.js.map +1 -1
  115. package/cjs/common/segment/curve/move.js +2 -1
  116. package/cjs/common/segment/curve/move.js.map +1 -1
  117. package/cjs/common/segment/curve/path.js +2 -0
  118. package/cjs/common/segment/curve/path.js.map +1 -1
  119. package/cjs/common/segment/curve/quadratic-bezier.js +2 -2
  120. package/cjs/common/segment/curve/quadratic-bezier.js.map +1 -1
  121. package/cjs/common/segment/linear-closed.js.map +1 -1
  122. package/cjs/common/segment/linear.js +10 -0
  123. package/cjs/common/segment/linear.js.map +1 -1
  124. package/cjs/common/segment/monotone.js +13 -0
  125. package/cjs/common/segment/monotone.js.map +1 -1
  126. package/cjs/common/segment/step.js +13 -2
  127. package/cjs/common/segment/step.js.map +1 -1
  128. package/cjs/common/sort.js +3 -34
  129. package/cjs/common/sort.js.map +1 -1
  130. package/cjs/common/split-path.js +4 -11
  131. package/cjs/common/split-path.js.map +1 -1
  132. package/cjs/common/utils.d.ts +1 -1
  133. package/cjs/common/utils.js +10 -6
  134. package/cjs/common/utils.js.map +1 -1
  135. package/cjs/common/xml/parser.js +3 -2
  136. package/cjs/common/xml/parser.js.map +1 -1
  137. package/cjs/core/camera.js +11 -4
  138. package/cjs/core/camera.js.map +1 -1
  139. package/cjs/core/contributions/env/base-contribution.js +6 -0
  140. package/cjs/core/contributions/env/base-contribution.js.map +1 -1
  141. package/cjs/core/contributions/layerHandler/canvas2d-contribution.js +20 -11
  142. package/cjs/core/contributions/layerHandler/canvas2d-contribution.js.map +1 -1
  143. package/cjs/core/contributions/layerHandler/empty-contribution.js +8 -8
  144. package/cjs/core/contributions/layerHandler/empty-contribution.js.map +1 -1
  145. package/cjs/core/contributions/layerHandler/offscreen2d-contribution.js +5 -6
  146. package/cjs/core/contributions/layerHandler/offscreen2d-contribution.js.map +1 -1
  147. package/cjs/core/contributions/textMeasure/AtextMeasure.js +11 -8
  148. package/cjs/core/contributions/textMeasure/AtextMeasure.js.map +1 -1
  149. package/cjs/core/contributions/textMeasure/layout.js +3 -0
  150. package/cjs/core/contributions/textMeasure/layout.js.map +1 -1
  151. package/cjs/core/contributions/window/base-contribution.js +2 -0
  152. package/cjs/core/contributions/window/base-contribution.js.map +1 -1
  153. package/cjs/core/global.js +8 -0
  154. package/cjs/core/global.js.map +1 -1
  155. package/cjs/core/graphic-utils.js +16 -5
  156. package/cjs/core/graphic-utils.js.map +1 -1
  157. package/cjs/core/layer-service.js +7 -7
  158. package/cjs/core/layer-service.js.map +1 -1
  159. package/cjs/core/layer.js +7 -9
  160. package/cjs/core/layer.js.map +1 -1
  161. package/cjs/core/stage.js +79 -35
  162. package/cjs/core/stage.js.map +1 -1
  163. package/cjs/core/window.js +16 -13
  164. package/cjs/core/window.js.map +1 -1
  165. package/cjs/event/event-manager.js +152 -143
  166. package/cjs/event/event-manager.js.map +1 -1
  167. package/cjs/event/event-system.js +60 -43
  168. package/cjs/event/event-system.js.map +1 -1
  169. package/cjs/event/event-target.js +1 -3
  170. package/cjs/event/event-target.js.map +1 -1
  171. package/cjs/event/federated-event/base-event.js +43 -15
  172. package/cjs/event/federated-event/base-event.js.map +1 -1
  173. package/cjs/event/federated-event/mouse-event.js +27 -18
  174. package/cjs/event/federated-event/mouse-event.js.map +1 -1
  175. package/cjs/event/federated-event/pointer-event.js +13 -8
  176. package/cjs/event/federated-event/pointer-event.js.map +1 -1
  177. package/cjs/event/federated-event/wheel-event.js +14 -10
  178. package/cjs/event/federated-event/wheel-event.js.map +1 -1
  179. package/cjs/graphic/arc.js +10 -5
  180. package/cjs/graphic/arc.js.map +1 -1
  181. package/cjs/graphic/arc3d.js +7 -4
  182. package/cjs/graphic/arc3d.js.map +1 -1
  183. package/cjs/graphic/area.js +14 -9
  184. package/cjs/graphic/area.js.map +1 -1
  185. package/cjs/graphic/builtin-symbol/arrow.js +2 -3
  186. package/cjs/graphic/builtin-symbol/arrow.js.map +1 -1
  187. package/cjs/graphic/builtin-symbol/arrow2-down.js +2 -3
  188. package/cjs/graphic/builtin-symbol/arrow2-down.js.map +1 -1
  189. package/cjs/graphic/builtin-symbol/arrow2-left.js +2 -3
  190. package/cjs/graphic/builtin-symbol/arrow2-left.js.map +1 -1
  191. package/cjs/graphic/builtin-symbol/arrow2-right.js +2 -3
  192. package/cjs/graphic/builtin-symbol/arrow2-right.js.map +1 -1
  193. package/cjs/graphic/builtin-symbol/arrow2-up.js +2 -3
  194. package/cjs/graphic/builtin-symbol/arrow2-up.js.map +1 -1
  195. package/cjs/graphic/builtin-symbol/circle.js +2 -3
  196. package/cjs/graphic/builtin-symbol/circle.js.map +1 -1
  197. package/cjs/graphic/builtin-symbol/close.js +2 -3
  198. package/cjs/graphic/builtin-symbol/close.js.map +1 -1
  199. package/cjs/graphic/builtin-symbol/cross.js +2 -3
  200. package/cjs/graphic/builtin-symbol/cross.js.map +1 -1
  201. package/cjs/graphic/builtin-symbol/diamond.js +2 -3
  202. package/cjs/graphic/builtin-symbol/diamond.js.map +1 -1
  203. package/cjs/graphic/builtin-symbol/line-h.js +2 -3
  204. package/cjs/graphic/builtin-symbol/line-h.js.map +1 -1
  205. package/cjs/graphic/builtin-symbol/line-v.js +2 -3
  206. package/cjs/graphic/builtin-symbol/line-v.js.map +1 -1
  207. package/cjs/graphic/builtin-symbol/rect.js +2 -3
  208. package/cjs/graphic/builtin-symbol/rect.js.map +1 -1
  209. package/cjs/graphic/builtin-symbol/square.js +2 -3
  210. package/cjs/graphic/builtin-symbol/square.js.map +1 -1
  211. package/cjs/graphic/builtin-symbol/star.js +2 -3
  212. package/cjs/graphic/builtin-symbol/star.js.map +1 -1
  213. package/cjs/graphic/builtin-symbol/stroke.js +2 -3
  214. package/cjs/graphic/builtin-symbol/stroke.js.map +1 -1
  215. package/cjs/graphic/builtin-symbol/thin-triangle.js +2 -3
  216. package/cjs/graphic/builtin-symbol/thin-triangle.js.map +1 -1
  217. package/cjs/graphic/builtin-symbol/triangle-down.js +2 -3
  218. package/cjs/graphic/builtin-symbol/triangle-down.js.map +1 -1
  219. package/cjs/graphic/builtin-symbol/triangle-left.js +2 -3
  220. package/cjs/graphic/builtin-symbol/triangle-left.js.map +1 -1
  221. package/cjs/graphic/builtin-symbol/triangle-right.js +2 -3
  222. package/cjs/graphic/builtin-symbol/triangle-right.js.map +1 -1
  223. package/cjs/graphic/builtin-symbol/triangle-up.js +2 -3
  224. package/cjs/graphic/builtin-symbol/triangle-up.js.map +1 -1
  225. package/cjs/graphic/builtin-symbol/triangle.js +1 -3
  226. package/cjs/graphic/builtin-symbol/triangle.js.map +1 -1
  227. package/cjs/graphic/builtin-symbol/utils.js +6 -1
  228. package/cjs/graphic/builtin-symbol/utils.js.map +1 -1
  229. package/cjs/graphic/builtin-symbol/wedge.js +2 -3
  230. package/cjs/graphic/builtin-symbol/wedge.js.map +1 -1
  231. package/cjs/graphic/builtin-symbol/wye.js +2 -3
  232. package/cjs/graphic/builtin-symbol/wye.js.map +1 -1
  233. package/cjs/graphic/circle.js +8 -6
  234. package/cjs/graphic/circle.js.map +1 -1
  235. package/cjs/graphic/config.js +59 -32
  236. package/cjs/graphic/config.js.map +1 -1
  237. package/cjs/graphic/glyph.js +10 -9
  238. package/cjs/graphic/glyph.js.map +1 -1
  239. package/cjs/graphic/graphic-service/graphic-service.js +12 -8
  240. package/cjs/graphic/graphic-service/graphic-service.js.map +1 -1
  241. package/cjs/graphic/graphic.d.ts +1 -0
  242. package/cjs/graphic/graphic.js +32 -42
  243. package/cjs/graphic/graphic.js.map +1 -1
  244. package/cjs/graphic/group.js +9 -5
  245. package/cjs/graphic/group.js.map +1 -1
  246. package/cjs/graphic/image.js +18 -16
  247. package/cjs/graphic/image.js.map +1 -1
  248. package/cjs/graphic/line.js +11 -6
  249. package/cjs/graphic/line.js.map +1 -1
  250. package/cjs/graphic/node-tree.js +25 -44
  251. package/cjs/graphic/node-tree.js.map +1 -1
  252. package/cjs/graphic/path.js +12 -6
  253. package/cjs/graphic/path.js.map +1 -1
  254. package/cjs/graphic/polygon.js +7 -4
  255. package/cjs/graphic/polygon.js.map +1 -1
  256. package/cjs/graphic/pyramid3d.js +4 -3
  257. package/cjs/graphic/pyramid3d.js.map +1 -1
  258. package/cjs/graphic/rect.js +7 -3
  259. package/cjs/graphic/rect.js.map +1 -1
  260. package/cjs/graphic/rect3d.js +5 -4
  261. package/cjs/graphic/rect3d.js.map +1 -1
  262. package/cjs/graphic/richtext/frame.js +19 -0
  263. package/cjs/graphic/richtext/frame.js.map +1 -1
  264. package/cjs/graphic/richtext/icon.js +14 -6
  265. package/cjs/graphic/richtext/icon.js.map +1 -1
  266. package/cjs/graphic/richtext/line.js +14 -2
  267. package/cjs/graphic/richtext/line.js.map +1 -1
  268. package/cjs/graphic/richtext/paragraph.js +22 -0
  269. package/cjs/graphic/richtext/paragraph.js.map +1 -1
  270. package/cjs/graphic/richtext/utils.js +1 -2
  271. package/cjs/graphic/richtext/utils.js.map +1 -1
  272. package/cjs/graphic/richtext/wrapper.js +12 -0
  273. package/cjs/graphic/richtext/wrapper.js.map +1 -1
  274. package/cjs/graphic/richtext.js +38 -45
  275. package/cjs/graphic/richtext.js.map +1 -1
  276. package/cjs/graphic/shadow-root.js +2 -1
  277. package/cjs/graphic/shadow-root.js.map +1 -1
  278. package/cjs/graphic/symbol.js +12 -5
  279. package/cjs/graphic/symbol.js.map +1 -1
  280. package/cjs/graphic/text.js +45 -45
  281. package/cjs/graphic/text.js.map +1 -1
  282. package/cjs/graphic/theme.js +4 -0
  283. package/cjs/graphic/theme.js.map +1 -1
  284. package/cjs/graphic/tools.js +16 -44
  285. package/cjs/graphic/tools.js.map +1 -1
  286. package/cjs/graphic/wrap-text.js +7 -7
  287. package/cjs/graphic/wrap-text.js.map +1 -1
  288. package/cjs/interface/global.d.ts +2 -1
  289. package/cjs/interface/global.js.map +1 -1
  290. package/cjs/interface/graphic.d.ts +1 -0
  291. package/cjs/interface/graphic.js.map +1 -1
  292. package/cjs/picker/global-picker-service.js +1 -0
  293. package/cjs/picker/global-picker-service.js.map +1 -1
  294. package/cjs/picker/pick-interceptor.js +5 -15
  295. package/cjs/picker/pick-interceptor.js.map +1 -1
  296. package/cjs/picker/picker-service.js +5 -5
  297. package/cjs/picker/picker-service.js.map +1 -1
  298. package/cjs/plugins/builtin-plugin/3dview-transform-plugin.js +26 -20
  299. package/cjs/plugins/builtin-plugin/3dview-transform-plugin.js.map +1 -1
  300. package/cjs/plugins/builtin-plugin/auto-render-plugin.js +5 -4
  301. package/cjs/plugins/builtin-plugin/auto-render-plugin.js.map +1 -1
  302. package/cjs/plugins/builtin-plugin/dirty-bounds-plugin.js +5 -4
  303. package/cjs/plugins/builtin-plugin/dirty-bounds-plugin.js.map +1 -1
  304. package/cjs/plugins/builtin-plugin/flex-layout-plugin.js +11 -8
  305. package/cjs/plugins/builtin-plugin/flex-layout-plugin.js.map +1 -1
  306. package/cjs/plugins/builtin-plugin/html-attribute-plugin.js +28 -19
  307. package/cjs/plugins/builtin-plugin/html-attribute-plugin.js.map +1 -1
  308. package/cjs/plugins/builtin-plugin/incremental-auto-render-plugin.js +12 -8
  309. package/cjs/plugins/builtin-plugin/incremental-auto-render-plugin.js.map +1 -1
  310. package/cjs/plugins/builtin-plugin/react-attribute-plugin.js +6 -7
  311. package/cjs/plugins/builtin-plugin/react-attribute-plugin.js.map +1 -1
  312. package/cjs/plugins/plugin-service.js +1 -0
  313. package/cjs/plugins/plugin-service.js.map +1 -1
  314. package/cjs/render/contributions/render/arc-render.js +6 -4
  315. package/cjs/render/contributions/render/arc-render.js.map +1 -1
  316. package/cjs/render/contributions/render/arc3d-render.js +5 -7
  317. package/cjs/render/contributions/render/arc3d-render.js.map +1 -1
  318. package/cjs/render/contributions/render/area-render.js +21 -23
  319. package/cjs/render/contributions/render/area-render.js.map +1 -1
  320. package/cjs/render/contributions/render/base-render.js +5 -0
  321. package/cjs/render/contributions/render/base-render.js.map +1 -1
  322. package/cjs/render/contributions/render/circle-render.js +6 -4
  323. package/cjs/render/contributions/render/circle-render.js.map +1 -1
  324. package/cjs/render/contributions/render/contributions/arc-contribution-render.js +3 -4
  325. package/cjs/render/contributions/render/contributions/arc-contribution-render.js.map +1 -1
  326. package/cjs/render/contributions/render/contributions/area-texture-contribution-render.js +6 -9
  327. package/cjs/render/contributions/render/contributions/area-texture-contribution-render.js.map +1 -1
  328. package/cjs/render/contributions/render/contributions/base-contribution-render.js +10 -8
  329. package/cjs/render/contributions/render/contributions/base-contribution-render.js.map +1 -1
  330. package/cjs/render/contributions/render/contributions/base-texture-contribution-render.js +4 -4
  331. package/cjs/render/contributions/render/contributions/base-texture-contribution-render.js.map +1 -1
  332. package/cjs/render/contributions/render/contributions/circle-contribution-render.js +3 -4
  333. package/cjs/render/contributions/render/contributions/circle-contribution-render.js.map +1 -1
  334. package/cjs/render/contributions/render/contributions/group-contribution-render.js +1 -3
  335. package/cjs/render/contributions/render/contributions/group-contribution-render.js.map +1 -1
  336. package/cjs/render/contributions/render/contributions/image-contribution-render.js +1 -3
  337. package/cjs/render/contributions/render/contributions/image-contribution-render.js.map +1 -1
  338. package/cjs/render/contributions/render/contributions/rect-contribution-render.js +11 -14
  339. package/cjs/render/contributions/render/contributions/rect-contribution-render.js.map +1 -1
  340. package/cjs/render/contributions/render/contributions/symbol-contribution-render.js +3 -4
  341. package/cjs/render/contributions/render/contributions/symbol-contribution-render.js.map +1 -1
  342. package/cjs/render/contributions/render/contributions/text-contribution-render.js +6 -8
  343. package/cjs/render/contributions/render/contributions/text-contribution-render.js.map +1 -1
  344. package/cjs/render/contributions/render/draw-contribution.js +12 -14
  345. package/cjs/render/contributions/render/draw-contribution.js.map +1 -1
  346. package/cjs/render/contributions/render/draw-interceptor.js +11 -21
  347. package/cjs/render/contributions/render/draw-interceptor.js.map +1 -1
  348. package/cjs/render/contributions/render/glyph-render.js +2 -3
  349. package/cjs/render/contributions/render/glyph-render.js.map +1 -1
  350. package/cjs/render/contributions/render/graphic-render.js +4 -1
  351. package/cjs/render/contributions/render/graphic-render.js.map +1 -1
  352. package/cjs/render/contributions/render/group-render.js +7 -3
  353. package/cjs/render/contributions/render/group-render.js.map +1 -1
  354. package/cjs/render/contributions/render/image-render.js +4 -2
  355. package/cjs/render/contributions/render/image-render.js.map +1 -1
  356. package/cjs/render/contributions/render/incremental-area-render.js +1 -3
  357. package/cjs/render/contributions/render/incremental-area-render.js.map +1 -1
  358. package/cjs/render/contributions/render/incremental-draw-contribution.js +80 -109
  359. package/cjs/render/contributions/render/incremental-draw-contribution.js.map +1 -1
  360. package/cjs/render/contributions/render/incremental-line-render.js +1 -3
  361. package/cjs/render/contributions/render/incremental-line-render.js.map +1 -1
  362. package/cjs/render/contributions/render/line-render.js +12 -16
  363. package/cjs/render/contributions/render/line-render.js.map +1 -1
  364. package/cjs/render/contributions/render/path-render.js +8 -7
  365. package/cjs/render/contributions/render/path-render.js.map +1 -1
  366. package/cjs/render/contributions/render/polygon-render.js +6 -4
  367. package/cjs/render/contributions/render/polygon-render.js.map +1 -1
  368. package/cjs/render/contributions/render/pyramid3d-render.js +3 -5
  369. package/cjs/render/contributions/render/pyramid3d-render.js.map +1 -1
  370. package/cjs/render/contributions/render/rect-render.js +8 -7
  371. package/cjs/render/contributions/render/rect-render.js.map +1 -1
  372. package/cjs/render/contributions/render/rect3d-render.js +5 -7
  373. package/cjs/render/contributions/render/rect3d-render.js.map +1 -1
  374. package/cjs/render/contributions/render/richtext-render.js +4 -3
  375. package/cjs/render/contributions/render/richtext-render.js.map +1 -1
  376. package/cjs/render/contributions/render/symbol-render.js +11 -14
  377. package/cjs/render/contributions/render/symbol-render.js.map +1 -1
  378. package/cjs/render/contributions/render/text-render.js +8 -8
  379. package/cjs/render/contributions/render/text-render.js.map +1 -1
  380. package/cjs/render/contributions/render/utils.js +1 -1
  381. package/cjs/render/contributions/render/utils.js.map +1 -1
  382. package/cjs/render/render-service.js +11 -2
  383. package/cjs/render/render-service.js.map +1 -1
  384. package/cjs/resource-loader/loader.js +13 -16
  385. package/cjs/resource-loader/loader.js.map +1 -1
  386. package/cjs/tapable/Hook.js +3 -0
  387. package/cjs/tapable/Hook.js.map +1 -1
  388. package/dist/index.es.js +28908 -0
  389. package/es/allocator/allocator-modules.js +0 -2
  390. package/es/allocator/bounds-allocate.js +1 -1
  391. package/es/allocator/bounds-allocate.js.map +1 -1
  392. package/es/allocator/canvas-allocate.js +11 -9
  393. package/es/allocator/canvas-allocate.js.map +1 -1
  394. package/es/allocator/graphic-allocate.js +5 -9
  395. package/es/allocator/graphic-allocate.js.map +1 -1
  396. package/es/allocator/matrix-allocate.js +2 -6
  397. package/es/allocator/matrix-allocate.js.map +1 -1
  398. package/es/animate/Ticker/default-ticker.js +25 -14
  399. package/es/animate/Ticker/default-ticker.js.map +1 -1
  400. package/es/animate/animate.js +7 -8
  401. package/es/animate/animate.js.map +1 -1
  402. package/es/animate/config.js +1 -2
  403. package/es/animate/custom-animate.js +52 -50
  404. package/es/animate/custom-animate.js.map +1 -1
  405. package/es/animate/easing.js +18 -8
  406. package/es/animate/easing.js.map +1 -1
  407. package/es/animate/morphing.js +20 -23
  408. package/es/animate/morphing.js.map +1 -1
  409. package/es/application.js +7 -1
  410. package/es/application.js.map +1 -1
  411. package/es/canvas/conical-gradient.js +12 -6
  412. package/es/canvas/conical-gradient.js.map +1 -1
  413. package/es/canvas/contributions/base-canvas.js +19 -7
  414. package/es/canvas/contributions/base-canvas.js.map +1 -1
  415. package/es/color-string/interpolate.js +5 -3
  416. package/es/color-string/interpolate.js.map +1 -1
  417. package/es/color-string/store.js +2 -2
  418. package/es/color-string/store.js.map +1 -1
  419. package/es/common/bounds-context.js +1 -0
  420. package/es/common/bounds-context.js.map +1 -1
  421. package/es/common/canvas-utils.js +3 -6
  422. package/es/common/canvas-utils.js.map +1 -1
  423. package/es/common/contribution-provider.js +3 -0
  424. package/es/common/contribution-provider.js.map +1 -1
  425. package/es/common/custom-path2d.js +7 -1
  426. package/es/common/custom-path2d.js.map +1 -1
  427. package/es/common/generator.js +1 -2
  428. package/es/common/generator.js.map +1 -1
  429. package/es/common/inversify/binding.js +12 -0
  430. package/es/common/inversify/binding.js.map +1 -1
  431. package/es/common/inversify/container.js +4 -0
  432. package/es/common/inversify/container.js.map +1 -1
  433. package/es/common/inversify/cotainer-module.js +2 -0
  434. package/es/common/inversify/cotainer-module.js.map +1 -1
  435. package/es/common/inversify/meta-data.js +2 -0
  436. package/es/common/inversify/meta-data.js.map +1 -1
  437. package/es/common/inversify/syntax/binding_in_syntax.js +1 -0
  438. package/es/common/inversify/syntax/binding_in_syntax.js.map +1 -1
  439. package/es/common/inversify/syntax/binding_to_syntax.js +1 -0
  440. package/es/common/inversify/syntax/binding_to_syntax.js.map +1 -1
  441. package/es/common/inversify-lite/annotation/lazy_service_identifier.js +1 -0
  442. package/es/common/inversify-lite/annotation/lazy_service_identifier.js.map +1 -1
  443. package/es/common/inversify-lite/bindings/binding.js +14 -0
  444. package/es/common/inversify-lite/bindings/binding.js.map +1 -1
  445. package/es/common/inversify-lite/container/container.js +22 -48
  446. package/es/common/inversify-lite/container/container.js.map +1 -1
  447. package/es/common/inversify-lite/container/container_module.js +4 -0
  448. package/es/common/inversify-lite/container/container_module.js.map +1 -1
  449. package/es/common/inversify-lite/container/lookup.js +1 -0
  450. package/es/common/inversify-lite/container/lookup.js.map +1 -1
  451. package/es/common/inversify-lite/planning/context.js +4 -0
  452. package/es/common/inversify-lite/planning/context.js.map +1 -1
  453. package/es/common/inversify-lite/planning/metadata.js +2 -0
  454. package/es/common/inversify-lite/planning/metadata.js.map +1 -1
  455. package/es/common/inversify-lite/planning/plan.js +2 -0
  456. package/es/common/inversify-lite/planning/plan.js.map +1 -1
  457. package/es/common/inversify-lite/planning/queryable_string.js +1 -0
  458. package/es/common/inversify-lite/planning/queryable_string.js.map +1 -1
  459. package/es/common/inversify-lite/planning/request.js +8 -0
  460. package/es/common/inversify-lite/planning/request.js.map +1 -1
  461. package/es/common/inversify-lite/planning/target.js +7 -0
  462. package/es/common/inversify-lite/planning/target.js.map +1 -1
  463. package/es/common/inversify-lite/resolution/instantiation.js +16 -44
  464. package/es/common/inversify-lite/resolution/instantiation.js.map +1 -1
  465. package/es/common/inversify-lite/scope/scope.js +3 -29
  466. package/es/common/inversify-lite/scope/scope.js.map +1 -1
  467. package/es/common/inversify-lite/syntax/binding_in_syntax.js +1 -0
  468. package/es/common/inversify-lite/syntax/binding_in_syntax.js.map +1 -1
  469. package/es/common/inversify-lite/syntax/binding_in_when_on_syntax.js +3 -0
  470. package/es/common/inversify-lite/syntax/binding_in_when_on_syntax.js.map +1 -1
  471. package/es/common/inversify-lite/syntax/binding_on_syntax.js +1 -0
  472. package/es/common/inversify-lite/syntax/binding_on_syntax.js.map +1 -1
  473. package/es/common/inversify-lite/syntax/binding_to_syntax.js +1 -0
  474. package/es/common/inversify-lite/syntax/binding_to_syntax.js.map +1 -1
  475. package/es/common/inversify-lite/syntax/binding_when_on_syntax.js +2 -0
  476. package/es/common/inversify-lite/syntax/binding_when_on_syntax.js.map +1 -1
  477. package/es/common/inversify-lite/syntax/binding_when_syntax.js +1 -0
  478. package/es/common/inversify-lite/syntax/binding_when_syntax.js.map +1 -1
  479. package/es/common/polygon.js +1 -2
  480. package/es/common/polygon.js.map +1 -1
  481. package/es/common/render-area.js +2 -3
  482. package/es/common/render-area.js.map +1 -1
  483. package/es/common/render-curve.js +4 -8
  484. package/es/common/render-curve.js.map +1 -1
  485. package/es/common/seg-context.js +12 -3
  486. package/es/common/seg-context.js.map +1 -1
  487. package/es/common/segment/basis.js +13 -0
  488. package/es/common/segment/basis.js.map +1 -1
  489. package/es/common/segment/common.js +1 -1
  490. package/es/common/segment/common.js.map +1 -1
  491. package/es/common/segment/curve/arc.js +2 -1
  492. package/es/common/segment/curve/arc.js.map +1 -1
  493. package/es/common/segment/curve/base.js +4 -0
  494. package/es/common/segment/curve/base.js.map +1 -1
  495. package/es/common/segment/curve/cubic-bezier.js +2 -2
  496. package/es/common/segment/curve/cubic-bezier.js.map +1 -1
  497. package/es/common/segment/curve/curve-context.js +4 -0
  498. package/es/common/segment/curve/curve-context.js.map +1 -1
  499. package/es/common/segment/curve/ellipse.js +3 -3
  500. package/es/common/segment/curve/ellipse.js.map +1 -1
  501. package/es/common/segment/curve/line.js +2 -1
  502. package/es/common/segment/curve/line.js.map +1 -1
  503. package/es/common/segment/curve/move.js +2 -1
  504. package/es/common/segment/curve/move.js.map +1 -1
  505. package/es/common/segment/curve/path.js +2 -0
  506. package/es/common/segment/curve/path.js.map +1 -1
  507. package/es/common/segment/curve/quadratic-bezier.js +2 -2
  508. package/es/common/segment/curve/quadratic-bezier.js.map +1 -1
  509. package/es/common/segment/linear-closed.js.map +1 -1
  510. package/es/common/segment/linear.js +10 -0
  511. package/es/common/segment/linear.js.map +1 -1
  512. package/es/common/segment/monotone.js +13 -0
  513. package/es/common/segment/monotone.js.map +1 -1
  514. package/es/common/segment/step.js +12 -1
  515. package/es/common/segment/step.js.map +1 -1
  516. package/es/common/sort.js +3 -34
  517. package/es/common/sort.js.map +1 -1
  518. package/es/common/split-path.js +4 -11
  519. package/es/common/split-path.js.map +1 -1
  520. package/es/common/utils.d.ts +1 -1
  521. package/es/common/utils.js +9 -7
  522. package/es/common/utils.js.map +1 -1
  523. package/es/common/xml/parser.js +2 -2
  524. package/es/common/xml/parser.js.map +1 -1
  525. package/es/core/camera.js +11 -4
  526. package/es/core/camera.js.map +1 -1
  527. package/es/core/contributions/env/base-contribution.js +6 -0
  528. package/es/core/contributions/env/base-contribution.js.map +1 -1
  529. package/es/core/contributions/layerHandler/canvas2d-contribution.js +20 -11
  530. package/es/core/contributions/layerHandler/canvas2d-contribution.js.map +1 -1
  531. package/es/core/contributions/layerHandler/empty-contribution.js +8 -8
  532. package/es/core/contributions/layerHandler/empty-contribution.js.map +1 -1
  533. package/es/core/contributions/layerHandler/offscreen2d-contribution.js +5 -6
  534. package/es/core/contributions/layerHandler/offscreen2d-contribution.js.map +1 -1
  535. package/es/core/contributions/textMeasure/AtextMeasure.js +11 -8
  536. package/es/core/contributions/textMeasure/AtextMeasure.js.map +1 -1
  537. package/es/core/contributions/textMeasure/layout.js +3 -0
  538. package/es/core/contributions/textMeasure/layout.js.map +1 -1
  539. package/es/core/contributions/window/base-contribution.js +2 -0
  540. package/es/core/contributions/window/base-contribution.js.map +1 -1
  541. package/es/core/global.js +8 -0
  542. package/es/core/global.js.map +1 -1
  543. package/es/core/graphic-utils.js +16 -5
  544. package/es/core/graphic-utils.js.map +1 -1
  545. package/es/core/layer-service.js +7 -7
  546. package/es/core/layer-service.js.map +1 -1
  547. package/es/core/layer.js +7 -9
  548. package/es/core/layer.js.map +1 -1
  549. package/es/core/stage.js +79 -35
  550. package/es/core/stage.js.map +1 -1
  551. package/es/core/window.js +16 -14
  552. package/es/core/window.js.map +1 -1
  553. package/es/event/event-manager.js +152 -143
  554. package/es/event/event-manager.js.map +1 -1
  555. package/es/event/event-system.js +60 -43
  556. package/es/event/event-system.js.map +1 -1
  557. package/es/event/event-target.js +1 -3
  558. package/es/event/event-target.js.map +1 -1
  559. package/es/event/federated-event/base-event.js +43 -15
  560. package/es/event/federated-event/base-event.js.map +1 -1
  561. package/es/event/federated-event/mouse-event.js +27 -18
  562. package/es/event/federated-event/mouse-event.js.map +1 -1
  563. package/es/event/federated-event/pointer-event.js +13 -8
  564. package/es/event/federated-event/pointer-event.js.map +1 -1
  565. package/es/event/federated-event/wheel-event.js +13 -11
  566. package/es/event/federated-event/wheel-event.js.map +1 -1
  567. package/es/graphic/arc.js +9 -6
  568. package/es/graphic/arc.js.map +1 -1
  569. package/es/graphic/arc3d.js +6 -5
  570. package/es/graphic/arc3d.js.map +1 -1
  571. package/es/graphic/area.js +13 -10
  572. package/es/graphic/area.js.map +1 -1
  573. package/es/graphic/builtin-symbol/arrow.js +2 -3
  574. package/es/graphic/builtin-symbol/arrow.js.map +1 -1
  575. package/es/graphic/builtin-symbol/arrow2-down.js +2 -3
  576. package/es/graphic/builtin-symbol/arrow2-down.js.map +1 -1
  577. package/es/graphic/builtin-symbol/arrow2-left.js +2 -3
  578. package/es/graphic/builtin-symbol/arrow2-left.js.map +1 -1
  579. package/es/graphic/builtin-symbol/arrow2-right.js +2 -3
  580. package/es/graphic/builtin-symbol/arrow2-right.js.map +1 -1
  581. package/es/graphic/builtin-symbol/arrow2-up.js +2 -3
  582. package/es/graphic/builtin-symbol/arrow2-up.js.map +1 -1
  583. package/es/graphic/builtin-symbol/circle.js +2 -3
  584. package/es/graphic/builtin-symbol/circle.js.map +1 -1
  585. package/es/graphic/builtin-symbol/close.js +2 -3
  586. package/es/graphic/builtin-symbol/close.js.map +1 -1
  587. package/es/graphic/builtin-symbol/cross.js +2 -3
  588. package/es/graphic/builtin-symbol/cross.js.map +1 -1
  589. package/es/graphic/builtin-symbol/diamond.js +2 -3
  590. package/es/graphic/builtin-symbol/diamond.js.map +1 -1
  591. package/es/graphic/builtin-symbol/line-h.js +2 -3
  592. package/es/graphic/builtin-symbol/line-h.js.map +1 -1
  593. package/es/graphic/builtin-symbol/line-v.js +2 -3
  594. package/es/graphic/builtin-symbol/line-v.js.map +1 -1
  595. package/es/graphic/builtin-symbol/rect.js +2 -3
  596. package/es/graphic/builtin-symbol/rect.js.map +1 -1
  597. package/es/graphic/builtin-symbol/square.js +2 -3
  598. package/es/graphic/builtin-symbol/square.js.map +1 -1
  599. package/es/graphic/builtin-symbol/star.js +2 -3
  600. package/es/graphic/builtin-symbol/star.js.map +1 -1
  601. package/es/graphic/builtin-symbol/stroke.js +2 -3
  602. package/es/graphic/builtin-symbol/stroke.js.map +1 -1
  603. package/es/graphic/builtin-symbol/thin-triangle.js +2 -3
  604. package/es/graphic/builtin-symbol/thin-triangle.js.map +1 -1
  605. package/es/graphic/builtin-symbol/triangle-down.js +2 -3
  606. package/es/graphic/builtin-symbol/triangle-down.js.map +1 -1
  607. package/es/graphic/builtin-symbol/triangle-left.js +2 -3
  608. package/es/graphic/builtin-symbol/triangle-left.js.map +1 -1
  609. package/es/graphic/builtin-symbol/triangle-right.js +2 -3
  610. package/es/graphic/builtin-symbol/triangle-right.js.map +1 -1
  611. package/es/graphic/builtin-symbol/triangle-up.js +2 -3
  612. package/es/graphic/builtin-symbol/triangle-up.js.map +1 -1
  613. package/es/graphic/builtin-symbol/triangle.js +1 -3
  614. package/es/graphic/builtin-symbol/triangle.js.map +1 -1
  615. package/es/graphic/builtin-symbol/utils.js +6 -2
  616. package/es/graphic/builtin-symbol/utils.js.map +1 -1
  617. package/es/graphic/builtin-symbol/wedge.js +2 -3
  618. package/es/graphic/builtin-symbol/wedge.js.map +1 -1
  619. package/es/graphic/builtin-symbol/wye.js +2 -3
  620. package/es/graphic/builtin-symbol/wye.js.map +1 -1
  621. package/es/graphic/circle.js +7 -6
  622. package/es/graphic/circle.js.map +1 -1
  623. package/es/graphic/config.js +73 -44
  624. package/es/graphic/config.js.map +1 -1
  625. package/es/graphic/glyph.js +9 -9
  626. package/es/graphic/glyph.js.map +1 -1
  627. package/es/graphic/graphic-service/graphic-service.js +12 -8
  628. package/es/graphic/graphic-service/graphic-service.js.map +1 -1
  629. package/es/graphic/graphic.d.ts +1 -0
  630. package/es/graphic/graphic.js +32 -42
  631. package/es/graphic/graphic.js.map +1 -1
  632. package/es/graphic/group.js +8 -5
  633. package/es/graphic/group.js.map +1 -1
  634. package/es/graphic/image.js +17 -16
  635. package/es/graphic/image.js.map +1 -1
  636. package/es/graphic/line.js +10 -7
  637. package/es/graphic/line.js.map +1 -1
  638. package/es/graphic/node-tree.js +25 -44
  639. package/es/graphic/node-tree.js.map +1 -1
  640. package/es/graphic/path.js +11 -7
  641. package/es/graphic/path.js.map +1 -1
  642. package/es/graphic/polygon.js +6 -4
  643. package/es/graphic/polygon.js.map +1 -1
  644. package/es/graphic/pyramid3d.js +3 -3
  645. package/es/graphic/pyramid3d.js.map +1 -1
  646. package/es/graphic/rect.js +6 -4
  647. package/es/graphic/rect.js.map +1 -1
  648. package/es/graphic/rect3d.js +4 -4
  649. package/es/graphic/rect3d.js.map +1 -1
  650. package/es/graphic/richtext/frame.js +19 -0
  651. package/es/graphic/richtext/frame.js.map +1 -1
  652. package/es/graphic/richtext/icon.js +14 -6
  653. package/es/graphic/richtext/icon.js.map +1 -1
  654. package/es/graphic/richtext/line.js +14 -2
  655. package/es/graphic/richtext/line.js.map +1 -1
  656. package/es/graphic/richtext/paragraph.js +22 -0
  657. package/es/graphic/richtext/paragraph.js.map +1 -1
  658. package/es/graphic/richtext/utils.js +1 -2
  659. package/es/graphic/richtext/utils.js.map +1 -1
  660. package/es/graphic/richtext/wrapper.js +12 -0
  661. package/es/graphic/richtext/wrapper.js.map +1 -1
  662. package/es/graphic/richtext.js +37 -46
  663. package/es/graphic/richtext.js.map +1 -1
  664. package/es/graphic/shadow-root.js +2 -1
  665. package/es/graphic/shadow-root.js.map +1 -1
  666. package/es/graphic/symbol.js +11 -6
  667. package/es/graphic/symbol.js.map +1 -1
  668. package/es/graphic/text.js +39 -40
  669. package/es/graphic/text.js.map +1 -1
  670. package/es/graphic/theme.js +4 -0
  671. package/es/graphic/theme.js.map +1 -1
  672. package/es/graphic/tools.js +16 -44
  673. package/es/graphic/tools.js.map +1 -1
  674. package/es/graphic/wrap-text.js +6 -6
  675. package/es/graphic/wrap-text.js.map +1 -1
  676. package/es/interface/global.d.ts +2 -1
  677. package/es/interface/global.js.map +1 -1
  678. package/es/interface/graphic.d.ts +1 -0
  679. package/es/interface/graphic.js.map +1 -1
  680. package/es/picker/global-picker-service.js +1 -0
  681. package/es/picker/global-picker-service.js.map +1 -1
  682. package/es/picker/pick-interceptor.js +5 -15
  683. package/es/picker/pick-interceptor.js.map +1 -1
  684. package/es/picker/picker-service.js +5 -5
  685. package/es/picker/picker-service.js.map +1 -1
  686. package/es/plugins/builtin-plugin/3dview-transform-plugin.js +26 -20
  687. package/es/plugins/builtin-plugin/3dview-transform-plugin.js.map +1 -1
  688. package/es/plugins/builtin-plugin/auto-render-plugin.js +5 -4
  689. package/es/plugins/builtin-plugin/auto-render-plugin.js.map +1 -1
  690. package/es/plugins/builtin-plugin/dirty-bounds-plugin.js +5 -4
  691. package/es/plugins/builtin-plugin/dirty-bounds-plugin.js.map +1 -1
  692. package/es/plugins/builtin-plugin/flex-layout-plugin.js +11 -8
  693. package/es/plugins/builtin-plugin/flex-layout-plugin.js.map +1 -1
  694. package/es/plugins/builtin-plugin/html-attribute-plugin.js +28 -17
  695. package/es/plugins/builtin-plugin/html-attribute-plugin.js.map +1 -1
  696. package/es/plugins/builtin-plugin/incremental-auto-render-plugin.js +12 -8
  697. package/es/plugins/builtin-plugin/incremental-auto-render-plugin.js.map +1 -1
  698. package/es/plugins/builtin-plugin/react-attribute-plugin.js +6 -6
  699. package/es/plugins/builtin-plugin/react-attribute-plugin.js.map +1 -1
  700. package/es/plugins/plugin-service.js +1 -0
  701. package/es/plugins/plugin-service.js.map +1 -1
  702. package/es/render/contributions/render/arc-render.js +6 -4
  703. package/es/render/contributions/render/arc-render.js.map +1 -1
  704. package/es/render/contributions/render/arc3d-render.js +5 -7
  705. package/es/render/contributions/render/arc3d-render.js.map +1 -1
  706. package/es/render/contributions/render/area-render.js +21 -23
  707. package/es/render/contributions/render/area-render.js.map +1 -1
  708. package/es/render/contributions/render/base-render.js +5 -0
  709. package/es/render/contributions/render/base-render.js.map +1 -1
  710. package/es/render/contributions/render/circle-render.js +6 -4
  711. package/es/render/contributions/render/circle-render.js.map +1 -1
  712. package/es/render/contributions/render/contributions/arc-contribution-render.js +3 -3
  713. package/es/render/contributions/render/contributions/arc-contribution-render.js.map +1 -1
  714. package/es/render/contributions/render/contributions/area-texture-contribution-render.js +2 -5
  715. package/es/render/contributions/render/contributions/area-texture-contribution-render.js.map +1 -1
  716. package/es/render/contributions/render/contributions/base-contribution-render.js +10 -7
  717. package/es/render/contributions/render/contributions/base-contribution-render.js.map +1 -1
  718. package/es/render/contributions/render/contributions/base-texture-contribution-render.js +4 -3
  719. package/es/render/contributions/render/contributions/base-texture-contribution-render.js.map +1 -1
  720. package/es/render/contributions/render/contributions/circle-contribution-render.js +3 -3
  721. package/es/render/contributions/render/contributions/circle-contribution-render.js.map +1 -1
  722. package/es/render/contributions/render/contributions/group-contribution-render.js +1 -3
  723. package/es/render/contributions/render/contributions/group-contribution-render.js.map +1 -1
  724. package/es/render/contributions/render/contributions/image-contribution-render.js +1 -3
  725. package/es/render/contributions/render/contributions/image-contribution-render.js.map +1 -1
  726. package/es/render/contributions/render/contributions/rect-contribution-render.js +11 -11
  727. package/es/render/contributions/render/contributions/rect-contribution-render.js.map +1 -1
  728. package/es/render/contributions/render/contributions/symbol-contribution-render.js +3 -3
  729. package/es/render/contributions/render/contributions/symbol-contribution-render.js.map +1 -1
  730. package/es/render/contributions/render/contributions/text-contribution-render.js +6 -8
  731. package/es/render/contributions/render/contributions/text-contribution-render.js.map +1 -1
  732. package/es/render/contributions/render/draw-contribution.js +12 -14
  733. package/es/render/contributions/render/draw-contribution.js.map +1 -1
  734. package/es/render/contributions/render/draw-interceptor.js +11 -21
  735. package/es/render/contributions/render/draw-interceptor.js.map +1 -1
  736. package/es/render/contributions/render/glyph-render.js +2 -3
  737. package/es/render/contributions/render/glyph-render.js.map +1 -1
  738. package/es/render/contributions/render/graphic-render.js +4 -1
  739. package/es/render/contributions/render/graphic-render.js.map +1 -1
  740. package/es/render/contributions/render/group-render.js +7 -3
  741. package/es/render/contributions/render/group-render.js.map +1 -1
  742. package/es/render/contributions/render/image-render.js +5 -2
  743. package/es/render/contributions/render/image-render.js.map +1 -1
  744. package/es/render/contributions/render/incremental-area-render.js +1 -3
  745. package/es/render/contributions/render/incremental-area-render.js.map +1 -1
  746. package/es/render/contributions/render/incremental-draw-contribution.js +80 -109
  747. package/es/render/contributions/render/incremental-draw-contribution.js.map +1 -1
  748. package/es/render/contributions/render/incremental-line-render.js +1 -3
  749. package/es/render/contributions/render/incremental-line-render.js.map +1 -1
  750. package/es/render/contributions/render/line-render.js +12 -16
  751. package/es/render/contributions/render/line-render.js.map +1 -1
  752. package/es/render/contributions/render/path-render.js +8 -6
  753. package/es/render/contributions/render/path-render.js.map +1 -1
  754. package/es/render/contributions/render/polygon-render.js +6 -4
  755. package/es/render/contributions/render/polygon-render.js.map +1 -1
  756. package/es/render/contributions/render/pyramid3d-render.js +3 -5
  757. package/es/render/contributions/render/pyramid3d-render.js.map +1 -1
  758. package/es/render/contributions/render/rect-render.js +8 -6
  759. package/es/render/contributions/render/rect-render.js.map +1 -1
  760. package/es/render/contributions/render/rect3d-render.js +5 -7
  761. package/es/render/contributions/render/rect3d-render.js.map +1 -1
  762. package/es/render/contributions/render/richtext-render.js +4 -3
  763. package/es/render/contributions/render/richtext-render.js.map +1 -1
  764. package/es/render/contributions/render/symbol-render.js +11 -14
  765. package/es/render/contributions/render/symbol-render.js.map +1 -1
  766. package/es/render/contributions/render/text-render.js +9 -8
  767. package/es/render/contributions/render/text-render.js.map +1 -1
  768. package/es/render/contributions/render/utils.js +1 -1
  769. package/es/render/contributions/render/utils.js.map +1 -1
  770. package/es/render/render-service.js +11 -2
  771. package/es/render/render-service.js.map +1 -1
  772. package/es/resource-loader/loader.js +12 -17
  773. package/es/resource-loader/loader.js.map +1 -1
  774. package/es/tapable/Hook.js +3 -0
  775. package/es/tapable/Hook.js.map +1 -1
  776. package/package.json +1 -1
@@ -1 +1 @@
1
- {"version":3,"sources":["../src/animate/animate.ts"],"names":[],"mappings":"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","file":"animate.js","sourcesContent":["import type {\n EasingType,\n EasingTypeFunc,\n IAnimate,\n IAnimateStepType,\n IAnimateTarget,\n ICustomAnimate,\n IGraphic,\n IStep,\n IStepConfig,\n ISubAnimate,\n ITimeline\n} from '../interface';\nimport { AnimateMode, AnimateStatus, AnimateStepType, AttributeUpdateType } from '../common/enums';\nimport { Easing } from './easing';\nimport { Logger, max } from '@visactor/vutils';\nimport { defaultTimeline } from './timeline';\nimport { Generator } from '../common/generator';\n\n// 参考TweenJS\n// https://github.com/CreateJS/TweenJS/tree/master/src/tweenjs\n/**\n * The MIT License (MIT)\n\n Copyright (c) 2014 gskinner.com, inc.\n\n Permission is hereby granted, free of charge, to any person obtaining a copy\n of this software and associated documentation files (the \"Software\"), to deal\n in the Software without restriction, including without limitation the rights\n to use, copy, modify, merge, publish, distribute, sublicense, and/or sell\n copies of the Software, and to permit persons to whom the Software is\n furnished to do so, subject to the following conditions:\n\n The above copyright notice and this permission notice shall be included in all\n copies or substantial portions of the Software.\n\n THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\n OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE\n SOFTWARE.\n */\nexport abstract class ACustomAnimate<T> implements ICustomAnimate {\n declare from: T;\n declare to: T;\n declare duration: number;\n declare easing: EasingType;\n declare params: any;\n declare target: IAnimateTarget;\n declare updateCount: number;\n declare subAnimate: ISubAnimate;\n declare step?: IStep;\n declare mode?: AnimateMode;\n\n // 用于判断是否一致\n declare _endProps?: any;\n declare _mergedEndProps?: any;\n\n constructor(from: T, to: T, duration: number, easing: EasingType, params?: any) {\n this.from = from;\n this.to = to;\n this.duration = duration;\n this.easing = easing;\n this.params = params;\n this.updateCount = 0;\n }\n\n bind(target: IAnimateTarget, subAni: ISubAnimate) {\n this.target = target;\n this.subAnimate = subAni;\n this.onBind();\n }\n\n // 在第一次调用的时候触发\n onBind() {\n return;\n }\n\n // 第一次执行的时候调用\n onFirstRun() {\n return;\n }\n\n // 开始执行的时候调用(如果有循环,那每个周期都会调用)\n onStart() {\n return;\n }\n\n // 结束执行的时候调用(如果有循环,那每个周期都会调用)\n onEnd() {\n return;\n }\n\n getEndProps(): Record<string, any> | void {\n return;\n }\n\n getFromProps(): Record<string, any> | void {\n return this.from;\n }\n\n getMergedEndProps(): Record<string, any> | void {\n const thisEndProps = this.getEndProps();\n if (thisEndProps) {\n if (this._endProps === thisEndProps) {\n return this._mergedEndProps;\n }\n this._endProps = thisEndProps;\n this._mergedEndProps = Object.assign({}, this.step.prev.getLastProps() ?? {}, thisEndProps);\n return;\n }\n return this.step.prev ? this.step.prev.getLastProps() : thisEndProps;\n }\n\n // abstract getFromValue(key: string): any;\n // abstract getToValue(key: string): any;\n\n abstract onUpdate(end: boolean, ratio: number, out: Record<string, any>): void;\n\n update(end: boolean, ratio: number, out: Record<string, any>): void {\n if (this.updateCount === 0) {\n this.onFirstRun();\n // out添加之前的props\n const props = this.step.getLastProps();\n Object.keys(props).forEach(k => {\n if (this.subAnimate.animate.validAttr(k)) {\n out[k] = props[k];\n }\n });\n }\n this.updateCount += 1;\n this.onUpdate(end, ratio, out);\n if (end) {\n this.onEnd();\n }\n }\n}\n\nexport class CbAnimate extends ACustomAnimate<null> {\n cb: () => void;\n\n constructor(cb: () => void) {\n super(null, null, 0, 'linear');\n this.cb = cb;\n }\n\n onUpdate(end: boolean, ratio: number, out: Record<string, any>): void {\n return;\n }\n\n onStart(): void {\n this.cb();\n }\n}\n\ntype InterpolateFunc = (\n key: string,\n ratio: number,\n from: any,\n to: any,\n target: IAnimateTarget,\n out: Record<string, any>\n) => boolean;\n\nexport class Animate implements IAnimate {\n static mode: AnimateMode = AnimateMode.NORMAL;\n declare target: IAnimateTarget;\n declare timeline: ITimeline;\n declare nextAnimate?: IAnimate;\n declare prevAnimate?: IAnimate;\n // 当前Animate的状态,正常,暂停,结束\n declare status: AnimateStatus;\n declare readonly id: string | number;\n // 开始时间\n protected declare _startTime: number;\n protected declare _duringTime: number;\n declare subAnimates: SubAnimate[];\n declare tailAnimate: SubAnimate;\n\n // 绝对的位置\n declare rawPosition: number;\n // 时间倍速缩放\n declare timeScale: number;\n\n declare interpolateFunc: (key: string, ratio: number, from: any, to: any, nextAttributes: any) => boolean;\n\n declare _onStart?: (() => void)[];\n declare _onFrame?: ((step: IStep, ratio: number) => void)[];\n declare _onEnd?: (() => void)[];\n declare _onRemove?: (() => void)[];\n declare _preventAttrs?: Set<string>;\n static interpolateMap: Map<string, InterpolateFunc> = new Map();\n\n constructor(id: string | number = Generator.GenAutoIncrementId(), timeline: ITimeline = defaultTimeline) {\n this.id = id;\n this.timeline = timeline;\n this.status = AnimateStatus.INITIAL;\n this.tailAnimate = new SubAnimate(this);\n this.subAnimates = [this.tailAnimate];\n this.timeScale = 1;\n this.rawPosition = -1;\n this._startTime = 0;\n this._duringTime = 0;\n this.timeline.addAnimate(this);\n }\n\n setTimeline(timeline: ITimeline) {\n if (timeline === this.timeline) {\n return;\n }\n this.timeline.removeAnimate(this, false);\n timeline.addAnimate(this);\n }\n\n getStartTime(): number {\n return this._startTime;\n }\n\n getDuration(): number {\n return this.subAnimates.reduce((t, subAnimate) => t + subAnimate.totalDuration, 0);\n }\n\n after(animate: IAnimate) {\n const t = animate.getDuration();\n this._startTime = t;\n return this;\n }\n\n afterAll(list: IAnimate[]) {\n let maxT = -Infinity;\n list.forEach(a => {\n maxT = max(a.getDuration(), maxT);\n });\n this._startTime = maxT;\n return this;\n }\n\n parallel(animate: IAnimate) {\n this._startTime = animate.getStartTime();\n return this;\n }\n\n static AddInterpolate(name: string, cb: InterpolateFunc) {\n Animate.interpolateMap.set(name, cb);\n }\n\n play(customAnimate: ICustomAnimate) {\n this.tailAnimate.play(customAnimate);\n // todo: 考虑使用绑定的ticker执行\n if (this.target) {\n const stage = (this.target as IGraphic).stage;\n stage && stage.renderNextFrame();\n }\n if (this.subAnimates.length === 1 && this.tailAnimate.duration === customAnimate.duration) {\n this.trySetAttribute(customAnimate.getFromProps(), customAnimate.mode);\n }\n return this;\n }\n\n trySetAttribute(attr: Record<string, any> | void, mode: AnimateMode = Animate.mode) {\n if (attr && mode & AnimateMode.SET_ATTR_IMMEDIATELY) {\n (this.target as any).setAttributes &&\n (this.target as any).setAttributes(attr, false, { type: AttributeUpdateType.ANIMATE_PLAY });\n }\n }\n\n runCb(cb: (a: IAnimate, step: IStep) => void) {\n // this.tailAnimate.runCb(cb);\n const customAnimate = new CbAnimate(() => {\n cb(this, customAnimate.step.prev);\n });\n this.tailAnimate.play(customAnimate);\n return this;\n }\n\n /**\n * 自定义插值,返回false表示没有匹配上\n * @param key\n * @param from\n * @param to\n */\n customInterpolate(\n key: string,\n ratio: number,\n from: any,\n to: any,\n target: IAnimateTarget,\n ret: Record<string, any>\n ): boolean {\n const func = Animate.interpolateMap.get(key) || Animate.interpolateMap.get('');\n if (!func) {\n return false;\n }\n return func(key, ratio, from, to, target, ret);\n }\n\n pause() {\n if (this.status === AnimateStatus.RUNNING) {\n this.status = AnimateStatus.PAUSED;\n }\n }\n\n resume() {\n if (this.status === AnimateStatus.PAUSED) {\n this.status = AnimateStatus.RUNNING;\n }\n }\n\n to(props: Record<string, any>, duration: number, easing: EasingType, params?: IStepConfig) {\n this.tailAnimate.to(props, duration, easing, params);\n // 默认开始动画\n // todo: 考虑使用绑定的ticker执行\n if (this.target) {\n const stage = (this.target as IGraphic).stage;\n stage && stage.renderNextFrame();\n }\n // if (this.subAnimates.length === 1 && this.tailAnimate.duration === duration) {\n // this.trySetAttribute(props);\n // }\n return this;\n }\n from(props: Record<string, any>, duration: number, easing: EasingType, params?: IStepConfig) {\n this.tailAnimate.from(props, duration, easing, params);\n // todo: 考虑使用绑定的ticker执行\n if (this.target) {\n const stage = (this.target as IGraphic).stage;\n stage && stage.renderNextFrame();\n }\n return this;\n }\n wait(duration: number) {\n this.tailAnimate.wait(duration);\n // todo: 考虑使用绑定的ticker执行\n if (this.target) {\n const stage = (this.target as IGraphic).stage;\n stage && stage.renderNextFrame();\n }\n return this;\n }\n startAt(t: number) {\n this.tailAnimate.startAt(t);\n // todo: 考虑使用绑定的ticker执行\n if (this.target) {\n const stage = (this.target as IGraphic).stage;\n stage && stage.renderNextFrame();\n }\n return this;\n }\n\n loop(l: number) {\n this.tailAnimate.loop = l;\n // todo: 考虑使用绑定的ticker执行\n if (this.target) {\n const stage = (this.target as IGraphic).stage;\n stage && stage.renderNextFrame();\n }\n return this;\n }\n\n reversed(r: boolean) {\n this.tailAnimate.reversed = r;\n // todo: 考虑使用绑定的ticker执行\n if (this.target) {\n const stage = (this.target as IGraphic).stage;\n stage && stage.renderNextFrame();\n }\n return this;\n }\n\n bounce(b: boolean) {\n this.tailAnimate.bounce = b;\n // todo: 考虑使用绑定的ticker执行\n if (this.target) {\n const stage = (this.target as IGraphic).stage;\n stage && stage.renderNextFrame();\n }\n return this;\n }\n\n subAnimate() {\n const sa = new SubAnimate(this, this.tailAnimate);\n this.tailAnimate = sa;\n this.subAnimates.push(sa);\n sa.bind(this.target);\n return this;\n }\n\n getStartProps(): Record<string, any> {\n return this.subAnimates[0].getStartProps();\n }\n\n getEndProps(): Record<string, any> {\n return this.tailAnimate.getEndProps();\n }\n\n depreventAttr(key: string) {\n if (!this._preventAttrs) {\n return;\n }\n this._preventAttrs.delete(key);\n }\n preventAttr(key: string) {\n if (!this._preventAttrs) {\n this._preventAttrs = new Set();\n }\n this._preventAttrs.add(key);\n }\n preventAttrs(keys: string[]) {\n keys.forEach(key => this.preventAttr(key));\n }\n validAttr(key: string): boolean {\n if (!this._preventAttrs) {\n return true;\n }\n return !this._preventAttrs.has(key);\n }\n\n bind(target: IAnimateTarget) {\n this.target = target;\n\n if (this.target.onAnimateBind) {\n this.target.onAnimateBind(this);\n }\n\n this.subAnimates.forEach(sa => {\n sa.bind(target);\n });\n return this;\n }\n\n advance(delta: number) {\n // startTime之前的时间不计入耗时\n if (this._duringTime < this._startTime) {\n if (this._duringTime + delta * this.timeScale < this._startTime) {\n this._duringTime += delta * this.timeScale;\n return;\n }\n delta = this._duringTime + delta * this.timeScale - this._startTime;\n this._duringTime = this._startTime;\n }\n // 执行advance\n if (this.status === AnimateStatus.INITIAL) {\n this.status = AnimateStatus.RUNNING;\n this._onStart && this._onStart.forEach(cb => cb());\n }\n const end = this.setPosition(this.rawPosition + delta * this.timeScale);\n if (end && this.status === AnimateStatus.RUNNING) {\n this.status = AnimateStatus.END;\n this._onEnd && this._onEnd.forEach(cb => cb());\n }\n }\n\n setPosition(rawPosition: number): boolean {\n let d = 0;\n let sa: SubAnimate | undefined;\n const prevRawPos = this.rawPosition;\n const maxRawPos = this.subAnimates.reduce((a, b) => a + b.totalDuration, 0);\n\n if (rawPosition < 0) {\n rawPosition = 0;\n }\n\n const end = rawPosition >= maxRawPos;\n\n if (end) {\n rawPosition = maxRawPos;\n }\n\n if (rawPosition === prevRawPos) {\n return end;\n }\n\n // 查找对应的subAnimate\n for (let i = 0; i < this.subAnimates.length; i++) {\n sa = this.subAnimates[i];\n if (d + sa.totalDuration >= rawPosition) {\n break;\n } else {\n d += sa.totalDuration;\n sa = undefined;\n }\n }\n this.rawPosition = rawPosition;\n sa.setPosition(rawPosition - d);\n\n return end;\n }\n\n onStart(cb: () => void) {\n if (!this._onStart) {\n this._onStart = [];\n }\n this._onStart.push(cb);\n }\n onEnd(cb: () => void) {\n if (!this._onEnd) {\n this._onEnd = [];\n }\n this._onEnd.push(cb);\n }\n onRemove(cb: () => void) {\n if (!this._onRemove) {\n this._onRemove = [];\n }\n this._onRemove.push(cb);\n }\n onFrame(cb: (step: IStep, ratio: number) => void) {\n if (!this._onFrame) {\n this._onFrame = [];\n }\n this._onFrame.push(cb);\n }\n release() {\n this.status = AnimateStatus.END;\n return;\n }\n\n stop(nextVal?: 'start' | 'end' | Record<string, any>) {\n if (!nextVal) {\n this.target.onStop();\n }\n if (nextVal === 'start') {\n this.target.onStop(this.getStartProps());\n } else if (nextVal === 'end') {\n this.target.onStop(this.getEndProps());\n } else {\n this.target.onStop(nextVal);\n }\n this.release();\n }\n}\n\n// Animate.mode |= AnimateMode.SET_ATTR_IMMEDIATELY;\n\nexport class SubAnimate implements ISubAnimate {\n declare target: IAnimateTarget;\n declare animate: IAnimate;\n // 默认的初始step,一定存在,且stepHead的props一定保存整个subAnimate阶段所有属性的最初\n protected declare stepHead: Step;\n protected declare stepTail: Step;\n // 结束时反转动画\n declare bounce: boolean;\n // 是否reverse\n declare reversed: boolean;\n // 循环次数,0为执行一次,1为执行两次,Infinity为无限循环\n declare loop: number;\n // 持续时间,不包括循环\n declare duration: number;\n // 位置,在[0, duration]之间\n declare position: number;\n // 绝对的位置,在[0, loops * duration]之间\n declare rawPosition: number;\n declare dirty: boolean;\n\n declare _totalDuration: number;\n declare _startAt: number;\n declare _lastStep: IStep;\n declare _deltaPosition: number;\n\n get totalDuration(): number {\n this.calcAttr();\n return this._totalDuration + this._startAt;\n }\n\n constructor(animate: IAnimate, lastSubAnimate?: SubAnimate) {\n this.rawPosition = -1;\n this.position = 0;\n this.loop = 0;\n this.duration = 0;\n this.animate = animate;\n if (lastSubAnimate) {\n this.stepHead = new Step(0, 0, Object.assign({}, lastSubAnimate.stepTail.props));\n } else {\n this.stepHead = new Step(0, 0, {});\n }\n this.stepTail = this.stepHead;\n this.dirty = true;\n this._startAt = 0;\n }\n\n // 计算按需计算的属性\n protected calcAttr() {\n if (!this.dirty) {\n return;\n }\n\n this._totalDuration = this.duration * (this.loop + 1);\n }\n\n bind(target: IAnimateTarget) {\n this.target = target;\n return this;\n }\n\n play(customAnimate: ICustomAnimate) {\n let duration = customAnimate.duration;\n if (duration == null || duration < 0) {\n duration = 0;\n }\n const easing = customAnimate.easing;\n const easingFunc = typeof easing === 'string' ? Easing[easing] : easing;\n const step = this._addStep(duration, null, easingFunc);\n step.type = AnimateStepType.customAnimate;\n this._appendProps(customAnimate.getEndProps(), step, false);\n this._appendCustomAnimate(customAnimate, step);\n return this;\n }\n\n // _appendPlayProps(step: IStep) {\n\n // return;\n // }\n\n to(props: Record<string, any>, duration: number, easing: EasingType, params?: IStepConfig) {\n if (duration == null || duration < 0) {\n duration = 0;\n }\n\n const easingFunc = typeof easing === 'string' ? Easing[easing] : easing;\n\n const step = this._addStep(duration, null, easingFunc);\n step.type = AnimateStepType.to;\n this._appendProps(props, step, params ? params.tempProps : false);\n // this._appendPlayProps(step);\n\n if (!step.propKeys) {\n step.propKeys = Object.keys(step.props);\n }\n if (!(params && params.noPreventAttrs)) {\n this.target.animates.forEach(a => {\n if (a.id !== this.animate.id) {\n a.preventAttrs(step.propKeys);\n }\n });\n }\n return this;\n }\n\n from(props: Record<string, any>, duration: number, easing: EasingType, params?: IStepConfig) {\n this.to(props, 0, easing, params);\n const toProps = {};\n if (!this.stepTail.propKeys) {\n this.stepTail.propKeys = Object.keys(this.stepTail.props);\n }\n this.stepTail.propKeys.forEach(k => {\n toProps[k] = this.getLastPropByName(k, this.stepTail);\n });\n this.to(toProps, duration, easing, params);\n this.stepTail.type = AnimateStepType.from;\n }\n\n startAt(t: number) {\n if (t < 0) {\n t = 0;\n }\n this._startAt = t;\n return this;\n }\n\n getStartProps() {\n return this.stepHead?.props;\n }\n\n getEndProps() {\n return this.stepTail.props;\n }\n\n getLastStep() {\n return this._lastStep;\n }\n\n wait(duration: number) {\n if (duration > 0) {\n const step = this._addStep(+duration, null);\n\n step.type = AnimateStepType.wait;\n // TODO 这里如果跳帧的话会存在bug\n if (step.prev.customAnimate) {\n step.props = step.prev.customAnimate.getEndProps();\n } else {\n step.props = step.prev.props;\n }\n if (this.target.onAddStep) {\n this.target.onAddStep(step);\n }\n // this._appendPlayProps(step);\n }\n return this;\n }\n\n protected _addStep(duration: number, props: any, easingFunc?: EasingTypeFunc) {\n const step = new Step(this.duration, duration, props, easingFunc);\n this.duration += duration;\n this.stepTail.append(step);\n this.stepTail = step;\n return step;\n }\n\n protected _appendProps(props: any, step: Step, tempProps?: boolean) {\n if (tempProps) {\n step.props = props;\n } else {\n // todo: 是否需要深拷贝props\n step.props = Object.assign({}, props);\n }\n let lastStep = step.prev;\n const _props = step.props;\n // 将undefined的属性设置到默认值\n if (!step.propKeys) {\n step.propKeys = Object.keys(step.props);\n }\n step.propKeys.forEach(k => {\n if (step.props[k] === undefined) {\n step.props[k] = this.target.getDefaultAttribute(k);\n }\n });\n // 拷贝之前的step阶段属性\n while (lastStep.prev) {\n if (lastStep.props) {\n if (!lastStep.propKeys) {\n lastStep.propKeys = Object.keys(lastStep.props);\n }\n lastStep.propKeys.forEach(key => {\n if (_props[key] === undefined) {\n _props[key] = lastStep.props[key];\n }\n });\n }\n // 重置propKeys\n step.propKeys = Object.keys(step.props);\n lastStep = lastStep.prev;\n }\n\n // 设置最初的props属性\n const initProps = this.stepHead.props;\n if (!step.propKeys) {\n step.propKeys = Object.keys(_props);\n }\n step.propKeys.forEach(key => {\n if (initProps[key] === undefined) {\n const parentAnimateInitProps = this.animate.getStartProps();\n initProps[key] = parentAnimateInitProps[key] = this.target.getComputedAttribute(key);\n }\n });\n\n if (this.target.onAddStep) {\n this.target.onAddStep(step);\n }\n }\n\n protected _appendCustomAnimate(customAnimate: ICustomAnimate, step: Step) {\n step.customAnimate = customAnimate;\n customAnimate.step = step;\n customAnimate.bind(this.target, this);\n }\n\n setPosition(rawPosition: number) {\n const d = this.duration;\n const loopCount = this.loop;\n const prevRawPos = this.rawPosition;\n let end = false;\n let loop: number; // 当前是第几次循环\n let position: number; // 当前周期的时间\n const startAt = this._startAt ?? 0;\n\n if (rawPosition < 0) {\n rawPosition = 0;\n }\n if (rawPosition < startAt) {\n this.rawPosition = rawPosition;\n return false;\n }\n rawPosition = rawPosition - startAt;\n if (d <= 0) {\n // 如果不用执行,跳过\n end = true;\n return end;\n }\n loop = Math.floor(rawPosition / d);\n position = rawPosition - loop * d;\n\n // 计算rawPosition\n end = rawPosition >= loopCount * d + d;\n // 如果结束,跳过\n if (end) {\n position = d;\n loop = loopCount;\n rawPosition = position * loop + d;\n }\n\n if (rawPosition === prevRawPos) {\n return end;\n }\n\n // reverse动画\n const rev = !this.reversed !== !(this.bounce && loop % 2);\n if (rev) {\n position = d - position;\n }\n\n this._deltaPosition = position - this.position;\n this.position = position;\n this.rawPosition = rawPosition + startAt;\n\n this.updatePosition(end, rev);\n\n return end;\n }\n\n protected updatePosition(end: boolean, rev: boolean) {\n if (!this.stepHead) {\n return;\n }\n let step = this.stepHead.next;\n const position = this.position;\n const duration = this.duration;\n if (this.target && step) {\n let stepNext = step.next;\n while (stepNext && stepNext.position <= position) {\n step = stepNext;\n stepNext = step.next;\n }\n let ratio = end ? (duration === 0 ? 1 : position / duration) : (position - step.position) / step.duration; // TODO: revisit this.\n if (step.easing) {\n ratio = step.easing(ratio);\n }\n // 判断这次和上次过程中是否经历了自定义step,如果跳过了自定义step那么执行自定义step的onEnd\n this.tryCallCustomAnimateLifeCycle(step, this._lastStep || (rev ? this.stepTail : this.stepHead), rev);\n // if (step !== this._lastStep) {\n // if (this._deltaPosition > 0) {\n // let _step = step.prev;\n // while (_step && _step !== this._lastStep) {\n // if (_step.customAnimate) {\n // _step.customAnimate.onEnd();\n // }\n // _step = _step.prev;\n // }\n // if (_step && _step.customAnimate) {\n // _step.customAnimate.onEnd();\n // }\n // } else if (this._deltaPosition < 0) {\n // let _step = step.next;\n // while (_step && _step !== this._lastStep) {\n // if (_step.customAnimate) {\n // _step.customAnimate.onEnd();\n // }\n // _step = _step.next;\n // }\n // if (_step && _step.customAnimate) {\n // _step.customAnimate.onEnd();\n // }\n // }\n // }\n this.updateTarget(step, ratio, end);\n this._lastStep = step;\n\n this.animate._onFrame && this.animate._onFrame.forEach(cb => cb(step, ratio));\n }\n }\n\n // 如果动画卡顿跳过了自定义动画,那么尝试执行自定义动画的生命周期\n tryCallCustomAnimateLifeCycle(step: IStep, lastStep: IStep, rev: boolean) {\n if (step === lastStep) {\n return;\n }\n if (rev) {\n let _step = lastStep.prev;\n while (_step && _step !== step) {\n if (_step.customAnimate) {\n _step.customAnimate.onStart && _step.customAnimate.onStart();\n _step.customAnimate.onEnd && _step.customAnimate.onEnd();\n }\n _step = step.prev;\n }\n // 执行lastStep的onEnd和currentStep的onStart\n if (lastStep && lastStep.customAnimate) {\n lastStep.customAnimate.onEnd && lastStep.customAnimate.onEnd();\n }\n if (step && step.customAnimate) {\n step.customAnimate.onStart && step.customAnimate.onStart();\n }\n } else {\n let _step = lastStep.next;\n while (_step && _step !== step) {\n if (_step.customAnimate) {\n _step.customAnimate.onStart && _step.customAnimate.onStart();\n _step.customAnimate.onEnd && _step.customAnimate.onEnd();\n }\n _step = _step.next;\n }\n // 执行lastStep的onEnd和currentStep的onStart\n if (lastStep && lastStep.customAnimate) {\n lastStep.customAnimate.onEnd && lastStep.customAnimate.onEnd();\n }\n if (step && step.customAnimate) {\n step.customAnimate.onStart && step.customAnimate.onStart();\n }\n }\n }\n\n /**\n * 获取这个属性的上一个值\n * @param name\n * @param step\n * @returns\n */\n getLastPropByName(name: string, step: Step): any {\n let lastStep = step.prev;\n while (lastStep) {\n if (lastStep.props && lastStep.props[name] !== undefined) {\n return lastStep.props[name];\n } else if (lastStep.customAnimate) {\n const val = lastStep.customAnimate.getEndProps()[name];\n if (val !== undefined) {\n return val;\n }\n }\n lastStep = lastStep.prev;\n }\n\n Logger.getInstance().warn('未知错误,step中找不到属性');\n return step.props[name];\n }\n\n protected updateTarget(step: Step, ratio: number, end: boolean) {\n if (step.props == null && step.customAnimate == null) {\n return;\n }\n this.target.onStep(this, this.animate, step, ratio, end);\n }\n}\n\n// export class Animate implements IAnimate {\n// declare target: IAnimateTarget;\n// declare timeline: ITimeline;\n// protected declare stepHead: Step;\n// protected declare stepTail: Step;\n// declare nextAnimate?: Animate;\n// declare prevAnimate?: Animate;\n// // 结束时反转动画\n// declare bounce: boolean;\n// // 是否reverse\n// declare reversed: boolean;\n// // 循环次数,0为执行一次,1为执行两次,Infinity为无限循环\n// declare loop: number;\n// // 持续时间,不包括循环\n// declare duration: number;\n// // 当前Animate的状态,正常,暂停,结束\n// declare status: AnimateStatus;\n// // 位置,在[0, duration]之间\n// declare position: number;\n// // 绝对的位置,在[0, loops * duration]之间\n// declare rawPosition: number;\n// // 开始时间\n// protected declare _startAt: number;\n// // 时间的缩放,例如2表示2倍速\n// declare timeScale: number;\n// declare props: Record<string, any>;\n// declare readonly id: string | number;\n\n// protected declare _onStart?: (() => void)[];\n// protected declare _onFrame?: ((step: IStep, ratio: number) => void)[];\n// protected declare _onEnd?: (() => void)[];\n// declare _onRemove?: (() => void)[];\n// declare _preventAttrs?: Set<string>;\n\n// constructor(id: string | number = Generator.GenAutoIncrementId(), timeline: ITimeline = defaultTimeline) {\n// this.timeline = timeline;\n// this.status = AnimateStatus.INITIAL;\n// this.rawPosition = -1;\n// this.position = 0;\n// this.loop = 0;\n// this.timeline.addAnimate(this);\n// this.timeScale = 1;\n// this.id = id;\n// this.props = {};\n// this.stepHead = new Step(0, 0, {});\n// this.stepTail = this.stepHead;\n// }\n\n// preventAttr(key: string) {\n// if (!this._preventAttrs) {\n// this._preventAttrs = new Set();\n// }\n// this._preventAttrs.add(key);\n// }\n// preventAttrs(keys: string[]) {\n// keys.forEach(key => this.preventAttr(key));\n// }\n// validAttr(key: string): boolean {\n// if (!this._preventAttrs) {\n// return true;\n// }\n// return !this._preventAttrs.has(key);\n// }\n\n// getLastPropByName(name: string, step: Step): any {\n// let lastStep = step.prev;\n// while (lastStep) {\n// if (lastStep.props && lastStep.props[name] !== undefined) {\n// return lastStep.props[name];\n// }\n// lastStep = lastStep.prev;\n// }\n// let val = this.props[name];\n// if (!val) {\n// console.warn('未知错误,step中找不到属性');\n// val = this.target.getComputedAttribute(name);\n// this.props[name] = val;\n// }\n\n// return val;\n// }\n\n// bind(target: IAnimateTarget) {\n// this.target = target;\n// this.duration = 0;\n// return this;\n// }\n\n// startAt(t: number) {\n// if (t < 0) {\n// return this;\n// }\n// this._startAt = t;\n// return this;\n// }\n\n// to(props: Record<string, any>, duration: number, easing: EasingType, params?: IStepConfig) {\n// if (duration == null || duration < 0) {\n// duration = 0;\n// }\n\n// const easingFunc = typeof easing === 'string' ? Easing[easing] : easing;\n\n// const step = this._addStep(duration, null, easingFunc);\n// this._appendProps(props, step, params ? params.tempProps : false);\n// return this;\n// }\n\n// wait(duration: number) {\n// if (duration > 0) {\n// const step = this._addStep(+duration, null);\n// if (step.prev) {\n// step.props = step.prev.props;\n// }\n// if (this.target.onAddStep) {\n// this.target.onAddStep(step);\n// }\n// }\n// return this;\n// }\n\n// protected _addStep(duration: number, props: any, easingFunc?: EasingTypeFunc) {\n// const step = new Step(this.duration, duration, props, easingFunc);\n// this.duration += duration;\n// this.stepTail.append(step);\n// this.stepTail = step;\n// return step;\n// }\n\n// protected _appendProps(props: any, step: Step, tempProps?: boolean) {\n// if (tempProps) {\n// step.props = props;\n// } else {\n// // todo: 是否需要深拷贝props\n// step.props = Object.assign({}, props);\n// }\n// let lastStep = step.prev;\n// const _props = step.props;\n// // 拷贝之前的step阶段属性\n// while (lastStep.prev) {\n// if (lastStep.props) {\n// if (!lastStep.propKeys) {\n// lastStep.propKeys = Object.keys(lastStep.props);\n// }\n// lastStep.propKeys.forEach(key => {\n// if (_props[key] === undefined) {\n// _props[key] = lastStep.props[key];\n// }\n// });\n// }\n// lastStep = lastStep.prev;\n// }\n\n// // 设置最初的props属性\n// const initProps = this.stepHead.props;\n// if (!step.propKeys) {\n// step.propKeys = Object.keys(_props);\n// step.propKeys.forEach(key => {\n// initProps[key] = this.target.getComputedAttribute(key);\n// });\n// }\n\n// if (this.target.onAddStep) {\n// this.target.onAddStep(step);\n// }\n// }\n\n// advance(delta: number) {\n// if (this.status === AnimateStatus.INITIAL) {\n// this.status = AnimateStatus.RUNNING;\n// this._onStart && this._onStart.forEach(cb => cb());\n// }\n// const end = this.setPosition(this.rawPosition + delta * this.timeScale);\n// if (end && this.status === AnimateStatus.RUNNING) {\n// this.status = AnimateStatus.END;\n// this._onEnd && this._onEnd.forEach(cb => cb());\n// }\n// }\n\n// setPosition(rawPosition: number) {\n// const d = this.duration;\n// const loopCount = this.loop;\n// const prevRawPos = this.rawPosition;\n// let end = false;\n// let loop: number; // 当前是第几次循环\n// let position: number; // 当前周期的时间\n// const startAt = this._startAt ?? 0;\n\n// if (rawPosition < 0) {\n// rawPosition = 0;\n// }\n// if (rawPosition < startAt) {\n// this.rawPosition = rawPosition;\n// return false;\n// }\n// rawPosition = rawPosition - startAt;\n// if (d <= 0) {\n// // 如果不用执行,跳过\n// end = true;\n// return end;\n// }\n// loop = Math.floor(rawPosition / d);\n// position = rawPosition - loop * d;\n\n// // 计算rawPosition\n// end = rawPosition >= loopCount * d + d;\n// // 如果结束,跳过\n// if (end) {\n// position = d;\n// loop = loopCount;\n// rawPosition = position * loop + d;\n// }\n\n// if (rawPosition === prevRawPos) {\n// return end;\n// }\n\n// // reverse动画\n// const rev = !this.reversed !== !(this.bounce && loop % 2);\n// if (rev) {\n// position = d - position;\n// }\n\n// this.position = position;\n// this.rawPosition = rawPosition + startAt;\n\n// this.updatePosition(end);\n\n// return end;\n// }\n\n// protected updatePosition(end: boolean) {\n// if (!this.stepHead) {\n// return;\n// }\n// let step = this.stepHead;\n// const position = this.position;\n// const duration = this.duration;\n// if (this.target && step) {\n// let stepNext = step.next;\n// while (stepNext && stepNext.position <= position) {\n// step = step.next;\n// stepNext = step.next;\n// }\n// let ratio = end ? (duration === 0 ? 1 : position / duration) : (position - step.position) / step.duration; // TODO: revisit this.\n// if (step.easing) {\n// ratio = step.easing(ratio);\n// }\n// this.updateTarget(step, ratio, end);\n// this._onFrame && this._onFrame.forEach(cb => cb(step, ratio));\n// }\n// }\n\n// protected updateTarget(step: Step, ratio: number, end: boolean) {\n// if (step.props == null) {\n// return;\n// }\n// this.target.onStep(this, step, ratio, end);\n// }\n\n// onStart(cb: () => void) {\n// if (!this._onStart) {\n// this._onStart = [];\n// }\n// this._onStart.push(cb);\n// }\n// onEnd(cb: () => void) {\n// if (!this._onEnd) {\n// this._onEnd = [];\n// }\n// this._onEnd.push(cb);\n// }\n// onRemove(cb: () => void) {\n// if (!this._onRemove) {\n// this._onRemove = [];\n// }\n// this._onRemove.push(cb);\n// }\n// onFrame(cb: (step: IStep, ratio: number) => void) {\n// if (!this._onFrame) {\n// this._onFrame = [];\n// }\n// this._onFrame.push(cb);\n// }\n\n// getStartProps() {\n// return this.stepHead?.props;\n// }\n\n// getEndProps(target: Record<string, any> = {}) {\n// let step = this.stepHead;\n// while (step) {\n// if (step.props) {\n// Object.assign(target, step.props);\n// }\n// step = step.next;\n// }\n\n// return target;\n// }\n\n// stop(nextVal?: 'start' | 'end' | Record<string, any>) {\n// this.status = AnimateStatus.END;\n// if (!nextVal) {\n// this.target.onStop();\n// }\n// if (nextVal === 'start') {\n// this.target.onStop(this.getStartProps());\n// } else if (nextVal === 'end') {\n// this.target.onStop(this.getEndProps());\n// } else {\n// this.target.onStop(nextVal);\n// }\n// }\n\n// release() {\n// this.status = AnimateStatus.END;\n// return;\n// }\n// }\n\nclass Step implements IStep {\n declare prev?: Step;\n // 持续时间\n declare duration: number;\n // 在animate中的位置\n declare position: number;\n declare next?: Step;\n declare props: any;\n // 保存解析后的props,用于性能优化\n declare parsedProps?: any;\n declare propKeys?: string[];\n declare easing?: EasingTypeFunc;\n declare customAnimate?: ICustomAnimate;\n // passive: boolean;\n // index: number;\n type: IAnimateStepType;\n\n constructor(position: number, duration: number, props?: any, easing?: EasingTypeFunc) {\n this.duration = duration;\n this.position = position;\n this.props = props;\n this.easing = easing;\n }\n\n append(step: Step) {\n step.prev = this;\n step.next = this.next;\n this.next = step;\n }\n\n getLastProps() {\n let step = this.prev;\n while (step) {\n if (step.props) {\n return step.props;\n } else if (step.customAnimate) {\n return step.customAnimate.getMergedEndProps();\n }\n step = step.prev as any;\n }\n return null;\n }\n}\n"]}
1
+ {"version":3,"sources":["../src/animate/animate.ts"],"names":[],"mappings":"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","file":"animate.js","sourcesContent":["import type {\n EasingType,\n EasingTypeFunc,\n IAnimate,\n IAnimateStepType,\n IAnimateTarget,\n ICustomAnimate,\n IGraphic,\n IStep,\n IStepConfig,\n ISubAnimate,\n ITimeline\n} from '../interface';\nimport { AnimateMode, AnimateStatus, AnimateStepType, AttributeUpdateType } from '../common/enums';\nimport { Easing } from './easing';\nimport { Logger, max } from '@visactor/vutils';\nimport { defaultTimeline } from './timeline';\nimport { Generator } from '../common/generator';\n\n// 参考TweenJS\n// https://github.com/CreateJS/TweenJS/tree/master/src/tweenjs\n/**\n * The MIT License (MIT)\n\n Copyright (c) 2014 gskinner.com, inc.\n\n Permission is hereby granted, free of charge, to any person obtaining a copy\n of this software and associated documentation files (the \"Software\"), to deal\n in the Software without restriction, including without limitation the rights\n to use, copy, modify, merge, publish, distribute, sublicense, and/or sell\n copies of the Software, and to permit persons to whom the Software is\n furnished to do so, subject to the following conditions:\n\n The above copyright notice and this permission notice shall be included in all\n copies or substantial portions of the Software.\n\n THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\n OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE\n SOFTWARE.\n */\nexport abstract class ACustomAnimate<T> implements ICustomAnimate {\n declare from: T;\n declare to: T;\n declare duration: number;\n declare easing: EasingType;\n declare params: any;\n declare target: IAnimateTarget;\n declare updateCount: number;\n declare subAnimate: ISubAnimate;\n declare step?: IStep;\n declare mode?: AnimateMode;\n\n // 用于判断是否一致\n declare _endProps?: any;\n declare _mergedEndProps?: any;\n\n constructor(from: T, to: T, duration: number, easing: EasingType, params?: any) {\n this.from = from;\n this.to = to;\n this.duration = duration;\n this.easing = easing;\n this.params = params;\n this.updateCount = 0;\n }\n\n bind(target: IAnimateTarget, subAni: ISubAnimate) {\n this.target = target;\n this.subAnimate = subAni;\n this.onBind();\n }\n\n // 在第一次调用的时候触发\n onBind() {\n return;\n }\n\n // 第一次执行的时候调用\n onFirstRun() {\n return;\n }\n\n // 开始执行的时候调用(如果有循环,那每个周期都会调用)\n onStart() {\n return;\n }\n\n // 结束执行的时候调用(如果有循环,那每个周期都会调用)\n onEnd() {\n return;\n }\n\n getEndProps(): Record<string, any> | void {\n return;\n }\n\n getFromProps(): Record<string, any> | void {\n return this.from;\n }\n\n getMergedEndProps(): Record<string, any> | void {\n const thisEndProps = this.getEndProps();\n if (thisEndProps) {\n if (this._endProps === thisEndProps) {\n return this._mergedEndProps;\n }\n this._endProps = thisEndProps;\n this._mergedEndProps = Object.assign({}, this.step.prev.getLastProps() ?? {}, thisEndProps);\n return;\n }\n return this.step.prev ? this.step.prev.getLastProps() : thisEndProps;\n }\n\n // abstract getFromValue(key: string): any;\n // abstract getToValue(key: string): any;\n\n abstract onUpdate(end: boolean, ratio: number, out: Record<string, any>): void;\n\n update(end: boolean, ratio: number, out: Record<string, any>): void {\n if (this.updateCount === 0) {\n this.onFirstRun();\n // out添加之前的props\n const props = this.step.getLastProps();\n Object.keys(props).forEach(k => {\n if (this.subAnimate.animate.validAttr(k)) {\n out[k] = props[k];\n }\n });\n }\n this.updateCount += 1;\n this.onUpdate(end, ratio, out);\n if (end) {\n this.onEnd();\n }\n }\n}\n\nexport class CbAnimate extends ACustomAnimate<null> {\n cb: () => void;\n\n constructor(cb: () => void) {\n super(null, null, 0, 'linear');\n this.cb = cb;\n }\n\n onUpdate(end: boolean, ratio: number, out: Record<string, any>): void {\n return;\n }\n\n onStart(): void {\n this.cb();\n }\n}\n\ntype InterpolateFunc = (\n key: string,\n ratio: number,\n from: any,\n to: any,\n target: IAnimateTarget,\n out: Record<string, any>\n) => boolean;\n\nexport class Animate implements IAnimate {\n static mode: AnimateMode = AnimateMode.NORMAL;\n declare target: IAnimateTarget;\n declare timeline: ITimeline;\n declare nextAnimate?: IAnimate;\n declare prevAnimate?: IAnimate;\n // 当前Animate的状态,正常,暂停,结束\n declare status: AnimateStatus;\n declare readonly id: string | number;\n // 开始时间\n protected declare _startTime: number;\n protected declare _duringTime: number;\n declare subAnimates: SubAnimate[];\n declare tailAnimate: SubAnimate;\n\n // 绝对的位置\n declare rawPosition: number;\n // 时间倍速缩放\n declare timeScale: number;\n\n declare interpolateFunc: (key: string, ratio: number, from: any, to: any, nextAttributes: any) => boolean;\n\n declare _onStart?: (() => void)[];\n declare _onFrame?: ((step: IStep, ratio: number) => void)[];\n declare _onEnd?: (() => void)[];\n declare _onRemove?: (() => void)[];\n declare _preventAttrs?: Set<string>;\n static interpolateMap: Map<string, InterpolateFunc> = new Map();\n\n constructor(id: string | number = Generator.GenAutoIncrementId(), timeline: ITimeline = defaultTimeline) {\n this.id = id;\n this.timeline = timeline;\n this.status = AnimateStatus.INITIAL;\n this.tailAnimate = new SubAnimate(this);\n this.subAnimates = [this.tailAnimate];\n this.timeScale = 1;\n this.rawPosition = -1;\n this._startTime = 0;\n this._duringTime = 0;\n this.timeline.addAnimate(this);\n }\n\n setTimeline(timeline: ITimeline) {\n if (timeline === this.timeline) {\n return;\n }\n this.timeline.removeAnimate(this, false);\n timeline.addAnimate(this);\n }\n\n getStartTime(): number {\n return this._startTime;\n }\n\n getDuration(): number {\n return this.subAnimates.reduce((t, subAnimate) => t + subAnimate.totalDuration, 0);\n }\n\n after(animate: IAnimate) {\n const t = animate.getDuration();\n this._startTime = t;\n return this;\n }\n\n afterAll(list: IAnimate[]) {\n let maxT = -Infinity;\n list.forEach(a => {\n maxT = max(a.getDuration(), maxT);\n });\n this._startTime = maxT;\n return this;\n }\n\n parallel(animate: IAnimate) {\n this._startTime = animate.getStartTime();\n return this;\n }\n\n static AddInterpolate(name: string, cb: InterpolateFunc) {\n Animate.interpolateMap.set(name, cb);\n }\n\n play(customAnimate: ICustomAnimate) {\n this.tailAnimate.play(customAnimate);\n // todo: 考虑使用绑定的ticker执行\n if (this.target) {\n const stage = (this.target as IGraphic).stage;\n stage && stage.renderNextFrame();\n }\n if (this.subAnimates.length === 1 && this.tailAnimate.duration === customAnimate.duration) {\n this.trySetAttribute(customAnimate.getFromProps(), customAnimate.mode);\n }\n return this;\n }\n\n trySetAttribute(attr: Record<string, any> | void, mode: AnimateMode = Animate.mode) {\n if (attr && mode & AnimateMode.SET_ATTR_IMMEDIATELY) {\n (this.target as any).setAttributes &&\n (this.target as any).setAttributes(attr, false, { type: AttributeUpdateType.ANIMATE_PLAY });\n }\n }\n\n runCb(cb: (a: IAnimate, step: IStep) => void) {\n // this.tailAnimate.runCb(cb);\n const customAnimate = new CbAnimate(() => {\n cb(this, customAnimate.step.prev);\n });\n this.tailAnimate.play(customAnimate);\n return this;\n }\n\n /**\n * 自定义插值,返回false表示没有匹配上\n * @param key\n * @param from\n * @param to\n */\n customInterpolate(\n key: string,\n ratio: number,\n from: any,\n to: any,\n target: IAnimateTarget,\n ret: Record<string, any>\n ): boolean {\n const func = Animate.interpolateMap.get(key) || Animate.interpolateMap.get('');\n if (!func) {\n return false;\n }\n return func(key, ratio, from, to, target, ret);\n }\n\n pause() {\n if (this.status === AnimateStatus.RUNNING) {\n this.status = AnimateStatus.PAUSED;\n }\n }\n\n resume() {\n if (this.status === AnimateStatus.PAUSED) {\n this.status = AnimateStatus.RUNNING;\n }\n }\n\n to(props: Record<string, any>, duration: number, easing: EasingType, params?: IStepConfig) {\n this.tailAnimate.to(props, duration, easing, params);\n // 默认开始动画\n // todo: 考虑使用绑定的ticker执行\n if (this.target) {\n const stage = (this.target as IGraphic).stage;\n stage && stage.renderNextFrame();\n }\n // if (this.subAnimates.length === 1 && this.tailAnimate.duration === duration) {\n // this.trySetAttribute(props);\n // }\n return this;\n }\n from(props: Record<string, any>, duration: number, easing: EasingType, params?: IStepConfig) {\n this.tailAnimate.from(props, duration, easing, params);\n // todo: 考虑使用绑定的ticker执行\n if (this.target) {\n const stage = (this.target as IGraphic).stage;\n stage && stage.renderNextFrame();\n }\n return this;\n }\n wait(duration: number) {\n this.tailAnimate.wait(duration);\n // todo: 考虑使用绑定的ticker执行\n if (this.target) {\n const stage = (this.target as IGraphic).stage;\n stage && stage.renderNextFrame();\n }\n return this;\n }\n startAt(t: number) {\n this.tailAnimate.startAt(t);\n // todo: 考虑使用绑定的ticker执行\n if (this.target) {\n const stage = (this.target as IGraphic).stage;\n stage && stage.renderNextFrame();\n }\n return this;\n }\n\n loop(l: number) {\n this.tailAnimate.loop = l;\n // todo: 考虑使用绑定的ticker执行\n if (this.target) {\n const stage = (this.target as IGraphic).stage;\n stage && stage.renderNextFrame();\n }\n return this;\n }\n\n reversed(r: boolean) {\n this.tailAnimate.reversed = r;\n // todo: 考虑使用绑定的ticker执行\n if (this.target) {\n const stage = (this.target as IGraphic).stage;\n stage && stage.renderNextFrame();\n }\n return this;\n }\n\n bounce(b: boolean) {\n this.tailAnimate.bounce = b;\n // todo: 考虑使用绑定的ticker执行\n if (this.target) {\n const stage = (this.target as IGraphic).stage;\n stage && stage.renderNextFrame();\n }\n return this;\n }\n\n subAnimate() {\n const sa = new SubAnimate(this, this.tailAnimate);\n this.tailAnimate = sa;\n this.subAnimates.push(sa);\n sa.bind(this.target);\n return this;\n }\n\n getStartProps(): Record<string, any> {\n return this.subAnimates[0].getStartProps();\n }\n\n getEndProps(): Record<string, any> {\n return this.tailAnimate.getEndProps();\n }\n\n depreventAttr(key: string) {\n if (!this._preventAttrs) {\n return;\n }\n this._preventAttrs.delete(key);\n }\n preventAttr(key: string) {\n if (!this._preventAttrs) {\n this._preventAttrs = new Set();\n }\n this._preventAttrs.add(key);\n }\n preventAttrs(keys: string[]) {\n keys.forEach(key => this.preventAttr(key));\n }\n validAttr(key: string): boolean {\n if (!this._preventAttrs) {\n return true;\n }\n return !this._preventAttrs.has(key);\n }\n\n bind(target: IAnimateTarget) {\n this.target = target;\n\n if (this.target.onAnimateBind) {\n this.target.onAnimateBind(this);\n }\n\n this.subAnimates.forEach(sa => {\n sa.bind(target);\n });\n return this;\n }\n\n advance(delta: number) {\n // startTime之前的时间不计入耗时\n if (this._duringTime < this._startTime) {\n if (this._duringTime + delta * this.timeScale < this._startTime) {\n this._duringTime += delta * this.timeScale;\n return;\n }\n delta = this._duringTime + delta * this.timeScale - this._startTime;\n this._duringTime = this._startTime;\n }\n // 执行advance\n if (this.status === AnimateStatus.INITIAL) {\n this.status = AnimateStatus.RUNNING;\n this._onStart && this._onStart.forEach(cb => cb());\n }\n const end = this.setPosition(this.rawPosition + delta * this.timeScale);\n if (end && this.status === AnimateStatus.RUNNING) {\n this.status = AnimateStatus.END;\n this._onEnd && this._onEnd.forEach(cb => cb());\n }\n }\n\n setPosition(rawPosition: number): boolean {\n let d = 0;\n let sa: SubAnimate | undefined;\n const prevRawPos = this.rawPosition;\n const maxRawPos = this.subAnimates.reduce((a, b) => a + b.totalDuration, 0);\n\n if (rawPosition < 0) {\n rawPosition = 0;\n }\n\n const end = rawPosition >= maxRawPos;\n\n if (end) {\n rawPosition = maxRawPos;\n }\n\n if (rawPosition === prevRawPos) {\n return end;\n }\n\n // 查找对应的subAnimate\n for (let i = 0; i < this.subAnimates.length; i++) {\n sa = this.subAnimates[i];\n if (d + sa.totalDuration >= rawPosition) {\n break;\n } else {\n d += sa.totalDuration;\n sa = undefined;\n }\n }\n this.rawPosition = rawPosition;\n sa.setPosition(rawPosition - d);\n\n return end;\n }\n\n onStart(cb: () => void) {\n if (!this._onStart) {\n this._onStart = [];\n }\n this._onStart.push(cb);\n }\n onEnd(cb: () => void) {\n if (!this._onEnd) {\n this._onEnd = [];\n }\n this._onEnd.push(cb);\n }\n onRemove(cb: () => void) {\n if (!this._onRemove) {\n this._onRemove = [];\n }\n this._onRemove.push(cb);\n }\n onFrame(cb: (step: IStep, ratio: number) => void) {\n if (!this._onFrame) {\n this._onFrame = [];\n }\n this._onFrame.push(cb);\n }\n release() {\n this.status = AnimateStatus.END;\n return;\n }\n\n stop(nextVal?: 'start' | 'end' | Record<string, any>) {\n if (!nextVal) {\n this.target.onStop();\n }\n if (nextVal === 'start') {\n this.target.onStop(this.getStartProps());\n } else if (nextVal === 'end') {\n this.target.onStop(this.getEndProps());\n } else {\n this.target.onStop(nextVal);\n }\n this.release();\n }\n}\n\n// Animate.mode |= AnimateMode.SET_ATTR_IMMEDIATELY;\n\nexport class SubAnimate implements ISubAnimate {\n declare target: IAnimateTarget;\n declare animate: IAnimate;\n // 默认的初始step,一定存在,且stepHead的props一定保存整个subAnimate阶段所有属性的最初\n protected declare stepHead: Step;\n protected declare stepTail: Step;\n // 结束时反转动画\n declare bounce: boolean;\n // 是否reverse\n declare reversed: boolean;\n // 循环次数,0为执行一次,1为执行两次,Infinity为无限循环\n declare loop: number;\n // 持续时间,不包括循环\n declare duration: number;\n // 位置,在[0, duration]之间\n declare position: number;\n // 绝对的位置,在[0, loops * duration]之间\n declare rawPosition: number;\n declare dirty: boolean;\n\n declare _totalDuration: number;\n declare _startAt: number;\n declare _lastStep: IStep;\n declare _deltaPosition: number;\n\n get totalDuration(): number {\n this.calcAttr();\n return this._totalDuration + this._startAt;\n }\n\n constructor(animate: IAnimate, lastSubAnimate?: SubAnimate) {\n this.rawPosition = -1;\n this.position = 0;\n this.loop = 0;\n this.duration = 0;\n this.animate = animate;\n if (lastSubAnimate) {\n this.stepHead = new Step(0, 0, Object.assign({}, lastSubAnimate.stepTail.props));\n } else {\n this.stepHead = new Step(0, 0, {});\n }\n this.stepTail = this.stepHead;\n this.dirty = true;\n this._startAt = 0;\n }\n\n // 计算按需计算的属性\n protected calcAttr() {\n if (!this.dirty) {\n return;\n }\n\n this._totalDuration = this.duration * (this.loop + 1);\n }\n\n bind(target: IAnimateTarget) {\n this.target = target;\n return this;\n }\n\n play(customAnimate: ICustomAnimate) {\n let duration = customAnimate.duration;\n if (duration == null || duration < 0) {\n duration = 0;\n }\n const easing = customAnimate.easing;\n const easingFunc = typeof easing === 'string' ? Easing[easing] : easing;\n const step = this._addStep(duration, null, easingFunc);\n step.type = AnimateStepType.customAnimate;\n this._appendProps(customAnimate.getEndProps(), step, false);\n this._appendCustomAnimate(customAnimate, step);\n return this;\n }\n\n // _appendPlayProps(step: IStep) {\n\n // return;\n // }\n\n to(props: Record<string, any>, duration: number, easing: EasingType, params?: IStepConfig) {\n if (duration == null || duration < 0) {\n duration = 0;\n }\n\n const easingFunc = typeof easing === 'string' ? Easing[easing] : easing;\n\n const step = this._addStep(duration, null, easingFunc);\n step.type = AnimateStepType.to;\n this._appendProps(props, step, params ? params.tempProps : false);\n // this._appendPlayProps(step);\n\n if (!step.propKeys) {\n step.propKeys = Object.keys(step.props);\n }\n if (!(params && params.noPreventAttrs)) {\n this.target.animates.forEach(a => {\n if (a.id !== this.animate.id) {\n a.preventAttrs(step.propKeys);\n }\n });\n }\n return this;\n }\n\n from(props: Record<string, any>, duration: number, easing: EasingType, params?: IStepConfig) {\n this.to(props, 0, easing, params);\n const toProps = {};\n if (!this.stepTail.propKeys) {\n this.stepTail.propKeys = Object.keys(this.stepTail.props);\n }\n this.stepTail.propKeys.forEach(k => {\n toProps[k] = this.getLastPropByName(k, this.stepTail);\n });\n this.to(toProps, duration, easing, params);\n this.stepTail.type = AnimateStepType.from;\n }\n\n startAt(t: number) {\n if (t < 0) {\n t = 0;\n }\n this._startAt = t;\n return this;\n }\n\n getStartProps() {\n return this.stepHead?.props;\n }\n\n getEndProps() {\n return this.stepTail.props;\n }\n\n getLastStep() {\n return this._lastStep;\n }\n\n wait(duration: number) {\n if (duration > 0) {\n const step = this._addStep(+duration, null);\n\n step.type = AnimateStepType.wait;\n // TODO 这里如果跳帧的话会存在bug\n if (step.prev.customAnimate) {\n step.props = step.prev.customAnimate.getEndProps();\n } else {\n step.props = step.prev.props;\n }\n if (this.target.onAddStep) {\n this.target.onAddStep(step);\n }\n // this._appendPlayProps(step);\n }\n return this;\n }\n\n protected _addStep(duration: number, props: any, easingFunc?: EasingTypeFunc) {\n const step = new Step(this.duration, duration, props, easingFunc);\n this.duration += duration;\n this.stepTail.append(step);\n this.stepTail = step;\n return step;\n }\n\n protected _appendProps(props: any, step: Step, tempProps?: boolean) {\n if (tempProps) {\n step.props = props;\n } else {\n // todo: 是否需要深拷贝props\n step.props = Object.assign({}, props);\n }\n let lastStep = step.prev;\n const _props = step.props;\n // 将undefined的属性设置到默认值\n if (!step.propKeys) {\n step.propKeys = Object.keys(step.props);\n }\n step.propKeys.forEach(k => {\n if (step.props[k] === undefined) {\n step.props[k] = this.target.getDefaultAttribute(k);\n }\n });\n // 拷贝之前的step阶段属性\n while (lastStep.prev) {\n if (lastStep.props) {\n if (!lastStep.propKeys) {\n lastStep.propKeys = Object.keys(lastStep.props);\n }\n lastStep.propKeys.forEach(key => {\n if (_props[key] === undefined) {\n _props[key] = lastStep.props[key];\n }\n });\n }\n // 重置propKeys\n step.propKeys = Object.keys(step.props);\n lastStep = lastStep.prev;\n }\n\n // 设置最初的props属性\n const initProps = this.stepHead.props;\n if (!step.propKeys) {\n step.propKeys = Object.keys(_props);\n }\n step.propKeys.forEach(key => {\n if (initProps[key] === undefined) {\n const parentAnimateInitProps = this.animate.getStartProps();\n initProps[key] = parentAnimateInitProps[key] = this.target.getComputedAttribute(key);\n }\n });\n\n if (this.target.onAddStep) {\n this.target.onAddStep(step);\n }\n }\n\n protected _appendCustomAnimate(customAnimate: ICustomAnimate, step: Step) {\n step.customAnimate = customAnimate;\n customAnimate.step = step;\n customAnimate.bind(this.target, this);\n }\n\n setPosition(rawPosition: number) {\n const d = this.duration;\n const loopCount = this.loop;\n const prevRawPos = this.rawPosition;\n let end = false;\n let loop: number; // 当前是第几次循环\n let position: number; // 当前周期的时间\n const startAt = this._startAt ?? 0;\n\n if (rawPosition < 0) {\n rawPosition = 0;\n }\n if (rawPosition < startAt) {\n this.rawPosition = rawPosition;\n return false;\n }\n rawPosition = rawPosition - startAt;\n if (d <= 0) {\n // 如果不用执行,跳过\n end = true;\n return end;\n }\n loop = Math.floor(rawPosition / d);\n position = rawPosition - loop * d;\n\n // 计算rawPosition\n end = rawPosition >= loopCount * d + d;\n // 如果结束,跳过\n if (end) {\n position = d;\n loop = loopCount;\n rawPosition = position * loop + d;\n }\n\n if (rawPosition === prevRawPos) {\n return end;\n }\n\n // reverse动画\n const rev = !this.reversed !== !(this.bounce && loop % 2);\n if (rev) {\n position = d - position;\n }\n\n this._deltaPosition = position - this.position;\n this.position = position;\n this.rawPosition = rawPosition + startAt;\n\n this.updatePosition(end, rev);\n\n return end;\n }\n\n protected updatePosition(end: boolean, rev: boolean) {\n if (!this.stepHead) {\n return;\n }\n let step = this.stepHead.next;\n const position = this.position;\n const duration = this.duration;\n if (this.target && step) {\n let stepNext = step.next;\n while (stepNext && stepNext.position <= position) {\n step = stepNext;\n stepNext = step.next;\n }\n let ratio = end ? (duration === 0 ? 1 : position / duration) : (position - step.position) / step.duration; // TODO: revisit this.\n if (step.easing) {\n ratio = step.easing(ratio);\n }\n // 判断这次和上次过程中是否经历了自定义step,如果跳过了自定义step那么执行自定义step的onEnd\n this.tryCallCustomAnimateLifeCycle(step, this._lastStep || (rev ? this.stepTail : this.stepHead), rev);\n // if (step !== this._lastStep) {\n // if (this._deltaPosition > 0) {\n // let _step = step.prev;\n // while (_step && _step !== this._lastStep) {\n // if (_step.customAnimate) {\n // _step.customAnimate.onEnd();\n // }\n // _step = _step.prev;\n // }\n // if (_step && _step.customAnimate) {\n // _step.customAnimate.onEnd();\n // }\n // } else if (this._deltaPosition < 0) {\n // let _step = step.next;\n // while (_step && _step !== this._lastStep) {\n // if (_step.customAnimate) {\n // _step.customAnimate.onEnd();\n // }\n // _step = _step.next;\n // }\n // if (_step && _step.customAnimate) {\n // _step.customAnimate.onEnd();\n // }\n // }\n // }\n this.updateTarget(step, ratio, end);\n this._lastStep = step;\n\n this.animate._onFrame && this.animate._onFrame.forEach(cb => cb(step, ratio));\n }\n }\n\n // 如果动画卡顿跳过了自定义动画,那么尝试执行自定义动画的生命周期\n tryCallCustomAnimateLifeCycle(step: IStep, lastStep: IStep, rev: boolean) {\n if (step === lastStep) {\n return;\n }\n if (rev) {\n let _step = lastStep.prev;\n while (_step && _step !== step) {\n if (_step.customAnimate) {\n _step.customAnimate.onStart && _step.customAnimate.onStart();\n _step.customAnimate.onEnd && _step.customAnimate.onEnd();\n }\n _step = step.prev;\n }\n // 执行lastStep的onEnd和currentStep的onStart\n if (lastStep && lastStep.customAnimate) {\n lastStep.customAnimate.onEnd && lastStep.customAnimate.onEnd();\n }\n if (step && step.customAnimate) {\n step.customAnimate.onStart && step.customAnimate.onStart();\n }\n } else {\n let _step = lastStep.next;\n while (_step && _step !== step) {\n if (_step.customAnimate) {\n _step.customAnimate.onStart && _step.customAnimate.onStart();\n _step.customAnimate.onEnd && _step.customAnimate.onEnd();\n }\n _step = _step.next;\n }\n // 执行lastStep的onEnd和currentStep的onStart\n if (lastStep && lastStep.customAnimate) {\n lastStep.customAnimate.onEnd && lastStep.customAnimate.onEnd();\n }\n if (step && step.customAnimate) {\n step.customAnimate.onStart && step.customAnimate.onStart();\n }\n }\n }\n\n /**\n * 获取这个属性的上一个值\n * @param name\n * @param step\n * @returns\n */\n getLastPropByName(name: string, step: Step): any {\n let lastStep = step.prev;\n while (lastStep) {\n if (lastStep.props && lastStep.props[name] !== undefined) {\n return lastStep.props[name];\n } else if (lastStep.customAnimate) {\n const val = lastStep.customAnimate.getEndProps()[name];\n if (val !== undefined) {\n return val;\n }\n }\n lastStep = lastStep.prev;\n }\n\n Logger.getInstance().warn('未知错误,step中找不到属性');\n return step.props[name];\n }\n\n protected updateTarget(step: Step, ratio: number, end: boolean) {\n if (step.props == null && step.customAnimate == null) {\n return;\n }\n this.target.onStep(this, this.animate, step, ratio, end);\n }\n}\n\n// export class Animate implements IAnimate {\n// declare target: IAnimateTarget;\n// declare timeline: ITimeline;\n// protected declare stepHead: Step;\n// protected declare stepTail: Step;\n// declare nextAnimate?: Animate;\n// declare prevAnimate?: Animate;\n// // 结束时反转动画\n// declare bounce: boolean;\n// // 是否reverse\n// declare reversed: boolean;\n// // 循环次数,0为执行一次,1为执行两次,Infinity为无限循环\n// declare loop: number;\n// // 持续时间,不包括循环\n// declare duration: number;\n// // 当前Animate的状态,正常,暂停,结束\n// declare status: AnimateStatus;\n// // 位置,在[0, duration]之间\n// declare position: number;\n// // 绝对的位置,在[0, loops * duration]之间\n// declare rawPosition: number;\n// // 开始时间\n// protected declare _startAt: number;\n// // 时间的缩放,例如2表示2倍速\n// declare timeScale: number;\n// declare props: Record<string, any>;\n// declare readonly id: string | number;\n\n// protected declare _onStart?: (() => void)[];\n// protected declare _onFrame?: ((step: IStep, ratio: number) => void)[];\n// protected declare _onEnd?: (() => void)[];\n// declare _onRemove?: (() => void)[];\n// declare _preventAttrs?: Set<string>;\n\n// constructor(id: string | number = Generator.GenAutoIncrementId(), timeline: ITimeline = defaultTimeline) {\n// this.timeline = timeline;\n// this.status = AnimateStatus.INITIAL;\n// this.rawPosition = -1;\n// this.position = 0;\n// this.loop = 0;\n// this.timeline.addAnimate(this);\n// this.timeScale = 1;\n// this.id = id;\n// this.props = {};\n// this.stepHead = new Step(0, 0, {});\n// this.stepTail = this.stepHead;\n// }\n\n// preventAttr(key: string) {\n// if (!this._preventAttrs) {\n// this._preventAttrs = new Set();\n// }\n// this._preventAttrs.add(key);\n// }\n// preventAttrs(keys: string[]) {\n// keys.forEach(key => this.preventAttr(key));\n// }\n// validAttr(key: string): boolean {\n// if (!this._preventAttrs) {\n// return true;\n// }\n// return !this._preventAttrs.has(key);\n// }\n\n// getLastPropByName(name: string, step: Step): any {\n// let lastStep = step.prev;\n// while (lastStep) {\n// if (lastStep.props && lastStep.props[name] !== undefined) {\n// return lastStep.props[name];\n// }\n// lastStep = lastStep.prev;\n// }\n// let val = this.props[name];\n// if (!val) {\n// console.warn('未知错误,step中找不到属性');\n// val = this.target.getComputedAttribute(name);\n// this.props[name] = val;\n// }\n\n// return val;\n// }\n\n// bind(target: IAnimateTarget) {\n// this.target = target;\n// this.duration = 0;\n// return this;\n// }\n\n// startAt(t: number) {\n// if (t < 0) {\n// return this;\n// }\n// this._startAt = t;\n// return this;\n// }\n\n// to(props: Record<string, any>, duration: number, easing: EasingType, params?: IStepConfig) {\n// if (duration == null || duration < 0) {\n// duration = 0;\n// }\n\n// const easingFunc = typeof easing === 'string' ? Easing[easing] : easing;\n\n// const step = this._addStep(duration, null, easingFunc);\n// this._appendProps(props, step, params ? params.tempProps : false);\n// return this;\n// }\n\n// wait(duration: number) {\n// if (duration > 0) {\n// const step = this._addStep(+duration, null);\n// if (step.prev) {\n// step.props = step.prev.props;\n// }\n// if (this.target.onAddStep) {\n// this.target.onAddStep(step);\n// }\n// }\n// return this;\n// }\n\n// protected _addStep(duration: number, props: any, easingFunc?: EasingTypeFunc) {\n// const step = new Step(this.duration, duration, props, easingFunc);\n// this.duration += duration;\n// this.stepTail.append(step);\n// this.stepTail = step;\n// return step;\n// }\n\n// protected _appendProps(props: any, step: Step, tempProps?: boolean) {\n// if (tempProps) {\n// step.props = props;\n// } else {\n// // todo: 是否需要深拷贝props\n// step.props = Object.assign({}, props);\n// }\n// let lastStep = step.prev;\n// const _props = step.props;\n// // 拷贝之前的step阶段属性\n// while (lastStep.prev) {\n// if (lastStep.props) {\n// if (!lastStep.propKeys) {\n// lastStep.propKeys = Object.keys(lastStep.props);\n// }\n// lastStep.propKeys.forEach(key => {\n// if (_props[key] === undefined) {\n// _props[key] = lastStep.props[key];\n// }\n// });\n// }\n// lastStep = lastStep.prev;\n// }\n\n// // 设置最初的props属性\n// const initProps = this.stepHead.props;\n// if (!step.propKeys) {\n// step.propKeys = Object.keys(_props);\n// step.propKeys.forEach(key => {\n// initProps[key] = this.target.getComputedAttribute(key);\n// });\n// }\n\n// if (this.target.onAddStep) {\n// this.target.onAddStep(step);\n// }\n// }\n\n// advance(delta: number) {\n// if (this.status === AnimateStatus.INITIAL) {\n// this.status = AnimateStatus.RUNNING;\n// this._onStart && this._onStart.forEach(cb => cb());\n// }\n// const end = this.setPosition(this.rawPosition + delta * this.timeScale);\n// if (end && this.status === AnimateStatus.RUNNING) {\n// this.status = AnimateStatus.END;\n// this._onEnd && this._onEnd.forEach(cb => cb());\n// }\n// }\n\n// setPosition(rawPosition: number) {\n// const d = this.duration;\n// const loopCount = this.loop;\n// const prevRawPos = this.rawPosition;\n// let end = false;\n// let loop: number; // 当前是第几次循环\n// let position: number; // 当前周期的时间\n// const startAt = this._startAt ?? 0;\n\n// if (rawPosition < 0) {\n// rawPosition = 0;\n// }\n// if (rawPosition < startAt) {\n// this.rawPosition = rawPosition;\n// return false;\n// }\n// rawPosition = rawPosition - startAt;\n// if (d <= 0) {\n// // 如果不用执行,跳过\n// end = true;\n// return end;\n// }\n// loop = Math.floor(rawPosition / d);\n// position = rawPosition - loop * d;\n\n// // 计算rawPosition\n// end = rawPosition >= loopCount * d + d;\n// // 如果结束,跳过\n// if (end) {\n// position = d;\n// loop = loopCount;\n// rawPosition = position * loop + d;\n// }\n\n// if (rawPosition === prevRawPos) {\n// return end;\n// }\n\n// // reverse动画\n// const rev = !this.reversed !== !(this.bounce && loop % 2);\n// if (rev) {\n// position = d - position;\n// }\n\n// this.position = position;\n// this.rawPosition = rawPosition + startAt;\n\n// this.updatePosition(end);\n\n// return end;\n// }\n\n// protected updatePosition(end: boolean) {\n// if (!this.stepHead) {\n// return;\n// }\n// let step = this.stepHead;\n// const position = this.position;\n// const duration = this.duration;\n// if (this.target && step) {\n// let stepNext = step.next;\n// while (stepNext && stepNext.position <= position) {\n// step = step.next;\n// stepNext = step.next;\n// }\n// let ratio = end ? (duration === 0 ? 1 : position / duration) : (position - step.position) / step.duration; // TODO: revisit this.\n// if (step.easing) {\n// ratio = step.easing(ratio);\n// }\n// this.updateTarget(step, ratio, end);\n// this._onFrame && this._onFrame.forEach(cb => cb(step, ratio));\n// }\n// }\n\n// protected updateTarget(step: Step, ratio: number, end: boolean) {\n// if (step.props == null) {\n// return;\n// }\n// this.target.onStep(this, step, ratio, end);\n// }\n\n// onStart(cb: () => void) {\n// if (!this._onStart) {\n// this._onStart = [];\n// }\n// this._onStart.push(cb);\n// }\n// onEnd(cb: () => void) {\n// if (!this._onEnd) {\n// this._onEnd = [];\n// }\n// this._onEnd.push(cb);\n// }\n// onRemove(cb: () => void) {\n// if (!this._onRemove) {\n// this._onRemove = [];\n// }\n// this._onRemove.push(cb);\n// }\n// onFrame(cb: (step: IStep, ratio: number) => void) {\n// if (!this._onFrame) {\n// this._onFrame = [];\n// }\n// this._onFrame.push(cb);\n// }\n\n// getStartProps() {\n// return this.stepHead?.props;\n// }\n\n// getEndProps(target: Record<string, any> = {}) {\n// let step = this.stepHead;\n// while (step) {\n// if (step.props) {\n// Object.assign(target, step.props);\n// }\n// step = step.next;\n// }\n\n// return target;\n// }\n\n// stop(nextVal?: 'start' | 'end' | Record<string, any>) {\n// this.status = AnimateStatus.END;\n// if (!nextVal) {\n// this.target.onStop();\n// }\n// if (nextVal === 'start') {\n// this.target.onStop(this.getStartProps());\n// } else if (nextVal === 'end') {\n// this.target.onStop(this.getEndProps());\n// } else {\n// this.target.onStop(nextVal);\n// }\n// }\n\n// release() {\n// this.status = AnimateStatus.END;\n// return;\n// }\n// }\n\nclass Step implements IStep {\n declare prev?: Step;\n // 持续时间\n declare duration: number;\n // 在animate中的位置\n declare position: number;\n declare next?: Step;\n declare props: any;\n // 保存解析后的props,用于性能优化\n declare parsedProps?: any;\n declare propKeys?: string[];\n declare easing?: EasingTypeFunc;\n declare customAnimate?: ICustomAnimate;\n // passive: boolean;\n // index: number;\n type: IAnimateStepType;\n\n constructor(position: number, duration: number, props?: any, easing?: EasingTypeFunc) {\n this.duration = duration;\n this.position = position;\n this.props = props;\n this.easing = easing;\n }\n\n append(step: Step) {\n step.prev = this;\n step.next = this.next;\n this.next = step;\n }\n\n getLastProps() {\n let step = this.prev;\n while (step) {\n if (step.props) {\n return step.props;\n } else if (step.customAnimate) {\n return step.customAnimate.getMergedEndProps();\n }\n step = step.prev as any;\n }\n return null;\n }\n}\n"]}
@@ -6,5 +6,4 @@ export const DefaultStateAnimateConfig = {
6
6
  export const DefaultMorphingAnimateConfig = {
7
7
  duration: 1e3,
8
8
  easing: "quadInOut"
9
- };
10
- //# sourceMappingURL=config.js.map
9
+ };
@@ -15,6 +15,9 @@ import { pointInterpolation } from "../common/utils";
15
15
  import { divideCubic } from "../common/segment/curve/cubic-bezier";
16
16
 
17
17
  export class IncreaseCount extends ACustomAnimate {
18
+ fromNumber;
19
+ toNumber;
20
+ decimalLength;
18
21
  constructor(from, to, duration, easing, params) {
19
22
  super(from, to, duration, easing, params);
20
23
  }
@@ -24,11 +27,10 @@ export class IncreaseCount extends ACustomAnimate {
24
27
  };
25
28
  }
26
29
  onBind() {
27
- var _a, _b, _c, _d, _e, _f, _g, _h;
28
- this.fromNumber = isNumber(null === (_a = this.from) || void 0 === _a ? void 0 : _a.text) ? null === (_b = this.from) || void 0 === _b ? void 0 : _b.text : Number.parseFloat(null === (_c = this.from) || void 0 === _c ? void 0 : _c.text),
29
- this.toNumber = isNumber(null === (_d = this.to) || void 0 === _d ? void 0 : _d.text) ? null === (_e = this.to) || void 0 === _e ? void 0 : _e.text : Number.parseFloat(null === (_f = this.to) || void 0 === _f ? void 0 : _f.text),
30
+ this.fromNumber = isNumber(this.from?.text) ? this.from?.text : Number.parseFloat(this.from?.text),
31
+ this.toNumber = isNumber(this.to?.text) ? this.to?.text : Number.parseFloat(this.to?.text),
30
32
  Number.isFinite(this.toNumber) || (this.fromNumber = 0), Number.isFinite(this.toNumber) || (this.valid = !1),
31
- !1 !== this.valid && (this.decimalLength = null !== (_h = null === (_g = this.params) || void 0 === _g ? void 0 : _g.fixed) && void 0 !== _h ? _h : Math.max(getDecimalPlaces(this.fromNumber), getDecimalPlaces(this.toNumber)));
33
+ !1 !== this.valid && (this.decimalLength = this.params?.fixed ?? Math.max(getDecimalPlaces(this.fromNumber), getDecimalPlaces(this.toNumber)));
32
34
  }
33
35
  onEnd() {}
34
36
  onUpdate(end, ratio, out) {
@@ -144,19 +146,15 @@ export class FadeInPlus extends ACustomAnimate {
144
146
  }
145
147
 
146
148
  export class InputText extends ACustomAnimate {
147
- constructor() {
148
- super(...arguments), this.fromText = "", this.toText = "";
149
- }
149
+ fromText="";
150
+ toText="";
150
151
  getEndProps() {
151
152
  return !1 === this.valid ? {} : {
152
153
  text: this.to
153
154
  };
154
155
  }
155
156
  onBind() {
156
- var _a, _b, _c, _d;
157
- if (this.fromText = null !== (_b = null === (_a = this.from) || void 0 === _a ? void 0 : _a.text) && void 0 !== _b ? _b : "",
158
- this.toText = null !== (_d = null === (_c = this.to) || void 0 === _c ? void 0 : _c.text) && void 0 !== _d ? _d : "",
159
- !this.toText || isArray(this.toText)) this.valid = !1; else {
157
+ if (this.fromText = this.from?.text ?? "", this.toText = this.to?.text ?? "", !this.toText || isArray(this.toText)) this.valid = !1; else {
160
158
  this.toText = this.toText.toString();
161
159
  const root = this.target.attachShadow(), line = application.graphicService.creator.line({
162
160
  x: 0,
@@ -178,11 +176,10 @@ export class InputText extends ACustomAnimate {
178
176
  this.target.detachShadow();
179
177
  }
180
178
  onUpdate(end, ratio, out) {
181
- var _a;
182
179
  if (!1 === this.valid) return;
183
180
  const fromCount = this.fromText.length, toCount = this.toText.length, count = Math.ceil(fromCount + (toCount - fromCount) * ratio);
184
181
  out.text = this.toText.substr(0, count);
185
- const line = null === (_a = this.target.shadowRoot) || void 0 === _a ? void 0 : _a.at(0), endX = this.target.clipedWidth + 2;
182
+ const line = this.target.shadowRoot?.at(0), endX = this.target.clipedWidth + 2;
186
183
  line.setAttribute("x", endX);
187
184
  }
188
185
  }
@@ -198,22 +195,22 @@ export class StreamLight extends ACustomAnimate {
198
195
  this.target && ("rect" === this.target.type ? this.onStartRect() : "line" === this.target.type ? this.onStartLineOrArea("line") : "area" === this.target.type && this.onStartLineOrArea("area"));
199
196
  }
200
197
  onStartLineOrArea(type) {
201
- var _a;
202
- const root = this.target.attachShadow(), line = application.graphicService.creator[type](Object.assign({}, null === (_a = this.params) || void 0 === _a ? void 0 : _a.attribute));
198
+ const root = this.target.attachShadow(), line = application.graphicService.creator[type]({
199
+ ...this.params?.attribute
200
+ });
203
201
  this[type] = line, line.pathProxy = new CustomPath2D, root.add(line);
204
202
  }
205
203
  onStartRect() {
206
- var _a;
207
- const root = this.target.attachShadow(), height = this.target.AABBBounds.height(), rect = application.graphicService.creator.rect(Object.assign(Object.assign({
204
+ const root = this.target.attachShadow(), height = this.target.AABBBounds.height(), rect = application.graphicService.creator.rect({
208
205
  height: height,
209
206
  fill: "#bcdeff",
210
207
  shadowBlur: 30,
211
- shadowColor: "#bcdeff"
212
- }, null === (_a = this.params) || void 0 === _a ? void 0 : _a.attribute), {
208
+ shadowColor: "#bcdeff",
209
+ ...this.params?.attribute,
213
210
  x: 0,
214
211
  y: 0,
215
212
  width: 0
216
- }));
213
+ });
217
214
  this.rect = rect, root.add(rect);
218
215
  }
219
216
  onBind() {}
@@ -224,8 +221,7 @@ export class StreamLight extends ACustomAnimate {
224
221
  return this.rect ? this.onUpdateRect(end, ratio, out) : this.line || this.area ? this.onUpdateLineOrArea(end, ratio, out) : void 0;
225
222
  }
226
223
  onUpdateRect(end, ratio, out) {
227
- var _a, _b, _c, _d, _e, _f;
228
- const parentWidth = null !== (_a = this.target.attribute.width) && void 0 !== _a ? _a : 250, streamLength = null !== (_c = null === (_b = this.params) || void 0 === _b ? void 0 : _b.streamLength) && void 0 !== _c ? _c : parentWidth, maxLength = null !== (_f = null === (_e = null === (_d = this.params) || void 0 === _d ? void 0 : _d.attribute) || void 0 === _e ? void 0 : _e.width) && void 0 !== _f ? _f : 60, startX = -maxLength, currentX = startX + (streamLength - startX) * ratio, x = Math.max(currentX, 0), w = Math.min(Math.min(currentX + maxLength, maxLength), streamLength - currentX), width = w + x > parentWidth ? Math.max(parentWidth - x, 0) : w;
224
+ const parentWidth = this.target.attribute.width ?? 250, streamLength = this.params?.streamLength ?? parentWidth, maxLength = this.params?.attribute?.width ?? 60, startX = -maxLength, currentX = startX + (streamLength - startX) * ratio, x = Math.max(currentX, 0), w = Math.min(Math.min(currentX + maxLength, maxLength), streamLength - currentX), width = w + x > parentWidth ? Math.max(parentWidth - x, 0) : w;
229
225
  this.rect.setAttributes({
230
226
  x: x,
231
227
  width: width
@@ -243,9 +239,10 @@ export class StreamLight extends ACustomAnimate {
243
239
  const customPath = target.pathProxy, targetLine = this.target;
244
240
  targetLine.cache || targetLine.cacheArea ? this._onUpdateLineOrAreaWithCache(customPath, targetLine, end, ratio, out) : this._onUpdateLineWithoutCache(customPath, targetLine, end, ratio, out);
245
241
  const targetAttrs = targetLine.attribute;
246
- target.setAttributes(Object.assign({
247
- stroke: targetAttrs.stroke
248
- }, target.attribute)), target.addUpdateBoundTag();
242
+ target.setAttributes({
243
+ stroke: targetAttrs.stroke,
244
+ ...target.attribute
245
+ }), target.addUpdateBoundTag();
249
246
  }
250
247
  _onUpdateLineOrAreaWithCache(customPath, g, end, ratio, out) {
251
248
  if (customPath.clear(), "line" === g.type) {
@@ -262,8 +259,7 @@ export class StreamLight extends ACustomAnimate {
262
259
  }
263
260
  }
264
261
  _updateCurves(customPath, curves, totalLen, ratio) {
265
- var _a, _b;
266
- const startLen = totalLen * ratio, endLen = Math.min(null !== (_b = startLen + (null === (_a = this.params) || void 0 === _a ? void 0 : _a.streamLength)) && void 0 !== _b ? _b : 10, totalLen);
262
+ const startLen = totalLen * ratio, endLen = Math.min(startLen + this.params?.streamLength ?? 10, totalLen);
267
263
  let lastLen = 0, start = !1;
268
264
  for (let i = 0; i < curves.length; i++) {
269
265
  const curveItem = curves[i], len = curveItem.getLength(), startPercent = 1 - (lastLen + len - startLen) / len;
@@ -294,12 +290,11 @@ export class StreamLight extends ACustomAnimate {
294
290
  }
295
291
  }
296
292
  _onUpdateLineWithoutCache(customPath, line, end, ratio, out) {
297
- var _a, _b;
298
293
  const {points: points, curveType: curveType} = line.attribute;
299
294
  if (!points || points.length < 2 || "linear" !== curveType) return;
300
295
  let totalLen = 0;
301
296
  for (let i = 1; i < points.length; i++) totalLen += PointService.distancePP(points[i], points[i - 1]);
302
- const startLen = totalLen * ratio, endLen = Math.min(null !== (_b = startLen + (null === (_a = this.params) || void 0 === _a ? void 0 : _a.streamLength)) && void 0 !== _b ? _b : 10, totalLen), nextPoints = [];
297
+ const startLen = totalLen * ratio, endLen = Math.min(startLen + this.params?.streamLength ?? 10, totalLen), nextPoints = [];
303
298
  let lastLen = 0;
304
299
  for (let i = 1; i < points.length; i++) {
305
300
  const len = PointService.distancePP(points[i], points[i - 1]);
@@ -357,10 +352,9 @@ export class Meteor extends ACustomAnimate {
357
352
 
358
353
  export class MotionPath extends ACustomAnimate {
359
354
  constructor(from, to, duration, easing, params) {
360
- var _a;
361
355
  super(from, to, duration, easing, params), params && (this.pathLength = params.path.getLength(),
362
356
  this.path = params.path, this.distance = params.distance, this.to = params.distance * this.pathLength,
363
- this.initAngle = null !== (_a = params.initAngle) && void 0 !== _a ? _a : 0, this.changeAngle = !!params.changeAngle,
357
+ this.initAngle = params.initAngle ?? 0, this.changeAngle = !!params.changeAngle,
364
358
  this.cb = params.cb);
365
359
  }
366
360
  onUpdate(end, ratio, out) {
@@ -371,12 +365,16 @@ export class MotionPath extends ACustomAnimate {
371
365
  }
372
366
 
373
367
  export class TagPointsUpdate extends ACustomAnimate {
368
+ fromPoints;
369
+ toPoints;
370
+ points;
371
+ interpolatePoints;
372
+ newPointAnimateType;
374
373
  constructor(from, to, duration, easing, params) {
375
- super(from, to, duration, easing, params), this.newPointAnimateType = "appear" === (null == params ? void 0 : params.newPointAnimateType) ? "appear" : "grow";
374
+ super(from, to, duration, easing, params), this.newPointAnimateType = "appear" === params?.newPointAnimateType ? "appear" : "grow";
376
375
  }
377
376
  onBind() {
378
- var _a, _b;
379
- const originFromPoints = null === (_a = this.from) || void 0 === _a ? void 0 : _a.points, originToPoints = null === (_b = this.to) || void 0 === _b ? void 0 : _b.points;
377
+ const originFromPoints = this.from?.points, originToPoints = this.to?.points;
380
378
  this.fromPoints = originFromPoints ? Array.isArray(originFromPoints) ? originFromPoints : [ originFromPoints ] : [],
381
379
  this.toPoints = originToPoints ? Array.isArray(originToPoints) ? originToPoints : [ originToPoints ] : [];
382
380
  const tagMap = new Map;
@@ -410,8 +408,9 @@ export class TagPointsUpdate extends ACustomAnimate {
410
408
  }
411
409
 
412
410
  export class GraphicAnimate extends ACustomAnimate {
411
+ graphic;
413
412
  constructor(from, to, duration, easing, params) {
414
- super(from, to, duration, easing, params), this.graphic = null == params ? void 0 : params.graphic;
413
+ super(from, to, duration, easing, params), this.graphic = params?.graphic;
415
414
  }
416
415
  onUpdate(end, ratio, out) {
417
416
  this.graphic && Object.keys(this.from).forEach((k => {
@@ -421,9 +420,15 @@ export class GraphicAnimate extends ACustomAnimate {
421
420
  }
422
421
 
423
422
  export class ClipGraphicAnimate extends ACustomAnimate {
423
+ _group;
424
+ _clipGraphic;
425
+ clipFromAttribute;
426
+ clipToAttribute;
427
+ _lastClip;
428
+ _lastPath;
424
429
  constructor(from, to, duration, easing, params) {
425
430
  super(null, null, duration, easing, params), this.clipFromAttribute = from, this.clipToAttribute = to,
426
- this._group = null == params ? void 0 : params.group, this._clipGraphic = null == params ? void 0 : params.clipGraphic;
431
+ this._group = params?.group, this._clipGraphic = params?.clipGraphic;
427
432
  }
428
433
  onBind() {
429
434
  this._group && this._clipGraphic && (this._lastClip = this._group.attribute.clip,
@@ -459,15 +464,14 @@ export class ClipGraphicAnimate extends ACustomAnimate {
459
464
 
460
465
  export class ClipAngleAnimate extends ClipGraphicAnimate {
461
466
  constructor(from, to, duration, easing, params) {
462
- var _a, _b, _c, _d, _e, _f, _g, _h, _j, _k, _l, _m;
463
- const groupAttribute = null !== (_b = null === (_a = null == params ? void 0 : params.group) || void 0 === _a ? void 0 : _a.attribute) && void 0 !== _b ? _b : {}, width = null !== (_c = groupAttribute.width) && void 0 !== _c ? _c : 0, height = null !== (_d = groupAttribute.height) && void 0 !== _d ? _d : 0, animationType = null !== (_e = null == params ? void 0 : params.animationType) && void 0 !== _e ? _e : "in", startAngle = null !== (_f = null == params ? void 0 : params.startAngle) && void 0 !== _f ? _f : 0, orient = null !== (_g = null == params ? void 0 : params.orient) && void 0 !== _g ? _g : "clockwise";
467
+ const groupAttribute = params?.group?.attribute ?? {}, width = groupAttribute.width ?? 0, height = groupAttribute.height ?? 0, animationType = params?.animationType ?? "in", startAngle = params?.startAngle ?? 0, orient = params?.orient ?? "clockwise";
464
468
  let arcStartAngle = 0, arcEndAngle = 0;
465
469
  "anticlockwise" === orient ? (arcEndAngle = "in" === animationType ? startAngle + 2 * Math.PI : startAngle,
466
470
  arcEndAngle = startAngle + 2 * Math.PI) : (arcStartAngle = startAngle, arcEndAngle = "out" === animationType ? startAngle + 2 * Math.PI : startAngle);
467
471
  const arc = application.graphicService.creator.arc({
468
- x: null !== (_j = null === (_h = null == params ? void 0 : params.center) || void 0 === _h ? void 0 : _h.x) && void 0 !== _j ? _j : width / 2,
469
- y: null !== (_l = null === (_k = null == params ? void 0 : params.center) || void 0 === _k ? void 0 : _k.y) && void 0 !== _l ? _l : height / 2,
470
- outerRadius: null !== (_m = null == params ? void 0 : params.radius) && void 0 !== _m ? _m : (width + height) / 2,
472
+ x: params?.center?.x ?? width / 2,
473
+ y: params?.center?.y ?? height / 2,
474
+ outerRadius: params?.radius ?? (width + height) / 2,
471
475
  innerRadius: 0,
472
476
  startAngle: arcStartAngle,
473
477
  endAngle: arcEndAngle,
@@ -483,7 +487,7 @@ export class ClipAngleAnimate extends ClipGraphicAnimate {
483
487
  }, toAttributes = {
484
488
  endAngle: startAngle + 2 * Math.PI
485
489
  }), super("in" === animationType ? fromAttributes : toAttributes, "in" === animationType ? toAttributes : fromAttributes, duration, easing, {
486
- group: null == params ? void 0 : params.group,
490
+ group: params?.group,
487
491
  clipGraphic: arc
488
492
  });
489
493
  }
@@ -491,10 +495,9 @@ export class ClipAngleAnimate extends ClipGraphicAnimate {
491
495
 
492
496
  export class ClipRadiusAnimate extends ClipGraphicAnimate {
493
497
  constructor(from, to, duration, easing, params) {
494
- var _a, _b, _c, _d, _e, _f, _g, _h, _j, _k, _l;
495
- const groupAttribute = null !== (_b = null === (_a = null == params ? void 0 : params.group) || void 0 === _a ? void 0 : _a.attribute) && void 0 !== _b ? _b : {}, width = null !== (_c = groupAttribute.width) && void 0 !== _c ? _c : 0, height = null !== (_d = groupAttribute.height) && void 0 !== _d ? _d : 0, animationType = null !== (_e = null == params ? void 0 : params.animationType) && void 0 !== _e ? _e : "in", startRadius = null !== (_f = null == params ? void 0 : params.startRadius) && void 0 !== _f ? _f : 0, endRadius = null !== (_g = null == params ? void 0 : params.endRadius) && void 0 !== _g ? _g : Math.sqrt((width / 2) ** 2 + (height / 2) ** 2), arc = application.graphicService.creator.arc({
496
- x: null !== (_j = null === (_h = null == params ? void 0 : params.center) || void 0 === _h ? void 0 : _h.x) && void 0 !== _j ? _j : width / 2,
497
- y: null !== (_l = null === (_k = null == params ? void 0 : params.center) || void 0 === _k ? void 0 : _k.y) && void 0 !== _l ? _l : height / 2,
498
+ const groupAttribute = params?.group?.attribute ?? {}, width = groupAttribute.width ?? 0, height = groupAttribute.height ?? 0, animationType = params?.animationType ?? "in", startRadius = params?.startRadius ?? 0, endRadius = params?.endRadius ?? Math.sqrt((width / 2) ** 2 + (height / 2) ** 2), arc = application.graphicService.creator.arc({
499
+ x: params?.center?.x ?? width / 2,
500
+ y: params?.center?.y ?? height / 2,
498
501
  outerRadius: "out" === animationType ? endRadius : startRadius,
499
502
  innerRadius: 0,
500
503
  startAngle: 0,
@@ -506,7 +509,7 @@ export class ClipRadiusAnimate extends ClipGraphicAnimate {
506
509
  outerRadius: endRadius
507
510
  };
508
511
  super("in" === animationType ? fromAttributes : toAttributes, "in" === animationType ? toAttributes : fromAttributes, duration, easing, {
509
- group: null == params ? void 0 : params.group,
512
+ group: params?.group,
510
513
  clipGraphic: arc
511
514
  });
512
515
  }
@@ -514,8 +517,7 @@ export class ClipRadiusAnimate extends ClipGraphicAnimate {
514
517
 
515
518
  export class ClipDirectionAnimate extends ClipGraphicAnimate {
516
519
  constructor(from, to, duration, easing, params) {
517
- var _a, _b, _c, _d, _e, _f, _g, _h, _j;
518
- const groupAttribute = null !== (_b = null === (_a = null == params ? void 0 : params.group) || void 0 === _a ? void 0 : _a.attribute) && void 0 !== _b ? _b : {}, width = null !== (_d = null !== (_c = null == params ? void 0 : params.width) && void 0 !== _c ? _c : groupAttribute.width) && void 0 !== _d ? _d : 0, height = null !== (_f = null !== (_e = null == params ? void 0 : params.height) && void 0 !== _e ? _e : groupAttribute.height) && void 0 !== _f ? _f : 0, animationType = null !== (_g = null == params ? void 0 : params.animationType) && void 0 !== _g ? _g : "in", direction = null !== (_h = null == params ? void 0 : params.direction) && void 0 !== _h ? _h : "x", orient = null !== (_j = null == params ? void 0 : params.orient) && void 0 !== _j ? _j : "positive", rect = application.graphicService.creator.rect({
520
+ const groupAttribute = params?.group?.attribute ?? {}, width = params?.width ?? groupAttribute.width ?? 0, height = params?.height ?? groupAttribute.height ?? 0, animationType = params?.animationType ?? "in", direction = params?.direction ?? "x", orient = params?.orient ?? "positive", rect = application.graphicService.creator.rect({
519
521
  x: 0,
520
522
  y: 0,
521
523
  width: "in" === animationType && "x" === direction ? 0 : width,
@@ -544,7 +546,7 @@ export class ClipDirectionAnimate extends ClipGraphicAnimate {
544
546
  }, toAttributes = {
545
547
  width: width
546
548
  }), super("in" === animationType ? fromAttributes : toAttributes, "in" === animationType ? toAttributes : fromAttributes, duration, easing, {
547
- group: null == params ? void 0 : params.group,
549
+ group: params?.group,
548
550
  clipGraphic: rect
549
551
  });
550
552
  }