@visactor/vrender 0.15.0-alpha.15 → 0.15.0-alpha.16

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 (387) hide show
  1. package/cjs/animate/animate.d.ts +0 -1
  2. package/cjs/animate/animate.js +0 -3
  3. package/cjs/animate/animate.js.map +1 -1
  4. package/cjs/animate/timeline.d.ts +1 -1
  5. package/cjs/animate/timeline.js +2 -2
  6. package/cjs/animate/timeline.js.map +1 -1
  7. package/cjs/canvas/contributions/browser/context.d.ts +0 -1
  8. package/cjs/common/contribution-provider.d.ts +0 -1
  9. package/cjs/common/contribution-provider.js +2 -7
  10. package/cjs/common/contribution-provider.js.map +1 -1
  11. package/cjs/common/enums.d.ts +2 -4
  12. package/cjs/common/enums.js +2 -3
  13. package/cjs/common/enums.js.map +1 -1
  14. package/cjs/core/contributions/env/base-contribution.d.ts +1 -11
  15. package/cjs/core/contributions/env/base-contribution.js +1 -22
  16. package/cjs/core/contributions/env/base-contribution.js.map +1 -1
  17. package/cjs/core/contributions/env/browser-contribution.d.ts +2 -11
  18. package/cjs/core/contributions/env/browser-contribution.js +0 -66
  19. package/cjs/core/contributions/env/browser-contribution.js.map +1 -1
  20. package/cjs/core/contributions/textMeasure/layout.js +1 -1
  21. package/cjs/core/contributions/textMeasure/layout.js.map +1 -1
  22. package/cjs/core/contributions/window/base-contribution.d.ts +5 -11
  23. package/cjs/core/contributions/window/base-contribution.js +0 -10
  24. package/cjs/core/contributions/window/base-contribution.js.map +1 -1
  25. package/cjs/core/contributions/window/browser-contribution.d.ts +0 -11
  26. package/cjs/core/contributions/window/browser-contribution.js +2 -33
  27. package/cjs/core/contributions/window/browser-contribution.js.map +1 -1
  28. package/cjs/core/global.d.ts +1 -11
  29. package/cjs/core/global.js +0 -18
  30. package/cjs/core/global.js.map +1 -1
  31. package/cjs/core/graphic-utils.d.ts +0 -2
  32. package/cjs/core/graphic-utils.js +0 -13
  33. package/cjs/core/graphic-utils.js.map +1 -1
  34. package/cjs/core/layer.js +6 -6
  35. package/cjs/core/layer.js.map +1 -1
  36. package/cjs/core/stage.d.ts +4 -13
  37. package/cjs/core/stage.js +25 -54
  38. package/cjs/core/stage.js.map +1 -1
  39. package/cjs/core/window.d.ts +0 -6
  40. package/cjs/core/window.js +1 -10
  41. package/cjs/core/window.js.map +1 -1
  42. package/cjs/event/event-manager.js +8 -8
  43. package/cjs/event/event-manager.js.map +1 -1
  44. package/cjs/event/event-system.js.map +1 -1
  45. package/cjs/event/federated-event/pointer-event.d.ts +0 -1
  46. package/cjs/event/federated-event/pointer-event.js.map +1 -1
  47. package/cjs/graphic/builtin-symbol/arrow2-left.js +1 -1
  48. package/cjs/graphic/builtin-symbol/arrow2-left.js.map +1 -1
  49. package/cjs/graphic/builtin-symbol/arrow2-right.js +1 -1
  50. package/cjs/graphic/builtin-symbol/arrow2-right.js.map +1 -1
  51. package/cjs/graphic/builtin-symbol/index.d.ts +1 -1
  52. package/cjs/graphic/builtin-symbol/index.js +2 -2
  53. package/cjs/graphic/builtin-symbol/index.js.map +1 -1
  54. package/cjs/graphic/builtin-symbol/utils.d.ts +5 -13
  55. package/cjs/graphic/builtin-symbol/utils.js +9 -23
  56. package/cjs/graphic/builtin-symbol/utils.js.map +1 -1
  57. package/cjs/graphic/config.js +7 -9
  58. package/cjs/graphic/config.js.map +1 -1
  59. package/cjs/graphic/constants.d.ts +0 -22
  60. package/cjs/graphic/constants.js +2 -20
  61. package/cjs/graphic/constants.js.map +1 -1
  62. package/cjs/graphic/graphic.d.ts +1 -4
  63. package/cjs/graphic/graphic.js +30 -51
  64. package/cjs/graphic/graphic.js.map +1 -1
  65. package/cjs/graphic/group.js +1 -1
  66. package/cjs/graphic/group.js.map +1 -1
  67. package/cjs/graphic/index.d.ts +0 -1
  68. package/cjs/graphic/index.js +13 -13
  69. package/cjs/graphic/index.js.map +1 -1
  70. package/cjs/graphic/richtext/utils.d.ts +1 -1
  71. package/cjs/graphic/richtext/utils.js +1 -1
  72. package/cjs/graphic/richtext/utils.js.map +1 -1
  73. package/cjs/graphic/symbol.d.ts +1 -2
  74. package/cjs/graphic/symbol.js +4 -27
  75. package/cjs/graphic/symbol.js.map +1 -1
  76. package/cjs/graphic/text.js +23 -33
  77. package/cjs/graphic/text.js.map +1 -1
  78. package/cjs/graphic/tools.d.ts +2 -3
  79. package/cjs/graphic/tools.js +3 -58
  80. package/cjs/graphic/tools.js.map +1 -1
  81. package/cjs/graphic/wrap-text.js +8 -10
  82. package/cjs/graphic/wrap-text.js.map +1 -1
  83. package/cjs/index.d.ts +1 -3
  84. package/cjs/index.js +3 -3
  85. package/cjs/index.js.map +1 -1
  86. package/cjs/interface/animate.d.ts +1 -3
  87. package/cjs/interface/animate.js.map +1 -1
  88. package/cjs/interface/core.d.ts +0 -1
  89. package/cjs/interface/core.js.map +1 -1
  90. package/cjs/interface/global.d.ts +1 -25
  91. package/cjs/interface/global.js.map +1 -1
  92. package/cjs/interface/graphic/image.d.ts +0 -1
  93. package/cjs/interface/graphic/image.js.map +1 -1
  94. package/cjs/interface/graphic/line.d.ts +1 -0
  95. package/cjs/interface/graphic/line.js.map +1 -1
  96. package/cjs/interface/graphic/symbol.d.ts +2 -3
  97. package/cjs/interface/graphic/symbol.js.map +1 -1
  98. package/cjs/interface/graphic/text.d.ts +0 -1
  99. package/cjs/interface/graphic/text.js.map +1 -1
  100. package/cjs/interface/graphic.d.ts +4 -27
  101. package/cjs/interface/graphic.js.map +1 -1
  102. package/cjs/interface/picker.d.ts +1 -9
  103. package/cjs/interface/picker.js.map +1 -1
  104. package/cjs/interface/render.d.ts +0 -1
  105. package/cjs/interface/render.js.map +1 -1
  106. package/cjs/interface/stage.d.ts +3 -10
  107. package/cjs/interface/stage.js.map +1 -1
  108. package/cjs/interface/window.d.ts +0 -12
  109. package/cjs/interface/window.js.map +1 -1
  110. package/cjs/picker/canvas-picker-service.d.ts +2 -2
  111. package/cjs/picker/canvas-picker-service.js +3 -20
  112. package/cjs/picker/canvas-picker-service.js.map +1 -1
  113. package/cjs/picker/contributions/canvas-picker/glyph-picker.js +1 -1
  114. package/cjs/picker/contributions/canvas-picker/glyph-picker.js.map +1 -1
  115. package/cjs/picker/contributions/canvas-picker/module.js +1 -3
  116. package/cjs/picker/contributions/canvas-picker/module.js.map +1 -1
  117. package/cjs/picker/contributions/canvas-picker/symbol-picker.js +2 -4
  118. package/cjs/picker/contributions/canvas-picker/symbol-picker.js.map +1 -1
  119. package/cjs/picker/contributions/constants.d.ts +0 -1
  120. package/cjs/picker/contributions/constants.js +8 -9
  121. package/cjs/picker/contributions/constants.js.map +1 -1
  122. package/cjs/picker/contributions/math-picker/glyph-picker.js +1 -1
  123. package/cjs/picker/contributions/math-picker/glyph-picker.js.map +1 -1
  124. package/cjs/picker/global-picker-service.d.ts +1 -1
  125. package/cjs/picker/global-picker-service.js +5 -12
  126. package/cjs/picker/global-picker-service.js.map +1 -1
  127. package/cjs/picker/math-picker-service.d.ts +2 -2
  128. package/cjs/picker/math-picker-service.js +1 -1
  129. package/cjs/picker/math-picker-service.js.map +1 -1
  130. package/cjs/picker/pick-interceptor.d.ts +0 -12
  131. package/cjs/picker/pick-interceptor.js +5 -32
  132. package/cjs/picker/pick-interceptor.js.map +1 -1
  133. package/cjs/picker/pick-modules.js +0 -2
  134. package/cjs/picker/pick-modules.js.map +1 -1
  135. package/cjs/picker/picker-service.d.ts +1 -1
  136. package/cjs/picker/picker-service.js +6 -15
  137. package/cjs/picker/picker-service.js.map +1 -1
  138. package/cjs/plugins/builtin-plugin/flex-layout-plugin.d.ts +0 -2
  139. package/cjs/plugins/builtin-plugin/flex-layout-plugin.js +21 -42
  140. package/cjs/plugins/builtin-plugin/flex-layout-plugin.js.map +1 -1
  141. package/cjs/plugins/plugin-modules.js +1 -1
  142. package/cjs/plugins/plugin-modules.js.map +1 -1
  143. package/cjs/render/contributions/render/area-render.js +31 -21
  144. package/cjs/render/contributions/render/area-render.js.map +1 -1
  145. package/cjs/render/contributions/render/contributions/image-contribution-render.js +1 -23
  146. package/cjs/render/contributions/render/contributions/image-contribution-render.js.map +1 -1
  147. package/cjs/render/contributions/render/draw-contribution.d.ts +1 -3
  148. package/cjs/render/contributions/render/draw-contribution.js +1 -3
  149. package/cjs/render/contributions/render/draw-contribution.js.map +1 -1
  150. package/cjs/render/contributions/render/draw-interceptor.d.ts +0 -2
  151. package/cjs/render/contributions/render/draw-interceptor.js +0 -8
  152. package/cjs/render/contributions/render/draw-interceptor.js.map +1 -1
  153. package/cjs/render/contributions/render/image-render.js +3 -7
  154. package/cjs/render/contributions/render/image-render.js.map +1 -1
  155. package/cjs/render/contributions/render/line-render.js +50 -23
  156. package/cjs/render/contributions/render/line-render.js.map +1 -1
  157. package/cjs/render/contributions/render/symbol-render.js +5 -12
  158. package/cjs/render/contributions/render/symbol-render.js.map +1 -1
  159. package/cjs/render/contributions/render/utils.d.ts +2 -2
  160. package/cjs/render/contributions/render/utils.js.map +1 -1
  161. package/cjs/render/render-service.js +1 -3
  162. package/cjs/render/render-service.js.map +1 -1
  163. package/dist/index.js +346 -3537
  164. package/dist/index.min.js +1 -1
  165. package/es/animate/animate.d.ts +0 -1
  166. package/es/animate/animate.js +0 -3
  167. package/es/animate/animate.js.map +1 -1
  168. package/es/animate/timeline.d.ts +1 -1
  169. package/es/animate/timeline.js +2 -2
  170. package/es/animate/timeline.js.map +1 -1
  171. package/es/canvas/contributions/browser/context.d.ts +0 -1
  172. package/es/common/contribution-provider.d.ts +0 -1
  173. package/es/common/contribution-provider.js +0 -4
  174. package/es/common/contribution-provider.js.map +1 -1
  175. package/es/common/enums.d.ts +2 -4
  176. package/es/common/enums.js +2 -3
  177. package/es/common/enums.js.map +1 -1
  178. package/es/core/contributions/env/base-contribution.d.ts +1 -11
  179. package/es/core/contributions/env/base-contribution.js +0 -23
  180. package/es/core/contributions/env/base-contribution.js.map +1 -1
  181. package/es/core/contributions/env/browser-contribution.d.ts +2 -11
  182. package/es/core/contributions/env/browser-contribution.js +1 -67
  183. package/es/core/contributions/env/browser-contribution.js.map +1 -1
  184. package/es/core/contributions/textMeasure/layout.js +1 -1
  185. package/es/core/contributions/textMeasure/layout.js.map +1 -1
  186. package/es/core/contributions/window/base-contribution.d.ts +5 -11
  187. package/es/core/contributions/window/base-contribution.js +0 -10
  188. package/es/core/contributions/window/base-contribution.js.map +1 -1
  189. package/es/core/contributions/window/browser-contribution.d.ts +0 -11
  190. package/es/core/contributions/window/browser-contribution.js +2 -33
  191. package/es/core/contributions/window/browser-contribution.js.map +1 -1
  192. package/es/core/global.d.ts +1 -11
  193. package/es/core/global.js +0 -18
  194. package/es/core/global.js.map +1 -1
  195. package/es/core/graphic-utils.d.ts +0 -2
  196. package/es/core/graphic-utils.js +0 -13
  197. package/es/core/graphic-utils.js.map +1 -1
  198. package/es/core/layer.js +6 -6
  199. package/es/core/layer.js.map +1 -1
  200. package/es/core/stage.d.ts +4 -13
  201. package/es/core/stage.js +24 -57
  202. package/es/core/stage.js.map +1 -1
  203. package/es/core/window.d.ts +0 -6
  204. package/es/core/window.js +1 -10
  205. package/es/core/window.js.map +1 -1
  206. package/es/event/event-manager.js +8 -8
  207. package/es/event/event-manager.js.map +1 -1
  208. package/es/event/event-system.js.map +1 -1
  209. package/es/event/federated-event/pointer-event.d.ts +0 -1
  210. package/es/event/federated-event/pointer-event.js.map +1 -1
  211. package/es/graphic/builtin-symbol/arrow2-left.js +1 -1
  212. package/es/graphic/builtin-symbol/arrow2-left.js.map +1 -1
  213. package/es/graphic/builtin-symbol/arrow2-right.js +1 -1
  214. package/es/graphic/builtin-symbol/arrow2-right.js.map +1 -1
  215. package/es/graphic/builtin-symbol/index.d.ts +1 -1
  216. package/es/graphic/builtin-symbol/index.js +1 -11
  217. package/es/graphic/builtin-symbol/index.js.map +1 -1
  218. package/es/graphic/builtin-symbol/utils.d.ts +5 -13
  219. package/es/graphic/builtin-symbol/utils.js +7 -25
  220. package/es/graphic/builtin-symbol/utils.js.map +1 -1
  221. package/es/graphic/config.js +7 -9
  222. package/es/graphic/config.js.map +1 -1
  223. package/es/graphic/constants.d.ts +0 -22
  224. package/es/graphic/constants.js +0 -26
  225. package/es/graphic/constants.js.map +1 -1
  226. package/es/graphic/graphic.d.ts +1 -4
  227. package/es/graphic/graphic.js +30 -50
  228. package/es/graphic/graphic.js.map +1 -1
  229. package/es/graphic/group.js +1 -1
  230. package/es/graphic/group.js.map +1 -1
  231. package/es/graphic/index.d.ts +0 -1
  232. package/es/graphic/index.js +0 -2
  233. package/es/graphic/index.js.map +1 -1
  234. package/es/graphic/richtext/utils.d.ts +1 -1
  235. package/es/graphic/richtext/utils.js +1 -1
  236. package/es/graphic/richtext/utils.js.map +1 -1
  237. package/es/graphic/symbol.d.ts +1 -2
  238. package/es/graphic/symbol.js +1 -28
  239. package/es/graphic/symbol.js.map +1 -1
  240. package/es/graphic/text.js +23 -33
  241. package/es/graphic/text.js.map +1 -1
  242. package/es/graphic/tools.d.ts +2 -3
  243. package/es/graphic/tools.js +0 -59
  244. package/es/graphic/tools.js.map +1 -1
  245. package/es/graphic/wrap-text.js +8 -10
  246. package/es/graphic/wrap-text.js.map +1 -1
  247. package/es/index.d.ts +1 -3
  248. package/es/index.js +1 -5
  249. package/es/index.js.map +1 -1
  250. package/es/interface/animate.d.ts +1 -3
  251. package/es/interface/animate.js.map +1 -1
  252. package/es/interface/core.d.ts +0 -1
  253. package/es/interface/core.js.map +1 -1
  254. package/es/interface/global.d.ts +1 -25
  255. package/es/interface/global.js.map +1 -1
  256. package/es/interface/graphic/image.d.ts +0 -1
  257. package/es/interface/graphic/image.js.map +1 -1
  258. package/es/interface/graphic/line.d.ts +1 -0
  259. package/es/interface/graphic/line.js.map +1 -1
  260. package/es/interface/graphic/symbol.d.ts +2 -3
  261. package/es/interface/graphic/symbol.js.map +1 -1
  262. package/es/interface/graphic/text.d.ts +0 -1
  263. package/es/interface/graphic/text.js.map +1 -1
  264. package/es/interface/graphic.d.ts +4 -27
  265. package/es/interface/graphic.js.map +1 -1
  266. package/es/interface/picker.d.ts +1 -9
  267. package/es/interface/picker.js.map +1 -1
  268. package/es/interface/render.d.ts +0 -1
  269. package/es/interface/render.js.map +1 -1
  270. package/es/interface/stage.d.ts +3 -10
  271. package/es/interface/stage.js.map +1 -1
  272. package/es/interface/window.d.ts +0 -12
  273. package/es/interface/window.js.map +1 -1
  274. package/es/picker/canvas-picker-service.d.ts +2 -2
  275. package/es/picker/canvas-picker-service.js +3 -20
  276. package/es/picker/canvas-picker-service.js.map +1 -1
  277. package/es/picker/contributions/canvas-picker/glyph-picker.js +1 -1
  278. package/es/picker/contributions/canvas-picker/glyph-picker.js.map +1 -1
  279. package/es/picker/contributions/canvas-picker/module.js +2 -6
  280. package/es/picker/contributions/canvas-picker/module.js.map +1 -1
  281. package/es/picker/contributions/canvas-picker/symbol-picker.js +1 -6
  282. package/es/picker/contributions/canvas-picker/symbol-picker.js.map +1 -1
  283. package/es/picker/contributions/constants.d.ts +0 -1
  284. package/es/picker/contributions/constants.js +0 -2
  285. package/es/picker/contributions/constants.js.map +1 -1
  286. package/es/picker/contributions/math-picker/glyph-picker.js +1 -1
  287. package/es/picker/contributions/math-picker/glyph-picker.js.map +1 -1
  288. package/es/picker/global-picker-service.d.ts +1 -1
  289. package/es/picker/global-picker-service.js +5 -12
  290. package/es/picker/global-picker-service.js.map +1 -1
  291. package/es/picker/math-picker-service.d.ts +2 -2
  292. package/es/picker/math-picker-service.js +1 -1
  293. package/es/picker/math-picker-service.js.map +1 -1
  294. package/es/picker/pick-interceptor.d.ts +0 -12
  295. package/es/picker/pick-interceptor.js +4 -34
  296. package/es/picker/pick-interceptor.js.map +1 -1
  297. package/es/picker/pick-modules.js +2 -4
  298. package/es/picker/pick-modules.js.map +1 -1
  299. package/es/picker/picker-service.d.ts +1 -1
  300. package/es/picker/picker-service.js +6 -15
  301. package/es/picker/picker-service.js.map +1 -1
  302. package/es/plugins/builtin-plugin/flex-layout-plugin.d.ts +0 -2
  303. package/es/plugins/builtin-plugin/flex-layout-plugin.js +20 -47
  304. package/es/plugins/builtin-plugin/flex-layout-plugin.js.map +1 -1
  305. package/es/plugins/plugin-modules.js +2 -2
  306. package/es/plugins/plugin-modules.js.map +1 -1
  307. package/es/render/contributions/render/area-render.js +30 -20
  308. package/es/render/contributions/render/area-render.js.map +1 -1
  309. package/es/render/contributions/render/contributions/image-contribution-render.js +0 -27
  310. package/es/render/contributions/render/contributions/image-contribution-render.js.map +1 -1
  311. package/es/render/contributions/render/draw-contribution.d.ts +1 -3
  312. package/es/render/contributions/render/draw-contribution.js +0 -4
  313. package/es/render/contributions/render/draw-contribution.js.map +1 -1
  314. package/es/render/contributions/render/draw-interceptor.d.ts +0 -2
  315. package/es/render/contributions/render/draw-interceptor.js +0 -8
  316. package/es/render/contributions/render/draw-interceptor.js.map +1 -1
  317. package/es/render/contributions/render/image-render.js +2 -10
  318. package/es/render/contributions/render/image-render.js.map +1 -1
  319. package/es/render/contributions/render/line-render.js +49 -22
  320. package/es/render/contributions/render/line-render.js.map +1 -1
  321. package/es/render/contributions/render/symbol-render.js +5 -12
  322. package/es/render/contributions/render/symbol-render.js.map +1 -1
  323. package/es/render/contributions/render/utils.d.ts +2 -2
  324. package/es/render/contributions/render/utils.js.map +1 -1
  325. package/es/render/render-service.js +1 -3
  326. package/es/render/render-service.js.map +1 -1
  327. package/package.json +13 -10
  328. package/cjs/graphic/builtin-symbol/arrow2-down.d.ts +0 -12
  329. package/cjs/graphic/builtin-symbol/arrow2-down.js +0 -30
  330. package/cjs/graphic/builtin-symbol/arrow2-down.js.map +0 -1
  331. package/cjs/graphic/builtin-symbol/arrow2-up.d.ts +0 -12
  332. package/cjs/graphic/builtin-symbol/arrow2-up.js +0 -30
  333. package/cjs/graphic/builtin-symbol/arrow2-up.js.map +0 -1
  334. package/cjs/graphic/builtin-symbol/close.d.ts +0 -13
  335. package/cjs/graphic/builtin-symbol/close.js +0 -33
  336. package/cjs/graphic/builtin-symbol/close.js.map +0 -1
  337. package/cjs/graphic/builtin-symbol/line-h.d.ts +0 -13
  338. package/cjs/graphic/builtin-symbol/line-h.js +0 -32
  339. package/cjs/graphic/builtin-symbol/line-h.js.map +0 -1
  340. package/cjs/graphic/builtin-symbol/line-v.d.ts +0 -13
  341. package/cjs/graphic/builtin-symbol/line-v.js +0 -32
  342. package/cjs/graphic/builtin-symbol/line-v.js.map +0 -1
  343. package/cjs/jsx/graphicType.d.ts +0 -172
  344. package/cjs/jsx/graphicType.js +0 -133
  345. package/cjs/jsx/graphicType.js.map +0 -1
  346. package/cjs/jsx/index.d.ts +0 -2
  347. package/cjs/jsx/index.js +0 -21
  348. package/cjs/jsx/index.js.map +0 -1
  349. package/cjs/jsx/jsx-classic.d.ts +0 -3
  350. package/cjs/jsx/jsx-classic.js +0 -58
  351. package/cjs/jsx/jsx-classic.js.map +0 -1
  352. package/cjs/picker/contributions/canvas-picker/group-picker.d.ts +0 -7
  353. package/cjs/picker/contributions/canvas-picker/group-picker.js +0 -26
  354. package/cjs/picker/contributions/canvas-picker/group-picker.js.map +0 -1
  355. package/cjs/plugins/builtin-plugin/html-attribute-plugin.d.ts +0 -13
  356. package/cjs/plugins/builtin-plugin/html-attribute-plugin.js +0 -79
  357. package/cjs/plugins/builtin-plugin/html-attribute-plugin.js.map +0 -1
  358. package/es/graphic/builtin-symbol/arrow2-down.d.ts +0 -12
  359. package/es/graphic/builtin-symbol/arrow2-down.js +0 -24
  360. package/es/graphic/builtin-symbol/arrow2-down.js.map +0 -1
  361. package/es/graphic/builtin-symbol/arrow2-up.d.ts +0 -12
  362. package/es/graphic/builtin-symbol/arrow2-up.js +0 -24
  363. package/es/graphic/builtin-symbol/arrow2-up.js.map +0 -1
  364. package/es/graphic/builtin-symbol/close.d.ts +0 -13
  365. package/es/graphic/builtin-symbol/close.js +0 -27
  366. package/es/graphic/builtin-symbol/close.js.map +0 -1
  367. package/es/graphic/builtin-symbol/line-h.d.ts +0 -13
  368. package/es/graphic/builtin-symbol/line-h.js +0 -26
  369. package/es/graphic/builtin-symbol/line-h.js.map +0 -1
  370. package/es/graphic/builtin-symbol/line-v.d.ts +0 -13
  371. package/es/graphic/builtin-symbol/line-v.js +0 -26
  372. package/es/graphic/builtin-symbol/line-v.js.map +0 -1
  373. package/es/jsx/graphicType.d.ts +0 -172
  374. package/es/jsx/graphicType.js +0 -126
  375. package/es/jsx/graphicType.js.map +0 -1
  376. package/es/jsx/index.d.ts +0 -2
  377. package/es/jsx/index.js +0 -4
  378. package/es/jsx/index.js.map +0 -1
  379. package/es/jsx/jsx-classic.d.ts +0 -3
  380. package/es/jsx/jsx-classic.js +0 -56
  381. package/es/jsx/jsx-classic.js.map +0 -1
  382. package/es/picker/contributions/canvas-picker/group-picker.d.ts +0 -7
  383. package/es/picker/contributions/canvas-picker/group-picker.js +0 -23
  384. package/es/picker/contributions/canvas-picker/group-picker.js.map +0 -1
  385. package/es/plugins/builtin-plugin/html-attribute-plugin.d.ts +0 -13
  386. package/es/plugins/builtin-plugin/html-attribute-plugin.js +0 -75
  387. package/es/plugins/builtin-plugin/html-attribute-plugin.js.map +0 -1
@@ -1,4 +1,4 @@
1
- import type { Dict, IAABBBoundsLike, IPointLike } from '@visactor/vutils';
1
+ import type { Dict, IPointLike } from '@visactor/vutils';
2
2
  import type { ICanvasLike } from './canvas';
3
3
  import type { IEventElement } from './common';
4
4
  import type { IContribution } from './contribution';
@@ -25,15 +25,6 @@ export interface IEnvContribution extends IContribution<IGlobal>, Omit<IEventEle
25
25
  createCanvas: (params: ICreateCanvasParams) => ICanvasLike | any;
26
26
  createOffscreenCanvas: (params: ICreateCanvasParams) => ICanvasLike | any;
27
27
  releaseCanvas: (canvas: ICanvasLike | string | any) => void;
28
- getNativeAABBBounds: (dom: string | HTMLElement | any) => IAABBBoundsLike;
29
- removeDom: (dom: HTMLElement) => boolean;
30
- createDom: (params: CreateDOMParamsType) => HTMLElement | null;
31
- getElementTop: (dom: any, baseWindow?: boolean) => number;
32
- getElementLeft: (dom: any, baseWindow?: boolean) => number;
33
- getElementTopLeft: (dom: any, baseWindow?: boolean) => {
34
- top: number;
35
- left: number;
36
- };
37
28
  getDynamicCanvasCount: () => number;
38
29
  getStaticCanvasCount: () => number;
39
30
  getDevicePixelRatio: () => number;
@@ -87,13 +78,6 @@ export interface IEnvParamsMap {
87
78
  readonly lynx: any;
88
79
  readonly wx: any;
89
80
  }
90
- export type CreateDOMParamsType = {
91
- tagName?: string;
92
- width?: number;
93
- height?: number;
94
- style?: string | Record<string, any>;
95
- parent?: string | HTMLElement;
96
- };
97
81
  export interface IGlobal extends Omit<IEventElement, 'on' | 'off' | 'once' | 'emit' | 'removeAllListeners'> {
98
82
  env: EnvType;
99
83
  devicePixelRatio: number;
@@ -142,12 +126,4 @@ export interface IGlobal extends Omit<IEventElement, 'on' | 'off' | 'once' | 'em
142
126
  loadState: 'success' | 'fail';
143
127
  data: Blob | null;
144
128
  }>;
145
- removeDom: (dom: HTMLElement) => boolean;
146
- createDom: (params: CreateDOMParamsType) => HTMLElement | null;
147
- getElementTop: (dom: any, baseWindow?: boolean) => number;
148
- getElementLeft: (dom: any, baseWindow?: boolean) => number;
149
- getElementTopLeft: (dom: any, baseWindow?: boolean) => {
150
- top: number;
151
- left: number;
152
- };
153
129
  }
@@ -1 +1 @@
1
- {"version":3,"sources":["../src/interface/global.ts"],"names":[],"mappings":"","file":"global.js","sourcesContent":["import type { Dict, IAABBBoundsLike, IPointLike } from '@visactor/vutils';\nimport type { ICanvasLike } from './canvas';\nimport type { IEventElement } from './common';\nimport type { IContribution } from './contribution';\nimport type { ISyncHook } from './sync-hook';\n\nexport interface ILoader {\n loadImage: (url: string) => HTMLImageElement | ImageData;\n loadJson: (url: string) => JSON;\n}\n\n// 环境定义\nexport type EnvType = 'browser' | 'feishu' | 'tt' | 'taro' | 'node' | 'native' | 'lynx' | 'wx';\n\n// 创建canvas需要的参数\nexport interface ICreateCanvasParams {\n id?: string;\n // 像素宽\n width?: number;\n // 像素高\n height?: number;\n dpr?: number;\n}\n\nexport interface ILoader {\n loadImage: (url: string) => HTMLImageElement | ImageData;\n loadJson: (url: string) => JSON;\n}\n\nexport interface IEnvContribution\n extends IContribution<IGlobal>,\n Omit<IEventElement, 'on' | 'off' | 'once' | 'emit' | 'removeAllListeners'> {\n // 当前代码所运行的环境\n type: EnvType;\n\n // 是否支持事件\n // node环境不需要事件\n supportEvent: boolean;\n\n // 开始配置环境,相当于init\n configure: (global: IGlobal, ...p: any) => void;\n\n // 创建销毁\n createCanvas: (params: ICreateCanvasParams) => ICanvasLike | any;\n createOffscreenCanvas: (params: ICreateCanvasParams) => ICanvasLike | any;\n releaseCanvas: (canvas: ICanvasLike | string | any) => void;\n\n getNativeAABBBounds: (dom: string | HTMLElement | any) => IAABBBoundsLike;\n removeDom: (dom: HTMLElement) => boolean;\n createDom: (params: CreateDOMParamsType) => HTMLElement | null;\n getElementTop: (dom: any, baseWindow?: boolean) => number;\n getElementLeft: (dom: any, baseWindow?: boolean) => number;\n getElementTopLeft: (dom: any, baseWindow?: boolean) => { top: number; left: number };\n\n /**\n * 获取动态canvas的数量,offscreenCanvas或者framebuffer\n */\n getDynamicCanvasCount: () => number;\n\n /**\n * 获取静态canvas的数量,纯粹canvas\n */\n getStaticCanvasCount: () => number;\n\n // 设备信息\n getDevicePixelRatio: () => number;\n\n // 通用接口\n getRequestAnimationFrame: () => (callback: FrameRequestCallback) => number;\n getCancelAnimationFrame: () => (h: number) => void;\n\n // DOM接口\n getElementById?: (str: string) => HTMLElement | null;\n getRootElement?: () => HTMLElement | null;\n /**\n * get document instance\n */\n getDocument?: () => Document | null;\n /**\n * whether supports TouchEvent.\n */\n supportsTouchEvents: boolean;\n /**\n * whether supports PointerEvent.\n */\n supportsPointerEvents: boolean;\n /**\n * whether supports MouseEvent.\n */\n supportsMouseEvents: boolean;\n /**\n * Whether to allow setting the cursor style\n */\n applyStyles?: boolean;\n\n /**\n * 将窗口坐标转换为画布坐标,小程序/小组件环境需要兼容\n */\n mapToCanvasPoint?: (event: any, domElement?: any) => IPointLike | null;\n\n loadImage: (url: string) => Promise<{\n loadState: 'success' | 'fail';\n data: HTMLImageElement | ImageData | null;\n }>;\n loadSvg: (url: string) => Promise<{\n loadState: 'success' | 'fail';\n data: HTMLImageElement | ImageData | null;\n }>;\n loadJson: (url: string) => Promise<{\n loadState: 'success' | 'fail';\n data: Record<string, unknown> | null;\n }>;\n loadArrayBuffer: (url: string) => Promise<{\n loadState: 'success' | 'fail';\n data: ArrayBuffer | null;\n }>;\n loadBlob: (url: string) => Promise<{\n loadState: 'success' | 'fail';\n data: Blob | null;\n }>;\n}\n\nexport type IMiniAppEnvParams = {\n /** dom 容器对象 */\n domref?: Dict<any>;\n /**\n * 强行设置env,如果env重复设置也设置\n */\n force?: boolean;\n /**\n * 可用的canvas列表\n */\n canvasIdLists?: (string | number)[];\n /**\n * 表示可以自由使用的canvas索引\n */\n freeCanvasIdx?: string | number;\n /** taro 环境使用 */\n taro?: any;\n pixelRatio?: number;\n [key: string]: any;\n};\n\nexport interface IEnvParamsMap {\n readonly taro: IMiniAppEnvParams;\n readonly feishu: IMiniAppEnvParams;\n readonly tt: IMiniAppEnvParams;\n readonly browser: any;\n readonly node: any;\n readonly native: any;\n readonly lynx: any;\n readonly wx: any;\n}\n\nexport type CreateDOMParamsType = {\n tagName?: string;\n width?: number;\n height?: number;\n style?: string | Record<string, any>;\n parent?: string | HTMLElement;\n};\nexport interface IGlobal extends Omit<IEventElement, 'on' | 'off' | 'once' | 'emit' | 'removeAllListeners'> {\n // 当前代码所运行的环境\n env: EnvType;\n\n // 设备的dpr\n devicePixelRatio: number;\n\n // 当设置env的时候被调用\n hooks: {\n onSetEnv: ISyncHook<[EnvType | undefined, EnvType, IGlobal]>;\n };\n\n // 设置env的时候传入的参数\n // node环境需要传入整个node-canvas包\n // 小程序环境需要传入小程序要用到的参数\n envParams?: any;\n\n // 是否支持事件\n // node环境不需要事件\n supportEvent: boolean;\n\n setEnv: (env: EnvType, params?: IEnvParamsMap[EnvType]) => void;\n setActiveEnvContribution: (contribution: IEnvContribution) => void;\n createCanvas: (params: ICreateCanvasParams) => HTMLCanvasElement | any;\n createOffscreenCanvas: (params: ICreateCanvasParams) => HTMLCanvasElement | any;\n releaseCanvas: (canvas: HTMLCanvasElement | string | any) => void;\n\n /**\n * 获取环境中最大动态canvas的数量,offscreenCanvas或者framebuffer\n */\n getDynamicCanvasCount: () => number;\n\n isChrome: () => boolean;\n isSafari: () => boolean;\n\n /**\n * 获取环境中最大静态canvas的数量,纯粹canvas\n */\n getStaticCanvasCount: () => number;\n\n /* 浏览器环境 - dom tree */\n getElementById: (str: string) => HTMLElement | null;\n getRootElement: () => HTMLElement | null;\n /**\n * get document instance\n */\n getDocument: () => Document | null;\n /**\n * whether supports TouchEvent.\n */\n supportsTouchEvents: boolean;\n /**\n * whether supports PointerEvent.\n */\n supportsPointerEvents: boolean;\n /**\n * whether supports MouseEvent.\n */\n supportsMouseEvents: boolean;\n /**\n * Whether to allow setting the cursor style\n */\n applyStyles?: boolean;\n /**\n * 测量文字的方法\n */\n measureTextMethod: 'native' | 'simple' | 'quick';\n\n getRequestAnimationFrame: () => null | ((callback: FrameRequestCallback) => number);\n getCancelAnimationFrame: () => null | ((h: number) => void);\n\n /**\n * 将窗口坐标转换为画布坐标,小程序/小组件环境需要兼容\n */\n mapToCanvasPoint: (nativeEvent: any, domElement?: any) => IPointLike | null;\n\n loadImage: (url: string) => Promise<{\n loadState: 'success' | 'fail';\n data: HTMLImageElement | ImageData | null;\n }>;\n loadSvg: (url: string) => Promise<{\n loadState: 'success' | 'fail';\n data: HTMLImageElement | ImageData | null;\n }>;\n loadJson: (url: string) => Promise<{\n loadState: 'success' | 'fail';\n data: Record<string, unknown> | null;\n }>;\n loadArrayBuffer: (url: string) => Promise<{\n loadState: 'success' | 'fail';\n data: ArrayBuffer | null;\n }>;\n loadBlob: (url: string) => Promise<{\n loadState: 'success' | 'fail';\n data: Blob | null;\n }>;\n\n removeDom: (dom: HTMLElement) => boolean;\n createDom: (params: CreateDOMParamsType) => HTMLElement | null;\n\n getElementTop: (dom: any, baseWindow?: boolean) => number;\n getElementLeft: (dom: any, baseWindow?: boolean) => number;\n getElementTopLeft: (dom: any, baseWindow?: boolean) => { top: number; left: number };\n}\n"]}
1
+ {"version":3,"sources":["../src/interface/global.ts"],"names":[],"mappings":"","file":"global.js","sourcesContent":["import type { Dict, IPointLike } from '@visactor/vutils';\nimport type { ICanvasLike } from './canvas';\nimport type { IEventElement } from './common';\nimport type { IContribution } from './contribution';\nimport type { ISyncHook } from './sync-hook';\n\nexport interface ILoader {\n loadImage: (url: string) => HTMLImageElement | ImageData;\n loadJson: (url: string) => JSON;\n}\n\n// 环境定义\nexport type EnvType = 'browser' | 'feishu' | 'tt' | 'taro' | 'node' | 'native' | 'lynx' | 'wx';\n\n// 创建canvas需要的参数\nexport interface ICreateCanvasParams {\n id?: string;\n // 像素宽\n width?: number;\n // 像素高\n height?: number;\n dpr?: number;\n}\n\nexport interface ILoader {\n loadImage: (url: string) => HTMLImageElement | ImageData;\n loadJson: (url: string) => JSON;\n}\n\nexport interface IEnvContribution\n extends IContribution<IGlobal>,\n Omit<IEventElement, 'on' | 'off' | 'once' | 'emit' | 'removeAllListeners'> {\n // 当前代码所运行的环境\n type: EnvType;\n\n // 是否支持事件\n // node环境不需要事件\n supportEvent: boolean;\n\n // 开始配置环境,相当于init\n configure: (global: IGlobal, ...p: any) => void;\n\n // 创建销毁\n createCanvas: (params: ICreateCanvasParams) => ICanvasLike | any;\n createOffscreenCanvas: (params: ICreateCanvasParams) => ICanvasLike | any;\n releaseCanvas: (canvas: ICanvasLike | string | any) => void;\n\n /**\n * 获取动态canvas的数量,offscreenCanvas或者framebuffer\n */\n getDynamicCanvasCount: () => number;\n\n /**\n * 获取静态canvas的数量,纯粹canvas\n */\n getStaticCanvasCount: () => number;\n\n // 设备信息\n getDevicePixelRatio: () => number;\n\n // 通用接口\n getRequestAnimationFrame: () => (callback: FrameRequestCallback) => number;\n getCancelAnimationFrame: () => (h: number) => void;\n\n // DOM接口\n getElementById?: (str: string) => HTMLElement | null;\n getRootElement?: () => HTMLElement | null;\n /**\n * get document instance\n */\n getDocument?: () => Document | null;\n /**\n * whether supports TouchEvent.\n */\n supportsTouchEvents: boolean;\n /**\n * whether supports PointerEvent.\n */\n supportsPointerEvents: boolean;\n /**\n * whether supports MouseEvent.\n */\n supportsMouseEvents: boolean;\n /**\n * Whether to allow setting the cursor style\n */\n applyStyles?: boolean;\n\n /**\n * 将窗口坐标转换为画布坐标,小程序/小组件环境需要兼容\n */\n mapToCanvasPoint?: (event: any, domElement?: any) => IPointLike | null;\n\n loadImage: (url: string) => Promise<{\n loadState: 'success' | 'fail';\n data: HTMLImageElement | ImageData | null;\n }>;\n loadSvg: (url: string) => Promise<{\n loadState: 'success' | 'fail';\n data: HTMLImageElement | ImageData | null;\n }>;\n loadJson: (url: string) => Promise<{\n loadState: 'success' | 'fail';\n data: Record<string, unknown> | null;\n }>;\n loadArrayBuffer: (url: string) => Promise<{\n loadState: 'success' | 'fail';\n data: ArrayBuffer | null;\n }>;\n loadBlob: (url: string) => Promise<{\n loadState: 'success' | 'fail';\n data: Blob | null;\n }>;\n}\n\nexport type IMiniAppEnvParams = {\n /** dom 容器对象 */\n domref?: Dict<any>;\n /**\n * 强行设置env,如果env重复设置也设置\n */\n force?: boolean;\n /**\n * 可用的canvas列表\n */\n canvasIdLists?: (string | number)[];\n /**\n * 表示可以自由使用的canvas索引\n */\n freeCanvasIdx?: string | number;\n /** taro 环境使用 */\n taro?: any;\n pixelRatio?: number;\n [key: string]: any;\n};\n\nexport interface IEnvParamsMap {\n readonly taro: IMiniAppEnvParams;\n readonly feishu: IMiniAppEnvParams;\n readonly tt: IMiniAppEnvParams;\n readonly browser: any;\n readonly node: any;\n readonly native: any;\n readonly lynx: any;\n readonly wx: any;\n}\nexport interface IGlobal extends Omit<IEventElement, 'on' | 'off' | 'once' | 'emit' | 'removeAllListeners'> {\n // 当前代码所运行的环境\n env: EnvType;\n\n // 设备的dpr\n devicePixelRatio: number;\n\n // 当设置env的时候被调用\n hooks: {\n onSetEnv: ISyncHook<[EnvType | undefined, EnvType, IGlobal]>;\n };\n\n // 设置env的时候传入的参数\n // node环境需要传入整个node-canvas包\n // 小程序环境需要传入小程序要用到的参数\n envParams?: any;\n\n // 是否支持事件\n // node环境不需要事件\n supportEvent: boolean;\n\n setEnv: (env: EnvType, params?: IEnvParamsMap[EnvType]) => void;\n setActiveEnvContribution: (contribution: IEnvContribution) => void;\n createCanvas: (params: ICreateCanvasParams) => HTMLCanvasElement | any;\n createOffscreenCanvas: (params: ICreateCanvasParams) => HTMLCanvasElement | any;\n releaseCanvas: (canvas: HTMLCanvasElement | string | any) => void;\n\n /**\n * 获取环境中最大动态canvas的数量,offscreenCanvas或者framebuffer\n */\n getDynamicCanvasCount: () => number;\n\n isChrome: () => boolean;\n isSafari: () => boolean;\n\n /**\n * 获取环境中最大静态canvas的数量,纯粹canvas\n */\n getStaticCanvasCount: () => number;\n\n /* 浏览器环境 - dom tree */\n getElementById: (str: string) => HTMLElement | null;\n getRootElement: () => HTMLElement | null;\n /**\n * get document instance\n */\n getDocument: () => Document | null;\n /**\n * whether supports TouchEvent.\n */\n supportsTouchEvents: boolean;\n /**\n * whether supports PointerEvent.\n */\n supportsPointerEvents: boolean;\n /**\n * whether supports MouseEvent.\n */\n supportsMouseEvents: boolean;\n /**\n * Whether to allow setting the cursor style\n */\n applyStyles?: boolean;\n /**\n * 测量文字的方法\n */\n measureTextMethod: 'native' | 'simple' | 'quick';\n\n getRequestAnimationFrame: () => null | ((callback: FrameRequestCallback) => number);\n getCancelAnimationFrame: () => null | ((h: number) => void);\n\n /**\n * 将窗口坐标转换为画布坐标,小程序/小组件环境需要兼容\n */\n mapToCanvasPoint: (nativeEvent: any, domElement?: any) => IPointLike | null;\n\n loadImage: (url: string) => Promise<{\n loadState: 'success' | 'fail';\n data: HTMLImageElement | ImageData | null;\n }>;\n loadSvg: (url: string) => Promise<{\n loadState: 'success' | 'fail';\n data: HTMLImageElement | ImageData | null;\n }>;\n loadJson: (url: string) => Promise<{\n loadState: 'success' | 'fail';\n data: Record<string, unknown> | null;\n }>;\n loadArrayBuffer: (url: string) => Promise<{\n loadState: 'success' | 'fail';\n data: ArrayBuffer | null;\n }>;\n loadBlob: (url: string) => Promise<{\n loadState: 'success' | 'fail';\n data: Blob | null;\n }>;\n}\n"]}
@@ -6,7 +6,6 @@ export type IImageAttribute = {
6
6
  repeatX: IRepeatType;
7
7
  repeatY: IRepeatType;
8
8
  image: string | HTMLImageElement | HTMLCanvasElement;
9
- cornerRadius: number | number[];
10
9
  };
11
10
  export type IImageGraphicAttribute = Partial<IGraphicAttribute> & Partial<IImageAttribute>;
12
11
  export interface IImage extends IGraphic<IImageGraphicAttribute> {
@@ -1 +1 @@
1
- {"version":3,"sources":["../src/interface/graphic/image.ts"],"names":[],"mappings":"","file":"image.js","sourcesContent":["import type { IGraphicAttribute, IGraphic } from '../graphic';\n\nexport type IRepeatType = 'no-repeat' | 'repeat';\n\nexport type IImageAttribute = {\n width: number;\n height: number;\n repeatX: IRepeatType;\n repeatY: IRepeatType;\n image: string | HTMLImageElement | HTMLCanvasElement;\n cornerRadius: number | number[];\n};\n\nexport type IImageGraphicAttribute = Partial<IGraphicAttribute> & Partial<IImageAttribute>;\n\nexport interface IImage extends IGraphic<IImageGraphicAttribute> {\n successCallback?: () => void;\n failCallback?: () => void;\n}\n"]}
1
+ {"version":3,"sources":["../src/interface/graphic/image.ts"],"names":[],"mappings":"","file":"image.js","sourcesContent":["import type { IGraphicAttribute, IGraphic } from '../graphic';\n\nexport type IRepeatType = 'no-repeat' | 'repeat';\n\nexport type IImageAttribute = {\n width: number;\n height: number;\n repeatX: IRepeatType;\n repeatY: IRepeatType;\n image: string | HTMLImageElement | HTMLCanvasElement;\n};\n\nexport type IImageGraphicAttribute = Partial<IGraphicAttribute> & Partial<IImageAttribute>;\n\nexport interface IImage extends IGraphic<IImageGraphicAttribute> {\n successCallback?: () => void;\n failCallback?: () => void;\n}\n"]}
@@ -9,6 +9,7 @@ export type ILineAttribute = {
9
9
  curveType: ICurveType;
10
10
  clipRange: number;
11
11
  clipRangeByDimension: IClipRangeByDimensionType;
12
+ closePath: boolean;
12
13
  };
13
14
  export type ILineGraphicAttribute = Partial<IGraphicAttribute> & Partial<ILineAttribute> & Partial<IConnectedStyle>;
14
15
  export interface ILine extends IGraphic<ILineGraphicAttribute> {
@@ -1 +1 @@
1
- {"version":3,"sources":["../src/interface/graphic/line.ts"],"names":[],"mappings":"","file":"line.js","sourcesContent":["import type { IPointLike } from '@visactor/vutils';\nimport type { IGraphicAttribute, IGraphic, IConnectedStyle } from '../graphic';\nimport type { ICurveType } from '../common';\nimport type { ISegPath2D } from '../curve';\n\n// 依据x纬度做clipRange\n// 依据y纬度做clipRange\n// 依据线段自动匹配纬度做clipRange\n// 依据线长纬度做clipRange\nexport type IClipRangeByDimensionType = 'x' | 'y' | 'auto' | 'default';\n\nexport type ILineAttribute = {\n segments: ISegment[]; // 分段设置point和样式\n points: IPointLike[]; // segments points 二选一\n curveType: ICurveType;\n clipRange: number;\n clipRangeByDimension: IClipRangeByDimensionType;\n};\n\nexport type ILineGraphicAttribute = Partial<IGraphicAttribute> & Partial<ILineAttribute> & Partial<IConnectedStyle>;\n\nexport interface ILine extends IGraphic<ILineGraphicAttribute> {\n cache?: ISegPath2D | ISegPath2D[];\n}\n\ntype ISegmentStyle = Pick<\n IGraphicAttribute,\n 'stroke' | 'strokeOpacity' | 'lineDash' | 'lineDashOffset' | 'lineCap' | 'lineJoin' | 'lineWidth' | 'miterLimit'\n>;\n\nexport interface ISegment extends Partial<ISegmentStyle>, Partial<IConnectedStyle> {\n points: IPointLike[];\n simplify?: boolean;\n}\n"]}
1
+ {"version":3,"sources":["../src/interface/graphic/line.ts"],"names":[],"mappings":"","file":"line.js","sourcesContent":["import type { IPointLike } from '@visactor/vutils';\nimport type { IGraphicAttribute, IGraphic, IConnectedStyle } from '../graphic';\nimport type { ICurveType } from '../common';\nimport type { ISegPath2D } from '../curve';\n\n// 依据x纬度做clipRange\n// 依据y纬度做clipRange\n// 依据线段自动匹配纬度做clipRange\n// 依据线长纬度做clipRange\nexport type IClipRangeByDimensionType = 'x' | 'y' | 'auto' | 'default';\n\nexport type ILineAttribute = {\n segments: ISegment[]; // 分段设置point和样式\n points: IPointLike[]; // segments points 二选一\n curveType: ICurveType;\n clipRange: number;\n clipRangeByDimension: IClipRangeByDimensionType;\n closePath: boolean; // 是否封闭路径\n};\n\nexport type ILineGraphicAttribute = Partial<IGraphicAttribute> & Partial<ILineAttribute> & Partial<IConnectedStyle>;\n\nexport interface ILine extends IGraphic<ILineGraphicAttribute> {\n cache?: ISegPath2D | ISegPath2D[];\n}\n\ntype ISegmentStyle = Pick<\n IGraphicAttribute,\n 'stroke' | 'strokeOpacity' | 'lineDash' | 'lineDashOffset' | 'lineCap' | 'lineJoin' | 'lineWidth' | 'miterLimit'\n>;\n\nexport interface ISegment extends Partial<ISegmentStyle>, Partial<IConnectedStyle> {\n points: IPointLike[];\n simplify?: boolean;\n}\n"]}
@@ -14,9 +14,8 @@ export interface ISymbolClass {
14
14
  type: SymbolType | string;
15
15
  path?: ICustomPath2D;
16
16
  pathStr: string;
17
- isSvg?: boolean;
18
- draw: (ctx: IPath2D, size: number | [number, number], x: number, y: number, z?: number, cb?: (p: ICustomPath2D, a: any) => void) => boolean;
19
- drawOffset: (ctx: IPath2D, size: number | [number, number], x: number, y: number, offset: number, z?: number, cb?: (p: ICustomPath2D, a: any) => void) => boolean;
17
+ draw: (ctx: IPath2D, size: number | [number, number], x: number, y: number, z?: number) => boolean;
18
+ drawOffset: (ctx: IPath2D, size: number | [number, number], x: number, y: number, offset: number, z?: number) => boolean;
20
19
  drawToSvgPath?: (size: number | [number, number], x: number, y: number, z?: number) => string;
21
20
  bounds: (size: number | [number, number], bounds: IBounds) => void;
22
21
  }
@@ -1 +1 @@
1
- {"version":3,"sources":["../src/interface/graphic/symbol.ts"],"names":[],"mappings":"","file":"symbol.js","sourcesContent":["import type { IBounds } from '@visactor/vutils';\nimport type { IGraphicAttribute, IGraphic } from '../graphic';\nimport type { ICustomPath2D, IPath2D } from '../path';\n\nexport type ISymbolAttribute = {\n symbolType: SymbolType;\n size: number | [number, number];\n};\n\nexport type ISymbolGraphicAttribute = Partial<IGraphicAttribute> & Partial<ISymbolAttribute>;\n\nexport interface ISymbol extends IGraphic<ISymbolGraphicAttribute> {\n getParsedPath: () => ISymbolClass;\n}\n\nexport type SymbolType =\n | 'circle'\n | 'cross'\n | 'diamond'\n | 'square'\n | 'arrow'\n | 'arrow2Left'\n | 'arrow2Right'\n | 'wedge'\n | 'thinTriangle'\n | 'triangle'\n | 'triangleUp'\n | 'triangleDown'\n | 'triangleRight'\n | 'triangleLeft'\n | 'stroke'\n | 'star'\n | 'wye'\n | 'rect'\n | string;\n\nexport interface ISymbolClass {\n type: SymbolType | string;\n path?: ICustomPath2D;\n pathStr: string;\n isSvg?: boolean;\n\n // 返回true表示内部已经调用closePath,返回false表示没有调用closePath,外部需要调用closePath\n draw: (\n ctx: IPath2D,\n size: number | [number, number],\n x: number,\n y: number,\n z?: number,\n cb?: (p: ICustomPath2D, a: any) => void\n ) => boolean;\n drawOffset: (\n ctx: IPath2D,\n size: number | [number, number],\n x: number,\n y: number,\n offset: number,\n z?: number,\n cb?: (p: ICustomPath2D, a: any) => void\n ) => boolean;\n\n drawToSvgPath?: (size: number | [number, number], x: number, y: number, z?: number) => string;\n\n bounds: (size: number | [number, number], bounds: IBounds) => void;\n}\n"]}
1
+ {"version":3,"sources":["../src/interface/graphic/symbol.ts"],"names":[],"mappings":"","file":"symbol.js","sourcesContent":["import type { IBounds } from '@visactor/vutils';\nimport type { IGraphicAttribute, IGraphic } from '../graphic';\nimport type { ICustomPath2D, IPath2D } from '../path';\n\nexport type ISymbolAttribute = {\n symbolType: SymbolType;\n size: number | [number, number];\n};\n\nexport type ISymbolGraphicAttribute = Partial<IGraphicAttribute> & Partial<ISymbolAttribute>;\n\nexport interface ISymbol extends IGraphic<ISymbolGraphicAttribute> {\n getParsedPath: () => ISymbolClass;\n}\n\nexport type SymbolType =\n | 'circle'\n | 'cross'\n | 'diamond'\n | 'square'\n | 'arrow'\n | 'arrow2Left'\n | 'arrow2Right'\n | 'wedge'\n | 'thinTriangle'\n | 'triangle'\n | 'triangleUp'\n | 'triangleDown'\n | 'triangleRight'\n | 'triangleLeft'\n | 'stroke'\n | 'star'\n | 'wye'\n | 'rect'\n | string;\n\nexport interface ISymbolClass {\n type: SymbolType | string;\n path?: ICustomPath2D;\n pathStr: string;\n\n // 返回true表示内部已经调用closePath,返回false表示没有调用closePath,外部需要调用closePath\n draw: (ctx: IPath2D, size: number | [number, number], x: number, y: number, z?: number) => boolean;\n drawOffset: (\n ctx: IPath2D,\n size: number | [number, number],\n x: number,\n y: number,\n offset: number,\n z?: number\n ) => boolean;\n\n drawToSvgPath?: (size: number | [number, number], x: number, y: number, z?: number) => string;\n\n bounds: (size: number | [number, number], bounds: IBounds) => void;\n}\n"]}
@@ -42,7 +42,6 @@ export type ITextAttribute = {
42
42
  scaleIn3d: boolean;
43
43
  direction: 'horizontal' | 'vertical';
44
44
  wordBreak: 'break-word' | 'break-all';
45
- ignoreBuf: boolean;
46
45
  };
47
46
  export type ITextCache = {
48
47
  clipedText?: string;
@@ -1 +1 @@
1
- {"version":3,"sources":["../src/interface/graphic/text.ts"],"names":[],"mappings":"","file":"text.js","sourcesContent":["import type { IAABBBounds } from '@visactor/vutils';\nimport type { IGraphicAttribute, IGraphic } from '../graphic';\n\nexport interface TextLayoutBBox {\n width: number; // 包围盒的宽度\n height: number; // 包围盒的高度\n xOffset: number;\n yOffset: number;\n}\n\nexport interface LayoutItemType {\n str: string; // 这行的字符串\n leftOffset?: number; // 该行距离左侧的偏移\n topOffset?: number; // 该行距离右侧的偏移\n width: number;\n}\n\nexport interface SimplifyLayoutType {\n lines: LayoutItemType[];\n}\n\nexport interface LayoutType {\n bbox: TextLayoutBBox;\n lines: LayoutItemType[];\n fontFamily: string;\n fontSize: number;\n fontWeight?: string | number;\n lineHeight: number;\n textAlign: TextAlignType;\n textBaseline: TextBaselineType;\n}\n\nexport type ITextAttribute = {\n text: string | number | string[] | number[];\n maxLineWidth: number;\n textAlign: TextAlignType;\n textBaseline: TextBaselineType;\n fontSize: number;\n fontFamily: string;\n fontWeight: string | number;\n ellipsis: boolean | string;\n fontVariant: string;\n fontStyle: string;\n lineHeight: number;\n underline: number;\n lineThrough: number;\n scaleIn3d: boolean;\n direction: 'horizontal' | 'vertical';\n wordBreak: 'break-word' | 'break-all';\n ignoreBuf: boolean;\n // textDecoration: number;\n // textDecorationWidth: number;\n // padding?: number | number[];\n};\nexport type ITextCache = {\n // 单行文本的时候缓存用\n clipedText?: string;\n clipedWidth?: number;\n // 多行文本的布局缓存\n layoutData?: LayoutType;\n verticalList?: { text: string; width?: number; direction: number }[][];\n};\n\nexport type ITextGraphicAttribute = Partial<IGraphicAttribute> & Partial<ITextAttribute>;\n\nexport type IWrapTextGraphicAttribute = ITextGraphicAttribute & {\n heightLimit?: number;\n lineClamp?: number;\n};\n\nexport interface IText extends IGraphic<ITextGraphicAttribute> {\n // 判断是否被ellipisised\n clipedText?: string;\n clipedWidth?: number;\n cliped?: boolean;\n multilineLayout?: LayoutType;\n font?: string;\n cache?: ITextCache;\n\n updateMultilineAABBBounds: (text: (number | string)[]) => IAABBBounds;\n updateSingallineAABBBounds: (text: number | string) => IAABBBounds;\n}\n\nexport type TextAlignType = 'left' | 'right' | 'center' | 'start' | 'end';\nexport type TextBaselineType = 'top' | 'middle' | 'bottom' | 'alphabetic';\n"]}
1
+ {"version":3,"sources":["../src/interface/graphic/text.ts"],"names":[],"mappings":"","file":"text.js","sourcesContent":["import type { IAABBBounds } from '@visactor/vutils';\nimport type { IGraphicAttribute, IGraphic } from '../graphic';\n\nexport interface TextLayoutBBox {\n width: number; // 包围盒的宽度\n height: number; // 包围盒的高度\n xOffset: number;\n yOffset: number;\n}\n\nexport interface LayoutItemType {\n str: string; // 这行的字符串\n leftOffset?: number; // 该行距离左侧的偏移\n topOffset?: number; // 该行距离右侧的偏移\n width: number;\n}\n\nexport interface SimplifyLayoutType {\n lines: LayoutItemType[];\n}\n\nexport interface LayoutType {\n bbox: TextLayoutBBox;\n lines: LayoutItemType[];\n fontFamily: string;\n fontSize: number;\n fontWeight?: string | number;\n lineHeight: number;\n textAlign: TextAlignType;\n textBaseline: TextBaselineType;\n}\n\nexport type ITextAttribute = {\n text: string | number | string[] | number[];\n maxLineWidth: number;\n textAlign: TextAlignType;\n textBaseline: TextBaselineType;\n fontSize: number;\n fontFamily: string;\n fontWeight: string | number;\n ellipsis: boolean | string;\n fontVariant: string;\n fontStyle: string;\n lineHeight: number;\n underline: number;\n lineThrough: number;\n scaleIn3d: boolean;\n direction: 'horizontal' | 'vertical';\n wordBreak: 'break-word' | 'break-all';\n // textDecoration: number;\n // textDecorationWidth: number;\n // padding?: number | number[];\n};\nexport type ITextCache = {\n // 单行文本的时候缓存用\n clipedText?: string;\n clipedWidth?: number;\n // 多行文本的布局缓存\n layoutData?: LayoutType;\n verticalList?: { text: string; width?: number; direction: number }[][];\n};\n\nexport type ITextGraphicAttribute = Partial<IGraphicAttribute> & Partial<ITextAttribute>;\n\nexport type IWrapTextGraphicAttribute = ITextGraphicAttribute & {\n heightLimit?: number;\n lineClamp?: number;\n};\n\nexport interface IText extends IGraphic<ITextGraphicAttribute> {\n // 判断是否被ellipisised\n clipedText?: string;\n clipedWidth?: number;\n cliped?: boolean;\n multilineLayout?: LayoutType;\n font?: string;\n cache?: ITextCache;\n\n updateMultilineAABBBounds: (text: (number | string)[]) => IAABBBounds;\n updateSingallineAABBBounds: (text: number | string) => IAABBBounds;\n}\n\nexport type TextAlignType = 'left' | 'right' | 'center' | 'start' | 'end';\nexport type TextBaselineType = 'top' | 'middle' | 'bottom' | 'alphabetic';\n"]}
@@ -32,6 +32,7 @@ export type ITransform = {
32
32
  angle: number;
33
33
  alpha: number;
34
34
  beta: number;
35
+ scaleCenter: [number, number];
35
36
  anchor: [number | string, number | string];
36
37
  anchor3d: [number | string, number | string, number] | [number | string, number | string];
37
38
  postMatrix: IMatrix;
@@ -83,33 +84,16 @@ export type IConnectedStyle = {
83
84
  connectedX: number;
84
85
  connectedY: number;
85
86
  };
86
- export type IBackgroundConfig = {
87
- stroke?: string | boolean;
88
- fill?: string | boolean;
89
- lineWidth?: number;
90
- cornerRadius?: number;
91
- expandX?: number;
92
- expandY?: number;
93
- };
94
87
  export type IGraphicStyle = IFillStyle & IStrokeStyle & {
95
88
  opacity: number;
96
89
  backgroundMode: number;
97
- background: string | HTMLImageElement | HTMLCanvasElement | IBackgroundConfig | null;
90
+ background: string | HTMLImageElement | HTMLCanvasElement | null;
98
91
  texture: TextureType | string;
99
92
  textureColor: string;
100
93
  textureSize: number;
101
94
  texturePadding: number;
102
95
  blur: number;
103
96
  cursor: Cursor | null;
104
- html: {
105
- dom: string | HTMLElement;
106
- container: string | HTMLElement | null;
107
- width: number;
108
- height: number;
109
- style: string | Record<string, any>;
110
- visible?: boolean;
111
- anchorType?: 'position' | 'boundsLeftTop';
112
- } | null;
113
97
  };
114
98
  export type IGraphicAttribute = IGraphicStyle & ITransform & {
115
99
  strokeSeg: IStrokeSeg | null;
@@ -123,7 +107,6 @@ export type IGraphicAttribute = IGraphicStyle & ITransform & {
123
107
  zIndex: number;
124
108
  layout: any;
125
109
  keepDirIn3d?: boolean;
126
- shadowRootIdx: number;
127
110
  };
128
111
  export interface IGraphicJson<T extends Partial<IGraphicAttribute> = Partial<IGraphicAttribute>> {
129
112
  attribute: Partial<T>;
@@ -157,11 +140,6 @@ export interface IGraphic<T extends Partial<IGraphicAttribute> = Partial<IGraphi
157
140
  shadowRoot?: IShadowRoot;
158
141
  glyphHost?: IGraphic<IGlyphGraphicAttribute>;
159
142
  backgroundImg?: boolean;
160
- bindDom?: Map<string | HTMLElement, {
161
- container: HTMLElement | string;
162
- dom: HTMLElement;
163
- wrapGroup: HTMLDivElement;
164
- }>;
165
143
  valid: boolean;
166
144
  parent: IGroup | null;
167
145
  isContainer?: boolean;
@@ -202,12 +180,11 @@ export interface IGraphic<T extends Partial<IGraphicAttribute> = Partial<IGraphi
202
180
  translateTo: (x: number, y: number) => this;
203
181
  scale: (scaleX: number, scaleY: number, scaleCenter?: IPointLike) => this;
204
182
  scaleTo: (scaleX: number, scaleY: number) => this;
205
- rotate: (angle: number, rotateCenter?: IPointLike) => this;
183
+ rotate: (angle: number) => this;
206
184
  rotateTo: (angle: number) => this;
207
185
  skewTo: (b: number, c: number) => this;
208
186
  addUpdateBoundTag: () => void;
209
187
  addUpdateShapeAndBoundsTag: () => void;
210
- addUpdateLayoutTag: () => void;
211
188
  update: (d?: {
212
189
  bounds: boolean;
213
190
  trans: boolean;
@@ -231,7 +208,7 @@ export interface IGraphic<T extends Partial<IGraphicAttribute> = Partial<IGraphi
231
208
  toJson: () => IGraphicJson;
232
209
  createPathProxy: (path?: string) => void;
233
210
  toCustomPath?: () => ICustomPath2D;
234
- resources?: Map<string | HTMLImageElement | HTMLCanvasElement | IBackgroundConfig, {
211
+ resources?: Map<string | HTMLImageElement | HTMLCanvasElement, {
235
212
  state: 'init' | 'loading' | 'success' | 'fail';
236
213
  data?: HTMLImageElement | HTMLCanvasElement;
237
214
  }>;
@@ -1 +1 @@
1
- {"version":3,"sources":["../src/interface/graphic.ts"],"names":[],"mappings":"","file":"graphic.js","sourcesContent":["import type { IAABBBounds, IOBBBounds, IMatrix, IPointLike, IPoint } from '@visactor/vutils';\nimport type { IAnimate, IStep, EasingType, IAnimateTarget } from './animate';\nimport type { IColor } from './color';\nimport type { IGroup } from './graphic/group';\nimport type { IShadowRoot } from './graphic/shadow-root';\nimport type { ILayer } from './layer';\nimport type { INode } from './node-tree';\nimport type { ICustomPath2D } from './path';\nimport type { IStage } from './stage';\nimport type { IGlyphGraphicAttribute } from './graphic/glyph';\nimport type { IContainPointMode } from '../common/enums';\nimport type { IFace3d } from './graphic/face3d';\n\ntype IStrokeSeg = {\n start: number; // 百分比\n // end和length二选一\n end: number; // 百分比\n length: number; // 像素长度\n};\n\n// TODO 最后加一个any\nexport type GraphicType =\n | 'area'\n | 'circle'\n | 'ellipse'\n | 'line'\n | 'rect'\n | 'rect3d'\n | 'path'\n | 'richtext'\n | 'text'\n | 'arc'\n | 'arc3d'\n | 'image'\n | 'symbol'\n | 'group'\n | 'shadowroot'\n | 'polygon'\n | 'pyramid3d'\n | 'glyph';\n\n// Cursor style\n// See: https://developer.mozilla.org/en-US/docs/Web/CSS/cursor\nexport type Cursor =\n | 'auto'\n | 'default'\n | 'none'\n | 'context-menu'\n | 'help'\n | 'pointer'\n | 'progress'\n | 'wait'\n | 'cell'\n | 'crosshair'\n | 'text'\n | 'vertical-text'\n | 'alias'\n | 'copy'\n | 'move'\n | 'no-drop'\n | 'not-allowed'\n | 'grab'\n | 'grabbing'\n | 'all-scroll'\n | 'col-resize'\n | 'row-resize'\n | 'n-resize'\n | 'e-resize'\n | 's-resize'\n | 'w-resize'\n | 'ne-resize'\n | 'nw-resize'\n | 'se-resize'\n | 'sw-resize'\n | 'ew-resize'\n | 'ns-resize'\n | 'nesw-resize'\n | 'nwse-resize'\n | 'zoom-in'\n | 'zoom-out';\n\nexport type ITransform = {\n x: number;\n y: number;\n z: number;\n dx: number;\n dy: number;\n dz: number;\n scrollX: number;\n scrollY: number;\n scaleX: number;\n scaleY: number;\n scaleZ: number;\n angle: number;\n alpha: number;\n beta: number;\n anchor: [number | string, number | string]; // 基于AABB的锚点位置,用于简单的定位某些path\n anchor3d: [number | string, number | string, number] | [number | string, number | string]; // 3d的锚点位置\n postMatrix: IMatrix;\n};\n\nexport type IFillType = boolean | string | IColor;\nexport type IFillStyle = {\n fillOpacity: number;\n shadowBlur: number;\n shadowColor: string;\n shadowOffsetX: number;\n shadowOffsetY: number;\n fill: IFillType;\n};\n\nexport type ILayout = {\n alignSelf: 'auto' | 'flex-start' | 'flex-end' | 'center' | 'baseline' | 'stretch';\n};\n\nexport type IBorderStyle = Omit<IStrokeStyle, 'outerBorder' | 'innerBorder'> & {\n distance: number | string;\n visible?: boolean;\n};\n\nexport type IStrokeType = boolean | string | IColor | null;\nexport type IStrokeStyle = {\n outerBorder: Partial<IBorderStyle>;\n innerBorder: Partial<IBorderStyle>;\n strokeOpacity: number;\n lineDash: number[];\n lineDashOffset: number;\n lineWidth: number;\n lineCap: CanvasLineCap;\n lineJoin: CanvasLineJoin;\n miterLimit: number;\n // 描边的boundsBuffer,用于控制bounds的buffer\n strokeBoundsBuffer: number;\n /**\n * stroke - true 全描边\n * stroke - false 不描边\n * stroke 为数值类型,适用于rect\\arc等图形,用于配置部分描边的场景,其中\n *\n * 0b00000 - 不描边\n * 0b000001 - top\n * 0b000010 - right\n * 0b000100 - bottom\n * 0b001000 - left\n * 相应的:\n * 0b000011 - top + right\n * 0b000111 - top + right + bottom\n * 0b001111 - 全描边\n *\n * stroke - boolean[],适用于rect\\arc等图形,用于配置部分描边的场景\n */\n stroke: IStrokeType[] | IStrokeType;\n};\n\ntype TextureType = 'circle' | 'diamond' | 'rect' | 'vertical-line' | 'horizontal-line' | 'bias-lr' | 'bias-rl' | 'grid';\n\nexport type IConnectedStyle = {\n // 连接,取零或者断开\n connectedType: 'connect' | 'zero' | 'none';\n connectedStyle: {\n stroke: IStrokeStyle['stroke'];\n strokeOpacity: IStrokeStyle['strokeOpacity'];\n lineDash: IStrokeStyle['lineDash'];\n lineDashOffset: IStrokeStyle['lineDashOffset'];\n lineCap: IStrokeStyle['lineCap'];\n lineJoin: IStrokeStyle['lineJoin'];\n lineWidth: IStrokeStyle['lineWidth'];\n fill: IFillStyle['fill'];\n fillOpacity: IFillStyle['fillOpacity'];\n };\n connectedX: number;\n connectedY: number;\n};\n\nexport type IBackgroundConfig = {\n stroke?: string | boolean;\n fill?: string | boolean;\n lineWidth?: number;\n cornerRadius?: number;\n expandX?: number;\n expandY?: number;\n};\n\nexport type IGraphicStyle = IFillStyle &\n IStrokeStyle & {\n opacity: number;\n backgroundMode: number; // 填充模式(与具体图元有关)\n background: string | HTMLImageElement | HTMLCanvasElement | IBackgroundConfig | null; // 背景,可以与fill同时存在\n texture: TextureType | string; // 纹理\n textureColor: string; // 纹理颜色\n textureSize: number; // 纹理大小\n texturePadding: number; // 纹理间隙\n blur: number;\n cursor: Cursor | null; // 鼠标样式\n // HTML的dom或者string\n html: {\n dom: string | HTMLElement; // dom字符串或者dom\n container: string | HTMLElement | null; // id或者dom\n width: number; // 容器的宽度\n height: number; // 容器的高度\n style: string | Record<string, any>; // 容器的样式\n visible?: boolean;\n anchorType?: 'position' | 'boundsLeftTop';\n } | null;\n };\n\nexport type IGraphicAttribute = IGraphicStyle &\n ITransform & {\n /**\n * stroke百分比\n */\n strokeSeg: IStrokeSeg | null;\n // 包围盒的padding\n boundsPadding: number | number[];\n /**\n * 选择模式,精确模式,粗糙模式(包围盒模式),自定义模式\n */\n pickMode: 'accurate' | 'imprecise' | 'custom';\n boundsMode: 'accurate' | 'imprecise';\n customPickShape: () => boolean | null;\n /**\n * 是否支持事件拾取,默认为 true。\n * @default true\n */\n pickable: boolean;\n /**\n * 对于 group 节点,是否支持其子元素的事件拾取,默认为 true。\n * 如果 group `pickable` 关闭,`childrenPickable` 开启,那么 group 的子节点仍参与事件拾取\n * @default true\n */\n childrenPickable: boolean;\n /**\n * 元素是否可见。\n * @default true\n */\n visible: boolean;\n zIndex: number;\n layout: any;\n /**\n * 是否在3d中控制方向\n * false: 不控制方向\n * true: 始终控制方向朝摄像机\n */\n keepDirIn3d?: boolean;\n shadowRootIdx: number;\n };\n\nexport interface IGraphicJson<T extends Partial<IGraphicAttribute> = Partial<IGraphicAttribute>> {\n attribute: Partial<T>;\n _uid: number;\n type: string;\n name: string;\n children: IGraphicJson<T>[];\n}\n\n/** the context of setAttribute */\nexport type ISetAttributeContext = {\n /** type of setAttribute */\n type?: number;\n animationState?: {\n step?: IStep;\n isFirstFrameOfStep?: boolean;\n /** ratio of animation */\n ratio?: number;\n /** is animation end? */\n end?: boolean;\n };\n};\n\nexport type IGraphicAnimateParams = {\n id?: number | string;\n onStart?: () => void;\n onFrame?: (step: IStep, ratio: number) => void;\n onEnd?: () => void;\n onRemove?: () => void;\n interpolate?: (key: string, ratio: number, from: any, to: any, nextAttributes: any) => boolean;\n};\n\nexport interface IGraphic<T extends Partial<IGraphicAttribute> = Partial<IGraphicAttribute>>\n extends INode,\n IAnimateTarget {\n type?: GraphicType;\n numberType?: number;\n stage?: IStage;\n layer?: ILayer;\n shadowRoot?: IShadowRoot;\n glyphHost?: IGraphic<IGlyphGraphicAttribute>;\n backgroundImg?: boolean;\n\n bindDom?: Map<string | HTMLElement, { container: HTMLElement | string; dom: HTMLElement; wrapGroup: HTMLDivElement }>;\n\n valid: boolean;\n parent: IGroup | null;\n isContainer?: boolean;\n // 是否是3d模式(是否应用3d视角)\n in3dMode?: boolean;\n\n // 上次更新的stamp\n stamp?: number;\n animationBackUps?: {\n from: Record<string, any>;\n to: Record<string, any>;\n };\n\n attribute: Partial<T>;\n\n /** 用于实现morph动画场景,转换成bezier曲线渲染 */\n pathProxy?: ICustomPath2D | ((attrs: T) => ICustomPath2D);\n incremental?: number;\n incrementalAt?: number;\n\n /** 记录state对应的图形属性 */\n states?: Record<string, Partial<T>>;\n normalAttrs?: Partial<T>;\n stateProxy?: (stateName: string, targetStates?: string[]) => Partial<T>;\n findFace?: () => IFace3d;\n toggleState: (stateName: string, hasAnimation?: boolean) => void;\n removeState: (stateName: string, hasAnimation?: boolean) => void;\n clearStates: (hasAnimation?: boolean) => void;\n useStates: (states: string[], hasAnimation?: boolean) => void;\n addState: (stateName: string, keepCurrentStates?: boolean, hasAnimation?: boolean) => void;\n hasState: (stateName?: string) => boolean;\n getState: (stateName: string) => Partial<T>;\n onBeforeAttributeUpdate?: (\n val: any,\n attributes: Partial<T>,\n key: null | string | string[],\n context?: ISetAttributeContext\n ) => T | undefined;\n applyStateAttrs: (attrs: Partial<T>, stateNames: string[], hasAnimation?: boolean, isClear?: boolean) => void;\n updateNormalAttrs: (stateAttrs: Partial<T>) => void;\n\n // get\n readonly AABBBounds: IAABBBounds; // 用于获取当前节点的AABB包围盒\n readonly OBBBounds: IOBBBounds; // 获取OBB包围盒,旋转防重叠需要用\n readonly globalAABBBounds: IAABBBounds; // 全局AABB包围盒\n readonly transMatrix: IMatrix; // 变换矩阵,动态计算\n readonly globalTransMatrix: IMatrix; // 变换矩阵,动态计算\n\n getOffsetXY: (attr?: ITransform) => IPoint;\n\n // function\n containsPoint: (x: number, y: number, mode?: IContainPointMode) => boolean;\n\n setMode: (mode: '3d' | '2d') => void;\n isValid: () => boolean;\n\n // TODO: transform API\n // 基于当前transform的变换,普通用户尽量别用,拿捏不住的~\n translate: (x: number, y: number) => this;\n translateTo: (x: number, y: number) => this;\n scale: (scaleX: number, scaleY: number, scaleCenter?: IPointLike) => this;\n scaleTo: (scaleX: number, scaleY: number) => this;\n rotate: (angle: number, rotateCenter?: IPointLike) => this;\n rotateTo: (angle: number) => this;\n skewTo: (b: number, c: number) => this;\n addUpdateBoundTag: () => void;\n addUpdateShapeAndBoundsTag: () => void;\n addUpdateLayoutTag: () => void;\n\n update: (d?: { bounds: boolean; trans: boolean }) => void;\n\n // animate\n animate: (params?: IGraphicAnimateParams) => IAnimate;\n\n // 语法糖,可有可无,有的为了首屏性能考虑做成get方法,有的由外界直接托管,内部不赋值\n name?: string;\n\n // 供render处理shape缓存tag\n shouldUpdateShape: () => boolean;\n clearUpdateShapeTag: () => void;\n\n // // 供render缓存shape\n // cacheShape?: ICustomPath2D;\n // // 线段使用的path2D\n // cacheLine?: ISegPath2D | ISegPath2D[];\n // // 面积图使用的path2D\n // cacheArea?: IAreaCacheItem | IAreaCacheItem[];\n\n setAttributes: (params: Partial<T>, forceUpdateTag?: boolean, context?: ISetAttributeContext) => void;\n\n initAttributes: (params: Partial<T>) => void;\n\n setAttribute: (key: string, value: any, forceUpdateTag?: boolean, context?: ISetAttributeContext) => void;\n\n setStage: (stage?: IStage, layer?: ILayer) => void;\n onSetStage: (cb: (g: IGraphic, stage: IStage) => void) => void;\n\n shouldUpdateAABBBounds: () => boolean;\n shouldSelfChangeUpdateAABBBounds: () => boolean;\n shouldUpdateGlobalMatrix: () => boolean;\n\n addUpdatePositionTag: () => void;\n addUpdateGlobalPositionTag: () => void;\n\n attachShadow: () => IShadowRoot;\n detachShadow: () => void;\n\n toJson: () => IGraphicJson;\n\n /** 创建pathProxy */\n createPathProxy: (path?: string) => void;\n /** 将图形转换成CustomPath2D */\n toCustomPath?: () => ICustomPath2D;\n\n resources?: Map<\n string | HTMLImageElement | HTMLCanvasElement | IBackgroundConfig,\n { state: 'init' | 'loading' | 'success' | 'fail'; data?: HTMLImageElement | HTMLCanvasElement }\n >;\n imageLoadSuccess: (url: string, data: HTMLImageElement) => void;\n imageLoadFail: (url: string) => void;\n\n clone: () => IGraphic;\n stopAnimates: (stopChildren?: boolean) => void;\n}\n\nexport interface IRoot extends IGraphic {\n pick: (x: number, y: number) => IGraphic;\n}\n\n/**\n * 动画配置\n */\nexport type IAnimateConfig = {\n duration?: number;\n easing?: EasingType;\n};\n\nexport type GraphicReleaseStatus = 'released' | 'willRelease';\n"]}
1
+ {"version":3,"sources":["../src/interface/graphic.ts"],"names":[],"mappings":"","file":"graphic.js","sourcesContent":["import type { IAABBBounds, IOBBBounds, IMatrix, IPointLike, IPoint } from '@visactor/vutils';\nimport type { IAnimate, IStep, EasingType, IAnimateTarget } from './animate';\nimport type { IColor } from './color';\nimport type { IGroup } from './graphic/group';\nimport type { IShadowRoot } from './graphic/shadow-root';\nimport type { ILayer } from './layer';\nimport type { INode } from './node-tree';\nimport type { ICustomPath2D } from './path';\nimport type { IStage } from './stage';\nimport type { IGlyphGraphicAttribute } from './graphic/glyph';\nimport type { IContainPointMode } from '../common/enums';\nimport type { IFace3d } from './graphic/face3d';\n\ntype IStrokeSeg = {\n start: number; // 百分比\n // end和length二选一\n end: number; // 百分比\n length: number; // 像素长度\n};\n\n// TODO 最后加一个any\nexport type GraphicType =\n | 'area'\n | 'circle'\n | 'ellipse'\n | 'line'\n | 'rect'\n | 'rect3d'\n | 'path'\n | 'richtext'\n | 'text'\n | 'arc'\n | 'arc3d'\n | 'image'\n | 'symbol'\n | 'group'\n | 'shadowroot'\n | 'polygon'\n | 'pyramid3d'\n | 'glyph';\n\n// Cursor style\n// See: https://developer.mozilla.org/en-US/docs/Web/CSS/cursor\nexport type Cursor =\n | 'auto'\n | 'default'\n | 'none'\n | 'context-menu'\n | 'help'\n | 'pointer'\n | 'progress'\n | 'wait'\n | 'cell'\n | 'crosshair'\n | 'text'\n | 'vertical-text'\n | 'alias'\n | 'copy'\n | 'move'\n | 'no-drop'\n | 'not-allowed'\n | 'grab'\n | 'grabbing'\n | 'all-scroll'\n | 'col-resize'\n | 'row-resize'\n | 'n-resize'\n | 'e-resize'\n | 's-resize'\n | 'w-resize'\n | 'ne-resize'\n | 'nw-resize'\n | 'se-resize'\n | 'sw-resize'\n | 'ew-resize'\n | 'ns-resize'\n | 'nesw-resize'\n | 'nwse-resize'\n | 'zoom-in'\n | 'zoom-out';\n\nexport type ITransform = {\n x: number;\n y: number;\n z: number;\n dx: number;\n dy: number;\n dz: number;\n scrollX: number;\n scrollY: number;\n scaleX: number;\n scaleY: number;\n scaleZ: number;\n angle: number;\n alpha: number;\n beta: number;\n scaleCenter: [number, number];\n anchor: [number | string, number | string]; // 基于AABB的锚点位置,用于简单的定位某些path\n anchor3d: [number | string, number | string, number] | [number | string, number | string]; // 3d的锚点位置\n postMatrix: IMatrix;\n};\n\nexport type IFillType = boolean | string | IColor;\nexport type IFillStyle = {\n fillOpacity: number;\n shadowBlur: number;\n shadowColor: string;\n shadowOffsetX: number;\n shadowOffsetY: number;\n fill: IFillType;\n};\n\nexport type ILayout = {\n alignSelf: 'auto' | 'flex-start' | 'flex-end' | 'center' | 'baseline' | 'stretch';\n};\n\nexport type IBorderStyle = Omit<IStrokeStyle, 'outerBorder' | 'innerBorder'> & {\n distance: number | string;\n visible?: boolean;\n};\n\nexport type IStrokeType = boolean | string | IColor | null;\nexport type IStrokeStyle = {\n outerBorder: Partial<IBorderStyle>;\n innerBorder: Partial<IBorderStyle>;\n strokeOpacity: number;\n lineDash: number[];\n lineDashOffset: number;\n lineWidth: number;\n lineCap: CanvasLineCap;\n lineJoin: CanvasLineJoin;\n miterLimit: number;\n // 描边的boundsBuffer,用于控制bounds的buffer\n strokeBoundsBuffer: number;\n /**\n * stroke - true 全描边\n * stroke - false 不描边\n * stroke 为数值类型,适用于rect\\arc等图形,用于配置部分描边的场景,其中\n *\n * 0b00000 - 不描边\n * 0b000001 - top\n * 0b000010 - right\n * 0b000100 - bottom\n * 0b001000 - left\n * 相应的:\n * 0b000011 - top + right\n * 0b000111 - top + right + bottom\n * 0b001111 - 全描边\n *\n * stroke - boolean[],适用于rect\\arc等图形,用于配置部分描边的场景\n */\n stroke: IStrokeType[] | IStrokeType;\n};\n\ntype TextureType = 'circle' | 'diamond' | 'rect' | 'vertical-line' | 'horizontal-line' | 'bias-lr' | 'bias-rl' | 'grid';\n\nexport type IConnectedStyle = {\n // 连接,取零或者断开\n connectedType: 'connect' | 'zero' | 'none';\n connectedStyle: {\n stroke: IStrokeStyle['stroke'];\n strokeOpacity: IStrokeStyle['strokeOpacity'];\n lineDash: IStrokeStyle['lineDash'];\n lineDashOffset: IStrokeStyle['lineDashOffset'];\n lineCap: IStrokeStyle['lineCap'];\n lineJoin: IStrokeStyle['lineJoin'];\n lineWidth: IStrokeStyle['lineWidth'];\n fill: IFillStyle['fill'];\n fillOpacity: IFillStyle['fillOpacity'];\n };\n connectedX: number;\n connectedY: number;\n};\n\nexport type IGraphicStyle = IFillStyle &\n IStrokeStyle & {\n opacity: number;\n backgroundMode: number; // 填充模式(与具体图元有关)\n background: string | HTMLImageElement | HTMLCanvasElement | null; // 背景,可以与fill同时存在\n texture: TextureType | string; // 纹理\n textureColor: string; // 纹理颜色\n textureSize: number; // 纹理大小\n texturePadding: number; // 纹理间隙\n blur: number;\n cursor: Cursor | null; // 鼠标样式\n };\n\nexport type IGraphicAttribute = IGraphicStyle &\n ITransform & {\n /**\n * stroke百分比\n */\n strokeSeg: IStrokeSeg | null;\n // 包围盒的padding\n boundsPadding: number | number[];\n /**\n * 选择模式,精确模式,粗糙模式(包围盒模式),自定义模式\n */\n pickMode: 'accurate' | 'imprecise' | 'custom';\n boundsMode: 'accurate' | 'imprecise';\n customPickShape: () => boolean | null;\n /**\n * 是否支持事件拾取,默认为 true。\n * @default true\n */\n pickable: boolean;\n /**\n * 对于 group 节点,是否支持其子元素的事件拾取,默认为 true。\n * 如果 group `pickable` 关闭,`childrenPickable` 开启,那么 group 的子节点仍参与事件拾取\n * @default true\n */\n childrenPickable: boolean;\n /**\n * 元素是否可见。\n * @default true\n */\n visible: boolean;\n zIndex: number;\n layout: any;\n /**\n * 是否在3d中控制方向\n * false: 不控制方向\n * true: 始终控制方向朝摄像机\n */\n keepDirIn3d?: boolean;\n };\n\nexport interface IGraphicJson<T extends Partial<IGraphicAttribute> = Partial<IGraphicAttribute>> {\n attribute: Partial<T>;\n _uid: number;\n type: string;\n name: string;\n children: IGraphicJson<T>[];\n}\n\n/** the context of setAttribute */\nexport type ISetAttributeContext = {\n /** type of setAttribute */\n type?: number;\n animationState?: {\n step?: IStep;\n isFirstFrameOfStep?: boolean;\n /** ratio of animation */\n ratio?: number;\n /** is animation end? */\n end?: boolean;\n };\n};\n\nexport type IGraphicAnimateParams = {\n id?: number | string;\n onStart?: () => void;\n onFrame?: (step: IStep, ratio: number) => void;\n onEnd?: () => void;\n onRemove?: () => void;\n interpolate?: (key: string, ratio: number, from: any, to: any, nextAttributes: any) => boolean;\n};\n\nexport interface IGraphic<T extends Partial<IGraphicAttribute> = Partial<IGraphicAttribute>>\n extends INode,\n IAnimateTarget {\n type?: GraphicType;\n numberType?: number;\n stage?: IStage;\n layer?: ILayer;\n shadowRoot?: IShadowRoot;\n glyphHost?: IGraphic<IGlyphGraphicAttribute>;\n backgroundImg?: boolean;\n\n valid: boolean;\n parent: IGroup | null;\n isContainer?: boolean;\n // 是否是3d模式(是否应用3d视角)\n in3dMode?: boolean;\n\n // 上次更新的stamp\n stamp?: number;\n animationBackUps?: {\n from: Record<string, any>;\n to: Record<string, any>;\n };\n\n attribute: Partial<T>;\n\n /** 用于实现morph动画场景,转换成bezier曲线渲染 */\n pathProxy?: ICustomPath2D | ((attrs: T) => ICustomPath2D);\n incremental?: number;\n incrementalAt?: number;\n\n /** 记录state对应的图形属性 */\n states?: Record<string, Partial<T>>;\n normalAttrs?: Partial<T>;\n stateProxy?: (stateName: string, targetStates?: string[]) => Partial<T>;\n findFace?: () => IFace3d;\n toggleState: (stateName: string, hasAnimation?: boolean) => void;\n removeState: (stateName: string, hasAnimation?: boolean) => void;\n clearStates: (hasAnimation?: boolean) => void;\n useStates: (states: string[], hasAnimation?: boolean) => void;\n addState: (stateName: string, keepCurrentStates?: boolean, hasAnimation?: boolean) => void;\n hasState: (stateName?: string) => boolean;\n getState: (stateName: string) => Partial<T>;\n onBeforeAttributeUpdate?: (\n val: any,\n attributes: Partial<T>,\n key: null | string | string[],\n context?: ISetAttributeContext\n ) => T | undefined;\n applyStateAttrs: (attrs: Partial<T>, stateNames: string[], hasAnimation?: boolean, isClear?: boolean) => void;\n updateNormalAttrs: (stateAttrs: Partial<T>) => void;\n\n // get\n readonly AABBBounds: IAABBBounds; // 用于获取当前节点的AABB包围盒\n readonly OBBBounds: IOBBBounds; // 获取OBB包围盒,旋转防重叠需要用\n readonly globalAABBBounds: IAABBBounds; // 全局AABB包围盒\n readonly transMatrix: IMatrix; // 变换矩阵,动态计算\n readonly globalTransMatrix: IMatrix; // 变换矩阵,动态计算\n\n getOffsetXY: (attr?: ITransform) => IPoint;\n\n // function\n containsPoint: (x: number, y: number, mode?: IContainPointMode) => boolean;\n\n setMode: (mode: '3d' | '2d') => void;\n isValid: () => boolean;\n\n // TODO: transform API\n // 基于当前transform的变换,普通用户尽量别用,拿捏不住的~\n translate: (x: number, y: number) => this;\n translateTo: (x: number, y: number) => this;\n scale: (scaleX: number, scaleY: number, scaleCenter?: IPointLike) => this;\n scaleTo: (scaleX: number, scaleY: number) => this;\n rotate: (angle: number) => this;\n rotateTo: (angle: number) => this;\n skewTo: (b: number, c: number) => this;\n addUpdateBoundTag: () => void;\n addUpdateShapeAndBoundsTag: () => void;\n\n update: (d?: { bounds: boolean; trans: boolean }) => void;\n\n // animate\n animate: (params?: IGraphicAnimateParams) => IAnimate;\n\n // 语法糖,可有可无,有的为了首屏性能考虑做成get方法,有的由外界直接托管,内部不赋值\n name?: string;\n\n // 供render处理shape缓存tag\n shouldUpdateShape: () => boolean;\n clearUpdateShapeTag: () => void;\n\n // // 供render缓存shape\n // cacheShape?: ICustomPath2D;\n // // 线段使用的path2D\n // cacheLine?: ISegPath2D | ISegPath2D[];\n // // 面积图使用的path2D\n // cacheArea?: IAreaCacheItem | IAreaCacheItem[];\n\n setAttributes: (params: Partial<T>, forceUpdateTag?: boolean, context?: ISetAttributeContext) => void;\n\n initAttributes: (params: Partial<T>) => void;\n\n setAttribute: (key: string, value: any, forceUpdateTag?: boolean, context?: ISetAttributeContext) => void;\n\n setStage: (stage?: IStage, layer?: ILayer) => void;\n onSetStage: (cb: (g: IGraphic, stage: IStage) => void) => void;\n\n shouldUpdateAABBBounds: () => boolean;\n shouldSelfChangeUpdateAABBBounds: () => boolean;\n shouldUpdateGlobalMatrix: () => boolean;\n\n addUpdatePositionTag: () => void;\n addUpdateGlobalPositionTag: () => void;\n\n attachShadow: () => IShadowRoot;\n detachShadow: () => void;\n\n toJson: () => IGraphicJson;\n\n /** 创建pathProxy */\n createPathProxy: (path?: string) => void;\n /** 将图形转换成CustomPath2D */\n toCustomPath?: () => ICustomPath2D;\n\n resources?: Map<\n string | HTMLImageElement | HTMLCanvasElement,\n { state: 'init' | 'loading' | 'success' | 'fail'; data?: HTMLImageElement | HTMLCanvasElement }\n >;\n imageLoadSuccess: (url: string, data: HTMLImageElement) => void;\n imageLoadFail: (url: string) => void;\n\n clone: () => IGraphic;\n stopAnimates: (stopChildren?: boolean) => void;\n}\n\nexport interface IRoot extends IGraphic {\n pick: (x: number, y: number) => IGraphic;\n}\n\n/**\n * 动画配置\n */\nexport type IAnimateConfig = {\n duration?: number;\n easing?: EasingType;\n};\n\nexport type GraphicReleaseStatus = 'released' | 'willRelease';\n"]}
@@ -7,9 +7,6 @@ import type { IDrawContribution } from './render';
7
7
  export type PickResult = {
8
8
  graphic: IGraphic | null;
9
9
  group: IGroup | null;
10
- params?: {
11
- shadowTarget?: IGraphic;
12
- };
13
10
  };
14
11
  export interface IGraphicPicker {
15
12
  type: string;
@@ -32,7 +29,7 @@ export interface IPickerService {
32
29
  configure: (global: IGlobal, env: EnvType) => void;
33
30
  pick: (group: IGraphic[], point: IPoint, params?: IPickParams) => PickResult;
34
31
  pickGroup: (group: IGroup, point: IPointLike, parentMatrix: IMatrix, params: IPickParams) => PickResult;
35
- pickItem: (graphic: IGraphic, point: IPointLike, parentMatrix: IMatrix | null, params?: IPickParams) => IGraphic | null;
32
+ pickItem: (graphic: IGraphic, point: IPointLike, params?: IPickParams) => IGraphic | null;
36
33
  containsPoint: (graphic: IGraphic, point: IPointLike, params?: IPickParams) => boolean;
37
34
  drawContribution?: IDrawContribution;
38
35
  }
@@ -43,11 +40,6 @@ export interface IPickItemInterceptorContribution {
43
40
  }, params?: {
44
41
  parentMatrix: IMatrix;
45
42
  }) => boolean | PickResult | null;
46
- afterPickItem?: (graphic: IGraphic, pickerService: IPickerService, point: IPointLike, drawContext: {
47
- in3dInterceptor?: boolean;
48
- }, params?: {
49
- parentMatrix: IMatrix;
50
- }) => boolean | PickResult | null;
51
43
  }
52
44
  export interface IBoundsPicker {
53
45
  type: string;
@@ -1 +1 @@
1
- {"version":3,"sources":["../src/interface/picker.ts"],"names":[],"mappings":"","file":"picker.js","sourcesContent":["import type { IBounds, IMatrix, IPoint, IPointLike } from '@visactor/vutils';\nimport type { IGraphic } from './graphic';\nimport type { IContext2d } from './context';\nimport type { EnvType, IGlobal } from './global';\nimport type { IGroup } from './graphic/group';\nimport type { IDrawContribution } from './render';\n\nexport type PickResult = {\n graphic: IGraphic | null;\n group: IGroup | null;\n params?: {\n shadowTarget?: IGraphic;\n };\n};\n\nexport interface IGraphicPicker {\n type: string;\n numberType: number;\n\n contains: (graphic: IGraphic, point: IPointLike, params?: IPickParams) => boolean;\n}\n\nexport interface IPickParams {\n group?: boolean;\n graphic?: boolean;\n bounds?: IBounds;\n pickContext?: IContext2d;\n pickerService?: IPickerService;\n // 内部设置\n in3dInterceptor?: boolean;\n hack_pieFace?: string;\n}\n\nexport interface IPickerService {\n type: string;\n\n pickContext?: IContext2d;\n pickerMap: Map<number, IGraphicPicker>;\n configure: (global: IGlobal, env: EnvType) => void;\n pick: (group: IGraphic[], point: IPoint, params?: IPickParams) => PickResult;\n pickGroup: (group: IGroup, point: IPointLike, parentMatrix: IMatrix, params: IPickParams) => PickResult;\n pickItem: (\n graphic: IGraphic,\n point: IPointLike,\n parentMatrix: IMatrix | null,\n params?: IPickParams\n ) => IGraphic | null;\n containsPoint: (graphic: IGraphic, point: IPointLike, params?: IPickParams) => boolean;\n drawContribution?: IDrawContribution;\n}\n\nexport interface IPickItemInterceptorContribution {\n order: number;\n // null代表没匹配到,boolean代表是否pick中\n beforePickItem?: (\n graphic: IGraphic,\n pickerService: IPickerService,\n point: IPointLike,\n drawContext: {\n in3dInterceptor?: boolean;\n },\n params?: {\n parentMatrix: IMatrix;\n }\n ) => boolean | PickResult | null;\n\n afterPickItem?: (\n graphic: IGraphic,\n pickerService: IPickerService,\n point: IPointLike,\n drawContext: {\n in3dInterceptor?: boolean;\n },\n params?: {\n parentMatrix: IMatrix;\n }\n ) => boolean | PickResult | null;\n // afterPickItem?: (\n // graphic: IGraphic,\n // pickerService: IPickerService,\n // ) => boolean;\n}\n\nexport interface IBoundsPicker {\n type: string;\n numberType?: number;\n\n contains: (graphic: IGraphic, point: IPointLike, params?: IPickParams) => boolean;\n}\n"]}
1
+ {"version":3,"sources":["../src/interface/picker.ts"],"names":[],"mappings":"","file":"picker.js","sourcesContent":["import type { IBounds, IMatrix, IPoint, IPointLike } from '@visactor/vutils';\nimport type { IGraphic } from './graphic';\nimport type { IContext2d } from './context';\nimport type { EnvType, IGlobal } from './global';\nimport type { IGroup } from './graphic/group';\nimport type { IDrawContribution } from './render';\n\nexport type PickResult = {\n graphic: IGraphic | null;\n group: IGroup | null;\n};\n\nexport interface IGraphicPicker {\n type: string;\n numberType: number;\n\n contains: (graphic: IGraphic, point: IPointLike, params?: IPickParams) => boolean;\n}\n\nexport interface IPickParams {\n group?: boolean;\n graphic?: boolean;\n bounds?: IBounds;\n pickContext?: IContext2d;\n pickerService?: IPickerService;\n // 内部设置\n in3dInterceptor?: boolean;\n hack_pieFace?: string;\n}\n\nexport interface IPickerService {\n type: string;\n\n pickContext?: IContext2d;\n pickerMap: Map<number, IGraphicPicker>;\n configure: (global: IGlobal, env: EnvType) => void;\n pick: (group: IGraphic[], point: IPoint, params?: IPickParams) => PickResult;\n pickGroup: (group: IGroup, point: IPointLike, parentMatrix: IMatrix, params: IPickParams) => PickResult;\n pickItem: (graphic: IGraphic, point: IPointLike, params?: IPickParams) => IGraphic | null;\n containsPoint: (graphic: IGraphic, point: IPointLike, params?: IPickParams) => boolean;\n drawContribution?: IDrawContribution;\n}\n\nexport interface IPickItemInterceptorContribution {\n order: number;\n // null代表没匹配到,boolean代表是否pick中\n beforePickItem?: (\n graphic: IGraphic,\n pickerService: IPickerService,\n point: IPointLike,\n drawContext: {\n in3dInterceptor?: boolean;\n },\n params?: {\n parentMatrix: IMatrix;\n }\n ) => boolean | PickResult | null;\n // afterPickItem?: (\n // graphic: IGraphic,\n // pickerService: IPickerService,\n // ) => boolean;\n}\n\nexport interface IBoundsPicker {\n type: string;\n numberType?: number;\n\n contains: (graphic: IGraphic, point: IPointLike, params?: IPickParams) => boolean;\n}\n"]}
@@ -57,7 +57,6 @@ export interface IDrawContribution {
57
57
  defaultRenderMap: Map<number, IGraphicRender>;
58
58
  styleRenderMap: Map<string, Map<number, IGraphicRender>>;
59
59
  draw: (renderService: IRenderService, drawParams: IDrawContext) => MaybePromise<void>;
60
- afterDraw?: (renderService: IRenderService, drawParams: IDrawContext) => MaybePromise<void>;
61
60
  getRenderContribution: (graphic: IGraphic) => IGraphicRender | null;
62
61
  renderGroup: (group: IGroup, drawContext: IDrawContext, skipSort?: boolean) => void;
63
62
  renderItem: (graphic: IGraphic, drawContext: IDrawContext, params?: IGraphicRenderDrawParams) => void;
@@ -1 +1 @@
1
- {"version":3,"sources":["../src/interface/render.ts"],"names":[],"mappings":"","file":"render.js","sourcesContent":["import type { IAABBBounds, IBounds } from '@visactor/vutils';\nimport type { IColor } from './color';\nimport type { IContext2d } from './context';\nimport type { IGraphic, IGraphicAttribute } from './graphic';\nimport type { IMarkAttribute, IThemeAttribute } from './graphic/creator';\nimport type { IFullThemeSpec } from './graphic/theme';\nimport type { ILayer } from './layer';\nimport type { IStage } from './stage';\nimport type { IGroup } from './graphic/group';\nimport type { MaybePromise } from './common';\nimport type { ISyncHook } from './sync-hook';\n\n// 用于绘制的参数,提供context\n// TODO: 考虑是否可以隐藏上下文类型\nexport interface IRenderServiceDrawParams {\n context?: IContext2d;\n\n // 绘制的区域以及是否需要清屏\n clear?: string | IColor;\n width: number;\n height: number;\n x: number;\n y: number;\n stage: IStage;\n layer: ILayer;\n renderService: IRenderService;\n updateBounds: boolean;\n renderStyle?: string;\n}\n\nexport interface IRenderService {\n dirtyBounds: IBounds;\n renderTreeRoots: IGraphic[]; // 此次render的数组\n renderLists: IGraphic[];\n drawParams: IRenderServiceDrawParams;\n\n prepare: (updateBounds: boolean) => void;\n prepareRenderList: () => void;\n beforeDraw: (params: IRenderServiceDrawParams) => void;\n draw: (params: IRenderServiceDrawParams) => void;\n afterDraw: (params: IRenderServiceDrawParams) => void;\n render: (groups: IGroup[], params: IRenderServiceDrawParams) => MaybePromise<void>;\n}\n\nexport interface IDrawContext extends IRenderServiceDrawParams {\n startAtId?: number;\n break?: boolean;\n restartIncremental?: boolean;\n // multi图元开始的位置\n multiGraphicOptions?: {\n startAtIdx: number;\n length: number;\n };\n in3dInterceptor?: boolean;\n drawContribution?: IDrawContribution;\n // hack内容\n hack_pieFace?: 'inside' | 'bottom' | 'top' | 'outside';\n}\n\nexport interface IDrawContribution {\n hooks?: {\n completeDraw: ISyncHook<[]>;\n };\n dirtyBounds?: IAABBBounds;\n backupDirtyBounds?: IAABBBounds;\n rendering?: boolean;\n currentRenderMap: Map<number, IGraphicRender>;\n defaultRenderMap: Map<number, IGraphicRender>;\n styleRenderMap: Map<string, Map<number, IGraphicRender>>;\n draw: (renderService: IRenderService, drawParams: IDrawContext) => MaybePromise<void>;\n afterDraw?: (renderService: IRenderService, drawParams: IDrawContext) => MaybePromise<void>;\n getRenderContribution: (graphic: IGraphic) => IGraphicRender | null;\n renderGroup: (group: IGroup, drawContext: IDrawContext, skipSort?: boolean) => void;\n renderItem: (graphic: IGraphic, drawContext: IDrawContext, params?: IGraphicRenderDrawParams) => void;\n}\n\nexport interface IGraphicRenderDrawParams {\n beforeDrawCb?: () => void;\n afterDrawCb?: () => void;\n drawingCb?: () => void;\n skipDraw?: boolean;\n theme?: IFullThemeSpec;\n}\n\nexport interface IGraphicRender {\n type: string; // 图元类型\n numberType: number;\n style?: string;\n z?: number;\n draw: (\n graphic: IGraphic,\n renderService: IRenderService,\n drawContext: IDrawContext,\n params?: IGraphicRenderDrawParams\n ) => void;\n drawShape?: (\n graphic: IGraphic,\n ctx: IContext2d,\n x: number,\n y: number,\n drawContext: IDrawContext,\n params?: IGraphicRenderDrawParams,\n fillCb?: (\n ctx: IContext2d,\n markAttribute: Partial<IMarkAttribute & IGraphicAttribute>,\n themeAttribute: IThemeAttribute\n ) => boolean,\n strokeCb?: (\n ctx: IContext2d,\n markAttribute: Partial<IMarkAttribute & IGraphicAttribute>,\n themeAttribute: IThemeAttribute\n ) => boolean\n ) => void;\n}\n\nexport interface IBeforeRenderConstribution {\n apply: (renderService: IRenderService) => MaybePromise<void>;\n}\n\nexport interface IRenderSelector {\n selector: (graphic: IGraphic) => IGraphicRender | null;\n}\n\nexport interface IDrawItemInterceptorContribution {\n order: number;\n beforeDrawItem?: (\n graphic: IGraphic,\n renderService: IRenderService,\n drawContext: IDrawContext,\n drawContribution: IDrawContribution,\n params?: IGraphicRenderDrawParams\n ) => boolean;\n afterDrawItem?: (\n graphic: IGraphic,\n renderService: IRenderService,\n drawContext: IDrawContext,\n drawContribution: IDrawContribution,\n params?: IGraphicRenderDrawParams\n ) => boolean;\n}\n"]}
1
+ {"version":3,"sources":["../src/interface/render.ts"],"names":[],"mappings":"","file":"render.js","sourcesContent":["import type { IAABBBounds, IBounds } from '@visactor/vutils';\nimport type { IColor } from './color';\nimport type { IContext2d } from './context';\nimport type { IGraphic, IGraphicAttribute } from './graphic';\nimport type { IMarkAttribute, IThemeAttribute } from './graphic/creator';\nimport type { IFullThemeSpec } from './graphic/theme';\nimport type { ILayer } from './layer';\nimport type { IStage } from './stage';\nimport type { IGroup } from './graphic/group';\nimport type { MaybePromise } from './common';\nimport type { ISyncHook } from './sync-hook';\n\n// 用于绘制的参数,提供context\n// TODO: 考虑是否可以隐藏上下文类型\nexport interface IRenderServiceDrawParams {\n context?: IContext2d;\n\n // 绘制的区域以及是否需要清屏\n clear?: string | IColor;\n width: number;\n height: number;\n x: number;\n y: number;\n stage: IStage;\n layer: ILayer;\n renderService: IRenderService;\n updateBounds: boolean;\n renderStyle?: string;\n}\n\nexport interface IRenderService {\n dirtyBounds: IBounds;\n renderTreeRoots: IGraphic[]; // 此次render的数组\n renderLists: IGraphic[];\n drawParams: IRenderServiceDrawParams;\n\n prepare: (updateBounds: boolean) => void;\n prepareRenderList: () => void;\n beforeDraw: (params: IRenderServiceDrawParams) => void;\n draw: (params: IRenderServiceDrawParams) => void;\n afterDraw: (params: IRenderServiceDrawParams) => void;\n render: (groups: IGroup[], params: IRenderServiceDrawParams) => MaybePromise<void>;\n}\n\nexport interface IDrawContext extends IRenderServiceDrawParams {\n startAtId?: number;\n break?: boolean;\n restartIncremental?: boolean;\n // multi图元开始的位置\n multiGraphicOptions?: {\n startAtIdx: number;\n length: number;\n };\n in3dInterceptor?: boolean;\n drawContribution?: IDrawContribution;\n // hack内容\n hack_pieFace?: 'inside' | 'bottom' | 'top' | 'outside';\n}\n\nexport interface IDrawContribution {\n hooks?: {\n completeDraw: ISyncHook<[]>;\n };\n dirtyBounds?: IAABBBounds;\n backupDirtyBounds?: IAABBBounds;\n rendering?: boolean;\n currentRenderMap: Map<number, IGraphicRender>;\n defaultRenderMap: Map<number, IGraphicRender>;\n styleRenderMap: Map<string, Map<number, IGraphicRender>>;\n draw: (renderService: IRenderService, drawParams: IDrawContext) => MaybePromise<void>;\n getRenderContribution: (graphic: IGraphic) => IGraphicRender | null;\n renderGroup: (group: IGroup, drawContext: IDrawContext, skipSort?: boolean) => void;\n renderItem: (graphic: IGraphic, drawContext: IDrawContext, params?: IGraphicRenderDrawParams) => void;\n}\n\nexport interface IGraphicRenderDrawParams {\n beforeDrawCb?: () => void;\n afterDrawCb?: () => void;\n drawingCb?: () => void;\n skipDraw?: boolean;\n theme?: IFullThemeSpec;\n}\n\nexport interface IGraphicRender {\n type: string; // 图元类型\n numberType: number;\n style?: string;\n z?: number;\n draw: (\n graphic: IGraphic,\n renderService: IRenderService,\n drawContext: IDrawContext,\n params?: IGraphicRenderDrawParams\n ) => void;\n drawShape?: (\n graphic: IGraphic,\n ctx: IContext2d,\n x: number,\n y: number,\n drawContext: IDrawContext,\n params?: IGraphicRenderDrawParams,\n fillCb?: (\n ctx: IContext2d,\n markAttribute: Partial<IMarkAttribute & IGraphicAttribute>,\n themeAttribute: IThemeAttribute\n ) => boolean,\n strokeCb?: (\n ctx: IContext2d,\n markAttribute: Partial<IMarkAttribute & IGraphicAttribute>,\n themeAttribute: IThemeAttribute\n ) => boolean\n ) => void;\n}\n\nexport interface IBeforeRenderConstribution {\n apply: (renderService: IRenderService) => MaybePromise<void>;\n}\n\nexport interface IRenderSelector {\n selector: (graphic: IGraphic) => IGraphicRender | null;\n}\n\nexport interface IDrawItemInterceptorContribution {\n order: number;\n beforeDrawItem?: (\n graphic: IGraphic,\n renderService: IRenderService,\n drawContext: IDrawContext,\n drawContribution: IDrawContribution,\n params?: IGraphicRenderDrawParams\n ) => boolean;\n afterDrawItem?: (\n graphic: IGraphic,\n renderService: IRenderService,\n drawContext: IDrawContext,\n drawContribution: IDrawContribution,\n params?: IGraphicRenderDrawParams\n ) => boolean;\n}\n"]}
@@ -3,13 +3,13 @@ import type { ILayer } from './layer';
3
3
  import type { IGraphic } from './graphic';
4
4
  import type { IGroup } from './graphic/group';
5
5
  import type { IColor } from './color';
6
- import type { IAABBBounds, IBounds, IBoundsLike, IMatrix } from '@visactor/vutils';
6
+ import type { IBounds, IBoundsLike, IMatrix } from '@visactor/vutils';
7
7
  import type { ICamera } from './camera';
8
8
  import type { vec3 } from './matrix';
9
9
  import type { IDirectionLight } from './light';
10
10
  import type { ISyncHook } from './sync-hook';
11
11
  import type { IDrawContext, IRenderService } from './render';
12
- import type { ITicker, ITimeline } from './animate';
12
+ import type { ITicker } from './animate';
13
13
  import type { IPickerService } from './picker';
14
14
  import type { IPluginService } from './plugin';
15
15
  import type { IWindow } from './window';
@@ -29,18 +29,13 @@ export interface IStageParams {
29
29
  enableLayout: boolean;
30
30
  disableDirtyBounds: boolean;
31
31
  interactiveLayer: boolean;
32
- enableHtmlAttribute: string | boolean | HTMLElement;
33
32
  poptip: boolean;
34
33
  beforeRender: (stage: IStage) => void;
35
34
  afterRender: (stage: IStage) => void;
36
35
  renderStyle?: string;
37
36
  ticker?: ITicker;
38
37
  pluginList?: string[];
39
- optimize?: IOptimizeType;
40
38
  }
41
- export type IOptimizeType = {
42
- skipRenderWithOutRange?: boolean;
43
- };
44
39
  export interface IOption3D {
45
40
  enableView3dTransform?: boolean;
46
41
  alpha?: number;
@@ -68,7 +63,6 @@ export interface IStage extends INode {
68
63
  parent: IStage | null;
69
64
  x: number;
70
65
  y: number;
71
- params: Partial<IStageParams>;
72
66
  window: IWindow;
73
67
  width: number;
74
68
  height: number;
@@ -99,7 +93,6 @@ export interface IStage extends INode {
99
93
  getLayer: (name: string) => ILayer;
100
94
  sortLayer: (cb: (layer1: ILayer, layer2: ILayer) => number) => void;
101
95
  removeLayer: (layerId: number) => ILayer | false;
102
- getTimeline: () => ITimeline;
103
96
  render: (layers?: ILayer[], params?: Partial<IDrawContext>) => void;
104
97
  renderNextFrame: (layers?: ILayer[]) => void;
105
98
  tryInitInteractiveLayer: () => void;
@@ -124,7 +117,7 @@ export interface IStage extends INode {
124
117
  height: number;
125
118
  }) => void;
126
119
  renderToNewWindow: (fullImage?: boolean) => IWindow;
127
- toCanvas: (fullImage?: boolean, viewBox?: IAABBBounds) => HTMLCanvasElement | null;
120
+ toCanvas: (fullImage?: boolean) => HTMLCanvasElement | null;
128
121
  setBeforeRender: (cb: (stage: IStage) => void) => void;
129
122
  setAfterRender: (cb: (stage: IStage) => void) => void;
130
123
  afterNextRender: (cb: (stage: IStage) => void) => void;
@@ -1 +1 @@
1
- {"version":3,"sources":["../src/interface/stage.ts"],"names":[],"mappings":"","file":"stage.js","sourcesContent":["import type { INode } from './node-tree';\nimport type { ILayer } from './layer';\nimport type { IGraphic } from './graphic';\nimport type { IGroup } from './graphic/group';\nimport type { IColor } from './color';\nimport type { IAABBBounds, IBounds, IBoundsLike, IMatrix, IPointLike } from '@visactor/vutils';\nimport type { ICamera } from './camera';\nimport type { vec3 } from './matrix';\nimport type { IDirectionLight } from './light';\nimport type { ISyncHook } from './sync-hook';\nimport type { IDrawContext, IRenderService } from './render';\nimport type { ITicker, ITimeline } from './animate';\nimport type { IPickerService } from './picker';\nimport type { IPluginService } from './plugin';\nimport type { IWindow } from './window';\nimport type { ILayerService } from './core';\n\nexport type IExportType = 'canvas' | 'imageData';\n\nexport interface IStageParams {\n // x: number;\n // y: number;\n // // 视口的宽高\n // viewWidth: number;\n // viewHeight: number;\n\n // 视口的宽高\n viewBox: IBoundsLike;\n // 总的宽高\n width: number;\n height: number;\n dpr: number;\n // stage的背景\n background: string | IColor;\n // 外部的canvas\n canvas: string | HTMLCanvasElement;\n // canvas的container容器,如果不传入canvas,那就会在容器中创建canvas\n container: string | HTMLElement;\n // 是否是受控制的canvas,如果不是的话,不会进行resize等操作,也不会修改canvas的样式\n canvasControled: boolean;\n title: string;\n // 是否开启自动渲染\n autoRender: boolean;\n // 是否开启布局支持\n enableLayout: boolean;\n // 是否关闭脏矩形检测\n disableDirtyBounds: boolean;\n // 是否支持interactiveLayer,默认为true\n interactiveLayer: boolean;\n // 是否支持HTML属性\n enableHtmlAttribute: string | boolean | HTMLElement;\n poptip: boolean;\n // 绘制之前的钩子函数\n beforeRender: (stage: IStage) => void;\n // 绘制之后的钩子函数\n afterRender: (stage: IStage) => void;\n renderStyle?: string;\n ticker?: ITicker;\n pluginList?: string[];\n // 优化配置\n optimize?: IOptimizeType;\n}\n\nexport type IOptimizeType = {\n // 视口不在可视区,跳过渲染,默认为true\n skipRenderWithOutRange?: boolean;\n};\n\nexport interface IOption3D {\n enableView3dTransform?: boolean; // 是否开启view3d自动旋转\n alpha?: number; // x轴的转角\n beta?: number; // y轴的转角\n gama?: number; // z轴的转角\n center?: { x?: number; y?: number; z?: number; dx?: number; dy?: number; dz?: number }; // 中心位置\n fieldRatio?: number; // 透视的视域缩放比例\n fieldDepth?: number;\n light?: {\n dir?: vec3;\n color?: string;\n ambient?: number;\n };\n // 配置相机后,alpha、beta、gamma配置会失效\n camera?: any; // 相机配置\n}\n\n// TODO 命名方式\nexport interface IStage extends INode {\n stage?: IStage;\n parent: IStage | null;\n // rootNode: IStage;\n x: number;\n y: number;\n\n params: Partial<IStageParams>;\n\n window: IWindow;\n\n width: number;\n height: number;\n viewWidth: number;\n viewHeight: number;\n defaultLayer: ILayer;\n dirtyBounds: IBounds | null;\n\n autoRender: boolean;\n renderCount: number;\n\n hooks: {\n beforeRender: ISyncHook<[IStage]>;\n afterRender: ISyncHook<[IStage]>;\n };\n\n option3d?: IOption3D;\n\n set3dOptions: (options: IOption3D) => void;\n light?: IDirectionLight;\n camera?: ICamera;\n\n dpr: number;\n\n viewBox: IBoundsLike;\n background: string | IColor;\n ticker: ITicker;\n increaseAutoRender: boolean;\n readonly renderService: IRenderService;\n readonly pickerService: IPickerService;\n readonly pluginService: IPluginService;\n readonly layerService: ILayerService;\n // 如果传入CanvasId,如果存在相同Id,说明这两个图层使用相同的Canvas绘制\n // 但需要注意的是依然是两个图层(用于解决Table嵌入ChartSpace不影响Table的绘制)\n createLayer: (canvasId?: string) => ILayer;\n getLayer: (name: string) => ILayer;\n sortLayer: (cb: (layer1: ILayer, layer2: ILayer) => number) => void;\n removeLayer: (layerId: number) => ILayer | false;\n\n getTimeline: () => ITimeline;\n\n render: (layers?: ILayer[], params?: Partial<IDrawContext>) => void;\n renderNextFrame: (layers?: ILayer[]) => void;\n tryInitInteractiveLayer: () => void;\n\n // 画布操作\n resize: (w: number, h: number, rerender?: boolean) => void;\n resizeWindow: (w: number, h: number, rerender?: boolean) => void;\n resizeView: (w: number, h: number, rerender?: boolean) => void;\n setViewBox:\n | ((viewBox: IBoundsLike, rerender: boolean) => void)\n | ((x: number, y: number, w: number, h: number, rerender: boolean) => void)\n | ((x: number | IBoundsLike, y: number | boolean, w?: number, h?: number, rerender?: boolean) => void);\n setDpr: (dpr: number, rerender?: boolean) => void;\n setOrigin: (x: number, y: number) => void;\n export: (type: IExportType) => HTMLCanvasElement | ImageData;\n pick: (x: number, y: number) => { graphic: IGraphic | null; group: IGroup | null } | false;\n\n // 动画相关\n startAnimate: (t: number) => void;\n setToFrame: (t: number) => void;\n dirty: (b: IBounds, matrix?: IMatrix) => void;\n // 考虑操作回放\n\n renderTo: (window: IWindow, params: { x: number; y: number; width: number; height: number }) => void;\n\n renderToNewWindow: (fullImage?: boolean) => IWindow;\n\n toCanvas: (fullImage?: boolean, viewBox?: IAABBBounds) => HTMLCanvasElement | null;\n\n setBeforeRender: (cb: (stage: IStage) => void) => void;\n\n setAfterRender: (cb: (stage: IStage) => void) => void;\n\n afterNextRender: (cb: (stage: IStage) => void) => void;\n enableAutoRender: () => void;\n disableAutoRender: () => void;\n enableIncrementalAutoRender: () => void;\n disableIncrementalAutoRender: () => void;\n enableDirtyBounds: () => void;\n disableDirtyBounds: () => void;\n enableView3dTransform: () => void;\n disableView3dTranform: () => void;\n clearViewBox: (color?: string) => void;\n release: () => void;\n setStage: (stage?: IStage) => void;\n\n setCursor: (mode?: string) => void;\n}\n\nexport declare function combineStage(srages: IStage[], params: { canvas: string | HTMLCanvasElement }): IStage;\n"]}
1
+ {"version":3,"sources":["../src/interface/stage.ts"],"names":[],"mappings":"","file":"stage.js","sourcesContent":["import type { INode } from './node-tree';\nimport type { ILayer } from './layer';\nimport type { IGraphic } from './graphic';\nimport type { IGroup } from './graphic/group';\nimport type { IColor } from './color';\nimport type { IBounds, IBoundsLike, IMatrix, IPointLike } from '@visactor/vutils';\nimport type { ICamera } from './camera';\nimport type { vec3 } from './matrix';\nimport type { IDirectionLight } from './light';\nimport type { ISyncHook } from './sync-hook';\nimport type { IDrawContext, IRenderService } from './render';\nimport type { ITicker } from './animate';\nimport type { IPickerService } from './picker';\nimport type { IPluginService } from './plugin';\nimport type { IWindow } from './window';\nimport type { ILayerService } from './core';\n\nexport type IExportType = 'canvas' | 'imageData';\n\nexport interface IStageParams {\n // x: number;\n // y: number;\n // // 视口的宽高\n // viewWidth: number;\n // viewHeight: number;\n\n // 视口的宽高\n viewBox: IBoundsLike;\n // 总的宽高\n width: number;\n height: number;\n dpr: number;\n // stage的背景\n background: string | IColor;\n // 外部的canvas\n canvas: string | HTMLCanvasElement;\n // canvas的container容器,如果不传入canvas,那就会在容器中创建canvas\n container: string | HTMLElement;\n // 是否是受控制的canvas,如果不是的话,不会进行resize等操作,也不会修改canvas的样式\n canvasControled: boolean;\n title: string;\n // 是否开启自动渲染\n autoRender: boolean;\n // 是否开启布局支持\n enableLayout: boolean;\n // 是否关闭脏矩形检测\n disableDirtyBounds: boolean;\n // 是否支持interactiveLayer,默认为true\n interactiveLayer: boolean;\n poptip: boolean;\n // 绘制之前的钩子函数\n beforeRender: (stage: IStage) => void;\n // 绘制之后的钩子函数\n afterRender: (stage: IStage) => void;\n renderStyle?: string;\n ticker?: ITicker;\n pluginList?: string[];\n}\n\nexport interface IOption3D {\n enableView3dTransform?: boolean; // 是否开启view3d自动旋转\n alpha?: number; // x轴的转角\n beta?: number; // y轴的转角\n gama?: number; // z轴的转角\n center?: { x?: number; y?: number; z?: number; dx?: number; dy?: number; dz?: number }; // 中心位置\n fieldRatio?: number; // 透视的视域缩放比例\n fieldDepth?: number;\n light?: {\n dir?: vec3;\n color?: string;\n ambient?: number;\n };\n // 配置相机后,alpha、beta、gamma配置会失效\n camera?: any; // 相机配置\n}\n\n// TODO 命名方式\nexport interface IStage extends INode {\n stage?: IStage;\n parent: IStage | null;\n // rootNode: IStage;\n x: number;\n y: number;\n\n window: IWindow;\n\n width: number;\n height: number;\n viewWidth: number;\n viewHeight: number;\n defaultLayer: ILayer;\n dirtyBounds: IBounds | null;\n\n autoRender: boolean;\n renderCount: number;\n\n hooks: {\n beforeRender: ISyncHook<[IStage]>;\n afterRender: ISyncHook<[IStage]>;\n };\n\n option3d?: IOption3D;\n\n set3dOptions: (options: IOption3D) => void;\n light?: IDirectionLight;\n camera?: ICamera;\n\n dpr: number;\n\n viewBox: IBoundsLike;\n background: string | IColor;\n ticker: ITicker;\n increaseAutoRender: boolean;\n readonly renderService: IRenderService;\n readonly pickerService: IPickerService;\n readonly pluginService: IPluginService;\n readonly layerService: ILayerService;\n // 如果传入CanvasId,如果存在相同Id,说明这两个图层使用相同的Canvas绘制\n // 但需要注意的是依然是两个图层(用于解决Table嵌入ChartSpace不影响Table的绘制)\n createLayer: (canvasId?: string) => ILayer;\n getLayer: (name: string) => ILayer;\n sortLayer: (cb: (layer1: ILayer, layer2: ILayer) => number) => void;\n removeLayer: (layerId: number) => ILayer | false;\n\n render: (layers?: ILayer[], params?: Partial<IDrawContext>) => void;\n renderNextFrame: (layers?: ILayer[]) => void;\n tryInitInteractiveLayer: () => void;\n\n // 画布操作\n resize: (w: number, h: number, rerender?: boolean) => void;\n resizeWindow: (w: number, h: number, rerender?: boolean) => void;\n resizeView: (w: number, h: number, rerender?: boolean) => void;\n setViewBox:\n | ((viewBox: IBoundsLike, rerender: boolean) => void)\n | ((x: number, y: number, w: number, h: number, rerender: boolean) => void)\n | ((x: number | IBoundsLike, y: number | boolean, w?: number, h?: number, rerender?: boolean) => void);\n setDpr: (dpr: number, rerender?: boolean) => void;\n setOrigin: (x: number, y: number) => void;\n export: (type: IExportType) => HTMLCanvasElement | ImageData;\n pick: (x: number, y: number) => { graphic: IGraphic | null; group: IGroup | null } | false;\n\n // 动画相关\n startAnimate: (t: number) => void;\n setToFrame: (t: number) => void;\n dirty: (b: IBounds, matrix?: IMatrix) => void;\n // 考虑操作回放\n\n renderTo: (window: IWindow, params: { x: number; y: number; width: number; height: number }) => void;\n\n renderToNewWindow: (fullImage?: boolean) => IWindow;\n\n toCanvas: (fullImage?: boolean) => HTMLCanvasElement | null;\n\n setBeforeRender: (cb: (stage: IStage) => void) => void;\n\n setAfterRender: (cb: (stage: IStage) => void) => void;\n\n afterNextRender: (cb: (stage: IStage) => void) => void;\n enableAutoRender: () => void;\n disableAutoRender: () => void;\n enableIncrementalAutoRender: () => void;\n disableIncrementalAutoRender: () => void;\n enableDirtyBounds: () => void;\n disableDirtyBounds: () => void;\n enableView3dTransform: () => void;\n disableView3dTranform: () => void;\n clearViewBox: (color?: string) => void;\n release: () => void;\n setStage: (stage?: IStage) => void;\n\n setCursor: (mode?: string) => void;\n}\n\nexport declare function combineStage(srages: IStage[], params: { canvas: string | HTMLCanvasElement }): IStage;\n"]}
@@ -43,12 +43,6 @@ export interface IWindow extends Releaseable, Omit<IEventElement, 'on' | 'off' |
43
43
  getImageBuffer: (type?: string) => any;
44
44
  clearViewBox: (viewBox: IBoundsLike, color?: string) => void;
45
45
  getBoundingClientRect: () => IDomRectLike;
46
- isVisible: (bbox?: IBoundsLike) => boolean;
47
- onVisibleChange: (cb: (currentVisible: boolean) => void) => void;
48
- getTopLeft: (baseWindow?: boolean) => {
49
- top: number;
50
- left: number;
51
- };
52
46
  }
53
47
  export interface IWindowHandlerContribution extends IContribution<IWindow>, Omit<IEventElement, 'on' | 'off' | 'once' | 'emit' | 'removeAllListeners'> {
54
48
  container?: any;
@@ -75,10 +69,4 @@ export interface IWindowHandlerContribution extends IContribution<IWindow>, Omit
75
69
  setStyle: (s: CSSStyleDeclaration | Record<string, any>) => void;
76
70
  getBoundingClientRect: () => IDomRectLike;
77
71
  clearViewBox: (vb: IBoundsLike, color?: string) => void;
78
- isVisible: (bbox?: IBoundsLike) => boolean;
79
- onVisibleChange: (cb: (currentVisible: boolean) => void) => void;
80
- getTopLeft: (baseWindow?: boolean) => {
81
- top: number;
82
- left: number;
83
- };
84
72
  }
@@ -1 +1 @@
1
- {"version":3,"sources":["../src/interface/window.ts"],"names":[],"mappings":"","file":"window.js","sourcesContent":["// window为内部对象,属性均为stage传入\n\nimport type { IBoundsLike } from '@visactor/vutils';\nimport type { ICanvas } from './canvas';\nimport type { IContext2d } from './context';\nimport type { IDomRectLike, IEventElement, Releaseable } from './common';\nimport type { ISyncHook } from './sync-hook';\nimport type { IContribution } from './contribution';\nimport type { IGlobal } from './global';\n\n// TODO: 参数考虑动态注入,比如CreateWindow是native的专用接口\nexport interface IWindowParams {\n canvas?: string | HTMLCanvasElement;\n offscreen?: boolean;\n width?: number;\n height?: number;\n x?: number;\n y?: number;\n dpr: number;\n container?: string | HTMLElement;\n canvasControled: boolean;\n title: string;\n CreateWindow?: (w: number, h: number, title: string) => void;\n}\n\nexport interface IWindow\n extends Releaseable,\n Omit<IEventElement, 'on' | 'off' | 'once' | 'emit' | 'removeAllListeners'> {\n hooks: {\n onChange: ISyncHook<[number, number, number, number]>;\n };\n // 窗口的大小\n width: number;\n height: number;\n // // 窗口的位置\n // x: number;\n // y: number;\n // 窗口操作配置\n resizable: boolean;\n minHeight: number;\n minWidth: number;\n maxHeight: number;\n maxWidth: number;\n // 窗口配置\n title: string;\n dpr: number;\n style: CSSStyleDeclaration | Record<string, any>;\n\n create: (options: IWindowParams) => void;\n setWindowHandler: (handler: IWindowHandlerContribution) => void;\n setDpr: (dpr: number) => void;\n resize: (w: number, h: number) => void;\n configure: () => void;\n\n // 获取上下文和canvas,可以是2d也可以是GL\n getContext: () => IContext2d;\n getNativeHandler: () => ICanvas;\n getContainer: () => HTMLElement | any;\n getImageBuffer: (type?: string) => any;\n\n clearViewBox: (viewBox: IBoundsLike, color?: string) => void;\n\n getBoundingClientRect: () => IDomRectLike;\n\n isVisible: (bbox?: IBoundsLike) => boolean;\n\n onVisibleChange: (cb: (currentVisible: boolean) => void) => void;\n\n getTopLeft: (baseWindow?: boolean) => { top: number; left: number };\n}\n\nexport interface IWindowHandlerContribution\n extends IContribution<IWindow>,\n Omit<IEventElement, 'on' | 'off' | 'once' | 'emit' | 'removeAllListeners'> {\n container?: any;\n\n configure: (window: IWindow, global: IGlobal) => void;\n createWindow: (params: IWindowParams) => void;\n releaseWindow: () => void;\n resizeWindow: (width: number, height: number) => void;\n setDpr: (dpr: number) => void;\n getDpr: () => number;\n getWH: () => { width: number; height: number };\n getXY: () => { x: number; y: number };\n getTitle: () => string;\n\n // 获取上下文和canvas,可以是2d也可以是GL\n getContext: () => IContext2d;\n getNativeHandler: () => ICanvas;\n getImageBuffer?: (type?: string) => any;\n release: (...params: any) => void;\n\n getStyle: () => CSSStyleDeclaration | Record<string, any>;\n setStyle: (s: CSSStyleDeclaration | Record<string, any>) => void;\n\n getBoundingClientRect: () => IDomRectLike;\n clearViewBox: (vb: IBoundsLike, color?: string) => void;\n isVisible: (bbox?: IBoundsLike) => boolean;\n\n onVisibleChange: (cb: (currentVisible: boolean) => void) => void;\n getTopLeft: (baseWindow?: boolean) => { top: number; left: number };\n}\n"]}
1
+ {"version":3,"sources":["../src/interface/window.ts"],"names":[],"mappings":"","file":"window.js","sourcesContent":["// window为内部对象,属性均为stage传入\n\nimport type { IBoundsLike } from '@visactor/vutils';\nimport type { ICanvas } from './canvas';\nimport type { IContext2d } from './context';\nimport type { IDomRectLike, IEventElement, Releaseable } from './common';\nimport type { ISyncHook } from './sync-hook';\nimport type { IContribution } from './contribution';\nimport type { IGlobal } from './global';\n\n// TODO: 参数考虑动态注入,比如CreateWindow是native的专用接口\nexport interface IWindowParams {\n canvas?: string | HTMLCanvasElement;\n offscreen?: boolean;\n width?: number;\n height?: number;\n x?: number;\n y?: number;\n dpr: number;\n container?: string | HTMLElement;\n canvasControled: boolean;\n title: string;\n CreateWindow?: (w: number, h: number, title: string) => void;\n}\n\nexport interface IWindow\n extends Releaseable,\n Omit<IEventElement, 'on' | 'off' | 'once' | 'emit' | 'removeAllListeners'> {\n hooks: {\n onChange: ISyncHook<[number, number, number, number]>;\n };\n // 窗口的大小\n width: number;\n height: number;\n // // 窗口的位置\n // x: number;\n // y: number;\n // 窗口操作配置\n resizable: boolean;\n minHeight: number;\n minWidth: number;\n maxHeight: number;\n maxWidth: number;\n // 窗口配置\n title: string;\n dpr: number;\n style: CSSStyleDeclaration | Record<string, any>;\n\n create: (options: IWindowParams) => void;\n setWindowHandler: (handler: IWindowHandlerContribution) => void;\n setDpr: (dpr: number) => void;\n resize: (w: number, h: number) => void;\n configure: () => void;\n\n // 获取上下文和canvas,可以是2d也可以是GL\n getContext: () => IContext2d;\n getNativeHandler: () => ICanvas;\n getContainer: () => HTMLElement | any;\n getImageBuffer: (type?: string) => any;\n\n clearViewBox: (viewBox: IBoundsLike, color?: string) => void;\n\n getBoundingClientRect: () => IDomRectLike;\n}\n\nexport interface IWindowHandlerContribution\n extends IContribution<IWindow>,\n Omit<IEventElement, 'on' | 'off' | 'once' | 'emit' | 'removeAllListeners'> {\n container?: any;\n\n configure: (window: IWindow, global: IGlobal) => void;\n createWindow: (params: IWindowParams) => void;\n releaseWindow: () => void;\n resizeWindow: (width: number, height: number) => void;\n setDpr: (dpr: number) => void;\n getDpr: () => number;\n getWH: () => { width: number; height: number };\n getXY: () => { x: number; y: number };\n getTitle: () => string;\n\n // 获取上下文和canvas,可以是2d也可以是GL\n getContext: () => IContext2d;\n getNativeHandler: () => ICanvas;\n getImageBuffer?: (type?: string) => any;\n release: (...params: any) => void;\n\n getStyle: () => CSSStyleDeclaration | Record<string, any>;\n setStyle: (s: CSSStyleDeclaration | Record<string, any>) => void;\n\n getBoundingClientRect: () => IDomRectLike;\n clearViewBox: (vb: IBoundsLike, color?: string) => void;\n}\n"]}
@@ -1,4 +1,4 @@
1
- import type { IMatrix, IPointLike } from '@visactor/vutils';
1
+ import type { IPointLike } from '@visactor/vutils';
2
2
  import type { ICanvas, IContext2d, IGraphic, EnvType, IGlobal, IGraphicPicker, IPickerService, IDrawContribution, IContributionProvider, IPickItemInterceptorContribution, IPickParams } from '../interface';
3
3
  import { DefaultPickService } from './picker-service';
4
4
  export declare class DefaultCanvasPickerService extends DefaultPickService implements IPickerService {
@@ -24,5 +24,5 @@ export declare class DefaultCanvasPickerService extends DefaultPickService imple
24
24
  constructor(contributions: IContributionProvider<IGraphicPicker>, circlePicker: IGraphicPicker, rectPicker: IGraphicPicker, arcPicker: IGraphicPicker, areaPicker: IGraphicPicker, imagePicker: IGraphicPicker, linePicker: IGraphicPicker, pathPicker: IGraphicPicker, symbolPicker: IGraphicPicker, textPicker: IGraphicPicker, polygonPicker: IGraphicPicker, richtextPicker: IGraphicPicker, drawContribution: IDrawContribution, global: IGlobal, pickItemInterceptorContributions: IContributionProvider<IPickItemInterceptorContribution>);
25
25
  init(): void;
26
26
  configure(global: IGlobal, env: EnvType): void;
27
- pickItem(graphic: IGraphic, point: IPointLike, parentMatrix: IMatrix | null, params: IPickParams): IGraphic | null;
27
+ pickItem(graphic: IGraphic, point: IPointLike, params: IPickParams): IGraphic | null;
28
28
  }
@@ -47,31 +47,14 @@ let DefaultCanvasPickerService = class extends picker_service_1.DefaultPickServi
47
47
  };
48
48
  this.pickCanvas = new browser_1.BrowserCanvas(options), this.pickContext = this.pickCanvas.getContext("2d");
49
49
  }
50
- pickItem(graphic, point, parentMatrix, params) {
50
+ pickItem(graphic, point, params) {
51
51
  if (!1 === graphic.attribute.pickable) return null;
52
52
  if (this.InterceptorContributions.length) for (let i = 0; i < this.InterceptorContributions.length; i++) {
53
53
  const drawContribution = this.InterceptorContributions[i];
54
- if (drawContribution.beforePickItem) {
55
- const ret = drawContribution.beforePickItem(graphic, this, point, params, {
56
- parentMatrix: parentMatrix
57
- });
58
- if (ret) return !0 === ret ? graphic : ret.graphic;
59
- }
54
+ if (drawContribution.beforePickItem && drawContribution.beforePickItem(graphic, this, point, params)) return graphic;
60
55
  }
61
56
  const picker = this.pickerMap.get(graphic.numberType);
62
- if (!picker) return null;
63
- const data = picker.contains(graphic, point, params) ? graphic : null;
64
- if (data) return data;
65
- if (this.InterceptorContributions.length) for (let i = 0; i < this.InterceptorContributions.length; i++) {
66
- const drawContribution = this.InterceptorContributions[i];
67
- if (drawContribution.afterPickItem) {
68
- const ret = drawContribution.afterPickItem(graphic, this, point, params, {
69
- parentMatrix: parentMatrix
70
- });
71
- if (ret) return !0 === ret ? graphic : ret.graphic;
72
- }
73
- }
74
- return data;
57
+ return picker && picker.contains(graphic, point, params) ? graphic : null;
75
58
  }
76
59
  };
77
60