@cites/react-hooks 0.0.4 → 0.0.5
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.
- package/dist/core/useControllableState.d.ts +36 -0
- package/dist/core/useControllableState.d.ts.map +1 -0
- package/dist/core/useControllableState.js +29 -0
- package/dist/core/useControllableState.js.map +1 -0
- package/dist/core/useDragGesture.d.ts +4 -2
- package/dist/core/useDragGesture.d.ts.map +1 -1
- package/dist/core/useDragGesture.js +13 -7
- package/dist/core/useDragGesture.js.map +1 -1
- package/dist/core/useDraggable.d.ts +7 -5
- package/dist/core/useDraggable.d.ts.map +1 -1
- package/dist/core/useDraggable.js +9 -11
- package/dist/core/useDraggable.js.map +1 -1
- package/dist/core/useResizable.d.ts +14 -11
- package/dist/core/useResizable.d.ts.map +1 -1
- package/dist/core/useResizable.js +68 -58
- package/dist/core/useResizable.js.map +1 -1
- package/dist/core/useSlider.d.ts +9 -5
- package/dist/core/useSlider.d.ts.map +1 -1
- package/dist/core/useSlider.js +5 -11
- package/dist/core/useSlider.js.map +1 -1
- package/dist/index.d.ts +1 -0
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +1 -0
- package/dist/index.js.map +1 -1
- package/package.json +5 -1
|
@@ -0,0 +1,36 @@
|
|
|
1
|
+
type ControlKeys = {
|
|
2
|
+
value: string;
|
|
3
|
+
defaultValue: string;
|
|
4
|
+
onValueChange: string;
|
|
5
|
+
};
|
|
6
|
+
type ControlledProps<T, K extends ControlKeys> = {
|
|
7
|
+
[P in K["value"]]: T;
|
|
8
|
+
} & {
|
|
9
|
+
[P in K["onValueChange"]]: (value: T) => void;
|
|
10
|
+
} & {
|
|
11
|
+
[P in K["defaultValue"]]?: never;
|
|
12
|
+
};
|
|
13
|
+
type UncontrolledProps<T, K extends ControlKeys> = {
|
|
14
|
+
[P in K["defaultValue"]]?: T;
|
|
15
|
+
} & {
|
|
16
|
+
[P in K["onValueChange"]]?: (value: T) => void;
|
|
17
|
+
} & {
|
|
18
|
+
[P in K["value"]]?: never;
|
|
19
|
+
};
|
|
20
|
+
export type ControllableProps<T, K extends ControlKeys> = ControlledProps<T, K> | UncontrolledProps<T, K>;
|
|
21
|
+
export type StateUpdater<T> = (prev: T) => T;
|
|
22
|
+
export type SetState<T> = (next: T | StateUpdater<T>) => void;
|
|
23
|
+
declare const DEFAULT_KEYS: {
|
|
24
|
+
readonly value: "value";
|
|
25
|
+
readonly defaultValue: "defaultValue";
|
|
26
|
+
readonly onValueChange: "onValueChange";
|
|
27
|
+
};
|
|
28
|
+
type DefaultKeys = typeof DEFAULT_KEYS;
|
|
29
|
+
type ExtractValue<P, K extends ControlKeys> = P extends {
|
|
30
|
+
[Key in K["value"]]: infer V;
|
|
31
|
+
} ? V : P extends {
|
|
32
|
+
[Key in K["defaultValue"]]?: infer V;
|
|
33
|
+
} ? V : never;
|
|
34
|
+
export declare function useControllableState<P extends ControllableProps<any, K>, K extends ControlKeys = DefaultKeys>(props: P, keys?: K): readonly [ExtractValue<P, K>, SetState<ExtractValue<P, K>>];
|
|
35
|
+
export {};
|
|
36
|
+
//# sourceMappingURL=useControllableState.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"useControllableState.d.ts","sourceRoot":"","sources":["../../src/core/useControllableState.ts"],"names":[],"mappings":"AAGA,KAAK,WAAW,GAAG;IACf,KAAK,EAAE,MAAM,CAAC;IACd,YAAY,EAAE,MAAM,CAAC;IACrB,aAAa,EAAE,MAAM,CAAC;CACzB,CAAC;AAEF,KAAK,eAAe,CAAC,CAAC,EAAE,CAAC,SAAS,WAAW,IAAI;KAC5C,CAAC,IAAI,CAAC,CAAC,OAAO,CAAC,GAAG,CAAC;CACvB,GAAG;KACC,CAAC,IAAI,CAAC,CAAC,eAAe,CAAC,GAAG,CAAC,KAAK,EAAE,CAAC,KAAK,IAAI;CAChD,GAAG;KACC,CAAC,IAAI,CAAC,CAAC,cAAc,CAAC,CAAC,CAAC,EAAE,KAAK;CACnC,CAAC;AAGF,KAAK,iBAAiB,CAAC,CAAC,EAAE,CAAC,SAAS,WAAW,IAAI;KAC9C,CAAC,IAAI,CAAC,CAAC,cAAc,CAAC,CAAC,CAAC,EAAE,CAAC;CAC/B,GAAG;KACC,CAAC,IAAI,CAAC,CAAC,eAAe,CAAC,CAAC,CAAC,EAAE,CAAC,KAAK,EAAE,CAAC,KAAK,IAAI;CACjD,GAAG;KACC,CAAC,IAAI,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,KAAK;CAC5B,CAAC;AAGF,MAAM,MAAM,iBAAiB,CAAC,CAAC,EAAE,CAAC,SAAS,WAAW,IAAI,eAAe,CAAC,CAAC,EAAE,CAAC,CAAC,GAAG,iBAAiB,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;AAE1G,MAAM,MAAM,YAAY,CAAC,CAAC,IAAI,CAAC,IAAI,EAAE,CAAC,KAAK,CAAC,CAAC;AAC7C,MAAM,MAAM,QAAQ,CAAC,CAAC,IAAI,CAAC,IAAI,EAAE,CAAC,GAAG,YAAY,CAAC,CAAC,CAAC,KAAK,IAAI,CAAC;AAE9D,QAAA,MAAM,YAAY;;;;CAIc,CAAC;AACjC,KAAK,WAAW,GAAG,OAAO,YAAY,CAAC;AAEvC,KAAK,YAAY,CAAC,CAAC,EAAE,CAAC,SAAS,WAAW,IACtC,CAAC,SAAS;KAAG,GAAG,IAAI,CAAC,CAAC,OAAO,CAAC,GAAG,MAAM,CAAC;CAAE,GACpC,CAAC,GACD,CAAC,SAAS;KAAG,GAAG,IAAI,CAAC,CAAC,cAAc,CAAC,CAAC,CAAC,EAAE,MAAM,CAAC;CAAE,GAC9C,CAAC,GACD,KAAK,CAAC;AAEpB,wBAAgB,oBAAoB,CAAC,CAAC,SAAS,iBAAiB,CAAC,GAAG,EAAE,CAAC,CAAC,EAAE,CAAC,SAAS,WAAW,GAAG,WAAW,EACzG,KAAK,EAAE,CAAC,EACR,IAAI,CAAC,EAAE,CAAC,GACT,SAAS,CAAC,YAAY,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,QAAQ,CAAC,YAAY,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CA8B7D"}
|
|
@@ -0,0 +1,29 @@
|
|
|
1
|
+
import { useState } from "react";
|
|
2
|
+
import { useEventCallback } from "./useEventCallback.js";
|
|
3
|
+
const DEFAULT_KEYS = {
|
|
4
|
+
value: "value",
|
|
5
|
+
defaultValue: "defaultValue",
|
|
6
|
+
onValueChange: "onValueChange",
|
|
7
|
+
};
|
|
8
|
+
export function useControllableState(props, keys) {
|
|
9
|
+
const { value: valueKey, defaultValue: defaultKey, onValueChange: changeKey } = (keys ?? DEFAULT_KEYS);
|
|
10
|
+
const propsValue = props[valueKey];
|
|
11
|
+
const isControlled = propsValue !== undefined;
|
|
12
|
+
const onChange = props[changeKey];
|
|
13
|
+
const [internalValue, setInternalValue] = useState(() => {
|
|
14
|
+
if (isControlled) {
|
|
15
|
+
return propsValue;
|
|
16
|
+
}
|
|
17
|
+
return props[defaultKey];
|
|
18
|
+
});
|
|
19
|
+
const value = isControlled ? propsValue : internalValue;
|
|
20
|
+
const setValue = useEventCallback((next) => {
|
|
21
|
+
const nextValue = typeof next === "function" ? next(value) : next;
|
|
22
|
+
if (!isControlled) {
|
|
23
|
+
setInternalValue(nextValue);
|
|
24
|
+
}
|
|
25
|
+
onChange?.(nextValue);
|
|
26
|
+
});
|
|
27
|
+
return [value, setValue];
|
|
28
|
+
}
|
|
29
|
+
//# sourceMappingURL=useControllableState.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"useControllableState.js","sourceRoot":"","sources":["../../src/core/useControllableState.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,MAAM,OAAO,CAAC;AACjC,OAAO,EAAE,gBAAgB,EAAE,MAAM,uBAAuB,CAAC;AA+BzD,MAAM,YAAY,GAAG;IACnB,KAAK,EAAE,OAAO;IACd,YAAY,EAAE,cAAc;IAC5B,aAAa,EAAE,eAAe;CACA,CAAC;AAUjC,MAAM,UAAU,oBAAoB,CAChC,KAAQ,EACR,IAAQ;IAER,MAAM,EAAE,KAAK,EAAE,QAAQ,EAAE,YAAY,EAAE,UAAU,EAAE,aAAa,EAAE,SAAS,EAAE,GAAG,CAAC,IAAI,IAAI,YAAY,CAAC,CAAC;IAEvG,MAAM,UAAU,GAAI,KAAa,CAAC,QAAQ,CAAC,CAAC;IAC5C,MAAM,YAAY,GAAG,UAAU,KAAK,SAAS,CAAC;IAI9C,MAAM,QAAQ,GAAG,KAAK,CAAC,SAA+B,CAAmC,CAAC;IAE1F,MAAM,CAAC,aAAa,EAAE,gBAAgB,CAAC,GAAG,QAAQ,CAAI,GAAG,EAAE;QACvD,IAAI,YAAY,EAAE,CAAC;YACf,OAAO,UAAU,CAAC;QACtB,CAAC;QACD,OAAQ,KAAa,CAAC,UAAU,CAAC,CAAC;IACtC,CAAC,CAAC,CAAC;IAEH,MAAM,KAAK,GAAG,YAAY,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC,CAAC,aAAa,CAAC;IAExD,MAAM,QAAQ,GAAG,gBAAgB,CAAc,CAAC,IAAI,EAAE,EAAE;QACpD,MAAM,SAAS,GAAG,OAAO,IAAI,KAAK,UAAU,CAAC,CAAC,CAAE,IAAwB,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC;QAEvF,IAAI,CAAC,YAAY,EAAE,CAAC;YAChB,gBAAgB,CAAC,SAAS,CAAC,CAAC;QAChC,CAAC;QAED,QAAQ,EAAE,CAAC,SAAS,CAAC,CAAC;IAC1B,CAAC,CAAC,CAAC;IAEH,OAAO,CAAC,KAAK,EAAE,QAAQ,CAAU,CAAC;AACtC,CAAC"}
|
|
@@ -8,11 +8,12 @@ export interface HitArea {
|
|
|
8
8
|
bottom: number;
|
|
9
9
|
left: number;
|
|
10
10
|
}
|
|
11
|
+
type HitAreaOption = number | Partial<HitArea>;
|
|
11
12
|
export interface DragGestureOptions {
|
|
12
13
|
onDragStart?: (event: PointerEvent) => void;
|
|
13
14
|
onDrag?: (state: DragDelta) => void;
|
|
14
15
|
onDragEnd?: (event: PointerEvent) => void;
|
|
15
|
-
hitArea?:
|
|
16
|
+
hitArea?: HitAreaOption;
|
|
16
17
|
shouldPreventDrag?: (event: React.PointerEvent) => boolean | void;
|
|
17
18
|
}
|
|
18
19
|
export interface DragHandleProps {
|
|
@@ -20,8 +21,9 @@ export interface DragHandleProps {
|
|
|
20
21
|
}
|
|
21
22
|
export declare function useDragGesture(options: DragGestureOptions): {
|
|
22
23
|
isDragging: boolean;
|
|
23
|
-
getDragHandleProps: () => {
|
|
24
|
+
getDragHandleProps: (hitArea?: HitAreaOption) => {
|
|
24
25
|
onPointerDown: (event: React.PointerEvent) => void;
|
|
25
26
|
};
|
|
26
27
|
};
|
|
28
|
+
export {};
|
|
27
29
|
//# sourceMappingURL=useDragGesture.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"useDragGesture.d.ts","sourceRoot":"","sources":["../../src/core/useDragGesture.ts"],"names":[],"mappings":"AAQA,MAAM,WAAW,SAAS;IACtB,MAAM,EAAE,MAAM,CAAC;IACf,MAAM,EAAE,MAAM,CAAC;CAClB;AAED,MAAM,WAAW,OAAO;IACpB,GAAG,EAAE,MAAM,CAAC;IACZ,KAAK,EAAE,MAAM,CAAC;IACd,MAAM,EAAE,MAAM,CAAC;IACf,IAAI,EAAE,MAAM,CAAC;CAChB;AAED,MAAM,WAAW,kBAAkB;IAC/B,WAAW,CAAC,EAAE,CAAC,KAAK,EAAE,YAAY,KAAK,IAAI,CAAC;IAC5C,MAAM,CAAC,EAAE,CAAC,KAAK,EAAE,SAAS,KAAK,IAAI,CAAC;IACpC,SAAS,CAAC,EAAE,CAAC,KAAK,EAAE,YAAY,KAAK,IAAI,CAAC;IAC1C,OAAO,CAAC,EAAE,
|
|
1
|
+
{"version":3,"file":"useDragGesture.d.ts","sourceRoot":"","sources":["../../src/core/useDragGesture.ts"],"names":[],"mappings":"AAQA,MAAM,WAAW,SAAS;IACtB,MAAM,EAAE,MAAM,CAAC;IACf,MAAM,EAAE,MAAM,CAAC;CAClB;AAED,MAAM,WAAW,OAAO;IACpB,GAAG,EAAE,MAAM,CAAC;IACZ,KAAK,EAAE,MAAM,CAAC;IACd,MAAM,EAAE,MAAM,CAAC;IACf,IAAI,EAAE,MAAM,CAAC;CAChB;AAED,KAAK,aAAa,GAAG,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC,CAAC;AAE/C,MAAM,WAAW,kBAAkB;IAC/B,WAAW,CAAC,EAAE,CAAC,KAAK,EAAE,YAAY,KAAK,IAAI,CAAC;IAC5C,MAAM,CAAC,EAAE,CAAC,KAAK,EAAE,SAAS,KAAK,IAAI,CAAC;IACpC,SAAS,CAAC,EAAE,CAAC,KAAK,EAAE,YAAY,KAAK,IAAI,CAAC;IAC1C,OAAO,CAAC,EAAE,aAAa,CAAC;IACxB,iBAAiB,CAAC,EAAE,CAAC,KAAK,EAAE,KAAK,CAAC,YAAY,KAAK,OAAO,GAAG,IAAI,CAAC;CACrE;AAED,MAAM,WAAW,eAAe;IAC5B,aAAa,EAAE,CAAC,KAAK,EAAE,KAAK,CAAC,YAAY,KAAK,IAAI,CAAC;CACtD;AAmBD,wBAAgB,cAAc,CAAC,OAAO,EAAE,kBAAkB;;mCA+GnB,aAAa;+BAnCF,KAAK,CAAC,YAAY;;EA4CnE"}
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import { useRef, useState, useCallback, useEffect } from "react";
|
|
2
|
-
import { useEventCallback } from "./useEventCallback.js";
|
|
2
|
+
import { useEventCallback } from "./useEventCallback.js";
|
|
3
3
|
function normalizeHitArea(input) {
|
|
4
4
|
if (typeof input === "number") {
|
|
5
5
|
return {
|
|
@@ -20,6 +20,7 @@ export function useDragGesture(options) {
|
|
|
20
20
|
const [isDragging, setIsDragging] = useState(false);
|
|
21
21
|
const startPositionRef = useRef({ x: 0, y: 0 });
|
|
22
22
|
const dragTargetRef = useRef(null);
|
|
23
|
+
const dynamicHitAreaRef = useRef(undefined);
|
|
23
24
|
const latestDeltaRef = useRef(null);
|
|
24
25
|
const rafIdRef = useRef(null);
|
|
25
26
|
const handleDragStart = useEventCallback((event) => {
|
|
@@ -62,10 +63,10 @@ export function useDragGesture(options) {
|
|
|
62
63
|
rafIdRef.current = null;
|
|
63
64
|
}
|
|
64
65
|
});
|
|
65
|
-
const onHitTest = useEventCallback((event) => {
|
|
66
|
+
const onHitTest = useEventCallback((event, overrideHitArea) => {
|
|
66
67
|
const el = event.currentTarget;
|
|
67
68
|
const rect = el.getBoundingClientRect();
|
|
68
|
-
const hit = normalizeHitArea(options.hitArea);
|
|
69
|
+
const hit = normalizeHitArea(overrideHitArea ?? options.hitArea);
|
|
69
70
|
const within = event.clientX >= rect.left - hit.left &&
|
|
70
71
|
event.clientX <= rect.right + hit.right &&
|
|
71
72
|
event.clientY >= rect.top - hit.top &&
|
|
@@ -78,7 +79,7 @@ export function useDragGesture(options) {
|
|
|
78
79
|
const handlePointerDown = useCallback((event) => {
|
|
79
80
|
if (onStartingDragTest(event) === true)
|
|
80
81
|
return;
|
|
81
|
-
const within = onHitTest(event);
|
|
82
|
+
const within = onHitTest(event, dynamicHitAreaRef.current);
|
|
82
83
|
if (!within)
|
|
83
84
|
return;
|
|
84
85
|
event.preventDefault();
|
|
@@ -104,9 +105,14 @@ export function useDragGesture(options) {
|
|
|
104
105
|
}, [handlePointerMove, handlePointerUp]);
|
|
105
106
|
return {
|
|
106
107
|
isDragging,
|
|
107
|
-
getDragHandleProps: () =>
|
|
108
|
-
|
|
109
|
-
|
|
108
|
+
getDragHandleProps: (hitArea) => {
|
|
109
|
+
if (dynamicHitAreaRef.current !== hitArea) {
|
|
110
|
+
dynamicHitAreaRef.current = hitArea;
|
|
111
|
+
}
|
|
112
|
+
return {
|
|
113
|
+
onPointerDown: handlePointerDown,
|
|
114
|
+
};
|
|
115
|
+
},
|
|
110
116
|
};
|
|
111
117
|
}
|
|
112
118
|
;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"useDragGesture.js","sourceRoot":"","sources":["../../src/core/useDragGesture.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAAE,QAAQ,EAAE,WAAW,EAAE,SAAS,EAAE,MAAM,OAAO,CAAC;AACjE,OAAO,EAAE,gBAAgB,EAAE,MAAM,uBAAuB,CAAC
|
|
1
|
+
{"version":3,"file":"useDragGesture.js","sourceRoot":"","sources":["../../src/core/useDragGesture.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,4 +1,5 @@
|
|
|
1
1
|
import { type DragHandleProps } from "./useDragGesture.js";
|
|
2
|
+
import { type ControllableProps } from "./useControllableState.js";
|
|
2
3
|
export interface Position {
|
|
3
4
|
x: number;
|
|
4
5
|
y: number;
|
|
@@ -14,10 +15,11 @@ export interface DraggableInfo {
|
|
|
14
15
|
isDragging: boolean;
|
|
15
16
|
draggableProps: DragHandleProps;
|
|
16
17
|
}
|
|
17
|
-
export
|
|
18
|
-
position
|
|
19
|
-
|
|
20
|
-
|
|
18
|
+
export type DraggableOptions = ControllableProps<Position, {
|
|
19
|
+
value: "position";
|
|
20
|
+
defaultValue: "defaultPosition";
|
|
21
|
+
onValueChange: "onPositionChange";
|
|
22
|
+
}> & {
|
|
21
23
|
bounds?: Bounds;
|
|
22
24
|
gridSize?: number;
|
|
23
25
|
lockAxis?: "x" | "y";
|
|
@@ -25,7 +27,7 @@ export interface DraggableOptions {
|
|
|
25
27
|
onDragEnd?: (pos: Position) => void;
|
|
26
28
|
updatePositionOnDragStart?: boolean;
|
|
27
29
|
shouldPreventDrag?: (event: React.PointerEvent) => boolean | undefined;
|
|
28
|
-
}
|
|
30
|
+
};
|
|
29
31
|
export declare function useDraggable(options?: DraggableOptions): DraggableInfo;
|
|
30
32
|
export {};
|
|
31
33
|
//# sourceMappingURL=useDraggable.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"useDraggable.d.ts","sourceRoot":"","sources":["../../src/core/useDraggable.ts"],"names":[],"mappings":"AAEA,OAAO,EAAkB,KAAK,eAAe,EAAE,MAAM,qBAAqB,CAAC;
|
|
1
|
+
{"version":3,"file":"useDraggable.d.ts","sourceRoot":"","sources":["../../src/core/useDraggable.ts"],"names":[],"mappings":"AAEA,OAAO,EAAkB,KAAK,eAAe,EAAE,MAAM,qBAAqB,CAAC;AAE3E,OAAO,EAAwB,KAAK,iBAAiB,EAAE,MAAM,2BAA2B,CAAC;AAEzF,MAAM,WAAW,QAAQ;IACrB,CAAC,EAAE,MAAM,CAAC;IACV,CAAC,EAAE,MAAM,CAAC;CACb;AAED,UAAU,MAAM;IACZ,IAAI,EAAE,MAAM,CAAC;IACb,KAAK,EAAE,MAAM,CAAC;IACd,GAAG,EAAE,MAAM,CAAC;IACZ,MAAM,EAAE,MAAM,CAAC;CAClB;AAED,MAAM,WAAW,aAAa;IAC1B,QAAQ,EAAE,QAAQ,CAAC;IACnB,UAAU,EAAE,OAAO,CAAC;IACpB,cAAc,EAAE,eAAe,CAAC;CACnC;AAED,MAAM,MAAM,gBAAgB,GAAG,iBAAiB,CAAC,QAAQ,EAAE;IACvD,KAAK,EAAE,UAAU,CAAC;IAClB,YAAY,EAAE,iBAAiB,CAAC;IAChC,aAAa,EAAE,kBAAkB,CAAC;CACrC,CAAC,GAAG;IACD,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,QAAQ,CAAC,EAAE,GAAG,GAAG,GAAG,CAAC;IACrB,WAAW,CAAC,EAAE,CAAC,GAAG,EAAE,QAAQ,KAAK,IAAI,CAAC;IACtC,SAAS,CAAC,EAAE,CAAC,GAAG,EAAE,QAAQ,KAAK,IAAI,CAAC;IACpC,yBAAyB,CAAC,EAAE,OAAO,CAAC;IACpC,iBAAiB,CAAC,EAAE,CAAC,KAAK,EAAE,KAAK,CAAC,YAAY,KAAK,OAAO,GAAG,SAAS,CAAC;CAC1E,CAAA;AAED,wBAAgB,YAAY,CAAC,OAAO,GAAE,gBAAqB,GAAG,aAAa,CAgF1E"}
|
|
@@ -1,12 +1,15 @@
|
|
|
1
|
-
import {
|
|
1
|
+
import { useRef } from "react";
|
|
2
2
|
import { useEventCallback } from "./useEventCallback.js";
|
|
3
3
|
import { useDragGesture } from "./useDragGesture.js";
|
|
4
4
|
import { clamp } from "../utils/index.js";
|
|
5
|
+
import { useControllableState } from "./useControllableState.js";
|
|
5
6
|
export function useDraggable(options = {}) {
|
|
6
|
-
const {
|
|
7
|
-
const [
|
|
8
|
-
|
|
9
|
-
|
|
7
|
+
const { bounds, gridSize, lockAxis, onDragStart, onDragEnd, updatePositionOnDragStart, shouldPreventDrag, } = options;
|
|
8
|
+
const [position, setPosition] = useControllableState(options, {
|
|
9
|
+
value: "position",
|
|
10
|
+
defaultValue: "defaultPosition",
|
|
11
|
+
onValueChange: "onPositionChange",
|
|
12
|
+
});
|
|
10
13
|
const dragStartPosRef = useRef({ x: 0, y: 0 });
|
|
11
14
|
const clampPosition = (pos) => {
|
|
12
15
|
if (!bounds)
|
|
@@ -32,12 +35,7 @@ export function useDraggable(options = {}) {
|
|
|
32
35
|
else if (lockAxis === "y") {
|
|
33
36
|
pos.x = position.x;
|
|
34
37
|
}
|
|
35
|
-
|
|
36
|
-
onPositionChange(pos);
|
|
37
|
-
}
|
|
38
|
-
else {
|
|
39
|
-
setUncontrolledPosition(pos);
|
|
40
|
-
}
|
|
38
|
+
setPosition(pos);
|
|
41
39
|
});
|
|
42
40
|
// Use our perfected, underlying drag gesture hook.
|
|
43
41
|
const { isDragging, getDragHandleProps } = useDragGesture({
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"useDraggable.js","sourceRoot":"","sources":["../../src/core/useDraggable.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,
|
|
1
|
+
{"version":3,"file":"useDraggable.js","sourceRoot":"","sources":["../../src/core/useDraggable.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,25 +1,28 @@
|
|
|
1
|
-
import { type
|
|
1
|
+
import { type DragGestureOptions, type DragHandleProps } from "./useDragGesture.js";
|
|
2
|
+
import { ControllableProps } from "./useControllableState.js";
|
|
2
3
|
export interface Size {
|
|
3
4
|
width: number;
|
|
4
5
|
height: number;
|
|
5
6
|
}
|
|
7
|
+
type HitAreaOption = DragGestureOptions["hitArea"];
|
|
6
8
|
export interface ResizableInfo {
|
|
7
9
|
size: Size;
|
|
8
10
|
isResizing: boolean;
|
|
9
|
-
getResizeHandleProps: (direction?: ResizeDirection, hitArea?:
|
|
11
|
+
getResizeHandleProps: (direction?: ResizeDirection, hitArea?: HitAreaOption) => DragHandleProps;
|
|
10
12
|
}
|
|
11
|
-
export
|
|
12
|
-
size
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
maxHeight?: number;
|
|
13
|
+
export type ResizableOptions = ControllableProps<Size, {
|
|
14
|
+
value: "size";
|
|
15
|
+
defaultValue: "defaultSize";
|
|
16
|
+
onValueChange: "onSizeChange";
|
|
17
|
+
}> & {
|
|
18
|
+
maxSize?: Partial<Size>;
|
|
19
|
+
minSize?: Partial<Size>;
|
|
19
20
|
axis?: "both" | "x" | "y";
|
|
20
21
|
lockAspectRatio?: boolean;
|
|
21
22
|
disabled?: boolean;
|
|
22
|
-
|
|
23
|
+
hitArea?: HitAreaOption;
|
|
24
|
+
};
|
|
23
25
|
export type ResizeDirection = "right" | "bottom" | "bottom-right";
|
|
24
26
|
export declare function useResizable(options?: ResizableOptions): ResizableInfo;
|
|
27
|
+
export {};
|
|
25
28
|
//# sourceMappingURL=useResizable.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"useResizable.d.ts","sourceRoot":"","sources":["../../src/core/useResizable.ts"],"names":[],"mappings":"AACA,OAAO,EAAkB,KAAK,
|
|
1
|
+
{"version":3,"file":"useResizable.d.ts","sourceRoot":"","sources":["../../src/core/useResizable.ts"],"names":[],"mappings":"AACA,OAAO,EAAkB,KAAK,kBAAkB,EAAE,KAAK,eAAe,EAAE,MAAM,qBAAqB,CAAC;AAGpG,OAAO,EAAwB,iBAAiB,EAAE,MAAM,2BAA2B,CAAC;AAEpF,MAAM,WAAW,IAAI;IACjB,KAAK,EAAE,MAAM,CAAC;IACd,MAAM,EAAE,MAAM,CAAC;CAClB;AAED,KAAK,aAAa,GAAG,kBAAkB,CAAC,SAAS,CAAC,CAAC;AAEnD,MAAM,WAAW,aAAa;IAC1B,IAAI,EAAE,IAAI,CAAC;IACX,UAAU,EAAE,OAAO,CAAC;IACpB,oBAAoB,EAAE,CAAC,SAAS,CAAC,EAAE,eAAe,EAAE,OAAO,CAAC,EAAE,aAAa,KAAK,eAAe,CAAC;CACnG;AAED,MAAM,MAAM,gBAAgB,GAAG,iBAAiB,CAAC,IAAI,EAAE;IACnD,KAAK,EAAE,MAAM,CAAC;IACd,YAAY,EAAE,aAAa,CAAC;IAC5B,aAAa,EAAE,cAAc,CAAC;CACjC,CAAC,GAAG;IACD,OAAO,CAAC,EAAE,OAAO,CAAC,IAAI,CAAC,CAAC;IACxB,OAAO,CAAC,EAAE,OAAO,CAAC,IAAI,CAAC,CAAC;IACxB,IAAI,CAAC,EAAE,MAAM,GAAG,GAAG,GAAG,GAAG,CAAC;IAC1B,eAAe,CAAC,EAAE,OAAO,CAAC;IAC1B,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB,OAAO,CAAC,EAAE,aAAa,CAAC;CAC3B,CAAA;AAED,MAAM,MAAM,eAAe,GAAG,OAAO,GAAG,QAAQ,GAAG,cAAc,CAAC;AAElE,wBAAgB,YAAY,CAAC,OAAO,GAAE,gBAAqB,GAAG,aAAa,CAqG1E"}
|
|
@@ -1,78 +1,88 @@
|
|
|
1
|
-
import {
|
|
1
|
+
import { useRef } from "react";
|
|
2
2
|
import { useDragGesture } from "./useDragGesture.js";
|
|
3
3
|
import { useEventCallback } from "./useEventCallback.js";
|
|
4
4
|
import { clamp } from "../utils/index.js";
|
|
5
|
+
import { useControllableState } from "./useControllableState.js";
|
|
5
6
|
export function useResizable(options = {}) {
|
|
6
|
-
const {
|
|
7
|
-
const
|
|
7
|
+
const { minSize, maxSize, axis = "both", lockAspectRatio = false, disabled = false, hitArea, } = options;
|
|
8
|
+
const minWidth = minSize?.width ?? 0;
|
|
9
|
+
const maxWidth = maxSize?.width ?? Infinity;
|
|
10
|
+
const minHeight = minSize?.height ?? 0;
|
|
11
|
+
const maxHeight = maxSize?.height ?? Infinity;
|
|
8
12
|
const dragStartSizeRef = useRef({ width: 0, height: 0 });
|
|
9
|
-
const
|
|
10
|
-
|
|
13
|
+
const [size, setSize] = useControllableState(options, {
|
|
14
|
+
value: "size",
|
|
15
|
+
defaultValue: "defaultSize",
|
|
16
|
+
onValueChange: "onSizeChange",
|
|
17
|
+
});
|
|
11
18
|
const updateSize = useEventCallback((newSize) => {
|
|
12
19
|
const clampedSize = {
|
|
13
20
|
width: clamp(newSize.width, minWidth, maxWidth),
|
|
14
21
|
height: clamp(newSize.height, minHeight, maxHeight),
|
|
15
22
|
};
|
|
16
|
-
|
|
17
|
-
|
|
23
|
+
setSize(clampedSize);
|
|
24
|
+
});
|
|
25
|
+
const handleDrag = useEventCallback((direction, deltaX, deltaY) => {
|
|
26
|
+
if (disabled)
|
|
27
|
+
return;
|
|
28
|
+
let width = dragStartSizeRef.current.width;
|
|
29
|
+
let height = dragStartSizeRef.current.height;
|
|
30
|
+
if (direction === "right" || direction === "bottom-right") {
|
|
31
|
+
width += deltaX;
|
|
32
|
+
}
|
|
33
|
+
if (direction === "bottom" || direction === "bottom-right") {
|
|
34
|
+
height += deltaY;
|
|
35
|
+
}
|
|
36
|
+
// 轴向限制
|
|
37
|
+
if (axis === "x") {
|
|
38
|
+
height = dragStartSizeRef.current.height;
|
|
18
39
|
}
|
|
19
|
-
else {
|
|
20
|
-
|
|
40
|
+
else if (axis === "y") {
|
|
41
|
+
width = dragStartSizeRef.current.width;
|
|
21
42
|
}
|
|
43
|
+
// 宽高比锁定
|
|
44
|
+
if (lockAspectRatio) {
|
|
45
|
+
const aspect = dragStartSizeRef.current.width / dragStartSizeRef.current.height;
|
|
46
|
+
if (direction === "right") {
|
|
47
|
+
height = width / aspect;
|
|
48
|
+
}
|
|
49
|
+
else if (direction === "bottom") {
|
|
50
|
+
width = height * aspect;
|
|
51
|
+
}
|
|
52
|
+
else {
|
|
53
|
+
const avgDelta = (deltaX + deltaY) / 2;
|
|
54
|
+
width = dragStartSizeRef.current.width + avgDelta;
|
|
55
|
+
height = width / aspect;
|
|
56
|
+
}
|
|
57
|
+
}
|
|
58
|
+
updateSize({ width, height });
|
|
59
|
+
});
|
|
60
|
+
const rightDrag = useDragGesture({
|
|
61
|
+
hitArea,
|
|
62
|
+
onDragStart: () => (dragStartSizeRef.current = size),
|
|
63
|
+
onDrag: ({ deltaX, deltaY }) => handleDrag("right", deltaX, deltaY),
|
|
64
|
+
});
|
|
65
|
+
const bottomDrag = useDragGesture({
|
|
66
|
+
hitArea,
|
|
67
|
+
onDragStart: () => (dragStartSizeRef.current = size),
|
|
68
|
+
onDrag: ({ deltaX, deltaY }) => handleDrag("bottom", deltaX, deltaY),
|
|
69
|
+
});
|
|
70
|
+
const bottomRightDrag = useDragGesture({
|
|
71
|
+
hitArea,
|
|
72
|
+
onDragStart: () => (dragStartSizeRef.current = size),
|
|
73
|
+
onDrag: ({ deltaX, deltaY }) => handleDrag("bottom-right", deltaX, deltaY),
|
|
22
74
|
});
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
if (disabled)
|
|
28
|
-
return;
|
|
29
|
-
dragStartSizeRef.current = size;
|
|
30
|
-
},
|
|
31
|
-
onDrag: ({ deltaX, deltaY }) => {
|
|
32
|
-
if (disabled)
|
|
33
|
-
return;
|
|
34
|
-
let width = dragStartSizeRef.current.width;
|
|
35
|
-
let height = dragStartSizeRef.current.height;
|
|
36
|
-
if (direction === "right" || direction === "bottom-right") {
|
|
37
|
-
width += deltaX;
|
|
38
|
-
}
|
|
39
|
-
if (direction === "bottom" || direction === "bottom-right") {
|
|
40
|
-
height += deltaY;
|
|
41
|
-
}
|
|
42
|
-
if (axis === "x") {
|
|
43
|
-
height = dragStartSizeRef.current.height;
|
|
44
|
-
}
|
|
45
|
-
else if (axis === "y") {
|
|
46
|
-
width = dragStartSizeRef.current.width;
|
|
47
|
-
}
|
|
48
|
-
if (lockAspectRatio) {
|
|
49
|
-
const aspect = dragStartSizeRef.current.width / dragStartSizeRef.current.height;
|
|
50
|
-
if (direction === "right") {
|
|
51
|
-
height = width / aspect;
|
|
52
|
-
}
|
|
53
|
-
else if (direction === "bottom") {
|
|
54
|
-
width = height * aspect;
|
|
55
|
-
}
|
|
56
|
-
else {
|
|
57
|
-
const avgDelta = (deltaX + deltaY) / 2;
|
|
58
|
-
width = dragStartSizeRef.current.width + avgDelta;
|
|
59
|
-
height = width / aspect;
|
|
60
|
-
}
|
|
61
|
-
}
|
|
62
|
-
updateSize({ width, height });
|
|
63
|
-
},
|
|
64
|
-
});
|
|
65
|
-
}
|
|
66
|
-
const handlers = {
|
|
67
|
-
right: (hitArea) => createResizeHandler("right", hitArea),
|
|
68
|
-
bottom: (hitArea) => createResizeHandler("bottom", hitArea),
|
|
69
|
-
"bottom-right": (hitArea) => createResizeHandler("bottom-right", hitArea),
|
|
75
|
+
const dragHandlers = {
|
|
76
|
+
"right": rightDrag,
|
|
77
|
+
"bottom": bottomDrag,
|
|
78
|
+
"bottom-right": bottomRightDrag,
|
|
70
79
|
};
|
|
71
80
|
return {
|
|
72
81
|
size,
|
|
73
|
-
isResizing:
|
|
82
|
+
isResizing: rightDrag.isDragging || bottomDrag.isDragging || bottomRightDrag.isDragging,
|
|
74
83
|
getResizeHandleProps: (direction = "bottom-right", hitArea) => {
|
|
75
|
-
|
|
84
|
+
const handler = dragHandlers[direction];
|
|
85
|
+
return handler.getDragHandleProps(hitArea);
|
|
76
86
|
},
|
|
77
87
|
};
|
|
78
88
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"useResizable.js","sourceRoot":"","sources":["../../src/core/useResizable.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,
|
|
1
|
+
{"version":3,"file":"useResizable.js","sourceRoot":"","sources":["../../src/core/useResizable.ts"],"names":[],"mappings":"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"}
|
package/dist/core/useSlider.d.ts
CHANGED
|
@@ -1,3 +1,4 @@
|
|
|
1
|
+
import { type ControllableProps } from "./useControllableState.js";
|
|
1
2
|
export interface SliderInfo {
|
|
2
3
|
value: number;
|
|
3
4
|
isDragging: boolean;
|
|
@@ -8,15 +9,18 @@ export interface SliderInfo {
|
|
|
8
9
|
axis: "horizontal" | "vertical";
|
|
9
10
|
direction: "ltr" | "rtl";
|
|
10
11
|
}
|
|
11
|
-
|
|
12
|
-
value
|
|
13
|
-
|
|
14
|
-
|
|
12
|
+
type ControllableValueProps = ControllableProps<number, {
|
|
13
|
+
value: "value";
|
|
14
|
+
defaultValue: "defaultValue";
|
|
15
|
+
onValueChange: "onValueChange";
|
|
16
|
+
}>;
|
|
17
|
+
export type SliderOptions = ControllableValueProps & {
|
|
15
18
|
min?: number;
|
|
16
19
|
max?: number;
|
|
17
20
|
step?: number;
|
|
18
21
|
axis?: "horizontal" | "vertical";
|
|
19
22
|
direction?: "ltr" | "rtl";
|
|
20
|
-
}
|
|
23
|
+
};
|
|
21
24
|
export declare function useSlider(options?: SliderOptions): SliderInfo;
|
|
25
|
+
export {};
|
|
22
26
|
//# sourceMappingURL=useSlider.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"useSlider.d.ts","sourceRoot":"","sources":["../../src/core/useSlider.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"useSlider.d.ts","sourceRoot":"","sources":["../../src/core/useSlider.ts"],"names":[],"mappings":"AAIA,OAAO,EAAwB,KAAK,iBAAiB,EAAE,MAAM,2BAA2B,CAAC;AAEzF,MAAM,WAAW,UAAU;IACvB,KAAK,EAAE,MAAM,CAAC;IACd,UAAU,EAAE,OAAO,CAAC;IACpB,UAAU,EAAE,KAAK,CAAC,cAAc,CAAC,cAAc,CAAC,GAAG;QAAE,GAAG,EAAE,KAAK,CAAC,GAAG,CAAC,cAAc,CAAC,CAAA;KAAE,CAAC;IACtF,WAAW,EAAE,KAAK,CAAC,cAAc,CAAC,WAAW,CAAC,CAAC;IAC/C,IAAI,EAAE,YAAY,GAAG,UAAU,CAAC;IAChC,SAAS,EAAE,KAAK,GAAG,KAAK,CAAC;CAC5B;AAED,KAAK,sBAAsB,GAAG,iBAAiB,CAAC,MAAM,EAAE;IACpD,KAAK,EAAE,OAAO,CAAC;IACf,YAAY,EAAE,cAAc,CAAC;IAC7B,aAAa,EAAE,eAAe,CAAC;CAClC,CAAC,CAAC;AACH,MAAM,MAAM,aAAa,GAAG,sBAAsB,GAAG;IACjD,GAAG,CAAC,EAAE,MAAM,CAAC;IACb,GAAG,CAAC,EAAE,MAAM,CAAC;IACb,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,IAAI,CAAC,EAAE,YAAY,GAAG,UAAU,CAAC;IACjC,SAAS,CAAC,EAAE,KAAK,GAAG,KAAK,CAAC;CAC7B,CAAA;AAED,wBAAgB,SAAS,CAAC,OAAO,GAAE,aAAkB,GAAG,UAAU,CAgEjE"}
|
package/dist/core/useSlider.js
CHANGED
|
@@ -1,23 +1,17 @@
|
|
|
1
|
-
import {
|
|
1
|
+
import { useRef, useMemo } from "react";
|
|
2
2
|
import { useDragGesture } from "./useDragGesture.js";
|
|
3
3
|
import { useEventCallback } from "./useEventCallback.js";
|
|
4
4
|
import { clamp } from "../utils/index.js";
|
|
5
|
+
import { useControllableState } from "./useControllableState.js";
|
|
5
6
|
export function useSlider(options = {}) {
|
|
6
|
-
const {
|
|
7
|
-
const [
|
|
7
|
+
const { min = 0, max = 100, step = 1, axis = "horizontal", direction = "ltr", } = options;
|
|
8
|
+
const [value, setValue] = useControllableState(options);
|
|
8
9
|
const trackRef = useRef(null);
|
|
9
|
-
const isControlled = controlledValue !== undefined && typeof onChange === "function";
|
|
10
|
-
const value = isControlled ? controlledValue : uncontrolledValue;
|
|
11
10
|
const updateValue = useEventCallback((rawValue) => {
|
|
12
11
|
const clamped = clamp(rawValue, min, max);
|
|
13
12
|
const stepped = Math.round((clamped - min) / step) * step + min;
|
|
14
13
|
const final = clamp(Number(stepped.toFixed(6)), min, max);
|
|
15
|
-
|
|
16
|
-
onChange(final);
|
|
17
|
-
}
|
|
18
|
-
else {
|
|
19
|
-
setUncontrolledValue(final);
|
|
20
|
-
}
|
|
14
|
+
setValue(final);
|
|
21
15
|
});
|
|
22
16
|
const { isDragging, getDragHandleProps } = useDragGesture({
|
|
23
17
|
onDrag: ({ deltaX, deltaY }) => {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"useSlider.js","sourceRoot":"","sources":["../../src/core/useSlider.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,
|
|
1
|
+
{"version":3,"file":"useSlider.js","sourceRoot":"","sources":["../../src/core/useSlider.ts"],"names":[],"mappings":"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"}
|
package/dist/index.d.ts
CHANGED
|
@@ -6,6 +6,7 @@ export * from "./core/useSlider.js";
|
|
|
6
6
|
export * from "./core/useResizable.js";
|
|
7
7
|
export * from "./core/useEventCallback.js";
|
|
8
8
|
export * from "./core/useIsomorphicLayoutEffect.js";
|
|
9
|
+
export * from "./core/useControllableState.js";
|
|
9
10
|
export * from "./core/useCustomScroller.js";
|
|
10
11
|
export * from "./core/useKeepActiveItemIntoView.js";
|
|
11
12
|
export * from "./core/useScrollIntoViewHelper.js";
|
package/dist/index.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,cAAc,iCAAiC,CAAC;AAChD,cAAc,2BAA2B,CAAC;AAC1C,cAAc,0BAA0B,CAAC;AACzC,cAAc,wBAAwB,CAAC;AACvC,cAAc,qBAAqB,CAAC;AACpC,cAAc,wBAAwB,CAAC;AACvC,cAAc,4BAA4B,CAAC;AAC3C,cAAc,qCAAqC,CAAC;
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,cAAc,iCAAiC,CAAC;AAChD,cAAc,2BAA2B,CAAC;AAC1C,cAAc,0BAA0B,CAAC;AACzC,cAAc,wBAAwB,CAAC;AACvC,cAAc,qBAAqB,CAAC;AACpC,cAAc,wBAAwB,CAAC;AACvC,cAAc,4BAA4B,CAAC;AAC3C,cAAc,qCAAqC,CAAC;AACpD,cAAc,gCAAgC,CAAC;AAE/C,cAAc,6BAA6B,CAAC;AAC5C,cAAc,qCAAqC,CAAC;AACpD,cAAc,mCAAmC,CAAC"}
|
package/dist/index.js
CHANGED
|
@@ -6,6 +6,7 @@ export * from "./core/useSlider.js";
|
|
|
6
6
|
export * from "./core/useResizable.js";
|
|
7
7
|
export * from "./core/useEventCallback.js";
|
|
8
8
|
export * from "./core/useIsomorphicLayoutEffect.js";
|
|
9
|
+
export * from "./core/useControllableState.js";
|
|
9
10
|
export * from "./core/useCustomScroller.js";
|
|
10
11
|
export * from "./core/useKeepActiveItemIntoView.js";
|
|
11
12
|
export * from "./core/useScrollIntoViewHelper.js";
|
package/dist/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,cAAc,iCAAiC,CAAC;AAChD,cAAc,2BAA2B,CAAC;AAC1C,cAAc,0BAA0B,CAAC;AACzC,cAAc,wBAAwB,CAAC;AACvC,cAAc,qBAAqB,CAAC;AACpC,cAAc,wBAAwB,CAAC;AACvC,cAAc,4BAA4B,CAAC;AAC3C,cAAc,qCAAqC,CAAC;
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,cAAc,iCAAiC,CAAC;AAChD,cAAc,2BAA2B,CAAC;AAC1C,cAAc,0BAA0B,CAAC;AACzC,cAAc,wBAAwB,CAAC;AACvC,cAAc,qBAAqB,CAAC;AACpC,cAAc,wBAAwB,CAAC;AACvC,cAAc,4BAA4B,CAAC;AAC3C,cAAc,qCAAqC,CAAC;AACpD,cAAc,gCAAgC,CAAC;AAE/C,cAAc,6BAA6B,CAAC;AAC5C,cAAc,qCAAqC,CAAC;AACpD,cAAc,mCAAmC,CAAC"}
|
package/package.json
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@cites/react-hooks",
|
|
3
3
|
"description": "React hooks",
|
|
4
|
-
"version": "0.0.
|
|
4
|
+
"version": "0.0.5",
|
|
5
5
|
"type": "module",
|
|
6
6
|
"scripts": {
|
|
7
7
|
"clean": "rm -rf dist && rm -rf .cache",
|
|
@@ -46,6 +46,10 @@
|
|
|
46
46
|
"./useScrollIntoViewHelper": {
|
|
47
47
|
"default": "./dist/core/useScrollIntoViewHelper.js",
|
|
48
48
|
"types": "./dist/core/useScrollIntoViewHelper.d.ts"
|
|
49
|
+
},
|
|
50
|
+
"./useControllableState": {
|
|
51
|
+
"default": "./dist/core/useControllableState.js",
|
|
52
|
+
"types": "./dist/core/useControllableState.d.ts"
|
|
49
53
|
}
|
|
50
54
|
},
|
|
51
55
|
"keywords": [
|