use-next-tick 1.1.2 → 1.1.3

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/README.md CHANGED
@@ -16,13 +16,16 @@ npm install use-next-tick
16
16
 
17
17
  ```tsx
18
18
  "use client";
19
- import { useState, useRef } from "react";
20
- import useNextTick from "use-next-tick";
19
+ import { useState, useRef, useLayoutEffect } from "react";
20
+ import useNextTick, {useNextTickLayout} from "use-next-tick";
21
21
 
22
22
  function MyComponent() {
23
23
  const [count, setCount] = useState(0);
24
24
  const ref = useRef<HTMLSpanElement>(null);
25
25
  const nextTick = useNextTick();
26
+ /*
27
+ const nextTick = useNextTickLayout(); // if you need `useLayoutEffect` instead off `useEffect`
28
+ */
26
29
 
27
30
  const handleClick = () => {
28
31
  setCount((c) => c + 1);
@@ -94,7 +97,7 @@ bun install && bun run build
94
97
  ## TypeScript
95
98
 
96
99
  ```ts
97
- function useNextTick(): (cb: () => void | Promise<void>) => void;
100
+ export default function useNextTick(useEffectHook?: typeof useEffect | typeof useLayoutEffect): (cb: NextTickCallback) => void;
98
101
  ```
99
102
 
100
103
  Fully typed. Callbacks can be sync or async:
package/dist/index.d.ts CHANGED
@@ -1,2 +1,4 @@
1
+ import { useLayoutEffect, useEffect } from "react";
1
2
  export type NextTickCallback = () => void | Promise<void>;
2
- export default function useNextTick(): (cb: NextTickCallback) => void;
3
+ export default function useNextTick(useEffectHook?: typeof useEffect | typeof useLayoutEffect): (cb: NextTickCallback) => void;
4
+ export declare function useNextTickLayout(): (cb: NextTickCallback) => void;
package/dist/index.js CHANGED
@@ -1,4 +1,4 @@
1
- import{useEffect as i,useRef as r,useCallback as o}from"react";function u(){let e=r([]),c=r(!1);return i(()=>{if(!c.current)return;c.current=!1;let t=e.current;e.current=[];for(let n of t)n()}),o((t)=>{e.current.push(t),c.current=!0},[])}export{u as default};
1
+ import{useRef as r,useCallback as f,useLayoutEffect as a,useEffect as i}from"react";function u(n=i){let e=r([]),t=r(!1);return n(()=>{if(!t.current)return;t.current=!1;let c=e.current;e.current=[];for(let o of c)o()}),f((c)=>{e.current.push(c),t.current=!0},[])}function k(){return u(a)}export{k as useNextTickLayout,u as default};
2
2
 
3
- //# debugId=1994852A3252699764756E2164756E21
3
+ //# debugId=522FAD13C6AB3C0264756E2164756E21
4
4
  //# sourceMappingURL=index.js.map
package/dist/index.js.map CHANGED
@@ -2,9 +2,9 @@
2
2
  "version": 3,
3
3
  "sources": ["../src/index.ts"],
4
4
  "sourcesContent": [
5
- "import { useEffect, useRef, useCallback } from \"react\";\n\nexport type NextTickCallback = () => void | Promise<void>;\n\nexport default function useNextTick(): (cb: NextTickCallback) => void {\n const callbacksRef = useRef<NextTickCallback[]>([]);\n const pendingRef = useRef(false);\n\n useEffect(() => {\n if (!pendingRef.current) return;\n\n pendingRef.current = false;\n const pending = callbacksRef.current;\n callbacksRef.current = [];\n for (const cb of pending) {\n cb();\n }\n });\n\n const nextTick = useCallback((cb: NextTickCallback) => {\n callbacksRef.current.push(cb);\n pendingRef.current = true;\n }, []);\n\n return nextTick;\n}\n"
5
+ "import { useRef, useCallback, useLayoutEffect, useEffect } from \"react\";\n\nexport type NextTickCallback = () => void | Promise<void>;\n\nexport default function useNextTick(\n useEffectHook: typeof useEffect | typeof useLayoutEffect = useEffect\n): (cb: NextTickCallback) => void {\n const callbacksRef = useRef<NextTickCallback[]>([]);\n const pendingRef = useRef(false);\n\n useEffectHook(() => {\n if (!pendingRef.current) return;\n\n pendingRef.current = false;\n const pending = callbacksRef.current;\n callbacksRef.current = [];\n for (const cb of pending) {\n cb();\n }\n });\n\n const nextTick = useCallback((cb: NextTickCallback) => {\n callbacksRef.current.push(cb);\n pendingRef.current = true;\n }, []);\n\n return nextTick;\n}\n\nexport function useNextTickLayout() {\n return useNextTick(useLayoutEffect);\n}\n"
6
6
  ],
7
- "mappings": "AAAA,oBAAS,YAAW,iBAAQ,cAI5B,SAAwB,CAAW,EAAmC,CACpE,IAAM,EAAe,EAA2B,CAAC,CAAC,EAC5C,EAAa,EAAO,EAAK,EAkB/B,OAhBA,EAAU,IAAM,CACd,GAAI,CAAC,EAAW,QAAS,OAEzB,EAAW,QAAU,GACrB,IAAM,EAAU,EAAa,QAC7B,EAAa,QAAU,CAAC,EACxB,QAAW,KAAM,EACf,EAAG,EAEN,EAEgB,EAAY,CAAC,IAAyB,CACrD,EAAa,QAAQ,KAAK,CAAE,EAC5B,EAAW,QAAU,IACpB,CAAC,CAAC",
8
- "debugId": "1994852A3252699764756E2164756E21",
7
+ "mappings": "AAAA,iBAAS,iBAAQ,qBAAa,eAAiB,cAI/C,SAAwB,CAAW,CACjC,EAA2D,EAC3B,CAChC,IAAM,EAAe,EAA2B,CAAC,CAAC,EAC5C,EAAa,EAAO,EAAK,EAkB/B,OAhBA,EAAc,IAAM,CAClB,GAAI,CAAC,EAAW,QAAS,OAEzB,EAAW,QAAU,GACrB,IAAM,EAAU,EAAa,QAC7B,EAAa,QAAU,CAAC,EACxB,QAAW,KAAM,EACf,EAAG,EAEN,EAEgB,EAAY,CAAC,IAAyB,CACrD,EAAa,QAAQ,KAAK,CAAE,EAC5B,EAAW,QAAU,IACpB,CAAC,CAAC,EAKA,SAAS,CAAiB,EAAG,CAClC,OAAO,EAAY,CAAe",
8
+ "debugId": "522FAD13C6AB3C0264756E2164756E21",
9
9
  "names": []
10
10
  }
@@ -1,2 +1,3 @@
1
+ import { useEffect, useLayoutEffect } from "react";
1
2
  export type NextTickCallback = () => void | Promise<void>;
2
- export default function useNextTick(): (cb: NextTickCallback) => void;
3
+ export default function useNextTick(useEffectHook?: typeof useEffect | typeof useLayoutEffect): (cb: NextTickCallback) => void;
@@ -1,4 +1,4 @@
1
- import{useEffect as i,useRef as r,useCallback as o}from"react";function u(){let e=r([]),t=r(!1);return i(()=>{if(!t.current)return;t.current=!1;let c=e.current;e.current=[],setTimeout(()=>{for(let n of c)n()},0)}),o((c)=>{e.current.push(c),t.current=!0},[])}export{u as default};
1
+ import{useEffect as n,useRef as r,useCallback as o}from"react";function s(u=n){let e=r([]),t=r(!1);return u(()=>{if(!t.current)return;t.current=!1;let c=e.current;e.current=[],setTimeout(()=>{for(let f of c)f()},0)}),o((c)=>{e.current.push(c),t.current=!0},[])}export{s as default};
2
2
 
3
- //# debugId=3B7FF0A1E8F2680564756E2164756E21
3
+ //# debugId=0A16B9BA1C04CDB964756E2164756E21
4
4
  //# sourceMappingURL=react-native.js.map
@@ -2,9 +2,9 @@
2
2
  "version": 3,
3
3
  "sources": ["../src/react-native.ts"],
4
4
  "sourcesContent": [
5
- "import { useEffect, useRef, useCallback } from \"react\";\n\nexport type NextTickCallback = () => void | Promise<void>;\n\nexport default function useNextTick(): (cb: NextTickCallback) => void {\n const callbacksRef = useRef<NextTickCallback[]>([]);\n const pendingRef = useRef(false);\n\n useEffect(() => {\n if (!pendingRef.current) return;\n\n pendingRef.current = false;\n const pending = callbacksRef.current;\n callbacksRef.current = [];\n setTimeout(() => {\n for (const cb of pending) {\n cb();\n }\n }, 0);\n });\n\n const nextTick = useCallback((cb: NextTickCallback) => {\n callbacksRef.current.push(cb);\n pendingRef.current = true;\n }, []);\n\n return nextTick;\n}\n"
5
+ "import { useEffect, useLayoutEffect, useRef, useCallback } from \"react\";\n\nexport type NextTickCallback = () => void | Promise<void>;\n\nexport default function useNextTick(\n useEffectHook: typeof useEffect | typeof useLayoutEffect = useEffect\n): (cb: NextTickCallback) => void {\n const callbacksRef = useRef<NextTickCallback[]>([]);\n const pendingRef = useRef(false);\n\n useEffectHook(() => {\n if (!pendingRef.current) return;\n\n pendingRef.current = false;\n const pending = callbacksRef.current;\n callbacksRef.current = [];\n setTimeout(() => {\n for (const cb of pending) {\n cb();\n }\n }, 0);\n });\n\n const nextTick = useCallback((cb: NextTickCallback) => {\n callbacksRef.current.push(cb);\n pendingRef.current = true;\n }, []);\n\n return nextTick;\n}\n"
6
6
  ],
7
- "mappings": "AAAA,oBAAS,YAAW,iBAAQ,cAI5B,SAAwB,CAAW,EAAmC,CACpE,IAAM,EAAe,EAA2B,CAAC,CAAC,EAC5C,EAAa,EAAO,EAAK,EAoB/B,OAlBA,EAAU,IAAM,CACd,GAAI,CAAC,EAAW,QAAS,OAEzB,EAAW,QAAU,GACrB,IAAM,EAAU,EAAa,QAC7B,EAAa,QAAU,CAAC,EACxB,WAAW,IAAM,CACf,QAAW,KAAM,EACf,EAAG,GAEJ,CAAC,EACL,EAEgB,EAAY,CAAC,IAAyB,CACrD,EAAa,QAAQ,KAAK,CAAE,EAC5B,EAAW,QAAU,IACpB,CAAC,CAAC",
8
- "debugId": "3B7FF0A1E8F2680564756E2164756E21",
7
+ "mappings": "AAAA,oBAAS,YAA4B,iBAAQ,cAI7C,SAAwB,CAAW,CACjC,EAA2D,EAC3B,CAChC,IAAM,EAAe,EAA2B,CAAC,CAAC,EAC5C,EAAa,EAAO,EAAK,EAoB/B,OAlBA,EAAc,IAAM,CAClB,GAAI,CAAC,EAAW,QAAS,OAEzB,EAAW,QAAU,GACrB,IAAM,EAAU,EAAa,QAC7B,EAAa,QAAU,CAAC,EACxB,WAAW,IAAM,CACf,QAAW,KAAM,EACf,EAAG,GAEJ,CAAC,EACL,EAEgB,EAAY,CAAC,IAAyB,CACrD,EAAa,QAAQ,KAAK,CAAE,EAC5B,EAAW,QAAU,IACpB,CAAC,CAAC",
8
+ "debugId": "0A16B9BA1C04CDB964756E2164756E21",
9
9
  "names": []
10
10
  }
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "use-next-tick",
3
- "version": "1.1.2",
3
+ "version": "1.1.3",
4
4
  "description": "A React hook for running callbacks after the DOM or native views have updated.",
5
5
  "repository": "suhaotian/use-next-tick",
6
6
  "bugs": "https://github.com/suhaotian/use-next-tick/issues",