se-design 1.0.75 → 1.0.76-dev2

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 (484) hide show
  1. package/dist/assets/style.css +1 -1
  2. package/dist/components/AccessibleDiv/index.d.ts +24 -0
  3. package/dist/components/Checkbox/index.d.ts +12 -0
  4. package/dist/components/CustomAccordion/index.d.ts +1 -0
  5. package/dist/components/CustomModal/index.d.ts +15 -12
  6. package/dist/components/DatePicker/useDatePickerA11y.d.ts +50 -0
  7. package/dist/components/Dropdown/index.d.ts +15 -0
  8. package/dist/components/DropdownWithInputTags/index.d.ts +1 -0
  9. package/dist/components/Icon/index.d.ts +8 -2
  10. package/dist/components/InputWithIcon/index.d.ts +9 -1
  11. package/dist/components/LabelChip/index.d.ts +1 -0
  12. package/dist/components/Modal/index.d.ts +1 -0
  13. package/dist/components/PhoneInput/index.d.ts +13 -5
  14. package/dist/components/Popover/index.d.ts +2 -0
  15. package/dist/components/SidebarOverlay/index.d.ts +8 -0
  16. package/dist/components/index.d.ts +1 -0
  17. package/dist/index.js +144 -133
  18. package/dist/index.js.map +1 -1
  19. package/dist/index10.js +23 -59
  20. package/dist/index10.js.map +1 -1
  21. package/dist/index100.js +1 -1
  22. package/dist/index100.js.map +1 -1
  23. package/dist/index101.js +1 -1
  24. package/dist/index101.js.map +1 -1
  25. package/dist/index102.js +2 -2
  26. package/dist/index102.js.map +1 -1
  27. package/dist/index103.js +2 -2
  28. package/dist/index103.js.map +1 -1
  29. package/dist/index104.js +1 -1
  30. package/dist/index104.js.map +1 -1
  31. package/dist/index105.js +1 -1
  32. package/dist/index105.js.map +1 -1
  33. package/dist/index106.js +1 -1
  34. package/dist/index106.js.map +1 -1
  35. package/dist/index107.js +2 -2
  36. package/dist/index107.js.map +1 -1
  37. package/dist/index108.js +2 -2
  38. package/dist/index108.js.map +1 -1
  39. package/dist/index109.js +2 -2
  40. package/dist/index109.js.map +1 -1
  41. package/dist/index11.js +70 -63
  42. package/dist/index11.js.map +1 -1
  43. package/dist/index110.js +2 -2
  44. package/dist/index110.js.map +1 -1
  45. package/dist/index111.js +1 -1
  46. package/dist/index111.js.map +1 -1
  47. package/dist/index112.js +1 -1
  48. package/dist/index112.js.map +1 -1
  49. package/dist/index113.js +2 -2
  50. package/dist/index113.js.map +1 -1
  51. package/dist/index114.js +2 -2
  52. package/dist/index114.js.map +1 -1
  53. package/dist/index115.js +1 -1
  54. package/dist/index115.js.map +1 -1
  55. package/dist/index116.js +1 -1
  56. package/dist/index116.js.map +1 -1
  57. package/dist/index117.js +1 -1
  58. package/dist/index117.js.map +1 -1
  59. package/dist/index118.js +2 -2
  60. package/dist/index118.js.map +1 -1
  61. package/dist/index119.js +1 -1
  62. package/dist/index119.js.map +1 -1
  63. package/dist/index12.js +68 -33
  64. package/dist/index12.js.map +1 -1
  65. package/dist/index120.js +2 -2
  66. package/dist/index120.js.map +1 -1
  67. package/dist/index121.js +2 -2
  68. package/dist/index121.js.map +1 -1
  69. package/dist/index122.js +2 -2
  70. package/dist/index122.js.map +1 -1
  71. package/dist/index123.js +2 -2
  72. package/dist/index123.js.map +1 -1
  73. package/dist/index124.js +2 -2
  74. package/dist/index124.js.map +1 -1
  75. package/dist/index125.js +2 -2
  76. package/dist/index125.js.map +1 -1
  77. package/dist/index126.js +1 -1
  78. package/dist/index126.js.map +1 -1
  79. package/dist/index127.js +1 -1
  80. package/dist/index127.js.map +1 -1
  81. package/dist/index128.js +1 -1
  82. package/dist/index128.js.map +1 -1
  83. package/dist/index129.js +1 -1
  84. package/dist/index129.js.map +1 -1
  85. package/dist/index13.js +48 -14
  86. package/dist/index13.js.map +1 -1
  87. package/dist/index130.js +2 -2
  88. package/dist/index130.js.map +1 -1
  89. package/dist/index131.js +2 -2
  90. package/dist/index131.js.map +1 -1
  91. package/dist/index132.js +1 -1
  92. package/dist/index132.js.map +1 -1
  93. package/dist/index133.js +1 -1
  94. package/dist/index133.js.map +1 -1
  95. package/dist/index134.js +2 -2
  96. package/dist/index134.js.map +1 -1
  97. package/dist/index135.js +1 -1
  98. package/dist/index135.js.map +1 -1
  99. package/dist/index136.js +1 -1
  100. package/dist/index136.js.map +1 -1
  101. package/dist/index137.js +1 -1
  102. package/dist/index137.js.map +1 -1
  103. package/dist/index138.js +1 -1
  104. package/dist/index138.js.map +1 -1
  105. package/dist/index139.js +1 -1
  106. package/dist/index139.js.map +1 -1
  107. package/dist/index14.js +15 -9
  108. package/dist/index14.js.map +1 -1
  109. package/dist/index140.js +1 -1
  110. package/dist/index140.js.map +1 -1
  111. package/dist/index141.js +2 -2
  112. package/dist/index141.js.map +1 -1
  113. package/dist/index142.js +1 -1
  114. package/dist/index142.js.map +1 -1
  115. package/dist/index143.js +2 -2
  116. package/dist/index143.js.map +1 -1
  117. package/dist/index144.js +2 -2
  118. package/dist/index144.js.map +1 -1
  119. package/dist/index145.js +1 -1
  120. package/dist/index145.js.map +1 -1
  121. package/dist/index146.js +2 -2
  122. package/dist/index146.js.map +1 -1
  123. package/dist/index147.js +2 -2
  124. package/dist/index147.js.map +1 -1
  125. package/dist/index148.js +1 -1
  126. package/dist/index148.js.map +1 -1
  127. package/dist/index149.js +1 -1
  128. package/dist/index149.js.map +1 -1
  129. package/dist/index15.js +10 -218
  130. package/dist/index15.js.map +1 -1
  131. package/dist/index150.js +2 -2
  132. package/dist/index150.js.map +1 -1
  133. package/dist/index151.js +2 -2
  134. package/dist/index151.js.map +1 -1
  135. package/dist/index152.js +1 -1
  136. package/dist/index152.js.map +1 -1
  137. package/dist/index153.js +2 -2
  138. package/dist/index153.js.map +1 -1
  139. package/dist/index154.js +2 -2
  140. package/dist/index154.js.map +1 -1
  141. package/dist/index155.js +1 -1
  142. package/dist/index155.js.map +1 -1
  143. package/dist/index156.js +1 -1
  144. package/dist/index156.js.map +1 -1
  145. package/dist/index157.js +1 -1
  146. package/dist/index157.js.map +1 -1
  147. package/dist/index158.js +1 -1
  148. package/dist/index158.js.map +1 -1
  149. package/dist/index159.js +1 -1
  150. package/dist/index159.js.map +1 -1
  151. package/dist/index16.js +220 -60
  152. package/dist/index16.js.map +1 -1
  153. package/dist/index160.js +1 -1
  154. package/dist/index160.js.map +1 -1
  155. package/dist/index161.js +1 -1
  156. package/dist/index161.js.map +1 -1
  157. package/dist/index162.js +1 -1
  158. package/dist/index162.js.map +1 -1
  159. package/dist/index163.js +1 -1
  160. package/dist/index163.js.map +1 -1
  161. package/dist/index164.js +1 -1
  162. package/dist/index164.js.map +1 -1
  163. package/dist/index165.js +1 -1
  164. package/dist/index165.js.map +1 -1
  165. package/dist/index166.js +1 -1
  166. package/dist/index166.js.map +1 -1
  167. package/dist/index167.js +1 -1
  168. package/dist/index167.js.map +1 -1
  169. package/dist/index168.js +1 -1
  170. package/dist/index168.js.map +1 -1
  171. package/dist/index169.js +1 -1
  172. package/dist/index169.js.map +1 -1
  173. package/dist/index17.js +60 -99
  174. package/dist/index17.js.map +1 -1
  175. package/dist/index170.js +1 -1
  176. package/dist/index170.js.map +1 -1
  177. package/dist/index171.js +1 -1
  178. package/dist/index171.js.map +1 -1
  179. package/dist/index172.js +1 -1
  180. package/dist/index172.js.map +1 -1
  181. package/dist/index173.js +2 -2
  182. package/dist/index173.js.map +1 -1
  183. package/dist/index174.js +1 -1
  184. package/dist/index174.js.map +1 -1
  185. package/dist/index175.js +1 -1
  186. package/dist/index175.js.map +1 -1
  187. package/dist/index176.js +1 -1
  188. package/dist/index176.js.map +1 -1
  189. package/dist/index177.js +2 -2
  190. package/dist/index177.js.map +1 -1
  191. package/dist/index178.js +1 -1
  192. package/dist/index178.js.map +1 -1
  193. package/dist/index179.js +1 -1
  194. package/dist/index179.js.map +1 -1
  195. package/dist/index18.js +95 -282
  196. package/dist/index18.js.map +1 -1
  197. package/dist/index180.js +2 -2
  198. package/dist/index180.js.map +1 -1
  199. package/dist/index181.js +1 -1
  200. package/dist/index181.js.map +1 -1
  201. package/dist/index182.js +1 -1
  202. package/dist/index182.js.map +1 -1
  203. package/dist/index183.js +1 -1
  204. package/dist/index183.js.map +1 -1
  205. package/dist/index184.js +2 -2
  206. package/dist/index184.js.map +1 -1
  207. package/dist/index185.js +1 -1
  208. package/dist/index185.js.map +1 -1
  209. package/dist/index186.js +1 -1
  210. package/dist/index186.js.map +1 -1
  211. package/dist/index187.js +2 -2
  212. package/dist/index187.js.map +1 -1
  213. package/dist/index188.js +1 -1
  214. package/dist/index188.js.map +1 -1
  215. package/dist/index189.js +2 -2
  216. package/dist/index189.js.map +1 -1
  217. package/dist/index19.js +323 -16
  218. package/dist/index19.js.map +1 -1
  219. package/dist/index190.js +2 -149
  220. package/dist/index190.js.map +1 -1
  221. package/dist/index191.js +2 -9
  222. package/dist/index191.js.map +1 -1
  223. package/dist/index192.js +2 -6
  224. package/dist/index192.js.map +1 -1
  225. package/dist/index193.js +2 -5
  226. package/dist/index193.js.map +1 -1
  227. package/dist/index194.js +2 -40
  228. package/dist/index194.js.map +1 -1
  229. package/dist/index195.js +2 -59
  230. package/dist/index195.js.map +1 -1
  231. package/dist/index196.js +2 -23
  232. package/dist/index196.js.map +1 -1
  233. package/dist/index197.js +152 -0
  234. package/dist/index197.js.map +1 -0
  235. package/dist/index198.js +12 -0
  236. package/dist/index198.js.map +1 -0
  237. package/dist/index199.js +5 -23
  238. package/dist/index199.js.map +1 -1
  239. package/dist/index20.js +15 -31
  240. package/dist/index20.js.map +1 -1
  241. package/dist/index200.js +8 -0
  242. package/dist/index200.js.map +1 -0
  243. package/dist/index201.js +36 -80
  244. package/dist/index201.js.map +1 -1
  245. package/dist/index206.js +26 -0
  246. package/dist/index206.js.map +1 -0
  247. package/dist/index207.js +71 -0
  248. package/dist/index207.js.map +1 -0
  249. package/dist/index21.js +33 -61
  250. package/dist/index21.js.map +1 -1
  251. package/dist/{index210.js → index215.js} +1 -1
  252. package/dist/{index210.js.map → index215.js.map} +1 -1
  253. package/dist/index22.js +57 -76
  254. package/dist/index22.js.map +1 -1
  255. package/dist/{index218.js → index223.js} +1 -1
  256. package/dist/{index218.js.map → index223.js.map} +1 -1
  257. package/dist/{index221.js → index226.js} +2 -2
  258. package/dist/{index221.js.map → index226.js.map} +1 -1
  259. package/dist/index23.js +83 -21
  260. package/dist/index23.js.map +1 -1
  261. package/dist/index235.js +171 -8
  262. package/dist/index235.js.map +1 -1
  263. package/dist/index236.js +3 -9
  264. package/dist/index236.js.map +1 -1
  265. package/dist/index238.js +18 -169
  266. package/dist/index238.js.map +1 -1
  267. package/dist/index239.js +10 -11
  268. package/dist/index239.js.map +1 -1
  269. package/dist/index24.js +20 -222
  270. package/dist/index24.js.map +1 -1
  271. package/dist/index240.js +8 -4
  272. package/dist/index240.js.map +1 -1
  273. package/dist/index241.js +4 -5
  274. package/dist/index241.js.map +1 -1
  275. package/dist/index242.js +168 -36
  276. package/dist/index242.js.map +1 -1
  277. package/dist/index243.js +11 -2
  278. package/dist/index243.js.map +1 -1
  279. package/dist/index244.js +5 -7
  280. package/dist/index244.js.map +1 -1
  281. package/dist/index245.js +5 -326
  282. package/dist/index245.js.map +1 -1
  283. package/dist/index246.js +36 -48
  284. package/dist/index246.js.map +1 -1
  285. package/dist/index247.js +2 -2
  286. package/dist/index248.js +7 -75
  287. package/dist/index248.js.map +1 -1
  288. package/dist/index249.js +308 -74
  289. package/dist/index249.js.map +1 -1
  290. package/dist/index25.js +299 -43
  291. package/dist/index25.js.map +1 -1
  292. package/dist/index250.js +45 -47
  293. package/dist/index250.js.map +1 -1
  294. package/dist/index251.js +2 -8
  295. package/dist/index251.js.map +1 -1
  296. package/dist/index252.js +75 -4
  297. package/dist/index252.js.map +1 -1
  298. package/dist/index253.js +89 -48
  299. package/dist/index253.js.map +1 -1
  300. package/dist/index254.js +52 -2
  301. package/dist/index254.js.map +1 -1
  302. package/dist/index255.js +8 -2
  303. package/dist/index255.js.map +1 -1
  304. package/dist/index256.js +8 -0
  305. package/dist/index256.js.map +1 -0
  306. package/dist/index257.js +55 -0
  307. package/dist/index257.js.map +1 -0
  308. package/dist/index258.js +5 -0
  309. package/dist/index258.js.map +1 -0
  310. package/dist/index259.js +5 -0
  311. package/dist/index259.js.map +1 -0
  312. package/dist/index26.js +48 -23
  313. package/dist/index26.js.map +1 -1
  314. package/dist/index27.js +21 -81
  315. package/dist/index27.js.map +1 -1
  316. package/dist/index28.js +101 -138
  317. package/dist/index28.js.map +1 -1
  318. package/dist/index29.js +139 -128
  319. package/dist/index29.js.map +1 -1
  320. package/dist/index3.js +57 -98
  321. package/dist/index3.js.map +1 -1
  322. package/dist/index30.js +133 -69
  323. package/dist/index30.js.map +1 -1
  324. package/dist/index31.js +67 -96
  325. package/dist/index31.js.map +1 -1
  326. package/dist/index32.js +96 -71
  327. package/dist/index32.js.map +1 -1
  328. package/dist/index33.js +70 -38
  329. package/dist/index33.js.map +1 -1
  330. package/dist/index34.js +40 -71
  331. package/dist/index34.js.map +1 -1
  332. package/dist/index35.js +67 -82
  333. package/dist/index35.js.map +1 -1
  334. package/dist/index36.js +99 -54
  335. package/dist/index36.js.map +1 -1
  336. package/dist/index37.js +53 -280
  337. package/dist/index37.js.map +1 -1
  338. package/dist/index38.js +283 -70
  339. package/dist/index38.js.map +1 -1
  340. package/dist/index39.js +69 -80
  341. package/dist/index39.js.map +1 -1
  342. package/dist/index4.js +102 -42
  343. package/dist/index4.js.map +1 -1
  344. package/dist/index40.js +82 -32
  345. package/dist/index40.js.map +1 -1
  346. package/dist/index41.js +26 -44
  347. package/dist/index41.js.map +1 -1
  348. package/dist/index42.js +45 -67
  349. package/dist/index42.js.map +1 -1
  350. package/dist/index43.js +65 -49
  351. package/dist/index43.js.map +1 -1
  352. package/dist/index44.js +53 -139
  353. package/dist/index44.js.map +1 -1
  354. package/dist/index45.js +132 -179
  355. package/dist/index45.js.map +1 -1
  356. package/dist/index46.js +194 -35
  357. package/dist/index46.js.map +1 -1
  358. package/dist/index47.js +34 -29
  359. package/dist/index47.js.map +1 -1
  360. package/dist/index48.js +31 -145
  361. package/dist/index48.js.map +1 -1
  362. package/dist/index49.js +131 -70
  363. package/dist/index49.js.map +1 -1
  364. package/dist/index5.js +40 -315
  365. package/dist/index5.js.map +1 -1
  366. package/dist/index50.js +80 -371
  367. package/dist/index50.js.map +1 -1
  368. package/dist/index51.js +451 -91
  369. package/dist/index51.js.map +1 -1
  370. package/dist/index52.js +98 -38
  371. package/dist/index52.js.map +1 -1
  372. package/dist/index53.js +35 -35
  373. package/dist/index53.js.map +1 -1
  374. package/dist/index54.js +35 -90
  375. package/dist/index54.js.map +1 -1
  376. package/dist/index55.js +89 -159
  377. package/dist/index55.js.map +1 -1
  378. package/dist/index56.js +157 -143
  379. package/dist/index56.js.map +1 -1
  380. package/dist/index57.js +149 -33
  381. package/dist/index57.js.map +1 -1
  382. package/dist/index58.js +33 -86
  383. package/dist/index58.js.map +1 -1
  384. package/dist/index59.js +80 -113
  385. package/dist/index59.js.map +1 -1
  386. package/dist/index6.js +323 -43
  387. package/dist/index6.js.map +1 -1
  388. package/dist/index60.js +114 -62
  389. package/dist/index60.js.map +1 -1
  390. package/dist/index61.js +62 -147
  391. package/dist/index61.js.map +1 -1
  392. package/dist/index62.js +146 -312
  393. package/dist/index62.js.map +1 -1
  394. package/dist/index63.js +317 -44
  395. package/dist/index63.js.map +1 -1
  396. package/dist/index64.js +44 -143
  397. package/dist/index64.js.map +1 -1
  398. package/dist/index65.js +145 -12
  399. package/dist/index65.js.map +1 -1
  400. package/dist/index66.js +10 -44
  401. package/dist/index66.js.map +1 -1
  402. package/dist/index67.js +42 -15
  403. package/dist/index67.js.map +1 -1
  404. package/dist/index68.js +76 -48
  405. package/dist/index68.js.map +1 -1
  406. package/dist/index69.js +18 -58
  407. package/dist/index69.js.map +1 -1
  408. package/dist/index7.js +44 -51
  409. package/dist/index7.js.map +1 -1
  410. package/dist/index70.js +66 -5
  411. package/dist/index70.js.map +1 -1
  412. package/dist/index71.js +25 -7
  413. package/dist/index71.js.map +1 -1
  414. package/dist/index72.js +105 -0
  415. package/dist/index72.js.map +1 -0
  416. package/dist/index73.js +62 -2
  417. package/dist/index73.js.map +1 -1
  418. package/dist/index74.js +21 -2
  419. package/dist/index74.js.map +1 -1
  420. package/dist/index75.js +5 -2
  421. package/dist/index75.js.map +1 -1
  422. package/dist/index76.js +54 -2
  423. package/dist/index76.js.map +1 -1
  424. package/dist/index77.js +24 -2
  425. package/dist/index77.js.map +1 -1
  426. package/dist/index78.js +9 -2
  427. package/dist/index78.js.map +1 -1
  428. package/dist/index8.js +48 -85
  429. package/dist/index8.js.map +1 -1
  430. package/dist/index80.js +2 -2
  431. package/dist/index80.js.map +1 -1
  432. package/dist/index81.js +2 -2
  433. package/dist/index81.js.map +1 -1
  434. package/dist/index82.js +1 -1
  435. package/dist/index82.js.map +1 -1
  436. package/dist/index83.js +2 -2
  437. package/dist/index83.js.map +1 -1
  438. package/dist/index84.js +1 -1
  439. package/dist/index84.js.map +1 -1
  440. package/dist/index85.js +1 -1
  441. package/dist/index85.js.map +1 -1
  442. package/dist/index86.js +1 -1
  443. package/dist/index86.js.map +1 -1
  444. package/dist/index87.js +1 -1
  445. package/dist/index87.js.map +1 -1
  446. package/dist/index88.js +1 -1
  447. package/dist/index88.js.map +1 -1
  448. package/dist/index89.js +1 -1
  449. package/dist/index89.js.map +1 -1
  450. package/dist/index9.js +91 -27
  451. package/dist/index9.js.map +1 -1
  452. package/dist/index90.js +1 -1
  453. package/dist/index90.js.map +1 -1
  454. package/dist/index91.js +1 -1
  455. package/dist/index91.js.map +1 -1
  456. package/dist/index92.js +1 -1
  457. package/dist/index92.js.map +1 -1
  458. package/dist/index93.js +1 -1
  459. package/dist/index93.js.map +1 -1
  460. package/dist/index94.js +1 -1
  461. package/dist/index94.js.map +1 -1
  462. package/dist/index95.js +1 -1
  463. package/dist/index95.js.map +1 -1
  464. package/dist/index96.js +1 -1
  465. package/dist/index96.js.map +1 -1
  466. package/dist/index97.js +1 -1
  467. package/dist/index97.js.map +1 -1
  468. package/dist/index98.js +1 -1
  469. package/dist/index98.js.map +1 -1
  470. package/dist/index99.js +1 -1
  471. package/dist/index99.js.map +1 -1
  472. package/package.json +1 -1
  473. package/dist/index230.js +0 -7
  474. package/dist/index230.js.map +0 -1
  475. package/dist/index232.js +0 -25
  476. package/dist/index232.js.map +0 -1
  477. package/dist/index233.js +0 -57
  478. package/dist/index233.js.map +0 -1
  479. package/dist/index234.js +0 -22
  480. package/dist/index234.js.map +0 -1
  481. package/dist/index237.js +0 -8
  482. package/dist/index237.js.map +0 -1
  483. package/dist/index79.js +0 -5
  484. package/dist/index79.js.map +0 -1
package/dist/index62.js CHANGED
@@ -1,321 +1,155 @@
1
- import F, { useState as ot, useRef as X, useEffect as $ } from "react";
2
- import { createPortal as nt } from "react-dom";
3
- import { Icon as it } from "./index5.js";
4
- import { Button as rt } from "./index3.js";
5
- import { debounce as lt } from "./index210.js";
6
- const q = 500, S = 50, U = 150, st = {
7
- "top-left": {
8
- rotate: "315",
9
- class: "-top-5 left-0"
10
- },
11
- "top-right": {
12
- rotate: "45",
13
- class: "-top-5 right-0"
14
- },
15
- "bottom-left": {
16
- rotate: "225",
17
- class: "-bottom-5 left-0"
18
- },
19
- "bottom-right": {
20
- rotate: "135",
21
- class: "-bottom-5 right-0"
22
- }
23
- }, V = (s) => {
24
- const d = document.querySelector(s);
25
- if (!d)
26
- return console.warn(`Iframe not found: ${s}`), null;
27
- try {
28
- return d.contentDocument || d.contentWindow?.document || null;
29
- } catch (u) {
30
- return console.error("Cannot access iframe document:", u), null;
31
- }
32
- }, C = (s, d) => {
33
- if (!d)
34
- return document.querySelector(s);
35
- const u = V(d);
36
- return u ? u.querySelector(s) : null;
37
- }, j = (s, d) => {
38
- const u = s.getBoundingClientRect();
39
- if (!d)
40
- return u;
41
- const h = document.querySelector(d);
42
- if (!h)
43
- return u;
44
- const E = h.getBoundingClientRect(), x = h.clientLeft || 0, y = h.clientTop || 0;
45
- return new DOMRect(u.left + E.left + x, u.top + E.top + y, u.width, u.height);
46
- }, ct = (s) => {
47
- switch (s) {
48
- case "left-bottom":
49
- case "left-center":
50
- case "bottom-left":
51
- return "top-right";
52
- case "right-bottom":
53
- case "right-center":
54
- case "bottom-right":
55
- case "bottom-center":
56
- return "top-left";
57
- case "top-left":
58
- case "left-top":
59
- return "bottom-right";
60
- case "top-right":
61
- case "top-center":
62
- case "right-top":
63
- return "bottom-left";
64
- default:
65
- return "top-left";
66
- }
67
- }, z = () => ({
68
- x: window.scrollX || window.pageXOffset,
69
- y: window.scrollY || window.pageYOffset
70
- }), at = (s, d, u) => {
71
- let h;
72
- const E = () => {
73
- const x = C(s, u);
74
- x ? d(x) : h = requestAnimationFrame(E);
75
- };
76
- return h = requestAnimationFrame(E), () => {
77
- h && cancelAnimationFrame(h);
78
- };
79
- }, pt = ({
80
- steps: s,
81
- screenBaseElementSelector: d,
82
- onClose: u,
83
- tooltipBackgroundColor: h = "#E04E05",
84
- tooltipTextColor: E = "var(--color-white)",
85
- maxWidth: x = 350
1
+ import o, { useState as B, useRef as C, useCallback as m, useEffect as w } from "react";
2
+ import { Button as L } from "./index4.js";
3
+ import { Tooltip as D } from "./index16.js";
4
+ /* empty css */
5
+ const u = {
6
+ gotIt: "got_it",
7
+ finish: "finish",
8
+ next: "next",
9
+ back: "back"
10
+ }, Q = ({
11
+ steps: e = [],
12
+ screenBaseElementSelector: T = "",
13
+ handleCloseProductTour: d,
14
+ tourType: g = "",
15
+ automationId: f = "onboarding-tour",
16
+ highlightBorderRadius: E = 6,
17
+ labels: A
86
18
  }) => {
87
- const [y, W] = ot(0), g = X(null), M = X(null), Y = () => {
88
- y < s.length - 1 ? W(y + 1) : u?.();
89
- }, H = () => {
90
- Y();
91
- };
92
- if ($(() => {
93
- const r = s[y], c = (b) => {
94
- const v = b.target, w = C(r?.targetElementSelector, r?.iframeSelector), T = M.current;
95
- if (!(T && T.contains(v)) && w && !w.contains(v)) {
96
- if (r?.isDropdownStep) {
97
- Y();
98
- return;
99
- }
100
- const P = s[s.length - 1], A = C(P.targetElementSelector, P.iframeSelector);
101
- A && A.contains(v) && u();
102
- }
103
- }, m = setTimeout(() => {
104
- document.body.addEventListener("mousedown", c, !0);
105
- }, q + U);
106
- return () => {
107
- clearTimeout(m), document.body.removeEventListener("mousedown", c, !0);
19
+ const [t, k] = B(0), c = C(null), l = C(null), {
20
+ next: H = "Next",
21
+ gotIt: P = "Got It",
22
+ finish: M = "Finish",
23
+ skip: W = "Skip tour",
24
+ stepInfo: O = "Step {step} of {total}"
25
+ } = A || {}, s = document.querySelector(T), y = m(() => {
26
+ let n;
27
+ if (t >= e.length)
28
+ return n;
29
+ const i = document.querySelector(e[t]?.targetElementContainerSelector ? e[t].targetElementContainerSelector : e[t]?.targetElementSelector);
30
+ if (!i)
31
+ return n;
32
+ const r = i.getBoundingClientRect();
33
+ return r.top >= 0 && r.left >= 0 && r.bottom <= window.innerHeight && r.right <= window.innerWidth || (r.top < 0 ? i.scrollIntoView({
34
+ behavior: "auto",
35
+ block: "start"
36
+ }) : r.bottom > window.innerHeight && i.scrollIntoView({
37
+ behavior: "auto",
38
+ block: "end"
39
+ })), n = setTimeout(() => {
40
+ const x = document.querySelector(e[t]?.targetElementSelector);
41
+ if (!x || !c.current || !l.current)
42
+ return;
43
+ const a = x.getBoundingClientRect(), p = Math.max(document.documentElement.scrollHeight, document.body.scrollHeight);
44
+ c.current.style.height = `${p}px`;
45
+ const h = e[t]?.targetElementGap || {
46
+ horizontal: 0,
47
+ vertical: 0
48
+ }, S = E * 2, I = a.left - h.horizontal, N = a.top + window.scrollY - h.vertical, z = a.right + h.horizontal, F = a.bottom + window.scrollY + h.vertical, G = z - I, q = F - N, R = Math.max(document.documentElement.scrollWidth, document.body.scrollWidth), _ = encodeURIComponent(`
49
+ <svg width="${R}" height="${p}" xmlns="http://www.w3.org/2000/svg">
50
+ <defs>
51
+ <mask id="highlight-mask-${t}">
52
+ <rect x="0" y="0" width="${R}" height="${p}" fill="white"/>
53
+ <rect x="${I}" y="${N}" width="${G}" height="${q}" rx="${S}" ry="${S}" fill="black"/>
54
+ </mask>
55
+ </defs>
56
+ </svg>
57
+ `);
58
+ c.current.style.maskImage = `url("data:image/svg+xml,${_}#highlight-mask-${t}")`, c.current.style.webkitMaskImage = `url("data:image/svg+xml,${_}#highlight-mask-${t}")`, l.current.style.top = `${a.top}px`, l.current.style.left = `${a.left}px`, l.current.style.width = `${a.width}px`, l.current.style.height = `${a.height}px`, l.current.style.borderRadius = `${E}px`;
59
+ }, 50), n;
60
+ }, [t, e]), V = m(() => {
61
+ d(), s && s.scrollTo({
62
+ top: 0,
63
+ behavior: "smooth"
64
+ });
65
+ }, [d, s]), v = m((n) => {
66
+ n?.preventDefault(), n?.stopPropagation(), t < e.length - 1 ? k((i) => i + 1) : (d(n), s && s.scrollTo({
67
+ top: 0,
68
+ behavior: "smooth"
69
+ })), e[t]?.tourMixPanelHandler?.({
70
+ user_path: g,
71
+ action_type: `clicked_${t === e.length - 1 ? e.length === 1 ? u.gotIt : u.finish : u.next}`
72
+ });
73
+ }, [t, e, d, g, s]), $ = m(() => {
74
+ t > 0 && k((n) => n - 1), e[t]?.tourMixPanelHandler?.({
75
+ user_path: g,
76
+ action_type: `clicked_${u.back}`
77
+ });
78
+ }, [t, e, g]), b = m((n) => {
79
+ (n.keyCode === 37 || n.key === "ArrowLeft") && t > 0 && $(), (n.keyCode === 39 || n.key === "ArrowRight") && v();
80
+ }, [t, v, $]);
81
+ return w(() => (window.addEventListener("keydown", b), () => {
82
+ window.removeEventListener("keydown", b);
83
+ }), [b]), w(() => {
84
+ let n;
85
+ return t < e.length && (n = y()), () => {
86
+ n && clearTimeout(n);
108
87
  };
109
- }, [y, s, u]), $(() => {
110
- W(0), g.current = null;
111
- const r = M.current;
112
- r && (r.style.maxWidth = `${x}px`, r.style.backgroundColor = h, r.style.color = E);
113
- }, [x, h, E]), $(() => {
114
- const r = s[y];
115
- if (!r?.targetElementSelector) {
116
- u?.();
117
- return;
118
- }
119
- const c = d ? document.querySelector(d) : null, m = M.current;
120
- if (!m) return;
121
- let b = null, v = null, w = null;
122
- const T = !!(c && c.scrollHeight > c.clientHeight), P = {
123
- height: c?.clientHeight || window.innerHeight,
124
- width: c?.clientWidth || window.innerWidth
125
- }, A = (D) => {
126
- b = D, b.addEventListener("click", H);
127
- const I = (t, o, f, e) => {
128
- const p = r.tooltipPosition || "bottom-center", n = r.tooltipPositionOffset?.vertical || 0, i = r.tooltipPositionOffset?.horizontal || 0;
129
- let l = 0, a = 0;
130
- switch (p) {
131
- case "bottom-center":
132
- l = t.bottom + e.y + n, a = t.left + e.x + t.width / 2 + i;
133
- break;
134
- case "bottom-left":
135
- l = t.bottom + e.y + n, a = t.left + e.x - o + i;
136
- break;
137
- case "bottom-right":
138
- l = t.bottom + e.y + n, a = t.right + e.x + i;
139
- break;
140
- case "top-center":
141
- l = t.top - f + e.y + n, a = t.left + e.x + t.width / 2 + i;
142
- break;
143
- case "top-left":
144
- l = t.top - f + e.y + n, a = t.left + e.x - o + i;
145
- break;
146
- case "top-right":
147
- l = t.top - f + e.y + n, a = t.right + e.x + i;
148
- break;
149
- case "left-top":
150
- l = t.top - f + e.y + n, a = t.left + e.x - o + i;
151
- break;
152
- case "left-center":
153
- l = t.top + e.y + t.height / 2 + n, a = t.left + e.x - o + i;
154
- break;
155
- case "left-bottom":
156
- l = t.bottom + e.y + n, a = t.left + e.x - o + i;
157
- break;
158
- case "right-top":
159
- l = t.top - f + e.y + n, a = t.right + e.x + i;
160
- break;
161
- case "right-center":
162
- l = t.top + e.y + t.height / 2 + n, a = t.right + e.x + i;
163
- break;
164
- case "right-bottom":
165
- l = t.bottom + e.y + n, a = t.right + e.x + i;
166
- break;
167
- default:
168
- l = t.bottom + e.y + n, a = t.left + e.x + t.width / 2 + i;
169
- break;
170
- }
171
- return {
172
- top: l,
173
- left: a
174
- };
175
- }, N = (t, o) => {
176
- m.style.position = "absolute";
177
- const f = () => {
178
- m.style.top = `${t.top}px`, m.style.left = `${t.left}px`;
179
- };
180
- o && g.current ? (m.style.transition = `top ${q}ms ease-in-out, left ${q}ms ease-in-out`, f(), g.current = t) : (f(), g.current = t);
181
- }, B = () => {
182
- if (!m || !b) return;
183
- const t = {
184
- width: m.offsetWidth || 0,
185
- height: m.offsetHeight || 0
186
- };
187
- if (t.width === 0 && t.height === 0) {
188
- requestAnimationFrame(B);
189
- return;
190
- }
191
- const o = j(b, r.iframeSelector), f = z(), e = I(o, t.width, t.height, f), p = g.current !== null;
192
- N(e, p);
88
+ }, [t, e, y]), w(() => {
89
+ if (t < e.length && c.current) {
90
+ const n = c.current, i = (r) => {
91
+ r.preventDefault(), r.stopPropagation();
193
92
  };
194
- w = lt(() => {
195
- if (!b || !m) return;
196
- const t = {
197
- top: parseFloat(m.style.top) || 0,
198
- left: parseFloat(m.style.left) || 0
199
- };
200
- !g.current && (t.top !== 0 || t.left !== 0) && (g.current = t), B(), g.current && setTimeout(() => {
201
- const o = {
202
- top: parseFloat(m.style.top) || 0,
203
- left: parseFloat(m.style.left) || 0
204
- };
205
- (o.top !== 0 || o.left !== 0) && (g.current = o);
206
- }, q);
207
- }, U);
208
- const K = (t, o, f, e, p) => {
209
- const n = {
210
- top: Math.min(t.top, o),
211
- bottom: Math.max(t.bottom, o + p),
212
- left: Math.min(t.left, f),
213
- right: Math.max(t.right, f + e)
214
- };
215
- if (c) {
216
- const i = c.getBoundingClientRect();
217
- return n.top >= i.top + S && n.bottom <= i.top + i.height - S && n.left >= i.left + S && n.right <= i.left + i.width - S && t.width > 0 && t.height > 0;
218
- }
219
- return n.top >= S && n.bottom <= P.height - S && n.left >= S && n.right <= P.width - S && t.width > 0 && t.height > 0;
220
- }, Q = (t, o, f) => {
221
- const e = Math.min(t.top, o), p = Math.max(t.bottom, o + f), n = p - e, i = !!(c && T), l = i ? c.getBoundingClientRect() : null, a = i ? l.height : window.innerHeight, O = i ? c.scrollTop : z().y, R = i ? c.scrollHeight - c.clientHeight : document.documentElement.scrollHeight - window.innerHeight, tt = a - 2 * S;
222
- let _;
223
- if (n > tt) {
224
- const L = (t.top + t.bottom) / 2;
225
- _ = i ? L - l.top + O : L + O;
226
- } else {
227
- const L = (e + p) / 2;
228
- _ = i ? L - l.top + O : L + O;
229
- }
230
- const et = _ - a / 2;
231
- return Math.max(0, Math.min(et, R));
232
- }, Z = () => {
233
- if (!m || !b) return;
234
- const t = () => {
235
- if (!m || !b) return;
236
- const o = {
237
- width: m.offsetWidth || 0,
238
- height: m.offsetHeight || 0
239
- };
240
- if (o.width === 0 && o.height === 0) {
241
- requestAnimationFrame(t);
242
- return;
243
- }
244
- const f = j(b, r.iframeSelector), e = z(), p = I(f, o.width, o.height, e), n = {
245
- top: p.top - e.y,
246
- left: p.left - e.x
247
- };
248
- if (K(f, n.top, n.left, o.width, o.height)) {
249
- const l = g.current !== null;
250
- N(p, l);
251
- } else {
252
- const l = Q(f, n.top, o.height);
253
- if (l !== null)
254
- (T && c ? c : window).scrollTo({
255
- top: l,
256
- behavior: "auto"
257
- }), requestAnimationFrame(() => B());
258
- else {
259
- const a = g.current !== null;
260
- N(p, a);
261
- }
262
- }
263
- };
264
- t();
93
+ return n.addEventListener("wheel", i, {
94
+ passive: !1
95
+ }), n.addEventListener("touchmove", i, {
96
+ passive: !1
97
+ }), n.addEventListener("scroll", i, {
98
+ passive: !1
99
+ }), () => {
100
+ n.removeEventListener("wheel", i), n.removeEventListener("touchmove", i), n.removeEventListener("scroll", i);
265
101
  };
266
- if (window.addEventListener("scroll", w, {
267
- passive: !0
268
- }), T && c && c.addEventListener("scroll", w, {
269
- passive: !0
270
- }), r.iframeSelector) {
271
- const o = V(r.iframeSelector)?.defaultView;
272
- o && o.addEventListener("scroll", w, {
273
- passive: !0
274
- });
275
- }
276
- Z();
277
- };
278
- if (r.waitForElement)
279
- v = at(r.targetElementSelector, A, r.iframeSelector);
280
- else {
281
- const D = C(r.targetElementSelector, r.iframeSelector);
282
- if (!D) return;
283
- A(D);
284
- }
285
- return () => {
286
- if (v && v(), b && b.removeEventListener("click", H), w) {
287
- if (window.removeEventListener("scroll", w), T && c && c.removeEventListener("scroll", w), r.iframeSelector) {
288
- const I = V(r.iframeSelector)?.defaultView;
289
- I && I.removeEventListener("scroll", w);
290
- }
291
- w.cancel();
292
- }
293
- };
294
- }, [y, s, u, d, x]), y >= s.length)
295
- return null;
296
- const k = s[y], J = ct(k?.tooltipPosition), G = st[J];
297
- return /* @__PURE__ */ nt(/* @__PURE__ */ F.createElement("div", {
298
- ref: M,
299
- className: "guided-tour-tooltip relative rounded-md p-1",
300
- "data-automation-id": `${k?.automationId || "guided-tour"}-tooltip`,
301
- style: {
302
- zIndex: k?.zIndex || 1300
303
102
  }
304
- }, /* @__PURE__ */ F.createElement(it, {
305
- name: "arrow-head",
306
- fill: h,
307
- rotation: G.rotate,
308
- className: `guided-tour-tooltip-arrow absolute ${G.class}`
309
- }), /* @__PURE__ */ F.createElement("div", {
310
- className: "guided-tour-tooltip-content flex flex-col gap-2"
311
- }, /* @__PURE__ */ F.createElement("p", null, k?.content), k?.isOptionalStep && /* @__PURE__ */ F.createElement(rt, {
312
- type: "link",
313
- label: "Got it",
314
- className: "!text-white !underline",
315
- onClick: H
316
- }))), document.body);
103
+ }, [t]), !e || e.length === 0 ? null : /* @__PURE__ */ o.createElement(o.Fragment, null, /* @__PURE__ */ o.createElement("div", {
104
+ className: "se-design-onboarding-tour-overlay",
105
+ ref: c,
106
+ "data-automation-id": `${f}-overlay`
107
+ }), /* @__PURE__ */ o.createElement(D, {
108
+ content: /* @__PURE__ */ o.createElement("div", {
109
+ className: "se-design-onboarding-tour-tooltip-content"
110
+ }, e[t]?.content?.illustration && /* @__PURE__ */ o.createElement("img", {
111
+ src: e[t].content.illustration,
112
+ className: "se-design-onboarding-tour-illustration",
113
+ alt: "illustration"
114
+ }), /* @__PURE__ */ o.createElement("div", {
115
+ className: "se-design-onboarding-tour-content"
116
+ }, e[t]?.content?.title && /* @__PURE__ */ o.createElement("p", {
117
+ className: "se-design-onboarding-tour-title"
118
+ }, e[t].content.title), e[t]?.content?.description && /* @__PURE__ */ o.createElement("p", {
119
+ className: "se-design-onboarding-tour-description"
120
+ }, e[t].content.description)), /* @__PURE__ */ o.createElement("div", {
121
+ className: "se-design-onboarding-tour-actions"
122
+ }, e.length > 1 && /* @__PURE__ */ o.createElement("span", {
123
+ className: "steps"
124
+ }, O.replace("{step}", `${t + 1}`).replace("{total}", `${e.length}`)), /* @__PURE__ */ o.createElement("div", {
125
+ className: "btns-container"
126
+ }, t !== e.length - 1 && /* @__PURE__ */ o.createElement(L, {
127
+ theme: "white",
128
+ type: "link",
129
+ label: W,
130
+ automationId: `${f}-skip-button`,
131
+ onClick: V
132
+ }), /* @__PURE__ */ o.createElement(L, {
133
+ theme: "white",
134
+ type: "primary",
135
+ size: "sm",
136
+ label: t === e.length - 1 ? e.length === 1 ? P : M : H,
137
+ automationId: `${f}-next-button`,
138
+ onClick: v
139
+ })))),
140
+ tooltipSrc: /* @__PURE__ */ o.createElement("div", {
141
+ className: "blocker",
142
+ ref: l
143
+ }),
144
+ tooltipSrcRef: l,
145
+ position: e[t]?.tooltipPosition || "bottom-center",
146
+ tooltipOffset: 16,
147
+ displayOn: "always-on",
148
+ isWithPortal: !0,
149
+ maxWidth: 384
150
+ }));
317
151
  };
318
152
  export {
319
- pt as GuidedTour
153
+ Q as OnboardingTour
320
154
  };
321
155
  //# sourceMappingURL=index62.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"index62.js","sources":["../src/components/GuidedTour/index.tsx"],"sourcesContent":["import React, { FC, useEffect, useRef, useState } from 'react';\nimport { createPortal } from 'react-dom';\nimport { Icon, RotationTypes } from '../Icon';\nimport { Button } from '../Button';\nimport { debounce } from 'src/utils/debounce';\n\n// Constants\nconst ANIMATION_DURATION_MS = 500;\nconst VIEWPORT_MARGIN_PX = 50;\nconst SCROLL_DEBOUNCE_MS = 150;\n\nconst ARROW_STYLES = {\n 'top-left': { rotate: '315', class: '-top-5 left-0' },\n 'top-right': { rotate: '45', class: '-top-5 right-0' },\n 'bottom-left': { rotate: '225', class: '-bottom-5 left-0' },\n 'bottom-right': { rotate: '135', class: '-bottom-5 right-0' }\n};\n\nexport type TooltipArrowPosition = 'top-left' | 'top-right' | 'bottom-left' | 'bottom-right';\n\nexport interface GuidedTourStep {\n targetElementSelector: string;\n iframeSelector?: string;\n content: string;\n tooltipPosition?:\n | 'top-left'\n | 'top-right'\n | 'top-center'\n | 'bottom-left'\n | 'bottom-right'\n | 'bottom-center'\n | 'left-top'\n | 'left-center'\n | 'left-bottom'\n | 'right-top'\n | 'right-center'\n | 'right-bottom';\n tooltipPositionOffset?: {\n horizontal?: number;\n vertical?: number;\n };\n isOptionalStep?: boolean;\n automationId?: string;\n waitForElement?: boolean;\n zIndex?: number;\n isDropdownStep?: boolean;\n}\n\nexport interface GuidedTourProps {\n steps: GuidedTourStep[];\n screenBaseElementSelector?: string;\n onClose: () => void;\n tooltipBackgroundColor?: string;\n tooltipTextColor?: string;\n maxWidth?: number;\n automationId?: string;\n}\n\ninterface TooltipPosition {\n top: number;\n left: number;\n}\n\n// Helper to get the iframe's content document\nconst getIframeDocument = (iframeSelector: string): Document | null => {\n const iframe = document.querySelector(iframeSelector) as HTMLIFrameElement;\n if (!iframe) {\n console.warn(`Iframe not found: ${iframeSelector}`);\n return null;\n }\n\n try {\n return iframe.contentDocument || iframe.contentWindow?.document || null;\n } catch (error) {\n console.error('Cannot access iframe document:', error);\n return null;\n }\n};\n\n// Helper to get target element from main document or iframe\nconst getTargetElement = (selector: string, iframeSelector?: string): HTMLElement | null => {\n if (!iframeSelector) {\n return document.querySelector(selector);\n }\n\n const iframeDoc = getIframeDocument(iframeSelector);\n return iframeDoc ? iframeDoc.querySelector(selector) : null;\n};\n\n// Helper to get adjusted bounding rect accounting for iframe position\nconst getAdjustedBoundingRect = (element: HTMLElement, iframeSelector?: string): DOMRect => {\n const rect = element.getBoundingClientRect();\n\n if (!iframeSelector) {\n return rect;\n }\n\n const iframe = document.querySelector(iframeSelector) as HTMLIFrameElement;\n if (!iframe) {\n return rect;\n }\n\n const iframeRect = iframe.getBoundingClientRect();\n\n // Get iframe's computed styles to account for borders\n const borderLeft = iframe.clientLeft || 0;\n const borderTop = iframe.clientTop || 0;\n\n // Adjust coordinates relative to the main document\n return new DOMRect(\n rect.left + iframeRect.left + borderLeft,\n rect.top + iframeRect.top + borderTop,\n rect.width,\n rect.height\n );\n};\n\n// Determines the arrow position based on the tooltip position\nconst getArrowPosition = (position?: GuidedTourStep['tooltipPosition']): TooltipArrowPosition => {\n switch (position) {\n case 'left-bottom':\n case 'left-center':\n case 'bottom-left':\n return 'top-right';\n case 'right-bottom':\n case 'right-center':\n case 'bottom-right':\n case 'bottom-center':\n return 'top-left';\n case 'top-left':\n case 'left-top':\n return 'bottom-right';\n case 'top-right':\n case 'top-center':\n case 'right-top':\n return 'bottom-left';\n default:\n return 'top-left';\n }\n};\n\n// Gets current scroll position for window or container\nconst getScrollPosition = (): { x: number; y: number } => ({\n x: window.scrollX || window.pageXOffset,\n y: window.scrollY || window.pageYOffset\n});\n\n// Helper to wait for an element to appear using requestAnimationFrame\nconst waitForElement = (\n selector: string,\n callback: (element: HTMLElement) => void,\n iframeSelector?: string\n): (() => void) => {\n let rafId: number;\n\n const checkElement = () => {\n const element = getTargetElement(selector, iframeSelector);\n if (element) {\n callback(element);\n } else {\n rafId = requestAnimationFrame(checkElement);\n }\n };\n\n rafId = requestAnimationFrame(checkElement);\n\n // Return cleanup function\n return () => {\n if (rafId) {\n cancelAnimationFrame(rafId);\n }\n };\n};\n\nexport const GuidedTour: FC<GuidedTourProps> = ({\n steps,\n screenBaseElementSelector,\n onClose,\n tooltipBackgroundColor = '#E04E05',\n tooltipTextColor = 'var(--color-white)',\n maxWidth = 350\n}) => {\n const [currentStepIndex, setCurrentStepIndex] = useState<number>(0);\n const previousTooltipPositionRef = useRef<TooltipPosition | null>(null);\n const tooltipRef = useRef<HTMLDivElement>(null);\n\n // To handle navigation to the next step\n const navigateToNextStep = () => {\n if (currentStepIndex < steps.length - 1) {\n setCurrentStepIndex(currentStepIndex + 1);\n } else {\n onClose?.();\n }\n };\n\n const handleTargetElementClick = () => {\n navigateToNextStep();\n };\n\n // To handle clicks outside current target\n useEffect(() => {\n const currentStep = steps[currentStepIndex];\n\n const handleBodyClick = (event: MouseEvent) => {\n const target = event.target as Node;\n const currentTargetElement = getTargetElement(currentStep?.targetElementSelector, currentStep?.iframeSelector);\n const tooltipElement = tooltipRef.current;\n\n // Ignore clicks on the tooltip itself\n if (tooltipElement && tooltipElement.contains(target)) {\n return;\n }\n\n // Check if click is outside current target element\n if (currentTargetElement && !currentTargetElement.contains(target)) {\n // If dropdown step, go to next step on any outside click\n if (currentStep?.isDropdownStep) {\n navigateToNextStep();\n return;\n }\n\n // Otherwise, check if click is on last step's target to close tour\n const lastStep = steps[steps.length - 1];\n const lastStepTargetElement = getTargetElement(lastStep.targetElementSelector, lastStep.iframeSelector);\n\n if (lastStepTargetElement && lastStepTargetElement.contains(target)) {\n onClose();\n }\n }\n };\n\n // Wait for tooltip positioning animation to complete before listening\n const timeoutId = setTimeout(() => {\n document.body.addEventListener('mousedown', handleBodyClick, true);\n }, ANIMATION_DURATION_MS + SCROLL_DEBOUNCE_MS);\n\n return () => {\n clearTimeout(timeoutId);\n document.body.removeEventListener('mousedown', handleBodyClick, true);\n };\n }, [currentStepIndex, steps, onClose]);\n\n // Initialize tooltip styles\n useEffect(() => {\n setCurrentStepIndex(0);\n previousTooltipPositionRef.current = null;\n\n const tooltipElement = tooltipRef.current;\n if (tooltipElement) {\n tooltipElement.style.maxWidth = `${maxWidth}px`;\n tooltipElement.style.backgroundColor = tooltipBackgroundColor;\n tooltipElement.style.color = tooltipTextColor;\n }\n }, [maxWidth, tooltipBackgroundColor, tooltipTextColor]);\n\n // To position and manage the current step\n useEffect(() => {\n const currentStep = steps[currentStepIndex];\n\n if (!currentStep?.targetElementSelector) {\n onClose?.();\n return;\n }\n\n const scrollableContainer = screenBaseElementSelector\n ? (document.querySelector(screenBaseElementSelector) as HTMLElement)\n : null;\n\n const tooltipElement = tooltipRef.current;\n if (!tooltipElement) return;\n\n let targetElement: HTMLElement | null = null;\n let cleanupWait: (() => void) | null = null;\n let handleScroll: (ReturnType<typeof debounce> & (() => void)) | null = null;\n\n const hasScrollableContainer = Boolean(\n scrollableContainer && scrollableContainer.scrollHeight > scrollableContainer.clientHeight\n );\n\n const viewportDimensions = {\n height: scrollableContainer?.clientHeight || window.innerHeight,\n width: scrollableContainer?.clientWidth || window.innerWidth\n };\n\n const initializeStep = (element: HTMLElement) => {\n targetElement = element;\n targetElement.addEventListener('click', handleTargetElementClick);\n\n // To calculate the tooltip position relative to the target element\n const calculateTooltipPosition = (\n targetRect: DOMRect,\n tooltipWidth: number,\n tooltipHeight: number,\n scroll: { x: number; y: number }\n ): TooltipPosition => {\n const position = currentStep.tooltipPosition || 'bottom-center';\n const offsetVertical = currentStep.tooltipPositionOffset?.vertical || 0;\n const offsetHorizontal = currentStep.tooltipPositionOffset?.horizontal || 0;\n\n let top = 0;\n let left = 0;\n\n // To calculate the position based on the tooltip position prop and the offset\n switch (position) {\n case 'bottom-center':\n top = targetRect.bottom + scroll.y + offsetVertical;\n left = targetRect.left + scroll.x + targetRect.width / 2 + offsetHorizontal;\n break;\n case 'bottom-left':\n top = targetRect.bottom + scroll.y + offsetVertical;\n left = targetRect.left + scroll.x - tooltipWidth + offsetHorizontal;\n break;\n case 'bottom-right':\n top = targetRect.bottom + scroll.y + offsetVertical;\n left = targetRect.right + scroll.x + offsetHorizontal;\n break;\n case 'top-center':\n top = targetRect.top - tooltipHeight + scroll.y + offsetVertical;\n left = targetRect.left + scroll.x + targetRect.width / 2 + offsetHorizontal;\n break;\n case 'top-left':\n top = targetRect.top - tooltipHeight + scroll.y + offsetVertical;\n left = targetRect.left + scroll.x - tooltipWidth + offsetHorizontal;\n break;\n case 'top-right':\n top = targetRect.top - tooltipHeight + scroll.y + offsetVertical;\n left = targetRect.right + scroll.x + offsetHorizontal;\n break;\n case 'left-top':\n top = targetRect.top - tooltipHeight + scroll.y + offsetVertical;\n left = targetRect.left + scroll.x - tooltipWidth + offsetHorizontal;\n break;\n case 'left-center':\n top = targetRect.top + scroll.y + targetRect.height / 2 + offsetVertical;\n left = targetRect.left + scroll.x - tooltipWidth + offsetHorizontal;\n break;\n case 'left-bottom':\n top = targetRect.bottom + scroll.y + offsetVertical;\n left = targetRect.left + scroll.x - tooltipWidth + offsetHorizontal;\n break;\n case 'right-top':\n top = targetRect.top - tooltipHeight + scroll.y + offsetVertical;\n left = targetRect.right + scroll.x + offsetHorizontal;\n break;\n case 'right-center':\n top = targetRect.top + scroll.y + targetRect.height / 2 + offsetVertical;\n left = targetRect.right + scroll.x + offsetHorizontal;\n break;\n case 'right-bottom':\n top = targetRect.bottom + scroll.y + offsetVertical;\n left = targetRect.right + scroll.x + offsetHorizontal;\n break;\n default:\n top = targetRect.bottom + scroll.y + offsetVertical;\n left = targetRect.left + scroll.x + targetRect.width / 2 + offsetHorizontal;\n break;\n }\n\n return { top, left };\n };\n\n // To apply the position to the tooltip with optional animation\n const applyTooltipPosition = (position: TooltipPosition, shouldAnimate: boolean) => {\n tooltipElement.style.position = 'absolute';\n\n const applyStyles = () => {\n tooltipElement.style.top = `${position.top}px`;\n tooltipElement.style.left = `${position.left}px`;\n };\n\n if (shouldAnimate && previousTooltipPositionRef.current) {\n // Animate to new position immediately\n tooltipElement.style.transition = `top ${ANIMATION_DURATION_MS}ms ease-in-out, left ${ANIMATION_DURATION_MS}ms ease-in-out`;\n applyStyles();\n previousTooltipPositionRef.current = position;\n } else {\n // Direct positioning without animation for first time\n applyStyles();\n previousTooltipPositionRef.current = position;\n }\n };\n\n const positionTooltip = () => {\n if (!tooltipElement || !targetElement) return;\n\n // Wait for tooltip to be rendered with valid dimensions\n const tooltipDimensions = {\n width: tooltipElement.offsetWidth || 0,\n height: tooltipElement.offsetHeight || 0\n };\n\n if (tooltipDimensions.width === 0 && tooltipDimensions.height === 0) {\n requestAnimationFrame(positionTooltip);\n return;\n }\n\n const targetRect = getAdjustedBoundingRect(targetElement, currentStep.iframeSelector);\n const scroll = getScrollPosition();\n const position = calculateTooltipPosition(\n targetRect,\n tooltipDimensions.width,\n tooltipDimensions.height,\n scroll\n );\n\n const shouldAnimate = previousTooltipPositionRef.current !== null;\n applyTooltipPosition(position, shouldAnimate);\n };\n\n // To handle scroll events with debouncing to prevent excessive repositioning\n handleScroll = debounce(() => {\n if (!targetElement || !tooltipElement) return;\n\n // Preserve current position for animation\n const currentPosition = {\n top: parseFloat(tooltipElement.style.top) || 0,\n left: parseFloat(tooltipElement.style.left) || 0\n };\n\n if (!previousTooltipPositionRef.current && (currentPosition.top !== 0 || currentPosition.left !== 0)) {\n previousTooltipPositionRef.current = currentPosition;\n }\n\n positionTooltip();\n\n // Update reference after animation completes\n if (previousTooltipPositionRef.current) {\n setTimeout(() => {\n const finalPosition = {\n top: parseFloat(tooltipElement.style.top) || 0,\n left: parseFloat(tooltipElement.style.left) || 0\n };\n if (finalPosition.top !== 0 || finalPosition.left !== 0) {\n previousTooltipPositionRef.current = finalPosition;\n }\n }, ANIMATION_DURATION_MS);\n }\n }, SCROLL_DEBOUNCE_MS);\n\n // Checks if both target and tooltip are fully visible in viewport\n const areElementsVisible = (\n targetRect: DOMRect,\n tooltipTopViewport: number,\n tooltipLeftViewport: number,\n tooltipWidth: number,\n tooltipHeight: number\n ): boolean => {\n const combinedBoundingBox = {\n top: Math.min(targetRect.top, tooltipTopViewport),\n bottom: Math.max(targetRect.bottom, tooltipTopViewport + tooltipHeight),\n left: Math.min(targetRect.left, tooltipLeftViewport),\n right: Math.max(targetRect.right, tooltipLeftViewport + tooltipWidth)\n };\n\n if (scrollableContainer) {\n const containerRect = scrollableContainer.getBoundingClientRect();\n return (\n combinedBoundingBox.top >= containerRect.top + VIEWPORT_MARGIN_PX &&\n combinedBoundingBox.bottom <= containerRect.top + containerRect.height - VIEWPORT_MARGIN_PX &&\n combinedBoundingBox.left >= containerRect.left + VIEWPORT_MARGIN_PX &&\n combinedBoundingBox.right <= containerRect.left + containerRect.width - VIEWPORT_MARGIN_PX &&\n targetRect.width > 0 &&\n targetRect.height > 0\n );\n }\n\n return (\n combinedBoundingBox.top >= VIEWPORT_MARGIN_PX &&\n combinedBoundingBox.bottom <= viewportDimensions.height - VIEWPORT_MARGIN_PX &&\n combinedBoundingBox.left >= VIEWPORT_MARGIN_PX &&\n combinedBoundingBox.right <= viewportDimensions.width - VIEWPORT_MARGIN_PX &&\n targetRect.width > 0 &&\n targetRect.height > 0\n );\n };\n\n // Calculates the scroll position needed to make both target and tooltip in viewport\n const calculateScrollToCenter = (\n targetRect: DOMRect,\n tooltipTopViewport: number,\n tooltipHeight: number\n ): number | null => {\n const combinedTop = Math.min(targetRect.top, tooltipTopViewport);\n const combinedBottom = Math.max(targetRect.bottom, tooltipTopViewport + tooltipHeight);\n const combinedHeight = combinedBottom - combinedTop;\n\n // Determine scroll context (container or window)\n const isContainer = Boolean(scrollableContainer && hasScrollableContainer);\n const containerRect = isContainer ? scrollableContainer!.getBoundingClientRect() : null;\n\n const viewportHeight = isContainer ? containerRect!.height : window.innerHeight;\n const currentScroll = isContainer ? scrollableContainer!.scrollTop : getScrollPosition().y;\n const maxScroll = isContainer\n ? scrollableContainer!.scrollHeight - scrollableContainer!.clientHeight\n : document.documentElement.scrollHeight - window.innerHeight;\n\n const availableHeight = viewportHeight - 2 * VIEWPORT_MARGIN_PX;\n\n // To calculate the center point\n let centerPoint: number;\n\n if (combinedHeight > availableHeight) {\n // Combined area too tall - center the target element only\n const targetCenter = (targetRect.top + targetRect.bottom) / 2;\n centerPoint = isContainer ? targetCenter - containerRect!.top + currentScroll : targetCenter + currentScroll;\n } else {\n // Center the combined area (target + tooltip)\n const combinedCenter = (combinedTop + combinedBottom) / 2;\n centerPoint = isContainer\n ? combinedCenter - containerRect!.top + currentScroll\n : combinedCenter + currentScroll;\n }\n\n // Calculate final scroll position and clamp to valid range\n const scrollPosition = centerPoint - viewportHeight / 2;\n return Math.max(0, Math.min(scrollPosition, maxScroll));\n };\n\n // To initialize the tooltip positioning and handle scrolling if needed\n const initializeTooltip = () => {\n if (!tooltipElement || !targetElement) return;\n\n const waitForDimensions = () => {\n if (!tooltipElement || !targetElement) return;\n\n const tooltipDimensions = {\n width: tooltipElement.offsetWidth || 0,\n height: tooltipElement.offsetHeight || 0\n };\n\n if (tooltipDimensions.width === 0 && tooltipDimensions.height === 0) {\n requestAnimationFrame(waitForDimensions);\n return;\n }\n\n const targetRect = getAdjustedBoundingRect(targetElement, currentStep.iframeSelector);\n const scroll = getScrollPosition();\n\n // Calculate tooltip position in absolute coordinates\n const tooltipAbsolutePosition = calculateTooltipPosition(\n targetRect,\n tooltipDimensions.width,\n tooltipDimensions.height,\n scroll\n );\n\n // Convert to viewport coordinates for visibility check\n const tooltipViewportPosition = {\n top: tooltipAbsolutePosition.top - scroll.y,\n left: tooltipAbsolutePosition.left - scroll.x\n };\n\n // Check if both elements are visible\n const isVisible = areElementsVisible(\n targetRect,\n tooltipViewportPosition.top,\n tooltipViewportPosition.left,\n tooltipDimensions.width,\n tooltipDimensions.height\n );\n\n if (!isVisible) {\n // Calculate scroll needed to make both visible\n const requiredScrollY = calculateScrollToCenter(\n targetRect,\n tooltipViewportPosition.top,\n tooltipDimensions.height\n );\n\n if (requiredScrollY !== null) {\n const scrollElement = hasScrollableContainer && scrollableContainer ? scrollableContainer : window;\n scrollElement.scrollTo({ top: requiredScrollY, behavior: 'auto' });\n\n // Position tooltip immediately after instant scroll\n requestAnimationFrame(() => positionTooltip());\n } else {\n // Cannot fit with scrolling, position anyway\n const shouldAnimate = previousTooltipPositionRef.current !== null;\n applyTooltipPosition(tooltipAbsolutePosition, shouldAnimate);\n }\n } else {\n // Both are visible, position tooltip\n const shouldAnimate = previousTooltipPositionRef.current !== null;\n applyTooltipPosition(tooltipAbsolutePosition, shouldAnimate);\n }\n };\n\n waitForDimensions();\n };\n\n window.addEventListener('scroll', handleScroll, { passive: true });\n if (hasScrollableContainer && scrollableContainer) {\n scrollableContainer.addEventListener('scroll', handleScroll, { passive: true });\n }\n\n // Add scroll listener for iframe if target is inside iframe\n if (currentStep.iframeSelector) {\n const iframeDoc = getIframeDocument(currentStep.iframeSelector);\n const iframeWindow = iframeDoc?.defaultView;\n if (iframeWindow) {\n iframeWindow.addEventListener('scroll', handleScroll, { passive: true });\n }\n }\n\n initializeTooltip();\n };\n\n // Check if we need to wait for the element or get it immediately\n if (currentStep.waitForElement) {\n // Wait for element to appear\n cleanupWait = waitForElement(currentStep.targetElementSelector, initializeStep, currentStep.iframeSelector);\n } else {\n const element = getTargetElement(currentStep.targetElementSelector, currentStep.iframeSelector);\n if (!element) return;\n initializeStep(element);\n }\n\n return () => {\n if (cleanupWait) {\n cleanupWait();\n }\n if (targetElement) {\n targetElement.removeEventListener('click', handleTargetElementClick);\n }\n if (handleScroll) {\n window.removeEventListener('scroll', handleScroll);\n if (hasScrollableContainer && scrollableContainer) {\n scrollableContainer.removeEventListener('scroll', handleScroll);\n }\n // Clean up iframe scroll listener\n if (currentStep.iframeSelector) {\n const iframeDoc = getIframeDocument(currentStep.iframeSelector);\n const iframeWindow = iframeDoc?.defaultView;\n if (iframeWindow) {\n iframeWindow.removeEventListener('scroll', handleScroll);\n }\n }\n // Cancel any pending debounced calls\n (handleScroll as ReturnType<typeof debounce> & (() => void)).cancel();\n }\n };\n }, [currentStepIndex, steps, onClose, screenBaseElementSelector, maxWidth]);\n\n // Don't render if all steps completed\n if (currentStepIndex >= steps.length) {\n return null;\n }\n\n const currentStep = steps[currentStepIndex];\n const arrowPosition = getArrowPosition(currentStep?.tooltipPosition);\n const arrowStyle = ARROW_STYLES[arrowPosition];\n\n return createPortal(\n <div\n ref={tooltipRef}\n className={`guided-tour-tooltip relative rounded-md p-1`}\n data-automation-id={`${currentStep?.automationId || 'guided-tour'}-tooltip`}\n style={{ zIndex: currentStep?.zIndex || 1300 }}\n >\n <Icon\n name=\"arrow-head\"\n fill={tooltipBackgroundColor}\n rotation={arrowStyle.rotate as RotationTypes}\n className={`guided-tour-tooltip-arrow absolute ${arrowStyle.class}`}\n />\n <div className=\"guided-tour-tooltip-content flex flex-col gap-2\">\n <p>{currentStep?.content}</p>\n {currentStep?.isOptionalStep && (\n <Button type=\"link\" label=\"Got it\" className=\"!text-white !underline\" onClick={handleTargetElementClick} />\n )}\n </div>\n </div>,\n document.body\n );\n};\n"],"names":["ANIMATION_DURATION_MS","VIEWPORT_MARGIN_PX","SCROLL_DEBOUNCE_MS","ARROW_STYLES","rotate","class","getIframeDocument","iframeSelector","iframe","document","querySelector","warn","contentDocument","contentWindow","error","getTargetElement","selector","iframeDoc","getAdjustedBoundingRect","element","rect","getBoundingClientRect","iframeRect","borderLeft","clientLeft","borderTop","clientTop","DOMRect","left","top","width","height","getArrowPosition","position","getScrollPosition","x","window","scrollX","pageXOffset","y","scrollY","pageYOffset","waitForElement","callback","rafId","checkElement","requestAnimationFrame","cancelAnimationFrame","GuidedTour","steps","screenBaseElementSelector","onClose","tooltipBackgroundColor","tooltipTextColor","maxWidth","currentStepIndex","setCurrentStepIndex","useState","previousTooltipPositionRef","useRef","tooltipRef","navigateToNextStep","length","handleTargetElementClick","useEffect","currentStep","handleBodyClick","event","target","currentTargetElement","targetElementSelector","tooltipElement","current","contains","isDropdownStep","lastStep","lastStepTargetElement","timeoutId","setTimeout","body","addEventListener","clearTimeout","removeEventListener","style","backgroundColor","color","scrollableContainer","targetElement","cleanupWait","handleScroll","hasScrollableContainer","Boolean","scrollHeight","clientHeight","viewportDimensions","innerHeight","clientWidth","innerWidth","initializeStep","calculateTooltipPosition","targetRect","tooltipWidth","tooltipHeight","scroll","tooltipPosition","offsetVertical","tooltipPositionOffset","vertical","offsetHorizontal","horizontal","bottom","right","applyTooltipPosition","shouldAnimate","applyStyles","transition","positionTooltip","tooltipDimensions","offsetWidth","offsetHeight","debounce","currentPosition","parseFloat","finalPosition","areElementsVisible","tooltipTopViewport","tooltipLeftViewport","combinedBoundingBox","Math","min","max","containerRect","calculateScrollToCenter","combinedTop","combinedBottom","combinedHeight","isContainer","viewportHeight","currentScroll","scrollTop","maxScroll","documentElement","availableHeight","centerPoint","targetCenter","combinedCenter","scrollPosition","initializeTooltip","waitForDimensions","tooltipAbsolutePosition","tooltipViewportPosition","requiredScrollY","scrollElement","scrollTo","behavior","passive","iframeWindow","defaultView","cancel","arrowPosition","arrowStyle","createPortal","createElement","ref","className","automationId","zIndex","Icon","name","fill","rotation","React","content","isOptionalStep","Button","type","label","onClick"],"mappings":"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"}
1
+ {"version":3,"file":"index62.js","sources":["../src/components/OnboardingTour/index.tsx"],"sourcesContent":["import React, { FC, useEffect, useRef, useState, useCallback } from 'react';\n\nimport { Button } from 'components/Button';\nimport { Tooltip } from 'components/Tooltip';\n\nimport './style.scss';\n\nconst TOUR_NAVIGATION_STEPS = {\n gotIt: 'got_it',\n finish: 'finish',\n next: 'next',\n back: 'back'\n};\n\nexport interface TourStep {\n targetElementSelector: string;\n targetElementContainerSelector?: string;\n targetElementGap?: {\n horizontal: number;\n vertical: number;\n };\n tooltipPosition?:\n | 'top-left'\n | 'top-center'\n | 'top-right'\n | 'bottom-left'\n | 'bottom-center'\n | 'bottom-right'\n | 'left-top'\n | 'left-center'\n | 'left-bottom'\n | 'right-top'\n | 'right-center'\n | 'right-bottom';\n content: {\n title?: string;\n description?: string;\n illustration?: any;\n };\n tourMixPanelHandler?: (data: { user_path: string; action_type: string }) => void;\n}\n\nexport interface OnboardingTourProps {\n steps: TourStep[];\n screenBaseElementSelector: string;\n handleCloseProductTour: (e?: React.MouseEvent<HTMLButtonElement>) => void;\n tourType?: string;\n highlightBorderRadius?: number;\n automationId?: string;\n labels?: {\n next: string;\n gotIt: string;\n finish: string;\n skip: string;\n stepInfo: string;\n };\n}\n\nexport const OnboardingTour: FC<OnboardingTourProps> = ({\n steps = [],\n screenBaseElementSelector = '',\n handleCloseProductTour,\n tourType = '',\n automationId = 'onboarding-tour',\n highlightBorderRadius = 6,\n labels\n}) => {\n const [currentStep, setCurrentStep] = useState(0);\n const overlayRef = useRef<HTMLDivElement>(null);\n const blockerRef = useRef<HTMLDivElement>(null);\n\n const {\n next = 'Next',\n gotIt = 'Got It',\n finish = 'Finish',\n skip = 'Skip tour',\n stepInfo = 'Step {step} of {total}'\n } = labels || {};\n\n const parentScreenElement = document.querySelector(screenBaseElementSelector) as HTMLElement | null;\n\n const clipTargetElementAndPositionTooltip = useCallback(() => {\n let timerId: any;\n\n if (currentStep >= steps.length) {\n return timerId;\n }\n\n // get the target element\n const initialTargetElement = document.querySelector(\n steps[currentStep]?.targetElementContainerSelector\n ? steps[currentStep].targetElementContainerSelector\n : steps[currentStep]?.targetElementSelector\n ) as HTMLElement | null;\n\n if (!initialTargetElement) {\n return timerId;\n }\n\n const initialTargetArea = initialTargetElement.getBoundingClientRect();\n\n // check whether target element is fully visible in viewport\n const isFullyVisible =\n initialTargetArea.top >= 0 &&\n initialTargetArea.left >= 0 &&\n initialTargetArea.bottom <= window.innerHeight &&\n initialTargetArea.right <= window.innerWidth;\n\n if (!isFullyVisible) {\n if (initialTargetArea.top < 0) {\n initialTargetElement.scrollIntoView({ behavior: 'auto', block: 'start' });\n } else if (initialTargetArea.bottom > window.innerHeight) {\n initialTargetElement.scrollIntoView({ behavior: 'auto', block: 'end' });\n }\n }\n\n // if the target element is visible, then clip the target element and position the tooltip\n timerId = setTimeout(() => {\n const targetElement = document.querySelector(steps[currentStep]?.targetElementSelector) as HTMLElement | null;\n\n if (!targetElement || !overlayRef.current || !blockerRef.current) {\n return;\n }\n\n const targetArea = targetElement.getBoundingClientRect();\n\n const documentHeight = Math.max(document.documentElement.scrollHeight, document.body.scrollHeight);\n\n // Update overlay dimensions and calculate target element area to focus\n overlayRef.current.style.height = `${documentHeight}px`;\n\n // Providing gap around target element\n const targetElementGap = steps[currentStep]?.targetElementGap || { horizontal: 0, vertical: 0 };\n\n // clip the target element with rounded corners\n const borderRadius = highlightBorderRadius * 2;\n const left = targetArea.left - targetElementGap.horizontal;\n const top = targetArea.top + window.scrollY - targetElementGap.vertical;\n const right = targetArea.right + targetElementGap.horizontal;\n const bottom = targetArea.bottom + window.scrollY + targetElementGap.vertical;\n const width = right - left;\n const height = bottom - top;\n const documentWidth = Math.max(document.documentElement.scrollWidth, document.body.scrollWidth);\n\n // Create SVG mask with rounded rectangle hole\n const svgMask = encodeURIComponent(`\n <svg width=\"${documentWidth}\" height=\"${documentHeight}\" xmlns=\"http://www.w3.org/2000/svg\">\n <defs>\n <mask id=\"highlight-mask-${currentStep}\">\n <rect x=\"0\" y=\"0\" width=\"${documentWidth}\" height=\"${documentHeight}\" fill=\"white\"/>\n <rect x=\"${left}\" y=\"${top}\" width=\"${width}\" height=\"${height}\" rx=\"${borderRadius}\" ry=\"${borderRadius}\" fill=\"black\"/>\n </mask>\n </defs>\n </svg>\n `);\n\n // Apply created mask to the overlay\n overlayRef.current.style.maskImage = `url(\"data:image/svg+xml,${svgMask}#highlight-mask-${currentStep}\")`;\n overlayRef.current.style.webkitMaskImage = `url(\"data:image/svg+xml,${svgMask}#highlight-mask-${currentStep}\")`;\n\n // Position blocker over clipped area to avoid clicks on the target element\n blockerRef.current.style.top = `${targetArea.top}px`;\n blockerRef.current.style.left = `${targetArea.left}px`;\n blockerRef.current.style.width = `${targetArea.width}px`;\n blockerRef.current.style.height = `${targetArea.height}px`;\n blockerRef.current.style.borderRadius = `${highlightBorderRadius}px`;\n }, 50);\n\n return timerId;\n }, [currentStep, steps]);\n\n const handleSkipTour = useCallback(() => {\n handleCloseProductTour();\n if (parentScreenElement) {\n parentScreenElement.scrollTo({ top: 0, behavior: 'smooth' });\n }\n }, [handleCloseProductTour, parentScreenElement]);\n\n const handleNextClick = useCallback(\n (e?: React.MouseEvent<HTMLButtonElement>) => {\n e?.preventDefault();\n e?.stopPropagation();\n\n if (currentStep < steps.length - 1) {\n setCurrentStep((prev) => prev + 1);\n } else {\n handleCloseProductTour(e);\n if (parentScreenElement) {\n parentScreenElement.scrollTo({ top: 0, behavior: 'smooth' });\n }\n }\n steps[currentStep]?.tourMixPanelHandler?.({\n user_path: tourType,\n action_type: `clicked_${\n currentStep === steps.length - 1\n ? steps.length === 1\n ? TOUR_NAVIGATION_STEPS.gotIt\n : TOUR_NAVIGATION_STEPS.finish\n : TOUR_NAVIGATION_STEPS.next\n }`\n });\n },\n [currentStep, steps, handleCloseProductTour, tourType, parentScreenElement]\n );\n\n const handlePrevClick = useCallback(() => {\n if (currentStep > 0) {\n setCurrentStep((prev) => prev - 1);\n }\n steps[currentStep]?.tourMixPanelHandler?.({\n user_path: tourType,\n action_type: `clicked_${TOUR_NAVIGATION_STEPS.back}`\n });\n }, [currentStep, steps, tourType]);\n\n const handleKeyPress = useCallback(\n (e: KeyboardEvent) => {\n if (e.keyCode === 37 || e.key === 'ArrowLeft') {\n // for previous navigation\n if (currentStep > 0) {\n handlePrevClick();\n }\n }\n if (e.keyCode === 39 || e.key === 'ArrowRight') {\n // for next navigation\n handleNextClick();\n }\n },\n [currentStep, handleNextClick, handlePrevClick]\n );\n\n useEffect(() => {\n // Adding event listener for keydown\n window.addEventListener('keydown', handleKeyPress);\n\n return () => {\n window.removeEventListener('keydown', handleKeyPress);\n };\n }, [handleKeyPress]);\n\n useEffect(() => {\n let timerId: any;\n if (currentStep < steps.length) {\n timerId = clipTargetElementAndPositionTooltip();\n }\n\n return () => {\n if (timerId) {\n clearTimeout(timerId);\n }\n };\n }, [currentStep, steps, clipTargetElementAndPositionTooltip]);\n\n // To prevent scroll when tour is active\n useEffect(() => {\n if (currentStep < steps.length && overlayRef.current) {\n const overlay = overlayRef.current;\n\n const preventScroll = (e: Event) => {\n e.preventDefault();\n e.stopPropagation();\n };\n\n overlay.addEventListener('wheel', preventScroll, { passive: false });\n overlay.addEventListener('touchmove', preventScroll, { passive: false });\n overlay.addEventListener('scroll', preventScroll, { passive: false });\n\n return () => {\n overlay.removeEventListener('wheel', preventScroll);\n overlay.removeEventListener('touchmove', preventScroll);\n overlay.removeEventListener('scroll', preventScroll);\n };\n }\n }, [currentStep]);\n\n if (!steps || steps.length === 0) {\n return null;\n }\n\n return (\n <>\n <div\n className=\"se-design-onboarding-tour-overlay\"\n ref={overlayRef}\n data-automation-id={`${automationId}-overlay`}\n />\n\n <Tooltip\n content={\n <div className=\"se-design-onboarding-tour-tooltip-content\">\n {steps[currentStep]?.content?.illustration && (\n <img\n src={steps[currentStep].content.illustration}\n className=\"se-design-onboarding-tour-illustration\"\n alt=\"illustration\"\n />\n )}\n <div className=\"se-design-onboarding-tour-content\">\n {steps[currentStep]?.content?.title && (\n <p className=\"se-design-onboarding-tour-title\">{steps[currentStep].content.title}</p>\n )}\n {steps[currentStep]?.content?.description && (\n <p className=\"se-design-onboarding-tour-description\">{steps[currentStep].content.description}</p>\n )}\n </div>\n\n <div className=\"se-design-onboarding-tour-actions\">\n {steps.length > 1 && (\n <span className=\"steps\">\n {stepInfo.replace('{step}', `${currentStep + 1}`).replace('{total}', `${steps.length}`)}\n </span>\n )}\n <div className=\"btns-container\">\n {currentStep !== steps.length - 1 && (\n <Button\n theme=\"white\"\n type=\"link\"\n label={skip}\n automationId={`${automationId}-skip-button`}\n onClick={handleSkipTour}\n />\n )}\n <Button\n theme=\"white\"\n type=\"primary\"\n size=\"sm\"\n label={currentStep === steps.length - 1 ? (steps.length === 1 ? gotIt : finish) : next}\n automationId={`${automationId}-next-button`}\n onClick={handleNextClick}\n />\n </div>\n </div>\n </div>\n }\n tooltipSrc={<div className=\"blocker\" ref={blockerRef} />}\n tooltipSrcRef={blockerRef as React.RefObject<HTMLDivElement>}\n position={steps[currentStep]?.tooltipPosition || 'bottom-center'}\n tooltipOffset={16}\n displayOn=\"always-on\"\n isWithPortal={true}\n maxWidth={384}\n />\n </>\n );\n};\n"],"names":["React__default","useState","useRef","useCallback","useEffect","Button","Tooltip","TOUR_NAVIGATION_STEPS","gotIt","finish","next","back","OnboardingTour","steps","screenBaseElementSelector","handleCloseProductTour","tourType","automationId","highlightBorderRadius","labels","currentStep","setCurrentStep","overlayRef","blockerRef","skip","stepInfo","parentScreenElement","document","querySelector","clipTargetElementAndPositionTooltip","timerId","length","initialTargetElement","targetElementContainerSelector","targetElementSelector","initialTargetArea","getBoundingClientRect","top","left","bottom","window","innerHeight","right","innerWidth","scrollIntoView","behavior","block","setTimeout","targetElement","current","targetArea","documentHeight","Math","max","documentElement","scrollHeight","body","style","height","targetElementGap","horizontal","vertical","borderRadius","scrollY","width","documentWidth","scrollWidth","svgMask","encodeURIComponent","maskImage","webkitMaskImage","handleSkipTour","scrollTo","handleNextClick","e","preventDefault","stopPropagation","prev","tourMixPanelHandler","user_path","action_type","handlePrevClick","handleKeyPress","keyCode","key","addEventListener","removeEventListener","clearTimeout","overlay","preventScroll","passive","createElement","React","Fragment","className","ref","content","illustration","src","alt","title","description","replace","theme","type","label","onClick","size","tooltipSrc","tooltipSrcRef","position","tooltipPosition","tooltipOffset","displayOn","isWithPortal","maxWidth"],"mappings":"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"}