@helpwave/hightide 0.1.26 → 0.1.28

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 (336) hide show
  1. package/dist/coloring/index.d.mts +2 -0
  2. package/dist/coloring/index.d.ts +2 -0
  3. package/dist/coloring/index.js +85 -0
  4. package/dist/coloring/index.js.map +1 -0
  5. package/dist/coloring/index.mjs +48 -0
  6. package/dist/coloring/index.mjs.map +1 -0
  7. package/dist/components/branding/index.d.mts +3 -0
  8. package/dist/components/branding/index.d.ts +3 -0
  9. package/dist/components/branding/index.js +140 -0
  10. package/dist/components/branding/index.js.map +1 -0
  11. package/dist/components/branding/index.mjs +104 -0
  12. package/dist/components/branding/index.mjs.map +1 -0
  13. package/dist/components/date/DatePicker.js +1 -1
  14. package/dist/components/date/DatePicker.js.map +1 -1
  15. package/dist/components/date/DatePicker.mjs +1 -1
  16. package/dist/components/date/DatePicker.mjs.map +1 -1
  17. package/dist/components/date/YearMonthPicker.js +1 -1
  18. package/dist/components/date/YearMonthPicker.js.map +1 -1
  19. package/dist/components/date/YearMonthPicker.mjs +1 -1
  20. package/dist/components/date/YearMonthPicker.mjs.map +1 -1
  21. package/dist/components/date/index.d.mts +10 -0
  22. package/dist/components/date/index.d.ts +10 -0
  23. package/dist/components/date/index.js +1168 -0
  24. package/dist/components/date/index.js.map +1 -0
  25. package/dist/components/date/index.mjs +1124 -0
  26. package/dist/components/date/index.mjs.map +1 -0
  27. package/dist/components/dialog/ConfirmDialog.d.mts +1 -1
  28. package/dist/components/dialog/ConfirmDialog.d.ts +1 -1
  29. package/dist/components/dialog/ConfirmDialog.js +2 -2
  30. package/dist/components/dialog/ConfirmDialog.js.map +1 -1
  31. package/dist/components/dialog/ConfirmDialog.mjs +2 -2
  32. package/dist/components/dialog/ConfirmDialog.mjs.map +1 -1
  33. package/dist/components/dialog/Dialog.d.mts +1 -1
  34. package/dist/components/dialog/Dialog.d.ts +1 -1
  35. package/dist/components/dialog/Dialog.js +2 -2
  36. package/dist/components/dialog/Dialog.js.map +1 -1
  37. package/dist/components/dialog/Dialog.mjs +2 -2
  38. package/dist/components/dialog/Dialog.mjs.map +1 -1
  39. package/dist/components/dialog/DiscardChangesDialog.d.mts +1 -1
  40. package/dist/components/dialog/DiscardChangesDialog.d.ts +1 -1
  41. package/dist/components/dialog/DiscardChangesDialog.js +2 -2
  42. package/dist/components/dialog/DiscardChangesDialog.js.map +1 -1
  43. package/dist/components/dialog/DiscardChangesDialog.mjs +2 -2
  44. package/dist/components/dialog/DiscardChangesDialog.mjs.map +1 -1
  45. package/dist/components/dialog/InputDialog.d.mts +1 -1
  46. package/dist/components/dialog/InputDialog.d.ts +1 -1
  47. package/dist/components/dialog/InputDialog.js +2 -2
  48. package/dist/components/dialog/InputDialog.js.map +1 -1
  49. package/dist/components/dialog/InputDialog.mjs +2 -2
  50. package/dist/components/dialog/InputDialog.mjs.map +1 -1
  51. package/dist/components/dialog/LanguageDialog.d.mts +1 -1
  52. package/dist/components/dialog/LanguageDialog.d.ts +1 -1
  53. package/dist/components/dialog/LanguageDialog.js +28 -15
  54. package/dist/components/dialog/LanguageDialog.js.map +1 -1
  55. package/dist/components/dialog/LanguageDialog.mjs +28 -15
  56. package/dist/components/dialog/LanguageDialog.mjs.map +1 -1
  57. package/dist/components/dialog/ThemeDialog.d.mts +1 -1
  58. package/dist/components/dialog/ThemeDialog.d.ts +1 -1
  59. package/dist/components/dialog/ThemeDialog.js +69 -33
  60. package/dist/components/dialog/ThemeDialog.js.map +1 -1
  61. package/dist/components/dialog/ThemeDialog.mjs +60 -24
  62. package/dist/components/dialog/ThemeDialog.mjs.map +1 -1
  63. package/dist/components/dialog/index.d.mts +1 -1
  64. package/dist/components/dialog/index.d.ts +1 -1
  65. package/dist/components/dialog/index.js +61 -25
  66. package/dist/components/dialog/index.js.map +1 -1
  67. package/dist/components/dialog/index.mjs +61 -25
  68. package/dist/components/dialog/index.mjs.map +1 -1
  69. package/dist/components/form/index.d.mts +5 -0
  70. package/dist/components/form/index.d.ts +5 -0
  71. package/dist/components/form/index.js +100 -0
  72. package/dist/components/form/index.js.map +1 -0
  73. package/dist/components/form/index.mjs +64 -0
  74. package/dist/components/form/index.mjs.map +1 -0
  75. package/dist/components/icons-and-geometry/index.d.mts +7 -0
  76. package/dist/components/icons-and-geometry/index.d.ts +7 -0
  77. package/dist/components/icons-and-geometry/index.js +3955 -0
  78. package/dist/components/icons-and-geometry/index.js.map +1 -0
  79. package/dist/components/icons-and-geometry/index.mjs +3939 -0
  80. package/dist/components/icons-and-geometry/index.mjs.map +1 -0
  81. package/dist/components/index.d.mts +83 -0
  82. package/dist/components/index.d.ts +83 -0
  83. package/dist/components/index.js +15471 -0
  84. package/dist/components/index.js.map +1 -0
  85. package/dist/components/index.mjs +15377 -0
  86. package/dist/components/index.mjs.map +1 -0
  87. package/dist/components/layout/Carousel.d.mts +33 -0
  88. package/dist/components/layout/Carousel.d.ts +33 -0
  89. package/dist/components/layout/Carousel.js +684 -0
  90. package/dist/components/layout/Carousel.js.map +1 -0
  91. package/dist/components/layout/Carousel.mjs +659 -0
  92. package/dist/components/layout/Carousel.mjs.map +1 -0
  93. package/dist/components/{layout-and-navigation → layout}/Chip.js +1 -1
  94. package/dist/components/layout/Chip.js.map +1 -0
  95. package/dist/components/{layout-and-navigation → layout}/Chip.mjs +1 -1
  96. package/dist/components/layout/Chip.mjs.map +1 -0
  97. package/dist/components/{layout-and-navigation → layout}/DividerInserter.js +1 -1
  98. package/dist/components/layout/DividerInserter.js.map +1 -0
  99. package/dist/components/{layout-and-navigation → layout}/DividerInserter.mjs +1 -1
  100. package/dist/components/layout/DividerInserter.mjs.map +1 -0
  101. package/dist/components/{layout-and-navigation → layout}/Expandable.js +2 -2
  102. package/dist/components/layout/Expandable.js.map +1 -0
  103. package/dist/components/{layout-and-navigation → layout}/Expandable.mjs +2 -2
  104. package/dist/components/layout/Expandable.mjs.map +1 -0
  105. package/dist/components/{layout-and-navigation → layout}/FAQSection.js +5 -5
  106. package/dist/components/layout/FAQSection.js.map +1 -0
  107. package/dist/components/{layout-and-navigation → layout}/FAQSection.mjs +5 -5
  108. package/dist/components/layout/FAQSection.mjs.map +1 -0
  109. package/dist/components/{layout-and-navigation → layout}/FloatingContainer.js +2 -2
  110. package/dist/components/layout/FloatingContainer.js.map +1 -0
  111. package/dist/components/{layout-and-navigation → layout}/FloatingContainer.mjs +2 -2
  112. package/dist/components/layout/FloatingContainer.mjs.map +1 -0
  113. package/dist/components/{layout-and-navigation → layout}/ListBox.js +2 -2
  114. package/dist/components/layout/ListBox.js.map +1 -0
  115. package/dist/components/{layout-and-navigation → layout}/ListBox.mjs +2 -2
  116. package/dist/components/layout/ListBox.mjs.map +1 -0
  117. package/dist/components/{layout-and-navigation → layout}/MarkdownInterpreter.js +1 -1
  118. package/dist/components/layout/MarkdownInterpreter.js.map +1 -0
  119. package/dist/components/{layout-and-navigation → layout}/MarkdownInterpreter.mjs +1 -1
  120. package/dist/components/layout/MarkdownInterpreter.mjs.map +1 -0
  121. package/dist/components/{layout-and-navigation → layout}/ScrollArea.js +2 -2
  122. package/dist/components/layout/ScrollArea.js.map +1 -0
  123. package/dist/components/{layout-and-navigation → layout}/ScrollArea.mjs +1 -1
  124. package/dist/components/layout/ScrollArea.mjs.map +1 -0
  125. package/dist/components/{layout-and-navigation → layout}/TextImage.js +3 -3
  126. package/dist/components/layout/TextImage.js.map +1 -0
  127. package/dist/components/{layout-and-navigation → layout}/TextImage.mjs +2 -2
  128. package/dist/components/layout/TextImage.mjs.map +1 -0
  129. package/dist/components/{layout-and-navigation → layout}/VerticalDivider.js +1 -1
  130. package/dist/components/layout/VerticalDivider.js.map +1 -0
  131. package/dist/components/{layout-and-navigation → layout}/VerticalDivider.mjs +1 -1
  132. package/dist/components/layout/VerticalDivider.mjs.map +1 -0
  133. package/dist/components/layout/index.d.mts +18 -0
  134. package/dist/components/layout/index.d.ts +18 -0
  135. package/dist/components/layout/index.js +3111 -0
  136. package/dist/components/layout/index.js.map +1 -0
  137. package/dist/components/layout/index.mjs +3064 -0
  138. package/dist/components/layout/index.mjs.map +1 -0
  139. package/dist/components/loading-states/index.d.mts +12 -0
  140. package/dist/components/loading-states/index.d.ts +12 -0
  141. package/dist/components/loading-states/index.js +614 -0
  142. package/dist/components/loading-states/index.js.map +1 -0
  143. package/dist/components/loading-states/index.mjs +573 -0
  144. package/dist/components/loading-states/index.mjs.map +1 -0
  145. package/dist/components/{layout-and-navigation → navigation}/BreadCrumb.js +1 -1
  146. package/dist/components/navigation/BreadCrumb.js.map +1 -0
  147. package/dist/components/{layout-and-navigation → navigation}/BreadCrumb.mjs +1 -1
  148. package/dist/components/navigation/BreadCrumb.mjs.map +1 -0
  149. package/dist/components/navigation/Navigation.d.mts +21 -0
  150. package/dist/components/navigation/Navigation.d.ts +21 -0
  151. package/dist/components/navigation/Navigation.js +4018 -0
  152. package/dist/components/navigation/Navigation.js.map +1 -0
  153. package/dist/components/navigation/Navigation.mjs +4012 -0
  154. package/dist/components/navigation/Navigation.mjs.map +1 -0
  155. package/dist/components/{layout-and-navigation → navigation}/Pagination.js +3 -3
  156. package/dist/components/navigation/Pagination.js.map +1 -0
  157. package/dist/components/{layout-and-navigation → navigation}/Pagination.mjs +3 -3
  158. package/dist/components/navigation/Pagination.mjs.map +1 -0
  159. package/dist/components/{layout-and-navigation → navigation}/StepperBar.js +3 -3
  160. package/dist/components/navigation/StepperBar.js.map +1 -0
  161. package/dist/components/{layout-and-navigation → navigation}/StepperBar.mjs +3 -3
  162. package/dist/components/navigation/StepperBar.mjs.map +1 -0
  163. package/dist/components/navigation/index.d.mts +9 -0
  164. package/dist/components/navigation/index.d.ts +9 -0
  165. package/dist/components/navigation/index.js +4660 -0
  166. package/dist/components/navigation/index.js.map +1 -0
  167. package/dist/components/navigation/index.mjs +4648 -0
  168. package/dist/components/navigation/index.mjs.map +1 -0
  169. package/dist/components/properties/MultiSelectProperty.js +27 -14
  170. package/dist/components/properties/MultiSelectProperty.js.map +1 -1
  171. package/dist/components/properties/MultiSelectProperty.mjs +27 -14
  172. package/dist/components/properties/MultiSelectProperty.mjs.map +1 -1
  173. package/dist/components/properties/SelectProperty.js +27 -14
  174. package/dist/components/properties/SelectProperty.js.map +1 -1
  175. package/dist/components/properties/SelectProperty.mjs +27 -14
  176. package/dist/components/properties/SelectProperty.mjs.map +1 -1
  177. package/dist/components/properties/index.d.mts +12 -0
  178. package/dist/components/properties/index.d.ts +12 -0
  179. package/dist/components/properties/index.js +2983 -0
  180. package/dist/components/properties/index.js.map +1 -0
  181. package/dist/components/properties/index.mjs +2951 -0
  182. package/dist/components/properties/index.mjs.map +1 -0
  183. package/dist/components/table/Table.js +1 -1
  184. package/dist/components/table/Table.js.map +1 -1
  185. package/dist/components/table/Table.mjs +1 -1
  186. package/dist/components/table/Table.mjs.map +1 -1
  187. package/dist/components/table/index.d.mts +10 -0
  188. package/dist/components/table/index.d.ts +10 -0
  189. package/dist/components/table/index.js +2329 -0
  190. package/dist/components/table/index.js.map +1 -0
  191. package/dist/components/table/index.mjs +2293 -0
  192. package/dist/components/table/index.mjs.map +1 -0
  193. package/dist/components/user-action/DateAndTimePicker.js +1 -1
  194. package/dist/components/user-action/DateAndTimePicker.js.map +1 -1
  195. package/dist/components/user-action/DateAndTimePicker.mjs +1 -1
  196. package/dist/components/user-action/DateAndTimePicker.mjs.map +1 -1
  197. package/dist/components/user-action/index.d.mts +30 -0
  198. package/dist/components/user-action/index.d.ts +30 -0
  199. package/dist/components/user-action/index.js +4257 -0
  200. package/dist/components/user-action/index.js.map +1 -0
  201. package/dist/components/user-action/index.mjs +4195 -0
  202. package/dist/components/user-action/index.mjs.map +1 -0
  203. package/dist/components/user-action/input/index.d.mts +6 -0
  204. package/dist/components/user-action/input/index.d.ts +6 -0
  205. package/dist/components/user-action/input/index.js +398 -0
  206. package/dist/components/user-action/input/index.js.map +1 -0
  207. package/dist/components/user-action/input/index.mjs +357 -0
  208. package/dist/components/user-action/input/index.mjs.map +1 -0
  209. package/dist/components/user-action/select/Select.d.mts +5 -1
  210. package/dist/components/user-action/select/Select.d.ts +5 -1
  211. package/dist/components/user-action/select/Select.js +27 -14
  212. package/dist/components/user-action/select/Select.js.map +1 -1
  213. package/dist/components/user-action/select/Select.mjs +27 -14
  214. package/dist/components/user-action/select/Select.mjs.map +1 -1
  215. package/dist/components/user-action/select/index.d.mts +4 -0
  216. package/dist/components/user-action/select/index.d.ts +4 -0
  217. package/dist/components/user-action/select/index.js +1369 -0
  218. package/dist/components/user-action/select/index.js.map +1 -0
  219. package/dist/components/user-action/select/index.mjs +1333 -0
  220. package/dist/components/user-action/select/index.mjs.map +1 -0
  221. package/dist/components/utils/index.d.mts +4 -0
  222. package/dist/components/utils/index.d.ts +4 -0
  223. package/dist/components/utils/index.js +302 -0
  224. package/dist/components/utils/index.js.map +1 -0
  225. package/dist/components/utils/index.mjs +275 -0
  226. package/dist/components/utils/index.mjs.map +1 -0
  227. package/dist/hooks/focus/index.d.mts +6 -0
  228. package/dist/hooks/focus/index.d.ts +6 -0
  229. package/dist/hooks/focus/index.js +379 -0
  230. package/dist/hooks/focus/index.js.map +1 -0
  231. package/dist/hooks/focus/index.mjs +339 -0
  232. package/dist/hooks/focus/index.mjs.map +1 -0
  233. package/dist/hooks/index.d.mts +16 -0
  234. package/dist/hooks/index.d.ts +16 -0
  235. package/dist/hooks/index.js +844 -0
  236. package/dist/hooks/index.js.map +1 -0
  237. package/dist/hooks/index.mjs +794 -0
  238. package/dist/hooks/index.mjs.map +1 -0
  239. package/dist/index.d.mts +110 -0
  240. package/dist/index.d.ts +110 -0
  241. package/dist/index.js +16101 -0
  242. package/dist/index.js.map +1 -0
  243. package/dist/index.mjs +15941 -0
  244. package/dist/index.mjs.map +1 -0
  245. package/dist/localization/defaults/index.d.mts +4 -0
  246. package/dist/localization/defaults/index.d.ts +4 -0
  247. package/dist/localization/defaults/index.js +223 -0
  248. package/dist/localization/defaults/index.js.map +1 -0
  249. package/dist/localization/defaults/index.mjs +195 -0
  250. package/dist/localization/defaults/index.mjs.map +1 -0
  251. package/dist/localization/index.d.mts +7 -0
  252. package/dist/localization/index.d.ts +7 -0
  253. package/dist/localization/index.js +415 -0
  254. package/dist/localization/index.js.map +1 -0
  255. package/dist/localization/index.mjs +380 -0
  256. package/dist/localization/index.mjs.map +1 -0
  257. package/dist/style/globals.css +63 -10
  258. package/dist/style/uncompiled/globals.css +5 -4
  259. package/dist/style/uncompiled/utitlity/shadow.css +4 -0
  260. package/dist/theming/index.d.mts +5 -0
  261. package/dist/theming/index.d.ts +5 -0
  262. package/dist/theming/index.js +174 -0
  263. package/dist/theming/index.js.map +1 -0
  264. package/dist/theming/index.mjs +145 -0
  265. package/dist/theming/index.mjs.map +1 -0
  266. package/dist/theming/useTheme.d.mts +3 -1
  267. package/dist/theming/useTheme.d.ts +3 -1
  268. package/dist/theming/useTheme.js +40 -17
  269. package/dist/theming/useTheme.js.map +1 -1
  270. package/dist/theming/useTheme.mjs +38 -15
  271. package/dist/theming/useTheme.mjs.map +1 -1
  272. package/dist/utils/index.d.mts +15 -0
  273. package/dist/utils/index.d.ts +15 -0
  274. package/dist/utils/index.js +553 -0
  275. package/dist/utils/index.js.map +1 -0
  276. package/dist/utils/index.mjs +493 -0
  277. package/dist/utils/index.mjs.map +1 -0
  278. package/package.json +25 -24
  279. package/dist/components/layout-and-navigation/BreadCrumb.js.map +0 -1
  280. package/dist/components/layout-and-navigation/BreadCrumb.mjs.map +0 -1
  281. package/dist/components/layout-and-navigation/Carousel.d.mts +0 -25
  282. package/dist/components/layout-and-navigation/Carousel.d.ts +0 -25
  283. package/dist/components/layout-and-navigation/Carousel.js +0 -643
  284. package/dist/components/layout-and-navigation/Carousel.js.map +0 -1
  285. package/dist/components/layout-and-navigation/Carousel.mjs +0 -609
  286. package/dist/components/layout-and-navigation/Carousel.mjs.map +0 -1
  287. package/dist/components/layout-and-navigation/Chip.js.map +0 -1
  288. package/dist/components/layout-and-navigation/Chip.mjs.map +0 -1
  289. package/dist/components/layout-and-navigation/DividerInserter.js.map +0 -1
  290. package/dist/components/layout-and-navigation/DividerInserter.mjs.map +0 -1
  291. package/dist/components/layout-and-navigation/Expandable.js.map +0 -1
  292. package/dist/components/layout-and-navigation/Expandable.mjs.map +0 -1
  293. package/dist/components/layout-and-navigation/FAQSection.js.map +0 -1
  294. package/dist/components/layout-and-navigation/FAQSection.mjs.map +0 -1
  295. package/dist/components/layout-and-navigation/FloatingContainer.js.map +0 -1
  296. package/dist/components/layout-and-navigation/FloatingContainer.mjs.map +0 -1
  297. package/dist/components/layout-and-navigation/ListBox.js.map +0 -1
  298. package/dist/components/layout-and-navigation/ListBox.mjs.map +0 -1
  299. package/dist/components/layout-and-navigation/MarkdownInterpreter.js.map +0 -1
  300. package/dist/components/layout-and-navigation/MarkdownInterpreter.mjs.map +0 -1
  301. package/dist/components/layout-and-navigation/Pagination.js.map +0 -1
  302. package/dist/components/layout-and-navigation/Pagination.mjs.map +0 -1
  303. package/dist/components/layout-and-navigation/ScrollArea.js.map +0 -1
  304. package/dist/components/layout-and-navigation/ScrollArea.mjs.map +0 -1
  305. package/dist/components/layout-and-navigation/StepperBar.js.map +0 -1
  306. package/dist/components/layout-and-navigation/StepperBar.mjs.map +0 -1
  307. package/dist/components/layout-and-navigation/TextImage.js.map +0 -1
  308. package/dist/components/layout-and-navigation/TextImage.mjs.map +0 -1
  309. package/dist/components/layout-and-navigation/VerticalDivider.js.map +0 -1
  310. package/dist/components/layout-and-navigation/VerticalDivider.mjs.map +0 -1
  311. /package/dist/components/{layout-and-navigation → layout}/Chip.d.mts +0 -0
  312. /package/dist/components/{layout-and-navigation → layout}/Chip.d.ts +0 -0
  313. /package/dist/components/{layout-and-navigation → layout}/DividerInserter.d.mts +0 -0
  314. /package/dist/components/{layout-and-navigation → layout}/DividerInserter.d.ts +0 -0
  315. /package/dist/components/{layout-and-navigation → layout}/Expandable.d.mts +0 -0
  316. /package/dist/components/{layout-and-navigation → layout}/Expandable.d.ts +0 -0
  317. /package/dist/components/{layout-and-navigation → layout}/FAQSection.d.mts +0 -0
  318. /package/dist/components/{layout-and-navigation → layout}/FAQSection.d.ts +0 -0
  319. /package/dist/components/{layout-and-navigation → layout}/FloatingContainer.d.mts +0 -0
  320. /package/dist/components/{layout-and-navigation → layout}/FloatingContainer.d.ts +0 -0
  321. /package/dist/components/{layout-and-navigation → layout}/ListBox.d.mts +0 -0
  322. /package/dist/components/{layout-and-navigation → layout}/ListBox.d.ts +0 -0
  323. /package/dist/components/{layout-and-navigation → layout}/MarkdownInterpreter.d.mts +0 -0
  324. /package/dist/components/{layout-and-navigation → layout}/MarkdownInterpreter.d.ts +0 -0
  325. /package/dist/components/{layout-and-navigation → layout}/ScrollArea.d.mts +0 -0
  326. /package/dist/components/{layout-and-navigation → layout}/ScrollArea.d.ts +0 -0
  327. /package/dist/components/{layout-and-navigation → layout}/TextImage.d.mts +0 -0
  328. /package/dist/components/{layout-and-navigation → layout}/TextImage.d.ts +0 -0
  329. /package/dist/components/{layout-and-navigation → layout}/VerticalDivider.d.mts +0 -0
  330. /package/dist/components/{layout-and-navigation → layout}/VerticalDivider.d.ts +0 -0
  331. /package/dist/components/{layout-and-navigation → navigation}/BreadCrumb.d.mts +0 -0
  332. /package/dist/components/{layout-and-navigation → navigation}/BreadCrumb.d.ts +0 -0
  333. /package/dist/components/{layout-and-navigation → navigation}/Pagination.d.mts +0 -0
  334. /package/dist/components/{layout-and-navigation → navigation}/Pagination.d.ts +0 -0
  335. /package/dist/components/{layout-and-navigation → navigation}/StepperBar.d.mts +0 -0
  336. /package/dist/components/{layout-and-navigation → navigation}/StepperBar.d.ts +0 -0
@@ -0,0 +1,794 @@
1
+ // src/hooks/focus/useFocusGuards.ts
2
+ import { useEffect } from "react";
3
+ var selectorName = "data-hw-focus-guard";
4
+ function FocusGuard() {
5
+ const element = document.createElement("div");
6
+ element.setAttribute(selectorName, "");
7
+ element.tabIndex = 0;
8
+ element.style.border = "none";
9
+ element.style.outline = "none";
10
+ element.style.boxShadow = "none";
11
+ element.style.opacity = "0";
12
+ element.style.position = "fixed";
13
+ element.style.pointerEvents = "none";
14
+ return element;
15
+ }
16
+ var FocusGuardsService = class _FocusGuardsService {
17
+ constructor() {
18
+ this.count = 0;
19
+ }
20
+ static getInstance() {
21
+ if (!_FocusGuardsService.instance) {
22
+ _FocusGuardsService.instance = new _FocusGuardsService();
23
+ }
24
+ return _FocusGuardsService.instance;
25
+ }
26
+ add() {
27
+ const edgeGuards = document.querySelectorAll(`[${selectorName}]`);
28
+ document.body.insertAdjacentElement("afterbegin", edgeGuards[0] ?? FocusGuard());
29
+ document.body.insertAdjacentElement("beforeend", edgeGuards[1] ?? FocusGuard());
30
+ this.count++;
31
+ }
32
+ remove() {
33
+ if (this.count === 1) {
34
+ document.querySelectorAll(`[${selectorName}]`).forEach((node) => node.remove());
35
+ }
36
+ this.count--;
37
+ }
38
+ };
39
+ var useFocusGuards = () => {
40
+ useEffect(() => {
41
+ FocusGuardsService.getInstance().add();
42
+ return () => {
43
+ FocusGuardsService.getInstance().remove();
44
+ };
45
+ }, []);
46
+ };
47
+
48
+ // src/hooks/focus/useFocusManagement.ts
49
+ import { useCallback } from "react";
50
+ function useFocusManagement() {
51
+ const getFocusableElements = useCallback(() => {
52
+ return Array.from(
53
+ document.querySelectorAll(
54
+ 'input, button, select, textarea, a[href], [tabindex]:not([tabindex="-1"])'
55
+ )
56
+ ).filter(
57
+ (el) => el instanceof HTMLElement && !el.hasAttribute("disabled") && !el.hasAttribute("hidden") && el.tabIndex !== -1
58
+ );
59
+ }, []);
60
+ const getNextFocusElement = useCallback(() => {
61
+ const elements = getFocusableElements();
62
+ if (elements.length === 0) {
63
+ return void 0;
64
+ }
65
+ let nextElement = elements[0];
66
+ if (document.activeElement instanceof HTMLElement) {
67
+ const currentIndex = elements.indexOf(document.activeElement);
68
+ nextElement = elements[(currentIndex + 1) % elements.length];
69
+ }
70
+ return nextElement;
71
+ }, [getFocusableElements]);
72
+ const focusNext = useCallback(() => {
73
+ const nextElement = getNextFocusElement();
74
+ nextElement?.focus();
75
+ }, [getNextFocusElement]);
76
+ const getPreviousFocusElement = useCallback(() => {
77
+ const elements = getFocusableElements();
78
+ if (elements.length === 0) {
79
+ return void 0;
80
+ }
81
+ let previousElement = elements[0];
82
+ if (document.activeElement instanceof HTMLElement) {
83
+ const currentIndex = elements.indexOf(document.activeElement);
84
+ if (currentIndex === 0) {
85
+ previousElement = elements[elements.length - 1];
86
+ } else {
87
+ previousElement = elements[currentIndex - 1];
88
+ }
89
+ }
90
+ return previousElement;
91
+ }, [getFocusableElements]);
92
+ const focusPrevious = useCallback(() => {
93
+ const previousElement = getPreviousFocusElement();
94
+ if (previousElement) previousElement.focus();
95
+ }, [getPreviousFocusElement]);
96
+ return {
97
+ getFocusableElements,
98
+ getNextFocusElement,
99
+ getPreviousFocusElement,
100
+ focusNext,
101
+ focusPrevious
102
+ };
103
+ }
104
+
105
+ // src/hooks/focus/useFocusOnceVisible.ts
106
+ import React, { useEffect as useEffect2 } from "react";
107
+ var useFocusOnceVisible = (ref, disable = false) => {
108
+ const [hasUsedFocus, setHasUsedFocus] = React.useState(false);
109
+ useEffect2(() => {
110
+ if (disable || hasUsedFocus) {
111
+ return;
112
+ }
113
+ const observer = new IntersectionObserver(([entry]) => {
114
+ if (entry.isIntersecting && !hasUsedFocus) {
115
+ ref.current?.focus();
116
+ setHasUsedFocus(hasUsedFocus);
117
+ }
118
+ }, {
119
+ threshold: 0.1
120
+ });
121
+ if (ref.current) {
122
+ observer.observe(ref.current);
123
+ }
124
+ return () => observer.disconnect();
125
+ }, [disable, hasUsedFocus, ref]);
126
+ };
127
+
128
+ // src/hooks/focus/useFocusTrap.ts
129
+ import { useCallback as useCallback2, useEffect as useEffect4, useId, useRef, useState as useState2 } from "react";
130
+
131
+ // src/hooks/focus/useIsMounted.ts
132
+ import { useEffect as useEffect3, useLayoutEffect, useState } from "react";
133
+ var isClient = typeof window !== "undefined" && typeof document !== "undefined";
134
+ var useIsomorphicEffect = isClient ? useLayoutEffect : useEffect3;
135
+ var useIsMounted = () => {
136
+ const [isMounted, setIsMounted] = useState(false);
137
+ useIsomorphicEffect(() => {
138
+ setIsMounted(true);
139
+ return () => {
140
+ setIsMounted(false);
141
+ };
142
+ }, []);
143
+ return isMounted;
144
+ };
145
+
146
+ // src/hooks/focus/useFocusTrap.ts
147
+ var createFocusGuard = () => {
148
+ const div = document.createElement("div");
149
+ Object.assign(div.style, {
150
+ opacity: "0",
151
+ outline: "none",
152
+ boxShadow: "none",
153
+ position: "fixed",
154
+ pointerEvents: "none",
155
+ touchAction: "none"
156
+ });
157
+ div.tabIndex = 0;
158
+ div.setAttribute("data-hw-focus-guard", "");
159
+ document.body.appendChild(div);
160
+ return div;
161
+ };
162
+ function getContainedFocusableElements(element) {
163
+ return element?.querySelectorAll('button, [href], input, select, textarea, [tabindex]:not([tabindex="-1"])');
164
+ }
165
+ var FocusTrapService = class {
166
+ constructor() {
167
+ // The last entry is always the active one
168
+ this.listeners = [];
169
+ this.onFocusIn = (event) => {
170
+ const active = this.getActive();
171
+ if (!active || !active.container.current) return;
172
+ const { container } = active;
173
+ if (!container.current.contains(event.target)) {
174
+ this.focusElement();
175
+ }
176
+ };
177
+ }
178
+ getActive() {
179
+ if (this.listeners.length === 0) return void 0;
180
+ return this.listeners[this.listeners.length - 1];
181
+ }
182
+ focusElement() {
183
+ const active = this.getActive();
184
+ if (!active) return;
185
+ const { container, initialFocusElement } = active;
186
+ const containerElement = container.current;
187
+ if (initialFocusElement?.current) {
188
+ initialFocusElement.current.focus();
189
+ } else {
190
+ const elements = getContainedFocusableElements(containerElement);
191
+ if (elements && elements.length > 0) {
192
+ const first = elements.item(0);
193
+ first.focus();
194
+ } else {
195
+ containerElement.focus();
196
+ }
197
+ }
198
+ }
199
+ removeGuards() {
200
+ document.querySelectorAll("[data-hw-focus-guard]").forEach((node) => node.remove());
201
+ }
202
+ addGuards() {
203
+ document.body.insertAdjacentElement("afterbegin", createFocusGuard());
204
+ document.body.insertAdjacentElement("beforeend", createFocusGuard());
205
+ }
206
+ activate() {
207
+ document.addEventListener("focusin", this.onFocusIn);
208
+ this.addGuards();
209
+ }
210
+ deactivate() {
211
+ document.removeEventListener("focusin", this.onFocusIn);
212
+ this.removeGuards();
213
+ }
214
+ register(listener) {
215
+ this.listeners.push(listener);
216
+ if (this.listeners.length === 1) {
217
+ this.activate();
218
+ }
219
+ const active = listener;
220
+ this.listeners.forEach((listener2) => {
221
+ const { focus, pause } = listener2;
222
+ if (listener2 === active) {
223
+ focus();
224
+ } else {
225
+ pause();
226
+ }
227
+ });
228
+ }
229
+ unregister(id) {
230
+ const index = this.listeners.findIndex((trap) => trap.id === id);
231
+ if (index !== -1) {
232
+ const isActive = index === this.listeners.length - 1;
233
+ const listener = this.listeners[index];
234
+ this.listeners = this.listeners.filter((listener2) => listener2.id !== id);
235
+ if (isActive) {
236
+ this.deactivate();
237
+ listener.focusLast();
238
+ const active = this.getActive();
239
+ this.listeners.forEach((listener2) => {
240
+ const { pause, unpause } = listener2;
241
+ if (listener2 === active) {
242
+ unpause();
243
+ } else {
244
+ pause();
245
+ }
246
+ });
247
+ if (this.listeners.length > 0) {
248
+ this.activate();
249
+ }
250
+ }
251
+ } else {
252
+ console.warn(`Unable to unregister id ${id}: not found`);
253
+ }
254
+ }
255
+ };
256
+ var service = new FocusTrapService();
257
+ var useFocusTrap = ({
258
+ container,
259
+ active = true,
260
+ initialFocus,
261
+ focusFirst = true
262
+ }) => {
263
+ const lastFocusRef = useRef(null);
264
+ const [paused, setPaused] = useState2(false);
265
+ const isMounted = useIsMounted();
266
+ const id = useId();
267
+ const focusElement = useCallback2(() => {
268
+ const containerElement = container.current;
269
+ if (initialFocus?.current) {
270
+ initialFocus.current.focus();
271
+ } else {
272
+ const elements = getContainedFocusableElements(containerElement);
273
+ if (elements && elements.length > 0) {
274
+ const first = elements.item(0);
275
+ first.focus();
276
+ } else {
277
+ containerElement.focus();
278
+ }
279
+ }
280
+ }, [container, initialFocus]);
281
+ useEffect4(() => {
282
+ if (active && isMounted) {
283
+ let pause = function() {
284
+ setPaused(true);
285
+ }, unpause = function() {
286
+ setPaused(false);
287
+ if (!container.current.contains(document.activeElement)) {
288
+ focusElement();
289
+ }
290
+ }, focus = function() {
291
+ focusElement();
292
+ setPaused(false);
293
+ }, focusLast = function() {
294
+ lastFocusRef.current?.focus();
295
+ };
296
+ if (!lastFocusRef.current) {
297
+ lastFocusRef.current = document.activeElement;
298
+ }
299
+ service.register({ id, pause, focus, focusLast, unpause, container, initialFocusElement: initialFocus });
300
+ return () => {
301
+ service.unregister(id);
302
+ lastFocusRef.current = void 0;
303
+ };
304
+ }
305
+ }, [active, container, focusElement, id, initialFocus, isMounted]);
306
+ useEffect4(() => {
307
+ if (active && !paused && isMounted) {
308
+ let onKeyDown = function(event) {
309
+ const key = event.key;
310
+ const elements = getContainedFocusableElements(containerElement);
311
+ const active2 = document.activeElement;
312
+ const index = [...elements].findIndex((value) => value === active2);
313
+ if (index === -1 || event.altKey || event.ctrlKey || event.metaKey) {
314
+ return;
315
+ }
316
+ if (key === "Tab") {
317
+ const next = event.shiftKey ? -1 : 1;
318
+ const nextIndex = (index + next + elements.length) % elements.length;
319
+ const nextElement = elements[nextIndex];
320
+ nextElement.focus();
321
+ event.preventDefault();
322
+ }
323
+ };
324
+ const containerElement = container.current;
325
+ containerElement.addEventListener("keydown", onKeyDown);
326
+ return () => {
327
+ containerElement.removeEventListener("keydown", onKeyDown);
328
+ };
329
+ }
330
+ }, [active, paused, isMounted, container, initialFocus, focusFirst, focusElement]);
331
+ };
332
+
333
+ // src/hooks/useDelay.ts
334
+ import { useEffect as useEffect5, useState as useState3 } from "react";
335
+ var defaultOptions = {
336
+ delay: 3e3,
337
+ disabled: false
338
+ };
339
+ function useDelay(options) {
340
+ const [timer, setTimer] = useState3(void 0);
341
+ const { delay, disabled } = {
342
+ ...defaultOptions,
343
+ ...options
344
+ };
345
+ const clearTimer = () => {
346
+ clearTimeout(timer);
347
+ setTimer(void 0);
348
+ };
349
+ const restartTimer = (onDelayFinish) => {
350
+ if (disabled) {
351
+ return;
352
+ }
353
+ clearTimeout(timer);
354
+ setTimer(setTimeout(() => {
355
+ onDelayFinish();
356
+ setTimer(void 0);
357
+ }, delay));
358
+ };
359
+ useEffect5(() => {
360
+ return () => {
361
+ clearTimeout(timer);
362
+ };
363
+ }, [timer]);
364
+ useEffect5(() => {
365
+ if (disabled) {
366
+ clearTimeout(timer);
367
+ setTimer(void 0);
368
+ }
369
+ }, [disabled, timer]);
370
+ return { restartTimer, clearTimer, hasActiveTimer: !!timer };
371
+ }
372
+
373
+ // src/hooks/useFloatingElement.ts
374
+ import { useCallback as useCallback3, useEffect as useEffect6, useState as useState4 } from "react";
375
+
376
+ // src/utils/math.ts
377
+ var clamp = (value, range = [0, 1]) => {
378
+ const [min, max] = range;
379
+ return Math.min(Math.max(value, min), max);
380
+ };
381
+
382
+ // src/hooks/useFloatingElement.ts
383
+ function calculatePosition({
384
+ windowRect,
385
+ containerRect,
386
+ anchorRect,
387
+ options
388
+ }) {
389
+ const { verticalAlignment, horizontalAlignment, gap, screenPadding } = options;
390
+ const windowWidth = windowRect.width;
391
+ const windowHeight = windowRect.height;
392
+ const maxWidth = windowWidth - 2 * screenPadding;
393
+ const maxHeight = windowHeight - 2 * screenPadding;
394
+ const width = Math.min(containerRect.width, maxWidth);
395
+ const height = Math.min(containerRect.height, maxHeight);
396
+ const leftSuggestion = {
397
+ beforeStart: anchorRect.left - width - gap,
398
+ afterStart: anchorRect.left,
399
+ center: anchorRect.left + anchorRect.width / 2 - width / 2,
400
+ beforeEnd: anchorRect.right - width,
401
+ afterEnd: anchorRect.right + gap
402
+ }[horizontalAlignment];
403
+ const topSuggestion = {
404
+ beforeStart: anchorRect.top - height - gap,
405
+ afterStart: anchorRect.top,
406
+ center: anchorRect.top + anchorRect.height / 2 - height / 2,
407
+ beforeEnd: anchorRect.bottom - height,
408
+ afterEnd: anchorRect.bottom + gap
409
+ }[verticalAlignment];
410
+ const left = clamp(leftSuggestion, [
411
+ screenPadding,
412
+ windowWidth - screenPadding - width
413
+ ]);
414
+ const top = clamp(topSuggestion, [
415
+ screenPadding,
416
+ windowHeight - screenPadding - height
417
+ ]);
418
+ return {
419
+ left,
420
+ top,
421
+ maxWidth,
422
+ maxHeight
423
+ };
424
+ }
425
+ function useFloatingElement({
426
+ active = true,
427
+ windowRef,
428
+ anchorRef,
429
+ containerRef,
430
+ isPolling = false,
431
+ pollingInterval = 100,
432
+ verticalAlignment = "afterEnd",
433
+ horizontalAlignment = "afterStart",
434
+ screenPadding = 16,
435
+ gap = 4
436
+ }) {
437
+ const [style, setStyle] = useState4();
438
+ const isMounted = useIsMounted();
439
+ const calculate = useCallback3(() => {
440
+ const containerRect = containerRef.current.getBoundingClientRect();
441
+ const windowRect = windowRef?.current.getBoundingClientRect() ?? {
442
+ top: 0,
443
+ bottom: window.innerHeight,
444
+ left: 0,
445
+ right: window.innerWidth,
446
+ width: window.innerWidth,
447
+ height: window.innerHeight
448
+ };
449
+ const anchorElement = anchorRef?.current;
450
+ if (anchorRef && !anchorElement) {
451
+ console.warn("FloatingContainer anchor provided, but its value is undefined");
452
+ }
453
+ const anchorRect = anchorElement?.getBoundingClientRect() ?? windowRect;
454
+ const calculateProps = {
455
+ windowRect,
456
+ anchorRect,
457
+ containerRect,
458
+ options: {
459
+ horizontalAlignment,
460
+ verticalAlignment,
461
+ screenPadding,
462
+ gap
463
+ }
464
+ };
465
+ setStyle(calculatePosition(calculateProps));
466
+ }, [anchorRef, containerRef, gap, horizontalAlignment, screenPadding, verticalAlignment, windowRef]);
467
+ const height = containerRef.current?.getBoundingClientRect().height;
468
+ const width = containerRef.current?.getBoundingClientRect().width;
469
+ useEffect6(() => {
470
+ if (active && isMounted) {
471
+ calculate();
472
+ } else {
473
+ setStyle(void 0);
474
+ }
475
+ }, [calculate, active, isMounted, height, width]);
476
+ useEffect6(() => {
477
+ window.addEventListener("resize", calculate);
478
+ let timeout;
479
+ if (isPolling) {
480
+ timeout = setInterval(calculate, pollingInterval);
481
+ }
482
+ return () => {
483
+ window.removeEventListener("resize", calculate);
484
+ if (timeout) {
485
+ clearInterval(timeout);
486
+ }
487
+ };
488
+ }, [calculate, isPolling, pollingInterval]);
489
+ return style;
490
+ }
491
+
492
+ // src/hooks/useHoverState.ts
493
+ import { useEffect as useEffect7, useState as useState5 } from "react";
494
+ var defaultUseHoverStateProps = {
495
+ closingDelay: 200,
496
+ isDisabled: false
497
+ };
498
+ var useHoverState = (props = void 0) => {
499
+ const { closingDelay, isDisabled } = { ...defaultUseHoverStateProps, ...props };
500
+ const [isHovered, setIsHovered] = useState5(false);
501
+ const [timer, setTimer] = useState5();
502
+ const onMouseEnter = () => {
503
+ if (isDisabled) {
504
+ return;
505
+ }
506
+ clearTimeout(timer);
507
+ setIsHovered(true);
508
+ };
509
+ const onMouseLeave = () => {
510
+ if (isDisabled) {
511
+ return;
512
+ }
513
+ setTimer(setTimeout(() => {
514
+ setIsHovered(false);
515
+ }, closingDelay));
516
+ };
517
+ useEffect7(() => {
518
+ if (timer) {
519
+ return () => {
520
+ clearTimeout(timer);
521
+ };
522
+ }
523
+ });
524
+ useEffect7(() => {
525
+ if (timer) {
526
+ clearTimeout(timer);
527
+ }
528
+ }, [isDisabled]);
529
+ return {
530
+ isHovered,
531
+ setIsHovered,
532
+ handlers: { onMouseEnter, onMouseLeave }
533
+ };
534
+ };
535
+
536
+ // src/hooks/useLocalStorage.ts
537
+ import { useCallback as useCallback4, useState as useState6 } from "react";
538
+
539
+ // src/utils/storage.ts
540
+ var StorageService = class {
541
+ // this seems to be a bug in eslint as 'paramter-properties' is a special syntax of typescript
542
+ constructor(storage) {
543
+ this.storage = storage;
544
+ }
545
+ get(key) {
546
+ const value = this.storage.getItem(key);
547
+ if (value === null) {
548
+ return null;
549
+ }
550
+ return JSON.parse(value);
551
+ }
552
+ set(key, value) {
553
+ this.storage.setItem(key, JSON.stringify(value));
554
+ }
555
+ delete(key) {
556
+ this.storage.removeItem(key);
557
+ }
558
+ deleteAll() {
559
+ this.storage.clear();
560
+ }
561
+ };
562
+ var LocalStorageService = class extends StorageService {
563
+ constructor() {
564
+ super(window.localStorage);
565
+ }
566
+ };
567
+
568
+ // src/utils/resolveSetState.ts
569
+ function resolveSetState(action, prev) {
570
+ return typeof action === "function" ? action(prev) : action;
571
+ }
572
+
573
+ // src/hooks/useLocalStorage.ts
574
+ var useLocalStorage = (key, initValue) => {
575
+ const get = useCallback4(() => {
576
+ if (typeof window === "undefined") {
577
+ return initValue;
578
+ }
579
+ const storageService = new LocalStorageService();
580
+ const value = storageService.get(key);
581
+ return value || initValue;
582
+ }, [initValue, key]);
583
+ const [storedValue, setStoredValue] = useState6(get);
584
+ const setValue = useCallback4((action) => {
585
+ const newValue = resolveSetState(action, storedValue);
586
+ const storageService = new LocalStorageService();
587
+ storageService.set(key, newValue);
588
+ setStoredValue(newValue);
589
+ }, [storedValue, setStoredValue, key]);
590
+ return [storedValue, setValue];
591
+ };
592
+
593
+ // src/hooks/useLogOnce.ts
594
+ import { useEffect as useEffect8, useState as useState7 } from "react";
595
+ var defaultOptions2 = {
596
+ type: "warning"
597
+ };
598
+ var useLogOnce = (message, condition, options) => {
599
+ const [hasLogged, setHasLogged] = useState7(false);
600
+ const { type } = { ...defaultOptions2, ...options };
601
+ useEffect8(() => {
602
+ if (!hasLogged && condition) {
603
+ switch (type) {
604
+ case "info":
605
+ console.info(message);
606
+ break;
607
+ case "error":
608
+ console.error(message);
609
+ break;
610
+ case "warning":
611
+ console.warn(message);
612
+ break;
613
+ }
614
+ setHasLogged(true);
615
+ }
616
+ }, [condition]);
617
+ };
618
+
619
+ // src/hooks/useOutsideClick.ts
620
+ import { useEffect as useEffect9 } from "react";
621
+ var useOutsideClick = (refs, handler) => {
622
+ useEffect9(() => {
623
+ const listener = (event) => {
624
+ if (event.target === null) return;
625
+ if (refs.some((ref) => !ref.current || ref.current.contains(event.target))) {
626
+ return;
627
+ }
628
+ handler();
629
+ };
630
+ document.addEventListener("mousedown", listener);
631
+ document.addEventListener("touchstart", listener);
632
+ return () => {
633
+ document.removeEventListener("mousedown", listener);
634
+ document.removeEventListener("touchstart", listener);
635
+ };
636
+ }, [refs, handler]);
637
+ };
638
+
639
+ // src/hooks/usePopoverPosition.ts
640
+ var defaultPopoverPositionOptions = {
641
+ edgePadding: 16,
642
+ outerGap: 4,
643
+ horizontalAlignment: "leftInside",
644
+ verticalAlignment: "bottomOutside",
645
+ disabled: false
646
+ };
647
+ var usePopoverPosition = (trigger, options) => {
648
+ const {
649
+ edgePadding,
650
+ outerGap,
651
+ verticalAlignment,
652
+ horizontalAlignment,
653
+ disabled
654
+ } = { ...defaultPopoverPositionOptions, ...options };
655
+ if (disabled || !trigger) {
656
+ return {};
657
+ }
658
+ const left = {
659
+ leftOutside: trigger.left - outerGap,
660
+ leftInside: trigger.left,
661
+ rightOutside: trigger.right + outerGap,
662
+ rightInside: trigger.right,
663
+ center: trigger.left + trigger.width / 2
664
+ }[horizontalAlignment];
665
+ const top = {
666
+ topOutside: trigger.top - outerGap,
667
+ topInside: trigger.top,
668
+ bottomOutside: trigger.bottom + outerGap,
669
+ bottomInside: trigger.bottom,
670
+ center: trigger.top + trigger.height / 2
671
+ }[verticalAlignment];
672
+ const translateX = {
673
+ leftOutside: "-100%",
674
+ leftInside: void 0,
675
+ rightOutside: void 0,
676
+ rightInside: "-100%",
677
+ center: "-50%"
678
+ }[horizontalAlignment];
679
+ const translateY = {
680
+ topOutside: "-100%",
681
+ topInside: void 0,
682
+ bottomOutside: void 0,
683
+ bottomInside: "-100%",
684
+ center: "-50%"
685
+ }[verticalAlignment];
686
+ return {
687
+ left: Math.max(left, edgePadding),
688
+ top: Math.max(top, edgePadding),
689
+ translate: [translateX ?? "0", translateY ?? "0"].join(" ")
690
+ };
691
+ };
692
+
693
+ // src/hooks/useRerender.ts
694
+ import { useReducer } from "react";
695
+ var useRerender = () => {
696
+ return useReducer(() => ({}), {})[1];
697
+ };
698
+
699
+ // src/hooks/useResizeCallbackWrapper.ts
700
+ import { useEffect as useEffect10 } from "react";
701
+ var useResizeCallbackWrapper = (callback) => {
702
+ useEffect10(() => {
703
+ window.addEventListener("resize", callback);
704
+ return () => {
705
+ window.removeEventListener("resize", callback);
706
+ };
707
+ }, [callback]);
708
+ };
709
+
710
+ // src/hooks/useSearch.ts
711
+ import { useCallback as useCallback5, useEffect as useEffect11, useMemo, useState as useState8 } from "react";
712
+
713
+ // src/utils/simpleSearch.ts
714
+ var MultiSubjectSearchWithMapping = (search, objects, mapping) => {
715
+ return objects.filter((object) => {
716
+ const mappedSearchKeywords = mapping(object)?.map((value) => value.toLowerCase().trim());
717
+ if (!mappedSearchKeywords) {
718
+ return true;
719
+ }
720
+ return search.every((searchValue) => !!mappedSearchKeywords.find((value) => !!value && value.includes(searchValue.toLowerCase().trim())));
721
+ });
722
+ };
723
+
724
+ // src/hooks/useSearch.ts
725
+ var useSearch = ({
726
+ list,
727
+ initialSearch,
728
+ searchMapping,
729
+ additionalSearchTags,
730
+ isSearchInstant = true,
731
+ sortingFunction,
732
+ filter,
733
+ disabled = false
734
+ }) => {
735
+ const [search, setSearch] = useState8(initialSearch ?? "");
736
+ const [result, setResult] = useState8(list);
737
+ const searchTags = useMemo(() => additionalSearchTags ?? [], [additionalSearchTags]);
738
+ const updateSearch = useCallback5((newSearch) => {
739
+ const usedSearch = newSearch ?? search;
740
+ if (newSearch) {
741
+ setSearch(search);
742
+ }
743
+ setResult(MultiSubjectSearchWithMapping([usedSearch, ...searchTags], list, searchMapping));
744
+ }, [searchTags, list, search, searchMapping]);
745
+ useEffect11(() => {
746
+ if (isSearchInstant) {
747
+ setResult(MultiSubjectSearchWithMapping([search, ...searchTags], list, searchMapping));
748
+ }
749
+ }, [searchTags, isSearchInstant, list, search, searchMapping, additionalSearchTags]);
750
+ const filteredResult = useMemo(() => {
751
+ if (!filter) {
752
+ return result;
753
+ }
754
+ return result.filter(filter);
755
+ }, [result, filter]);
756
+ const sortedAndFilteredResult = useMemo(() => {
757
+ if (!sortingFunction) {
758
+ return filteredResult;
759
+ }
760
+ return filteredResult.sort(sortingFunction);
761
+ }, [filteredResult, sortingFunction]);
762
+ const usedResult = useMemo(() => {
763
+ if (!disabled) {
764
+ return sortedAndFilteredResult;
765
+ }
766
+ return list;
767
+ }, [disabled, list, sortedAndFilteredResult]);
768
+ return {
769
+ result: usedResult,
770
+ hasResult: usedResult.length > 0,
771
+ allItems: list,
772
+ updateSearch,
773
+ search,
774
+ setSearch
775
+ };
776
+ };
777
+ export {
778
+ useDelay,
779
+ useFloatingElement,
780
+ useFocusGuards,
781
+ useFocusManagement,
782
+ useFocusOnceVisible,
783
+ useFocusTrap,
784
+ useHoverState,
785
+ useIsMounted,
786
+ useLocalStorage,
787
+ useLogOnce,
788
+ useOutsideClick,
789
+ usePopoverPosition,
790
+ useRerender,
791
+ useResizeCallbackWrapper,
792
+ useSearch
793
+ };
794
+ //# sourceMappingURL=index.mjs.map