@antscorp/antsomi-ui 1.3.3-beta.8 → 1.3.3-beta.81

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 (369) hide show
  1. package/es/assets/images/iphone-top-bar.png +0 -0
  2. package/es/assets/images/iphone.png +0 -0
  3. package/es/assets/images/stars_slider.png +0 -0
  4. package/es/components/atoms/Empty/Empty.d.ts +6 -5
  5. package/es/components/atoms/Empty/Empty.js +7 -1
  6. package/es/components/atoms/Input/Input.d.ts +3 -0
  7. package/es/components/atoms/Input/Input.js +4 -3
  8. package/es/components/atoms/InputDynamic/EditCaretPositioning.d.ts +2 -0
  9. package/es/components/atoms/InputDynamic/EditCaretPositioning.js +89 -0
  10. package/es/components/atoms/InputDynamic/InputDynamic.d.ts +10 -0
  11. package/es/components/atoms/InputDynamic/InputDynamic.js +512 -0
  12. package/es/components/atoms/InputDynamic/PopupShortLink.d.ts +16 -0
  13. package/es/components/atoms/InputDynamic/PopupShortLink.js +85 -0
  14. package/es/components/atoms/InputDynamic/constants.d.ts +71 -0
  15. package/es/components/atoms/InputDynamic/constants.js +71 -0
  16. package/es/components/atoms/InputDynamic/index.d.ts +2 -0
  17. package/es/components/atoms/InputDynamic/index.js +1 -0
  18. package/es/components/atoms/InputDynamic/styled.d.ts +13 -0
  19. package/es/components/atoms/InputDynamic/styled.js +293 -0
  20. package/es/components/atoms/InputDynamic/types.d.ts +115 -0
  21. package/es/components/atoms/InputDynamic/types.js +1 -0
  22. package/es/components/atoms/InputDynamic/utils.d.ts +30 -0
  23. package/es/components/atoms/InputDynamic/utils.js +872 -0
  24. package/es/components/atoms/MobileFrame/MobileFrame.d.ts +4 -0
  25. package/es/components/atoms/MobileFrame/MobileFrame.js +22 -0
  26. package/es/components/atoms/MobileFrame/constants.d.ts +4 -0
  27. package/es/components/atoms/MobileFrame/constants.js +4 -0
  28. package/es/components/atoms/MobileFrame/index.d.ts +2 -0
  29. package/es/components/atoms/MobileFrame/index.js +1 -0
  30. package/es/components/atoms/MobileFrame/styled.d.ts +3 -0
  31. package/es/components/atoms/MobileFrame/styled.js +33 -0
  32. package/es/components/atoms/Pagination/index.d.ts +1 -0
  33. package/es/components/atoms/PreviewTabs/PreviewTabs.d.ts +7 -0
  34. package/es/components/atoms/PreviewTabs/PreviewTabs.js +67 -0
  35. package/es/components/atoms/PreviewTabs/index.d.ts +2 -0
  36. package/es/components/atoms/PreviewTabs/index.js +1 -0
  37. package/es/components/atoms/PreviewTabs/styled.d.ts +6 -0
  38. package/es/components/atoms/PreviewTabs/styled.js +79 -0
  39. package/es/components/atoms/RateV2/RateV2.d.ts +18 -0
  40. package/es/components/atoms/RateV2/RateV2.js +73 -0
  41. package/es/components/atoms/RateV2/index.d.ts +1 -0
  42. package/es/components/atoms/RateV2/index.js +1 -0
  43. package/es/components/atoms/RequiredLabel/index.d.ts +1 -0
  44. package/es/components/atoms/RequiredLabel/index.js +4 -3
  45. package/es/components/atoms/Slider/index.d.ts +2 -1
  46. package/es/components/atoms/Slider/index.js +12 -14
  47. package/es/components/atoms/SliderV2/index.d.ts +6 -0
  48. package/es/components/atoms/SliderV2/index.js +21 -0
  49. package/es/components/atoms/Spin/Spin.d.ts +2 -1
  50. package/es/components/atoms/index.d.ts +7 -0
  51. package/es/components/atoms/index.js +5 -0
  52. package/es/components/common/ConfigProvider/ConfigProvider.js +6 -0
  53. package/es/components/common/ConfigProvider/GlobalStyle.js +251 -30
  54. package/es/components/icons/ArrowGrowIcon.d.ts +2 -1
  55. package/es/components/icons/AudioRecordIcon.d.ts +2 -1
  56. package/es/components/icons/BugIcon.d.ts +2 -1
  57. package/es/components/icons/CameraIcon.d.ts +2 -1
  58. package/es/components/icons/CaptureIcon.d.ts +2 -1
  59. package/es/components/icons/CheckSlimIcon.d.ts +2 -1
  60. package/es/components/icons/CloseIcon.d.ts +2 -1
  61. package/es/components/icons/CommentIcon.d.ts +2 -1
  62. package/es/components/icons/EventIcon.d.ts +2 -1
  63. package/es/components/icons/FreeDrawIcon.d.ts +2 -1
  64. package/es/components/icons/GPTIcon.d.ts +2 -1
  65. package/es/components/icons/GPTIconV2.d.ts +2 -1
  66. package/es/components/icons/GPTIconV3.d.ts +2 -1
  67. package/es/components/icons/HighlightIcon.d.ts +2 -1
  68. package/es/components/icons/IdeaIcon.d.ts +2 -1
  69. package/es/components/icons/InvisibleIcon.d.ts +2 -1
  70. package/es/components/icons/MuteIcon.d.ts +2 -1
  71. package/es/components/icons/OpenUrlIcon.d.ts +2 -1
  72. package/es/components/icons/PauseIcon.d.ts +2 -1
  73. package/es/components/icons/PlaneIcon.d.ts +2 -1
  74. package/es/components/icons/RequestIcon.d.ts +2 -1
  75. package/es/components/icons/StopRecordIcon.d.ts +2 -1
  76. package/es/components/icons/UserIcon.d.ts +2 -1
  77. package/es/components/icons/VerticalDotsIcon.d.ts +2 -1
  78. package/es/components/icons/WarningIcon.d.ts +2 -1
  79. package/es/components/molecules/AddDynamicContent/AddDynamicContent.d.ts +35 -0
  80. package/es/components/molecules/AddDynamicContent/AddDynamicContent.js +1248 -0
  81. package/es/components/molecules/AddDynamicContent/components/DisplayFormat/DisplayFormat.d.ts +12 -0
  82. package/es/components/molecules/AddDynamicContent/components/DisplayFormat/DisplayFormat.js +25 -0
  83. package/es/components/molecules/AddDynamicContent/components/DisplayFormat/index.d.ts +3 -0
  84. package/es/components/molecules/AddDynamicContent/components/DisplayFormat/index.js +3 -0
  85. package/es/components/molecules/AddDynamicContent/components/FormatDatetime/FormatDatetime.d.ts +19 -0
  86. package/es/components/molecules/AddDynamicContent/components/FormatDatetime/FormatDatetime.js +100 -0
  87. package/es/components/molecules/AddDynamicContent/components/FormatDatetime/index.d.ts +1 -0
  88. package/es/components/molecules/AddDynamicContent/components/FormatDatetime/index.js +1 -0
  89. package/es/components/molecules/AddDynamicContent/components/FormatNumber/FormatNumber.d.ts +52 -0
  90. package/es/components/molecules/AddDynamicContent/components/FormatNumber/FormatNumber.js +132 -0
  91. package/es/components/molecules/AddDynamicContent/components/FormatNumber/index.d.ts +1 -0
  92. package/es/components/molecules/AddDynamicContent/components/FormatNumber/index.js +1 -0
  93. package/es/components/molecules/AddDynamicContent/components/index.d.ts +3 -0
  94. package/es/components/molecules/AddDynamicContent/components/index.js +3 -0
  95. package/es/components/molecules/AddDynamicContent/constants.d.ts +101 -0
  96. package/es/components/molecules/AddDynamicContent/constants.js +152 -0
  97. package/es/components/molecules/AddDynamicContent/currencies.json +1523 -0
  98. package/es/components/molecules/AddDynamicContent/index.d.ts +2 -0
  99. package/es/components/molecules/AddDynamicContent/index.js +2 -0
  100. package/es/components/molecules/AddDynamicContent/styled.d.ts +12 -0
  101. package/es/components/molecules/AddDynamicContent/styled.js +30 -0
  102. package/es/components/molecules/AddDynamicContent/types.d.ts +13 -0
  103. package/es/components/molecules/AddDynamicContent/types.js +1 -0
  104. package/es/components/molecules/AddDynamicContent/utils.d.ts +41 -0
  105. package/es/components/molecules/AddDynamicContent/utils.js +396 -0
  106. package/es/components/molecules/CaptureScreen/CaptureScreen.d.ts +2 -1
  107. package/es/components/molecules/CaptureScreen/components/CommentBox/CommentBox.d.ts +2 -1
  108. package/es/components/molecules/CaptureScreen/components/Cursor/Cursor.d.ts +2 -1
  109. package/es/components/molecules/DatePicker/components/AdvancedPicker/AdvancedPicker.d.ts +7 -2
  110. package/es/components/molecules/DatePicker/components/AdvancedPicker/AdvancedPicker.js +200 -204
  111. package/es/components/molecules/DatePicker/components/AdvancedPicker/constants.d.ts +78 -25
  112. package/es/components/molecules/DatePicker/components/AdvancedPicker/constants.js +145 -22
  113. package/es/components/molecules/DatePicker/components/AdvancedPicker/styled.js +49 -5
  114. package/es/components/molecules/DatePicker/components/AdvancedPicker/types.d.ts +22 -0
  115. package/es/components/molecules/DatePicker/components/AdvancedPicker/utils.d.ts +24 -0
  116. package/es/components/molecules/DatePicker/components/AdvancedPicker/utils.js +159 -38
  117. package/es/components/molecules/DatePicker/components/AdvancedRangePicker/AdvancedRangePicker.d.ts +2 -1
  118. package/es/components/molecules/DatePicker/components/AdvancedRangePicker/AdvancedRangePicker.js +21 -9
  119. package/es/components/molecules/DatePicker/components/DropdownLabel/DropdownLabel.d.ts +13 -0
  120. package/es/components/molecules/DatePicker/components/DropdownLabel/DropdownLabel.js +82 -0
  121. package/es/components/molecules/DatePicker/components/ErrorMessage/ErrorMessage.d.ts +6 -0
  122. package/es/components/molecules/DatePicker/components/ErrorMessage/ErrorMessage.js +12 -0
  123. package/es/components/molecules/Drawer/Drawer.d.ts +5 -1
  124. package/es/components/molecules/Drawer/Drawer.js +3 -1
  125. package/es/components/molecules/Drawer/index.d.ts +1 -0
  126. package/es/components/molecules/EditorScript/EditorScript.d.ts +14 -0
  127. package/es/components/molecules/EditorScript/EditorScript.js +89 -0
  128. package/es/components/molecules/EditorScript/index.d.ts +1 -0
  129. package/es/components/molecules/EditorScript/index.js +1 -0
  130. package/es/components/molecules/EditorScript/styled.d.ts +1 -0
  131. package/es/components/molecules/EditorScript/styled.js +3 -0
  132. package/es/components/molecules/FontSetting/index.js +1 -1
  133. package/es/components/molecules/Modal/index.d.ts +1 -0
  134. package/es/components/molecules/Modal/styled.d.ts +1 -1
  135. package/es/components/molecules/Modal/styled.js +2 -0
  136. package/es/components/molecules/ModalV2/ModalV2.d.ts +5 -0
  137. package/es/components/molecules/ModalV2/ModalV2.js +26 -0
  138. package/es/components/molecules/ModalV2/index.d.ts +2 -0
  139. package/es/components/molecules/ModalV2/index.js +1 -0
  140. package/es/components/molecules/ModalV2/styled.d.ts +7 -0
  141. package/es/components/molecules/ModalV2/styled.js +22 -0
  142. package/es/components/molecules/PreviewModal/PreviewModal.d.ts +7 -0
  143. package/es/components/molecules/PreviewModal/PreviewModal.js +30 -0
  144. package/es/components/molecules/PreviewModal/index.d.ts +2 -0
  145. package/es/components/molecules/PreviewModal/index.js +1 -0
  146. package/es/components/molecules/PreviewModal/styled.d.ts +4 -0
  147. package/es/components/molecules/PreviewModal/styled.js +39 -0
  148. package/es/components/molecules/ResizeGrid/ResizeGrid.d.ts +3 -0
  149. package/es/components/molecules/ResizeGrid/ResizeGrid.js +728 -0
  150. package/es/components/molecules/ResizeGrid/components/Cell/Cell.d.ts +3 -0
  151. package/es/components/molecules/ResizeGrid/components/Cell/Cell.js +87 -0
  152. package/es/components/molecules/ResizeGrid/components/Cell/index.d.ts +1 -0
  153. package/es/components/molecules/ResizeGrid/components/Cell/index.js +1 -0
  154. package/es/components/molecules/ResizeGrid/components/Cell/styled.d.ts +3 -0
  155. package/es/components/molecules/ResizeGrid/components/Cell/styled.js +80 -0
  156. package/es/components/molecules/ResizeGrid/constant.d.ts +35 -0
  157. package/es/components/molecules/ResizeGrid/constant.js +111 -0
  158. package/es/components/molecules/ResizeGrid/index.d.ts +2 -0
  159. package/es/components/molecules/ResizeGrid/index.js +1 -0
  160. package/es/components/molecules/ResizeGrid/styled.d.ts +10 -0
  161. package/es/components/molecules/ResizeGrid/styled.js +56 -0
  162. package/es/components/molecules/ResizeGrid/types.d.ts +147 -0
  163. package/es/components/molecules/ResizeGrid/types.js +1 -0
  164. package/es/components/molecules/RichMenu/RichMenuBlock/RichMenuBlock.d.ts +12 -0
  165. package/es/components/molecules/RichMenu/RichMenuBlock/RichMenuBlock.js +53 -0
  166. package/es/components/molecules/RichMenu/RichMenuBlock/RichMenuCell/index.d.ts +17 -0
  167. package/es/components/molecules/RichMenu/RichMenuBlock/RichMenuCell/index.js +108 -0
  168. package/es/components/molecules/RichMenu/RichMenuBlock/RichMenuCell/styled.d.ts +20 -0
  169. package/es/components/molecules/RichMenu/RichMenuBlock/RichMenuCell/styled.js +135 -0
  170. package/es/components/molecules/RichMenu/RichMenuBlock/constants.d.ts +2 -0
  171. package/es/components/molecules/RichMenu/RichMenuBlock/constants.js +765 -0
  172. package/es/components/molecules/RichMenu/RichMenuBlock/index.d.ts +3 -0
  173. package/es/components/molecules/RichMenu/RichMenuBlock/index.js +2 -0
  174. package/es/components/molecules/RichMenu/RichMenuBlock/styled.d.ts +9 -0
  175. package/es/components/molecules/RichMenu/RichMenuBlock/styled.js +17 -0
  176. package/es/components/molecules/RichMenu/RichMenuChatBar/RichMenuChatBar.d.ts +10 -0
  177. package/es/components/molecules/RichMenu/RichMenuChatBar/RichMenuChatBar.js +32 -0
  178. package/es/components/molecules/RichMenu/RichMenuChatBar/TypingChat/index.d.ts +6 -0
  179. package/es/components/molecules/RichMenu/RichMenuChatBar/TypingChat/index.js +15 -0
  180. package/es/components/molecules/RichMenu/RichMenuChatBar/TypingChat/styled.d.ts +4 -0
  181. package/es/components/molecules/RichMenu/RichMenuChatBar/TypingChat/styled.js +47 -0
  182. package/es/components/molecules/RichMenu/RichMenuChatBar/index.d.ts +2 -0
  183. package/es/components/molecules/RichMenu/RichMenuChatBar/index.js +1 -0
  184. package/es/components/molecules/RichMenu/RichMenuChatBar/styled.d.ts +9 -0
  185. package/es/components/molecules/RichMenu/RichMenuChatBar/styled.js +37 -0
  186. package/es/components/molecules/RichMenu/RichMenuMobileView/RichMenuMobileView.d.ts +10 -0
  187. package/es/components/molecules/RichMenu/RichMenuMobileView/RichMenuMobileView.js +37 -0
  188. package/es/components/molecules/RichMenu/RichMenuMobileView/index.d.ts +1 -0
  189. package/es/components/molecules/RichMenu/RichMenuMobileView/index.js +1 -0
  190. package/es/components/molecules/RichMenu/RichMenuMobileView/styled.d.ts +6 -0
  191. package/es/components/molecules/RichMenu/RichMenuMobileView/styled.js +20 -0
  192. package/es/components/molecules/RichMenu/index.d.ts +3 -0
  193. package/es/components/molecules/RichMenu/index.js +3 -0
  194. package/es/components/molecules/Select/Test.d.ts +2 -1
  195. package/es/components/molecules/ShareAccess/ShareAccess.d.ts +3 -0
  196. package/es/components/molecules/ShareAccess/ShareAccess.js +23 -0
  197. package/es/components/molecules/ShareAccess/actions.d.ts +16 -0
  198. package/es/components/molecules/ShareAccess/actions.js +12 -0
  199. package/es/components/molecules/ShareAccess/components/GeneralAccess/GeneralAccess.d.ts +2 -0
  200. package/es/components/molecules/ShareAccess/components/GeneralAccess/GeneralAccess.js +78 -0
  201. package/es/components/molecules/ShareAccess/components/GeneralAccess/index.d.ts +1 -0
  202. package/es/components/molecules/ShareAccess/components/GeneralAccess/index.js +1 -0
  203. package/es/components/molecules/ShareAccess/components/GeneralAccess/styled.d.ts +1 -0
  204. package/es/components/molecules/ShareAccess/components/GeneralAccess/styled.js +57 -0
  205. package/es/components/molecules/ShareAccess/components/LayoutContent/LayoutContent.d.ts +3 -0
  206. package/es/components/molecules/ShareAccess/components/LayoutContent/LayoutContent.js +19 -0
  207. package/es/components/molecules/ShareAccess/components/LayoutContent/index.d.ts +1 -0
  208. package/es/components/molecules/ShareAccess/components/LayoutContent/index.js +1 -0
  209. package/es/components/molecules/ShareAccess/components/LayoutContent/styled.d.ts +1 -0
  210. package/es/components/molecules/ShareAccess/components/LayoutContent/styled.js +7 -0
  211. package/es/components/molecules/ShareAccess/components/ModalTransferOwnerShip/ModalTransferOwnerShip.d.ts +2 -0
  212. package/es/components/molecules/ShareAccess/components/ModalTransferOwnerShip/ModalTransferOwnerShip.js +43 -0
  213. package/es/components/molecules/ShareAccess/components/ModalTransferOwnerShip/index.d.ts +0 -0
  214. package/es/components/molecules/ShareAccess/components/ModalTransferOwnerShip/index.js +1 -0
  215. package/es/components/molecules/ShareAccess/components/ModalTransferOwnerShip/styled.d.ts +7 -0
  216. package/es/components/molecules/ShareAccess/components/ModalTransferOwnerShip/styled.js +18 -0
  217. package/es/components/molecules/ShareAccess/components/PeopleAccess/PeopleAccess.d.ts +5 -0
  218. package/es/components/molecules/ShareAccess/components/PeopleAccess/PeopleAccess.js +97 -0
  219. package/es/components/molecules/ShareAccess/components/PeopleAccess/index.d.ts +1 -0
  220. package/es/components/molecules/ShareAccess/components/PeopleAccess/index.js +1 -0
  221. package/es/components/molecules/ShareAccess/components/PeopleAccess/styled.d.ts +1 -0
  222. package/es/components/molecules/ShareAccess/components/PeopleAccess/styled.js +46 -0
  223. package/es/components/molecules/ShareAccess/components/SearchUser/SearchUser.d.ts +5 -0
  224. package/es/components/molecules/ShareAccess/components/SearchUser/SearchUser.js +73 -0
  225. package/es/components/molecules/ShareAccess/components/SearchUser/index.d.ts +1 -0
  226. package/es/components/molecules/ShareAccess/components/SearchUser/index.js +1 -0
  227. package/es/components/molecules/ShareAccess/components/SearchUser/styled.d.ts +2 -0
  228. package/es/components/molecules/ShareAccess/components/SearchUser/styled.js +29 -0
  229. package/es/components/molecules/ShareAccess/components/index.d.ts +1 -0
  230. package/es/components/molecules/ShareAccess/components/index.js +1 -0
  231. package/es/components/molecules/ShareAccess/constants.d.ts +67 -0
  232. package/es/components/molecules/ShareAccess/constants.js +85 -0
  233. package/es/components/molecules/ShareAccess/context.d.ts +4 -0
  234. package/es/components/molecules/ShareAccess/context.js +3 -0
  235. package/es/components/molecules/ShareAccess/hooks/index.d.ts +1 -0
  236. package/es/components/molecules/ShareAccess/hooks/index.js +1 -0
  237. package/es/components/molecules/ShareAccess/hooks/useShareAccess.d.ts +18 -0
  238. package/es/components/molecules/ShareAccess/hooks/useShareAccess.js +29 -0
  239. package/es/components/molecules/ShareAccess/index.d.ts +4 -0
  240. package/es/components/molecules/ShareAccess/index.js +4 -0
  241. package/es/components/molecules/ShareAccess/reducer.d.ts +2 -0
  242. package/es/components/molecules/ShareAccess/reducer.js +19 -0
  243. package/es/components/molecules/ShareAccess/types.d.ts +54 -0
  244. package/es/components/molecules/ShareAccess/types.js +1 -0
  245. package/es/components/molecules/ShareAccess/utils.d.ts +38 -0
  246. package/es/components/molecules/ShareAccess/utils.js +57 -0
  247. package/es/components/molecules/TreeSelect/TreeSelect.d.ts +2 -2
  248. package/es/components/molecules/UploadImage/MediaIcon.d.ts +2 -1
  249. package/es/components/molecules/UploadImage/MediaThumb.d.ts +11 -0
  250. package/es/components/molecules/UploadImage/MediaThumb.js +31 -0
  251. package/es/components/molecules/UploadImage/index.d.ts +6 -2
  252. package/es/components/molecules/UploadImage/index.js +111 -84
  253. package/es/components/molecules/UploadImage/styled.js +0 -4
  254. package/es/components/molecules/UploadImage/utils.d.ts +3 -0
  255. package/es/components/molecules/UploadImage/utils.js +24 -0
  256. package/es/components/molecules/index.d.ts +10 -3
  257. package/es/components/molecules/index.js +8 -3
  258. package/es/components/organism/GenerativeInsights/constants.d.ts +1 -0
  259. package/es/components/organism/GenerativeInsights/constants.js +1 -0
  260. package/es/components/organism/GenerativeInsights/index.d.ts +11 -0
  261. package/es/components/organism/GenerativeInsights/index.js +57 -0
  262. package/es/components/organism/GenerativeInsights/styled.d.ts +12 -0
  263. package/es/components/organism/GenerativeInsights/styled.js +66 -0
  264. package/es/components/organism/GenerativeInsights/utils.d.ts +13 -0
  265. package/es/components/organism/GenerativeInsights/utils.js +50 -0
  266. package/es/components/organism/index.d.ts +1 -0
  267. package/es/components/organism/index.js +1 -0
  268. package/es/constants/index.d.ts +1 -0
  269. package/es/constants/index.js +1 -0
  270. package/es/constants/queries.d.ts +14 -0
  271. package/es/constants/queries.js +21 -0
  272. package/es/constants/richMenu.d.ts +19 -0
  273. package/es/constants/richMenu.js +19 -0
  274. package/es/constants/storybook.d.ts +7 -1
  275. package/es/constants/storybook.js +12 -0
  276. package/es/constants/theme.js +5 -0
  277. package/es/hooks/index.d.ts +1 -0
  278. package/es/hooks/index.js +1 -0
  279. package/es/hooks/useDebounceCallback.d.ts +1 -0
  280. package/es/hooks/useDebounceCallback.js +5 -0
  281. package/es/hooks/useDebounceV2.d.ts +1 -0
  282. package/es/hooks/useDebounceV2.js +11 -0
  283. package/es/hooks/useDeepCompareEffect.d.ts +1 -0
  284. package/es/hooks/useDeepCompareEffect.js +21 -0
  285. package/es/hooks/useDeepCompareMemo.d.ts +2 -0
  286. package/es/hooks/useDeepCompareMemo.js +21 -0
  287. package/es/hooks/usePrevious.d.ts +2 -0
  288. package/es/hooks/usePrevious.js +9 -0
  289. package/es/locales/en/translation.json +160 -3
  290. package/es/locales/i18n.d.ts +158 -0
  291. package/es/locales/translations.d.ts +157 -0
  292. package/es/locales/vi/translation.json +2 -1
  293. package/es/models/BusinessObject.d.ts +116 -0
  294. package/es/models/BusinessObject.js +113 -0
  295. package/es/models/Currency.d.ts +9 -0
  296. package/es/models/Currency.js +10 -0
  297. package/es/models/CustomFunction.d.ts +19 -0
  298. package/es/models/CustomFunction.js +25 -0
  299. package/es/models/DynamicContentAttribute.d.ts +34 -0
  300. package/es/models/DynamicContentAttribute.js +9 -0
  301. package/es/models/EventTrackingAttribute.d.ts +11 -0
  302. package/es/models/EventTrackingAttribute.js +13 -0
  303. package/es/models/PromotionPool.d.ts +11 -0
  304. package/es/models/PromotionPool.js +12 -0
  305. package/es/models/{SavedImage.d.ts → SavedMedia.d.ts} +5 -5
  306. package/es/models/{SavedImage.js → SavedMedia.js} +3 -3
  307. package/es/queries/BusinessObject/index.d.ts +6 -0
  308. package/es/queries/BusinessObject/index.js +6 -0
  309. package/es/queries/BusinessObject/useGetListAllEvents.d.ts +11 -0
  310. package/es/queries/BusinessObject/useGetListAllEvents.js +14 -0
  311. package/es/queries/BusinessObject/useGetListAttributeBO.d.ts +17 -0
  312. package/es/queries/BusinessObject/useGetListAttributeBO.js +41 -0
  313. package/es/queries/BusinessObject/useGetListBO.d.ts +6 -0
  314. package/es/queries/BusinessObject/useGetListBO.js +19 -0
  315. package/es/queries/BusinessObject/useGetListEventAttr.d.ts +4 -0
  316. package/es/queries/BusinessObject/useGetListEventAttr.js +15 -0
  317. package/es/queries/BusinessObject/useGetListPromotionCodeAttr.d.ts +6 -0
  318. package/es/queries/BusinessObject/useGetListPromotionCodeAttr.js +26 -0
  319. package/es/queries/BusinessObject/useGetListSourceByEvent.d.ts +13 -0
  320. package/es/queries/BusinessObject/useGetListSourceByEvent.js +11 -0
  321. package/es/queries/CustomFunction/index.d.ts +2 -0
  322. package/es/queries/CustomFunction/index.js +2 -0
  323. package/es/queries/CustomFunction/useCustomFunction.d.ts +19 -0
  324. package/es/queries/CustomFunction/useCustomFunction.js +53 -0
  325. package/es/queries/DynamicContentAttribute/index.d.ts +1 -0
  326. package/es/queries/DynamicContentAttribute/index.js +1 -0
  327. package/es/queries/DynamicContentAttribute/useGetDynamicContentAttr.d.ts +10 -0
  328. package/es/queries/DynamicContentAttribute/useGetDynamicContentAttr.js +21 -0
  329. package/es/queries/PromotionPool/index.d.ts +1 -0
  330. package/es/queries/PromotionPool/index.js +1 -0
  331. package/es/queries/PromotionPool/useGetListPromotionPool.d.ts +9 -0
  332. package/es/queries/PromotionPool/useGetListPromotionPool.js +62 -0
  333. package/es/queries/ThirdParty/index.d.ts +1 -0
  334. package/es/queries/ThirdParty/index.js +1 -0
  335. package/es/queries/ThirdParty/useGetEventTrackingAttributes.d.ts +14 -0
  336. package/es/queries/ThirdParty/useGetEventTrackingAttributes.js +15 -0
  337. package/es/queries/configs.d.ts +4 -0
  338. package/es/queries/configs.js +13 -0
  339. package/es/queries/index.d.ts +6 -0
  340. package/es/queries/index.js +6 -0
  341. package/es/services/MediaTemplateDesign/BusinessObject/index.d.ts +8 -0
  342. package/es/services/MediaTemplateDesign/BusinessObject/index.js +100 -0
  343. package/es/services/MediaTemplateDesign/CustomFunction/index.d.ts +15 -0
  344. package/es/services/MediaTemplateDesign/CustomFunction/index.js +135 -0
  345. package/es/services/MediaTemplateDesign/DynamicContentAttribute/index.d.ts +4 -0
  346. package/es/services/MediaTemplateDesign/DynamicContentAttribute/index.js +39 -0
  347. package/es/services/MediaTemplateDesign/ListCurrency/index.d.ts +6 -0
  348. package/es/services/MediaTemplateDesign/ListCurrency/index.js +34 -0
  349. package/es/services/MediaTemplateDesign/PromotionPool/index.d.ts +3 -0
  350. package/es/services/MediaTemplateDesign/PromotionPool/index.js +31 -0
  351. package/es/services/MediaTemplateDesign/UploadFile/index.d.ts +5 -5
  352. package/es/services/MediaTemplateDesign/UploadFile/index.js +36 -19
  353. package/es/services/ThirParty/index.d.ts +8 -0
  354. package/es/services/ThirParty/index.js +26 -0
  355. package/es/services/index.d.ts +14 -5
  356. package/es/services/index.js +45 -1
  357. package/es/test.d.ts +2 -1
  358. package/es/test.js +76 -29
  359. package/es/types/index.d.ts +17 -0
  360. package/es/types/index.js +2 -1
  361. package/es/types/richMenu.d.ts +214 -0
  362. package/es/types/richMenu.js +1 -0
  363. package/es/types/variables.d.ts +2 -0
  364. package/es/types/variables.js +1 -0
  365. package/es/utils/common.d.ts +4 -0
  366. package/es/utils/common.js +21 -0
  367. package/es/utils/handleError.d.ts +32 -2
  368. package/es/utils/handleError.js +42 -4
  369. package/package.json +24 -9
@@ -0,0 +1,512 @@
1
+ /* eslint-disable @typescript-eslint/no-unused-expressions */
2
+ // Libraries
3
+ import React, { useState, useLayoutEffect, useEffect, useRef, useCallback, useMemo, } from 'react';
4
+ import classnames from 'classnames';
5
+ import { has, isEmpty, omit } from 'lodash';
6
+ // Components
7
+ import CaretPositioning from './EditCaretPositioning';
8
+ import { WrapperInputStyle, TooltipHover, DynamicItem } from './styled';
9
+ import { Popover } from 'antd';
10
+ import { AddDynamicContent } from '../../molecules/AddDynamicContent';
11
+ import { PopupShortLink } from './PopupShortLink';
12
+ import Icon from '@antscorp/icons';
13
+ // Utils
14
+ import { getObjectPropSafely, random, safeParse } from '@antscorp/antsomi-ui/es/utils';
15
+ import { convertBreakTag, convertDivToBreakTag, convertHtmlText, genShortLinkValue, getInsertLinkPatternWithAppendSpaceEnd, getInsertPatternWithAppendSpaceEnd, handleUpdateInputPersonalization, initialValue, mapLabelPersonalization, pasteHtmlAtCaret, removeHtmlTag, spacingNonTracking, validateHTMLTags, createElement, getBgColorByContentSourceType, } from './utils';
16
+ // Hooks
17
+ import { useDebounce } from '@antscorp/antsomi-ui/es/hooks/useDebounce';
18
+ // Constants
19
+ import { THEME } from '@antscorp/antsomi-ui/es/constants';
20
+ const PATH = 'src/components/atoms/InputDynamic/InputDynamic.tsx';
21
+ export const AllowDynamicType = {
22
+ SHORTLINK: 'shortlink',
23
+ ADDPERSONALIZATION: 'addPersonalization',
24
+ };
25
+ const defaultProps = {
26
+ value: '',
27
+ isViewMode: false,
28
+ isRealTime: true,
29
+ errors: [],
30
+ canMultipleLine: false,
31
+ apiConfig: {
32
+ domain: 'https://sandbox-media-template.antsomi.com/cdp',
33
+ slug: '/api/v1',
34
+ token: '5474r2x214z2a4b403e4y446p4b4t2b4t474j4t2i5',
35
+ accountId: '1600085679',
36
+ userId: '1600085679',
37
+ },
38
+ disabled: false,
39
+ showIndex: true,
40
+ showDisplayFormat: true,
41
+ isShowCustomFunction: true,
42
+ onError: () => { },
43
+ onChange: () => { },
44
+ addMessageToQueue: () => { },
45
+ };
46
+ export const InputDynamic = (props) => {
47
+ const { value, isViewMode, isRealTime, errors, disabledOpts, disabled, canMultipleLine, allowDynamicOptions, showIndex, showDisplayFormat, isShowCustomFunction, apiConfig, onError, onChange, addMessageToQueue, } = props;
48
+ // States
49
+ const [textValue, setTextValue] = useState(initialValue(value));
50
+ const [initSelectedProperties, setInitSelectedProperties] = useState({
51
+ keyTag: 'shortlink_static',
52
+ link: '',
53
+ urlDetected: '',
54
+ });
55
+ const [isShowPopover, setIsShowPopover] = useState(false);
56
+ const [dynamicContent, setDynamicContent] = useState({
57
+ visible: false,
58
+ defaultData: {},
59
+ activeTagId: '',
60
+ contentSources: {
61
+ groups: [],
62
+ expanded: [],
63
+ isLoadingDataBO: false,
64
+ },
65
+ journeySettings: {
66
+ unsubscribeSegmentType: 'customer',
67
+ triggerType: 'event_based',
68
+ triggerEvent: {
69
+ eventActionId: '',
70
+ eventCategoryId: '',
71
+ insightPropertyIds: [],
72
+ },
73
+ },
74
+ });
75
+ const [popoverOpenShortLink, setPopoverOpenShortLink] = useState(false);
76
+ const [tooltipHoverDebounce, _tooltipHover, setTooltipHover] = useDebounce({ x: 0, y: 0 }, 200);
77
+ // Refs
78
+ const caretPositionRef = useRef(null);
79
+ const timerRef = useRef();
80
+ const personalizationInputRef = useRef(null);
81
+ const isRenderAddDynamicContent = useMemo(() => {
82
+ if (isEmpty(apiConfig) ||
83
+ isEmpty(allowDynamicOptions) ||
84
+ (allowDynamicOptions &&
85
+ allowDynamicOptions.findIndex(dynamicKey => dynamicKey === AllowDynamicType.ADDPERSONALIZATION) === -1))
86
+ return false;
87
+ return true;
88
+ }, [apiConfig, allowDynamicOptions]);
89
+ const onTriggerChange = (event = null) => {
90
+ var _a;
91
+ try {
92
+ let tmp = (_a = personalizationInputRef.current) === null || _a === void 0 ? void 0 : _a.innerHTML;
93
+ if (event !== null) {
94
+ caretPositionRef.current = CaretPositioning.saveSelection(event.currentTarget);
95
+ tmp = event.currentTarget.innerHTML;
96
+ }
97
+ tmp = tmp === null || tmp === void 0 ? void 0 : tmp.replace(
98
+ // replace old non tracking url to detect url
99
+ /<button(?=[^>]*class="insert-word")[^>]*value=['"]#(?:{nontrackurl\()?(https?:\/\/[0-9a-zA-Z-{}|"\./?_=&%:#*@;]+)(?:\)})?['"][^>]*>.*?<\/button>/g, match => {
100
+ const url = match.match(/(https?:\/\/[0-9a-zA-Z-\./?_=&%:#*@;]+)/);
101
+ if (url) {
102
+ return `<span id="${random(5)}" class="detect-url">${url[1]}</span>`;
103
+ }
104
+ return match; // If no match found, return the original string
105
+ }).replace(
106
+ // replace url to detect url
107
+ /((?<!class="detect-url">|#{shortlink(?:_static)?\(|<span style="line-height: 20px;margin-right: 8px;pointer-events:none;">)\bhttps*:\/\/[0-9a-zA-Z-{}|"\./?_=&%:#*@;]+)/g, match => `<span id="${random(5)}" class="detect-url">${match}</span>`);
108
+ tmp = convertDivToBreakTag(tmp);
109
+ setTextValue(tmp);
110
+ const text = convertHtmlText(tmp, 'raw', {}, {}, 'input', 'add');
111
+ const textConverted = convertBreakTag(text);
112
+ onChange(removeHtmlTag(textConverted));
113
+ }
114
+ catch (error) {
115
+ if (typeof addMessageToQueue === 'function') {
116
+ addMessageToQueue({
117
+ path: 'app/containers/UIDev/UIEditorPersonalization/Input/index.jsx',
118
+ func: 'onTriggerChange',
119
+ data: error,
120
+ });
121
+ }
122
+ // eslint-disable-next-line no-console
123
+ console.error(error);
124
+ }
125
+ };
126
+ const handleHidePopover = () => {
127
+ setIsShowPopover(false);
128
+ };
129
+ const handleOpenChangeAddDynamicContent = useCallback((newChange) => {
130
+ setDynamicContent(prev => (Object.assign(Object.assign({}, prev), { visible: newChange })));
131
+ }, []);
132
+ const handleOpenChange = (newOpen) => {
133
+ if (disabled)
134
+ return;
135
+ setDynamicContent(prev => (Object.assign(Object.assign({}, prev), { activeTagId: '' })));
136
+ setIsShowPopover(newOpen);
137
+ };
138
+ const callback = (type, data) => {
139
+ var _a, _b;
140
+ switch (type) {
141
+ case 'REPLACE_DETECTED_URL': {
142
+ const innerHTML = getObjectPropSafely(() => { var _a; return (_a = personalizationInputRef.current) === null || _a === void 0 ? void 0 : _a.innerHTML; }, '');
143
+ if (innerHTML) {
144
+ // remove span url và focus vào vị trí remove để add tag shortlink vào vị trí này.
145
+ const index = Array.from((_a = personalizationInputRef.current) === null || _a === void 0 ? void 0 : _a.childNodes).findIndex((element) => element.id === data.id);
146
+ const range = document.createRange(); // Tạo một đối tượng Range
147
+ const sel = window.getSelection(); // Lấy đối tượng Selection hiện tại
148
+ range.setStart((_b = personalizationInputRef.current) === null || _b === void 0 ? void 0 : _b.childNodes[index], 0); // Đặt điểm bắt đầu của Range
149
+ range.collapse(true); // Thu gọn Range để tập trung vào điểm bắt đầu
150
+ sel === null || sel === void 0 ? void 0 : sel.removeAllRanges(); // Xóa tất cả các Range hiện có
151
+ sel === null || sel === void 0 ? void 0 : sel.addRange(range); // Thêm Range mới vào Selection
152
+ caretPositionRef.current = CaretPositioning.saveSelection(personalizationInputRef.current);
153
+ const newDataUpdate = innerHTML.replace(data.outerHTML, '');
154
+ personalizationInputRef.current.innerHTML = newDataUpdate;
155
+ }
156
+ break;
157
+ }
158
+ default:
159
+ break;
160
+ }
161
+ };
162
+ const onPaste = (e) => {
163
+ // cancel paste
164
+ e.preventDefault();
165
+ // get text representation of clipboard
166
+ const text = (e.originalEvent || e).clipboardData.getData('text/plain');
167
+ // insert text manually
168
+ document.execCommand('insertHTML', false, text);
169
+ };
170
+ const handleInsertSortLink = (url, type) => {
171
+ try {
172
+ const { id, value: linkValue, label: linkLabel } = genShortLinkValue(url, type);
173
+ setPopoverOpenShortLink(false);
174
+ if (personalizationInputRef.current instanceof HTMLElement) {
175
+ CaretPositioning.restoreSelection(personalizationInputRef.current, caretPositionRef.current);
176
+ pasteHtmlAtCaret(getInsertLinkPatternWithAppendSpaceEnd(id, linkValue, linkLabel), null);
177
+ onTriggerChange();
178
+ caretPositionRef.current = CaretPositioning.saveSelection(personalizationInputRef.current);
179
+ }
180
+ setInitSelectedProperties({ link: '', keyTag: 'shortlink_static', urlDetected: '' });
181
+ }
182
+ catch (err) {
183
+ if (typeof addMessageToQueue === 'function') {
184
+ addMessageToQueue({
185
+ path: 'app/containers/UIDev/UIEditorPersonalization/Input/index.jsx',
186
+ func: 'handleInsertText',
187
+ data: err,
188
+ });
189
+ }
190
+ }
191
+ };
192
+ const handleCloseAddDynamicContent = () => {
193
+ setDynamicContent(Object.assign(Object.assign({}, dynamicContent), { visible: false }));
194
+ };
195
+ const handleInsertText = (dataObj) => {
196
+ try {
197
+ const id = random(5);
198
+ const { mappingFields = '', type = '', attribute = {}, customFunction = {} } = dataObj;
199
+ const isCustom = type === 'custom';
200
+ const personalizationCode = isCustom ? mappingFields : `#{${mappingFields}||""}`;
201
+ const bgColor = getBgColorByContentSourceType(type);
202
+ const label = getObjectPropSafely(() => isCustom ? customFunction.templateName : attribute.label);
203
+ if (personalizationInputRef.current instanceof HTMLElement) {
204
+ if (dynamicContent.activeTagId) {
205
+ // for case update
206
+ const element = document.getElementById(dynamicContent.activeTagId);
207
+ const child = createElement('em', {
208
+ class: 'editor-icon-remove',
209
+ style: 'color: white;font-style: normal;',
210
+ }, ['x']);
211
+ const newElement = createElement('button', {
212
+ id,
213
+ class: 'insert-word',
214
+ style: `color: white; font-size: inherit; outline: none;border: 1px solid transparent; border-radius: 1.2rem; max-height: 30px; cursor: pointer; backgroundColor: ${bgColor}`,
215
+ contentEditable: 'false',
216
+ value: `${personalizationCode.replace(/\s/gm, '&nbsp;')}`,
217
+ }, [
218
+ `${getObjectPropSafely(() => isCustom ? customFunction.templateName : attribute.label)} `,
219
+ child,
220
+ ]);
221
+ if (element && element.parentNode) {
222
+ element.parentNode.replaceChild(newElement, element);
223
+ }
224
+ setDynamicContent(prev => (Object.assign(Object.assign({}, prev), { activeTagId: dynamicContent.activeTagId, defaultData: Object.assign(Object.assign({}, (prev.defaultData || {})), { [dynamicContent.activeTagId]: dataObj }), visible: false })));
225
+ onTriggerChange();
226
+ return;
227
+ }
228
+ personalizationInputRef.current.focus();
229
+ CaretPositioning.restoreSelection(personalizationInputRef.current, caretPositionRef.current);
230
+ pasteHtmlAtCaret(getInsertPatternWithAppendSpaceEnd(id, personalizationCode, label, bgColor), null, () => {
231
+ caretPositionRef.current = CaretPositioning.saveSelection(personalizationInputRef.current);
232
+ onTriggerChange();
233
+ });
234
+ setDynamicContent(prev => (Object.assign(Object.assign({}, prev), { activeTagId: id, defaultData: Object.assign(Object.assign({}, (prev.defaultData || {})), { [id]: dataObj }), visible: false })));
235
+ }
236
+ }
237
+ catch (error) {
238
+ if (typeof addMessageToQueue === 'function') {
239
+ addMessageToQueue({
240
+ path: PATH,
241
+ func: 'handleInsertText',
242
+ data: error,
243
+ });
244
+ }
245
+ // eslint-disable-next-line no-console
246
+ console.log(error);
247
+ }
248
+ };
249
+ const handleChangeInputDebounce = () => {
250
+ clearTimeout(timerRef.current);
251
+ timerRef.current = setTimeout(() => {
252
+ caretPositionRef.current = CaretPositioning.saveSelection(personalizationInputRef.current);
253
+ onTriggerChange();
254
+ }, 1000);
255
+ };
256
+ const handleKeyPress = (e) => {
257
+ if (isRealTime) {
258
+ handleChangeInputDebounce();
259
+ }
260
+ if (canMultipleLine)
261
+ return;
262
+ if (+e.charCode === 13) {
263
+ e.preventDefault();
264
+ }
265
+ };
266
+ const getDangerouslySetInnerHTML = (text) => {
267
+ if (text) {
268
+ const regex = /<[^<>]+>/g;
269
+ let tag;
270
+ // eslint-disable-next-line no-cond-assign
271
+ while ((tag = regex.exec(text))) {
272
+ if (!validateHTMLTags.isValidTag(tag[0])) {
273
+ const finalTag = tag[0].replace('<', '&#60').replace('>', '&#62');
274
+ text = text.replace(tag[0], finalTag);
275
+ }
276
+ }
277
+ text = text.replaceAll('\n', '<br>');
278
+ if (spacingNonTracking(text)) {
279
+ return text;
280
+ }
281
+ return safeParse(text, '').concat('<br />');
282
+ }
283
+ return '';
284
+ };
285
+ const toggleShortLinkModal = useCallback(() => {
286
+ setPopoverOpenShortLink(!popoverOpenShortLink);
287
+ }, [popoverOpenShortLink]);
288
+ const handleClickDynamicItem = (e, dynamicKey) => {
289
+ e.stopPropagation();
290
+ handleHidePopover();
291
+ if (dynamicKey === AllowDynamicType.SHORTLINK) {
292
+ toggleShortLinkModal();
293
+ }
294
+ if (dynamicKey === AllowDynamicType.ADDPERSONALIZATION) {
295
+ handleOpenChangeAddDynamicContent(true);
296
+ }
297
+ };
298
+ /**
299
+ * [NOTE:open modal to edit]
300
+ */
301
+ useEffect(() => {
302
+ const handleClickTag = (e) => {
303
+ try {
304
+ e.stopPropagation();
305
+ if (e.target) {
306
+ const { value = '', id = '' } = e.target;
307
+ const shortLink = value.replace(/#|{|}|/g, '').split('(');
308
+ if (shortLink && shortLink.length >= 2) {
309
+ const link = shortLink[1].substring(0, shortLink[1].length - 1) || '';
310
+ setInitSelectedProperties(prev => (Object.assign(Object.assign({}, prev), { link, keyTag: shortLink[0], urlDetected: e.currentTarget })));
311
+ toggleShortLinkModal();
312
+ }
313
+ else {
314
+ setDynamicContent(prev => (Object.assign(Object.assign({}, prev), { activeTagId: id })));
315
+ handleOpenChangeAddDynamicContent(true);
316
+ }
317
+ }
318
+ }
319
+ catch (err) {
320
+ // eslint-disable-next-line no-console
321
+ console.log('err', err);
322
+ }
323
+ };
324
+ const listTags = Array.from(document.querySelectorAll('#ants-ui-input-personalization .input-personal .insert-word'));
325
+ if (listTags && listTags.length > 0) {
326
+ listTags.forEach((tag) => {
327
+ tag.addEventListener('click', handleClickTag);
328
+ });
329
+ }
330
+ return () => {
331
+ listTags.forEach((tag) => {
332
+ tag.removeEventListener('click', handleClickTag);
333
+ });
334
+ };
335
+ }, [handleOpenChangeAddDynamicContent, textValue, toggleShortLinkModal]);
336
+ /** Anchor tooltip */
337
+ useEffect(() => {
338
+ let listElement = [];
339
+ const handleMouseOver = (e, targetRect) => {
340
+ e === null || e === void 0 ? void 0 : e.stopPropagation();
341
+ const viewportTop = window.pageYOffset;
342
+ const viewportLeft = window.pageXOffset;
343
+ const offsetWidth = targetRect.width / 2;
344
+ const offsetHeight = targetRect.height / 2;
345
+ const tooltipHeight = 16;
346
+ const x = targetRect.left - viewportLeft + offsetWidth;
347
+ const y = targetRect.top - viewportTop - offsetHeight - tooltipHeight;
348
+ setTooltipHover({
349
+ x,
350
+ y,
351
+ });
352
+ };
353
+ const handleMouseOut = (e) => {
354
+ e === null || e === void 0 ? void 0 : e.stopPropagation();
355
+ setTooltipHover({ x: 0, y: 0 });
356
+ };
357
+ const handleClickDetectUrl = (e) => {
358
+ e === null || e === void 0 ? void 0 : e.stopPropagation();
359
+ setInitSelectedProperties(prev => {
360
+ var _a;
361
+ return (Object.assign(Object.assign({}, prev), { link: ((_a = e === null || e === void 0 ? void 0 : e.currentTarget) === null || _a === void 0 ? void 0 : _a.textContent) || '', urlDetected: e === null || e === void 0 ? void 0 : e.currentTarget }));
362
+ });
363
+ toggleShortLinkModal();
364
+ };
365
+ if (!isViewMode) {
366
+ const elements = document.querySelectorAll('#ants-ui-input-personalization .detect-url');
367
+ listElement = Array.from(elements);
368
+ if (listElement.length) {
369
+ listElement.forEach((element) => {
370
+ element.addEventListener('mouseover', e => handleMouseOver(e, element.getBoundingClientRect()));
371
+ element.addEventListener('mouseout', handleMouseOut);
372
+ /** Open shortlink modal */
373
+ element.addEventListener('click', handleClickDetectUrl);
374
+ });
375
+ }
376
+ }
377
+ return () => {
378
+ listElement.forEach((element) => {
379
+ element.removeEventListener('mouseover', handleMouseOver);
380
+ element.removeEventListener('mouseout', handleMouseOut);
381
+ });
382
+ };
383
+ }, [textValue, isViewMode, setTooltipHover, toggleShortLinkModal]);
384
+ /** Style & remove for tag shortlink button & icon remove */
385
+ useLayoutEffect(() => {
386
+ // get button Els [x] to create hover and style it
387
+ const iconRemoveEls = document.querySelectorAll('.editor-icon-remove');
388
+ const listIconRemove = iconRemoveEls && Array.from(iconRemoveEls);
389
+ // get button elements
390
+ const buttonElement = document.querySelectorAll('.insert-word');
391
+ const listBtnElement = buttonElement && Array.from(buttonElement);
392
+ const handleRemoveTag = (e) => {
393
+ var _a, _b, _c, _d, _e, _f, _g, _h;
394
+ if (e && ((_a = e.target) === null || _a === void 0 ? void 0 : _a.nodeName) === 'EM' && ((_b = e.target) === null || _b === void 0 ? void 0 : _b.className) === 'editor-icon-remove') {
395
+ e.stopPropagation();
396
+ if (((_c = e.target) === null || _c === void 0 ? void 0 : _c.parentElement) &&
397
+ has(dynamicContent.defaultData, [(_e = (_d = e.target) === null || _d === void 0 ? void 0 : _d.parentElement) === null || _e === void 0 ? void 0 : _e.id])) {
398
+ setDynamicContent(prev => {
399
+ var _a, _b;
400
+ return (Object.assign(Object.assign({}, prev), { activeTagId: '', defaultData: omit(prev.defaultData, [(_b = (_a = e.target) === null || _a === void 0 ? void 0 : _a.parentElement) === null || _b === void 0 ? void 0 : _b.id]) }));
401
+ });
402
+ }
403
+ (_g = (_f = e.target) === null || _f === void 0 ? void 0 : _f.parentElement) === null || _g === void 0 ? void 0 : _g.remove();
404
+ setTextValue(personalizationInputRef && ((_h = personalizationInputRef.current) === null || _h === void 0 ? void 0 : _h.innerHTML));
405
+ }
406
+ };
407
+ listIconRemove.forEach(eachIcon => {
408
+ eachIcon.addEventListener('click', handleRemoveTag);
409
+ });
410
+ handleUpdateInputPersonalization(listIconRemove, listBtnElement);
411
+ return () => {
412
+ listIconRemove.forEach(eachIcon => {
413
+ eachIcon.removeEventListener('click', handleRemoveTag);
414
+ });
415
+ };
416
+ }, [dynamicContent.defaultData, textValue]);
417
+ useLayoutEffect(() => {
418
+ try {
419
+ // save caret position
420
+ if (!personalizationInputRef.current) {
421
+ return;
422
+ }
423
+ // Perhaps React (whose VDOM gets outdated because we often prevent
424
+ // rerendering) did not update the DOM. So we update it manually now.
425
+ if (caretPositionRef && caretPositionRef.current) {
426
+ CaretPositioning.restoreSelection(personalizationInputRef.current, caretPositionRef.current);
427
+ }
428
+ }
429
+ catch (error) {
430
+ if (typeof addMessageToQueue === 'function') {
431
+ addMessageToQueue({
432
+ path: PATH,
433
+ func: 'useLayoutEffect',
434
+ data: error,
435
+ });
436
+ }
437
+ if (typeof onError === 'function') {
438
+ onError(error, {
439
+ component: PATH,
440
+ action: 'useLayoutEffect saved caret position',
441
+ args: {},
442
+ });
443
+ }
444
+ }
445
+ }, [addMessageToQueue, onError, textValue]);
446
+ const renderContentDynamicOptions = () => {
447
+ if (!(allowDynamicOptions === null || allowDynamicOptions === void 0 ? void 0 : allowDynamicOptions.length)) {
448
+ return null;
449
+ }
450
+ return allowDynamicOptions.map((dynamicKey) => (React.createElement(DynamicItem, { key: dynamicKey, onClick: e => handleClickDynamicItem(e, dynamicKey) }, mapLabelPersonalization(dynamicKey))));
451
+ };
452
+ const renderAddPersonalizationView = () => {
453
+ var _a, _b;
454
+ if (isViewMode) {
455
+ return null;
456
+ }
457
+ const isRenderPopover = allowDynamicOptions && (allowDynamicOptions === null || allowDynamicOptions === void 0 ? void 0 : allowDynamicOptions.length) > 1;
458
+ const isOnlyOneOpt = allowDynamicOptions && (allowDynamicOptions === null || allowDynamicOptions === void 0 ? void 0 : allowDynamicOptions.length) === 1;
459
+ const hasOnlyPersonalization = isOnlyOneOpt && (allowDynamicOptions === null || allowDynamicOptions === void 0 ? void 0 : allowDynamicOptions.includes(AllowDynamicType.ADDPERSONALIZATION));
460
+ const hasOnlyShortlink = isOnlyOneOpt && (allowDynamicOptions === null || allowDynamicOptions === void 0 ? void 0 : allowDynamicOptions.includes(AllowDynamicType.SHORTLINK));
461
+ const iconPersonalization = (React.createElement(Icon, { type: "icon-ants-person-alt", onClick: e => {
462
+ e.stopPropagation();
463
+ if (disabled || isRenderPopover)
464
+ return;
465
+ // Open short link modal
466
+ if (hasOnlyShortlink) {
467
+ toggleShortLinkModal();
468
+ }
469
+ else if (hasOnlyPersonalization) {
470
+ // Open Personalization modal
471
+ setDynamicContent(prev => (Object.assign(Object.assign({}, prev), { activeTagId: '', visible: true })));
472
+ }
473
+ else {
474
+ toggleShortLinkModal();
475
+ }
476
+ }, className: "customize-antsomi-profile", style: {
477
+ width: 24,
478
+ height: 24,
479
+ color: disabled ? (_a = THEME.token) === null || _a === void 0 ? void 0 : _a.colorTextDisabled : (_b = THEME.token) === null || _b === void 0 ? void 0 : _b.colorPrimary,
480
+ cursor: disabled ? 'not-allowed' : 'pointer',
481
+ } }));
482
+ if (!isRenderPopover) {
483
+ return iconPersonalization;
484
+ }
485
+ return (React.createElement(Popover, { content: renderContentDynamicOptions(), placement: "bottomLeft", rootClassName: "no-padding-content", trigger: "click", open: isShowPopover, onOpenChange: handleOpenChange }, iconPersonalization));
486
+ };
487
+ return (React.createElement(WrapperInputStyle, { id: "ants-ui-input-personalization" },
488
+ React.createElement("div", { className: classnames({
489
+ 'input-wrapper-outter': true,
490
+ 'styles-input-wrapper': !isViewMode,
491
+ 'input-error': (errors === null || errors === void 0 ? void 0 : errors.length) && (errors === null || errors === void 0 ? void 0 : errors.length) > 0,
492
+ }), style: Object.assign(Object.assign({}, (isViewMode && {
493
+ padding: 0,
494
+ minHeight: 0,
495
+ fontSize: 12,
496
+ border: 'none',
497
+ })), { width: '100%' }), onClick: () => { var _a; return (_a = personalizationInputRef.current) === null || _a === void 0 ? void 0 : _a.focus(); } },
498
+ React.createElement("div", { className: "input-personal", style: {
499
+ display: textValue && textValue !== '<br>' ? 'inline-block' : undefined,
500
+ }, contentEditable: !isViewMode, onBlur: onTriggerChange, onKeyPress: handleKeyPress, ref: personalizationInputRef,
501
+ // eslint-disable-next-line react/no-danger
502
+ dangerouslySetInnerHTML: {
503
+ __html: getDangerouslySetInnerHTML(textValue),
504
+ }, onPaste: onPaste }),
505
+ renderAddPersonalizationView()),
506
+ React.createElement(TooltipHover, { isShow: tooltipHoverDebounce.x > 0 && tooltipHoverDebounce.y > 0, top: tooltipHoverDebounce.y, left: tooltipHoverDebounce.x }, "Click on the link to convert it to a shortlink"),
507
+ popoverOpenShortLink && (React.createElement(PopupShortLink, { open: popoverOpenShortLink, disabledOpts: disabledOpts, onOk: handleInsertSortLink, onClose: toggleShortLinkModal, initSelectedProperties: initSelectedProperties, callback: callback })),
508
+ isRenderAddDynamicContent && (React.createElement(AddDynamicContent, { APIConfig: apiConfig, defaultDynamicIndex: 1, showIndex: showIndex, showDisplayFormat: showDisplayFormat, isShowCustomFunction: isShowCustomFunction, visible: dynamicContent.visible, defaultData: dynamicContent.defaultData[dynamicContent.activeTagId] || {}, journeySettings: dynamicContent.journeySettings, contentSources: dynamicContent.contentSources, onOk: (value) => {
509
+ handleInsertText(value);
510
+ }, onCancel: () => handleCloseAddDynamicContent() }))));
511
+ };
512
+ InputDynamic.defaultProps = defaultProps;
@@ -0,0 +1,16 @@
1
+ import { FC } from 'react';
2
+ import type { SelectedPropertiesProps } from './types';
3
+ type PopupShortLinkProps = {
4
+ open: any;
5
+ onClose: Function;
6
+ onOk: Function;
7
+ disabledOpts?: DisableShortLinkTypeProps;
8
+ initSelectedProperties: SelectedPropertiesProps;
9
+ callback: Function;
10
+ };
11
+ export type ShortLinkType = 'individual' | 'general';
12
+ export type DisableShortLinkTypeProps = {
13
+ [key in ShortLinkType]?: boolean;
14
+ };
15
+ export declare const PopupShortLink: FC<PopupShortLinkProps>;
16
+ export {};
@@ -0,0 +1,85 @@
1
+ // Libraries
2
+ import React, { useEffect, useState } from 'react';
3
+ import { Col, Row } from 'antd';
4
+ // Molecules
5
+ import { Modal } from '../../molecules';
6
+ // Components
7
+ import { Radio } from '../Radio';
8
+ // Styled
9
+ import { InputShortLink, InputWrapper } from './styled';
10
+ // Utils
11
+ import { validateURL } from './utils';
12
+ const OPTIONS = [
13
+ {
14
+ value: 'individual',
15
+ label: 'Individual',
16
+ },
17
+ {
18
+ value: 'general',
19
+ label: 'General',
20
+ },
21
+ ];
22
+ export const PopupShortLink = props => {
23
+ const { open, onClose, onOk, disabledOpts, initSelectedProperties, callback } = props;
24
+ const [state, setState] = useState({
25
+ link: '',
26
+ type: 'individual',
27
+ error: '',
28
+ });
29
+ useEffect(() => {
30
+ let type = 'individual';
31
+ if (initSelectedProperties && initSelectedProperties.keyTag) {
32
+ type = initSelectedProperties.keyTag === 'shortlink' ? 'individual' : 'general';
33
+ }
34
+ setState(prev => (Object.assign(Object.assign({}, prev), { link: initSelectedProperties.link, type: type })));
35
+ }, [initSelectedProperties, setState]);
36
+ const handleClose = () => {
37
+ setState(prev => (Object.assign(Object.assign({}, prev), { link: '', error: '' })));
38
+ if (onClose)
39
+ onClose();
40
+ };
41
+ const handleValidate = ({ urlString = state.link, afterValidate }) => {
42
+ const isValid = validateURL(urlString);
43
+ setState(prev => (Object.assign(Object.assign({}, prev), { error: isValid ? '' : 'Invalid URL' })));
44
+ if (typeof afterValidate === 'function')
45
+ afterValidate(isValid);
46
+ };
47
+ const handleOnChange = (value) => {
48
+ if (state.error)
49
+ handleValidate({ urlString: value });
50
+ setState(prev => (Object.assign(Object.assign({}, prev), { link: value })));
51
+ };
52
+ const handleOnOK = () => {
53
+ handleValidate({
54
+ afterValidate: (isValid) => {
55
+ if (isValid && onOk) {
56
+ if (initSelectedProperties.urlDetected) {
57
+ callback('REPLACE_DETECTED_URL', initSelectedProperties.urlDetected);
58
+ }
59
+ onOk(state.link, state.type);
60
+ handleClose();
61
+ }
62
+ },
63
+ });
64
+ };
65
+ const onChangeType = (event) => {
66
+ setState(prev => (Object.assign(Object.assign({}, prev), { type: event.target.value })));
67
+ };
68
+ return (React.createElement(Modal, { open: open, onCancel: handleClose, title: React.createElement("div", { style: { color: 'rgba(0, 0, 0, 0.87)', fontWeight: 'normal', fontSize: '16px' } }, "Add Short Link"), okText: "OK", cancelText: "Cancel", closable: false, onOk: handleOnOK, okButtonProps: {
69
+ disabled: !validateURL(state.link),
70
+ type: !validateURL(state.link) ? 'default' : 'primary',
71
+ } },
72
+ React.createElement(Row, null,
73
+ React.createElement(Col, { span: 6 },
74
+ React.createElement("span", { style: { fontSize: 12, color: '#000' } }, "Short link type")),
75
+ React.createElement(Col, { span: 18 },
76
+ React.createElement(Radio.Group, { onChange: onChangeType, value: state.type }, OPTIONS.map(each => (React.createElement(Radio, { key: each.value, disabled: disabledOpts && disabledOpts[each.value], name: "shortlink-type", value: each.value }, each.label)))))),
77
+ React.createElement(Row, null,
78
+ React.createElement(Col, { span: 24 },
79
+ React.createElement(InputWrapper, null,
80
+ React.createElement(InputShortLink, { required: true, isReverseMask: true, isHideErrMessage: true, labelColor: "#000000", id: "input-short-link-url", label: "Your URL", value: state.link, onAfterChange: handleOnChange })))),
81
+ !!state.error && (React.createElement(Row, null,
82
+ React.createElement(Col, { span: 6 }),
83
+ React.createElement(Col, { span: 18 },
84
+ React.createElement("div", null, state.error))))));
85
+ };