@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,46 +1,27 @@
1
- import { getStageStatePerfMonitor } from "./state-perf-monitor";
2
-
3
1
  export function scheduleStageSharedStateRefresh(stage) {
4
- var _a;
5
- stage && "released" !== stage.releaseStatus && (null === (_a = getStageStatePerfMonitor(stage)) || void 0 === _a || _a.recordRefresh("renderScheduled"),
6
- stage.renderNextFrame());
2
+ stage && "released" !== stage.releaseStatus && stage.renderNextFrame();
7
3
  }
8
4
 
9
5
  export function enqueueGraphicSharedStateRefresh(stage, graphic) {
10
6
  var _a;
11
7
  if (!stage) return;
12
- const pending = null !== (_a = stage._pendingSharedStateRefreshGraphics) && void 0 !== _a ? _a : stage._pendingSharedStateRefreshGraphics = new Set;
13
- if (!pending.has(graphic)) {
14
- pending.add(graphic);
15
- const perfMonitor = getStageStatePerfMonitor(stage);
16
- null == perfMonitor || perfMonitor.recordRefresh("queuedGraphics"), null == perfMonitor || perfMonitor.recordAllocation("refreshQueuePushes");
17
- }
8
+ (null !== (_a = stage._pendingSharedStateRefreshGraphics) && void 0 !== _a ? _a : stage._pendingSharedStateRefreshGraphics = new Set).add(graphic);
18
9
  }
19
10
 
20
11
  export function markScopeActiveDescendantsDirty(scope, stage) {
21
- let marked = !1;
22
- scope.subtreeActiveDescendants.forEach((graphic => {
12
+ scope.subtreeActiveDescendants.size && (scope.subtreeActiveDescendants.forEach((graphic => {
23
13
  var _a;
24
14
  graphic.sharedStateDirty = !0;
25
- enqueueGraphicSharedStateRefresh(null !== (_a = null != stage ? stage : graphic.stage) && void 0 !== _a ? _a : scope.ownerStage, graphic),
26
- marked = !0;
27
- })), marked && scheduleStageSharedStateRefresh(null != stage ? stage : scope.ownerStage);
15
+ enqueueGraphicSharedStateRefresh(null !== (_a = null != stage ? stage : graphic.stage) && void 0 !== _a ? _a : scope.ownerStage, graphic);
16
+ })), scheduleStageSharedStateRefresh(null != stage ? stage : scope.ownerStage));
28
17
  }
29
18
 
30
19
  export function flushStageSharedStateRefresh(stage) {
31
20
  const pending = stage._pendingSharedStateRefreshGraphics;
32
21
  if (!pending || !pending.size) return;
33
- const perfMonitor = getStageStatePerfMonitor(stage), start = perfMonitor ? performance.now() : 0, graphics = Array.from(pending.values());
34
- pending.clear(), null == perfMonitor || perfMonitor.recordRefresh("flushedGraphics", graphics.length),
35
- graphics.forEach((graphic => {
36
- if ("released" === graphic.releaseStatus) return;
37
- if (graphic.stage !== stage) return;
38
- const refresh = graphic.refreshSharedStateBeforeRender;
39
- "function" == typeof refresh && (refresh.call(graphic), null == perfMonitor || perfMonitor.incrementCounter("sharedRefreshCommits"));
40
- })), perfMonitor && (perfMonitor.recordCost("sharedRefresh", performance.now() - start),
41
- perfMonitor.recordEvent("shared-refresh-flush", {
42
- stageId: stage._uid,
43
- flushedGraphics: graphics.length
22
+ const graphics = Array.from(pending.values());
23
+ pending.clear(), graphics.forEach((graphic => {
24
+ "released" !== graphic.releaseStatus && graphic.stage === stage && graphic.sharedStateDirty && graphic.refreshSharedStateBeforeRender();
44
25
  }));
45
26
  }
46
27
  //# sourceMappingURL=shared-state-refresh.js.map
@@ -1 +1 @@
1
- {"version":3,"sources":["../src/graphic/state/shared-state-refresh.ts"],"names":[],"mappings":"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","file":"shared-state-refresh.js","sourcesContent":["import type { IGraphic, IStage } from '../../interface';\nimport type { SharedStateScope } from './shared-state-scope';\nimport { getStageStatePerfMonitor } from './state-perf-monitor';\n\nexport function scheduleStageSharedStateRefresh(stage: IStage | undefined): void {\n if (!stage || (stage as any).releaseStatus === 'released') {\n return;\n }\n\n getStageStatePerfMonitor(stage)?.recordRefresh('renderScheduled');\n stage.renderNextFrame();\n}\n\nexport function enqueueGraphicSharedStateRefresh(stage: IStage | undefined, graphic: IGraphic): void {\n if (!stage) {\n return;\n }\n\n const pending =\n ((stage as any)._pendingSharedStateRefreshGraphics as Set<IGraphic> | undefined) ??\n (((stage as any)._pendingSharedStateRefreshGraphics = new Set<IGraphic>()) as Set<IGraphic>);\n\n if (!pending.has(graphic)) {\n pending.add(graphic);\n const perfMonitor = getStageStatePerfMonitor(stage);\n perfMonitor?.recordRefresh('queuedGraphics');\n perfMonitor?.recordAllocation('refreshQueuePushes');\n }\n}\n\nexport function markScopeActiveDescendantsDirty<T extends Record<string, any> = Record<string, any>>(\n scope: SharedStateScope<T>,\n stage?: IStage\n): void {\n let marked = false;\n scope.subtreeActiveDescendants.forEach(graphic => {\n (graphic as any).sharedStateDirty = true;\n const ownerStage = stage ?? graphic.stage ?? scope.ownerStage;\n enqueueGraphicSharedStateRefresh(ownerStage, graphic);\n marked = true;\n });\n\n if (marked) {\n scheduleStageSharedStateRefresh(stage ?? scope.ownerStage);\n }\n}\n\nexport function flushStageSharedStateRefresh(stage: IStage): void {\n const pending = (stage as any)._pendingSharedStateRefreshGraphics as Set<IGraphic> | undefined;\n if (!pending || !pending.size) {\n return;\n }\n\n const perfMonitor = getStageStatePerfMonitor(stage);\n const start = perfMonitor ? performance.now() : 0;\n const graphics = Array.from(pending.values());\n pending.clear();\n perfMonitor?.recordRefresh('flushedGraphics', graphics.length);\n\n graphics.forEach(graphic => {\n if ((graphic as any).releaseStatus === 'released') {\n return;\n }\n if (graphic.stage !== stage) {\n return;\n }\n\n const refresh = (graphic as any).refreshSharedStateBeforeRender;\n if (typeof refresh === 'function') {\n refresh.call(graphic);\n perfMonitor?.incrementCounter('sharedRefreshCommits');\n }\n });\n\n if (perfMonitor) {\n perfMonitor.recordCost('sharedRefresh', performance.now() - start);\n perfMonitor.recordEvent('shared-refresh-flush', {\n stageId: (stage as any)._uid,\n flushedGraphics: graphics.length\n });\n }\n}\n"]}
1
+ {"version":3,"sources":["../src/graphic/state/shared-state-refresh.ts"],"names":[],"mappings":"AAGA,MAAM,UAAU,+BAA+B,CAAC,KAAyB;IACvE,IAAI,CAAC,KAAK,IAAK,KAAa,CAAC,aAAa,KAAK,UAAU,EAAE;QACzD,OAAO;KACR;IAED,KAAK,CAAC,eAAe,EAAE,CAAC;AAC1B,CAAC;AAED,MAAM,UAAU,gCAAgC,CAAC,KAAyB,EAAE,OAAiB;;IAC3F,IAAI,CAAC,KAAK,EAAE;QACV,OAAO;KACR;IAED,MAAM,OAAO,GACX,MAAE,KAAa,CAAC,kCAAgE,mCAC/E,CAAE,KAAa,CAAC,kCAAkC,GAAG,IAAI,GAAG,EAAY,CAAmB,CAAC;IAE/F,OAAO,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC;AACvB,CAAC;AAED,MAAM,UAAU,+BAA+B,CAC7C,KAA0B,EAC1B,KAAc;IAEd,IAAI,CAAC,KAAK,CAAC,wBAAwB,CAAC,IAAI,EAAE;QACxC,OAAO;KACR;IAED,KAAK,CAAC,wBAAwB,CAAC,OAAO,CAAC,OAAO,CAAC,EAAE;;QAC9C,OAAe,CAAC,gBAAgB,GAAG,IAAI,CAAC;QACzC,MAAM,UAAU,GAAG,MAAA,KAAK,aAAL,KAAK,cAAL,KAAK,GAAI,OAAO,CAAC,KAAK,mCAAI,KAAK,CAAC,UAAU,CAAC;QAC9D,gCAAgC,CAAC,UAAU,EAAE,OAAO,CAAC,CAAC;IACxD,CAAC,CAAC,CAAC;IAEH,+BAA+B,CAAC,KAAK,aAAL,KAAK,cAAL,KAAK,GAAI,KAAK,CAAC,UAAU,CAAC,CAAC;AAC7D,CAAC;AAED,MAAM,UAAU,4BAA4B,CAAC,KAAa;IACxD,MAAM,OAAO,GAAI,KAAa,CAAC,kCAA+D,CAAC;IAC/F,IAAI,CAAC,OAAO,IAAI,CAAC,OAAO,CAAC,IAAI,EAAE;QAC7B,OAAO;KACR;IAED,MAAM,QAAQ,GAAG,KAAK,CAAC,IAAI,CAAC,OAAO,CAAC,MAAM,EAAE,CAAC,CAAC;IAC9C,OAAO,CAAC,KAAK,EAAE,CAAC;IAEhB,QAAQ,CAAC,OAAO,CAAC,OAAO,CAAC,EAAE;QACzB,IAAK,OAAe,CAAC,aAAa,KAAK,UAAU,EAAE;YACjD,OAAO;SACR;QACD,IAAI,OAAO,CAAC,KAAK,KAAK,KAAK,EAAE;YAC3B,OAAO;SACR;QACD,IAAI,CAAE,OAAe,CAAC,gBAAgB,EAAE;YACtC,OAAO;SACR;QAEA,OAAe,CAAC,8BAA8B,EAAE,CAAC;IACpD,CAAC,CAAC,CAAC;AACL,CAAC","file":"shared-state-refresh.js","sourcesContent":["import type { IGraphic, IStage } from '../../interface';\nimport type { SharedStateScope } from './shared-state-scope';\n\nexport function scheduleStageSharedStateRefresh(stage: IStage | undefined): void {\n if (!stage || (stage as any).releaseStatus === 'released') {\n return;\n }\n\n stage.renderNextFrame();\n}\n\nexport function enqueueGraphicSharedStateRefresh(stage: IStage | undefined, graphic: IGraphic): void {\n if (!stage) {\n return;\n }\n\n const pending =\n ((stage as any)._pendingSharedStateRefreshGraphics as Set<IGraphic> | undefined) ??\n (((stage as any)._pendingSharedStateRefreshGraphics = new Set<IGraphic>()) as Set<IGraphic>);\n\n pending.add(graphic);\n}\n\nexport function markScopeActiveDescendantsDirty<T extends Record<string, any> = Record<string, any>>(\n scope: SharedStateScope<T>,\n stage?: IStage\n): void {\n if (!scope.subtreeActiveDescendants.size) {\n return;\n }\n\n scope.subtreeActiveDescendants.forEach(graphic => {\n (graphic as any).sharedStateDirty = true;\n const ownerStage = stage ?? graphic.stage ?? scope.ownerStage;\n enqueueGraphicSharedStateRefresh(ownerStage, graphic);\n });\n\n scheduleStageSharedStateRefresh(stage ?? scope.ownerStage);\n}\n\nexport function flushStageSharedStateRefresh(stage: IStage): void {\n const pending = (stage as any)._pendingSharedStateRefreshGraphics as Set<IGraphic> | undefined;\n if (!pending || !pending.size) {\n return;\n }\n\n const graphics = Array.from(pending.values());\n pending.clear();\n\n graphics.forEach(graphic => {\n if ((graphic as any).releaseStatus === 'released') {\n return;\n }\n if (graphic.stage !== stage) {\n return;\n }\n if (!(graphic as any).sharedStateDirty) {\n return;\n }\n\n (graphic as any).refreshSharedStateBeforeRender();\n });\n}\n"]}
@@ -1,9 +1,6 @@
1
1
  import type { IGraphic, IStage } from '../../interface';
2
- import type { IGroup } from '../../interface/graphic/group';
3
2
  import type { CompiledStateDefinition, StateDefinitionsInput } from './state-definition';
4
3
  export interface SharedStateScope<T extends Record<string, any> = Record<string, any>> {
5
- ownerKind: 'group' | 'root';
6
- ownerGroup?: IGroup;
7
4
  ownerStage?: IStage;
8
5
  parentScope?: SharedStateScope<T>;
9
6
  themeStateDefinitions?: StateDefinitionsInput<T>;
@@ -16,10 +13,10 @@ export interface SharedStateScope<T extends Record<string, any> = Record<string,
16
13
  subtreeActiveDescendants: Set<IGraphic>;
17
14
  }
18
15
  export declare function createRootSharedStateScope<T extends Record<string, any> = Record<string, any>>(stage: IStage, themeStateDefinitions?: StateDefinitionsInput<T>): SharedStateScope<T>;
19
- export declare function createGroupSharedStateScope<T extends Record<string, any> = Record<string, any>>(group: IGroup, parentScope?: SharedStateScope<T>, localStateDefinitions?: StateDefinitionsInput<T>): SharedStateScope<T>;
16
+ export declare function createGroupSharedStateScope<T extends Record<string, any> = Record<string, any>>(group: IGraphic, parentScope?: SharedStateScope<T>, localStateDefinitions?: StateDefinitionsInput<T>): SharedStateScope<T>;
20
17
  export declare function setSharedStateScopeParent<T extends Record<string, any> = Record<string, any>>(scope: SharedStateScope<T>, parentScope?: SharedStateScope<T>): boolean;
21
18
  export declare function setSharedStateScopeLocalDefinitions<T extends Record<string, any> = Record<string, any>>(scope: SharedStateScope<T>, localStateDefinitions?: StateDefinitionsInput<T>): boolean;
22
19
  export declare function setRootSharedStateScopeThemeDefinitions<T extends Record<string, any> = Record<string, any>>(scope: SharedStateScope<T>, themeStateDefinitions?: StateDefinitionsInput<T>): boolean;
23
- export declare function rebuildSharedStateScope<T extends Record<string, any> = Record<string, any>>(scope: SharedStateScope<T>): SharedStateScope<T>;
20
+ export declare function rebuildSharedStateScope<T extends Record<string, any> = Record<string, any>>(scope: SharedStateScope<T>, revision?: number): SharedStateScope<T>;
24
21
  export declare function ensureSharedStateScopeFresh<T extends Record<string, any> = Record<string, any>>(scope?: SharedStateScope<T>): SharedStateScope<T> | undefined;
25
22
  export declare function collectSharedStateScopeChain<T extends Record<string, any> = Record<string, any>>(scope?: SharedStateScope<T>): SharedStateScope<T>[];
@@ -1,31 +1,13 @@
1
1
  import { StateDefinitionCompiler } from "./state-definition-compiler";
2
2
 
3
- import { getStageStatePerfMonitor } from "./state-perf-monitor";
4
-
5
3
  const compiler = new StateDefinitionCompiler;
6
4
 
7
- function copyDefinitions(definitions) {
8
- return definitions ? Object.assign({}, definitions) : {};
9
- }
10
-
11
5
  function buildEffectiveSourceDefinitions(parentScope, localStateDefinitions, themeStateDefinitions) {
12
- const merged = copyDefinitions(parentScope ? parentScope.effectiveSourceDefinitions : themeStateDefinitions);
13
- return localStateDefinitions && Object.keys(localStateDefinitions).forEach((stateName => {
14
- merged[stateName] = localStateDefinitions[stateName];
15
- })), merged;
16
- }
17
-
18
- function initializeScope(scope, revision = 0) {
19
- var _a;
20
- const effectiveSourceDefinitions = buildEffectiveSourceDefinitions(scope.parentScope, scope.localStateDefinitions, scope.themeStateDefinitions);
21
- return scope.effectiveSourceDefinitions = effectiveSourceDefinitions, scope.effectiveCompiledDefinitions = compiler.compile(effectiveSourceDefinitions),
22
- scope.parentRevisionAtBuild = null === (_a = scope.parentScope) || void 0 === _a ? void 0 : _a.revision,
23
- scope.revision = revision, scope.dirty = !1, scope;
6
+ return Object.assign({}, parentScope ? parentScope.effectiveSourceDefinitions : themeStateDefinitions, localStateDefinitions);
24
7
  }
25
8
 
26
9
  export function createRootSharedStateScope(stage, themeStateDefinitions) {
27
- return initializeScope({
28
- ownerKind: "root",
10
+ return rebuildSharedStateScope({
29
11
  ownerStage: stage,
30
12
  themeStateDefinitions: themeStateDefinitions,
31
13
  effectiveSourceDefinitions: {},
@@ -37,9 +19,7 @@ export function createRootSharedStateScope(stage, themeStateDefinitions) {
37
19
  }
38
20
 
39
21
  export function createGroupSharedStateScope(group, parentScope, localStateDefinitions) {
40
- return initializeScope({
41
- ownerKind: "group",
42
- ownerGroup: group,
22
+ return rebuildSharedStateScope({
43
23
  ownerStage: group.stage,
44
24
  parentScope: parentScope,
45
25
  localStateDefinitions: localStateDefinitions,
@@ -66,18 +46,17 @@ export function setRootSharedStateScopeThemeDefinitions(scope, themeStateDefinit
66
46
  rebuildSharedStateScope(scope), !0);
67
47
  }
68
48
 
69
- export function rebuildSharedStateScope(scope) {
49
+ export function rebuildSharedStateScope(scope, revision = scope.revision + 1) {
70
50
  var _a;
71
51
  const effectiveSourceDefinitions = buildEffectiveSourceDefinitions(scope.parentScope, scope.localStateDefinitions, scope.themeStateDefinitions);
72
52
  return scope.effectiveSourceDefinitions = effectiveSourceDefinitions, scope.effectiveCompiledDefinitions = compiler.compile(effectiveSourceDefinitions),
73
53
  scope.parentRevisionAtBuild = null === (_a = scope.parentScope) || void 0 === _a ? void 0 : _a.revision,
74
- scope.revision += 1, scope.dirty = !1, scope;
54
+ scope.revision = revision, scope.dirty = !1, scope;
75
55
  }
76
56
 
77
57
  export function ensureSharedStateScopeFresh(scope) {
78
- var _a;
79
- if (scope) return null === (_a = getStageStatePerfMonitor(scope.ownerStage)) || void 0 === _a || _a.recordRefresh("ensureFreshCalls"),
80
- scope.parentScope && ensureSharedStateScopeFresh(scope.parentScope), (scope.dirty || scope.parentScope && scope.parentRevisionAtBuild !== scope.parentScope.revision) && rebuildSharedStateScope(scope),
58
+ if (scope) return scope.parentScope && ensureSharedStateScopeFresh(scope.parentScope),
59
+ (scope.dirty || scope.parentScope && scope.parentRevisionAtBuild !== scope.parentScope.revision) && rebuildSharedStateScope(scope),
81
60
  scope;
82
61
  }
83
62
 
@@ -1 +1 @@
1
- {"version":3,"sources":["../src/graphic/state/shared-state-scope.ts"],"names":[],"mappings":"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","file":"shared-state-scope.js","sourcesContent":["import type { IGraphic, IStage } from '../../interface';\nimport type { IGroup } from '../../interface/graphic/group';\nimport { StateDefinitionCompiler } from './state-definition-compiler';\nimport type { CompiledStateDefinition, StateDefinitionsInput } from './state-definition';\nimport { getStageStatePerfMonitor } from './state-perf-monitor';\n\nexport interface SharedStateScope<T extends Record<string, any> = Record<string, any>> {\n ownerKind: 'group' | 'root';\n ownerGroup?: IGroup;\n ownerStage?: IStage;\n parentScope?: SharedStateScope<T>;\n themeStateDefinitions?: StateDefinitionsInput<T>;\n localStateDefinitions?: StateDefinitionsInput<T>;\n effectiveSourceDefinitions: StateDefinitionsInput<T>;\n effectiveCompiledDefinitions: Map<string, CompiledStateDefinition<T>>;\n revision: number;\n parentRevisionAtBuild?: number;\n dirty: boolean;\n subtreeActiveDescendants: Set<IGraphic>;\n}\n\nconst compiler = new StateDefinitionCompiler<any>();\n\nfunction copyDefinitions<T extends Record<string, any>>(\n definitions?: StateDefinitionsInput<T>\n): StateDefinitionsInput<T> {\n return definitions ? ({ ...definitions } as StateDefinitionsInput<T>) : ({} as StateDefinitionsInput<T>);\n}\n\nfunction buildEffectiveSourceDefinitions<T extends Record<string, any>>(\n parentScope?: SharedStateScope<T>,\n localStateDefinitions?: StateDefinitionsInput<T>,\n themeStateDefinitions?: StateDefinitionsInput<T>\n): StateDefinitionsInput<T> {\n const merged = parentScope\n ? copyDefinitions(parentScope.effectiveSourceDefinitions)\n : copyDefinitions(themeStateDefinitions);\n\n if (localStateDefinitions) {\n Object.keys(localStateDefinitions).forEach(stateName => {\n merged[stateName] = localStateDefinitions[stateName];\n });\n }\n\n return merged;\n}\n\nfunction initializeScope<T extends Record<string, any>>(\n scope: SharedStateScope<T>,\n revision: number = 0\n): SharedStateScope<T> {\n const effectiveSourceDefinitions = buildEffectiveSourceDefinitions(\n scope.parentScope,\n scope.localStateDefinitions,\n scope.themeStateDefinitions\n );\n\n scope.effectiveSourceDefinitions = effectiveSourceDefinitions;\n scope.effectiveCompiledDefinitions = compiler.compile(effectiveSourceDefinitions);\n scope.parentRevisionAtBuild = scope.parentScope?.revision;\n scope.revision = revision;\n scope.dirty = false;\n\n return scope;\n}\n\nexport function createRootSharedStateScope<T extends Record<string, any> = Record<string, any>>(\n stage: IStage,\n themeStateDefinitions?: StateDefinitionsInput<T>\n): SharedStateScope<T> {\n return initializeScope(\n {\n ownerKind: 'root',\n ownerStage: stage,\n themeStateDefinitions,\n effectiveSourceDefinitions: {} as StateDefinitionsInput<T>,\n effectiveCompiledDefinitions: new Map(),\n revision: 0,\n dirty: false,\n subtreeActiveDescendants: new Set()\n },\n 0\n );\n}\n\nexport function createGroupSharedStateScope<T extends Record<string, any> = Record<string, any>>(\n group: IGroup,\n parentScope?: SharedStateScope<T>,\n localStateDefinitions?: StateDefinitionsInput<T>\n): SharedStateScope<T> {\n return initializeScope(\n {\n ownerKind: 'group',\n ownerGroup: group,\n ownerStage: group.stage,\n parentScope,\n localStateDefinitions,\n effectiveSourceDefinitions: {} as StateDefinitionsInput<T>,\n effectiveCompiledDefinitions: new Map(),\n revision: 0,\n dirty: false,\n subtreeActiveDescendants: new Set()\n },\n 0\n );\n}\n\nexport function setSharedStateScopeParent<T extends Record<string, any> = Record<string, any>>(\n scope: SharedStateScope<T>,\n parentScope?: SharedStateScope<T>\n): boolean {\n if (scope.parentScope === parentScope) {\n return false;\n }\n\n scope.parentScope = parentScope;\n scope.dirty = true;\n return true;\n}\n\nexport function setSharedStateScopeLocalDefinitions<T extends Record<string, any> = Record<string, any>>(\n scope: SharedStateScope<T>,\n localStateDefinitions?: StateDefinitionsInput<T>\n): boolean {\n if (scope.localStateDefinitions === localStateDefinitions) {\n return false;\n }\n\n scope.localStateDefinitions = localStateDefinitions;\n rebuildSharedStateScope(scope);\n return true;\n}\n\nexport function setRootSharedStateScopeThemeDefinitions<T extends Record<string, any> = Record<string, any>>(\n scope: SharedStateScope<T>,\n themeStateDefinitions?: StateDefinitionsInput<T>\n): boolean {\n if (scope.themeStateDefinitions === themeStateDefinitions) {\n return false;\n }\n\n scope.themeStateDefinitions = themeStateDefinitions;\n rebuildSharedStateScope(scope);\n return true;\n}\n\nexport function rebuildSharedStateScope<T extends Record<string, any> = Record<string, any>>(\n scope: SharedStateScope<T>\n): SharedStateScope<T> {\n const effectiveSourceDefinitions = buildEffectiveSourceDefinitions(\n scope.parentScope,\n scope.localStateDefinitions,\n scope.themeStateDefinitions\n );\n\n scope.effectiveSourceDefinitions = effectiveSourceDefinitions;\n scope.effectiveCompiledDefinitions = compiler.compile(effectiveSourceDefinitions);\n scope.parentRevisionAtBuild = scope.parentScope?.revision;\n scope.revision += 1;\n scope.dirty = false;\n\n return scope;\n}\n\nexport function ensureSharedStateScopeFresh<T extends Record<string, any> = Record<string, any>>(\n scope?: SharedStateScope<T>\n): SharedStateScope<T> | undefined {\n if (!scope) {\n return undefined;\n }\n\n getStageStatePerfMonitor(scope.ownerStage)?.recordRefresh('ensureFreshCalls');\n\n if (scope.parentScope) {\n ensureSharedStateScopeFresh(scope.parentScope);\n }\n\n if (scope.dirty || (scope.parentScope && scope.parentRevisionAtBuild !== scope.parentScope.revision)) {\n rebuildSharedStateScope(scope);\n }\n\n return scope;\n}\n\nexport function collectSharedStateScopeChain<T extends Record<string, any> = Record<string, any>>(\n scope?: SharedStateScope<T>\n): SharedStateScope<T>[] {\n const chain: SharedStateScope<T>[] = [];\n let current = scope;\n\n while (current) {\n chain.push(current);\n current = current.parentScope;\n }\n\n return chain;\n}\n"]}
1
+ {"version":3,"sources":["../src/graphic/state/shared-state-scope.ts"],"names":[],"mappings":"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","file":"shared-state-scope.js","sourcesContent":["import type { IGraphic, IStage } from '../../interface';\nimport { StateDefinitionCompiler } from './state-definition-compiler';\nimport type { CompiledStateDefinition, StateDefinitionsInput } from './state-definition';\n\nexport interface SharedStateScope<T extends Record<string, any> = Record<string, any>> {\n ownerStage?: IStage;\n parentScope?: SharedStateScope<T>;\n themeStateDefinitions?: StateDefinitionsInput<T>;\n localStateDefinitions?: StateDefinitionsInput<T>;\n effectiveSourceDefinitions: StateDefinitionsInput<T>;\n effectiveCompiledDefinitions: Map<string, CompiledStateDefinition<T>>;\n revision: number;\n parentRevisionAtBuild?: number;\n dirty: boolean;\n subtreeActiveDescendants: Set<IGraphic>;\n}\n\nconst compiler = new StateDefinitionCompiler<any>();\n\nfunction buildEffectiveSourceDefinitions<T extends Record<string, any>>(\n parentScope?: SharedStateScope<T>,\n localStateDefinitions?: StateDefinitionsInput<T>,\n themeStateDefinitions?: StateDefinitionsInput<T>\n): StateDefinitionsInput<T> {\n return Object.assign(\n {} as StateDefinitionsInput<T>,\n parentScope ? parentScope.effectiveSourceDefinitions : themeStateDefinitions,\n localStateDefinitions\n );\n}\n\nexport function createRootSharedStateScope<T extends Record<string, any> = Record<string, any>>(\n stage: IStage,\n themeStateDefinitions?: StateDefinitionsInput<T>\n): SharedStateScope<T> {\n return rebuildSharedStateScope(\n {\n ownerStage: stage,\n themeStateDefinitions,\n effectiveSourceDefinitions: {} as StateDefinitionsInput<T>,\n effectiveCompiledDefinitions: new Map(),\n revision: 0,\n dirty: false,\n subtreeActiveDescendants: new Set()\n },\n 0\n );\n}\n\nexport function createGroupSharedStateScope<T extends Record<string, any> = Record<string, any>>(\n group: IGraphic,\n parentScope?: SharedStateScope<T>,\n localStateDefinitions?: StateDefinitionsInput<T>\n): SharedStateScope<T> {\n return rebuildSharedStateScope(\n {\n ownerStage: group.stage,\n parentScope,\n localStateDefinitions,\n effectiveSourceDefinitions: {} as StateDefinitionsInput<T>,\n effectiveCompiledDefinitions: new Map(),\n revision: 0,\n dirty: false,\n subtreeActiveDescendants: new Set()\n },\n 0\n );\n}\n\nexport function setSharedStateScopeParent<T extends Record<string, any> = Record<string, any>>(\n scope: SharedStateScope<T>,\n parentScope?: SharedStateScope<T>\n): boolean {\n if (scope.parentScope === parentScope) {\n return false;\n }\n\n scope.parentScope = parentScope;\n scope.dirty = true;\n return true;\n}\n\nexport function setSharedStateScopeLocalDefinitions<T extends Record<string, any> = Record<string, any>>(\n scope: SharedStateScope<T>,\n localStateDefinitions?: StateDefinitionsInput<T>\n): boolean {\n if (scope.localStateDefinitions === localStateDefinitions) {\n return false;\n }\n\n scope.localStateDefinitions = localStateDefinitions;\n rebuildSharedStateScope(scope);\n return true;\n}\n\nexport function setRootSharedStateScopeThemeDefinitions<T extends Record<string, any> = Record<string, any>>(\n scope: SharedStateScope<T>,\n themeStateDefinitions?: StateDefinitionsInput<T>\n): boolean {\n if (scope.themeStateDefinitions === themeStateDefinitions) {\n return false;\n }\n\n scope.themeStateDefinitions = themeStateDefinitions;\n rebuildSharedStateScope(scope);\n return true;\n}\n\nexport function rebuildSharedStateScope<T extends Record<string, any> = Record<string, any>>(\n scope: SharedStateScope<T>,\n revision: number = scope.revision + 1\n): SharedStateScope<T> {\n const effectiveSourceDefinitions = buildEffectiveSourceDefinitions(\n scope.parentScope,\n scope.localStateDefinitions,\n scope.themeStateDefinitions\n );\n\n scope.effectiveSourceDefinitions = effectiveSourceDefinitions;\n scope.effectiveCompiledDefinitions = compiler.compile(effectiveSourceDefinitions);\n scope.parentRevisionAtBuild = scope.parentScope?.revision;\n scope.revision = revision;\n scope.dirty = false;\n\n return scope;\n}\n\nexport function ensureSharedStateScopeFresh<T extends Record<string, any> = Record<string, any>>(\n scope?: SharedStateScope<T>\n): SharedStateScope<T> | undefined {\n if (!scope) {\n return undefined;\n }\n\n if (scope.parentScope) {\n ensureSharedStateScopeFresh(scope.parentScope);\n }\n\n if (scope.dirty || (scope.parentScope && scope.parentRevisionAtBuild !== scope.parentScope.revision)) {\n rebuildSharedStateScope(scope);\n }\n\n return scope;\n}\n\nexport function collectSharedStateScopeChain<T extends Record<string, any> = Record<string, any>>(\n scope?: SharedStateScope<T>\n): SharedStateScope<T>[] {\n const chain: SharedStateScope<T>[] = [];\n let current = scope;\n\n while (current) {\n chain.push(current);\n current = current.parentScope;\n }\n\n return chain;\n}\n"]}
@@ -50,7 +50,6 @@ export class StateDefinitionCompiler {
50
50
  return {
51
51
  name: null !== (_a = definition.name) && void 0 !== _a ? _a : name,
52
52
  priority: null !== (_b = definition.priority) && void 0 !== _b ? _b : 0,
53
- rank: definition.rank,
54
53
  patch: normalizePatch(definition.patch),
55
54
  resolver: definition.resolver,
56
55
  declaredAffectedKeys: definition.declaredAffectedKeys,
@@ -69,14 +68,14 @@ export class StateDefinitionCompiler {
69
68
  compiled.forEach(((definition, name) => {
70
69
  rawRelationMap.set(name, new Set(definition[relation]));
71
70
  })), compiled.forEach(((definition, origin) => {
72
- const closure = new Set, walk = (stateName, stack) => {
71
+ const closure = new Set, walk = (stateName, visiting) => {
73
72
  const nextStates = rawRelationMap.get(stateName);
74
73
  nextStates && nextStates.size && nextStates.forEach((nextState => {
75
- nextState !== origin ? stack.includes(nextState) ? console.warn(`[StateDefinitionCompiler] circular ${relation} relation detected: ${stack.join(" -> ")} -> ${nextState}`) : closure.has(nextState) || (closure.add(nextState),
76
- walk(nextState, stack.concat(nextState))) : console.warn(`[StateDefinitionCompiler] circular ${relation} relation detected: ${stack.join(" -> ")} -> ${origin}`);
74
+ nextState === origin || visiting.has(nextState) || closure.has(nextState) || (closure.add(nextState),
75
+ visiting.add(nextState), walk(nextState, visiting), visiting.delete(nextState));
77
76
  }));
78
77
  };
79
- walk(origin, [ origin ]), definition[relation] = closure;
78
+ walk(origin, new Set([ origin ])), definition[relation] = closure;
80
79
  }));
81
80
  }
82
81
  }
@@ -1 +1 @@
1
- {"version":3,"sources":["../src/graphic/state/state-definition-compiler.ts"],"names":[],"mappings":"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","file":"state-definition-compiler.js","sourcesContent":["import type {\n CompiledStateDefinition,\n StateDefinition,\n StateDefinitionsInput,\n StateResolveContext\n} from './state-definition';\n\nconst FULL_DEFINITION_KEYS = new Set([\n 'name',\n 'patch',\n 'priority',\n 'exclude',\n 'suppress',\n 'resolver',\n 'declaredAffectedKeys'\n]);\n\nfunction isPlainObject(value: unknown): value is Record<string, any> {\n return value != null && typeof value === 'object' && !Array.isArray(value);\n}\n\nfunction normalizePatch<T extends Record<string, any>>(value: unknown): Partial<T> | undefined {\n return value == null ? undefined : (value as Partial<T>);\n}\n\nexport class StateDefinitionCompiler<T extends Record<string, any> = Record<string, any>> {\n compile(\n definitions: StateDefinitionsInput<T> = {} as StateDefinitionsInput<T>\n ): Map<string, CompiledStateDefinition<T>> {\n const normalizedEntries = Object.keys(definitions).map(name => {\n const normalized = this.normalizeDefinition(name, definitions[name]);\n return [name, normalized] as const;\n });\n\n const rankOrder = normalizedEntries\n .map(([, definition]) => definition)\n .sort((left, right) => {\n const leftPriority = left.priority ?? 0;\n const rightPriority = right.priority ?? 0;\n if (leftPriority !== rightPriority) {\n return leftPriority - rightPriority;\n }\n return left.name.localeCompare(right.name);\n });\n\n const rankMap = new Map<string, number>();\n rankOrder.forEach((definition, index) => {\n rankMap.set(definition.name, index);\n });\n\n const compiled = new Map<string, CompiledStateDefinition<T>>();\n normalizedEntries.forEach(([, definition]) => {\n const declaredAffectedKeys = definition.declaredAffectedKeys\n ? new Set(Array.from(definition.declaredAffectedKeys))\n : undefined;\n const staticAffectedKeys = definition.patch ? new Set(Object.keys(definition.patch)) : new Set<string>();\n const affectedKeys = new Set<string>(staticAffectedKeys);\n declaredAffectedKeys?.forEach(key => affectedKeys.add(key));\n\n compiled.set(definition.name, {\n name: definition.name,\n priority: definition.priority ?? 0,\n rank: rankMap.get(definition.name) ?? 0,\n patch: normalizePatch<T>(definition.patch),\n resolver: definition.resolver,\n declaredAffectedKeys,\n exclude: new Set(definition.exclude ?? []),\n suppress: new Set(definition.suppress ?? []),\n hasResolver: typeof definition.resolver === 'function',\n affectedKeys\n });\n });\n\n this.expandRelationClosure(compiled, 'exclude');\n this.expandRelationClosure(compiled, 'suppress');\n\n return compiled;\n }\n\n private normalizeDefinition(name: string, value: Partial<T> | StateDefinition<T> | undefined): StateDefinition<T> {\n if (value == null) {\n return {\n name,\n priority: 0,\n patch: undefined\n };\n }\n\n const keys = isPlainObject(value) ? Object.keys(value) : [];\n const hasFullKey = keys.some(key => FULL_DEFINITION_KEYS.has(key));\n if (hasFullKey) {\n const definition = value as StateDefinition<T>;\n return {\n name: definition.name ?? name,\n priority: definition.priority ?? 0,\n rank: definition.rank,\n patch: normalizePatch<T>(definition.patch),\n resolver: definition.resolver as ((ctx: StateResolveContext<T>) => Partial<T> | void) | undefined,\n declaredAffectedKeys: definition.declaredAffectedKeys,\n exclude: definition.exclude,\n suppress: definition.suppress\n };\n }\n\n return {\n name,\n priority: 0,\n patch: value as Partial<T>\n };\n }\n\n private expandRelationClosure(\n compiled: Map<string, CompiledStateDefinition<T>>,\n relation: 'exclude' | 'suppress'\n ): void {\n const rawRelationMap = new Map<string, Set<string>>();\n\n compiled.forEach((definition, name) => {\n rawRelationMap.set(name, new Set(definition[relation]));\n });\n\n compiled.forEach((definition, origin) => {\n const closure = new Set<string>();\n const walk = (stateName: string, stack: string[]) => {\n const nextStates = rawRelationMap.get(stateName);\n if (!nextStates || !nextStates.size) {\n return;\n }\n\n nextStates.forEach(nextState => {\n if (nextState === origin) {\n console.warn(\n `[StateDefinitionCompiler] circular ${relation} relation detected: ${stack.join(' -> ')} -> ${origin}`\n );\n return;\n }\n\n if (stack.includes(nextState)) {\n console.warn(\n `[StateDefinitionCompiler] circular ${relation} relation detected: ${stack.join(' -> ')} -> ${nextState}`\n );\n return;\n }\n\n if (closure.has(nextState)) {\n return;\n }\n\n closure.add(nextState);\n walk(nextState, stack.concat(nextState));\n });\n };\n\n walk(origin, [origin]);\n definition[relation] = closure;\n });\n }\n}\n"]}
1
+ {"version":3,"sources":["../src/graphic/state/state-definition-compiler.ts"],"names":[],"mappings":"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","file":"state-definition-compiler.js","sourcesContent":["import type {\n CompiledStateDefinition,\n StateDefinition,\n StateDefinitionsInput,\n StateResolveContext\n} from './state-definition';\n\nconst FULL_DEFINITION_KEYS = new Set([\n 'name',\n 'patch',\n 'priority',\n 'exclude',\n 'suppress',\n 'resolver',\n 'declaredAffectedKeys'\n]);\n\nfunction isPlainObject(value: unknown): value is Record<string, any> {\n return value != null && typeof value === 'object' && !Array.isArray(value);\n}\n\nfunction normalizePatch<T extends Record<string, any>>(value: unknown): Partial<T> | undefined {\n return value == null ? undefined : (value as Partial<T>);\n}\n\nexport class StateDefinitionCompiler<T extends Record<string, any> = Record<string, any>> {\n compile(\n definitions: StateDefinitionsInput<T> = {} as StateDefinitionsInput<T>\n ): Map<string, CompiledStateDefinition<T>> {\n const normalizedEntries = Object.keys(definitions).map(name => {\n const normalized = this.normalizeDefinition(name, definitions[name]);\n return [name, normalized] as const;\n });\n\n const rankOrder = normalizedEntries\n .map(([, definition]) => definition)\n .sort((left, right) => {\n const leftPriority = left.priority ?? 0;\n const rightPriority = right.priority ?? 0;\n if (leftPriority !== rightPriority) {\n return leftPriority - rightPriority;\n }\n return left.name.localeCompare(right.name);\n });\n\n const rankMap = new Map<string, number>();\n rankOrder.forEach((definition, index) => {\n rankMap.set(definition.name, index);\n });\n\n const compiled = new Map<string, CompiledStateDefinition<T>>();\n normalizedEntries.forEach(([, definition]) => {\n const declaredAffectedKeys = definition.declaredAffectedKeys\n ? new Set(Array.from(definition.declaredAffectedKeys))\n : undefined;\n const staticAffectedKeys = definition.patch ? new Set(Object.keys(definition.patch)) : new Set<string>();\n const affectedKeys = new Set<string>(staticAffectedKeys);\n declaredAffectedKeys?.forEach(key => affectedKeys.add(key));\n\n compiled.set(definition.name, {\n name: definition.name,\n priority: definition.priority ?? 0,\n rank: rankMap.get(definition.name) ?? 0,\n patch: normalizePatch<T>(definition.patch),\n resolver: definition.resolver,\n declaredAffectedKeys,\n exclude: new Set(definition.exclude ?? []),\n suppress: new Set(definition.suppress ?? []),\n hasResolver: typeof definition.resolver === 'function',\n affectedKeys\n });\n });\n\n this.expandRelationClosure(compiled, 'exclude');\n this.expandRelationClosure(compiled, 'suppress');\n\n return compiled;\n }\n\n private normalizeDefinition(name: string, value: Partial<T> | StateDefinition<T> | undefined): StateDefinition<T> {\n if (value == null) {\n return {\n name,\n priority: 0,\n patch: undefined\n };\n }\n\n const keys = isPlainObject(value) ? Object.keys(value) : [];\n const hasFullKey = keys.some(key => FULL_DEFINITION_KEYS.has(key));\n if (hasFullKey) {\n const definition = value as StateDefinition<T>;\n return {\n name: definition.name ?? name,\n priority: definition.priority ?? 0,\n patch: normalizePatch<T>(definition.patch),\n resolver: definition.resolver as ((ctx: StateResolveContext<T>) => Partial<T> | void) | undefined,\n declaredAffectedKeys: definition.declaredAffectedKeys,\n exclude: definition.exclude,\n suppress: definition.suppress\n };\n }\n\n return {\n name,\n priority: 0,\n patch: value as Partial<T>\n };\n }\n\n private expandRelationClosure(\n compiled: Map<string, CompiledStateDefinition<T>>,\n relation: 'exclude' | 'suppress'\n ): void {\n const rawRelationMap = new Map<string, Set<string>>();\n\n compiled.forEach((definition, name) => {\n rawRelationMap.set(name, new Set(definition[relation]));\n });\n\n compiled.forEach((definition, origin) => {\n const closure = new Set<string>();\n const walk = (stateName: string, visiting: Set<string>) => {\n const nextStates = rawRelationMap.get(stateName);\n if (!nextStates || !nextStates.size) {\n return;\n }\n\n nextStates.forEach(nextState => {\n if (nextState === origin || visiting.has(nextState) || closure.has(nextState)) {\n return;\n }\n\n closure.add(nextState);\n visiting.add(nextState);\n walk(nextState, visiting);\n visiting.delete(nextState);\n });\n };\n\n walk(origin, new Set([origin]));\n definition[relation] = closure;\n });\n }\n}\n"]}
@@ -1,13 +1,13 @@
1
1
  export interface StateDefinition<T extends Record<string, any> = Record<string, any>> {
2
2
  name: string;
3
3
  priority?: number;
4
- rank?: number;
5
4
  patch?: Partial<T>;
6
5
  resolver?: (ctx: StateResolveContext<T>) => Partial<T> | void;
7
6
  declaredAffectedKeys?: string[] | Set<string>;
8
7
  exclude?: string[];
9
8
  suppress?: string[];
10
9
  }
10
+ export type StateMergeMode = 'shallow' | 'deep';
11
11
  export interface CompiledStateDefinition<T extends Record<string, any> = Record<string, any>> {
12
12
  name: string;
13
13
  priority: number;
@@ -37,8 +37,5 @@ export type StateDefinitionsInput<T extends Record<string, any> = Record<string,
37
37
  export interface IStateEngineOptions<T extends Record<string, any> = Record<string, any>> {
38
38
  compiledDefinitions: Map<string, CompiledStateDefinition<T>>;
39
39
  stateSort?: (a: string, b: string) => number;
40
- stateProxy?: (stateName: string, targetStates?: string[]) => Partial<T> | undefined;
41
- stateProxyEligibility?: (stateName: string) => boolean;
42
- states?: StateDefinitionsInput<T>;
43
- mergeMode?: 'shallow' | 'deep';
40
+ mergeMode?: StateMergeMode;
44
41
  }
@@ -1 +1 @@
1
- {"version":3,"sources":["../src/graphic/state/state-definition.ts"],"names":[],"mappings":"","file":"state-definition.js","sourcesContent":["export interface StateDefinition<T extends Record<string, any> = Record<string, any>> {\n name: string;\n priority?: number;\n rank?: number;\n patch?: Partial<T>;\n resolver?: (ctx: StateResolveContext<T>) => Partial<T> | void;\n declaredAffectedKeys?: string[] | Set<string>;\n exclude?: string[];\n suppress?: string[];\n}\n\nexport interface CompiledStateDefinition<T extends Record<string, any> = Record<string, any>> {\n name: string;\n priority: number;\n rank: number;\n patch?: Partial<T>;\n resolver?: (ctx: StateResolveContext<T>) => Partial<T> | void;\n declaredAffectedKeys?: Set<string>;\n exclude: Set<string>;\n suppress: Set<string>;\n hasResolver: boolean;\n affectedKeys: Set<string>;\n}\n\nexport interface StateResolveContext<T extends Record<string, any> = Record<string, any>> {\n graphic: any;\n activeStates: ReadonlyArray<string>;\n effectiveStates: ReadonlyArray<string>;\n baseAttributes: Partial<T>;\n resolvedPatch: Partial<T>;\n}\n\nexport interface StateTransitionResult {\n changed: boolean;\n activeStates: string[];\n effectiveStates: string[];\n suppressed: string[];\n}\n\nexport type StateDefinitionsInput<T extends Record<string, any> = Record<string, any>> = Record<\n string,\n Partial<T> | StateDefinition<T>\n>;\n\nexport interface IStateEngineOptions<T extends Record<string, any> = Record<string, any>> {\n compiledDefinitions: Map<string, CompiledStateDefinition<T>>;\n stateSort?: (a: string, b: string) => number;\n stateProxy?: (stateName: string, targetStates?: string[]) => Partial<T> | undefined;\n stateProxyEligibility?: (stateName: string) => boolean;\n states?: StateDefinitionsInput<T>;\n mergeMode?: 'shallow' | 'deep';\n}\n"]}
1
+ {"version":3,"sources":["../src/graphic/state/state-definition.ts"],"names":[],"mappings":"","file":"state-definition.js","sourcesContent":["export interface StateDefinition<T extends Record<string, any> = Record<string, any>> {\n name: string;\n priority?: number;\n patch?: Partial<T>;\n resolver?: (ctx: StateResolveContext<T>) => Partial<T> | void;\n declaredAffectedKeys?: string[] | Set<string>;\n exclude?: string[];\n suppress?: string[];\n}\n\nexport type StateMergeMode = 'shallow' | 'deep';\n\nexport interface CompiledStateDefinition<T extends Record<string, any> = Record<string, any>> {\n name: string;\n priority: number;\n rank: number;\n patch?: Partial<T>;\n resolver?: (ctx: StateResolveContext<T>) => Partial<T> | void;\n declaredAffectedKeys?: Set<string>;\n exclude: Set<string>;\n suppress: Set<string>;\n hasResolver: boolean;\n affectedKeys: Set<string>;\n}\n\nexport interface StateResolveContext<T extends Record<string, any> = Record<string, any>> {\n graphic: any;\n activeStates: ReadonlyArray<string>;\n effectiveStates: ReadonlyArray<string>;\n baseAttributes: Partial<T>;\n resolvedPatch: Partial<T>;\n}\n\nexport interface StateTransitionResult {\n changed: boolean;\n activeStates: string[];\n effectiveStates: string[];\n suppressed: string[];\n}\n\nexport type StateDefinitionsInput<T extends Record<string, any> = Record<string, any>> = Record<\n string,\n Partial<T> | StateDefinition<T>\n>;\n\nexport interface IStateEngineOptions<T extends Record<string, any> = Record<string, any>> {\n compiledDefinitions: Map<string, CompiledStateDefinition<T>>;\n stateSort?: (a: string, b: string) => number;\n mergeMode?: StateMergeMode;\n}\n"]}
@@ -2,9 +2,6 @@ import type { IStateEngineOptions, StateTransitionResult } from './state-definit
2
2
  export declare class StateEngine<T extends Record<string, any> = Record<string, any>> {
3
3
  private readonly compiledDefinitions;
4
4
  private readonly stateSort?;
5
- private readonly stateProxy?;
6
- private readonly stateProxyEligibility?;
7
- private readonly states?;
8
5
  private readonly mergeMode;
9
6
  private _activeStates;
10
7
  private _effectiveStates;
@@ -28,11 +25,9 @@ export declare class StateEngine<T extends Record<string, any> = Record<string,
28
25
  clearStates(): StateTransitionResult;
29
26
  invalidateResolverCache(): void;
30
27
  hasState(stateName?: string): boolean;
31
- getCompatPatch(stateName: string): Partial<T> | undefined;
32
28
  private sortStates;
33
29
  private adjudicate;
34
30
  private recomputePatch;
35
31
  private mergeInto;
36
32
  private sameArray;
37
- private canUseStateProxy;
38
33
  }
@@ -1,5 +1,3 @@
1
- import { getStageStatePerfMonitor } from "./state-perf-monitor";
2
-
3
1
  function isPlainObject(value) {
4
2
  return null != value && "object" == typeof value && !Array.isArray(value);
5
3
  }
@@ -21,16 +19,13 @@ function deepMerge(base, value) {
21
19
  })), result;
22
20
  }
23
21
 
24
- const FULL_DEFINITION_KEYS = new Set([ "name", "patch", "priority", "exclude", "suppress", "resolver", "declaredAffectedKeys" ]);
25
-
26
22
  export class StateEngine {
27
23
  constructor(options) {
28
24
  var _a;
29
25
  this._activeStates = [], this._effectiveStates = [], this._suppressed = [], this._resolvedPatch = {},
30
26
  this.resolverPatchCache = new Map, this.resolverCacheKey = "", this.resolverCacheValid = !1,
31
27
  this.baseAttributes = {}, this.compiledDefinitions = options.compiledDefinitions,
32
- this.stateSort = options.stateSort, this.stateProxy = options.stateProxy, this.stateProxyEligibility = options.stateProxyEligibility,
33
- this.states = options.states, this.mergeMode = null !== (_a = options.mergeMode) && void 0 !== _a ? _a : "shallow";
28
+ this.stateSort = options.stateSort, this.mergeMode = null !== (_a = options.mergeMode) && void 0 !== _a ? _a : "shallow";
34
29
  }
35
30
  get activeStates() {
36
31
  return this._activeStates;
@@ -45,6 +40,7 @@ export class StateEngine {
45
40
  return this._suppressed;
46
41
  }
47
42
  setResolveContext(graphic, baseAttributes) {
43
+ this.graphic === graphic && this.baseAttributes === baseAttributes || this.invalidateResolverCache(),
48
44
  this.graphic = graphic, this.baseAttributes = baseAttributes;
49
45
  }
50
46
  applyStates(stateNames) {
@@ -98,22 +94,11 @@ export class StateEngine {
98
94
  };
99
95
  }
100
96
  invalidateResolverCache() {
101
- var _a, _b;
102
- this.resolverPatchCache.clear(), this.resolverCacheKey = "", this.resolverCacheValid = !1,
103
- null === (_b = getStageStatePerfMonitor(null === (_a = this.graphic) || void 0 === _a ? void 0 : _a.stage)) || void 0 === _b || _b.recordResolver("invalidations");
97
+ this.resolverPatchCache.clear(), this.resolverCacheKey = "", this.resolverCacheValid = !1;
104
98
  }
105
99
  hasState(stateName) {
106
100
  return !!this._activeStates.length && (null == stateName || this._activeStates.includes(stateName));
107
101
  }
108
- getCompatPatch(stateName) {
109
- var _a, _b, _c;
110
- const targetStates = this._activeStates.length ? this._activeStates : this._effectiveStates, canUseStateProxy = this.canUseStateProxy(stateName), proxyPatch = canUseStateProxy ? null === (_a = this.stateProxy) || void 0 === _a ? void 0 : _a.call(this, stateName, targetStates) : void 0;
111
- if (this.stateProxy && canUseStateProxy) return null != proxyPatch ? proxyPatch : void 0;
112
- const value = null === (_b = this.states) || void 0 === _b ? void 0 : _b[stateName];
113
- if (null == value) return;
114
- if (!isPlainObject(value)) return value;
115
- return Object.keys(value).some((key => FULL_DEFINITION_KEYS.has(key))) ? cloneValue(null !== (_c = value.patch) && void 0 !== _c ? _c : void 0) : value;
116
- }
117
102
  sortStates(states) {
118
103
  const withDefinition = [], withoutDefinition = [];
119
104
  return states.forEach((stateName => {
@@ -141,55 +126,24 @@ export class StateEngine {
141
126
  };
142
127
  }
143
128
  recomputePatch(effectiveStates) {
144
- var _a;
145
- const perfMonitor = getStageStatePerfMonitor(null === (_a = this.graphic) || void 0 === _a ? void 0 : _a.stage), patchStart = perfMonitor ? performance.now() : 0;
146
- let resolverCost = 0;
147
- const cacheKey = effectiveStates.join(","), nextPatch = {};
148
- if (null == perfMonitor || perfMonitor.recordAllocation("patchObjectsCreated"),
149
- this.resolverCacheValid && this.resolverCacheKey === cacheKey ? effectiveStates.forEach((stateName => {
129
+ const cacheKey = effectiveStates.join(","), nextPatch = {}, useResolverCache = this.resolverCacheValid && this.resolverCacheKey === cacheKey;
130
+ useResolverCache || (this.resolverPatchCache.clear(), this.resolverCacheKey = cacheKey),
131
+ effectiveStates.forEach((stateName => {
150
132
  var _a;
151
- const canUseStateProxy = this.canUseStateProxy(stateName), proxyPatch = canUseStateProxy ? null === (_a = this.stateProxy) || void 0 === _a ? void 0 : _a.call(this, stateName, effectiveStates) : void 0;
152
- if (this.stateProxy && canUseStateProxy) return void (null != proxyPatch && this.mergeInto(nextPatch, proxyPatch));
153
133
  const definition = this.compiledDefinitions.get(stateName);
154
- if (definition) {
155
- if (definition.patch && this.mergeInto(nextPatch, definition.patch), definition.hasResolver) {
156
- const cachedPatch = this.resolverPatchCache.get(stateName);
157
- cachedPatch && (null == perfMonitor || perfMonitor.recordResolver("cacheHits"),
158
- this.mergeInto(nextPatch, cachedPatch));
159
- }
160
- } else {
161
- const compatPatch = this.getCompatPatch(stateName);
162
- compatPatch && this.mergeInto(nextPatch, compatPatch);
134
+ if (definition && (definition.patch && this.mergeInto(nextPatch, definition.patch),
135
+ definition.hasResolver)) {
136
+ const resolverPatch = useResolverCache ? this.resolverPatchCache.get(stateName) : null === (_a = definition.resolver) || void 0 === _a ? void 0 : _a.call(definition, {
137
+ graphic: this.graphic,
138
+ activeStates: this._activeStates,
139
+ effectiveStates: this._effectiveStates,
140
+ baseAttributes: this.baseAttributes,
141
+ resolvedPatch: nextPatch
142
+ });
143
+ resolverPatch && (useResolverCache || this.resolverPatchCache.set(stateName, resolverPatch),
144
+ this.mergeInto(nextPatch, resolverPatch));
163
145
  }
164
- })) : (this.resolverPatchCache.clear(), this.resolverCacheKey = cacheKey, effectiveStates.forEach((stateName => {
165
- var _a;
166
- const canUseStateProxy = this.canUseStateProxy(stateName), proxyPatch = canUseStateProxy ? null === (_a = this.stateProxy) || void 0 === _a ? void 0 : _a.call(this, stateName, effectiveStates) : void 0;
167
- if (this.stateProxy && canUseStateProxy) return void (null != proxyPatch && this.mergeInto(nextPatch, proxyPatch));
168
- const definition = this.compiledDefinitions.get(stateName);
169
- if (definition) {
170
- if (definition.patch && this.mergeInto(nextPatch, definition.patch), definition.hasResolver && definition.resolver) {
171
- null == perfMonitor || perfMonitor.recordResolver("cacheMisses");
172
- const resolverStart = perfMonitor ? performance.now() : 0, resolverPatch = definition.resolver({
173
- graphic: this.graphic,
174
- activeStates: this._activeStates,
175
- effectiveStates: this._effectiveStates,
176
- baseAttributes: this.baseAttributes,
177
- resolvedPatch: nextPatch
178
- });
179
- if (perfMonitor) {
180
- const duration = performance.now() - resolverStart;
181
- resolverCost += duration, perfMonitor.recordCost("resolver", duration);
182
- }
183
- resolverPatch && (this.resolverPatchCache.set(stateName, resolverPatch), this.mergeInto(nextPatch, resolverPatch));
184
- }
185
- } else {
186
- const compatPatch = this.getCompatPatch(stateName);
187
- compatPatch && this.mergeInto(nextPatch, compatPatch);
188
- }
189
- })), this.resolverCacheValid = !0), this._resolvedPatch = nextPatch, perfMonitor) {
190
- const totalCost = performance.now() - patchStart;
191
- perfMonitor.recordCost("patch", Math.max(0, totalCost - resolverCost));
192
- }
146
+ })), useResolverCache || (this.resolverCacheValid = !0), this._resolvedPatch = nextPatch;
193
147
  }
194
148
  mergeInto(target, patch) {
195
149
  "deep" !== this.mergeMode ? Object.keys(patch).forEach((key => {
@@ -205,8 +159,5 @@ export class StateEngine {
205
159
  for (let index = 0; index < left.length; index++) if (left[index] !== right[index]) return !1;
206
160
  return !0;
207
161
  }
208
- canUseStateProxy(stateName) {
209
- return !!this.stateProxy && (!this.stateProxyEligibility || this.stateProxyEligibility(stateName));
210
- }
211
162
  }
212
163
  //# sourceMappingURL=state-engine.js.map