@mantine/hooks 9.1.1 → 9.2.1

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 (194) hide show
  1. package/cjs/index.cjs +2 -0
  2. package/cjs/use-click-outside/use-click-outside.cjs.map +1 -1
  3. package/cjs/use-clipboard/use-clipboard.cjs.map +1 -1
  4. package/cjs/use-collapse/use-collapse.cjs.map +1 -1
  5. package/cjs/use-collapse/use-horizontal-collapse.cjs.map +1 -1
  6. package/cjs/use-color-scheme/use-color-scheme.cjs.map +1 -1
  7. package/cjs/use-counter/use-counter.cjs.map +1 -1
  8. package/cjs/use-debounced-callback/use-debounced-callback.cjs.map +1 -1
  9. package/cjs/use-debounced-state/use-debounced-state.cjs.map +1 -1
  10. package/cjs/use-debounced-value/use-debounced-value.cjs +3 -0
  11. package/cjs/use-debounced-value/use-debounced-value.cjs.map +1 -1
  12. package/cjs/use-did-update/use-did-update.cjs.map +1 -1
  13. package/cjs/use-disclosure/use-disclosure.cjs.map +1 -1
  14. package/cjs/use-document-title/use-document-title.cjs.map +1 -1
  15. package/cjs/use-document-visibility/use-document-visibility.cjs.map +1 -1
  16. package/cjs/use-drag/use-drag.cjs +266 -0
  17. package/cjs/use-drag/use-drag.cjs.map +1 -0
  18. package/cjs/use-event-listener/use-event-listener.cjs.map +1 -1
  19. package/cjs/use-eye-dropper/use-eye-dropper.cjs.map +1 -1
  20. package/cjs/use-favicon/use-favicon.cjs.map +1 -1
  21. package/cjs/use-fetch/use-fetch.cjs.map +1 -1
  22. package/cjs/use-file-dialog/use-file-dialog.cjs.map +1 -1
  23. package/cjs/use-floating-window/use-floating-window.cjs.map +1 -1
  24. package/cjs/use-focus-return/use-focus-return.cjs.map +1 -1
  25. package/cjs/use-focus-trap/scope-tab.cjs.map +1 -1
  26. package/cjs/use-focus-trap/tabbable.cjs.map +1 -1
  27. package/cjs/use-focus-trap/use-focus-trap.cjs.map +1 -1
  28. package/cjs/use-focus-within/use-focus-within.cjs.map +1 -1
  29. package/cjs/use-force-update/use-force-update.cjs.map +1 -1
  30. package/cjs/use-fullscreen/use-fullscreen.cjs.map +1 -1
  31. package/cjs/use-hash/use-hash.cjs.map +1 -1
  32. package/cjs/use-headroom/use-headroom.cjs.map +1 -1
  33. package/cjs/use-hotkeys/parse-hotkey.cjs.map +1 -1
  34. package/cjs/use-hotkeys/use-hotkeys.cjs.map +1 -1
  35. package/cjs/use-hover/use-hover.cjs.map +1 -1
  36. package/cjs/use-id/use-id.cjs.map +1 -1
  37. package/cjs/use-idle/use-idle.cjs.map +1 -1
  38. package/cjs/use-in-viewport/use-in-viewport.cjs.map +1 -1
  39. package/cjs/use-input-state/use-input-state.cjs.map +1 -1
  40. package/cjs/use-intersection/use-intersection.cjs.map +1 -1
  41. package/cjs/use-interval/use-interval.cjs.map +1 -1
  42. package/cjs/use-is-first-render/use-is-first-render.cjs.map +1 -1
  43. package/cjs/use-list-state/use-list-state.cjs.map +1 -1
  44. package/cjs/use-local-storage/create-storage.cjs.map +1 -1
  45. package/cjs/use-local-storage/use-local-storage.cjs.map +1 -1
  46. package/cjs/use-logger/use-logger.cjs.map +1 -1
  47. package/cjs/use-long-press/use-long-press.cjs.map +1 -1
  48. package/cjs/use-map/use-map.cjs.map +1 -1
  49. package/cjs/use-mask/use-mask.cjs.map +1 -1
  50. package/cjs/use-media-query/use-media-query.cjs.map +1 -1
  51. package/cjs/use-merged-ref/use-merged-ref.cjs.map +1 -1
  52. package/cjs/use-mounted/use-mounted.cjs.map +1 -1
  53. package/cjs/use-mouse/use-mouse.cjs.map +1 -1
  54. package/cjs/use-move/use-move.cjs.map +1 -1
  55. package/cjs/use-mutation-observer/use-mutation-observer.cjs.map +1 -1
  56. package/cjs/use-network/use-network.cjs.map +1 -1
  57. package/cjs/use-orientation/use-orientation.cjs.map +1 -1
  58. package/cjs/use-os/use-os.cjs.map +1 -1
  59. package/cjs/use-page-leave/use-page-leave.cjs.map +1 -1
  60. package/cjs/use-pagination/use-pagination.cjs.map +1 -1
  61. package/cjs/use-previous/use-previous.cjs.map +1 -1
  62. package/cjs/use-queue/use-queue.cjs.map +1 -1
  63. package/cjs/use-radial-move/use-radial-move.cjs +12 -4
  64. package/cjs/use-radial-move/use-radial-move.cjs.map +1 -1
  65. package/cjs/use-reduced-motion/use-reduced-motion.cjs.map +1 -1
  66. package/cjs/use-resize-observer/use-resize-observer.cjs.map +1 -1
  67. package/cjs/use-roving-index/use-roving-index.cjs.map +1 -1
  68. package/cjs/use-scroll-direction/use-scroll-direction.cjs.map +1 -1
  69. package/cjs/use-scroll-into-view/use-scroll-into-view.cjs.map +1 -1
  70. package/cjs/use-scroll-spy/use-scroll-spy.cjs.map +1 -1
  71. package/cjs/use-scroller/use-scroller.cjs.map +1 -1
  72. package/cjs/use-selection/use-selection.cjs.map +1 -1
  73. package/cjs/use-session-storage/use-session-storage.cjs.map +1 -1
  74. package/cjs/use-set/use-set.cjs.map +1 -1
  75. package/cjs/use-set-state/use-set-state.cjs.map +1 -1
  76. package/cjs/use-shallow-effect/use-shallow-effect.cjs.map +1 -1
  77. package/cjs/use-state-history/use-state-history.cjs.map +1 -1
  78. package/cjs/use-text-selection/use-text-selection.cjs.map +1 -1
  79. package/cjs/use-throttled-callback/use-throttled-callback.cjs.map +1 -1
  80. package/cjs/use-throttled-state/use-throttled-state.cjs.map +1 -1
  81. package/cjs/use-throttled-value/use-throttled-value.cjs.map +1 -1
  82. package/cjs/use-timeout/use-timeout.cjs.map +1 -1
  83. package/cjs/use-toggle/use-toggle.cjs.map +1 -1
  84. package/cjs/use-uncontrolled/use-uncontrolled.cjs.map +1 -1
  85. package/cjs/use-validated-state/use-validated-state.cjs.map +1 -1
  86. package/cjs/use-viewport-size/use-viewport-size.cjs.map +1 -1
  87. package/cjs/use-window-event/use-window-event.cjs.map +1 -1
  88. package/cjs/use-window-scroll/use-window-scroll.cjs.map +1 -1
  89. package/cjs/utils/clamp/clamp.cjs.map +1 -1
  90. package/cjs/utils/lower-first/lower-first.cjs.map +1 -1
  91. package/cjs/utils/random-id/random-id.cjs.map +1 -1
  92. package/cjs/utils/range/range.cjs.map +1 -1
  93. package/cjs/utils/shallow-equal/shallow-equal.cjs.map +1 -1
  94. package/cjs/utils/upper-first/upper-first.cjs.map +1 -1
  95. package/cjs/utils/use-callback-ref/use-callback-ref.cjs.map +1 -1
  96. package/esm/index.mjs +2 -1
  97. package/esm/use-click-outside/use-click-outside.mjs.map +1 -1
  98. package/esm/use-clipboard/use-clipboard.mjs.map +1 -1
  99. package/esm/use-collapse/use-collapse.mjs.map +1 -1
  100. package/esm/use-collapse/use-horizontal-collapse.mjs.map +1 -1
  101. package/esm/use-color-scheme/use-color-scheme.mjs.map +1 -1
  102. package/esm/use-counter/use-counter.mjs.map +1 -1
  103. package/esm/use-debounced-callback/use-debounced-callback.mjs.map +1 -1
  104. package/esm/use-debounced-state/use-debounced-state.mjs.map +1 -1
  105. package/esm/use-debounced-value/use-debounced-value.mjs +3 -0
  106. package/esm/use-debounced-value/use-debounced-value.mjs.map +1 -1
  107. package/esm/use-did-update/use-did-update.mjs.map +1 -1
  108. package/esm/use-disclosure/use-disclosure.mjs.map +1 -1
  109. package/esm/use-document-title/use-document-title.mjs.map +1 -1
  110. package/esm/use-document-visibility/use-document-visibility.mjs.map +1 -1
  111. package/esm/use-drag/use-drag.mjs +266 -0
  112. package/esm/use-drag/use-drag.mjs.map +1 -0
  113. package/esm/use-event-listener/use-event-listener.mjs.map +1 -1
  114. package/esm/use-eye-dropper/use-eye-dropper.mjs.map +1 -1
  115. package/esm/use-favicon/use-favicon.mjs.map +1 -1
  116. package/esm/use-fetch/use-fetch.mjs.map +1 -1
  117. package/esm/use-file-dialog/use-file-dialog.mjs.map +1 -1
  118. package/esm/use-floating-window/use-floating-window.mjs.map +1 -1
  119. package/esm/use-focus-return/use-focus-return.mjs.map +1 -1
  120. package/esm/use-focus-trap/scope-tab.mjs.map +1 -1
  121. package/esm/use-focus-trap/tabbable.mjs.map +1 -1
  122. package/esm/use-focus-trap/use-focus-trap.mjs.map +1 -1
  123. package/esm/use-focus-within/use-focus-within.mjs.map +1 -1
  124. package/esm/use-force-update/use-force-update.mjs.map +1 -1
  125. package/esm/use-fullscreen/use-fullscreen.mjs.map +1 -1
  126. package/esm/use-hash/use-hash.mjs.map +1 -1
  127. package/esm/use-headroom/use-headroom.mjs.map +1 -1
  128. package/esm/use-hotkeys/parse-hotkey.mjs.map +1 -1
  129. package/esm/use-hotkeys/use-hotkeys.mjs.map +1 -1
  130. package/esm/use-hover/use-hover.mjs.map +1 -1
  131. package/esm/use-id/use-id.mjs.map +1 -1
  132. package/esm/use-idle/use-idle.mjs.map +1 -1
  133. package/esm/use-in-viewport/use-in-viewport.mjs.map +1 -1
  134. package/esm/use-input-state/use-input-state.mjs.map +1 -1
  135. package/esm/use-intersection/use-intersection.mjs.map +1 -1
  136. package/esm/use-interval/use-interval.mjs.map +1 -1
  137. package/esm/use-is-first-render/use-is-first-render.mjs.map +1 -1
  138. package/esm/use-list-state/use-list-state.mjs.map +1 -1
  139. package/esm/use-local-storage/create-storage.mjs.map +1 -1
  140. package/esm/use-local-storage/use-local-storage.mjs.map +1 -1
  141. package/esm/use-logger/use-logger.mjs.map +1 -1
  142. package/esm/use-long-press/use-long-press.mjs.map +1 -1
  143. package/esm/use-map/use-map.mjs.map +1 -1
  144. package/esm/use-mask/use-mask.mjs.map +1 -1
  145. package/esm/use-media-query/use-media-query.mjs.map +1 -1
  146. package/esm/use-merged-ref/use-merged-ref.mjs.map +1 -1
  147. package/esm/use-mounted/use-mounted.mjs.map +1 -1
  148. package/esm/use-mouse/use-mouse.mjs.map +1 -1
  149. package/esm/use-move/use-move.mjs.map +1 -1
  150. package/esm/use-mutation-observer/use-mutation-observer.mjs.map +1 -1
  151. package/esm/use-network/use-network.mjs.map +1 -1
  152. package/esm/use-orientation/use-orientation.mjs.map +1 -1
  153. package/esm/use-os/use-os.mjs.map +1 -1
  154. package/esm/use-page-leave/use-page-leave.mjs.map +1 -1
  155. package/esm/use-pagination/use-pagination.mjs.map +1 -1
  156. package/esm/use-previous/use-previous.mjs.map +1 -1
  157. package/esm/use-queue/use-queue.mjs.map +1 -1
  158. package/esm/use-radial-move/use-radial-move.mjs +13 -5
  159. package/esm/use-radial-move/use-radial-move.mjs.map +1 -1
  160. package/esm/use-reduced-motion/use-reduced-motion.mjs.map +1 -1
  161. package/esm/use-resize-observer/use-resize-observer.mjs.map +1 -1
  162. package/esm/use-roving-index/use-roving-index.mjs.map +1 -1
  163. package/esm/use-scroll-direction/use-scroll-direction.mjs.map +1 -1
  164. package/esm/use-scroll-into-view/use-scroll-into-view.mjs.map +1 -1
  165. package/esm/use-scroll-spy/use-scroll-spy.mjs.map +1 -1
  166. package/esm/use-scroller/use-scroller.mjs.map +1 -1
  167. package/esm/use-selection/use-selection.mjs.map +1 -1
  168. package/esm/use-session-storage/use-session-storage.mjs.map +1 -1
  169. package/esm/use-set/use-set.mjs.map +1 -1
  170. package/esm/use-set-state/use-set-state.mjs.map +1 -1
  171. package/esm/use-shallow-effect/use-shallow-effect.mjs.map +1 -1
  172. package/esm/use-state-history/use-state-history.mjs.map +1 -1
  173. package/esm/use-text-selection/use-text-selection.mjs.map +1 -1
  174. package/esm/use-throttled-callback/use-throttled-callback.mjs.map +1 -1
  175. package/esm/use-throttled-state/use-throttled-state.mjs.map +1 -1
  176. package/esm/use-throttled-value/use-throttled-value.mjs.map +1 -1
  177. package/esm/use-timeout/use-timeout.mjs.map +1 -1
  178. package/esm/use-toggle/use-toggle.mjs.map +1 -1
  179. package/esm/use-uncontrolled/use-uncontrolled.mjs.map +1 -1
  180. package/esm/use-validated-state/use-validated-state.mjs.map +1 -1
  181. package/esm/use-viewport-size/use-viewport-size.mjs.map +1 -1
  182. package/esm/use-window-event/use-window-event.mjs.map +1 -1
  183. package/esm/use-window-scroll/use-window-scroll.mjs.map +1 -1
  184. package/esm/utils/clamp/clamp.mjs.map +1 -1
  185. package/esm/utils/lower-first/lower-first.mjs.map +1 -1
  186. package/esm/utils/random-id/random-id.mjs.map +1 -1
  187. package/esm/utils/range/range.mjs.map +1 -1
  188. package/esm/utils/shallow-equal/shallow-equal.mjs.map +1 -1
  189. package/esm/utils/upper-first/upper-first.mjs.map +1 -1
  190. package/esm/utils/use-callback-ref/use-callback-ref.mjs.map +1 -1
  191. package/lib/index.d.mts +2 -0
  192. package/lib/index.d.ts +2 -0
  193. package/lib/use-drag/use-drag.d.ts +60 -0
  194. package/package.json +1 -1
package/lib/index.d.ts CHANGED
@@ -79,6 +79,7 @@ export { useCollapse } from './use-collapse/use-collapse.js';
79
79
  export { useHorizontalCollapse } from './use-collapse/use-horizontal-collapse.js';
80
80
  export { useMask, formatMask, unformatMask, isMaskComplete, generatePattern, } from './use-mask/use-mask.js';
81
81
  export { useRovingIndex } from './use-roving-index/use-roving-index.js';
82
+ export { useDrag } from './use-drag/use-drag.js';
82
83
  export type { UseMediaQueryOptions } from './use-media-query/use-media-query';
83
84
  export type { UseClipboardInput as UseClipboardOptions, UseClipboardReturnValue, } from './use-clipboard/use-clipboard';
84
85
  export type { UseColorSchemeValue } from './use-color-scheme/use-color-scheme';
@@ -130,3 +131,4 @@ export type { UseCollapseInput, UseCollapseReturnValue, UseCollapseState, } from
130
131
  export type { UseHorizontalCollapseInput, UseHorizontalCollapseReturnValue, UseHorizontalCollapseState, } from './use-collapse/use-horizontal-collapse';
131
132
  export type { UseMaskOptions, UseMaskReturnValue, MaskState } from './use-mask/use-mask';
132
133
  export type { UseRovingIndexInput, UseRovingIndexGetItemPropsInput, UseRovingIndexReturnValue, } from './use-roving-index/use-roving-index';
134
+ export type { UseDragState, UseDragOptions, UseDragReturnValue } from './use-drag/use-drag';
@@ -0,0 +1,60 @@
1
+ type Vector2 = [number, number];
2
+ export interface UseDragState {
3
+ /** Current pointer position [x, y] */
4
+ xy: Vector2;
5
+ /** Position where the gesture started [x, y] */
6
+ initial: Vector2;
7
+ /** Displacement from start [x, y], respects axis constraint */
8
+ movement: Vector2;
9
+ /** Change since previous event [x, y] */
10
+ delta: Vector2;
11
+ /** Absolute distance per axis [x, y] */
12
+ distance: Vector2;
13
+ /** Movement direction per axis: -1, 0, or 1 */
14
+ direction: Vector2;
15
+ /** Speed per axis in px/ms */
16
+ velocity: Vector2;
17
+ /** Time since drag started in ms */
18
+ elapsedTime: number;
19
+ /** `true` on the first handler call after the threshold is met */
20
+ first: boolean;
21
+ /** `true` on the last handler call (pointer released or canceled) */
22
+ last: boolean;
23
+ /** `true` while the gesture is ongoing */
24
+ active: boolean;
25
+ /** `true` when the gesture qualifies as a tap (requires `filterTaps: true`) */
26
+ tap: boolean;
27
+ /** `true` when the gesture was interrupted by a `pointercancel` event */
28
+ canceled: boolean;
29
+ /** Function to programmatically cancel the current gesture */
30
+ cancel: () => void;
31
+ /** The source `PointerEvent` */
32
+ event: PointerEvent;
33
+ }
34
+ export interface UseDragOptions {
35
+ /** Constrain movement to a specific axis. `'lock'` locks to whichever axis has more movement after `axisThreshold` is exceeded. */
36
+ axis?: 'x' | 'y' | 'lock';
37
+ /** Movement in px required to determine axis when `axis` is `'lock'`, `1` by default */
38
+ axisThreshold?: number;
39
+ /** When `true`, the last state includes `tap: true` when total distance is below `tapThreshold`, `false` by default */
40
+ filterTaps?: boolean;
41
+ /** Max displacement in px to still be considered a tap, `3` by default */
42
+ tapThreshold?: number;
43
+ /** Minimum displacement in px before the drag activates. Can be a number (both axes) or `[x, y]`. `0` by default */
44
+ threshold?: number | Vector2;
45
+ /** Enable or disable the hook, `true` by default */
46
+ enabled?: boolean;
47
+ }
48
+ export interface UseDragReturnValue<T extends HTMLElement = any> {
49
+ /** Ref callback to attach to the draggable element */
50
+ ref: React.RefCallback<T | null>;
51
+ /** `true` while the element is being dragged */
52
+ active: boolean;
53
+ }
54
+ export declare function useDrag<T extends HTMLElement = any>(handler: (state: UseDragState) => void, options?: UseDragOptions): UseDragReturnValue<T>;
55
+ export declare namespace useDrag {
56
+ type State = UseDragState;
57
+ type Options = UseDragOptions;
58
+ type ReturnValue<T extends HTMLElement = any> = UseDragReturnValue<T>;
59
+ }
60
+ export {};
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@mantine/hooks",
3
- "version": "9.1.1",
3
+ "version": "9.2.1",
4
4
  "description": "A collection of 50+ hooks for state and UI management",
5
5
  "homepage": "https://mantine.dev",
6
6
  "license": "MIT",