@effect-rx/rx-react 0.40.2 → 0.40.3

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.
@@ -53,20 +53,30 @@ const RegistryContext = exports.RegistryContext = /*#__PURE__*/React.createConte
53
53
  * @category context
54
54
  */
55
55
  const RegistryProvider = options => {
56
- const registry = React.useMemo(() => Registry.make({
57
- scheduleTask,
58
- defaultIdleTTL: 400,
59
- ...options
60
- }), []);
61
- React.useEffect(() => () => {
62
- registry.dispose();
63
- }, [registry]);
56
+ const ref = React.useRef(null);
57
+ if (ref.current === null) {
58
+ ref.current = {
59
+ registry: Registry.make({
60
+ scheduleTask: options.scheduleTask ?? scheduleTask,
61
+ initialValues: options.initialValues,
62
+ timeoutResolution: options.timeoutResolution,
63
+ defaultIdleTTL: options.defaultIdleTTL
64
+ })
65
+ };
66
+ }
67
+ React.useEffect(() => {
68
+ if (ref.current?.timeout !== undefined) {
69
+ clearTimeout(ref.current.timeout);
70
+ }
71
+ return () => {
72
+ setTimeout(() => {
73
+ ref.current?.registry.dispose();
74
+ ref.current = null;
75
+ }, 500);
76
+ };
77
+ }, [ref]);
64
78
  return React.createElement(RegistryContext.Provider, {
65
- value: Registry.make({
66
- scheduleTask,
67
- defaultIdleTTL: 400,
68
- ...options
69
- })
79
+ value: ref.current.registry
70
80
  }, options?.children);
71
81
  };
72
82
  exports.RegistryProvider = RegistryProvider;
@@ -1 +1 @@
1
- {"version":3,"file":"RegistryContext.js","names":["Object","defineProperty","exports","value","RegistryProvider","RegistryContext","scheduleTask","Registry","_interopRequireWildcard","require","React","Scheduler","e","t","WeakMap","r","n","__esModule","o","i","f","__proto__","default","has","get","set","hasOwnProperty","call","getOwnPropertyDescriptor","unstable_scheduleCallback","unstable_LowPriority","createContext","make","defaultIdleTTL","options","registry","useMemo","useEffect","dispose","createElement","Provider","children"],"sources":["../../src/RegistryContext.ts"],"sourcesContent":[null],"mappings":";;AAAA;;;AAGA,YAAY;;AAAAA,MAAA,CAAAC,cAAA,CAAAC,OAAA;EAAAC,KAAA;AAAA;AAAAD,OAAA,CAAAE,gBAAA,GAAAF,OAAA,CAAAG,eAAA;AAAAH,OAAA,CAAAI,YAAA,GAAAA,YAAA;AACZ,IAAAC,QAAA,gBAAAC,uBAAA,cAAAC,OAAA;AAEA,IAAAC,KAAA,gBAAAF,uBAAA,cAAAC,OAAA;AACA,IAAAE,SAAA,gBAAAH,uBAAA,cAAAC,OAAA;AAAsC,SAAAD,wBAAAI,CAAA,EAAAC,CAAA;EAAA,yBAAAC,OAAA,MAAAC,CAAA,OAAAD,OAAA;IAAAE,CAAA,OAAAF,OAAA;EAAA,QAAAN,uBAAA,YAAAA,CAAAI,CAAA,EAAAC,CAAA;IAAA,KAAAA,CAAA,IAAAD,CAAA,IAAAA,CAAA,CAAAK,UAAA,SAAAL,CAAA;IAAA,IAAAM,CAAA;MAAAC,CAAA;MAAAC,CAAA;QAAAC,SAAA;QAAAC,OAAA,EAAAV;MAAA;IAAA,aAAAA,CAAA,uBAAAA,CAAA,yBAAAA,CAAA,SAAAQ,CAAA;IAAA,IAAAF,CAAA,GAAAL,CAAA,GAAAG,CAAA,GAAAD,CAAA;MAAA,IAAAG,CAAA,CAAAK,GAAA,CAAAX,CAAA,UAAAM,CAAA,CAAAM,GAAA,CAAAZ,CAAA;MAAAM,CAAA,CAAAO,GAAA,CAAAb,CAAA,EAAAQ,CAAA;IAAA;IAAA,WAAAP,CAAA,IAAAD,CAAA,gBAAAC,CAAA,OAAAa,cAAA,CAAAC,IAAA,CAAAf,CAAA,EAAAC,CAAA,OAAAM,CAAA,IAAAD,CAAA,GAAAlB,MAAA,CAAAC,cAAA,KAAAD,MAAA,CAAA4B,wBAAA,CAAAhB,CAAA,EAAAC,CAAA,OAAAM,CAAA,CAAAK,GAAA,IAAAL,CAAA,CAAAM,GAAA,IAAAP,CAAA,CAAAE,CAAA,EAAAP,CAAA,EAAAM,CAAA,IAAAC,CAAA,CAAAP,CAAA,IAAAD,CAAA,CAAAC,CAAA;IAAA,OAAAO,CAAA;EAAA,GAAAR,CAAA,EAAAC,CAAA;AAAA;AAEtC;;;;AAIM,SAAUP,YAAYA,CAACc,CAAa;EACxCT,SAAS,CAACkB,yBAAyB,CAAClB,SAAS,CAACmB,oBAAoB,EAAEV,CAAC,CAAC;AACxE;AAEA;;;;AAIO,MAAMf,eAAe,GAAAH,OAAA,CAAAG,eAAA,gBAAGK,KAAK,CAACqB,aAAa,cAAoBxB,QAAQ,CAACyB,IAAI,CAAC;EAClF1B,YAAY;EACZ2B,cAAc,EAAE;CACjB,CAAC,CAAC;AAEH;;;;AAIO,MAAM7B,gBAAgB,GAAI8B,OAMhC,IAAI;EACH,MAAMC,QAAQ,GAAGzB,KAAK,CAAC0B,OAAO,CAAC,MAC7B7B,QAAQ,CAACyB,IAAI,CAAC;IACZ1B,YAAY;IACZ2B,cAAc,EAAE,GAAG;IACnB,GAAGC;GACJ,CAAC,EAAE,EAAE,CAAC;EACTxB,KAAK,CAAC2B,SAAS,CAAC,MAAM,MAAK;IACzBF,QAAQ,CAACG,OAAO,EAAE;EACpB,CAAC,EAAE,CAACH,QAAQ,CAAC,CAAC;EACd,OAAOzB,KAAK,CAAC6B,aAAa,CAAClC,eAAe,CAACmC,QAAQ,EAAE;IACnDrC,KAAK,EAAEI,QAAQ,CAACyB,IAAI,CAAC;MACnB1B,YAAY;MACZ2B,cAAc,EAAE,GAAG;MACnB,GAAGC;KACJ;GACF,EAAEA,OAAO,EAAEO,QAAQ,CAAC;AACvB,CAAC;AAAAvC,OAAA,CAAAE,gBAAA,GAAAA,gBAAA","ignoreList":[]}
1
+ {"version":3,"file":"RegistryContext.js","names":["Object","defineProperty","exports","value","RegistryProvider","RegistryContext","scheduleTask","Registry","_interopRequireWildcard","require","React","Scheduler","e","t","WeakMap","r","n","__esModule","o","i","f","__proto__","default","has","get","set","hasOwnProperty","call","getOwnPropertyDescriptor","unstable_scheduleCallback","unstable_LowPriority","createContext","make","defaultIdleTTL","options","ref","useRef","current","registry","initialValues","timeoutResolution","useEffect","timeout","undefined","clearTimeout","setTimeout","dispose","createElement","Provider","children"],"sources":["../../src/RegistryContext.ts"],"sourcesContent":[null],"mappings":";;AAAA;;;AAGA,YAAY;;AAAAA,MAAA,CAAAC,cAAA,CAAAC,OAAA;EAAAC,KAAA;AAAA;AAAAD,OAAA,CAAAE,gBAAA,GAAAF,OAAA,CAAAG,eAAA;AAAAH,OAAA,CAAAI,YAAA,GAAAA,YAAA;AACZ,IAAAC,QAAA,gBAAAC,uBAAA,cAAAC,OAAA;AAEA,IAAAC,KAAA,gBAAAF,uBAAA,cAAAC,OAAA;AACA,IAAAE,SAAA,gBAAAH,uBAAA,cAAAC,OAAA;AAAsC,SAAAD,wBAAAI,CAAA,EAAAC,CAAA;EAAA,yBAAAC,OAAA,MAAAC,CAAA,OAAAD,OAAA;IAAAE,CAAA,OAAAF,OAAA;EAAA,QAAAN,uBAAA,YAAAA,CAAAI,CAAA,EAAAC,CAAA;IAAA,KAAAA,CAAA,IAAAD,CAAA,IAAAA,CAAA,CAAAK,UAAA,SAAAL,CAAA;IAAA,IAAAM,CAAA;MAAAC,CAAA;MAAAC,CAAA;QAAAC,SAAA;QAAAC,OAAA,EAAAV;MAAA;IAAA,aAAAA,CAAA,uBAAAA,CAAA,yBAAAA,CAAA,SAAAQ,CAAA;IAAA,IAAAF,CAAA,GAAAL,CAAA,GAAAG,CAAA,GAAAD,CAAA;MAAA,IAAAG,CAAA,CAAAK,GAAA,CAAAX,CAAA,UAAAM,CAAA,CAAAM,GAAA,CAAAZ,CAAA;MAAAM,CAAA,CAAAO,GAAA,CAAAb,CAAA,EAAAQ,CAAA;IAAA;IAAA,WAAAP,CAAA,IAAAD,CAAA,gBAAAC,CAAA,OAAAa,cAAA,CAAAC,IAAA,CAAAf,CAAA,EAAAC,CAAA,OAAAM,CAAA,IAAAD,CAAA,GAAAlB,MAAA,CAAAC,cAAA,KAAAD,MAAA,CAAA4B,wBAAA,CAAAhB,CAAA,EAAAC,CAAA,OAAAM,CAAA,CAAAK,GAAA,IAAAL,CAAA,CAAAM,GAAA,IAAAP,CAAA,CAAAE,CAAA,EAAAP,CAAA,EAAAM,CAAA,IAAAC,CAAA,CAAAP,CAAA,IAAAD,CAAA,CAAAC,CAAA;IAAA,OAAAO,CAAA;EAAA,GAAAR,CAAA,EAAAC,CAAA;AAAA;AAEtC;;;;AAIM,SAAUP,YAAYA,CAACc,CAAa;EACxCT,SAAS,CAACkB,yBAAyB,CAAClB,SAAS,CAACmB,oBAAoB,EAAEV,CAAC,CAAC;AACxE;AAEA;;;;AAIO,MAAMf,eAAe,GAAAH,OAAA,CAAAG,eAAA,gBAAGK,KAAK,CAACqB,aAAa,cAAoBxB,QAAQ,CAACyB,IAAI,CAAC;EAClF1B,YAAY;EACZ2B,cAAc,EAAE;CACjB,CAAC,CAAC;AAEH;;;;AAIO,MAAM7B,gBAAgB,GAAI8B,OAMhC,IAAI;EACH,MAAMC,GAAG,GAAGzB,KAAK,CAAC0B,MAAM,CAGrB,IAAI,CAAC;EACR,IAAID,GAAG,CAACE,OAAO,KAAK,IAAI,EAAE;IACxBF,GAAG,CAACE,OAAO,GAAG;MACZC,QAAQ,EAAE/B,QAAQ,CAACyB,IAAI,CAAC;QACtB1B,YAAY,EAAE4B,OAAO,CAAC5B,YAAY,IAAIA,YAAY;QAClDiC,aAAa,EAAEL,OAAO,CAACK,aAAa;QACpCC,iBAAiB,EAAEN,OAAO,CAACM,iBAAiB;QAC5CP,cAAc,EAAEC,OAAO,CAACD;OACzB;KACF;EACH;EACAvB,KAAK,CAAC+B,SAAS,CAAC,MAAK;IACnB,IAAIN,GAAG,CAACE,OAAO,EAAEK,OAAO,KAAKC,SAAS,EAAE;MACtCC,YAAY,CAACT,GAAG,CAACE,OAAO,CAACK,OAAO,CAAC;IACnC;IACA,OAAO,MAAK;MACVG,UAAU,CAAC,MAAK;QACdV,GAAG,CAACE,OAAO,EAAEC,QAAQ,CAACQ,OAAO,EAAE;QAC/BX,GAAG,CAACE,OAAO,GAAG,IAAI;MACpB,CAAC,EAAE,GAAG,CAAC;IACT,CAAC;EACH,CAAC,EAAE,CAACF,GAAG,CAAC,CAAC;EACT,OAAOzB,KAAK,CAACqC,aAAa,CAAC1C,eAAe,CAAC2C,QAAQ,EAAE;IAAE7C,KAAK,EAAEgC,GAAG,CAACE,OAAO,CAACC;EAAQ,CAAE,EAAEJ,OAAO,EAAEe,QAAQ,CAAC;AAC1G,CAAC;AAAA/C,OAAA,CAAAE,gBAAA,GAAAA,gBAAA","ignoreList":[]}
@@ -1 +1 @@
1
- {"version":3,"file":"RegistryContext.d.ts","sourceRoot":"","sources":["../../src/RegistryContext.ts"],"names":[],"mappings":"AAIA,OAAO,KAAK,QAAQ,MAAM,wBAAwB,CAAA;AAClD,OAAO,KAAK,KAAK,EAAE,MAAM,kBAAkB,CAAA;AAC3C,OAAO,KAAK,KAAK,MAAM,OAAO,CAAA;AAG9B;;;GAGG;AACH,wBAAgB,YAAY,CAAC,CAAC,EAAE,MAAM,IAAI,GAAG,IAAI,CAEhD;AAED;;;GAGG;AACH,eAAO,MAAM,eAAe,kCAGzB,CAAA;AAEH;;;GAGG;AACH,eAAO,MAAM,gBAAgB,GAAI,SAAS;IACxC,QAAQ,CAAC,QAAQ,CAAC,EAAE,KAAK,CAAC,SAAS,GAAG,SAAS,CAAA;IAC/C,QAAQ,CAAC,aAAa,CAAC,EAAE,QAAQ,CAAC,SAAS,CAAC,EAAE,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,GAAG,CAAC,CAAC,GAAG,SAAS,CAAA;IACzE,QAAQ,CAAC,YAAY,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,MAAM,IAAI,KAAK,IAAI,CAAC,GAAG,SAAS,CAAA;IAC7D,QAAQ,CAAC,iBAAiB,CAAC,EAAE,MAAM,GAAG,SAAS,CAAA;IAC/C,QAAQ,CAAC,cAAc,CAAC,EAAE,MAAM,GAAG,SAAS,CAAA;CAC7C,2EAiBA,CAAA"}
1
+ {"version":3,"file":"RegistryContext.d.ts","sourceRoot":"","sources":["../../src/RegistryContext.ts"],"names":[],"mappings":"AAIA,OAAO,KAAK,QAAQ,MAAM,wBAAwB,CAAA;AAClD,OAAO,KAAK,KAAK,EAAE,MAAM,kBAAkB,CAAA;AAC3C,OAAO,KAAK,KAAK,MAAM,OAAO,CAAA;AAG9B;;;GAGG;AACH,wBAAgB,YAAY,CAAC,CAAC,EAAE,MAAM,IAAI,GAAG,IAAI,CAEhD;AAED;;;GAGG;AACH,eAAO,MAAM,eAAe,kCAGzB,CAAA;AAEH;;;GAGG;AACH,eAAO,MAAM,gBAAgB,GAAI,SAAS;IACxC,QAAQ,CAAC,QAAQ,CAAC,EAAE,KAAK,CAAC,SAAS,GAAG,SAAS,CAAA;IAC/C,QAAQ,CAAC,aAAa,CAAC,EAAE,QAAQ,CAAC,SAAS,CAAC,EAAE,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,GAAG,CAAC,CAAC,GAAG,SAAS,CAAA;IACzE,QAAQ,CAAC,YAAY,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,MAAM,IAAI,KAAK,IAAI,CAAC,GAAG,SAAS,CAAA;IAC7D,QAAQ,CAAC,iBAAiB,CAAC,EAAE,MAAM,GAAG,SAAS,CAAA;IAC/C,QAAQ,CAAC,cAAc,CAAC,EAAE,MAAM,GAAG,SAAS,CAAA;CAC7C,2EA2BA,CAAA"}
@@ -26,20 +26,30 @@ export const RegistryContext = /*#__PURE__*/React.createContext(/*#__PURE__*/Reg
26
26
  * @category context
27
27
  */
28
28
  export const RegistryProvider = options => {
29
- const registry = React.useMemo(() => Registry.make({
30
- scheduleTask,
31
- defaultIdleTTL: 400,
32
- ...options
33
- }), []);
34
- React.useEffect(() => () => {
35
- registry.dispose();
36
- }, [registry]);
29
+ const ref = React.useRef(null);
30
+ if (ref.current === null) {
31
+ ref.current = {
32
+ registry: Registry.make({
33
+ scheduleTask: options.scheduleTask ?? scheduleTask,
34
+ initialValues: options.initialValues,
35
+ timeoutResolution: options.timeoutResolution,
36
+ defaultIdleTTL: options.defaultIdleTTL
37
+ })
38
+ };
39
+ }
40
+ React.useEffect(() => {
41
+ if (ref.current?.timeout !== undefined) {
42
+ clearTimeout(ref.current.timeout);
43
+ }
44
+ return () => {
45
+ setTimeout(() => {
46
+ ref.current?.registry.dispose();
47
+ ref.current = null;
48
+ }, 500);
49
+ };
50
+ }, [ref]);
37
51
  return React.createElement(RegistryContext.Provider, {
38
- value: Registry.make({
39
- scheduleTask,
40
- defaultIdleTTL: 400,
41
- ...options
42
- })
52
+ value: ref.current.registry
43
53
  }, options?.children);
44
54
  };
45
55
  //# sourceMappingURL=RegistryContext.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"RegistryContext.js","names":["Registry","React","Scheduler","scheduleTask","f","unstable_scheduleCallback","unstable_LowPriority","RegistryContext","createContext","make","defaultIdleTTL","RegistryProvider","options","registry","useMemo","useEffect","dispose","createElement","Provider","value","children"],"sources":["../../src/RegistryContext.ts"],"sourcesContent":[null],"mappings":"AAAA;;;AAGA,YAAY;;AACZ,OAAO,KAAKA,QAAQ,MAAM,wBAAwB;AAElD,OAAO,KAAKC,KAAK,MAAM,OAAO;AAC9B,OAAO,KAAKC,SAAS,MAAM,WAAW;AAEtC;;;;AAIA,OAAM,SAAUC,YAAYA,CAACC,CAAa;EACxCF,SAAS,CAACG,yBAAyB,CAACH,SAAS,CAACI,oBAAoB,EAAEF,CAAC,CAAC;AACxE;AAEA;;;;AAIA,OAAO,MAAMG,eAAe,gBAAGN,KAAK,CAACO,aAAa,cAAoBR,QAAQ,CAACS,IAAI,CAAC;EAClFN,YAAY;EACZO,cAAc,EAAE;CACjB,CAAC,CAAC;AAEH;;;;AAIA,OAAO,MAAMC,gBAAgB,GAAIC,OAMhC,IAAI;EACH,MAAMC,QAAQ,GAAGZ,KAAK,CAACa,OAAO,CAAC,MAC7Bd,QAAQ,CAACS,IAAI,CAAC;IACZN,YAAY;IACZO,cAAc,EAAE,GAAG;IACnB,GAAGE;GACJ,CAAC,EAAE,EAAE,CAAC;EACTX,KAAK,CAACc,SAAS,CAAC,MAAM,MAAK;IACzBF,QAAQ,CAACG,OAAO,EAAE;EACpB,CAAC,EAAE,CAACH,QAAQ,CAAC,CAAC;EACd,OAAOZ,KAAK,CAACgB,aAAa,CAACV,eAAe,CAACW,QAAQ,EAAE;IACnDC,KAAK,EAAEnB,QAAQ,CAACS,IAAI,CAAC;MACnBN,YAAY;MACZO,cAAc,EAAE,GAAG;MACnB,GAAGE;KACJ;GACF,EAAEA,OAAO,EAAEQ,QAAQ,CAAC;AACvB,CAAC","ignoreList":[]}
1
+ {"version":3,"file":"RegistryContext.js","names":["Registry","React","Scheduler","scheduleTask","f","unstable_scheduleCallback","unstable_LowPriority","RegistryContext","createContext","make","defaultIdleTTL","RegistryProvider","options","ref","useRef","current","registry","initialValues","timeoutResolution","useEffect","timeout","undefined","clearTimeout","setTimeout","dispose","createElement","Provider","value","children"],"sources":["../../src/RegistryContext.ts"],"sourcesContent":[null],"mappings":"AAAA;;;AAGA,YAAY;;AACZ,OAAO,KAAKA,QAAQ,MAAM,wBAAwB;AAElD,OAAO,KAAKC,KAAK,MAAM,OAAO;AAC9B,OAAO,KAAKC,SAAS,MAAM,WAAW;AAEtC;;;;AAIA,OAAM,SAAUC,YAAYA,CAACC,CAAa;EACxCF,SAAS,CAACG,yBAAyB,CAACH,SAAS,CAACI,oBAAoB,EAAEF,CAAC,CAAC;AACxE;AAEA;;;;AAIA,OAAO,MAAMG,eAAe,gBAAGN,KAAK,CAACO,aAAa,cAAoBR,QAAQ,CAACS,IAAI,CAAC;EAClFN,YAAY;EACZO,cAAc,EAAE;CACjB,CAAC,CAAC;AAEH;;;;AAIA,OAAO,MAAMC,gBAAgB,GAAIC,OAMhC,IAAI;EACH,MAAMC,GAAG,GAAGZ,KAAK,CAACa,MAAM,CAGrB,IAAI,CAAC;EACR,IAAID,GAAG,CAACE,OAAO,KAAK,IAAI,EAAE;IACxBF,GAAG,CAACE,OAAO,GAAG;MACZC,QAAQ,EAAEhB,QAAQ,CAACS,IAAI,CAAC;QACtBN,YAAY,EAAES,OAAO,CAACT,YAAY,IAAIA,YAAY;QAClDc,aAAa,EAAEL,OAAO,CAACK,aAAa;QACpCC,iBAAiB,EAAEN,OAAO,CAACM,iBAAiB;QAC5CR,cAAc,EAAEE,OAAO,CAACF;OACzB;KACF;EACH;EACAT,KAAK,CAACkB,SAAS,CAAC,MAAK;IACnB,IAAIN,GAAG,CAACE,OAAO,EAAEK,OAAO,KAAKC,SAAS,EAAE;MACtCC,YAAY,CAACT,GAAG,CAACE,OAAO,CAACK,OAAO,CAAC;IACnC;IACA,OAAO,MAAK;MACVG,UAAU,CAAC,MAAK;QACdV,GAAG,CAACE,OAAO,EAAEC,QAAQ,CAACQ,OAAO,EAAE;QAC/BX,GAAG,CAACE,OAAO,GAAG,IAAI;MACpB,CAAC,EAAE,GAAG,CAAC;IACT,CAAC;EACH,CAAC,EAAE,CAACF,GAAG,CAAC,CAAC;EACT,OAAOZ,KAAK,CAACwB,aAAa,CAAClB,eAAe,CAACmB,QAAQ,EAAE;IAAEC,KAAK,EAAEd,GAAG,CAACE,OAAO,CAACC;EAAQ,CAAE,EAAEJ,OAAO,EAAEgB,QAAQ,CAAC;AAC1G,CAAC","ignoreList":[]}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@effect-rx/rx-react",
3
- "version": "0.40.2",
3
+ "version": "0.40.3",
4
4
  "description": "Reactive toolkit for Effect",
5
5
  "license": "MIT",
6
6
  "repository": {
@@ -35,20 +35,30 @@ export const RegistryProvider = (options: {
35
35
  readonly timeoutResolution?: number | undefined
36
36
  readonly defaultIdleTTL?: number | undefined
37
37
  }) => {
38
- const registry = React.useMemo(() =>
39
- Registry.make({
40
- scheduleTask,
41
- defaultIdleTTL: 400,
42
- ...options
43
- }), [])
44
- React.useEffect(() => () => {
45
- registry.dispose()
46
- }, [registry])
47
- return React.createElement(RegistryContext.Provider, {
48
- value: Registry.make({
49
- scheduleTask,
50
- defaultIdleTTL: 400,
51
- ...options
52
- })
53
- }, options?.children)
38
+ const ref = React.useRef<{
39
+ readonly registry: Registry.Registry
40
+ timeout?: number | undefined
41
+ }>(null)
42
+ if (ref.current === null) {
43
+ ref.current = {
44
+ registry: Registry.make({
45
+ scheduleTask: options.scheduleTask ?? scheduleTask,
46
+ initialValues: options.initialValues,
47
+ timeoutResolution: options.timeoutResolution,
48
+ defaultIdleTTL: options.defaultIdleTTL
49
+ })
50
+ }
51
+ }
52
+ React.useEffect(() => {
53
+ if (ref.current?.timeout !== undefined) {
54
+ clearTimeout(ref.current.timeout)
55
+ }
56
+ return () => {
57
+ setTimeout(() => {
58
+ ref.current?.registry.dispose()
59
+ ref.current = null
60
+ }, 500)
61
+ }
62
+ }, [ref])
63
+ return React.createElement(RegistryContext.Provider, { value: ref.current.registry }, options?.children)
54
64
  }