add (p)react hooks

This commit is contained in:
Avraham Sakal
2023-05-18 17:12:17 -04:00
parent e24f5ff0bf
commit e36049c963
13 changed files with 100 additions and 5 deletions
+2
View File
@@ -0,0 +1,2 @@
import { Interpreter_T } from '../index';
export declare function useInterpreter<C>(createInterpreter: () => Interpreter_T<C>): any;
+2
View File
@@ -0,0 +1,2 @@
import{subscribeToEvents as o,unsubscribe as i}from"../index";import{useMemo as c,useState as p,useEffect as b,useCallback as g}from"react";let n=0;function d(s){const e=c(s,[]),[a,r]=p(n),t=g(()=>{r(n++)},[r]);return b(()=>{const u=o(e,t);return()=>{i(e,u)}},[t]),e}export{d as useInterpreter};
//# sourceMappingURL=index.js.map
+7
View File
@@ -0,0 +1,7 @@
{
"version": 3,
"sources": ["../../src/react/index.ts"],
"sourcesContent": ["import { Interpreter_T, subscribeToEvents, unsubscribe } from '../index';\nimport { useMemo, useState, useEffect, useCallback } from 'react';\n\n// need to use an integer instead of toggling a boolean back and forth; probably a bug with useState():\nlet i=0;\nexport function useInterpreter<C>(createInterpreter:()=>Interpreter_T<C>){\n const interpreter = useMemo(createInterpreter,[]);\n // some variable whose value to switch whenever we want to trigger a re-render:\n const [triggerRenderValue, setTriggerRenderValue] = useState(i);\n const triggerRender = useCallback(()=>{ setTriggerRenderValue(i++); }, [setTriggerRenderValue]);\n // ensure only one subscription is ever made, and destroy it when the component unloads:\n useEffect(()=>{\n const subscriptionId = subscribeToEvents(interpreter, triggerRender);\n return ()=>{ unsubscribe(interpreter, subscriptionId); };\n },[triggerRender]);\n return interpreter;\n}"],
"mappings": "AAAA,OAAwB,qBAAAA,EAAmB,eAAAC,MAAmB,WAC9D,OAAS,WAAAC,EAAS,YAAAC,EAAU,aAAAC,EAAW,eAAAC,MAAmB,QAG1D,IAAIC,EAAE,EACC,SAASC,EAAkBC,EAAuC,CACvE,MAAMC,EAAcP,EAAQM,EAAkB,CAAC,CAAC,EAE1C,CAACE,EAAoBC,CAAqB,EAAIR,EAASG,CAAC,EACxDM,EAAgBP,EAAY,IAAI,CAAEM,EAAsBL,GAAG,CAAG,EAAG,CAACK,CAAqB,CAAC,EAE9F,OAAAP,EAAU,IAAI,CACZ,MAAMS,EAAiBb,EAAkBS,EAAaG,CAAa,EACnE,MAAO,IAAI,CAAEX,EAAYQ,EAAaI,CAAc,CAAG,CACzD,EAAE,CAACD,CAAa,CAAC,EACVH,CACT",
"names": ["subscribeToEvents", "unsubscribe", "useMemo", "useState", "useEffect", "useCallback", "i", "useInterpreter", "createInterpreter", "interpreter", "triggerRenderValue", "setTriggerRenderValue", "triggerRender", "subscriptionId"]
}