@siberiacancode/reactuse 0.2.16 → 0.2.17
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/cjs/helpers/createEventEmitter/createEventEmitter.cjs +1 -1
- package/dist/cjs/helpers/createEventEmitter/createEventEmitter.cjs.map +1 -1
- package/dist/esm/helpers/createEventEmitter/createEventEmitter.mjs +22 -19
- package/dist/esm/helpers/createEventEmitter/createEventEmitter.mjs.map +1 -1
- package/dist/types/helpers/createEventEmitter/createEventEmitter.d.ts +3 -4
- package/package.json +1 -1
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
"use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const c=require("react"),
|
|
1
|
+
"use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const c=require("react"),v=()=>{const r=new Map,a=(e,t)=>{r.get(e)?.forEach(n=>n(t))},u=(e,t)=>{const s=e,n=r.get(s);n&&(n.delete(t),n.size||r.delete(s))},o=(e,t)=>{const s=e;return r.has(s)||r.set(s,new Set),r.get(e).add(t),()=>{u(e,t)}};return{push:a,subscribe:o,unsubscribe:u,useSubscribe:(e,t)=>{const[s,n]=c.useState(void 0),i=c.useRef(t);return i.current=t,c.useEffect(()=>{const f=o(e,b=>{n(b),i.current?.(b)});return()=>{f()}},[e]),s}}};exports.createEventEmitter=v;
|
|
2
2
|
//# sourceMappingURL=createEventEmitter.cjs.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"createEventEmitter.cjs","sources":["../../../../src/helpers/createEventEmitter/createEventEmitter.ts"],"sourcesContent":["import { useEffect, useRef, useState } from 'react';\n\n/**\n * @name createEventEmitter\n * @description - Creates a type-safe event emitter\n * @category Helpers\n *\n * @template Events - The type of events and their data\n * @returns {Events} - Object containing event emitter methods and hook\n *\n * @example\n * const {
|
|
1
|
+
{"version":3,"file":"createEventEmitter.cjs","sources":["../../../../src/helpers/createEventEmitter/createEventEmitter.ts"],"sourcesContent":["import { useEffect, useRef, useState } from 'react';\n\n/**\n * @name createEventEmitter\n * @description - Creates a type-safe event emitter\n * @category Helpers\n *\n * @template Events - The type of events and their data\n * @returns {EventEmitterApi<Events>} - Object containing event emitter methods and hook\n *\n * @example\n * const { push, subscribe, unsubscribe, useSubscribe } = createEventEmitter<{ foo: number }>();\n */\nexport const createEventEmitter = <Events extends Record<string, any> = Record<string, any>>() => {\n type ListenerMap = Map<string, Set<(data: any) => void>>;\n const listeners: ListenerMap = new Map();\n\n const push = <Event extends keyof Events>(event: Event, data: Events[Event]) => {\n const eventListeners = listeners.get(event as string);\n eventListeners?.forEach((listener) => listener(data));\n };\n\n const unsubscribe = <Key extends keyof Events>(\n event: Key,\n listener: (data: Events[Key]) => void\n ) => {\n const eventKey = event as string;\n const eventListeners = listeners.get(eventKey);\n if (!eventListeners) return;\n eventListeners.delete(listener);\n if (!eventListeners.size) listeners.delete(eventKey);\n };\n\n const subscribe = <Key extends keyof Events>(\n event: Key,\n listener: (data: Events[Key]) => void\n ) => {\n const eventKey = event as string;\n if (!listeners.has(eventKey)) listeners.set(eventKey, new Set());\n const eventListeners = listeners.get(event as string)!;\n eventListeners.add(listener);\n\n return () => {\n unsubscribe(event, listener);\n };\n };\n\n const useSubscribe = <Event extends keyof Events>(\n event: Event,\n listener?: (data: Events[Event]) => void\n ) => {\n const [data, setData] = useState<Events[Event] | undefined>(undefined);\n const listenerRef = useRef(listener);\n listenerRef.current = listener;\n\n useEffect(() => {\n const onSubscribe = (data: Events[Event]) => {\n setData(data);\n listenerRef.current?.(data);\n };\n\n const unsubscribe = subscribe(event, onSubscribe);\n return () => {\n unsubscribe();\n };\n }, [event]);\n\n return data;\n };\n\n return {\n push,\n subscribe,\n unsubscribe,\n useSubscribe\n };\n};\n"],"names":["createEventEmitter","listeners","push","event","data","listener","unsubscribe","eventKey","eventListeners","subscribe","setData","useState","listenerRef","useRef","useEffect"],"mappings":"yGAaaA,EAAqB,IAAgE,CAEhG,MAAMC,MAA6B,IAE7BC,EAAO,CAA6BC,EAAcC,IAAwB,CACvDH,EAAU,IAAIE,CAAe,GACpC,QAASE,GAAaA,EAASD,CAAI,CAAC,CAAA,EAGhDE,EAAc,CAClBH,EACAE,IACG,CACH,MAAME,EAAWJ,EACXK,EAAiBP,EAAU,IAAIM,CAAQ,EACxCC,IACLA,EAAe,OAAOH,CAAQ,EACzBG,EAAe,MAAMP,EAAU,OAAOM,CAAQ,EAAA,EAG/CE,EAAY,CAChBN,EACAE,IACG,CACH,MAAME,EAAWJ,EACjB,OAAKF,EAAU,IAAIM,CAAQ,KAAa,IAAIA,EAAU,IAAI,GAAK,EACxCN,EAAU,IAAIE,CAAe,EACrC,IAAIE,CAAQ,EAEpB,IAAM,CACXC,EAAYH,EAAOE,CAAQ,CAAA,CAC7B,EA0BF,MAAO,CACL,KAAAH,EACA,UAAAO,EACA,YAAAH,EACA,aA3BmB,CACnBH,EACAE,IACG,CACH,KAAM,CAACD,EAAMM,CAAO,EAAIC,EAAAA,SAAoC,MAAS,EAC/DC,EAAcC,EAAAA,OAAOR,CAAQ,EACnC,OAAAO,EAAY,QAAUP,EAEtBS,EAAAA,UAAU,IAAM,CAMd,MAAMR,EAAcG,EAAUN,EALTC,GAAwB,CAC3CM,EAAQN,CAAI,EACZQ,EAAY,UAAUR,CAAI,CAAA,CAGoB,EAChD,MAAO,IAAM,CACXE,EAAAA,CAAY,CACd,EACC,CAACH,CAAK,CAAC,EAEHC,CAAA,CAOP,CAEJ"}
|
|
@@ -1,31 +1,34 @@
|
|
|
1
|
-
import { useState as
|
|
2
|
-
const
|
|
3
|
-
const
|
|
4
|
-
|
|
5
|
-
|
|
1
|
+
import { useState as a, useRef as v, useEffect as S } from "react";
|
|
2
|
+
const E = () => {
|
|
3
|
+
const r = /* @__PURE__ */ new Map(), b = (e, t) => {
|
|
4
|
+
r.get(e)?.forEach((n) => n(t));
|
|
5
|
+
}, c = (e, t) => {
|
|
6
|
+
const s = e, n = r.get(s);
|
|
7
|
+
n && (n.delete(t), n.size || r.delete(s));
|
|
6
8
|
}, o = (e, t) => {
|
|
7
|
-
const
|
|
8
|
-
s.
|
|
9
|
+
const s = e;
|
|
10
|
+
return r.has(s) || r.set(s, /* @__PURE__ */ new Set()), r.get(e).add(t), () => {
|
|
11
|
+
c(e, t);
|
|
12
|
+
};
|
|
9
13
|
};
|
|
10
14
|
return {
|
|
11
|
-
instance: s,
|
|
12
15
|
push: b,
|
|
13
|
-
subscribe:
|
|
14
|
-
unsubscribe:
|
|
16
|
+
subscribe: o,
|
|
17
|
+
unsubscribe: c,
|
|
15
18
|
useSubscribe: (e, t) => {
|
|
16
|
-
const [
|
|
17
|
-
return u.current = t,
|
|
18
|
-
const
|
|
19
|
-
|
|
19
|
+
const [s, n] = a(void 0), u = v(t);
|
|
20
|
+
return u.current = t, S(() => {
|
|
21
|
+
const f = o(e, (i) => {
|
|
22
|
+
n(i), u.current?.(i);
|
|
23
|
+
});
|
|
24
|
+
return () => {
|
|
25
|
+
f();
|
|
20
26
|
};
|
|
21
|
-
|
|
22
|
-
o(e, a);
|
|
23
|
-
};
|
|
24
|
-
}, [e]), n;
|
|
27
|
+
}, [e]), s;
|
|
25
28
|
}
|
|
26
29
|
};
|
|
27
30
|
};
|
|
28
31
|
export {
|
|
29
|
-
|
|
32
|
+
E as createEventEmitter
|
|
30
33
|
};
|
|
31
34
|
//# sourceMappingURL=createEventEmitter.mjs.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"createEventEmitter.mjs","sources":["../../../../src/helpers/createEventEmitter/createEventEmitter.ts"],"sourcesContent":["import { useEffect, useRef, useState } from 'react';\n\n/**\n * @name createEventEmitter\n * @description - Creates a type-safe event emitter\n * @category Helpers\n *\n * @template Events - The type of events and their data\n * @returns {Events} - Object containing event emitter methods and hook\n *\n * @example\n * const {
|
|
1
|
+
{"version":3,"file":"createEventEmitter.mjs","sources":["../../../../src/helpers/createEventEmitter/createEventEmitter.ts"],"sourcesContent":["import { useEffect, useRef, useState } from 'react';\n\n/**\n * @name createEventEmitter\n * @description - Creates a type-safe event emitter\n * @category Helpers\n *\n * @template Events - The type of events and their data\n * @returns {EventEmitterApi<Events>} - Object containing event emitter methods and hook\n *\n * @example\n * const { push, subscribe, unsubscribe, useSubscribe } = createEventEmitter<{ foo: number }>();\n */\nexport const createEventEmitter = <Events extends Record<string, any> = Record<string, any>>() => {\n type ListenerMap = Map<string, Set<(data: any) => void>>;\n const listeners: ListenerMap = new Map();\n\n const push = <Event extends keyof Events>(event: Event, data: Events[Event]) => {\n const eventListeners = listeners.get(event as string);\n eventListeners?.forEach((listener) => listener(data));\n };\n\n const unsubscribe = <Key extends keyof Events>(\n event: Key,\n listener: (data: Events[Key]) => void\n ) => {\n const eventKey = event as string;\n const eventListeners = listeners.get(eventKey);\n if (!eventListeners) return;\n eventListeners.delete(listener);\n if (!eventListeners.size) listeners.delete(eventKey);\n };\n\n const subscribe = <Key extends keyof Events>(\n event: Key,\n listener: (data: Events[Key]) => void\n ) => {\n const eventKey = event as string;\n if (!listeners.has(eventKey)) listeners.set(eventKey, new Set());\n const eventListeners = listeners.get(event as string)!;\n eventListeners.add(listener);\n\n return () => {\n unsubscribe(event, listener);\n };\n };\n\n const useSubscribe = <Event extends keyof Events>(\n event: Event,\n listener?: (data: Events[Event]) => void\n ) => {\n const [data, setData] = useState<Events[Event] | undefined>(undefined);\n const listenerRef = useRef(listener);\n listenerRef.current = listener;\n\n useEffect(() => {\n const onSubscribe = (data: Events[Event]) => {\n setData(data);\n listenerRef.current?.(data);\n };\n\n const unsubscribe = subscribe(event, onSubscribe);\n return () => {\n unsubscribe();\n };\n }, [event]);\n\n return data;\n };\n\n return {\n push,\n subscribe,\n unsubscribe,\n useSubscribe\n };\n};\n"],"names":["createEventEmitter","listeners","push","event","data","listener","unsubscribe","eventKey","eventListeners","subscribe","setData","useState","listenerRef","useRef","useEffect"],"mappings":";AAaO,MAAMA,IAAqB,MAAgE;AAEhG,QAAMC,wBAA6B,IAAA,GAE7BC,IAAO,CAA6BC,GAAcC,MAAwB;AAE9E,IADuBH,EAAU,IAAIE,CAAe,GACpC,QAAQ,CAACE,MAAaA,EAASD,CAAI,CAAC;AAAA,EAAA,GAGhDE,IAAc,CAClBH,GACAE,MACG;AACH,UAAME,IAAWJ,GACXK,IAAiBP,EAAU,IAAIM,CAAQ;AAC7C,IAAKC,MACLA,EAAe,OAAOH,CAAQ,GACzBG,EAAe,QAAMP,EAAU,OAAOM,CAAQ;AAAA,EAAA,GAG/CE,IAAY,CAChBN,GACAE,MACG;AACH,UAAME,IAAWJ;AACjB,WAAKF,EAAU,IAAIM,CAAQ,OAAa,IAAIA,GAAU,oBAAI,KAAK,GACxCN,EAAU,IAAIE,CAAe,EACrC,IAAIE,CAAQ,GAEpB,MAAM;AACX,MAAAC,EAAYH,GAAOE,CAAQ;AAAA,IAAA;AAAA,EAC7B;AA0BF,SAAO;AAAA,IACL,MAAAH;AAAA,IACA,WAAAO;AAAA,IACA,aAAAH;AAAA,IACA,cA3BmB,CACnBH,GACAE,MACG;AACH,YAAM,CAACD,GAAMM,CAAO,IAAIC,EAAoC,MAAS,GAC/DC,IAAcC,EAAOR,CAAQ;AACnC,aAAAO,EAAY,UAAUP,GAEtBS,EAAU,MAAM;AAMd,cAAMR,IAAcG,EAAUN,GALV,CAACC,MAAwB;AAC3C,UAAAM,EAAQN,CAAI,GACZQ,EAAY,UAAUR,CAAI;AAAA,QAAA,CAGoB;AAChD,eAAO,MAAM;AACXE,UAAAA,EAAAA;AAAAA,QAAY;AAAA,MACd,GACC,CAACH,CAAK,CAAC,GAEHC;AAAA,IAAA;AAAA,EAOP;AAEJ;"}
|
|
@@ -4,14 +4,13 @@
|
|
|
4
4
|
* @category Helpers
|
|
5
5
|
*
|
|
6
6
|
* @template Events - The type of events and their data
|
|
7
|
-
* @returns {Events} - Object containing event emitter methods and hook
|
|
7
|
+
* @returns {EventEmitterApi<Events>} - Object containing event emitter methods and hook
|
|
8
8
|
*
|
|
9
9
|
* @example
|
|
10
|
-
* const {
|
|
10
|
+
* const { push, subscribe, unsubscribe, useSubscribe } = createEventEmitter<{ foo: number }>();
|
|
11
11
|
*/
|
|
12
12
|
export declare const createEventEmitter: <Events extends Record<string, any> = Record<string, any>>() => {
|
|
13
|
-
|
|
14
|
-
push: <Event extends keyof Events>(event: Event, data: Events[Event]) => boolean;
|
|
13
|
+
push: <Event extends keyof Events>(event: Event, data: Events[Event]) => void;
|
|
15
14
|
subscribe: <Key extends keyof Events>(event: Key, listener: (data: Events[Key]) => void) => () => void;
|
|
16
15
|
unsubscribe: <Key extends keyof Events>(event: Key, listener: (data: Events[Key]) => void) => void;
|
|
17
16
|
useSubscribe: <Event extends keyof Events>(event: Event, listener?: (data: Events[Event]) => void) => Events[Event] | undefined;
|