@semcore/core 16.5.1 → 17.0.0-prerelease.14

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 (427) hide show
  1. package/CHANGELOG.md +12 -1
  2. package/README.md +4 -4
  3. package/lib/LastInteractionType.js +22 -36
  4. package/lib/LastInteractionType.js.map +1 -1
  5. package/lib/LastInteractionType.mjs +19 -33
  6. package/lib/LastInteractionType.mjs.map +1 -1
  7. package/lib/core-types/Component.d.ts +26 -79
  8. package/lib/core-types/Component.js +24 -72
  9. package/lib/core-types/Component.js.map +1 -1
  10. package/lib/core-types/Component.mjs +18 -34
  11. package/lib/core-types/Component.mjs.map +1 -1
  12. package/lib/core-types/symbols.js +9 -9
  13. package/lib/core-types/symbols.js.map +1 -1
  14. package/lib/core-types/symbols.mjs +9 -9
  15. package/lib/core-types/symbols.mjs.map +1 -1
  16. package/lib/coreFactory.d.ts +6 -23
  17. package/lib/coreFactory.js +150 -217
  18. package/lib/coreFactory.js.map +1 -1
  19. package/lib/coreFactory.mjs +139 -194
  20. package/lib/coreFactory.mjs.map +1 -1
  21. package/lib/decorators/propsObserver.d.ts +11 -0
  22. package/lib/decorators/reactive.d.ts +11 -0
  23. package/lib/enhancement/Children.js +51 -59
  24. package/lib/enhancement/Children.js.map +1 -1
  25. package/lib/enhancement/Children.mjs +47 -41
  26. package/lib/enhancement/Children.mjs.map +1 -1
  27. package/lib/enhancement/Root.js +36 -37
  28. package/lib/enhancement/Root.js.map +1 -1
  29. package/lib/enhancement/Root.mjs +28 -18
  30. package/lib/enhancement/Root.mjs.map +1 -1
  31. package/lib/enhancement/dataName.js +7 -8
  32. package/lib/enhancement/dataName.js.map +1 -1
  33. package/lib/enhancement/dataName.mjs +5 -5
  34. package/lib/enhancement/dataName.mjs.map +1 -1
  35. package/lib/enhancement/enhance.js +6 -9
  36. package/lib/enhancement/enhance.js.map +1 -1
  37. package/lib/enhancement/enhance.mjs +5 -7
  38. package/lib/enhancement/enhance.mjs.map +1 -1
  39. package/lib/enhancement/functionDefaultProps.js +6 -6
  40. package/lib/enhancement/functionDefaultProps.js.map +1 -1
  41. package/lib/enhancement/functionDefaultProps.mjs +4 -4
  42. package/lib/enhancement/functionDefaultProps.mjs.map +1 -1
  43. package/lib/enhancement/i18n.js +13 -13
  44. package/lib/enhancement/i18n.js.map +1 -1
  45. package/lib/enhancement/i18n.mjs +10 -9
  46. package/lib/enhancement/i18n.mjs.map +1 -1
  47. package/lib/enhancement/inheritedName.js +7 -8
  48. package/lib/enhancement/inheritedName.js.map +1 -1
  49. package/lib/enhancement/inheritedName.mjs +5 -5
  50. package/lib/enhancement/inheritedName.mjs.map +1 -1
  51. package/lib/enhancement/staticChildren.js +47 -56
  52. package/lib/enhancement/staticChildren.js.map +1 -1
  53. package/lib/enhancement/staticChildren.mjs +43 -48
  54. package/lib/enhancement/staticChildren.mjs.map +1 -1
  55. package/lib/enhancement/style.js +29 -27
  56. package/lib/enhancement/style.js.map +1 -1
  57. package/lib/enhancement/style.mjs +26 -20
  58. package/lib/enhancement/style.mjs.map +1 -1
  59. package/lib/enhancement/uncontrolledProps.js +46 -64
  60. package/lib/enhancement/uncontrolledProps.js.map +1 -1
  61. package/lib/enhancement/uncontrolledProps.mjs +43 -51
  62. package/lib/enhancement/uncontrolledProps.mjs.map +1 -1
  63. package/lib/esm/LastInteractionType.mjs +19 -33
  64. package/lib/esm/core-types/Component.mjs +18 -34
  65. package/lib/esm/core-types/symbols.mjs +9 -9
  66. package/lib/esm/coreFactory.mjs +139 -194
  67. package/lib/esm/enhancement/Children.mjs +47 -41
  68. package/lib/esm/enhancement/Root.mjs +28 -18
  69. package/lib/esm/enhancement/dataName.mjs +5 -5
  70. package/lib/esm/enhancement/enhance.mjs +5 -7
  71. package/lib/esm/enhancement/functionDefaultProps.mjs +4 -4
  72. package/lib/esm/enhancement/i18n.mjs +10 -9
  73. package/lib/esm/enhancement/inheritedName.mjs +5 -5
  74. package/lib/esm/enhancement/staticChildren.mjs +43 -48
  75. package/lib/esm/enhancement/style.mjs +26 -20
  76. package/lib/esm/enhancement/uncontrolledProps.mjs +43 -51
  77. package/lib/esm/register.mjs +12 -20
  78. package/lib/esm/styled/reshadow-core.mjs +98 -111
  79. package/lib/esm/styled/sstyled.mjs +31 -41
  80. package/lib/esm/utils/assignProps.mjs +32 -36
  81. package/lib/esm/utils/enhances/WithI18n.mjs +16 -63
  82. package/lib/esm/utils/enhances/i18nEnhance.mjs +47 -61
  83. package/lib/esm/utils/logger.mjs +13 -21
  84. package/lib/esm/utils/pick.mjs +4 -4
  85. package/lib/esm/utils/ref.mjs +27 -57
  86. package/lib/esm/utils/use/useEnhancedEffect.mjs +1 -1
  87. package/lib/index.d.ts +3 -3
  88. package/lib/index.js +17 -17
  89. package/lib/index.js.map +1 -1
  90. package/lib/index.mjs.map +1 -1
  91. package/lib/register.js +17 -24
  92. package/lib/register.js.map +1 -1
  93. package/lib/register.mjs +12 -20
  94. package/lib/register.mjs.map +1 -1
  95. package/lib/styled/index.d.ts +1 -5
  96. package/lib/styled/index.js +4 -4
  97. package/lib/styled/index.js.map +1 -1
  98. package/lib/styled/index.mjs.map +1 -1
  99. package/lib/styled/reshadow-core.js +102 -104
  100. package/lib/styled/reshadow-core.js.map +1 -1
  101. package/lib/styled/reshadow-core.mjs +98 -111
  102. package/lib/styled/reshadow-core.mjs.map +1 -1
  103. package/lib/styled/sstyled.js +31 -53
  104. package/lib/styled/sstyled.js.map +1 -1
  105. package/lib/styled/sstyled.mjs +31 -41
  106. package/lib/styled/sstyled.mjs.map +1 -1
  107. package/lib/theme/processor.js +150 -222
  108. package/lib/theme/processor.js.map +1 -1
  109. package/lib/theme/processor.mjs +148 -221
  110. package/lib/theme/processor.mjs.map +1 -1
  111. package/lib/theme/themes/dark.js +2 -2
  112. package/lib/theme/themes/dark.js.map +1 -1
  113. package/lib/theme/themes/default.js +2 -2
  114. package/lib/theme/themes/default.js.map +1 -1
  115. package/lib/theme/themes/highlights-dark.js +2 -2
  116. package/lib/theme/themes/highlights-dark.js.map +1 -1
  117. package/lib/theme/themes/highlights-light.js +2 -2
  118. package/lib/theme/themes/highlights-light.js.map +1 -1
  119. package/lib/theme/themes/light.js +2 -2
  120. package/lib/theme/themes/light.js.map +1 -1
  121. package/lib/theme/utils.js +140 -215
  122. package/lib/theme/utils.js.map +1 -1
  123. package/lib/theme/utils.mjs +135 -214
  124. package/lib/theme/utils.mjs.map +1 -1
  125. package/lib/utils/CSSinJS.js +8 -10
  126. package/lib/utils/CSSinJS.js.map +1 -1
  127. package/lib/utils/CSSinJS.mjs +6 -7
  128. package/lib/utils/CSSinJS.mjs.map +1 -1
  129. package/lib/utils/ThemeProvider.js +44 -51
  130. package/lib/utils/ThemeProvider.js.map +1 -1
  131. package/lib/utils/ThemeProvider.mjs +36 -47
  132. package/lib/utils/ThemeProvider.mjs.map +1 -1
  133. package/lib/utils/addonText.js +4 -7
  134. package/lib/utils/addonText.js.map +1 -1
  135. package/lib/utils/addonText.mjs +2 -5
  136. package/lib/utils/addonText.mjs.map +1 -1
  137. package/lib/utils/addonTextChildren.js +15 -21
  138. package/lib/utils/addonTextChildren.js.map +1 -1
  139. package/lib/utils/addonTextChildren.mjs +7 -13
  140. package/lib/utils/addonTextChildren.mjs.map +1 -1
  141. package/lib/utils/ariaProps.js +7 -5
  142. package/lib/utils/ariaProps.js.map +1 -1
  143. package/lib/utils/ariaProps.mjs +7 -5
  144. package/lib/utils/ariaProps.mjs.map +1 -1
  145. package/lib/utils/assignProps.js +33 -37
  146. package/lib/utils/assignProps.js.map +1 -1
  147. package/lib/utils/assignProps.mjs +32 -36
  148. package/lib/utils/assignProps.mjs.map +1 -1
  149. package/lib/utils/canUseDOM.js +1 -1
  150. package/lib/utils/capitalizeFirstLetter.js +1 -1
  151. package/lib/utils/color.js +72 -95
  152. package/lib/utils/color.js.map +1 -1
  153. package/lib/utils/color.mjs +71 -94
  154. package/lib/utils/color.mjs.map +1 -1
  155. package/lib/utils/compose.js +3 -12
  156. package/lib/utils/compose.js.map +1 -1
  157. package/lib/utils/compose.mjs +2 -11
  158. package/lib/utils/compose.mjs.map +1 -1
  159. package/lib/utils/createUUID.js +5 -5
  160. package/lib/utils/createUUID.js.map +1 -1
  161. package/lib/utils/createUUID.mjs +4 -4
  162. package/lib/utils/createUUID.mjs.map +1 -1
  163. package/lib/utils/cssToIntDefault.js +3 -4
  164. package/lib/utils/cssToIntDefault.js.map +1 -1
  165. package/lib/utils/cssToIntDefault.mjs +2 -3
  166. package/lib/utils/cssToIntDefault.mjs.map +1 -1
  167. package/lib/utils/enhances/WithCSS.d.ts +2 -30
  168. package/lib/utils/enhances/WithCSS.js +13 -64
  169. package/lib/utils/enhances/WithCSS.js.map +1 -1
  170. package/lib/utils/enhances/WithCSS.mjs +9 -59
  171. package/lib/utils/enhances/WithCSS.mjs.map +1 -1
  172. package/lib/utils/enhances/WithI18n.d.ts +1 -30
  173. package/lib/utils/enhances/WithI18n.js +20 -76
  174. package/lib/utils/enhances/WithI18n.js.map +1 -1
  175. package/lib/utils/enhances/WithI18n.mjs +16 -63
  176. package/lib/utils/enhances/WithI18n.mjs.map +1 -1
  177. package/lib/utils/enhances/a11yEnhance.js +34 -39
  178. package/lib/utils/enhances/a11yEnhance.js.map +1 -1
  179. package/lib/utils/enhances/a11yEnhance.mjs +32 -36
  180. package/lib/utils/enhances/a11yEnhance.mjs.map +1 -1
  181. package/lib/utils/enhances/animatedSizeEnhance.d.ts +0 -4
  182. package/lib/utils/enhances/animatedSizeEnhance.js +55 -65
  183. package/lib/utils/enhances/animatedSizeEnhance.js.map +1 -1
  184. package/lib/utils/enhances/animatedSizeEnhance.mjs +50 -61
  185. package/lib/utils/enhances/animatedSizeEnhance.mjs.map +1 -1
  186. package/lib/utils/enhances/contextEnhance.js +12 -11
  187. package/lib/utils/enhances/contextEnhance.js.map +1 -1
  188. package/lib/utils/enhances/contextEnhance.mjs +9 -8
  189. package/lib/utils/enhances/contextEnhance.mjs.map +1 -1
  190. package/lib/utils/enhances/i18nEnhance.d.ts +0 -4
  191. package/lib/utils/enhances/i18nEnhance.js +51 -69
  192. package/lib/utils/enhances/i18nEnhance.js.map +1 -1
  193. package/lib/utils/enhances/i18nEnhance.mjs +47 -61
  194. package/lib/utils/enhances/i18nEnhance.mjs.map +1 -1
  195. package/lib/utils/enhances/resolveColorEnhance.js +12 -10
  196. package/lib/utils/enhances/resolveColorEnhance.js.map +1 -1
  197. package/lib/utils/enhances/resolveColorEnhance.mjs +8 -6
  198. package/lib/utils/enhances/resolveColorEnhance.mjs.map +1 -1
  199. package/lib/utils/eventEmitter.d.ts +10 -6
  200. package/lib/utils/eventEmitter.js +33 -32
  201. package/lib/utils/eventEmitter.js.map +1 -1
  202. package/lib/utils/eventEmitter.mjs +30 -31
  203. package/lib/utils/eventEmitter.mjs.map +1 -1
  204. package/lib/utils/findComponent.js +35 -42
  205. package/lib/utils/findComponent.js.map +1 -1
  206. package/lib/utils/findComponent.mjs +26 -33
  207. package/lib/utils/findComponent.mjs.map +1 -1
  208. package/lib/utils/fire.js +7 -13
  209. package/lib/utils/fire.js.map +1 -1
  210. package/lib/utils/fire.mjs +5 -11
  211. package/lib/utils/fire.mjs.map +1 -1
  212. package/lib/utils/focus-lock/focusBorders.js +28 -32
  213. package/lib/utils/focus-lock/focusBorders.js.map +1 -1
  214. package/lib/utils/focus-lock/focusBorders.mjs +26 -32
  215. package/lib/utils/focus-lock/focusBorders.mjs.map +1 -1
  216. package/lib/utils/focus-lock/getFocusableIn.js +4 -6
  217. package/lib/utils/focus-lock/getFocusableIn.js.map +1 -1
  218. package/lib/utils/focus-lock/getFocusableIn.mjs +3 -6
  219. package/lib/utils/focus-lock/getFocusableIn.mjs.map +1 -1
  220. package/lib/utils/focus-lock/isFocusInside.js +5 -6
  221. package/lib/utils/focus-lock/isFocusInside.js.map +1 -1
  222. package/lib/utils/focus-lock/isFocusInside.mjs +4 -6
  223. package/lib/utils/focus-lock/isFocusInside.mjs.map +1 -1
  224. package/lib/utils/focus-lock/isFocusable.js +9 -12
  225. package/lib/utils/focus-lock/isFocusable.js.map +1 -1
  226. package/lib/utils/focus-lock/isFocusable.mjs +8 -11
  227. package/lib/utils/focus-lock/isFocusable.mjs.map +1 -1
  228. package/lib/utils/focus-lock/setFocus.js +21 -27
  229. package/lib/utils/focus-lock/setFocus.js.map +1 -1
  230. package/lib/utils/focus-lock/setFocus.mjs +19 -25
  231. package/lib/utils/focus-lock/setFocus.mjs.map +1 -1
  232. package/lib/utils/getAccessibleName.js +10 -22
  233. package/lib/utils/getAccessibleName.js.map +1 -1
  234. package/lib/utils/getAccessibleName.mjs +10 -21
  235. package/lib/utils/getAccessibleName.mjs.map +1 -1
  236. package/lib/utils/getDisplayName.js +1 -1
  237. package/lib/utils/getDisplayName.mjs +3 -5
  238. package/lib/utils/getEventTarget.js +13 -32
  239. package/lib/utils/getEventTarget.js.map +1 -1
  240. package/lib/utils/getEventTarget.mjs +12 -31
  241. package/lib/utils/getEventTarget.mjs.map +1 -1
  242. package/lib/utils/getOriginChildren.js +4 -4
  243. package/lib/utils/getOriginChildren.js.map +1 -1
  244. package/lib/utils/getRandomInt.js +1 -1
  245. package/lib/utils/getValue.js +4 -6
  246. package/lib/utils/getValue.js.map +1 -1
  247. package/lib/utils/getValue.mjs +3 -5
  248. package/lib/utils/getValue.mjs.map +1 -1
  249. package/lib/utils/hasLabels.js +16 -27
  250. package/lib/utils/hasLabels.js.map +1 -1
  251. package/lib/utils/hasLabels.mjs +14 -24
  252. package/lib/utils/hasLabels.mjs.map +1 -1
  253. package/lib/utils/hasParent.js +3 -2
  254. package/lib/utils/hasParent.js.map +1 -1
  255. package/lib/utils/hasParent.mjs +2 -3
  256. package/lib/utils/hasParent.mjs.map +1 -1
  257. package/lib/utils/ifChildren.js +6 -4
  258. package/lib/utils/ifChildren.js.map +1 -1
  259. package/lib/utils/ifChildren.mjs +4 -2
  260. package/lib/utils/ifChildren.mjs.map +1 -1
  261. package/lib/utils/injectStyle.js +11 -13
  262. package/lib/utils/injectStyle.js.map +1 -1
  263. package/lib/utils/injectStyle.mjs +9 -10
  264. package/lib/utils/injectStyle.mjs.map +1 -1
  265. package/lib/utils/inputProps.js +5 -5
  266. package/lib/utils/inputProps.js.map +1 -1
  267. package/lib/utils/inputProps.mjs +4 -4
  268. package/lib/utils/inputProps.mjs.map +1 -1
  269. package/lib/utils/isInteractiveElement.js +7 -9
  270. package/lib/utils/isInteractiveElement.js.map +1 -1
  271. package/lib/utils/isInteractiveElement.mjs +7 -9
  272. package/lib/utils/isInteractiveElement.mjs.map +1 -1
  273. package/lib/utils/isNode.js +4 -5
  274. package/lib/utils/isNode.js.map +1 -1
  275. package/lib/utils/isNode.mjs +1 -2
  276. package/lib/utils/isNode.mjs.map +1 -1
  277. package/lib/utils/isPromise.js +1 -1
  278. package/lib/utils/isRetina.js +7 -2
  279. package/lib/utils/isRetina.js.map +1 -1
  280. package/lib/utils/isRetina.mjs +6 -1
  281. package/lib/utils/isRetina.mjs.map +1 -1
  282. package/lib/utils/logger.js +18 -25
  283. package/lib/utils/logger.js.map +1 -1
  284. package/lib/utils/logger.mjs +13 -21
  285. package/lib/utils/logger.mjs.map +1 -1
  286. package/lib/utils/numericChecker.js +11 -18
  287. package/lib/utils/numericChecker.js.map +1 -1
  288. package/lib/utils/numericChecker.mjs +10 -17
  289. package/lib/utils/numericChecker.mjs.map +1 -1
  290. package/lib/utils/ownerDocument.js +2 -2
  291. package/lib/utils/ownerDocument.js.map +1 -1
  292. package/lib/utils/ownerDocument.mjs +1 -1
  293. package/lib/utils/ownerDocument.mjs.map +1 -1
  294. package/lib/utils/pick.js +5 -5
  295. package/lib/utils/pick.js.map +1 -1
  296. package/lib/utils/pick.mjs +4 -4
  297. package/lib/utils/pick.mjs.map +1 -1
  298. package/lib/utils/propsForElement.js +10 -12
  299. package/lib/utils/propsForElement.js.map +1 -1
  300. package/lib/utils/propsForElement.mjs +8 -10
  301. package/lib/utils/propsForElement.mjs.map +1 -1
  302. package/lib/utils/rafTrottle.js +9 -14
  303. package/lib/utils/rafTrottle.js.map +1 -1
  304. package/lib/utils/rafTrottle.mjs +7 -12
  305. package/lib/utils/rafTrottle.mjs.map +1 -1
  306. package/lib/utils/reactToText.js +5 -8
  307. package/lib/utils/reactToText.js.map +1 -1
  308. package/lib/utils/reactToText.mjs +3 -6
  309. package/lib/utils/reactToText.mjs.map +1 -1
  310. package/lib/utils/ref.d.ts +1 -3
  311. package/lib/utils/ref.js +29 -61
  312. package/lib/utils/ref.js.map +1 -1
  313. package/lib/utils/ref.mjs +27 -57
  314. package/lib/utils/ref.mjs.map +1 -1
  315. package/lib/utils/setRef.js +2 -2
  316. package/lib/utils/setRef.js.map +1 -1
  317. package/lib/utils/syncScroll.js +24 -24
  318. package/lib/utils/syncScroll.js.map +1 -1
  319. package/lib/utils/syncScroll.mjs +21 -21
  320. package/lib/utils/syncScroll.mjs.map +1 -1
  321. package/lib/utils/uncontroll.js +8 -18
  322. package/lib/utils/uncontroll.js.map +1 -1
  323. package/lib/utils/uncontroll.mjs +8 -17
  324. package/lib/utils/uncontroll.mjs.map +1 -1
  325. package/lib/utils/uniqueID.d.ts +0 -4
  326. package/lib/utils/uniqueID.js +23 -30
  327. package/lib/utils/uniqueID.js.map +1 -1
  328. package/lib/utils/uniqueID.mjs +19 -29
  329. package/lib/utils/uniqueID.mjs.map +1 -1
  330. package/lib/utils/use/useColorResolver.js +20 -21
  331. package/lib/utils/use/useColorResolver.js.map +1 -1
  332. package/lib/utils/use/useColorResolver.mjs +16 -18
  333. package/lib/utils/use/useColorResolver.mjs.map +1 -1
  334. package/lib/utils/use/useEnhancedEffect.d.ts +1 -1
  335. package/lib/utils/use/useEnhancedEffect.js +4 -4
  336. package/lib/utils/use/useEnhancedEffect.js.map +1 -1
  337. package/lib/utils/use/useEnhancedEffect.mjs +1 -1
  338. package/lib/utils/use/useEnhancedEffect.mjs.map +1 -1
  339. package/lib/utils/use/useEventCallback.js +5 -10
  340. package/lib/utils/use/useEventCallback.js.map +1 -1
  341. package/lib/utils/use/useEventCallback.mjs +3 -8
  342. package/lib/utils/use/useEventCallback.mjs.map +1 -1
  343. package/lib/utils/use/useEventListener.js +11 -15
  344. package/lib/utils/use/useEventListener.js.map +1 -1
  345. package/lib/utils/use/useEventListener.mjs +7 -11
  346. package/lib/utils/use/useEventListener.mjs.map +1 -1
  347. package/lib/utils/use/useFocusLock.js +80 -94
  348. package/lib/utils/use/useFocusLock.js.map +1 -1
  349. package/lib/utils/use/useFocusLock.mjs +71 -88
  350. package/lib/utils/use/useFocusLock.mjs.map +1 -1
  351. package/lib/utils/use/usePreventScroll.js +26 -28
  352. package/lib/utils/use/usePreventScroll.js.map +1 -1
  353. package/lib/utils/use/usePreventScroll.mjs +21 -23
  354. package/lib/utils/use/usePreventScroll.mjs.map +1 -1
  355. package/lib/utils/use/useScrollBarWidth.js +8 -14
  356. package/lib/utils/use/useScrollBarWidth.js.map +1 -1
  357. package/lib/utils/use/useScrollBarWidth.mjs +8 -13
  358. package/lib/utils/use/useScrollBarWidth.mjs.map +1 -1
  359. package/lib/utils/useCssVariable.js +32 -37
  360. package/lib/utils/useCssVariable.js.map +1 -1
  361. package/lib/utils/useCssVariable.mjs +27 -34
  362. package/lib/utils/useCssVariable.mjs.map +1 -1
  363. package/lib/utils/zIndexStacking.d.ts +3 -1
  364. package/lib/utils/zIndexStacking.js +28 -24
  365. package/lib/utils/zIndexStacking.js.map +1 -1
  366. package/lib/utils/zIndexStacking.mjs +23 -22
  367. package/lib/utils/zIndexStacking.mjs.map +1 -1
  368. package/package.json +129 -129
  369. package/lib/enhancement/bindHandler.d.ts +0 -5
  370. package/lib/enhancement/bindHandler.js +0 -53
  371. package/lib/enhancement/bindHandler.js.map +0 -1
  372. package/lib/enhancement/bindHandler.mjs +0 -48
  373. package/lib/enhancement/bindHandler.mjs.map +0 -1
  374. package/lib/enhancement/hoistProps.d.ts +0 -10
  375. package/lib/enhancement/hoistProps.js +0 -95
  376. package/lib/enhancement/hoistProps.js.map +0 -1
  377. package/lib/enhancement/hoistProps.mjs +0 -78
  378. package/lib/enhancement/hoistProps.mjs.map +0 -1
  379. package/lib/esm/enhancement/bindHandler.mjs +0 -48
  380. package/lib/esm/enhancement/hoistProps.mjs +0 -78
  381. package/lib/esm/utils/createHoc.mjs +0 -42
  382. package/lib/esm/utils/getDisplayName.mjs +0 -6
  383. package/lib/utils/ScreenReaderOnly.d.ts +0 -8
  384. package/lib/utils/ScreenReaderOnly.js +0 -30
  385. package/lib/utils/ScreenReaderOnly.js.map +0 -1
  386. package/lib/utils/ScreenReaderOnly.mjs +0 -24
  387. package/lib/utils/ScreenReaderOnly.mjs.map +0 -1
  388. package/lib/utils/createHoc.d.ts +0 -3
  389. package/lib/utils/createHoc.js +0 -52
  390. package/lib/utils/createHoc.js.map +0 -1
  391. package/lib/utils/createHoc.mjs +0 -42
  392. package/lib/utils/createHoc.mjs.map +0 -1
  393. package/lib/utils/enhances/WithAutoFocus.d.ts +0 -14
  394. package/lib/utils/enhances/WithAutoFocus.js +0 -72
  395. package/lib/utils/enhances/WithAutoFocus.js.map +0 -1
  396. package/lib/utils/enhances/WithAutoFocus.mjs +0 -66
  397. package/lib/utils/enhances/WithAutoFocus.mjs.map +0 -1
  398. package/lib/utils/enhances/WithKeyboardFocus.d.ts +0 -46
  399. package/lib/utils/enhances/WithKeyboardFocus.js +0 -94
  400. package/lib/utils/enhances/WithKeyboardFocus.js.map +0 -1
  401. package/lib/utils/enhances/WithKeyboardFocus.mjs +0 -88
  402. package/lib/utils/enhances/WithKeyboardFocus.mjs.map +0 -1
  403. package/lib/utils/enhances/WithRef.d.ts +0 -3
  404. package/lib/utils/enhances/WithRef.js +0 -25
  405. package/lib/utils/enhances/WithRef.js.map +0 -1
  406. package/lib/utils/enhances/WithRef.mjs +0 -18
  407. package/lib/utils/enhances/WithRef.mjs.map +0 -1
  408. package/lib/utils/enhances/autoFocusEnhance.d.ts +0 -10
  409. package/lib/utils/enhances/autoFocusEnhance.js +0 -45
  410. package/lib/utils/enhances/autoFocusEnhance.js.map +0 -1
  411. package/lib/utils/enhances/autoFocusEnhance.mjs +0 -38
  412. package/lib/utils/enhances/autoFocusEnhance.mjs.map +0 -1
  413. package/lib/utils/enhances/keyboardFocusEnhance.d.ts +0 -27
  414. package/lib/utils/enhances/keyboardFocusEnhance.js +0 -63
  415. package/lib/utils/enhances/keyboardFocusEnhance.js.map +0 -1
  416. package/lib/utils/enhances/keyboardFocusEnhance.mjs +0 -57
  417. package/lib/utils/enhances/keyboardFocusEnhance.mjs.map +0 -1
  418. package/lib/utils/if.d.ts +0 -11
  419. package/lib/utils/if.js +0 -15
  420. package/lib/utils/if.js.map +0 -1
  421. package/lib/utils/if.mjs +0 -9
  422. package/lib/utils/if.mjs.map +0 -1
  423. package/lib/utils/use/useCss.d.ts +0 -4
  424. package/lib/utils/use/useCss.js +0 -19
  425. package/lib/utils/use/useCss.js.map +0 -1
  426. package/lib/utils/use/useCss.mjs +0 -12
  427. package/lib/utils/use/useCss.mjs.map +0 -1
@@ -1,5 +1,3 @@
1
- import _typeof from "@babel/runtime/helpers/esm/typeof";
2
- import _toConsumableArray from "@babel/runtime/helpers/esm/toConsumableArray";
3
1
  import LocalReact from 'react';
4
2
  import canUseDOM from "../canUseDOM.mjs";
5
3
  import { addFocusBorders, removeFocusBorders } from "../focus-lock/focusBorders.mjs";
@@ -8,7 +6,7 @@ import { isFocusInside } from "../focus-lock/isFocusInside.mjs";
8
6
  import { setFocus } from "../focus-lock/setFocus.mjs";
9
7
  import { hasParent } from "../hasParent.mjs";
10
8
  export { isFocusInside, setFocus };
11
- var syntheticEvents = {
9
+ const syntheticEvents = {
12
10
  blur: 'focusout-intergalactic-focus-lock-synthetic',
13
11
  keydown: 'keydown-intergalactic-focus-lock-synthetic'
14
12
  };
@@ -16,14 +14,14 @@ var syntheticEvents = {
16
14
  * Synthetic event are special events that always bypass all propagation guards and reaches focus lock event listeners.
17
15
  * You should always prevent native event propagation in order to prevent focus enforcing double calls.
18
16
  */
19
- export var makeFocusLockSyntheticEvent = function makeFocusLockSyntheticEvent(baseEvent) {
20
- var event = baseEvent;
21
- var type = event.type;
17
+ export const makeFocusLockSyntheticEvent = baseEvent => {
18
+ const event = baseEvent;
19
+ const type = event.type;
22
20
  if (!(type in syntheticEvents)) {
23
- var supported = Object.keys(syntheticEvents).join(', ');
24
- throw new Error("Unable to make synthetic event for ".concat(type, ", ").concat(supported, " are supported"));
21
+ const supported = Object.keys(syntheticEvents).join(', ');
22
+ throw new Error(`Unable to make synthetic event for ${type}, ${supported} are supported`);
25
23
  }
26
- var syntheticEvent = new Event(syntheticEvents[type], {
24
+ const syntheticEvent = new Event(syntheticEvents[type], {
27
25
  bubbles: true
28
26
  });
29
27
  Object.defineProperty(syntheticEvent, 'target', {
@@ -36,24 +34,22 @@ export var makeFocusLockSyntheticEvent = function makeFocusLockSyntheticEvent(ba
36
34
  });
37
35
  return syntheticEvent;
38
36
  };
39
- var useFocusBorders = function useFocusBorders(React, disabled, trapRef) {
37
+ const useFocusBorders = (React, disabled, trapRef) => {
40
38
  useUniqueIdHookMock(React);
41
- React.useEffect(function () {
42
- var trapNode = trapRef === null || trapRef === void 0 ? void 0 : trapRef.current;
39
+ React.useEffect(() => {
40
+ const trapNode = trapRef?.current;
43
41
  if (trapNode && !disabled && getFocusableIn(trapNode).length > 0) {
44
42
  addFocusBorders(trapNode);
45
43
  }
46
- return function () {
44
+ return () => {
47
45
  if (trapNode) {
48
46
  removeFocusBorders(trapNode);
49
47
  }
50
48
  };
51
49
  }, [disabled]);
52
50
  };
53
- var uniqueId = 0;
54
- var getUniqueId = function getUniqueId(prefix) {
55
- return "".concat(prefix, "-").concat(Math.random().toString(36).slice(2), "-").concat(uniqueId++);
56
- };
51
+ let uniqueId = 0;
52
+ const getUniqueId = prefix => `${prefix}-${Math.random().toString(36).slice(2)}-${uniqueId++}`;
57
53
 
58
54
  /**
59
55
  * # Focus lock hook merging
@@ -86,10 +82,10 @@ var getUniqueId = function getUniqueId(prefix) {
86
82
  * If new update requires to remove some hooks – add mocks instead of them.
87
83
  * 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.
88
84
  */
89
- var focusLockVersion = 5;
90
- var globalFocusLockHookKey = '__intergalactic_focus_lock_hook_react_v_respectful';
91
- var focusLockAllTraps = new Set();
92
- var focusLockUsedInMountedComponents = new Set();
85
+ const focusLockVersion = 5;
86
+ const globalFocusLockHookKey = '__intergalactic_focus_lock_hook_react_v_respectful';
87
+ const focusLockAllTraps = new Set();
88
+ const focusLockUsedInMountedComponents = new Set();
93
89
  /** Focus master is a special mode in which focus lock might work.
94
90
  * Normally, focus lock hook allows user focus to move freely between
95
91
  * all active focus traps. When component provides `focusMaster=true`
@@ -98,86 +94,81 @@ var focusLockUsedInMountedComponents = new Set();
98
94
  * also have some visual backdrop.
99
95
  * The last element in focus masters stack is considered as a current focus master.
100
96
  */
101
- var focusMastersStack = [];
102
- var noop = function noop() {};
103
- var useUniqueIdHookMock = function useUniqueIdHookMock(React) {
97
+ const focusMastersStack = [];
98
+ const noop = () => {};
99
+ const useUniqueIdHookMock = React => {
104
100
  React.useState(undefined);
105
- var useEnhancedEffect = canUseDOM() ? React.useLayoutEffect : React.useEffect;
101
+ const useEnhancedEffect = canUseDOM() ? React.useLayoutEffect : React.useEffect;
106
102
  useEnhancedEffect(noop, []);
107
103
  };
108
- var useFocusLockHook = function useFocusLockHook(React, trapRef, autoFocus, returnFocusTo) {
109
- var disabled = arguments.length > 4 && arguments[4] !== undefined ? arguments[4] : false;
110
- var focusMaster = arguments.length > 5 && arguments[5] !== undefined ? arguments[5] : false;
111
- var onFocusOut = arguments.length > 6 ? arguments[6] : undefined;
104
+ const useFocusLockHook = (React, trapRef, autoFocus, returnFocusTo, disabled = false, focusMaster = false, onFocusOut) => {
112
105
  useFocusBorders(React, disabled, trapRef);
113
- var autoTriggerRef = React.useRef(null);
114
- var lastUserInteractionRef = React.useRef(undefined);
115
- var handleFocusOut = React.useCallback(function (event) {
116
- var focusCameFrom = event.target;
117
- var focusMovedTo = event.relatedTarget;
118
- setTimeout(function () {
106
+ const autoTriggerRef = React.useRef(null);
107
+ const lastUserInteractionRef = React.useRef(undefined);
108
+ const handleFocusOut = React.useCallback(event => {
109
+ const focusCameFrom = event.target;
110
+ const focusMovedTo = event.relatedTarget;
111
+ setTimeout(() => {
119
112
  if (!focusCameFrom) return;
120
113
  if (autoTriggerRef.current) return;
121
114
  autoTriggerRef.current = focusCameFrom;
122
115
  }, 0);
123
116
  if (lastUserInteractionRef.current === 'mouse') return;
124
- Promise.resolve().then(function () {
117
+ Promise.resolve().then(() => {
125
118
  if (!trapRef.current) return;
126
- var currentFocusMaster = focusMastersStack[focusMastersStack.length - 1];
119
+ const currentFocusMaster = focusMastersStack[focusMastersStack.length - 1];
127
120
  if (currentFocusMaster && currentFocusMaster !== trapRef.current) return;
128
- var trapNodes = currentFocusMaster ? [trapRef.current] : [trapRef.current].concat(_toConsumableArray(focusLockAllTraps));
121
+ const trapNodes = currentFocusMaster ? [trapRef.current] : [trapRef.current, ...focusLockAllTraps];
129
122
  if (isFocusInside(trapNodes, focusMovedTo)) return;
130
- if (_typeof(returnFocusTo) === 'object' && returnFocusTo !== null && returnFocusTo !== void 0 && returnFocusTo.current && hasParent(focusMovedTo, returnFocusTo.current)) return;
123
+ if (typeof returnFocusTo === 'object' && returnFocusTo?.current && hasParent(focusMovedTo, returnFocusTo.current)) return;
131
124
  if (focusCameFrom && focusMovedTo) {
132
125
  setFocus(trapRef.current, focusCameFrom, focusMovedTo);
133
126
  }
134
- onFocusOut === null || onFocusOut === void 0 || onFocusOut(event);
127
+ onFocusOut?.(event);
135
128
  });
136
129
  }, [onFocusOut]);
137
- var handleMouseEvent = React.useCallback(function () {
130
+ const handleMouseEvent = React.useCallback(() => {
138
131
  lastUserInteractionRef.current = 'mouse';
139
132
  }, []);
140
- var handleKeyboardEvent = React.useCallback(function () {
133
+ const handleKeyboardEvent = React.useCallback(() => {
141
134
  lastUserInteractionRef.current = 'keyboard';
142
135
  }, []);
143
- var returnFocus = React.useCallback(function () {
144
- var trapNode = trapRef.current;
136
+ const returnFocus = React.useCallback(() => {
137
+ const trapNode = trapRef.current;
145
138
  if (trapNode && !isFocusInside(trapNode)) return;
146
- var focusMastersStackCount = focusMastersStack.length;
147
- if (_typeof(returnFocusTo) === 'object' && returnFocusTo !== null && returnFocusTo !== void 0 && returnFocusTo.current) {
148
- var returnFocusNode = returnFocusTo === null || returnFocusTo === void 0 ? void 0 : returnFocusTo.current;
149
- setTimeout(function () {
139
+ const focusMastersStackCount = focusMastersStack.length;
140
+ if (typeof returnFocusTo === 'object' && returnFocusTo?.current) {
141
+ const returnFocusNode = returnFocusTo?.current;
142
+ setTimeout(() => {
150
143
  if (focusMastersStackCount !== focusMastersStack.length) {
151
144
  setFocus(returnFocusNode, trapNode);
152
145
  }
153
146
  }, 0);
154
147
  }
155
148
  if (returnFocusTo === 'auto' && autoTriggerRef.current) {
156
- var autoTrigger = autoTriggerRef.current;
157
- setTimeout(function () {
149
+ const autoTrigger = autoTriggerRef.current;
150
+ setTimeout(() => {
158
151
  if (focusMastersStackCount !== focusMastersStack.length || autoFocus === 'enforced') {
159
152
  setFocus(autoTrigger, trapNode);
160
153
  }
161
154
  }, 0);
162
155
  }
163
156
  }, [returnFocusTo]);
164
- React.useEffect(function () {
165
- if (_typeof(trapRef) !== 'object' || trapRef === null) return;
166
- var node = trapRef.current;
157
+ React.useEffect(() => {
158
+ if (typeof trapRef !== 'object' || trapRef === null) return;
159
+ const node = trapRef.current;
167
160
  if (!node) return;
168
161
  focusLockAllTraps.add(node);
169
- return function () {
162
+ return () => {
170
163
  if (!node) return;
171
- focusLockAllTraps["delete"](node);
164
+ focusLockAllTraps.delete(node);
172
165
  };
173
166
  }, [disabled]);
174
- React.useEffect(function () {
167
+ React.useEffect(() => {
175
168
  if (disabled) return;
176
169
  if (!canUseDOM()) return;
177
170
  if (!trapRef.current) return;
178
- var focusableChildren = Array.from(trapRef.current.children).flatMap(function (node) {
179
- return getFocusableIn(node);
180
- });
171
+ const focusableChildren = Array.from(trapRef.current.children).flatMap(node => getFocusableIn(node));
181
172
  if (focusableChildren.length === 0 && autoFocus !== 'enforced') return;
182
173
  document.body.addEventListener('focusout', handleFocusOut);
183
174
  document.body.addEventListener(syntheticEvents.blur, handleFocusOut);
@@ -186,16 +177,15 @@ var useFocusLockHook = function useFocusLockHook(React, trapRef, autoFocus, retu
186
177
  document.body.addEventListener('keydown', handleKeyboardEvent);
187
178
  document.body.addEventListener(syntheticEvents.keydown, handleKeyboardEvent);
188
179
  if (autoFocus) {
189
- setTimeout(function () {
180
+ setTimeout(() => {
190
181
  if (autoFocus === 'enforced' && focusableChildren.length === 0 && focusMaster) {
191
- var _trapRef$current;
192
- (_trapRef$current = trapRef.current) === null || _trapRef$current === void 0 || _trapRef$current.focus();
182
+ trapRef.current?.focus();
193
183
  return;
194
184
  }
195
- setFocus(trapRef.current, _typeof(returnFocusTo) === 'object' ? returnFocusTo === null || returnFocusTo === void 0 ? void 0 : returnFocusTo.current : document.body);
185
+ setFocus(trapRef.current, typeof returnFocusTo === 'object' ? returnFocusTo?.current : document.body);
196
186
  }, 0);
197
187
  }
198
- return function () {
188
+ return () => {
199
189
  document.body.removeEventListener('focusout', handleFocusOut);
200
190
  document.body.removeEventListener(syntheticEvents.blur, handleFocusOut);
201
191
  document.body.removeEventListener('mousedown', handleMouseEvent);
@@ -206,19 +196,17 @@ var useFocusLockHook = function useFocusLockHook(React, trapRef, autoFocus, retu
206
196
  autoTriggerRef.current = null;
207
197
  };
208
198
  }, [disabled, autoFocus, returnFocusTo, returnFocus]);
209
- React.useEffect(function () {
210
- if (_typeof(trapRef) !== 'object' || trapRef === null) return;
199
+ React.useEffect(() => {
200
+ if (typeof trapRef !== 'object' || trapRef === null) return;
211
201
  if (disabled) return;
212
202
  if (!canUseDOM()) return;
213
203
  if (!trapRef.current) return;
214
- var focusableChildren = Array.from(trapRef.current.children).flatMap(function (node) {
215
- return getFocusableIn(node);
216
- });
204
+ const focusableChildren = Array.from(trapRef.current.children).flatMap(node => getFocusableIn(node));
217
205
  if (focusableChildren.length === 0) return;
218
206
  if (focusMaster) {
219
207
  focusMastersStack.push(trapRef.current);
220
208
  }
221
- return function () {
209
+ return () => {
222
210
  if (!focusMaster) return;
223
211
  if (focusMastersStack[focusMastersStack.length - 1] === trapRef.current) {
224
212
  focusMastersStack.pop();
@@ -228,16 +216,16 @@ var useFocusLockHook = function useFocusLockHook(React, trapRef, autoFocus, retu
228
216
  };
229
217
  }, [disabled, focusMaster]);
230
218
  useUniqueIdHookMock(React);
231
- React.useEffect(function () {
232
- var id = getUniqueId('focus-lock-consumer');
219
+ React.useEffect(() => {
220
+ const id = getUniqueId('focus-lock-consumer');
233
221
  if (disabled) return;
234
222
  focusLockUsedInMountedComponents.add(id);
235
- return function () {
236
- focusLockUsedInMountedComponents["delete"](id);
223
+ return () => {
224
+ focusLockUsedInMountedComponents.delete(id);
237
225
  };
238
226
  }, [disabled]);
239
227
  };
240
- var establishHookAsGlobal = function establishHookAsGlobal() {
228
+ const establishHookAsGlobal = () => {
241
229
  globalThis[globalFocusLockHookKey] = {
242
230
  hook: useFocusLockHook,
243
231
  version: focusLockVersion,
@@ -249,24 +237,19 @@ if (!globalThis[globalFocusLockHookKey]) {
249
237
  } else if (typeof globalThis[globalFocusLockHookKey].version !== 'number') {
250
238
  establishHookAsGlobal();
251
239
  } else {
252
- var _globalFocusLockHookK = globalThis[globalFocusLockHookKey],
253
- theirVersion = _globalFocusLockHookK.version,
254
- usedInComponents = _globalFocusLockHookK.usedInComponents;
240
+ const {
241
+ version: theirVersion,
242
+ usedInComponents
243
+ } = globalThis[globalFocusLockHookKey];
255
244
  if (focusLockVersion > theirVersion && usedInComponents.size === 0) {
256
245
  establishHookAsGlobal();
257
246
  }
258
247
  }
259
- export var useFocusLock = function useFocusLock(trapRef, autoFocus, returnFocusTo) {
260
- var _globalFocusLockHookK2, _globalFocusLockHookK3;
261
- var disabled = arguments.length > 3 && arguments[3] !== undefined ? arguments[3] : false;
262
- var focusMaster = arguments.length > 4 && arguments[4] !== undefined ? arguments[4] : false;
263
- var onFocusOut = arguments.length > 5 ? arguments[5] : undefined;
264
- var hook = (_globalFocusLockHookK2 = (_globalFocusLockHookK3 = globalThis[globalFocusLockHookKey]) === null || _globalFocusLockHookK3 === void 0 ? void 0 : _globalFocusLockHookK3.hook) !== null && _globalFocusLockHookK2 !== void 0 ? _globalFocusLockHookK2 : useFocusLockHook;
248
+ export const useFocusLock = (trapRef, autoFocus, returnFocusTo, disabled = false, focusMaster = false, onFocusOut) => {
249
+ const hook = globalThis[globalFocusLockHookKey]?.hook ?? useFocusLockHook;
265
250
  return hook(LocalReact, trapRef, autoFocus, returnFocusTo, disabled, focusMaster, onFocusOut);
266
251
  };
267
- export var hasFocusableIn = function hasFocusableIn(element) {
268
- return Array.from(element.children).flatMap(function (node) {
269
- return getFocusableIn(node);
270
- }).length > 0;
252
+ export const hasFocusableIn = element => {
253
+ return Array.from(element.children).flatMap(node => getFocusableIn(node)).length > 0;
271
254
  };
272
255
  //# sourceMappingURL=useFocusLock.mjs.map
@@ -1 +1 @@
1
- {"version":3,"file":"useFocusLock.mjs","names":["LocalReact","canUseDOM","addFocusBorders","removeFocusBorders","getFocusableIn","isFocusInside","setFocus","hasParent","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","_trapRef$current","focus","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';\nimport { hasParent } from '../hasParent';\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 hasParent(focusMovedTo, 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 || autoFocus === 'enforced') {\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 if (autoFocus === 'enforced' && focusableChildren.length === 0 && focusMaster) {\n trapRef.current?.focus();\n return;\n }\n\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
+ {"version":3,"file":"useFocusLock.mjs","names":["LocalReact","canUseDOM","addFocusBorders","removeFocusBorders","getFocusableIn","isFocusInside","setFocus","hasParent","syntheticEvents","blur","keydown","makeFocusLockSyntheticEvent","baseEvent","event","type","supported","Object","keys","join","Error","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","focusMaster","onFocusOut","autoTriggerRef","useRef","lastUserInteractionRef","handleFocusOut","useCallback","focusCameFrom","focusMovedTo","setTimeout","Promise","resolve","then","currentFocusMaster","trapNodes","handleMouseEvent","handleKeyboardEvent","returnFocus","focusMastersStackCount","returnFocusNode","autoTrigger","node","add","delete","focusableChildren","Array","from","children","flatMap","document","body","addEventListener","focus","removeEventListener","push","pop","splice","indexOf","id","establishHookAsGlobal","globalThis","hook","version","usedInComponents","theirVersion","size","useFocusLock","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';\nimport { hasParent } from '../hasParent';\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 hasParent(focusMovedTo, 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 || autoFocus === 'enforced') {\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 if (autoFocus === 'enforced' && focusableChildren.length === 0 && focusMaster) {\n trapRef.current?.focus();\n return;\n }\n\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,60 +1,58 @@
1
1
  "use strict";
2
2
 
3
- var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault")["default"];
3
+ var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault").default;
4
4
  Object.defineProperty(exports, "__esModule", {
5
5
  value: true
6
6
  });
7
- exports["default"] = usePreventScroll;
7
+ exports.default = usePreventScroll;
8
8
  exports.getScrollbarWidth = getScrollbarWidth;
9
9
  var _react = _interopRequireDefault(require("react"));
10
10
  var _canUseDOM = _interopRequireDefault(require("../canUseDOM"));
11
11
  var _uniqueID = require("../uniqueID");
12
12
  function getScrollbarWidth() {
13
- var _outer$parentNode;
14
- if (!(0, _canUseDOM["default"])()) return 0;
15
- var outer = document.createElement('div');
13
+ if (!(0, _canUseDOM.default)()) return 0;
14
+ const outer = document.createElement('div');
16
15
  outer.style.visibility = 'hidden';
17
16
  outer.style.width = '100px';
18
17
  // @ts-expect-error
19
18
  outer.style.msOverflowStyle = 'scrollbar'; // needed for WinJS apps
20
19
  document.body.appendChild(outer);
21
- var widthNoScroll = outer.offsetWidth;
20
+ const widthNoScroll = outer.offsetWidth;
22
21
  outer.style.overflow = 'scroll';
23
- var inner = document.createElement('div');
22
+ const inner = document.createElement('div');
24
23
  inner.style.width = '100%';
25
24
  outer.appendChild(inner);
26
- var widthWithScroll = inner.offsetWidth;
27
- (_outer$parentNode = outer.parentNode) === null || _outer$parentNode === void 0 || _outer$parentNode.removeChild(outer);
25
+ const widthWithScroll = inner.offsetWidth;
26
+ outer.parentNode?.removeChild(outer);
28
27
  return widthNoScroll - widthWithScroll;
29
28
  }
30
29
  function getIntValueFromCss(value) {
31
30
  return !Number.isNaN(Number(value)) ? Number(value) : Number.parseInt(value, 10);
32
31
  }
33
- var scrollPreventers = new Set();
34
- var lockedBodyStyles = {
32
+ const scrollPreventers = new Set();
33
+ const lockedBodyStyles = {
35
34
  paddingRight: null,
36
35
  overflow: null,
37
36
  boxSizing: null
38
37
  };
39
- function usePreventScroll() {
40
- var visible = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : true;
41
- var disabled = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : false;
42
- var scrollbarWidth = _react["default"].useMemo(getScrollbarWidth, [getScrollbarWidth]);
43
- var id = (0, _uniqueID.useUID)('scroll-preventer-');
44
- _react["default"].useEffect(function () {
38
+ function usePreventScroll(visible = true, disabled = false) {
39
+ const scrollbarWidth = _react.default.useMemo(getScrollbarWidth, [getScrollbarWidth]);
40
+ const id = (0, _uniqueID.useUID)('scroll-preventer-');
41
+ _react.default.useEffect(() => {
45
42
  if (disabled) return;
46
- if (!(0, _canUseDOM["default"])() || !visible) return;
43
+ if (!(0, _canUseDOM.default)() || !visible) return;
47
44
  scrollPreventers.add(id);
48
45
  if (scrollPreventers.size > 1) return;
49
- var _window$getComputedSt = window.getComputedStyle(document.body),
50
- overflow = _window$getComputedSt.overflow,
51
- paddingRight = _window$getComputedSt.paddingRight,
52
- boxSizing = _window$getComputedSt.boxSizing;
46
+ const {
47
+ overflow,
48
+ paddingRight,
49
+ boxSizing
50
+ } = window.getComputedStyle(document.body);
53
51
  lockedBodyStyles.paddingRight = paddingRight;
54
52
  lockedBodyStyles.overflow = overflow;
55
53
  lockedBodyStyles.boxSizing = boxSizing;
56
- var intPaddingRight = getIntValueFromCss(paddingRight);
57
- var intPaddingRightFromStyle = getIntValueFromCss(document.body.style.paddingRight);
54
+ const intPaddingRight = getIntValueFromCss(paddingRight);
55
+ let intPaddingRightFromStyle = getIntValueFromCss(document.body.style.paddingRight);
58
56
  // Detected own style for window inside window
59
57
  if (intPaddingRightFromStyle !== scrollbarWidth) {
60
58
  intPaddingRightFromStyle = 0;
@@ -63,11 +61,11 @@ function usePreventScroll() {
63
61
  document.body.style.paddingRight = scrollbarWidth + (intPaddingRight - intPaddingRightFromStyle) + 'px';
64
62
  document.body.style.boxSizing = 'border-box';
65
63
  }, [visible, id, disabled]);
66
- _react["default"].useEffect(function () {
64
+ _react.default.useEffect(() => {
67
65
  if (disabled) return;
68
- if (!(0, _canUseDOM["default"])() || !visible) return;
69
- return function () {
70
- scrollPreventers["delete"](id);
66
+ if (!(0, _canUseDOM.default)() || !visible) return;
67
+ return () => {
68
+ scrollPreventers.delete(id);
71
69
  if (scrollPreventers.size !== 0) return;
72
70
  document.body.style.overflow = lockedBodyStyles.overflow;
73
71
  document.body.style.paddingRight = lockedBodyStyles.paddingRight;
@@ -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';\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":";;;;;;;;AAAA,IAAAA,MAAA,GAAAC,sBAAA,CAAAC,OAAA;AAEA,IAAAC,UAAA,GAAAF,sBAAA,CAAAC,OAAA;AACA,IAAAE,SAAA,GAAAF,OAAA;AAEO,SAASG,iBAAiBA,CAAA,EAAW;EAAA,IAAAC,iBAAA;EAC1C,IAAI,CAAC,IAAAC,qBAAS,EAAC,CAAC,EAAE,OAAO,CAAC;EAC1B,IAAMC,KAAK,GAAGC,QAAQ,CAACC,aAAa,CAAC,KAAK,CAAC;EAC3CF,KAAK,CAACG,KAAK,CAACC,UAAU,GAAG,QAAQ;EACjCJ,KAAK,CAACG,KAAK,CAACE,KAAK,GAAG,OAAO;EAC3B;EACAL,KAAK,CAACG,KAAK,CAACG,eAAe,GAAG,WAAW,CAAC,CAAC;EAC3CL,QAAQ,CAACM,IAAI,CAACC,WAAW,CAACR,KAAK,CAAC;EAEhC,IAAMS,aAAa,GAAGT,KAAK,CAACU,WAAW;EACvCV,KAAK,CAACG,KAAK,CAACQ,QAAQ,GAAG,QAAQ;EAE/B,IAAMC,KAAK,GAAGX,QAAQ,CAACC,aAAa,CAAC,KAAK,CAAC;EAC3CU,KAAK,CAACT,KAAK,CAACE,KAAK,GAAG,MAAM;EAC1BL,KAAK,CAACQ,WAAW,CAACI,KAAK,CAAC;EAExB,IAAMC,eAAe,GAAGD,KAAK,CAACF,WAAW;EAEzC,CAAAZ,iBAAA,GAAAE,KAAK,CAACc,UAAU,cAAAhB,iBAAA,eAAhBA,iBAAA,CAAkBiB,WAAW,CAACf,KAAK,CAAC;EAEpC,OAAOS,aAAa,GAAGI,eAAe;AACxC;AAEA,SAASG,kBAAkBA,CAACC,KAAU,EAAE;EACtC,OAAO,CAACC,MAAM,CAACC,KAAK,CAACD,MAAM,CAACD,KAAK,CAAC,CAAC,GAAGC,MAAM,CAACD,KAAK,CAAC,GAAGC,MAAM,CAACE,QAAQ,CAACH,KAAK,EAAE,EAAE,CAAC;AAClF;AAEA,IAAMI,gBAAgB,GAAG,IAAIC,GAAG,CAAS,CAAC;AAC1C,IAAMC,gBAAgB,GAAG;EACvBC,YAAY,EAAE,IAAqB;EACnCb,QAAQ,EAAE,IAAqB;EAC/Bc,SAAS,EAAE;AACb,CAAC;AACc,SAASC,gBAAgBA,CAAA,EAAmC;EAAA,IAAlCC,OAAO,GAAAC,SAAA,CAAAC,MAAA,QAAAD,SAAA,QAAAE,SAAA,GAAAF,SAAA,MAAG,IAAI;EAAA,IAAEG,QAAQ,GAAAH,SAAA,CAAAC,MAAA,QAAAD,SAAA,QAAAE,SAAA,GAAAF,SAAA,MAAG,KAAK;EACvE,IAAMI,cAAc,GAAGC,iBAAK,CAACC,OAAO,CAACrC,iBAAiB,EAAE,CAACA,iBAAiB,CAAC,CAAC;EAC5E,IAAMsC,EAAE,GAAG,IAAAC,gBAAM,EAAC,mBAAmB,CAAC;EAEtCH,iBAAK,CAACI,SAAS,CAAC,YAAM;IACpB,IAAIN,QAAQ,EAAE;IACd,IAAI,CAAC,IAAAhC,qBAAS,EAAC,CAAC,IAAI,CAAC4B,OAAO,EAAE;IAC9BN,gBAAgB,CAACiB,GAAG,CAACH,EAAE,CAAC;IACxB,IAAId,gBAAgB,CAACkB,IAAI,GAAG,CAAC,EAAE;IAE/B,IAAAC,qBAAA,GAA8CC,MAAM,CAACC,gBAAgB,CAACzC,QAAQ,CAACM,IAAI,CAAC;MAA5EI,QAAQ,GAAA6B,qBAAA,CAAR7B,QAAQ;MAAEa,YAAY,GAAAgB,qBAAA,CAAZhB,YAAY;MAAEC,SAAS,GAAAe,qBAAA,CAATf,SAAS;IACzCF,gBAAgB,CAACC,YAAY,GAAGA,YAAY;IAC5CD,gBAAgB,CAACZ,QAAQ,GAAGA,QAAQ;IACpCY,gBAAgB,CAACE,SAAS,GAAGA,SAAS;IAEtC,IAAMkB,eAAe,GAAG3B,kBAAkB,CAACQ,YAAY,CAAC;IACxD,IAAIoB,wBAAwB,GAAG5B,kBAAkB,CAACf,QAAQ,CAACM,IAAI,CAACJ,KAAK,CAACqB,YAAY,CAAC;IACnF;IACA,IAAIoB,wBAAwB,KAAKZ,cAAc,EAAE;MAC/CY,wBAAwB,GAAG,CAAC;IAC9B;IAEA3C,QAAQ,CAACM,IAAI,CAACJ,KAAK,CAACQ,QAAQ,GAAG,QAAQ;IACvCV,QAAQ,CAACM,IAAI,CAACJ,KAAK,CAACqB,YAAY,GAC9BQ,cAAc,IAAIW,eAAe,GAAGC,wBAAwB,CAAC,GAAG,IAAI;IACtE3C,QAAQ,CAACM,IAAI,CAACJ,KAAK,CAACsB,SAAS,GAAG,YAAY;EAC9C,CAAC,EAAE,CAACE,OAAO,EAAEQ,EAAE,EAAEJ,QAAQ,CAAC,CAAC;EAE3BE,iBAAK,CAACI,SAAS,CAAC,YAAM;IACpB,IAAIN,QAAQ,EAAE;IACd,IAAI,CAAC,IAAAhC,qBAAS,EAAC,CAAC,IAAI,CAAC4B,OAAO,EAAE;IAC9B,OAAO,YAAM;MACXN,gBAAgB,UAAO,CAACc,EAAE,CAAC;MAC3B,IAAId,gBAAgB,CAACkB,IAAI,KAAK,CAAC,EAAE;MACjCtC,QAAQ,CAACM,IAAI,CAACJ,KAAK,CAACQ,QAAQ,GAAGY,gBAAgB,CAACZ,QAAS;MACzDV,QAAQ,CAACM,IAAI,CAACJ,KAAK,CAACqB,YAAY,GAAGD,gBAAgB,CAACC,YAAa;MACjEvB,QAAQ,CAACM,IAAI,CAACJ,KAAK,CAACsB,SAAS,GAAGF,gBAAgB,CAACE,SAAU;IAC7D,CAAC;EACH,CAAC,EAAE,CAACE,OAAO,EAAEQ,EAAE,EAAEJ,QAAQ,CAAC,CAAC;AAC7B","ignoreList":[]}
1
+ {"version":3,"file":"usePreventScroll.js","names":["_react","_interopRequireDefault","require","_canUseDOM","_uniqueID","getScrollbarWidth","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","disabled","scrollbarWidth","React","useMemo","id","useUID","useEffect","add","size","window","getComputedStyle","intPaddingRight","intPaddingRightFromStyle","delete"],"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":[]}