@zydon/common 2.2.43 → 2.2.44

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 (311) hide show
  1. package/dist/components/ActionButton/index.js +32 -4
  2. package/dist/components/ActionButton/index.js.map +1 -0
  3. package/dist/components/Autocomplete/index.js +137 -7
  4. package/dist/components/Autocomplete/index.js.map +1 -0
  5. package/dist/components/AutocompleteDetailed/index.js +134 -8
  6. package/dist/components/AutocompleteDetailed/index.js.map +1 -0
  7. package/dist/components/BuilderLayout/index.js +23 -4
  8. package/dist/components/BuilderLayout/index.js.map +1 -0
  9. package/dist/components/BuilderSidebar/index.js +17 -4
  10. package/dist/components/BuilderSidebar/index.js.map +1 -0
  11. package/dist/components/ColorPickerInput/index.js +98 -8
  12. package/dist/components/ColorPickerInput/index.js.map +1 -0
  13. package/dist/components/ColoredLabel/index.js +40 -3
  14. package/dist/components/ColoredLabel/index.js.map +1 -0
  15. package/dist/components/Common/index.js +27 -4
  16. package/dist/components/Common/index.js.map +1 -0
  17. package/dist/components/Confirm/index.js +49 -8
  18. package/dist/components/Confirm/index.js.map +1 -0
  19. package/dist/components/CustomAvatar/index.js +58 -4
  20. package/dist/components/CustomAvatar/index.js.map +1 -0
  21. package/dist/components/CustomAvatarGroup/index.js +73 -3
  22. package/dist/components/CustomAvatarGroup/index.js.map +1 -0
  23. package/dist/components/DashedDivider/index.js +7 -2
  24. package/dist/components/DashedDivider/index.js.map +1 -0
  25. package/dist/components/DataCards/index.js +54 -8
  26. package/dist/components/DataCards/index.js.map +1 -0
  27. package/dist/components/DataGrid/index.js +74 -6
  28. package/dist/components/DataGrid/index.js.map +1 -0
  29. package/dist/components/DatePicker/index.js +40 -4
  30. package/dist/components/DatePicker/index.js.map +1 -0
  31. package/dist/components/DateRangePicker/index.js +48 -4
  32. package/dist/components/DateRangePicker/index.js.map +1 -0
  33. package/dist/components/DateTimePicker/index.js +38 -4
  34. package/dist/components/DateTimePicker/index.js.map +1 -0
  35. package/dist/components/Delayed/index.js +15 -2
  36. package/dist/components/Delayed/index.js.map +1 -0
  37. package/dist/components/Drawer/index.js +36 -7
  38. package/dist/components/Drawer/index.js.map +1 -0
  39. package/dist/components/EmptyContent/index.js +77 -6
  40. package/dist/components/EmptyContent/index.js.map +1 -0
  41. package/dist/components/EmptyView/index.js +32 -5
  42. package/dist/components/EmptyView/index.js.map +1 -0
  43. package/dist/components/Error/index.js +44 -7
  44. package/dist/components/Error/index.js.map +1 -0
  45. package/dist/components/ExpandableGroup/index.js +30 -7
  46. package/dist/components/ExpandableGroup/index.js.map +1 -0
  47. package/dist/components/FixedProgressBar/index.js +20 -3
  48. package/dist/components/FixedProgressBar/index.js.map +1 -0
  49. package/dist/components/FrameSkeleton/index.js +95 -9
  50. package/dist/components/FrameSkeleton/index.js.map +1 -0
  51. package/dist/components/HelpButton/index.js +20 -4
  52. package/dist/components/HelpButton/index.js.map +1 -0
  53. package/dist/components/Icon/index.js +399 -53
  54. package/dist/components/Icon/index.js.map +1 -0
  55. package/dist/components/ImageCrop/index.js +48 -3
  56. package/dist/components/ImageCrop/index.js.map +1 -0
  57. package/dist/components/ImageCropModal/index.js +127 -10
  58. package/dist/components/ImageCropModal/index.js.map +1 -0
  59. package/dist/components/Incrementer/index.js +153 -6
  60. package/dist/components/Incrementer/index.js.map +1 -0
  61. package/dist/components/Label/index.js +68 -3
  62. package/dist/components/Label/index.js.map +1 -0
  63. package/dist/components/LoadingScreen/index.js +8 -3
  64. package/dist/components/LoadingScreen/index.js.map +1 -0
  65. package/dist/components/MaskedInput/index.js +51 -3
  66. package/dist/components/MaskedInput/index.js.map +1 -0
  67. package/dist/components/MenuItem/index.js +21 -6
  68. package/dist/components/MenuItem/index.js.map +1 -0
  69. package/dist/components/MenuPopover/index.js +45 -4
  70. package/dist/components/MenuPopover/index.js.map +1 -0
  71. package/dist/components/Modal/index.js +30 -7
  72. package/dist/components/Modal/index.js.map +1 -0
  73. package/dist/components/ModalActions/index.js +9 -3
  74. package/dist/components/ModalActions/index.js.map +1 -0
  75. package/dist/components/MoreMenu/index.js +16 -7
  76. package/dist/components/MoreMenu/index.js.map +1 -0
  77. package/dist/components/NumberInput/index.js +103 -3
  78. package/dist/components/NumberInput/index.js.map +1 -0
  79. package/dist/components/PasswordRules/index.js +74 -4
  80. package/dist/components/PasswordRules/index.js.map +1 -0
  81. package/dist/components/PopoverSelect/index.js +43 -5
  82. package/dist/components/PopoverSelect/index.js.map +1 -0
  83. package/dist/components/Portal/index.js +25 -2
  84. package/dist/components/Portal/index.js.map +1 -0
  85. package/dist/components/Result/index.js +26 -2
  86. package/dist/components/Result/index.js.map +1 -0
  87. package/dist/components/SavedChanges/index.js +39 -3
  88. package/dist/components/SavedChanges/index.js.map +1 -0
  89. package/dist/components/Scrollbar/index.js +41 -4
  90. package/dist/components/Scrollbar/index.js.map +1 -0
  91. package/dist/components/SearchInput/index.js +70 -6
  92. package/dist/components/SearchInput/index.js.map +1 -0
  93. package/dist/components/SelectableCards/index.js +140 -12
  94. package/dist/components/SelectableCards/index.js.map +1 -0
  95. package/dist/components/SeoPreview/index.js +157 -7
  96. package/dist/components/SeoPreview/index.js.map +1 -0
  97. package/dist/components/SplashScreen/index.js +103 -3
  98. package/dist/components/SplashScreen/index.js.map +1 -0
  99. package/dist/components/Steps/index.js +68 -8
  100. package/dist/components/Steps/index.js.map +1 -0
  101. package/dist/components/StyledTab/index.js +87 -5
  102. package/dist/components/StyledTab/index.js.map +1 -0
  103. package/dist/components/StyledTabs/index.js +24 -3
  104. package/dist/components/StyledTabs/index.js.map +1 -0
  105. package/dist/components/Summary/index.js +12 -2
  106. package/dist/components/Summary/index.js.map +1 -0
  107. package/dist/components/SwapList/index.js +244 -12
  108. package/dist/components/SwapList/index.js.map +1 -0
  109. package/dist/components/TabPanel/index.js +32 -3
  110. package/dist/components/TabPanel/index.js.map +1 -0
  111. package/dist/components/TextMaxLine/index.js +46 -5
  112. package/dist/components/TextMaxLine/index.js.map +1 -0
  113. package/dist/components/TimePicker/index.js +40 -4
  114. package/dist/components/TimePicker/index.js.map +1 -0
  115. package/dist/components/ToggleButtonGroup/index.js +7 -2
  116. package/dist/components/ToggleButtonGroup/index.js.map +1 -0
  117. package/dist/components/Tooltip/index.js +6 -3
  118. package/dist/components/Tooltip/index.js.map +1 -0
  119. package/dist/components/WhiteBox/index.js +5 -2
  120. package/dist/components/WhiteBox/index.js.map +1 -0
  121. package/dist/components/animate/index.js +2 -0
  122. package/dist/components/animate/index.js.map +1 -0
  123. package/dist/components/carousel/index.js +2 -0
  124. package/dist/components/carousel/index.js.map +1 -0
  125. package/dist/components/form/Address/index.js +197 -8
  126. package/dist/components/form/Address/index.js.map +1 -0
  127. package/dist/components/form/Autocomplete/index.js +39 -3
  128. package/dist/components/form/Autocomplete/index.js.map +1 -0
  129. package/dist/components/form/AutocompleteDetailed/index.js +39 -3
  130. package/dist/components/form/AutocompleteDetailed/index.js.map +1 -0
  131. package/dist/components/form/Checkbox/index.js +48 -5
  132. package/dist/components/form/Checkbox/index.js.map +1 -0
  133. package/dist/components/form/Codes/index.js +83 -6
  134. package/dist/components/form/Codes/index.js.map +1 -0
  135. package/dist/components/form/ColorPicker/index.js +49 -3
  136. package/dist/components/form/ColorPicker/index.js.map +1 -0
  137. package/dist/components/form/DatePicker/index.js +60 -4
  138. package/dist/components/form/DatePicker/index.js.map +1 -0
  139. package/dist/components/form/DateRangePicker/index.js +74 -6
  140. package/dist/components/form/DateRangePicker/index.js.map +1 -0
  141. package/dist/components/form/DateTimePicker/index.js +58 -4
  142. package/dist/components/form/DateTimePicker/index.js.map +1 -0
  143. package/dist/components/form/Field/index.js +46 -3
  144. package/dist/components/form/Field/index.js.map +1 -0
  145. package/dist/components/form/Form/index.js +26 -3
  146. package/dist/components/form/Form/index.js.map +1 -0
  147. package/dist/components/form/Incrementer/index.js +35 -3
  148. package/dist/components/form/Incrementer/index.js.map +1 -0
  149. package/dist/components/form/InputTags/index.js +66 -5
  150. package/dist/components/form/InputTags/index.js.map +1 -0
  151. package/dist/components/form/MaskedInput/index.js +42 -3
  152. package/dist/components/form/MaskedInput/index.js.map +1 -0
  153. package/dist/components/form/MultiCheckbox/index.js +90 -8
  154. package/dist/components/form/MultiCheckbox/index.js.map +1 -0
  155. package/dist/components/form/MultiChipField/index.js +46 -4
  156. package/dist/components/form/MultiChipField/index.js.map +1 -0
  157. package/dist/components/form/NumberInput/index.js +40 -3
  158. package/dist/components/form/NumberInput/index.js.map +1 -0
  159. package/dist/components/form/Password/index.js +86 -6
  160. package/dist/components/form/Password/index.js.map +1 -0
  161. package/dist/components/form/RadioGroup/index.js +123 -8
  162. package/dist/components/form/RadioGroup/index.js.map +1 -0
  163. package/dist/components/form/SelectableCards/index.js +19 -3
  164. package/dist/components/form/SelectableCards/index.js.map +1 -0
  165. package/dist/components/form/Switch/index.js +65 -5
  166. package/dist/components/form/Switch/index.js.map +1 -0
  167. package/dist/components/form/TimePicker/index.js +61 -4
  168. package/dist/components/form/TimePicker/index.js.map +1 -0
  169. package/dist/components/form/UploadAvatarWithCrop/index.js +56 -5
  170. package/dist/components/form/UploadAvatarWithCrop/index.js.map +1 -0
  171. package/dist/components/form/UploadWithCrop/index.js +56 -5
  172. package/dist/components/form/UploadWithCrop/index.js.map +1 -0
  173. package/dist/components/form/Webhook/index.js +141 -12
  174. package/dist/components/form/Webhook/index.js.map +1 -0
  175. package/dist/components/lightbox/index.js +2 -0
  176. package/dist/components/lightbox/index.js.map +1 -0
  177. package/dist/components/table/index.js +2 -0
  178. package/dist/components/table/index.js.map +1 -0
  179. package/dist/components/upload/index.js +2 -0
  180. package/dist/components/upload/index.js.map +1 -0
  181. package/dist/hooks/useActiveElement.js +25 -2
  182. package/dist/hooks/useActiveElement.js.map +1 -0
  183. package/dist/hooks/useApiMessage.js +31 -2
  184. package/dist/hooks/useApiMessage.js.map +1 -0
  185. package/dist/hooks/useAutocomplete.js +58 -2
  186. package/dist/hooks/useAutocomplete.js.map +1 -0
  187. package/dist/hooks/useCopyToClipboard.js +20 -2
  188. package/dist/hooks/useCopyToClipboard.js.map +1 -0
  189. package/dist/hooks/useDatagrid.js +41 -2
  190. package/dist/hooks/useDatagrid.js.map +1 -0
  191. package/dist/hooks/useDebounceValue.js +16 -2
  192. package/dist/hooks/useDebounceValue.js.map +1 -0
  193. package/dist/hooks/useDeepCompareEffect.js +13 -2
  194. package/dist/hooks/useDeepCompareEffect.js.map +1 -0
  195. package/dist/hooks/useEventCallback.js +14 -3
  196. package/dist/hooks/useEventCallback.js.map +1 -0
  197. package/dist/hooks/useEventListener.js +22 -2
  198. package/dist/hooks/useEventListener.js.map +1 -0
  199. package/dist/hooks/useIsMounting.js +11 -2
  200. package/dist/hooks/useIsMounting.js.map +1 -0
  201. package/dist/hooks/useIsomorphicLayoutEffect.js +4 -2
  202. package/dist/hooks/useIsomorphicLayoutEffect.js.map +1 -0
  203. package/dist/hooks/useLocalStorage.js +85 -3
  204. package/dist/hooks/useLocalStorage.js.map +1 -0
  205. package/dist/hooks/useMount.js +7 -2
  206. package/dist/hooks/useMount.js.map +1 -0
  207. package/dist/hooks/useOnClickOutside.js +14 -3
  208. package/dist/hooks/useOnClickOutside.js.map +1 -0
  209. package/dist/hooks/usePagination.js +38 -2
  210. package/dist/hooks/usePagination.js.map +1 -0
  211. package/dist/hooks/usePopover.js +19 -2
  212. package/dist/hooks/usePopover.js.map +1 -0
  213. package/dist/hooks/useResponsive.js +32 -3
  214. package/dist/hooks/useResponsive.js.map +1 -0
  215. package/dist/hooks/useScrollOffSetTop.js +29 -2
  216. package/dist/hooks/useScrollOffSetTop.js.map +1 -0
  217. package/dist/hooks/useSnackbar.js +11 -2
  218. package/dist/hooks/useSnackbar.js.map +1 -0
  219. package/dist/hooks/useTabs.js +14 -2
  220. package/dist/hooks/useTabs.js.map +1 -0
  221. package/dist/hooks/useToggle.js +9 -2
  222. package/dist/hooks/useToggle.js.map +1 -0
  223. package/dist/hooks/useUpload.js +54 -2
  224. package/dist/hooks/useUpload.js.map +1 -0
  225. package/dist/hooks/useUploadImage.js +77 -4
  226. package/dist/hooks/useUploadImage.js.map +1 -0
  227. package/dist/index.js +4 -2
  228. package/dist/index.js.map +1 -0
  229. package/dist/locales/all-langs.js +29 -2
  230. package/dist/locales/all-langs.js.map +1 -0
  231. package/dist/theme/core/index.js +2 -0
  232. package/dist/theme/core/index.js.map +1 -0
  233. package/dist/theme/styles/index.js +2 -0
  234. package/dist/theme/styles/index.js.map +1 -0
  235. package/dist/theme/theme-provider.js +39 -3
  236. package/dist/theme/theme-provider.js.map +1 -0
  237. package/dist/theme/with-settings/index.js +2 -0
  238. package/dist/theme/with-settings/index.js.map +1 -0
  239. package/dist/types/addressProps.js +2 -0
  240. package/dist/types/addressProps.js.map +1 -0
  241. package/dist/types/api.js +2 -0
  242. package/dist/types/api.js.map +1 -0
  243. package/dist/types/autoComplete.js +2 -0
  244. package/dist/types/autoComplete.js.map +1 -0
  245. package/dist/types/autoCompleteProps.js +2 -0
  246. package/dist/types/autoCompleteProps.js.map +1 -0
  247. package/dist/types/baseField.js +2 -0
  248. package/dist/types/baseField.js.map +1 -0
  249. package/dist/types/dataGridProps.js +2 -0
  250. package/dist/types/dataGridProps.js.map +1 -0
  251. package/dist/types/datagrid.js +2 -0
  252. package/dist/types/datagrid.js.map +1 -0
  253. package/dist/types/datePickerProps.js +2 -0
  254. package/dist/types/datePickerProps.js.map +1 -0
  255. package/dist/types/dateRangePickerProps.js +2 -0
  256. package/dist/types/dateRangePickerProps.js.map +1 -0
  257. package/dist/types/dateTimePickerProps.js +2 -0
  258. package/dist/types/dateTimePickerProps.js.map +1 -0
  259. package/dist/types/fieldProps.js +2 -0
  260. package/dist/types/fieldProps.js.map +1 -0
  261. package/dist/types/icon.js +330 -2
  262. package/dist/types/icon.js.map +1 -0
  263. package/dist/types/iconProps.js +2 -0
  264. package/dist/types/iconProps.js.map +1 -0
  265. package/dist/types/incrementerProps.js +2 -0
  266. package/dist/types/incrementerProps.js.map +1 -0
  267. package/dist/types/item.js +2 -0
  268. package/dist/types/item.js.map +1 -0
  269. package/dist/types/multiCheckboxProps.js +2 -0
  270. package/dist/types/multiCheckboxProps.js.map +1 -0
  271. package/dist/types/numberInputProps.js +2 -0
  272. package/dist/types/numberInputProps.js.map +1 -0
  273. package/dist/types/option.js +2 -0
  274. package/dist/types/option.js.map +1 -0
  275. package/dist/types/radioGroupProps.js +2 -0
  276. package/dist/types/radioGroupProps.js.map +1 -0
  277. package/dist/types/searchInputProps.js +2 -0
  278. package/dist/types/searchInputProps.js.map +1 -0
  279. package/dist/types/sectionProps.js +2 -0
  280. package/dist/types/sectionProps.js.map +1 -0
  281. package/dist/types/switchProps.js +2 -0
  282. package/dist/types/switchProps.js.map +1 -0
  283. package/dist/types/timePickerProps.js +2 -0
  284. package/dist/types/timePickerProps.js.map +1 -0
  285. package/dist/types/upload.js +2 -0
  286. package/dist/types/upload.js.map +1 -0
  287. package/dist/types/webhook.js +35 -2
  288. package/dist/types/webhook.js.map +1 -0
  289. package/dist/utils/color.js +5 -3
  290. package/dist/utils/color.js.map +1 -0
  291. package/dist/utils/compare.js +5 -3
  292. package/dist/utils/compare.js.map +1 -0
  293. package/dist/utils/date.js +20 -4
  294. package/dist/utils/date.js.map +1 -0
  295. package/dist/utils/formatNumber.js +86 -2
  296. package/dist/utils/formatNumber.js.map +1 -0
  297. package/dist/utils/formatTime.js +155 -5
  298. package/dist/utils/formatTime.js.map +1 -0
  299. package/dist/utils/loadable.js +11 -3
  300. package/dist/utils/loadable.js.map +1 -0
  301. package/dist/utils/mask.js +38 -2
  302. package/dist/utils/mask.js.map +1 -0
  303. package/dist/utils/number.js +12 -2
  304. package/dist/utils/number.js.map +1 -0
  305. package/dist/utils/sort.js +22 -2
  306. package/dist/utils/sort.js.map +1 -0
  307. package/dist/utils/uuidv4.js +9 -2
  308. package/dist/utils/uuidv4.js.map +1 -0
  309. package/dist/utils/validators.js +82 -2
  310. package/dist/utils/validators.js.map +1 -0
  311. package/package.json +1 -1
@@ -1,6 +1,62 @@
1
1
  import { useState } from 'react';
2
2
  import { debounce } from '@mui/material/utils';
3
3
 
4
- const h=d=>{const[o,i]=useState(!1),[s,l]=useState(),[p,a]=useState(),O=debounce(e=>{l(e),i(!1);},500),S=e=>{e&&i(!0),O(e);},c=()=>{i(!1),l(void 0);};return {search:s,searching:o,buildOptions:(e=[],r=!1)=>{const t=p||d;if(!t||s!==void 0)return e.filter(n=>n.value!==null&&n.value!==void 0);if(o||r)return [];const f=[...Array.isArray(t)?t:[t],...e];return Array.from(new Set(f.map(n=>n.value))).map(n=>f.find(m=>m.value===n)).filter(n=>n.value!==null&&n.value!==void 0)},onSearch:S,onSelectValue:(e=[],r)=>{if(!r||Array.isArray(r)&&r.length===0){a(void 0);return}Array.isArray(r)?a(e.filter(t=>r.includes(t.value))):a(e.find(t=>t.value===r)),c();},finishSearch:c}};var x=h;
4
+ const useAutocomplete = (initialValue) => {
5
+ const [searching, setSearching] = useState(false);
6
+ const [search, setSearch] = useState();
7
+ const [selectedValue, setSelectedValue] = useState();
8
+ const debouncedSetSearch = debounce((search2) => {
9
+ setSearch(search2);
10
+ setSearching(false);
11
+ }, 500);
12
+ const onSearch = (term) => {
13
+ if (term)
14
+ setSearching(true);
15
+ debouncedSetSearch(term);
16
+ };
17
+ const finishSearch = () => {
18
+ setSearching(false);
19
+ setSearch(void 0);
20
+ };
21
+ const buildOptions = (options = [], fetching = false) => {
22
+ const value = selectedValue || initialValue;
23
+ if (!value || search !== void 0)
24
+ return options.filter(
25
+ (opt) => opt.value !== null && opt.value !== void 0
26
+ );
27
+ if (searching || fetching)
28
+ return [];
29
+ const selectedArray = Array.isArray(value) ? value : [value];
30
+ const combinedOptions = [...selectedArray, ...options];
31
+ return Array.from(new Set(combinedOptions.map((opt) => opt.value))).map(
32
+ (uniqueValue) => combinedOptions.find((opt) => opt.value === uniqueValue)
33
+ ).filter((opt) => opt.value !== null && opt.value !== void 0);
34
+ };
35
+ const onSelectValue = (options = [], selected) => {
36
+ if (!selected || Array.isArray(selected) && selected.length === 0) {
37
+ setSelectedValue(void 0);
38
+ return;
39
+ }
40
+ if (Array.isArray(selected)) {
41
+ setSelectedValue(
42
+ options.filter((opt) => selected.includes(opt.value))
43
+ );
44
+ } else {
45
+ setSelectedValue(options.find((opt) => opt.value === selected));
46
+ }
47
+ finishSearch();
48
+ };
49
+ return {
50
+ search,
51
+ searching,
52
+ buildOptions,
53
+ onSearch,
54
+ onSelectValue,
55
+ finishSearch
56
+ };
57
+ };
58
+ var useAutocomplete_default = useAutocomplete;
5
59
 
6
- export { x as default };
60
+ export { useAutocomplete_default as default };
61
+ //# sourceMappingURL=out.js.map
62
+ //# sourceMappingURL=useAutocomplete.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../../src/hooks/useAutocomplete.ts"],"names":["search"],"mappings":"AAAA,SAAS,gBAAgB;AACzB,SAAS,gBAAgB;AAIzB,MAAM,kBAAkB,CAAC,iBAAqC;AAC5D,QAAM,CAAC,WAAW,YAAY,IAAI,SAAS,KAAK;AAChD,QAAM,CAAC,QAAQ,SAAS,IAAI,SAAiB;AAC7C,QAAM,CAAC,eAAe,gBAAgB,IAAI,SAA4B;AAEtE,QAAM,qBAAqB,SAAS,CAACA,YAAoB;AACvD,cAAUA,OAAM;AAChB,iBAAa,KAAK;AAAA,EACpB,GAAG,GAAG;AAEN,QAAM,WAAW,CAAC,SAAkB;AAClC,QAAI;AAAM,mBAAa,IAAI;AAC3B,uBAAmB,IAAI;AAAA,EACzB;AAEA,QAAM,eAAe,MAAM;AACzB,iBAAa,KAAK;AAClB,cAAU,MAAS;AAAA,EACrB;AAEA,QAAM,eAAe,CAAC,UAAoB,CAAC,GAAG,WAAW,UAAU;AACjE,UAAM,QAAQ,iBAAiB;AAE/B,QAAI,CAAC,SAAS,WAAW;AACvB,aAAO,QAAQ;AAAA,QACb,SAAO,IAAI,UAAU,QAAQ,IAAI,UAAU;AAAA,MAC7C;AAEF,QAAI,aAAa;AAAU,aAAO,CAAC;AAEnC,UAAM,gBAAgB,MAAM,QAAQ,KAAK,IAAI,QAAQ,CAAC,KAAK;AAC3D,UAAM,kBAAkB,CAAC,GAAG,eAAe,GAAG,OAAO;AAErD,WACE,MAAM,KAAK,IAAI,IAAI,gBAAgB,IAAI,SAAO,IAAI,KAAK,CAAC,CAAC,EAAE;AAAA,MACzD,iBAAe,gBAAgB,KAAK,SAAO,IAAI,UAAU,WAAW;AAAA,IACtE,EACA,OAAO,SAAO,IAAI,UAAU,QAAQ,IAAI,UAAU,MAAS;AAAA,EAC/D;AAEA,QAAM,gBAAgB,CAAC,UAAoB,CAAC,GAAG,aAAsB;AACnE,QAAI,CAAC,YAAa,MAAM,QAAQ,QAAQ,KAAK,SAAS,WAAW,GAAI;AACnE,uBAAiB,MAAS;AAC1B;AAAA,IACF;AAEA,QAAI,MAAM,QAAQ,QAAQ,GAAG;AAC3B;AAAA,QACE,QAAQ,OAAO,SAAO,SAAS,SAAS,IAAI,KAAe,CAAC;AAAA,MAC9D;AAAA,IACF,OAAO;AACL,uBAAiB,QAAQ,KAAK,SAAO,IAAI,UAAU,QAAQ,CAAC;AAAA,IAC9D;AAEA,iBAAa;AAAA,EACf;AAEA,SAAO;AAAA,IACL;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,EACF;AACF;AAEA,IAAO,0BAAQ","sourcesContent":["import { useState } from 'react';\nimport { debounce } from '@mui/material/utils';\n\nimport { Option } from 'types/option';\n\nconst useAutocomplete = (initialValue?: Option | Option[]) => {\n const [searching, setSearching] = useState(false);\n const [search, setSearch] = useState<string>();\n const [selectedValue, setSelectedValue] = useState<Option | Option[]>();\n\n const debouncedSetSearch = debounce((search?: string) => {\n setSearch(search);\n setSearching(false);\n }, 500);\n\n const onSearch = (term?: string) => {\n if (term) setSearching(true);\n debouncedSetSearch(term);\n };\n\n const finishSearch = () => {\n setSearching(false);\n setSearch(undefined);\n };\n\n const buildOptions = (options: Option[] = [], fetching = false) => {\n const value = selectedValue || initialValue;\n\n if (!value || search !== undefined)\n return options.filter(\n opt => opt.value !== null && opt.value !== undefined,\n );\n\n if (searching || fetching) return [];\n\n const selectedArray = Array.isArray(value) ? value : [value];\n const combinedOptions = [...selectedArray, ...options];\n\n return (\n Array.from(new Set(combinedOptions.map(opt => opt.value))).map(\n uniqueValue => combinedOptions.find(opt => opt.value === uniqueValue),\n ) as Option[]\n ).filter(opt => opt.value !== null && opt.value !== undefined);\n };\n\n const onSelectValue = (options: Option[] = [], selected: unknown) => {\n if (!selected || (Array.isArray(selected) && selected.length === 0)) {\n setSelectedValue(undefined);\n return;\n }\n\n if (Array.isArray(selected)) {\n setSelectedValue(\n options.filter(opt => selected.includes(opt.value as string)),\n );\n } else {\n setSelectedValue(options.find(opt => opt.value === selected));\n }\n\n finishSearch();\n };\n\n return {\n search,\n searching,\n buildOptions,\n onSearch,\n onSelectValue,\n finishSearch,\n };\n};\n\nexport default useAutocomplete;\n"]}
@@ -1,5 +1,23 @@
1
1
  import { useState } from 'react';
2
2
 
3
- const p=()=>{const[o,e]=useState(null);return {copiedText:o,copy:async t=>{if(!navigator?.clipboard)return !1;try{return await navigator.clipboard.writeText(t),e(t),!0}catch{return e(null),!1}}}};var l=p;
3
+ const useCopyToClipboard = () => {
4
+ const [copiedText, setCopiedText] = useState(null);
5
+ const copy = async (text) => {
6
+ if (!navigator?.clipboard)
7
+ return false;
8
+ try {
9
+ await navigator.clipboard.writeText(text);
10
+ setCopiedText(text);
11
+ return true;
12
+ } catch (error) {
13
+ setCopiedText(null);
14
+ return false;
15
+ }
16
+ };
17
+ return { copiedText, copy };
18
+ };
19
+ var useCopyToClipboard_default = useCopyToClipboard;
4
20
 
5
- export { l as default };
21
+ export { useCopyToClipboard_default as default };
22
+ //# sourceMappingURL=out.js.map
23
+ //# sourceMappingURL=useCopyToClipboard.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../../src/hooks/useCopyToClipboard.ts"],"names":[],"mappings":"AAAA,SAAS,gBAAgB;AAWzB,MAAM,qBAAqB,MAAkB;AAC3C,QAAM,CAAC,YAAY,aAAa,IAAI,SAAsB,IAAI;AAE9D,QAAM,OAAe,OAAM,SAAQ;AACjC,QAAI,CAAC,WAAW;AAAW,aAAO;AAElC,QAAI;AACF,YAAM,UAAU,UAAU,UAAU,IAAI;AACxC,oBAAc,IAAI;AAClB,aAAO;AAAA,IACT,SAAS,OAAP;AACA,oBAAc,IAAI;AAClB,aAAO;AAAA,IACT;AAAA,EACF;AAEA,SAAO,EAAE,YAAY,KAAK;AAC5B;AAEA,IAAO,6BAAQ","sourcesContent":["import { useState } from 'react';\n\ntype CopiedValue = string | null;\n\ntype CopyFn = (text: string) => Promise<boolean>;\n\ntype ReturnType = {\n copy: CopyFn;\n copiedText: CopiedValue;\n};\n\nconst useCopyToClipboard = (): ReturnType => {\n const [copiedText, setCopiedText] = useState<CopiedValue>(null);\n\n const copy: CopyFn = async text => {\n if (!navigator?.clipboard) return false;\n\n try {\n await navigator.clipboard.writeText(text);\n setCopiedText(text);\n return true;\n } catch (error) {\n setCopiedText(null);\n return false;\n }\n };\n\n return { copiedText, copy };\n};\n\nexport default useCopyToClipboard;\n"]}
@@ -1,6 +1,45 @@
1
1
  import { useState } from 'react';
2
2
  import { useGridApiRef } from '@mui/x-data-grid-premium';
3
3
 
4
- const b=({page:c,perPage:o,dir:i,search:p,searchValue:d,sort:u}={page:0,perPage:25})=>{const n=useGridApiRef(),[r,t]=useState({page:c,perPage:o,dir:i,search:p,searchValue:d,sort:u}),g=({pageSize:e=25,page:a=0})=>{t(s=>({...s,page:a,perPage:e}));},h=e=>t(a=>({...a,page:0,search:e})),l=e=>t(a=>({...a,searchValue:e})),P=()=>t(e=>({...e,page:0,search:e.searchValue})),S=(e,a)=>t(s=>({...s,sort:e,dir:a})),f=()=>{n.current.setPage(0),g({page:0});};return {...r,apiRef:n,page:r.page||0,perPage:r.perPage||25,handlePaginationModelChange:g,handleSearch:h,handleSort:S,handleSearchValue:l,applySearchValue:P,goToPageFirstPage:f}};var y=b;
4
+ const useDatagrid = ({ page, perPage, dir, search, searchValue, sort } = {
5
+ page: 0,
6
+ perPage: 25
7
+ }) => {
8
+ const apiRef = useGridApiRef();
9
+ const [state, setState] = useState({
10
+ page,
11
+ perPage,
12
+ dir,
13
+ search,
14
+ searchValue,
15
+ sort
16
+ });
17
+ const handlePaginationModelChange = ({ pageSize = 25, page: page2 = 0 }) => {
18
+ setState((state2) => ({ ...state2, page: page2, perPage: pageSize }));
19
+ };
20
+ const handleSearch = (search2) => setState((state2) => ({ ...state2, page: 0, search: search2 }));
21
+ const handleSearchValue = (search2) => setState((state2) => ({ ...state2, searchValue: search2 }));
22
+ const applySearchValue = () => setState((state2) => ({ ...state2, page: 0, search: state2.searchValue }));
23
+ const handleSort = (field, dir2) => setState((state2) => ({ ...state2, sort: field, dir: dir2 }));
24
+ const goToPageFirstPage = () => {
25
+ apiRef.current.setPage(0);
26
+ handlePaginationModelChange({ page: 0 });
27
+ };
28
+ return {
29
+ ...state,
30
+ apiRef,
31
+ page: state.page || 0,
32
+ perPage: state.perPage || 25,
33
+ handlePaginationModelChange,
34
+ handleSearch,
35
+ handleSort,
36
+ handleSearchValue,
37
+ applySearchValue,
38
+ goToPageFirstPage
39
+ };
40
+ };
41
+ var useDatagrid_default = useDatagrid;
5
42
 
6
- export { y as default };
43
+ export { useDatagrid_default as default };
44
+ //# sourceMappingURL=out.js.map
45
+ //# sourceMappingURL=useDatagrid.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../../src/hooks/useDatagrid.ts"],"names":["page","state","search","dir"],"mappings":"AAAA,SAAS,gBAAgB;AACzB,SAAS,qBAAqB;AAW9B,MAAM,cAAc,CAClB,EAAE,MAAM,SAAS,KAAK,QAAQ,aAAa,KAAK,IAAW;AAAA,EACzD,MAAM;AAAA,EACN,SAAS;AACX,MACG;AACH,QAAM,SAAS,cAAc;AAC7B,QAAM,CAAC,OAAO,QAAQ,IAAI,SAAgB;AAAA,IACxC;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,EACF,CAAC;AAED,QAAM,8BAA8B,CAAC,EAAE,WAAW,IAAI,MAAAA,QAAO,EAAE,MAAM;AACnE,aAAS,CAAAC,YAAU,EAAE,GAAGA,QAAO,MAAAD,OAAM,SAAS,SAAS,EAAE;AAAA,EAC3D;AAEA,QAAM,eAAe,CAACE,YACpB,SAAS,CAAAD,YAAU,EAAE,GAAGA,QAAO,MAAM,GAAG,QAAAC,QAAO,EAAE;AAEnD,QAAM,oBAAoB,CAACA,YACzB,SAAS,CAAAD,YAAU,EAAE,GAAGA,QAAO,aAAaC,QAAO,EAAE;AAEvD,QAAM,mBAAmB,MACvB,SAAS,CAAAD,YAAU,EAAE,GAAGA,QAAO,MAAM,GAAG,QAAQA,OAAM,YAAY,EAAE;AAEtE,QAAM,aAAa,CAAC,OAAgBE,SAClC,SAAS,CAAAF,YAAU,EAAE,GAAGA,QAAO,MAAM,OAAO,KAAAE,KAAI,EAAE;AAEpD,QAAM,oBAAoB,MAAM;AAC9B,WAAO,QAAQ,QAAQ,CAAC;AACxB,gCAA4B,EAAE,MAAM,EAAE,CAAC;AAAA,EACzC;AAEA,SAAO;AAAA,IACL,GAAG;AAAA,IACH;AAAA,IACA,MAAM,MAAM,QAAQ;AAAA,IACpB,SAAS,MAAM,WAAW;AAAA,IAC1B;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,EACF;AACF;AAEA,IAAO,sBAAQ","sourcesContent":["import { useState } from 'react';\nimport { useGridApiRef } from '@mui/x-data-grid-premium';\n\ninterface State {\n page?: number;\n perPage?: number;\n search?: string;\n searchValue?: string;\n sort?: string;\n dir?: 'asc' | 'desc';\n}\n\nconst useDatagrid = (\n { page, perPage, dir, search, searchValue, sort }: State = {\n page: 0,\n perPage: 25,\n },\n) => {\n const apiRef = useGridApiRef();\n const [state, setState] = useState<State>({\n page,\n perPage,\n dir,\n search,\n searchValue,\n sort,\n });\n\n const handlePaginationModelChange = ({ pageSize = 25, page = 0 }) => {\n setState(state => ({ ...state, page, perPage: pageSize }));\n };\n\n const handleSearch = (search: string | undefined) =>\n setState(state => ({ ...state, page: 0, search }));\n\n const handleSearchValue = (search: string | undefined) =>\n setState(state => ({ ...state, searchValue: search }));\n\n const applySearchValue = () =>\n setState(state => ({ ...state, page: 0, search: state.searchValue }));\n\n const handleSort = (field?: string, dir?: 'asc' | 'desc') =>\n setState(state => ({ ...state, sort: field, dir }));\n\n const goToPageFirstPage = () => {\n apiRef.current.setPage(0);\n handlePaginationModelChange({ page: 0 });\n };\n\n return {\n ...state,\n apiRef,\n page: state.page || 0,\n perPage: state.perPage || 25,\n handlePaginationModelChange,\n handleSearch,\n handleSort,\n handleSearchValue,\n applySearchValue,\n goToPageFirstPage,\n };\n};\n\nexport default useDatagrid;\n"]}
@@ -1,5 +1,19 @@
1
1
  import { useState, useEffect } from 'react';
2
2
 
3
- function s(e,t){const[u,n]=useState(e);return useEffect(()=>{const o=setTimeout(()=>{n(e);},t);return ()=>{clearTimeout(o);}},[e,t]),u}var f=s;
3
+ function useDebounceValue(value, delay) {
4
+ const [debouncedValue, setDebouncedValue] = useState(value);
5
+ useEffect(() => {
6
+ const handler = setTimeout(() => {
7
+ setDebouncedValue(value);
8
+ }, delay);
9
+ return () => {
10
+ clearTimeout(handler);
11
+ };
12
+ }, [value, delay]);
13
+ return debouncedValue;
14
+ }
15
+ var useDebounceValue_default = useDebounceValue;
4
16
 
5
- export { f as default };
17
+ export { useDebounceValue_default as default };
18
+ //# sourceMappingURL=out.js.map
19
+ //# sourceMappingURL=useDebounceValue.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../../src/hooks/useDebounceValue.ts"],"names":[],"mappings":"AAAA,SAAS,WAAW,gBAAgB;AAEpC,SAAS,iBAAoB,OAAU,OAAkB;AACvD,QAAM,CAAC,gBAAgB,iBAAiB,IAAI,SAAY,KAAK;AAE7D,YAAU,MAAM;AACd,UAAM,UAAU,WAAW,MAAM;AAC/B,wBAAkB,KAAK;AAAA,IACzB,GAAG,KAAK;AAER,WAAO,MAAM;AACX,mBAAa,OAAO;AAAA,IACtB;AAAA,EACF,GAAG,CAAC,OAAO,KAAK,CAAC;AAEjB,SAAO;AACT;AAEA,IAAO,2BAAQ","sourcesContent":["import { useEffect, useState } from 'react';\n\nfunction useDebounceValue<T>(value: T, delay: number): T {\n const [debouncedValue, setDebouncedValue] = useState<T>(value);\n\n useEffect(() => {\n const handler = setTimeout(() => {\n setDebouncedValue(value);\n }, delay);\n\n return () => {\n clearTimeout(handler);\n };\n }, [value, delay]);\n\n return debouncedValue;\n}\n\nexport default useDebounceValue;\n"]}
@@ -1,6 +1,17 @@
1
1
  import { useEffect, useRef } from 'react';
2
2
  import { isEqual } from 'utils/compare';
3
3
 
4
- const f=n=>{const e=useRef();return isEqual(n,e.current)||(e.current=n),e.current},o=(n,e)=>{useEffect(n,e.map(f));};var m=o;
4
+ const useDeepCompareMemoize = (value) => {
5
+ const ref = useRef();
6
+ if (!isEqual(value, ref.current))
7
+ ref.current = value;
8
+ return ref.current;
9
+ };
10
+ const useDeepCompareEffect = (callback, dependencies) => {
11
+ useEffect(callback, dependencies.map(useDeepCompareMemoize));
12
+ };
13
+ var useDeepCompareEffect_default = useDeepCompareEffect;
5
14
 
6
- export { m as default };
15
+ export { useDeepCompareEffect_default as default };
16
+ //# sourceMappingURL=out.js.map
17
+ //# sourceMappingURL=useDeepCompareEffect.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../../src/hooks/useDeepCompareEffect.ts"],"names":[],"mappings":"AAAA,SAAyC,WAAW,cAAc;AAElE,SAAS,eAAe;AAExB,MAAM,wBAAwB,CAAC,UAAoB;AACjD,QAAM,MAAM,OAAgB;AAE5B,MAAI,CAAC,QAAQ,OAAO,IAAI,OAAO;AAAG,QAAI,UAAU;AAEhD,SAAO,IAAI;AACb;AAEA,MAAM,uBAAuB,CAC3B,UACA,iBACG;AAEH,YAAU,UAAU,aAAa,IAAI,qBAAqB,CAAC;AAC7D;AAEA,IAAO,+BAAQ","sourcesContent":["import { DependencyList, EffectCallback, useEffect, useRef } from 'react';\n\nimport { isEqual } from 'utils/compare';\n\nconst useDeepCompareMemoize = (value?: unknown) => {\n const ref = useRef<unknown>();\n\n if (!isEqual(value, ref.current)) ref.current = value;\n\n return ref.current;\n};\n\nconst useDeepCompareEffect = (\n callback: EffectCallback,\n dependencies: DependencyList,\n) => {\n // eslint-disable-next-line react-hooks/exhaustive-deps\n useEffect(callback, dependencies.map(useDeepCompareMemoize));\n};\n\nexport default useDeepCompareEffect;\n"]}
@@ -1,6 +1,17 @@
1
1
  import { useRef, useCallback } from 'react';
2
- import a from './useIsomorphicLayoutEffect';
2
+ import useIsomorphicLayoutEffect from './useIsomorphicLayoutEffect';
3
3
 
4
- function o(e){const n=useRef(()=>{throw new Error("Cannot call an event handler while rendering.")});return a(()=>{n.current=e;},[e]),useCallback((...r)=>n.current?.(...r),[n])}var f=o;
4
+ function useEventCallback(fn) {
5
+ const ref = useRef(() => {
6
+ throw new Error("Cannot call an event handler while rendering.");
7
+ });
8
+ useIsomorphicLayoutEffect(() => {
9
+ ref.current = fn;
10
+ }, [fn]);
11
+ return useCallback((...args) => ref.current?.(...args), [ref]);
12
+ }
13
+ var useEventCallback_default = useEventCallback;
5
14
 
6
- export { f as default, o as useEventCallback };
15
+ export { useEventCallback_default as default, useEventCallback };
16
+ //# sourceMappingURL=out.js.map
17
+ //# sourceMappingURL=useEventCallback.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../../src/hooks/useEventCallback.ts"],"names":[],"mappings":"AAAA,SAAS,aAAa,cAAc;AAEpC,OAAO,+BAA+B;AAQ/B,SAAS,iBACd,IACoC;AACpC,QAAM,MAAM,OAAkB,MAAM;AAClC,UAAM,IAAI,MAAM,+CAA+C;AAAA,EACjE,CAAC;AAED,4BAA0B,MAAM;AAC9B,QAAI,UAAU;AAAA,EAChB,GAAG,CAAC,EAAE,CAAC;AAEP,SAAO,YAAY,IAAI,SAAe,IAAI,UAAU,GAAG,IAAI,GAAG,CAAC,GAAG,CAAC;AAGrE;AAEA,IAAO,2BAAQ","sourcesContent":["import { useCallback, useRef } from 'react';\n\nimport useIsomorphicLayoutEffect from './useIsomorphicLayoutEffect';\n\nexport function useEventCallback<Args extends unknown[], R>(\n fn: (...args: Args) => R,\n): (...args: Args) => R;\nexport function useEventCallback<Args extends unknown[], R>(\n fn: ((...args: Args) => R) | undefined,\n): ((...args: Args) => R) | undefined;\nexport function useEventCallback<Args extends unknown[], R>(\n fn: ((...args: Args) => R) | undefined,\n): ((...args: Args) => R) | undefined {\n const ref = useRef<typeof fn>(() => {\n throw new Error('Cannot call an event handler while rendering.');\n });\n\n useIsomorphicLayoutEffect(() => {\n ref.current = fn;\n }, [fn]);\n\n return useCallback((...args: Args) => ref.current?.(...args), [ref]) as (\n ...args: Args\n ) => R;\n}\n\nexport default useEventCallback;\n"]}
@@ -1,5 +1,25 @@
1
1
  import { useRef, useEffect, useLayoutEffect } from 'react';
2
2
 
3
- const a=typeof window<"u"?useLayoutEffect:useEffect;function u(n,t,o,d){const i=useRef(t);a(()=>{i.current=t;},[t]),useEffect(()=>{const e=o?.current||window;if(!(e&&e.addEventListener))return;const v=E=>i.current(E);return e.addEventListener(n,v,d),()=>{e.removeEventListener(n,v);}},[n,o,d]);}var L=u;
3
+ const useIsomorphicLayoutEffect = typeof window !== "undefined" ? useLayoutEffect : useEffect;
4
+ function useEventListener(eventName, handler, element, options) {
5
+ const savedHandler = useRef(handler);
6
+ useIsomorphicLayoutEffect(() => {
7
+ savedHandler.current = handler;
8
+ }, [handler]);
9
+ useEffect(() => {
10
+ const targetElement = element?.current || window;
11
+ if (!(targetElement && targetElement.addEventListener)) {
12
+ return;
13
+ }
14
+ const eventListener = (event) => savedHandler.current(event);
15
+ targetElement.addEventListener(eventName, eventListener, options);
16
+ return () => {
17
+ targetElement.removeEventListener(eventName, eventListener);
18
+ };
19
+ }, [eventName, element, options]);
20
+ }
21
+ var useEventListener_default = useEventListener;
4
22
 
5
- export { L as default };
23
+ export { useEventListener_default as default };
24
+ //# sourceMappingURL=out.js.map
25
+ //# sourceMappingURL=useEventListener.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../../src/hooks/useEventListener.ts"],"names":[],"mappings":"AAAA,SAAoB,WAAW,iBAAiB,cAAc;AAE9D,MAAM,4BACJ,OAAO,WAAW,cAAc,kBAAkB;AA6BpD,SAAS,iBAKP,WACA,SAGA,SACA,SACA;AAEA,QAAM,eAAe,OAAO,OAAO;AAEnC,4BAA0B,MAAM;AAC9B,iBAAa,UAAU;AAAA,EACzB,GAAG,CAAC,OAAO,CAAC;AAEZ,YAAU,MAAM;AAEd,UAAM,gBAA4B,SAAS,WAAW;AACtD,QAAI,EAAE,iBAAiB,cAAc,mBAAmB;AACtD;AAAA,IACF;AAGA,UAAM,gBAAgC,WAAS,aAAa,QAAQ,KAAK;AAEzE,kBAAc,iBAAiB,WAAW,eAAe,OAAO;AAGhE,WAAO,MAAM;AACX,oBAAc,oBAAoB,WAAW,aAAa;AAAA,IAC5D;AAAA,EACF,GAAG,CAAC,WAAW,SAAS,OAAO,CAAC;AAClC;AAEA,IAAO,2BAAQ","sourcesContent":["import { RefObject, useEffect, useLayoutEffect, useRef } from 'react';\n\nconst useIsomorphicLayoutEffect =\n typeof window !== 'undefined' ? useLayoutEffect : useEffect;\n\n// Window Event based useEventListener interface\nfunction useEventListener<K extends keyof WindowEventMap>(\n eventName: K,\n handler: (event: WindowEventMap[K]) => void,\n element?: undefined,\n options?: boolean | AddEventListenerOptions,\n): void;\n\n// Element Event based useEventListener interface\nfunction useEventListener<\n K extends keyof HTMLElementEventMap,\n T extends HTMLElement = HTMLDivElement,\n>(\n eventName: K,\n handler: (event: HTMLElementEventMap[K]) => void,\n element: RefObject<T>,\n options?: boolean | AddEventListenerOptions,\n): void;\n\n// Document Event based useEventListener interface\nfunction useEventListener<K extends keyof DocumentEventMap>(\n eventName: K,\n handler: (event: DocumentEventMap[K]) => void,\n element: RefObject<Document>,\n options?: boolean | AddEventListenerOptions,\n): void;\n\nfunction useEventListener<\n KW extends keyof WindowEventMap,\n KH extends keyof HTMLElementEventMap,\n T extends HTMLElement | void = void,\n>(\n eventName: KW | KH,\n handler: (\n event: WindowEventMap[KW] | HTMLElementEventMap[KH] | Event,\n ) => void,\n element?: RefObject<T>,\n options?: boolean | AddEventListenerOptions,\n) {\n // Create a ref that stores handler\n const savedHandler = useRef(handler);\n\n useIsomorphicLayoutEffect(() => {\n savedHandler.current = handler;\n }, [handler]);\n\n useEffect(() => {\n // Define the listening target\n const targetElement: T | Window = element?.current || window;\n if (!(targetElement && targetElement.addEventListener)) {\n return;\n }\n\n // Create event listener that calls handler function stored in ref\n const eventListener: typeof handler = event => savedHandler.current(event);\n\n targetElement.addEventListener(eventName, eventListener, options);\n\n // Remove event listener on cleanup\n return () => {\n targetElement.removeEventListener(eventName, eventListener);\n };\n }, [eventName, element, options]);\n}\n\nexport default useEventListener;\n"]}
@@ -1,5 +1,14 @@
1
1
  import { useRef, useEffect } from 'react';
2
2
 
3
- const u=()=>{const e=useRef(!0);return useEffect(()=>{e.current=!1;},[]),e.current};var s=u;
3
+ const useIsMounting = () => {
4
+ const isMounting = useRef(true);
5
+ useEffect(() => {
6
+ isMounting.current = false;
7
+ }, []);
8
+ return isMounting.current;
9
+ };
10
+ var useIsMounting_default = useIsMounting;
4
11
 
5
- export { s as default };
12
+ export { useIsMounting_default as default };
13
+ //# sourceMappingURL=out.js.map
14
+ //# sourceMappingURL=useIsMounting.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../../src/hooks/useIsMounting.ts"],"names":[],"mappings":"AAAA,SAAS,WAAW,cAAc;AAElC,MAAM,gBAAgB,MAAM;AAC1B,QAAM,aAAa,OAAO,IAAI;AAE9B,YAAU,MAAM;AACd,eAAW,UAAU;AAAA,EACvB,GAAG,CAAC,CAAC;AAEL,SAAO,WAAW;AACpB;AAEA,IAAO,wBAAQ","sourcesContent":["import { useEffect, useRef } from 'react';\n\nconst useIsMounting = () => {\n const isMounting = useRef(true);\n\n useEffect(() => {\n isMounting.current = false;\n }, []);\n\n return isMounting.current;\n};\n\nexport default useIsMounting;\n"]}
@@ -1,5 +1,7 @@
1
1
  import { useLayoutEffect, useEffect } from 'react';
2
2
 
3
- var o=typeof window<"u"?useLayoutEffect:useEffect;
3
+ var useIsomorphicLayoutEffect_default = typeof window !== "undefined" ? useLayoutEffect : useEffect;
4
4
 
5
- export { o as default };
5
+ export { useIsomorphicLayoutEffect_default as default };
6
+ //# sourceMappingURL=out.js.map
7
+ //# sourceMappingURL=useIsomorphicLayoutEffect.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../../src/hooks/useIsomorphicLayoutEffect.ts"],"names":[],"mappings":"AAAA,SAAS,WAAW,uBAAuB;AAE3C,IAAO,oCAAQ,OAAO,WAAW,cAAc,kBAAkB","sourcesContent":["import { useEffect, useLayoutEffect } from 'react';\n\nexport default typeof window !== 'undefined' ? useLayoutEffect : useEffect;\n"]}
@@ -1,7 +1,89 @@
1
1
  import { useCallback, useState, useEffect } from 'react';
2
2
  import { useEventCallback } from './useEventCallback';
3
- import g from './useEventListener';
3
+ import useEventListener from './useEventListener';
4
4
 
5
- const h=typeof window>"u",p=(r,t,o={})=>{const{initializeWithValue:l=!0}=o,S=useCallback(e=>o.serializer?o.serializer(e):JSON.stringify(e),[o]),i=useCallback(e=>{if(o.deserializer)return o.deserializer(e);if(e==="undefined")return;const n=t instanceof Function?t():t;let d;try{d=JSON.parse(e);}catch{return n}return d},[o,t]),a=useCallback(()=>{const e=t instanceof Function?t():t;if(h)return e;try{const n=window.localStorage.getItem(r);return n?i(n):e}catch{return e}},[t,r,i]),[w,s]=useState(()=>l?a():t instanceof Function?t():t),T=useEventCallback(e=>{try{const n=e instanceof Function?e(a()):e;window.localStorage.setItem(r,S(n)),s(n),window.dispatchEvent(new StorageEvent("local-storage",{key:r}));}catch{}}),m=useEventCallback(()=>{const e=t instanceof Function?t():t;window.localStorage.removeItem(r),s(e),window.dispatchEvent(new StorageEvent("local-storage",{key:r}));});useEffect(()=>{s(a());},[r]);const u=useCallback(e=>{e.key&&e.key!==r||s(a());},[r,a]);return g("storage",u),g("local-storage",u),[w,T,m]};var I=p;
5
+ const IS_SERVER = typeof window === "undefined";
6
+ const useLocalStorage = (key, initialValue, options = {}) => {
7
+ const { initializeWithValue = true } = options;
8
+ const serializer = useCallback(
9
+ (value) => {
10
+ if (options.serializer) {
11
+ return options.serializer(value);
12
+ }
13
+ return JSON.stringify(value);
14
+ },
15
+ [options]
16
+ );
17
+ const deserializer = useCallback(
18
+ (value) => {
19
+ if (options.deserializer) {
20
+ return options.deserializer(value);
21
+ }
22
+ if (value === "undefined") {
23
+ return void 0;
24
+ }
25
+ const defaultValue = initialValue instanceof Function ? initialValue() : initialValue;
26
+ let parsed;
27
+ try {
28
+ parsed = JSON.parse(value);
29
+ } catch (error) {
30
+ return defaultValue;
31
+ }
32
+ return parsed;
33
+ },
34
+ [options, initialValue]
35
+ );
36
+ const readValue = useCallback(() => {
37
+ const initialValueToUse = initialValue instanceof Function ? initialValue() : initialValue;
38
+ if (IS_SERVER) {
39
+ return initialValueToUse;
40
+ }
41
+ try {
42
+ const raw = window.localStorage.getItem(key);
43
+ return raw ? deserializer(raw) : initialValueToUse;
44
+ } catch (error) {
45
+ return initialValueToUse;
46
+ }
47
+ }, [initialValue, key, deserializer]);
48
+ const [storedValue, setStoredValue] = useState(() => {
49
+ if (initializeWithValue) {
50
+ return readValue();
51
+ }
52
+ return initialValue instanceof Function ? initialValue() : initialValue;
53
+ });
54
+ const setValue = useEventCallback((value) => {
55
+ try {
56
+ const newValue = value instanceof Function ? value(readValue()) : value;
57
+ window.localStorage.setItem(key, serializer(newValue));
58
+ setStoredValue(newValue);
59
+ window.dispatchEvent(new StorageEvent("local-storage", { key }));
60
+ } catch {
61
+ }
62
+ });
63
+ const removeValue = useEventCallback(() => {
64
+ const defaultValue = initialValue instanceof Function ? initialValue() : initialValue;
65
+ window.localStorage.removeItem(key);
66
+ setStoredValue(defaultValue);
67
+ window.dispatchEvent(new StorageEvent("local-storage", { key }));
68
+ });
69
+ useEffect(() => {
70
+ setStoredValue(readValue());
71
+ }, [key]);
72
+ const handleStorageChange = useCallback(
73
+ (event) => {
74
+ if (event.key && event.key !== key) {
75
+ return;
76
+ }
77
+ setStoredValue(readValue());
78
+ },
79
+ [key, readValue]
80
+ );
81
+ useEventListener("storage", handleStorageChange);
82
+ useEventListener("local-storage", handleStorageChange);
83
+ return [storedValue, setValue, removeValue];
84
+ };
85
+ var useLocalStorage_default = useLocalStorage;
6
86
 
7
- export { I as default };
87
+ export { useLocalStorage_default as default };
88
+ //# sourceMappingURL=out.js.map
89
+ //# sourceMappingURL=useLocalStorage.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../../src/hooks/useLocalStorage.ts"],"names":[],"mappings":"AACA,SAAS,aAAa,WAAW,gBAAgB;AAEjD,SAAS,wBAAwB;AACjC,OAAO,sBAAsB;AAc7B,MAAM,YAAY,OAAO,WAAW;AAEpC,MAAM,kBAAkB,CACtB,KACA,cACA,UAAqC,CAAC,MACW;AACjD,QAAM,EAAE,sBAAsB,KAAK,IAAI;AAEvC,QAAM,aAAa;AAAA,IACjB,WAAS;AACP,UAAI,QAAQ,YAAY;AACtB,eAAO,QAAQ,WAAW,KAAK;AAAA,MACjC;AACA,aAAO,KAAK,UAAU,KAAK;AAAA,IAC7B;AAAA,IACA,CAAC,OAAO;AAAA,EACV;AAEA,QAAM,eAAe;AAAA,IACnB,WAAS;AACP,UAAI,QAAQ,cAAc;AACxB,eAAO,QAAQ,aAAa,KAAK;AAAA,MACnC;AACA,UAAI,UAAU,aAAa;AACzB,eAAO;AAAA,MACT;AAEA,YAAM,eACJ,wBAAwB,WAAW,aAAa,IAAI;AAEtD,UAAI;AACJ,UAAI;AACF,iBAAS,KAAK,MAAM,KAAK;AAAA,MAC3B,SAAS,OAAP;AACA,eAAO;AAAA,MACT;AAEA,aAAO;AAAA,IACT;AAAA,IACA,CAAC,SAAS,YAAY;AAAA,EACxB;AAEA,QAAM,YAAY,YAAY,MAAS;AACrC,UAAM,oBACJ,wBAAwB,WAAW,aAAa,IAAI;AAEtD,QAAI,WAAW;AACb,aAAO;AAAA,IACT;AAEA,QAAI;AACF,YAAM,MAAM,OAAO,aAAa,QAAQ,GAAG;AAC3C,aAAO,MAAM,aAAa,GAAG,IAAI;AAAA,IACnC,SAAS,OAAP;AACA,aAAO;AAAA,IACT;AAAA,EACF,GAAG,CAAC,cAAc,KAAK,YAAY,CAAC;AAEpC,QAAM,CAAC,aAAa,cAAc,IAAI,SAAS,MAAM;AACnD,QAAI,qBAAqB;AACvB,aAAO,UAAU;AAAA,IACnB;AACA,WAAO,wBAAwB,WAAW,aAAa,IAAI;AAAA,EAC7D,CAAC;AAED,QAAM,WAAwC,iBAAiB,WAAS;AACtE,QAAI;AACF,YAAM,WAAW,iBAAiB,WAAW,MAAM,UAAU,CAAC,IAAI;AAClE,aAAO,aAAa,QAAQ,KAAK,WAAW,QAAQ,CAAC;AACrD,qBAAe,QAAQ;AACvB,aAAO,cAAc,IAAI,aAAa,iBAAiB,EAAE,IAAI,CAAC,CAAC;AAAA,IACjE,QAAE;AAAA,IAEF;AAAA,EACF,CAAC;AAED,QAAM,cAAc,iBAAiB,MAAM;AACzC,UAAM,eACJ,wBAAwB,WAAW,aAAa,IAAI;AACtD,WAAO,aAAa,WAAW,GAAG;AAClC,mBAAe,YAAY;AAC3B,WAAO,cAAc,IAAI,aAAa,iBAAiB,EAAE,IAAI,CAAC,CAAC;AAAA,EACjE,CAAC;AAED,YAAU,MAAM;AACd,mBAAe,UAAU,CAAC;AAAA,EAE5B,GAAG,CAAC,GAAG,CAAC;AAER,QAAM,sBAAsB;AAAA,IAC1B,CAAC,UAAsC;AACrC,UAAK,MAAuB,OAAQ,MAAuB,QAAQ,KAAK;AACtE;AAAA,MACF;AACA,qBAAe,UAAU,CAAC;AAAA,IAC5B;AAAA,IACA,CAAC,KAAK,SAAS;AAAA,EACjB;AAEA,mBAAiB,WAAW,mBAAmB;AAC/C,mBAAiB,iBAAiB,mBAAmB;AAErD,SAAO,CAAC,aAAa,UAAU,WAAW;AAC5C;AAEA,IAAO,0BAAQ","sourcesContent":["import type { Dispatch, SetStateAction } from 'react';\nimport { useCallback, useEffect, useState } from 'react';\n\nimport { useEventCallback } from './useEventCallback';\nimport useEventListener from './useEventListener';\n\ndeclare global {\n interface WindowEventMap {\n 'local-storage': CustomEvent;\n }\n}\n\ntype UseLocalStorageOptions<T> = {\n serializer?: (value: T) => string;\n deserializer?: (value: string) => T;\n initializeWithValue?: boolean;\n};\n\nconst IS_SERVER = typeof window === 'undefined';\n\nconst useLocalStorage = <T>(\n key: string,\n initialValue: T | (() => T),\n options: UseLocalStorageOptions<T> = {},\n): [T, Dispatch<SetStateAction<T>>, () => void] => {\n const { initializeWithValue = true } = options;\n\n const serializer = useCallback<(value: T) => string>(\n value => {\n if (options.serializer) {\n return options.serializer(value);\n }\n return JSON.stringify(value);\n },\n [options],\n );\n\n const deserializer = useCallback<(value: string) => T>(\n value => {\n if (options.deserializer) {\n return options.deserializer(value);\n }\n if (value === 'undefined') {\n return undefined as unknown as T;\n }\n\n const defaultValue =\n initialValue instanceof Function ? initialValue() : initialValue;\n\n let parsed: unknown;\n try {\n parsed = JSON.parse(value);\n } catch (error) {\n return defaultValue;\n }\n\n return parsed as T;\n },\n [options, initialValue],\n );\n\n const readValue = useCallback((): T => {\n const initialValueToUse =\n initialValue instanceof Function ? initialValue() : initialValue;\n\n if (IS_SERVER) {\n return initialValueToUse;\n }\n\n try {\n const raw = window.localStorage.getItem(key);\n return raw ? deserializer(raw) : initialValueToUse;\n } catch (error) {\n return initialValueToUse;\n }\n }, [initialValue, key, deserializer]);\n\n const [storedValue, setStoredValue] = useState(() => {\n if (initializeWithValue) {\n return readValue();\n }\n return initialValue instanceof Function ? initialValue() : initialValue;\n });\n\n const setValue: Dispatch<SetStateAction<T>> = useEventCallback(value => {\n try {\n const newValue = value instanceof Function ? value(readValue()) : value;\n window.localStorage.setItem(key, serializer(newValue));\n setStoredValue(newValue);\n window.dispatchEvent(new StorageEvent('local-storage', { key }));\n } catch {\n /* empty */\n }\n });\n\n const removeValue = useEventCallback(() => {\n const defaultValue =\n initialValue instanceof Function ? initialValue() : initialValue;\n window.localStorage.removeItem(key);\n setStoredValue(defaultValue);\n window.dispatchEvent(new StorageEvent('local-storage', { key }));\n });\n\n useEffect(() => {\n setStoredValue(readValue());\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, [key]);\n\n const handleStorageChange = useCallback(\n (event: StorageEvent | CustomEvent) => {\n if ((event as StorageEvent).key && (event as StorageEvent).key !== key) {\n return;\n }\n setStoredValue(readValue());\n },\n [key, readValue],\n );\n\n useEventListener('storage', handleStorageChange);\n useEventListener('local-storage', handleStorageChange);\n\n return [storedValue, setValue, removeValue];\n};\n\nexport default useLocalStorage;\n"]}
@@ -1,5 +1,10 @@
1
1
  import { useEffect } from 'react';
2
2
 
3
- const e=o=>{useEffect(o,[]);};var u=e;
3
+ const useMount = (callback) => {
4
+ useEffect(callback, []);
5
+ };
6
+ var useMount_default = useMount;
4
7
 
5
- export { u as default };
8
+ export { useMount_default as default };
9
+ //# sourceMappingURL=out.js.map
10
+ //# sourceMappingURL=useMount.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../../src/hooks/useMount.ts"],"names":[],"mappings":"AAAA,SAAS,iBAAiB;AAsB1B,MAAM,WAAW,CAAC,aAAwC;AAExD,YAAU,UAAU,CAAC,CAAC;AACxB;AAEA,IAAO,mBAAQ","sourcesContent":["import { useEffect } from 'react';\n\n/**\n * UseMount hook runs the callback only once when the component is mounted.\n *\n * @param callback - The callback to run when the component is mounted. Returns a cleanup function to run at the end of the component lifecycle.\n * @example\n * Here's an example with negative numbers:\n * ```\n * useMount(() => {\n * document.addEventListener('resize', () => {\n * // do something\n * });\n *\n * return () => {\n * document.removeEventListener('resize', () => {\n * // cleanup event listener\n * });\n * };\n * });\n * ```\n */\nconst useMount = (callback: () => void | (() => void)) => {\n // eslint-disable-next-line react-hooks/exhaustive-deps\n useEffect(callback, []);\n};\n\nexport default useMount;\n"]}
@@ -1,5 +1,16 @@
1
- import s from './useEventListener';
1
+ import useEventListener from './useEventListener';
2
2
 
3
- const u=(n,o,r="mousedown")=>{s(r,e=>{const t=n?.current;!t||t.contains(e.target)||o(e);});};var c=u;
3
+ const useOnClickOutside = (ref, handler, mouseEvent = "mousedown") => {
4
+ useEventListener(mouseEvent, (event) => {
5
+ const el = ref?.current;
6
+ if (!el || el.contains(event.target)) {
7
+ return;
8
+ }
9
+ handler(event);
10
+ });
11
+ };
12
+ var useOnClickOutside_default = useOnClickOutside;
4
13
 
5
- export { c as default };
14
+ export { useOnClickOutside_default as default };
15
+ //# sourceMappingURL=out.js.map
16
+ //# sourceMappingURL=useOnClickOutside.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../../src/hooks/useOnClickOutside.ts"],"names":[],"mappings":"AAEA,OAAO,sBAAsB;AAI7B,MAAM,oBAAoB,CACxB,KACA,SACA,aAAsC,gBACnC;AACH,mBAAiB,YAAY,WAAS;AACpC,UAAM,KAAK,KAAK;AAGhB,QAAI,CAAC,MAAM,GAAG,SAAS,MAAM,MAAc,GAAG;AAC5C;AAAA,IACF;AAEA,YAAQ,KAAK;AAAA,EACf,CAAC;AACH;AAEA,IAAO,4BAAQ","sourcesContent":["import { RefObject } from 'react';\n\nimport useEventListener from './useEventListener';\n\ntype Handler = (event: MouseEvent) => void;\n\nconst useOnClickOutside = <T extends HTMLElement = HTMLElement>(\n ref: RefObject<T>,\n handler: Handler,\n mouseEvent: 'mousedown' | 'mouseup' = 'mousedown',\n) => {\n useEventListener(mouseEvent, event => {\n const el = ref?.current;\n\n // Do nothing if clicking ref's element or descendent elements\n if (!el || el.contains(event.target as Node)) {\n return;\n }\n\n handler(event);\n });\n};\n\nexport default useOnClickOutside;\n"]}
@@ -1,5 +1,41 @@
1
1
  import { useState } from 'react';
2
2
 
3
- function s({items:r,itemsPerPage:n}){const[t,a]=useState(1),o=Math.ceil(r.length/n),g=r.slice((t-1)*n,t*n);return {currentPage:t,totalPages:o,currentItems:g,goToPage:e=>{e>0&&e<=o&&a(e);},nextPage:()=>{t<o&&a(e=>e+1);},prevPage:()=>{t>1&&a(e=>e-1);}}}var f=s;
3
+ function usePagination({
4
+ items,
5
+ itemsPerPage
6
+ }) {
7
+ const [currentPage, setCurrentPage] = useState(1);
8
+ const totalPages = Math.ceil(items.length / itemsPerPage);
9
+ const currentItems = items.slice(
10
+ (currentPage - 1) * itemsPerPage,
11
+ currentPage * itemsPerPage
12
+ );
13
+ const goToPage = (page) => {
14
+ if (page > 0 && page <= totalPages) {
15
+ setCurrentPage(page);
16
+ }
17
+ };
18
+ const nextPage = () => {
19
+ if (currentPage < totalPages) {
20
+ setCurrentPage((prevPage2) => prevPage2 + 1);
21
+ }
22
+ };
23
+ const prevPage = () => {
24
+ if (currentPage > 1) {
25
+ setCurrentPage((prevPage2) => prevPage2 - 1);
26
+ }
27
+ };
28
+ return {
29
+ currentPage,
30
+ totalPages,
31
+ currentItems,
32
+ goToPage,
33
+ nextPage,
34
+ prevPage
35
+ };
36
+ }
37
+ var usePagination_default = usePagination;
4
38
 
5
- export { f as default };
39
+ export { usePagination_default as default };
40
+ //# sourceMappingURL=out.js.map
41
+ //# sourceMappingURL=usePagination.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../../src/hooks/usePagination.ts"],"names":["prevPage"],"mappings":"AAAA,SAAS,gBAAgB;AAgBzB,SAAS,cAAiB;AAAA,EACxB;AAAA,EACA;AACF,GAAkD;AAChD,QAAM,CAAC,aAAa,cAAc,IAAI,SAAS,CAAC;AAEhD,QAAM,aAAa,KAAK,KAAK,MAAM,SAAS,YAAY;AAExD,QAAM,eAAe,MAAM;AAAA,KACxB,cAAc,KAAK;AAAA,IACpB,cAAc;AAAA,EAChB;AAEA,QAAM,WAAW,CAAC,SAAiB;AACjC,QAAI,OAAO,KAAK,QAAQ,YAAY;AAClC,qBAAe,IAAI;AAAA,IACrB;AAAA,EACF;AAEA,QAAM,WAAW,MAAM;AACrB,QAAI,cAAc,YAAY;AAC5B,qBAAe,CAAAA,cAAYA,YAAW,CAAC;AAAA,IACzC;AAAA,EACF;AAEA,QAAM,WAAW,MAAM;AACrB,QAAI,cAAc,GAAG;AACnB,qBAAe,CAAAA,cAAYA,YAAW,CAAC;AAAA,IACzC;AAAA,EACF;AAEA,SAAO;AAAA,IACL;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,EACF;AACF;AAEA,IAAO,wBAAQ","sourcesContent":["import { useState } from 'react';\n\ninterface UsePaginationProps<T> {\n items: T[];\n itemsPerPage: number;\n}\n\ninterface UsePaginationResult<T> {\n currentPage: number;\n totalPages: number;\n currentItems: T[];\n goToPage: (page: number) => void;\n nextPage: () => void;\n prevPage: () => void;\n}\n\nfunction usePagination<T>({\n items,\n itemsPerPage,\n}: UsePaginationProps<T>): UsePaginationResult<T> {\n const [currentPage, setCurrentPage] = useState(1);\n\n const totalPages = Math.ceil(items.length / itemsPerPage);\n\n const currentItems = items.slice(\n (currentPage - 1) * itemsPerPage,\n currentPage * itemsPerPage,\n );\n\n const goToPage = (page: number) => {\n if (page > 0 && page <= totalPages) {\n setCurrentPage(page);\n }\n };\n\n const nextPage = () => {\n if (currentPage < totalPages) {\n setCurrentPage(prevPage => prevPage + 1);\n }\n };\n\n const prevPage = () => {\n if (currentPage > 1) {\n setCurrentPage(prevPage => prevPage - 1);\n }\n };\n\n return {\n currentPage,\n totalPages,\n currentItems,\n goToPage,\n nextPage,\n prevPage,\n };\n}\n\nexport default usePagination;\n"]}
@@ -1,5 +1,22 @@
1
1
  import { useState, useCallback } from 'react';
2
2
 
3
- const p=()=>{const[t,e]=useState(null),o=useCallback(s=>{e(s.currentTarget);},[]),l=useCallback(()=>{e(null);},[]);return {open:t,onOpen:o,onClose:l,setOpen:e}};var v=p;
3
+ const usePopover = () => {
4
+ const [open, setOpen] = useState(null);
5
+ const onOpen = useCallback((event) => {
6
+ setOpen(event.currentTarget);
7
+ }, []);
8
+ const onClose = useCallback(() => {
9
+ setOpen(null);
10
+ }, []);
11
+ return {
12
+ open,
13
+ onOpen,
14
+ onClose,
15
+ setOpen
16
+ };
17
+ };
18
+ var usePopover_default = usePopover;
4
19
 
5
- export { v as default };
20
+ export { usePopover_default as default };
21
+ //# sourceMappingURL=out.js.map
22
+ //# sourceMappingURL=usePopover.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../../src/hooks/usePopover.ts"],"names":[],"mappings":"AAAA;AAAA,EAIE;AAAA,EACA;AAAA,OACK;AASP,MAAM,aAAa,MAAuB;AACxC,QAAM,CAAC,MAAM,OAAO,IAAI,SAA6B,IAAI;AAEzD,QAAM,SAAS,YAAY,CAAC,UAAmC;AAC7D,YAAQ,MAAM,aAAa;AAAA,EAC7B,GAAG,CAAC,CAAC;AAEL,QAAM,UAAU,YAAY,MAAM;AAChC,YAAQ,IAAI;AAAA,EACd,GAAG,CAAC,CAAC;AAEL,SAAO;AAAA,IACL;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,EACF;AACF;AAEA,IAAO,qBAAQ","sourcesContent":["import {\n Dispatch,\n MouseEvent,\n SetStateAction,\n useCallback,\n useState,\n} from 'react';\n\ninterface usePopoverProps {\n onClose: VoidFunction;\n open: HTMLElement | null;\n onOpen: (event: MouseEvent<HTMLElement>) => void;\n setOpen: Dispatch<SetStateAction<HTMLElement | null>>;\n}\n\nconst usePopover = (): usePopoverProps => {\n const [open, setOpen] = useState<HTMLElement | null>(null);\n\n const onOpen = useCallback((event: MouseEvent<HTMLElement>) => {\n setOpen(event.currentTarget);\n }, []);\n\n const onClose = useCallback(() => {\n setOpen(null);\n }, []);\n\n return {\n open,\n onOpen,\n onClose,\n setOpen,\n };\n};\n\nexport default usePopover;\n"]}
@@ -1,6 +1,35 @@
1
1
  import { useTheme } from '@mui/material/styles';
2
- import o from '@mui/material/useMediaQuery';
2
+ import useMediaQuery from '@mui/material/useMediaQuery';
3
3
 
4
- const l=(n,t,r)=>{const e=useTheme(),a=o(e.breakpoints.up(t)),s=o(e.breakpoints.down(t)),p=o(e.breakpoints.between(t,r)),i=o(e.breakpoints.only(t));return n==="up"?a:n==="down"?s:n==="between"?p:i};function y(){const n=useTheme();return [...n.breakpoints.keys].reverse().reduce((r,e)=>{const a=o(n.breakpoints.up(e));return !r&&a?e:r},null)||"xs"}var b=l;
4
+ const useResponsive = (query, start, end) => {
5
+ const theme = useTheme();
6
+ const mediaUp = useMediaQuery(theme.breakpoints.up(start));
7
+ const mediaDown = useMediaQuery(theme.breakpoints.down(start));
8
+ const mediaBetween = useMediaQuery(
9
+ theme.breakpoints.between(start, end)
10
+ );
11
+ const mediaOnly = useMediaQuery(theme.breakpoints.only(start));
12
+ if (query === "up") {
13
+ return mediaUp;
14
+ }
15
+ if (query === "down") {
16
+ return mediaDown;
17
+ }
18
+ if (query === "between") {
19
+ return mediaBetween;
20
+ }
21
+ return mediaOnly;
22
+ };
23
+ function useWidth() {
24
+ const theme = useTheme();
25
+ const keys = [...theme.breakpoints.keys].reverse();
26
+ return keys.reduce((output, key) => {
27
+ const matches = useMediaQuery(theme.breakpoints.up(key));
28
+ return !output && matches ? key : output;
29
+ }, null) || "xs";
30
+ }
31
+ var useResponsive_default = useResponsive;
5
32
 
6
- export { b as default, y as useWidth };
33
+ export { useResponsive_default as default, useWidth };
34
+ //# sourceMappingURL=out.js.map
35
+ //# sourceMappingURL=useResponsive.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../../src/hooks/useResponsive.ts"],"names":[],"mappings":"AAAA,SAAqB,gBAAgB;AACrC,OAAO,mBAAmB;AAQ1B,MAAM,gBAAgB,CACpB,OACA,OACA,QACe;AACf,QAAM,QAAQ,SAAS;AAEvB,QAAM,UAAU,cAAc,MAAM,YAAY,GAAG,KAAc,CAAC;AAElE,QAAM,YAAY,cAAc,MAAM,YAAY,KAAK,KAAc,CAAC;AAEtE,QAAM,eAAe;AAAA,IACnB,MAAM,YAAY,QAAQ,OAAgB,GAAY;AAAA,EACxD;AAEA,QAAM,YAAY,cAAc,MAAM,YAAY,KAAK,KAAmB,CAAC;AAE3E,MAAI,UAAU,MAAM;AAClB,WAAO;AAAA,EACT;AAEA,MAAI,UAAU,QAAQ;AACpB,WAAO;AAAA,EACT;AAEA,MAAI,UAAU,WAAW;AACvB,WAAO;AAAA,EACT;AAEA,SAAO;AACT;AAIO,SAAS,WAAW;AACzB,QAAM,QAAQ,SAAS;AAEvB,QAAM,OAAO,CAAC,GAAG,MAAM,YAAY,IAAI,EAAE,QAAQ;AAEjD,SACE,KAAK,OAAO,CAAC,QAA0B,QAAoB;AAEzD,UAAM,UAAU,cAAc,MAAM,YAAY,GAAG,GAAG,CAAC;AAEvD,WAAO,CAAC,UAAU,UAAU,MAAM;AAAA,EACpC,GAAG,IAAI,KAAK;AAEhB;AAEA,IAAO,wBAAQ","sourcesContent":["import { Breakpoint, useTheme } from '@mui/material/styles';\nimport useMediaQuery from '@mui/material/useMediaQuery';\n\ntype ReturnType = boolean;\n\ntype Query = 'up' | 'down' | 'between' | 'only';\n\ntype Value = Breakpoint | number;\n\nconst useResponsive = (\n query: Query,\n start?: Value,\n end?: Value,\n): ReturnType => {\n const theme = useTheme();\n\n const mediaUp = useMediaQuery(theme.breakpoints.up(start as Value));\n\n const mediaDown = useMediaQuery(theme.breakpoints.down(start as Value));\n\n const mediaBetween = useMediaQuery(\n theme.breakpoints.between(start as Value, end as Value),\n );\n\n const mediaOnly = useMediaQuery(theme.breakpoints.only(start as Breakpoint));\n\n if (query === 'up') {\n return mediaUp;\n }\n\n if (query === 'down') {\n return mediaDown;\n }\n\n if (query === 'between') {\n return mediaBetween;\n }\n\n return mediaOnly;\n};\n\ntype BreakpointOrNull = Breakpoint | null;\n\nexport function useWidth() {\n const theme = useTheme();\n\n const keys = [...theme.breakpoints.keys].reverse();\n\n return (\n keys.reduce((output: BreakpointOrNull, key: Breakpoint) => {\n // eslint-disable-next-line react-hooks/rules-of-hooks\n const matches = useMediaQuery(theme.breakpoints.up(key));\n\n return !output && matches ? key : output;\n }, null) || 'xs'\n );\n}\n\nexport default useResponsive;\n"]}