@visactor/vrender-core 0.16.14-alpha.4 → 0.17.0-alpha.1

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 (363) hide show
  1. package/cjs/allocator/bounds-allocate.d.ts +13 -0
  2. package/cjs/allocator/bounds-allocate.js +38 -0
  3. package/cjs/allocator/bounds-allocate.js.map +1 -0
  4. package/cjs/allocator/canvas-allocate.d.ts +2 -0
  5. package/cjs/allocator/canvas-allocate.js +7 -0
  6. package/cjs/allocator/canvas-allocate.js.map +1 -1
  7. package/cjs/allocator/graphic-allocate.d.ts +56 -1
  8. package/cjs/allocator/graphic-allocate.js +163 -1
  9. package/cjs/allocator/graphic-allocate.js.map +1 -1
  10. package/cjs/animate/Ticker/default-ticker.js +1 -1
  11. package/cjs/animate/Ticker/default-ticker.js.map +1 -1
  12. package/cjs/animate/config.js +1 -2
  13. package/cjs/animate/custom-animate.js +2 -1
  14. package/cjs/common/Reflect-metadata.js +1 -2
  15. package/cjs/common/Reflect-metadata.js.map +1 -1
  16. package/cjs/common/bezier-utils.js +2 -1
  17. package/cjs/common/inversify-lite/container/container.js +1 -3
  18. package/cjs/common/inversify-lite/container/container.js.map +1 -1
  19. package/cjs/common/inversify-lite/interfaces/interfaces.d.ts +0 -2
  20. package/cjs/common/inversify-lite/interfaces/interfaces.js.map +1 -1
  21. package/cjs/common/inversify-lite/planning/queryable_string.d.ts +0 -2
  22. package/cjs/common/inversify-lite/planning/queryable_string.js +0 -10
  23. package/cjs/common/inversify-lite/planning/queryable_string.js.map +1 -1
  24. package/cjs/common/inversify-lite/resolution/resolver.js.map +1 -1
  25. package/cjs/common/sort.js +1 -2
  26. package/cjs/common/split-path.js +2 -1
  27. package/cjs/core/contributions/layerHandler/canvas2d-contribution.d.ts +2 -2
  28. package/cjs/core/contributions/layerHandler/canvas2d-contribution.js +4 -9
  29. package/cjs/core/contributions/layerHandler/canvas2d-contribution.js.map +1 -1
  30. package/cjs/core/contributions/layerHandler/empty-contribution.d.ts +2 -2
  31. package/cjs/core/contributions/layerHandler/empty-contribution.js +4 -9
  32. package/cjs/core/contributions/layerHandler/empty-contribution.js.map +1 -1
  33. package/cjs/core/contributions/layerHandler/offscreen2d-contribution.d.ts +2 -2
  34. package/cjs/core/contributions/layerHandler/offscreen2d-contribution.js +4 -9
  35. package/cjs/core/contributions/layerHandler/offscreen2d-contribution.js.map +1 -1
  36. package/cjs/core/contributions/textMeasure/modules.js +1 -2
  37. package/cjs/core/contributions/textMeasure/modules.js.map +1 -1
  38. package/cjs/core/core-modules.js +5 -6
  39. package/cjs/core/core-modules.js.map +1 -1
  40. package/cjs/core/global.d.ts +3 -0
  41. package/cjs/core/global.js +5 -3
  42. package/cjs/core/global.js.map +1 -1
  43. package/cjs/core/graphic-utils.d.ts +2 -2
  44. package/cjs/core/graphic-utils.js +5 -11
  45. package/cjs/core/graphic-utils.js.map +1 -1
  46. package/cjs/core/layer-service.d.ts +2 -2
  47. package/cjs/core/layer-service.js +5 -10
  48. package/cjs/core/layer-service.js.map +1 -1
  49. package/cjs/core/stage.d.ts +1 -1
  50. package/cjs/core/stage.js +8 -7
  51. package/cjs/core/stage.js.map +1 -1
  52. package/cjs/core/window.d.ts +2 -2
  53. package/cjs/core/window.js +6 -11
  54. package/cjs/core/window.js.map +1 -1
  55. package/cjs/graphic/graphic-service/arc-contribution.d.ts +1 -5
  56. package/cjs/graphic/graphic-service/arc-contribution.js +0 -18
  57. package/cjs/graphic/graphic-service/arc-contribution.js.map +1 -1
  58. package/cjs/graphic/graphic-service/area-contribution.d.ts +1 -1
  59. package/cjs/graphic/graphic-service/area-contribution.js +1 -4
  60. package/cjs/graphic/graphic-service/area-contribution.js.map +1 -1
  61. package/cjs/graphic/graphic-service/circle-contribution.d.ts +1 -5
  62. package/cjs/graphic/graphic-service/circle-contribution.js +0 -18
  63. package/cjs/graphic/graphic-service/circle-contribution.js.map +1 -1
  64. package/cjs/graphic/graphic-service/common-contribution.js +2 -11
  65. package/cjs/graphic/graphic-service/common-contribution.js.map +1 -1
  66. package/cjs/graphic/graphic-service/graphic-module.js +2 -17
  67. package/cjs/graphic/graphic-service/graphic-module.js.map +1 -1
  68. package/cjs/graphic/graphic-service/graphic-service.d.ts +2 -7
  69. package/cjs/graphic/graphic-service/graphic-service.js +18 -26
  70. package/cjs/graphic/graphic-service/graphic-service.js.map +1 -1
  71. package/cjs/graphic/graphic-service/path-contribution.d.ts +1 -5
  72. package/cjs/graphic/graphic-service/path-contribution.js +0 -18
  73. package/cjs/graphic/graphic-service/path-contribution.js.map +1 -1
  74. package/cjs/graphic/graphic-service/rect-contribution.d.ts +1 -5
  75. package/cjs/graphic/graphic-service/rect-contribution.js +0 -18
  76. package/cjs/graphic/graphic-service/rect-contribution.js.map +1 -1
  77. package/cjs/graphic/graphic-service/symbol-contribution.d.ts +0 -1
  78. package/cjs/graphic/graphic-service/symbol-contribution.js +4 -13
  79. package/cjs/graphic/graphic-service/symbol-contribution.js.map +1 -1
  80. package/cjs/graphic/group.d.ts +1 -0
  81. package/cjs/graphic/group.js +7 -3
  82. package/cjs/graphic/group.js.map +1 -1
  83. package/cjs/graphic/symbol.js +7 -4
  84. package/cjs/graphic/symbol.js.map +1 -1
  85. package/cjs/graphic/theme.d.ts +4 -4
  86. package/cjs/graphic/theme.js +27 -28
  87. package/cjs/graphic/theme.js.map +1 -1
  88. package/cjs/index.d.ts +2 -0
  89. package/cjs/index.js +1 -0
  90. package/cjs/index.js.map +1 -1
  91. package/cjs/interface/allocator.d.ts +1 -0
  92. package/cjs/interface/allocator.js.map +1 -1
  93. package/cjs/interface/global.d.ts +1 -0
  94. package/cjs/interface/global.js.map +1 -1
  95. package/cjs/interface/render.d.ts +2 -2
  96. package/cjs/interface/render.js.map +1 -1
  97. package/cjs/interface/stage.d.ts +1 -1
  98. package/cjs/interface/stage.js.map +1 -1
  99. package/cjs/modules.d.ts +1 -2
  100. package/cjs/modules.js +8 -8
  101. package/cjs/modules.js.map +1 -1
  102. package/cjs/picker/global-picker-service.d.ts +2 -2
  103. package/cjs/picker/global-picker-service.js +4 -9
  104. package/cjs/picker/global-picker-service.js.map +1 -1
  105. package/cjs/picker/pick-modules.js +2 -4
  106. package/cjs/picker/pick-modules.js.map +1 -1
  107. package/cjs/picker/picker-service.d.ts +2 -2
  108. package/cjs/picker/picker-service.js +6 -6
  109. package/cjs/picker/picker-service.js.map +1 -1
  110. package/cjs/plugins/plugin-modules.js +1 -2
  111. package/cjs/plugins/plugin-modules.js.map +1 -1
  112. package/cjs/render/contributions/render/arc-render.js +2 -1
  113. package/cjs/render/contributions/render/arc-render.js.map +1 -1
  114. package/cjs/render/contributions/render/area-render.js +2 -1
  115. package/cjs/render/contributions/render/area-render.js.map +1 -1
  116. package/cjs/render/contributions/render/base-render.d.ts +1 -1
  117. package/cjs/render/contributions/render/base-render.js +3 -2
  118. package/cjs/render/contributions/render/base-render.js.map +1 -1
  119. package/cjs/render/contributions/render/circle-render.js +2 -1
  120. package/cjs/render/contributions/render/circle-render.js.map +1 -1
  121. package/cjs/render/contributions/render/contributions/arc-contribution-render.d.ts +3 -7
  122. package/cjs/render/contributions/render/contributions/arc-contribution-render.js +7 -30
  123. package/cjs/render/contributions/render/contributions/arc-contribution-render.js.map +1 -1
  124. package/cjs/render/contributions/render/contributions/area-contribution-render.d.ts +3 -4
  125. package/cjs/render/contributions/render/contributions/area-contribution-render.js +7 -21
  126. package/cjs/render/contributions/render/contributions/area-contribution-render.js.map +1 -1
  127. package/cjs/render/contributions/render/contributions/base-contribution-render.d.ts +2 -0
  128. package/cjs/render/contributions/render/contributions/base-contribution-render.js +9 -9
  129. package/cjs/render/contributions/render/contributions/base-contribution-render.js.map +1 -1
  130. package/cjs/render/contributions/render/contributions/circle-contribution-render.d.ts +3 -7
  131. package/cjs/render/contributions/render/contributions/circle-contribution-render.js +7 -30
  132. package/cjs/render/contributions/render/contributions/circle-contribution-render.js.map +1 -1
  133. package/cjs/render/contributions/render/contributions/constants.d.ts +1 -0
  134. package/cjs/render/contributions/render/contributions/constants.js +2 -2
  135. package/cjs/render/contributions/render/contributions/constants.js.map +1 -1
  136. package/cjs/render/contributions/render/contributions/group-contribution-render.d.ts +1 -0
  137. package/cjs/render/contributions/render/contributions/group-contribution-render.js +6 -12
  138. package/cjs/render/contributions/render/contributions/group-contribution-render.js.map +1 -1
  139. package/cjs/render/contributions/render/contributions/image-contribution-render.d.ts +1 -0
  140. package/cjs/render/contributions/render/contributions/image-contribution-render.js +6 -12
  141. package/cjs/render/contributions/render/contributions/image-contribution-render.js.map +1 -1
  142. package/cjs/render/contributions/render/contributions/path-contribution-render.d.ts +2 -9
  143. package/cjs/render/contributions/render/contributions/path-contribution-render.js +4 -25
  144. package/cjs/render/contributions/render/contributions/path-contribution-render.js.map +1 -1
  145. package/cjs/render/contributions/render/contributions/polygon-contribution-render.d.ts +2 -9
  146. package/cjs/render/contributions/render/contributions/polygon-contribution-render.js +4 -25
  147. package/cjs/render/contributions/render/contributions/polygon-contribution-render.js.map +1 -1
  148. package/cjs/render/contributions/render/contributions/rect-contribution-render.d.ts +5 -7
  149. package/cjs/render/contributions/render/contributions/rect-contribution-render.js +13 -36
  150. package/cjs/render/contributions/render/contributions/rect-contribution-render.js.map +1 -1
  151. package/cjs/render/contributions/render/contributions/symbol-contribution-render.d.ts +3 -7
  152. package/cjs/render/contributions/render/contributions/symbol-contribution-render.js +6 -27
  153. package/cjs/render/contributions/render/contributions/symbol-contribution-render.js.map +1 -1
  154. package/cjs/render/contributions/render/draw-contribution.d.ts +5 -6
  155. package/cjs/render/contributions/render/draw-contribution.js +18 -18
  156. package/cjs/render/contributions/render/draw-contribution.js.map +1 -1
  157. package/cjs/render/contributions/render/draw-interceptor.js +11 -9
  158. package/cjs/render/contributions/render/draw-interceptor.js.map +1 -1
  159. package/cjs/render/contributions/render/group-render.js +3 -2
  160. package/cjs/render/contributions/render/group-render.js.map +1 -1
  161. package/cjs/render/contributions/render/image-render.js +2 -1
  162. package/cjs/render/contributions/render/image-render.js.map +1 -1
  163. package/cjs/render/contributions/render/incremental-draw-contribution.d.ts +2 -6
  164. package/cjs/render/contributions/render/incremental-draw-contribution.js +8 -11
  165. package/cjs/render/contributions/render/incremental-draw-contribution.js.map +1 -1
  166. package/cjs/render/contributions/render/module.js +32 -81
  167. package/cjs/render/contributions/render/module.js.map +1 -1
  168. package/cjs/render/contributions/render/path-render.js +2 -1
  169. package/cjs/render/contributions/render/path-render.js.map +1 -1
  170. package/cjs/render/contributions/render/polygon-render.js +2 -1
  171. package/cjs/render/contributions/render/polygon-render.js.map +1 -1
  172. package/cjs/render/contributions/render/rect-render.js +3 -2
  173. package/cjs/render/contributions/render/rect-render.js.map +1 -1
  174. package/cjs/render/contributions/render/render-slector.d.ts +1 -4
  175. package/cjs/render/contributions/render/render-slector.js +0 -20
  176. package/cjs/render/contributions/render/render-slector.js.map +1 -1
  177. package/cjs/render/contributions/render/symbol-render.js +2 -1
  178. package/cjs/render/contributions/render/symbol-render.js.map +1 -1
  179. package/cjs/render/render-modules.js +1 -1
  180. package/cjs/render/render-modules.js.map +1 -1
  181. package/dist/index.js +3334 -3333
  182. package/dist/index.min.js +1 -1
  183. package/es/allocator/bounds-allocate.d.ts +13 -0
  184. package/es/allocator/bounds-allocate.js +32 -0
  185. package/es/allocator/bounds-allocate.js.map +1 -0
  186. package/es/allocator/canvas-allocate.d.ts +2 -0
  187. package/es/allocator/canvas-allocate.js +7 -0
  188. package/es/allocator/canvas-allocate.js.map +1 -1
  189. package/es/allocator/graphic-allocate.d.ts +56 -1
  190. package/es/allocator/graphic-allocate.js +155 -1
  191. package/es/allocator/graphic-allocate.js.map +1 -1
  192. package/es/animate/Ticker/default-ticker.js +1 -1
  193. package/es/animate/Ticker/default-ticker.js.map +1 -1
  194. package/es/animate/config.js +1 -2
  195. package/es/animate/custom-animate.js +2 -1
  196. package/es/common/Reflect-metadata.js +1 -2
  197. package/es/common/Reflect-metadata.js.map +1 -1
  198. package/es/common/bezier-utils.js +2 -1
  199. package/es/common/inversify-lite/container/container.js +2 -4
  200. package/es/common/inversify-lite/container/container.js.map +1 -1
  201. package/es/common/inversify-lite/interfaces/interfaces.d.ts +0 -2
  202. package/es/common/inversify-lite/interfaces/interfaces.js.map +1 -1
  203. package/es/common/inversify-lite/planning/queryable_string.d.ts +0 -2
  204. package/es/common/inversify-lite/planning/queryable_string.js +0 -10
  205. package/es/common/inversify-lite/planning/queryable_string.js.map +1 -1
  206. package/es/common/inversify-lite/resolution/resolver.js.map +1 -1
  207. package/es/common/sort.js +1 -2
  208. package/es/common/split-path.js +2 -1
  209. package/es/core/contributions/layerHandler/canvas2d-contribution.d.ts +2 -2
  210. package/es/core/contributions/layerHandler/canvas2d-contribution.js +5 -9
  211. package/es/core/contributions/layerHandler/canvas2d-contribution.js.map +1 -1
  212. package/es/core/contributions/layerHandler/empty-contribution.d.ts +2 -2
  213. package/es/core/contributions/layerHandler/empty-contribution.js +5 -9
  214. package/es/core/contributions/layerHandler/empty-contribution.js.map +1 -1
  215. package/es/core/contributions/layerHandler/offscreen2d-contribution.d.ts +2 -2
  216. package/es/core/contributions/layerHandler/offscreen2d-contribution.js +5 -9
  217. package/es/core/contributions/layerHandler/offscreen2d-contribution.js.map +1 -1
  218. package/es/core/contributions/textMeasure/modules.js +1 -1
  219. package/es/core/contributions/textMeasure/modules.js.map +1 -1
  220. package/es/core/core-modules.js +4 -6
  221. package/es/core/core-modules.js.map +1 -1
  222. package/es/core/global.d.ts +3 -0
  223. package/es/core/global.js +5 -3
  224. package/es/core/global.js.map +1 -1
  225. package/es/core/graphic-utils.d.ts +2 -2
  226. package/es/core/graphic-utils.js +7 -12
  227. package/es/core/graphic-utils.js.map +1 -1
  228. package/es/core/layer-service.d.ts +2 -2
  229. package/es/core/layer-service.js +6 -10
  230. package/es/core/layer-service.js.map +1 -1
  231. package/es/core/stage.d.ts +1 -1
  232. package/es/core/stage.js +8 -8
  233. package/es/core/stage.js.map +1 -1
  234. package/es/core/window.d.ts +2 -2
  235. package/es/core/window.js +7 -11
  236. package/es/core/window.js.map +1 -1
  237. package/es/graphic/graphic-service/arc-contribution.d.ts +1 -5
  238. package/es/graphic/graphic-service/arc-contribution.js +0 -15
  239. package/es/graphic/graphic-service/arc-contribution.js.map +1 -1
  240. package/es/graphic/graphic-service/area-contribution.d.ts +1 -1
  241. package/es/graphic/graphic-service/area-contribution.js +2 -1
  242. package/es/graphic/graphic-service/area-contribution.js.map +1 -1
  243. package/es/graphic/graphic-service/circle-contribution.d.ts +1 -5
  244. package/es/graphic/graphic-service/circle-contribution.js +0 -15
  245. package/es/graphic/graphic-service/circle-contribution.js.map +1 -1
  246. package/es/graphic/graphic-service/common-contribution.js +2 -14
  247. package/es/graphic/graphic-service/common-contribution.js.map +1 -1
  248. package/es/graphic/graphic-service/graphic-module.js +1 -23
  249. package/es/graphic/graphic-service/graphic-module.js.map +1 -1
  250. package/es/graphic/graphic-service/graphic-service.d.ts +2 -7
  251. package/es/graphic/graphic-service/graphic-service.js +19 -28
  252. package/es/graphic/graphic-service/graphic-service.js.map +1 -1
  253. package/es/graphic/graphic-service/path-contribution.d.ts +1 -5
  254. package/es/graphic/graphic-service/path-contribution.js +0 -15
  255. package/es/graphic/graphic-service/path-contribution.js.map +1 -1
  256. package/es/graphic/graphic-service/rect-contribution.d.ts +1 -5
  257. package/es/graphic/graphic-service/rect-contribution.js +0 -15
  258. package/es/graphic/graphic-service/rect-contribution.js.map +1 -1
  259. package/es/graphic/graphic-service/symbol-contribution.d.ts +0 -1
  260. package/es/graphic/graphic-service/symbol-contribution.js +2 -16
  261. package/es/graphic/graphic-service/symbol-contribution.js.map +1 -1
  262. package/es/graphic/group.d.ts +1 -0
  263. package/es/graphic/group.js +8 -1
  264. package/es/graphic/group.js.map +1 -1
  265. package/es/graphic/symbol.js +6 -4
  266. package/es/graphic/symbol.js.map +1 -1
  267. package/es/graphic/theme.d.ts +4 -4
  268. package/es/graphic/theme.js +26 -29
  269. package/es/graphic/theme.js.map +1 -1
  270. package/es/index.d.ts +2 -0
  271. package/es/index.js +4 -0
  272. package/es/index.js.map +1 -1
  273. package/es/interface/allocator.d.ts +1 -0
  274. package/es/interface/allocator.js.map +1 -1
  275. package/es/interface/global.d.ts +1 -0
  276. package/es/interface/global.js.map +1 -1
  277. package/es/interface/render.d.ts +2 -2
  278. package/es/interface/render.js.map +1 -1
  279. package/es/interface/stage.d.ts +1 -1
  280. package/es/interface/stage.js.map +1 -1
  281. package/es/modules.d.ts +1 -2
  282. package/es/modules.js +0 -4
  283. package/es/modules.js.map +1 -1
  284. package/es/picker/global-picker-service.d.ts +2 -2
  285. package/es/picker/global-picker-service.js +5 -9
  286. package/es/picker/global-picker-service.js.map +1 -1
  287. package/es/picker/pick-modules.js +1 -4
  288. package/es/picker/pick-modules.js.map +1 -1
  289. package/es/picker/picker-service.d.ts +2 -2
  290. package/es/picker/picker-service.js +5 -5
  291. package/es/picker/picker-service.js.map +1 -1
  292. package/es/plugins/plugin-modules.js +1 -2
  293. package/es/plugins/plugin-modules.js.map +1 -1
  294. package/es/render/contributions/render/arc-render.js +3 -0
  295. package/es/render/contributions/render/arc-render.js.map +1 -1
  296. package/es/render/contributions/render/area-render.js +3 -0
  297. package/es/render/contributions/render/area-render.js.map +1 -1
  298. package/es/render/contributions/render/base-render.d.ts +1 -1
  299. package/es/render/contributions/render/base-render.js +3 -2
  300. package/es/render/contributions/render/base-render.js.map +1 -1
  301. package/es/render/contributions/render/circle-render.js +3 -0
  302. package/es/render/contributions/render/circle-render.js.map +1 -1
  303. package/es/render/contributions/render/contributions/arc-contribution-render.d.ts +3 -7
  304. package/es/render/contributions/render/contributions/arc-contribution-render.js +6 -32
  305. package/es/render/contributions/render/contributions/arc-contribution-render.js.map +1 -1
  306. package/es/render/contributions/render/contributions/area-contribution-render.d.ts +3 -4
  307. package/es/render/contributions/render/contributions/area-contribution-render.js +5 -23
  308. package/es/render/contributions/render/contributions/area-contribution-render.js.map +1 -1
  309. package/es/render/contributions/render/contributions/base-contribution-render.d.ts +2 -0
  310. package/es/render/contributions/render/contributions/base-contribution-render.js +6 -10
  311. package/es/render/contributions/render/contributions/base-contribution-render.js.map +1 -1
  312. package/es/render/contributions/render/contributions/circle-contribution-render.d.ts +3 -7
  313. package/es/render/contributions/render/contributions/circle-contribution-render.js +6 -32
  314. package/es/render/contributions/render/contributions/circle-contribution-render.js.map +1 -1
  315. package/es/render/contributions/render/contributions/constants.d.ts +1 -0
  316. package/es/render/contributions/render/contributions/constants.js +2 -0
  317. package/es/render/contributions/render/contributions/constants.js.map +1 -1
  318. package/es/render/contributions/render/contributions/group-contribution-render.d.ts +1 -0
  319. package/es/render/contributions/render/contributions/group-contribution-render.js +3 -13
  320. package/es/render/contributions/render/contributions/group-contribution-render.js.map +1 -1
  321. package/es/render/contributions/render/contributions/image-contribution-render.d.ts +1 -0
  322. package/es/render/contributions/render/contributions/image-contribution-render.js +4 -14
  323. package/es/render/contributions/render/contributions/image-contribution-render.js.map +1 -1
  324. package/es/render/contributions/render/contributions/path-contribution-render.d.ts +2 -9
  325. package/es/render/contributions/render/contributions/path-contribution-render.js +3 -29
  326. package/es/render/contributions/render/contributions/path-contribution-render.js.map +1 -1
  327. package/es/render/contributions/render/contributions/polygon-contribution-render.d.ts +2 -9
  328. package/es/render/contributions/render/contributions/polygon-contribution-render.js +3 -29
  329. package/es/render/contributions/render/contributions/polygon-contribution-render.js.map +1 -1
  330. package/es/render/contributions/render/contributions/rect-contribution-render.d.ts +5 -7
  331. package/es/render/contributions/render/contributions/rect-contribution-render.js +15 -45
  332. package/es/render/contributions/render/contributions/rect-contribution-render.js.map +1 -1
  333. package/es/render/contributions/render/contributions/symbol-contribution-render.d.ts +3 -7
  334. package/es/render/contributions/render/contributions/symbol-contribution-render.js +6 -24
  335. package/es/render/contributions/render/contributions/symbol-contribution-render.js.map +1 -1
  336. package/es/render/contributions/render/draw-contribution.d.ts +5 -6
  337. package/es/render/contributions/render/draw-contribution.js +21 -19
  338. package/es/render/contributions/render/draw-contribution.js.map +1 -1
  339. package/es/render/contributions/render/draw-interceptor.js +11 -9
  340. package/es/render/contributions/render/draw-interceptor.js.map +1 -1
  341. package/es/render/contributions/render/group-render.js +4 -1
  342. package/es/render/contributions/render/group-render.js.map +1 -1
  343. package/es/render/contributions/render/image-render.js +3 -1
  344. package/es/render/contributions/render/image-render.js.map +1 -1
  345. package/es/render/contributions/render/incremental-draw-contribution.d.ts +2 -6
  346. package/es/render/contributions/render/incremental-draw-contribution.js +5 -11
  347. package/es/render/contributions/render/incremental-draw-contribution.js.map +1 -1
  348. package/es/render/contributions/render/module.js +27 -82
  349. package/es/render/contributions/render/module.js.map +1 -1
  350. package/es/render/contributions/render/path-render.js +3 -0
  351. package/es/render/contributions/render/path-render.js.map +1 -1
  352. package/es/render/contributions/render/polygon-render.js +3 -0
  353. package/es/render/contributions/render/polygon-render.js.map +1 -1
  354. package/es/render/contributions/render/rect-render.js +4 -1
  355. package/es/render/contributions/render/rect-render.js.map +1 -1
  356. package/es/render/contributions/render/render-slector.d.ts +1 -4
  357. package/es/render/contributions/render/render-slector.js +0 -15
  358. package/es/render/contributions/render/render-slector.js.map +1 -1
  359. package/es/render/contributions/render/symbol-render.js +3 -0
  360. package/es/render/contributions/render/symbol-render.js.map +1 -1
  361. package/es/render/render-modules.js +1 -1
  362. package/es/render/render-modules.js.map +1 -1
  363. package/package.json +1 -1
@@ -1 +1 @@
1
- {"version":3,"sources":["../src/graphic/graphic-service/path-contribution.ts"],"names":[],"mappings":";;;;;;;;;AAAA,gEAAyD;AACzD,+DAA6E;AAGhE,QAAA,sBAAsB,GAAG,MAAM,CAAC,GAAG,CAAC,wBAAwB,CAAC,CAAC;AAGpE,IAAM,wCAAwC,GAA9C,MAAM,wCACX,SAAQ,0DAAoC;CACP,CAAA;AAF1B,wCAAwC;IADpD,IAAA,2BAAU,GAAE;GACA,wCAAwC,CAEd;AAF1B,4FAAwC","file":"path-contribution.js","sourcesContent":["import { injectable } from '../../common/inversify-lite';\nimport { DefaultOuterBorderBoundsContribution } from './common-contribution';\nimport type { IPathBoundsContribution } from '../../interface/graphic-service';\n\nexport const PathBoundsContribution = Symbol.for('PathBoundsContribution');\n\n@injectable()\nexport class DefaultPathOuterBorderBoundsContribution\n extends DefaultOuterBorderBoundsContribution\n implements IPathBoundsContribution {}\n"]}
1
+ {"version":3,"sources":["../src/graphic/graphic-service/path-contribution.ts"],"names":[],"mappings":"","file":"path-contribution.js","sourcesContent":["// import { injectable } from '../../common/inversify-lite';\n// import { DefaultOuterBorderBoundsContribution } from './common-contribution';\n// import type { IPathBoundsContribution } from '../../interface/graphic-service';\n\n// export const PathBoundsContribution = Symbol.for('PathBoundsContribution');\n\n// @injectable()\n// export class DefaultPathOuterBorderBoundsContribution\n// extends DefaultOuterBorderBoundsContribution\n// implements IPathBoundsContribution {}\n"]}
@@ -1,5 +1 @@
1
- import type { IRectBoundsContribution } from '../../interface';
2
- import { DefaultOuterBorderBoundsContribution } from './common-contribution';
3
- export declare const RectBoundsContribution: unique symbol;
4
- export declare class DefaultRectOuterBorderBoundsContribution extends DefaultOuterBorderBoundsContribution implements IRectBoundsContribution {
5
- }
1
+
@@ -1,21 +1,3 @@
1
- "use strict";
2
1
 
3
- var __decorate = this && this.__decorate || function(decorators, target, key, desc) {
4
- var d, c = arguments.length, r = c < 3 ? target : null === desc ? desc = Object.getOwnPropertyDescriptor(target, key) : desc;
5
- if ("object" == typeof Reflect && "function" == typeof Reflect.decorate) r = Reflect.decorate(decorators, target, key, desc); else for (var i = decorators.length - 1; i >= 0; i--) (d = decorators[i]) && (r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r);
6
- return c > 3 && r && Object.defineProperty(target, key, r), r;
7
- };
8
2
 
9
- Object.defineProperty(exports, "__esModule", {
10
- value: !0
11
- }), exports.DefaultRectOuterBorderBoundsContribution = exports.RectBoundsContribution = void 0;
12
-
13
- const inversify_lite_1 = require("../../common/inversify-lite"), common_contribution_1 = require("./common-contribution");
14
-
15
- exports.RectBoundsContribution = Symbol.for("RectBoundsContribution");
16
-
17
- let DefaultRectOuterBorderBoundsContribution = class extends common_contribution_1.DefaultOuterBorderBoundsContribution {};
18
-
19
- DefaultRectOuterBorderBoundsContribution = __decorate([ (0, inversify_lite_1.injectable)() ], DefaultRectOuterBorderBoundsContribution),
20
- exports.DefaultRectOuterBorderBoundsContribution = DefaultRectOuterBorderBoundsContribution;
21
3
  //# sourceMappingURL=rect-contribution.js.map
@@ -1 +1 @@
1
- {"version":3,"sources":["../src/graphic/graphic-service/rect-contribution.ts"],"names":[],"mappings":";;;;;;;;;AAAA,gEAAyD;AAEzD,+DAA6E;AAEhE,QAAA,sBAAsB,GAAG,MAAM,CAAC,GAAG,CAAC,wBAAwB,CAAC,CAAC;AAGpE,IAAM,wCAAwC,GAA9C,MAAM,wCACX,SAAQ,0DAAoC;CACP,CAAA;AAF1B,wCAAwC;IADpD,IAAA,2BAAU,GAAE;GACA,wCAAwC,CAEd;AAF1B,4FAAwC","file":"rect-contribution.js","sourcesContent":["import { injectable } from '../../common/inversify-lite';\nimport type { IRectBoundsContribution } from '../../interface';\nimport { DefaultOuterBorderBoundsContribution } from './common-contribution';\n\nexport const RectBoundsContribution = Symbol.for('RectBoundsContribution');\n\n@injectable()\nexport class DefaultRectOuterBorderBoundsContribution\n extends DefaultOuterBorderBoundsContribution\n implements IRectBoundsContribution {}\n"]}
1
+ {"version":3,"sources":["../src/graphic/graphic-service/rect-contribution.ts"],"names":[],"mappings":"","file":"rect-contribution.js","sourcesContent":["// import { injectable } from '../../common/inversify-lite';\n// import type { IRectBoundsContribution } from '../../interface';\n// import { DefaultOuterBorderBoundsContribution } from './common-contribution';\n\n// export const RectBoundsContribution = Symbol.for('RectBoundsContribution');\n\n// @injectable()\n// export class DefaultRectOuterBorderBoundsContribution\n// extends DefaultOuterBorderBoundsContribution\n// implements IRectBoundsContribution {}\n"]}
@@ -1,7 +1,6 @@
1
1
  import type { IAABBBounds } from '@visactor/vutils';
2
2
  import type { IGraphic, ISymbolBoundsContribution, ISymbolGraphicAttribute } from '../../interface';
3
3
  import { DefaultOuterBorderBoundsContribution } from './common-contribution';
4
- export declare const SymbolBoundsContribution: unique symbol;
5
4
  export declare class DefaultSymbolOuterBorderBoundsContribution extends DefaultOuterBorderBoundsContribution implements ISymbolBoundsContribution {
6
5
  updateBounds(attribute: ISymbolGraphicAttribute, symbolTheme: Required<ISymbolGraphicAttribute>, aabbBounds: IAABBBounds, graphic?: IGraphic): IAABBBounds;
7
6
  }
@@ -1,20 +1,12 @@
1
1
  "use strict";
2
2
 
3
- var __decorate = this && this.__decorate || function(decorators, target, key, desc) {
4
- var d, c = arguments.length, r = c < 3 ? target : null === desc ? desc = Object.getOwnPropertyDescriptor(target, key) : desc;
5
- if ("object" == typeof Reflect && "function" == typeof Reflect.decorate) r = Reflect.decorate(decorators, target, key, desc); else for (var i = decorators.length - 1; i >= 0; i--) (d = decorators[i]) && (r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r);
6
- return c > 3 && r && Object.defineProperty(target, key, r), r;
7
- };
8
-
9
3
  Object.defineProperty(exports, "__esModule", {
10
4
  value: !0
11
- }), exports.DefaultSymbolOuterBorderBoundsContribution = exports.SymbolBoundsContribution = void 0;
12
-
13
- const inversify_lite_1 = require("../../common/inversify-lite"), tools_1 = require("../tools"), common_contribution_1 = require("./common-contribution");
5
+ }), exports.DefaultSymbolOuterBorderBoundsContribution = void 0;
14
6
 
15
- exports.SymbolBoundsContribution = Symbol.for("SymbolBoundsContribution");
7
+ const tools_1 = require("../tools"), common_contribution_1 = require("./common-contribution");
16
8
 
17
- let DefaultSymbolOuterBorderBoundsContribution = class extends common_contribution_1.DefaultOuterBorderBoundsContribution {
9
+ class DefaultSymbolOuterBorderBoundsContribution extends common_contribution_1.DefaultOuterBorderBoundsContribution {
18
10
  updateBounds(attribute, symbolTheme, aabbBounds, graphic) {
19
11
  const {outerBorder: outerBorder, shadowBlur: shadowBlur = symbolTheme.shadowBlur, strokeBoundsBuffer: strokeBoundsBuffer = symbolTheme.strokeBoundsBuffer} = attribute;
20
12
  if (outerBorder) {
@@ -23,8 +15,7 @@ let DefaultSymbolOuterBorderBoundsContribution = class extends common_contributi
23
15
  }
24
16
  return aabbBounds;
25
17
  }
26
- };
18
+ }
27
19
 
28
- DefaultSymbolOuterBorderBoundsContribution = __decorate([ (0, inversify_lite_1.injectable)() ], DefaultSymbolOuterBorderBoundsContribution),
29
20
  exports.DefaultSymbolOuterBorderBoundsContribution = DefaultSymbolOuterBorderBoundsContribution;
30
21
  //# sourceMappingURL=symbol-contribution.js.map
@@ -1 +1 @@
1
- {"version":3,"sources":["../src/graphic/graphic-service/symbol-contribution.ts"],"names":[],"mappings":";;;;;;;;;AACA,gEAAyD;AACzD,oCAAuC;AAEvC,+DAA6E;AAEhE,QAAA,wBAAwB,GAAG,MAAM,CAAC,GAAG,CAAC,0BAA0B,CAAC,CAAC;AAGxE,IAAM,0CAA0C,GAAhD,MAAM,0CACX,SAAQ,0DAAoC;IAG5C,YAAY,CACV,SAAkC,EAClC,WAA8C,EAC9C,UAAuB,EACvB,OAAkB;QAElB,MAAM,EACJ,WAAW,EACX,UAAU,GAAG,WAAW,CAAC,UAAU,EACnC,kBAAkB,GAAG,WAAW,CAAC,kBAAkB,EACpD,GAAG,SAAS,CAAC;QAEd,IAAI,WAAW,EAAE;YACf,MAAM,kBAAkB,GAAG,WAAW,CAAC,WAAW,CAAC;YACnD,MAAM,EAAE,QAAQ,GAAG,kBAAkB,CAAC,QAAQ,EAAE,SAAS,GAAG,kBAAkB,CAAC,SAAS,EAAE,GAAG,WAAW,CAAC;YAGzG,IAAA,mBAAW,EAAC,UAAU,EAAG,QAAmB,GAAG,CAAC,UAAU,GAAG,SAAS,CAAC,GAAG,CAAC,EAAE,IAAI,EAAE,kBAAkB,CAAC,CAAC;SACxG;QACD,OAAO,UAAU,CAAC;IACpB,CAAC;CACF,CAAA;AAzBY,0CAA0C;IADtD,IAAA,2BAAU,GAAE;GACA,0CAA0C,CAyBtD;AAzBY,gGAA0C","file":"symbol-contribution.js","sourcesContent":["import type { IAABBBounds } from '@visactor/vutils';\nimport { injectable } from '../../common/inversify-lite';\nimport { boundStroke } from '../tools';\nimport type { IGraphic, ISymbolBoundsContribution, ISymbolGraphicAttribute } from '../../interface';\nimport { DefaultOuterBorderBoundsContribution } from './common-contribution';\n\nexport const SymbolBoundsContribution = Symbol.for('SymbolBoundsContribution');\n\n@injectable()\nexport class DefaultSymbolOuterBorderBoundsContribution\n extends DefaultOuterBorderBoundsContribution\n implements ISymbolBoundsContribution\n{\n updateBounds(\n attribute: ISymbolGraphicAttribute,\n symbolTheme: Required<ISymbolGraphicAttribute>,\n aabbBounds: IAABBBounds,\n graphic?: IGraphic\n ): IAABBBounds {\n const {\n outerBorder,\n shadowBlur = symbolTheme.shadowBlur,\n strokeBoundsBuffer = symbolTheme.strokeBoundsBuffer\n } = attribute;\n\n if (outerBorder) {\n const defaultOuterBorder = symbolTheme.outerBorder;\n const { distance = defaultOuterBorder.distance, lineWidth = defaultOuterBorder.lineWidth } = outerBorder;\n\n // Symbol的distance一定是number\n boundStroke(aabbBounds, (distance as number) + (shadowBlur + lineWidth) / 2, true, strokeBoundsBuffer);\n }\n return aabbBounds;\n }\n}\n"]}
1
+ {"version":3,"sources":["../src/graphic/graphic-service/symbol-contribution.ts"],"names":[],"mappings":";;;AACA,oCAAuC;AAEvC,+DAA6E;AAK7E,MAAa,0CACX,SAAQ,0DAAoC;IAG5C,YAAY,CACV,SAAkC,EAClC,WAA8C,EAC9C,UAAuB,EACvB,OAAkB;QAElB,MAAM,EACJ,WAAW,EACX,UAAU,GAAG,WAAW,CAAC,UAAU,EACnC,kBAAkB,GAAG,WAAW,CAAC,kBAAkB,EACpD,GAAG,SAAS,CAAC;QAEd,IAAI,WAAW,EAAE;YACf,MAAM,kBAAkB,GAAG,WAAW,CAAC,WAAW,CAAC;YACnD,MAAM,EAAE,QAAQ,GAAG,kBAAkB,CAAC,QAAQ,EAAE,SAAS,GAAG,kBAAkB,CAAC,SAAS,EAAE,GAAG,WAAW,CAAC;YAGzG,IAAA,mBAAW,EAAC,UAAU,EAAG,QAAmB,GAAG,CAAC,UAAU,GAAG,SAAS,CAAC,GAAG,CAAC,EAAE,IAAI,EAAE,kBAAkB,CAAC,CAAC;SACxG;QACD,OAAO,UAAU,CAAC;IACpB,CAAC;CACF;AAzBD,gGAyBC","file":"symbol-contribution.js","sourcesContent":["import type { IAABBBounds } from '@visactor/vutils';\nimport { boundStroke } from '../tools';\nimport type { IGraphic, ISymbolBoundsContribution, ISymbolGraphicAttribute } from '../../interface';\nimport { DefaultOuterBorderBoundsContribution } from './common-contribution';\n\n// export const SymbolBoundsContribution = Symbol.for('SymbolBoundsContribution');\n\n// @injectable()\nexport class DefaultSymbolOuterBorderBoundsContribution\n extends DefaultOuterBorderBoundsContribution\n implements ISymbolBoundsContribution\n{\n updateBounds(\n attribute: ISymbolGraphicAttribute,\n symbolTheme: Required<ISymbolGraphicAttribute>,\n aabbBounds: IAABBBounds,\n graphic?: IGraphic\n ): IAABBBounds {\n const {\n outerBorder,\n shadowBlur = symbolTheme.shadowBlur,\n strokeBoundsBuffer = symbolTheme.strokeBoundsBuffer\n } = attribute;\n\n if (outerBorder) {\n const defaultOuterBorder = symbolTheme.outerBorder;\n const { distance = defaultOuterBorder.distance, lineWidth = defaultOuterBorder.lineWidth } = outerBorder;\n\n // Symbol的distance一定是number\n boundStroke(aabbBounds, (distance as number) + (shadowBlur + lineWidth) / 2, true, strokeBoundsBuffer);\n }\n return aabbBounds;\n }\n}\n"]}
@@ -53,6 +53,7 @@ export declare class Group extends Graphic<IGroupGraphicAttribute> implements IG
53
53
  containsPoint(x: number, y: number, mode: IContainPointMode): boolean;
54
54
  shouldUpdateAABBBounds(): boolean;
55
55
  protected tryUpdateAABBBounds(): AABBBounds;
56
+ protected doUpdateLocalMatrix(): void;
56
57
  protected doUpdateAABBBounds(): AABBBounds;
57
58
  protected clearUpdateBoundTag(): void;
58
59
  protected tryUpdateOBBBounds(): OBBBounds;
@@ -4,7 +4,7 @@ Object.defineProperty(exports, "__esModule", {
4
4
  value: !0
5
5
  }), exports.Group = exports.GroupUpdateAABBBoundsMode = void 0;
6
6
 
7
- const vutils_1 = require("@visactor/vutils"), application_1 = require("../application"), graphic_1 = require("./graphic"), theme_1 = require("./theme"), utils_1 = require("../common/utils"), enums_1 = require("../common/enums"), constants_1 = require("./constants");
7
+ const vutils_1 = require("@visactor/vutils"), application_1 = require("../application"), graphic_1 = require("./graphic"), theme_1 = require("./theme"), utils_1 = require("../common/utils"), enums_1 = require("../common/enums"), constants_1 = require("./constants"), config_1 = require("./config");
8
8
 
9
9
  var GroupUpdateAABBBoundsMode;
10
10
 
@@ -61,11 +61,15 @@ class Group extends graphic_1.Graphic {
61
61
  return this.addUpdateLayoutTag(), application_1.application.graphicService.afterUpdateAABBBounds(this, this.stage, this._AABBBounds, this, selfChange),
62
62
  bounds;
63
63
  }
64
+ doUpdateLocalMatrix() {
65
+ const {x: x = config_1.DefaultTransform.x, y: y = config_1.DefaultTransform.y, dx: dx = config_1.DefaultTransform.dx, dy: dy = config_1.DefaultTransform.dy, scaleX: scaleX = config_1.DefaultTransform.scaleX, scaleY: scaleY = config_1.DefaultTransform.scaleY, angle: angle = config_1.DefaultTransform.angle, postMatrix: postMatrix} = this.attribute;
66
+ if (0 !== x || 0 !== y || 0 !== dx || 0 !== dy || 1 !== scaleX || 1 !== scaleY || 0 !== angle || postMatrix) return super.doUpdateLocalMatrix();
67
+ this._transMatrix.reset();
68
+ }
64
69
  doUpdateAABBBounds() {
65
70
  const attribute = this.attribute, groupTheme = (0, theme_1.getTheme)(this).group;
66
71
  this._AABBBounds.setValue(1 / 0, 1 / 0, -1 / 0, -1 / 0);
67
- const bounds = application_1.application.graphicService.updateGroupAABBBounds(attribute, (0,
68
- theme_1.getTheme)(this).group, this._AABBBounds, this), {boundsPadding: boundsPadding = groupTheme.boundsPadding} = attribute, paddingArray = (0,
72
+ const bounds = application_1.application.graphicService.updateGroupAABBBounds(attribute, groupTheme, this._AABBBounds, this), {boundsPadding: boundsPadding = groupTheme.boundsPadding} = attribute, paddingArray = (0,
69
73
  utils_1.parsePadding)(boundsPadding);
70
74
  return paddingArray && bounds.expand(paddingArray), this.parent && this.parent.addChildUpdateBoundTag(),
71
75
  this.clearUpdateBoundTag(), this._emitCustomEvent("AAABBBoundsChange"), bounds;
@@ -1 +1 @@
1
- {"version":3,"sources":["../src/graphic/group.ts"],"names":[],"mappings":"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","file":"group.js","sourcesContent":["import type { AABBBounds, Matrix, OBBBounds } from '@visactor/vutils';\n// eslint-disable-next-line no-duplicate-imports\nimport { Point } from '@visactor/vutils';\nimport { application } from '../application';\nimport type {\n IStage,\n GraphicAttributeMap,\n INode,\n IGraphic,\n ITheme,\n IThemeSpec,\n ILayer,\n GraphicType\n} from '../interface';\nimport type { IGroup, IGroupGraphicAttribute } from '../interface/graphic/group';\nimport { Graphic, NOWORK_ANIMATE_ATTR } from './graphic';\nimport { getTheme, Theme } from './theme';\nimport { parsePadding } from '../common/utils';\nimport { UpdateTag, IContainPointMode } from '../common/enums';\nimport { GROUP_NUMBER_TYPE } from './constants';\n\n// Group更新AABBBounds的策略\nexport enum GroupUpdateAABBBoundsMode {\n // Group较少的情况,不会批量设置所有父层的tag,而是每次都查找\n LESS_GROUP = 0,\n // Group较多的情况,每次都会设置tag到最顶层\n MORE_GROUP = 1\n}\n\nexport class Group extends Graphic<IGroupGraphicAttribute> implements IGroup {\n type: GraphicType = 'group';\n parent: any = null;\n isContainer: boolean = true;\n // 子元素的更新标记\n declare _childUpdateTag: number;\n\n declare theme?: ITheme;\n\n static NOWORK_ANIMATE_ATTR = NOWORK_ANIMATE_ATTR;\n\n constructor(params: IGroupGraphicAttribute) {\n super(params);\n this.numberType = GROUP_NUMBER_TYPE;\n this._childUpdateTag = UpdateTag.UPDATE_BOUNDS;\n // this.theme = new Theme();\n }\n\n setMode(mode: '2d' | '3d') {\n mode === '3d' ? this.set3dMode() : this.set2dMode();\n }\n\n set3dMode() {\n this.in3dMode = true;\n // this.forEachChildren((c: IGraphic) => {\n // c.setMode('3d');\n // });\n }\n set2dMode() {\n this.in3dMode = false;\n // this.forEachChildren((c: IGraphic) => {\n // c.setMode('2d');\n // });\n }\n\n setTheme(t: IThemeSpec) {\n if (!this.theme) {\n this.theme = new Theme();\n }\n return this.theme.setTheme(t, this);\n }\n\n createTheme() {\n if (!this.theme) {\n this.theme = new Theme();\n }\n }\n\n hideAll() {\n this.setAttribute('visible', false);\n this.forEachChildren((item: IGraphic) => {\n if (item.isContainer && (item as any).hideAll) {\n (item as any).hideAll();\n } else {\n item.setAttribute('visible', false);\n }\n });\n }\n\n showAll() {\n this.setAttribute('visible', true);\n this.forEachChildren((item: IGraphic) => {\n if (item.isContainer && (item as any).showAll) {\n (item as any).showAll();\n } else {\n item.setAttribute('visible', true);\n }\n });\n }\n\n /**\n * 是否包含某个点(点需要是全局坐标系)\n * group containsPoint 只需要判断bounds\n * TODO: group的shape判断\n * @param x\n * @param y\n * @param mode\n * @returns\n */\n containsPoint(x: number, y: number, mode: IContainPointMode): boolean {\n if (mode === IContainPointMode.GLOBAL) {\n // 转换x,y更精准\n const point = new Point(x, y);\n if (this.parent) {\n this.parent.globalTransMatrix.transformPoint(point, point);\n }\n return this.AABBBounds.contains(point.x, point.y);\n }\n return this.AABBBounds.contains(x, y);\n }\n\n shouldUpdateAABBBounds(): boolean {\n // 检索自己是否需要更新\n if (super.shouldUpdateAABBBounds()) {\n return true;\n }\n // 检索叶子节点是否有更新(如果children是叶子节点的话)\n if (this._childUpdateTag & UpdateTag.UPDATE_BOUNDS) {\n return true;\n }\n return false;\n // // 检索是否子group需要更新\n // let needUpdate = false;\n // this.forEachChildren((node: IGraphic) => {\n // // 只查找group层级\n // if (node.isContainer && (node as Group).shouldUpdateAABBBounds()) {\n // needUpdate = true;\n // return true;\n // }\n // return false;\n // });\n // return needUpdate;\n }\n\n protected tryUpdateAABBBounds(): AABBBounds {\n if (!this.shouldUpdateAABBBounds()) {\n return this._AABBBounds;\n }\n application.graphicService.beforeUpdateAABBBounds(this, this.stage, true, this._AABBBounds);\n const selfChange = this.shouldSelfChangeUpdateAABBBounds();\n const bounds = this.doUpdateAABBBounds();\n this.addUpdateLayoutTag();\n application.graphicService.afterUpdateAABBBounds(this, this.stage, this._AABBBounds, this, selfChange);\n return bounds;\n }\n\n protected doUpdateAABBBounds(): AABBBounds {\n const attribute = this.attribute;\n const groupTheme = getTheme(this).group;\n // debugger;\n this._AABBBounds.setValue(Infinity, Infinity, -Infinity, -Infinity);\n const bounds = application.graphicService.updateGroupAABBBounds(\n attribute,\n getTheme(this).group,\n this._AABBBounds,\n this\n ) as AABBBounds;\n\n const { boundsPadding = groupTheme.boundsPadding } = attribute;\n const paddingArray = parsePadding(boundsPadding);\n if (paddingArray) {\n bounds.expand(paddingArray);\n }\n // 更新bounds之后需要设置父节点,否则tag丢失\n this.parent && this.parent.addChildUpdateBoundTag();\n this.clearUpdateBoundTag();\n\n this._emitCustomEvent('AAABBBoundsChange');\n return bounds;\n }\n\n protected clearUpdateBoundTag() {\n this._updateTag &= UpdateTag.CLEAR_BOUNDS;\n this._childUpdateTag &= UpdateTag.CLEAR_BOUNDS;\n }\n\n protected tryUpdateOBBBounds(): OBBBounds {\n throw new Error('暂不支持');\n }\n\n addUpdateBoundTag() {\n this._updateTag |= UpdateTag.UPDATE_BOUNDS; // for bounds\n if (this.parent) {\n this.parent.addChildUpdateBoundTag();\n }\n }\n\n addChildUpdateBoundTag() {\n // 如果已经设置过updateTag,那就不需要设置了\n if (this._childUpdateTag & UpdateTag.UPDATE_BOUNDS) {\n return;\n }\n // 如果没有设置过,那么继续向上设置\n this._childUpdateTag |= UpdateTag.UPDATE_BOUNDS;\n this.parent && this.parent.addChildUpdateBoundTag();\n }\n\n getTheme() {\n return this.theme.getTheme(this);\n }\n\n // getDefaultAttribute(name: string) {\n // return DefaultGroupAttribute[name];\n // }\n\n /* 场景树结构 */\n incrementalAppendChild(node: INode): INode | null {\n const data = super.appendChild(node);\n if (this.stage && data) {\n (data as unknown as this).stage = this.stage;\n (data as unknown as this).layer = this.layer;\n }\n this.addUpdateBoundTag();\n application.graphicService.onAddIncremental(node as unknown as IGraphic, this, this.stage);\n return data;\n }\n incrementalClearChild(): void {\n super.removeAllChild();\n this.addUpdateBoundTag();\n application.graphicService.onClearIncremental(this, this.stage);\n return;\n }\n\n appendChild(node: INode, addStage: boolean = true): INode | null {\n const data = super.appendChild(node);\n if (addStage && this.stage && data) {\n (data as unknown as this).setStage(this.stage, this.layer);\n }\n this.addUpdateBoundTag();\n return data;\n }\n insertBefore(newNode: INode, referenceNode: INode): INode | null {\n const data = super.insertBefore(newNode, referenceNode);\n if (this.stage && data) {\n (data as unknown as this).setStage(this.stage, this.layer);\n }\n this.addUpdateBoundTag();\n return data;\n }\n insertAfter(newNode: INode, referenceNode: INode): INode | null {\n const data = super.insertAfter(newNode, referenceNode);\n if (this.stage && data) {\n (data as unknown as this).setStage(this.stage, this.layer);\n }\n this.addUpdateBoundTag();\n return data;\n }\n insertInto(newNode: INode, idx: number): INode | null {\n const data = super.insertInto(newNode, idx);\n if (this.stage && data) {\n (data as unknown as this).setStage(this.stage, this.layer);\n }\n this.addUpdateBoundTag();\n return data;\n }\n\n removeChild(child: IGraphic): IGraphic {\n const data = super.removeChild(child);\n child.stage = null;\n application.graphicService.onRemove(child);\n this.addUpdateBoundTag();\n return data as IGraphic;\n }\n\n removeAllChild(): void {\n this.forEachChildren((child: IGraphic) => {\n application.graphicService.onRemove(child);\n });\n super.removeAllChild();\n this.addUpdateBoundTag();\n }\n\n setStage(stage?: IStage, layer?: ILayer) {\n if (this.stage !== stage) {\n this.stage = stage;\n this.layer = layer;\n this.setStageToShadowRoot(stage, layer);\n this._onSetStage && this._onSetStage(this, stage, layer);\n application.graphicService.onSetStage(this, stage);\n this.forEachChildren(item => {\n (item as any).setStage(stage, this.layer);\n });\n }\n }\n /**\n * 更新位置tag,包括全局tag和局部tag\n */\n addUpdatePositionTag() {\n super.addUpdatePositionTag();\n // 批量设置底层group的global tag\n this.forEachChildren((g: Group) => {\n if (g.isContainer) {\n g.addUpdateGlobalPositionTag();\n }\n });\n }\n /**\n * 更新全局位置tag\n */\n addUpdateGlobalPositionTag() {\n super.addUpdateGlobalPositionTag();\n // 批量设置底层group的global tag\n this.forEachChildren((g: Group) => {\n if (g.isContainer) {\n g.addUpdateGlobalPositionTag();\n }\n });\n }\n /**\n * group更新全局的transMatrix\n * @param clearTag\n * @returns\n */\n protected tryUpdateGlobalTransMatrix(clearTag: boolean = true): Matrix {\n if (this.shouldUpdateGlobalMatrix()) {\n if (!this._globalTransMatrix) {\n this._globalTransMatrix = this.parent\n ? (this.parent as IGroup).globalTransMatrix.clone()\n : this.transMatrix.clone();\n } else if (this.parent) {\n const m = (this.parent as IGroup).globalTransMatrix;\n this._globalTransMatrix.setValue(m.a, m.b, m.c, m.d, m.e, m.f);\n }\n this.doUpdateGlobalMatrix();\n clearTag && this.clearUpdateGlobalPositionTag();\n }\n return this._globalTransMatrix;\n }\n /**\n * 查找自身更新global的tag,如果存在,就更新\n * @returns\n */\n shouldUpdateGlobalMatrix(): boolean {\n const shouldUpdate = !!(this._updateTag & UpdateTag.UPDATE_GLOBAL_MATRIX);\n return shouldUpdate;\n }\n\n private _getChildByName<T extends INode = INode>(name: string, deep?: boolean): T | null {\n return this.find(node => node.name === name, deep);\n }\n\n /**\n * if graphic exist then update attributes, otherwise create a new instance\n * @param graphicName the name of graphic\n * @param attributes the attributes of graphic\n * @param graphicType the type of graphic\n * @returns the graphic instance\n */\n createOrUpdateChild<T extends keyof GraphicAttributeMap>(\n graphicName: string,\n attributes: GraphicAttributeMap[T],\n graphicType: T\n ): INode {\n let graphic = this._getChildByName(graphicName) as IGraphic;\n if (graphic) {\n graphic.setAttributes(attributes);\n } else {\n graphic = application.graphicService.creator[graphicType](attributes as any);\n graphic.name = graphicName;\n this.add(graphic);\n }\n\n return graphic;\n }\n\n clone() {\n return new Group({ ...this.attribute });\n }\n\n getNoWorkAnimateAttr(): Record<string, number> {\n return Group.NOWORK_ANIMATE_ATTR;\n }\n}\n"]}
1
+ {"version":3,"sources":["../src/graphic/group.ts"],"names":[],"mappings":"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","file":"group.js","sourcesContent":["import type { AABBBounds, Matrix, OBBBounds } from '@visactor/vutils';\n// eslint-disable-next-line no-duplicate-imports\nimport { Point } from '@visactor/vutils';\nimport { application } from '../application';\nimport type {\n IStage,\n GraphicAttributeMap,\n INode,\n IGraphic,\n ITheme,\n IThemeSpec,\n ILayer,\n GraphicType\n} from '../interface';\nimport type { IGroup, IGroupGraphicAttribute } from '../interface/graphic/group';\nimport { Graphic, NOWORK_ANIMATE_ATTR } from './graphic';\nimport { getTheme, Theme } from './theme';\nimport { parsePadding } from '../common/utils';\nimport { UpdateTag, IContainPointMode } from '../common/enums';\nimport { GROUP_NUMBER_TYPE } from './constants';\nimport { DefaultTransform } from './config';\n\n// Group更新AABBBounds的策略\nexport enum GroupUpdateAABBBoundsMode {\n // Group较少的情况,不会批量设置所有父层的tag,而是每次都查找\n LESS_GROUP = 0,\n // Group较多的情况,每次都会设置tag到最顶层\n MORE_GROUP = 1\n}\n\nexport class Group extends Graphic<IGroupGraphicAttribute> implements IGroup {\n type: GraphicType = 'group';\n parent: any = null;\n isContainer: boolean = true;\n // 子元素的更新标记\n declare _childUpdateTag: number;\n\n declare theme?: ITheme;\n\n static NOWORK_ANIMATE_ATTR = NOWORK_ANIMATE_ATTR;\n\n constructor(params: IGroupGraphicAttribute) {\n super(params);\n this.numberType = GROUP_NUMBER_TYPE;\n this._childUpdateTag = UpdateTag.UPDATE_BOUNDS;\n // this.theme = new Theme();\n }\n\n setMode(mode: '2d' | '3d') {\n mode === '3d' ? this.set3dMode() : this.set2dMode();\n }\n\n set3dMode() {\n this.in3dMode = true;\n // this.forEachChildren((c: IGraphic) => {\n // c.setMode('3d');\n // });\n }\n set2dMode() {\n this.in3dMode = false;\n // this.forEachChildren((c: IGraphic) => {\n // c.setMode('2d');\n // });\n }\n\n setTheme(t: IThemeSpec) {\n if (!this.theme) {\n this.theme = new Theme();\n }\n return this.theme.setTheme(t, this);\n }\n\n createTheme() {\n if (!this.theme) {\n this.theme = new Theme();\n }\n }\n\n hideAll() {\n this.setAttribute('visible', false);\n this.forEachChildren((item: IGraphic) => {\n if (item.isContainer && (item as any).hideAll) {\n (item as any).hideAll();\n } else {\n item.setAttribute('visible', false);\n }\n });\n }\n\n showAll() {\n this.setAttribute('visible', true);\n this.forEachChildren((item: IGraphic) => {\n if (item.isContainer && (item as any).showAll) {\n (item as any).showAll();\n } else {\n item.setAttribute('visible', true);\n }\n });\n }\n\n /**\n * 是否包含某个点(点需要是全局坐标系)\n * group containsPoint 只需要判断bounds\n * TODO: group的shape判断\n * @param x\n * @param y\n * @param mode\n * @returns\n */\n containsPoint(x: number, y: number, mode: IContainPointMode): boolean {\n if (mode === IContainPointMode.GLOBAL) {\n // 转换x,y更精准\n const point = new Point(x, y);\n if (this.parent) {\n this.parent.globalTransMatrix.transformPoint(point, point);\n }\n return this.AABBBounds.contains(point.x, point.y);\n }\n return this.AABBBounds.contains(x, y);\n }\n\n shouldUpdateAABBBounds(): boolean {\n // 检索自己是否需要更新\n if (super.shouldUpdateAABBBounds()) {\n return true;\n }\n // 检索叶子节点是否有更新(如果children是叶子节点的话)\n if (this._childUpdateTag & UpdateTag.UPDATE_BOUNDS) {\n return true;\n }\n return false;\n // // 检索是否子group需要更新\n // let needUpdate = false;\n // this.forEachChildren((node: IGraphic) => {\n // // 只查找group层级\n // if (node.isContainer && (node as Group).shouldUpdateAABBBounds()) {\n // needUpdate = true;\n // return true;\n // }\n // return false;\n // });\n // return needUpdate;\n }\n\n protected tryUpdateAABBBounds(): AABBBounds {\n if (!this.shouldUpdateAABBBounds()) {\n return this._AABBBounds;\n }\n application.graphicService.beforeUpdateAABBBounds(this, this.stage, true, this._AABBBounds);\n const selfChange = this.shouldSelfChangeUpdateAABBBounds();\n const bounds = this.doUpdateAABBBounds();\n this.addUpdateLayoutTag();\n application.graphicService.afterUpdateAABBBounds(this, this.stage, this._AABBBounds, this, selfChange);\n return bounds;\n }\n\n /**\n * 大部分group不需要更新matrix,这里特殊优化一下\n * 更新局部matrix的具体函数\n */\n protected doUpdateLocalMatrix() {\n const {\n x = DefaultTransform.x,\n y = DefaultTransform.y,\n dx = DefaultTransform.dx,\n dy = DefaultTransform.dy,\n scaleX = DefaultTransform.scaleX,\n scaleY = DefaultTransform.scaleY,\n angle = DefaultTransform.angle,\n postMatrix\n } = this.attribute;\n if (x === 0 && y === 0 && dx === 0 && dy === 0 && scaleX === 1 && scaleY === 1 && angle === 0 && !postMatrix) {\n this._transMatrix.reset();\n return;\n }\n return super.doUpdateLocalMatrix();\n }\n\n protected doUpdateAABBBounds(): AABBBounds {\n const attribute = this.attribute;\n const groupTheme = getTheme(this).group;\n // debugger;\n this._AABBBounds.setValue(Infinity, Infinity, -Infinity, -Infinity);\n const bounds = application.graphicService.updateGroupAABBBounds(\n attribute,\n groupTheme,\n this._AABBBounds,\n this\n ) as AABBBounds;\n\n const { boundsPadding = groupTheme.boundsPadding } = attribute;\n const paddingArray = parsePadding(boundsPadding);\n if (paddingArray) {\n bounds.expand(paddingArray);\n }\n // 更新bounds之后需要设置父节点,否则tag丢失\n this.parent && this.parent.addChildUpdateBoundTag();\n this.clearUpdateBoundTag();\n\n this._emitCustomEvent('AAABBBoundsChange');\n return bounds;\n }\n\n protected clearUpdateBoundTag() {\n this._updateTag &= UpdateTag.CLEAR_BOUNDS;\n this._childUpdateTag &= UpdateTag.CLEAR_BOUNDS;\n }\n\n protected tryUpdateOBBBounds(): OBBBounds {\n throw new Error('暂不支持');\n }\n\n addUpdateBoundTag() {\n this._updateTag |= UpdateTag.UPDATE_BOUNDS; // for bounds\n if (this.parent) {\n this.parent.addChildUpdateBoundTag();\n }\n }\n\n addChildUpdateBoundTag() {\n // 如果已经设置过updateTag,那就不需要设置了\n if (this._childUpdateTag & UpdateTag.UPDATE_BOUNDS) {\n return;\n }\n // 如果没有设置过,那么继续向上设置\n this._childUpdateTag |= UpdateTag.UPDATE_BOUNDS;\n this.parent && this.parent.addChildUpdateBoundTag();\n }\n\n getTheme() {\n return this.theme.getTheme(this);\n }\n\n // getDefaultAttribute(name: string) {\n // return DefaultGroupAttribute[name];\n // }\n\n /* 场景树结构 */\n incrementalAppendChild(node: INode): INode | null {\n const data = super.appendChild(node);\n if (this.stage && data) {\n (data as unknown as this).stage = this.stage;\n (data as unknown as this).layer = this.layer;\n }\n this.addUpdateBoundTag();\n application.graphicService.onAddIncremental(node as unknown as IGraphic, this, this.stage);\n return data;\n }\n incrementalClearChild(): void {\n super.removeAllChild();\n this.addUpdateBoundTag();\n application.graphicService.onClearIncremental(this, this.stage);\n return;\n }\n\n appendChild(node: INode, addStage: boolean = true): INode | null {\n const data = super.appendChild(node);\n if (addStage && this.stage && data) {\n (data as unknown as this).setStage(this.stage, this.layer);\n }\n this.addUpdateBoundTag();\n return data;\n }\n insertBefore(newNode: INode, referenceNode: INode): INode | null {\n const data = super.insertBefore(newNode, referenceNode);\n if (this.stage && data) {\n (data as unknown as this).setStage(this.stage, this.layer);\n }\n this.addUpdateBoundTag();\n return data;\n }\n insertAfter(newNode: INode, referenceNode: INode): INode | null {\n const data = super.insertAfter(newNode, referenceNode);\n if (this.stage && data) {\n (data as unknown as this).setStage(this.stage, this.layer);\n }\n this.addUpdateBoundTag();\n return data;\n }\n insertInto(newNode: INode, idx: number): INode | null {\n const data = super.insertInto(newNode, idx);\n if (this.stage && data) {\n (data as unknown as this).setStage(this.stage, this.layer);\n }\n this.addUpdateBoundTag();\n return data;\n }\n\n removeChild(child: IGraphic): IGraphic {\n const data = super.removeChild(child);\n child.stage = null;\n application.graphicService.onRemove(child);\n this.addUpdateBoundTag();\n return data as IGraphic;\n }\n\n removeAllChild(): void {\n this.forEachChildren((child: IGraphic) => {\n application.graphicService.onRemove(child);\n });\n super.removeAllChild();\n this.addUpdateBoundTag();\n }\n\n setStage(stage?: IStage, layer?: ILayer) {\n if (this.stage !== stage) {\n this.stage = stage;\n this.layer = layer;\n this.setStageToShadowRoot(stage, layer);\n this._onSetStage && this._onSetStage(this, stage, layer);\n application.graphicService.onSetStage(this, stage);\n this.forEachChildren(item => {\n (item as any).setStage(stage, this.layer);\n });\n }\n }\n /**\n * 更新位置tag,包括全局tag和局部tag\n */\n addUpdatePositionTag() {\n super.addUpdatePositionTag();\n // 批量设置底层group的global tag\n this.forEachChildren((g: Group) => {\n if (g.isContainer) {\n g.addUpdateGlobalPositionTag();\n }\n });\n }\n /**\n * 更新全局位置tag\n */\n addUpdateGlobalPositionTag() {\n super.addUpdateGlobalPositionTag();\n // 批量设置底层group的global tag\n this.forEachChildren((g: Group) => {\n if (g.isContainer) {\n g.addUpdateGlobalPositionTag();\n }\n });\n }\n /**\n * group更新全局的transMatrix\n * @param clearTag\n * @returns\n */\n protected tryUpdateGlobalTransMatrix(clearTag: boolean = true): Matrix {\n if (this.shouldUpdateGlobalMatrix()) {\n if (!this._globalTransMatrix) {\n this._globalTransMatrix = this.parent\n ? (this.parent as IGroup).globalTransMatrix.clone()\n : this.transMatrix.clone();\n } else if (this.parent) {\n const m = (this.parent as IGroup).globalTransMatrix;\n this._globalTransMatrix.setValue(m.a, m.b, m.c, m.d, m.e, m.f);\n }\n this.doUpdateGlobalMatrix();\n clearTag && this.clearUpdateGlobalPositionTag();\n }\n return this._globalTransMatrix;\n }\n /**\n * 查找自身更新global的tag,如果存在,就更新\n * @returns\n */\n shouldUpdateGlobalMatrix(): boolean {\n const shouldUpdate = !!(this._updateTag & UpdateTag.UPDATE_GLOBAL_MATRIX);\n return shouldUpdate;\n }\n\n private _getChildByName<T extends INode = INode>(name: string, deep?: boolean): T | null {\n return this.find(node => node.name === name, deep);\n }\n\n /**\n * if graphic exist then update attributes, otherwise create a new instance\n * @param graphicName the name of graphic\n * @param attributes the attributes of graphic\n * @param graphicType the type of graphic\n * @returns the graphic instance\n */\n createOrUpdateChild<T extends keyof GraphicAttributeMap>(\n graphicName: string,\n attributes: GraphicAttributeMap[T],\n graphicType: T\n ): INode {\n let graphic = this._getChildByName(graphicName) as IGraphic;\n if (graphic) {\n graphic.setAttributes(attributes);\n } else {\n graphic = application.graphicService.creator[graphicType](attributes as any);\n graphic.name = graphicName;\n this.add(graphic);\n }\n\n return graphic;\n }\n\n clone() {\n return new Group({ ...this.attribute });\n }\n\n getNoWorkAnimateAttr(): Record<string, number> {\n return Group.NOWORK_ANIMATE_ATTR;\n }\n}\n"]}
@@ -4,7 +4,7 @@ Object.defineProperty(exports, "__esModule", {
4
4
  value: !0
5
5
  }), exports.Symbol = void 0;
6
6
 
7
- const vutils_1 = require("@visactor/vutils"), vutils_2 = require("@visactor/vutils"), builtin_symbol_1 = require("./builtin-symbol"), graphic_1 = require("./graphic"), utils_1 = require("../common/utils"), theme_1 = require("./theme"), application_1 = require("../application"), custom_path2d_1 = require("../common/custom-path2d"), constants_1 = require("./constants"), xml_1 = require("../common/xml"), parser_1 = require("../common/xml/parser"), SYMBOL_UPDATE_TAG_KEY = [ "symbolType", "size", ...graphic_1.GRAPHIC_UPDATE_TAG_KEY ];
7
+ const vutils_1 = require("@visactor/vutils"), vutils_2 = require("@visactor/vutils"), builtin_symbol_1 = require("./builtin-symbol"), graphic_1 = require("./graphic"), utils_1 = require("../common/utils"), theme_1 = require("./theme"), application_1 = require("../application"), custom_path2d_1 = require("../common/custom-path2d"), constants_1 = require("./constants"), xml_1 = require("../common/xml"), parser_1 = require("../common/xml/parser"), _tempBounds = new vutils_1.AABBBounds, SYMBOL_UPDATE_TAG_KEY = [ "symbolType", "size", ...graphic_1.GRAPHIC_UPDATE_TAG_KEY ];
8
8
 
9
9
  class Symbol extends graphic_1.Graphic {
10
10
  constructor(params = {
@@ -32,7 +32,9 @@ class Symbol extends graphic_1.Graphic {
32
32
  if (!0 === (0, parser_1.isSvg)(symbolType)) {
33
33
  const parser = new xml_1.XMLParser, {svg: svg} = parser.parse(symbolType);
34
34
  if (!svg) return null;
35
- const path = (0, vutils_2.isArray)(svg.path) ? svg.path : [ svg.path ], b = new vutils_1.AABBBounds, cacheList = [];
35
+ const path = (0, vutils_2.isArray)(svg.path) ? svg.path : [ svg.path ];
36
+ _tempBounds.clear();
37
+ const cacheList = [];
36
38
  path.forEach((item => {
37
39
  const cache = (new custom_path2d_1.CustomPath2D).fromString(item.d), attribute = {
38
40
  fill: "black"
@@ -42,9 +44,10 @@ class Symbol extends graphic_1.Graphic {
42
44
  })), cacheList.push({
43
45
  path: cache,
44
46
  attribute: attribute
45
- }), b.union(cache.bounds);
47
+ }), _tempBounds.union(cache.bounds);
46
48
  }));
47
- const width = b.width(), height = b.height(), scale = 1 / (0, vutils_2.max)(width, height);
49
+ const width = _tempBounds.width(), height = _tempBounds.height(), scale = 1 / (0,
50
+ vutils_2.max)(width, height);
48
51
  return cacheList.forEach((cache => cache.path.transform(0, 0, scale, scale))), this._parsedPath = new builtin_symbol_1.CustomSymbolClass(symbolType, cacheList, !0),
49
52
  Symbol.userSymbolMap[symbolType] = this._parsedPath, this._parsedPath;
50
53
  }
@@ -1 +1 @@
1
- {"version":3,"sources":["../src/graphic/symbol.ts"],"names":[],"mappings":"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","file":"symbol.js","sourcesContent":["import type { OBBBounds } from '@visactor/vutils';\nimport { AABBBounds } from '@visactor/vutils';\nimport { isArray, max } from '@visactor/vutils';\nimport type { ISymbol, ISymbolClass, ISymbolGraphicAttribute } from '../interface';\nimport { builtinSymbolsMap, CustomSymbolClass } from './builtin-symbol';\nimport { Graphic, GRAPHIC_UPDATE_TAG_KEY, NOWORK_ANIMATE_ATTR } from './graphic';\nimport { parsePadding } from '../common/utils';\nimport { getTheme } from './theme';\nimport { application } from '../application';\nimport { CustomPath2D } from '../common/custom-path2d';\nimport { SVG_PARSE_ATTRIBUTE_MAP, SVG_PARSE_ATTRIBUTE_MAP_KEYS, SYMBOL_NUMBER_TYPE } from './constants';\nimport { XMLParser } from '../common/xml';\nimport { isSvg } from '../common/xml/parser';\n\nconst SYMBOL_UPDATE_TAG_KEY = ['symbolType', 'size', ...GRAPHIC_UPDATE_TAG_KEY];\n\n/**\n * symbol\n */\nexport class Symbol extends Graphic<ISymbolGraphicAttribute> implements ISymbol {\n type: 'symbol' = 'symbol';\n\n static userSymbolMap: Record<string, ISymbolClass> = {};\n\n static NOWORK_ANIMATE_ATTR = {\n symbolType: 1,\n ...NOWORK_ANIMATE_ATTR\n };\n\n constructor(params: ISymbolGraphicAttribute = { symbolType: 'circle' }) {\n super(params);\n this.numberType = SYMBOL_NUMBER_TYPE;\n }\n\n protected _parsedPath?: ISymbolClass;\n\n getParsedPath(): ISymbolClass {\n if (this.shouldUpdateShape()) {\n this.doUpdateParsedPath();\n this.clearUpdateShapeTag();\n }\n return this._parsedPath as ISymbolClass;\n }\n\n isValid(): boolean {\n return super.isValid() && this._isValid();\n }\n private _isValid(): boolean {\n const { size } = this.attribute;\n return isArray(size) ? size.length === 2 && size.every(this._validNumber) : this._validNumber(size);\n }\n\n protected doUpdateParsedPath(): ISymbolClass {\n const symbolTheme = getTheme(this).symbol;\n // 查找内置symbol\n const { symbolType = symbolTheme.symbolType } = this.attribute;\n let path = builtinSymbolsMap[symbolType];\n if (path) {\n this._parsedPath = path;\n return path;\n }\n path = Symbol.userSymbolMap[symbolType];\n if (path) {\n this._parsedPath = path;\n return path;\n }\n\n // 判断是否是svg\n const valid = isSvg(symbolType);\n if (valid === true) {\n const parser = new XMLParser();\n const { svg } = parser.parse(symbolType);\n if (!svg) {\n return null;\n }\n const path = isArray(svg.path) ? svg.path : [svg.path];\n const b = new AABBBounds();\n const cacheList: { path: CustomPath2D; attribute: Record<string, any> }[] = [];\n path.forEach((item: any) => {\n const cache = new CustomPath2D().fromString(item.d);\n const attribute = {\n fill: 'black'\n };\n SVG_PARSE_ATTRIBUTE_MAP_KEYS.forEach(k => {\n if (item[k]) {\n attribute[SVG_PARSE_ATTRIBUTE_MAP[k]] = item[k];\n }\n });\n // 查找\n cacheList.push({\n path: cache,\n attribute\n });\n b.union(cache.bounds);\n });\n const width = b.width();\n const height = b.height();\n // 规范化到1\n const maxWH = max(width, height);\n const scale = 1 / maxWH;\n cacheList.forEach(cache => cache.path.transform(0, 0, scale, scale));\n\n this._parsedPath = new CustomSymbolClass(symbolType, cacheList, true);\n Symbol.userSymbolMap[symbolType] = this._parsedPath;\n return this._parsedPath;\n }\n\n const cache = new CustomPath2D().fromString(symbolType);\n const width = cache.bounds.width();\n const height = cache.bounds.height();\n // 规范化到1\n const maxWH = max(width, height);\n const scale = 1 / maxWH;\n cache.transform(0, 0, scale, scale);\n this._parsedPath = new CustomSymbolClass(symbolType, cache);\n Symbol.userSymbolMap[symbolType] = this._parsedPath;\n return this._parsedPath;\n }\n\n protected doUpdateAABBBounds(full?: boolean): AABBBounds {\n const symbolTheme = getTheme(this).symbol;\n this._AABBBounds.setValue(Infinity, Infinity, -Infinity, -Infinity);\n const attribute = this.attribute;\n const bounds = application.graphicService.updateSymbolAABBBounds(\n attribute,\n getTheme(this).symbol,\n this._AABBBounds,\n full,\n this\n );\n\n const { boundsPadding = symbolTheme.boundsPadding } = attribute;\n const paddingArray = parsePadding(boundsPadding);\n if (paddingArray) {\n (bounds as AABBBounds).expand(paddingArray);\n }\n\n this.clearUpdateBoundTag();\n return bounds as AABBBounds;\n }\n\n protected tryUpdateOBBBounds(): OBBBounds {\n throw new Error('暂不支持');\n }\n\n getDefaultAttribute(name: string) {\n const symbolTheme = getTheme(this).symbol;\n return symbolTheme[name];\n }\n\n protected needUpdateTags(keys: string[]): boolean {\n return super.needUpdateTags(keys, SYMBOL_UPDATE_TAG_KEY);\n }\n protected needUpdateTag(key: string): boolean {\n return super.needUpdateTag(key, SYMBOL_UPDATE_TAG_KEY);\n }\n\n toCustomPath() {\n const symbolInstance = this.getParsedPath();\n const size = this.attribute.size;\n const x = 0;\n const y = 0;\n const formattedSize = isArray(size) ? size : [size, size];\n\n return symbolInstance.path\n ? new CustomPath2D().fromCustomPath2D(symbolInstance.path, x, y, formattedSize[0], formattedSize[1])\n : new CustomPath2D().fromString(symbolInstance.pathStr, x, y, formattedSize[0], formattedSize[1]);\n }\n\n clone() {\n return new Symbol({ ...this.attribute });\n }\n\n getNoWorkAnimateAttr(): Record<string, number> {\n return Symbol.NOWORK_ANIMATE_ATTR;\n }\n}\n\n// addAttributeToPrototype(DefaultSymbolStyle, Symbol, PURE_STYLE_KEY);\n"]}
1
+ {"version":3,"sources":["../src/graphic/symbol.ts"],"names":[],"mappings":"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","file":"symbol.js","sourcesContent":["import type { OBBBounds } from '@visactor/vutils';\nimport { AABBBounds } from '@visactor/vutils';\nimport { isArray, max } from '@visactor/vutils';\nimport type { ISymbol, ISymbolClass, ISymbolGraphicAttribute } from '../interface';\nimport { builtinSymbolsMap, CustomSymbolClass } from './builtin-symbol';\nimport { Graphic, GRAPHIC_UPDATE_TAG_KEY, NOWORK_ANIMATE_ATTR } from './graphic';\nimport { parsePadding } from '../common/utils';\nimport { getTheme } from './theme';\nimport { application } from '../application';\nimport { CustomPath2D } from '../common/custom-path2d';\nimport { SVG_PARSE_ATTRIBUTE_MAP, SVG_PARSE_ATTRIBUTE_MAP_KEYS, SYMBOL_NUMBER_TYPE } from './constants';\nimport { XMLParser } from '../common/xml';\nimport { isSvg } from '../common/xml/parser';\n\nconst _tempBounds = new AABBBounds();\n\nconst SYMBOL_UPDATE_TAG_KEY = ['symbolType', 'size', ...GRAPHIC_UPDATE_TAG_KEY];\n\n/**\n * symbol\n */\nexport class Symbol extends Graphic<ISymbolGraphicAttribute> implements ISymbol {\n type: 'symbol' = 'symbol';\n\n static userSymbolMap: Record<string, ISymbolClass> = {};\n\n static NOWORK_ANIMATE_ATTR = {\n symbolType: 1,\n ...NOWORK_ANIMATE_ATTR\n };\n\n constructor(params: ISymbolGraphicAttribute = { symbolType: 'circle' }) {\n super(params);\n this.numberType = SYMBOL_NUMBER_TYPE;\n }\n\n protected _parsedPath?: ISymbolClass;\n\n getParsedPath(): ISymbolClass {\n if (this.shouldUpdateShape()) {\n this.doUpdateParsedPath();\n this.clearUpdateShapeTag();\n }\n return this._parsedPath as ISymbolClass;\n }\n\n isValid(): boolean {\n return super.isValid() && this._isValid();\n }\n private _isValid(): boolean {\n const { size } = this.attribute;\n return isArray(size) ? size.length === 2 && size.every(this._validNumber) : this._validNumber(size);\n }\n\n protected doUpdateParsedPath(): ISymbolClass {\n const symbolTheme = getTheme(this).symbol;\n // 查找内置symbol\n const { symbolType = symbolTheme.symbolType } = this.attribute;\n let path = builtinSymbolsMap[symbolType];\n if (path) {\n this._parsedPath = path;\n return path;\n }\n path = Symbol.userSymbolMap[symbolType];\n if (path) {\n this._parsedPath = path;\n return path;\n }\n\n // 判断是否是svg\n const valid = isSvg(symbolType);\n if (valid === true) {\n const parser = new XMLParser();\n const { svg } = parser.parse(symbolType);\n if (!svg) {\n return null;\n }\n const path = isArray(svg.path) ? svg.path : [svg.path];\n _tempBounds.clear();\n const cacheList: { path: CustomPath2D; attribute: Record<string, any> }[] = [];\n path.forEach((item: any) => {\n const cache = new CustomPath2D().fromString(item.d);\n const attribute = {\n fill: 'black'\n };\n SVG_PARSE_ATTRIBUTE_MAP_KEYS.forEach(k => {\n if (item[k]) {\n attribute[SVG_PARSE_ATTRIBUTE_MAP[k]] = item[k];\n }\n });\n // 查找\n cacheList.push({\n path: cache,\n attribute\n });\n _tempBounds.union(cache.bounds);\n });\n const width = _tempBounds.width();\n const height = _tempBounds.height();\n // 规范化到1\n const maxWH = max(width, height);\n const scale = 1 / maxWH;\n cacheList.forEach(cache => cache.path.transform(0, 0, scale, scale));\n\n this._parsedPath = new CustomSymbolClass(symbolType, cacheList, true);\n Symbol.userSymbolMap[symbolType] = this._parsedPath;\n return this._parsedPath;\n }\n\n const cache = new CustomPath2D().fromString(symbolType);\n const width = cache.bounds.width();\n const height = cache.bounds.height();\n // 规范化到1\n const maxWH = max(width, height);\n const scale = 1 / maxWH;\n cache.transform(0, 0, scale, scale);\n this._parsedPath = new CustomSymbolClass(symbolType, cache);\n Symbol.userSymbolMap[symbolType] = this._parsedPath;\n return this._parsedPath;\n }\n\n protected doUpdateAABBBounds(full?: boolean): AABBBounds {\n const symbolTheme = getTheme(this).symbol;\n this._AABBBounds.setValue(Infinity, Infinity, -Infinity, -Infinity);\n const attribute = this.attribute;\n const bounds = application.graphicService.updateSymbolAABBBounds(\n attribute,\n getTheme(this).symbol,\n this._AABBBounds,\n full,\n this\n );\n\n const { boundsPadding = symbolTheme.boundsPadding } = attribute;\n const paddingArray = parsePadding(boundsPadding);\n if (paddingArray) {\n (bounds as AABBBounds).expand(paddingArray);\n }\n\n this.clearUpdateBoundTag();\n return bounds as AABBBounds;\n }\n\n protected tryUpdateOBBBounds(): OBBBounds {\n throw new Error('暂不支持');\n }\n\n getDefaultAttribute(name: string) {\n const symbolTheme = getTheme(this).symbol;\n return symbolTheme[name];\n }\n\n protected needUpdateTags(keys: string[]): boolean {\n return super.needUpdateTags(keys, SYMBOL_UPDATE_TAG_KEY);\n }\n protected needUpdateTag(key: string): boolean {\n return super.needUpdateTag(key, SYMBOL_UPDATE_TAG_KEY);\n }\n\n toCustomPath() {\n const symbolInstance = this.getParsedPath();\n const size = this.attribute.size;\n const x = 0;\n const y = 0;\n const formattedSize = isArray(size) ? size : [size, size];\n\n return symbolInstance.path\n ? new CustomPath2D().fromCustomPath2D(symbolInstance.path, x, y, formattedSize[0], formattedSize[1])\n : new CustomPath2D().fromString(symbolInstance.pathStr, x, y, formattedSize[0], formattedSize[1]);\n }\n\n clone() {\n return new Symbol({ ...this.attribute });\n }\n\n getNoWorkAnimateAttr(): Record<string, number> {\n return Symbol.NOWORK_ANIMATE_ATTR;\n }\n}\n\n// addAttributeToPrototype(DefaultSymbolStyle, Symbol, PURE_STYLE_KEY);\n"]}
@@ -1,18 +1,18 @@
1
- import type { IGraphicAttribute, IFullThemeSpec, IGraphic, IGroup, ITheme, IThemeSpec } from '../interface';
1
+ import type { IFullThemeSpec, IGraphic, IGroup, ITheme, IThemeSpec } from '../interface';
2
2
  export declare function newThemeObj(): IFullThemeSpec;
3
3
  export declare class Theme implements ITheme {
4
4
  combinedTheme: IFullThemeSpec;
5
5
  userTheme?: IThemeSpec;
6
- commonTheme?: Partial<IGraphicAttribute>;
7
6
  protected _defaultTheme: IFullThemeSpec;
8
7
  dirty: boolean;
9
8
  constructor();
9
+ initTheme(): void;
10
10
  getTheme(group?: IGroup): IFullThemeSpec;
11
11
  getParentWithTheme(group: IGroup): IGroup;
12
12
  applyTheme(group: IGroup, pt: IThemeSpec, force?: boolean): IThemeSpec;
13
- protected doCombine(parentTheme: IThemeSpec): void;
14
- resetTheme(t: IThemeSpec, g: IGroup): void;
13
+ protected doCombine(parentCombinedTheme?: IThemeSpec): void;
15
14
  setTheme(t: IThemeSpec, g: IGroup): void;
15
+ resetTheme(t: IThemeSpec, g: IGroup): void;
16
16
  dirtyChildren(g: IGroup): void;
17
17
  }
18
18
  export declare const globalTheme: Theme;
@@ -4,7 +4,7 @@ Object.defineProperty(exports, "__esModule", {
4
4
  value: !0
5
5
  }), exports.getThemeFromGroup = exports.getTheme = exports.globalTheme = exports.Theme = exports.newThemeObj = void 0;
6
6
 
7
- const vutils_1 = require("@visactor/vutils"), config_1 = require("./config"), defaultThemeObj = {
7
+ const config_1 = require("./config"), defaultThemeObj = {
8
8
  arc: config_1.DefaultArcAttribute,
9
9
  area: config_1.DefaultAreaAttribute,
10
10
  circle: config_1.DefaultCircleAttribute,
@@ -42,27 +42,24 @@ function newThemeObj() {
42
42
  };
43
43
  }
44
44
 
45
- function combineTheme(out, t, rewrite = !0) {
46
- t && (rewrite ? Object.keys(t).forEach((k => {
47
- out[k] ? Object.assign(out[k], t[k]) : out[k] = t[k];
48
- })) : Object.keys(t).forEach((k => {
49
- if (out[k]) {
50
- const outItem = out[k], tItem = t[k];
51
- Object.keys(t[k]).forEach((kItem => {
52
- void 0 === outItem[kItem] && (outItem[kItem] = tItem[kItem]);
53
- }));
54
- } else out[k] = t[k];
55
- })));
45
+ function combine(out, t) {
46
+ Object.keys(t).forEach((k => {
47
+ out[k] = t[k];
48
+ }));
56
49
  }
57
50
 
58
51
  exports.newThemeObj = newThemeObj;
59
52
 
60
- const staticThemePools = new Array(60).fill(0).map((() => newThemeObj()));
53
+ const globalThemeObj = newThemeObj();
61
54
 
62
55
  class Theme {
63
56
  constructor() {
64
- this._defaultTheme = staticThemePools.pop() || newThemeObj(), this.combinedTheme = this._defaultTheme,
65
- this.dirty = !1;
57
+ this.initTheme(), this.dirty = !1;
58
+ }
59
+ initTheme() {
60
+ this._defaultTheme = {}, themeKeys.forEach((key => {
61
+ this._defaultTheme[key] = Object.create(globalThemeObj[key]);
62
+ })), this.combinedTheme = this._defaultTheme;
66
63
  }
67
64
  getTheme(group) {
68
65
  if (!group) return this.combinedTheme;
@@ -81,30 +78,32 @@ class Theme {
81
78
  const parentGroup = this.getParentWithTheme(group);
82
79
  if (parentGroup) {
83
80
  const parentTheme = parentGroup.theme;
84
- (parentTheme.dirty || force) && parentTheme.applyTheme(parentGroup, pt, !0), this.userTheme ? combineTheme(this.userTheme, parentTheme.userTheme, !1) : this.userTheme = (0,
85
- vutils_1.clone)(parentTheme.userTheme), combineTheme(pt, parentTheme.userTheme);
81
+ (parentTheme.dirty || force) && parentTheme.applyTheme(parentGroup, pt, !0);
86
82
  }
87
- this.userTheme ? this.doCombine(pt) : (parentGroup ? this.combinedTheme = parentGroup.theme.combinedTheme : (this.combinedTheme = this._defaultTheme,
88
- console.warn("未知错误,走到不应该走的区域里")), this.dirty = !1);
83
+ this.userTheme ? this.doCombine(parentGroup && parentGroup.theme.combinedTheme) : (parentGroup ? this.combinedTheme = parentGroup.theme.combinedTheme : console.warn("未知错误,走到不应该走的区域里"),
84
+ this.dirty = !1);
89
85
  }
90
86
  return this.combinedTheme;
91
87
  }
92
- doCombine(parentTheme) {
93
- const userTheme = this.userTheme, defaultTheme = this._defaultTheme, combinedTheme = this.combinedTheme, parentCommonTheme = parentTheme.common || {}, commonTheme = Object.assign(parentCommonTheme, this.commonTheme);
88
+ doCombine(parentCombinedTheme) {
89
+ const userTheme = this.userTheme, combinedTheme = this.combinedTheme;
94
90
  themeKeys.forEach((k => {
95
- var _a, _b;
96
- userTheme[k] || commonTheme || parentTheme[k] ? combinedTheme[k] = Object.assign({}, defaultTheme[k], null != commonTheme ? commonTheme : {}, null !== (_a = parentTheme[k]) && void 0 !== _a ? _a : {}, null !== (_b = userTheme[k]) && void 0 !== _b ? _b : {}) : combinedTheme[k] = defaultTheme[k];
91
+ const obj = Object.create(globalThemeObj[k]);
92
+ parentCombinedTheme && parentCombinedTheme[k] && combine(obj, parentCombinedTheme[k]),
93
+ combinedTheme[k] && combine(obj, combinedTheme[k]), userTheme[k] && combine(obj, userTheme[k]),
94
+ this.combinedTheme[k] = obj;
95
+ })), userTheme.common && themeKeys.forEach((k => {
96
+ combine(this.combinedTheme[k], userTheme.common);
97
97
  })), this.dirty = !1;
98
98
  }
99
- resetTheme(t, g) {
100
- this.userTheme = t, this.dirty = !0, this.dirtyChildren(g);
101
- }
102
99
  setTheme(t, g) {
103
100
  let userTheme = this.userTheme;
104
101
  userTheme ? Object.keys(t).forEach((k => {
105
102
  userTheme[k] ? Object.assign(userTheme[k], t[k]) : userTheme[k] = Object.assign({}, t[k]);
106
- })) : userTheme = t, t.common && (this.commonTheme ? Object.assign(this.commonTheme, t.common) : this.commonTheme = t.common),
107
- this.userTheme = userTheme, this.dirty = !0, this.dirtyChildren(g);
103
+ })) : userTheme = t, this.userTheme = userTheme, this.dirty = !0, this.dirtyChildren(g);
104
+ }
105
+ resetTheme(t, g) {
106
+ this.userTheme = t, this.dirty = !0, this.dirtyChildren(g);
108
107
  }
109
108
  dirtyChildren(g) {
110
109
  g.forEachChildren((item => {
@@ -1 +1 @@
1
- {"version":3,"sources":["../src/graphic/theme.ts"],"names":[],"mappings":";;;AAAA,6CAAyC;AAEzC,qCAgBkB;AAElB,MAAM,eAAe,GAAG;IACtB,GAAG,EAAE,4BAAmB;IACxB,IAAI,EAAE,6BAAoB;IAC1B,MAAM,EAAE,+BAAsB;IAC9B,IAAI,EAAE,6BAAoB;IAC1B,IAAI,EAAE,6BAAoB;IAC1B,MAAM,EAAE,+BAAsB;IAC9B,IAAI,EAAE,6BAAoB;IAC1B,IAAI,EAAE,6BAAoB;IAC1B,MAAM,EAAE,+BAAsB;IAC9B,OAAO,EAAE,gCAAuB;IAChC,QAAQ,EAAE,iCAAwB;IAClC,YAAY,EAAE,qCAA4B;IAC1C,KAAK,EAAE,8BAAqB;IAC5B,KAAK,EAAE,8BAAqB;IAC5B,KAAK,EAAE,8BAAqB;CAC7B,CAAC;AAEF,MAAM,SAAS,GAAG,MAAM,CAAC,IAAI,CAAC,eAAe,CAAC,CAAC;AAE/C,SAAgB,WAAW;IACzB,OAAO;QACL,GAAG,EAAE,MAAM,CAAC,MAAM,CAAC,EAAE,EAAE,eAAe,CAAC,GAAG,CAAC;QAC3C,IAAI,EAAE,MAAM,CAAC,MAAM,CAAC,EAAE,EAAE,eAAe,CAAC,IAAI,CAAC;QAC7C,MAAM,EAAE,MAAM,CAAC,MAAM,CAAC,EAAE,EAAE,eAAe,CAAC,MAAM,CAAC;QACjD,IAAI,EAAE,MAAM,CAAC,MAAM,CAAC,EAAE,EAAE,eAAe,CAAC,IAAI,CAAC;QAC7C,IAAI,EAAE,MAAM,CAAC,MAAM,CAAC,EAAE,EAAE,eAAe,CAAC,IAAI,CAAC;QAC7C,MAAM,EAAE,MAAM,CAAC,MAAM,CAAC,EAAE,EAAE,eAAe,CAAC,MAAM,CAAC;QACjD,IAAI,EAAE,MAAM,CAAC,MAAM,CAAC,EAAE,EAAE,eAAe,CAAC,IAAI,CAAC;QAC7C,IAAI,EAAE,MAAM,CAAC,MAAM,CAAC,EAAE,EAAE,eAAe,CAAC,IAAI,CAAC;QAC7C,MAAM,EAAE,MAAM,CAAC,MAAM,CAAC,EAAE,EAAE,eAAe,CAAC,MAAM,CAAC;QACjD,OAAO,EAAE,MAAM,CAAC,MAAM,CAAC,EAAE,EAAE,eAAe,CAAC,OAAO,CAAC;QACnD,QAAQ,EAAE,MAAM,CAAC,MAAM,CAAC,EAAE,EAAE,eAAe,CAAC,QAAQ,CAAC;QACrD,YAAY,EAAE,MAAM,CAAC,MAAM,CAAC,EAAE,EAAE,eAAe,CAAC,YAAY,CAAC;QAC7D,KAAK,EAAE,MAAM,CAAC,MAAM,CAAC,EAAE,EAAE,eAAe,CAAC,KAAK,CAAC;QAC/C,KAAK,EAAE,MAAM,CAAC,MAAM,CAAC,EAAE,EAAE,eAAe,CAAC,KAAK,CAAC;QAC/C,KAAK,EAAE,MAAM,CAAC,MAAM,CAAC,EAAE,EAAE,eAAe,CAAC,KAAK,CAAC;KAChD,CAAC;AACJ,CAAC;AAlBD,kCAkBC;AAGD,SAAS,YAAY,CAAC,GAAe,EAAE,CAAa,EAAE,UAAmB,IAAI;IAC3E,IAAI,CAAC,CAAC,EAAE;QACN,OAAO;KACR;IACD,IAAI,OAAO,EAAE;QACX,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE;YACzB,IAAI,GAAG,CAAC,CAAC,CAAC,EAAE;gBACV,MAAM,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;aAC7B;iBAAM;gBACL,GAAG,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC;aACf;QACH,CAAC,CAAC,CAAC;KACJ;SAAM;QACL,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE;YACzB,IAAI,GAAG,CAAC,CAAC,CAAC,EAAE;gBAEV,MAAM,OAAO,GAAG,GAAG,CAAC,CAAC,CAAC,CAAC;gBACvB,MAAM,KAAK,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC;gBACnB,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,KAAK,CAAC,EAAE;oBAChC,IAAI,OAAO,CAAC,KAAK,CAAC,KAAK,SAAS,EAAE;wBAChC,OAAO,CAAC,KAAK,CAAC,GAAG,KAAK,CAAC,KAAK,CAAC,CAAC;qBAC/B;gBACH,CAAC,CAAC,CAAC;aACJ;iBAAM;gBACL,GAAG,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC;aACf;QACH,CAAC,CAAC,CAAC;KACJ;AACH,CAAC;AAGD,MAAM,gBAAgB,GAAG,IAAI,KAAK,CAAC,EAAE,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,GAAG,EAAE,CAAC,WAAW,EAAE,CAAC,CAAC;AAexE,MAAa,KAAK;IAgBhB;QAEE,IAAI,CAAC,aAAa,GAAG,gBAAgB,CAAC,GAAG,EAAE,IAAI,WAAW,EAAE,CAAC;QAC7D,IAAI,CAAC,aAAa,GAAG,IAAI,CAAC,aAAa,CAAC;QACxC,IAAI,CAAC,KAAK,GAAG,KAAK,CAAC;IACrB,CAAC;IAED,QAAQ,CAAC,KAAc;QACrB,IAAI,CAAC,KAAK,EAAE;YACV,OAAO,IAAI,CAAC,aAAa,CAAC;SAC3B;QACD,IAAI,CAAC,IAAI,CAAC,KAAK,EAAE;YACf,OAAO,IAAI,CAAC,aAAa,CAAC;SAC3B;QACD,IAAI,WAAW,GAAG,EAAE,CAAC;QACrB,MAAM,WAAW,GAAG,IAAI,CAAC,kBAAkB,CAAC,KAAK,CAAC,CAAC;QACnD,IAAI,WAAW,EAAE;YACf,WAAW,GAAG,WAAW,CAAC,KAAK,CAAC;SACjC;QACD,IAAI,CAAC,UAAU,CAAC,KAAK,EAAE,WAAW,CAAC,CAAC;QACpC,OAAO,IAAI,CAAC,aAAa,CAAC;IAC5B,CAAC;IAGD,kBAAkB,CAAC,KAAa;QAC9B,OAAO,KAAK,CAAC,MAAM,EAAE;YACnB,KAAK,GAAG,KAAK,CAAC,MAAM,CAAC;YACrB,IAAI,KAAK,CAAC,KAAK,EAAE;gBACf,OAAO,KAAK,CAAC;aACd;SACF;QACD,OAAO,IAAI,CAAC;IACd,CAAC;IAGD,UAAU,CAAC,KAAa,EAAE,EAAc,EAAE,QAAiB,KAAK;QAC9D,IAAI,IAAI,CAAC,KAAK,EAAE;YACd,MAAM,WAAW,GAAG,IAAI,CAAC,kBAAkB,CAAC,KAAK,CAAC,CAAC;YACnD,IAAI,WAAW,EAAE;gBACf,MAAM,WAAW,GAAG,WAAW,CAAC,KAAK,CAAC;gBACtC,IAAI,WAAW,CAAC,KAAK,IAAI,KAAK,EAAE;oBAE9B,WAAW,CAAC,UAAU,CAAC,WAAW,EAAE,EAAE,EAAE,IAAI,CAAC,CAAC;iBAC/C;gBAED,IAAI,CAAC,IAAI,CAAC,SAAS,EAAE;oBACnB,IAAI,CAAC,SAAS,GAAG,IAAA,cAAK,EAAC,WAAW,CAAC,SAAS,CAAC,CAAC;iBAC/C;qBAAM;oBACL,YAAY,CAAC,IAAI,CAAC,SAAS,EAAE,WAAW,CAAC,SAAS,EAAE,KAAK,CAAC,CAAC;iBAC5D;gBACD,YAAY,CAAC,EAAE,EAAE,WAAW,CAAC,SAAS,CAAC,CAAC;aACzC;YAED,IAAI,CAAC,IAAI,CAAC,SAAS,EAAE;gBACnB,IAAI,WAAW,EAAE;oBACf,IAAI,CAAC,aAAa,GAAG,WAAW,CAAC,KAAK,CAAC,aAAa,CAAC;iBACtD;qBAAM;oBACL,IAAI,CAAC,aAAa,GAAG,IAAI,CAAC,aAAa,CAAC;oBACxC,OAAO,CAAC,IAAI,CAAC,iBAAiB,CAAC,CAAC;iBACjC;gBACD,IAAI,CAAC,KAAK,GAAG,KAAK,CAAC;aACpB;iBAAM;gBACL,IAAI,CAAC,SAAS,CAAC,EAAE,CAAC,CAAC;aACpB;SACF;QAED,OAAO,IAAI,CAAC,aAAa,CAAC;IAC5B,CAAC;IAGS,SAAS,CAAC,WAAuB;QACzC,MAAM,SAAS,GAAG,IAAI,CAAC,SAAS,CAAC;QACjC,MAAM,YAAY,GAAG,IAAI,CAAC,aAAa,CAAC;QACxC,MAAM,aAAa,GAAG,IAAI,CAAC,aAAa,CAAC;QACzC,MAAM,iBAAiB,GAAG,WAAW,CAAC,MAAM,IAAI,EAAE,CAAC;QACnD,MAAM,WAAW,GAAG,MAAM,CAAC,MAAM,CAAC,iBAAiB,EAAE,IAAI,CAAC,WAAW,CAAC,CAAC;QAEvE,SAAS,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE;;YACpB,IAAI,SAAS,CAAC,CAAC,CAAC,IAAI,WAAW,IAAI,WAAW,CAAC,CAAC,CAAC,EAAE;gBACjD,aAAa,CAAC,CAAC,CAAC,GAAG,MAAM,CAAC,MAAM,CAC9B,EAAE,EACF,YAAY,CAAC,CAAC,CAAC,EACf,WAAW,aAAX,WAAW,cAAX,WAAW,GAAI,EAAE,EACjB,MAAA,WAAW,CAAC,CAAC,CAAC,mCAAI,EAAE,EACpB,MAAA,SAAS,CAAC,CAAC,CAAC,mCAAI,EAAE,CACnB,CAAC;aACH;iBAAM;gBACL,aAAa,CAAC,CAAC,CAAC,GAAG,YAAY,CAAC,CAAC,CAAC,CAAC;aACpC;QACH,CAAC,CAAC,CAAC;QACH,IAAI,CAAC,KAAK,GAAG,KAAK,CAAC;IACrB,CAAC;IAED,UAAU,CAAC,CAAa,EAAE,CAAS;QACjC,IAAI,CAAC,SAAS,GAAG,CAAC,CAAC;QAEnB,IAAI,CAAC,KAAK,GAAG,IAAI,CAAC;QAClB,IAAI,CAAC,aAAa,CAAC,CAAC,CAAC,CAAC;IACxB,CAAC;IAED,QAAQ,CAAC,CAAa,EAAE,CAAS;QAE/B,IAAI,SAAS,GAAG,IAAI,CAAC,SAAS,CAAC;QAC/B,IAAI,SAAS,EAAE;YACb,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE;gBACzB,IAAI,SAAS,CAAC,CAAC,CAAC,EAAE;oBAChB,MAAM,CAAC,MAAM,CAAC,SAAS,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;iBACnC;qBAAM;oBAEL,SAAS,CAAC,CAAC,CAAC,GAAG,MAAM,CAAC,MAAM,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;iBACxC;YACH,CAAC,CAAC,CAAC;SACJ;aAAM;YACL,SAAS,GAAG,CAAC,CAAC;SACf;QACD,IAAI,CAAC,CAAC,MAAM,EAAE;YACZ,IAAI,CAAC,IAAI,CAAC,WAAW,EAAE;gBACrB,IAAI,CAAC,WAAW,GAAG,CAAC,CAAC,MAAM,CAAC;aAC7B;iBAAM;gBACL,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC,WAAW,EAAE,CAAC,CAAC,MAAM,CAAC,CAAC;aAC3C;SACF;QACD,IAAI,CAAC,SAAS,GAAG,SAAS,CAAC;QAE3B,IAAI,CAAC,KAAK,GAAG,IAAI,CAAC;QAClB,IAAI,CAAC,aAAa,CAAC,CAAC,CAAC,CAAC;IACxB,CAAC;IAED,aAAa,CAAC,CAAS;QACrB,CAAC,CAAC,eAAe,CAAC,IAAI,CAAC,EAAE;YACvB,IAAK,IAAe,CAAC,WAAW,EAAE;gBAChC,IAAK,IAAe,CAAC,KAAK,EAAE;oBACzB,IAAe,CAAC,KAAK,CAAC,KAAK,GAAG,IAAI,CAAC;iBACrC;gBACD,IAAI,CAAC,aAAa,CAAC,IAAc,CAAC,CAAC;aACpC;QACH,CAAC,CAAC,CAAC;IACL,CAAC;CAcF;AAvKD,sBAuKC;AAEY,QAAA,WAAW,GAAG,IAAI,KAAK,EAAE,CAAC;AAEvC,SAAgB,QAAQ,CAAC,OAAiB,EAAE,KAAsB;IAChE,IAAI,OAAO,CAAC,SAAS,EAAE;QACrB,OAAO,QAAQ,CAAC,OAAO,CAAC,SAAS,CAAC,CAAC;KACpC;IACD,IAAI,KAAK,EAAE;QACT,IAAI,OAAO,CAAC,WAAW,EAAE;YAEvB,OAAO,KAAK,CAAC;SACd;QACD,OAAO,KAAK,CAAC;KACd;IAED,OAAO,iBAAiB,CAAC,OAAO,CAAC,IAAI,mBAAW,CAAC,QAAQ,EAAE,CAAC;AAC9D,CAAC;AAbD,4BAaC;AAED,SAAgB,iBAAiB,CAAC,OAAiB;IACjD,IAAI,CAAS,CAAC;IACd,IAAI,OAAO,CAAC,WAAW,EAAE;QAEvB,CAAC,GAAG,OAAiB,CAAC;KACvB;SAAM;QACL,CAAC,GAAG,OAAO,CAAC,MAAM,CAAC;KACpB;IAED,IAAI,CAAC,EAAE;QACL,OAAO,CAAC,EAAE;YACR,IAAI,CAAC,CAAC,KAAK,EAAE;gBACX,MAAM;aACP;YACD,CAAC,GAAG,CAAC,CAAC,MAAM,CAAC;SACd;QACD,IAAI,CAAC,CAAC,EAAE;YACN,OAAO,mBAAW,CAAC,QAAQ,EAAE,CAAC;SAC/B;QACD,IAAI,CAAC,CAAC,CAAC,KAAK,EAAE;YACZ,CAAC,CAAC,WAAW,EAAE,CAAC;SACjB;QACD,OAAO,CAAC,CAAC,KAAK,CAAC,QAAQ,CAAC,CAAW,CAAC,CAAC;KACtC;IACD,OAAO,IAAI,CAAC;AACd,CAAC;AAzBD,8CAyBC","file":"theme.js","sourcesContent":["import { clone } from '@visactor/vutils';\nimport type { IGraphicAttribute, IFullThemeSpec, IGraphic, IGroup, ITheme, IThemeSpec } from '../interface';\nimport {\n DefaultArcAttribute,\n DefaultAreaAttribute,\n DefaultCircleAttribute,\n DefaultGlyphAttribute,\n DefaultGroupAttribute,\n DefaultImageAttribute,\n DefaultLineAttribute,\n DefaultPathAttribute,\n DefaultPolygonAttribute,\n DefaultRect3dAttribute,\n DefaultRectAttribute,\n DefaultSymbolAttribute,\n DefaultTextAttribute,\n DefaultRichTextAttribute,\n DefaultRichTextIconAttribute\n} from './config';\n\nconst defaultThemeObj = {\n arc: DefaultArcAttribute,\n area: DefaultAreaAttribute,\n circle: DefaultCircleAttribute,\n line: DefaultLineAttribute,\n path: DefaultPathAttribute,\n symbol: DefaultSymbolAttribute,\n text: DefaultTextAttribute,\n rect: DefaultRectAttribute,\n rect3d: DefaultRect3dAttribute,\n polygon: DefaultPolygonAttribute,\n richtext: DefaultRichTextAttribute,\n richtextIcon: DefaultRichTextIconAttribute,\n image: DefaultImageAttribute,\n group: DefaultGroupAttribute,\n glyph: DefaultGlyphAttribute\n};\n\nconst themeKeys = Object.keys(defaultThemeObj);\n\nexport function newThemeObj(): IFullThemeSpec {\n return {\n arc: Object.assign({}, defaultThemeObj.arc),\n area: Object.assign({}, defaultThemeObj.area),\n circle: Object.assign({}, defaultThemeObj.circle),\n line: Object.assign({}, defaultThemeObj.line),\n path: Object.assign({}, defaultThemeObj.path),\n symbol: Object.assign({}, defaultThemeObj.symbol),\n text: Object.assign({}, defaultThemeObj.text),\n rect: Object.assign({}, defaultThemeObj.rect),\n rect3d: Object.assign({}, defaultThemeObj.rect3d),\n polygon: Object.assign({}, defaultThemeObj.polygon),\n richtext: Object.assign({}, defaultThemeObj.richtext),\n richtextIcon: Object.assign({}, defaultThemeObj.richtextIcon),\n image: Object.assign({}, defaultThemeObj.image),\n group: Object.assign({}, defaultThemeObj.group),\n glyph: Object.assign({}, defaultThemeObj.glyph)\n };\n}\n\n// 将t合并到out中\nfunction combineTheme(out: IThemeSpec, t: IThemeSpec, rewrite: boolean = true) {\n if (!t) {\n return;\n }\n if (rewrite) {\n Object.keys(t).forEach(k => {\n if (out[k]) {\n Object.assign(out[k], t[k]);\n } else {\n out[k] = t[k];\n }\n });\n } else {\n Object.keys(t).forEach(k => {\n if (out[k]) {\n // Object.assign(out[k], t[k]);\n const outItem = out[k];\n const tItem = t[k];\n Object.keys(t[k]).forEach(kItem => {\n if (outItem[kItem] === undefined) {\n outItem[kItem] = tItem[kItem];\n }\n });\n } else {\n out[k] = t[k];\n }\n });\n }\n}\n\n// 全局创建60个theme,节省打点耗时时间\nconst staticThemePools = new Array(60).fill(0).map(() => newThemeObj());\n\n// // 性能优化,没有修改的theme都使用这个\n// const defaultCommontTheme = newThemeObj();\n\n// function combineTheme(out: IThemeSpec, userTheme: IThemeSpec, defaultTheme: IFullThemeSpec) {\n\n// }\n\n// 优先级:\n// 1. userTheme\n// 2. commonTheme\n// 3. parentTheme\n// 4. defaultTheme\n\nexport class Theme implements ITheme {\n // 当前的总theme,最终合并后的theme\n combinedTheme: IFullThemeSpec;\n\n // 记录累计应用的所有用户设置上的theme\n userTheme?: IThemeSpec;\n // 公共属性,有些属性所有图元都生效,那就放在common位置\n commonTheme?: Partial<IGraphicAttribute>;\n\n // // 记录下一次设置的theme,同时也作为一个dirty位,记录是否存在没有合并的theme\n // nextTheme?: IThemeSpec;\n\n protected _defaultTheme: IFullThemeSpec;\n\n dirty: boolean;\n\n constructor() {\n // group数量不多,问题不大\n this._defaultTheme = staticThemePools.pop() || newThemeObj();\n this.combinedTheme = this._defaultTheme;\n this.dirty = false;\n }\n\n getTheme(group?: IGroup) {\n if (!group) {\n return this.combinedTheme;\n }\n if (!this.dirty) {\n return this.combinedTheme;\n }\n let parentTheme = {};\n const parentGroup = this.getParentWithTheme(group);\n if (parentGroup) {\n parentTheme = parentGroup.theme;\n }\n this.applyTheme(group, parentTheme);\n return this.combinedTheme;\n }\n\n // 获取具有主题的parent\n getParentWithTheme(group: IGroup) {\n while (group.parent) {\n group = group.parent;\n if (group.theme) {\n return group;\n }\n }\n return null;\n }\n\n // 应用主题,从根节点一直触发到当前节点(如果上层节点需要的话)\n applyTheme(group: IGroup, pt: IThemeSpec, force: boolean = false): IThemeSpec {\n if (this.dirty) {\n const parentGroup = this.getParentWithTheme(group);\n if (parentGroup) {\n const parentTheme = parentGroup.theme;\n if (parentTheme.dirty || force) {\n // 强制apply所有的上层\n parentTheme.applyTheme(parentGroup, pt, true);\n }\n // 将parentTheme.userTheme设置给自己的userTheme\n if (!this.userTheme) {\n this.userTheme = clone(parentTheme.userTheme);\n } else {\n combineTheme(this.userTheme, parentTheme.userTheme, false);\n }\n combineTheme(pt, parentTheme.userTheme);\n }\n // 如果当前节点没有userTheme的话,直接复用上层\n if (!this.userTheme) {\n if (parentGroup) {\n this.combinedTheme = parentGroup.theme.combinedTheme;\n } else {\n this.combinedTheme = this._defaultTheme;\n console.warn('未知错误,走到不应该走的区域里');\n }\n this.dirty = false;\n } else {\n this.doCombine(pt);\n }\n }\n\n return this.combinedTheme;\n }\n\n // 合并userTheme到combinedTheme\n protected doCombine(parentTheme: IThemeSpec) {\n const userTheme = this.userTheme;\n const defaultTheme = this._defaultTheme;\n const combinedTheme = this.combinedTheme;\n const parentCommonTheme = parentTheme.common || {};\n const commonTheme = Object.assign(parentCommonTheme, this.commonTheme);\n // combineTheme({}, this.userTheme, this._defaultTheme);\n themeKeys.forEach(k => {\n if (userTheme[k] || commonTheme || parentTheme[k]) {\n combinedTheme[k] = Object.assign(\n {},\n defaultTheme[k],\n commonTheme ?? {},\n parentTheme[k] ?? {},\n userTheme[k] ?? {}\n );\n } else {\n combinedTheme[k] = defaultTheme[k];\n }\n });\n this.dirty = false;\n }\n\n resetTheme(t: IThemeSpec, g: IGroup) {\n this.userTheme = t;\n // 设置自己和子节点的theme都为dirty\n this.dirty = true;\n this.dirtyChildren(g);\n }\n\n setTheme(t: IThemeSpec, g: IGroup) {\n // 设置自己的nextTheme\n let userTheme = this.userTheme;\n if (userTheme) {\n Object.keys(t).forEach(k => {\n if (userTheme[k]) {\n Object.assign(userTheme[k], t[k]);\n } else {\n // todo,这里调用次数不多,应该问题不大\n userTheme[k] = Object.assign({}, t[k]);\n }\n });\n } else {\n userTheme = t;\n }\n if (t.common) {\n if (!this.commonTheme) {\n this.commonTheme = t.common;\n } else {\n Object.assign(this.commonTheme, t.common);\n }\n }\n this.userTheme = userTheme;\n // 设置自己和子节点的theme都为dirty\n this.dirty = true;\n this.dirtyChildren(g);\n }\n\n dirtyChildren(g: IGroup) {\n g.forEachChildren(item => {\n if ((item as IGroup).isContainer) {\n if ((item as IGroup).theme) {\n (item as IGroup).theme.dirty = true;\n }\n this.dirtyChildren(item as IGroup);\n }\n });\n }\n\n // // 设置theme到子元素,直接设置到currentTheme中去\n // setThemeToChildrenCurrentTheme(t :IThemeSpec, g: IGroup) {\n // g.forEachChildren((item) => {\n // if ((item as IGroup).isContainer) {\n // const currentTheme = (item as IGroup).theme.currentTheme;\n // Object.keys(t).forEach(k => {\n // Object.assign(currentTheme[k], t[k]);\n // });\n // this.setThemeToChildrenCurrentTheme(t, item as IGroup);\n // }\n // })\n // }\n}\n\nexport const globalTheme = new Theme();\n\nexport function getTheme(graphic: IGraphic, theme?: IFullThemeSpec): IFullThemeSpec {\n if (graphic.glyphHost) {\n return getTheme(graphic.glyphHost);\n }\n if (theme) {\n if (graphic.isContainer) {\n // 暂时不支持Group\n return theme;\n }\n return theme;\n }\n\n return getThemeFromGroup(graphic) || globalTheme.getTheme();\n}\n\nexport function getThemeFromGroup(graphic: IGraphic): IFullThemeSpec | null {\n let g: IGroup;\n if (graphic.isContainer) {\n // 找到存在theme的group\n g = graphic as IGroup;\n } else {\n g = graphic.parent;\n }\n\n if (g) {\n while (g) {\n if (g.theme) {\n break;\n }\n g = g.parent;\n }\n if (!g) {\n return globalTheme.getTheme();\n }\n if (!g.theme) {\n g.createTheme();\n }\n return g.theme.getTheme(g as IGroup);\n }\n return null;\n}\n"]}
1
+ {"version":3,"sources":["../src/graphic/theme.ts"],"names":[],"mappings":"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","file":"theme.js","sourcesContent":["import { clone } from '@visactor/vutils';\nimport type { IGraphicAttribute, IFullThemeSpec, IGraphic, IGroup, ITheme, IThemeSpec } from '../interface';\nimport {\n DefaultArcAttribute,\n DefaultAreaAttribute,\n DefaultCircleAttribute,\n DefaultGlyphAttribute,\n DefaultGroupAttribute,\n DefaultImageAttribute,\n DefaultLineAttribute,\n DefaultPathAttribute,\n DefaultPolygonAttribute,\n DefaultRect3dAttribute,\n DefaultRectAttribute,\n DefaultSymbolAttribute,\n DefaultTextAttribute,\n DefaultRichTextAttribute,\n DefaultRichTextIconAttribute\n} from './config';\n\nconst defaultThemeObj = {\n arc: DefaultArcAttribute,\n area: DefaultAreaAttribute,\n circle: DefaultCircleAttribute,\n line: DefaultLineAttribute,\n path: DefaultPathAttribute,\n symbol: DefaultSymbolAttribute,\n text: DefaultTextAttribute,\n rect: DefaultRectAttribute,\n rect3d: DefaultRect3dAttribute,\n polygon: DefaultPolygonAttribute,\n richtext: DefaultRichTextAttribute,\n richtextIcon: DefaultRichTextIconAttribute,\n image: DefaultImageAttribute,\n group: DefaultGroupAttribute,\n glyph: DefaultGlyphAttribute\n};\n\nconst themeKeys = Object.keys(defaultThemeObj);\n\nexport function newThemeObj(): IFullThemeSpec {\n return {\n arc: Object.assign({}, defaultThemeObj.arc),\n area: Object.assign({}, defaultThemeObj.area),\n circle: Object.assign({}, defaultThemeObj.circle),\n line: Object.assign({}, defaultThemeObj.line),\n path: Object.assign({}, defaultThemeObj.path),\n symbol: Object.assign({}, defaultThemeObj.symbol),\n text: Object.assign({}, defaultThemeObj.text),\n rect: Object.assign({}, defaultThemeObj.rect),\n rect3d: Object.assign({}, defaultThemeObj.rect3d),\n polygon: Object.assign({}, defaultThemeObj.polygon),\n richtext: Object.assign({}, defaultThemeObj.richtext),\n richtextIcon: Object.assign({}, defaultThemeObj.richtextIcon),\n image: Object.assign({}, defaultThemeObj.image),\n group: Object.assign({}, defaultThemeObj.group),\n glyph: Object.assign({}, defaultThemeObj.glyph)\n };\n}\n\n// /**\n// * 将t合并到out中\n// * @param out\n// * @param t\n// * @param rewrite 是否重写out的属性\n// * @returns\n// */\n// function combineTheme(out: IThemeSpec, t: IThemeSpec, rewrite: boolean = true) {\n// if (!t) {\n// return;\n// }\n// if (rewrite) {\n// Object.keys(t).forEach(k => {\n// if (out[k]) {\n// Object.assign(out[k], t[k]);\n// } else {\n// out[k] = t[k];\n// }\n// });\n// } else {\n// Object.keys(t).forEach(k => {\n// if (out[k]) {\n// // Object.assign(out[k], t[k]);\n// const outItem = out[k];\n// const tItem = t[k];\n// Object.keys(t[k]).forEach(kItem => {\n// if (outItem[kItem] === undefined) {\n// outItem[kItem] = tItem[kItem];\n// }\n// });\n// } else {\n// out[k] = t[k];\n// }\n// });\n// }\n// }\n\nfunction combine(out: Record<string, any>, t: Record<string, any>) {\n Object.keys(t).forEach(k => {\n out[k] = t[k];\n });\n}\n\nconst globalThemeObj = newThemeObj();\n\n// // 性能优化,没有修改的theme都使用这个\n// const defaultCommontTheme = newThemeObj();\n\n// function combineTheme(out: IThemeSpec, userTheme: IThemeSpec, defaultTheme: IFullThemeSpec) {\n\n// }\n\n// 优先级:\n// 1. userTheme\n// 2. commonTheme\n// 3. parentTheme\n// 4. defaultTheme\n\n// 使用原型链来保存主题,避免大量的merge操作\nexport class Theme implements ITheme {\n // 当前的总theme,最终合并后的theme\n combinedTheme: IFullThemeSpec;\n // 记录累计应用的所有用户设置上的theme\n userTheme?: IThemeSpec;\n\n protected _defaultTheme: IFullThemeSpec;\n\n dirty: boolean;\n\n constructor() {\n this.initTheme();\n this.dirty = false;\n }\n\n initTheme() {\n this._defaultTheme = {} as any;\n themeKeys.forEach(key => {\n this._defaultTheme[key] = Object.create(globalThemeObj[key]);\n });\n this.combinedTheme = this._defaultTheme;\n }\n\n /**\n * 获取group上应该有的主题配置\n * @param group\n * @returns\n */\n getTheme(group?: IGroup) {\n if (!group) {\n return this.combinedTheme;\n }\n if (!this.dirty) {\n return this.combinedTheme;\n }\n let parentTheme = {};\n const parentGroup = this.getParentWithTheme(group);\n if (parentGroup) {\n parentTheme = parentGroup.theme;\n }\n this.applyTheme(group, parentTheme);\n return this.combinedTheme;\n }\n\n // 获取具有主题的parent\n getParentWithTheme(group: IGroup) {\n while (group.parent) {\n group = group.parent;\n if (group.theme) {\n return group;\n }\n }\n return null;\n }\n\n // 应用主题,从根节点一直触发到当前节点(如果上层节点需要的话)\n applyTheme(group: IGroup, pt: IThemeSpec, force: boolean = false): IThemeSpec {\n if (this.dirty) {\n const parentGroup = this.getParentWithTheme(group);\n if (parentGroup) {\n const parentTheme = parentGroup.theme;\n if (parentTheme.dirty || force) {\n // 强制apply所有的上层\n parentTheme.applyTheme(parentGroup, pt, true);\n }\n }\n // 如果当前节点没有userTheme的话,直接复用上层的combinedTheme\n // 或者直接用默认的theme\n if (!this.userTheme) {\n if (parentGroup) {\n this.combinedTheme = parentGroup.theme.combinedTheme;\n } else {\n console.warn('未知错误,走到不应该走的区域里');\n }\n this.dirty = false;\n } else {\n this.doCombine(parentGroup && parentGroup.theme.combinedTheme);\n }\n }\n\n return this.combinedTheme;\n }\n\n // 合并userTheme到combinedTheme\n protected doCombine(parentCombinedTheme?: IThemeSpec) {\n const userTheme = this.userTheme;\n const combinedTheme = this.combinedTheme;\n\n // 1. userTheme\n // 2. combinedTheme\n // 3. parentCombinedTheme\n // 4. defaultTheme\n themeKeys.forEach(k => {\n // init defaultTheme\n const obj = Object.create(globalThemeObj[k]);\n // merge parentCombinedTheme\n if (parentCombinedTheme && parentCombinedTheme[k]) {\n combine(obj, parentCombinedTheme[k]);\n }\n // merge combinedTheme\n if (combinedTheme[k]) {\n combine(obj, combinedTheme[k]);\n }\n // merge userTheme\n if (userTheme[k]) {\n combine(obj, userTheme[k]);\n }\n this.combinedTheme[k] = obj;\n });\n if (userTheme.common) {\n themeKeys.forEach(k => {\n combine(this.combinedTheme[k], userTheme.common);\n });\n }\n this.dirty = false;\n }\n\n setTheme(t: IThemeSpec, g: IGroup) {\n // 设置自己的nextTheme\n let userTheme = this.userTheme;\n if (userTheme) {\n Object.keys(t).forEach(k => {\n if (userTheme[k]) {\n Object.assign(userTheme[k], t[k]);\n } else {\n // todo,这里调用次数不多,应该问题不大\n userTheme[k] = Object.assign({}, t[k]);\n }\n });\n } else {\n userTheme = t;\n }\n this.userTheme = userTheme;\n // 设置自己和子节点的theme都为dirty\n this.dirty = true;\n this.dirtyChildren(g);\n }\n\n resetTheme(t: IThemeSpec, g: IGroup) {\n this.userTheme = t;\n // 设置自己和子节点的theme都为dirty\n this.dirty = true;\n this.dirtyChildren(g);\n }\n\n dirtyChildren(g: IGroup) {\n g.forEachChildren(item => {\n if ((item as IGroup).isContainer) {\n if ((item as IGroup).theme) {\n (item as IGroup).theme.dirty = true;\n }\n this.dirtyChildren(item as IGroup);\n }\n });\n }\n}\n\nexport const globalTheme = new Theme();\n\nexport function getTheme(graphic: IGraphic, theme?: IFullThemeSpec): IFullThemeSpec {\n if (graphic.glyphHost) {\n return getTheme(graphic.glyphHost);\n }\n if (theme) {\n if (graphic.isContainer) {\n // 暂时不支持Group\n return theme;\n }\n return theme;\n }\n\n return getThemeFromGroup(graphic) || globalTheme.getTheme();\n}\n\nexport function getThemeFromGroup(graphic: IGraphic): IFullThemeSpec | null {\n let g: IGroup;\n if (graphic.isContainer) {\n // 找到存在theme的group\n g = graphic as IGroup;\n } else {\n g = graphic.parent;\n }\n\n if (g) {\n while (g) {\n if (g.theme) {\n break;\n }\n g = g.parent;\n }\n if (!g) {\n return globalTheme.getTheme();\n }\n if (!g.theme) {\n g.createTheme();\n }\n return g.theme.getTheme(g as IGroup);\n }\n return null;\n}\n"]}
package/cjs/index.d.ts CHANGED
@@ -38,6 +38,8 @@ export * from './common/enums';
38
38
  export * from './common/generator';
39
39
  export * from './plugins/constants';
40
40
  export * from './allocator/matrix-allocate';
41
+ export * from './allocator/canvas-allocate';
42
+ export * from './allocator/graphic-allocate';
41
43
  export * from './animate/default-ticker';
42
44
  export { wrapCanvas, wrapContext } from './canvas/util';
43
45
  export * from './common/xml';
package/cjs/index.js CHANGED
@@ -37,6 +37,7 @@ __exportStar(require("./common/render-command-list"), exports), __exportStar(req
37
37
  __exportStar(require("./common/morphing-utils"), exports), __exportStar(require("./common/split-path"), exports),
38
38
  __exportStar(require("./common/enums"), exports), __exportStar(require("./common/generator"), exports),
39
39
  __exportStar(require("./plugins/constants"), exports), __exportStar(require("./allocator/matrix-allocate"), exports),
40
+ __exportStar(require("./allocator/canvas-allocate"), exports), __exportStar(require("./allocator/graphic-allocate"), exports),
40
41
  __exportStar(require("./animate/default-ticker"), exports);
41
42
 
42
43
  var util_1 = require("./canvas/util");
package/cjs/index.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"sources":["../src/index.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;AACA,qBAAmB;AAEnB,8CAA4B;AAC5B,gDAA8B;AAC9B,4CAA0B;AAC1B,4CAA0B;AAC1B,2CAAyB;AACzB,0CAAwB;AACxB,8CAA4B;AAC5B,2CAAyB;AACzB,4EAA0D;AAC1D,2CAAyB;AACzB,yCAAuB;AACvB,2CAAyB;AACzB,4CAA0B;AAC1B,2DAAyC;AACzC,iDAA+B;AAG/B,gDAA8B;AAC9B,wDAAsC;AACtC,0DAAwC;AACxC,uDAAqC;AACrC,yDAAuC;AACvC,mDAAiC;AACjC,wDAAsC;AACtC,iEAA+C;AAC/C,qDAAmC;AACnC,iDAA+B;AAC/B,qDAAmC;AACnC,sDAAoC;AACpC,kDAAgC;AAEhC,oDAAkC;AAClC,wDAAsC;AACtC,uDAAqC;AACrC,+DAA6C;AAC7C,gDAA8B;AAC9B,0DAAwC;AACxC,sDAAoC;AACpC,iDAA+B;AAC/B,qDAAmC;AACnC,sDAAoC;AACpC,8DAA4C;AAE5C,2DAAyC;AACzC,sCAAwD;AAA/C,kGAAA,UAAU,OAAA;AAAE,mGAAA,WAAW,OAAA;AAChC,+CAA6B;AAC7B,0DAAwC;AACxC,8CAA4B;AAC5B,gDAA8B;AAC9B,8CAA4B","file":"index.js","sourcesContent":["// import 'core-js/proposals/reflect-metadata';\nimport './modules';\n\nexport * from './container';\nexport * from './core/global';\nexport * from './graphic';\nexport * from './modules';\nexport * from './create';\nexport * from './event';\nexport * from './interface';\nexport * from './render';\nexport * from './render/contributions/render/base-render';\nexport * from './canvas';\nexport * from './core';\nexport * from './picker';\nexport * from './animate';\nexport * from './resource-loader/loader';\nexport * from './color-string';\n\n/* export common */\nexport * from './common/text';\nexport * from './common/bezier-utils';\nexport * from './common/bounds-context';\nexport * from './common/seg-context';\nexport * from './common/custom-path2d';\nexport * from './common/segment';\nexport * from './common/canvas-utils';\nexport * from './common/contribution-provider';\nexport * from './common/generator';\nexport * from './common/utils';\nexport * from './common/shape/arc';\nexport * from './common/shape/rect';\nexport * from './common/matrix';\n\nexport * from './common/path-svg';\nexport * from './common/render-curve';\nexport * from './common/render-area';\nexport * from './common/render-command-list';\nexport * from './common/sort';\nexport * from './common/morphing-utils';\nexport * from './common/split-path';\nexport * from './common/enums';\nexport * from './common/generator';\nexport * from './plugins/constants';\nexport * from './allocator/matrix-allocate';\n\nexport * from './animate/default-ticker';\nexport { wrapCanvas, wrapContext } from './canvas/util';\nexport * from './common/xml';\nexport * from './common/inversify-lite';\nexport * from './constants';\nexport * from './application';\nexport * from './env-check';\n"]}
1
+ {"version":3,"sources":["../src/index.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;AACA,qBAAmB;AAEnB,8CAA4B;AAC5B,gDAA8B;AAC9B,4CAA0B;AAC1B,4CAA0B;AAC1B,2CAAyB;AACzB,0CAAwB;AACxB,8CAA4B;AAC5B,2CAAyB;AACzB,4EAA0D;AAC1D,2CAAyB;AACzB,yCAAuB;AACvB,2CAAyB;AACzB,4CAA0B;AAC1B,2DAAyC;AACzC,iDAA+B;AAG/B,gDAA8B;AAC9B,wDAAsC;AACtC,0DAAwC;AACxC,uDAAqC;AACrC,yDAAuC;AACvC,mDAAiC;AACjC,wDAAsC;AACtC,iEAA+C;AAC/C,qDAAmC;AACnC,iDAA+B;AAC/B,qDAAmC;AACnC,sDAAoC;AACpC,kDAAgC;AAEhC,oDAAkC;AAClC,wDAAsC;AACtC,uDAAqC;AACrC,+DAA6C;AAC7C,gDAA8B;AAC9B,0DAAwC;AACxC,sDAAoC;AACpC,iDAA+B;AAC/B,qDAAmC;AACnC,sDAAoC;AACpC,8DAA4C;AAC5C,8DAA4C;AAC5C,+DAA6C;AAE7C,2DAAyC;AACzC,sCAAwD;AAA/C,kGAAA,UAAU,OAAA;AAAE,mGAAA,WAAW,OAAA;AAChC,+CAA6B;AAC7B,0DAAwC;AACxC,8CAA4B;AAC5B,gDAA8B;AAC9B,8CAA4B","file":"index.js","sourcesContent":["// import 'core-js/proposals/reflect-metadata';\nimport './modules';\n\nexport * from './container';\nexport * from './core/global';\nexport * from './graphic';\nexport * from './modules';\nexport * from './create';\nexport * from './event';\nexport * from './interface';\nexport * from './render';\nexport * from './render/contributions/render/base-render';\nexport * from './canvas';\nexport * from './core';\nexport * from './picker';\nexport * from './animate';\nexport * from './resource-loader/loader';\nexport * from './color-string';\n\n/* export common */\nexport * from './common/text';\nexport * from './common/bezier-utils';\nexport * from './common/bounds-context';\nexport * from './common/seg-context';\nexport * from './common/custom-path2d';\nexport * from './common/segment';\nexport * from './common/canvas-utils';\nexport * from './common/contribution-provider';\nexport * from './common/generator';\nexport * from './common/utils';\nexport * from './common/shape/arc';\nexport * from './common/shape/rect';\nexport * from './common/matrix';\n\nexport * from './common/path-svg';\nexport * from './common/render-curve';\nexport * from './common/render-area';\nexport * from './common/render-command-list';\nexport * from './common/sort';\nexport * from './common/morphing-utils';\nexport * from './common/split-path';\nexport * from './common/enums';\nexport * from './common/generator';\nexport * from './plugins/constants';\nexport * from './allocator/matrix-allocate';\nexport * from './allocator/canvas-allocate';\nexport * from './allocator/graphic-allocate';\n\nexport * from './animate/default-ticker';\nexport { wrapCanvas, wrapContext } from './canvas/util';\nexport * from './common/xml';\nexport * from './common/inversify-lite';\nexport * from './constants';\nexport * from './application';\nexport * from './env-check';\n"]}
@@ -10,6 +10,7 @@ import type { ISymbol } from './graphic/symbol';
10
10
  import type { IText } from './graphic/text';
11
11
  export interface IAllocate<T> {
12
12
  allocate: (...d: any) => T;
13
+ getCommon?: () => T;
13
14
  allocateByObj: (obj: T) => T;
14
15
  free: (d: T) => void;
15
16
  length: number;
@@ -1 +1 @@
1
- {"version":3,"sources":["../src/interface/allocator.ts"],"names":[],"mappings":"","file":"allocator.js","sourcesContent":["import type { IMatrix, mat4 } from '@visactor/vutils';\nimport type { ICanvas } from './canvas';\nimport type { IRect } from './graphic/rect';\nimport type { IArc } from './graphic/arc';\nimport type { IArea } from './graphic/area';\nimport type { ICircle } from './graphic/circle';\nimport type { ILine } from './graphic/line';\nimport type { IPath } from './graphic/path';\nimport type { ISymbol } from './graphic/symbol';\nimport type { IText } from './graphic/text';\n\nexport interface IAllocate<T> {\n allocate: (...d: any) => T;\n allocateByObj: (obj: T) => T;\n free: (d: T) => void;\n length: number;\n}\n\nexport type ICanvasAllocate = IAllocate<ICanvas>;\nexport type IRectAllocate = IAllocate<IRect>;\nexport type IArcAllocate = IAllocate<IArc>;\nexport type IAreaAllocate = IAllocate<IArea>;\nexport type ICircleAllocate = IAllocate<ICircle>;\nexport type ILineAllocate = IAllocate<ILine>;\nexport type IPathAllocate = IAllocate<IPath>;\nexport type ISymbolAllocate = IAllocate<ISymbol>;\nexport type ITextAllocate = IAllocate<IText>;\n\nexport type IMatrixAllocate = IAllocate<IMatrix>;\nexport type IMat4Allocate = IAllocate<mat4>;\n"]}
1
+ {"version":3,"sources":["../src/interface/allocator.ts"],"names":[],"mappings":"","file":"allocator.js","sourcesContent":["import type { IMatrix, mat4 } from '@visactor/vutils';\nimport type { ICanvas } from './canvas';\nimport type { IRect } from './graphic/rect';\nimport type { IArc } from './graphic/arc';\nimport type { IArea } from './graphic/area';\nimport type { ICircle } from './graphic/circle';\nimport type { ILine } from './graphic/line';\nimport type { IPath } from './graphic/path';\nimport type { ISymbol } from './graphic/symbol';\nimport type { IText } from './graphic/text';\n\nexport interface IAllocate<T> {\n allocate: (...d: any) => T;\n getCommon?: () => T;\n allocateByObj: (obj: T) => T;\n free: (d: T) => void;\n length: number;\n}\n\nexport type ICanvasAllocate = IAllocate<ICanvas>;\nexport type IRectAllocate = IAllocate<IRect>;\nexport type IArcAllocate = IAllocate<IArc>;\nexport type IAreaAllocate = IAllocate<IArea>;\nexport type ICircleAllocate = IAllocate<ICircle>;\nexport type ILineAllocate = IAllocate<ILine>;\nexport type IPathAllocate = IAllocate<IPath>;\nexport type ISymbolAllocate = IAllocate<ISymbol>;\nexport type ITextAllocate = IAllocate<IText>;\n\nexport type IMatrixAllocate = IAllocate<IMatrix>;\nexport type IMat4Allocate = IAllocate<mat4>;\n"]}
@@ -102,6 +102,7 @@ export interface IGlobal extends Omit<IEventElement, 'on' | 'off' | 'once' | 'em
102
102
  };
103
103
  envParams?: any;
104
104
  supportEvent: boolean;
105
+ optimizeVisible: boolean;
105
106
  setEnv: (env: EnvType, params?: IEnvParamsMap[EnvType]) => void;
106
107
  setActiveEnvContribution: (contribution: IEnvContribution) => void;
107
108
  createCanvas: (params: ICreateCanvasParams) => HTMLCanvasElement | any;