@visactor/vstory 0.0.5 → 0.0.6

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (404) hide show
  1. package/README.md +13 -0
  2. package/cjs/constants/character.d.ts +2 -1
  3. package/cjs/constants/character.js +1 -1
  4. package/cjs/constants/character.js.map +1 -1
  5. package/cjs/dsl/types/index.d.ts +1 -0
  6. package/cjs/dsl/types/index.js.map +1 -1
  7. package/cjs/dsl/utils/datum.js +2 -1
  8. package/cjs/dsl/utils/flicker.js +1 -2
  9. package/cjs/edit/const.d.ts +1 -3
  10. package/cjs/edit/const.js +1 -0
  11. package/cjs/edit/const.js.map +1 -1
  12. package/cjs/edit/edit-action.d.ts +9 -0
  13. package/cjs/edit/edit-action.js +61 -5
  14. package/cjs/edit/edit-action.js.map +1 -1
  15. package/cjs/edit/edit-component/base-selection.d.ts +8 -3
  16. package/cjs/edit/edit-component/base-selection.js +31 -5
  17. package/cjs/edit/edit-component/base-selection.js.map +1 -1
  18. package/cjs/edit/edit-component/box-selection.js +1 -1
  19. package/cjs/edit/edit-component/chart-selection.d.ts +15 -0
  20. package/cjs/edit/edit-component/chart-selection.js +39 -0
  21. package/cjs/edit/edit-component/chart-selection.js.map +1 -0
  22. package/cjs/edit/edit-component/common.d.ts +1 -11
  23. package/cjs/edit/edit-component/common.js +1 -30
  24. package/cjs/edit/edit-component/common.js.map +1 -1
  25. package/cjs/edit/edit-component/edit-control/richtext-control.d.ts +19 -0
  26. package/cjs/edit/edit-component/edit-control/richtext-control.js +34 -0
  27. package/cjs/edit/edit-component/edit-control/richtext-control.js.map +1 -0
  28. package/cjs/edit/edit-component/edit-control/richtext-transform-control.d.ts +2 -3
  29. package/cjs/edit/edit-component/edit-control/richtext-transform-control.js +30 -32
  30. package/cjs/edit/edit-component/edit-control/richtext-transform-control.js.map +1 -1
  31. package/cjs/edit/edit-component/edit-control/transform-control.d.ts +4 -2
  32. package/cjs/edit/edit-component/edit-control/transform-control.js +10 -6
  33. package/cjs/edit/edit-component/edit-control/transform-control.js.map +1 -1
  34. package/cjs/edit/edit-component/edit-control/transform-drag.d.ts +1 -0
  35. package/cjs/edit/edit-component/edit-control/transform-drag.js +4 -2
  36. package/cjs/edit/edit-component/edit-control/transform-drag.js.map +1 -1
  37. package/cjs/edit/edit-component/image-selection.d.ts +1 -2
  38. package/cjs/edit/edit-component/image-selection.js +3 -6
  39. package/cjs/edit/edit-component/image-selection.js.map +1 -1
  40. package/cjs/edit/edit-component/index.js +4 -5
  41. package/cjs/edit/edit-component/index.js.map +1 -1
  42. package/cjs/edit/edit-component/mixin/richtext.d.ts +21 -0
  43. package/cjs/edit/edit-component/mixin/richtext.js +26 -0
  44. package/cjs/edit/edit-component/mixin/richtext.js.map +1 -0
  45. package/cjs/edit/edit-component/rect-selection.d.ts +8 -12
  46. package/cjs/edit/edit-component/rect-selection.js +12 -17
  47. package/cjs/edit/edit-component/rect-selection.js.map +1 -1
  48. package/cjs/edit/edit-component/richtext-selection-common.d.ts +19 -0
  49. package/cjs/edit/edit-component/richtext-selection-common.js +35 -0
  50. package/cjs/edit/edit-component/richtext-selection-common.js.map +1 -0
  51. package/cjs/edit/edit-component/richtext-selection.d.ts +0 -2
  52. package/cjs/edit/edit-component/richtext-selection.js +0 -6
  53. package/cjs/edit/edit-component/richtext-selection.js.map +1 -1
  54. package/cjs/edit/edit-component/shape-selection.d.ts +11 -0
  55. package/cjs/edit/edit-component/shape-selection.js +36 -0
  56. package/cjs/edit/edit-component/shape-selection.js.map +1 -0
  57. package/cjs/edit/edit-component/text-selection.d.ts +0 -3
  58. package/cjs/edit/edit-component/text-selection.js +2 -9
  59. package/cjs/edit/edit-component/text-selection.js.map +1 -1
  60. package/cjs/edit/edit.d.ts +5 -2
  61. package/cjs/edit/edit.js +20 -5
  62. package/cjs/edit/edit.js.map +1 -1
  63. package/cjs/edit/interface.d.ts +6 -1
  64. package/cjs/edit/interface.js +3 -1
  65. package/cjs/edit/interface.js.map +1 -1
  66. package/cjs/index.d.ts +3 -0
  67. package/cjs/index.js +3 -1
  68. package/cjs/index.js.map +1 -1
  69. package/cjs/player/interface/player.js +1 -1
  70. package/cjs/player/interface/scheduler.js +1 -1
  71. package/cjs/player/player.js +6 -2
  72. package/cjs/player/player.js.map +1 -1
  73. package/cjs/player/processor/chart/common/chartAppear.d.ts +2 -2
  74. package/cjs/player/processor/chart/common/chartAppear.js.map +1 -1
  75. package/cjs/player/processor/chart/common/commonAppear.d.ts +3 -3
  76. package/cjs/player/processor/chart/common/commonAppear.js.map +1 -1
  77. package/cjs/player/processor/chart/component/axisAppear.d.ts +2 -2
  78. package/cjs/player/processor/chart/component/axisAppear.js.map +1 -1
  79. package/cjs/player/processor/chart/component/commonAppear.d.ts +3 -3
  80. package/cjs/player/processor/chart/component/commonAppear.js.map +1 -1
  81. package/cjs/player/processor/chart/component/labelAppear.d.ts +2 -2
  82. package/cjs/player/processor/chart/component/labelAppear.js.map +1 -1
  83. package/cjs/player/processor/chart/rankingBar/rankingBar.d.ts +29 -0
  84. package/cjs/player/processor/chart/rankingBar/rankingBar.js +54 -0
  85. package/cjs/player/processor/chart/rankingBar/rankingBar.js.map +1 -0
  86. package/cjs/player/processor/chart/seriesmark/commonTransformMarkAppear.d.ts +3 -3
  87. package/cjs/player/processor/chart/seriesmark/commonTransformMarkAppear.js.map +1 -1
  88. package/cjs/player/processor/chart/seriesmark/transformArcVisibility.d.ts +2 -2
  89. package/cjs/player/processor/chart/seriesmark/transformArcVisibility.js.map +1 -1
  90. package/cjs/player/processor/chart/seriesmark/transformLineVisibility.d.ts +2 -2
  91. package/cjs/player/processor/chart/seriesmark/transformLineVisibility.js.map +1 -1
  92. package/cjs/player/processor/chart/seriesmark/transformRectVisibility.d.ts +2 -2
  93. package/cjs/player/processor/chart/seriesmark/transformRectVisibility.js.map +1 -1
  94. package/cjs/player/processor/chart/seriesmark/transformSymbolVisibility.d.ts +2 -2
  95. package/cjs/player/processor/chart/seriesmark/transformSymbolVisibility.js.map +1 -1
  96. package/cjs/player/processor/chart/seriesmark/transformTextVisibility.d.ts +2 -2
  97. package/cjs/player/processor/chart/seriesmark/transformTextVisibility.js.map +1 -1
  98. package/cjs/player/processor/chart/vchart.d.ts +35 -24
  99. package/cjs/player/processor/chart/vchart.js +88 -60
  100. package/cjs/player/processor/chart/vchart.js.map +1 -1
  101. package/cjs/player/processor/common/bounce-processor.js +2 -3
  102. package/cjs/player/processor/common/bounce-processor.js.map +1 -1
  103. package/cjs/player/processor/common-processor.js +0 -2
  104. package/cjs/player/processor/component/common-component.js +21 -21
  105. package/cjs/player/processor/component/common-component.js.map +1 -1
  106. package/cjs/player/processor/interface/action-processor.d.ts +1 -1
  107. package/cjs/player/processor/interface/action-processor.js.map +1 -1
  108. package/cjs/player/processor/interface/common-action.d.ts +3 -2
  109. package/cjs/player/processor/interface/common-action.js.map +1 -1
  110. package/cjs/player/processor/interface/style-action.d.ts +4 -5
  111. package/cjs/player/processor/interface/style-action.js.map +1 -1
  112. package/cjs/player/processor/processor-item.js +1 -1
  113. package/cjs/player/processor/processor.js +1 -1
  114. package/cjs/player/processor/processor.js.map +1 -1
  115. package/cjs/player/processor/processorMap.d.ts +9 -0
  116. package/cjs/player/processor/processorMap.js +7 -1
  117. package/cjs/player/processor/processorMap.js.map +1 -1
  118. package/cjs/player/scheduler.js +12 -8
  119. package/cjs/player/scheduler.js.map +1 -1
  120. package/cjs/story/canvas/canvas.js +3 -4
  121. package/cjs/story/canvas/canvas.js.map +1 -1
  122. package/cjs/story/character/base/base.d.ts +4 -0
  123. package/cjs/story/character/base/base.js +1 -1
  124. package/cjs/story/character/base/base.js.map +1 -1
  125. package/cjs/story/character/chart/character.d.ts +15 -0
  126. package/cjs/story/character/chart/character.js +55 -19
  127. package/cjs/story/character/chart/character.js.map +1 -1
  128. package/cjs/story/character/chart/characters/rankingBar.d.ts +4 -0
  129. package/cjs/story/character/chart/characters/rankingBar.js +15 -0
  130. package/cjs/story/character/chart/characters/rankingBar.js.map +1 -0
  131. package/cjs/story/character/chart/graphic/vchart-graphic-picker.js +6 -8
  132. package/cjs/story/character/chart/graphic/vchart-graphic-picker.js.map +1 -1
  133. package/cjs/story/character/chart/graphic/vchart-graphic-render.js +6 -6
  134. package/cjs/story/character/chart/graphic/vchart-graphic-render.js.map +1 -1
  135. package/cjs/story/character/chart/graphic/vchart-graphic.d.ts +12 -2
  136. package/cjs/story/character/chart/graphic/vchart-graphic.js +77 -13
  137. package/cjs/story/character/chart/graphic/vchart-graphic.js.map +1 -1
  138. package/cjs/story/character/chart/runtime/common-spec.d.ts +2 -4
  139. package/cjs/story/character/chart/runtime/common-spec.js +0 -2
  140. package/cjs/story/character/chart/runtime/common-spec.js.map +1 -1
  141. package/cjs/story/character/chart/runtime/component-spec.d.ts +4 -3
  142. package/cjs/story/character/chart/runtime/component-spec.js +7 -5
  143. package/cjs/story/character/chart/runtime/component-spec.js.map +1 -1
  144. package/cjs/story/character/chart/temp/constant.d.ts +1 -0
  145. package/cjs/story/character/chart/temp/constant.js +2 -1
  146. package/cjs/story/character/chart/temp/constant.js.map +1 -1
  147. package/cjs/story/character/chart/temp/templates/bar.d.ts +20 -0
  148. package/cjs/story/character/chart/temp/templates/bar.js +31 -0
  149. package/cjs/story/character/chart/temp/templates/bar.js.map +1 -0
  150. package/cjs/story/character/chart/temp/templates/base-temp.d.ts +6 -4
  151. package/cjs/story/character/chart/temp/templates/base-temp.js +1 -1
  152. package/cjs/story/character/chart/temp/templates/base-temp.js.map +1 -1
  153. package/cjs/story/character/chart/temp/templates/ranking-bar-temp.d.ts +8 -0
  154. package/cjs/story/character/chart/temp/templates/ranking-bar-temp.js +22 -0
  155. package/cjs/story/character/chart/temp/templates/ranking-bar-temp.js.map +1 -0
  156. package/cjs/story/character/component/character-group/component-group-graphic-render.d.ts +2 -2
  157. package/cjs/story/character/component/character-group/component-group-graphic-render.js +3 -3
  158. package/cjs/story/character/component/character-group/component-group-graphic-render.js.map +1 -1
  159. package/cjs/story/character/component/character-group/component-group-graphic.d.ts +1 -1
  160. package/cjs/story/character/component/character-group/component-group-graphic.js +6 -4
  161. package/cjs/story/character/component/character-group/component-group-graphic.js.map +1 -1
  162. package/cjs/story/character/component/character.d.ts +5 -1
  163. package/cjs/story/character/component/character.js +18 -1
  164. package/cjs/story/character/component/character.js.map +1 -1
  165. package/cjs/story/character/component/characters/character-image.d.ts +3 -0
  166. package/cjs/story/character/component/characters/character-image.js +4 -0
  167. package/cjs/story/character/component/characters/character-image.js.map +1 -1
  168. package/cjs/story/character/component/characters/character-rect.d.ts +3 -0
  169. package/cjs/story/character/component/characters/character-rect.js +4 -0
  170. package/cjs/story/character/component/characters/character-rect.js.map +1 -1
  171. package/cjs/story/character/component/characters/character-shape.d.ts +4 -0
  172. package/cjs/story/character/component/characters/character-shape.js +15 -0
  173. package/cjs/story/character/component/characters/character-shape.js.map +1 -1
  174. package/cjs/story/character/component/graphic/graphic-base-text.d.ts +2 -1
  175. package/cjs/story/character/component/graphic/graphic-base-text.js +7 -2
  176. package/cjs/story/character/component/graphic/graphic-base-text.js.map +1 -1
  177. package/cjs/story/character/component/graphic/symbol.d.ts +3 -0
  178. package/cjs/story/character/component/graphic/symbol.js +17 -3
  179. package/cjs/story/character/component/graphic/symbol.js.map +1 -1
  180. package/cjs/story/character/dsl-interface.d.ts +2 -0
  181. package/cjs/story/character/dsl-interface.js.map +1 -1
  182. package/cjs/story/character/runtime-interface.d.ts +9 -4
  183. package/cjs/story/character/runtime-interface.js.map +1 -1
  184. package/cjs/story/character/visactor/character.d.ts +15 -0
  185. package/cjs/story/character/visactor/character.js +17 -1
  186. package/cjs/story/character/visactor/character.js.map +1 -1
  187. package/cjs/story/character/visactor/interface.js.map +1 -1
  188. package/cjs/story/index.js +5 -2
  189. package/cjs/story/index.js.map +1 -1
  190. package/cjs/story/interface/dsl-interface.d.ts +3 -2
  191. package/cjs/story/interface/dsl-interface.js.map +1 -1
  192. package/cjs/story/interface/runtime-interface.d.ts +2 -0
  193. package/cjs/story/interface/runtime-interface.js.map +1 -1
  194. package/cjs/story/story.js +3 -2
  195. package/cjs/story/story.js.map +1 -1
  196. package/cjs/story/utils/layout.d.ts +2 -1
  197. package/cjs/story/utils/layout.js +2 -2
  198. package/cjs/story/utils/layout.js.map +1 -1
  199. package/cjs/story/utils/vchart-pick.d.ts +115 -0
  200. package/cjs/story/utils/vchart-pick.js +109 -0
  201. package/cjs/story/utils/vchart-pick.js.map +1 -0
  202. package/dist/index.js +27003 -87350
  203. package/dist/index.min.js +3 -3
  204. package/es/constants/character.d.ts +2 -1
  205. package/es/constants/character.js +1 -1
  206. package/es/constants/character.js.map +1 -1
  207. package/es/dsl/types/index.d.ts +1 -0
  208. package/es/dsl/types/index.js.map +1 -1
  209. package/es/dsl/utils/datum.js +2 -1
  210. package/es/dsl/utils/flicker.js +1 -2
  211. package/es/edit/const.d.ts +1 -3
  212. package/es/edit/const.js +1 -0
  213. package/es/edit/const.js.map +1 -1
  214. package/es/edit/edit-action.d.ts +9 -0
  215. package/es/edit/edit-action.js +63 -5
  216. package/es/edit/edit-action.js.map +1 -1
  217. package/es/edit/edit-component/base-selection.d.ts +8 -3
  218. package/es/edit/edit-component/base-selection.js +32 -4
  219. package/es/edit/edit-component/base-selection.js.map +1 -1
  220. package/es/edit/edit-component/box-selection.js +1 -1
  221. package/es/edit/edit-component/chart-selection.d.ts +15 -0
  222. package/es/edit/edit-component/chart-selection.js +31 -0
  223. package/es/edit/edit-component/chart-selection.js.map +1 -0
  224. package/es/edit/edit-component/common.d.ts +1 -11
  225. package/es/edit/edit-component/common.js +1 -24
  226. package/es/edit/edit-component/common.js.map +1 -1
  227. package/es/edit/edit-component/edit-control/richtext-control.d.ts +19 -0
  228. package/es/edit/edit-component/edit-control/richtext-control.js +28 -0
  229. package/es/edit/edit-component/edit-control/richtext-control.js.map +1 -0
  230. package/es/edit/edit-component/edit-control/richtext-transform-control.d.ts +2 -3
  231. package/es/edit/edit-component/edit-control/richtext-transform-control.js +29 -34
  232. package/es/edit/edit-component/edit-control/richtext-transform-control.js.map +1 -1
  233. package/es/edit/edit-component/edit-control/transform-control.d.ts +4 -2
  234. package/es/edit/edit-component/edit-control/transform-control.js +10 -6
  235. package/es/edit/edit-component/edit-control/transform-control.js.map +1 -1
  236. package/es/edit/edit-component/edit-control/transform-drag.d.ts +1 -0
  237. package/es/edit/edit-component/edit-control/transform-drag.js +4 -2
  238. package/es/edit/edit-component/edit-control/transform-drag.js.map +1 -1
  239. package/es/edit/edit-component/image-selection.d.ts +1 -2
  240. package/es/edit/edit-component/image-selection.js +3 -6
  241. package/es/edit/edit-component/image-selection.js.map +1 -1
  242. package/es/edit/edit-component/index.js +7 -9
  243. package/es/edit/edit-component/index.js.map +1 -1
  244. package/es/edit/edit-component/mixin/richtext.d.ts +21 -0
  245. package/es/edit/edit-component/mixin/richtext.js +18 -0
  246. package/es/edit/edit-component/mixin/richtext.js.map +1 -0
  247. package/es/edit/edit-component/rect-selection.d.ts +8 -12
  248. package/es/edit/edit-component/rect-selection.js +13 -20
  249. package/es/edit/edit-component/rect-selection.js.map +1 -1
  250. package/es/edit/edit-component/richtext-selection-common.d.ts +19 -0
  251. package/es/edit/edit-component/richtext-selection-common.js +33 -0
  252. package/es/edit/edit-component/richtext-selection-common.js.map +1 -0
  253. package/es/edit/edit-component/richtext-selection.d.ts +0 -2
  254. package/es/edit/edit-component/richtext-selection.js +0 -6
  255. package/es/edit/edit-component/richtext-selection.js.map +1 -1
  256. package/es/edit/edit-component/shape-selection.d.ts +11 -0
  257. package/es/edit/edit-component/shape-selection.js +30 -0
  258. package/es/edit/edit-component/shape-selection.js.map +1 -0
  259. package/es/edit/edit-component/text-selection.d.ts +0 -3
  260. package/es/edit/edit-component/text-selection.js +1 -10
  261. package/es/edit/edit-component/text-selection.js.map +1 -1
  262. package/es/edit/edit.d.ts +5 -2
  263. package/es/edit/edit.js +21 -4
  264. package/es/edit/edit.js.map +1 -1
  265. package/es/edit/interface.d.ts +6 -1
  266. package/es/edit/interface.js +3 -1
  267. package/es/edit/interface.js.map +1 -1
  268. package/es/index.d.ts +3 -0
  269. package/es/index.js +7 -1
  270. package/es/index.js.map +1 -1
  271. package/es/player/interface/player.js +1 -1
  272. package/es/player/interface/scheduler.js +1 -1
  273. package/es/player/player.js +6 -2
  274. package/es/player/player.js.map +1 -1
  275. package/es/player/processor/chart/common/chartAppear.d.ts +2 -2
  276. package/es/player/processor/chart/common/chartAppear.js.map +1 -1
  277. package/es/player/processor/chart/common/commonAppear.d.ts +3 -3
  278. package/es/player/processor/chart/common/commonAppear.js.map +1 -1
  279. package/es/player/processor/chart/component/axisAppear.d.ts +2 -2
  280. package/es/player/processor/chart/component/axisAppear.js.map +1 -1
  281. package/es/player/processor/chart/component/commonAppear.d.ts +3 -3
  282. package/es/player/processor/chart/component/commonAppear.js.map +1 -1
  283. package/es/player/processor/chart/component/labelAppear.d.ts +2 -2
  284. package/es/player/processor/chart/component/labelAppear.js.map +1 -1
  285. package/es/player/processor/chart/rankingBar/rankingBar.d.ts +29 -0
  286. package/es/player/processor/chart/rankingBar/rankingBar.js +50 -0
  287. package/es/player/processor/chart/rankingBar/rankingBar.js.map +1 -0
  288. package/es/player/processor/chart/seriesmark/commonTransformMarkAppear.d.ts +3 -3
  289. package/es/player/processor/chart/seriesmark/commonTransformMarkAppear.js.map +1 -1
  290. package/es/player/processor/chart/seriesmark/transformArcVisibility.d.ts +2 -2
  291. package/es/player/processor/chart/seriesmark/transformArcVisibility.js.map +1 -1
  292. package/es/player/processor/chart/seriesmark/transformLineVisibility.d.ts +2 -2
  293. package/es/player/processor/chart/seriesmark/transformLineVisibility.js.map +1 -1
  294. package/es/player/processor/chart/seriesmark/transformRectVisibility.d.ts +2 -2
  295. package/es/player/processor/chart/seriesmark/transformRectVisibility.js.map +1 -1
  296. package/es/player/processor/chart/seriesmark/transformSymbolVisibility.d.ts +2 -2
  297. package/es/player/processor/chart/seriesmark/transformSymbolVisibility.js.map +1 -1
  298. package/es/player/processor/chart/seriesmark/transformTextVisibility.d.ts +2 -2
  299. package/es/player/processor/chart/seriesmark/transformTextVisibility.js.map +1 -1
  300. package/es/player/processor/chart/vchart.d.ts +35 -24
  301. package/es/player/processor/chart/vchart.js +89 -61
  302. package/es/player/processor/chart/vchart.js.map +1 -1
  303. package/es/player/processor/common/bounce-processor.js +2 -3
  304. package/es/player/processor/common/bounce-processor.js.map +1 -1
  305. package/es/player/processor/common-processor.js +0 -2
  306. package/es/player/processor/component/common-component.js +21 -21
  307. package/es/player/processor/component/common-component.js.map +1 -1
  308. package/es/player/processor/interface/action-processor.d.ts +1 -1
  309. package/es/player/processor/interface/action-processor.js.map +1 -1
  310. package/es/player/processor/interface/common-action.d.ts +3 -2
  311. package/es/player/processor/interface/common-action.js.map +1 -1
  312. package/es/player/processor/interface/style-action.d.ts +4 -5
  313. package/es/player/processor/interface/style-action.js.map +1 -1
  314. package/es/player/processor/processor-item.js +1 -1
  315. package/es/player/processor/processor.js +1 -1
  316. package/es/player/processor/processor.js.map +1 -1
  317. package/es/player/processor/processorMap.d.ts +9 -0
  318. package/es/player/processor/processorMap.js +8 -0
  319. package/es/player/processor/processorMap.js.map +1 -1
  320. package/es/player/scheduler.js +12 -8
  321. package/es/player/scheduler.js.map +1 -1
  322. package/es/story/canvas/canvas.js +3 -4
  323. package/es/story/canvas/canvas.js.map +1 -1
  324. package/es/story/character/base/base.d.ts +4 -0
  325. package/es/story/character/base/base.js +1 -1
  326. package/es/story/character/base/base.js.map +1 -1
  327. package/es/story/character/chart/character.d.ts +15 -0
  328. package/es/story/character/chart/character.js +58 -15
  329. package/es/story/character/chart/character.js.map +1 -1
  330. package/es/story/character/chart/characters/rankingBar.d.ts +4 -0
  331. package/es/story/character/chart/characters/rankingBar.js +14 -0
  332. package/es/story/character/chart/characters/rankingBar.js.map +1 -0
  333. package/es/story/character/chart/graphic/vchart-graphic-picker.js +6 -8
  334. package/es/story/character/chart/graphic/vchart-graphic-picker.js.map +1 -1
  335. package/es/story/character/chart/graphic/vchart-graphic-render.js +7 -7
  336. package/es/story/character/chart/graphic/vchart-graphic-render.js.map +1 -1
  337. package/es/story/character/chart/graphic/vchart-graphic.d.ts +12 -2
  338. package/es/story/character/chart/graphic/vchart-graphic.js +80 -12
  339. package/es/story/character/chart/graphic/vchart-graphic.js.map +1 -1
  340. package/es/story/character/chart/runtime/common-spec.d.ts +2 -4
  341. package/es/story/character/chart/runtime/common-spec.js +0 -2
  342. package/es/story/character/chart/runtime/common-spec.js.map +1 -1
  343. package/es/story/character/chart/runtime/component-spec.d.ts +4 -3
  344. package/es/story/character/chart/runtime/component-spec.js +7 -5
  345. package/es/story/character/chart/runtime/component-spec.js.map +1 -1
  346. package/es/story/character/chart/temp/constant.d.ts +1 -0
  347. package/es/story/character/chart/temp/constant.js +2 -1
  348. package/es/story/character/chart/temp/constant.js.map +1 -1
  349. package/es/story/character/chart/temp/templates/bar.d.ts +20 -0
  350. package/es/story/character/chart/temp/templates/bar.js +27 -0
  351. package/es/story/character/chart/temp/templates/bar.js.map +1 -0
  352. package/es/story/character/chart/temp/templates/base-temp.d.ts +6 -4
  353. package/es/story/character/chart/temp/templates/base-temp.js +1 -1
  354. package/es/story/character/chart/temp/templates/base-temp.js.map +1 -1
  355. package/es/story/character/chart/temp/templates/ranking-bar-temp.d.ts +8 -0
  356. package/es/story/character/chart/temp/templates/ranking-bar-temp.js +18 -0
  357. package/es/story/character/chart/temp/templates/ranking-bar-temp.js.map +1 -0
  358. package/es/story/character/component/character-group/component-group-graphic-render.d.ts +2 -2
  359. package/es/story/character/component/character-group/component-group-graphic-render.js +4 -4
  360. package/es/story/character/component/character-group/component-group-graphic-render.js.map +1 -1
  361. package/es/story/character/component/character-group/component-group-graphic.d.ts +1 -1
  362. package/es/story/character/component/character-group/component-group-graphic.js +5 -3
  363. package/es/story/character/component/character-group/component-group-graphic.js.map +1 -1
  364. package/es/story/character/component/character.d.ts +5 -1
  365. package/es/story/character/component/character.js +18 -1
  366. package/es/story/character/component/character.js.map +1 -1
  367. package/es/story/character/component/characters/character-image.d.ts +3 -0
  368. package/es/story/character/component/characters/character-image.js +4 -0
  369. package/es/story/character/component/characters/character-image.js.map +1 -1
  370. package/es/story/character/component/characters/character-rect.d.ts +3 -0
  371. package/es/story/character/component/characters/character-rect.js +4 -0
  372. package/es/story/character/component/characters/character-rect.js.map +1 -1
  373. package/es/story/character/component/characters/character-shape.d.ts +4 -0
  374. package/es/story/character/component/characters/character-shape.js +15 -0
  375. package/es/story/character/component/characters/character-shape.js.map +1 -1
  376. package/es/story/character/component/graphic/graphic-base-text.d.ts +2 -1
  377. package/es/story/character/component/graphic/graphic-base-text.js +7 -2
  378. package/es/story/character/component/graphic/graphic-base-text.js.map +1 -1
  379. package/es/story/character/component/graphic/symbol.d.ts +3 -0
  380. package/es/story/character/component/graphic/symbol.js +17 -2
  381. package/es/story/character/component/graphic/symbol.js.map +1 -1
  382. package/es/story/character/dsl-interface.d.ts +2 -0
  383. package/es/story/character/dsl-interface.js.map +1 -1
  384. package/es/story/character/runtime-interface.d.ts +9 -4
  385. package/es/story/character/runtime-interface.js.map +1 -1
  386. package/es/story/character/visactor/character.d.ts +15 -0
  387. package/es/story/character/visactor/character.js +18 -0
  388. package/es/story/character/visactor/character.js.map +1 -1
  389. package/es/story/character/visactor/interface.js.map +1 -1
  390. package/es/story/index.js +7 -3
  391. package/es/story/index.js.map +1 -1
  392. package/es/story/interface/dsl-interface.d.ts +3 -2
  393. package/es/story/interface/dsl-interface.js.map +1 -1
  394. package/es/story/interface/runtime-interface.d.ts +2 -0
  395. package/es/story/interface/runtime-interface.js.map +1 -1
  396. package/es/story/story.js +3 -2
  397. package/es/story/story.js.map +1 -1
  398. package/es/story/utils/layout.d.ts +2 -1
  399. package/es/story/utils/layout.js +2 -2
  400. package/es/story/utils/layout.js.map +1 -1
  401. package/es/story/utils/vchart-pick.d.ts +115 -0
  402. package/es/story/utils/vchart-pick.js +115 -0
  403. package/es/story/utils/vchart-pick.js.map +1 -0
  404. package/package.json +11 -10
@@ -4,12 +4,12 @@ Object.defineProperty(exports, "__esModule", {
4
4
  value: !0
5
5
  }), exports.RichTextTransformControl = void 0;
6
6
 
7
- const vrender_1 = require("@visactor/vrender"), constants_1 = require("./constants"), transform_control_1 = require("./transform-control");
7
+ const transform_control_1 = require("./transform-control");
8
8
 
9
9
  class RichTextTransformControl extends transform_control_1.TransformControl {
10
10
  constructor() {
11
11
  super(...arguments), this.handlerDblClick = e => {
12
- this.attachDomTextEditor();
12
+ this.startEditText();
13
13
  };
14
14
  }
15
15
  initEvent() {
@@ -18,41 +18,39 @@ class RichTextTransformControl extends transform_control_1.TransformControl {
18
18
  releaseEvent() {
19
19
  super.releaseEvent(), this.rect.removeEventListener("dblclick", this.handlerDblClick);
20
20
  }
21
- attachDomTextEditor() {
22
- const stage = this.stage;
23
- if (!stage) return;
24
- const {x: x, y: y, width: width, height: height} = this.rect.attribute, container = document.createElement("div");
25
- container.style.position = "relative", container.style.display = "flex", container.style.justifyContent = "center",
26
- container.style.left = x + "px", container.style.top = y + "px", container.style.width = width + "px",
27
- container.style.height = height + "px", container.style.pointerEvents = "none";
28
- const bg = document.createElement("div");
29
- bg.style.position = "absolute", bg.style.zIndex = "-1", bg.style.width = "100%",
30
- bg.style.height = "100%", bg.style.opacity = "0.2", bg.style.background = constants_1.BOUNDS_SELECT_COLOR,
31
- bg.style.cursor = "text", container.appendChild(bg), stage.window.getContainer().appendChild(container),
32
- this.domTextEditor = container;
21
+ startEditText() {
22
+ this.rect.setAttributes({
23
+ pickable: !1
24
+ }), this.editBorder.setAttributes({
25
+ pickable: !1
26
+ }), this.setAttributes({
27
+ pickable: !1
28
+ });
29
+ const character = this.editComponent.getActiveCharacter();
30
+ if (!character) return;
31
+ const text = character._text && character._text._graphic;
32
+ text && text.setAttributes({
33
+ editable: !0
34
+ });
35
+ }
36
+ endEditText() {
37
+ this.rect.setAttributes({
38
+ pickable: !0
39
+ }), this.editBorder.setAttributes({
40
+ pickable: !0
41
+ }), this.setAttributes({
42
+ pickable: !0
43
+ });
33
44
  const character = this.editComponent.getActiveCharacter(), text = character._text && character._text._graphic;
34
- if (text) {
35
- const textArea = document.createElement("textArea"), bounds = text.AABBBounds, theme = (0,
36
- vrender_1.getTheme)(text).text, {fontFamily: fontFamily = theme.fontFamily, fontSize: fontSize = theme.fontSize, fontWeight: fontWeight = theme.fontWeight} = text.attribute;
37
- textArea.style.alignSelf = "center", textArea.style.width = `${bounds.width()}px`,
38
- textArea.style.height = `${bounds.height()}px`, textArea.innerText = text.attribute.text,
39
- textArea.style.border = "none", textArea.style.fontFamily = fontFamily, textArea.style.fontSize = fontSize,
40
- textArea.style.fontWeight = fontWeight, textArea.style.overflow = "hidden", textArea.style.outline = "none",
41
- textArea.style.resize = "none", textArea.style.pointerEvents = "all", container.appendChild(textArea);
42
- }
45
+ text && text.setAttributes({
46
+ editable: !1
47
+ });
43
48
  }
44
49
  render() {
45
- if (super.render(), this.domTextEditor) {
46
- const container = this.domTextEditor, {x: x, y: y, width: width, height: height} = this.rect.attribute;
47
- container.style.left = x + "px", container.style.top = y + "px", container.style.width = width + "px",
48
- container.style.height = height + "px";
49
- }
50
- }
51
- detachDomTextEditor() {
52
- this.domTextEditor && this.stage && this.stage.window.getContainer().removeChild(this.domTextEditor);
50
+ super.render();
53
51
  }
54
52
  release() {
55
- this.detachDomTextEditor(), super.release();
53
+ this.endEditText(), super.release();
56
54
  }
57
55
  }
58
56
 
@@ -1 +1 @@
1
- {"version":3,"sources":["../src/edit/edit-component/edit-control/richtext-transform-control.ts"],"names":[],"mappings":";;;AAaA,+CAAyD;AAOzD,2CAAyF;AAIzF,2DAAuD;AAEvD,MAAa,wBAAyB,SAAQ,oCAAgB;IAA9D;;QAaE,oBAAe,GAAG,CAAC,CAAM,EAAE,EAAE;YAC3B,IAAI,CAAC,mBAAmB,EAAE,CAAC;QAC7B,CAAC,CAAC;IAiFJ,CAAC;IA/FC,SAAS;QACP,KAAK,CAAC,SAAS,EAAE,CAAC;QAClB,IAAI,CAAC,IAAI,CAAC,gBAAgB,CAAC,UAAU,EAAE,IAAI,CAAC,eAAe,CAAC,CAAC;IAC/D,CAAC;IAED,YAAY;QACV,KAAK,CAAC,YAAY,EAAE,CAAC;QACrB,IAAI,CAAC,IAAI,CAAC,mBAAmB,CAAC,UAAU,EAAE,IAAI,CAAC,eAAe,CAAC,CAAC;IAClE,CAAC;IAQS,mBAAmB;QAC3B,MAAM,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC;QACzB,IAAI,CAAC,KAAK,EAAE;YACV,OAAO;SACR;QACD,MAAM,EAAE,CAAC,EAAE,CAAC,EAAE,KAAK,EAAE,MAAM,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,SAAS,CAAC;QACpD,MAAM,SAAS,GAAG,QAAQ,CAAC,aAAa,CAAC,KAAK,CAAC,CAAC;QAChD,SAAS,CAAC,KAAK,CAAC,QAAQ,GAAG,UAAU,CAAC;QACtC,SAAS,CAAC,KAAK,CAAC,OAAO,GAAG,MAAM,CAAC;QACjC,SAAS,CAAC,KAAK,CAAC,cAAc,GAAG,QAAQ,CAAC;QAC1C,SAAS,CAAC,KAAK,CAAC,IAAI,GAAG,CAAC,GAAG,IAAI,CAAC;QAChC,SAAS,CAAC,KAAK,CAAC,GAAG,GAAG,CAAC,GAAG,IAAI,CAAC;QAC/B,SAAS,CAAC,KAAK,CAAC,KAAK,GAAG,KAAK,GAAG,IAAI,CAAC;QACrC,SAAS,CAAC,KAAK,CAAC,MAAM,GAAG,MAAM,GAAG,IAAI,CAAC;QACvC,SAAS,CAAC,KAAK,CAAC,aAAa,GAAG,MAAM,CAAC;QACvC,MAAM,EAAE,GAAG,QAAQ,CAAC,aAAa,CAAC,KAAK,CAAC,CAAC;QACzC,EAAE,CAAC,KAAK,CAAC,QAAQ,GAAG,UAAU,CAAC;QAC/B,EAAE,CAAC,KAAK,CAAC,MAAM,GAAG,IAAI,CAAC;QACvB,EAAE,CAAC,KAAK,CAAC,KAAK,GAAG,MAAM,CAAC;QACxB,EAAE,CAAC,KAAK,CAAC,MAAM,GAAG,MAAM,CAAC;QACzB,EAAE,CAAC,KAAK,CAAC,OAAO,GAAG,KAAK,CAAC;QACzB,EAAE,CAAC,KAAK,CAAC,UAAU,GAAG,+BAAmB,CAAC;QAC1C,EAAE,CAAC,KAAK,CAAC,MAAM,GAAG,MAAM,CAAC;QACzB,SAAS,CAAC,WAAW,CAAC,EAAE,CAAC,CAAC;QAC1B,KAAK,CAAC,MAAM,CAAC,YAAY,EAAE,CAAC,WAAW,CAAC,SAAS,CAAC,CAAC;QACnD,IAAI,CAAC,aAAa,GAAG,SAAS,CAAC;QAG/B,MAAM,SAAS,GAAG,IAAI,CAAC,aAAa,CAAC,kBAAkB,EAAE,CAAC;QAC1D,MAAM,IAAI,GAAI,SAAiB,CAAC,KAAK,IAAK,SAAiB,CAAC,KAAK,CAAC,QAAQ,CAAC;QAC3E,IAAI,IAAI,EAAE;YACR,MAAM,QAAQ,GAAG,QAAQ,CAAC,aAAa,CAAC,UAAU,CAAwB,CAAC;YAC3E,MAAM,MAAM,GAAG,IAAI,CAAC,UAAU,CAAC;YAC/B,MAAM,KAAK,GAAG,IAAA,kBAAQ,EAAC,IAAI,CAAC,CAAC,IAAI,CAAC;YAClC,MAAM,EACJ,UAAU,GAAG,KAAK,CAAC,UAAU,EAC7B,QAAQ,GAAG,KAAK,CAAC,QAAQ,EACzB,UAAU,GAAG,KAAK,CAAC,UAAU,EAC9B,GAAG,IAAI,CAAC,SAAS,CAAC;YACnB,QAAQ,CAAC,KAAK,CAAC,SAAS,GAAG,QAAQ,CAAC;YACpC,QAAQ,CAAC,KAAK,CAAC,KAAK,GAAG,GAAG,MAAM,CAAC,KAAK,EAAE,IAAI,CAAC;YAC7C,QAAQ,CAAC,KAAK,CAAC,MAAM,GAAG,GAAG,MAAM,CAAC,MAAM,EAAE,IAAI,CAAC;YAC/C,QAAQ,CAAC,SAAS,GAAG,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC;YACzC,QAAQ,CAAC,KAAK,CAAC,MAAM,GAAG,MAAM,CAAC;YAC/B,QAAQ,CAAC,KAAK,CAAC,UAAU,GAAG,UAAU,CAAC;YACvC,QAAQ,CAAC,KAAK,CAAC,QAAQ,GAAG,QAAQ,CAAC;YACnC,QAAQ,CAAC,KAAK,CAAC,UAAU,GAAG,UAAU,CAAC;YACvC,QAAQ,CAAC,KAAK,CAAC,QAAQ,GAAG,QAAQ,CAAC;YACnC,QAAQ,CAAC,KAAK,CAAC,OAAO,GAAG,MAAM,CAAC;YAChC,QAAQ,CAAC,KAAK,CAAC,MAAM,GAAG,MAAM,CAAC;YAC/B,QAAQ,CAAC,KAAK,CAAC,aAAa,GAAG,KAAK,CAAC;YACrC,SAAS,CAAC,WAAW,CAAC,QAAQ,CAAC,CAAC;SACjC;IAGH,CAAC;IAES,MAAM;QACd,KAAK,CAAC,MAAM,EAAE,CAAC;QACf,IAAI,IAAI,CAAC,aAAa,EAAE;YACtB,MAAM,SAAS,GAAG,IAAI,CAAC,aAAa,CAAC;YACrC,MAAM,EAAE,CAAC,EAAE,CAAC,EAAE,KAAK,EAAE,MAAM,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,SAAS,CAAC;YACpD,SAAS,CAAC,KAAK,CAAC,IAAI,GAAG,CAAC,GAAG,IAAI,CAAC;YAChC,SAAS,CAAC,KAAK,CAAC,GAAG,GAAG,CAAC,GAAG,IAAI,CAAC;YAC/B,SAAS,CAAC,KAAK,CAAC,KAAK,GAAG,KAAK,GAAG,IAAI,CAAC;YACrC,SAAS,CAAC,KAAK,CAAC,MAAM,GAAG,MAAM,GAAG,IAAI,CAAC;SACxC;IACH,CAAC;IAED,mBAAmB;QACjB,IAAI,IAAI,CAAC,aAAa,IAAI,IAAI,CAAC,KAAK,EAAE;YACpC,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,YAAY,EAAE,CAAC,WAAW,CAAC,IAAI,CAAC,aAAa,CAAC,CAAC;SAClE;IACH,CAAC;IAED,OAAO;QACL,IAAI,CAAC,mBAAmB,EAAE,CAAC;QAC3B,KAAK,CAAC,OAAO,EAAE,CAAC;IAClB,CAAC;CACF;AAhGD,4DAgGC","file":"richtext-transform-control.js","sourcesContent":["/**\n * @description PopTip组件\n */\nimport type {\n ICircleGraphicAttribute,\n IPathGraphicAttribute,\n IGraphic,\n IGroupGraphicAttribute,\n IRect,\n IRectGraphicAttribute,\n ILineGraphicAttribute,\n IGroup\n} from '@visactor/vrender';\nimport { createRect, getTheme } from '@visactor/vrender';\nimport type { IAABBBounds, IAABBBoundsLike, IPointLike } from '@visactor/vutils';\nimport { AABBBounds, merge, normalizePadding, pi } from '@visactor/vutils';\nimport { AbstractComponent } from '@visactor/vrender-components';\nimport { transformPointWithMatrix } from '../../../util/space';\nimport { MinSize } from '../../../constants/attribute';\nimport { normalizeAngle } from '../../../util/math';\nimport { BOUNDS_SELECT_COLOR, DRAG_ANCHOR_COLOR, SHAPE_SELECT_COLOR } from './constants';\nimport type { VRenderPointerEvent } from '../../../interface/type';\nimport type { IEditComponent } from '../../interface';\nimport type { ITransformControl } from './transform-control';\nimport { TransformControl } from './transform-control';\n\nexport class RichTextTransformControl extends TransformControl implements ITransformControl {\n initEvent(): void {\n super.initEvent();\n this.rect.addEventListener('dblclick', this.handlerDblClick);\n }\n\n releaseEvent(): void {\n super.releaseEvent();\n this.rect.removeEventListener('dblclick', this.handlerDblClick);\n }\n\n domTextEditor?: HTMLElement;\n\n handlerDblClick = (e: any) => {\n this.attachDomTextEditor();\n };\n\n protected attachDomTextEditor() {\n const stage = this.stage;\n if (!stage) {\n return;\n }\n const { x, y, width, height } = this.rect.attribute;\n const container = document.createElement('div');\n container.style.position = 'relative';\n container.style.display = 'flex';\n container.style.justifyContent = 'center';\n container.style.left = x + 'px';\n container.style.top = y + 'px';\n container.style.width = width + 'px';\n container.style.height = height + 'px';\n container.style.pointerEvents = 'none';\n const bg = document.createElement('div');\n bg.style.position = 'absolute';\n bg.style.zIndex = '-1';\n bg.style.width = '100%';\n bg.style.height = '100%';\n bg.style.opacity = '0.2';\n bg.style.background = BOUNDS_SELECT_COLOR;\n bg.style.cursor = 'text';\n container.appendChild(bg);\n stage.window.getContainer().appendChild(container);\n this.domTextEditor = container;\n\n // 添加textArea\n const character = this.editComponent.getActiveCharacter();\n const text = (character as any)._text && (character as any)._text._graphic;\n if (text) {\n const textArea = document.createElement('textArea') as HTMLTextAreaElement;\n const bounds = text.AABBBounds;\n const theme = getTheme(text).text;\n const {\n fontFamily = theme.fontFamily,\n fontSize = theme.fontSize,\n fontWeight = theme.fontWeight\n } = text.attribute;\n textArea.style.alignSelf = `center`;\n textArea.style.width = `${bounds.width()}px`;\n textArea.style.height = `${bounds.height()}px`;\n textArea.innerText = text.attribute.text;\n textArea.style.border = 'none';\n textArea.style.fontFamily = fontFamily;\n textArea.style.fontSize = fontSize;\n textArea.style.fontWeight = fontWeight;\n textArea.style.overflow = 'hidden';\n textArea.style.outline = 'none';\n textArea.style.resize = 'none';\n textArea.style.pointerEvents = 'all';\n container.appendChild(textArea);\n }\n\n // textArea.value = this.activeGraphic;\n }\n\n protected render() {\n super.render();\n if (this.domTextEditor) {\n const container = this.domTextEditor;\n const { x, y, width, height } = this.rect.attribute;\n container.style.left = x + 'px';\n container.style.top = y + 'px';\n container.style.width = width + 'px';\n container.style.height = height + 'px';\n }\n }\n\n detachDomTextEditor() {\n if (this.domTextEditor && this.stage) {\n this.stage.window.getContainer().removeChild(this.domTextEditor);\n }\n }\n\n release(): void {\n this.detachDomTextEditor();\n super.release();\n }\n}\n"]}
1
+ {"version":3,"sources":["../src/edit/edit-component/edit-control/richtext-transform-control.ts"],"names":[],"mappings":";;;AAwBA,2DAAuD;AAEvD,MAAa,wBAAyB,SAAQ,oCAAgB;IAA9D;;QAaE,oBAAe,GAAG,CAAC,CAAM,EAAE,EAAE;YAE3B,IAAI,CAAC,aAAa,EAAE,CAAC;QACvB,CAAC,CAAC;IAwGJ,CAAC;IAvHC,SAAS;QACP,KAAK,CAAC,SAAS,EAAE,CAAC;QAClB,IAAI,CAAC,IAAI,CAAC,gBAAgB,CAAC,UAAU,EAAE,IAAI,CAAC,eAAe,CAAC,CAAC;IAC/D,CAAC;IAED,YAAY;QACV,KAAK,CAAC,YAAY,EAAE,CAAC;QACrB,IAAI,CAAC,IAAI,CAAC,mBAAmB,CAAC,UAAU,EAAE,IAAI,CAAC,eAAe,CAAC,CAAC;IAClE,CAAC;IASD,aAAa;QAEX,IAAI,CAAC,IAAI,CAAC,aAAa,CAAC,EAAE,QAAQ,EAAE,KAAK,EAAE,CAAC,CAAC;QAC7C,IAAI,CAAC,UAAU,CAAC,aAAa,CAAC,EAAE,QAAQ,EAAE,KAAK,EAAE,CAAC,CAAC;QACnD,IAAI,CAAC,aAAa,CAAC,EAAE,QAAQ,EAAE,KAAK,EAAE,CAAC,CAAC;QACxC,MAAM,SAAS,GAAG,IAAI,CAAC,aAAa,CAAC,kBAAkB,EAAE,CAAC;QAC1D,IAAI,CAAC,SAAS,EAAE;YACd,OAAO;SACR;QACD,MAAM,IAAI,GAAI,SAAiB,CAAC,KAAK,IAAK,SAAiB,CAAC,KAAK,CAAC,QAAQ,CAAC;QAC3E,IAAI,IAAI,IAAI,CAAC,aAAa,CAAC,EAAE,QAAQ,EAAE,IAAI,EAAE,CAAC,CAAC;IACjD,CAAC;IAED,WAAW;QACT,IAAI,CAAC,IAAI,CAAC,aAAa,CAAC,EAAE,QAAQ,EAAE,IAAI,EAAE,CAAC,CAAC;QAC5C,IAAI,CAAC,UAAU,CAAC,aAAa,CAAC,EAAE,QAAQ,EAAE,IAAI,EAAE,CAAC,CAAC;QAClD,IAAI,CAAC,aAAa,CAAC,EAAE,QAAQ,EAAE,IAAI,EAAE,CAAC,CAAC;QACvC,MAAM,SAAS,GAAG,IAAI,CAAC,aAAa,CAAC,kBAAkB,EAAE,CAAC;QAC1D,MAAM,IAAI,GAAI,SAAiB,CAAC,KAAK,IAAK,SAAiB,CAAC,KAAK,CAAC,QAAQ,CAAC;QAC3E,IAAI,IAAI,IAAI,CAAC,aAAa,CAAC,EAAE,QAAQ,EAAE,KAAK,EAAE,CAAC,CAAC;IAClD,CAAC;IA2DS,MAAM;QACd,KAAK,CAAC,MAAM,EAAE,CAAC;IASjB,CAAC;IAQD,OAAO;QAEL,IAAI,CAAC,WAAW,EAAE,CAAC;QACnB,KAAK,CAAC,OAAO,EAAE,CAAC;IAClB,CAAC;CACF;AAxHD,4DAwHC","file":"richtext-transform-control.js","sourcesContent":["/**\n * @description PopTip组件\n */\nimport type {\n ICircleGraphicAttribute,\n IPathGraphicAttribute,\n IGraphic,\n IGroupGraphicAttribute,\n IRect,\n IRectGraphicAttribute,\n ILineGraphicAttribute,\n IGroup\n} from '@visactor/vrender';\nimport { createRect, getTheme } from '@visactor/vrender';\nimport type { IAABBBounds, IAABBBoundsLike, IPointLike } from '@visactor/vutils';\nimport { AABBBounds, merge, normalizePadding, pi } from '@visactor/vutils';\nimport { AbstractComponent } from '@visactor/vrender-components';\nimport { transformPointWithMatrix } from '../../../util/space';\nimport { MinSize } from '../../../constants/attribute';\nimport { normalizeAngle } from '../../../util/math';\nimport { BOUNDS_SELECT_COLOR, DRAG_ANCHOR_COLOR, SHAPE_SELECT_COLOR } from './constants';\nimport type { VRenderPointerEvent } from '../../../interface/type';\nimport type { IEditComponent } from '../../interface';\nimport type { ITransformControl } from './transform-control';\nimport { TransformControl } from './transform-control';\n\nexport class RichTextTransformControl extends TransformControl implements ITransformControl {\n initEvent(): void {\n super.initEvent();\n this.rect.addEventListener('dblclick', this.handlerDblClick);\n }\n\n releaseEvent(): void {\n super.releaseEvent();\n this.rect.removeEventListener('dblclick', this.handlerDblClick);\n }\n\n // domTextEditor?: HTMLElement;\n\n handlerDblClick = (e: any) => {\n // this.attachDomTextEditor();\n this.startEditText();\n };\n\n startEditText() {\n // 关掉上层的pick,开启richtext的editable\n this.rect.setAttributes({ pickable: false });\n this.editBorder.setAttributes({ pickable: false });\n this.setAttributes({ pickable: false });\n const character = this.editComponent.getActiveCharacter();\n if (!character) {\n return;\n }\n const text = (character as any)._text && (character as any)._text._graphic;\n text && text.setAttributes({ editable: true });\n }\n\n endEditText() {\n this.rect.setAttributes({ pickable: true });\n this.editBorder.setAttributes({ pickable: true });\n this.setAttributes({ pickable: true });\n const character = this.editComponent.getActiveCharacter();\n const text = (character as any)._text && (character as any)._text._graphic;\n text && text.setAttributes({ editable: false });\n }\n\n // protected attachDomTextEditor() {\n // const stage = this.stage;\n // if (!stage) {\n // return;\n // }\n // const { x, y, width, height } = this.rect.attribute;\n // const container = document.createElement('div');\n // container.style.position = 'relative';\n // container.style.display = 'flex';\n // container.style.justifyContent = 'center';\n // container.style.left = x + 'px';\n // container.style.top = y + 'px';\n // container.style.width = width + 'px';\n // container.style.height = height + 'px';\n // container.style.pointerEvents = 'none';\n // const bg = document.createElement('div');\n // bg.style.position = 'absolute';\n // bg.style.zIndex = '-1';\n // bg.style.width = '100%';\n // bg.style.height = '100%';\n // bg.style.opacity = '0.2';\n // bg.style.background = BOUNDS_SELECT_COLOR;\n // bg.style.cursor = 'text';\n // container.appendChild(bg);\n // stage.window.getContainer().appendChild(container);\n // this.domTextEditor = container;\n\n // // 添加textArea\n // const character = this.editComponent.getActiveCharacter();\n // const text = (character as any)._text && (character as any)._text._graphic;\n // if (text) {\n // const textArea = document.createElement('textArea') as HTMLTextAreaElement;\n // const bounds = text.AABBBounds;\n // const theme = getTheme(text).text;\n // const {\n // fontFamily = theme.fontFamily,\n // fontSize = theme.fontSize,\n // fontWeight = theme.fontWeight\n // } = text.attribute;\n // textArea.style.alignSelf = `center`;\n // textArea.style.width = `${bounds.width()}px`;\n // textArea.style.height = `${bounds.height()}px`;\n // textArea.innerText = text.attribute.text;\n // textArea.style.border = 'none';\n // textArea.style.fontFamily = fontFamily;\n // textArea.style.fontSize = fontSize;\n // textArea.style.fontWeight = fontWeight;\n // textArea.style.overflow = 'hidden';\n // textArea.style.outline = 'none';\n // textArea.style.resize = 'none';\n // textArea.style.pointerEvents = 'all';\n // container.appendChild(textArea);\n // }\n\n // // textArea.value = this.activeGraphic;\n // }\n\n protected render() {\n super.render();\n // if (this.domTextEditor) {\n // const container = this.domTextEditor;\n // const { x, y, width, height } = this.rect.attribute;\n // container.style.left = x + 'px';\n // container.style.top = y + 'px';\n // container.style.width = width + 'px';\n // container.style.height = height + 'px';\n // }\n }\n\n // detachDomTextEditor() {\n // // if (this.domTextEditor && this.stage) {\n // // this.stage.window.getContainer().removeChild(this.domTextEditor);\n // // }\n // }\n\n release(): void {\n // this.detachDomTextEditor();\n this.endEditText();\n super.release();\n }\n}\n"]}
@@ -40,7 +40,7 @@ export type IUpdateParams = {
40
40
  text?: string | string[];
41
41
  };
42
42
  export interface ITransformControl extends IGroup {
43
- updateSubBounds: (b: IAABBBoundsLike) => void;
43
+ updateBoundsAndAngle: (b: IAABBBoundsLike, angle: number) => void;
44
44
  onActive: () => void;
45
45
  onUpdate: (cb: (data: IUpdateParams, event?: VRenderPointerEvent) => Partial<IUpdateParams> | false) => void;
46
46
  onEditorEnd: (cb: (event?: VRenderPointerEvent) => void) => void;
@@ -91,7 +91,7 @@ export declare class TransformControl extends AbstractComponent<Required<Transfo
91
91
  private _dragEnd;
92
92
  private _unDragEnd;
93
93
  protected _editorEnd: () => void;
94
- updateSubBounds(bounds: IAABBBoundsLike): void;
94
+ updateBoundsAndAngle(bounds: IAABBBoundsLike, angle: number): void;
95
95
  onActive(): void;
96
96
  initEvent(): void;
97
97
  protected handleMouseMove: (e: any) => void;
@@ -131,6 +131,8 @@ export declare class TransformControl extends AbstractComponent<Required<Transfo
131
131
  shapePoints: IPointLike[];
132
132
  };
133
133
  releaseEvent(): void;
134
+ releaseDragger(): void;
135
+ private _isRelease;
134
136
  release(): void;
135
137
  }
136
138
  export {};
@@ -71,7 +71,7 @@ class TransformControl extends vrender_components_1.AbstractComponent {
71
71
  this.isDragging && (this.dragOffsetX = 0, this.dragOffsetY = 0, this.setActiveGraphic(null),
72
72
  null === (_a = this.editEndCbs) || void 0 === _a || _a.forEach((cb => cb(e))), this.isEditor = !1,
73
73
  this.isDragging = !1);
74
- }, this.editComponent = editComponent, this._editorConfig = {
74
+ }, this._isRelease = !1, this.editComponent = editComponent, this._editorConfig = {
75
75
  move: !1 !== attributes.move,
76
76
  rotate: !1 !== attributes.rotate,
77
77
  resize: !1 !== attributes.resize,
@@ -84,7 +84,7 @@ class TransformControl extends vrender_components_1.AbstractComponent {
84
84
  this.rect = (0, vrender_1.createRect)({
85
85
  fill: "transparent",
86
86
  stroke: !1,
87
- pickable: !0
87
+ pickable: !1
88
88
  }), this.editBorder = (0, vrender_1.createRect)({
89
89
  fill: !1,
90
90
  stroke: !1
@@ -101,7 +101,7 @@ class TransformControl extends vrender_components_1.AbstractComponent {
101
101
  visible: !1
102
102
  }));
103
103
  }
104
- updateSubBounds(bounds) {
104
+ updateBoundsAndAngle(bounds, angle) {
105
105
  var _a, _b;
106
106
  this.rect.setAttributes({
107
107
  x: bounds.x1,
@@ -111,7 +111,8 @@ class TransformControl extends vrender_components_1.AbstractComponent {
111
111
  });
112
112
  const x = (null !== (_a = this.attribute.x) && void 0 !== _a ? _a : 0) + (bounds.x1 + bounds.x2) / 2, y = (null !== (_b = this.attribute.y) && void 0 !== _b ? _b : 0) + (bounds.y1 + bounds.y2) / 2;
113
113
  this.setAttributes({
114
- anchor: [ x, y ]
114
+ anchor: [ x, y ],
115
+ angle: angle
115
116
  });
116
117
  }
117
118
  onActive() {
@@ -396,9 +397,12 @@ class TransformControl extends vrender_components_1.AbstractComponent {
396
397
  this.stage.removeEventListener("pointerup", this.handleDragMouseUp)), this.removeEventListener("pointerout", this.handleMouseOut),
397
398
  this.removeEventListener("pointerdown", this.handleDragMouseDown);
398
399
  }
400
+ releaseDragger() {
401
+ this._dragger && this._dragger.release();
402
+ }
399
403
  release() {
400
- this.releaseEvent(), this.parent.removeChild(this), this.editBorder = null, this.updateCbs = [],
401
- this.editEndCbs = [], this.unTransStartCbs = [], super.release();
404
+ this._isRelease = !0, this.releaseEvent(), this.parent.removeChild(this), this.editBorder = null,
405
+ this.updateCbs = [], this.editEndCbs = [], this.unTransStartCbs = [], super.release();
402
406
  }
403
407
  }
404
408
 
@@ -1 +1 @@
1
- {"version":3,"sources":["../src/edit/edit-component/edit-control/transform-control.ts"],"names":[],"mappings":"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","file":"transform-control.js","sourcesContent":["/**\n * @description PopTip组件\n */\nimport type {\n ICircleGraphicAttribute,\n IPathGraphicAttribute,\n IGraphic,\n IGroupGraphicAttribute,\n IRect,\n IRectGraphicAttribute,\n ILineGraphicAttribute,\n IGroup,\n IGraphicAttribute\n} from '@visactor/vrender';\nimport { createRect } from '@visactor/vrender';\nimport type { IAABBBounds, IAABBBoundsLike, IPointLike } from '@visactor/vutils';\nimport { AABBBounds, merge, normalizePadding, pi } from '@visactor/vutils';\nimport { AbstractComponent } from '@visactor/vrender-components';\nimport { transformPointWithMatrix } from '../../../util/space';\nimport { MinSize } from '../../../constants/attribute';\nimport { normalizeAngle } from '../../../util/math';\nimport { DRAG_ANCHOR_COLOR, SHAPE_SELECT_COLOR } from './constants';\nimport type { VRenderPointerEvent } from '../../../interface/type';\nimport type { IEditComponent } from '../../interface';\nimport { Edit } from '../../edit';\nimport { DragComponent } from './transform-drag';\n// import { EditorActionMode } from './enum';\n\ntype AnchorDirection = 'top' | 'bottom' | 'left-top' | 'left-bottom' | 'right' | 'left' | 'right-top' | 'right-bottom';\n\nconst fixedAngles = [0, Math.PI / 2, Math.PI, (Math.PI * 3) / 2, Math.PI * 2];\nconst maxAngleDifference = (3 / 180) * Math.PI; // 10 degrees\n\nexport type TransformAttributes = {\n padding?: number | [number, number, number, number];\n resizeBorder?: Partial<ILineGraphicAttribute>;\n cornerRect?: Partial<IRectGraphicAttribute>;\n rotateCircle?: Partial<ICircleGraphicAttribute>;\n rotatePath?: Partial<IPathGraphicAttribute> & { size: number };\n handlerLine?: Partial<ILineGraphicAttribute> & { size: number };\n shapeCircle?: Partial<ICircleGraphicAttribute>;\n move?: boolean;\n rotate?: boolean;\n resize?: boolean;\n reshape?: boolean;\n setCursor?: (c: string) => void;\n shapePoints?: IPointLike[];\n isShapePointAbsolute?: boolean;\n /**\n * 支持的锚点\n */\n enabledAnchors?: AnchorDirection[];\n // minSize\n minWidth?: number;\n minHeight?: number;\n proportionalScaling?: boolean;\n} & IGroupGraphicAttribute;\n\nexport type IUpdateParams = {\n x: number;\n y: number;\n width: number;\n height: number;\n angle: number;\n anchor: [number | string, number | string];\n // relative position of shape point\n shapePoints: IPointLike[];\n // text\n text?: string | string[];\n};\n\nconst borderAnchors = ['top', 'bottom', 'left', 'right'];\nconst cornerAnchors = ['left-top', 'right-top', 'left-bottom', 'right-bottom'];\n\nconst anchorPositionMap = {\n top: [0, 0, 1, 0],\n bottom: [0, 1, 1, 1],\n left: [0, 0, 0, 1],\n right: [1, 0, 1, 1],\n\n 'left-top': [0, 0],\n 'right-top': [1, 0],\n 'left-bottom': [0, 1],\n 'right-bottom': [1, 1]\n};\n\nconst anchorCursorMap = {\n 'left-top': 'nwse-resize',\n top: 'ns-resize',\n 'right-top': 'nesw-resize',\n left: 'ew-resize',\n right: 'ew-resize',\n 'left-bottom': 'nesw-resize',\n bottom: 'ns-resize',\n 'right-bottom': 'nwse-resize'\n};\n\nexport interface ITransformControl extends IGroup {\n updateSubBounds: (b: IAABBBoundsLike) => void;\n onActive: () => void;\n onUpdate: (cb: (data: IUpdateParams, event?: VRenderPointerEvent) => Partial<IUpdateParams> | false) => void;\n onEditorEnd: (cb: (event?: VRenderPointerEvent) => void) => void;\n onEditorStart: (cb: (event?: VRenderPointerEvent) => void) => void;\n onUnTransStart: (cb: (event: PointerEvent) => void) => void;\n}\n\nexport class TransformControl extends AbstractComponent<Required<TransformAttributes>> implements ITransformControl {\n name = 'TransformControl';\n rectB: IAABBBounds;\n isDragging: boolean = false;\n dragOffsetX: number;\n dragOffsetY: number;\n dragStartAngle: number = 0;\n activeGraphic: IGraphic | null;\n horizontalResizble: number;\n verticalResizble: number;\n rotatable: number;\n reshapeState: number;\n rect: IRect;\n editBorder: IRect;\n // state: {\n // actionMode: EditorActionMode;\n // };\n // 是否正在执行addChildUpdateBoundTag,避免循环调用\n runningAddChildUpdateBoundTag: boolean;\n\n updateCbs: Array<(data: IUpdateParams, event?: VRenderPointerEvent) => Partial<IUpdateParams> | false>;\n editEndCbs: Array<(event?: VRenderPointerEvent) => void>;\n editStartCbs: Array<(event?: VRenderPointerEvent) => void>;\n unTransStartCbs: Array<(event: PointerEvent) => void>;\n\n isEditor: boolean = false;\n\n _editorConfig: {\n move: boolean;\n rotate: boolean;\n resize: boolean;\n reshape: boolean;\n };\n\n minSize: { width: number; height: number } = { width: MinSize, height: MinSize };\n\n proportionalScaling: boolean = false;\n // 缩放前的属性\n _rectBeforeScale: IRectGraphicAttribute;\n // 缩放前的点击位置,用来进行等比缩放处理缩放比\n _eventPosBeforeScale: any;\n\n _setCursor: (c: string) => void = null;\n\n editComponent: IEditComponent;\n\n // drag\n _dragger: DragComponent;\n private _lastBoxInDrag: IRect;\n\n static defaultAttributes: Partial<TransformAttributes> = {\n // 去掉padding\n // padding: 2,\n resizeBorder: {\n stroke: SHAPE_SELECT_COLOR,\n lineWidth: 1\n },\n cornerRect: {\n fill: 'white',\n stroke: SHAPE_SELECT_COLOR,\n lineWidth: 1,\n width: 8,\n height: 8,\n cornerRadius: 2\n },\n rotateCircle: {\n fill: 'white',\n stroke: SHAPE_SELECT_COLOR,\n radius: 10\n },\n rotatePath: {\n fill: '#000000',\n size: 12,\n angle: Math.PI,\n // eslint-disable-next-line\n path: 'M202.403,95.22c0,46.312-33.237,85.002-77.109,93.484v25.663l-69.76-40l69.76-40v23.494 c27.176-7.87,47.109-32.964,47.109-62.642c0-35.962-29.258-65.22-65.22-65.22s-65.22,29.258-65.22,65.22 c0,9.686,2.068,19.001,6.148,27.688l-27.154,12.754c-5.968-12.707-8.994-26.313-8.994-40.441C11.964,42.716,54.68,0,107.184,0 S202.403,42.716,202.403,95.22z'\n },\n handlerLine: {\n stroke: SHAPE_SELECT_COLOR,\n lineWidth: 1,\n size: 24\n },\n shapeCircle: {\n fill: 'white',\n lineWidth: 1,\n radius: 4,\n stroke: DRAG_ANCHOR_COLOR,\n startAngle: 0,\n endAngle: Math.PI * 2\n }\n };\n\n constructor(editComponent: IEditComponent, attributes: Partial<TransformAttributes>) {\n super(merge({ shadowRootIdx: 1 }, TransformControl.defaultAttributes, attributes));\n this.editComponent = editComponent;\n this._editorConfig = {\n move: attributes.move !== false,\n rotate: attributes.rotate !== false,\n resize: attributes.resize !== false,\n reshape: attributes.reshape !== false\n };\n // this.state = {\n // actionMode: EditorActionMode.addTool\n // };\n this.rectB = new AABBBounds();\n this.dragOffsetX = 0;\n this.dragOffsetY = 0;\n this.activeGraphic = null;\n this.horizontalResizble = 0;\n this.verticalResizble = 0;\n this.rotatable = 0;\n this.runningAddChildUpdateBoundTag = false;\n this.minSize.width = attributes.minWidth ?? MinSize;\n this.minSize.height = attributes.minHeight ?? MinSize;\n this.proportionalScaling = attributes.proportionalScaling === true;\n this._setCursor = attributes.setCursor;\n this.rect = createRect({\n fill: 'transparent',\n stroke: false,\n pickable: true\n });\n // this.rect.attachShadow();\n this.editBorder = createRect({\n fill: false,\n stroke: false\n });\n this.editBorder.attachShadow();\n this.add(this.rect);\n this.add(this.editBorder);\n this.editStartCbs = [];\n this.unTransStartCbs = [];\n this.updateCbs = [];\n this.editEndCbs = [];\n }\n\n addDrag() {\n if (!this.stage) {\n return;\n }\n this._dragger = new DragComponent(this.stage);\n this._dragger.dragHandler(this._dragElement);\n this._dragger.dragEndHandler(this._dragEnd);\n this._dragger.unDragEndHandler(this._unDragEnd);\n this._lastBoxInDrag = createRect({\n pickable: false,\n stroke: SHAPE_SELECT_COLOR,\n strokeOpacity: 0.4,\n visible: false\n });\n }\n\n protected _dragElement = (moveX: number, moveY: number) => {\n this._lastBoxInDrag.setAttribute('visible', true);\n const scale = this.stage.defaultLayer?.globalTransMatrix.a ?? 1;\n this.moveBy(moveX / scale, moveY / scale);\n };\n private _dragEnd = () => {\n this._editorEnd();\n };\n private _unDragEnd = () => {\n this._editorEnd();\n };\n\n protected _editorEnd = () => {\n // this._endHandler(this._editorBox.getTransformAttribute());\n // this._editorBox.isEditor = false;\n // this._snapLineX.setAttributes({ visible: false });\n // this._snapLineY.setAttributes({ visible: false });\n\n // this._snapTargetBoxX.setAttributes({ visible: false });\n // this._snapTargetBoxY.setAttributes({ visible: false });\n\n this._lastBoxInDrag.setAttribute('visible', false);\n // this._opt.editorEvent.setCursorSyncToTriggerLayer();\n };\n\n updateSubBounds(bounds: IAABBBoundsLike) {\n // set bounds\n this.rect.setAttributes({\n x: bounds.x1,\n y: bounds.y1,\n width: bounds.x2 - bounds.x1,\n height: bounds.y2 - bounds.y1\n });\n\n // set anchor\n const x = (this.attribute.x ?? 0) + (bounds.x1 + bounds.x2) / 2;\n const y = (this.attribute.y ?? 0) + (bounds.y1 + bounds.y2) / 2;\n this.setAttributes({ anchor: [x, y] });\n }\n\n onActive() {\n this.initEvent();\n }\n\n initEvent() {\n // cursor\n this.editBorder.addEventListener('mousemove', this.handleMouseMove);\n this.addEventListener('pointerout', this.handleMouseOut);\n\n // drag\n this.addEventListener('pointerdown', this.handleDragMouseDown);\n this.addDrag();\n\n this.stage.addEventListener('pointermove', this.handleDragMouseMove);\n this.stage.addEventListener('pointerup', this.handleDragMouseUp);\n }\n\n protected handleMouseMove = (e: any) => {\n if (e.pickParams) {\n const { shadowTarget } = e.pickParams;\n this.setCursor(shadowTarget.attribute.cursor);\n } else {\n this.setCursor();\n }\n };\n\n protected handleMouseOut = (e: any) => {\n this.setCursor();\n };\n\n protected handleDragMouseDown = (e: any) => {\n this.isEditor = true;\n this.editStartCbs.forEach(cb => cb(e));\n const layerPos = transformPointWithMatrix(this.layer.globalTransMatrix.getInverse(), e.offset);\n this.dragOffsetX = layerPos.x;\n this.dragOffsetY = layerPos.y;\n\n const { shadowTarget } = e.pickParams || {};\n // 开启move\n if (shadowTarget && this.stage) {\n this.setActiveGraphic(shadowTarget);\n this._rectBeforeScale = { ...this.rect.attribute };\n this._eventPosBeforeScale = layerPos;\n this.isDragging = true;\n this.dragStartAngle = this.attribute.angle ?? 0;\n } else {\n this.unTransStartCbs.forEach(cb => cb(e));\n this._dragger.startDrag(e);\n }\n };\n\n protected handleDragMouseMove = (e: any) => {\n if (!this.isDragging) {\n return;\n }\n // this._editComponent.isEditing = true;\n const layerPos = transformPointWithMatrix(this.layer.globalTransMatrix.getInverse(), e.offset);\n\n const dx = layerPos.x - this.dragOffsetX;\n const dy = layerPos.y - this.dragOffsetY;\n\n if (dx === 0 && dy === 0) {\n return;\n }\n\n if (this.rotatable) {\n this.handleRotate(layerPos);\n this.dispatchUpdate(e);\n } else if (this.reshapeState) {\n this._handleReshape(dx, dy);\n this.dispatchUpdate(e);\n } else {\n this._handleScale(dx, dy, e);\n this.dispatchUpdate(e);\n }\n\n this.dragOffsetX = layerPos.x;\n this.dragOffsetY = layerPos.y;\n };\n\n protected handleDragMouseUp = (e: any) => {\n if (!this.isDragging) {\n return;\n }\n // this._editComponent.isEditing = false;\n this.dragOffsetX = 0;\n this.dragOffsetY = 0;\n this.setActiveGraphic(null);\n this.editEndCbs?.forEach(cb => cb(e));\n this.isEditor = false;\n this.isDragging = false;\n };\n\n protected setCursor(c?: string) {\n if (this.stage) {\n this.stage.setCursor(c);\n this._setCursor?.(c);\n }\n }\n\n protected setActiveGraphic(g: IGraphic | null) {\n this.activeGraphic = g;\n // 设置resize的方向\n let reset = true;\n if (g && g.name) {\n reset = false;\n const name = g.name;\n const dirList = name.split('-');\n const type = dirList.shift();\n if (type === 'scale') {\n if (dirList.length === 2) {\n this.horizontalResizble = dirList[0] === 'left' ? -1 : 1;\n this.verticalResizble = dirList[1] === 'top' ? -1 : 1;\n } else {\n const dir = dirList[0];\n const h = dir === 'left' || dir === 'right';\n this.horizontalResizble = h ? (dirList[0] === 'left' ? -1 : 1) : 0;\n this.verticalResizble = h ? 0 : dirList[0] === 'top' ? -1 : 1;\n }\n this.rotatable = 0;\n } else if (type === 'rotate') {\n this.rotatable = 1;\n this.horizontalResizble = 0;\n this.verticalResizble = 0;\n } else if (type === 'reshape') {\n this.reshapeState = Number.parseInt(dirList[0], 10) + 1;\n this.rotatable = 0;\n this.horizontalResizble = 0;\n this.verticalResizble = 0;\n } else {\n reset = true;\n }\n }\n if (reset) {\n this.horizontalResizble = 0;\n this.verticalResizble = 0;\n this.rotatable = 0;\n this.reshapeState = 0;\n }\n }\n\n // 非等比缩放\n protected handleScale(dx: number, dy: number) {\n const { anchor, x, y, width, height } = this._getRectWithOffset(dx, dy, this.rect.attribute).attribute;\n if (width < this.minSize.width) {\n return;\n }\n if (height < this.minSize.height) {\n return;\n }\n this.rect.setAttributes({\n width,\n height,\n x,\n y\n });\n this.setAttributes({\n anchor: anchor as [number | string, number | string]\n });\n }\n\n // 缩放\n private _handleScale(dx: number, dy: number, e: any) {\n if (this.proportionalScaling) {\n this._handleScaleProportional(dx, dy, e);\n } else {\n this.handleScale(dx, dy);\n }\n }\n\n // 等比缩放\n private _handleScaleProportional(dx: number, dy: number, e: any) {\n const layerPos = transformPointWithMatrix(this.layer.globalTransMatrix.getInverse(), e.offset);\n const { attribute, temp } = this._getRectWithOffset(\n layerPos.x - this._eventPosBeforeScale.x,\n layerPos.y - this._eventPosBeforeScale.y,\n this._rectBeforeScale\n );\n\n const maxScale = Math.max(\n attribute.width / this._rectBeforeScale.width,\n attribute.height / this._rectBeforeScale.height\n );\n const finalWidth = this._rectBeforeScale.width * maxScale;\n const finalHeight = this._rectBeforeScale.height * maxScale;\n if (finalWidth < this.minSize.width) {\n return;\n }\n if (finalHeight < this.minSize.height) {\n return;\n }\n let nextP2 = temp.nextP2;\n const nextP1 = temp.nextP1;\n\n const angle = this.getAngle();\n // console.log('_handleScaleProportional', nextP1, nextP2, angle, this.verticalResizble, this.horizontalResizble);\n\n // v 1 h 1\n // 拖动的右下角 不需要改变\n if (this.verticalResizble > 0 && this.horizontalResizble > 0) {\n nextP2 = this._getRectP2(nextP1, { width: finalWidth, height: finalHeight }, angle);\n }\n // 1 h -1\n // 拖动的左下角 以右上角为基准\n else if (this.verticalResizble > 0 && this.horizontalResizble < 0) {\n const lockPos = {\n // 锁定角位置\n x: nextP1.x + attribute.width * Math.cos(angle),\n y: nextP1.y + attribute.width * Math.sin(angle)\n };\n // final下的 p1 与 p2\n nextP1.x = lockPos.x - finalWidth * Math.cos(angle);\n nextP1.y = lockPos.y - finalWidth * Math.sin(angle);\n nextP2 = this._getRectP2(nextP1, { width: finalWidth, height: finalHeight }, angle);\n }\n // -1 h 1\n // 拖动的右上角 以左下角为基准\n if (this.verticalResizble < 0 && this.horizontalResizble > 0) {\n const lockPos = {\n // 锁定角位置\n x: nextP1.x - attribute.height * Math.sin(angle),\n y: nextP1.y + attribute.height * Math.cos(angle)\n };\n // final下的 p1 与 p2\n (nextP1.x = lockPos.x + finalHeight * Math.sin(angle)), (nextP1.y = lockPos.y - finalHeight * Math.cos(angle));\n nextP2 = this._getRectP2(nextP1, { width: finalWidth, height: finalHeight }, angle);\n }\n // -1 h 1\n // 拖动的左上角 以右下角为基准\n if (this.verticalResizble < 0 && this.horizontalResizble < 0) {\n // p2 锁定 ,计算 p1\n nextP1.x = nextP2.x - Math.cos(angle) * finalWidth + Math.sin(angle) * finalHeight;\n nextP1.y = nextP2.y - Math.sin(angle) * finalWidth - Math.cos(angle) * finalHeight;\n }\n\n const center = {\n x: (nextP1.x + nextP2.x) / 2,\n y: (nextP1.y + nextP2.y) / 2\n };\n this.rect.setAttributes({\n width: finalWidth,\n height: finalHeight,\n x: center.x - finalWidth / 2,\n y: center.y - finalHeight / 2\n });\n this.setAttributes({\n anchor: [center.x, center.y]\n });\n }\n\n private _handleReshape(dx: number, dy: number) {\n const { width, height } = this.rect.attribute;\n const { shapePoints } = this.attribute;\n const angle = this.getAngle();\n const _dx = dx;\n const _dy = dy;\n dx = Math.cos(angle) * _dx + Math.sin(angle) * _dy;\n dy = Math.cos(angle + pi / 2) * _dx + Math.sin(angle + pi / 2) * _dy;\n if (!this.attribute.isShapePointAbsolute) {\n dx /= width;\n dy /= height;\n }\n const nextShapePoints = shapePoints.map((shapePoint, i) => {\n return i + 1 === this.reshapeState ? { x: shapePoint.x + dx, y: shapePoint.y + dy } : shapePoint;\n });\n this.setAttributes({\n shapePoints: nextShapePoints\n });\n }\n\n private _getRectWithOffset(dx: number, dy: number, lastAttribute: IRectGraphicAttribute) {\n // 投影得到旋转前的dx和dy\n const angle = this.getAngle();\n const _dx = dx;\n const _dy = dy;\n dx = Math.cos(angle) * _dx + Math.sin(angle) * _dy;\n dy = Math.cos(angle + pi / 2) * _dx + Math.sin(angle + pi / 2) * _dy;\n\n dx *= this.horizontalResizble;\n dy *= this.verticalResizble;\n\n const { x, y, width, height } = lastAttribute;\n\n const m = this.transMatrix;\n // 原始的x和y位置\n const nextP1 = {\n x: m.a * x + m.c * y + m.e,\n y: m.b * x + m.d * y + m.f\n };\n const nextP2 = {\n x: m.a * (x + width) + m.c * (y + height) + m.e,\n y: m.b * (x + width) + m.d * (y + height) + m.f\n };\n if (this.horizontalResizble < 0) {\n nextP1.x -= Math.cos(angle) * dx;\n nextP1.y -= Math.sin(angle) * dx;\n } else if (this.horizontalResizble > 0) {\n nextP2.x += Math.cos(angle) * dx;\n nextP2.y += Math.sin(angle) * dx;\n }\n\n if (this.verticalResizble < 0) {\n nextP1.x -= Math.cos(angle + pi / 2) * dy;\n nextP1.y -= Math.sin(angle + pi / 2) * dy;\n } else if (this.verticalResizble > 0) {\n nextP2.x += Math.cos(angle + pi / 2) * dy;\n nextP2.y += Math.sin(angle + pi / 2) * dy;\n }\n\n const center = {\n x: (nextP1.x + nextP2.x) / 2,\n y: (nextP1.y + nextP2.y) / 2\n };\n\n const tw = width + dx;\n const th = height + dy;\n\n // 返回属性计算结果+当前计算过程的重要变量\n return {\n attribute: {\n width: tw,\n height: th,\n x: center.x - tw / 2,\n y: center.y - th / 2,\n anchor: [center.x, center.y]\n },\n temp: {\n nextP1,\n nextP2,\n dx,\n dy\n }\n };\n }\n\n private _getRectP2(p1: { x: number; y: number }, size: { width: number; height: number }, angle: number) {\n return {\n x: p1.x + Math.cos(angle) * size.width - Math.sin(angle) * size.height,\n y: p1.y + Math.sin(angle) * size.width + Math.cos(angle) * size.height\n };\n }\n\n protected handleRotate(currentPoint: { x: number; y: number }) {\n const originB = this.rectB;\n const cx = (originB.x1 + originB.x2) / 2;\n const cy = (originB.y1 + originB.y2) / 2;\n\n const vectorDrag = { x: this._eventPosBeforeScale.x - cx, y: this._eventPosBeforeScale.y - cy };\n const vectorCurrent = { x: currentPoint.x - cx, y: currentPoint.y - cy };\n const dot = vectorDrag.x * vectorCurrent.x + vectorDrag.y * vectorCurrent.y;\n const modDrag = Math.sqrt(vectorDrag.x ** 2 + vectorDrag.y ** 2);\n const modCurrent = Math.sqrt(vectorCurrent.x ** 2 + vectorCurrent.y ** 2);\n const cosAngle = dot / (modDrag * modCurrent);\n const cross = vectorDrag.x * vectorCurrent.y - vectorDrag.y * vectorCurrent.x;\n const delta = cross < 0 ? Math.PI * 2 - Math.acos(cosAngle) : Math.acos(cosAngle);\n\n this.setAttributes({\n angle: this.fixAngle(this.dragStartAngle + delta),\n anchor: [cx, cy]\n });\n }\n\n private fixAngle(angle: number) {\n angle = normalizeAngle(angle);\n for (const fixedAngle of fixedAngles) {\n if (angle >= fixedAngle - maxAngleDifference && angle <= fixedAngle + maxAngleDifference) {\n return fixedAngle;\n }\n }\n return angle;\n }\n\n getAngle(): number {\n if (!this.attribute.postMatrix) {\n return this.attribute.angle ?? 0;\n }\n const m = this.transMatrix;\n return Math.atan2(m.b, m.a);\n }\n\n protected render() {\n const {\n resizeBorder,\n padding,\n cornerRect,\n rotateCircle,\n rotatePath,\n handlerLine,\n shapeCircle,\n enabledAnchors = ['top', 'bottom', 'left-top', 'left-bottom', 'right', 'left', 'right-top', 'right-bottom'],\n shapePoints = [],\n isShapePointAbsolute\n } = this.attribute as TransformAttributes;\n\n const root = this.editBorder.shadowRoot;\n if (!root || this.count === 1) {\n return;\n }\n\n const parsedPadding = normalizePadding(padding as any);\n const { x = 0, y = 0, width: w = 0, height: h = 0 } = this.rect.attribute;\n this.rectB.setValue(x, y, x + w, y + h);\n\n const minX = x - parsedPadding[3];\n const minY = y - parsedPadding[0];\n const width = w + parsedPadding[1] + parsedPadding[3];\n const height = h + parsedPadding[0] + parsedPadding[2];\n\n borderAnchors.forEach((anchor, i) => {\n const enableResize = this._editorConfig.resize && enabledAnchors.includes(anchor as AnchorDirection);\n const item = anchorPositionMap[anchor];\n const cursor = enableResize ? anchorCursorMap[anchor] : 'default';\n root.createOrUpdateChild(\n enableResize ? `scale-${anchor}` : `stroke-line-${anchor}`,\n {\n x: minX,\n y: minY,\n points: [\n { x: item[0] * width, y: item[1] * height },\n { x: item[2] * width, y: item[3] * height }\n ],\n cursor,\n ...resizeBorder\n },\n 'line'\n );\n });\n\n if (this._editorConfig.rotate) {\n // 添加顶部\n root.createOrUpdateChild(\n 'top-handler-line',\n {\n x: minX + width / 2,\n y: minY,\n points: [\n { x: 0, y: 0 },\n { x: 0, y: -handlerLine.size }\n ],\n ...handlerLine\n },\n 'line'\n );\n root.createOrUpdateChild(\n `rotate-all`,\n {\n x: minX + width / 2,\n y: minY - handlerLine.size - rotateCircle.radius,\n cursor: 'grab',\n ...rotateCircle\n },\n 'circle'\n );\n root.createOrUpdateChild(\n `path-rotate`,\n {\n pickable: false,\n x: minX + width / 2 + rotatePath.size / 2,\n y: minY - handlerLine.size + rotatePath.size / 2 - rotateCircle.radius,\n scaleX: rotatePath.size / 200,\n scaleY: rotatePath.size / 200,\n cursor: 'grab',\n dx: 0.5,\n dy: -0.5,\n ...rotatePath\n },\n 'path'\n );\n }\n\n // 添加锚点\n if (this._editorConfig.resize) {\n enabledAnchors.forEach((anchor: string) => {\n if (!cornerAnchors.includes(anchor)) {\n return;\n }\n const item = anchorPositionMap[anchor];\n const cursor = anchorCursorMap[anchor];\n root.createOrUpdateChild(\n `scale-${anchor}`,\n {\n x: minX + item[0] * width - cornerRect.width! / 2,\n y: minY + item[1] * height - cornerRect.height! / 2,\n cursor,\n ...cornerRect\n },\n 'rect'\n );\n });\n }\n\n if (this._editorConfig.reshape) {\n const shapePointsChildren = root.children.filter((child: any) => child.name.startsWith('reshape'));\n if (shapePointsChildren.length !== shapePoints.length) {\n shapePointsChildren.forEach((child: any) => root.removeChild(child));\n }\n shapePoints.forEach((point, i) => {\n root.createOrUpdateChild(\n `reshape-${i}`,\n {\n x: isShapePointAbsolute ? point.x : point.x * w + x,\n y: isShapePointAbsolute ? point.y : point.y * h + y,\n cursor: 'move',\n ...shapeCircle\n },\n 'circle'\n );\n });\n }\n }\n\n moveBy(dx: number, dy: number): this {\n const { x, y, width, height } = this.rect.attribute;\n this.rect.setAttributes({\n width: width,\n height: height,\n x: x + dx,\n y: y + dy\n });\n this.setAttributes({\n anchor: [x + dx + width / 2, y + dy + height / 2]\n });\n this.dispatchUpdate();\n return this;\n }\n\n dispatchUpdate(e?: any) {\n const out = this.getTransformAttribute();\n this.updateCbs.forEach(cb => {\n const data = cb(out, e);\n if (data) {\n const { x, y, width, height, anchor, angle, shapePoints } = data;\n Number.isFinite(x) && this.rect.setAttribute('x', x);\n Number.isFinite(y) && this.rect.setAttribute('y', y);\n Number.isFinite(width) && this.rect.setAttribute('width', width);\n Number.isFinite(height) && this.rect.setAttribute('height', height);\n anchor && this.setAttribute('anchor', anchor);\n Number.isFinite(angle) && this.setAttribute('angle', angle);\n shapePoints && this.setAttribute('shapePoints', shapePoints);\n }\n });\n }\n\n onUpdate(cb: (data: IUpdateParams, event?: VRenderPointerEvent) => Partial<IUpdateParams> | false) {\n this.updateCbs.push(cb);\n }\n\n onEditorEnd(cb: (event?: VRenderPointerEvent) => void) {\n this.editEndCbs.push(cb);\n }\n onEditorStart(cb: (event?: VRenderPointerEvent) => void) {\n this.editStartCbs.push(cb);\n }\n onUnTransStart(cb: (event: PointerEvent) => void) {\n this.unTransStartCbs.push(cb);\n }\n\n addChildUpdateBoundTag() {\n super.addChildUpdateBoundTag();\n\n // 如果wrap内的内容bounds变化,那就需要重新调用render\n if (this.runningAddChildUpdateBoundTag) {\n return;\n }\n this.runningAddChildUpdateBoundTag = true;\n\n this.render();\n\n this.runningAddChildUpdateBoundTag = false;\n }\n\n getTransformAttribute() {\n const { x, y, width, height } = this.rect.attribute;\n const { angle, anchor, shapePoints } = this.attribute;\n return {\n x,\n y,\n width,\n height,\n angle,\n anchor,\n shapePoints\n };\n }\n\n releaseEvent() {\n this.editBorder.removeEventListener('mousemove', this.handleMouseMove);\n if (this.stage) {\n this.stage.removeEventListener('pointermove', this.handleDragMouseMove);\n this.stage.removeEventListener('pointerup', this.handleDragMouseUp);\n }\n this.removeEventListener('pointerout', this.handleMouseOut);\n this.removeEventListener('pointerdown', this.handleDragMouseDown);\n }\n\n release(): void {\n // event\n this.releaseEvent();\n\n this.parent.removeChild(this);\n this.editBorder = null;\n this.updateCbs = [];\n this.editEndCbs = [];\n this.unTransStartCbs = [];\n super.release();\n }\n}\n"]}
1
+ {"version":3,"sources":["../src/edit/edit-component/edit-control/transform-control.ts"],"names":[],"mappings":"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","file":"transform-control.js","sourcesContent":["/**\n * @description PopTip组件\n */\nimport type {\n ICircleGraphicAttribute,\n IPathGraphicAttribute,\n IGraphic,\n IGroupGraphicAttribute,\n IRect,\n IRectGraphicAttribute,\n ILineGraphicAttribute,\n IGroup,\n IGraphicAttribute\n} from '@visactor/vrender';\nimport { createRect } from '@visactor/vrender';\nimport type { IAABBBounds, IAABBBoundsLike, IPointLike } from '@visactor/vutils';\nimport { AABBBounds, merge, normalizePadding, pi } from '@visactor/vutils';\nimport { AbstractComponent } from '@visactor/vrender-components';\nimport { transformPointWithMatrix } from '../../../util/space';\nimport { MinSize } from '../../../constants/attribute';\nimport { normalizeAngle } from '../../../util/math';\nimport { DRAG_ANCHOR_COLOR, SHAPE_SELECT_COLOR } from './constants';\nimport type { VRenderPointerEvent } from '../../../interface/type';\nimport type { IEditComponent } from '../../interface';\nimport { Edit } from '../../edit';\nimport { DragComponent } from './transform-drag';\nimport { StoryEvent } from '../../../story/interface';\n// import { EditorActionMode } from './enum';\n\ntype AnchorDirection = 'top' | 'bottom' | 'left-top' | 'left-bottom' | 'right' | 'left' | 'right-top' | 'right-bottom';\n\nconst fixedAngles = [0, Math.PI / 2, Math.PI, (Math.PI * 3) / 2, Math.PI * 2];\nconst maxAngleDifference = (3 / 180) * Math.PI; // 10 degrees\n\nexport type TransformAttributes = {\n padding?: number | [number, number, number, number];\n resizeBorder?: Partial<ILineGraphicAttribute>;\n cornerRect?: Partial<IRectGraphicAttribute>;\n rotateCircle?: Partial<ICircleGraphicAttribute>;\n rotatePath?: Partial<IPathGraphicAttribute> & { size: number };\n handlerLine?: Partial<ILineGraphicAttribute> & { size: number };\n shapeCircle?: Partial<ICircleGraphicAttribute>;\n move?: boolean;\n rotate?: boolean;\n resize?: boolean;\n reshape?: boolean;\n setCursor?: (c: string) => void;\n shapePoints?: IPointLike[];\n isShapePointAbsolute?: boolean;\n /**\n * 支持的锚点\n */\n enabledAnchors?: AnchorDirection[];\n // minSize\n minWidth?: number;\n minHeight?: number;\n proportionalScaling?: boolean;\n} & IGroupGraphicAttribute;\n\nexport type IUpdateParams = {\n x: number;\n y: number;\n width: number;\n height: number;\n angle: number;\n anchor: [number | string, number | string];\n // relative position of shape point\n shapePoints: IPointLike[];\n // text\n text?: string | string[];\n};\n\nconst borderAnchors = ['top', 'bottom', 'left', 'right'];\nconst cornerAnchors = ['left-top', 'right-top', 'left-bottom', 'right-bottom'];\n\nconst anchorPositionMap = {\n top: [0, 0, 1, 0],\n bottom: [0, 1, 1, 1],\n left: [0, 0, 0, 1],\n right: [1, 0, 1, 1],\n\n 'left-top': [0, 0],\n 'right-top': [1, 0],\n 'left-bottom': [0, 1],\n 'right-bottom': [1, 1]\n};\n\nconst anchorCursorMap = {\n 'left-top': 'nwse-resize',\n top: 'ns-resize',\n 'right-top': 'nesw-resize',\n left: 'ew-resize',\n right: 'ew-resize',\n 'left-bottom': 'nesw-resize',\n bottom: 'ns-resize',\n 'right-bottom': 'nwse-resize'\n};\n\nexport interface ITransformControl extends IGroup {\n updateBoundsAndAngle: (b: IAABBBoundsLike, angle: number) => void;\n onActive: () => void;\n onUpdate: (cb: (data: IUpdateParams, event?: VRenderPointerEvent) => Partial<IUpdateParams> | false) => void;\n onEditorEnd: (cb: (event?: VRenderPointerEvent) => void) => void;\n onEditorStart: (cb: (event?: VRenderPointerEvent) => void) => void;\n onUnTransStart: (cb: (event: PointerEvent) => void) => void;\n}\n\nexport class TransformControl extends AbstractComponent<Required<TransformAttributes>> implements ITransformControl {\n name = 'TransformControl';\n rectB: IAABBBounds;\n isDragging: boolean = false;\n dragOffsetX: number;\n dragOffsetY: number;\n dragStartAngle: number = 0;\n activeGraphic: IGraphic | null;\n horizontalResizble: number;\n verticalResizble: number;\n rotatable: number;\n reshapeState: number;\n rect: IRect;\n editBorder: IRect;\n // state: {\n // actionMode: EditorActionMode;\n // };\n // 是否正在执行addChildUpdateBoundTag,避免循环调用\n runningAddChildUpdateBoundTag: boolean;\n\n updateCbs: Array<(data: IUpdateParams, event?: VRenderPointerEvent) => Partial<IUpdateParams> | false>;\n editEndCbs: Array<(event?: VRenderPointerEvent) => void>;\n editStartCbs: Array<(event?: VRenderPointerEvent) => void>;\n unTransStartCbs: Array<(event: PointerEvent) => void>;\n\n isEditor: boolean = false;\n\n _editorConfig: {\n move: boolean;\n rotate: boolean;\n resize: boolean;\n reshape: boolean;\n };\n\n minSize: { width: number; height: number } = { width: MinSize, height: MinSize };\n\n proportionalScaling: boolean = false;\n // 缩放前的属性\n _rectBeforeScale: IRectGraphicAttribute;\n // 缩放前的点击位置,用来进行等比缩放处理缩放比\n _eventPosBeforeScale: any;\n\n _setCursor: (c: string) => void = null;\n\n editComponent: IEditComponent;\n\n // drag\n _dragger: DragComponent;\n private _lastBoxInDrag: IRect;\n\n static defaultAttributes: Partial<TransformAttributes> = {\n // 去掉padding\n // padding: 2,\n resizeBorder: {\n stroke: SHAPE_SELECT_COLOR,\n lineWidth: 1\n },\n cornerRect: {\n fill: 'white',\n stroke: SHAPE_SELECT_COLOR,\n lineWidth: 1,\n width: 8,\n height: 8,\n cornerRadius: 2\n },\n rotateCircle: {\n fill: 'white',\n stroke: SHAPE_SELECT_COLOR,\n radius: 10\n },\n rotatePath: {\n fill: '#000000',\n size: 12,\n angle: Math.PI,\n // eslint-disable-next-line\n path: 'M202.403,95.22c0,46.312-33.237,85.002-77.109,93.484v25.663l-69.76-40l69.76-40v23.494 c27.176-7.87,47.109-32.964,47.109-62.642c0-35.962-29.258-65.22-65.22-65.22s-65.22,29.258-65.22,65.22 c0,9.686,2.068,19.001,6.148,27.688l-27.154,12.754c-5.968-12.707-8.994-26.313-8.994-40.441C11.964,42.716,54.68,0,107.184,0 S202.403,42.716,202.403,95.22z'\n },\n handlerLine: {\n stroke: SHAPE_SELECT_COLOR,\n lineWidth: 1,\n size: 24\n },\n shapeCircle: {\n fill: 'white',\n lineWidth: 1,\n radius: 4,\n stroke: DRAG_ANCHOR_COLOR,\n startAngle: 0,\n endAngle: Math.PI * 2\n }\n };\n\n constructor(editComponent: IEditComponent, attributes: Partial<TransformAttributes>) {\n super(merge({ shadowRootIdx: 1 }, TransformControl.defaultAttributes, attributes));\n this.editComponent = editComponent;\n this._editorConfig = {\n move: attributes.move !== false,\n rotate: attributes.rotate !== false,\n resize: attributes.resize !== false,\n reshape: attributes.reshape !== false\n };\n // this.state = {\n // actionMode: EditorActionMode.addTool\n // };\n this.rectB = new AABBBounds();\n this.dragOffsetX = 0;\n this.dragOffsetY = 0;\n this.activeGraphic = null;\n this.horizontalResizble = 0;\n this.verticalResizble = 0;\n this.rotatable = 0;\n this.runningAddChildUpdateBoundTag = false;\n this.minSize.width = attributes.minWidth ?? MinSize;\n this.minSize.height = attributes.minHeight ?? MinSize;\n this.proportionalScaling = attributes.proportionalScaling === true;\n this._setCursor = attributes.setCursor;\n this.rect = createRect({\n fill: 'transparent',\n stroke: false,\n pickable: false\n });\n // this.rect.attachShadow();\n this.editBorder = createRect({\n fill: false,\n stroke: false\n });\n this.editBorder.attachShadow();\n this.add(this.rect);\n this.add(this.editBorder);\n this.editStartCbs = [];\n this.unTransStartCbs = [];\n this.updateCbs = [];\n this.editEndCbs = [];\n }\n\n addDrag() {\n if (!this.stage) {\n return;\n }\n this._dragger = new DragComponent(this.stage);\n this._dragger.dragHandler(this._dragElement);\n this._dragger.dragEndHandler(this._dragEnd);\n this._dragger.unDragEndHandler(this._unDragEnd);\n this._lastBoxInDrag = createRect({\n pickable: false,\n stroke: SHAPE_SELECT_COLOR,\n strokeOpacity: 0.4,\n visible: false\n });\n }\n\n protected _dragElement = (moveX: number, moveY: number) => {\n this._lastBoxInDrag.setAttribute('visible', true);\n const scale = this.stage.defaultLayer?.globalTransMatrix.a ?? 1;\n this.moveBy(moveX / scale, moveY / scale);\n };\n private _dragEnd = () => {\n this._editorEnd();\n };\n private _unDragEnd = () => {\n this._editorEnd();\n };\n\n protected _editorEnd = () => {\n // this._endHandler(this._editorBox.getTransformAttribute());\n // this._editorBox.isEditor = false;\n // this._snapLineX.setAttributes({ visible: false });\n // this._snapLineY.setAttributes({ visible: false });\n\n // this._snapTargetBoxX.setAttributes({ visible: false });\n // this._snapTargetBoxY.setAttributes({ visible: false });\n\n this._lastBoxInDrag.setAttribute('visible', false);\n // this._opt.editorEvent.setCursorSyncToTriggerLayer();\n };\n\n updateBoundsAndAngle(bounds: IAABBBoundsLike, angle: number) {\n // set bounds\n this.rect.setAttributes({\n x: bounds.x1,\n y: bounds.y1,\n width: bounds.x2 - bounds.x1,\n height: bounds.y2 - bounds.y1\n });\n\n // set anchor\n const x = (this.attribute.x ?? 0) + (bounds.x1 + bounds.x2) / 2;\n const y = (this.attribute.y ?? 0) + (bounds.y1 + bounds.y2) / 2;\n this.setAttributes({ anchor: [x, y], angle });\n }\n\n onActive() {\n this.initEvent();\n }\n\n initEvent() {\n // cursor\n this.editBorder.addEventListener('mousemove', this.handleMouseMove);\n this.addEventListener('pointerout', this.handleMouseOut);\n\n // drag\n this.addEventListener('pointerdown', this.handleDragMouseDown);\n this.addDrag();\n\n this.stage.addEventListener('pointermove', this.handleDragMouseMove);\n this.stage.addEventListener('pointerup', this.handleDragMouseUp);\n }\n\n protected handleMouseMove = (e: any) => {\n if (e.pickParams) {\n const { shadowTarget } = e.pickParams;\n this.setCursor(shadowTarget.attribute.cursor);\n } else {\n this.setCursor();\n }\n };\n\n protected handleMouseOut = (e: any) => {\n this.setCursor();\n };\n\n protected handleDragMouseDown = (e: any) => {\n this.isEditor = true;\n this.editStartCbs.forEach(cb => cb(e));\n const layerPos = transformPointWithMatrix(this.layer.globalTransMatrix.getInverse(), e.offset);\n this.dragOffsetX = layerPos.x;\n this.dragOffsetY = layerPos.y;\n\n const { shadowTarget } = e.pickParams || {};\n // 开启move\n if (shadowTarget && this.stage) {\n this.setActiveGraphic(shadowTarget);\n this._rectBeforeScale = { ...this.rect.attribute };\n this._eventPosBeforeScale = layerPos;\n this.isDragging = true;\n this.dragStartAngle = this.attribute.angle ?? 0;\n } else {\n this.unTransStartCbs.forEach(cb => cb(e));\n this._dragger.startDrag(e);\n }\n };\n\n protected handleDragMouseMove = (e: any) => {\n if (!this.isDragging) {\n return;\n }\n // this._editComponent.isEditing = true;\n const layerPos = transformPointWithMatrix(this.layer.globalTransMatrix.getInverse(), e.offset);\n\n const dx = layerPos.x - this.dragOffsetX;\n const dy = layerPos.y - this.dragOffsetY;\n\n if (dx === 0 && dy === 0) {\n return;\n }\n\n if (this.rotatable) {\n this.handleRotate(layerPos);\n this.dispatchUpdate(e);\n } else if (this.reshapeState) {\n this._handleReshape(dx, dy);\n this.dispatchUpdate(e);\n } else {\n this._handleScale(dx, dy, e);\n this.dispatchUpdate(e);\n }\n\n this.dragOffsetX = layerPos.x;\n this.dragOffsetY = layerPos.y;\n };\n\n protected handleDragMouseUp = (e: any) => {\n if (!this.isDragging) {\n return;\n }\n // this._editComponent.isEditing = false;\n this.dragOffsetX = 0;\n this.dragOffsetY = 0;\n this.setActiveGraphic(null);\n this.editEndCbs?.forEach(cb => cb(e));\n this.isEditor = false;\n this.isDragging = false;\n };\n\n protected setCursor(c?: string) {\n if (this.stage) {\n this.stage.setCursor(c);\n this._setCursor?.(c);\n }\n }\n\n protected setActiveGraphic(g: IGraphic | null) {\n this.activeGraphic = g;\n // 设置resize的方向\n let reset = true;\n if (g && g.name) {\n reset = false;\n const name = g.name;\n const dirList = name.split('-');\n const type = dirList.shift();\n if (type === 'scale') {\n if (dirList.length === 2) {\n this.horizontalResizble = dirList[0] === 'left' ? -1 : 1;\n this.verticalResizble = dirList[1] === 'top' ? -1 : 1;\n } else {\n const dir = dirList[0];\n const h = dir === 'left' || dir === 'right';\n this.horizontalResizble = h ? (dirList[0] === 'left' ? -1 : 1) : 0;\n this.verticalResizble = h ? 0 : dirList[0] === 'top' ? -1 : 1;\n }\n this.rotatable = 0;\n } else if (type === 'rotate') {\n this.rotatable = 1;\n this.horizontalResizble = 0;\n this.verticalResizble = 0;\n } else if (type === 'reshape') {\n this.reshapeState = Number.parseInt(dirList[0], 10) + 1;\n this.rotatable = 0;\n this.horizontalResizble = 0;\n this.verticalResizble = 0;\n } else {\n reset = true;\n }\n }\n if (reset) {\n this.horizontalResizble = 0;\n this.verticalResizble = 0;\n this.rotatable = 0;\n this.reshapeState = 0;\n }\n }\n\n // 非等比缩放\n protected handleScale(dx: number, dy: number) {\n const { anchor, x, y, width, height } = this._getRectWithOffset(dx, dy, this.rect.attribute).attribute;\n if (width < this.minSize.width) {\n return;\n }\n if (height < this.minSize.height) {\n return;\n }\n this.rect.setAttributes({\n width,\n height,\n x,\n y\n });\n this.setAttributes({\n anchor: anchor as [number | string, number | string]\n });\n }\n\n // 缩放\n private _handleScale(dx: number, dy: number, e: any) {\n if (this.proportionalScaling) {\n this._handleScaleProportional(dx, dy, e);\n } else {\n this.handleScale(dx, dy);\n }\n }\n\n // 等比缩放\n private _handleScaleProportional(dx: number, dy: number, e: any) {\n const layerPos = transformPointWithMatrix(this.layer.globalTransMatrix.getInverse(), e.offset);\n const { attribute, temp } = this._getRectWithOffset(\n layerPos.x - this._eventPosBeforeScale.x,\n layerPos.y - this._eventPosBeforeScale.y,\n this._rectBeforeScale\n );\n\n const maxScale = Math.max(\n attribute.width / this._rectBeforeScale.width,\n attribute.height / this._rectBeforeScale.height\n );\n const finalWidth = this._rectBeforeScale.width * maxScale;\n const finalHeight = this._rectBeforeScale.height * maxScale;\n if (finalWidth < this.minSize.width) {\n return;\n }\n if (finalHeight < this.minSize.height) {\n return;\n }\n let nextP2 = temp.nextP2;\n const nextP1 = temp.nextP1;\n\n const angle = this.getAngle();\n // console.log('_handleScaleProportional', nextP1, nextP2, angle, this.verticalResizble, this.horizontalResizble);\n\n // v 1 h 1\n // 拖动的右下角 不需要改变\n if (this.verticalResizble > 0 && this.horizontalResizble > 0) {\n nextP2 = this._getRectP2(nextP1, { width: finalWidth, height: finalHeight }, angle);\n }\n // 1 h -1\n // 拖动的左下角 以右上角为基准\n else if (this.verticalResizble > 0 && this.horizontalResizble < 0) {\n const lockPos = {\n // 锁定角位置\n x: nextP1.x + attribute.width * Math.cos(angle),\n y: nextP1.y + attribute.width * Math.sin(angle)\n };\n // final下的 p1 与 p2\n nextP1.x = lockPos.x - finalWidth * Math.cos(angle);\n nextP1.y = lockPos.y - finalWidth * Math.sin(angle);\n nextP2 = this._getRectP2(nextP1, { width: finalWidth, height: finalHeight }, angle);\n }\n // -1 h 1\n // 拖动的右上角 以左下角为基准\n if (this.verticalResizble < 0 && this.horizontalResizble > 0) {\n const lockPos = {\n // 锁定角位置\n x: nextP1.x - attribute.height * Math.sin(angle),\n y: nextP1.y + attribute.height * Math.cos(angle)\n };\n // final下的 p1 与 p2\n (nextP1.x = lockPos.x + finalHeight * Math.sin(angle)), (nextP1.y = lockPos.y - finalHeight * Math.cos(angle));\n nextP2 = this._getRectP2(nextP1, { width: finalWidth, height: finalHeight }, angle);\n }\n // -1 h 1\n // 拖动的左上角 以右下角为基准\n if (this.verticalResizble < 0 && this.horizontalResizble < 0) {\n // p2 锁定 ,计算 p1\n nextP1.x = nextP2.x - Math.cos(angle) * finalWidth + Math.sin(angle) * finalHeight;\n nextP1.y = nextP2.y - Math.sin(angle) * finalWidth - Math.cos(angle) * finalHeight;\n }\n\n const center = {\n x: (nextP1.x + nextP2.x) / 2,\n y: (nextP1.y + nextP2.y) / 2\n };\n this.rect.setAttributes({\n width: finalWidth,\n height: finalHeight,\n x: center.x - finalWidth / 2,\n y: center.y - finalHeight / 2\n });\n this.setAttributes({\n anchor: [center.x, center.y]\n });\n }\n\n private _handleReshape(dx: number, dy: number) {\n const { width, height } = this.rect.attribute;\n const { shapePoints } = this.attribute;\n const angle = this.getAngle();\n const _dx = dx;\n const _dy = dy;\n dx = Math.cos(angle) * _dx + Math.sin(angle) * _dy;\n dy = Math.cos(angle + pi / 2) * _dx + Math.sin(angle + pi / 2) * _dy;\n if (!this.attribute.isShapePointAbsolute) {\n dx /= width;\n dy /= height;\n }\n const nextShapePoints = shapePoints.map((shapePoint, i) => {\n return i + 1 === this.reshapeState ? { x: shapePoint.x + dx, y: shapePoint.y + dy } : shapePoint;\n });\n this.setAttributes({\n shapePoints: nextShapePoints\n });\n }\n\n private _getRectWithOffset(dx: number, dy: number, lastAttribute: IRectGraphicAttribute) {\n // 投影得到旋转前的dx和dy\n const angle = this.getAngle();\n const _dx = dx;\n const _dy = dy;\n dx = Math.cos(angle) * _dx + Math.sin(angle) * _dy;\n dy = Math.cos(angle + pi / 2) * _dx + Math.sin(angle + pi / 2) * _dy;\n\n dx *= this.horizontalResizble;\n dy *= this.verticalResizble;\n\n const { x, y, width, height } = lastAttribute;\n\n const m = this.transMatrix;\n // 原始的x和y位置\n const nextP1 = {\n x: m.a * x + m.c * y + m.e,\n y: m.b * x + m.d * y + m.f\n };\n const nextP2 = {\n x: m.a * (x + width) + m.c * (y + height) + m.e,\n y: m.b * (x + width) + m.d * (y + height) + m.f\n };\n if (this.horizontalResizble < 0) {\n nextP1.x -= Math.cos(angle) * dx;\n nextP1.y -= Math.sin(angle) * dx;\n } else if (this.horizontalResizble > 0) {\n nextP2.x += Math.cos(angle) * dx;\n nextP2.y += Math.sin(angle) * dx;\n }\n\n if (this.verticalResizble < 0) {\n nextP1.x -= Math.cos(angle + pi / 2) * dy;\n nextP1.y -= Math.sin(angle + pi / 2) * dy;\n } else if (this.verticalResizble > 0) {\n nextP2.x += Math.cos(angle + pi / 2) * dy;\n nextP2.y += Math.sin(angle + pi / 2) * dy;\n }\n\n const center = {\n x: (nextP1.x + nextP2.x) / 2,\n y: (nextP1.y + nextP2.y) / 2\n };\n\n const tw = width + dx;\n const th = height + dy;\n\n // 返回属性计算结果+当前计算过程的重要变量\n return {\n attribute: {\n width: tw,\n height: th,\n x: center.x - tw / 2,\n y: center.y - th / 2,\n anchor: [center.x, center.y]\n },\n temp: {\n nextP1,\n nextP2,\n dx,\n dy\n }\n };\n }\n\n private _getRectP2(p1: { x: number; y: number }, size: { width: number; height: number }, angle: number) {\n return {\n x: p1.x + Math.cos(angle) * size.width - Math.sin(angle) * size.height,\n y: p1.y + Math.sin(angle) * size.width + Math.cos(angle) * size.height\n };\n }\n\n protected handleRotate(currentPoint: { x: number; y: number }) {\n const originB = this.rectB;\n const cx = (originB.x1 + originB.x2) / 2;\n const cy = (originB.y1 + originB.y2) / 2;\n\n const vectorDrag = { x: this._eventPosBeforeScale.x - cx, y: this._eventPosBeforeScale.y - cy };\n const vectorCurrent = { x: currentPoint.x - cx, y: currentPoint.y - cy };\n const dot = vectorDrag.x * vectorCurrent.x + vectorDrag.y * vectorCurrent.y;\n const modDrag = Math.sqrt(vectorDrag.x ** 2 + vectorDrag.y ** 2);\n const modCurrent = Math.sqrt(vectorCurrent.x ** 2 + vectorCurrent.y ** 2);\n const cosAngle = dot / (modDrag * modCurrent);\n const cross = vectorDrag.x * vectorCurrent.y - vectorDrag.y * vectorCurrent.x;\n const delta = cross < 0 ? Math.PI * 2 - Math.acos(cosAngle) : Math.acos(cosAngle);\n\n this.setAttributes({\n angle: this.fixAngle(this.dragStartAngle + delta),\n anchor: [cx, cy]\n });\n }\n\n private fixAngle(angle: number) {\n angle = normalizeAngle(angle);\n for (const fixedAngle of fixedAngles) {\n if (angle >= fixedAngle - maxAngleDifference && angle <= fixedAngle + maxAngleDifference) {\n return fixedAngle;\n }\n }\n return angle;\n }\n\n getAngle(): number {\n if (!this.attribute.postMatrix) {\n return this.attribute.angle ?? 0;\n }\n const m = this.transMatrix;\n return Math.atan2(m.b, m.a);\n }\n\n protected render() {\n const {\n resizeBorder,\n padding,\n cornerRect,\n rotateCircle,\n rotatePath,\n handlerLine,\n shapeCircle,\n enabledAnchors = ['top', 'bottom', 'left-top', 'left-bottom', 'right', 'left', 'right-top', 'right-bottom'],\n shapePoints = [],\n isShapePointAbsolute\n } = this.attribute as TransformAttributes;\n\n const root = this.editBorder.shadowRoot;\n if (!root || this.count === 1) {\n return;\n }\n\n const parsedPadding = normalizePadding(padding as any);\n const { x = 0, y = 0, width: w = 0, height: h = 0 } = this.rect.attribute;\n this.rectB.setValue(x, y, x + w, y + h);\n\n const minX = x - parsedPadding[3];\n const minY = y - parsedPadding[0];\n const width = w + parsedPadding[1] + parsedPadding[3];\n const height = h + parsedPadding[0] + parsedPadding[2];\n\n borderAnchors.forEach((anchor, i) => {\n const enableResize = this._editorConfig.resize && enabledAnchors.includes(anchor as AnchorDirection);\n const item = anchorPositionMap[anchor];\n const cursor = enableResize ? anchorCursorMap[anchor] : 'default';\n root.createOrUpdateChild(\n enableResize ? `scale-${anchor}` : `stroke-line-${anchor}`,\n {\n x: minX,\n y: minY,\n points: [\n { x: item[0] * width, y: item[1] * height },\n { x: item[2] * width, y: item[3] * height }\n ],\n cursor,\n ...resizeBorder\n },\n 'line'\n );\n });\n\n if (this._editorConfig.rotate) {\n // 添加顶部\n root.createOrUpdateChild(\n 'top-handler-line',\n {\n x: minX + width / 2,\n y: minY,\n points: [\n { x: 0, y: 0 },\n { x: 0, y: -handlerLine.size }\n ],\n ...handlerLine\n },\n 'line'\n );\n root.createOrUpdateChild(\n `rotate-all`,\n {\n x: minX + width / 2,\n y: minY - handlerLine.size - rotateCircle.radius,\n cursor: 'grab',\n ...rotateCircle\n },\n 'circle'\n );\n root.createOrUpdateChild(\n `path-rotate`,\n {\n pickable: false,\n x: minX + width / 2 + rotatePath.size / 2,\n y: minY - handlerLine.size + rotatePath.size / 2 - rotateCircle.radius,\n scaleX: rotatePath.size / 200,\n scaleY: rotatePath.size / 200,\n cursor: 'grab',\n dx: 0.5,\n dy: -0.5,\n ...rotatePath\n },\n 'path'\n );\n }\n\n // 添加锚点\n if (this._editorConfig.resize) {\n enabledAnchors.forEach((anchor: string) => {\n if (!cornerAnchors.includes(anchor)) {\n return;\n }\n const item = anchorPositionMap[anchor];\n const cursor = anchorCursorMap[anchor];\n root.createOrUpdateChild(\n `scale-${anchor}`,\n {\n x: minX + item[0] * width - cornerRect.width! / 2,\n y: minY + item[1] * height - cornerRect.height! / 2,\n cursor,\n ...cornerRect\n },\n 'rect'\n );\n });\n }\n\n if (this._editorConfig.reshape) {\n const shapePointsChildren = root.children.filter((child: any) => child.name.startsWith('reshape'));\n if (shapePointsChildren.length !== shapePoints.length) {\n shapePointsChildren.forEach((child: any) => root.removeChild(child));\n }\n shapePoints.forEach((point, i) => {\n root.createOrUpdateChild(\n `reshape-${i}`,\n {\n x: isShapePointAbsolute ? point.x : point.x * w + x,\n y: isShapePointAbsolute ? point.y : point.y * h + y,\n cursor: 'move',\n ...shapeCircle\n },\n 'circle'\n );\n });\n }\n }\n\n moveBy(dx: number, dy: number): this {\n const { x, y, width, height } = this.rect.attribute;\n this.rect.setAttributes({\n width: width,\n height: height,\n x: x + dx,\n y: y + dy\n });\n this.setAttributes({\n anchor: [x + dx + width / 2, y + dy + height / 2]\n });\n this.dispatchUpdate();\n return this;\n }\n\n dispatchUpdate(e?: any) {\n const out = this.getTransformAttribute();\n this.updateCbs.forEach(cb => {\n const data = cb(out, e);\n if (data) {\n const { x, y, width, height, anchor, angle, shapePoints } = data;\n Number.isFinite(x) && this.rect.setAttribute('x', x);\n Number.isFinite(y) && this.rect.setAttribute('y', y);\n Number.isFinite(width) && this.rect.setAttribute('width', width);\n Number.isFinite(height) && this.rect.setAttribute('height', height);\n anchor && this.setAttribute('anchor', anchor);\n Number.isFinite(angle) && this.setAttribute('angle', angle);\n shapePoints && this.setAttribute('shapePoints', shapePoints);\n }\n });\n }\n\n onUpdate(cb: (data: IUpdateParams, event?: VRenderPointerEvent) => Partial<IUpdateParams> | false) {\n this.updateCbs.push(cb);\n }\n\n onEditorEnd(cb: (event?: VRenderPointerEvent) => void) {\n this.editEndCbs.push(cb);\n }\n onEditorStart(cb: (event?: VRenderPointerEvent) => void) {\n this.editStartCbs.push(cb);\n }\n onUnTransStart(cb: (event: PointerEvent) => void) {\n this.unTransStartCbs.push(cb);\n }\n\n addChildUpdateBoundTag() {\n super.addChildUpdateBoundTag();\n\n // 如果wrap内的内容bounds变化,那就需要重新调用render\n if (this.runningAddChildUpdateBoundTag) {\n return;\n }\n this.runningAddChildUpdateBoundTag = true;\n\n this.render();\n\n this.runningAddChildUpdateBoundTag = false;\n }\n\n getTransformAttribute() {\n const { x, y, width, height } = this.rect.attribute;\n const { angle, anchor, shapePoints } = this.attribute;\n return {\n x,\n y,\n width,\n height,\n angle,\n anchor,\n shapePoints\n };\n }\n\n releaseEvent() {\n this.editBorder.removeEventListener('mousemove', this.handleMouseMove);\n if (this.stage) {\n this.stage.removeEventListener('pointermove', this.handleDragMouseMove);\n this.stage.removeEventListener('pointerup', this.handleDragMouseUp);\n }\n this.removeEventListener('pointerout', this.handleMouseOut);\n this.removeEventListener('pointerdown', this.handleDragMouseDown);\n }\n\n releaseDragger() {\n if (!this._dragger) {\n return;\n }\n this._dragger.release();\n }\n\n private _isRelease = false;\n release(): void {\n this._isRelease = true;\n // event\n this.releaseEvent();\n\n this.parent.removeChild(this);\n this.editBorder = null;\n this.updateCbs = [];\n this.editEndCbs = [];\n this.unTransStartCbs = [];\n super.release();\n }\n}\n"]}
@@ -5,6 +5,7 @@ export declare class DragComponent {
5
5
  set state(state: 'startDrag' | 'dragging' | 'stopDrag' | 'none');
6
6
  private _lastPosX;
7
7
  private _lastPosY;
8
+ private _stage;
8
9
  constructor(stage: IStage);
9
10
  protected _dragHandler: (moveX: number, moveY: number) => void;
10
11
  protected _dragEndHandler: () => void;
@@ -21,7 +21,8 @@ class DragComponent {
21
21
  var _a, _b;
22
22
  "dragging" === this._state || "startDrag" === this._state ? (this._state = "stopDrag",
23
23
  this._state = "stopDrag", null === (_b = this._dragEndHandler) || void 0 === _b || _b.call(this)) : null === (_a = this._unDragEndHandler) || void 0 === _a || _a.call(this);
24
- }, stage.addEventListener("pointermove", this.pointerMove, !0), stage.addEventListener("pointerup", this.stopDrag, !0);
24
+ }, this._stage = stage, stage.addEventListener("pointermove", this.pointerMove, !0),
25
+ stage.addEventListener("pointerup", this.stopDrag, !0);
25
26
  }
26
27
  dragHandler(handler) {
27
28
  this._dragHandler = handler;
@@ -36,7 +37,8 @@ class DragComponent {
36
37
  this._state = "startDrag", this._lastPosX = event.clientX, this._lastPosY = event.clientY;
37
38
  }
38
39
  release() {
39
- window.removeEventListener("pointermove", this.pointerMove, !0), window.removeEventListener("pointerup", this.stopDrag, !0),
40
+ this._stage && (this._stage.removeEventListener("pointermove", this.pointerMove, !0),
41
+ this._stage.removeEventListener("pointerup", this.stopDrag, !0), this._stage = null),
40
42
  this._dragHandler = null, this._dragEndHandler = null;
41
43
  }
42
44
  }
@@ -1 +1 @@
1
- {"version":3,"sources":["../src/edit/edit-component/edit-control/transform-drag.ts"],"names":[],"mappings":";;;AAEA,MAAa,aAAa;IAExB,IAAI,KAAK;QACP,OAAO,IAAI,CAAC,MAAM,CAAC;IACrB,CAAC;IACD,IAAI,KAAK,CAAC,KAAqD;QAC7D,IAAI,CAAC,MAAM,GAAG,KAAK,CAAC;IACtB,CAAC;IAMD,YAAY,KAAa;QAZjB,WAAM,GAAmD,MAAM,CAAC;QAqBxE,gBAAW,GAAG,CAAC,KAAmB,EAAE,EAAE;;YACpC,IAAI,CAAC,CAAC,IAAI,CAAC,MAAM,KAAK,WAAW,IAAI,IAAI,CAAC,MAAM,KAAK,UAAU,CAAC,EAAE;gBAChE,OAAO;aACR;YACD,IAAI,IAAI,CAAC,MAAM,KAAK,UAAU,EAAE;gBAC9B,IAAI,CAAC,MAAM,GAAG,UAAU,CAAC;aAC1B;YACD,MAAA,IAAI,CAAC,YAAY,qDAAG,KAAK,CAAC,OAAO,GAAG,IAAI,CAAC,SAAS,EAAE,KAAK,CAAC,OAAO,GAAG,IAAI,CAAC,SAAS,CAAC,CAAC;YACpF,IAAI,CAAC,SAAS,GAAG,KAAK,CAAC,OAAO,CAAC;YAC/B,IAAI,CAAC,SAAS,GAAG,KAAK,CAAC,OAAO,CAAC;QACjC,CAAC,CAAC;QAkBF,aAAQ,GAAG,CAAC,KAAmB,EAAE,EAAE;;YACjC,IAAI,IAAI,CAAC,MAAM,KAAK,UAAU,IAAI,IAAI,CAAC,MAAM,KAAK,WAAW,EAAE;gBAC7D,MAAA,IAAI,CAAC,iBAAiB,oDAAI,CAAC;gBAC3B,OAAO;aACR;YAED,IAAI,CAAC,MAAM,GAAG,UAAU,CAAC;YAIzB,IAAI,CAAC,MAAM,GAAG,UAAU,CAAC;YACzB,MAAA,IAAI,CAAC,eAAe,oDAAI,CAAC;QAC3B,CAAC,CAAC;QAhDA,KAAK,CAAC,gBAAgB,CAAC,aAAa,EAAE,IAAI,CAAC,WAAW,EAAE,IAAI,CAAC,CAAC;QAC9D,KAAK,CAAC,gBAAgB,CAAC,WAAW,EAAE,IAAI,CAAC,QAAQ,EAAE,IAAI,CAAC,CAAC;IAC3D,CAAC;IAkBD,WAAW,CAAC,OAA+C;QACzD,IAAI,CAAC,YAAY,GAAG,OAAO,CAAC;IAC9B,CAAC;IACD,cAAc,CAAC,OAAmB;QAChC,IAAI,CAAC,eAAe,GAAG,OAAO,CAAC;IACjC,CAAC;IACD,gBAAgB,CAAC,OAAmB;QAClC,IAAI,CAAC,iBAAiB,GAAG,OAAO,CAAC;IACnC,CAAC;IAED,SAAS,CAAC,KAAmB;QAC3B,IAAI,CAAC,MAAM,GAAG,WAAW,CAAC;QAC1B,IAAI,CAAC,SAAS,GAAG,KAAK,CAAC,OAAO,CAAC;QAC/B,IAAI,CAAC,SAAS,GAAG,KAAK,CAAC,OAAO,CAAC;IACjC,CAAC;IAgBD,OAAO;QACL,MAAM,CAAC,mBAAmB,CAAC,aAAa,EAAE,IAAI,CAAC,WAAW,EAAE,IAAI,CAAC,CAAC;QAClE,MAAM,CAAC,mBAAmB,CAAC,WAAW,EAAE,IAAI,CAAC,QAAQ,EAAE,IAAI,CAAC,CAAC;QAC7D,IAAI,CAAC,YAAY,GAAG,IAAI,CAAC;QACzB,IAAI,CAAC,eAAe,GAAG,IAAI,CAAC;IAC9B,CAAC;CACF;AAtED,sCAsEC","file":"transform-drag.js","sourcesContent":["import type { IStage } from '@visactor/vrender';\n\nexport class DragComponent {\n private _state: 'startDrag' | 'dragging' | 'stopDrag' | 'none' = 'none';\n get state() {\n return this._state;\n }\n set state(state: 'startDrag' | 'dragging' | 'stopDrag' | 'none') {\n this._state = state;\n }\n\n private _lastPosX: number;\n private _lastPosY: number;\n // protected _container: HTMLElement;\n\n constructor(stage: IStage) {\n stage.addEventListener('pointermove', this.pointerMove, true);\n stage.addEventListener('pointerup', this.stopDrag, true);\n }\n\n protected _dragHandler: (moveX: number, moveY: number) => void;\n protected _dragEndHandler: () => void;\n protected _unDragEndHandler: () => void;\n\n pointerMove = (event: PointerEvent) => {\n if (!(this._state === 'startDrag' || this._state === 'dragging')) {\n return;\n }\n if (this._state !== 'dragging') {\n this._state = 'dragging';\n }\n this._dragHandler?.(event.clientX - this._lastPosX, event.clientY - this._lastPosY);\n this._lastPosX = event.clientX;\n this._lastPosY = event.clientY;\n };\n\n dragHandler(handler: (moveX: number, moveY: number) => void) {\n this._dragHandler = handler;\n }\n dragEndHandler(handler: () => void) {\n this._dragEndHandler = handler;\n }\n unDragEndHandler(handler: () => void) {\n this._unDragEndHandler = handler;\n }\n\n startDrag(event: PointerEvent) {\n this._state = 'startDrag';\n this._lastPosX = event.clientX;\n this._lastPosY = event.clientY;\n }\n\n stopDrag = (event: PointerEvent) => {\n if (this._state !== 'dragging' && this._state !== 'startDrag') {\n this._unDragEndHandler?.();\n return;\n }\n // const lastState = this._state;\n this._state = 'stopDrag';\n // if (lastState !== 'dragging') {\n // return;\n // }\n this._state = 'stopDrag';\n this._dragEndHandler?.();\n };\n\n release() {\n window.removeEventListener('pointermove', this.pointerMove, true);\n window.removeEventListener('pointerup', this.stopDrag, true);\n this._dragHandler = null;\n this._dragEndHandler = null;\n }\n}\n"]}
1
+ {"version":3,"sources":["../src/edit/edit-component/edit-control/transform-drag.ts"],"names":[],"mappings":";;;AAEA,MAAa,aAAa;IAExB,IAAI,KAAK;QACP,OAAO,IAAI,CAAC,MAAM,CAAC;IACrB,CAAC;IACD,IAAI,KAAK,CAAC,KAAqD;QAC7D,IAAI,CAAC,MAAM,GAAG,KAAK,CAAC;IACtB,CAAC;IAOD,YAAY,KAAa;QAbjB,WAAM,GAAmD,MAAM,CAAC;QAuBxE,gBAAW,GAAG,CAAC,KAAmB,EAAE,EAAE;;YACpC,IAAI,CAAC,CAAC,IAAI,CAAC,MAAM,KAAK,WAAW,IAAI,IAAI,CAAC,MAAM,KAAK,UAAU,CAAC,EAAE;gBAChE,OAAO;aACR;YACD,IAAI,IAAI,CAAC,MAAM,KAAK,UAAU,EAAE;gBAC9B,IAAI,CAAC,MAAM,GAAG,UAAU,CAAC;aAC1B;YACD,MAAA,IAAI,CAAC,YAAY,qDAAG,KAAK,CAAC,OAAO,GAAG,IAAI,CAAC,SAAS,EAAE,KAAK,CAAC,OAAO,GAAG,IAAI,CAAC,SAAS,CAAC,CAAC;YACpF,IAAI,CAAC,SAAS,GAAG,KAAK,CAAC,OAAO,CAAC;YAC/B,IAAI,CAAC,SAAS,GAAG,KAAK,CAAC,OAAO,CAAC;QACjC,CAAC,CAAC;QAkBF,aAAQ,GAAG,CAAC,KAAmB,EAAE,EAAE;;YACjC,IAAI,IAAI,CAAC,MAAM,KAAK,UAAU,IAAI,IAAI,CAAC,MAAM,KAAK,WAAW,EAAE;gBAC7D,MAAA,IAAI,CAAC,iBAAiB,oDAAI,CAAC;gBAC3B,OAAO;aACR;YAED,IAAI,CAAC,MAAM,GAAG,UAAU,CAAC;YAIzB,IAAI,CAAC,MAAM,GAAG,UAAU,CAAC;YACzB,MAAA,IAAI,CAAC,eAAe,oDAAI,CAAC;QAC3B,CAAC,CAAC;QAjDA,IAAI,CAAC,MAAM,GAAG,KAAK,CAAC;QACpB,KAAK,CAAC,gBAAgB,CAAC,aAAa,EAAE,IAAI,CAAC,WAAW,EAAE,IAAI,CAAC,CAAC;QAC9D,KAAK,CAAC,gBAAgB,CAAC,WAAW,EAAE,IAAI,CAAC,QAAQ,EAAE,IAAI,CAAC,CAAC;IAC3D,CAAC;IAkBD,WAAW,CAAC,OAA+C;QACzD,IAAI,CAAC,YAAY,GAAG,OAAO,CAAC;IAC9B,CAAC;IACD,cAAc,CAAC,OAAmB;QAChC,IAAI,CAAC,eAAe,GAAG,OAAO,CAAC;IACjC,CAAC;IACD,gBAAgB,CAAC,OAAmB;QAClC,IAAI,CAAC,iBAAiB,GAAG,OAAO,CAAC;IACnC,CAAC;IAED,SAAS,CAAC,KAAmB;QAC3B,IAAI,CAAC,MAAM,GAAG,WAAW,CAAC;QAC1B,IAAI,CAAC,SAAS,GAAG,KAAK,CAAC,OAAO,CAAC;QAC/B,IAAI,CAAC,SAAS,GAAG,KAAK,CAAC,OAAO,CAAC;IACjC,CAAC;IAgBD,OAAO;QACL,IAAI,IAAI,CAAC,MAAM,EAAE;YACf,IAAI,CAAC,MAAM,CAAC,mBAAmB,CAAC,aAAa,EAAE,IAAI,CAAC,WAAW,EAAE,IAAI,CAAC,CAAC;YACvE,IAAI,CAAC,MAAM,CAAC,mBAAmB,CAAC,WAAW,EAAE,IAAI,CAAC,QAAQ,EAAE,IAAI,CAAC,CAAC;YAClE,IAAI,CAAC,MAAM,GAAG,IAAI,CAAC;SACpB;QACD,IAAI,CAAC,YAAY,GAAG,IAAI,CAAC;QACzB,IAAI,CAAC,eAAe,GAAG,IAAI,CAAC;IAC9B,CAAC;CACF;AA3ED,sCA2EC","file":"transform-drag.js","sourcesContent":["import type { IStage } from '@visactor/vrender';\n\nexport class DragComponent {\n private _state: 'startDrag' | 'dragging' | 'stopDrag' | 'none' = 'none';\n get state() {\n return this._state;\n }\n set state(state: 'startDrag' | 'dragging' | 'stopDrag' | 'none') {\n this._state = state;\n }\n\n private _lastPosX: number;\n private _lastPosY: number;\n private _stage: IStage;\n // protected _container: HTMLElement;\n\n constructor(stage: IStage) {\n this._stage = stage;\n stage.addEventListener('pointermove', this.pointerMove, true);\n stage.addEventListener('pointerup', this.stopDrag, true);\n }\n\n protected _dragHandler: (moveX: number, moveY: number) => void;\n protected _dragEndHandler: () => void;\n protected _unDragEndHandler: () => void;\n\n pointerMove = (event: PointerEvent) => {\n if (!(this._state === 'startDrag' || this._state === 'dragging')) {\n return;\n }\n if (this._state !== 'dragging') {\n this._state = 'dragging';\n }\n this._dragHandler?.(event.clientX - this._lastPosX, event.clientY - this._lastPosY);\n this._lastPosX = event.clientX;\n this._lastPosY = event.clientY;\n };\n\n dragHandler(handler: (moveX: number, moveY: number) => void) {\n this._dragHandler = handler;\n }\n dragEndHandler(handler: () => void) {\n this._dragEndHandler = handler;\n }\n unDragEndHandler(handler: () => void) {\n this._unDragEndHandler = handler;\n }\n\n startDrag(event: PointerEvent) {\n this._state = 'startDrag';\n this._lastPosX = event.clientX;\n this._lastPosY = event.clientY;\n }\n\n stopDrag = (event: PointerEvent) => {\n if (this._state !== 'dragging' && this._state !== 'startDrag') {\n this._unDragEndHandler?.();\n return;\n }\n // const lastState = this._state;\n this._state = 'stopDrag';\n // if (lastState !== 'dragging') {\n // return;\n // }\n this._state = 'stopDrag';\n this._dragEndHandler?.();\n };\n\n release() {\n if (this._stage) {\n this._stage.removeEventListener('pointermove', this.pointerMove, true);\n this._stage.removeEventListener('pointerup', this.stopDrag, true);\n this._stage = null;\n }\n this._dragHandler = null;\n this._dragEndHandler = null;\n }\n}\n"]}
@@ -1,8 +1,7 @@
1
1
  import { type IEditComponent } from '../interface';
2
- import type { ITransformControl, TransformAttributes } from './edit-control/transform-control';
3
2
  import { RectSelection } from './rect-selection';
4
3
  export declare class ImageSelection extends RectSelection implements IEditComponent {
5
4
  readonly level = 3;
6
5
  readonly type: string;
7
- protected _createLayoutComponent(attributes: Partial<TransformAttributes>): ITransformControl;
6
+ readonly editCharacterType: string;
8
7
  }
@@ -4,16 +4,13 @@ Object.defineProperty(exports, "__esModule", {
4
4
  value: !0
5
5
  }), exports.ImageSelection = void 0;
6
6
 
7
- const transform_control_1 = require("./edit-control/transform-control"), rect_selection_1 = require("./rect-selection");
7
+ const character_1 = require("../../constants/character"), rect_selection_1 = require("./rect-selection");
8
8
 
9
9
  class ImageSelection extends rect_selection_1.RectSelection {
10
10
  constructor() {
11
- super(...arguments), this.level = 3, this.type = "image";
12
- }
13
- _createLayoutComponent(attributes) {
14
- return new transform_control_1.TransformControl(this, attributes);
11
+ super(...arguments), this.level = 3, this.type = "image", this.editCharacterType = character_1.StoryComponentType.IMAGE;
15
12
  }
16
13
  }
17
14
 
18
15
  exports.ImageSelection = ImageSelection;
19
- //# sourceMappingURL=image-selection.js.map
16
+ //# sourceMappingURL=image-selection.js.map
@@ -1 +1 @@
1
- {"version":3,"sources":["../src/edit/edit-component/image-selection.ts"],"names":[],"mappings":";;;AAEA,wEAAoE;AACpE,qDAAiD;AAEjD,MAAa,cAAe,SAAQ,8BAAa;IAAjD;;QACW,UAAK,GAAG,CAAC,CAAC;QACV,SAAI,GAAW,OAAO,CAAC;IAKlC,CAAC;IAHW,sBAAsB,CAAC,UAAwC;QACvE,OAAO,IAAI,oCAAgB,CAAC,IAAI,EAAE,UAAU,CAAC,CAAC;IAChD,CAAC;CACF;AAPD,wCAOC","file":"image-selection.js","sourcesContent":["import { type IEditActionInfo, type IEditComponent } from '../interface';\nimport type { ITransformControl, TransformAttributes } from './edit-control/transform-control';\nimport { TransformControl } from './edit-control/transform-control';\nimport { RectSelection } from './rect-selection';\n\nexport class ImageSelection extends RectSelection implements IEditComponent {\n readonly level = 3;\n readonly type: string = 'image';\n\n protected _createLayoutComponent(attributes: Partial<TransformAttributes>): ITransformControl {\n return new TransformControl(this, attributes);\n }\n}\n"]}
1
+ {"version":3,"sources":["../src/edit/edit-component/image-selection.ts"],"names":[],"mappings":";;;AAAA,yDAA+D;AAK/D,qDAAiD;AAEjD,MAAa,cAAe,SAAQ,8BAAa;IAAjD;;QACW,UAAK,GAAG,CAAC,CAAC;QACV,SAAI,GAAW,OAAO,CAAC;QACvB,sBAAiB,GAAW,8BAAkB,CAAC,KAAK,CAAC;IAKhE,CAAC;CAAA;AARD,wCAQC","file":"image-selection.js","sourcesContent":["import { StoryComponentType } from '../../constants/character';\nimport { type IEditComponent } from '../interface';\nimport { BaseSelection } from './base-selection';\nimport type { ITransformControl, TransformAttributes } from './edit-control/transform-control';\nimport { TransformControl } from './edit-control/transform-control';\nimport { RectSelection } from './rect-selection';\n\nexport class ImageSelection extends RectSelection implements IEditComponent {\n readonly level = 3;\n readonly type: string = 'image';\n readonly editCharacterType: string = StoryComponentType.IMAGE;\n\n // protected _createLayoutComponent(attributes: Partial<TransformAttributes>): ITransformControl {\n // return new TransformControl(this, attributes);\n // }\n}\n"]}
@@ -4,13 +4,12 @@ Object.defineProperty(exports, "__esModule", {
4
4
  value: !0
5
5
  }), exports.loadAllSelection = void 0;
6
6
 
7
- const common_1 = require("./common"), box_selection_1 = require("./box-selection"), image_selection_1 = require("./image-selection"), text_selection_1 = require("./text-selection"), richtext_selection_1 = require("./richtext-selection"), rect_selection_1 = require("./rect-selection"), edit_1 = require("../edit");
7
+ const box_selection_1 = require("./box-selection"), image_selection_1 = require("./image-selection"), rect_selection_1 = require("./rect-selection"), chart_selection_1 = require("./chart-selection"), edit_1 = require("../edit"), shape_selection_1 = require("./shape-selection");
8
8
 
9
9
  function loadAllSelection() {
10
- edit_1.Edit.registerEditComponent("common", common_1.CommonEditComponent), edit_1.Edit.registerEditComponent("text", text_selection_1.TextSelection),
11
- edit_1.Edit.registerEditComponent("richtext", richtext_selection_1.RichTextSelection),
12
- edit_1.Edit.registerEditComponent("rect", rect_selection_1.RectSelection), edit_1.Edit.registerEditComponent("box-selection", box_selection_1.BoxSelection),
13
- edit_1.Edit.registerEditComponent("image-selection", image_selection_1.ImageSelection);
10
+ edit_1.Edit.registerEditComponent("rect", rect_selection_1.RectSelection), edit_1.Edit.registerEditComponent("image", image_selection_1.ImageSelection),
11
+ edit_1.Edit.registerEditComponent("shape", shape_selection_1.ShapeSelection), edit_1.Edit.registerEditComponent("chart", chart_selection_1.ChartSelection),
12
+ edit_1.Edit.registerEditComponent("box-selection", box_selection_1.BoxSelection);
14
13
  }
15
14
 
16
15
  exports.loadAllSelection = loadAllSelection;