se-design 1.0.90-dev.0 → 1.0.91-r-dev.1

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 (479) hide show
  1. package/dist/assets/style.css +1 -1
  2. package/dist/components/AnchoredOverlay/index.d.ts +41 -0
  3. package/dist/components/NLSearch/ClearAiFiltersBar.d.ts +21 -0
  4. package/dist/components/NLSearch/NLDynamicChip.d.ts +26 -0
  5. package/dist/components/NLSearch/NLSearchInput.d.ts +46 -0
  6. package/dist/components/NLSearch/index.d.ts +6 -0
  7. package/dist/components/index.d.ts +4 -0
  8. package/dist/index.js +161 -152
  9. package/dist/index.js.map +1 -1
  10. package/dist/index100.js +1 -1
  11. package/dist/index100.js.map +1 -1
  12. package/dist/index101.js +1 -1
  13. package/dist/index101.js.map +1 -1
  14. package/dist/index102.js +1 -1
  15. package/dist/index102.js.map +1 -1
  16. package/dist/index103.js +1 -1
  17. package/dist/index103.js.map +1 -1
  18. package/dist/index104.js +1 -1
  19. package/dist/index104.js.map +1 -1
  20. package/dist/index105.js +1 -1
  21. package/dist/index105.js.map +1 -1
  22. package/dist/index106.js +1 -1
  23. package/dist/index106.js.map +1 -1
  24. package/dist/index107.js +1 -1
  25. package/dist/index107.js.map +1 -1
  26. package/dist/index108.js +1 -1
  27. package/dist/index108.js.map +1 -1
  28. package/dist/index109.js +1 -1
  29. package/dist/index109.js.map +1 -1
  30. package/dist/index11.js +1 -1
  31. package/dist/index110.js +1 -1
  32. package/dist/index110.js.map +1 -1
  33. package/dist/index111.js +1 -1
  34. package/dist/index111.js.map +1 -1
  35. package/dist/index112.js +1 -1
  36. package/dist/index112.js.map +1 -1
  37. package/dist/index113.js +1 -1
  38. package/dist/index113.js.map +1 -1
  39. package/dist/index114.js +2 -2
  40. package/dist/index114.js.map +1 -1
  41. package/dist/index115.js +2 -2
  42. package/dist/index115.js.map +1 -1
  43. package/dist/index116.js +1 -1
  44. package/dist/index116.js.map +1 -1
  45. package/dist/index117.js +1 -1
  46. package/dist/index117.js.map +1 -1
  47. package/dist/index118.js +1 -1
  48. package/dist/index118.js.map +1 -1
  49. package/dist/index119.js +1 -1
  50. package/dist/index119.js.map +1 -1
  51. package/dist/index12.js +3 -3
  52. package/dist/index120.js +1 -1
  53. package/dist/index120.js.map +1 -1
  54. package/dist/index121.js +1 -1
  55. package/dist/index121.js.map +1 -1
  56. package/dist/index122.js +1 -1
  57. package/dist/index122.js.map +1 -1
  58. package/dist/index123.js +1 -1
  59. package/dist/index123.js.map +1 -1
  60. package/dist/index124.js +2 -2
  61. package/dist/index124.js.map +1 -1
  62. package/dist/index125.js +2 -2
  63. package/dist/index125.js.map +1 -1
  64. package/dist/index126.js +2 -2
  65. package/dist/index126.js.map +1 -1
  66. package/dist/index127.js +2 -2
  67. package/dist/index127.js.map +1 -1
  68. package/dist/index128.js +2 -2
  69. package/dist/index128.js.map +1 -1
  70. package/dist/index129.js +1 -1
  71. package/dist/index129.js.map +1 -1
  72. package/dist/index13.js +3 -3
  73. package/dist/index130.js +1 -1
  74. package/dist/index130.js.map +1 -1
  75. package/dist/index131.js +2 -2
  76. package/dist/index131.js.map +1 -1
  77. package/dist/index132.js +2 -2
  78. package/dist/index132.js.map +1 -1
  79. package/dist/index133.js +2 -2
  80. package/dist/index133.js.map +1 -1
  81. package/dist/index134.js +1 -1
  82. package/dist/index134.js.map +1 -1
  83. package/dist/index135.js +1 -1
  84. package/dist/index135.js.map +1 -1
  85. package/dist/index136.js +2 -2
  86. package/dist/index136.js.map +1 -1
  87. package/dist/index137.js +2 -2
  88. package/dist/index137.js.map +1 -1
  89. package/dist/index138.js +1 -1
  90. package/dist/index138.js.map +1 -1
  91. package/dist/index139.js +1 -1
  92. package/dist/index139.js.map +1 -1
  93. package/dist/index140.js +1 -1
  94. package/dist/index140.js.map +1 -1
  95. package/dist/index141.js +2 -2
  96. package/dist/index141.js.map +1 -1
  97. package/dist/index142.js +2 -2
  98. package/dist/index142.js.map +1 -1
  99. package/dist/index143.js +1 -1
  100. package/dist/index143.js.map +1 -1
  101. package/dist/index144.js +1 -1
  102. package/dist/index144.js.map +1 -1
  103. package/dist/index145.js +1 -1
  104. package/dist/index145.js.map +1 -1
  105. package/dist/index146.js +1 -1
  106. package/dist/index146.js.map +1 -1
  107. package/dist/index147.js +2 -2
  108. package/dist/index147.js.map +1 -1
  109. package/dist/index148.js +1 -1
  110. package/dist/index148.js.map +1 -1
  111. package/dist/index149.js +1 -1
  112. package/dist/index149.js.map +1 -1
  113. package/dist/index150.js +1 -1
  114. package/dist/index150.js.map +1 -1
  115. package/dist/index151.js +1 -1
  116. package/dist/index151.js.map +1 -1
  117. package/dist/index152.js +2 -2
  118. package/dist/index152.js.map +1 -1
  119. package/dist/index153.js +1 -1
  120. package/dist/index153.js.map +1 -1
  121. package/dist/index154.js +1 -1
  122. package/dist/index154.js.map +1 -1
  123. package/dist/index155.js +1 -1
  124. package/dist/index155.js.map +1 -1
  125. package/dist/index156.js +2 -2
  126. package/dist/index156.js.map +1 -1
  127. package/dist/index157.js +2 -2
  128. package/dist/index157.js.map +1 -1
  129. package/dist/index158.js +1 -1
  130. package/dist/index158.js.map +1 -1
  131. package/dist/index159.js +2 -2
  132. package/dist/index159.js.map +1 -1
  133. package/dist/index16.js +3 -3
  134. package/dist/index160.js +2 -2
  135. package/dist/index160.js.map +1 -1
  136. package/dist/index161.js +2 -2
  137. package/dist/index161.js.map +1 -1
  138. package/dist/index162.js +2 -2
  139. package/dist/index162.js.map +1 -1
  140. package/dist/index163.js +1 -1
  141. package/dist/index163.js.map +1 -1
  142. package/dist/index164.js +2 -2
  143. package/dist/index164.js.map +1 -1
  144. package/dist/index165.js +2 -2
  145. package/dist/index165.js.map +1 -1
  146. package/dist/index166.js +1 -1
  147. package/dist/index166.js.map +1 -1
  148. package/dist/index167.js +1 -1
  149. package/dist/index167.js.map +1 -1
  150. package/dist/index168.js +1 -1
  151. package/dist/index168.js.map +1 -1
  152. package/dist/index169.js +1 -1
  153. package/dist/index169.js.map +1 -1
  154. package/dist/index170.js +1 -1
  155. package/dist/index170.js.map +1 -1
  156. package/dist/index171.js +1 -1
  157. package/dist/index171.js.map +1 -1
  158. package/dist/index172.js +1 -1
  159. package/dist/index172.js.map +1 -1
  160. package/dist/index173.js +1 -1
  161. package/dist/index173.js.map +1 -1
  162. package/dist/index174.js +1 -1
  163. package/dist/index174.js.map +1 -1
  164. package/dist/index175.js +1 -1
  165. package/dist/index175.js.map +1 -1
  166. package/dist/index176.js +1 -1
  167. package/dist/index176.js.map +1 -1
  168. package/dist/index177.js +1 -1
  169. package/dist/index177.js.map +1 -1
  170. package/dist/index178.js +1 -1
  171. package/dist/index178.js.map +1 -1
  172. package/dist/index179.js +1 -1
  173. package/dist/index179.js.map +1 -1
  174. package/dist/index18.js +3 -3
  175. package/dist/index180.js +1 -1
  176. package/dist/index180.js.map +1 -1
  177. package/dist/index181.js +1 -1
  178. package/dist/index181.js.map +1 -1
  179. package/dist/index182.js +1 -1
  180. package/dist/index182.js.map +1 -1
  181. package/dist/index183.js +1 -1
  182. package/dist/index183.js.map +1 -1
  183. package/dist/index184.js +1 -1
  184. package/dist/index184.js.map +1 -1
  185. package/dist/index185.js +1 -1
  186. package/dist/index185.js.map +1 -1
  187. package/dist/index186.js +2 -2
  188. package/dist/index186.js.map +1 -1
  189. package/dist/index187.js +1 -1
  190. package/dist/index187.js.map +1 -1
  191. package/dist/index188.js +1 -1
  192. package/dist/index188.js.map +1 -1
  193. package/dist/index189.js +1 -1
  194. package/dist/index189.js.map +1 -1
  195. package/dist/index19.js +5 -5
  196. package/dist/index190.js +2 -2
  197. package/dist/index190.js.map +1 -1
  198. package/dist/index191.js +2 -2
  199. package/dist/index191.js.map +1 -1
  200. package/dist/index192.js +1 -1
  201. package/dist/index192.js.map +1 -1
  202. package/dist/index193.js +1 -1
  203. package/dist/index193.js.map +1 -1
  204. package/dist/index194.js +1 -1
  205. package/dist/index194.js.map +1 -1
  206. package/dist/index195.js +2 -2
  207. package/dist/index195.js.map +1 -1
  208. package/dist/index196.js +1 -1
  209. package/dist/index196.js.map +1 -1
  210. package/dist/index197.js +1 -1
  211. package/dist/index197.js.map +1 -1
  212. package/dist/index198.js +1 -1
  213. package/dist/index198.js.map +1 -1
  214. package/dist/index199.js +1 -1
  215. package/dist/index199.js.map +1 -1
  216. package/dist/index20.js +96 -18
  217. package/dist/index20.js.map +1 -1
  218. package/dist/index200.js +1 -1
  219. package/dist/index200.js.map +1 -1
  220. package/dist/index201.js +2 -2
  221. package/dist/index201.js.map +1 -1
  222. package/dist/index202.js +1 -1
  223. package/dist/index202.js.map +1 -1
  224. package/dist/index203.js +2 -2
  225. package/dist/index203.js.map +1 -1
  226. package/dist/index204.js +2 -149
  227. package/dist/index204.js.map +1 -1
  228. package/dist/index205.js +2 -9
  229. package/dist/index205.js.map +1 -1
  230. package/dist/index206.js +2 -6
  231. package/dist/index206.js.map +1 -1
  232. package/dist/index207.js +2 -43
  233. package/dist/index207.js.map +1 -1
  234. package/dist/index208.js +2 -21
  235. package/dist/index208.js.map +1 -1
  236. package/dist/index209.js +152 -0
  237. package/dist/index209.js.map +1 -0
  238. package/dist/index21.js +17 -32
  239. package/dist/index21.js.map +1 -1
  240. package/dist/index210.js +12 -0
  241. package/dist/index210.js.map +1 -0
  242. package/dist/index211.js +9 -0
  243. package/dist/index211.js.map +1 -0
  244. package/dist/index212.js +46 -0
  245. package/dist/index212.js.map +1 -0
  246. package/dist/index213.js +24 -0
  247. package/dist/index213.js.map +1 -0
  248. package/dist/index22.js +33 -66
  249. package/dist/index22.js.map +1 -1
  250. package/dist/{index215.js → index220.js} +1 -1
  251. package/dist/{index215.js.map → index220.js.map} +1 -1
  252. package/dist/{index216.js → index221.js} +3 -3
  253. package/dist/{index216.js.map → index221.js.map} +1 -1
  254. package/dist/{index223.js → index228.js} +1 -1
  255. package/dist/{index223.js.map → index228.js.map} +1 -1
  256. package/dist/index23.js +62 -83
  257. package/dist/index23.js.map +1 -1
  258. package/dist/{index225.js → index230.js} +1 -1
  259. package/dist/{index225.js.map → index230.js.map} +1 -1
  260. package/dist/{index233.js → index238.js} +1 -1
  261. package/dist/{index233.js.map → index238.js.map} +1 -1
  262. package/dist/index24.js +85 -21
  263. package/dist/index24.js.map +1 -1
  264. package/dist/{index236.js → index241.js} +1 -1
  265. package/dist/{index236.js.map → index241.js.map} +1 -1
  266. package/dist/index25.js +19 -401
  267. package/dist/index25.js.map +1 -1
  268. package/dist/index250.js +169 -9
  269. package/dist/index250.js.map +1 -1
  270. package/dist/index251.js +3 -4
  271. package/dist/index251.js.map +1 -1
  272. package/dist/index253.js +19 -11
  273. package/dist/index253.js.map +1 -1
  274. package/dist/index254.js +9 -5
  275. package/dist/index254.js.map +1 -1
  276. package/dist/index255.js +9 -5
  277. package/dist/index255.js.map +1 -1
  278. package/dist/index256.js +4 -37
  279. package/dist/index256.js.map +1 -1
  280. package/dist/index257.js +170 -2
  281. package/dist/index257.js.map +1 -1
  282. package/dist/index258.js +11 -8
  283. package/dist/index258.js.map +1 -1
  284. package/dist/index259.js +5 -326
  285. package/dist/index259.js.map +1 -1
  286. package/dist/index26.js +400 -44
  287. package/dist/index26.js.map +1 -1
  288. package/dist/index260.js +5 -49
  289. package/dist/index260.js.map +1 -1
  290. package/dist/index261.js +38 -2
  291. package/dist/index261.js.map +1 -1
  292. package/dist/index262.js +2 -76
  293. package/dist/index262.js.map +1 -1
  294. package/dist/index263.js +7 -92
  295. package/dist/index263.js.map +1 -1
  296. package/dist/index264.js +322 -47
  297. package/dist/index264.js.map +1 -1
  298. package/dist/index265.js +49 -7
  299. package/dist/index265.js.map +1 -1
  300. package/dist/index266.js +2 -5
  301. package/dist/index266.js.map +1 -1
  302. package/dist/index267.js +72 -48
  303. package/dist/index267.js.map +1 -1
  304. package/dist/index268.js +93 -2
  305. package/dist/index268.js.map +1 -1
  306. package/dist/index269.js +52 -2
  307. package/dist/index269.js.map +1 -1
  308. package/dist/index27.js +48 -23
  309. package/dist/index27.js.map +1 -1
  310. package/dist/index270.js +11 -0
  311. package/dist/index270.js.map +1 -0
  312. package/dist/index271.js +8 -0
  313. package/dist/index271.js.map +1 -0
  314. package/dist/index272.js +55 -0
  315. package/dist/index272.js.map +1 -0
  316. package/dist/index273.js +5 -0
  317. package/dist/index273.js.map +1 -0
  318. package/dist/index274.js +5 -0
  319. package/dist/index274.js.map +1 -0
  320. package/dist/index28.js +21 -108
  321. package/dist/index28.js.map +1 -1
  322. package/dist/index29.js +107 -147
  323. package/dist/index29.js.map +1 -1
  324. package/dist/index3.js +3 -3
  325. package/dist/index30.js +146 -132
  326. package/dist/index30.js.map +1 -1
  327. package/dist/index31.js +136 -76
  328. package/dist/index31.js.map +1 -1
  329. package/dist/index32.js +73 -94
  330. package/dist/index32.js.map +1 -1
  331. package/dist/index33.js +96 -73
  332. package/dist/index33.js.map +1 -1
  333. package/dist/index34.js +72 -38
  334. package/dist/index34.js.map +1 -1
  335. package/dist/index35.js +40 -72
  336. package/dist/index35.js.map +1 -1
  337. package/dist/index36.js +68 -94
  338. package/dist/index36.js.map +1 -1
  339. package/dist/index37.js +98 -77
  340. package/dist/index37.js.map +1 -1
  341. package/dist/index38.js +75 -311
  342. package/dist/index38.js.map +1 -1
  343. package/dist/index39.js +313 -75
  344. package/dist/index39.js.map +1 -1
  345. package/dist/index4.js +4 -4
  346. package/dist/index40.js +72 -79
  347. package/dist/index40.js.map +1 -1
  348. package/dist/index41.js +82 -32
  349. package/dist/index41.js.map +1 -1
  350. package/dist/index42.js +26 -43
  351. package/dist/index42.js.map +1 -1
  352. package/dist/index43.js +49 -109
  353. package/dist/index43.js.map +1 -1
  354. package/dist/index44.js +105 -50
  355. package/dist/index44.js.map +1 -1
  356. package/dist/index45.js +53 -142
  357. package/dist/index45.js.map +1 -1
  358. package/dist/index46.js +137 -188
  359. package/dist/index46.js.map +1 -1
  360. package/dist/index47.js +199 -36
  361. package/dist/index47.js.map +1 -1
  362. package/dist/index48.js +40 -36
  363. package/dist/index48.js.map +1 -1
  364. package/dist/index49.js +36 -149
  365. package/dist/index49.js.map +1 -1
  366. package/dist/index51.js +188 -451
  367. package/dist/index51.js.map +1 -1
  368. package/dist/index52.js +38 -98
  369. package/dist/index52.js.map +1 -1
  370. package/dist/index53.js +33 -40
  371. package/dist/index53.js.map +1 -1
  372. package/dist/index54.js +151 -36
  373. package/dist/index54.js.map +1 -1
  374. package/dist/index55.js +82 -88
  375. package/dist/index55.js.map +1 -1
  376. package/dist/index56.js +452 -154
  377. package/dist/index56.js.map +1 -1
  378. package/dist/index57.js +97 -148
  379. package/dist/index57.js.map +1 -1
  380. package/dist/index58.js +43 -33
  381. package/dist/index58.js.map +1 -1
  382. package/dist/index59.js +34 -82
  383. package/dist/index59.js.map +1 -1
  384. package/dist/index6.js +125 -125
  385. package/dist/index60.js +87 -113
  386. package/dist/index60.js.map +1 -1
  387. package/dist/index61.js +156 -71
  388. package/dist/index61.js.map +1 -1
  389. package/dist/index62.js +144 -147
  390. package/dist/index62.js.map +1 -1
  391. package/dist/index63.js +30 -315
  392. package/dist/index63.js.map +1 -1
  393. package/dist/index64.js +83 -44
  394. package/dist/index64.js.map +1 -1
  395. package/dist/index65.js +113 -138
  396. package/dist/index65.js.map +1 -1
  397. package/dist/index66.js +77 -11
  398. package/dist/index66.js.map +1 -1
  399. package/dist/index67.js +151 -54
  400. package/dist/index67.js.map +1 -1
  401. package/dist/index68.js +312 -107
  402. package/dist/index68.js.map +1 -1
  403. package/dist/index69.js +45 -17
  404. package/dist/index69.js.map +1 -1
  405. package/dist/index7.js +10 -9
  406. package/dist/index70.js +142 -63
  407. package/dist/index70.js.map +1 -1
  408. package/dist/index71.js +10 -25
  409. package/dist/index71.js.map +1 -1
  410. package/dist/index72.js +51 -104
  411. package/dist/index72.js.map +1 -1
  412. package/dist/index73.js +106 -55
  413. package/dist/index73.js.map +1 -1
  414. package/dist/index74.js +17 -19
  415. package/dist/index74.js.map +1 -1
  416. package/dist/index75.js +63 -168
  417. package/dist/index75.js.map +1 -1
  418. package/dist/index76.js +27 -18
  419. package/dist/index76.js.map +1 -1
  420. package/dist/index77.js +107 -10
  421. package/dist/index77.js.map +1 -1
  422. package/dist/index78.js +62 -5
  423. package/dist/index78.js.map +1 -1
  424. package/dist/index79.js +18 -59
  425. package/dist/index79.js.map +1 -1
  426. package/dist/index80.js +170 -26
  427. package/dist/index80.js.map +1 -1
  428. package/dist/index81.js +18 -11
  429. package/dist/index81.js.map +1 -1
  430. package/dist/index82.js +14 -0
  431. package/dist/index82.js.map +1 -0
  432. package/dist/index83.js +5 -2
  433. package/dist/index83.js.map +1 -1
  434. package/dist/index84.js +62 -2
  435. package/dist/index84.js.map +1 -1
  436. package/dist/index85.js +27 -2
  437. package/dist/index85.js.map +1 -1
  438. package/dist/index86.js +11 -2
  439. package/dist/index86.js.map +1 -1
  440. package/dist/index88.js +2 -2
  441. package/dist/index88.js.map +1 -1
  442. package/dist/index89.js +2 -2
  443. package/dist/index89.js.map +1 -1
  444. package/dist/index9.js +4 -4
  445. package/dist/index90.js +1 -1
  446. package/dist/index90.js.map +1 -1
  447. package/dist/index91.js +2 -2
  448. package/dist/index91.js.map +1 -1
  449. package/dist/index92.js +1 -1
  450. package/dist/index92.js.map +1 -1
  451. package/dist/index93.js +1 -1
  452. package/dist/index93.js.map +1 -1
  453. package/dist/index94.js +1 -1
  454. package/dist/index94.js.map +1 -1
  455. package/dist/index95.js +1 -1
  456. package/dist/index95.js.map +1 -1
  457. package/dist/index96.js +1 -1
  458. package/dist/index96.js.map +1 -1
  459. package/dist/index97.js +1 -1
  460. package/dist/index97.js.map +1 -1
  461. package/dist/index98.js +1 -1
  462. package/dist/index98.js.map +1 -1
  463. package/dist/index99.js +1 -1
  464. package/dist/index99.js.map +1 -1
  465. package/package.json +1 -1
  466. package/dist/index245.js +0 -173
  467. package/dist/index245.js.map +0 -1
  468. package/dist/index246.js +0 -7
  469. package/dist/index246.js.map +0 -1
  470. package/dist/index248.js +0 -22
  471. package/dist/index248.js.map +0 -1
  472. package/dist/index249.js +0 -13
  473. package/dist/index249.js.map +0 -1
  474. package/dist/index252.js +0 -173
  475. package/dist/index252.js.map +0 -1
  476. package/dist/index50.js +0 -89
  477. package/dist/index50.js.map +0 -1
  478. package/dist/index87.js +0 -5
  479. package/dist/index87.js.map +0 -1
package/dist/index68.js CHANGED
@@ -1,116 +1,321 @@
1
- import { useRef as l, useState as M, useCallback as y, useEffect as U } from "react";
2
- import { useComboboxNavigation as E } from "./index79.js";
3
- import { useDismissOnFocusOut as H } from "./index80.js";
4
- function L({
5
- items: a,
6
- isOpen: r,
7
- onOpenChange: c,
8
- onSelect: x,
9
- listboxId: n,
10
- loop: C = !0,
11
- disabled: D = !1,
12
- optionSelector: v = '[role="option"]',
13
- hasItems: g,
14
- keepHighlightOnSelect: P = !1,
15
- closeOnTab: k = !0,
16
- isItemDisabled: f
17
- }) {
18
- const h = l(null), s = l(!1), d = l(!1), u = l(!1), [w, t] = M(!1), F = g !== void 0 ? g : a.length > 0, p = y(() => {
19
- c(!1);
20
- }, [c]);
21
- U(() => {
22
- r || (s.current = !1, u.current = !1);
23
- }, [r]);
24
- const o = E({
25
- items: a,
26
- isOpen: r,
27
- onSelect: x,
28
- onClose: p,
29
- onOpen: () => c(!0),
30
- loop: C,
31
- disabled: D,
32
- listboxRef: h,
33
- optionSelector: v,
34
- keepHighlightOnSelect: P,
35
- closeOnTab: k,
36
- isItemDisabled: f
37
- }), i = H({
38
- onFocusOut: p,
39
- onEscape: p,
40
- disabled: !r
41
- }), K = {
42
- ...i,
43
- onPointerMove: () => {
44
- w && t(!1);
45
- },
46
- onPointerDown: () => {
47
- u.current = !0, t(!1);
48
- },
49
- onPointerUp: () => {
50
- },
51
- onFocusCapture: (e) => {
52
- i.onFocusCapture(e), u.current ? t(!1) : t(!0);
53
- },
54
- onKeyDownCapture: (e) => {
55
- i.onKeyDownCapture(e), (e.key === "Tab" || e.key === "ArrowDown" || e.key === "ArrowUp") && (u.current = !1), (e.key === "ArrowDown" || e.key === "ArrowUp") && t(!0);
56
- },
57
- onBlurCapture: (e) => {
58
- if (t(!1), !s.current) {
59
- if (d.current) {
60
- d.current = !1;
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 "./index6.js";
4
+ import { Button as rt } from "./index4.js";
5
+ import { debounce as lt } from "./index230.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
86
+ }) => {
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();
61
98
  return;
62
99
  }
63
- i.onBlurCapture(e);
100
+ const P = s[s.length - 1], A = C(P.targetElementSelector, P.iframeSelector);
101
+ A && A.contains(v) && u();
64
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);
108
+ };
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;
65
118
  }
66
- }, m = {
67
- role: "combobox",
68
- "aria-expanded": r && F,
69
- "aria-haspopup": "listbox",
70
- "aria-controls": r ? n : void 0,
71
- "aria-autocomplete": "list",
72
- "aria-activedescendant": o.highlightedIndex >= 0 ? o.getOptionId(n, o.highlightedIndex) : void 0,
73
- onKeyDown: (e) => {
74
- e.key === "Tab" && (d.current = !0), o.handleKeyDown(e);
75
- }
76
- }, I = {
77
- id: n,
78
- role: "listbox",
79
- ref: h,
80
- onMouseDownCapture: (e) => {
81
- s.current = !0;
82
- },
83
- onMouseUpCapture: (e) => {
84
- s.current = !1;
85
- },
86
- onMouseLeave: (e) => {
87
- s.current = !1;
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);
193
+ };
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();
265
+ };
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);
88
284
  }
89
- }, R = y((e, A = !1) => {
90
- const b = f?.(a[e], e);
91
- return {
92
- id: o.getOptionId(n, e),
93
- role: "option",
94
- ...b ? {} : {
95
- "aria-selected": A
96
- },
97
- ...b ? {
98
- "aria-disabled": !0
99
- } : {}
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
+ }
100
293
  };
101
- }, [o.getOptionId, n, f, a]);
102
- return {
103
- containerProps: K,
104
- inputProps: m,
105
- listboxProps: I,
106
- getOptionProps: R,
107
- highlightedIndex: o.highlightedIndex,
108
- setHighlightedIndex: o.setHighlightedIndex,
109
- getOptionId: o.getOptionId,
110
- isKeyboardFocused: w
111
- };
112
- }
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
+ }
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);
317
+ };
113
318
  export {
114
- L as useCombobox
319
+ pt as GuidedTour
115
320
  };
116
321
  //# sourceMappingURL=index68.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"index68.js","sources":["../src/utils/a11y/useCombobox.ts"],"sourcesContent":["import { useRef, useCallback, useEffect, useState } from 'react';\nimport type { RefObject } from 'react';\nimport { useComboboxNavigation } from './useComboboxNavigation';\nimport { useDismissOnFocusOut } from './useDismissOnFocusOut';\nimport type { UseDismissOnFocusOutReturn } from './useDismissOnFocusOut';\n\nexport interface UseComboboxOptions<T = any> {\n /**\n * Array of items to navigate through\n */\n items: T[];\n \n /**\n * Whether the dropdown is currently open\n */\n isOpen: boolean;\n \n /**\n * Callback to change the open state\n */\n onOpenChange: (open: boolean) => void;\n \n /**\n * Callback when an item is selected (Enter key)\n */\n onSelect: (item: T, index: number) => void;\n \n /**\n * Stable ID for the listbox element\n */\n listboxId: string;\n \n /**\n * Whether to wrap around at the ends of the list.\n * Default: true\n */\n loop?: boolean;\n \n /**\n * Whether keyboard navigation is disabled\n * (e.g., for custom rendered content)\n */\n disabled?: boolean;\n \n /**\n * CSS selector for option elements (default: '[role=\"option\"]')\n */\n optionSelector?: string;\n \n /**\n * Whether the listbox has any items to show\n * Used for aria-expanded logic\n * Default: items.length > 0\n */\n hasItems?: boolean;\n\n /**\n * Whether to keep the highlighted index after selecting an item.\n * Useful for multi-select where the dropdown stays open after selection.\n * Default: false\n */\n keepHighlightOnSelect?: boolean;\n\n /**\n * Whether Tab should close the dropdown.\n * Set to false when Tab should move focus to elements within the popup (e.g. CTAs).\n * Default: true\n */\n closeOnTab?: boolean;\n\n /**\n * Predicate to mark items as disabled. Disabled items are reachable via arrow keys\n * (so screen readers can announce them) but Enter/Space selection is blocked.\n */\n isItemDisabled?: (item: T, index: number) => boolean;\n}\n\nexport interface UseComboboxReturn {\n /**\n * Props to spread on the container element (handles dismiss on focus out + keyboard focus tracking)\n */\n containerProps: UseDismissOnFocusOutReturn<HTMLElement> & {\n onPointerMove: () => void;\n onPointerDown: () => void;\n onPointerUp: () => void;\n };\n \n /**\n * Props to spread on the combobox input element\n */\n inputProps: {\n role: 'combobox';\n 'aria-expanded': boolean;\n 'aria-haspopup': 'listbox';\n 'aria-controls': string | undefined;\n 'aria-autocomplete': 'list';\n 'aria-activedescendant': string | undefined;\n onKeyDown: (e: React.KeyboardEvent) => void;\n };\n \n /**\n * Props to spread on the listbox element\n */\n listboxProps: {\n id: string;\n role: 'listbox';\n ref: RefObject<HTMLDivElement | null>;\n onMouseDownCapture: (e: React.MouseEvent) => void;\n onMouseUpCapture: (e: React.MouseEvent) => void;\n onMouseLeave: (e: React.MouseEvent) => void;\n };\n \n /**\n * Generate props for an option element at the given index\n * @param selected - Whether this option is the currently selected/chosen value (not keyboard highlight)\n */\n getOptionProps: (index: number, selected?: boolean) => {\n id: string;\n role: 'option';\n 'aria-selected'?: boolean;\n 'aria-disabled'?: true;\n };\n \n /**\n * Currently highlighted index (-1 if none)\n */\n highlightedIndex: number;\n \n /**\n * Set the highlighted index manually\n */\n setHighlightedIndex: (index: number | ((prev: number) => number)) => void;\n \n /**\n * Generate stable ID for an option\n */\n getOptionId: (listboxId: string, index: number) => string;\n\n /**\n * Whether the combobox input was focused via keyboard (Tab) rather than pointer.\n * Use to conditionally show focus ring only on keyboard interaction.\n */\n isKeyboardFocused: boolean;\n}\n\n/**\n * Comprehensive hook for implementing WAI-ARIA combobox pattern.\n * \n * Combines:\n * - Keyboard navigation (Arrow Up/Down, Enter, Escape, Tab)\n * - Focus management and dismissal\n * - ARIA attributes for accessibility\n * - Auto-scroll highlighted item into view\n * \n * This hook provides a complete, batteries-included solution for building\n * accessible combobox components (autocomplete, select, search with suggestions, etc.)\n * \n * @example Basic usage\n * ```tsx\n * const MyCombobox = () => {\n * const [isOpen, setIsOpen] = useState(false);\n * const [items, setItems] = useState(['Apple', 'Banana', 'Cherry']);\n * \n * const {\n * containerProps,\n * inputProps,\n * listboxProps,\n * getOptionProps,\n * highlightedIndex\n * } = useCombobox({\n * items,\n * isOpen,\n * onOpenChange: setIsOpen,\n * onSelect: (item) => console.log('Selected:', item),\n * listboxId: 'my-listbox'\n * });\n * \n * return (\n * <div {...containerProps}>\n * <input {...inputProps} />\n * {isOpen && (\n * <div {...listboxProps}>\n * {items.map((item, i) => (\n * <div key={i} {...getOptionProps(i)}>\n * {item}\n * </div>\n * ))}\n * </div>\n * )}\n * </div>\n * );\n * };\n * ```\n * \n * @example With custom ARIA labels and handlers\n * ```tsx\n * const MySearchBox = () => {\n * const [query, setQuery] = useState('');\n * const [suggestions, setSuggestions] = useState([]);\n * const [isOpen, setIsOpen] = useState(false);\n * \n * const { containerProps, inputProps, listboxProps, getOptionProps } = useCombobox({\n * items: suggestions,\n * isOpen,\n * onOpenChange: setIsOpen,\n * onSelect: (suggestion) => {\n * setQuery(suggestion);\n * setIsOpen(false);\n * },\n * listboxId: 'search-suggestions'\n * });\n * \n * return (\n * <div {...containerProps}>\n * <input\n * {...inputProps}\n * value={query}\n * onChange={(e) => setQuery(e.target.value)}\n * aria-label=\"Search\"\n * />\n * {isOpen && suggestions.length > 0 && (\n * <div {...listboxProps} aria-label=\"Search suggestions\">\n * {suggestions.map((suggestion, i) => (\n * <div\n * key={i}\n * {...getOptionProps(i)}\n * onClick={() => {\n * setQuery(suggestion);\n * setIsOpen(false);\n * }}\n * >\n * {suggestion}\n * </div>\n * ))}\n * </div>\n * )}\n * </div>\n * );\n * };\n * ```\n */\nexport function useCombobox<T = any>({\n items,\n isOpen,\n onOpenChange,\n onSelect,\n listboxId,\n loop = true,\n disabled = false,\n optionSelector = '[role=\"option\"]',\n hasItems,\n keepHighlightOnSelect = false,\n closeOnTab = true,\n isItemDisabled\n}: UseComboboxOptions<T>): UseComboboxReturn {\n const listboxRef = useRef<HTMLDivElement | null>(null);\n const pointerDownInListboxRef = useRef(false);\n const tabKeyPressedRef = useRef(false);\n const pointerFocusRef = useRef(false);\n const [isKeyboardFocused, setIsKeyboardFocused] = useState(false);\n \n // Determine if we should show as expanded\n const shouldShowExpanded = hasItems !== undefined ? hasItems : items.length > 0;\n \n // Close dropdown callback\n const closeDropdown = useCallback(() => {\n onOpenChange(false);\n }, [onOpenChange]);\n\n // Ensure pointer state doesn't get stuck when listbox unmounts\n useEffect(() => {\n if (!isOpen) {\n pointerDownInListboxRef.current = false;\n pointerFocusRef.current = false;\n }\n }, [isOpen]);\n \n // Keyboard navigation with aria-activedescendant\n const navigation = useComboboxNavigation<T>({\n items,\n isOpen,\n onSelect,\n onClose: closeDropdown,\n onOpen: () => onOpenChange(true),\n loop,\n disabled,\n listboxRef,\n optionSelector,\n keepHighlightOnSelect,\n closeOnTab,\n isItemDisabled\n });\n \n // Focus out / Escape dismissal\n const dismissHandlers = useDismissOnFocusOut({\n onFocusOut: closeDropdown,\n onEscape: closeDropdown,\n disabled: !isOpen\n });\n\n const containerProps = {\n ...dismissHandlers,\n onPointerMove: () => {\n if (isKeyboardFocused) {\n setIsKeyboardFocused(false);\n }\n },\n onPointerDown: () => {\n pointerFocusRef.current = true;\n setIsKeyboardFocused(false);\n },\n onPointerUp: () => {\n // Don't reset pointerFocusRef here — timing races with programmatic focus\n // (e.g. focus-on-open via double rAF) cause it to clear before onFocusCapture\n // fires, incorrectly setting isKeyboardFocused=true.\n // Instead, pointerFocusRef is reset only when keyboard navigation starts\n // (Tab/Arrow in onKeyDownCapture), ensuring any programmatic focus after a\n // click is always treated as pointer context.\n },\n onFocusCapture: (e: React.FocusEvent<HTMLElement>) => {\n dismissHandlers.onFocusCapture(e);\n\n if (pointerFocusRef.current) {\n setIsKeyboardFocused(false);\n } else {\n setIsKeyboardFocused(true);\n }\n },\n onKeyDownCapture: (e: React.KeyboardEvent<HTMLElement>) => {\n dismissHandlers.onKeyDownCapture(e);\n\n // Keyboard interaction starts — clear pointer context so subsequent\n // focus events are correctly identified as keyboard-initiated.\n if (e.key === 'Tab' || e.key === 'ArrowDown' || e.key === 'ArrowUp') {\n pointerFocusRef.current = false;\n }\n\n // Arrow keys mean keyboard navigation — show focus outline even if\n // the combobox was opened with mouse (activedescendant doesn't move\n // DOM focus, so onFocusCapture alone can't detect the switch).\n if (e.key === 'ArrowDown' || e.key === 'ArrowUp') {\n setIsKeyboardFocused(true);\n }\n },\n onBlurCapture: (e: React.FocusEvent<HTMLElement>) => {\n setIsKeyboardFocused(false);\n\n // Clicking inside a listbox option can blur the input (relatedTarget is null),\n // which would dismiss before the click handler runs. Prevent that.\n if (pointerDownInListboxRef.current) return;\n\n // Tab key pressed - let Tab handler close dropdown, skip blur detection\n if (tabKeyPressedRef.current) {\n tabKeyPressedRef.current = false;\n return;\n }\n\n dismissHandlers.onBlurCapture(e);\n }\n };\n \n // Build input props\n const inputProps = {\n role: 'combobox' as const,\n 'aria-expanded': isOpen && shouldShowExpanded,\n 'aria-haspopup': 'listbox' as const,\n 'aria-controls': isOpen ? listboxId : undefined,\n 'aria-autocomplete': 'list' as const,\n 'aria-activedescendant': \n navigation.highlightedIndex >= 0 \n ? navigation.getOptionId(listboxId, navigation.highlightedIndex) \n : undefined,\n onKeyDown: (e: React.KeyboardEvent) => {\n // Set flag when Tab is pressed (before blur fires)\n if (e.key === 'Tab') {\n tabKeyPressedRef.current = true;\n }\n navigation.handleKeyDown(e);\n }\n };\n \n // Build listbox props\n const listboxProps = {\n id: listboxId,\n role: 'listbox' as const,\n ref: listboxRef,\n onMouseDownCapture: (_e: React.MouseEvent) => {\n pointerDownInListboxRef.current = true;\n },\n onMouseUpCapture: (_e: React.MouseEvent) => {\n pointerDownInListboxRef.current = false;\n },\n onMouseLeave: (_e: React.MouseEvent) => {\n pointerDownInListboxRef.current = false;\n }\n };\n \n // Option props generator\n const getOptionProps = useCallback(\n (index: number, selected: boolean = false) => {\n const disabled = isItemDisabled?.(items[index], index);\n return {\n id: navigation.getOptionId(listboxId, index),\n role: 'option' as const,\n ...(!disabled ? { 'aria-selected': selected } : {}),\n ...(disabled ? { 'aria-disabled': true as const } : {})\n };\n },\n [navigation.getOptionId, listboxId, isItemDisabled, items]\n );\n \n return {\n containerProps,\n inputProps,\n listboxProps,\n getOptionProps,\n highlightedIndex: navigation.highlightedIndex,\n setHighlightedIndex: navigation.setHighlightedIndex,\n getOptionId: navigation.getOptionId,\n isKeyboardFocused\n };\n}\n"],"names":["useRef","useState","useCallback","useEffect","useComboboxNavigation","useDismissOnFocusOut","useCombobox","items","isOpen","onOpenChange","onSelect","listboxId","loop","disabled","optionSelector","hasItems","keepHighlightOnSelect","closeOnTab","isItemDisabled","listboxRef","pointerDownInListboxRef","tabKeyPressedRef","pointerFocusRef","isKeyboardFocused","setIsKeyboardFocused","shouldShowExpanded","undefined","length","closeDropdown","current","navigation","onClose","onOpen","dismissHandlers","onFocusOut","onEscape","containerProps","onPointerMove","onPointerDown","onPointerUp","onFocusCapture","e","onKeyDownCapture","key","onBlurCapture","inputProps","role","highlightedIndex","getOptionId","onKeyDown","handleKeyDown","listboxProps","id","ref","onMouseDownCapture","_e","onMouseUpCapture","onMouseLeave","getOptionProps","index","selected","setHighlightedIndex"],"mappings":"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"}
1
+ {"version":3,"file":"index68.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","console","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","React","createElement","ref","className","automationId","zIndex","Icon","name","fill","rotation","content","isOptionalStep","Button","type","label","onClick"],"mappings":"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"}
package/dist/index69.js CHANGED
@@ -1,22 +1,50 @@
1
- import { useRef as u, useEffect as i } from "react";
2
- function f(n, {
3
- targetSelector: r = "#main-content h1",
4
- fallbackId: c = "main-content"
5
- } = {}) {
6
- const t = u(!0);
7
- i(() => {
8
- if (t.current) {
9
- t.current = !1;
10
- return;
1
+ import v, { forwardRef as k } from "react";
2
+ import { getA11yNameAttributes as L } from "./index86.js";
3
+ import "./index77.js";
4
+ /* empty css */
5
+ function r() {
6
+ return r = Object.assign ? Object.assign.bind() : function(o) {
7
+ for (var t = 1; t < arguments.length; t++) {
8
+ var n = arguments[t];
9
+ for (var e in n) ({}).hasOwnProperty.call(n, e) && (o[e] = n[e]);
11
10
  }
12
- const o = requestAnimationFrame(() => {
13
- const e = document.querySelector(r) || document.getElementById(c);
14
- e && (e.hasAttribute("tabindex") || e.setAttribute("tabindex", "-1"), e.focus());
15
- });
16
- return () => cancelAnimationFrame(o);
17
- }, n);
11
+ return o;
12
+ }, r.apply(null, arguments);
18
13
  }
14
+ const y = " (opens in a new tab)", R = /* @__PURE__ */ k(({
15
+ href: o,
16
+ label: t,
17
+ children: n,
18
+ external: e = !1,
19
+ className: l = "",
20
+ automationId: c = "",
21
+ ariaLabel: a,
22
+ ariaLabelledBy: m,
23
+ ariaDescribedBy: u,
24
+ onClick: f,
25
+ target: s,
26
+ rel: i,
27
+ ...p
28
+ }, d) => {
29
+ const g = n ? void 0 : t, b = e ? s ?? "_blank" : s, A = e ? i ?? "noopener noreferrer" : i, N = L({
30
+ // External link aria-label enhancement for screen readers:
31
+ // When external={true}, always append "(opens in a new tab)"
32
+ ariaLabel: e ? `${a ?? g ?? ""}${y}` : a,
33
+ ariaLabelledBy: m,
34
+ ariaDescribedBy: u
35
+ }), _ = ["se-design-link", "focus-outline", "focus-visible:underline", l].filter(Boolean).join(" ");
36
+ return /* @__PURE__ */ v.createElement("a", r({
37
+ ref: d,
38
+ href: o,
39
+ target: b,
40
+ rel: A,
41
+ className: _,
42
+ "data-automation-id": c,
43
+ onClick: f
44
+ }, p, N), n ?? t);
45
+ });
46
+ R.displayName = "Link";
19
47
  export {
20
- f as useFocusManagement
48
+ R as Link
21
49
  };
22
50
  //# sourceMappingURL=index69.js.map