@vibe/hooks 3.0.3-alpha-56c2d.0 → 3.0.3-alpha-7c563.0

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/index.d.ts CHANGED
@@ -1 +1 @@
1
- export { default as useClickOutside } from "./useClickOutside";
1
+ export { default as useClickOutside } from "./useClickOutside";
package/dist/index.js CHANGED
@@ -1,2 +1,2 @@
1
- export { default as useClickOutside } from "./useClickOutside";
2
- //# sourceMappingURL=index.js.map
1
+ export{default as useClickOutside}from"./useClickOutside/index.js";
2
+ //# sourceMappingURL=index.js.map
package/dist/index.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,IAAI,eAAe,EAAE,MAAM,mBAAmB,CAAC"}
1
+ {"version":3,"file":"index.js","sources":[],"sourcesContent":[],"names":[],"mappings":""}
@@ -1,8 +1,8 @@
1
- import { type RefObject } from "react";
2
- import { type GenericEventCallback } from "@vibe/shared";
3
- export default function useClickOutside({ ref, callback, ignoreClasses, eventName }: {
4
- ref: RefObject<HTMLElement>;
5
- callback: GenericEventCallback;
6
- ignoreClasses?: string[];
7
- eventName?: keyof HTMLElementEventMap | string;
8
- }): void;
1
+ import { type RefObject } from "react";
2
+ import { type GenericEventCallback } from "@vibe/shared";
3
+ export default function useClickOutside({ ref, callback, ignoreClasses, eventName }: {
4
+ ref: RefObject<HTMLElement>;
5
+ callback: GenericEventCallback;
6
+ ignoreClasses?: string[];
7
+ eventName?: keyof HTMLElementEventMap | string;
8
+ }): void;
@@ -1,28 +1,2 @@
1
- import { useCallback, useRef } from "react";
2
- import { isClient, useEventListener } from "@vibe/shared";
3
- export default function useClickOutside({ ref, callback, ignoreClasses, eventName = "click" }) {
4
- const onClickOutsideListener = useCallback((event) => {
5
- if (!ref || !ref.current || ref.current.contains(event.target)) {
6
- return;
7
- }
8
- const shouldIgnoreClasses = ignoreClasses && event.target instanceof HTMLElement;
9
- if (shouldIgnoreClasses && event.target.closest(ignoreClasses.join(","))) {
10
- return;
11
- }
12
- callback(event);
13
- }, [ref, callback, ignoreClasses]);
14
- const documentRef = useRef(isClient() ? document.body : null);
15
- useEventListener({
16
- eventName,
17
- ref: documentRef,
18
- callback: onClickOutsideListener,
19
- capture: true
20
- });
21
- useEventListener({
22
- eventName: "touchend",
23
- ref: documentRef,
24
- callback: onClickOutsideListener,
25
- capture: true
26
- });
27
- }
28
- //# sourceMappingURL=index.js.map
1
+ import{useCallback as e,useRef as t}from"react";import{isClient as r,useEventListener as a}from"@vibe/shared";function c({ref:c,callback:n,ignoreClasses:o,eventName:l="click"}){const i=e((e=>{if(!c||!c.current||c.current.contains(e.target))return;o&&e.target instanceof HTMLElement&&e.target.closest(o.join(","))||n(e)}),[c,n,o]),s=t(r()?document.body:null);a({eventName:l,ref:s,callback:i,capture:!0}),a({eventName:"touchend",ref:s,callback:i,capture:!0})}export{c as default};
2
+ //# sourceMappingURL=index.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/useClickOutside/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,WAAW,EAAE,MAAM,EAAkB,MAAM,OAAO,CAAC;AAC5D,OAAO,EAA6B,QAAQ,EAAE,gBAAgB,EAAE,MAAM,cAAc,CAAC;AAErF,MAAM,CAAC,OAAO,UAAU,eAAe,CAAC,EACtC,GAAG,EACH,QAAQ,EACR,aAAa,EACb,SAAS,GAAG,OAAO,EAMpB;IACC,MAAM,sBAAsB,GAAG,WAAW,CACxC,CAAC,KAAiB,EAAE,EAAE;QACpB,IAAI,CAAC,GAAG,IAAI,CAAC,GAAG,CAAC,OAAO,IAAI,GAAG,CAAC,OAAO,CAAC,QAAQ,CAAC,KAAK,CAAC,MAAc,CAAC,EAAE;YACtE,OAAO;SACR;QAED,MAAM,mBAAmB,GAAG,aAAa,IAAI,KAAK,CAAC,MAAM,YAAY,WAAW,CAAC;QACjF,IAAI,mBAAmB,IAAI,KAAK,CAAC,MAAM,CAAC,OAAO,CAAC,aAAa,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE;YACxE,OAAO;SACR;QAED,QAAQ,CAAC,KAAK,CAAC,CAAC;IAClB,CAAC,EAED,CAAC,GAAG,EAAE,QAAQ,EAAE,aAAa,CAAC,CAC/B,CAAC;IAEF,MAAM,WAAW,GAAG,MAAM,CAAC,QAAQ,EAAE,CAAC,CAAC,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC;IAE9D,gBAAgB,CAAC;QACf,SAAS;QACT,GAAG,EAAE,WAAW;QAChB,QAAQ,EAAE,sBAAsB;QAChC,OAAO,EAAE,IAAI;KACd,CAAC,CAAC;IAEH,gBAAgB,CAAC;QACf,SAAS,EAAE,UAAU;QACrB,GAAG,EAAE,WAAW;QAChB,QAAQ,EAAE,sBAAsB;QAChC,OAAO,EAAE,IAAI;KACd,CAAC,CAAC;AACL,CAAC"}
1
+ {"version":3,"file":"index.js","sources":["../../src/useClickOutside/index.ts"],"sourcesContent":["import { useCallback, useRef, type RefObject } from \"react\";\nimport { type GenericEventCallback, isClient, useEventListener } from \"@vibe/shared\";\n\nexport default function useClickOutside({\n ref,\n callback,\n ignoreClasses,\n eventName = \"click\"\n}: {\n ref: RefObject<HTMLElement>;\n callback: GenericEventCallback;\n ignoreClasses?: string[];\n eventName?: keyof HTMLElementEventMap | string;\n}) {\n const onClickOutsideListener = useCallback(\n (event: MouseEvent) => {\n if (!ref || !ref.current || ref.current.contains(event.target as Node)) {\n return;\n }\n\n const shouldIgnoreClasses = ignoreClasses && event.target instanceof HTMLElement;\n if (shouldIgnoreClasses && event.target.closest(ignoreClasses.join(\",\"))) {\n return;\n }\n\n callback(event);\n },\n\n [ref, callback, ignoreClasses]\n );\n\n const documentRef = useRef(isClient() ? document.body : null);\n\n useEventListener({\n eventName,\n ref: documentRef,\n callback: onClickOutsideListener,\n capture: true\n });\n\n useEventListener({\n eventName: \"touchend\",\n ref: documentRef,\n callback: onClickOutsideListener,\n capture: true\n });\n}\n"],"names":["useClickOutside","ref","callback","ignoreClasses","eventName","onClickOutsideListener","useCallback","event","current","contains","target","HTMLElement","closest","join","documentRef","useRef","isClient","document","body","useEventListener","capture"],"mappings":"8GAGwB,SAAAA,GAAgBC,IACtCA,EAAGC,SACHA,EAAQC,cACRA,EAAaC,UACbA,EAAY,UAOZ,MAAMC,EAAyBC,GAC5BC,IACC,IAAKN,IAAQA,EAAIO,SAAWP,EAAIO,QAAQC,SAASF,EAAMG,QACrD,OAG0BP,GAAiBI,EAAMG,kBAAkBC,aAC1CJ,EAAMG,OAAOE,QAAQT,EAAcU,KAAK,OAInEX,EAASK,EAAM,GAGjB,CAACN,EAAKC,EAAUC,IAGZW,EAAcC,EAAOC,IAAaC,SAASC,KAAO,MAExDC,EAAiB,CACff,YACAH,IAAKa,EACLZ,SAAUG,EACVe,SAAS,IAGXD,EAAiB,CACff,UAAW,WACXH,IAAKa,EACLZ,SAAUG,EACVe,SAAS,GAEb"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@vibe/hooks",
3
- "version": "3.0.3-alpha-56c2d.0",
3
+ "version": "3.0.3-alpha-7c563.0",
4
4
  "description": "Vibe sub-package for React hooks",
5
5
  "repository": {
6
6
  "type": "git",
@@ -28,12 +28,12 @@
28
28
  }
29
29
  },
30
30
  "scripts": {
31
- "build": "tsc --outDir dist --declaration",
31
+ "build": "rollup -c",
32
32
  "test": "vitest run",
33
33
  "lint": "eslint \"./src/**/*.{js,jsx,ts,tsx}\""
34
34
  },
35
35
  "dependencies": {
36
- "@vibe/shared": "3.0.8",
36
+ "@vibe/shared": "3.0.9-alpha-7c563.0",
37
37
  "classnames": "^2.5.1",
38
38
  "es-toolkit": "^1.39.10"
39
39
  },
@@ -63,5 +63,5 @@
63
63
  "../../node_modules/@vibe/config/.eslintrc.cjs"
64
64
  ]
65
65
  },
66
- "gitHead": "92c51b881fceb86cd2480e46f49aa839c21277c5"
66
+ "gitHead": "5fb8d0d10c45987e6bb63f9d114757ac653e5206"
67
67
  }
@@ -1,68 +0,0 @@
1
- import { vi, beforeEach, afterEach, describe, it, expect } from "vitest";
2
- import { renderHook, cleanup, act } from "@testing-library/react-hooks";
3
- import { fireEvent } from "@testing-library/react";
4
- import useClickOutside from "../index";
5
- describe("useClickOutside", () => {
6
- let element;
7
- let callbackStub;
8
- beforeEach(() => {
9
- callbackStub = vi.fn();
10
- element = document.createElement("div");
11
- document.body.appendChild(element);
12
- renderHook(() => useClickOutside({ ref: { current: element }, callback: callbackStub }));
13
- });
14
- afterEach(() => {
15
- element.remove();
16
- cleanup();
17
- });
18
- describe("mouseDown", () => {
19
- it("should call the callback when click outside the element", () => {
20
- act(() => {
21
- fireEvent.click(document.body);
22
- });
23
- return expect(callbackStub.mock.calls.length).toEqual(1);
24
- });
25
- it("should not call the callback when clicking the element", () => {
26
- act(() => {
27
- fireEvent.click(element);
28
- });
29
- return expect(callbackStub.mock.calls.length).toEqual(0);
30
- });
31
- });
32
- describe("touchStart", () => {
33
- it("should call the callback when click outside the element", () => {
34
- act(() => {
35
- fireEvent.touchEnd(document.body);
36
- });
37
- return expect(callbackStub.mock.calls.length).toEqual(1);
38
- });
39
- it("should not call the callback when clicking the element", () => {
40
- act(() => {
41
- fireEvent.touchEnd(element);
42
- });
43
- return expect(callbackStub.mock.calls.length).toEqual(0);
44
- });
45
- });
46
- describe("contextMenu with overriding event name", () => {
47
- it("should not call the callback when click when overriding to differnet name", () => {
48
- element = document.createElement("div");
49
- document.body.appendChild(element);
50
- renderHook(() => useClickOutside({ ref: { current: element }, callback: callbackStub, eventName: "contextmenu" }));
51
- act(() => {
52
- fireEvent.mouseDown(document.body);
53
- });
54
- return expect(callbackStub.mock.calls.length).toEqual(0);
55
- });
56
- it("should call the callback for override when passing eventName parameter", () => {
57
- callbackStub = vi.fn();
58
- element = document.createElement("div");
59
- document.body.appendChild(element);
60
- renderHook(() => useClickOutside({ ref: { current: element }, callback: callbackStub, eventName: "contextmenu" }));
61
- act(() => {
62
- fireEvent.contextMenu(document.body);
63
- });
64
- return expect(callbackStub.mock.calls.length).toEqual(1);
65
- });
66
- });
67
- });
68
- //# sourceMappingURL=useClickOutside.test.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"useClickOutside.test.js","sourceRoot":"","sources":["../../../src/useClickOutside/__tests__/useClickOutside.test.ts"],"names":[],"mappings":"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"}