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.
- package/build/channel/createChannel.d.ts +6 -4
- package/build/channel/types.d.ts +0 -1
- package/build/channel/useChannel.d.ts +2 -2
- package/build/index.cjs.js +1 -1
- package/build/index.cjs.js.map +1 -1
- package/build/index.d.ts +1 -0
- package/build/index.esm.js +1 -1
- package/build/index.esm.js.map +1 -1
- package/package.json +1 -1
|
@@ -1,8 +1,10 @@
|
|
|
1
|
-
import
|
|
2
|
-
|
|
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
|
|
10
|
+
export declare function createChannel<E extends EventMap>(): ChannelType<E>;
|
package/build/channel/types.d.ts
CHANGED
|
@@ -1,3 +1,3 @@
|
|
|
1
|
-
import type { EventMapType } from "./types";
|
|
2
1
|
import type { ChannelType } from "./createChannel";
|
|
3
|
-
|
|
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;
|
package/build/index.cjs.js
CHANGED
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
"use strict";var
|
|
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
|
package/build/index.cjs.js.map
CHANGED
|
@@ -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 {
|
|
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
package/build/index.esm.js
CHANGED
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
import
|
|
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
|
package/build/index.esm.js.map
CHANGED
|
@@ -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 {
|
|
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"}
|