@visactor/vrender-core 1.1.0-alpha.24 → 1.1.0-alpha.26

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 (404) hide show
  1. package/cjs/common/event-listener-manager.js +1 -2
  2. package/cjs/common/event-transformer.js +2 -1
  3. package/cjs/common/performance-raf.js +1 -1
  4. package/cjs/common/xml/is-xml.d.ts +2 -0
  5. package/cjs/common/xml/is-xml.js +14 -0
  6. package/cjs/common/xml/is-xml.js.map +1 -0
  7. package/cjs/common/xml/parser.d.ts +2 -2
  8. package/cjs/common/xml/parser.js +14 -11
  9. package/cjs/common/xml/parser.js.map +1 -1
  10. package/cjs/container.d.ts +2 -0
  11. package/cjs/container.js +50 -0
  12. package/cjs/container.js.map +1 -0
  13. package/cjs/core/graphic-utils.js +1 -2
  14. package/cjs/core/layer-service.js +2 -1
  15. package/cjs/core/stage.d.ts +0 -9
  16. package/cjs/core/stage.js +11 -29
  17. package/cjs/core/stage.js.map +1 -1
  18. package/cjs/entries/miniapp.d.ts +0 -1
  19. package/cjs/entries/miniapp.js +1 -5
  20. package/cjs/entries/miniapp.js.map +1 -1
  21. package/cjs/entries/node.d.ts +0 -1
  22. package/cjs/entries/node.js +1 -5
  23. package/cjs/entries/node.js.map +1 -1
  24. package/cjs/env.d.ts +1 -0
  25. package/cjs/env.js +25 -0
  26. package/cjs/env.js.map +1 -0
  27. package/cjs/event/public-constant.d.ts +7 -0
  28. package/cjs/event/public-constant.js +100 -0
  29. package/cjs/event/public-constant.js.map +1 -0
  30. package/cjs/event/util.d.ts +1 -1
  31. package/cjs/graphic/base.d.ts +2 -0
  32. package/cjs/graphic/base.js +15 -0
  33. package/cjs/graphic/base.js.map +1 -0
  34. package/cjs/graphic/creator.d.ts +16 -0
  35. package/cjs/graphic/creator.js +160 -0
  36. package/cjs/graphic/creator.js.map +1 -0
  37. package/cjs/graphic/glyph.js +4 -8
  38. package/cjs/graphic/glyph.js.map +1 -1
  39. package/cjs/graphic/graphic-service/graphic-service.d.ts +0 -1
  40. package/cjs/graphic/graphic-service/graphic-service.js +1 -8
  41. package/cjs/graphic/graphic-service/graphic-service.js.map +1 -1
  42. package/cjs/graphic/graphic.d.ts +19 -29
  43. package/cjs/graphic/graphic.js +123 -201
  44. package/cjs/graphic/graphic.js.map +1 -1
  45. package/cjs/graphic/group.d.ts +1 -3
  46. package/cjs/graphic/group.js +22 -28
  47. package/cjs/graphic/group.js.map +1 -1
  48. package/cjs/graphic/modules.d.ts +16 -0
  49. package/cjs/graphic/modules.js +150 -0
  50. package/cjs/graphic/modules.js.map +1 -0
  51. package/cjs/graphic/node-tree.d.ts +3 -3
  52. package/cjs/graphic/node-tree.js +1 -0
  53. package/cjs/graphic/node-tree.js.map +1 -1
  54. package/cjs/graphic/state/shared-state-refresh.js +11 -32
  55. package/cjs/graphic/state/shared-state-refresh.js.map +1 -1
  56. package/cjs/graphic/state/shared-state-scope.d.ts +2 -5
  57. package/cjs/graphic/state/shared-state-scope.js +8 -27
  58. package/cjs/graphic/state/shared-state-scope.js.map +1 -1
  59. package/cjs/graphic/state/state-definition-compiler.js +4 -5
  60. package/cjs/graphic/state/state-definition-compiler.js.map +1 -1
  61. package/cjs/graphic/state/state-definition.d.ts +2 -5
  62. package/cjs/graphic/state/state-definition.js.map +1 -1
  63. package/cjs/graphic/state/state-engine.d.ts +0 -5
  64. package/cjs/graphic/state/state-engine.js +20 -70
  65. package/cjs/graphic/state/state-engine.js.map +1 -1
  66. package/cjs/graphic/state/state-transition-orchestrator.d.ts +7 -9
  67. package/cjs/graphic/state/state-transition-orchestrator.js +10 -13
  68. package/cjs/graphic/state/state-transition-orchestrator.js.map +1 -1
  69. package/cjs/graphic/tools.js +3 -3
  70. package/cjs/graphic/tools.js.map +1 -1
  71. package/cjs/index.js.map +1 -1
  72. package/cjs/interface/graphic/group.d.ts +0 -2
  73. package/cjs/interface/graphic/group.js.map +1 -1
  74. package/cjs/interface/graphic.d.ts +1 -5
  75. package/cjs/interface/graphic.js.map +1 -1
  76. package/cjs/interface/index.js.map +1 -1
  77. package/cjs/interface/node-tree.d.ts +3 -0
  78. package/cjs/interface/node-tree.js.map +1 -1
  79. package/cjs/interface/stage.d.ts +0 -7
  80. package/cjs/interface/stage.js.map +1 -1
  81. package/cjs/interpolate.d.ts +2 -0
  82. package/cjs/interpolate.js +34 -0
  83. package/cjs/interpolate.js.map +1 -0
  84. package/cjs/modules.js.map +1 -1
  85. package/cjs/path.d.ts +4 -0
  86. package/cjs/path.js +33 -0
  87. package/cjs/path.js.map +1 -0
  88. package/cjs/plugin/3d.d.ts +3 -0
  89. package/cjs/plugin/3d.js +33 -0
  90. package/cjs/plugin/3d.js.map +1 -0
  91. package/cjs/plugin/attribute.d.ts +2 -0
  92. package/cjs/plugin/attribute.js +24 -0
  93. package/cjs/plugin/attribute.js.map +1 -0
  94. package/cjs/plugin/flex-layout.d.ts +1 -0
  95. package/cjs/plugin/flex-layout.js +15 -0
  96. package/cjs/plugin/flex-layout.js.map +1 -0
  97. package/cjs/plugins/builtin-plugin/dirty-bounds-plugin.js +8 -8
  98. package/cjs/plugins/builtin-plugin/dirty-bounds-plugin.js.map +1 -1
  99. package/cjs/plugins/index.d.ts +0 -4
  100. package/cjs/plugins/index.js +1 -3
  101. package/cjs/plugins/index.js.map +1 -1
  102. package/cjs/plugins/plugin-service.d.ts +0 -1
  103. package/cjs/plugins/plugin-service.js +2 -3
  104. package/cjs/plugins/plugin-service.js.map +1 -1
  105. package/cjs/plugins/types.d.ts +1 -8
  106. package/cjs/plugins/types.js.map +1 -1
  107. package/cjs/register/graphic.d.ts +19 -0
  108. package/cjs/register/graphic.js +177 -0
  109. package/cjs/register/graphic.js.map +1 -0
  110. package/cjs/registry/contribution-registry.d.ts +0 -1
  111. package/cjs/registry/contribution-registry.js +0 -3
  112. package/cjs/registry/contribution-registry.js.map +1 -1
  113. package/cjs/registry/picker-registry.d.ts +0 -1
  114. package/cjs/registry/picker-registry.js +0 -3
  115. package/cjs/registry/picker-registry.js.map +1 -1
  116. package/cjs/registry/renderer-registry.d.ts +0 -1
  117. package/cjs/registry/renderer-registry.js +0 -3
  118. package/cjs/registry/renderer-registry.js.map +1 -1
  119. package/cjs/registry/types.d.ts +0 -3
  120. package/cjs/registry/types.js.map +1 -1
  121. package/cjs/svg.d.ts +1 -0
  122. package/cjs/svg.js +15 -0
  123. package/cjs/svg.js.map +1 -0
  124. package/cjs/text.d.ts +2 -0
  125. package/cjs/text.js +29 -0
  126. package/cjs/text.js.map +1 -0
  127. package/dist/index.es.js +897 -2213
  128. package/es/common/event-listener-manager.js +1 -2
  129. package/es/common/event-transformer.js +2 -1
  130. package/es/common/performance-raf.js +1 -1
  131. package/es/common/xml/is-xml.d.ts +2 -0
  132. package/es/common/xml/is-xml.js +8 -0
  133. package/es/common/xml/is-xml.js.map +1 -0
  134. package/es/common/xml/parser.d.ts +2 -2
  135. package/es/common/xml/parser.js +3 -7
  136. package/es/common/xml/parser.js.map +1 -1
  137. package/es/container.d.ts +2 -0
  138. package/es/container.js +2 -0
  139. package/es/container.js.map +1 -0
  140. package/es/core/graphic-utils.js +1 -2
  141. package/es/core/layer-service.js +2 -1
  142. package/es/core/stage.d.ts +0 -9
  143. package/es/core/stage.js +9 -30
  144. package/es/core/stage.js.map +1 -1
  145. package/es/entries/miniapp.d.ts +0 -1
  146. package/es/entries/miniapp.js +1 -5
  147. package/es/entries/miniapp.js.map +1 -1
  148. package/es/entries/node.d.ts +0 -1
  149. package/es/entries/node.js +1 -5
  150. package/es/entries/node.js.map +1 -1
  151. package/es/env.d.ts +1 -0
  152. package/es/env.js +2 -0
  153. package/es/env.js.map +1 -0
  154. package/es/event/public-constant.d.ts +7 -0
  155. package/es/event/public-constant.js +12 -0
  156. package/es/event/public-constant.js.map +1 -0
  157. package/es/event/util.d.ts +1 -1
  158. package/es/graphic/base.d.ts +2 -0
  159. package/es/graphic/base.js +2 -0
  160. package/es/graphic/base.js.map +1 -0
  161. package/es/graphic/creator.d.ts +16 -0
  162. package/es/graphic/creator.js +32 -0
  163. package/es/graphic/creator.js.map +1 -0
  164. package/es/graphic/glyph.js +4 -8
  165. package/es/graphic/glyph.js.map +1 -1
  166. package/es/graphic/graphic-service/graphic-service.d.ts +0 -1
  167. package/es/graphic/graphic-service/graphic-service.js +0 -10
  168. package/es/graphic/graphic-service/graphic-service.js.map +1 -1
  169. package/es/graphic/graphic.d.ts +19 -29
  170. package/es/graphic/graphic.js +123 -207
  171. package/es/graphic/graphic.js.map +1 -1
  172. package/es/graphic/group.d.ts +1 -3
  173. package/es/graphic/group.js +22 -28
  174. package/es/graphic/group.js.map +1 -1
  175. package/es/graphic/modules.d.ts +16 -0
  176. package/es/graphic/modules.js +32 -0
  177. package/es/graphic/modules.js.map +1 -0
  178. package/es/graphic/node-tree.d.ts +3 -3
  179. package/es/graphic/node-tree.js +1 -0
  180. package/es/graphic/node-tree.js.map +1 -1
  181. package/es/graphic/state/shared-state-refresh.js +8 -28
  182. package/es/graphic/state/shared-state-refresh.js.map +1 -1
  183. package/es/graphic/state/shared-state-scope.d.ts +2 -5
  184. package/es/graphic/state/shared-state-scope.js +7 -28
  185. package/es/graphic/state/shared-state-scope.js.map +1 -1
  186. package/es/graphic/state/state-definition-compiler.js +4 -5
  187. package/es/graphic/state/state-definition-compiler.js.map +1 -1
  188. package/es/graphic/state/state-definition.d.ts +2 -5
  189. package/es/graphic/state/state-definition.js.map +1 -1
  190. package/es/graphic/state/state-engine.d.ts +0 -5
  191. package/es/graphic/state/state-engine.js +17 -67
  192. package/es/graphic/state/state-engine.js.map +1 -1
  193. package/es/graphic/state/state-transition-orchestrator.d.ts +7 -9
  194. package/es/graphic/state/state-transition-orchestrator.js +10 -13
  195. package/es/graphic/state/state-transition-orchestrator.js.map +1 -1
  196. package/es/graphic/tools.js +3 -3
  197. package/es/graphic/tools.js.map +1 -1
  198. package/es/index.js.map +1 -1
  199. package/es/interface/graphic/group.d.ts +0 -2
  200. package/es/interface/graphic/group.js.map +1 -1
  201. package/es/interface/graphic.d.ts +1 -5
  202. package/es/interface/graphic.js.map +1 -1
  203. package/es/interface/index.js.map +1 -1
  204. package/es/interface/node-tree.d.ts +3 -0
  205. package/es/interface/node-tree.js.map +1 -1
  206. package/es/interface/stage.d.ts +0 -7
  207. package/es/interface/stage.js.map +1 -1
  208. package/es/interpolate.d.ts +2 -0
  209. package/es/interpolate.js +4 -0
  210. package/es/interpolate.js.map +1 -0
  211. package/es/modules.js.map +1 -1
  212. package/es/path.d.ts +4 -0
  213. package/es/path.js +6 -0
  214. package/es/path.js.map +1 -0
  215. package/es/plugin/3d.d.ts +3 -0
  216. package/es/plugin/3d.js +6 -0
  217. package/es/plugin/3d.js.map +1 -0
  218. package/es/plugin/attribute.d.ts +2 -0
  219. package/es/plugin/attribute.js +4 -0
  220. package/es/plugin/attribute.js.map +1 -0
  221. package/es/plugin/flex-layout.d.ts +1 -0
  222. package/es/plugin/flex-layout.js +2 -0
  223. package/es/plugin/flex-layout.js.map +1 -0
  224. package/es/plugins/builtin-plugin/dirty-bounds-plugin.js +8 -8
  225. package/es/plugins/builtin-plugin/dirty-bounds-plugin.js.map +1 -1
  226. package/es/plugins/index.d.ts +0 -4
  227. package/es/plugins/index.js +0 -8
  228. package/es/plugins/index.js.map +1 -1
  229. package/es/plugins/plugin-service.d.ts +0 -1
  230. package/es/plugins/plugin-service.js +2 -3
  231. package/es/plugins/plugin-service.js.map +1 -1
  232. package/es/plugins/types.d.ts +1 -8
  233. package/es/plugins/types.js.map +1 -1
  234. package/es/register/graphic.d.ts +19 -0
  235. package/es/register/graphic.js +38 -0
  236. package/es/register/graphic.js.map +1 -0
  237. package/es/registry/contribution-registry.d.ts +0 -1
  238. package/es/registry/contribution-registry.js +0 -3
  239. package/es/registry/contribution-registry.js.map +1 -1
  240. package/es/registry/picker-registry.d.ts +0 -1
  241. package/es/registry/picker-registry.js +0 -3
  242. package/es/registry/picker-registry.js.map +1 -1
  243. package/es/registry/renderer-registry.d.ts +0 -1
  244. package/es/registry/renderer-registry.js +0 -3
  245. package/es/registry/renderer-registry.js.map +1 -1
  246. package/es/registry/types.d.ts +0 -3
  247. package/es/registry/types.js.map +1 -1
  248. package/es/svg.d.ts +1 -0
  249. package/es/svg.js +2 -0
  250. package/es/svg.js.map +1 -0
  251. package/es/text.d.ts +2 -0
  252. package/es/text.js +4 -0
  253. package/es/text.js.map +1 -0
  254. package/package.json +245 -1
  255. package/cjs/allocator/constants.d.ts +0 -9
  256. package/cjs/allocator/constants.js +0 -11
  257. package/cjs/allocator/constants.js.map +0 -1
  258. package/cjs/common/Reflect-metadata.d.ts +0 -2
  259. package/cjs/common/Reflect-metadata.js +0 -182
  260. package/cjs/common/Reflect-metadata.js.map +0 -1
  261. package/cjs/common/segment/curve/arc.d.ts +0 -17
  262. package/cjs/common/segment/curve/arc.js +0 -38
  263. package/cjs/common/segment/curve/arc.js.map +0 -1
  264. package/cjs/common/segment/curve/ellipse.d.ts +0 -21
  265. package/cjs/common/segment/curve/ellipse.js +0 -39
  266. package/cjs/common/segment/curve/ellipse.js.map +0 -1
  267. package/cjs/common/segment/curve/move.d.ts +0 -16
  268. package/cjs/common/segment/curve/move.js +0 -37
  269. package/cjs/common/segment/curve/move.js.map +0 -1
  270. package/cjs/common/store.d.ts +0 -2
  271. package/cjs/common/store.js +0 -2
  272. package/cjs/common/store.js.map +0 -1
  273. package/cjs/core/application.d.ts +0 -1
  274. package/cjs/core/application.js +0 -6
  275. package/cjs/core/application.js.map +0 -1
  276. package/cjs/core/global-module.d.ts +0 -1
  277. package/cjs/core/global-module.js +0 -1
  278. package/cjs/core/global-module.js.map +0 -1
  279. package/cjs/export.d.ts +0 -1
  280. package/cjs/export.js +0 -1
  281. package/cjs/export.js.map +0 -1
  282. package/cjs/graphic/state/state-batch-scheduler.d.ts +0 -42
  283. package/cjs/graphic/state/state-batch-scheduler.js +0 -285
  284. package/cjs/graphic/state/state-batch-scheduler.js.map +0 -1
  285. package/cjs/graphic/state/state-model.d.ts +0 -43
  286. package/cjs/graphic/state/state-model.js +0 -143
  287. package/cjs/graphic/state/state-model.js.map +0 -1
  288. package/cjs/graphic/state/state-perf-monitor.d.ts +0 -120
  289. package/cjs/graphic/state/state-perf-monitor.js +0 -224
  290. package/cjs/graphic/state/state-perf-monitor.js.map +0 -1
  291. package/cjs/graphic/state/state-style-resolver.d.ts +0 -13
  292. package/cjs/graphic/state/state-style-resolver.js +0 -50
  293. package/cjs/graphic/state/state-style-resolver.js.map +0 -1
  294. package/cjs/interface/animate.d.ts +0 -1
  295. package/cjs/interface/animate.js +0 -3
  296. package/cjs/interface/animate.js.map +0 -1
  297. package/cjs/interface/creator.d.ts +0 -4
  298. package/cjs/interface/creator.js +0 -6
  299. package/cjs/interface/creator.js.map +0 -1
  300. package/cjs/interface/graphic/dynamic-path.d.ts +0 -1
  301. package/cjs/interface/graphic/dynamic-path.js +0 -3
  302. package/cjs/interface/graphic/dynamic-path.js.map +0 -1
  303. package/cjs/interface/graphic-utils.d.ts +0 -1
  304. package/cjs/interface/graphic-utils.js +0 -3
  305. package/cjs/interface/graphic-utils.js.map +0 -1
  306. package/cjs/interface/theme-service.d.ts +0 -1
  307. package/cjs/interface/theme-service.js +0 -3
  308. package/cjs/interface/theme-service.js.map +0 -1
  309. package/cjs/plugins/base-plugin.d.ts +0 -8
  310. package/cjs/plugins/base-plugin.js +0 -15
  311. package/cjs/plugins/base-plugin.js.map +0 -1
  312. package/cjs/plugins/browser-env-plugin.d.ts +0 -8
  313. package/cjs/plugins/browser-env-plugin.js +0 -24
  314. package/cjs/plugins/browser-env-plugin.js.map +0 -1
  315. package/cjs/plugins/builtin-plugin/poptip-plugin.d.ts +0 -1
  316. package/cjs/plugins/builtin-plugin/poptip-plugin.js +0 -3
  317. package/cjs/plugins/builtin-plugin/poptip-plugin.js.map +0 -1
  318. package/cjs/plugins/picker-plugin.d.ts +0 -7
  319. package/cjs/plugins/picker-plugin.js +0 -19
  320. package/cjs/plugins/picker-plugin.js.map +0 -1
  321. package/cjs/plugins/renderer-plugin.d.ts +0 -7
  322. package/cjs/plugins/renderer-plugin.js +0 -19
  323. package/cjs/plugins/renderer-plugin.js.map +0 -1
  324. package/cjs/render/contributions/render/clear-screen.d.ts +0 -1
  325. package/cjs/render/contributions/render/clear-screen.js +0 -3
  326. package/cjs/render/contributions/render/clear-screen.js.map +0 -1
  327. package/cjs/render/contributions/render/render-slector.d.ts +0 -1
  328. package/cjs/render/contributions/render/render-slector.js +0 -3
  329. package/cjs/render/contributions/render/render-slector.js.map +0 -1
  330. package/es/allocator/constants.d.ts +0 -9
  331. package/es/allocator/constants.js +0 -18
  332. package/es/allocator/constants.js.map +0 -1
  333. package/es/common/Reflect-metadata.d.ts +0 -2
  334. package/es/common/Reflect-metadata.js +0 -178
  335. package/es/common/Reflect-metadata.js.map +0 -1
  336. package/es/common/segment/curve/arc.d.ts +0 -17
  337. package/es/common/segment/curve/arc.js +0 -31
  338. package/es/common/segment/curve/arc.js.map +0 -1
  339. package/es/common/segment/curve/ellipse.d.ts +0 -21
  340. package/es/common/segment/curve/ellipse.js +0 -33
  341. package/es/common/segment/curve/ellipse.js.map +0 -1
  342. package/es/common/segment/curve/move.d.ts +0 -16
  343. package/es/common/segment/curve/move.js +0 -31
  344. package/es/common/segment/curve/move.js.map +0 -1
  345. package/es/common/store.d.ts +0 -2
  346. package/es/common/store.js +0 -2
  347. package/es/common/store.js.map +0 -1
  348. package/es/core/application.d.ts +0 -1
  349. package/es/core/application.js +0 -2
  350. package/es/core/application.js.map +0 -1
  351. package/es/core/global-module.d.ts +0 -1
  352. package/es/core/global-module.js +0 -1
  353. package/es/core/global-module.js.map +0 -1
  354. package/es/export.d.ts +0 -1
  355. package/es/export.js +0 -1
  356. package/es/export.js.map +0 -1
  357. package/es/graphic/state/state-batch-scheduler.d.ts +0 -42
  358. package/es/graphic/state/state-batch-scheduler.js +0 -278
  359. package/es/graphic/state/state-batch-scheduler.js.map +0 -1
  360. package/es/graphic/state/state-model.d.ts +0 -43
  361. package/es/graphic/state/state-model.js +0 -135
  362. package/es/graphic/state/state-model.js.map +0 -1
  363. package/es/graphic/state/state-perf-monitor.d.ts +0 -120
  364. package/es/graphic/state/state-perf-monitor.js +0 -214
  365. package/es/graphic/state/state-perf-monitor.js.map +0 -1
  366. package/es/graphic/state/state-style-resolver.d.ts +0 -13
  367. package/es/graphic/state/state-style-resolver.js +0 -42
  368. package/es/graphic/state/state-style-resolver.js.map +0 -1
  369. package/es/interface/animate.d.ts +0 -1
  370. package/es/interface/animate.js +0 -3
  371. package/es/interface/animate.js.map +0 -1
  372. package/es/interface/creator.d.ts +0 -4
  373. package/es/interface/creator.js +0 -2
  374. package/es/interface/creator.js.map +0 -1
  375. package/es/interface/graphic/dynamic-path.d.ts +0 -1
  376. package/es/interface/graphic/dynamic-path.js +0 -3
  377. package/es/interface/graphic/dynamic-path.js.map +0 -1
  378. package/es/interface/graphic-utils.d.ts +0 -1
  379. package/es/interface/graphic-utils.js +0 -3
  380. package/es/interface/graphic-utils.js.map +0 -1
  381. package/es/interface/theme-service.d.ts +0 -1
  382. package/es/interface/theme-service.js +0 -3
  383. package/es/interface/theme-service.js.map +0 -1
  384. package/es/plugins/base-plugin.d.ts +0 -8
  385. package/es/plugins/base-plugin.js +0 -7
  386. package/es/plugins/base-plugin.js.map +0 -1
  387. package/es/plugins/browser-env-plugin.d.ts +0 -8
  388. package/es/plugins/browser-env-plugin.js +0 -16
  389. package/es/plugins/browser-env-plugin.js.map +0 -1
  390. package/es/plugins/builtin-plugin/poptip-plugin.d.ts +0 -1
  391. package/es/plugins/builtin-plugin/poptip-plugin.js +0 -3
  392. package/es/plugins/builtin-plugin/poptip-plugin.js.map +0 -1
  393. package/es/plugins/picker-plugin.d.ts +0 -7
  394. package/es/plugins/picker-plugin.js +0 -11
  395. package/es/plugins/picker-plugin.js.map +0 -1
  396. package/es/plugins/renderer-plugin.d.ts +0 -7
  397. package/es/plugins/renderer-plugin.js +0 -11
  398. package/es/plugins/renderer-plugin.js.map +0 -1
  399. package/es/render/contributions/render/clear-screen.d.ts +0 -1
  400. package/es/render/contributions/render/clear-screen.js +0 -3
  401. package/es/render/contributions/render/clear-screen.js.map +0 -1
  402. package/es/render/contributions/render/render-slector.d.ts +0 -1
  403. package/es/render/contributions/render/render-slector.js +0 -3
  404. package/es/render/contributions/render/render-slector.js.map +0 -1
@@ -1,43 +0,0 @@
1
- import type { StateDefinition, StateDefinitionsInput } from './state-definition';
2
- import type { StateEngine } from './state-engine';
3
- export type StateSort = (stateA: string, stateB: string) => number;
4
- export type StateProxy<T> = (stateName: string, targetStates?: string[]) => Partial<T> | undefined;
5
- export interface IStateModelOptions<T> {
6
- states?: StateDefinitionsInput<T>;
7
- currentStates?: string[];
8
- stateSort?: StateSort;
9
- stateProxy?: StateProxy<T>;
10
- exclusiveGroups?: Record<string, string[]>;
11
- stateEngine?: StateEngine<T>;
12
- }
13
- export interface IStateModelTransition {
14
- changed: boolean;
15
- states: string[];
16
- effectiveStates?: string[];
17
- }
18
- export declare class StateModel<T extends Record<string, any> = Record<string, any>> {
19
- states?: StateDefinitionsInput<T>;
20
- currentStates?: string[];
21
- stateSort?: StateSort;
22
- stateProxy?: StateProxy<T>;
23
- readonly stateEngine?: StateEngine<T>;
24
- private readonly exclusiveGroupMap;
25
- private readonly exclusiveGroups;
26
- constructor(options?: IStateModelOptions<T>);
27
- getCurrentStates(): string[];
28
- hasState(stateName?: string): boolean;
29
- getState(stateName: string): Partial<T> | StateDefinition<T> | undefined;
30
- useStates(states: string[]): IStateModelTransition;
31
- clearStates(): IStateModelTransition;
32
- addState(stateName: string, keepCurrentStates?: boolean): IStateModelTransition;
33
- removeState(stateName: string | string[]): IStateModelTransition;
34
- toggleState(stateName: string): IStateModelTransition;
35
- sortStates(states: string[]): string[];
36
- registerExclusiveGroup(groupName: string, states: string[]): void;
37
- getExclusiveGroup(stateName: string): string | undefined;
38
- getMutuallyExclusiveStates(stateName: string): string[];
39
- isMutuallyExclusive(stateA: string, stateB: string): boolean;
40
- get effectiveStates(): ReadonlyArray<string>;
41
- get resolvedPatch(): Partial<T> | undefined;
42
- private sameStates;
43
- }
@@ -1,143 +0,0 @@
1
- "use strict";
2
-
3
- Object.defineProperty(exports, "__esModule", {
4
- value: !0
5
- }), exports.StateModel = void 0;
6
-
7
- class StateModel {
8
- constructor(options = {}) {
9
- var _a;
10
- this.exclusiveGroupMap = new Map, this.exclusiveGroups = new Map, this.states = options.states,
11
- this.currentStates = options.currentStates ? [ ...options.currentStates ] : void 0,
12
- this.stateSort = options.stateSort, this.stateProxy = options.stateProxy, this.stateEngine = options.stateEngine,
13
- this.stateEngine && options.currentStates && !this.sameStates(this.stateEngine.activeStates, options.currentStates) && this.stateEngine.applyStates(options.currentStates);
14
- const exclusiveGroups = null !== (_a = options.exclusiveGroups) && void 0 !== _a ? _a : {};
15
- for (const groupName in exclusiveGroups) Object.prototype.hasOwnProperty.call(exclusiveGroups, groupName) && this.registerExclusiveGroup(groupName, exclusiveGroups[groupName]);
16
- }
17
- getCurrentStates() {
18
- return this.currentStates ? [ ...this.currentStates ] : [];
19
- }
20
- hasState(stateName) {
21
- return this.stateEngine ? this.stateEngine.hasState(stateName) : !(!this.currentStates || !this.currentStates.length) && (null == stateName || this.currentStates.includes(stateName));
22
- }
23
- getState(stateName) {
24
- var _a;
25
- return null === (_a = this.states) || void 0 === _a ? void 0 : _a[stateName];
26
- }
27
- useStates(states) {
28
- var _a;
29
- if (this.stateEngine) {
30
- const result = this.stateEngine.applyStates(states);
31
- return this.currentStates = [ ...result.activeStates ], {
32
- changed: result.changed,
33
- states: [ ...result.activeStates ],
34
- effectiveStates: [ ...result.effectiveStates ]
35
- };
36
- }
37
- if (!states.length) return this.clearStates();
38
- const previousStates = null !== (_a = this.currentStates) && void 0 !== _a ? _a : [], changed = previousStates.length !== states.length || states.some(((stateName, index) => previousStates[index] !== stateName)), nextStates = this.sortStates(states);
39
- return changed && (this.currentStates = nextStates), {
40
- changed: changed,
41
- states: changed ? [ ...nextStates ] : [ ...previousStates ]
42
- };
43
- }
44
- clearStates() {
45
- if (this.stateEngine) {
46
- const result = this.stateEngine.clearStates();
47
- return this.currentStates = [], {
48
- changed: result.changed,
49
- states: [],
50
- effectiveStates: []
51
- };
52
- }
53
- const changed = this.hasState();
54
- return this.currentStates = [], {
55
- changed: changed,
56
- states: []
57
- };
58
- }
59
- addState(stateName, keepCurrentStates) {
60
- var _a;
61
- if (this.stateEngine) {
62
- const result = this.stateEngine.addState(stateName, keepCurrentStates);
63
- return this.currentStates = [ ...result.activeStates ], {
64
- changed: result.changed,
65
- states: [ ...result.activeStates ],
66
- effectiveStates: [ ...result.effectiveStates ]
67
- };
68
- }
69
- if (this.currentStates && this.currentStates.includes(stateName) && (keepCurrentStates || 1 === this.currentStates.length)) return {
70
- changed: !1,
71
- states: this.getCurrentStates()
72
- };
73
- const nextStates = keepCurrentStates && (null === (_a = this.currentStates) || void 0 === _a ? void 0 : _a.length) ? this.currentStates.concat([ stateName ]) : [ stateName ];
74
- return this.useStates(nextStates);
75
- }
76
- removeState(stateName) {
77
- if (this.stateEngine) {
78
- const result = this.stateEngine.removeState(stateName);
79
- return this.currentStates = [ ...result.activeStates ], {
80
- changed: result.changed,
81
- states: [ ...result.activeStates ],
82
- effectiveStates: [ ...result.effectiveStates ]
83
- };
84
- }
85
- if (!this.currentStates) return {
86
- changed: !1,
87
- states: []
88
- };
89
- const filter = Array.isArray(stateName) ? s => !stateName.includes(s) : s => s !== stateName, nextStates = this.currentStates.filter(filter);
90
- return nextStates.length === this.currentStates.length ? {
91
- changed: !1,
92
- states: this.getCurrentStates()
93
- } : this.useStates(nextStates);
94
- }
95
- toggleState(stateName) {
96
- if (this.stateEngine) {
97
- const result = this.stateEngine.toggleState(stateName);
98
- return this.currentStates = [ ...result.activeStates ], {
99
- changed: result.changed,
100
- states: [ ...result.activeStates ],
101
- effectiveStates: [ ...result.effectiveStates ]
102
- };
103
- }
104
- if (this.hasState(stateName)) return this.removeState(stateName);
105
- const nextStates = this.currentStates ? this.currentStates.slice() : [];
106
- return nextStates.includes(stateName) || nextStates.push(stateName), this.useStates(nextStates);
107
- }
108
- sortStates(states) {
109
- return this.stateEngine ? [ ...this.stateEngine.activeStates ] : this.stateSort ? [ ...states ].sort(this.stateSort) : [ ...states ];
110
- }
111
- registerExclusiveGroup(groupName, states) {
112
- const uniqueStates = Array.from(new Set(states));
113
- this.exclusiveGroups.set(groupName, uniqueStates), uniqueStates.forEach((stateName => this.exclusiveGroupMap.set(stateName, groupName)));
114
- }
115
- getExclusiveGroup(stateName) {
116
- return this.exclusiveGroupMap.get(stateName);
117
- }
118
- getMutuallyExclusiveStates(stateName) {
119
- var _a;
120
- const groupName = this.getExclusiveGroup(stateName);
121
- return groupName ? (null !== (_a = this.exclusiveGroups.get(groupName)) && void 0 !== _a ? _a : []).filter((name => name !== stateName)) : [];
122
- }
123
- isMutuallyExclusive(stateA, stateB) {
124
- const groupName = this.getExclusiveGroup(stateA);
125
- return !!groupName && groupName === this.getExclusiveGroup(stateB) && stateA !== stateB;
126
- }
127
- get effectiveStates() {
128
- var _a, _b, _c;
129
- return null !== (_c = null !== (_b = null === (_a = this.stateEngine) || void 0 === _a ? void 0 : _a.effectiveStates) && void 0 !== _b ? _b : this.currentStates) && void 0 !== _c ? _c : [];
130
- }
131
- get resolvedPatch() {
132
- var _a;
133
- return null === (_a = this.stateEngine) || void 0 === _a ? void 0 : _a.resolvedPatch;
134
- }
135
- sameStates(left, right) {
136
- if (left.length !== right.length) return !1;
137
- for (let index = 0; index < left.length; index++) if (left[index] !== right[index]) return !1;
138
- return !0;
139
- }
140
- }
141
-
142
- exports.StateModel = StateModel;
143
- //# sourceMappingURL=state-model.js.map
@@ -1 +0,0 @@
1
- {"version":3,"sources":["../src/graphic/state/state-model.ts"],"names":[],"mappings":"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","file":"state-model.js","sourcesContent":["import type { StateDefinition, StateDefinitionsInput } from './state-definition';\nimport type { StateEngine } from './state-engine';\n\nexport type StateSort = (stateA: string, stateB: string) => number;\n\nexport type StateProxy<T> = (stateName: string, targetStates?: string[]) => Partial<T> | undefined;\n\nexport interface IStateModelOptions<T> {\n states?: StateDefinitionsInput<T>;\n currentStates?: string[];\n stateSort?: StateSort;\n stateProxy?: StateProxy<T>;\n exclusiveGroups?: Record<string, string[]>;\n stateEngine?: StateEngine<T>;\n}\n\nexport interface IStateModelTransition {\n changed: boolean;\n states: string[];\n effectiveStates?: string[];\n}\n\nexport class StateModel<T extends Record<string, any> = Record<string, any>> {\n states?: StateDefinitionsInput<T>;\n currentStates?: string[];\n stateSort?: StateSort;\n stateProxy?: StateProxy<T>;\n readonly stateEngine?: StateEngine<T>;\n\n private readonly exclusiveGroupMap = new Map<string, string>();\n private readonly exclusiveGroups = new Map<string, string[]>();\n\n constructor(options: IStateModelOptions<T> = {}) {\n this.states = options.states;\n this.currentStates = options.currentStates ? [...options.currentStates] : undefined;\n this.stateSort = options.stateSort;\n this.stateProxy = options.stateProxy;\n this.stateEngine = options.stateEngine;\n\n if (\n this.stateEngine &&\n options.currentStates &&\n !this.sameStates(this.stateEngine.activeStates, options.currentStates)\n ) {\n this.stateEngine.applyStates(options.currentStates);\n }\n\n const exclusiveGroups = options.exclusiveGroups ?? {};\n for (const groupName in exclusiveGroups) {\n if (!Object.prototype.hasOwnProperty.call(exclusiveGroups, groupName)) {\n continue;\n }\n this.registerExclusiveGroup(groupName, exclusiveGroups[groupName]);\n }\n }\n\n getCurrentStates(): string[] {\n return this.currentStates ? [...this.currentStates] : [];\n }\n\n hasState(stateName?: string): boolean {\n if (this.stateEngine) {\n return this.stateEngine.hasState(stateName);\n }\n\n if (!this.currentStates || !this.currentStates.length) {\n return false;\n }\n\n if (stateName == null) {\n return true;\n }\n\n return this.currentStates.includes(stateName);\n }\n\n getState(stateName: string): Partial<T> | StateDefinition<T> | undefined {\n return this.states?.[stateName];\n }\n\n useStates(states: string[]): IStateModelTransition {\n if (this.stateEngine) {\n const result = this.stateEngine.applyStates(states);\n this.currentStates = [...result.activeStates];\n return {\n changed: result.changed,\n states: [...result.activeStates],\n effectiveStates: [...result.effectiveStates]\n };\n }\n\n if (!states.length) {\n return this.clearStates();\n }\n\n const previousStates = this.currentStates ?? [];\n const changed =\n previousStates.length !== states.length || states.some((stateName, index) => previousStates[index] !== stateName);\n\n const nextStates = this.sortStates(states);\n\n if (changed) {\n this.currentStates = nextStates;\n }\n\n return {\n changed,\n states: changed ? [...nextStates] : [...previousStates]\n };\n }\n\n clearStates(): IStateModelTransition {\n if (this.stateEngine) {\n const result = this.stateEngine.clearStates();\n this.currentStates = [];\n return {\n changed: result.changed,\n states: [],\n effectiveStates: []\n };\n }\n\n const changed = this.hasState();\n this.currentStates = [];\n\n return {\n changed,\n states: []\n };\n }\n\n addState(stateName: string, keepCurrentStates?: boolean): IStateModelTransition {\n if (this.stateEngine) {\n const result = this.stateEngine.addState(stateName, keepCurrentStates);\n this.currentStates = [...result.activeStates];\n return {\n changed: result.changed,\n states: [...result.activeStates],\n effectiveStates: [...result.effectiveStates]\n };\n }\n\n if (\n this.currentStates &&\n this.currentStates.includes(stateName) &&\n (keepCurrentStates || this.currentStates.length === 1)\n ) {\n return {\n changed: false,\n states: this.getCurrentStates()\n };\n }\n\n const nextStates =\n keepCurrentStates && this.currentStates?.length ? this.currentStates.concat([stateName]) : [stateName];\n\n return this.useStates(nextStates);\n }\n\n removeState(stateName: string | string[]): IStateModelTransition {\n if (this.stateEngine) {\n const result = this.stateEngine.removeState(stateName);\n this.currentStates = [...result.activeStates];\n return {\n changed: result.changed,\n states: [...result.activeStates],\n effectiveStates: [...result.effectiveStates]\n };\n }\n\n if (!this.currentStates) {\n return {\n changed: false,\n states: []\n };\n }\n\n const filter = Array.isArray(stateName) ? (s: string) => !stateName.includes(s) : (s: string) => s !== stateName;\n const nextStates = this.currentStates.filter(filter);\n\n if (nextStates.length === this.currentStates.length) {\n return {\n changed: false,\n states: this.getCurrentStates()\n };\n }\n\n return this.useStates(nextStates);\n }\n\n toggleState(stateName: string): IStateModelTransition {\n if (this.stateEngine) {\n const result = this.stateEngine.toggleState(stateName);\n this.currentStates = [...result.activeStates];\n return {\n changed: result.changed,\n states: [...result.activeStates],\n effectiveStates: [...result.effectiveStates]\n };\n }\n\n if (this.hasState(stateName)) {\n return this.removeState(stateName);\n }\n\n const nextStates = this.currentStates ? this.currentStates.slice() : [];\n if (!nextStates.includes(stateName)) {\n nextStates.push(stateName);\n }\n\n return this.useStates(nextStates);\n }\n\n sortStates(states: string[]): string[] {\n if (this.stateEngine) {\n return [...this.stateEngine.activeStates];\n }\n\n if (!this.stateSort) {\n return [...states];\n }\n\n return [...states].sort(this.stateSort);\n }\n\n registerExclusiveGroup(groupName: string, states: string[]): void {\n const uniqueStates = Array.from(new Set(states));\n this.exclusiveGroups.set(groupName, uniqueStates);\n uniqueStates.forEach(stateName => this.exclusiveGroupMap.set(stateName, groupName));\n }\n\n getExclusiveGroup(stateName: string): string | undefined {\n return this.exclusiveGroupMap.get(stateName);\n }\n\n getMutuallyExclusiveStates(stateName: string): string[] {\n const groupName = this.getExclusiveGroup(stateName);\n if (!groupName) {\n return [];\n }\n\n return (this.exclusiveGroups.get(groupName) ?? []).filter(name => name !== stateName);\n }\n\n isMutuallyExclusive(stateA: string, stateB: string): boolean {\n const groupName = this.getExclusiveGroup(stateA);\n return !!groupName && groupName === this.getExclusiveGroup(stateB) && stateA !== stateB;\n }\n\n get effectiveStates(): ReadonlyArray<string> {\n return this.stateEngine?.effectiveStates ?? this.currentStates ?? [];\n }\n\n get resolvedPatch(): Partial<T> | undefined {\n return this.stateEngine?.resolvedPatch;\n }\n\n private sameStates(left: readonly string[], right: readonly string[]): boolean {\n if (left.length !== right.length) {\n return false;\n }\n\n for (let index = 0; index < left.length; index++) {\n if (left[index] !== right[index]) {\n return false;\n }\n }\n\n return true;\n }\n}\n"]}
@@ -1,120 +0,0 @@
1
- import type { IGroup, ILayer, IStage } from '../../interface';
2
- import { UpdateCategory } from './attribute-update-classifier';
3
- export type DeferredIneligibleReason = 'config_disabled' | 'context_disabled' | 'non_batch_operation' | 'mixed_update_category' | 'resolver_unstable_keys' | 'graphic_unavailable';
4
- export interface IStatePerfConfig {
5
- enabled?: boolean;
6
- recordEvents?: boolean;
7
- maxEventRecords?: number;
8
- }
9
- export interface IDeferredStateConfig {
10
- enabled?: boolean;
11
- frameBudget?: number;
12
- maxGraphicsPerFrame?: number;
13
- }
14
- export interface IDeferredStateContextConfig {
15
- deferred?: IDeferredStateConfig;
16
- priority?: number;
17
- localEnabled?: boolean;
18
- }
19
- export type IDeferredStateOwnerConfig = IDeferredStateConfig | IDeferredStateContextConfig;
20
- export type IStatePerfEventType = 'state-commit' | 'shared-refresh-flush' | 'deferred-job-start' | 'deferred-job-yield' | 'deferred-job-cancel' | 'deferred-job-complete' | 'deferred-ineligible';
21
- export interface IStatePerfEventRecord {
22
- type: IStatePerfEventType;
23
- at: number;
24
- detail?: Record<string, unknown>;
25
- }
26
- export interface IStatePerfSnapshot {
27
- counters: {
28
- stateCommits: number;
29
- sharedRefreshCommits: number;
30
- deferredJobsCreated: number;
31
- deferredJobsCompleted: number;
32
- deferredJobsCancelled: number;
33
- deferredJobsCoalesced: number;
34
- deferredGraphicsCommitted: number;
35
- deferredBudgetYields: number;
36
- deferredIneligibleGraphics: number;
37
- };
38
- deferredIneligibleByReason: Record<DeferredIneligibleReason, number>;
39
- categoryBreakdown: {
40
- paint: number;
41
- transform: number;
42
- shape: number;
43
- bounds: number;
44
- layout: number;
45
- pick: number;
46
- };
47
- refresh: {
48
- queuedGraphics: number;
49
- flushedGraphics: number;
50
- ensureFreshCalls: number;
51
- renderScheduled: number;
52
- };
53
- resolver: {
54
- cacheHits: number;
55
- cacheMisses: number;
56
- invalidations: number;
57
- };
58
- cost: {
59
- resolverTotalMs: number;
60
- resolverMaxMs: number;
61
- patchTotalMs: number;
62
- patchMaxMs: number;
63
- sharedRefreshTotalMs: number;
64
- sharedRefreshMaxMs: number;
65
- batchSliceTotalMs: number;
66
- batchSliceMaxMs: number;
67
- };
68
- allocationHints: {
69
- patchObjectsCreated: number;
70
- batchEntriesCreated: number;
71
- refreshQueuePushes: number;
72
- };
73
- batch: {
74
- pendingJobs: number;
75
- maxPendingJobs: number;
76
- maxGraphicsInJob: number;
77
- maxFrameSliceCost: number;
78
- };
79
- events?: IStatePerfEventRecord[];
80
- }
81
- type SnapshotCounterKey = keyof IStatePerfSnapshot['counters'];
82
- type SnapshotRefreshKey = keyof IStatePerfSnapshot['refresh'];
83
- type SnapshotResolverKey = keyof IStatePerfSnapshot['resolver'];
84
- type SnapshotAllocationKey = keyof IStatePerfSnapshot['allocationHints'];
85
- type SnapshotCostKind = 'resolver' | 'patch' | 'sharedRefresh' | 'batchSlice';
86
- export interface IResolvedDeferredContext {
87
- contextOwner: IStage | ILayer | IGroup;
88
- contextOwnerId: number;
89
- config: Required<IDeferredStateConfig>;
90
- configFingerprint: string;
91
- }
92
- export declare function createEmptyStatePerfSnapshot(): IStatePerfSnapshot;
93
- export declare function normalizeDeferredStateOwnerConfig(value?: IDeferredStateOwnerConfig): IDeferredStateContextConfig | undefined;
94
- export declare function normalizeDeferredStateConfig(config?: IDeferredStateConfig): Required<IDeferredStateConfig>;
95
- export declare function fingerprintDeferredStateConfig(config: Required<IDeferredStateConfig>): string;
96
- export declare class StatePerfMonitor {
97
- private configSource?;
98
- private readonly snapshot;
99
- constructor(configSource?: IStatePerfConfig | (() => IStatePerfConfig | undefined));
100
- setConfig(config?: IStatePerfConfig): void;
101
- getSnapshot(): IStatePerfSnapshot;
102
- reset(): void;
103
- incrementCounter(key: SnapshotCounterKey, delta?: number): void;
104
- recordDeferredIneligible(reason: DeferredIneligibleReason, delta?: number): void;
105
- recordCategory(category: UpdateCategory): void;
106
- recordRefresh(key: SnapshotRefreshKey, delta?: number): void;
107
- recordResolver(key: SnapshotResolverKey, delta?: number): void;
108
- recordCost(kind: SnapshotCostKind, durationMs: number): void;
109
- recordAllocation(key: SnapshotAllocationKey, delta?: number): void;
110
- updateBatchPending(pendingJobs: number): void;
111
- updateMaxGraphicsInJob(count: number): void;
112
- recordEvent(type: IStatePerfEventType, detail?: Record<string, unknown>): void;
113
- private isEnabled;
114
- private shouldRecordEvents;
115
- private getConfig;
116
- }
117
- export declare function ensureStageStatePerfMonitor(stage: IStage): StatePerfMonitor;
118
- export declare function getStageStatePerfMonitor(stage?: IStage): StatePerfMonitor | undefined;
119
- export declare function getActiveStageStatePerfMonitor(stage?: IStage): StatePerfMonitor | undefined;
120
- export {};
@@ -1,224 +0,0 @@
1
- "use strict";
2
-
3
- Object.defineProperty(exports, "__esModule", {
4
- value: !0
5
- }), exports.getActiveStageStatePerfMonitor = exports.getStageStatePerfMonitor = exports.ensureStageStatePerfMonitor = exports.StatePerfMonitor = exports.fingerprintDeferredStateConfig = exports.normalizeDeferredStateConfig = exports.normalizeDeferredStateOwnerConfig = exports.createEmptyStatePerfSnapshot = void 0;
6
-
7
- const attribute_update_classifier_1 = require("./attribute-update-classifier"), DEFAULT_MAX_EVENT_RECORDS = 100, STAGE_PERF_MONITOR = Symbol("vrender.statePerfMonitor");
8
-
9
- function createReasonBreakdown() {
10
- return {
11
- config_disabled: 0,
12
- context_disabled: 0,
13
- non_batch_operation: 0,
14
- mixed_update_category: 0,
15
- resolver_unstable_keys: 0,
16
- graphic_unavailable: 0
17
- };
18
- }
19
-
20
- function createEmptyStatePerfSnapshot() {
21
- return {
22
- counters: {
23
- stateCommits: 0,
24
- sharedRefreshCommits: 0,
25
- deferredJobsCreated: 0,
26
- deferredJobsCompleted: 0,
27
- deferredJobsCancelled: 0,
28
- deferredJobsCoalesced: 0,
29
- deferredGraphicsCommitted: 0,
30
- deferredBudgetYields: 0,
31
- deferredIneligibleGraphics: 0
32
- },
33
- deferredIneligibleByReason: createReasonBreakdown(),
34
- categoryBreakdown: {
35
- paint: 0,
36
- transform: 0,
37
- shape: 0,
38
- bounds: 0,
39
- layout: 0,
40
- pick: 0
41
- },
42
- refresh: {
43
- queuedGraphics: 0,
44
- flushedGraphics: 0,
45
- ensureFreshCalls: 0,
46
- renderScheduled: 0
47
- },
48
- resolver: {
49
- cacheHits: 0,
50
- cacheMisses: 0,
51
- invalidations: 0
52
- },
53
- cost: {
54
- resolverTotalMs: 0,
55
- resolverMaxMs: 0,
56
- patchTotalMs: 0,
57
- patchMaxMs: 0,
58
- sharedRefreshTotalMs: 0,
59
- sharedRefreshMaxMs: 0,
60
- batchSliceTotalMs: 0,
61
- batchSliceMaxMs: 0
62
- },
63
- allocationHints: {
64
- patchObjectsCreated: 0,
65
- batchEntriesCreated: 0,
66
- refreshQueuePushes: 0
67
- },
68
- batch: {
69
- pendingJobs: 0,
70
- maxPendingJobs: 0,
71
- maxGraphicsInJob: 0,
72
- maxFrameSliceCost: 0
73
- },
74
- events: []
75
- };
76
- }
77
-
78
- function cloneSnapshot(snapshot) {
79
- return {
80
- counters: Object.assign({}, snapshot.counters),
81
- deferredIneligibleByReason: Object.assign({}, snapshot.deferredIneligibleByReason),
82
- categoryBreakdown: Object.assign({}, snapshot.categoryBreakdown),
83
- refresh: Object.assign({}, snapshot.refresh),
84
- resolver: Object.assign({}, snapshot.resolver),
85
- cost: Object.assign({}, snapshot.cost),
86
- allocationHints: Object.assign({}, snapshot.allocationHints),
87
- batch: Object.assign({}, snapshot.batch),
88
- events: snapshot.events ? snapshot.events.slice() : []
89
- };
90
- }
91
-
92
- function isDeferredStateContextConfig(value) {
93
- return !!value && (Object.prototype.hasOwnProperty.call(value, "deferred") || Object.prototype.hasOwnProperty.call(value, "localEnabled"));
94
- }
95
-
96
- function normalizeDeferredStateOwnerConfig(value) {
97
- if (value) return isDeferredStateContextConfig(value) ? value : {
98
- deferred: value
99
- };
100
- }
101
-
102
- function normalizeDeferredStateConfig(config) {
103
- var _a, _b, _c;
104
- return {
105
- enabled: null !== (_a = null == config ? void 0 : config.enabled) && void 0 !== _a && _a,
106
- frameBudget: null !== (_b = null == config ? void 0 : config.frameBudget) && void 0 !== _b ? _b : 8,
107
- maxGraphicsPerFrame: null !== (_c = null == config ? void 0 : config.maxGraphicsPerFrame) && void 0 !== _c ? _c : 100
108
- };
109
- }
110
-
111
- function fingerprintDeferredStateConfig(config) {
112
- return `${config.enabled ? 1 : 0}:${config.frameBudget}:${config.maxGraphicsPerFrame}`;
113
- }
114
-
115
- exports.createEmptyStatePerfSnapshot = createEmptyStatePerfSnapshot, exports.normalizeDeferredStateOwnerConfig = normalizeDeferredStateOwnerConfig,
116
- exports.normalizeDeferredStateConfig = normalizeDeferredStateConfig, exports.fingerprintDeferredStateConfig = fingerprintDeferredStateConfig;
117
-
118
- class StatePerfMonitor {
119
- constructor(configSource) {
120
- this.configSource = configSource, this.snapshot = createEmptyStatePerfSnapshot();
121
- }
122
- setConfig(config) {
123
- this.configSource = config;
124
- }
125
- getSnapshot() {
126
- return cloneSnapshot(this.snapshot);
127
- }
128
- reset() {
129
- const next = createEmptyStatePerfSnapshot();
130
- Object.assign(this.snapshot.counters, next.counters), Object.assign(this.snapshot.deferredIneligibleByReason, next.deferredIneligibleByReason),
131
- Object.assign(this.snapshot.categoryBreakdown, next.categoryBreakdown), Object.assign(this.snapshot.refresh, next.refresh),
132
- Object.assign(this.snapshot.resolver, next.resolver), Object.assign(this.snapshot.cost, next.cost),
133
- Object.assign(this.snapshot.allocationHints, next.allocationHints), Object.assign(this.snapshot.batch, next.batch),
134
- this.snapshot.events = [];
135
- }
136
- incrementCounter(key, delta = 1) {
137
- this.isEnabled() && (this.snapshot.counters[key] += delta);
138
- }
139
- recordDeferredIneligible(reason, delta = 1) {
140
- this.isEnabled() && (this.snapshot.deferredIneligibleByReason[reason] += delta,
141
- this.snapshot.counters.deferredIneligibleGraphics += delta, this.recordEvent("deferred-ineligible", {
142
- reason: reason,
143
- count: delta
144
- }));
145
- }
146
- recordCategory(category) {
147
- this.isEnabled() && (category & attribute_update_classifier_1.UpdateCategory.PAINT && (this.snapshot.categoryBreakdown.paint += 1),
148
- category & attribute_update_classifier_1.UpdateCategory.TRANSFORM && (this.snapshot.categoryBreakdown.transform += 1),
149
- category & attribute_update_classifier_1.UpdateCategory.SHAPE && (this.snapshot.categoryBreakdown.shape += 1),
150
- category & attribute_update_classifier_1.UpdateCategory.BOUNDS && (this.snapshot.categoryBreakdown.bounds += 1),
151
- category & attribute_update_classifier_1.UpdateCategory.LAYOUT && (this.snapshot.categoryBreakdown.layout += 1),
152
- category & attribute_update_classifier_1.UpdateCategory.PICK && (this.snapshot.categoryBreakdown.pick += 1));
153
- }
154
- recordRefresh(key, delta = 1) {
155
- this.isEnabled() && (this.snapshot.refresh[key] += delta);
156
- }
157
- recordResolver(key, delta = 1) {
158
- this.isEnabled() && (this.snapshot.resolver[key] += delta);
159
- }
160
- recordCost(kind, durationMs) {
161
- if (this.isEnabled()) {
162
- if ("resolver" === kind) return this.snapshot.cost.resolverTotalMs += durationMs,
163
- void (this.snapshot.cost.resolverMaxMs = Math.max(this.snapshot.cost.resolverMaxMs, durationMs));
164
- if ("patch" === kind) return this.snapshot.cost.patchTotalMs += durationMs, void (this.snapshot.cost.patchMaxMs = Math.max(this.snapshot.cost.patchMaxMs, durationMs));
165
- if ("sharedRefresh" === kind) return this.snapshot.cost.sharedRefreshTotalMs += durationMs,
166
- void (this.snapshot.cost.sharedRefreshMaxMs = Math.max(this.snapshot.cost.sharedRefreshMaxMs, durationMs));
167
- this.snapshot.cost.batchSliceTotalMs += durationMs, this.snapshot.cost.batchSliceMaxMs = Math.max(this.snapshot.cost.batchSliceMaxMs, durationMs),
168
- this.snapshot.batch.maxFrameSliceCost = Math.max(this.snapshot.batch.maxFrameSliceCost, durationMs);
169
- }
170
- }
171
- recordAllocation(key, delta = 1) {
172
- this.isEnabled() && (this.snapshot.allocationHints[key] += delta);
173
- }
174
- updateBatchPending(pendingJobs) {
175
- this.isEnabled() && (this.snapshot.batch.pendingJobs = pendingJobs, this.snapshot.batch.maxPendingJobs = Math.max(this.snapshot.batch.maxPendingJobs, pendingJobs));
176
- }
177
- updateMaxGraphicsInJob(count) {
178
- this.isEnabled() && (this.snapshot.batch.maxGraphicsInJob = Math.max(this.snapshot.batch.maxGraphicsInJob, count));
179
- }
180
- recordEvent(type, detail) {
181
- var _a, _b, _c;
182
- if (!this.shouldRecordEvents()) return;
183
- const events = null !== (_a = this.snapshot.events) && void 0 !== _a ? _a : this.snapshot.events = [];
184
- events.push({
185
- type: type,
186
- at: Date.now(),
187
- detail: detail
188
- });
189
- const max = null !== (_c = null === (_b = this.getConfig()) || void 0 === _b ? void 0 : _b.maxEventRecords) && void 0 !== _c ? _c : 100;
190
- events.length > max && events.splice(0, events.length - max);
191
- }
192
- isEnabled() {
193
- var _a;
194
- return !0 === (null === (_a = this.getConfig()) || void 0 === _a ? void 0 : _a.enabled);
195
- }
196
- shouldRecordEvents() {
197
- const config = this.getConfig();
198
- return !!(null == config ? void 0 : config.enabled) && !!config.recordEvents;
199
- }
200
- getConfig() {
201
- return "function" == typeof this.configSource ? this.configSource() : this.configSource;
202
- }
203
- }
204
-
205
- function ensureStageStatePerfMonitor(stage) {
206
- const stageAny = stage;
207
- return stageAny[STAGE_PERF_MONITOR] || (stageAny[STAGE_PERF_MONITOR] = new StatePerfMonitor((() => stage.statePerfConfig))),
208
- stageAny[STAGE_PERF_MONITOR];
209
- }
210
-
211
- function getStageStatePerfMonitor(stage) {
212
- if (stage) return stage[STAGE_PERF_MONITOR];
213
- }
214
-
215
- function getActiveStageStatePerfMonitor(stage) {
216
- var _a;
217
- if (!stage) return;
218
- const current = getStageStatePerfMonitor(stage);
219
- return current || (!0 === (null === (_a = stage.statePerfConfig) || void 0 === _a ? void 0 : _a.enabled) ? ensureStageStatePerfMonitor(stage) : void 0);
220
- }
221
-
222
- exports.StatePerfMonitor = StatePerfMonitor, exports.ensureStageStatePerfMonitor = ensureStageStatePerfMonitor,
223
- exports.getStageStatePerfMonitor = getStageStatePerfMonitor, exports.getActiveStageStatePerfMonitor = getActiveStageStatePerfMonitor;
224
- //# sourceMappingURL=state-perf-monitor.js.map
@@ -1 +0,0 @@
1
- {"version":3,"sources":["../src/graphic/state/state-perf-monitor.ts"],"names":[],"mappings":"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","file":"state-perf-monitor.js","sourcesContent":["import type { IGroup, ILayer, IStage } from '../../interface';\nimport { UpdateCategory } from './attribute-update-classifier';\n\nexport type DeferredIneligibleReason =\n | 'config_disabled'\n | 'context_disabled'\n | 'non_batch_operation'\n | 'mixed_update_category'\n | 'resolver_unstable_keys'\n | 'graphic_unavailable';\n\nexport interface IStatePerfConfig {\n enabled?: boolean;\n recordEvents?: boolean;\n maxEventRecords?: number;\n}\n\nexport interface IDeferredStateConfig {\n enabled?: boolean;\n frameBudget?: number;\n maxGraphicsPerFrame?: number;\n}\n\nexport interface IDeferredStateContextConfig {\n deferred?: IDeferredStateConfig;\n priority?: number;\n localEnabled?: boolean;\n}\n\nexport type IDeferredStateOwnerConfig = IDeferredStateConfig | IDeferredStateContextConfig;\n\nexport type IStatePerfEventType =\n | 'state-commit'\n | 'shared-refresh-flush'\n | 'deferred-job-start'\n | 'deferred-job-yield'\n | 'deferred-job-cancel'\n | 'deferred-job-complete'\n | 'deferred-ineligible';\n\nexport interface IStatePerfEventRecord {\n type: IStatePerfEventType;\n at: number;\n detail?: Record<string, unknown>;\n}\n\nexport interface IStatePerfSnapshot {\n counters: {\n stateCommits: number;\n sharedRefreshCommits: number;\n deferredJobsCreated: number;\n deferredJobsCompleted: number;\n deferredJobsCancelled: number;\n deferredJobsCoalesced: number;\n deferredGraphicsCommitted: number;\n deferredBudgetYields: number;\n deferredIneligibleGraphics: number;\n };\n deferredIneligibleByReason: Record<DeferredIneligibleReason, number>;\n categoryBreakdown: {\n paint: number;\n transform: number;\n shape: number;\n bounds: number;\n layout: number;\n pick: number;\n };\n refresh: {\n queuedGraphics: number;\n flushedGraphics: number;\n ensureFreshCalls: number;\n renderScheduled: number;\n };\n resolver: {\n cacheHits: number;\n cacheMisses: number;\n invalidations: number;\n };\n cost: {\n resolverTotalMs: number;\n resolverMaxMs: number;\n patchTotalMs: number;\n patchMaxMs: number;\n sharedRefreshTotalMs: number;\n sharedRefreshMaxMs: number;\n batchSliceTotalMs: number;\n batchSliceMaxMs: number;\n };\n allocationHints: {\n patchObjectsCreated: number;\n batchEntriesCreated: number;\n refreshQueuePushes: number;\n };\n batch: {\n pendingJobs: number;\n maxPendingJobs: number;\n maxGraphicsInJob: number;\n maxFrameSliceCost: number;\n };\n events?: IStatePerfEventRecord[];\n}\n\ntype SnapshotCounterKey = keyof IStatePerfSnapshot['counters'];\ntype SnapshotRefreshKey = keyof IStatePerfSnapshot['refresh'];\ntype SnapshotResolverKey = keyof IStatePerfSnapshot['resolver'];\ntype SnapshotAllocationKey = keyof IStatePerfSnapshot['allocationHints'];\ntype SnapshotCostKind = 'resolver' | 'patch' | 'sharedRefresh' | 'batchSlice';\n\nexport interface IResolvedDeferredContext {\n contextOwner: IStage | ILayer | IGroup;\n contextOwnerId: number;\n config: Required<IDeferredStateConfig>;\n configFingerprint: string;\n}\n\nconst DEFAULT_MAX_EVENT_RECORDS = 100;\nconst STAGE_PERF_MONITOR = Symbol('vrender.statePerfMonitor');\n\nfunction createReasonBreakdown(): Record<DeferredIneligibleReason, number> {\n return {\n config_disabled: 0,\n context_disabled: 0,\n non_batch_operation: 0,\n mixed_update_category: 0,\n resolver_unstable_keys: 0,\n graphic_unavailable: 0\n };\n}\n\nexport function createEmptyStatePerfSnapshot(): IStatePerfSnapshot {\n return {\n counters: {\n stateCommits: 0,\n sharedRefreshCommits: 0,\n deferredJobsCreated: 0,\n deferredJobsCompleted: 0,\n deferredJobsCancelled: 0,\n deferredJobsCoalesced: 0,\n deferredGraphicsCommitted: 0,\n deferredBudgetYields: 0,\n deferredIneligibleGraphics: 0\n },\n deferredIneligibleByReason: createReasonBreakdown(),\n categoryBreakdown: {\n paint: 0,\n transform: 0,\n shape: 0,\n bounds: 0,\n layout: 0,\n pick: 0\n },\n refresh: {\n queuedGraphics: 0,\n flushedGraphics: 0,\n ensureFreshCalls: 0,\n renderScheduled: 0\n },\n resolver: {\n cacheHits: 0,\n cacheMisses: 0,\n invalidations: 0\n },\n cost: {\n resolverTotalMs: 0,\n resolverMaxMs: 0,\n patchTotalMs: 0,\n patchMaxMs: 0,\n sharedRefreshTotalMs: 0,\n sharedRefreshMaxMs: 0,\n batchSliceTotalMs: 0,\n batchSliceMaxMs: 0\n },\n allocationHints: {\n patchObjectsCreated: 0,\n batchEntriesCreated: 0,\n refreshQueuePushes: 0\n },\n batch: {\n pendingJobs: 0,\n maxPendingJobs: 0,\n maxGraphicsInJob: 0,\n maxFrameSliceCost: 0\n },\n events: []\n };\n}\n\nfunction cloneSnapshot(snapshot: IStatePerfSnapshot): IStatePerfSnapshot {\n return {\n counters: { ...snapshot.counters },\n deferredIneligibleByReason: { ...snapshot.deferredIneligibleByReason },\n categoryBreakdown: { ...snapshot.categoryBreakdown },\n refresh: { ...snapshot.refresh },\n resolver: { ...snapshot.resolver },\n cost: { ...snapshot.cost },\n allocationHints: { ...snapshot.allocationHints },\n batch: { ...snapshot.batch },\n events: snapshot.events ? snapshot.events.slice() : []\n };\n}\n\nfunction isDeferredStateContextConfig(\n value: IDeferredStateOwnerConfig | undefined\n): value is IDeferredStateContextConfig {\n return (\n !!value &&\n (Object.prototype.hasOwnProperty.call(value, 'deferred') ||\n Object.prototype.hasOwnProperty.call(value, 'localEnabled'))\n );\n}\n\nexport function normalizeDeferredStateOwnerConfig(\n value?: IDeferredStateOwnerConfig\n): IDeferredStateContextConfig | undefined {\n if (!value) {\n return undefined;\n }\n\n if (isDeferredStateContextConfig(value)) {\n return value;\n }\n\n return {\n deferred: value\n };\n}\n\nexport function normalizeDeferredStateConfig(config?: IDeferredStateConfig): Required<IDeferredStateConfig> {\n return {\n enabled: config?.enabled ?? false,\n frameBudget: config?.frameBudget ?? 8,\n maxGraphicsPerFrame: config?.maxGraphicsPerFrame ?? 100\n };\n}\n\nexport function fingerprintDeferredStateConfig(config: Required<IDeferredStateConfig>): string {\n return `${config.enabled ? 1 : 0}:${config.frameBudget}:${config.maxGraphicsPerFrame}`;\n}\n\nexport class StatePerfMonitor {\n private readonly snapshot = createEmptyStatePerfSnapshot();\n\n constructor(private configSource?: IStatePerfConfig | (() => IStatePerfConfig | undefined)) {}\n\n setConfig(config?: IStatePerfConfig): void {\n this.configSource = config;\n }\n\n getSnapshot(): IStatePerfSnapshot {\n return cloneSnapshot(this.snapshot);\n }\n\n reset(): void {\n const next = createEmptyStatePerfSnapshot();\n Object.assign(this.snapshot.counters, next.counters);\n Object.assign(this.snapshot.deferredIneligibleByReason, next.deferredIneligibleByReason);\n Object.assign(this.snapshot.categoryBreakdown, next.categoryBreakdown);\n Object.assign(this.snapshot.refresh, next.refresh);\n Object.assign(this.snapshot.resolver, next.resolver);\n Object.assign(this.snapshot.cost, next.cost);\n Object.assign(this.snapshot.allocationHints, next.allocationHints);\n Object.assign(this.snapshot.batch, next.batch);\n this.snapshot.events = [];\n }\n\n incrementCounter(key: SnapshotCounterKey, delta: number = 1): void {\n if (!this.isEnabled()) {\n return;\n }\n this.snapshot.counters[key] += delta;\n }\n\n recordDeferredIneligible(reason: DeferredIneligibleReason, delta: number = 1): void {\n if (!this.isEnabled()) {\n return;\n }\n this.snapshot.deferredIneligibleByReason[reason] += delta;\n this.snapshot.counters.deferredIneligibleGraphics += delta;\n this.recordEvent('deferred-ineligible', { reason, count: delta });\n }\n\n recordCategory(category: UpdateCategory): void {\n if (!this.isEnabled()) {\n return;\n }\n if (category & UpdateCategory.PAINT) {\n this.snapshot.categoryBreakdown.paint += 1;\n }\n if (category & UpdateCategory.TRANSFORM) {\n this.snapshot.categoryBreakdown.transform += 1;\n }\n if (category & UpdateCategory.SHAPE) {\n this.snapshot.categoryBreakdown.shape += 1;\n }\n if (category & UpdateCategory.BOUNDS) {\n this.snapshot.categoryBreakdown.bounds += 1;\n }\n if (category & UpdateCategory.LAYOUT) {\n this.snapshot.categoryBreakdown.layout += 1;\n }\n if (category & UpdateCategory.PICK) {\n this.snapshot.categoryBreakdown.pick += 1;\n }\n }\n\n recordRefresh(key: SnapshotRefreshKey, delta: number = 1): void {\n if (!this.isEnabled()) {\n return;\n }\n this.snapshot.refresh[key] += delta;\n }\n\n recordResolver(key: SnapshotResolverKey, delta: number = 1): void {\n if (!this.isEnabled()) {\n return;\n }\n this.snapshot.resolver[key] += delta;\n }\n\n recordCost(kind: SnapshotCostKind, durationMs: number): void {\n if (!this.isEnabled()) {\n return;\n }\n if (kind === 'resolver') {\n this.snapshot.cost.resolverTotalMs += durationMs;\n this.snapshot.cost.resolverMaxMs = Math.max(this.snapshot.cost.resolverMaxMs, durationMs);\n return;\n }\n if (kind === 'patch') {\n this.snapshot.cost.patchTotalMs += durationMs;\n this.snapshot.cost.patchMaxMs = Math.max(this.snapshot.cost.patchMaxMs, durationMs);\n return;\n }\n if (kind === 'sharedRefresh') {\n this.snapshot.cost.sharedRefreshTotalMs += durationMs;\n this.snapshot.cost.sharedRefreshMaxMs = Math.max(this.snapshot.cost.sharedRefreshMaxMs, durationMs);\n return;\n }\n\n this.snapshot.cost.batchSliceTotalMs += durationMs;\n this.snapshot.cost.batchSliceMaxMs = Math.max(this.snapshot.cost.batchSliceMaxMs, durationMs);\n this.snapshot.batch.maxFrameSliceCost = Math.max(this.snapshot.batch.maxFrameSliceCost, durationMs);\n }\n\n recordAllocation(key: SnapshotAllocationKey, delta: number = 1): void {\n if (!this.isEnabled()) {\n return;\n }\n this.snapshot.allocationHints[key] += delta;\n }\n\n updateBatchPending(pendingJobs: number): void {\n if (!this.isEnabled()) {\n return;\n }\n this.snapshot.batch.pendingJobs = pendingJobs;\n this.snapshot.batch.maxPendingJobs = Math.max(this.snapshot.batch.maxPendingJobs, pendingJobs);\n }\n\n updateMaxGraphicsInJob(count: number): void {\n if (!this.isEnabled()) {\n return;\n }\n this.snapshot.batch.maxGraphicsInJob = Math.max(this.snapshot.batch.maxGraphicsInJob, count);\n }\n\n recordEvent(type: IStatePerfEventType, detail?: Record<string, unknown>): void {\n if (!this.shouldRecordEvents()) {\n return;\n }\n const events = this.snapshot.events ?? (this.snapshot.events = []);\n events.push({\n type,\n at: Date.now(),\n detail\n });\n const max = this.getConfig()?.maxEventRecords ?? DEFAULT_MAX_EVENT_RECORDS;\n if (events.length > max) {\n events.splice(0, events.length - max);\n }\n }\n\n private isEnabled(): boolean {\n return this.getConfig()?.enabled === true;\n }\n\n private shouldRecordEvents(): boolean {\n const config = this.getConfig();\n return !!config?.enabled && !!config.recordEvents;\n }\n\n private getConfig(): IStatePerfConfig | undefined {\n return typeof this.configSource === 'function' ? this.configSource() : this.configSource;\n }\n}\n\nexport function ensureStageStatePerfMonitor(stage: IStage): StatePerfMonitor {\n const stageAny = stage as any;\n if (!stageAny[STAGE_PERF_MONITOR]) {\n stageAny[STAGE_PERF_MONITOR] = new StatePerfMonitor(() => (stage as any).statePerfConfig);\n }\n\n return stageAny[STAGE_PERF_MONITOR] as StatePerfMonitor;\n}\n\nexport function getStageStatePerfMonitor(stage?: IStage): StatePerfMonitor | undefined {\n if (!stage) {\n return undefined;\n }\n return (stage as any)[STAGE_PERF_MONITOR] as StatePerfMonitor | undefined;\n}\n\nexport function getActiveStageStatePerfMonitor(stage?: IStage): StatePerfMonitor | undefined {\n if (!stage) {\n return undefined;\n }\n\n const current = getStageStatePerfMonitor(stage);\n if (current) {\n return current;\n }\n\n return (stage as any).statePerfConfig?.enabled === true ? ensureStageStatePerfMonitor(stage) : undefined;\n}\n"]}
@@ -1,13 +0,0 @@
1
- import type { StateProxy, StateSort } from './state-model';
2
- export type StateMergeMode = 'shallow' | 'deep';
3
- export interface IStateStyleResolverOptions {
4
- mergeMode?: StateMergeMode;
5
- }
6
- export interface IStateStyleResolver<T> {
7
- resolve: (normalAttrs: Partial<T>, states: Record<string, Partial<T>> | undefined, stateProxy: StateProxy<T> | undefined, currentStates: string[], stateSort?: StateSort) => Partial<T>;
8
- }
9
- export declare class StateStyleResolver<T extends Record<string, any> = Record<string, any>> implements IStateStyleResolver<T> {
10
- private readonly options;
11
- constructor(options?: IStateStyleResolverOptions);
12
- resolve(normalAttrs: Partial<T>, states: Record<string, Partial<T>> | undefined, stateProxy: StateProxy<T> | undefined, currentStates: string[], stateSort?: StateSort): Partial<T>;
13
- }