react-event-channel-z 1.0.0 → 1.0.2

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.
@@ -1,8 +1,10 @@
1
- import type { EventMapType, EmitOptions } from "./types";
2
- export type ChannelType<E extends EventMapType> = {
1
+ import { EventMap } from "eventbus-z";
2
+ import type { EmitOptions } from "./types";
3
+ export type ChannelType<E extends EventMap> = {
3
4
  emit<K extends keyof E>(name: K, ...args: E[K]): void;
4
5
  emit<K extends keyof E>(name: K, ...args: [...E[K], EmitOptions]): void;
5
- on<K extends keyof E>(name: K, handler: (...args: E[K]) => void): void;
6
+ on<K extends keyof E>(name: K, handler: (...args: E[K]) => void): () => void;
7
+ once<K extends keyof E>(name: K, handler: (...args: E[K]) => void): () => void;
6
8
  off<K extends keyof E>(name: K, handler: (...args: E[K]) => void): void;
7
9
  };
8
- export declare function createChannel<E extends EventMapType>(): ChannelType<E>;
10
+ export declare function createChannel<E extends EventMap>(): ChannelType<E>;
@@ -1,4 +1,3 @@
1
- export type EventMapType = Record<string, any[]>;
2
1
  export type EmitOptions = {
3
2
  transition?: boolean;
4
3
  };
@@ -1,3 +1,3 @@
1
- import type { EventMapType } from "./types";
2
1
  import type { ChannelType } from "./createChannel";
3
- export declare function useChannel<E extends EventMapType, K extends keyof E>(channel: ChannelType<E>, name: K, handler: (...args: E[K]) => void): void;
2
+ import { EventMap } from "eventbus-z";
3
+ export declare function useChannel<E extends EventMap, K extends keyof E>(channel: ChannelType<E>, name: K, handler: (...args: E[K]) => void): void;
@@ -1,2 +1,2 @@
1
- "use strict";var t=require("react"),n=require("eventbus-z");exports.createChannel=function(){const e=n.createTypedEventBus(),o={emit(t,n){e.$emit(t,...n)},on(t,n){e.$on(t,n)},off(t,n){e.$off(t,n)}},r="function"==typeof t.startTransition?t.startTransition:t=>t();return{emit:function(t,...n){const e=n[n.length-1],i="object"==typeof e&&null!==e&&"transition"in e,f=i?n.slice(0,-1):n;i&&e.transition?r(()=>{o.emit(t,f)}):o.emit(t,f)},on:o.on,off:o.off}},exports.useChannel=function(n,e,o){const r=t.useRef(o);r.current=o,t.useEffect(()=>{function t(...t){r.current(...t)}return n.on(e,t),()=>{n.off(e,t)}},[n,e])};
1
+ "use strict";var n=require("react"),t=require("eventbus-z");exports.createChannel=function(){const e=t.createTypedEventBus(),o={emit(n,t){e.$emit(n,...t)},on(n,t){e.$on(n,t)},off(n,t){e.$off(n,t)}},r="function"==typeof n.startTransition?n.startTransition:n=>n();return{emit:function(n,...t){const e=t[t.length-1],f="object"==typeof e&&null!==e&&"transition"in e,i=f?t.slice(0,-1):t;f&&e.transition?r(()=>{o.emit(n,i)}):o.emit(n,i)},on:function(n,t){return o.on(n,t),()=>{o.off(n,t)}},once:function(n,t){const e=(...r)=>{t(...r),o.off(n,e)};return o.on(n,e),()=>{o.off(n,e)}},off:o.off}},exports.useChannel=function(t,e,o){const r=n.useRef(o);r.current=o,n.useEffect(()=>t.on(e,function(...n){r.current(...n)}),[t,e])};
2
2
  //# sourceMappingURL=index.cjs.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.cjs.js","sources":["../src/channel/createChannel.ts","../src/channel/useChannel.ts"],"sourcesContent":["import React from \"react\";\nimport { createTypedEventBus } from \"eventbus-z\";\nimport type { EventMapType, EmitOptions } from \"./types\";\n\nexport type ChannelType<E extends EventMapType> = {\n emit<K extends keyof E>(\n name: K,\n ...args: E[K]\n ): void;\n\n emit<K extends keyof E>(\n name: K,\n ...args: [...E[K], EmitOptions]\n ): void;\n\n on<K extends keyof E>(\n name: K,\n handler: (...args: E[K]) => void\n ): void;\n\n off<K extends keyof E>(\n name: K,\n handler: (...args: E[K]) => void\n ): void;\n};\n\nexport function createChannel<E extends EventMapType>(): ChannelType<E> {\n const rawBus = createTypedEventBus<E>();\n\n // Fully typed internal adapter\n const bus = {\n emit<K extends keyof E>(name: K, args: E[K]) {\n rawBus.$emit(name as string, ...args);\n },\n on<K extends keyof E>(\n name: K,\n handler: (...args: E[K]) => void\n ) {\n rawBus.$on(name as string, handler);\n },\n off<K extends keyof E>(\n name: K,\n handler: (...args: E[K]) => void\n ) {\n rawBus.$off(name as string, handler);\n }\n };\n\n const startTransition: (cb: () => void) => void =\n typeof React.startTransition === \"function\"\n ? React.startTransition\n : (cb) => cb();\n\n // ────────────────────────────────\n // overload signatures\n // ────────────────────────────────\n\n function emit<K extends keyof E>(\n name: K,\n ...args: E[K]\n ): void;\n\n function emit<K extends keyof E>(\n name: K,\n ...args: [...E[K], EmitOptions]\n ): void;\n\n function emit<K extends keyof E>(\n name: K,\n ...args: unknown[]\n ) {\n const last = args[args.length - 1];\n\n const hasOptions =\n typeof last === \"object\" &&\n last !== null &&\n \"transition\" in last;\n\n const eventArgs = (hasOptions\n ? args.slice(0, -1)\n : args) as E[K];\n\n if (hasOptions && (last as EmitOptions).transition) {\n startTransition(() => {\n bus.emit(name, eventArgs);\n });\n } else {\n bus.emit(name, eventArgs);\n }\n }\n\n return {\n emit,\n on: bus.on,\n off: bus.off\n };\n}\n","import { useEffect, useRef } from \"react\";\nimport type { EventMapType } from \"./types\";\nimport type { ChannelType } from \"./createChannel\";\n\nexport function useChannel<\n E extends EventMapType,\n K extends keyof E\n>(\n channel: ChannelType<E>,\n name: K,\n handler: (...args: E[K]) => void\n) {\n const handlerRef = useRef(handler);\n\n handlerRef.current = handler;\n\n useEffect(() => {\n function stableWrapper(...args: E[K]) {\n handlerRef.current(...args);\n }\n\n channel.on(name, stableWrapper);\n\n return () => {\n channel.off(name, stableWrapper);\n };\n }, [channel, name]);\n}\n"],"names":["rawBus","createTypedEventBus","bus","emit","name","args","$emit","on","handler","$on","off","$off","startTransition","React","cb","last","length","hasOptions","eventArgs","slice","transition","channel","handlerRef","useRef","current","useEffect","stableWrapper"],"mappings":"6FA2BE,MAAMA,EAASC,EAAAA,sBAGTC,EAAM,CACV,IAAAC,CAAwBC,EAASC,GAC/BL,EAAOM,MAAMF,KAAmBC,EAClC,EACA,EAAAE,CACEH,EACAI,GAEAR,EAAOS,IAAIL,EAAgBI,EAC7B,EACA,GAAAE,CACEN,EACAI,GAEAR,EAAOW,KAAKP,EAAgBI,EAC9B,GAGII,EAC6B,mBAA1BC,EAAMD,gBACTC,EAAMD,gBACLE,GAAOA,IAwCd,MAAO,CACLX,KAzBF,SACEC,KACGC,GAEH,MAAMU,EAAOV,EAAKA,EAAKW,OAAS,GAE1BC,EACY,iBAATF,GACE,OAATA,GACA,eAAgBA,EAEZG,EAAaD,EACfZ,EAAKc,MAAM,GAAG,GACdd,EAEAY,GAAeF,EAAqBK,WACtCR,EAAgB,KACdV,EAAIC,KAAKC,EAAMc,KAGjBhB,EAAIC,KAAKC,EAAMc,EAEnB,EAIEX,GAAIL,EAAIK,GACRG,IAAKR,EAAIQ,IAEb,8BCxFEW,EACAjB,EACAI,GAEA,MAAMc,EAAaC,EAAAA,OAAOf,GAE1Bc,EAAWE,QAAUhB,EAErBiB,EAAAA,UAAU,KACR,SAASC,KAAiBrB,GACxBiB,EAAWE,WAAWnB,EACxB,CAIA,OAFAgB,EAAQd,GAAGH,EAAMsB,GAEV,KACLL,EAAQX,IAAIN,EAAMsB,KAEnB,CAACL,EAASjB,GACf"}
1
+ {"version":3,"file":"index.cjs.js","sources":["../src/channel/createChannel.ts","../src/channel/useChannel.ts"],"sourcesContent":["import React from \"react\";\nimport { createTypedEventBus, EventMap } from \"eventbus-z\";\nimport type { EmitOptions } from \"./types\";\n\nexport type ChannelType<E extends EventMap> = {\n emit<K extends keyof E>(\n name: K,\n ...args: E[K]\n ): void;\n\n emit<K extends keyof E>(\n name: K,\n ...args: [...E[K], EmitOptions]\n ): void;\n\n on<K extends keyof E>(\n name: K,\n handler: (...args: E[K]) => void\n ): () => void;\n\n once<K extends keyof E>(\n name: K,\n handler: (...args: E[K]) => void\n ): () => void;\n\n off<K extends keyof E>(\n name: K,\n handler: (...args: E[K]) => void\n ): void;\n};\n\nexport function createChannel<E extends EventMap>(): ChannelType<E> {\n const rawBus = createTypedEventBus<E>();\n\n const bus = {\n emit<K extends keyof E>(name: K, args: E[K]) {\n rawBus.$emit(name as string, ...args);\n },\n on<K extends keyof E>(\n name: K,\n handler: (...args: E[K]) => void\n ) {\n rawBus.$on(name as string, handler);\n },\n off<K extends keyof E>(\n name: K,\n handler: (...args: E[K]) => void\n ) {\n rawBus.$off(name as string, handler);\n }\n };\n\n const startTransition: (cb: () => void) => void =\n typeof React.startTransition === \"function\"\n ? React.startTransition\n : (cb) => cb();\n\n // ────────────────────────────────\n // emit overloads\n // ────────────────────────────────\n\n function emit<K extends keyof E>(\n name: K,\n ...args: E[K]\n ): void;\n\n function emit<K extends keyof E>(\n name: K,\n ...args: [...E[K], EmitOptions]\n ): void;\n\n function emit<K extends keyof E>(\n name: K,\n ...args: unknown[]\n ) {\n const last = args[args.length - 1];\n\n const hasOptions =\n typeof last === \"object\" &&\n last !== null &&\n \"transition\" in last;\n\n const eventArgs = (hasOptions\n ? args.slice(0, -1)\n : args) as E[K];\n\n if (hasOptions && (last as EmitOptions).transition) {\n startTransition(() => {\n bus.emit(name, eventArgs);\n });\n } else {\n bus.emit(name, eventArgs);\n }\n }\n\n // ────────────────────────────────\n // on → return unsubscribe\n // ────────────────────────────────\n\n function on<K extends keyof E>(\n name: K,\n handler: (...args: E[K]) => void\n ): () => void {\n bus.on(name, handler);\n\n return () => {\n bus.off(name, handler);\n };\n }\n\n // ────────────────────────────────\n // once\n // ────────────────────────────────\n\n function once<K extends keyof E>(\n name: K,\n handler: (...args: E[K]) => void\n ): () => void {\n const wrapper = (...args: E[K]) => {\n handler(...args);\n bus.off(name, wrapper);\n };\n\n bus.on(name, wrapper);\n\n return () => {\n bus.off(name, wrapper);\n };\n }\n\n return {\n emit,\n on,\n once,\n off: bus.off\n };\n}\n","import { useEffect, useRef } from \"react\";\nimport type { ChannelType } from \"./createChannel\";\nimport { EventMap } from \"eventbus-z\";\n\nexport function useChannel<\n E extends EventMap,\n K extends keyof E\n>(\n channel: ChannelType<E>,\n name: K,\n handler: (...args: E[K]) => void\n) {\n const handlerRef = useRef(handler);\n\n handlerRef.current = handler;\n\n useEffect(() => {\n function stableWrapper(...args: E[K]) {\n handlerRef.current(...args);\n }\n\n const unsubscribe = channel.on(name, stableWrapper);\n\n return unsubscribe;\n }, [channel, name]);\n}\n"],"names":["rawBus","createTypedEventBus","bus","emit","name","args","$emit","on","handler","$on","off","$off","startTransition","React","cb","last","length","hasOptions","eventArgs","slice","transition","once","wrapper","channel","handlerRef","useRef","current","useEffect"],"mappings":"6FAgCE,MAAMA,EAASC,EAAAA,sBAETC,EAAM,CACV,IAAAC,CAAwBC,EAASC,GAC/BL,EAAOM,MAAMF,KAAmBC,EAClC,EACA,EAAAE,CACEH,EACAI,GAEAR,EAAOS,IAAIL,EAAgBI,EAC7B,EACA,GAAAE,CACEN,EACAI,GAEAR,EAAOW,KAAKP,EAAgBI,EAC9B,GAGII,EAC6B,mBAA1BC,EAAMD,gBACTC,EAAMD,gBACLE,GAAOA,IA2Ed,MAAO,CACLX,KA5DF,SACEC,KACGC,GAEH,MAAMU,EAAOV,EAAKA,EAAKW,OAAS,GAE1BC,EACY,iBAATF,GACE,OAATA,GACA,eAAgBA,EAEZG,EAAaD,EACfZ,EAAKc,MAAM,GAAG,GACdd,EAEAY,GAAeF,EAAqBK,WACtCR,EAAgB,KACdV,EAAIC,KAAKC,EAAMc,KAGjBhB,EAAIC,KAAKC,EAAMc,EAEnB,EAuCEX,GAjCF,SACEH,EACAI,GAIA,OAFAN,EAAIK,GAAGH,EAAMI,GAEN,KACLN,EAAIQ,IAAIN,EAAMI,GAElB,EAyBEa,KAnBF,SACEjB,EACAI,GAEA,MAAMc,EAAU,IAAIjB,KAClBG,KAAWH,GACXH,EAAIQ,IAAIN,EAAMkB,IAKhB,OAFApB,EAAIK,GAAGH,EAAMkB,GAEN,KACLpB,EAAIQ,IAAIN,EAAMkB,GAElB,EAMEZ,IAAKR,EAAIQ,IAEb,8BChIEa,EACAnB,EACAI,GAEA,MAAMgB,EAAaC,EAAAA,OAAOjB,GAE1BgB,EAAWE,QAAUlB,EAErBmB,EAAAA,UAAU,IAKYJ,EAAQhB,GAAGH,EAJ/B,YAA0BC,GACxBmB,EAAWE,WAAWrB,EACxB,GAKC,CAACkB,EAASnB,GACf"}
package/build/index.d.ts CHANGED
@@ -1,3 +1,4 @@
1
+ export type { EventMap } from "eventbus-z";
1
2
  export * from "./channel/createChannel";
2
3
  export * from "./channel/useChannel";
3
4
  export * from "./channel/types";
@@ -1,2 +1,2 @@
1
- import t,{useRef as n,useEffect as o}from"react";import{createTypedEventBus as i}from"eventbus-z";function r(){const n=i(),o={emit(t,o){n.$emit(t,...o)},on(t,o){n.$on(t,o)},off(t,o){n.$off(t,o)}},r="function"==typeof t.startTransition?t.startTransition:t=>t();return{emit:function(t,...n){const i=n[n.length-1],f="object"==typeof i&&null!==i&&"transition"in i,e=f?n.slice(0,-1):n;f&&i.transition?r(()=>{o.emit(t,e)}):o.emit(t,e)},on:o.on,off:o.off}}function f(t,i,r){const f=n(r);f.current=r,o(()=>{function n(...t){f.current(...t)}return t.on(i,n),()=>{t.off(i,n)}},[t,i])}export{r as createChannel,f as useChannel};
1
+ import n,{useRef as t,useEffect as o}from"react";import{createTypedEventBus as f}from"eventbus-z";function i(){const t=f(),o={emit(n,o){t.$emit(n,...o)},on(n,o){t.$on(n,o)},off(n,o){t.$off(n,o)}},i="function"==typeof n.startTransition?n.startTransition:n=>n();return{emit:function(n,...t){const f=t[t.length-1],r="object"==typeof f&&null!==f&&"transition"in f,e=r?t.slice(0,-1):t;r&&f.transition?i(()=>{o.emit(n,e)}):o.emit(n,e)},on:function(n,t){return o.on(n,t),()=>{o.off(n,t)}},once:function(n,t){const f=(...i)=>{t(...i),o.off(n,f)};return o.on(n,f),()=>{o.off(n,f)}},off:o.off}}function r(n,f,i){const r=t(i);r.current=i,o(()=>n.on(f,function(...n){r.current(...n)}),[n,f])}export{i as createChannel,r as useChannel};
2
2
  //# sourceMappingURL=index.esm.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.esm.js","sources":["../src/channel/createChannel.ts","../src/channel/useChannel.ts"],"sourcesContent":["import React from \"react\";\nimport { createTypedEventBus } from \"eventbus-z\";\nimport type { EventMapType, EmitOptions } from \"./types\";\n\nexport type ChannelType<E extends EventMapType> = {\n emit<K extends keyof E>(\n name: K,\n ...args: E[K]\n ): void;\n\n emit<K extends keyof E>(\n name: K,\n ...args: [...E[K], EmitOptions]\n ): void;\n\n on<K extends keyof E>(\n name: K,\n handler: (...args: E[K]) => void\n ): void;\n\n off<K extends keyof E>(\n name: K,\n handler: (...args: E[K]) => void\n ): void;\n};\n\nexport function createChannel<E extends EventMapType>(): ChannelType<E> {\n const rawBus = createTypedEventBus<E>();\n\n // Fully typed internal adapter\n const bus = {\n emit<K extends keyof E>(name: K, args: E[K]) {\n rawBus.$emit(name as string, ...args);\n },\n on<K extends keyof E>(\n name: K,\n handler: (...args: E[K]) => void\n ) {\n rawBus.$on(name as string, handler);\n },\n off<K extends keyof E>(\n name: K,\n handler: (...args: E[K]) => void\n ) {\n rawBus.$off(name as string, handler);\n }\n };\n\n const startTransition: (cb: () => void) => void =\n typeof React.startTransition === \"function\"\n ? React.startTransition\n : (cb) => cb();\n\n // ────────────────────────────────\n // overload signatures\n // ────────────────────────────────\n\n function emit<K extends keyof E>(\n name: K,\n ...args: E[K]\n ): void;\n\n function emit<K extends keyof E>(\n name: K,\n ...args: [...E[K], EmitOptions]\n ): void;\n\n function emit<K extends keyof E>(\n name: K,\n ...args: unknown[]\n ) {\n const last = args[args.length - 1];\n\n const hasOptions =\n typeof last === \"object\" &&\n last !== null &&\n \"transition\" in last;\n\n const eventArgs = (hasOptions\n ? args.slice(0, -1)\n : args) as E[K];\n\n if (hasOptions && (last as EmitOptions).transition) {\n startTransition(() => {\n bus.emit(name, eventArgs);\n });\n } else {\n bus.emit(name, eventArgs);\n }\n }\n\n return {\n emit,\n on: bus.on,\n off: bus.off\n };\n}\n","import { useEffect, useRef } from \"react\";\nimport type { EventMapType } from \"./types\";\nimport type { ChannelType } from \"./createChannel\";\n\nexport function useChannel<\n E extends EventMapType,\n K extends keyof E\n>(\n channel: ChannelType<E>,\n name: K,\n handler: (...args: E[K]) => void\n) {\n const handlerRef = useRef(handler);\n\n handlerRef.current = handler;\n\n useEffect(() => {\n function stableWrapper(...args: E[K]) {\n handlerRef.current(...args);\n }\n\n channel.on(name, stableWrapper);\n\n return () => {\n channel.off(name, stableWrapper);\n };\n }, [channel, name]);\n}\n"],"names":["createChannel","rawBus","createTypedEventBus","bus","emit","name","args","$emit","on","handler","$on","off","$off","startTransition","React","cb","last","length","hasOptions","eventArgs","slice","transition","useChannel","channel","handlerRef","useRef","current","useEffect","stableWrapper"],"mappings":"2GA0BgBA,IACd,MAAMC,EAASC,IAGTC,EAAM,CACV,IAAAC,CAAwBC,EAASC,GAC/BL,EAAOM,MAAMF,KAAmBC,EAClC,EACA,EAAAE,CACEH,EACAI,GAEAR,EAAOS,IAAIL,EAAgBI,EAC7B,EACA,GAAAE,CACEN,EACAI,GAEAR,EAAOW,KAAKP,EAAgBI,EAC9B,GAGII,EAC6B,mBAA1BC,EAAMD,gBACTC,EAAMD,gBACLE,GAAOA,IAwCd,MAAO,CACLX,KAzBF,SACEC,KACGC,GAEH,MAAMU,EAAOV,EAAKA,EAAKW,OAAS,GAE1BC,EACY,iBAATF,GACE,OAATA,GACA,eAAgBA,EAEZG,EAAaD,EACfZ,EAAKc,MAAM,GAAG,GACdd,EAEAY,GAAeF,EAAqBK,WACtCR,EAAgB,KACdV,EAAIC,KAAKC,EAAMc,KAGjBhB,EAAIC,KAAKC,EAAMc,EAEnB,EAIEX,GAAIL,EAAIK,GACRG,IAAKR,EAAIQ,IAEb,UC5FgBW,EAIdC,EACAlB,EACAI,GAEA,MAAMe,EAAaC,EAAOhB,GAE1Be,EAAWE,QAAUjB,EAErBkB,EAAU,KACR,SAASC,KAAiBtB,GACxBkB,EAAWE,WAAWpB,EACxB,CAIA,OAFAiB,EAAQf,GAAGH,EAAMuB,GAEV,KACLL,EAAQZ,IAAIN,EAAMuB,KAEnB,CAACL,EAASlB,GACf"}
1
+ {"version":3,"file":"index.esm.js","sources":["../src/channel/createChannel.ts","../src/channel/useChannel.ts"],"sourcesContent":["import React from \"react\";\nimport { createTypedEventBus, EventMap } from \"eventbus-z\";\nimport type { EmitOptions } from \"./types\";\n\nexport type ChannelType<E extends EventMap> = {\n emit<K extends keyof E>(\n name: K,\n ...args: E[K]\n ): void;\n\n emit<K extends keyof E>(\n name: K,\n ...args: [...E[K], EmitOptions]\n ): void;\n\n on<K extends keyof E>(\n name: K,\n handler: (...args: E[K]) => void\n ): () => void;\n\n once<K extends keyof E>(\n name: K,\n handler: (...args: E[K]) => void\n ): () => void;\n\n off<K extends keyof E>(\n name: K,\n handler: (...args: E[K]) => void\n ): void;\n};\n\nexport function createChannel<E extends EventMap>(): ChannelType<E> {\n const rawBus = createTypedEventBus<E>();\n\n const bus = {\n emit<K extends keyof E>(name: K, args: E[K]) {\n rawBus.$emit(name as string, ...args);\n },\n on<K extends keyof E>(\n name: K,\n handler: (...args: E[K]) => void\n ) {\n rawBus.$on(name as string, handler);\n },\n off<K extends keyof E>(\n name: K,\n handler: (...args: E[K]) => void\n ) {\n rawBus.$off(name as string, handler);\n }\n };\n\n const startTransition: (cb: () => void) => void =\n typeof React.startTransition === \"function\"\n ? React.startTransition\n : (cb) => cb();\n\n // ────────────────────────────────\n // emit overloads\n // ────────────────────────────────\n\n function emit<K extends keyof E>(\n name: K,\n ...args: E[K]\n ): void;\n\n function emit<K extends keyof E>(\n name: K,\n ...args: [...E[K], EmitOptions]\n ): void;\n\n function emit<K extends keyof E>(\n name: K,\n ...args: unknown[]\n ) {\n const last = args[args.length - 1];\n\n const hasOptions =\n typeof last === \"object\" &&\n last !== null &&\n \"transition\" in last;\n\n const eventArgs = (hasOptions\n ? args.slice(0, -1)\n : args) as E[K];\n\n if (hasOptions && (last as EmitOptions).transition) {\n startTransition(() => {\n bus.emit(name, eventArgs);\n });\n } else {\n bus.emit(name, eventArgs);\n }\n }\n\n // ────────────────────────────────\n // on → return unsubscribe\n // ────────────────────────────────\n\n function on<K extends keyof E>(\n name: K,\n handler: (...args: E[K]) => void\n ): () => void {\n bus.on(name, handler);\n\n return () => {\n bus.off(name, handler);\n };\n }\n\n // ────────────────────────────────\n // once\n // ────────────────────────────────\n\n function once<K extends keyof E>(\n name: K,\n handler: (...args: E[K]) => void\n ): () => void {\n const wrapper = (...args: E[K]) => {\n handler(...args);\n bus.off(name, wrapper);\n };\n\n bus.on(name, wrapper);\n\n return () => {\n bus.off(name, wrapper);\n };\n }\n\n return {\n emit,\n on,\n once,\n off: bus.off\n };\n}\n","import { useEffect, useRef } from \"react\";\nimport type { ChannelType } from \"./createChannel\";\nimport { EventMap } from \"eventbus-z\";\n\nexport function useChannel<\n E extends EventMap,\n K extends keyof E\n>(\n channel: ChannelType<E>,\n name: K,\n handler: (...args: E[K]) => void\n) {\n const handlerRef = useRef(handler);\n\n handlerRef.current = handler;\n\n useEffect(() => {\n function stableWrapper(...args: E[K]) {\n handlerRef.current(...args);\n }\n\n const unsubscribe = channel.on(name, stableWrapper);\n\n return unsubscribe;\n }, [channel, name]);\n}\n"],"names":["createChannel","rawBus","createTypedEventBus","bus","emit","name","args","$emit","on","handler","$on","off","$off","startTransition","React","cb","last","length","hasOptions","eventArgs","slice","transition","once","wrapper","useChannel","channel","handlerRef","useRef","current","useEffect"],"mappings":"2GA+BgBA,IACd,MAAMC,EAASC,IAETC,EAAM,CACV,IAAAC,CAAwBC,EAASC,GAC/BL,EAAOM,MAAMF,KAAmBC,EAClC,EACA,EAAAE,CACEH,EACAI,GAEAR,EAAOS,IAAIL,EAAgBI,EAC7B,EACA,GAAAE,CACEN,EACAI,GAEAR,EAAOW,KAAKP,EAAgBI,EAC9B,GAGII,EAC6B,mBAA1BC,EAAMD,gBACTC,EAAMD,gBACLE,GAAOA,IA2Ed,MAAO,CACLX,KA5DF,SACEC,KACGC,GAEH,MAAMU,EAAOV,EAAKA,EAAKW,OAAS,GAE1BC,EACY,iBAATF,GACE,OAATA,GACA,eAAgBA,EAEZG,EAAaD,EACfZ,EAAKc,MAAM,GAAG,GACdd,EAEAY,GAAeF,EAAqBK,WACtCR,EAAgB,KACdV,EAAIC,KAAKC,EAAMc,KAGjBhB,EAAIC,KAAKC,EAAMc,EAEnB,EAuCEX,GAjCF,SACEH,EACAI,GAIA,OAFAN,EAAIK,GAAGH,EAAMI,GAEN,KACLN,EAAIQ,IAAIN,EAAMI,GAElB,EAyBEa,KAnBF,SACEjB,EACAI,GAEA,MAAMc,EAAU,IAAIjB,KAClBG,KAAWH,GACXH,EAAIQ,IAAIN,EAAMkB,IAKhB,OAFApB,EAAIK,GAAGH,EAAMkB,GAEN,KACLpB,EAAIQ,IAAIN,EAAMkB,GAElB,EAMEZ,IAAKR,EAAIQ,IAEb,UCpIgBa,EAIdC,EACApB,EACAI,GAEA,MAAMiB,EAAaC,EAAOlB,GAE1BiB,EAAWE,QAAUnB,EAErBoB,EAAU,IAKYJ,EAAQjB,GAAGH,EAJ/B,YAA0BC,GACxBoB,EAAWE,WAAWtB,EACxB,GAKC,CAACmB,EAASpB,GACf"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "react-event-channel-z",
3
- "version": "1.0.0",
3
+ "version": "1.0.2",
4
4
  "description": "Fully typed React-aware event channel built on top of eventbus-z.",
5
5
  "author": "Delpi.Kye",
6
6
  "license": "MIT",