intergalactic 15.113.0 → 15.114.0-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 (383) hide show
  1. package/CHANGELOG.md +14 -0
  2. package/accordion/lib/cjs/Accordion.js +9 -9
  3. package/accordion/lib/es6/Accordion.js +9 -9
  4. package/accordion/package.json +1 -1
  5. package/animation/lib/cjs/Animation.js +11 -11
  6. package/animation/lib/cjs/Collapse.js +28 -28
  7. package/animation/lib/cjs/FadeInOut.js +28 -28
  8. package/animation/lib/cjs/Scale.js +28 -28
  9. package/animation/lib/cjs/Slide.js +28 -28
  10. package/animation/lib/cjs/Transform.js +28 -28
  11. package/animation/lib/es6/Animation.js +11 -11
  12. package/animation/lib/es6/Collapse.js +28 -28
  13. package/animation/lib/es6/FadeInOut.js +28 -28
  14. package/animation/lib/es6/Scale.js +28 -28
  15. package/animation/lib/es6/Slide.js +28 -28
  16. package/animation/lib/es6/Transform.js +28 -28
  17. package/animation/package.json +1 -1
  18. package/badge/lib/cjs/Badge.js +6 -6
  19. package/badge/lib/es6/Badge.js +6 -6
  20. package/badge/package.json +1 -1
  21. package/base-trigger/lib/cjs/BaseTrigger.js +18 -18
  22. package/base-trigger/lib/cjs/ButtonTrigger.js +3 -3
  23. package/base-trigger/lib/cjs/FilterTrigger.js +7 -7
  24. package/base-trigger/lib/cjs/LinkTrigger.js +12 -12
  25. package/base-trigger/lib/es6/BaseTrigger.js +18 -18
  26. package/base-trigger/lib/es6/ButtonTrigger.js +3 -3
  27. package/base-trigger/lib/es6/FilterTrigger.js +7 -7
  28. package/base-trigger/lib/es6/LinkTrigger.js +12 -12
  29. package/base-trigger/package.json +1 -1
  30. package/breadcrumbs/lib/cjs/Breadcrumbs.js +8 -8
  31. package/breadcrumbs/lib/es6/Breadcrumbs.js +8 -8
  32. package/breadcrumbs/package.json +1 -1
  33. package/breakpoints/package.json +1 -1
  34. package/button/lib/cjs/component/Button/Button.js +27 -27
  35. package/button/lib/cjs/component/ButtonLink/ButtonLink.js +20 -20
  36. package/button/lib/es6/component/Button/Button.js +27 -27
  37. package/button/lib/es6/component/ButtonLink/ButtonLink.js +20 -20
  38. package/button/package.json +1 -1
  39. package/card/lib/cjs/Card.js +6 -6
  40. package/card/lib/es6/Card.js +6 -6
  41. package/card/package.json +1 -1
  42. package/carousel/lib/cjs/Carousel.js +21 -21
  43. package/carousel/lib/es6/Carousel.js +21 -21
  44. package/carousel/package.json +1 -1
  45. package/checkbox/lib/cjs/Checkbox.js +18 -18
  46. package/checkbox/lib/es6/Checkbox.js +18 -18
  47. package/checkbox/package.json +1 -1
  48. package/color-picker/lib/cjs/ColorPicker.js +24 -24
  49. package/color-picker/lib/cjs/PaletteManager.js +24 -24
  50. package/color-picker/lib/cjs/components/InputColor.js +24 -24
  51. package/color-picker/lib/es6/ColorPicker.js +24 -24
  52. package/color-picker/lib/es6/PaletteManager.js +24 -24
  53. package/color-picker/lib/es6/components/InputColor.js +24 -24
  54. package/color-picker/package.json +1 -1
  55. package/components.json +73 -73
  56. package/core/package.json +1 -1
  57. package/counter/lib/cjs/Counter.js +11 -11
  58. package/counter/lib/es6/Counter.js +11 -11
  59. package/counter/package.json +1 -1
  60. package/d3-chart/lib/cjs/Area.js +11 -11
  61. package/d3-chart/lib/cjs/Axis.js +14 -14
  62. package/d3-chart/lib/cjs/Bar.js +16 -16
  63. package/d3-chart/lib/cjs/Bubble.js +12 -12
  64. package/d3-chart/lib/cjs/CompactHorizontalBar.js +16 -16
  65. package/d3-chart/lib/cjs/Donut.js +9 -9
  66. package/d3-chart/lib/cjs/Dots.js +8 -8
  67. package/d3-chart/lib/cjs/HorizontalBar.js +16 -16
  68. package/d3-chart/lib/cjs/Hover.js +3 -3
  69. package/d3-chart/lib/cjs/Line.js +9 -9
  70. package/d3-chart/lib/cjs/Plot.js +3 -3
  71. package/d3-chart/lib/cjs/Radar.js +19 -19
  72. package/d3-chart/lib/cjs/RadialTree.js +12 -12
  73. package/d3-chart/lib/cjs/Reference.js +12 -12
  74. package/d3-chart/lib/cjs/ScatterPlot.js +9 -9
  75. package/d3-chart/lib/cjs/Tooltip.js +9 -9
  76. package/d3-chart/lib/cjs/Venn.js +9 -9
  77. package/d3-chart/lib/cjs/a11y/PlotA11yModule.js +2 -2
  78. package/d3-chart/lib/cjs/a11y/PlotA11yView.js +2 -2
  79. package/d3-chart/lib/cjs/component/ChartLegend/LegendFlex/LegendFlex.js +4 -4
  80. package/d3-chart/lib/cjs/component/ChartLegend/LegendItem/LegendItem.js +17 -17
  81. package/d3-chart/lib/cjs/component/ChartLegend/LegendTable/LegendTable.js +6 -6
  82. package/d3-chart/lib/es6/Area.js +11 -11
  83. package/d3-chart/lib/es6/Axis.js +14 -14
  84. package/d3-chart/lib/es6/Bar.js +16 -16
  85. package/d3-chart/lib/es6/Bubble.js +12 -12
  86. package/d3-chart/lib/es6/CompactHorizontalBar.js +16 -16
  87. package/d3-chart/lib/es6/Donut.js +9 -9
  88. package/d3-chart/lib/es6/Dots.js +8 -8
  89. package/d3-chart/lib/es6/HorizontalBar.js +16 -16
  90. package/d3-chart/lib/es6/Hover.js +3 -3
  91. package/d3-chart/lib/es6/Line.js +9 -9
  92. package/d3-chart/lib/es6/Plot.js +3 -3
  93. package/d3-chart/lib/es6/Radar.js +19 -19
  94. package/d3-chart/lib/es6/RadialTree.js +12 -12
  95. package/d3-chart/lib/es6/Reference.js +12 -12
  96. package/d3-chart/lib/es6/ScatterPlot.js +9 -9
  97. package/d3-chart/lib/es6/Tooltip.js +9 -9
  98. package/d3-chart/lib/es6/Venn.js +9 -9
  99. package/d3-chart/lib/es6/a11y/PlotA11yModule.js +2 -2
  100. package/d3-chart/lib/es6/a11y/PlotA11yView.js +2 -2
  101. package/d3-chart/lib/es6/component/ChartLegend/LegendFlex/LegendFlex.js +4 -4
  102. package/d3-chart/lib/es6/component/ChartLegend/LegendItem/LegendItem.js +17 -17
  103. package/d3-chart/lib/es6/component/ChartLegend/LegendTable/LegendTable.js +6 -6
  104. package/d3-chart/package.json +1 -1
  105. package/data-table/lib/cjs/Body.js +3 -3
  106. package/data-table/lib/cjs/DataTable.js +36 -36
  107. package/data-table/lib/es6/Body.js +3 -3
  108. package/data-table/lib/es6/DataTable.js +36 -36
  109. package/data-table/package.json +1 -1
  110. package/date-picker/lib/cjs/components/Calendar.js +21 -21
  111. package/date-picker/lib/cjs/components/DateRangeComparatorAbstract.js +29 -29
  112. package/date-picker/lib/cjs/components/InputTrigger.js +29 -29
  113. package/date-picker/lib/cjs/components/PickerAbstract.js +29 -29
  114. package/date-picker/lib/cjs/components/RangePickerAbstract.js +29 -29
  115. package/date-picker/lib/es6/components/Calendar.js +21 -21
  116. package/date-picker/lib/es6/components/DateRangeComparatorAbstract.js +29 -29
  117. package/date-picker/lib/es6/components/InputTrigger.js +29 -29
  118. package/date-picker/lib/es6/components/PickerAbstract.js +29 -29
  119. package/date-picker/lib/es6/components/RangePickerAbstract.js +29 -29
  120. package/date-picker/package.json +1 -1
  121. package/divider/lib/cjs/Divider.js +10 -10
  122. package/divider/lib/es6/Divider.js +10 -10
  123. package/divider/package.json +1 -1
  124. package/dot/lib/cjs/Dot.js +10 -10
  125. package/dot/lib/es6/Dot.js +10 -10
  126. package/dot/package.json +1 -1
  127. package/drag-and-drop/lib/cjs/DragAndDrop.js +16 -16
  128. package/drag-and-drop/lib/es6/DragAndDrop.js +16 -16
  129. package/drag-and-drop/package.json +1 -1
  130. package/dropdown/lib/cjs/Dropdown.js +15 -15
  131. package/dropdown/lib/es6/Dropdown.js +15 -15
  132. package/dropdown/package.json +1 -1
  133. package/dropdown-menu/lib/cjs/DropdownMenu.js +18 -18
  134. package/dropdown-menu/lib/es6/DropdownMenu.js +18 -18
  135. package/dropdown-menu/package.json +1 -1
  136. package/ellipsis/lib/cjs/Ellipsis.js +45 -39
  137. package/ellipsis/lib/cjs/Ellipsis.js.map +1 -1
  138. package/ellipsis/lib/es6/Ellipsis.js +45 -39
  139. package/ellipsis/lib/es6/Ellipsis.js.map +1 -1
  140. package/ellipsis/package.json +1 -1
  141. package/errors/lib/cjs/Error.js +9 -9
  142. package/errors/lib/es6/Error.js +9 -9
  143. package/errors/package.json +1 -1
  144. package/feature-popover/lib/cjs/FeaturePopover.js +11 -11
  145. package/feature-popover/lib/es6/FeaturePopover.js +11 -11
  146. package/feature-popover/package.json +1 -1
  147. package/feedback-form/lib/cjs/FeedbackForm.js +7 -7
  148. package/feedback-form/lib/cjs/component/checkbox-button/CheckboxButton.js +3 -3
  149. package/feedback-form/lib/cjs/component/feedback-rating/FeedbackRating.js +2 -2
  150. package/feedback-form/lib/cjs/component/slider-rating/SliderRating.js +6 -6
  151. package/feedback-form/lib/es6/FeedbackForm.js +7 -7
  152. package/feedback-form/lib/es6/component/checkbox-button/CheckboxButton.js +3 -3
  153. package/feedback-form/lib/es6/component/feedback-rating/FeedbackRating.js +2 -2
  154. package/feedback-form/lib/es6/component/slider-rating/SliderRating.js +6 -6
  155. package/feedback-form/package.json +1 -1
  156. package/flags/lib/cjs/Flags.js +3 -3
  157. package/flags/lib/es6/Flags.js +3 -3
  158. package/flags/lib/sprites/sprite@1x.css +256 -256
  159. package/flags/lib/sprites/sprite@2x.css +257 -257
  160. package/flags/package.json +1 -1
  161. package/flex-box/lib/cjs/Box/useBox.js +3 -3
  162. package/flex-box/lib/cjs/Flex/useFlex.js +3 -3
  163. package/flex-box/lib/cjs/invalid-state-box/InvalidStateBox.js +2 -2
  164. package/flex-box/lib/es6/Box/useBox.js +3 -3
  165. package/flex-box/lib/es6/Flex/useFlex.js +3 -3
  166. package/flex-box/lib/es6/invalid-state-box/InvalidStateBox.js +2 -2
  167. package/flex-box/package.json +1 -1
  168. package/format-text/lib/cjs/FormatText.js +5 -5
  169. package/format-text/lib/es6/FormatText.js +5 -5
  170. package/format-text/package.json +1 -1
  171. package/fullscreen-modal/lib/cjs/FullscreenModal.js +13 -13
  172. package/fullscreen-modal/lib/es6/FullscreenModal.js +13 -13
  173. package/fullscreen-modal/package.json +1 -1
  174. package/grid/lib/cjs/Grid.js +114 -114
  175. package/grid/lib/es6/Grid.js +114 -114
  176. package/grid/package.json +1 -1
  177. package/i18n-unplugin/package.json +1 -1
  178. package/icon/color/Confluence/l/index.js +4 -4
  179. package/icon/color/Confluence/l/index.mjs +4 -4
  180. package/icon/color/Confluence/m/index.js +4 -4
  181. package/icon/color/Confluence/m/index.mjs +4 -4
  182. package/icon/color/MetaColored/l/index.js +4 -4
  183. package/icon/color/MetaColored/l/index.mjs +4 -4
  184. package/icon/color/MetaColored/m/index.js +4 -4
  185. package/icon/color/MetaColored/m/index.mjs +4 -4
  186. package/icon/color/MicrosoftOffice/l/index.js +10 -10
  187. package/icon/color/MicrosoftOffice/l/index.mjs +10 -10
  188. package/icon/color/MicrosoftOffice/m/index.js +10 -10
  189. package/icon/color/MicrosoftOffice/m/index.mjs +10 -10
  190. package/icon/lib/cjs/Icon.js +5 -5
  191. package/icon/lib/es6/Icon.js +5 -5
  192. package/icon/package.json +1 -1
  193. package/icon/pay/Discover/l/index.js +1 -1
  194. package/icon/pay/Discover/l/index.mjs +1 -1
  195. package/icon/pay/Discover/m/index.js +1 -1
  196. package/icon/pay/Discover/m/index.mjs +1 -1
  197. package/icon/pay/JCB/l/index.js +10 -10
  198. package/icon/pay/JCB/l/index.mjs +10 -10
  199. package/icon/pay/JCB/m/index.js +10 -10
  200. package/icon/pay/JCB/m/index.mjs +10 -10
  201. package/icon/pay/Visa/l/index.js +2 -2
  202. package/icon/pay/Visa/l/index.mjs +2 -2
  203. package/icon/pay/Visa/m/index.js +2 -2
  204. package/icon/pay/Visa/m/index.mjs +2 -2
  205. package/illustration/lib/cjs/index.js +1 -1
  206. package/illustration/lib/es6/index.js +1 -1
  207. package/illustration/package.json +1 -1
  208. package/inline-edit/lib/cjs/InlineEdit.js +4 -4
  209. package/inline-edit/lib/es6/InlineEdit.js +4 -4
  210. package/inline-edit/package.json +1 -1
  211. package/inline-input/lib/cjs/InlineInput.js +14 -14
  212. package/inline-input/lib/es6/InlineInput.js +14 -14
  213. package/inline-input/package.json +1 -1
  214. package/input/lib/cjs/Input.js +17 -17
  215. package/input/lib/es6/Input.js +17 -17
  216. package/input/package.json +1 -1
  217. package/input-mask/lib/cjs/InputMask.js +6 -6
  218. package/input-mask/lib/es6/InputMask.js +6 -6
  219. package/input-mask/package.json +1 -1
  220. package/input-number/lib/cjs/InputNumber.js +9 -9
  221. package/input-number/lib/es6/InputNumber.js +9 -9
  222. package/input-number/package.json +1 -1
  223. package/input-tags/lib/cjs/InputTags.js +12 -12
  224. package/input-tags/lib/es6/InputTags.js +12 -12
  225. package/input-tags/package.json +1 -1
  226. package/link/lib/cjs/Link.js +12 -12
  227. package/link/lib/es6/Link.js +12 -12
  228. package/link/package.json +1 -1
  229. package/mini-chart/lib/cjs/component/score/Donut.js +9 -9
  230. package/mini-chart/lib/cjs/component/score/Line.js +17 -17
  231. package/mini-chart/lib/cjs/component/trend/Bar.js +7 -7
  232. package/mini-chart/lib/cjs/component/trend/Line.js +7 -7
  233. package/mini-chart/lib/es6/component/score/Donut.js +9 -9
  234. package/mini-chart/lib/es6/component/score/Line.js +17 -17
  235. package/mini-chart/lib/es6/component/trend/Bar.js +7 -7
  236. package/mini-chart/lib/es6/component/trend/Line.js +7 -7
  237. package/mini-chart/package.json +1 -1
  238. package/modal/lib/cjs/Modal.js +8 -8
  239. package/modal/lib/es6/Modal.js +8 -8
  240. package/modal/package.json +1 -1
  241. package/neighbor-location/package.json +1 -1
  242. package/notice/lib/cjs/Notice.js +14 -14
  243. package/notice/lib/es6/Notice.js +14 -14
  244. package/notice/package.json +1 -1
  245. package/notice-bubble/lib/cjs/NoticeBubble.js +15 -15
  246. package/notice-bubble/lib/es6/NoticeBubble.js +15 -15
  247. package/notice-bubble/package.json +1 -1
  248. package/notice-global/lib/cjs/NoticeGlobal.js +11 -11
  249. package/notice-global/lib/es6/NoticeGlobal.js +11 -11
  250. package/notice-global/package.json +1 -1
  251. package/outside-click/package.json +1 -1
  252. package/package.json +1 -1
  253. package/pagination/lib/cjs/Pagination.js +10 -10
  254. package/pagination/lib/es6/Pagination.js +10 -10
  255. package/pagination/package.json +1 -1
  256. package/pills/lib/cjs/Pills.js +13 -13
  257. package/pills/lib/es6/Pills.js +13 -13
  258. package/pills/package.json +1 -1
  259. package/popper/lib/cjs/Popper.js +9 -7
  260. package/popper/lib/cjs/Popper.js.map +1 -1
  261. package/popper/lib/es6/Popper.js +9 -7
  262. package/popper/lib/es6/Popper.js.map +1 -1
  263. package/popper/package.json +1 -1
  264. package/portal/package.json +1 -1
  265. package/product-head/lib/cjs/Info.js +4 -4
  266. package/product-head/lib/cjs/ProductHead.js +5 -5
  267. package/product-head/lib/cjs/Title.js +4 -4
  268. package/product-head/lib/es6/Info.js +4 -4
  269. package/product-head/lib/es6/ProductHead.js +5 -5
  270. package/product-head/lib/es6/Title.js +4 -4
  271. package/product-head/package.json +1 -1
  272. package/progress-bar/lib/cjs/ProgressBar.js +15 -15
  273. package/progress-bar/lib/es6/ProgressBar.js +15 -15
  274. package/progress-bar/package.json +1 -1
  275. package/radio/lib/cjs/Radio.js +16 -16
  276. package/radio/lib/es6/Radio.js +16 -16
  277. package/radio/package.json +1 -1
  278. package/scroll-area/lib/cjs/ScrollArea.js +21 -21
  279. package/scroll-area/lib/cjs/ScrollBar.js +6 -6
  280. package/scroll-area/lib/es6/ScrollArea.js +21 -21
  281. package/scroll-area/lib/es6/ScrollBar.js +6 -6
  282. package/scroll-area/package.json +1 -1
  283. package/select/lib/cjs/InputSearch.js +6 -6
  284. package/select/lib/cjs/Select.js +8 -8
  285. package/select/lib/es6/InputSearch.js +6 -6
  286. package/select/lib/es6/Select.js +8 -8
  287. package/select/package.json +1 -1
  288. package/side-panel/lib/cjs/SidePanel.js +16 -16
  289. package/side-panel/lib/es6/SidePanel.js +16 -16
  290. package/side-panel/package.json +1 -1
  291. package/skeleton/lib/cjs/Charts/Area.js +9 -9
  292. package/skeleton/lib/cjs/Charts/Bar.js +9 -9
  293. package/skeleton/lib/cjs/Charts/Bubble.js +9 -9
  294. package/skeleton/lib/cjs/Charts/CompactHorizontalBar.js +9 -9
  295. package/skeleton/lib/cjs/Charts/Donut.js +9 -9
  296. package/skeleton/lib/cjs/Charts/Histogram.js +9 -9
  297. package/skeleton/lib/cjs/Charts/Line.js +9 -9
  298. package/skeleton/lib/cjs/Charts/RadialTree.js +9 -9
  299. package/skeleton/lib/cjs/Charts/ScatterPlot.js +9 -9
  300. package/skeleton/lib/cjs/Charts/Venn.js +9 -9
  301. package/skeleton/lib/cjs/Skeleton.js +8 -8
  302. package/skeleton/lib/es6/Charts/Area.js +9 -9
  303. package/skeleton/lib/es6/Charts/Bar.js +9 -9
  304. package/skeleton/lib/es6/Charts/Bubble.js +9 -9
  305. package/skeleton/lib/es6/Charts/CompactHorizontalBar.js +9 -9
  306. package/skeleton/lib/es6/Charts/Donut.js +9 -9
  307. package/skeleton/lib/es6/Charts/Histogram.js +9 -9
  308. package/skeleton/lib/es6/Charts/Line.js +9 -9
  309. package/skeleton/lib/es6/Charts/RadialTree.js +9 -9
  310. package/skeleton/lib/es6/Charts/ScatterPlot.js +9 -9
  311. package/skeleton/lib/es6/Charts/Venn.js +9 -9
  312. package/skeleton/lib/es6/Skeleton.js +8 -8
  313. package/skeleton/package.json +1 -1
  314. package/slider/lib/cjs/Slider.js +8 -8
  315. package/slider/lib/es6/Slider.js +8 -8
  316. package/slider/package.json +1 -1
  317. package/spin/lib/cjs/Spin.js +13 -13
  318. package/spin/lib/es6/Spin.js +13 -13
  319. package/spin/package.json +1 -1
  320. package/spin-container/lib/cjs/SpinContainer.js +8 -8
  321. package/spin-container/lib/es6/SpinContainer.js +8 -8
  322. package/spin-container/package.json +1 -1
  323. package/sticky/lib/cjs/Sticky.js +2 -2
  324. package/sticky/lib/es6/Sticky.js +2 -2
  325. package/sticky/package.json +1 -1
  326. package/switch/lib/cjs/Switch.js +21 -21
  327. package/switch/lib/es6/Switch.js +21 -21
  328. package/switch/package.json +1 -1
  329. package/tab-line/lib/cjs/TabLine.js +13 -13
  330. package/tab-line/lib/es6/TabLine.js +13 -13
  331. package/tab-line/package.json +1 -1
  332. package/tab-panel/lib/cjs/TabPanel.js +8 -8
  333. package/tab-panel/lib/es6/TabPanel.js +8 -8
  334. package/tab-panel/package.json +1 -1
  335. package/tag/lib/cjs/Tag.js +23 -23
  336. package/tag/lib/es6/Tag.js +23 -23
  337. package/tag/package.json +1 -1
  338. package/textarea/lib/cjs/Textarea.js +8 -8
  339. package/textarea/lib/es6/Textarea.js +8 -8
  340. package/textarea/package.json +1 -1
  341. package/time-picker/lib/cjs/TimePicker.js +12 -12
  342. package/time-picker/lib/es6/TimePicker.js +12 -12
  343. package/time-picker/package.json +1 -1
  344. package/tooltip/lib/cjs/Tooltip.js +9 -9
  345. package/tooltip/lib/es6/Tooltip.js +9 -9
  346. package/tooltip/package.json +1 -1
  347. package/typography/lib/cjs/Blockquote.js +4 -4
  348. package/typography/lib/cjs/Hint.js +7 -7
  349. package/typography/lib/cjs/List.js +5 -5
  350. package/typography/lib/cjs/Text.js +34 -34
  351. package/typography/lib/es6/Blockquote.js +4 -4
  352. package/typography/lib/es6/Hint.js +7 -7
  353. package/typography/lib/es6/List.js +5 -5
  354. package/typography/lib/es6/Text.js +34 -34
  355. package/typography/package.json +1 -1
  356. package/utils/lib/components/invalid-state-pattern/InvalidStatePattern.js +2 -2
  357. package/utils/lib/components/invalid-state-pattern/InvalidStatePattern.mjs +2 -2
  358. package/utils/lib/focus-lock/focusBorders.d.ts +4 -3
  359. package/utils/lib/focus-lock/focusBorders.js +51 -40
  360. package/utils/lib/focus-lock/focusBorders.js.map +1 -1
  361. package/utils/lib/focus-lock/focusBorders.mjs +48 -38
  362. package/utils/lib/focus-lock/focusBorders.mjs.map +1 -1
  363. package/utils/lib/focus-lock/isFocusable.js +2 -0
  364. package/utils/lib/focus-lock/isFocusable.js.map +1 -1
  365. package/utils/lib/focus-lock/isFocusable.mjs +2 -0
  366. package/utils/lib/focus-lock/isFocusable.mjs.map +1 -1
  367. package/utils/lib/injectStyle.js +1 -1
  368. package/utils/lib/injectStyle.mjs +1 -1
  369. package/utils/lib/use/useFocusLock.js +13 -26
  370. package/utils/lib/use/useFocusLock.js.map +1 -1
  371. package/utils/lib/use/useFocusLock.mjs +14 -27
  372. package/utils/lib/use/useFocusLock.mjs.map +1 -1
  373. package/widget-empty/lib/cjs/WidgetEmpty.js +5 -5
  374. package/widget-empty/lib/es6/WidgetEmpty.js +5 -5
  375. package/widget-empty/package.json +1 -1
  376. package/wizard/lib/cjs/Wizard.js +12 -12
  377. package/wizard/lib/es6/Wizard.js +12 -12
  378. package/wizard/package.json +1 -1
  379. package/utils/lib/focus-lock/iframeBorders.d.ts +0 -3
  380. package/utils/lib/focus-lock/iframeBorders.js +0 -67
  381. package/utils/lib/focus-lock/iframeBorders.js.map +0 -1
  382. package/utils/lib/focus-lock/iframeBorders.mjs +0 -58
  383. package/utils/lib/focus-lock/iframeBorders.mjs.map +0 -1
@@ -1 +1 @@
1
- {"version":3,"file":"focusBorders.js","names":["focusBordersRefs","before","after","addFocusBorders","document","createElement","setAttribute","style","position","dataset","id","addEventListener","event","Promise","resolve","then","activeElement","relatedTarget","_focusBordersRefs$aft","focus","body","prepend","_focusBordersRefs$bef","append","exports","removeFocusBorders","_focusBordersRefs$bef2","_focusBordersRefs$aft2","remove","areFocusBordersPlacedCorrectly","children","length"],"sources":["../../src/focus-lock/focusBorders.ts"],"sourcesContent":["const focusBordersRefs: {\n before: HTMLElement | null;\n after: HTMLElement | null;\n} = { before: null, after: null };\n\nexport const addFocusBorders = () => {\n if (!focusBordersRefs.before) {\n focusBordersRefs.before = document.createElement('div');\n focusBordersRefs.before.setAttribute('tabindex', '0');\n focusBordersRefs.before.style.position = 'fixed';\n focusBordersRefs.before.dataset.id = '__intergalactic-focus-border-before';\n focusBordersRefs.before.addEventListener('focus', (event) => {\n Promise.resolve().then(() => {\n if (\n document.activeElement === focusBordersRefs.before &&\n event.relatedTarget !== focusBordersRefs.after && // prevent loop\n event.relatedTarget // prevent initial focus\n ) {\n focusBordersRefs.after?.focus();\n }\n });\n });\n document.body.prepend(focusBordersRefs.before);\n }\n if (!focusBordersRefs.after) {\n focusBordersRefs.after = document.createElement('div');\n focusBordersRefs.after.setAttribute('tabindex', '0');\n focusBordersRefs.after.dataset.id = '__intergalactic-focus-border-after';\n focusBordersRefs.after.style.position = 'fixed';\n focusBordersRefs.after.addEventListener('focus', (event) => {\n Promise.resolve().then(() => {\n if (\n document.activeElement === focusBordersRefs.after &&\n event.relatedTarget !== focusBordersRefs.before && // prevent loop\n event.relatedTarget // prevent initial focus\n ) {\n focusBordersRefs.before?.focus();\n }\n });\n });\n document.body.append(focusBordersRefs.after);\n }\n};\nexport const removeFocusBorders = () => {\n focusBordersRefs.before?.remove();\n focusBordersRefs.after?.remove();\n focusBordersRefs.before = null;\n focusBordersRefs.after = null;\n};\nexport const areFocusBordersPlacedCorrectly = () => {\n if (!focusBordersRefs.before || !focusBordersRefs.after) return true;\n if (document.body.children[0] !== focusBordersRefs.before) return false;\n if (document.body.children[document.body.children.length - 1] !== focusBordersRefs.after)\n return false;\n return true;\n};\n"],"mappings":"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"}
1
+ {"version":3,"file":"focusBorders.js","names":["_getFocusableIn","require","focusBordersRefs","Map","BEFORE_BORDER_ID","exports","AFTER_BORDER_ID","addFocusBorders","element","has","previousSibling","HTMLElement","dataset","id","before","document","createElement","after","set","setAttribute","style","position","addEventListener","event","Promise","resolve","then","_focusBordersRefs$get","_focusBordersRefs$get2","activeElement","get","relatedTarget","focusable","getFocusableIn","_focusable","length","focus","_focusable$","_focusBordersRefs$get3","_focusBordersRefs$get4","_focusable$2","_focusable2","elementParent","parentElement","insertBefore","append","removeFocusBorders","focusRefs","remove"],"sources":["../../src/focus-lock/focusBorders.ts"],"sourcesContent":["import { getFocusableIn } from './getFocusableIn';\n\nconst focusBordersRefs = new Map<HTMLElement, { before: HTMLElement; after: HTMLElement }>();\n\nexport const BEFORE_BORDER_ID = '__intergalactic-focus-border-before';\nexport const AFTER_BORDER_ID = '__intergalactic-focus-border-after';\n\nexport const addFocusBorders = (element: HTMLElement) => {\n if (\n !focusBordersRefs.has(element) &&\n !(\n element.previousSibling instanceof HTMLElement &&\n element.previousSibling.dataset.id === BEFORE_BORDER_ID\n )\n ) {\n const before = document.createElement('div');\n const after = document.createElement('div');\n\n focusBordersRefs.set(element, { before, after });\n\n before.setAttribute('tabindex', '0');\n before.style.position = 'fixed';\n before.dataset.id = BEFORE_BORDER_ID;\n before.addEventListener('focus', (event) => {\n Promise.resolve().then(() => {\n if (\n document.activeElement === focusBordersRefs.get(element)?.before &&\n event.relatedTarget !== focusBordersRefs.get(element)?.after && // prevent loop\n event.relatedTarget // prevent initial focus\n ) {\n const focusable = getFocusableIn(element);\n\n if (event.relatedTarget === focusable[0]) {\n focusable[focusable.length - 1]?.focus();\n } else {\n focusable[0]?.focus();\n }\n }\n });\n });\n\n after.setAttribute('tabindex', '0');\n after.style.position = 'fixed';\n after.dataset.id = AFTER_BORDER_ID;\n after.addEventListener('focus', (event) => {\n Promise.resolve().then(() => {\n if (\n document.activeElement === focusBordersRefs.get(element)?.after &&\n event.relatedTarget !== focusBordersRefs.get(element)?.before && // prevent loop\n event.relatedTarget // prevent initial focus\n ) {\n const focusable = getFocusableIn(element);\n\n if (event.relatedTarget === focusable[focusable.length - 1]) {\n focusable[0]?.focus();\n } else {\n focusable[focusable.length - 1]?.focus();\n }\n }\n });\n });\n\n const elementParent = element.parentElement;\n\n elementParent?.insertBefore(before, element);\n elementParent?.append(after);\n }\n};\nexport const removeFocusBorders = (element: HTMLElement) => {\n const focusRefs = focusBordersRefs.get(element);\n focusRefs?.before.remove();\n focusRefs?.after.remove();\n focusBordersRefs.delete(element);\n};\n"],"mappings":"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"}
@@ -1,56 +1,66 @@
1
- var focusBordersRefs = {
2
- before: null,
3
- after: null
4
- };
5
- export var addFocusBorders = function addFocusBorders() {
6
- if (!focusBordersRefs.before) {
7
- focusBordersRefs.before = document.createElement('div');
8
- focusBordersRefs.before.setAttribute('tabindex', '0');
9
- focusBordersRefs.before.style.position = 'fixed';
10
- focusBordersRefs.before.dataset.id = '__intergalactic-focus-border-before';
11
- focusBordersRefs.before.addEventListener('focus', function (event) {
1
+ import { getFocusableIn } from "./getFocusableIn.mjs";
2
+ var focusBordersRefs = new Map();
3
+ export var BEFORE_BORDER_ID = '__intergalactic-focus-border-before';
4
+ export var AFTER_BORDER_ID = '__intergalactic-focus-border-after';
5
+ export var addFocusBorders = function addFocusBorders(element) {
6
+ if (!focusBordersRefs.has(element) && !(element.previousSibling instanceof HTMLElement && element.previousSibling.dataset.id === BEFORE_BORDER_ID)) {
7
+ var before = document.createElement('div');
8
+ var after = document.createElement('div');
9
+ focusBordersRefs.set(element, {
10
+ before: before,
11
+ after: after
12
+ });
13
+ before.setAttribute('tabindex', '0');
14
+ before.style.position = 'fixed';
15
+ before.dataset.id = BEFORE_BORDER_ID;
16
+ before.addEventListener('focus', function (event) {
12
17
  Promise.resolve().then(function () {
13
- if (document.activeElement === focusBordersRefs.before && event.relatedTarget !== focusBordersRefs.after &&
18
+ var _focusBordersRefs$get, _focusBordersRefs$get2;
19
+ if (document.activeElement === ((_focusBordersRefs$get = focusBordersRefs.get(element)) === null || _focusBordersRefs$get === void 0 ? void 0 : _focusBordersRefs$get.before) && event.relatedTarget !== ((_focusBordersRefs$get2 = focusBordersRefs.get(element)) === null || _focusBordersRefs$get2 === void 0 ? void 0 : _focusBordersRefs$get2.after) &&
14
20
  // prevent loop
15
21
  event.relatedTarget // prevent initial focus
16
22
  ) {
17
- var _focusBordersRefs$aft;
18
- (_focusBordersRefs$aft = focusBordersRefs.after) === null || _focusBordersRefs$aft === void 0 ? void 0 : _focusBordersRefs$aft.focus();
23
+ var focusable = getFocusableIn(element);
24
+ if (event.relatedTarget === focusable[0]) {
25
+ var _focusable;
26
+ (_focusable = focusable[focusable.length - 1]) === null || _focusable === void 0 ? void 0 : _focusable.focus();
27
+ } else {
28
+ var _focusable$;
29
+ (_focusable$ = focusable[0]) === null || _focusable$ === void 0 ? void 0 : _focusable$.focus();
30
+ }
19
31
  }
20
32
  });
21
33
  });
22
- document.body.prepend(focusBordersRefs.before);
23
- }
24
- if (!focusBordersRefs.after) {
25
- focusBordersRefs.after = document.createElement('div');
26
- focusBordersRefs.after.setAttribute('tabindex', '0');
27
- focusBordersRefs.after.dataset.id = '__intergalactic-focus-border-after';
28
- focusBordersRefs.after.style.position = 'fixed';
29
- focusBordersRefs.after.addEventListener('focus', function (event) {
34
+ after.setAttribute('tabindex', '0');
35
+ after.style.position = 'fixed';
36
+ after.dataset.id = AFTER_BORDER_ID;
37
+ after.addEventListener('focus', function (event) {
30
38
  Promise.resolve().then(function () {
31
- if (document.activeElement === focusBordersRefs.after && event.relatedTarget !== focusBordersRefs.before &&
39
+ var _focusBordersRefs$get3, _focusBordersRefs$get4;
40
+ if (document.activeElement === ((_focusBordersRefs$get3 = focusBordersRefs.get(element)) === null || _focusBordersRefs$get3 === void 0 ? void 0 : _focusBordersRefs$get3.after) && event.relatedTarget !== ((_focusBordersRefs$get4 = focusBordersRefs.get(element)) === null || _focusBordersRefs$get4 === void 0 ? void 0 : _focusBordersRefs$get4.before) &&
32
41
  // prevent loop
33
42
  event.relatedTarget // prevent initial focus
34
43
  ) {
35
- var _focusBordersRefs$bef;
36
- (_focusBordersRefs$bef = focusBordersRefs.before) === null || _focusBordersRefs$bef === void 0 ? void 0 : _focusBordersRefs$bef.focus();
44
+ var focusable = getFocusableIn(element);
45
+ if (event.relatedTarget === focusable[focusable.length - 1]) {
46
+ var _focusable$2;
47
+ (_focusable$2 = focusable[0]) === null || _focusable$2 === void 0 ? void 0 : _focusable$2.focus();
48
+ } else {
49
+ var _focusable2;
50
+ (_focusable2 = focusable[focusable.length - 1]) === null || _focusable2 === void 0 ? void 0 : _focusable2.focus();
51
+ }
37
52
  }
38
53
  });
39
54
  });
40
- document.body.append(focusBordersRefs.after);
55
+ var elementParent = element.parentElement;
56
+ elementParent === null || elementParent === void 0 ? void 0 : elementParent.insertBefore(before, element);
57
+ elementParent === null || elementParent === void 0 ? void 0 : elementParent.append(after);
41
58
  }
42
59
  };
43
- export var removeFocusBorders = function removeFocusBorders() {
44
- var _focusBordersRefs$bef2, _focusBordersRefs$aft2;
45
- (_focusBordersRefs$bef2 = focusBordersRefs.before) === null || _focusBordersRefs$bef2 === void 0 ? void 0 : _focusBordersRefs$bef2.remove();
46
- (_focusBordersRefs$aft2 = focusBordersRefs.after) === null || _focusBordersRefs$aft2 === void 0 ? void 0 : _focusBordersRefs$aft2.remove();
47
- focusBordersRefs.before = null;
48
- focusBordersRefs.after = null;
49
- };
50
- export var areFocusBordersPlacedCorrectly = function areFocusBordersPlacedCorrectly() {
51
- if (!focusBordersRefs.before || !focusBordersRefs.after) return true;
52
- if (document.body.children[0] !== focusBordersRefs.before) return false;
53
- if (document.body.children[document.body.children.length - 1] !== focusBordersRefs.after) return false;
54
- return true;
60
+ export var removeFocusBorders = function removeFocusBorders(element) {
61
+ var focusRefs = focusBordersRefs.get(element);
62
+ focusRefs === null || focusRefs === void 0 ? void 0 : focusRefs.before.remove();
63
+ focusRefs === null || focusRefs === void 0 ? void 0 : focusRefs.after.remove();
64
+ focusBordersRefs["delete"](element);
55
65
  };
56
66
  //# sourceMappingURL=focusBorders.mjs.map
@@ -1 +1 @@
1
- {"version":3,"file":"focusBorders.mjs","names":["focusBordersRefs","before","after","addFocusBorders","document","createElement","setAttribute","style","position","dataset","id","addEventListener","event","Promise","resolve","then","activeElement","relatedTarget","_focusBordersRefs$aft","focus","body","prepend","_focusBordersRefs$bef","append","removeFocusBorders","_focusBordersRefs$bef2","_focusBordersRefs$aft2","remove","areFocusBordersPlacedCorrectly","children","length"],"sources":["../../src/focus-lock/focusBorders.ts"],"sourcesContent":["const focusBordersRefs: {\n before: HTMLElement | null;\n after: HTMLElement | null;\n} = { before: null, after: null };\n\nexport const addFocusBorders = () => {\n if (!focusBordersRefs.before) {\n focusBordersRefs.before = document.createElement('div');\n focusBordersRefs.before.setAttribute('tabindex', '0');\n focusBordersRefs.before.style.position = 'fixed';\n focusBordersRefs.before.dataset.id = '__intergalactic-focus-border-before';\n focusBordersRefs.before.addEventListener('focus', (event) => {\n Promise.resolve().then(() => {\n if (\n document.activeElement === focusBordersRefs.before &&\n event.relatedTarget !== focusBordersRefs.after && // prevent loop\n event.relatedTarget // prevent initial focus\n ) {\n focusBordersRefs.after?.focus();\n }\n });\n });\n document.body.prepend(focusBordersRefs.before);\n }\n if (!focusBordersRefs.after) {\n focusBordersRefs.after = document.createElement('div');\n focusBordersRefs.after.setAttribute('tabindex', '0');\n focusBordersRefs.after.dataset.id = '__intergalactic-focus-border-after';\n focusBordersRefs.after.style.position = 'fixed';\n focusBordersRefs.after.addEventListener('focus', (event) => {\n Promise.resolve().then(() => {\n if (\n document.activeElement === focusBordersRefs.after &&\n event.relatedTarget !== focusBordersRefs.before && // prevent loop\n event.relatedTarget // prevent initial focus\n ) {\n focusBordersRefs.before?.focus();\n }\n });\n });\n document.body.append(focusBordersRefs.after);\n }\n};\nexport const removeFocusBorders = () => {\n focusBordersRefs.before?.remove();\n focusBordersRefs.after?.remove();\n focusBordersRefs.before = null;\n focusBordersRefs.after = null;\n};\nexport const areFocusBordersPlacedCorrectly = () => {\n if (!focusBordersRefs.before || !focusBordersRefs.after) return true;\n if (document.body.children[0] !== focusBordersRefs.before) return false;\n if (document.body.children[document.body.children.length - 1] !== focusBordersRefs.after)\n return false;\n return true;\n};\n"],"mappings":"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"}
1
+ {"version":3,"file":"focusBorders.mjs","names":["getFocusableIn","focusBordersRefs","Map","BEFORE_BORDER_ID","AFTER_BORDER_ID","addFocusBorders","element","has","previousSibling","HTMLElement","dataset","id","before","document","createElement","after","set","setAttribute","style","position","addEventListener","event","Promise","resolve","then","_focusBordersRefs$get","_focusBordersRefs$get2","activeElement","get","relatedTarget","focusable","_focusable","length","focus","_focusable$","_focusBordersRefs$get3","_focusBordersRefs$get4","_focusable$2","_focusable2","elementParent","parentElement","insertBefore","append","removeFocusBorders","focusRefs","remove"],"sources":["../../src/focus-lock/focusBorders.ts"],"sourcesContent":["import { getFocusableIn } from './getFocusableIn';\n\nconst focusBordersRefs = new Map<HTMLElement, { before: HTMLElement; after: HTMLElement }>();\n\nexport const BEFORE_BORDER_ID = '__intergalactic-focus-border-before';\nexport const AFTER_BORDER_ID = '__intergalactic-focus-border-after';\n\nexport const addFocusBorders = (element: HTMLElement) => {\n if (\n !focusBordersRefs.has(element) &&\n !(\n element.previousSibling instanceof HTMLElement &&\n element.previousSibling.dataset.id === BEFORE_BORDER_ID\n )\n ) {\n const before = document.createElement('div');\n const after = document.createElement('div');\n\n focusBordersRefs.set(element, { before, after });\n\n before.setAttribute('tabindex', '0');\n before.style.position = 'fixed';\n before.dataset.id = BEFORE_BORDER_ID;\n before.addEventListener('focus', (event) => {\n Promise.resolve().then(() => {\n if (\n document.activeElement === focusBordersRefs.get(element)?.before &&\n event.relatedTarget !== focusBordersRefs.get(element)?.after && // prevent loop\n event.relatedTarget // prevent initial focus\n ) {\n const focusable = getFocusableIn(element);\n\n if (event.relatedTarget === focusable[0]) {\n focusable[focusable.length - 1]?.focus();\n } else {\n focusable[0]?.focus();\n }\n }\n });\n });\n\n after.setAttribute('tabindex', '0');\n after.style.position = 'fixed';\n after.dataset.id = AFTER_BORDER_ID;\n after.addEventListener('focus', (event) => {\n Promise.resolve().then(() => {\n if (\n document.activeElement === focusBordersRefs.get(element)?.after &&\n event.relatedTarget !== focusBordersRefs.get(element)?.before && // prevent loop\n event.relatedTarget // prevent initial focus\n ) {\n const focusable = getFocusableIn(element);\n\n if (event.relatedTarget === focusable[focusable.length - 1]) {\n focusable[0]?.focus();\n } else {\n focusable[focusable.length - 1]?.focus();\n }\n }\n });\n });\n\n const elementParent = element.parentElement;\n\n elementParent?.insertBefore(before, element);\n elementParent?.append(after);\n }\n};\nexport const removeFocusBorders = (element: HTMLElement) => {\n const focusRefs = focusBordersRefs.get(element);\n focusRefs?.before.remove();\n focusRefs?.after.remove();\n focusBordersRefs.delete(element);\n};\n"],"mappings":"AAAA,SAASA,cAAc,QAAQ,sBAAkB;AAEjD,IAAMC,gBAAgB,GAAG,IAAIC,GAAG,EAA4D;AAE5F,OAAO,IAAMC,gBAAgB,GAAG,qCAAqC;AACrE,OAAO,IAAMC,eAAe,GAAG,oCAAoC;AAEnE,OAAO,IAAMC,eAAe,GAAG,SAAlBA,eAAeA,CAAIC,OAAoB,EAAK;EACvD,IACE,CAACL,gBAAgB,CAACM,GAAG,CAACD,OAAO,CAAC,IAC9B,EACEA,OAAO,CAACE,eAAe,YAAYC,WAAW,IAC9CH,OAAO,CAACE,eAAe,CAACE,OAAO,CAACC,EAAE,KAAKR,gBAAgB,CACxD,EACD;IACA,IAAMS,MAAM,GAAGC,QAAQ,CAACC,aAAa,CAAC,KAAK,CAAC;IAC5C,IAAMC,KAAK,GAAGF,QAAQ,CAACC,aAAa,CAAC,KAAK,CAAC;IAE3Cb,gBAAgB,CAACe,GAAG,CAACV,OAAO,EAAE;MAAEM,MAAM,EAANA,MAAM;MAAEG,KAAK,EAALA;IAAM,CAAC,CAAC;IAEhDH,MAAM,CAACK,YAAY,CAAC,UAAU,EAAE,GAAG,CAAC;IACpCL,MAAM,CAACM,KAAK,CAACC,QAAQ,GAAG,OAAO;IAC/BP,MAAM,CAACF,OAAO,CAACC,EAAE,GAAGR,gBAAgB;IACpCS,MAAM,CAACQ,gBAAgB,CAAC,OAAO,EAAE,UAACC,KAAK,EAAK;MAC1CC,OAAO,CAACC,OAAO,EAAE,CAACC,IAAI,CAAC,YAAM;QAAA,IAAAC,qBAAA,EAAAC,sBAAA;QAC3B,IACEb,QAAQ,CAACc,aAAa,OAAAF,qBAAA,GAAKxB,gBAAgB,CAAC2B,GAAG,CAACtB,OAAO,CAAC,cAAAmB,qBAAA,uBAA7BA,qBAAA,CAA+Bb,MAAM,KAChES,KAAK,CAACQ,aAAa,OAAAH,sBAAA,GAAKzB,gBAAgB,CAAC2B,GAAG,CAACtB,OAAO,CAAC,cAAAoB,sBAAA,uBAA7BA,sBAAA,CAA+BX,KAAK;QAAI;QAChEM,KAAK,CAACQ,aAAa,CAAC;QAAA,EACpB;UACA,IAAMC,SAAS,GAAG9B,cAAc,CAACM,OAAO,CAAC;UAEzC,IAAIe,KAAK,CAACQ,aAAa,KAAKC,SAAS,CAAC,CAAC,CAAC,EAAE;YAAA,IAAAC,UAAA;YACxC,CAAAA,UAAA,GAAAD,SAAS,CAACA,SAAS,CAACE,MAAM,GAAG,CAAC,CAAC,cAAAD,UAAA,uBAA/BA,UAAA,CAAiCE,KAAK,EAAE;UAC1C,CAAC,MAAM;YAAA,IAAAC,WAAA;YACL,CAAAA,WAAA,GAAAJ,SAAS,CAAC,CAAC,CAAC,cAAAI,WAAA,uBAAZA,WAAA,CAAcD,KAAK,EAAE;UACvB;QACF;MACF,CAAC,CAAC;IACJ,CAAC,CAAC;IAEFlB,KAAK,CAACE,YAAY,CAAC,UAAU,EAAE,GAAG,CAAC;IACnCF,KAAK,CAACG,KAAK,CAACC,QAAQ,GAAG,OAAO;IAC9BJ,KAAK,CAACL,OAAO,CAACC,EAAE,GAAGP,eAAe;IAClCW,KAAK,CAACK,gBAAgB,CAAC,OAAO,EAAE,UAACC,KAAK,EAAK;MACzCC,OAAO,CAACC,OAAO,EAAE,CAACC,IAAI,CAAC,YAAM;QAAA,IAAAW,sBAAA,EAAAC,sBAAA;QAC3B,IACEvB,QAAQ,CAACc,aAAa,OAAAQ,sBAAA,GAAKlC,gBAAgB,CAAC2B,GAAG,CAACtB,OAAO,CAAC,cAAA6B,sBAAA,uBAA7BA,sBAAA,CAA+BpB,KAAK,KAC/DM,KAAK,CAACQ,aAAa,OAAAO,sBAAA,GAAKnC,gBAAgB,CAAC2B,GAAG,CAACtB,OAAO,CAAC,cAAA8B,sBAAA,uBAA7BA,sBAAA,CAA+BxB,MAAM;QAAI;QACjES,KAAK,CAACQ,aAAa,CAAC;QAAA,EACpB;UACA,IAAMC,SAAS,GAAG9B,cAAc,CAACM,OAAO,CAAC;UAEzC,IAAIe,KAAK,CAACQ,aAAa,KAAKC,SAAS,CAACA,SAAS,CAACE,MAAM,GAAG,CAAC,CAAC,EAAE;YAAA,IAAAK,YAAA;YAC3D,CAAAA,YAAA,GAAAP,SAAS,CAAC,CAAC,CAAC,cAAAO,YAAA,uBAAZA,YAAA,CAAcJ,KAAK,EAAE;UACvB,CAAC,MAAM;YAAA,IAAAK,WAAA;YACL,CAAAA,WAAA,GAAAR,SAAS,CAACA,SAAS,CAACE,MAAM,GAAG,CAAC,CAAC,cAAAM,WAAA,uBAA/BA,WAAA,CAAiCL,KAAK,EAAE;UAC1C;QACF;MACF,CAAC,CAAC;IACJ,CAAC,CAAC;IAEF,IAAMM,aAAa,GAAGjC,OAAO,CAACkC,aAAa;IAE3CD,aAAa,aAAbA,aAAa,uBAAbA,aAAa,CAAEE,YAAY,CAAC7B,MAAM,EAAEN,OAAO,CAAC;IAC5CiC,aAAa,aAAbA,aAAa,uBAAbA,aAAa,CAAEG,MAAM,CAAC3B,KAAK,CAAC;EAC9B;AACF,CAAC;AACD,OAAO,IAAM4B,kBAAkB,GAAG,SAArBA,kBAAkBA,CAAIrC,OAAoB,EAAK;EAC1D,IAAMsC,SAAS,GAAG3C,gBAAgB,CAAC2B,GAAG,CAACtB,OAAO,CAAC;EAC/CsC,SAAS,aAATA,SAAS,uBAATA,SAAS,CAAEhC,MAAM,CAACiC,MAAM,EAAE;EAC1BD,SAAS,aAATA,SAAS,uBAATA,SAAS,CAAE7B,KAAK,CAAC8B,MAAM,EAAE;EACzB5C,gBAAgB,UAAO,CAACK,OAAO,CAAC;AAClC,CAAC"}
@@ -6,6 +6,7 @@ Object.defineProperty(exports, "__esModule", {
6
6
  });
7
7
  exports.isFocusable = void 0;
8
8
  var _typeof2 = _interopRequireDefault(require("@babel/runtime/helpers/typeof"));
9
+ var _focusBorders = require("./focusBorders");
9
10
  var focusable = [['BUTTON'], ['SELECT'], ['TEXTAREA'], ['INPUT'], ['A', {
10
11
  has: 'href'
11
12
  }], ['AREA', {
@@ -30,6 +31,7 @@ var isFocusable = function isFocusable(node) {
30
31
  if (node.hasAttribute('disabled')) return false;
31
32
  if (node.getAttribute('tabindex') === '-1') return false;
32
33
  if (node.getAttribute('hidden') !== null) return false;
34
+ if (node.getAttribute('data-id') === _focusBorders.BEFORE_BORDER_ID || node.getAttribute('data-id') === _focusBorders.AFTER_BORDER_ID) return false;
33
35
  var tagName = node.tagName;
34
36
  for (var _i = 0, _focusable = focusable; _i < _focusable.length; _i++) {
35
37
  var params = _focusable[_i];
@@ -1 +1 @@
1
- {"version":3,"file":"isFocusable.js","names":["focusable","has","isFocusable","node","_node$ownerDocument$d","ownerDocument","defaultView","HTMLElement","SVGElement","hasAttribute","getAttribute","tagName","_i","_focusable","length","params","every","param","_typeof2","style","getComputedStyle","display","visibility","exports"],"sources":["../../src/focus-lock/isFocusable.ts"],"sourcesContent":["const focusable = [\n ['BUTTON'],\n ['SELECT'],\n ['TEXTAREA'],\n ['INPUT'],\n ['A', { has: 'href' }],\n ['AREA', { has: 'href' }],\n ['SUMMARY'],\n ['IFRAME'],\n ['OBJECT'],\n ['EMBED'],\n ['AUDIO', { has: 'controls' }],\n ['VIDEO', { has: 'controls' }],\n [{ has: 'tabindex' }],\n [{ has: 'contenteditable' }],\n [{ has: 'autofocus' }],\n];\n\nexport const isFocusable = (node: Node) => {\n if (!node) return false;\n if (!node.ownerDocument) return false;\n if (!node.ownerDocument.defaultView?.HTMLElement) return false;\n if (\n !(\n node instanceof node.ownerDocument.defaultView.HTMLElement ||\n node instanceof node.ownerDocument.defaultView.SVGElement\n )\n )\n return false;\n if (node.hasAttribute('disabled')) return false;\n if (node.getAttribute('tabindex') === '-1') return false;\n if (node.getAttribute('hidden') !== null) return false;\n const tagName = node.tagName;\n for (const params of focusable) {\n if (\n params.every((param) => {\n if (typeof param === 'string' && param === tagName) return true;\n if (typeof param === 'object' && param.has && node.hasAttribute(param.has)) return true;\n return false;\n })\n ) {\n const style = getComputedStyle(node);\n if (style.display === 'none' || style.visibility === 'hidden') return false;\n\n return true;\n }\n }\n return false;\n};\n"],"mappings":";;;;;;;;AAAA,IAAMA,SAAS,GAAG,CAChB,CAAC,QAAQ,CAAC,EACV,CAAC,QAAQ,CAAC,EACV,CAAC,UAAU,CAAC,EACZ,CAAC,OAAO,CAAC,EACT,CAAC,GAAG,EAAE;EAAEC,GAAG,EAAE;AAAO,CAAC,CAAC,EACtB,CAAC,MAAM,EAAE;EAAEA,GAAG,EAAE;AAAO,CAAC,CAAC,EACzB,CAAC,SAAS,CAAC,EACX,CAAC,QAAQ,CAAC,EACV,CAAC,QAAQ,CAAC,EACV,CAAC,OAAO,CAAC,EACT,CAAC,OAAO,EAAE;EAAEA,GAAG,EAAE;AAAW,CAAC,CAAC,EAC9B,CAAC,OAAO,EAAE;EAAEA,GAAG,EAAE;AAAW,CAAC,CAAC,EAC9B,CAAC;EAAEA,GAAG,EAAE;AAAW,CAAC,CAAC,EACrB,CAAC;EAAEA,GAAG,EAAE;AAAkB,CAAC,CAAC,EAC5B,CAAC;EAAEA,GAAG,EAAE;AAAY,CAAC,CAAC,CACvB;AAEM,IAAMC,WAAW,GAAG,SAAdA,WAAWA,CAAIC,IAAU,EAAK;EAAA,IAAAC,qBAAA;EACzC,IAAI,CAACD,IAAI,EAAE,OAAO,KAAK;EACvB,IAAI,CAACA,IAAI,CAACE,aAAa,EAAE,OAAO,KAAK;EACrC,IAAI,GAAAD,qBAAA,GAACD,IAAI,CAACE,aAAa,CAACC,WAAW,cAAAF,qBAAA,eAA9BA,qBAAA,CAAgCG,WAAW,GAAE,OAAO,KAAK;EAC9D,IACE,EACEJ,IAAI,YAAYA,IAAI,CAACE,aAAa,CAACC,WAAW,CAACC,WAAW,IAC1DJ,IAAI,YAAYA,IAAI,CAACE,aAAa,CAACC,WAAW,CAACE,UAAU,CAC1D,EAED,OAAO,KAAK;EACd,IAAIL,IAAI,CAACM,YAAY,CAAC,UAAU,CAAC,EAAE,OAAO,KAAK;EAC/C,IAAIN,IAAI,CAACO,YAAY,CAAC,UAAU,CAAC,KAAK,IAAI,EAAE,OAAO,KAAK;EACxD,IAAIP,IAAI,CAACO,YAAY,CAAC,QAAQ,CAAC,KAAK,IAAI,EAAE,OAAO,KAAK;EACtD,IAAMC,OAAO,GAAGR,IAAI,CAACQ,OAAO;EAC5B,SAAAC,EAAA,MAAAC,UAAA,GAAqBb,SAAS,EAAAY,EAAA,GAAAC,UAAA,CAAAC,MAAA,EAAAF,EAAA,IAAE;IAA3B,IAAMG,MAAM,GAAAF,UAAA,CAAAD,EAAA;IACf,IACEG,MAAM,CAACC,KAAK,CAAC,UAACC,KAAK,EAAK;MACtB,IAAI,OAAOA,KAAK,KAAK,QAAQ,IAAIA,KAAK,KAAKN,OAAO,EAAE,OAAO,IAAI;MAC/D,IAAI,IAAAO,QAAA,aAAOD,KAAK,MAAK,QAAQ,IAAIA,KAAK,CAAChB,GAAG,IAAIE,IAAI,CAACM,YAAY,CAACQ,KAAK,CAAChB,GAAG,CAAC,EAAE,OAAO,IAAI;MACvF,OAAO,KAAK;IACd,CAAC,CAAC,EACF;MACA,IAAMkB,KAAK,GAAGC,gBAAgB,CAACjB,IAAI,CAAC;MACpC,IAAIgB,KAAK,CAACE,OAAO,KAAK,MAAM,IAAIF,KAAK,CAACG,UAAU,KAAK,QAAQ,EAAE,OAAO,KAAK;MAE3E,OAAO,IAAI;IACb;EACF;EACA,OAAO,KAAK;AACd,CAAC;AAACC,OAAA,CAAArB,WAAA,GAAAA,WAAA"}
1
+ {"version":3,"file":"isFocusable.js","names":["_focusBorders","require","focusable","has","isFocusable","node","_node$ownerDocument$d","ownerDocument","defaultView","HTMLElement","SVGElement","hasAttribute","getAttribute","BEFORE_BORDER_ID","AFTER_BORDER_ID","tagName","_i","_focusable","length","params","every","param","_typeof2","style","getComputedStyle","display","visibility","exports"],"sources":["../../src/focus-lock/isFocusable.ts"],"sourcesContent":["import { AFTER_BORDER_ID, BEFORE_BORDER_ID } from './focusBorders';\n\nconst focusable = [\n ['BUTTON'],\n ['SELECT'],\n ['TEXTAREA'],\n ['INPUT'],\n ['A', { has: 'href' }],\n ['AREA', { has: 'href' }],\n ['SUMMARY'],\n ['IFRAME'],\n ['OBJECT'],\n ['EMBED'],\n ['AUDIO', { has: 'controls' }],\n ['VIDEO', { has: 'controls' }],\n [{ has: 'tabindex' }],\n [{ has: 'contenteditable' }],\n [{ has: 'autofocus' }],\n];\n\nexport const isFocusable = (node: Node) => {\n if (!node) return false;\n if (!node.ownerDocument) return false;\n if (!node.ownerDocument.defaultView?.HTMLElement) return false;\n if (\n !(\n node instanceof node.ownerDocument.defaultView.HTMLElement ||\n node instanceof node.ownerDocument.defaultView.SVGElement\n )\n )\n return false;\n if (node.hasAttribute('disabled')) return false;\n if (node.getAttribute('tabindex') === '-1') return false;\n if (node.getAttribute('hidden') !== null) return false;\n if (\n node.getAttribute('data-id') === BEFORE_BORDER_ID ||\n node.getAttribute('data-id') === AFTER_BORDER_ID\n )\n return false;\n const tagName = node.tagName;\n for (const params of focusable) {\n if (\n params.every((param) => {\n if (typeof param === 'string' && param === tagName) return true;\n if (typeof param === 'object' && param.has && node.hasAttribute(param.has)) return true;\n return false;\n })\n ) {\n const style = getComputedStyle(node);\n if (style.display === 'none' || style.visibility === 'hidden') return false;\n\n return true;\n }\n }\n return false;\n};\n"],"mappings":";;;;;;;;AAAA,IAAAA,aAAA,GAAAC,OAAA;AAEA,IAAMC,SAAS,GAAG,CAChB,CAAC,QAAQ,CAAC,EACV,CAAC,QAAQ,CAAC,EACV,CAAC,UAAU,CAAC,EACZ,CAAC,OAAO,CAAC,EACT,CAAC,GAAG,EAAE;EAAEC,GAAG,EAAE;AAAO,CAAC,CAAC,EACtB,CAAC,MAAM,EAAE;EAAEA,GAAG,EAAE;AAAO,CAAC,CAAC,EACzB,CAAC,SAAS,CAAC,EACX,CAAC,QAAQ,CAAC,EACV,CAAC,QAAQ,CAAC,EACV,CAAC,OAAO,CAAC,EACT,CAAC,OAAO,EAAE;EAAEA,GAAG,EAAE;AAAW,CAAC,CAAC,EAC9B,CAAC,OAAO,EAAE;EAAEA,GAAG,EAAE;AAAW,CAAC,CAAC,EAC9B,CAAC;EAAEA,GAAG,EAAE;AAAW,CAAC,CAAC,EACrB,CAAC;EAAEA,GAAG,EAAE;AAAkB,CAAC,CAAC,EAC5B,CAAC;EAAEA,GAAG,EAAE;AAAY,CAAC,CAAC,CACvB;AAEM,IAAMC,WAAW,GAAG,SAAdA,WAAWA,CAAIC,IAAU,EAAK;EAAA,IAAAC,qBAAA;EACzC,IAAI,CAACD,IAAI,EAAE,OAAO,KAAK;EACvB,IAAI,CAACA,IAAI,CAACE,aAAa,EAAE,OAAO,KAAK;EACrC,IAAI,GAAAD,qBAAA,GAACD,IAAI,CAACE,aAAa,CAACC,WAAW,cAAAF,qBAAA,eAA9BA,qBAAA,CAAgCG,WAAW,GAAE,OAAO,KAAK;EAC9D,IACE,EACEJ,IAAI,YAAYA,IAAI,CAACE,aAAa,CAACC,WAAW,CAACC,WAAW,IAC1DJ,IAAI,YAAYA,IAAI,CAACE,aAAa,CAACC,WAAW,CAACE,UAAU,CAC1D,EAED,OAAO,KAAK;EACd,IAAIL,IAAI,CAACM,YAAY,CAAC,UAAU,CAAC,EAAE,OAAO,KAAK;EAC/C,IAAIN,IAAI,CAACO,YAAY,CAAC,UAAU,CAAC,KAAK,IAAI,EAAE,OAAO,KAAK;EACxD,IAAIP,IAAI,CAACO,YAAY,CAAC,QAAQ,CAAC,KAAK,IAAI,EAAE,OAAO,KAAK;EACtD,IACEP,IAAI,CAACO,YAAY,CAAC,SAAS,CAAC,KAAKC,8BAAgB,IACjDR,IAAI,CAACO,YAAY,CAAC,SAAS,CAAC,KAAKE,6BAAe,EAEhD,OAAO,KAAK;EACd,IAAMC,OAAO,GAAGV,IAAI,CAACU,OAAO;EAC5B,SAAAC,EAAA,MAAAC,UAAA,GAAqBf,SAAS,EAAAc,EAAA,GAAAC,UAAA,CAAAC,MAAA,EAAAF,EAAA,IAAE;IAA3B,IAAMG,MAAM,GAAAF,UAAA,CAAAD,EAAA;IACf,IACEG,MAAM,CAACC,KAAK,CAAC,UAACC,KAAK,EAAK;MACtB,IAAI,OAAOA,KAAK,KAAK,QAAQ,IAAIA,KAAK,KAAKN,OAAO,EAAE,OAAO,IAAI;MAC/D,IAAI,IAAAO,QAAA,aAAOD,KAAK,MAAK,QAAQ,IAAIA,KAAK,CAAClB,GAAG,IAAIE,IAAI,CAACM,YAAY,CAACU,KAAK,CAAClB,GAAG,CAAC,EAAE,OAAO,IAAI;MACvF,OAAO,KAAK;IACd,CAAC,CAAC,EACF;MACA,IAAMoB,KAAK,GAAGC,gBAAgB,CAACnB,IAAI,CAAC;MACpC,IAAIkB,KAAK,CAACE,OAAO,KAAK,MAAM,IAAIF,KAAK,CAACG,UAAU,KAAK,QAAQ,EAAE,OAAO,KAAK;MAE3E,OAAO,IAAI;IACb;EACF;EACA,OAAO,KAAK;AACd,CAAC;AAACC,OAAA,CAAAvB,WAAA,GAAAA,WAAA"}
@@ -1,4 +1,5 @@
1
1
  import _typeof from "@babel/runtime/helpers/typeof";
2
+ import { AFTER_BORDER_ID, BEFORE_BORDER_ID } from "./focusBorders.mjs";
2
3
  var focusable = [['BUTTON'], ['SELECT'], ['TEXTAREA'], ['INPUT'], ['A', {
3
4
  has: 'href'
4
5
  }], ['AREA', {
@@ -23,6 +24,7 @@ export var isFocusable = function isFocusable(node) {
23
24
  if (node.hasAttribute('disabled')) return false;
24
25
  if (node.getAttribute('tabindex') === '-1') return false;
25
26
  if (node.getAttribute('hidden') !== null) return false;
27
+ if (node.getAttribute('data-id') === BEFORE_BORDER_ID || node.getAttribute('data-id') === AFTER_BORDER_ID) return false;
26
28
  var tagName = node.tagName;
27
29
  for (var _i = 0, _focusable = focusable; _i < _focusable.length; _i++) {
28
30
  var params = _focusable[_i];
@@ -1 +1 @@
1
- {"version":3,"file":"isFocusable.mjs","names":["focusable","has","isFocusable","node","_node$ownerDocument$d","ownerDocument","defaultView","HTMLElement","SVGElement","hasAttribute","getAttribute","tagName","_i","_focusable","length","params","every","param","_typeof","style","getComputedStyle","display","visibility"],"sources":["../../src/focus-lock/isFocusable.ts"],"sourcesContent":["const focusable = [\n ['BUTTON'],\n ['SELECT'],\n ['TEXTAREA'],\n ['INPUT'],\n ['A', { has: 'href' }],\n ['AREA', { has: 'href' }],\n ['SUMMARY'],\n ['IFRAME'],\n ['OBJECT'],\n ['EMBED'],\n ['AUDIO', { has: 'controls' }],\n ['VIDEO', { has: 'controls' }],\n [{ has: 'tabindex' }],\n [{ has: 'contenteditable' }],\n [{ has: 'autofocus' }],\n];\n\nexport const isFocusable = (node: Node) => {\n if (!node) return false;\n if (!node.ownerDocument) return false;\n if (!node.ownerDocument.defaultView?.HTMLElement) return false;\n if (\n !(\n node instanceof node.ownerDocument.defaultView.HTMLElement ||\n node instanceof node.ownerDocument.defaultView.SVGElement\n )\n )\n return false;\n if (node.hasAttribute('disabled')) return false;\n if (node.getAttribute('tabindex') === '-1') return false;\n if (node.getAttribute('hidden') !== null) return false;\n const tagName = node.tagName;\n for (const params of focusable) {\n if (\n params.every((param) => {\n if (typeof param === 'string' && param === tagName) return true;\n if (typeof param === 'object' && param.has && node.hasAttribute(param.has)) return true;\n return false;\n })\n ) {\n const style = getComputedStyle(node);\n if (style.display === 'none' || style.visibility === 'hidden') return false;\n\n return true;\n }\n }\n return false;\n};\n"],"mappings":";AAAA,IAAMA,SAAS,GAAG,CAChB,CAAC,QAAQ,CAAC,EACV,CAAC,QAAQ,CAAC,EACV,CAAC,UAAU,CAAC,EACZ,CAAC,OAAO,CAAC,EACT,CAAC,GAAG,EAAE;EAAEC,GAAG,EAAE;AAAO,CAAC,CAAC,EACtB,CAAC,MAAM,EAAE;EAAEA,GAAG,EAAE;AAAO,CAAC,CAAC,EACzB,CAAC,SAAS,CAAC,EACX,CAAC,QAAQ,CAAC,EACV,CAAC,QAAQ,CAAC,EACV,CAAC,OAAO,CAAC,EACT,CAAC,OAAO,EAAE;EAAEA,GAAG,EAAE;AAAW,CAAC,CAAC,EAC9B,CAAC,OAAO,EAAE;EAAEA,GAAG,EAAE;AAAW,CAAC,CAAC,EAC9B,CAAC;EAAEA,GAAG,EAAE;AAAW,CAAC,CAAC,EACrB,CAAC;EAAEA,GAAG,EAAE;AAAkB,CAAC,CAAC,EAC5B,CAAC;EAAEA,GAAG,EAAE;AAAY,CAAC,CAAC,CACvB;AAED,OAAO,IAAMC,WAAW,GAAG,SAAdA,WAAWA,CAAIC,IAAU,EAAK;EAAA,IAAAC,qBAAA;EACzC,IAAI,CAACD,IAAI,EAAE,OAAO,KAAK;EACvB,IAAI,CAACA,IAAI,CAACE,aAAa,EAAE,OAAO,KAAK;EACrC,IAAI,GAAAD,qBAAA,GAACD,IAAI,CAACE,aAAa,CAACC,WAAW,cAAAF,qBAAA,eAA9BA,qBAAA,CAAgCG,WAAW,GAAE,OAAO,KAAK;EAC9D,IACE,EACEJ,IAAI,YAAYA,IAAI,CAACE,aAAa,CAACC,WAAW,CAACC,WAAW,IAC1DJ,IAAI,YAAYA,IAAI,CAACE,aAAa,CAACC,WAAW,CAACE,UAAU,CAC1D,EAED,OAAO,KAAK;EACd,IAAIL,IAAI,CAACM,YAAY,CAAC,UAAU,CAAC,EAAE,OAAO,KAAK;EAC/C,IAAIN,IAAI,CAACO,YAAY,CAAC,UAAU,CAAC,KAAK,IAAI,EAAE,OAAO,KAAK;EACxD,IAAIP,IAAI,CAACO,YAAY,CAAC,QAAQ,CAAC,KAAK,IAAI,EAAE,OAAO,KAAK;EACtD,IAAMC,OAAO,GAAGR,IAAI,CAACQ,OAAO;EAC5B,SAAAC,EAAA,MAAAC,UAAA,GAAqBb,SAAS,EAAAY,EAAA,GAAAC,UAAA,CAAAC,MAAA,EAAAF,EAAA,IAAE;IAA3B,IAAMG,MAAM,GAAAF,UAAA,CAAAD,EAAA;IACf,IACEG,MAAM,CAACC,KAAK,CAAC,UAACC,KAAK,EAAK;MACtB,IAAI,OAAOA,KAAK,KAAK,QAAQ,IAAIA,KAAK,KAAKN,OAAO,EAAE,OAAO,IAAI;MAC/D,IAAIO,OAAA,CAAOD,KAAK,MAAK,QAAQ,IAAIA,KAAK,CAAChB,GAAG,IAAIE,IAAI,CAACM,YAAY,CAACQ,KAAK,CAAChB,GAAG,CAAC,EAAE,OAAO,IAAI;MACvF,OAAO,KAAK;IACd,CAAC,CAAC,EACF;MACA,IAAMkB,KAAK,GAAGC,gBAAgB,CAACjB,IAAI,CAAC;MACpC,IAAIgB,KAAK,CAACE,OAAO,KAAK,MAAM,IAAIF,KAAK,CAACG,UAAU,KAAK,QAAQ,EAAE,OAAO,KAAK;MAE3E,OAAO,IAAI;IACb;EACF;EACA,OAAO,KAAK;AACd,CAAC"}
1
+ {"version":3,"file":"isFocusable.mjs","names":["AFTER_BORDER_ID","BEFORE_BORDER_ID","focusable","has","isFocusable","node","_node$ownerDocument$d","ownerDocument","defaultView","HTMLElement","SVGElement","hasAttribute","getAttribute","tagName","_i","_focusable","length","params","every","param","_typeof","style","getComputedStyle","display","visibility"],"sources":["../../src/focus-lock/isFocusable.ts"],"sourcesContent":["import { AFTER_BORDER_ID, BEFORE_BORDER_ID } from './focusBorders';\n\nconst focusable = [\n ['BUTTON'],\n ['SELECT'],\n ['TEXTAREA'],\n ['INPUT'],\n ['A', { has: 'href' }],\n ['AREA', { has: 'href' }],\n ['SUMMARY'],\n ['IFRAME'],\n ['OBJECT'],\n ['EMBED'],\n ['AUDIO', { has: 'controls' }],\n ['VIDEO', { has: 'controls' }],\n [{ has: 'tabindex' }],\n [{ has: 'contenteditable' }],\n [{ has: 'autofocus' }],\n];\n\nexport const isFocusable = (node: Node) => {\n if (!node) return false;\n if (!node.ownerDocument) return false;\n if (!node.ownerDocument.defaultView?.HTMLElement) return false;\n if (\n !(\n node instanceof node.ownerDocument.defaultView.HTMLElement ||\n node instanceof node.ownerDocument.defaultView.SVGElement\n )\n )\n return false;\n if (node.hasAttribute('disabled')) return false;\n if (node.getAttribute('tabindex') === '-1') return false;\n if (node.getAttribute('hidden') !== null) return false;\n if (\n node.getAttribute('data-id') === BEFORE_BORDER_ID ||\n node.getAttribute('data-id') === AFTER_BORDER_ID\n )\n return false;\n const tagName = node.tagName;\n for (const params of focusable) {\n if (\n params.every((param) => {\n if (typeof param === 'string' && param === tagName) return true;\n if (typeof param === 'object' && param.has && node.hasAttribute(param.has)) return true;\n return false;\n })\n ) {\n const style = getComputedStyle(node);\n if (style.display === 'none' || style.visibility === 'hidden') return false;\n\n return true;\n }\n }\n return false;\n};\n"],"mappings":";AAAA,SAASA,eAAe,EAAEC,gBAAgB,QAAQ,oBAAgB;AAElE,IAAMC,SAAS,GAAG,CAChB,CAAC,QAAQ,CAAC,EACV,CAAC,QAAQ,CAAC,EACV,CAAC,UAAU,CAAC,EACZ,CAAC,OAAO,CAAC,EACT,CAAC,GAAG,EAAE;EAAEC,GAAG,EAAE;AAAO,CAAC,CAAC,EACtB,CAAC,MAAM,EAAE;EAAEA,GAAG,EAAE;AAAO,CAAC,CAAC,EACzB,CAAC,SAAS,CAAC,EACX,CAAC,QAAQ,CAAC,EACV,CAAC,QAAQ,CAAC,EACV,CAAC,OAAO,CAAC,EACT,CAAC,OAAO,EAAE;EAAEA,GAAG,EAAE;AAAW,CAAC,CAAC,EAC9B,CAAC,OAAO,EAAE;EAAEA,GAAG,EAAE;AAAW,CAAC,CAAC,EAC9B,CAAC;EAAEA,GAAG,EAAE;AAAW,CAAC,CAAC,EACrB,CAAC;EAAEA,GAAG,EAAE;AAAkB,CAAC,CAAC,EAC5B,CAAC;EAAEA,GAAG,EAAE;AAAY,CAAC,CAAC,CACvB;AAED,OAAO,IAAMC,WAAW,GAAG,SAAdA,WAAWA,CAAIC,IAAU,EAAK;EAAA,IAAAC,qBAAA;EACzC,IAAI,CAACD,IAAI,EAAE,OAAO,KAAK;EACvB,IAAI,CAACA,IAAI,CAACE,aAAa,EAAE,OAAO,KAAK;EACrC,IAAI,GAAAD,qBAAA,GAACD,IAAI,CAACE,aAAa,CAACC,WAAW,cAAAF,qBAAA,eAA9BA,qBAAA,CAAgCG,WAAW,GAAE,OAAO,KAAK;EAC9D,IACE,EACEJ,IAAI,YAAYA,IAAI,CAACE,aAAa,CAACC,WAAW,CAACC,WAAW,IAC1DJ,IAAI,YAAYA,IAAI,CAACE,aAAa,CAACC,WAAW,CAACE,UAAU,CAC1D,EAED,OAAO,KAAK;EACd,IAAIL,IAAI,CAACM,YAAY,CAAC,UAAU,CAAC,EAAE,OAAO,KAAK;EAC/C,IAAIN,IAAI,CAACO,YAAY,CAAC,UAAU,CAAC,KAAK,IAAI,EAAE,OAAO,KAAK;EACxD,IAAIP,IAAI,CAACO,YAAY,CAAC,QAAQ,CAAC,KAAK,IAAI,EAAE,OAAO,KAAK;EACtD,IACEP,IAAI,CAACO,YAAY,CAAC,SAAS,CAAC,KAAKX,gBAAgB,IACjDI,IAAI,CAACO,YAAY,CAAC,SAAS,CAAC,KAAKZ,eAAe,EAEhD,OAAO,KAAK;EACd,IAAMa,OAAO,GAAGR,IAAI,CAACQ,OAAO;EAC5B,SAAAC,EAAA,MAAAC,UAAA,GAAqBb,SAAS,EAAAY,EAAA,GAAAC,UAAA,CAAAC,MAAA,EAAAF,EAAA,IAAE;IAA3B,IAAMG,MAAM,GAAAF,UAAA,CAAAD,EAAA;IACf,IACEG,MAAM,CAACC,KAAK,CAAC,UAACC,KAAK,EAAK;MACtB,IAAI,OAAOA,KAAK,KAAK,QAAQ,IAAIA,KAAK,KAAKN,OAAO,EAAE,OAAO,IAAI;MAC/D,IAAIO,OAAA,CAAOD,KAAK,MAAK,QAAQ,IAAIA,KAAK,CAAChB,GAAG,IAAIE,IAAI,CAACM,YAAY,CAACQ,KAAK,CAAChB,GAAG,CAAC,EAAE,OAAO,IAAI;MACvF,OAAO,KAAK;IACd,CAAC,CAAC,EACF;MACA,IAAMkB,KAAK,GAAGC,gBAAgB,CAACjB,IAAI,CAAC;MACpC,IAAIgB,KAAK,CAACE,OAAO,KAAK,MAAM,IAAIF,KAAK,CAACG,UAAU,KAAK,QAAQ,EAAE,OAAO,KAAK;MAE3E,OAAO,IAAI;IACb;EACF;EACA,OAAO,KAAK;AACd,CAAC"}
@@ -30,7 +30,7 @@ function injectStyle(css) {
30
30
  sh = prevSh;
31
31
  } else {
32
32
  // @ts-ignore
33
- var version = "4.41.0";
33
+ var version = "4.42.0";
34
34
  sh = document.createElement('style');
35
35
  sh.setAttribute('data-ui-v', version);
36
36
  sh.classList.add(selectorClass);
@@ -23,7 +23,7 @@ function injectStyle(css) {
23
23
  sh = prevSh;
24
24
  } else {
25
25
  // @ts-ignore
26
- var version = "4.41.0";
26
+ var version = "4.42.0";
27
27
  sh = document.createElement('style');
28
28
  sh.setAttribute('data-ui-v', version);
29
29
  sh.classList.add(selectorClass);
@@ -27,8 +27,6 @@ var _isFocusInside = require("../focus-lock/isFocusInside");
27
27
  var _setFocus = require("../focus-lock/setFocus");
28
28
  var _getFocusableIn = require("../focus-lock/getFocusableIn");
29
29
  var _focusBorders = require("../focus-lock/focusBorders");
30
- var _iframeBorders = require("../focus-lock/iframeBorders");
31
- var focusBordersConsumers = new Set();
32
30
  var syntheticEvents = {
33
31
  blur: 'focusout-intergalactic-focus-lock-synthetic',
34
32
  keydown: 'keydown-intergalactic-focus-lock-synthetic'
@@ -58,28 +56,6 @@ var makeFocusLockSyntheticEvent = function makeFocusLockSyntheticEvent(baseEvent
58
56
  return syntheticEvent;
59
57
  };
60
58
  exports.makeFocusLockSyntheticEvent = makeFocusLockSyntheticEvent;
61
- var useFocusBorders = function useFocusBorders(React, disabled, trapRef) {
62
- useUniqueIdHookMock(React);
63
- React.useEffect(function () {
64
- var id = getUniqueId('focus-borders-consumer');
65
- if (!disabled) {
66
- focusBordersConsumers.add(id);
67
- }
68
- if (!(0, _focusBorders.areFocusBordersPlacedCorrectly)()) (0, _focusBorders.removeFocusBorders)();
69
- if (!(0, _iframeBorders.areIframeBordersPlacedCorrectly)(trapRef === null || trapRef === void 0 ? void 0 : trapRef.current)) (0, _iframeBorders.removeIframeBorders)();
70
- if (focusBordersConsumers.size > 0) {
71
- (0, _focusBorders.addFocusBorders)();
72
- (0, _iframeBorders.addIframeBorders)(trapRef === null || trapRef === void 0 ? void 0 : trapRef.current);
73
- }
74
- return function () {
75
- focusBordersConsumers["delete"](id);
76
- if (focusBordersConsumers.size === 0) {
77
- (0, _focusBorders.removeFocusBorders)();
78
- (0, _iframeBorders.removeIframeBorders)();
79
- }
80
- };
81
- }, [disabled]);
82
- };
83
59
  var uniqueId = 0;
84
60
  var getUniqueId = function getUniqueId(prefix) {
85
61
  return "".concat(prefix, "-").concat(Math.random().toString(36).slice(2), "-").concat(uniqueId++);
@@ -103,6 +79,7 @@ var getUniqueId = function getUniqueId(prefix) {
103
79
  * Version update `1 -> 2`. Fixed call `safeMoveFocusInside` in `handleFocusIn` with correct second parameter (focusCameFrom instead of event.target)
104
80
  * Version update `2 -> 3`. Fixed React version isolation in nested hooks (`useFocusBorders`, `useUniqueId`).
105
81
  * Version update `3 -> 4`. Fixed lock for correct working with iframes in modal
82
+ * Version update `4 -> 5`. Changed placements for border - now they wrap trap node
106
83
  *
107
84
  * Initially (for a several versions) key was `__intergalactic_focus_lock_hook_`.
108
85
  * Making it respect react version required to change key. So key was changed to `__intergalactic_focus_lock_hook_react_v_respectful`.
@@ -115,7 +92,7 @@ var getUniqueId = function getUniqueId(prefix) {
115
92
  * If new update requires to remove some hooks – add mocks instead of them.
116
93
  * 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.
117
94
  */
118
- var focusLockVersion = 4;
95
+ var focusLockVersion = 5;
119
96
  var globalFocusLockHookKey = '__intergalactic_focus_lock_hook_react_v_respectful';
120
97
  var focusLockAllTraps = new Set();
121
98
  var focusLockUsedInMountedComponents = new Set();
@@ -138,7 +115,17 @@ var useFocusLockHook = function useFocusLockHook(React, trapRef, autoFocus, retu
138
115
  var disabled = arguments.length > 4 && arguments[4] !== undefined ? arguments[4] : false;
139
116
  var focusMaster = arguments.length > 5 && arguments[5] !== undefined ? arguments[5] : false;
140
117
  var onFocusOut = arguments.length > 6 ? arguments[6] : undefined;
141
- useFocusBorders(React, disabled, trapRef);
118
+ React.useEffect(function () {
119
+ var trapNode = trapRef.current;
120
+ if (trapNode && !disabled && (0, _getFocusableIn.getFocusableIn)(trapNode).length > 0) {
121
+ (0, _focusBorders.addFocusBorders)(trapNode);
122
+ }
123
+ return function () {
124
+ if (trapNode) {
125
+ (0, _focusBorders.removeFocusBorders)(trapNode);
126
+ }
127
+ };
128
+ }, [disabled]);
142
129
  var autoTriggerRef = React.useRef(null);
143
130
  var lastUserInteractionRef = React.useRef(undefined);
144
131
  var handleFocusOut = React.useCallback(function (event) {
@@ -1 +1 @@
1
- {"version":3,"file":"useFocusLock.js","names":["_canUseDOM","_interopRequireDefault","require","_react","_isFocusInside","_setFocus","_getFocusableIn","_focusBorders","_iframeBorders","focusBordersConsumers","Set","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","id","getUniqueId","add","areFocusBordersPlacedCorrectly","removeFocusBorders","areIframeBordersPlacedCorrectly","current","removeIframeBorders","size","addFocusBorders","addIframeBorders","uniqueId","prefix","Math","random","toString","slice","focusLockVersion","globalFocusLockHookKey","focusLockAllTraps","focusLockUsedInMountedComponents","focusMastersStack","noop","useState","undefined","useEnhancedEffect","canUseDOM","useLayoutEffect","useFocusLockHook","autoFocus","returnFocusTo","arguments","length","focusMaster","onFocusOut","autoTriggerRef","useRef","lastUserInteractionRef","handleFocusOut","useCallback","focusCameFrom","focusMovedTo","setTimeout","Promise","resolve","then","currentFocusMaster","trapNodes","_toConsumableArray2","isFocusInside","_typeof2","setFocus","handleMouseEvent","handleKeyboardEvent","returnFocus","trapNode","focusMastersStackCount","returnFocusNode","autoTrigger","node","focusableChildren","Array","from","children","flatMap","getFocusableIn","document","body","addEventListener","removeEventListener","push","pop","splice","indexOf","establishHookAsGlobal","globalThis","hook","version","usedInComponents","_globalFocusLockHookK","theirVersion","useFocusLock","_globalFocusLockHookK2","_globalFocusLockHookK3","LocalReact","hasFocusableIn","element"],"sources":["../../src/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 {\n addFocusBorders,\n removeFocusBorders,\n areFocusBordersPlacedCorrectly,\n} from '../focus-lock/focusBorders';\nimport {\n addIframeBorders,\n areIframeBordersPlacedCorrectly,\n removeIframeBorders,\n} from '../focus-lock/iframeBorders';\n\nexport { isFocusInside, setFocus };\n\nconst focusBordersConsumers = new Set();\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 id = getUniqueId('focus-borders-consumer');\n if (!disabled) {\n focusBordersConsumers.add(id);\n }\n\n if (!areFocusBordersPlacedCorrectly()) removeFocusBorders();\n if (!areIframeBordersPlacedCorrectly(trapRef?.current)) removeIframeBorders();\n if (focusBordersConsumers.size > 0) {\n addFocusBorders();\n addIframeBorders(trapRef?.current);\n }\n\n return () => {\n focusBordersConsumers.delete(id);\n if (focusBordersConsumers.size === 0) {\n removeFocusBorders();\n removeIframeBorders();\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 *\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 = 4;\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,\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.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","uniqueId","getUniqueId","prefix","Math","random","toString","slice","focusLockVersion","globalFocusLockHookKey","focusLockAllTraps","Set","focusLockUsedInMountedComponents","focusMastersStack","noop","useUniqueIdHookMock","React","useState","undefined","useEnhancedEffect","canUseDOM","useLayoutEffect","useEffect","useFocusLockHook","trapRef","autoFocus","returnFocusTo","disabled","arguments","length","focusMaster","onFocusOut","trapNode","current","getFocusableIn","addFocusBorders","removeFocusBorders","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/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\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 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 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,\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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"}
@@ -5,10 +5,8 @@ import LocalReact from 'react';
5
5
  import { isFocusInside } from "../focus-lock/isFocusInside.mjs";
6
6
  import { setFocus } from "../focus-lock/setFocus.mjs";
7
7
  import { getFocusableIn } from "../focus-lock/getFocusableIn.mjs";
8
- import { addFocusBorders, removeFocusBorders, areFocusBordersPlacedCorrectly } from "../focus-lock/focusBorders.mjs";
9
- import { addIframeBorders, areIframeBordersPlacedCorrectly, removeIframeBorders } from "../focus-lock/iframeBorders.mjs";
8
+ import { addFocusBorders, removeFocusBorders } from "../focus-lock/focusBorders.mjs";
10
9
  export { isFocusInside, setFocus };
11
- var focusBordersConsumers = new Set();
12
10
  var syntheticEvents = {
13
11
  blur: 'focusout-intergalactic-focus-lock-synthetic',
14
12
  keydown: 'keydown-intergalactic-focus-lock-synthetic'
@@ -37,28 +35,6 @@ export var makeFocusLockSyntheticEvent = function makeFocusLockSyntheticEvent(ba
37
35
  });
38
36
  return syntheticEvent;
39
37
  };
40
- var useFocusBorders = function useFocusBorders(React, disabled, trapRef) {
41
- useUniqueIdHookMock(React);
42
- React.useEffect(function () {
43
- var id = getUniqueId('focus-borders-consumer');
44
- if (!disabled) {
45
- focusBordersConsumers.add(id);
46
- }
47
- if (!areFocusBordersPlacedCorrectly()) removeFocusBorders();
48
- if (!areIframeBordersPlacedCorrectly(trapRef === null || trapRef === void 0 ? void 0 : trapRef.current)) removeIframeBorders();
49
- if (focusBordersConsumers.size > 0) {
50
- addFocusBorders();
51
- addIframeBorders(trapRef === null || trapRef === void 0 ? void 0 : trapRef.current);
52
- }
53
- return function () {
54
- focusBordersConsumers["delete"](id);
55
- if (focusBordersConsumers.size === 0) {
56
- removeFocusBorders();
57
- removeIframeBorders();
58
- }
59
- };
60
- }, [disabled]);
61
- };
62
38
  var uniqueId = 0;
63
39
  var getUniqueId = function getUniqueId(prefix) {
64
40
  return "".concat(prefix, "-").concat(Math.random().toString(36).slice(2), "-").concat(uniqueId++);
@@ -82,6 +58,7 @@ var getUniqueId = function getUniqueId(prefix) {
82
58
  * Version update `1 -> 2`. Fixed call `safeMoveFocusInside` in `handleFocusIn` with correct second parameter (focusCameFrom instead of event.target)
83
59
  * Version update `2 -> 3`. Fixed React version isolation in nested hooks (`useFocusBorders`, `useUniqueId`).
84
60
  * Version update `3 -> 4`. Fixed lock for correct working with iframes in modal
61
+ * Version update `4 -> 5`. Changed placements for border - now they wrap trap node
85
62
  *
86
63
  * Initially (for a several versions) key was `__intergalactic_focus_lock_hook_`.
87
64
  * Making it respect react version required to change key. So key was changed to `__intergalactic_focus_lock_hook_react_v_respectful`.
@@ -94,7 +71,7 @@ var getUniqueId = function getUniqueId(prefix) {
94
71
  * If new update requires to remove some hooks – add mocks instead of them.
95
72
  * 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.
96
73
  */
97
- var focusLockVersion = 4;
74
+ var focusLockVersion = 5;
98
75
  var globalFocusLockHookKey = '__intergalactic_focus_lock_hook_react_v_respectful';
99
76
  var focusLockAllTraps = new Set();
100
77
  var focusLockUsedInMountedComponents = new Set();
@@ -117,7 +94,17 @@ var useFocusLockHook = function useFocusLockHook(React, trapRef, autoFocus, retu
117
94
  var disabled = arguments.length > 4 && arguments[4] !== undefined ? arguments[4] : false;
118
95
  var focusMaster = arguments.length > 5 && arguments[5] !== undefined ? arguments[5] : false;
119
96
  var onFocusOut = arguments.length > 6 ? arguments[6] : undefined;
120
- useFocusBorders(React, disabled, trapRef);
97
+ React.useEffect(function () {
98
+ var trapNode = trapRef.current;
99
+ if (trapNode && !disabled && getFocusableIn(trapNode).length > 0) {
100
+ addFocusBorders(trapNode);
101
+ }
102
+ return function () {
103
+ if (trapNode) {
104
+ removeFocusBorders(trapNode);
105
+ }
106
+ };
107
+ }, [disabled]);
121
108
  var autoTriggerRef = React.useRef(null);
122
109
  var lastUserInteractionRef = React.useRef(undefined);
123
110
  var handleFocusOut = React.useCallback(function (event) {