@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,15 +1,12 @@
1
- import type { ICanvasLike, EnvType, ICreateCanvasParams, IEnvContribution, CreateDOMParamsType } from '../../../interface';
1
+ import { ICanvasLike, EnvType, ICreateCanvasParams, IEnvContribution } from '../../../interface';
2
2
  import { BaseEnvContribution } from './base-contribution';
3
- import type { IBoundsLike, IPointLike } from '@visactor/vutils';
3
+ import { IPointLike } from '@visactor/vutils';
4
4
  export declare function createImageElement(src: string, isSvg?: boolean): Promise<HTMLImageElement>;
5
5
  export declare class BrowserEnvContribution extends BaseEnvContribution implements IEnvContribution {
6
6
  type: EnvType;
7
7
  supportEvent: boolean;
8
8
  constructor();
9
9
  mapToCanvasPoint(nativeEvent: PointerEvent | WheelEvent, domElement?: any): IPointLike;
10
- getNativeAABBBounds(_dom: any): IBoundsLike;
11
- removeDom(dom: HTMLElement): boolean;
12
- createDom(params: CreateDOMParamsType): HTMLElement | null;
13
10
  loadImage(url: string): Promise<{
14
11
  loadState: 'success' | 'fail';
15
12
  data: HTMLImageElement | ImageData | null;
@@ -33,10 +30,4 @@ export declare class BrowserEnvContribution extends BaseEnvContribution implemen
33
30
  getRootElement(): HTMLElement | null;
34
31
  getDocument(): Document | null;
35
32
  release(...params: any): void;
36
- getElementTop(element: HTMLElement, baseWindow?: boolean): number;
37
- getElementLeft(element: HTMLElement, baseWindow?: boolean): number;
38
- getElementTopLeft(element: HTMLElement, baseWindow?: boolean): {
39
- top: number;
40
- left: number;
41
- };
42
33
  }
@@ -14,30 +14,6 @@ Object.defineProperty(exports, "__esModule", {
14
14
 
15
15
  const inversify_1 = require("inversify"), generator_1 = require("../../../common/generator"), base_contribution_1 = require("./base-contribution"), vutils_1 = require("@visactor/vutils");
16
16
 
17
- class DynamicB {
18
- get x1() {
19
- return this.dom.getBoundingClientRect().left;
20
- }
21
- get x2() {
22
- return this.dom.getBoundingClientRect().right;
23
- }
24
- get y1() {
25
- return this.dom.getBoundingClientRect().top;
26
- }
27
- get y2() {
28
- return this.dom.getBoundingClientRect().bottom;
29
- }
30
- get width() {
31
- return this.dom.getBoundingClientRect().width;
32
- }
33
- get height() {
34
- return this.dom.getBoundingClientRect().height;
35
- }
36
- constructor(dom) {
37
- this.dom = dom;
38
- }
39
- }
40
-
41
17
  function createImageElement(src, isSvg = !1) {
42
18
  const img = document.createElement("img");
43
19
  if (img.crossOrigin = "anonymous", isSvg) {
@@ -85,29 +61,6 @@ let BrowserEnvContribution = class extends base_contribution_1.BaseEnvContributi
85
61
  y: nativeEvent.offsetY
86
62
  };
87
63
  }
88
- getNativeAABBBounds(_dom) {
89
- let dom = _dom;
90
- if ("string" == typeof _dom && (dom = (new DOMParser).parseFromString(_dom, "text/xml").firstChild),
91
- dom.getBoundingClientRect) {
92
- const b = dom.getBoundingClientRect();
93
- return new DynamicB(b);
94
- }
95
- return new vutils_1.AABBBounds;
96
- }
97
- removeDom(dom) {
98
- return dom.parentElement.removeChild(dom), !0;
99
- }
100
- createDom(params) {
101
- const {tagName: tagName = "div", width: width, height: height, style: style, parent: parent} = params, element = document.createElement(tagName);
102
- if (style && ((0, vutils_1.isString)(style) ? element.setAttribute("style", style) : Object.keys(style).forEach((k => {
103
- element.setAttribute(k, style[k]);
104
- }))), null != width && (element.style.width = `${width}px`), null != height && (element.style.height = `${height}px`),
105
- parent) {
106
- const pd = (0, vutils_1.isString)(parent) ? this.getElementById(parent) : parent;
107
- pd && pd.appendChild && pd.appendChild(element);
108
- }
109
- return element;
110
- }
111
64
  loadImage(url) {
112
65
  return createImageElement(url, !1).then((img => ({
113
66
  data: img,
@@ -172,25 +125,6 @@ let BrowserEnvContribution = class extends base_contribution_1.BaseEnvContributi
172
125
  return document;
173
126
  }
174
127
  release(...params) {}
175
- getElementTop(element, baseWindow) {
176
- let actualTop = element.offsetTop, current = element.offsetParent;
177
- for (;null !== current; ) actualTop += current.offsetTop, current = current.offsetParent;
178
- return actualTop;
179
- }
180
- getElementLeft(element, baseWindow) {
181
- let actualLeft = element.offsetLeft, current = element.offsetParent;
182
- for (;null !== current; ) actualLeft += current.offsetLeft, current = current.offsetParent;
183
- return actualLeft;
184
- }
185
- getElementTopLeft(element, baseWindow) {
186
- let actualTop = element.offsetTop, actualLeft = element.offsetLeft, current = element.offsetParent;
187
- for (;null !== current; ) actualTop += current.offsetTop, actualLeft += current.offsetLeft,
188
- current = current.offsetParent;
189
- return {
190
- top: actualTop,
191
- left: actualLeft
192
- };
193
- }
194
128
  };
195
129
 
196
130
  BrowserEnvContribution = __decorate([ (0, inversify_1.injectable)(), __metadata("design:paramtypes", []) ], BrowserEnvContribution),
@@ -1 +1 @@
1
- {"version":3,"sources":["../src/core/contributions/env/browser-contribution.ts"],"names":[],"mappings":"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","file":"browser-contribution.js","sourcesContent":["import { injectable } from 'inversify';\nimport { Generator } from '../../../common/generator';\nimport type {\n ICanvasLike,\n EnvType,\n ICreateCanvasParams,\n IEnvContribution,\n CreateDOMParamsType\n} from '../../../interface';\nimport { BaseEnvContribution } from './base-contribution';\nimport type { IBoundsLike, IPointLike } from '@visactor/vutils';\nimport { AABBBounds, isString, isValidNumber } from '@visactor/vutils';\n\nclass DynamicB {\n get x1(): number {\n return this.dom.getBoundingClientRect().left;\n }\n get x2(): number {\n return this.dom.getBoundingClientRect().right;\n }\n get y1(): number {\n return this.dom.getBoundingClientRect().top;\n }\n get y2(): number {\n return this.dom.getBoundingClientRect().bottom;\n }\n get width(): number {\n return this.dom.getBoundingClientRect().width;\n }\n get height(): number {\n return this.dom.getBoundingClientRect().height;\n }\n\n dom: HTMLElement;\n\n constructor(dom: HTMLElement) {\n this.dom = dom;\n }\n}\n\nexport function createImageElement(src: string, isSvg: boolean = false): Promise<HTMLImageElement> {\n const img = document.createElement('img');\n img.crossOrigin = 'anonymous';\n if (isSvg) {\n const data = new Blob([src], { type: 'image/svg+xml' });\n src = window.URL.createObjectURL(data);\n }\n img.src = src;\n if (img.complete) {\n return Promise.resolve(img);\n }\n const promise: Promise<HTMLImageElement> = new Promise((resolve, reject) => {\n img.onload = () => {\n resolve(img);\n };\n img.onerror = () => {\n reject(new Error('加载失败'));\n };\n });\n return promise;\n}\n\n@injectable()\nexport class BrowserEnvContribution extends BaseEnvContribution implements IEnvContribution {\n type: EnvType = 'browser';\n supportEvent: boolean = true;\n\n constructor() {\n super();\n try {\n this.supportsTouchEvents = 'ontouchstart' in globalThis;\n this.supportsPointerEvents = !!globalThis.PointerEvent;\n this.supportsMouseEvents = !!globalThis.MouseEvent;\n } catch (err) {\n this.supportsTouchEvents = false;\n this.supportsPointerEvents = false;\n this.supportsPointerEvents = false;\n }\n this.applyStyles = true;\n }\n\n mapToCanvasPoint(nativeEvent: PointerEvent | WheelEvent, domElement?: any): IPointLike {\n if (domElement) {\n const { clientX: x, clientY: y } = nativeEvent;\n const rect = domElement.getBoundingClientRect();\n const nativeCanvas = domElement.getNativeHandler?.().nativeCanvas;\n let scaleX;\n let scaleY;\n if (nativeCanvas) {\n scaleX = rect.width / nativeCanvas.offsetWidth;\n scaleY = rect.height / nativeCanvas.offsetHeight;\n }\n\n return {\n x: (x - rect.left) / (isValidNumber(scaleX) ? scaleX : 1),\n y: (y - rect.top) / (isValidNumber(scaleY) ? scaleX : 1)\n };\n }\n return {\n x: nativeEvent.offsetX,\n y: nativeEvent.offsetY\n };\n }\n\n getNativeAABBBounds(_dom: any): IBoundsLike {\n let dom = _dom;\n if (typeof _dom === 'string') {\n dom = new DOMParser().parseFromString(_dom, 'text/xml').firstChild;\n }\n if (dom.getBoundingClientRect) {\n const b = dom.getBoundingClientRect();\n return new DynamicB(b);\n }\n return new AABBBounds();\n }\n\n removeDom(dom: HTMLElement): boolean {\n dom.parentElement.removeChild(dom);\n return true;\n }\n\n createDom(params: CreateDOMParamsType): HTMLElement | null {\n const { tagName = 'div', width, height, style, parent } = params;\n const element = document.createElement(tagName);\n if (style) {\n if (isString(style)) {\n element.setAttribute('style', style);\n } else {\n Object.keys(style).forEach(k => {\n element.setAttribute(k, style[k]);\n });\n }\n }\n if (width != null) {\n element.style.width = `${width}px`;\n }\n if (height != null) {\n element.style.height = `${height}px`;\n }\n\n if (parent) {\n const pd = isString(parent) ? this.getElementById(parent) : parent;\n if (pd && pd.appendChild) {\n pd.appendChild(element);\n }\n }\n\n return element;\n }\n\n loadImage(url: string): Promise<{\n loadState: 'success' | 'fail';\n data: HTMLImageElement | ImageData | null;\n }> {\n const imagePromise = createImageElement(url, false);\n return imagePromise\n .then((img: HTMLImageElement) => {\n return {\n data: img,\n loadState: 'success' as const\n };\n })\n .catch(() => {\n return {\n data: null,\n loadState: 'fail'\n };\n });\n }\n\n loadSvg(url: string): Promise<{\n loadState: 'success' | 'fail';\n data: HTMLImageElement | ImageData | null;\n }> {\n const imagePromise = createImageElement(url, true);\n return imagePromise\n .then((img: HTMLImageElement) => {\n return {\n data: img,\n loadState: 'success' as const\n };\n })\n .catch(() => {\n return {\n data: null,\n loadState: 'fail'\n };\n });\n }\n\n createCanvas(params: ICreateCanvasParams): HTMLCanvasElement {\n const canvas = document.createElement('canvas');\n params.id && (canvas.id = params.id ?? Generator.GenAutoIncrementId().toString());\n // 默认dpr\n const dpr = params.dpr ?? window.devicePixelRatio;\n if (params.width && params.height) {\n canvas.style.width = `${params.width}px`;\n canvas.style.height = `${params.height}px`;\n canvas.width = params.width * dpr;\n canvas.height = params.height * dpr;\n }\n return canvas;\n }\n\n createOffscreenCanvas(params: ICreateCanvasParams) {\n const dpr = params.dpr ?? window.devicePixelRatio;\n const canvas = new OffscreenCanvas(params.width * dpr, params.height * dpr);\n return canvas;\n }\n\n releaseCanvas(canvas: ICanvasLike | string) {\n let c: HTMLCanvasElement | null;\n if (typeof canvas === 'string') {\n c = document.getElementById(canvas) as HTMLCanvasElement | null;\n } else {\n c = canvas as unknown as HTMLCanvasElement;\n }\n\n if (!c) {\n return;\n }\n if (c.parentElement) {\n c.parentElement.removeChild(c);\n }\n }\n\n getDevicePixelRatio(): number {\n return window.devicePixelRatio;\n }\n\n getRequestAnimationFrame(): (callback: FrameRequestCallback) => number {\n return window.requestAnimationFrame;\n }\n\n getCancelAnimationFrame(): (h: number) => void {\n return window.cancelAnimationFrame;\n }\n\n addEventListener<K extends keyof DocumentEventMap>(\n type: K,\n listener: (this: Document, ev: DocumentEventMap[K]) => any,\n options?: boolean | AddEventListenerOptions | undefined\n ): void;\n addEventListener(\n type: string,\n listener: EventListenerOrEventListenerObject,\n options?: boolean | AddEventListenerOptions | undefined\n ): void;\n addEventListener(type: unknown, listener: unknown, options?: unknown): void {\n return document.addEventListener(type as any, listener as any, options as any);\n }\n\n removeEventListener<K extends keyof DocumentEventMap>(\n type: K,\n listener: (this: Document, ev: DocumentEventMap[K]) => any,\n options?: boolean | EventListenerOptions | undefined\n ): void;\n removeEventListener(\n type: string,\n listener: EventListenerOrEventListenerObject,\n options?: boolean | EventListenerOptions | undefined\n ): void;\n removeEventListener(type: unknown, listener: unknown, options?: unknown): void {\n return document.removeEventListener(type as any, listener as any, options as any);\n }\n\n dispatchEvent(event: any): boolean {\n return document.dispatchEvent(event);\n }\n\n getElementById(str: string): HTMLElement | null {\n return document.getElementById(str);\n }\n\n getRootElement(): HTMLElement | null {\n return document.body;\n }\n\n getDocument(): Document | null {\n return document;\n }\n\n release(...params: any): void {\n return;\n }\n\n getElementTop(element: HTMLElement, baseWindow?: boolean) {\n let actualTop = element.offsetTop;\n let current = element.offsetParent as HTMLElement;\n\n while (current !== null) {\n actualTop += current.offsetTop;\n current = current.offsetParent as HTMLElement;\n }\n\n return actualTop;\n }\n getElementLeft(element: HTMLElement, baseWindow?: boolean) {\n let actualLeft = element.offsetLeft;\n let current = element.offsetParent as HTMLElement;\n\n while (current !== null) {\n actualLeft += current.offsetLeft;\n current = current.offsetParent as HTMLElement;\n }\n\n return actualLeft;\n }\n getElementTopLeft(element: HTMLElement, baseWindow?: boolean): { top: number; left: number } {\n let actualTop = element.offsetTop;\n let actualLeft = element.offsetLeft;\n let current = element.offsetParent as HTMLElement;\n\n while (current !== null) {\n actualTop += current.offsetTop;\n actualLeft += current.offsetLeft;\n current = current.offsetParent as HTMLElement;\n }\n\n return {\n top: actualTop,\n left: actualLeft\n };\n }\n}\n"]}
1
+ {"version":3,"sources":["../src/core/contributions/env/browser-contribution.ts"],"names":[],"mappings":"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","file":"browser-contribution.js","sourcesContent":["import { injectable } from 'inversify';\nimport { Generator } from '../../../common/generator';\nimport { ICanvasLike, EnvType, ICreateCanvasParams, IEnvContribution } from '../../../interface';\nimport { BaseEnvContribution } from './base-contribution';\nimport { IPointLike, isValidNumber } from '@visactor/vutils';\n\nexport function createImageElement(src: string, isSvg: boolean = false): Promise<HTMLImageElement> {\n const img = document.createElement('img');\n img.crossOrigin = 'anonymous';\n if (isSvg) {\n const data = new Blob([src], { type: 'image/svg+xml' });\n src = window.URL.createObjectURL(data);\n }\n img.src = src;\n if (img.complete) {\n return Promise.resolve(img);\n }\n const promise: Promise<HTMLImageElement> = new Promise((resolve, reject) => {\n img.onload = () => {\n resolve(img);\n };\n img.onerror = () => {\n reject(new Error('加载失败'));\n };\n });\n return promise;\n}\n\n@injectable()\nexport class BrowserEnvContribution extends BaseEnvContribution implements IEnvContribution {\n type: EnvType = 'browser';\n supportEvent: boolean = true;\n\n constructor() {\n super();\n try {\n this.supportsTouchEvents = 'ontouchstart' in globalThis;\n this.supportsPointerEvents = !!globalThis.PointerEvent;\n this.supportsMouseEvents = !!globalThis.MouseEvent;\n } catch (err) {\n this.supportsTouchEvents = false;\n this.supportsPointerEvents = false;\n this.supportsPointerEvents = false;\n }\n this.applyStyles = true;\n }\n\n mapToCanvasPoint(nativeEvent: PointerEvent | WheelEvent, domElement?: any): IPointLike {\n if (domElement) {\n const { clientX: x, clientY: y } = nativeEvent;\n const rect = domElement.getBoundingClientRect();\n const nativeCanvas = domElement.getNativeHandler?.().nativeCanvas;\n let scaleX;\n let scaleY;\n if (nativeCanvas) {\n scaleX = rect.width / nativeCanvas.offsetWidth;\n scaleY = rect.height / nativeCanvas.offsetHeight;\n }\n\n return {\n x: (x - rect.left) / (isValidNumber(scaleX) ? scaleX : 1),\n y: (y - rect.top) / (isValidNumber(scaleY) ? scaleX : 1)\n };\n }\n return {\n x: nativeEvent.offsetX,\n y: nativeEvent.offsetY\n };\n }\n\n loadImage(url: string): Promise<{\n loadState: 'success' | 'fail';\n data: HTMLImageElement | ImageData | null;\n }> {\n const imagePromise = createImageElement(url, false);\n return imagePromise\n .then((img: HTMLImageElement) => {\n return {\n data: img,\n loadState: 'success' as const\n };\n })\n .catch(() => {\n return {\n data: null,\n loadState: 'fail'\n };\n });\n }\n\n loadSvg(url: string): Promise<{\n loadState: 'success' | 'fail';\n data: HTMLImageElement | ImageData | null;\n }> {\n const imagePromise = createImageElement(url, true);\n return imagePromise\n .then((img: HTMLImageElement) => {\n return {\n data: img,\n loadState: 'success' as const\n };\n })\n .catch(() => {\n return {\n data: null,\n loadState: 'fail'\n };\n });\n }\n\n createCanvas(params: ICreateCanvasParams): HTMLCanvasElement {\n const canvas = document.createElement('canvas');\n params.id && (canvas.id = params.id ?? Generator.GenAutoIncrementId().toString());\n // 默认dpr\n const dpr = params.dpr ?? window.devicePixelRatio;\n if (params.width && params.height) {\n canvas.style.width = `${params.width}px`;\n canvas.style.height = `${params.height}px`;\n canvas.width = params.width * dpr;\n canvas.height = params.height * dpr;\n }\n return canvas;\n }\n\n createOffscreenCanvas(params: ICreateCanvasParams) {\n const dpr = params.dpr ?? window.devicePixelRatio;\n const canvas = new OffscreenCanvas(params.width * dpr, params.height * dpr);\n return canvas;\n }\n\n releaseCanvas(canvas: ICanvasLike | string) {\n let c: HTMLCanvasElement | null;\n if (typeof canvas === 'string') {\n c = document.getElementById(canvas) as HTMLCanvasElement | null;\n } else {\n c = canvas as unknown as HTMLCanvasElement;\n }\n\n if (!c) {\n return;\n }\n if (c.parentElement) {\n c.parentElement.removeChild(c);\n }\n }\n\n getDevicePixelRatio(): number {\n return window.devicePixelRatio;\n }\n\n getRequestAnimationFrame(): (callback: FrameRequestCallback) => number {\n return window.requestAnimationFrame;\n }\n\n getCancelAnimationFrame(): (h: number) => void {\n return window.cancelAnimationFrame;\n }\n\n addEventListener<K extends keyof DocumentEventMap>(\n type: K,\n listener: (this: Document, ev: DocumentEventMap[K]) => any,\n options?: boolean | AddEventListenerOptions | undefined\n ): void;\n addEventListener(\n type: string,\n listener: EventListenerOrEventListenerObject,\n options?: boolean | AddEventListenerOptions | undefined\n ): void;\n addEventListener(type: unknown, listener: unknown, options?: unknown): void {\n return document.addEventListener(type as any, listener as any, options as any);\n }\n\n removeEventListener<K extends keyof DocumentEventMap>(\n type: K,\n listener: (this: Document, ev: DocumentEventMap[K]) => any,\n options?: boolean | EventListenerOptions | undefined\n ): void;\n removeEventListener(\n type: string,\n listener: EventListenerOrEventListenerObject,\n options?: boolean | EventListenerOptions | undefined\n ): void;\n removeEventListener(type: unknown, listener: unknown, options?: unknown): void {\n return document.removeEventListener(type as any, listener as any, options as any);\n }\n\n dispatchEvent(event: any): boolean {\n return document.dispatchEvent(event);\n }\n\n getElementById(str: string): HTMLElement | null {\n return document.getElementById(str);\n }\n\n getRootElement(): HTMLElement | null {\n return document.body;\n }\n\n getDocument(): Document | null {\n return document;\n }\n\n release(...params: any): void {\n return;\n }\n}\n"]}
@@ -56,7 +56,7 @@ class CanvasTextLayout {
56
56
  });
57
57
  bboxWH[0] = lineWidth;
58
58
  }
59
- bboxWH[1] = linesLayout.length * lineHeight, bboxWH[0] = linesLayout.reduce(((a, b) => Math.max(a, b.width)), 0);
59
+ bboxWH[1] = linesLayout.length * lineHeight;
60
60
  const bbox = {
61
61
  xOffset: 0,
62
62
  yOffset: 0,
@@ -1 +1 @@
1
- {"version":3,"sources":["../src/core/contributions/textMeasure/layout.ts"],"names":[],"mappings":"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","file":"layout.js","sourcesContent":["import type { vec2 } from '@visactor/vutils';\nimport type { ITextMeasure, TextOptionsType } from '../../../interface/text';\nimport type { TextLayoutBBox, LayoutItemType, LayoutType, TextAlignType, TextBaselineType } from '../../../interface';\n\nexport class CanvasTextLayout {\n private fontFamily: string;\n private textOptions: TextOptionsType;\n private textMeasure: ITextMeasure;\n\n constructor(fontFamily: string, options: TextOptionsType, textMeasure: ITextMeasure) {\n this.fontFamily = fontFamily;\n this.textOptions = options;\n this.textMeasure = textMeasure;\n }\n\n LayoutBBox(bbox: TextLayoutBBox, textAlign: TextAlignType, textBaseline: TextBaselineType): TextLayoutBBox {\n if (textAlign === 'left' || textAlign === 'start') {\n bbox.xOffset = 0;\n } else if (textAlign === 'center') {\n bbox.xOffset = bbox.width / -2;\n } else if (textAlign === 'right' || textAlign === 'end') {\n bbox.xOffset = -bbox.width;\n } else {\n throw new Error('非法的textAlign');\n }\n\n if (textBaseline === 'top') {\n bbox.yOffset = 0;\n } else if (textBaseline === 'middle') {\n bbox.yOffset = bbox.height / -2;\n } else if (textBaseline === 'alphabetic') {\n bbox.yOffset = bbox.height * -0.79;\n } else {\n bbox.yOffset = -bbox.height;\n }\n\n return bbox;\n }\n\n GetLayout(\n str: string,\n width: number,\n height: number,\n textAlign: TextAlignType,\n textBaseline: TextBaselineType,\n lineHeight: number,\n suffix: string,\n wordBreak: boolean,\n miniApp: boolean\n ): LayoutType {\n // 拆分str\n const linesLayout: LayoutItemType[] = [];\n // bbox高度可能大于totalHeight\n const bboxWH: vec2 = [width, height];\n const bboxOffset: vec2 = [0, 0];\n\n while (str.length > 0) {\n const { str: clipText } = this.textMeasure.clipTextWithSuffix(str, this.textOptions, width, suffix, wordBreak);\n linesLayout.push({\n str: clipText,\n width: this.textMeasure.measureTextWidth(clipText, this.textOptions)\n });\n str = str.substring(clipText.length);\n }\n\n if (textAlign === 'left' || textAlign === 'start') {\n // origin[0] = 0;\n } else if (textAlign === 'center') {\n bboxOffset[0] = bboxWH[0] / -2;\n } else if (textAlign === 'right' || textAlign === 'end') {\n bboxOffset[0] = -bboxWH[0];\n }\n\n if (textBaseline === 'top') {\n // origin[1] = 0;\n } else if (textBaseline === 'middle') {\n bboxOffset[1] = bboxWH[1] / -2;\n } else if (textBaseline === 'bottom') {\n bboxOffset[1] = -bboxWH[1];\n }\n\n const bbox: TextLayoutBBox = {\n xOffset: bboxOffset[0],\n yOffset: bboxOffset[1],\n width: bboxWH[0],\n height: bboxWH[1]\n };\n\n return this.layoutWithBBox(bbox, linesLayout, textAlign, textBaseline, lineHeight);\n }\n\n /**\n * 给定拆分好的每行字符串进行布局,如果传入lineWidth,那么后面的字符就拆分\n * @param lines\n * @param lineWidth\n */\n GetLayoutByLines(\n lines: (string | number)[],\n textAlign: TextAlignType,\n textBaseline: TextBaselineType,\n lineHeight: number,\n suffix: string = '',\n wordBreak: boolean,\n lineWidth?: number\n ): LayoutType {\n lines = lines.map(l => l.toString()) as string[];\n const linesLayout: LayoutItemType[] = [];\n // bbox高度可能大于totalHeight\n const bboxWH: vec2 = [0, 0];\n if (typeof lineWidth === 'number' && lineWidth !== Infinity) {\n // 直接使用lineWidth,并拆分字符串\n let width: number;\n for (let i = 0, len = lines.length; i < len; i++) {\n width = Math.min(this.textMeasure.measureTextWidth(lines[i] as string, this.textOptions), lineWidth);\n linesLayout.push({\n str: this.textMeasure.clipTextWithSuffix(lines[i] as string, this.textOptions, width, suffix, wordBreak).str,\n width\n });\n }\n bboxWH[0] = lineWidth;\n } else {\n // 使用所有行中最长的作为lineWidth\n lineWidth = 0;\n let width: number;\n let text: string;\n for (let i = 0, len = lines.length; i < len; i++) {\n text = lines[i] as string;\n width = this.textMeasure.measureTextWidth(text, this.textOptions);\n lineWidth = Math.max(lineWidth, width);\n linesLayout.push({ str: text, width });\n }\n bboxWH[0] = lineWidth;\n }\n bboxWH[1] = linesLayout.length * lineHeight;\n\n bboxWH[0] = linesLayout.reduce((a, b) => Math.max(a, b.width), 0);\n\n const bbox: TextLayoutBBox = {\n xOffset: 0,\n yOffset: 0,\n width: bboxWH[0],\n height: bboxWH[1]\n };\n\n this.LayoutBBox(bbox, textAlign, textBaseline);\n\n return this.layoutWithBBox(bbox, linesLayout, textAlign, textBaseline, lineHeight);\n }\n\n layoutWithBBox(\n bbox: TextLayoutBBox,\n lines: LayoutItemType[],\n textAlign: TextAlignType,\n textBaseline: TextBaselineType,\n lineHeight: number\n ): LayoutType {\n const origin: vec2 = [0, 0];\n const totalLineHeight = lines.length * lineHeight; // 总高度\n // origin在y方向需要初始化,然后递增即可\n if (textBaseline === 'top') {\n // origin[1] = 0;\n } else if (textBaseline === 'middle') {\n origin[1] = (bbox.height - totalLineHeight) / 2;\n } else if (textBaseline === 'bottom') {\n origin[1] = bbox.height - totalLineHeight;\n }\n\n for (let i = 0; i < lines.length; i++) {\n this.lineOffset(bbox, lines[i], textAlign, textBaseline, lineHeight, origin);\n }\n\n return {\n bbox,\n lines,\n fontFamily: this.fontFamily,\n fontSize: this.textOptions.fontSize,\n fontWeight: this.textOptions.fontWeight,\n lineHeight,\n textAlign,\n textBaseline\n };\n }\n\n /**\n * 计算line在bbox中的位置,需要配合layoutWithBBox使用\n * @param bbox\n * @param line\n * @param textAlign\n * @param textBaseline\n * @param lineHeight\n * @param origin 这个line的左上角位置,会复用并修改\n */\n private lineOffset(\n bbox: TextLayoutBBox,\n line: LayoutItemType,\n textAlign: TextAlignType,\n textBaseline: TextBaselineType,\n lineHeight: number,\n origin: vec2\n ): LayoutItemType {\n if (textAlign === 'left' || textAlign === 'start') {\n line.leftOffset = 0;\n } else if (textAlign === 'center') {\n line.leftOffset = (bbox.width - line.width) / 2;\n } else if (textAlign === 'right' || textAlign === 'end') {\n line.leftOffset = bbox.width - line.width;\n }\n\n // line.topOffset = lineHeight * 0.79 + origin[1]; // 渲染默认使用alphabetic\n line.topOffset = (lineHeight - this.textOptions.fontSize) / 2 + this.textOptions.fontSize * 0.79 + origin[1];\n origin[1] += lineHeight;\n\n return line;\n }\n}\n"]}
1
+ {"version":3,"sources":["../src/core/contributions/textMeasure/layout.ts"],"names":[],"mappings":"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","file":"layout.js","sourcesContent":["import type { vec2 } from '@visactor/vutils';\nimport type { ITextMeasure, TextOptionsType } from '../../../interface/text';\nimport type { TextLayoutBBox, LayoutItemType, LayoutType, TextAlignType, TextBaselineType } from '../../../interface';\n\nexport class CanvasTextLayout {\n private fontFamily: string;\n private textOptions: TextOptionsType;\n private textMeasure: ITextMeasure;\n\n constructor(fontFamily: string, options: TextOptionsType, textMeasure: ITextMeasure) {\n this.fontFamily = fontFamily;\n this.textOptions = options;\n this.textMeasure = textMeasure;\n }\n\n LayoutBBox(bbox: TextLayoutBBox, textAlign: TextAlignType, textBaseline: TextBaselineType): TextLayoutBBox {\n if (textAlign === 'left' || textAlign === 'start') {\n bbox.xOffset = 0;\n } else if (textAlign === 'center') {\n bbox.xOffset = bbox.width / -2;\n } else if (textAlign === 'right' || textAlign === 'end') {\n bbox.xOffset = -bbox.width;\n } else {\n throw new Error('非法的textAlign');\n }\n\n if (textBaseline === 'top') {\n bbox.yOffset = 0;\n } else if (textBaseline === 'middle') {\n bbox.yOffset = bbox.height / -2;\n } else if (textBaseline === 'alphabetic') {\n bbox.yOffset = bbox.height * -0.79;\n } else {\n bbox.yOffset = -bbox.height;\n }\n\n return bbox;\n }\n\n GetLayout(\n str: string,\n width: number,\n height: number,\n textAlign: TextAlignType,\n textBaseline: TextBaselineType,\n lineHeight: number,\n suffix: string,\n wordBreak: boolean,\n miniApp: boolean\n ): LayoutType {\n // 拆分str\n const linesLayout: LayoutItemType[] = [];\n // bbox高度可能大于totalHeight\n const bboxWH: vec2 = [width, height];\n const bboxOffset: vec2 = [0, 0];\n\n while (str.length > 0) {\n const { str: clipText } = this.textMeasure.clipTextWithSuffix(str, this.textOptions, width, suffix, wordBreak);\n linesLayout.push({\n str: clipText,\n width: this.textMeasure.measureTextWidth(clipText, this.textOptions)\n });\n str = str.substring(clipText.length);\n }\n\n if (textAlign === 'left' || textAlign === 'start') {\n // origin[0] = 0;\n } else if (textAlign === 'center') {\n bboxOffset[0] = bboxWH[0] / -2;\n } else if (textAlign === 'right' || textAlign === 'end') {\n bboxOffset[0] = -bboxWH[0];\n }\n\n if (textBaseline === 'top') {\n // origin[1] = 0;\n } else if (textBaseline === 'middle') {\n bboxOffset[1] = bboxWH[1] / -2;\n } else if (textBaseline === 'bottom') {\n bboxOffset[1] = -bboxWH[1];\n }\n\n const bbox: TextLayoutBBox = {\n xOffset: bboxOffset[0],\n yOffset: bboxOffset[1],\n width: bboxWH[0],\n height: bboxWH[1]\n };\n\n return this.layoutWithBBox(bbox, linesLayout, textAlign, textBaseline, lineHeight);\n }\n\n /**\n * 给定拆分好的每行字符串进行布局,如果传入lineWidth,那么后面的字符就拆分\n * @param lines\n * @param lineWidth\n */\n GetLayoutByLines(\n lines: (string | number)[],\n textAlign: TextAlignType,\n textBaseline: TextBaselineType,\n lineHeight: number,\n suffix: string = '',\n wordBreak: boolean,\n lineWidth?: number\n ): LayoutType {\n lines = lines.map(l => l.toString()) as string[];\n const linesLayout: LayoutItemType[] = [];\n // bbox高度可能大于totalHeight\n const bboxWH: vec2 = [0, 0];\n if (typeof lineWidth === 'number' && lineWidth !== Infinity) {\n // 直接使用lineWidth,并拆分字符串\n let width: number;\n for (let i = 0, len = lines.length; i < len; i++) {\n width = Math.min(this.textMeasure.measureTextWidth(lines[i] as string, this.textOptions), lineWidth);\n linesLayout.push({\n str: this.textMeasure.clipTextWithSuffix(lines[i] as string, this.textOptions, width, suffix, wordBreak).str,\n width\n });\n }\n bboxWH[0] = lineWidth;\n } else {\n // 使用所有行中最长的作为lineWidth\n lineWidth = 0;\n let width: number;\n let text: string;\n for (let i = 0, len = lines.length; i < len; i++) {\n text = lines[i] as string;\n width = this.textMeasure.measureTextWidth(text, this.textOptions);\n lineWidth = Math.max(lineWidth, width);\n linesLayout.push({ str: text, width });\n }\n bboxWH[0] = lineWidth;\n }\n bboxWH[1] = linesLayout.length * lineHeight;\n\n const bbox: TextLayoutBBox = {\n xOffset: 0,\n yOffset: 0,\n width: bboxWH[0],\n height: bboxWH[1]\n };\n\n this.LayoutBBox(bbox, textAlign, textBaseline);\n\n return this.layoutWithBBox(bbox, linesLayout, textAlign, textBaseline, lineHeight);\n }\n\n layoutWithBBox(\n bbox: TextLayoutBBox,\n lines: LayoutItemType[],\n textAlign: TextAlignType,\n textBaseline: TextBaselineType,\n lineHeight: number\n ): LayoutType {\n const origin: vec2 = [0, 0];\n const totalLineHeight = lines.length * lineHeight; // 总高度\n // origin在y方向需要初始化,然后递增即可\n if (textBaseline === 'top') {\n // origin[1] = 0;\n } else if (textBaseline === 'middle') {\n origin[1] = (bbox.height - totalLineHeight) / 2;\n } else if (textBaseline === 'bottom') {\n origin[1] = bbox.height - totalLineHeight;\n }\n\n for (let i = 0; i < lines.length; i++) {\n this.lineOffset(bbox, lines[i], textAlign, textBaseline, lineHeight, origin);\n }\n\n return {\n bbox,\n lines,\n fontFamily: this.fontFamily,\n fontSize: this.textOptions.fontSize,\n fontWeight: this.textOptions.fontWeight,\n lineHeight,\n textAlign,\n textBaseline\n };\n }\n\n /**\n * 计算line在bbox中的位置,需要配合layoutWithBBox使用\n * @param bbox\n * @param line\n * @param textAlign\n * @param textBaseline\n * @param lineHeight\n * @param origin 这个line的左上角位置,会复用并修改\n */\n private lineOffset(\n bbox: TextLayoutBBox,\n line: LayoutItemType,\n textAlign: TextAlignType,\n textBaseline: TextBaselineType,\n lineHeight: number,\n origin: vec2\n ): LayoutItemType {\n if (textAlign === 'left' || textAlign === 'start') {\n line.leftOffset = 0;\n } else if (textAlign === 'center') {\n line.leftOffset = (bbox.width - line.width) / 2;\n } else if (textAlign === 'right' || textAlign === 'end') {\n line.leftOffset = bbox.width - line.width;\n }\n\n // line.topOffset = lineHeight * 0.79 + origin[1]; // 渲染默认使用alphabetic\n line.topOffset = (lineHeight - this.textOptions.fontSize) / 2 + this.textOptions.fontSize * 0.79 + origin[1];\n origin[1] += lineHeight;\n\n return line;\n }\n}\n"]}
@@ -1,10 +1,10 @@
1
1
  import type { ICanvas, IContext2d, IDomRectLike, EnvType, IGlobal, IWindowHandlerContribution, IWindow, IWindowParams } from '../../../interface';
2
2
  import type { IBoundsLike } from '@visactor/vutils';
3
- type OnchangeCbType = (params?: {
4
- x?: number;
5
- y?: number;
6
- width?: number;
7
- height?: number;
3
+ type OnchangeCbType = (params: {
4
+ x: number;
5
+ y: number;
6
+ width: number;
7
+ height: number;
8
8
  }) => void;
9
9
  export declare abstract class BaseWindowHandlerContribution implements IWindowHandlerContribution {
10
10
  type: EnvType;
@@ -39,11 +39,5 @@ export declare abstract class BaseWindowHandlerContribution implements IWindowHa
39
39
  abstract getStyle(): CSSStyleDeclaration | Record<string, any>;
40
40
  abstract setStyle(style: CSSStyleDeclaration | Record<string, any>): void;
41
41
  abstract getBoundingClientRect(): IDomRectLike;
42
- isVisible(bbox?: IBoundsLike): boolean;
43
- onVisibleChange(cb: (currentVisible: boolean) => void): void;
44
- getTopLeft(baseWindow?: boolean): {
45
- top: number;
46
- left: number;
47
- };
48
42
  }
49
43
  export {};
@@ -27,16 +27,6 @@ let BaseWindowHandlerContribution = class {
27
27
  release(...params) {
28
28
  this.releaseWindow();
29
29
  }
30
- isVisible(bbox) {
31
- return !0;
32
- }
33
- onVisibleChange(cb) {}
34
- getTopLeft(baseWindow) {
35
- return {
36
- top: 0,
37
- left: 0
38
- };
39
- }
40
30
  };
41
31
 
42
32
  BaseWindowHandlerContribution = __decorate([ (0, inversify_1.injectable)(), __metadata("design:paramtypes", []) ], BaseWindowHandlerContribution),
@@ -1 +1 @@
1
- {"version":3,"sources":["../src/core/contributions/window/base-contribution.ts"],"names":[],"mappings":";;;;;;;;;;;;AAAA,yCAAuC;AACvC,yDAAsD;AAgB/C,IAAe,6BAA6B,GAA5C,MAAe,6BAA6B;IAKjD;QACE,IAAI,CAAC,IAAI,GAAG,qBAAS,CAAC,kBAAkB,EAAE,CAAC;IAC7C,CAAC;IAID,QAAQ,CAAC,EAAkB;QACzB,IAAI,CAAC,WAAW,GAAG,EAAE,CAAC;IACxB,CAAC;IAED,SAAS,CAAC,MAAe,EAAE,MAAe;QACxC,IAAI,MAAM,CAAC,GAAG,KAAK,IAAI,CAAC,IAAI,EAAE;YAC5B,MAAM,CAAC,gBAAgB,CAAC,IAAI,CAAC,CAAC;SAC/B;IACH,CAAC;IACD,OAAO,CAAC,GAAG,MAAW;QACpB,IAAI,CAAC,aAAa,EAAE,CAAC;IACvB,CAAC;IAsCD,SAAS,CAAC,IAAkB;QAC1B,OAAO,IAAI,CAAC;IACd,CAAC;IAED,eAAe,CAAC,EAAqC;QACnD,OAAO;IACT,CAAC;IAED,UAAU,CAAC,UAAoB;QAC7B,OAAO;YACL,GAAG,EAAE,CAAC;YACN,IAAI,EAAE,CAAC;SACR,CAAC;IACJ,CAAC;CACF,CAAA;AA1EqB,6BAA6B;IADlD,IAAA,sBAAU,GAAE;;GACS,6BAA6B,CA0ElD;AA1EqB,sEAA6B","file":"base-contribution.js","sourcesContent":["import { injectable } from 'inversify';\nimport { Generator } from '../../../common/generator';\nimport type {\n ICanvas,\n IContext2d,\n IDomRectLike,\n EnvType,\n IGlobal,\n IWindowHandlerContribution,\n IWindow,\n IWindowParams\n} from '../../../interface';\nimport type { IBoundsLike } from '@visactor/vutils';\n\ntype OnchangeCbType = (params?: { x?: number; y?: number; width?: number; height?: number }) => void;\n\n@injectable()\nexport abstract class BaseWindowHandlerContribution implements IWindowHandlerContribution {\n declare type: EnvType;\n\n declare _uid: number;\n\n constructor() {\n this._uid = Generator.GenAutoIncrementId();\n }\n\n protected declare _onChangeCb?: OnchangeCbType;\n\n onChange(cb: OnchangeCbType) {\n this._onChangeCb = cb;\n }\n\n configure(window: IWindow, global: IGlobal) {\n if (global.env === this.type) {\n window.setWindowHandler(this);\n }\n }\n release(...params: any) {\n this.releaseWindow();\n }\n abstract createWindow(params: IWindowParams): void;\n abstract releaseWindow(): void;\n abstract setDpr(dpr: number): void;\n abstract resizeWindow(width: number, height: number): void;\n abstract getContext(): IContext2d;\n abstract getWH(): { width: number; height: number };\n abstract getTitle(): string;\n abstract getXY(): { x: number; y: number };\n abstract getNativeHandler(): ICanvas | any;\n abstract getDpr(): number;\n abstract clearViewBox(vb: IBoundsLike, color?: string): void;\n abstract addEventListener<K extends keyof DocumentEventMap>(\n type: K,\n listener: (this: Document, ev: DocumentEventMap[K]) => any,\n options?: boolean | AddEventListenerOptions\n ): void;\n abstract addEventListener(\n type: string,\n listener: EventListenerOrEventListenerObject,\n options?: boolean | AddEventListenerOptions\n ): void;\n abstract removeEventListener<K extends keyof DocumentEventMap>(\n type: K,\n listener: (this: Document, ev: DocumentEventMap[K]) => any,\n options?: boolean | EventListenerOptions\n ): void;\n abstract removeEventListener(\n type: string,\n listener: EventListenerOrEventListenerObject,\n options?: boolean | EventListenerOptions\n ): void;\n abstract dispatchEvent(event: any): boolean;\n\n abstract getStyle(): CSSStyleDeclaration | Record<string, any>;\n abstract setStyle(style: CSSStyleDeclaration | Record<string, any>): void;\n abstract getBoundingClientRect(): IDomRectLike;\n\n isVisible(bbox?: IBoundsLike) {\n return true;\n }\n\n onVisibleChange(cb: (currentVisible: boolean) => void) {\n return;\n }\n\n getTopLeft(baseWindow?: boolean): { top: number; left: number } {\n return {\n top: 0,\n left: 0\n };\n }\n}\n"]}
1
+ {"version":3,"sources":["../src/core/contributions/window/base-contribution.ts"],"names":[],"mappings":";;;;;;;;;;;;AAAA,yCAAuC;AACvC,yDAAsD;AAgB/C,IAAe,6BAA6B,GAA5C,MAAe,6BAA6B;IAKjD;QACE,IAAI,CAAC,IAAI,GAAG,qBAAS,CAAC,kBAAkB,EAAE,CAAC;IAC7C,CAAC;IAID,QAAQ,CAAC,EAAkB;QACzB,IAAI,CAAC,WAAW,GAAG,EAAE,CAAC;IACxB,CAAC;IAED,SAAS,CAAC,MAAe,EAAE,MAAe;QACxC,IAAI,MAAM,CAAC,GAAG,KAAK,IAAI,CAAC,IAAI,EAAE;YAC5B,MAAM,CAAC,gBAAgB,CAAC,IAAI,CAAC,CAAC;SAC/B;IACH,CAAC;IACD,OAAO,CAAC,GAAG,MAAW;QACpB,IAAI,CAAC,aAAa,EAAE,CAAC;IACvB,CAAC;CAqCF,CAAA;AA3DqB,6BAA6B;IADlD,IAAA,sBAAU,GAAE;;GACS,6BAA6B,CA2DlD;AA3DqB,sEAA6B","file":"base-contribution.js","sourcesContent":["import { injectable } from 'inversify';\nimport { Generator } from '../../../common/generator';\nimport type {\n ICanvas,\n IContext2d,\n IDomRectLike,\n EnvType,\n IGlobal,\n IWindowHandlerContribution,\n IWindow,\n IWindowParams\n} from '../../../interface';\nimport type { IBoundsLike } from '@visactor/vutils';\n\ntype OnchangeCbType = (params: { x: number; y: number; width: number; height: number }) => void;\n\n@injectable()\nexport abstract class BaseWindowHandlerContribution implements IWindowHandlerContribution {\n declare type: EnvType;\n\n declare _uid: number;\n\n constructor() {\n this._uid = Generator.GenAutoIncrementId();\n }\n\n protected declare _onChangeCb?: OnchangeCbType;\n\n onChange(cb: OnchangeCbType) {\n this._onChangeCb = cb;\n }\n\n configure(window: IWindow, global: IGlobal) {\n if (global.env === this.type) {\n window.setWindowHandler(this);\n }\n }\n release(...params: any) {\n this.releaseWindow();\n }\n abstract createWindow(params: IWindowParams): void;\n abstract releaseWindow(): void;\n abstract setDpr(dpr: number): void;\n abstract resizeWindow(width: number, height: number): void;\n abstract getContext(): IContext2d;\n abstract getWH(): { width: number; height: number };\n abstract getTitle(): string;\n abstract getXY(): { x: number; y: number };\n abstract getNativeHandler(): ICanvas | any;\n abstract getDpr(): number;\n abstract clearViewBox(vb: IBoundsLike, color?: string): void;\n abstract addEventListener<K extends keyof DocumentEventMap>(\n type: K,\n listener: (this: Document, ev: DocumentEventMap[K]) => any,\n options?: boolean | AddEventListenerOptions\n ): void;\n abstract addEventListener(\n type: string,\n listener: EventListenerOrEventListenerObject,\n options?: boolean | AddEventListenerOptions\n ): void;\n abstract removeEventListener<K extends keyof DocumentEventMap>(\n type: K,\n listener: (this: Document, ev: DocumentEventMap[K]) => any,\n options?: boolean | EventListenerOptions\n ): void;\n abstract removeEventListener(\n type: string,\n listener: EventListenerOrEventListenerObject,\n options?: boolean | EventListenerOptions\n ): void;\n abstract dispatchEvent(event: any): boolean;\n\n abstract getStyle(): CSSStyleDeclaration | Record<string, any>;\n abstract setStyle(style: CSSStyleDeclaration | Record<string, any>): void;\n abstract getBoundingClientRect(): IDomRectLike;\n}\n"]}
@@ -7,8 +7,6 @@ export declare class BrowserWindowHandlerContribution extends BaseWindowHandlerC
7
7
  type: EnvType;
8
8
  canvas: ICanvas;
9
9
  observer?: MutationObserver;
10
- protected _canvasIsIntersecting: boolean;
11
- protected _onVisibleChangeCb: (currentVisible: boolean) => void;
12
10
  get container(): HTMLElement | null;
13
11
  constructor(global: IGlobal);
14
12
  getTitle(): string;
@@ -21,9 +19,6 @@ export declare class BrowserWindowHandlerContribution extends BaseWindowHandlerC
21
19
  y: number;
22
20
  };
23
21
  createWindow(params: IWindowParams): void;
24
- protected postInit(): void;
25
- isElementVisible(el: HTMLElement): boolean;
26
- protected observerCanvas(): void;
27
22
  private createWindowByConfig;
28
23
  private createWindowByCanvas;
29
24
  releaseWindow(): void;
@@ -39,10 +34,4 @@ export declare class BrowserWindowHandlerContribution extends BaseWindowHandlerC
39
34
  setStyle(style: CSSStyleDeclaration | Record<string, any>): void;
40
35
  getBoundingClientRect(): IDomRectLike;
41
36
  clearViewBox(vb: IBoundsLike, color?: string): void;
42
- isVisible(bbox?: IBoundsLike): boolean;
43
- onVisibleChange(cb: (currentVisible: boolean) => void): void;
44
- getTopLeft(baseWindow?: boolean): {
45
- top: number;
46
- left: number;
47
- };
48
37
  }
@@ -23,7 +23,7 @@ let BrowserWindowHandlerContribution = class extends base_contribution_1.BaseWin
23
23
  return this.canvas.nativeCanvas.parentElement;
24
24
  }
25
25
  constructor(global) {
26
- super(), this.global = global, this.type = "browser", this._canvasIsIntersecting = !0;
26
+ super(), this.global = global, this.type = "browser";
27
27
  }
28
28
  getTitle() {
29
29
  return this.canvas.id.toString();
@@ -38,29 +38,7 @@ let BrowserWindowHandlerContribution = class extends base_contribution_1.BaseWin
38
38
  return this.canvas.nativeCanvas.getBoundingClientRect();
39
39
  }
40
40
  createWindow(params) {
41
- params.canvas ? this.createWindowByCanvas(params) : this.createWindowByConfig(params),
42
- this.postInit();
43
- }
44
- postInit() {
45
- try {
46
- this.observerCanvas();
47
- } catch (err) {
48
- console.error("发生错误,该环境不存在IntersectionObserver");
49
- }
50
- }
51
- isElementVisible(el) {
52
- const rect = el.getBoundingClientRect(), vWidth = window.innerWidth || document.documentElement.clientWidth, vHeight = window.innerHeight || document.documentElement.clientHeight;
53
- return !(rect.right < 0 || rect.bottom < 0 || rect.left > vWidth || rect.top > vHeight);
54
- }
55
- observerCanvas() {
56
- this._canvasIsIntersecting = this.isElementVisible(this.canvas.nativeCanvas);
57
- const observer = new IntersectionObserver(((entries, observer) => {
58
- entries.forEach((entry => {
59
- this._canvasIsIntersecting !== entry.isIntersecting ? (this._canvasIsIntersecting = entry.isIntersecting,
60
- this._onVisibleChangeCb && this._onVisibleChangeCb(entry.isIntersecting)) : this._canvasIsIntersecting = entry.isIntersecting;
61
- }));
62
- }));
63
- observer && observer.observe(this.canvas.nativeCanvas);
41
+ params.canvas ? this.createWindowByCanvas(params) : this.createWindowByConfig(params);
64
42
  }
65
43
  createWindowByConfig(params) {
66
44
  const nativeCanvas = this.global.createCanvas({
@@ -159,15 +137,6 @@ let BrowserWindowHandlerContribution = class extends base_contribution_1.BaseWin
159
137
  context.clearRect(vb.x1, vb.y1, vb.x2 - vb.x1, vb.y2 - vb.y1), color && (context.fillStyle = color,
160
138
  context.fillRect(vb.x1, vb.y1, vb.x2 - vb.x1, vb.y2 - vb.y1)), context.nativeContext.restore();
161
139
  }
162
- isVisible(bbox) {
163
- return this._canvasIsIntersecting;
164
- }
165
- onVisibleChange(cb) {
166
- this._onVisibleChangeCb = cb;
167
- }
168
- getTopLeft(baseWindow) {
169
- return this.global.getElementTopLeft(this.canvas.nativeCanvas, baseWindow);
170
- }
171
140
  };
172
141
 
173
142
  BrowserWindowHandlerContribution.env = "browser", BrowserWindowHandlerContribution = __decorate([ (0,
@@ -1 +1 @@
1
- {"version":3,"sources":["../src/core/contributions/window/browser-contribution.ts"],"names":[],"mappings":"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","file":"browser-contribution.js","sourcesContent":["import { inject, injectable } from 'inversify';\nimport { BrowserCanvas } from '../../../canvas/contributions/browser';\nimport { Generator } from '../../../common/generator';\nimport { BaseWindowHandlerContribution } from './base-contribution';\nimport type {\n IContext2d,\n ICanvas,\n IDomRectLike,\n EnvType,\n IGlobal,\n IWindowHandlerContribution,\n IWindowParams\n} from '../../../interface';\nimport type { IBoundsLike } from '@visactor/vutils';\nimport { VGlobal } from '../../../constants';\n\n@injectable()\nexport class BrowserWindowHandlerContribution\n extends BaseWindowHandlerContribution\n implements IWindowHandlerContribution\n{\n static env: EnvType = 'browser';\n\n type: EnvType = 'browser';\n\n canvas: ICanvas;\n\n observer?: MutationObserver;\n\n protected _canvasIsIntersecting: boolean;\n protected _onVisibleChangeCb: (currentVisible: boolean) => void;\n\n get container(): HTMLElement | null {\n return this.canvas.nativeCanvas.parentElement;\n }\n\n constructor(@inject(VGlobal) private readonly global: IGlobal) {\n super();\n this._canvasIsIntersecting = true;\n }\n\n getTitle(): string {\n return this.canvas.id.toString();\n }\n\n getWH(): { width: number; height: number } {\n return {\n width: this.canvas.width / (this.canvas.dpr || 1),\n height: this.canvas.height / (this.canvas.dpr || 1)\n };\n }\n\n getXY(): { x: number; y: number } {\n return this.canvas.nativeCanvas.getBoundingClientRect();\n }\n\n createWindow(params: IWindowParams): void {\n // 如果没有传入canvas,那么就创建一个canvas\n if (!params.canvas) {\n this.createWindowByConfig(params);\n } else {\n this.createWindowByCanvas(params);\n }\n\n this.postInit();\n\n // this.bindOnChangeEvent();\n }\n\n protected postInit() {\n try {\n this.observerCanvas();\n } catch (err) {\n console.error('发生错误,该环境不存在IntersectionObserver');\n }\n }\n\n isElementVisible(el: HTMLElement) {\n const rect = el.getBoundingClientRect();\n const vWidth = window.innerWidth || document.documentElement.clientWidth;\n const vHeight = window.innerHeight || document.documentElement.clientHeight;\n\n if (rect.right < 0 || rect.bottom < 0 || rect.left > vWidth || rect.top > vHeight) {\n return false;\n }\n\n return true;\n }\n\n protected observerCanvas() {\n this._canvasIsIntersecting = this.isElementVisible(this.canvas.nativeCanvas);\n const observer = new IntersectionObserver((entries, observer) => {\n entries.forEach(entry => {\n if (this._canvasIsIntersecting !== entry.isIntersecting) {\n this._canvasIsIntersecting = entry.isIntersecting;\n this._onVisibleChangeCb && this._onVisibleChangeCb(entry.isIntersecting);\n } else {\n this._canvasIsIntersecting = entry.isIntersecting;\n }\n });\n });\n if (!observer) {\n return;\n }\n observer.observe(this.canvas.nativeCanvas);\n }\n\n // private bindOnChangeEvent() {\n // const { nativeCanvas } = this.canvas;\n // const observer = new MutationObserver((mutations, observer) => {\n // mutations.forEach((mutaion) => {\n // console.log(mutaion);\n // })\n // });\n // observer.observe(nativeCanvas, { attributes: true, childList: true, subtree: true })\n // }\n\n private createWindowByConfig(params: IWindowParams) {\n // 创建canvas\n const nativeCanvas = this.global.createCanvas({\n width: params.width,\n height: params.height\n });\n // 保存到dom中\n let container: HTMLElement | null;\n if (typeof params.container === 'string') {\n container = this.global.getElementById(params.container);\n } else if (params.container) {\n container = params.container;\n } else {\n container = this.global.getRootElement();\n }\n if (!container) {\n throw new Error('发生错误,containerId可能传入有误');\n }\n\n if (!params.offscreen) {\n container.appendChild(nativeCanvas);\n } else {\n container = null;\n }\n\n // 绑定\n const options = {\n width: params.width,\n height: params.height,\n dpr: params.dpr,\n nativeCanvas,\n container,\n id: Generator.GenAutoIncrementId().toString(),\n canvasControled: true\n };\n this.canvas = new BrowserCanvas(options);\n // 应用位置属性\n // window上的不需要设置position\n // this.canvas.applyPosition();\n // this.canvas.resetStyle(options);\n }\n private createWindowByCanvas(params: IWindowParams) {\n // 获取canvas\n let canvas: HTMLCanvasElement | null;\n if (typeof params.canvas === 'string') {\n canvas = this.global.getElementById(params.canvas) as HTMLCanvasElement | null;\n if (!canvas) {\n throw new Error('canvasId 参数不正确,请确认canvas存在并插入dom');\n }\n } else {\n canvas = params!.canvas as HTMLCanvasElement | null;\n }\n if (!canvas) {\n throw new Error('发生错误,传入的canvas不正确');\n }\n\n // 如果没有传入wh,或者是不受控制的canvas,那就用canvas的原始wh\n let width = params.width;\n let height = params.height;\n if (width == null || height == null || !params.canvasControled) {\n const data = canvas.getBoundingClientRect();\n width = data.width;\n height = data.height;\n }\n // 如果没有dpr,就使用canvas的原始dpr\n let dpr = params.dpr;\n if (params.canvasControled === false) {\n if (dpr) {\n console.warn('canvasControled为false后,dpr参数将无效');\n }\n dpr = null;\n }\n if (dpr == null) {\n const ctx = canvas.getContext('2d');\n // 兼容XTable\n dpr = (ctx as any).pixelRatio ?? canvas.width / width;\n }\n this.canvas = new BrowserCanvas({\n width: width,\n height: height,\n dpr: dpr,\n nativeCanvas: canvas,\n canvasControled: params.canvasControled\n });\n // if (params.canvasControled) {\n // this.canvas.resetStyle({\n // width,\n // height,\n // dpr\n // });\n // }\n }\n releaseWindow(): void {\n this.canvas.release();\n }\n resizeWindow(width: number, height: number): void {\n this.canvas.resize(width, height);\n }\n setDpr(dpr: number): void {\n this.canvas.dpr = dpr;\n }\n\n getContext(): IContext2d {\n return this.canvas.getContext();\n }\n getNativeHandler(): ICanvas {\n return this.canvas;\n }\n getDpr(): number {\n return this.canvas.dpr;\n }\n\n addEventListener<K extends keyof DocumentEventMap>(\n type: K,\n listener: (this: Document, ev: DocumentEventMap[K]) => any,\n options?: boolean | AddEventListenerOptions\n ): void;\n addEventListener(\n type: string,\n listener: EventListenerOrEventListenerObject,\n options?: boolean | AddEventListenerOptions\n ): void {\n return (this.canvas.nativeCanvas as HTMLCanvasElement).addEventListener(type, listener, options);\n }\n removeEventListener<K extends keyof DocumentEventMap>(\n type: K,\n listener: (this: Document, ev: DocumentEventMap[K]) => any,\n options?: boolean | EventListenerOptions\n ): void;\n removeEventListener(\n type: string,\n listener: EventListenerOrEventListenerObject,\n options?: boolean | EventListenerOptions\n ): void {\n return (this.canvas.nativeCanvas as HTMLCanvasElement).removeEventListener(type, listener, options);\n }\n dispatchEvent(event: any): boolean {\n return (this.canvas.nativeCanvas as HTMLCanvasElement).dispatchEvent(event);\n }\n\n getStyle(): CSSStyleDeclaration | Record<string, any> {\n return this.canvas.nativeCanvas.style;\n }\n setStyle(style: CSSStyleDeclaration | Record<string, any>) {\n this.canvas.nativeCanvas.style = style;\n }\n\n getBoundingClientRect(): IDomRectLike {\n const c = this.canvas.nativeCanvas as HTMLCanvasElement;\n const wh = this.getWH();\n if (!c.parentElement) {\n return {\n x: 0,\n y: 0,\n width: wh.width,\n height: wh.height,\n left: 0,\n top: 0,\n right: 0,\n bottom: 0\n };\n }\n return this.canvas.nativeCanvas.getBoundingClientRect();\n }\n\n clearViewBox(vb: IBoundsLike, color?: string): void {\n const context = this.getContext();\n const dpr = this.getDpr();\n context.nativeContext.save();\n (context.nativeContext as CanvasRenderingContext2D).setTransform(dpr, 0, 0, dpr, 0, 0);\n context.clearRect(vb.x1, vb.y1, vb.x2 - vb.x1, vb.y2 - vb.y1);\n if (color) {\n context.fillStyle = color;\n context.fillRect(vb.x1, vb.y1, vb.x2 - vb.x1, vb.y2 - vb.y1);\n }\n context.nativeContext.restore();\n }\n\n isVisible(bbox?: IBoundsLike) {\n return this._canvasIsIntersecting;\n }\n\n onVisibleChange(cb: (currentVisible: boolean) => void) {\n this._onVisibleChangeCb = cb;\n }\n\n getTopLeft(baseWindow?: boolean): { top: number; left: number } {\n return this.global.getElementTopLeft(this.canvas.nativeCanvas, baseWindow);\n }\n}\n"]}
1
+ {"version":3,"sources":["../src/core/contributions/window/browser-contribution.ts"],"names":[],"mappings":"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","file":"browser-contribution.js","sourcesContent":["import { inject, injectable } from 'inversify';\nimport { BrowserCanvas } from '../../../canvas/contributions/browser';\nimport { Generator } from '../../../common/generator';\nimport { BaseWindowHandlerContribution } from './base-contribution';\nimport type {\n IContext2d,\n ICanvas,\n IDomRectLike,\n EnvType,\n IGlobal,\n IWindowHandlerContribution,\n IWindowParams\n} from '../../../interface';\nimport type { IBoundsLike } from '@visactor/vutils';\nimport { VGlobal } from '../../../constants';\n\n@injectable()\nexport class BrowserWindowHandlerContribution\n extends BaseWindowHandlerContribution\n implements IWindowHandlerContribution\n{\n static env: EnvType = 'browser';\n\n type: EnvType = 'browser';\n\n canvas: ICanvas;\n\n observer?: MutationObserver;\n\n get container(): HTMLElement | null {\n return this.canvas.nativeCanvas.parentElement;\n }\n\n constructor(@inject(VGlobal) private readonly global: IGlobal) {\n super();\n }\n\n getTitle(): string {\n return this.canvas.id.toString();\n }\n\n getWH(): { width: number; height: number } {\n return {\n width: this.canvas.width / (this.canvas.dpr || 1),\n height: this.canvas.height / (this.canvas.dpr || 1)\n };\n }\n\n getXY(): { x: number; y: number } {\n return this.canvas.nativeCanvas.getBoundingClientRect();\n }\n\n createWindow(params: IWindowParams): void {\n // 如果没有传入canvas,那么就创建一个canvas\n if (!params.canvas) {\n this.createWindowByConfig(params);\n } else {\n this.createWindowByCanvas(params);\n }\n\n // this.bindOnChangeEvent();\n }\n\n // private bindOnChangeEvent() {\n // const { nativeCanvas } = this.canvas;\n // const observer = new MutationObserver((mutations, observer) => {\n // mutations.forEach((mutaion) => {\n // console.log(mutaion);\n // })\n // });\n // observer.observe(nativeCanvas, { attributes: true, childList: true, subtree: true })\n // }\n\n private createWindowByConfig(params: IWindowParams) {\n // 创建canvas\n const nativeCanvas = this.global.createCanvas({\n width: params.width,\n height: params.height\n });\n // 保存到dom中\n let container: HTMLElement | null;\n if (typeof params.container === 'string') {\n container = this.global.getElementById(params.container);\n } else if (params.container) {\n container = params.container;\n } else {\n container = this.global.getRootElement();\n }\n if (!container) {\n throw new Error('发生错误,containerId可能传入有误');\n }\n\n if (!params.offscreen) {\n container.appendChild(nativeCanvas);\n } else {\n container = null;\n }\n\n // 绑定\n const options = {\n width: params.width,\n height: params.height,\n dpr: params.dpr,\n nativeCanvas,\n container,\n id: Generator.GenAutoIncrementId().toString(),\n canvasControled: true\n };\n this.canvas = new BrowserCanvas(options);\n // 应用位置属性\n // window上的不需要设置position\n // this.canvas.applyPosition();\n // this.canvas.resetStyle(options);\n }\n private createWindowByCanvas(params: IWindowParams) {\n // 获取canvas\n let canvas: HTMLCanvasElement | null;\n if (typeof params.canvas === 'string') {\n canvas = this.global.getElementById(params.canvas) as HTMLCanvasElement | null;\n if (!canvas) {\n throw new Error('canvasId 参数不正确,请确认canvas存在并插入dom');\n }\n } else {\n canvas = params!.canvas as HTMLCanvasElement | null;\n }\n if (!canvas) {\n throw new Error('发生错误,传入的canvas不正确');\n }\n\n // 如果没有传入wh,或者是不受控制的canvas,那就用canvas的原始wh\n let width = params.width;\n let height = params.height;\n if (width == null || height == null || !params.canvasControled) {\n const data = canvas.getBoundingClientRect();\n width = data.width;\n height = data.height;\n }\n // 如果没有dpr,就使用canvas的原始dpr\n let dpr = params.dpr;\n if (params.canvasControled === false) {\n if (dpr) {\n console.warn('canvasControled为false后,dpr参数将无效');\n }\n dpr = null;\n }\n if (dpr == null) {\n const ctx = canvas.getContext('2d');\n // 兼容XTable\n dpr = (ctx as any).pixelRatio ?? canvas.width / width;\n }\n this.canvas = new BrowserCanvas({\n width: width,\n height: height,\n dpr: dpr,\n nativeCanvas: canvas,\n canvasControled: params.canvasControled\n });\n // if (params.canvasControled) {\n // this.canvas.resetStyle({\n // width,\n // height,\n // dpr\n // });\n // }\n }\n releaseWindow(): void {\n this.canvas.release();\n }\n resizeWindow(width: number, height: number): void {\n this.canvas.resize(width, height);\n }\n setDpr(dpr: number): void {\n this.canvas.dpr = dpr;\n }\n\n getContext(): IContext2d {\n return this.canvas.getContext();\n }\n getNativeHandler(): ICanvas {\n return this.canvas;\n }\n getDpr(): number {\n return this.canvas.dpr;\n }\n\n addEventListener<K extends keyof DocumentEventMap>(\n type: K,\n listener: (this: Document, ev: DocumentEventMap[K]) => any,\n options?: boolean | AddEventListenerOptions\n ): void;\n addEventListener(\n type: string,\n listener: EventListenerOrEventListenerObject,\n options?: boolean | AddEventListenerOptions\n ): void {\n return (this.canvas.nativeCanvas as HTMLCanvasElement).addEventListener(type, listener, options);\n }\n removeEventListener<K extends keyof DocumentEventMap>(\n type: K,\n listener: (this: Document, ev: DocumentEventMap[K]) => any,\n options?: boolean | EventListenerOptions\n ): void;\n removeEventListener(\n type: string,\n listener: EventListenerOrEventListenerObject,\n options?: boolean | EventListenerOptions\n ): void {\n return (this.canvas.nativeCanvas as HTMLCanvasElement).removeEventListener(type, listener, options);\n }\n dispatchEvent(event: any): boolean {\n return (this.canvas.nativeCanvas as HTMLCanvasElement).dispatchEvent(event);\n }\n\n getStyle(): CSSStyleDeclaration | Record<string, any> {\n return this.canvas.nativeCanvas.style;\n }\n setStyle(style: CSSStyleDeclaration | Record<string, any>) {\n this.canvas.nativeCanvas.style = style;\n }\n\n getBoundingClientRect(): IDomRectLike {\n const c = this.canvas.nativeCanvas as HTMLCanvasElement;\n const wh = this.getWH();\n if (!c.parentElement) {\n return {\n x: 0,\n y: 0,\n width: wh.width,\n height: wh.height,\n left: 0,\n top: 0,\n right: 0,\n bottom: 0\n };\n }\n return this.canvas.nativeCanvas.getBoundingClientRect();\n }\n\n clearViewBox(vb: IBoundsLike, color?: string): void {\n const context = this.getContext();\n const dpr = this.getDpr();\n context.nativeContext.save();\n (context.nativeContext as CanvasRenderingContext2D).setTransform(dpr, 0, 0, dpr, 0, 0);\n context.clearRect(vb.x1, vb.y1, vb.x2 - vb.x1, vb.y2 - vb.y1);\n if (color) {\n context.fillStyle = color;\n context.fillRect(vb.x1, vb.y1, vb.x2 - vb.x1, vb.y2 - vb.y1);\n }\n context.nativeContext.restore();\n }\n}\n"]}
@@ -1,5 +1,4 @@
1
- import type { CreateDOMParamsType, EnvType, IContributionProvider, ICreateCanvasParams, IEnvContribution, IEnvParamsMap, IGlobal, ISyncHook } from '../interface';
2
- import type { IAABBBoundsLike } from '@visactor/vutils';
1
+ import type { EnvType, IContributionProvider, ICreateCanvasParams, IEnvContribution, IEnvParamsMap, IGlobal, ISyncHook } from '../interface';
3
2
  export declare class DefaultGlobal implements IGlobal {
4
3
  protected readonly contributions: IContributionProvider<IEnvContribution>;
5
4
  private _env;
@@ -58,13 +57,4 @@ export declare class DefaultGlobal implements IGlobal {
58
57
  }>;
59
58
  isChrome(): boolean;
60
59
  isSafari(): boolean;
61
- getNativeAABBBounds(dom: string | HTMLElement | any): IAABBBoundsLike;
62
- removeDom(dom: HTMLElement): boolean;
63
- createDom(params: CreateDOMParamsType): HTMLElement | null;
64
- getElementTop(dom: any, baseWindow?: boolean): number;
65
- getElementLeft(dom: any, baseWindow?: boolean): number;
66
- getElementTopLeft(dom: any, baseWindow?: boolean): {
67
- top: number;
68
- left: number;
69
- };
70
60
  }
@@ -134,24 +134,6 @@ let DefaultGlobal = class {
134
134
  isSafari() {
135
135
  return this._env || this.setEnv("browser"), "browser" === this._env && /Safari/.test(navigator.userAgent) && !/Chrome/.test(navigator.userAgent);
136
136
  }
137
- getNativeAABBBounds(dom) {
138
- return this._env || this.setEnv("browser"), this.envContribution.getNativeAABBBounds(dom);
139
- }
140
- removeDom(dom) {
141
- return this._env || this.setEnv("browser"), this.envContribution.removeDom(dom);
142
- }
143
- createDom(params) {
144
- return this._env || this.setEnv("browser"), this.envContribution.createDom(params);
145
- }
146
- getElementTop(dom, baseWindow = !1) {
147
- return this._env || this.setEnv("browser"), this.envContribution.getElementTop(dom, baseWindow);
148
- }
149
- getElementLeft(dom, baseWindow = !1) {
150
- return this._env || this.setEnv("browser"), this.envContribution.getElementLeft(dom, baseWindow);
151
- }
152
- getElementTopLeft(dom, baseWindow = !1) {
153
- return this._env || this.setEnv("browser"), this.envContribution.getElementTopLeft(dom, baseWindow);
154
- }
155
137
  };
156
138
 
157
139
  DefaultGlobal = __decorate([ (0, inversify_1.injectable)(), __param(0, (0, inversify_1.inject)(contribution_provider_1.ContributionProvider)), __param(0, (0,
@@ -1 +1 @@
1
- {"version":3,"sources":["../src/core/global.ts"],"names":[],"mappings":"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","file":"global.js","sourcesContent":["import { inject, injectable, named } from 'inversify';\n// eslint-disable-next-line @typescript-eslint/consistent-type-imports\nimport { ContributionProvider } from '../common/contribution-provider';\nimport type {\n CreateDOMParamsType,\n EnvType,\n IContributionProvider,\n ICreateCanvasParams,\n IEnvContribution,\n IEnvParamsMap,\n IGlobal,\n ISyncHook\n} from '../interface';\nimport { SyncHook } from '../tapable';\nimport { EnvContribution } from '../constants';\nimport type { IAABBBoundsLike } from '@visactor/vutils';\n\nconst defaultEnv: EnvType = 'browser';\n@injectable()\nexport class DefaultGlobal implements IGlobal {\n private _env: EnvType;\n get env(): EnvType {\n return this._env;\n }\n private envContribution: IEnvContribution;\n\n get devicePixelRatio(): number {\n if (!this._env) {\n this.setEnv(defaultEnv);\n }\n return this.envContribution.getDevicePixelRatio();\n }\n\n get supportEvent(): boolean {\n if (!this._env) {\n this.setEnv(defaultEnv);\n }\n return this.envContribution.supportEvent;\n }\n\n get supportsTouchEvents(): boolean {\n if (!this._env) {\n this.setEnv(defaultEnv);\n }\n return this.envContribution.supportsTouchEvents;\n }\n\n get supportsPointerEvents(): boolean {\n if (!this._env) {\n this.setEnv(defaultEnv);\n }\n return this.envContribution.supportsPointerEvents;\n }\n\n get supportsMouseEvents(): boolean {\n if (!this._env) {\n this.setEnv(defaultEnv);\n }\n return this.envContribution.supportsMouseEvents;\n }\n\n get applyStyles(): boolean {\n if (!this._env) {\n this.setEnv(defaultEnv);\n }\n return this.envContribution.applyStyles;\n }\n\n envParams?: any;\n declare measureTextMethod: 'native' | 'simple' | 'quick';\n declare hooks: {\n onSetEnv: ISyncHook<[EnvType | undefined, EnvType, IGlobal]>;\n };\n\n constructor(\n // todo: 不需要创建,动态获取就行?\n @inject(ContributionProvider)\n @named(EnvContribution)\n protected readonly contributions: IContributionProvider<IEnvContribution>\n ) {\n this.hooks = {\n onSetEnv: new SyncHook<[EnvType | undefined, EnvType, IGlobal]>(['lastEnv', 'env', 'global'])\n };\n this.measureTextMethod = 'native';\n }\n\n protected bindContribution(params?: any): void | Promise<any> {\n const promiseArr: any[] = [];\n this.contributions.getContributions().forEach(contribution => {\n const data = contribution.configure(this, params);\n if ((data as any) && (data as any).then) {\n promiseArr.push(data);\n }\n });\n if (promiseArr.length) {\n return Promise.all(promiseArr);\n }\n }\n\n /**\n * 获取动态canvas的数量,offscreenCanvas或者framebuffer\n */\n getDynamicCanvasCount(): number {\n if (!this._env) {\n this.setEnv(defaultEnv);\n }\n return this.envContribution.getDynamicCanvasCount();\n }\n\n /**\n * 获取静态canvas的数量,纯粹canvas\n */\n getStaticCanvasCount(): number {\n if (!this._env) {\n this.setEnv(defaultEnv);\n }\n return this.envContribution.getStaticCanvasCount();\n }\n\n /**\n * 设置当前环境\n * @param env\n * @param params 环境参数\n * 默认重复设置不生效,但如果params.force为true那么每次设置env都会重复执行初始化逻辑\n * @returns\n */\n setEnv(env: EnvType, params?: IEnvParamsMap[EnvType]): void | Promise<any> {\n // 如果环境设置过了,但是没有设置force为true,就直接跳过\n if (!(params && params.force === true) && this._env === env) {\n return;\n }\n this.deactiveCurrentEnv();\n return this.activeEnv(env, params);\n }\n\n protected deactiveCurrentEnv() {\n this.envContribution && this.envContribution.release();\n }\n\n protected activeEnv(env: EnvType, params?: IEnvParamsMap[EnvType]): void | Promise<any> {\n const lastEnv = this._env;\n this._env = env;\n const data = this.bindContribution(params);\n if (data && data.then) {\n return data.then(() => {\n this.envParams = params;\n this.hooks.onSetEnv.call(lastEnv, env, this);\n });\n }\n this.envParams = params;\n this.hooks.onSetEnv.call(lastEnv, env, this);\n }\n\n setActiveEnvContribution(contribution: IEnvContribution) {\n this.envContribution = contribution;\n }\n\n createCanvas(params: ICreateCanvasParams) {\n if (!this._env) {\n this.setEnv(defaultEnv);\n }\n return this.envContribution.createCanvas(params);\n }\n\n createOffscreenCanvas(params: ICreateCanvasParams) {\n if (!this._env) {\n this.setEnv(defaultEnv);\n }\n return this.envContribution.createOffscreenCanvas(params);\n }\n\n releaseCanvas(canvas: HTMLCanvasElement | string | any) {\n if (!this._env) {\n this.setEnv(defaultEnv);\n }\n return this.envContribution.releaseCanvas(canvas);\n }\n\n addEventListener<K extends keyof DocumentEventMap>(\n type: K,\n listener: (this: Document, ev: DocumentEventMap[K]) => any,\n options?: boolean | AddEventListenerOptions\n ): void;\n addEventListener(\n type: string,\n listener: EventListenerOrEventListenerObject,\n options?: boolean | AddEventListenerOptions\n ): void {\n if (!this._env) {\n this.setEnv(defaultEnv);\n }\n return this.envContribution.addEventListener(type, listener, options);\n }\n removeEventListener<K extends keyof DocumentEventMap>(\n type: K,\n listener: (this: Document, ev: DocumentEventMap[K]) => any,\n options?: boolean | EventListenerOptions\n ): void;\n removeEventListener(\n type: string,\n listener: EventListenerOrEventListenerObject,\n options?: boolean | EventListenerOptions\n ): void {\n if (!this._env) {\n this.setEnv(defaultEnv);\n }\n return this.envContribution.removeEventListener(type, listener, options);\n }\n dispatchEvent(event: any): boolean {\n if (!this._env) {\n this.setEnv(defaultEnv);\n }\n return this.envContribution.dispatchEvent(event);\n }\n\n getRequestAnimationFrame() {\n if (!this._env) {\n this.setEnv(defaultEnv);\n }\n return this.envContribution.getRequestAnimationFrame();\n }\n\n getCancelAnimationFrame() {\n if (!this._env) {\n this.setEnv(defaultEnv);\n }\n return this.envContribution.getCancelAnimationFrame();\n }\n\n getElementById(str: string): HTMLElement | null {\n if (!this._env) {\n this.setEnv(defaultEnv);\n }\n if (!this.envContribution.getElementById) {\n return null;\n }\n return this.envContribution.getElementById(str);\n }\n\n getRootElement(): HTMLElement | null {\n if (!this._env) {\n this.setEnv(defaultEnv);\n }\n if (!this.envContribution.getRootElement) {\n return null;\n }\n return this.envContribution.getRootElement();\n }\n\n getDocument(): Document | null {\n if (!this._env) {\n this.setEnv(defaultEnv);\n }\n if (!this.envContribution.getDocument) {\n return null;\n }\n return this.envContribution.getDocument();\n }\n\n mapToCanvasPoint(event: any, domElement?: any) {\n if (!this._env) {\n this.setEnv(defaultEnv);\n }\n if (!this.envContribution.mapToCanvasPoint) {\n return null;\n }\n return this.envContribution.mapToCanvasPoint(event, domElement);\n }\n\n loadImage(url: string) {\n if (!this._env) {\n this.setEnv('browser');\n }\n return this.envContribution.loadImage(url);\n }\n\n loadSvg(str: string) {\n if (!this._env) {\n this.setEnv('browser');\n }\n return this.envContribution.loadSvg(str);\n }\n\n loadJson(url: string) {\n if (!this._env) {\n this.setEnv('browser');\n }\n return this.envContribution.loadJson(url);\n }\n\n loadArrayBuffer(url: string) {\n if (!this._env) {\n this.setEnv('browser');\n }\n return this.envContribution.loadArrayBuffer(url);\n }\n\n loadBlob(url: string) {\n if (!this._env) {\n this.setEnv('browser');\n }\n return this.envContribution.loadBlob(url);\n }\n\n isChrome(): boolean {\n if (!this._env) {\n this.setEnv('browser');\n }\n return this._env === 'browser' && navigator.userAgent.indexOf('Chrome') > -1;\n }\n\n isSafari(): boolean {\n if (!this._env) {\n this.setEnv('browser');\n }\n return this._env === 'browser' && /Safari/.test(navigator.userAgent) && !/Chrome/.test(navigator.userAgent);\n }\n\n getNativeAABBBounds(dom: string | HTMLElement | any): IAABBBoundsLike {\n if (!this._env) {\n this.setEnv('browser');\n }\n return this.envContribution.getNativeAABBBounds(dom);\n }\n\n removeDom(dom: HTMLElement): boolean {\n if (!this._env) {\n this.setEnv('browser');\n }\n return this.envContribution.removeDom(dom);\n }\n\n createDom(params: CreateDOMParamsType): HTMLElement | null {\n if (!this._env) {\n this.setEnv('browser');\n }\n return this.envContribution.createDom(params);\n }\n\n getElementTop(dom: any, baseWindow: boolean = false): number {\n if (!this._env) {\n this.setEnv('browser');\n }\n return this.envContribution.getElementTop(dom, baseWindow);\n }\n getElementLeft(dom: any, baseWindow: boolean = false): number {\n if (!this._env) {\n this.setEnv('browser');\n }\n return this.envContribution.getElementLeft(dom, baseWindow);\n }\n getElementTopLeft(dom: any, baseWindow: boolean = false): { top: number; left: number } {\n if (!this._env) {\n this.setEnv('browser');\n }\n return this.envContribution.getElementTopLeft(dom, baseWindow);\n }\n}\n"]}
1
+ {"version":3,"sources":["../src/core/global.ts"],"names":[],"mappings":"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","file":"global.js","sourcesContent":["import { inject, injectable, named } from 'inversify';\n// eslint-disable-next-line @typescript-eslint/consistent-type-imports\nimport { ContributionProvider } from '../common/contribution-provider';\nimport type {\n EnvType,\n IContributionProvider,\n ICreateCanvasParams,\n IEnvContribution,\n IEnvParamsMap,\n IGlobal,\n ISyncHook\n} from '../interface';\nimport { SyncHook } from '../tapable';\nimport { EnvContribution } from '../constants';\n\nconst defaultEnv: EnvType = 'browser';\n@injectable()\nexport class DefaultGlobal implements IGlobal {\n private _env: EnvType;\n get env(): EnvType {\n return this._env;\n }\n private envContribution: IEnvContribution;\n\n get devicePixelRatio(): number {\n if (!this._env) {\n this.setEnv(defaultEnv);\n }\n return this.envContribution.getDevicePixelRatio();\n }\n\n get supportEvent(): boolean {\n if (!this._env) {\n this.setEnv(defaultEnv);\n }\n return this.envContribution.supportEvent;\n }\n\n get supportsTouchEvents(): boolean {\n if (!this._env) {\n this.setEnv(defaultEnv);\n }\n return this.envContribution.supportsTouchEvents;\n }\n\n get supportsPointerEvents(): boolean {\n if (!this._env) {\n this.setEnv(defaultEnv);\n }\n return this.envContribution.supportsPointerEvents;\n }\n\n get supportsMouseEvents(): boolean {\n if (!this._env) {\n this.setEnv(defaultEnv);\n }\n return this.envContribution.supportsMouseEvents;\n }\n\n get applyStyles(): boolean {\n if (!this._env) {\n this.setEnv(defaultEnv);\n }\n return this.envContribution.applyStyles;\n }\n\n envParams?: any;\n declare measureTextMethod: 'native' | 'simple' | 'quick';\n declare hooks: {\n onSetEnv: ISyncHook<[EnvType | undefined, EnvType, IGlobal]>;\n };\n\n constructor(\n // todo: 不需要创建,动态获取就行?\n @inject(ContributionProvider)\n @named(EnvContribution)\n protected readonly contributions: IContributionProvider<IEnvContribution>\n ) {\n this.hooks = {\n onSetEnv: new SyncHook<[EnvType | undefined, EnvType, IGlobal]>(['lastEnv', 'env', 'global'])\n };\n this.measureTextMethod = 'native';\n }\n\n protected bindContribution(params?: any): void | Promise<any> {\n const promiseArr: any[] = [];\n this.contributions.getContributions().forEach(contribution => {\n const data = contribution.configure(this, params);\n if ((data as any) && (data as any).then) {\n promiseArr.push(data);\n }\n });\n if (promiseArr.length) {\n return Promise.all(promiseArr);\n }\n }\n\n /**\n * 获取动态canvas的数量,offscreenCanvas或者framebuffer\n */\n getDynamicCanvasCount(): number {\n if (!this._env) {\n this.setEnv(defaultEnv);\n }\n return this.envContribution.getDynamicCanvasCount();\n }\n\n /**\n * 获取静态canvas的数量,纯粹canvas\n */\n getStaticCanvasCount(): number {\n if (!this._env) {\n this.setEnv(defaultEnv);\n }\n return this.envContribution.getStaticCanvasCount();\n }\n\n /**\n * 设置当前环境\n * @param env\n * @param params 环境参数\n * 默认重复设置不生效,但如果params.force为true那么每次设置env都会重复执行初始化逻辑\n * @returns\n */\n setEnv(env: EnvType, params?: IEnvParamsMap[EnvType]): void | Promise<any> {\n // 如果环境设置过了,但是没有设置force为true,就直接跳过\n if (!(params && params.force === true) && this._env === env) {\n return;\n }\n this.deactiveCurrentEnv();\n return this.activeEnv(env, params);\n }\n\n protected deactiveCurrentEnv() {\n this.envContribution && this.envContribution.release();\n }\n\n protected activeEnv(env: EnvType, params?: IEnvParamsMap[EnvType]): void | Promise<any> {\n const lastEnv = this._env;\n this._env = env;\n const data = this.bindContribution(params);\n if (data && data.then) {\n return data.then(() => {\n this.envParams = params;\n this.hooks.onSetEnv.call(lastEnv, env, this);\n });\n }\n this.envParams = params;\n this.hooks.onSetEnv.call(lastEnv, env, this);\n }\n\n setActiveEnvContribution(contribution: IEnvContribution) {\n this.envContribution = contribution;\n }\n\n createCanvas(params: ICreateCanvasParams) {\n if (!this._env) {\n this.setEnv(defaultEnv);\n }\n return this.envContribution.createCanvas(params);\n }\n\n createOffscreenCanvas(params: ICreateCanvasParams) {\n if (!this._env) {\n this.setEnv(defaultEnv);\n }\n return this.envContribution.createOffscreenCanvas(params);\n }\n\n releaseCanvas(canvas: HTMLCanvasElement | string | any) {\n if (!this._env) {\n this.setEnv(defaultEnv);\n }\n return this.envContribution.releaseCanvas(canvas);\n }\n\n addEventListener<K extends keyof DocumentEventMap>(\n type: K,\n listener: (this: Document, ev: DocumentEventMap[K]) => any,\n options?: boolean | AddEventListenerOptions\n ): void;\n addEventListener(\n type: string,\n listener: EventListenerOrEventListenerObject,\n options?: boolean | AddEventListenerOptions\n ): void {\n if (!this._env) {\n this.setEnv(defaultEnv);\n }\n return this.envContribution.addEventListener(type, listener, options);\n }\n removeEventListener<K extends keyof DocumentEventMap>(\n type: K,\n listener: (this: Document, ev: DocumentEventMap[K]) => any,\n options?: boolean | EventListenerOptions\n ): void;\n removeEventListener(\n type: string,\n listener: EventListenerOrEventListenerObject,\n options?: boolean | EventListenerOptions\n ): void {\n if (!this._env) {\n this.setEnv(defaultEnv);\n }\n return this.envContribution.removeEventListener(type, listener, options);\n }\n dispatchEvent(event: any): boolean {\n if (!this._env) {\n this.setEnv(defaultEnv);\n }\n return this.envContribution.dispatchEvent(event);\n }\n\n getRequestAnimationFrame() {\n if (!this._env) {\n this.setEnv(defaultEnv);\n }\n return this.envContribution.getRequestAnimationFrame();\n }\n\n getCancelAnimationFrame() {\n if (!this._env) {\n this.setEnv(defaultEnv);\n }\n return this.envContribution.getCancelAnimationFrame();\n }\n\n getElementById(str: string): HTMLElement | null {\n if (!this._env) {\n this.setEnv(defaultEnv);\n }\n if (!this.envContribution.getElementById) {\n return null;\n }\n return this.envContribution.getElementById(str);\n }\n\n getRootElement(): HTMLElement | null {\n if (!this._env) {\n this.setEnv(defaultEnv);\n }\n if (!this.envContribution.getRootElement) {\n return null;\n }\n return this.envContribution.getRootElement();\n }\n\n getDocument(): Document | null {\n if (!this._env) {\n this.setEnv(defaultEnv);\n }\n if (!this.envContribution.getDocument) {\n return null;\n }\n return this.envContribution.getDocument();\n }\n\n mapToCanvasPoint(event: any, domElement?: any) {\n if (!this._env) {\n this.setEnv(defaultEnv);\n }\n if (!this.envContribution.mapToCanvasPoint) {\n return null;\n }\n return this.envContribution.mapToCanvasPoint(event, domElement);\n }\n\n loadImage(url: string) {\n if (!this._env) {\n this.setEnv('browser');\n }\n return this.envContribution.loadImage(url);\n }\n\n loadSvg(str: string) {\n if (!this._env) {\n this.setEnv('browser');\n }\n return this.envContribution.loadSvg(str);\n }\n\n loadJson(url: string) {\n if (!this._env) {\n this.setEnv('browser');\n }\n return this.envContribution.loadJson(url);\n }\n\n loadArrayBuffer(url: string) {\n if (!this._env) {\n this.setEnv('browser');\n }\n return this.envContribution.loadArrayBuffer(url);\n }\n\n loadBlob(url: string) {\n if (!this._env) {\n this.setEnv('browser');\n }\n return this.envContribution.loadBlob(url);\n }\n\n isChrome(): boolean {\n if (!this._env) {\n this.setEnv('browser');\n }\n return this._env === 'browser' && navigator.userAgent.indexOf('Chrome') > -1;\n }\n\n isSafari(): boolean {\n if (!this._env) {\n this.setEnv('browser');\n }\n return this._env === 'browser' && /Safari/.test(navigator.userAgent) && !/Chrome/.test(navigator.userAgent);\n }\n}\n"]}
@@ -30,9 +30,7 @@ export declare class DefaultTransformUtil implements ITransformUtil {
30
30
  init(origin: TransformType): this;
31
31
  fromMatrix(source: IMatrix, target: IMatrix): this;
32
32
  private scaleMatrix;
33
- private rotateMatrix;
34
33
  scale(sx: number, sy: number, center?: IPointLike): this;
35
- rotate(angle: number, center?: IPointLike): this;
36
34
  private translateMatrix;
37
35
  translate(dx: number, dy: number): this;
38
36
  simplify(target: TransformType): this;