@semcore/core 16.0.0 → 16.0.1-prerelease.0

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 (403) hide show
  1. package/CHANGELOG.md +10 -0
  2. package/README.md +1 -31
  3. package/lib/LastInteractionType.js +3 -5
  4. package/lib/LastInteractionType.js.map +1 -1
  5. package/lib/LastInteractionType.mjs +1 -2
  6. package/lib/LastInteractionType.mjs.map +1 -1
  7. package/lib/core-types/Component.d.ts +10 -12
  8. package/lib/core-types/Component.js +51 -22
  9. package/lib/core-types/Component.js.map +1 -1
  10. package/lib/core-types/Component.mjs +11 -14
  11. package/lib/core-types/Component.mjs.map +1 -1
  12. package/lib/core-types/UnknownProperties.js.map +1 -1
  13. package/lib/core-types/UnknownProperties.mjs.map +1 -1
  14. package/lib/core-types/reshadow.d.js.map +1 -1
  15. package/lib/core-types/reshadow.d.mjs.map +1 -1
  16. package/lib/core-types/symbols.js +9 -18
  17. package/lib/core-types/symbols.js.map +1 -1
  18. package/lib/core-types/symbols.mjs.map +1 -1
  19. package/lib/coreFactory.d.ts +4 -4
  20. package/lib/coreFactory.js +37 -38
  21. package/lib/coreFactory.js.map +1 -1
  22. package/lib/coreFactory.mjs +39 -34
  23. package/lib/coreFactory.mjs.map +1 -1
  24. package/lib/enhancement/Children.js +9 -10
  25. package/lib/enhancement/Children.js.map +1 -1
  26. package/lib/enhancement/Children.mjs +7 -7
  27. package/lib/enhancement/Children.mjs.map +1 -1
  28. package/lib/enhancement/Root.d.ts +1 -1
  29. package/lib/enhancement/Root.js +5 -6
  30. package/lib/enhancement/Root.js.map +1 -1
  31. package/lib/enhancement/Root.mjs +2 -2
  32. package/lib/enhancement/Root.mjs.map +1 -1
  33. package/lib/enhancement/bindHandler.d.ts +1 -1
  34. package/lib/enhancement/bindHandler.js +2 -3
  35. package/lib/enhancement/bindHandler.js.map +1 -1
  36. package/lib/enhancement/bindHandler.mjs +1 -1
  37. package/lib/enhancement/bindHandler.mjs.map +1 -1
  38. package/lib/enhancement/dataName.js +2 -3
  39. package/lib/enhancement/dataName.js.map +1 -1
  40. package/lib/enhancement/dataName.mjs.map +1 -1
  41. package/lib/enhancement/enhance.js +1 -2
  42. package/lib/enhancement/enhance.js.map +1 -1
  43. package/lib/enhancement/enhance.mjs.map +1 -1
  44. package/lib/enhancement/functionDefaultProps.js +1 -2
  45. package/lib/enhancement/functionDefaultProps.js.map +1 -1
  46. package/lib/enhancement/functionDefaultProps.mjs.map +1 -1
  47. package/lib/enhancement/hoistProps.d.ts +1 -1
  48. package/lib/enhancement/hoistProps.js +5 -7
  49. package/lib/enhancement/hoistProps.js.map +1 -1
  50. package/lib/enhancement/hoistProps.mjs +2 -2
  51. package/lib/enhancement/hoistProps.mjs.map +1 -1
  52. package/lib/enhancement/i18n.js +2 -3
  53. package/lib/enhancement/i18n.js.map +1 -1
  54. package/lib/enhancement/i18n.mjs.map +1 -1
  55. package/lib/enhancement/inheritedName.js +2 -3
  56. package/lib/enhancement/inheritedName.js.map +1 -1
  57. package/lib/enhancement/inheritedName.mjs.map +1 -1
  58. package/lib/enhancement/staticChildren.js +5 -8
  59. package/lib/enhancement/staticChildren.js.map +1 -1
  60. package/lib/enhancement/staticChildren.mjs +1 -1
  61. package/lib/enhancement/staticChildren.mjs.map +1 -1
  62. package/lib/enhancement/style.js +4 -6
  63. package/lib/enhancement/style.js.map +1 -1
  64. package/lib/enhancement/style.mjs +1 -1
  65. package/lib/enhancement/style.mjs.map +1 -1
  66. package/lib/enhancement/uncontrolledProps.js +4 -6
  67. package/lib/enhancement/uncontrolledProps.js.map +1 -1
  68. package/lib/enhancement/uncontrolledProps.mjs +2 -3
  69. package/lib/enhancement/uncontrolledProps.mjs.map +1 -1
  70. package/lib/esm/LastInteractionType.mjs +1 -2
  71. package/lib/esm/core-types/Component.mjs +11 -14
  72. package/lib/esm/coreFactory.mjs +39 -34
  73. package/lib/esm/enhancement/Children.mjs +7 -7
  74. package/lib/esm/enhancement/Root.mjs +2 -2
  75. package/lib/esm/enhancement/bindHandler.mjs +1 -1
  76. package/lib/esm/enhancement/hoistProps.mjs +2 -2
  77. package/lib/esm/enhancement/staticChildren.mjs +1 -1
  78. package/lib/esm/enhancement/style.mjs +1 -1
  79. package/lib/esm/enhancement/uncontrolledProps.mjs +2 -3
  80. package/lib/esm/index.mjs +3 -3
  81. package/lib/esm/register.mjs +1 -2
  82. package/lib/esm/styled/reshadow-core.mjs +9 -9
  83. package/lib/esm/styled/sstyled.mjs +1 -1
  84. package/lib/esm/utils/assignProps.mjs +1 -1
  85. package/lib/esm/utils/createHoc.mjs +10 -7
  86. package/lib/esm/utils/enhances/WithI18n.mjs +12 -10
  87. package/lib/esm/utils/enhances/i18nEnhance.mjs +4 -4
  88. package/lib/esm/utils/logger.mjs +1 -2
  89. package/lib/index.d.ts +5 -5
  90. package/lib/index.js +4 -4
  91. package/lib/index.js.map +1 -1
  92. package/lib/index.mjs +3 -3
  93. package/lib/index.mjs.map +1 -1
  94. package/lib/register.js +4 -7
  95. package/lib/register.js.map +1 -1
  96. package/lib/register.mjs +1 -2
  97. package/lib/register.mjs.map +1 -1
  98. package/lib/styled/index.d.ts +1 -2
  99. package/lib/styled/index.js.map +1 -1
  100. package/lib/styled/index.mjs.map +1 -1
  101. package/lib/styled/reshadow-core.js +27 -50
  102. package/lib/styled/reshadow-core.js.map +1 -1
  103. package/lib/styled/reshadow-core.mjs +9 -9
  104. package/lib/styled/reshadow-core.mjs.map +1 -1
  105. package/lib/styled/sstyled.d.ts +2 -2
  106. package/lib/styled/sstyled.js +3 -3
  107. package/lib/styled/sstyled.js.map +1 -1
  108. package/lib/styled/sstyled.mjs +1 -1
  109. package/lib/styled/sstyled.mjs.map +1 -1
  110. package/lib/theme/dark.json +2 -2
  111. package/lib/theme/light.json +2 -42
  112. package/lib/theme/processor.js +61 -63
  113. package/lib/theme/processor.js.map +1 -1
  114. package/lib/theme/processor.mjs +52 -53
  115. package/lib/theme/processor.mjs.map +1 -1
  116. package/lib/theme/themes/auto.css +224 -2
  117. package/lib/theme/themes/dark.css +112 -1
  118. package/lib/theme/themes/dark.d.ts +91 -0
  119. package/lib/theme/themes/dark.js +93 -3
  120. package/lib/theme/themes/dark.js.map +1 -1
  121. package/lib/theme/themes/dark.mjs +92 -1
  122. package/lib/theme/themes/dark.mjs.map +1 -1
  123. package/lib/theme/themes/default.css +112 -1
  124. package/lib/theme/themes/default.d.ts +91 -0
  125. package/lib/theme/themes/default.js +93 -3
  126. package/lib/theme/themes/default.js.map +1 -1
  127. package/lib/theme/themes/default.mjs +92 -1
  128. package/lib/theme/themes/default.mjs.map +1 -1
  129. package/lib/theme/themes/light.css +112 -1
  130. package/lib/theme/themes/light.d.ts +91 -0
  131. package/lib/theme/themes/light.js +93 -3
  132. package/lib/theme/themes/light.js.map +1 -1
  133. package/lib/theme/themes/light.mjs +92 -1
  134. package/lib/theme/themes/light.mjs.map +1 -1
  135. package/lib/theme/utils.d.ts +2 -1
  136. package/lib/theme/utils.js +36 -32
  137. package/lib/theme/utils.js.map +1 -1
  138. package/lib/theme/utils.mjs +31 -23
  139. package/lib/theme/utils.mjs.map +1 -1
  140. package/lib/utils/CSSinJS.d.ts +1 -1
  141. package/lib/utils/CSSinJS.js +4 -5
  142. package/lib/utils/CSSinJS.js.map +1 -1
  143. package/lib/utils/CSSinJS.mjs +2 -2
  144. package/lib/utils/CSSinJS.mjs.map +1 -1
  145. package/lib/utils/ScreenReaderOnly.d.ts +1 -1
  146. package/lib/utils/ScreenReaderOnly.js +2 -3
  147. package/lib/utils/ScreenReaderOnly.js.map +1 -1
  148. package/lib/utils/ScreenReaderOnly.mjs.map +1 -1
  149. package/lib/utils/ThemeProvider.d.ts +1 -1
  150. package/lib/utils/ThemeProvider.js +5 -9
  151. package/lib/utils/ThemeProvider.js.map +1 -1
  152. package/lib/utils/ThemeProvider.mjs.map +1 -1
  153. package/lib/utils/addonText.d.ts +1 -1
  154. package/lib/utils/addonText.js +1 -1
  155. package/lib/utils/addonText.js.map +1 -1
  156. package/lib/utils/addonText.mjs.map +1 -1
  157. package/lib/utils/addonTextChildren.d.ts +1 -1
  158. package/lib/utils/addonTextChildren.js +3 -4
  159. package/lib/utils/addonTextChildren.js.map +1 -1
  160. package/lib/utils/addonTextChildren.mjs +1 -1
  161. package/lib/utils/addonTextChildren.mjs.map +1 -1
  162. package/lib/utils/ariaProps.d.ts +1 -1
  163. package/lib/utils/ariaProps.js.map +1 -1
  164. package/lib/utils/ariaProps.mjs.map +1 -1
  165. package/lib/utils/assignProps.d.ts +1 -1
  166. package/lib/utils/assignProps.js +2 -2
  167. package/lib/utils/assignProps.js.map +1 -1
  168. package/lib/utils/assignProps.mjs +1 -1
  169. package/lib/utils/assignProps.mjs.map +1 -1
  170. package/lib/utils/canUseDOM.js.map +1 -1
  171. package/lib/utils/canUseDOM.mjs.map +1 -1
  172. package/lib/utils/capitalizeFirstLetter.js.map +1 -1
  173. package/lib/utils/capitalizeFirstLetter.mjs.map +1 -1
  174. package/lib/utils/color.js +18 -18
  175. package/lib/utils/color.js.map +1 -1
  176. package/lib/utils/color.mjs +16 -15
  177. package/lib/utils/color.mjs.map +1 -1
  178. package/lib/utils/compose.js.map +1 -1
  179. package/lib/utils/compose.mjs.map +1 -1
  180. package/lib/utils/createHoc.d.ts +1 -1
  181. package/lib/utils/createHoc.js +11 -11
  182. package/lib/utils/createHoc.js.map +1 -1
  183. package/lib/utils/createHoc.mjs +10 -7
  184. package/lib/utils/createHoc.mjs.map +1 -1
  185. package/lib/utils/createUUID.js.map +1 -1
  186. package/lib/utils/createUUID.mjs.map +1 -1
  187. package/lib/utils/cssToIntDefault.d.ts +1 -1
  188. package/lib/utils/cssToIntDefault.js +2 -2
  189. package/lib/utils/cssToIntDefault.js.map +1 -1
  190. package/lib/utils/cssToIntDefault.mjs +2 -2
  191. package/lib/utils/cssToIntDefault.mjs.map +1 -1
  192. package/lib/utils/enhances/WithAutoFocus.d.ts +3 -3
  193. package/lib/utils/enhances/WithAutoFocus.js +12 -12
  194. package/lib/utils/enhances/WithAutoFocus.js.map +1 -1
  195. package/lib/utils/enhances/WithAutoFocus.mjs +11 -9
  196. package/lib/utils/enhances/WithAutoFocus.mjs.map +1 -1
  197. package/lib/utils/enhances/WithCSS.d.ts +4 -4
  198. package/lib/utils/enhances/WithCSS.js +15 -20
  199. package/lib/utils/enhances/WithCSS.js.map +1 -1
  200. package/lib/utils/enhances/WithCSS.mjs +8 -8
  201. package/lib/utils/enhances/WithCSS.mjs.map +1 -1
  202. package/lib/utils/enhances/WithI18n.d.ts +3 -3
  203. package/lib/utils/enhances/WithI18n.js +19 -22
  204. package/lib/utils/enhances/WithI18n.js.map +1 -1
  205. package/lib/utils/enhances/WithI18n.mjs +12 -10
  206. package/lib/utils/enhances/WithI18n.mjs.map +1 -1
  207. package/lib/utils/enhances/WithKeyboardFocus.d.ts +4 -3
  208. package/lib/utils/enhances/WithKeyboardFocus.js +28 -24
  209. package/lib/utils/enhances/WithKeyboardFocus.js.map +1 -1
  210. package/lib/utils/enhances/WithKeyboardFocus.mjs +26 -19
  211. package/lib/utils/enhances/WithKeyboardFocus.mjs.map +1 -1
  212. package/lib/utils/enhances/WithRef.d.ts +1 -1
  213. package/lib/utils/enhances/WithRef.js +3 -4
  214. package/lib/utils/enhances/WithRef.js.map +1 -1
  215. package/lib/utils/enhances/WithRef.mjs +1 -1
  216. package/lib/utils/enhances/WithRef.mjs.map +1 -1
  217. package/lib/utils/enhances/a11yEnhance.js +9 -10
  218. package/lib/utils/enhances/a11yEnhance.js.map +1 -1
  219. package/lib/utils/enhances/a11yEnhance.mjs +7 -7
  220. package/lib/utils/enhances/a11yEnhance.mjs.map +1 -1
  221. package/lib/utils/enhances/animatedSizeEnhance.d.ts +1 -1
  222. package/lib/utils/enhances/animatedSizeEnhance.js +12 -10
  223. package/lib/utils/enhances/animatedSizeEnhance.js.map +1 -1
  224. package/lib/utils/enhances/animatedSizeEnhance.mjs +11 -7
  225. package/lib/utils/enhances/animatedSizeEnhance.mjs.map +1 -1
  226. package/lib/utils/enhances/autoFocusEnhance.d.ts +1 -1
  227. package/lib/utils/enhances/autoFocusEnhance.js +2 -3
  228. package/lib/utils/enhances/autoFocusEnhance.js.map +1 -1
  229. package/lib/utils/enhances/autoFocusEnhance.mjs.map +1 -1
  230. package/lib/utils/enhances/contextEnhance.js +2 -3
  231. package/lib/utils/enhances/contextEnhance.js.map +1 -1
  232. package/lib/utils/enhances/contextEnhance.mjs.map +1 -1
  233. package/lib/utils/enhances/i18nEnhance.d.ts +2 -2
  234. package/lib/utils/enhances/i18nEnhance.js +10 -10
  235. package/lib/utils/enhances/i18nEnhance.js.map +1 -1
  236. package/lib/utils/enhances/i18nEnhance.mjs +4 -4
  237. package/lib/utils/enhances/i18nEnhance.mjs.map +1 -1
  238. package/lib/utils/enhances/keyboardFocusEnhance.d.ts +1 -1
  239. package/lib/utils/enhances/keyboardFocusEnhance.js +7 -7
  240. package/lib/utils/enhances/keyboardFocusEnhance.js.map +1 -1
  241. package/lib/utils/enhances/keyboardFocusEnhance.mjs +2 -2
  242. package/lib/utils/enhances/keyboardFocusEnhance.mjs.map +1 -1
  243. package/lib/utils/enhances/resolveColorEnhance.js +4 -5
  244. package/lib/utils/enhances/resolveColorEnhance.js.map +1 -1
  245. package/lib/utils/enhances/resolveColorEnhance.mjs +2 -2
  246. package/lib/utils/enhances/resolveColorEnhance.mjs.map +1 -1
  247. package/lib/utils/eventEmitter.js +2 -3
  248. package/lib/utils/eventEmitter.js.map +1 -1
  249. package/lib/utils/eventEmitter.mjs.map +1 -1
  250. package/lib/utils/findComponent.d.ts +1 -1
  251. package/lib/utils/findComponent.js +14 -15
  252. package/lib/utils/findComponent.js.map +1 -1
  253. package/lib/utils/findComponent.mjs +12 -12
  254. package/lib/utils/findComponent.mjs.map +1 -1
  255. package/lib/utils/fire.js +1 -1
  256. package/lib/utils/fire.js.map +1 -1
  257. package/lib/utils/fire.mjs.map +1 -1
  258. package/lib/utils/focus-lock/focusBorders.js +12 -16
  259. package/lib/utils/focus-lock/focusBorders.js.map +1 -1
  260. package/lib/utils/focus-lock/focusBorders.mjs +8 -8
  261. package/lib/utils/focus-lock/focusBorders.mjs.map +1 -1
  262. package/lib/utils/focus-lock/getFocusableIn.js +2 -3
  263. package/lib/utils/focus-lock/getFocusableIn.js.map +1 -1
  264. package/lib/utils/focus-lock/getFocusableIn.mjs +1 -1
  265. package/lib/utils/focus-lock/getFocusableIn.mjs.map +1 -1
  266. package/lib/utils/focus-lock/isFocusInside.js +1 -2
  267. package/lib/utils/focus-lock/isFocusInside.js.map +1 -1
  268. package/lib/utils/focus-lock/isFocusInside.mjs.map +1 -1
  269. package/lib/utils/focus-lock/isFocusable.js +2 -3
  270. package/lib/utils/focus-lock/isFocusable.js.map +1 -1
  271. package/lib/utils/focus-lock/isFocusable.mjs.map +1 -1
  272. package/lib/utils/focus-lock/setFocus.js +4 -5
  273. package/lib/utils/focus-lock/setFocus.js.map +1 -1
  274. package/lib/utils/focus-lock/setFocus.mjs +2 -2
  275. package/lib/utils/focus-lock/setFocus.mjs.map +1 -1
  276. package/lib/utils/getAccessibleName.js +1 -1
  277. package/lib/utils/getAccessibleName.js.map +1 -1
  278. package/lib/utils/getAccessibleName.mjs.map +1 -1
  279. package/lib/utils/getDisplayName.d.ts +1 -1
  280. package/lib/utils/getDisplayName.js.map +1 -1
  281. package/lib/utils/getDisplayName.mjs.map +1 -1
  282. package/lib/utils/getEventTarget.js +2 -3
  283. package/lib/utils/getEventTarget.js.map +1 -1
  284. package/lib/utils/getEventTarget.mjs.map +1 -1
  285. package/lib/utils/getOriginChildren.js +3 -4
  286. package/lib/utils/getOriginChildren.js.map +1 -1
  287. package/lib/utils/getOriginChildren.mjs +1 -1
  288. package/lib/utils/getOriginChildren.mjs.map +1 -1
  289. package/lib/utils/getRandomInt.js.map +1 -1
  290. package/lib/utils/getRandomInt.mjs.map +1 -1
  291. package/lib/utils/getValue.js +1 -3
  292. package/lib/utils/getValue.js.map +1 -1
  293. package/lib/utils/getValue.mjs +1 -3
  294. package/lib/utils/getValue.mjs.map +1 -1
  295. package/lib/utils/hasLabels.js +5 -6
  296. package/lib/utils/hasLabels.js.map +1 -1
  297. package/lib/utils/hasLabels.mjs +3 -3
  298. package/lib/utils/hasLabels.mjs.map +1 -1
  299. package/lib/utils/hasParent.js +2 -3
  300. package/lib/utils/hasParent.js.map +1 -1
  301. package/lib/utils/hasParent.mjs +3 -2
  302. package/lib/utils/hasParent.mjs.map +1 -1
  303. package/lib/utils/if.d.ts +2 -2
  304. package/lib/utils/if.js +1 -2
  305. package/lib/utils/if.js.map +1 -1
  306. package/lib/utils/if.mjs.map +1 -1
  307. package/lib/utils/ifChildren.d.ts +1 -1
  308. package/lib/utils/ifChildren.js +1 -2
  309. package/lib/utils/ifChildren.js.map +1 -1
  310. package/lib/utils/ifChildren.mjs.map +1 -1
  311. package/lib/utils/injectStyle.js +3 -5
  312. package/lib/utils/injectStyle.js.map +1 -1
  313. package/lib/utils/injectStyle.mjs +1 -2
  314. package/lib/utils/injectStyle.mjs.map +1 -1
  315. package/lib/utils/inputProps.js +1 -2
  316. package/lib/utils/inputProps.js.map +1 -1
  317. package/lib/utils/inputProps.mjs.map +1 -1
  318. package/lib/utils/isInteractiveElement.js.map +1 -1
  319. package/lib/utils/isInteractiveElement.mjs.map +1 -1
  320. package/lib/utils/isNode.js +1 -1
  321. package/lib/utils/isNode.js.map +1 -1
  322. package/lib/utils/isNode.mjs.map +1 -1
  323. package/lib/utils/isPromise.js.map +1 -1
  324. package/lib/utils/isPromise.mjs.map +1 -1
  325. package/lib/utils/isRetina.js.map +1 -1
  326. package/lib/utils/isRetina.mjs.map +1 -1
  327. package/lib/utils/logger.js +4 -7
  328. package/lib/utils/logger.js.map +1 -1
  329. package/lib/utils/logger.mjs +1 -2
  330. package/lib/utils/logger.mjs.map +1 -1
  331. package/lib/utils/numericChecker.js.map +1 -1
  332. package/lib/utils/numericChecker.mjs.map +1 -1
  333. package/lib/utils/ownerDocument.js.map +1 -1
  334. package/lib/utils/ownerDocument.mjs.map +1 -1
  335. package/lib/utils/pick.js.map +1 -1
  336. package/lib/utils/pick.mjs.map +1 -1
  337. package/lib/utils/propsForElement.d.ts +1 -1
  338. package/lib/utils/propsForElement.js +2 -3
  339. package/lib/utils/propsForElement.js.map +1 -1
  340. package/lib/utils/propsForElement.mjs.map +1 -1
  341. package/lib/utils/rafTrottle.js +1 -2
  342. package/lib/utils/rafTrottle.js.map +1 -1
  343. package/lib/utils/rafTrottle.mjs.map +1 -1
  344. package/lib/utils/reactToText.d.ts +1 -1
  345. package/lib/utils/reactToText.js +1 -2
  346. package/lib/utils/reactToText.js.map +1 -1
  347. package/lib/utils/reactToText.mjs.map +1 -1
  348. package/lib/utils/ref.d.ts +1 -1
  349. package/lib/utils/ref.js +1 -1
  350. package/lib/utils/ref.js.map +1 -1
  351. package/lib/utils/ref.mjs.map +1 -1
  352. package/lib/utils/setRef.js +1 -2
  353. package/lib/utils/setRef.js.map +1 -1
  354. package/lib/utils/setRef.mjs.map +1 -1
  355. package/lib/utils/syncScroll.js +2 -2
  356. package/lib/utils/syncScroll.js.map +1 -1
  357. package/lib/utils/syncScroll.mjs +1 -1
  358. package/lib/utils/syncScroll.mjs.map +1 -1
  359. package/lib/utils/uncontroll.d.ts +1 -1
  360. package/lib/utils/uncontroll.js +1 -1
  361. package/lib/utils/uncontroll.js.map +1 -1
  362. package/lib/utils/uncontroll.mjs.map +1 -1
  363. package/lib/utils/uniqueID.d.ts +1 -1
  364. package/lib/utils/uniqueID.js +5 -5
  365. package/lib/utils/uniqueID.js.map +1 -1
  366. package/lib/utils/uniqueID.mjs +3 -0
  367. package/lib/utils/uniqueID.mjs.map +1 -1
  368. package/lib/utils/use/useColorResolver.js +7 -106
  369. package/lib/utils/use/useColorResolver.js.map +1 -1
  370. package/lib/utils/use/useColorResolver.mjs +5 -103
  371. package/lib/utils/use/useColorResolver.mjs.map +1 -1
  372. package/lib/utils/use/useCss.d.ts +1 -1
  373. package/lib/utils/use/useCss.js +2 -3
  374. package/lib/utils/use/useCss.js.map +1 -1
  375. package/lib/utils/use/useCss.mjs.map +1 -1
  376. package/lib/utils/use/useEnhancedEffect.js +2 -3
  377. package/lib/utils/use/useEnhancedEffect.js.map +1 -1
  378. package/lib/utils/use/useEnhancedEffect.mjs.map +1 -1
  379. package/lib/utils/use/useEventCallback.js +1 -1
  380. package/lib/utils/use/useEventCallback.js.map +1 -1
  381. package/lib/utils/use/useEventCallback.mjs.map +1 -1
  382. package/lib/utils/use/useEventListener.js +2 -3
  383. package/lib/utils/use/useEventListener.js.map +1 -1
  384. package/lib/utils/use/useEventListener.mjs.map +1 -1
  385. package/lib/utils/use/useFocusLock.d.ts +1 -1
  386. package/lib/utils/use/useFocusLock.js +8 -11
  387. package/lib/utils/use/useFocusLock.js.map +1 -1
  388. package/lib/utils/use/useFocusLock.mjs +4 -4
  389. package/lib/utils/use/useFocusLock.mjs.map +1 -1
  390. package/lib/utils/use/usePreventScroll.js +2 -2
  391. package/lib/utils/use/usePreventScroll.js.map +1 -1
  392. package/lib/utils/use/usePreventScroll.mjs +1 -1
  393. package/lib/utils/use/usePreventScroll.mjs.map +1 -1
  394. package/lib/utils/useCssVariable.d.ts +2 -2
  395. package/lib/utils/useCssVariable.js +3 -5
  396. package/lib/utils/useCssVariable.js.map +1 -1
  397. package/lib/utils/useCssVariable.mjs.map +1 -1
  398. package/lib/utils/zIndexStacking.js +6 -9
  399. package/lib/utils/zIndexStacking.js.map +1 -1
  400. package/lib/utils/zIndexStacking.mjs +2 -2
  401. package/lib/utils/zIndexStacking.mjs.map +1 -1
  402. package/package.json +6 -9
  403. package/vite.config.ts +0 -1
@@ -1,6 +1,6 @@
1
1
  "use strict";
2
2
 
3
- var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
3
+ var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault")["default"];
4
4
  Object.defineProperty(exports, "__esModule", {
5
5
  value: true
6
6
  });
@@ -28,6 +28,5 @@ var useEventListener = function useEventListener(elementOrRef, eventName, handle
28
28
  };
29
29
  }, [eventName, elementOrRef]);
30
30
  };
31
- var _default = useEventListener;
32
- exports["default"] = _default;
31
+ var _default = exports["default"] = useEventListener;
33
32
  //# sourceMappingURL=useEventListener.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"useEventListener.js","names":["_react","_interopRequireDefault","require","_canUseDOM","_ref","useEventListener","elementOrRef","eventName","handler","options","arguments","length","undefined","savedHandler","React","useRef","useEffect","current","canUseDOM","eventListener","event","_savedHandler$current","call","node","getRef","Element","addEventListener","removeEventListener","_default","exports"],"sources":["../../../src/utils/use/useEventListener.ts"],"sourcesContent":["import React from 'react';\nimport canUseDOM from '../canUseDOM';\nimport { getRef } from '../ref';\n\nconst useEventListener = (\n elementOrRef: any,\n eventName: any,\n handler: any,\n options: any = undefined,\n) => {\n const savedHandler = React.useRef<(event: any) => {}>();\n\n React.useEffect(() => {\n savedHandler.current = handler;\n }, [handler]);\n\n React.useEffect(() => {\n if (!canUseDOM()) return;\n\n const eventListener = (event: any) => savedHandler.current?.(event);\n const node = getRef(elementOrRef);\n if (!(node instanceof Element)) return;\n node.addEventListener(eventName, eventListener, options);\n return () => {\n node.removeEventListener(eventName, eventListener, options);\n };\n }, [eventName, elementOrRef]);\n};\n\nexport default useEventListener;\n"],"mappings":";;;;;;;AAAA,IAAAA,MAAA,GAAAC,sBAAA,CAAAC,OAAA;AACA,IAAAC,UAAA,GAAAF,sBAAA,CAAAC,OAAA;AACA,IAAAE,IAAA,GAAAF,OAAA;AAEA,IAAMG,gBAAgB,GAAG,SAAnBA,gBAAgBA,CACpBC,YAAiB,EACjBC,SAAc,EACdC,OAAY,EAET;EAAA,IADHC,OAAY,GAAAC,SAAA,CAAAC,MAAA,QAAAD,SAAA,QAAAE,SAAA,GAAAF,SAAA,MAAGE,SAAS;EAExB,IAAMC,YAAY,GAAGC,iBAAK,CAACC,MAAM,EAAsB;EAEvDD,iBAAK,CAACE,SAAS,CAAC,YAAM;IACpBH,YAAY,CAACI,OAAO,GAAGT,OAAO;EAChC,CAAC,EAAE,CAACA,OAAO,CAAC,CAAC;EAEbM,iBAAK,CAACE,SAAS,CAAC,YAAM;IACpB,IAAI,CAAC,IAAAE,qBAAS,GAAE,EAAE;IAElB,IAAMC,aAAa,GAAG,SAAhBA,aAAaA,CAAIC,KAAU;MAAA,IAAAC,qBAAA;MAAA,QAAAA,qBAAA,GAAKR,YAAY,CAACI,OAAO,cAAAI,qBAAA,uBAApBA,qBAAA,CAAAC,IAAA,CAAAT,YAAY,EAAWO,KAAK,CAAC;IAAA;IACnE,IAAMG,IAAI,GAAG,IAAAC,WAAM,EAAClB,YAAY,CAAC;IACjC,IAAI,EAAEiB,IAAI,YAAYE,OAAO,CAAC,EAAE;IAChCF,IAAI,CAACG,gBAAgB,CAACnB,SAAS,EAAEY,aAAa,EAAEV,OAAO,CAAC;IACxD,OAAO,YAAM;MACXc,IAAI,CAACI,mBAAmB,CAACpB,SAAS,EAAEY,aAAa,EAAEV,OAAO,CAAC;IAC7D,CAAC;EACH,CAAC,EAAE,CAACF,SAAS,EAAED,YAAY,CAAC,CAAC;AAC/B,CAAC;AAAC,IAAAsB,QAAA,GAEavB,gBAAgB;AAAAwB,OAAA,cAAAD,QAAA"}
1
+ {"version":3,"file":"useEventListener.js","names":["_react","_interopRequireDefault","require","_canUseDOM","_ref","useEventListener","elementOrRef","eventName","handler","options","arguments","length","undefined","savedHandler","React","useRef","useEffect","current","canUseDOM","eventListener","event","_savedHandler$current","call","node","getRef","Element","addEventListener","removeEventListener","_default","exports"],"sources":["../../../src/utils/use/useEventListener.ts"],"sourcesContent":["import React from 'react';\n\nimport canUseDOM from '../canUseDOM';\nimport { getRef } from '../ref';\n\nconst useEventListener = (\n elementOrRef: any,\n eventName: any,\n handler: any,\n options: any = undefined,\n) => {\n const savedHandler = React.useRef<(event: any) => {}>();\n\n React.useEffect(() => {\n savedHandler.current = handler;\n }, [handler]);\n\n React.useEffect(() => {\n if (!canUseDOM()) return;\n\n const eventListener = (event: any) => savedHandler.current?.(event);\n const node = getRef(elementOrRef);\n if (!(node instanceof Element)) return;\n node.addEventListener(eventName, eventListener, options);\n return () => {\n node.removeEventListener(eventName, eventListener, options);\n };\n }, [eventName, elementOrRef]);\n};\n\nexport default useEventListener;\n"],"mappings":";;;;;;;AAAA,IAAAA,MAAA,GAAAC,sBAAA,CAAAC,OAAA;AAEA,IAAAC,UAAA,GAAAF,sBAAA,CAAAC,OAAA;AACA,IAAAE,IAAA,GAAAF,OAAA;AAEA,IAAMG,gBAAgB,GAAG,SAAnBA,gBAAgBA,CACpBC,YAAiB,EACjBC,SAAc,EACdC,OAAY,EAET;EAAA,IADHC,OAAY,GAAAC,SAAA,CAAAC,MAAA,QAAAD,SAAA,QAAAE,SAAA,GAAAF,SAAA,MAAGE,SAAS;EAExB,IAAMC,YAAY,GAAGC,iBAAK,CAACC,MAAM,CAAqB,CAAC;EAEvDD,iBAAK,CAACE,SAAS,CAAC,YAAM;IACpBH,YAAY,CAACI,OAAO,GAAGT,OAAO;EAChC,CAAC,EAAE,CAACA,OAAO,CAAC,CAAC;EAEbM,iBAAK,CAACE,SAAS,CAAC,YAAM;IACpB,IAAI,CAAC,IAAAE,qBAAS,EAAC,CAAC,EAAE;IAElB,IAAMC,aAAa,GAAG,SAAhBA,aAAaA,CAAIC,KAAU;MAAA,IAAAC,qBAAA;MAAA,QAAAA,qBAAA,GAAKR,YAAY,CAACI,OAAO,cAAAI,qBAAA,uBAApBA,qBAAA,CAAAC,IAAA,CAAAT,YAAY,EAAWO,KAAK,CAAC;IAAA;IACnE,IAAMG,IAAI,GAAG,IAAAC,WAAM,EAAClB,YAAY,CAAC;IACjC,IAAI,EAAEiB,IAAI,YAAYE,OAAO,CAAC,EAAE;IAChCF,IAAI,CAACG,gBAAgB,CAACnB,SAAS,EAAEY,aAAa,EAAEV,OAAO,CAAC;IACxD,OAAO,YAAM;MACXc,IAAI,CAACI,mBAAmB,CAACpB,SAAS,EAAEY,aAAa,EAAEV,OAAO,CAAC;IAC7D,CAAC;EACH,CAAC,EAAE,CAACF,SAAS,EAAED,YAAY,CAAC,CAAC;AAC/B,CAAC;AAAC,IAAAsB,QAAA,GAAAC,OAAA,cAEaxB,gBAAgB","ignoreList":[]}
@@ -1 +1 @@
1
- {"version":3,"file":"useEventListener.mjs","names":["React","canUseDOM","getRef","useEventListener","elementOrRef","eventName","handler","options","arguments","length","undefined","savedHandler","useRef","useEffect","current","eventListener","event","_savedHandler$current","call","node","Element","addEventListener","removeEventListener"],"sources":["../../../src/utils/use/useEventListener.ts"],"sourcesContent":["import React from 'react';\nimport canUseDOM from '../canUseDOM';\nimport { getRef } from '../ref';\n\nconst useEventListener = (\n elementOrRef: any,\n eventName: any,\n handler: any,\n options: any = undefined,\n) => {\n const savedHandler = React.useRef<(event: any) => {}>();\n\n React.useEffect(() => {\n savedHandler.current = handler;\n }, [handler]);\n\n React.useEffect(() => {\n if (!canUseDOM()) return;\n\n const eventListener = (event: any) => savedHandler.current?.(event);\n const node = getRef(elementOrRef);\n if (!(node instanceof Element)) return;\n node.addEventListener(eventName, eventListener, options);\n return () => {\n node.removeEventListener(eventName, eventListener, options);\n };\n }, [eventName, elementOrRef]);\n};\n\nexport default useEventListener;\n"],"mappings":"AAAA,OAAOA,KAAK,MAAM,OAAO;AACzB,OAAOC,SAAS,MAAM,kBAAc;AACpC,SAASC,MAAM,QAAQ,YAAQ;AAE/B,IAAMC,gBAAgB,GAAG,SAAnBA,gBAAgBA,CACpBC,YAAiB,EACjBC,SAAc,EACdC,OAAY,EAET;EAAA,IADHC,OAAY,GAAAC,SAAA,CAAAC,MAAA,QAAAD,SAAA,QAAAE,SAAA,GAAAF,SAAA,MAAGE,SAAS;EAExB,IAAMC,YAAY,GAAGX,KAAK,CAACY,MAAM,EAAsB;EAEvDZ,KAAK,CAACa,SAAS,CAAC,YAAM;IACpBF,YAAY,CAACG,OAAO,GAAGR,OAAO;EAChC,CAAC,EAAE,CAACA,OAAO,CAAC,CAAC;EAEbN,KAAK,CAACa,SAAS,CAAC,YAAM;IACpB,IAAI,CAACZ,SAAS,EAAE,EAAE;IAElB,IAAMc,aAAa,GAAG,SAAhBA,aAAaA,CAAIC,KAAU;MAAA,IAAAC,qBAAA;MAAA,QAAAA,qBAAA,GAAKN,YAAY,CAACG,OAAO,cAAAG,qBAAA,uBAApBA,qBAAA,CAAAC,IAAA,CAAAP,YAAY,EAAWK,KAAK,CAAC;IAAA;IACnE,IAAMG,IAAI,GAAGjB,MAAM,CAACE,YAAY,CAAC;IACjC,IAAI,EAAEe,IAAI,YAAYC,OAAO,CAAC,EAAE;IAChCD,IAAI,CAACE,gBAAgB,CAAChB,SAAS,EAAEU,aAAa,EAAER,OAAO,CAAC;IACxD,OAAO,YAAM;MACXY,IAAI,CAACG,mBAAmB,CAACjB,SAAS,EAAEU,aAAa,EAAER,OAAO,CAAC;IAC7D,CAAC;EACH,CAAC,EAAE,CAACF,SAAS,EAAED,YAAY,CAAC,CAAC;AAC/B,CAAC;AAED,eAAeD,gBAAgB"}
1
+ {"version":3,"file":"useEventListener.mjs","names":["React","canUseDOM","getRef","useEventListener","elementOrRef","eventName","handler","options","arguments","length","undefined","savedHandler","useRef","useEffect","current","eventListener","event","_savedHandler$current","call","node","Element","addEventListener","removeEventListener"],"sources":["../../../src/utils/use/useEventListener.ts"],"sourcesContent":["import React from 'react';\n\nimport canUseDOM from '../canUseDOM';\nimport { getRef } from '../ref';\n\nconst useEventListener = (\n elementOrRef: any,\n eventName: any,\n handler: any,\n options: any = undefined,\n) => {\n const savedHandler = React.useRef<(event: any) => {}>();\n\n React.useEffect(() => {\n savedHandler.current = handler;\n }, [handler]);\n\n React.useEffect(() => {\n if (!canUseDOM()) return;\n\n const eventListener = (event: any) => savedHandler.current?.(event);\n const node = getRef(elementOrRef);\n if (!(node instanceof Element)) return;\n node.addEventListener(eventName, eventListener, options);\n return () => {\n node.removeEventListener(eventName, eventListener, options);\n };\n }, [eventName, elementOrRef]);\n};\n\nexport default useEventListener;\n"],"mappings":"AAAA,OAAOA,KAAK,MAAM,OAAO;AAEzB,OAAOC,SAAS,MAAM,kBAAc;AACpC,SAASC,MAAM,QAAQ,YAAQ;AAE/B,IAAMC,gBAAgB,GAAG,SAAnBA,gBAAgBA,CACpBC,YAAiB,EACjBC,SAAc,EACdC,OAAY,EAET;EAAA,IADHC,OAAY,GAAAC,SAAA,CAAAC,MAAA,QAAAD,SAAA,QAAAE,SAAA,GAAAF,SAAA,MAAGE,SAAS;EAExB,IAAMC,YAAY,GAAGX,KAAK,CAACY,MAAM,CAAqB,CAAC;EAEvDZ,KAAK,CAACa,SAAS,CAAC,YAAM;IACpBF,YAAY,CAACG,OAAO,GAAGR,OAAO;EAChC,CAAC,EAAE,CAACA,OAAO,CAAC,CAAC;EAEbN,KAAK,CAACa,SAAS,CAAC,YAAM;IACpB,IAAI,CAACZ,SAAS,CAAC,CAAC,EAAE;IAElB,IAAMc,aAAa,GAAG,SAAhBA,aAAaA,CAAIC,KAAU;MAAA,IAAAC,qBAAA;MAAA,QAAAA,qBAAA,GAAKN,YAAY,CAACG,OAAO,cAAAG,qBAAA,uBAApBA,qBAAA,CAAAC,IAAA,CAAAP,YAAY,EAAWK,KAAK,CAAC;IAAA;IACnE,IAAMG,IAAI,GAAGjB,MAAM,CAACE,YAAY,CAAC;IACjC,IAAI,EAAEe,IAAI,YAAYC,OAAO,CAAC,EAAE;IAChCD,IAAI,CAACE,gBAAgB,CAAChB,SAAS,EAAEU,aAAa,EAAER,OAAO,CAAC;IACxD,OAAO,YAAM;MACXY,IAAI,CAACG,mBAAmB,CAACjB,SAAS,EAAEU,aAAa,EAAER,OAAO,CAAC;IAC7D,CAAC;EACH,CAAC,EAAE,CAACF,SAAS,EAAED,YAAY,CAAC,CAAC;AAC/B,CAAC;AAED,eAAeD,gBAAgB","ignoreList":[]}
@@ -6,5 +6,5 @@ export { isFocusInside, setFocus };
6
6
  * You should always prevent native event propagation in order to prevent focus enforcing double calls.
7
7
  */
8
8
  export declare const makeFocusLockSyntheticEvent: (baseEvent: Event) => Event;
9
- export declare const useFocusLock: (trapRef: React.RefObject<HTMLElement>, autoFocus: boolean | 'enforced', returnFocusTo: React.RefObject<HTMLElement> | null | 'auto', disabled?: boolean, focusMaster?: boolean, onFocusOut?: ((event: Event) => void) | undefined) => any;
9
+ export declare const useFocusLock: (trapRef: React.RefObject<HTMLElement>, autoFocus: boolean | "enforced", returnFocusTo: React.RefObject<HTMLElement> | null | "auto", disabled?: boolean, focusMaster?: boolean, onFocusOut?: (event: Event) => void) => any;
10
10
  export declare const hasFocusableIn: (element: HTMLElement) => boolean;
@@ -1,6 +1,6 @@
1
1
  "use strict";
2
2
 
3
- var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
3
+ var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault")["default"];
4
4
  Object.defineProperty(exports, "__esModule", {
5
5
  value: true
6
6
  });
@@ -21,12 +21,12 @@ Object.defineProperty(exports, "setFocus", {
21
21
  exports.useFocusLock = void 0;
22
22
  var _typeof2 = _interopRequireDefault(require("@babel/runtime/helpers/typeof"));
23
23
  var _toConsumableArray2 = _interopRequireDefault(require("@babel/runtime/helpers/toConsumableArray"));
24
- var _canUseDOM = _interopRequireDefault(require("../canUseDOM"));
25
24
  var _react = _interopRequireDefault(require("react"));
25
+ var _canUseDOM = _interopRequireDefault(require("../canUseDOM"));
26
+ var _focusBorders = require("../focus-lock/focusBorders");
27
+ var _getFocusableIn = require("../focus-lock/getFocusableIn");
26
28
  var _isFocusInside = require("../focus-lock/isFocusInside");
27
29
  var _setFocus = require("../focus-lock/setFocus");
28
- var _getFocusableIn = require("../focus-lock/getFocusableIn");
29
- var _focusBorders = require("../focus-lock/focusBorders");
30
30
  var syntheticEvents = {
31
31
  blur: 'focusout-intergalactic-focus-lock-synthetic',
32
32
  keydown: 'keydown-intergalactic-focus-lock-synthetic'
@@ -35,7 +35,7 @@ var syntheticEvents = {
35
35
  * Synthetic event are special events that always bypass all propagation guards and reaches focus lock event listeners.
36
36
  * You should always prevent native event propagation in order to prevent focus enforcing double calls.
37
37
  */
38
- var makeFocusLockSyntheticEvent = function makeFocusLockSyntheticEvent(baseEvent) {
38
+ var makeFocusLockSyntheticEvent = exports.makeFocusLockSyntheticEvent = function makeFocusLockSyntheticEvent(baseEvent) {
39
39
  var event = baseEvent;
40
40
  var type = event.type;
41
41
  if (!(type in syntheticEvents)) {
@@ -55,7 +55,6 @@ var makeFocusLockSyntheticEvent = function makeFocusLockSyntheticEvent(baseEvent
55
55
  });
56
56
  return syntheticEvent;
57
57
  };
58
- exports.makeFocusLockSyntheticEvent = makeFocusLockSyntheticEvent;
59
58
  var useFocusBorders = function useFocusBorders(React, disabled, trapRef) {
60
59
  useUniqueIdHookMock(React);
61
60
  React.useEffect(function () {
@@ -151,7 +150,7 @@ var useFocusLockHook = function useFocusLockHook(React, trapRef, autoFocus, retu
151
150
  if (focusCameFrom && focusMovedTo) {
152
151
  (0, _setFocus.setFocus)(trapRef.current, focusCameFrom, focusMovedTo);
153
152
  }
154
- onFocusOut === null || onFocusOut === void 0 ? void 0 : onFocusOut(event);
153
+ onFocusOut === null || onFocusOut === void 0 || onFocusOut(event);
155
154
  });
156
155
  }, [onFocusOut]);
157
156
  var handleMouseEvent = React.useCallback(function () {
@@ -271,7 +270,7 @@ if (!globalThis[globalFocusLockHookKey]) {
271
270
  establishHookAsGlobal();
272
271
  }
273
272
  }
274
- var useFocusLock = function useFocusLock(trapRef, autoFocus, returnFocusTo) {
273
+ var useFocusLock = exports.useFocusLock = function useFocusLock(trapRef, autoFocus, returnFocusTo) {
275
274
  var _globalFocusLockHookK2, _globalFocusLockHookK3;
276
275
  var disabled = arguments.length > 3 && arguments[3] !== undefined ? arguments[3] : false;
277
276
  var focusMaster = arguments.length > 4 && arguments[4] !== undefined ? arguments[4] : false;
@@ -279,11 +278,9 @@ var useFocusLock = function useFocusLock(trapRef, autoFocus, returnFocusTo) {
279
278
  var hook = (_globalFocusLockHookK2 = (_globalFocusLockHookK3 = globalThis[globalFocusLockHookKey]) === null || _globalFocusLockHookK3 === void 0 ? void 0 : _globalFocusLockHookK3.hook) !== null && _globalFocusLockHookK2 !== void 0 ? _globalFocusLockHookK2 : useFocusLockHook;
280
279
  return hook(_react["default"], trapRef, autoFocus, returnFocusTo, disabled, focusMaster, onFocusOut);
281
280
  };
282
- exports.useFocusLock = useFocusLock;
283
- var hasFocusableIn = function hasFocusableIn(element) {
281
+ var hasFocusableIn = exports.hasFocusableIn = function hasFocusableIn(element) {
284
282
  return Array.from(element.children).flatMap(function (node) {
285
283
  return (0, _getFocusableIn.getFocusableIn)(node);
286
284
  }).length > 0;
287
285
  };
288
- exports.hasFocusableIn = hasFocusableIn;
289
286
  //# sourceMappingURL=useFocusLock.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"useFocusLock.js","names":["_canUseDOM","_interopRequireDefault","require","_react","_isFocusInside","_setFocus","_getFocusableIn","_focusBorders","syntheticEvents","blur","keydown","makeFocusLockSyntheticEvent","baseEvent","event","type","supported","Object","keys","join","Error","concat","syntheticEvent","Event","bubbles","defineProperty","writable","value","target","relatedTarget","exports","useFocusBorders","React","disabled","trapRef","useUniqueIdHookMock","useEffect","trapNode","current","getFocusableIn","length","addFocusBorders","removeFocusBorders","uniqueId","getUniqueId","prefix","Math","random","toString","slice","focusLockVersion","globalFocusLockHookKey","focusLockAllTraps","Set","focusLockUsedInMountedComponents","focusMastersStack","noop","useState","undefined","useEnhancedEffect","canUseDOM","useLayoutEffect","useFocusLockHook","autoFocus","returnFocusTo","arguments","focusMaster","onFocusOut","autoTriggerRef","useRef","lastUserInteractionRef","handleFocusOut","useCallback","focusCameFrom","focusMovedTo","setTimeout","Promise","resolve","then","currentFocusMaster","trapNodes","_toConsumableArray2","isFocusInside","_typeof2","setFocus","handleMouseEvent","handleKeyboardEvent","returnFocus","focusMastersStackCount","returnFocusNode","autoTrigger","node","add","focusableChildren","Array","from","children","flatMap","document","body","addEventListener","removeEventListener","push","pop","splice","indexOf","id","establishHookAsGlobal","globalThis","hook","version","usedInComponents","_globalFocusLockHookK","theirVersion","size","useFocusLock","_globalFocusLockHookK2","_globalFocusLockHookK3","LocalReact","hasFocusableIn","element"],"sources":["../../../src/utils/use/useFocusLock.ts"],"sourcesContent":["import canUseDOM from '../canUseDOM';\nimport LocalReact from 'react';\n\nimport { isFocusInside } from '../focus-lock/isFocusInside';\nimport { setFocus } from '../focus-lock/setFocus';\nimport { getFocusableIn } from '../focus-lock/getFocusableIn';\nimport { addFocusBorders, removeFocusBorders } from '../focus-lock/focusBorders';\n\nexport { isFocusInside, setFocus };\n\nconst syntheticEvents = {\n blur: 'focusout-intergalactic-focus-lock-synthetic',\n keydown: 'keydown-intergalactic-focus-lock-synthetic',\n};\n/**\n * Synthetic event are special events that always bypass all propagation guards and reaches focus lock event listeners.\n * You should always prevent native event propagation in order to prevent focus enforcing double calls.\n */\nexport const makeFocusLockSyntheticEvent = (baseEvent: Event) => {\n const event = baseEvent as any;\n const type = event.type as keyof typeof syntheticEvents;\n if (!(type in syntheticEvents)) {\n const supported = Object.keys(syntheticEvents).join(', ');\n throw new Error(`Unable to make synthetic event for ${type}, ${supported} are supported`);\n }\n const syntheticEvent = new Event(syntheticEvents[type], {\n bubbles: true,\n });\n Object.defineProperty(syntheticEvent, 'target', { writable: false, value: event.target });\n Object.defineProperty(syntheticEvent, 'relatedTarget', {\n writable: false,\n value: event.relatedTarget,\n });\n return syntheticEvent;\n};\n\nconst useFocusBorders = (\n React: ReactT,\n disabled?: boolean,\n trapRef?: React.RefObject<HTMLElement>,\n) => {\n useUniqueIdHookMock(React);\n React.useEffect(() => {\n const trapNode = trapRef?.current;\n\n if (trapNode && !disabled && getFocusableIn(trapNode).length > 0) {\n addFocusBorders(trapNode);\n }\n\n return () => {\n if (trapNode) {\n removeFocusBorders(trapNode);\n }\n };\n }, [disabled]);\n};\n\ntype ReactT = typeof LocalReact;\n\nlet uniqueId = 0;\nconst getUniqueId = (prefix: string) =>\n `${prefix}-${Math.random().toString(36).slice(2)}-${uniqueId++}`;\n\n/**\n * # Focus lock hook merging\n * In some cases same page might contain different versions of components.\n * In such cases, we need to ensure that only one version of focus lock hook is used.\n * So, it's why we have `useFocusLockHook` function that is wrapped into `useFocusLock`.\n *\n * While evaluating this file code, we check if global focus lock hook is already defined.\n * If it's defined, we replace it ONLY if our version is higher and no components currently use it.\n * The last condition is very important because we are unable to replace React hook without reimplementing\n * React hooks lifecycle in some kind of wrapper.\n *\n * ## Versioning\n * Such versions merging requires us to keep hook api backward compatible.\n * When hook logic changes, the variable `focusLockVersion` should be incremented.\n *\n * Version update `1 -> 2`. Fixed call `safeMoveFocusInside` in `handleFocusIn` with correct second parameter (focusCameFrom instead of event.target)\n * Version update `2 -> 3`. Fixed React version isolation in nested hooks (`useFocusBorders`, `useUniqueId`).\n * Version update `3 -> 4`. Fixed lock for correct working with iframes in modal\n * Version update `4 -> 5`. Changed placements for border - now they wrap trap node\n *\n * Initially (for a several versions) key was `__intergalactic_focus_lock_hook_`.\n * Making it respect react version required to change key. So key was changed to `__intergalactic_focus_lock_hook_react_v_respectful`.\n *\n * ## React hooks order\n * When updating from version 2 to version 3 `useUniqueId` hook was removed.\n * Due to replacing useFocusLock hook in runtime, the order of hooks must be preserved.\n * So, useUniqueIdHookMock helps to preserve hooks order when hook is being replaced from version 2 to version 3.\n *\n * If new update requires to remove some hooks – add mocks instead of them.\n * If new update requires to add some hooks and no workaround with current hooks list is possible – probably focus lock hook key should be changed.\n */\nconst focusLockVersion = 5;\nconst globalFocusLockHookKey = '__intergalactic_focus_lock_hook_react_v_respectful';\n\nconst focusLockAllTraps = new Set<HTMLElement>();\nconst focusLockUsedInMountedComponents = new Set<string>();\n/** Focus master is a special mode in which focus lock might work.\n * Normally, focus lock hook allows user focus to move freely between\n * all active focus traps. When component provides `focusMaster=true`\n * parameter, it says that it doesn't want to share focus with other traps.\n * It is very useful for a big components like modals or side-bars that\n * also have some visual backdrop.\n * The last element in focus masters stack is considered as a current focus master.\n */\nconst focusMastersStack: HTMLElement[] = [];\n\nconst noop = () => {};\nconst useUniqueIdHookMock = (React: ReactT) => {\n React.useState(undefined);\n const useEnhancedEffect = canUseDOM() ? React.useLayoutEffect : React.useEffect;\n useEnhancedEffect(noop, []);\n};\n\nconst useFocusLockHook = (\n React: ReactT,\n trapRef: React.RefObject<HTMLElement>,\n autoFocus: boolean | 'enforced',\n returnFocusTo: React.RefObject<HTMLElement> | null | 'auto',\n disabled = false,\n focusMaster = false,\n onFocusOut?: (event: Event) => void,\n) => {\n useFocusBorders(React, disabled, trapRef);\n\n const autoTriggerRef = React.useRef<HTMLElement | null>(null);\n const lastUserInteractionRef = React.useRef<'mouse' | 'keyboard' | undefined>(undefined);\n\n const handleFocusOut = React.useCallback(\n (event: Event & { relatedTarget?: HTMLElement; target?: HTMLElement }) => {\n const focusCameFrom = event.target;\n const focusMovedTo = event.relatedTarget;\n setTimeout(() => {\n if (!focusCameFrom) return;\n if (autoTriggerRef.current) return;\n autoTriggerRef.current = focusCameFrom;\n }, 0);\n if (lastUserInteractionRef.current === 'mouse') return;\n Promise.resolve().then(() => {\n if (!trapRef.current) return;\n const currentFocusMaster = focusMastersStack[focusMastersStack.length - 1];\n if (currentFocusMaster && currentFocusMaster !== trapRef.current) return;\n const trapNodes = currentFocusMaster\n ? [trapRef.current]\n : [trapRef.current, ...focusLockAllTraps];\n if (isFocusInside(trapNodes, focusMovedTo)) return;\n if (\n typeof returnFocusTo === 'object' &&\n returnFocusTo?.current &&\n isFocusInside(returnFocusTo.current)\n )\n return;\n\n if (focusCameFrom && focusMovedTo) {\n setFocus(trapRef.current, focusCameFrom, focusMovedTo);\n }\n\n onFocusOut?.(event);\n });\n },\n [onFocusOut],\n );\n const handleMouseEvent = React.useCallback(() => {\n lastUserInteractionRef.current = 'mouse';\n }, []);\n const handleKeyboardEvent = React.useCallback(() => {\n lastUserInteractionRef.current = 'keyboard';\n }, []);\n const returnFocus = React.useCallback(() => {\n const trapNode = trapRef.current;\n if (trapNode && !isFocusInside(trapNode)) return;\n const focusMastersStackCount = focusMastersStack.length;\n if (typeof returnFocusTo === 'object' && returnFocusTo?.current) {\n const returnFocusNode = returnFocusTo?.current;\n setTimeout(() => {\n if (focusMastersStackCount !== focusMastersStack.length) {\n setFocus(returnFocusNode, trapNode);\n }\n }, 0);\n }\n if (returnFocusTo === 'auto' && autoTriggerRef.current) {\n const autoTrigger = autoTriggerRef.current;\n setTimeout(() => {\n if (focusMastersStackCount !== focusMastersStack.length) {\n setFocus(autoTrigger, trapNode);\n }\n }, 0);\n }\n }, [returnFocusTo]);\n React.useEffect(() => {\n if (typeof trapRef !== 'object' || trapRef === null) return;\n const node = trapRef.current;\n if (!node) return;\n focusLockAllTraps.add(node);\n return () => {\n if (!node) return;\n focusLockAllTraps.delete(node);\n };\n }, [disabled]);\n\n React.useEffect(() => {\n if (disabled) return;\n if (!canUseDOM()) return;\n if (!trapRef.current) return;\n const focusableChildren = Array.from(trapRef.current.children).flatMap((node) =>\n getFocusableIn(node as HTMLElement),\n );\n if (focusableChildren.length === 0 && autoFocus !== 'enforced') return;\n\n document.body.addEventListener('focusout', handleFocusOut as any);\n document.body.addEventListener(syntheticEvents.blur, handleFocusOut as any);\n document.body.addEventListener('mousedown', handleMouseEvent);\n document.body.addEventListener('touchstart', handleMouseEvent);\n document.body.addEventListener('keydown', handleKeyboardEvent);\n document.body.addEventListener(syntheticEvents.keydown, handleKeyboardEvent);\n\n if (autoFocus) {\n setTimeout(() => {\n setFocus(\n trapRef.current!,\n typeof returnFocusTo === 'object' ? returnFocusTo?.current : document.body,\n );\n }, 0);\n }\n return () => {\n document.body.removeEventListener('focusout', handleFocusOut as any);\n document.body.removeEventListener(syntheticEvents.blur, handleFocusOut as any);\n document.body.removeEventListener('mousedown', handleMouseEvent);\n document.body.removeEventListener('touchstart', handleMouseEvent);\n document.body.removeEventListener('keydown', handleKeyboardEvent);\n document.body.removeEventListener(syntheticEvents.keydown, handleKeyboardEvent);\n returnFocus();\n autoTriggerRef.current = null;\n };\n }, [disabled, autoFocus, returnFocusTo, returnFocus]);\n\n React.useEffect(() => {\n if (typeof trapRef !== 'object' || trapRef === null) return;\n if (disabled) return;\n if (!canUseDOM()) return;\n if (!trapRef.current) return;\n const focusableChildren = Array.from(trapRef.current.children).flatMap((node) =>\n getFocusableIn(node as HTMLElement),\n );\n if (focusableChildren.length === 0) return;\n\n if (focusMaster) {\n focusMastersStack.push(trapRef.current);\n }\n\n return () => {\n if (!focusMaster) return;\n if (focusMastersStack[focusMastersStack.length - 1] === trapRef.current) {\n focusMastersStack.pop();\n } else {\n focusMastersStack.splice(focusMastersStack.indexOf(trapRef.current!), 1);\n }\n };\n }, [disabled, focusMaster]);\n\n useUniqueIdHookMock(React);\n React.useEffect(() => {\n const id = getUniqueId('focus-lock-consumer');\n if (disabled) return;\n focusLockUsedInMountedComponents.add(id);\n return () => {\n focusLockUsedInMountedComponents.delete(id);\n };\n }, [disabled]);\n};\nconst establishHookAsGlobal = () => {\n (globalThis as any)[globalFocusLockHookKey] = {\n hook: useFocusLockHook,\n version: focusLockVersion,\n usedInComponents: focusLockUsedInMountedComponents,\n };\n};\nif (!(globalThis as any)[globalFocusLockHookKey]) {\n establishHookAsGlobal();\n} else if (typeof (globalThis as any)[globalFocusLockHookKey].version !== 'number') {\n establishHookAsGlobal();\n} else {\n const { version: theirVersion, usedInComponents } = (globalThis as any)[globalFocusLockHookKey];\n if (focusLockVersion > theirVersion && usedInComponents.size === 0) {\n establishHookAsGlobal();\n }\n}\n\nexport const useFocusLock = (\n trapRef: React.RefObject<HTMLElement>,\n autoFocus: boolean | 'enforced',\n returnFocusTo: React.RefObject<HTMLElement> | null | 'auto',\n disabled = false,\n focusMaster = false,\n onFocusOut?: (event: Event) => void,\n) => {\n const hook = (globalThis as any)[globalFocusLockHookKey]?.hook ?? useFocusLockHook;\n return hook(LocalReact, trapRef, autoFocus, returnFocusTo, disabled, focusMaster, onFocusOut);\n};\n\nexport const hasFocusableIn = (element: HTMLElement): boolean => {\n return (\n Array.from(element.children).flatMap((node) => getFocusableIn(node as HTMLElement)).length > 0\n );\n};\n"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;AAAA,IAAAA,UAAA,GAAAC,sBAAA,CAAAC,OAAA;AACA,IAAAC,MAAA,GAAAF,sBAAA,CAAAC,OAAA;AAEA,IAAAE,cAAA,GAAAF,OAAA;AACA,IAAAG,SAAA,GAAAH,OAAA;AACA,IAAAI,eAAA,GAAAJ,OAAA;AACA,IAAAK,aAAA,GAAAL,OAAA;AAIA,IAAMM,eAAe,GAAG;EACtBC,IAAI,EAAE,6CAA6C;EACnDC,OAAO,EAAE;AACX,CAAC;AACD;AACA;AACA;AACA;AACO,IAAMC,2BAA2B,GAAG,SAA9BA,2BAA2BA,CAAIC,SAAgB,EAAK;EAC/D,IAAMC,KAAK,GAAGD,SAAgB;EAC9B,IAAME,IAAI,GAAGD,KAAK,CAACC,IAAoC;EACvD,IAAI,EAAEA,IAAI,IAAIN,eAAe,CAAC,EAAE;IAC9B,IAAMO,SAAS,GAAGC,MAAM,CAACC,IAAI,CAACT,eAAe,CAAC,CAACU,IAAI,CAAC,IAAI,CAAC;IACzD,MAAM,IAAIC,KAAK,uCAAAC,MAAA,CAAuCN,IAAI,QAAAM,MAAA,CAAKL,SAAS,oBAAiB;EAC3F;EACA,IAAMM,cAAc,GAAG,IAAIC,KAAK,CAACd,eAAe,CAACM,IAAI,CAAC,EAAE;IACtDS,OAAO,EAAE;EACX,CAAC,CAAC;EACFP,MAAM,CAACQ,cAAc,CAACH,cAAc,EAAE,QAAQ,EAAE;IAAEI,QAAQ,EAAE,KAAK;IAAEC,KAAK,EAAEb,KAAK,CAACc;EAAO,CAAC,CAAC;EACzFX,MAAM,CAACQ,cAAc,CAACH,cAAc,EAAE,eAAe,EAAE;IACrDI,QAAQ,EAAE,KAAK;IACfC,KAAK,EAAEb,KAAK,CAACe;EACf,CAAC,CAAC;EACF,OAAOP,cAAc;AACvB,CAAC;AAACQ,OAAA,CAAAlB,2BAAA,GAAAA,2BAAA;AAEF,IAAMmB,eAAe,GAAG,SAAlBA,eAAeA,CACnBC,KAAa,EACbC,QAAkB,EAClBC,OAAsC,EACnC;EACHC,mBAAmB,CAACH,KAAK,CAAC;EAC1BA,KAAK,CAACI,SAAS,CAAC,YAAM;IACpB,IAAMC,QAAQ,GAAGH,OAAO,aAAPA,OAAO,uBAAPA,OAAO,CAAEI,OAAO;IAEjC,IAAID,QAAQ,IAAI,CAACJ,QAAQ,IAAI,IAAAM,8BAAc,EAACF,QAAQ,CAAC,CAACG,MAAM,GAAG,CAAC,EAAE;MAChE,IAAAC,6BAAe,EAACJ,QAAQ,CAAC;IAC3B;IAEA,OAAO,YAAM;MACX,IAAIA,QAAQ,EAAE;QACZ,IAAAK,gCAAkB,EAACL,QAAQ,CAAC;MAC9B;IACF,CAAC;EACH,CAAC,EAAE,CAACJ,QAAQ,CAAC,CAAC;AAChB,CAAC;AAID,IAAIU,QAAQ,GAAG,CAAC;AAChB,IAAMC,WAAW,GAAG,SAAdA,WAAWA,CAAIC,MAAc;EAAA,UAAAxB,MAAA,CAC9BwB,MAAM,OAAAxB,MAAA,CAAIyB,IAAI,CAACC,MAAM,EAAE,CAACC,QAAQ,CAAC,EAAE,CAAC,CAACC,KAAK,CAAC,CAAC,CAAC,OAAA5B,MAAA,CAAIsB,QAAQ,EAAE;AAAA,CAAE;;AAElE;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,IAAMO,gBAAgB,GAAG,CAAC;AAC1B,IAAMC,sBAAsB,GAAG,oDAAoD;AAEnF,IAAMC,iBAAiB,GAAG,IAAIC,GAAG,EAAe;AAChD,IAAMC,gCAAgC,GAAG,IAAID,GAAG,EAAU;AAC1D;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,IAAME,iBAAgC,GAAG,EAAE;AAE3C,IAAMC,IAAI,GAAG,SAAPA,IAAIA,CAAA,EAAS,CAAC,CAAC;AACrB,IAAMrB,mBAAmB,GAAG,SAAtBA,mBAAmBA,CAAIH,KAAa,EAAK;EAC7CA,KAAK,CAACyB,QAAQ,CAACC,SAAS,CAAC;EACzB,IAAMC,iBAAiB,GAAG,IAAAC,qBAAS,GAAE,GAAG5B,KAAK,CAAC6B,eAAe,GAAG7B,KAAK,CAACI,SAAS;EAC/EuB,iBAAiB,CAACH,IAAI,EAAE,EAAE,CAAC;AAC7B,CAAC;AAED,IAAMM,gBAAgB,GAAG,SAAnBA,gBAAgBA,CACpB9B,KAAa,EACbE,OAAqC,EACrC6B,SAA+B,EAC/BC,aAA2D,EAIxD;EAAA,IAHH/B,QAAQ,GAAAgC,SAAA,CAAAzB,MAAA,QAAAyB,SAAA,QAAAP,SAAA,GAAAO,SAAA,MAAG,KAAK;EAAA,IAChBC,WAAW,GAAAD,SAAA,CAAAzB,MAAA,QAAAyB,SAAA,QAAAP,SAAA,GAAAO,SAAA,MAAG,KAAK;EAAA,IACnBE,UAAmC,GAAAF,SAAA,CAAAzB,MAAA,OAAAyB,SAAA,MAAAP,SAAA;EAEnC3B,eAAe,CAACC,KAAK,EAAEC,QAAQ,EAAEC,OAAO,CAAC;EAEzC,IAAMkC,cAAc,GAAGpC,KAAK,CAACqC,MAAM,CAAqB,IAAI,CAAC;EAC7D,IAAMC,sBAAsB,GAAGtC,KAAK,CAACqC,MAAM,CAAmCX,SAAS,CAAC;EAExF,IAAMa,cAAc,GAAGvC,KAAK,CAACwC,WAAW,CACtC,UAAC1D,KAAoE,EAAK;IACxE,IAAM2D,aAAa,GAAG3D,KAAK,CAACc,MAAM;IAClC,IAAM8C,YAAY,GAAG5D,KAAK,CAACe,aAAa;IACxC8C,UAAU,CAAC,YAAM;MACf,IAAI,CAACF,aAAa,EAAE;MACpB,IAAIL,cAAc,CAAC9B,OAAO,EAAE;MAC5B8B,cAAc,CAAC9B,OAAO,GAAGmC,aAAa;IACxC,CAAC,EAAE,CAAC,CAAC;IACL,IAAIH,sBAAsB,CAAChC,OAAO,KAAK,OAAO,EAAE;IAChDsC,OAAO,CAACC,OAAO,EAAE,CAACC,IAAI,CAAC,YAAM;MAC3B,IAAI,CAAC5C,OAAO,CAACI,OAAO,EAAE;MACtB,IAAMyC,kBAAkB,GAAGxB,iBAAiB,CAACA,iBAAiB,CAACf,MAAM,GAAG,CAAC,CAAC;MAC1E,IAAIuC,kBAAkB,IAAIA,kBAAkB,KAAK7C,OAAO,CAACI,OAAO,EAAE;MAClE,IAAM0C,SAAS,GAAGD,kBAAkB,GAChC,CAAC7C,OAAO,CAACI,OAAO,CAAC,IAChBJ,OAAO,CAACI,OAAO,EAAAjB,MAAA,KAAA4D,mBAAA,aAAK7B,iBAAiB,EAAC;MAC3C,IAAI,IAAA8B,4BAAa,EAACF,SAAS,EAAEN,YAAY,CAAC,EAAE;MAC5C,IACE,IAAAS,QAAA,aAAOnB,aAAa,MAAK,QAAQ,IACjCA,aAAa,aAAbA,aAAa,eAAbA,aAAa,CAAE1B,OAAO,IACtB,IAAA4C,4BAAa,EAAClB,aAAa,CAAC1B,OAAO,CAAC,EAEpC;MAEF,IAAImC,aAAa,IAAIC,YAAY,EAAE;QACjC,IAAAU,kBAAQ,EAAClD,OAAO,CAACI,OAAO,EAAEmC,aAAa,EAAEC,YAAY,CAAC;MACxD;MAEAP,UAAU,aAAVA,UAAU,uBAAVA,UAAU,CAAGrD,KAAK,CAAC;IACrB,CAAC,CAAC;EACJ,CAAC,EACD,CAACqD,UAAU,CAAC,CACb;EACD,IAAMkB,gBAAgB,GAAGrD,KAAK,CAACwC,WAAW,CAAC,YAAM;IAC/CF,sBAAsB,CAAChC,OAAO,GAAG,OAAO;EAC1C,CAAC,EAAE,EAAE,CAAC;EACN,IAAMgD,mBAAmB,GAAGtD,KAAK,CAACwC,WAAW,CAAC,YAAM;IAClDF,sBAAsB,CAAChC,OAAO,GAAG,UAAU;EAC7C,CAAC,EAAE,EAAE,CAAC;EACN,IAAMiD,WAAW,GAAGvD,KAAK,CAACwC,WAAW,CAAC,YAAM;IAC1C,IAAMnC,QAAQ,GAAGH,OAAO,CAACI,OAAO;IAChC,IAAID,QAAQ,IAAI,CAAC,IAAA6C,4BAAa,EAAC7C,QAAQ,CAAC,EAAE;IAC1C,IAAMmD,sBAAsB,GAAGjC,iBAAiB,CAACf,MAAM;IACvD,IAAI,IAAA2C,QAAA,aAAOnB,aAAa,MAAK,QAAQ,IAAIA,aAAa,aAAbA,aAAa,eAAbA,aAAa,CAAE1B,OAAO,EAAE;MAC/D,IAAMmD,eAAe,GAAGzB,aAAa,aAAbA,aAAa,uBAAbA,aAAa,CAAE1B,OAAO;MAC9CqC,UAAU,CAAC,YAAM;QACf,IAAIa,sBAAsB,KAAKjC,iBAAiB,CAACf,MAAM,EAAE;UACvD,IAAA4C,kBAAQ,EAACK,eAAe,EAAEpD,QAAQ,CAAC;QACrC;MACF,CAAC,EAAE,CAAC,CAAC;IACP;IACA,IAAI2B,aAAa,KAAK,MAAM,IAAII,cAAc,CAAC9B,OAAO,EAAE;MACtD,IAAMoD,WAAW,GAAGtB,cAAc,CAAC9B,OAAO;MAC1CqC,UAAU,CAAC,YAAM;QACf,IAAIa,sBAAsB,KAAKjC,iBAAiB,CAACf,MAAM,EAAE;UACvD,IAAA4C,kBAAQ,EAACM,WAAW,EAAErD,QAAQ,CAAC;QACjC;MACF,CAAC,EAAE,CAAC,CAAC;IACP;EACF,CAAC,EAAE,CAAC2B,aAAa,CAAC,CAAC;EACnBhC,KAAK,CAACI,SAAS,CAAC,YAAM;IACpB,IAAI,IAAA+C,QAAA,aAAOjD,OAAO,MAAK,QAAQ,IAAIA,OAAO,KAAK,IAAI,EAAE;IACrD,IAAMyD,IAAI,GAAGzD,OAAO,CAACI,OAAO;IAC5B,IAAI,CAACqD,IAAI,EAAE;IACXvC,iBAAiB,CAACwC,GAAG,CAACD,IAAI,CAAC;IAC3B,OAAO,YAAM;MACX,IAAI,CAACA,IAAI,EAAE;MACXvC,iBAAiB,UAAO,CAACuC,IAAI,CAAC;IAChC,CAAC;EACH,CAAC,EAAE,CAAC1D,QAAQ,CAAC,CAAC;EAEdD,KAAK,CAACI,SAAS,CAAC,YAAM;IACpB,IAAIH,QAAQ,EAAE;IACd,IAAI,CAAC,IAAA2B,qBAAS,GAAE,EAAE;IAClB,IAAI,CAAC1B,OAAO,CAACI,OAAO,EAAE;IACtB,IAAMuD,iBAAiB,GAAGC,KAAK,CAACC,IAAI,CAAC7D,OAAO,CAACI,OAAO,CAAC0D,QAAQ,CAAC,CAACC,OAAO,CAAC,UAACN,IAAI;MAAA,OAC1E,IAAApD,8BAAc,EAACoD,IAAI,CAAgB;IAAA,EACpC;IACD,IAAIE,iBAAiB,CAACrD,MAAM,KAAK,CAAC,IAAIuB,SAAS,KAAK,UAAU,EAAE;IAEhEmC,QAAQ,CAACC,IAAI,CAACC,gBAAgB,CAAC,UAAU,EAAE7B,cAAc,CAAQ;IACjE2B,QAAQ,CAACC,IAAI,CAACC,gBAAgB,CAAC3F,eAAe,CAACC,IAAI,EAAE6D,cAAc,CAAQ;IAC3E2B,QAAQ,CAACC,IAAI,CAACC,gBAAgB,CAAC,WAAW,EAAEf,gBAAgB,CAAC;IAC7Da,QAAQ,CAACC,IAAI,CAACC,gBAAgB,CAAC,YAAY,EAAEf,gBAAgB,CAAC;IAC9Da,QAAQ,CAACC,IAAI,CAACC,gBAAgB,CAAC,SAAS,EAAEd,mBAAmB,CAAC;IAC9DY,QAAQ,CAACC,IAAI,CAACC,gBAAgB,CAAC3F,eAAe,CAACE,OAAO,EAAE2E,mBAAmB,CAAC;IAE5E,IAAIvB,SAAS,EAAE;MACbY,UAAU,CAAC,YAAM;QACf,IAAAS,kBAAQ,EACNlD,OAAO,CAACI,OAAO,EACf,IAAA6C,QAAA,aAAOnB,aAAa,MAAK,QAAQ,GAAGA,aAAa,aAAbA,aAAa,uBAAbA,aAAa,CAAE1B,OAAO,GAAG4D,QAAQ,CAACC,IAAI,CAC3E;MACH,CAAC,EAAE,CAAC,CAAC;IACP;IACA,OAAO,YAAM;MACXD,QAAQ,CAACC,IAAI,CAACE,mBAAmB,CAAC,UAAU,EAAE9B,cAAc,CAAQ;MACpE2B,QAAQ,CAACC,IAAI,CAACE,mBAAmB,CAAC5F,eAAe,CAACC,IAAI,EAAE6D,cAAc,CAAQ;MAC9E2B,QAAQ,CAACC,IAAI,CAACE,mBAAmB,CAAC,WAAW,EAAEhB,gBAAgB,CAAC;MAChEa,QAAQ,CAACC,IAAI,CAACE,mBAAmB,CAAC,YAAY,EAAEhB,gBAAgB,CAAC;MACjEa,QAAQ,CAACC,IAAI,CAACE,mBAAmB,CAAC,SAAS,EAAEf,mBAAmB,CAAC;MACjEY,QAAQ,CAACC,IAAI,CAACE,mBAAmB,CAAC5F,eAAe,CAACE,OAAO,EAAE2E,mBAAmB,CAAC;MAC/EC,WAAW,EAAE;MACbnB,cAAc,CAAC9B,OAAO,GAAG,IAAI;IAC/B,CAAC;EACH,CAAC,EAAE,CAACL,QAAQ,EAAE8B,SAAS,EAAEC,aAAa,EAAEuB,WAAW,CAAC,CAAC;EAErDvD,KAAK,CAACI,SAAS,CAAC,YAAM;IACpB,IAAI,IAAA+C,QAAA,aAAOjD,OAAO,MAAK,QAAQ,IAAIA,OAAO,KAAK,IAAI,EAAE;IACrD,IAAID,QAAQ,EAAE;IACd,IAAI,CAAC,IAAA2B,qBAAS,GAAE,EAAE;IAClB,IAAI,CAAC1B,OAAO,CAACI,OAAO,EAAE;IACtB,IAAMuD,iBAAiB,GAAGC,KAAK,CAACC,IAAI,CAAC7D,OAAO,CAACI,OAAO,CAAC0D,QAAQ,CAAC,CAACC,OAAO,CAAC,UAACN,IAAI;MAAA,OAC1E,IAAApD,8BAAc,EAACoD,IAAI,CAAgB;IAAA,EACpC;IACD,IAAIE,iBAAiB,CAACrD,MAAM,KAAK,CAAC,EAAE;IAEpC,IAAI0B,WAAW,EAAE;MACfX,iBAAiB,CAAC+C,IAAI,CAACpE,OAAO,CAACI,OAAO,CAAC;IACzC;IAEA,OAAO,YAAM;MACX,IAAI,CAAC4B,WAAW,EAAE;MAClB,IAAIX,iBAAiB,CAACA,iBAAiB,CAACf,MAAM,GAAG,CAAC,CAAC,KAAKN,OAAO,CAACI,OAAO,EAAE;QACvEiB,iBAAiB,CAACgD,GAAG,EAAE;MACzB,CAAC,MAAM;QACLhD,iBAAiB,CAACiD,MAAM,CAACjD,iBAAiB,CAACkD,OAAO,CAACvE,OAAO,CAACI,OAAO,CAAE,EAAE,CAAC,CAAC;MAC1E;IACF,CAAC;EACH,CAAC,EAAE,CAACL,QAAQ,EAAEiC,WAAW,CAAC,CAAC;EAE3B/B,mBAAmB,CAACH,KAAK,CAAC;EAC1BA,KAAK,CAACI,SAAS,CAAC,YAAM;IACpB,IAAMsE,EAAE,GAAG9D,WAAW,CAAC,qBAAqB,CAAC;IAC7C,IAAIX,QAAQ,EAAE;IACdqB,gCAAgC,CAACsC,GAAG,CAACc,EAAE,CAAC;IACxC,OAAO,YAAM;MACXpD,gCAAgC,UAAO,CAACoD,EAAE,CAAC;IAC7C,CAAC;EACH,CAAC,EAAE,CAACzE,QAAQ,CAAC,CAAC;AAChB,CAAC;AACD,IAAM0E,qBAAqB,GAAG,SAAxBA,qBAAqBA,CAAA,EAAS;EACjCC,UAAU,CAASzD,sBAAsB,CAAC,GAAG;IAC5C0D,IAAI,EAAE/C,gBAAgB;IACtBgD,OAAO,EAAE5D,gBAAgB;IACzB6D,gBAAgB,EAAEzD;EACpB,CAAC;AACH,CAAC;AACD,IAAI,CAAEsD,UAAU,CAASzD,sBAAsB,CAAC,EAAE;EAChDwD,qBAAqB,EAAE;AACzB,CAAC,MAAM,IAAI,OAAQC,UAAU,CAASzD,sBAAsB,CAAC,CAAC2D,OAAO,KAAK,QAAQ,EAAE;EAClFH,qBAAqB,EAAE;AACzB,CAAC,MAAM;EACL,IAAAK,qBAAA,GAAqDJ,UAAU,CAASzD,sBAAsB,CAAC;IAA9E8D,YAAY,GAAAD,qBAAA,CAArBF,OAAO;IAAgBC,gBAAgB,GAAAC,qBAAA,CAAhBD,gBAAgB;EAC/C,IAAI7D,gBAAgB,GAAG+D,YAAY,IAAIF,gBAAgB,CAACG,IAAI,KAAK,CAAC,EAAE;IAClEP,qBAAqB,EAAE;EACzB;AACF;AAEO,IAAMQ,YAAY,GAAG,SAAfA,YAAYA,CACvBjF,OAAqC,EACrC6B,SAA+B,EAC/BC,aAA2D,EAIxD;EAAA,IAAAoD,sBAAA,EAAAC,sBAAA;EAAA,IAHHpF,QAAQ,GAAAgC,SAAA,CAAAzB,MAAA,QAAAyB,SAAA,QAAAP,SAAA,GAAAO,SAAA,MAAG,KAAK;EAAA,IAChBC,WAAW,GAAAD,SAAA,CAAAzB,MAAA,QAAAyB,SAAA,QAAAP,SAAA,GAAAO,SAAA,MAAG,KAAK;EAAA,IACnBE,UAAmC,GAAAF,SAAA,CAAAzB,MAAA,OAAAyB,SAAA,MAAAP,SAAA;EAEnC,IAAMmD,IAAI,IAAAO,sBAAA,IAAAC,sBAAA,GAAIT,UAAU,CAASzD,sBAAsB,CAAC,cAAAkE,sBAAA,uBAA3CA,sBAAA,CAA6CR,IAAI,cAAAO,sBAAA,cAAAA,sBAAA,GAAItD,gBAAgB;EAClF,OAAO+C,IAAI,CAACS,iBAAU,EAAEpF,OAAO,EAAE6B,SAAS,EAAEC,aAAa,EAAE/B,QAAQ,EAAEiC,WAAW,EAAEC,UAAU,CAAC;AAC/F,CAAC;AAACrC,OAAA,CAAAqF,YAAA,GAAAA,YAAA;AAEK,IAAMI,cAAc,GAAG,SAAjBA,cAAcA,CAAIC,OAAoB,EAAc;EAC/D,OACE1B,KAAK,CAACC,IAAI,CAACyB,OAAO,CAACxB,QAAQ,CAAC,CAACC,OAAO,CAAC,UAACN,IAAI;IAAA,OAAK,IAAApD,8BAAc,EAACoD,IAAI,CAAgB;EAAA,EAAC,CAACnD,MAAM,GAAG,CAAC;AAElG,CAAC;AAACV,OAAA,CAAAyF,cAAA,GAAAA,cAAA"}
1
+ {"version":3,"file":"useFocusLock.js","names":["_react","_interopRequireDefault","require","_canUseDOM","_focusBorders","_getFocusableIn","_isFocusInside","_setFocus","syntheticEvents","blur","keydown","makeFocusLockSyntheticEvent","exports","baseEvent","event","type","supported","Object","keys","join","Error","concat","syntheticEvent","Event","bubbles","defineProperty","writable","value","target","relatedTarget","useFocusBorders","React","disabled","trapRef","useUniqueIdHookMock","useEffect","trapNode","current","getFocusableIn","length","addFocusBorders","removeFocusBorders","uniqueId","getUniqueId","prefix","Math","random","toString","slice","focusLockVersion","globalFocusLockHookKey","focusLockAllTraps","Set","focusLockUsedInMountedComponents","focusMastersStack","noop","useState","undefined","useEnhancedEffect","canUseDOM","useLayoutEffect","useFocusLockHook","autoFocus","returnFocusTo","arguments","focusMaster","onFocusOut","autoTriggerRef","useRef","lastUserInteractionRef","handleFocusOut","useCallback","focusCameFrom","focusMovedTo","setTimeout","Promise","resolve","then","currentFocusMaster","trapNodes","_toConsumableArray2","isFocusInside","_typeof2","setFocus","handleMouseEvent","handleKeyboardEvent","returnFocus","focusMastersStackCount","returnFocusNode","autoTrigger","node","add","focusableChildren","Array","from","children","flatMap","document","body","addEventListener","removeEventListener","push","pop","splice","indexOf","id","establishHookAsGlobal","globalThis","hook","version","usedInComponents","_globalFocusLockHookK","theirVersion","size","useFocusLock","_globalFocusLockHookK2","_globalFocusLockHookK3","LocalReact","hasFocusableIn","element"],"sources":["../../../src/utils/use/useFocusLock.ts"],"sourcesContent":["import LocalReact from 'react';\n\nimport canUseDOM from '../canUseDOM';\nimport { addFocusBorders, removeFocusBorders } from '../focus-lock/focusBorders';\nimport { getFocusableIn } from '../focus-lock/getFocusableIn';\nimport { isFocusInside } from '../focus-lock/isFocusInside';\nimport { setFocus } from '../focus-lock/setFocus';\n\nexport { isFocusInside, setFocus };\n\nconst syntheticEvents = {\n blur: 'focusout-intergalactic-focus-lock-synthetic',\n keydown: 'keydown-intergalactic-focus-lock-synthetic',\n};\n/**\n * Synthetic event are special events that always bypass all propagation guards and reaches focus lock event listeners.\n * You should always prevent native event propagation in order to prevent focus enforcing double calls.\n */\nexport const makeFocusLockSyntheticEvent = (baseEvent: Event) => {\n const event = baseEvent as any;\n const type = event.type as keyof typeof syntheticEvents;\n if (!(type in syntheticEvents)) {\n const supported = Object.keys(syntheticEvents).join(', ');\n throw new Error(`Unable to make synthetic event for ${type}, ${supported} are supported`);\n }\n const syntheticEvent = new Event(syntheticEvents[type], {\n bubbles: true,\n });\n Object.defineProperty(syntheticEvent, 'target', { writable: false, value: event.target });\n Object.defineProperty(syntheticEvent, 'relatedTarget', {\n writable: false,\n value: event.relatedTarget,\n });\n return syntheticEvent;\n};\n\nconst useFocusBorders = (\n React: ReactT,\n disabled?: boolean,\n trapRef?: React.RefObject<HTMLElement>,\n) => {\n useUniqueIdHookMock(React);\n React.useEffect(() => {\n const trapNode = trapRef?.current;\n\n if (trapNode && !disabled && getFocusableIn(trapNode).length > 0) {\n addFocusBorders(trapNode);\n }\n\n return () => {\n if (trapNode) {\n removeFocusBorders(trapNode);\n }\n };\n }, [disabled]);\n};\n\ntype ReactT = typeof LocalReact;\n\nlet uniqueId = 0;\nconst getUniqueId = (prefix: string) =>\n `${prefix}-${Math.random().toString(36).slice(2)}-${uniqueId++}`;\n\n/**\n * # Focus lock hook merging\n * In some cases same page might contain different versions of components.\n * In such cases, we need to ensure that only one version of focus lock hook is used.\n * So, it's why we have `useFocusLockHook` function that is wrapped into `useFocusLock`.\n *\n * While evaluating this file code, we check if global focus lock hook is already defined.\n * If it's defined, we replace it ONLY if our version is higher and no components currently use it.\n * The last condition is very important because we are unable to replace React hook without reimplementing\n * React hooks lifecycle in some kind of wrapper.\n *\n * ## Versioning\n * Such versions merging requires us to keep hook api backward compatible.\n * When hook logic changes, the variable `focusLockVersion` should be incremented.\n *\n * Version update `1 -> 2`. Fixed call `safeMoveFocusInside` in `handleFocusIn` with correct second parameter (focusCameFrom instead of event.target)\n * Version update `2 -> 3`. Fixed React version isolation in nested hooks (`useFocusBorders`, `useUniqueId`).\n * Version update `3 -> 4`. Fixed lock for correct working with iframes in modal\n * Version update `4 -> 5`. Changed placements for border - now they wrap trap node\n *\n * Initially (for a several versions) key was `__intergalactic_focus_lock_hook_`.\n * Making it respect react version required to change key. So key was changed to `__intergalactic_focus_lock_hook_react_v_respectful`.\n *\n * ## React hooks order\n * When updating from version 2 to version 3 `useUniqueId` hook was removed.\n * Due to replacing useFocusLock hook in runtime, the order of hooks must be preserved.\n * So, useUniqueIdHookMock helps to preserve hooks order when hook is being replaced from version 2 to version 3.\n *\n * If new update requires to remove some hooks – add mocks instead of them.\n * If new update requires to add some hooks and no workaround with current hooks list is possible – probably focus lock hook key should be changed.\n */\nconst focusLockVersion = 5;\nconst globalFocusLockHookKey = '__intergalactic_focus_lock_hook_react_v_respectful';\n\nconst focusLockAllTraps = new Set<HTMLElement>();\nconst focusLockUsedInMountedComponents = new Set<string>();\n/** Focus master is a special mode in which focus lock might work.\n * Normally, focus lock hook allows user focus to move freely between\n * all active focus traps. When component provides `focusMaster=true`\n * parameter, it says that it doesn't want to share focus with other traps.\n * It is very useful for a big components like modals or side-bars that\n * also have some visual backdrop.\n * The last element in focus masters stack is considered as a current focus master.\n */\nconst focusMastersStack: HTMLElement[] = [];\n\nconst noop = () => {};\nconst useUniqueIdHookMock = (React: ReactT) => {\n React.useState(undefined);\n const useEnhancedEffect = canUseDOM() ? React.useLayoutEffect : React.useEffect;\n useEnhancedEffect(noop, []);\n};\n\nconst useFocusLockHook = (\n React: ReactT,\n trapRef: React.RefObject<HTMLElement>,\n autoFocus: boolean | 'enforced',\n returnFocusTo: React.RefObject<HTMLElement> | null | 'auto',\n disabled = false,\n focusMaster = false,\n onFocusOut?: (event: Event) => void,\n) => {\n useFocusBorders(React, disabled, trapRef);\n\n const autoTriggerRef = React.useRef<HTMLElement | null>(null);\n const lastUserInteractionRef = React.useRef<'mouse' | 'keyboard' | undefined>(undefined);\n\n const handleFocusOut = React.useCallback(\n (event: Event & { relatedTarget?: HTMLElement; target?: HTMLElement }) => {\n const focusCameFrom = event.target;\n const focusMovedTo = event.relatedTarget;\n setTimeout(() => {\n if (!focusCameFrom) return;\n if (autoTriggerRef.current) return;\n autoTriggerRef.current = focusCameFrom;\n }, 0);\n if (lastUserInteractionRef.current === 'mouse') return;\n Promise.resolve().then(() => {\n if (!trapRef.current) return;\n const currentFocusMaster = focusMastersStack[focusMastersStack.length - 1];\n if (currentFocusMaster && currentFocusMaster !== trapRef.current) return;\n const trapNodes = currentFocusMaster\n ? [trapRef.current]\n : [trapRef.current, ...focusLockAllTraps];\n if (isFocusInside(trapNodes, focusMovedTo)) return;\n if (\n typeof returnFocusTo === 'object' &&\n returnFocusTo?.current &&\n isFocusInside(returnFocusTo.current)\n )\n return;\n\n if (focusCameFrom && focusMovedTo) {\n setFocus(trapRef.current, focusCameFrom, focusMovedTo);\n }\n\n onFocusOut?.(event);\n });\n },\n [onFocusOut],\n );\n const handleMouseEvent = React.useCallback(() => {\n lastUserInteractionRef.current = 'mouse';\n }, []);\n const handleKeyboardEvent = React.useCallback(() => {\n lastUserInteractionRef.current = 'keyboard';\n }, []);\n const returnFocus = React.useCallback(() => {\n const trapNode = trapRef.current;\n if (trapNode && !isFocusInside(trapNode)) return;\n const focusMastersStackCount = focusMastersStack.length;\n if (typeof returnFocusTo === 'object' && returnFocusTo?.current) {\n const returnFocusNode = returnFocusTo?.current;\n setTimeout(() => {\n if (focusMastersStackCount !== focusMastersStack.length) {\n setFocus(returnFocusNode, trapNode);\n }\n }, 0);\n }\n if (returnFocusTo === 'auto' && autoTriggerRef.current) {\n const autoTrigger = autoTriggerRef.current;\n setTimeout(() => {\n if (focusMastersStackCount !== focusMastersStack.length) {\n setFocus(autoTrigger, trapNode);\n }\n }, 0);\n }\n }, [returnFocusTo]);\n React.useEffect(() => {\n if (typeof trapRef !== 'object' || trapRef === null) return;\n const node = trapRef.current;\n if (!node) return;\n focusLockAllTraps.add(node);\n return () => {\n if (!node) return;\n focusLockAllTraps.delete(node);\n };\n }, [disabled]);\n\n React.useEffect(() => {\n if (disabled) return;\n if (!canUseDOM()) return;\n if (!trapRef.current) return;\n const focusableChildren = Array.from(trapRef.current.children).flatMap((node) =>\n getFocusableIn(node as HTMLElement),\n );\n if (focusableChildren.length === 0 && autoFocus !== 'enforced') return;\n\n document.body.addEventListener('focusout', handleFocusOut as any);\n document.body.addEventListener(syntheticEvents.blur, handleFocusOut as any);\n document.body.addEventListener('mousedown', handleMouseEvent);\n document.body.addEventListener('touchstart', handleMouseEvent);\n document.body.addEventListener('keydown', handleKeyboardEvent);\n document.body.addEventListener(syntheticEvents.keydown, handleKeyboardEvent);\n\n if (autoFocus) {\n setTimeout(() => {\n setFocus(\n trapRef.current!,\n typeof returnFocusTo === 'object' ? returnFocusTo?.current : document.body,\n );\n }, 0);\n }\n return () => {\n document.body.removeEventListener('focusout', handleFocusOut as any);\n document.body.removeEventListener(syntheticEvents.blur, handleFocusOut as any);\n document.body.removeEventListener('mousedown', handleMouseEvent);\n document.body.removeEventListener('touchstart', handleMouseEvent);\n document.body.removeEventListener('keydown', handleKeyboardEvent);\n document.body.removeEventListener(syntheticEvents.keydown, handleKeyboardEvent);\n returnFocus();\n autoTriggerRef.current = null;\n };\n }, [disabled, autoFocus, returnFocusTo, returnFocus]);\n\n React.useEffect(() => {\n if (typeof trapRef !== 'object' || trapRef === null) return;\n if (disabled) return;\n if (!canUseDOM()) return;\n if (!trapRef.current) return;\n const focusableChildren = Array.from(trapRef.current.children).flatMap((node) =>\n getFocusableIn(node as HTMLElement),\n );\n if (focusableChildren.length === 0) return;\n\n if (focusMaster) {\n focusMastersStack.push(trapRef.current);\n }\n\n return () => {\n if (!focusMaster) return;\n if (focusMastersStack[focusMastersStack.length - 1] === trapRef.current) {\n focusMastersStack.pop();\n } else {\n focusMastersStack.splice(focusMastersStack.indexOf(trapRef.current!), 1);\n }\n };\n }, [disabled, focusMaster]);\n\n useUniqueIdHookMock(React);\n React.useEffect(() => {\n const id = getUniqueId('focus-lock-consumer');\n if (disabled) return;\n focusLockUsedInMountedComponents.add(id);\n return () => {\n focusLockUsedInMountedComponents.delete(id);\n };\n }, [disabled]);\n};\nconst establishHookAsGlobal = () => {\n (globalThis as any)[globalFocusLockHookKey] = {\n hook: useFocusLockHook,\n version: focusLockVersion,\n usedInComponents: focusLockUsedInMountedComponents,\n };\n};\nif (!(globalThis as any)[globalFocusLockHookKey]) {\n establishHookAsGlobal();\n} else if (typeof (globalThis as any)[globalFocusLockHookKey].version !== 'number') {\n establishHookAsGlobal();\n} else {\n const { version: theirVersion, usedInComponents } = (globalThis as any)[globalFocusLockHookKey];\n if (focusLockVersion > theirVersion && usedInComponents.size === 0) {\n establishHookAsGlobal();\n }\n}\n\nexport const useFocusLock = (\n trapRef: React.RefObject<HTMLElement>,\n autoFocus: boolean | 'enforced',\n returnFocusTo: React.RefObject<HTMLElement> | null | 'auto',\n disabled = false,\n focusMaster = false,\n onFocusOut?: (event: Event) => void,\n) => {\n const hook = (globalThis as any)[globalFocusLockHookKey]?.hook ?? useFocusLockHook;\n return hook(LocalReact, trapRef, autoFocus, returnFocusTo, disabled, focusMaster, onFocusOut);\n};\n\nexport const hasFocusableIn = (element: HTMLElement): boolean => {\n return (\n Array.from(element.children).flatMap((node) => getFocusableIn(node as HTMLElement)).length > 0\n );\n};\n"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;AAAA,IAAAA,MAAA,GAAAC,sBAAA,CAAAC,OAAA;AAEA,IAAAC,UAAA,GAAAF,sBAAA,CAAAC,OAAA;AACA,IAAAE,aAAA,GAAAF,OAAA;AACA,IAAAG,eAAA,GAAAH,OAAA;AACA,IAAAI,cAAA,GAAAJ,OAAA;AACA,IAAAK,SAAA,GAAAL,OAAA;AAIA,IAAMM,eAAe,GAAG;EACtBC,IAAI,EAAE,6CAA6C;EACnDC,OAAO,EAAE;AACX,CAAC;AACD;AACA;AACA;AACA;AACO,IAAMC,2BAA2B,GAAAC,OAAA,CAAAD,2BAAA,GAAG,SAA9BA,2BAA2BA,CAAIE,SAAgB,EAAK;EAC/D,IAAMC,KAAK,GAAGD,SAAgB;EAC9B,IAAME,IAAI,GAAGD,KAAK,CAACC,IAAoC;EACvD,IAAI,EAAEA,IAAI,IAAIP,eAAe,CAAC,EAAE;IAC9B,IAAMQ,SAAS,GAAGC,MAAM,CAACC,IAAI,CAACV,eAAe,CAAC,CAACW,IAAI,CAAC,IAAI,CAAC;IACzD,MAAM,IAAIC,KAAK,uCAAAC,MAAA,CAAuCN,IAAI,QAAAM,MAAA,CAAKL,SAAS,mBAAgB,CAAC;EAC3F;EACA,IAAMM,cAAc,GAAG,IAAIC,KAAK,CAACf,eAAe,CAACO,IAAI,CAAC,EAAE;IACtDS,OAAO,EAAE;EACX,CAAC,CAAC;EACFP,MAAM,CAACQ,cAAc,CAACH,cAAc,EAAE,QAAQ,EAAE;IAAEI,QAAQ,EAAE,KAAK;IAAEC,KAAK,EAAEb,KAAK,CAACc;EAAO,CAAC,CAAC;EACzFX,MAAM,CAACQ,cAAc,CAACH,cAAc,EAAE,eAAe,EAAE;IACrDI,QAAQ,EAAE,KAAK;IACfC,KAAK,EAAEb,KAAK,CAACe;EACf,CAAC,CAAC;EACF,OAAOP,cAAc;AACvB,CAAC;AAED,IAAMQ,eAAe,GAAG,SAAlBA,eAAeA,CACnBC,KAAa,EACbC,QAAkB,EAClBC,OAAsC,EACnC;EACHC,mBAAmB,CAACH,KAAK,CAAC;EAC1BA,KAAK,CAACI,SAAS,CAAC,YAAM;IACpB,IAAMC,QAAQ,GAAGH,OAAO,aAAPA,OAAO,uBAAPA,OAAO,CAAEI,OAAO;IAEjC,IAAID,QAAQ,IAAI,CAACJ,QAAQ,IAAI,IAAAM,8BAAc,EAACF,QAAQ,CAAC,CAACG,MAAM,GAAG,CAAC,EAAE;MAChE,IAAAC,6BAAe,EAACJ,QAAQ,CAAC;IAC3B;IAEA,OAAO,YAAM;MACX,IAAIA,QAAQ,EAAE;QACZ,IAAAK,gCAAkB,EAACL,QAAQ,CAAC;MAC9B;IACF,CAAC;EACH,CAAC,EAAE,CAACJ,QAAQ,CAAC,CAAC;AAChB,CAAC;AAID,IAAIU,QAAQ,GAAG,CAAC;AAChB,IAAMC,WAAW,GAAG,SAAdA,WAAWA,CAAIC,MAAc;EAAA,UAAAvB,MAAA,CAC9BuB,MAAM,OAAAvB,MAAA,CAAIwB,IAAI,CAACC,MAAM,CAAC,CAAC,CAACC,QAAQ,CAAC,EAAE,CAAC,CAACC,KAAK,CAAC,CAAC,CAAC,OAAA3B,MAAA,CAAIqB,QAAQ,EAAE;AAAA,CAAE;;AAElE;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,IAAMO,gBAAgB,GAAG,CAAC;AAC1B,IAAMC,sBAAsB,GAAG,oDAAoD;AAEnF,IAAMC,iBAAiB,GAAG,IAAIC,GAAG,CAAc,CAAC;AAChD,IAAMC,gCAAgC,GAAG,IAAID,GAAG,CAAS,CAAC;AAC1D;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,IAAME,iBAAgC,GAAG,EAAE;AAE3C,IAAMC,IAAI,GAAG,SAAPA,IAAIA,CAAA,EAAS,CAAC,CAAC;AACrB,IAAMrB,mBAAmB,GAAG,SAAtBA,mBAAmBA,CAAIH,KAAa,EAAK;EAC7CA,KAAK,CAACyB,QAAQ,CAACC,SAAS,CAAC;EACzB,IAAMC,iBAAiB,GAAG,IAAAC,qBAAS,EAAC,CAAC,GAAG5B,KAAK,CAAC6B,eAAe,GAAG7B,KAAK,CAACI,SAAS;EAC/EuB,iBAAiB,CAACH,IAAI,EAAE,EAAE,CAAC;AAC7B,CAAC;AAED,IAAMM,gBAAgB,GAAG,SAAnBA,gBAAgBA,CACpB9B,KAAa,EACbE,OAAqC,EACrC6B,SAA+B,EAC/BC,aAA2D,EAIxD;EAAA,IAHH/B,QAAQ,GAAAgC,SAAA,CAAAzB,MAAA,QAAAyB,SAAA,QAAAP,SAAA,GAAAO,SAAA,MAAG,KAAK;EAAA,IAChBC,WAAW,GAAAD,SAAA,CAAAzB,MAAA,QAAAyB,SAAA,QAAAP,SAAA,GAAAO,SAAA,MAAG,KAAK;EAAA,IACnBE,UAAmC,GAAAF,SAAA,CAAAzB,MAAA,OAAAyB,SAAA,MAAAP,SAAA;EAEnC3B,eAAe,CAACC,KAAK,EAAEC,QAAQ,EAAEC,OAAO,CAAC;EAEzC,IAAMkC,cAAc,GAAGpC,KAAK,CAACqC,MAAM,CAAqB,IAAI,CAAC;EAC7D,IAAMC,sBAAsB,GAAGtC,KAAK,CAACqC,MAAM,CAAmCX,SAAS,CAAC;EAExF,IAAMa,cAAc,GAAGvC,KAAK,CAACwC,WAAW,CACtC,UAACzD,KAAoE,EAAK;IACxE,IAAM0D,aAAa,GAAG1D,KAAK,CAACc,MAAM;IAClC,IAAM6C,YAAY,GAAG3D,KAAK,CAACe,aAAa;IACxC6C,UAAU,CAAC,YAAM;MACf,IAAI,CAACF,aAAa,EAAE;MACpB,IAAIL,cAAc,CAAC9B,OAAO,EAAE;MAC5B8B,cAAc,CAAC9B,OAAO,GAAGmC,aAAa;IACxC,CAAC,EAAE,CAAC,CAAC;IACL,IAAIH,sBAAsB,CAAChC,OAAO,KAAK,OAAO,EAAE;IAChDsC,OAAO,CAACC,OAAO,CAAC,CAAC,CAACC,IAAI,CAAC,YAAM;MAC3B,IAAI,CAAC5C,OAAO,CAACI,OAAO,EAAE;MACtB,IAAMyC,kBAAkB,GAAGxB,iBAAiB,CAACA,iBAAiB,CAACf,MAAM,GAAG,CAAC,CAAC;MAC1E,IAAIuC,kBAAkB,IAAIA,kBAAkB,KAAK7C,OAAO,CAACI,OAAO,EAAE;MAClE,IAAM0C,SAAS,GAAGD,kBAAkB,GAChC,CAAC7C,OAAO,CAACI,OAAO,CAAC,IAChBJ,OAAO,CAACI,OAAO,EAAAhB,MAAA,KAAA2D,mBAAA,aAAK7B,iBAAiB,EAAC;MAC3C,IAAI,IAAA8B,4BAAa,EAACF,SAAS,EAAEN,YAAY,CAAC,EAAE;MAC5C,IACE,IAAAS,QAAA,aAAOnB,aAAa,MAAK,QAAQ,IACjCA,aAAa,aAAbA,aAAa,eAAbA,aAAa,CAAE1B,OAAO,IACtB,IAAA4C,4BAAa,EAAClB,aAAa,CAAC1B,OAAO,CAAC,EAEpC;MAEF,IAAImC,aAAa,IAAIC,YAAY,EAAE;QACjC,IAAAU,kBAAQ,EAAClD,OAAO,CAACI,OAAO,EAAEmC,aAAa,EAAEC,YAAY,CAAC;MACxD;MAEAP,UAAU,aAAVA,UAAU,eAAVA,UAAU,CAAGpD,KAAK,CAAC;IACrB,CAAC,CAAC;EACJ,CAAC,EACD,CAACoD,UAAU,CACb,CAAC;EACD,IAAMkB,gBAAgB,GAAGrD,KAAK,CAACwC,WAAW,CAAC,YAAM;IAC/CF,sBAAsB,CAAChC,OAAO,GAAG,OAAO;EAC1C,CAAC,EAAE,EAAE,CAAC;EACN,IAAMgD,mBAAmB,GAAGtD,KAAK,CAACwC,WAAW,CAAC,YAAM;IAClDF,sBAAsB,CAAChC,OAAO,GAAG,UAAU;EAC7C,CAAC,EAAE,EAAE,CAAC;EACN,IAAMiD,WAAW,GAAGvD,KAAK,CAACwC,WAAW,CAAC,YAAM;IAC1C,IAAMnC,QAAQ,GAAGH,OAAO,CAACI,OAAO;IAChC,IAAID,QAAQ,IAAI,CAAC,IAAA6C,4BAAa,EAAC7C,QAAQ,CAAC,EAAE;IAC1C,IAAMmD,sBAAsB,GAAGjC,iBAAiB,CAACf,MAAM;IACvD,IAAI,IAAA2C,QAAA,aAAOnB,aAAa,MAAK,QAAQ,IAAIA,aAAa,aAAbA,aAAa,eAAbA,aAAa,CAAE1B,OAAO,EAAE;MAC/D,IAAMmD,eAAe,GAAGzB,aAAa,aAAbA,aAAa,uBAAbA,aAAa,CAAE1B,OAAO;MAC9CqC,UAAU,CAAC,YAAM;QACf,IAAIa,sBAAsB,KAAKjC,iBAAiB,CAACf,MAAM,EAAE;UACvD,IAAA4C,kBAAQ,EAACK,eAAe,EAAEpD,QAAQ,CAAC;QACrC;MACF,CAAC,EAAE,CAAC,CAAC;IACP;IACA,IAAI2B,aAAa,KAAK,MAAM,IAAII,cAAc,CAAC9B,OAAO,EAAE;MACtD,IAAMoD,WAAW,GAAGtB,cAAc,CAAC9B,OAAO;MAC1CqC,UAAU,CAAC,YAAM;QACf,IAAIa,sBAAsB,KAAKjC,iBAAiB,CAACf,MAAM,EAAE;UACvD,IAAA4C,kBAAQ,EAACM,WAAW,EAAErD,QAAQ,CAAC;QACjC;MACF,CAAC,EAAE,CAAC,CAAC;IACP;EACF,CAAC,EAAE,CAAC2B,aAAa,CAAC,CAAC;EACnBhC,KAAK,CAACI,SAAS,CAAC,YAAM;IACpB,IAAI,IAAA+C,QAAA,aAAOjD,OAAO,MAAK,QAAQ,IAAIA,OAAO,KAAK,IAAI,EAAE;IACrD,IAAMyD,IAAI,GAAGzD,OAAO,CAACI,OAAO;IAC5B,IAAI,CAACqD,IAAI,EAAE;IACXvC,iBAAiB,CAACwC,GAAG,CAACD,IAAI,CAAC;IAC3B,OAAO,YAAM;MACX,IAAI,CAACA,IAAI,EAAE;MACXvC,iBAAiB,UAAO,CAACuC,IAAI,CAAC;IAChC,CAAC;EACH,CAAC,EAAE,CAAC1D,QAAQ,CAAC,CAAC;EAEdD,KAAK,CAACI,SAAS,CAAC,YAAM;IACpB,IAAIH,QAAQ,EAAE;IACd,IAAI,CAAC,IAAA2B,qBAAS,EAAC,CAAC,EAAE;IAClB,IAAI,CAAC1B,OAAO,CAACI,OAAO,EAAE;IACtB,IAAMuD,iBAAiB,GAAGC,KAAK,CAACC,IAAI,CAAC7D,OAAO,CAACI,OAAO,CAAC0D,QAAQ,CAAC,CAACC,OAAO,CAAC,UAACN,IAAI;MAAA,OAC1E,IAAApD,8BAAc,EAACoD,IAAmB,CAAC;IAAA,CACrC,CAAC;IACD,IAAIE,iBAAiB,CAACrD,MAAM,KAAK,CAAC,IAAIuB,SAAS,KAAK,UAAU,EAAE;IAEhEmC,QAAQ,CAACC,IAAI,CAACC,gBAAgB,CAAC,UAAU,EAAE7B,cAAqB,CAAC;IACjE2B,QAAQ,CAACC,IAAI,CAACC,gBAAgB,CAAC3F,eAAe,CAACC,IAAI,EAAE6D,cAAqB,CAAC;IAC3E2B,QAAQ,CAACC,IAAI,CAACC,gBAAgB,CAAC,WAAW,EAAEf,gBAAgB,CAAC;IAC7Da,QAAQ,CAACC,IAAI,CAACC,gBAAgB,CAAC,YAAY,EAAEf,gBAAgB,CAAC;IAC9Da,QAAQ,CAACC,IAAI,CAACC,gBAAgB,CAAC,SAAS,EAAEd,mBAAmB,CAAC;IAC9DY,QAAQ,CAACC,IAAI,CAACC,gBAAgB,CAAC3F,eAAe,CAACE,OAAO,EAAE2E,mBAAmB,CAAC;IAE5E,IAAIvB,SAAS,EAAE;MACbY,UAAU,CAAC,YAAM;QACf,IAAAS,kBAAQ,EACNlD,OAAO,CAACI,OAAO,EACf,IAAA6C,QAAA,aAAOnB,aAAa,MAAK,QAAQ,GAAGA,aAAa,aAAbA,aAAa,uBAAbA,aAAa,CAAE1B,OAAO,GAAG4D,QAAQ,CAACC,IACxE,CAAC;MACH,CAAC,EAAE,CAAC,CAAC;IACP;IACA,OAAO,YAAM;MACXD,QAAQ,CAACC,IAAI,CAACE,mBAAmB,CAAC,UAAU,EAAE9B,cAAqB,CAAC;MACpE2B,QAAQ,CAACC,IAAI,CAACE,mBAAmB,CAAC5F,eAAe,CAACC,IAAI,EAAE6D,cAAqB,CAAC;MAC9E2B,QAAQ,CAACC,IAAI,CAACE,mBAAmB,CAAC,WAAW,EAAEhB,gBAAgB,CAAC;MAChEa,QAAQ,CAACC,IAAI,CAACE,mBAAmB,CAAC,YAAY,EAAEhB,gBAAgB,CAAC;MACjEa,QAAQ,CAACC,IAAI,CAACE,mBAAmB,CAAC,SAAS,EAAEf,mBAAmB,CAAC;MACjEY,QAAQ,CAACC,IAAI,CAACE,mBAAmB,CAAC5F,eAAe,CAACE,OAAO,EAAE2E,mBAAmB,CAAC;MAC/EC,WAAW,CAAC,CAAC;MACbnB,cAAc,CAAC9B,OAAO,GAAG,IAAI;IAC/B,CAAC;EACH,CAAC,EAAE,CAACL,QAAQ,EAAE8B,SAAS,EAAEC,aAAa,EAAEuB,WAAW,CAAC,CAAC;EAErDvD,KAAK,CAACI,SAAS,CAAC,YAAM;IACpB,IAAI,IAAA+C,QAAA,aAAOjD,OAAO,MAAK,QAAQ,IAAIA,OAAO,KAAK,IAAI,EAAE;IACrD,IAAID,QAAQ,EAAE;IACd,IAAI,CAAC,IAAA2B,qBAAS,EAAC,CAAC,EAAE;IAClB,IAAI,CAAC1B,OAAO,CAACI,OAAO,EAAE;IACtB,IAAMuD,iBAAiB,GAAGC,KAAK,CAACC,IAAI,CAAC7D,OAAO,CAACI,OAAO,CAAC0D,QAAQ,CAAC,CAACC,OAAO,CAAC,UAACN,IAAI;MAAA,OAC1E,IAAApD,8BAAc,EAACoD,IAAmB,CAAC;IAAA,CACrC,CAAC;IACD,IAAIE,iBAAiB,CAACrD,MAAM,KAAK,CAAC,EAAE;IAEpC,IAAI0B,WAAW,EAAE;MACfX,iBAAiB,CAAC+C,IAAI,CAACpE,OAAO,CAACI,OAAO,CAAC;IACzC;IAEA,OAAO,YAAM;MACX,IAAI,CAAC4B,WAAW,EAAE;MAClB,IAAIX,iBAAiB,CAACA,iBAAiB,CAACf,MAAM,GAAG,CAAC,CAAC,KAAKN,OAAO,CAACI,OAAO,EAAE;QACvEiB,iBAAiB,CAACgD,GAAG,CAAC,CAAC;MACzB,CAAC,MAAM;QACLhD,iBAAiB,CAACiD,MAAM,CAACjD,iBAAiB,CAACkD,OAAO,CAACvE,OAAO,CAACI,OAAQ,CAAC,EAAE,CAAC,CAAC;MAC1E;IACF,CAAC;EACH,CAAC,EAAE,CAACL,QAAQ,EAAEiC,WAAW,CAAC,CAAC;EAE3B/B,mBAAmB,CAACH,KAAK,CAAC;EAC1BA,KAAK,CAACI,SAAS,CAAC,YAAM;IACpB,IAAMsE,EAAE,GAAG9D,WAAW,CAAC,qBAAqB,CAAC;IAC7C,IAAIX,QAAQ,EAAE;IACdqB,gCAAgC,CAACsC,GAAG,CAACc,EAAE,CAAC;IACxC,OAAO,YAAM;MACXpD,gCAAgC,UAAO,CAACoD,EAAE,CAAC;IAC7C,CAAC;EACH,CAAC,EAAE,CAACzE,QAAQ,CAAC,CAAC;AAChB,CAAC;AACD,IAAM0E,qBAAqB,GAAG,SAAxBA,qBAAqBA,CAAA,EAAS;EACjCC,UAAU,CAASzD,sBAAsB,CAAC,GAAG;IAC5C0D,IAAI,EAAE/C,gBAAgB;IACtBgD,OAAO,EAAE5D,gBAAgB;IACzB6D,gBAAgB,EAAEzD;EACpB,CAAC;AACH,CAAC;AACD,IAAI,CAAEsD,UAAU,CAASzD,sBAAsB,CAAC,EAAE;EAChDwD,qBAAqB,CAAC,CAAC;AACzB,CAAC,MAAM,IAAI,OAAQC,UAAU,CAASzD,sBAAsB,CAAC,CAAC2D,OAAO,KAAK,QAAQ,EAAE;EAClFH,qBAAqB,CAAC,CAAC;AACzB,CAAC,MAAM;EACL,IAAAK,qBAAA,GAAqDJ,UAAU,CAASzD,sBAAsB,CAAC;IAA9E8D,YAAY,GAAAD,qBAAA,CAArBF,OAAO;IAAgBC,gBAAgB,GAAAC,qBAAA,CAAhBD,gBAAgB;EAC/C,IAAI7D,gBAAgB,GAAG+D,YAAY,IAAIF,gBAAgB,CAACG,IAAI,KAAK,CAAC,EAAE;IAClEP,qBAAqB,CAAC,CAAC;EACzB;AACF;AAEO,IAAMQ,YAAY,GAAAtG,OAAA,CAAAsG,YAAA,GAAG,SAAfA,YAAYA,CACvBjF,OAAqC,EACrC6B,SAA+B,EAC/BC,aAA2D,EAIxD;EAAA,IAAAoD,sBAAA,EAAAC,sBAAA;EAAA,IAHHpF,QAAQ,GAAAgC,SAAA,CAAAzB,MAAA,QAAAyB,SAAA,QAAAP,SAAA,GAAAO,SAAA,MAAG,KAAK;EAAA,IAChBC,WAAW,GAAAD,SAAA,CAAAzB,MAAA,QAAAyB,SAAA,QAAAP,SAAA,GAAAO,SAAA,MAAG,KAAK;EAAA,IACnBE,UAAmC,GAAAF,SAAA,CAAAzB,MAAA,OAAAyB,SAAA,MAAAP,SAAA;EAEnC,IAAMmD,IAAI,IAAAO,sBAAA,IAAAC,sBAAA,GAAIT,UAAU,CAASzD,sBAAsB,CAAC,cAAAkE,sBAAA,uBAA3CA,sBAAA,CAA6CR,IAAI,cAAAO,sBAAA,cAAAA,sBAAA,GAAItD,gBAAgB;EAClF,OAAO+C,IAAI,CAACS,iBAAU,EAAEpF,OAAO,EAAE6B,SAAS,EAAEC,aAAa,EAAE/B,QAAQ,EAAEiC,WAAW,EAAEC,UAAU,CAAC;AAC/F,CAAC;AAEM,IAAMoD,cAAc,GAAA1G,OAAA,CAAA0G,cAAA,GAAG,SAAjBA,cAAcA,CAAIC,OAAoB,EAAc;EAC/D,OACE1B,KAAK,CAACC,IAAI,CAACyB,OAAO,CAACxB,QAAQ,CAAC,CAACC,OAAO,CAAC,UAACN,IAAI;IAAA,OAAK,IAAApD,8BAAc,EAACoD,IAAmB,CAAC;EAAA,EAAC,CAACnD,MAAM,GAAG,CAAC;AAElG,CAAC","ignoreList":[]}
@@ -1,11 +1,11 @@
1
1
  import _typeof from "@babel/runtime/helpers/esm/typeof";
2
2
  import _toConsumableArray from "@babel/runtime/helpers/esm/toConsumableArray";
3
- import canUseDOM from "../canUseDOM.mjs";
4
3
  import LocalReact from 'react';
4
+ import canUseDOM from "../canUseDOM.mjs";
5
+ import { addFocusBorders, removeFocusBorders } from "../focus-lock/focusBorders.mjs";
6
+ import { getFocusableIn } from "../focus-lock/getFocusableIn.mjs";
5
7
  import { isFocusInside } from "../focus-lock/isFocusInside.mjs";
6
8
  import { setFocus } from "../focus-lock/setFocus.mjs";
7
- import { getFocusableIn } from "../focus-lock/getFocusableIn.mjs";
8
- import { addFocusBorders, removeFocusBorders } from "../focus-lock/focusBorders.mjs";
9
9
  export { isFocusInside, setFocus };
10
10
  var syntheticEvents = {
11
11
  blur: 'focusout-intergalactic-focus-lock-synthetic',
@@ -130,7 +130,7 @@ var useFocusLockHook = function useFocusLockHook(React, trapRef, autoFocus, retu
130
130
  if (focusCameFrom && focusMovedTo) {
131
131
  setFocus(trapRef.current, focusCameFrom, focusMovedTo);
132
132
  }
133
- onFocusOut === null || onFocusOut === void 0 ? void 0 : onFocusOut(event);
133
+ onFocusOut === null || onFocusOut === void 0 || onFocusOut(event);
134
134
  });
135
135
  }, [onFocusOut]);
136
136
  var handleMouseEvent = React.useCallback(function () {
@@ -1 +1 @@
1
- {"version":3,"file":"useFocusLock.mjs","names":["canUseDOM","LocalReact","isFocusInside","setFocus","getFocusableIn","addFocusBorders","removeFocusBorders","syntheticEvents","blur","keydown","makeFocusLockSyntheticEvent","baseEvent","event","type","supported","Object","keys","join","Error","concat","syntheticEvent","Event","bubbles","defineProperty","writable","value","target","relatedTarget","useFocusBorders","React","disabled","trapRef","useUniqueIdHookMock","useEffect","trapNode","current","length","uniqueId","getUniqueId","prefix","Math","random","toString","slice","focusLockVersion","globalFocusLockHookKey","focusLockAllTraps","Set","focusLockUsedInMountedComponents","focusMastersStack","noop","useState","undefined","useEnhancedEffect","useLayoutEffect","useFocusLockHook","autoFocus","returnFocusTo","arguments","focusMaster","onFocusOut","autoTriggerRef","useRef","lastUserInteractionRef","handleFocusOut","useCallback","focusCameFrom","focusMovedTo","setTimeout","Promise","resolve","then","currentFocusMaster","trapNodes","_toConsumableArray","_typeof","handleMouseEvent","handleKeyboardEvent","returnFocus","focusMastersStackCount","returnFocusNode","autoTrigger","node","add","focusableChildren","Array","from","children","flatMap","document","body","addEventListener","removeEventListener","push","pop","splice","indexOf","id","establishHookAsGlobal","globalThis","hook","version","usedInComponents","_globalFocusLockHookK","theirVersion","size","useFocusLock","_globalFocusLockHookK2","_globalFocusLockHookK3","hasFocusableIn","element"],"sources":["../../../src/utils/use/useFocusLock.ts"],"sourcesContent":["import canUseDOM from '../canUseDOM';\nimport LocalReact from 'react';\n\nimport { isFocusInside } from '../focus-lock/isFocusInside';\nimport { setFocus } from '../focus-lock/setFocus';\nimport { getFocusableIn } from '../focus-lock/getFocusableIn';\nimport { addFocusBorders, removeFocusBorders } from '../focus-lock/focusBorders';\n\nexport { isFocusInside, setFocus };\n\nconst syntheticEvents = {\n blur: 'focusout-intergalactic-focus-lock-synthetic',\n keydown: 'keydown-intergalactic-focus-lock-synthetic',\n};\n/**\n * Synthetic event are special events that always bypass all propagation guards and reaches focus lock event listeners.\n * You should always prevent native event propagation in order to prevent focus enforcing double calls.\n */\nexport const makeFocusLockSyntheticEvent = (baseEvent: Event) => {\n const event = baseEvent as any;\n const type = event.type as keyof typeof syntheticEvents;\n if (!(type in syntheticEvents)) {\n const supported = Object.keys(syntheticEvents).join(', ');\n throw new Error(`Unable to make synthetic event for ${type}, ${supported} are supported`);\n }\n const syntheticEvent = new Event(syntheticEvents[type], {\n bubbles: true,\n });\n Object.defineProperty(syntheticEvent, 'target', { writable: false, value: event.target });\n Object.defineProperty(syntheticEvent, 'relatedTarget', {\n writable: false,\n value: event.relatedTarget,\n });\n return syntheticEvent;\n};\n\nconst useFocusBorders = (\n React: ReactT,\n disabled?: boolean,\n trapRef?: React.RefObject<HTMLElement>,\n) => {\n useUniqueIdHookMock(React);\n React.useEffect(() => {\n const trapNode = trapRef?.current;\n\n if (trapNode && !disabled && getFocusableIn(trapNode).length > 0) {\n addFocusBorders(trapNode);\n }\n\n return () => {\n if (trapNode) {\n removeFocusBorders(trapNode);\n }\n };\n }, [disabled]);\n};\n\ntype ReactT = typeof LocalReact;\n\nlet uniqueId = 0;\nconst getUniqueId = (prefix: string) =>\n `${prefix}-${Math.random().toString(36).slice(2)}-${uniqueId++}`;\n\n/**\n * # Focus lock hook merging\n * In some cases same page might contain different versions of components.\n * In such cases, we need to ensure that only one version of focus lock hook is used.\n * So, it's why we have `useFocusLockHook` function that is wrapped into `useFocusLock`.\n *\n * While evaluating this file code, we check if global focus lock hook is already defined.\n * If it's defined, we replace it ONLY if our version is higher and no components currently use it.\n * The last condition is very important because we are unable to replace React hook without reimplementing\n * React hooks lifecycle in some kind of wrapper.\n *\n * ## Versioning\n * Such versions merging requires us to keep hook api backward compatible.\n * When hook logic changes, the variable `focusLockVersion` should be incremented.\n *\n * Version update `1 -> 2`. Fixed call `safeMoveFocusInside` in `handleFocusIn` with correct second parameter (focusCameFrom instead of event.target)\n * Version update `2 -> 3`. Fixed React version isolation in nested hooks (`useFocusBorders`, `useUniqueId`).\n * Version update `3 -> 4`. Fixed lock for correct working with iframes in modal\n * Version update `4 -> 5`. Changed placements for border - now they wrap trap node\n *\n * Initially (for a several versions) key was `__intergalactic_focus_lock_hook_`.\n * Making it respect react version required to change key. So key was changed to `__intergalactic_focus_lock_hook_react_v_respectful`.\n *\n * ## React hooks order\n * When updating from version 2 to version 3 `useUniqueId` hook was removed.\n * Due to replacing useFocusLock hook in runtime, the order of hooks must be preserved.\n * So, useUniqueIdHookMock helps to preserve hooks order when hook is being replaced from version 2 to version 3.\n *\n * If new update requires to remove some hooks – add mocks instead of them.\n * If new update requires to add some hooks and no workaround with current hooks list is possible – probably focus lock hook key should be changed.\n */\nconst focusLockVersion = 5;\nconst globalFocusLockHookKey = '__intergalactic_focus_lock_hook_react_v_respectful';\n\nconst focusLockAllTraps = new Set<HTMLElement>();\nconst focusLockUsedInMountedComponents = new Set<string>();\n/** Focus master is a special mode in which focus lock might work.\n * Normally, focus lock hook allows user focus to move freely between\n * all active focus traps. When component provides `focusMaster=true`\n * parameter, it says that it doesn't want to share focus with other traps.\n * It is very useful for a big components like modals or side-bars that\n * also have some visual backdrop.\n * The last element in focus masters stack is considered as a current focus master.\n */\nconst focusMastersStack: HTMLElement[] = [];\n\nconst noop = () => {};\nconst useUniqueIdHookMock = (React: ReactT) => {\n React.useState(undefined);\n const useEnhancedEffect = canUseDOM() ? React.useLayoutEffect : React.useEffect;\n useEnhancedEffect(noop, []);\n};\n\nconst useFocusLockHook = (\n React: ReactT,\n trapRef: React.RefObject<HTMLElement>,\n autoFocus: boolean | 'enforced',\n returnFocusTo: React.RefObject<HTMLElement> | null | 'auto',\n disabled = false,\n focusMaster = false,\n onFocusOut?: (event: Event) => void,\n) => {\n useFocusBorders(React, disabled, trapRef);\n\n const autoTriggerRef = React.useRef<HTMLElement | null>(null);\n const lastUserInteractionRef = React.useRef<'mouse' | 'keyboard' | undefined>(undefined);\n\n const handleFocusOut = React.useCallback(\n (event: Event & { relatedTarget?: HTMLElement; target?: HTMLElement }) => {\n const focusCameFrom = event.target;\n const focusMovedTo = event.relatedTarget;\n setTimeout(() => {\n if (!focusCameFrom) return;\n if (autoTriggerRef.current) return;\n autoTriggerRef.current = focusCameFrom;\n }, 0);\n if (lastUserInteractionRef.current === 'mouse') return;\n Promise.resolve().then(() => {\n if (!trapRef.current) return;\n const currentFocusMaster = focusMastersStack[focusMastersStack.length - 1];\n if (currentFocusMaster && currentFocusMaster !== trapRef.current) return;\n const trapNodes = currentFocusMaster\n ? [trapRef.current]\n : [trapRef.current, ...focusLockAllTraps];\n if (isFocusInside(trapNodes, focusMovedTo)) return;\n if (\n typeof returnFocusTo === 'object' &&\n returnFocusTo?.current &&\n isFocusInside(returnFocusTo.current)\n )\n return;\n\n if (focusCameFrom && focusMovedTo) {\n setFocus(trapRef.current, focusCameFrom, focusMovedTo);\n }\n\n onFocusOut?.(event);\n });\n },\n [onFocusOut],\n );\n const handleMouseEvent = React.useCallback(() => {\n lastUserInteractionRef.current = 'mouse';\n }, []);\n const handleKeyboardEvent = React.useCallback(() => {\n lastUserInteractionRef.current = 'keyboard';\n }, []);\n const returnFocus = React.useCallback(() => {\n const trapNode = trapRef.current;\n if (trapNode && !isFocusInside(trapNode)) return;\n const focusMastersStackCount = focusMastersStack.length;\n if (typeof returnFocusTo === 'object' && returnFocusTo?.current) {\n const returnFocusNode = returnFocusTo?.current;\n setTimeout(() => {\n if (focusMastersStackCount !== focusMastersStack.length) {\n setFocus(returnFocusNode, trapNode);\n }\n }, 0);\n }\n if (returnFocusTo === 'auto' && autoTriggerRef.current) {\n const autoTrigger = autoTriggerRef.current;\n setTimeout(() => {\n if (focusMastersStackCount !== focusMastersStack.length) {\n setFocus(autoTrigger, trapNode);\n }\n }, 0);\n }\n }, [returnFocusTo]);\n React.useEffect(() => {\n if (typeof trapRef !== 'object' || trapRef === null) return;\n const node = trapRef.current;\n if (!node) return;\n focusLockAllTraps.add(node);\n return () => {\n if (!node) return;\n focusLockAllTraps.delete(node);\n };\n }, [disabled]);\n\n React.useEffect(() => {\n if (disabled) return;\n if (!canUseDOM()) return;\n if (!trapRef.current) return;\n const focusableChildren = Array.from(trapRef.current.children).flatMap((node) =>\n getFocusableIn(node as HTMLElement),\n );\n if (focusableChildren.length === 0 && autoFocus !== 'enforced') return;\n\n document.body.addEventListener('focusout', handleFocusOut as any);\n document.body.addEventListener(syntheticEvents.blur, handleFocusOut as any);\n document.body.addEventListener('mousedown', handleMouseEvent);\n document.body.addEventListener('touchstart', handleMouseEvent);\n document.body.addEventListener('keydown', handleKeyboardEvent);\n document.body.addEventListener(syntheticEvents.keydown, handleKeyboardEvent);\n\n if (autoFocus) {\n setTimeout(() => {\n setFocus(\n trapRef.current!,\n typeof returnFocusTo === 'object' ? returnFocusTo?.current : document.body,\n );\n }, 0);\n }\n return () => {\n document.body.removeEventListener('focusout', handleFocusOut as any);\n document.body.removeEventListener(syntheticEvents.blur, handleFocusOut as any);\n document.body.removeEventListener('mousedown', handleMouseEvent);\n document.body.removeEventListener('touchstart', handleMouseEvent);\n document.body.removeEventListener('keydown', handleKeyboardEvent);\n document.body.removeEventListener(syntheticEvents.keydown, handleKeyboardEvent);\n returnFocus();\n autoTriggerRef.current = null;\n };\n }, [disabled, autoFocus, returnFocusTo, returnFocus]);\n\n React.useEffect(() => {\n if (typeof trapRef !== 'object' || trapRef === null) return;\n if (disabled) return;\n if (!canUseDOM()) return;\n if (!trapRef.current) return;\n const focusableChildren = Array.from(trapRef.current.children).flatMap((node) =>\n getFocusableIn(node as HTMLElement),\n );\n if (focusableChildren.length === 0) return;\n\n if (focusMaster) {\n focusMastersStack.push(trapRef.current);\n }\n\n return () => {\n if (!focusMaster) return;\n if (focusMastersStack[focusMastersStack.length - 1] === trapRef.current) {\n focusMastersStack.pop();\n } else {\n focusMastersStack.splice(focusMastersStack.indexOf(trapRef.current!), 1);\n }\n };\n }, [disabled, focusMaster]);\n\n useUniqueIdHookMock(React);\n React.useEffect(() => {\n const id = getUniqueId('focus-lock-consumer');\n if (disabled) return;\n focusLockUsedInMountedComponents.add(id);\n return () => {\n focusLockUsedInMountedComponents.delete(id);\n };\n }, [disabled]);\n};\nconst establishHookAsGlobal = () => {\n (globalThis as any)[globalFocusLockHookKey] = {\n hook: useFocusLockHook,\n version: focusLockVersion,\n usedInComponents: focusLockUsedInMountedComponents,\n };\n};\nif (!(globalThis as any)[globalFocusLockHookKey]) {\n establishHookAsGlobal();\n} else if (typeof (globalThis as any)[globalFocusLockHookKey].version !== 'number') {\n establishHookAsGlobal();\n} else {\n const { version: theirVersion, usedInComponents } = (globalThis as any)[globalFocusLockHookKey];\n if (focusLockVersion > theirVersion && usedInComponents.size === 0) {\n establishHookAsGlobal();\n }\n}\n\nexport const useFocusLock = (\n trapRef: React.RefObject<HTMLElement>,\n autoFocus: boolean | 'enforced',\n returnFocusTo: React.RefObject<HTMLElement> | null | 'auto',\n disabled = false,\n focusMaster = false,\n onFocusOut?: (event: Event) => void,\n) => {\n const hook = (globalThis as any)[globalFocusLockHookKey]?.hook ?? useFocusLockHook;\n return hook(LocalReact, trapRef, autoFocus, returnFocusTo, disabled, focusMaster, onFocusOut);\n};\n\nexport const hasFocusableIn = (element: HTMLElement): boolean => {\n return (\n Array.from(element.children).flatMap((node) => getFocusableIn(node as HTMLElement)).length > 0\n );\n};\n"],"mappings":"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"}
1
+ {"version":3,"file":"useFocusLock.mjs","names":["LocalReact","canUseDOM","addFocusBorders","removeFocusBorders","getFocusableIn","isFocusInside","setFocus","syntheticEvents","blur","keydown","makeFocusLockSyntheticEvent","baseEvent","event","type","supported","Object","keys","join","Error","concat","syntheticEvent","Event","bubbles","defineProperty","writable","value","target","relatedTarget","useFocusBorders","React","disabled","trapRef","useUniqueIdHookMock","useEffect","trapNode","current","length","uniqueId","getUniqueId","prefix","Math","random","toString","slice","focusLockVersion","globalFocusLockHookKey","focusLockAllTraps","Set","focusLockUsedInMountedComponents","focusMastersStack","noop","useState","undefined","useEnhancedEffect","useLayoutEffect","useFocusLockHook","autoFocus","returnFocusTo","arguments","focusMaster","onFocusOut","autoTriggerRef","useRef","lastUserInteractionRef","handleFocusOut","useCallback","focusCameFrom","focusMovedTo","setTimeout","Promise","resolve","then","currentFocusMaster","trapNodes","_toConsumableArray","_typeof","handleMouseEvent","handleKeyboardEvent","returnFocus","focusMastersStackCount","returnFocusNode","autoTrigger","node","add","focusableChildren","Array","from","children","flatMap","document","body","addEventListener","removeEventListener","push","pop","splice","indexOf","id","establishHookAsGlobal","globalThis","hook","version","usedInComponents","_globalFocusLockHookK","theirVersion","size","useFocusLock","_globalFocusLockHookK2","_globalFocusLockHookK3","hasFocusableIn","element"],"sources":["../../../src/utils/use/useFocusLock.ts"],"sourcesContent":["import LocalReact from 'react';\n\nimport canUseDOM from '../canUseDOM';\nimport { addFocusBorders, removeFocusBorders } from '../focus-lock/focusBorders';\nimport { getFocusableIn } from '../focus-lock/getFocusableIn';\nimport { isFocusInside } from '../focus-lock/isFocusInside';\nimport { setFocus } from '../focus-lock/setFocus';\n\nexport { isFocusInside, setFocus };\n\nconst syntheticEvents = {\n blur: 'focusout-intergalactic-focus-lock-synthetic',\n keydown: 'keydown-intergalactic-focus-lock-synthetic',\n};\n/**\n * Synthetic event are special events that always bypass all propagation guards and reaches focus lock event listeners.\n * You should always prevent native event propagation in order to prevent focus enforcing double calls.\n */\nexport const makeFocusLockSyntheticEvent = (baseEvent: Event) => {\n const event = baseEvent as any;\n const type = event.type as keyof typeof syntheticEvents;\n if (!(type in syntheticEvents)) {\n const supported = Object.keys(syntheticEvents).join(', ');\n throw new Error(`Unable to make synthetic event for ${type}, ${supported} are supported`);\n }\n const syntheticEvent = new Event(syntheticEvents[type], {\n bubbles: true,\n });\n Object.defineProperty(syntheticEvent, 'target', { writable: false, value: event.target });\n Object.defineProperty(syntheticEvent, 'relatedTarget', {\n writable: false,\n value: event.relatedTarget,\n });\n return syntheticEvent;\n};\n\nconst useFocusBorders = (\n React: ReactT,\n disabled?: boolean,\n trapRef?: React.RefObject<HTMLElement>,\n) => {\n useUniqueIdHookMock(React);\n React.useEffect(() => {\n const trapNode = trapRef?.current;\n\n if (trapNode && !disabled && getFocusableIn(trapNode).length > 0) {\n addFocusBorders(trapNode);\n }\n\n return () => {\n if (trapNode) {\n removeFocusBorders(trapNode);\n }\n };\n }, [disabled]);\n};\n\ntype ReactT = typeof LocalReact;\n\nlet uniqueId = 0;\nconst getUniqueId = (prefix: string) =>\n `${prefix}-${Math.random().toString(36).slice(2)}-${uniqueId++}`;\n\n/**\n * # Focus lock hook merging\n * In some cases same page might contain different versions of components.\n * In such cases, we need to ensure that only one version of focus lock hook is used.\n * So, it's why we have `useFocusLockHook` function that is wrapped into `useFocusLock`.\n *\n * While evaluating this file code, we check if global focus lock hook is already defined.\n * If it's defined, we replace it ONLY if our version is higher and no components currently use it.\n * The last condition is very important because we are unable to replace React hook without reimplementing\n * React hooks lifecycle in some kind of wrapper.\n *\n * ## Versioning\n * Such versions merging requires us to keep hook api backward compatible.\n * When hook logic changes, the variable `focusLockVersion` should be incremented.\n *\n * Version update `1 -> 2`. Fixed call `safeMoveFocusInside` in `handleFocusIn` with correct second parameter (focusCameFrom instead of event.target)\n * Version update `2 -> 3`. Fixed React version isolation in nested hooks (`useFocusBorders`, `useUniqueId`).\n * Version update `3 -> 4`. Fixed lock for correct working with iframes in modal\n * Version update `4 -> 5`. Changed placements for border - now they wrap trap node\n *\n * Initially (for a several versions) key was `__intergalactic_focus_lock_hook_`.\n * Making it respect react version required to change key. So key was changed to `__intergalactic_focus_lock_hook_react_v_respectful`.\n *\n * ## React hooks order\n * When updating from version 2 to version 3 `useUniqueId` hook was removed.\n * Due to replacing useFocusLock hook in runtime, the order of hooks must be preserved.\n * So, useUniqueIdHookMock helps to preserve hooks order when hook is being replaced from version 2 to version 3.\n *\n * If new update requires to remove some hooks – add mocks instead of them.\n * If new update requires to add some hooks and no workaround with current hooks list is possible – probably focus lock hook key should be changed.\n */\nconst focusLockVersion = 5;\nconst globalFocusLockHookKey = '__intergalactic_focus_lock_hook_react_v_respectful';\n\nconst focusLockAllTraps = new Set<HTMLElement>();\nconst focusLockUsedInMountedComponents = new Set<string>();\n/** Focus master is a special mode in which focus lock might work.\n * Normally, focus lock hook allows user focus to move freely between\n * all active focus traps. When component provides `focusMaster=true`\n * parameter, it says that it doesn't want to share focus with other traps.\n * It is very useful for a big components like modals or side-bars that\n * also have some visual backdrop.\n * The last element in focus masters stack is considered as a current focus master.\n */\nconst focusMastersStack: HTMLElement[] = [];\n\nconst noop = () => {};\nconst useUniqueIdHookMock = (React: ReactT) => {\n React.useState(undefined);\n const useEnhancedEffect = canUseDOM() ? React.useLayoutEffect : React.useEffect;\n useEnhancedEffect(noop, []);\n};\n\nconst useFocusLockHook = (\n React: ReactT,\n trapRef: React.RefObject<HTMLElement>,\n autoFocus: boolean | 'enforced',\n returnFocusTo: React.RefObject<HTMLElement> | null | 'auto',\n disabled = false,\n focusMaster = false,\n onFocusOut?: (event: Event) => void,\n) => {\n useFocusBorders(React, disabled, trapRef);\n\n const autoTriggerRef = React.useRef<HTMLElement | null>(null);\n const lastUserInteractionRef = React.useRef<'mouse' | 'keyboard' | undefined>(undefined);\n\n const handleFocusOut = React.useCallback(\n (event: Event & { relatedTarget?: HTMLElement; target?: HTMLElement }) => {\n const focusCameFrom = event.target;\n const focusMovedTo = event.relatedTarget;\n setTimeout(() => {\n if (!focusCameFrom) return;\n if (autoTriggerRef.current) return;\n autoTriggerRef.current = focusCameFrom;\n }, 0);\n if (lastUserInteractionRef.current === 'mouse') return;\n Promise.resolve().then(() => {\n if (!trapRef.current) return;\n const currentFocusMaster = focusMastersStack[focusMastersStack.length - 1];\n if (currentFocusMaster && currentFocusMaster !== trapRef.current) return;\n const trapNodes = currentFocusMaster\n ? [trapRef.current]\n : [trapRef.current, ...focusLockAllTraps];\n if (isFocusInside(trapNodes, focusMovedTo)) return;\n if (\n typeof returnFocusTo === 'object' &&\n returnFocusTo?.current &&\n isFocusInside(returnFocusTo.current)\n )\n return;\n\n if (focusCameFrom && focusMovedTo) {\n setFocus(trapRef.current, focusCameFrom, focusMovedTo);\n }\n\n onFocusOut?.(event);\n });\n },\n [onFocusOut],\n );\n const handleMouseEvent = React.useCallback(() => {\n lastUserInteractionRef.current = 'mouse';\n }, []);\n const handleKeyboardEvent = React.useCallback(() => {\n lastUserInteractionRef.current = 'keyboard';\n }, []);\n const returnFocus = React.useCallback(() => {\n const trapNode = trapRef.current;\n if (trapNode && !isFocusInside(trapNode)) return;\n const focusMastersStackCount = focusMastersStack.length;\n if (typeof returnFocusTo === 'object' && returnFocusTo?.current) {\n const returnFocusNode = returnFocusTo?.current;\n setTimeout(() => {\n if (focusMastersStackCount !== focusMastersStack.length) {\n setFocus(returnFocusNode, trapNode);\n }\n }, 0);\n }\n if (returnFocusTo === 'auto' && autoTriggerRef.current) {\n const autoTrigger = autoTriggerRef.current;\n setTimeout(() => {\n if (focusMastersStackCount !== focusMastersStack.length) {\n setFocus(autoTrigger, trapNode);\n }\n }, 0);\n }\n }, [returnFocusTo]);\n React.useEffect(() => {\n if (typeof trapRef !== 'object' || trapRef === null) return;\n const node = trapRef.current;\n if (!node) return;\n focusLockAllTraps.add(node);\n return () => {\n if (!node) return;\n focusLockAllTraps.delete(node);\n };\n }, [disabled]);\n\n React.useEffect(() => {\n if (disabled) return;\n if (!canUseDOM()) return;\n if (!trapRef.current) return;\n const focusableChildren = Array.from(trapRef.current.children).flatMap((node) =>\n getFocusableIn(node as HTMLElement),\n );\n if (focusableChildren.length === 0 && autoFocus !== 'enforced') return;\n\n document.body.addEventListener('focusout', handleFocusOut as any);\n document.body.addEventListener(syntheticEvents.blur, handleFocusOut as any);\n document.body.addEventListener('mousedown', handleMouseEvent);\n document.body.addEventListener('touchstart', handleMouseEvent);\n document.body.addEventListener('keydown', handleKeyboardEvent);\n document.body.addEventListener(syntheticEvents.keydown, handleKeyboardEvent);\n\n if (autoFocus) {\n setTimeout(() => {\n setFocus(\n trapRef.current!,\n typeof returnFocusTo === 'object' ? returnFocusTo?.current : document.body,\n );\n }, 0);\n }\n return () => {\n document.body.removeEventListener('focusout', handleFocusOut as any);\n document.body.removeEventListener(syntheticEvents.blur, handleFocusOut as any);\n document.body.removeEventListener('mousedown', handleMouseEvent);\n document.body.removeEventListener('touchstart', handleMouseEvent);\n document.body.removeEventListener('keydown', handleKeyboardEvent);\n document.body.removeEventListener(syntheticEvents.keydown, handleKeyboardEvent);\n returnFocus();\n autoTriggerRef.current = null;\n };\n }, [disabled, autoFocus, returnFocusTo, returnFocus]);\n\n React.useEffect(() => {\n if (typeof trapRef !== 'object' || trapRef === null) return;\n if (disabled) return;\n if (!canUseDOM()) return;\n if (!trapRef.current) return;\n const focusableChildren = Array.from(trapRef.current.children).flatMap((node) =>\n getFocusableIn(node as HTMLElement),\n );\n if (focusableChildren.length === 0) return;\n\n if (focusMaster) {\n focusMastersStack.push(trapRef.current);\n }\n\n return () => {\n if (!focusMaster) return;\n if (focusMastersStack[focusMastersStack.length - 1] === trapRef.current) {\n focusMastersStack.pop();\n } else {\n focusMastersStack.splice(focusMastersStack.indexOf(trapRef.current!), 1);\n }\n };\n }, [disabled, focusMaster]);\n\n useUniqueIdHookMock(React);\n React.useEffect(() => {\n const id = getUniqueId('focus-lock-consumer');\n if (disabled) return;\n focusLockUsedInMountedComponents.add(id);\n return () => {\n focusLockUsedInMountedComponents.delete(id);\n };\n }, [disabled]);\n};\nconst establishHookAsGlobal = () => {\n (globalThis as any)[globalFocusLockHookKey] = {\n hook: useFocusLockHook,\n version: focusLockVersion,\n usedInComponents: focusLockUsedInMountedComponents,\n };\n};\nif (!(globalThis as any)[globalFocusLockHookKey]) {\n establishHookAsGlobal();\n} else if (typeof (globalThis as any)[globalFocusLockHookKey].version !== 'number') {\n establishHookAsGlobal();\n} else {\n const { version: theirVersion, usedInComponents } = (globalThis as any)[globalFocusLockHookKey];\n if (focusLockVersion > theirVersion && usedInComponents.size === 0) {\n establishHookAsGlobal();\n }\n}\n\nexport const useFocusLock = (\n trapRef: React.RefObject<HTMLElement>,\n autoFocus: boolean | 'enforced',\n returnFocusTo: React.RefObject<HTMLElement> | null | 'auto',\n disabled = false,\n focusMaster = false,\n onFocusOut?: (event: Event) => void,\n) => {\n const hook = (globalThis as any)[globalFocusLockHookKey]?.hook ?? useFocusLockHook;\n return hook(LocalReact, trapRef, autoFocus, returnFocusTo, disabled, focusMaster, onFocusOut);\n};\n\nexport const hasFocusableIn = (element: HTMLElement): boolean => {\n return (\n Array.from(element.children).flatMap((node) => getFocusableIn(node as HTMLElement)).length > 0\n );\n};\n"],"mappings":"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","ignoreList":[]}
@@ -1,6 +1,6 @@
1
1
  "use strict";
2
2
 
3
- var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
3
+ var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault")["default"];
4
4
  Object.defineProperty(exports, "__esModule", {
5
5
  value: true
6
6
  });
@@ -24,7 +24,7 @@ function getScrollbarWidth() {
24
24
  inner.style.width = '100%';
25
25
  outer.appendChild(inner);
26
26
  var widthWithScroll = inner.offsetWidth;
27
- (_outer$parentNode = outer.parentNode) === null || _outer$parentNode === void 0 ? void 0 : _outer$parentNode.removeChild(outer);
27
+ (_outer$parentNode = outer.parentNode) === null || _outer$parentNode === void 0 || _outer$parentNode.removeChild(outer);
28
28
  return widthNoScroll - widthWithScroll;
29
29
  }
30
30
  function getIntValueFromCss(value) {
@@ -1 +1 @@
1
- {"version":3,"file":"usePreventScroll.js","names":["_react","_interopRequireDefault","require","_canUseDOM","_uniqueID","getScrollbarWidth","_outer$parentNode","canUseDOM","outer","document","createElement","style","visibility","width","msOverflowStyle","body","appendChild","widthNoScroll","offsetWidth","overflow","inner","widthWithScroll","parentNode","removeChild","getIntValueFromCss","value","Number","isNaN","parseInt","scrollPreventers","Set","lockedBodyStyles","paddingRight","boxSizing","usePreventScroll","visible","arguments","length","undefined","disabled","scrollbarWidth","React","useMemo","id","useUID","useEffect","add","size","_window$getComputedSt","window","getComputedStyle","intPaddingRight","intPaddingRightFromStyle"],"sources":["../../../src/utils/use/usePreventScroll.tsx"],"sourcesContent":["import React from 'react';\nimport canUseDOM from '../canUseDOM';\nimport { useUID } from '../uniqueID';\n\nexport function getScrollbarWidth(): number {\n if (!canUseDOM()) return 0;\n const outer = document.createElement('div');\n outer.style.visibility = 'hidden';\n outer.style.width = '100px';\n // @ts-expect-error\n outer.style.msOverflowStyle = 'scrollbar'; // needed for WinJS apps\n document.body.appendChild(outer);\n\n const widthNoScroll = outer.offsetWidth;\n outer.style.overflow = 'scroll';\n\n const inner = document.createElement('div');\n inner.style.width = '100%';\n outer.appendChild(inner);\n\n const widthWithScroll = inner.offsetWidth;\n\n outer.parentNode?.removeChild(outer);\n\n return widthNoScroll - widthWithScroll;\n}\n\nfunction getIntValueFromCss(value: any) {\n return !Number.isNaN(Number(value)) ? Number(value) : Number.parseInt(value, 10);\n}\n\nconst scrollPreventers = new Set<string>();\nconst lockedBodyStyles = {\n paddingRight: null as string | null,\n overflow: null as string | null,\n boxSizing: null as string | null,\n};\nexport default function usePreventScroll(visible = true, disabled = false) {\n const scrollbarWidth = React.useMemo(getScrollbarWidth, [getScrollbarWidth]);\n const id = useUID('scroll-preventer-');\n\n React.useEffect(() => {\n if (disabled) return;\n if (!canUseDOM() || !visible) return;\n scrollPreventers.add(id);\n if (scrollPreventers.size > 1) return;\n\n const { overflow, paddingRight, boxSizing } = window.getComputedStyle(document.body);\n lockedBodyStyles.paddingRight = paddingRight;\n lockedBodyStyles.overflow = overflow;\n lockedBodyStyles.boxSizing = boxSizing;\n\n const intPaddingRight = getIntValueFromCss(paddingRight);\n let intPaddingRightFromStyle = getIntValueFromCss(document.body.style.paddingRight);\n // Detected own style for window inside window\n if (intPaddingRightFromStyle !== scrollbarWidth) {\n intPaddingRightFromStyle = 0;\n }\n\n document.body.style.overflow = 'hidden';\n document.body.style.paddingRight =\n scrollbarWidth + (intPaddingRight - intPaddingRightFromStyle) + 'px';\n document.body.style.boxSizing = 'border-box';\n }, [visible, id, disabled]);\n\n React.useEffect(() => {\n if (disabled) return;\n if (!canUseDOM() || !visible) return;\n return () => {\n scrollPreventers.delete(id);\n if (scrollPreventers.size !== 0) return;\n document.body.style.overflow = lockedBodyStyles.overflow!;\n document.body.style.paddingRight = lockedBodyStyles.paddingRight!;\n document.body.style.boxSizing = lockedBodyStyles.boxSizing!;\n };\n }, [visible, id, disabled]);\n}\n"],"mappings":"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"}
1
+ {"version":3,"file":"usePreventScroll.js","names":["_react","_interopRequireDefault","require","_canUseDOM","_uniqueID","getScrollbarWidth","_outer$parentNode","canUseDOM","outer","document","createElement","style","visibility","width","msOverflowStyle","body","appendChild","widthNoScroll","offsetWidth","overflow","inner","widthWithScroll","parentNode","removeChild","getIntValueFromCss","value","Number","isNaN","parseInt","scrollPreventers","Set","lockedBodyStyles","paddingRight","boxSizing","usePreventScroll","visible","arguments","length","undefined","disabled","scrollbarWidth","React","useMemo","id","useUID","useEffect","add","size","_window$getComputedSt","window","getComputedStyle","intPaddingRight","intPaddingRightFromStyle"],"sources":["../../../src/utils/use/usePreventScroll.tsx"],"sourcesContent":["import React from 'react';\n\nimport canUseDOM from '../canUseDOM';\nimport { useUID } from '../uniqueID';\n\nexport function getScrollbarWidth(): number {\n if (!canUseDOM()) return 0;\n const outer = document.createElement('div');\n outer.style.visibility = 'hidden';\n outer.style.width = '100px';\n // @ts-expect-error\n outer.style.msOverflowStyle = 'scrollbar'; // needed for WinJS apps\n document.body.appendChild(outer);\n\n const widthNoScroll = outer.offsetWidth;\n outer.style.overflow = 'scroll';\n\n const inner = document.createElement('div');\n inner.style.width = '100%';\n outer.appendChild(inner);\n\n const widthWithScroll = inner.offsetWidth;\n\n outer.parentNode?.removeChild(outer);\n\n return widthNoScroll - widthWithScroll;\n}\n\nfunction getIntValueFromCss(value: any) {\n return !Number.isNaN(Number(value)) ? Number(value) : Number.parseInt(value, 10);\n}\n\nconst scrollPreventers = new Set<string>();\nconst lockedBodyStyles = {\n paddingRight: null as string | null,\n overflow: null as string | null,\n boxSizing: null as string | null,\n};\nexport default function usePreventScroll(visible = true, disabled = false) {\n const scrollbarWidth = React.useMemo(getScrollbarWidth, [getScrollbarWidth]);\n const id = useUID('scroll-preventer-');\n\n React.useEffect(() => {\n if (disabled) return;\n if (!canUseDOM() || !visible) return;\n scrollPreventers.add(id);\n if (scrollPreventers.size > 1) return;\n\n const { overflow, paddingRight, boxSizing } = window.getComputedStyle(document.body);\n lockedBodyStyles.paddingRight = paddingRight;\n lockedBodyStyles.overflow = overflow;\n lockedBodyStyles.boxSizing = boxSizing;\n\n const intPaddingRight = getIntValueFromCss(paddingRight);\n let intPaddingRightFromStyle = getIntValueFromCss(document.body.style.paddingRight);\n // Detected own style for window inside window\n if (intPaddingRightFromStyle !== scrollbarWidth) {\n intPaddingRightFromStyle = 0;\n }\n\n document.body.style.overflow = 'hidden';\n document.body.style.paddingRight =\n scrollbarWidth + (intPaddingRight - intPaddingRightFromStyle) + 'px';\n document.body.style.boxSizing = 'border-box';\n }, [visible, id, disabled]);\n\n React.useEffect(() => {\n if (disabled) return;\n if (!canUseDOM() || !visible) return;\n return () => {\n scrollPreventers.delete(id);\n if (scrollPreventers.size !== 0) return;\n document.body.style.overflow = lockedBodyStyles.overflow!;\n document.body.style.paddingRight = lockedBodyStyles.paddingRight!;\n document.body.style.boxSizing = lockedBodyStyles.boxSizing!;\n };\n }, [visible, id, disabled]);\n}\n"],"mappings":"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","ignoreList":[]}
@@ -16,7 +16,7 @@ export function getScrollbarWidth() {
16
16
  inner.style.width = '100%';
17
17
  outer.appendChild(inner);
18
18
  var widthWithScroll = inner.offsetWidth;
19
- (_outer$parentNode = outer.parentNode) === null || _outer$parentNode === void 0 ? void 0 : _outer$parentNode.removeChild(outer);
19
+ (_outer$parentNode = outer.parentNode) === null || _outer$parentNode === void 0 || _outer$parentNode.removeChild(outer);
20
20
  return widthNoScroll - widthWithScroll;
21
21
  }
22
22
  function getIntValueFromCss(value) {
@@ -1 +1 @@
1
- {"version":3,"file":"usePreventScroll.mjs","names":["React","canUseDOM","useUID","getScrollbarWidth","_outer$parentNode","outer","document","createElement","style","visibility","width","msOverflowStyle","body","appendChild","widthNoScroll","offsetWidth","overflow","inner","widthWithScroll","parentNode","removeChild","getIntValueFromCss","value","Number","isNaN","parseInt","scrollPreventers","Set","lockedBodyStyles","paddingRight","boxSizing","usePreventScroll","visible","arguments","length","undefined","disabled","scrollbarWidth","useMemo","id","useEffect","add","size","_window$getComputedSt","window","getComputedStyle","intPaddingRight","intPaddingRightFromStyle"],"sources":["../../../src/utils/use/usePreventScroll.tsx"],"sourcesContent":["import React from 'react';\nimport canUseDOM from '../canUseDOM';\nimport { useUID } from '../uniqueID';\n\nexport function getScrollbarWidth(): number {\n if (!canUseDOM()) return 0;\n const outer = document.createElement('div');\n outer.style.visibility = 'hidden';\n outer.style.width = '100px';\n // @ts-expect-error\n outer.style.msOverflowStyle = 'scrollbar'; // needed for WinJS apps\n document.body.appendChild(outer);\n\n const widthNoScroll = outer.offsetWidth;\n outer.style.overflow = 'scroll';\n\n const inner = document.createElement('div');\n inner.style.width = '100%';\n outer.appendChild(inner);\n\n const widthWithScroll = inner.offsetWidth;\n\n outer.parentNode?.removeChild(outer);\n\n return widthNoScroll - widthWithScroll;\n}\n\nfunction getIntValueFromCss(value: any) {\n return !Number.isNaN(Number(value)) ? Number(value) : Number.parseInt(value, 10);\n}\n\nconst scrollPreventers = new Set<string>();\nconst lockedBodyStyles = {\n paddingRight: null as string | null,\n overflow: null as string | null,\n boxSizing: null as string | null,\n};\nexport default function usePreventScroll(visible = true, disabled = false) {\n const scrollbarWidth = React.useMemo(getScrollbarWidth, [getScrollbarWidth]);\n const id = useUID('scroll-preventer-');\n\n React.useEffect(() => {\n if (disabled) return;\n if (!canUseDOM() || !visible) return;\n scrollPreventers.add(id);\n if (scrollPreventers.size > 1) return;\n\n const { overflow, paddingRight, boxSizing } = window.getComputedStyle(document.body);\n lockedBodyStyles.paddingRight = paddingRight;\n lockedBodyStyles.overflow = overflow;\n lockedBodyStyles.boxSizing = boxSizing;\n\n const intPaddingRight = getIntValueFromCss(paddingRight);\n let intPaddingRightFromStyle = getIntValueFromCss(document.body.style.paddingRight);\n // Detected own style for window inside window\n if (intPaddingRightFromStyle !== scrollbarWidth) {\n intPaddingRightFromStyle = 0;\n }\n\n document.body.style.overflow = 'hidden';\n document.body.style.paddingRight =\n scrollbarWidth + (intPaddingRight - intPaddingRightFromStyle) + 'px';\n document.body.style.boxSizing = 'border-box';\n }, [visible, id, disabled]);\n\n React.useEffect(() => {\n if (disabled) return;\n if (!canUseDOM() || !visible) return;\n return () => {\n scrollPreventers.delete(id);\n if (scrollPreventers.size !== 0) return;\n document.body.style.overflow = lockedBodyStyles.overflow!;\n document.body.style.paddingRight = lockedBodyStyles.paddingRight!;\n document.body.style.boxSizing = lockedBodyStyles.boxSizing!;\n };\n }, [visible, id, disabled]);\n}\n"],"mappings":"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"}
1
+ {"version":3,"file":"usePreventScroll.mjs","names":["React","canUseDOM","useUID","getScrollbarWidth","_outer$parentNode","outer","document","createElement","style","visibility","width","msOverflowStyle","body","appendChild","widthNoScroll","offsetWidth","overflow","inner","widthWithScroll","parentNode","removeChild","getIntValueFromCss","value","Number","isNaN","parseInt","scrollPreventers","Set","lockedBodyStyles","paddingRight","boxSizing","usePreventScroll","visible","arguments","length","undefined","disabled","scrollbarWidth","useMemo","id","useEffect","add","size","_window$getComputedSt","window","getComputedStyle","intPaddingRight","intPaddingRightFromStyle"],"sources":["../../../src/utils/use/usePreventScroll.tsx"],"sourcesContent":["import React from 'react';\n\nimport canUseDOM from '../canUseDOM';\nimport { useUID } from '../uniqueID';\n\nexport function getScrollbarWidth(): number {\n if (!canUseDOM()) return 0;\n const outer = document.createElement('div');\n outer.style.visibility = 'hidden';\n outer.style.width = '100px';\n // @ts-expect-error\n outer.style.msOverflowStyle = 'scrollbar'; // needed for WinJS apps\n document.body.appendChild(outer);\n\n const widthNoScroll = outer.offsetWidth;\n outer.style.overflow = 'scroll';\n\n const inner = document.createElement('div');\n inner.style.width = '100%';\n outer.appendChild(inner);\n\n const widthWithScroll = inner.offsetWidth;\n\n outer.parentNode?.removeChild(outer);\n\n return widthNoScroll - widthWithScroll;\n}\n\nfunction getIntValueFromCss(value: any) {\n return !Number.isNaN(Number(value)) ? Number(value) : Number.parseInt(value, 10);\n}\n\nconst scrollPreventers = new Set<string>();\nconst lockedBodyStyles = {\n paddingRight: null as string | null,\n overflow: null as string | null,\n boxSizing: null as string | null,\n};\nexport default function usePreventScroll(visible = true, disabled = false) {\n const scrollbarWidth = React.useMemo(getScrollbarWidth, [getScrollbarWidth]);\n const id = useUID('scroll-preventer-');\n\n React.useEffect(() => {\n if (disabled) return;\n if (!canUseDOM() || !visible) return;\n scrollPreventers.add(id);\n if (scrollPreventers.size > 1) return;\n\n const { overflow, paddingRight, boxSizing } = window.getComputedStyle(document.body);\n lockedBodyStyles.paddingRight = paddingRight;\n lockedBodyStyles.overflow = overflow;\n lockedBodyStyles.boxSizing = boxSizing;\n\n const intPaddingRight = getIntValueFromCss(paddingRight);\n let intPaddingRightFromStyle = getIntValueFromCss(document.body.style.paddingRight);\n // Detected own style for window inside window\n if (intPaddingRightFromStyle !== scrollbarWidth) {\n intPaddingRightFromStyle = 0;\n }\n\n document.body.style.overflow = 'hidden';\n document.body.style.paddingRight =\n scrollbarWidth + (intPaddingRight - intPaddingRightFromStyle) + 'px';\n document.body.style.boxSizing = 'border-box';\n }, [visible, id, disabled]);\n\n React.useEffect(() => {\n if (disabled) return;\n if (!canUseDOM() || !visible) return;\n return () => {\n scrollPreventers.delete(id);\n if (scrollPreventers.size !== 0) return;\n document.body.style.overflow = lockedBodyStyles.overflow!;\n document.body.style.paddingRight = lockedBodyStyles.paddingRight!;\n document.body.style.boxSizing = lockedBodyStyles.boxSizing!;\n };\n }, [visible, id, disabled]);\n}\n"],"mappings":"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","ignoreList":[]}
@@ -1,8 +1,8 @@
1
1
  import React from 'react';
2
2
  export declare const useCssVariable: (name: string, fallbackValue: string, ref?: React.RefObject<any>) => string;
3
- export declare const cssVariableEnhance: <P extends string, F = string, R = string, M extends ((value: string) => R) | null = any>({ variable, fallback, prop, map, }: {
3
+ export declare const cssVariableEnhance: <P extends string, F = string, R = string, M extends null | ((value: string) => R) = any>({ variable, fallback, prop, map, }: {
4
4
  variable: string;
5
5
  prop: P;
6
6
  fallback: F;
7
- map?: M | undefined;
7
+ map?: M;
8
8
  }) => <T extends {}>(props: T) => T & { [key in P]: M extends (value: string) => R ? R : F; };
@@ -1,6 +1,6 @@
1
1
  "use strict";
2
2
 
3
- var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
3
+ var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault")["default"];
4
4
  Object.defineProperty(exports, "__esModule", {
5
5
  value: true
6
6
  });
@@ -12,7 +12,7 @@ var _react = _interopRequireDefault(require("react"));
12
12
  var _canUseDOM = _interopRequireDefault(require("./canUseDOM"));
13
13
  var _ref3 = require("./ref");
14
14
  var _ThemeProvider = require("./ThemeProvider");
15
- var useCssVariable = function useCssVariable(name, fallbackValue, ref) {
15
+ var useCssVariable = exports.useCssVariable = function useCssVariable(name, fallbackValue, ref) {
16
16
  var contextTheme = (0, _ThemeProvider.useContextTokens)();
17
17
  var getValue = _react["default"].useCallback(function () {
18
18
  var _ref$current;
@@ -32,8 +32,7 @@ var useCssVariable = function useCssVariable(name, fallbackValue, ref) {
32
32
  }, [getValue]);
33
33
  return value;
34
34
  };
35
- exports.useCssVariable = useCssVariable;
36
- var cssVariableEnhance = function cssVariableEnhance(_ref) {
35
+ var cssVariableEnhance = exports.cssVariableEnhance = function cssVariableEnhance(_ref) {
37
36
  var variable = _ref.variable,
38
37
  fallback = _ref.fallback,
39
38
  prop = _ref.prop,
@@ -51,5 +50,4 @@ var cssVariableEnhance = function cssVariableEnhance(_ref) {
51
50
  }, prop, props[prop] === undefined ? mappedValue : props[prop]));
52
51
  };
53
52
  };
54
- exports.cssVariableEnhance = cssVariableEnhance;
55
53
  //# sourceMappingURL=useCssVariable.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"useCssVariable.js","names":["_react","_interopRequireDefault","require","_canUseDOM","_ref3","_ThemeProvider","useCssVariable","name","fallbackValue","ref","contextTheme","useContextTokens","getValue","React","useCallback","_ref$current","canUseDOM","element","current","document","documentElement","computedStyles","getComputedStyle","getPropertyValue","initialValue","useMemo","_React$useState","useState","_React$useState2","_slicedToArray2","value","setValue","useEffect","exports","cssVariableEnhance","_ref","variable","fallback","prop","map","props","_ref2","nodeRef","useRef","variableValue","mappedValue","_objectSpread3","_defineProperty2","useForkRef","undefined"],"sources":["../../src/utils/useCssVariable.ts"],"sourcesContent":["import React from 'react';\nimport canUseDOM from './canUseDOM';\nimport { useForkRef } from './ref';\nimport { useContextTokens } from './ThemeProvider';\n\nexport const useCssVariable = (name: string, fallbackValue: string, ref?: React.RefObject<any>) => {\n const contextTheme = useContextTokens();\n const getValue = React.useCallback(() => {\n if (contextTheme?.[name]) return contextTheme[name];\n if (!canUseDOM()) return fallbackValue;\n\n const element = ref?.current ?? document.documentElement;\n\n const computedStyles = getComputedStyle(element);\n\n return computedStyles.getPropertyValue(name) || fallbackValue;\n }, [name, ref, fallbackValue, contextTheme]);\n\n const initialValue = React.useMemo(getValue, [getValue]);\n const [value, setValue] = React.useState(initialValue);\n React.useEffect(() => setValue(getValue), [getValue]);\n\n return value;\n};\n\nexport const cssVariableEnhance = <\n P extends string,\n F = string,\n R = string,\n M extends null | ((value: string) => R) = any,\n>({\n variable,\n fallback,\n prop,\n map,\n}: {\n variable: string;\n prop: P;\n fallback: F;\n map?: M;\n}) => {\n return <T extends {}>(props: T) => {\n const { ref } = props as any;\n const nodeRef = React.useRef();\n const variableValue = useCssVariable(variable, fallback as any, nodeRef);\n const mappedValue = React.useMemo(\n () => (map ? map(variableValue) : variableValue),\n [map, variableValue],\n );\n\n return {\n ...props,\n ref: useForkRef(ref, nodeRef),\n [prop]: (props as any)[prop] === undefined ? mappedValue : (props as any)[prop],\n } as T & {\n [key in P]: M extends (value: string) => R ? R : F;\n };\n };\n};\n"],"mappings":";;;;;;;;;;AAAA,IAAAA,MAAA,GAAAC,sBAAA,CAAAC,OAAA;AACA,IAAAC,UAAA,GAAAF,sBAAA,CAAAC,OAAA;AACA,IAAAE,KAAA,GAAAF,OAAA;AACA,IAAAG,cAAA,GAAAH,OAAA;AAEO,IAAMI,cAAc,GAAG,SAAjBA,cAAcA,CAAIC,IAAY,EAAEC,aAAqB,EAAEC,GAA0B,EAAK;EACjG,IAAMC,YAAY,GAAG,IAAAC,+BAAgB,GAAE;EACvC,IAAMC,QAAQ,GAAGC,iBAAK,CAACC,WAAW,CAAC,YAAM;IAAA,IAAAC,YAAA;IACvC,IAAIL,YAAY,aAAZA,YAAY,eAAZA,YAAY,CAAGH,IAAI,CAAC,EAAE,OAAOG,YAAY,CAACH,IAAI,CAAC;IACnD,IAAI,CAAC,IAAAS,qBAAS,GAAE,EAAE,OAAOR,aAAa;IAEtC,IAAMS,OAAO,IAAAF,YAAA,GAAGN,GAAG,aAAHA,GAAG,uBAAHA,GAAG,CAAES,OAAO,cAAAH,YAAA,cAAAA,YAAA,GAAII,QAAQ,CAACC,eAAe;IAExD,IAAMC,cAAc,GAAGC,gBAAgB,CAACL,OAAO,CAAC;IAEhD,OAAOI,cAAc,CAACE,gBAAgB,CAAChB,IAAI,CAAC,IAAIC,aAAa;EAC/D,CAAC,EAAE,CAACD,IAAI,EAAEE,GAAG,EAAED,aAAa,EAAEE,YAAY,CAAC,CAAC;EAE5C,IAAMc,YAAY,GAAGX,iBAAK,CAACY,OAAO,CAACb,QAAQ,EAAE,CAACA,QAAQ,CAAC,CAAC;EACxD,IAAAc,eAAA,GAA0Bb,iBAAK,CAACc,QAAQ,CAACH,YAAY,CAAC;IAAAI,gBAAA,OAAAC,eAAA,aAAAH,eAAA;IAA/CI,KAAK,GAAAF,gBAAA;IAAEG,QAAQ,GAAAH,gBAAA;EACtBf,iBAAK,CAACmB,SAAS,CAAC;IAAA,OAAMD,QAAQ,CAACnB,QAAQ,CAAC;EAAA,GAAE,CAACA,QAAQ,CAAC,CAAC;EAErD,OAAOkB,KAAK;AACd,CAAC;AAACG,OAAA,CAAA3B,cAAA,GAAAA,cAAA;AAEK,IAAM4B,kBAAkB,GAAG,SAArBA,kBAAkBA,CAAAC,IAAA,EAezB;EAAA,IATJC,QAAQ,GAAAD,IAAA,CAARC,QAAQ;IACRC,QAAQ,GAAAF,IAAA,CAARE,QAAQ;IACRC,IAAI,GAAAH,IAAA,CAAJG,IAAI;IACJC,GAAG,GAAAJ,IAAA,CAAHI,GAAG;EAOH,OAAO,UAAeC,KAAQ,EAAK;IACjC,IAAAC,KAAA,GAAgBD,KAAK;MAAb/B,GAAG,GAAAgC,KAAA,CAAHhC,GAAG;IACX,IAAMiC,OAAO,GAAG7B,iBAAK,CAAC8B,MAAM,EAAE;IAC9B,IAAMC,aAAa,GAAGtC,cAAc,CAAC8B,QAAQ,EAAEC,QAAQ,EAASK,OAAO,CAAC;IACxE,IAAMG,WAAW,GAAGhC,iBAAK,CAACY,OAAO,CAC/B;MAAA,OAAOc,GAAG,GAAGA,GAAG,CAACK,aAAa,CAAC,GAAGA,aAAa;IAAA,CAAC,EAChD,CAACL,GAAG,EAAEK,aAAa,CAAC,CACrB;IAED,WAAAE,cAAA,iBAAAA,cAAA,iBACKN,KAAK,WAAAO,gBAAA;MACRtC,GAAG,EAAE,IAAAuC,gBAAU,EAACvC,GAAG,EAAEiC,OAAO;IAAC,GAC5BJ,IAAI,EAAIE,KAAK,CAASF,IAAI,CAAC,KAAKW,SAAS,GAAGJ,WAAW,GAAIL,KAAK,CAASF,IAAI,CAAC;EAInF,CAAC;AACH,CAAC;AAACL,OAAA,CAAAC,kBAAA,GAAAA,kBAAA"}
1
+ {"version":3,"file":"useCssVariable.js","names":["_react","_interopRequireDefault","require","_canUseDOM","_ref3","_ThemeProvider","useCssVariable","exports","name","fallbackValue","ref","contextTheme","useContextTokens","getValue","React","useCallback","_ref$current","canUseDOM","element","current","document","documentElement","computedStyles","getComputedStyle","getPropertyValue","initialValue","useMemo","_React$useState","useState","_React$useState2","_slicedToArray2","value","setValue","useEffect","cssVariableEnhance","_ref","variable","fallback","prop","map","props","_ref2","nodeRef","useRef","variableValue","mappedValue","_objectSpread3","_defineProperty2","useForkRef","undefined"],"sources":["../../src/utils/useCssVariable.ts"],"sourcesContent":["import React from 'react';\n\nimport canUseDOM from './canUseDOM';\nimport { useForkRef } from './ref';\nimport { useContextTokens } from './ThemeProvider';\n\nexport const useCssVariable = (name: string, fallbackValue: string, ref?: React.RefObject<any>) => {\n const contextTheme = useContextTokens();\n const getValue = React.useCallback(() => {\n if (contextTheme?.[name]) return contextTheme[name];\n if (!canUseDOM()) return fallbackValue;\n\n const element = ref?.current ?? document.documentElement;\n\n const computedStyles = getComputedStyle(element);\n\n return computedStyles.getPropertyValue(name) || fallbackValue;\n }, [name, ref, fallbackValue, contextTheme]);\n\n const initialValue = React.useMemo(getValue, [getValue]);\n const [value, setValue] = React.useState(initialValue);\n React.useEffect(() => setValue(getValue), [getValue]);\n\n return value;\n};\n\nexport const cssVariableEnhance = <\n P extends string,\n F = string,\n R = string,\n M extends null | ((value: string) => R) = any,\n>({\n variable,\n fallback,\n prop,\n map,\n}: {\n variable: string;\n prop: P;\n fallback: F;\n map?: M;\n}) => {\n return <T extends {}>(props: T) => {\n const { ref } = props as any;\n const nodeRef = React.useRef();\n const variableValue = useCssVariable(variable, fallback as any, nodeRef);\n const mappedValue = React.useMemo(\n () => (map ? map(variableValue) : variableValue),\n [map, variableValue],\n );\n\n return {\n ...props,\n ref: useForkRef(ref, nodeRef),\n [prop]: (props as any)[prop] === undefined ? mappedValue : (props as any)[prop],\n } as T & {\n [key in P]: M extends (value: string) => R ? R : F;\n };\n };\n};\n"],"mappings":";;;;;;;;;;AAAA,IAAAA,MAAA,GAAAC,sBAAA,CAAAC,OAAA;AAEA,IAAAC,UAAA,GAAAF,sBAAA,CAAAC,OAAA;AACA,IAAAE,KAAA,GAAAF,OAAA;AACA,IAAAG,cAAA,GAAAH,OAAA;AAEO,IAAMI,cAAc,GAAAC,OAAA,CAAAD,cAAA,GAAG,SAAjBA,cAAcA,CAAIE,IAAY,EAAEC,aAAqB,EAAEC,GAA0B,EAAK;EACjG,IAAMC,YAAY,GAAG,IAAAC,+BAAgB,EAAC,CAAC;EACvC,IAAMC,QAAQ,GAAGC,iBAAK,CAACC,WAAW,CAAC,YAAM;IAAA,IAAAC,YAAA;IACvC,IAAIL,YAAY,aAAZA,YAAY,eAAZA,YAAY,CAAGH,IAAI,CAAC,EAAE,OAAOG,YAAY,CAACH,IAAI,CAAC;IACnD,IAAI,CAAC,IAAAS,qBAAS,EAAC,CAAC,EAAE,OAAOR,aAAa;IAEtC,IAAMS,OAAO,IAAAF,YAAA,GAAGN,GAAG,aAAHA,GAAG,uBAAHA,GAAG,CAAES,OAAO,cAAAH,YAAA,cAAAA,YAAA,GAAII,QAAQ,CAACC,eAAe;IAExD,IAAMC,cAAc,GAAGC,gBAAgB,CAACL,OAAO,CAAC;IAEhD,OAAOI,cAAc,CAACE,gBAAgB,CAAChB,IAAI,CAAC,IAAIC,aAAa;EAC/D,CAAC,EAAE,CAACD,IAAI,EAAEE,GAAG,EAAED,aAAa,EAAEE,YAAY,CAAC,CAAC;EAE5C,IAAMc,YAAY,GAAGX,iBAAK,CAACY,OAAO,CAACb,QAAQ,EAAE,CAACA,QAAQ,CAAC,CAAC;EACxD,IAAAc,eAAA,GAA0Bb,iBAAK,CAACc,QAAQ,CAACH,YAAY,CAAC;IAAAI,gBAAA,OAAAC,eAAA,aAAAH,eAAA;IAA/CI,KAAK,GAAAF,gBAAA;IAAEG,QAAQ,GAAAH,gBAAA;EACtBf,iBAAK,CAACmB,SAAS,CAAC;IAAA,OAAMD,QAAQ,CAACnB,QAAQ,CAAC;EAAA,GAAE,CAACA,QAAQ,CAAC,CAAC;EAErD,OAAOkB,KAAK;AACd,CAAC;AAEM,IAAMG,kBAAkB,GAAA3B,OAAA,CAAA2B,kBAAA,GAAG,SAArBA,kBAAkBA,CAAAC,IAAA,EAezB;EAAA,IATJC,QAAQ,GAAAD,IAAA,CAARC,QAAQ;IACRC,QAAQ,GAAAF,IAAA,CAARE,QAAQ;IACRC,IAAI,GAAAH,IAAA,CAAJG,IAAI;IACJC,GAAG,GAAAJ,IAAA,CAAHI,GAAG;EAOH,OAAO,UAAeC,KAAQ,EAAK;IACjC,IAAAC,KAAA,GAAgBD,KAAK;MAAb9B,GAAG,GAAA+B,KAAA,CAAH/B,GAAG;IACX,IAAMgC,OAAO,GAAG5B,iBAAK,CAAC6B,MAAM,CAAC,CAAC;IAC9B,IAAMC,aAAa,GAAGtC,cAAc,CAAC8B,QAAQ,EAAEC,QAAQ,EAASK,OAAO,CAAC;IACxE,IAAMG,WAAW,GAAG/B,iBAAK,CAACY,OAAO,CAC/B;MAAA,OAAOa,GAAG,GAAGA,GAAG,CAACK,aAAa,CAAC,GAAGA,aAAa;IAAA,CAAC,EAChD,CAACL,GAAG,EAAEK,aAAa,CACrB,CAAC;IAED,WAAAE,cAAA,iBAAAA,cAAA,iBACKN,KAAK,WAAAO,gBAAA;MACRrC,GAAG,EAAE,IAAAsC,gBAAU,EAACtC,GAAG,EAAEgC,OAAO;IAAC,GAC5BJ,IAAI,EAAIE,KAAK,CAASF,IAAI,CAAC,KAAKW,SAAS,GAAGJ,WAAW,GAAIL,KAAK,CAASF,IAAI,CAAC;EAInF,CAAC;AACH,CAAC","ignoreList":[]}
@@ -1 +1 @@
1
- {"version":3,"file":"useCssVariable.mjs","names":["React","canUseDOM","useForkRef","useContextTokens","useCssVariable","name","fallbackValue","ref","contextTheme","getValue","useCallback","_ref$current","element","current","document","documentElement","computedStyles","getComputedStyle","getPropertyValue","initialValue","useMemo","_React$useState","useState","_React$useState2","_slicedToArray","value","setValue","useEffect","cssVariableEnhance","_ref","variable","fallback","prop","map","props","_ref2","nodeRef","useRef","variableValue","mappedValue","_objectSpread","_defineProperty","undefined"],"sources":["../../src/utils/useCssVariable.ts"],"sourcesContent":["import React from 'react';\nimport canUseDOM from './canUseDOM';\nimport { useForkRef } from './ref';\nimport { useContextTokens } from './ThemeProvider';\n\nexport const useCssVariable = (name: string, fallbackValue: string, ref?: React.RefObject<any>) => {\n const contextTheme = useContextTokens();\n const getValue = React.useCallback(() => {\n if (contextTheme?.[name]) return contextTheme[name];\n if (!canUseDOM()) return fallbackValue;\n\n const element = ref?.current ?? document.documentElement;\n\n const computedStyles = getComputedStyle(element);\n\n return computedStyles.getPropertyValue(name) || fallbackValue;\n }, [name, ref, fallbackValue, contextTheme]);\n\n const initialValue = React.useMemo(getValue, [getValue]);\n const [value, setValue] = React.useState(initialValue);\n React.useEffect(() => setValue(getValue), [getValue]);\n\n return value;\n};\n\nexport const cssVariableEnhance = <\n P extends string,\n F = string,\n R = string,\n M extends null | ((value: string) => R) = any,\n>({\n variable,\n fallback,\n prop,\n map,\n}: {\n variable: string;\n prop: P;\n fallback: F;\n map?: M;\n}) => {\n return <T extends {}>(props: T) => {\n const { ref } = props as any;\n const nodeRef = React.useRef();\n const variableValue = useCssVariable(variable, fallback as any, nodeRef);\n const mappedValue = React.useMemo(\n () => (map ? map(variableValue) : variableValue),\n [map, variableValue],\n );\n\n return {\n ...props,\n ref: useForkRef(ref, nodeRef),\n [prop]: (props as any)[prop] === undefined ? mappedValue : (props as any)[prop],\n } as T & {\n [key in P]: M extends (value: string) => R ? R : F;\n };\n };\n};\n"],"mappings":";;;AAAA,OAAOA,KAAK,MAAM,OAAO;AACzB,OAAOC,SAAS,MAAM,iBAAa;AACnC,SAASC,UAAU,QAAQ,WAAO;AAClC,SAASC,gBAAgB,QAAQ,qBAAiB;AAElD,OAAO,IAAMC,cAAc,GAAG,SAAjBA,cAAcA,CAAIC,IAAY,EAAEC,aAAqB,EAAEC,GAA0B,EAAK;EACjG,IAAMC,YAAY,GAAGL,gBAAgB,EAAE;EACvC,IAAMM,QAAQ,GAAGT,KAAK,CAACU,WAAW,CAAC,YAAM;IAAA,IAAAC,YAAA;IACvC,IAAIH,YAAY,aAAZA,YAAY,eAAZA,YAAY,CAAGH,IAAI,CAAC,EAAE,OAAOG,YAAY,CAACH,IAAI,CAAC;IACnD,IAAI,CAACJ,SAAS,EAAE,EAAE,OAAOK,aAAa;IAEtC,IAAMM,OAAO,IAAAD,YAAA,GAAGJ,GAAG,aAAHA,GAAG,uBAAHA,GAAG,CAAEM,OAAO,cAAAF,YAAA,cAAAA,YAAA,GAAIG,QAAQ,CAACC,eAAe;IAExD,IAAMC,cAAc,GAAGC,gBAAgB,CAACL,OAAO,CAAC;IAEhD,OAAOI,cAAc,CAACE,gBAAgB,CAACb,IAAI,CAAC,IAAIC,aAAa;EAC/D,CAAC,EAAE,CAACD,IAAI,EAAEE,GAAG,EAAED,aAAa,EAAEE,YAAY,CAAC,CAAC;EAE5C,IAAMW,YAAY,GAAGnB,KAAK,CAACoB,OAAO,CAACX,QAAQ,EAAE,CAACA,QAAQ,CAAC,CAAC;EACxD,IAAAY,eAAA,GAA0BrB,KAAK,CAACsB,QAAQ,CAACH,YAAY,CAAC;IAAAI,gBAAA,GAAAC,cAAA,CAAAH,eAAA;IAA/CI,KAAK,GAAAF,gBAAA;IAAEG,QAAQ,GAAAH,gBAAA;EACtBvB,KAAK,CAAC2B,SAAS,CAAC;IAAA,OAAMD,QAAQ,CAACjB,QAAQ,CAAC;EAAA,GAAE,CAACA,QAAQ,CAAC,CAAC;EAErD,OAAOgB,KAAK;AACd,CAAC;AAED,OAAO,IAAMG,kBAAkB,GAAG,SAArBA,kBAAkBA,CAAAC,IAAA,EAezB;EAAA,IATJC,QAAQ,GAAAD,IAAA,CAARC,QAAQ;IACRC,QAAQ,GAAAF,IAAA,CAARE,QAAQ;IACRC,IAAI,GAAAH,IAAA,CAAJG,IAAI;IACJC,GAAG,GAAAJ,IAAA,CAAHI,GAAG;EAOH,OAAO,UAAeC,KAAQ,EAAK;IACjC,IAAAC,KAAA,GAAgBD,KAAK;MAAb3B,GAAG,GAAA4B,KAAA,CAAH5B,GAAG;IACX,IAAM6B,OAAO,GAAGpC,KAAK,CAACqC,MAAM,EAAE;IAC9B,IAAMC,aAAa,GAAGlC,cAAc,CAAC0B,QAAQ,EAAEC,QAAQ,EAASK,OAAO,CAAC;IACxE,IAAMG,WAAW,GAAGvC,KAAK,CAACoB,OAAO,CAC/B;MAAA,OAAOa,GAAG,GAAGA,GAAG,CAACK,aAAa,CAAC,GAAGA,aAAa;IAAA,CAAC,EAChD,CAACL,GAAG,EAAEK,aAAa,CAAC,CACrB;IAED,OAAAE,aAAA,CAAAA,aAAA,KACKN,KAAK,OAAAO,eAAA;MACRlC,GAAG,EAAEL,UAAU,CAACK,GAAG,EAAE6B,OAAO;IAAC,GAC5BJ,IAAI,EAAIE,KAAK,CAASF,IAAI,CAAC,KAAKU,SAAS,GAAGH,WAAW,GAAIL,KAAK,CAASF,IAAI,CAAC;EAInF,CAAC;AACH,CAAC"}
1
+ {"version":3,"file":"useCssVariable.mjs","names":["React","canUseDOM","useForkRef","useContextTokens","useCssVariable","name","fallbackValue","ref","contextTheme","getValue","useCallback","_ref$current","element","current","document","documentElement","computedStyles","getComputedStyle","getPropertyValue","initialValue","useMemo","_React$useState","useState","_React$useState2","_slicedToArray","value","setValue","useEffect","cssVariableEnhance","_ref","variable","fallback","prop","map","props","_ref2","nodeRef","useRef","variableValue","mappedValue","_objectSpread","_defineProperty","undefined"],"sources":["../../src/utils/useCssVariable.ts"],"sourcesContent":["import React from 'react';\n\nimport canUseDOM from './canUseDOM';\nimport { useForkRef } from './ref';\nimport { useContextTokens } from './ThemeProvider';\n\nexport const useCssVariable = (name: string, fallbackValue: string, ref?: React.RefObject<any>) => {\n const contextTheme = useContextTokens();\n const getValue = React.useCallback(() => {\n if (contextTheme?.[name]) return contextTheme[name];\n if (!canUseDOM()) return fallbackValue;\n\n const element = ref?.current ?? document.documentElement;\n\n const computedStyles = getComputedStyle(element);\n\n return computedStyles.getPropertyValue(name) || fallbackValue;\n }, [name, ref, fallbackValue, contextTheme]);\n\n const initialValue = React.useMemo(getValue, [getValue]);\n const [value, setValue] = React.useState(initialValue);\n React.useEffect(() => setValue(getValue), [getValue]);\n\n return value;\n};\n\nexport const cssVariableEnhance = <\n P extends string,\n F = string,\n R = string,\n M extends null | ((value: string) => R) = any,\n>({\n variable,\n fallback,\n prop,\n map,\n}: {\n variable: string;\n prop: P;\n fallback: F;\n map?: M;\n}) => {\n return <T extends {}>(props: T) => {\n const { ref } = props as any;\n const nodeRef = React.useRef();\n const variableValue = useCssVariable(variable, fallback as any, nodeRef);\n const mappedValue = React.useMemo(\n () => (map ? map(variableValue) : variableValue),\n [map, variableValue],\n );\n\n return {\n ...props,\n ref: useForkRef(ref, nodeRef),\n [prop]: (props as any)[prop] === undefined ? mappedValue : (props as any)[prop],\n } as T & {\n [key in P]: M extends (value: string) => R ? R : F;\n };\n };\n};\n"],"mappings":";;;AAAA,OAAOA,KAAK,MAAM,OAAO;AAEzB,OAAOC,SAAS,MAAM,iBAAa;AACnC,SAASC,UAAU,QAAQ,WAAO;AAClC,SAASC,gBAAgB,QAAQ,qBAAiB;AAElD,OAAO,IAAMC,cAAc,GAAG,SAAjBA,cAAcA,CAAIC,IAAY,EAAEC,aAAqB,EAAEC,GAA0B,EAAK;EACjG,IAAMC,YAAY,GAAGL,gBAAgB,CAAC,CAAC;EACvC,IAAMM,QAAQ,GAAGT,KAAK,CAACU,WAAW,CAAC,YAAM;IAAA,IAAAC,YAAA;IACvC,IAAIH,YAAY,aAAZA,YAAY,eAAZA,YAAY,CAAGH,IAAI,CAAC,EAAE,OAAOG,YAAY,CAACH,IAAI,CAAC;IACnD,IAAI,CAACJ,SAAS,CAAC,CAAC,EAAE,OAAOK,aAAa;IAEtC,IAAMM,OAAO,IAAAD,YAAA,GAAGJ,GAAG,aAAHA,GAAG,uBAAHA,GAAG,CAAEM,OAAO,cAAAF,YAAA,cAAAA,YAAA,GAAIG,QAAQ,CAACC,eAAe;IAExD,IAAMC,cAAc,GAAGC,gBAAgB,CAACL,OAAO,CAAC;IAEhD,OAAOI,cAAc,CAACE,gBAAgB,CAACb,IAAI,CAAC,IAAIC,aAAa;EAC/D,CAAC,EAAE,CAACD,IAAI,EAAEE,GAAG,EAAED,aAAa,EAAEE,YAAY,CAAC,CAAC;EAE5C,IAAMW,YAAY,GAAGnB,KAAK,CAACoB,OAAO,CAACX,QAAQ,EAAE,CAACA,QAAQ,CAAC,CAAC;EACxD,IAAAY,eAAA,GAA0BrB,KAAK,CAACsB,QAAQ,CAACH,YAAY,CAAC;IAAAI,gBAAA,GAAAC,cAAA,CAAAH,eAAA;IAA/CI,KAAK,GAAAF,gBAAA;IAAEG,QAAQ,GAAAH,gBAAA;EACtBvB,KAAK,CAAC2B,SAAS,CAAC;IAAA,OAAMD,QAAQ,CAACjB,QAAQ,CAAC;EAAA,GAAE,CAACA,QAAQ,CAAC,CAAC;EAErD,OAAOgB,KAAK;AACd,CAAC;AAED,OAAO,IAAMG,kBAAkB,GAAG,SAArBA,kBAAkBA,CAAAC,IAAA,EAezB;EAAA,IATJC,QAAQ,GAAAD,IAAA,CAARC,QAAQ;IACRC,QAAQ,GAAAF,IAAA,CAARE,QAAQ;IACRC,IAAI,GAAAH,IAAA,CAAJG,IAAI;IACJC,GAAG,GAAAJ,IAAA,CAAHI,GAAG;EAOH,OAAO,UAAeC,KAAQ,EAAK;IACjC,IAAAC,KAAA,GAAgBD,KAAK;MAAb3B,GAAG,GAAA4B,KAAA,CAAH5B,GAAG;IACX,IAAM6B,OAAO,GAAGpC,KAAK,CAACqC,MAAM,CAAC,CAAC;IAC9B,IAAMC,aAAa,GAAGlC,cAAc,CAAC0B,QAAQ,EAAEC,QAAQ,EAASK,OAAO,CAAC;IACxE,IAAMG,WAAW,GAAGvC,KAAK,CAACoB,OAAO,CAC/B;MAAA,OAAOa,GAAG,GAAGA,GAAG,CAACK,aAAa,CAAC,GAAGA,aAAa;IAAA,CAAC,EAChD,CAACL,GAAG,EAAEK,aAAa,CACrB,CAAC;IAED,OAAAE,aAAA,CAAAA,aAAA,KACKN,KAAK,OAAAO,eAAA;MACRlC,GAAG,EAAEL,UAAU,CAACK,GAAG,EAAE6B,OAAO;IAAC,GAC5BJ,IAAI,EAAIE,KAAK,CAASF,IAAI,CAAC,KAAKU,SAAS,GAAGH,WAAW,GAAIL,KAAK,CAASF,IAAI,CAAC;EAInF,CAAC;AACH,CAAC","ignoreList":[]}