@prtcl/plonk-hooks 1.0.6 → 1.0.7
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.cjs +4 -4
- package/dist/index.cjs.map +1 -1
- package/dist/index.js +4 -4
- package/dist/index.js.map +1 -1
- package/package.json +2 -2
package/dist/index.cjs
CHANGED
|
@@ -28,11 +28,11 @@ __export(index_exports, {
|
|
|
28
28
|
module.exports = __toCommonJS(index_exports);
|
|
29
29
|
var import_client_only = require("client-only");
|
|
30
30
|
|
|
31
|
-
// src/
|
|
31
|
+
// src/useFrames.ts
|
|
32
32
|
var import_react2 = require("react");
|
|
33
33
|
var import_plonk = require("@prtcl/plonk");
|
|
34
34
|
|
|
35
|
-
// src/
|
|
35
|
+
// src/usePrevious.ts
|
|
36
36
|
var import_react = require("react");
|
|
37
37
|
var usePrevious = (value) => {
|
|
38
38
|
const ref = (0, import_react.useRef)({
|
|
@@ -49,7 +49,7 @@ var usePrevious = (value) => {
|
|
|
49
49
|
return ref.current.prev;
|
|
50
50
|
};
|
|
51
51
|
|
|
52
|
-
// src/
|
|
52
|
+
// src/useFrames.ts
|
|
53
53
|
var useFrames = (callback, opts) => {
|
|
54
54
|
const { autostart = true } = opts || {};
|
|
55
55
|
const callbackRef = (0, import_react2.useRef)(callback);
|
|
@@ -77,7 +77,7 @@ var useFrames = (callback, opts) => {
|
|
|
77
77
|
return frames;
|
|
78
78
|
};
|
|
79
79
|
|
|
80
|
-
// src/
|
|
80
|
+
// src/useMetro.ts
|
|
81
81
|
var import_react3 = require("react");
|
|
82
82
|
var import_plonk2 = require("@prtcl/plonk");
|
|
83
83
|
var useMetro = (callback, opts) => {
|
package/dist/index.cjs.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../src/index.ts","../src/
|
|
1
|
+
{"version":3,"sources":["../src/index.ts","../src/useFrames.ts","../src/usePrevious.ts","../src/useMetro.ts"],"sourcesContent":["'use client';\n\nimport 'client-only';\n\nexport { useFrames, type UseFramesOptions } from './useFrames';\nexport { useMetro, type UseMetroOptions } from './useMetro';\nexport { usePrevious } from './usePrevious';\n","import { useEffect, useMemo, useRef } from 'react';\nimport { Frames, type FramesOptions, type TimerCallback } from '@prtcl/plonk';\nimport { usePrevious } from './usePrevious';\n\nexport type UseFramesOptions = FramesOptions & {\n autostart?: boolean;\n};\n\n/**\n * Hook wrapper for Frames, autostart begins on mount and stops on unmount.\n * @param callback - {@link TimerCallback} called on each frame tick.\n * @param opts - {@link UseFramesOptions} for configuring frame rate and autostart.\n * @returns The underlying Frames instance.\n */\nexport const useFrames = (callback: TimerCallback<Frames>, opts?: UseFramesOptions) => {\n const { autostart = true } = opts || {};\n const callbackRef = useRef<TimerCallback<Frames>>(callback);\n const optsRef = useRef<UseFramesOptions | undefined>(opts);\n const prevOpts = usePrevious(opts);\n\n callbackRef.current = callback;\n\n const frames = useMemo<Frames>(() => {\n return new Frames((m) => {\n callbackRef.current(m);\n }, optsRef.current);\n }, []);\n\n useEffect(() => {\n if (opts && prevOpts && opts.fps !== prevOpts.fps) {\n frames.setFPS(opts.fps);\n }\n }, [opts, prevOpts, frames]);\n\n useEffect(() => {\n if (autostart) {\n frames.run();\n }\n\n return () => {\n frames.stop();\n };\n }, [frames]);\n\n return frames;\n};\n","import { useRef } from 'react';\n\ntype ValueCache<Value> = {\n value: Value;\n prev: Value | undefined;\n};\n\n/**\n * Returns the previous value of a variable without causing additional renders.\n * @param value - The current value to track.\n * @returns The value from the previous render, or undefined on the first render.\n */\nexport const usePrevious = <Value>(value: Value): Value | undefined => {\n const ref = useRef<ValueCache<Value>>({\n value,\n prev: undefined,\n });\n\n const current = ref.current.value;\n\n if (value !== current) {\n ref.current = {\n value,\n prev: current,\n };\n }\n\n return ref.current.prev;\n};\n","import { useEffect, useMemo, useRef } from 'react';\nimport { Metro, type MetroOptions, type TimerCallback } from '@prtcl/plonk';\nimport { usePrevious } from './usePrevious';\n\nexport type UseMetroOptions = MetroOptions & {\n autostart?: boolean;\n};\n\n/**\n * Hook wrapper for Metro, autostart begins on mount and stops on unmount.\n * @param callback - {@link TimerCallback} called on each tick.\n * @param opts - {@link UseMetroOptions} for configuring the timer and autostart.\n * @returns The underlying Metro instance.\n */\nexport const useMetro = (callback: TimerCallback<Metro>, opts?: UseMetroOptions) => {\n const { autostart = true } = opts || {};\n const callbackRef = useRef<TimerCallback<Metro>>(callback);\n const optsRef = useRef<UseMetroOptions | undefined>(opts);\n const prevOpts = usePrevious(opts);\n\n callbackRef.current = callback;\n\n const metro = useMemo<Metro>(() => {\n return new Metro((m) => {\n callbackRef.current(m);\n }, optsRef.current);\n }, []);\n\n useEffect(() => {\n if (opts && prevOpts && opts.time !== prevOpts.time) {\n metro.setTime(opts.time);\n }\n }, [opts, prevOpts, metro]);\n\n useEffect(() => {\n if (autostart) {\n metro.run();\n }\n\n return () => {\n metro.stop();\n };\n }, [metro]);\n\n return metro;\n};\n"],"mappings":";;;;;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAEA,yBAAO;;;ACFP,IAAAA,gBAA2C;AAC3C,mBAA+D;;;ACD/D,mBAAuB;AAYhB,IAAM,cAAc,CAAQ,UAAoC;AACrE,QAAM,UAAM,qBAA0B;AAAA,IACpC;AAAA,IACA,MAAM;AAAA,EACR,CAAC;AAED,QAAM,UAAU,IAAI,QAAQ;AAE5B,MAAI,UAAU,SAAS;AACrB,QAAI,UAAU;AAAA,MACZ;AAAA,MACA,MAAM;AAAA,IACR;AAAA,EACF;AAEA,SAAO,IAAI,QAAQ;AACrB;;;ADdO,IAAM,YAAY,CAAC,UAAiC,SAA4B;AACrF,QAAM,EAAE,YAAY,KAAK,IAAI,QAAQ,CAAC;AACtC,QAAM,kBAAc,sBAA8B,QAAQ;AAC1D,QAAM,cAAU,sBAAqC,IAAI;AACzD,QAAM,WAAW,YAAY,IAAI;AAEjC,cAAY,UAAU;AAEtB,QAAM,aAAS,uBAAgB,MAAM;AACnC,WAAO,IAAI,oBAAO,CAAC,MAAM;AACvB,kBAAY,QAAQ,CAAC;AAAA,IACvB,GAAG,QAAQ,OAAO;AAAA,EACpB,GAAG,CAAC,CAAC;AAEL,+BAAU,MAAM;AACd,QAAI,QAAQ,YAAY,KAAK,QAAQ,SAAS,KAAK;AACjD,aAAO,OAAO,KAAK,GAAG;AAAA,IACxB;AAAA,EACF,GAAG,CAAC,MAAM,UAAU,MAAM,CAAC;AAE3B,+BAAU,MAAM;AACd,QAAI,WAAW;AACb,aAAO,IAAI;AAAA,IACb;AAEA,WAAO,MAAM;AACX,aAAO,KAAK;AAAA,IACd;AAAA,EACF,GAAG,CAAC,MAAM,CAAC;AAEX,SAAO;AACT;;;AE7CA,IAAAC,gBAA2C;AAC3C,IAAAC,gBAA6D;AAatD,IAAM,WAAW,CAAC,UAAgC,SAA2B;AAClF,QAAM,EAAE,YAAY,KAAK,IAAI,QAAQ,CAAC;AACtC,QAAM,kBAAc,sBAA6B,QAAQ;AACzD,QAAM,cAAU,sBAAoC,IAAI;AACxD,QAAM,WAAW,YAAY,IAAI;AAEjC,cAAY,UAAU;AAEtB,QAAM,YAAQ,uBAAe,MAAM;AACjC,WAAO,IAAI,oBAAM,CAAC,MAAM;AACtB,kBAAY,QAAQ,CAAC;AAAA,IACvB,GAAG,QAAQ,OAAO;AAAA,EACpB,GAAG,CAAC,CAAC;AAEL,+BAAU,MAAM;AACd,QAAI,QAAQ,YAAY,KAAK,SAAS,SAAS,MAAM;AACnD,YAAM,QAAQ,KAAK,IAAI;AAAA,IACzB;AAAA,EACF,GAAG,CAAC,MAAM,UAAU,KAAK,CAAC;AAE1B,+BAAU,MAAM;AACd,QAAI,WAAW;AACb,YAAM,IAAI;AAAA,IACZ;AAEA,WAAO,MAAM;AACX,YAAM,KAAK;AAAA,IACb;AAAA,EACF,GAAG,CAAC,KAAK,CAAC;AAEV,SAAO;AACT;","names":["import_react","import_react","import_plonk"]}
|
package/dist/index.js
CHANGED
|
@@ -3,11 +3,11 @@
|
|
|
3
3
|
// src/index.ts
|
|
4
4
|
import "client-only";
|
|
5
5
|
|
|
6
|
-
// src/
|
|
6
|
+
// src/useFrames.ts
|
|
7
7
|
import { useEffect, useMemo, useRef as useRef2 } from "react";
|
|
8
8
|
import { Frames } from "@prtcl/plonk";
|
|
9
9
|
|
|
10
|
-
// src/
|
|
10
|
+
// src/usePrevious.ts
|
|
11
11
|
import { useRef } from "react";
|
|
12
12
|
var usePrevious = (value) => {
|
|
13
13
|
const ref = useRef({
|
|
@@ -24,7 +24,7 @@ var usePrevious = (value) => {
|
|
|
24
24
|
return ref.current.prev;
|
|
25
25
|
};
|
|
26
26
|
|
|
27
|
-
// src/
|
|
27
|
+
// src/useFrames.ts
|
|
28
28
|
var useFrames = (callback, opts) => {
|
|
29
29
|
const { autostart = true } = opts || {};
|
|
30
30
|
const callbackRef = useRef2(callback);
|
|
@@ -52,7 +52,7 @@ var useFrames = (callback, opts) => {
|
|
|
52
52
|
return frames;
|
|
53
53
|
};
|
|
54
54
|
|
|
55
|
-
// src/
|
|
55
|
+
// src/useMetro.ts
|
|
56
56
|
import { useEffect as useEffect2, useMemo as useMemo2, useRef as useRef3 } from "react";
|
|
57
57
|
import { Metro } from "@prtcl/plonk";
|
|
58
58
|
var useMetro = (callback, opts) => {
|
package/dist/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../src/index.ts","../src/
|
|
1
|
+
{"version":3,"sources":["../src/index.ts","../src/useFrames.ts","../src/usePrevious.ts","../src/useMetro.ts"],"sourcesContent":["'use client';\n\nimport 'client-only';\n\nexport { useFrames, type UseFramesOptions } from './useFrames';\nexport { useMetro, type UseMetroOptions } from './useMetro';\nexport { usePrevious } from './usePrevious';\n","import { useEffect, useMemo, useRef } from 'react';\nimport { Frames, type FramesOptions, type TimerCallback } from '@prtcl/plonk';\nimport { usePrevious } from './usePrevious';\n\nexport type UseFramesOptions = FramesOptions & {\n autostart?: boolean;\n};\n\n/**\n * Hook wrapper for Frames, autostart begins on mount and stops on unmount.\n * @param callback - {@link TimerCallback} called on each frame tick.\n * @param opts - {@link UseFramesOptions} for configuring frame rate and autostart.\n * @returns The underlying Frames instance.\n */\nexport const useFrames = (callback: TimerCallback<Frames>, opts?: UseFramesOptions) => {\n const { autostart = true } = opts || {};\n const callbackRef = useRef<TimerCallback<Frames>>(callback);\n const optsRef = useRef<UseFramesOptions | undefined>(opts);\n const prevOpts = usePrevious(opts);\n\n callbackRef.current = callback;\n\n const frames = useMemo<Frames>(() => {\n return new Frames((m) => {\n callbackRef.current(m);\n }, optsRef.current);\n }, []);\n\n useEffect(() => {\n if (opts && prevOpts && opts.fps !== prevOpts.fps) {\n frames.setFPS(opts.fps);\n }\n }, [opts, prevOpts, frames]);\n\n useEffect(() => {\n if (autostart) {\n frames.run();\n }\n\n return () => {\n frames.stop();\n };\n }, [frames]);\n\n return frames;\n};\n","import { useRef } from 'react';\n\ntype ValueCache<Value> = {\n value: Value;\n prev: Value | undefined;\n};\n\n/**\n * Returns the previous value of a variable without causing additional renders.\n * @param value - The current value to track.\n * @returns The value from the previous render, or undefined on the first render.\n */\nexport const usePrevious = <Value>(value: Value): Value | undefined => {\n const ref = useRef<ValueCache<Value>>({\n value,\n prev: undefined,\n });\n\n const current = ref.current.value;\n\n if (value !== current) {\n ref.current = {\n value,\n prev: current,\n };\n }\n\n return ref.current.prev;\n};\n","import { useEffect, useMemo, useRef } from 'react';\nimport { Metro, type MetroOptions, type TimerCallback } from '@prtcl/plonk';\nimport { usePrevious } from './usePrevious';\n\nexport type UseMetroOptions = MetroOptions & {\n autostart?: boolean;\n};\n\n/**\n * Hook wrapper for Metro, autostart begins on mount and stops on unmount.\n * @param callback - {@link TimerCallback} called on each tick.\n * @param opts - {@link UseMetroOptions} for configuring the timer and autostart.\n * @returns The underlying Metro instance.\n */\nexport const useMetro = (callback: TimerCallback<Metro>, opts?: UseMetroOptions) => {\n const { autostart = true } = opts || {};\n const callbackRef = useRef<TimerCallback<Metro>>(callback);\n const optsRef = useRef<UseMetroOptions | undefined>(opts);\n const prevOpts = usePrevious(opts);\n\n callbackRef.current = callback;\n\n const metro = useMemo<Metro>(() => {\n return new Metro((m) => {\n callbackRef.current(m);\n }, optsRef.current);\n }, []);\n\n useEffect(() => {\n if (opts && prevOpts && opts.time !== prevOpts.time) {\n metro.setTime(opts.time);\n }\n }, [opts, prevOpts, metro]);\n\n useEffect(() => {\n if (autostart) {\n metro.run();\n }\n\n return () => {\n metro.stop();\n };\n }, [metro]);\n\n return metro;\n};\n"],"mappings":";;;AAEA,OAAO;;;ACFP,SAAS,WAAW,SAAS,UAAAA,eAAc;AAC3C,SAAS,cAAsD;;;ACD/D,SAAS,cAAc;AAYhB,IAAM,cAAc,CAAQ,UAAoC;AACrE,QAAM,MAAM,OAA0B;AAAA,IACpC;AAAA,IACA,MAAM;AAAA,EACR,CAAC;AAED,QAAM,UAAU,IAAI,QAAQ;AAE5B,MAAI,UAAU,SAAS;AACrB,QAAI,UAAU;AAAA,MACZ;AAAA,MACA,MAAM;AAAA,IACR;AAAA,EACF;AAEA,SAAO,IAAI,QAAQ;AACrB;;;ADdO,IAAM,YAAY,CAAC,UAAiC,SAA4B;AACrF,QAAM,EAAE,YAAY,KAAK,IAAI,QAAQ,CAAC;AACtC,QAAM,cAAcC,QAA8B,QAAQ;AAC1D,QAAM,UAAUA,QAAqC,IAAI;AACzD,QAAM,WAAW,YAAY,IAAI;AAEjC,cAAY,UAAU;AAEtB,QAAM,SAAS,QAAgB,MAAM;AACnC,WAAO,IAAI,OAAO,CAAC,MAAM;AACvB,kBAAY,QAAQ,CAAC;AAAA,IACvB,GAAG,QAAQ,OAAO;AAAA,EACpB,GAAG,CAAC,CAAC;AAEL,YAAU,MAAM;AACd,QAAI,QAAQ,YAAY,KAAK,QAAQ,SAAS,KAAK;AACjD,aAAO,OAAO,KAAK,GAAG;AAAA,IACxB;AAAA,EACF,GAAG,CAAC,MAAM,UAAU,MAAM,CAAC;AAE3B,YAAU,MAAM;AACd,QAAI,WAAW;AACb,aAAO,IAAI;AAAA,IACb;AAEA,WAAO,MAAM;AACX,aAAO,KAAK;AAAA,IACd;AAAA,EACF,GAAG,CAAC,MAAM,CAAC;AAEX,SAAO;AACT;;;AE7CA,SAAS,aAAAC,YAAW,WAAAC,UAAS,UAAAC,eAAc;AAC3C,SAAS,aAAoD;AAatD,IAAM,WAAW,CAAC,UAAgC,SAA2B;AAClF,QAAM,EAAE,YAAY,KAAK,IAAI,QAAQ,CAAC;AACtC,QAAM,cAAcC,QAA6B,QAAQ;AACzD,QAAM,UAAUA,QAAoC,IAAI;AACxD,QAAM,WAAW,YAAY,IAAI;AAEjC,cAAY,UAAU;AAEtB,QAAM,QAAQC,SAAe,MAAM;AACjC,WAAO,IAAI,MAAM,CAAC,MAAM;AACtB,kBAAY,QAAQ,CAAC;AAAA,IACvB,GAAG,QAAQ,OAAO;AAAA,EACpB,GAAG,CAAC,CAAC;AAEL,EAAAC,WAAU,MAAM;AACd,QAAI,QAAQ,YAAY,KAAK,SAAS,SAAS,MAAM;AACnD,YAAM,QAAQ,KAAK,IAAI;AAAA,IACzB;AAAA,EACF,GAAG,CAAC,MAAM,UAAU,KAAK,CAAC;AAE1B,EAAAA,WAAU,MAAM;AACd,QAAI,WAAW;AACb,YAAM,IAAI;AAAA,IACZ;AAEA,WAAO,MAAM;AACX,YAAM,KAAK;AAAA,IACb;AAAA,EACF,GAAG,CAAC,KAAK,CAAC;AAEV,SAAO;AACT;","names":["useRef","useRef","useEffect","useMemo","useRef","useRef","useMemo","useEffect"]}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@prtcl/plonk-hooks",
|
|
3
|
-
"version": "1.0.
|
|
3
|
+
"version": "1.0.7",
|
|
4
4
|
"description": "React hook wrappers for plonk",
|
|
5
5
|
"author": "Cory O'Brien <cory@prtcl.cc>",
|
|
6
6
|
"license": "MIT",
|
|
@@ -23,7 +23,7 @@
|
|
|
23
23
|
"test": "vitest --browser.name=chrome --browser.headless --watch=false"
|
|
24
24
|
},
|
|
25
25
|
"dependencies": {
|
|
26
|
-
"@prtcl/plonk": "1.0.
|
|
26
|
+
"@prtcl/plonk": "1.0.7",
|
|
27
27
|
"client-only": "^0.0.1"
|
|
28
28
|
},
|
|
29
29
|
"peerDependencies": {
|