se-design 1.0.83-dev.4 → 1.0.83-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 (269) hide show
  1. package/dist/assets/icons/tag.svg +2 -2
  2. package/dist/assets/style.css +1 -1
  3. package/dist/components/AccessibleDiv/index.d.ts +1 -23
  4. package/dist/components/Dropdown/index.d.ts +0 -2
  5. package/dist/components/DropdownWithInputTags/index.d.ts +0 -3
  6. package/dist/components/Link/index.d.ts +2 -6
  7. package/dist/components/NLSearch/ClearAiFiltersBar.d.ts +21 -0
  8. package/dist/components/NLSearch/NLDynamicChip.d.ts +26 -0
  9. package/dist/components/NLSearch/NLSearchInput.d.ts +46 -0
  10. package/dist/components/NLSearch/index.d.ts +6 -0
  11. package/dist/components/index.d.ts +2 -0
  12. package/dist/index.js +139 -140
  13. package/dist/index.js.map +1 -1
  14. package/dist/index100.js.map +1 -1
  15. package/dist/index101.js.map +1 -1
  16. package/dist/index102.js.map +1 -1
  17. package/dist/index103.js.map +1 -1
  18. package/dist/index104.js.map +1 -1
  19. package/dist/index105.js.map +1 -1
  20. package/dist/index106.js.map +1 -1
  21. package/dist/index107.js.map +1 -1
  22. package/dist/index108.js.map +1 -1
  23. package/dist/index109.js.map +1 -1
  24. package/dist/index11.js +1 -1
  25. package/dist/index110.js.map +1 -1
  26. package/dist/index111.js.map +1 -1
  27. package/dist/index112.js.map +1 -1
  28. package/dist/index113.js.map +1 -1
  29. package/dist/index114.js.map +1 -1
  30. package/dist/index115.js.map +1 -1
  31. package/dist/index116.js.map +1 -1
  32. package/dist/index117.js.map +1 -1
  33. package/dist/index118.js.map +1 -1
  34. package/dist/index119.js.map +1 -1
  35. package/dist/index12.js +1 -1
  36. package/dist/index120.js.map +1 -1
  37. package/dist/index121.js.map +1 -1
  38. package/dist/index122.js.map +1 -1
  39. package/dist/index123.js.map +1 -1
  40. package/dist/index124.js.map +1 -1
  41. package/dist/index125.js.map +1 -1
  42. package/dist/index126.js.map +1 -1
  43. package/dist/index127.js.map +1 -1
  44. package/dist/index128.js.map +1 -1
  45. package/dist/index129.js.map +1 -1
  46. package/dist/index13.js +1 -1
  47. package/dist/index130.js.map +1 -1
  48. package/dist/index131.js.map +1 -1
  49. package/dist/index132.js.map +1 -1
  50. package/dist/index133.js.map +1 -1
  51. package/dist/index134.js.map +1 -1
  52. package/dist/index135.js.map +1 -1
  53. package/dist/index136.js.map +1 -1
  54. package/dist/index137.js.map +1 -1
  55. package/dist/index138.js.map +1 -1
  56. package/dist/index139.js.map +1 -1
  57. package/dist/index140.js.map +1 -1
  58. package/dist/index141.js.map +1 -1
  59. package/dist/index142.js.map +1 -1
  60. package/dist/index143.js.map +1 -1
  61. package/dist/index144.js.map +1 -1
  62. package/dist/index145.js.map +1 -1
  63. package/dist/index146.js.map +1 -1
  64. package/dist/index147.js.map +1 -1
  65. package/dist/index148.js.map +1 -1
  66. package/dist/index149.js.map +1 -1
  67. package/dist/index150.js.map +1 -1
  68. package/dist/index151.js.map +1 -1
  69. package/dist/index152.js.map +1 -1
  70. package/dist/index153.js.map +1 -1
  71. package/dist/index154.js.map +1 -1
  72. package/dist/index155.js.map +1 -1
  73. package/dist/index156.js.map +1 -1
  74. package/dist/index157.js.map +1 -1
  75. package/dist/index158.js.map +1 -1
  76. package/dist/index159.js.map +1 -1
  77. package/dist/index16.js +23 -25
  78. package/dist/index16.js.map +1 -1
  79. package/dist/index160.js.map +1 -1
  80. package/dist/index161.js.map +1 -1
  81. package/dist/index162.js.map +1 -1
  82. package/dist/index163.js.map +1 -1
  83. package/dist/index164.js.map +1 -1
  84. package/dist/index165.js.map +1 -1
  85. package/dist/index166.js.map +1 -1
  86. package/dist/index167.js.map +1 -1
  87. package/dist/index168.js.map +1 -1
  88. package/dist/index169.js.map +1 -1
  89. package/dist/index17.js +29 -29
  90. package/dist/index17.js.map +1 -1
  91. package/dist/index170.js.map +1 -1
  92. package/dist/index171.js.map +1 -1
  93. package/dist/index172.js.map +1 -1
  94. package/dist/index173.js.map +1 -1
  95. package/dist/index174.js.map +1 -1
  96. package/dist/index175.js.map +1 -1
  97. package/dist/index176.js.map +1 -1
  98. package/dist/index177.js.map +1 -1
  99. package/dist/index178.js.map +1 -1
  100. package/dist/index179.js.map +1 -1
  101. package/dist/index18.js +63 -85
  102. package/dist/index18.js.map +1 -1
  103. package/dist/index180.js.map +1 -1
  104. package/dist/index181.js.map +1 -1
  105. package/dist/index182.js.map +1 -1
  106. package/dist/index183.js.map +1 -1
  107. package/dist/index184.js.map +1 -1
  108. package/dist/index185.js.map +1 -1
  109. package/dist/index186.js.map +1 -1
  110. package/dist/index187.js.map +1 -1
  111. package/dist/index188.js.map +1 -1
  112. package/dist/index189.js.map +1 -1
  113. package/dist/index19.js +167 -182
  114. package/dist/index19.js.map +1 -1
  115. package/dist/index190.js.map +1 -1
  116. package/dist/index191.js.map +1 -1
  117. package/dist/index192.js.map +1 -1
  118. package/dist/index193.js +1 -1
  119. package/dist/index193.js.map +1 -1
  120. package/dist/index194.js.map +1 -1
  121. package/dist/index195.js.map +1 -1
  122. package/dist/index196.js.map +1 -1
  123. package/dist/index197.js.map +1 -1
  124. package/dist/index198.js.map +1 -1
  125. package/dist/index199.js.map +1 -1
  126. package/dist/index200.js.map +1 -1
  127. package/dist/index201.js.map +1 -1
  128. package/dist/index202.js.map +1 -1
  129. package/dist/index203.js.map +1 -1
  130. package/dist/index207.js +2 -2
  131. package/dist/index208.js +3 -3
  132. package/dist/index208.js.map +1 -1
  133. package/dist/index216.js +9 -13
  134. package/dist/index216.js.map +1 -1
  135. package/dist/index23.js +2 -2
  136. package/dist/index244.js +1 -1
  137. package/dist/index25.js +160 -174
  138. package/dist/index25.js.map +1 -1
  139. package/dist/index27.js +1 -1
  140. package/dist/index28.js +4 -4
  141. package/dist/index28.js.map +1 -1
  142. package/dist/index29.js +30 -34
  143. package/dist/index29.js.map +1 -1
  144. package/dist/index3.js +50 -60
  145. package/dist/index3.js.map +1 -1
  146. package/dist/index30.js +3 -3
  147. package/dist/index32.js +10 -11
  148. package/dist/index35.js +3 -3
  149. package/dist/index36.js +4 -4
  150. package/dist/index38.js +195 -210
  151. package/dist/index38.js.map +1 -1
  152. package/dist/index39.js +2 -2
  153. package/dist/index4.js +3 -3
  154. package/dist/index42.js +7 -8
  155. package/dist/index43.js +13 -14
  156. package/dist/index43.js.map +1 -1
  157. package/dist/index45.js +60 -61
  158. package/dist/index45.js.map +1 -1
  159. package/dist/index46.js +198 -194
  160. package/dist/index46.js.map +1 -1
  161. package/dist/index47.js +40 -38
  162. package/dist/index47.js.map +1 -1
  163. package/dist/index48.js +36 -33
  164. package/dist/index48.js.map +1 -1
  165. package/dist/index50.js +189 -78
  166. package/dist/index50.js.map +1 -1
  167. package/dist/index51.js +36 -459
  168. package/dist/index51.js.map +1 -1
  169. package/dist/index52.js +33 -98
  170. package/dist/index52.js.map +1 -1
  171. package/dist/index53.js +151 -36
  172. package/dist/index53.js.map +1 -1
  173. package/dist/index54.js +84 -36
  174. package/dist/index54.js.map +1 -1
  175. package/dist/index55.js +456 -88
  176. package/dist/index55.js.map +1 -1
  177. package/dist/index56.js +96 -161
  178. package/dist/index56.js.map +1 -1
  179. package/dist/index57.js +35 -146
  180. package/dist/index57.js.map +1 -1
  181. package/dist/index58.js +38 -33
  182. package/dist/index58.js.map +1 -1
  183. package/dist/index59.js +89 -83
  184. package/dist/index59.js.map +1 -1
  185. package/dist/index6.js +237 -239
  186. package/dist/index6.js.map +1 -1
  187. package/dist/index60.js +157 -113
  188. package/dist/index60.js.map +1 -1
  189. package/dist/index61.js +143 -62
  190. package/dist/index61.js.map +1 -1
  191. package/dist/index62.js +33 -152
  192. package/dist/index62.js.map +1 -1
  193. package/dist/index63.js +80 -312
  194. package/dist/index63.js.map +1 -1
  195. package/dist/index64.js +118 -46
  196. package/dist/index64.js.map +1 -1
  197. package/dist/index65.js +62 -140
  198. package/dist/index65.js.map +1 -1
  199. package/dist/index66.js +152 -12
  200. package/dist/index66.js.map +1 -1
  201. package/dist/index67.js +316 -44
  202. package/dist/index67.js.map +1 -1
  203. package/dist/index68.js +44 -104
  204. package/dist/index68.js.map +1 -1
  205. package/dist/index69.js +143 -18
  206. package/dist/index69.js.map +1 -1
  207. package/dist/index7.js +8 -9
  208. package/dist/index70.js +9 -63
  209. package/dist/index70.js.map +1 -1
  210. package/dist/index71.js +45 -26
  211. package/dist/index71.js.map +1 -1
  212. package/dist/index72.js +78 -102
  213. package/dist/index72.js.map +1 -1
  214. package/dist/index73.js +18 -61
  215. package/dist/index73.js.map +1 -1
  216. package/dist/index74.js +63 -18
  217. package/dist/index74.js.map +1 -1
  218. package/dist/index75.js +24 -105
  219. package/dist/index75.js.map +1 -1
  220. package/dist/index76.js +108 -18
  221. package/dist/index76.js.map +1 -1
  222. package/dist/index77.js +61 -10
  223. package/dist/index77.js.map +1 -1
  224. package/dist/index78.js +21 -5
  225. package/dist/index78.js.map +1 -1
  226. package/dist/index79.js +5 -56
  227. package/dist/index79.js.map +1 -1
  228. package/dist/index80.js +50 -23
  229. package/dist/index80.js.map +1 -1
  230. package/dist/index81.js +22 -7
  231. package/dist/index81.js.map +1 -1
  232. package/dist/index82.js +12 -0
  233. package/dist/index82.js.map +1 -0
  234. package/dist/index84.js +2 -2
  235. package/dist/index84.js.map +1 -1
  236. package/dist/index85.js +2 -2
  237. package/dist/index85.js.map +1 -1
  238. package/dist/index86.js +2 -2
  239. package/dist/index86.js.map +1 -1
  240. package/dist/index87.js +2 -2
  241. package/dist/index87.js.map +1 -1
  242. package/dist/index88.js +1 -1
  243. package/dist/index88.js.map +1 -1
  244. package/dist/index89.js +1 -1
  245. package/dist/index89.js.map +1 -1
  246. package/dist/index9.js +3 -3
  247. package/dist/index90.js +1 -1
  248. package/dist/index90.js.map +1 -1
  249. package/dist/index91.js +1 -1
  250. package/dist/index91.js.map +1 -1
  251. package/dist/index92.js +1 -1
  252. package/dist/index92.js.map +1 -1
  253. package/dist/index93.js +1 -1
  254. package/dist/index93.js.map +1 -1
  255. package/dist/index94.js +1 -1
  256. package/dist/index94.js.map +1 -1
  257. package/dist/index95.js +1 -1
  258. package/dist/index95.js.map +1 -1
  259. package/dist/index96.js +1 -1
  260. package/dist/index96.js.map +1 -1
  261. package/dist/index97.js.map +1 -1
  262. package/dist/index98.js.map +1 -1
  263. package/dist/index99.js.map +1 -1
  264. package/package.json +1 -1
  265. package/dist/assets/icons/chat.svg +0 -4
  266. package/dist/index49.js +0 -152
  267. package/dist/index49.js.map +0 -1
  268. package/dist/index83.js +0 -5
  269. package/dist/index83.js.map +0 -1
package/dist/index66.js CHANGED
@@ -1,15 +1,155 @@
1
- function i({
2
- titleId: r,
3
- descriptionId: t,
4
- isFocusable: a = !1
5
- }) {
6
- const e = {
7
- role: "region",
8
- "aria-labelledby": r
9
- };
10
- return t && (e["aria-describedby"] = t), a && (e.tabIndex = -1), e;
11
- }
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
18
+ }) => {
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);
87
+ };
88
+ }, [t, e, y]), w(() => {
89
+ if (t < e.length && c.current) {
90
+ const n = c.current, i = (r) => {
91
+ r.preventDefault(), r.stopPropagation();
92
+ };
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);
101
+ };
102
+ }
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
+ }));
151
+ };
12
152
  export {
13
- i as getRegionAttributes
153
+ Q as OnboardingTour
14
154
  };
15
155
  //# sourceMappingURL=index66.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"index66.js","sources":["../src/utils/a11y/regionAttributes.ts"],"sourcesContent":["/**\n * Returns ARIA attributes for a region container element.\n * Used for semantic containers that need role=\"region\" with proper labeling.\n * \n * @param options - Configuration options\n * @param options.titleId - Required. ID of the heading element that labels this region\n * @param options.descriptionId - Optional. ID of the description element\n * @param options.isFocusable - Optional. Whether to make the region focusable (adds tabIndex={-1})\n * @returns Object with region ARIA attributes\n */\nexport function getRegionAttributes({\n titleId,\n descriptionId,\n isFocusable = false\n}: {\n titleId: string;\n descriptionId?: string;\n isFocusable?: boolean;\n}): {\n role: 'region';\n 'aria-labelledby': string;\n 'aria-describedby'?: string;\n tabIndex?: number;\n} {\n const attributes: {\n role: 'region';\n 'aria-labelledby': string;\n 'aria-describedby'?: string;\n tabIndex?: number;\n } = {\n role: 'region',\n 'aria-labelledby': titleId\n };\n\n if (descriptionId) {\n attributes['aria-describedby'] = descriptionId;\n }\n\n if (isFocusable) {\n attributes.tabIndex = -1;\n }\n\n return attributes;\n}\n"],"names":["getRegionAttributes","titleId","descriptionId","isFocusable","attributes","role","tabIndex"],"mappings":"AAUO,SAASA,EAAoB;AAAA,EAClCC,SAAAA;AAAAA,EACAC,eAAAA;AAAAA,EACAC,aAAAA,IAAc;AAKhB,GAKE;AACA,QAAMC,IAKF;AAAA,IACFC,MAAM;AAAA,IACN,mBAAmBJ;AAAAA,EAAAA;AAGrB,SAAIC,MACFE,EAAW,kBAAkB,IAAIF,IAG/BC,MACFC,EAAWE,WAAW,KAGjBF;AACT;"}
1
+ {"version":3,"file":"index66.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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"}
package/dist/index67.js CHANGED
@@ -1,49 +1,321 @@
1
- import * as t from "react";
2
- import { isVirtualClick as w } from "./index78.js";
3
- function R({
4
- disabled: p = !1,
5
- loading: i = !1,
6
- onClick: u,
7
- onKeyboardActivate: s,
8
- isNative: l = !0,
9
- role: d = "button",
10
- tabIndex: D = 0,
11
- stopPropagation: c = !1,
12
- preventDefault: f = !1,
13
- pressed: P
14
- } = {}) {
15
- const e = p || i, n = t.useRef(!1), o = t.useCallback(() => {
16
- n.current = !0;
17
- }, []), m = t.useCallback((r) => {
18
- if (e) return;
19
- c && r.stopPropagation(), f && r.preventDefault();
20
- const y = w(r.nativeEvent), C = n.current;
21
- n.current = !1;
22
- const b = y ? "virtual" : C ? "pointer" : "keyboard";
23
- if ((b === "keyboard" || b === "virtual") && s) {
24
- s(r);
25
- return;
26
- }
27
- u?.(r);
28
- }, [e, u, s, c, f]), v = t.useCallback((r) => {
29
- e || (r.key === "Enter" || r.key === " ") && (r.preventDefault(), r.currentTarget.click());
30
- }, [e]), k = {
31
- onPointerDown: o,
32
- onMouseDown: o,
33
- onTouchStart: o,
34
- onClick: m,
35
- "aria-disabled": e ? "true" : void 0,
36
- "aria-busy": i ? "true" : void 0,
37
- "aria-pressed": P
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 "./index224.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);
38
75
  };
39
- l || (k.onKeyDown = v);
40
- const a = {
41
- pressProps: k,
42
- isDisabled: e
76
+ return h = requestAnimationFrame(E), () => {
77
+ h && cancelAnimationFrame(h);
43
78
  };
44
- return l || (a.role = d, a.tabIndex = e ? -1 : D), a;
45
- }
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();
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);
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;
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);
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);
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
+ }
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
+ };
46
318
  export {
47
- R as useAccessiblePress
319
+ pt as GuidedTour
48
320
  };
49
321
  //# sourceMappingURL=index67.js.map