@antscorp/antsomi-ui 1.3.3-beta.2 → 1.3.3-beta.21

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 (652) hide show
  1. package/README.md +78 -78
  2. package/dist/index.js +1 -1
  3. package/dist/main.css +100 -1
  4. package/dist/public/icons/stars_slider.png +0 -0
  5. package/es/assets/css/main.scss +4 -4
  6. package/es/assets/images/feedback.svg +3 -3
  7. package/es/assets/images/stars_slider.png +0 -0
  8. package/es/components/atoms/Alert/Alert.d.ts +4 -4
  9. package/es/components/atoms/Alert/Alert.js +19 -19
  10. package/es/components/atoms/Alert/index.d.ts +1 -1
  11. package/es/components/atoms/Alert/index.js +1 -1
  12. package/es/components/atoms/Button/Button.d.ts +1 -1
  13. package/es/components/atoms/Button/Button.js +1 -1
  14. package/es/components/atoms/Button/index.d.ts +4 -4
  15. package/es/components/atoms/Button/index.js +2 -2
  16. package/es/components/atoms/Button/test.d.ts +3 -3
  17. package/es/components/atoms/Button/test.js +99 -99
  18. package/es/components/atoms/Checkbox/Checkbox.d.ts +1 -1
  19. package/es/components/atoms/Checkbox/Checkbox.js +1 -1
  20. package/es/components/atoms/Checkbox/index.d.ts +1 -1
  21. package/es/components/atoms/Checkbox/index.js +1 -1
  22. package/es/components/atoms/Divider/Divider.d.ts +1 -1
  23. package/es/components/atoms/Divider/Divider.js +1 -1
  24. package/es/components/atoms/Divider/index.d.ts +1 -1
  25. package/es/components/atoms/Divider/index.js +1 -1
  26. package/es/components/atoms/DividerPure/DividerPure.d.ts +10 -10
  27. package/es/components/atoms/DividerPure/DividerPure.js +27 -27
  28. package/es/components/atoms/DividerPure/index.d.ts +1 -1
  29. package/es/components/atoms/DividerPure/index.js +1 -1
  30. package/es/components/atoms/DividerPure/styled.d.ts +1 -1
  31. package/es/components/atoms/DividerPure/styled.js +41 -41
  32. package/es/components/atoms/Empty/Empty.d.ts +5 -5
  33. package/es/components/atoms/Empty/Empty.js +2 -2
  34. package/es/components/atoms/Empty/index.d.ts +1 -1
  35. package/es/components/atoms/Empty/index.js +1 -1
  36. package/es/components/atoms/Flex/Flex.d.ts +2 -0
  37. package/es/components/atoms/Flex/Flex.js +1 -0
  38. package/es/components/atoms/Flex/index.d.ts +1 -0
  39. package/es/components/atoms/Flex/index.js +1 -0
  40. package/es/components/atoms/FloatButton/FloatButton.d.ts +1 -1
  41. package/es/components/atoms/FloatButton/FloatButton.js +1 -1
  42. package/es/components/atoms/FloatButton/index.d.ts +1 -1
  43. package/es/components/atoms/FloatButton/index.js +2 -2
  44. package/es/components/atoms/Grid/Grid.d.ts +3 -3
  45. package/es/components/atoms/Grid/Grid.js +3 -3
  46. package/es/components/atoms/Grid/index.d.ts +1 -1
  47. package/es/components/atoms/Grid/index.js +1 -1
  48. package/es/components/atoms/Icon/index.d.ts +10 -10
  49. package/es/components/atoms/Icon/index.js +36 -36
  50. package/es/components/atoms/Input/Input.d.ts +28 -20
  51. package/es/components/atoms/Input/Input.js +95 -92
  52. package/es/components/atoms/Input/index.d.ts +2 -2
  53. package/es/components/atoms/Input/index.js +1 -1
  54. package/es/components/atoms/Input/styled.d.ts +11 -11
  55. package/es/components/atoms/Input/styled.js +109 -109
  56. package/es/components/atoms/InputNumber/InputNumber.d.ts +6 -6
  57. package/es/components/atoms/InputNumber/InputNumber.js +27 -27
  58. package/es/components/atoms/InputNumber/index.d.ts +1 -1
  59. package/es/components/atoms/InputNumber/index.js +1 -1
  60. package/es/components/atoms/Message/Message.d.ts +1 -1
  61. package/es/components/atoms/Message/Message.js +1 -1
  62. package/es/components/atoms/Message/index.d.ts +1 -1
  63. package/es/components/atoms/Message/index.js +1 -1
  64. package/es/components/atoms/Notification/Notification.d.ts +1 -1
  65. package/es/components/atoms/Notification/Notification.js +1 -1
  66. package/es/components/atoms/Notification/index.d.ts +1 -1
  67. package/es/components/atoms/Notification/index.js +1 -1
  68. package/es/components/atoms/Pagination/Pagination.d.ts +2 -2
  69. package/es/components/atoms/Pagination/Pagination.js +2 -2
  70. package/es/components/atoms/Pagination/index.d.ts +1 -1
  71. package/es/components/atoms/Pagination/index.js +1 -1
  72. package/es/components/atoms/Popover/Popover.d.ts +4 -4
  73. package/es/components/atoms/Popover/Popover.js +2 -2
  74. package/es/components/atoms/Popover/index.d.ts +1 -1
  75. package/es/components/atoms/Popover/index.js +1 -1
  76. package/es/components/atoms/Popover/styled.d.ts +4 -4
  77. package/es/components/atoms/Popover/styled.js +5 -5
  78. package/es/components/atoms/Progress/Progress.d.ts +2 -2
  79. package/es/components/atoms/Progress/Progress.js +2 -2
  80. package/es/components/atoms/Progress/index.d.ts +1 -1
  81. package/es/components/atoms/Progress/index.js +1 -1
  82. package/es/components/atoms/Radio/Radio.d.ts +1 -1
  83. package/es/components/atoms/Radio/Radio.js +1 -1
  84. package/es/components/atoms/Radio/index.d.ts +7 -7
  85. package/es/components/atoms/Radio/index.js +25 -25
  86. package/es/components/atoms/Rate/Rate.d.ts +2 -2
  87. package/es/components/atoms/Rate/Rate.js +2 -2
  88. package/es/components/atoms/Rate/index.d.ts +1 -1
  89. package/es/components/atoms/Rate/index.js +1 -1
  90. package/es/components/atoms/RateV2/RateV2.d.ts +18 -0
  91. package/es/components/atoms/RateV2/RateV2.js +73 -0
  92. package/es/components/atoms/RateV2/index.d.ts +1 -0
  93. package/es/components/atoms/RateV2/index.js +1 -0
  94. package/es/components/atoms/RequiredLabel/index.d.ts +7 -7
  95. package/es/components/atoms/RequiredLabel/index.js +24 -24
  96. package/es/components/atoms/RequiredLabel/styled.d.ts +2 -2
  97. package/es/components/atoms/RequiredLabel/styled.js +10 -10
  98. package/es/components/atoms/ScrollBox/index.d.ts +9 -9
  99. package/es/components/atoms/ScrollBox/index.js +51 -51
  100. package/es/components/atoms/Segmented/Segmented.d.ts +2 -2
  101. package/es/components/atoms/Segmented/Segmented.js +2 -2
  102. package/es/components/atoms/Segmented/index.d.ts +1 -1
  103. package/es/components/atoms/Segmented/index.js +1 -1
  104. package/es/components/atoms/Skeleton/Skeleton.d.ts +8 -8
  105. package/es/components/atoms/Skeleton/Skeleton.js +2 -2
  106. package/es/components/atoms/Skeleton/index.d.ts +1 -1
  107. package/es/components/atoms/Skeleton/index.js +1 -1
  108. package/es/components/atoms/Slider/index.d.ts +6 -5
  109. package/es/components/atoms/Slider/index.js +25 -32
  110. package/es/components/atoms/Slider/styled.d.ts +7 -7
  111. package/es/components/atoms/Slider/styled.js +44 -44
  112. package/es/components/atoms/SliderV2/index.d.ts +6 -0
  113. package/es/components/atoms/SliderV2/index.js +21 -0
  114. package/es/components/atoms/Space/Space.d.ts +6 -6
  115. package/es/components/atoms/Space/Space.js +9 -9
  116. package/es/components/atoms/Space/index.d.ts +1 -1
  117. package/es/components/atoms/Space/index.js +1 -1
  118. package/es/components/atoms/Spin/Spin.d.ts +10 -9
  119. package/es/components/atoms/Spin/Spin.js +28 -28
  120. package/es/components/atoms/Spin/index.d.ts +1 -1
  121. package/es/components/atoms/Spin/index.js +1 -1
  122. package/es/components/atoms/Spin/styled.d.ts +1 -1
  123. package/es/components/atoms/Spin/styled.js +7 -7
  124. package/es/components/atoms/Statistic/Statistic.d.ts +1 -1
  125. package/es/components/atoms/Statistic/Statistic.js +2 -2
  126. package/es/components/atoms/Statistic/index.d.ts +1 -1
  127. package/es/components/atoms/Statistic/index.js +1 -1
  128. package/es/components/atoms/Steps/Steps.d.ts +4 -4
  129. package/es/components/atoms/Steps/Steps.js +2 -2
  130. package/es/components/atoms/Steps/index.d.ts +1 -1
  131. package/es/components/atoms/Steps/index.js +1 -1
  132. package/es/components/atoms/Switch/Switch.d.ts +2 -2
  133. package/es/components/atoms/Switch/Switch.js +2 -2
  134. package/es/components/atoms/Switch/index.d.ts +1 -1
  135. package/es/components/atoms/Switch/index.js +1 -1
  136. package/es/components/atoms/Tag/Tag.d.ts +1 -1
  137. package/es/components/atoms/Tag/Tag.js +1 -1
  138. package/es/components/atoms/Tag/index.d.ts +1 -1
  139. package/es/components/atoms/Tag/index.js +1 -1
  140. package/es/components/atoms/Text/index.d.ts +10 -10
  141. package/es/components/atoms/Text/index.js +27 -27
  142. package/es/components/atoms/Text/styled.d.ts +7 -7
  143. package/es/components/atoms/Text/styled.js +52 -52
  144. package/es/components/atoms/Timeline/Timeline.d.ts +4 -4
  145. package/es/components/atoms/Timeline/Timeline.js +2 -2
  146. package/es/components/atoms/Timeline/index.d.ts +1 -1
  147. package/es/components/atoms/Timeline/index.js +1 -1
  148. package/es/components/atoms/Tooltip/Tooltip.d.ts +1 -1
  149. package/es/components/atoms/Tooltip/Tooltip.js +1 -1
  150. package/es/components/atoms/Tooltip/index.d.ts +1 -1
  151. package/es/components/atoms/Tooltip/index.js +1 -1
  152. package/es/components/atoms/Typography/Text.d.ts +1 -1
  153. package/es/components/atoms/Typography/Text.js +1 -1
  154. package/es/components/atoms/Typography/index.d.ts +1 -1
  155. package/es/components/atoms/Typography/index.js +1 -1
  156. package/es/components/atoms/Watermark/Watermark.d.ts +2 -2
  157. package/es/components/atoms/Watermark/Watermark.js +2 -2
  158. package/es/components/atoms/Watermark/index.d.ts +1 -1
  159. package/es/components/atoms/Watermark/index.js +1 -1
  160. package/es/components/atoms/index.d.ts +36 -33
  161. package/es/components/atoms/index.js +35 -32
  162. package/es/components/common/ConfigProvider/ConfigProvider.d.ts +10 -10
  163. package/es/components/common/ConfigProvider/ConfigProvider.js +42 -42
  164. package/es/components/common/ConfigProvider/GlobalStyle.d.ts +5 -5
  165. package/es/components/common/ConfigProvider/GlobalStyle.js +527 -490
  166. package/es/components/common/ConfigProvider/index.d.ts +1 -1
  167. package/es/components/common/ConfigProvider/index.js +1 -1
  168. package/es/components/common/index.d.ts +1 -1
  169. package/es/components/common/index.js +1 -1
  170. package/es/components/icons/AccountCircle.d.ts +3 -3
  171. package/es/components/icons/AccountCircle.js +3 -3
  172. package/es/components/icons/AddShoppingCart.d.ts +3 -3
  173. package/es/components/icons/AddShoppingCart.js +3 -3
  174. package/es/components/icons/ArrowGrowIcon.d.ts +2 -1
  175. package/es/components/icons/ArrowGrowIcon.js +4 -4
  176. package/es/components/icons/AssignmentInd.d.ts +3 -3
  177. package/es/components/icons/AssignmentInd.js +3 -3
  178. package/es/components/icons/AudioRecordIcon.d.ts +2 -1
  179. package/es/components/icons/AudioRecordIcon.js +4 -4
  180. package/es/components/icons/BugIcon.d.ts +2 -1
  181. package/es/components/icons/BugIcon.js +4 -4
  182. package/es/components/icons/Call.d.ts +3 -3
  183. package/es/components/icons/Call.js +3 -3
  184. package/es/components/icons/CameraIcon.d.ts +2 -1
  185. package/es/components/icons/CameraIcon.js +4 -4
  186. package/es/components/icons/CaptureIcon.d.ts +2 -1
  187. package/es/components/icons/CaptureIcon.js +4 -4
  188. package/es/components/icons/Category.d.ts +3 -3
  189. package/es/components/icons/Category.js +5 -5
  190. package/es/components/icons/ChatBubbleOutline.d.ts +3 -3
  191. package/es/components/icons/ChatBubbleOutline.js +3 -3
  192. package/es/components/icons/CheckSlimIcon.d.ts +2 -1
  193. package/es/components/icons/CheckSlimIcon.js +4 -4
  194. package/es/components/icons/CircleNotifications.d.ts +3 -3
  195. package/es/components/icons/CircleNotifications.js +3 -3
  196. package/es/components/icons/CloseIcon.d.ts +4 -3
  197. package/es/components/icons/CloseIcon.js +22 -22
  198. package/es/components/icons/CommentIcon.d.ts +2 -1
  199. package/es/components/icons/CommentIcon.js +4 -4
  200. package/es/components/icons/ConfirmationNumber.d.ts +3 -3
  201. package/es/components/icons/ConfirmationNumber.js +3 -3
  202. package/es/components/icons/DesktopWindows.d.ts +3 -3
  203. package/es/components/icons/DesktopWindows.js +3 -3
  204. package/es/components/icons/EventIcon.d.ts +4 -3
  205. package/es/components/icons/EventIcon.js +18 -18
  206. package/es/components/icons/FactCheck.d.ts +3 -3
  207. package/es/components/icons/FactCheck.js +3 -3
  208. package/es/components/icons/FreeDrawIcon.d.ts +2 -1
  209. package/es/components/icons/FreeDrawIcon.js +4 -4
  210. package/es/components/icons/GPTIcon.d.ts +2 -1
  211. package/es/components/icons/GPTIcon.js +18 -18
  212. package/es/components/icons/GPTIconV2.d.ts +2 -1
  213. package/es/components/icons/GPTIconV2.js +18 -18
  214. package/es/components/icons/GPTIconV3.d.ts +2 -1
  215. package/es/components/icons/GPTIconV3.js +5 -5
  216. package/es/components/icons/HighlightIcon.d.ts +2 -1
  217. package/es/components/icons/HighlightIcon.js +4 -4
  218. package/es/components/icons/HightlightAlt.d.ts +3 -3
  219. package/es/components/icons/HightlightAlt.js +3 -3
  220. package/es/components/icons/HowToReg.d.ts +3 -3
  221. package/es/components/icons/HowToReg.js +3 -3
  222. package/es/components/icons/IdeaIcon.d.ts +2 -1
  223. package/es/components/icons/IdeaIcon.js +4 -4
  224. package/es/components/icons/Interactive.d.ts +3 -3
  225. package/es/components/icons/Interactive.js +3 -3
  226. package/es/components/icons/InvisibleIcon.d.ts +2 -1
  227. package/es/components/icons/InvisibleIcon.js +5 -5
  228. package/es/components/icons/List.d.ts +3 -3
  229. package/es/components/icons/List.js +3 -3
  230. package/es/components/icons/LocalMallIcon.d.ts +3 -3
  231. package/es/components/icons/LocalMallIcon.js +3 -3
  232. package/es/components/icons/MobileFriendly.d.ts +3 -3
  233. package/es/components/icons/MobileFriendly.js +3 -3
  234. package/es/components/icons/MuteIcon.d.ts +2 -1
  235. package/es/components/icons/MuteIcon.js +4 -4
  236. package/es/components/icons/NotificationsActive.d.ts +3 -3
  237. package/es/components/icons/NotificationsActive.js +3 -3
  238. package/es/components/icons/OpenUrlIcon.d.ts +2 -1
  239. package/es/components/icons/OpenUrlIcon.js +4 -4
  240. package/es/components/icons/PauseIcon.d.ts +2 -1
  241. package/es/components/icons/PauseIcon.js +4 -4
  242. package/es/components/icons/Payment.d.ts +3 -3
  243. package/es/components/icons/Payment.js +3 -3
  244. package/es/components/icons/PersonAddDisabled.d.ts +3 -3
  245. package/es/components/icons/PersonAddDisabled.js +4 -4
  246. package/es/components/icons/PhoneCallback.d.ts +3 -3
  247. package/es/components/icons/PhoneCallback.js +3 -3
  248. package/es/components/icons/PlaneIcon.d.ts +2 -1
  249. package/es/components/icons/PlaneIcon.js +8 -8
  250. package/es/components/icons/Preview.d.ts +3 -3
  251. package/es/components/icons/Preview.js +3 -3
  252. package/es/components/icons/Redeem.d.ts +3 -3
  253. package/es/components/icons/Redeem.js +3 -3
  254. package/es/components/icons/RemoveRedEye.d.ts +3 -3
  255. package/es/components/icons/RemoveRedEye.js +3 -3
  256. package/es/components/icons/RemoveShoppingCart.d.ts +3 -3
  257. package/es/components/icons/RemoveShoppingCart.js +3 -3
  258. package/es/components/icons/RequestIcon.d.ts +2 -1
  259. package/es/components/icons/RequestIcon.js +4 -4
  260. package/es/components/icons/Search.d.ts +3 -3
  261. package/es/components/icons/Search.js +3 -3
  262. package/es/components/icons/ShoppingBag.d.ts +3 -3
  263. package/es/components/icons/ShoppingBag.js +3 -3
  264. package/es/components/icons/ShoppingCart.d.ts +3 -3
  265. package/es/components/icons/ShoppingCart.js +3 -3
  266. package/es/components/icons/StopRecordIcon.d.ts +2 -1
  267. package/es/components/icons/StopRecordIcon.js +4 -4
  268. package/es/components/icons/Store.d.ts +3 -3
  269. package/es/components/icons/Store.js +3 -3
  270. package/es/components/icons/UserIcon.d.ts +2 -1
  271. package/es/components/icons/UserIcon.js +8 -8
  272. package/es/components/icons/VerticalDotsIcon.d.ts +2 -1
  273. package/es/components/icons/VerticalDotsIcon.js +4 -4
  274. package/es/components/icons/WarningIcon.d.ts +2 -1
  275. package/es/components/icons/WarningIcon.js +4 -4
  276. package/es/components/icons/Web.d.ts +3 -3
  277. package/es/components/icons/Web.js +3 -3
  278. package/es/components/icons/WebAsset.d.ts +3 -3
  279. package/es/components/icons/WebAsset.js +3 -3
  280. package/es/components/icons/index.d.ts +54 -54
  281. package/es/components/icons/index.js +54 -54
  282. package/es/components/icons/type.d.ts +3 -3
  283. package/es/components/icons/type.js +1 -1
  284. package/es/components/index.d.ts +4 -4
  285. package/es/components/index.js +4 -4
  286. package/es/components/molecules/AlignSetting/index.d.ts +19 -19
  287. package/es/components/molecules/AlignSetting/index.js +52 -52
  288. package/es/components/molecules/AlignSetting/styled.d.ts +1 -1
  289. package/es/components/molecules/AlignSetting/styled.js +7 -7
  290. package/es/components/molecules/AlignSetting/utils.d.ts +3 -3
  291. package/es/components/molecules/AlignSetting/utils.js +19 -19
  292. package/es/components/molecules/CaptureScreen/CaptureScreen.d.ts +16 -15
  293. package/es/components/molecules/CaptureScreen/CaptureScreen.js +834 -834
  294. package/es/components/molecules/CaptureScreen/components/CommentBox/CommentBox.d.ts +17 -16
  295. package/es/components/molecules/CaptureScreen/components/CommentBox/CommentBox.js +80 -80
  296. package/es/components/molecules/CaptureScreen/components/CommentBox/index.d.ts +1 -1
  297. package/es/components/molecules/CaptureScreen/components/CommentBox/index.js +1 -1
  298. package/es/components/molecules/CaptureScreen/components/CommentBox/styled.d.ts +12 -12
  299. package/es/components/molecules/CaptureScreen/components/CommentBox/styled.js +136 -136
  300. package/es/components/molecules/CaptureScreen/components/CommentBox/types.d.ts +15 -15
  301. package/es/components/molecules/CaptureScreen/components/CommentBox/types.js +1 -1
  302. package/es/components/molecules/CaptureScreen/components/Cursor/Cursor.d.ts +4 -3
  303. package/es/components/molecules/CaptureScreen/components/Cursor/Cursor.js +17 -17
  304. package/es/components/molecules/CaptureScreen/components/Cursor/index.d.ts +1 -1
  305. package/es/components/molecules/CaptureScreen/components/Cursor/index.js +1 -1
  306. package/es/components/molecules/CaptureScreen/components/Cursor/styled.d.ts +7 -7
  307. package/es/components/molecules/CaptureScreen/components/Cursor/styled.js +79 -79
  308. package/es/components/molecules/CaptureScreen/components/Cursor/types.d.ts +10 -10
  309. package/es/components/molecules/CaptureScreen/components/Cursor/types.js +1 -1
  310. package/es/components/molecules/CaptureScreen/constants.d.ts +41 -41
  311. package/es/components/molecules/CaptureScreen/constants.js +118 -118
  312. package/es/components/molecules/CaptureScreen/hooks/useImageEditor.d.ts +5 -5
  313. package/es/components/molecules/CaptureScreen/hooks/useImageEditor.js +103 -103
  314. package/es/components/molecules/CaptureScreen/index.d.ts +1 -1
  315. package/es/components/molecules/CaptureScreen/index.js +1 -1
  316. package/es/components/molecules/CaptureScreen/styled.d.ts +26 -26
  317. package/es/components/molecules/CaptureScreen/styled.js +255 -255
  318. package/es/components/molecules/CaptureScreen/themes/black.d.ts +54 -54
  319. package/es/components/molecules/CaptureScreen/themes/black.js +64 -64
  320. package/es/components/molecules/CaptureScreen/themes/white.d.ts +54 -54
  321. package/es/components/molecules/CaptureScreen/themes/white.js +64 -64
  322. package/es/components/molecules/CaptureScreen/types.d.ts +108 -108
  323. package/es/components/molecules/CaptureScreen/types.js +1 -1
  324. package/es/components/molecules/CaptureScreen/utils.d.ts +13 -13
  325. package/es/components/molecules/CaptureScreen/utils.js +62 -62
  326. package/es/components/molecules/Card/Card.d.ts +1 -1
  327. package/es/components/molecules/Card/Card.js +2 -2
  328. package/es/components/molecules/Card/index.d.ts +1 -1
  329. package/es/components/molecules/Card/index.js +1 -1
  330. package/es/components/molecules/Cascader/Cascader.d.ts +1 -1
  331. package/es/components/molecules/Cascader/Cascader.js +1 -1
  332. package/es/components/molecules/Cascader/index.d.ts +1 -1
  333. package/es/components/molecules/Cascader/index.js +1 -1
  334. package/es/components/molecules/ChatBox/ChatBox.d.ts +3 -3
  335. package/es/components/molecules/ChatBox/ChatBox.js +188 -188
  336. package/es/components/molecules/ChatBox/MessageItem.d.ts +5 -5
  337. package/es/components/molecules/ChatBox/MessageItem.js +66 -66
  338. package/es/components/molecules/ChatBox/constants.d.ts +6 -6
  339. package/es/components/molecules/ChatBox/constants.js +51 -51
  340. package/es/components/molecules/ChatBox/index.d.ts +1 -1
  341. package/es/components/molecules/ChatBox/index.js +1 -1
  342. package/es/components/molecules/ChatBox/styled.d.ts +10 -10
  343. package/es/components/molecules/ChatBox/styled.js +280 -280
  344. package/es/components/molecules/ChatBox/types.d.ts +32 -32
  345. package/es/components/molecules/ChatBox/types.js +1 -1
  346. package/es/components/molecules/Collapse/Collapse.d.ts +4 -4
  347. package/es/components/molecules/Collapse/Collapse.js +11 -2
  348. package/es/components/molecules/Collapse/index.d.ts +1 -1
  349. package/es/components/molecules/Collapse/index.js +1 -1
  350. package/es/components/molecules/ColorPicker/ChromePicker/index.d.ts +1 -1
  351. package/es/components/molecules/ColorPicker/ChromePicker/index.js +3 -3
  352. package/es/components/molecules/ColorPicker/ChromePicker/styled.d.ts +1 -1
  353. package/es/components/molecules/ColorPicker/ChromePicker/styled.js +15 -15
  354. package/es/components/molecules/ColorPicker/CustomPicker/index.d.ts +2 -2
  355. package/es/components/molecules/ColorPicker/CustomPicker/index.js +117 -117
  356. package/es/components/molecules/ColorPicker/CustomPicker/styled.d.ts +9 -9
  357. package/es/components/molecules/ColorPicker/CustomPicker/styled.js +104 -104
  358. package/es/components/molecules/ColorPicker/SketchPicker/index.d.ts +10 -10
  359. package/es/components/molecules/ColorPicker/SketchPicker/index.js +5 -5
  360. package/es/components/molecules/ColorPicker/SketchPicker/styled.d.ts +1 -1
  361. package/es/components/molecules/ColorPicker/SketchPicker/styled.js +10 -10
  362. package/es/components/molecules/ColorPicker/index.d.ts +13 -13
  363. package/es/components/molecules/ColorPicker/index.js +95 -95
  364. package/es/components/molecules/ColorPicker/styled.d.ts +1 -1
  365. package/es/components/molecules/ColorPicker/styled.js +10 -10
  366. package/es/components/molecules/ColorSetting/index.d.ts +14 -14
  367. package/es/components/molecules/ColorSetting/index.js +97 -97
  368. package/es/components/molecules/ColorSetting/styled.d.ts +7 -7
  369. package/es/components/molecules/ColorSetting/styled.js +42 -42
  370. package/es/components/molecules/DatePicker/DatePicker.d.ts +8 -8
  371. package/es/components/molecules/DatePicker/DatePicker.js +8 -8
  372. package/es/components/molecules/DatePicker/components/AdvancedPicker/AdvancedPicker.d.ts +28 -28
  373. package/es/components/molecules/DatePicker/components/AdvancedPicker/AdvancedPicker.js +428 -428
  374. package/es/components/molecules/DatePicker/components/AdvancedPicker/constants.d.ts +53 -53
  375. package/es/components/molecules/DatePicker/components/AdvancedPicker/constants.js +74 -74
  376. package/es/components/molecules/DatePicker/components/AdvancedPicker/index.d.ts +3 -3
  377. package/es/components/molecules/DatePicker/components/AdvancedPicker/index.js +1 -1
  378. package/es/components/molecules/DatePicker/components/AdvancedPicker/styled.d.ts +7 -7
  379. package/es/components/molecules/DatePicker/components/AdvancedPicker/styled.js +49 -49
  380. package/es/components/molecules/DatePicker/components/AdvancedPicker/types.d.ts +14 -14
  381. package/es/components/molecules/DatePicker/components/AdvancedPicker/types.js +1 -1
  382. package/es/components/molecules/DatePicker/components/AdvancedPicker/utils.d.ts +15 -15
  383. package/es/components/molecules/DatePicker/components/AdvancedPicker/utils.js +84 -84
  384. package/es/components/molecules/DatePicker/components/AdvancedRangePicker/AdvancedRangePicker.d.ts +15 -15
  385. package/es/components/molecules/DatePicker/components/AdvancedRangePicker/AdvancedRangePicker.js +70 -70
  386. package/es/components/molecules/DatePicker/components/AdvancedRangePicker/constants.d.ts +4 -4
  387. package/es/components/molecules/DatePicker/components/AdvancedRangePicker/constants.js +4 -4
  388. package/es/components/molecules/DatePicker/components/AdvancedRangePicker/index.d.ts +2 -2
  389. package/es/components/molecules/DatePicker/components/AdvancedRangePicker/index.js +1 -1
  390. package/es/components/molecules/DatePicker/components/AdvancedRangePicker/types.d.ts +17 -17
  391. package/es/components/molecules/DatePicker/components/AdvancedRangePicker/types.js +1 -1
  392. package/es/components/molecules/DatePicker/index.d.ts +3 -3
  393. package/es/components/molecules/DatePicker/index.js +1 -1
  394. package/es/components/molecules/Drawer/Drawer.d.ts +1 -1
  395. package/es/components/molecules/Drawer/Drawer.js +2 -2
  396. package/es/components/molecules/Drawer/index.d.ts +1 -1
  397. package/es/components/molecules/Drawer/index.js +1 -1
  398. package/es/components/molecules/Dropdown/Dropdown.d.ts +1 -1
  399. package/es/components/molecules/Dropdown/Dropdown.js +1 -1
  400. package/es/components/molecules/Dropdown/index.d.ts +1 -1
  401. package/es/components/molecules/Dropdown/index.js +1 -1
  402. package/es/components/molecules/EdgeSetting/index.d.ts +39 -39
  403. package/es/components/molecules/EdgeSetting/index.js +192 -192
  404. package/es/components/molecules/EdgeSetting/styled.d.ts +3 -3
  405. package/es/components/molecules/EdgeSetting/styled.js +18 -18
  406. package/es/components/molecules/FontFamilySelect/constants.d.ts +307 -0
  407. package/es/components/molecules/FontFamilySelect/constants.js +257 -0
  408. package/es/components/molecules/FontFamilySelect/index.d.ts +17 -0
  409. package/es/components/molecules/FontFamilySelect/index.js +53 -0
  410. package/es/components/molecules/FontSetting/constants.d.ts +3 -0
  411. package/es/components/molecules/FontSetting/constants.js +22 -0
  412. package/es/components/molecules/FontSetting/index.d.ts +24 -0
  413. package/es/components/molecules/FontSetting/index.js +54 -0
  414. package/es/components/molecules/FontSetting/types.d.ts +22 -0
  415. package/es/components/molecules/FontSetting/types.js +1 -0
  416. package/es/components/molecules/FontWeightSelect/constants.d.ts +28 -0
  417. package/es/components/molecules/FontWeightSelect/constants.js +11 -0
  418. package/es/components/molecules/FontWeightSelect/index.d.ts +9 -0
  419. package/es/components/molecules/FontWeightSelect/index.js +39 -0
  420. package/es/components/molecules/Form/Form.d.ts +1 -0
  421. package/es/components/molecules/Form/Form.js +1 -0
  422. package/es/components/molecules/Form/index.d.ts +1 -0
  423. package/es/components/molecules/Form/index.js +1 -0
  424. package/es/components/molecules/GradientSetting/index.d.ts +36 -36
  425. package/es/components/molecules/GradientSetting/index.js +99 -99
  426. package/es/components/molecules/GradientSetting/styled.d.ts +1 -1
  427. package/es/components/molecules/GradientSetting/styled.js +59 -59
  428. package/es/components/molecules/IconSelection/components/Icon/index.d.ts +10 -10
  429. package/es/components/molecules/IconSelection/components/Icon/index.js +28 -28
  430. package/es/components/molecules/IconSelection/constants.d.ts +56 -56
  431. package/es/components/molecules/IconSelection/constants.js +89 -89
  432. package/es/components/molecules/IconSelection/index.d.ts +3 -3
  433. package/es/components/molecules/IconSelection/index.js +143 -143
  434. package/es/components/molecules/IconSelection/styled.d.ts +8 -8
  435. package/es/components/molecules/IconSelection/styled.js +80 -80
  436. package/es/components/molecules/IconSelection/types.d.ts +26 -26
  437. package/es/components/molecules/IconSelection/types.js +2 -2
  438. package/es/components/molecules/IconSelection/utils.d.ts +4 -4
  439. package/es/components/molecules/IconSelection/utils.js +13 -13
  440. package/es/components/molecules/InputNumber/index.d.ts +9 -9
  441. package/es/components/molecules/InputNumber/index.js +81 -81
  442. package/es/components/molecules/InputNumberWithUnit/index.d.ts +31 -31
  443. package/es/components/molecules/InputNumberWithUnit/index.js +37 -37
  444. package/es/components/molecules/InputNumberWithUnit/styled.d.ts +1 -1
  445. package/es/components/molecules/InputNumberWithUnit/styled.js +20 -20
  446. package/es/components/molecules/InputSearch/index.d.ts +7 -7
  447. package/es/components/molecules/InputSearch/index.js +23 -23
  448. package/es/components/molecules/InputSearch/styled.d.ts +1 -1
  449. package/es/components/molecules/InputSearch/styled.js +48 -48
  450. package/es/components/molecules/Modal/Modal.d.ts +23 -23
  451. package/es/components/molecules/Modal/Modal.js +26 -26
  452. package/es/components/molecules/Modal/index.d.ts +1 -1
  453. package/es/components/molecules/Modal/index.js +1 -1
  454. package/es/components/molecules/Modal/styled.d.ts +15 -15
  455. package/es/components/molecules/Modal/styled.js +78 -78
  456. package/es/components/molecules/Popconfirm/Popconfirm.d.ts +4 -4
  457. package/es/components/molecules/Popconfirm/Popconfirm.js +2 -2
  458. package/es/components/molecules/Popconfirm/index.d.ts +1 -1
  459. package/es/components/molecules/Popconfirm/index.js +1 -1
  460. package/es/components/molecules/PopupDraggable/PopupDraggable.d.ts +6 -6
  461. package/es/components/molecules/PopupDraggable/PopupDraggable.js +52 -52
  462. package/es/components/molecules/PopupDraggable/index.d.ts +1 -1
  463. package/es/components/molecules/PopupDraggable/index.js +1 -1
  464. package/es/components/molecules/PopupDraggable/styled.d.ts +5 -5
  465. package/es/components/molecules/PopupDraggable/styled.js +52 -52
  466. package/es/components/molecules/PopupDraggable/types.d.ts +15 -15
  467. package/es/components/molecules/PopupDraggable/types.js +1 -1
  468. package/es/components/molecules/RadioGroup/index.d.ts +7 -7
  469. package/es/components/molecules/RadioGroup/index.js +23 -23
  470. package/es/components/molecules/RadioGroup/styled.d.ts +3 -3
  471. package/es/components/molecules/RadioGroup/styled.js +14 -14
  472. package/es/components/molecules/ResizeGrid/ResizeGrid.d.ts +3 -0
  473. package/es/components/molecules/ResizeGrid/ResizeGrid.js +353 -0
  474. package/es/components/molecules/ResizeGrid/components/Cell/Cell.d.ts +3 -0
  475. package/es/components/molecules/ResizeGrid/components/Cell/Cell.js +67 -0
  476. package/es/components/molecules/ResizeGrid/components/Cell/index.d.ts +1 -0
  477. package/es/components/molecules/ResizeGrid/components/Cell/index.js +1 -0
  478. package/es/components/molecules/ResizeGrid/components/Cell/styled.d.ts +3 -0
  479. package/es/components/molecules/ResizeGrid/components/Cell/styled.js +62 -0
  480. package/es/components/molecules/ResizeGrid/constant.d.ts +34 -0
  481. package/es/components/molecules/ResizeGrid/constant.js +108 -0
  482. package/es/components/molecules/ResizeGrid/index.d.ts +2 -0
  483. package/es/components/molecules/ResizeGrid/index.js +1 -0
  484. package/es/components/molecules/ResizeGrid/styled.d.ts +3 -0
  485. package/es/components/molecules/ResizeGrid/styled.js +20 -0
  486. package/es/components/molecules/ResizeGrid/types.d.ts +128 -0
  487. package/es/components/molecules/ResizeGrid/types.js +1 -0
  488. package/es/components/molecules/Result/Result.d.ts +1 -1
  489. package/es/components/molecules/Result/Result.js +2 -2
  490. package/es/components/molecules/Result/index.d.ts +1 -1
  491. package/es/components/molecules/Result/index.js +1 -1
  492. package/es/components/molecules/Select/Select.d.ts +17 -14
  493. package/es/components/molecules/Select/Select.js +50 -29
  494. package/es/components/molecules/Select/Test.d.ts +3 -2
  495. package/es/components/molecules/Select/Test.js +22 -22
  496. package/es/components/molecules/Select/index.d.ts +2 -2
  497. package/es/components/molecules/Select/index.js +1 -1
  498. package/es/components/molecules/Select/styled.d.ts +4 -4
  499. package/es/components/molecules/Select/styled.js +41 -41
  500. package/es/components/molecules/SettingWrapper/index.d.ts +12 -13
  501. package/es/components/molecules/SettingWrapper/index.js +20 -20
  502. package/es/components/molecules/SettingWrapper/styled.d.ts +5 -5
  503. package/es/components/molecules/SettingWrapper/styled.js +17 -17
  504. package/es/components/molecules/SettingWrapperPopover/index.d.ts +16 -0
  505. package/es/components/molecules/SettingWrapperPopover/index.js +17 -0
  506. package/es/components/molecules/SliderWithInputNumber/index.d.ts +11 -11
  507. package/es/components/molecules/SliderWithInputNumber/index.js +62 -62
  508. package/es/components/molecules/SliderWithInputNumber/styled.d.ts +1 -1
  509. package/es/components/molecules/SliderWithInputNumber/styled.js +8 -8
  510. package/es/components/molecules/Tabs/Tabs.d.ts +1 -1
  511. package/es/components/molecules/Tabs/Tabs.js +1 -1
  512. package/es/components/molecules/Tabs/index.d.ts +1 -1
  513. package/es/components/molecules/Tabs/index.js +1 -1
  514. package/es/components/molecules/TextDecorationSelect/constants.d.ts +19 -0
  515. package/es/components/molecules/TextDecorationSelect/constants.js +26 -0
  516. package/es/components/molecules/TextDecorationSelect/index.d.ts +15 -0
  517. package/es/components/molecules/TextDecorationSelect/index.js +45 -0
  518. package/es/components/molecules/TextTransformSelect/constants.d.ts +13 -0
  519. package/es/components/molecules/TextTransformSelect/constants.js +19 -0
  520. package/es/components/molecules/TextTransformSelect/index.d.ts +9 -0
  521. package/es/components/molecules/TextTransformSelect/index.js +39 -0
  522. package/es/components/molecules/TreeSelect/TreeSelect.d.ts +11 -11
  523. package/es/components/molecules/TreeSelect/TreeSelect.js +2 -2
  524. package/es/components/molecules/TreeSelect/index.d.ts +1 -1
  525. package/es/components/molecules/TreeSelect/index.js +1 -1
  526. package/es/components/molecules/UploadImage/MediaIcon.d.ts +3 -2
  527. package/es/components/molecules/UploadImage/MediaIcon.js +8 -8
  528. package/es/components/molecules/UploadImage/index.d.ts +33 -33
  529. package/es/components/molecules/UploadImage/index.js +366 -366
  530. package/es/components/molecules/UploadImage/styled.d.ts +13 -13
  531. package/es/components/molecules/UploadImage/styled.js +134 -134
  532. package/es/components/molecules/index.d.ts +40 -30
  533. package/es/components/molecules/index.js +35 -27
  534. package/es/components/organism/Help/Help.d.ts +5 -5
  535. package/es/components/organism/Help/Help.js +1005 -1005
  536. package/es/components/organism/Help/constants.d.ts +140 -140
  537. package/es/components/organism/Help/constants.js +1653 -1653
  538. package/es/components/organism/Help/index.d.ts +1 -1
  539. package/es/components/organism/Help/index.js +1 -1
  540. package/es/components/organism/Help/styled.d.ts +71 -71
  541. package/es/components/organism/Help/styled.js +264 -264
  542. package/es/components/organism/Help/types.d.ts +67 -67
  543. package/es/components/organism/Help/types.js +1 -1
  544. package/es/components/organism/Help/utils.d.ts +15 -15
  545. package/es/components/organism/Help/utils.js +82 -82
  546. package/es/components/organism/PositionSetting/config.d.ts +10 -10
  547. package/es/components/organism/PositionSetting/config.js +10 -10
  548. package/es/components/organism/PositionSetting/index.d.ts +15 -15
  549. package/es/components/organism/PositionSetting/index.js +62 -62
  550. package/es/components/organism/PositionSetting/styled.d.ts +1 -1
  551. package/es/components/organism/PositionSetting/styled.js +3 -3
  552. package/es/components/organism/PositionSetting/types.d.ts +10 -10
  553. package/es/components/organism/PositionSetting/types.js +1 -1
  554. package/es/components/organism/Table/CrossTabTable/CrossTabTable.d.ts +18 -18
  555. package/es/components/organism/Table/CrossTabTable/CrossTabTable.js +305 -305
  556. package/es/components/organism/Table/CrossTabTable/components/CustomCell/CustomCell.d.ts +11 -11
  557. package/es/components/organism/Table/CrossTabTable/components/CustomCell/CustomCell.js +22 -22
  558. package/es/components/organism/Table/CrossTabTable/components/CustomCell/index.d.ts +1 -1
  559. package/es/components/organism/Table/CrossTabTable/components/CustomCell/index.js +1 -1
  560. package/es/components/organism/Table/CrossTabTable/components/CustomCell/styled.d.ts +1 -1
  561. package/es/components/organism/Table/CrossTabTable/components/CustomCell/styled.js +13 -13
  562. package/es/components/organism/Table/CrossTabTable/constants.d.ts +75 -75
  563. package/es/components/organism/Table/CrossTabTable/constants.js +1525 -1525
  564. package/es/components/organism/Table/CrossTabTable/index.d.ts +1 -1
  565. package/es/components/organism/Table/CrossTabTable/index.js +1 -1
  566. package/es/components/organism/Table/CrossTabTable/styled.d.ts +1 -1
  567. package/es/components/organism/Table/CrossTabTable/styled.js +13 -13
  568. package/es/components/organism/Table/CrossTabTable/types.d.ts +1 -1
  569. package/es/components/organism/Table/CrossTabTable/types.js +1 -1
  570. package/es/components/organism/Table/CrossTabTable/utils.d.ts +1 -1
  571. package/es/components/organism/Table/CrossTabTable/utils.js +1 -1
  572. package/es/components/organism/Table/ExplorePivotTable/ExplorePivotTable.d.ts +11 -11
  573. package/es/components/organism/Table/ExplorePivotTable/ExplorePivotTable.js +51 -51
  574. package/es/components/organism/Table/ExplorePivotTable/components/CustomCell/CustomCell.d.ts +12 -12
  575. package/es/components/organism/Table/ExplorePivotTable/components/CustomCell/CustomCell.js +41 -41
  576. package/es/components/organism/Table/ExplorePivotTable/components/CustomCell/index.d.ts +1 -1
  577. package/es/components/organism/Table/ExplorePivotTable/components/CustomCell/index.js +1 -1
  578. package/es/components/organism/Table/ExplorePivotTable/components/CustomCell/styled.d.ts +3 -3
  579. package/es/components/organism/Table/ExplorePivotTable/components/CustomCell/styled.js +21 -21
  580. package/es/components/organism/Table/ExplorePivotTable/constants.d.ts +4 -4
  581. package/es/components/organism/Table/ExplorePivotTable/constants.js +84 -84
  582. package/es/components/organism/Table/ExplorePivotTable/index.d.ts +2 -2
  583. package/es/components/organism/Table/ExplorePivotTable/index.js +2 -2
  584. package/es/components/organism/Table/ExplorePivotTable/styled.d.ts +12 -12
  585. package/es/components/organism/Table/ExplorePivotTable/styled.js +15 -15
  586. package/es/components/organism/Table/ExplorePivotTable/types.d.ts +17 -17
  587. package/es/components/organism/Table/ExplorePivotTable/types.js +1 -1
  588. package/es/components/organism/Table/ExplorePivotTable/utils.d.ts +4 -4
  589. package/es/components/organism/Table/ExplorePivotTable/utils.js +154 -154
  590. package/es/components/organism/Table/Table.d.ts +1 -1
  591. package/es/components/organism/Table/Table.js +1 -1
  592. package/es/components/organism/Table/index.d.ts +2 -2
  593. package/es/components/organism/Table/index.js +2 -2
  594. package/es/components/organism/index.d.ts +3 -3
  595. package/es/components/organism/index.js +3 -3
  596. package/es/constants/gradientSetting.d.ts +83 -83
  597. package/es/constants/gradientSetting.js +86 -86
  598. package/es/constants/index.d.ts +3 -3
  599. package/es/constants/index.js +3 -3
  600. package/es/constants/keyCode.d.ts +387 -387
  601. package/es/constants/keyCode.js +394 -394
  602. package/es/constants/storybook.d.ts +12 -11
  603. package/es/constants/storybook.js +24 -24
  604. package/es/constants/theme.d.ts +12 -12
  605. package/es/constants/theme.js +168 -146
  606. package/es/hooks/index.d.ts +2 -2
  607. package/es/hooks/index.js +21 -21
  608. package/es/hooks/useDebounce.d.ts +3 -3
  609. package/es/hooks/useDebounce.js +15 -15
  610. package/es/hooks/useDeepCompareEffect.d.ts +1 -0
  611. package/es/hooks/useDeepCompareEffect.js +21 -0
  612. package/es/index.d.ts +1 -1
  613. package/es/index.js +1 -1
  614. package/es/locales/en/translation.json +66 -66
  615. package/es/locales/i18n.d.ts +140 -140
  616. package/es/locales/i18n.js +38 -38
  617. package/es/locales/translations.d.ts +70 -70
  618. package/es/locales/translations.js +35 -35
  619. package/es/locales/types.d.ts +15 -15
  620. package/es/locales/types.js +1 -1
  621. package/es/locales/vi/translation.json +66 -66
  622. package/es/models/SavedImage.d.ts +32 -32
  623. package/es/models/SavedImage.js +26 -26
  624. package/es/models/Upload.d.ts +32 -32
  625. package/es/models/Upload.js +21 -21
  626. package/es/models/model.d.ts +8 -8
  627. package/es/models/model.js +5 -5
  628. package/es/services/MediaTemplateDesign/UploadFile/index.d.ts +6 -6
  629. package/es/services/MediaTemplateDesign/UploadFile/index.js +75 -75
  630. package/es/services/Ticket.d.ts +67 -67
  631. package/es/services/Ticket.js +73 -73
  632. package/es/services/constants.d.ts +20 -20
  633. package/es/services/constants.js +21 -21
  634. package/es/services/index.d.ts +9 -9
  635. package/es/services/index.js +64 -64
  636. package/es/test.d.ts +14 -13
  637. package/es/test.js +162 -155
  638. package/es/types/index.d.ts +6 -6
  639. package/es/types/index.js +1 -1
  640. package/es/utils/color.d.ts +10 -10
  641. package/es/utils/color.js +61 -61
  642. package/es/utils/common.d.ts +53 -53
  643. package/es/utils/common.js +355 -355
  644. package/es/utils/handleError.d.ts +2 -2
  645. package/es/utils/handleError.js +6 -6
  646. package/es/utils/index.d.ts +3 -3
  647. package/es/utils/index.js +3 -3
  648. package/es/utils/loadable.d.ts +7 -7
  649. package/es/utils/loadable.js +10 -10
  650. package/es/utils/web.d.ts +10 -10
  651. package/es/utils/web.js +26 -26
  652. package/package.json +183 -182
@@ -1,834 +1,834 @@
1
- // Libraries
2
- import React, { useState, useEffect, useRef, useMemo, useCallback } from 'react';
3
- import clsx from 'clsx';
4
- // import html2canvas from 'html2canvas';
5
- import { toPng } from 'html-to-image';
6
- import { isEmpty } from 'lodash';
7
- // import { PositionCursorProps } from './components/Cursor/types';
8
- // Styled
9
- import { BorderOverlay, BoxColor, ContainerCapture, Divider, DrawerGroupItem, DrawerGroups, FlexCenter, FlexColumn, Heading, ImageIcon, OutlineRemoveContainer, PopupBySide, WrapperColor, WrapperDraggable, WrapperIcon, WrapperRemoveBtn, } from './styled';
10
- // Components
11
- import Icon from '@antscorp/icons';
12
- import { Button } from '@antscorp/antsomi-ui/es/components/atoms';
13
- import { PopupDraggable } from '../PopupDraggable';
14
- import { Cursor } from './components/Cursor';
15
- import { CommentBox } from './components/CommentBox';
16
- import { Progress } from 'antd';
17
- // Constants
18
- import { THEME } from '@antscorp/antsomi-ui/es/constants';
19
- import { DRAW_ACTION_LIST, DRAW_KEYS, COMMENT_BOX_DIMENSION_FIXED, OFFSET_CENTER, IGNORE_DRAW_ID_LIST, styleContainer, RECORD_KEYS, SIZE_ADJUST, styleRecordItem, styleDrawItem, } from './constants';
20
- import { ATTACH_KEYS } from '@antscorp/antsomi-ui/es/components/organism/Help/constants';
21
- // Hooks
22
- import { useImageEditor } from './hooks/useImageEditor';
23
- // Utils
24
- import { generateUniqueId, initDefaultColors } from './utils';
25
- import { ArrowGrowIcon, AudioRecordIcon, CheckSlimIcon, CommentIcon, FreeDrawIcon, HighlightIcon, InvisibleIcon, MuteIcon, PauseIcon, StopRecordIcon, } from '@antscorp/antsomi-ui/es/components/icons';
26
- const CaptureScreen = (props) => {
27
- var _a, _b, _c;
28
- const { captureType, src, defaultPositions, recorderConfigs, callback } = props;
29
- const [isShowCursor, setIsShowCursor] = useState(false);
30
- const [drawItemActive, setDrawItemActive] = useState('');
31
- const [recordingItemActive, setRecordingItemActive] = useState('');
32
- const [isMouseDowning, setIsMouseDowning] = useState(false);
33
- const [isRecording, setIsRecording] = useState(false);
34
- const [drawColors, setDrawColors] = useState(initDefaultColors());
35
- const [commentInfoList, setCommentInfoList] = useState([]);
36
- const [seconds, setSeconds] = useState(0);
37
- const [minutes, setMinutes] = useState(0);
38
- const [percentage, setPercentage] = useState(0);
39
- const imageEditorRef = useRef(null);
40
- const cursorRef = useRef(null);
41
- const outlineRemoveContainerRef = useRef(null);
42
- const wrapperRemoveBtnRef = useRef(null);
43
- const timerIdRef = useRef(null);
44
- const { editorInstance, canvasEditor, methods } = useImageEditor(imageEditorRef, {
45
- preventCreateInstance: captureType !== ATTACH_KEYS.CAPTURE,
46
- });
47
- const { activateShapeMode, getSettings } = methods;
48
- const handleMouseMove = useCallback(event => {
49
- var _a;
50
- event.preventDefault();
51
- event.stopPropagation();
52
- const positionX = event === null || event === void 0 ? void 0 : event.clientX;
53
- const positionY = event === null || event === void 0 ? void 0 : event.clientY;
54
- if (!isEmpty(cursorRef.current)) {
55
- const cursorRefTemp = cursorRef.current;
56
- cursorRefTemp.style.left = `${positionX}px`;
57
- cursorRefTemp.style.top = `${positionY}px`;
58
- (_a = imageEditorRef.current) === null || _a === void 0 ? void 0 : _a.classList.add('hide-cursor');
59
- }
60
- }, []);
61
- useEffect(() => {
62
- let canvasUpper;
63
- if (!isEmpty(editorInstance) && captureType === ATTACH_KEYS.CAPTURE) {
64
- canvasUpper = document.querySelector('.tui-image-editor-canvas-container .upper-canvas');
65
- if (canvasUpper &&
66
- [DRAW_KEYS.PEN, DRAW_KEYS.COMMENT, DRAW_KEYS.HIGHLIGHT].includes(drawItemActive)) {
67
- canvasUpper.addEventListener('mousemove', handleMouseMove);
68
- }
69
- }
70
- return () => {
71
- if (canvasUpper) {
72
- canvasUpper.removeEventListener('mousemove', handleMouseMove);
73
- }
74
- };
75
- }, [editorInstance, captureType, drawItemActive, handleMouseMove]);
76
- useEffect(() => {
77
- let timerId;
78
- if (isEmpty(drawItemActive) && isMouseDowning && captureType === ATTACH_KEYS.CAPTURE) {
79
- timerId = setTimeout(() => {
80
- setIsMouseDowning(false);
81
- }, 300);
82
- }
83
- return () => {
84
- clearTimeout(timerId);
85
- };
86
- }, [drawItemActive, isMouseDowning, captureType]);
87
- useEffect(() => {
88
- if (captureType === ATTACH_KEYS.CAPTURE) {
89
- const canvasContainer = document.querySelector('.tui-image-editor-canvas-container');
90
- const handleAddComment = event => {
91
- try {
92
- event.stopPropagation();
93
- const canvasUpper = canvasContainer.querySelector('.upper-canvas');
94
- if (!canvasUpper)
95
- return;
96
- const pointerPosX = event.clientX;
97
- const pointerPosY = event.clientY;
98
- const clientX = canvasUpper.clientWidth;
99
- const clientY = canvasUpper.clientHeight;
100
- let isReverseAxisX = false;
101
- let isReverseAxisY = false;
102
- if (clientX - pointerPosX < COMMENT_BOX_DIMENSION_FIXED.width) {
103
- isReverseAxisX = true;
104
- }
105
- if (clientY - pointerPosY < COMMENT_BOX_DIMENSION_FIXED.height) {
106
- isReverseAxisY = true;
107
- }
108
- if (imageEditorRef &&
109
- imageEditorRef.current &&
110
- imageEditorRef.current.classList.contains('hide-cursor')) {
111
- setIsShowCursor(false);
112
- imageEditorRef.current.classList.remove('hide-cursor');
113
- canvasUpper.removeEventListener('mousemove', handleMouseMove);
114
- }
115
- setCommentInfoList(prevCommentList => {
116
- if (prevCommentList.length > 0 &&
117
- !prevCommentList[prevCommentList.length - 1].isSubmitted)
118
- return prevCommentList;
119
- const randomId = generateUniqueId();
120
- // Căn giữa CommentPoint Component theo cursor click
121
- const left = pointerPosX - OFFSET_CENTER;
122
- const top = pointerPosY - OFFSET_CENTER;
123
- const temp = [...prevCommentList];
124
- let newLatestCommentIndex = 1;
125
- if (temp.length > 0) {
126
- newLatestCommentIndex = temp[temp.length - 1].index + 1;
127
- }
128
- temp.push({
129
- left,
130
- top,
131
- content: '',
132
- id: randomId,
133
- color: drawColors[DRAW_KEYS.COMMENT],
134
- index: newLatestCommentIndex,
135
- isSubmitted: false,
136
- isReverseAxisX,
137
- isReverseAxisY,
138
- });
139
- return temp;
140
- });
141
- }
142
- catch (error) {
143
- // eslint-disable-next-line no-console
144
- console.log('error :>', error);
145
- }
146
- };
147
- try {
148
- if (canvasContainer && drawItemActive === DRAW_KEYS.COMMENT) {
149
- canvasContainer.addEventListener('mousedown', handleAddComment);
150
- }
151
- }
152
- catch (error) {
153
- // eslint-disable-next-line no-console
154
- console.log('error :>', error);
155
- }
156
- return () => {
157
- canvasContainer.removeEventListener('mousedown', handleAddComment);
158
- };
159
- }
160
- }, [drawItemActive, drawColors, captureType, handleMouseMove]);
161
- useEffect(() => {
162
- let handleMouseUp;
163
- let canvasUpper;
164
- if (!isEmpty(editorInstance) && captureType === ATTACH_KEYS.CAPTURE) {
165
- canvasUpper = document.querySelector('.tui-image-editor-canvas-container .upper-canvas');
166
- if (canvasUpper) {
167
- handleMouseUp = () => {
168
- setIsMouseDowning(false);
169
- if ([DRAW_KEYS.PEN, DRAW_KEYS.HIGHLIGHT].includes(drawItemActive)) {
170
- canvasUpper.addEventListener('mousemove', handleMouseMove);
171
- }
172
- };
173
- canvasUpper.addEventListener('mouseup', handleMouseUp);
174
- }
175
- // reset lại draw type đang active và đưa draw về mode NORMAL sau khi add 1 object
176
- editorInstance === null || editorInstance === void 0 ? void 0 : editorInstance.on('objectAdded', _data => {
177
- setIsMouseDowning(false);
178
- });
179
- }
180
- return () => {
181
- if (canvasUpper && handleMouseUp) {
182
- canvasUpper.removeEventListener('mouseup', handleMouseUp);
183
- }
184
- };
185
- }, [editorInstance, captureType, drawItemActive, handleMouseMove]);
186
- const handleClickDrawItem = useCallback((item, stroke) => {
187
- try {
188
- // Không được chuyển type draw khi chưa submit comment
189
- if (commentInfoList.length > 0 && !commentInfoList[commentInfoList.length - 1].isSubmitted)
190
- return;
191
- const { key } = item;
192
- if (!key)
193
- return;
194
- if (drawItemActive !== key) {
195
- setDrawItemActive(key);
196
- }
197
- if (isEmpty(editorInstance))
198
- return;
199
- const color = stroke || drawColors[key];
200
- const settings = getSettings(key, color);
201
- switch (key) {
202
- case DRAW_KEYS.CANCEL: {
203
- callback('CLOSE_DRAWER');
204
- break;
205
- }
206
- case DRAW_KEYS.HIGHLIGHT:
207
- case DRAW_KEYS.HIDE: {
208
- if (key === DRAW_KEYS.HIGHLIGHT) {
209
- setIsShowCursor(true);
210
- }
211
- if (imageEditorRef &&
212
- imageEditorRef.current &&
213
- imageEditorRef.current.classList.contains('hide-cursor') &&
214
- key === DRAW_KEYS.HIDE) {
215
- imageEditorRef.current.classList.remove('hide-cursor');
216
- }
217
- const shapeType = [DRAW_KEYS.HIGHLIGHT, DRAW_KEYS.HIDE].includes(key)
218
- ? 'rect'
219
- : 'circle';
220
- editorInstance.setDrawingShape(shapeType, settings);
221
- activateShapeMode();
222
- break;
223
- }
224
- case DRAW_KEYS.PEN: {
225
- setIsShowCursor(true);
226
- editorInstance.stopDrawingMode();
227
- editorInstance.changeCursor('none');
228
- editorInstance.startDrawingMode('FREE_DRAWING', settings);
229
- break;
230
- }
231
- case DRAW_KEYS.ARROW: {
232
- setIsShowCursor(false);
233
- if (imageEditorRef &&
234
- imageEditorRef.current &&
235
- imageEditorRef.current.classList.contains('hide-cursor')) {
236
- imageEditorRef.current.classList.remove('hide-cursor');
237
- }
238
- editorInstance.stopDrawingMode();
239
- editorInstance.startDrawingMode('LINE_DRAWING', settings);
240
- break;
241
- }
242
- case DRAW_KEYS.DONE: {
243
- setIsShowCursor(false);
244
- if (imageEditorRef &&
245
- imageEditorRef.current &&
246
- imageEditorRef.current.classList.contains('hide-cursor')) {
247
- imageEditorRef.current.classList.remove('hide-cursor');
248
- }
249
- editorInstance.deactivateAll();
250
- editorInstance.stopDrawingMode();
251
- setDrawItemActive('');
252
- toPng(imageEditorRef.current, {
253
- filter: (element) => ![
254
- IGNORE_DRAW_ID_LIST.DRAW_ACTIONS,
255
- IGNORE_DRAW_ID_LIST.ICON_CLOSE,
256
- IGNORE_DRAW_ID_LIST.BORDER_OVERLAY,
257
- ].some(id => element.id === id),
258
- })
259
- .then(dataURL => {
260
- const imageName = editorInstance.getImageName();
261
- if (typeof callback === 'function') {
262
- callback('ON_DRAWER_DONE', { imageName, dataURL });
263
- }
264
- })
265
- .catch(error => {
266
- // eslint-disable-next-line no-console
267
- console.error('oops, something went wrong!', error);
268
- });
269
- // html2canvas(imageEditorRef.current as HTMLElement, {
270
- // allowTaint: false,
271
- // ignoreElements: (element: Element) => {
272
- // if (
273
- // (
274
- // [IGNORE_DRAW_ID_LIST.DRAW_ACTIONS, IGNORE_DRAW_ID_LIST.ICON_CLOSE] as string[]
275
- // ).includes(element.id)
276
- // ) {
277
- // return true;
278
- // }
279
- // return false;
280
- // },
281
- // }).then(canvas => {
282
- // const dataURL = canvas.toDataURL('image/png');
283
- // console.log('insideee.dev - dataUrl :>', dataURL);
284
- // const imageName = editorInstance.getImageName();
285
- // if (typeof callback === 'function') {
286
- // callback('ON_DRAWER_DONE', { imageName, dataURL });
287
- // }
288
- // });
289
- break;
290
- }
291
- case DRAW_KEYS.COMMENT: {
292
- setIsShowCursor(true);
293
- editorInstance.stopDrawingMode();
294
- editorInstance.changeCursor('cell');
295
- break;
296
- }
297
- default: {
298
- break;
299
- }
300
- }
301
- }
302
- catch (error) {
303
- // eslint-disable-next-line no-console
304
- console.log('error :>', error);
305
- }
306
- }, [
307
- activateShapeMode,
308
- callback,
309
- commentInfoList,
310
- drawColors,
311
- drawItemActive,
312
- editorInstance,
313
- getSettings,
314
- ]);
315
- useEffect(() => {
316
- try {
317
- if (!isEmpty(editorInstance) && captureType === ATTACH_KEYS.CAPTURE) {
318
- editorInstance.on('mousedown', () => {
319
- const canvasUpper = document.querySelector('.tui-image-editor-canvas-container .upper-canvas');
320
- if (canvasUpper) {
321
- canvasUpper.removeEventListener('mousemove', handleMouseMove);
322
- }
323
- if (editorInstance.getDrawingMode() !== 'NORMAL') {
324
- setIsMouseDowning(true);
325
- }
326
- });
327
- }
328
- }
329
- catch (err) {
330
- // eslint-disable-next-line no-console
331
- console.log(err);
332
- }
333
- }, [captureType, editorInstance, handleMouseMove, handleClickDrawItem]);
334
- useEffect(() => {
335
- if (captureType === ATTACH_KEYS.CAPTURE &&
336
- isEmpty(drawItemActive) &&
337
- !isEmpty(editorInstance)) {
338
- handleClickDrawItem(DRAW_ACTION_LIST[0]);
339
- }
340
- // eslint-disable-next-line react-hooks/exhaustive-deps
341
- }, [editorInstance]);
342
- const handleSetColorByKey = (e, drawItem, itemColor) => {
343
- e.stopPropagation();
344
- // Không được chuyển type draw khi chưa submit comment
345
- if (commentInfoList.length > 0 && !commentInfoList[commentInfoList.length - 1].isSubmitted)
346
- return;
347
- const { key } = drawItem;
348
- setDrawColors(Object.assign(Object.assign({}, drawColors), { [key]: itemColor }));
349
- if (isEmpty(editorInstance))
350
- return;
351
- handleClickDrawItem(drawItem, itemColor);
352
- };
353
- const handleChangeComment = (type, dataIn) => {
354
- const commentIndex = commentInfoList.findIndex(item => item.id === dataIn.id);
355
- if (commentIndex === -1)
356
- return;
357
- const tempCommentList = [...commentInfoList];
358
- if (type === 'CHANGE_CONTENT') {
359
- tempCommentList.splice(commentIndex, 1, dataIn);
360
- }
361
- else if (type === 'SUBMIT') {
362
- const temp = Object.assign(Object.assign({}, dataIn), { isSubmitted: true });
363
- tempCommentList.splice(commentIndex, 1, temp);
364
- }
365
- else if (type === 'CANCEL') {
366
- tempCommentList.splice(commentIndex, 1);
367
- }
368
- setCommentInfoList(tempCommentList);
369
- if (['SUBMIT', 'CANCEL'].includes(type) && imageEditorRef && imageEditorRef.current) {
370
- const canvasUpper = document.querySelector('.tui-image-editor-canvas-container .upper-canvas');
371
- if (canvasUpper &&
372
- [DRAW_KEYS.COMMENT, DRAW_KEYS.HIGHLIGHT, DRAW_KEYS.PEN].includes(drawItemActive)) {
373
- canvasUpper.addEventListener('mousemove', handleMouseMove);
374
- imageEditorRef.current.classList.add('hide-cursor');
375
- setIsShowCursor(true);
376
- }
377
- }
378
- };
379
- useEffect(() => {
380
- if (!isEmpty(recorderConfigs) && recorderConfigs.recorder) {
381
- recorderConfigs.recorder.onerror = (event) => {
382
- // eslint-disable-next-line no-console
383
- console.error('MediaRecorder error:', event.error);
384
- setIsRecording(false);
385
- };
386
- }
387
- // eslint-disable-next-line react-hooks/exhaustive-deps
388
- }, [recorderConfigs.recorder]);
389
- useEffect(() => () => {
390
- if (typeof callback === 'function') {
391
- callback('RESET_POSITION_DRAG');
392
- }
393
- if (timerIdRef && timerIdRef.current) {
394
- clearTimeout(timerIdRef.current);
395
- }
396
- },
397
- // eslint-disable-next-line react-hooks/exhaustive-deps
398
- []);
399
- const handleActionRecorderByType = useCallback((type) => {
400
- var _a, _b;
401
- try {
402
- if (isEmpty(recorderConfigs) ||
403
- !recorderConfigs.recorder ||
404
- !recorderConfigs.streamTracks ||
405
- !((_a = recorderConfigs.streamTracks) === null || _a === void 0 ? void 0 : _a.desktopStream) ||
406
- !((_b = recorderConfigs.streamTracks) === null || _b === void 0 ? void 0 : _b.voiceStream))
407
- return;
408
- switch (type) {
409
- case RECORD_KEYS.START: {
410
- const recordActionEle = document.getElementById(IGNORE_DRAW_ID_LIST.DRAW_ACTIONS);
411
- if (recordActionEle && (defaultPositions === null || defaultPositions === void 0 ? void 0 : defaultPositions.record)) {
412
- timerIdRef.current = setTimeout(() => {
413
- recordActionEle.style.transform = `translate(${defaultPositions === null || defaultPositions === void 0 ? void 0 : defaultPositions.record.x}px, ${defaultPositions === null || defaultPositions === void 0 ? void 0 : defaultPositions.record.y}px)`;
414
- }, 10);
415
- }
416
- recorderConfigs.recorder.start();
417
- setRecordingItemActive(type);
418
- setIsRecording(true);
419
- break;
420
- }
421
- case RECORD_KEYS.STOP: {
422
- if (['paused', 'recording'].includes(recorderConfigs.recorder.state)) {
423
- recorderConfigs.recorder.stop();
424
- setIsRecording(false);
425
- }
426
- const { desktopStream, voiceStream } = recorderConfigs.streamTracks;
427
- desktopStream.getTracks().forEach(track => track.stop());
428
- voiceStream.getTracks().forEach(track => track.stop());
429
- if (typeof callback === 'function') {
430
- callback('STOP_RECORDER', recorderConfigs);
431
- }
432
- setRecordingItemActive(type);
433
- break;
434
- }
435
- case RECORD_KEYS.PAUSE: {
436
- if (recorderConfigs.recorder.state === 'paused') {
437
- recorderConfigs.recorder.resume();
438
- }
439
- else {
440
- recorderConfigs.recorder.pause();
441
- }
442
- setRecordingItemActive(prev => (prev === RECORD_KEYS.PAUSE ? '' : type));
443
- break;
444
- }
445
- // case RECORD_KEYS.RESUME: {
446
- // setRecordingItemActive(type);
447
- // recorderConfigs.recorder.resume();
448
- // break;
449
- // }
450
- case RECORD_KEYS.MUTED:
451
- case RECORD_KEYS.UNMUTE: {
452
- const { isMute, streamTracks } = recorderConfigs;
453
- const { voiceStream } = streamTracks;
454
- const audioTracks = voiceStream.getAudioTracks();
455
- audioTracks.forEach(track => {
456
- track.enabled = isMute;
457
- });
458
- setRecordingItemActive(type);
459
- callback('ON_CHANGE_MUTE');
460
- break;
461
- }
462
- default: {
463
- break;
464
- }
465
- }
466
- }
467
- catch (error) {
468
- // eslint-disable-next-line no-console
469
- console.log('error :>', error);
470
- }
471
- }, [callback, isRecording, recorderConfigs]);
472
- useEffect(() => {
473
- let intervalId;
474
- const totalDuration = 2 * 60;
475
- if (isRecording) {
476
- intervalId = setInterval(() => {
477
- var _a;
478
- if (((_a = recorderConfigs.recorder) === null || _a === void 0 ? void 0 : _a.state) === 'recording') {
479
- setSeconds(prevSeconds => (prevSeconds === 59 ? 0 : prevSeconds + 1));
480
- if (seconds === 59) {
481
- setMinutes(prevMinutes => prevMinutes + 1);
482
- }
483
- const currentSeconds = minutes * 60 + seconds;
484
- const progressPercentage = (currentSeconds / totalDuration) * 100;
485
- setPercentage(Number(progressPercentage.toFixed(2)));
486
- if (minutes === 2 && seconds === 0) {
487
- clearInterval(intervalId);
488
- handleActionRecorderByType(RECORD_KEYS.STOP);
489
- }
490
- }
491
- }, 1000);
492
- }
493
- return () => {
494
- if (intervalId) {
495
- clearInterval(intervalId);
496
- }
497
- };
498
- }, [
499
- handleActionRecorderByType,
500
- isRecording,
501
- minutes,
502
- (_a = recorderConfigs.recorder) === null || _a === void 0 ? void 0 : _a.state,
503
- seconds,
504
- percentage,
505
- ]);
506
- useEffect(() => {
507
- let ignoreHoveringList;
508
- let handleMouseEnterDrawActions;
509
- let handleMouseOutDrawActions;
510
- if (!isMouseDowning &&
511
- captureType === ATTACH_KEYS.CAPTURE &&
512
- [DRAW_KEYS.PEN, DRAW_KEYS.COMMENT, DRAW_KEYS.HIGHLIGHT].includes(drawItemActive)) {
513
- ignoreHoveringList = document.querySelectorAll(`.${IGNORE_DRAW_ID_LIST.CLASS_PREVENT_HOVER}`);
514
- if (ignoreHoveringList.length > 0) {
515
- handleMouseEnterDrawActions = event => {
516
- event.stopPropagation();
517
- if ((drawItemActive === DRAW_KEYS.COMMENT && commentInfoList.length === 0) ||
518
- (drawItemActive === DRAW_KEYS.COMMENT &&
519
- commentInfoList.length > 0 &&
520
- commentInfoList[commentInfoList.length - 1].isSubmitted) ||
521
- [DRAW_KEYS.PEN, DRAW_KEYS.HIGHLIGHT].includes(drawItemActive)) {
522
- setIsShowCursor(false);
523
- }
524
- };
525
- handleMouseOutDrawActions = event => {
526
- event.stopPropagation();
527
- if ((drawItemActive === DRAW_KEYS.COMMENT && commentInfoList.length === 0) ||
528
- (drawItemActive === DRAW_KEYS.COMMENT &&
529
- commentInfoList.length > 0 &&
530
- commentInfoList[commentInfoList.length - 1].isSubmitted) ||
531
- [DRAW_KEYS.PEN, DRAW_KEYS.HIGHLIGHT].includes(drawItemActive)) {
532
- setIsShowCursor(true);
533
- }
534
- };
535
- ignoreHoveringList.forEach(ignoreItem => {
536
- ignoreItem.addEventListener('mouseenter', handleMouseEnterDrawActions);
537
- ignoreItem.addEventListener('mouseleave', handleMouseOutDrawActions);
538
- });
539
- }
540
- }
541
- return () => {
542
- if (!isEmpty(ignoreHoveringList)) {
543
- ignoreHoveringList.forEach(ignoreItem => {
544
- ignoreItem.removeEventListener('mouseenter', handleMouseEnterDrawActions);
545
- ignoreItem.removeEventListener('mouseleave', handleMouseOutDrawActions);
546
- });
547
- }
548
- };
549
- }, [captureType, commentInfoList, drawItemActive, isMouseDowning]);
550
- const setPositionOutlineRemoveContainer = useCallback(obj => {
551
- const outlineRemoveContainer = outlineRemoveContainerRef.current || null;
552
- const removeBtn = wrapperRemoveBtnRef.current || null;
553
- const absCoords = {
554
- left: obj.left,
555
- top: obj.top,
556
- };
557
- const objWidth = obj.width * (obj.scaleX || 1);
558
- const objHeight = obj.height * (obj.scaleY || 1);
559
- if (outlineRemoveContainer) {
560
- outlineRemoveContainer.style.width = `${SIZE_ADJUST * objWidth + obj.strokeWidth}px`;
561
- outlineRemoveContainer.style.height = `${SIZE_ADJUST * objHeight + obj.strokeWidth}px`;
562
- outlineRemoveContainer.style.left = `${absCoords.left}px`;
563
- outlineRemoveContainer.style.top = `${absCoords.top}px`;
564
- }
565
- if (removeBtn) {
566
- removeBtn.style.left = `${absCoords.left + objWidth / 2}px`;
567
- removeBtn.style.top = `${absCoords.top - objHeight / 2}px`;
568
- }
569
- }, []);
570
- // Handle Hover and remove object in canvas
571
- useEffect(() => {
572
- let handleDelete;
573
- let handleRemoveBtnMouseEnter;
574
- let handleRemoveBtnMouseLeave;
575
- let currentObjectDrew = null;
576
- let activeObject = null;
577
- let isMouseDown = false;
578
- const btnRemove = wrapperRemoveBtnRef.current || null;
579
- const outlineRemoveContainer = outlineRemoveContainerRef.current || null;
580
- if (captureType === ATTACH_KEYS.CAPTURE && canvasEditor) {
581
- handleDelete = () => {
582
- // eslint-disable-next-line @typescript-eslint/no-unused-expressions
583
- currentObjectDrew && canvasEditor.remove(currentObjectDrew);
584
- if (btnRemove && outlineRemoveContainer) {
585
- btnRemove.style.display = 'none';
586
- outlineRemoveContainer.style.display = 'none';
587
- }
588
- };
589
- handleRemoveBtnMouseEnter = () => {
590
- if (!currentObjectDrew)
591
- return;
592
- if (btnRemove && !isMouseDown) {
593
- btnRemove.style.display = 'flex';
594
- }
595
- setPositionOutlineRemoveContainer(currentObjectDrew);
596
- if (outlineRemoveContainer && !isMouseDown) {
597
- outlineRemoveContainer.style.border = '2px dashed #707070';
598
- outlineRemoveContainer.style.display = 'block';
599
- }
600
- canvasEditor.renderAll();
601
- };
602
- handleRemoveBtnMouseLeave = () => {
603
- if (!currentObjectDrew)
604
- return;
605
- if (btnRemove && outlineRemoveContainer) {
606
- btnRemove.style.display = 'none';
607
- outlineRemoveContainer.style.border = 'none';
608
- }
609
- };
610
- if (btnRemove) {
611
- btnRemove.addEventListener('click', handleDelete);
612
- btnRemove.addEventListener('mouseenter', handleRemoveBtnMouseEnter);
613
- btnRemove.addEventListener('mouseleave', handleRemoveBtnMouseLeave);
614
- }
615
- canvasEditor.on('mouse:over', event => {
616
- if (!event.target || activeObject === event.target)
617
- return;
618
- const currentObj = event.target;
619
- currentObjectDrew = currentObj;
620
- setPositionOutlineRemoveContainer(currentObj);
621
- if (!isMouseDown) {
622
- if (btnRemove) {
623
- btnRemove.style.display = 'flex';
624
- }
625
- if (outlineRemoveContainer) {
626
- outlineRemoveContainer.style.border = '2px dashed #707070';
627
- outlineRemoveContainer.style.display = 'block';
628
- }
629
- }
630
- canvasEditor.renderAll();
631
- });
632
- canvasEditor.on('mouse:down', () => {
633
- isMouseDown = true;
634
- // eslint-disable-next-line no-underscore-dangle
635
- activeObject = canvasEditor._activeObject;
636
- if (btnRemove && outlineRemoveContainer && activeObject) {
637
- btnRemove.style.display = 'none';
638
- outlineRemoveContainer.style.border = 'none';
639
- }
640
- });
641
- canvasEditor.on('mouse:up', () => {
642
- isMouseDown = false;
643
- });
644
- canvasEditor.on('mouse:out', e => {
645
- if (!e.target)
646
- return;
647
- if (btnRemove && outlineRemoveContainer) {
648
- btnRemove.style.display = 'none';
649
- outlineRemoveContainer.style.border = 'none';
650
- }
651
- });
652
- canvasEditor.on('object:moving', () => {
653
- if (btnRemove && outlineRemoveContainer) {
654
- btnRemove.style.display = 'none';
655
- outlineRemoveContainer.style.border = 'none';
656
- }
657
- });
658
- }
659
- return () => {
660
- if (btnRemove) {
661
- // eslint-disable-next-line @typescript-eslint/no-unused-expressions
662
- handleDelete && btnRemove.removeEventListener('click', handleDelete);
663
- // eslint-disable-next-line @typescript-eslint/no-unused-expressions
664
- handleRemoveBtnMouseEnter &&
665
- btnRemove.removeEventListener('mouseenter', handleRemoveBtnMouseEnter);
666
- // eslint-disable-next-line @typescript-eslint/no-unused-expressions
667
- handleRemoveBtnMouseLeave &&
668
- btnRemove.removeEventListener('mouseleave', handleRemoveBtnMouseLeave);
669
- }
670
- };
671
- }, [captureType, canvasEditor, setPositionOutlineRemoveContainer]);
672
- useEffect(() => {
673
- if (captureType === ATTACH_KEYS.RECORD && isRecording) {
674
- const drawActions = document.getElementById(IGNORE_DRAW_ID_LIST.DRAW_ACTIONS);
675
- if (drawActions) {
676
- drawActions.style.transform = 'translate(169px, 0px)';
677
- }
678
- }
679
- }, [isRecording, captureType]);
680
- const numberCommentCursor = useMemo(() => {
681
- if (drawItemActive === DRAW_KEYS.COMMENT) {
682
- if (!commentInfoList[commentInfoList.length - 1])
683
- return 1;
684
- return commentInfoList[commentInfoList.length - 1].index + 1;
685
- }
686
- return null;
687
- }, [commentInfoList, drawItemActive]);
688
- const renderIcon = (name, style) => ({
689
- 'icon-ants-highlight': React.createElement(HighlightIcon, { style: style }),
690
- 'icon-ants-comment': React.createElement(CommentIcon, { style: style }),
691
- 'icon-ants-free-draw': React.createElement(FreeDrawIcon, { style: style }),
692
- 'icon-ants-arrow-grow': React.createElement(ArrowGrowIcon, { style: style }),
693
- 'icon-ants-invisible': React.createElement(InvisibleIcon, { style: style }),
694
- 'icon-ants-check-slim': React.createElement(CheckSlimIcon, { style: style }),
695
- 'icon-ants-audio-record': React.createElement(AudioRecordIcon, { style: style }),
696
- 'icon-ants-mute': React.createElement(MuteIcon, { style: style }),
697
- 'icon-ants-pause': React.createElement(PauseIcon, { style: style }),
698
- 'icon-ants-stop-record': React.createElement(StopRecordIcon, { style: style }),
699
- }[name]);
700
- const renderDrawActionList = () => DRAW_ACTION_LIST.map(drawItem => {
701
- var _a, _b, _c, _d;
702
- if ((drawItem === null || drawItem === void 0 ? void 0 : drawItem.type) === 'divider') {
703
- return React.createElement(Divider, { isVertical: true, key: drawItem.key, style: { width: styleDrawItem.SMALL } });
704
- }
705
- return (React.createElement(DrawerGroupItem, { key: drawItem.key, className: clsx({
706
- active: drawItemActive === drawItem.key,
707
- 'hide-hover': [DRAW_KEYS.DONE, DRAW_KEYS.CANCEL].includes(drawItem.key),
708
- }), style: {
709
- height: styleDrawItem.SMALL,
710
- marginLeft: [DRAW_KEYS.HIGHLIGHT, DRAW_KEYS.DONE].includes(drawItem.key)
711
- ? '15px'
712
- : '8px',
713
- marginRight: drawItem.key === DRAW_KEYS.HIDE ? '15px' : '8px',
714
- width: ![DRAW_KEYS.DONE, DRAW_KEYS.CANCEL].includes(drawItem.key)
715
- ? styleDrawItem.MEDIUM
716
- : 'auto',
717
- }, onClick: () => handleClickDrawItem(drawItem) },
718
- React.createElement(FlexColumn, null, [DRAW_KEYS.DONE, DRAW_KEYS.CANCEL].includes(drawItem.key) ? (React.createElement(Button, { type: drawItem.key === DRAW_KEYS.DONE ? 'primary' : 'default', style: { fontWeight: 'bold', flexDirection: 'row-reverse' }, icon: drawItem.key === DRAW_KEYS.DONE
719
- ? renderIcon('icon-ants-check-slim', {
720
- fontSize: '24px',
721
- color: `${(_a = THEME.token) === null || _a === void 0 ? void 0 : _a.bw0}`,
722
- })
723
- : undefined }, drawItem.label)) : (renderIcon(drawItem.icon, {
724
- maxWidth: '24px',
725
- fill: `${drawItemActive === drawItem.key
726
- ? (_b = THEME.token) === null || _b === void 0 ? void 0 : _b.colorPrimary
727
- : (_c = THEME.token) === null || _c === void 0 ? void 0 : _c.colorIcon}`,
728
- }))),
729
- drawItem.isShowColorList && (React.createElement(PopupBySide, { className: "toggle-popup-by-side" },
730
- React.createElement(Heading, null, drawItem.label),
731
- React.createElement(WrapperColor, null, (_d = drawItem.colorList) === null || _d === void 0 ? void 0 : _d.map(itemColor => {
732
- var _a;
733
- return (React.createElement(BoxColor, { key: `${drawItem.key}-${itemColor}`, bgColor: itemColor, onClick: e => handleSetColorByKey(e, drawItem, itemColor) }, drawColors[drawItem.key] === itemColor && (
734
- // <Icon
735
- // type="icon-ants-check-slim"
736
- // style={{ color: `${THEME.token?.bw0}`, fontSize: '20px' }}
737
- // />
738
- React.createElement(CheckSlimIcon, { style: {
739
- fill: `${(_a = THEME.token) === null || _a === void 0 ? void 0 : _a.bw0}`,
740
- maxWidth: '20px',
741
- } }))));
742
- }))))));
743
- });
744
- const renderRecordActionList = () => {
745
- var _a, _b, _c, _d;
746
- return (React.createElement(React.Fragment, null,
747
- React.createElement(WrapperDraggable, { className: "cursor", style: { height: '100%' } },
748
- React.createElement(FlexColumn, null,
749
- React.createElement(Icon, { type: "icon-ants-double-three-dots", style: { fontSize: '24px', color: 'rgba(89, 89, 89, 0.5)' } }))),
750
- React.createElement(Divider, { isVertical: true }),
751
- !isRecording ? (React.createElement(DrawerGroupItem, { style: styleRecordItem, className: clsx({ active: recordingItemActive === RECORD_KEYS.STOP }), onClick: () => handleActionRecorderByType(RECORD_KEYS.START) },
752
- React.createElement(FlexColumn, null,
753
- React.createElement(ImageIcon, { src: "https://st-media-template.antsomi.com/upload/2023/06/16/440878f6-0cc1-465e-b978-44bd4f348199.png", alt: "start-recording-icon" })))) : (React.createElement(React.Fragment, null,
754
- React.createElement(DrawerGroupItem, { className: clsx({
755
- active: recordingItemActive === RECORD_KEYS.STOP,
756
- }), style: styleRecordItem, onClick: () => handleActionRecorderByType(RECORD_KEYS.STOP) },
757
- React.createElement(FlexColumn, null, renderIcon('icon-ants-stop-record', {
758
- maxWidth: '24px',
759
- fill: `${(_a = THEME.token) === null || _a === void 0 ? void 0 : _a.red8}`,
760
- }))),
761
- React.createElement(DrawerGroupItem
762
- // key={recordItem.key}
763
- , {
764
- // key={recordItem.key}
765
- className: clsx({
766
- active: recordingItemActive === RECORD_KEYS.PAUSE,
767
- }), style: styleRecordItem, onClick: () => handleActionRecorderByType(RECORD_KEYS.PAUSE) },
768
- React.createElement(FlexColumn, null, recordingItemActive === RECORD_KEYS.PAUSE ? (React.createElement(ImageIcon, { src: "https://st-media-template.antsomi.com/upload/2023/06/16/440878f6-0cc1-465e-b978-44bd4f348199.png", alt: "start-recording-icon", style: { width: 22, height: 22 } })) : (renderIcon('icon-ants-pause', {
769
- maxWidth: '24px',
770
- fill: `${(_b = THEME.token) === null || _b === void 0 ? void 0 : _b.colorIcon}`,
771
- })))))),
772
- recorderConfigs && recorderConfigs.isMute ? (React.createElement(DrawerGroupItem, { className: clsx({
773
- active: recordingItemActive === RECORD_KEYS.UNMUTE,
774
- }), style: styleRecordItem, onClick: () => handleActionRecorderByType(RECORD_KEYS.UNMUTE) },
775
- React.createElement(FlexColumn, null, renderIcon('icon-ants-mute', {
776
- maxWidth: '24px',
777
- fill: `${(_c = THEME.token) === null || _c === void 0 ? void 0 : _c.colorIcon}`,
778
- })))) : (React.createElement(DrawerGroupItem, { className: clsx({
779
- active: recordingItemActive === RECORD_KEYS.MUTED,
780
- }), style: styleRecordItem, onClick: () => handleActionRecorderByType(RECORD_KEYS.MUTED) },
781
- React.createElement(FlexColumn, null, renderIcon('icon-ants-audio-record', {
782
- maxWidth: '24px',
783
- fill: `${(_d = THEME.token) === null || _d === void 0 ? void 0 : _d.colorIcon}`,
784
- })))),
785
- isRecording && (React.createElement(DrawerGroupItem, { style: Object.assign(Object.assign({}, styleRecordItem), { width: 130 }), className: "timer-recording" },
786
- React.createElement(FlexCenter, null,
787
- React.createElement(Progress, { percent: percentage, showInfo: false, style: { width: 100, margin: 0 } }),
788
- React.createElement(Heading, { style: { whiteSpace: 'nowrap' } }, `${minutes}:${seconds
789
- .toString()
790
- .padStart(2, '0')}`))))));
791
- };
792
- const renderPopupAction = (type) => {
793
- if (type === ATTACH_KEYS.RECORD) {
794
- return (React.createElement(PopupDraggable, { bounds: "body", name: ATTACH_KEYS.RECORD, defaultPosition: defaultPositions === null || defaultPositions === void 0 ? void 0 : defaultPositions.record, isHiddenClose: true, isHiddenResizing: true, id: IGNORE_DRAW_ID_LIST.DRAW_ACTIONS, styleContainer: styleContainer, callback: callback }, renderRecordActionList()));
795
- }
796
- return (!isMouseDowning && (React.createElement(PopupDraggable, { defaultPosition: defaultPositions === null || defaultPositions === void 0 ? void 0 : defaultPositions.capture, bounds: "body", name: ATTACH_KEYS.CAPTURE, isHiddenClose: true, isHiddenResizing: true, id: IGNORE_DRAW_ID_LIST.DRAW_ACTIONS, styleContainer: Object.assign(Object.assign({}, styleContainer), { height: styleDrawItem.LARGE, minHeight: styleDrawItem.LARGE, padding: '0px 5px' }), callback: callback },
797
- React.createElement(DrawerGroups, { id: IGNORE_DRAW_ID_LIST.DRAW_ACTIONS, className: IGNORE_DRAW_ID_LIST.CLASS_PREVENT_HOVER, style: { height: styleDrawItem.LARGE } },
798
- React.createElement(WrapperDraggable, { className: "cursor", style: {
799
- height: styleDrawItem.SMALL,
800
- width: styleDrawItem.MEDIUM,
801
- marginRight: 6,
802
- padding: 'unset',
803
- } },
804
- React.createElement(FlexColumn, null,
805
- React.createElement(Icon, { type: "icon-ants-double-three-dots", style: { fontSize: '24px', color: 'rgba(89, 89, 89, 0.5' } }))),
806
- React.createElement(Divider, { isVertical: true, style: { width: styleDrawItem.SMALL } }),
807
- renderDrawActionList()))));
808
- };
809
- const renderCommentList = (commentList) => commentList.map(commentItem => (React.createElement(CommentBox, { key: commentItem.id, className: IGNORE_DRAW_ID_LIST.CLASS_PREVENT_HOVER, boxDimension: COMMENT_BOX_DIMENSION_FIXED, offset: OFFSET_CENTER, info: commentItem, onChangeComment: handleChangeComment })));
810
- return (React.createElement(ContainerCapture, { imageURL: src, isRecord: captureType === ATTACH_KEYS.RECORD, ref: imageEditorRef },
811
- React.createElement(Cursor, { drawItemType: drawItemActive, cursorRef: cursorRef, isShowCursor: isShowCursor && !isMouseDowning, isPointerBox: drawItemActive === DRAW_KEYS.COMMENT, bgColor: drawColors[drawItemActive], offset: OFFSET_CENTER }, numberCommentCursor),
812
- captureType === ATTACH_KEYS.CAPTURE && (React.createElement(React.Fragment, null,
813
- renderCommentList(commentInfoList),
814
- React.createElement(BorderOverlay, { id: IGNORE_DRAW_ID_LIST.BORDER_OVERLAY, className: IGNORE_DRAW_ID_LIST.CLASS_PREVENT_HOVER }),
815
- React.createElement(WrapperIcon, { id: IGNORE_DRAW_ID_LIST.ICON_CLOSE, className: IGNORE_DRAW_ID_LIST.CLASS_PREVENT_HOVER,
816
- // isRecord={captureType === ATTACH_KEYS.RECORD}
817
- onClick: () => callback('CLOSE_DRAWER') },
818
- React.createElement(Icon, { type: "icon-ants-remove-slim", style: { color: `${(_b = THEME.token) === null || _b === void 0 ? void 0 : _b.bw0}`, fontSize: '12px' } })),
819
- React.createElement(OutlineRemoveContainer, { ref: outlineRemoveContainerRef }),
820
- React.createElement(WrapperRemoveBtn, { ref: wrapperRemoveBtnRef, className: IGNORE_DRAW_ID_LIST.CLASS_PREVENT_HOVER },
821
- React.createElement(Icon, { type: "icon-ants-remove-trash", style: { fontSize: '20px', color: `${(_c = THEME.token) === null || _c === void 0 ? void 0 : _c.colorIcon}` } })))),
822
- renderPopupAction(captureType)));
823
- };
824
- CaptureScreen.defaultProps = {
825
- isOpen: false,
826
- src: '',
827
- alt: 'CaptureScreen',
828
- defaultPositions: {
829
- capture: null,
830
- record: null,
831
- },
832
- callback: () => { },
833
- };
834
- export { CaptureScreen };
1
+ // Libraries
2
+ import React, { useState, useEffect, useRef, useMemo, useCallback } from 'react';
3
+ import clsx from 'clsx';
4
+ // import html2canvas from 'html2canvas';
5
+ import { toPng } from 'html-to-image';
6
+ import { isEmpty } from 'lodash';
7
+ // import { PositionCursorProps } from './components/Cursor/types';
8
+ // Styled
9
+ import { BorderOverlay, BoxColor, ContainerCapture, Divider, DrawerGroupItem, DrawerGroups, FlexCenter, FlexColumn, Heading, ImageIcon, OutlineRemoveContainer, PopupBySide, WrapperColor, WrapperDraggable, WrapperIcon, WrapperRemoveBtn, } from './styled';
10
+ // Components
11
+ import Icon from '@antscorp/icons';
12
+ import { Button } from '@antscorp/antsomi-ui/es/components/atoms';
13
+ import { PopupDraggable } from '../PopupDraggable';
14
+ import { Cursor } from './components/Cursor';
15
+ import { CommentBox } from './components/CommentBox';
16
+ import { Progress } from 'antd';
17
+ // Constants
18
+ import { THEME } from '@antscorp/antsomi-ui/es/constants';
19
+ import { DRAW_ACTION_LIST, DRAW_KEYS, COMMENT_BOX_DIMENSION_FIXED, OFFSET_CENTER, IGNORE_DRAW_ID_LIST, styleContainer, RECORD_KEYS, SIZE_ADJUST, styleRecordItem, styleDrawItem, } from './constants';
20
+ import { ATTACH_KEYS } from '@antscorp/antsomi-ui/es/components/organism/Help/constants';
21
+ // Hooks
22
+ import { useImageEditor } from './hooks/useImageEditor';
23
+ // Utils
24
+ import { generateUniqueId, initDefaultColors } from './utils';
25
+ import { ArrowGrowIcon, AudioRecordIcon, CheckSlimIcon, CommentIcon, FreeDrawIcon, HighlightIcon, InvisibleIcon, MuteIcon, PauseIcon, StopRecordIcon, } from '@antscorp/antsomi-ui/es/components/icons';
26
+ const CaptureScreen = (props) => {
27
+ var _a, _b, _c;
28
+ const { captureType, src, defaultPositions, recorderConfigs, callback } = props;
29
+ const [isShowCursor, setIsShowCursor] = useState(false);
30
+ const [drawItemActive, setDrawItemActive] = useState('');
31
+ const [recordingItemActive, setRecordingItemActive] = useState('');
32
+ const [isMouseDowning, setIsMouseDowning] = useState(false);
33
+ const [isRecording, setIsRecording] = useState(false);
34
+ const [drawColors, setDrawColors] = useState(initDefaultColors());
35
+ const [commentInfoList, setCommentInfoList] = useState([]);
36
+ const [seconds, setSeconds] = useState(0);
37
+ const [minutes, setMinutes] = useState(0);
38
+ const [percentage, setPercentage] = useState(0);
39
+ const imageEditorRef = useRef(null);
40
+ const cursorRef = useRef(null);
41
+ const outlineRemoveContainerRef = useRef(null);
42
+ const wrapperRemoveBtnRef = useRef(null);
43
+ const timerIdRef = useRef(null);
44
+ const { editorInstance, canvasEditor, methods } = useImageEditor(imageEditorRef, {
45
+ preventCreateInstance: captureType !== ATTACH_KEYS.CAPTURE,
46
+ });
47
+ const { activateShapeMode, getSettings } = methods;
48
+ const handleMouseMove = useCallback(event => {
49
+ var _a;
50
+ event.preventDefault();
51
+ event.stopPropagation();
52
+ const positionX = event === null || event === void 0 ? void 0 : event.clientX;
53
+ const positionY = event === null || event === void 0 ? void 0 : event.clientY;
54
+ if (!isEmpty(cursorRef.current)) {
55
+ const cursorRefTemp = cursorRef.current;
56
+ cursorRefTemp.style.left = `${positionX}px`;
57
+ cursorRefTemp.style.top = `${positionY}px`;
58
+ (_a = imageEditorRef.current) === null || _a === void 0 ? void 0 : _a.classList.add('hide-cursor');
59
+ }
60
+ }, []);
61
+ useEffect(() => {
62
+ let canvasUpper;
63
+ if (!isEmpty(editorInstance) && captureType === ATTACH_KEYS.CAPTURE) {
64
+ canvasUpper = document.querySelector('.tui-image-editor-canvas-container .upper-canvas');
65
+ if (canvasUpper &&
66
+ [DRAW_KEYS.PEN, DRAW_KEYS.COMMENT, DRAW_KEYS.HIGHLIGHT].includes(drawItemActive)) {
67
+ canvasUpper.addEventListener('mousemove', handleMouseMove);
68
+ }
69
+ }
70
+ return () => {
71
+ if (canvasUpper) {
72
+ canvasUpper.removeEventListener('mousemove', handleMouseMove);
73
+ }
74
+ };
75
+ }, [editorInstance, captureType, drawItemActive, handleMouseMove]);
76
+ useEffect(() => {
77
+ let timerId;
78
+ if (isEmpty(drawItemActive) && isMouseDowning && captureType === ATTACH_KEYS.CAPTURE) {
79
+ timerId = setTimeout(() => {
80
+ setIsMouseDowning(false);
81
+ }, 300);
82
+ }
83
+ return () => {
84
+ clearTimeout(timerId);
85
+ };
86
+ }, [drawItemActive, isMouseDowning, captureType]);
87
+ useEffect(() => {
88
+ if (captureType === ATTACH_KEYS.CAPTURE) {
89
+ const canvasContainer = document.querySelector('.tui-image-editor-canvas-container');
90
+ const handleAddComment = event => {
91
+ try {
92
+ event.stopPropagation();
93
+ const canvasUpper = canvasContainer.querySelector('.upper-canvas');
94
+ if (!canvasUpper)
95
+ return;
96
+ const pointerPosX = event.clientX;
97
+ const pointerPosY = event.clientY;
98
+ const clientX = canvasUpper.clientWidth;
99
+ const clientY = canvasUpper.clientHeight;
100
+ let isReverseAxisX = false;
101
+ let isReverseAxisY = false;
102
+ if (clientX - pointerPosX < COMMENT_BOX_DIMENSION_FIXED.width) {
103
+ isReverseAxisX = true;
104
+ }
105
+ if (clientY - pointerPosY < COMMENT_BOX_DIMENSION_FIXED.height) {
106
+ isReverseAxisY = true;
107
+ }
108
+ if (imageEditorRef &&
109
+ imageEditorRef.current &&
110
+ imageEditorRef.current.classList.contains('hide-cursor')) {
111
+ setIsShowCursor(false);
112
+ imageEditorRef.current.classList.remove('hide-cursor');
113
+ canvasUpper.removeEventListener('mousemove', handleMouseMove);
114
+ }
115
+ setCommentInfoList(prevCommentList => {
116
+ if (prevCommentList.length > 0 &&
117
+ !prevCommentList[prevCommentList.length - 1].isSubmitted)
118
+ return prevCommentList;
119
+ const randomId = generateUniqueId();
120
+ // Căn giữa CommentPoint Component theo cursor click
121
+ const left = pointerPosX - OFFSET_CENTER;
122
+ const top = pointerPosY - OFFSET_CENTER;
123
+ const temp = [...prevCommentList];
124
+ let newLatestCommentIndex = 1;
125
+ if (temp.length > 0) {
126
+ newLatestCommentIndex = temp[temp.length - 1].index + 1;
127
+ }
128
+ temp.push({
129
+ left,
130
+ top,
131
+ content: '',
132
+ id: randomId,
133
+ color: drawColors[DRAW_KEYS.COMMENT],
134
+ index: newLatestCommentIndex,
135
+ isSubmitted: false,
136
+ isReverseAxisX,
137
+ isReverseAxisY,
138
+ });
139
+ return temp;
140
+ });
141
+ }
142
+ catch (error) {
143
+ // eslint-disable-next-line no-console
144
+ console.log('error :>', error);
145
+ }
146
+ };
147
+ try {
148
+ if (canvasContainer && drawItemActive === DRAW_KEYS.COMMENT) {
149
+ canvasContainer.addEventListener('mousedown', handleAddComment);
150
+ }
151
+ }
152
+ catch (error) {
153
+ // eslint-disable-next-line no-console
154
+ console.log('error :>', error);
155
+ }
156
+ return () => {
157
+ canvasContainer.removeEventListener('mousedown', handleAddComment);
158
+ };
159
+ }
160
+ }, [drawItemActive, drawColors, captureType, handleMouseMove]);
161
+ useEffect(() => {
162
+ let handleMouseUp;
163
+ let canvasUpper;
164
+ if (!isEmpty(editorInstance) && captureType === ATTACH_KEYS.CAPTURE) {
165
+ canvasUpper = document.querySelector('.tui-image-editor-canvas-container .upper-canvas');
166
+ if (canvasUpper) {
167
+ handleMouseUp = () => {
168
+ setIsMouseDowning(false);
169
+ if ([DRAW_KEYS.PEN, DRAW_KEYS.HIGHLIGHT].includes(drawItemActive)) {
170
+ canvasUpper.addEventListener('mousemove', handleMouseMove);
171
+ }
172
+ };
173
+ canvasUpper.addEventListener('mouseup', handleMouseUp);
174
+ }
175
+ // reset lại draw type đang active và đưa draw về mode NORMAL sau khi add 1 object
176
+ editorInstance === null || editorInstance === void 0 ? void 0 : editorInstance.on('objectAdded', _data => {
177
+ setIsMouseDowning(false);
178
+ });
179
+ }
180
+ return () => {
181
+ if (canvasUpper && handleMouseUp) {
182
+ canvasUpper.removeEventListener('mouseup', handleMouseUp);
183
+ }
184
+ };
185
+ }, [editorInstance, captureType, drawItemActive, handleMouseMove]);
186
+ const handleClickDrawItem = useCallback((item, stroke) => {
187
+ try {
188
+ // Không được chuyển type draw khi chưa submit comment
189
+ if (commentInfoList.length > 0 && !commentInfoList[commentInfoList.length - 1].isSubmitted)
190
+ return;
191
+ const { key } = item;
192
+ if (!key)
193
+ return;
194
+ if (drawItemActive !== key) {
195
+ setDrawItemActive(key);
196
+ }
197
+ if (isEmpty(editorInstance))
198
+ return;
199
+ const color = stroke || drawColors[key];
200
+ const settings = getSettings(key, color);
201
+ switch (key) {
202
+ case DRAW_KEYS.CANCEL: {
203
+ callback('CLOSE_DRAWER');
204
+ break;
205
+ }
206
+ case DRAW_KEYS.HIGHLIGHT:
207
+ case DRAW_KEYS.HIDE: {
208
+ if (key === DRAW_KEYS.HIGHLIGHT) {
209
+ setIsShowCursor(true);
210
+ }
211
+ if (imageEditorRef &&
212
+ imageEditorRef.current &&
213
+ imageEditorRef.current.classList.contains('hide-cursor') &&
214
+ key === DRAW_KEYS.HIDE) {
215
+ imageEditorRef.current.classList.remove('hide-cursor');
216
+ }
217
+ const shapeType = [DRAW_KEYS.HIGHLIGHT, DRAW_KEYS.HIDE].includes(key)
218
+ ? 'rect'
219
+ : 'circle';
220
+ editorInstance.setDrawingShape(shapeType, settings);
221
+ activateShapeMode();
222
+ break;
223
+ }
224
+ case DRAW_KEYS.PEN: {
225
+ setIsShowCursor(true);
226
+ editorInstance.stopDrawingMode();
227
+ editorInstance.changeCursor('none');
228
+ editorInstance.startDrawingMode('FREE_DRAWING', settings);
229
+ break;
230
+ }
231
+ case DRAW_KEYS.ARROW: {
232
+ setIsShowCursor(false);
233
+ if (imageEditorRef &&
234
+ imageEditorRef.current &&
235
+ imageEditorRef.current.classList.contains('hide-cursor')) {
236
+ imageEditorRef.current.classList.remove('hide-cursor');
237
+ }
238
+ editorInstance.stopDrawingMode();
239
+ editorInstance.startDrawingMode('LINE_DRAWING', settings);
240
+ break;
241
+ }
242
+ case DRAW_KEYS.DONE: {
243
+ setIsShowCursor(false);
244
+ if (imageEditorRef &&
245
+ imageEditorRef.current &&
246
+ imageEditorRef.current.classList.contains('hide-cursor')) {
247
+ imageEditorRef.current.classList.remove('hide-cursor');
248
+ }
249
+ editorInstance.deactivateAll();
250
+ editorInstance.stopDrawingMode();
251
+ setDrawItemActive('');
252
+ toPng(imageEditorRef.current, {
253
+ filter: (element) => ![
254
+ IGNORE_DRAW_ID_LIST.DRAW_ACTIONS,
255
+ IGNORE_DRAW_ID_LIST.ICON_CLOSE,
256
+ IGNORE_DRAW_ID_LIST.BORDER_OVERLAY,
257
+ ].some(id => element.id === id),
258
+ })
259
+ .then(dataURL => {
260
+ const imageName = editorInstance.getImageName();
261
+ if (typeof callback === 'function') {
262
+ callback('ON_DRAWER_DONE', { imageName, dataURL });
263
+ }
264
+ })
265
+ .catch(error => {
266
+ // eslint-disable-next-line no-console
267
+ console.error('oops, something went wrong!', error);
268
+ });
269
+ // html2canvas(imageEditorRef.current as HTMLElement, {
270
+ // allowTaint: false,
271
+ // ignoreElements: (element: Element) => {
272
+ // if (
273
+ // (
274
+ // [IGNORE_DRAW_ID_LIST.DRAW_ACTIONS, IGNORE_DRAW_ID_LIST.ICON_CLOSE] as string[]
275
+ // ).includes(element.id)
276
+ // ) {
277
+ // return true;
278
+ // }
279
+ // return false;
280
+ // },
281
+ // }).then(canvas => {
282
+ // const dataURL = canvas.toDataURL('image/png');
283
+ // console.log('insideee.dev - dataUrl :>', dataURL);
284
+ // const imageName = editorInstance.getImageName();
285
+ // if (typeof callback === 'function') {
286
+ // callback('ON_DRAWER_DONE', { imageName, dataURL });
287
+ // }
288
+ // });
289
+ break;
290
+ }
291
+ case DRAW_KEYS.COMMENT: {
292
+ setIsShowCursor(true);
293
+ editorInstance.stopDrawingMode();
294
+ editorInstance.changeCursor('cell');
295
+ break;
296
+ }
297
+ default: {
298
+ break;
299
+ }
300
+ }
301
+ }
302
+ catch (error) {
303
+ // eslint-disable-next-line no-console
304
+ console.log('error :>', error);
305
+ }
306
+ }, [
307
+ activateShapeMode,
308
+ callback,
309
+ commentInfoList,
310
+ drawColors,
311
+ drawItemActive,
312
+ editorInstance,
313
+ getSettings,
314
+ ]);
315
+ useEffect(() => {
316
+ try {
317
+ if (!isEmpty(editorInstance) && captureType === ATTACH_KEYS.CAPTURE) {
318
+ editorInstance.on('mousedown', () => {
319
+ const canvasUpper = document.querySelector('.tui-image-editor-canvas-container .upper-canvas');
320
+ if (canvasUpper) {
321
+ canvasUpper.removeEventListener('mousemove', handleMouseMove);
322
+ }
323
+ if (editorInstance.getDrawingMode() !== 'NORMAL') {
324
+ setIsMouseDowning(true);
325
+ }
326
+ });
327
+ }
328
+ }
329
+ catch (err) {
330
+ // eslint-disable-next-line no-console
331
+ console.log(err);
332
+ }
333
+ }, [captureType, editorInstance, handleMouseMove, handleClickDrawItem]);
334
+ useEffect(() => {
335
+ if (captureType === ATTACH_KEYS.CAPTURE &&
336
+ isEmpty(drawItemActive) &&
337
+ !isEmpty(editorInstance)) {
338
+ handleClickDrawItem(DRAW_ACTION_LIST[0]);
339
+ }
340
+ // eslint-disable-next-line react-hooks/exhaustive-deps
341
+ }, [editorInstance]);
342
+ const handleSetColorByKey = (e, drawItem, itemColor) => {
343
+ e.stopPropagation();
344
+ // Không được chuyển type draw khi chưa submit comment
345
+ if (commentInfoList.length > 0 && !commentInfoList[commentInfoList.length - 1].isSubmitted)
346
+ return;
347
+ const { key } = drawItem;
348
+ setDrawColors(Object.assign(Object.assign({}, drawColors), { [key]: itemColor }));
349
+ if (isEmpty(editorInstance))
350
+ return;
351
+ handleClickDrawItem(drawItem, itemColor);
352
+ };
353
+ const handleChangeComment = (type, dataIn) => {
354
+ const commentIndex = commentInfoList.findIndex(item => item.id === dataIn.id);
355
+ if (commentIndex === -1)
356
+ return;
357
+ const tempCommentList = [...commentInfoList];
358
+ if (type === 'CHANGE_CONTENT') {
359
+ tempCommentList.splice(commentIndex, 1, dataIn);
360
+ }
361
+ else if (type === 'SUBMIT') {
362
+ const temp = Object.assign(Object.assign({}, dataIn), { isSubmitted: true });
363
+ tempCommentList.splice(commentIndex, 1, temp);
364
+ }
365
+ else if (type === 'CANCEL') {
366
+ tempCommentList.splice(commentIndex, 1);
367
+ }
368
+ setCommentInfoList(tempCommentList);
369
+ if (['SUBMIT', 'CANCEL'].includes(type) && imageEditorRef && imageEditorRef.current) {
370
+ const canvasUpper = document.querySelector('.tui-image-editor-canvas-container .upper-canvas');
371
+ if (canvasUpper &&
372
+ [DRAW_KEYS.COMMENT, DRAW_KEYS.HIGHLIGHT, DRAW_KEYS.PEN].includes(drawItemActive)) {
373
+ canvasUpper.addEventListener('mousemove', handleMouseMove);
374
+ imageEditorRef.current.classList.add('hide-cursor');
375
+ setIsShowCursor(true);
376
+ }
377
+ }
378
+ };
379
+ useEffect(() => {
380
+ if (!isEmpty(recorderConfigs) && recorderConfigs.recorder) {
381
+ recorderConfigs.recorder.onerror = (event) => {
382
+ // eslint-disable-next-line no-console
383
+ console.error('MediaRecorder error:', event.error);
384
+ setIsRecording(false);
385
+ };
386
+ }
387
+ // eslint-disable-next-line react-hooks/exhaustive-deps
388
+ }, [recorderConfigs.recorder]);
389
+ useEffect(() => () => {
390
+ if (typeof callback === 'function') {
391
+ callback('RESET_POSITION_DRAG');
392
+ }
393
+ if (timerIdRef && timerIdRef.current) {
394
+ clearTimeout(timerIdRef.current);
395
+ }
396
+ },
397
+ // eslint-disable-next-line react-hooks/exhaustive-deps
398
+ []);
399
+ const handleActionRecorderByType = useCallback((type) => {
400
+ var _a, _b;
401
+ try {
402
+ if (isEmpty(recorderConfigs) ||
403
+ !recorderConfigs.recorder ||
404
+ !recorderConfigs.streamTracks ||
405
+ !((_a = recorderConfigs.streamTracks) === null || _a === void 0 ? void 0 : _a.desktopStream) ||
406
+ !((_b = recorderConfigs.streamTracks) === null || _b === void 0 ? void 0 : _b.voiceStream))
407
+ return;
408
+ switch (type) {
409
+ case RECORD_KEYS.START: {
410
+ const recordActionEle = document.getElementById(IGNORE_DRAW_ID_LIST.DRAW_ACTIONS);
411
+ if (recordActionEle && (defaultPositions === null || defaultPositions === void 0 ? void 0 : defaultPositions.record)) {
412
+ timerIdRef.current = setTimeout(() => {
413
+ recordActionEle.style.transform = `translate(${defaultPositions === null || defaultPositions === void 0 ? void 0 : defaultPositions.record.x}px, ${defaultPositions === null || defaultPositions === void 0 ? void 0 : defaultPositions.record.y}px)`;
414
+ }, 10);
415
+ }
416
+ recorderConfigs.recorder.start();
417
+ setRecordingItemActive(type);
418
+ setIsRecording(true);
419
+ break;
420
+ }
421
+ case RECORD_KEYS.STOP: {
422
+ if (['paused', 'recording'].includes(recorderConfigs.recorder.state)) {
423
+ recorderConfigs.recorder.stop();
424
+ setIsRecording(false);
425
+ }
426
+ const { desktopStream, voiceStream } = recorderConfigs.streamTracks;
427
+ desktopStream.getTracks().forEach(track => track.stop());
428
+ voiceStream.getTracks().forEach(track => track.stop());
429
+ if (typeof callback === 'function') {
430
+ callback('STOP_RECORDER', recorderConfigs);
431
+ }
432
+ setRecordingItemActive(type);
433
+ break;
434
+ }
435
+ case RECORD_KEYS.PAUSE: {
436
+ if (recorderConfigs.recorder.state === 'paused') {
437
+ recorderConfigs.recorder.resume();
438
+ }
439
+ else {
440
+ recorderConfigs.recorder.pause();
441
+ }
442
+ setRecordingItemActive(prev => (prev === RECORD_KEYS.PAUSE ? '' : type));
443
+ break;
444
+ }
445
+ // case RECORD_KEYS.RESUME: {
446
+ // setRecordingItemActive(type);
447
+ // recorderConfigs.recorder.resume();
448
+ // break;
449
+ // }
450
+ case RECORD_KEYS.MUTED:
451
+ case RECORD_KEYS.UNMUTE: {
452
+ const { isMute, streamTracks } = recorderConfigs;
453
+ const { voiceStream } = streamTracks;
454
+ const audioTracks = voiceStream.getAudioTracks();
455
+ audioTracks.forEach(track => {
456
+ track.enabled = isMute;
457
+ });
458
+ setRecordingItemActive(type);
459
+ callback('ON_CHANGE_MUTE');
460
+ break;
461
+ }
462
+ default: {
463
+ break;
464
+ }
465
+ }
466
+ }
467
+ catch (error) {
468
+ // eslint-disable-next-line no-console
469
+ console.log('error :>', error);
470
+ }
471
+ }, [callback, isRecording, recorderConfigs]);
472
+ useEffect(() => {
473
+ let intervalId;
474
+ const totalDuration = 2 * 60;
475
+ if (isRecording) {
476
+ intervalId = setInterval(() => {
477
+ var _a;
478
+ if (((_a = recorderConfigs.recorder) === null || _a === void 0 ? void 0 : _a.state) === 'recording') {
479
+ setSeconds(prevSeconds => (prevSeconds === 59 ? 0 : prevSeconds + 1));
480
+ if (seconds === 59) {
481
+ setMinutes(prevMinutes => prevMinutes + 1);
482
+ }
483
+ const currentSeconds = minutes * 60 + seconds;
484
+ const progressPercentage = (currentSeconds / totalDuration) * 100;
485
+ setPercentage(Number(progressPercentage.toFixed(2)));
486
+ if (minutes === 2 && seconds === 0) {
487
+ clearInterval(intervalId);
488
+ handleActionRecorderByType(RECORD_KEYS.STOP);
489
+ }
490
+ }
491
+ }, 1000);
492
+ }
493
+ return () => {
494
+ if (intervalId) {
495
+ clearInterval(intervalId);
496
+ }
497
+ };
498
+ }, [
499
+ handleActionRecorderByType,
500
+ isRecording,
501
+ minutes,
502
+ (_a = recorderConfigs.recorder) === null || _a === void 0 ? void 0 : _a.state,
503
+ seconds,
504
+ percentage,
505
+ ]);
506
+ useEffect(() => {
507
+ let ignoreHoveringList;
508
+ let handleMouseEnterDrawActions;
509
+ let handleMouseOutDrawActions;
510
+ if (!isMouseDowning &&
511
+ captureType === ATTACH_KEYS.CAPTURE &&
512
+ [DRAW_KEYS.PEN, DRAW_KEYS.COMMENT, DRAW_KEYS.HIGHLIGHT].includes(drawItemActive)) {
513
+ ignoreHoveringList = document.querySelectorAll(`.${IGNORE_DRAW_ID_LIST.CLASS_PREVENT_HOVER}`);
514
+ if (ignoreHoveringList.length > 0) {
515
+ handleMouseEnterDrawActions = event => {
516
+ event.stopPropagation();
517
+ if ((drawItemActive === DRAW_KEYS.COMMENT && commentInfoList.length === 0) ||
518
+ (drawItemActive === DRAW_KEYS.COMMENT &&
519
+ commentInfoList.length > 0 &&
520
+ commentInfoList[commentInfoList.length - 1].isSubmitted) ||
521
+ [DRAW_KEYS.PEN, DRAW_KEYS.HIGHLIGHT].includes(drawItemActive)) {
522
+ setIsShowCursor(false);
523
+ }
524
+ };
525
+ handleMouseOutDrawActions = event => {
526
+ event.stopPropagation();
527
+ if ((drawItemActive === DRAW_KEYS.COMMENT && commentInfoList.length === 0) ||
528
+ (drawItemActive === DRAW_KEYS.COMMENT &&
529
+ commentInfoList.length > 0 &&
530
+ commentInfoList[commentInfoList.length - 1].isSubmitted) ||
531
+ [DRAW_KEYS.PEN, DRAW_KEYS.HIGHLIGHT].includes(drawItemActive)) {
532
+ setIsShowCursor(true);
533
+ }
534
+ };
535
+ ignoreHoveringList.forEach(ignoreItem => {
536
+ ignoreItem.addEventListener('mouseenter', handleMouseEnterDrawActions);
537
+ ignoreItem.addEventListener('mouseleave', handleMouseOutDrawActions);
538
+ });
539
+ }
540
+ }
541
+ return () => {
542
+ if (!isEmpty(ignoreHoveringList)) {
543
+ ignoreHoveringList.forEach(ignoreItem => {
544
+ ignoreItem.removeEventListener('mouseenter', handleMouseEnterDrawActions);
545
+ ignoreItem.removeEventListener('mouseleave', handleMouseOutDrawActions);
546
+ });
547
+ }
548
+ };
549
+ }, [captureType, commentInfoList, drawItemActive, isMouseDowning]);
550
+ const setPositionOutlineRemoveContainer = useCallback(obj => {
551
+ const outlineRemoveContainer = outlineRemoveContainerRef.current || null;
552
+ const removeBtn = wrapperRemoveBtnRef.current || null;
553
+ const absCoords = {
554
+ left: obj.left,
555
+ top: obj.top,
556
+ };
557
+ const objWidth = obj.width * (obj.scaleX || 1);
558
+ const objHeight = obj.height * (obj.scaleY || 1);
559
+ if (outlineRemoveContainer) {
560
+ outlineRemoveContainer.style.width = `${SIZE_ADJUST * objWidth + obj.strokeWidth}px`;
561
+ outlineRemoveContainer.style.height = `${SIZE_ADJUST * objHeight + obj.strokeWidth}px`;
562
+ outlineRemoveContainer.style.left = `${absCoords.left}px`;
563
+ outlineRemoveContainer.style.top = `${absCoords.top}px`;
564
+ }
565
+ if (removeBtn) {
566
+ removeBtn.style.left = `${absCoords.left + objWidth / 2}px`;
567
+ removeBtn.style.top = `${absCoords.top - objHeight / 2}px`;
568
+ }
569
+ }, []);
570
+ // Handle Hover and remove object in canvas
571
+ useEffect(() => {
572
+ let handleDelete;
573
+ let handleRemoveBtnMouseEnter;
574
+ let handleRemoveBtnMouseLeave;
575
+ let currentObjectDrew = null;
576
+ let activeObject = null;
577
+ let isMouseDown = false;
578
+ const btnRemove = wrapperRemoveBtnRef.current || null;
579
+ const outlineRemoveContainer = outlineRemoveContainerRef.current || null;
580
+ if (captureType === ATTACH_KEYS.CAPTURE && canvasEditor) {
581
+ handleDelete = () => {
582
+ // eslint-disable-next-line @typescript-eslint/no-unused-expressions
583
+ currentObjectDrew && canvasEditor.remove(currentObjectDrew);
584
+ if (btnRemove && outlineRemoveContainer) {
585
+ btnRemove.style.display = 'none';
586
+ outlineRemoveContainer.style.display = 'none';
587
+ }
588
+ };
589
+ handleRemoveBtnMouseEnter = () => {
590
+ if (!currentObjectDrew)
591
+ return;
592
+ if (btnRemove && !isMouseDown) {
593
+ btnRemove.style.display = 'flex';
594
+ }
595
+ setPositionOutlineRemoveContainer(currentObjectDrew);
596
+ if (outlineRemoveContainer && !isMouseDown) {
597
+ outlineRemoveContainer.style.border = '2px dashed #707070';
598
+ outlineRemoveContainer.style.display = 'block';
599
+ }
600
+ canvasEditor.renderAll();
601
+ };
602
+ handleRemoveBtnMouseLeave = () => {
603
+ if (!currentObjectDrew)
604
+ return;
605
+ if (btnRemove && outlineRemoveContainer) {
606
+ btnRemove.style.display = 'none';
607
+ outlineRemoveContainer.style.border = 'none';
608
+ }
609
+ };
610
+ if (btnRemove) {
611
+ btnRemove.addEventListener('click', handleDelete);
612
+ btnRemove.addEventListener('mouseenter', handleRemoveBtnMouseEnter);
613
+ btnRemove.addEventListener('mouseleave', handleRemoveBtnMouseLeave);
614
+ }
615
+ canvasEditor.on('mouse:over', event => {
616
+ if (!event.target || activeObject === event.target)
617
+ return;
618
+ const currentObj = event.target;
619
+ currentObjectDrew = currentObj;
620
+ setPositionOutlineRemoveContainer(currentObj);
621
+ if (!isMouseDown) {
622
+ if (btnRemove) {
623
+ btnRemove.style.display = 'flex';
624
+ }
625
+ if (outlineRemoveContainer) {
626
+ outlineRemoveContainer.style.border = '2px dashed #707070';
627
+ outlineRemoveContainer.style.display = 'block';
628
+ }
629
+ }
630
+ canvasEditor.renderAll();
631
+ });
632
+ canvasEditor.on('mouse:down', () => {
633
+ isMouseDown = true;
634
+ // eslint-disable-next-line no-underscore-dangle
635
+ activeObject = canvasEditor._activeObject;
636
+ if (btnRemove && outlineRemoveContainer && activeObject) {
637
+ btnRemove.style.display = 'none';
638
+ outlineRemoveContainer.style.border = 'none';
639
+ }
640
+ });
641
+ canvasEditor.on('mouse:up', () => {
642
+ isMouseDown = false;
643
+ });
644
+ canvasEditor.on('mouse:out', e => {
645
+ if (!e.target)
646
+ return;
647
+ if (btnRemove && outlineRemoveContainer) {
648
+ btnRemove.style.display = 'none';
649
+ outlineRemoveContainer.style.border = 'none';
650
+ }
651
+ });
652
+ canvasEditor.on('object:moving', () => {
653
+ if (btnRemove && outlineRemoveContainer) {
654
+ btnRemove.style.display = 'none';
655
+ outlineRemoveContainer.style.border = 'none';
656
+ }
657
+ });
658
+ }
659
+ return () => {
660
+ if (btnRemove) {
661
+ // eslint-disable-next-line @typescript-eslint/no-unused-expressions
662
+ handleDelete && btnRemove.removeEventListener('click', handleDelete);
663
+ // eslint-disable-next-line @typescript-eslint/no-unused-expressions
664
+ handleRemoveBtnMouseEnter &&
665
+ btnRemove.removeEventListener('mouseenter', handleRemoveBtnMouseEnter);
666
+ // eslint-disable-next-line @typescript-eslint/no-unused-expressions
667
+ handleRemoveBtnMouseLeave &&
668
+ btnRemove.removeEventListener('mouseleave', handleRemoveBtnMouseLeave);
669
+ }
670
+ };
671
+ }, [captureType, canvasEditor, setPositionOutlineRemoveContainer]);
672
+ useEffect(() => {
673
+ if (captureType === ATTACH_KEYS.RECORD && isRecording) {
674
+ const drawActions = document.getElementById(IGNORE_DRAW_ID_LIST.DRAW_ACTIONS);
675
+ if (drawActions) {
676
+ drawActions.style.transform = 'translate(169px, 0px)';
677
+ }
678
+ }
679
+ }, [isRecording, captureType]);
680
+ const numberCommentCursor = useMemo(() => {
681
+ if (drawItemActive === DRAW_KEYS.COMMENT) {
682
+ if (!commentInfoList[commentInfoList.length - 1])
683
+ return 1;
684
+ return commentInfoList[commentInfoList.length - 1].index + 1;
685
+ }
686
+ return null;
687
+ }, [commentInfoList, drawItemActive]);
688
+ const renderIcon = (name, style) => ({
689
+ 'icon-ants-highlight': React.createElement(HighlightIcon, { style: style }),
690
+ 'icon-ants-comment': React.createElement(CommentIcon, { style: style }),
691
+ 'icon-ants-free-draw': React.createElement(FreeDrawIcon, { style: style }),
692
+ 'icon-ants-arrow-grow': React.createElement(ArrowGrowIcon, { style: style }),
693
+ 'icon-ants-invisible': React.createElement(InvisibleIcon, { style: style }),
694
+ 'icon-ants-check-slim': React.createElement(CheckSlimIcon, { style: style }),
695
+ 'icon-ants-audio-record': React.createElement(AudioRecordIcon, { style: style }),
696
+ 'icon-ants-mute': React.createElement(MuteIcon, { style: style }),
697
+ 'icon-ants-pause': React.createElement(PauseIcon, { style: style }),
698
+ 'icon-ants-stop-record': React.createElement(StopRecordIcon, { style: style }),
699
+ }[name]);
700
+ const renderDrawActionList = () => DRAW_ACTION_LIST.map(drawItem => {
701
+ var _a, _b, _c, _d;
702
+ if ((drawItem === null || drawItem === void 0 ? void 0 : drawItem.type) === 'divider') {
703
+ return React.createElement(Divider, { isVertical: true, key: drawItem.key, style: { width: styleDrawItem.SMALL } });
704
+ }
705
+ return (React.createElement(DrawerGroupItem, { key: drawItem.key, className: clsx({
706
+ active: drawItemActive === drawItem.key,
707
+ 'hide-hover': [DRAW_KEYS.DONE, DRAW_KEYS.CANCEL].includes(drawItem.key),
708
+ }), style: {
709
+ height: styleDrawItem.SMALL,
710
+ marginLeft: [DRAW_KEYS.HIGHLIGHT, DRAW_KEYS.DONE].includes(drawItem.key)
711
+ ? '15px'
712
+ : '8px',
713
+ marginRight: drawItem.key === DRAW_KEYS.HIDE ? '15px' : '8px',
714
+ width: ![DRAW_KEYS.DONE, DRAW_KEYS.CANCEL].includes(drawItem.key)
715
+ ? styleDrawItem.MEDIUM
716
+ : 'auto',
717
+ }, onClick: () => handleClickDrawItem(drawItem) },
718
+ React.createElement(FlexColumn, null, [DRAW_KEYS.DONE, DRAW_KEYS.CANCEL].includes(drawItem.key) ? (React.createElement(Button, { type: drawItem.key === DRAW_KEYS.DONE ? 'primary' : 'default', style: { fontWeight: 'bold', flexDirection: 'row-reverse' }, icon: drawItem.key === DRAW_KEYS.DONE
719
+ ? renderIcon('icon-ants-check-slim', {
720
+ fontSize: '24px',
721
+ color: `${(_a = THEME.token) === null || _a === void 0 ? void 0 : _a.bw0}`,
722
+ })
723
+ : undefined }, drawItem.label)) : (renderIcon(drawItem.icon, {
724
+ maxWidth: '24px',
725
+ fill: `${drawItemActive === drawItem.key
726
+ ? (_b = THEME.token) === null || _b === void 0 ? void 0 : _b.colorPrimary
727
+ : (_c = THEME.token) === null || _c === void 0 ? void 0 : _c.colorIcon}`,
728
+ }))),
729
+ drawItem.isShowColorList && (React.createElement(PopupBySide, { className: "toggle-popup-by-side" },
730
+ React.createElement(Heading, null, drawItem.label),
731
+ React.createElement(WrapperColor, null, (_d = drawItem.colorList) === null || _d === void 0 ? void 0 : _d.map(itemColor => {
732
+ var _a;
733
+ return (React.createElement(BoxColor, { key: `${drawItem.key}-${itemColor}`, bgColor: itemColor, onClick: e => handleSetColorByKey(e, drawItem, itemColor) }, drawColors[drawItem.key] === itemColor && (
734
+ // <Icon
735
+ // type="icon-ants-check-slim"
736
+ // style={{ color: `${THEME.token?.bw0}`, fontSize: '20px' }}
737
+ // />
738
+ React.createElement(CheckSlimIcon, { style: {
739
+ fill: `${(_a = THEME.token) === null || _a === void 0 ? void 0 : _a.bw0}`,
740
+ maxWidth: '20px',
741
+ } }))));
742
+ }))))));
743
+ });
744
+ const renderRecordActionList = () => {
745
+ var _a, _b, _c, _d;
746
+ return (React.createElement(React.Fragment, null,
747
+ React.createElement(WrapperDraggable, { className: "cursor", style: { height: '100%' } },
748
+ React.createElement(FlexColumn, null,
749
+ React.createElement(Icon, { type: "icon-ants-double-three-dots", style: { fontSize: '24px', color: 'rgba(89, 89, 89, 0.5)' } }))),
750
+ React.createElement(Divider, { isVertical: true }),
751
+ !isRecording ? (React.createElement(DrawerGroupItem, { style: styleRecordItem, className: clsx({ active: recordingItemActive === RECORD_KEYS.STOP }), onClick: () => handleActionRecorderByType(RECORD_KEYS.START) },
752
+ React.createElement(FlexColumn, null,
753
+ React.createElement(ImageIcon, { src: "https://st-media-template.antsomi.com/upload/2023/06/16/440878f6-0cc1-465e-b978-44bd4f348199.png", alt: "start-recording-icon" })))) : (React.createElement(React.Fragment, null,
754
+ React.createElement(DrawerGroupItem, { className: clsx({
755
+ active: recordingItemActive === RECORD_KEYS.STOP,
756
+ }), style: styleRecordItem, onClick: () => handleActionRecorderByType(RECORD_KEYS.STOP) },
757
+ React.createElement(FlexColumn, null, renderIcon('icon-ants-stop-record', {
758
+ maxWidth: '24px',
759
+ fill: `${(_a = THEME.token) === null || _a === void 0 ? void 0 : _a.red8}`,
760
+ }))),
761
+ React.createElement(DrawerGroupItem
762
+ // key={recordItem.key}
763
+ , {
764
+ // key={recordItem.key}
765
+ className: clsx({
766
+ active: recordingItemActive === RECORD_KEYS.PAUSE,
767
+ }), style: styleRecordItem, onClick: () => handleActionRecorderByType(RECORD_KEYS.PAUSE) },
768
+ React.createElement(FlexColumn, null, recordingItemActive === RECORD_KEYS.PAUSE ? (React.createElement(ImageIcon, { src: "https://st-media-template.antsomi.com/upload/2023/06/16/440878f6-0cc1-465e-b978-44bd4f348199.png", alt: "start-recording-icon", style: { width: 22, height: 22 } })) : (renderIcon('icon-ants-pause', {
769
+ maxWidth: '24px',
770
+ fill: `${(_b = THEME.token) === null || _b === void 0 ? void 0 : _b.colorIcon}`,
771
+ })))))),
772
+ recorderConfigs && recorderConfigs.isMute ? (React.createElement(DrawerGroupItem, { className: clsx({
773
+ active: recordingItemActive === RECORD_KEYS.UNMUTE,
774
+ }), style: styleRecordItem, onClick: () => handleActionRecorderByType(RECORD_KEYS.UNMUTE) },
775
+ React.createElement(FlexColumn, null, renderIcon('icon-ants-mute', {
776
+ maxWidth: '24px',
777
+ fill: `${(_c = THEME.token) === null || _c === void 0 ? void 0 : _c.colorIcon}`,
778
+ })))) : (React.createElement(DrawerGroupItem, { className: clsx({
779
+ active: recordingItemActive === RECORD_KEYS.MUTED,
780
+ }), style: styleRecordItem, onClick: () => handleActionRecorderByType(RECORD_KEYS.MUTED) },
781
+ React.createElement(FlexColumn, null, renderIcon('icon-ants-audio-record', {
782
+ maxWidth: '24px',
783
+ fill: `${(_d = THEME.token) === null || _d === void 0 ? void 0 : _d.colorIcon}`,
784
+ })))),
785
+ isRecording && (React.createElement(DrawerGroupItem, { style: Object.assign(Object.assign({}, styleRecordItem), { width: 130 }), className: "timer-recording" },
786
+ React.createElement(FlexCenter, null,
787
+ React.createElement(Progress, { percent: percentage, showInfo: false, style: { width: 100, margin: 0 } }),
788
+ React.createElement(Heading, { style: { whiteSpace: 'nowrap' } }, `${minutes}:${seconds
789
+ .toString()
790
+ .padStart(2, '0')}`))))));
791
+ };
792
+ const renderPopupAction = (type) => {
793
+ if (type === ATTACH_KEYS.RECORD) {
794
+ return (React.createElement(PopupDraggable, { bounds: "body", name: ATTACH_KEYS.RECORD, defaultPosition: defaultPositions === null || defaultPositions === void 0 ? void 0 : defaultPositions.record, isHiddenClose: true, isHiddenResizing: true, id: IGNORE_DRAW_ID_LIST.DRAW_ACTIONS, styleContainer: styleContainer, callback: callback }, renderRecordActionList()));
795
+ }
796
+ return (!isMouseDowning && (React.createElement(PopupDraggable, { defaultPosition: defaultPositions === null || defaultPositions === void 0 ? void 0 : defaultPositions.capture, bounds: "body", name: ATTACH_KEYS.CAPTURE, isHiddenClose: true, isHiddenResizing: true, id: IGNORE_DRAW_ID_LIST.DRAW_ACTIONS, styleContainer: Object.assign(Object.assign({}, styleContainer), { height: styleDrawItem.LARGE, minHeight: styleDrawItem.LARGE, padding: '0px 5px' }), callback: callback },
797
+ React.createElement(DrawerGroups, { id: IGNORE_DRAW_ID_LIST.DRAW_ACTIONS, className: IGNORE_DRAW_ID_LIST.CLASS_PREVENT_HOVER, style: { height: styleDrawItem.LARGE } },
798
+ React.createElement(WrapperDraggable, { className: "cursor", style: {
799
+ height: styleDrawItem.SMALL,
800
+ width: styleDrawItem.MEDIUM,
801
+ marginRight: 6,
802
+ padding: 'unset',
803
+ } },
804
+ React.createElement(FlexColumn, null,
805
+ React.createElement(Icon, { type: "icon-ants-double-three-dots", style: { fontSize: '24px', color: 'rgba(89, 89, 89, 0.5' } }))),
806
+ React.createElement(Divider, { isVertical: true, style: { width: styleDrawItem.SMALL } }),
807
+ renderDrawActionList()))));
808
+ };
809
+ const renderCommentList = (commentList) => commentList.map(commentItem => (React.createElement(CommentBox, { key: commentItem.id, className: IGNORE_DRAW_ID_LIST.CLASS_PREVENT_HOVER, boxDimension: COMMENT_BOX_DIMENSION_FIXED, offset: OFFSET_CENTER, info: commentItem, onChangeComment: handleChangeComment })));
810
+ return (React.createElement(ContainerCapture, { imageURL: src, isRecord: captureType === ATTACH_KEYS.RECORD, ref: imageEditorRef },
811
+ React.createElement(Cursor, { drawItemType: drawItemActive, cursorRef: cursorRef, isShowCursor: isShowCursor && !isMouseDowning, isPointerBox: drawItemActive === DRAW_KEYS.COMMENT, bgColor: drawColors[drawItemActive], offset: OFFSET_CENTER }, numberCommentCursor),
812
+ captureType === ATTACH_KEYS.CAPTURE && (React.createElement(React.Fragment, null,
813
+ renderCommentList(commentInfoList),
814
+ React.createElement(BorderOverlay, { id: IGNORE_DRAW_ID_LIST.BORDER_OVERLAY, className: IGNORE_DRAW_ID_LIST.CLASS_PREVENT_HOVER }),
815
+ React.createElement(WrapperIcon, { id: IGNORE_DRAW_ID_LIST.ICON_CLOSE, className: IGNORE_DRAW_ID_LIST.CLASS_PREVENT_HOVER,
816
+ // isRecord={captureType === ATTACH_KEYS.RECORD}
817
+ onClick: () => callback('CLOSE_DRAWER') },
818
+ React.createElement(Icon, { type: "icon-ants-remove-slim", style: { color: `${(_b = THEME.token) === null || _b === void 0 ? void 0 : _b.bw0}`, fontSize: '12px' } })),
819
+ React.createElement(OutlineRemoveContainer, { ref: outlineRemoveContainerRef }),
820
+ React.createElement(WrapperRemoveBtn, { ref: wrapperRemoveBtnRef, className: IGNORE_DRAW_ID_LIST.CLASS_PREVENT_HOVER },
821
+ React.createElement(Icon, { type: "icon-ants-remove-trash", style: { fontSize: '20px', color: `${(_c = THEME.token) === null || _c === void 0 ? void 0 : _c.colorIcon}` } })))),
822
+ renderPopupAction(captureType)));
823
+ };
824
+ CaptureScreen.defaultProps = {
825
+ isOpen: false,
826
+ src: '',
827
+ alt: 'CaptureScreen',
828
+ defaultPositions: {
829
+ capture: null,
830
+ record: null,
831
+ },
832
+ callback: () => { },
833
+ };
834
+ export { CaptureScreen };