@visactor/vrender-core 1.1.0-alpha.9 → 1.1.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 (528) hide show
  1. package/cjs/allocator/graphic-allocate.js +1 -2
  2. package/cjs/canvas/constants.js +2 -1
  3. package/cjs/common/color-utils.js +1 -2
  4. package/cjs/common/diff.js +2 -1
  5. package/cjs/common/module-guard.d.ts +1 -0
  6. package/cjs/common/module-guard.js +11 -0
  7. package/cjs/common/module-guard.js.map +1 -0
  8. package/cjs/common/render-area.js +0 -1
  9. package/cjs/common/seg-context.js +2 -1
  10. package/cjs/common/text.js +1 -1
  11. package/cjs/common/utils.js +1 -1
  12. package/cjs/common/xml/is-xml.d.ts +2 -0
  13. package/cjs/common/xml/is-xml.js +14 -0
  14. package/cjs/common/xml/is-xml.js.map +1 -0
  15. package/cjs/common/xml/parser.d.ts +2 -2
  16. package/cjs/common/xml/parser.js +14 -11
  17. package/cjs/common/xml/parser.js.map +1 -1
  18. package/cjs/container.d.ts +2 -0
  19. package/cjs/container.js +50 -0
  20. package/cjs/container.js.map +1 -0
  21. package/cjs/core/contributions/layerHandler/canvas2d-contribution.js +1 -0
  22. package/cjs/core/contributions/layerHandler/canvas2d-contribution.js.map +1 -1
  23. package/cjs/core/stage.d.ts +2 -8
  24. package/cjs/core/stage.js +21 -27
  25. package/cjs/core/stage.js.map +1 -1
  26. package/cjs/entries/miniapp.d.ts +0 -1
  27. package/cjs/entries/miniapp.js +1 -5
  28. package/cjs/entries/miniapp.js.map +1 -1
  29. package/cjs/entries/node.d.ts +0 -1
  30. package/cjs/entries/node.js +1 -5
  31. package/cjs/entries/node.js.map +1 -1
  32. package/cjs/entries/runtime-installer.js +35 -9
  33. package/cjs/entries/runtime-installer.js.map +1 -1
  34. package/cjs/env.d.ts +1 -0
  35. package/cjs/env.js +25 -0
  36. package/cjs/env.js.map +1 -0
  37. package/cjs/event/public-constant.d.ts +7 -0
  38. package/cjs/event/public-constant.js +100 -0
  39. package/cjs/event/public-constant.js.map +1 -0
  40. package/cjs/event/util.d.ts +1 -1
  41. package/cjs/graphic/arc.js +6 -4
  42. package/cjs/graphic/arc.js.map +1 -1
  43. package/cjs/graphic/base.d.ts +2 -0
  44. package/cjs/graphic/base.js +15 -0
  45. package/cjs/graphic/base.js.map +1 -0
  46. package/cjs/graphic/config.js +1 -0
  47. package/cjs/graphic/config.js.map +1 -1
  48. package/cjs/graphic/creator.d.ts +16 -0
  49. package/cjs/graphic/creator.js +160 -0
  50. package/cjs/graphic/creator.js.map +1 -0
  51. package/cjs/graphic/glyph.js +4 -8
  52. package/cjs/graphic/glyph.js.map +1 -1
  53. package/cjs/graphic/graphic-service/graphic-service.d.ts +4 -1
  54. package/cjs/graphic/graphic-service/graphic-service.js +7 -13
  55. package/cjs/graphic/graphic-service/graphic-service.js.map +1 -1
  56. package/cjs/graphic/graphic.d.ts +74 -24
  57. package/cjs/graphic/graphic.js +474 -212
  58. package/cjs/graphic/graphic.js.map +1 -1
  59. package/cjs/graphic/group.d.ts +5 -3
  60. package/cjs/graphic/group.js +44 -31
  61. package/cjs/graphic/group.js.map +1 -1
  62. package/cjs/graphic/modules.d.ts +16 -0
  63. package/cjs/graphic/modules.js +150 -0
  64. package/cjs/graphic/modules.js.map +1 -0
  65. package/cjs/graphic/node-tree.d.ts +3 -3
  66. package/cjs/graphic/node-tree.js +1 -0
  67. package/cjs/graphic/node-tree.js.map +1 -1
  68. package/cjs/graphic/state/shared-state-refresh.js +11 -31
  69. package/cjs/graphic/state/shared-state-refresh.js.map +1 -1
  70. package/cjs/graphic/state/shared-state-scope.d.ts +2 -5
  71. package/cjs/graphic/state/shared-state-scope.js +8 -27
  72. package/cjs/graphic/state/shared-state-scope.js.map +1 -1
  73. package/cjs/graphic/state/state-definition-compiler.js +4 -5
  74. package/cjs/graphic/state/state-definition-compiler.js.map +1 -1
  75. package/cjs/graphic/state/state-definition.d.ts +2 -5
  76. package/cjs/graphic/state/state-definition.js.map +1 -1
  77. package/cjs/graphic/state/state-engine.d.ts +0 -5
  78. package/cjs/graphic/state/state-engine.js +21 -70
  79. package/cjs/graphic/state/state-engine.js.map +1 -1
  80. package/cjs/graphic/state/state-transition-orchestrator.d.ts +7 -9
  81. package/cjs/graphic/state/state-transition-orchestrator.js +10 -13
  82. package/cjs/graphic/state/state-transition-orchestrator.js.map +1 -1
  83. package/cjs/graphic/tools.js +2 -2
  84. package/cjs/graphic/tools.js.map +1 -1
  85. package/cjs/index.js.map +1 -1
  86. package/cjs/interface/animation/animate.d.ts +1 -0
  87. package/cjs/interface/animation/animate.js.map +1 -1
  88. package/cjs/interface/global.d.ts +8 -4
  89. package/cjs/interface/global.js.map +1 -1
  90. package/cjs/interface/graphic/arc.d.ts +1 -0
  91. package/cjs/interface/graphic/arc.js.map +1 -1
  92. package/cjs/interface/graphic/group.d.ts +0 -2
  93. package/cjs/interface/graphic/group.js.map +1 -1
  94. package/cjs/interface/graphic.d.ts +10 -5
  95. package/cjs/interface/graphic.js.map +1 -1
  96. package/cjs/interface/index.js.map +1 -1
  97. package/cjs/interface/node-tree.d.ts +3 -0
  98. package/cjs/interface/node-tree.js.map +1 -1
  99. package/cjs/interface/stage.d.ts +0 -7
  100. package/cjs/interface/stage.js.map +1 -1
  101. package/cjs/interpolate.d.ts +2 -0
  102. package/cjs/interpolate.js +34 -0
  103. package/cjs/interpolate.js.map +1 -0
  104. package/cjs/modules.js.map +1 -1
  105. package/cjs/path.d.ts +4 -0
  106. package/cjs/path.js +33 -0
  107. package/cjs/path.js.map +1 -0
  108. package/cjs/plugin/3d.d.ts +3 -0
  109. package/cjs/plugin/3d.js +33 -0
  110. package/cjs/plugin/3d.js.map +1 -0
  111. package/cjs/plugin/attribute.d.ts +2 -0
  112. package/cjs/plugin/attribute.js +24 -0
  113. package/cjs/plugin/attribute.js.map +1 -0
  114. package/cjs/plugin/flex-layout.d.ts +1 -0
  115. package/cjs/plugin/flex-layout.js +15 -0
  116. package/cjs/plugin/flex-layout.js.map +1 -0
  117. package/cjs/plugins/builtin-plugin/dirty-bounds-plugin.d.ts +4 -1
  118. package/cjs/plugins/builtin-plugin/dirty-bounds-plugin.js +27 -17
  119. package/cjs/plugins/builtin-plugin/dirty-bounds-plugin.js.map +1 -1
  120. package/cjs/plugins/builtin-plugin/flex-layout-plugin.js +3 -2
  121. package/cjs/plugins/builtin-plugin/flex-layout-plugin.js.map +1 -1
  122. package/cjs/plugins/index.d.ts +0 -4
  123. package/cjs/plugins/index.js +1 -3
  124. package/cjs/plugins/index.js.map +1 -1
  125. package/cjs/plugins/plugin-service.d.ts +0 -1
  126. package/cjs/plugins/plugin-service.js +2 -3
  127. package/cjs/plugins/plugin-service.js.map +1 -1
  128. package/cjs/plugins/types.d.ts +1 -8
  129. package/cjs/plugins/types.js.map +1 -1
  130. package/cjs/register/graphic.d.ts +19 -0
  131. package/cjs/register/graphic.js +177 -0
  132. package/cjs/register/graphic.js.map +1 -0
  133. package/cjs/registry/contribution-registry.d.ts +1 -1
  134. package/cjs/registry/contribution-registry.js +6 -2
  135. package/cjs/registry/contribution-registry.js.map +1 -1
  136. package/cjs/registry/picker-registry.d.ts +1 -1
  137. package/cjs/registry/picker-registry.js +2 -2
  138. package/cjs/registry/picker-registry.js.map +1 -1
  139. package/cjs/registry/renderer-registry.d.ts +1 -1
  140. package/cjs/registry/renderer-registry.js +2 -2
  141. package/cjs/registry/renderer-registry.js.map +1 -1
  142. package/cjs/registry/types.d.ts +3 -3
  143. package/cjs/registry/types.js.map +1 -1
  144. package/cjs/render/contributions/render/arc-module.js +5 -6
  145. package/cjs/render/contributions/render/arc-module.js.map +1 -1
  146. package/cjs/render/contributions/render/arc3d-module.js +3 -5
  147. package/cjs/render/contributions/render/arc3d-module.js.map +1 -1
  148. package/cjs/render/contributions/render/area-module.js +6 -8
  149. package/cjs/render/contributions/render/area-module.js.map +1 -1
  150. package/cjs/render/contributions/render/base-render.js +8 -7
  151. package/cjs/render/contributions/render/base-render.js.map +1 -1
  152. package/cjs/render/contributions/render/circle-module.js +4 -5
  153. package/cjs/render/contributions/render/circle-module.js.map +1 -1
  154. package/cjs/render/contributions/render/glyph-module.js +3 -5
  155. package/cjs/render/contributions/render/glyph-module.js.map +1 -1
  156. package/cjs/render/contributions/render/image-module.js +3 -4
  157. package/cjs/render/contributions/render/image-module.js.map +1 -1
  158. package/cjs/render/contributions/render/line-module.js +3 -7
  159. package/cjs/render/contributions/render/line-module.js.map +1 -1
  160. package/cjs/render/contributions/render/path-module.js +5 -6
  161. package/cjs/render/contributions/render/path-module.js.map +1 -1
  162. package/cjs/render/contributions/render/polygon-module.js +3 -4
  163. package/cjs/render/contributions/render/polygon-module.js.map +1 -1
  164. package/cjs/render/contributions/render/pyramid3d-module.js +3 -4
  165. package/cjs/render/contributions/render/pyramid3d-module.js.map +1 -1
  166. package/cjs/render/contributions/render/rect-module.js +2 -4
  167. package/cjs/render/contributions/render/rect-module.js.map +1 -1
  168. package/cjs/render/contributions/render/rect3d-module.js +3 -4
  169. package/cjs/render/contributions/render/rect3d-module.js.map +1 -1
  170. package/cjs/render/contributions/render/richtext-module.js +3 -4
  171. package/cjs/render/contributions/render/richtext-module.js.map +1 -1
  172. package/cjs/render/contributions/render/star-module.js +4 -5
  173. package/cjs/render/contributions/render/star-module.js.map +1 -1
  174. package/cjs/render/contributions/render/star-render.d.ts +2 -2
  175. package/cjs/render/contributions/render/star-render.js +3 -3
  176. package/cjs/render/contributions/render/star-render.js.map +1 -1
  177. package/cjs/render/contributions/render/symbol-module.js +4 -5
  178. package/cjs/render/contributions/render/symbol-module.js.map +1 -1
  179. package/cjs/render/contributions/render/text-module.js +3 -4
  180. package/cjs/render/contributions/render/text-module.js.map +1 -1
  181. package/cjs/resource-loader/loader.js +5 -0
  182. package/cjs/resource-loader/loader.js.map +1 -1
  183. package/cjs/svg.d.ts +1 -0
  184. package/cjs/svg.js +15 -0
  185. package/cjs/svg.js.map +1 -0
  186. package/cjs/text.d.ts +2 -0
  187. package/cjs/text.js +29 -0
  188. package/cjs/text.js.map +1 -0
  189. package/dist/index.es.js +1297 -1752
  190. package/es/allocator/graphic-allocate.js +1 -2
  191. package/es/canvas/constants.js +2 -1
  192. package/es/common/color-utils.js +1 -2
  193. package/es/common/diff.js +2 -1
  194. package/es/common/module-guard.d.ts +1 -0
  195. package/es/common/module-guard.js +5 -0
  196. package/es/common/module-guard.js.map +1 -0
  197. package/es/common/render-area.js +1 -2
  198. package/es/common/seg-context.js +2 -1
  199. package/es/common/text.js +1 -1
  200. package/es/common/utils.js +1 -1
  201. package/es/common/xml/is-xml.d.ts +2 -0
  202. package/es/common/xml/is-xml.js +8 -0
  203. package/es/common/xml/is-xml.js.map +1 -0
  204. package/es/common/xml/parser.d.ts +2 -2
  205. package/es/common/xml/parser.js +3 -7
  206. package/es/common/xml/parser.js.map +1 -1
  207. package/es/container.d.ts +2 -0
  208. package/es/container.js +2 -0
  209. package/es/container.js.map +1 -0
  210. package/es/core/contributions/layerHandler/canvas2d-contribution.js +1 -0
  211. package/es/core/contributions/layerHandler/canvas2d-contribution.js.map +1 -1
  212. package/es/core/stage.d.ts +2 -8
  213. package/es/core/stage.js +19 -29
  214. package/es/core/stage.js.map +1 -1
  215. package/es/entries/miniapp.d.ts +0 -1
  216. package/es/entries/miniapp.js +1 -5
  217. package/es/entries/miniapp.js.map +1 -1
  218. package/es/entries/node.d.ts +0 -1
  219. package/es/entries/node.js +1 -5
  220. package/es/entries/node.js.map +1 -1
  221. package/es/entries/runtime-installer.js +36 -9
  222. package/es/entries/runtime-installer.js.map +1 -1
  223. package/es/env.d.ts +1 -0
  224. package/es/env.js +2 -0
  225. package/es/env.js.map +1 -0
  226. package/es/event/public-constant.d.ts +7 -0
  227. package/es/event/public-constant.js +12 -0
  228. package/es/event/public-constant.js.map +1 -0
  229. package/es/event/util.d.ts +1 -1
  230. package/es/graphic/arc.js +5 -4
  231. package/es/graphic/arc.js.map +1 -1
  232. package/es/graphic/base.d.ts +2 -0
  233. package/es/graphic/base.js +2 -0
  234. package/es/graphic/base.js.map +1 -0
  235. package/es/graphic/config.js +1 -0
  236. package/es/graphic/config.js.map +1 -1
  237. package/es/graphic/creator.d.ts +16 -0
  238. package/es/graphic/creator.js +32 -0
  239. package/es/graphic/creator.js.map +1 -0
  240. package/es/graphic/glyph.js +4 -8
  241. package/es/graphic/glyph.js.map +1 -1
  242. package/es/graphic/graphic-service/graphic-service.d.ts +4 -1
  243. package/es/graphic/graphic-service/graphic-service.js +6 -15
  244. package/es/graphic/graphic-service/graphic-service.js.map +1 -1
  245. package/es/graphic/graphic.d.ts +74 -24
  246. package/es/graphic/graphic.js +467 -209
  247. package/es/graphic/graphic.js.map +1 -1
  248. package/es/graphic/group.d.ts +5 -3
  249. package/es/graphic/group.js +43 -31
  250. package/es/graphic/group.js.map +1 -1
  251. package/es/graphic/modules.d.ts +16 -0
  252. package/es/graphic/modules.js +32 -0
  253. package/es/graphic/modules.js.map +1 -0
  254. package/es/graphic/node-tree.d.ts +3 -3
  255. package/es/graphic/node-tree.js +1 -0
  256. package/es/graphic/node-tree.js.map +1 -1
  257. package/es/graphic/state/shared-state-refresh.js +8 -27
  258. package/es/graphic/state/shared-state-refresh.js.map +1 -1
  259. package/es/graphic/state/shared-state-scope.d.ts +2 -5
  260. package/es/graphic/state/shared-state-scope.js +7 -28
  261. package/es/graphic/state/shared-state-scope.js.map +1 -1
  262. package/es/graphic/state/state-definition-compiler.js +4 -5
  263. package/es/graphic/state/state-definition-compiler.js.map +1 -1
  264. package/es/graphic/state/state-definition.d.ts +2 -5
  265. package/es/graphic/state/state-definition.js.map +1 -1
  266. package/es/graphic/state/state-engine.d.ts +0 -5
  267. package/es/graphic/state/state-engine.js +18 -67
  268. package/es/graphic/state/state-engine.js.map +1 -1
  269. package/es/graphic/state/state-transition-orchestrator.d.ts +7 -9
  270. package/es/graphic/state/state-transition-orchestrator.js +10 -13
  271. package/es/graphic/state/state-transition-orchestrator.js.map +1 -1
  272. package/es/graphic/tools.js +1 -3
  273. package/es/graphic/tools.js.map +1 -1
  274. package/es/index.js.map +1 -1
  275. package/es/interface/animation/animate.d.ts +1 -0
  276. package/es/interface/animation/animate.js.map +1 -1
  277. package/es/interface/global.d.ts +8 -4
  278. package/es/interface/global.js.map +1 -1
  279. package/es/interface/graphic/arc.d.ts +1 -0
  280. package/es/interface/graphic/arc.js.map +1 -1
  281. package/es/interface/graphic/group.d.ts +0 -2
  282. package/es/interface/graphic/group.js.map +1 -1
  283. package/es/interface/graphic.d.ts +10 -5
  284. package/es/interface/graphic.js.map +1 -1
  285. package/es/interface/index.js.map +1 -1
  286. package/es/interface/node-tree.d.ts +3 -0
  287. package/es/interface/node-tree.js.map +1 -1
  288. package/es/interface/stage.d.ts +0 -7
  289. package/es/interface/stage.js.map +1 -1
  290. package/es/interpolate.d.ts +2 -0
  291. package/es/interpolate.js +4 -0
  292. package/es/interpolate.js.map +1 -0
  293. package/es/modules.js.map +1 -1
  294. package/es/path.d.ts +4 -0
  295. package/es/path.js +6 -0
  296. package/es/path.js.map +1 -0
  297. package/es/plugin/3d.d.ts +3 -0
  298. package/es/plugin/3d.js +6 -0
  299. package/es/plugin/3d.js.map +1 -0
  300. package/es/plugin/attribute.d.ts +2 -0
  301. package/es/plugin/attribute.js +4 -0
  302. package/es/plugin/attribute.js.map +1 -0
  303. package/es/plugin/flex-layout.d.ts +1 -0
  304. package/es/plugin/flex-layout.js +2 -0
  305. package/es/plugin/flex-layout.js.map +1 -0
  306. package/es/plugins/builtin-plugin/dirty-bounds-plugin.d.ts +4 -1
  307. package/es/plugins/builtin-plugin/dirty-bounds-plugin.js +27 -17
  308. package/es/plugins/builtin-plugin/dirty-bounds-plugin.js.map +1 -1
  309. package/es/plugins/builtin-plugin/flex-layout-plugin.js +3 -2
  310. package/es/plugins/builtin-plugin/flex-layout-plugin.js.map +1 -1
  311. package/es/plugins/index.d.ts +0 -4
  312. package/es/plugins/index.js +0 -8
  313. package/es/plugins/index.js.map +1 -1
  314. package/es/plugins/plugin-service.d.ts +0 -1
  315. package/es/plugins/plugin-service.js +2 -3
  316. package/es/plugins/plugin-service.js.map +1 -1
  317. package/es/plugins/types.d.ts +1 -8
  318. package/es/plugins/types.js.map +1 -1
  319. package/es/register/graphic.d.ts +19 -0
  320. package/es/register/graphic.js +38 -0
  321. package/es/register/graphic.js.map +1 -0
  322. package/es/registry/contribution-registry.d.ts +1 -1
  323. package/es/registry/contribution-registry.js +6 -2
  324. package/es/registry/contribution-registry.js.map +1 -1
  325. package/es/registry/picker-registry.d.ts +1 -1
  326. package/es/registry/picker-registry.js +2 -2
  327. package/es/registry/picker-registry.js.map +1 -1
  328. package/es/registry/renderer-registry.d.ts +1 -1
  329. package/es/registry/renderer-registry.js +2 -2
  330. package/es/registry/renderer-registry.js.map +1 -1
  331. package/es/registry/types.d.ts +3 -3
  332. package/es/registry/types.js.map +1 -1
  333. package/es/render/contributions/render/arc-module.js +6 -4
  334. package/es/render/contributions/render/arc-module.js.map +1 -1
  335. package/es/render/contributions/render/arc3d-module.js +5 -3
  336. package/es/render/contributions/render/arc3d-module.js.map +1 -1
  337. package/es/render/contributions/render/area-module.js +7 -7
  338. package/es/render/contributions/render/area-module.js.map +1 -1
  339. package/es/render/contributions/render/base-render.js +8 -6
  340. package/es/render/contributions/render/base-render.js.map +1 -1
  341. package/es/render/contributions/render/circle-module.js +6 -4
  342. package/es/render/contributions/render/circle-module.js.map +1 -1
  343. package/es/render/contributions/render/glyph-module.js +5 -3
  344. package/es/render/contributions/render/glyph-module.js.map +1 -1
  345. package/es/render/contributions/render/image-module.js +5 -3
  346. package/es/render/contributions/render/image-module.js.map +1 -1
  347. package/es/render/contributions/render/line-module.js +4 -5
  348. package/es/render/contributions/render/line-module.js.map +1 -1
  349. package/es/render/contributions/render/path-module.js +6 -4
  350. package/es/render/contributions/render/path-module.js.map +1 -1
  351. package/es/render/contributions/render/polygon-module.js +5 -3
  352. package/es/render/contributions/render/polygon-module.js.map +1 -1
  353. package/es/render/contributions/render/pyramid3d-module.js +5 -3
  354. package/es/render/contributions/render/pyramid3d-module.js.map +1 -1
  355. package/es/render/contributions/render/rect-module.js +4 -2
  356. package/es/render/contributions/render/rect-module.js.map +1 -1
  357. package/es/render/contributions/render/rect3d-module.js +5 -3
  358. package/es/render/contributions/render/rect3d-module.js.map +1 -1
  359. package/es/render/contributions/render/richtext-module.js +5 -3
  360. package/es/render/contributions/render/richtext-module.js.map +1 -1
  361. package/es/render/contributions/render/star-module.js +7 -4
  362. package/es/render/contributions/render/star-module.js.map +1 -1
  363. package/es/render/contributions/render/star-render.d.ts +2 -2
  364. package/es/render/contributions/render/star-render.js +3 -3
  365. package/es/render/contributions/render/star-render.js.map +1 -1
  366. package/es/render/contributions/render/symbol-module.js +6 -4
  367. package/es/render/contributions/render/symbol-module.js.map +1 -1
  368. package/es/render/contributions/render/text-module.js +5 -3
  369. package/es/render/contributions/render/text-module.js.map +1 -1
  370. package/es/resource-loader/loader.js +5 -0
  371. package/es/resource-loader/loader.js.map +1 -1
  372. package/es/svg.d.ts +1 -0
  373. package/es/svg.js +2 -0
  374. package/es/svg.js.map +1 -0
  375. package/es/text.d.ts +2 -0
  376. package/es/text.js +4 -0
  377. package/es/text.js.map +1 -0
  378. package/package.json +247 -3
  379. package/cjs/allocator/constants.d.ts +0 -9
  380. package/cjs/allocator/constants.js +0 -11
  381. package/cjs/allocator/constants.js.map +0 -1
  382. package/cjs/common/Reflect-metadata.d.ts +0 -2
  383. package/cjs/common/Reflect-metadata.js +0 -182
  384. package/cjs/common/Reflect-metadata.js.map +0 -1
  385. package/cjs/common/segment/curve/arc.d.ts +0 -17
  386. package/cjs/common/segment/curve/arc.js +0 -38
  387. package/cjs/common/segment/curve/arc.js.map +0 -1
  388. package/cjs/common/segment/curve/ellipse.d.ts +0 -21
  389. package/cjs/common/segment/curve/ellipse.js +0 -39
  390. package/cjs/common/segment/curve/ellipse.js.map +0 -1
  391. package/cjs/common/segment/curve/move.d.ts +0 -16
  392. package/cjs/common/segment/curve/move.js +0 -37
  393. package/cjs/common/segment/curve/move.js.map +0 -1
  394. package/cjs/common/store.d.ts +0 -2
  395. package/cjs/common/store.js +0 -2
  396. package/cjs/common/store.js.map +0 -1
  397. package/cjs/core/application.d.ts +0 -1
  398. package/cjs/core/application.js +0 -6
  399. package/cjs/core/application.js.map +0 -1
  400. package/cjs/core/global-module.d.ts +0 -1
  401. package/cjs/core/global-module.js +0 -3
  402. package/cjs/core/global-module.js.map +0 -1
  403. package/cjs/export.d.ts +0 -1
  404. package/cjs/export.js +0 -1
  405. package/cjs/export.js.map +0 -1
  406. package/cjs/graphic/state/state-batch-scheduler.d.ts +0 -42
  407. package/cjs/graphic/state/state-batch-scheduler.js +0 -285
  408. package/cjs/graphic/state/state-batch-scheduler.js.map +0 -1
  409. package/cjs/graphic/state/state-model.d.ts +0 -43
  410. package/cjs/graphic/state/state-model.js +0 -143
  411. package/cjs/graphic/state/state-model.js.map +0 -1
  412. package/cjs/graphic/state/state-perf-monitor.d.ts +0 -119
  413. package/cjs/graphic/state/state-perf-monitor.js +0 -217
  414. package/cjs/graphic/state/state-perf-monitor.js.map +0 -1
  415. package/cjs/graphic/state/state-style-resolver.d.ts +0 -22
  416. package/cjs/graphic/state/state-style-resolver.js +0 -73
  417. package/cjs/graphic/state/state-style-resolver.js.map +0 -1
  418. package/cjs/interface/animate.d.ts +0 -1
  419. package/cjs/interface/animate.js +0 -3
  420. package/cjs/interface/animate.js.map +0 -1
  421. package/cjs/interface/creator.d.ts +0 -4
  422. package/cjs/interface/creator.js +0 -6
  423. package/cjs/interface/creator.js.map +0 -1
  424. package/cjs/interface/graphic/dynamic-path.d.ts +0 -1
  425. package/cjs/interface/graphic/dynamic-path.js +0 -3
  426. package/cjs/interface/graphic/dynamic-path.js.map +0 -1
  427. package/cjs/interface/graphic-utils.d.ts +0 -1
  428. package/cjs/interface/graphic-utils.js +0 -3
  429. package/cjs/interface/graphic-utils.js.map +0 -1
  430. package/cjs/interface/theme-service.d.ts +0 -1
  431. package/cjs/interface/theme-service.js +0 -3
  432. package/cjs/interface/theme-service.js.map +0 -1
  433. package/cjs/plugins/base-plugin.d.ts +0 -8
  434. package/cjs/plugins/base-plugin.js +0 -15
  435. package/cjs/plugins/base-plugin.js.map +0 -1
  436. package/cjs/plugins/browser-env-plugin.d.ts +0 -8
  437. package/cjs/plugins/browser-env-plugin.js +0 -24
  438. package/cjs/plugins/browser-env-plugin.js.map +0 -1
  439. package/cjs/plugins/builtin-plugin/poptip-plugin.d.ts +0 -1
  440. package/cjs/plugins/builtin-plugin/poptip-plugin.js +0 -3
  441. package/cjs/plugins/builtin-plugin/poptip-plugin.js.map +0 -1
  442. package/cjs/plugins/picker-plugin.d.ts +0 -7
  443. package/cjs/plugins/picker-plugin.js +0 -19
  444. package/cjs/plugins/picker-plugin.js.map +0 -1
  445. package/cjs/plugins/renderer-plugin.d.ts +0 -7
  446. package/cjs/plugins/renderer-plugin.js +0 -19
  447. package/cjs/plugins/renderer-plugin.js.map +0 -1
  448. package/cjs/render/contributions/render/clear-screen.d.ts +0 -1
  449. package/cjs/render/contributions/render/clear-screen.js +0 -3
  450. package/cjs/render/contributions/render/clear-screen.js.map +0 -1
  451. package/cjs/render/contributions/render/render-slector.d.ts +0 -1
  452. package/cjs/render/contributions/render/render-slector.js +0 -3
  453. package/cjs/render/contributions/render/render-slector.js.map +0 -1
  454. package/es/allocator/constants.d.ts +0 -9
  455. package/es/allocator/constants.js +0 -18
  456. package/es/allocator/constants.js.map +0 -1
  457. package/es/common/Reflect-metadata.d.ts +0 -2
  458. package/es/common/Reflect-metadata.js +0 -178
  459. package/es/common/Reflect-metadata.js.map +0 -1
  460. package/es/common/segment/curve/arc.d.ts +0 -17
  461. package/es/common/segment/curve/arc.js +0 -31
  462. package/es/common/segment/curve/arc.js.map +0 -1
  463. package/es/common/segment/curve/ellipse.d.ts +0 -21
  464. package/es/common/segment/curve/ellipse.js +0 -33
  465. package/es/common/segment/curve/ellipse.js.map +0 -1
  466. package/es/common/segment/curve/move.d.ts +0 -16
  467. package/es/common/segment/curve/move.js +0 -31
  468. package/es/common/segment/curve/move.js.map +0 -1
  469. package/es/common/store.d.ts +0 -2
  470. package/es/common/store.js +0 -2
  471. package/es/common/store.js.map +0 -1
  472. package/es/core/application.d.ts +0 -1
  473. package/es/core/application.js +0 -2
  474. package/es/core/application.js.map +0 -1
  475. package/es/core/global-module.d.ts +0 -1
  476. package/es/core/global-module.js +0 -3
  477. package/es/core/global-module.js.map +0 -1
  478. package/es/export.d.ts +0 -1
  479. package/es/export.js +0 -1
  480. package/es/export.js.map +0 -1
  481. package/es/graphic/state/state-batch-scheduler.d.ts +0 -42
  482. package/es/graphic/state/state-batch-scheduler.js +0 -278
  483. package/es/graphic/state/state-batch-scheduler.js.map +0 -1
  484. package/es/graphic/state/state-model.d.ts +0 -43
  485. package/es/graphic/state/state-model.js +0 -135
  486. package/es/graphic/state/state-model.js.map +0 -1
  487. package/es/graphic/state/state-perf-monitor.d.ts +0 -119
  488. package/es/graphic/state/state-perf-monitor.js +0 -207
  489. package/es/graphic/state/state-perf-monitor.js.map +0 -1
  490. package/es/graphic/state/state-style-resolver.d.ts +0 -22
  491. package/es/graphic/state/state-style-resolver.js +0 -65
  492. package/es/graphic/state/state-style-resolver.js.map +0 -1
  493. package/es/interface/animate.d.ts +0 -1
  494. package/es/interface/animate.js +0 -3
  495. package/es/interface/animate.js.map +0 -1
  496. package/es/interface/creator.d.ts +0 -4
  497. package/es/interface/creator.js +0 -2
  498. package/es/interface/creator.js.map +0 -1
  499. package/es/interface/graphic/dynamic-path.d.ts +0 -1
  500. package/es/interface/graphic/dynamic-path.js +0 -3
  501. package/es/interface/graphic/dynamic-path.js.map +0 -1
  502. package/es/interface/graphic-utils.d.ts +0 -1
  503. package/es/interface/graphic-utils.js +0 -3
  504. package/es/interface/graphic-utils.js.map +0 -1
  505. package/es/interface/theme-service.d.ts +0 -1
  506. package/es/interface/theme-service.js +0 -3
  507. package/es/interface/theme-service.js.map +0 -1
  508. package/es/plugins/base-plugin.d.ts +0 -8
  509. package/es/plugins/base-plugin.js +0 -7
  510. package/es/plugins/base-plugin.js.map +0 -1
  511. package/es/plugins/browser-env-plugin.d.ts +0 -8
  512. package/es/plugins/browser-env-plugin.js +0 -16
  513. package/es/plugins/browser-env-plugin.js.map +0 -1
  514. package/es/plugins/builtin-plugin/poptip-plugin.d.ts +0 -1
  515. package/es/plugins/builtin-plugin/poptip-plugin.js +0 -3
  516. package/es/plugins/builtin-plugin/poptip-plugin.js.map +0 -1
  517. package/es/plugins/picker-plugin.d.ts +0 -7
  518. package/es/plugins/picker-plugin.js +0 -11
  519. package/es/plugins/picker-plugin.js.map +0 -1
  520. package/es/plugins/renderer-plugin.d.ts +0 -7
  521. package/es/plugins/renderer-plugin.js +0 -11
  522. package/es/plugins/renderer-plugin.js.map +0 -1
  523. package/es/render/contributions/render/clear-screen.d.ts +0 -1
  524. package/es/render/contributions/render/clear-screen.js +0 -3
  525. package/es/render/contributions/render/clear-screen.js.map +0 -1
  526. package/es/render/contributions/render/render-slector.d.ts +0 -1
  527. package/es/render/contributions/render/render-slector.js +0 -3
  528. package/es/render/contributions/render/render-slector.js.map +0 -1
@@ -1 +1 @@
1
- {"version":3,"sources":["../src/core/stage.ts"],"names":[],"mappings":";;;AAAA,6CAQ0B;AA6B1B,qCAAyC;AAEzC,oCAAuC;AACvC,4CAAyC;AACzC,4CAAyC;AACzC,2EAA6E;AAC7E,6DAAgE;AAChE,8DAAiE;AACjE,qFAAgF;AAChF,uFAAkF;AAClF,6GAAuG;AACvG,uFAAkF;AAClF,wCAAsC;AACtC,gDAA6C;AAC7C,4CAA4C;AAC5C,wCAA6D;AAC7D,mDAAsD;AACtD,gFAAmF;AACnF,4EAI6C;AAC7C,gFAAsH;AAEtH,kFAA6E;AAC7E,4EAK6C;AAE7C,MAAM,aAAa,GAAG;IACpB,KAAK,EAAE,GAAG;IACV,MAAM,EAAE,GAAG;IACX,CAAC,EAAE,CAAC;IACJ,CAAC,EAAE,CAAC;IACJ,UAAU,EAAE,OAAO;CACpB,CAAC;AAeF,MAAa,KAAM,SAAQ,aAAK;IAuB9B,IAAI,OAAO,CAAC,CAAc;QACxB,IAAI,CAAC,MAAM,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC;IAC5B,CAAC;IACD,IAAI,OAAO;QACT,OAAO,IAAI,CAAC,MAAM,CAAC,UAAU,EAAE,CAAC;IAClC,CAAC;IAKD,IAAI,CAAC;QACH,OAAO,IAAI,CAAC,MAAM,CAAC,UAAU,EAAE,CAAC,EAAE,CAAC;IACrC,CAAC;IAID,IAAI,CAAC,CAAC,CAAS;QACb,MAAM,CAAC,GAAG,IAAI,CAAC,MAAM,CAAC,UAAU,EAAE,CAAC;QACnC,CAAC,CAAC,SAAS,CAAC,CAAC,GAAG,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC;QACzB,IAAI,CAAC,MAAM,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC;IAC5B,CAAC;IAID,IAAI,CAAC;QACH,OAAO,IAAI,CAAC,MAAM,CAAC,UAAU,EAAE,CAAC,EAAE,CAAC;IACrC,CAAC;IAID,IAAI,CAAC,CAAC,CAAS;QACb,MAAM,CAAC,GAAG,IAAI,CAAC,MAAM,CAAC,UAAU,EAAE,CAAC;QACnC,CAAC,CAAC,SAAS,CAAC,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,CAAC;QACzB,IAAI,CAAC,MAAM,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC;IAC5B,CAAC;IACD,IAAI,KAAK;QACP,OAAO,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC;IAC3B,CAAC;IACD,IAAI,KAAK,CAAC,CAAS;QACjB,IAAI,CAAC,MAAM,CAAC,CAAC,EAAE,IAAI,CAAC,MAAM,CAAC,CAAC;IAC9B,CAAC;IACD,IAAI,SAAS;QACX,OAAO,IAAI,CAAC,MAAM,CAAC,UAAU,EAAE,CAAC,KAAK,EAAE,CAAC;IAC1C,CAAC;IACD,IAAI,SAAS,CAAC,CAAS;QACrB,IAAI,CAAC,UAAU,CAAC,CAAC,EAAE,IAAI,CAAC,UAAU,CAAC,CAAC;IACtC,CAAC;IACD,IAAI,UAAU;QACZ,OAAO,IAAI,CAAC,MAAM,CAAC,UAAU,EAAE,CAAC,MAAM,EAAE,CAAC;IAC3C,CAAC;IACD,IAAI,UAAU,CAAC,CAAS;QACtB,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,SAAS,EAAE,CAAC,CAAC,CAAC;IACrC,CAAC;IACD,IAAI,MAAM;QACR,OAAO,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC;IAC5B,CAAC;IACD,IAAI,MAAM,CAAC,CAAS;QAClB,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,KAAK,EAAE,CAAC,CAAC,CAAC;IAC7B,CAAC;IACD,IAAI,GAAG;QACL,OAAO,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC;IACzB,CAAC;IACD,IAAI,GAAG,CAAC,CAAS;QACf,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC;IACjB,CAAC;IACD,IAAI,UAAU;;QACZ,OAAO,MAAA,IAAI,CAAC,WAAW,mCAAI,aAAa,CAAC,UAAU,CAAC;IACtD,CAAC;IACD,IAAI,UAAU,CAAC,CAAkB;QAC/B,IAAI,CAAC,WAAW,GAAG,CAAC,CAAC;IACvB,CAAC;IACD,IAAI,YAAY;QACd,OAAO,IAAI,CAAC,EAAE,CAAC,CAAC,CAAsB,CAAC;IACzC,CAAC;IAuBD,IAAY,WAAW;QACrB,OAAO,IAAI,CAAC,YAAY,CAAC;IAC3B,CAAC;IA2BD,IAAI,MAAM;QACR,OAAO,IAAI,CAAC,OAAO,CAAC;IACtB,CAAC;IAED,IAAI,MAAM,CAAC,MAAe;QACxB,MAAM,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC;QACvB,IAAI,IAAI,CAAC,OAAO,EAAE;YAChB,IAAI,CAAC,OAAO,CAAC,cAAc,CAAC,MAAM,EAAE,IAAI,CAAC,WAAW,CAAC,CAAC;SACvD;QACD,MAAM,CAAC,WAAW,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;QAClC,IAAI,CAAC,OAAO,GAAG,MAAM,CAAC;QACtB,IAAI,CAAC,OAAO,CAAC,EAAE,CAAC,MAAM,EAAE,IAAI,CAAC,WAAW,CAAC,CAAC;IAC5C,CAAC;IASD,YAAY,SAAgC,EAAE,EAAE,OAA0B,EAAE;;QAC1E,KAAK,CAAC,EAAE,CAAC,CAAC;QA3BF,uBAAkB,GAAY,IAAI,CAAC;QA4OnC,qBAAgB,GAAG,CAAC,OAAgB,EAAE,EAAE;YAChD,IAAI,IAAI,CAAC,WAAW,GAAG,CAAC,EAAE;gBACxB,OAAO;aACR;YACD,IAAI,OAAO,EAAE;gBACX,IAAI,IAAI,CAAC,WAAW,EAAE;oBACpB,MAAM,CAAC,GAAG,IAAI,CAAC,MAAM,CAAC,UAAU,EAAE,CAAC;oBACnC,IAAI,CAAC,WAAW,CAAC,QAAQ,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,CAAC;iBAC9D;gBACD,IAAI,IAAI,CAAC,WAAW,GAAG,CAAC,EAAE;oBACxB,IAAI,CAAC,eAAe,EAAE,CAAC;iBACxB;gBACD,IAAI,CAAC,WAAW,GAAG,CAAC,CAAC;aACtB;iBAAM;gBACL,IAAI,CAAC,WAAW,GAAG,CAAC,CAAC;aACtB;QACH,CAAC,CAAC;QAiFQ,iBAAY,GAAG,CAAC,KAAa,EAAE,EAAE;YACzC,IAAA,mDAA4B,EAAC,IAAI,CAAC,CAAC;YACnC,IAAI,CAAC,iBAAiB,CAAC,OAAO,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,KAAK,CAAC,CAAC,CAAC;QAClD,CAAC,CAAC;QACQ,qBAAgB,GAAG,CAAC,UAAe,EAAE,EAAE;YAC/C,IAAI,CAAC,iBAAiB,IAAI,IAAI,CAAC,iBAAiB,CAAC,UAAU,CAAC,CAAC;QAC/D,CAAC,CAAC;QACQ,mBAAc,GAAG,CAAC,UAAe,EAAE,EAAE;YAC7C,IAAI,CAAC,eAAe,IAAI,IAAI,CAAC,eAAe,CAAC,UAAU,CAAC,CAAC;QAC3D,CAAC,CAAC;QAEQ,gBAAW,GAAG,CAAC,KAAa,EAAE,EAAE;YACxC,IAAI,CAAC,WAAW,EAAE,CAAC;YACnB,IAAI,CAAC,gBAAgB,CAAC,OAAO,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,KAAK,CAAC,CAAC,CAAC;YAC/C,IAAI,CAAC,mBAAmB,IAAI,IAAI,CAAC,mBAAmB,CAAC,OAAO,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,KAAK,CAAC,CAAC,CAAC;YAC9E,IAAI,CAAC,mBAAmB,GAAG,IAAI,CAAC;YAChC,IAAI,CAAC,kBAAkB,GAAG,KAAK,CAAC;QAClC,CAAC,CAAC;QAEQ,gBAAW,GAAG,GAAG,EAAE;YAC3B,IAAI,CAAC,kBAAkB,GAAG,IAAI,CAAC;YAE/B,IAAI,CAAC,KAAK,KAAK,WAAW,IAAI,IAAI,CAAC,eAAe,EAAE,CAAC;QACvD,CAAC,CAAC;QAxUA,IAAI,CAAC,MAAM,GAAG,MAAM,CAAC;QACrB,IAAI,CAAC,KAAK,GAAG,IAAI,aAAK,EAAE,CAAC;QACzB,IAAI,CAAC,KAAK,GAAG;YACX,YAAY,EAAE,IAAI,kBAAQ,CAAC,CAAC,OAAO,CAAC,CAAC;YACrC,WAAW,EAAE,IAAI,kBAAQ,CAAC,CAAC,OAAO,CAAC,CAAC;YACpC,gBAAgB,EAAE,IAAI,kBAAQ,CAAC,CAAC,OAAO,CAAC,CAAC;YACzC,cAAc,EAAE,IAAI,kBAAQ,CAAC,CAAC,OAAO,CAAC,CAAC;SACxC,CAAC;QACF,IAAI,CAAC,MAAM,GAAG,MAAA,IAAI,CAAC,MAAM,mCAAI,yBAAW,CAAC,MAAM,CAAC;QAChD,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,GAAG,IAAI,IAAA,wBAAY,GAAE,EAAE;YAEtC,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,SAAS,CAAC,CAAC;SAC/B;QACD,IAAI,CAAC,aAAa,GAAG,MAAA,MAAA,IAAI,CAAC,aAAa,mCAAI,yBAAW,CAAC,aAAa,mCAAI,CAAC,GAAG,EAAE,CAAC,IAAI,sBAAa,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC;QAC/G,IAAI,CAAC,oBAAoB;YACvB,MAAA,IAAI,CAAC,oBAAoB,mCACzB,CAAC,IAAI,CAAC,aAAa;gBACjB,CAAC,CAAC,GAAG,EAAE,CAAC,IAAI,CAAC,aAA+B;gBAC5C,CAAC,CAAC,MAAA,yBAAW,CAAC,oBAAoB,mCAAI,CAAC,GAAG,EAAE,CAAC,IAAI,kDAA0B,EAAE,CAAC,CAAC,CAAC;QACpF,IAAI,CAAC,MAAM,GAAG,MAAA,IAAI,CAAC,MAAM,mCAAI,IAAI,CAAC,aAAa,EAAE,CAAC;QAClD,IAAI,CAAC,aAAa;YAChB,MAAA,MAAA,MAAA,IAAI,CAAC,aAAa,mCAClB,MAAA,yBAAW,CAAC,oBAAoB,yEAAI,mCACpC,yBAAW,CAAC,aAAa,mCACzB,IAAI,qCAAoB,EAAE,CAAC;QAC7B,IAAI,CAAC,aAAa;YAChB,MAAA,MAAA,MAAA,IAAI,CAAC,aAAa,mCAClB,MAAA,yBAAW,CAAC,oBAAoB,yEAAI,mCACpC,yBAAW,CAAC,aAAa,mCACzB,IAAI,qCAAoB,EAAE,CAAC;QAC7B,IAAI,CAAC,YAAY,GAAG,MAAA,MAAA,IAAI,CAAC,YAAY,mCAAI,yBAAW,CAAC,YAAY,mCAAI,IAAI,mCAAmB,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;QAC1G,IAAI,CAAC,cAAc,GAAG,MAAA,MAAA,IAAI,CAAC,cAAc,mCAAI,yBAAW,CAAC,cAAc,mCAAI,IAAI,uCAAqB,EAAE,CAAC;QACvG,IAAI,CAAC,aAAa,GAAG,IAAI,CAAC,aAAa,CAAC;QACxC,IAAI,CAAC,aAAa,CAAC,MAAM,CAAC,IAAI,EAAE,MAAM,CAAC,CAAC;QACxC,IAAI,CAAC,iBAAiB,GAAG,EAAE,CAAC;QAC5B,IAAI,CAAC,gBAAgB,GAAG,EAAE,CAAC;QAE3B,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC;YACjB,KAAK,EAAE,MAAM,CAAC,KAAK;YACnB,MAAM,EAAE,MAAM,CAAC,MAAM;YACrB,OAAO,EAAE,MAAM,CAAC,OAAO;YACvB,SAAS,EAAE,MAAM,CAAC,SAAS;YAC3B,GAAG,EAAE,MAAM,CAAC,GAAG,IAAI,IAAI,CAAC,MAAM,CAAC,gBAAgB;YAC/C,eAAe,EAAE,MAAA,MAAM,CAAC,eAAe,mCAAI,CAAC,MAAM,CAAC,MAAM;YACzD,KAAK,EAAE,MAAM,CAAC,KAAK,IAAI,EAAE;YACzB,MAAM,EAAE,MAAM,CAAC,MAAM;SACtB,CAAC,CAAC;QAEH,IAAI,CAAC,KAAK,GAAG,QAAQ,CAAC;QACtB,IAAI,CAAC,WAAW,GAAG,CAAC,CAAC;QACrB,IAAI,CAAC,kBAAkB,EAAE,CAAC;QAS1B,IAAI,CAAC,WAAW,GAAG,MAAA,MAAM,CAAC,UAAU,mCAAI,aAAa,CAAC,UAAU,CAAC;QAGjE,IAAI,CAAC,KAAK,GAAG,IAAI,CAAC;QAIlB,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,YAAY,CAAC,WAAW,CAAC,IAAI,EAAE,EAAE,IAAI,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC;QAEtE,IAAI,CAAC,uBAAuB,GAAG,IAAI,GAAG,EAAE,CAAC;QACzC,IAAI,CAAC,mBAAmB,GAAG,KAAK,CAAC;QACjC,IAAA,gDAA2B,EAAC,IAAI,CAAC,CAAC;QAClC,IAAI,CAAC,oBAAoB,GAAG,IAAI,2CAAmB,CAAC,IAAI,EAAE,IAAA,gDAA2B,EAAC,IAAI,CAAC,CAAC,CAAC;QAC7F,IAAI,CAAC,oBAAoB,GAAG,IAAA,+CAA0B,EACpD,IAAI,EACJ,MAAA,IAAI,CAAC,KAAK,0CAAE,gBAA0E,CACvF,CAAC;QACF,IAAI,CAAC,KAAK,CAAC,wBAAwB,GAAG,GAAG,EAAE;;YACzC,IAAI,CAAC,IAAI,CAAC,oBAAoB,EAAE;gBAC9B,OAAO;aACR;YAED,IAAA,4DAAuC,EACrC,IAAI,CAAC,oBAAoB,EACzB,MAAA,IAAI,CAAC,KAAK,0CAAE,gBAA0E,CACvF,CAAC;YACF,IAAA,sDAA+B,EAAC,IAAI,CAAC,oBAAoB,EAAE,IAAI,CAAC,CAAC;QACnE,CAAC,CAAC;QACF,IAAI,CAAC,WAAW,GAAG,MAAM,CAAC,WAAW,CAAC;QAGtC,IAAI,MAAM,CAAC,UAAU,EAAE;YACrB,IAAI,CAAC,gBAAgB,EAAE,CAAC;SACzB;QACD,IAAI,MAAM,CAAC,WAAW,EAAE;YACtB,IAAI,CAAC,iBAAiB,EAAE,CAAC;SAC1B;QAED,IAAI,MAAM,CAAC,kBAAkB,KAAK,KAAK,EAAE;YACvC,IAAI,CAAC,iBAAiB,EAAE,CAAC;SAC1B;QAED,IAAI,MAAM,CAAC,mBAAmB,EAAE;YAC9B,IAAI,CAAC,mBAAmB,CAAC,MAAM,CAAC,mBAAmB,CAAC,CAAC;SACtD;QACD,IAAI,MAAM,CAAC,QAAQ,EAAE;YACnB,IAAI,CAAC,oBAAoB,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC;SAC5C;QAED,MAAM,CAAC,YAAY,IAAI,IAAI,CAAC,YAAY,EAAE,CAAC;QAC3C,IAAI,CAAC,KAAK,CAAC,YAAY,CAAC,GAAG,CAAC,aAAa,EAAE,IAAI,CAAC,YAAY,CAAC,CAAC;QAC9D,IAAI,CAAC,KAAK,CAAC,WAAW,CAAC,GAAG,CAAC,aAAa,EAAE,IAAI,CAAC,WAAW,CAAC,CAAC;QAC5D,IAAI,MAAM,CAAC,YAAY,EAAE;YACvB,IAAI,CAAC,iBAAiB,CAAC,IAAI,CAAC,MAAM,CAAC,YAAY,CAAC,CAAC;SAClD;QACD,IAAI,MAAM,CAAC,WAAW,EAAE;YACtB,IAAI,CAAC,gBAAgB,CAAC,IAAI,CAAC,MAAM,CAAC,WAAW,CAAC,CAAC;SAChD;QACD,IAAI,CAAC,KAAK,CAAC,gBAAgB,CAAC,GAAG,CAAC,aAAa,EAAE,IAAI,CAAC,gBAAgB,CAAC,CAAC;QACtE,IAAI,CAAC,KAAK,CAAC,cAAc,CAAC,GAAG,CAAC,aAAa,EAAE,IAAI,CAAC,cAAc,CAAC,CAAC;QAClE,IAAI,CAAC,iBAAiB,GAAG,MAAM,CAAC,gBAAgB,CAAC;QACjD,IAAI,CAAC,eAAe,GAAG,MAAM,CAAC,cAAc,CAAC;QAC7C,IAAI,CAAC,uBAAuB,GAAG,MAAM,CAAC,gBAAgB,KAAK,KAAK,CAAC;QACjE,IAAI,CAAC,MAAM,CAAC,QAAQ,EAAE;YACpB,MAAM,CAAC,QAAQ,GAAG;gBAChB,cAAc,EAAE,QAAQ;aACzB,CAAC;SACH;QACD,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC;QAE9B,IAAI,MAAM,CAAC,UAAU,IAAI,IAAA,iBAAQ,EAAC,IAAI,CAAC,WAAW,CAAC,IAAI,IAAI,CAAC,WAAW,CAAC,QAAQ,CAAC,GAAG,CAAC,EAAE;YACrF,IAAI,CAAC,aAAa,CAAC,EAAE,UAAU,EAAE,IAAI,CAAC,WAAW,EAAE,CAAC,CAAC;SACtD;QAED,IAAI,CAAC,WAAW,CAAC,MAAM,CAAC,CAAC;QACzB,IAAI,CAAC,KAAK,GAAG,MAAA,MAAM,CAAC,KAAK,mCAAI,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,MAAM,EAAE,GAAG,CAAC,CAAC,CAAC;IAC7D,CAAC;IAED,WAAW,CAAC,MAA6B;;QACvC,IAAK,IAAY,CAAC,YAAY,IAAK,IAAY,CAAC,cAAc,EAAE;YAC9D,IAAI,CAAC,OAAO,GAAG,MAAM,CAAC,MAAM,IAAK,IAAY,CAAC,YAAY,CAAC,IAAI,CAAC,CAAC;YACjE,IAAI,CAAC,OAAO,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC;YAC7B,IAAI,CAAA,MAAA,IAAI,CAAC,MAAM,CAAC,QAAQ,0CAAE,cAAc,MAAK,aAAa,EAAE;gBAC1D,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC;aACzB;YACD,IAAI,CAAC,QAAQ,GAAI,IAAY,CAAC,cAAc,EAAE,CAAC;YAC/C,IAAI,CAAC,OAAO,CAAC,WAAW,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;YACxC,IAAI,CAAC,OAAO,CAAC,EAAE,CAAC,MAAM,EAAE,IAAI,CAAC,WAAW,CAAC,CAAC;SAC3C;IACH,CAAC;IAED,YAAY;QACV,IAAI,IAAI,CAAC,OAAO,IAAI,IAAI,CAAC,QAAQ,EAAE;YACjC,IAAI,CAAC,OAAO,CAAC,KAAK,EAAE,CAAC;YACrB,IAAI,CAAC,QAAQ,CAAC,MAAM,EAAE,CAAC;SACxB;IACH,CAAC;IAED,WAAW,CAAC,KAAa,CAAC,CAAC;QACzB,IAAI,CAAC,WAAW,GAAG,EAAE,CAAC;IACxB,CAAC;IAED,YAAY;QACV,IAAI,CAAC,WAAW,GAAG,CAAC,CAAC;IACvB,CAAC;IAES,kBAAkB;QAC1B,IAAI,IAAI,CAAC,MAAM,CAAC,YAAY,IAAI,CAAC,IAAI,CAAC,YAAY,EAAE;YAClD,IAAI,CAAC,YAAY,GAAG,IAAI,mBAAW,iBACjC,aAAa,EAAE,IAAI,CAAC,MAAM,EAC1B,UAAU,EAAE,IAAI,CAAC,MAAM,CAAC,GAAG,IAAI,IAAI,CAAC,MAAM,CAAC,gBAAgB,EAC3D,QAAQ,EAAE,IAAW,EACrB,MAAM,EAAE,IAAI,CAAC,MAAM,EACnB,qBAAqB,EAAE,IAAI,CAAC,MAAM,CAAC,qBAAqB,EACxD,mBAAmB,EAAE,IAAI,CAAC,MAAM,CAAC,mBAAmB,IACjD,IAAI,CAAC,MAAM,CAAC,KAAK,EACpB,CAAC;SACJ;IACH,CAAC;IAED,aAAa,CAAC,OAAgB;QAC5B,IAAI,OAAO,EAAE;YACX,IAAI,CAAC,WAAW,GAAG,CAAC,QAAQ,CAAC;SAC9B;aAAM;YAEL,IAAI,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,sBAAsB,KAAK,KAAK,EAAE;gBACzD,IAAI,CAAC,WAAW,GAAG,IAAI,CAAC,MAAM,CAAC,SAAS,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;aACpD;iBAAM;gBACL,IAAI,CAAC,WAAW,GAAG,CAAC,CAAC;aACtB;SACF;IACH,CAAC;IAGD,OAAO,CAAC,MAAqB;QAC3B,IAAI,CAAC,aAAa,CAAC,MAAM,CAAC,sBAAsB,CAAC,CAAC;QAClD,IAAI,CAAC,MAAM,CAAC,QAAQ,GAAG,MAAM,CAAC;IAChC,CAAC;IAGS,aAAa,CAAC,yBAAkC,KAAK;QAC7D,IAAI,CAAC,sBAAsB,EAAE;YAC3B,OAAO;SACR;QAED,IAAI,CAAC,WAAW,GAAG,IAAI,CAAC,WAAW,GAAG,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC,SAAS,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;QAC7F,IAAI,CAAC,MAAM,CAAC,eAAe,CAAC,IAAI,CAAC,gBAAgB,CAAC,CAAC;IACrD,CAAC;IAoBD,WAAW;QACT,OAAO,IAAI,CAAC,QAAQ,CAAC;IACvB,CAAC;IAED,YAAY,CAAC,OAAkB;QAC7B,MAAM,EACJ,MAAM,GAAG,EAAE,CAAC,EAAE,IAAI,CAAC,KAAK,GAAG,CAAC,EAAE,CAAC,EAAE,IAAI,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,EAC7E,KAAK,GAAG,EAAE,EACV,KAAK,GAAG,CAAC,EACT,IAAI,GAAG,CAAC,EACR,MAAM,EACN,UAAU,GAAG,CAAC,EACd,UAAU,EACX,GAAG,OAAO,CAAC;QAEZ,uCACK,OAAO,KACV,MAAM;YACN,KAAK;YACL,KAAK;YACL,IAAI;YACJ,MAAM;YACN,UAAU;YACV,UAAU,IACV;IACJ,CAAC;IAED,YAAY,CAAC,OAAkB;;QAC7B,IAAI,CAAC,QAAQ,GAAG,OAAO,CAAC;QACxB,MAAM,SAAS,GAAG,IAAI,CAAC,YAAY,CAAC,OAAO,CAAC,CAAC;QAC7C,MAAM,EAAE,KAAK,EAAE,MAAM,EAAE,MAAM,EAAE,KAAK,EAAE,IAAI,EAAE,UAAU,EAAE,UAAU,EAAE,GAAG,SAAS,CAAC;QACjF,MAAM,EAAE,GAAG,GAAG,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,KAAK,GAAG,OAAO,EAAE,OAAO,EAAE,GAAG,KAAK,CAAC;QAE7D,MAAM,OAAO,GAAG,CAAC,MAAA,MAAM,CAAC,CAAC,mCAAI,IAAI,CAAC,KAAK,GAAG,CAAC,CAAC,GAAG,CAAC,MAAA,MAAM,CAAC,EAAE,mCAAI,CAAC,CAAC,CAAC;QAChE,MAAM,OAAO,GAAG,CAAC,MAAA,MAAM,CAAC,CAAC,mCAAI,IAAI,CAAC,MAAM,GAAG,CAAC,CAAC,GAAG,CAAC,MAAA,MAAM,CAAC,EAAE,mCAAI,CAAC,CAAC,CAAC;QACjE,MAAM,OAAO,GAAG,CAAC,MAAA,MAAM,CAAC,CAAC,mCAAI,CAAC,CAAC,GAAG,CAAC,MAAA,MAAM,CAAC,EAAE,mCAAI,CAAC,CAAC,CAAC;QACnD,MAAM,UAAU,GAAS,CAAC,OAAO,EAAE,OAAO,EAAE,OAAO,CAAC,CAAC;QACrD,MAAM,CAAC,GAAG,CAAC,CAAC;QACZ,IAAI,OAAO,GAAG,CAAC,CAAC;QAChB,IAAI,OAAO,GAAG,CAAC,CAAC;QAChB,IAAI,OAAO,GAAG,CAAC,CAAC;QAChB,IAAI,CAAC,MAAM,EAAE;YACX,OAAO,GAAG,IAAI,CAAC,GAAG,CAAC,KAAK,CAAC,GAAG,OAAO,CAAC;YACpC,OAAO,GAAG,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,GAAG,OAAO,CAAC;YACnC,OAAO,GAAG,IAAI,CAAC,GAAG,CAAC,KAAK,CAAC,GAAG,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;SAChD;QAED,MAAM,gBAAgB,GAAG,iBAAO,CAAC,SAAS,CAAC,kBAAkB,CAAC,CAAC;QAE/D,IAAI,gBAAgB,EAAE;YACpB,IAAI,CAAC,KAAK,GAAG,IAAI,gBAAgB,CAAC,GAAG,EAAE,KAAK,EAAE,OAAO,CAAC,CAAC;SACxD;QACD,MAAM,YAAY,GAAG;YACnB,IAAI,EAAE,CAAC;YACP,KAAK,EAAE,IAAI,CAAC,KAAK;YACjB,GAAG,EAAE,CAAC;YACN,MAAM,EAAE,IAAI,CAAC,MAAM;YACnB,UAAU,EAAE,UAAU;YACtB,UAAU;YACV,UAAU,EAAE;gBACV,GAAG,EAAE,CAAC,OAAO,EAAE,OAAO,EAAE,OAAO,CAAS;gBACxC,MAAM,EAAE,UAAU;gBAClB,EAAE,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAS;aACtB;SACF,CAAC;QACF,IAAI,IAAI,CAAC,MAAM,EAAE;YACf,IAAI,CAAC,MAAM,CAAC,MAAM,GAAG,YAAY,CAAC;SACnC;aAAM;YACL,MAAM,WAAW,GAAG,iBAAO,CAAC,SAAS,CAAC,aAAa,CAAC,CAAC;YACrD,IAAI,WAAW,EAAE;gBACf,IAAI,CAAC,MAAM,GAAG,IAAI,WAAW,CAAC,YAAY,CAAC,CAAC;aAC7C;SACF;QAED,IAAI,OAAO,CAAC,qBAAqB,EAAE;YACjC,IAAI,CAAC,qBAAqB,EAAE,CAAC;SAC9B;IACH,CAAC;IA2BD,eAAe,CAAC,EAA2B;QACzC,IAAI,CAAC,iBAAiB,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;IAClC,CAAC;IAED,kBAAkB,CAAC,EAA2B;QAC5C,IAAI,CAAC,iBAAiB,GAAG,IAAI,CAAC,iBAAiB,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,KAAK,EAAE,CAAC,CAAC;IACxE,CAAC;IAED,cAAc,CAAC,EAA2B;QACxC,IAAI,CAAC,gBAAgB,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;IACjC,CAAC;IAED,iBAAiB,CAAC,EAA2B;QAC3C,IAAI,CAAC,gBAAgB,GAAG,IAAI,CAAC,gBAAgB,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,KAAK,EAAE,CAAC,CAAC;IACtE,CAAC;IAED,eAAe,CAAC,EAA2B;QACzC,IAAI,CAAC,IAAI,CAAC,mBAAmB,EAAE;YAC7B,IAAI,CAAC,mBAAmB,GAAG,EAAE,CAAC;SAC/B;QACD,IAAI,CAAC,mBAAmB,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;IACpC,CAAC;IAED,qBAAqB;QACnB,IAAI,IAAI,CAAC,cAAc,EAAE;YACvB,OAAO;SACR;QACD,IAAI,CAAC,cAAc,GAAG,IAAI,CAAC;QAC3B,MAAM,qBAAqB,GAAG,iBAAO,CAAC,SAAS,CAAC,uBAAuB,CAAC,CAAC;QAEzE,IAAI,qBAAqB,EAAE;YACzB,IAAI,CAAC,aAAa,CAAC,QAAQ,CAAC,IAAI,qBAAqB,EAAE,CAAC,CAAC;SAC1D;IACH,CAAC;IAED,qBAAqB;QACnB,IAAI,CAAC,IAAI,CAAC,cAAc,EAAE;YACxB,OAAO;SACR;QACD,IAAI,CAAC,cAAc,GAAG,KAAK,CAAC;QAC5B,IAAI,CAAC,aAAa,CAAC,iBAAiB,CAAC,uBAAuB,CAAC,CAAC,OAAO,CAAC,MAAM,CAAC,EAAE;YAC7E,IAAI,CAAC,aAAa,CAAC,UAAU,CAAC,MAAM,CAAC,CAAC;QACxC,CAAC,CAAC,CAAC;IACL,CAAC;IAED,gBAAgB;QACd,IAAI,IAAI,CAAC,UAAU,EAAE;YACnB,OAAO;SACR;QACD,IAAI,CAAC,UAAU,GAAG,IAAI,CAAC;QACvB,IAAI,CAAC,aAAa,CAAC,QAAQ,CAAC,IAAI,qCAAgB,EAAE,CAAC,CAAC;IACtD,CAAC;IACD,iBAAiB;QACf,IAAI,CAAC,IAAI,CAAC,UAAU,EAAE;YACpB,OAAO;SACR;QACD,IAAI,CAAC,UAAU,GAAG,KAAK,CAAC;QACxB,IAAI,CAAC,aAAa,CAAC,iBAAiB,CAAC,kBAAkB,CAAC,CAAC,OAAO,CAAC,MAAM,CAAC,EAAE;YACxE,IAAI,CAAC,aAAa,CAAC,UAAU,CAAC,MAAM,CAAC,CAAC;QACxC,CAAC,CAAC,CAAC;IACL,CAAC;IACD,iBAAiB;QACf,IAAI,IAAI,CAAC,WAAW,IAAI,IAAI,CAAC,MAAM,CAAC,GAAG,KAAK,MAAM,EAAE;YAClD,OAAO;SACR;QACD,IAAI,CAAC,WAAW,GAAG,IAAI,CAAC;QACxB,IAAI,CAAC,aAAa,CAAC,QAAQ,CAAC,IAAI,uCAAiB,EAAE,CAAC,CAAC;IACvD,CAAC;IACD,kBAAkB;QAChB,IAAI,CAAC,IAAI,CAAC,WAAW,EAAE;YACrB,OAAO;SACR;QACD,IAAI,CAAC,WAAW,GAAG,KAAK,CAAC;QACzB,IAAI,CAAC,aAAa,CAAC,iBAAiB,CAAC,mBAAmB,CAAC,CAAC,OAAO,CAAC,MAAM,CAAC,EAAE;YACzE,IAAI,CAAC,aAAa,CAAC,UAAU,CAAC,MAAM,CAAC,CAAC;QACxC,CAAC,CAAC,CAAC;IACL,CAAC;IACD,2BAA2B;QACzB,IAAI,IAAI,CAAC,kBAAkB,EAAE;YAC3B,OAAO;SACR;QACD,IAAI,CAAC,kBAAkB,GAAG,IAAI,CAAC;QAC/B,IAAI,CAAC,aAAa,CAAC,QAAQ,CAAC,IAAI,4DAA2B,EAAE,CAAC,CAAC;IACjE,CAAC;IACD,4BAA4B;QAC1B,IAAI,CAAC,IAAI,CAAC,kBAAkB,EAAE;YAC5B,OAAO;SACR;QACD,IAAI,CAAC,kBAAkB,GAAG,KAAK,CAAC;QAChC,IAAI,CAAC,aAAa,CAAC,iBAAiB,CAAC,6BAA6B,CAAC,CAAC,OAAO,CAAC,MAAM,CAAC,EAAE;YACnF,IAAI,CAAC,aAAa,CAAC,UAAU,CAAC,MAAM,CAAC,CAAC;QACxC,CAAC,CAAC,CAAC;IACL,CAAC;IACD,iBAAiB;QACf,IAAI,IAAI,CAAC,WAAW,EAAE;YACpB,OAAO;SACR;QACD,IAAI,CAAC,WAAW,GAAG,IAAI,eAAM,EAAE,CAAC;QAChC,IAAI,MAAM,GAAG,IAAI,CAAC,aAAa,CAAC,iBAAiB,CAAC,mBAAmB,CAAC,CAAC,CAAC,CAAC,CAAC;QAC1E,IAAI,CAAC,MAAM,EAAE;YACX,MAAM,GAAG,IAAI,uCAAiB,EAAE,CAAC;YACjC,IAAI,CAAC,aAAa,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC;SACrC;aAAM;YACL,MAAM,CAAC,QAAQ,CAAC,IAAI,CAAC,aAAa,CAAC,CAAC;SACrC;IACH,CAAC;IACD,kBAAkB;QAChB,IAAI,CAAC,IAAI,CAAC,WAAW,EAAE;YACrB,OAAO;SACR;QACD,IAAI,CAAC,WAAW,GAAG,IAAI,CAAC;QACxB,IAAI,CAAC,aAAa,CAAC,iBAAiB,CAAC,mBAAmB,CAAC,CAAC,OAAO,CAAC,MAAM,CAAC,EAAE;YACzE,IAAI,CAAC,aAAa,CAAC,UAAU,CAAC,MAAM,CAAC,CAAC;QACxC,CAAC,CAAC,CAAC;IACL,CAAC;IACD,YAAY;QACV,IAAI,IAAI,CAAC,aAAa,EAAE;YACtB,OAAO;SACR;QACD,IAAI,CAAC,aAAa,GAAG,IAAI,CAAC;QAE1B,MAAM,gBAAgB,GAAG,iBAAO,CAAC,SAAS,CAAC,kBAAkB,CAAC,CAAC;QAE/D,IAAI,gBAAgB,EAAE;YACpB,IAAI,CAAC,aAAa,CAAC,QAAQ,CAAC,IAAI,gBAAgB,EAAE,CAAC,CAAC;SACrD;IACH,CAAC;IACD,aAAa;QACX,IAAI,CAAC,IAAI,CAAC,aAAa,EAAE;YACvB,OAAO;SACR;QACD,IAAI,CAAC,aAAa,GAAG,KAAK,CAAC;QAC3B,IAAI,CAAC,aAAa,CAAC,iBAAiB,CAAC,kBAAkB,CAAC,CAAC,OAAO,CAAC,MAAM,CAAC,EAAE;YACxE,IAAI,CAAC,aAAa,CAAC,UAAU,CAAC,MAAM,CAAC,CAAC;QACxC,CAAC,CAAC,CAAC;IACL,CAAC;IACD,mBAAmB,CAAC,SAAe;QACjC,IAAI,IAAI,CAAC,aAAa,EAAE;YACtB,OAAO;SACR;QACD,MAAM,mBAAmB,GAAG,iBAAO,CAAC,SAAS,CAAC,qBAAqB,CAAC,CAAC;QAErE,IAAI,mBAAmB,EAAE;YACvB,IAAI,CAAC,aAAa,GAAG,SAAS,CAAC;YAC/B,IAAI,CAAC,aAAa,CAAC,QAAQ,CAAC,IAAI,mBAAmB,EAAE,CAAC,CAAC;SACxD;IACH,CAAC;IACD,oBAAoB;QAClB,IAAI,CAAC,IAAI,CAAC,aAAa,EAAE;YACvB,OAAO;SACR;QACD,IAAI,CAAC,aAAa,GAAG,KAAK,CAAC;QAC3B,IAAI,CAAC,aAAa,CAAC,iBAAiB,CAAC,qBAAqB,CAAC,CAAC,OAAO,CAAC,MAAM,CAAC,EAAE;YAC3E,IAAI,CAAC,aAAa,CAAC,UAAU,CAAC,MAAM,CAAC,CAAC;QACxC,CAAC,CAAC,CAAC;IACL,CAAC;IACD,oBAAoB,CAAC,SAAe;QAClC,IAAI,IAAI,CAAC,cAAc,EAAE;YACvB,OAAO;SACR;QACD,MAAM,oBAAoB,GAAG,iBAAO,CAAC,SAAS,CAAC,sBAAsB,CAAC,CAAC;QAEvE,IAAI,oBAAoB,EAAE;YACxB,IAAI,CAAC,cAAc,GAAG,SAAS,CAAC;YAChC,IAAI,CAAC,aAAa,CAAC,QAAQ,CAAC,IAAI,oBAAoB,EAAE,CAAC,CAAC;SACzD;IACH,CAAC;IACD,qBAAqB;QACnB,IAAI,CAAC,IAAI,CAAC,cAAc,EAAE;YACxB,OAAO;SACR;QACD,IAAI,CAAC,cAAc,GAAG,KAAK,CAAC;QAC5B,IAAI,CAAC,aAAa,CAAC,iBAAiB,CAAC,sBAAsB,CAAC,CAAC,OAAO,CAAC,MAAM,CAAC,EAAE;YAC5E,IAAI,CAAC,aAAa,CAAC,UAAU,CAAC,MAAM,CAAC,CAAC;QACxC,CAAC,CAAC,CAAC;IACL,CAAC;IAED,gBAAgB,CAAC,IAAY;QAC3B,OAAO,IAAI,CAAC,aAAa,CAAC,iBAAiB,CAAC,IAAI,CAAC,CAAC;IACpD,CAAC;IAeS,mBAAmB;QAC3B,MAAM,OAAO,GAAG,IAAI,CAAC,MAAM,CAAC,UAAU,EAAE,CAAC;QACzC,IAAI,CAAC,WAAW,CAAC,QAAQ,CAAC,OAAO,CAAC,EAAE,EAAE,OAAO,CAAC,EAAE,EAAE,OAAO,CAAC,EAAE,EAAE,OAAO,CAAC,EAAE,CAAC,CAAC;QAC1E,OAAO,IAAI,CAAC,WAAW,CAAC;IAC1B,CAAC;IAED,YAAY,CAAC,OAAe,EAAE,OAAe;QAC3C,MAAM,IAAI,KAAK,CAAC,MAAM,CAAC,CAAC;IAC1B,CAAC;IAGD,WAAW,CAAC,QAAiB,EAAE,SAAqB;QAClD,IAAI,IAAI,CAAC,aAAa,KAAK,UAAU,EAAE;YACrC,OAAO;SACR;QAED,MAAM,KAAK,GAAG,IAAI,CAAC,YAAY,CAAC,WAAW,CAAC,IAAI,EAAE;YAChD,IAAI,EAAE,KAAK;YACX,SAAS;YACT,QAAQ;SACT,CAAC,CAAC;QACH,IAAI,CAAC,WAAW,CAAC,KAAK,CAAC,CAAC;QACxB,OAAO,KAAK,CAAC;IAOf,CAAC;IACD,SAAS,CAAC,EAA+C;QACvD,MAAM,QAAQ,GAAG,IAAI,CAAC,QAAQ,CAAC;QAC/B,QAAQ,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;QAClB,IAAI,CAAC,cAAc,EAAE,CAAC;QACtB,QAAQ,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE;YACnB,IAAI,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC;QACtB,CAAC,CAAC,CAAC;IACL,CAAC;IACD,WAAW,CAAC,QAAgB;QAC1B,OAAO,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,cAAc,CAAC,QAAQ,CAAa,CAAW,CAAC;IAC/E,CAAC;IACD,uBAAuB;QACrB,IAAI,IAAI,CAAC,aAAa,KAAK,UAAU,EAAE;YACrC,OAAO;SACR;QAGD,IAAI,IAAI,CAAC,uBAAuB,IAAI,CAAC,IAAI,CAAC,gBAAgB,EAAE;YAC1D,IAAI,CAAC,gBAAgB,GAAG,IAAI,CAAC,WAAW,EAAE,CAAC;YAC3C,IAAI,CAAC,gBAAgB,CAAC,IAAI,GAAG,sBAAsB,CAAC;YACpD,IAAI,CAAC,gBAAgB,CAAC,SAAS,CAAC,QAAQ,GAAG,KAAK,CAAC;YACjD,IAAI,CAAC,uBAAuB,CAAC,GAAG,CAAC,IAAI,CAAC,gBAAuB,CAAC,CAAC;SAChE;IAIH,CAAC;IAED,YAAY,CAAC,KAAc;QACzB,IAAI,CAAC,MAAM,CAAC,YAAY,CAAC,KAAK,CAAC,CAAC;IAClC,CAAC;IAED,MAAM,CAAC,MAAiB,EAAE,MAA8B;QACtD,IAAI,IAAI,CAAC,aAAa,KAAK,UAAU,EAAE;YACrC,OAAO;SACR;QACD,IAAI,CAAC,YAAY,EAAE,CAAC;QACpB,MAAM,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC;QACzB,IAAI,CAAC,KAAK,GAAG,WAAW,CAAC;QACzB,IAAI,CAAC,YAAY,CAAC,iBAAiB,CAAC,IAAI,CAAC,CAAC;QAC1C,IAAI,CAAC,IAAI,CAAC,WAAW,EAAE;YACrB,IAAI,CAAC,gBAAgB,GAAG,MAAM,CAAC;YAC/B,IAAI,CAAC,KAAK,CAAC,YAAY,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;YACnC,IAAI,CAAC,IAAI,CAAC,WAAW,EAAE;gBACrB,IAAI,CAAC,eAAe,CAAC,IAAI,CAAC,QAAoB,CAAC,CAAC;gBAChD,IAAI,CAAC,qBAAqB,EAAE,CAAC;gBAC7B,IAAI,CAAC,uBAAuB,CAAC,KAAK,EAAE,CAAC;aACtC;YACD,IAAI,CAAC,KAAK,CAAC,WAAW,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;SACnC;QACD,IAAI,CAAC,KAAK,GAAG,KAAK,CAAC;QACnB,IAAI,CAAC,WAAW,IAAI,IAAI,CAAC,WAAW,EAAE,CAAC;IACzC,CAAC;IAES,qBAAqB;QAE7B,IAAI,IAAI,CAAC,MAAM,CAAC,GAAG,KAAK,SAAS,EAAE;YACjC,MAAM,GAAG,GAAG,IAAI,CAAC,MAAM,CAAC,UAAU,EAAE,CAAC,aAAa,CAAC;YACnD,IAAI,CAAC,eAAe,CAAS,CAAC,KAAK,EAAE,CAAC,EAAE,EAAE;gBACxC,IAAI,CAAC,GAAG,CAAC,EAAE;oBACT,MAAM,KAAK,GAAG,KAAK;yBAChB,gBAAgB,EAAE;yBAClB,UAAU,EAAE;yBACZ,MAAM,CAAC,YAAY,CAAC,YAAY,CAAC,EAAE,CAAC,qBAAqB,EAAE,CAAC;oBAC/D,GAAG,CAAC,uBAAuB,CAAC,KAAK,CAAC,CAAC;iBACpC;YACH,CAAC,CAAC,CAAC;SACJ;QACD,OAAO;IAaT,CAAC;IAED,eAAe,CAAC,MAAiB,EAAE,KAAe;QAOhD,IAAI,IAAI,CAAC,uBAAuB,CAAC,IAAI,KAAK,IAAI,CAAC,aAAa,EAAE;YAC5D,CAAC,MAAM,IAAI,IAAI,CAAC,CAAC,OAAO,CAAS,CAAC,KAAU,EAAE,EAAE;gBAC9C,IAAI,CAAC,uBAAuB,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC;YAC1C,CAAC,CAAC,CAAC;SACJ;QACD,IAAI,CAAC,IAAI,CAAC,mBAAmB,EAAE;YAC7B,IAAI,CAAC,mBAAmB,GAAG,IAAI,CAAC;YAChC,IAAI,CAAC,MAAM,CAAC,iCAAiC,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,GAAG,EAAE;gBAC7D,IAAI,CAAC,oBAAoB,EAAE,EAAE,CAAC,IAAI,CAAC,mBAAmB,GAAG,KAAK,CAAC,CAAC;YAClE,CAAC,CAAC,CAAC;SACJ;IACH,CAAC;IAED,kBAAkB,CAAC,QAAoB,EAAE,YAAsB;QAC7D,IAAI,CAAC,oBAAoB,CAAC,QAAQ,CAAC,QAAQ,EAAE,YAAY,CAAC,CAAC;IAC7D,CAAC;IAED,oBAAoB;QAClB,OAAO,IAAA,gDAA2B,EAAC,IAAI,CAAC,CAAC,WAAW,EAAE,CAAC;IACzD,CAAC;IAED,sBAAsB;QACpB,IAAA,gDAA2B,EAAC,IAAI,CAAC,CAAC,KAAK,EAAE,CAAC;IAC5C,CAAC;IAED,oBAAoB;QAClB,IAAI,IAAI,CAAC,aAAa,KAAK,UAAU,EAAE;YACrC,OAAO;SACR;QACD,IAAI,CAAC,YAAY,EAAE,CAAC;QACpB,MAAM,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC;QACzB,IAAI,CAAC,KAAK,GAAG,WAAW,CAAC;QACzB,IAAI,CAAC,YAAY,CAAC,iBAAiB,CAAC,IAAI,CAAC,CAAC;QAC1C,IAAI,IAAI,CAAC,uBAAuB,CAAC,IAAI,IAAI,CAAC,IAAI,CAAC,WAAW,EAAE;YAC1D,IAAI,CAAC,KAAK,CAAC,YAAY,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;YACnC,IAAI,CAAC,IAAI,CAAC,WAAW,EAAE;gBACrB,IAAI,CAAC,eAAe,CAAC,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,uBAAuB,CAAC,MAAM,EAAE,CAAC,EAAE,IAAI,CAAC,gBAAgB,IAAI,EAAE,CAAC,CAAC;gBACrG,IAAI,CAAC,qBAAqB,EAAE,CAAC;gBAC7B,IAAI,CAAC,uBAAuB,CAAC,KAAK,EAAE,CAAC;aACtC;YACD,IAAI,CAAC,KAAK,CAAC,WAAW,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;SACnC;QACD,IAAI,CAAC,KAAK,GAAG,KAAK,CAAC;QACnB,IAAI,CAAC,WAAW,IAAI,IAAI,CAAC,WAAW,EAAE,CAAC;IACzC,CAAC;IAES,eAAe,CAAC,SAAmB,EAAE,MAA8B;QAC3E,MAAM,IAAI,GAAa,EAAE,CAAC;QAE1B,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,SAAS,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE;YACzC,IAAI,CAAC,GAAG,SAAS,CAAC,CAAC,CAAC,CAAC;YACrB,IAAI,CAAC,CAAC,SAAS,KAAK,SAAS,EAAE;gBAC7B,CAAC,GAAG,CAAC,CAAC,gBAAgB,EAAE,CAAC,WAAW,CAAC,KAAK,CAAC;aAC5C;YACD,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAC,EAAE;gBACrB,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;aACd;SACF;QACD,IAAI,CAAC,OAAO,CAAC,KAAK,CAAC,EAAE;YAEnB,IAAI,KAAK,CAAC,WAAW,GAAG,IAAI,CAAC,WAAW,EAAE;gBACxC,OAAO;aACR;YACD,KAAK,CAAC,WAAW,GAAG,IAAI,CAAC,WAAW,GAAG,CAAC,CAAC;YAEzC,IAAI,KAAK,KAAK,IAAI,CAAC,gBAAgB,EAAE;gBAEnC,IAAI,CAAC,WAAW,IAAI,IAAI,CAAC,WAAW,CAAC,KAAK,EAAE,CAAC;aAC9C;YACD,KAAK,CAAC,MAAM,CACV;gBACE,aAAa,EAAE,IAAI,CAAC,aAAa;gBACjC,UAAU,EAAE,KAAK,KAAK,IAAI,CAAC,YAAY,CAAC,CAAC,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC,CAAC,SAAS;gBACrE,YAAY,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,WAAW,IAAI,CAAC,IAAI,CAAC,WAAW,CAAC,KAAK,EAAE,CAAC;gBAC/D,OAAO,EAAE,IAAI,CAAC,MAAM,CAAC,UAAU,EAAE;gBACjC,WAAW,EAAE,IAAI,CAAC,MAAM,CAAC,mBAAmB,EAAE;aAC/C,kBACC,WAAW,EAAE,IAAI,CAAC,WAAW,IAAK,MAAM,EAC3C,CAAC;QACJ,CAAC,CAAC,CAAC;QAGH,IAAI,IAAI,CAAC,gBAAgB,IAAI,CAAC,SAAS,CAAC,QAAQ,CAAC,IAAI,CAAC,gBAAgB,CAAC,EAAE;YAEvE,IAAI,CAAC,WAAW,IAAI,IAAI,CAAC,WAAW,CAAC,KAAK,EAAE,CAAC;YAC7C,IAAI,CAAC,gBAAgB,CAAC,MAAM,CAC1B;gBACE,aAAa,EAAE,IAAI,CAAC,aAAa;gBACjC,YAAY,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,WAAW,IAAI,CAAC,IAAI,CAAC,WAAW,CAAC,KAAK,EAAE,CAAC;gBAC/D,OAAO,EAAE,IAAI,CAAC,MAAM,CAAC,UAAU,EAAE;gBACjC,WAAW,EAAE,IAAI,CAAC,MAAM,CAAC,mBAAmB,EAAE;aAC/C,kBACC,WAAW,EAAE,IAAI,CAAC,WAAW,IAAK,MAAM,EAC3C,CAAC;SACH;IACH,CAAC;IAED,YAAY,CAAC,CAAS,EAAE,CAAS,EAAE,WAAoB,IAAI;QACzD,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;QACzB,QAAQ,IAAI,IAAI,CAAC,MAAM,EAAE,CAAC;IAC5B,CAAC;IAQD,MAAM,CAAC,CAAS,EAAE,CAAS,EAAE,WAAoB,IAAI;QACnD,IAAI,IAAI,CAAC,aAAa,KAAK,UAAU,EAAE;YACrC,OAAO;SACR;QAED,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,UAAU,EAAE,EAAE;YAC7B,IAAI,CAAC,OAAO,CAAC,QAAQ,CAAC,IAAI,CAAC,OAAO,CAAC,EAAE,EAAE,IAAI,CAAC,OAAO,CAAC,EAAE,EAAE,IAAI,CAAC,OAAO,CAAC,EAAE,GAAG,CAAC,EAAE,IAAI,CAAC,OAAO,CAAC,EAAE,GAAG,CAAC,CAAC,CAAC;SACnG;QACD,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;QACzB,IAAI,CAAC,eAAe,CAAS,CAAC,CAAC,EAAE;YAC/B,CAAC,CAAC,MAAM,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;QACjB,CAAC,CAAC,CAAC;QAGH,IAAI,CAAC,MAAM,IAAI,IAAI,CAAC,QAAQ,IAAI,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;QACjE,QAAQ,IAAI,IAAI,CAAC,MAAM,EAAE,CAAC;IAC5B,CAAC;IACD,UAAU,CAAC,CAAS,EAAE,CAAS,EAAE,WAAoB,IAAI;QACvD,IAAI,IAAI,CAAC,aAAa,KAAK,UAAU,EAAE;YACrC,OAAO;SACR;QACD,IAAI,CAAC,OAAO,CAAC,QAAQ,CAAC,IAAI,CAAC,OAAO,CAAC,EAAE,EAAE,IAAI,CAAC,OAAO,CAAC,EAAE,EAAE,IAAI,CAAC,OAAO,CAAC,EAAE,GAAG,CAAC,EAAE,IAAI,CAAC,OAAO,CAAC,EAAE,GAAG,CAAC,CAAC,CAAC;QAClG,IAAI,CAAC,eAAe,CAAS,CAAC,CAAC,EAAE;YAC/B,CAAC,CAAC,UAAU,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;QACrB,CAAC,CAAC,CAAC;QAEH,IAAI,CAAC,MAAM,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,MAAM,mCAAQ,IAAI,CAAC,MAAM,CAAC,MAAM,KAAE,KAAK,EAAE,IAAI,CAAC,KAAK,EAAE,MAAM,EAAE,IAAI,CAAC,MAAM,GAAE,CAAC,CAAC;QACxG,QAAQ,IAAI,IAAI,CAAC,MAAM,EAAE,CAAC;IAC5B,CAAC;IAGD,UAAU,CAAC,CAAuB,EAAE,CAAmB,EAAE,CAAU,EAAE,CAAU,EAAE,QAAkB;QACjG,IAAI,UAAU,GAAY,IAAI,CAAC;QAE/B,IAAI,OAAO,CAAC,KAAK,QAAQ,EAAE;YACzB,IAAI,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC;YAC9C,IAAI,CAAC,KAAK,KAAK,EAAE;gBACf,UAAU,GAAG,KAAK,CAAC;aACpB;SACF;aAAM;YACL,IAAI,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAC,EAAE,CAAW,EAAE,CAAC,GAAG,CAAC,EAAG,CAAY,GAAG,CAAC,CAAC,CAAC;YAEhE,IAAI,QAAQ,KAAK,KAAK,EAAE;gBACtB,UAAU,GAAG,KAAK,CAAC;aACpB;SACF;QAED,IAAI,CAAC,eAAe,CAAS,CAAC,CAAC,EAAE;YAC/B,CAAC,CAAC,UAAU,CAAC,IAAI,CAAC,OAAO,CAAC,KAAK,EAAE,EAAE,IAAI,CAAC,OAAO,CAAC,MAAM,EAAE,CAAC,CAAC;QAC5D,CAAC,CAAC,CAAC;QACH,UAAU,IAAI,IAAI,CAAC,MAAM,EAAE,CAAC;IAC9B,CAAC;IACD,MAAM,CAAC,GAAW,EAAE,WAAoB,IAAI;QAE1C,IAAI,CAAC,eAAe,CAAS,CAAC,CAAC,EAAE;YAC/B,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC;QAChB,CAAC,CAAC,CAAC;QAEH,QAAQ,IAAI,IAAI,CAAC,MAAM,EAAE,CAAC;IAC5B,CAAC;IACD,SAAS,CAAC,CAAS,EAAE,CAAS;QAC5B,MAAM,IAAI,KAAK,CAAC,MAAM,CAAC,CAAC;IAC1B,CAAC;IACD,MAAM,CAAC,IAAiB;QACtB,MAAM,IAAI,KAAK,CAAC,MAAM,CAAC,CAAC;IAC1B,CAAC;IACD,IAAI,CAAC,CAAS,EAAE,CAAS;QACvB,IAAI,IAAI,CAAC,aAAa,KAAK,UAAU,EAAE;YACrC,OAAO;SACR;QAED,MAAM,MAAM,GAAG,IAAI,CAAC,gBAAgB,EAAE,CAAC,IAAI,CAAC,IAAI,CAAC,QAAiC,EAAE,IAAI,cAAK,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE;YACnG,MAAM,EAAE,IAAI,CAAC,UAAU;SACxB,CAAC,CAAC;QACH,IAAI,CAAA,MAAM,aAAN,MAAM,uBAAN,MAAM,CAAE,OAAO,MAAI,MAAM,aAAN,MAAM,uBAAN,MAAM,CAAE,KAAK,CAAA,EAAE;YACpC,OAAO,MAAM,CAAC;SACf;QACD,OAAO,KAAK,CAAC;IACf,CAAC;IAED,UAAU,CAAC,CAAS;QAClB,MAAM,IAAI,KAAK,CAAC,MAAM,CAAC,CAAC;IAC1B,CAAC;IAED,OAAO;;QACL,MAAA,IAAI,CAAC,oBAAoB,0CAAE,OAAO,EAAE,CAAC;QACrC,KAAK,CAAC,OAAO,EAAE,CAAC;QAEhB,IAAI,CAAC,KAAK,CAAC,YAAY,CAAC,KAAK,CAAC,aAAa,EAAE,IAAI,CAAC,YAAY,CAAC,CAAC;QAChE,IAAI,CAAC,KAAK,CAAC,WAAW,CAAC,KAAK,CAAC,aAAa,EAAE,IAAI,CAAC,WAAW,CAAC,CAAC;QAE9D,IAAI,CAAC,WAAW,IAAI,IAAI,CAAC,WAAW,CAAC,OAAO,EAAE,CAAC;QAC/C,IAAI,CAAC,YAAY,CAAC,YAAY,CAAC,IAAI,CAAC,CAAC;QACrC,IAAI,CAAC,aAAa,CAAC,OAAO,EAAE,CAAC;QAC7B,IAAI,CAAC,OAAO,CAAC,KAAK,CAAC,EAAE;YACnB,KAAK,CAAC,OAAO,EAAE,CAAC;QAClB,CAAC,CAAC,CAAC;QAEH,IAAI,IAAI,CAAC,gBAAgB,EAAE;YACzB,IAAI,CAAC,gBAAgB,CAAC,eAAe,CAAC,CAAC,IAAc,EAAE,EAAE;gBACvD,IAAI,CAAC,QAAQ,IAAI,IAAI,CAAC,QAAQ,CAAC,IAAI,EAAE,IAAI,CAAC,CAAC;gBAC3C,IAAI,CAAC,gBAAgB,CAAC,WAAW,CAAC,IAAI,CAAC,CAAC;YAC1C,CAAC,CAAC,CAAC;YACH,IAAI,CAAC,gBAAgB,CAAC,OAAO,EAAE,CAAC;SACjC;QACD,IAAI,CAAC,MAAM,CAAC,OAAO,EAAE,CAAC;QACtB,MAAA,IAAI,CAAC,OAAO,0CAAE,WAAW,CAAC,IAAI,aAAJ,IAAI,uBAAJ,IAAI,CAAE,QAAQ,CAAC,CAAC;QAC1C,MAAA,IAAI,CAAC,OAAO,0CAAE,cAAc,CAAC,MAAM,EAAE,IAAI,CAAC,WAAW,CAAC,CAAC;QACvD,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,MAAM,EAAE;YAEvB,MAAA,IAAI,CAAC,OAAO,0CAAE,OAAO,EAAE,CAAC;SACzB;QACD,IAAI,CAAC,aAAa,CAAC,eAAe,GAAG,EAAE,CAAC;IAC1C,CAAC;IAED,QAAQ,CAAC,KAAc;QACrB,OAAO;IAKT,CAAC;IAOD,KAAK,CAAC,CAAU,EAAE,MAAgB;QAChC,IAAI,IAAI,CAAC,aAAa,KAAK,UAAU,EAAE;YACrC,OAAO;SACR;QACD,IAAI,MAAM,EAAE;YACV,CAAC,CAAC,mBAAmB,CAAC,MAAM,CAAC,CAAC;SAC/B;QACD,IAAI,IAAI,CAAC,WAAW,CAAC,KAAK,EAAE,EAAE;YAC5B,IAAI,CAAC,WAAW,CAAC,QAAQ,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC;SACnD;QACD,IAAI,CAAC,WAAW,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;IAC5B,CAAC;IAED,QAAQ,CAAC,IAAY;QACnB,MAAM,KAAK,GAAG,IAAI,CAAC,QAAQ,CAAC,MAAM,CAAC,KAAK,CAAC,EAAE,CAAC,KAAK,CAAC,IAAI,KAAK,IAAI,CAAC,CAAC;QACjE,OAAO,KAAK,CAAC,CAAC,CAAW,CAAC;IAC5B,CAAC;IAED,QAAQ,CAAC,MAAe;QACtB,IAAI,IAAI,CAAC,aAAa,KAAK,UAAU,EAAE;YACrC,OAAO;SACR;QACD,IAAI,CAAC,eAAe,CAAS,CAAC,KAAK,EAAE,CAAC,EAAE,EAAE;YACxC,KAAK,CAAC,MAAM,CAAC,MAAM,EAAE;gBAEnB,aAAa,EAAE,IAAI,CAAC,aAAa;gBACjC,OAAO,EAAE,MAAM,CAAC,UAAU,EAAE;gBAC5B,WAAW,EAAE,MAAM,CAAC,mBAAmB,EAAE;gBACzC,UAAU,EAAE,KAAK,KAAK,IAAI,CAAC,YAAY,CAAC,CAAC,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC,CAAC,SAAS;gBACrE,KAAK,EAAE,CAAC,KAAK,CAAC;gBACd,YAAY,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,WAAW,IAAI,CAAC,IAAI,CAAC,WAAW,CAAC,KAAK,EAAE,CAAC;aAChE,CAAC,CAAC;QACL,CAAC,CAAC,CAAC;IACL,CAAC;IAOD,iBAAiB,CAAC,YAAqB,IAAI,EAAE,OAAqB;QAChE,IAAI,IAAI,CAAC,aAAa,KAAK,UAAU,EAAE;YACrC,OAAO;SACR;QACD,MAAM,MAAM,GAAG,IAAI,CAAC,aAAa,EAAE,CAAC;QACpC,MAAM,EAAE,GAAG,OAAO,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC;QACrC,MAAM,EAAE,GAAG,OAAO,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC;QACrC,MAAM,EAAE,GAAG,OAAO,CAAC,CAAC,CAAC,OAAO,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,SAAS,CAAC;QACjD,MAAM,EAAE,GAAG,OAAO,CAAC,CAAC,CAAC,OAAO,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,UAAU,CAAC;QAClD,MAAM,KAAK,GAAG,OAAO,CAAC,CAAC,CAAC,OAAO,CAAC,KAAK,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,SAAS,CAAC;QACzD,MAAM,MAAM,GAAG,OAAO,CAAC,CAAC,CAAC,OAAO,CAAC,MAAM,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,UAAU,CAAC;QAC5D,IAAI,SAAS,EAAE;YACb,MAAM,CAAC,MAAM,CAAC;gBACZ,OAAO,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE;gBAC3B,KAAK;gBACL,MAAM;gBACN,GAAG,EAAE,IAAI,CAAC,MAAM,CAAC,GAAG;gBACpB,eAAe,EAAE,IAAI;gBACrB,SAAS,EAAE,IAAI;gBACf,KAAK,EAAE,EAAE;aACV,CAAC,CAAC;SACJ;aAAM;YACL,MAAM,CAAC,MAAM,CAAC;gBACZ,OAAO,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE;gBAC3B,KAAK;gBACL,MAAM;gBACN,GAAG,EAAE,IAAI,CAAC,MAAM,CAAC,GAAG;gBACpB,eAAe,EAAE,IAAI;gBACrB,SAAS,EAAE,IAAI;gBACf,KAAK,EAAE,EAAE;aACV,CAAC,CAAC;SACJ;QAED,IAAI,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC;QACtB,OAAO,MAAM,CAAC;IAChB,CAAC;IAED,QAAQ,CAAC,YAAqB,IAAI,EAAE,OAAqB;QACvD,IAAI,IAAI,CAAC,aAAa,KAAK,UAAU,EAAE;YACrC,OAAO;SACR;QACD,MAAM,MAAM,GAAG,IAAI,CAAC,iBAAiB,CAAC,SAAS,EAAE,OAAO,CAAC,CAAC;QAC1D,MAAM,CAAC,GAAG,MAAM,CAAC,gBAAgB,EAAE,CAAC;QACpC,IAAI,CAAC,CAAC,YAAY,EAAE;YAClB,OAAO,CAAC,CAAC,YAAY,CAAC;SACvB;QACD,OAAO,IAAI,CAAC;IACd,CAAC;IAED,SAAS,CAAC,IAAa;QACrB,IAAI,CAAC,OAAO,GAAG,IAAI,CAAC;QACpB,IAAI,CAAC,WAAW,CAAC,SAAS,CAAC,IAAI,EAAE,QAAQ,CAAC,CAAC;IAC7C,CAAC;IAED,SAAS;QACP,OAAO,IAAI,CAAC,OAAO,CAAC;IACtB,CAAC;IAED,mBAAmB,CAAC,CAAyC;QAC3D,MAAM,KAAK,GAAG,IAAI,CAAC,MAAM,CAAC,gBAAgB,CAAC,CAAC,EAAE,IAAI,CAAC,MAAM,CAAC,CAAC;QAE3D,OAAO,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,cAAc,CAAC,KAAK,CAAC,CAAC,EAAE,KAAK,CAAC,CAAC,CAAC,CAAC;IAC5D,CAAC;IAED,iBAAiB;QACf,IAAI,CAAC,YAAY,IAAI,IAAI,CAAC,YAAY,CAAC,iBAAiB,EAAE,CAAC;IAC7D,CAAC;IACD,kBAAkB;QAChB,IAAI,CAAC,YAAY,IAAI,IAAI,CAAC,YAAY,CAAC,kBAAkB,EAAE,CAAC;IAC9D,CAAC;IAED,gBAAgB;QACd,IAAI,CAAC,IAAI,CAAC,aAAa,EAAE;YACvB,IAAI,CAAC,aAAa,GAAG,IAAI,CAAC,oBAAoB,EAAE,CAAC;SAClD;QACD,OAAO,IAAI,CAAC,aAAa,CAAC;IAC5B,CAAC;IAED,MAAM;QACJ,IAAI,CAAC,aAAa,CAAC,MAAM,EAAE,CAAC;QAC5B,IAAI,CAAC,aAAa,CAAC,MAAM,EAAE,CAAC;IAC9B,CAAC;CACF;AArpCD,sBAqpCC","file":"stage.js","sourcesContent":["import {\n Bounds,\n Point,\n isString,\n type IAABBBounds,\n type IBounds,\n type IBoundsLike,\n type IMatrix\n} from '@visactor/vutils';\nimport type {\n IGraphic,\n IExportType,\n IStage,\n IStageParams,\n ILayer,\n IColor,\n IGlobal,\n IOption3D,\n ICamera,\n vec3,\n IDirectionLight,\n ITicker,\n IRenderService,\n IPickerService,\n IPluginService,\n ISyncHook,\n IDrawContext,\n IWindow,\n ILayerService,\n ITimeline,\n IOptimizeType,\n LayerMode,\n PickResult,\n IPlugin,\n IGraphicService,\n IRenderServiceDrawParams\n} from '../interface';\nimport { DefaultWindow } from './window';\nimport type { Layer } from './layer';\nimport { EventSystem } from '../event';\nimport { Group } from '../graphic/group';\nimport { Theme } from '../graphic/theme';\nimport { DefaultGlobalPickerService } from '../picker/global-picker-service';\nimport { DefaultRenderService } from '../render/render-service';\nimport { DefaultPluginService } from '../plugins/plugin-service';\nimport { AutoRenderPlugin } from '../plugins/builtin-plugin/auto-render-plugin';\nimport { AutoRefreshPlugin } from '../plugins/builtin-plugin/auto-refresh-plugin';\nimport { IncrementalAutoRenderPlugin } from '../plugins/builtin-plugin/incremental-auto-render-plugin';\nimport { DirtyBoundsPlugin } from '../plugins/builtin-plugin/dirty-bounds-plugin';\nimport { SyncHook } from '../tapable';\nimport { application } from '../application';\nimport { isBrowserEnv } from '../env-check';\nimport { Factory, type IStageFactoryDeps } from '../factory';\nimport { DefaultLayerService } from './layer-service';\nimport { DefaultGraphicService } from '../graphic/graphic-service/graphic-service';\nimport {\n createRootSharedStateScope,\n setRootSharedStateScopeThemeDefinitions,\n type SharedStateScope\n} from '../graphic/state/shared-state-scope';\nimport { flushStageSharedStateRefresh, markScopeActiveDescendantsDirty } from '../graphic/state/shared-state-refresh';\nimport type { StateDefinitionsInput } from '../graphic/state/state-definition';\nimport { StateBatchScheduler } from '../graphic/state/state-batch-scheduler';\nimport {\n ensureStageStatePerfMonitor,\n type IDeferredStateOwnerConfig,\n type IStatePerfConfig,\n type IStatePerfSnapshot\n} from '../graphic/state/state-perf-monitor';\n\nconst DefaultConfig = {\n WIDTH: 500,\n HEIGHT: 500,\n X: 0,\n Y: 0,\n BACKGROUND: 'white'\n};\n\ntype IStageState = 'rendering' | 'normal';\n\n/**\n * Stage是一个舞台或一个视口,并不直接对应一个或多个Canvas,逻辑上和Canvas无关\n *\n * 1. Stage对应一个Canvas的整体,Stage的宽高即为Canvas的宽高\n * 2. Stage小于Canvas,Stage作为Canvas某个区域的视口,只管理这个区域\n * 3. 多图层时Stage的多个图层对应多个Canvas\n *\n * 原生环境下Stage可以拥有一个Window或者使用Window的一块区域\n *\n * 【注】如果希望获取完整的Canvas或窗口或者调整窗口信息,请使用Window模块\n */\nexport class Stage extends Group implements IStage {\n declare parent: IStage | null;\n\n declare state: IStageState;\n\n private _background: string | IColor;\n protected nextFrameRenderLayerSet: Set<Layer>;\n protected willNextFrameRender: boolean;\n protected _cursor: string;\n renderCount: number;\n dirtyBounds: IBounds | null;\n option3d?: IOption3D;\n declare light?: IDirectionLight;\n declare camera?: ICamera;\n declare renderStyle?: string;\n\n declare hooks: {\n beforeRender: ISyncHook<[IStage]>;\n afterRender: ISyncHook<[IStage]>;\n afterClearScreen: ISyncHook<[IRenderServiceDrawParams]>;\n afterClearRect: ISyncHook<[IRenderServiceDrawParams]>;\n };\n\n set viewBox(b: IBoundsLike) {\n this.window.setViewBox(b);\n }\n get viewBox(): IAABBBounds {\n return this.window.getViewBox();\n }\n\n /**\n * @deprecated 不建议使用\n */\n get x(): number {\n return this.window.getViewBox().x1;\n }\n /**\n * @deprecated 不建议使用\n */\n set x(x: number) {\n const b = this.window.getViewBox();\n b.translate(x - b.x1, 0);\n this.window.setViewBox(b);\n }\n /**\n * @deprecated 不建议使用\n */\n get y(): number {\n return this.window.getViewBox().y1;\n }\n /**\n * @deprecated 不建议使用\n */\n set y(y: number) {\n const b = this.window.getViewBox();\n b.translate(0, y - b.y1);\n this.window.setViewBox(b);\n }\n get width(): number {\n return this.window.width;\n }\n set width(w: number) {\n this.resize(w, this.height);\n }\n get viewWidth(): number {\n return this.window.getViewBox().width();\n }\n set viewWidth(w: number) {\n this.resizeView(w, this.viewHeight);\n }\n get viewHeight(): number {\n return this.window.getViewBox().height();\n }\n set viewHeight(h: number) {\n this.resizeView(this.viewWidth, h);\n }\n get height(): number {\n return this.window.height;\n }\n set height(h: number) {\n this.resize(this.width, h);\n }\n get dpr(): number {\n return this.window.dpr;\n }\n set dpr(r: number) {\n this.setDpr(r);\n }\n get background(): string | IColor {\n return this._background ?? DefaultConfig.BACKGROUND;\n }\n set background(b: string | IColor) {\n this._background = b;\n }\n get defaultLayer(): ILayer {\n return this.at(0) as unknown as ILayer;\n }\n\n protected _ticker: ITicker;\n\n autoRender: boolean;\n autoRefresh: boolean;\n declare statePerfConfig?: IStatePerfConfig;\n declare deferredStateConfig?: IDeferredStateOwnerConfig;\n _enableLayout: boolean;\n htmlAttribute: boolean | string | any;\n reactAttribute: boolean | string | any;\n increaseAutoRender: boolean;\n view3dTranform: boolean;\n readonly window: IWindow;\n private readonly global: IGlobal;\n readonly renderService: IRenderService;\n protected pickerService?: IPickerService;\n private readonly windowFactory: () => IWindow;\n private readonly pickerServiceFactory: () => IPickerService;\n readonly pluginService: IPluginService;\n readonly layerService: ILayerService;\n readonly graphicService: IGraphicService;\n private _eventSystem?: EventSystem;\n private get eventSystem(): EventSystem {\n return this._eventSystem;\n }\n\n protected _beforeRenderList: Array<(stage: IStage) => void>;\n protected _afterRenderList: Array<(stage: IStage) => void>;\n protected _afterClearScreen?: (drawParams: any) => void;\n protected _afterClearRect?: (drawParams: any) => void;\n // 0: 正常渲染, > 0: 跳过隐藏canvas的渲染, < 0: 禁止渲染\n protected _skipRender?: number;\n protected _afterNextRenderCbs?: ((stage: IStage) => void)[];\n protected lastRenderparams?: Partial<IDrawContext>;\n\n protected interactiveLayer?: ILayer;\n protected supportInteractiveLayer: boolean;\n protected timeline: ITimeline;\n declare rootSharedStateScope?: SharedStateScope<Record<string, any>>;\n protected _pendingSharedStateRefreshGraphics?: Set<IGraphic>;\n protected _stateBatchScheduler!: StateBatchScheduler;\n\n declare params: Partial<IStageParams>;\n\n // 是否在render之前执行了tick,如果没有执行,尝试执行tick用来应用动画属性,避免动画过程中随意赋值然后又调用同步render导致属性的突变\n // 第一次render不需要强行走动画\n protected tickedBeforeRender: boolean = true;\n\n // 随机分配一个rafId\n readonly rafId: number;\n\n get ticker() {\n return this._ticker;\n }\n\n set ticker(ticker: ITicker) {\n ticker.bindStage(this);\n if (this._ticker) {\n this._ticker.removeListener('tick', this.afterTickCb);\n }\n ticker.addTimeline(this.timeline);\n this._ticker = ticker;\n this._ticker.on('tick', this.afterTickCb);\n }\n\n /**\n * 所有属性都具有默认值。\n * Canvas为字符串或者Canvas元素,那么默认图层就会绑定到这个Canvas上\n * 如果不传入Canvas,那么会新建一个Canvas,用户可以通过Window模块管理这个Canvas\n * 1. 如果没有传入宽高,那么默认为canvas宽高,如果传入了宽高则stage使用传入宽高作为视口宽高\n * @param params\n */\n constructor(params: Partial<IStageParams> = {}, deps: IStageFactoryDeps = {}) {\n super({});\n this.params = params;\n this.theme = new Theme();\n this.hooks = {\n beforeRender: new SyncHook(['stage']),\n afterRender: new SyncHook(['stage']),\n afterClearScreen: new SyncHook(['stage']),\n afterClearRect: new SyncHook(['stage'])\n };\n this.global = deps.global ?? application.global;\n if (!this.global.env && isBrowserEnv()) {\n // 如果是浏览器环境,默认设置env\n this.global.setEnv('browser');\n }\n this.windowFactory = deps.windowFactory ?? application.windowFactory ?? (() => new DefaultWindow(this.global));\n this.pickerServiceFactory =\n deps.pickerServiceFactory ??\n (deps.pickerService\n ? () => deps.pickerService as IPickerService\n : application.pickerServiceFactory ?? (() => new DefaultGlobalPickerService()));\n this.window = deps.window ?? this.windowFactory();\n this.renderService =\n deps.renderService ??\n application.renderServiceFactory?.() ??\n application.renderService ??\n new DefaultRenderService();\n this.pluginService =\n deps.pluginService ??\n application.pluginServiceFactory?.() ??\n application.pluginService ??\n new DefaultPluginService();\n this.layerService = deps.layerService ?? application.layerService ?? new DefaultLayerService(this.global);\n this.graphicService = deps.graphicService ?? application.graphicService ?? new DefaultGraphicService();\n this.pickerService = deps.pickerService;\n this.pluginService.active(this, params);\n this._beforeRenderList = [];\n this._afterRenderList = [];\n\n this.window.create({\n width: params.width,\n height: params.height,\n viewBox: params.viewBox,\n container: params.container,\n dpr: params.dpr || this.global.devicePixelRatio,\n canvasControled: params.canvasControled ?? !params.canvas,\n title: params.title || '',\n canvas: params.canvas\n });\n\n this.state = 'normal';\n this.renderCount = 0;\n this.tryInitEventSystem();\n // // 没有传入xy就默认为0\n // this._x = params.x ?? DefaultConfig.X;\n // this._y = params.y ?? DefaultConfig.Y;\n // // 没有传入view的宽高则默认为window的宽高\n // this._viewWidth = params.viewWidth ?? this.window.width;\n // this._viewHeight = params.viewHeight ?? this.window.height;\n // this._AABBBounds.set(this._x, this._y, this._viewWidth + this._x, this._viewHeight + this._y);\n // 背景色默认为纯白色\n this._background = params.background ?? DefaultConfig.BACKGROUND;\n\n // Stage is its own owner before any layer is attached so default-layer stage wiring is consistent.\n this.stage = this;\n\n // 创建一个默认layer图层\n // this.appendChild(new Layer(this, this.global, this.window, { main: true }));\n this.appendChild(this.layerService.createLayer(this, { main: true }));\n\n this.nextFrameRenderLayerSet = new Set();\n this.willNextFrameRender = false;\n ensureStageStatePerfMonitor(this);\n this._stateBatchScheduler = new StateBatchScheduler(this, ensureStageStatePerfMonitor(this));\n this.rootSharedStateScope = createRootSharedStateScope(\n this,\n this.theme?.stateDefinitions as StateDefinitionsInput<Record<string, any>> | undefined\n );\n this.theme.onStateDefinitionsChange = () => {\n if (!this.rootSharedStateScope) {\n return;\n }\n\n setRootSharedStateScopeThemeDefinitions(\n this.rootSharedStateScope,\n this.theme?.stateDefinitions as StateDefinitionsInput<Record<string, any>> | undefined\n );\n markScopeActiveDescendantsDirty(this.rootSharedStateScope, this);\n };\n this.renderStyle = params.renderStyle;\n\n // this.autoRender = params.autoRender;\n if (params.autoRender) {\n this.enableAutoRender();\n }\n if (params.autoRefresh) {\n this.enableAutoRefresh();\n }\n // 默认不开启dirtyBounds\n if (params.disableDirtyBounds === false) {\n this.enableDirtyBounds();\n }\n\n if (params.enableHtmlAttribute) {\n this.enableHtmlAttribute(params.enableHtmlAttribute);\n }\n if (params.ReactDOM) {\n this.enableReactAttribute(params.ReactDOM);\n }\n\n params.enableLayout && this.enableLayout();\n this.hooks.beforeRender.tap('constructor', this.beforeRender);\n this.hooks.afterRender.tap('constructor', this.afterRender);\n if (params.beforeRender) {\n this._beforeRenderList.push(params.beforeRender);\n }\n if (params.afterRender) {\n this._afterRenderList.push(params.afterRender);\n }\n this.hooks.afterClearScreen.tap('constructor', this.afterClearScreen);\n this.hooks.afterClearRect.tap('constructor', this.afterClearRect);\n this._afterClearScreen = params.afterClearScreen;\n this._afterClearRect = params.afterClearRect;\n this.supportInteractiveLayer = params.interactiveLayer !== false;\n if (!params.optimize) {\n params.optimize = {\n tickRenderMode: 'effect'\n };\n }\n this.optmize(params.optimize);\n // 如果背景是图片,触发加载图片操作\n if (params.background && isString(this._background) && this._background.includes('/')) {\n this.setAttributes({ background: this._background });\n }\n\n this.initAnimate(params);\n this.rafId = params.rafId ?? Math.floor(Math.random() * 6);\n }\n\n initAnimate(params: Partial<IStageParams>) {\n if ((this as any).createTicker && (this as any).createTimeline) {\n this._ticker = params.ticker || (this as any).createTicker(this);\n this._ticker.bindStage(this);\n if (this.params.optimize?.tickRenderMode === 'performance') {\n this._ticker.setFPS(30);\n }\n this.timeline = (this as any).createTimeline();\n this._ticker.addTimeline(this.timeline);\n this._ticker.on('tick', this.afterTickCb);\n }\n }\n\n startAnimate() {\n if (this._ticker && this.timeline) {\n this._ticker.start();\n this.timeline.resume();\n }\n }\n\n pauseRender(sr: number = -1) {\n this._skipRender = sr;\n }\n\n resumeRender() {\n this._skipRender = 0;\n }\n\n protected tryInitEventSystem() {\n if (this.global.supportEvent && !this._eventSystem) {\n this._eventSystem = new EventSystem({\n targetElement: this.window,\n resolution: this.window.dpr || this.global.devicePixelRatio,\n rootNode: this as any,\n global: this.global,\n supportsPointerEvents: this.params.supportsPointerEvents,\n supportsTouchEvents: this.params.supportsTouchEvents,\n ...this.params.event\n });\n }\n }\n\n preventRender(prevent: boolean) {\n if (prevent) {\n this._skipRender = -Infinity;\n } else {\n // 判断是否需要outRange优化\n if (this.params.optimize.skipRenderWithOutRange !== false) {\n this._skipRender = this.window.isVisible() ? 0 : 1;\n } else {\n this._skipRender = 0;\n }\n }\n }\n\n // 优化策略\n optmize(params: IOptimizeType) {\n this.optmizeRender(params.skipRenderWithOutRange);\n this.params.optimize = params;\n }\n\n // 优化渲染\n protected optmizeRender(skipRenderWithOutRange: boolean = false) {\n if (!skipRenderWithOutRange) {\n return;\n }\n // 不在视口内的时候,跳过渲染\n this._skipRender = this._skipRender < 0 ? this._skipRender : this.window.isVisible() ? 0 : 1;\n this.window.onVisibleChange(this._onVisibleChange);\n }\n\n protected _onVisibleChange = (visible: boolean) => {\n if (this._skipRender < 0) {\n return;\n }\n if (visible) {\n if (this.dirtyBounds) {\n const b = this.window.getViewBox();\n this.dirtyBounds.setValue(b.x1, b.y1, b.width(), b.height());\n }\n if (this._skipRender > 1) {\n this.renderNextFrame();\n }\n this._skipRender = 0;\n } else {\n this._skipRender = 1;\n }\n };\n\n getTimeline() {\n return this.timeline;\n }\n\n get3dOptions(options: IOption3D) {\n const {\n center = { x: this.width / 2, y: this.height / 2, z: 0, dx: 0, dy: 0, dz: 0 },\n light = {},\n alpha = 0,\n beta = 0,\n camera,\n fieldRatio = 1,\n fieldDepth\n } = options;\n\n return {\n ...options,\n center,\n light,\n alpha,\n beta,\n camera,\n fieldRatio,\n fieldDepth\n };\n }\n\n set3dOptions(options: IOption3D) {\n this.option3d = options;\n const options3d = this.get3dOptions(options);\n const { light, center, camera, alpha, beta, fieldRatio, fieldDepth } = options3d;\n const { dir = [1, 1, -1], color = 'white', ambient } = light;\n\n const centerX = (center.x ?? this.width / 2) + (center.dx ?? 0);\n const centerY = (center.y ?? this.height / 2) + (center.dy ?? 0);\n const centerZ = (center.z ?? 0) + (center.dz ?? 0);\n const centerVec3: vec3 = [centerX, centerY, centerZ];\n const z = 1;\n let cameraX = 0;\n let cameraY = 0;\n let cameraZ = 0;\n if (!camera) {\n cameraX = Math.sin(alpha) + centerX;\n cameraY = Math.sin(beta) + centerY;\n cameraZ = Math.cos(alpha) * Math.cos(beta) * z;\n }\n\n const DirectionalLight = Factory.getPlugin('DirectionalLight');\n\n if (DirectionalLight) {\n this.light = new DirectionalLight(dir, color, ambient);\n }\n const cameraParams = {\n left: 0,\n right: this.width,\n top: 0,\n bottom: this.height,\n fieldRatio: fieldRatio,\n fieldDepth,\n viewParams: {\n pos: [cameraX, cameraY, cameraZ] as vec3,\n center: centerVec3,\n up: [0, 1, 0] as vec3\n }\n };\n if (this.camera) {\n this.camera.params = cameraParams;\n } else {\n const OrthoCamera = Factory.getPlugin('OrthoCamera');\n if (OrthoCamera) {\n this.camera = new OrthoCamera(cameraParams);\n }\n }\n\n if (options.enableView3dTransform) {\n this.enableView3dTransform();\n }\n }\n\n protected beforeRender = (stage: IStage) => {\n flushStageSharedStateRefresh(this);\n this._beforeRenderList.forEach(cb => cb(stage));\n };\n protected afterClearScreen = (drawParams: any) => {\n this._afterClearScreen && this._afterClearScreen(drawParams);\n };\n protected afterClearRect = (drawParams: any) => {\n this._afterClearRect && this._afterClearRect(drawParams);\n };\n\n protected afterRender = (stage: IStage) => {\n this.renderCount++;\n this._afterRenderList.forEach(cb => cb(stage));\n this._afterNextRenderCbs && this._afterNextRenderCbs.forEach(cb => cb(stage));\n this._afterNextRenderCbs = null;\n this.tickedBeforeRender = false;\n };\n\n protected afterTickCb = () => {\n this.tickedBeforeRender = true;\n // 性能模式不用立刻渲染\n this.state !== 'rendering' && this.renderNextFrame();\n };\n\n setBeforeRender(cb: (stage: IStage) => void) {\n this._beforeRenderList.push(cb);\n }\n\n removeBeforeRender(cb: (stage: IStage) => void) {\n this._beforeRenderList = this._beforeRenderList.filter(c => c !== cb);\n }\n\n setAfterRender(cb: (stage: IStage) => void) {\n this._afterRenderList.push(cb);\n }\n\n removeAfterRender(cb: (stage: IStage) => void) {\n this._afterRenderList = this._afterRenderList.filter(c => c !== cb);\n }\n\n afterNextRender(cb: (stage: IStage) => void) {\n if (!this._afterNextRenderCbs) {\n this._afterNextRenderCbs = [];\n }\n this._afterNextRenderCbs.push(cb);\n }\n\n enableView3dTransform() {\n if (this.view3dTranform) {\n return;\n }\n this.view3dTranform = true;\n const ViewTransform3dPlugin = Factory.getPlugin('ViewTransform3dPlugin');\n\n if (ViewTransform3dPlugin) {\n this.pluginService.register(new ViewTransform3dPlugin());\n }\n }\n\n disableView3dTranform() {\n if (!this.view3dTranform) {\n return;\n }\n this.view3dTranform = false;\n this.pluginService.findPluginsByName('ViewTransform3dPlugin').forEach(plugin => {\n this.pluginService.unRegister(plugin);\n });\n }\n\n enableAutoRender() {\n if (this.autoRender) {\n return;\n }\n this.autoRender = true;\n this.pluginService.register(new AutoRenderPlugin());\n }\n disableAutoRender() {\n if (!this.autoRender) {\n return;\n }\n this.autoRender = false;\n this.pluginService.findPluginsByName('AutoRenderPlugin').forEach(plugin => {\n this.pluginService.unRegister(plugin);\n });\n }\n enableAutoRefresh() {\n if (this.autoRefresh || this.global.env === 'node') {\n return;\n }\n this.autoRefresh = true;\n this.pluginService.register(new AutoRefreshPlugin());\n }\n disableAutoRefresh() {\n if (!this.autoRefresh) {\n return;\n }\n this.autoRefresh = false;\n this.pluginService.findPluginsByName('AutoRefreshPlugin').forEach(plugin => {\n this.pluginService.unRegister(plugin);\n });\n }\n enableIncrementalAutoRender() {\n if (this.increaseAutoRender) {\n return;\n }\n this.increaseAutoRender = true;\n this.pluginService.register(new IncrementalAutoRenderPlugin());\n }\n disableIncrementalAutoRender() {\n if (!this.increaseAutoRender) {\n return;\n }\n this.increaseAutoRender = false;\n this.pluginService.findPluginsByName('IncrementalAutoRenderPlugin').forEach(plugin => {\n this.pluginService.unRegister(plugin);\n });\n }\n enableDirtyBounds() {\n if (this.dirtyBounds) {\n return;\n }\n this.dirtyBounds = new Bounds();\n let plugin = this.pluginService.findPluginsByName('DirtyBoundsPlugin')[0];\n if (!plugin) {\n plugin = new DirtyBoundsPlugin();\n this.pluginService.register(plugin);\n } else {\n plugin.activate(this.pluginService);\n }\n }\n disableDirtyBounds() {\n if (!this.dirtyBounds) {\n return;\n }\n this.dirtyBounds = null;\n this.pluginService.findPluginsByName('DirtyBoundsPlugin').forEach(plugin => {\n this.pluginService.unRegister(plugin);\n });\n }\n enableLayout() {\n if (this._enableLayout) {\n return;\n }\n this._enableLayout = true;\n\n const FlexLayoutPlugin = Factory.getPlugin('FlexLayoutPlugin');\n\n if (FlexLayoutPlugin) {\n this.pluginService.register(new FlexLayoutPlugin());\n }\n }\n disableLayout() {\n if (!this._enableLayout) {\n return;\n }\n this._enableLayout = false;\n this.pluginService.findPluginsByName('FlexLayoutPlugin').forEach(plugin => {\n this.pluginService.unRegister(plugin);\n });\n }\n enableHtmlAttribute(container?: any) {\n if (this.htmlAttribute) {\n return;\n }\n const HtmlAttributePlugin = Factory.getPlugin('HtmlAttributePlugin');\n\n if (HtmlAttributePlugin) {\n this.htmlAttribute = container;\n this.pluginService.register(new HtmlAttributePlugin());\n }\n }\n disableHtmlAttribute() {\n if (!this.htmlAttribute) {\n return;\n }\n this.htmlAttribute = false;\n this.pluginService.findPluginsByName('HtmlAttributePlugin').forEach(plugin => {\n this.pluginService.unRegister(plugin);\n });\n }\n enableReactAttribute(container?: any) {\n if (this.reactAttribute) {\n return;\n }\n const ReactAttributePlugin = Factory.getPlugin('ReactAttributePlugin');\n\n if (ReactAttributePlugin) {\n this.reactAttribute = container;\n this.pluginService.register(new ReactAttributePlugin());\n }\n }\n disableReactAttribute() {\n if (!this.reactAttribute) {\n return;\n }\n this.reactAttribute = false;\n this.pluginService.findPluginsByName('ReactAttributePlugin').forEach(plugin => {\n this.pluginService.unRegister(plugin);\n });\n }\n\n getPluginsByName(name: string): IPlugin[] {\n return this.pluginService.findPluginsByName(name);\n }\n\n // /**\n // * stage的appendChild,add\n // * @param node\n // * @returns\n // */\n // appendChild<T extends Node>(node: T): T | null {\n // const layer = this.at(0);\n // if (!layer) {\n // return null;\n // }\n // return layer.appendChild<T>(node);\n // }\n\n protected tryUpdateAABBBounds(): IAABBBounds {\n const viewBox = this.window.getViewBox();\n this._AABBBounds.setValue(viewBox.x1, viewBox.y1, viewBox.x2, viewBox.y2);\n return this._AABBBounds;\n }\n\n combineLayer(ILayer1: ILayer, ILayer2: ILayer): ILayer {\n throw new Error('暂不支持');\n }\n // 如果传入CanvasId,如果存在相同Id,说明这两个图层使用相同的Canvas绘制\n // 但需要注意的是依然是两个图层(用于解决Table嵌入ChartSpace不影响Table的绘制)\n createLayer(canvasId?: string, layerMode?: LayerMode): ILayer {\n if (this.releaseStatus === 'released') {\n return;\n }\n // 创建一个默认layer图层\n const layer = this.layerService.createLayer(this, {\n main: false,\n layerMode,\n canvasId\n });\n this.appendChild(layer);\n return layer;\n // const layer = new Layer(this, this.global, this.window, {\n // main: false,\n // canvasId\n // });\n // this.appendChild(layer);\n // return layer;\n }\n sortLayer(cb: (ILayer1: ILayer, layer2: ILayer) => number): void {\n const children = this.children;\n children.sort(cb);\n this.removeAllChild();\n children.forEach(c => {\n this.appendChild(c);\n });\n }\n removeLayer(ILayerId: number): ILayer | false {\n return this.removeChild(this.findChildByUid(ILayerId) as IGraphic) as ILayer;\n }\n tryInitInteractiveLayer() {\n if (this.releaseStatus === 'released') {\n return;\n }\n // TODO:顺序可能会存在问题\n // 支持交互层,且没有创建过,那就创建\n if (this.supportInteractiveLayer && !this.interactiveLayer) {\n this.interactiveLayer = this.createLayer();\n this.interactiveLayer.name = '_builtin_interactive';\n this.interactiveLayer.attribute.pickable = false;\n this.nextFrameRenderLayerSet.add(this.interactiveLayer as any); // to be fixed\n }\n // this.interactiveLayer.afterDraw(l => {\n // l.removeAllChild();\n // });\n }\n\n clearViewBox(color?: string) {\n this.window.clearViewBox(color);\n }\n\n render(layers?: ILayer[], params?: Partial<IDrawContext>): void {\n if (this.releaseStatus === 'released') {\n return;\n }\n this.startAnimate();\n const state = this.state;\n this.state = 'rendering';\n this.layerService.prepareStageLayer(this);\n if (!this._skipRender) {\n this.lastRenderparams = params;\n this.hooks.beforeRender.call(this);\n if (!this._skipRender) {\n this.renderLayerList(this.children as ILayer[]);\n this.combineLayersToWindow();\n this.nextFrameRenderLayerSet.clear();\n }\n this.hooks.afterRender.call(this);\n }\n this.state = state;\n this._skipRender && this._skipRender++;\n }\n\n protected combineLayersToWindow() {\n // TODO 后续支持通用的渲染模型\n if (this.global.env === 'harmony') {\n const ctx = this.window.getContext().nativeContext;\n this.forEachChildren<ILayer>((layer, i) => {\n if (i > 0) {\n const image = layer\n .getNativeHandler()\n .getContext()\n .canvas.nativeCanvas.nativeCanvas._c.transferToImageBitmap();\n ctx.transferFromImageBitmap(image);\n }\n });\n }\n return;\n // this.forEach<ILayer>((layer, i) => {\n // layer.combineTo(this.window, {\n // clear: i === 0,\n // x: this.x,\n // y: this.y,\n // width: this.viewWidth,\n // height: this.viewHeight,\n // renderService: this.renderService,\n // background: layer === this.defaultLayer ? this.background : undefined,\n // updateBounds: !!this.dirtyBounds\n // });\n // });\n }\n\n renderNextFrame(layers?: ILayer[], force?: boolean): void {\n // render状态中调用的不会触发nextFrame,避免loop\n // if (this.state === 'rendering' && !force) {\n // console.log('abc');\n // return;\n // }\n // 性能优化,避免重复add\n if (this.nextFrameRenderLayerSet.size !== this.childrenCount) {\n (layers || this).forEach<ILayer>((layer: any) => {\n this.nextFrameRenderLayerSet.add(layer);\n });\n }\n if (!this.willNextFrameRender) {\n this.willNextFrameRender = true;\n this.global.getSpecifiedRequestAnimationFrame(this.rafId)(() => {\n this._doRenderInThisFrame(), (this.willNextFrameRender = false);\n });\n }\n }\n\n scheduleStateBatch(graphics: IGraphic[], targetStates: string[]): void {\n this._stateBatchScheduler.schedule(graphics, targetStates);\n }\n\n getStatePerfSnapshot(): IStatePerfSnapshot {\n return ensureStageStatePerfMonitor(this).getSnapshot();\n }\n\n resetStatePerfSnapshot(): void {\n ensureStageStatePerfMonitor(this).reset();\n }\n\n _doRenderInThisFrame() {\n if (this.releaseStatus === 'released') {\n return;\n }\n this.startAnimate();\n const state = this.state;\n this.state = 'rendering';\n this.layerService.prepareStageLayer(this);\n if (this.nextFrameRenderLayerSet.size && !this._skipRender) {\n this.hooks.beforeRender.call(this);\n if (!this._skipRender) {\n this.renderLayerList(Array.from(this.nextFrameRenderLayerSet.values()), this.lastRenderparams || {});\n this.combineLayersToWindow();\n this.nextFrameRenderLayerSet.clear();\n }\n this.hooks.afterRender.call(this);\n }\n this.state = state;\n this._skipRender && this._skipRender++;\n }\n\n protected renderLayerList(layerList: ILayer[], params?: Partial<IDrawContext>) {\n const list: ILayer[] = [];\n // 只需要render main layer即可\n for (let i = 0; i < layerList.length; i++) {\n let l = layerList[i];\n if (l.layerMode === 'virtual') {\n l = l.getNativeHandler().mainHandler.layer;\n }\n if (!list.includes(l)) {\n list.push(l);\n }\n }\n list.forEach(layer => {\n // 记录当前的stamp,避免重复绘制layer(如果存在virtual layer)\n if (layer.renderCount > this.renderCount) {\n return;\n }\n layer.renderCount = this.renderCount + 1;\n\n if (layer === this.interactiveLayer) {\n // 交互层由于其特殊性,不使用dirtyBounds\n this.dirtyBounds && this.dirtyBounds.clear();\n }\n layer.render(\n {\n renderService: this.renderService,\n background: layer === this.defaultLayer ? this.background : undefined,\n updateBounds: !!(this.dirtyBounds && !this.dirtyBounds.empty()),\n viewBox: this.window.getViewBox(),\n transMatrix: this.window.getViewBoxTransform()\n },\n { renderStyle: this.renderStyle, ...params }\n );\n });\n\n // 添加交互层渲染\n if (this.interactiveLayer && !layerList.includes(this.interactiveLayer)) {\n // 交互层由于其特殊性,不使用dirtyBounds\n this.dirtyBounds && this.dirtyBounds.clear();\n this.interactiveLayer.render(\n {\n renderService: this.renderService,\n updateBounds: !!(this.dirtyBounds && !this.dirtyBounds.empty()),\n viewBox: this.window.getViewBox(),\n transMatrix: this.window.getViewBoxTransform()\n },\n { renderStyle: this.renderStyle, ...params }\n );\n }\n }\n\n resizeWindow(w: number, h: number, rerender: boolean = true) {\n this.window.resize(w, h);\n rerender && this.render();\n }\n\n /**\n * 语法糖,如果viewBox和window宽高一样的话,那么会同时缩放window和viewBox\n * @param w\n * @param h\n * @param rerender\n */\n resize(w: number, h: number, rerender: boolean = true): void {\n if (this.releaseStatus === 'released') {\n return;\n }\n // 如果不是子图的stage,那么认为用户也想要resize view\n if (!this.window.hasSubView()) {\n this.viewBox.setValue(this.viewBox.x1, this.viewBox.y1, this.viewBox.x1 + w, this.viewBox.y1 + h);\n }\n this.window.resize(w, h);\n this.forEachChildren<ILayer>(c => {\n c.resize(w, h);\n });\n // 设置camera\n // this.camera && (this.camera.params = { ...this.camera.params, right: this.width, bottom: this.height });\n this.camera && this.option3d && this.set3dOptions(this.option3d);\n rerender && this.render();\n }\n resizeView(w: number, h: number, rerender: boolean = true) {\n if (this.releaseStatus === 'released') {\n return;\n }\n this.viewBox.setValue(this.viewBox.x1, this.viewBox.y1, this.viewBox.x1 + w, this.viewBox.y1 + h);\n this.forEachChildren<ILayer>(c => {\n c.resizeView(w, h);\n });\n // 设置camera\n this.camera && (this.camera.params = { ...this.camera.params, right: this.width, bottom: this.height });\n rerender && this.render();\n }\n setViewBox(viewBox: IBoundsLike, rerender: boolean): void;\n setViewBox(x: number, y: number, w: number, h: number, rerender: boolean): void;\n setViewBox(x: number | IBoundsLike, y: number | boolean, w?: number, h?: number, rerender?: boolean): void {\n let isRerender: boolean = true;\n\n if (typeof x === 'object') {\n this.viewBox.setValue(x.x1, x.y1, x.x2, x.y2);\n if (y === false) {\n isRerender = false;\n }\n } else {\n this.viewBox.setValue(x, y as number, x + w, (y as number) + h);\n\n if (rerender === false) {\n isRerender = false;\n }\n }\n\n this.forEachChildren<ILayer>(c => {\n c.resizeView(this.viewBox.width(), this.viewBox.height());\n });\n isRerender && this.render();\n }\n setDpr(dpr: number, rerender: boolean = true): void {\n // this.window.setDpr(dpr);\n this.forEachChildren<ILayer>(c => {\n c.setDpr(dpr);\n });\n\n rerender && this.render();\n }\n setOrigin(x: number, y: number): void {\n throw new Error('暂不支持');\n }\n export(type: IExportType): HTMLCanvasElement | ImageData {\n throw new Error('暂不支持');\n }\n pick(x: number, y: number): PickResult | false {\n if (this.releaseStatus === 'released') {\n return;\n }\n // 暂时不提供layer的pick\n const result = this.getPickerService().pick(this.children as unknown as IGraphic[], new Point(x, y), {\n bounds: this.AABBBounds\n });\n if (result?.graphic || result?.group) {\n return result;\n }\n return false;\n }\n\n setToFrame(t: number): void {\n throw new Error('暂不支持');\n }\n\n release() {\n this._stateBatchScheduler?.release();\n super.release();\n\n this.hooks.beforeRender.unTap('constructor', this.beforeRender);\n this.hooks.afterRender.unTap('constructor', this.afterRender);\n\n this.eventSystem && this.eventSystem.release();\n this.layerService.releaseStage(this);\n this.pluginService.release();\n this.forEach(layer => {\n layer.release();\n });\n // 额外删除掉interactiveLayer的节点\n if (this.interactiveLayer) {\n this.interactiveLayer.forEachChildren((item: IGraphic) => {\n item.setStage && item.setStage(null, null);\n this.interactiveLayer.removeChild(item);\n });\n this.interactiveLayer.release();\n }\n this.window.release();\n this._ticker?.remTimeline(this?.timeline);\n this._ticker?.removeListener('tick', this.afterTickCb);\n if (!this.params.ticker) {\n // release stage创建的ticker,避免release外部的ticker\n this._ticker?.release();\n }\n this.renderService.renderTreeRoots = [];\n }\n\n setStage(stage?: IStage) {\n return;\n // this.stage = this;\n // this.forEachChildren(item => {\n // (item as Layer).setStage(this);\n // });\n }\n\n /**\n * 添加dirty区域,会修改参数b\n * @param b\n * @param matrix\n */\n dirty(b: IBounds, matrix?: IMatrix) {\n if (this.releaseStatus === 'released') {\n return;\n }\n if (matrix) {\n b.transformWithMatrix(matrix);\n }\n if (this.dirtyBounds.empty()) {\n this.dirtyBounds.setValue(b.x1, b.y1, b.x2, b.y2);\n }\n this.dirtyBounds.union(b);\n }\n\n getLayer(name: string): undefined | ILayer {\n const layer = this.children.filter(layer => layer.name === name);\n return layer[0] as ILayer;\n }\n\n renderTo(window: IWindow) {\n if (this.releaseStatus === 'released') {\n return;\n }\n this.forEachChildren<ILayer>((layer, i) => {\n layer.drawTo(window, {\n // ...params,\n renderService: this.renderService,\n viewBox: window.getViewBox(),\n transMatrix: window.getViewBoxTransform(),\n background: layer === this.defaultLayer ? this.background : undefined,\n clear: i === 0, // 第一个layer需要clear\n updateBounds: !!(this.dirtyBounds && !this.dirtyBounds.empty())\n });\n });\n }\n\n /**\n * 渲染到新的window上去\n * @param fullImage 是否是全量的image,因为可能之前的window有一部分场景树超过window的帧缓冲了\n * @returns\n */\n renderToNewWindow(fullImage: boolean = true, viewBox?: IAABBBounds): IWindow {\n if (this.releaseStatus === 'released') {\n return;\n }\n const window = this.windowFactory();\n const x1 = viewBox ? -viewBox.x1 : 0;\n const y1 = viewBox ? -viewBox.y1 : 0;\n const x2 = viewBox ? viewBox.x2 : this.viewWidth;\n const y2 = viewBox ? viewBox.y2 : this.viewHeight;\n const width = viewBox ? viewBox.width() : this.viewWidth;\n const height = viewBox ? viewBox.height() : this.viewHeight;\n if (fullImage) {\n window.create({\n viewBox: { x1, y1, x2, y2 },\n width,\n height,\n dpr: this.window.dpr,\n canvasControled: true,\n offscreen: true,\n title: ''\n });\n } else {\n window.create({\n viewBox: { x1, y1, x2, y2 },\n width,\n height,\n dpr: this.window.dpr,\n canvasControled: true,\n offscreen: true,\n title: ''\n });\n }\n\n this.renderTo(window);\n return window;\n }\n\n toCanvas(fullImage: boolean = true, viewBox?: IAABBBounds): HTMLCanvasElement | null {\n if (this.releaseStatus === 'released') {\n return;\n }\n const window = this.renderToNewWindow(fullImage, viewBox);\n const c = window.getNativeHandler();\n if (c.nativeCanvas) {\n return c.nativeCanvas;\n }\n return null;\n }\n\n setCursor(mode?: string): void {\n this._cursor = mode;\n this.eventSystem.setCursor(mode, 'ignore');\n }\n\n getCursor() {\n return this._cursor;\n }\n\n eventPointTransform(e: PointerEvent | WheelEvent | TouchEvent): { x: number; y: number } {\n const point = this.global.mapToCanvasPoint(e, this.window);\n\n return this.stage.window.pointTransform(point.x, point.y);\n }\n\n pauseTriggerEvent() {\n this._eventSystem && this._eventSystem.pauseTriggerEvent();\n }\n resumeTriggerEvent() {\n this._eventSystem && this._eventSystem.resumeTriggerEvent();\n }\n\n getPickerService() {\n if (!this.pickerService) {\n this.pickerService = this.pickerServiceFactory();\n }\n return this.pickerService;\n }\n\n reInit() {\n this.renderService.reInit();\n this.pickerService.reInit();\n }\n}\n"]}
1
+ {"version":3,"sources":["../src/core/stage.ts"],"names":[],"mappings":"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","file":"stage.js","sourcesContent":["import {\n Bounds,\n Point,\n isString,\n type IAABBBounds,\n type IBounds,\n type IBoundsLike,\n type IMatrix\n} from '@visactor/vutils';\nimport type {\n IGraphic,\n IExportType,\n IStage,\n IStageParams,\n ILayer,\n IColor,\n IGlobal,\n IOption3D,\n ICamera,\n vec3,\n IDirectionLight,\n ITicker,\n IRenderService,\n IPickerService,\n IPluginService,\n ISyncHook,\n IDrawContext,\n IWindow,\n ILayerService,\n ITimeline,\n IOptimizeType,\n LayerMode,\n PickResult,\n IPlugin,\n IGraphicService,\n IRenderServiceDrawParams\n} from '../interface';\nimport { DefaultWindow } from './window';\nimport type { Layer } from './layer';\nimport { EventSystem } from '../event';\nimport { Group } from '../graphic/group';\nimport { Theme } from '../graphic/theme';\nimport { DefaultGlobalPickerService } from '../picker/global-picker-service';\nimport { DefaultRenderService } from '../render/render-service';\nimport { DefaultPluginService } from '../plugins/plugin-service';\nimport { AutoRenderPlugin } from '../plugins/builtin-plugin/auto-render-plugin';\nimport { AutoRefreshPlugin } from '../plugins/builtin-plugin/auto-refresh-plugin';\nimport { IncrementalAutoRenderPlugin } from '../plugins/builtin-plugin/incremental-auto-render-plugin';\nimport { DirtyBoundsPlugin } from '../plugins/builtin-plugin/dirty-bounds-plugin';\nimport { SyncHook } from '../tapable';\nimport { application } from '../application';\nimport { isBrowserEnv } from '../env-check';\nimport { Factory, type IStageFactoryDeps } from '../factory';\nimport { DefaultLayerService } from './layer-service';\nimport { DefaultGraphicService } from '../graphic/graphic-service/graphic-service';\nimport {\n createRootSharedStateScope,\n setRootSharedStateScopeThemeDefinitions,\n type SharedStateScope\n} from '../graphic/state/shared-state-scope';\nimport { flushStageSharedStateRefresh, markScopeActiveDescendantsDirty } from '../graphic/state/shared-state-refresh';\nimport type { StateDefinitionsInput } from '../graphic/state/state-definition';\n\nconst DefaultConfig = {\n WIDTH: 500,\n HEIGHT: 500,\n X: 0,\n Y: 0,\n BACKGROUND: 'white'\n};\n\ntype IStageState = 'rendering' | 'normal';\n\n/**\n * Stage是一个舞台或一个视口,并不直接对应一个或多个Canvas,逻辑上和Canvas无关\n *\n * 1. Stage对应一个Canvas的整体,Stage的宽高即为Canvas的宽高\n * 2. Stage小于Canvas,Stage作为Canvas某个区域的视口,只管理这个区域\n * 3. 多图层时Stage的多个图层对应多个Canvas\n *\n * 原生环境下Stage可以拥有一个Window或者使用Window的一块区域\n *\n * 【注】如果希望获取完整的Canvas或窗口或者调整窗口信息,请使用Window模块\n */\nexport class Stage extends Group implements IStage {\n declare parent: IStage | null;\n\n declare state: IStageState;\n\n private _background: string | IColor;\n protected nextFrameRenderLayerSet: Set<Layer>;\n protected willNextFrameRender: boolean;\n protected _cursor: string;\n renderCount: number;\n dirtyBounds: IBounds | null;\n option3d?: IOption3D;\n declare light?: IDirectionLight;\n declare camera?: ICamera;\n declare renderStyle?: string;\n\n declare hooks: {\n beforeRender: ISyncHook<[IStage]>;\n afterRender: ISyncHook<[IStage]>;\n afterClearScreen: ISyncHook<[IRenderServiceDrawParams]>;\n afterClearRect: ISyncHook<[IRenderServiceDrawParams]>;\n };\n\n set viewBox(b: IBoundsLike) {\n this.window.setViewBox(b);\n }\n get viewBox(): IAABBBounds {\n return this.window.getViewBox();\n }\n\n /**\n * @deprecated 不建议使用\n */\n get x(): number {\n return this.window.getViewBox().x1;\n }\n /**\n * @deprecated 不建议使用\n */\n set x(x: number) {\n const b = this.window.getViewBox();\n b.translate(x - b.x1, 0);\n this.window.setViewBox(b);\n }\n /**\n * @deprecated 不建议使用\n */\n get y(): number {\n return this.window.getViewBox().y1;\n }\n /**\n * @deprecated 不建议使用\n */\n set y(y: number) {\n const b = this.window.getViewBox();\n b.translate(0, y - b.y1);\n this.window.setViewBox(b);\n }\n get width(): number {\n return this.window.width;\n }\n set width(w: number) {\n this.resize(w, this.height);\n }\n get viewWidth(): number {\n return this.window.getViewBox().width();\n }\n set viewWidth(w: number) {\n this.resizeView(w, this.viewHeight);\n }\n get viewHeight(): number {\n return this.window.getViewBox().height();\n }\n set viewHeight(h: number) {\n this.resizeView(this.viewWidth, h);\n }\n get height(): number {\n return this.window.height;\n }\n set height(h: number) {\n this.resize(this.width, h);\n }\n get dpr(): number {\n return this.window.dpr;\n }\n set dpr(r: number) {\n this.setDpr(r);\n }\n get background(): string | IColor {\n return this._background ?? DefaultConfig.BACKGROUND;\n }\n set background(b: string | IColor) {\n this._background = b;\n }\n get defaultLayer(): ILayer {\n return this.at(0) as unknown as ILayer;\n }\n\n protected _ticker: ITicker;\n\n autoRender: boolean;\n autoRefresh: boolean;\n _enableLayout: boolean;\n htmlAttribute: boolean | string | any;\n reactAttribute: boolean | string | any;\n increaseAutoRender: boolean;\n view3dTranform: boolean;\n readonly window: IWindow;\n private readonly global: IGlobal;\n readonly renderService: IRenderService;\n protected pickerService?: IPickerService;\n private readonly windowFactory: () => IWindow;\n private readonly pickerServiceFactory: () => IPickerService;\n readonly pluginService: IPluginService;\n readonly layerService: ILayerService;\n readonly graphicService: IGraphicService;\n private _eventSystem?: EventSystem;\n private get eventSystem(): EventSystem {\n return this._eventSystem;\n }\n\n protected _beforeRenderList: Array<(stage: IStage) => void>;\n protected _afterRenderList: Array<(stage: IStage) => void>;\n protected _afterClearScreen?: (drawParams: any) => void;\n protected _afterClearRect?: (drawParams: any) => void;\n // 0: 正常渲染, > 0: 跳过隐藏canvas的渲染, < 0: 禁止渲染\n protected _skipRender?: number;\n protected _afterNextRenderCbs?: ((stage: IStage) => void)[];\n protected lastRenderparams?: Partial<IDrawContext>;\n\n protected interactiveLayer?: ILayer;\n protected supportInteractiveLayer: boolean;\n protected timeline: ITimeline;\n declare rootSharedStateScope?: SharedStateScope<Record<string, any>>;\n protected _pendingSharedStateRefreshGraphics?: Set<IGraphic>;\n\n declare params: Partial<IStageParams>;\n\n // 是否在render之前执行了tick,如果没有执行,尝试执行tick用来应用动画属性,避免动画过程中随意赋值然后又调用同步render导致属性的突变\n // 第一次render不需要强行走动画\n protected tickedBeforeRender: boolean = true;\n\n // 随机分配一个rafId\n readonly rafId: number;\n\n get ticker() {\n return this._ticker;\n }\n\n set ticker(ticker: ITicker) {\n ticker.bindStage(this);\n if (this._ticker) {\n this._ticker.removeListener('tick', this.afterTickCb);\n }\n ticker.addTimeline(this.timeline);\n this._ticker = ticker;\n this._ticker.on('tick', this.afterTickCb);\n }\n\n /**\n * 所有属性都具有默认值。\n * Canvas为字符串或者Canvas元素,那么默认图层就会绑定到这个Canvas上\n * 如果不传入Canvas,那么会新建一个Canvas,用户可以通过Window模块管理这个Canvas\n * 1. 如果没有传入宽高,那么默认为canvas宽高,如果传入了宽高则stage使用传入宽高作为视口宽高\n * @param params\n */\n constructor(params: Partial<IStageParams> = {}, deps: IStageFactoryDeps = {}) {\n super({});\n this.params = params;\n this.theme = new Theme();\n this.hooks = {\n beforeRender: new SyncHook(['stage']),\n afterRender: new SyncHook(['stage']),\n afterClearScreen: new SyncHook(['stage']),\n afterClearRect: new SyncHook(['stage'])\n };\n this.global = deps.global ?? application.global;\n if (!this.global.env && isBrowserEnv()) {\n // 如果是浏览器环境,默认设置env\n this.global.setEnv('browser');\n }\n this.windowFactory = deps.windowFactory ?? application.windowFactory ?? (() => new DefaultWindow(this.global));\n this.pickerServiceFactory =\n deps.pickerServiceFactory ??\n (deps.pickerService\n ? () => deps.pickerService as IPickerService\n : application.pickerServiceFactory ?? (() => new DefaultGlobalPickerService()));\n this.window = deps.window ?? this.windowFactory();\n this.renderService =\n deps.renderService ??\n application.renderServiceFactory?.() ??\n application.renderService ??\n new DefaultRenderService();\n this.pluginService =\n deps.pluginService ??\n application.pluginServiceFactory?.() ??\n application.pluginService ??\n new DefaultPluginService();\n this.layerService = deps.layerService ?? application.layerService ?? new DefaultLayerService(this.global);\n this.graphicService = deps.graphicService ?? application.graphicService ?? new DefaultGraphicService();\n this.pickerService = deps.pickerService;\n this.pluginService.active(this, params);\n this._beforeRenderList = [];\n this._afterRenderList = [];\n\n this.window.create({\n width: params.width,\n height: params.height,\n viewBox: params.viewBox,\n container: params.container,\n dpr: params.dpr || this.global.devicePixelRatio,\n canvasControled: params.canvasControled ?? !params.canvas,\n title: params.title || '',\n canvas: params.canvas\n });\n\n this.state = 'normal';\n this.renderCount = 0;\n this.tryInitEventSystem();\n // // 没有传入xy就默认为0\n // this._x = params.x ?? DefaultConfig.X;\n // this._y = params.y ?? DefaultConfig.Y;\n // // 没有传入view的宽高则默认为window的宽高\n // this._viewWidth = params.viewWidth ?? this.window.width;\n // this._viewHeight = params.viewHeight ?? this.window.height;\n // this._AABBBounds.set(this._x, this._y, this._viewWidth + this._x, this._viewHeight + this._y);\n // 背景色默认为纯白色\n this._background = params.background ?? DefaultConfig.BACKGROUND;\n\n // Stage is its own owner before any layer is attached so default-layer stage wiring is consistent.\n this.stage = this;\n\n // 创建一个默认layer图层\n // this.appendChild(new Layer(this, this.global, this.window, { main: true }));\n this.appendChild(this.layerService.createLayer(this, { main: true }));\n\n this.nextFrameRenderLayerSet = new Set();\n this.willNextFrameRender = false;\n this.theme.onStateDefinitionsChange = () => {\n const definitions = this.theme?.stateDefinitions as StateDefinitionsInput<Record<string, any>> | undefined;\n const rootScope =\n definitions && Object.keys(definitions).length\n ? this.ensureRootSharedStateScope(definitions)\n : this.rootSharedStateScope;\n if (!rootScope) {\n return;\n }\n\n setRootSharedStateScopeThemeDefinitions(rootScope, definitions);\n markScopeActiveDescendantsDirty(rootScope, this);\n };\n this.renderStyle = params.renderStyle;\n\n // this.autoRender = params.autoRender;\n if (params.autoRender) {\n this.enableAutoRender();\n }\n if (params.autoRefresh) {\n this.enableAutoRefresh();\n }\n // 默认不开启dirtyBounds\n if (params.disableDirtyBounds === false) {\n this.enableDirtyBounds();\n }\n\n if (params.enableHtmlAttribute) {\n this.enableHtmlAttribute(params.enableHtmlAttribute);\n }\n if (params.ReactDOM) {\n this.enableReactAttribute(params.ReactDOM);\n }\n\n params.enableLayout && this.enableLayout();\n this.hooks.beforeRender.tap('constructor', this.beforeRender);\n this.hooks.afterRender.tap('constructor', this.afterRender);\n if (params.beforeRender) {\n this._beforeRenderList.push(params.beforeRender);\n }\n if (params.afterRender) {\n this._afterRenderList.push(params.afterRender);\n }\n this.hooks.afterClearScreen.tap('constructor', this.afterClearScreen);\n this.hooks.afterClearRect.tap('constructor', this.afterClearRect);\n this._afterClearScreen = params.afterClearScreen;\n this._afterClearRect = params.afterClearRect;\n this.supportInteractiveLayer = params.interactiveLayer !== false;\n if (!params.optimize) {\n params.optimize = {\n tickRenderMode: 'effect'\n };\n }\n this.optmize(params.optimize);\n // 如果背景是图片,触发加载图片操作\n if (params.background && isString(this._background) && this._background.includes('/')) {\n this.setAttributes({ background: this._background });\n }\n\n this.initAnimate(params);\n this.rafId = params.rafId ?? Math.floor(Math.random() * 6);\n }\n\n initAnimate(params: Partial<IStageParams>) {\n if ((this as any).createTicker && (this as any).createTimeline) {\n this._ticker = params.ticker || (this as any).createTicker(this);\n this._ticker.bindStage(this);\n if (this.params.optimize?.tickRenderMode === 'performance') {\n this._ticker.setFPS(30);\n }\n this.timeline = (this as any).createTimeline();\n this._ticker.addTimeline(this.timeline);\n this._ticker.on('tick', this.afterTickCb);\n }\n }\n\n startAnimate() {\n if (this._ticker && this.timeline) {\n this._ticker.start();\n this.timeline.resume();\n }\n }\n\n pauseRender(sr: number = -1) {\n this._skipRender = sr;\n }\n\n resumeRender() {\n this._skipRender = 0;\n }\n\n protected tryInitEventSystem() {\n if (this.global.supportEvent && !this._eventSystem) {\n this._eventSystem = new EventSystem({\n targetElement: this.window,\n resolution: this.window.dpr || this.global.devicePixelRatio,\n rootNode: this as any,\n global: this.global,\n supportsPointerEvents: this.params.supportsPointerEvents,\n supportsTouchEvents: this.params.supportsTouchEvents,\n ...this.params.event\n });\n }\n }\n\n preventRender(prevent: boolean) {\n if (prevent) {\n this._skipRender = -Infinity;\n } else {\n // 判断是否需要outRange优化\n if (this.params.optimize.skipRenderWithOutRange !== false) {\n this._skipRender = this.window.isVisible() ? 0 : 1;\n } else {\n this._skipRender = 0;\n }\n }\n }\n\n // 优化策略\n optmize(params: IOptimizeType) {\n this.optmizeRender(params.skipRenderWithOutRange);\n this.params.optimize = params;\n }\n\n // 优化渲染\n protected optmizeRender(skipRenderWithOutRange: boolean = false) {\n if (!skipRenderWithOutRange) {\n return;\n }\n // 不在视口内的时候,跳过渲染\n this._skipRender = this._skipRender < 0 ? this._skipRender : this.window.isVisible() ? 0 : 1;\n this.window.onVisibleChange(this._onVisibleChange);\n }\n\n protected _onVisibleChange = (visible: boolean) => {\n if (this._skipRender < 0) {\n return;\n }\n if (visible) {\n if (this.dirtyBounds) {\n const b = this.window.getViewBox();\n this.dirtyBounds.setValue(b.x1, b.y1, b.width(), b.height());\n }\n if (this._skipRender > 1) {\n this.renderNextFrame();\n }\n this._skipRender = 0;\n } else {\n this._skipRender = 1;\n }\n };\n\n getTimeline() {\n return this.timeline;\n }\n\n get3dOptions(options: IOption3D) {\n const {\n center = { x: this.width / 2, y: this.height / 2, z: 0, dx: 0, dy: 0, dz: 0 },\n light = {},\n alpha = 0,\n beta = 0,\n camera,\n fieldRatio = 1,\n fieldDepth\n } = options;\n\n return {\n ...options,\n center,\n light,\n alpha,\n beta,\n camera,\n fieldRatio,\n fieldDepth\n };\n }\n\n set3dOptions(options: IOption3D) {\n this.option3d = options;\n const options3d = this.get3dOptions(options);\n const { light, center, camera, alpha, beta, fieldRatio, fieldDepth } = options3d;\n const { dir = [1, 1, -1], color = 'white', ambient } = light;\n\n const centerX = (center.x ?? this.width / 2) + (center.dx ?? 0);\n const centerY = (center.y ?? this.height / 2) + (center.dy ?? 0);\n const centerZ = (center.z ?? 0) + (center.dz ?? 0);\n const centerVec3: vec3 = [centerX, centerY, centerZ];\n const z = 1;\n let cameraX = 0;\n let cameraY = 0;\n let cameraZ = 0;\n if (!camera) {\n cameraX = Math.sin(alpha) + centerX;\n cameraY = Math.sin(beta) + centerY;\n cameraZ = Math.cos(alpha) * Math.cos(beta) * z;\n }\n\n const DirectionalLight = Factory.getPlugin('DirectionalLight');\n\n if (DirectionalLight) {\n this.light = new DirectionalLight(dir, color, ambient);\n }\n const cameraParams = {\n left: 0,\n right: this.width,\n top: 0,\n bottom: this.height,\n fieldRatio: fieldRatio,\n fieldDepth,\n viewParams: {\n pos: [cameraX, cameraY, cameraZ] as vec3,\n center: centerVec3,\n up: [0, 1, 0] as vec3\n }\n };\n if (this.camera) {\n this.camera.params = cameraParams;\n } else {\n const OrthoCamera = Factory.getPlugin('OrthoCamera');\n if (OrthoCamera) {\n this.camera = new OrthoCamera(cameraParams);\n }\n }\n\n if (options.enableView3dTransform) {\n this.enableView3dTransform();\n }\n }\n\n protected beforeRender = (stage: IStage) => {\n const pendingSharedRefresh = (this as any)._pendingSharedStateRefreshGraphics as Set<IGraphic> | undefined;\n if (pendingSharedRefresh?.size) {\n flushStageSharedStateRefresh(this);\n }\n this._beforeRenderList.forEach(cb => cb(stage));\n };\n protected afterClearScreen = (drawParams: any) => {\n this._afterClearScreen && this._afterClearScreen(drawParams);\n };\n protected afterClearRect = (drawParams: any) => {\n this._afterClearRect && this._afterClearRect(drawParams);\n };\n\n protected afterRender = (stage: IStage) => {\n this.renderCount++;\n this._afterRenderList.forEach(cb => cb(stage));\n this._afterNextRenderCbs && this._afterNextRenderCbs.forEach(cb => cb(stage));\n this._afterNextRenderCbs = null;\n this.tickedBeforeRender = false;\n };\n\n protected afterTickCb = () => {\n this.tickedBeforeRender = true;\n // 性能模式不用立刻渲染\n this.state !== 'rendering' && this.renderNextFrame();\n };\n\n setBeforeRender(cb: (stage: IStage) => void) {\n this._beforeRenderList.push(cb);\n }\n\n removeBeforeRender(cb: (stage: IStage) => void) {\n this._beforeRenderList = this._beforeRenderList.filter(c => c !== cb);\n }\n\n setAfterRender(cb: (stage: IStage) => void) {\n this._afterRenderList.push(cb);\n }\n\n removeAfterRender(cb: (stage: IStage) => void) {\n this._afterRenderList = this._afterRenderList.filter(c => c !== cb);\n }\n\n afterNextRender(cb: (stage: IStage) => void) {\n if (!this._afterNextRenderCbs) {\n this._afterNextRenderCbs = [];\n }\n this._afterNextRenderCbs.push(cb);\n }\n\n enableView3dTransform() {\n if (this.view3dTranform) {\n return;\n }\n this.view3dTranform = true;\n const ViewTransform3dPlugin = Factory.getPlugin('ViewTransform3dPlugin');\n\n if (ViewTransform3dPlugin) {\n this.pluginService.register(new ViewTransform3dPlugin());\n }\n }\n\n disableView3dTranform() {\n if (!this.view3dTranform) {\n return;\n }\n this.view3dTranform = false;\n this.pluginService.findPluginsByName('ViewTransform3dPlugin').forEach(plugin => {\n this.pluginService.unRegister(plugin);\n });\n }\n\n enableAutoRender() {\n if (this.autoRender) {\n return;\n }\n this.autoRender = true;\n this.pluginService.register(new AutoRenderPlugin());\n }\n disableAutoRender() {\n if (!this.autoRender) {\n return;\n }\n this.autoRender = false;\n this.pluginService.findPluginsByName('AutoRenderPlugin').forEach(plugin => {\n this.pluginService.unRegister(plugin);\n });\n }\n enableAutoRefresh() {\n if (this.autoRefresh || this.global.env === 'node') {\n return;\n }\n this.autoRefresh = true;\n this.pluginService.register(new AutoRefreshPlugin());\n }\n disableAutoRefresh() {\n if (!this.autoRefresh) {\n return;\n }\n this.autoRefresh = false;\n this.pluginService.findPluginsByName('AutoRefreshPlugin').forEach(plugin => {\n this.pluginService.unRegister(plugin);\n });\n }\n enableIncrementalAutoRender() {\n if (this.increaseAutoRender) {\n return;\n }\n this.increaseAutoRender = true;\n this.pluginService.register(new IncrementalAutoRenderPlugin());\n }\n disableIncrementalAutoRender() {\n if (!this.increaseAutoRender) {\n return;\n }\n this.increaseAutoRender = false;\n this.pluginService.findPluginsByName('IncrementalAutoRenderPlugin').forEach(plugin => {\n this.pluginService.unRegister(plugin);\n });\n }\n enableDirtyBounds() {\n if (this.dirtyBounds) {\n return;\n }\n this.dirtyBounds = new Bounds();\n let plugin = this.pluginService.findPluginsByName('DirtyBoundsPlugin')[0];\n if (!plugin) {\n plugin = new DirtyBoundsPlugin();\n this.pluginService.register(plugin);\n } else {\n plugin.activate(this.pluginService);\n }\n }\n disableDirtyBounds() {\n if (!this.dirtyBounds) {\n return;\n }\n this.dirtyBounds = null;\n this.pluginService.findPluginsByName('DirtyBoundsPlugin').forEach(plugin => {\n this.pluginService.unRegister(plugin);\n });\n }\n enableLayout() {\n if (this._enableLayout) {\n return;\n }\n this._enableLayout = true;\n\n const FlexLayoutPlugin = Factory.getPlugin('FlexLayoutPlugin');\n\n if (FlexLayoutPlugin) {\n this.pluginService.register(new FlexLayoutPlugin());\n }\n }\n disableLayout() {\n if (!this._enableLayout) {\n return;\n }\n this._enableLayout = false;\n this.pluginService.findPluginsByName('FlexLayoutPlugin').forEach(plugin => {\n this.pluginService.unRegister(plugin);\n });\n }\n enableHtmlAttribute(container?: any) {\n if (this.htmlAttribute) {\n return;\n }\n const HtmlAttributePlugin = Factory.getPlugin('HtmlAttributePlugin');\n\n if (HtmlAttributePlugin) {\n this.htmlAttribute = container;\n this.pluginService.register(new HtmlAttributePlugin());\n }\n }\n disableHtmlAttribute() {\n if (!this.htmlAttribute) {\n return;\n }\n this.htmlAttribute = false;\n this.pluginService.findPluginsByName('HtmlAttributePlugin').forEach(plugin => {\n this.pluginService.unRegister(plugin);\n });\n }\n enableReactAttribute(container?: any) {\n if (this.reactAttribute) {\n return;\n }\n const ReactAttributePlugin = Factory.getPlugin('ReactAttributePlugin');\n\n if (ReactAttributePlugin) {\n this.reactAttribute = container;\n this.pluginService.register(new ReactAttributePlugin());\n }\n }\n disableReactAttribute() {\n if (!this.reactAttribute) {\n return;\n }\n this.reactAttribute = false;\n this.pluginService.findPluginsByName('ReactAttributePlugin').forEach(plugin => {\n this.pluginService.unRegister(plugin);\n });\n }\n\n getPluginsByName(name: string): IPlugin[] {\n return this.pluginService.findPluginsByName(name);\n }\n\n // /**\n // * stage的appendChild,add\n // * @param node\n // * @returns\n // */\n // appendChild<T extends Node>(node: T): T | null {\n // const layer = this.at(0);\n // if (!layer) {\n // return null;\n // }\n // return layer.appendChild<T>(node);\n // }\n\n protected tryUpdateAABBBounds(): IAABBBounds {\n const viewBox = this.window.getViewBox();\n this._AABBBounds.setValue(viewBox.x1, viewBox.y1, viewBox.x2, viewBox.y2);\n return this._AABBBounds;\n }\n\n combineLayer(ILayer1: ILayer, ILayer2: ILayer): ILayer {\n throw new Error('暂不支持');\n }\n // 如果传入CanvasId,如果存在相同Id,说明这两个图层使用相同的Canvas绘制\n // 但需要注意的是依然是两个图层(用于解决Table嵌入ChartSpace不影响Table的绘制)\n createLayer(canvasId?: string, layerMode?: LayerMode): ILayer {\n if (this.releaseStatus === 'released') {\n return;\n }\n // 创建一个默认layer图层\n const layer = this.layerService.createLayer(this, {\n main: false,\n layerMode,\n canvasId\n });\n this.appendChild(layer);\n return layer;\n // const layer = new Layer(this, this.global, this.window, {\n // main: false,\n // canvasId\n // });\n // this.appendChild(layer);\n // return layer;\n }\n sortLayer(cb: (ILayer1: ILayer, layer2: ILayer) => number): void {\n const children = this.children;\n children.sort(cb);\n this.removeAllChild();\n children.forEach(c => {\n this.appendChild(c);\n });\n }\n removeLayer(ILayerId: number): ILayer | false {\n return this.removeChild(this.findChildByUid(ILayerId) as IGraphic) as ILayer;\n }\n tryInitInteractiveLayer() {\n if (this.releaseStatus === 'released') {\n return;\n }\n // TODO:顺序可能会存在问题\n // 支持交互层,且没有创建过,那就创建\n if (this.supportInteractiveLayer && !this.interactiveLayer) {\n this.interactiveLayer = this.createLayer();\n this.interactiveLayer.name = '_builtin_interactive';\n this.interactiveLayer.attribute.pickable = false;\n this.nextFrameRenderLayerSet.add(this.interactiveLayer as any); // to be fixed\n }\n // this.interactiveLayer.afterDraw(l => {\n // l.removeAllChild();\n // });\n }\n\n clearViewBox(color?: string) {\n this.window.clearViewBox(color);\n }\n\n render(layers?: ILayer[], params?: Partial<IDrawContext>): void {\n if (this.releaseStatus === 'released') {\n return;\n }\n this.startAnimate();\n const state = this.state;\n this.state = 'rendering';\n this.layerService.prepareStageLayer(this);\n if (!this._skipRender) {\n this.lastRenderparams = params;\n this.hooks.beforeRender.call(this);\n if (!this._skipRender) {\n this.renderLayerList(this.children as ILayer[]);\n this.combineLayersToWindow();\n this.nextFrameRenderLayerSet.clear();\n }\n this.hooks.afterRender.call(this);\n }\n this.state = state;\n this._skipRender && this._skipRender++;\n }\n\n protected combineLayersToWindow() {\n // TODO 后续支持通用的渲染模型\n if (this.global.env === 'harmony') {\n const ctx = this.window.getContext().nativeContext;\n this.forEachChildren<ILayer>((layer, i) => {\n if (i > 0) {\n const image = layer\n .getNativeHandler()\n .getContext()\n .canvas.nativeCanvas.nativeCanvas._c.transferToImageBitmap();\n ctx.transferFromImageBitmap(image);\n }\n });\n }\n return;\n // this.forEach<ILayer>((layer, i) => {\n // layer.combineTo(this.window, {\n // clear: i === 0,\n // x: this.x,\n // y: this.y,\n // width: this.viewWidth,\n // height: this.viewHeight,\n // renderService: this.renderService,\n // background: layer === this.defaultLayer ? this.background : undefined,\n // updateBounds: !!this.dirtyBounds\n // });\n // });\n }\n\n renderNextFrame(layers?: ILayer[], force?: boolean): void {\n // render状态中调用的不会触发nextFrame,避免loop\n // if (this.state === 'rendering' && !force) {\n // console.log('abc');\n // return;\n // }\n // 性能优化,避免重复add\n if (this.nextFrameRenderLayerSet.size !== this.childrenCount) {\n (layers || this).forEach<ILayer>((layer: any) => {\n this.nextFrameRenderLayerSet.add(layer);\n });\n }\n if (!this.willNextFrameRender) {\n this.willNextFrameRender = true;\n this.global.getSpecifiedRequestAnimationFrame(this.rafId)(() => {\n this._doRenderInThisFrame(), (this.willNextFrameRender = false);\n });\n }\n }\n\n ensureRootSharedStateScope(\n themeStateDefinitions?: StateDefinitionsInput<Record<string, any>>\n ): SharedStateScope<Record<string, any>> {\n if (!this.rootSharedStateScope) {\n this.rootSharedStateScope = createRootSharedStateScope(this, themeStateDefinitions);\n return this.rootSharedStateScope;\n }\n\n this.rootSharedStateScope.ownerStage = this;\n return this.rootSharedStateScope;\n }\n\n _doRenderInThisFrame() {\n if (this.releaseStatus === 'released') {\n return;\n }\n this.startAnimate();\n const state = this.state;\n this.state = 'rendering';\n this.layerService.prepareStageLayer(this);\n if (this.nextFrameRenderLayerSet.size && !this._skipRender) {\n this.hooks.beforeRender.call(this);\n if (!this._skipRender) {\n this.renderLayerList(Array.from(this.nextFrameRenderLayerSet.values()), this.lastRenderparams || {});\n this.combineLayersToWindow();\n this.nextFrameRenderLayerSet.clear();\n }\n this.hooks.afterRender.call(this);\n }\n this.state = state;\n this._skipRender && this._skipRender++;\n }\n\n protected renderLayerList(layerList: ILayer[], params?: Partial<IDrawContext>) {\n const list: ILayer[] = [];\n // 只需要render main layer即可\n for (let i = 0; i < layerList.length; i++) {\n let l = layerList[i];\n if (l.layerMode === 'virtual') {\n l = l.getNativeHandler().mainHandler.layer;\n }\n if (!list.includes(l)) {\n list.push(l);\n }\n }\n list.forEach(layer => {\n // 记录当前的stamp,避免重复绘制layer(如果存在virtual layer)\n if (layer.renderCount > this.renderCount) {\n return;\n }\n layer.renderCount = this.renderCount + 1;\n\n if (layer === this.interactiveLayer) {\n // 交互层由于其特殊性,不使用dirtyBounds\n this.dirtyBounds && this.dirtyBounds.clear();\n }\n layer.render(\n {\n renderService: this.renderService,\n background: layer === this.defaultLayer ? this.background : undefined,\n updateBounds: !!(this.dirtyBounds && !this.dirtyBounds.empty()),\n viewBox: this.window.getViewBox(),\n transMatrix: this.window.getViewBoxTransform()\n },\n { renderStyle: this.renderStyle, ...params }\n );\n });\n\n // 添加交互层渲染\n if (this.interactiveLayer && !layerList.includes(this.interactiveLayer)) {\n // 交互层由于其特殊性,不使用dirtyBounds\n this.dirtyBounds && this.dirtyBounds.clear();\n this.interactiveLayer.render(\n {\n renderService: this.renderService,\n updateBounds: !!(this.dirtyBounds && !this.dirtyBounds.empty()),\n viewBox: this.window.getViewBox(),\n transMatrix: this.window.getViewBoxTransform()\n },\n { renderStyle: this.renderStyle, ...params }\n );\n }\n }\n\n resizeWindow(w: number, h: number, rerender: boolean = true) {\n this.window.resize(w, h);\n rerender && this.render();\n }\n\n /**\n * 语法糖,如果viewBox和window宽高一样的话,那么会同时缩放window和viewBox\n * @param w\n * @param h\n * @param rerender\n */\n resize(w: number, h: number, rerender: boolean = true): void {\n if (this.releaseStatus === 'released') {\n return;\n }\n // 如果不是子图的stage,那么认为用户也想要resize view\n if (!this.window.hasSubView()) {\n this.viewBox.setValue(this.viewBox.x1, this.viewBox.y1, this.viewBox.x1 + w, this.viewBox.y1 + h);\n }\n this.window.resize(w, h);\n this.forEachChildren<ILayer>(c => {\n c.resize(w, h);\n });\n // 设置camera\n // this.camera && (this.camera.params = { ...this.camera.params, right: this.width, bottom: this.height });\n this.camera && this.option3d && this.set3dOptions(this.option3d);\n rerender && this.render();\n }\n resizeView(w: number, h: number, rerender: boolean = true) {\n if (this.releaseStatus === 'released') {\n return;\n }\n this.viewBox.setValue(this.viewBox.x1, this.viewBox.y1, this.viewBox.x1 + w, this.viewBox.y1 + h);\n this.forEachChildren<ILayer>(c => {\n c.resizeView(w, h);\n });\n // 设置camera\n this.camera && (this.camera.params = { ...this.camera.params, right: this.width, bottom: this.height });\n rerender && this.render();\n }\n setViewBox(viewBox: IBoundsLike, rerender: boolean): void;\n setViewBox(x: number, y: number, w: number, h: number, rerender: boolean): void;\n setViewBox(x: number | IBoundsLike, y: number | boolean, w?: number, h?: number, rerender?: boolean): void {\n let isRerender: boolean = true;\n\n if (typeof x === 'object') {\n this.viewBox.setValue(x.x1, x.y1, x.x2, x.y2);\n if (y === false) {\n isRerender = false;\n }\n } else {\n this.viewBox.setValue(x, y as number, x + w, (y as number) + h);\n\n if (rerender === false) {\n isRerender = false;\n }\n }\n\n this.forEachChildren<ILayer>(c => {\n c.resizeView(this.viewBox.width(), this.viewBox.height());\n });\n isRerender && this.render();\n }\n setDpr(dpr: number, rerender: boolean = true): void {\n // this.window.setDpr(dpr);\n this.forEachChildren<ILayer>(c => {\n c.setDpr(dpr);\n });\n\n rerender && this.render();\n }\n setOrigin(x: number, y: number): void {\n throw new Error('暂不支持');\n }\n export(type: IExportType): HTMLCanvasElement | ImageData {\n throw new Error('暂不支持');\n }\n pick(x: number, y: number): PickResult | false {\n if (this.releaseStatus === 'released') {\n return;\n }\n // 暂时不提供layer的pick\n const result = this.getPickerService().pick(this.children as unknown as IGraphic[], new Point(x, y), {\n bounds: this.AABBBounds\n });\n if (result?.graphic || result?.group) {\n return result;\n }\n return false;\n }\n\n setToFrame(t: number): void {\n throw new Error('暂不支持');\n }\n\n release() {\n super.release();\n\n this.hooks.beforeRender.unTap('constructor', this.beforeRender);\n this.hooks.afterRender.unTap('constructor', this.afterRender);\n\n this.eventSystem && this.eventSystem.release();\n this.layerService.releaseStage(this);\n this.pluginService.release();\n this.forEach(layer => {\n layer.release();\n });\n // 额外删除掉interactiveLayer的节点\n if (this.interactiveLayer) {\n this.interactiveLayer.forEachChildren((item: IGraphic) => {\n item.setStage && item.setStage(null, null);\n this.interactiveLayer.removeChild(item);\n });\n this.interactiveLayer.release();\n }\n this.window.release();\n this._ticker?.remTimeline(this?.timeline);\n this._ticker?.removeListener('tick', this.afterTickCb);\n if (!this.params.ticker) {\n // release stage创建的ticker,避免release外部的ticker\n this._ticker?.release();\n }\n this.renderService.renderTreeRoots = [];\n }\n\n setStage(stage?: IStage) {\n return;\n // this.stage = this;\n // this.forEachChildren(item => {\n // (item as Layer).setStage(this);\n // });\n }\n\n /**\n * 添加dirty区域,会修改参数b\n * @param b\n * @param matrix\n */\n dirty(b: IBounds, matrix?: IMatrix) {\n if (this.releaseStatus === 'released') {\n return;\n }\n if (matrix) {\n b.transformWithMatrix(matrix);\n }\n if (this.dirtyBounds.empty()) {\n this.dirtyBounds.setValue(b.x1, b.y1, b.x2, b.y2);\n }\n this.dirtyBounds.union(b);\n }\n\n getLayer(name: string): undefined | ILayer {\n const layer = this.children.filter(layer => layer.name === name);\n return layer[0] as ILayer;\n }\n\n renderTo(window: IWindow) {\n if (this.releaseStatus === 'released') {\n return;\n }\n this.forEachChildren<ILayer>((layer, i) => {\n layer.drawTo(window, {\n // ...params,\n renderService: this.renderService,\n viewBox: window.getViewBox(),\n transMatrix: window.getViewBoxTransform(),\n background: layer === this.defaultLayer ? this.background : undefined,\n clear: i === 0, // 第一个layer需要clear\n updateBounds: !!(this.dirtyBounds && !this.dirtyBounds.empty())\n });\n });\n }\n\n /**\n * 渲染到新的window上去\n * @param fullImage 是否是全量的image,因为可能之前的window有一部分场景树超过window的帧缓冲了\n * @returns\n */\n renderToNewWindow(fullImage: boolean = true, viewBox?: IAABBBounds): IWindow {\n if (this.releaseStatus === 'released') {\n return;\n }\n const window = this.windowFactory();\n const x1 = viewBox ? -viewBox.x1 : 0;\n const y1 = viewBox ? -viewBox.y1 : 0;\n const x2 = viewBox ? viewBox.x2 : this.viewWidth;\n const y2 = viewBox ? viewBox.y2 : this.viewHeight;\n const width = viewBox ? viewBox.width() : this.viewWidth;\n const height = viewBox ? viewBox.height() : this.viewHeight;\n if (fullImage) {\n window.create({\n viewBox: { x1, y1, x2, y2 },\n width,\n height,\n dpr: this.window.dpr,\n canvasControled: true,\n offscreen: true,\n title: ''\n });\n } else {\n window.create({\n viewBox: { x1, y1, x2, y2 },\n width,\n height,\n dpr: this.window.dpr,\n canvasControled: true,\n offscreen: true,\n title: ''\n });\n }\n\n this.renderTo(window);\n return window;\n }\n\n toCanvas(fullImage: boolean = true, viewBox?: IAABBBounds): HTMLCanvasElement | null {\n if (this.releaseStatus === 'released') {\n return;\n }\n const window = this.renderToNewWindow(fullImage, viewBox);\n const c = window.getNativeHandler();\n if (c.nativeCanvas) {\n return c.nativeCanvas;\n }\n return null;\n }\n\n setCursor(mode?: string): void {\n this._cursor = mode;\n this.eventSystem.setCursor(mode, 'ignore');\n }\n\n getCursor() {\n return this._cursor;\n }\n\n eventPointTransform(e: PointerEvent | WheelEvent | TouchEvent): { x: number; y: number } {\n const point = this.global.mapToCanvasPoint(e, this.window);\n\n return this.stage.window.pointTransform(point.x, point.y);\n }\n\n pauseTriggerEvent() {\n this._eventSystem && this._eventSystem.pauseTriggerEvent();\n }\n resumeTriggerEvent() {\n this._eventSystem && this._eventSystem.resumeTriggerEvent();\n }\n\n getPickerService() {\n if (!this.pickerService) {\n this.pickerService = this.pickerServiceFactory();\n }\n return this.pickerService;\n }\n\n reInit() {\n this.renderService.reInit();\n this.pickerService.reInit();\n }\n}\n"]}
@@ -1,6 +1,5 @@
1
1
  import { BrowserEntry } from './browser';
2
2
  import type { IEntryOptions } from './types';
3
3
  export declare class MiniappEntry extends BrowserEntry {
4
- constructor(options?: IEntryOptions);
5
4
  }
6
5
  export declare function createMiniappApp(options?: IEntryOptions): MiniappEntry;
@@ -6,11 +6,7 @@ Object.defineProperty(exports, "__esModule", {
6
6
 
7
7
  const browser_1 = require("./browser");
8
8
 
9
- class MiniappEntry extends browser_1.BrowserEntry {
10
- constructor(options = {}) {
11
- super(options);
12
- }
13
- }
9
+ class MiniappEntry extends browser_1.BrowserEntry {}
14
10
 
15
11
  function createMiniappApp(options = {}) {
16
12
  return new MiniappEntry(options);
@@ -1 +1 @@
1
- {"version":3,"sources":["../src/entries/miniapp.ts"],"names":[],"mappings":";;;AAAA,uCAAyC;AAGzC,MAAa,YAAa,SAAQ,sBAAY;IAC5C,YAAY,UAAyB,EAAE;QACrC,KAAK,CAAC,OAAO,CAAC,CAAC;IACjB,CAAC;CACF;AAJD,oCAIC;AAED,SAAgB,gBAAgB,CAAC,UAAyB,EAAE;IAC1D,OAAO,IAAI,YAAY,CAAC,OAAO,CAAC,CAAC;AACnC,CAAC;AAFD,4CAEC","file":"miniapp.js","sourcesContent":["import { BrowserEntry } from './browser';\nimport type { IEntryOptions } from './types';\n\nexport class MiniappEntry extends BrowserEntry {\n constructor(options: IEntryOptions = {}) {\n super(options);\n }\n}\n\nexport function createMiniappApp(options: IEntryOptions = {}) {\n return new MiniappEntry(options);\n}\n"]}
1
+ {"version":3,"sources":["../src/entries/miniapp.ts"],"names":[],"mappings":";;;AAAA,uCAAyC;AAGzC,MAAa,YAAa,SAAQ,sBAAY;CAAG;AAAjD,oCAAiD;AAEjD,SAAgB,gBAAgB,CAAC,UAAyB,EAAE;IAC1D,OAAO,IAAI,YAAY,CAAC,OAAO,CAAC,CAAC;AACnC,CAAC;AAFD,4CAEC","file":"miniapp.js","sourcesContent":["import { BrowserEntry } from './browser';\nimport type { IEntryOptions } from './types';\n\nexport class MiniappEntry extends BrowserEntry {}\n\nexport function createMiniappApp(options: IEntryOptions = {}) {\n return new MiniappEntry(options);\n}\n"]}
@@ -1,6 +1,5 @@
1
1
  import { BrowserEntry } from './browser';
2
2
  import type { IEntryOptions } from './types';
3
3
  export declare class NodeEntry extends BrowserEntry {
4
- constructor(options?: IEntryOptions);
5
4
  }
6
5
  export declare function createNodeApp(options?: IEntryOptions): NodeEntry;
@@ -6,11 +6,7 @@ Object.defineProperty(exports, "__esModule", {
6
6
 
7
7
  const browser_1 = require("./browser");
8
8
 
9
- class NodeEntry extends browser_1.BrowserEntry {
10
- constructor(options = {}) {
11
- super(options);
12
- }
13
- }
9
+ class NodeEntry extends browser_1.BrowserEntry {}
14
10
 
15
11
  function createNodeApp(options = {}) {
16
12
  return new NodeEntry(options);
@@ -1 +1 @@
1
- {"version":3,"sources":["../src/entries/node.ts"],"names":[],"mappings":";;;AAAA,uCAAyC;AAGzC,MAAa,SAAU,SAAQ,sBAAY;IACzC,YAAY,UAAyB,EAAE;QACrC,KAAK,CAAC,OAAO,CAAC,CAAC;IACjB,CAAC;CACF;AAJD,8BAIC;AAED,SAAgB,aAAa,CAAC,UAAyB,EAAE;IACvD,OAAO,IAAI,SAAS,CAAC,OAAO,CAAC,CAAC;AAChC,CAAC;AAFD,sCAEC","file":"node.js","sourcesContent":["import { BrowserEntry } from './browser';\nimport type { IEntryOptions } from './types';\n\nexport class NodeEntry extends BrowserEntry {\n constructor(options: IEntryOptions = {}) {\n super(options);\n }\n}\n\nexport function createNodeApp(options: IEntryOptions = {}) {\n return new NodeEntry(options);\n}\n"]}
1
+ {"version":3,"sources":["../src/entries/node.ts"],"names":[],"mappings":";;;AAAA,uCAAyC;AAGzC,MAAa,SAAU,SAAQ,sBAAY;CAAG;AAA9C,8BAA8C;AAE9C,SAAgB,aAAa,CAAC,UAAyB,EAAE;IACvD,OAAO,IAAI,SAAS,CAAC,OAAO,CAAC,CAAC;AAChC,CAAC;AAFD,sCAEC","file":"node.js","sourcesContent":["import { BrowserEntry } from './browser';\nimport type { IEntryOptions } from './types';\n\nexport class NodeEntry extends BrowserEntry {}\n\nexport function createNodeApp(options: IEntryOptions = {}) {\n return new NodeEntry(options);\n}\n"]}
@@ -15,6 +15,8 @@ binding_context_1.createLegacyBindingContext)();
15
15
 
16
16
  let runtimeGlobal, runtimeInstallerPreloaded = !1;
17
17
 
18
+ const RUNTIME_RENDERER_NAMESPACE = "vrender:runtime-renderer", RUNTIME_PICKER_NAMESPACE = "vrender:runtime-picker", runtimeEntryKeys = new WeakMap, runtimeDrawContributions = new WeakMap;
19
+
18
20
  function ensureRuntimeInstallerPreloaded() {
19
21
  runtimeInstallerPreloaded || (runtimeInstallerPreloaded = !0, (0, core_modules_1.default)({
20
22
  bind: runtimeInstallerContext.bind
@@ -42,6 +44,18 @@ function registerRuntimeEntries(register, entries, prefix) {
42
44
  }));
43
45
  }
44
46
 
47
+ function getTrackedEntryKeys(registry, namespace) {
48
+ let namespaces = runtimeEntryKeys.get(registry);
49
+ namespaces || (namespaces = new Map, runtimeEntryKeys.set(registry, namespaces));
50
+ let keys = namespaces.get(namespace);
51
+ return keys || (keys = new Set, namespaces.set(namespace, keys)), keys;
52
+ }
53
+
54
+ function clearTrackedEntryKeys(registry, namespace, unregister) {
55
+ const keys = getTrackedEntryKeys(registry, namespace);
56
+ unregister && keys.forEach((key => unregister(key))), keys.clear();
57
+ }
58
+
45
59
  function createAppRegistryContributionProvider(app, key) {
46
60
  return {
47
61
  getContributions: () => app.context.registry.contribution.get(key)
@@ -76,31 +90,43 @@ function configureRuntimeApplicationForApp(app) {
76
90
  }
77
91
 
78
92
  function installRuntimeGraphicRenderersToApp(app) {
93
+ var _a;
79
94
  const bindingContext = getRuntimeInstallerBindingContext();
80
95
  refreshRuntimeInstallerContributions();
81
- const renderers = bindingContext.getAll(symbol_1.GraphicRender);
82
- app.registry.renderer.clear(), registerRuntimeEntries(((key, renderer) => {
96
+ const renderers = bindingContext.getAll(symbol_1.GraphicRender), registeredKeys = getTrackedEntryKeys(app.registry.renderer, "vrender:runtime-renderer");
97
+ clearTrackedEntryKeys(app.registry.renderer, "vrender:runtime-renderer", null === (_a = app.registry.renderer.unregister) || void 0 === _a ? void 0 : _a.bind(app.registry.renderer)),
98
+ registerRuntimeEntries(((key, renderer) => {
83
99
  var _a;
84
100
  null === (_a = null == renderer ? void 0 : renderer.reInit) || void 0 === _a || _a.call(renderer),
85
- app.registry.renderer.register(key, renderer);
86
- }), renderers, "runtime-renderer");
101
+ app.registry.renderer.register(key, renderer), registeredKeys.add(key);
102
+ }), renderers, "vrender:runtime-renderer");
87
103
  }
88
104
 
89
105
  function installRuntimeDrawContributionsToApp(app) {
106
+ var _a;
90
107
  const bindingContext = getRuntimeInstallerBindingContext();
91
108
  refreshRuntimeInstallerContributions();
92
- const contributions = bindingContext.getAll(draw_interceptor_1.DrawItemInterceptor);
93
- app.context.registry.contribution.clear(draw_interceptor_1.DrawItemInterceptor),
109
+ const contributions = bindingContext.getAll(draw_interceptor_1.DrawItemInterceptor), tracked = null !== (_a = runtimeDrawContributions.get(app.context.registry.contribution)) && void 0 !== _a ? _a : new Set;
110
+ tracked.forEach((contribution => {
111
+ var _a, _b;
112
+ null === (_b = (_a = app.context.registry.contribution).unregister) || void 0 === _b || _b.call(_a, draw_interceptor_1.DrawItemInterceptor, contribution);
113
+ })), tracked.clear(), runtimeDrawContributions.set(app.context.registry.contribution, tracked);
114
+ const registered = new Set(app.context.registry.contribution.get(draw_interceptor_1.DrawItemInterceptor));
94
115
  contributions.forEach((contribution => {
95
- app.context.registry.contribution.register(draw_interceptor_1.DrawItemInterceptor, contribution);
116
+ registered.has(contribution) || (app.context.registry.contribution.register(draw_interceptor_1.DrawItemInterceptor, contribution),
117
+ registered.add(contribution)), tracked.add(contribution);
96
118
  }));
97
119
  }
98
120
 
99
121
  function installRuntimePickersToApp(app, serviceIdentifier) {
122
+ var _a;
100
123
  const bindingContext = getRuntimeInstallerBindingContext();
101
124
  refreshRuntimeInstallerContributions();
102
- const pickers = bindingContext.getAll(serviceIdentifier);
103
- app.registry.picker.clear(), registerRuntimeEntries(((key, picker) => app.registry.picker.register(key, picker)), pickers, "runtime-picker");
125
+ const pickers = bindingContext.getAll(serviceIdentifier), registeredKeys = getTrackedEntryKeys(app.registry.picker, "vrender:runtime-picker");
126
+ clearTrackedEntryKeys(app.registry.picker, "vrender:runtime-picker", null === (_a = app.registry.picker.unregister) || void 0 === _a ? void 0 : _a.bind(app.registry.picker)),
127
+ registerRuntimeEntries(((key, picker) => {
128
+ app.registry.picker.register(key, picker), registeredKeys.add(key);
129
+ }), pickers, "vrender:runtime-picker");
104
130
  }
105
131
 
106
132
  exports.getRuntimeInstallerBindingContext = getRuntimeInstallerBindingContext, exports.refreshRuntimeInstallerContributions = refreshRuntimeInstallerContributions,
@@ -1 +1 @@
1
- {"version":3,"sources":["../src/entries/runtime-installer.ts"],"names":[],"mappings":"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","file":"runtime-installer.js","sourcesContent":["import type {\n IContributionProvider,\n IAreaRenderContribution,\n IDrawItemInterceptorContribution,\n IEnvContribution,\n IGlobal,\n IGraphicPicker,\n IPlugin\n} from '../interface';\nimport type { IApp } from './types';\nimport { application } from '../application';\nimport { CanvasFactory, Context2dFactory } from '../canvas/constants';\nimport { ContributionStore, createContributionProvider } from '../common/contribution-provider';\nimport type { ServiceIdentifier } from '../common/explicit-binding';\nimport { EnvContribution } from '../constants';\nimport loadBuiltinContributions from '../core/contributions/modules';\nimport { DefaultGlobal } from '../core/global';\nimport { WindowHandlerContribution, DefaultWindow } from '../core/window';\nimport coreModule from '../core/core-modules';\nimport graphicModule from '../graphic/graphic-service/graphic-module';\nimport { createLegacyBindingContext, type ILegacyBindingContext } from '../legacy/binding-context';\nimport pickModule from '../picker/pick-modules';\nimport { AreaRenderContribution } from '../render/contributions/render/contributions/constants';\nimport { DrawItemInterceptor } from '../render/contributions/render/draw-interceptor';\nimport { DefaultIncrementalCanvasAreaRender } from '../render/contributions/render/incremental-area-render';\nimport { DefaultIncrementalDrawContribution } from '../render/contributions/render/incremental-draw-contribution';\nimport { DefaultIncrementalCanvasLineRender } from '../render/contributions/render/incremental-line-render';\nimport renderModule from '../render/render-modules';\nimport { GraphicRender } from '../render/contributions/render/symbol';\nimport loadRenderContributions from '../render/contributions/modules';\nimport { AutoEnablePlugins } from '../plugins/constants';\nimport { DefaultPluginService } from '../plugins/plugin-service';\n\nconst runtimeInstallerContext = createLegacyBindingContext();\nlet runtimeInstallerPreloaded = false;\nlet runtimeGlobal: IGlobal | undefined;\n\nfunction ensureRuntimeInstallerPreloaded(): void {\n if (runtimeInstallerPreloaded) {\n return;\n }\n\n runtimeInstallerPreloaded = true;\n coreModule({ bind: runtimeInstallerContext.bind });\n graphicModule({ bind: runtimeInstallerContext.bind });\n renderModule({ bind: runtimeInstallerContext.bind });\n pickModule({ bind: runtimeInstallerContext.bind, isBound: runtimeInstallerContext.isBound });\n loadBuiltinContributions(runtimeInstallerContext);\n loadRenderContributions(runtimeInstallerContext);\n}\n\nfunction resolveRuntimeNamed<T>(serviceIdentifier: ServiceIdentifier<T>, name: string): T {\n const bindingContext = getRuntimeInstallerBindingContext();\n const instance = bindingContext.getNamed(serviceIdentifier, name);\n\n if (instance == null) {\n throw new Error(`${String(serviceIdentifier)} is not configured for ${name}`);\n }\n\n return instance;\n}\n\nfunction registerRuntimeEntries<T extends { type?: string }>(\n register: (key: string, value: T) => void,\n entries: T[],\n prefix: string\n): void {\n entries.forEach((entry, index) => {\n const name = entry?.type ?? entry?.constructor?.name ?? `${prefix}-entry`;\n register(`${prefix}:${String(name)}:${index}`, entry);\n });\n}\n\nfunction createAppRegistryContributionProvider<T>(app: IApp, key: ServiceIdentifier<T>): IContributionProvider<T> {\n return {\n getContributions: () => app.context.registry.contribution.get(key as any) as T[]\n };\n}\n\nexport function getRuntimeInstallerBindingContext(): ILegacyBindingContext {\n ensureRuntimeInstallerPreloaded();\n return runtimeInstallerContext;\n}\n\nexport function refreshRuntimeInstallerContributions(): void {\n ContributionStore.refreshAllContributions();\n}\n\nexport function getRuntimeInstallerGlobal(): IGlobal {\n ensureRuntimeInstallerPreloaded();\n runtimeGlobal ??= new DefaultGlobal(\n createContributionProvider<IEnvContribution>(EnvContribution, runtimeInstallerContext)\n );\n return runtimeGlobal;\n}\n\nexport function configureRuntimeApplicationForApp(app: IApp): void {\n const bindingContext = getRuntimeInstallerBindingContext();\n const global = getRuntimeInstallerGlobal();\n\n application.global = global;\n application.canvasFactory = env => bindingContext.getNamed(CanvasFactory, env);\n application.context2dFactory = env => bindingContext.getNamed(Context2dFactory, env);\n application.windowHandlerFactory = env => resolveRuntimeNamed(WindowHandlerContribution, env);\n application.windowFactory = () =>\n new DefaultWindow(global, env => resolveRuntimeNamed(WindowHandlerContribution, env));\n application.pluginServiceFactory = () =>\n new DefaultPluginService(createContributionProvider<IPlugin>(AutoEnablePlugins, bindingContext), {\n pluginRegistry: app.context.registry.plugin as any\n });\n application.incrementalDrawContributionFactory = () =>\n new DefaultIncrementalDrawContribution(\n [],\n new DefaultIncrementalCanvasLineRender(),\n new DefaultIncrementalCanvasAreaRender(\n createContributionProvider<IAreaRenderContribution>(AreaRenderContribution, bindingContext)\n ),\n createAppRegistryContributionProvider<IDrawItemInterceptorContribution>(app, DrawItemInterceptor)\n );\n}\n\nexport function installRuntimeGraphicRenderersToApp(app: IApp): void {\n const bindingContext = getRuntimeInstallerBindingContext();\n refreshRuntimeInstallerContributions();\n const renderers = bindingContext.getAll(GraphicRender);\n\n app.registry.renderer.clear();\n registerRuntimeEntries(\n (key, renderer) => {\n renderer?.reInit?.();\n app.registry.renderer.register(key, renderer);\n },\n renderers as any[],\n 'runtime-renderer'\n );\n}\n\nexport function installRuntimeDrawContributionsToApp(app: IApp): void {\n const bindingContext = getRuntimeInstallerBindingContext();\n refreshRuntimeInstallerContributions();\n const contributions = bindingContext.getAll(DrawItemInterceptor) as IDrawItemInterceptorContribution[];\n\n app.context.registry.contribution.clear(DrawItemInterceptor);\n contributions.forEach(contribution => {\n app.context.registry.contribution.register(DrawItemInterceptor, contribution);\n });\n}\n\nexport function installRuntimePickersToApp<T extends IGraphicPicker>(\n app: IApp,\n serviceIdentifier: ServiceIdentifier<T>\n): void {\n const bindingContext = getRuntimeInstallerBindingContext();\n refreshRuntimeInstallerContributions();\n const pickers = bindingContext.getAll(serviceIdentifier);\n\n app.registry.picker.clear();\n registerRuntimeEntries(\n (key, picker) => app.registry.picker.register(key, picker),\n pickers as any[],\n 'runtime-picker'\n );\n}\n"]}
1
+ {"version":3,"sources":["../src/entries/runtime-installer.ts"],"names":[],"mappings":"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","file":"runtime-installer.js","sourcesContent":["import type {\n IContributionProvider,\n IAreaRenderContribution,\n IDrawItemInterceptorContribution,\n IEnvContribution,\n IGlobal,\n IGraphicPicker,\n IPlugin\n} from '../interface';\nimport type { IApp } from './types';\nimport { application } from '../application';\nimport { CanvasFactory, Context2dFactory } from '../canvas/constants';\nimport { ContributionStore, createContributionProvider } from '../common/contribution-provider';\nimport type { ServiceIdentifier } from '../common/explicit-binding';\nimport { EnvContribution } from '../constants';\nimport loadBuiltinContributions from '../core/contributions/modules';\nimport { DefaultGlobal } from '../core/global';\nimport { WindowHandlerContribution, DefaultWindow } from '../core/window';\nimport coreModule from '../core/core-modules';\nimport graphicModule from '../graphic/graphic-service/graphic-module';\nimport { createLegacyBindingContext, type ILegacyBindingContext } from '../legacy/binding-context';\nimport pickModule from '../picker/pick-modules';\nimport { AreaRenderContribution } from '../render/contributions/render/contributions/constants';\nimport { DrawItemInterceptor } from '../render/contributions/render/draw-interceptor';\nimport { DefaultIncrementalCanvasAreaRender } from '../render/contributions/render/incremental-area-render';\nimport { DefaultIncrementalDrawContribution } from '../render/contributions/render/incremental-draw-contribution';\nimport { DefaultIncrementalCanvasLineRender } from '../render/contributions/render/incremental-line-render';\nimport renderModule from '../render/render-modules';\nimport { GraphicRender } from '../render/contributions/render/symbol';\nimport loadRenderContributions from '../render/contributions/modules';\nimport { AutoEnablePlugins } from '../plugins/constants';\nimport { DefaultPluginService } from '../plugins/plugin-service';\n\nconst runtimeInstallerContext = createLegacyBindingContext();\nlet runtimeInstallerPreloaded = false;\nlet runtimeGlobal: IGlobal | undefined;\nconst RUNTIME_RENDERER_NAMESPACE = 'vrender:runtime-renderer';\nconst RUNTIME_PICKER_NAMESPACE = 'vrender:runtime-picker';\nconst runtimeEntryKeys = new WeakMap<object, Map<string, Set<string>>>();\nconst runtimeDrawContributions = new WeakMap<object, Set<IDrawItemInterceptorContribution>>();\n\nfunction ensureRuntimeInstallerPreloaded(): void {\n if (runtimeInstallerPreloaded) {\n return;\n }\n\n runtimeInstallerPreloaded = true;\n coreModule({ bind: runtimeInstallerContext.bind });\n graphicModule({ bind: runtimeInstallerContext.bind });\n renderModule({ bind: runtimeInstallerContext.bind });\n pickModule({ bind: runtimeInstallerContext.bind, isBound: runtimeInstallerContext.isBound });\n loadBuiltinContributions(runtimeInstallerContext);\n loadRenderContributions(runtimeInstallerContext);\n}\n\nfunction resolveRuntimeNamed<T>(serviceIdentifier: ServiceIdentifier<T>, name: string): T {\n const bindingContext = getRuntimeInstallerBindingContext();\n const instance = bindingContext.getNamed(serviceIdentifier, name);\n\n if (instance == null) {\n throw new Error(`${String(serviceIdentifier)} is not configured for ${name}`);\n }\n\n return instance;\n}\n\nfunction registerRuntimeEntries<T extends { type?: string }>(\n register: (key: string, value: T) => void,\n entries: T[],\n prefix: string\n): void {\n entries.forEach((entry, index) => {\n const name = entry?.type ?? entry?.constructor?.name ?? `${prefix}-entry`;\n register(`${prefix}:${String(name)}:${index}`, entry);\n });\n}\n\nfunction getTrackedEntryKeys(registry: object, namespace: string): Set<string> {\n let namespaces = runtimeEntryKeys.get(registry);\n if (!namespaces) {\n namespaces = new Map();\n runtimeEntryKeys.set(registry, namespaces);\n }\n\n let keys = namespaces.get(namespace);\n if (!keys) {\n keys = new Set();\n namespaces.set(namespace, keys);\n }\n\n return keys;\n}\n\nfunction clearTrackedEntryKeys(registry: object, namespace: string, unregister?: (key: string) => void): void {\n const keys = getTrackedEntryKeys(registry, namespace);\n if (unregister) {\n keys.forEach(key => unregister(key));\n }\n keys.clear();\n}\n\nfunction createAppRegistryContributionProvider<T>(app: IApp, key: ServiceIdentifier<T>): IContributionProvider<T> {\n return {\n getContributions: () => app.context.registry.contribution.get(key as any) as T[]\n };\n}\n\nexport function getRuntimeInstallerBindingContext(): ILegacyBindingContext {\n ensureRuntimeInstallerPreloaded();\n return runtimeInstallerContext;\n}\n\nexport function refreshRuntimeInstallerContributions(): void {\n ContributionStore.refreshAllContributions();\n}\n\nexport function getRuntimeInstallerGlobal(): IGlobal {\n ensureRuntimeInstallerPreloaded();\n runtimeGlobal ??= new DefaultGlobal(\n createContributionProvider<IEnvContribution>(EnvContribution, runtimeInstallerContext)\n );\n return runtimeGlobal;\n}\n\nexport function configureRuntimeApplicationForApp(app: IApp): void {\n const bindingContext = getRuntimeInstallerBindingContext();\n const global = getRuntimeInstallerGlobal();\n\n application.global = global;\n application.canvasFactory = env => bindingContext.getNamed(CanvasFactory, env);\n application.context2dFactory = env => bindingContext.getNamed(Context2dFactory, env);\n application.windowHandlerFactory = env => resolveRuntimeNamed(WindowHandlerContribution, env);\n application.windowFactory = () =>\n new DefaultWindow(global, env => resolveRuntimeNamed(WindowHandlerContribution, env));\n application.pluginServiceFactory = () =>\n new DefaultPluginService(createContributionProvider<IPlugin>(AutoEnablePlugins, bindingContext), {\n pluginRegistry: app.context.registry.plugin as any\n });\n application.incrementalDrawContributionFactory = () =>\n new DefaultIncrementalDrawContribution(\n [],\n new DefaultIncrementalCanvasLineRender(),\n new DefaultIncrementalCanvasAreaRender(\n createContributionProvider<IAreaRenderContribution>(AreaRenderContribution, bindingContext)\n ),\n createAppRegistryContributionProvider<IDrawItemInterceptorContribution>(app, DrawItemInterceptor)\n );\n}\n\nexport function installRuntimeGraphicRenderersToApp(app: IApp): void {\n const bindingContext = getRuntimeInstallerBindingContext();\n refreshRuntimeInstallerContributions();\n const renderers = bindingContext.getAll(GraphicRender);\n const registeredKeys = getTrackedEntryKeys(app.registry.renderer as object, RUNTIME_RENDERER_NAMESPACE);\n\n clearTrackedEntryKeys(\n app.registry.renderer as object,\n RUNTIME_RENDERER_NAMESPACE,\n app.registry.renderer.unregister?.bind(app.registry.renderer)\n );\n\n registerRuntimeEntries(\n (key, renderer) => {\n renderer?.reInit?.();\n app.registry.renderer.register(key, renderer);\n registeredKeys.add(key);\n },\n renderers as any[],\n RUNTIME_RENDERER_NAMESPACE\n );\n}\n\nexport function installRuntimeDrawContributionsToApp(app: IApp): void {\n const bindingContext = getRuntimeInstallerBindingContext();\n refreshRuntimeInstallerContributions();\n const contributions = bindingContext.getAll(DrawItemInterceptor) as IDrawItemInterceptorContribution[];\n const tracked =\n runtimeDrawContributions.get(app.context.registry.contribution as object) ??\n new Set<IDrawItemInterceptorContribution>();\n tracked.forEach(contribution => {\n app.context.registry.contribution.unregister?.(DrawItemInterceptor, contribution);\n });\n tracked.clear();\n runtimeDrawContributions.set(app.context.registry.contribution as object, tracked);\n const registered = new Set(app.context.registry.contribution.get(DrawItemInterceptor));\n\n contributions.forEach(contribution => {\n if (!registered.has(contribution)) {\n app.context.registry.contribution.register(DrawItemInterceptor, contribution);\n registered.add(contribution);\n }\n tracked.add(contribution);\n });\n}\n\nexport function installRuntimePickersToApp<T extends IGraphicPicker>(\n app: IApp,\n serviceIdentifier: ServiceIdentifier<T>\n): void {\n const bindingContext = getRuntimeInstallerBindingContext();\n refreshRuntimeInstallerContributions();\n const pickers = bindingContext.getAll(serviceIdentifier);\n const registeredKeys = getTrackedEntryKeys(app.registry.picker as object, RUNTIME_PICKER_NAMESPACE);\n\n clearTrackedEntryKeys(\n app.registry.picker as object,\n RUNTIME_PICKER_NAMESPACE,\n app.registry.picker.unregister?.bind(app.registry.picker)\n );\n\n registerRuntimeEntries(\n (key, picker) => {\n app.registry.picker.register(key, picker);\n registeredKeys.add(key);\n },\n pickers as any[],\n RUNTIME_PICKER_NAMESPACE\n );\n}\n"]}
package/cjs/env.d.ts ADDED
@@ -0,0 +1 @@
1
+ export { getCurrentEnv, isBrowserEnv, isNodeEnv } from './env-check';
package/cjs/env.js ADDED
@@ -0,0 +1,25 @@
1
+ "use strict";
2
+
3
+ Object.defineProperty(exports, "__esModule", {
4
+ value: !0
5
+ }), exports.isNodeEnv = exports.isBrowserEnv = exports.getCurrentEnv = void 0;
6
+
7
+ var env_check_1 = require("./env-check");
8
+
9
+ Object.defineProperty(exports, "getCurrentEnv", {
10
+ enumerable: !0,
11
+ get: function() {
12
+ return env_check_1.getCurrentEnv;
13
+ }
14
+ }), Object.defineProperty(exports, "isBrowserEnv", {
15
+ enumerable: !0,
16
+ get: function() {
17
+ return env_check_1.isBrowserEnv;
18
+ }
19
+ }), Object.defineProperty(exports, "isNodeEnv", {
20
+ enumerable: !0,
21
+ get: function() {
22
+ return env_check_1.isNodeEnv;
23
+ }
24
+ });
25
+ //# sourceMappingURL=env.js.map
package/cjs/env.js.map ADDED
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../src/env.ts"],"names":[],"mappings":";;;AAAA,yCAAqE;AAA5D,0GAAA,aAAa,OAAA;AAAE,yGAAA,YAAY,OAAA;AAAE,sGAAA,SAAS,OAAA","file":"env.js","sourcesContent":["export { getCurrentEnv, isBrowserEnv, isNodeEnv } from './env-check';\n"]}
@@ -0,0 +1,7 @@
1
+ export { WILDCARD } from './constant';
2
+ export { CustomEvent, FederatedEvent, FederatedMouseEvent, FederatedPointerEvent, FederatedWheelEvent } from './federated-event';
3
+ export { AttributeUpdateType, Direction, IContainPointMode, UpdateTag } from '../common/enums';
4
+ export { AnimateMode } from '../interface/animation/animate';
5
+ export { AnimateStatus, AnimateStepType } from '../interface/animation/type';
6
+ export { STATUS } from '../interface/animation/ticker';
7
+ export type { EasingType, EasingTypeFunc, EasingTypeStr } from '../interface/animation/easing';