react-simplikit 0.0.30 → 0.0.31

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.
@@ -0,0 +1,75 @@
1
+ "use strict";
2
+ var __defProp = Object.defineProperty;
3
+ var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
4
+ var __getOwnPropNames = Object.getOwnPropertyNames;
5
+ var __hasOwnProp = Object.prototype.hasOwnProperty;
6
+ var __export = (target, all) => {
7
+ for (var name in all)
8
+ __defProp(target, name, { get: all[name], enumerable: true });
9
+ };
10
+ var __copyProps = (to, from, except, desc) => {
11
+ if (from && typeof from === "object" || typeof from === "function") {
12
+ for (let key of __getOwnPropNames(from))
13
+ if (!__hasOwnProp.call(to, key) && key !== except)
14
+ __defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });
15
+ }
16
+ return to;
17
+ };
18
+ var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
19
+
20
+ // src/hooks/useDoubleClick/index.ts
21
+ var useDoubleClick_exports = {};
22
+ __export(useDoubleClick_exports, {
23
+ useDoubleClick: () => useDoubleClick
24
+ });
25
+ module.exports = __toCommonJS(useDoubleClick_exports);
26
+
27
+ // src/hooks/useDoubleClick/useDoubleClick.ts
28
+ var import_react2 = require("react");
29
+
30
+ // src/hooks/usePreservedCallback/usePreservedCallback.ts
31
+ var import_react = require("react");
32
+ function usePreservedCallback(callback) {
33
+ const callbackRef = (0, import_react.useRef)(callback);
34
+ (0, import_react.useEffect)(() => {
35
+ callbackRef.current = callback;
36
+ }, [callback]);
37
+ return (0, import_react.useCallback)((...args) => {
38
+ return callbackRef.current(...args);
39
+ }, []);
40
+ }
41
+
42
+ // src/hooks/useDoubleClick/useDoubleClick.ts
43
+ function useDoubleClick({
44
+ delay = 250,
45
+ click,
46
+ doubleClick
47
+ }) {
48
+ const clickTimeout = (0, import_react2.useRef)(null);
49
+ const clearClickTimeout = usePreservedCallback(() => {
50
+ if (clickTimeout.current != null) {
51
+ window.clearTimeout(clickTimeout.current);
52
+ clickTimeout.current = null;
53
+ }
54
+ });
55
+ (0, import_react2.useEffect)(() => () => clearClickTimeout(), [clearClickTimeout]);
56
+ const handleEvent = (0, import_react2.useCallback)(
57
+ (event) => {
58
+ clearClickTimeout();
59
+ if (click && event.detail === 1) {
60
+ clickTimeout.current = window.setTimeout(() => {
61
+ click(event);
62
+ }, delay);
63
+ }
64
+ if (event.detail === 2) {
65
+ doubleClick(event);
66
+ }
67
+ },
68
+ [click, doubleClick, delay, clearClickTimeout]
69
+ );
70
+ return handleEvent;
71
+ }
72
+ // Annotate the CommonJS export names for ESM import in node:
73
+ 0 && (module.exports = {
74
+ useDoubleClick
75
+ });
@@ -0,0 +1,42 @@
1
+ import { MouseEvent } from 'react';
2
+
3
+ type UseDoubleClickProps<E extends HTMLElement> = {
4
+ delay?: number;
5
+ click?: (event: MouseEvent<E>) => void;
6
+ doubleClick: (event: MouseEvent<E>) => void;
7
+ };
8
+ /**
9
+ * @description
10
+ * `useDoubleClick` is a React hook that differentiates between single and double click events.
11
+ * It delays the single click callback execution for a specified time, and cancels it if a second click (i.e. a double click) occurs within that time.
12
+ *
13
+ * @template {HTMLElement} E - The specific type of HTMLElement to be used with this hook (e.g., HTMLButtonElement, HTMLDivElement).
14
+ * @param {Object} params - Configuration options for click handling.
15
+ * @param {number} [params.delay=250] - The number of milliseconds to wait before triggering the single click callback. Defaults to 250ms.
16
+ * @param {(event: MouseEvent<E>) => void} [params.click] - The callback function to be executed on a single click.
17
+ * @param {(event: MouseEvent<E>) => void} params.doubleClick - The callback function to be executed on a double click. Required.
18
+ *
19
+ * @returns {(event: MouseEvent<E>) => void} A click handler function to attach to an element's `onClick` event.
20
+ *
21
+ * @example
22
+ * function GalleryCard() {
23
+ * const [selected, setSelected] = useState(false);
24
+ *
25
+ * const handleClick = () => setSelected((prev) => !prev);
26
+ * const handleDoubleClick = () => alert('Zoom in!');
27
+ *
28
+ * const handleEvent = useDoubleClick({
29
+ * click: handleClick,
30
+ * doubleClick: handleDoubleClick,
31
+ * });
32
+ *
33
+ * return (
34
+ * <div onClick={handleEvent}>
35
+ * {selected ? 'Selected' : 'Not selected'}
36
+ * </div>
37
+ * );
38
+ * }
39
+ */
40
+ declare function useDoubleClick<E extends HTMLElement = HTMLElement>({ delay, click, doubleClick, }: UseDoubleClickProps<E>): (event: MouseEvent<E>) => void;
41
+
42
+ export { useDoubleClick };
@@ -0,0 +1,42 @@
1
+ import { MouseEvent } from 'react';
2
+
3
+ type UseDoubleClickProps<E extends HTMLElement> = {
4
+ delay?: number;
5
+ click?: (event: MouseEvent<E>) => void;
6
+ doubleClick: (event: MouseEvent<E>) => void;
7
+ };
8
+ /**
9
+ * @description
10
+ * `useDoubleClick` is a React hook that differentiates between single and double click events.
11
+ * It delays the single click callback execution for a specified time, and cancels it if a second click (i.e. a double click) occurs within that time.
12
+ *
13
+ * @template {HTMLElement} E - The specific type of HTMLElement to be used with this hook (e.g., HTMLButtonElement, HTMLDivElement).
14
+ * @param {Object} params - Configuration options for click handling.
15
+ * @param {number} [params.delay=250] - The number of milliseconds to wait before triggering the single click callback. Defaults to 250ms.
16
+ * @param {(event: MouseEvent<E>) => void} [params.click] - The callback function to be executed on a single click.
17
+ * @param {(event: MouseEvent<E>) => void} params.doubleClick - The callback function to be executed on a double click. Required.
18
+ *
19
+ * @returns {(event: MouseEvent<E>) => void} A click handler function to attach to an element's `onClick` event.
20
+ *
21
+ * @example
22
+ * function GalleryCard() {
23
+ * const [selected, setSelected] = useState(false);
24
+ *
25
+ * const handleClick = () => setSelected((prev) => !prev);
26
+ * const handleDoubleClick = () => alert('Zoom in!');
27
+ *
28
+ * const handleEvent = useDoubleClick({
29
+ * click: handleClick,
30
+ * doubleClick: handleDoubleClick,
31
+ * });
32
+ *
33
+ * return (
34
+ * <div onClick={handleEvent}>
35
+ * {selected ? 'Selected' : 'Not selected'}
36
+ * </div>
37
+ * );
38
+ * }
39
+ */
40
+ declare function useDoubleClick<E extends HTMLElement = HTMLElement>({ delay, click, doubleClick, }: UseDoubleClickProps<E>): (event: MouseEvent<E>) => void;
41
+
42
+ export { useDoubleClick };
@@ -0,0 +1,48 @@
1
+ // src/hooks/useDoubleClick/useDoubleClick.ts
2
+ import { useCallback as useCallback2, useEffect as useEffect2, useRef as useRef2 } from "react";
3
+
4
+ // src/hooks/usePreservedCallback/usePreservedCallback.ts
5
+ import { useCallback, useEffect, useRef } from "react";
6
+ function usePreservedCallback(callback) {
7
+ const callbackRef = useRef(callback);
8
+ useEffect(() => {
9
+ callbackRef.current = callback;
10
+ }, [callback]);
11
+ return useCallback((...args) => {
12
+ return callbackRef.current(...args);
13
+ }, []);
14
+ }
15
+
16
+ // src/hooks/useDoubleClick/useDoubleClick.ts
17
+ function useDoubleClick({
18
+ delay = 250,
19
+ click,
20
+ doubleClick
21
+ }) {
22
+ const clickTimeout = useRef2(null);
23
+ const clearClickTimeout = usePreservedCallback(() => {
24
+ if (clickTimeout.current != null) {
25
+ window.clearTimeout(clickTimeout.current);
26
+ clickTimeout.current = null;
27
+ }
28
+ });
29
+ useEffect2(() => () => clearClickTimeout(), [clearClickTimeout]);
30
+ const handleEvent = useCallback2(
31
+ (event) => {
32
+ clearClickTimeout();
33
+ if (click && event.detail === 1) {
34
+ clickTimeout.current = window.setTimeout(() => {
35
+ click(event);
36
+ }, delay);
37
+ }
38
+ if (event.detail === 2) {
39
+ doubleClick(event);
40
+ }
41
+ },
42
+ [click, doubleClick, delay, clearClickTimeout]
43
+ );
44
+ return handleEvent;
45
+ }
46
+ export {
47
+ useDoubleClick
48
+ };
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "react-simplikit",
3
- "version": "0.0.30",
3
+ "version": "0.0.31",
4
4
  "main": "./dist/index.cjs",
5
5
  "type": "module",
6
6
  "sideEffects": false,