@visactor/vrender-core 1.1.0-alpha.23 → 1.1.0-alpha.25

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 (402) hide show
  1. package/cjs/allocator/bounds-allocate.js +1 -2
  2. package/cjs/canvas/constants.js +2 -1
  3. package/cjs/common/bezier-utils.js +1 -2
  4. package/cjs/common/event-transformer.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/performance-raf.js +1 -2
  9. package/cjs/common/rect-utils.js +1 -1
  10. package/cjs/common/render-area.js +1 -1
  11. package/cjs/common/render-command-list.js +1 -1
  12. package/cjs/common/render-curve.js +1 -1
  13. package/cjs/common/render-utils.js +1 -1
  14. package/cjs/common/seg-context.js +1 -1
  15. package/cjs/container.d.ts +2 -0
  16. package/cjs/container.js +50 -0
  17. package/cjs/container.js.map +1 -0
  18. package/cjs/core/application.js +1 -1
  19. package/cjs/core/camera.js +1 -1
  20. package/cjs/core/constants.js +1 -1
  21. package/cjs/core/core-modules.js +1 -1
  22. package/cjs/core/global-module.js +2 -0
  23. package/cjs/core/global.js +1 -1
  24. package/cjs/core/graphic-utils.js +1 -1
  25. package/cjs/core/index.js +1 -1
  26. package/cjs/core/layer-service.js +2 -1
  27. package/cjs/core/layer.js +1 -1
  28. package/cjs/core/light.js +1 -1
  29. package/cjs/core/stage.d.ts +0 -9
  30. package/cjs/core/stage.js +12 -30
  31. package/cjs/core/stage.js.map +1 -1
  32. package/cjs/core/window.js +1 -1
  33. package/cjs/entries/miniapp.d.ts +0 -1
  34. package/cjs/entries/miniapp.js +1 -5
  35. package/cjs/entries/miniapp.js.map +1 -1
  36. package/cjs/entries/node.d.ts +0 -1
  37. package/cjs/entries/node.js +1 -5
  38. package/cjs/entries/node.js.map +1 -1
  39. package/cjs/env.d.ts +1 -0
  40. package/cjs/env.js +25 -0
  41. package/cjs/env.js.map +1 -0
  42. package/cjs/event/public-constant.d.ts +7 -0
  43. package/cjs/event/public-constant.js +100 -0
  44. package/cjs/event/public-constant.js.map +1 -0
  45. package/cjs/event/util.d.ts +1 -1
  46. package/cjs/graphic/arc.js +6 -4
  47. package/cjs/graphic/arc.js.map +1 -1
  48. package/cjs/graphic/base.d.ts +2 -0
  49. package/cjs/graphic/base.js +15 -0
  50. package/cjs/graphic/base.js.map +1 -0
  51. package/cjs/graphic/config.js +1 -0
  52. package/cjs/graphic/config.js.map +1 -1
  53. package/cjs/graphic/creator.d.ts +16 -0
  54. package/cjs/graphic/creator.js +160 -0
  55. package/cjs/graphic/creator.js.map +1 -0
  56. package/cjs/graphic/glyph.js +4 -8
  57. package/cjs/graphic/glyph.js.map +1 -1
  58. package/cjs/graphic/graphic.d.ts +19 -28
  59. package/cjs/graphic/graphic.js +122 -193
  60. package/cjs/graphic/graphic.js.map +1 -1
  61. package/cjs/graphic/group.d.ts +1 -3
  62. package/cjs/graphic/group.js +22 -28
  63. package/cjs/graphic/group.js.map +1 -1
  64. package/cjs/graphic/modules.d.ts +16 -0
  65. package/cjs/graphic/modules.js +150 -0
  66. package/cjs/graphic/modules.js.map +1 -0
  67. package/cjs/graphic/node-tree.d.ts +3 -3
  68. package/cjs/graphic/node-tree.js +1 -0
  69. package/cjs/graphic/node-tree.js.map +1 -1
  70. package/cjs/graphic/state/shared-state-refresh.js +11 -32
  71. package/cjs/graphic/state/shared-state-refresh.js.map +1 -1
  72. package/cjs/graphic/state/shared-state-scope.d.ts +2 -5
  73. package/cjs/graphic/state/shared-state-scope.js +8 -27
  74. package/cjs/graphic/state/shared-state-scope.js.map +1 -1
  75. package/cjs/graphic/state/state-definition-compiler.js +4 -5
  76. package/cjs/graphic/state/state-definition-compiler.js.map +1 -1
  77. package/cjs/graphic/state/state-definition.d.ts +2 -5
  78. package/cjs/graphic/state/state-definition.js.map +1 -1
  79. package/cjs/graphic/state/state-engine.d.ts +0 -5
  80. package/cjs/graphic/state/state-engine.js +20 -70
  81. package/cjs/graphic/state/state-engine.js.map +1 -1
  82. package/cjs/graphic/state/state-transition-orchestrator.d.ts +7 -9
  83. package/cjs/graphic/state/state-transition-orchestrator.js +10 -13
  84. package/cjs/graphic/state/state-transition-orchestrator.js.map +1 -1
  85. package/cjs/interface/graphic/arc.d.ts +1 -0
  86. package/cjs/interface/graphic/arc.js.map +1 -1
  87. package/cjs/interface/graphic/group.d.ts +0 -2
  88. package/cjs/interface/graphic/group.js.map +1 -1
  89. package/cjs/interface/graphic.d.ts +1 -5
  90. package/cjs/interface/graphic.js.map +1 -1
  91. package/cjs/interface/index.js.map +1 -1
  92. package/cjs/interface/node-tree.d.ts +3 -0
  93. package/cjs/interface/node-tree.js.map +1 -1
  94. package/cjs/interface/stage.d.ts +0 -7
  95. package/cjs/interface/stage.js.map +1 -1
  96. package/cjs/interpolate.d.ts +2 -0
  97. package/cjs/interpolate.js +34 -0
  98. package/cjs/interpolate.js.map +1 -0
  99. package/cjs/modules.js.map +1 -1
  100. package/cjs/path.d.ts +4 -0
  101. package/cjs/path.js +33 -0
  102. package/cjs/path.js.map +1 -0
  103. package/cjs/plugin/3d.d.ts +3 -0
  104. package/cjs/plugin/3d.js +33 -0
  105. package/cjs/plugin/3d.js.map +1 -0
  106. package/cjs/plugin/attribute.d.ts +2 -0
  107. package/cjs/plugin/attribute.js +24 -0
  108. package/cjs/plugin/attribute.js.map +1 -0
  109. package/cjs/plugin/flex-layout.d.ts +1 -0
  110. package/cjs/plugin/flex-layout.js +15 -0
  111. package/cjs/plugin/flex-layout.js.map +1 -0
  112. package/cjs/plugins/builtin-plugin/dirty-bounds-plugin.js +8 -8
  113. package/cjs/plugins/builtin-plugin/dirty-bounds-plugin.js.map +1 -1
  114. package/cjs/plugins/index.d.ts +0 -4
  115. package/cjs/plugins/index.js +1 -3
  116. package/cjs/plugins/index.js.map +1 -1
  117. package/cjs/plugins/plugin-service.d.ts +0 -1
  118. package/cjs/plugins/plugin-service.js +2 -3
  119. package/cjs/plugins/plugin-service.js.map +1 -1
  120. package/cjs/plugins/types.d.ts +1 -8
  121. package/cjs/plugins/types.js.map +1 -1
  122. package/cjs/register/graphic.d.ts +19 -0
  123. package/cjs/register/graphic.js +177 -0
  124. package/cjs/register/graphic.js.map +1 -0
  125. package/cjs/registry/contribution-registry.d.ts +0 -1
  126. package/cjs/registry/contribution-registry.js +0 -3
  127. package/cjs/registry/contribution-registry.js.map +1 -1
  128. package/cjs/registry/picker-registry.d.ts +0 -1
  129. package/cjs/registry/picker-registry.js +0 -3
  130. package/cjs/registry/picker-registry.js.map +1 -1
  131. package/cjs/registry/renderer-registry.d.ts +0 -1
  132. package/cjs/registry/renderer-registry.js +0 -3
  133. package/cjs/registry/renderer-registry.js.map +1 -1
  134. package/cjs/registry/types.d.ts +0 -3
  135. package/cjs/registry/types.js.map +1 -1
  136. package/cjs/render/contributions/render/arc-module.js +2 -4
  137. package/cjs/render/contributions/render/arc-module.js.map +1 -1
  138. package/cjs/render/contributions/render/arc3d-module.js +2 -4
  139. package/cjs/render/contributions/render/arc3d-module.js.map +1 -1
  140. package/cjs/render/contributions/render/area-module.js +2 -4
  141. package/cjs/render/contributions/render/area-module.js.map +1 -1
  142. package/cjs/render/contributions/render/circle-module.js +2 -4
  143. package/cjs/render/contributions/render/circle-module.js.map +1 -1
  144. package/cjs/render/contributions/render/glyph-module.js +2 -4
  145. package/cjs/render/contributions/render/glyph-module.js.map +1 -1
  146. package/cjs/render/contributions/render/image-module.js +2 -4
  147. package/cjs/render/contributions/render/image-module.js.map +1 -1
  148. package/cjs/render/contributions/render/line-module.js +2 -4
  149. package/cjs/render/contributions/render/line-module.js.map +1 -1
  150. package/cjs/render/contributions/render/path-module.js +2 -4
  151. package/cjs/render/contributions/render/path-module.js.map +1 -1
  152. package/cjs/render/contributions/render/polygon-module.js +2 -4
  153. package/cjs/render/contributions/render/polygon-module.js.map +1 -1
  154. package/cjs/render/contributions/render/pyramid3d-module.js +2 -4
  155. package/cjs/render/contributions/render/pyramid3d-module.js.map +1 -1
  156. package/cjs/render/contributions/render/rect-module.js +2 -4
  157. package/cjs/render/contributions/render/rect-module.js.map +1 -1
  158. package/cjs/render/contributions/render/rect3d-module.js +2 -4
  159. package/cjs/render/contributions/render/rect3d-module.js.map +1 -1
  160. package/cjs/render/contributions/render/richtext-module.js +2 -4
  161. package/cjs/render/contributions/render/richtext-module.js.map +1 -1
  162. package/cjs/render/contributions/render/star-module.js +2 -4
  163. package/cjs/render/contributions/render/star-module.js.map +1 -1
  164. package/cjs/render/contributions/render/symbol-module.js +2 -4
  165. package/cjs/render/contributions/render/symbol-module.js.map +1 -1
  166. package/cjs/render/contributions/render/text-module.js +2 -4
  167. package/cjs/render/contributions/render/text-module.js.map +1 -1
  168. package/cjs/svg.d.ts +1 -0
  169. package/cjs/svg.js +15 -0
  170. package/cjs/svg.js.map +1 -0
  171. package/cjs/text.d.ts +2 -0
  172. package/cjs/text.js +29 -0
  173. package/cjs/text.js.map +1 -0
  174. package/dist/index.es.js +328 -1630
  175. package/es/allocator/bounds-allocate.js +1 -2
  176. package/es/canvas/constants.js +2 -1
  177. package/es/common/bezier-utils.js +1 -2
  178. package/es/common/event-transformer.js +2 -1
  179. package/es/common/module-guard.d.ts +1 -0
  180. package/es/common/module-guard.js +5 -0
  181. package/es/common/module-guard.js.map +1 -0
  182. package/es/common/performance-raf.js +1 -2
  183. package/es/common/rect-utils.js +1 -1
  184. package/es/common/render-area.js +1 -1
  185. package/es/common/render-command-list.js +1 -1
  186. package/es/common/render-curve.js +1 -1
  187. package/es/common/render-utils.js +1 -1
  188. package/es/common/seg-context.js +1 -1
  189. package/es/container.d.ts +2 -0
  190. package/es/container.js +2 -0
  191. package/es/container.js.map +1 -0
  192. package/es/core/application.js +1 -1
  193. package/es/core/camera.js +1 -1
  194. package/es/core/constants.js +1 -1
  195. package/es/core/core-modules.js +1 -1
  196. package/es/core/global-module.js +2 -0
  197. package/es/core/global.js +1 -1
  198. package/es/core/graphic-utils.js +1 -1
  199. package/es/core/index.js +1 -1
  200. package/es/core/layer-service.js +2 -1
  201. package/es/core/layer.js +1 -1
  202. package/es/core/light.js +1 -1
  203. package/es/core/stage.d.ts +0 -9
  204. package/es/core/stage.js +10 -31
  205. package/es/core/stage.js.map +1 -1
  206. package/es/core/window.js +1 -1
  207. package/es/entries/miniapp.d.ts +0 -1
  208. package/es/entries/miniapp.js +1 -5
  209. package/es/entries/miniapp.js.map +1 -1
  210. package/es/entries/node.d.ts +0 -1
  211. package/es/entries/node.js +1 -5
  212. package/es/entries/node.js.map +1 -1
  213. package/es/env.d.ts +1 -0
  214. package/es/env.js +2 -0
  215. package/es/env.js.map +1 -0
  216. package/es/event/public-constant.d.ts +7 -0
  217. package/es/event/public-constant.js +12 -0
  218. package/es/event/public-constant.js.map +1 -0
  219. package/es/event/util.d.ts +1 -1
  220. package/es/graphic/arc.js +5 -4
  221. package/es/graphic/arc.js.map +1 -1
  222. package/es/graphic/base.d.ts +2 -0
  223. package/es/graphic/base.js +2 -0
  224. package/es/graphic/base.js.map +1 -0
  225. package/es/graphic/config.js +1 -0
  226. package/es/graphic/config.js.map +1 -1
  227. package/es/graphic/creator.d.ts +16 -0
  228. package/es/graphic/creator.js +32 -0
  229. package/es/graphic/creator.js.map +1 -0
  230. package/es/graphic/glyph.js +4 -8
  231. package/es/graphic/glyph.js.map +1 -1
  232. package/es/graphic/graphic.d.ts +19 -28
  233. package/es/graphic/graphic.js +121 -198
  234. package/es/graphic/graphic.js.map +1 -1
  235. package/es/graphic/group.d.ts +1 -3
  236. package/es/graphic/group.js +22 -28
  237. package/es/graphic/group.js.map +1 -1
  238. package/es/graphic/modules.d.ts +16 -0
  239. package/es/graphic/modules.js +32 -0
  240. package/es/graphic/modules.js.map +1 -0
  241. package/es/graphic/node-tree.d.ts +3 -3
  242. package/es/graphic/node-tree.js +1 -0
  243. package/es/graphic/node-tree.js.map +1 -1
  244. package/es/graphic/state/shared-state-refresh.js +8 -28
  245. package/es/graphic/state/shared-state-refresh.js.map +1 -1
  246. package/es/graphic/state/shared-state-scope.d.ts +2 -5
  247. package/es/graphic/state/shared-state-scope.js +7 -28
  248. package/es/graphic/state/shared-state-scope.js.map +1 -1
  249. package/es/graphic/state/state-definition-compiler.js +4 -5
  250. package/es/graphic/state/state-definition-compiler.js.map +1 -1
  251. package/es/graphic/state/state-definition.d.ts +2 -5
  252. package/es/graphic/state/state-definition.js.map +1 -1
  253. package/es/graphic/state/state-engine.d.ts +0 -5
  254. package/es/graphic/state/state-engine.js +17 -67
  255. package/es/graphic/state/state-engine.js.map +1 -1
  256. package/es/graphic/state/state-transition-orchestrator.d.ts +7 -9
  257. package/es/graphic/state/state-transition-orchestrator.js +10 -13
  258. package/es/graphic/state/state-transition-orchestrator.js.map +1 -1
  259. package/es/interface/graphic/arc.d.ts +1 -0
  260. package/es/interface/graphic/arc.js.map +1 -1
  261. package/es/interface/graphic/group.d.ts +0 -2
  262. package/es/interface/graphic/group.js.map +1 -1
  263. package/es/interface/graphic.d.ts +1 -5
  264. package/es/interface/graphic.js.map +1 -1
  265. package/es/interface/index.js.map +1 -1
  266. package/es/interface/node-tree.d.ts +3 -0
  267. package/es/interface/node-tree.js.map +1 -1
  268. package/es/interface/stage.d.ts +0 -7
  269. package/es/interface/stage.js.map +1 -1
  270. package/es/interpolate.d.ts +2 -0
  271. package/es/interpolate.js +4 -0
  272. package/es/interpolate.js.map +1 -0
  273. package/es/modules.js.map +1 -1
  274. package/es/path.d.ts +4 -0
  275. package/es/path.js +6 -0
  276. package/es/path.js.map +1 -0
  277. package/es/plugin/3d.d.ts +3 -0
  278. package/es/plugin/3d.js +6 -0
  279. package/es/plugin/3d.js.map +1 -0
  280. package/es/plugin/attribute.d.ts +2 -0
  281. package/es/plugin/attribute.js +4 -0
  282. package/es/plugin/attribute.js.map +1 -0
  283. package/es/plugin/flex-layout.d.ts +1 -0
  284. package/es/plugin/flex-layout.js +2 -0
  285. package/es/plugin/flex-layout.js.map +1 -0
  286. package/es/plugins/builtin-plugin/dirty-bounds-plugin.js +8 -8
  287. package/es/plugins/builtin-plugin/dirty-bounds-plugin.js.map +1 -1
  288. package/es/plugins/index.d.ts +0 -4
  289. package/es/plugins/index.js +0 -8
  290. package/es/plugins/index.js.map +1 -1
  291. package/es/plugins/plugin-service.d.ts +0 -1
  292. package/es/plugins/plugin-service.js +2 -3
  293. package/es/plugins/plugin-service.js.map +1 -1
  294. package/es/plugins/types.d.ts +1 -8
  295. package/es/plugins/types.js.map +1 -1
  296. package/es/register/graphic.d.ts +19 -0
  297. package/es/register/graphic.js +38 -0
  298. package/es/register/graphic.js.map +1 -0
  299. package/es/registry/contribution-registry.d.ts +0 -1
  300. package/es/registry/contribution-registry.js +0 -3
  301. package/es/registry/contribution-registry.js.map +1 -1
  302. package/es/registry/picker-registry.d.ts +0 -1
  303. package/es/registry/picker-registry.js +0 -3
  304. package/es/registry/picker-registry.js.map +1 -1
  305. package/es/registry/renderer-registry.d.ts +0 -1
  306. package/es/registry/renderer-registry.js +0 -3
  307. package/es/registry/renderer-registry.js.map +1 -1
  308. package/es/registry/types.d.ts +0 -3
  309. package/es/registry/types.js.map +1 -1
  310. package/es/render/contributions/render/arc-module.js +4 -2
  311. package/es/render/contributions/render/arc-module.js.map +1 -1
  312. package/es/render/contributions/render/arc3d-module.js +4 -2
  313. package/es/render/contributions/render/arc3d-module.js.map +1 -1
  314. package/es/render/contributions/render/area-module.js +4 -2
  315. package/es/render/contributions/render/area-module.js.map +1 -1
  316. package/es/render/contributions/render/circle-module.js +4 -2
  317. package/es/render/contributions/render/circle-module.js.map +1 -1
  318. package/es/render/contributions/render/glyph-module.js +4 -2
  319. package/es/render/contributions/render/glyph-module.js.map +1 -1
  320. package/es/render/contributions/render/image-module.js +4 -2
  321. package/es/render/contributions/render/image-module.js.map +1 -1
  322. package/es/render/contributions/render/line-module.js +4 -2
  323. package/es/render/contributions/render/line-module.js.map +1 -1
  324. package/es/render/contributions/render/path-module.js +4 -2
  325. package/es/render/contributions/render/path-module.js.map +1 -1
  326. package/es/render/contributions/render/polygon-module.js +4 -2
  327. package/es/render/contributions/render/polygon-module.js.map +1 -1
  328. package/es/render/contributions/render/pyramid3d-module.js +4 -2
  329. package/es/render/contributions/render/pyramid3d-module.js.map +1 -1
  330. package/es/render/contributions/render/rect-module.js +4 -2
  331. package/es/render/contributions/render/rect-module.js.map +1 -1
  332. package/es/render/contributions/render/rect3d-module.js +4 -2
  333. package/es/render/contributions/render/rect3d-module.js.map +1 -1
  334. package/es/render/contributions/render/richtext-module.js +4 -2
  335. package/es/render/contributions/render/richtext-module.js.map +1 -1
  336. package/es/render/contributions/render/star-module.js +4 -2
  337. package/es/render/contributions/render/star-module.js.map +1 -1
  338. package/es/render/contributions/render/symbol-module.js +4 -2
  339. package/es/render/contributions/render/symbol-module.js.map +1 -1
  340. package/es/render/contributions/render/text-module.js +4 -2
  341. package/es/render/contributions/render/text-module.js.map +1 -1
  342. package/es/svg.d.ts +1 -0
  343. package/es/svg.js +2 -0
  344. package/es/svg.js.map +1 -0
  345. package/es/text.d.ts +2 -0
  346. package/es/text.js +4 -0
  347. package/es/text.js.map +1 -0
  348. package/package.json +245 -1
  349. package/cjs/graphic/state/state-batch-scheduler.d.ts +0 -42
  350. package/cjs/graphic/state/state-batch-scheduler.js +0 -285
  351. package/cjs/graphic/state/state-batch-scheduler.js.map +0 -1
  352. package/cjs/graphic/state/state-model.d.ts +0 -43
  353. package/cjs/graphic/state/state-model.js +0 -143
  354. package/cjs/graphic/state/state-model.js.map +0 -1
  355. package/cjs/graphic/state/state-perf-monitor.d.ts +0 -120
  356. package/cjs/graphic/state/state-perf-monitor.js +0 -224
  357. package/cjs/graphic/state/state-perf-monitor.js.map +0 -1
  358. package/cjs/graphic/state/state-style-resolver.d.ts +0 -13
  359. package/cjs/graphic/state/state-style-resolver.js +0 -50
  360. package/cjs/graphic/state/state-style-resolver.js.map +0 -1
  361. package/cjs/interface/animate.d.ts +0 -1
  362. package/cjs/interface/animate.js +0 -3
  363. package/cjs/interface/animate.js.map +0 -1
  364. package/cjs/plugins/base-plugin.d.ts +0 -8
  365. package/cjs/plugins/base-plugin.js +0 -15
  366. package/cjs/plugins/base-plugin.js.map +0 -1
  367. package/cjs/plugins/browser-env-plugin.d.ts +0 -8
  368. package/cjs/plugins/browser-env-plugin.js +0 -24
  369. package/cjs/plugins/browser-env-plugin.js.map +0 -1
  370. package/cjs/plugins/picker-plugin.d.ts +0 -7
  371. package/cjs/plugins/picker-plugin.js +0 -19
  372. package/cjs/plugins/picker-plugin.js.map +0 -1
  373. package/cjs/plugins/renderer-plugin.d.ts +0 -7
  374. package/cjs/plugins/renderer-plugin.js +0 -19
  375. package/cjs/plugins/renderer-plugin.js.map +0 -1
  376. package/es/graphic/state/state-batch-scheduler.d.ts +0 -42
  377. package/es/graphic/state/state-batch-scheduler.js +0 -278
  378. package/es/graphic/state/state-batch-scheduler.js.map +0 -1
  379. package/es/graphic/state/state-model.d.ts +0 -43
  380. package/es/graphic/state/state-model.js +0 -135
  381. package/es/graphic/state/state-model.js.map +0 -1
  382. package/es/graphic/state/state-perf-monitor.d.ts +0 -120
  383. package/es/graphic/state/state-perf-monitor.js +0 -214
  384. package/es/graphic/state/state-perf-monitor.js.map +0 -1
  385. package/es/graphic/state/state-style-resolver.d.ts +0 -13
  386. package/es/graphic/state/state-style-resolver.js +0 -42
  387. package/es/graphic/state/state-style-resolver.js.map +0 -1
  388. package/es/interface/animate.d.ts +0 -1
  389. package/es/interface/animate.js +0 -3
  390. package/es/interface/animate.js.map +0 -1
  391. package/es/plugins/base-plugin.d.ts +0 -8
  392. package/es/plugins/base-plugin.js +0 -7
  393. package/es/plugins/base-plugin.js.map +0 -1
  394. package/es/plugins/browser-env-plugin.d.ts +0 -8
  395. package/es/plugins/browser-env-plugin.js +0 -16
  396. package/es/plugins/browser-env-plugin.js.map +0 -1
  397. package/es/plugins/picker-plugin.d.ts +0 -7
  398. package/es/plugins/picker-plugin.js +0 -11
  399. package/es/plugins/picker-plugin.js.map +0 -1
  400. package/es/plugins/renderer-plugin.d.ts +0 -7
  401. package/es/plugins/renderer-plugin.js +0 -11
  402. package/es/plugins/renderer-plugin.js.map +0 -1
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@visactor/vrender-core",
3
- "version": "1.1.0-alpha.23",
3
+ "version": "1.1.0-alpha.25",
4
4
  "description": "",
5
5
  "sideEffects": [
6
6
  "./src/modules.ts",
@@ -10,6 +10,100 @@
10
10
  "main": "cjs/index.js",
11
11
  "module": "es/index.js",
12
12
  "types": "es/index.d.ts",
13
+ "typesVersions": {
14
+ "*": {
15
+ "application": [
16
+ "es/application.d.ts"
17
+ ],
18
+ "color-string": [
19
+ "es/color-string/index.d.ts"
20
+ ],
21
+ "common/diff": [
22
+ "es/common/diff.d.ts"
23
+ ],
24
+ "common/generator": [
25
+ "es/common/generator.d.ts"
26
+ ],
27
+ "common/performance-raf": [
28
+ "es/common/performance-raf.d.ts"
29
+ ],
30
+ "constants": [
31
+ "es/constants.d.ts"
32
+ ],
33
+ "container": [
34
+ "es/container.d.ts"
35
+ ],
36
+ "entries/browser": [
37
+ "es/entries/browser.d.ts"
38
+ ],
39
+ "entries/runtime-installer": [
40
+ "es/entries/runtime-installer.d.ts"
41
+ ],
42
+ "env": [
43
+ "es/env.d.ts"
44
+ ],
45
+ "event/constant": [
46
+ "es/event/public-constant.d.ts"
47
+ ],
48
+ "global": [
49
+ "es/global.d.ts"
50
+ ],
51
+ "graphic/base": [
52
+ "es/graphic/base.d.ts"
53
+ ],
54
+ "graphic/builtin-symbol": [
55
+ "es/graphic/builtin-symbol/index.d.ts"
56
+ ],
57
+ "graphic/creator": [
58
+ "es/graphic/creator.d.ts"
59
+ ],
60
+ "graphic/group": [
61
+ "es/graphic/group.d.ts"
62
+ ],
63
+ "graphic/modules": [
64
+ "es/graphic/modules.d.ts"
65
+ ],
66
+ "graphic/symbol": [
67
+ "es/graphic/symbol.d.ts"
68
+ ],
69
+ "interpolate": [
70
+ "es/interpolate.d.ts"
71
+ ],
72
+ "legacy/bootstrap": [
73
+ "es/legacy/bootstrap.d.ts"
74
+ ],
75
+ "path": [
76
+ "es/path.d.ts"
77
+ ],
78
+ "picker/constants": [
79
+ "es/picker/constants.d.ts"
80
+ ],
81
+ "plugin/3d": [
82
+ "es/plugin/3d.d.ts"
83
+ ],
84
+ "plugin/attribute": [
85
+ "es/plugin/attribute.d.ts"
86
+ ],
87
+ "plugin/flex-layout": [
88
+ "es/plugin/flex-layout.d.ts"
89
+ ],
90
+ "register/graphic": [
91
+ "es/register/graphic.d.ts"
92
+ ],
93
+ "render/draw-interceptor": [
94
+ "es/render/contributions/render/draw-interceptor.d.ts"
95
+ ],
96
+ "render/symbol": [
97
+ "es/render/contributions/render/symbol.d.ts"
98
+ ],
99
+ "svg": [
100
+ "es/svg.d.ts"
101
+ ],
102
+ "text": [
103
+ "es/text.d.ts"
104
+ ]
105
+ }
106
+ },
13
107
  "files": [
14
108
  "cjs",
15
109
  "es",
@@ -61,6 +155,156 @@
61
155
  ".": {
62
156
  "import": "./es/index.js",
63
157
  "require": "./cjs/index.js"
158
+ },
159
+ "./application": {
160
+ "types": "./es/application.d.ts",
161
+ "import": "./es/application.js",
162
+ "require": "./cjs/application.js"
163
+ },
164
+ "./common/generator": {
165
+ "types": "./es/common/generator.d.ts",
166
+ "import": "./es/common/generator.js",
167
+ "require": "./cjs/common/generator.js"
168
+ },
169
+ "./common/diff": {
170
+ "types": "./es/common/diff.d.ts",
171
+ "import": "./es/common/diff.js",
172
+ "require": "./cjs/common/diff.js"
173
+ },
174
+ "./common/performance-raf": {
175
+ "types": "./es/common/performance-raf.d.ts",
176
+ "import": "./es/common/performance-raf.js",
177
+ "require": "./cjs/common/performance-raf.js"
178
+ },
179
+ "./color-string": {
180
+ "types": "./es/color-string/index.d.ts",
181
+ "import": "./es/color-string/index.js",
182
+ "require": "./cjs/color-string/index.js"
183
+ },
184
+ "./constants": {
185
+ "types": "./es/constants.d.ts",
186
+ "import": "./es/constants.js",
187
+ "require": "./cjs/constants.js"
188
+ },
189
+ "./container": {
190
+ "types": "./es/container.d.ts",
191
+ "import": "./es/container.js",
192
+ "require": "./cjs/container.js"
193
+ },
194
+ "./entries/browser": {
195
+ "types": "./es/entries/browser.d.ts",
196
+ "import": "./es/entries/browser.js",
197
+ "require": "./cjs/entries/browser.js"
198
+ },
199
+ "./entries/runtime-installer": {
200
+ "types": "./es/entries/runtime-installer.d.ts",
201
+ "import": "./es/entries/runtime-installer.js",
202
+ "require": "./cjs/entries/runtime-installer.js"
203
+ },
204
+ "./env": {
205
+ "types": "./es/env.d.ts",
206
+ "import": "./es/env.js",
207
+ "require": "./cjs/env.js"
208
+ },
209
+ "./event/constant": {
210
+ "types": "./es/event/public-constant.d.ts",
211
+ "import": "./es/event/public-constant.js",
212
+ "require": "./cjs/event/public-constant.js"
213
+ },
214
+ "./global": {
215
+ "types": "./es/global.d.ts",
216
+ "import": "./es/global.js",
217
+ "require": "./cjs/global.js"
218
+ },
219
+ "./graphic/base": {
220
+ "types": "./es/graphic/base.d.ts",
221
+ "import": "./es/graphic/base.js",
222
+ "require": "./cjs/graphic/base.js"
223
+ },
224
+ "./graphic/builtin-symbol": {
225
+ "types": "./es/graphic/builtin-symbol/index.d.ts",
226
+ "import": "./es/graphic/builtin-symbol/index.js",
227
+ "require": "./cjs/graphic/builtin-symbol/index.js"
228
+ },
229
+ "./graphic/creator": {
230
+ "types": "./es/graphic/creator.d.ts",
231
+ "import": "./es/graphic/creator.js",
232
+ "require": "./cjs/graphic/creator.js"
233
+ },
234
+ "./graphic/group": {
235
+ "types": "./es/graphic/group.d.ts",
236
+ "import": "./es/graphic/group.js",
237
+ "require": "./cjs/graphic/group.js"
238
+ },
239
+ "./graphic/modules": {
240
+ "types": "./es/graphic/modules.d.ts",
241
+ "import": "./es/graphic/modules.js",
242
+ "require": "./cjs/graphic/modules.js"
243
+ },
244
+ "./graphic/symbol": {
245
+ "types": "./es/graphic/symbol.d.ts",
246
+ "import": "./es/graphic/symbol.js",
247
+ "require": "./cjs/graphic/symbol.js"
248
+ },
249
+ "./interpolate": {
250
+ "types": "./es/interpolate.d.ts",
251
+ "import": "./es/interpolate.js",
252
+ "require": "./cjs/interpolate.js"
253
+ },
254
+ "./legacy/bootstrap": {
255
+ "types": "./es/legacy/bootstrap.d.ts",
256
+ "import": "./es/legacy/bootstrap.js",
257
+ "require": "./cjs/legacy/bootstrap.js"
258
+ },
259
+ "./path": {
260
+ "types": "./es/path.d.ts",
261
+ "import": "./es/path.js",
262
+ "require": "./cjs/path.js"
263
+ },
264
+ "./picker/constants": {
265
+ "types": "./es/picker/constants.d.ts",
266
+ "import": "./es/picker/constants.js",
267
+ "require": "./cjs/picker/constants.js"
268
+ },
269
+ "./plugin/3d": {
270
+ "types": "./es/plugin/3d.d.ts",
271
+ "import": "./es/plugin/3d.js",
272
+ "require": "./cjs/plugin/3d.js"
273
+ },
274
+ "./plugin/attribute": {
275
+ "types": "./es/plugin/attribute.d.ts",
276
+ "import": "./es/plugin/attribute.js",
277
+ "require": "./cjs/plugin/attribute.js"
278
+ },
279
+ "./plugin/flex-layout": {
280
+ "types": "./es/plugin/flex-layout.d.ts",
281
+ "import": "./es/plugin/flex-layout.js",
282
+ "require": "./cjs/plugin/flex-layout.js"
283
+ },
284
+ "./register/graphic": {
285
+ "types": "./es/register/graphic.d.ts",
286
+ "import": "./es/register/graphic.js",
287
+ "require": "./cjs/register/graphic.js"
288
+ },
289
+ "./render/draw-interceptor": {
290
+ "types": "./es/render/contributions/render/draw-interceptor.d.ts",
291
+ "import": "./es/render/contributions/render/draw-interceptor.js",
292
+ "require": "./cjs/render/contributions/render/draw-interceptor.js"
293
+ },
294
+ "./render/symbol": {
295
+ "types": "./es/render/contributions/render/symbol.d.ts",
296
+ "import": "./es/render/contributions/render/symbol.js",
297
+ "require": "./cjs/render/contributions/render/symbol.js"
298
+ },
299
+ "./svg": {
300
+ "types": "./es/svg.d.ts",
301
+ "import": "./es/svg.js",
302
+ "require": "./cjs/svg.js"
303
+ },
304
+ "./text": {
305
+ "types": "./es/text.d.ts",
306
+ "import": "./es/text.js",
307
+ "require": "./cjs/text.js"
64
308
  }
65
309
  },
66
310
  "publishConfig": {
@@ -1,42 +0,0 @@
1
- import type { IGraphic, IGroup, ILayer, IStage } from '../../interface';
2
- import { type IDeferredStateConfig, type StatePerfMonitor } from './state-perf-monitor';
3
- type StateBatchJobKind = 'apply_states';
4
- type StateBatchIntentKey = string;
5
- export interface IStateBatchJob {
6
- id: number;
7
- kind: StateBatchJobKind;
8
- intentKey: StateBatchIntentKey;
9
- status: 'pending' | 'running' | 'completed' | 'cancelled';
10
- targetStates: string[];
11
- targetStatesKey: string;
12
- pendingGraphics: Set<IGraphic>;
13
- orderedGraphics: IGraphic[];
14
- config: Required<IDeferredStateConfig>;
15
- contextOwner: IStage | ILayer | IGroup;
16
- contextOwnerId: number;
17
- configFingerprint: string;
18
- createdAt: number;
19
- processedCount: number;
20
- }
21
- export declare class StateBatchScheduler {
22
- private readonly stage;
23
- private readonly perfMonitor?;
24
- readonly jobsByIntentKey: Map<string, IStateBatchJob>;
25
- readonly pendingIntentByGraphic: Map<IGraphic<Partial<import("../../interface").IGraphicAttribute>>, string>;
26
- private nextJobId;
27
- private readonly runningJobs;
28
- constructor(stage: IStage, perfMonitor?: StatePerfMonitor);
29
- schedule(graphics: IGraphic[], targetStates: string[]): void;
30
- release(): void;
31
- private resolveEligibility;
32
- private resolveDeferredContext;
33
- private classifyGraphicTargetStates;
34
- private enqueueDeferredIntent;
35
- private removeGraphicFromPending;
36
- private removeGraphicFromIntentJob;
37
- private ensureJobRunning;
38
- private runJob;
39
- private waitForNextFrame;
40
- private commitSynchronously;
41
- }
42
- export {};
@@ -1,285 +0,0 @@
1
- "use strict";
2
-
3
- var __awaiter = this && this.__awaiter || function(thisArg, _arguments, P, generator) {
4
- return new (P || (P = Promise))((function(resolve, reject) {
5
- function fulfilled(value) {
6
- try {
7
- step(generator.next(value));
8
- } catch (e) {
9
- reject(e);
10
- }
11
- }
12
- function rejected(value) {
13
- try {
14
- step(generator.throw(value));
15
- } catch (e) {
16
- reject(e);
17
- }
18
- }
19
- function step(result) {
20
- var value;
21
- result.done ? resolve(result.value) : (value = result.value, value instanceof P ? value : new P((function(resolve) {
22
- resolve(value);
23
- }))).then(fulfilled, rejected);
24
- }
25
- step((generator = generator.apply(thisArg, _arguments || [])).next());
26
- }));
27
- };
28
-
29
- Object.defineProperty(exports, "__esModule", {
30
- value: !0
31
- }), exports.StateBatchScheduler = void 0;
32
-
33
- const attribute_update_classifier_1 = require("./attribute-update-classifier"), state_perf_monitor_1 = require("./state-perf-monitor");
34
-
35
- function isRenderableGraphic(graphic) {
36
- return !!graphic.stage && "released" !== graphic.releaseStatus;
37
- }
38
-
39
- function createTargetStatesKey(targetStates) {
40
- return targetStates.length ? targetStates.join("|") : "__clear__";
41
- }
42
-
43
- function createIntentKey(contextOwnerId, configFingerprint, targetStatesKey) {
44
- return `${contextOwnerId}:${configFingerprint}:${targetStatesKey}`;
45
- }
46
-
47
- function hasMeaningfulDeferredConfig(config) {
48
- const normalized = (0, state_perf_monitor_1.normalizeDeferredStateOwnerConfig)(config);
49
- return !!normalized && (null != normalized.localEnabled || null != normalized.deferred);
50
- }
51
-
52
- function getGraphicCompiledDefinitions(graphic) {
53
- const graphicAny = graphic;
54
- if ("function" == typeof graphicAny.resolveEffectiveCompiledDefinitions) {
55
- const result = graphicAny.resolveEffectiveCompiledDefinitions();
56
- return {
57
- compiledDefinitions: result.compiledDefinitions,
58
- stateProxyEligibility: result.stateProxyEligibility
59
- };
60
- }
61
- return {};
62
- }
63
-
64
- function getCurrentStateNames(graphic) {
65
- var _a, _b;
66
- return null !== (_b = null === (_a = graphic.currentStates) || void 0 === _a ? void 0 : _a.slice()) && void 0 !== _b ? _b : [];
67
- }
68
-
69
- class StateBatchScheduler {
70
- constructor(stage, perfMonitor) {
71
- this.stage = stage, this.perfMonitor = perfMonitor, this.jobsByIntentKey = new Map,
72
- this.pendingIntentByGraphic = new Map, this.nextJobId = 1, this.runningJobs = new Map;
73
- }
74
- schedule(graphics, targetStates) {
75
- const batchOperation = graphics.length > 1;
76
- graphics.forEach((graphic => {
77
- const eligibility = this.resolveEligibility(graphic, targetStates, batchOperation, !0);
78
- if ("reason" in eligibility) return this.removeGraphicFromPending(graphic), void ("graphic_unavailable" !== eligibility.reason && this.commitSynchronously(graphic, targetStates));
79
- this.enqueueDeferredIntent(graphic, targetStates, eligibility.context, eligibility.targetStatesKey);
80
- }));
81
- }
82
- release() {
83
- var _a;
84
- this.jobsByIntentKey.forEach((job => {
85
- job.status = "cancelled";
86
- })), this.jobsByIntentKey.clear(), this.pendingIntentByGraphic.clear(), this.runningJobs.clear(),
87
- null === (_a = this.perfMonitor) || void 0 === _a || _a.updateBatchPending(0);
88
- }
89
- resolveEligibility(graphic, targetStates, batchOperation, recordObservability) {
90
- var _a, _b, _c, _d, _e, _f;
91
- if (!isRenderableGraphic(graphic)) return recordObservability && (null === (_a = this.perfMonitor) || void 0 === _a || _a.recordDeferredIneligible("graphic_unavailable")),
92
- {
93
- eligible: !1,
94
- reason: "graphic_unavailable"
95
- };
96
- if (!batchOperation) return recordObservability && (null === (_b = this.perfMonitor) || void 0 === _b || _b.recordDeferredIneligible("non_batch_operation")),
97
- {
98
- eligible: !1,
99
- reason: "non_batch_operation"
100
- };
101
- const context = this.resolveDeferredContext(graphic);
102
- if (!context) return recordObservability && (null === (_c = this.perfMonitor) || void 0 === _c || _c.recordDeferredIneligible("graphic_unavailable")),
103
- {
104
- eligible: !1,
105
- reason: "graphic_unavailable"
106
- };
107
- if (!context.config.enabled) {
108
- const normalizedOwnerConfig = (0, state_perf_monitor_1.normalizeDeferredStateOwnerConfig)(context.contextOwner.deferredStateConfig), reason = !1 === (null == normalizedOwnerConfig ? void 0 : normalizedOwnerConfig.localEnabled) ? "context_disabled" : "config_disabled";
109
- return recordObservability && (null === (_d = this.perfMonitor) || void 0 === _d || _d.recordDeferredIneligible(reason)),
110
- {
111
- eligible: !1,
112
- reason: reason
113
- };
114
- }
115
- const classification = this.classifyGraphicTargetStates(graphic, targetStates);
116
- return classification.reason ? (recordObservability && (null === (_e = this.perfMonitor) || void 0 === _e || _e.recordDeferredIneligible(classification.reason)),
117
- {
118
- eligible: !1,
119
- reason: classification.reason
120
- }) : classification.category !== attribute_update_classifier_1.UpdateCategory.PAINT ? (recordObservability && (null === (_f = this.perfMonitor) || void 0 === _f || _f.recordDeferredIneligible("mixed_update_category")),
121
- {
122
- eligible: !1,
123
- reason: "mixed_update_category"
124
- }) : {
125
- eligible: !0,
126
- context: context,
127
- targetStatesKey: createTargetStatesKey(targetStates)
128
- };
129
- }
130
- resolveDeferredContext(graphic) {
131
- var _a;
132
- const stage = graphic.stage;
133
- if (!stage) return;
134
- let owner = stage, config = (0, state_perf_monitor_1.normalizeDeferredStateConfig)(void 0);
135
- const ownerConfigs = [ stage ], parents = [];
136
- let parent = graphic.parent;
137
- for (;parent && parent !== stage; ) parents.push(parent), parent = parent.parent;
138
- parents.reverse().forEach((current => ownerConfigs.push(current))), ownerConfigs.forEach((current => {
139
- const deferredStateConfig = (0, state_perf_monitor_1.normalizeDeferredStateOwnerConfig)(current.deferredStateConfig);
140
- deferredStateConfig && (deferredStateConfig.deferred && (config = Object.assign(Object.assign({}, config), deferredStateConfig.deferred)),
141
- null != deferredStateConfig.localEnabled && (config.enabled = deferredStateConfig.localEnabled),
142
- hasMeaningfulDeferredConfig(current.deferredStateConfig) && (owner = current));
143
- }));
144
- const normalized = (0, state_perf_monitor_1.normalizeDeferredStateConfig)(config);
145
- return {
146
- contextOwner: owner,
147
- contextOwnerId: null !== (_a = owner._uid) && void 0 !== _a ? _a : 0,
148
- config: normalized,
149
- configFingerprint: (0, state_perf_monitor_1.fingerprintDeferredStateConfig)(normalized)
150
- };
151
- }
152
- classifyGraphicTargetStates(graphic, targetStates) {
153
- const {compiledDefinitions: compiledDefinitions, stateProxyEligibility: stateProxyEligibility} = getGraphicCompiledDefinitions(graphic), candidateStates = Array.from(new Set([ ...getCurrentStateNames(graphic), ...targetStates ]));
154
- let category = attribute_update_classifier_1.UpdateCategory.NONE;
155
- return candidateStates.forEach((stateName => {
156
- if (null == stateProxyEligibility ? void 0 : stateProxyEligibility(stateName)) return void (category = attribute_update_classifier_1.UpdateCategory.NONE);
157
- const definition = null == compiledDefinitions ? void 0 : compiledDefinitions.get(stateName);
158
- definition && (definition.hasResolver && 0 === definition.affectedKeys.size ? category = attribute_update_classifier_1.UpdateCategory.NONE : category |= (0,
159
- attribute_update_classifier_1.classifyAffectedKeys)(definition.affectedKeys));
160
- })), candidateStates.some((stateName => null == stateProxyEligibility ? void 0 : stateProxyEligibility(stateName))) || candidateStates.some((stateName => {
161
- const definition = null == compiledDefinitions ? void 0 : compiledDefinitions.get(stateName);
162
- return !!(null == definition ? void 0 : definition.hasResolver) && 0 === definition.affectedKeys.size;
163
- })) ? {
164
- category: attribute_update_classifier_1.UpdateCategory.NONE,
165
- reason: "resolver_unstable_keys"
166
- } : {
167
- category: category === attribute_update_classifier_1.UpdateCategory.NONE ? attribute_update_classifier_1.UpdateCategory.PAINT : category
168
- };
169
- }
170
- enqueueDeferredIntent(graphic, targetStates, context, targetStatesKey) {
171
- var _a, _b, _c, _d, _e, _f;
172
- const nextIntentKey = createIntentKey(context.contextOwnerId, context.configFingerprint, targetStatesKey), prevIntentKey = this.pendingIntentByGraphic.get(graphic);
173
- if (prevIntentKey === nextIntentKey) return void (null === (_a = this.perfMonitor) || void 0 === _a || _a.incrementCounter("deferredJobsCoalesced"));
174
- prevIntentKey && this.removeGraphicFromIntentJob(graphic, prevIntentKey);
175
- let job = this.jobsByIntentKey.get(nextIntentKey);
176
- job ? null === (_d = this.perfMonitor) || void 0 === _d || _d.incrementCounter("deferredJobsCoalesced") : (job = {
177
- id: this.nextJobId++,
178
- kind: "apply_states",
179
- intentKey: nextIntentKey,
180
- status: "pending",
181
- targetStates: [ ...targetStates ],
182
- targetStatesKey: targetStatesKey,
183
- pendingGraphics: new Set,
184
- orderedGraphics: [],
185
- config: context.config,
186
- contextOwner: context.contextOwner,
187
- contextOwnerId: context.contextOwnerId,
188
- configFingerprint: context.configFingerprint,
189
- createdAt: Date.now(),
190
- processedCount: 0
191
- }, this.jobsByIntentKey.set(nextIntentKey, job), null === (_b = this.perfMonitor) || void 0 === _b || _b.incrementCounter("deferredJobsCreated"),
192
- null === (_c = this.perfMonitor) || void 0 === _c || _c.updateBatchPending(this.jobsByIntentKey.size)),
193
- job.pendingGraphics.has(graphic) || (job.pendingGraphics.add(graphic), job.orderedGraphics.push(graphic),
194
- this.pendingIntentByGraphic.set(graphic, nextIntentKey), null === (_e = this.perfMonitor) || void 0 === _e || _e.recordAllocation("batchEntriesCreated"),
195
- null === (_f = this.perfMonitor) || void 0 === _f || _f.updateMaxGraphicsInJob(job.pendingGraphics.size)),
196
- this.ensureJobRunning(job);
197
- }
198
- removeGraphicFromPending(graphic) {
199
- const prevIntentKey = this.pendingIntentByGraphic.get(graphic);
200
- prevIntentKey && this.removeGraphicFromIntentJob(graphic, prevIntentKey);
201
- }
202
- removeGraphicFromIntentJob(graphic, intentKey) {
203
- var _a, _b, _c;
204
- const job = this.jobsByIntentKey.get(intentKey);
205
- job ? (job.pendingGraphics.delete(graphic), this.pendingIntentByGraphic.get(graphic) === intentKey && this.pendingIntentByGraphic.delete(graphic),
206
- 0 === job.pendingGraphics.size && "completed" !== job.status && (job.status = "cancelled",
207
- this.jobsByIntentKey.delete(intentKey), null === (_a = this.perfMonitor) || void 0 === _a || _a.incrementCounter("deferredJobsCancelled"),
208
- null === (_b = this.perfMonitor) || void 0 === _b || _b.recordEvent("deferred-job-cancel", {
209
- intentKey: intentKey,
210
- jobId: job.id
211
- }), null === (_c = this.perfMonitor) || void 0 === _c || _c.updateBatchPending(this.jobsByIntentKey.size))) : this.pendingIntentByGraphic.delete(graphic);
212
- }
213
- ensureJobRunning(job) {
214
- if (this.runningJobs.has(job.intentKey)) return;
215
- const runner = this.runJob(job).then((() => {
216
- this.runningJobs.delete(job.intentKey);
217
- }), (() => {
218
- this.runningJobs.delete(job.intentKey);
219
- }));
220
- this.runningJobs.set(job.intentKey, runner);
221
- }
222
- runJob(job) {
223
- var _a, _b, _c, _d, _e, _f, _g, _h, _j;
224
- return __awaiter(this, void 0, void 0, (function*() {
225
- if ("cancelled" === job.status) return;
226
- if (yield this.waitForNextFrame(), "cancelled" === job.status) return;
227
- job.status = "running", null === (_a = this.perfMonitor) || void 0 === _a || _a.recordEvent("deferred-job-start", {
228
- intentKey: job.intentKey,
229
- jobId: job.id
230
- });
231
- let index = 0, frameStart = performance.now(), processedInFrame = 0, committedInSlice = 0;
232
- for (;index < job.orderedGraphics.length; ) {
233
- if ("cancelled" === job.status) return;
234
- processedInFrame > 0 && (processedInFrame >= job.config.maxGraphicsPerFrame || performance.now() - frameStart >= job.config.frameBudget) && (null === (_b = this.perfMonitor) || void 0 === _b || _b.incrementCounter("deferredBudgetYields"),
235
- null === (_c = this.perfMonitor) || void 0 === _c || _c.recordCost("batchSlice", performance.now() - frameStart),
236
- null === (_d = this.perfMonitor) || void 0 === _d || _d.recordEvent("deferred-job-yield", {
237
- intentKey: job.intentKey,
238
- jobId: job.id,
239
- processedInFrame: processedInFrame
240
- }), committedInSlice > 0 && this.stage.renderNextFrame(), yield this.waitForNextFrame(),
241
- frameStart = performance.now(), processedInFrame = 0, committedInSlice = 0);
242
- const graphic = job.orderedGraphics[index++];
243
- if (!job.pendingGraphics.has(graphic)) continue;
244
- if (!isRenderableGraphic(graphic)) {
245
- job.pendingGraphics.delete(graphic), this.pendingIntentByGraphic.get(graphic) === job.intentKey && this.pendingIntentByGraphic.delete(graphic);
246
- continue;
247
- }
248
- if (this.pendingIntentByGraphic.get(graphic) !== job.intentKey) {
249
- job.pendingGraphics.delete(graphic);
250
- continue;
251
- }
252
- const nextEligibility = this.resolveEligibility(graphic, job.targetStates, !0, !1);
253
- if (!nextEligibility.eligible) {
254
- job.pendingGraphics.delete(graphic), this.pendingIntentByGraphic.delete(graphic),
255
- this.commitSynchronously(graphic, job.targetStates);
256
- continue;
257
- }
258
- createIntentKey(nextEligibility.context.contextOwnerId, nextEligibility.context.configFingerprint, nextEligibility.targetStatesKey) === job.intentKey ? (this.commitSynchronously(graphic, job.targetStates),
259
- job.pendingGraphics.delete(graphic), this.pendingIntentByGraphic.delete(graphic),
260
- job.processedCount += 1, processedInFrame += 1, committedInSlice += 1, null === (_e = this.perfMonitor) || void 0 === _e || _e.incrementCounter("deferredGraphicsCommitted")) : (job.pendingGraphics.delete(graphic),
261
- this.pendingIntentByGraphic.delete(graphic), this.enqueueDeferredIntent(graphic, job.targetStates, nextEligibility.context, nextEligibility.targetStatesKey));
262
- }
263
- processedInFrame > 0 && (null === (_f = this.perfMonitor) || void 0 === _f || _f.recordCost("batchSlice", performance.now() - frameStart),
264
- this.stage.renderNextFrame()), 0 === job.pendingGraphics.size && this.jobsByIntentKey.get(job.intentKey) === job && (job.status = "completed",
265
- this.jobsByIntentKey.delete(job.intentKey), null === (_g = this.perfMonitor) || void 0 === _g || _g.incrementCounter("deferredJobsCompleted"),
266
- null === (_h = this.perfMonitor) || void 0 === _h || _h.recordEvent("deferred-job-complete", {
267
- intentKey: job.intentKey,
268
- jobId: job.id,
269
- processedCount: job.processedCount
270
- }), null === (_j = this.perfMonitor) || void 0 === _j || _j.updateBatchPending(this.jobsByIntentKey.size));
271
- }));
272
- }
273
- waitForNextFrame() {
274
- const stageGlobal = this.stage.global;
275
- return (null == stageGlobal ? void 0 : stageGlobal.getSpecifiedPerformanceRAF) ? stageGlobal.getSpecifiedPerformanceRAF(this.stage.rafId).wait() : new Promise((resolve => {
276
- null == stageGlobal || stageGlobal.getSpecifiedRequestAnimationFrame(this.stage.rafId)((() => resolve()));
277
- }));
278
- }
279
- commitSynchronously(graphic, targetStates) {
280
- isRenderableGraphic(graphic) && (targetStates.length ? graphic.useStates(targetStates, !1) : graphic.clearStates(!1));
281
- }
282
- }
283
-
284
- exports.StateBatchScheduler = StateBatchScheduler;
285
- //# sourceMappingURL=state-batch-scheduler.js.map
@@ -1 +0,0 @@
1
- {"version":3,"sources":["../src/graphic/state/state-batch-scheduler.ts"],"names":[],"mappings":";;;;;;;;;;;;AAEA,+EAAqF;AACrF,6DAS8B;AAiC9B,SAAS,mBAAmB,CAAC,OAAiB;IAC5C,OAAO,CAAC,CAAC,OAAO,CAAC,KAAK,IAAK,OAAe,CAAC,aAAa,KAAK,UAAU,CAAC;AAC1E,CAAC;AAED,SAAS,qBAAqB,CAAC,YAAsB;IACnD,OAAO,YAAY,CAAC,MAAM,CAAC,CAAC,CAAC,YAAY,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,WAAW,CAAC;AACpE,CAAC;AAED,SAAS,eAAe,CACtB,cAAsB,EACtB,iBAAyB,EACzB,eAAuB;IAEvB,OAAO,GAAG,cAAc,IAAI,iBAAiB,IAAI,eAAe,EAAE,CAAC;AACrE,CAAC;AAED,SAAS,2BAA2B,CAAC,MAAkC;IACrE,MAAM,UAAU,GAAG,IAAA,sDAAiC,EAAC,MAAM,CAAC,CAAC;IAC7D,OAAO,CAAC,CAAC,UAAU,IAAI,CAAC,UAAU,CAAC,YAAY,IAAI,IAAI,IAAI,UAAU,CAAC,QAAQ,IAAI,IAAI,CAAC,CAAC;AAC1F,CAAC;AAED,SAAS,6BAA6B,CAAC,OAAiB;IAItD,MAAM,UAAU,GAAG,OAAc,CAAC;IAClC,IAAI,OAAO,UAAU,CAAC,mCAAmC,KAAK,UAAU,EAAE;QACxE,MAAM,MAAM,GAAG,UAAU,CAAC,mCAAmC,EAAE,CAAC;QAChE,OAAO;YACL,mBAAmB,EAAE,MAAM,CAAC,mBAAmB;YAC/C,qBAAqB,EAAE,MAAM,CAAC,qBAAqB;SACpD,CAAC;KACH;IAED,OAAO,EAAE,CAAC;AACZ,CAAC;AAED,SAAS,oBAAoB,CAAC,OAAiB;;IAC7C,OAAO,MAAA,MAAE,OAAe,CAAC,aAAsC,0CAAE,KAAK,EAAE,mCAAI,EAAE,CAAC;AACjF,CAAC;AAED,MAAa,mBAAmB;IAO9B,YAA6B,KAAa,EAAmB,WAA8B;QAA9D,UAAK,GAAL,KAAK,CAAQ;QAAmB,gBAAW,GAAX,WAAW,CAAmB;QANlF,oBAAe,GAAG,IAAI,GAAG,EAAuC,CAAC;QACjE,2BAAsB,GAAG,IAAI,GAAG,EAAiC,CAAC;QAEnE,cAAS,GAAG,CAAC,CAAC;QACL,gBAAW,GAAG,IAAI,GAAG,EAAsC,CAAC;IAEiB,CAAC;IAE/F,QAAQ,CAAC,QAAoB,EAAE,YAAsB;QACnD,MAAM,cAAc,GAAG,QAAQ,CAAC,MAAM,GAAG,CAAC,CAAC;QAE3C,QAAQ,CAAC,OAAO,CAAC,OAAO,CAAC,EAAE;YACzB,MAAM,WAAW,GAAG,IAAI,CAAC,kBAAkB,CAAC,OAAO,EAAE,YAAY,EAAE,cAAc,EAAE,IAAI,CAAC,CAAC;YACzF,IAAI,QAAQ,IAAI,WAAW,EAAE;gBAC3B,IAAI,CAAC,wBAAwB,CAAC,OAAO,CAAC,CAAC;gBACvC,IAAI,WAAW,CAAC,MAAM,KAAK,qBAAqB,EAAE;oBAChD,IAAI,CAAC,mBAAmB,CAAC,OAAO,EAAE,YAAY,CAAC,CAAC;iBACjD;gBACD,OAAO;aACR;YAED,IAAI,CAAC,qBAAqB,CAAC,OAAO,EAAE,YAAY,EAAE,WAAW,CAAC,OAAO,EAAE,WAAW,CAAC,eAAe,CAAC,CAAC;QACtG,CAAC,CAAC,CAAC;IACL,CAAC;IAED,OAAO;;QACL,IAAI,CAAC,eAAe,CAAC,OAAO,CAAC,GAAG,CAAC,EAAE;YACjC,GAAG,CAAC,MAAM,GAAG,WAAW,CAAC;QAC3B,CAAC,CAAC,CAAC;QACH,IAAI,CAAC,eAAe,CAAC,KAAK,EAAE,CAAC;QAC7B,IAAI,CAAC,sBAAsB,CAAC,KAAK,EAAE,CAAC;QACpC,IAAI,CAAC,WAAW,CAAC,KAAK,EAAE,CAAC;QACzB,MAAA,IAAI,CAAC,WAAW,0CAAE,kBAAkB,CAAC,CAAC,CAAC,CAAC;IAC1C,CAAC;IAEO,kBAAkB,CACxB,OAAiB,EACjB,YAAsB,EACtB,cAAuB,EACvB,mBAA4B;;QAE5B,IAAI,CAAC,mBAAmB,CAAC,OAAO,CAAC,EAAE;YACjC,IAAI,mBAAmB,EAAE;gBACvB,MAAA,IAAI,CAAC,WAAW,0CAAE,wBAAwB,CAAC,qBAAqB,CAAC,CAAC;aACnE;YACD,OAAO,EAAE,QAAQ,EAAE,KAAK,EAAE,MAAM,EAAE,qBAAqB,EAAE,CAAC;SAC3D;QAED,IAAI,CAAC,cAAc,EAAE;YACnB,IAAI,mBAAmB,EAAE;gBACvB,MAAA,IAAI,CAAC,WAAW,0CAAE,wBAAwB,CAAC,qBAAqB,CAAC,CAAC;aACnE;YACD,OAAO,EAAE,QAAQ,EAAE,KAAK,EAAE,MAAM,EAAE,qBAAqB,EAAE,CAAC;SAC3D;QAED,MAAM,OAAO,GAAG,IAAI,CAAC,sBAAsB,CAAC,OAAO,CAAC,CAAC;QACrD,IAAI,CAAC,OAAO,EAAE;YACZ,IAAI,mBAAmB,EAAE;gBACvB,MAAA,IAAI,CAAC,WAAW,0CAAE,wBAAwB,CAAC,qBAAqB,CAAC,CAAC;aACnE;YACD,OAAO,EAAE,QAAQ,EAAE,KAAK,EAAE,MAAM,EAAE,qBAAqB,EAAE,CAAC;SAC3D;QAED,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC,OAAO,EAAE;YAC3B,MAAM,qBAAqB,GAAG,IAAA,sDAAiC,EAC5D,OAAO,CAAC,YAAoB,CAAC,mBAA4D,CAC3F,CAAC;YACF,MAAM,MAAM,GAAG,CAAA,qBAAqB,aAArB,qBAAqB,uBAArB,qBAAqB,CAAE,YAAY,MAAK,KAAK,CAAC,CAAC,CAAC,kBAAkB,CAAC,CAAC,CAAC,iBAAiB,CAAC;YACtG,IAAI,mBAAmB,EAAE;gBACvB,MAAA,IAAI,CAAC,WAAW,0CAAE,wBAAwB,CAAC,MAAM,CAAC,CAAC;aACpD;YACD,OAAO,EAAE,QAAQ,EAAE,KAAK,EAAE,MAAM,EAAE,CAAC;SACpC;QAED,MAAM,cAAc,GAAG,IAAI,CAAC,2BAA2B,CAAC,OAAO,EAAE,YAAY,CAAC,CAAC;QAC/E,IAAI,cAAc,CAAC,MAAM,EAAE;YACzB,IAAI,mBAAmB,EAAE;gBACvB,MAAA,IAAI,CAAC,WAAW,0CAAE,wBAAwB,CAAC,cAAc,CAAC,MAAM,CAAC,CAAC;aACnE;YACD,OAAO,EAAE,QAAQ,EAAE,KAAK,EAAE,MAAM,EAAE,cAAc,CAAC,MAAM,EAAE,CAAC;SAC3D;QAED,IAAI,cAAc,CAAC,QAAQ,KAAK,4CAAc,CAAC,KAAK,EAAE;YACpD,IAAI,mBAAmB,EAAE;gBACvB,MAAA,IAAI,CAAC,WAAW,0CAAE,wBAAwB,CAAC,uBAAuB,CAAC,CAAC;aACrE;YACD,OAAO,EAAE,QAAQ,EAAE,KAAK,EAAE,MAAM,EAAE,uBAAuB,EAAE,CAAC;SAC7D;QAED,OAAO;YACL,QAAQ,EAAE,IAAI;YACd,OAAO;YACP,eAAe,EAAE,qBAAqB,CAAC,YAAY,CAAC;SACrD,CAAC;IACJ,CAAC;IAEO,sBAAsB,CAAC,OAAiB;;QAC9C,MAAM,KAAK,GAAG,OAAO,CAAC,KAAK,CAAC;QAC5B,IAAI,CAAC,KAAK,EAAE;YACV,OAAO,SAAS,CAAC;SAClB;QAED,IAAI,KAAK,GAA6B,KAAK,CAAC;QAC5C,IAAI,MAAM,GAAG,IAAA,iDAA4B,EAAC,SAAS,CAAC,CAAC;QAErD,MAAM,YAAY,GAAoC,CAAC,KAAK,CAAC,CAAC;QAC9D,MAAM,OAAO,GAA2B,EAAE,CAAC;QAC3C,IAAI,MAAM,GAAG,OAAO,CAAC,MAAa,CAAC;QAEnC,OAAO,MAAM,IAAI,MAAM,KAAK,KAAK,EAAE;YACjC,OAAO,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;YACrB,MAAM,GAAG,MAAM,CAAC,MAAa,CAAC;SAC/B;QAED,OAAO,CAAC,OAAO,EAAE,CAAC,OAAO,CAAC,OAAO,CAAC,EAAE,CAAC,YAAY,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC,CAAC;QAEjE,YAAY,CAAC,OAAO,CAAC,OAAO,CAAC,EAAE;YAC7B,MAAM,mBAAmB,GAAG,IAAA,sDAAiC,EAC1D,OAAe,CAAC,mBAA4D,CAC9E,CAAC;YACF,IAAI,CAAC,mBAAmB,EAAE;gBACxB,OAAO;aACR;YAED,IAAI,mBAAmB,CAAC,QAAQ,EAAE;gBAChC,MAAM,mCACD,MAAM,GACN,mBAAmB,CAAC,QAAQ,CAChC,CAAC;aACH;YAED,IAAI,mBAAmB,CAAC,YAAY,IAAI,IAAI,EAAE;gBAC5C,MAAM,CAAC,OAAO,GAAG,mBAAmB,CAAC,YAAY,CAAC;aACnD;YAED,IAAI,2BAA2B,CAAE,OAAe,CAAC,mBAAmB,CAAC,EAAE;gBACrE,KAAK,GAAG,OAAO,CAAC;aACjB;QACH,CAAC,CAAC,CAAC;QAEH,MAAM,UAAU,GAAG,IAAA,iDAA4B,EAAC,MAAM,CAAC,CAAC;QACxD,OAAO;YACL,YAAY,EAAE,KAAK;YACnB,cAAc,EAAE,MAAC,KAAa,CAAC,IAAI,mCAAI,CAAC;YACxC,MAAM,EAAE,UAAU;YAClB,iBAAiB,EAAE,IAAA,mDAA8B,EAAC,UAAU,CAAC;SAC9D,CAAC;IACJ,CAAC;IAEO,2BAA2B,CACjC,OAAiB,EACjB,YAAsB;QAEtB,MAAM,EAAE,mBAAmB,EAAE,qBAAqB,EAAE,GAAG,6BAA6B,CAAC,OAAO,CAAC,CAAC;QAC9F,MAAM,eAAe,GAAG,KAAK,CAAC,IAAI,CAAC,IAAI,GAAG,CAAC,CAAC,GAAG,oBAAoB,CAAC,OAAO,CAAC,EAAE,GAAG,YAAY,CAAC,CAAC,CAAC,CAAC;QACjG,IAAI,QAAQ,GAAG,4CAAc,CAAC,IAAI,CAAC;QAEnC,eAAe,CAAC,OAAO,CAAC,SAAS,CAAC,EAAE;YAClC,IAAI,qBAAqB,aAArB,qBAAqB,uBAArB,qBAAqB,CAAG,SAAS,CAAC,EAAE;gBACtC,QAAQ,GAAG,4CAAc,CAAC,IAAI,CAAC;gBAC/B,OAAO;aACR;YAED,MAAM,UAAU,GAAG,mBAAmB,aAAnB,mBAAmB,uBAAnB,mBAAmB,CAAE,GAAG,CAAC,SAAS,CAAC,CAAC;YACvD,IAAI,CAAC,UAAU,EAAE;gBACf,OAAO;aACR;YAED,IAAI,UAAU,CAAC,WAAW,IAAI,UAAU,CAAC,YAAY,CAAC,IAAI,KAAK,CAAC,EAAE;gBAChE,QAAQ,GAAG,4CAAc,CAAC,IAAI,CAAC;gBAC/B,OAAO;aACR;YAED,QAAQ,IAAI,IAAA,kDAAoB,EAAC,UAAU,CAAC,YAAY,CAAC,CAAC;QAC5D,CAAC,CAAC,CAAC;QAEH,IACE,eAAe,CAAC,IAAI,CAAC,SAAS,CAAC,EAAE,CAAC,qBAAqB,aAArB,qBAAqB,uBAArB,qBAAqB,CAAG,SAAS,CAAC,CAAC;YACrE,eAAe,CAAC,IAAI,CAAC,SAAS,CAAC,EAAE;gBAC/B,MAAM,UAAU,GAAG,mBAAmB,aAAnB,mBAAmB,uBAAnB,mBAAmB,CAAE,GAAG,CAAC,SAAS,CAAC,CAAC;gBACvD,OAAO,CAAC,CAAC,CAAA,UAAU,aAAV,UAAU,uBAAV,UAAU,CAAE,WAAW,CAAA,IAAI,UAAU,CAAC,YAAY,CAAC,IAAI,KAAK,CAAC,CAAC;YACzE,CAAC,CAAC,EACF;YACA,OAAO;gBACL,QAAQ,EAAE,4CAAc,CAAC,IAAI;gBAC7B,MAAM,EAAE,wBAAwB;aACjC,CAAC;SACH;QAED,OAAO;YACL,QAAQ,EAAE,QAAQ,KAAK,4CAAc,CAAC,IAAI,CAAC,CAAC,CAAC,4CAAc,CAAC,KAAK,CAAC,CAAC,CAAC,QAAQ;SAC7E,CAAC;IACJ,CAAC;IAEO,qBAAqB,CAC3B,OAAiB,EACjB,YAAsB,EACtB,OAAiC,EACjC,eAAuB;;QAEvB,MAAM,aAAa,GAAG,eAAe,CAAC,OAAO,CAAC,cAAc,EAAE,OAAO,CAAC,iBAAiB,EAAE,eAAe,CAAC,CAAC;QAC1G,MAAM,aAAa,GAAG,IAAI,CAAC,sBAAsB,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC;QAE/D,IAAI,aAAa,KAAK,aAAa,EAAE;YACnC,MAAA,IAAI,CAAC,WAAW,0CAAE,gBAAgB,CAAC,uBAAuB,CAAC,CAAC;YAC5D,OAAO;SACR;QAED,IAAI,aAAa,EAAE;YACjB,IAAI,CAAC,0BAA0B,CAAC,OAAO,EAAE,aAAa,CAAC,CAAC;SACzD;QAED,IAAI,GAAG,GAAG,IAAI,CAAC,eAAe,CAAC,GAAG,CAAC,aAAa,CAAC,CAAC;QAClD,IAAI,CAAC,GAAG,EAAE;YACR,GAAG,GAAG;gBACJ,EAAE,EAAE,IAAI,CAAC,SAAS,EAAE;gBACpB,IAAI,EAAE,cAAc;gBACpB,SAAS,EAAE,aAAa;gBACxB,MAAM,EAAE,SAAS;gBACjB,YAAY,EAAE,CAAC,GAAG,YAAY,CAAC;gBAC/B,eAAe;gBACf,eAAe,EAAE,IAAI,GAAG,EAAE;gBAC1B,eAAe,EAAE,EAAE;gBACnB,MAAM,EAAE,OAAO,CAAC,MAAM;gBACtB,YAAY,EAAE,OAAO,CAAC,YAAY;gBAClC,cAAc,EAAE,OAAO,CAAC,cAAc;gBACtC,iBAAiB,EAAE,OAAO,CAAC,iBAAiB;gBAC5C,SAAS,EAAE,IAAI,CAAC,GAAG,EAAE;gBACrB,cAAc,EAAE,CAAC;aAClB,CAAC;YACF,IAAI,CAAC,eAAe,CAAC,GAAG,CAAC,aAAa,EAAE,GAAG,CAAC,CAAC;YAC7C,MAAA,IAAI,CAAC,WAAW,0CAAE,gBAAgB,CAAC,qBAAqB,CAAC,CAAC;YAC1D,MAAA,IAAI,CAAC,WAAW,0CAAE,kBAAkB,CAAC,IAAI,CAAC,eAAe,CAAC,IAAI,CAAC,CAAC;SACjE;aAAM;YACL,MAAA,IAAI,CAAC,WAAW,0CAAE,gBAAgB,CAAC,uBAAuB,CAAC,CAAC;SAC7D;QAED,IAAI,CAAC,GAAG,CAAC,eAAe,CAAC,GAAG,CAAC,OAAO,CAAC,EAAE;YACrC,GAAG,CAAC,eAAe,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC;YACjC,GAAG,CAAC,eAAe,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;YAClC,IAAI,CAAC,sBAAsB,CAAC,GAAG,CAAC,OAAO,EAAE,aAAa,CAAC,CAAC;YACxD,MAAA,IAAI,CAAC,WAAW,0CAAE,gBAAgB,CAAC,qBAAqB,CAAC,CAAC;YAC1D,MAAA,IAAI,CAAC,WAAW,0CAAE,sBAAsB,CAAC,GAAG,CAAC,eAAe,CAAC,IAAI,CAAC,CAAC;SACpE;QAED,IAAI,CAAC,gBAAgB,CAAC,GAAG,CAAC,CAAC;IAC7B,CAAC;IAEO,wBAAwB,CAAC,OAAiB;QAChD,MAAM,aAAa,GAAG,IAAI,CAAC,sBAAsB,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC;QAC/D,IAAI,CAAC,aAAa,EAAE;YAClB,OAAO;SACR;QACD,IAAI,CAAC,0BAA0B,CAAC,OAAO,EAAE,aAAa,CAAC,CAAC;IAC1D,CAAC;IAEO,0BAA0B,CAAC,OAAiB,EAAE,SAA8B;;QAClF,MAAM,GAAG,GAAG,IAAI,CAAC,eAAe,CAAC,GAAG,CAAC,SAAS,CAAC,CAAC;QAChD,IAAI,CAAC,GAAG,EAAE;YACR,IAAI,CAAC,sBAAsB,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC;YAC5C,OAAO;SACR;QAED,GAAG,CAAC,eAAe,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC;QACpC,IAAI,IAAI,CAAC,sBAAsB,CAAC,GAAG,CAAC,OAAO,CAAC,KAAK,SAAS,EAAE;YAC1D,IAAI,CAAC,sBAAsB,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC;SAC7C;QAED,IAAI,GAAG,CAAC,eAAe,CAAC,IAAI,KAAK,CAAC,IAAI,GAAG,CAAC,MAAM,KAAK,WAAW,EAAE;YAChE,GAAG,CAAC,MAAM,GAAG,WAAW,CAAC;YACzB,IAAI,CAAC,eAAe,CAAC,MAAM,CAAC,SAAS,CAAC,CAAC;YACvC,MAAA,IAAI,CAAC,WAAW,0CAAE,gBAAgB,CAAC,uBAAuB,CAAC,CAAC;YAC5D,MAAA,IAAI,CAAC,WAAW,0CAAE,WAAW,CAAC,qBAAqB,EAAE;gBACnD,SAAS;gBACT,KAAK,EAAE,GAAG,CAAC,EAAE;aACd,CAAC,CAAC;YACH,MAAA,IAAI,CAAC,WAAW,0CAAE,kBAAkB,CAAC,IAAI,CAAC,eAAe,CAAC,IAAI,CAAC,CAAC;SACjE;IACH,CAAC;IAEO,gBAAgB,CAAC,GAAmB;QAC1C,IAAI,IAAI,CAAC,WAAW,CAAC,GAAG,CAAC,GAAG,CAAC,SAAS,CAAC,EAAE;YACvC,OAAO;SACR;QAED,MAAM,MAAM,GAAG,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,IAAI,CAClC,GAAG,EAAE;YACH,IAAI,CAAC,WAAW,CAAC,MAAM,CAAC,GAAG,CAAC,SAAS,CAAC,CAAC;QACzC,CAAC,EACD,GAAG,EAAE;YACH,IAAI,CAAC,WAAW,CAAC,MAAM,CAAC,GAAG,CAAC,SAAS,CAAC,CAAC;QACzC,CAAC,CACF,CAAC;QAEF,IAAI,CAAC,WAAW,CAAC,GAAG,CAAC,GAAG,CAAC,SAAS,EAAE,MAAM,CAAC,CAAC;IAC9C,CAAC;IAEa,MAAM,CAAC,GAAmB;;;YACtC,IAAK,GAAG,CAAC,MAAiB,KAAK,WAAW,EAAE;gBAC1C,OAAO;aACR;YAED,MAAM,IAAI,CAAC,gBAAgB,EAAE,CAAC;YAC9B,IAAK,GAAG,CAAC,MAAiB,KAAK,WAAW,EAAE;gBAC1C,OAAO;aACR;YAED,GAAG,CAAC,MAAM,GAAG,SAAS,CAAC;YACvB,MAAA,IAAI,CAAC,WAAW,0CAAE,WAAW,CAAC,oBAAoB,EAAE;gBAClD,SAAS,EAAE,GAAG,CAAC,SAAS;gBACxB,KAAK,EAAE,GAAG,CAAC,EAAE;aACd,CAAC,CAAC;YAEH,IAAI,KAAK,GAAG,CAAC,CAAC;YACd,IAAI,UAAU,GAAG,WAAW,CAAC,GAAG,EAAE,CAAC;YACnC,IAAI,gBAAgB,GAAG,CAAC,CAAC;YACzB,IAAI,gBAAgB,GAAG,CAAC,CAAC;YAEzB,OAAO,KAAK,GAAG,GAAG,CAAC,eAAe,CAAC,MAAM,EAAE;gBACzC,IAAK,GAAG,CAAC,MAAiB,KAAK,WAAW,EAAE;oBAC1C,OAAO;iBACR;gBAED,IACE,gBAAgB,GAAG,CAAC;oBACpB,CAAC,gBAAgB,IAAI,GAAG,CAAC,MAAM,CAAC,mBAAmB,IAAI,WAAW,CAAC,GAAG,EAAE,GAAG,UAAU,IAAI,GAAG,CAAC,MAAM,CAAC,WAAW,CAAC,EAChH;oBACA,MAAA,IAAI,CAAC,WAAW,0CAAE,gBAAgB,CAAC,sBAAsB,CAAC,CAAC;oBAC3D,MAAA,IAAI,CAAC,WAAW,0CAAE,UAAU,CAAC,YAAY,EAAE,WAAW,CAAC,GAAG,EAAE,GAAG,UAAU,CAAC,CAAC;oBAC3E,MAAA,IAAI,CAAC,WAAW,0CAAE,WAAW,CAAC,oBAAoB,EAAE;wBAClD,SAAS,EAAE,GAAG,CAAC,SAAS;wBACxB,KAAK,EAAE,GAAG,CAAC,EAAE;wBACb,gBAAgB;qBACjB,CAAC,CAAC;oBACH,IAAI,gBAAgB,GAAG,CAAC,EAAE;wBACxB,IAAI,CAAC,KAAK,CAAC,eAAe,EAAE,CAAC;qBAC9B;oBACD,MAAM,IAAI,CAAC,gBAAgB,EAAE,CAAC;oBAC9B,UAAU,GAAG,WAAW,CAAC,GAAG,EAAE,CAAC;oBAC/B,gBAAgB,GAAG,CAAC,CAAC;oBACrB,gBAAgB,GAAG,CAAC,CAAC;iBACtB;gBAED,MAAM,OAAO,GAAG,GAAG,CAAC,eAAe,CAAC,KAAK,EAAE,CAAC,CAAC;gBAE7C,IAAI,CAAC,GAAG,CAAC,eAAe,CAAC,GAAG,CAAC,OAAO,CAAC,EAAE;oBACrC,SAAS;iBACV;gBAED,IAAI,CAAC,mBAAmB,CAAC,OAAO,CAAC,EAAE;oBACjC,GAAG,CAAC,eAAe,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC;oBACpC,IAAI,IAAI,CAAC,sBAAsB,CAAC,GAAG,CAAC,OAAO,CAAC,KAAK,GAAG,CAAC,SAAS,EAAE;wBAC9D,IAAI,CAAC,sBAAsB,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC;qBAC7C;oBACD,SAAS;iBACV;gBAED,IAAI,IAAI,CAAC,sBAAsB,CAAC,GAAG,CAAC,OAAO,CAAC,KAAK,GAAG,CAAC,SAAS,EAAE;oBAC9D,GAAG,CAAC,eAAe,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC;oBACpC,SAAS;iBACV;gBAED,MAAM,eAAe,GAAG,IAAI,CAAC,kBAAkB,CAAC,OAAO,EAAE,GAAG,CAAC,YAAY,EAAE,IAAI,EAAE,KAAK,CAAC,CAAC;gBACxF,IAAI,CAAC,eAAe,CAAC,QAAQ,EAAE;oBAC7B,GAAG,CAAC,eAAe,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC;oBACpC,IAAI,CAAC,sBAAsB,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC;oBAC5C,IAAI,CAAC,mBAAmB,CAAC,OAAO,EAAE,GAAG,CAAC,YAAY,CAAC,CAAC;oBACpD,SAAS;iBACV;gBAED,MAAM,aAAa,GAAG,eAAe,CACnC,eAAe,CAAC,OAAO,CAAC,cAAc,EACtC,eAAe,CAAC,OAAO,CAAC,iBAAiB,EACzC,eAAe,CAAC,eAAe,CAChC,CAAC;gBAEF,IAAI,aAAa,KAAK,GAAG,CAAC,SAAS,EAAE;oBACnC,GAAG,CAAC,eAAe,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC;oBACpC,IAAI,CAAC,sBAAsB,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC;oBAC5C,IAAI,CAAC,qBAAqB,CAAC,OAAO,EAAE,GAAG,CAAC,YAAY,EAAE,eAAe,CAAC,OAAO,EAAE,eAAe,CAAC,eAAe,CAAC,CAAC;oBAChH,SAAS;iBACV;gBAED,IAAI,CAAC,mBAAmB,CAAC,OAAO,EAAE,GAAG,CAAC,YAAY,CAAC,CAAC;gBACpD,GAAG,CAAC,eAAe,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC;gBACpC,IAAI,CAAC,sBAAsB,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC;gBAC5C,GAAG,CAAC,cAAc,IAAI,CAAC,CAAC;gBACxB,gBAAgB,IAAI,CAAC,CAAC;gBACtB,gBAAgB,IAAI,CAAC,CAAC;gBACtB,MAAA,IAAI,CAAC,WAAW,0CAAE,gBAAgB,CAAC,2BAA2B,CAAC,CAAC;aACjE;YAED,IAAI,gBAAgB,GAAG,CAAC,EAAE;gBACxB,MAAA,IAAI,CAAC,WAAW,0CAAE,UAAU,CAAC,YAAY,EAAE,WAAW,CAAC,GAAG,EAAE,GAAG,UAAU,CAAC,CAAC;gBAC3E,IAAI,CAAC,KAAK,CAAC,eAAe,EAAE,CAAC;aAC9B;YAED,IAAI,GAAG,CAAC,eAAe,CAAC,IAAI,KAAK,CAAC,IAAI,IAAI,CAAC,eAAe,CAAC,GAAG,CAAC,GAAG,CAAC,SAAS,CAAC,KAAK,GAAG,EAAE;gBACrF,GAAG,CAAC,MAAM,GAAG,WAAW,CAAC;gBACzB,IAAI,CAAC,eAAe,CAAC,MAAM,CAAC,GAAG,CAAC,SAAS,CAAC,CAAC;gBAC3C,MAAA,IAAI,CAAC,WAAW,0CAAE,gBAAgB,CAAC,uBAAuB,CAAC,CAAC;gBAC5D,MAAA,IAAI,CAAC,WAAW,0CAAE,WAAW,CAAC,uBAAuB,EAAE;oBACrD,SAAS,EAAE,GAAG,CAAC,SAAS;oBACxB,KAAK,EAAE,GAAG,CAAC,EAAE;oBACb,cAAc,EAAE,GAAG,CAAC,cAAc;iBACnC,CAAC,CAAC;gBACH,MAAA,IAAI,CAAC,WAAW,0CAAE,kBAAkB,CAAC,IAAI,CAAC,eAAe,CAAC,IAAI,CAAC,CAAC;aACjE;;KACF;IAEO,gBAAgB;QACtB,MAAM,WAAW,GAAI,IAAI,CAAC,KAAa,CAAC,MAAM,CAAC;QAC/C,IAAI,WAAW,aAAX,WAAW,uBAAX,WAAW,CAAE,0BAA0B,EAAE;YAC3C,OAAO,WAAW,CAAC,0BAA0B,CAAE,IAAI,CAAC,KAAa,CAAC,KAAK,CAAC,CAAC,IAAI,EAAE,CAAC;SACjF;QAED,OAAO,IAAI,OAAO,CAAC,OAAO,CAAC,EAAE;YAC3B,WAAW,aAAX,WAAW,uBAAX,WAAW,CAAE,iCAAiC,CAAE,IAAI,CAAC,KAAa,CAAC,KAAK,EAAE,GAAG,EAAE,CAAC,OAAO,EAAE,CAAC,CAAC;QAC7F,CAAC,CAAC,CAAC;IACL,CAAC;IAEO,mBAAmB,CAAC,OAAiB,EAAE,YAAsB;QACnE,IAAI,CAAC,mBAAmB,CAAC,OAAO,CAAC,EAAE;YACjC,OAAO;SACR;QAED,IAAI,CAAC,YAAY,CAAC,MAAM,EAAE;YACxB,OAAO,CAAC,WAAW,CAAC,KAAK,CAAC,CAAC;YAC3B,OAAO;SACR;QAED,OAAO,CAAC,SAAS,CAAC,YAAY,EAAE,KAAK,CAAC,CAAC;IACzC,CAAC;CACF;AAlbD,kDAkbC","file":"state-batch-scheduler.js","sourcesContent":["import type { IGraphic, IGroup, ILayer, IStage } from '../../interface';\nimport type { CompiledStateDefinition } from './state-definition';\nimport { UpdateCategory, classifyAffectedKeys } from './attribute-update-classifier';\nimport {\n type DeferredIneligibleReason,\n type IDeferredStateConfig,\n type IDeferredStateOwnerConfig,\n type IResolvedDeferredContext,\n type StatePerfMonitor,\n fingerprintDeferredStateConfig,\n normalizeDeferredStateConfig,\n normalizeDeferredStateOwnerConfig\n} from './state-perf-monitor';\n\ntype StateBatchJobKind = 'apply_states';\ntype StateBatchIntentKey = string;\n\nexport interface IStateBatchJob {\n id: number;\n kind: StateBatchJobKind;\n intentKey: StateBatchIntentKey;\n status: 'pending' | 'running' | 'completed' | 'cancelled';\n targetStates: string[];\n targetStatesKey: string;\n pendingGraphics: Set<IGraphic>;\n orderedGraphics: IGraphic[];\n config: Required<IDeferredStateConfig>;\n contextOwner: IStage | ILayer | IGroup;\n contextOwnerId: number;\n configFingerprint: string;\n createdAt: number;\n processedCount: number;\n}\n\ntype DeferredEligibilityResult =\n | {\n eligible: true;\n context: IResolvedDeferredContext;\n targetStatesKey: string;\n }\n | {\n eligible: false;\n reason: DeferredIneligibleReason;\n };\n\nfunction isRenderableGraphic(graphic: IGraphic): boolean {\n return !!graphic.stage && (graphic as any).releaseStatus !== 'released';\n}\n\nfunction createTargetStatesKey(targetStates: string[]): string {\n return targetStates.length ? targetStates.join('|') : '__clear__';\n}\n\nfunction createIntentKey(\n contextOwnerId: number,\n configFingerprint: string,\n targetStatesKey: string\n): StateBatchIntentKey {\n return `${contextOwnerId}:${configFingerprint}:${targetStatesKey}`;\n}\n\nfunction hasMeaningfulDeferredConfig(config?: IDeferredStateOwnerConfig): boolean {\n const normalized = normalizeDeferredStateOwnerConfig(config);\n return !!normalized && (normalized.localEnabled != null || normalized.deferred != null);\n}\n\nfunction getGraphicCompiledDefinitions(graphic: IGraphic): {\n compiledDefinitions?: Map<string, CompiledStateDefinition<any>>;\n stateProxyEligibility?: (stateName: string) => boolean;\n} {\n const graphicAny = graphic as any;\n if (typeof graphicAny.resolveEffectiveCompiledDefinitions === 'function') {\n const result = graphicAny.resolveEffectiveCompiledDefinitions();\n return {\n compiledDefinitions: result.compiledDefinitions,\n stateProxyEligibility: result.stateProxyEligibility\n };\n }\n\n return {};\n}\n\nfunction getCurrentStateNames(graphic: IGraphic): string[] {\n return ((graphic as any).currentStates as string[] | undefined)?.slice() ?? [];\n}\n\nexport class StateBatchScheduler {\n readonly jobsByIntentKey = new Map<StateBatchIntentKey, IStateBatchJob>();\n readonly pendingIntentByGraphic = new Map<IGraphic, StateBatchIntentKey>();\n\n private nextJobId = 1;\n private readonly runningJobs = new Map<StateBatchIntentKey, Promise<void>>();\n\n constructor(private readonly stage: IStage, private readonly perfMonitor?: StatePerfMonitor) {}\n\n schedule(graphics: IGraphic[], targetStates: string[]): void {\n const batchOperation = graphics.length > 1;\n\n graphics.forEach(graphic => {\n const eligibility = this.resolveEligibility(graphic, targetStates, batchOperation, true);\n if ('reason' in eligibility) {\n this.removeGraphicFromPending(graphic);\n if (eligibility.reason !== 'graphic_unavailable') {\n this.commitSynchronously(graphic, targetStates);\n }\n return;\n }\n\n this.enqueueDeferredIntent(graphic, targetStates, eligibility.context, eligibility.targetStatesKey);\n });\n }\n\n release(): void {\n this.jobsByIntentKey.forEach(job => {\n job.status = 'cancelled';\n });\n this.jobsByIntentKey.clear();\n this.pendingIntentByGraphic.clear();\n this.runningJobs.clear();\n this.perfMonitor?.updateBatchPending(0);\n }\n\n private resolveEligibility(\n graphic: IGraphic,\n targetStates: string[],\n batchOperation: boolean,\n recordObservability: boolean\n ): DeferredEligibilityResult {\n if (!isRenderableGraphic(graphic)) {\n if (recordObservability) {\n this.perfMonitor?.recordDeferredIneligible('graphic_unavailable');\n }\n return { eligible: false, reason: 'graphic_unavailable' };\n }\n\n if (!batchOperation) {\n if (recordObservability) {\n this.perfMonitor?.recordDeferredIneligible('non_batch_operation');\n }\n return { eligible: false, reason: 'non_batch_operation' };\n }\n\n const context = this.resolveDeferredContext(graphic);\n if (!context) {\n if (recordObservability) {\n this.perfMonitor?.recordDeferredIneligible('graphic_unavailable');\n }\n return { eligible: false, reason: 'graphic_unavailable' };\n }\n\n if (!context.config.enabled) {\n const normalizedOwnerConfig = normalizeDeferredStateOwnerConfig(\n (context.contextOwner as any).deferredStateConfig as IDeferredStateOwnerConfig | undefined\n );\n const reason = normalizedOwnerConfig?.localEnabled === false ? 'context_disabled' : 'config_disabled';\n if (recordObservability) {\n this.perfMonitor?.recordDeferredIneligible(reason);\n }\n return { eligible: false, reason };\n }\n\n const classification = this.classifyGraphicTargetStates(graphic, targetStates);\n if (classification.reason) {\n if (recordObservability) {\n this.perfMonitor?.recordDeferredIneligible(classification.reason);\n }\n return { eligible: false, reason: classification.reason };\n }\n\n if (classification.category !== UpdateCategory.PAINT) {\n if (recordObservability) {\n this.perfMonitor?.recordDeferredIneligible('mixed_update_category');\n }\n return { eligible: false, reason: 'mixed_update_category' };\n }\n\n return {\n eligible: true,\n context,\n targetStatesKey: createTargetStatesKey(targetStates)\n };\n }\n\n private resolveDeferredContext(graphic: IGraphic): IResolvedDeferredContext | undefined {\n const stage = graphic.stage;\n if (!stage) {\n return undefined;\n }\n\n let owner: IStage | ILayer | IGroup = stage;\n let config = normalizeDeferredStateConfig(undefined);\n\n const ownerConfigs: Array<IStage | ILayer | IGroup> = [stage];\n const parents: Array<IGroup | ILayer> = [];\n let parent = graphic.parent as any;\n\n while (parent && parent !== stage) {\n parents.push(parent);\n parent = parent.parent as any;\n }\n\n parents.reverse().forEach(current => ownerConfigs.push(current));\n\n ownerConfigs.forEach(current => {\n const deferredStateConfig = normalizeDeferredStateOwnerConfig(\n (current as any).deferredStateConfig as IDeferredStateOwnerConfig | undefined\n );\n if (!deferredStateConfig) {\n return;\n }\n\n if (deferredStateConfig.deferred) {\n config = {\n ...config,\n ...deferredStateConfig.deferred\n };\n }\n\n if (deferredStateConfig.localEnabled != null) {\n config.enabled = deferredStateConfig.localEnabled;\n }\n\n if (hasMeaningfulDeferredConfig((current as any).deferredStateConfig)) {\n owner = current;\n }\n });\n\n const normalized = normalizeDeferredStateConfig(config);\n return {\n contextOwner: owner,\n contextOwnerId: (owner as any)._uid ?? 0,\n config: normalized,\n configFingerprint: fingerprintDeferredStateConfig(normalized)\n };\n }\n\n private classifyGraphicTargetStates(\n graphic: IGraphic,\n targetStates: string[]\n ): { category: UpdateCategory; reason?: DeferredIneligibleReason } {\n const { compiledDefinitions, stateProxyEligibility } = getGraphicCompiledDefinitions(graphic);\n const candidateStates = Array.from(new Set([...getCurrentStateNames(graphic), ...targetStates]));\n let category = UpdateCategory.NONE;\n\n candidateStates.forEach(stateName => {\n if (stateProxyEligibility?.(stateName)) {\n category = UpdateCategory.NONE;\n return;\n }\n\n const definition = compiledDefinitions?.get(stateName);\n if (!definition) {\n return;\n }\n\n if (definition.hasResolver && definition.affectedKeys.size === 0) {\n category = UpdateCategory.NONE;\n return;\n }\n\n category |= classifyAffectedKeys(definition.affectedKeys);\n });\n\n if (\n candidateStates.some(stateName => stateProxyEligibility?.(stateName)) ||\n candidateStates.some(stateName => {\n const definition = compiledDefinitions?.get(stateName);\n return !!definition?.hasResolver && definition.affectedKeys.size === 0;\n })\n ) {\n return {\n category: UpdateCategory.NONE,\n reason: 'resolver_unstable_keys'\n };\n }\n\n return {\n category: category === UpdateCategory.NONE ? UpdateCategory.PAINT : category\n };\n }\n\n private enqueueDeferredIntent(\n graphic: IGraphic,\n targetStates: string[],\n context: IResolvedDeferredContext,\n targetStatesKey: string\n ): void {\n const nextIntentKey = createIntentKey(context.contextOwnerId, context.configFingerprint, targetStatesKey);\n const prevIntentKey = this.pendingIntentByGraphic.get(graphic);\n\n if (prevIntentKey === nextIntentKey) {\n this.perfMonitor?.incrementCounter('deferredJobsCoalesced');\n return;\n }\n\n if (prevIntentKey) {\n this.removeGraphicFromIntentJob(graphic, prevIntentKey);\n }\n\n let job = this.jobsByIntentKey.get(nextIntentKey);\n if (!job) {\n job = {\n id: this.nextJobId++,\n kind: 'apply_states',\n intentKey: nextIntentKey,\n status: 'pending',\n targetStates: [...targetStates],\n targetStatesKey,\n pendingGraphics: new Set(),\n orderedGraphics: [],\n config: context.config,\n contextOwner: context.contextOwner,\n contextOwnerId: context.contextOwnerId,\n configFingerprint: context.configFingerprint,\n createdAt: Date.now(),\n processedCount: 0\n };\n this.jobsByIntentKey.set(nextIntentKey, job);\n this.perfMonitor?.incrementCounter('deferredJobsCreated');\n this.perfMonitor?.updateBatchPending(this.jobsByIntentKey.size);\n } else {\n this.perfMonitor?.incrementCounter('deferredJobsCoalesced');\n }\n\n if (!job.pendingGraphics.has(graphic)) {\n job.pendingGraphics.add(graphic);\n job.orderedGraphics.push(graphic);\n this.pendingIntentByGraphic.set(graphic, nextIntentKey);\n this.perfMonitor?.recordAllocation('batchEntriesCreated');\n this.perfMonitor?.updateMaxGraphicsInJob(job.pendingGraphics.size);\n }\n\n this.ensureJobRunning(job);\n }\n\n private removeGraphicFromPending(graphic: IGraphic): void {\n const prevIntentKey = this.pendingIntentByGraphic.get(graphic);\n if (!prevIntentKey) {\n return;\n }\n this.removeGraphicFromIntentJob(graphic, prevIntentKey);\n }\n\n private removeGraphicFromIntentJob(graphic: IGraphic, intentKey: StateBatchIntentKey): void {\n const job = this.jobsByIntentKey.get(intentKey);\n if (!job) {\n this.pendingIntentByGraphic.delete(graphic);\n return;\n }\n\n job.pendingGraphics.delete(graphic);\n if (this.pendingIntentByGraphic.get(graphic) === intentKey) {\n this.pendingIntentByGraphic.delete(graphic);\n }\n\n if (job.pendingGraphics.size === 0 && job.status !== 'completed') {\n job.status = 'cancelled';\n this.jobsByIntentKey.delete(intentKey);\n this.perfMonitor?.incrementCounter('deferredJobsCancelled');\n this.perfMonitor?.recordEvent('deferred-job-cancel', {\n intentKey,\n jobId: job.id\n });\n this.perfMonitor?.updateBatchPending(this.jobsByIntentKey.size);\n }\n }\n\n private ensureJobRunning(job: IStateBatchJob): void {\n if (this.runningJobs.has(job.intentKey)) {\n return;\n }\n\n const runner = this.runJob(job).then(\n () => {\n this.runningJobs.delete(job.intentKey);\n },\n () => {\n this.runningJobs.delete(job.intentKey);\n }\n );\n\n this.runningJobs.set(job.intentKey, runner);\n }\n\n private async runJob(job: IStateBatchJob): Promise<void> {\n if ((job.status as string) === 'cancelled') {\n return;\n }\n\n await this.waitForNextFrame();\n if ((job.status as string) === 'cancelled') {\n return;\n }\n\n job.status = 'running';\n this.perfMonitor?.recordEvent('deferred-job-start', {\n intentKey: job.intentKey,\n jobId: job.id\n });\n\n let index = 0;\n let frameStart = performance.now();\n let processedInFrame = 0;\n let committedInSlice = 0;\n\n while (index < job.orderedGraphics.length) {\n if ((job.status as string) === 'cancelled') {\n return;\n }\n\n if (\n processedInFrame > 0 &&\n (processedInFrame >= job.config.maxGraphicsPerFrame || performance.now() - frameStart >= job.config.frameBudget)\n ) {\n this.perfMonitor?.incrementCounter('deferredBudgetYields');\n this.perfMonitor?.recordCost('batchSlice', performance.now() - frameStart);\n this.perfMonitor?.recordEvent('deferred-job-yield', {\n intentKey: job.intentKey,\n jobId: job.id,\n processedInFrame\n });\n if (committedInSlice > 0) {\n this.stage.renderNextFrame();\n }\n await this.waitForNextFrame();\n frameStart = performance.now();\n processedInFrame = 0;\n committedInSlice = 0;\n }\n\n const graphic = job.orderedGraphics[index++];\n\n if (!job.pendingGraphics.has(graphic)) {\n continue;\n }\n\n if (!isRenderableGraphic(graphic)) {\n job.pendingGraphics.delete(graphic);\n if (this.pendingIntentByGraphic.get(graphic) === job.intentKey) {\n this.pendingIntentByGraphic.delete(graphic);\n }\n continue;\n }\n\n if (this.pendingIntentByGraphic.get(graphic) !== job.intentKey) {\n job.pendingGraphics.delete(graphic);\n continue;\n }\n\n const nextEligibility = this.resolveEligibility(graphic, job.targetStates, true, false);\n if (!nextEligibility.eligible) {\n job.pendingGraphics.delete(graphic);\n this.pendingIntentByGraphic.delete(graphic);\n this.commitSynchronously(graphic, job.targetStates);\n continue;\n }\n\n const nextIntentKey = createIntentKey(\n nextEligibility.context.contextOwnerId,\n nextEligibility.context.configFingerprint,\n nextEligibility.targetStatesKey\n );\n\n if (nextIntentKey !== job.intentKey) {\n job.pendingGraphics.delete(graphic);\n this.pendingIntentByGraphic.delete(graphic);\n this.enqueueDeferredIntent(graphic, job.targetStates, nextEligibility.context, nextEligibility.targetStatesKey);\n continue;\n }\n\n this.commitSynchronously(graphic, job.targetStates);\n job.pendingGraphics.delete(graphic);\n this.pendingIntentByGraphic.delete(graphic);\n job.processedCount += 1;\n processedInFrame += 1;\n committedInSlice += 1;\n this.perfMonitor?.incrementCounter('deferredGraphicsCommitted');\n }\n\n if (processedInFrame > 0) {\n this.perfMonitor?.recordCost('batchSlice', performance.now() - frameStart);\n this.stage.renderNextFrame();\n }\n\n if (job.pendingGraphics.size === 0 && this.jobsByIntentKey.get(job.intentKey) === job) {\n job.status = 'completed';\n this.jobsByIntentKey.delete(job.intentKey);\n this.perfMonitor?.incrementCounter('deferredJobsCompleted');\n this.perfMonitor?.recordEvent('deferred-job-complete', {\n intentKey: job.intentKey,\n jobId: job.id,\n processedCount: job.processedCount\n });\n this.perfMonitor?.updateBatchPending(this.jobsByIntentKey.size);\n }\n }\n\n private waitForNextFrame(): Promise<void> {\n const stageGlobal = (this.stage as any).global;\n if (stageGlobal?.getSpecifiedPerformanceRAF) {\n return stageGlobal.getSpecifiedPerformanceRAF((this.stage as any).rafId).wait();\n }\n\n return new Promise(resolve => {\n stageGlobal?.getSpecifiedRequestAnimationFrame((this.stage as any).rafId)(() => resolve());\n });\n }\n\n private commitSynchronously(graphic: IGraphic, targetStates: string[]): void {\n if (!isRenderableGraphic(graphic)) {\n return;\n }\n\n if (!targetStates.length) {\n graphic.clearStates(false);\n return;\n }\n\n graphic.useStates(targetStates, false);\n }\n}\n"]}