@intlayer/design-system 8.12.1 → 8.12.3

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 (804) hide show
  1. package/dist/esm/api/hooks/ai.mjs.map +1 -1
  2. package/dist/esm/api/hooks/audit.mjs.map +1 -1
  3. package/dist/esm/api/hooks/auth.mjs +14 -8
  4. package/dist/esm/api/hooks/auth.mjs.map +1 -1
  5. package/dist/esm/api/hooks/bitbucket.mjs.map +1 -1
  6. package/dist/esm/api/hooks/dictionary.mjs.map +1 -1
  7. package/dist/esm/api/hooks/discussions.mjs.map +1 -1
  8. package/dist/esm/api/hooks/editor.mjs.map +1 -1
  9. package/dist/esm/api/hooks/environment.mjs +111 -0
  10. package/dist/esm/api/hooks/environment.mjs.map +1 -0
  11. package/dist/esm/api/hooks/github.mjs.map +1 -1
  12. package/dist/esm/api/hooks/gitlab.mjs.map +1 -1
  13. package/dist/esm/api/hooks/newsletter.mjs.map +1 -1
  14. package/dist/esm/api/hooks/organization.mjs.map +1 -1
  15. package/dist/esm/api/hooks/project.mjs +1 -102
  16. package/dist/esm/api/hooks/project.mjs.map +1 -1
  17. package/dist/esm/api/hooks/reviewer.mjs.map +1 -1
  18. package/dist/esm/api/hooks/search.mjs.map +1 -1
  19. package/dist/esm/api/hooks/showcaseProject.mjs.map +1 -1
  20. package/dist/esm/api/hooks/stripe.mjs.map +1 -1
  21. package/dist/esm/api/hooks/tag.mjs.map +1 -1
  22. package/dist/esm/api/hooks/translate.mjs.map +1 -1
  23. package/dist/esm/api/hooks/user.mjs.map +1 -1
  24. package/dist/esm/api/hooks/utils.mjs.map +1 -1
  25. package/dist/esm/api/index.mjs +6 -5
  26. package/dist/esm/api/useAuth/useAuth.mjs.map +1 -1
  27. package/dist/esm/api/useAuth/useOAuth2.mjs +1 -1
  28. package/dist/esm/api/useAuth/useOAuth2.mjs.map +1 -1
  29. package/dist/esm/api/useAuth/useSession.mjs +1 -1
  30. package/dist/esm/api/useAuth/useSession.mjs.map +1 -1
  31. package/dist/esm/api/useIntlayerAPI.mjs +6 -1
  32. package/dist/esm/api/useIntlayerAPI.mjs.map +1 -1
  33. package/dist/esm/api/useUser/index.mjs.map +1 -1
  34. package/dist/esm/components/Accordion/Accordion.mjs.map +1 -1
  35. package/dist/esm/components/Avatar/image.mjs.map +1 -1
  36. package/dist/esm/components/Avatar/index.mjs.map +1 -1
  37. package/dist/esm/components/Badge/index.mjs.map +1 -1
  38. package/dist/esm/components/Breadcrumb/breadcrumb.content.mjs.map +1 -1
  39. package/dist/esm/components/Breadcrumb/index.mjs.map +1 -1
  40. package/dist/esm/components/Browser/Browser.content.mjs.map +1 -1
  41. package/dist/esm/components/Browser/Browser.mjs.map +1 -1
  42. package/dist/esm/components/Browser/extractUrlFromSitemap.mjs.map +1 -1
  43. package/dist/esm/components/Button/Button.mjs +1 -1
  44. package/dist/esm/components/Button/Button.mjs.map +1 -1
  45. package/dist/esm/components/Carousel/index.content.mjs.map +1 -1
  46. package/dist/esm/components/Carousel/index.mjs.map +1 -1
  47. package/dist/esm/components/ClickOutsideDiv/index.mjs.map +1 -1
  48. package/dist/esm/components/CollapsibleTable/CollapsibleTable.mjs.map +1 -1
  49. package/dist/esm/components/Command/index.mjs +1 -1
  50. package/dist/esm/components/Command/index.mjs.map +1 -1
  51. package/dist/esm/components/Container/index.mjs.map +1 -1
  52. package/dist/esm/components/ContentEditor/ContentEditor.mjs.map +1 -1
  53. package/dist/esm/components/ContentEditor/ContentEditorInput.mjs.map +1 -1
  54. package/dist/esm/components/ContentEditor/ContentEditorTextArea.mjs +1 -1
  55. package/dist/esm/components/ContentEditor/ContentEditorTextArea.mjs.map +1 -1
  56. package/dist/esm/components/ContentSelector/ContentSelector.mjs.map +1 -1
  57. package/dist/esm/components/CopyButton/CopyButton.content.mjs.map +1 -1
  58. package/dist/esm/components/CopyButton/index.mjs.map +1 -1
  59. package/dist/esm/components/CopyToClipboard/index.mjs.map +1 -1
  60. package/dist/esm/components/DictionaryEditor/DictionaryEditor.mjs.map +1 -1
  61. package/dist/esm/components/DictionaryEditor/ItemLayout.mjs.map +1 -1
  62. package/dist/esm/components/DictionaryEditor/NodeWrapper/ArrayWrapper.mjs.map +1 -1
  63. package/dist/esm/components/DictionaryEditor/NodeWrapper/BooleanWrapper.mjs.map +1 -1
  64. package/dist/esm/components/DictionaryEditor/NodeWrapper/ConditionWrapper.mjs.map +1 -1
  65. package/dist/esm/components/DictionaryEditor/NodeWrapper/EnumerationWrapper.mjs.map +1 -1
  66. package/dist/esm/components/DictionaryEditor/NodeWrapper/FileWrapper.mjs.map +1 -1
  67. package/dist/esm/components/DictionaryEditor/NodeWrapper/HtmlWrapper.mjs.map +1 -1
  68. package/dist/esm/components/DictionaryEditor/NodeWrapper/InsertionWrapper.mjs.map +1 -1
  69. package/dist/esm/components/DictionaryEditor/NodeWrapper/MarkdownWrapper.mjs.map +1 -1
  70. package/dist/esm/components/DictionaryEditor/NodeWrapper/NestedObjectWrapper.mjs.map +1 -1
  71. package/dist/esm/components/DictionaryEditor/NodeWrapper/NumberWrapper.mjs.map +1 -1
  72. package/dist/esm/components/DictionaryEditor/NodeWrapper/PluralWrapper.mjs.map +1 -1
  73. package/dist/esm/components/DictionaryEditor/NodeWrapper/StringWrapper.mjs.map +1 -1
  74. package/dist/esm/components/DictionaryEditor/NodeWrapper/TranslationWrapper.mjs.map +1 -1
  75. package/dist/esm/components/DictionaryEditor/NodeWrapper/index.mjs.map +1 -1
  76. package/dist/esm/components/DictionaryFieldEditor/ContentEditor.mjs.map +1 -1
  77. package/dist/esm/components/DictionaryFieldEditor/ContentEditorView/SafeHtmlRenderer.mjs.map +1 -1
  78. package/dist/esm/components/DictionaryFieldEditor/ContentEditorView/TextEditor.mjs +2 -2
  79. package/dist/esm/components/DictionaryFieldEditor/ContentEditorView/TextEditor.mjs.map +1 -1
  80. package/dist/esm/components/DictionaryFieldEditor/ContentEditorView/object.mjs.map +1 -1
  81. package/dist/esm/components/DictionaryFieldEditor/DictionaryCreationForm/DictionaryCreationForm.mjs.map +1 -1
  82. package/dist/esm/components/DictionaryFieldEditor/DictionaryCreationForm/dictionaryCreationForm.content.mjs.map +1 -1
  83. package/dist/esm/components/DictionaryFieldEditor/DictionaryCreationForm/useDictionaryFormSchema.content.mjs.map +1 -1
  84. package/dist/esm/components/DictionaryFieldEditor/DictionaryCreationForm/useDictionaryFormSchema.mjs.map +1 -1
  85. package/dist/esm/components/DictionaryFieldEditor/DictionaryDetails/DictionaryDetailsForm.mjs +3 -3
  86. package/dist/esm/components/DictionaryFieldEditor/DictionaryDetails/DictionaryDetailsForm.mjs.map +1 -1
  87. package/dist/esm/components/DictionaryFieldEditor/DictionaryDetails/dictionaryDetails.content.mjs.map +1 -1
  88. package/dist/esm/components/DictionaryFieldEditor/DictionaryDetails/useDictionaryDetailsSchema.content.mjs.map +1 -1
  89. package/dist/esm/components/DictionaryFieldEditor/DictionaryDetails/useDictionaryDetailsSchema.mjs.map +1 -1
  90. package/dist/esm/components/DictionaryFieldEditor/DictionaryFieldEditor.mjs +1 -1
  91. package/dist/esm/components/DictionaryFieldEditor/DictionaryFieldEditor.mjs.map +1 -1
  92. package/dist/esm/components/DictionaryFieldEditor/EnumKeyInput.mjs.map +1 -1
  93. package/dist/esm/components/DictionaryFieldEditor/JSONEditor.mjs.map +1 -1
  94. package/dist/esm/components/DictionaryFieldEditor/KeyPathBreadcrumb.mjs.map +1 -1
  95. package/dist/esm/components/DictionaryFieldEditor/NavigationView/NavigationViewNode.mjs +1 -1
  96. package/dist/esm/components/DictionaryFieldEditor/NavigationView/NavigationViewNode.mjs.map +1 -1
  97. package/dist/esm/components/DictionaryFieldEditor/NavigationView/navigationViewNode.content.mjs.map +1 -1
  98. package/dist/esm/components/DictionaryFieldEditor/NodeTypeSelector.mjs.map +1 -1
  99. package/dist/esm/components/DictionaryFieldEditor/SaveForm/SaveForm.mjs +9 -4
  100. package/dist/esm/components/DictionaryFieldEditor/SaveForm/SaveForm.mjs.map +1 -1
  101. package/dist/esm/components/DictionaryFieldEditor/SaveForm/saveForm.content.mjs.map +1 -1
  102. package/dist/esm/components/DictionaryFieldEditor/StructureEditor.mjs.map +1 -1
  103. package/dist/esm/components/DictionaryFieldEditor/StructureView/StructureView.mjs +1 -1
  104. package/dist/esm/components/DictionaryFieldEditor/StructureView/StructureView.mjs.map +1 -1
  105. package/dist/esm/components/DictionaryFieldEditor/StructureView/structureView.content.mjs.map +1 -1
  106. package/dist/esm/components/DictionaryFieldEditor/VersionSwitcherDropDown/VersionSwitcher.mjs.map +1 -1
  107. package/dist/esm/components/DictionaryFieldEditor/VersionSwitcherDropDown/VersionSwitcherContext.mjs.map +1 -1
  108. package/dist/esm/components/DictionaryFieldEditor/VersionSwitcherDropDown/versionSwitcherDropDown.content.mjs.map +1 -1
  109. package/dist/esm/components/DictionaryFieldEditor/dictionaryFieldEditor.content.mjs.map +1 -1
  110. package/dist/esm/components/DictionaryFieldEditor/getIsEditableSection.mjs.map +1 -1
  111. package/dist/esm/components/DictionaryFieldEditor/nodeTypeSelector.content.mjs.map +1 -1
  112. package/dist/esm/components/DropDown/index.mjs.map +1 -1
  113. package/dist/esm/components/EditableField/EditableFieldInput.mjs.map +1 -1
  114. package/dist/esm/components/EditableField/EditableFieldLayout.mjs.map +1 -1
  115. package/dist/esm/components/EditableField/EditableFieldTextArea.mjs.map +1 -1
  116. package/dist/esm/components/ExpandCollapse/ExpandCollapse.mjs.map +1 -1
  117. package/dist/esm/components/ExpandCollapse/expandCollapse.content.mjs.map +1 -1
  118. package/dist/esm/components/Flags/Flag.mjs +6 -2
  119. package/dist/esm/components/Flags/Flag.mjs.map +1 -1
  120. package/dist/esm/components/Flags/ae.mjs.map +1 -1
  121. package/dist/esm/components/Flags/af.mjs.map +1 -1
  122. package/dist/esm/components/Flags/al.mjs.map +1 -1
  123. package/dist/esm/components/Flags/am.mjs.map +1 -1
  124. package/dist/esm/components/Flags/ar.mjs.map +1 -1
  125. package/dist/esm/components/Flags/at.mjs.map +1 -1
  126. package/dist/esm/components/Flags/au.mjs.map +1 -1
  127. package/dist/esm/components/Flags/az.mjs.map +1 -1
  128. package/dist/esm/components/Flags/ba.mjs.map +1 -1
  129. package/dist/esm/components/Flags/bd.mjs.map +1 -1
  130. package/dist/esm/components/Flags/be.mjs.map +1 -1
  131. package/dist/esm/components/Flags/bg.mjs.map +1 -1
  132. package/dist/esm/components/Flags/bh.mjs.map +1 -1
  133. package/dist/esm/components/Flags/bn.mjs.map +1 -1
  134. package/dist/esm/components/Flags/bo.mjs.map +1 -1
  135. package/dist/esm/components/Flags/br.mjs.map +1 -1
  136. package/dist/esm/components/Flags/bw.mjs.map +1 -1
  137. package/dist/esm/components/Flags/by.mjs.map +1 -1
  138. package/dist/esm/components/Flags/bz.mjs.map +1 -1
  139. package/dist/esm/components/Flags/ca.mjs.map +1 -1
  140. package/dist/esm/components/Flags/ch.mjs.map +1 -1
  141. package/dist/esm/components/Flags/cl.mjs.map +1 -1
  142. package/dist/esm/components/Flags/cn.mjs.map +1 -1
  143. package/dist/esm/components/Flags/co.mjs.map +1 -1
  144. package/dist/esm/components/Flags/cr.mjs.map +1 -1
  145. package/dist/esm/components/Flags/cu.mjs.map +1 -1
  146. package/dist/esm/components/Flags/cv.mjs.map +1 -1
  147. package/dist/esm/components/Flags/cz.mjs.map +1 -1
  148. package/dist/esm/components/Flags/de.mjs.map +1 -1
  149. package/dist/esm/components/Flags/dj.mjs.map +1 -1
  150. package/dist/esm/components/Flags/dk.mjs.map +1 -1
  151. package/dist/esm/components/Flags/do.mjs.map +1 -1
  152. package/dist/esm/components/Flags/dz.mjs.map +1 -1
  153. package/dist/esm/components/Flags/ec.mjs.map +1 -1
  154. package/dist/esm/components/Flags/ee.mjs.map +1 -1
  155. package/dist/esm/components/Flags/eg.mjs.map +1 -1
  156. package/dist/esm/components/Flags/es-ct.mjs.map +1 -1
  157. package/dist/esm/components/Flags/es-ga.mjs.map +1 -1
  158. package/dist/esm/components/Flags/es-pv.mjs.map +1 -1
  159. package/dist/esm/components/Flags/es.mjs.map +1 -1
  160. package/dist/esm/components/Flags/et.mjs.map +1 -1
  161. package/dist/esm/components/Flags/fi.mjs.map +1 -1
  162. package/dist/esm/components/Flags/flags.mjs.map +1 -1
  163. package/dist/esm/components/Flags/fo.mjs.map +1 -1
  164. package/dist/esm/components/Flags/fr.mjs.map +1 -1
  165. package/dist/esm/components/Flags/gb-wls.mjs.map +1 -1
  166. package/dist/esm/components/Flags/gb.mjs.map +1 -1
  167. package/dist/esm/components/Flags/ge.mjs.map +1 -1
  168. package/dist/esm/components/Flags/gh.mjs.map +1 -1
  169. package/dist/esm/components/Flags/gr.mjs.map +1 -1
  170. package/dist/esm/components/Flags/gt.mjs.map +1 -1
  171. package/dist/esm/components/Flags/gw.mjs.map +1 -1
  172. package/dist/esm/components/Flags/hk.mjs.map +1 -1
  173. package/dist/esm/components/Flags/hn.mjs.map +1 -1
  174. package/dist/esm/components/Flags/hr.mjs.map +1 -1
  175. package/dist/esm/components/Flags/hu.mjs.map +1 -1
  176. package/dist/esm/components/Flags/id.mjs.map +1 -1
  177. package/dist/esm/components/Flags/ie.mjs.map +1 -1
  178. package/dist/esm/components/Flags/il.mjs.map +1 -1
  179. package/dist/esm/components/Flags/in.mjs.map +1 -1
  180. package/dist/esm/components/Flags/iq.mjs.map +1 -1
  181. package/dist/esm/components/Flags/ir.mjs.map +1 -1
  182. package/dist/esm/components/Flags/is.mjs.map +1 -1
  183. package/dist/esm/components/Flags/it.mjs.map +1 -1
  184. package/dist/esm/components/Flags/jm.mjs.map +1 -1
  185. package/dist/esm/components/Flags/jo.mjs.map +1 -1
  186. package/dist/esm/components/Flags/jp.mjs.map +1 -1
  187. package/dist/esm/components/Flags/ke.mjs.map +1 -1
  188. package/dist/esm/components/Flags/kg.mjs.map +1 -1
  189. package/dist/esm/components/Flags/kh.mjs.map +1 -1
  190. package/dist/esm/components/Flags/km.mjs.map +1 -1
  191. package/dist/esm/components/Flags/kr.mjs.map +1 -1
  192. package/dist/esm/components/Flags/kw.mjs.map +1 -1
  193. package/dist/esm/components/Flags/kz.mjs.map +1 -1
  194. package/dist/esm/components/Flags/la.mjs.map +1 -1
  195. package/dist/esm/components/Flags/lb.mjs.map +1 -1
  196. package/dist/esm/components/Flags/li.mjs.map +1 -1
  197. package/dist/esm/components/Flags/lk.mjs.map +1 -1
  198. package/dist/esm/components/Flags/lt.mjs.map +1 -1
  199. package/dist/esm/components/Flags/lu.mjs.map +1 -1
  200. package/dist/esm/components/Flags/lv.mjs.map +1 -1
  201. package/dist/esm/components/Flags/ly.mjs.map +1 -1
  202. package/dist/esm/components/Flags/ma.mjs.map +1 -1
  203. package/dist/esm/components/Flags/mc.mjs.map +1 -1
  204. package/dist/esm/components/Flags/md.mjs.map +1 -1
  205. package/dist/esm/components/Flags/mk.mjs.map +1 -1
  206. package/dist/esm/components/Flags/mm.mjs.map +1 -1
  207. package/dist/esm/components/Flags/mn.mjs.map +1 -1
  208. package/dist/esm/components/Flags/mo.mjs.map +1 -1
  209. package/dist/esm/components/Flags/mr.mjs.map +1 -1
  210. package/dist/esm/components/Flags/mt.mjs.map +1 -1
  211. package/dist/esm/components/Flags/mv.mjs.map +1 -1
  212. package/dist/esm/components/Flags/mx.mjs.map +1 -1
  213. package/dist/esm/components/Flags/my.mjs.map +1 -1
  214. package/dist/esm/components/Flags/mz.mjs.map +1 -1
  215. package/dist/esm/components/Flags/ng.mjs.map +1 -1
  216. package/dist/esm/components/Flags/ni.mjs.map +1 -1
  217. package/dist/esm/components/Flags/nl.mjs.map +1 -1
  218. package/dist/esm/components/Flags/no.mjs.map +1 -1
  219. package/dist/esm/components/Flags/np.mjs.map +1 -1
  220. package/dist/esm/components/Flags/nz.mjs.map +1 -1
  221. package/dist/esm/components/Flags/om.mjs.map +1 -1
  222. package/dist/esm/components/Flags/pa.mjs.map +1 -1
  223. package/dist/esm/components/Flags/pe.mjs.map +1 -1
  224. package/dist/esm/components/Flags/ph.mjs.map +1 -1
  225. package/dist/esm/components/Flags/pk.mjs.map +1 -1
  226. package/dist/esm/components/Flags/pl.mjs.map +1 -1
  227. package/dist/esm/components/Flags/pr.mjs.map +1 -1
  228. package/dist/esm/components/Flags/ps.mjs.map +1 -1
  229. package/dist/esm/components/Flags/pt.mjs.map +1 -1
  230. package/dist/esm/components/Flags/py.mjs.map +1 -1
  231. package/dist/esm/components/Flags/qa.mjs.map +1 -1
  232. package/dist/esm/components/Flags/ro.mjs.map +1 -1
  233. package/dist/esm/components/Flags/rs.mjs.map +1 -1
  234. package/dist/esm/components/Flags/ru.mjs.map +1 -1
  235. package/dist/esm/components/Flags/sa.mjs.map +1 -1
  236. package/dist/esm/components/Flags/sd.mjs.map +1 -1
  237. package/dist/esm/components/Flags/se.mjs.map +1 -1
  238. package/dist/esm/components/Flags/sg.mjs.map +1 -1
  239. package/dist/esm/components/Flags/si.mjs.map +1 -1
  240. package/dist/esm/components/Flags/sk.mjs.map +1 -1
  241. package/dist/esm/components/Flags/so.mjs.map +1 -1
  242. package/dist/esm/components/Flags/st.mjs.map +1 -1
  243. package/dist/esm/components/Flags/sv.mjs.map +1 -1
  244. package/dist/esm/components/Flags/sy.mjs.map +1 -1
  245. package/dist/esm/components/Flags/td.mjs.map +1 -1
  246. package/dist/esm/components/Flags/th.mjs.map +1 -1
  247. package/dist/esm/components/Flags/tl.mjs.map +1 -1
  248. package/dist/esm/components/Flags/tn.mjs.map +1 -1
  249. package/dist/esm/components/Flags/tr.mjs.map +1 -1
  250. package/dist/esm/components/Flags/tt.mjs.map +1 -1
  251. package/dist/esm/components/Flags/tw.mjs.map +1 -1
  252. package/dist/esm/components/Flags/tz.mjs.map +1 -1
  253. package/dist/esm/components/Flags/ua.mjs.map +1 -1
  254. package/dist/esm/components/Flags/ug.mjs.map +1 -1
  255. package/dist/esm/components/Flags/us.mjs.map +1 -1
  256. package/dist/esm/components/Flags/uy.mjs.map +1 -1
  257. package/dist/esm/components/Flags/uz.mjs.map +1 -1
  258. package/dist/esm/components/Flags/ve.mjs.map +1 -1
  259. package/dist/esm/components/Flags/vn.mjs.map +1 -1
  260. package/dist/esm/components/Flags/xx.mjs.map +1 -1
  261. package/dist/esm/components/Flags/ye.mjs.map +1 -1
  262. package/dist/esm/components/Flags/za.mjs.map +1 -1
  263. package/dist/esm/components/Flags/zw.mjs.map +1 -1
  264. package/dist/esm/components/Footer/index.mjs +1 -1
  265. package/dist/esm/components/Footer/index.mjs.map +1 -1
  266. package/dist/esm/components/Form/FormBase.mjs +11 -0
  267. package/dist/esm/components/Form/FormBase.mjs.map +1 -1
  268. package/dist/esm/components/Form/FormControl.mjs.map +1 -1
  269. package/dist/esm/components/Form/FormDescription.mjs.map +1 -1
  270. package/dist/esm/components/Form/FormField.mjs.map +1 -1
  271. package/dist/esm/components/Form/FormItem.mjs.map +1 -1
  272. package/dist/esm/components/Form/FormLabel.mjs.map +1 -1
  273. package/dist/esm/components/Form/FormMessage.mjs.map +1 -1
  274. package/dist/esm/components/Form/elements/AutoSizeTextAreaElement.mjs.map +1 -1
  275. package/dist/esm/components/Form/elements/CheckboxElement.mjs.map +1 -1
  276. package/dist/esm/components/Form/elements/EditableFieldInputElement.mjs.map +1 -1
  277. package/dist/esm/components/Form/elements/EditableFieldTextAreaElement.mjs.map +1 -1
  278. package/dist/esm/components/Form/elements/FormElement.mjs.map +1 -1
  279. package/dist/esm/components/Form/elements/FormElementWrapper.mjs.map +1 -1
  280. package/dist/esm/components/Form/elements/InputElement.mjs.map +1 -1
  281. package/dist/esm/components/Form/elements/InputPasswordElement.mjs.map +1 -1
  282. package/dist/esm/components/Form/elements/MultiselectElement.mjs.map +1 -1
  283. package/dist/esm/components/Form/elements/OTPElement.mjs +1 -1
  284. package/dist/esm/components/Form/elements/OTPElement.mjs.map +1 -1
  285. package/dist/esm/components/Form/elements/SearchInputElement.mjs.map +1 -1
  286. package/dist/esm/components/Form/elements/SelectElement.mjs.map +1 -1
  287. package/dist/esm/components/Form/elements/SwitchSelectorElement.mjs +4 -0
  288. package/dist/esm/components/Form/elements/SwitchSelectorElement.mjs.map +1 -1
  289. package/dist/esm/components/Form/elements/TextAreaElement.mjs.map +1 -1
  290. package/dist/esm/components/Form/layout/FormItemLayout.mjs.map +1 -1
  291. package/dist/esm/components/Form/layout/FormLabelLayout.mjs.map +1 -1
  292. package/dist/esm/components/Form/layout/RequiredStar.mjs.map +1 -1
  293. package/dist/esm/components/HTMLRender/HTMLRender.mjs.map +1 -1
  294. package/dist/esm/components/Headers/index.mjs +1 -1
  295. package/dist/esm/components/Headers/index.mjs.map +1 -1
  296. package/dist/esm/components/HeightResizer/index.mjs +25 -17
  297. package/dist/esm/components/HeightResizer/index.mjs.map +1 -1
  298. package/dist/esm/components/HideShow/index.mjs.map +1 -1
  299. package/dist/esm/components/IDE/Code.mjs.map +1 -1
  300. package/dist/esm/components/IDE/CodeBlockClient.mjs.map +1 -1
  301. package/dist/esm/components/IDE/CodeBlockHighlight.mjs.map +1 -1
  302. package/dist/esm/components/IDE/CodeBlockServer.mjs.map +1 -1
  303. package/dist/esm/components/IDE/CodeBlockShiki.mjs +1 -1
  304. package/dist/esm/components/IDE/CodeBlockShiki.mjs.map +1 -1
  305. package/dist/esm/components/IDE/CodeConditionalRenderer.mjs.map +1 -1
  306. package/dist/esm/components/IDE/CodeContext.mjs.map +1 -1
  307. package/dist/esm/components/IDE/CodeFormatSelector.mjs.map +1 -1
  308. package/dist/esm/components/IDE/ContentDeclarationFormatSelector.mjs.map +1 -1
  309. package/dist/esm/components/IDE/CopyCode.mjs.map +1 -1
  310. package/dist/esm/components/IDE/FileList.mjs.map +1 -1
  311. package/dist/esm/components/IDE/FileTree.mjs +1 -1
  312. package/dist/esm/components/IDE/FileTree.mjs.map +1 -1
  313. package/dist/esm/components/IDE/IDE.mjs.map +1 -1
  314. package/dist/esm/components/IDE/MarkDownRender.mjs.map +1 -1
  315. package/dist/esm/components/IDE/MonacoCode.mjs.map +1 -1
  316. package/dist/esm/components/IDE/PackageManagerSelector.mjs.map +1 -1
  317. package/dist/esm/components/IDE/code.content.mjs.map +1 -1
  318. package/dist/esm/components/IDE/codeTransformer.mjs.map +1 -1
  319. package/dist/esm/components/IDE/copyCode.content.mjs.map +1 -1
  320. package/dist/esm/components/IDE/createFileTree.mjs.map +1 -1
  321. package/dist/esm/components/IDE/selectors.content.mjs.map +1 -1
  322. package/dist/esm/components/InformationTag/index.mjs.map +1 -1
  323. package/dist/esm/components/Input/Checkbox.mjs.map +1 -1
  324. package/dist/esm/components/Input/Input.mjs.map +1 -1
  325. package/dist/esm/components/Input/InputPassword.mjs.map +1 -1
  326. package/dist/esm/components/Input/OTPInput.mjs.map +1 -1
  327. package/dist/esm/components/Input/Radio.mjs.map +1 -1
  328. package/dist/esm/components/Input/SearchInput.mjs.map +1 -1
  329. package/dist/esm/components/KeyboardScreenAdapter/index.mjs.map +1 -1
  330. package/dist/esm/components/KeyboardShortcut/KeyboardShortcut.mjs.map +1 -1
  331. package/dist/esm/components/Label/index.mjs.map +1 -1
  332. package/dist/esm/components/LanguageBackground/LanguageBackground.mjs +23 -0
  333. package/dist/esm/components/LanguageBackground/LanguageBackground.mjs.map +1 -0
  334. package/dist/esm/components/LanguageBackground/LanguageSection.mjs.map +1 -1
  335. package/dist/esm/components/LanguageBackground/index.mjs +2 -22
  336. package/dist/esm/components/Link/Link.mjs +10 -9
  337. package/dist/esm/components/Link/Link.mjs.map +1 -1
  338. package/dist/esm/components/Loader/index.content.mjs.map +1 -1
  339. package/dist/esm/components/Loader/index.mjs +1 -1
  340. package/dist/esm/components/Loader/index.mjs.map +1 -1
  341. package/dist/esm/components/Loader/spinner.mjs.map +1 -1
  342. package/dist/esm/components/LocaleSwitcherContentDropDown/LocaleSwitcherContent.mjs +1 -1
  343. package/dist/esm/components/LocaleSwitcherContentDropDown/LocaleSwitcherContent.mjs.map +1 -1
  344. package/dist/esm/components/LocaleSwitcherContentDropDown/LocaleSwitcherContentContext.mjs.map +1 -1
  345. package/dist/esm/components/LocaleSwitcherContentDropDown/localeSwitcher.content.mjs.map +1 -1
  346. package/dist/esm/components/LocaleSwitcherDropDown/LocaleSwitcher.mjs.map +1 -1
  347. package/dist/esm/components/LocaleSwitcherDropDown/localeSwitcher.content.mjs.map +1 -1
  348. package/dist/esm/components/Logo/Logo.mjs.map +1 -1
  349. package/dist/esm/components/Logo/LogoTextOnly.mjs.map +1 -1
  350. package/dist/esm/components/Logo/LogoWithText.mjs.map +1 -1
  351. package/dist/esm/components/Logo/LogoWithTextBelow.mjs.map +1 -1
  352. package/dist/esm/components/MarkDownRender/MarkDownIframe.mjs.map +1 -1
  353. package/dist/esm/components/MarkDownRender/MarkDownRender.mjs.map +1 -1
  354. package/dist/esm/components/MaxHeightSmoother/index.mjs.map +1 -1
  355. package/dist/esm/components/MaxWidthSmoother/index.mjs +14 -11
  356. package/dist/esm/components/MaxWidthSmoother/index.mjs.map +1 -1
  357. package/dist/esm/components/Modal/Modal.mjs +2 -2
  358. package/dist/esm/components/Modal/Modal.mjs.map +1 -1
  359. package/dist/esm/components/Navbar/Burger.mjs.map +1 -1
  360. package/dist/esm/components/Navbar/DesktopNavbar.mjs +1 -1
  361. package/dist/esm/components/Navbar/DesktopNavbar.mjs.map +1 -1
  362. package/dist/esm/components/Navbar/MobileNavbar.mjs +1 -1
  363. package/dist/esm/components/Navbar/MobileNavbar.mjs.map +1 -1
  364. package/dist/esm/components/Navbar/index.mjs.map +1 -1
  365. package/dist/esm/components/Navbar/useNavigation.mjs.map +1 -1
  366. package/dist/esm/components/Pagination/NumberItemsSelector.mjs.map +1 -1
  367. package/dist/esm/components/Pagination/Pagination.mjs +1 -1
  368. package/dist/esm/components/Pagination/Pagination.mjs.map +1 -1
  369. package/dist/esm/components/Pagination/ShowingResultsNumberItems.mjs.map +1 -1
  370. package/dist/esm/components/Pagination/pagination.content.mjs.map +1 -1
  371. package/dist/esm/components/Pattern/DotPattern.mjs.map +1 -1
  372. package/dist/esm/components/Pattern/GridPattern.mjs.map +1 -1
  373. package/dist/esm/components/Pattern/SpotLight.mjs.map +1 -1
  374. package/dist/esm/components/Popover/dynamic.mjs.map +1 -1
  375. package/dist/esm/components/Popover/static.mjs.map +1 -1
  376. package/dist/esm/components/PressableSpan/PressableSpan.mjs.map +1 -1
  377. package/dist/esm/components/RightDrawer/RightDrawer.mjs +3 -3
  378. package/dist/esm/components/RightDrawer/RightDrawer.mjs.map +1 -1
  379. package/dist/esm/components/RightDrawer/isElementAtTopAndNotCovered.mjs.map +1 -1
  380. package/dist/esm/components/RightDrawer/rightDrawer.content.mjs.map +1 -1
  381. package/dist/esm/components/RightDrawer/useRightDrawer.mjs.map +1 -1
  382. package/dist/esm/components/Select/Multiselect.mjs.map +1 -1
  383. package/dist/esm/components/Select/Select.mjs.map +1 -1
  384. package/dist/esm/components/SocialNetworks/DiscordLogo.mjs.map +1 -1
  385. package/dist/esm/components/SocialNetworks/FacebookLogo.mjs.map +1 -1
  386. package/dist/esm/components/SocialNetworks/InstagramLogo.mjs.map +1 -1
  387. package/dist/esm/components/SocialNetworks/ProductHuntLogo.mjs.map +1 -1
  388. package/dist/esm/components/SocialNetworks/TiktokLogo.mjs.map +1 -1
  389. package/dist/esm/components/SocialNetworks/XLogo.mjs.map +1 -1
  390. package/dist/esm/components/SocialNetworks/YoutubeLogo.mjs.map +1 -1
  391. package/dist/esm/components/SocialNetworks/index.mjs.map +1 -1
  392. package/dist/esm/components/Steps/index.mjs +3 -1
  393. package/dist/esm/components/Steps/index.mjs.map +1 -1
  394. package/dist/esm/components/Steps/steps.content.mjs.map +1 -1
  395. package/dist/esm/components/SwitchSelector/SwitchSelector.mjs +1 -0
  396. package/dist/esm/components/SwitchSelector/SwitchSelector.mjs.map +1 -1
  397. package/dist/esm/components/SwitchSelector/VerticalSwitchSelector.mjs.map +1 -1
  398. package/dist/esm/components/SwitchSelector/useSwitchSelector.mjs.map +1 -1
  399. package/dist/esm/components/Tab/Tab.mjs +1 -1
  400. package/dist/esm/components/Tab/Tab.mjs.map +1 -1
  401. package/dist/esm/components/Tab/TabContext.mjs.map +1 -1
  402. package/dist/esm/components/TabSelector/TabSelector.mjs.map +1 -1
  403. package/dist/esm/components/Table/ExpandButton.mjs.map +1 -1
  404. package/dist/esm/components/Table/SmartTable.mjs.map +1 -1
  405. package/dist/esm/components/Table/Table.mjs.map +1 -1
  406. package/dist/esm/components/Table/TableElements.mjs.map +1 -1
  407. package/dist/esm/components/Table/table.content.mjs.map +1 -1
  408. package/dist/esm/components/Table/useTableWidths.mjs.map +1 -1
  409. package/dist/esm/components/Tag/index.mjs.map +1 -1
  410. package/dist/esm/components/TechLogo/TechLogo.mjs.map +1 -1
  411. package/dist/esm/components/TechLogo/logos/Adonis.mjs.map +1 -1
  412. package/dist/esm/components/TechLogo/logos/Angular.mjs.map +1 -1
  413. package/dist/esm/components/TechLogo/logos/Anthropic.mjs.map +1 -1
  414. package/dist/esm/components/TechLogo/logos/Astro.mjs.map +1 -1
  415. package/dist/esm/components/TechLogo/logos/Atlassian.mjs.map +1 -1
  416. package/dist/esm/components/TechLogo/logos/Bitbucket.mjs.map +1 -1
  417. package/dist/esm/components/TechLogo/logos/ChatGPT.mjs.map +1 -1
  418. package/dist/esm/components/TechLogo/logos/Claude.mjs.map +1 -1
  419. package/dist/esm/components/TechLogo/logos/DeepSeek.mjs.map +1 -1
  420. package/dist/esm/components/TechLogo/logos/Express.mjs.map +1 -1
  421. package/dist/esm/components/TechLogo/logos/Fastify.mjs.map +1 -1
  422. package/dist/esm/components/TechLogo/logos/Gemini.mjs.map +1 -1
  423. package/dist/esm/components/TechLogo/logos/GitHub.mjs.map +1 -1
  424. package/dist/esm/components/TechLogo/logos/GitLab.mjs.map +1 -1
  425. package/dist/esm/components/TechLogo/logos/Google.mjs.map +1 -1
  426. package/dist/esm/components/TechLogo/logos/GoogleAI.mjs.map +1 -1
  427. package/dist/esm/components/TechLogo/logos/Grok.mjs.map +1 -1
  428. package/dist/esm/components/TechLogo/logos/Hono.mjs.map +1 -1
  429. package/dist/esm/components/TechLogo/logos/LinkedIn.mjs.map +1 -1
  430. package/dist/esm/components/TechLogo/logos/Lit.mjs.map +1 -1
  431. package/dist/esm/components/TechLogo/logos/Lynx.mjs.map +1 -1
  432. package/dist/esm/components/TechLogo/logos/Microsoft.mjs.map +1 -1
  433. package/dist/esm/components/TechLogo/logos/Mistral.mjs.map +1 -1
  434. package/dist/esm/components/TechLogo/logos/NestJS.mjs.map +1 -1
  435. package/dist/esm/components/TechLogo/logos/Nextjs.mjs.map +1 -1
  436. package/dist/esm/components/TechLogo/logos/Node.mjs.map +1 -1
  437. package/dist/esm/components/TechLogo/logos/Nuxt.mjs.map +1 -1
  438. package/dist/esm/components/TechLogo/logos/Ollama.mjs.map +1 -1
  439. package/dist/esm/components/TechLogo/logos/OpenAI.mjs.map +1 -1
  440. package/dist/esm/components/TechLogo/logos/Perplexity.mjs.map +1 -1
  441. package/dist/esm/components/TechLogo/logos/Preact.mjs.map +1 -1
  442. package/dist/esm/components/TechLogo/logos/Reactjs.mjs.map +1 -1
  443. package/dist/esm/components/TechLogo/logos/Solid.mjs.map +1 -1
  444. package/dist/esm/components/TechLogo/logos/Svelte.mjs.map +1 -1
  445. package/dist/esm/components/TechLogo/logos/Tanstack.mjs.map +1 -1
  446. package/dist/esm/components/TechLogo/logos/Vanilla.mjs.map +1 -1
  447. package/dist/esm/components/TechLogo/logos/Vitejs.mjs.map +1 -1
  448. package/dist/esm/components/TechLogo/logos/Vuejs.mjs.map +1 -1
  449. package/dist/esm/components/Terminal/Terminal.mjs.map +1 -1
  450. package/dist/esm/components/Terminal/terminal.content.mjs.map +1 -1
  451. package/dist/esm/components/TextArea/AutoSizeTextArea.mjs +2 -1
  452. package/dist/esm/components/TextArea/AutoSizeTextArea.mjs.map +1 -1
  453. package/dist/esm/components/TextArea/AutocompleteTextArea.mjs.map +1 -1
  454. package/dist/esm/components/TextArea/ContentEditableTextArea.mjs.map +1 -1
  455. package/dist/esm/components/TextArea/TextArea.mjs.map +1 -1
  456. package/dist/esm/components/ThemeSwitcherDropDown/DesktopThemeSwitcher.mjs.map +1 -1
  457. package/dist/esm/components/ThemeSwitcherDropDown/MobileThemeSwitcher.mjs.map +1 -1
  458. package/dist/esm/components/Toaster/Toast.mjs.map +1 -1
  459. package/dist/esm/components/Toaster/Toaster.mjs.map +1 -1
  460. package/dist/esm/components/Toaster/useToast.mjs.map +1 -1
  461. package/dist/esm/components/WithResizer/index.mjs.map +1 -1
  462. package/dist/esm/components/index.mjs +1 -1
  463. package/dist/esm/hooks/index.mjs +8 -8
  464. package/dist/esm/hooks/useDevice.mjs +8 -1
  465. package/dist/esm/hooks/useDevice.mjs.map +1 -1
  466. package/dist/esm/hooks/useGetElementById.mjs.map +1 -1
  467. package/dist/esm/hooks/useGetElementOrWindow.mjs.map +1 -1
  468. package/dist/esm/hooks/useHorizontalSwipe.mjs.map +1 -1
  469. package/dist/esm/hooks/useIsDarkMode.mjs.map +1 -1
  470. package/dist/esm/hooks/useIsMounted.mjs.map +1 -1
  471. package/dist/esm/hooks/useItemSelector.mjs.map +1 -1
  472. package/dist/esm/hooks/useKeyboardDetector.mjs.map +1 -1
  473. package/dist/esm/hooks/usePersistedStore.mjs.map +1 -1
  474. package/dist/esm/hooks/useScreenWidth.mjs.map +1 -1
  475. package/dist/esm/hooks/useScrollBlockage/index.mjs.map +1 -1
  476. package/dist/esm/hooks/useScrollBlockage/useScrollBlockageStore.mjs.map +1 -1
  477. package/dist/esm/hooks/useScrollDetection.mjs.map +1 -1
  478. package/dist/esm/hooks/useScrollY.mjs.map +1 -1
  479. package/dist/esm/hooks/useSearch.mjs.map +1 -1
  480. package/dist/esm/libs/auth.mjs +3 -3
  481. package/dist/esm/libs/auth.mjs.map +1 -1
  482. package/dist/esm/providers/ReactQueryProvider.mjs +21 -2
  483. package/dist/esm/providers/ReactQueryProvider.mjs.map +1 -1
  484. package/dist/esm/tailwind.config.mjs.map +1 -1
  485. package/dist/esm/utils/cn.mjs.map +1 -1
  486. package/dist/types/api/hooks/auth.d.ts.map +1 -1
  487. package/dist/types/api/hooks/environment.d.ts +10 -0
  488. package/dist/types/api/hooks/environment.d.ts.map +1 -0
  489. package/dist/types/api/hooks/project.d.ts +1 -7
  490. package/dist/types/api/hooks/project.d.ts.map +1 -1
  491. package/dist/types/api/hooks/showcaseProject.d.ts.map +1 -1
  492. package/dist/types/api/index.d.ts +4 -3
  493. package/dist/types/api/useAuth/useOAuth2.d.ts.map +1 -1
  494. package/dist/types/api/useIntlayerAPI.d.ts +109 -105
  495. package/dist/types/api/useIntlayerAPI.d.ts.map +1 -1
  496. package/dist/types/api/useUser/index.d.ts +3 -1
  497. package/dist/types/api/useUser/index.d.ts.map +1 -1
  498. package/dist/types/components/Accordion/Accordion.d.ts.map +1 -1
  499. package/dist/types/components/Avatar/image.d.ts.map +1 -1
  500. package/dist/types/components/Avatar/index.d.ts.map +1 -1
  501. package/dist/types/components/Badge/index.d.ts +3 -2
  502. package/dist/types/components/Badge/index.d.ts.map +1 -1
  503. package/dist/types/components/Breadcrumb/breadcrumb.content.d.ts +3 -1
  504. package/dist/types/components/Breadcrumb/breadcrumb.content.d.ts.map +1 -1
  505. package/dist/types/components/Breadcrumb/index.d.ts +2 -1
  506. package/dist/types/components/Breadcrumb/index.d.ts.map +1 -1
  507. package/dist/types/components/Browser/Browser.content.d.ts +15 -13
  508. package/dist/types/components/Browser/Browser.content.d.ts.map +1 -1
  509. package/dist/types/components/Browser/Browser.d.ts +2 -1
  510. package/dist/types/components/Browser/Browser.d.ts.map +1 -1
  511. package/dist/types/components/Browser/extractUrlFromSitemap.d.ts.map +1 -1
  512. package/dist/types/components/Button/Button.d.ts +5 -4
  513. package/dist/types/components/Button/Button.d.ts.map +1 -1
  514. package/dist/types/components/Carousel/index.content.d.ts +5 -3
  515. package/dist/types/components/Carousel/index.content.d.ts.map +1 -1
  516. package/dist/types/components/Carousel/index.d.ts.map +1 -1
  517. package/dist/types/components/ClickOutsideDiv/index.d.ts.map +1 -1
  518. package/dist/types/components/CollapsibleTable/CollapsibleTable.d.ts +4 -3
  519. package/dist/types/components/CollapsibleTable/CollapsibleTable.d.ts.map +1 -1
  520. package/dist/types/components/Command/index.d.ts +16 -15
  521. package/dist/types/components/Command/index.d.ts.map +1 -1
  522. package/dist/types/components/Container/index.d.ts +7 -6
  523. package/dist/types/components/Container/index.d.ts.map +1 -1
  524. package/dist/types/components/ContentEditor/ContentEditor.d.ts.map +1 -1
  525. package/dist/types/components/ContentEditor/ContentEditorInput.d.ts.map +1 -1
  526. package/dist/types/components/ContentEditor/ContentEditorTextArea.d.ts.map +1 -1
  527. package/dist/types/components/ContentSelector/ContentSelector.d.ts.map +1 -1
  528. package/dist/types/components/CopyButton/CopyButton.content.d.ts +3 -1
  529. package/dist/types/components/CopyButton/CopyButton.content.d.ts.map +1 -1
  530. package/dist/types/components/CopyButton/index.d.ts.map +1 -1
  531. package/dist/types/components/CopyToClipboard/index.d.ts.map +1 -1
  532. package/dist/types/components/DictionaryEditor/DictionaryEditor.d.ts.map +1 -1
  533. package/dist/types/components/DictionaryEditor/ItemLayout.d.ts.map +1 -1
  534. package/dist/types/components/DictionaryEditor/NodeWrapper/ArrayWrapper.d.ts.map +1 -1
  535. package/dist/types/components/DictionaryEditor/NodeWrapper/BooleanWrapper.d.ts.map +1 -1
  536. package/dist/types/components/DictionaryEditor/NodeWrapper/ConditionWrapper.d.ts +1 -1
  537. package/dist/types/components/DictionaryEditor/NodeWrapper/ConditionWrapper.d.ts.map +1 -1
  538. package/dist/types/components/DictionaryEditor/NodeWrapper/EnumerationWrapper.d.ts +1 -1
  539. package/dist/types/components/DictionaryEditor/NodeWrapper/EnumerationWrapper.d.ts.map +1 -1
  540. package/dist/types/components/DictionaryEditor/NodeWrapper/FileWrapper.d.ts.map +1 -1
  541. package/dist/types/components/DictionaryEditor/NodeWrapper/HtmlWrapper.d.ts +1 -1
  542. package/dist/types/components/DictionaryEditor/NodeWrapper/HtmlWrapper.d.ts.map +1 -1
  543. package/dist/types/components/DictionaryEditor/NodeWrapper/InsertionWrapper.d.ts +1 -1
  544. package/dist/types/components/DictionaryEditor/NodeWrapper/InsertionWrapper.d.ts.map +1 -1
  545. package/dist/types/components/DictionaryEditor/NodeWrapper/MarkdownWrapper.d.ts +1 -1
  546. package/dist/types/components/DictionaryEditor/NodeWrapper/MarkdownWrapper.d.ts.map +1 -1
  547. package/dist/types/components/DictionaryEditor/NodeWrapper/NestedObjectWrapper.d.ts.map +1 -1
  548. package/dist/types/components/DictionaryEditor/NodeWrapper/NumberWrapper.d.ts.map +1 -1
  549. package/dist/types/components/DictionaryEditor/NodeWrapper/PluralWrapper.d.ts +1 -1
  550. package/dist/types/components/DictionaryEditor/NodeWrapper/PluralWrapper.d.ts.map +1 -1
  551. package/dist/types/components/DictionaryEditor/NodeWrapper/StringWrapper.d.ts.map +1 -1
  552. package/dist/types/components/DictionaryEditor/NodeWrapper/TranslationWrapper.d.ts +1 -1
  553. package/dist/types/components/DictionaryEditor/NodeWrapper/TranslationWrapper.d.ts.map +1 -1
  554. package/dist/types/components/DictionaryEditor/NodeWrapper/index.d.ts.map +1 -1
  555. package/dist/types/components/DictionaryFieldEditor/ContentEditor.d.ts.map +1 -1
  556. package/dist/types/components/DictionaryFieldEditor/ContentEditorView/SafeHtmlRenderer.d.ts +3 -1
  557. package/dist/types/components/DictionaryFieldEditor/ContentEditorView/SafeHtmlRenderer.d.ts.map +1 -1
  558. package/dist/types/components/DictionaryFieldEditor/ContentEditorView/TextEditor.d.ts +3 -2
  559. package/dist/types/components/DictionaryFieldEditor/ContentEditorView/TextEditor.d.ts.map +1 -1
  560. package/dist/types/components/DictionaryFieldEditor/DictionaryCreationForm/DictionaryCreationForm.d.ts.map +1 -1
  561. package/dist/types/components/DictionaryFieldEditor/DictionaryCreationForm/dictionaryCreationForm.content.d.ts +8 -6
  562. package/dist/types/components/DictionaryFieldEditor/DictionaryCreationForm/dictionaryCreationForm.content.d.ts.map +1 -1
  563. package/dist/types/components/DictionaryFieldEditor/DictionaryCreationForm/useDictionaryFormSchema.content.d.ts +6 -4
  564. package/dist/types/components/DictionaryFieldEditor/DictionaryCreationForm/useDictionaryFormSchema.content.d.ts.map +1 -1
  565. package/dist/types/components/DictionaryFieldEditor/DictionaryDetails/DictionaryDetailsForm.d.ts.map +1 -1
  566. package/dist/types/components/DictionaryFieldEditor/DictionaryDetails/dictionaryDetails.content.d.ts +29 -27
  567. package/dist/types/components/DictionaryFieldEditor/DictionaryDetails/dictionaryDetails.content.d.ts.map +1 -1
  568. package/dist/types/components/DictionaryFieldEditor/DictionaryDetails/useDictionaryDetailsSchema.content.d.ts +18 -16
  569. package/dist/types/components/DictionaryFieldEditor/DictionaryDetails/useDictionaryDetailsSchema.content.d.ts.map +1 -1
  570. package/dist/types/components/DictionaryFieldEditor/DictionaryFieldEditor.d.ts.map +1 -1
  571. package/dist/types/components/DictionaryFieldEditor/EnumKeyInput.d.ts.map +1 -1
  572. package/dist/types/components/DictionaryFieldEditor/JSONEditor.d.ts.map +1 -1
  573. package/dist/types/components/DictionaryFieldEditor/KeyPathBreadcrumb.d.ts.map +1 -1
  574. package/dist/types/components/DictionaryFieldEditor/NavigationView/NavigationViewNode.d.ts.map +1 -1
  575. package/dist/types/components/DictionaryFieldEditor/NavigationView/navigationViewNode.content.d.ts +12 -10
  576. package/dist/types/components/DictionaryFieldEditor/NavigationView/navigationViewNode.content.d.ts.map +1 -1
  577. package/dist/types/components/DictionaryFieldEditor/NodeTypeSelector.d.ts.map +1 -1
  578. package/dist/types/components/DictionaryFieldEditor/SaveForm/SaveForm.d.ts.map +1 -1
  579. package/dist/types/components/DictionaryFieldEditor/SaveForm/saveForm.content.d.ts +18 -16
  580. package/dist/types/components/DictionaryFieldEditor/SaveForm/saveForm.content.d.ts.map +1 -1
  581. package/dist/types/components/DictionaryFieldEditor/StructureEditor.d.ts.map +1 -1
  582. package/dist/types/components/DictionaryFieldEditor/StructureView/StructureView.d.ts.map +1 -1
  583. package/dist/types/components/DictionaryFieldEditor/StructureView/structureView.content.d.ts +6 -4
  584. package/dist/types/components/DictionaryFieldEditor/StructureView/structureView.content.d.ts.map +1 -1
  585. package/dist/types/components/DictionaryFieldEditor/VersionSwitcherDropDown/VersionSwitcher.d.ts.map +1 -1
  586. package/dist/types/components/DictionaryFieldEditor/VersionSwitcherDropDown/VersionSwitcherContext.d.ts.map +1 -1
  587. package/dist/types/components/DictionaryFieldEditor/VersionSwitcherDropDown/versionSwitcherDropDown.content.d.ts +5 -3
  588. package/dist/types/components/DictionaryFieldEditor/VersionSwitcherDropDown/versionSwitcherDropDown.content.d.ts.map +1 -1
  589. package/dist/types/components/DictionaryFieldEditor/dictionaryFieldEditor.content.d.ts +4 -2
  590. package/dist/types/components/DictionaryFieldEditor/dictionaryFieldEditor.content.d.ts.map +1 -1
  591. package/dist/types/components/DictionaryFieldEditor/getIsEditableSection.d.ts.map +1 -1
  592. package/dist/types/components/DictionaryFieldEditor/nodeTypeSelector.content.d.ts +18 -16
  593. package/dist/types/components/DictionaryFieldEditor/nodeTypeSelector.content.d.ts.map +1 -1
  594. package/dist/types/components/DropDown/index.d.ts.map +1 -1
  595. package/dist/types/components/EditableField/EditableFieldInput.d.ts.map +1 -1
  596. package/dist/types/components/EditableField/EditableFieldLayout.d.ts.map +1 -1
  597. package/dist/types/components/EditableField/EditableFieldTextArea.d.ts.map +1 -1
  598. package/dist/types/components/ExpandCollapse/ExpandCollapse.d.ts.map +1 -1
  599. package/dist/types/components/ExpandCollapse/expandCollapse.content.d.ts +3 -1
  600. package/dist/types/components/ExpandCollapse/expandCollapse.content.d.ts.map +1 -1
  601. package/dist/types/components/Flags/Flag.d.ts.map +1 -1
  602. package/dist/types/components/Flags/flags.d.ts.map +1 -1
  603. package/dist/types/components/Footer/index.d.ts.map +1 -1
  604. package/dist/types/components/Form/Form.d.ts.map +1 -1
  605. package/dist/types/components/Form/FormBase.d.ts +4 -2
  606. package/dist/types/components/Form/FormBase.d.ts.map +1 -1
  607. package/dist/types/components/Form/FormField.d.ts +4 -2
  608. package/dist/types/components/Form/FormField.d.ts.map +1 -1
  609. package/dist/types/components/Form/FormItem.d.ts +2 -1
  610. package/dist/types/components/Form/FormItem.d.ts.map +1 -1
  611. package/dist/types/components/Form/elements/AutoSizeTextAreaElement.d.ts.map +1 -1
  612. package/dist/types/components/Form/elements/CheckboxElement.d.ts.map +1 -1
  613. package/dist/types/components/Form/elements/EditableFieldInputElement.d.ts +2 -1
  614. package/dist/types/components/Form/elements/EditableFieldInputElement.d.ts.map +1 -1
  615. package/dist/types/components/Form/elements/EditableFieldTextAreaElement.d.ts +2 -1
  616. package/dist/types/components/Form/elements/EditableFieldTextAreaElement.d.ts.map +1 -1
  617. package/dist/types/components/Form/elements/FormElement.d.ts +2 -1
  618. package/dist/types/components/Form/elements/FormElement.d.ts.map +1 -1
  619. package/dist/types/components/Form/elements/FormElementWrapper.d.ts.map +1 -1
  620. package/dist/types/components/Form/elements/InputElement.d.ts.map +1 -1
  621. package/dist/types/components/Form/elements/InputPasswordElement.d.ts.map +1 -1
  622. package/dist/types/components/Form/elements/MultiselectElement.d.ts +2 -1
  623. package/dist/types/components/Form/elements/MultiselectElement.d.ts.map +1 -1
  624. package/dist/types/components/Form/elements/OTPElement.d.ts +2 -1
  625. package/dist/types/components/Form/elements/OTPElement.d.ts.map +1 -1
  626. package/dist/types/components/Form/elements/SearchInputElement.d.ts.map +1 -1
  627. package/dist/types/components/Form/elements/SelectElement.d.ts +2 -1
  628. package/dist/types/components/Form/elements/SelectElement.d.ts.map +1 -1
  629. package/dist/types/components/Form/elements/SwitchSelectorElement.d.ts +2 -1
  630. package/dist/types/components/Form/elements/SwitchSelectorElement.d.ts.map +1 -1
  631. package/dist/types/components/Form/elements/TextAreaElement.d.ts.map +1 -1
  632. package/dist/types/components/Form/layout/FormItemLayout.d.ts.map +1 -1
  633. package/dist/types/components/Form/layout/FormLabelLayout.d.ts.map +1 -1
  634. package/dist/types/components/Form/layout/RequiredStar.d.ts.map +1 -1
  635. package/dist/types/components/HTMLRender/HTMLRender.d.ts.map +1 -1
  636. package/dist/types/components/Headers/index.d.ts.map +1 -1
  637. package/dist/types/components/HeightResizer/index.d.ts +5 -0
  638. package/dist/types/components/HeightResizer/index.d.ts.map +1 -1
  639. package/dist/types/components/HideShow/index.d.ts.map +1 -1
  640. package/dist/types/components/IDE/Code.d.ts.map +1 -1
  641. package/dist/types/components/IDE/CodeBlockClient.d.ts.map +1 -1
  642. package/dist/types/components/IDE/CodeBlockHighlight.d.ts +2 -1
  643. package/dist/types/components/IDE/CodeBlockHighlight.d.ts.map +1 -1
  644. package/dist/types/components/IDE/CodeBlockServer.d.ts.map +1 -1
  645. package/dist/types/components/IDE/CodeBlockShiki.d.ts.map +1 -1
  646. package/dist/types/components/IDE/CodeContext.d.ts +2 -1
  647. package/dist/types/components/IDE/CodeContext.d.ts.map +1 -1
  648. package/dist/types/components/IDE/CodeFormatSelector.d.ts.map +1 -1
  649. package/dist/types/components/IDE/ContentDeclarationFormatSelector.d.ts.map +1 -1
  650. package/dist/types/components/IDE/CopyCode.d.ts.map +1 -1
  651. package/dist/types/components/IDE/FileList.d.ts.map +1 -1
  652. package/dist/types/components/IDE/FileTree.d.ts.map +1 -1
  653. package/dist/types/components/IDE/IDE.d.ts.map +1 -1
  654. package/dist/types/components/IDE/MarkDownRender.d.ts.map +1 -1
  655. package/dist/types/components/IDE/MonacoCode.d.ts.map +1 -1
  656. package/dist/types/components/IDE/PackageManagerSelector.d.ts.map +1 -1
  657. package/dist/types/components/IDE/code.content.d.ts +4 -2
  658. package/dist/types/components/IDE/code.content.d.ts.map +1 -1
  659. package/dist/types/components/IDE/codeTransformer.d.ts.map +1 -1
  660. package/dist/types/components/IDE/copyCode.content.d.ts +4 -2
  661. package/dist/types/components/IDE/copyCode.content.d.ts.map +1 -1
  662. package/dist/types/components/IDE/createFileTree.d.ts.map +1 -1
  663. package/dist/types/components/IDE/index.d.ts +1 -1
  664. package/dist/types/components/IDE/selectors.content.d.ts +8 -6
  665. package/dist/types/components/IDE/selectors.content.d.ts.map +1 -1
  666. package/dist/types/components/InformationTag/index.d.ts.map +1 -1
  667. package/dist/types/components/Input/Checkbox.d.ts +4 -3
  668. package/dist/types/components/Input/Checkbox.d.ts.map +1 -1
  669. package/dist/types/components/Input/Input.d.ts +3 -2
  670. package/dist/types/components/Input/Input.d.ts.map +1 -1
  671. package/dist/types/components/Input/InputPassword.d.ts.map +1 -1
  672. package/dist/types/components/Input/OTPInput.d.ts +5 -3
  673. package/dist/types/components/Input/OTPInput.d.ts.map +1 -1
  674. package/dist/types/components/Input/Radio.d.ts +4 -3
  675. package/dist/types/components/Input/Radio.d.ts.map +1 -1
  676. package/dist/types/components/Input/SearchInput.d.ts +2 -1
  677. package/dist/types/components/Input/SearchInput.d.ts.map +1 -1
  678. package/dist/types/components/KeyboardScreenAdapter/index.d.ts.map +1 -1
  679. package/dist/types/components/KeyboardShortcut/KeyboardShortcut.d.ts.map +1 -1
  680. package/dist/types/components/Label/index.d.ts.map +1 -1
  681. package/dist/types/components/LanguageBackground/LanguageBackground.d.ts +7 -0
  682. package/dist/types/components/LanguageBackground/LanguageBackground.d.ts.map +1 -0
  683. package/dist/types/components/LanguageBackground/index.d.ts +2 -7
  684. package/dist/types/components/Link/Link.d.ts +5 -4
  685. package/dist/types/components/Link/Link.d.ts.map +1 -1
  686. package/dist/types/components/Loader/index.content.d.ts +3 -1
  687. package/dist/types/components/Loader/index.content.d.ts.map +1 -1
  688. package/dist/types/components/Loader/index.d.ts +1 -1
  689. package/dist/types/components/Loader/index.d.ts.map +1 -1
  690. package/dist/types/components/Loader/spinner.d.ts +2 -1
  691. package/dist/types/components/Loader/spinner.d.ts.map +1 -1
  692. package/dist/types/components/LocaleSwitcherContentDropDown/LocaleSwitcherContent.d.ts.map +1 -1
  693. package/dist/types/components/LocaleSwitcherContentDropDown/LocaleSwitcherContentContext.d.ts.map +1 -1
  694. package/dist/types/components/LocaleSwitcherContentDropDown/localeSwitcher.content.d.ts +10 -8
  695. package/dist/types/components/LocaleSwitcherContentDropDown/localeSwitcher.content.d.ts.map +1 -1
  696. package/dist/types/components/LocaleSwitcherDropDown/LocaleSwitcher.d.ts.map +1 -1
  697. package/dist/types/components/LocaleSwitcherDropDown/localeSwitcher.content.d.ts +8 -6
  698. package/dist/types/components/LocaleSwitcherDropDown/localeSwitcher.content.d.ts.map +1 -1
  699. package/dist/types/components/Logo/Logo.d.ts.map +1 -1
  700. package/dist/types/components/Logo/LogoWithTextBelow.d.ts.map +1 -1
  701. package/dist/types/components/MarkDownRender/MarkDownIframe.d.ts.map +1 -1
  702. package/dist/types/components/MarkDownRender/MarkDownRender.d.ts +45 -44
  703. package/dist/types/components/MarkDownRender/MarkDownRender.d.ts.map +1 -1
  704. package/dist/types/components/MarkDownRender/index.d.ts +1 -1
  705. package/dist/types/components/MaxHeightSmoother/index.d.ts.map +1 -1
  706. package/dist/types/components/MaxWidthSmoother/index.d.ts +4 -1
  707. package/dist/types/components/MaxWidthSmoother/index.d.ts.map +1 -1
  708. package/dist/types/components/Modal/Modal.d.ts.map +1 -1
  709. package/dist/types/components/Navbar/Burger.d.ts +2 -1
  710. package/dist/types/components/Navbar/Burger.d.ts.map +1 -1
  711. package/dist/types/components/Navbar/DesktopNavbar.d.ts +2 -1
  712. package/dist/types/components/Navbar/DesktopNavbar.d.ts.map +1 -1
  713. package/dist/types/components/Navbar/MobileNavbar.d.ts +2 -1
  714. package/dist/types/components/Navbar/MobileNavbar.d.ts.map +1 -1
  715. package/dist/types/components/Navbar/index.d.ts +2 -1
  716. package/dist/types/components/Navbar/index.d.ts.map +1 -1
  717. package/dist/types/components/Navbar/useNavigation.d.ts.map +1 -1
  718. package/dist/types/components/Pagination/NumberItemsSelector.d.ts.map +1 -1
  719. package/dist/types/components/Pagination/Pagination.d.ts +2 -1
  720. package/dist/types/components/Pagination/Pagination.d.ts.map +1 -1
  721. package/dist/types/components/Pagination/ShowingResultsNumberItems.d.ts.map +1 -1
  722. package/dist/types/components/Pagination/pagination.content.d.ts +7 -5
  723. package/dist/types/components/Pagination/pagination.content.d.ts.map +1 -1
  724. package/dist/types/components/Pattern/DotPattern.d.ts.map +1 -1
  725. package/dist/types/components/Pattern/GridPattern.d.ts.map +1 -1
  726. package/dist/types/components/Pattern/SpotLight.d.ts.map +1 -1
  727. package/dist/types/components/Popover/dynamic.d.ts.map +1 -1
  728. package/dist/types/components/Popover/static.d.ts.map +1 -1
  729. package/dist/types/components/PressableSpan/PressableSpan.d.ts.map +1 -1
  730. package/dist/types/components/RightDrawer/RightDrawer.d.ts.map +1 -1
  731. package/dist/types/components/RightDrawer/isElementAtTopAndNotCovered.d.ts.map +1 -1
  732. package/dist/types/components/RightDrawer/rightDrawer.content.d.ts +4 -2
  733. package/dist/types/components/RightDrawer/rightDrawer.content.d.ts.map +1 -1
  734. package/dist/types/components/RightDrawer/useRightDrawer.d.ts.map +1 -1
  735. package/dist/types/components/Select/Multiselect.d.ts.map +1 -1
  736. package/dist/types/components/Select/Select.d.ts +3 -2
  737. package/dist/types/components/Select/Select.d.ts.map +1 -1
  738. package/dist/types/components/SocialNetworks/index.d.ts +2 -1
  739. package/dist/types/components/SocialNetworks/index.d.ts.map +1 -1
  740. package/dist/types/components/Steps/index.d.ts.map +1 -1
  741. package/dist/types/components/Steps/steps.content.d.ts +4 -2
  742. package/dist/types/components/Steps/steps.content.d.ts.map +1 -1
  743. package/dist/types/components/SwitchSelector/SwitchSelector.d.ts +6 -4
  744. package/dist/types/components/SwitchSelector/SwitchSelector.d.ts.map +1 -1
  745. package/dist/types/components/SwitchSelector/VerticalSwitchSelector.d.ts +6 -4
  746. package/dist/types/components/SwitchSelector/VerticalSwitchSelector.d.ts.map +1 -1
  747. package/dist/types/components/SwitchSelector/useSwitchSelector.d.ts +4 -3
  748. package/dist/types/components/SwitchSelector/useSwitchSelector.d.ts.map +1 -1
  749. package/dist/types/components/Tab/Tab.d.ts +5 -3
  750. package/dist/types/components/Tab/Tab.d.ts.map +1 -1
  751. package/dist/types/components/Tab/TabContext.d.ts +2 -1
  752. package/dist/types/components/Tab/TabContext.d.ts.map +1 -1
  753. package/dist/types/components/TabSelector/TabSelector.d.ts +4 -2
  754. package/dist/types/components/TabSelector/TabSelector.d.ts.map +1 -1
  755. package/dist/types/components/Table/ExpandButton.d.ts.map +1 -1
  756. package/dist/types/components/Table/SmartTable.d.ts.map +1 -1
  757. package/dist/types/components/Table/Table.d.ts +2 -1
  758. package/dist/types/components/Table/Table.d.ts.map +1 -1
  759. package/dist/types/components/Table/TableElements.d.ts +5 -4
  760. package/dist/types/components/Table/TableElements.d.ts.map +1 -1
  761. package/dist/types/components/Table/table.content.d.ts +4 -2
  762. package/dist/types/components/Table/table.content.d.ts.map +1 -1
  763. package/dist/types/components/Tag/index.d.ts +4 -3
  764. package/dist/types/components/Tag/index.d.ts.map +1 -1
  765. package/dist/types/components/TechLogo/TechLogo.d.ts.map +1 -1
  766. package/dist/types/components/TechLogo/logos/Lit.d.ts +2 -1
  767. package/dist/types/components/TechLogo/logos/Lit.d.ts.map +1 -1
  768. package/dist/types/components/TechLogo/logos/Vanilla.d.ts +2 -1
  769. package/dist/types/components/TechLogo/logos/Vanilla.d.ts.map +1 -1
  770. package/dist/types/components/Terminal/Terminal.d.ts.map +1 -1
  771. package/dist/types/components/Terminal/terminal.content.d.ts +4 -2
  772. package/dist/types/components/Terminal/terminal.content.d.ts.map +1 -1
  773. package/dist/types/components/TextArea/AutoSizeTextArea.d.ts +1 -1
  774. package/dist/types/components/TextArea/AutoSizeTextArea.d.ts.map +1 -1
  775. package/dist/types/components/TextArea/AutocompleteTextArea.d.ts.map +1 -1
  776. package/dist/types/components/TextArea/ContentEditableTextArea.d.ts.map +1 -1
  777. package/dist/types/components/TextArea/TextArea.d.ts +1 -1
  778. package/dist/types/components/TextArea/TextArea.d.ts.map +1 -1
  779. package/dist/types/components/ThemeSwitcherDropDown/DesktopThemeSwitcher.d.ts.map +1 -1
  780. package/dist/types/components/ThemeSwitcherDropDown/MobileThemeSwitcher.d.ts.map +1 -1
  781. package/dist/types/components/Toaster/Toast.d.ts +2 -1
  782. package/dist/types/components/Toaster/Toast.d.ts.map +1 -1
  783. package/dist/types/components/Toaster/Toaster.d.ts +3 -1
  784. package/dist/types/components/Toaster/Toaster.d.ts.map +1 -1
  785. package/dist/types/components/Toaster/useToast.d.ts.map +1 -1
  786. package/dist/types/components/WithResizer/index.d.ts.map +1 -1
  787. package/dist/types/components/index.d.ts +2 -2
  788. package/dist/types/hooks/useDevice.d.ts.map +1 -1
  789. package/dist/types/hooks/useGetElementById.d.ts.map +1 -1
  790. package/dist/types/hooks/useGetElementOrWindow.d.ts.map +1 -1
  791. package/dist/types/hooks/useHorizontalSwipe.d.ts.map +1 -1
  792. package/dist/types/hooks/useItemSelector.d.ts.map +1 -1
  793. package/dist/types/hooks/useScrollBlockage/index.d.ts.map +1 -1
  794. package/dist/types/hooks/useScrollBlockage/useScrollBlockageStore.d.ts.map +1 -1
  795. package/dist/types/hooks/useScrollDetection.d.ts.map +1 -1
  796. package/dist/types/hooks/useScrollY.d.ts.map +1 -1
  797. package/dist/types/hooks/useSearch.d.ts.map +1 -1
  798. package/dist/types/libs/auth.d.ts.map +1 -1
  799. package/dist/types/providers/ReactQueryProvider.d.ts.map +1 -1
  800. package/dist/types/routes.d.ts.map +1 -1
  801. package/dist/types/utils/cn.d.ts.map +1 -1
  802. package/package.json +37 -37
  803. package/dist/esm/components/LanguageBackground/index.mjs.map +0 -1
  804. package/dist/types/components/LanguageBackground/index.d.ts.map +0 -1
@@ -1 +1 @@
1
- {"version":3,"file":"useHorizontalSwipe.mjs","names":[],"sources":["../../../src/hooks/useHorizontalSwipe.ts"],"sourcesContent":["'use client';\n\nimport {\n type CSSProperties,\n type PointerEvent,\n type PointerEventHandler,\n type RefObject,\n useEffect,\n useRef,\n useState,\n} from 'react';\n\nexport type HorizontalSwipeConfig = {\n onSwipeLeft?: () => void; // move to next item\n onSwipeRight?: () => void; // move to previous item\n enable?: boolean;\n itemIndex: number;\n itemCount: number;\n thresholdPct?: number; // percentage of width required to trigger\n touchAction?: string; // CSS touch-action for the container, defaults to 'pan-y'\n disableWhenSelectingText?: boolean; // if true, do not swipe while text selection is active\n};\n\nexport type HorizontalSwipeHook = {\n containerRef: RefObject<HTMLDivElement>;\n isDragging: boolean;\n dragDeltaPct: number;\n containerProps: {\n ref: RefObject<HTMLDivElement>;\n onPointerDown: PointerEventHandler<HTMLDivElement>;\n onPointerMove: PointerEventHandler<HTMLDivElement>;\n onPointerUp: PointerEventHandler<HTMLDivElement>;\n onPointerCancel: PointerEventHandler<HTMLDivElement>;\n style: CSSProperties;\n };\n};\n\nexport const useHorizontalSwipe = (\n config: HorizontalSwipeConfig\n): HorizontalSwipeHook => {\n const {\n enable = true,\n onSwipeLeft,\n onSwipeRight,\n itemIndex,\n itemCount,\n thresholdPct = 20,\n touchAction = 'pan-y',\n disableWhenSelectingText = true,\n } = config;\n\n const containerRef = useRef<HTMLDivElement | null>(null);\n const [isDragging, setIsDragging] = useState(false);\n const [dragDeltaPct, setDragDeltaPct] = useState(0);\n const pointerStateRef = useRef<{\n pointerId: number | null;\n startX: number;\n startY: number;\n lastX: number;\n axisLocked: boolean;\n isHorizontal: boolean;\n }>({\n pointerId: null,\n startX: 0,\n startY: 0,\n lastX: 0,\n axisLocked: false,\n isHorizontal: false,\n });\n\n const isTextSelectingRef = useRef<boolean>(false);\n\n const getContainerWidth = () => {\n const node = containerRef.current;\n return node ? node.clientWidth : 0;\n };\n\n const applyEdgeResistance = (pct: number) => {\n const atFirst = itemIndex <= 0;\n const atLast = itemIndex >= itemCount - 1;\n\n if ((atFirst && pct > 0) || (atLast && pct < 0)) {\n const magnitude = Math.abs(pct);\n const resistance = 1 + magnitude / 30;\n return pct / resistance;\n }\n\n return pct;\n };\n\n const onPointerDown: PointerEventHandler<HTMLDivElement> = (e) => {\n if (!enable) return;\n if (pointerStateRef.current.pointerId !== null) return;\n pointerStateRef.current.pointerId = e.pointerId;\n pointerStateRef.current.startX = e.clientX;\n pointerStateRef.current.startY = e.clientY;\n pointerStateRef.current.lastX = e.clientX;\n pointerStateRef.current.axisLocked = false;\n pointerStateRef.current.isHorizontal = false;\n isTextSelectingRef.current = false;\n setIsDragging(false);\n setDragDeltaPct(0);\n };\n\n const onPointerMove: PointerEventHandler<HTMLDivElement> = (e) => {\n if (!enable) return;\n if (pointerStateRef.current.pointerId !== e.pointerId) return;\n\n const width = getContainerWidth();\n if (!width) return;\n\n const dx = e.clientX - pointerStateRef.current.startX;\n const dy = e.clientY - pointerStateRef.current.startY;\n\n // If user is selecting text, do not engage swipe\n if (disableWhenSelectingText) {\n const sel =\n typeof window !== 'undefined' ? window.getSelection?.() : null;\n const isSelecting = !!sel && sel.rangeCount > 0 && !sel.isCollapsed;\n if (isSelecting) {\n isTextSelectingRef.current = true;\n return;\n }\n }\n\n if (!pointerStateRef.current.axisLocked) {\n const absDx = Math.abs(dx);\n const absDy = Math.abs(dy);\n if (absDx > 6 || absDy > 6) {\n pointerStateRef.current.axisLocked = true;\n pointerStateRef.current.isHorizontal = absDx > absDy;\n }\n }\n\n if (!pointerStateRef.current.isHorizontal) {\n return;\n }\n\n // Defer pointer capture until a horizontal gesture is confirmed\n try {\n (\n e.currentTarget as Element & { setPointerCapture: (id: number) => void }\n ).setPointerCapture(e.pointerId);\n } catch {}\n\n e.preventDefault();\n\n if (!isDragging) setIsDragging(true);\n\n const pct = (dx / width) * 100;\n setDragDeltaPct(applyEdgeResistance(pct));\n pointerStateRef.current.lastX = e.clientX;\n };\n\n const endDrag = (e: PointerEvent<HTMLDivElement>) => {\n try {\n (\n e.currentTarget as Element & {\n releasePointerCapture: (id: number) => void;\n }\n ).releasePointerCapture(e.pointerId);\n } catch {}\n\n const wasHorizontal = pointerStateRef.current.isHorizontal;\n const delta = dragDeltaPct;\n\n setIsDragging(false);\n setDragDeltaPct(0);\n pointerStateRef.current.pointerId = null;\n pointerStateRef.current.axisLocked = false;\n pointerStateRef.current.isHorizontal = false;\n\n if (isTextSelectingRef.current) {\n isTextSelectingRef.current = false;\n return;\n }\n\n if (!wasHorizontal) return;\n\n if (delta > thresholdPct) {\n onSwipeRight?.();\n } else if (delta < -thresholdPct) {\n onSwipeLeft?.();\n }\n };\n\n const onPointerUp: PointerEventHandler<HTMLDivElement> = (e) => {\n if (!enable) return;\n if (pointerStateRef.current.pointerId !== e.pointerId) return;\n endDrag(e);\n };\n\n const onPointerCancel: PointerEventHandler<HTMLDivElement> = (e) => {\n if (!enable) return;\n if (pointerStateRef.current.pointerId !== e.pointerId) return;\n endDrag(e);\n };\n\n useEffect(() => {\n setDragDeltaPct(0);\n setIsDragging(false);\n }, [itemIndex]);\n\n const style: CSSProperties = { touchAction };\n\n return {\n containerRef: containerRef as RefObject<HTMLDivElement>,\n isDragging,\n dragDeltaPct,\n containerProps: {\n ref: containerRef as RefObject<HTMLDivElement>,\n onPointerDown,\n onPointerMove,\n onPointerUp,\n onPointerCancel,\n style,\n },\n };\n};\n"],"mappings":";;;;;AAqCA,MAAa,sBACX,WACwB;CACxB,MAAM,EACJ,SAAS,MACT,aACA,cACA,WACA,WACA,eAAe,IACf,cAAc,SACd,2BAA2B,SACzB;CAEJ,MAAM,eAAe,OAA8B,IAAI;CACvD,MAAM,CAAC,YAAY,iBAAiB,SAAS,KAAK;CAClD,MAAM,CAAC,cAAc,mBAAmB,SAAS,CAAC;CAClD,MAAM,kBAAkB,OAOrB;EACD,WAAW;EACX,QAAQ;EACR,QAAQ;EACR,OAAO;EACP,YAAY;EACZ,cAAc;CAChB,CAAC;CAED,MAAM,qBAAqB,OAAgB,KAAK;CAEhD,MAAM,0BAA0B;EAC9B,MAAM,OAAO,aAAa;EAC1B,OAAO,OAAO,KAAK,cAAc;CACnC;CAEA,MAAM,uBAAuB,QAAgB;EAC3C,MAAM,UAAU,aAAa;EAC7B,MAAM,SAAS,aAAa,YAAY;EAExC,IAAK,WAAW,MAAM,KAAO,UAAU,MAAM,GAG3C,OAAO,OADY,IADD,KAAK,IAAI,GACI,IAAI;EAIrC,OAAO;CACT;CAEA,MAAM,iBAAsD,MAAM;EAChE,IAAI,CAAC,QAAQ;EACb,IAAI,gBAAgB,QAAQ,cAAc,MAAM;EAChD,gBAAgB,QAAQ,YAAY,EAAE;EACtC,gBAAgB,QAAQ,SAAS,EAAE;EACnC,gBAAgB,QAAQ,SAAS,EAAE;EACnC,gBAAgB,QAAQ,QAAQ,EAAE;EAClC,gBAAgB,QAAQ,aAAa;EACrC,gBAAgB,QAAQ,eAAe;EACvC,mBAAmB,UAAU;EAC7B,cAAc,KAAK;EACnB,gBAAgB,CAAC;CACnB;CAEA,MAAM,iBAAsD,MAAM;EAChE,IAAI,CAAC,QAAQ;EACb,IAAI,gBAAgB,QAAQ,cAAc,EAAE,WAAW;EAEvD,MAAM,QAAQ,kBAAkB;EAChC,IAAI,CAAC,OAAO;EAEZ,MAAM,KAAK,EAAE,UAAU,gBAAgB,QAAQ;EAC/C,MAAM,KAAK,EAAE,UAAU,gBAAgB,QAAQ;EAG/C,IAAI,0BAA0B;GAC5B,MAAM,MACJ,OAAO,WAAW,cAAc,OAAO,eAAe,IAAI;GAE5D,IADoB,CAAC,CAAC,OAAO,IAAI,aAAa,KAAK,CAAC,IAAI,aACvC;IACf,mBAAmB,UAAU;IAC7B;GACF;EACF;EAEA,IAAI,CAAC,gBAAgB,QAAQ,YAAY;GACvC,MAAM,QAAQ,KAAK,IAAI,EAAE;GACzB,MAAM,QAAQ,KAAK,IAAI,EAAE;GACzB,IAAI,QAAQ,KAAK,QAAQ,GAAG;IAC1B,gBAAgB,QAAQ,aAAa;IACrC,gBAAgB,QAAQ,eAAe,QAAQ;GACjD;EACF;EAEA,IAAI,CAAC,gBAAgB,QAAQ,cAC3B;EAIF,IAAI;GACF,AACE,EAAE,cACF,kBAAkB,EAAE,SAAS;EACjC,QAAQ,CAAC;EAET,EAAE,eAAe;EAEjB,IAAI,CAAC,YAAY,cAAc,IAAI;EAGnC,gBAAgB,oBADH,KAAK,QAAS,GACY,CAAC;EACxC,gBAAgB,QAAQ,QAAQ,EAAE;CACpC;CAEA,MAAM,WAAW,MAAoC;EACnD,IAAI;GACF,AACE,EAAE,cAGF,sBAAsB,EAAE,SAAS;EACrC,QAAQ,CAAC;EAET,MAAM,gBAAgB,gBAAgB,QAAQ;EAC9C,MAAM,QAAQ;EAEd,cAAc,KAAK;EACnB,gBAAgB,CAAC;EACjB,gBAAgB,QAAQ,YAAY;EACpC,gBAAgB,QAAQ,aAAa;EACrC,gBAAgB,QAAQ,eAAe;EAEvC,IAAI,mBAAmB,SAAS;GAC9B,mBAAmB,UAAU;GAC7B;EACF;EAEA,IAAI,CAAC,eAAe;EAEpB,IAAI,QAAQ,cACV,eAAe;OACV,IAAI,QAAQ,CAAC,cAClB,cAAc;CAElB;CAEA,MAAM,eAAoD,MAAM;EAC9D,IAAI,CAAC,QAAQ;EACb,IAAI,gBAAgB,QAAQ,cAAc,EAAE,WAAW;EACvD,QAAQ,CAAC;CACX;CAEA,MAAM,mBAAwD,MAAM;EAClE,IAAI,CAAC,QAAQ;EACb,IAAI,gBAAgB,QAAQ,cAAc,EAAE,WAAW;EACvD,QAAQ,CAAC;CACX;CAEA,gBAAgB;EACd,gBAAgB,CAAC;EACjB,cAAc,KAAK;CACrB,GAAG,CAAC,SAAS,CAAC;CAId,OAAO;EACS;EACd;EACA;EACA,gBAAgB;GACd,KAAK;GACL;GACA;GACA;GACA;GACA,SAZ2B,YAYvB;EACN;CACF;AACF"}
1
+ {"version":3,"file":"useHorizontalSwipe.mjs","names":[],"sources":["../../../src/hooks/useHorizontalSwipe.ts"],"sourcesContent":["'use client';\n\nimport {\n type CSSProperties,\n type PointerEvent,\n type PointerEventHandler,\n type RefObject,\n useEffect,\n useRef,\n useState,\n} from 'react';\n\nexport type HorizontalSwipeConfig = {\n onSwipeLeft?: () => void; // move to next item\n onSwipeRight?: () => void; // move to previous item\n enable?: boolean;\n itemIndex: number;\n itemCount: number;\n thresholdPct?: number; // percentage of width required to trigger\n touchAction?: string; // CSS touch-action for the container, defaults to 'pan-y'\n disableWhenSelectingText?: boolean; // if true, do not swipe while text selection is active\n};\n\nexport type HorizontalSwipeHook = {\n containerRef: RefObject<HTMLDivElement>;\n isDragging: boolean;\n dragDeltaPct: number;\n containerProps: {\n ref: RefObject<HTMLDivElement>;\n onPointerDown: PointerEventHandler<HTMLDivElement>;\n onPointerMove: PointerEventHandler<HTMLDivElement>;\n onPointerUp: PointerEventHandler<HTMLDivElement>;\n onPointerCancel: PointerEventHandler<HTMLDivElement>;\n style: CSSProperties;\n };\n};\n\nexport const useHorizontalSwipe = (\n config: HorizontalSwipeConfig\n): HorizontalSwipeHook => {\n const {\n enable = true,\n onSwipeLeft,\n onSwipeRight,\n itemIndex,\n itemCount,\n thresholdPct = 20,\n touchAction = 'pan-y',\n disableWhenSelectingText = true,\n } = config;\n\n const containerRef = useRef<HTMLDivElement | null>(null);\n const [isDragging, setIsDragging] = useState(false);\n const [dragDeltaPct, setDragDeltaPct] = useState(0);\n const pointerStateRef = useRef<{\n pointerId: number | null;\n startX: number;\n startY: number;\n lastX: number;\n axisLocked: boolean;\n isHorizontal: boolean;\n }>({\n pointerId: null,\n startX: 0,\n startY: 0,\n lastX: 0,\n axisLocked: false,\n isHorizontal: false,\n });\n\n const isTextSelectingRef = useRef<boolean>(false);\n\n const getContainerWidth = () => {\n const node = containerRef.current;\n return node ? node.clientWidth : 0;\n };\n\n const applyEdgeResistance = (pct: number) => {\n const atFirst = itemIndex <= 0;\n const atLast = itemIndex >= itemCount - 1;\n\n if ((atFirst && pct > 0) || (atLast && pct < 0)) {\n const magnitude = Math.abs(pct);\n const resistance = 1 + magnitude / 30;\n return pct / resistance;\n }\n\n return pct;\n };\n\n const onPointerDown: PointerEventHandler<HTMLDivElement> = (e) => {\n if (!enable) return;\n if (pointerStateRef.current.pointerId !== null) return;\n pointerStateRef.current.pointerId = e.pointerId;\n pointerStateRef.current.startX = e.clientX;\n pointerStateRef.current.startY = e.clientY;\n pointerStateRef.current.lastX = e.clientX;\n pointerStateRef.current.axisLocked = false;\n pointerStateRef.current.isHorizontal = false;\n isTextSelectingRef.current = false;\n setIsDragging(false);\n setDragDeltaPct(0);\n };\n\n const onPointerMove: PointerEventHandler<HTMLDivElement> = (e) => {\n if (!enable) return;\n if (pointerStateRef.current.pointerId !== e.pointerId) return;\n\n const width = getContainerWidth();\n if (!width) return;\n\n const dx = e.clientX - pointerStateRef.current.startX;\n const dy = e.clientY - pointerStateRef.current.startY;\n\n // If user is selecting text, do not engage swipe\n if (disableWhenSelectingText) {\n const sel =\n typeof window !== 'undefined' ? window.getSelection?.() : null;\n const isSelecting = !!sel && sel.rangeCount > 0 && !sel.isCollapsed;\n if (isSelecting) {\n isTextSelectingRef.current = true;\n return;\n }\n }\n\n if (!pointerStateRef.current.axisLocked) {\n const absDx = Math.abs(dx);\n const absDy = Math.abs(dy);\n if (absDx > 6 || absDy > 6) {\n pointerStateRef.current.axisLocked = true;\n pointerStateRef.current.isHorizontal = absDx > absDy;\n }\n }\n\n if (!pointerStateRef.current.isHorizontal) {\n return;\n }\n\n // Defer pointer capture until a horizontal gesture is confirmed\n try {\n (\n e.currentTarget as Element & { setPointerCapture: (id: number) => void }\n ).setPointerCapture(e.pointerId);\n } catch {}\n\n e.preventDefault();\n\n if (!isDragging) setIsDragging(true);\n\n const pct = (dx / width) * 100;\n setDragDeltaPct(applyEdgeResistance(pct));\n pointerStateRef.current.lastX = e.clientX;\n };\n\n const endDrag = (e: PointerEvent<HTMLDivElement>) => {\n try {\n (\n e.currentTarget as Element & {\n releasePointerCapture: (id: number) => void;\n }\n ).releasePointerCapture(e.pointerId);\n } catch {}\n\n const wasHorizontal = pointerStateRef.current.isHorizontal;\n const delta = dragDeltaPct;\n\n setIsDragging(false);\n setDragDeltaPct(0);\n pointerStateRef.current.pointerId = null;\n pointerStateRef.current.axisLocked = false;\n pointerStateRef.current.isHorizontal = false;\n\n if (isTextSelectingRef.current) {\n isTextSelectingRef.current = false;\n return;\n }\n\n if (!wasHorizontal) return;\n\n if (delta > thresholdPct) {\n onSwipeRight?.();\n } else if (delta < -thresholdPct) {\n onSwipeLeft?.();\n }\n };\n\n const onPointerUp: PointerEventHandler<HTMLDivElement> = (e) => {\n if (!enable) return;\n if (pointerStateRef.current.pointerId !== e.pointerId) return;\n endDrag(e);\n };\n\n const onPointerCancel: PointerEventHandler<HTMLDivElement> = (e) => {\n if (!enable) return;\n if (pointerStateRef.current.pointerId !== e.pointerId) return;\n endDrag(e);\n };\n\n useEffect(() => {\n setDragDeltaPct(0);\n setIsDragging(false);\n }, [itemIndex]);\n\n const style: CSSProperties = { touchAction };\n\n return {\n containerRef: containerRef as RefObject<HTMLDivElement>,\n isDragging,\n dragDeltaPct,\n containerProps: {\n ref: containerRef as RefObject<HTMLDivElement>,\n onPointerDown,\n onPointerMove,\n onPointerUp,\n onPointerCancel,\n style,\n },\n };\n};\n"],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"useIsDarkMode.mjs","names":[],"sources":["../../../src/hooks/useIsDarkMode.ts"],"sourcesContent":["'use client';\n\nimport { useEffect, useState } from 'react';\n\nexport const useIsDarkMode = () => {\n const [isDarkMode, setIsDarkMode] = useState(false);\n\n useEffect(() => {\n const htmlElement = document.querySelector('html');\n const isDarkMode = htmlElement?.getAttribute('data-theme') === 'dark';\n setIsDarkMode(isDarkMode);\n }, []);\n\n return isDarkMode;\n};\n"],"mappings":";;;;;AAIA,MAAa,sBAAsB;CACjC,MAAM,CAAC,YAAY,iBAAiB,SAAS,KAAK;CAElD,gBAAgB;EAGd,cAFoB,SAAS,cAAc,MACd,GAAG,aAAa,YAAY,MAAM,MACvC;CAC1B,GAAG,CAAC,CAAC;CAEL,OAAO;AACT"}
1
+ {"version":3,"file":"useIsDarkMode.mjs","names":[],"sources":["../../../src/hooks/useIsDarkMode.ts"],"sourcesContent":["'use client';\n\nimport { useEffect, useState } from 'react';\n\nexport const useIsDarkMode = () => {\n const [isDarkMode, setIsDarkMode] = useState(false);\n\n useEffect(() => {\n const htmlElement = document.querySelector('html');\n const isDarkMode = htmlElement?.getAttribute('data-theme') === 'dark';\n setIsDarkMode(isDarkMode);\n }, []);\n\n return isDarkMode;\n};\n"],"mappings":";;;;;AAIA,MAAa,sBAAsB;CACjC,MAAM,CAAC,YAAY,iBAAiB,SAAS,MAAM;AAEnD,iBAAgB;AAGd,gBAFoB,SAAS,cAAc,OACb,EAAE,aAAa,aAAa,KAAK,OACtC;IACxB,EAAE,CAAC;AAEN,QAAO"}
@@ -1 +1 @@
1
- {"version":3,"file":"useIsMounted.mjs","names":[],"sources":["../../../src/hooks/useIsMounted.ts"],"sourcesContent":["'use client';\n\nimport { useEffect, useState } from 'react';\n\nexport const useIsMounted = () => {\n const [isMounted, setIsMounted] = useState(false);\n\n useEffect(() => {\n setIsMounted(true);\n }, []);\n\n return isMounted;\n};\n"],"mappings":";;;;;AAIA,MAAa,qBAAqB;CAChC,MAAM,CAAC,WAAW,gBAAgB,SAAS,KAAK;CAEhD,gBAAgB;EACd,aAAa,IAAI;CACnB,GAAG,CAAC,CAAC;CAEL,OAAO;AACT"}
1
+ {"version":3,"file":"useIsMounted.mjs","names":[],"sources":["../../../src/hooks/useIsMounted.ts"],"sourcesContent":["'use client';\n\nimport { useEffect, useState } from 'react';\n\nexport const useIsMounted = () => {\n const [isMounted, setIsMounted] = useState(false);\n\n useEffect(() => {\n setIsMounted(true);\n }, []);\n\n return isMounted;\n};\n"],"mappings":";;;;;AAIA,MAAa,qBAAqB;CAChC,MAAM,CAAC,WAAW,gBAAgB,SAAS,MAAM;AAEjD,iBAAgB;AACd,eAAa,KAAK;IACjB,EAAE,CAAC;AAEN,QAAO"}
@@ -1 +1 @@
1
- {"version":3,"file":"useItemSelector.mjs","names":[],"sources":["../../../src/hooks/useItemSelector.ts"],"sourcesContent":["'use client';\n\nimport { type RefObject, useLayoutEffect, useRef, useState } from 'react';\n\nexport type ItemSelectorOrientation = 'horizontal' | 'vertical';\n\ntype HorizontalStyleState = {\n left: number;\n width: number;\n opacity: number;\n};\n\ntype VerticalStyleState = {\n top: number;\n height: number;\n opacity: number;\n};\n\ntype StyleState = HorizontalStyleState | VerticalStyleState;\n\nconst selectorDefault = (option: HTMLElement) =>\n option?.getAttribute('aria-selected') === 'true';\n\ntype Options = {\n selector?: (option: HTMLElement, index: number) => boolean;\n isHoverable?: boolean;\n orientation?: ItemSelectorOrientation;\n};\n\nexport const useItemSelector = (\n optionsRefs: RefObject<HTMLElement[]>,\n {\n selector = selectorDefault,\n isHoverable = false,\n orientation = 'horizontal',\n }: Options = {\n selector: selectorDefault,\n isHoverable: false,\n orientation: 'horizontal',\n }\n) => {\n const [choiceIndicatorPosition, setChoiceIndicatorPosition] =\n useState<StyleState | null>(null);\n\n const [hoveredItem, setHoveredItem] = useState<HTMLElement | null>(null);\n const hideTimeoutRef = useRef<NodeJS.Timeout | null>(null);\n const lastPositionRef = useRef<StyleState | null>(null);\n\n const itemsLength = optionsRefs.current.length;\n\n const calculatePosition = () => {\n let targetElement: HTMLElement | null = null;\n\n if (hoveredItem) {\n targetElement = hoveredItem;\n // Clear any pending hide timeout when hovering over an item\n if (hideTimeoutRef.current) {\n clearTimeout(hideTimeoutRef.current);\n hideTimeoutRef.current = null;\n }\n } else {\n targetElement = optionsRefs.current.find(selector) ?? null;\n }\n\n if (!targetElement) {\n // Keep previous position but set opacity to 0\n if (orientation === 'vertical') {\n const verticalPrev =\n lastPositionRef.current as VerticalStyleState | null;\n const newPosition: VerticalStyleState = {\n top: verticalPrev?.top ?? 0,\n height: verticalPrev?.height ?? 0,\n opacity: 0,\n };\n\n if (verticalPrev?.opacity !== 0) {\n setChoiceIndicatorPosition(newPosition);\n lastPositionRef.current = newPosition;\n }\n } else {\n const horizontalPrev =\n lastPositionRef.current as HorizontalStyleState | null;\n const newPosition: HorizontalStyleState = {\n left: horizontalPrev?.left ?? 0,\n width: horizontalPrev?.width ?? 0,\n opacity: 0,\n };\n\n if (horizontalPrev?.opacity !== 0) {\n setChoiceIndicatorPosition(newPosition);\n lastPositionRef.current = newPosition;\n }\n }\n return;\n }\n\n if (orientation === 'vertical') {\n const top = targetElement.offsetTop;\n const height = targetElement.offsetHeight;\n\n const newPosition = {\n top,\n height,\n opacity: 1,\n };\n\n const prev = lastPositionRef.current as VerticalStyleState | null;\n\n if (\n !prev ||\n prev.top !== top ||\n prev.height !== height ||\n prev.opacity !== 1\n ) {\n setChoiceIndicatorPosition(newPosition);\n lastPositionRef.current = newPosition;\n }\n } else {\n const left = targetElement.offsetLeft;\n const width = targetElement.offsetWidth;\n\n const newPosition = {\n left,\n width,\n opacity: 1,\n };\n\n const prev = lastPositionRef.current as HorizontalStyleState | null;\n\n if (\n !prev ||\n prev.left !== left ||\n prev.width !== width ||\n prev.opacity !== 1\n ) {\n setChoiceIndicatorPosition(newPosition);\n lastPositionRef.current = newPosition;\n }\n }\n };\n\n useLayoutEffect(() => {\n calculatePosition();\n\n // Event listeners for window events\n window.addEventListener('resize', calculatePosition);\n window.addEventListener('DOMContentLoaded', calculatePosition);\n\n // MutationObserver to watch for 'aria-selected' changes\n const mutationObservers: MutationObserver[] = [];\n\n optionsRefs.current.forEach((option) => {\n if (option) {\n const observer = new MutationObserver((mutations) => {\n for (const mutation of mutations) {\n if (\n mutation.type === 'attributes' &&\n (mutation.attributeName === 'aria-selected' ||\n mutation.attributeName === 'data-active' ||\n mutation.attributeName === 'data-indicator')\n ) {\n calculatePosition();\n break;\n }\n }\n });\n\n observer.observe(option, {\n attributes: true,\n attributeFilter: ['aria-selected', 'data-active', 'data-indicator'],\n });\n\n mutationObservers.push(observer);\n }\n });\n\n // ResizeObserver to watch for size changes\n const resizeObservers: ResizeObserver[] = [];\n\n const observeSize = (element: HTMLElement) => {\n if (!element) return;\n const resizeObserver = new ResizeObserver(() => {\n calculatePosition();\n });\n resizeObserver.observe(element);\n resizeObservers.push(resizeObserver);\n };\n\n // Observe the selected item\n const selectedItem = optionsRefs.current.find(selector) ?? null;\n\n if (selectedItem) {\n observeSize(selectedItem);\n }\n\n // Observe the hovered item\n if (hoveredItem) {\n observeSize(hoveredItem);\n }\n\n // Add hover event listeners\n const handleMouseEnter = (event: Event) => {\n // Clear any pending hide timeout\n if (hideTimeoutRef.current) {\n clearTimeout(hideTimeoutRef.current);\n hideTimeoutRef.current = null;\n }\n setHoveredItem(event.currentTarget as HTMLElement);\n };\n\n const handleMouseLeave = () => {\n // Clear any existing timeout\n if (hideTimeoutRef.current) {\n clearTimeout(hideTimeoutRef.current);\n }\n\n // Keep the indicator at its current position for 150ms\n // before removing the hovered item\n hideTimeoutRef.current = setTimeout(() => {\n setHoveredItem(null);\n }, 150); // 150ms delay before hiding\n };\n\n if (isHoverable) {\n optionsRefs.current.forEach((option) => {\n option?.addEventListener('mouseenter', handleMouseEnter, {\n passive: true,\n });\n option?.addEventListener('mouseleave', handleMouseLeave, {\n passive: true,\n });\n });\n }\n\n return () => {\n // Clear any pending hide timeout\n if (hideTimeoutRef.current) {\n clearTimeout(hideTimeoutRef.current);\n }\n\n // Cleanup window event listeners\n window.removeEventListener('resize', calculatePosition);\n window.removeEventListener('DOMContentLoaded', calculatePosition);\n\n // Disconnect MutationObservers\n mutationObservers.forEach((observer) => {\n observer.disconnect();\n });\n\n // Disconnect ResizeObservers\n resizeObservers.forEach((observer) => {\n observer.disconnect();\n });\n\n // Remove hover event listeners\n optionsRefs.current.forEach((option) => {\n option?.removeEventListener('mouseenter', handleMouseEnter);\n option?.removeEventListener('mouseleave', handleMouseLeave);\n });\n };\n }, [\n optionsRefs,\n selector,\n hoveredItem,\n itemsLength,\n orientation,\n isHoverable,\n ]);\n\n return { choiceIndicatorPosition, calculatePosition, orientation };\n};\n"],"mappings":";;;;;AAoBA,MAAM,mBAAmB,WACvB,QAAQ,aAAa,eAAe,MAAM;AAQ5C,MAAa,mBACX,aACA,EACE,WAAW,iBACX,cAAc,OACd,cAAc,iBACH;CACX,UAAU;CACV,aAAa;CACb,aAAa;AACf,MACG;CACH,MAAM,CAAC,yBAAyB,8BAC9B,SAA4B,IAAI;CAElC,MAAM,CAAC,aAAa,kBAAkB,SAA6B,IAAI;CACvE,MAAM,iBAAiB,OAA8B,IAAI;CACzD,MAAM,kBAAkB,OAA0B,IAAI;CAEtD,MAAM,cAAc,YAAY,QAAQ;CAExC,MAAM,0BAA0B;EAC9B,IAAI,gBAAoC;EAExC,IAAI,aAAa;GACf,gBAAgB;GAEhB,IAAI,eAAe,SAAS;IAC1B,aAAa,eAAe,OAAO;IACnC,eAAe,UAAU;GAC3B;EACF,OACE,gBAAgB,YAAY,QAAQ,KAAK,QAAQ,KAAK;EAGxD,IAAI,CAAC,eAAe;GAElB,IAAI,gBAAgB,YAAY;IAC9B,MAAM,eACJ,gBAAgB;IAClB,MAAM,cAAkC;KACtC,KAAK,cAAc,OAAO;KAC1B,QAAQ,cAAc,UAAU;KAChC,SAAS;IACX;IAEA,IAAI,cAAc,YAAY,GAAG;KAC/B,2BAA2B,WAAW;KACtC,gBAAgB,UAAU;IAC5B;GACF,OAAO;IACL,MAAM,iBACJ,gBAAgB;IAClB,MAAM,cAAoC;KACxC,MAAM,gBAAgB,QAAQ;KAC9B,OAAO,gBAAgB,SAAS;KAChC,SAAS;IACX;IAEA,IAAI,gBAAgB,YAAY,GAAG;KACjC,2BAA2B,WAAW;KACtC,gBAAgB,UAAU;IAC5B;GACF;GACA;EACF;EAEA,IAAI,gBAAgB,YAAY;GAC9B,MAAM,MAAM,cAAc;GAC1B,MAAM,SAAS,cAAc;GAE7B,MAAM,cAAc;IAClB;IACA;IACA,SAAS;GACX;GAEA,MAAM,OAAO,gBAAgB;GAE7B,IACE,CAAC,QACD,KAAK,QAAQ,OACb,KAAK,WAAW,UAChB,KAAK,YAAY,GACjB;IACA,2BAA2B,WAAW;IACtC,gBAAgB,UAAU;GAC5B;EACF,OAAO;GACL,MAAM,OAAO,cAAc;GAC3B,MAAM,QAAQ,cAAc;GAE5B,MAAM,cAAc;IAClB;IACA;IACA,SAAS;GACX;GAEA,MAAM,OAAO,gBAAgB;GAE7B,IACE,CAAC,QACD,KAAK,SAAS,QACd,KAAK,UAAU,SACf,KAAK,YAAY,GACjB;IACA,2BAA2B,WAAW;IACtC,gBAAgB,UAAU;GAC5B;EACF;CACF;CAEA,sBAAsB;EACpB,kBAAkB;EAGlB,OAAO,iBAAiB,UAAU,iBAAiB;EACnD,OAAO,iBAAiB,oBAAoB,iBAAiB;EAG7D,MAAM,oBAAwC,CAAC;EAE/C,YAAY,QAAQ,SAAS,WAAW;GACtC,IAAI,QAAQ;IACV,MAAM,WAAW,IAAI,kBAAkB,cAAc;KACnD,KAAK,MAAM,YAAY,WACrB,IACE,SAAS,SAAS,iBACjB,SAAS,kBAAkB,mBAC1B,SAAS,kBAAkB,iBAC3B,SAAS,kBAAkB,mBAC7B;MACA,kBAAkB;MAClB;KACF;IAEJ,CAAC;IAED,SAAS,QAAQ,QAAQ;KACvB,YAAY;KACZ,iBAAiB;MAAC;MAAiB;MAAe;KAAgB;IACpE,CAAC;IAED,kBAAkB,KAAK,QAAQ;GACjC;EACF,CAAC;EAGD,MAAM,kBAAoC,CAAC;EAE3C,MAAM,eAAe,YAAyB;GAC5C,IAAI,CAAC,SAAS;GACd,MAAM,iBAAiB,IAAI,qBAAqB;IAC9C,kBAAkB;GACpB,CAAC;GACD,eAAe,QAAQ,OAAO;GAC9B,gBAAgB,KAAK,cAAc;EACrC;EAGA,MAAM,eAAe,YAAY,QAAQ,KAAK,QAAQ,KAAK;EAE3D,IAAI,cACF,YAAY,YAAY;EAI1B,IAAI,aACF,YAAY,WAAW;EAIzB,MAAM,oBAAoB,UAAiB;GAEzC,IAAI,eAAe,SAAS;IAC1B,aAAa,eAAe,OAAO;IACnC,eAAe,UAAU;GAC3B;GACA,eAAe,MAAM,aAA4B;EACnD;EAEA,MAAM,yBAAyB;GAE7B,IAAI,eAAe,SACjB,aAAa,eAAe,OAAO;GAKrC,eAAe,UAAU,iBAAiB;IACxC,eAAe,IAAI;GACrB,GAAG,GAAG;EACR;EAEA,IAAI,aACF,YAAY,QAAQ,SAAS,WAAW;GACtC,QAAQ,iBAAiB,cAAc,kBAAkB,EACvD,SAAS,KACX,CAAC;GACD,QAAQ,iBAAiB,cAAc,kBAAkB,EACvD,SAAS,KACX,CAAC;EACH,CAAC;EAGH,aAAa;GAEX,IAAI,eAAe,SACjB,aAAa,eAAe,OAAO;GAIrC,OAAO,oBAAoB,UAAU,iBAAiB;GACtD,OAAO,oBAAoB,oBAAoB,iBAAiB;GAGhE,kBAAkB,SAAS,aAAa;IACtC,SAAS,WAAW;GACtB,CAAC;GAGD,gBAAgB,SAAS,aAAa;IACpC,SAAS,WAAW;GACtB,CAAC;GAGD,YAAY,QAAQ,SAAS,WAAW;IACtC,QAAQ,oBAAoB,cAAc,gBAAgB;IAC1D,QAAQ,oBAAoB,cAAc,gBAAgB;GAC5D,CAAC;EACH;CACF,GAAG;EACD;EACA;EACA;EACA;EACA;EACA;CACF,CAAC;CAED,OAAO;EAAE;EAAyB;EAAmB;CAAY;AACnE"}
1
+ {"version":3,"file":"useItemSelector.mjs","names":[],"sources":["../../../src/hooks/useItemSelector.ts"],"sourcesContent":["'use client';\n\nimport { type RefObject, useLayoutEffect, useRef, useState } from 'react';\n\nexport type ItemSelectorOrientation = 'horizontal' | 'vertical';\n\ntype HorizontalStyleState = {\n left: number;\n width: number;\n opacity: number;\n};\n\ntype VerticalStyleState = {\n top: number;\n height: number;\n opacity: number;\n};\n\ntype StyleState = HorizontalStyleState | VerticalStyleState;\n\nconst selectorDefault = (option: HTMLElement) =>\n option?.getAttribute('aria-selected') === 'true';\n\ntype Options = {\n selector?: (option: HTMLElement, index: number) => boolean;\n isHoverable?: boolean;\n orientation?: ItemSelectorOrientation;\n};\n\nexport const useItemSelector = (\n optionsRefs: RefObject<HTMLElement[]>,\n {\n selector = selectorDefault,\n isHoverable = false,\n orientation = 'horizontal',\n }: Options = {\n selector: selectorDefault,\n isHoverable: false,\n orientation: 'horizontal',\n }\n) => {\n const [choiceIndicatorPosition, setChoiceIndicatorPosition] =\n useState<StyleState | null>(null);\n\n const [hoveredItem, setHoveredItem] = useState<HTMLElement | null>(null);\n const hideTimeoutRef = useRef<NodeJS.Timeout | null>(null);\n const lastPositionRef = useRef<StyleState | null>(null);\n\n const itemsLength = optionsRefs.current.length;\n\n const calculatePosition = () => {\n let targetElement: HTMLElement | null = null;\n\n if (hoveredItem) {\n targetElement = hoveredItem;\n // Clear any pending hide timeout when hovering over an item\n if (hideTimeoutRef.current) {\n clearTimeout(hideTimeoutRef.current);\n hideTimeoutRef.current = null;\n }\n } else {\n targetElement = optionsRefs.current.find(selector) ?? null;\n }\n\n if (!targetElement) {\n // Keep previous position but set opacity to 0\n if (orientation === 'vertical') {\n const verticalPrev =\n lastPositionRef.current as VerticalStyleState | null;\n const newPosition: VerticalStyleState = {\n top: verticalPrev?.top ?? 0,\n height: verticalPrev?.height ?? 0,\n opacity: 0,\n };\n\n if (verticalPrev?.opacity !== 0) {\n setChoiceIndicatorPosition(newPosition);\n lastPositionRef.current = newPosition;\n }\n } else {\n const horizontalPrev =\n lastPositionRef.current as HorizontalStyleState | null;\n const newPosition: HorizontalStyleState = {\n left: horizontalPrev?.left ?? 0,\n width: horizontalPrev?.width ?? 0,\n opacity: 0,\n };\n\n if (horizontalPrev?.opacity !== 0) {\n setChoiceIndicatorPosition(newPosition);\n lastPositionRef.current = newPosition;\n }\n }\n return;\n }\n\n if (orientation === 'vertical') {\n const top = targetElement.offsetTop;\n const height = targetElement.offsetHeight;\n\n const newPosition = {\n top,\n height,\n opacity: 1,\n };\n\n const prev = lastPositionRef.current as VerticalStyleState | null;\n\n if (\n !prev ||\n prev.top !== top ||\n prev.height !== height ||\n prev.opacity !== 1\n ) {\n setChoiceIndicatorPosition(newPosition);\n lastPositionRef.current = newPosition;\n }\n } else {\n const left = targetElement.offsetLeft;\n const width = targetElement.offsetWidth;\n\n const newPosition = {\n left,\n width,\n opacity: 1,\n };\n\n const prev = lastPositionRef.current as HorizontalStyleState | null;\n\n if (\n !prev ||\n prev.left !== left ||\n prev.width !== width ||\n prev.opacity !== 1\n ) {\n setChoiceIndicatorPosition(newPosition);\n lastPositionRef.current = newPosition;\n }\n }\n };\n\n useLayoutEffect(() => {\n calculatePosition();\n\n // Event listeners for window events\n window.addEventListener('resize', calculatePosition);\n window.addEventListener('DOMContentLoaded', calculatePosition);\n\n // MutationObserver to watch for 'aria-selected' changes\n const mutationObservers: MutationObserver[] = [];\n\n optionsRefs.current.forEach((option) => {\n if (option) {\n const observer = new MutationObserver((mutations) => {\n for (const mutation of mutations) {\n if (\n mutation.type === 'attributes' &&\n (mutation.attributeName === 'aria-selected' ||\n mutation.attributeName === 'data-active' ||\n mutation.attributeName === 'data-indicator')\n ) {\n calculatePosition();\n break;\n }\n }\n });\n\n observer.observe(option, {\n attributes: true,\n attributeFilter: ['aria-selected', 'data-active', 'data-indicator'],\n });\n\n mutationObservers.push(observer);\n }\n });\n\n // ResizeObserver to watch for size changes\n const resizeObservers: ResizeObserver[] = [];\n\n const observeSize = (element: HTMLElement) => {\n if (!element) return;\n const resizeObserver = new ResizeObserver(() => {\n calculatePosition();\n });\n resizeObserver.observe(element);\n resizeObservers.push(resizeObserver);\n };\n\n // Observe the selected item\n const selectedItem = optionsRefs.current.find(selector) ?? null;\n\n if (selectedItem) {\n observeSize(selectedItem);\n }\n\n // Observe the hovered item\n if (hoveredItem) {\n observeSize(hoveredItem);\n }\n\n // Add hover event listeners\n const handleMouseEnter = (event: Event) => {\n // Clear any pending hide timeout\n if (hideTimeoutRef.current) {\n clearTimeout(hideTimeoutRef.current);\n hideTimeoutRef.current = null;\n }\n setHoveredItem(event.currentTarget as HTMLElement);\n };\n\n const handleMouseLeave = () => {\n // Clear any existing timeout\n if (hideTimeoutRef.current) {\n clearTimeout(hideTimeoutRef.current);\n }\n\n // Keep the indicator at its current position for 150ms\n // before removing the hovered item\n hideTimeoutRef.current = setTimeout(() => {\n setHoveredItem(null);\n }, 150); // 150ms delay before hiding\n };\n\n if (isHoverable) {\n optionsRefs.current.forEach((option) => {\n option?.addEventListener('mouseenter', handleMouseEnter, {\n passive: true,\n });\n option?.addEventListener('mouseleave', handleMouseLeave, {\n passive: true,\n });\n });\n }\n\n return () => {\n // Clear any pending hide timeout\n if (hideTimeoutRef.current) {\n clearTimeout(hideTimeoutRef.current);\n }\n\n // Cleanup window event listeners\n window.removeEventListener('resize', calculatePosition);\n window.removeEventListener('DOMContentLoaded', calculatePosition);\n\n // Disconnect MutationObservers\n mutationObservers.forEach((observer) => {\n observer.disconnect();\n });\n\n // Disconnect ResizeObservers\n resizeObservers.forEach((observer) => {\n observer.disconnect();\n });\n\n // Remove hover event listeners\n optionsRefs.current.forEach((option) => {\n option?.removeEventListener('mouseenter', handleMouseEnter);\n option?.removeEventListener('mouseleave', handleMouseLeave);\n });\n };\n }, [\n optionsRefs,\n selector,\n hoveredItem,\n itemsLength,\n orientation,\n isHoverable,\n ]);\n\n return { choiceIndicatorPosition, calculatePosition, orientation };\n};\n"],"mappings":";;;;;AAoBA,MAAM,mBAAmB,WACvB,QAAQ,aAAa,gBAAgB,KAAK;AAQ5C,MAAa,mBACX,aACA,EACE,WAAW,iBACX,cAAc,OACd,cAAc,iBACH;CACX,UAAU;CACV,aAAa;CACb,aAAa;CACd,KACE;CACH,MAAM,CAAC,yBAAyB,8BAC9B,SAA4B,KAAK;CAEnC,MAAM,CAAC,aAAa,kBAAkB,SAA6B,KAAK;CACxE,MAAM,iBAAiB,OAA8B,KAAK;CAC1D,MAAM,kBAAkB,OAA0B,KAAK;CAEvD,MAAM,cAAc,YAAY,QAAQ;CAExC,MAAM,0BAA0B;EAC9B,IAAI,gBAAoC;AAExC,MAAI,aAAa;AACf,mBAAgB;AAEhB,OAAI,eAAe,SAAS;AAC1B,iBAAa,eAAe,QAAQ;AACpC,mBAAe,UAAU;;QAG3B,iBAAgB,YAAY,QAAQ,KAAK,SAAS,IAAI;AAGxD,MAAI,CAAC,eAAe;AAElB,OAAI,gBAAgB,YAAY;IAC9B,MAAM,eACJ,gBAAgB;IAClB,MAAM,cAAkC;KACtC,KAAK,cAAc,OAAO;KAC1B,QAAQ,cAAc,UAAU;KAChC,SAAS;KACV;AAED,QAAI,cAAc,YAAY,GAAG;AAC/B,gCAA2B,YAAY;AACvC,qBAAgB,UAAU;;UAEvB;IACL,MAAM,iBACJ,gBAAgB;IAClB,MAAM,cAAoC;KACxC,MAAM,gBAAgB,QAAQ;KAC9B,OAAO,gBAAgB,SAAS;KAChC,SAAS;KACV;AAED,QAAI,gBAAgB,YAAY,GAAG;AACjC,gCAA2B,YAAY;AACvC,qBAAgB,UAAU;;;AAG9B;;AAGF,MAAI,gBAAgB,YAAY;GAC9B,MAAM,MAAM,cAAc;GAC1B,MAAM,SAAS,cAAc;GAE7B,MAAM,cAAc;IAClB;IACA;IACA,SAAS;IACV;GAED,MAAM,OAAO,gBAAgB;AAE7B,OACE,CAAC,QACD,KAAK,QAAQ,OACb,KAAK,WAAW,UAChB,KAAK,YAAY,GACjB;AACA,+BAA2B,YAAY;AACvC,oBAAgB,UAAU;;SAEvB;GACL,MAAM,OAAO,cAAc;GAC3B,MAAM,QAAQ,cAAc;GAE5B,MAAM,cAAc;IAClB;IACA;IACA,SAAS;IACV;GAED,MAAM,OAAO,gBAAgB;AAE7B,OACE,CAAC,QACD,KAAK,SAAS,QACd,KAAK,UAAU,SACf,KAAK,YAAY,GACjB;AACA,+BAA2B,YAAY;AACvC,oBAAgB,UAAU;;;;AAKhC,uBAAsB;AACpB,qBAAmB;AAGnB,SAAO,iBAAiB,UAAU,kBAAkB;AACpD,SAAO,iBAAiB,oBAAoB,kBAAkB;EAG9D,MAAM,oBAAwC,EAAE;AAEhD,cAAY,QAAQ,SAAS,WAAW;AACtC,OAAI,QAAQ;IACV,MAAM,WAAW,IAAI,kBAAkB,cAAc;AACnD,UAAK,MAAM,YAAY,UACrB,KACE,SAAS,SAAS,iBACjB,SAAS,kBAAkB,mBAC1B,SAAS,kBAAkB,iBAC3B,SAAS,kBAAkB,mBAC7B;AACA,yBAAmB;AACnB;;MAGJ;AAEF,aAAS,QAAQ,QAAQ;KACvB,YAAY;KACZ,iBAAiB;MAAC;MAAiB;MAAe;MAAiB;KACpE,CAAC;AAEF,sBAAkB,KAAK,SAAS;;IAElC;EAGF,MAAM,kBAAoC,EAAE;EAE5C,MAAM,eAAe,YAAyB;AAC5C,OAAI,CAAC,QAAS;GACd,MAAM,iBAAiB,IAAI,qBAAqB;AAC9C,uBAAmB;KACnB;AACF,kBAAe,QAAQ,QAAQ;AAC/B,mBAAgB,KAAK,eAAe;;EAItC,MAAM,eAAe,YAAY,QAAQ,KAAK,SAAS,IAAI;AAE3D,MAAI,aACF,aAAY,aAAa;AAI3B,MAAI,YACF,aAAY,YAAY;EAI1B,MAAM,oBAAoB,UAAiB;AAEzC,OAAI,eAAe,SAAS;AAC1B,iBAAa,eAAe,QAAQ;AACpC,mBAAe,UAAU;;AAE3B,kBAAe,MAAM,cAA6B;;EAGpD,MAAM,yBAAyB;AAE7B,OAAI,eAAe,QACjB,cAAa,eAAe,QAAQ;AAKtC,kBAAe,UAAU,iBAAiB;AACxC,mBAAe,KAAK;MACnB,IAAI;;AAGT,MAAI,YACF,aAAY,QAAQ,SAAS,WAAW;AACtC,WAAQ,iBAAiB,cAAc,kBAAkB,EACvD,SAAS,MACV,CAAC;AACF,WAAQ,iBAAiB,cAAc,kBAAkB,EACvD,SAAS,MACV,CAAC;IACF;AAGJ,eAAa;AAEX,OAAI,eAAe,QACjB,cAAa,eAAe,QAAQ;AAItC,UAAO,oBAAoB,UAAU,kBAAkB;AACvD,UAAO,oBAAoB,oBAAoB,kBAAkB;AAGjE,qBAAkB,SAAS,aAAa;AACtC,aAAS,YAAY;KACrB;AAGF,mBAAgB,SAAS,aAAa;AACpC,aAAS,YAAY;KACrB;AAGF,eAAY,QAAQ,SAAS,WAAW;AACtC,YAAQ,oBAAoB,cAAc,iBAAiB;AAC3D,YAAQ,oBAAoB,cAAc,iBAAiB;KAC3D;;IAEH;EACD;EACA;EACA;EACA;EACA;EACA;EACD,CAAC;AAEF,QAAO;EAAE;EAAyB;EAAmB;EAAa"}
@@ -1 +1 @@
1
- {"version":3,"file":"useKeyboardDetector.mjs","names":[],"sources":["../../../src/hooks/useKeyboardDetector.ts"],"sourcesContent":["'use client';\n\nimport { useEffect, useState } from 'react';\n\nexport const useKeyboardDetector = () => {\n const [windowHeight, setWindowHeight] = useState<number | null>(null);\n\n useEffect(() => {\n const updateHeight = () => {\n const isKeyboardOpen = Boolean(\n window.visualViewport?.height &&\n window.visualViewport.height < window.innerHeight - 100\n );\n\n if (isKeyboardOpen && window.visualViewport) {\n setWindowHeight(window.visualViewport.height);\n } else {\n setWindowHeight(null);\n }\n };\n\n // Listen for changes in visualViewport height\n window.visualViewport?.addEventListener('resize', updateHeight, {\n passive: true,\n });\n updateHeight(); // Set initial height\n\n return () => {\n window.visualViewport?.removeEventListener('resize', updateHeight);\n };\n }, []);\n\n return { windowHeight, isKeyboardOpen: windowHeight !== null };\n};\n"],"mappings":";;;;;AAIA,MAAa,4BAA4B;CACvC,MAAM,CAAC,cAAc,mBAAmB,SAAwB,IAAI;CAEpE,gBAAgB;EACd,MAAM,qBAAqB;GAMzB,IALuB,QACrB,OAAO,gBAAgB,UACrB,OAAO,eAAe,SAAS,OAAO,cAAc,GAGvC,KAAK,OAAO,gBAC3B,gBAAgB,OAAO,eAAe,MAAM;QAE5C,gBAAgB,IAAI;EAExB;EAGA,OAAO,gBAAgB,iBAAiB,UAAU,cAAc,EAC9D,SAAS,KACX,CAAC;EACD,aAAa;EAEb,aAAa;GACX,OAAO,gBAAgB,oBAAoB,UAAU,YAAY;EACnE;CACF,GAAG,CAAC,CAAC;CAEL,OAAO;EAAE;EAAc,gBAAgB,iBAAiB;CAAK;AAC/D"}
1
+ {"version":3,"file":"useKeyboardDetector.mjs","names":[],"sources":["../../../src/hooks/useKeyboardDetector.ts"],"sourcesContent":["'use client';\n\nimport { useEffect, useState } from 'react';\n\nexport const useKeyboardDetector = () => {\n const [windowHeight, setWindowHeight] = useState<number | null>(null);\n\n useEffect(() => {\n const updateHeight = () => {\n const isKeyboardOpen = Boolean(\n window.visualViewport?.height &&\n window.visualViewport.height < window.innerHeight - 100\n );\n\n if (isKeyboardOpen && window.visualViewport) {\n setWindowHeight(window.visualViewport.height);\n } else {\n setWindowHeight(null);\n }\n };\n\n // Listen for changes in visualViewport height\n window.visualViewport?.addEventListener('resize', updateHeight, {\n passive: true,\n });\n updateHeight(); // Set initial height\n\n return () => {\n window.visualViewport?.removeEventListener('resize', updateHeight);\n };\n }, []);\n\n return { windowHeight, isKeyboardOpen: windowHeight !== null };\n};\n"],"mappings":";;;;;AAIA,MAAa,4BAA4B;CACvC,MAAM,CAAC,cAAc,mBAAmB,SAAwB,KAAK;AAErE,iBAAgB;EACd,MAAM,qBAAqB;AAMzB,OALuB,QACrB,OAAO,gBAAgB,UACrB,OAAO,eAAe,SAAS,OAAO,cAAc,IAGtC,IAAI,OAAO,eAC3B,iBAAgB,OAAO,eAAe,OAAO;OAE7C,iBAAgB,KAAK;;AAKzB,SAAO,gBAAgB,iBAAiB,UAAU,cAAc,EAC9D,SAAS,MACV,CAAC;AACF,gBAAc;AAEd,eAAa;AACX,UAAO,gBAAgB,oBAAoB,UAAU,aAAa;;IAEnE,EAAE,CAAC;AAEN,QAAO;EAAE;EAAc,gBAAgB,iBAAiB;EAAM"}
@@ -1 +1 @@
1
- {"version":3,"file":"usePersistedStore.mjs","names":[],"sources":["../../../src/hooks/usePersistedStore.ts"],"sourcesContent":["'use client';\n\nimport {\n type Dispatch,\n type SetStateAction,\n useCallback,\n useEffect,\n useMemo,\n useState,\n} from 'react';\n\nexport const usePersistedStore = <S>(\n key: string,\n initialState?: S | (() => S)\n): [S, Dispatch<SetStateAction<S>>, () => void, () => void] => {\n const [state, setState] = useState<S>(() => {\n // If you have an initial value on the client, send a message out immediately\n if (initialState !== undefined) {\n const result: S =\n typeof initialState === 'function'\n ? (initialState as () => S)()\n : initialState;\n\n if (typeof window === 'undefined') return result;\n\n const persistedState = localStorage?.getItem(key);\n\n if (persistedState) {\n try {\n return JSON.parse(persistedState);\n } catch (e) {\n console.error(e);\n }\n }\n\n return result;\n }\n\n return undefined as S;\n });\n\n useEffect(() => {\n const persistedState = localStorage?.getItem(key);\n\n if (\n persistedState &&\n persistedState !== 'undefined' &&\n state === undefined\n ) {\n try {\n setState(JSON.parse(persistedState));\n } catch (e) {\n console.error(e);\n }\n } else if (initialState !== undefined && state === undefined) {\n setState(initialState);\n }\n }, [key, state]);\n\n /**\n * Allows setting state either directly or via a functional update.\n * If passed a function, we merge/update based on the previous state.\n */\n const setStateWrapper: typeof setState = useCallback(\n (valueOrUpdater: SetStateAction<S>) => {\n setState((prev) => {\n const newValue: S =\n typeof valueOrUpdater === 'function'\n ? (valueOrUpdater as (prevVal: S) => S)(prev)\n : valueOrUpdater;\n\n if (typeof newValue !== 'undefined') {\n localStorage?.setItem(key, JSON.stringify(newValue));\n return newValue;\n }\n\n return prev;\n });\n },\n [key, setState]\n );\n\n const loadState = useCallback(() => {\n const savedState = localStorage?.getItem(key);\n if (savedState) {\n setState(JSON.parse(savedState));\n }\n }, [key, setState]);\n\n const clearState = useCallback(() => {\n localStorage?.removeItem(key);\n setState(undefined as S);\n }, [key]);\n\n return useMemo(\n () => [state, setStateWrapper, loadState, clearState],\n [state, setStateWrapper, loadState, clearState]\n );\n};\n"],"mappings":";;;;;AAWA,MAAa,qBACX,KACA,iBAC6D;CAC7D,MAAM,CAAC,OAAO,YAAY,eAAkB;EAE1C,IAAI,iBAAiB,QAAW;GAC9B,MAAM,SACJ,OAAO,iBAAiB,aACnB,aAAyB,IAC1B;GAEN,IAAI,OAAO,WAAW,aAAa,OAAO;GAE1C,MAAM,iBAAiB,cAAc,QAAQ,GAAG;GAEhD,IAAI,gBACF,IAAI;IACF,OAAO,KAAK,MAAM,cAAc;GAClC,SAAS,GAAG;IACV,QAAQ,MAAM,CAAC;GACjB;GAGF,OAAO;EACT;CAGF,CAAC;CAED,gBAAgB;EACd,MAAM,iBAAiB,cAAc,QAAQ,GAAG;EAEhD,IACE,kBACA,mBAAmB,eACnB,UAAU,QAEV,IAAI;GACF,SAAS,KAAK,MAAM,cAAc,CAAC;EACrC,SAAS,GAAG;GACV,QAAQ,MAAM,CAAC;EACjB;OACK,IAAI,iBAAiB,UAAa,UAAU,QACjD,SAAS,YAAY;CAEzB,GAAG,CAAC,KAAK,KAAK,CAAC;;;;;CAMf,MAAM,kBAAmC,aACtC,mBAAsC;EACrC,UAAU,SAAS;GACjB,MAAM,WACJ,OAAO,mBAAmB,aACrB,eAAqC,IAAI,IAC1C;GAEN,IAAI,OAAO,aAAa,aAAa;IACnC,cAAc,QAAQ,KAAK,KAAK,UAAU,QAAQ,CAAC;IACnD,OAAO;GACT;GAEA,OAAO;EACT,CAAC;CACH,GACA,CAAC,KAAK,QAAQ,CAChB;CAEA,MAAM,YAAY,kBAAkB;EAClC,MAAM,aAAa,cAAc,QAAQ,GAAG;EAC5C,IAAI,YACF,SAAS,KAAK,MAAM,UAAU,CAAC;CAEnC,GAAG,CAAC,KAAK,QAAQ,CAAC;CAElB,MAAM,aAAa,kBAAkB;EACnC,cAAc,WAAW,GAAG;EAC5B,SAAS,MAAc;CACzB,GAAG,CAAC,GAAG,CAAC;CAER,OAAO,cACC;EAAC;EAAO;EAAiB;EAAW;CAAU,GACpD;EAAC;EAAO;EAAiB;EAAW;CAAU,CAChD;AACF"}
1
+ {"version":3,"file":"usePersistedStore.mjs","names":[],"sources":["../../../src/hooks/usePersistedStore.ts"],"sourcesContent":["'use client';\n\nimport {\n type Dispatch,\n type SetStateAction,\n useCallback,\n useEffect,\n useMemo,\n useState,\n} from 'react';\n\nexport const usePersistedStore = <S>(\n key: string,\n initialState?: S | (() => S)\n): [S, Dispatch<SetStateAction<S>>, () => void, () => void] => {\n const [state, setState] = useState<S>(() => {\n // If you have an initial value on the client, send a message out immediately\n if (initialState !== undefined) {\n const result: S =\n typeof initialState === 'function'\n ? (initialState as () => S)()\n : initialState;\n\n if (typeof window === 'undefined') return result;\n\n const persistedState = localStorage?.getItem(key);\n\n if (persistedState) {\n try {\n return JSON.parse(persistedState);\n } catch (e) {\n console.error(e);\n }\n }\n\n return result;\n }\n\n return undefined as S;\n });\n\n useEffect(() => {\n const persistedState = localStorage?.getItem(key);\n\n if (\n persistedState &&\n persistedState !== 'undefined' &&\n state === undefined\n ) {\n try {\n setState(JSON.parse(persistedState));\n } catch (e) {\n console.error(e);\n }\n } else if (initialState !== undefined && state === undefined) {\n setState(initialState);\n }\n }, [key, state]);\n\n /**\n * Allows setting state either directly or via a functional update.\n * If passed a function, we merge/update based on the previous state.\n */\n const setStateWrapper: typeof setState = useCallback(\n (valueOrUpdater: SetStateAction<S>) => {\n setState((prev) => {\n const newValue: S =\n typeof valueOrUpdater === 'function'\n ? (valueOrUpdater as (prevVal: S) => S)(prev)\n : valueOrUpdater;\n\n if (typeof newValue !== 'undefined') {\n localStorage?.setItem(key, JSON.stringify(newValue));\n return newValue;\n }\n\n return prev;\n });\n },\n [key, setState]\n );\n\n const loadState = useCallback(() => {\n const savedState = localStorage?.getItem(key);\n if (savedState) {\n setState(JSON.parse(savedState));\n }\n }, [key, setState]);\n\n const clearState = useCallback(() => {\n localStorage?.removeItem(key);\n setState(undefined as S);\n }, [key]);\n\n return useMemo(\n () => [state, setStateWrapper, loadState, clearState],\n [state, setStateWrapper, loadState, clearState]\n );\n};\n"],"mappings":";;;;;AAWA,MAAa,qBACX,KACA,iBAC6D;CAC7D,MAAM,CAAC,OAAO,YAAY,eAAkB;AAE1C,MAAI,iBAAiB,QAAW;GAC9B,MAAM,SACJ,OAAO,iBAAiB,aACnB,cAA0B,GAC3B;AAEN,OAAI,OAAO,WAAW,YAAa,QAAO;GAE1C,MAAM,iBAAiB,cAAc,QAAQ,IAAI;AAEjD,OAAI,eACF,KAAI;AACF,WAAO,KAAK,MAAM,eAAe;YAC1B,GAAG;AACV,YAAQ,MAAM,EAAE;;AAIpB,UAAO;;GAIT;AAEF,iBAAgB;EACd,MAAM,iBAAiB,cAAc,QAAQ,IAAI;AAEjD,MACE,kBACA,mBAAmB,eACnB,UAAU,OAEV,KAAI;AACF,YAAS,KAAK,MAAM,eAAe,CAAC;WAC7B,GAAG;AACV,WAAQ,MAAM,EAAE;;WAET,iBAAiB,UAAa,UAAU,OACjD,UAAS,aAAa;IAEvB,CAAC,KAAK,MAAM,CAAC;;;;;CAMhB,MAAM,kBAAmC,aACtC,mBAAsC;AACrC,YAAU,SAAS;GACjB,MAAM,WACJ,OAAO,mBAAmB,aACrB,eAAqC,KAAK,GAC3C;AAEN,OAAI,OAAO,aAAa,aAAa;AACnC,kBAAc,QAAQ,KAAK,KAAK,UAAU,SAAS,CAAC;AACpD,WAAO;;AAGT,UAAO;IACP;IAEJ,CAAC,KAAK,SAAS,CAChB;CAED,MAAM,YAAY,kBAAkB;EAClC,MAAM,aAAa,cAAc,QAAQ,IAAI;AAC7C,MAAI,WACF,UAAS,KAAK,MAAM,WAAW,CAAC;IAEjC,CAAC,KAAK,SAAS,CAAC;CAEnB,MAAM,aAAa,kBAAkB;AACnC,gBAAc,WAAW,IAAI;AAC7B,WAAS,OAAe;IACvB,CAAC,IAAI,CAAC;AAET,QAAO,cACC;EAAC;EAAO;EAAiB;EAAW;EAAW,EACrD;EAAC;EAAO;EAAiB;EAAW;EAAW,CAChD"}
@@ -1 +1 @@
1
- {"version":3,"file":"useScreenWidth.mjs","names":[],"sources":["../../../src/hooks/useScreenWidth.ts"],"sourcesContent":["'use client';\n\nimport { useEffect, useState } from 'react';\n\nexport const useScreenWidth = () => {\n const [screenWidth, setScreenWith] = useState<number>(0);\n\n useEffect(() => {\n const handleResize = () => {\n setScreenWith(window.innerWidth);\n };\n\n handleResize();\n\n window.addEventListener('resize', handleResize, { passive: true });\n\n return () => window.removeEventListener('resize', handleResize);\n }, []);\n\n return { screenWidth };\n};\n"],"mappings":";;;;;AAIA,MAAa,uBAAuB;CAClC,MAAM,CAAC,aAAa,iBAAiB,SAAiB,CAAC;CAEvD,gBAAgB;EACd,MAAM,qBAAqB;GACzB,cAAc,OAAO,UAAU;EACjC;EAEA,aAAa;EAEb,OAAO,iBAAiB,UAAU,cAAc,EAAE,SAAS,KAAK,CAAC;EAEjE,aAAa,OAAO,oBAAoB,UAAU,YAAY;CAChE,GAAG,CAAC,CAAC;CAEL,OAAO,EAAE,YAAY;AACvB"}
1
+ {"version":3,"file":"useScreenWidth.mjs","names":[],"sources":["../../../src/hooks/useScreenWidth.ts"],"sourcesContent":["'use client';\n\nimport { useEffect, useState } from 'react';\n\nexport const useScreenWidth = () => {\n const [screenWidth, setScreenWith] = useState<number>(0);\n\n useEffect(() => {\n const handleResize = () => {\n setScreenWith(window.innerWidth);\n };\n\n handleResize();\n\n window.addEventListener('resize', handleResize, { passive: true });\n\n return () => window.removeEventListener('resize', handleResize);\n }, []);\n\n return { screenWidth };\n};\n"],"mappings":";;;;;AAIA,MAAa,uBAAuB;CAClC,MAAM,CAAC,aAAa,iBAAiB,SAAiB,EAAE;AAExD,iBAAgB;EACd,MAAM,qBAAqB;AACzB,iBAAc,OAAO,WAAW;;AAGlC,gBAAc;AAEd,SAAO,iBAAiB,UAAU,cAAc,EAAE,SAAS,MAAM,CAAC;AAElE,eAAa,OAAO,oBAAoB,UAAU,aAAa;IAC9D,EAAE,CAAC;AAEN,QAAO,EAAE,aAAa"}
@@ -1 +1 @@
1
- {"version":3,"file":"index.mjs","names":[],"sources":["../../../../src/hooks/useScrollBlockage/index.tsx"],"sourcesContent":["'use client';\n\nimport { useEffect } from 'react';\nimport { useGetElementOrWindow } from '../useGetElementOrWindow';\n\nimport { useScrollBlockageStore } from './useScrollBlockageStore';\n\ntype useScrollBlockagePropsReadOnly = {\n disableScroll: undefined;\n key: undefined;\n element?: HTMLElement; // The element to block the scroll. If not defined, the window will be used\n};\n\ntype useScrollBlockageProps = {\n disableScroll: boolean;\n key: string; // The key to identify the blockage to avoid conflicts. Required if disableScroll is defined\n element?: HTMLElement; // The element to block the scroll. If not defined, the window will be used\n};\n\nexport const useScrollBlockage = (\n props?: useScrollBlockageProps | useScrollBlockagePropsReadOnly\n) => {\n const {\n disableScroll = false,\n element,\n key = 'unnamed_blocker',\n } = props ?? {};\n\n const { isElementScrollBlocked, addBlockage, removeBlockage } =\n useScrollBlockageStore();\n\n const containerElement = useGetElementOrWindow(element);\n\n useEffect(() => {\n const el = element ?? window.document.body;\n\n if (disableScroll) {\n addBlockage(key, el);\n } else {\n removeBlockage(key, el);\n }\n\n return () => {\n removeBlockage(key, el);\n };\n }, [addBlockage, disableScroll, element, key, removeBlockage]);\n\n const isScrollBlocked = containerElement\n ? isElementScrollBlocked(containerElement)\n : false;\n\n return { isScrollBlocked };\n};\n"],"mappings":";;;;;;;AAmBA,MAAa,qBACX,UACG;CACH,MAAM,EACJ,gBAAgB,OAChB,SACA,MAAM,sBACJ,SAAS,CAAC;CAEd,MAAM,EAAE,wBAAwB,aAAa,mBAC3C,uBAAuB;CAEzB,MAAM,mBAAmB,sBAAsB,OAAO;CAEtD,gBAAgB;EACd,MAAM,KAAK,WAAW,OAAO,SAAS;EAEtC,IAAI,eACF,YAAY,KAAK,EAAE;OAEnB,eAAe,KAAK,EAAE;EAGxB,aAAa;GACX,eAAe,KAAK,EAAE;EACxB;CACF,GAAG;EAAC;EAAa;EAAe;EAAS;EAAK;CAAc,CAAC;CAM7D,OAAO,EAAE,iBAJe,mBACpB,uBAAuB,gBAAgB,IACvC,MAEqB;AAC3B"}
1
+ {"version":3,"file":"index.mjs","names":[],"sources":["../../../../src/hooks/useScrollBlockage/index.tsx"],"sourcesContent":["'use client';\n\nimport { useEffect } from 'react';\nimport { useGetElementOrWindow } from '../useGetElementOrWindow';\n\nimport { useScrollBlockageStore } from './useScrollBlockageStore';\n\ntype useScrollBlockagePropsReadOnly = {\n disableScroll: undefined;\n key: undefined;\n element?: HTMLElement; // The element to block the scroll. If not defined, the window will be used\n};\n\ntype useScrollBlockageProps = {\n disableScroll: boolean;\n key: string; // The key to identify the blockage to avoid conflicts. Required if disableScroll is defined\n element?: HTMLElement; // The element to block the scroll. If not defined, the window will be used\n};\n\nexport const useScrollBlockage = (\n props?: useScrollBlockageProps | useScrollBlockagePropsReadOnly\n) => {\n const {\n disableScroll = false,\n element,\n key = 'unnamed_blocker',\n } = props ?? {};\n\n const { isElementScrollBlocked, addBlockage, removeBlockage } =\n useScrollBlockageStore();\n\n const containerElement = useGetElementOrWindow(element);\n\n useEffect(() => {\n const el = element ?? window.document.body;\n\n if (disableScroll) {\n addBlockage(key, el);\n } else {\n removeBlockage(key, el);\n }\n\n return () => {\n removeBlockage(key, el);\n };\n }, [addBlockage, disableScroll, element, key, removeBlockage]);\n\n const isScrollBlocked = containerElement\n ? isElementScrollBlocked(containerElement)\n : false;\n\n return { isScrollBlocked };\n};\n"],"mappings":";;;;;;;AAmBA,MAAa,qBACX,UACG;CACH,MAAM,EACJ,gBAAgB,OAChB,SACA,MAAM,sBACJ,SAAS,EAAE;CAEf,MAAM,EAAE,wBAAwB,aAAa,mBAC3C,wBAAwB;CAE1B,MAAM,mBAAmB,sBAAsB,QAAQ;AAEvD,iBAAgB;EACd,MAAM,KAAK,WAAW,OAAO,SAAS;AAEtC,MAAI,cACF,aAAY,KAAK,GAAG;MAEpB,gBAAe,KAAK,GAAG;AAGzB,eAAa;AACX,kBAAe,KAAK,GAAG;;IAExB;EAAC;EAAa;EAAe;EAAS;EAAK;EAAe,CAAC;AAM9D,QAAO,EAAE,iBAJe,mBACpB,uBAAuB,iBAAiB,GACxC,OAEsB"}
@@ -1 +1 @@
1
- {"version":3,"file":"useScrollBlockageStore.mjs","names":[],"sources":["../../../../src/hooks/useScrollBlockage/useScrollBlockageStore.ts"],"sourcesContent":["import { useSyncExternalStore } from 'react';\n\ntype Blocker = {\n element: Element;\n blockers: string[];\n};\n\nclass ScrollBlockageObservable {\n private listeners = new Set<() => void>();\n private scrollBlockers: Blocker[] = [];\n\n subscribe = (listener: () => void) => {\n this.listeners.add(listener);\n return () => {\n this.listeners.delete(listener);\n };\n };\n\n getSnapshot = () => {\n return this.scrollBlockers;\n };\n\n addBlockage = (blockerName: string, element: HTMLElement) => {\n const blockersElement = this.scrollBlockers.find(\n (blocker) => blocker.element === element\n );\n\n if (blockersElement) {\n if (blockersElement.blockers.includes(blockerName)) return;\n\n this.scrollBlockers = this.scrollBlockers.map((blocker) =>\n blocker.element === element\n ? { ...blocker, blockers: [...blocker.blockers, blockerName] }\n : blocker\n );\n } else {\n element.style.overflowY = 'hidden';\n element.style.overflowX = 'hidden';\n this.scrollBlockers = [\n ...this.scrollBlockers,\n { element, blockers: [blockerName] },\n ];\n }\n this.emit();\n };\n\n removeBlockage = (blockerName: string, element: HTMLElement) => {\n const blocker = this.scrollBlockers.find(\n (blocker) => blocker.element === element\n );\n\n if (blocker) {\n if (blocker.blockers.length > 1) {\n this.scrollBlockers = this.scrollBlockers.map((b) =>\n b.element === element\n ? {\n ...b,\n blockers: b.blockers.filter((name) => name !== blockerName),\n }\n : b\n );\n } else {\n element.style.overflowY = '';\n element.style.overflowX = '';\n this.scrollBlockers = this.scrollBlockers.filter(\n (b) => b.element !== element\n );\n }\n this.emit();\n }\n };\n\n isElementScrollBlocked = (element: HTMLElement) => {\n return this.scrollBlockers.some((blocker) => blocker.element === element);\n };\n\n private emit = () => {\n this.listeners.forEach((listener) => {\n listener();\n });\n };\n}\n\nexport const scrollBlockageManager = new ScrollBlockageObservable();\n\nconst serverSnapshot: Blocker[] = [];\n\nexport const useScrollBlockageStore = () => {\n const scrollBlockers = useSyncExternalStore(\n scrollBlockageManager.subscribe,\n scrollBlockageManager.getSnapshot,\n () => serverSnapshot\n );\n\n return {\n scrollBlockers,\n addBlockage: scrollBlockageManager.addBlockage,\n removeBlockage: scrollBlockageManager.removeBlockage,\n isElementScrollBlocked: scrollBlockageManager.isElementScrollBlocked,\n };\n};\n"],"mappings":";;;AAOA,IAAM,2BAAN,MAA+B;CAC7B,AAAQ,4BAAY,IAAI,IAAgB;CACxC,AAAQ,iBAA4B,CAAC;CAErC,aAAa,aAAyB;EACpC,KAAK,UAAU,IAAI,QAAQ;EAC3B,aAAa;GACX,KAAK,UAAU,OAAO,QAAQ;EAChC;CACF;CAEA,oBAAoB;EAClB,OAAO,KAAK;CACd;CAEA,eAAe,aAAqB,YAAyB;EAC3D,MAAM,kBAAkB,KAAK,eAAe,MACzC,YAAY,QAAQ,YAAY,OACnC;EAEA,IAAI,iBAAiB;GACnB,IAAI,gBAAgB,SAAS,SAAS,WAAW,GAAG;GAEpD,KAAK,iBAAiB,KAAK,eAAe,KAAK,YAC7C,QAAQ,YAAY,UAChB;IAAE,GAAG;IAAS,UAAU,CAAC,GAAG,QAAQ,UAAU,WAAW;GAAE,IAC3D,OACN;EACF,OAAO;GACL,QAAQ,MAAM,YAAY;GAC1B,QAAQ,MAAM,YAAY;GAC1B,KAAK,iBAAiB,CACpB,GAAG,KAAK,gBACR;IAAE;IAAS,UAAU,CAAC,WAAW;GAAE,CACrC;EACF;EACA,KAAK,KAAK;CACZ;CAEA,kBAAkB,aAAqB,YAAyB;EAC9D,MAAM,UAAU,KAAK,eAAe,MACjC,YAAY,QAAQ,YAAY,OACnC;EAEA,IAAI,SAAS;GACX,IAAI,QAAQ,SAAS,SAAS,GAC5B,KAAK,iBAAiB,KAAK,eAAe,KAAK,MAC7C,EAAE,YAAY,UACV;IACE,GAAG;IACH,UAAU,EAAE,SAAS,QAAQ,SAAS,SAAS,WAAW;GAC5D,IACA,CACN;QACK;IACL,QAAQ,MAAM,YAAY;IAC1B,QAAQ,MAAM,YAAY;IAC1B,KAAK,iBAAiB,KAAK,eAAe,QACvC,MAAM,EAAE,YAAY,OACvB;GACF;GACA,KAAK,KAAK;EACZ;CACF;CAEA,0BAA0B,YAAyB;EACjD,OAAO,KAAK,eAAe,MAAM,YAAY,QAAQ,YAAY,OAAO;CAC1E;CAEA,AAAQ,aAAa;EACnB,KAAK,UAAU,SAAS,aAAa;GACnC,SAAS;EACX,CAAC;CACH;AACF;AAEA,MAAa,wBAAwB,IAAI,yBAAyB;AAElE,MAAM,iBAA4B,CAAC;AAEnC,MAAa,+BAA+B;CAO1C,OAAO;EACL,gBAPqB,qBACrB,sBAAsB,WACtB,sBAAsB,mBAChB,cAIO;EACb,aAAa,sBAAsB;EACnC,gBAAgB,sBAAsB;EACtC,wBAAwB,sBAAsB;CAChD;AACF"}
1
+ {"version":3,"file":"useScrollBlockageStore.mjs","names":[],"sources":["../../../../src/hooks/useScrollBlockage/useScrollBlockageStore.ts"],"sourcesContent":["import { useSyncExternalStore } from 'react';\n\ntype Blocker = {\n element: Element;\n blockers: string[];\n};\n\nclass ScrollBlockageObservable {\n private listeners = new Set<() => void>();\n private scrollBlockers: Blocker[] = [];\n\n subscribe = (listener: () => void) => {\n this.listeners.add(listener);\n return () => {\n this.listeners.delete(listener);\n };\n };\n\n getSnapshot = () => {\n return this.scrollBlockers;\n };\n\n addBlockage = (blockerName: string, element: HTMLElement) => {\n const blockersElement = this.scrollBlockers.find(\n (blocker) => blocker.element === element\n );\n\n if (blockersElement) {\n if (blockersElement.blockers.includes(blockerName)) return;\n\n this.scrollBlockers = this.scrollBlockers.map((blocker) =>\n blocker.element === element\n ? { ...blocker, blockers: [...blocker.blockers, blockerName] }\n : blocker\n );\n } else {\n element.style.overflowY = 'hidden';\n element.style.overflowX = 'hidden';\n this.scrollBlockers = [\n ...this.scrollBlockers,\n { element, blockers: [blockerName] },\n ];\n }\n this.emit();\n };\n\n removeBlockage = (blockerName: string, element: HTMLElement) => {\n const blocker = this.scrollBlockers.find(\n (blocker) => blocker.element === element\n );\n\n if (blocker) {\n if (blocker.blockers.length > 1) {\n this.scrollBlockers = this.scrollBlockers.map((b) =>\n b.element === element\n ? {\n ...b,\n blockers: b.blockers.filter((name) => name !== blockerName),\n }\n : b\n );\n } else {\n element.style.overflowY = '';\n element.style.overflowX = '';\n this.scrollBlockers = this.scrollBlockers.filter(\n (b) => b.element !== element\n );\n }\n this.emit();\n }\n };\n\n isElementScrollBlocked = (element: HTMLElement) => {\n return this.scrollBlockers.some((blocker) => blocker.element === element);\n };\n\n private emit = () => {\n this.listeners.forEach((listener) => {\n listener();\n });\n };\n}\n\nexport const scrollBlockageManager = new ScrollBlockageObservable();\n\nconst serverSnapshot: Blocker[] = [];\n\nexport const useScrollBlockageStore = () => {\n const scrollBlockers = useSyncExternalStore(\n scrollBlockageManager.subscribe,\n scrollBlockageManager.getSnapshot,\n () => serverSnapshot\n );\n\n return {\n scrollBlockers,\n addBlockage: scrollBlockageManager.addBlockage,\n removeBlockage: scrollBlockageManager.removeBlockage,\n isElementScrollBlocked: scrollBlockageManager.isElementScrollBlocked,\n };\n};\n"],"mappings":";;;AAOA,IAAM,2BAAN,MAA+B;CAC7B,AAAQ,4BAAY,IAAI,KAAiB;CACzC,AAAQ,iBAA4B,EAAE;CAEtC,aAAa,aAAyB;AACpC,OAAK,UAAU,IAAI,SAAS;AAC5B,eAAa;AACX,QAAK,UAAU,OAAO,SAAS;;;CAInC,oBAAoB;AAClB,SAAO,KAAK;;CAGd,eAAe,aAAqB,YAAyB;EAC3D,MAAM,kBAAkB,KAAK,eAAe,MACzC,YAAY,QAAQ,YAAY,QAClC;AAED,MAAI,iBAAiB;AACnB,OAAI,gBAAgB,SAAS,SAAS,YAAY,CAAE;AAEpD,QAAK,iBAAiB,KAAK,eAAe,KAAK,YAC7C,QAAQ,YAAY,UAChB;IAAE,GAAG;IAAS,UAAU,CAAC,GAAG,QAAQ,UAAU,YAAY;IAAE,GAC5D,QACL;SACI;AACL,WAAQ,MAAM,YAAY;AAC1B,WAAQ,MAAM,YAAY;AAC1B,QAAK,iBAAiB,CACpB,GAAG,KAAK,gBACR;IAAE;IAAS,UAAU,CAAC,YAAY;IAAE,CACrC;;AAEH,OAAK,MAAM;;CAGb,kBAAkB,aAAqB,YAAyB;EAC9D,MAAM,UAAU,KAAK,eAAe,MACjC,YAAY,QAAQ,YAAY,QAClC;AAED,MAAI,SAAS;AACX,OAAI,QAAQ,SAAS,SAAS,EAC5B,MAAK,iBAAiB,KAAK,eAAe,KAAK,MAC7C,EAAE,YAAY,UACV;IACE,GAAG;IACH,UAAU,EAAE,SAAS,QAAQ,SAAS,SAAS,YAAY;IAC5D,GACD,EACL;QACI;AACL,YAAQ,MAAM,YAAY;AAC1B,YAAQ,MAAM,YAAY;AAC1B,SAAK,iBAAiB,KAAK,eAAe,QACvC,MAAM,EAAE,YAAY,QACtB;;AAEH,QAAK,MAAM;;;CAIf,0BAA0B,YAAyB;AACjD,SAAO,KAAK,eAAe,MAAM,YAAY,QAAQ,YAAY,QAAQ;;CAG3E,AAAQ,aAAa;AACnB,OAAK,UAAU,SAAS,aAAa;AACnC,aAAU;IACV;;;AAIN,MAAa,wBAAwB,IAAI,0BAA0B;AAEnE,MAAM,iBAA4B,EAAE;AAEpC,MAAa,+BAA+B;AAO1C,QAAO;EACL,gBAPqB,qBACrB,sBAAsB,WACtB,sBAAsB,mBAChB,eAIQ;EACd,aAAa,sBAAsB;EACnC,gBAAgB,sBAAsB;EACtC,wBAAwB,sBAAsB;EAC/C"}
@@ -1 +1 @@
1
- {"version":3,"file":"useScrollDetection.mjs","names":[],"sources":["../../../src/hooks/useScrollDetection.ts"],"sourcesContent":["'use client';\n\nimport { useCallback, useEffect, useState } from 'react';\n\nimport { useGetElementOrWindow } from './useGetElementOrWindow';\nimport { useScrollBlockage } from './useScrollBlockage';\n\ntype useScrollDetectionProps = {\n isEnabled?: boolean;\n delta?: number; // how much user has to scroll to trigger the event\n deltaFromTop?: number; // how much user has to scroll from top to detect if the user has been scrolled\n onScrollDown?: (e: WheelEvent) => void;\n onScrollUp?: (e: WheelEvent) => void;\n element?: HTMLElement; // The element to detect the scroll on. If not defined, the window.document.body will be used\n};\n\nexport const useScrollDetection = (props?: useScrollDetectionProps) => {\n const {\n isEnabled = true,\n delta = 5,\n deltaFromTop = 0,\n onScrollDown,\n onScrollUp,\n element,\n } = props ?? {};\n\n const [isScrolled, setIsScrolled] = useState<boolean>(false);\n const [isScrollable, setIsScrollable] = useState<boolean>(false);\n\n const { isScrollBlocked } = useScrollBlockage();\n const containerElement = useGetElementOrWindow(element);\n\n const onMobileMove = useCallback(\n (event: globalThis.TouchEvent) => {\n const startY = event.touches?.[0]?.clientY ?? 0;\n\n const onMove = (event: globalThis.TouchEvent) => {\n if (isEnabled) {\n const currentY = event.touches?.[0]?.clientY ?? 0;\n const deltaY = startY - currentY;\n\n setIsScrolled(deltaY > 0);\n\n containerElement?.removeEventListener('touchmove', onMove);\n }\n };\n\n containerElement?.addEventListener('touchmove', onMove);\n },\n [isEnabled, containerElement]\n );\n\n const onScroll = useCallback(\n (e: WheelEvent) => {\n const isScrolledDown = e.deltaY > 0;\n\n if (isEnabled && !isScrollBlocked && isScrollable) {\n const isDeTected = Math.abs(e.deltaY) > Math.abs(delta);\n\n if (isDeTected) {\n if (isScrolledDown) {\n onScrollDown?.(e);\n } else {\n onScrollUp?.(e);\n }\n }\n\n setIsScrolled(window.scrollY > deltaFromTop);\n }\n },\n [isEnabled, isScrollBlocked, isScrollable]\n );\n\n useEffect(() => {\n if (isEnabled) {\n containerElement?.addEventListener('wheel', onScroll, { passive: true });\n containerElement?.addEventListener('touchstart', onMobileMove, {\n passive: true,\n });\n } else {\n setIsScrolled(false);\n }\n\n return () => {\n containerElement?.removeEventListener('wheel', onScroll);\n containerElement?.removeEventListener('touchstart', onMobileMove);\n };\n }, [isEnabled, onScroll, onMobileMove, containerElement]);\n\n useEffect(() => {\n const isScrollable = window.innerHeight < window.document.body.scrollHeight;\n\n setIsScrollable(isScrollable);\n }, []);\n\n return { isScrolled, isScrollable };\n};\n"],"mappings":";;;;;;;AAgBA,MAAa,sBAAsB,UAAoC;CACrE,MAAM,EACJ,YAAY,MACZ,QAAQ,GACR,eAAe,GACf,cACA,YACA,YACE,SAAS,CAAC;CAEd,MAAM,CAAC,YAAY,iBAAiB,SAAkB,KAAK;CAC3D,MAAM,CAAC,cAAc,mBAAmB,SAAkB,KAAK;CAE/D,MAAM,EAAE,oBAAoB,kBAAkB;CAC9C,MAAM,mBAAmB,sBAAsB,OAAO;CAEtD,MAAM,eAAe,aAClB,UAAiC;EAChC,MAAM,SAAS,MAAM,UAAU,IAAI,WAAW;EAE9C,MAAM,UAAU,UAAiC;GAC/C,IAAI,WAAW;IAIb,cAFe,UADE,MAAM,UAAU,IAAI,WAAW,KAGzB,CAAC;IAExB,kBAAkB,oBAAoB,aAAa,MAAM;GAC3D;EACF;EAEA,kBAAkB,iBAAiB,aAAa,MAAM;CACxD,GACA,CAAC,WAAW,gBAAgB,CAC9B;CAEA,MAAM,WAAW,aACd,MAAkB;EACjB,MAAM,iBAAiB,EAAE,SAAS;EAElC,IAAI,aAAa,CAAC,mBAAmB,cAAc;GAGjD,IAFmB,KAAK,IAAI,EAAE,MAAM,IAAI,KAAK,IAAI,KAAK,GAGpD,IAAI,gBACF,eAAe,CAAC;QAEhB,aAAa,CAAC;GAIlB,cAAc,OAAO,UAAU,YAAY;EAC7C;CACF,GACA;EAAC;EAAW;EAAiB;CAAY,CAC3C;CAEA,gBAAgB;EACd,IAAI,WAAW;GACb,kBAAkB,iBAAiB,SAAS,UAAU,EAAE,SAAS,KAAK,CAAC;GACvE,kBAAkB,iBAAiB,cAAc,cAAc,EAC7D,SAAS,KACX,CAAC;EACH,OACE,cAAc,KAAK;EAGrB,aAAa;GACX,kBAAkB,oBAAoB,SAAS,QAAQ;GACvD,kBAAkB,oBAAoB,cAAc,YAAY;EAClE;CACF,GAAG;EAAC;EAAW;EAAU;EAAc;CAAgB,CAAC;CAExD,gBAAgB;EAGd,gBAFqB,OAAO,cAAc,OAAO,SAAS,KAAK,YAEnC;CAC9B,GAAG,CAAC,CAAC;CAEL,OAAO;EAAE;EAAY;CAAa;AACpC"}
1
+ {"version":3,"file":"useScrollDetection.mjs","names":[],"sources":["../../../src/hooks/useScrollDetection.ts"],"sourcesContent":["'use client';\n\nimport { useCallback, useEffect, useState } from 'react';\n\nimport { useGetElementOrWindow } from './useGetElementOrWindow';\nimport { useScrollBlockage } from './useScrollBlockage';\n\ntype useScrollDetectionProps = {\n isEnabled?: boolean;\n delta?: number; // how much user has to scroll to trigger the event\n deltaFromTop?: number; // how much user has to scroll from top to detect if the user has been scrolled\n onScrollDown?: (e: WheelEvent) => void;\n onScrollUp?: (e: WheelEvent) => void;\n element?: HTMLElement; // The element to detect the scroll on. If not defined, the window.document.body will be used\n};\n\nexport const useScrollDetection = (props?: useScrollDetectionProps) => {\n const {\n isEnabled = true,\n delta = 5,\n deltaFromTop = 0,\n onScrollDown,\n onScrollUp,\n element,\n } = props ?? {};\n\n const [isScrolled, setIsScrolled] = useState<boolean>(false);\n const [isScrollable, setIsScrollable] = useState<boolean>(false);\n\n const { isScrollBlocked } = useScrollBlockage();\n const containerElement = useGetElementOrWindow(element);\n\n const onMobileMove = useCallback(\n (event: globalThis.TouchEvent) => {\n const startY = event.touches?.[0]?.clientY ?? 0;\n\n const onMove = (event: globalThis.TouchEvent) => {\n if (isEnabled) {\n const currentY = event.touches?.[0]?.clientY ?? 0;\n const deltaY = startY - currentY;\n\n setIsScrolled(deltaY > 0);\n\n containerElement?.removeEventListener('touchmove', onMove);\n }\n };\n\n containerElement?.addEventListener('touchmove', onMove);\n },\n [isEnabled, containerElement]\n );\n\n const onScroll = useCallback(\n (e: WheelEvent) => {\n const isScrolledDown = e.deltaY > 0;\n\n if (isEnabled && !isScrollBlocked && isScrollable) {\n const isDeTected = Math.abs(e.deltaY) > Math.abs(delta);\n\n if (isDeTected) {\n if (isScrolledDown) {\n onScrollDown?.(e);\n } else {\n onScrollUp?.(e);\n }\n }\n\n setIsScrolled(window.scrollY > deltaFromTop);\n }\n },\n [isEnabled, isScrollBlocked, isScrollable]\n );\n\n useEffect(() => {\n if (isEnabled) {\n containerElement?.addEventListener('wheel', onScroll, { passive: true });\n containerElement?.addEventListener('touchstart', onMobileMove, {\n passive: true,\n });\n } else {\n setIsScrolled(false);\n }\n\n return () => {\n containerElement?.removeEventListener('wheel', onScroll);\n containerElement?.removeEventListener('touchstart', onMobileMove);\n };\n }, [isEnabled, onScroll, onMobileMove, containerElement]);\n\n useEffect(() => {\n const isScrollable = window.innerHeight < window.document.body.scrollHeight;\n\n setIsScrollable(isScrollable);\n }, []);\n\n return { isScrolled, isScrollable };\n};\n"],"mappings":";;;;;;;AAgBA,MAAa,sBAAsB,UAAoC;CACrE,MAAM,EACJ,YAAY,MACZ,QAAQ,GACR,eAAe,GACf,cACA,YACA,YACE,SAAS,EAAE;CAEf,MAAM,CAAC,YAAY,iBAAiB,SAAkB,MAAM;CAC5D,MAAM,CAAC,cAAc,mBAAmB,SAAkB,MAAM;CAEhE,MAAM,EAAE,oBAAoB,mBAAmB;CAC/C,MAAM,mBAAmB,sBAAsB,QAAQ;CAEvD,MAAM,eAAe,aAClB,UAAiC;EAChC,MAAM,SAAS,MAAM,UAAU,IAAI,WAAW;EAE9C,MAAM,UAAU,UAAiC;AAC/C,OAAI,WAAW;AAIb,kBAFe,UADE,MAAM,UAAU,IAAI,WAAW,KAGzB,EAAE;AAEzB,sBAAkB,oBAAoB,aAAa,OAAO;;;AAI9D,oBAAkB,iBAAiB,aAAa,OAAO;IAEzD,CAAC,WAAW,iBAAiB,CAC9B;CAED,MAAM,WAAW,aACd,MAAkB;EACjB,MAAM,iBAAiB,EAAE,SAAS;AAElC,MAAI,aAAa,CAAC,mBAAmB,cAAc;AAGjD,OAFmB,KAAK,IAAI,EAAE,OAAO,GAAG,KAAK,IAAI,MAAM,CAGrD,KAAI,eACF,gBAAe,EAAE;OAEjB,cAAa,EAAE;AAInB,iBAAc,OAAO,UAAU,aAAa;;IAGhD;EAAC;EAAW;EAAiB;EAAa,CAC3C;AAED,iBAAgB;AACd,MAAI,WAAW;AACb,qBAAkB,iBAAiB,SAAS,UAAU,EAAE,SAAS,MAAM,CAAC;AACxE,qBAAkB,iBAAiB,cAAc,cAAc,EAC7D,SAAS,MACV,CAAC;QAEF,eAAc,MAAM;AAGtB,eAAa;AACX,qBAAkB,oBAAoB,SAAS,SAAS;AACxD,qBAAkB,oBAAoB,cAAc,aAAa;;IAElE;EAAC;EAAW;EAAU;EAAc;EAAiB,CAAC;AAEzD,iBAAgB;AAGd,kBAFqB,OAAO,cAAc,OAAO,SAAS,KAAK,aAElC;IAC5B,EAAE,CAAC;AAEN,QAAO;EAAE;EAAY;EAAc"}
@@ -1 +1 @@
1
- {"version":3,"file":"useScrollY.mjs","names":[],"sources":["../../../src/hooks/useScrollY.ts"],"sourcesContent":["'use client';\n\nimport { useCallback, useSyncExternalStore } from 'react';\nimport { useGetElementOrWindow } from './useGetElementOrWindow';\n\ntype UseScrollYProps = {\n element?: HTMLElement;\n};\n\ntype UseScrollYResult = {\n scrollY: number;\n scrollPercentage: number;\n scrollYMax: number;\n};\n\nconst INITIAL_SCROLL_STATE: UseScrollYResult = {\n scrollY: 0,\n scrollPercentage: 0,\n scrollYMax: 0,\n};\n\nlet lastSnapshot: UseScrollYResult = INITIAL_SCROLL_STATE;\n\nexport const useScrollY = (props?: UseScrollYProps): UseScrollYResult => {\n const { element } = props ?? {};\n\n const containerElement = useGetElementOrWindow(element);\n\n const subscribe = useCallback(\n (onChange: () => void) => {\n if (typeof window === 'undefined' || !containerElement) return () => {};\n let raf = 0;\n\n const handler = () => {\n if (raf) return;\n raf = window.requestAnimationFrame(() => {\n raf = 0;\n onChange();\n });\n };\n\n containerElement.addEventListener('scroll', handler, { passive: true });\n\n return () => {\n containerElement.removeEventListener('scroll', handler);\n if (raf) window.cancelAnimationFrame(raf);\n };\n },\n [containerElement]\n );\n\n const getSnapshot = (): UseScrollYResult => {\n if (typeof window === 'undefined' || !containerElement) {\n return INITIAL_SCROLL_STATE; // SSR/hydration-safe\n }\n\n // Handle custom element\n if (containerElement instanceof HTMLElement) {\n const scrollY = containerElement.scrollTop;\n const scrollHeight = containerElement.scrollHeight;\n const clientHeight = containerElement.clientHeight;\n const scrollYMax = Math.max(0, scrollHeight - clientHeight);\n const scrollPercentage = scrollYMax > 0 ? scrollY / scrollYMax : 0;\n\n if (\n lastSnapshot.scrollY === scrollY &&\n lastSnapshot.scrollPercentage === scrollPercentage &&\n lastSnapshot.scrollYMax === scrollYMax\n ) {\n return lastSnapshot;\n }\n\n lastSnapshot = { scrollY, scrollPercentage, scrollYMax };\n return lastSnapshot;\n }\n\n // Handle window\n const doc = document.documentElement;\n const body = document.body;\n\n const scrollY =\n window.scrollY ??\n window.pageYOffset ??\n doc?.scrollTop ??\n body?.scrollTop ??\n 0;\n\n const scrollHeight = doc?.scrollHeight ?? body?.scrollHeight ?? 0;\n const clientHeight = doc?.clientHeight ?? window.innerHeight ?? 0;\n const scrollYMax = Math.max(0, scrollHeight - clientHeight);\n const scrollPercentage = scrollYMax > 0 ? scrollY / scrollYMax : 0;\n\n if (\n lastSnapshot.scrollY === scrollY &&\n lastSnapshot.scrollPercentage === scrollPercentage &&\n lastSnapshot.scrollYMax === scrollYMax\n ) {\n return lastSnapshot;\n }\n\n lastSnapshot = { scrollY, scrollPercentage, scrollYMax };\n return lastSnapshot;\n };\n\n const getServerSnapshot = (): UseScrollYResult => INITIAL_SCROLL_STATE;\n\n return useSyncExternalStore(subscribe, getSnapshot, getServerSnapshot);\n};\n"],"mappings":";;;;;;AAeA,MAAM,uBAAyC;CAC7C,SAAS;CACT,kBAAkB;CAClB,YAAY;AACd;AAEA,IAAI,eAAiC;AAErC,MAAa,cAAc,UAA8C;CACvE,MAAM,EAAE,YAAY,SAAS,CAAC;CAE9B,MAAM,mBAAmB,sBAAsB,OAAO;CAEtD,MAAM,YAAY,aACf,aAAyB;EACxB,IAAI,OAAO,WAAW,eAAe,CAAC,kBAAkB,aAAa,CAAC;EACtE,IAAI,MAAM;EAEV,MAAM,gBAAgB;GACpB,IAAI,KAAK;GACT,MAAM,OAAO,4BAA4B;IACvC,MAAM;IACN,SAAS;GACX,CAAC;EACH;EAEA,iBAAiB,iBAAiB,UAAU,SAAS,EAAE,SAAS,KAAK,CAAC;EAEtE,aAAa;GACX,iBAAiB,oBAAoB,UAAU,OAAO;GACtD,IAAI,KAAK,OAAO,qBAAqB,GAAG;EAC1C;CACF,GACA,CAAC,gBAAgB,CACnB;CAEA,MAAM,oBAAsC;EAC1C,IAAI,OAAO,WAAW,eAAe,CAAC,kBACpC,OAAO;EAIT,IAAI,4BAA4B,aAAa;GAC3C,MAAM,UAAU,iBAAiB;GACjC,MAAM,eAAe,iBAAiB;GACtC,MAAM,eAAe,iBAAiB;GACtC,MAAM,aAAa,KAAK,IAAI,GAAG,eAAe,YAAY;GAC1D,MAAM,mBAAmB,aAAa,IAAI,UAAU,aAAa;GAEjE,IACE,aAAa,YAAY,WACzB,aAAa,qBAAqB,oBAClC,aAAa,eAAe,YAE5B,OAAO;GAGT,eAAe;IAAE;IAAS;IAAkB;GAAW;GACvD,OAAO;EACT;EAGA,MAAM,MAAM,SAAS;EACrB,MAAM,OAAO,SAAS;EAEtB,MAAM,UACJ,OAAO,WACP,OAAO,eACP,KAAK,aACL,MAAM,aACN;EAEF,MAAM,eAAe,KAAK,gBAAgB,MAAM,gBAAgB;EAChE,MAAM,eAAe,KAAK,gBAAgB,OAAO,eAAe;EAChE,MAAM,aAAa,KAAK,IAAI,GAAG,eAAe,YAAY;EAC1D,MAAM,mBAAmB,aAAa,IAAI,UAAU,aAAa;EAEjE,IACE,aAAa,YAAY,WACzB,aAAa,qBAAqB,oBAClC,aAAa,eAAe,YAE5B,OAAO;EAGT,eAAe;GAAE;GAAS;GAAkB;EAAW;EACvD,OAAO;CACT;CAEA,MAAM,0BAA4C;CAElD,OAAO,qBAAqB,WAAW,aAAa,iBAAiB;AACvE"}
1
+ {"version":3,"file":"useScrollY.mjs","names":[],"sources":["../../../src/hooks/useScrollY.ts"],"sourcesContent":["'use client';\n\nimport { useCallback, useSyncExternalStore } from 'react';\nimport { useGetElementOrWindow } from './useGetElementOrWindow';\n\ntype UseScrollYProps = {\n element?: HTMLElement;\n};\n\ntype UseScrollYResult = {\n scrollY: number;\n scrollPercentage: number;\n scrollYMax: number;\n};\n\nconst INITIAL_SCROLL_STATE: UseScrollYResult = {\n scrollY: 0,\n scrollPercentage: 0,\n scrollYMax: 0,\n};\n\nlet lastSnapshot: UseScrollYResult = INITIAL_SCROLL_STATE;\n\nexport const useScrollY = (props?: UseScrollYProps): UseScrollYResult => {\n const { element } = props ?? {};\n\n const containerElement = useGetElementOrWindow(element);\n\n const subscribe = useCallback(\n (onChange: () => void) => {\n if (typeof window === 'undefined' || !containerElement) return () => {};\n let raf = 0;\n\n const handler = () => {\n if (raf) return;\n raf = window.requestAnimationFrame(() => {\n raf = 0;\n onChange();\n });\n };\n\n containerElement.addEventListener('scroll', handler, { passive: true });\n\n return () => {\n containerElement.removeEventListener('scroll', handler);\n if (raf) window.cancelAnimationFrame(raf);\n };\n },\n [containerElement]\n );\n\n const getSnapshot = (): UseScrollYResult => {\n if (typeof window === 'undefined' || !containerElement) {\n return INITIAL_SCROLL_STATE; // SSR/hydration-safe\n }\n\n // Handle custom element\n if (containerElement instanceof HTMLElement) {\n const scrollY = containerElement.scrollTop;\n const scrollHeight = containerElement.scrollHeight;\n const clientHeight = containerElement.clientHeight;\n const scrollYMax = Math.max(0, scrollHeight - clientHeight);\n const scrollPercentage = scrollYMax > 0 ? scrollY / scrollYMax : 0;\n\n if (\n lastSnapshot.scrollY === scrollY &&\n lastSnapshot.scrollPercentage === scrollPercentage &&\n lastSnapshot.scrollYMax === scrollYMax\n ) {\n return lastSnapshot;\n }\n\n lastSnapshot = { scrollY, scrollPercentage, scrollYMax };\n return lastSnapshot;\n }\n\n // Handle window\n const doc = document.documentElement;\n const body = document.body;\n\n const scrollY =\n window.scrollY ??\n window.pageYOffset ??\n doc?.scrollTop ??\n body?.scrollTop ??\n 0;\n\n const scrollHeight = doc?.scrollHeight ?? body?.scrollHeight ?? 0;\n const clientHeight = doc?.clientHeight ?? window.innerHeight ?? 0;\n const scrollYMax = Math.max(0, scrollHeight - clientHeight);\n const scrollPercentage = scrollYMax > 0 ? scrollY / scrollYMax : 0;\n\n if (\n lastSnapshot.scrollY === scrollY &&\n lastSnapshot.scrollPercentage === scrollPercentage &&\n lastSnapshot.scrollYMax === scrollYMax\n ) {\n return lastSnapshot;\n }\n\n lastSnapshot = { scrollY, scrollPercentage, scrollYMax };\n return lastSnapshot;\n };\n\n const getServerSnapshot = (): UseScrollYResult => INITIAL_SCROLL_STATE;\n\n return useSyncExternalStore(subscribe, getSnapshot, getServerSnapshot);\n};\n"],"mappings":";;;;;;AAeA,MAAM,uBAAyC;CAC7C,SAAS;CACT,kBAAkB;CAClB,YAAY;CACb;AAED,IAAI,eAAiC;AAErC,MAAa,cAAc,UAA8C;CACvE,MAAM,EAAE,YAAY,SAAS,EAAE;CAE/B,MAAM,mBAAmB,sBAAsB,QAAQ;CAEvD,MAAM,YAAY,aACf,aAAyB;AACxB,MAAI,OAAO,WAAW,eAAe,CAAC,iBAAkB,cAAa;EACrE,IAAI,MAAM;EAEV,MAAM,gBAAgB;AACpB,OAAI,IAAK;AACT,SAAM,OAAO,4BAA4B;AACvC,UAAM;AACN,cAAU;KACV;;AAGJ,mBAAiB,iBAAiB,UAAU,SAAS,EAAE,SAAS,MAAM,CAAC;AAEvE,eAAa;AACX,oBAAiB,oBAAoB,UAAU,QAAQ;AACvD,OAAI,IAAK,QAAO,qBAAqB,IAAI;;IAG7C,CAAC,iBAAiB,CACnB;CAED,MAAM,oBAAsC;AAC1C,MAAI,OAAO,WAAW,eAAe,CAAC,iBACpC,QAAO;AAIT,MAAI,4BAA4B,aAAa;GAC3C,MAAM,UAAU,iBAAiB;GACjC,MAAM,eAAe,iBAAiB;GACtC,MAAM,eAAe,iBAAiB;GACtC,MAAM,aAAa,KAAK,IAAI,GAAG,eAAe,aAAa;GAC3D,MAAM,mBAAmB,aAAa,IAAI,UAAU,aAAa;AAEjE,OACE,aAAa,YAAY,WACzB,aAAa,qBAAqB,oBAClC,aAAa,eAAe,WAE5B,QAAO;AAGT,kBAAe;IAAE;IAAS;IAAkB;IAAY;AACxD,UAAO;;EAIT,MAAM,MAAM,SAAS;EACrB,MAAM,OAAO,SAAS;EAEtB,MAAM,UACJ,OAAO,WACP,OAAO,eACP,KAAK,aACL,MAAM,aACN;EAEF,MAAM,eAAe,KAAK,gBAAgB,MAAM,gBAAgB;EAChE,MAAM,eAAe,KAAK,gBAAgB,OAAO,eAAe;EAChE,MAAM,aAAa,KAAK,IAAI,GAAG,eAAe,aAAa;EAC3D,MAAM,mBAAmB,aAAa,IAAI,UAAU,aAAa;AAEjE,MACE,aAAa,YAAY,WACzB,aAAa,qBAAqB,oBAClC,aAAa,eAAe,WAE5B,QAAO;AAGT,iBAAe;GAAE;GAAS;GAAkB;GAAY;AACxD,SAAO;;CAGT,MAAM,0BAA4C;AAElD,QAAO,qBAAqB,WAAW,aAAa,kBAAkB"}
@@ -1 +1 @@
1
- {"version":3,"file":"useSearch.mjs","names":[],"sources":["../../../src/hooks/useSearch.ts"],"sourcesContent":["'use client';\n\nimport { useEffect, useRef, useState } from 'react';\n\ntype UseSearchProps = {\n minChars?: number;\n debounceMs?: number;\n trim?: boolean;\n defaultValue?: string | null;\n onSearch?: (value: string) => void;\n onClear?: () => void;\n};\n\nexport const useSearch = (options?: UseSearchProps) => {\n const {\n minChars = 3,\n debounceMs = 300,\n trim = true,\n defaultValue,\n onSearch,\n onClear,\n } = options ?? {};\n const searchRef = useRef('');\n const timerRef = useRef<ReturnType<typeof setTimeout> | null>(null);\n const [search, setDebouncedSearch] = useState<string>(defaultValue ?? '');\n\n const clearTimer = () => {\n if (timerRef.current) {\n clearTimeout(timerRef.current);\n timerRef.current = null;\n }\n };\n\n const setSearch = (value: string) => {\n searchRef.current = value;\n const normalized = trim ? value.trim() : value;\n\n clearTimer();\n\n if (normalized.length < minChars) {\n setDebouncedSearch('');\n onClear?.();\n return;\n }\n\n timerRef.current = setTimeout(() => {\n const current = trim ? searchRef.current.trim() : searchRef.current;\n if (current.length >= minChars) {\n setDebouncedSearch(current);\n onSearch?.(current);\n } else {\n setDebouncedSearch('');\n onClear?.();\n }\n }, debounceMs);\n };\n\n useEffect(() => {\n return () => {\n clearTimer();\n };\n }, []);\n\n const hasMinChars = search.length >= minChars;\n\n return { setSearch, search, hasMinChars };\n};\n"],"mappings":";;;;;AAaA,MAAa,aAAa,YAA6B;CACrD,MAAM,EACJ,WAAW,GACX,aAAa,KACb,OAAO,MACP,cACA,UACA,YACE,WAAW,CAAC;CAChB,MAAM,YAAY,OAAO,EAAE;CAC3B,MAAM,WAAW,OAA6C,IAAI;CAClE,MAAM,CAAC,QAAQ,sBAAsB,SAAiB,gBAAgB,EAAE;CAExE,MAAM,mBAAmB;EACvB,IAAI,SAAS,SAAS;GACpB,aAAa,SAAS,OAAO;GAC7B,SAAS,UAAU;EACrB;CACF;CAEA,MAAM,aAAa,UAAkB;EACnC,UAAU,UAAU;EACpB,MAAM,aAAa,OAAO,MAAM,KAAK,IAAI;EAEzC,WAAW;EAEX,IAAI,WAAW,SAAS,UAAU;GAChC,mBAAmB,EAAE;GACrB,UAAU;GACV;EACF;EAEA,SAAS,UAAU,iBAAiB;GAClC,MAAM,UAAU,OAAO,UAAU,QAAQ,KAAK,IAAI,UAAU;GAC5D,IAAI,QAAQ,UAAU,UAAU;IAC9B,mBAAmB,OAAO;IAC1B,WAAW,OAAO;GACpB,OAAO;IACL,mBAAmB,EAAE;IACrB,UAAU;GACZ;EACF,GAAG,UAAU;CACf;CAEA,gBAAgB;EACd,aAAa;GACX,WAAW;EACb;CACF,GAAG,CAAC,CAAC;CAIL,OAAO;EAAE;EAAW;EAAQ,aAFR,OAAO,UAAU;CAEG;AAC1C"}
1
+ {"version":3,"file":"useSearch.mjs","names":[],"sources":["../../../src/hooks/useSearch.ts"],"sourcesContent":["'use client';\n\nimport { useEffect, useRef, useState } from 'react';\n\ntype UseSearchProps = {\n minChars?: number;\n debounceMs?: number;\n trim?: boolean;\n defaultValue?: string | null;\n onSearch?: (value: string) => void;\n onClear?: () => void;\n};\n\nexport const useSearch = (options?: UseSearchProps) => {\n const {\n minChars = 3,\n debounceMs = 300,\n trim = true,\n defaultValue,\n onSearch,\n onClear,\n } = options ?? {};\n const searchRef = useRef('');\n const timerRef = useRef<ReturnType<typeof setTimeout> | null>(null);\n const [search, setDebouncedSearch] = useState<string>(defaultValue ?? '');\n\n const clearTimer = () => {\n if (timerRef.current) {\n clearTimeout(timerRef.current);\n timerRef.current = null;\n }\n };\n\n const setSearch = (value: string) => {\n searchRef.current = value;\n const normalized = trim ? value.trim() : value;\n\n clearTimer();\n\n if (normalized.length < minChars) {\n setDebouncedSearch('');\n onClear?.();\n return;\n }\n\n timerRef.current = setTimeout(() => {\n const current = trim ? searchRef.current.trim() : searchRef.current;\n if (current.length >= minChars) {\n setDebouncedSearch(current);\n onSearch?.(current);\n } else {\n setDebouncedSearch('');\n onClear?.();\n }\n }, debounceMs);\n };\n\n useEffect(() => {\n return () => {\n clearTimer();\n };\n }, []);\n\n const hasMinChars = search.length >= minChars;\n\n return { setSearch, search, hasMinChars };\n};\n"],"mappings":";;;;;AAaA,MAAa,aAAa,YAA6B;CACrD,MAAM,EACJ,WAAW,GACX,aAAa,KACb,OAAO,MACP,cACA,UACA,YACE,WAAW,EAAE;CACjB,MAAM,YAAY,OAAO,GAAG;CAC5B,MAAM,WAAW,OAA6C,KAAK;CACnE,MAAM,CAAC,QAAQ,sBAAsB,SAAiB,gBAAgB,GAAG;CAEzE,MAAM,mBAAmB;AACvB,MAAI,SAAS,SAAS;AACpB,gBAAa,SAAS,QAAQ;AAC9B,YAAS,UAAU;;;CAIvB,MAAM,aAAa,UAAkB;AACnC,YAAU,UAAU;EACpB,MAAM,aAAa,OAAO,MAAM,MAAM,GAAG;AAEzC,cAAY;AAEZ,MAAI,WAAW,SAAS,UAAU;AAChC,sBAAmB,GAAG;AACtB,cAAW;AACX;;AAGF,WAAS,UAAU,iBAAiB;GAClC,MAAM,UAAU,OAAO,UAAU,QAAQ,MAAM,GAAG,UAAU;AAC5D,OAAI,QAAQ,UAAU,UAAU;AAC9B,uBAAmB,QAAQ;AAC3B,eAAW,QAAQ;UACd;AACL,uBAAmB,GAAG;AACtB,eAAW;;KAEZ,WAAW;;AAGhB,iBAAgB;AACd,eAAa;AACX,eAAY;;IAEb,EAAE,CAAC;AAIN,QAAO;EAAE;EAAW;EAAQ,aAFR,OAAO,UAAU;EAEI"}
@@ -133,10 +133,10 @@ const getAuthAPI = (intlayerConfig) => {
133
133
  return client.sso.register(...args);
134
134
  };
135
135
  const listSSOProviders = async () => {
136
- return [];
136
+ return { data: (await client.sso.providers())?.data?.providers ?? [] };
137
137
  };
138
- const deleteSSOProvider = async (_args) => {
139
- return { success: true };
138
+ const deleteSSOProvider = async (args) => {
139
+ return client.sso.deleteProvider({ providerId: args.providerId });
140
140
  };
141
141
  return {
142
142
  getAuthClient: () => client,
@@ -1 +1 @@
1
- {"version":3,"file":"auth.mjs","names":[],"sources":["../../../src/libs/auth.ts"],"sourcesContent":["import { passkeyClient } from '@better-auth/passkey/client';\nimport { ssoClient } from '@better-auth/sso/client';\nimport { editor } from '@intlayer/config/built';\nimport { BACKEND_URL } from '@intlayer/config/defaultValues';\nimport type { IntlayerConfig } from '@intlayer/types/config';\nimport { createAuthClient } from 'better-auth/client';\nimport { magicLinkClient, twoFactorClient } from 'better-auth/client/plugins';\n\nconst getAuthClient = (backendURL: string) =>\n createAuthClient({\n baseURL: backendURL,\n withCredentials: true, // makes fetch forward cookies\n plugins: [\n twoFactorClient({\n onTwoFactorRedirect: () => {\n // Preserve redirect_url when redirecting to 2FA\n const searchParams = new URLSearchParams(window.location.search);\n const redirectUrl = searchParams.get('redirect_url');\n const twoFaUrl = redirectUrl\n ? `/auth/2fa?redirect_url=${encodeURIComponent(redirectUrl)}`\n : '/auth/2fa';\n window.location.href = twoFaUrl;\n },\n }),\n passkeyClient(),\n magicLinkClient() as never,\n ssoClient(),\n ],\n });\n\ntype AuthClient = ReturnType<typeof getAuthClient>;\n\nexport interface AuthAPI {\n getAuthClient: () => AuthClient;\n signInEmail: AuthClient['signIn']['email'];\n signUpEmail: AuthClient['signUp']['email'];\n signOut: AuthClient['signOut'];\n signInSocial: AuthClient['signIn']['social'];\n linkSocial: AuthClient['linkSocial'];\n changePasswordSession: AuthClient['changePassword'];\n requestPasswordResetSession: AuthClient['requestPasswordReset'];\n resetPassword: AuthClient['resetPassword'];\n verifyEmailSession: AuthClient['verifyEmail'];\n getSession: AuthClient['getSession'];\n forgetPassword: AuthClient['requestPasswordReset'];\n sendVerificationEmail: AuthClient['sendVerificationEmail'];\n changeEmail: AuthClient['changeEmail'];\n deleteUser: AuthClient['deleteUser'];\n revokeSession: AuthClient['revokeSession'];\n revokeSessions: AuthClient['revokeSessions'];\n revokeOtherSessions: AuthClient['revokeOtherSessions'];\n listAccounts: AuthClient['listAccounts'];\n unlinkAccount: AuthClient['unlinkAccount'];\n refreshToken: AuthClient['refreshToken'];\n getAccessToken: AuthClient['getAccessToken'];\n accountInfo: AuthClient['accountInfo'];\n updateUser: AuthClient['updateUser'];\n listSessions: AuthClient['listSessions'];\n enableTwoFactor: AuthClient['twoFactor']['enable'];\n disableTwoFactor: AuthClient['twoFactor']['disable'];\n verifyTotp: AuthClient['twoFactor']['verifyTotp'];\n verifyBackupCode: AuthClient['twoFactor']['verifyBackupCode'];\n addPasskey: AuthClient['passkey']['addPasskey'];\n signInPasskey: AuthClient['signIn']['passkey'];\n deletePasskey: AuthClient['passkey']['deletePasskey'];\n listPasskeys: () => Promise<any>;\n signInMagicLink: (\n // Redeclare it because of type inference issues\n input: { email: string; callbackURL: string }\n ) => any;\n registerSSO: AuthClient['sso']['register'];\n listSSOProviders: () => Promise<any>;\n deleteSSOProvider: (args: { providerId: string }) => Promise<any>;\n signInSSO: AuthClient['signIn']['sso'];\n}\n\nexport const getAuthAPI = (\n intlayerConfig?: Pick<IntlayerConfig, 'editor'>\n): AuthAPI => {\n let backendURL = intlayerConfig?.editor?.backendURL ?? editor?.backendURL;\n\n if (!backendURL) {\n backendURL = BACKEND_URL;\n console.error('Backend URL is not defined in the Intlayer configuration.');\n }\n\n const client = getAuthClient(backendURL);\n\n const signInEmail: AuthClient['signIn']['email'] = async (...args) => {\n return client.signIn.email(...args);\n };\n\n const signInSocial: AuthClient['signIn']['social'] = async (...args) => {\n return client.signIn.social(...args);\n };\n\n const signUpEmail: AuthClient['signUp']['email'] = async (...args) => {\n return client.signUp.email(...args);\n };\n\n const signOut: AuthClient['signOut'] = async (...args) => {\n return client.signOut(...args);\n };\n\n const changePasswordSession: AuthClient['changePassword'] = async (\n ...args\n ) => {\n return client.changePassword(...args);\n };\n\n const requestPasswordResetSession: AuthClient['requestPasswordReset'] =\n async (...args) => {\n return client.requestPasswordReset(...args);\n };\n\n // @ts-ignore - resetPassword is not typed\n const resetPassword: AuthClient['resetPassword'] = async (...args) => {\n return client.resetPassword(...args);\n };\n\n const verifyEmailSession: AuthClient['verifyEmail'] = async (...args) => {\n return client.verifyEmail(...args);\n };\n\n const getSession: AuthClient['getSession'] = async (...args) => {\n return client.getSession(...args);\n };\n\n const forgetPassword: AuthClient['requestPasswordReset'] = async (\n ...args\n ) => {\n return client.requestPasswordReset(...args);\n };\n\n const sendVerificationEmail: AuthClient['sendVerificationEmail'] = async (\n ...args\n ) => {\n return client.sendVerificationEmail(...args);\n };\n\n const changeEmail: AuthClient['changeEmail'] = async (...args) => {\n return client.changeEmail(...args);\n };\n\n // @ts-ignore - deleteUser is not typed\n const deleteUser: AuthClient['deleteUser'] = async (...args) => {\n return client.deleteUser(...args);\n };\n\n const revokeSession: AuthClient['revokeSession'] = async (...args) => {\n return client.revokeSession(...args);\n };\n\n const revokeSessions: AuthClient['revokeSessions'] = async (...args) => {\n return client.revokeSessions(...args);\n };\n\n const revokeOtherSessions: AuthClient['revokeOtherSessions'] = async (\n ...args\n ) => {\n return client.revokeOtherSessions(...args);\n };\n\n const linkSocial: AuthClient['linkSocial'] = async (...args) => {\n return client.linkSocial(...args);\n };\n\n const listAccounts: AuthClient['listAccounts'] = async (...args) => {\n return client.listAccounts(...args);\n };\n\n const unlinkAccount: AuthClient['unlinkAccount'] = async (...args) => {\n return client.unlinkAccount(...args);\n };\n\n const refreshToken: AuthClient['refreshToken'] = async (...args) => {\n return client.refreshToken(...args);\n };\n\n const getAccessToken: AuthClient['getAccessToken'] = async (...args) => {\n return client.getAccessToken(...args);\n };\n\n const accountInfo: AuthClient['accountInfo'] = async (...args) => {\n return client.accountInfo(...args);\n };\n\n const updateUser: AuthClient['updateUser'] = async (...args) => {\n return client.updateUser(...args);\n };\n\n const listSessions: AuthClient['listSessions'] = async (...args) => {\n return client.listSessions(...args);\n };\n\n const enableTwoFactor: AuthClient['twoFactor']['enable'] = async (\n ...args\n ) => {\n return client.twoFactor.enable(...args) as ReturnType<\n AuthClient['twoFactor']['enable']\n >;\n };\n\n const disableTwoFactor: AuthClient['twoFactor']['disable'] = async (\n ...args\n ) => {\n return client.twoFactor.disable(...args) as ReturnType<\n AuthClient['twoFactor']['disable']\n >;\n };\n\n const verifyTotp: AuthClient['twoFactor']['verifyTotp'] = async (...args) => {\n return client.twoFactor.verifyTotp(...args) as ReturnType<\n AuthClient['twoFactor']['verifyTotp']\n >;\n };\n\n const verifyBackupCode: AuthClient['twoFactor']['verifyBackupCode'] = async (\n ...args\n ) => {\n return client.twoFactor.verifyBackupCode(...args) as ReturnType<\n AuthClient['twoFactor']['verifyBackupCode']\n >;\n };\n\n const addPasskey: AuthClient['passkey']['addPasskey'] = async (...args) => {\n return client.passkey.addPasskey(...args);\n };\n\n const signInPasskey: AuthClient['signIn']['passkey'] = async (...args) => {\n return client.signIn.passkey(...args);\n };\n\n const deletePasskey: AuthClient['passkey']['deletePasskey'] = async (\n ...args\n ) => {\n return client.passkey.deletePasskey(...args);\n };\n\n const listPasskeys = async () => {\n // @ts-ignore - listPasskeys may not be typed yet\n return client.$fetch('/passkey/list-user-passkeys', {\n method: 'GET',\n });\n };\n\n const signInMagicLink: any = async (...args: any[]) => {\n return (client.signIn as any).magicLink(...args);\n };\n\n const signInSSO: AuthClient['signIn']['sso'] = async (...args) => {\n return client.signIn.sso(...args);\n };\n\n const registerSSO: AuthClient['sso']['register'] = async (...args) => {\n return client.sso.register(...args);\n };\n\n const listSSOProviders = async () => {\n // Not implemented yet\n return [];\n };\n\n const deleteSSOProvider = async (_args: { providerId: string }) => {\n // Not implemented yet\n return { success: true };\n };\n\n return {\n getAuthClient: () => client,\n signInEmail,\n signUpEmail,\n signOut,\n signInSocial,\n linkSocial,\n changePasswordSession,\n requestPasswordResetSession,\n resetPassword,\n verifyEmailSession,\n getSession,\n forgetPassword,\n sendVerificationEmail,\n changeEmail,\n deleteUser,\n revokeSession,\n revokeSessions,\n revokeOtherSessions,\n listAccounts,\n unlinkAccount,\n refreshToken,\n getAccessToken,\n accountInfo,\n updateUser,\n listSessions,\n enableTwoFactor,\n disableTwoFactor,\n verifyTotp,\n verifyBackupCode,\n addPasskey,\n signInPasskey,\n deletePasskey,\n listPasskeys,\n signInMagicLink,\n signInSSO,\n registerSSO,\n listSSOProviders,\n deleteSSOProvider,\n };\n};\n"],"mappings":"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"}
1
+ {"version":3,"file":"auth.mjs","names":[],"sources":["../../../src/libs/auth.ts"],"sourcesContent":["import { passkeyClient } from '@better-auth/passkey/client';\nimport { ssoClient } from '@better-auth/sso/client';\nimport { editor } from '@intlayer/config/built';\nimport { BACKEND_URL } from '@intlayer/config/defaultValues';\nimport type { IntlayerConfig } from '@intlayer/types/config';\nimport { createAuthClient } from 'better-auth/client';\nimport { magicLinkClient, twoFactorClient } from 'better-auth/client/plugins';\n\nconst getAuthClient = (backendURL: string) =>\n createAuthClient({\n baseURL: backendURL,\n withCredentials: true, // makes fetch forward cookies\n plugins: [\n twoFactorClient({\n onTwoFactorRedirect: () => {\n // Preserve redirect_url when redirecting to 2FA\n const searchParams = new URLSearchParams(window.location.search);\n const redirectUrl = searchParams.get('redirect_url');\n const twoFaUrl = redirectUrl\n ? `/auth/2fa?redirect_url=${encodeURIComponent(redirectUrl)}`\n : '/auth/2fa';\n window.location.href = twoFaUrl;\n },\n }),\n passkeyClient(),\n magicLinkClient() as never,\n ssoClient(),\n ],\n });\n\ntype AuthClient = ReturnType<typeof getAuthClient>;\n\nexport interface AuthAPI {\n getAuthClient: () => AuthClient;\n signInEmail: AuthClient['signIn']['email'];\n signUpEmail: AuthClient['signUp']['email'];\n signOut: AuthClient['signOut'];\n signInSocial: AuthClient['signIn']['social'];\n linkSocial: AuthClient['linkSocial'];\n changePasswordSession: AuthClient['changePassword'];\n requestPasswordResetSession: AuthClient['requestPasswordReset'];\n resetPassword: AuthClient['resetPassword'];\n verifyEmailSession: AuthClient['verifyEmail'];\n getSession: AuthClient['getSession'];\n forgetPassword: AuthClient['requestPasswordReset'];\n sendVerificationEmail: AuthClient['sendVerificationEmail'];\n changeEmail: AuthClient['changeEmail'];\n deleteUser: AuthClient['deleteUser'];\n revokeSession: AuthClient['revokeSession'];\n revokeSessions: AuthClient['revokeSessions'];\n revokeOtherSessions: AuthClient['revokeOtherSessions'];\n listAccounts: AuthClient['listAccounts'];\n unlinkAccount: AuthClient['unlinkAccount'];\n refreshToken: AuthClient['refreshToken'];\n getAccessToken: AuthClient['getAccessToken'];\n accountInfo: AuthClient['accountInfo'];\n updateUser: AuthClient['updateUser'];\n listSessions: AuthClient['listSessions'];\n enableTwoFactor: AuthClient['twoFactor']['enable'];\n disableTwoFactor: AuthClient['twoFactor']['disable'];\n verifyTotp: AuthClient['twoFactor']['verifyTotp'];\n verifyBackupCode: AuthClient['twoFactor']['verifyBackupCode'];\n addPasskey: AuthClient['passkey']['addPasskey'];\n signInPasskey: AuthClient['signIn']['passkey'];\n deletePasskey: AuthClient['passkey']['deletePasskey'];\n listPasskeys: () => Promise<any>;\n signInMagicLink: (\n // Redeclare it because of type inference issues\n input: { email: string; callbackURL: string }\n ) => any;\n registerSSO: AuthClient['sso']['register'];\n listSSOProviders: () => Promise<any>;\n deleteSSOProvider: (args: { providerId: string }) => Promise<any>;\n signInSSO: AuthClient['signIn']['sso'];\n}\n\nexport const getAuthAPI = (\n intlayerConfig?: Pick<IntlayerConfig, 'editor'>\n): AuthAPI => {\n let backendURL = intlayerConfig?.editor?.backendURL ?? editor?.backendURL;\n\n if (!backendURL) {\n backendURL = BACKEND_URL;\n console.error('Backend URL is not defined in the Intlayer configuration.');\n }\n\n const client = getAuthClient(backendURL);\n\n const signInEmail: AuthClient['signIn']['email'] = async (...args) => {\n return client.signIn.email(...args);\n };\n\n const signInSocial: AuthClient['signIn']['social'] = async (...args) => {\n return client.signIn.social(...args);\n };\n\n const signUpEmail: AuthClient['signUp']['email'] = async (...args) => {\n return client.signUp.email(...args);\n };\n\n const signOut: AuthClient['signOut'] = async (...args) => {\n return client.signOut(...args);\n };\n\n const changePasswordSession: AuthClient['changePassword'] = async (\n ...args\n ) => {\n return client.changePassword(...args);\n };\n\n const requestPasswordResetSession: AuthClient['requestPasswordReset'] =\n async (...args) => {\n return client.requestPasswordReset(...args);\n };\n\n // @ts-ignore - resetPassword is not typed\n const resetPassword: AuthClient['resetPassword'] = async (...args) => {\n return client.resetPassword(...args);\n };\n\n const verifyEmailSession: AuthClient['verifyEmail'] = async (...args) => {\n return client.verifyEmail(...args);\n };\n\n const getSession: AuthClient['getSession'] = async (...args) => {\n return client.getSession(...args);\n };\n\n const forgetPassword: AuthClient['requestPasswordReset'] = async (\n ...args\n ) => {\n return client.requestPasswordReset(...args);\n };\n\n const sendVerificationEmail: AuthClient['sendVerificationEmail'] = async (\n ...args\n ) => {\n return client.sendVerificationEmail(...args);\n };\n\n const changeEmail: AuthClient['changeEmail'] = async (...args) => {\n return client.changeEmail(...args);\n };\n\n // @ts-ignore - deleteUser is not typed\n const deleteUser: AuthClient['deleteUser'] = async (...args) => {\n return client.deleteUser(...args);\n };\n\n const revokeSession: AuthClient['revokeSession'] = async (...args) => {\n return client.revokeSession(...args);\n };\n\n const revokeSessions: AuthClient['revokeSessions'] = async (...args) => {\n return client.revokeSessions(...args);\n };\n\n const revokeOtherSessions: AuthClient['revokeOtherSessions'] = async (\n ...args\n ) => {\n return client.revokeOtherSessions(...args);\n };\n\n const linkSocial: AuthClient['linkSocial'] = async (...args) => {\n return client.linkSocial(...args);\n };\n\n const listAccounts: AuthClient['listAccounts'] = async (...args) => {\n return client.listAccounts(...args);\n };\n\n const unlinkAccount: AuthClient['unlinkAccount'] = async (...args) => {\n return client.unlinkAccount(...args);\n };\n\n const refreshToken: AuthClient['refreshToken'] = async (...args) => {\n return client.refreshToken(...args);\n };\n\n const getAccessToken: AuthClient['getAccessToken'] = async (...args) => {\n return client.getAccessToken(...args);\n };\n\n const accountInfo: AuthClient['accountInfo'] = async (...args) => {\n return client.accountInfo(...args);\n };\n\n const updateUser: AuthClient['updateUser'] = async (...args) => {\n return client.updateUser(...args);\n };\n\n const listSessions: AuthClient['listSessions'] = async (...args) => {\n return client.listSessions(...args);\n };\n\n const enableTwoFactor: AuthClient['twoFactor']['enable'] = async (\n ...args\n ) => {\n return client.twoFactor.enable(...args) as ReturnType<\n AuthClient['twoFactor']['enable']\n >;\n };\n\n const disableTwoFactor: AuthClient['twoFactor']['disable'] = async (\n ...args\n ) => {\n return client.twoFactor.disable(...args) as ReturnType<\n AuthClient['twoFactor']['disable']\n >;\n };\n\n const verifyTotp: AuthClient['twoFactor']['verifyTotp'] = async (...args) => {\n return client.twoFactor.verifyTotp(...args) as ReturnType<\n AuthClient['twoFactor']['verifyTotp']\n >;\n };\n\n const verifyBackupCode: AuthClient['twoFactor']['verifyBackupCode'] = async (\n ...args\n ) => {\n return client.twoFactor.verifyBackupCode(...args) as ReturnType<\n AuthClient['twoFactor']['verifyBackupCode']\n >;\n };\n\n const addPasskey: AuthClient['passkey']['addPasskey'] = async (...args) => {\n return client.passkey.addPasskey(...args);\n };\n\n const signInPasskey: AuthClient['signIn']['passkey'] = async (...args) => {\n return client.signIn.passkey(...args);\n };\n\n const deletePasskey: AuthClient['passkey']['deletePasskey'] = async (\n ...args\n ) => {\n return client.passkey.deletePasskey(...args);\n };\n\n const listPasskeys = async () => {\n // @ts-ignore - listPasskeys may not be typed yet\n return client.$fetch('/passkey/list-user-passkeys', {\n method: 'GET',\n });\n };\n\n const signInMagicLink: any = async (...args: any[]) => {\n return (client.signIn as any).magicLink(...args);\n };\n\n const signInSSO: AuthClient['signIn']['sso'] = async (...args) => {\n return client.signIn.sso(...args);\n };\n\n const registerSSO: AuthClient['sso']['register'] = async (...args) => {\n return client.sso.register(...args);\n };\n\n const listSSOProviders = async () => {\n const response = await (client.sso as any).providers();\n return { data: response?.data?.providers ?? [] };\n };\n\n const deleteSSOProvider = async (args: { providerId: string }) => {\n return (client.sso as any).deleteProvider({ providerId: args.providerId });\n };\n\n return {\n getAuthClient: () => client,\n signInEmail,\n signUpEmail,\n signOut,\n signInSocial,\n linkSocial,\n changePasswordSession,\n requestPasswordResetSession,\n resetPassword,\n verifyEmailSession,\n getSession,\n forgetPassword,\n sendVerificationEmail,\n changeEmail,\n deleteUser,\n revokeSession,\n revokeSessions,\n revokeOtherSessions,\n listAccounts,\n unlinkAccount,\n refreshToken,\n getAccessToken,\n accountInfo,\n updateUser,\n listSessions,\n enableTwoFactor,\n disableTwoFactor,\n verifyTotp,\n verifyBackupCode,\n addPasskey,\n signInPasskey,\n deletePasskey,\n listPasskeys,\n signInMagicLink,\n signInSSO,\n registerSSO,\n listSSOProviders,\n deleteSSOProvider,\n };\n};\n"],"mappings":"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"}
@@ -2,7 +2,7 @@
2
2
 
3
3
  import { useToast } from "../components/Toaster/useToast.mjs";
4
4
  import { createAsyncStoragePersister } from "@tanstack/query-async-storage-persister";
5
- import { MutationCache, QueryClient, QueryClientProvider } from "@tanstack/react-query";
5
+ import { MutationCache, QueryClient, QueryClientProvider, timeoutManager } from "@tanstack/react-query";
6
6
  import { PersistQueryClientProvider } from "@tanstack/react-query-persist-client";
7
7
  import { useRef } from "react";
8
8
  import { jsx } from "react/jsx-runtime";
@@ -10,6 +10,25 @@ import { jsx } from "react/jsx-runtime";
10
10
  //#region src/providers/ReactQueryProvider.tsx
11
11
  const PERSIST_MAX_AGE = 1e3 * 60 * 60 * 24;
12
12
  const PERSIST_BUSTER = "v1";
13
+ if (typeof window === "undefined") {
14
+ const unref = (timer) => {
15
+ if (typeof timer === "object" && timer !== null && "unref" in timer && typeof timer.unref === "function") timer.unref();
16
+ };
17
+ timeoutManager.setTimeoutProvider({
18
+ setTimeout: (callback, delay) => {
19
+ const timer = setTimeout(callback, delay);
20
+ unref(timer);
21
+ return timer;
22
+ },
23
+ clearTimeout: (timer) => clearTimeout(timer),
24
+ setInterval: (callback, delay) => {
25
+ const timer = setInterval(callback, delay);
26
+ unref(timer);
27
+ return timer;
28
+ },
29
+ clearInterval: (timer) => clearInterval(timer)
30
+ });
31
+ }
13
32
  const defaultQueryOptions = {
14
33
  queries: {
15
34
  retry: 1,
@@ -110,7 +129,7 @@ const ReactQueryProvider = ({ children, client }) => {
110
129
  });
111
130
  };
112
131
  }
113
- if (client) return /* @__PURE__ */ jsx(QueryClientProvider, {
132
+ if (client || typeof window === "undefined") return /* @__PURE__ */ jsx(QueryClientProvider, {
114
133
  client: clientRef.current,
115
134
  children
116
135
  });
@@ -1 +1 @@
1
- {"version":3,"file":"ReactQueryProvider.mjs","names":[],"sources":["../../../src/providers/ReactQueryProvider.tsx"],"sourcesContent":["'use client';\n\nimport { createAsyncStoragePersister } from '@tanstack/query-async-storage-persister';\nimport {\n type DefaultOptions,\n MutationCache,\n QueryClient,\n QueryClientProvider,\n type QueryKey,\n type UseMutationOptions,\n} from '@tanstack/react-query';\nimport { PersistQueryClientProvider } from '@tanstack/react-query-persist-client';\nimport { type FC, type PropsWithChildren, useRef } from 'react';\nimport { useToast } from '../components/Toaster';\n\nconst PERSIST_MAX_AGE = 1000 * 60 * 60 * 24; // 24h\n// Bump to invalidate every persisted cache after a breaking change in query shapes\nconst PERSIST_BUSTER = 'v1';\n\nconst defaultQueryOptions: DefaultOptions = {\n queries: {\n retry: 1,\n // Keep data fresh for 30 seconds to avoid unnecessary refetches during navigation\n staleTime: 30 * 1000,\n // gcTime must be >= persist maxAge, otherwise restored entries are dropped on rehydrate\n gcTime: PERSIST_MAX_AGE,\n // Only refetch on mount if data is stale (not every single mount)\n refetchOnMount: true,\n refetchOnWindowFocus: false,\n refetchOnReconnect: false,\n },\n mutations: {\n retry: 0,\n },\n};\n\nconst browserLocalStorage = {\n getItem: (key: string) => Promise.resolve(window.localStorage.getItem(key)),\n setItem: (key: string, value: string) =>\n Promise.resolve(window.localStorage.setItem(key, value)),\n removeItem: (key: string) =>\n Promise.resolve(window.localStorage.removeItem(key)),\n};\n\nconst noopStorage = {\n getItem: () => Promise.resolve(null),\n setItem: () => Promise.resolve(),\n removeItem: () => Promise.resolve(),\n};\n\nconst persister = createAsyncStoragePersister({\n storage: typeof window !== 'undefined' ? browserLocalStorage : noopStorage,\n key: 'intlayer-rq-cache',\n});\n\nconst SHOW_ERROR_CODE = false;\n\ndeclare module '@tanstack/react-query' {\n interface Register {\n mutationMeta: {\n onSuccess?: UseMutationOptions['onSuccess'];\n onError?: UseMutationOptions['onError'];\n invalidateQueries?: QueryKey[];\n resetQueries?: QueryKey[];\n };\n }\n}\n\nconst formatErrorCode = (errorCode: string) => errorCode.split('_').join(' ');\n\n/**\n * Hook to handle error logging and toast notifications\n */\nconst useToastEvents = () => {\n const { toast } = useToast();\n\n const onError: MutationCache['config']['onError'] = (error: any) => {\n const parsed = (() => {\n try {\n if (typeof error === 'string') return JSON.parse(error);\n if (error instanceof Error) return JSON.parse(error.message);\n } catch (_) {}\n return error;\n })();\n\n [parsed].flat().forEach((err: any) => {\n // Check for nested error object (standard in your API responses: { statusCode, error: { ... } })\n const apiError = err?.error ?? err;\n\n if (apiError?.code === 'RATE_LIMIT_EXCEEDED_UNAUTHENTICATED') {\n toast({\n title: apiError.message,\n variant: 'error',\n });\n return;\n }\n\n toast({\n title: formatErrorCode(\n SHOW_ERROR_CODE\n ? (apiError?.code ?? err?.code)\n : (apiError?.title ?? err?.title ?? 'Error')\n ),\n description:\n apiError?.message ??\n err?.message ??\n String(apiError ?? 'An error occurred'),\n variant: 'error',\n });\n });\n };\n\n const onSuccess: MutationCache['config']['onSuccess'] = (data: any) => {\n if (data?.error) {\n toast({\n title: formatErrorCode(data.error.title ?? data.error.code ?? 'Error'),\n description:\n data.error.message ?? data.error.code ?? 'An error occurred',\n variant: 'error',\n });\n }\n\n if (data?.message) {\n toast({\n title: data.message,\n description: data.description,\n variant: 'success',\n });\n }\n };\n\n return {\n onError,\n onSuccess,\n };\n};\n\nexport const getQueryClient = () =>\n new QueryClient({ defaultOptions: defaultQueryOptions });\n\ninterface ReactQueryProviderProps {\n client?: QueryClient;\n}\n\nexport const ReactQueryProvider: FC<\n PropsWithChildren<ReactQueryProviderProps>\n> = ({ children, client }) => {\n const { onError, onSuccess } = useToastEvents();\n // Keep handlers in a ref so the cache config (set once below) always calls\n // the latest closures from useToastEvents without needing re-wiring.\n const handlersRef = useRef({ onSuccess, onError });\n handlersRef.current = { onSuccess, onError };\n\n const clientRef = useRef<QueryClient>(client ?? null);\n\n if (!clientRef.current) {\n clientRef.current = new QueryClient({\n defaultOptions: defaultQueryOptions,\n mutationCache: new MutationCache(),\n });\n }\n\n // Wire toast handlers + meta-driven invalidation onto whatever client we\n // ended up with. Required even when the client is created externally (e.g.\n // via getQueryClient() in TanStack Router context), since the externally\n // created client ships with a bare MutationCache.\n const wiredRef = useRef(false);\n if (!wiredRef.current) {\n wiredRef.current = true;\n const cache = clientRef.current.getMutationCache();\n cache.config.onSuccess = (\n data,\n variables,\n onMutateResult,\n mutation,\n context\n ) =>\n handlersRef.current.onSuccess?.(\n data,\n variables,\n onMutateResult,\n mutation,\n context\n );\n cache.config.onError = (\n error,\n variables,\n onMutateResult,\n mutation,\n context\n ) =>\n handlersRef.current.onError?.(\n error,\n variables,\n onMutateResult,\n mutation,\n context\n );\n cache.config.onSettled = (\n _data,\n _error,\n _variables,\n _onMutateResult,\n mutation\n ) => {\n if (mutation.meta?.invalidateQueries) {\n mutation.meta.invalidateQueries.forEach((queryKey) => {\n clientRef.current?.invalidateQueries({ queryKey });\n });\n }\n\n if (mutation.meta?.resetQueries) {\n mutation.meta.resetQueries.forEach((queryKey) => {\n clientRef.current?.resetQueries({ queryKey });\n });\n }\n };\n }\n\n if (client) {\n return (\n <QueryClientProvider client={clientRef.current}>\n {children}\n </QueryClientProvider>\n );\n }\n\n return (\n <PersistQueryClientProvider\n client={clientRef.current}\n persistOptions={{\n persister,\n maxAge: PERSIST_MAX_AGE,\n buster: PERSIST_BUSTER,\n dehydrateOptions: {\n shouldDehydrateQuery: (query) => query.state.status === 'success',\n },\n }}\n >\n {children}\n </PersistQueryClientProvider>\n );\n};\n"],"mappings":"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"}
1
+ {"version":3,"file":"ReactQueryProvider.mjs","names":[],"sources":["../../../src/providers/ReactQueryProvider.tsx"],"sourcesContent":["'use client';\n\nimport { createAsyncStoragePersister } from '@tanstack/query-async-storage-persister';\nimport {\n type DefaultOptions,\n MutationCache,\n QueryClient,\n QueryClientProvider,\n type QueryKey,\n timeoutManager,\n type UseMutationOptions,\n} from '@tanstack/react-query';\nimport { PersistQueryClientProvider } from '@tanstack/react-query-persist-client';\nimport { type FC, type PropsWithChildren, useRef } from 'react';\nimport { useToast } from '../components/Toaster';\n\nconst PERSIST_MAX_AGE = 1000 * 60 * 60 * 24; // 24h\n// Bump to invalidate every persisted cache after a breaking change in query shapes\nconst PERSIST_BUSTER = 'v1';\n\nconst isServer = typeof window === 'undefined';\n\n// During SSR/prerender, react-query schedules `setTimeout`/`setInterval`\n// timers for query garbage collection (`gcTime`) and background refetching\n// (`refetchInterval`). A query built in the cache during render — even an\n// `enabled: false` one — schedules its gcTime timer immediately. In Node,\n// those pending timers keep the event loop alive, so the prerender server\n// never closes and the build hangs after every page has been rendered.\n//\n// Setting `gcTime: Infinity` in the defaults below avoids the *default*\n// timer, but per-query overrides (e.g. `useSession` sets its own `gcTime`)\n// would reintroduce it. To make this robust regardless of per-query options,\n// override react-query's timeout provider on the server so every timer is\n// `unref`-ed — Node can then exit while they are still pending.\nif (isServer) {\n const unref = (timer: unknown): void => {\n if (\n typeof timer === 'object' &&\n timer !== null &&\n 'unref' in timer &&\n typeof (timer as { unref: unknown }).unref === 'function'\n ) {\n (timer as { unref: () => void }).unref();\n }\n };\n\n timeoutManager.setTimeoutProvider({\n setTimeout: (callback, delay) => {\n const timer = setTimeout(callback, delay);\n unref(timer);\n return timer;\n },\n clearTimeout: (timer) => clearTimeout(timer),\n setInterval: (callback, delay) => {\n const timer = setInterval(callback, delay);\n unref(timer);\n return timer;\n },\n clearInterval: (timer) => clearInterval(timer),\n });\n}\n\nconst defaultQueryOptions: DefaultOptions = {\n queries: {\n retry: 1,\n // Keep data fresh for 30 seconds to avoid unnecessary refetches during navigation\n staleTime: 30 * 1000,\n gcTime: PERSIST_MAX_AGE,\n // Only refetch on mount if data is stale (not every single mount)\n refetchOnMount: true,\n refetchOnWindowFocus: false,\n refetchOnReconnect: false,\n },\n mutations: {\n retry: 0,\n },\n};\n\nconst browserLocalStorage = {\n getItem: (key: string) => Promise.resolve(window.localStorage.getItem(key)),\n setItem: (key: string, value: string) =>\n Promise.resolve(window.localStorage.setItem(key, value)),\n removeItem: (key: string) =>\n Promise.resolve(window.localStorage.removeItem(key)),\n};\n\nconst noopStorage = {\n getItem: () => Promise.resolve(null),\n setItem: () => Promise.resolve(),\n removeItem: () => Promise.resolve(),\n};\n\nconst persister = createAsyncStoragePersister({\n storage: typeof window !== 'undefined' ? browserLocalStorage : noopStorage,\n key: 'intlayer-rq-cache',\n});\n\nconst SHOW_ERROR_CODE = false;\n\ndeclare module '@tanstack/react-query' {\n interface Register {\n mutationMeta: {\n onSuccess?: UseMutationOptions['onSuccess'];\n onError?: UseMutationOptions['onError'];\n invalidateQueries?: QueryKey[];\n resetQueries?: QueryKey[];\n };\n }\n}\n\nconst formatErrorCode = (errorCode: string) => errorCode.split('_').join(' ');\n\n/**\n * Hook to handle error logging and toast notifications\n */\nconst useToastEvents = () => {\n const { toast } = useToast();\n\n const onError: MutationCache['config']['onError'] = (error: any) => {\n const parsed = (() => {\n try {\n if (typeof error === 'string') return JSON.parse(error);\n if (error instanceof Error) return JSON.parse(error.message);\n } catch (_) {}\n return error;\n })();\n\n [parsed].flat().forEach((err: any) => {\n // Check for nested error object (standard in your API responses: { statusCode, error: { ... } })\n const apiError = err?.error ?? err;\n\n if (apiError?.code === 'RATE_LIMIT_EXCEEDED_UNAUTHENTICATED') {\n toast({\n title: apiError.message,\n variant: 'error',\n });\n return;\n }\n\n toast({\n title: formatErrorCode(\n SHOW_ERROR_CODE\n ? (apiError?.code ?? err?.code)\n : (apiError?.title ?? err?.title ?? 'Error')\n ),\n description:\n apiError?.message ??\n err?.message ??\n String(apiError ?? 'An error occurred'),\n variant: 'error',\n });\n });\n };\n\n const onSuccess: MutationCache['config']['onSuccess'] = (data: any) => {\n if (data?.error) {\n toast({\n title: formatErrorCode(data.error.title ?? data.error.code ?? 'Error'),\n description:\n data.error.message ?? data.error.code ?? 'An error occurred',\n variant: 'error',\n });\n }\n\n if (data?.message) {\n toast({\n title: data.message,\n description: data.description,\n variant: 'success',\n });\n }\n };\n\n return {\n onError,\n onSuccess,\n };\n};\n\nexport const getQueryClient = () =>\n new QueryClient({ defaultOptions: defaultQueryOptions });\n\ninterface ReactQueryProviderProps {\n client?: QueryClient;\n}\n\nexport const ReactQueryProvider: FC<\n PropsWithChildren<ReactQueryProviderProps>\n> = ({ children, client }) => {\n const { onError, onSuccess } = useToastEvents();\n // Keep handlers in a ref so the cache config (set once below) always calls\n // the latest closures from useToastEvents without needing re-wiring.\n const handlersRef = useRef({ onSuccess, onError });\n handlersRef.current = { onSuccess, onError };\n\n const clientRef = useRef<QueryClient>(client ?? null);\n\n if (!clientRef.current) {\n clientRef.current = new QueryClient({\n defaultOptions: defaultQueryOptions,\n mutationCache: new MutationCache(),\n });\n }\n\n // Wire toast handlers + meta-driven invalidation onto whatever client we\n // ended up with. Required even when the client is created externally (e.g.\n // via getQueryClient() in TanStack Router context), since the externally\n // created client ships with a bare MutationCache.\n const wiredRef = useRef(false);\n if (!wiredRef.current) {\n wiredRef.current = true;\n const cache = clientRef.current.getMutationCache();\n cache.config.onSuccess = (\n data,\n variables,\n onMutateResult,\n mutation,\n context\n ) =>\n handlersRef.current.onSuccess?.(\n data,\n variables,\n onMutateResult,\n mutation,\n context\n );\n cache.config.onError = (\n error,\n variables,\n onMutateResult,\n mutation,\n context\n ) =>\n handlersRef.current.onError?.(\n error,\n variables,\n onMutateResult,\n mutation,\n context\n );\n cache.config.onSettled = (\n _data,\n _error,\n _variables,\n _onMutateResult,\n mutation\n ) => {\n if (mutation.meta?.invalidateQueries) {\n mutation.meta.invalidateQueries.forEach((queryKey) => {\n clientRef.current?.invalidateQueries({ queryKey });\n });\n }\n\n if (mutation.meta?.resetQueries) {\n mutation.meta.resetQueries.forEach((queryKey) => {\n clientRef.current?.resetQueries({ queryKey });\n });\n }\n };\n }\n\n if (client || typeof window === 'undefined') {\n return (\n <QueryClientProvider client={clientRef.current}>\n {children}\n </QueryClientProvider>\n );\n }\n\n return (\n <PersistQueryClientProvider\n client={clientRef.current}\n persistOptions={{\n persister,\n maxAge: PERSIST_MAX_AGE,\n buster: PERSIST_BUSTER,\n dehydrateOptions: {\n shouldDehydrateQuery: (query) => query.state.status === 'success',\n },\n }}\n >\n {children}\n </PersistQueryClientProvider>\n );\n};\n"],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"tailwind.config.mjs","names":["localePath"],"sources":["../../src/tailwind.config.ts"],"sourcesContent":["import { dirname, relative } from 'node:path';\nimport { fileURLToPath } from 'node:url';\n\nconst __filename = fileURLToPath(import.meta.url); // get the resolved path to the file\nconst __dirname = dirname(__filename); // get the name of the directory\n\nconst getTailwindConfig = () => {\n const originAbsolutePath = process.cwd();\n const localePath = __dirname;\n\n let relativePath = relative(originAbsolutePath, localePath);\n\n if (!relativePath) {\n relativePath = '.';\n }\n\n const config = {\n content: [\n `${relativePath}/components/**/*.{ts,tsx,jsx,mjx,js,cjs,cjx,mjs,mjx,svg}`,\n ],\n };\n\n return config;\n};\n\nconst tailwindConfig = getTailwindConfig();\nconst tailwindPresetConfig = tailwindConfig;\n\nexport { tailwindPresetConfig };\nexport default tailwindConfig;\n"],"mappings":";;;;AAIA,MAAM,YAAY,QADC,cAAc,OAAO,KAAK,GACV,CAAC;AAEpC,MAAM,0BAA0B;CAI9B,IAAI,eAAe,SAHQ,QAAQ,IAGU,GAAGA,SAAU;CAE1D,IAAI,CAAC,cACH,eAAe;CASjB,OAAO,EALL,SAAS,CACP,GAAG,aAAa,yDAClB,EAGU;AACd;AAEA,MAAM,iBAAiB,kBAAkB;AACzC,MAAM,uBAAuB"}
1
+ {"version":3,"file":"tailwind.config.mjs","names":["localePath"],"sources":["../../src/tailwind.config.ts"],"sourcesContent":["import { dirname, relative } from 'node:path';\nimport { fileURLToPath } from 'node:url';\n\nconst __filename = fileURLToPath(import.meta.url); // get the resolved path to the file\nconst __dirname = dirname(__filename); // get the name of the directory\n\nconst getTailwindConfig = () => {\n const originAbsolutePath = process.cwd();\n const localePath = __dirname;\n\n let relativePath = relative(originAbsolutePath, localePath);\n\n if (!relativePath) {\n relativePath = '.';\n }\n\n const config = {\n content: [\n `${relativePath}/components/**/*.{ts,tsx,jsx,mjx,js,cjs,cjx,mjs,mjx,svg}`,\n ],\n };\n\n return config;\n};\n\nconst tailwindConfig = getTailwindConfig();\nconst tailwindPresetConfig = tailwindConfig;\n\nexport { tailwindPresetConfig };\nexport default tailwindConfig;\n"],"mappings":";;;;AAIA,MAAM,YAAY,QADC,cAAc,OAAO,KAAK,IACT,CAAC;AAErC,MAAM,0BAA0B;CAI9B,IAAI,eAAe,SAHQ,QAAQ,KAGW,EAAEA,UAAW;AAE3D,KAAI,CAAC,aACH,gBAAe;AASjB,QAAO,EALL,SAAS,CACP,GAAG,aAAa,0DACjB,EAGU;;AAGf,MAAM,iBAAiB,mBAAmB;AAC1C,MAAM,uBAAuB"}
@@ -1 +1 @@
1
- {"version":3,"file":"cn.mjs","names":[],"sources":["../../../src/utils/cn.ts"],"sourcesContent":["import { type ClassValue, clsx } from 'clsx';\nimport { twMerge } from 'tailwind-merge';\n\nexport const cn = (...inputs: ClassValue[]) => twMerge(clsx(inputs));\n"],"mappings":";;;;AAGA,MAAa,MAAM,GAAG,WAAyB,QAAQ,KAAK,MAAM,CAAC"}
1
+ {"version":3,"file":"cn.mjs","names":[],"sources":["../../../src/utils/cn.ts"],"sourcesContent":["import { type ClassValue, clsx } from 'clsx';\nimport { twMerge } from 'tailwind-merge';\n\nexport const cn = (...inputs: ClassValue[]) => twMerge(clsx(inputs));\n"],"mappings":";;;;AAGA,MAAa,MAAM,GAAG,WAAyB,QAAQ,KAAK,OAAO,CAAC"}
@@ -1 +1 @@
1
- {"version":3,"file":"auth.d.ts","names":[],"sources":["../../../../src/api/hooks/auth.ts"],"mappings":";cAMa,QAAA;AAAA,cAmBA,eAAA,QAAe,mBAAA,CAAA,KAAA,EAAA,MAAA;AAAA,cAQf,gBAAA;AAAA,cAaA,aAAA;AAAA,cAaA,uBAAA;AAAA,cAUA,WAAA;AAAA,cAUA,SAAA;AAAA,cAmBA,iBAAA;AAAA,cAUA,mBAAA;AAAA,cAUA,gBAAA;AAAA,cAUA,cAAA;AAAA,cAUA,mBAAA;AAAA,cAUA,kBAAA;AAAA,cASA,mBAAA;AAAA,cASA,aAAA;AAAA,cASA,mBAAA;AAAA,cASA,aAAA;AAAA,cASA,gBAAA;AAAA,cASA,gBAAA;AAAA,cASA,eAAA,QAAe,mBAAA,CAAA,KAAA,EAAA,MAAA;AAAA,cAQf,kBAAA;AAAA,cAQA,cAAA;AAAA,cAaA,YAAA;AAAA,cASA,mBAAA,QAAmB,mBAAA,CAAA,KAAA,EAAA,MAAA;AAAA,cAQnB,oBAAA"}
1
+ {"version":3,"file":"auth.d.ts","names":[],"sources":["../../../../src/api/hooks/auth.ts"],"mappings":";cAMa,QAAA;AAAA,cAmBA,eAAA,QAAe,mBAAA,CAAA,KAAA,EAAA,MAAA;AAAA,cAQf,gBAAA;AAAA,cAaA,aAAA;AAAA,cAaA,uBAAA;AAAA,cAUA,WAAA;AAAA,cAmBA,SAAA;AAAA,cAoBA,iBAAA;AAAA,cAUA,mBAAA;AAAA,cAUA,gBAAA;AAAA,cAUA,cAAA;AAAA,cAUA,mBAAA;AAAA,cAUA,kBAAA;AAAA,cASA,mBAAA;AAAA,cASA,aAAA;AAAA,cASA,mBAAA;AAAA,cASA,aAAA;AAAA,cASA,gBAAA;AAAA,cASA,gBAAA;AAAA,cASA,eAAA,QAAe,mBAAA,CAAA,KAAA,EAAA,MAAA;AAAA,cAQf,kBAAA;AAAA,cAQA,cAAA;AAAA,cAaA,YAAA;AAAA,cASA,mBAAA,QAAmB,mBAAA,CAAA,KAAA,EAAA,MAAA;AAAA,cAQnB,oBAAA"}
@@ -0,0 +1,10 @@
1
+ //#region src/api/hooks/environment.d.ts
2
+ declare const useAddEnvironment: () => any;
3
+ declare const useUpdateEnvironment: () => any;
4
+ declare const useDeleteEnvironment: () => any;
5
+ declare const useSelectEnvironment: () => any;
6
+ declare const useResetToProductionEnvironment: () => any;
7
+ declare const useMigrateEnvironment: () => any;
8
+ //#endregion
9
+ export { useAddEnvironment, useDeleteEnvironment, useMigrateEnvironment, useResetToProductionEnvironment, useSelectEnvironment, useUpdateEnvironment };
10
+ //# sourceMappingURL=environment.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"environment.d.ts","names":[],"sources":["../../../../src/api/hooks/environment.ts"],"mappings":";cAUa,iBAAA;AAAA,cAsBA,oBAAA;AAAA,cAyBA,oBAAA;AAAA,cAwBA,oBAAA;AAAA,cAmBA,+BAAA;AAAA,cAkBA,qBAAA"}
@@ -15,16 +15,10 @@ declare const useGetCIConfig: (options?: Partial<UseQueryOptions>) => QueryObser
15
15
  declare const usePushCIConfig: () => any;
16
16
  declare const useTriggerBuild: () => any;
17
17
  declare const useTriggerWebhook: () => any;
18
- declare const useAddEnvironment: () => any;
19
- declare const useUpdateEnvironment: () => any;
20
- declare const useDeleteEnvironment: () => any;
21
- declare const useSelectEnvironment: () => any;
22
- declare const useResetToProductionEnvironment: () => any;
23
- declare const useMigrateEnvironment: () => any;
24
18
  declare const useAddNewAccessKey: () => any;
25
19
  declare const useDeleteAccessKey: () => any;
26
20
  declare const useRefreshAccessKey: () => any;
27
21
  declare const useUpdateMemberAccess: () => any;
28
22
  //#endregion
29
- export { useAddEnvironment, useAddNewAccessKey, useAddProject, useDeleteAccessKey, useDeleteEnvironment, useDeleteProject, useDeleteProjectById, useGetCIConfig, useGetProjects, useMigrateEnvironment, usePushCIConfig, usePushProjectConfiguration, useRefreshAccessKey, useResetToProductionEnvironment, useSelectEnvironment, useSelectProject, useTriggerBuild, useTriggerWebhook, useUnselectProject, useUpdateEnvironment, useUpdateMemberAccess, useUpdateProject, useUpdateProjectMembers };
23
+ export { useAddNewAccessKey, useAddProject, useDeleteAccessKey, useDeleteProject, useDeleteProjectById, useGetCIConfig, useGetProjects, usePushCIConfig, usePushProjectConfiguration, useRefreshAccessKey, useSelectProject, useTriggerBuild, useTriggerWebhook, useUnselectProject, useUpdateMemberAccess, useUpdateProject, useUpdateProjectMembers };
30
24
  //# sourceMappingURL=project.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"project.d.ts","names":[],"sources":["../../../../src/api/hooks/project.ts"],"mappings":";;;;cAyBa,cAAA,GACX,OAAA,GAAU,iBAAA,EACV,OAAA,GAAU,OAAA,CAAQ,eAAA,MAAgB,mBAAA,CAAA,KAAA,EAAA,MAAA;AAAA,cAcvB,aAAA;AAAA,cAYA,gBAAA;AAAA,cAqBA,2BAAA;AAAA,cAmBA,uBAAA;AAAA,cAaA,gBAAA;AAAA,cAYA,oBAAA;AAAA,cAaA,gBAAA;AAAA,cA4BA,kBAAA;AAAA,cA4BA,cAAA,GAAkB,OAAA,GAAU,OAAA,CAAQ,eAAA,MAAgB,mBAAA,CAAA,KAAA,EAAA,MAAA;AAAA,cAWpD,eAAA;AAAA,cAYA,eAAA;AAAA,cAYA,iBAAA;AAAA,cAaA,iBAAA;AAAA,cAqBA,oBAAA;AAAA,cAyBA,oBAAA;AAAA,cAsBA,oBAAA;AAAA,cAmBA,+BAAA;AAAA,cAkBA,qBAAA;AAAA,cAaA,kBAAA;AAAA,cAYA,kBAAA;AAAA,cAYA,mBAAA;AAAA,cAaA,qBAAA"}
1
+ {"version":3,"file":"project.d.ts","names":[],"sources":["../../../../src/api/hooks/project.ts"],"mappings":";;;;cAsBa,cAAA,GACX,OAAA,GAAU,iBAAA,EACV,OAAA,GAAU,OAAA,CAAQ,eAAA,MAAgB,mBAAA,CAAA,KAAA,EAAA,MAAA;AAAA,cAcvB,aAAA;AAAA,cAYA,gBAAA;AAAA,cAqBA,2BAAA;AAAA,cAmBA,uBAAA;AAAA,cAaA,gBAAA;AAAA,cAYA,oBAAA;AAAA,cAaA,gBAAA;AAAA,cA4BA,kBAAA;AAAA,cA4BA,cAAA,GAAkB,OAAA,GAAU,OAAA,CAAQ,eAAA,MAAgB,mBAAA,CAAA,KAAA,EAAA,MAAA;AAAA,cAWpD,eAAA;AAAA,cAYA,eAAA;AAAA,cAYA,iBAAA;AAAA,cAaA,kBAAA;AAAA,cAYA,kBAAA;AAAA,cAYA,mBAAA;AAAA,cAaA,qBAAA"}
@@ -1 +1 @@
1
- {"version":3,"file":"showcaseProject.d.ts","names":[],"sources":["../../../../src/api/hooks/showcaseProject.ts"],"mappings":";;;;;cAoBa,sBAAA,GACX,KAAA,GAAQ,qBAAA,EACR,OAAA,GAAU,OAAA,CAAQ,eAAA,CAAgB,yBAAA,OAA2B,mBAAA,CAAA,KAAA,EAAA,MAAA;AAAA,cAYlD,yBAAA,GACX,SAAA,EAAW,4BAAA,eACX,OAAA,GAAU,OAAA,CAAQ,eAAA,MAAgB,mBAAA,CAAA,KAAA,EAAA,MAAA;AAAA,cAevB,2BAAA,GACX,KAAA,EAAO,0BAAA,EACP,OAAA,GAAU,OAAA,CAAQ,eAAA,MAAgB,mBAAA,CAAA,KAAA,EAAA,MAAA;AAAA,cAevB,wBAAA,GAA4B,KAA4B,GAApB,oBAAoB;AAAA,cAcxD,wBAAA,GAA4B,KAA4B,GAApB,oBAAoB;AAAA,cAcxD,uBAAA,GAA2B,KAA4B,GAApB,oBAAoB;AAAA,cAUvD,yBAAA,GAA6B,KAA4B,GAApB,oBAAoB;AAAA,cAUzD,wBAAA,GAA4B,KAA4B,GAApB,oBAAoB"}
1
+ {"version":3,"file":"showcaseProject.d.ts","names":[],"sources":["../../../../src/api/hooks/showcaseProject.ts"],"mappings":";;;;;cAoBa,sBAAA,GACX,KAAA,GAAQ,qBAAA,EACR,OAAA,GAAU,OAAA,CAAQ,eAAA,CAAgB,yBAAA,OAA2B,mBAAA,CAAA,KAAA,EAAA,MAAA;AAAA,cAYlD,yBAAA,GACX,SAAA,EAAW,4BAAA,eACX,OAAA,GAAU,OAAA,CAAQ,eAAA,MAAgB,mBAAA,CAAA,KAAA,EAAA,MAAA;AAAA,cAevB,2BAAA,GACX,KAAA,EAAO,0BAAA,EACP,OAAA,GAAU,OAAA,CAAQ,eAAA,MAAgB,mBAAA,CAAA,KAAA,EAAA,MAAA;AAAA,cAevB,wBAAA,GAA4B,KAAA,GAAQ,oBAAA;AAAA,cAcpC,wBAAA,GAA4B,KAAA,GAAQ,oBAAA;AAAA,cAcpC,uBAAA,GAA2B,KAAA,GAAQ,oBAAA;AAAA,cAUnC,yBAAA,GAA6B,KAAA,GAAQ,oBAAA;AAAA,cAUrC,wBAAA,GAA4B,KAAA,GAAQ,oBAAA"}