@visactor/vrender-core 1.1.0-alpha.9 → 1.1.1-alpha.0

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 (578) hide show
  1. package/cjs/allocator/graphic-allocate.js +1 -2
  2. package/cjs/canvas/constants.js +2 -1
  3. package/cjs/common/contribution-provider.d.ts +2 -2
  4. package/cjs/common/contribution-provider.js +8 -4
  5. package/cjs/common/contribution-provider.js.map +1 -1
  6. package/cjs/common/diff.js +2 -1
  7. package/cjs/common/event-listener-manager.js +1 -2
  8. package/cjs/common/module-guard.d.ts +1 -0
  9. package/cjs/common/module-guard.js +11 -0
  10. package/cjs/common/module-guard.js.map +1 -0
  11. package/cjs/common/performance-raf.js +1 -1
  12. package/cjs/common/polygon.js +2 -2
  13. package/cjs/common/rect-utils.js +1 -1
  14. package/cjs/common/render-area.js +1 -1
  15. package/cjs/common/render-command-list.js +1 -1
  16. package/cjs/common/render-curve.js +1 -1
  17. package/cjs/common/render-utils.js +1 -1
  18. package/cjs/common/seg-context.js +2 -1
  19. package/cjs/common/simplify.js +1 -1
  20. package/cjs/common/sort.js +1 -1
  21. package/cjs/common/split-path.js +1 -1
  22. package/cjs/common/text.js +1 -1
  23. package/cjs/common/utils.js +1 -1
  24. package/cjs/common/xml/is-xml.d.ts +2 -0
  25. package/cjs/common/xml/is-xml.js +14 -0
  26. package/cjs/common/xml/is-xml.js.map +1 -0
  27. package/cjs/common/xml/parser.d.ts +2 -2
  28. package/cjs/common/xml/parser.js +14 -11
  29. package/cjs/common/xml/parser.js.map +1 -1
  30. package/cjs/container.d.ts +2 -0
  31. package/cjs/container.js +50 -0
  32. package/cjs/container.js.map +1 -0
  33. package/cjs/core/camera.js +1 -1
  34. package/cjs/core/constants.js +1 -1
  35. package/cjs/core/contributions/layerHandler/canvas2d-contribution.js +1 -0
  36. package/cjs/core/contributions/layerHandler/canvas2d-contribution.js.map +1 -1
  37. package/cjs/core/core-modules.js +1 -1
  38. package/cjs/core/global.js +1 -1
  39. package/cjs/core/graphic-utils.js +1 -2
  40. package/cjs/core/index.js +1 -1
  41. package/cjs/core/layer-service.js +1 -1
  42. package/cjs/core/layer.js +1 -1
  43. package/cjs/core/light.js +1 -1
  44. package/cjs/core/stage.d.ts +2 -8
  45. package/cjs/core/stage.js +22 -28
  46. package/cjs/core/stage.js.map +1 -1
  47. package/cjs/core/window.js +1 -1
  48. package/cjs/entries/miniapp.d.ts +0 -1
  49. package/cjs/entries/miniapp.js +1 -5
  50. package/cjs/entries/miniapp.js.map +1 -1
  51. package/cjs/entries/node.d.ts +0 -1
  52. package/cjs/entries/node.js +1 -5
  53. package/cjs/entries/node.js.map +1 -1
  54. package/cjs/entries/runtime-installer.d.ts +13 -0
  55. package/cjs/entries/runtime-installer.js +81 -12
  56. package/cjs/entries/runtime-installer.js.map +1 -1
  57. package/cjs/env.d.ts +1 -0
  58. package/cjs/env.js +25 -0
  59. package/cjs/env.js.map +1 -0
  60. package/cjs/event/public-constant.d.ts +7 -0
  61. package/cjs/event/public-constant.js +100 -0
  62. package/cjs/event/public-constant.js.map +1 -0
  63. package/cjs/event/util.d.ts +1 -1
  64. package/cjs/graphic/arc.js +6 -4
  65. package/cjs/graphic/arc.js.map +1 -1
  66. package/cjs/graphic/base.d.ts +2 -0
  67. package/cjs/graphic/base.js +15 -0
  68. package/cjs/graphic/base.js.map +1 -0
  69. package/cjs/graphic/config.js +1 -0
  70. package/cjs/graphic/config.js.map +1 -1
  71. package/cjs/graphic/creator.d.ts +16 -0
  72. package/cjs/graphic/creator.js +160 -0
  73. package/cjs/graphic/creator.js.map +1 -0
  74. package/cjs/graphic/glyph.js +4 -8
  75. package/cjs/graphic/glyph.js.map +1 -1
  76. package/cjs/graphic/graphic-service/graphic-service.d.ts +4 -1
  77. package/cjs/graphic/graphic-service/graphic-service.js +7 -13
  78. package/cjs/graphic/graphic-service/graphic-service.js.map +1 -1
  79. package/cjs/graphic/graphic.d.ts +80 -28
  80. package/cjs/graphic/graphic.js +499 -220
  81. package/cjs/graphic/graphic.js.map +1 -1
  82. package/cjs/graphic/group.d.ts +5 -3
  83. package/cjs/graphic/group.js +44 -31
  84. package/cjs/graphic/group.js.map +1 -1
  85. package/cjs/graphic/modules.d.ts +16 -0
  86. package/cjs/graphic/modules.js +150 -0
  87. package/cjs/graphic/modules.js.map +1 -0
  88. package/cjs/graphic/node-tree.d.ts +3 -3
  89. package/cjs/graphic/node-tree.js +1 -0
  90. package/cjs/graphic/node-tree.js.map +1 -1
  91. package/cjs/graphic/state/shared-state-refresh.js +11 -31
  92. package/cjs/graphic/state/shared-state-refresh.js.map +1 -1
  93. package/cjs/graphic/state/shared-state-scope.d.ts +2 -5
  94. package/cjs/graphic/state/shared-state-scope.js +8 -27
  95. package/cjs/graphic/state/shared-state-scope.js.map +1 -1
  96. package/cjs/graphic/state/state-definition-compiler.js +4 -5
  97. package/cjs/graphic/state/state-definition-compiler.js.map +1 -1
  98. package/cjs/graphic/state/state-definition.d.ts +2 -5
  99. package/cjs/graphic/state/state-definition.js.map +1 -1
  100. package/cjs/graphic/state/state-engine.d.ts +0 -5
  101. package/cjs/graphic/state/state-engine.js +21 -70
  102. package/cjs/graphic/state/state-engine.js.map +1 -1
  103. package/cjs/graphic/state/state-transition-orchestrator.d.ts +7 -9
  104. package/cjs/graphic/state/state-transition-orchestrator.js +10 -13
  105. package/cjs/graphic/state/state-transition-orchestrator.js.map +1 -1
  106. package/cjs/graphic/tools.js +2 -2
  107. package/cjs/graphic/tools.js.map +1 -1
  108. package/cjs/index.js.map +1 -1
  109. package/cjs/interface/animation/animate.d.ts +1 -0
  110. package/cjs/interface/animation/animate.js.map +1 -1
  111. package/cjs/interface/global.d.ts +8 -4
  112. package/cjs/interface/global.js.map +1 -1
  113. package/cjs/interface/graphic/arc.d.ts +1 -0
  114. package/cjs/interface/graphic/arc.js.map +1 -1
  115. package/cjs/interface/graphic/group.d.ts +0 -2
  116. package/cjs/interface/graphic/group.js.map +1 -1
  117. package/cjs/interface/graphic.d.ts +10 -5
  118. package/cjs/interface/graphic.js.map +1 -1
  119. package/cjs/interface/index.js.map +1 -1
  120. package/cjs/interface/node-tree.d.ts +3 -0
  121. package/cjs/interface/node-tree.js.map +1 -1
  122. package/cjs/interface/stage.d.ts +0 -7
  123. package/cjs/interface/stage.js.map +1 -1
  124. package/cjs/interpolate.d.ts +2 -0
  125. package/cjs/interpolate.js +34 -0
  126. package/cjs/interpolate.js.map +1 -0
  127. package/cjs/modules.js.map +1 -1
  128. package/cjs/path.d.ts +4 -0
  129. package/cjs/path.js +33 -0
  130. package/cjs/path.js.map +1 -0
  131. package/cjs/plugin/3d.d.ts +3 -0
  132. package/cjs/plugin/3d.js +33 -0
  133. package/cjs/plugin/3d.js.map +1 -0
  134. package/cjs/plugin/attribute.d.ts +2 -0
  135. package/cjs/plugin/attribute.js +24 -0
  136. package/cjs/plugin/attribute.js.map +1 -0
  137. package/cjs/plugin/flex-layout.d.ts +1 -0
  138. package/cjs/plugin/flex-layout.js +15 -0
  139. package/cjs/plugin/flex-layout.js.map +1 -0
  140. package/cjs/plugins/builtin-plugin/dirty-bounds-plugin.d.ts +4 -1
  141. package/cjs/plugins/builtin-plugin/dirty-bounds-plugin.js +27 -17
  142. package/cjs/plugins/builtin-plugin/dirty-bounds-plugin.js.map +1 -1
  143. package/cjs/plugins/builtin-plugin/flex-layout-plugin.js +3 -2
  144. package/cjs/plugins/builtin-plugin/flex-layout-plugin.js.map +1 -1
  145. package/cjs/plugins/index.d.ts +0 -4
  146. package/cjs/plugins/index.js +1 -3
  147. package/cjs/plugins/index.js.map +1 -1
  148. package/cjs/plugins/plugin-service.d.ts +0 -1
  149. package/cjs/plugins/plugin-service.js +2 -3
  150. package/cjs/plugins/plugin-service.js.map +1 -1
  151. package/cjs/plugins/types.d.ts +1 -8
  152. package/cjs/plugins/types.js.map +1 -1
  153. package/cjs/register/graphic.d.ts +19 -0
  154. package/cjs/register/graphic.js +177 -0
  155. package/cjs/register/graphic.js.map +1 -0
  156. package/cjs/registry/contribution-registry.d.ts +1 -1
  157. package/cjs/registry/contribution-registry.js +6 -2
  158. package/cjs/registry/contribution-registry.js.map +1 -1
  159. package/cjs/registry/picker-registry.d.ts +1 -1
  160. package/cjs/registry/picker-registry.js +2 -2
  161. package/cjs/registry/picker-registry.js.map +1 -1
  162. package/cjs/registry/renderer-registry.d.ts +1 -1
  163. package/cjs/registry/renderer-registry.js +2 -2
  164. package/cjs/registry/renderer-registry.js.map +1 -1
  165. package/cjs/registry/types.d.ts +3 -3
  166. package/cjs/registry/types.js.map +1 -1
  167. package/cjs/render/contributions/render/arc-module.js +5 -6
  168. package/cjs/render/contributions/render/arc-module.js.map +1 -1
  169. package/cjs/render/contributions/render/arc3d-module.js +3 -5
  170. package/cjs/render/contributions/render/arc3d-module.js.map +1 -1
  171. package/cjs/render/contributions/render/area-module.js +6 -8
  172. package/cjs/render/contributions/render/area-module.js.map +1 -1
  173. package/cjs/render/contributions/render/base-render.js +8 -7
  174. package/cjs/render/contributions/render/base-render.js.map +1 -1
  175. package/cjs/render/contributions/render/circle-module.js +4 -5
  176. package/cjs/render/contributions/render/circle-module.js.map +1 -1
  177. package/cjs/render/contributions/render/contributions/rect-contribution-render.js +6 -2
  178. package/cjs/render/contributions/render/contributions/rect-contribution-render.js.map +1 -1
  179. package/cjs/render/contributions/render/glyph-module.js +3 -5
  180. package/cjs/render/contributions/render/glyph-module.js.map +1 -1
  181. package/cjs/render/contributions/render/image-module.js +3 -4
  182. package/cjs/render/contributions/render/image-module.js.map +1 -1
  183. package/cjs/render/contributions/render/line-module.js +3 -7
  184. package/cjs/render/contributions/render/line-module.js.map +1 -1
  185. package/cjs/render/contributions/render/path-module.js +5 -6
  186. package/cjs/render/contributions/render/path-module.js.map +1 -1
  187. package/cjs/render/contributions/render/polygon-module.js +3 -4
  188. package/cjs/render/contributions/render/polygon-module.js.map +1 -1
  189. package/cjs/render/contributions/render/pyramid3d-module.js +3 -4
  190. package/cjs/render/contributions/render/pyramid3d-module.js.map +1 -1
  191. package/cjs/render/contributions/render/rect-module.js +2 -4
  192. package/cjs/render/contributions/render/rect-module.js.map +1 -1
  193. package/cjs/render/contributions/render/rect3d-module.js +3 -4
  194. package/cjs/render/contributions/render/rect3d-module.js.map +1 -1
  195. package/cjs/render/contributions/render/richtext-module.js +3 -4
  196. package/cjs/render/contributions/render/richtext-module.js.map +1 -1
  197. package/cjs/render/contributions/render/star-module.js +4 -5
  198. package/cjs/render/contributions/render/star-module.js.map +1 -1
  199. package/cjs/render/contributions/render/star-render.d.ts +2 -2
  200. package/cjs/render/contributions/render/star-render.js +3 -3
  201. package/cjs/render/contributions/render/star-render.js.map +1 -1
  202. package/cjs/render/contributions/render/symbol-module.js +4 -5
  203. package/cjs/render/contributions/render/symbol-module.js.map +1 -1
  204. package/cjs/render/contributions/render/text-module.js +3 -4
  205. package/cjs/render/contributions/render/text-module.js.map +1 -1
  206. package/cjs/resource-loader/loader.js +5 -0
  207. package/cjs/resource-loader/loader.js.map +1 -1
  208. package/cjs/svg.d.ts +1 -0
  209. package/cjs/svg.js +15 -0
  210. package/cjs/svg.js.map +1 -0
  211. package/cjs/text.d.ts +2 -0
  212. package/cjs/text.js +29 -0
  213. package/cjs/text.js.map +1 -0
  214. package/dist/index.es.js +1440 -1780
  215. package/es/allocator/graphic-allocate.js +1 -2
  216. package/es/canvas/constants.js +2 -1
  217. package/es/common/contribution-provider.d.ts +2 -2
  218. package/es/common/contribution-provider.js +8 -4
  219. package/es/common/contribution-provider.js.map +1 -1
  220. package/es/common/diff.js +2 -1
  221. package/es/common/event-listener-manager.js +1 -2
  222. package/es/common/module-guard.d.ts +1 -0
  223. package/es/common/module-guard.js +5 -0
  224. package/es/common/module-guard.js.map +1 -0
  225. package/es/common/performance-raf.js +1 -1
  226. package/es/common/polygon.js +1 -1
  227. package/es/common/rect-utils.js +1 -1
  228. package/es/common/render-area.js +1 -1
  229. package/es/common/render-command-list.js +1 -1
  230. package/es/common/render-curve.js +1 -1
  231. package/es/common/render-utils.js +1 -1
  232. package/es/common/seg-context.js +2 -1
  233. package/es/common/simplify.js +1 -1
  234. package/es/common/sort.js +1 -1
  235. package/es/common/split-path.js +1 -1
  236. package/es/common/text.js +1 -1
  237. package/es/common/utils.js +1 -1
  238. package/es/common/xml/is-xml.d.ts +2 -0
  239. package/es/common/xml/is-xml.js +8 -0
  240. package/es/common/xml/is-xml.js.map +1 -0
  241. package/es/common/xml/parser.d.ts +2 -2
  242. package/es/common/xml/parser.js +3 -7
  243. package/es/common/xml/parser.js.map +1 -1
  244. package/es/container.d.ts +2 -0
  245. package/es/container.js +2 -0
  246. package/es/container.js.map +1 -0
  247. package/es/core/camera.js +1 -1
  248. package/es/core/constants.js +1 -1
  249. package/es/core/contributions/layerHandler/canvas2d-contribution.js +1 -0
  250. package/es/core/contributions/layerHandler/canvas2d-contribution.js.map +1 -1
  251. package/es/core/core-modules.js +1 -1
  252. package/es/core/global.js +1 -1
  253. package/es/core/graphic-utils.js +1 -2
  254. package/es/core/index.js +1 -1
  255. package/es/core/layer-service.js +1 -1
  256. package/es/core/layer.js +1 -1
  257. package/es/core/light.js +1 -1
  258. package/es/core/stage.d.ts +2 -8
  259. package/es/core/stage.js +20 -30
  260. package/es/core/stage.js.map +1 -1
  261. package/es/core/window.js +1 -1
  262. package/es/entries/miniapp.d.ts +0 -1
  263. package/es/entries/miniapp.js +1 -5
  264. package/es/entries/miniapp.js.map +1 -1
  265. package/es/entries/node.d.ts +0 -1
  266. package/es/entries/node.js +1 -5
  267. package/es/entries/node.js.map +1 -1
  268. package/es/entries/runtime-installer.d.ts +13 -0
  269. package/es/entries/runtime-installer.js +80 -9
  270. package/es/entries/runtime-installer.js.map +1 -1
  271. package/es/env.d.ts +1 -0
  272. package/es/env.js +2 -0
  273. package/es/env.js.map +1 -0
  274. package/es/event/public-constant.d.ts +7 -0
  275. package/es/event/public-constant.js +12 -0
  276. package/es/event/public-constant.js.map +1 -0
  277. package/es/event/util.d.ts +1 -1
  278. package/es/graphic/arc.js +5 -4
  279. package/es/graphic/arc.js.map +1 -1
  280. package/es/graphic/base.d.ts +2 -0
  281. package/es/graphic/base.js +2 -0
  282. package/es/graphic/base.js.map +1 -0
  283. package/es/graphic/config.js +1 -0
  284. package/es/graphic/config.js.map +1 -1
  285. package/es/graphic/creator.d.ts +16 -0
  286. package/es/graphic/creator.js +32 -0
  287. package/es/graphic/creator.js.map +1 -0
  288. package/es/graphic/glyph.js +4 -8
  289. package/es/graphic/glyph.js.map +1 -1
  290. package/es/graphic/graphic-service/graphic-service.d.ts +4 -1
  291. package/es/graphic/graphic-service/graphic-service.js +6 -15
  292. package/es/graphic/graphic-service/graphic-service.js.map +1 -1
  293. package/es/graphic/graphic.d.ts +80 -28
  294. package/es/graphic/graphic.js +492 -217
  295. package/es/graphic/graphic.js.map +1 -1
  296. package/es/graphic/group.d.ts +5 -3
  297. package/es/graphic/group.js +43 -31
  298. package/es/graphic/group.js.map +1 -1
  299. package/es/graphic/modules.d.ts +16 -0
  300. package/es/graphic/modules.js +32 -0
  301. package/es/graphic/modules.js.map +1 -0
  302. package/es/graphic/node-tree.d.ts +3 -3
  303. package/es/graphic/node-tree.js +1 -0
  304. package/es/graphic/node-tree.js.map +1 -1
  305. package/es/graphic/state/shared-state-refresh.js +8 -27
  306. package/es/graphic/state/shared-state-refresh.js.map +1 -1
  307. package/es/graphic/state/shared-state-scope.d.ts +2 -5
  308. package/es/graphic/state/shared-state-scope.js +7 -28
  309. package/es/graphic/state/shared-state-scope.js.map +1 -1
  310. package/es/graphic/state/state-definition-compiler.js +4 -5
  311. package/es/graphic/state/state-definition-compiler.js.map +1 -1
  312. package/es/graphic/state/state-definition.d.ts +2 -5
  313. package/es/graphic/state/state-definition.js.map +1 -1
  314. package/es/graphic/state/state-engine.d.ts +0 -5
  315. package/es/graphic/state/state-engine.js +18 -67
  316. package/es/graphic/state/state-engine.js.map +1 -1
  317. package/es/graphic/state/state-transition-orchestrator.d.ts +7 -9
  318. package/es/graphic/state/state-transition-orchestrator.js +10 -13
  319. package/es/graphic/state/state-transition-orchestrator.js.map +1 -1
  320. package/es/graphic/tools.js +1 -3
  321. package/es/graphic/tools.js.map +1 -1
  322. package/es/index.js.map +1 -1
  323. package/es/interface/animation/animate.d.ts +1 -0
  324. package/es/interface/animation/animate.js.map +1 -1
  325. package/es/interface/global.d.ts +8 -4
  326. package/es/interface/global.js.map +1 -1
  327. package/es/interface/graphic/arc.d.ts +1 -0
  328. package/es/interface/graphic/arc.js.map +1 -1
  329. package/es/interface/graphic/group.d.ts +0 -2
  330. package/es/interface/graphic/group.js.map +1 -1
  331. package/es/interface/graphic.d.ts +10 -5
  332. package/es/interface/graphic.js.map +1 -1
  333. package/es/interface/index.js.map +1 -1
  334. package/es/interface/node-tree.d.ts +3 -0
  335. package/es/interface/node-tree.js.map +1 -1
  336. package/es/interface/stage.d.ts +0 -7
  337. package/es/interface/stage.js.map +1 -1
  338. package/es/interpolate.d.ts +2 -0
  339. package/es/interpolate.js +4 -0
  340. package/es/interpolate.js.map +1 -0
  341. package/es/modules.js.map +1 -1
  342. package/es/path.d.ts +4 -0
  343. package/es/path.js +6 -0
  344. package/es/path.js.map +1 -0
  345. package/es/plugin/3d.d.ts +3 -0
  346. package/es/plugin/3d.js +6 -0
  347. package/es/plugin/3d.js.map +1 -0
  348. package/es/plugin/attribute.d.ts +2 -0
  349. package/es/plugin/attribute.js +4 -0
  350. package/es/plugin/attribute.js.map +1 -0
  351. package/es/plugin/flex-layout.d.ts +1 -0
  352. package/es/plugin/flex-layout.js +2 -0
  353. package/es/plugin/flex-layout.js.map +1 -0
  354. package/es/plugins/builtin-plugin/dirty-bounds-plugin.d.ts +4 -1
  355. package/es/plugins/builtin-plugin/dirty-bounds-plugin.js +27 -17
  356. package/es/plugins/builtin-plugin/dirty-bounds-plugin.js.map +1 -1
  357. package/es/plugins/builtin-plugin/flex-layout-plugin.js +3 -2
  358. package/es/plugins/builtin-plugin/flex-layout-plugin.js.map +1 -1
  359. package/es/plugins/index.d.ts +0 -4
  360. package/es/plugins/index.js +0 -8
  361. package/es/plugins/index.js.map +1 -1
  362. package/es/plugins/plugin-service.d.ts +0 -1
  363. package/es/plugins/plugin-service.js +2 -3
  364. package/es/plugins/plugin-service.js.map +1 -1
  365. package/es/plugins/types.d.ts +1 -8
  366. package/es/plugins/types.js.map +1 -1
  367. package/es/register/graphic.d.ts +19 -0
  368. package/es/register/graphic.js +38 -0
  369. package/es/register/graphic.js.map +1 -0
  370. package/es/registry/contribution-registry.d.ts +1 -1
  371. package/es/registry/contribution-registry.js +6 -2
  372. package/es/registry/contribution-registry.js.map +1 -1
  373. package/es/registry/picker-registry.d.ts +1 -1
  374. package/es/registry/picker-registry.js +2 -2
  375. package/es/registry/picker-registry.js.map +1 -1
  376. package/es/registry/renderer-registry.d.ts +1 -1
  377. package/es/registry/renderer-registry.js +2 -2
  378. package/es/registry/renderer-registry.js.map +1 -1
  379. package/es/registry/types.d.ts +3 -3
  380. package/es/registry/types.js.map +1 -1
  381. package/es/render/contributions/render/arc-module.js +6 -4
  382. package/es/render/contributions/render/arc-module.js.map +1 -1
  383. package/es/render/contributions/render/arc3d-module.js +5 -3
  384. package/es/render/contributions/render/arc3d-module.js.map +1 -1
  385. package/es/render/contributions/render/area-module.js +7 -7
  386. package/es/render/contributions/render/area-module.js.map +1 -1
  387. package/es/render/contributions/render/base-render.js +8 -6
  388. package/es/render/contributions/render/base-render.js.map +1 -1
  389. package/es/render/contributions/render/circle-module.js +6 -4
  390. package/es/render/contributions/render/circle-module.js.map +1 -1
  391. package/es/render/contributions/render/contributions/rect-contribution-render.js +6 -2
  392. package/es/render/contributions/render/contributions/rect-contribution-render.js.map +1 -1
  393. package/es/render/contributions/render/glyph-module.js +5 -3
  394. package/es/render/contributions/render/glyph-module.js.map +1 -1
  395. package/es/render/contributions/render/image-module.js +5 -3
  396. package/es/render/contributions/render/image-module.js.map +1 -1
  397. package/es/render/contributions/render/line-module.js +4 -5
  398. package/es/render/contributions/render/line-module.js.map +1 -1
  399. package/es/render/contributions/render/path-module.js +6 -4
  400. package/es/render/contributions/render/path-module.js.map +1 -1
  401. package/es/render/contributions/render/polygon-module.js +5 -3
  402. package/es/render/contributions/render/polygon-module.js.map +1 -1
  403. package/es/render/contributions/render/pyramid3d-module.js +5 -3
  404. package/es/render/contributions/render/pyramid3d-module.js.map +1 -1
  405. package/es/render/contributions/render/rect-module.js +4 -2
  406. package/es/render/contributions/render/rect-module.js.map +1 -1
  407. package/es/render/contributions/render/rect3d-module.js +5 -3
  408. package/es/render/contributions/render/rect3d-module.js.map +1 -1
  409. package/es/render/contributions/render/richtext-module.js +5 -3
  410. package/es/render/contributions/render/richtext-module.js.map +1 -1
  411. package/es/render/contributions/render/star-module.js +7 -4
  412. package/es/render/contributions/render/star-module.js.map +1 -1
  413. package/es/render/contributions/render/star-render.d.ts +2 -2
  414. package/es/render/contributions/render/star-render.js +3 -3
  415. package/es/render/contributions/render/star-render.js.map +1 -1
  416. package/es/render/contributions/render/symbol-module.js +6 -4
  417. package/es/render/contributions/render/symbol-module.js.map +1 -1
  418. package/es/render/contributions/render/text-module.js +5 -3
  419. package/es/render/contributions/render/text-module.js.map +1 -1
  420. package/es/resource-loader/loader.js +5 -0
  421. package/es/resource-loader/loader.js.map +1 -1
  422. package/es/svg.d.ts +1 -0
  423. package/es/svg.js +2 -0
  424. package/es/svg.js.map +1 -0
  425. package/es/text.d.ts +2 -0
  426. package/es/text.js +4 -0
  427. package/es/text.js.map +1 -0
  428. package/package.json +247 -3
  429. package/cjs/allocator/constants.d.ts +0 -9
  430. package/cjs/allocator/constants.js +0 -11
  431. package/cjs/allocator/constants.js.map +0 -1
  432. package/cjs/common/Reflect-metadata.d.ts +0 -2
  433. package/cjs/common/Reflect-metadata.js +0 -182
  434. package/cjs/common/Reflect-metadata.js.map +0 -1
  435. package/cjs/common/segment/curve/arc.d.ts +0 -17
  436. package/cjs/common/segment/curve/arc.js +0 -38
  437. package/cjs/common/segment/curve/arc.js.map +0 -1
  438. package/cjs/common/segment/curve/ellipse.d.ts +0 -21
  439. package/cjs/common/segment/curve/ellipse.js +0 -39
  440. package/cjs/common/segment/curve/ellipse.js.map +0 -1
  441. package/cjs/common/segment/curve/move.d.ts +0 -16
  442. package/cjs/common/segment/curve/move.js +0 -37
  443. package/cjs/common/segment/curve/move.js.map +0 -1
  444. package/cjs/common/store.d.ts +0 -2
  445. package/cjs/common/store.js +0 -2
  446. package/cjs/common/store.js.map +0 -1
  447. package/cjs/core/application.d.ts +0 -1
  448. package/cjs/core/application.js +0 -6
  449. package/cjs/core/application.js.map +0 -1
  450. package/cjs/core/global-module.d.ts +0 -1
  451. package/cjs/core/global-module.js +0 -3
  452. package/cjs/core/global-module.js.map +0 -1
  453. package/cjs/export.d.ts +0 -1
  454. package/cjs/export.js +0 -1
  455. package/cjs/export.js.map +0 -1
  456. package/cjs/graphic/state/state-batch-scheduler.d.ts +0 -42
  457. package/cjs/graphic/state/state-batch-scheduler.js +0 -285
  458. package/cjs/graphic/state/state-batch-scheduler.js.map +0 -1
  459. package/cjs/graphic/state/state-model.d.ts +0 -43
  460. package/cjs/graphic/state/state-model.js +0 -143
  461. package/cjs/graphic/state/state-model.js.map +0 -1
  462. package/cjs/graphic/state/state-perf-monitor.d.ts +0 -119
  463. package/cjs/graphic/state/state-perf-monitor.js +0 -217
  464. package/cjs/graphic/state/state-perf-monitor.js.map +0 -1
  465. package/cjs/graphic/state/state-style-resolver.d.ts +0 -22
  466. package/cjs/graphic/state/state-style-resolver.js +0 -73
  467. package/cjs/graphic/state/state-style-resolver.js.map +0 -1
  468. package/cjs/interface/animate.d.ts +0 -1
  469. package/cjs/interface/animate.js +0 -3
  470. package/cjs/interface/animate.js.map +0 -1
  471. package/cjs/interface/creator.d.ts +0 -4
  472. package/cjs/interface/creator.js +0 -6
  473. package/cjs/interface/creator.js.map +0 -1
  474. package/cjs/interface/graphic/dynamic-path.d.ts +0 -1
  475. package/cjs/interface/graphic/dynamic-path.js +0 -3
  476. package/cjs/interface/graphic/dynamic-path.js.map +0 -1
  477. package/cjs/interface/graphic-utils.d.ts +0 -1
  478. package/cjs/interface/graphic-utils.js +0 -3
  479. package/cjs/interface/graphic-utils.js.map +0 -1
  480. package/cjs/interface/theme-service.d.ts +0 -1
  481. package/cjs/interface/theme-service.js +0 -3
  482. package/cjs/interface/theme-service.js.map +0 -1
  483. package/cjs/plugins/base-plugin.d.ts +0 -8
  484. package/cjs/plugins/base-plugin.js +0 -15
  485. package/cjs/plugins/base-plugin.js.map +0 -1
  486. package/cjs/plugins/browser-env-plugin.d.ts +0 -8
  487. package/cjs/plugins/browser-env-plugin.js +0 -24
  488. package/cjs/plugins/browser-env-plugin.js.map +0 -1
  489. package/cjs/plugins/builtin-plugin/poptip-plugin.d.ts +0 -1
  490. package/cjs/plugins/builtin-plugin/poptip-plugin.js +0 -3
  491. package/cjs/plugins/builtin-plugin/poptip-plugin.js.map +0 -1
  492. package/cjs/plugins/picker-plugin.d.ts +0 -7
  493. package/cjs/plugins/picker-plugin.js +0 -19
  494. package/cjs/plugins/picker-plugin.js.map +0 -1
  495. package/cjs/plugins/renderer-plugin.d.ts +0 -7
  496. package/cjs/plugins/renderer-plugin.js +0 -19
  497. package/cjs/plugins/renderer-plugin.js.map +0 -1
  498. package/cjs/render/contributions/render/clear-screen.d.ts +0 -1
  499. package/cjs/render/contributions/render/clear-screen.js +0 -3
  500. package/cjs/render/contributions/render/clear-screen.js.map +0 -1
  501. package/cjs/render/contributions/render/render-slector.d.ts +0 -1
  502. package/cjs/render/contributions/render/render-slector.js +0 -3
  503. package/cjs/render/contributions/render/render-slector.js.map +0 -1
  504. package/es/allocator/constants.d.ts +0 -9
  505. package/es/allocator/constants.js +0 -18
  506. package/es/allocator/constants.js.map +0 -1
  507. package/es/common/Reflect-metadata.d.ts +0 -2
  508. package/es/common/Reflect-metadata.js +0 -178
  509. package/es/common/Reflect-metadata.js.map +0 -1
  510. package/es/common/segment/curve/arc.d.ts +0 -17
  511. package/es/common/segment/curve/arc.js +0 -31
  512. package/es/common/segment/curve/arc.js.map +0 -1
  513. package/es/common/segment/curve/ellipse.d.ts +0 -21
  514. package/es/common/segment/curve/ellipse.js +0 -33
  515. package/es/common/segment/curve/ellipse.js.map +0 -1
  516. package/es/common/segment/curve/move.d.ts +0 -16
  517. package/es/common/segment/curve/move.js +0 -31
  518. package/es/common/segment/curve/move.js.map +0 -1
  519. package/es/common/store.d.ts +0 -2
  520. package/es/common/store.js +0 -2
  521. package/es/common/store.js.map +0 -1
  522. package/es/core/application.d.ts +0 -1
  523. package/es/core/application.js +0 -2
  524. package/es/core/application.js.map +0 -1
  525. package/es/core/global-module.d.ts +0 -1
  526. package/es/core/global-module.js +0 -3
  527. package/es/core/global-module.js.map +0 -1
  528. package/es/export.d.ts +0 -1
  529. package/es/export.js +0 -1
  530. package/es/export.js.map +0 -1
  531. package/es/graphic/state/state-batch-scheduler.d.ts +0 -42
  532. package/es/graphic/state/state-batch-scheduler.js +0 -278
  533. package/es/graphic/state/state-batch-scheduler.js.map +0 -1
  534. package/es/graphic/state/state-model.d.ts +0 -43
  535. package/es/graphic/state/state-model.js +0 -135
  536. package/es/graphic/state/state-model.js.map +0 -1
  537. package/es/graphic/state/state-perf-monitor.d.ts +0 -119
  538. package/es/graphic/state/state-perf-monitor.js +0 -207
  539. package/es/graphic/state/state-perf-monitor.js.map +0 -1
  540. package/es/graphic/state/state-style-resolver.d.ts +0 -22
  541. package/es/graphic/state/state-style-resolver.js +0 -65
  542. package/es/graphic/state/state-style-resolver.js.map +0 -1
  543. package/es/interface/animate.d.ts +0 -1
  544. package/es/interface/animate.js +0 -3
  545. package/es/interface/animate.js.map +0 -1
  546. package/es/interface/creator.d.ts +0 -4
  547. package/es/interface/creator.js +0 -2
  548. package/es/interface/creator.js.map +0 -1
  549. package/es/interface/graphic/dynamic-path.d.ts +0 -1
  550. package/es/interface/graphic/dynamic-path.js +0 -3
  551. package/es/interface/graphic/dynamic-path.js.map +0 -1
  552. package/es/interface/graphic-utils.d.ts +0 -1
  553. package/es/interface/graphic-utils.js +0 -3
  554. package/es/interface/graphic-utils.js.map +0 -1
  555. package/es/interface/theme-service.d.ts +0 -1
  556. package/es/interface/theme-service.js +0 -3
  557. package/es/interface/theme-service.js.map +0 -1
  558. package/es/plugins/base-plugin.d.ts +0 -8
  559. package/es/plugins/base-plugin.js +0 -7
  560. package/es/plugins/base-plugin.js.map +0 -1
  561. package/es/plugins/browser-env-plugin.d.ts +0 -8
  562. package/es/plugins/browser-env-plugin.js +0 -16
  563. package/es/plugins/browser-env-plugin.js.map +0 -1
  564. package/es/plugins/builtin-plugin/poptip-plugin.d.ts +0 -1
  565. package/es/plugins/builtin-plugin/poptip-plugin.js +0 -3
  566. package/es/plugins/builtin-plugin/poptip-plugin.js.map +0 -1
  567. package/es/plugins/picker-plugin.d.ts +0 -7
  568. package/es/plugins/picker-plugin.js +0 -11
  569. package/es/plugins/picker-plugin.js.map +0 -1
  570. package/es/plugins/renderer-plugin.d.ts +0 -7
  571. package/es/plugins/renderer-plugin.js +0 -11
  572. package/es/plugins/renderer-plugin.js.map +0 -1
  573. package/es/render/contributions/render/clear-screen.d.ts +0 -1
  574. package/es/render/contributions/render/clear-screen.js +0 -3
  575. package/es/render/contributions/render/clear-screen.js.map +0 -1
  576. package/es/render/contributions/render/render-slector.d.ts +0 -1
  577. package/es/render/contributions/render/render-slector.js +0 -3
  578. package/es/render/contributions/render/render-slector.js.map +0 -1
@@ -1 +1 @@
1
- {"version":3,"sources":["../src/graphic/graphic.ts"],"names":[],"mappings":"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","file":"graphic.js","sourcesContent":["import type { ICustomPath2D } from './../interface/path';\nimport {\n AABBBounds,\n isArray,\n isEqual,\n max,\n Matrix,\n OBBBounds,\n normalTransform,\n Point,\n type Dict,\n type IAABBBounds,\n type IOBBBounds,\n type IPointLike,\n isNil,\n isString,\n isValidUrl,\n isBase64,\n isObject\n} from '@visactor/vutils';\nimport type {\n GraphicType,\n IAnimateConfig,\n IGraphicAttribute,\n IGraphic,\n IGraphicJson,\n ISetAttributeContext,\n ITransform,\n GraphicReleaseStatus\n} from '../interface/graphic';\nimport { Node } from './node-tree';\nimport type {\n IAnimate,\n IAnimateTarget,\n IGlyphGraphicAttribute,\n IGroup,\n ILayer,\n IPickerService,\n IShadowRoot,\n IStage,\n IStep,\n ISymbolClass\n} from '../interface';\nimport { EventTarget, CustomEvent } from '../event';\nimport { DefaultTransform } from './config';\nimport { application } from '../application';\nimport { CustomPath2D } from '../common/custom-path2d';\nimport { ResourceLoader } from '../resource-loader/loader';\nimport { AttributeUpdateType, IContainPointMode, UpdateTag } from '../common/enums';\nimport { BoundsContext } from '../common/bounds-context';\nimport { renderCommandList } from '../common/render-command-list';\nimport { parsePadding } from '../common/utils';\nimport { builtinSymbolsMap, builtInSymbolStrMap, CustomSymbolClass } from './builtin-symbol';\nimport { isSvg, XMLParser } from '../common/xml';\nimport { SVG_PARSE_ATTRIBUTE_MAP, SVG_PARSE_ATTRIBUTE_MAP_KEYS } from './constants';\nimport { DefaultStateAnimateConfig } from '../animate/config';\nimport { EmptyContext2d } from '../canvas';\nimport type { CompiledStateDefinition, StateDefinition, StateDefinitionsInput } from './state/state-definition';\nimport { StateDefinitionCompiler } from './state/state-definition-compiler';\nimport { StateEngine } from './state/state-engine';\nimport { StateModel } from './state/state-model';\nimport { UpdateCategory, classifyAttributeDelta } from './state/attribute-update-classifier';\nimport { StateStyleResolver, type StateMergeMode } from './state/state-style-resolver';\nimport { StateTransitionOrchestrator } from './state/state-transition-orchestrator';\nimport {\n collectSharedStateScopeChain,\n ensureSharedStateScopeFresh,\n type SharedStateScope\n} from './state/shared-state-scope';\nimport { enqueueGraphicSharedStateRefresh, scheduleStageSharedStateRefresh } from './state/shared-state-refresh';\nimport { getStageStatePerfMonitor } from './state/state-perf-monitor';\n\ndeclare const require: (id: string) => unknown;\n\nconst _tempBounds = new AABBBounds();\ntype TShadowRootModule = {\n createShadowRoot: (graphic?: IGraphic) => IShadowRoot;\n};\nconst loadShadowRootFactory = () => require('./shadow-root') as TShadowRootModule;\n/**\n * pathProxy参考自zrender\n * BSD 3-Clause License\n\n Copyright (c) 2017, Baidu Inc.\n All rights reserved.\n\n Redistribution and use in source and binary forms, with or without\n modification, are permitted provided that the following conditions are met:\n\n * Redistributions of source code must retain the above copyright notice, this\n list of conditions and the following disclaimer.\n\n * Redistributions in binary form must reproduce the above copyright notice,\n this list of conditions and the following disclaimer in the documentation\n and/or other materials provided with the distribution.\n\n * Neither the name of the copyright holder nor the names of its\n contributors may be used to endorse or promote products derived from\n this software without specific prior written permission.\n\n THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS \"AS IS\"\n AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE\n IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE\n DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE\n FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL\n DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR\n SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER\n CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,\n OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE\n OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.\n */\n\nconst tempMatrix = new Matrix();\nexport const PURE_STYLE_KEY = [\n 'stroke',\n 'opacity',\n 'strokeOpacity',\n 'lineDash',\n 'lineDashOffset',\n 'lineCap',\n 'lineJoin',\n 'miterLimit',\n 'fill',\n 'fillOpacity'\n];\n\nexport const GRAPHIC_UPDATE_TAG_KEY = [\n 'lineWidth',\n // 'lineCap',\n // 'lineJoin',\n // 'miterLimit',\n 'scaleX',\n 'scaleY',\n 'angle',\n 'anchor',\n 'visible'\n];\n\nconst tempConstantXYKey = ['x', 'y'];\nconst tempConstantScaleXYKey = ['scaleX', 'scaleY'];\nconst tempConstantAngleKey = ['angle'];\nconst builtinTextureTypes = new Set([\n 'circle',\n 'diamond',\n 'rect',\n 'vertical-line',\n 'horizontal-line',\n 'bias-lr',\n 'bias-rl',\n 'grid',\n 'wave'\n]);\n\nconst point = new Point();\n\ntype AttributeDelta = Map<string, { prev: unknown; next: unknown }>;\n\nfunction isPlainObjectValue(value: unknown): value is Record<string, any> {\n return typeof value === 'object' && value != null && !isArray(value);\n}\n\nfunction cloneAttributeValue<T>(value: T): T {\n if (!isPlainObjectValue(value)) {\n return value;\n }\n\n const source = value as Record<string, any>;\n const clone: Record<string, any> = {};\n Object.keys(source).forEach(key => {\n const nextValue = source[key];\n clone[key] = isPlainObjectValue(nextValue) ? cloneAttributeValue(nextValue) : nextValue;\n });\n return clone as T;\n}\n\nfunction cloneSimpleAttributeRecord<T>(value: T): T {\n if (!isPlainObjectValue(value)) {\n return value;\n }\n\n return { ...(value as Record<string, any>) } as T;\n}\n\nexport function shouldUseSimpleAttributeFastPath(value: unknown): value is Record<string, any> {\n if (!isPlainObjectValue(value)) {\n return false;\n }\n\n return !Object.keys(value).some(key => isPlainObjectValue((value as Record<string, any>)[key]));\n}\n\nfunction cloneAttributeSurface<T>(value: T): T {\n if (!isPlainObjectValue(value)) {\n return value;\n }\n\n const source = value as Record<string, any>;\n const clone: Record<string, any> = {};\n Object.keys(source).forEach(key => {\n const nextValue = source[key];\n clone[key] = isPlainObjectValue(nextValue) ? { ...nextValue } : nextValue;\n });\n return clone as T;\n}\n\nfunction deepMergeAttributeValue(base: Record<string, any>, value: Record<string, any>): Record<string, any> {\n const result: Record<string, any> = cloneAttributeValue(base) ?? {};\n\n Object.keys(value).forEach(key => {\n const nextValue = value[key];\n const previousValue = result[key];\n\n if (isPlainObjectValue(previousValue) && isPlainObjectValue(nextValue)) {\n result[key] = deepMergeAttributeValue(previousValue, nextValue);\n return;\n }\n\n result[key] = cloneAttributeValue(nextValue);\n });\n\n return result;\n}\n\nexport const NOWORK_ANIMATE_ATTR = {\n strokeSeg: 1,\n boundsPadding: 2,\n pickMode: 1,\n boundsMode: 1,\n customPickShape: 1,\n pickable: 1,\n childrenPickable: 1,\n visible: 1,\n zIndex: 1,\n layout: 1,\n keepDirIn3d: 1,\n globalZIndex: 1,\n\n outerBorder: 1,\n innerBorder: 1,\n lineDash: 1,\n lineCap: 1,\n lineJoin: 1,\n miterLimit: 2,\n strokeBoundsBuffer: 2,\n\n scaleCenter: 1,\n anchor: 1,\n anchor3d: 1,\n postMatrix: 1,\n\n backgroundMode: 2,\n background: 1,\n texture: 1,\n cursor: 1,\n html: 1\n};\n\n// function createTrackableObject(obj: any) {\n// // const accessedProperties = new Set(); // 记录被读取的属性\n// // const modifiedProperties = new Set(); // 记录被设置/修改的属性\n\n// const handler = {\n// get(target: any, property: any) {\n// // accessedProperties.add(property); // 记录读取操作\n// return Reflect.get(target, property);\n// },\n// set(target: any, property: any, value: any) {\n// if (property === 'size' && !isFinite(value)) {\n// console.log('set', property, value);\n// }\n// // modifiedProperties.add(property); // 记录设置/修改操作\n// return Reflect.set(target, property, value);\n// }\n// };\n\n// const proxy = new Proxy(obj, handler);\n\n// // 提供方法获取被追踪的属性\n// // proxy.getAccessedProperties = () => [...accessedProperties];\n// // proxy.getModifiedProperties = () => [...modifiedProperties];\n\n// return proxy;\n// }\n\n/**\n * globalTransMatrix更新逻辑\n * 1. group的transform修改,会下发到所有下层group,将所有下层的tag修改\n * 2. 叶子graphic每次获取globalTransMatrix都重新计算\n * 3. 所有节点的transform修改,或者globalTransform修改,都会下发到自己的shadowRoot上\n */\n\nexport abstract class Graphic<T extends Partial<IGraphicAttribute> = Partial<IGraphicAttribute>>\n extends Node\n implements IGraphic<T>, IAnimateTarget\n{\n /**\n * Mixes all enumerable properties and methods from a source object to Element.\n * @param source - The source of properties and methods to mix in.\n */\n static mixin(source: Dict<any>): void {\n // in ES8/ES2017, this would be really easy:\n // Object.defineProperties(Element.prototype, Object.getOwnPropertyDescriptors(source));\n\n // get all the enumerable property keys\n const keys = Object.keys(source);\n\n // loop through properties\n for (let i = 0; i < keys.length; ++i) {\n const propertyName = keys[i];\n\n // Set the property using the property descriptor - this works for accessors and normal value properties\n Object.defineProperty(\n Graphic.prototype,\n propertyName,\n Object.getOwnPropertyDescriptor(source, propertyName) as PropertyDecorator\n );\n }\n }\n\n declare _events?: any;\n\n // 保存语法上下文\n declare context?: Record<string, any>;\n\n static userSymbolMap: Record<string, ISymbolClass> = {};\n\n declare onBeforeAttributeUpdate?: (\n val: any,\n attributes: Partial<T>,\n key: null | string | string[],\n context?: ISetAttributeContext\n ) => T | undefined;\n declare parent: any;\n\n declare resources?: Map<\n string | HTMLImageElement | HTMLCanvasElement,\n { state: 'init' | 'loading' | 'success' | 'fail'; data?: HTMLImageElement | HTMLCanvasElement }\n >;\n declare backgroundImg?: boolean;\n\n declare type: GraphicType;\n declare prefixed: string;\n declare numberType: number;\n declare isContainer?: boolean;\n declare valid: boolean;\n declare stage?: IStage;\n declare layer?: ILayer;\n declare incremental?: number;\n declare glyphHost?: IGraphic<IGlyphGraphicAttribute>;\n declare _onSetStage?: (g: IGraphic, stage: IStage, layer: ILayer) => void;\n // declare _beforeAttributeUpdate?: (key: string | string, value: any) => void;\n // 标记是否是在3d模式下\n declare in3dMode?: boolean;\n\n // 不考虑transform的宽高,特殊情况下会使用到\n declare widthWithoutTransform?: number;\n declare heightWithoutTransform?: number;\n declare x1WithoutTransform?: number;\n declare y1WithoutTransform?: number;\n\n // aabbBounds,所有图形都需要有,所以初始化即赋值\n protected declare _AABBBounds: IAABBBounds;\n get AABBBounds(): IAABBBounds {\n return this.tryUpdateAABBBounds();\n }\n // 具有旋转的包围盒,部分图元需要,动态初始化\n protected declare _OBBBounds?: IOBBBounds;\n get OBBBounds(): IOBBBounds {\n return this.tryUpdateOBBBounds();\n }\n protected declare _globalAABBBounds: IAABBBounds;\n // 全局包围盒,部分图元需要,动态初始化,建议使用AABBBounds\n get globalAABBBounds(): IAABBBounds {\n return this.tryUpdateGlobalAABBBounds();\n }\n protected declare _transMatrix: Matrix;\n get transMatrix(): Matrix {\n return this.tryUpdateLocalTransMatrix(true);\n }\n protected declare _globalTransMatrix: Matrix;\n get globalTransMatrix(): Matrix {\n return this.tryUpdateGlobalTransMatrix(true);\n }\n protected declare _updateTag: number;\n\n // 上次更新的stamp\n declare stamp?: number;\n\n declare attribute: T;\n declare baseAttributes: Partial<T>;\n\n declare shadowRoot?: IShadowRoot;\n\n declare releaseStatus?: GraphicReleaseStatus;\n\n /** 记录state对应的图形属性 */\n declare states?: StateDefinitionsInput<T>;\n /** 当前state值 */\n declare currentStates?: string[];\n declare effectiveStates?: string[];\n declare resolvedStatePatch?: Partial<T>;\n declare boundSharedStateScope?: SharedStateScope<T>;\n declare boundSharedStateRevision?: number;\n declare sharedStateDirty?: boolean;\n declare registeredActiveScopes?: Set<SharedStateScope<T>>;\n declare localFallbackCompiledDefinitions?: Map<string, CompiledStateDefinition<T>>;\n declare localFallbackVersion?: number;\n /** TODO: state更新对应的动画配置 */\n declare stateAnimateConfig?: IAnimateConfig;\n /** 获取state图形属性的方法 */\n declare stateProxy?: (stateName: string, targetStates?: string[]) => Partial<T>;\n /** 状态样式合并模式,默认浅合并,可选深度合并 */\n declare stateMergeMode?: StateMergeMode;\n declare animates: Map<string | number, IAnimate>;\n\n declare animate?: () => IAnimate;\n\n // declare nextAttrs?: T;\n // declare prevAttrs?: T;\n // declare finalAttrs?: T;\n\n declare pathProxy?: ICustomPath2D;\n // 依附于某个theme,如果该节点不存在parent,那么这个Theme就作为节点的Theme,避免添加到节点前计算属性\n declare attachedThemeGraphic?: IGraphic;\n protected updateAABBBoundsStamp: number;\n protected updateOBBBoundsStamp?: number;\n declare clipPathMap?: Map<string, ISymbolClass>;\n\n // 外部设置,用于选择所使用的textMeasureId\n declare textMeasureId?: string;\n\n // state 排序方法\n protected stateSort?: (stateA: string, stateB: string) => number;\n protected compiledStateDefinitions?: Map<string, CompiledStateDefinition<T>>;\n protected compiledStateDefinitionsCacheKey?: string;\n protected stateEngine?: StateEngine<T>;\n protected stateEngineCompiledDefinitions?: Map<string, CompiledStateDefinition<T>>;\n protected stateEngineStateProxy?: (stateName: string, targetStates?: string[]) => Partial<T>;\n protected stateEngineStateSort?: (stateA: string, stateB: string) => number;\n protected stateEngineMergeMode?: StateMergeMode;\n protected stateEngineStateProxyModeKey?: string;\n protected stateStyleResolver?: StateStyleResolver<T>;\n protected deepStateStyleResolver?: StateStyleResolver<T>;\n protected stateTransitionOrchestrator?: StateTransitionOrchestrator<T>;\n protected _deprecatedNormalAttrsView?: Partial<T> | null;\n protected localStateDefinitionsSource?: StateDefinitionsInput<T>;\n protected resolverEpoch: number = 0;\n\n constructor(params: T = {} as T) {\n super();\n this._AABBBounds = new AABBBounds();\n this._updateTag = UpdateTag.INIT;\n const useSimpleAttributeFastPath = shouldUseSimpleAttributeFastPath(params);\n const initialBaseAttributes = (\n useSimpleAttributeFastPath ? cloneSimpleAttributeRecord(params) : cloneAttributeValue(params)\n ) as Partial<T>;\n this.baseAttributes = initialBaseAttributes;\n this.attribute = (\n useSimpleAttributeFastPath\n ? cloneSimpleAttributeRecord(initialBaseAttributes)\n : cloneAttributeSurface(initialBaseAttributes)\n ) as T;\n this.valid = this.isValid();\n this.updateAABBBoundsStamp = 0;\n if (params.background) {\n this.loadImage((params.background as any).background ?? params.background, true);\n }\n if (isExternalTexture(params.texture)) {\n this.loadImage(params.texture, false);\n }\n if (params.shadowGraphic) {\n this.setShadowGraphic(params.shadowGraphic);\n }\n // this.attribute = createTrackableObject(this.attribute);\n }\n\n get normalAttrs(): Partial<T> | undefined {\n return this.baseAttributes;\n }\n\n set normalAttrs(value: Partial<T> | undefined) {\n this._deprecatedNormalAttrsView = value ?? undefined;\n }\n\n getGraphicService() {\n return this.stage?.graphicService ?? application.graphicService;\n }\n\n getAttributes(): T {\n return this.attribute;\n }\n\n protected getStateStyleResolver(mergeMode?: StateMergeMode): StateStyleResolver<T> {\n if (mergeMode === 'deep') {\n if (!this.deepStateStyleResolver) {\n this.deepStateStyleResolver = new StateStyleResolver<T>({ mergeMode: 'deep' });\n }\n return this.deepStateStyleResolver;\n }\n\n if (!this.stateStyleResolver) {\n this.stateStyleResolver = new StateStyleResolver<T>();\n }\n\n return this.stateStyleResolver;\n }\n\n protected getStateTransitionOrchestrator(): StateTransitionOrchestrator<T> {\n if (!this.stateTransitionOrchestrator) {\n this.stateTransitionOrchestrator = new StateTransitionOrchestrator<T>();\n }\n\n return this.stateTransitionOrchestrator;\n }\n\n protected resolveBoundSharedStateScope(): SharedStateScope<T> | SharedStateScope<Record<string, any>> | undefined {\n let parent = this.parent as IGroup | null;\n\n while (parent) {\n if ((parent as any).sharedStateScope) {\n return (parent as any).sharedStateScope;\n }\n parent = parent.parent as IGroup | null;\n }\n\n return this.stage?.rootSharedStateScope as SharedStateScope<Record<string, any>> | undefined;\n }\n\n protected syncSharedStateScopeBindingFromTree(markDirty: boolean = true): boolean {\n const nextScope = this.resolveBoundSharedStateScope();\n if (this.boundSharedStateScope === nextScope) {\n this.syncSharedStateActiveRegistrations();\n return false;\n }\n\n this.boundSharedStateScope = nextScope as SharedStateScope<T> | undefined;\n this.boundSharedStateRevision = undefined;\n this.localFallbackCompiledDefinitions = undefined;\n this.compiledStateDefinitions = undefined;\n this.compiledStateDefinitionsCacheKey = undefined;\n this.stateEngine = undefined;\n this.stateEngineCompiledDefinitions = undefined;\n this.stateEngineStateProxyModeKey = undefined;\n this.syncSharedStateActiveRegistrations();\n\n if (markDirty && this.currentStates?.length) {\n this.markSharedStateDirty();\n }\n\n return true;\n }\n\n protected syncSharedStateActiveRegistrations(): void {\n const nextScopes =\n this.currentStates?.length && this.boundSharedStateScope\n ? new Set(collectSharedStateScopeChain(this.boundSharedStateScope))\n : new Set<SharedStateScope<T>>();\n const previousScopes = this.registeredActiveScopes ?? new Set<SharedStateScope<T>>();\n\n previousScopes.forEach(scope => {\n if (!nextScopes.has(scope)) {\n scope.subtreeActiveDescendants.delete(this);\n }\n });\n\n nextScopes.forEach(scope => {\n scope.subtreeActiveDescendants.add(this);\n });\n\n this.registeredActiveScopes = nextScopes;\n }\n\n protected clearSharedStateActiveRegistrations(): void {\n const previousScopes = this.registeredActiveScopes;\n if (previousScopes) {\n previousScopes.forEach(scope => {\n scope.subtreeActiveDescendants.delete(this);\n });\n previousScopes.clear();\n }\n this.registeredActiveScopes = undefined;\n }\n\n protected markSharedStateDirty(): void {\n this.sharedStateDirty = true;\n enqueueGraphicSharedStateRefresh(this.stage, this);\n scheduleStageSharedStateRefresh(this.stage);\n }\n\n onParentSharedStateTreeChanged(stage?: IStage, layer?: ILayer): void {\n if (this.stage !== stage || this.layer !== layer) {\n this.setStage(stage, layer);\n return;\n }\n\n this.syncSharedStateScopeBindingFromTree();\n }\n\n refreshSharedStateBeforeRender(): void {\n if (!this.currentStates?.length) {\n this.sharedStateDirty = false;\n return;\n }\n\n this.syncSharedStateScopeBindingFromTree(false);\n if (this.boundSharedStateScope) {\n ensureSharedStateScopeFresh(this.boundSharedStateScope);\n }\n\n this.recomputeCurrentStatePatch();\n this.stopStateAnimates();\n this._restoreAttributeFromStaticTruth({ type: AttributeUpdateType.STATE });\n this._emitCustomEvent('afterStateUpdate', { type: AttributeUpdateType.STATE });\n this.sharedStateDirty = false;\n }\n\n protected getLocalStatesVersion(): number {\n if (this.localStateDefinitionsSource !== this.states) {\n this.localStateDefinitionsSource = this.states;\n this.localFallbackVersion = (this.localFallbackVersion ?? 0) + 1;\n }\n\n return this.localFallbackVersion ?? 0;\n }\n\n protected resolveEffectiveCompiledDefinitions(): {\n compiledDefinitions?: Map<string, CompiledStateDefinition<T>>;\n stateProxyModeKey: string;\n stateProxyEligibility?: (stateName: string) => boolean;\n } {\n this.syncSharedStateScopeBindingFromTree(false);\n const boundScope = this.boundSharedStateScope;\n if (boundScope) {\n ensureSharedStateScopeFresh(boundScope);\n this.boundSharedStateRevision = boundScope.revision;\n }\n\n const hasStates = !!this.states && Object.keys(this.states).length > 0;\n if (!boundScope) {\n if (!hasStates) {\n return {\n compiledDefinitions: undefined,\n stateProxyModeKey: 'none'\n };\n }\n\n const localStatesVersion = this.getLocalStatesVersion();\n const cacheKey = `local:${localStatesVersion}`;\n if (!this.compiledStateDefinitions || this.compiledStateDefinitionsCacheKey !== cacheKey) {\n this.compiledStateDefinitions = new StateDefinitionCompiler<T>().compile(this.states);\n this.compiledStateDefinitionsCacheKey = cacheKey;\n }\n\n return {\n compiledDefinitions: this.compiledStateDefinitions,\n stateProxyModeKey: this.stateProxy ? 'legacy-all' : 'none'\n };\n }\n\n const sharedCompiledDefinitions = boundScope.effectiveCompiledDefinitions as Map<\n string,\n CompiledStateDefinition<T>\n >;\n const sharedStateProxyModeKey = this.stateProxy ? 'shared-missing-only' : 'none';\n const sharedStateProxyEligibility = this.stateProxy\n ? (stateName: string) => !sharedCompiledDefinitions.has(stateName)\n : undefined;\n if (!hasStates) {\n this.localFallbackCompiledDefinitions = undefined;\n return {\n compiledDefinitions: sharedCompiledDefinitions,\n stateProxyModeKey: sharedStateProxyModeKey,\n stateProxyEligibility: sharedStateProxyEligibility\n };\n }\n\n const localStates = this.states as StateDefinitionsInput<T>;\n const missingLocalStateDefinitions = {} as StateDefinitionsInput<T>;\n const missingStateNames: string[] = [];\n Object.keys(localStates).forEach(stateName => {\n if (sharedCompiledDefinitions.has(stateName)) {\n return;\n }\n missingLocalStateDefinitions[stateName] = localStates[stateName];\n missingStateNames.push(stateName);\n });\n\n if (!missingStateNames.length) {\n this.localFallbackCompiledDefinitions = undefined;\n return {\n compiledDefinitions: sharedCompiledDefinitions,\n stateProxyModeKey: sharedStateProxyModeKey,\n stateProxyEligibility: sharedStateProxyEligibility\n };\n }\n\n const localStatesVersion = this.getLocalStatesVersion();\n const stateProxyModeKey = this.stateProxy ? `missing:${missingStateNames.sort().join('|')}` : 'none';\n const cacheKey = `shared:${boundScope.revision}:fallback:${localStatesVersion}:${stateProxyModeKey}`;\n if (!this.localFallbackCompiledDefinitions || this.compiledStateDefinitionsCacheKey !== cacheKey) {\n this.localFallbackCompiledDefinitions = new StateDefinitionCompiler<T>().compile({\n ...(boundScope.effectiveSourceDefinitions as StateDefinitionsInput<T>),\n ...missingLocalStateDefinitions\n });\n this.compiledStateDefinitionsCacheKey = cacheKey;\n }\n\n return {\n compiledDefinitions: this.localFallbackCompiledDefinitions,\n stateProxyModeKey,\n stateProxyEligibility: sharedStateProxyEligibility\n };\n }\n\n protected recomputeCurrentStatePatch(): void {\n if (!this.currentStates?.length) {\n this.effectiveStates = [];\n this.resolvedStatePatch = undefined;\n this.syncSharedStateActiveRegistrations();\n return;\n }\n\n const stateResolveBaseAttrs = (this.baseAttributes ?? this.attribute) as Partial<T>;\n const stateModel = this.createStateModel();\n this.stateEngine?.setResolveContext(this, stateResolveBaseAttrs);\n const transition = stateModel.useStates(this.currentStates);\n const effectiveStates = transition.effectiveStates ?? transition.states;\n const resolvedStateAttrs =\n this.stateEngine && this.compiledStateDefinitions\n ? { ...(this.stateEngine.resolvedPatch as Partial<T>) }\n : this.getStateStyleResolver(this.stateMergeMode).resolve(\n stateResolveBaseAttrs,\n this.states as any,\n this.stateProxy as any,\n transition.states,\n this.stateSort\n );\n\n this.currentStates = transition.states;\n this.effectiveStates = [...effectiveStates];\n this.resolvedStatePatch = { ...resolvedStateAttrs };\n this.syncSharedStateActiveRegistrations();\n }\n\n protected buildStaticAttributeSnapshot(): Partial<T> {\n const snapshot = cloneAttributeValue((this.baseAttributes ?? {}) as Partial<T>) as Partial<T>;\n const resolvedPatch = this.resolvedStatePatch;\n\n if (!resolvedPatch) {\n return snapshot;\n }\n\n Object.keys(resolvedPatch).forEach(key => {\n const nextValue = (resolvedPatch as Record<string, any>)[key];\n const previousValue = (snapshot as Record<string, any>)[key];\n\n if (this.stateMergeMode === 'deep' && isPlainObjectValue(previousValue) && isPlainObjectValue(nextValue)) {\n (snapshot as Record<string, any>)[key] = deepMergeAttributeValue(previousValue, nextValue);\n return;\n }\n\n (snapshot as Record<string, any>)[key] = cloneAttributeValue(nextValue);\n });\n\n return snapshot;\n }\n\n protected buildRemovedStateAnimationAttrs(\n targetStateAttrs: Partial<T>,\n previousResolvedStatePatch?: Partial<T>\n ): Partial<T> {\n const extraAttrs: Record<string, any> = {};\n\n if (!previousResolvedStatePatch) {\n return extraAttrs as Partial<T>;\n }\n\n const snapshot = this.buildStaticAttributeSnapshot() as Record<string, any>;\n const staticTargetAttrs = snapshot as Partial<T>;\n Object.keys(previousResolvedStatePatch).forEach(key => {\n const hasTargetAttr = Object.prototype.hasOwnProperty.call(targetStateAttrs, key);\n if (hasTargetAttr && (targetStateAttrs as Record<string, any>)[key] !== undefined) {\n return;\n }\n\n const assignFallbackAttr = (value: any): void => {\n if (value === undefined && this.shouldSkipStateTransitionDefaultAttribute(key, staticTargetAttrs)) {\n return;\n }\n extraAttrs[key] = value === undefined ? value : cloneAttributeValue(value);\n };\n\n if (hasTargetAttr) {\n assignFallbackAttr(this.getStateTransitionDefaultAttribute(key, staticTargetAttrs));\n return;\n }\n\n if (Object.prototype.hasOwnProperty.call(snapshot, key)) {\n const snapshotValue = snapshot[key];\n assignFallbackAttr(\n snapshotValue === undefined ? this.getStateTransitionDefaultAttribute(key, staticTargetAttrs) : snapshotValue\n );\n return;\n }\n\n assignFallbackAttr(this.getStateTransitionDefaultAttribute(key, staticTargetAttrs));\n });\n\n return extraAttrs as Partial<T>;\n }\n\n protected syncObjectToSnapshot(target: Record<string, any>, snapshot: Record<string, any>): AttributeDelta {\n const delta: AttributeDelta = new Map();\n const keySet = new Set<string>([...Object.keys(target), ...Object.keys(snapshot)]);\n\n keySet.forEach(key => {\n const hasNext = Object.prototype.hasOwnProperty.call(snapshot, key);\n const previousValue = target[key];\n\n if (!hasNext) {\n if (Object.prototype.hasOwnProperty.call(target, key)) {\n delta.set(key, { prev: previousValue, next: undefined });\n delete target[key];\n }\n return;\n }\n\n const nextValue = snapshot[key];\n if (isEqual(previousValue, nextValue)) {\n return;\n }\n\n delta.set(key, { prev: previousValue, next: nextValue });\n target[key] = cloneAttributeValue(nextValue);\n });\n\n return delta;\n }\n\n protected _syncAttribute(): AttributeDelta {\n const snapshot = this.buildStaticAttributeSnapshot() as Record<string, any>;\n const delta = this.syncObjectToSnapshot(this.attribute as Record<string, any>, snapshot);\n this.valid = this.isValid();\n return delta;\n }\n\n protected _syncFinalAttributeFromStaticTruth(): void {\n const target = (this as any).finalAttribute;\n if (!target) {\n return;\n }\n const snapshot = this.buildStaticAttributeSnapshot() as Record<string, any>;\n this.syncObjectToSnapshot(target, snapshot);\n }\n\n protected submitUpdateByDelta(delta: AttributeDelta, forceUpdateTag: boolean = false): void {\n if (forceUpdateTag) {\n this.addUpdateShapeAndBoundsTag();\n this.addUpdatePositionTag();\n this.addUpdateLayoutTag();\n return;\n }\n\n let category = UpdateCategory.NONE;\n\n delta.forEach((entry, key) => {\n let nextCategory = classifyAttributeDelta(key, entry.prev, entry.next);\n if (nextCategory & UpdateCategory.PICK) {\n // Phase 2 keeps PICK invalidation on the existing bounds path instead of adding a dedicated pick tag.\n nextCategory |= UpdateCategory.BOUNDS;\n }\n if (nextCategory === UpdateCategory.PAINT && this.needUpdateTag(key)) {\n nextCategory = UpdateCategory.SHAPE | UpdateCategory.BOUNDS;\n }\n category |= nextCategory;\n });\n\n if (category !== UpdateCategory.NONE) {\n getStageStatePerfMonitor(this.stage)?.recordCategory(category);\n }\n\n if (category & UpdateCategory.SHAPE) {\n this.addUpdateShapeAndBoundsTag();\n } else if (category & UpdateCategory.BOUNDS) {\n this.addUpdateBoundTag();\n }\n\n if (category & UpdateCategory.PAINT) {\n this.addUpdatePaintTag();\n }\n\n if (category & UpdateCategory.TRANSFORM) {\n this.addUpdatePositionTag();\n }\n\n if (category & UpdateCategory.LAYOUT) {\n this.addUpdateLayoutTag();\n }\n }\n\n protected commitBaseAttributeMutation(forceUpdateTag: boolean = false, context?: ISetAttributeContext): void {\n if (this.currentStates?.length) {\n this.resolverEpoch += 1;\n this.stateEngine?.invalidateResolverCache();\n this.recomputeCurrentStatePatch();\n }\n const delta = this._syncAttribute();\n this.submitUpdateByDelta(delta, forceUpdateTag);\n this.onAttributeUpdate(context);\n }\n\n protected applyBaseAttributes(params: Partial<T>) {\n const keys = Object.keys(params);\n for (let i = 0; i < keys.length; i++) {\n const key = keys[i];\n (this.baseAttributes as any)[key] = cloneAttributeValue((params as any)[key]);\n }\n }\n\n protected applyTransientAttributes(\n params: Partial<T>,\n forceUpdateTag: boolean = false,\n context?: ISetAttributeContext\n ) {\n const delta: AttributeDelta = new Map();\n const keys = Object.keys(params);\n\n for (let i = 0; i < keys.length; i++) {\n const key = keys[i];\n const previousValue = (this.attribute as Record<string, any>)[key];\n const nextValue = (params as Record<string, any>)[key];\n if (isEqual(previousValue, nextValue)) {\n continue;\n }\n delta.set(key, { prev: previousValue, next: nextValue });\n (this.attribute as Record<string, any>)[key] = cloneAttributeValue(nextValue);\n }\n\n this.valid = this.isValid();\n this.submitUpdateByDelta(delta, forceUpdateTag);\n this.onAttributeUpdate(context);\n }\n\n protected _restoreAttributeFromStaticTruth(context?: ISetAttributeContext): void {\n this._syncFinalAttributeFromStaticTruth();\n const delta = this._syncAttribute();\n this.submitUpdateByDelta(delta);\n this.onAttributeUpdate(context);\n }\n\n setMode(mode: '2d' | '3d') {\n mode === '3d' ? this.set3dMode() : this.set2dMode();\n }\n\n set3dMode() {\n this.in3dMode = true;\n }\n set2dMode() {\n this.in3dMode = false;\n }\n getOffsetXY(attr?: ITransform, includeScroll: boolean = false) {\n const { dx = attr.dx, dy = attr.dy } = this.attribute;\n if (includeScroll && this.parent) {\n // const groupTheme = getTheme(this.parent).group;\n const attribute = this.parent.attribute;\n point.x = dx + (attribute.scrollX ?? 0);\n point.y = dy + (attribute.scrollY ?? 0);\n } else {\n point.x = dx;\n point.y = dy;\n }\n return point;\n }\n\n onAnimateBind(animate: IAnimate) {\n this._emitCustomEvent('animate-bind', animate);\n }\n\n protected visitTrackedAnimates(cb: (animate: IAnimate) => void) {\n const hook = (this as any).forEachTrackedAnimate;\n if (typeof hook === 'function') {\n hook.call(this, cb);\n return;\n }\n this.animates && this.animates.forEach(cb);\n }\n\n protected hasAnyTrackedAnimate() {\n const hook = (this as any).hasTrackedAnimate;\n if (typeof hook === 'function') {\n return hook.call(this);\n }\n const getTrackedAnimates = (this as any).getTrackedAnimates;\n if (typeof getTrackedAnimates === 'function') {\n return getTrackedAnimates.call(this).size > 0;\n }\n return !!this.animates?.size;\n }\n\n protected tryUpdateAABBBounds(): IAABBBounds {\n const full = this.attribute.boundsMode === 'imprecise';\n if (!this.shouldUpdateAABBBounds()) {\n return this._AABBBounds;\n }\n if (!this.valid) {\n this._AABBBounds.clear();\n return this._AABBBounds;\n }\n\n this.getGraphicService().beforeUpdateAABBBounds(this, this.stage, true, this._AABBBounds);\n const bounds = this.doUpdateAABBBounds(full);\n // this.addUpdateLayoutTag();\n this.getGraphicService().afterUpdateAABBBounds(this, this.stage, this._AABBBounds, this, true);\n\n // 直接返回空Bounds,但是前面的流程还是要走\n if (this.attribute.boundsMode === 'empty') {\n bounds.clear();\n }\n return bounds;\n }\n\n protected tryUpdateOBBBounds(): IOBBBounds {\n if (!this._OBBBounds) {\n this._OBBBounds = new OBBBounds();\n }\n // 尝试更新AABBBounds\n this.tryUpdateAABBBounds();\n // 如果AABBBounds和OBBBounds不一致,则重新计算OBBBounds\n if (this.updateOBBBoundsStamp === this.updateAABBBoundsStamp) {\n return this._OBBBounds;\n }\n this.updateOBBBoundsStamp = this.updateAABBBoundsStamp;\n if (!this.valid) {\n this._OBBBounds.clear();\n return this._OBBBounds;\n }\n\n const bounds = this.doUpdateOBBBounds();\n return bounds;\n }\n\n protected combindShadowAABBBounds(bounds: IAABBBounds) {\n // 合并shadowRoot的Bounds\n if (this.shadowRoot) {\n const b = this.shadowRoot.AABBBounds.clone();\n bounds.union(b);\n }\n }\n\n abstract getGraphicTheme(): T;\n\n protected doUpdateOBBBounds(): IOBBBounds {\n return this._OBBBounds;\n }\n\n protected abstract updateAABBBounds(\n attribute: T,\n symbolTheme: Required<T>,\n aabbBounds: IAABBBounds,\n full?: boolean\n ): IAABBBounds;\n\n getClipPath() {\n const { clipConfig } = this.attribute;\n if (!clipConfig) {\n return null;\n }\n if (!this.clipPathMap) {\n this.clipPathMap = new Map();\n }\n\n const { shape } = clipConfig;\n let path = this.clipPathMap.get(shape) || null;\n if (!path) {\n // 即使清理,避免内存溢出\n if (this.clipPathMap.size > 10) {\n this.clipPathMap.clear();\n }\n path = this.parsePath(shape);\n path && this.clipPathMap.set(shape, path);\n }\n return path;\n }\n\n parsePath(symbolType: string) {\n if (!symbolType) {\n return null;\n }\n let path = builtinSymbolsMap[symbolType];\n if (path) {\n return path;\n }\n path = Graphic.userSymbolMap[symbolType];\n if (path) {\n return path;\n }\n const _symbolType = builtInSymbolStrMap[symbolType];\n symbolType = _symbolType || symbolType;\n const valid = isSvg(symbolType);\n if (valid === true) {\n const parser = new XMLParser();\n const { svg } = parser.parse(symbolType);\n if (!svg) {\n return null;\n }\n const path = isArray(svg.path) ? svg.path : [svg.path];\n _tempBounds.clear();\n const cacheList: { path: CustomPath2D; attribute: Record<string, any> }[] = [];\n path.forEach((item: any) => {\n const cache = new CustomPath2D().fromString(item.d);\n const attribute: any = {};\n SVG_PARSE_ATTRIBUTE_MAP_KEYS.forEach(k => {\n if (item[k]) {\n (attribute as any)[(SVG_PARSE_ATTRIBUTE_MAP as any)[k]] = item[k];\n }\n });\n // 查找\n cacheList.push({\n path: cache,\n attribute\n });\n _tempBounds.union(cache.bounds);\n });\n const width = _tempBounds.width();\n const height = _tempBounds.height();\n // 规范化到1\n const maxWH = max(width, height);\n const scale = 1 / maxWH;\n cacheList.forEach(cache => cache.path.transform(0, 0, scale, scale));\n\n const _parsedPath = new CustomSymbolClass(symbolType, cacheList, true);\n Graphic.userSymbolMap[symbolType] = _parsedPath;\n return _parsedPath;\n }\n\n const cache = new CustomPath2D().fromString(symbolType);\n const width = cache.bounds.width();\n const height = cache.bounds.height();\n // 规范化到1\n const maxWH = max(width, height);\n const scale = 1 / maxWH;\n cache.transform(0, 0, scale, scale);\n const _parsedPath = new CustomSymbolClass(symbolType, cache);\n Graphic.userSymbolMap[symbolType] = _parsedPath;\n return _parsedPath;\n }\n\n protected doUpdateAABBBounds(full?: boolean): IAABBBounds {\n this.updateAABBBoundsStamp++;\n const graphicTheme = this.getGraphicTheme();\n this._AABBBounds.clear();\n const attribute = this.attribute;\n const bounds = this.updateAABBBounds(attribute, graphicTheme as Required<T>, this._AABBBounds, full) as AABBBounds;\n\n const { boundsPadding = graphicTheme.boundsPadding } = attribute;\n const paddingArray = parsePadding(boundsPadding);\n if (paddingArray) {\n bounds.expand(paddingArray);\n }\n\n this.clearUpdateBoundTag();\n return bounds;\n }\n\n updatePathProxyAABBBounds(aabbBounds: IAABBBounds): boolean {\n const path = typeof this.pathProxy === 'function' ? (this.pathProxy as any)(this.attribute) : this.pathProxy;\n if (!path) {\n return false;\n }\n const boundsContext = new BoundsContext(aabbBounds);\n renderCommandList(path.commandList, boundsContext, 0, 0);\n return true;\n }\n\n protected tryUpdateGlobalAABBBounds(): IAABBBounds {\n const b = this.AABBBounds;\n if (!this._globalAABBBounds) {\n this._globalAABBBounds = b.clone();\n } else {\n this._globalAABBBounds.setValue(b.x1, b.y1, b.x2, b.y2);\n }\n if (this._globalAABBBounds.empty()) {\n return this._globalAABBBounds;\n }\n // 使用parent的grloalAABBBounds\n // todo: 考虑是否需要性能优化\n if (this.parent) {\n this._globalAABBBounds.transformWithMatrix((this.parent as IGroup).globalTransMatrix);\n }\n return this._globalAABBBounds;\n }\n\n /**\n * 这里都是叶子节点的UpdateGlobalTransMatrix函数,只要走进来就直接计算\n * @param clearTag\n * @returns\n */\n protected tryUpdateGlobalTransMatrix(clearTag: boolean = true): Matrix {\n if (!this._globalTransMatrix) {\n this._globalTransMatrix = this.parent\n ? (this.parent as IGroup).globalTransMatrix.clone()\n : this.transMatrix.clone();\n } else if (this.parent) {\n const m = (this.parent as IGroup).globalTransMatrix;\n this._globalTransMatrix.setValue(m.a, m.b, m.c, m.d, m.e, m.f);\n }\n if (this.shouldUpdateGlobalMatrix()) {\n this.doUpdateGlobalMatrix();\n }\n return this._globalTransMatrix;\n }\n\n shouldUpdateGlobalMatrix(): boolean {\n return true;\n }\n\n protected tryUpdateLocalTransMatrix(clearTag: boolean = true) {\n if (!this._transMatrix) {\n this._transMatrix = new Matrix();\n }\n if (this.shouldUpdateLocalMatrix()) {\n this.doUpdateLocalMatrix();\n clearTag && this.clearUpdateLocalPositionTag();\n }\n return this._transMatrix;\n }\n\n shouldUpdateAABBBounds(): boolean {\n // 如果存在shadowRoot,那么判断shadowRoot是否需要更新\n if (this.shadowRoot) {\n return (\n (!!(this._updateTag & UpdateTag.UPDATE_BOUNDS) || this.shadowRoot.shouldUpdateAABBBounds()) &&\n this.getGraphicService().validCheck(\n this.attribute,\n this.getGraphicTheme() as Required<T>,\n this._AABBBounds,\n this\n )\n );\n }\n return (\n !!(this._updateTag & UpdateTag.UPDATE_BOUNDS) &&\n this.getGraphicService().validCheck(this.attribute, this.getGraphicTheme() as Required<T>, this._AABBBounds, this)\n );\n }\n\n // 自身变化导致的AABBBounds的变化\n shouldSelfChangeUpdateAABBBounds(): boolean {\n // 如果存在shadowRoot,那么判断shadowRoot是否需要更新\n if (this.shadowRoot) {\n return !!(this._updateTag & UpdateTag.UPDATE_BOUNDS) || this.shadowRoot.shouldUpdateAABBBounds();\n }\n return !!(this._updateTag & UpdateTag.UPDATE_BOUNDS);\n }\n\n protected shouldUpdateLocalMatrix(): boolean {\n return !!(this._updateTag & UpdateTag.UPDATE_LOCAL_MATRIX);\n }\n\n isValid(): boolean {\n const attribute = this.attribute;\n return Number.isFinite((attribute.x ?? 0) + (attribute.y ?? 0));\n }\n\n protected _validNumber(num?: number) {\n return num == null || Number.isFinite(num);\n }\n\n shouldUpdateShape(): boolean {\n return !!(this._updateTag & UpdateTag.UPDATE_SHAPE);\n }\n clearUpdateShapeTag() {\n this._updateTag &= UpdateTag.CLEAR_SHAPE;\n }\n\n /**\n * 是否包含某个点(点需要是全局坐标系)\n * @param x\n * @param y\n * @param mode\n * @returns\n */\n containsPoint(x: number, y: number, mode: IContainPointMode, picker?: IPickerService): boolean {\n if (!picker) {\n return false;\n }\n if (mode === IContainPointMode.GLOBAL) {\n // 转换x,y更精准\n const point = new Point(x, y);\n if (this.parent) {\n this.parent.globalTransMatrix.transformPoint(point, point);\n }\n x = point.x;\n y = point.y;\n }\n return picker.containsPoint(this, { x, y });\n }\n\n protected setWidthHeightWithoutTransform(aabbBounds: IAABBBounds) {\n this.widthWithoutTransform = aabbBounds.x2 - aabbBounds.x1;\n this.heightWithoutTransform = aabbBounds.y2 - aabbBounds.y1;\n }\n setAttributesAndPreventAnimate(\n params: Partial<T>,\n forceUpdateTag: boolean = false,\n context?: ISetAttributeContext,\n ignorePriority?: boolean\n ) {\n this.visitTrackedAnimates(animate => {\n // 优先级最高的动画(一般是循环动画),不屏蔽\n if (animate.priority === Infinity && !ignorePriority) {\n return;\n }\n Object.keys(params).forEach(key => {\n animate.preventAttr(key);\n });\n });\n this.applyTransientAttributes(params, forceUpdateTag, context);\n }\n\n setAttributes(params: Partial<T>, forceUpdateTag: boolean = false, context?: ISetAttributeContext) {\n if (!params) {\n return;\n }\n params =\n (this.onBeforeAttributeUpdate && this.onBeforeAttributeUpdate(params, this.attribute, null, context)) || params;\n\n if (params.background) {\n this.loadImage(params.background, true);\n }\n if (isExternalTexture(params.texture)) {\n this.loadImage(params.texture, false);\n }\n if (params.shadowGraphic) {\n this.setShadowGraphic(params.shadowGraphic);\n }\n this._setAttributes(params, forceUpdateTag, context);\n }\n\n _setAttributes(params: Partial<T>, forceUpdateTag: boolean = false, context?: ISetAttributeContext) {\n this.applyBaseAttributes(params);\n this.commitBaseAttributeMutation(forceUpdateTag, context);\n }\n\n setAttribute(key: string, value: any, forceUpdateTag?: boolean, context?: ISetAttributeContext) {\n const params =\n this.onBeforeAttributeUpdate && this.onBeforeAttributeUpdate({ [key]: value }, this.attribute, key, context);\n if (!params) {\n this.applyBaseAttributes({ [key]: value } as Partial<T>);\n this.commitBaseAttributeMutation(!!forceUpdateTag, context);\n } else {\n this._setAttributes(params, forceUpdateTag, context);\n }\n if (key === 'background') {\n this.loadImage(value, true);\n } else if (key === 'texture' && isExternalTexture(value)) {\n this.loadImage(value, false);\n } else if (key === 'shadowGraphic') {\n this.setShadowGraphic(value);\n }\n }\n\n protected needUpdateTags(keys: string[], k: string[] = GRAPHIC_UPDATE_TAG_KEY): boolean {\n for (let i = 0; i < k.length; i++) {\n const attrKey = k[i];\n if (keys.indexOf(attrKey) !== -1) {\n return true;\n }\n }\n return false;\n }\n\n protected needUpdateTag(key: string, k: string[] = GRAPHIC_UPDATE_TAG_KEY): boolean {\n for (let i = 0; i < k.length; i++) {\n const attrKey = k[i];\n if (key === attrKey) {\n return true;\n }\n }\n return false;\n }\n\n initAttributes(params: T) {\n // this.setAttributes(params, true);\n const context = { type: AttributeUpdateType.INIT };\n params =\n (this.onBeforeAttributeUpdate && this.onBeforeAttributeUpdate(params, this.attribute, null, context)) || params;\n this.baseAttributes = cloneAttributeValue(params) as Partial<T>;\n if (!this.attribute) {\n this.attribute = {} as T;\n }\n this.resolvedStatePatch = undefined;\n this._syncAttribute();\n if (params.background) {\n this.loadImage(params.background, true);\n }\n if (isExternalTexture(params.texture)) {\n this.loadImage(params.texture, false);\n }\n if (params.shadowGraphic) {\n this.setShadowGraphic(params.shadowGraphic);\n }\n this._updateTag = UpdateTag.INIT;\n this.valid = this.isValid();\n this.onAttributeUpdate(context);\n }\n\n translate(x: number, y: number) {\n if (x === 0 && y === 0) {\n return this;\n }\n const context = {\n type: AttributeUpdateType.TRANSLATE\n };\n const params =\n this.onBeforeAttributeUpdate &&\n this.onBeforeAttributeUpdate({ x, y }, this.attribute, tempConstantXYKey, context);\n if (params) {\n x = params.x;\n y = params.y;\n delete params.x;\n delete params.y;\n this.applyBaseAttributes(params);\n }\n const attribute = this.baseAttributes as T;\n const postMatrix = attribute.postMatrix;\n if (!postMatrix) {\n attribute.x = (attribute.x ?? DefaultTransform.x) + x;\n attribute.y = (attribute.y ?? DefaultTransform.y) + y;\n } else {\n application.transformUtil.fromMatrix(postMatrix, postMatrix).translate(x, y);\n }\n\n this.commitBaseAttributeMutation(false, context);\n return this;\n }\n\n translateTo(x: number, y: number) {\n const attribute = this.baseAttributes as T;\n if (attribute.x === x && attribute.y === y) {\n return this;\n }\n const context = {\n type: AttributeUpdateType.TRANSLATE_TO\n };\n const params =\n this.onBeforeAttributeUpdate &&\n this.onBeforeAttributeUpdate({ x, y }, this.attribute, tempConstantXYKey, context);\n if (params) {\n this.applyBaseAttributes(params);\n this.commitBaseAttributeMutation(false, context);\n return this;\n }\n attribute.x = x;\n attribute.y = y;\n this.commitBaseAttributeMutation(false, context);\n return this;\n }\n\n scale(scaleX: number, scaleY: number, scaleCenter?: IPointLike) {\n if (scaleX === 1 && scaleY === 1) {\n return this;\n }\n const context = {\n type: AttributeUpdateType.SCALE\n };\n const params =\n this.onBeforeAttributeUpdate &&\n this.onBeforeAttributeUpdate({ scaleX, scaleY, scaleCenter }, this.attribute, tempConstantScaleXYKey, context);\n if (params) {\n scaleX = params.scaleX;\n scaleY = params.scaleY;\n delete params.scaleX;\n delete params.scaleY;\n this.applyBaseAttributes(params);\n }\n const attribute = this.baseAttributes as T;\n if (!scaleCenter) {\n attribute.scaleX = (attribute.scaleX ?? DefaultTransform.scaleX) * scaleX;\n attribute.scaleY = (attribute.scaleY ?? DefaultTransform.scaleY) * scaleY;\n } else {\n let { postMatrix } = this.attribute;\n if (!postMatrix) {\n postMatrix = new Matrix();\n attribute.postMatrix = postMatrix;\n }\n application.transformUtil.fromMatrix(postMatrix, postMatrix).scale(scaleX, scaleY, scaleCenter);\n }\n this.commitBaseAttributeMutation(false, context);\n return this;\n }\n\n scaleTo(scaleX: number, scaleY: number) {\n const attribute = this.baseAttributes as T;\n if (attribute.scaleX === scaleX && attribute.scaleY === scaleY) {\n return this;\n }\n const context = {\n type: AttributeUpdateType.SCALE_TO\n };\n const params =\n this.onBeforeAttributeUpdate &&\n this.onBeforeAttributeUpdate({ scaleX, scaleY }, this.attribute, tempConstantScaleXYKey, context);\n if (params) {\n this.applyBaseAttributes(params);\n this.commitBaseAttributeMutation(false, context);\n return this;\n }\n attribute.scaleX = scaleX;\n attribute.scaleY = scaleY;\n this.commitBaseAttributeMutation(false, context);\n return this;\n }\n\n rotate(angle: number, rotateCenter?: IPointLike) {\n if (angle === 0) {\n return this;\n }\n const context = { type: AttributeUpdateType.ROTATE };\n const params =\n this.onBeforeAttributeUpdate &&\n this.onBeforeAttributeUpdate({ angle, rotateCenter }, this.attribute, tempConstantAngleKey, context);\n if (params) {\n delete params.angle;\n this.applyBaseAttributes(params);\n // return this;\n }\n const attribute = this.baseAttributes as T;\n if (!rotateCenter) {\n attribute.angle = (attribute.angle ?? DefaultTransform.angle) + angle;\n } else {\n let { postMatrix } = this.baseAttributes as T;\n if (!postMatrix) {\n postMatrix = new Matrix();\n (this.baseAttributes as T).postMatrix = postMatrix;\n }\n application.transformUtil.fromMatrix(postMatrix, postMatrix).rotate(angle, rotateCenter);\n }\n this.commitBaseAttributeMutation(false, context);\n return this;\n }\n\n rotateTo(angle: number) {\n const attribute = this.baseAttributes as T;\n if (attribute.angle === angle) {\n return this;\n }\n const context = {\n type: AttributeUpdateType.ROTATE_TO\n };\n const params =\n this.onBeforeAttributeUpdate &&\n this.onBeforeAttributeUpdate(angle, this.attribute, tempConstantAngleKey, context);\n if (params) {\n this.applyBaseAttributes(params);\n this.commitBaseAttributeMutation(false, context);\n return this;\n }\n attribute.angle = angle;\n this.commitBaseAttributeMutation(false, context);\n return this;\n }\n\n skewTo(b: number, c: number) {\n return this;\n }\n\n onAttributeUpdate(context?: ISetAttributeContext) {\n if (context && context.skipUpdateCallback) {\n return;\n }\n this.getGraphicService().onAttributeUpdate(this);\n this._emitCustomEvent('afterAttributeUpdate', context);\n }\n\n // hasListener(event: string) {\n // const prefix = this.prefixed;\n // var evt = prefix ? prefix + event : event;\n // return this._events[evt];\n // }\n\n update(d?: { bounds: boolean; trans: boolean }) {\n if (d) {\n d.bounds && this.tryUpdateAABBBounds();\n d.trans && this.tryUpdateLocalTransMatrix();\n } else {\n this.tryUpdateAABBBounds();\n this.tryUpdateLocalTransMatrix();\n }\n }\n\n hasState(stateName?: string) {\n if (!this.currentStates || !this.currentStates.length) {\n return false;\n }\n\n if (!isNil(stateName)) {\n return this.currentStates.includes(stateName);\n }\n\n return true;\n }\n getState(stateName: string): Partial<T> | StateDefinition<T> | undefined {\n return this.states?.[stateName];\n }\n\n protected createStateModel() {\n const { compiledDefinitions, stateProxyEligibility, stateProxyModeKey } =\n this.resolveEffectiveCompiledDefinitions();\n this.compiledStateDefinitions = compiledDefinitions;\n\n if (!compiledDefinitions) {\n this.stateEngine = undefined;\n this.stateEngineCompiledDefinitions = undefined;\n this.stateEngineStateProxyModeKey = undefined;\n } else if (\n !this.stateEngine ||\n this.stateEngineCompiledDefinitions !== compiledDefinitions ||\n this.stateEngineStateProxy !== this.stateProxy ||\n this.stateEngineStateSort !== this.stateSort ||\n this.stateEngineMergeMode !== this.stateMergeMode ||\n this.stateEngineStateProxyModeKey !== stateProxyModeKey\n ) {\n this.stateEngine = new StateEngine<T>({\n compiledDefinitions,\n stateSort: this.stateSort,\n stateProxy: this.stateProxy as any,\n stateProxyEligibility,\n states: this.states,\n mergeMode: this.stateMergeMode\n });\n this.stateEngineCompiledDefinitions = compiledDefinitions;\n this.stateEngineStateProxy = this.stateProxy as any;\n this.stateEngineStateSort = this.stateSort;\n this.stateEngineMergeMode = this.stateMergeMode;\n this.stateEngineStateProxyModeKey = stateProxyModeKey;\n }\n\n return new StateModel<T>({\n states: this.states,\n currentStates: this.currentStates,\n stateSort: this.stateSort,\n stateProxy: this.stateProxy as any,\n stateEngine: this.stateEngine\n });\n }\n\n protected resolveStateAnimateConfig(animateConfig?: IAnimateConfig) {\n return animateConfig ?? this.stateAnimateConfig ?? this.context?.stateAnimateConfig ?? DefaultStateAnimateConfig;\n }\n\n applyStateAttrs(\n attrs: Partial<T>,\n stateNames: string[],\n hasAnimation?: boolean,\n isClear?: boolean,\n animateConfig?: IAnimateConfig,\n extraAnimateAttrs?: Partial<T>\n ) {\n const resolvedAnimateConfig = hasAnimation ? this.resolveStateAnimateConfig(animateConfig) : undefined;\n const transitionOptions = resolvedAnimateConfig\n ? {\n animateConfig: resolvedAnimateConfig,\n extraAnimateAttrs: extraAnimateAttrs as Record<string, unknown>,\n shouldSkipDefaultAttribute: this.shouldSkipStateTransitionDefaultAttribute.bind(this) as (\n key: string,\n targetAttrs: Record<string, unknown>\n ) => boolean\n }\n : undefined;\n\n if (isClear) {\n this.getStateTransitionOrchestrator().applyClearTransition(\n this as any,\n attrs,\n hasAnimation,\n stateNames,\n transitionOptions\n );\n return;\n }\n\n const plan = this.getStateTransitionOrchestrator().analyzeTransition({}, attrs, stateNames, hasAnimation, {\n noWorkAnimateAttr: this.getNoWorkAnimateAttr(),\n animateConfig: resolvedAnimateConfig,\n extraAnimateAttrs: extraAnimateAttrs as Record<string, unknown>,\n shouldSkipDefaultAttribute: this.shouldSkipStateTransitionDefaultAttribute.bind(this) as (\n key: string,\n targetAttrs: Record<string, unknown>\n ) => boolean\n });\n\n this.getStateTransitionOrchestrator().applyTransition(this as any, plan, hasAnimation, transitionOptions);\n }\n\n updateNormalAttrs(stateAttrs: Partial<T>) {\n this._deprecatedNormalAttrsView = cloneAttributeValue(this.baseAttributes);\n }\n\n protected getStateTransitionDefaultAttribute(key: string, targetAttrs?: Partial<T>) {\n return this.getDefaultAttribute(key);\n }\n\n protected shouldSkipStateTransitionDefaultAttribute(_key: string, _targetAttrs?: Partial<T>): boolean {\n return false;\n }\n\n protected stopStateAnimates(type: 'start' | 'end' = 'end') {\n const stopAnimationState = (this as any).stopAnimationState;\n if (typeof stopAnimationState === 'function') {\n stopAnimationState.call(this, 'state', type);\n return;\n }\n\n const stateAnimates: IAnimate[] = [];\n this.visitTrackedAnimates(animate => {\n if ((animate as any).stateNames) {\n stateAnimates.push(animate);\n }\n });\n stateAnimates.forEach(animate => animate.stop(type));\n }\n\n private getNormalAttribute(key: string) {\n const value = (this.attribute as any)[key];\n\n if (this.hasAnyTrackedAnimate()) {\n // this.animates.forEach(animate => {\n // if ((animate as any).stateNames) {\n // const endProps = animate.getEndProps();\n // if (has(endProps, key)) {\n // value = endProps[key];\n // }\n // }\n // });\n // console.log(this.finalAttrs);\n return (this as any).finalAttribute?.[key];\n }\n\n return value ?? (this as any).finalAttribute?.[key];\n }\n\n clearStates(hasAnimation?: boolean) {\n const previousStates = this.currentStates ? this.currentStates.slice() : [];\n const previousResolvedStatePatch = this.resolvedStatePatch\n ? cloneAttributeValue(this.resolvedStatePatch)\n : undefined;\n const transition = this.createStateModel().clearStates();\n if (!transition.changed && previousStates.length === 0) {\n this.currentStates = [];\n this.effectiveStates = [];\n this.resolvedStatePatch = undefined;\n this.sharedStateDirty = false;\n this.clearSharedStateActiveRegistrations();\n return;\n }\n const resolvedStateAttrs = cloneAttributeValue((this.baseAttributes ?? {}) as Partial<T>) as Partial<T>;\n\n if (\n transition.changed &&\n !this.beforeStateUpdate(resolvedStateAttrs, previousStates, transition.states, hasAnimation, true)\n ) {\n return;\n }\n\n this.currentStates = transition.states;\n this.effectiveStates = [];\n this.resolvedStatePatch = undefined;\n this.sharedStateDirty = false;\n this.clearSharedStateActiveRegistrations();\n getStageStatePerfMonitor(this.stage)?.incrementCounter('stateCommits');\n getStageStatePerfMonitor(this.stage)?.recordEvent('state-commit', {\n graphicId: this._uid,\n targetStates: []\n });\n if (hasAnimation) {\n this._syncFinalAttributeFromStaticTruth();\n this.applyStateAttrs(\n resolvedStateAttrs,\n transition.states,\n hasAnimation,\n true,\n undefined,\n this.buildRemovedStateAnimationAttrs(resolvedStateAttrs, previousResolvedStatePatch)\n );\n } else {\n this.stopStateAnimates();\n this._restoreAttributeFromStaticTruth({ type: AttributeUpdateType.STATE });\n this._emitCustomEvent('afterStateUpdate', { type: AttributeUpdateType.STATE });\n }\n }\n\n removeState(stateName: string | string[], hasAnimation?: boolean) {\n const transition = this.createStateModel().removeState(stateName);\n if (transition.changed) {\n this.useStates(transition.states, hasAnimation);\n }\n }\n\n toggleState(stateName: string, hasAnimation?: boolean) {\n const transition = this.createStateModel().toggleState(stateName);\n if (transition.changed) {\n this.useStates(transition.states, hasAnimation);\n }\n }\n\n addState(stateName: string, keepCurrentStates?: boolean, hasAnimation?: boolean) {\n const transition = this.createStateModel().addState(stateName, keepCurrentStates);\n if (!transition.changed) {\n return;\n }\n this.useStates(transition.states, hasAnimation);\n }\n\n useStates(states: string[], hasAnimation?: boolean) {\n if (!states.length) {\n this.clearStates(hasAnimation);\n return;\n }\n\n const previousStates = this.currentStates ? this.currentStates.slice() : [];\n const previousResolvedStatePatch = this.resolvedStatePatch\n ? cloneAttributeValue(this.resolvedStatePatch)\n : undefined;\n const stateResolveBaseAttrs = (this.baseAttributes ?? this.attribute) as Partial<T>;\n const stateModel = this.createStateModel();\n this.stateEngine?.setResolveContext(this, stateResolveBaseAttrs);\n const transition = stateModel.useStates(states);\n if (!transition.changed && this.sameStateNames(previousStates, transition.states)) {\n return;\n }\n\n const effectiveStates = transition.effectiveStates ?? transition.states;\n const resolvedStateAttrs =\n this.stateEngine && this.compiledStateDefinitions\n ? { ...(this.stateEngine.resolvedPatch as Partial<T>) }\n : this.getStateStyleResolver(this.stateMergeMode).resolve(\n stateResolveBaseAttrs,\n this.states as any,\n this.stateProxy as any,\n transition.states,\n this.stateSort\n );\n\n if (!this.beforeStateUpdate(resolvedStateAttrs, previousStates, transition.states, hasAnimation, false)) {\n return;\n }\n\n this.currentStates = transition.states;\n this.effectiveStates = [...effectiveStates];\n this.resolvedStatePatch = { ...resolvedStateAttrs };\n this.sharedStateDirty = false;\n this.syncSharedStateActiveRegistrations();\n getStageStatePerfMonitor(this.stage)?.incrementCounter('stateCommits');\n getStageStatePerfMonitor(this.stage)?.recordEvent('state-commit', {\n graphicId: this._uid,\n targetStates: [...transition.states]\n });\n if (hasAnimation) {\n this._syncFinalAttributeFromStaticTruth();\n this.applyStateAttrs(\n resolvedStateAttrs,\n transition.states,\n hasAnimation,\n false,\n undefined,\n this.buildRemovedStateAnimationAttrs(resolvedStateAttrs, previousResolvedStatePatch)\n );\n } else {\n this.stopStateAnimates();\n this._restoreAttributeFromStaticTruth({ type: AttributeUpdateType.STATE });\n this._emitCustomEvent('afterStateUpdate', { type: AttributeUpdateType.STATE });\n }\n }\n\n invalidateResolver() {\n if (!this.stateEngine || !this.currentStates?.length || !this.compiledStateDefinitions) {\n return;\n }\n\n const stateResolveBaseAttrs = (this.baseAttributes ?? this.attribute) as Partial<T>;\n this.stateEngine.setResolveContext(this, stateResolveBaseAttrs);\n this.resolverEpoch += 1;\n this.stateEngine.invalidateResolverCache();\n const transition = this.stateEngine.applyStates(this.currentStates);\n const resolvedStateAttrs = { ...(this.stateEngine.resolvedPatch as Partial<T>) };\n this.effectiveStates = [...transition.effectiveStates];\n this.resolvedStatePatch = { ...resolvedStateAttrs };\n this.sharedStateDirty = false;\n this.syncSharedStateActiveRegistrations();\n this.stopStateAnimates();\n this._restoreAttributeFromStaticTruth({ type: AttributeUpdateType.STATE });\n this._emitCustomEvent('afterStateUpdate', { type: AttributeUpdateType.STATE });\n }\n\n private sameStateNames(left?: readonly string[], right?: readonly string[]): boolean {\n const normalizedLeft = left ?? [];\n const normalizedRight = right ?? [];\n if (normalizedLeft.length !== normalizedRight.length) {\n return false;\n }\n\n for (let index = 0; index < normalizedLeft.length; index++) {\n if (normalizedLeft[index] !== normalizedRight[index]) {\n return false;\n }\n }\n\n return true;\n }\n\n addUpdateBoundTag() {\n this._updateTag |= UpdateTag.UPDATE_BOUNDS; // for bounds\n if (this.parent) {\n this.parent.addChildUpdateBoundTag();\n }\n if (this.glyphHost) {\n this.glyphHost.addUpdateBoundTag();\n }\n }\n\n addUpdatePaintTag() {\n this._updateTag |= UpdateTag.UPDATE_PAINT;\n }\n\n addUpdateShapeTag() {\n this._updateTag |= UpdateTag.UPDATE_SHAPE; // for shape\n }\n\n addUpdateShapeAndBoundsTag() {\n this._updateTag |= UpdateTag.UPDATE_SHAPE_AND_BOUNDS; // for shape&bounds\n if (this.parent) {\n this.parent.addChildUpdateBoundTag();\n }\n if (this.glyphHost) {\n this.glyphHost.addUpdateBoundTag();\n }\n }\n\n protected updateShapeAndBoundsTagSetted(): boolean {\n return (this._updateTag & UpdateTag.UPDATE_SHAPE_AND_BOUNDS) === UpdateTag.UPDATE_SHAPE_AND_BOUNDS;\n }\n\n protected clearUpdateBoundTag() {\n this._updateTag &= UpdateTag.CLEAR_BOUNDS;\n }\n\n protected clearUpdatePaintTag() {\n this._updateTag &= UpdateTag.CLEAR_PAINT;\n }\n /**\n * 更新位置tag,包括全局tag和局部tag\n */\n addUpdatePositionTag() {\n // 更新shadowRoot的全局位置\n this.shadowRoot && this.shadowRoot.addUpdateGlobalPositionTag();\n this._updateTag |= UpdateTag.UPDATE_GLOBAL_LOCAL_MATRIX;\n }\n /**\n * 更新全局位置tag\n */\n addUpdateGlobalPositionTag() {\n // 更新shadowRoot的全局位置\n this.shadowRoot && this.shadowRoot.addUpdateGlobalPositionTag();\n this._updateTag |= UpdateTag.UPDATE_GLOBAL_MATRIX;\n }\n /**\n * 清除局部位置tag\n */\n protected clearUpdateLocalPositionTag() {\n this._updateTag &= UpdateTag.CLEAR_LOCAL_MATRIX;\n }\n /**\n * 清除全局位置tag\n */\n protected clearUpdateGlobalPositionTag() {\n this._updateTag &= UpdateTag.CLEAR_GLOBAL_MATRIX;\n }\n\n addUpdateLayoutTag() {\n this._updateTag |= UpdateTag.UPDATE_LAYOUT;\n }\n\n protected clearUpdateLayoutTag() {\n this._updateTag &= UpdateTag.CLEAR_LAYOUT;\n }\n\n protected needUpdateLayout(): boolean {\n return !!(this._updateTag & UpdateTag.UPDATE_LAYOUT);\n }\n\n protected getAnchor(anchor: [string | number, string | number], params: { b?: IAABBBounds }, resetScale?: boolean) {\n const _anchor: [number, number] = [0, 0];\n const getBounds = () => {\n if (params.b) {\n return params.b;\n }\n // 拷贝一份,避免计算bounds的过程中计算matrix,然后matrix又修改了bounds\n const graphic = this.clone();\n graphic.attribute.angle = 0;\n graphic.attribute.scaleCenter = null;\n if (resetScale) {\n graphic.attribute.scaleX = 1;\n graphic.attribute.scaleY = 1;\n }\n // @ts-ignore\n // this.setAttributes({ angle: 0, scaleCenter: null });\n params.b = graphic.AABBBounds;\n\n return params.b;\n };\n if (typeof anchor[0] === 'string') {\n const ratio = parseFloat(anchor[0]) / 100;\n const bounds = getBounds();\n _anchor[0] = bounds.x1 + (bounds.x2 - bounds.x1) * ratio;\n } else {\n _anchor[0] = anchor[0];\n }\n if (typeof anchor[1] === 'string') {\n const ratio = parseFloat(anchor[1]) / 100;\n const bounds = getBounds();\n _anchor[1] = bounds.y1 + (bounds.y2 - bounds.y1) * ratio;\n } else {\n _anchor[1] = anchor[1];\n }\n\n return _anchor;\n }\n\n /**\n * 更新局部matrix的具体函数\n */\n protected doUpdateLocalMatrix() {\n const {\n x = DefaultTransform.x,\n y = DefaultTransform.y,\n scaleX = DefaultTransform.scaleX,\n scaleY = DefaultTransform.scaleY,\n angle = DefaultTransform.angle,\n scaleCenter,\n anchor,\n postMatrix\n } = this.attribute;\n let _anchor: [number, number] = [0, 0];\n const params = {};\n if (anchor && angle) {\n _anchor = this.getAnchor(anchor, params);\n }\n if (scaleCenter && (scaleX !== 1 || scaleY !== 1)) {\n const m = this._transMatrix;\n m.reset();\n m.translate(_anchor[0], _anchor[1]);\n m.rotate(angle);\n m.translate(-_anchor[0], -_anchor[1]);\n\n m.translate(x, y);\n // m.translate(scaleCenter[0] * scaleX, scaleCenter[1] * scaleY);\n // 计算bounds\n _anchor = this.getAnchor(scaleCenter, params, true);\n application.transformUtil.fromMatrix(m, m).scale(scaleX, scaleY, { x: _anchor[0], y: _anchor[1] });\n // m.translate(-scaleCenter[0], -scaleCenter[1]);\n } else {\n normalTransform(this._transMatrix, this._transMatrix.reset(), x, y, scaleX, scaleY, angle, anchor && _anchor);\n }\n const p = this.getOffsetXY(DefaultTransform);\n this._transMatrix.e += p.x;\n this._transMatrix.f += p.y;\n\n if (postMatrix) {\n const m1 = tempMatrix.setValue(\n postMatrix.a,\n postMatrix.b,\n postMatrix.c,\n postMatrix.d,\n postMatrix.e,\n postMatrix.f\n );\n const m2 = this._transMatrix;\n m1.multiply(m2.a, m2.b, m2.c, m2.d, m2.e, m2.f);\n m2.setValue(m1.a, m1.b, m1.c, m1.d, m1.e, m1.f);\n }\n }\n /**\n * 更新全局matrix的具体函数\n */\n protected doUpdateGlobalMatrix() {\n // 基于parent的matrix修改\n if (this.parent) {\n this._globalTransMatrix.multiply(\n this.transMatrix.a,\n this.transMatrix.b,\n this.transMatrix.c,\n this.transMatrix.d,\n this.transMatrix.e,\n this.transMatrix.f\n );\n const { scrollX = 0, scrollY = 0 } = this.parent.attribute;\n this._globalTransMatrix.translate(scrollX, scrollY);\n }\n }\n\n setStage(stage?: IStage, layer?: ILayer) {\n const graphicService = stage?.graphicService ?? this.stage?.graphicService ?? application.graphicService;\n const previousStage = this.stage;\n if (this.stage !== stage || this.layer !== layer) {\n this.stage = stage;\n this.layer = layer;\n this.syncSharedStateScopeBindingFromTree(!!this.currentStates?.length);\n this.setStageToShadowRoot(stage, layer);\n if (this.hasAnyTrackedAnimate()) {\n const previousTimeline = previousStage?.getTimeline?.();\n const nextTimeline = stage?.getTimeline?.();\n const detachedStageAnimates: IAnimate[] = [];\n this.visitTrackedAnimates(a => {\n const boundToPreviousStage = !!previousTimeline && a.timeline === previousTimeline;\n\n if (!boundToPreviousStage && !a.timeline.isGlobal) {\n return;\n }\n\n if (!nextTimeline) {\n if (previousTimeline && a.timeline === previousTimeline) {\n previousTimeline.removeAnimate(a, false);\n detachedStageAnimates.push(a);\n }\n return;\n }\n\n if (a.timeline !== nextTimeline) {\n if (previousTimeline && a.timeline === previousTimeline) {\n previousTimeline.removeAnimate(a, false);\n }\n a.setTimeline(nextTimeline);\n nextTimeline.addAnimate(a);\n }\n });\n\n if (detachedStageAnimates.length) {\n detachedStageAnimates.forEach(animate => {\n animate.stop();\n const untrackAnimate = (this as any).untrackAnimate;\n if (typeof untrackAnimate === 'function') {\n untrackAnimate.call(this, animate.id);\n } else {\n this.animates?.delete(animate.id);\n }\n });\n this._restoreAttributeFromStaticTruth({ type: AttributeUpdateType.ANIMATE_END });\n }\n }\n this._onSetStage && this._onSetStage(this, stage, layer);\n graphicService?.onSetStage?.(this, stage);\n return;\n }\n\n this.syncSharedStateScopeBindingFromTree(!!this.currentStates?.length);\n }\n\n setStageToShadowRoot(stage?: IStage, layer?: ILayer) {\n if (this.shadowRoot) {\n this.shadowRoot.setStage(stage, layer);\n }\n }\n\n onAddStep(step: IStep) {\n return;\n }\n onStop(props?: Partial<T>): void {\n this._restoreAttributeFromStaticTruth({ type: AttributeUpdateType.ANIMATE_END });\n }\n\n getDefaultAttribute(name: string) {\n return (this.getGraphicTheme() as any)[name];\n }\n\n // 获取属性\n getComputedAttribute(name: string) {\n return (this.attribute as any)[name] ?? this.getDefaultAttribute(name);\n }\n /**\n * 添加onSetStage钩子\n * @param cb 回调函数\n * @param immediate 是否立刻执行,如果在回调添加之前stage就已经绑定,那么如果第二个参数为true就立刻执行回调\n */\n onSetStage(cb: (g: IGraphic, stage: IStage) => void, immediate: boolean = false) {\n this._onSetStage = cb;\n if (immediate && this.stage) {\n cb(this, this.stage);\n }\n }\n\n /******************** shadow graphic *********************/\n attachShadow(shadowRoot?: IShadowRoot) {\n if (shadowRoot) {\n shadowRoot.shadowHost = this;\n }\n\n this.shadowRoot =\n shadowRoot ??\n application.graphicService.creator.shadowRoot?.(this) ??\n (loadShadowRootFactory().createShadowRoot(this) as IShadowRoot);\n this.addUpdateBoundTag();\n this.shadowRoot.setStage(this.stage, this.layer);\n return this.shadowRoot;\n }\n\n detachShadow() {\n if (this.shadowRoot) {\n this.addUpdateBoundTag();\n this.shadowRoot.release(true);\n this.shadowRoot = null;\n }\n }\n\n toJson(): IGraphicJson {\n return {\n attribute: this.attribute,\n _uid: this._uid,\n type: this.type,\n name: this.name,\n children: this.children.map((item: IGraphic) => item.toJson())\n };\n }\n\n createPathProxy(path?: string) {\n if (isString(path, true)) {\n this.pathProxy = new CustomPath2D().fromString(path as string);\n } else {\n this.pathProxy = new CustomPath2D();\n }\n\n return this.pathProxy;\n }\n\n loadImage(image: any, background: boolean = false) {\n if (background && image?.background) {\n image = image.background;\n }\n if (background && (!image || backgroundNotImage(image))) {\n this.backgroundImg = false;\n return;\n }\n if (!image) {\n return;\n }\n const url = image;\n if (!this.resources) {\n this.resources = new Map();\n }\n const cache: {\n state: 'loading' | 'success' | 'init' | 'fail';\n data: any;\n } = {\n data: 'init',\n state: null\n };\n this.resources.set(url, cache);\n if (typeof image === 'string') {\n cache.state = 'loading';\n if (image.startsWith('<svg')) {\n // TODO 封装isSvg到@visactor/vutils\n ResourceLoader.GetSvg(image, this);\n this.backgroundImg = this.backgroundImg || background;\n } else if (isValidUrl(image) || image.includes('/') || isBase64(image)) {\n ResourceLoader.GetImage(image, this);\n this.backgroundImg = this.backgroundImg || background;\n }\n } else if (isObject(image)) {\n (cache.state = 'success'), (cache.data = image);\n this.backgroundImg = this.backgroundImg || background;\n } else {\n cache.state = 'fail';\n }\n }\n\n setShadowGraphic(graphic: IGraphic) {\n if (!graphic) {\n this.detachShadow();\n } else {\n const root = this.attachShadow();\n root.add(graphic);\n }\n }\n\n imageLoadSuccess(url: string, image: HTMLImageElement, cb?: () => void) {\n // 更新属性\n // this.resourceState = 'success';\n // this.resource = image;\n if (!this.resources) {\n return;\n }\n const res = this.resources.get(url);\n if (!res) {\n return;\n }\n res.state = 'success';\n res.data = image;\n\n cb && cb();\n\n // 触发重绘\n // 暂时全量,TODO 启动局部重绘\n // this.stage.enableDirtyBounds();\n // this.stage.dirty(this.AABBBounds);\n this.addUpdateBoundTag(); // 添加bounds更新tag重绘才会绘制这个mark\n this.stage && this.stage.renderNextFrame();\n }\n\n imageLoadFail(url: string, cb?: () => void) {\n if (!this.resources) {\n return;\n }\n const res = this.resources.get(url);\n if (!res) {\n return;\n }\n res.state = 'fail';\n\n cb && cb();\n }\n\n private _stopAnimates() {\n const animates: IAnimate[] = [];\n this.visitTrackedAnimates(animate => {\n animates.push(animate);\n });\n animates.forEach(animate => {\n animate.stop();\n });\n }\n\n stopAnimates(stopChildren: boolean = false) {\n this._stopAnimates();\n\n if (this.shadowRoot) {\n // 停止所有影子节点的动画\n this.shadowRoot.stopAnimates(true);\n }\n if (this.isContainer && stopChildren) {\n this.forEachChildren((c: IGraphic) => {\n c.stopAnimates(stopChildren);\n });\n }\n }\n\n release(): void {\n this.releaseStatus = 'released';\n this.clearSharedStateActiveRegistrations();\n this.stopAnimates();\n const graphicService = this.stage?.graphicService ?? application.graphicService;\n graphicService?.onRelease?.(this);\n super.release();\n }\n\n protected _dispatchCustomEvent(type: string, context?: any) {\n if (this._events && type in this._events) {\n const changeEvent = new CustomEvent(type, context);\n changeEvent.bubbles = false;\n const manager = (this.stage as any)?.eventSystem?.manager;\n\n if (manager) {\n (changeEvent as any).manager = manager;\n return this.dispatchEvent(changeEvent);\n }\n\n return Node.prototype.dispatchEvent.call(this, changeEvent);\n }\n return true;\n }\n\n protected beforeStateUpdate(\n attrs: Partial<T>,\n prevStates: string[],\n nextStates: string[],\n hasAnimation?: boolean,\n isClear?: boolean\n ) {\n return this._dispatchCustomEvent('beforeStateUpdate', {\n type: AttributeUpdateType.STATE,\n attrs: { ...attrs },\n prevStates: prevStates.slice(),\n nextStates: nextStates.slice(),\n hasAnimation: !!hasAnimation,\n isClear: !!isClear\n });\n }\n\n protected _emitCustomEvent(type: string, context?: any) {\n this._dispatchCustomEvent(type, context);\n }\n\n abstract getNoWorkAnimateAttr(): Record<string, number>;\n\n abstract clone(): IGraphic<any>;\n\n toCustomPath(): ICustomPath2D {\n // throw new Error('暂不支持');\n const renderer = (this.stage?.renderService || application.renderService)?.drawContribution?.getRenderContribution(\n this\n );\n if (renderer) {\n const context = new EmptyContext2d(null, 1);\n renderer.drawShape(this, context, 0, 0, {} as any, {});\n return context.path;\n }\n return null;\n }\n}\n\nGraphic.mixin(EventTarget);\n\nfunction backgroundNotImage(image: any) {\n if (typeof image === 'string') {\n return !(image.startsWith('<svg') || isValidUrl(image) || image.includes('/') || isBase64(image));\n }\n if (image.fill || image.stroke) {\n return true;\n }\n if (typeof image.gradient === 'string' && Array.isArray(image.stops)) {\n return true;\n }\n return false;\n}\n\nfunction isExternalTexture(texture: any) {\n if (!texture) {\n return false;\n }\n if (typeof texture === 'string') {\n if (builtinTextureTypes.has(texture)) {\n return false;\n }\n return texture.startsWith('<svg') || isValidUrl(texture) || texture.includes('/') || isBase64(texture);\n }\n return isObject(texture);\n}\n"]}
1
+ {"version":3,"sources":["../src/graphic/graphic.ts"],"names":[],"mappings":"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","file":"graphic.js","sourcesContent":["import type { ICustomPath2D } from './../interface/path';\nimport {\n AABBBounds,\n isArray,\n isEqual,\n max,\n Matrix,\n OBBBounds,\n normalTransform,\n Point,\n type Dict,\n type IAABBBounds,\n type IOBBBounds,\n type IPointLike,\n isNil,\n isString,\n isValidUrl,\n isBase64,\n isObject\n} from '@visactor/vutils';\nimport type {\n GraphicType,\n IAnimateConfig,\n IGraphicAttribute,\n IGraphic,\n IGraphicJson,\n ISetAttributeContext,\n ISetStatesOptions,\n ITransform,\n GraphicReleaseStatus\n} from '../interface/graphic';\nimport { Node } from './node-tree';\nimport type {\n IAnimate,\n IAnimateTarget,\n IGlyphGraphicAttribute,\n IGroup,\n ILayer,\n IPickerService,\n IShadowRoot,\n IStage,\n IStep,\n ISymbolClass\n} from '../interface';\nimport { EventTarget, CustomEvent } from '../event';\nimport { DefaultTransform } from './config';\nimport { application } from '../application';\nimport { CustomPath2D } from '../common/custom-path2d';\nimport { ResourceLoader } from '../resource-loader/loader';\nimport { AttributeUpdateType, IContainPointMode, UpdateTag } from '../common/enums';\nimport { BoundsContext } from '../common/bounds-context';\nimport { renderCommandList } from '../common/render-command-list';\nimport { parsePadding } from '../common/utils';\nimport { builtinSymbolsMap, builtInSymbolStrMap, CustomSymbolClass } from './builtin-symbol';\nimport { isSvg, XMLParser } from '../common/xml';\nimport { SVG_PARSE_ATTRIBUTE_MAP, SVG_PARSE_ATTRIBUTE_MAP_KEYS } from './constants';\nimport { DefaultStateAnimateConfig } from '../animate/config';\nimport { EmptyContext2d } from '../canvas';\nimport type {\n CompiledStateDefinition,\n StateDefinition,\n StateDefinitionsInput,\n StateMergeMode,\n StateTransitionResult\n} from './state/state-definition';\nimport { StateDefinitionCompiler } from './state/state-definition-compiler';\nimport { StateEngine } from './state/state-engine';\nimport { ATTRIBUTE_CATEGORY, UpdateCategory, classifyAttributeDelta } from './state/attribute-update-classifier';\nimport { StateTransitionOrchestrator } from './state/state-transition-orchestrator';\nimport {\n collectSharedStateScopeChain,\n ensureSharedStateScopeFresh,\n type SharedStateScope\n} from './state/shared-state-scope';\nimport { enqueueGraphicSharedStateRefresh, scheduleStageSharedStateRefresh } from './state/shared-state-refresh';\n\ndeclare const require: (id: string) => unknown;\n\nconst _tempBounds = new AABBBounds();\ntype TShadowRootModule = {\n createShadowRoot: (graphic?: IGraphic) => IShadowRoot;\n};\nconst loadShadowRootFactory = () => require('./shadow-root') as TShadowRootModule;\n/**\n * pathProxy参考自zrender\n * BSD 3-Clause License\n\n Copyright (c) 2017, Baidu Inc.\n All rights reserved.\n\n Redistribution and use in source and binary forms, with or without\n modification, are permitted provided that the following conditions are met:\n\n * Redistributions of source code must retain the above copyright notice, this\n list of conditions and the following disclaimer.\n\n * Redistributions in binary form must reproduce the above copyright notice,\n this list of conditions and the following disclaimer in the documentation\n and/or other materials provided with the distribution.\n\n * Neither the name of the copyright holder nor the names of its\n contributors may be used to endorse or promote products derived from\n this software without specific prior written permission.\n\n THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS \"AS IS\"\n AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE\n IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE\n DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE\n FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL\n DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR\n SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER\n CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,\n OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE\n OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.\n */\n\nconst tempMatrix = new Matrix();\nexport const PURE_STYLE_KEY = [\n 'stroke',\n 'opacity',\n 'strokeOpacity',\n 'lineDash',\n 'lineDashOffset',\n 'lineCap',\n 'lineJoin',\n 'miterLimit',\n 'fill',\n 'fillOpacity'\n];\n\nexport const GRAPHIC_UPDATE_TAG_KEY = [\n 'lineWidth',\n // 'lineCap',\n // 'lineJoin',\n // 'miterLimit',\n 'scaleX',\n 'scaleY',\n 'angle',\n 'anchor',\n 'visible'\n];\n\nconst tempConstantXYKey = ['x', 'y'];\nconst tempConstantScaleXYKey = ['scaleX', 'scaleY'];\nconst tempConstantAngleKey = ['angle'];\nconst builtinTextureTypes = new Set([\n 'circle',\n 'diamond',\n 'rect',\n 'vertical-line',\n 'horizontal-line',\n 'bias-lr',\n 'bias-rl',\n 'grid',\n 'wave'\n]);\n\nconst point = new Point();\nconst EMPTY_STATE_NAMES: readonly string[] = [];\nconst BROAD_UPDATE_CATEGORY =\n UpdateCategory.PAINT |\n UpdateCategory.SHAPE |\n UpdateCategory.BOUNDS |\n UpdateCategory.TRANSFORM |\n UpdateCategory.LAYOUT;\n\ntype AttributeDelta = Map<string, { prev: unknown; next: unknown }>;\ntype GraphicStateTransition = {\n changed: boolean;\n states: string[];\n effectiveStates?: string[];\n};\ntype ResolvedGraphicStateTransition<T> = {\n transition: GraphicStateTransition;\n effectiveStates: string[];\n resolvedStateAttrs: Partial<T>;\n};\n\nfunction isPlainObjectValue(value: unknown): value is Record<string, any> {\n return typeof value === 'object' && value != null && !Array.isArray(value);\n}\n\nfunction cloneAttributeValue<T>(value: T): T {\n if (!isPlainObjectValue(value)) {\n return value;\n }\n\n const source = value as Record<string, any>;\n const clone: Record<string, any> = {};\n Object.keys(source).forEach(key => {\n const nextValue = source[key];\n clone[key] = isPlainObjectValue(nextValue) ? cloneAttributeValue(nextValue) : nextValue;\n });\n return clone as T;\n}\n\nfunction cloneAttributeSurface<T>(value: T): T {\n if (!isPlainObjectValue(value)) {\n return value;\n }\n\n const source = value as Record<string, any>;\n const clone: Record<string, any> = {};\n Object.keys(source).forEach(key => {\n const nextValue = source[key];\n clone[key] = isPlainObjectValue(nextValue) ? { ...nextValue } : nextValue;\n });\n return clone as T;\n}\n\nfunction areAttributeValuesEqual(left: unknown, right: unknown): boolean {\n if (left === right) {\n return true;\n }\n if (!isPlainObjectValue(left) && !isPlainObjectValue(right) && !Array.isArray(left) && !Array.isArray(right)) {\n return false;\n }\n return isEqual(left, right);\n}\n\ntype ExcludedAttributeKeys = Record<string, true>;\n\nfunction deepMergeAttributeValue(base: Record<string, any>, value: Record<string, any>): Record<string, any> {\n const result: Record<string, any> = cloneAttributeValue(base) ?? {};\n\n Object.keys(value).forEach(key => {\n const nextValue = value[key];\n const previousValue = result[key];\n\n if (isPlainObjectValue(previousValue) && isPlainObjectValue(nextValue)) {\n result[key] = deepMergeAttributeValue(previousValue, nextValue);\n return;\n }\n\n result[key] = cloneAttributeValue(nextValue);\n });\n\n return result;\n}\n\nexport const NOWORK_ANIMATE_ATTR = {\n strokeSeg: 1,\n boundsPadding: 2,\n pickMode: 1,\n boundsMode: 1,\n customPickShape: 1,\n pickable: 1,\n childrenPickable: 1,\n visible: 1,\n zIndex: 1,\n layout: 1,\n keepDirIn3d: 1,\n globalZIndex: 1,\n\n outerBorder: 1,\n innerBorder: 1,\n lineDash: 1,\n lineCap: 1,\n lineJoin: 1,\n miterLimit: 2,\n strokeBoundsBuffer: 2,\n\n scaleCenter: 1,\n anchor: 1,\n anchor3d: 1,\n postMatrix: 1,\n\n backgroundMode: 2,\n background: 1,\n texture: 1,\n cursor: 1,\n html: 1\n};\n\n// function createTrackableObject(obj: any) {\n// // const accessedProperties = new Set(); // 记录被读取的属性\n// // const modifiedProperties = new Set(); // 记录被设置/修改的属性\n\n// const handler = {\n// get(target: any, property: any) {\n// // accessedProperties.add(property); // 记录读取操作\n// return Reflect.get(target, property);\n// },\n// set(target: any, property: any, value: any) {\n// if (property === 'size' && !isFinite(value)) {\n// console.log('set', property, value);\n// }\n// // modifiedProperties.add(property); // 记录设置/修改操作\n// return Reflect.set(target, property, value);\n// }\n// };\n\n// const proxy = new Proxy(obj, handler);\n\n// // 提供方法获取被追踪的属性\n// // proxy.getAccessedProperties = () => [...accessedProperties];\n// // proxy.getModifiedProperties = () => [...modifiedProperties];\n\n// return proxy;\n// }\n\n/**\n * globalTransMatrix更新逻辑\n * 1. group的transform修改,会下发到所有下层group,将所有下层的tag修改\n * 2. 叶子graphic每次获取globalTransMatrix都重新计算\n * 3. 所有节点的transform修改,或者globalTransform修改,都会下发到自己的shadowRoot上\n */\n\nexport abstract class Graphic<T extends Partial<IGraphicAttribute> = Partial<IGraphicAttribute>>\n extends Node\n implements IGraphic<T>, IAnimateTarget\n{\n /**\n * Mixes all enumerable properties and methods from a source object to Element.\n * @param source - The source of properties and methods to mix in.\n */\n static mixin(source: Dict<any>): void {\n // in ES8/ES2017, this would be really easy:\n // Object.defineProperties(Element.prototype, Object.getOwnPropertyDescriptors(source));\n\n // get all the enumerable property keys\n const keys = Object.keys(source);\n\n // loop through properties\n for (let i = 0; i < keys.length; ++i) {\n const propertyName = keys[i];\n\n // Set the property using the property descriptor - this works for accessors and normal value properties\n Object.defineProperty(\n Graphic.prototype,\n propertyName,\n Object.getOwnPropertyDescriptor(source, propertyName) as PropertyDecorator\n );\n }\n }\n\n declare _events?: any;\n\n // 保存语法上下文\n declare context?: Record<string, any>;\n private transientFromAttrsBeforePreventAnimate?: Record<string, any> | null;\n private transientFromAttrsBeforePreventAnimateDiffAttrs?: Record<string, any> | null;\n\n static userSymbolMap: Record<string, ISymbolClass> = {};\n\n declare onBeforeAttributeUpdate?: (\n val: any,\n attributes: Partial<T>,\n key: null | string | string[],\n context?: ISetAttributeContext\n ) => T | undefined;\n declare parent: any;\n\n declare resources?: Map<\n string | HTMLImageElement | HTMLCanvasElement,\n { state: 'init' | 'loading' | 'success' | 'fail'; data?: HTMLImageElement | HTMLCanvasElement }\n >;\n declare backgroundImg?: boolean;\n\n declare type: GraphicType;\n declare prefixed: string;\n declare numberType: number;\n declare isContainer?: boolean;\n declare valid: boolean;\n declare stage?: IStage;\n declare layer?: ILayer;\n declare incremental?: number;\n declare glyphHost?: IGraphic<IGlyphGraphicAttribute>;\n declare _onSetStage?: (g: IGraphic, stage: IStage, layer: ILayer) => void;\n // declare _beforeAttributeUpdate?: (key: string | string, value: any) => void;\n // 标记是否是在3d模式下\n declare in3dMode?: boolean;\n\n // 不考虑transform的宽高,特殊情况下会使用到\n declare widthWithoutTransform?: number;\n declare heightWithoutTransform?: number;\n declare x1WithoutTransform?: number;\n declare y1WithoutTransform?: number;\n\n // aabbBounds,所有图形都需要有,所以初始化即赋值\n protected declare _AABBBounds: IAABBBounds;\n get AABBBounds(): IAABBBounds {\n return this.tryUpdateAABBBounds();\n }\n // 具有旋转的包围盒,部分图元需要,动态初始化\n protected declare _OBBBounds?: IOBBBounds;\n get OBBBounds(): IOBBBounds {\n return this.tryUpdateOBBBounds();\n }\n protected declare _globalAABBBounds: IAABBBounds;\n // 全局包围盒,部分图元需要,动态初始化,建议使用AABBBounds\n get globalAABBBounds(): IAABBBounds {\n return this.tryUpdateGlobalAABBBounds();\n }\n protected declare _transMatrix: Matrix;\n get transMatrix(): Matrix {\n return this.tryUpdateLocalTransMatrix(true);\n }\n protected declare _globalTransMatrix: Matrix;\n get globalTransMatrix(): Matrix {\n return this.tryUpdateGlobalTransMatrix(true);\n }\n protected declare _updateTag: number;\n\n // 上次更新的stamp\n declare stamp?: number;\n\n declare attribute: T;\n protected _baseAttributes?: Partial<T>;\n\n get baseAttributes(): Partial<T> {\n return this._baseAttributes ?? this.attribute;\n }\n\n set baseAttributes(value: Partial<T>) {\n if (value === this.attribute) {\n this._baseAttributes = undefined;\n return;\n }\n this._baseAttributes = value;\n }\n\n declare shadowRoot?: IShadowRoot;\n\n declare releaseStatus?: GraphicReleaseStatus;\n\n /** 记录state对应的图形属性 */\n declare states?: StateDefinitionsInput<T>;\n /** 当前state值 */\n declare currentStates?: string[];\n declare effectiveStates?: string[];\n declare resolvedStatePatch?: Partial<T>;\n declare boundSharedStateScope?: SharedStateScope<T>;\n declare boundSharedStateRevision?: number;\n declare sharedStateDirty?: boolean;\n declare registeredActiveScopes?: Set<SharedStateScope<T>>;\n /** TODO: state更新对应的动画配置 */\n declare stateAnimateConfig?: IAnimateConfig;\n /** 状态样式合并模式,默认浅合并,可选深度合并 */\n declare stateMergeMode?: StateMergeMode;\n declare animates: Map<string | number, IAnimate>;\n\n declare animate?: () => IAnimate;\n\n // declare nextAttrs?: T;\n // declare prevAttrs?: T;\n // declare finalAttrs?: T;\n\n declare pathProxy?: ICustomPath2D;\n // 依附于某个theme,如果该节点不存在parent,那么这个Theme就作为节点的Theme,避免添加到节点前计算属性\n declare attachedThemeGraphic?: IGraphic;\n protected updateAABBBoundsStamp: number;\n protected updateOBBBoundsStamp?: number;\n declare clipPathMap?: Map<string, ISymbolClass>;\n\n // 外部设置,用于选择所使用的textMeasureId\n declare textMeasureId?: string;\n\n // state 排序方法\n protected stateSort?: (stateA: string, stateB: string) => number;\n protected compiledStateDefinitions?: Map<string, CompiledStateDefinition<T>>;\n protected compiledStateDefinitionsCacheKey?: string;\n protected stateEngine?: StateEngine<T>;\n protected stateEngineCompiledDefinitions?: Map<string, CompiledStateDefinition<T>>;\n protected stateEngineStateSort?: (stateA: string, stateB: string) => number;\n protected stateEngineMergeMode?: StateMergeMode;\n protected stateTransitionOrchestrator?: StateTransitionOrchestrator<T>;\n protected localStateDefinitionsSource?: StateDefinitionsInput<T>;\n protected localStateDefinitionsVersion?: number;\n protected resolverEpoch?: number;\n protected attributeMayContainTransientAttrs?: boolean;\n\n constructor(params: T = {} as T) {\n super();\n this._AABBBounds = new AABBBounds();\n this._updateTag = UpdateTag.INIT;\n this.attribute = params;\n this.valid = this.isValid();\n this.updateAABBBoundsStamp = 0;\n if (params.background) {\n this.loadImage((params.background as any).background ?? params.background, true);\n }\n if (params.texture && isExternalTexture(params.texture)) {\n this.loadImage(params.texture, false);\n }\n if (params.shadowGraphic) {\n this.setShadowGraphic(params.shadowGraphic);\n }\n // this.attribute = createTrackableObject(this.attribute);\n }\n\n get normalAttrs(): Partial<T> | undefined {\n return this.baseAttributes;\n }\n\n set normalAttrs(_value: Partial<T> | undefined) {\n void _value;\n }\n\n protected getBaseAttributesStorage(): Partial<T> {\n return this._baseAttributes ?? this.attribute;\n }\n\n getGraphicService() {\n return this.stage?.graphicService ?? application.graphicService;\n }\n\n getAttributes(): T {\n return this.attribute;\n }\n\n protected getStateTransitionOrchestrator(): StateTransitionOrchestrator<T> {\n if (!this.stateTransitionOrchestrator) {\n this.stateTransitionOrchestrator = new StateTransitionOrchestrator<T>();\n }\n\n return this.stateTransitionOrchestrator;\n }\n\n protected resolveBoundSharedStateScope(): SharedStateScope<T> | SharedStateScope<Record<string, any>> | undefined {\n let parent = this.parent as IGroup | null;\n\n while (parent) {\n if ((parent as any).sharedStateScope) {\n return (parent as any).sharedStateScope;\n }\n parent = parent.parent as IGroup | null;\n }\n\n return this.stage?.rootSharedStateScope as SharedStateScope<Record<string, any>> | undefined;\n }\n\n protected syncSharedStateScopeBindingFromTree(markDirty: boolean = true): boolean {\n const nextScope = this.resolveBoundSharedStateScope();\n if (this.boundSharedStateScope === nextScope) {\n this.syncSharedStateActiveRegistrations();\n return false;\n }\n\n this.boundSharedStateScope = nextScope as SharedStateScope<T> | undefined;\n this.boundSharedStateRevision = undefined;\n this.compiledStateDefinitions = undefined;\n this.compiledStateDefinitionsCacheKey = undefined;\n this.stateEngine = undefined;\n this.stateEngineCompiledDefinitions = undefined;\n this.syncSharedStateActiveRegistrations();\n\n if (markDirty && this.currentStates?.length) {\n this.markSharedStateDirty();\n }\n\n return true;\n }\n\n protected syncSharedStateScopeBindingOnTreeChange(markDirty: boolean = true): boolean {\n if (\n !this.currentStates?.length &&\n !this.boundSharedStateScope &&\n !this.registeredActiveScopes?.size &&\n !this.sharedStateDirty\n ) {\n return false;\n }\n\n return this.syncSharedStateScopeBindingFromTree(markDirty);\n }\n\n protected syncSharedStateActiveRegistrations(): void {\n const previousScopes = this.registeredActiveScopes;\n\n if (!this.currentStates?.length || !this.boundSharedStateScope) {\n if (previousScopes?.size) {\n previousScopes.forEach(scope => {\n scope.subtreeActiveDescendants.delete(this);\n });\n previousScopes.clear();\n }\n this.registeredActiveScopes = undefined;\n return;\n }\n\n const nextScopes = new Set(collectSharedStateScopeChain(this.boundSharedStateScope));\n\n previousScopes?.forEach(scope => {\n if (!nextScopes.has(scope)) {\n scope.subtreeActiveDescendants.delete(this);\n }\n });\n\n nextScopes.forEach(scope => {\n scope.subtreeActiveDescendants.add(this);\n });\n\n this.registeredActiveScopes = nextScopes;\n }\n\n protected clearSharedStateActiveRegistrations(): void {\n const previousScopes = this.registeredActiveScopes;\n if (previousScopes) {\n previousScopes.forEach(scope => {\n scope.subtreeActiveDescendants.delete(this);\n });\n previousScopes.clear();\n }\n this.registeredActiveScopes = undefined;\n }\n\n protected markSharedStateDirty(): void {\n this.sharedStateDirty = true;\n enqueueGraphicSharedStateRefresh(this.stage, this);\n scheduleStageSharedStateRefresh(this.stage);\n }\n\n onParentSharedStateTreeChanged(stage?: IStage, layer?: ILayer): void {\n if (this.stage !== stage || this.layer !== layer) {\n this.setStage(stage, layer);\n return;\n }\n\n this.syncSharedStateScopeBindingOnTreeChange();\n }\n\n refreshSharedStateBeforeRender(): void {\n if (!this.currentStates?.length) {\n this.sharedStateDirty = false;\n return;\n }\n\n this.syncSharedStateScopeBindingFromTree(false);\n if (this.boundSharedStateScope) {\n ensureSharedStateScopeFresh(this.boundSharedStateScope);\n }\n\n this.recomputeCurrentStatePatch();\n this.stopStateAnimates();\n this._restoreAttributeFromStaticTruth({ type: AttributeUpdateType.STATE });\n this.emitStateUpdateEvent();\n this.sharedStateDirty = false;\n }\n\n protected getLocalStatesVersion(): number {\n if (this.localStateDefinitionsSource !== this.states) {\n this.localStateDefinitionsSource = this.states;\n this.localStateDefinitionsVersion = (this.localStateDefinitionsVersion ?? 0) + 1;\n }\n\n return this.localStateDefinitionsVersion ?? 0;\n }\n\n protected resolveEffectiveCompiledDefinitions(): {\n compiledDefinitions?: Map<string, CompiledStateDefinition<T>>;\n } {\n this.syncSharedStateScopeBindingFromTree(false);\n const boundScope = this.boundSharedStateScope;\n if (boundScope) {\n ensureSharedStateScopeFresh(boundScope);\n this.boundSharedStateRevision = boundScope.revision;\n }\n\n const hasStates = !!this.states && Object.keys(this.states).length > 0;\n if (!boundScope) {\n if (!hasStates) {\n return {\n compiledDefinitions: undefined\n };\n }\n\n const localStatesVersion = this.getLocalStatesVersion();\n const cacheKey = `local:${localStatesVersion}`;\n if (!this.compiledStateDefinitions || this.compiledStateDefinitionsCacheKey !== cacheKey) {\n this.compiledStateDefinitions = new StateDefinitionCompiler<T>().compile(this.states);\n this.compiledStateDefinitionsCacheKey = cacheKey;\n }\n\n return {\n compiledDefinitions: this.compiledStateDefinitions\n };\n }\n\n const sharedCompiledDefinitions = boundScope.effectiveCompiledDefinitions as Map<\n string,\n CompiledStateDefinition<T>\n >;\n return {\n compiledDefinitions: sharedCompiledDefinitions\n };\n }\n\n protected recomputeCurrentStatePatch(): void {\n if (!this.currentStates?.length) {\n this.effectiveStates = [];\n this.resolvedStatePatch = undefined;\n this.syncSharedStateActiveRegistrations();\n return;\n }\n\n const stateResolveBaseAttrs = this.getStateResolveBaseAttrs();\n const transition = this.resolveUseStatesTransition(this.currentStates, stateResolveBaseAttrs);\n const effectiveStates = transition.effectiveStates ?? transition.states;\n const resolvedStateAttrs =\n this.stateEngine && this.compiledStateDefinitions ? { ...(this.stateEngine.resolvedPatch as Partial<T>) } : {};\n\n this.currentStates = transition.states;\n this.effectiveStates = [...effectiveStates];\n this.resolvedStatePatch = resolvedStateAttrs;\n this.syncSharedStateActiveRegistrations();\n }\n\n protected buildStaticAttributeSnapshot(): Partial<T> {\n const snapshot = cloneAttributeValue((this.baseAttributes ?? {}) as Partial<T>) as Partial<T>;\n const resolvedPatch = this.resolvedStatePatch;\n\n if (!resolvedPatch) {\n return snapshot;\n }\n\n Object.keys(resolvedPatch).forEach(key => {\n const nextValue = (resolvedPatch as Record<string, any>)[key];\n const previousValue = (snapshot as Record<string, any>)[key];\n\n if (this.stateMergeMode === 'deep' && isPlainObjectValue(previousValue) && isPlainObjectValue(nextValue)) {\n (snapshot as Record<string, any>)[key] = deepMergeAttributeValue(previousValue, nextValue);\n return;\n }\n\n (snapshot as Record<string, any>)[key] = cloneAttributeValue(nextValue);\n });\n\n return snapshot;\n }\n\n protected buildRemovedStateAnimationAttrs(\n targetStateAttrs: Partial<T>,\n previousResolvedStatePatch?: Partial<T>\n ): Partial<T> {\n const extraAttrs: Record<string, any> = {};\n\n if (!previousResolvedStatePatch) {\n return extraAttrs as Partial<T>;\n }\n\n const snapshot = this.buildStaticAttributeSnapshot() as Record<string, any>;\n const staticTargetAttrs = snapshot as Partial<T>;\n Object.keys(previousResolvedStatePatch).forEach(key => {\n const hasTargetAttr = Object.prototype.hasOwnProperty.call(targetStateAttrs, key);\n if (hasTargetAttr && (targetStateAttrs as Record<string, any>)[key] !== undefined) {\n return;\n }\n\n const assignFallbackAttr = (value: any): void => {\n if (value === undefined && this.shouldSkipStateTransitionDefaultAttribute(key, staticTargetAttrs)) {\n return;\n }\n extraAttrs[key] = value === undefined ? value : cloneAttributeValue(value);\n };\n\n if (hasTargetAttr) {\n assignFallbackAttr(this.getStateTransitionDefaultAttribute(key, staticTargetAttrs));\n return;\n }\n\n if (Object.prototype.hasOwnProperty.call(snapshot, key)) {\n const snapshotValue = snapshot[key];\n assignFallbackAttr(\n snapshotValue === undefined ? this.getStateTransitionDefaultAttribute(key, staticTargetAttrs) : snapshotValue\n );\n return;\n }\n\n assignFallbackAttr(this.getStateTransitionDefaultAttribute(key, staticTargetAttrs));\n });\n\n return extraAttrs as Partial<T>;\n }\n\n protected syncObjectToSnapshot(\n target: Record<string, any>,\n snapshot: Record<string, any>,\n excludedKeys?: ExcludedAttributeKeys\n ): AttributeDelta {\n const delta: AttributeDelta = new Map();\n const keySet = new Set<string>([...Object.keys(target), ...Object.keys(snapshot)]);\n\n keySet.forEach(key => {\n if (excludedKeys?.[key] === true) {\n return;\n }\n const hasNext = Object.prototype.hasOwnProperty.call(snapshot, key);\n const previousValue = target[key];\n\n if (!hasNext) {\n if (Object.prototype.hasOwnProperty.call(target, key)) {\n delta.set(key, { prev: previousValue, next: undefined });\n delete target[key];\n }\n return;\n }\n\n const nextValue = snapshot[key];\n if (areAttributeValuesEqual(previousValue, nextValue)) {\n return;\n }\n\n delta.set(key, { prev: previousValue, next: nextValue });\n target[key] = cloneAttributeValue(nextValue);\n });\n\n return delta;\n }\n\n protected _syncAttribute(excludedKeys?: ExcludedAttributeKeys): AttributeDelta {\n if (this.attribute === this.baseAttributes && this.resolvedStatePatch) {\n this.detachAttributeFromBaseAttributes();\n }\n const snapshot = this.buildStaticAttributeSnapshot() as Record<string, any>;\n const delta = this.syncObjectToSnapshot(this.attribute as Record<string, any>, snapshot, excludedKeys);\n this.valid = this.isValid();\n this.attributeMayContainTransientAttrs = !!excludedKeys;\n return delta;\n }\n\n protected _syncFinalAttributeFromStaticTruth(excludedKeys?: ExcludedAttributeKeys): void {\n const target = (this as any).finalAttribute;\n if (!target) {\n return;\n }\n const snapshot = this.buildStaticAttributeSnapshot() as Record<string, any>;\n this.syncObjectToSnapshot(target, snapshot, excludedKeys);\n }\n\n protected mergeAttributeDeltaCategory(category: UpdateCategory, key: string, prev: unknown, next: unknown) {\n let nextCategory =\n key === 'stroke' || key === 'shadowBlur'\n ? classifyAttributeDelta(key, prev, next)\n : ATTRIBUTE_CATEGORY[key] ?? UpdateCategory.PAINT;\n if (nextCategory & UpdateCategory.PICK) {\n // Phase 2 keeps PICK invalidation on the existing bounds path instead of adding a dedicated pick tag.\n nextCategory |= UpdateCategory.BOUNDS;\n }\n if (nextCategory === UpdateCategory.PAINT && this.needUpdateTag(key)) {\n nextCategory = UpdateCategory.SHAPE | UpdateCategory.BOUNDS;\n }\n return category | nextCategory;\n }\n\n protected submitUpdateByCategory(category: UpdateCategory, forceUpdateTag: boolean = false): void {\n if (forceUpdateTag) {\n this.addUpdateShapeAndBoundsTag();\n this.addUpdatePositionTag();\n this.addUpdateLayoutTag();\n return;\n }\n\n if ((category & BROAD_UPDATE_CATEGORY) === BROAD_UPDATE_CATEGORY) {\n this.addBroadUpdateTag();\n return;\n }\n\n if (category & UpdateCategory.SHAPE) {\n this.addUpdateShapeAndBoundsTag();\n } else if (category & UpdateCategory.BOUNDS) {\n this.addUpdateBoundTag();\n }\n\n if (category & UpdateCategory.PAINT) {\n this.addUpdatePaintTag();\n }\n\n if (category & UpdateCategory.TRANSFORM) {\n this.addUpdatePositionTag();\n }\n\n if (category & UpdateCategory.LAYOUT) {\n this.addUpdateLayoutTag();\n }\n }\n\n protected submitUpdateByDelta(delta: AttributeDelta, forceUpdateTag: boolean = false): void {\n let category = UpdateCategory.NONE;\n\n delta.forEach((entry, key) => {\n category = this.mergeAttributeDeltaCategory(category, key, entry.prev, entry.next);\n });\n\n this.submitUpdateByCategory(category, forceUpdateTag);\n }\n\n protected submitTouchedKeyUpdate(keys: string[], forceUpdateTag: boolean = false): void {\n this.submitTouchedUpdate(forceUpdateTag || this.needUpdateTags(keys));\n }\n\n protected submitTouchedUpdate(needsShapeAndBounds: boolean): void {\n if (!this.updateShapeAndBoundsTagSetted() && needsShapeAndBounds) {\n this.addUpdateShapeAndBoundsTag();\n } else {\n this.addUpdateBoundTag();\n }\n this.addUpdatePositionTag();\n this.addUpdateLayoutTag();\n }\n\n protected commitBaseAttributeMutation(forceUpdateTag: boolean = false, context?: ISetAttributeContext): void {\n if (this.currentStates?.length) {\n this.resolverEpoch = (this.resolverEpoch ?? 0) + 1;\n this.stateEngine?.invalidateResolverCache();\n this.recomputeCurrentStatePatch();\n }\n const delta = this._syncAttribute();\n this.submitUpdateByDelta(delta, forceUpdateTag);\n this.onAttributeUpdate(context);\n }\n\n protected canCommitBaseAttributesByTouchedKeys(): boolean {\n if (this.currentStates?.length || this.resolvedStatePatch || this.attributeMayContainTransientAttrs) {\n return false;\n }\n if (!this.animates?.size && !(this as any)._animationStateManager) {\n return true;\n }\n return !this.hasAnyTrackedAnimate();\n }\n\n protected detachAttributeFromBaseAttributes(): void {\n if (this.attribute === this.baseAttributes) {\n this._baseAttributes = this.attribute as Partial<T>;\n this.attribute = cloneAttributeSurface(this.attribute) as T;\n }\n }\n\n protected commitInternalBaseAttributes(params: Partial<T>, context?: ISetAttributeContext): void {\n if (!params || !Object.keys(params).length) {\n return;\n }\n\n if (this.canCommitBaseAttributesByTouchedKeys()) {\n this.commitBaseAttributesByTouchedKeys(params, false, context);\n return;\n }\n\n this.detachAttributeFromBaseAttributes();\n this.applyBaseAttributes(params);\n this.commitBaseAttributeMutation(false, context);\n }\n\n protected commitBaseAttributesByTouchedKeys(\n params: Partial<T>,\n forceUpdateTag: boolean = false,\n context?: ISetAttributeContext\n ): void {\n const source = params as Record<string, any>;\n const baseAttributes = this.getBaseAttributesStorage() as Record<string, any>;\n let hasKeys = false;\n let needsShapeAndBounds = forceUpdateTag;\n\n for (const key in source) {\n if (!Object.prototype.hasOwnProperty.call(source, key)) {\n continue;\n }\n hasKeys = true;\n baseAttributes[key] = source[key];\n if (!needsShapeAndBounds && this.needUpdateTag(key)) {\n needsShapeAndBounds = true;\n }\n }\n\n if (!hasKeys) {\n return;\n }\n\n this.attribute = baseAttributes as T;\n this._baseAttributes = undefined;\n this.valid = this.isValid();\n this.attributeMayContainTransientAttrs = false;\n this.submitTouchedUpdate(needsShapeAndBounds);\n this.onAttributeUpdate(context);\n }\n\n protected commitBaseAttributeBySingleKey(\n key: string,\n value: any,\n forceUpdateTag: boolean = false,\n context?: ISetAttributeContext\n ): void {\n (this.getBaseAttributesStorage() as Record<string, any>)[key] = value;\n this.attribute = this.getBaseAttributesStorage() as T;\n this._baseAttributes = undefined;\n this.valid = this.isValid();\n this.attributeMayContainTransientAttrs = false;\n this.submitTouchedUpdate(forceUpdateTag || this.needUpdateTag(key));\n this.onAttributeUpdate(context);\n }\n\n protected applyBaseAttributes(params: Partial<T>) {\n const keys = Object.keys(params);\n for (let i = 0; i < keys.length; i++) {\n const key = keys[i];\n (this.getBaseAttributesStorage() as Record<string, any>)[key] = (params as any)[key];\n }\n }\n\n protected _commitAnimationStaticAttributes(params: Partial<T>, context?: ISetAttributeContext): void {\n if (!params) {\n return;\n }\n\n const source = params as Record<string, any>;\n const baseAttributes = this.getBaseAttributesStorage() as Record<string, any>;\n const target = this.attribute as Record<string, any>;\n const delta: AttributeDelta = new Map();\n let hasKeys = false;\n\n for (const key in source) {\n if (!Object.prototype.hasOwnProperty.call(source, key)) {\n continue;\n }\n hasKeys = true;\n const previousValue = target[key];\n const nextValue = source[key];\n baseAttributes[key] = nextValue;\n target[key] = nextValue;\n if (!areAttributeValuesEqual(previousValue, nextValue)) {\n delta.set(key, { prev: previousValue, next: nextValue });\n }\n }\n\n if (!hasKeys) {\n return;\n }\n\n this.valid = this.isValid();\n this.attributeMayContainTransientAttrs = true;\n this.submitUpdateByDelta(delta);\n this.onAttributeUpdate(context);\n }\n\n applyAnimationTransientAttributes(\n params: Partial<T>,\n forceUpdateTag: boolean = false,\n context?: ISetAttributeContext\n ) {\n const source = params as Record<string, any>;\n let target: Record<string, any> | undefined;\n let needsShapeAndBounds = forceUpdateTag;\n\n for (const key in source) {\n if (!Object.prototype.hasOwnProperty.call(source, key)) {\n continue;\n }\n if (!target) {\n this.detachAttributeFromBaseAttributes();\n target = this.attribute as Record<string, any>;\n }\n target[key] = source[key];\n if (!needsShapeAndBounds && this.needUpdateTag(key)) {\n needsShapeAndBounds = true;\n }\n }\n\n if (!target) {\n return;\n }\n\n this.attributeMayContainTransientAttrs = true;\n this.valid = this.isValid();\n this.submitTouchedUpdate(needsShapeAndBounds);\n this.onAttributeUpdate(context);\n }\n\n protected applyTransientAttributes(\n params: Partial<T>,\n forceUpdateTag: boolean = false,\n context?: ISetAttributeContext\n ) {\n this.detachAttributeFromBaseAttributes();\n const delta: AttributeDelta = new Map();\n const keys = Object.keys(params);\n\n for (let i = 0; i < keys.length; i++) {\n const key = keys[i];\n const previousValue = (this.attribute as Record<string, any>)[key];\n const nextValue = (params as Record<string, any>)[key];\n if (areAttributeValuesEqual(previousValue, nextValue)) {\n continue;\n }\n delta.set(key, { prev: previousValue, next: nextValue });\n (this.attribute as Record<string, any>)[key] = nextValue;\n }\n\n if (delta.size) {\n this.attributeMayContainTransientAttrs = true;\n }\n this.valid = this.isValid();\n this.submitUpdateByDelta(delta, forceUpdateTag);\n this.onAttributeUpdate(context);\n }\n\n protected _restoreAttributeFromStaticTruth(\n context?: ISetAttributeContext,\n excludedKeys?: ExcludedAttributeKeys\n ): void {\n this._syncFinalAttributeFromStaticTruth(excludedKeys);\n const delta = this._syncAttribute(excludedKeys);\n this.submitUpdateByDelta(delta);\n this.onAttributeUpdate(context);\n }\n\n protected collectStatePatchDeltaKeys(previousPatch?: Partial<T>, nextPatch?: Partial<T>): string[] {\n const keys = previousPatch ? Object.keys(previousPatch) : [];\n if (!nextPatch) {\n return keys;\n }\n\n for (const key in nextPatch) {\n if (\n Object.prototype.hasOwnProperty.call(nextPatch, key) &&\n !Object.prototype.hasOwnProperty.call(previousPatch ?? {}, key)\n ) {\n keys.push(key);\n }\n }\n return keys;\n }\n\n protected getStaticTruthValueForStateKey(key: string, nextPatch?: Partial<T>): { hasValue: boolean; value: any } {\n const baseAttributes = (this.baseAttributes ?? {}) as Record<string, any>;\n const patch = nextPatch as Record<string, any> | undefined;\n\n if (patch && Object.prototype.hasOwnProperty.call(patch, key)) {\n const patchValue = patch[key];\n const baseValue = baseAttributes[key];\n if (this.stateMergeMode === 'deep' && isPlainObjectValue(baseValue) && isPlainObjectValue(patchValue)) {\n return {\n hasValue: true,\n value: deepMergeAttributeValue(baseValue, patchValue)\n };\n }\n return {\n hasValue: true,\n value: patchValue\n };\n }\n\n if (Object.prototype.hasOwnProperty.call(baseAttributes, key)) {\n return {\n hasValue: true,\n value: baseAttributes[key]\n };\n }\n\n return {\n hasValue: false,\n value: undefined\n };\n }\n\n protected syncStatePatchDeltaToTarget(\n target: Record<string, any>,\n keys: string[],\n nextPatch?: Partial<T>,\n collectCategory: boolean = false\n ): UpdateCategory {\n let category = UpdateCategory.NONE;\n\n for (let i = 0; i < keys.length; i++) {\n const key = keys[i];\n const previousValue = target[key];\n const next = this.getStaticTruthValueForStateKey(key, nextPatch);\n\n if (!next.hasValue) {\n if (Object.prototype.hasOwnProperty.call(target, key)) {\n delete target[key];\n if (collectCategory) {\n category = this.mergeAttributeDeltaCategory(category, key, previousValue, undefined);\n }\n }\n continue;\n }\n\n if (areAttributeValuesEqual(previousValue, next.value)) {\n continue;\n }\n\n const nextValue = cloneAttributeValue(next.value);\n target[key] = nextValue;\n if (collectCategory) {\n category = this.mergeAttributeDeltaCategory(category, key, previousValue, nextValue);\n }\n }\n\n return category;\n }\n\n protected restoreAttributeFromStatePatchDelta(\n previousPatch?: Partial<T>,\n nextPatch?: Partial<T>,\n context?: ISetAttributeContext\n ): void {\n this.detachAttributeFromBaseAttributes();\n const keys = this.collectStatePatchDeltaKeys(previousPatch, nextPatch);\n const finalAttribute = (this as any).finalAttribute as Record<string, any> | undefined;\n if (finalAttribute) {\n this.syncStatePatchDeltaToTarget(finalAttribute, keys, nextPatch, false);\n }\n const category = this.syncStatePatchDeltaToTarget(this.attribute as Record<string, any>, keys, nextPatch, true);\n\n this.valid = this.isValid();\n this.attributeMayContainTransientAttrs = false;\n this.submitUpdateByCategory(category);\n this.onAttributeUpdate(context);\n }\n\n setMode(mode: '2d' | '3d') {\n mode === '3d' ? this.set3dMode() : this.set2dMode();\n }\n\n set3dMode() {\n this.in3dMode = true;\n }\n set2dMode() {\n this.in3dMode = false;\n }\n getOffsetXY(attr?: ITransform, includeScroll: boolean = false) {\n const { dx = attr.dx, dy = attr.dy } = this.attribute;\n if (includeScroll && this.parent) {\n // const groupTheme = getTheme(this.parent).group;\n const attribute = this.parent.attribute;\n point.x = dx + (attribute.scrollX ?? 0);\n point.y = dy + (attribute.scrollY ?? 0);\n } else {\n point.x = dx;\n point.y = dy;\n }\n return point;\n }\n\n onAnimateBind(animate: IAnimate) {\n this.detachAttributeFromBaseAttributes();\n this._emitCustomEvent('animate-bind', animate);\n }\n\n protected visitTrackedAnimates(cb: (animate: IAnimate) => void) {\n const hook = (this as any).forEachTrackedAnimate;\n if (typeof hook === 'function') {\n hook.call(this, cb);\n return;\n }\n this.animates && this.animates.forEach(cb);\n }\n\n protected hasAnyTrackedAnimate() {\n const hook = (this as any).hasTrackedAnimate;\n if (typeof hook === 'function') {\n return hook.call(this);\n }\n const getTrackedAnimates = (this as any).getTrackedAnimates;\n if (typeof getTrackedAnimates === 'function') {\n return getTrackedAnimates.call(this).size > 0;\n }\n return !!this.animates?.size;\n }\n\n protected mayHaveTrackedAnimates() {\n return !!this.animates?.size || !!(this as any)._animationStateManager;\n }\n\n protected tryUpdateAABBBounds(): IAABBBounds {\n if (!this.shadowRoot && !(this._updateTag & UpdateTag.UPDATE_BOUNDS)) {\n return this._AABBBounds;\n }\n const full = this.attribute.boundsMode === 'imprecise';\n\n if (!this.shadowRoot) {\n const graphicService = this.getGraphicService();\n const graphicTheme = this.getGraphicTheme() as Required<T>;\n if (!graphicService.validCheck(this.attribute, graphicTheme, this._AABBBounds, this)) {\n return this._AABBBounds;\n }\n if (!this.valid) {\n this._AABBBounds.clear();\n return this._AABBBounds;\n }\n\n graphicService.beforeUpdateAABBBounds(this, this.stage, true, this._AABBBounds);\n const bounds = this.doUpdateAABBBounds(full, graphicTheme);\n graphicService.afterUpdateAABBBounds(this, this.stage, this._AABBBounds, this, true);\n\n // 直接返回空Bounds,但是前面的流程还是要走\n if (this.attribute.boundsMode === 'empty') {\n bounds.clear();\n }\n return bounds;\n }\n\n if (!this.shouldUpdateAABBBounds()) {\n return this._AABBBounds;\n }\n if (!this.valid) {\n this._AABBBounds.clear();\n return this._AABBBounds;\n }\n\n this.getGraphicService().beforeUpdateAABBBounds(this, this.stage, true, this._AABBBounds);\n const bounds = this.doUpdateAABBBounds(full);\n // this.addUpdateLayoutTag();\n this.getGraphicService().afterUpdateAABBBounds(this, this.stage, this._AABBBounds, this, true);\n\n // 直接返回空Bounds,但是前面的流程还是要走\n if (this.attribute.boundsMode === 'empty') {\n bounds.clear();\n }\n return bounds;\n }\n\n protected tryUpdateOBBBounds(): IOBBBounds {\n if (!this._OBBBounds) {\n this._OBBBounds = new OBBBounds();\n }\n // 尝试更新AABBBounds\n this.tryUpdateAABBBounds();\n // 如果AABBBounds和OBBBounds不一致,则重新计算OBBBounds\n if (this.updateOBBBoundsStamp === this.updateAABBBoundsStamp) {\n return this._OBBBounds;\n }\n this.updateOBBBoundsStamp = this.updateAABBBoundsStamp;\n if (!this.valid) {\n this._OBBBounds.clear();\n return this._OBBBounds;\n }\n\n const bounds = this.doUpdateOBBBounds();\n return bounds;\n }\n\n protected combindShadowAABBBounds(bounds: IAABBBounds) {\n // 合并shadowRoot的Bounds\n if (this.shadowRoot) {\n const b = this.shadowRoot.AABBBounds.clone();\n bounds.union(b);\n }\n }\n\n abstract getGraphicTheme(): T;\n\n protected doUpdateOBBBounds(): IOBBBounds {\n return this._OBBBounds;\n }\n\n protected abstract updateAABBBounds(\n attribute: T,\n symbolTheme: Required<T>,\n aabbBounds: IAABBBounds,\n full?: boolean\n ): IAABBBounds;\n\n getClipPath() {\n const { clipConfig } = this.attribute;\n if (!clipConfig) {\n return null;\n }\n if (!this.clipPathMap) {\n this.clipPathMap = new Map();\n }\n\n const { shape } = clipConfig;\n let path = this.clipPathMap.get(shape) || null;\n if (!path) {\n // 即使清理,避免内存溢出\n if (this.clipPathMap.size > 10) {\n this.clipPathMap.clear();\n }\n path = this.parsePath(shape);\n path && this.clipPathMap.set(shape, path);\n }\n return path;\n }\n\n parsePath(symbolType: string) {\n if (!symbolType) {\n return null;\n }\n let path = builtinSymbolsMap[symbolType];\n if (path) {\n return path;\n }\n path = Graphic.userSymbolMap[symbolType];\n if (path) {\n return path;\n }\n const _symbolType = builtInSymbolStrMap[symbolType];\n symbolType = _symbolType || symbolType;\n const valid = isSvg(symbolType);\n if (valid === true) {\n const parser = new XMLParser();\n const { svg } = parser.parse(symbolType);\n if (!svg) {\n return null;\n }\n const path = isArray(svg.path) ? svg.path : [svg.path];\n _tempBounds.clear();\n const cacheList: { path: CustomPath2D; attribute: Record<string, any> }[] = [];\n path.forEach((item: any) => {\n const cache = new CustomPath2D().fromString(item.d);\n const attribute: any = {};\n SVG_PARSE_ATTRIBUTE_MAP_KEYS.forEach(k => {\n if (item[k]) {\n (attribute as any)[(SVG_PARSE_ATTRIBUTE_MAP as any)[k]] = item[k];\n }\n });\n // 查找\n cacheList.push({\n path: cache,\n attribute\n });\n _tempBounds.union(cache.bounds);\n });\n const width = _tempBounds.width();\n const height = _tempBounds.height();\n // 规范化到1\n const maxWH = max(width, height);\n const scale = 1 / maxWH;\n cacheList.forEach(cache => cache.path.transform(0, 0, scale, scale));\n\n const _parsedPath = new CustomSymbolClass(symbolType, cacheList, true);\n Graphic.userSymbolMap[symbolType] = _parsedPath;\n return _parsedPath;\n }\n\n const cache = new CustomPath2D().fromString(symbolType);\n const width = cache.bounds.width();\n const height = cache.bounds.height();\n // 规范化到1\n const maxWH = max(width, height);\n const scale = 1 / maxWH;\n cache.transform(0, 0, scale, scale);\n const _parsedPath = new CustomSymbolClass(symbolType, cache);\n Graphic.userSymbolMap[symbolType] = _parsedPath;\n return _parsedPath;\n }\n\n protected doUpdateAABBBounds(full?: boolean, graphicTheme?: Required<T>): IAABBBounds {\n this.updateAABBBoundsStamp++;\n const resolvedGraphicTheme = graphicTheme ?? (this.getGraphicTheme() as Required<T>);\n this._AABBBounds.clear();\n const attribute = this.attribute;\n const bounds = this.updateAABBBounds(attribute, resolvedGraphicTheme, this._AABBBounds, full) as AABBBounds;\n\n const { boundsPadding = resolvedGraphicTheme.boundsPadding } = attribute;\n const paddingArray = parsePadding(boundsPadding);\n if (paddingArray) {\n bounds.expand(paddingArray);\n }\n\n this.clearUpdateBoundTag();\n return bounds;\n }\n\n updatePathProxyAABBBounds(aabbBounds: IAABBBounds): boolean {\n const path = typeof this.pathProxy === 'function' ? (this.pathProxy as any)(this.attribute) : this.pathProxy;\n if (!path) {\n return false;\n }\n const boundsContext = new BoundsContext(aabbBounds);\n renderCommandList(path.commandList, boundsContext, 0, 0);\n return true;\n }\n\n protected tryUpdateGlobalAABBBounds(): IAABBBounds {\n const b = this.AABBBounds;\n if (!this._globalAABBBounds) {\n this._globalAABBBounds = b.clone();\n } else {\n this._globalAABBBounds.setValue(b.x1, b.y1, b.x2, b.y2);\n }\n if (this._globalAABBBounds.empty()) {\n return this._globalAABBBounds;\n }\n // 使用parent的grloalAABBBounds\n // todo: 考虑是否需要性能优化\n if (this.parent) {\n this._globalAABBBounds.transformWithMatrix((this.parent as IGroup).globalTransMatrix);\n }\n return this._globalAABBBounds;\n }\n\n /**\n * 这里都是叶子节点的UpdateGlobalTransMatrix函数,只要走进来就直接计算\n * @param clearTag\n * @returns\n */\n protected tryUpdateGlobalTransMatrix(clearTag: boolean = true): Matrix {\n if (!this._globalTransMatrix) {\n this._globalTransMatrix = this.parent\n ? (this.parent as IGroup).globalTransMatrix.clone()\n : this.transMatrix.clone();\n } else if (this.parent) {\n const m = (this.parent as IGroup).globalTransMatrix;\n this._globalTransMatrix.setValue(m.a, m.b, m.c, m.d, m.e, m.f);\n }\n if (this.shouldUpdateGlobalMatrix()) {\n this.doUpdateGlobalMatrix();\n }\n return this._globalTransMatrix;\n }\n\n shouldUpdateGlobalMatrix(): boolean {\n return true;\n }\n\n protected tryUpdateLocalTransMatrix(clearTag: boolean = true) {\n if (!this._transMatrix) {\n this._transMatrix = new Matrix();\n }\n if (this.shouldUpdateLocalMatrix()) {\n this.doUpdateLocalMatrix();\n clearTag && this.clearUpdateLocalPositionTag();\n }\n return this._transMatrix;\n }\n\n shouldUpdateAABBBounds(): boolean {\n // 如果存在shadowRoot,那么判断shadowRoot是否需要更新\n if (this.shadowRoot) {\n return (\n (!!(this._updateTag & UpdateTag.UPDATE_BOUNDS) || this.shadowRoot.shouldUpdateAABBBounds()) &&\n this.getGraphicService().validCheck(\n this.attribute,\n this.getGraphicTheme() as Required<T>,\n this._AABBBounds,\n this\n )\n );\n }\n return (\n !!(this._updateTag & UpdateTag.UPDATE_BOUNDS) &&\n this.getGraphicService().validCheck(this.attribute, this.getGraphicTheme() as Required<T>, this._AABBBounds, this)\n );\n }\n\n // 自身变化导致的AABBBounds的变化\n shouldSelfChangeUpdateAABBBounds(): boolean {\n // 如果存在shadowRoot,那么判断shadowRoot是否需要更新\n if (this.shadowRoot) {\n return !!(this._updateTag & UpdateTag.UPDATE_BOUNDS) || this.shadowRoot.shouldUpdateAABBBounds();\n }\n return !!(this._updateTag & UpdateTag.UPDATE_BOUNDS);\n }\n\n protected shouldUpdateLocalMatrix(): boolean {\n return !!(this._updateTag & UpdateTag.UPDATE_LOCAL_MATRIX);\n }\n\n isValid(): boolean {\n const attribute = this.attribute;\n return Number.isFinite((attribute.x ?? 0) + (attribute.y ?? 0));\n }\n\n protected _validNumber(num?: number) {\n return num == null || Number.isFinite(num);\n }\n\n shouldUpdateShape(): boolean {\n return !!(this._updateTag & UpdateTag.UPDATE_SHAPE);\n }\n clearUpdateShapeTag() {\n this._updateTag &= UpdateTag.CLEAR_SHAPE;\n }\n\n /**\n * 是否包含某个点(点需要是全局坐标系)\n * @param x\n * @param y\n * @param mode\n * @returns\n */\n containsPoint(x: number, y: number, mode: IContainPointMode, picker?: IPickerService): boolean {\n if (!picker) {\n return false;\n }\n if (mode === IContainPointMode.GLOBAL) {\n // 转换x,y更精准\n const point = new Point(x, y);\n if (this.parent) {\n this.parent.globalTransMatrix.transformPoint(point, point);\n }\n x = point.x;\n y = point.y;\n }\n return picker.containsPoint(this, { x, y });\n }\n\n protected setWidthHeightWithoutTransform(aabbBounds: IAABBBounds) {\n this.widthWithoutTransform = aabbBounds.x2 - aabbBounds.x1;\n this.heightWithoutTransform = aabbBounds.y2 - aabbBounds.y1;\n }\n setAttributesAndPreventAnimate(\n params: Partial<T>,\n forceUpdateTag: boolean = false,\n context?: ISetAttributeContext,\n ignorePriority?: boolean\n ) {\n if (!params) {\n return;\n }\n const keys = Object.keys(params);\n this.captureTransientFromAttrsBeforePreventAnimate(params, keys, context);\n this.syncFinalAttributesFromUpdateContext(context);\n this.visitTrackedAnimates(animate => {\n // 优先级最高的动画(一般是循环动画),不屏蔽\n if (animate.priority === Infinity && !ignorePriority) {\n return;\n }\n animate.preventAttrs(keys);\n });\n this.applyTransientAttributes(params, forceUpdateTag, context);\n }\n\n protected syncFinalAttributesFromUpdateContext(context?: ISetAttributeContext): void {\n const updateType = context?.type;\n if (\n updateType === AttributeUpdateType.STATE ||\n (updateType != null &&\n updateType >= AttributeUpdateType.ANIMATE_BIND &&\n updateType <= AttributeUpdateType.ANIMATE_END)\n ) {\n return;\n }\n\n const finalAttrs = (this.context as Record<string, any> | undefined)?.finalAttrs;\n const setFinalAttributes = (this as any).setFinalAttributes;\n if (finalAttrs && typeof setFinalAttributes === 'function') {\n setFinalAttributes.call(this, finalAttrs);\n }\n }\n\n protected captureTransientFromAttrsBeforePreventAnimate(\n params: Partial<T>,\n keys: string[],\n context?: ISetAttributeContext\n ) {\n const graphicContext = this.context as Record<string, any> | undefined;\n const diffAttrs = (graphicContext?.diffAttrs as Record<string, any> | undefined) ?? (params as Record<string, any>);\n const updateType = context?.type;\n if (\n !keys.length ||\n !diffAttrs ||\n updateType === AttributeUpdateType.STATE ||\n (updateType != null &&\n updateType >= AttributeUpdateType.ANIMATE_BIND &&\n updateType <= AttributeUpdateType.ANIMATE_END)\n ) {\n return;\n }\n\n const sameDiffAttrs = this.transientFromAttrsBeforePreventAnimateDiffAttrs === diffAttrs;\n let fromAttrs: Record<string, any> | null = sameDiffAttrs\n ? this.transientFromAttrsBeforePreventAnimate ?? null\n : null;\n if (!sameDiffAttrs) {\n this.transientFromAttrsBeforePreventAnimate = null;\n this.transientFromAttrsBeforePreventAnimateDiffAttrs = null;\n }\n let captured = false;\n for (let i = 0; i < keys.length; i++) {\n const key = keys[i];\n if (!Object.prototype.hasOwnProperty.call(diffAttrs, key)) {\n continue;\n }\n\n const previousValue = (this.attribute as Record<string, any>)[key];\n const nextValue = (params as Record<string, any>)[key];\n if (isEqual(previousValue, nextValue)) {\n continue;\n }\n\n fromAttrs ?? (fromAttrs = {});\n fromAttrs[key] = cloneAttributeValue(previousValue);\n captured = true;\n }\n\n if (captured) {\n this.transientFromAttrsBeforePreventAnimate = fromAttrs;\n this.transientFromAttrsBeforePreventAnimateDiffAttrs = diffAttrs;\n }\n }\n\n protected consumeTransientFromAttrsBeforePreventAnimate(diffAttrs: Record<string, any>): Record<string, any> | null {\n const transientFromAttrs = this.transientFromAttrsBeforePreventAnimate;\n const sourceDiffAttrs = this.transientFromAttrsBeforePreventAnimateDiffAttrs;\n if (!transientFromAttrs || !sourceDiffAttrs) {\n return null;\n }\n for (const key in diffAttrs) {\n if (\n Object.prototype.hasOwnProperty.call(diffAttrs, key) &&\n (!Object.prototype.hasOwnProperty.call(sourceDiffAttrs, key) || !isEqual(sourceDiffAttrs[key], diffAttrs[key]))\n ) {\n return null;\n }\n }\n\n let fromAttrs: Record<string, any> | null = null;\n let remaining = false;\n for (const key in transientFromAttrs) {\n if (!Object.prototype.hasOwnProperty.call(transientFromAttrs, key)) {\n continue;\n }\n\n if (Object.prototype.hasOwnProperty.call(diffAttrs, key)) {\n fromAttrs ?? (fromAttrs = {});\n fromAttrs[key] = transientFromAttrs[key];\n continue;\n }\n\n remaining = true;\n }\n\n if (remaining) {\n const nextTransientFromAttrs: Record<string, any> = {};\n for (const key in transientFromAttrs) {\n if (\n Object.prototype.hasOwnProperty.call(transientFromAttrs, key) &&\n !Object.prototype.hasOwnProperty.call(diffAttrs, key)\n ) {\n nextTransientFromAttrs[key] = transientFromAttrs[key];\n }\n }\n this.transientFromAttrsBeforePreventAnimate = nextTransientFromAttrs;\n } else {\n this.transientFromAttrsBeforePreventAnimate = null;\n this.transientFromAttrsBeforePreventAnimateDiffAttrs = null;\n }\n\n return fromAttrs;\n }\n\n setAttributes(params: Partial<T>, forceUpdateTag: boolean = false, context?: ISetAttributeContext) {\n if (!params) {\n return;\n }\n params =\n (this.onBeforeAttributeUpdate && this.onBeforeAttributeUpdate(params, this.attribute, null, context)) || params;\n\n if (params.background) {\n this.loadImage(params.background, true);\n }\n if (params.texture && isExternalTexture(params.texture)) {\n this.loadImage(params.texture, false);\n }\n if (params.shadowGraphic) {\n this.setShadowGraphic(params.shadowGraphic);\n }\n this._setAttributes(params, forceUpdateTag, context);\n }\n\n _setAttributes(params: Partial<T>, forceUpdateTag: boolean = false, context?: ISetAttributeContext) {\n if (this.canCommitBaseAttributesByTouchedKeys()) {\n this.commitBaseAttributesByTouchedKeys(params, forceUpdateTag, context);\n return;\n }\n this.detachAttributeFromBaseAttributes();\n this.applyBaseAttributes(params);\n this.commitBaseAttributeMutation(forceUpdateTag, context);\n }\n\n setAttribute(key: string, value: any, forceUpdateTag?: boolean, context?: ISetAttributeContext) {\n const params =\n this.onBeforeAttributeUpdate && this.onBeforeAttributeUpdate({ [key]: value }, this.attribute, key, context);\n if (!params) {\n if (this.canCommitBaseAttributesByTouchedKeys()) {\n this.commitBaseAttributeBySingleKey(key, value, !!forceUpdateTag, context);\n } else {\n const nextAttrs = { [key]: value } as Partial<T>;\n this.applyBaseAttributes(nextAttrs);\n this.commitBaseAttributeMutation(!!forceUpdateTag, context);\n }\n } else {\n this._setAttributes(params, forceUpdateTag, context);\n }\n if (key === 'background') {\n this.loadImage(value, true);\n } else if (key === 'texture' && isExternalTexture(value)) {\n this.loadImage(value, false);\n } else if (key === 'shadowGraphic') {\n this.setShadowGraphic(value);\n }\n }\n\n protected needUpdateTags(keys: string[], k: string[] = GRAPHIC_UPDATE_TAG_KEY): boolean {\n for (let i = 0; i < k.length; i++) {\n const attrKey = k[i];\n if (keys.indexOf(attrKey) !== -1) {\n return true;\n }\n }\n return false;\n }\n\n protected needUpdateTag(key: string, k: string[] = GRAPHIC_UPDATE_TAG_KEY): boolean {\n for (let i = 0; i < k.length; i++) {\n const attrKey = k[i];\n if (key === attrKey) {\n return true;\n }\n }\n return false;\n }\n\n initAttributes(params: T) {\n // this.setAttributes(params, true);\n const context = { type: AttributeUpdateType.INIT };\n params =\n (this.onBeforeAttributeUpdate && this.onBeforeAttributeUpdate(params, this.attribute, null, context)) || params;\n this.attribute = params;\n this._baseAttributes = undefined;\n this.resolvedStatePatch = undefined;\n this.attributeMayContainTransientAttrs = false;\n this.valid = this.isValid();\n if (params.background) {\n this.loadImage(params.background, true);\n }\n if (params.texture && isExternalTexture(params.texture)) {\n this.loadImage(params.texture, false);\n }\n if (params.shadowGraphic) {\n this.setShadowGraphic(params.shadowGraphic);\n }\n this._updateTag = UpdateTag.INIT;\n this.valid = this.isValid();\n this.onAttributeUpdate(context);\n }\n\n translate(x: number, y: number) {\n if (x === 0 && y === 0) {\n return this;\n }\n const context = {\n type: AttributeUpdateType.TRANSLATE\n };\n const params =\n this.onBeforeAttributeUpdate &&\n this.onBeforeAttributeUpdate({ x, y }, this.attribute, tempConstantXYKey, context);\n if (params) {\n x = params.x;\n y = params.y;\n delete params.x;\n delete params.y;\n }\n const attribute = this.baseAttributes as T;\n const postMatrix = attribute.postMatrix;\n const nextAttrs = (params || {}) as Partial<T>;\n if (!postMatrix) {\n (nextAttrs as any).x = (attribute.x ?? DefaultTransform.x) + x;\n (nextAttrs as any).y = (attribute.y ?? DefaultTransform.y) + y;\n } else {\n const nextPostMatrix = postMatrix.clone();\n application.transformUtil.fromMatrix(nextPostMatrix, nextPostMatrix).translate(x, y);\n (nextAttrs as any).postMatrix = nextPostMatrix;\n }\n\n this.commitInternalBaseAttributes(nextAttrs, context);\n return this;\n }\n\n translateTo(x: number, y: number) {\n const attribute = this.baseAttributes as T;\n if (attribute.x === x && attribute.y === y) {\n return this;\n }\n const context = {\n type: AttributeUpdateType.TRANSLATE_TO\n };\n const params =\n this.onBeforeAttributeUpdate &&\n this.onBeforeAttributeUpdate({ x, y }, this.attribute, tempConstantXYKey, context);\n if (params) {\n this.commitInternalBaseAttributes(params, context);\n return this;\n }\n this.commitInternalBaseAttributes({ x, y } as Partial<T>, context);\n return this;\n }\n\n scale(scaleX: number, scaleY: number, scaleCenter?: IPointLike) {\n if (scaleX === 1 && scaleY === 1) {\n return this;\n }\n const context = {\n type: AttributeUpdateType.SCALE\n };\n const params =\n this.onBeforeAttributeUpdate &&\n this.onBeforeAttributeUpdate({ scaleX, scaleY, scaleCenter }, this.attribute, tempConstantScaleXYKey, context);\n if (params) {\n scaleX = params.scaleX;\n scaleY = params.scaleY;\n delete params.scaleX;\n delete params.scaleY;\n }\n const attribute = this.baseAttributes as T;\n const nextAttrs = (params || {}) as Partial<T>;\n if (!scaleCenter) {\n (nextAttrs as any).scaleX = (attribute.scaleX ?? DefaultTransform.scaleX) * scaleX;\n (nextAttrs as any).scaleY = (attribute.scaleY ?? DefaultTransform.scaleY) * scaleY;\n } else {\n let { postMatrix } = this.baseAttributes as T;\n if (!postMatrix) {\n postMatrix = new Matrix();\n } else {\n postMatrix = postMatrix.clone();\n }\n application.transformUtil.fromMatrix(postMatrix, postMatrix).scale(scaleX, scaleY, scaleCenter);\n (nextAttrs as any).postMatrix = postMatrix;\n }\n this.commitInternalBaseAttributes(nextAttrs, context);\n return this;\n }\n\n scaleTo(scaleX: number, scaleY: number) {\n const attribute = this.baseAttributes as T;\n if (attribute.scaleX === scaleX && attribute.scaleY === scaleY) {\n return this;\n }\n const context = {\n type: AttributeUpdateType.SCALE_TO\n };\n const params =\n this.onBeforeAttributeUpdate &&\n this.onBeforeAttributeUpdate({ scaleX, scaleY }, this.attribute, tempConstantScaleXYKey, context);\n if (params) {\n this.commitInternalBaseAttributes(params, context);\n return this;\n }\n this.commitInternalBaseAttributes({ scaleX, scaleY } as Partial<T>, context);\n return this;\n }\n\n rotate(angle: number, rotateCenter?: IPointLike) {\n if (angle === 0) {\n return this;\n }\n const context = { type: AttributeUpdateType.ROTATE };\n const params =\n this.onBeforeAttributeUpdate &&\n this.onBeforeAttributeUpdate({ angle, rotateCenter }, this.attribute, tempConstantAngleKey, context);\n if (params) {\n delete params.angle;\n }\n const attribute = this.baseAttributes as T;\n const nextAttrs = (params || {}) as Partial<T>;\n if (!rotateCenter) {\n (nextAttrs as any).angle = (attribute.angle ?? DefaultTransform.angle) + angle;\n } else {\n let { postMatrix } = this.baseAttributes as T;\n if (!postMatrix) {\n postMatrix = new Matrix();\n } else {\n postMatrix = postMatrix.clone();\n }\n application.transformUtil.fromMatrix(postMatrix, postMatrix).rotate(angle, rotateCenter);\n (nextAttrs as any).postMatrix = postMatrix;\n }\n this.commitInternalBaseAttributes(nextAttrs, context);\n return this;\n }\n\n rotateTo(angle: number) {\n const attribute = this.baseAttributes as T;\n if (attribute.angle === angle) {\n return this;\n }\n const context = {\n type: AttributeUpdateType.ROTATE_TO\n };\n const params =\n this.onBeforeAttributeUpdate &&\n this.onBeforeAttributeUpdate(angle, this.attribute, tempConstantAngleKey, context);\n if (params) {\n this.commitInternalBaseAttributes(params, context);\n return this;\n }\n this.commitInternalBaseAttributes({ angle } as Partial<T>, context);\n return this;\n }\n\n skewTo(b: number, c: number) {\n return this;\n }\n\n onAttributeUpdate(context?: ISetAttributeContext) {\n if (context && context.skipUpdateCallback) {\n return;\n }\n this.getGraphicService().onAttributeUpdate(this);\n this._emitCustomEvent('afterAttributeUpdate', context);\n }\n\n // hasListener(event: string) {\n // const prefix = this.prefixed;\n // var evt = prefix ? prefix + event : event;\n // return this._events[evt];\n // }\n\n update(d?: { bounds: boolean; trans: boolean }) {\n if (d) {\n d.bounds && this.tryUpdateAABBBounds();\n d.trans && this.tryUpdateLocalTransMatrix();\n } else {\n this.tryUpdateAABBBounds();\n this.tryUpdateLocalTransMatrix();\n }\n }\n\n hasState(stateName?: string) {\n if (!this.currentStates || !this.currentStates.length) {\n return false;\n }\n\n if (!isNil(stateName)) {\n return this.currentStates.includes(stateName);\n }\n\n return true;\n }\n getState(stateName: string): Partial<T> | StateDefinition<T> | undefined {\n return this.states?.[stateName];\n }\n\n protected getStateResolveBaseAttrs(): Partial<T> {\n return (this.baseAttributes ?? this.attribute) as Partial<T>;\n }\n\n protected syncStateResolveContext(stateResolveBaseAttrs: Partial<T> = this.getStateResolveBaseAttrs()): Partial<T> {\n this.stateEngine?.setResolveContext(this, stateResolveBaseAttrs);\n return stateResolveBaseAttrs;\n }\n\n protected ensureStateEngine(stateResolveBaseAttrs: Partial<T> = this.getStateResolveBaseAttrs()) {\n const { compiledDefinitions } = this.resolveEffectiveCompiledDefinitions();\n this.compiledStateDefinitions = compiledDefinitions;\n\n if (!compiledDefinitions) {\n this.stateEngine = undefined;\n this.stateEngineCompiledDefinitions = undefined;\n } else if (\n !this.stateEngine ||\n this.stateEngineCompiledDefinitions !== compiledDefinitions ||\n this.stateEngineStateSort !== this.stateSort ||\n this.stateEngineMergeMode !== this.stateMergeMode\n ) {\n this.stateEngine = new StateEngine<T>({\n compiledDefinitions,\n stateSort: this.stateSort,\n mergeMode: this.stateMergeMode\n });\n this.stateEngineCompiledDefinitions = compiledDefinitions;\n this.stateEngineStateSort = this.stateSort;\n this.stateEngineMergeMode = this.stateMergeMode;\n }\n\n this.syncStateResolveContext(stateResolveBaseAttrs);\n\n if (\n this.stateEngine &&\n this.currentStates &&\n !this.sameStateNames(this.stateEngine.activeStates, this.currentStates)\n ) {\n this.stateEngine.applyStates(this.currentStates);\n }\n\n return this.stateEngine;\n }\n\n protected toGraphicStateTransition(result: StateTransitionResult): GraphicStateTransition {\n return {\n changed: result.changed,\n states: [...result.activeStates],\n effectiveStates: [...result.effectiveStates]\n };\n }\n\n protected sortLocalStates(states: readonly string[]): string[] {\n return this.stateSort ? [...states].sort(this.stateSort) : [...states];\n }\n\n protected resolveLocalUseStatesTransition(states: readonly string[]): GraphicStateTransition {\n if (!states.length) {\n return this.resolveLocalClearStatesTransition();\n }\n\n const previousStates = this.currentStates ?? EMPTY_STATE_NAMES;\n const changed =\n previousStates.length !== states.length || states.some((stateName, index) => previousStates[index] !== stateName);\n const nextStates = this.sortLocalStates(states);\n\n return {\n changed,\n states: changed ? nextStates : [...previousStates]\n };\n }\n\n protected resolveLocalClearStatesTransition(): GraphicStateTransition {\n return {\n changed: this.hasState(),\n states: []\n };\n }\n\n protected resolveUseStatesTransition(\n states: string[],\n stateResolveBaseAttrs: Partial<T> = this.getStateResolveBaseAttrs()\n ): GraphicStateTransition {\n const stateEngine = this.ensureStateEngine(stateResolveBaseAttrs);\n return stateEngine\n ? this.toGraphicStateTransition(stateEngine.applyStates(states))\n : this.resolveLocalUseStatesTransition(states);\n }\n\n protected resolveClearStatesTransition(): GraphicStateTransition {\n const stateEngine = this.ensureStateEngine();\n return stateEngine\n ? this.toGraphicStateTransition(stateEngine.clearStates())\n : this.resolveLocalClearStatesTransition();\n }\n\n protected resolveAddStateTransition(stateName: string, keepCurrentStates?: boolean): GraphicStateTransition {\n const stateEngine = this.ensureStateEngine();\n if (stateEngine) {\n return this.toGraphicStateTransition(stateEngine.addState(stateName, keepCurrentStates));\n }\n\n if (\n this.currentStates &&\n this.currentStates.includes(stateName) &&\n (keepCurrentStates || this.currentStates.length === 1)\n ) {\n return {\n changed: false,\n states: [...this.currentStates]\n };\n }\n\n const nextStates =\n keepCurrentStates && this.currentStates?.length ? this.currentStates.concat([stateName]) : [stateName];\n\n return this.resolveLocalUseStatesTransition(nextStates);\n }\n\n protected resolveRemoveStateTransition(stateName: string | string[]): GraphicStateTransition {\n const stateEngine = this.ensureStateEngine();\n if (stateEngine) {\n return this.toGraphicStateTransition(stateEngine.removeState(stateName));\n }\n\n if (!this.currentStates) {\n return {\n changed: false,\n states: []\n };\n }\n\n const filter = Array.isArray(stateName) ? (s: string) => !stateName.includes(s) : (s: string) => s !== stateName;\n const nextStates = this.currentStates.filter(filter);\n\n if (nextStates.length === this.currentStates.length) {\n return {\n changed: false,\n states: [...this.currentStates]\n };\n }\n\n return this.resolveLocalUseStatesTransition(nextStates);\n }\n\n protected resolveToggleStateTransition(stateName: string): GraphicStateTransition {\n const stateEngine = this.ensureStateEngine();\n if (stateEngine) {\n return this.toGraphicStateTransition(stateEngine.toggleState(stateName));\n }\n\n if (this.hasState(stateName)) {\n return this.resolveRemoveStateTransition(stateName);\n }\n\n const nextStates = this.currentStates ? this.currentStates.slice() : [];\n nextStates.push(stateName);\n\n return this.resolveLocalUseStatesTransition(nextStates);\n }\n\n protected resolveGraphicStateTransition(\n states: string[],\n forceResolverRefresh: boolean = false\n ): ResolvedGraphicStateTransition<T> {\n const stateResolveBaseAttrs = this.getStateResolveBaseAttrs();\n const stateEngine = this.ensureStateEngine(stateResolveBaseAttrs);\n if (forceResolverRefresh) {\n stateEngine?.invalidateResolverCache();\n }\n const transition = stateEngine\n ? this.toGraphicStateTransition(stateEngine.applyStates(states))\n : this.resolveLocalUseStatesTransition(states);\n const resolvedStateAttrs =\n this.stateEngine && this.compiledStateDefinitions ? { ...(this.stateEngine.resolvedPatch as Partial<T>) } : {};\n\n const effectiveStates = transition.effectiveStates ?? transition.states;\n\n return {\n transition,\n effectiveStates: effectiveStates as string[],\n resolvedStateAttrs\n };\n }\n\n protected normalizeSetStatesOptions(options?: boolean | ISetStatesOptions): {\n hasAnimation?: boolean;\n animateSameStatePatchChange: boolean;\n shouldRefreshSameStatePatch: boolean;\n } {\n if (options && typeof options === 'object') {\n return {\n hasAnimation: options.animate,\n animateSameStatePatchChange: options.animateSameStatePatchChange === true,\n shouldRefreshSameStatePatch: true\n };\n }\n\n return {\n hasAnimation: typeof options === 'boolean' ? options : undefined,\n animateSameStatePatchChange: false,\n shouldRefreshSameStatePatch: false\n };\n }\n\n protected sameStatePatches(left?: Partial<T>, right?: Partial<T>): boolean {\n const leftRecord = (left ?? {}) as Record<string, unknown>;\n const rightRecord = (right ?? {}) as Record<string, unknown>;\n const keys = new Set<string>([...Object.keys(leftRecord), ...Object.keys(rightRecord)]);\n\n for (const key of keys) {\n const hasLeft = Object.prototype.hasOwnProperty.call(leftRecord, key);\n const hasRight = Object.prototype.hasOwnProperty.call(rightRecord, key);\n if (hasLeft !== hasRight) {\n return false;\n }\n if (!areAttributeValuesEqual(leftRecord[key], rightRecord[key])) {\n return false;\n }\n }\n\n return true;\n }\n\n protected commitSameStatePatchRefresh(\n states: string[],\n hasAnimation?: boolean,\n animateSameStatePatchChange: boolean = false\n ): void {\n const previousStates = this.currentStates ?? EMPTY_STATE_NAMES;\n const previousResolvedStatePatch = this.resolvedStatePatch;\n const { transition, effectiveStates, resolvedStateAttrs } = this.resolveGraphicStateTransition(states, true);\n const patchChanged = !this.sameStatePatches(previousResolvedStatePatch, resolvedStateAttrs);\n\n if (\n patchChanged &&\n !this.beforeStateUpdate(resolvedStateAttrs, previousStates, transition.states, hasAnimation, false)\n ) {\n return;\n }\n\n this.currentStates = transition.states;\n this.effectiveStates = [...effectiveStates];\n this.resolvedStatePatch = resolvedStateAttrs;\n this.sharedStateDirty = false;\n this.syncSharedStateActiveRegistrations();\n\n if (!patchChanged) {\n return;\n }\n\n if (hasAnimation && animateSameStatePatchChange) {\n this._syncFinalAttributeFromStaticTruth();\n this.applyStateAttrs(\n resolvedStateAttrs,\n transition.states,\n hasAnimation,\n false,\n undefined,\n this.buildRemovedStateAnimationAttrs(resolvedStateAttrs, previousResolvedStatePatch)\n );\n } else {\n this.stopStateAnimates();\n if (this.attributeMayContainTransientAttrs) {\n this._restoreAttributeFromStaticTruth({ type: AttributeUpdateType.STATE });\n } else {\n this.restoreAttributeFromStatePatchDelta(previousResolvedStatePatch, this.resolvedStatePatch, {\n type: AttributeUpdateType.STATE\n });\n }\n this.emitStateUpdateEvent();\n }\n }\n\n protected resolveStateAnimateConfig(animateConfig?: IAnimateConfig) {\n return animateConfig ?? this.stateAnimateConfig ?? this.context?.stateAnimateConfig ?? DefaultStateAnimateConfig;\n }\n\n applyStateAttrs(\n attrs: Partial<T>,\n stateNames: string[],\n hasAnimation?: boolean,\n isClear?: boolean,\n animateConfig?: IAnimateConfig,\n extraAnimateAttrs?: Partial<T>\n ) {\n const resolvedAnimateConfig = hasAnimation ? this.resolveStateAnimateConfig(animateConfig) : undefined;\n const transitionOptions = resolvedAnimateConfig\n ? {\n animateConfig: resolvedAnimateConfig,\n extraAnimateAttrs: extraAnimateAttrs as Record<string, unknown>,\n shouldSkipDefaultAttribute: this.shouldSkipStateTransitionDefaultAttribute.bind(this) as (\n key: string,\n targetAttrs: Record<string, unknown>\n ) => boolean\n }\n : undefined;\n\n if (isClear) {\n this.getStateTransitionOrchestrator().applyClearTransition(this as any, attrs, hasAnimation, transitionOptions);\n return;\n }\n\n const plan = this.getStateTransitionOrchestrator().analyzeTransition(attrs, hasAnimation, {\n noWorkAnimateAttr: this.getNoWorkAnimateAttr(),\n animateConfig: resolvedAnimateConfig,\n extraAnimateAttrs: extraAnimateAttrs as Record<string, unknown>,\n shouldSkipDefaultAttribute: this.shouldSkipStateTransitionDefaultAttribute.bind(this) as (\n key: string,\n targetAttrs: Record<string, unknown>\n ) => boolean\n });\n\n this.getStateTransitionOrchestrator().applyTransition(this as any, plan, hasAnimation, transitionOptions);\n }\n\n updateNormalAttrs(_stateAttrs: Partial<T>) {\n void _stateAttrs;\n }\n\n protected getStateTransitionDefaultAttribute(key: string, targetAttrs?: Partial<T>) {\n return this.getDefaultAttribute(key);\n }\n\n protected shouldSkipStateTransitionDefaultAttribute(_key: string, _targetAttrs?: Partial<T>): boolean {\n return false;\n }\n\n protected stopStateAnimates(type: 'start' | 'end' = 'end') {\n const stopAnimationState = (this as any).stopAnimationState;\n if (typeof stopAnimationState === 'function') {\n stopAnimationState.call(this, 'state', type);\n return;\n }\n if (!this.mayHaveTrackedAnimates()) {\n return;\n }\n\n const stateAnimates: IAnimate[] = [];\n this.visitTrackedAnimates(animate => {\n if ((animate as any).stateNames) {\n stateAnimates.push(animate);\n }\n });\n stateAnimates.forEach(animate => animate.stop(type));\n }\n\n clearStates(hasAnimation?: boolean) {\n const previousStates = this.currentStates ?? EMPTY_STATE_NAMES;\n const previousResolvedStatePatch = this.resolvedStatePatch;\n const transition = this.resolveClearStatesTransition();\n if (!transition.changed && previousStates.length === 0) {\n this.currentStates = [];\n this.effectiveStates = [];\n this.resolvedStatePatch = undefined;\n this.sharedStateDirty = false;\n this.clearSharedStateActiveRegistrations();\n return;\n }\n const resolvedStateAttrs =\n hasAnimation || this.hasCustomEvent('beforeStateUpdate')\n ? (cloneAttributeValue((this.baseAttributes ?? {}) as Partial<T>) as Partial<T>)\n : ((this.baseAttributes ?? {}) as Partial<T>);\n\n if (\n transition.changed &&\n !this.beforeStateUpdate(resolvedStateAttrs, previousStates, transition.states, hasAnimation, true)\n ) {\n return;\n }\n\n this.currentStates = transition.states;\n this.effectiveStates = [];\n this.resolvedStatePatch = undefined;\n this.sharedStateDirty = false;\n this.clearSharedStateActiveRegistrations();\n if (hasAnimation) {\n this._syncFinalAttributeFromStaticTruth();\n this.applyStateAttrs(\n resolvedStateAttrs,\n transition.states,\n hasAnimation,\n true,\n undefined,\n this.buildRemovedStateAnimationAttrs(resolvedStateAttrs, previousResolvedStatePatch)\n );\n } else {\n this.stopStateAnimates();\n if (this.attributeMayContainTransientAttrs) {\n this._restoreAttributeFromStaticTruth({ type: AttributeUpdateType.STATE });\n } else {\n this.restoreAttributeFromStatePatchDelta(previousResolvedStatePatch, undefined, {\n type: AttributeUpdateType.STATE\n });\n }\n this.emitStateUpdateEvent();\n }\n }\n\n removeState(stateName: string | string[], hasAnimation?: boolean) {\n const transition = this.resolveRemoveStateTransition(stateName);\n if (transition.changed) {\n this.useStates(transition.states, hasAnimation);\n }\n }\n\n toggleState(stateName: string, hasAnimation?: boolean) {\n const transition = this.resolveToggleStateTransition(stateName);\n if (transition.changed) {\n this.useStates(transition.states, hasAnimation);\n }\n }\n\n addState(stateName: string, keepCurrentStates?: boolean, hasAnimation?: boolean) {\n const transition = this.resolveAddStateTransition(stateName, keepCurrentStates);\n if (!transition.changed) {\n return;\n }\n this.useStates(transition.states, hasAnimation);\n }\n\n setStates(states?: string[] | null, hasAnimation?: boolean): void;\n setStates(states?: string[] | null, options?: ISetStatesOptions): void;\n setStates(states?: string[] | null, options?: boolean | ISetStatesOptions) {\n const { hasAnimation, animateSameStatePatchChange, shouldRefreshSameStatePatch } =\n this.normalizeSetStatesOptions(options);\n const nextStates = states?.length ? states : EMPTY_STATE_NAMES;\n const hasCurrentState =\n !!this.currentStates?.length ||\n !!this.effectiveStates?.length ||\n !!this.resolvedStatePatch ||\n !!this.registeredActiveScopes?.size;\n\n if (!nextStates.length) {\n if (!hasCurrentState && !this.sharedStateDirty) {\n return;\n }\n this.clearStates(hasAnimation);\n return;\n }\n\n if (this.sameStateNames(this.currentStates, nextStates)) {\n if (shouldRefreshSameStatePatch) {\n this.commitSameStatePatchRefresh(nextStates as string[], hasAnimation, animateSameStatePatchChange);\n return;\n }\n if (this.sharedStateDirty) {\n this.refreshSharedStateBeforeRender();\n }\n return;\n }\n\n this.useStates(nextStates as string[], hasAnimation);\n }\n\n useStates(states: string[], hasAnimation?: boolean) {\n if (!states.length) {\n this.clearStates(hasAnimation);\n return;\n }\n\n const previousStates = this.currentStates ?? EMPTY_STATE_NAMES;\n const previousResolvedStatePatch = this.resolvedStatePatch;\n const { transition, effectiveStates, resolvedStateAttrs } = this.resolveGraphicStateTransition(states);\n if (!transition.changed && this.sameStateNames(previousStates, transition.states)) {\n return;\n }\n\n if (!this.beforeStateUpdate(resolvedStateAttrs, previousStates, transition.states, hasAnimation, false)) {\n return;\n }\n\n this.currentStates = transition.states;\n this.effectiveStates = [...effectiveStates];\n this.resolvedStatePatch = resolvedStateAttrs;\n this.sharedStateDirty = false;\n this.syncSharedStateActiveRegistrations();\n if (hasAnimation) {\n this._syncFinalAttributeFromStaticTruth();\n this.applyStateAttrs(\n resolvedStateAttrs,\n transition.states,\n hasAnimation,\n false,\n undefined,\n this.buildRemovedStateAnimationAttrs(resolvedStateAttrs, previousResolvedStatePatch)\n );\n } else {\n this.stopStateAnimates();\n if (this.attributeMayContainTransientAttrs) {\n this._restoreAttributeFromStaticTruth({ type: AttributeUpdateType.STATE });\n } else {\n this.restoreAttributeFromStatePatchDelta(previousResolvedStatePatch, this.resolvedStatePatch, {\n type: AttributeUpdateType.STATE\n });\n }\n this.emitStateUpdateEvent();\n }\n }\n\n invalidateResolver() {\n if (!this.stateEngine || !this.currentStates?.length || !this.compiledStateDefinitions) {\n return;\n }\n\n this.syncStateResolveContext();\n this.resolverEpoch = (this.resolverEpoch ?? 0) + 1;\n this.stateEngine.invalidateResolverCache();\n const transition = this.stateEngine.applyStates(this.currentStates);\n const resolvedStateAttrs = { ...(this.stateEngine.resolvedPatch as Partial<T>) };\n this.effectiveStates = [...transition.effectiveStates];\n this.resolvedStatePatch = resolvedStateAttrs;\n this.sharedStateDirty = false;\n this.syncSharedStateActiveRegistrations();\n this.stopStateAnimates();\n this._restoreAttributeFromStaticTruth({ type: AttributeUpdateType.STATE });\n this.emitStateUpdateEvent();\n }\n\n private sameStateNames(left?: readonly string[], right?: readonly string[]): boolean {\n const normalizedLeft = left ?? [];\n const normalizedRight = right ?? [];\n if (normalizedLeft.length !== normalizedRight.length) {\n return false;\n }\n\n for (let index = 0; index < normalizedLeft.length; index++) {\n if (normalizedLeft[index] !== normalizedRight[index]) {\n return false;\n }\n }\n\n return true;\n }\n\n addUpdateBoundTag() {\n this._updateTag |= UpdateTag.UPDATE_BOUNDS; // for bounds\n if (this.parent) {\n this.parent.addChildUpdateBoundTag();\n }\n if (this.glyphHost) {\n this.glyphHost.addUpdateBoundTag();\n }\n }\n\n addUpdatePaintTag() {\n this._updateTag |= UpdateTag.UPDATE_PAINT;\n }\n\n addUpdateShapeTag() {\n this._updateTag |= UpdateTag.UPDATE_SHAPE; // for shape\n }\n\n addUpdateShapeAndBoundsTag() {\n this._updateTag |= UpdateTag.UPDATE_SHAPE_AND_BOUNDS; // for shape&bounds\n if (this.parent) {\n this.parent.addChildUpdateBoundTag();\n }\n if (this.glyphHost) {\n this.glyphHost.addUpdateBoundTag();\n }\n }\n\n protected addBroadUpdateTag() {\n this.shadowRoot && this.shadowRoot.addUpdateGlobalPositionTag();\n this._updateTag |=\n UpdateTag.UPDATE_SHAPE_AND_BOUNDS |\n UpdateTag.UPDATE_PAINT |\n UpdateTag.UPDATE_GLOBAL_LOCAL_MATRIX |\n UpdateTag.UPDATE_LAYOUT;\n if (this.parent) {\n this.parent.addChildUpdateBoundTag();\n }\n if (this.glyphHost) {\n this.glyphHost.addUpdateBoundTag();\n }\n }\n\n protected updateShapeAndBoundsTagSetted(): boolean {\n return (this._updateTag & UpdateTag.UPDATE_SHAPE_AND_BOUNDS) === UpdateTag.UPDATE_SHAPE_AND_BOUNDS;\n }\n\n protected clearUpdateBoundTag() {\n this._updateTag &= UpdateTag.CLEAR_BOUNDS;\n }\n\n protected clearUpdatePaintTag() {\n this._updateTag &= UpdateTag.CLEAR_PAINT;\n }\n /**\n * 更新位置tag,包括全局tag和局部tag\n */\n addUpdatePositionTag() {\n // 更新shadowRoot的全局位置\n this.shadowRoot && this.shadowRoot.addUpdateGlobalPositionTag();\n this._updateTag |= UpdateTag.UPDATE_GLOBAL_LOCAL_MATRIX;\n }\n /**\n * 更新全局位置tag\n */\n addUpdateGlobalPositionTag() {\n // 更新shadowRoot的全局位置\n this.shadowRoot && this.shadowRoot.addUpdateGlobalPositionTag();\n this._updateTag |= UpdateTag.UPDATE_GLOBAL_MATRIX;\n }\n /**\n * 清除局部位置tag\n */\n protected clearUpdateLocalPositionTag() {\n this._updateTag &= UpdateTag.CLEAR_LOCAL_MATRIX;\n }\n /**\n * 清除全局位置tag\n */\n protected clearUpdateGlobalPositionTag() {\n this._updateTag &= UpdateTag.CLEAR_GLOBAL_MATRIX;\n }\n\n addUpdateLayoutTag() {\n this._updateTag |= UpdateTag.UPDATE_LAYOUT;\n }\n\n protected clearUpdateLayoutTag() {\n this._updateTag &= UpdateTag.CLEAR_LAYOUT;\n }\n\n protected needUpdateLayout(): boolean {\n return !!(this._updateTag & UpdateTag.UPDATE_LAYOUT);\n }\n\n protected getAnchor(anchor: [string | number, string | number], params: { b?: IAABBBounds }, resetScale?: boolean) {\n const _anchor: [number, number] = [0, 0];\n const getBounds = () => {\n if (params.b) {\n return params.b;\n }\n // 拷贝一份,避免计算bounds的过程中计算matrix,然后matrix又修改了bounds\n const graphic = this.clone();\n graphic.attribute.angle = 0;\n graphic.attribute.scaleCenter = null;\n if (resetScale) {\n graphic.attribute.scaleX = 1;\n graphic.attribute.scaleY = 1;\n }\n // @ts-ignore\n // this.setAttributes({ angle: 0, scaleCenter: null });\n params.b = graphic.AABBBounds;\n\n return params.b;\n };\n if (typeof anchor[0] === 'string') {\n const ratio = parseFloat(anchor[0]) / 100;\n const bounds = getBounds();\n _anchor[0] = bounds.x1 + (bounds.x2 - bounds.x1) * ratio;\n } else {\n _anchor[0] = anchor[0];\n }\n if (typeof anchor[1] === 'string') {\n const ratio = parseFloat(anchor[1]) / 100;\n const bounds = getBounds();\n _anchor[1] = bounds.y1 + (bounds.y2 - bounds.y1) * ratio;\n } else {\n _anchor[1] = anchor[1];\n }\n\n return _anchor;\n }\n\n /**\n * 更新局部matrix的具体函数\n */\n protected doUpdateLocalMatrix() {\n const {\n x = DefaultTransform.x,\n y = DefaultTransform.y,\n scaleX = DefaultTransform.scaleX,\n scaleY = DefaultTransform.scaleY,\n angle = DefaultTransform.angle,\n scaleCenter,\n anchor,\n postMatrix\n } = this.attribute;\n let _anchor: [number, number] = [0, 0];\n const params = {};\n if (anchor && angle) {\n _anchor = this.getAnchor(anchor, params);\n }\n if (scaleCenter && (scaleX !== 1 || scaleY !== 1)) {\n const m = this._transMatrix;\n m.reset();\n m.translate(_anchor[0], _anchor[1]);\n m.rotate(angle);\n m.translate(-_anchor[0], -_anchor[1]);\n\n m.translate(x, y);\n // m.translate(scaleCenter[0] * scaleX, scaleCenter[1] * scaleY);\n // 计算bounds\n _anchor = this.getAnchor(scaleCenter, params, true);\n application.transformUtil.fromMatrix(m, m).scale(scaleX, scaleY, { x: _anchor[0], y: _anchor[1] });\n // m.translate(-scaleCenter[0], -scaleCenter[1]);\n } else {\n normalTransform(this._transMatrix, this._transMatrix.reset(), x, y, scaleX, scaleY, angle, anchor && _anchor);\n }\n const p = this.getOffsetXY(DefaultTransform);\n this._transMatrix.e += p.x;\n this._transMatrix.f += p.y;\n\n if (postMatrix) {\n const m1 = tempMatrix.setValue(\n postMatrix.a,\n postMatrix.b,\n postMatrix.c,\n postMatrix.d,\n postMatrix.e,\n postMatrix.f\n );\n const m2 = this._transMatrix;\n m1.multiply(m2.a, m2.b, m2.c, m2.d, m2.e, m2.f);\n m2.setValue(m1.a, m1.b, m1.c, m1.d, m1.e, m1.f);\n }\n }\n /**\n * 更新全局matrix的具体函数\n */\n protected doUpdateGlobalMatrix() {\n // 基于parent的matrix修改\n if (this.parent) {\n this._globalTransMatrix.multiply(\n this.transMatrix.a,\n this.transMatrix.b,\n this.transMatrix.c,\n this.transMatrix.d,\n this.transMatrix.e,\n this.transMatrix.f\n );\n const { scrollX = 0, scrollY = 0 } = this.parent.attribute;\n this._globalTransMatrix.translate(scrollX, scrollY);\n }\n }\n\n setStage(stage?: IStage, layer?: ILayer) {\n const graphicService = stage?.graphicService ?? this.stage?.graphicService ?? application.graphicService;\n const previousStage = this.stage;\n if (this.stage !== stage || this.layer !== layer) {\n this.stage = stage;\n this.layer = layer;\n if (\n this.currentStates?.length ||\n this.boundSharedStateScope ||\n this.registeredActiveScopes?.size ||\n this.sharedStateDirty\n ) {\n this.syncSharedStateScopeBindingOnTreeChange(true);\n }\n this.setStageToShadowRoot(stage, layer);\n if (this.mayHaveTrackedAnimates() && this.hasAnyTrackedAnimate()) {\n const previousTimeline = previousStage?.getTimeline?.();\n const nextTimeline = stage?.getTimeline?.();\n const detachedStageAnimates: IAnimate[] = [];\n this.visitTrackedAnimates(a => {\n const boundToPreviousStage = !!previousTimeline && a.timeline === previousTimeline;\n\n if (!boundToPreviousStage && !a.timeline.isGlobal) {\n return;\n }\n\n if (!nextTimeline) {\n if (previousTimeline && a.timeline === previousTimeline) {\n previousTimeline.removeAnimate(a, false);\n detachedStageAnimates.push(a);\n }\n return;\n }\n\n if (a.timeline !== nextTimeline) {\n if (previousTimeline && a.timeline === previousTimeline) {\n previousTimeline.removeAnimate(a, false);\n }\n a.setTimeline(nextTimeline);\n nextTimeline.addAnimate(a);\n }\n });\n\n if (detachedStageAnimates.length) {\n detachedStageAnimates.forEach(animate => {\n animate.stop();\n const untrackAnimate = (this as any).untrackAnimate;\n if (typeof untrackAnimate === 'function') {\n untrackAnimate.call(this, animate.id);\n } else {\n this.animates?.delete(animate.id);\n }\n });\n this._restoreAttributeFromStaticTruth({ type: AttributeUpdateType.ANIMATE_END });\n }\n }\n this._onSetStage && this._onSetStage(this, stage, layer);\n graphicService?.onSetStage?.(this, stage);\n return;\n }\n\n if (\n this.currentStates?.length ||\n this.boundSharedStateScope ||\n this.registeredActiveScopes?.size ||\n this.sharedStateDirty\n ) {\n this.syncSharedStateScopeBindingOnTreeChange(true);\n }\n }\n\n detachStageForRelease() {\n if (this.registeredActiveScopes?.size) {\n this.clearSharedStateActiveRegistrations();\n }\n if (this.mayHaveTrackedAnimates() || this.shadowRoot) {\n this.stopAnimates();\n }\n this.boundSharedStateScope = undefined;\n this.boundSharedStateRevision = undefined;\n this.compiledStateDefinitions = undefined;\n this.compiledStateDefinitionsCacheKey = undefined;\n this.stateEngine = undefined;\n this.stateEngineCompiledDefinitions = undefined;\n this.sharedStateDirty = false;\n this.stage = null as any;\n this.layer = null as any;\n if (this.shadowRoot) {\n this.shadowRoot.detachStageForRelease?.();\n }\n }\n\n setStageToShadowRoot(stage?: IStage, layer?: ILayer) {\n if (this.shadowRoot) {\n this.shadowRoot.setStage(stage, layer);\n }\n }\n\n onAddStep(step: IStep) {\n return;\n }\n onStop(props?: Partial<T>): void {\n this._restoreAttributeFromStaticTruth({ type: AttributeUpdateType.ANIMATE_END });\n }\n\n getDefaultAttribute(name: string) {\n return (this.getGraphicTheme() as any)[name];\n }\n\n // 获取属性\n getComputedAttribute(name: string) {\n return (this.attribute as any)[name] ?? this.getDefaultAttribute(name);\n }\n /**\n * 添加onSetStage钩子\n * @param cb 回调函数\n * @param immediate 是否立刻执行,如果在回调添加之前stage就已经绑定,那么如果第二个参数为true就立刻执行回调\n */\n onSetStage(cb: (g: IGraphic, stage: IStage) => void, immediate: boolean = false) {\n this._onSetStage = cb;\n if (immediate && this.stage) {\n cb(this, this.stage);\n }\n }\n\n /******************** shadow graphic *********************/\n attachShadow(shadowRoot?: IShadowRoot) {\n if (shadowRoot) {\n shadowRoot.shadowHost = this;\n }\n\n this.shadowRoot =\n shadowRoot ??\n application.graphicService.creator.shadowRoot?.(this) ??\n (loadShadowRootFactory().createShadowRoot(this) as IShadowRoot);\n this.addUpdateBoundTag();\n this.shadowRoot.setStage(this.stage, this.layer);\n return this.shadowRoot;\n }\n\n detachShadow() {\n if (this.shadowRoot) {\n this.addUpdateBoundTag();\n this.shadowRoot.release(true);\n this.shadowRoot = null;\n }\n }\n\n toJson(): IGraphicJson {\n return {\n attribute: this.attribute,\n _uid: this._uid,\n type: this.type,\n name: this.name,\n children: this.children.map((item: IGraphic) => item.toJson())\n };\n }\n\n createPathProxy(path?: string) {\n if (isString(path, true)) {\n this.pathProxy = new CustomPath2D().fromString(path as string);\n } else {\n this.pathProxy = new CustomPath2D();\n }\n\n return this.pathProxy;\n }\n\n loadImage(image: any, background: boolean = false) {\n if (background && image?.background) {\n image = image.background;\n }\n if (background && (!image || backgroundNotImage(image))) {\n this.backgroundImg = false;\n return;\n }\n if (!image) {\n return;\n }\n const url = image;\n if (!this.resources) {\n this.resources = new Map();\n }\n const cache: {\n state: 'loading' | 'success' | 'init' | 'fail';\n data: any;\n } = {\n data: 'init',\n state: null\n };\n this.resources.set(url, cache);\n if (typeof image === 'string') {\n cache.state = 'loading';\n if (image.startsWith('<svg')) {\n // TODO 封装isSvg到@visactor/vutils\n ResourceLoader.GetSvg(image, this);\n this.backgroundImg = this.backgroundImg || background;\n } else if (isValidUrl(image) || image.includes('/') || isBase64(image)) {\n ResourceLoader.GetImage(image, this);\n this.backgroundImg = this.backgroundImg || background;\n }\n } else if (isObject(image)) {\n (cache.state = 'success'), (cache.data = image);\n this.backgroundImg = this.backgroundImg || background;\n } else {\n cache.state = 'fail';\n }\n }\n\n setShadowGraphic(graphic: IGraphic) {\n if (!graphic) {\n this.detachShadow();\n } else {\n const root = this.attachShadow();\n root.add(graphic);\n }\n }\n\n imageLoadSuccess(url: string, image: HTMLImageElement, cb?: () => void) {\n // 更新属性\n // this.resourceState = 'success';\n // this.resource = image;\n if (!this.resources) {\n return;\n }\n const res = this.resources.get(url);\n if (!res) {\n return;\n }\n res.state = 'success';\n res.data = image;\n\n cb && cb();\n\n // 触发重绘\n // 暂时全量,TODO 启动局部重绘\n // this.stage.enableDirtyBounds();\n // this.stage.dirty(this.AABBBounds);\n this.addUpdateBoundTag(); // 添加bounds更新tag重绘才会绘制这个mark\n this.stage && this.stage.renderNextFrame();\n }\n\n imageLoadFail(url: string, cb?: () => void) {\n if (!this.resources) {\n return;\n }\n const res = this.resources.get(url);\n if (!res) {\n return;\n }\n res.state = 'fail';\n\n cb && cb();\n }\n\n private _stopAnimates() {\n if (!this.mayHaveTrackedAnimates()) {\n return;\n }\n\n const animates: IAnimate[] = [];\n this.visitTrackedAnimates(animate => {\n animates.push(animate);\n });\n animates.forEach(animate => {\n animate.stop();\n });\n }\n\n stopAnimates(stopChildren: boolean = false) {\n this._stopAnimates();\n\n if (this.shadowRoot) {\n // 停止所有影子节点的动画\n this.shadowRoot.stopAnimates(true);\n }\n if (this.isContainer && stopChildren) {\n this.forEachChildren((c: IGraphic) => {\n c.stopAnimates(stopChildren);\n });\n }\n }\n\n release(): void {\n this.releaseStatus = 'released';\n if (this.registeredActiveScopes?.size) {\n this.clearSharedStateActiveRegistrations();\n }\n if (this.mayHaveTrackedAnimates() || this.shadowRoot) {\n this.stopAnimates();\n }\n const graphicService = this.stage?.graphicService ?? application.graphicService;\n graphicService?.onRelease?.(this);\n super.release();\n }\n\n protected hasCustomEvent(type: string): boolean {\n return !!this._events && type in this._events;\n }\n\n protected _dispatchCustomEvent(type: string, context?: any) {\n if (this.hasCustomEvent(type)) {\n const changeEvent = new CustomEvent(type, context);\n changeEvent.bubbles = false;\n const manager = (this.stage as any)?.eventSystem?.manager;\n\n if (manager) {\n (changeEvent as any).manager = manager;\n return this.dispatchEvent(changeEvent);\n }\n\n return Node.prototype.dispatchEvent.call(this, changeEvent);\n }\n return true;\n }\n\n protected beforeStateUpdate(\n attrs: Partial<T>,\n prevStates: readonly string[],\n nextStates: readonly string[],\n hasAnimation?: boolean,\n isClear?: boolean\n ) {\n if (!this.hasCustomEvent('beforeStateUpdate')) {\n return true;\n }\n return this._dispatchCustomEvent('beforeStateUpdate', {\n type: AttributeUpdateType.STATE,\n attrs: { ...attrs },\n prevStates: prevStates.slice(),\n nextStates: nextStates.slice(),\n hasAnimation: !!hasAnimation,\n isClear: !!isClear\n });\n }\n\n protected emitStateUpdateEvent() {\n if (this.hasCustomEvent('afterStateUpdate')) {\n this._emitCustomEvent('afterStateUpdate', { type: AttributeUpdateType.STATE });\n }\n }\n\n protected _emitCustomEvent(type: string, context?: any) {\n this._dispatchCustomEvent(type, context);\n }\n\n abstract getNoWorkAnimateAttr(): Record<string, number>;\n\n abstract clone(): IGraphic<any>;\n\n toCustomPath(): ICustomPath2D {\n // throw new Error('暂不支持');\n const renderer = (this.stage?.renderService || application.renderService)?.drawContribution?.getRenderContribution(\n this\n );\n if (renderer) {\n const context = new EmptyContext2d(null, 1);\n renderer.drawShape(this, context, 0, 0, {} as any, {});\n return context.path;\n }\n return null;\n }\n}\n\nGraphic.mixin(EventTarget);\n\nfunction backgroundNotImage(image: any) {\n if (typeof image === 'string') {\n return !(image.startsWith('<svg') || isValidUrl(image) || image.includes('/') || isBase64(image));\n }\n if (image.fill || image.stroke) {\n return true;\n }\n if (typeof image.gradient === 'string' && Array.isArray(image.stops)) {\n return true;\n }\n return false;\n}\n\nfunction isExternalTexture(texture: any) {\n if (!texture) {\n return false;\n }\n if (typeof texture === 'string') {\n if (builtinTextureTypes.has(texture)) {\n return false;\n }\n return texture.startsWith('<svg') || isValidUrl(texture) || texture.includes('/') || isBase64(texture);\n }\n return isObject(texture);\n}\n"]}